diff --git a/desktop-tauri/i18n/i18n-src/en/requests.json b/desktop-tauri/i18n/i18n-src/en/requests.json index adeab6e9..969f5454 100644 --- a/desktop-tauri/i18n/i18n-src/en/requests.json +++ b/desktop-tauri/i18n/i18n-src/en/requests.json @@ -76,6 +76,10 @@ "在路由页查看": "View on the Routing page", "在途 {n}": "", "处理中": "Processing", + "辅助识图": "Assisted image reading", + "切换视觉模型": "Vision model reroute", + "已完成": "Completed", + "失败": "Failed", "失败请求不记录用量": "Usage is not recorded for failed requests", "失败({status}):{error}": "Failed ({status}): {error}", "失败:{error}": "Failed: {error}", @@ -135,6 +139,33 @@ "本轮尝试失败,正在退避等待或切换到下一个账号": "This attempt failed; backing off or switching to the next account", "来源客户端": "", "来源客户端:{client}": "Source client: {client}", + "请求头识别为 {identified},已改写归属为 {client}": "Identified as {identified} from request headers; attribution rewritten to {client}", + "识别结果(请求头识别出的真实客户端)": "Identification result (the real client recognized from request headers)", + "最终归属(记账时的客户端)": "Final attribution (the client recorded for accounting)", + "未改写,保留识别结果": "Not rewritten; the identified client is kept", + "供应商归属规则": "Provider attribution rules", + "默认归属客户端": "Default attribution client", + "命中规则:{provider} → {client}": "Matched rule: {provider} → {client}", + "该供应商已有归属规则,保存将覆盖它": "This provider already has an attribution rule; saving overwrites it", + "这条请求没有记录供应商(旧数据或未走到转发),不能从这里改归属": "No provider recorded for this request (legacy data or it never reached forwarding); attribution cannot be changed here", + "请选择供应商": "Select a provider", + "请选择归属客户端": "Select a client", + "选择供应商": "Select provider", + "选择归属客户端": "Select client", + "搜索供应商": "Search providers", + "搜索客户端": "Search clients", + "供应商": "Provider", + "归属客户端": "Client", + "自定义 · {name}": "Custom · {name}", + "保存归属规则": "Save attribution rule", + "删除归属规则": "Delete attribution rule", + "添加自定义头匹配规则…": "Add a custom header rule…", + "编辑这条头匹配规则…": "Edit this header rule…", + "设置识别规则": "Set identification rules", + "取消": "Cancel", + "保存中…": "Saving…", + "命中依据:{header} · {pattern}": "Matched on: {header} · {pattern}", + "保留草稿并读取最新设置": "Keep draft and reload latest settings", "查看该请求的上游原始报文": "View the raw upstream payload for this request", "模型": "Model", "模型映射:{from} → {to}": "", diff --git a/desktop-tauri/i18n/i18n-src/en/settings.json b/desktop-tauri/i18n/i18n-src/en/settings.json index b376b8f1..cd97d3ae 100644 --- a/desktop-tauri/i18n/i18n-src/en/settings.json +++ b/desktop-tauri/i18n/i18n-src/en/settings.json @@ -1006,6 +1006,9 @@ "自动同步上次失败": "Last auto sync failed", "自动续写": "Auto continuation", "自定义 User-Agent": "Custom User-Agent", + "自定义 · {name}": "Custom · {name}", + "自定义头匹配规则": "Custom header rules", + "按列表自上而下匹配,位于来源声明之后、内置规则之前;可用于给难认的标识钉规则。": "Matched top-down in list order, after caller declarations and before builtin rules; use it to pin hard-to-recognize clients.", "自定义客户端分类": "Custom client categories", "自定义客户端数量已达上限": "Custom client limit reached", "自定义提供商 {id}": "Custom provider {id}", diff --git a/desktop-tauri/i18n/i18n-src/ja/requests.json b/desktop-tauri/i18n/i18n-src/ja/requests.json index 3280671b..48eca02d 100644 --- a/desktop-tauri/i18n/i18n-src/ja/requests.json +++ b/desktop-tauri/i18n/i18n-src/ja/requests.json @@ -76,6 +76,10 @@ "在路由页查看": "ルーティングページで表示", "在途 {n}": "", "处理中": "処理中", + "辅助识图": "補助画像認識", + "切换视觉模型": "視覚モデルへ切替", + "已完成": "完了", + "失败": "失敗", "失败请求不记录用量": "失敗したリクエストは使用量を記録しません", "失败({status}):{error}": "失敗({status}):{error}", "失败:{error}": "失敗:{error}", @@ -135,6 +139,33 @@ "本轮尝试失败,正在退避等待或切换到下一个账号": "今回の試行は失敗し、バックオフ待機中または次のアカウントへの切り替え中です", "来源客户端": "", "来源客户端:{client}": "接続元クライアント:{client}", + "请求头识别为 {identified},已改写归属为 {client}": "リクエストヘッダーでは {identified} と識別され、帰属先は {client} に書き換えられました", + "识别结果(请求头识别出的真实客户端)": "識別結果(ヘッダーから識別された実際のクライアント)", + "最终归属(记账时的客户端)": "最終的な帰属(記録時に使用するクライアント)", + "未改写,保留识别结果": "書き換えなし、識別結果を保持", + "供应商归属规则": "プロバイダー帰属ルール", + "默认归属客户端": "既定の帰属クライアント", + "命中规则:{provider} → {client}": "適用ルール:{provider} → {client}", + "该供应商已有归属规则,保存将覆盖它": "このプロバイダーには既に帰属ルールがあり、保存すると上書きされます", + "这条请求没有记录供应商(旧数据或未走到转发),不能从这里改归属": "このリクエストにはプロバイダーの記録がなく(旧データまたは転送未遂)、ここでは帰属を変更できません", + "请选择供应商": "プロバイダーを選択してください", + "请选择归属客户端": "クライアントを選択してください", + "选择供应商": "プロバイダーを選択", + "选择归属客户端": "クライアントを選択", + "搜索供应商": "プロバイダーを検索", + "搜索客户端": "クライアントを検索", + "供应商": "プロバイダー", + "归属客户端": "クライアント", + "自定义 · {name}": "カスタム · {name}", + "保存归属规则": "帰属ルールを保存", + "删除归属规则": "帰属ルールを削除", + "添加自定义头匹配规则…": "カスタムヘッダールールを追加…", + "编辑这条头匹配规则…": "このヘッダールールを編集…", + "设置识别规则": "識別ルールを設定", + "取消": "キャンセル", + "保存中…": "保存中…", + "命中依据:{header} · {pattern}": "識別根拠:{header} · {pattern}", + "保留草稿并读取最新设置": "下書きを保持して最新設定を読み込む", "查看该请求的上游原始报文": "このリクエストのアップストリーム生ペイロードを表示", "模型": "モデル", "模型映射:{from} → {to}": "", diff --git a/desktop-tauri/i18n/i18n-src/ja/settings.json b/desktop-tauri/i18n/i18n-src/ja/settings.json index a7b2288a..7addda86 100644 --- a/desktop-tauri/i18n/i18n-src/ja/settings.json +++ b/desktop-tauri/i18n/i18n-src/ja/settings.json @@ -1007,6 +1007,9 @@ "自动同步上次失败": "前回の自動同期に失敗しました", "自动续写": "自動継続生成", "自定义 User-Agent": "カスタム User-Agent", + "自定义 · {name}": "カスタム · {name}", + "自定义头匹配规则": "カスタムヘッダールール", + "按列表自上而下匹配,位于来源声明之后、内置规则之前;可用于给难认的标识钉规则。": "リストの上から順に照合し、発信元宣言の後・内蔵ルールの前に適用します。識別しにくいクライアントの固定に使えます。", "自定义客户端分类": "カスタムクライアント分類", "自定义客户端数量已达上限": "カスタムクライアント数が上限に達しました", "自定义提供商 {id}": "カスタムプロバイダー {id}", diff --git a/desktop-tauri/i18n/i18n-src/ko/requests.json b/desktop-tauri/i18n/i18n-src/ko/requests.json index bebef918..0be42744 100644 --- a/desktop-tauri/i18n/i18n-src/ko/requests.json +++ b/desktop-tauri/i18n/i18n-src/ko/requests.json @@ -76,6 +76,10 @@ "在路由页查看": "라우팅 페이지에서 보기", "在途 {n}": "", "处理中": "처리 중", + "辅助识图": "보조 이미지 인식", + "切换视觉模型": "비전 모델 전환", + "已完成": "완료", + "失败": "실패", "失败请求不记录用量": "실패한 요청은 사용량을 기록하지 않음", "失败({status}):{error}": "실패({status}): {error}", "失败:{error}": "실패: {error}", @@ -135,6 +139,33 @@ "本轮尝试失败,正在退避等待或切换到下一个账号": "이번 시도가 실패하여 백오프 대기 중이거나 다음 계정으로 전환 중입니다", "来源客户端": "", "来源客户端:{client}": "요청 클라이언트: {client}", + "请求头识别为 {identified},已改写归属为 {client}": "요청 헤더에서는 {identified}로 식별되었으며 귀속은 {client}로 변경되었습니다", + "识别结果(请求头识别出的真实客户端)": "식별 결과(헤더에서 식별된 실제 클라이언트)", + "最终归属(记账时的客户端)": "최종 귀속(기록 시 클라이언트)", + "未改写,保留识别结果": "변경 없음, 식별 결과 유지", + "供应商归属规则": "공급자 귀속 규칙", + "默认归属客户端": "기본 귀속 클라이언트", + "命中规则:{provider} → {client}": "적용 규칙: {provider} → {client}", + "该供应商已有归属规则,保存将覆盖它": "이 공급자에는 이미 귀속 규칙이 있으며 저장 시 덮어씁니다", + "这条请求没有记录供应商(旧数据或未走到转发),不能从这里改归属": "이 요청에는 공급자 기록이 없어(구 데이터 또는 전달 미도달) 여기서 귀속을 변경할 수 없습니다", + "请选择供应商": "공급자를 선택하세요", + "请选择归属客户端": "클라이언트를 선택하세요", + "选择供应商": "공급자 선택", + "选择归属客户端": "클라이언트 선택", + "搜索供应商": "공급자 검색", + "搜索客户端": "클라이언트 검색", + "供应商": "공급자", + "归属客户端": "클라이언트", + "自定义 · {name}": "사용자 지정 · {name}", + "保存归属规则": "귀속 규칙 저장", + "删除归属规则": "귀속 규칙 삭제", + "添加自定义头匹配规则…": "사용자 지정 헤더 규칙 추가…", + "编辑这条头匹配规则…": "이 헤더 규칙 편집…", + "设置识别规则": "식별 규칙 설정", + "取消": "취소", + "保存中…": "저장 중…", + "命中依据:{header} · {pattern}": "판정 근거: {header} · {pattern}", + "保留草稿并读取最新设置": "임시 보관 후 최신 설정 다시 읽기", "查看该请求的上游原始报文": "이 요청의 업스트림 원시 페이로드 보기", "模型": "모델", "模型映射:{from} → {to}": "", diff --git a/desktop-tauri/i18n/i18n-src/ko/settings.json b/desktop-tauri/i18n/i18n-src/ko/settings.json index 9734a351..c55833b5 100644 --- a/desktop-tauri/i18n/i18n-src/ko/settings.json +++ b/desktop-tauri/i18n/i18n-src/ko/settings.json @@ -1007,6 +1007,9 @@ "自动同步上次失败": "마지막 자동 동기화 실패", "自动续写": "자동 이어쓰기", "自定义 User-Agent": "사용자 정의 User-Agent", + "自定义 · {name}": "사용자 지정 · {name}", + "自定义头匹配规则": "사용자 지정 헤더 규칙", + "按列表自上而下匹配,位于来源声明之后、内置规则之前;可用于给难认的标识钉规则。": "목록 위에서 아래로 순서대로 매칭되며, 발신 선언 뒤·내장 규칙 앞에 적용됩니다. 식별하기 어려운 클라이언트를 고정하는 데 사용합니다.", "自定义客户端分类": "사용자 지정 클라이언트 분류", "自定义客户端数量已达上限": "사용자 지정 클라이언트 수가 한도에 도달함", "自定义提供商 {id}": "커스텀 제공자 {id}", diff --git a/desktop-tauri/i18n/i18n-src/pt-BR/requests.json b/desktop-tauri/i18n/i18n-src/pt-BR/requests.json index 0203505f..a19d0c23 100644 --- a/desktop-tauri/i18n/i18n-src/pt-BR/requests.json +++ b/desktop-tauri/i18n/i18n-src/pt-BR/requests.json @@ -76,6 +76,10 @@ "在路由页查看": "Ver na página de roteamento", "在途 {n}": "", "处理中": "Processando", + "辅助识图": "Leitura de imagem assistida", + "切换视觉模型": "Alternar para modelo de visão", + "已完成": "Concluído", + "失败": "Falhou", "失败请求不记录用量": "Requisições com falha não registram uso", "失败({status}):{error}": "Falhou ({status}): {error}", "失败:{error}": "Falhou: {error}", @@ -135,6 +139,33 @@ "本轮尝试失败,正在退避等待或切换到下一个账号": "Esta rodada falhou; aguardando o backoff ou trocando para a próxima conta", "来源客户端": "", "来源客户端:{client}": "Cliente de origem: {client}", + "请求头识别为 {identified},已改写归属为 {client}": "Identificado como {identified} pelos cabeçalhos da requisição; atribuição reescrita para {client}", + "识别结果(请求头识别出的真实客户端)": "Resultado da identificação (o cliente real reconhecido pelos cabeçalhos)", + "最终归属(记账时的客户端)": "Atribuição final (o cliente registrado na contabilização)", + "未改写,保留识别结果": "Não reescrita; o cliente identificado é mantido", + "供应商归属规则": "Regras de atribuição por provedor", + "默认归属客户端": "Cliente de atribuição padrão", + "命中规则:{provider} → {client}": "Regra aplicada: {provider} → {client}", + "该供应商已有归属规则,保存将覆盖它": "Este provedor já tem uma regra de atribuição; salvar vai substituí-la", + "这条请求没有记录供应商(旧数据或未走到转发),不能从这里改归属": "Esta requisição não tem provedor registrado (dados antigos ou nunca chegou ao encaminhamento); a atribuição não pode ser alterada aqui", + "请选择供应商": "Selecione um provedor", + "请选择归属客户端": "Selecione um cliente", + "选择供应商": "Selecionar provedor", + "选择归属客户端": "Selecionar cliente", + "搜索供应商": "Pesquisar provedores", + "搜索客户端": "Pesquisar clientes", + "供应商": "Provedor", + "归属客户端": "Cliente", + "自定义 · {name}": "Personalizado · {name}", + "保存归属规则": "Salvar regra de atribuição", + "删除归属规则": "Excluir regra de atribuição", + "添加自定义头匹配规则…": "Adicionar regra de cabeçalho personalizada…", + "编辑这条头匹配规则…": "Editar esta regra de cabeçalho…", + "设置识别规则": "Definir regras de identificação", + "取消": "Cancelar", + "保存中…": "Salvando…", + "命中依据:{header} · {pattern}": "Base da correspondência: {header} · {pattern}", + "保留草稿并读取最新设置": "Manter rascunho e recarregar as configurações", "查看该请求的上游原始报文": "Ver o payload bruto do upstream desta requisição", "模型": "Modelo", "模型映射:{from} → {to}": "", diff --git a/desktop-tauri/i18n/i18n-src/pt-BR/settings.json b/desktop-tauri/i18n/i18n-src/pt-BR/settings.json index e77e649f..546e9240 100644 --- a/desktop-tauri/i18n/i18n-src/pt-BR/settings.json +++ b/desktop-tauri/i18n/i18n-src/pt-BR/settings.json @@ -1007,6 +1007,9 @@ "自动同步上次失败": "A última sincronização automática falhou", "自动续写": "Continuação automática", "自定义 User-Agent": "User-Agent personalizado", + "自定义 · {name}": "Personalizado · {name}", + "自定义头匹配规则": "Regras de cabeçalho personalizadas", + "按列表自上而下匹配,位于来源声明之后、内置规则之前;可用于给难认的标识钉规则。": "Correspondência de cima para baixo na ordem da lista, após as declarações de origem e antes das regras internas; use para fixar clientes difíceis de reconhecer.", "自定义客户端分类": "Categorias de clientes personalizadas", "自定义客户端数量已达上限": "Limite de clientes personalizados atingido", "自定义提供商 {id}": "Provedor personalizado {id}", diff --git a/desktop-tauri/i18n/i18n-src/zh-Hant/requests.json b/desktop-tauri/i18n/i18n-src/zh-Hant/requests.json index c3179839..091bc0e2 100644 --- a/desktop-tauri/i18n/i18n-src/zh-Hant/requests.json +++ b/desktop-tauri/i18n/i18n-src/zh-Hant/requests.json @@ -76,6 +76,10 @@ "在路由页查看": "在路由頁檢視", "在途 {n}": "", "处理中": "", + "辅助识图": "", + "切换视觉模型": "", + "已完成": "", + "失败": "", "失败请求不记录用量": "", "失败({status}):{error}": "", "失败:{error}": "", @@ -135,6 +139,33 @@ "本轮尝试失败,正在退避等待或切换到下一个账号": "", "来源客户端": "", "来源客户端:{client}": "", + "请求头识别为 {identified},已改写归属为 {client}": "", + "识别结果(请求头识别出的真实客户端)": "", + "最终归属(记账时的客户端)": "", + "未改写,保留识别结果": "", + "供应商归属规则": "", + "默认归属客户端": "", + "命中规则:{provider} → {client}": "", + "该供应商已有归属规则,保存将覆盖它": "", + "这条请求没有记录供应商(旧数据或未走到转发),不能从这里改归属": "", + "请选择供应商": "", + "请选择归属客户端": "", + "选择供应商": "", + "选择归属客户端": "", + "搜索供应商": "", + "搜索客户端": "", + "供应商": "", + "归属客户端": "", + "自定义 · {name}": "", + "保存归属规则": "", + "删除归属规则": "", + "添加自定义头匹配规则…": "", + "编辑这条头匹配规则…": "", + "设置识别规则": "", + "取消": "", + "保存中…": "", + "命中依据:{header} · {pattern}": "", + "保留草稿并读取最新设置": "", "查看该请求的上游原始报文": "", "模型": "", "模型映射:{from} → {to}": "", diff --git a/desktop-tauri/i18n/i18n-src/zh-Hant/settings.json b/desktop-tauri/i18n/i18n-src/zh-Hant/settings.json index 6e5bd0f9..6b94ae6a 100644 --- a/desktop-tauri/i18n/i18n-src/zh-Hant/settings.json +++ b/desktop-tauri/i18n/i18n-src/zh-Hant/settings.json @@ -970,6 +970,9 @@ "自动同步上次失败": "", "自动续写": "", "自定义 User-Agent": "", + "自定义 · {name}": "", + "自定义头匹配规则": "", + "按列表自上而下匹配,位于来源声明之后、内置规则之前;可用于给难认的标识钉规则。": "", "自定义客户端分类": "", "自定义客户端数量已达上限": "", "自定义提供商 {id}": "", diff --git a/desktop-tauri/src-tauri/server/src/server/api/assistant.rs b/desktop-tauri/src-tauri/server/src/server/api/assistant.rs index 112d889c..b28bf7d7 100644 --- a/desktop-tauri/src-tauri/server/src/server/api/assistant.rs +++ b/desktop-tauri/src-tauri/server/src/server/api/assistant.rs @@ -320,7 +320,7 @@ pub async fn chat(State(state): State, headers: HeaderMap, body: By if let Some(token) = cancellation::register(&telemetry_id) { telemetry.set_cancel_token(token); } - let mut guard = DisconnectGuard::new(state.request_stats(), telemetry.clone(), started_at); + let mut guard = DisconnectGuard::new(state.request_stats(), telemetry.clone(), started_at, &access.source.client); let outcome = state .upstream() diff --git a/desktop-tauri/src-tauri/server/src/server/api/assistant_history.rs b/desktop-tauri/src-tauri/server/src/server/api/assistant_history.rs index a27d618f..d35eba01 100644 --- a/desktop-tauri/src-tauri/server/src/server/api/assistant_history.rs +++ b/desktop-tauri/src-tauri/server/src/server/api/assistant_history.rs @@ -69,7 +69,7 @@ async fn summarize(state: &ServerState, id: &str, access: ModelAccess) -> Result if let Some(token) = crate::server::core::upstream::cancellation::register(&request_id) { telemetry.set_cancel_token(token); } - let mut guard = DisconnectGuard::new(state.request_stats(), telemetry.clone(), started); + let mut guard = DisconnectGuard::new(state.request_stats(), telemetry.clone(), started, &access.source.client); let outcome = state.upstream().forward_assistant(ForwardRequest { body, stream: false, dedupe_key: String::new(), client_headers: HeaderMap::new(), telemetry: telemetry.clone(), allowed_providers: access.scope, pinned_account: None, ignore_model_gate: false, proxy_override: None, diff --git a/desktop-tauri/src-tauri/server/src/server/api/chat.rs b/desktop-tauri/src-tauri/server/src/server/api/chat.rs index 7cf138b7..ad79d137 100644 --- a/desktop-tauri/src-tauri/server/src/server/api/chat.rs +++ b/desktop-tauri/src-tauri/server/src/server/api/chat.rs @@ -191,7 +191,7 @@ pub async fn chat_completions( // 客户端在响应产生前断开时 axum 会直接取消 handler,收尾记账走不到 —— // 守卫的 Drop 补一条 408 终态(详见 `DisconnectGuard` 的说明)。 // 正常路径必须显式调 `complete()` / `handoff()`,见下面的三个出口。 - let mut guard = DisconnectGuard::new(state.request_stats(), telemetry.clone(), started_at); + let mut guard = DisconnectGuard::new(state.request_stats(), telemetry.clone(), started_at, &request_source.client); // 在途回写:选路一定就把「谁在承载」、发送体一定稿就把「上游真名」写进这条 // 进行中行(连同尝试链、首响、脱敏命中)—— 列表页 1 秒轮询,于是这些读数在 // 转发期间就能看到,不必等收尾。接线在这里、core 只持有闭包,理由见 @@ -200,6 +200,7 @@ pub async fn chat_completions( state.request_stats(), telemetry_id, started_at, + &request_source.client, )); // 自动续写的上下文(开关 `autoContinue` **默认关**)。关着时这里连一份 clone // 都不做 —— `plan()` 先问开关,再决定要不要复制请求体/请求头/白名单。 @@ -507,4 +508,4 @@ pub fn spawn_catalog_refresh(state: &ServerState) { crate::server::logging::verbose("[Maintenance]", &error); } }); -} \ No newline at end of file +} diff --git a/desktop-tauri/src-tauri/server/src/server/api/client_identification.rs b/desktop-tauri/src-tauri/server/src/server/api/client_identification.rs index 5e66acc9..b9da6036 100644 --- a/desktop-tauri/src-tauri/server/src/server/api/client_identification.rs +++ b/desktop-tauri/src-tauri/server/src/server/api/client_identification.rs @@ -4,19 +4,33 @@ use serde_json::{json, Value}; use crate::server::config::client_identification; use crate::server::core::client::{self, catalog, ClientEvidence, ClientSettings}; +use crate::server::core::custom_providers; +use crate::server::core::providers::{self, catalog as provider_catalog}; use crate::server::errors::{self, GatewayError}; use crate::server::http::{ok_json, parse_body}; use crate::server::{logging, ServerState}; -fn view() -> Result { +fn view(state: &ServerState) -> Result { let snapshot = client_identification::current(); let settings = snapshot.settings.as_ref().map_err(|error| GatewayError::new(error.clone()))?; + // 已添加供应商(与模型管理左栏同源):有可用账号的内置家 + 自定义家, + // 供应商归属规则的第一列从这里选 + let mut providers: Vec = provider_catalog::managed_manifests(state.store()).into_iter() + .map(|(id, _)| json!({ "id": id, "label": providers::label_of(&id), "custom": false })) + .collect(); + providers.extend(custom_providers::list().iter().filter_map(|owner| { + let id = owner.get("id").and_then(Value::as_str)?.to_string(); + let name = owner.get("name").and_then(Value::as_str).unwrap_or(&id); + Some(json!({ "id": id, "label": name, "custom": true })) + })); Ok(json!({ "config": settings, "revision": snapshot.revision, "builtins": catalog::CLIENTS, + "providers": providers, "headers": ["user-agent", "x-title", "x-client-type", "x-cerebras-3rd-party-integration", catalog::DECLARATION_HEADER], "declarationHeader": catalog::DECLARATION_HEADER, "maxRules": catalog::MAX_RULES, "maxClients": catalog::MAX_CLIENTS, + "maxProviderRules": catalog::MAX_PROVIDER_RULES, })) } @@ -27,7 +41,7 @@ fn response(result: Result) -> Response { } } -pub async fn get_settings() -> Response { response(view()) } +pub async fn get_settings(State(state): State) -> Response { response(view(&state)) } #[derive(Deserialize)] #[serde(rename_all = "camelCase", deny_unknown_fields)] @@ -36,17 +50,17 @@ struct SaveSettings { revision: String, } -pub async fn put_settings(body: Bytes) -> Response { +pub async fn put_settings(State(state): State, body: Bytes) -> Response { let payload = match parse_body(&body).and_then(|value| serde_json::from_value::(value) .map_err(|error| GatewayError::bad_request(format!("客户端识别设置不完整:{error}")))) { Ok(payload) => payload, Err(error) => return response(Err(error)), }; match tokio::task::spawn_blocking(move || { - let count = payload.config.rules.len(); + let count = payload.config.provider_rules.len(); client_identification::save(payload.config, &payload.revision)?; - logging::log("[Config]", &format!("客户端识别设置已保存:{count} 条规则,仅对新请求生效")); - view() + logging::log("[Config]", &format!("客户端识别设置已保存:{count} 条供应商归属规则,仅对新请求生效")); + view(&state) }).await { Ok(result) => response(result), Err(error) => errors::management_error(500, error.to_string()), diff --git a/desktop-tauri/src-tauri/server/src/server/api/disconnect_guard.rs b/desktop-tauri/src-tauri/server/src/server/api/disconnect_guard.rs index 3e8d4d06..622a47db 100644 --- a/desktop-tauri/src-tauri/server/src/server/api/disconnect_guard.rs +++ b/desktop-tauri/src-tauri/server/src/server/api/disconnect_guard.rs @@ -50,14 +50,17 @@ pub struct DisconnectGuard { id: String, telemetry: Arc, started_at: i64, + /// 请求头识别出的真实客户端 id:中断收尾改写在途归属时用,与在途回写同一判据 + identified_client: String, /// 是否仍处于「转发还没产生响应」的阶段(armed) armed: bool, } impl DisconnectGuard { /// 在 `record_started` 之后创建(此刻进行中行已经在库里)。 - pub fn new(stats: Arc, telemetry: Arc, started_at: i64) -> Self { - Self { stats, id: telemetry.id(), telemetry, started_at, armed: true } + pub fn new(stats: Arc, telemetry: Arc, started_at: i64, identified_client: &str) -> Self { + Self { stats, id: telemetry.id(), telemetry, started_at, + identified_client: identified_client.to_string(), armed: true } } /// 记账已完成 —— 解除兜底并注销取消令牌(请求不再在途)。 @@ -96,7 +99,7 @@ impl Drop for DisconnectGuard { }; let finished_at = crate::server::logging::now_ms(); snapshot.finish_trace(finished_at, Some(&error)); - let progress = pipeline::running_progress(&snapshot, self.started_at); + let progress = pipeline::running_progress(&snapshot, self.started_at, &self.identified_client); // 必须与终态同事务保存,不能等限频队列再写回。 crate::server::core::blocking::in_place(|| { self.stats.finalize_interrupted(&self.id, &error, &progress, finished_at); diff --git a/desktop-tauri/src-tauri/server/src/server/api/images.rs b/desktop-tauri/src-tauri/server/src/server/api/images.rs index 402cef81..9b0b5bdd 100644 --- a/desktop-tauri/src-tauri/server/src/server/api/images.rs +++ b/desktop-tauri/src-tauri/server/src/server/api/images.rs @@ -398,11 +398,12 @@ pub(super) async fn execute_with_telemetry( if let Some(token) = cancellation::register(&id) { telemetry.set_cancel_token(token); } - let mut guard = DisconnectGuard::new(state.request_stats(), telemetry.clone(), started_at); + let mut guard = DisconnectGuard::new(state.request_stats(), telemetry.clone(), started_at, &source.client); telemetry.set_live_sink(pipeline::live_row_sink( state.request_stats(), id, started_at, + &source.client, )); let raw_request = pipeline::capture_raw_body(&raw); let request = ForwardRequest { diff --git a/desktop-tauri/src-tauri/server/src/server/api/model_test.rs b/desktop-tauri/src-tauri/server/src/server/api/model_test.rs index 8c4fb441..630b5aad 100644 --- a/desktop-tauri/src-tauri/server/src/server/api/model_test.rs +++ b/desktop-tauri/src-tauri/server/src/server/api/model_test.rs @@ -618,7 +618,7 @@ pub async fn run_model_test(State(state): State, headers: HeaderMap } // 断线兜底:handler 被取消(前端关掉结果弹窗 = abort 掉 fetch)时补 408 终态。 // 正常路径必须显式 `complete()`,见下面两条出口 - let mut guard = DisconnectGuard::new(state.request_stats(), telemetry.clone(), started_at); + let mut guard = DisconnectGuard::new(state.request_stats(), telemetry.clone(), started_at, &access.source.client); // 请求日志的下游请求原文记录按所选协议组装出的请求体(预览对话可直接还原气泡); // 与真实流量同一道闸:仅调试模式开启时采集(见 `capture_raw_json`) let raw_request = pipeline::capture_raw_json(&protocol_request); @@ -794,4 +794,4 @@ async fn run_forward( } } } -} \ No newline at end of file +} diff --git a/desktop-tauri/src-tauri/server/src/server/api/pipeline.rs b/desktop-tauri/src-tauri/server/src/server/api/pipeline.rs index 1cfc83f1..48080de9 100644 --- a/desktop-tauri/src-tauri/server/src/server/api/pipeline.rs +++ b/desktop-tauri/src-tauri/server/src/server/api/pipeline.rs @@ -485,14 +485,25 @@ pub fn live_row_sink( stats: Arc, id: String, started_at: i64, + identified_client: &str, ) -> impl Fn(&TelemetrySnapshot) + Send + Sync { + let identified = identified_client.to_string(); let live = super::live_progress::sink(stats, id); - move |snapshot| live(running_progress(snapshot, started_at)) + move |snapshot| live(running_progress(snapshot, started_at, &identified)) } -pub(super) fn running_progress(snapshot: &TelemetrySnapshot, started_at: i64) -> RunningProgress { +pub(super) fn running_progress(snapshot: &TelemetrySnapshot, started_at: i64, identified_client: &str) -> RunningProgress { + let provider = snapshot.provider.clone().unwrap_or_default(); + // 供应商定下后在途行就按归属规则改写 client:与收尾记账同一判据,转发期间 + // 列表显示的不再是请求头识别出的真实客户端;供应商未定(空串)不覆盖。 + let client = if provider.is_empty() { String::new() } else { + crate::server::config::client_identification::current().settings.as_ref().ok() + .map(|settings| crate::server::core::client::attribution_client(identified_client, &provider, settings)) + .unwrap_or_default() + }; RunningProgress { - provider: snapshot.provider.clone().unwrap_or_default(), + provider, + client, account_id: snapshot.account_id.clone(), account_name: snapshot.account_name.clone(), upstream_model: snapshot.upstream_model.clone(), diff --git a/desktop-tauri/src-tauri/server/src/server/api/protocol.rs b/desktop-tauri/src-tauri/server/src/server/api/protocol.rs index f8432260..1000ee7c 100644 --- a/desktop-tauri/src-tauri/server/src/server/api/protocol.rs +++ b/desktop-tauri/src-tauri/server/src/server/api/protocol.rs @@ -232,6 +232,7 @@ pub async fn responses_endpoint( state.request_stats(), telemetry_id.clone(), started_at, + &source.client, )); // 手动终止的取消令牌 + 断线兜底守卫(与 /v1/chat/completions 同一处时点 // 与同一套语义:登记后详情页可终止这条请求;handler 被 axum 取消时 @@ -239,7 +240,7 @@ pub async fn responses_endpoint( if let Some(token) = cancellation::register(&telemetry_id) { telemetry.set_cancel_token(token); } - let mut guard = DisconnectGuard::new(state.request_stats(), telemetry.clone(), started_at); + let mut guard = DisconnectGuard::new(state.request_stats(), telemetry.clone(), started_at, &source.client); let outcome = forward_chat( &state, chat_body, @@ -438,6 +439,7 @@ pub async fn messages_endpoint( state.request_stats(), telemetry_id.clone(), started_at, + &source.client, )); // 手动终止的取消令牌 + 断线兜底守卫(与 /v1/chat/completions 同一处时点 // 与同一套语义:登记后详情页可终止这条请求;handler 被 axum 取消时 @@ -445,7 +447,7 @@ pub async fn messages_endpoint( if let Some(token) = cancellation::register(&telemetry_id) { telemetry.set_cancel_token(token); } - let mut guard = DisconnectGuard::new(state.request_stats(), telemetry.clone(), started_at); + let mut guard = DisconnectGuard::new(state.request_stats(), telemetry.clone(), started_at, &source.client); let outcome = forward_chat( &state, chat_body, @@ -573,4 +575,4 @@ fn anthropic_error_response_with_status(status: u16, message: &str) -> Response let mut response = json_response(body); *response.status_mut() = code; response -} \ No newline at end of file +} diff --git a/desktop-tauri/src-tauri/server/src/server/api/record_persist.rs b/desktop-tauri/src-tauri/server/src/server/api/record_persist.rs index 585e4b50..5fe2e756 100644 --- a/desktop-tauri/src-tauri/server/src/server/api/record_persist.rs +++ b/desktop-tauri/src-tauri/server/src/server/api/record_persist.rs @@ -78,6 +78,18 @@ fn persist(context: &RecordContext, fallback_error: Option) { entry.route = snapshot.route.unwrap_or(serde_json::Value::Null); entry.is_test = context.is_test; entry.source = context.source.clone(); + // 供应商归属改写:请求头识别的是真实客户端(依据保留在 evidence 里), + // 最终归属按路由供应商改写 —— 命中「供应商归属规则」用规则客户端,未命中 + // 回落「默认归属客户端」,两者都没配置则保持识别结果不动。 + { + let identification = crate::server::config::client_identification::current(); + if let Ok(settings) = identification.settings.as_ref() { + if !settings.provider_rules.is_empty() || !settings.default_client_id.is_empty() { + entry.source.client = crate::server::core::client::attribution_client( + &entry.source.client, entry.provider.as_deref().unwrap_or(""), settings); + } + } + } entry.error = error; entry.prompt_tokens = snapshot.prompt_tokens; entry.completion_tokens = snapshot.completion_tokens; diff --git a/desktop-tauri/src-tauri/server/src/server/core/client.rs b/desktop-tauri/src-tauri/server/src/server/core/client.rs index 3377fd0d..2b9e611c 100644 --- a/desktop-tauri/src-tauri/server/src/server/core/client.rs +++ b/desktop-tauri/src-tauri/server/src/server/core/client.rs @@ -4,7 +4,7 @@ pub mod catalog; mod evidence; mod matcher; -pub use catalog::{ClientRule, ClientSettings}; +pub use catalog::{attribution_client, ClientRule, ClientSettings, ProviderRule}; pub use evidence::ClientEvidence; pub use matcher::{identify, rule_matches}; @@ -37,9 +37,24 @@ pub fn display_name(value: &str, recorded: &str) -> String { } } } - if let Some(client) = catalog::CLIENTS.iter().find(|client| client.value == value) { + // 记账归属与归属规则存的是客户端 id(如 zcode),历史行可能是 value(如 + // ZCode),两种形态都要换算成显示名 + if let Some(client) = catalog::CLIENTS.iter().find(|client| client.id == value || client.value == value) { return client.name.into(); } if !recorded.is_empty() { return recorded.into(); } value.into() } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn display_name_accepts_client_id_and_value() { + // 归属改写后的行存 id,识别依据里记录的是显示名,界面取到的都是名称 + assert_eq!(display_name("zcode", "Codex"), "ZCode"); + assert_eq!(display_name("Codex", ""), "Codex"); + assert_eq!(display_name("custom:not-registered", "记录名"), "记录名"); + } +} diff --git a/desktop-tauri/src-tauri/server/src/server/core/client/catalog.rs b/desktop-tauri/src-tauri/server/src/server/core/client/catalog.rs index 420cfe0f..573e1a12 100644 --- a/desktop-tauri/src-tauri/server/src/server/core/client/catalog.rs +++ b/desktop-tauri/src-tauri/server/src/server/core/client/catalog.rs @@ -50,6 +50,8 @@ pub const MAX_UA_BYTES: usize = 1024; pub const MAX_HEADER_BYTES: usize = 256; pub const MAX_RULES: usize = 200; pub const MAX_CLIENTS: usize = 100; +/// 供应商归属规则的上限:一家一条,正常远用不满 +pub const MAX_PROVIDER_RULES: usize = 100; /// 账号级自定义 User-Agent 的归一与校验。 /// @@ -114,12 +116,31 @@ pub struct ClientRule { pub client_id: String, } -#[derive(Clone, Debug, Default, Serialize, Deserialize)] +/// 供应商归属规则:路由命中该供应商时,请求归属到指定客户端。 +/// +/// 请求头识别的是真实客户端(保留在 evidence 里作依据),这里的规则是 +/// 记账时的最终归属改写;与头匹配规则(`ClientRule`)相互独立。 +#[derive(Clone, Debug, Serialize, Deserialize)] #[serde(rename_all = "camelCase", deny_unknown_fields)] +pub struct ProviderRule { + pub provider: String, + pub client_id: String, +} + +/// 不加 deny_unknown_fields:配置经云同步在混合版本部署间流动,读到其他 +/// 版本新增的未知字段时按忽略处理,不让整个识别配置解析失败。 +#[derive(Clone, Debug, Default, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] pub struct ClientSettings { pub accept_declarations: bool, pub clients: Vec, pub rules: Vec, + /// 供应商归属规则(记账时按路由供应商改写归属客户端) + #[serde(default)] + pub provider_rules: Vec, + /// 默认归属客户端:供应商未命中规则时统一归属到它(空 = 不改写) + #[serde(default)] + pub default_client_id: String, } pub fn builtin(id: &str) -> Option<&'static BuiltinClient> { @@ -145,8 +166,9 @@ pub fn declared_client<'a>(settings: &'a ClientSettings, name: &str) -> Option<& pub fn validate(settings: &ClientSettings) -> Result<(), String> { use std::collections::HashSet; - if settings.rules.len() > MAX_RULES || settings.clients.len() > MAX_CLIENTS { - return Err(format!("客户端识别最多允许 {MAX_RULES} 条规则和 {MAX_CLIENTS} 个自定义客户端")); + if settings.rules.len() > MAX_RULES || settings.clients.len() > MAX_CLIENTS + || settings.provider_rules.len() > MAX_PROVIDER_RULES { + return Err(format!("客户端识别最多允许 {MAX_RULES} 条规则、{MAX_CLIENTS} 个自定义客户端和 {MAX_PROVIDER_RULES} 条供应商归属规则")); } let valid_text = |text: &str, max: usize| !text.is_empty() && text.trim() == text && text.chars().count() <= max && !text.chars().any(char::is_control); @@ -185,5 +207,75 @@ pub fn validate(settings: &ClientSettings) -> Result<(), String> { return Err("识别规则指向的客户端不存在".into()); } } + let mut providers = HashSet::new(); + for rule in &settings.provider_rules { + let provider = rule.provider.trim(); + if provider.is_empty() || provider != rule.provider || provider.chars().count() > 120 + || provider.chars().any(char::is_control) + || !providers.insert(provider.to_lowercase()) { + return Err("供应商归属规则的供应商无效或重复".into()); + } + if target(settings, &rule.client_id).is_none() { + return Err("供应商归属规则指向的客户端不存在".into()); + } + } + if !settings.default_client_id.is_empty() && target(settings, &settings.default_client_id).is_none() { + return Err("默认归属客户端不存在".into()); + } Ok(()) } + +/// 供应商归属改写:返回这条请求最终归属的客户端。 +/// +/// 路由供应商命中「供应商归属规则」时用规则客户端;未命中回落「默认归属 +/// 客户端」;两者都未配置时保留请求头识别出的真实客户端。 +pub fn attribution_client(identified: &str, provider: &str, settings: &ClientSettings) -> String { + if provider.is_empty() { + return identified.to_string(); + } + if let Some(rule) = settings.provider_rules.iter() + .find(|rule| rule.provider.eq_ignore_ascii_case(provider)) { + return rule.client_id.clone(); + } + if !settings.default_client_id.is_empty() { + return settings.default_client_id.clone(); + } + identified.to_string() +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn attribution_prefers_provider_rule_then_default() { + let mut settings = ClientSettings::default(); + settings.clients.push(CustomClient { id: "custom:abcdef123456".into(), name: "网关中转".into() }); + settings.provider_rules.push(ProviderRule { provider: "zcode-intl".into(), client_id: "zcode".into() }); + settings.default_client_id = "custom:abcdef123456".into(); + // 命中规则(大小写不敏感):用规则客户端 + assert_eq!(attribution_client("codex", "ZCODE-INTL", &settings), "zcode"); + // 未命中:回落默认归属客户端 + assert_eq!(attribution_client("codex", "raccoon", &settings), "custom:abcdef123456"); + // 尚未确定供应商:保留请求头识别出的真实客户端,不能提前套用默认归属 + assert_eq!(attribution_client("codex", "", &settings), "codex"); + // 两者都没配置:保留请求头识别出的真实客户端 + let empty = ClientSettings::default(); + assert_eq!(attribution_client("codex", "zcode", &empty), "codex"); + } + + #[test] + fn deserialize_tolerates_unknown_fields() { + // 模拟云同步场景:配置在混合版本部署间流动,字段集合不一致时按未知字段忽略 + let value = serde_json::json!({ + "acceptDeclarations": true, + "clients": [], + "rules": [], + "futureField": "ignored" + }); + let settings: ClientSettings = serde_json::from_value(value).expect("未知字段必须被忽略"); + assert!(settings.accept_declarations); + assert!(settings.provider_rules.is_empty()); + assert!(settings.default_client_id.is_empty()); + } +} diff --git a/desktop-tauri/src-tauri/server/src/server/request_stats/record.rs b/desktop-tauri/src-tauri/server/src/server/request_stats/record.rs index d08a0ca3..56534400 100644 --- a/desktop-tauri/src-tauri/server/src/server/request_stats/record.rs +++ b/desktop-tauri/src-tauri/server/src/server/request_stats/record.rs @@ -655,6 +655,10 @@ impl NewRequestEntry { pub struct RunningProgress { /// 到此刻为止承载这一轮的 provider id(空串 = 还没走到选路) pub provider: String, + /// 在途期间的**归属客户端**(空串 = 供应商未定或识别配置异常,写入侧不覆盖): + /// 供应商确定后按归属规则改写,在途行与终态行显示同一个客户端;收尾仍以 + /// 记账写入为准(判据见 `api::pipeline::running_progress`) + pub client: String, /// 承载账号 id / 展示名(空串 = 走默认登录态,或还没选路) pub account_id: String, pub account_name: String, diff --git a/desktop-tauri/src-tauri/server/src/server/request_stats/sql.rs b/desktop-tauri/src-tauri/server/src/server/request_stats/sql.rs index 6511888f..16993e8d 100644 --- a/desktop-tauri/src-tauri/server/src/server/request_stats/sql.rs +++ b/desktop-tauri/src-tauri/server/src/server/request_stats/sql.rs @@ -663,6 +663,8 @@ pub(super) fn finish_running_request( /// 一次尝试失败,不该让列表里的行提前变成失败; /// - `ts` / `model` / `client_model`:请求发起时就定稿了,在途没有新值; /// - `duration_ms` / 四个 token 列:只有收尾才有值(用量在途中不显示)。 +/// - `client`:供应商定下后按归属规则改写(空串不覆盖,判据见 +/// `api::pipeline::running_progress`),在途与终态显示同一个归属客户端。 /// /// 阶段两列**在这一份里的含义与别处不同**:它们是要写的(见 `phase` 字段的 /// 说明),只是与 status/error 一样属于「在途」而不是终态。 @@ -675,7 +677,8 @@ pub(super) fn update_running_progress( "UPDATE requests SET provider = ?2, account_id = ?3, account_name = ?4, \ upstream_model = ?5, upstream_reasoning = ?6, attempts = ?7, first_response_ms = ?8, \ attempt_details = ?9, sensitive_hits = ?10, phase = ?11, phase_started_at = ?12, \ - route = COALESCE(?13, route) WHERE id = ?1 AND status = 0", + route = COALESCE(?13, route), client = COALESCE(NULLIF(?14, ''), client) \ + WHERE id = ?1 AND status = 0", params![ id, progress.provider, @@ -690,6 +693,7 @@ pub(super) fn update_running_progress( progress.phase, progress.phase_started_at, progress.route.as_ref().map(Value::to_string), + progress.client, ], ) } diff --git a/desktop-tauri/ui-islands/src/islands/requests/request-cells.tsx b/desktop-tauri/ui-islands/src/islands/requests/request-cells.tsx index 8bb941f9..300c65d5 100644 --- a/desktop-tauri/ui-islands/src/islands/requests/request-cells.tsx +++ b/desktop-tauri/ui-islands/src/islands/requests/request-cells.tsx @@ -350,8 +350,19 @@ export function RequestCell({ entry, column, namesHidden }: { entry: RequestEntr case 'client': { const label = clientRequestLabel(entry) - return {label} + const evidence = entry.clientEvidence + // 在途且还没选路(provider 空)时归属未定:显示 —,避免先闪真实标识、 + // 选路后再翻转成归属客户端;供应商与归属在同一次回写里落库 + if (isRunning(entry) && !entry.provider?.trim()) { + return — + } + // 归属被改写时悬停要交代来龙去脉:识别出的是谁、改写成了谁,UA 只作依据 + const rewritten = Boolean(evidence && entry.client + && evidence.clientId.trim().toLowerCase() !== entry.client.trim().toLowerCase()) + const tip = rewritten && evidence + ? `${t('请求头识别为 {identified},已改写归属为 {client}', { identified: evidence.clientName || evidence.clientId, client: label })}\n${evidence.userAgent}` + : evidence?.userAgent || t('来源客户端:{client}', { client: label }) + return {label} } case 'apiKey': { diff --git a/desktop-tauri/ui-shared/client-identification-detail.tsx b/desktop-tauri/ui-shared/client-identification-detail.tsx index 09384818..69f8454e 100644 --- a/desktop-tauri/ui-shared/client-identification-detail.tsx +++ b/desktop-tauri/ui-shared/client-identification-detail.tsx @@ -2,7 +2,7 @@ import { useEffect, useRef, useState } from 'react' import { Alert, Badge, Button } from '@ui' import type { Translate } from './assistant-read-types' import { requestClientLabel, type RequestIdentity } from './model-api-key' -import { ClientRuleEditor } from './client-identification-editor' +import { RequestIdentificationDialog } from './client-identification-request-dialog' import { clientMethodLabel, type ClientIdentificationApi, type ClientIdentificationView } from './client-identification' export function ClientIdentificationDetail({ entry, api, t }: { entry: RequestIdentity; api: ClientIdentificationApi; t: Translate }) { @@ -16,6 +16,9 @@ export function ClientIdentificationDetail({ entry, api, t }: { entry: RequestId if (entry.isTest && !evidence) return {requestClientLabel(entry, t)} return
{requestClientLabel(entry, t)}{clientMethodLabel(evidence?.method, t)}
+ {entry.client && evidence && entry.client.trim().toLowerCase() !== evidence.clientId.trim().toLowerCase() + ?

{t('请求头识别为 {identified},已改写归属为 {client}', { identified: evidence.clientName || evidence.clientId, client: requestClientLabel(entry, t) })}

+ : null} {evidence ? <>
User-Agent: {evidence.userAgent || '—'}
{evidence.userAgentTruncated ?

{t('软件标识超过 1 KB,已截断保存;匹配仅使用保留部分。')}

: null} @@ -34,6 +37,6 @@ export function ClientIdentificationDetail({ entry, api, t }: { entry: RequestId :

{t('这条历史请求没有保存识别依据,不能据此自动创建规则。')}

} {error ? {error} : null} {saved ?

{t('规则已保存,对后续请求生效;当前历史记录未修改。')}

: null} - {view && evidence ? setView(null)} onSaved={() => { setView(null); setSaved(true) }} /> : null} + {view && evidence ? setView(null)} onSaved={() => { setView(null); setSaved(true) }} /> : null}
} diff --git a/desktop-tauri/ui-shared/client-identification-panel.tsx b/desktop-tauri/ui-shared/client-identification-panel.tsx index c859a3e6..49f62dc5 100644 --- a/desktop-tauri/ui-shared/client-identification-panel.tsx +++ b/desktop-tauri/ui-shared/client-identification-panel.tsx @@ -1,14 +1,15 @@ import { useCallback, useEffect, useRef, useState, type ReactNode } from 'react' import { - Alert, Button, Card, CardContent, CardHeader, Collapsible, CollapsibleContent, CollapsibleTrigger, - Dialog, DialogBody, DialogContent, DialogFooter, DialogHeader, DialogTitle, Input, Switch, Table, TableBody, - TableCell, TableHead, TableHeader, TableRow, cn, + Alert, Button, Card, CardContent, CardHeader, Collapsible, CollapsibleContent, CollapsibleTrigger, StatusDot, + Dialog, DialogBody, DialogContent, DialogFooter, DialogHeader, DialogTitle, Input, Switch, + Table, TableBody, TableCell, TableHead, TableHeader, TableRow, cn, } from '@ui' import type { Translate } from './assistant-read-types' import { ClientRuleEditor } from './client-identification-editor' +import { SearchableSelect } from './searchable-select' import { clientSettingsError, IDENTIFICATION_CHANGED, notifyIdentificationChanged, - type ClientIdentificationApi, type ClientIdentificationView, type ClientRule, type ClientSettings, + randomId, type ClientIdentificationApi, type ClientIdentificationView, type ClientRule, type ClientSettings, type ProviderRule, } from './client-identification' /** @@ -27,15 +28,17 @@ import { * · 分组 = 13px 半粗标题 + 一张**无描边**圆角卡(底色已分层,再描边就是双线); * 行高统一 px-4,行内左开关、中名称、右侧状态或操作 * · 行分隔线用 --ui-hairline,且左右各内缩 16px(不贴卡片边缘),像系统列表 - * · 序号、计数、客户端标识一律等宽 + 次级灰;整个面板只留「添加规则」一处主色 + * · 序号、计数、客户端标识一律等宽 + 次级灰;整个面板只留「新增」一处主色 * * ── 数据口径 ───────────────────────────────────────────────── - * 与旧版完全一致:`api.load / save / preview` 三个调用,保存带 revision 做并发校验, - * 规则顺序即匹配优先级(上移 / 下移直接落盘),改完派 `IDENTIFICATION_CHANGED` - * 让设置页别处跟着刷新。区别只在于「怎么看」,不在「怎么算」。 + * `api.load / save / preview` 三个调用,保存带 revision 做并发校验,改完派 + * `IDENTIFICATION_CHANGED` 让设置页别处跟着刷新。两个规则层各管一段: + * 「头匹配规则」按请求头识别真实客户端(顺序即匹配优先级,上移 / 下移直接 + * 落盘),「供应商归属规则」在记账时按路由供应商改写最终归属,未命中回落 + * 默认归属客户端。 */ -/** 识别规则的匹配方式 → 界面文案。四种取值各自写死字面量,方便 i18n 扫描器取键 */ +/** 头匹配规则的匹配方式 → 界面文案。四种取值各自写死字面量,方便 i18n 扫描器取键 */ function matchLabel(t: Translate, matchType: ClientRule['matchType']): string { switch (matchType) { case 'product': return t('产品名') @@ -48,6 +51,15 @@ function matchLabel(t: Translate, matchType: ClientRule['matchType']): string { /** 等宽小条(请求头名 / 匹配内容):只比卡片深一档的底,不加边框 */ const CHIP = 'inline-block break-all rounded-xs bg-surface-3 px-1.5 py-px font-mono text-[11.5px] text-subtle' +/** 折叠入口上的小箭头:跟随外层 `panel-fold` 折叠组的开合状态旋转 */ +function FoldChevron() { + return +} + type Confirmation = { title: string; message: string; config: ClientSettings; revision: string } export function ClientIdentificationPanel({ api, t, active = true }: { api: ClientIdentificationApi; t: Translate; active?: boolean }) { @@ -55,6 +67,11 @@ export function ClientIdentificationPanel({ api, t, active = true }: { api: Clie const [error, setError] = useState('') const [busy, setBusy] = useState(false) const [editor, setEditor] = useState<{ rule?: ClientRule } | null>(null) + /** 新增行的本地草稿:两列都选好才提交保存,中途取消即丢弃 */ + const [draftRule, setDraftRule] = useState(null) + /** 新增自定义客户端分类的小弹窗 */ + const [creating, setCreating] = useState(false) + const [newName, setNewName] = useState('') const [rename, setRename] = useState<{ id: string; name: string } | null>(null) const [confirmation, setConfirmation] = useState(null) /** 内置客户端目录默认展开:它就是这条面板的参考信息,收起后右栏会重新空掉 */ @@ -78,19 +95,39 @@ export function ClientIdentificationPanel({ api, t, active = true }: { api: Clie window.addEventListener(IDENTIFICATION_CHANGED, changed) return () => { window.removeEventListener(IDENTIFICATION_CHANGED, changed); ++seq.current } }, [load, active]) - const save = async (config: ClientSettings, revision = view?.revision) => { - if (!view || busy || !revision) return + const save = async (config: ClientSettings, revision = view?.revision): Promise => { + if (!view || busy || !revision) return false const invalid = clientSettingsError(config, view, t) - if (invalid) { setError(invalid); return } + if (invalid) { setError(invalid); return false } ++seq.current; setBusy(true); setError('') try { const next = await api.save({ config, revision }) notifyIdentificationChanged() if (alive.current) { setView(next); setRename(null); setConfirmation(null) } + return true } catch (failure) { if (alive.current) setError(failure instanceof Error ? failure.message : String(failure)) + return false } finally { if (alive.current) setBusy(false) } } + // 供应商归属规则:提交行(配置里)即时保存;新增行先做本地草稿,两列都选好才落盘 + const updateProviderRule = (index: number, patch: Partial) => { + if (!view) return + void save({ ...view.config, providerRules: view.config.providerRules.map((rule, i) => i === index ? { ...rule, ...patch } : rule) }) + } + const removeProviderRule = (index: number) => { + if (!view) return + void save({ ...view.config, providerRules: view.config.providerRules.filter((_, i) => i !== index) }) + } + const commitDraftRule = async (rule: ProviderRule) => { + if (!view) return + const ok = await save({ ...view.config, providerRules: [...view.config.providerRules, { ...rule, provider: rule.provider.trim() }] }) + if (ok) setDraftRule(null) + } + const addCustomClient = async (): Promise => { + if (!view) return false + return await save({ ...view.config, clients: [...view.config.clients, { id: `custom:${randomId()}`, name: newName.trim() }] }) + } const move = (index: number, direction: number) => { if (!view) return const rules = [...view.config.rules] @@ -99,18 +136,35 @@ export function ClientIdentificationPanel({ api, t, active = true }: { api: Clie ;[rules[index], rules[target]] = [rules[target], rules[index]] void save({ ...view.config, rules }) } - const names = view ? new Map([...view.builtins, ...view.config.clients].map(client => [client.id, client.name])) : new Map() + // 两列下拉的候选:内置家在前、自定义家带「自定义 · 」前缀居后(与模型管理左栏同一套词汇) + const providerOptions = (view?.providers || []).map(provider => ({ + value: provider.id, label: provider.custom ? t('自定义 · {name}', { name: provider.label }) : provider.label, + })) + const clientOptions = view ? [ + ...view.builtins.map(client => ({ value: client.id, label: client.name })), + ...view.config.clients.map(client => ({ value: client.id, label: client.name })), + ] : [] const rules = view?.config.rules || [] - return } className='panel'> + const names = view ? new Map([...view.builtins, ...view.config.clients].map(client => [client.id, client.name])) : new Map() + return } className='panel panel-fold group/fold'> -

{t('客户端识别')}

+ + +

{t('客户端识别')}

+
+ {view ? + + {view.config.providerRules.length + ? t('{n} 条', { n: view.config.providerRules.length }) + : view.config.defaultClientId ? t('默认归属客户端') : t('未设置')} + : null}
- - +
- -

{t('按每条请求的软件标识识别客户端,不依赖 API Key。规则修改只影响新请求,内置规则随软件更新,自定义规则参与备份与云同步。')}

+ + +

{t('按每条请求的软件标识识别真实客户端,不依赖 API Key;归属规则再按路由供应商把请求改写到所选客户端,未命中时用默认归属客户端。修改只影响新请求,内置规则随软件更新,自定义数据参与备份与云同步。')}

{error ? {error} : null} {!view ?

{error ? t('客户端识别设置读取失败') : t('加载中…')}

: <>
@@ -136,12 +190,58 @@ export function ClientIdentificationPanel({ api, t, active = true }: { api: Clie
- - - + + + + + +

{t('按列表顺序决定最终归属:命中供应商规则用规则客户端,未命中用默认归属客户端;两者都未设置时,回落到按请求头识别的真实客户端。')}

+
+ +
+
+ {t('默认归属客户端')} + {t('未命中供应商规则的请求统一归属到它')} +
+ { if (view) void save({ ...view.config, defaultClientId: value }) }} /> + {view.config.defaultClientId ? : null} +
+
+ {view.config.providerRules.map((rule, index) =>
+ updateProviderRule(index, { provider: value })} /> + updateProviderRule(index, { clientId: value })} /> + +
)} + {draftRule ?
+ { + const next = { ...draftRule, provider: value } + if (next.clientId) { void commitDraftRule(next) } else { setDraftRule(next) } + }} /> + { + const next = { ...draftRule, clientId: value } + if (next.provider.trim()) { void commitDraftRule(next) } else { setDraftRule(next) } + }} /> + +
: null} +
+

{t('选中的供应商,其请求在记账时归属到所选客户端;请求头识别的真实客户端保留为依据。')}

+ +
-
0 ? t('{n} 条', { n: rules.length }) : undefined}> +
0 ? t('{n} 条', { n: rules.length }) : undefined}> {!rules.length ?

{t('暂无自定义规则,正在使用内置识别。也可以从请求详情直接添加规则。')}

@@ -163,20 +263,30 @@ export function ClientIdentificationPanel({ api, t, active = true }: { api: Clie
)} +
+

{t('按列表自上而下匹配,位于来源声明之后、内置规则之前;可用于给难认的标识钉规则。')}

+ +
- {view.config.clients.length ?
-
-

{t('重命名只更新分类显示名,不拆分历史用量,也不重新归类历史请求。')}

+
+
+

{t('重命名只更新分类显示名,不拆分历史用量,也不重新归类历史请求。')}

+
- {view.config.clients.map(client =>
- {client.name} -
- - -
-
)} -
: null} + {!view.config.clients.length ?

{t('暂无自定义客户端分类,用「新增客户端」创建后即可在归属规则里选择。')}

+ : view.config.clients.map(client =>
+ {client.name} +
+ + +
+
)} +

{t('中转丢失原始标识时,无法自动推断背后的软件。')}

@@ -219,7 +329,8 @@ export function ClientIdentificationPanel({ api, t, active = true }: { api: Clie
} - + + {editor && view ? setEditor(null)} onSaved={next => { setView(next); setEditor(null) }} /> : null} { if (!open && !busy) setRename(null) }}> {t('重命名客户端分类')} @@ -231,7 +342,15 @@ export function ClientIdentificationPanel({ api, t, active = true }: { api: Clie

{confirmation?.message}

{error ? {error} : null}
-
+ { if (!open && !busy) setCreating(false) }}> + {t('新增客户端分类')} + setNewName(event.currentTarget.value)} + onKeyDown={event => { if (event.key === 'Enter' && newName.trim()) void addCustomClient().then(ok => { if (ok) setCreating(false) }) }} + aria-label={t('客户端名称')} placeholder={t('客户端名称')} />{error ? {error} : null} + + + + } /** diff --git a/desktop-tauri/ui-shared/client-identification-request-dialog.tsx b/desktop-tauri/ui-shared/client-identification-request-dialog.tsx new file mode 100644 index 00000000..bc8f7570 --- /dev/null +++ b/desktop-tauri/ui-shared/client-identification-request-dialog.tsx @@ -0,0 +1,131 @@ +import { useEffect, useRef, useState } from 'react' +import { Alert, Button, Dialog, DialogBody, DialogContent, DialogFooter, DialogHeader, DialogTitle, Label } from '@ui' +import type { Translate } from './assistant-read-types' +import { requestClientLabel, type RequestIdentity } from './model-api-key' +import { ClientRuleEditor } from './client-identification-editor' +import { SearchableSelect } from './searchable-select' +import { + clientMethodLabel, clientSettingsError, notifyIdentificationChanged, + type ClientEvidence, type ClientIdentificationApi, type ClientIdentificationView, type ClientSettings, +} from './client-identification' + +/** + * 请求详情入口的「设置识别规则」弹窗。 + * + * 识别管线是两层:请求头识别出真实客户端(来源声明 / 头匹配规则 / 内置规则), + * 记账时再按供应商归属规则改写最终归属。弹窗按这条链路展示两段结果,主操作 + * 是给这条请求的供应商快捷维护归属规则;自定义头匹配规则降级为次入口, + * 用于给难认的标识钉规则,不再像旧版那样直接铺一张头匹配表单。 + */ +export function RequestIdentificationDialog({ api, view: initialView, entry, evidence, onClose, onSaved, t }: { + api: ClientIdentificationApi + view: ClientIdentificationView + entry: RequestIdentity + evidence: ClientEvidence + onClose: () => void + onSaved: (view: ClientIdentificationView) => void + t: Translate +}) { + const [view, setView] = useState(initialView) + const [busy, setBusy] = useState(false) + const [error, setError] = useState('') + /** 次入口:展开旧的单条头匹配规则编辑器(new = 按证据新建,existing = 编辑命中的那条) */ + const [headerEditor, setHeaderEditor] = useState<'new' | 'existing' | null>(null) + const provider = entry.provider?.trim() || '' + const providerRule = provider + ? view.config.providerRules.find(rule => rule.provider.trim().toLowerCase() === provider.toLowerCase()) + : undefined + const [draftProvider, setDraftProvider] = useState(providerRule?.provider || provider) + const [draftClient, setDraftClient] = useState(providerRule?.clientId || evidence.clientId || '') + const alive = useRef(true) + useEffect(() => { alive.current = true; return () => { alive.current = false } }, []) + const providerOptions = view.providers.map(item => ({ + value: item.id, label: item.custom ? t('自定义 · {name}', { name: item.label }) : item.label, + })) + const clientOptions = [ + ...view.builtins.map(client => ({ value: client.id, label: client.name })), + ...view.config.clients.map(client => ({ value: client.id, label: client.name })), + ] + const clientName = (id: string) => clientOptions.find(option => option.value === id)?.label || id + const providerName = (id: string) => providerOptions.find(option => option.value === id)?.label || id + // 归属来源与后端 attribution_client 同一优先级:规则 → 默认 → 透传识别结果 + const sourceLabel = providerRule ? t('供应商归属规则') + : view.config.defaultClientId ? t('默认归属客户端') : t('未改写,保留识别结果') + const existingHeaderRule = evidence.ruleId ? view.config.rules.find(rule => rule.id === evidence.ruleId) : undefined + const apply = async (next: ClientSettings) => { + const invalid = clientSettingsError(next, view, t) + if (invalid) { setError(invalid); return } + setBusy(true); setError('') + try { + const saved = await api.save({ config: next, revision: view.revision }) + notifyIdentificationChanged() + if (alive.current) { setBusy(false); onSaved(saved) } + } catch (failure) { + if (alive.current) { setError(failure instanceof Error ? failure.message : String(failure)); setBusy(false) } + } + } + const saveProviderRule = () => { + const providerId = draftProvider.trim() + if (!providerId) { setError(t('请选择供应商')); return } + if (!draftClient) { setError(t('请选择归属客户端')); return } + void apply({ + ...view.config, + providerRules: providerRule + ? view.config.providerRules.map(rule => rule === providerRule ? { provider: providerId, clientId: draftClient } : rule) + : [...view.config.providerRules, { provider: providerId, clientId: draftClient }], + }) + } + const removeProviderRule = () => { + if (!providerRule) return + void apply({ + ...view.config, + providerRules: view.config.providerRules.filter(rule => rule !== providerRule), + }) + } + const reload = async () => { + setBusy(true) + try { const next = await api.load(); if (alive.current) { setView(next); setError('') } } + catch (failure) { if (alive.current) setError(failure instanceof Error ? failure.message : String(failure)) } + finally { if (alive.current) setBusy(false) } + } + return { if (!open && !busy && !headerEditor) onClose() }}> + + {t('设置识别规则')} + +
+

{t('识别结果(请求头识别出的真实客户端)')}

+

{evidence.clientName || evidence.clientId} · {clientMethodLabel(evidence.method, t)}

+ {evidence.matchedHeader ?

{t('命中依据:{header} · {pattern}', { header: evidence.matchedHeader, pattern: evidence.matchedPattern })}

: null} +
+
+

{t('最终归属(记账时的客户端)')}

+

{requestClientLabel(entry, t)} · {sourceLabel}

+ {providerRule ?

{t('命中规则:{provider} → {client}', { provider: providerName(providerRule.provider), client: clientName(providerRule.clientId) })}

: null} +
+ {provider ? <> + +
+ { setDraftProvider(value); setError('') }} /> + { setDraftClient(value); setError('') }} /> +
+ {providerRule ?

{t('该供应商已有归属规则,保存将覆盖它')}

: null} + : {t('这条请求没有记录供应商(旧数据或未走到转发),不能从这里改归属')}} + {error ?

{error}

: null} +
+ + + {providerRule ? : null} + + + +
+ {headerEditor ? setHeaderEditor(null)} onSaved={next => { setView(next); setHeaderEditor(null) }} /> : null} +
+} diff --git a/desktop-tauri/ui-shared/client-identification.ts b/desktop-tauri/ui-shared/client-identification.ts index d1cdcb65..5b2f1e01 100644 --- a/desktop-tauri/ui-shared/client-identification.ts +++ b/desktop-tauri/ui-shared/client-identification.ts @@ -24,16 +24,31 @@ export type ClientRule = { clientId: string } export type CustomClient = { id: string; name: string } -export type ClientSettings = { acceptDeclarations: boolean; clients: CustomClient[]; rules: ClientRule[] } +/** + * 供应商归属规则:路由命中该供应商时,请求归属到指定客户端。 + * 请求头识别的真实客户端保留在 evidence 里,这里是记账时的最终归属改写。 + */ +export type ProviderRule = { provider: string; clientId: string } +export type ClientSettings = { + acceptDeclarations: boolean + clients: CustomClient[] + /** 头匹配规则:按列表顺序匹配,用于给难以识别的软件标识固定归属 */ + rules: ClientRule[] + providerRules: ProviderRule[] + defaultClientId: string +} export type ClientIdentificationView = { config: ClientSettings revision: string /** `ua` 是该客户端一份代表性的 User-Agent(账号级自定义 UA 的预置项,见后端 catalog) */ builtins: { id: string; name: string; value: string; products: string[]; ua?: string }[] + /** 已添加供应商(模型管理同源):内置家在前、自定义家在后,归属规则第一列用 */ + providers: { id: string; label: string; custom: boolean }[] headers: string[] declarationHeader: string maxRules: number maxClients: number + maxProviderRules: number } export type IdentificationSample = { id?: string @@ -98,6 +113,7 @@ export function randomId(): string { export function clientSettingsError(config: ClientSettings, view: ClientIdentificationView, t: Translate): string { if (config.rules.length > view.maxRules) return t('识别规则数量已达上限') if (config.clients.length > view.maxClients) return t('自定义客户端数量已达上限') + if (config.providerRules.length > view.maxProviderRules) return t('供应商归属规则数量已达上限') const names = new Set(view.builtins.flatMap(client => [client.name, client.id, client.value, ...client.products]).map(name => name.toLowerCase())) for (const client of config.clients) { if (!client.name.trim() || client.name.trim() !== client.name || client.name.length > 80) return t('客户端名称不能为空,最长 80 个字符') @@ -105,6 +121,15 @@ export function clientSettingsError(config: ClientSettings, view: ClientIdentifi names.add(client.name.toLowerCase()) } const clients = new Set([...view.builtins, ...config.clients].map(client => client.id)) + const providerIds = new Set() + for (const rule of config.providerRules) { + const provider = rule.provider.trim() + if (!provider) return t('请选择供应商') + if (providerIds.has(provider.toLowerCase())) return t('同一供应商只能有一条归属规则') + providerIds.add(provider.toLowerCase()) + if (!clients.has(rule.clientId)) return t('归属规则指向的客户端不存在') + } + if (config.defaultClientId && !clients.has(config.defaultClientId)) return t('默认归属客户端不存在') for (const rule of config.rules) { if (!rule.pattern.trim() || rule.pattern.trim() !== rule.pattern || rule.pattern.length > 256) return t('匹配内容不能为空,最长 256 个字符') if (!clients.has(rule.clientId)) return t('请选择归属客户端') diff --git a/desktop-tauri/ui-shared/model-api-key.ts b/desktop-tauri/ui-shared/model-api-key.ts index d5d260ff..2b4e2355 100644 --- a/desktop-tauri/ui-shared/model-api-key.ts +++ b/desktop-tauri/ui-shared/model-api-key.ts @@ -46,6 +46,9 @@ export type RequestIdentity = { client?: string clientLabel?: string clientEvidence?: ClientEvidence + /** 路由命中的供应商 id / 显示名(旧数据或未走到转发时为空):归属规则入口用 */ + provider?: string + providerLabel?: string isTest?: boolean apiKeyId?: string apiKeyName?: string diff --git a/desktop-tauri/ui/i18n/combined/en.js b/desktop-tauri/ui/i18n/combined/en.js index e603dfee..364d249f 100644 --- a/desktop-tauri/ui/i18n/combined/en.js +++ b/desktop-tauri/ui/i18n/combined/en.js @@ -1,2 +1,2 @@ /* Agent2API 词典构建产物:en/combined —— 由 desktop-tauri/i18n/build.mjs 生成,请勿手改;源头是 i18n-src/*.json */ -window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { "无可用账号:{reason}": "No accounts available: {reason}", "AI 助手": "AI Assistant", "API Key 用量详情": "API key usage details", "API Key 统计": "API key statistics", "API Key(可选)": "API Key (optional)", "API 凭证": "API credentials", "API 方法提交给插件的账号规范化入口;不会用该密钥发起 OAuth 登录。": "API methods submit to the plugin's account normalization entry point; the key is not used to start OAuth sign-in.", "AWS Bedrock SSO": "AWS Bedrock SSO", "Agent2API · 多提供商本地网关": "Agent2API · Multi-provider local gateway", "Agent2API 社区": "Agent2API community", "Codar(科搭)": "Codar", "Cursor": "Cursor", "Devin": "Devin", "Factory": "Factory", "GitHub Copilot": "GitHub Copilot", "Grok": "Grok", "JSON 格式不正确": "Invalid JSON format", "JoyCode(京东)": "JoyCode (JD)", "Kimi Work": "Kimi Work", "Linux (amd64)": "Linux (amd64)", "Linux (arm64)": "Linux (arm64)", "Magpie 官方": "Magpie official", "Magpie 官方与社区插件,共用一个按需下载的运行时": "Official and community Magpie plugins share one runtime downloaded on demand", "Magpie 官方名单": "Magpie official catalog", "Magpie 官方和社区插件均通过兼容方式接入 Agent2API,不保证 100% 可用。": "Official and community Magpie plugins are integrated with Agent2API for compatibility only; 100% availability is not guaranteed.", "Magpie 推荐": "Magpie recommended", "Magpie 插件": "Magpie plugins", "Magpie 插件安装须知": "Magpie plugin installation notice", "Magpie 社区": "Magpie community", "Magpie 社区分发源": "Magpie community distribution", "Magpie 脚本插件": "Magpie script plugins", "MiniMax Code 国内/国际": "MiniMax Code China / Global", "MiniMax Code 的设备码登录、对话、模型目录、余额与每日签到;国内版与国际版可分别启停。": "Device-code sign-in, chat, model catalog, balance and daily check-in for MiniMax Code. Enable the China and Global providers separately.", "Nous Portal": "Nous Portal", "OAuth 登录": "OAuth sign-in", "Open Design": "Open Design", "Providers Hub": "Providers Hub", "QQ 群号": "QQ group number", "Star 数暂未读取": "Star count is not available yet", "Star 更新于 {time}": "Stars updated {time}", "Token 用量": "Token usage", "WPS 灵犀": "WPS Lingxi", "Windows (ARM64)": "Windows (ARM64)", "Windows (x64)": "Windows (x64)", "Zed": "Zed", "macOS (Apple Silicon)": "macOS (Apple Silicon)", "macOS (Intel)": "macOS (Intel)", "npm 包名": "npm package name", "npm 包名、GitHub 地址或 magpie:包名": "npm package, GitHub URL or magpie:package", "npm 包名或 GitHub 地址": "npm package name or GitHub URL", "npm 未发布的包会尝试 Magpie 社区分发源;不会绕过完整性校验或执行安装脚本。": "Packages missing from npm are looked up in Magpie's community distribution. Integrity checks are never skipped, and install scripts are not run.", "{count} 个 Star": "{count} stars", "{count} 个插件": "{count} plugins", "{count} 家": "{count} providers", "{count} 家提供商": "{count} providers", "{count} 家提供商 · 安装于 {time}": "{count} providers · Installed {time}", "{key} 需要 true / false / null": "{key} must be true / false / null", "{key} 需要数字": "{key} must be a number", "{label}(API)": "{label} (API)", "{label}(OAuth)": "{label} (OAuth)", "{n} 个启用": "{n} enabled", "{n} 个已限流": "{n} rate-limited", "{n} 个请求正在转发中,点开「请求日志」查看": "{n} requests in flight — open \"Request logs\" to view", "{n} 个账号可用": "{n} accounts available", "{n} 个账号启用": "{n} accounts enabled", "{n} 条失败请求未读,点开「请求日志」查看": "{n} unread failed requests — open \"Request logs\" to view", "{n} 条错误日志未读,点开「日志」查看": "{n} unread error logs — open \"Logs\" to view", "{n} 项 · {shown} 显示": "{n} items · {shown} shown", "{size} · 下载后可直接安装,无需跳转浏览器": "{size} · Downloads and installs in place — no browser redirect", "{size} · 点击下载后可直接安装,无需跳转浏览器": "{size} · Tap download to install right away — no browser redirect", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "{total} menus · {shown} shown · {hidden} hidden · {groups} groups", "· 不会改动任何配置": "· makes no config changes", "· 每次执行前列改动清单,等你确认": "· lists the changes before each run and waits for your confirmation", "—": "—", "“本机”指运行网关的机器,不是打开面板的电脑。远程浏览器也可以发起,但网关本机可能需要安装客户端并已登录;是否可用由网关返回结果决定。": "“Local” means the machine running the gateway, not the computer displaying the panel. A remote browser can also start this, but the gateway machine may need the client installed and signed in. Availability depends on the gateway's response.", "✅ GitHub 令牌已保存(加密存储,界面不再显示)": "✅ GitHub token saved (stored encrypted, never shown again)", "✅ Token 已刷新": "✅ Token refreshed", "✅ 已将账号优先级调整到全局第一位": "✅ Account moved to first in the global queue", "✅ 已清除界面保存的 GitHub 令牌(环境变量若配置过则继续生效)": "✅ Removed the saved GitHub token (an environment variable, if set, still applies)", "「{name}」匹配到多个账号:{list},请用完整账号名重试": "\"{name}\" matches multiple accounts: {list}. Retry with the full account name.", "「工具全不勾选 → 不注入系统提示词」:想当纯聊天用时,不必再去关上面的开关。": "\"No tools selected → no system prompt\": if you want plain chat, you don't need to turn the switch above off.", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "\"Settings\" is pinned, so its group cannot be hidden as a whole; you can still hide its other menus individually", "上一页": "Previous", "上次加载记录(非本次故障)": "Previous load record (not a current failure)", "下一页": "Next", "下拉刷新": "Pull to refresh", "下次自动重试:{time}": "Next automatic retry: {time}", "下载与当前平台对应的插件包(zip),点右上角「安装插件包」选中它即可。": "Download the plugin pack (zip) for this platform, then click \"Install plugin pack\" at the top right and select it.", "不填写(可选)": "Leave blank (optional)", "与电脑端一致:每 {n} 分钟": "Matches the desktop app: every {n} min", "为 Agent2API 扩展网页提供商,支持智谱清言的模型调用、访客与登录账号、凭证续期、模型目录、积分查询、签到和任务领取。": "Adds web providers to Agent2API, with Zhipu Qingyan model requests, guest and signed-in accounts, credential renewal, model catalogs, points queries, check-in and task rewards.", "为网关扩展多家 AI 提供商,支持账号登录与导入、模型调用、凭证续期、模型目录、余额查询和签到。具体能力以各提供商的支持情况为准。": "Adds AI providers to the gateway, with account sign-in and import, model requests, credential renewal, model catalogs, balance queries and check-in. Available capabilities vary by provider.", "主导航": "Main navigation", "也可输入 file: 加网关电脑上的插件目录或 tgz 文件绝对路径;本地插件会复制安装,不修改源目录。": "You can also enter file: followed by the absolute path to a plugin directory or tgz file on the gateway computer. Local plugins are copied for installation without changing the source directory.", "书生·端砚": "Intern InkStone", "了解并安装": "I understand, install", "仅在该 API 方法需要额外密钥时填写": "Fill in only if this API method requires an additional key.", "仅安装你信任的 npm 包、GitHub 仓库或 Magpie 社区分发包;完整性校验不等于安全审计。": "Only install npm packages, GitHub repositories or Magpie community packages you trust. Integrity verification is not a security audit.", "仅安装你信任的 npm 包或 GitHub 仓库;版本与完整性检查不能保证脚本安全。": "Only install npm packages or GitHub repositories you trust. Version and integrity checks do not guarantee script safety.", "仅安装你信任的 npm 包;下载校验只能确认文件完整,不能保证脚本安全。": "Only install npm packages you trust. Download verification confirms file integrity, not script safety.", "仅影响插件更新通道,与主程序独立。开启后可安装 beta 版;已使用 beta 时保持该通道,关闭后只看正式版且不会降级。": "Only affects plugin updates, independently of the application. Enable to receive beta versions. Plugins already on beta stay on that channel; disabling selects stable releases without downgrading.", "仅自动更新已安装、已启用且通过可信签名校验的社区插件。新插件需手动安装,卸载后不会自动重新安装;未签名插件需手动更新。": "Only automatically updates installed, enabled community plugins with verified trusted signatures. New plugins require manual installation and are not automatically reinstalled after removal. Unsigned plugins require manual updates.", "从 GitHub 官方源下载固定提交。仓库根目录须有可直接运行的插件入口;不会执行构建脚本或安装依赖。": "Downloads a fixed commit directly from GitHub. The repository root must contain a runnable plugin entry; build scripts and dependency installation are not run.", "从 GitHub 官方源下载固定提交。仓库须包含可运行的提供商入口;安装运行依赖,但不执行构建和安装脚本。": "Downloads a pinned commit directly from GitHub. The repository must include a runnable provider entry point. Runtime dependencies are installed, but build and installation scripts are not run.", "从 Magpie 社区官方分发目录下载,核验 SHA-512;更新与重装继续使用此来源。": "Downloads from Magpie's official community distribution with SHA-512 verification. Updates and reinstalls keep this source.", "从 npm / GitHub / Magpie 安装": "Install from npm / GitHub / Magpie", "从 npm / GitHub 安装": "Install from npm / GitHub", "从 npm 安装": "Install from npm", "从文件安装…": "Install from file…", "从网关本机客户端导入": "Import from a client on the gateway machine", "仓库没有已提交的可加载入口,请等待作者发布构建产物": "This repository has no committed loadable entry point. Wait for the author to publish a build.", "代价": "Cost", "令牌已生效,但写入磁盘失败(重启后会丢失)": "The token is active but could not be written to disk (it will be lost on restart)", "以下设置属于所连接网关,不是手机本地设置。": "These settings belong to the connected gateway, not this phone.", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "This restores the default groups, order and visibility. Groups you created are removed (their menus are kept).", "会话内": "In-session", "会话已过期。重新登录后会自动回到手机端。": "Your session expired. Sign in again and you will return to the mobile app automatically.", "会话粘性": "Session stickiness", "作为 system 消息注入给助手": "Injected to the assistant as a system message", "作者尚未提供插件介绍。": "The author has not provided a plugin description.", "使用 Cloudflare 账号 ID 与 API Token,接入 Workers AI 对话和在线模型目录。": "Connect Workers AI chat and its online model catalog using a Cloudflare Account ID and API Token.", "使用 Warp 终端的登录态,接入账号可用模型并查询 AI 请求额度。": "Use your Warp terminal sign-in to access the account's available models and view its AI request allowance.", "使用你在网关电脑上安装并登录的 agy CLI,通过 ACP 协议接入模型、工具调用和额度查询;与依赖 Antigravity IDE 的 Antigravity ACP 插件不同。": "Uses the agy CLI installed and signed in on your gateway computer for models, tool calls and quota queries over ACP. This is different from the Antigravity ACP plugin that relies on the Antigravity IDE.", "使用网关本机 gcloud / ADC 登录,接入 Vertex AI 模型并查询 Google Cloud 促销赠金。": "Use gcloud / ADC credentials on the gateway machine to access Vertex AI models and view Google Cloud promotional credits.", "例如:家里、公司": "e.g. Home, Office", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "The sidebar layout module did not load (ui/sidebar-layout.js must be included before app.js).", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "No menus are shown in the sidebar. Turn on the ones you need under Settings → Display → Sidebar menus.", "侧边栏菜单": "Sidebar menus", "保存失败:{error}": "Save failed: {error}", "保存对话模型失败:{message}": "Failed to save the chat model: {message}", "保存并继续": "Save and continue", "修改高级参数会等待在途任务结束后重新加载插件;专属开关实时生效。": "Changing advanced options reloads the plugin after active tasks finish. Provider switches take effect immediately.", "候选队列": "Candidate queue", "停止": "Stop", "停用": "Disabled", "允许的操作": "Allowed operations", "允许签到及附带任务": "Allow check-in and bundled tasks", "先添加一台网关": "Add a gateway first", "先选择插件声明的账号登录方式,再填写必需字段。OAuth 由共享登录桥负责等待、取消和错误;API 凭证通过账号规范化入口添加。": "Select an account sign-in method declared by the plugin, then fill in its required fields. The shared sign-in bridge handles OAuth waiting, cancellation and errors; API credentials are added through the account normalization entry point.", "免鉴权调用": "Unauthenticated calls", "全不选": "Deselect all", "全部 API Key": "All API keys", "全部客户端": "All clients", "全部更新": "Update all", "共 {n} 条记录": "{n} records", "共享登录桥不可用,请重新打开面板": "The shared sign-in bridge is unavailable. Reopen the panel.", "共享运行环境尚未就绪,本插件没有明确的加载失败结果。": "The shared runtime is not ready. No load failure has been confirmed for this plugin.", "关": "Off", "关闭菜单": "Close menu", "兼容 OpenCode v1 / Magpie 提供商插件及其运行依赖;不加载界面、独立工具或 Pi 扩展。": "Supports OpenCode v1 / Magpie provider plugins and their runtime dependencies. UI plugins, standalone tools and Pi extensions are not loaded.", "准备运行环境": "Preparing runtime", "凭证 JSON 含有不允许的字段:{key}": "The credentials JSON contains a disallowed field: {key}", "凭证 JSON 嵌套过深,请只粘贴该插件要求的凭证对象": "The credentials JSON is nested too deeply. Paste only the credentials object required by this plugin.", "凭证 JSON 必须是非空对象,不能是数组或字符串": "The credentials JSON must be a non-empty object, not an array or a string.", "凭证 JSON 格式不正确,请检查括号和引号": "The credentials JSON is not valid. Check the brackets and quotation marks.", "凭证 JSON(必填)": "Credentials JSON (required)", "凭证只在提交时发送到网关;备注名和代理请使用下面的字段,解析错误不会回显凭证内容。": "Credentials are sent to the gateway only on submission. Use the fields below for the label and proxy; parse errors will not display credential contents.", "分布来自保留的日报来源明细;无法恢复的历史不反推客户端或模型。": "Breakdowns come from retained daily source aggregates; clients or models are not inferred for unrecoverable history.", "分支、标签或提交(留空使用默认分支)": "Branch, tag or commit (leave blank for the default branch)", "分组名": "Group name", "分组名,例如「常用」": "Group name, e.g. \"Favorites\"", "切换菜单": "Toggle menu", "列表 = 模型管理页里所有已启用的模型。助手走本地网关发起对话,消耗所选账号的额度。": "The list is every enabled model from the Model management page. The assistant chats through the local gateway and spends the selected account's quota.", "创建并进入": "Create & enter", "创建管理员账号": "Create admin account", "初始化已完成,正在等待校验和登记。": "Initialization is complete. Waiting for validation and registration.", "初始化超时": "Initialization timed out", "删除 {n} 条": "Delete {n} entries", "删除分组": "Delete group", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "Delete group \"{name}\"? Its {n} menus will move to \"{target}\" — nothing is lost.", "删除空分组「{name}」?": "Delete the empty group \"{name}\"?", "删除这个分组(组内菜单移到第一组)": "Delete this group (its menus move to the first group)", "刷新清单": "Refresh catalog", "刷新状态": "Refresh status", "加入插件 beta 版": "Join plugin beta releases", "加载中": "Loading", "加载助手设置失败:{message}": "Failed to load assistant settings: {message}", "加载失败": "Load failed", "加载失败:{error}": "Load failed: {error}", "加载更多": "Load more", "加载更早的记录": "Load older records", "加载状态": "Load status", "加载诊断": "Load diagnostics", "助手": "Assistant", "助手自己用哪个模型生成回复": "Which model the assistant uses to generate replies", "助手设置读取失败,工具可能已过时。": "Failed to read assistant settings; the tool list may be out of date.", "助手走本地网关,消耗所选账号的额度": "The assistant goes through the local gateway and spends the selected account's quota", "勾选即注入该工具;不勾选 = 助手看不到它": "Checked tools are injected; unchecked ones are invisible to the assistant", "十几 MB": "about a dozen MB", "升级会重新下载并校验插件包(约 {size}),装完立即生效,账号数据不受影响。": "Upgrading downloads the plugin pack again and verifies it (about {size}). It takes effect immediately and your account data is untouched.", "协议版本": "Protocol version", "单签": "Single", "占比": "Share", "即将就绪": "Almost ready", "卸载": "Uninstall", "卸载插件": "Uninstall plugin", "卸载插件包": "Uninstall plugin pack", "历史数据整理中": "Organizing history data", "历史明细不完整,输入、输出与缓存读数无法恢复": "Historical details are incomplete; input, output and cache readings cannot be recovered.", "历史未记录 Key": "Key not recorded in history", "原生插件包,来自项目插件仓库": "Native packages from the project plugin repository", "原生辅助授权": "Native helper permissions", "原生辅助授权已失效或暂不可用,请重新选择并确认。": "The native helper permission is no longer valid or is temporarily unavailable. Select a helper and confirm again.", "原生辅助程序不受 Wasm 沙箱限制,只授权你信任的已安装插件。辅助程序更新后需要重新确认。": "Native helpers are outside the Wasm sandbox. Only authorize installed plugins you trust. Confirm again after a helper is updated.", "去下载": "Get it", "去登录": "Sign in", "参数不完整(需要 account / enabled)": "Incomplete parameters (account / enabled required)", "参数不完整(需要 account / position)": "Incomplete parameters (account / position required)", "参数不完整(需要 provider / id / alias)": "Incomplete parameters (provider / id / alias required)", "参数不完整(需要 provider / id / capabilities)": "Incomplete parameters (provider / id / capabilities required)", "参数不完整(需要 provider / id / enabled)": "Incomplete parameters (provider / id / enabled required)", "参数不完整(需要 provider / position)": "Incomplete parameters (provider / position required)", "发现新版本 {latest}(当前 {current}),点开「设置 - 软件更新」可查看更新日志并下载": "New version {latest} available (current: {current}) — open \"Settings - Software update\" to see the changelog and download", "发现新版本 {version}": "New version {version} available", "发送": "Send", "取消日期筛选": "Clear date filter", "受影响的来源将在 {time} 后自动重试": "Affected sources will retry automatically after {time}", "只改映射名,不动上游模型 ID;映射立即生效(新对话即可用)。": "Only the mapping name changes; the upstream model ID stays. Mappings take effect immediately (usable in a new chat).", "只注入工具定义": "Only tool definitions are injected", "只统计已结束的生产请求;失败请求仍计入请求数,Token 用量沿用现有成功请求口径。": "Only completed production requests are counted. Failed requests still count as requests; token usage follows the existing successful-request policy.", "只读": "Read-only", "只读工具": "Read-only tools", "可以点击「刷新」读取插件仓库,或从本地 zip 安装插件。": "Click Refresh to load the plugin catalog, or install a local zip.", "可填 {min}–{max} 秒,关闭后保留间隔": "Enter {min}–{max} seconds; the interval is kept when turned off", "可更新": "Updates available", "可更新 v{version}": "v{version} available", "可更新到 v{version}": "Update available: v{version}", "可用": "usable", "可选,留空使用账号昵称": "Optional; leave blank to use the account nickname.", "各家提供商的转发与账号实现都在插件包里,不随本软件发布。装好插件后,模型转发、添加账号、签到与余额查询才会生效。": "Forwarding and account handling for each provider live in plugin packs that ship separately from this app. Model forwarding, adding accounts, check-in and balance queries only work once the pack is installed.", "后台只读取状态,不会自动弹出验证码;验证结果一次性使用,短时间内过期。": "The background only reads status and never opens verification automatically. Each token is single-use and expires shortly.", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "Contains the pinned \"Settings\" menu, so the group cannot be hidden as a whole (you can still hide its other menus individually)", "启动较慢,仍在加载;尚未收到失败结果。": "Startup is taking longer, but loading is still in progress. No failure has been reported.", "四种组合的实际效果": "What each combination actually does", "回复由 {model} 生成 · 走本地网关": "Reply generated by {model} · via the local gateway", "固定": "Pinned", "在 GitHub 上创建令牌(无需勾选任何权限)": "Create a token on GitHub (no scopes needed)", "填写账号登录所需信息并发起授权;等待、取消与失败原因由共享登录桥处理,设备码和操作指引会显示在上方。": "Enter the information required for account sign-in and start authorization. The shared sign-in bridge handles waiting, cancellation and failure details; device codes and instructions appear above.", "备注名(可选)": "Label (optional)", "复制失败,请手动选择复制": "Copy failed, please select and copy manually", "复制订阅链接": "Copy subscription link", "失败 · {status}": "Failed · {status}", "失败退避": "Failure backoff", "奖励 {bonus}": "Bonus {bonus}", "套餐 {plan}": "Plan {plan}", "套餐池人机验证": "Start Plan human verification", "套餐池请求需要验证,请主动开始验证后重试请求": "A Start Plan request needs verification. Start verification manually, then retry the request.", "安装": "Install", "安装 {name}": "Install {name}", "安装与更新插件时访问 GitHub 用。与「设置 → 更新 → 更新设置」里的同一项互通,填一次即可。不填也能用,只是匿名请求限额较低(60 次/小时)。": "Used when installing and updating plugins from GitHub. The same value as \"Settings → Update → Update settings\", so fill it once. Optional — without it the anonymous request limit is lower (60/hour).", "安装于 {time}": "Installed {time}", "安装包已就绪,点「安装」即可完成更新": "Package ready — tap \"Install\" to finish updating", "安装插件包": "Install plugin pack", "安装时间": "Installed at", "安装脚本插件": "Install script plugin", "完成时间:{time}": "Finished: {time}", "官方": "Official", "官方与推荐来自 Magpie 官方名单;第三方来自 GitHub 的 magpie-plugin 标签,不代表官方推荐。": "Official and recommended plugins come from Magpie's official catalog. Third-party plugins are discovered through GitHub's magpie-plugin topic and are not officially recommended.", "官方签名:包内容与发布者签的完全一致,未被改过": "Official signature: the pack content matches what the publisher signed, byte for byte", "定时": "Scheduled", "定时任务": "Scheduled tasks", "实际注入": "Actually injected", "客户端分布": "Client breakdown", "客户端统计": "Client statistics", "宿主错误": "Host error", "对话": "Chats", "对话模型": "Chat model", "对话模型已切换": "Chat model switched", "将修改 {model} 的 {n} 项能力:": "About to change {n} capabilities of {model}:", "将修改 {n} 个模型的启停状态:": "About to change the enabled state of {n} models:", "将修改 {n} 个账号的启用状态(其中禁用 {k} 个):": "About to change the enabled state of {n} accounts (disabling {k}):", "将对 {model} 发起一次真实请求:": "About to send one real request to {model}:", "将执行 {label}。": "About to run {label}.", "将把「{provider}」整组移到第 {position} 顺位:": "About to move the whole \"{provider}\" group to position {position}:", "将把账号「{account}」移到第 {position} 顺位:": "About to move account \"{account}\" to position {position}:", "将改动 {n} 条映射({parts}):": "About to change {n} mappings ({parts}):", "小米 MiMo": "Xiaomi MiMo", "尚未取得插件清单": "Plugin catalog not loaded yet", "尚未检查更新": "Not checked yet", "尚未登录": "Not signed in yet", "已下载": "Downloaded", "已下载,待安装": "Downloaded, ready to install", "已修改 {n} 个模型": "Changed {n} models", "已修改 {n} 个账号": "Changed {n} accounts", "已修改 {n} 项能力": "Changed {n} capabilities", "已停止这次回答。": "This reply was stopped.", "已全部取消勾选": "All tools deselected", "已关闭自动检查": "Automatic checks off", "已删除分组「{name}」": "Deleted group \"{name}\"", "已加载": "Loaded", "已勾选 {n} / {total}": "{n} / {total} selected", "已勾选「{label}」": "\"{label}\" selected", "已勾选工具": "Tools selected", "已取消「{label}」": "\"{label}\" deselected", "已启动安装器": "Installer launched", "已填写(粘贴新令牌可覆盖)": "Filled in (paste a new token to replace it)", "已复制:{text}": "Copied: {text}", "已开启自动检查": "Automatic checks on", "已恢复推荐勾选": "Recommended selection restored", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "Restored the default groups: Overview / Forwarding / Diagnostics / System", "已改动 {n} 条映射": "Changed {n} mappings", "已新建分组「{name}」,点组头的 + 把菜单移进来": "Created group \"{name}\" — use + on its header to move menus in", "已是最新版本": "You are on the latest version", "已显示 {shown} / {total} 个提供商插件": "Showing {shown} of {total} provider plugins", "已更新 {count} 个插件": "Updated {count} plugins", "已更新 {done} 个插件,{failed} 个失败:{error}": "Updated {done} plugins, {failed} failed: {error}", "已注入 {n} / {total} 个工具 · 系统提示词:{state}": "{n} / {total} tools injected · System prompt: {state}", "已添加的服务器": "Added servers", "已由其他插件接管,请到对应插件中管理。": "This provider is managed by another plugin. Manage it in that plugin's settings.", "已登录": "Signed in", "已离线 · 显示的是缓存内容": "Offline — showing cached content", "已移到第 {n} 顺位": "Moved to position {n}", "已签名": "Signed", "开": "On", "开关和选项即时保存;输入项请点击对应的「保存」按钮。": "Switches and options save immediately. For text and number fields, click the corresponding Save button.", "开始时间:{time}": "Started: {time}", "开始验证": "Start verification", "当前": "Current", "当前一个工具都没勾选,助手只能纯聊天。去「设置 → AI 助手 → 工具」里勾上需要的工具。": "No tools are selected, so the assistant can only chat. Enable the tools you need under Settings → AI Assistant → Tools.", "当前兼容无运行时 npm 依赖的提供商插件;不加载 Magpie 界面、Matrix 工具或 Pi 扩展。": "Currently supports provider plugins without runtime npm dependencies. Magpie pages, Matrix tools and Pi extensions are not loaded.", "当前平台": "Current platform", "当前平台暂无包": "No package for this platform", "当前插件未申请原生辅助能力": "No installed plugin has requested native helpers", "当前暂不可安装": "Installation is currently unavailable", "当前模型请求免人机验证": "Model requests currently require no human verification.", "当前版本 {current},最低可用版本 {minimum}。": "Current version: {current}. Minimum supported version: {minimum}.", "当前版本 {version}": "Current version {version}", "当前网关要求插件版本不低于 v{version},补齐前暂不加载。": "This gateway requires plugin v{version} or later. The plugin will not load until updated.", "当前:已关闭(助手不收到任何系统提示词,工具定义照发)": "Current: off (the assistant receives no system prompt; tool definitions are still sent)", "当前:已开启 · 使用内置默认提示词(还没自定义)": "Current: on · using the built-in default prompt (not customized yet)", "当前:已开启 · 自定义内容 {n} 字": "Current: on · custom content, {n} characters", "影响转发": "Affects routing", "待就绪": "Not ready yet", "待确认": "Pending confirmation", "总剩余 {total}": "Total left {total}", "恢复上游原值": "Restore upstream values", "恢复推荐": "Restore recommended", "恢复默认侧边栏": "Restore default sidebar", "成功 / 失败": "Success / failure", "成功领取": "Claimed", "我会在动手前把改动列给你确认。": "I'll list the changes for you to confirm before making them.", "我信任所选辅助程序并允许它执行声明的本机操作": "I trust the selected helper and allow its declared local operations", "我信任此插件来源,并允许它在网关电脑上运行。": "I trust this plugin source and allow it to run on the gateway computer.", "所有菜单都已在这一组": "Every menu is already in this group", "手动凭证 JSON": "Manual credentials JSON", "手动凭证 JSON(兼容入口)": "Manual credentials JSON (compatibility entry)", "执行": "Run", "执行时刻": "Run times", "把菜单移入 {name}": "Move a menu into {name}", "把菜单移入「{name}」": "Move a menu into \"{name}\"", "报表": "Reports", "拖动分组 {name}": "Drag group {name}", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "Drag the ⠿ handle to reorder (menus can move across groups); use the switches to show or hide; click a group name to rename it; the + on a group header moves another menu into it; the eye button hides a whole group. Changes apply instantly and are remembered — the sidebar on the left is the result. Keyboard: focus a handle and press Alt+↑ / ↓.", "拖动菜单 {name}": "Drag menu {name}", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "Drag to reorder groups (Alt+↑ / ↓ also works)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "Drag to reorder, across groups too (Alt+↑ / ↓ also works)", "按 API Key 筛选": "Filter by API key", "按 Token": "By tokens", "按天请求趋势": "Daily request trend", "按客户端筛选": "Filter by client", "按访问网关的 API Key 统计生产请求,不包含助手对话和模型测试。停用、删除 Key 不会删除历史用量;密钥值不会进入报表。历史没有记录身份的请求单列,不能追溯到某把 Key。": "Production requests grouped by the gateway API key, excluding assistant chats and model tests. Disabling or deleting a key preserves its historical usage. Reports never include the secret value. Requests without a recorded identity are listed separately and cannot be attributed to a key.", "按请求 User-Agent 识别的客户端类型统计,不代表设备或用户数。“其它”表示有 User-Agent 但未匹配已知类型;“未记录客户端”表示旧数据或请求未带 User-Agent。": "Grouped by client type identified from the request User-Agent, not by devices or users. Other means a User-Agent was present but no known type matched; Unrecorded client means legacy data or no User-Agent.", "按请求数": "By requests", "按间隔检查插件版本,在对应卡片显示更新;关闭后仍可手动检查。自动更新或自动下载开启时也使用此间隔。": "Checks plugin versions at this interval and shows updates on their cards. Manual checks remain available when disabled. Automatic updates and downloads also use this interval.", "按需下载": "Download on demand", "按需安装插件,为 AI 路由网关扩展提供商能力。插件独立于主程序更新,下载完成后自动校验并安装。": "Install optional plugins to extend your AI routing gateway. Plugins update independently of the application and are verified and installed automatically after download.", "换一组筛选条件,或把来源和状态都切回「全部」。": "Try different filters, or set both Source and Status back to All.", "授权": "Authorize", "排序已保存,但列表刷新失败:{message}": "Order saved, but the list could not refresh: {message}", "排序未保存:{message}": "Order not saved: {message}", "排序设置迁移失败:{message}": "Could not migrate sorting settings: {message}", "排第 1 的接走所有请求,直到它不能答(限流 / 故障 / 额度尽)才轮到下一位 —— 就是「从上往下」的现状行为。": "Position 1 takes every request until it can't answer (rate-limited / failing / out of quota) before the next one steps in — the same top-down behavior as today.", "接入 Agnes AI 国际版:浏览器登录、在线模型目录、套餐用量与美元余额;与 Agnes Code 桌面版独立。": "Connect Agnes AI international with browser sign-in, an online model catalog, plan usage and a USD balance. Separate from the Agnes Code desktop product.", "接入 Agnes Code:本机登录态或 accessToken、模型目录、积分与登录奖励观测。": "Connect Agnes Code using a local session or accessToken, with model catalogs, points and observed sign-in rewards.", "接入 Codar(科搭):本机凭据、模型目录、积分与滚动窗口签到。": "Connect Codar with local credentials, model catalogs, points and rolling-window check-in.", "接入 DeepAI Code:网页登录、本机凭据、模型目录、额度查询与签到。": "Connect DeepAI Code with web sign-in, local credentials, model catalogs, quota queries and check-in.", "接入 JoyCode(京东):网页登录、企业租户、模型目录与额度明细。": "Connect JoyCode (JD) with web sign-in, enterprise tenants, model catalogs and quota details.", "接入 WPS 灵犀:网页登录、客户端导入、Cookie、模型目录与智点;签到及附带任务默认允许。": "Connect WPS Lingxi with web sign-in, client import, cookies, model catalogs and credits. Check-in and bundled tasks are allowed by default.", "接入中国移动云 MClaw:浏览器登录、在线模型目录、aitokens 额度与凭证续期。": "Connect China Mobile Cloud MClaw with browser sign-in, an online model catalog, aitokens allowance and credential renewal.", "接入书生·端砚墨点计划:浏览器登录、API Key、模型目录与墨点额度窗口。": "Connect the Intern InkStone Token Plan with browser sign-in, an API key, a model catalog and ink-credit quota windows.", "接口不兼容": "Incompatible interface", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "Choose which menus the sidebar shows, in what order, and how they are grouped. Hiding only affects navigation — it does not revoke access, and hidden pages can still be opened by URL.", "提供商启停": "Provider switches", "提供商增强": "Provider Enhancement", "提供商设置": "Provider settings", "提示词": "Prompt", "提示词开关": "Prompt switch", "插件": "Plugins", "插件与当前网关的公共接口不兼容,暂未加载。": "The plugin is incompatible with the gateway's public interface and has not been loaded.", "插件仓库": "Plugin repository", "插件任务": "Plugin tasks", "插件包与主程序分开安装、分开升级。卸载插件后账号数据仍然保留,重新装回即可继续使用;仅该包提供的转发与添加账号需要插件,本体订阅不受影响。": "Plugin packs install and upgrade independently of the application. Uninstalling keeps account data; reinstall to continue. Only forwarding and adding accounts supplied by that pack require it. Native subscriptions are unaffected.", "插件包与主程序分开安装、分开升级。卸载插件后账号数据仍然保留,重新装回即可继续使用;但转发与添加账号需要插件在位。": "Plugin packs install and upgrade independently of the app. Uninstalling a pack keeps your account data - reinstall it to continue. Forwarding and adding accounts need the pack present.", "插件包大小不能超过 {n} MiB": "Plugin package size cannot exceed {n} MiB.", "插件包已卸载": "Plugin pack uninstalled", "插件包已安装": "Plugin pack installed", "插件包已安装到 v{version}": "Plugin installed: v{version}", "插件包已更新到 v{version}": "Plugin pack updated to v{version}", "插件包的可执行文件不在磁盘上(可能被手工删除或移动),请重新安装。": "The plugin pack binary is missing from disk (it may have been deleted or moved). Please reinstall it.", "插件参数必须是 JSON 对象": "Plugin options must be a JSON object", "插件发布信息读取失败,请稍后刷新": "Could not read the plugin release information. Refresh later.", "插件只声明了短信登录,但没有下发可用的动态表单;此界面不会猜测短信接口": "The plugin only declared SMS sign-in but did not provide a usable dynamic form. This interface will not guess SMS endpoints.", "插件尚未声明有效版本,暂时无法安装": "The plugin has no valid version declared and cannot be installed yet.", "插件尚未提供可下载的发布包": "The plugin does not have a downloadable release yet.", "插件已就绪,账号列表将自动同步。": "The plugin is ready. The account list will update automatically.", "插件更新未完成": "Plugin update did not complete", "插件未启用或已不再申请此权限;已有授权仍可撤销。": "The plugin is disabled or no longer requests this permission. Existing grants can still be revoked.", "插件未实现 auth.methods(501),且没有可用的旧版登录声明;仅保留需要插件确认的手动凭证 JSON 入口": "The plugin does not implement auth.methods (501) and has no usable legacy sign-in declarations. Only the manual credentials JSON entry remains, subject to validation by the plugin.", "插件未实现 auth.methods(501);以下入口仅依据旧版登录声明显示": "The plugin does not implement auth.methods (501). The entries below are shown solely based on its legacy sign-in declarations.", "插件没有声明可用的账号登录方式,请更新插件或联系插件作者": "The plugin has not declared any available account sign-in methods. Update the plugin or contact its author.", "插件清单暂未完整读取": "The plugin catalog is not fully loaded", "插件版本(留空使用 latest)": "Plugin version (leave blank for latest)", "插件状态已变更,但账号列表同步失败。请回到账号页点击「刷新」重试。": "Plugin status changed, but the account list could not be synced. Return to Accounts and click \"Refresh\" to retry.", "插件独立安装与更新。卸载后账号数据仍会保留;脚本插件共用一个按需下载的运行时。": "Plugins install and update independently. Uninstalling keeps account data; script plugins share one runtime downloaded on demand.", "插件登录指引": "Plugin sign-in instructions", "插件登录方式包含重复的输入字段": "The plugin's sign-in method contains duplicate input fields.", "插件登录选择字段包含无效或重复的选项": "The plugin's sign-in selection field contains invalid or duplicate options.", "插件登录选择字段缺少选项列表": "The plugin's sign-in selection field is missing its option list.", "插件目录": "Plugin directory", "插件设置": "Plugin settings", "插件设置已保存": "Plugin settings saved", "插件返回了无效的登录字段,请更新插件或联系作者": "The plugin returned an invalid sign-in field. Update the plugin or contact its author.", "插件返回了无效的登录方式,请更新插件或联系作者": "The plugin returned an invalid sign-in method. Update the plugin or contact its author.", "插件选项": "Plugin options", "搜索…": "Search…", "搜索插件": "Search plugins", "撤销授权": "Revoke permission", "支持自动授权、设备码、手动授权码和插件声明的凭据表单;本机读取作用于网关电脑。": "Supports automatic authorization, device codes, manual authorization codes and plugin-defined credential forms. Local imports read from the gateway machine.", "改动立即生效;禁用后指向它的请求会落到下一个候选。": "Changes take effect immediately; once disabled, requests for it fall through to the next candidate.", "改动类工具": "Write tools", "改成": "Change to", "文件缺失": "Files missing", "文档": "Docs", "新": "New", "新分组名": "New group name", "新增 {n} 条": "Add {n} entries", "新对话": "New chat", "新建分组": "New group", "无凭证": "No credentials", "无法解密": "Cannot decrypt", "无法读取插件更新进度,请刷新后查看结果。": "Could not read plugin update progress. Refresh to view the result.", "无法读取登录方式": "Unable to load sign-in methods", "日志": "Logs", "旧版本保存的正文可能已截断,无法恢复缺失内容": "The body saved by an older version may be truncated; missing content cannot be recovered", "旧版浏览器登录暂不接收备注名和登录代理,请添加后在账号设置中调整。": "Legacy browser sign-in does not currently accept a label or sign-in proxy. Adjust them in account settings after adding the account.", "旧版登录方式": "Legacy sign-in method", "映射名": "Mapping name", "显示 {name}": "Show {name}", "显示分组 {name}": "Show group {name}", "显示这一组": "Show this group", "智能": "AI", "暂不可安装": "Unavailable", "暂无可安装的插件": "No plugins available to install", "暂无可用的原生辅助程序,请先安装并启用所需插件。": "No native helper is available. Install and enable the required plugin first.", "暂时无法获取插件状态,显示上次结果;这不代表插件启动失败。": "Plugin status is temporarily unavailable. Showing the previous result; this does not mean the plugin failed to start.", "暂未发布": "Not published yet", "暂未取得明确的加载结果,不能据此判断启动失败。": "No confirmed load result is available yet. This does not indicate a startup failure.", "更多": "More", "更新": "Update", "更新到 v{version}": "Update to v{version}", "更新前无法继续调用模型;账号、配置和历史记录不会被删除。": "Model requests are unavailable until you update. Accounts, settings and history will be preserved.", "更新或启停会等待共享宿主内的请求结束;账号数据始终由网关统一保存。": "Updates and enable/disable changes wait for requests in the shared host to finish. The gateway always manages account data.", "更新/重装": "Update / reinstall", "最大化": "Maximize", "最小化": "Minimize", "最近调用": "Last call", "有": "Yes", "有 {count} 个插件可更新": "{count} plugins have updates", "有插件包的协议版本与当前网关不一致({versions}),请下载对应版本的插件包。": "Some plugin packs use a protocol version that does not match this gateway ({versions}). Please download matching packs.", "有新版本,重启后生效": "New version ready — restart to apply", "有新版本:v{current} → v{latest}": "New version available: v{current} → v{latest}", "有更新": "Update available", "服务器": "Servers", "服务器已切换,请重新加载页面": "The server has changed. Reload the page", "未加载": "Not loaded", "未同步": "Not synced", "未就绪": "Not ready", "未授权": "Not authorized", "未登录": "Not signed in", "未知工具「{name}」:它在设置里可能刚被取消勾选,或这一版助手还不认识它。": "Unknown tool \"{name}\": it may have just been deselected in settings, or this version of the assistant doesn't recognize it yet.", "未签名": "Unsigned", "未签名包不会自动覆盖;点击「补齐插件」将安装官方签名包。": "Unsigned packages are not replaced automatically. Click Update required plugin to install an officially signed package.", "未签名:可以正常使用,但无法证明这个包出自官方;升级时同样只做格式校验": "Unsigned: it works normally, but there is no proof this pack came from the official publisher; upgrades only check its format too", "未能保存自动刷新设置": "Could not save auto-refresh settings", "未能读取自动刷新设置": "Could not load auto-refresh settings", "未记录": "Unrecorded", "未记录客户端": "Unrecorded client", "未运行": "Not running", "未选择服务器": "No server selected", "本地网关监听状态": "Local gateway listening status", "本次初始化超过等待时限,已停止;可查看诊断后重试。": "This initialization exceeded its time limit and was stopped. Check diagnostics before retrying.", "本次加载未完成,请查看诊断。": "This load did not complete. Check diagnostics.", "本次用时 {n} 秒": "Elapsed: {n} s", "权限": "Permissions", "来自 Magpie 社区的插件,共用一个按需下载的运行时": "Magpie community plugins share one runtime downloaded on demand", "来自环境变量": "From env", "来自环境变量 GITHUB_TOKEN": "From the GITHUB_TOKEN environment variable", "松开刷新": "Release to refresh", "查看 GitHub 仓库:{repository}": "View GitHub repository: {repository}", "查看全部": "View all", "查看参数": "View arguments", "查看发布说明": "View release notes", "查看发布页面": "Open release page", "查看提供商插件": "View provider plugins", "查看更新日志": "View changelog", "查看结果": "View result", "查看进度": "View progress", "标题总结设置": "Title generation settings", "桌面桥不可用(本页需要在 Agent2API 客户端里打开)": "Desktop bridge unavailable (this page must be opened inside the Agent2API client)", "检查更新失败": "Failed to check for updates", "检测到更新后自动下载、校验并安装已启用的官方签名插件。": "Automatically downloads, verifies and installs updates for enabled, officially signed plugins.", "检测到更新后自动下载、校验并安装已启用的官方签名插件。未签名或第三方插件仍需手动更新。": "Automatically downloads, verifies and installs updates for enabled, officially signed plugins. Unsigned and third-party plugins still require manual updates.", "模型分布": "Model breakdown", "模型管理": "Model management", "正在下载 Bun 运行时": "Downloading the Bun runtime", "正在下载…": "Downloading…", "正在下载脚本插件": "Downloading script plugin", "正在初始化插件,尚未收到失败结果。": "Initializing the plugin. No failure has been reported.", "正在加载": "Loading", "正在加载 · {n} 家提供商的账号暂未显示,就绪后自动恢复。": "Loading · Accounts from {n} providers are temporarily hidden and will return when ready.", "正在加载新插件…": "Loading the new plugin…", "正在加载脚本插件": "Loading script plugins", "正在启动": "Starting", "正在启动插件,账号将在就绪后自动恢复。": "Starting the plugin. Accounts will return automatically when it is ready.", "正在完成人机验证…": "Completing human verification…", "正在恢复原有脚本插件": "Restoring previous script plugins", "正在恢复旧版本插件…": "Restoring the previous plugin version…", "正在更新第 {index}/{total} 个…": "Updating {index} of {total}…", "正在校验包内容…": "Verifying package…", "正在检查…": "Checking…", "正在检查或准备脚本运行环境。": "Checking or preparing the script runtime.", "正在自动补齐官方插件,不受日常更新开关和通道限制。": "The official plugin is being updated to the required version, independently of routine update settings and channels.", "正在补齐插件…": "Updating required plugin…", "正在识别二维码…": "Recognizing QR code…", "正在读取、校验并安装插件包…": "Reading, verifying and installing plugin…", "正在读取插件信息 {done}/{total}": "Reading plugin information {done}/{total}", "正在读取插件列表…": "Loading plugin catalog…", "正在读取插件清单…": "Loading plugin catalog…", "正在读取插件登录方式…": "Loading plugin sign-in methods…", "正在连接…": "Connecting…", "正在重试…": "Retrying…", "正在验证…": "Verifying…", "此 OAuth 方法未声明备注名字段,账号名由插件获取;添加后可在账号设置中修改。": "This OAuth method has no declared label field. The plugin obtains the account name; you can change it in account settings after adding the account.", "此插件不是提供商插件,当前无法安装": "This is not a provider plugin and cannot be installed here.", "此方式可能需要手动提交授权回调。完成官方登录后,按共享登录桥的提示粘贴完整回调地址;不要把回调地址当作 API Key 或 Token。": "This method may require submitting the authorization callback manually. After completing the official sign-in, paste the full callback URL as instructed by the shared sign-in bridge. Do not treat the callback URL as an API Key or Token.", "此旧版登录声明无法安全映射到动态表单,请联系插件作者": "This legacy sign-in declaration cannot be safely mapped to a dynamic form. Contact the plugin author.", "此登录方式需要由共享登录桥发起": "This sign-in method must be started through the shared sign-in bridge.", "每台服务器的登录状态各自独立保存,切换后不用重新登录。地址改掉后需要重新登录。": "Each server keeps its own sign-in, so switching back does not require signing in again. Changing a server's address requires signing in again.", "每日签到及一次性任务;可能消耗智点、发送对话并创建及解散群聊": "Daily check-in and one-time tasks; may spend credits, send chats, and create and disband group chats", "每轮": "Per turn", "没有可恢复的维度明细": "No recoverable breakdown", "没有可更新的版本": "No update available", "没有找到提供商「{provider}」的账号": "No accounts found for provider \"{provider}\"", "没有找到账号「{name}」": "No account found named \"{name}\"", "没有符合筛选条件的插件": "No plugins match these filters", "没有说明": "No description", "没有近期套餐池请求,不生成验证码令牌": "No recent Start Plan requests; no verification tokens are generated.", "没给账号名": "No account name given", "注入系统提示词": "Inject system prompt", "活动": "Campaign", "浅色": "Light", "消耗该账号额度": "Spends this account's quota", "消耗额度": "Spends quota", "深色": "Dark", "添加": "Add", "添加失败": "Failed to add", "添加服务器": "Add server", "清单更新于 {time}": "Catalog updated {time}", "清空 = 回到内置默认(与「恢复默认」等价)。": "Clearing reverts to the built-in default (same as \"Restore Defaults\").", "清除失败:{error}": "Clear failed: {error}", "点「编辑」弹窗改内容;开关关掉就整段不发。": "Click \"Edit\" to change the content in a dialog; turning the switch off sends none of it.", "点击重命名": "Click to rename", "熔断": "Circuit breaker", "熔断时长(秒)": "Breaker duration (seconds)", "版本 {version} · 从 GitHub 直接下载安装包": "Version {version} · downloads the package straight from GitHub", "版本 {version} · 从网关下载安装包": "Version {version} · downloads the package from the gateway", "版本 {version} · 更新包需从 Release 页面获取": "Version {version} · get the update from the Release page", "环境变量 Key": "Environment variable key", "用一句话让我查或改本机的模型转发配置。": "Ask me in one sentence to inspect or change this machine's model routing config.", "用量详情": "Usage details", "由其他插件接管": "Managed by another plugin", "电脑端已关闭「软件版本检查」,此处只做手动检查": "Version checks are off on the desktop app, so this page only checks manually", "登录、模型调用、模型列表、余额查询和签到等功能,可能因插件实现或上游变化而不可用。": "Login, model calls, model lists, balance queries and check-ins may become unavailable depending on how the plugin is implemented or on upstream changes.", "登录指引 / 设备码授权": "Sign-in instructions / Device-code authorization", "登录支持自动完成的 OAuth/设备码和 API Key;要求手动回调的插件暂不支持。": "Supports automatic OAuth/device-code sign-in and API keys. Plugins requiring manual callbacks are not supported yet.", "登录方式说明": "Sign-in method details", "登录桥未确认账号添加完成": "The sign-in bridge has not confirmed that the account was added.", "登录面板": "Sign in", "监听 127.0.0.1": "Listening on 127.0.0.1", "直接加载兼容的 Magpie / OpenCode v1 提供商包,多个插件共用一个 Bun 进程。": "Load compatible Magpie / OpenCode v1 provider packages directly. Multiple plugins share one Bun process.", "直接说要改什么 / 查什么…(Enter 发送,Shift+Enter 换行)": "Just say what to change or check… (Enter to send, Shift+Enter for a new line)", "确定删除账号「{name}」?{note}": "Delete account \"{name}\"? {note}", "确定卸载「{name}」吗?卸载后这个包里的提供商将无法转发,也无法添加账号。账号数据本身不会被删除,重新安装后可以继续使用。": "Uninstall \"{name}\"? Its providers will no longer forward requests or accept new accounts. Account data itself is kept and works again after reinstalling.", "确定卸载「{name}」吗?对应提供商将停止转发,账号数据仍然保留,重新安装后恢复。": "Uninstall “{name}”? Its providers will stop forwarding. Account data is retained and becomes available again after reinstalling.", "确认后立即生效": "Takes effect right after confirmation", "确认并安装": "Confirm and install", "确认授权": "Confirm authorization", "社区": "Community", "社区插件": "Community plugin", "禁用会把账号移出转发队列;若这条线路没有别的可用账号,请求会直接失败。": "Disabling removes the account from the forwarding queue; if this route has no other usable account, requests will fail outright.", "移入「{name}」": "Move into \"{name}\"", "稍后": "Later", "空分组 · 点组头的 + 把菜单移进来": "Empty group · use + on the header to move menus in", "立即刷新": "Refresh now", "立即升级": "Upgrade now", "第 {current} / {total} 页": "Page {current} of {total}", "第三方": "Third-party", "等待前面的插件完成,不代表加载失败。": "Waiting for earlier plugins to finish. This is not a load failure.", "等待加载": "Waiting to load", "等待当前任务结束,插件继续服务…": "Waiting for active tasks to finish; the plugin is still serving requests…", "等待窗口": "Waiting for window", "等待脚本插件的在途请求和登录完成": "Waiting for active script requests and sign-ins to finish", "等待账号登录完成…": "Waiting for account sign-in to complete…", "等待运行环境恢复": "Waiting for runtime recovery", "等这一轮跑完…": "Waiting for this turn to finish…", "签到中心": "Check-in center", "签到及插件附带任务;可能消耗额度,具体行为由插件决定": "Check-in and bundled plugin tasks; may spend credits. The plugin determines the actions.", "签到及附带任务默认允许,实际执行遵循签到中心的开关和计划。": "Check-ins and the side tasks that come with them are allowed by default; actual execution follows the switches and schedules in the check-in center.", "粘贴 GitHub 令牌(ghp_… / github_pat_…)": "Paste a GitHub token (ghp_… / github_pat_…)", "粘贴插件要求的 JSON 对象,不要包含 provider、name、proxy 或登录流程控制字段": "Paste the JSON object required by the plugin, without provider, name, proxy or sign-in flow control fields.", "系统提示词 + 工具定义": "System prompt + tool definitions", "系统提示词已保存": "System prompt saved", "系统提示词已关闭": "System prompt turned off", "系统提示词已开启": "System prompt turned on", "统计排序": "Statistics sort order", "继续安装": "Continue installing", "缓存读取": "Cache reads", "编辑服务器": "Edit server", "编辑系统提示词": "Edit system prompt", "网关 Key": "Gateway key", "网关没有返回有效的登录方式列表,无法确认该插件的登录能力": "The gateway did not return a valid list of sign-in methods, so this plugin's sign-in capabilities cannot be confirmed.", "网关运行中": "Gateway running", "网络代理": "Network proxy", "网页提供商": "Web Providers", "网页登录(旧版声明)": "Web sign-in (legacy declaration)", "能力位决定下游看到的声明(能不能贴图、能塞多少上下文),不改上游的真实行为。": "Capability flags decide what downstream sees declared (image input, context size) without changing upstream behavior.", "脚本不是安全沙箱,可以访问网关所在电脑的文件和网络。不要安装来历不明的插件。": "Scripts are not sandboxed and can access files and the network on the gateway computer. Do not install plugins from unknown sources.", "脚本插件共用运行环境;重试会等待当前任务结束,不会删除账号或重新安装插件。": "Script plugins share a runtime. Retrying waits for current tasks to finish and does not delete accounts or reinstall plugins.", "脚本签到可能包含额外任务并消耗额度。WPS 灵犀还可能发送对话、创建及解散群聊;授权后会接入现有自动签到计划。": "Script check-in may run extra tasks and spend credits. WPS Lingxi may also send chats, create group chats and disband them. Once authorized, it joins existing automatic check-in schedules.", "自动": "Auto", "自动刷新间隔(秒)": "Auto-refresh interval (seconds)", "自动安装": "Automatic installation", "自动更新插件": "Automatically update plugins", "自动检查插件更新": "Automatically check plugin updates", "自动维护": "Automatic maintenance", "至少要保留一个分组": "At least one group must remain", "补签": "Catch-up", "补齐插件": "Update required plugin", "订阅里的节点会自动同步进下方代理池,账号即可引用。": "Nodes from subscriptions are synced into the proxy pool below, ready for accounts to use.", "订阅链接必须是 http:// 或 https:// 开头": "The subscription link must start with http:// or https://", "设备授权码:{code}": "Device authorization code: {code}", "设备码授权时,请按网关给出的指引在官方页面确认设备授权码。没有授权地址不等于失败,可能需要在网关本机客户端完成操作;请以共享登录桥返回的状态为准。": "For device-code authorization, follow the gateway's instructions to confirm the device authorization code on the official page. A missing authorization URL does not mean failure; you may need to complete the operation in a client on the gateway machine. Rely on the status returned by the shared sign-in bridge.", "设置": "Settings", "设置不可隐藏(隐藏了只能清缓存找回来)": "\"Settings\" cannot be hidden (you would have to clear storage to get it back)", "设置已生效,但写入磁盘失败(重启后会恢复原设置)": "Settings applied, but could not be saved to disk (will revert after restart)", "设置未同步": "Settings not synced", "诊断": "Diagnostics", "诊断信息": "Diagnostics", "该提供商已不在运行时目录中,请返回列表重新选择": "This provider is no longer in the runtime catalog. Return to the list and select again.", "该登录方式没有可选项,无法提交;请更新插件或联系作者": "This sign-in method has no selectable options and cannot be submitted. Update the plugin or contact its author.", "请允许安装未知来源应用后重试": "Allow installing apps from unknown sources, then try again", "请先在插件页授权签到及附带任务": "Authorize check-in and bundled tasks on the Plugins page first", "请先粘贴 GitHub 令牌": "Paste a GitHub token first", "请先选择有效的 OAuth 登录方式": "Select a valid OAuth sign-in method first.", "请在 Release 页面下载后通过 TestFlight 或 App Store 安装": "Download from the Release page, then install via TestFlight or the App Store", "请填一个分组名": "Please enter a group name", "请填写订阅名称": "Please enter a subscription name", "请填写非空的凭证 JSON 对象,且不超过 256 KiB": "Enter a non-empty credentials JSON object no larger than 256 KiB.", "请查看上方原因,稍后刷新重试。": "See the reason above and refresh again later.", "请根据不兼容原因更新插件或网关;不会要求两者版本号一致。": "Update the plugin or gateway as indicated by the compatibility error. Their version numbers do not need to match.", "请求失败": "Request failed", "请求失败:{message}": "Request failed: {message}", "请求数": "Requests", "请求日志": "Request logs", "请确认": "Please confirm", "请稍候": "Please wait", "请输入 {min}–{max} 之间的整数秒数": "Enter a whole number of seconds between {min} and {max}", "请选择 {label} 的有效选项": "Select a valid option for {label}.", "读取完成的插件会陆续显示,无需停留在此页面等待。": "Plugins appear as their information loads. You can leave this page while loading continues.", "读取插件状态失败:{error}": "Failed to read plugin status: {error}", "读取文件失败": "Failed to read the file", "读取消耗排序失败:{message}": "Could not load consumption order: {message}", "读取设置失败:{error}": "Could not load settings: {error}", "账号 / 登录出网代理": "Account / sign-in outbound proxy", "账号不在当前队列里": "The account is not in the current queue", "账号列表响应异常": "Unexpected account list response", "账号已删除": "Account deleted", "账号已在全局队列第一位": "Account is already first in the global queue", "账号排序接口不可用,请确认网关与界面已更新": "Account sorting API unavailable. Ensure both the gateway and interface are updated.", "账号登录方式": "Account sign-in methods", "趋势统计指标": "Trend metric", "趋势统计维度": "Trend dimension", "跟随系统": "System", "路由策略": "Routing strategy", "转发能力": "Forwarding", "软件版本检查设置不可用": "Software update check settings are unavailable.", "输入 / 输出": "Input / output", "输入这台网关的管理员账号与密码。": "Enter this gateway's administrator account and password.", "运行时不内置于安装包,首次安装脚本插件时自动下载并校验。": "The runtime is not bundled with the installer. It is downloaded and verified when you first install a script plugin.", "运行正常 · {url}": "Running normally · {url}", "运行状态": "Status", "还没有安装任何提供商插件包": "No provider plugin pack is installed yet", "还没有签到记录": "No check-in records yet", "还没有订阅:粘贴订阅链接,或从图片识别二维码导入。": "No subscriptions yet: paste a subscription URL, or scan a QR code from an image.", "还没有选择对话模型:先在下方选一个(或去「设置 → AI 助手」里选)。": "No chat model selected yet: pick one below (or under Settings → AI Assistant).", "这一版没有提供 Android 安装包:{reason}": "This release does not include an Android package: {reason}", "这一项已隐藏": "This item is hidden", "这一项正在显示": "This item is visible", "这个包提供的提供商(可单独停用某一家)": "Providers in this pack (each can be disabled separately)", "这个面板没有管理员,用一把已启用的 API Key 访问(在桌面端「网关 Key」页创建)。": "This panel has no admin account. Access it with an enabled API key (create one under Gateway keys on desktop).", "这会真实发起上游请求并消耗额度": "This sends a real upstream request and spends quota", "这台网关没有管理员,用一把已启用的 API Key 访问(在桌面端「网关 Key」页创建)。": "This gateway has no administrator. Use an enabled API key instead (create one on the desktop app's \"Gateway Key\" page).", "这台网关还没有管理员。设置一个账号密码,之后用它登录。": "This gateway has no administrator yet. Set an account and password, then use them to sign in.", "这是旧插件的手动兼容入口,不代表支持任意凭证或登录方式。请仅粘贴该插件明确接受的凭证 JSON;网关会交给 account.normalize 校验,不会自动推断 Token、Cookie 或 OAuth。": "This is a manual compatibility entry for legacy plugins, not support for arbitrary credentials or sign-in methods. Paste only credentials JSON explicitly accepted by the plugin. The gateway passes it to account.normalize for validation and does not infer Token, Cookie or OAuth credentials.", "这是真实的上游请求,与生产走同一条链路(会记账,报表排除)。": "This is a real upstream request over the same path as production (it is billed but excluded from reports).", "这段文本作为 system 消息排在对话最前面。工具的定义与当前配置概览由网关自动附加,不用写在这里。": "This text goes at the very front of the conversation as a system message. Tool definitions and the current config overview are appended automatically by the gateway, so don't write them here.", "连不上插件仓库,请检查网络或代理后重试": "Cannot reach the plugin repository. Check your network or proxy and try again.", "连接已有 SAP AI Core 部署:从网关本机导入凭据文件,按资源组获取模型;不创建部署或查询额度。": "Connect existing SAP AI Core deployments by importing a credential file from the gateway machine and listing models per resource group. Does not create deployments or report quotas.", "连接并保存": "Connect & save", "连续崩溃": "Repeated crashes", "连通 · {ms}ms": "Reachable · {ms}ms", "选择模型…": "Choose a model…", "通过 API Key 接入 River 对话与在线模型目录;插件不提供余额数值。": "Connect River chat and its online model catalog via an API Key. The plugin does not report a balance amount.", "通过 Magpie 原插件接入设备码登录、对话、模型目录、余额和每日签到。": "Uses the original Magpie plugin for device-code sign-in, chat, model catalogs, balance and daily check-in.", "通过社区插件接入 {providers},可在设置中管理提供商,签到计划在签到中心管理。": "Connects {providers} through a community plugin. Manage providers in settings and check-in schedules in Check-in Center.", "部分信息未能更新,已读取的插件仍可查看。": "Some information could not be updated. Previously loaded plugins remain available to browse.", "部分插件的附带任务可能消耗额度、发送对话或创建及解散群聊。": "Side tasks of some plugins may consume quota, send messages, or create and dismiss group chats.", "都不注入": "Nothing is injected", "都不注入(助手退化为纯聊天)": "Nothing is injected (the assistant falls back to plain chat)", "重启更新": "Restart & update", "重新读取登录方式": "Reload sign-in methods", "队列是一次性整表提交(后端按新顺序重编优先级),移动会连带调整其它组的相对次序。": "The queue is submitted as a whole table at once (the backend renumbers priorities in the new order), so a move also shifts the relative order of other groups.", "队列是一次性整表提交;位置越靠前,路由时越先被选中。": "The queue is submitted as a whole table at once; the earlier the position, the sooner it is picked when routing.", "限流垫底": "Rate-limit demotion", "隐藏 {name}": "Hide {name}", "隐藏分组 {name}": "Hide group {name}", "隐藏这一组": "Hide this group", "需要强制更新": "Required update", "需要网关 API Key": "Gateway API key required", "需要网关本机环境": "Requires the gateway machine's local environment", "需要补齐插件": "Plugin update required", "顺序优先": "Strict order", "首页": "Home", "高危": "High risk", "高级参数(JSON)": "Advanced options (JSON)", "默认分支": "Default branch", "默认跟随软件的正式版和 beta 关注选择;单独设置只影响日常更新,最低版本补齐按当前软件版本选择配套包。": "Release channels follow the app by default. Custom channels affect only routine updates; required plugin updates select a package for the current app version.", "默认跟随软件的自动检查和间隔。关闭自动检查后暂停插件自动更新;手动检查、安装和更新不受影响。": "Automatic checks and intervals follow the app by default. Turning off automatic checks pauses automatic plugin updates; manual checks, installation and updates remain available.", "({n} 个整组隐藏)": " ({n} groups hidden)", "(不会影响客户端登录态)": "(does not affect the client's sign-in state)", "(仅显示前 20 条,共 {n} 条)": "(showing the first 20 of {n})", "(可选)": " (Optional)", "(未指定)": "(not specified)", "(请下载与该平台对应的插件包)": "(download the pack built for this platform)", "(默认问候)": "(default greeting)", "Agent2API · 登录": "Agent2API · Sign in", "OpenAI 兼容网关 · 管理面板": "OpenAI-compatible Gateway · Admin panel", "Turnstile 加载或验证失败,请检查网络、浏览器拦截和域名配置后重试。": "Turnstile could not load or verify. Check your connection, browser blocking and hostname settings, then try again.", "Turnstile 验证超时,请重试。": "Turnstile verification timed out. Please try again.", "创建账号并进入面板": "Create account and enter panel", "密码": "Password", "当前浏览器不支持 Turnstile,请更新浏览器后重试。": "This browser does not support Turnstile. Update your browser and try again.", "我不是机器人": "I'm not a robot", "无法读取登录验证设置,请刷新页面重试": "Could not read sign-in verification settings. Refresh the page and try again.", "无法连接网关": "Cannot connect to the gateway", "无法连接网关,请确认服务已启动": "Cannot connect to the gateway. Please make sure the service is running.", "机器人校验配置已变更或不完整,请刷新页面或联系管理员。": "Bot verification settings have changed or are incomplete. Refresh the page or contact the administrator.", "登录": "Sign in", "登录后可在「网关 Key」页为 API 客户端创建密钥": "After signing in, you can create keys for API clients on the Gateway Key page", "管理员账号": "Admin account", "继续": "Continue", "至少 8 位": "At least 8 characters", "设置密码(至少 8 位)": "Set a password (at least 8 characters)", "请先勾选「我不是机器人」完成验证": "Check \"I'm not a robot\" first to complete the verification", "请填写账号与密码": "Enter the account and password", "请完成人机验证后重试": "Complete the human verification and try again", "请求失败,请重试": "Request failed. Please try again.", "请输入管理员账号与密码": "Enter the admin account and password", "重新验证": "Verify again", "首次使用:创建一个管理员账号,用于登录此面板": "First-time use: create an admin account to sign in to this panel", "验证中…": "Verifying…", "验证失败,请重试": "Verification failed. Please try again.", "验证成功": "Verified", " · 今日 {used} / {quota}": " · Today {used} / {quota}", " · 当前 {n}": " · Currently {n}", " · 本周期 {used} / {quota}": " · This period {used} / {quota}", " · 限流 {n}": " · {n} rate-limited", " 等": " etc.", "0 = 不限": "0 = unlimited", "0 = 按本家默认 {default}": "0 = provider default {default}", "30 秒 ~ 24 小时;手动查询会顺延下一轮": "30 seconds to 24 hours; a manual query postpones the next round", "7 天内到期": "Expires within 7 days", "7 天内到期 {amount}({count} 份)": "Expiring within 7 days: {amount} ({count} packs)", "7天 {count}份": "{count} packs in 7d", "7天 {n}": "{n} in 7d", "API Key": "API Key", "Accio 国内版": "Accio China edition", "Base URL": "Base URL", "Clash Verge 里还没有配置混合监听器或节点端口": "No mixed listener or node port is configured in Clash Verge", "Clash 出口:": "Clash exit: ", "Copilot 额度单位": "Copilot quota units", "NewAPI 个人访问令牌": "NewAPI personal access token", "NewAPI 用户 ID": "NewAPI user ID", "OpenAI 兼容": "OpenAI-compatible", "OpenAI 兼容填到 /v1;Anthropic 填根地址": "For OpenAI-compatible use /v1; for Anthropic use the root URL", "Qoder 中国版": "Qoder China edition", "Qoder 国际版": "Qoder International edition", "Token 刷新接口不可用,请重新打开页面": "The token refresh service is unavailable. Please reopen the page.", "Token 刷新结果未确认,请刷新后核对账号状态": "Token refresh could not be confirmed. Reload the list and check the account status.", "Token 单位": "Token unit", "Token 时": "tokens", "Token 消耗": "Token usage", "Token 规则按每个账号已有的窗口消耗判定,保存不会清零;停用或清空规则不会自动启用账号。": "Token rules use each account’s existing window usage; saving does not reset usage. Disabling or clearing rules does not enable accounts.", "Token 限制阈值必须是大于 0 的安全整数": "The Token threshold must be a positive safe integer", "Token 限额": "Token limit", "Token 限额 · 已禁用": "Token limit · Disabled", "Token 限额 · 已跳过": "Token limit · Skipped", "WorkBuddy 国内版": "WorkBuddy China edition", "WorkBuddy 国际版": "WorkBuddy International edition", "ZCode 国内版": "ZCode China edition", "ZCode 国际版": "ZCode International edition", "ZCode 套餐明细 — {name}": "ZCode plans — {name}", "bigmodel_token_production 的值": "Value of bigmodel_token_production", "{action}{who}": "{action} {who}", "{amount},另 {count} 份余量未知": "{amount}, plus {count} packs with unknown remaining amounts", "{body}({period})": "{body} ({period})", "{cond} 时 → {action}": "{cond} → {action}", "{count} 份": "{count} packs", "{count} 份仅提供比例": "{count} packs with percentage-only readings", "{count} 份单位未知": "{count} packs with unknown units", "{count} 次": "{count} calls", "{days} 天后到期": "Expires in {days} days", "{error}(不会自动改为直连)": "{error} (no automatic fallback to a direct connection)", "{error}(转发时会回退直连)": "{error} (falls back to direct when forwarding)", "{groups} 家 · 显示 {rows} 行": "{groups} providers · showing {rows} rows", "{hours} 小时后到期": "Expires in {hours} h", "{label} ×{count}": "{label} ×{count}", "{label}({count})": "{label} ({count})", "{message}(去该账号的「设置」里填上查询凭证即可)": "{message} (fill in the query credential in this account's Settings)", "{minutes} 分钟后到期": "Expires in {minutes} min", "{month}月{day}日 {clock}": "{month}/{day} {clock}", "{name} · 分组设置": "{name} · Group settings", "{name} 移到 {group} 组内第 {rank} 位": "Moved {name} to position {rank} within the {group} group", "{name} 移到第 {rank} 顺位": "Moved {name} to global position {rank}", "{name}的方向": "Direction of {name}", "{name}({parts})": "{name} ({parts})", "{name}({time} 起生效)": "{name} (takes effect at {time})", "{n} 个已计入": "{n} counted", "{n} 个查询失败": "{n} failed to query", "{n} 个模型 ▾": "{n} models ▾", "{n} 个模型限流中 · 到恢复时间自动解除": "{n} models rate-limited · clears automatically at the reset time", "{n} 个模型限流中 · 记录来自上游 429 / 限额码,到恢复时间自动解除": "{n} models rate-limited · recorded from upstream 429 / quota codes; clears automatically at the reset time", "{n} 个请求正在使用该账号(含还在下发内容的流式请求)": "{n} requests are using this account (including streaming requests still sending content)", "{n} 个读数只读到一半(读数可信但不完整)": "{n} only partially read (readable but incomplete)", "{n} 个读数没有绝对数(只给比例或无额度),未计入": "{n} have no absolute figure (percentage only or no quota), not counted", "{n} 个读数里没有可用比例,未计入": "{n} readings had no usable percentage and were not counted", "{n} 个账号 · {e} 启用 · {l} 限流": "{n} accounts · {e} enabled · {l} rate limited", "{n} 个账号 · 启用 {e}": "{n} accounts · {e} enabled", "{n} 个还没查到(未查询或正在查询)": "{n} not read yet (not queried or in progress)", "{n} 个还没查询": "{n} not queried yet", "{n} 分钟": "{n} min", "{n} 分钟前更新": "Updated {n} minutes ago", "{n} 分钟后": "in {n} min", "{n} 天前更新": "Updated {n} days ago", "{n} 天后": "in {n} days", "{n} 小时": "{n} h", "{n} 小时前更新": "Updated {n} hours ago", "{n} 小时后": "in {n} h", "{n} 秒": "{n} s", "{n} 秒前更新": "Updated {n} seconds ago", "{period}窗口": "{period} window", "{plan}({time} 领取)": "{plan} (claimed {time})", "{providers} 家提供商、共 {total} 个账号。数据仍在,只是当前没有可用的插件来执行它们。": "{providers} providers, {total} accounts. The data is still here — there is just no working plugin to run them right now.", "{reason}。该账号的登录态已被上游注销,自动刷新不会再成功,请重新登录该账号": "{reason}. The upstream has revoked this account's session; automatic refresh will never succeed again — sign in to this account again.", "{scope} {used} / {quota} Token,{countdown}重置": "{scope} {used} / {quota} tokens, {countdown} until reset", "{text}过期": "Expires {text}", "{text}过期({full})": "Expires {text} ({full})", "{time} 到期": "expires {time}", "{time} 恢复": "Resets {time}", "{time} 生效": "starts {time}", "{time} 领取": "claimed {time}", "{total} 个账号 · 启用 {enabled} · 禁用 {disabled}{limited}": "{total} accounts · {enabled} enabled · {disabled} disabled{limited}", "{tried}探测并领取官方每日登录赠送的套餐积分(到账进套餐积分,不增加福利模型 token 池)": "{tried}Probe and claim the plan points the official app gifts on daily login (they credit to plan points and do not add to the welfare model token pool)", "{unit}余量未知({count} 份)": "Remaining {unit} unknown ({count} packs)", "{verb}完成:成功 {ok} 个,失败 {fail} 个({detail}{more})": "{verb} finished: {ok} succeeded, {fail} failed ({detail}{more})", "{verb}完成:成功 {ok} 个,未变更 {unchanged} 个,跳过 {skip} 个,失败 {fail} 个": "{verb} completed: {ok} changed, {unchanged} unchanged, {skip} skipped, {fail} failed", "✅ {ok}/{total} 个出口可用": "✅ {ok}/{total} exits available", "✅ {verb}完成:共 {count} 个账号": "✅ {verb} finished: {count} accounts", "✅ 优先级已改为 {n}": "✅ Priority changed to {n}", "✅ 出口可用": "✅ Exit available", "✅ 已保存:{note}": "✅ Saved: {note}", "✅ 已启用": "✅ Enabled", "✅ 已启用 {n} 个账号": "✅ Enabled {n} accounts", "✅ 已导出 {count} 个账号文件": "✅ Exported {count} account files", "✅ 已更新 {n} 个账号的余额{suffix}": "✅ Balance updated for {n} accounts{suffix}", "✅ 已更新余额": "✅ Balance updated", "✅ 已清除 API Key(该账号现在没有凭证,转发会被跳过)": "✅ API Key cleared (the account now has no credential; forwarding will skip it)", "✅ 已清除 {model} 的限流标记": "✅ Rate-limit flag cleared for {model}", "✅ 已清除余额查询凭证": "✅ Balance query credential cleared", "✅ 已清除查询凭证": "✅ Balance credentials cleared", "✅ 已清除该账号全部限流标记": "✅ Cleared all rate-limit flags for this account", "✅ 已禁用": "✅ Disabled", "✅ 已禁用 {n} 个账号": "✅ Disabled {n} accounts", "✅ 已重新读取 Clash Verge 配置": "✅ Clash Verge config reloaded", "✅ 账号设置已保存": "✅ Account settings saved", "✅ 顺序已保存": "✅ Order saved", " 出口 IP {ip}": " Exit IP {ip}", "、": ", ", "、补官方会话头、请求体补两个占位工具(上游免费档的三道校验)。": ", adds official session headers, and adds two placeholder tools to the request body (the three checks of the upstream free tier).", "「{name}」已在「网络代理」页禁用,请先启用它或换一条": "\"{name}\" is disabled on the \"Network proxy\" page. Enable it first or pick another one.", "「{name}」开着排序规则:先关掉规则,才能手动调整组内顺序": "“{name}” has sorting rules on: turn them off before adjusting the order inside the group", "「{name}」本身": "\"{name}\" itself", "「已保存的代理」": "\"Saved proxy\"", "「网络代理」页还没有出口 —— 去那里新增,或在「订阅管理」里点「同步 Clash Verge」把 Clash 的出口导进来": "The Network proxy page has no exits yet — add one there, or click \"Sync Clash Verge\" under \"Manage subscriptions\" to import Clash's exits", "「网络代理」页还没有出口 —— 去那里添加一个 HTTP 或 SOCKS5 地址": "No proxies are saved yet. Add an HTTP or SOCKS5 address on the Network proxy page.", "「网络代理」页还没有出口 —— 去那里添加手动地址或同步 Clash Verge 的端点": "No proxies are saved yet. Add a manual address or sync Clash Verge endpoints on the Network proxy page.", "「网络代理」页里每个启用的出口轮流使用;之后新加的出口自动加入": "Every enabled exit on the Network proxy page is used in turn; exits added later join automatically", "一般不用填": "Usually left blank", "万": "10k", "上一条规则相同时才比较下一条;想优先按余额消耗,请把可用余额移到第一位。": "Each rule is used only when the preceding rules tie. Move Available balance to the top to prioritize consumption by balance.", "上次成功查询:{time}": "Last successful query: {time}", "上游拒绝了本次余额查询": "The upstream rejected this balance query", "上游提供了补充说明;未显示原始正文": "The upstream supplied additional notes; the original body is not shown", "上游暂时限制余额查询,请稍后重试": "The upstream is temporarily limiting balance queries. Retry later.", "上游未给总量,画不出剩余比例": "The upstream gave no total, so the remaining ratio cannot be drawn", "上游未返回可识别额度窗口": "The upstream returned no recognizable quota windows", "上游本来不要凭证时(本地 Ollama、OpenCode Zen 的免费档)勾上这一项:账号会被正常选路;只把 Key 留空": "Check this when the upstream does not need credentials (local Ollama, the OpenCode Zen free tier): the account is still routed normally; just leave the Key blank", "上游没有提供此额度的分桶用量,当前使用本地估算保护;在其他客户端产生的消耗不会计入。": "The upstream does not provide usage for this quota bucket, so protection uses a local estimate. Usage in other clients is not counted.", "上游的 API Key。留空 = 不修改(改凭证不会换账号 id);要清掉已配的凭证用右边的「清除」": "The upstream API Key. Leave blank = no change (editing a credential does not change the account id); to remove a configured credential use \"Clear\" on the right", "上游的余额读数里没有这个套餐的额度桶,剩余量读不到;余额列显示的是套餐发放的权益额度,不是剩余量": "The upstream balance reading has no quota bucket for this plan, so the remaining amount is unavailable; the balance column shows the plan's granted entitlement, not the remaining amount", "上游返回 {status}": "Upstream returned {status}", "上游限制 · 已禁用": "Upstream restriction · Disabled", "上游额度无上限": "The upstream quota is unlimited", "上面所有规则都相同时,保持你拖出来的顺序": "When every rule above ties, keep the order you dragged", "不到 1 分钟": "under a minute", "不到 1 分钟到期": "Expires in under 1 min", "不可用:{error}": "Unavailable: {error}", "不足 {n}": "Less than {n}", "不限": "Unlimited", "与队列里的上一个账号交换优先级(可能是另一家的账号)": "Swap priority with the previous account in the queue (may be an account from another provider)", "与队列里的下一个账号交换优先级(可能是另一家的账号)": "Swap priority with the next account in the queue (may be an account from another provider)", "严格按消耗顺序使用账号需选择「顺序优先」;轮询、会话粘性及账号保护仍按原设置生效。": "Select Priority order to use accounts strictly in consumption order. Rotation, session stickiness and account protection keep their existing settings.", "个": "total", "个 · 共": "of", "个人": "Personal", "主凭证没有固定到期时刻,到期由网关自动续期或本来就不会过期": "The primary credential has no fixed expiry — the gateway renews it automatically, or it does not expire at all", "主机": "Host", "亿": "100M", "仅将优先级调整到全局第一位,不改变启用状态": "Only moves priority to first in the global queue; does not change the enabled state", "仅按手动顺序": "Manual order only", "仅统一修改现有规则的开关,保留阈值、动作和重置方式;不改变账号的启用状态。": "Only changes existing rule switches; thresholds, actions, reset modes, and account enabled states are kept.", "仅账号管理": "Account management only", "仅跳过命中条件的模型,其他模型仍可转发;点击查看限制器": "Only models whose conditions are met are skipped; other models can still forward requests. Click to view the limiter.", "今天 {clock}": "today {clock}", "今天 {time}": "today {time}", "今天到期 {amount}({count} 份)": "Expiring today: {amount} ({count} packs)", "今天还没有领过:上面「可领取的套餐」里逐份点「领取」即可": "Nothing claimed today yet: just click \"Claim\" on each plan under \"Claimable plans\" above.", "今天(北京时间 {day})已由官方确认到账 {n} 项;领到的是套餐赠送积分,不增加福利模型的 token 池;按自然日重置,明天可再领": "The official side confirmed {n} credits today (Beijing time {day}); they are plan gift points and do not add to the welfare model token pool; resets per calendar day, so you can claim again tomorrow", "今天(北京时间 {day})已试过 {n} 次但官方尚未确认到账,": "Tried {n} times today (Beijing time {day}) but the official side has not confirmed the credit yet. ", "今天(北京时间)已领取 {n} 份:{plans}": "Claimed today (Beijing time): {n} — {plans}", "今天(本地 0 点重置)": "Today (resets at midnight local)", "今日剩 {n} 分钟": "{n} min left today", "今日剩 {n} 小时": "{n} h left today", "今日发放": "Granted today", "今日已用": "Used today", "今日已领": "claimed today", "代理": "Proxy", "代理不可用:{error}": "Proxy unavailable: {error}", "代理不可用:{error}(不会自动改为直连);选「自定义代理…」去修改": "Proxy unavailable: {error} (no automatic direct connection); choose \"Custom proxy…\" to fix it", "代理不可用:{error}(转发时会回退直连);选「自定义代理…」去修改": "Proxy unavailable: {error} (falls back to direct when forwarding); choose \"Custom proxy…\" to fix it", "代理列表响应异常({type})": "Unexpected proxy list response ({type})", "代理列表读取失败(重试中)": "Failed to load the proxy list (retrying)", "代理已更新": "Proxy updated", "代理异常": "Proxy error", "代理方式": "Proxy mode", "代理池响应异常({type})": "Unexpected proxy pool response ({type})", "代理端口必须是 1-65535 的整数": "Proxy port must be an integer from 1 to 65535", "以下 {count} 个账号不支持余额查询,本次会跳过:{names}": "These {count} accounts do not support balance queries and will be skipped: {names}", "企业": "Enterprise", "优先级": "Priority", "优先级 {priority} 已被同一提供商的「{name}」占用,请换一个数值": "Priority {priority} is already taken by \"{name}\" in the same provider; choose another value", "优先级必须是数字": "Priority must be a number", "优先级未保存:{message}": "Priority not saved: {message}", "会员共享额度": "Shared membership quota", "会员共享额度不是本账号独立额度,不与其他窗口相加;未证实团队独立额度": "Shared membership quota is not exclusive to this account and is not added to other windows. Separate team quota is unconfirmed.", "会被当成「未配置凭证」而跳过。": ", and it is treated as \"no credential\" and skipped.", "伪装 OpenCode 官方客户端": "Emulate the official OpenCode client", "伪装 OpenCode 官方客户端(OpenCode Zen 免费档要它才放行)": "Emulate the official OpenCode client (the OpenCode Zen free tier requires this to let traffic through)", "余量 {value}": "Remaining {value}", "余额": "Balance", "余额 < {threshold}": "Balance < {threshold}", "余额不足": "Low balance", "余额不足 · 已跳过": "Low balance · Skipped", "余额低于": "Balance below", "余额低于阈值时的提示": "Warn when balance drops below a threshold", "余额低于阈值,转发时会跳过该账号(余额回升自动恢复)": "Balance is below the threshold; forwarding skips this account (recovers automatically when the balance rises)", "余额低于限制器的阈值,转发时会跳过该账号(余额回升自动恢复)": "Balance is below the limiter threshold; forwarding skips this account (recovers automatically when the balance rises)", "余额列读数的自动刷新;也是「限制器」余额规则的数据来源。": "Auto-refreshes the balance column reading; also the data source for the Limiter's balance rules.", "余额响应为空": "Empty balance response", "余额大优先": "Higher balance first", "余额小优先": "Lower balance first", "余额已更新": "Balance updated", "余额查询凭证": "Balance query credential", "余额查询凭证已失效,请刷新查询登录态": "The balance-query credential has expired. Refresh the query sign-in state.", "余额查询失败:{message}": "Balance query failed: {message}", "余额查询接口不可用,请更新网关后重试": "Balance query is unavailable. Update the gateway and try again.", "余额查询接口返回异常": "The balance query returned an invalid response.", "余额查询方案:{label}": "Balance query scheme: {label}", "余额沿用现有口径;Token 按重置方式内的累计消耗判定(切换类型会清空阈值)": "Balance keeps its existing basis; Token is judged by cumulative usage within the reset window (switching types clears the threshold)", "余额详情": "Balance details", "使用套餐": "Plan in use", "使用最近一次成功查询的总余额,随余额刷新调整;查询失败保留上次读数,不额外增加查询频率。": "Uses the total balance from the last successful query and updates as balances refresh. Failed queries retain the previous reading; query frequency is unchanged.", "保存失败:{error}": "Save failed: {error}", "保存条件": "Save condition", "保存规则": "Save rule", "保留 {n} 个账号": "Keeps {n} accounts", "保留各账号原有规则,只追加下面的规则;完全相同的规则不会重复添加。": "Keeps each account’s existing rules and appends the rules below; identical rules are not added twice.", "修改代理": "Change proxy", "停止旧查询,按当前配置重新查询余额": "Stop the previous query and check the balance using the current settings", "停用全部规则": "Disable all rules", "免费版": "Free", "全局一条队列:数值越小越先用,不分提供商": "One global queue: lower numbers are tried first, regardless of provider", "全局唯一:所有提供商的账号都不能重号,数值越小越先用": "Globally unique: no two accounts across all providers may share a number; lower numbers are tried first", "全局队列": "Global queue", "全局队列第 {position} 位,共 {total} 位": "Position {position} of {total} in the global queue", "全选 / 取消全选当前筛选结果(与批量栏同一个选择)": "Select / deselect all current filter results (the same selection as the batch bar)", "全选当前筛选结果({n} 个)": "Select all filtered ({n})", "全部代理节点(推荐)": "All proxy nodes (recommended)", "全部启用中的账号将被{what}": "This will {what} all enabled accounts", "全部启用({n})": "Enable all ({n})", "全部清除": "Clear all", "全部禁用({n})": "Disable all ({n})", "全部({n})": "All ({n})", "共有 {n} 个账号暂未显示": "{n} accounts are not shown", "关闭则不参与转发(余额查询照常,见「查询设置」)": "When off, the account takes no part in forwarding (balance queries still run — see \"Query settings\")", "关闭后,该账号转发失败时返回本次错误,不再顺延其他账号。禁用、无凭证和限制器等保护仍生效。": "When off, forwarding failures on this account return the error without switching to another account. Disabled-account, missing-credential, and limiter protections still apply.", "关闭自动查询后,余额限制器只能使用上次读数;手动查询仍可用。": "With auto-query off, balance limiters use the last reading; manual queries remain available.", "内消耗 ≥": "usage ≥", "再领一次": "Claim again", "冷却进度 {percent}%": "Cooldown progress {percent}%", "冻结余额": "Frozen balance", "凭证与套餐": "Credential & plan", "凭证已过期,转发时会先刷新": "Credential expired; it is refreshed before forwarding", "凭证已过期;能否续期取决于登录方式,本机引用需由原客户端处理": "Credential expired; renewal depends on the sign-in method. Local references must be handled in the original client", "出口": "Exit", "出网代理": "Outbound proxy", "分窗口额度": "Quota by window", "分组设置": "Group settings", "分钟": "minutes", "刚刚更新": "Updated just now", "删除各账号的全部限制规则,执行前会再次确认。": "Removes every account’s limiter rules; confirmation is required before running.", "删除提供商": "Delete provider", "删除组": "Delete group", "删除账号": "Delete account", "删除这条账号记录(不会影响客户端自己的登录态;之后可再点「导入桌面端登录态」加回来)": "Delete this account record (it does not affect the client's own login state; you can add it back later with \"Import desktop login state\")", "删除选中的账号": "Delete selected accounts", "到恢复时间后自动解除,无需手动操作": "Clears automatically at the reset time; no manual action needed", "到期 {date}": "Expires {date}", "到期 {time}": "Expires {time}", "到期 近→远": "Expiry near→far", "到期 远→近": "Expiry far→near", "到期时间": "Expiry time", "刷新 Token": "Refresh token", "刷新 Token 完成:成功 {ok} 个,跳过 {skip} 个,失败 {fail} 个": "Token refresh complete: {ok} succeeded, {skip} skipped, {fail} failed", "刷新 Token:已处理 {completed}/{total} 个,当前账号:{name}": "Refreshing tokens: {completed}/{total} processed, current account: {name}", "刷新列表": "Refresh list", "刷新套餐与额度": "Refresh plans and quotas", "刷新账号列表失败,当前仍显示上一次成功读取的数据:{message}": "Failed to refresh accounts. The last successfully loaded data is still shown: {message}", "刷新账号列表失败:{message}": "Failed to refresh accounts: {message}", "剩 {left} / {total}{unit}": "{left} / {total}{unit} left", "剩 {n} 分钟": "{n} min left", "剩 {remaining}": "{remaining} left", "剩 {remaining} / {total}": "{remaining} / {total} left", "剩不到 1 分钟": "Less than 1 min left", "剩余 {percent}%": "{percent}% left", "剩余比例": "Remaining percentage", "剩余额度": "Remaining quota", "加载异常": "Load failed", "北京时间(UTC+8)": "Beijing time (UTC+8)", "协议": "Protocol", "即将到期 {count} 份": "{count} packs expiring soon", "即将过期 {n}": "{n} expiring soon", "历史余额,尚未按新配置验证": "Previous balance, not yet verified with the new settings", "原代理来源已下线,请选择已保存的代理、自定义地址或直连": "The previous proxy source has been discontinued. Choose a saved proxy, a custom address or a direct connection.", "去「插件」页": "Open Plugins", "去「插件」页启用": "Enable on the Plugins page", "去「插件」页安装": "Install on the Plugins page", "去启用": "Enable", "去安装": "Install", "又不勾": "without checking it", "取消余额查询": "Cancel balance query", "取消查询": "Cancel query", "取消查询失败:{message}": "Failed to cancel query: {message}", "取消选择": "Deselect", "另有 {n} 个已勾选账号被当前筛选隐藏,仍会参与操作": "{n} selected accounts are hidden by the current filter but still take part", "另有 {n} 个账号因提供商插件未就绪,暂未显示": "{n} more accounts are hidden because their provider plugins are not ready", "只修改本次选择的设置,不影响备注、凭证、转发顺序或其他设置。": "Only changes the chosen settings; labels, credentials, forwarding order, and other settings are kept.", "只比较同一家、同单位的数值余额;未知、比例和无限额度不作为零余额,有明确余额的账号优先。": "Only numeric balances from the same provider and in the same unit are compared. Unknown, percentage and unlimited quotas are not treated as zero; accounts with known balances come first.", "只重试临时故障;次数与整轮时间上限任一用尽即停止,凭证错误不重试。": "Only temporary failures are retried. Stops when either the retry count or overall time limit is reached. Credential errors are not retried.", "可添加多条;同类规则也允许并存(例如一条按余额、两条不同重置方式的 Token)": "You can add several; rules of the same kind may coexist (for example one balance rule and two Token rules with different reset modes)", "可用 {total}": "{total} available", "可用 {value}": "Available {value}", "可用 {value} {unit}": "{value} {unit} available", "可用余额": "Available balance", "可用合计": "Total available", "可用最低": "Lowest available", "可留空:新版请求头只认令牌;旧版会把用户 ID 放进 New-Api-User 头": "Optional: newer builds only use the token; older ones put the user ID in the New-Api-User header", "可领取的套餐": "Claimable plans", "各窗口独立限制请求,不相加为总余额。": "Each window limits requests independently; they do not add up to a total balance.", "同提供商内暂无其他账号占用优先级": "No other accounts in this provider use a priority", "同提供商已占用:{names}": "Taken in this provider: {names}", "名称": "Name", "后续加入": "Coming later", "含 {n} 个不限额度账号,合计记为 ∞": "includes {n} unlimited account(s); total shown as ∞", "启动中…": "Starting…", "启用全部规则": "Enable all rules", "启用插件包后自动回来": "Enable the plugin pack and they return automatically", "启用状态": "Enabled status", "启用该规则": "Enable this rule", "启用该账号": "Enable this account", "启用这一组里的全部账号(含被筛选隐藏的)": "Enable every account in this group (including ones hidden by filters)", "启用这家提供商后自动回来": "Enable this provider and they return automatically", "周期": "Period", "周期 Token": "Period tokens", "周期单位": "Period unit", "命中条件的模型": "Models matching the conditions", "商汤日日新控制台的登录密码": "SenseNova console login password", "商汤日日新控制台的登录账号": "SenseNova console login account", "固定兜底,不受开关影响": "Fixed fallback, not affected by the toggles", "固定周期": "Fixed period", "在 NewAPI 站点「个人设置」里生成的访问令牌": "Access token generated under \"Personal settings\" on the NewAPI site", "在列表里拖:拖分组带调整整组顺位,拖行首把手调整组内先后(顺序由拖拽表达,不再填数字)": "Drag in the list: drag a group band to reorder whole groups, drag a row handle to reorder within the group (order is expressed by dragging — no more typing numbers)", "在账号设置的「基本」分组里设置该账号同时最多处理的请求数": "Set the maximum number of requests this account can handle at once under \"Basic\" in account settings", "地址与端口由「网络代理」页管理:那边改一次、测一次,所有引用它的账号一起生效": "Address and port are managed on the Network proxy page: change and test them once there, and every account referencing them updates together", "基本": "Basic", "填入系统代理": "Fill from system proxy", "备注名 / 启用 / 代理": "Label / enable / proxy", "备注名 {name}": "Label {name}", "备注名不能为空": "Label cannot be empty", "备注名已更新": "Label updated", "复制当前设置": "Copy current settings", "复制自账号": "Copy from account", "失败 {count} 个:": "{count} failed:", "失败后允许换号": "Allow account switching after failure", "失败重试次数": "Retries after failure", "失败重试次数必须是 0~{max} 的整数": "Retry count must be an integer from 0 to {max}", "套餐 {name}": "Plan {name}", "套餐实例不能跨账号复制,请改用通用额度或本地保护条件": "Plan instances cannot be copied between accounts. Use a general quota or local protection condition instead.", "套餐尚未生效或已经到期": "The plan is not active yet or has expired", "套餐池": "Plan pool", "套餐池的推理端点要求每条请求带一个阿里云验证码令牌;令牌由本应用在后台静默铸造,界面关闭时无法铸造": "The plan-pool inference endpoint requires an Aliyun CAPTCHA token on every request; tokens are minted silently by this app in the background, and cannot be minted while the UI is closed", "套餐池(Start Plan)": "Plan pool (Start Plan)", "套餐池(Start Plan)— 走 zcode.z.ai 端点,消耗 ZCode 套餐池的额度(新用户体验额度 / 活动领取)": "Plan pool (Start Plan) — uses the zcode.z.ai endpoints and the ZCode plan-pool quota (new-user trial quota / event grants)", "套餐积分的重置日期": "Reset date for plan points", "存在延迟计量信息,无法据此推算当前余额": "Delayed metering information cannot be used to infer the current balance", "它会改写请求体": "It rewrites the request body", "官方限时活动": "Official limited-time event", "实际阈值:{value} Token": "Actual threshold: {value} tokens", "对话 token": "Chat tokens", "对话请求": "Chat requests", "导出文件包含登录凭证,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "Exported files contain credentials that can be used to sign in. Keep them safe; do not share them or upload them to a public location.", "导出未返回结果": "The export returned no result.", "导出本组全部账号,每个账号一个 JSON 文件(含被筛选隐藏的)": "Export every account in this group as a separate JSON file, including accounts hidden by filters", "导出本组账号": "Export accounts in this group", "将作用于以下账号": "Applies to the following accounts", "将用草稿中的 {rules} 条规则替换 {count} 个账号的全部限制规则,原有规则不会保留。确定继续?": "Replace all limiter rules of {count} accounts with the {rules} draft rules? Existing rules will not be kept.", "将这个账号及其登录凭证保存为单独的 JSON 文件": "Save this account and its credentials as a separate JSON file", "小时": "hours", "小浣熊": "Raccoon", "尚未查询该账号的余额": "This account's balance has not been queried yet", "尝试领取": "Try claiming", "展开": "Expand", "展开全部": "Expand all", "展开全部分组": "Expand all groups", "展开或收起(默认收起)": "Expand or collapse (collapsed by default)", "展开这一组": "Expand this group", "已保存的代理": "Saved proxy", "已停用": "Disabled", "已发起 {count} 个账号文件的下载,请在浏览器下载列表确认": "Started downloads for {count} account files. Check your browser's downloads to confirm.", "已取消查询": "Query cancelled", "已启用 {name}": "Enabled {name}", "已启用自动排序,组内拖动已锁定;关闭全部规则可恢复原手动顺序。": "Automatic sorting is enabled and dragging within the group is locked. Turn off all rules to restore the original manual order.", "已启用,点击禁用(不参与转发)": "Enabled; click to disable (excluded from forwarding)", "已在全局队列第一位": "Already first in the global queue", "已复制到草稿,执行后才会应用到所选账号": "Copied to the draft; applies to the selected accounts only after running", "已导出 {count} 个账号文件,{failed} 个未导出:{reason}": "Exported {count} account files; {failed} could not be exported: {reason}", "已是首选": "Already first", "已暂停验证,需要时请手动重试": "Verification paused. Retry manually when needed.", "已更新 {ok}/{total} 个账号,{failed} 个失败": "Updated {ok}/{total} accounts, {failed} failed", "已查询": "Queried", "已用 {used}": "{used} used", "已用 {used} / 共 {total}": "Used {used} / {total}", "已用完 / 已过期": "Used up / Expired", "已用比例": "Used percentage", "已用额度": "Used quota", "已禁用": "Disabled", "已禁用 {name}": "Disabled {name}", "已禁用,点击启用": "Disabled; click to enable", "已筛选 {n} 项": "{n} shown", "已被「{name}」占用": "Taken by \"{name}\"", "已触发": "Triggered", "已触发 · 账号已禁用": "Triggered · Account disabled", "已设为首选": "Set as first", "已设置": "Configured", "已跳过{current}": "Skipped{current}", "已跳过{usage}{countdown}": "Skipped{usage}{countdown}", "已达上限{usage}": "At limit{usage}", "已过期": "Expired", "已过期({time})": "Expired ({time})", "已选": "Selected", "已配置,留空则不修改": "Configured; leave blank to keep", "已限流": "Rate-limited", "已领到、还没到生效时间的套餐(生效后余额列会按它显示):\n{lines}": "Claimed plans that have not taken effect yet (the balance column shows them once they do):\n{lines}", "并发上限": "Concurrency limit", "并发上限 0~{max};CodeArts 等有默认值的家填 0 即按本家默认;达到上限的账号会被跳过、请求转给其他账号": "Concurrency limit 0–{max}; for providers with a default (e.g. CodeArts), 0 means that default; accounts at the limit are skipped and requests go to other accounts", "并发上限 0~{max};达到上限的账号会被跳过、请求转给其他账号": "Concurrency limit 0–{max}; accounts at the limit are skipped and requests go to other accounts", "并发上限 0~{max};达到上限的账号跳过、请求转给其他账号(原列表 ⋯ 菜单的「并发上限」入口已并入这里)": "Concurrency limit 0–{max}; accounts at the limit are skipped and requests go to other accounts (the \"Concurrency limit\" entry from the list's ⋯ menu is now here)", "并发上限 填 0 即按本家默认 {default};填 1 或 2 就按填的算,更大的数会被本家上限截断(原列表 ⋯ 菜单的「并发上限」入口已并入这里)": "0 uses the provider default ({default}); 1 or 2 are honoured as entered, larger values are capped by the provider limit (the \"Concurrency limit\" entry from the list's ⋯ menu is now here)", "并发上限必须是 0~{max} 的整数": "Concurrency limit must be an integer from 0 to {max}", "并发上限:{value}": "Concurrency limit: {value}", "开启后,网关按 OpenCode 官方 CLI 的形状发请求:没填 Key 的账号用匿名凭证": "When on, the gateway sends requests in the shape of the official OpenCode CLI: for accounts with no Key it uses anonymous credentials", "开始 {time}": "Starts {time}", "当": "When", "当前不符合资格": "Currently ineligible", "当前不需要验证码令牌": "CAPTCHA tokens are not required right now", "当前代理不可用,请重新选择": "The current proxy is unavailable. Choose another proxy.", "当前代理不可用:{error}(不会自动改为直连)": "Current proxy unavailable: {error} (no automatic fallback to a direct connection)", "当前代理不可用:{error}(转发时会回退直连)": "Current proxy is unavailable: {error} (falls back to direct when forwarding)", "当前余额 {n};与余额列同一数字口径,严格小于才触发(等于阈值仍可用)": "Current balance {n}; same reading as the balance column — the rule triggers only when strictly below it (equal to the threshold is still usable)", "当前可手动调整组内顺序。": "You can currently reorder accounts in this group manually.", "当前可用 ∞(不参与余额不足判定)": "Currently ∞ available (excluded from the low-balance check)", "当前客户端不支持逐账号导出,请更新客户端": "This client does not support individual account exports. Please update it.", "当前已经是默认规则": "This is already the default rule set", "当前排序规则:{rules}。点击调整": "Current sorting: {rules}. Click to adjust", "当前未发现本期活动,不代表账号不符合资格": "No current events were found. This does not mean the account is ineligible.", "当前没有任何模型处于限流中": "No models are currently rate-limited", "当前没有可领取的套餐(活动期内每天发一份,明天可再领)": "No claimable plans right now (one is issued each day during the event; you can claim again tomorrow)", "当前没有限流中的模型。": "No models are currently rate-limited.", "当前筛选下 {n} 个账号的百分比读数不能相加,取最低的剩余比例(随筛选、搜索变化,不受分页影响)": "Percentage readings for the {n} accounts under the current filter cannot be added; this shows the lowest remaining percentage (changes with filters/search, unaffected by paging)", "当前筛选下 {n} 个账号的额度概览(随筛选、搜索变化,不受分页影响)": "Quota overview for the {n} accounts under the current filter (changes with filters and search, unaffected by paging)", "当前筛选下没有账号": "No accounts match the current filters", "当前筛选条件下没有账号": "No accounts match the current filter", "当前网关不支持余额排序,请先更新网关": "This gateway does not support balance sorting. Update the gateway first.", "当前规则:{rules}。": "Current rules: {rules}.", "当前规则:{rules}。自动排序生效时,组内拖动把手会锁定;关掉全部规则即回到手动顺序。": "Current rules: {rules}. While auto-sort is active the drag handle inside the group is locked; turn every rule off to go back to manual order.", "当前视图不能调整组顺位:{reason} 之后再拖动": "Group order cannot be changed in this view: clear {reason} first, then drag", "当前钩子仅提供套餐与周期,未提供余额数值": "The current hook provides only plan and period information, not a numeric balance", "当前:{label}(Clash Verge 直接引用);可在「网络代理」页同步端点后改选": "Current: {label} (direct Clash Verge reference). You can sync endpoints on the Network proxy page and select one instead.", "当前:{label}(未经过代理池 —— 可在「网络代理」页把出口同步进池后来这里改选)": "Current: {label} (not via the proxy pool — sync the exit into the pool on the Network proxy page to select it here)", "当前:{label}(未经过代理池 —— 可在「网络代理」页添加相同地址后来这里改选)": "Current: {label} (not using the proxy pool; add the same address on the Network proxy page, then select it here).", "当前:{label}(每条请求换一个出口);「自定义代理…」打开完整设置": "Current: {label} (a different exit per request); \"Custom proxy…\" opens the full settings", "当前:{label};选项来自「网络代理」页;「自定义代理…」打开完整设置": "Current: {label}; options come from the Network proxy page; \"Custom proxy…\" opens the full settings", "当前:{value}": "Current: {value}", "待定": "TBD", "待生效": "Pending", "待生效 {n} 份": "{n} pending", "待生效 {time}": "Effective from {time}", "必填": "Required", "必填;留空 = 不修改,清除用右边的按钮": "Required; leave empty to keep the current one, use the button on the right to clear", "总剩余 {total} · 套餐 {plan} · 奖励 {bonus}": "Total left {total} · plan {plan} · bonus {bonus}", "总积分": "Total points", "总积分是当前可用积分的汇总,与余额列一致;不重复累加汇总行,不包含 Token、次数或其他单位的额度。": "Total points is the aggregate of currently available points, matching the balance column. Summary rows are not counted twice, and tokens, request counts, and quotas in other units are excluded.", "总量 {value}": "Total {value}", "恢复时间未知": "Reset time unknown", "恢复默认:仅开启最快到期优先": "Restore defaults: earliest expiry first only", "恢复默认:仅按手动顺序": "Restore defaults: manual order only", "恢复默认:最快到期优先,账号添加时间关闭": "Restore defaults: soonest expiry first, added-time sorting off", "我的套餐": "My plans", "或": "OR", "所有提供商都有这个字段": "Every provider has this field", "所选账号的各周期:{list}": "Selected account's periods: {list}", "手动添加": "Manual entry", "打开批量操作弹窗,并预选这一组的账号(改代理等动作在弹窗里挑参数)": "Opens the bulk-operations dialog with this group's accounts preselected (pick parameters like the proxy inside the dialog)", "执行中…": "Running…", "执行({action})": "Run ({action})", "批量动作": "Batch action", "批量操作 · 已选 {count} 个账号": "Batch operation · {count} accounts selected", "批量操作失败:{error}": "Batch operation failed: {error}", "批量操作已保存,但列表刷新失败:{error}": "Bulk changes were saved, but the list failed to refresh: {error}", "批量操作接口不可用,请重新打开页面": "Bulk operation service is unavailable; reopen the page", "批量操作未返回结果,请刷新后确认状态": "No result returned for the bulk operation; refresh to confirm the state", "批量操作本组": "Bulk operations for this group", "批量操作结果不完整,请刷新后核对所选账号": "The bulk operation returned incomplete results. Refresh and check the selected accounts.", "批量操作结果未确认,请刷新后核对设置": "The bulk changes could not be confirmed. Refresh and check the settings.", "批量规则按每个账号分别判定,不合并余额或 Token 用量。": "Bulk rules are evaluated separately for each account; balances and Token usage are not combined.", "把每页调回「全部」": "Set the page size back to \"All\"", "折叠": "Collapse", "折叠全部": "Collapse all", "折叠全部分组(只留组头)": "Collapse all groups (keep only the group headers)", "折叠这一组": "Collapse this group", "拖动调整列宽(双击还原)": "Drag to resize the column (double-click to reset)", "拖动调整整组顺序": "Drag to reorder whole groups", "拖动调整组内顺序": "Drag to reorder within the group", "按上游额度查询的读数判定;模型共用同一个额度池时,选择模型不会拆分该池余额。": "Evaluated using the upstream quota reading. Selecting models does not split the balance of a shared quota pool.", "按优先级从上到下比较,勾选的项才参与": "Compared top to bottom; only checked rules take part", "按住拖动,调整这一家的组顺位(整组一起动)": "Hold and drag to change this provider's group position (the whole group moves together)", "按住拖动,调整这个账号在本组内的顺序": "Hold and drag to change this account's order within its group", "按总积分设置限制": "Limit by total points", "按提供商筛选账号": "Filter accounts by provider", "按最低剩余比例选择账号,所有周期均来自同一账号": "Selects the account with the lowest remaining percentage; all periods come from that account", "按未显示原因筛选": "Filter by reason", "按模型": "Per model", "按每日或短周期实际可用额度最低的账号展示,所有周期均来自同一账号": "Shows the account with the lowest effective daily or short-window quota; all periods come from that account", "按规则限制该账号参与转发:没有规则(或全部停用)= 不限制;跳过档自动恢复,禁用档需手动启用。": "Limit this account's participation in forwarding with rules: no rules (or all off) = no limit; skip rules recover automatically, disable rules need manual re-enabling.", "按账号总可用余额比较,不重复累加积分明细": "Compare total available account balances without adding credit details again", "按账号最早到期、且还有剩余的积分包比较": "Compares each account by its earliest credit pack that still has balance and has not expired", "排序": "Sorting", "提供商已停用": "Provider disabled", "提供商显示名,1~{max} 个字符": "Provider display name, 1–{max} characters", "提供商:{name}": "Provider: {name}", "提高优先级": "Raise priority", "插件包已停用": "Plugin pack disabled", "插件已启用但加载失败": "The plugin is enabled but failed to load", "插件未加载": "Plugin not loaded", "插件未安装": "Plugin not installed", "搜索": "Search", "搜索账号": "Search accounts", "搜索账号 / 邮箱 / 备注": "Search account / email / note", "操作失败:{message}": "Operation failed: {message}", "收起": "Collapse", "改动即时生效": "Changes apply immediately", "改协议 / Base URL 会改变它们的转发方式,正在进行的请求可能失败;模型清单与映射在「模型管理」页。": "Changing the protocol / Base URL changes how they forward, and in-flight requests may fail; the model list and mapping are on the Model management page.", "数值越小越先用;": "Lower numbers are tried first; ", "数值越小越先用;{hint}": "Lower numbers are tried first; {hint}", "整个账号": "Entire account", "整轮查询时限": "Overall query timeout", "整轮查询时限必须是 15~180 秒的整数": "The overall timeout must be an integer from 15 to 180 seconds.", "新账号落到组首 / 组尾": "New accounts go to the top / bottom", "旗舰": "Pro", "无上限 · 已用 {used}": "Unlimited · {used} used", "无上限按日计(上游到达上限后仍继续计数,超额如实显示)": "Unlimited, counted daily (counting continues after the upstream limit is reached, and the overage is shown as-is)", "无代理(直连)": "No proxy (direct)", "无数据": "No data", "无法拖动:已启用自动消耗规则({rules})。请先在「消耗顺序」中关闭这些规则,再手动调整。": "Cannot drag while automatic consumption rules are enabled ({rules}). Turn them off under Consumption order before reordering manually.", "无法拖动:当前已按积分到期时间和账号添加时间自动排序。请先在「消耗顺序」中关闭这两项规则,再手动调整。": "Cannot drag: accounts are automatically sorted by credit expiry and added time. Turn off both rules under Consumption order before reordering manually.", "无法拖动:当前已按积分到期时间自动排序。请先在「消耗顺序」中关闭该规则,再手动调整。": "Cannot drag: accounts are automatically sorted by credit expiry. Turn off this rule under Consumption order before reordering manually.", "无法拖动:当前已按账号添加时间自动排序。请先在「消耗顺序」中关闭该规则,再手动调整。": "Cannot drag: accounts are automatically sorted by added time. Turn off this rule under Consumption order before reordering manually.", "无福利额度": "No welfare quota", "既有 Clash Verge 直接引用继续可用;也可在「网络代理」页同步端点,再改选「已保存的代理」。": "Existing direct Clash Verge references remain available. You can also sync endpoints on the Network proxy page and switch to Saved proxies.", "旧数据导入": "Legacy import", "旧版 / 定制站点才需要,新版可留空": "Only older / custom sites need it; leave empty on newer ones", "时": " ", "明天 {clock}": "tomorrow {clock}", "明天 {time}": "tomorrow {time}", "明天到期": "Expires tomorrow", "明细": "Details", "昵称 {name}": "Nickname {name}", "显示账号名": "Show name", "暂无可查询余额的账号": "No accounts with a queryable balance", "暂无可比较余额;查到同单位的数值后自动生效,比例与无限额度不参与": "No comparable balances yet. Sorting applies once numeric balances in the same unit are available; percentages and unlimited quotas are excluded.", "暂无可用积分信息": "No credit information is currently available", "暂无数据:先查询一次余额,之后会自动按到期排序": "No data yet: query the balance once and expiry sorting takes over automatically", "暂无数据:先查询一次余额,可按需启用到期排序": "No data yet: query the balance once; enable expiry sorting if needed", "暂无读数": "No reading available", "暂无账号,请点击右上角「添加账号」": "No accounts yet — click \"Add account\" in the top right", "暂无额度信息": "No quota information", "更多操作": "More actions", "更多设置": "More settings", "更新于 {time}": "Updated {time}", "更新失败": "Update failed", "替换全部规则": "Replace all rules", "替换选中账号的限制规则": "Replace selected accounts’ limiter rules", "最快到期优先": "Soonest expiry first", "最新添加优先": "Newest first", "最早 {soonest} 恢复": "Earliest reset {soonest}", "最早恢复": "Earliest reset", "最早添加优先": "Oldest first", "最晚到期优先": "Latest expiry first", "有 {n} 个账号因提供商插件未就绪,暂未显示": "{n} accounts are hidden because their provider plugins are not ready", "有效期": "Expiry", "有的账号过了 0 点额度就回来 —— 选「自然日」": "Some accounts regain quota after midnight — choose \"Calendar day\"", "服务器本地时区": "Server local time zone", "未使用": "Unused", "未启用套餐池账号,不生成验证码令牌": "No enabled Start Plan accounts; no verification tokens are generated.", "未命名账号": "Unnamed account", "未声明可手动续期;本机引用请在原客户端处理登录态。": "Manual renewal is not declared. For local references, manage sign-in in the original client.", "未接入查询": "Query not integrated", "未显示的账号": "Hidden accounts", "未显示账号": "Hidden accounts", "未查询": "Not queried", "未检测到 Clash Verge": "Clash Verge not detected", "未检测到 Clash Verge 配置": "No Clash Verge config detected", "未被使用": "Not in use", "未触发": "Not triggered", "未触发{current}": "Not triggered{current}", "未触发{usage}{countdown}": "Not triggered{usage}{countdown}", "未设备注名": "No label", "未返回余额数据": "No balance data returned", "未返回可确认的余额数值": "No confirmed numeric balance was returned", "未返回可识别的余额数据": "No recognizable balance data returned", "未返回重置时间": "Reset time unavailable", "未配置": "Not configured", "未配置凭证": "No credential", "本周期 Token 消耗达到限制器的上限,账号已被自动禁用(窗口重置也不恢复,需手动启用)": "This period's Token usage reached the limiter cap, and the account was disabled automatically (a window reset will not restore it; enable it manually)", "本周期 Token 消耗达到限制器的上限,转发时会跳过该账号(窗口重置自动恢复)": "This period's Token usage reached the limiter cap; forwarding skips this account (recovers automatically when the window resets)", "本周期已用": "Used this period", "本地 Token 消耗": "Local token usage", "本地台账里今天还领过这些,但上面的读数里还没有:{plans}(读数刷新可能有延迟)": "Also claimed today according to the local record, but not in the readings above yet: {plans} (the reading may take a while to refresh)", "本地消耗上限必须是大于 0 的安全整数": "The local usage limit must be a positive safe integer", "本地用量保护": "Local usage protection", "本地统计只包含经过本网关的请求,不等于上游账单;清理请求日志不会清零。套餐选择用于限定保护范围,不会强制上游扣指定套餐。": "Local counters include only requests through this gateway, not the upstream bill. Clearing request logs does not reset them. Selecting a plan scopes protection; it does not force the upstream to charge that plan.", "本地请求次数": "Local request count", "本地领取于 {time}": "Claimed locally at {time}", "本提供商不支持积分到期排序,默认保持手动顺序;可按需启用账号添加时间排序。": "This provider does not support credit expiry sorting, so manual order is the default. Enable added-time sorting if needed.", "本提供商默认启用最快到期优先,账号添加时间默认关闭;关闭全部规则可恢复手动顺序。": "This provider defaults to soonest expiry first, with added-time sorting off. Turn off all rules to restore manual order.", "本期活动": "Current events", "本期活动按套餐分别展示,领取资格以上游返回为准": "Current events are listed by plan. Eligibility is determined by the upstream response.", "本组 {n} 个账号的可用余额之和,按整组统计(不受筛选、搜索影响)": "Sum of available balance across all {n} accounts in this group, counted over the whole group (unaffected by filters or search)", "本组 {n} 个账号的百分比读数不能相加,取组内最低的剩余比例(按整组统计,不受筛选、搜索影响)": "Percentage readings for the {n} accounts in this group cannot be added; this shows the lowest remaining percentage (whole group, unaffected by filters or search)", "本组 {n} 个账号的额度概览(按整组统计,不受筛选、搜索影响)": "Quota overview for the {n} accounts in this group (whole group, unaffected by filters or search)", "本组代理": "Proxy for this group", "本组操作": "Group actions", "本组每个账号会分别保存为一个 JSON 文件,包含被筛选隐藏的账号。": "Each account in this group will be saved as a separate JSON file, including accounts hidden by filters.", "权益 {value}": "Grant {value}", "权益 {value} {unit}": "Grant {value} {unit}", "条件即时生效,关掉面板就能看到结果。": "Filters apply instantly — close the panel to see the results.", "条件组 {n}": "Condition group {n}", "来源 {source}": "Source {source}", "查看": "View", "查看因插件未就绪而暂未显示的账号": "Accounts hidden because their provider plugin is not ready", "查看插件状态": "View plugin status", "查询中…": "Checking…", "查询余额": "Query balance", "查询全部账号的余额(含已禁用账号 —— 禁用只表示不参与转发)": "Query the balance of all accounts (including disabled ones — disabled only means they take no part in forwarding)", "查询凭证还没配齐:填好后余额列才有读数,在此之前会显示「未配置」。": "Balance credentials are not complete: the balance column only gets readings once they are filled in; until then it shows \"Not configured\".", "查询失败": "Query failed", "查询失败:{message}": "Query failed: {message}", "查询已成功,但上游未提供额度数据,不代表余额为零。": "The query succeeded, but the provider returned no quota data. This does not mean the balance is zero.", "查询设置": "Query settings", "查询该账号剩余余额(读数显示在余额列)": "Query this account's remaining balance (the reading shows in the balance column)", "查询超时,可重新查询": "Query timed out. You can try again.", "查询间隔": "Query interval", "查询间隔必须是 {min} 秒 ~ 24 小时": "The query interval must be {min} seconds to 24 hours", "桌面端实时登录态请在原客户端更新": "Update this live desktop session in the original client", "桌面端实时登录态(凭证每次从客户端登录态文件读取)": "Live desktop login state (the credential is read from the client login-state file each time)", "模型范围": "Model scope", "正在加载…": "Loading…", "正在探测可领取的套餐…": "Checking for claimable plans…", "正在查询": "Querying", "正在查询本期活动…": "Checking current events…", "正在补铸验证码令牌": "Minting CAPTCHA tokens", "正在读取 Clash Verge 配置…": "Reading Clash Verge config…", "正在读取…": "Loading…", "正在读取代理列表…": "Loading proxy list…", "正在连接上游…": "Connecting to upstream…", "正常": "Normal", "此刻正在使用这个账号的请求数(含还在下发内容的流式请求);为 0 时不显示": "The number of requests currently using this account (including streaming requests still sending content); hidden when 0", "此额度不属于账号当前使用的通道": "This quota does not belong to the account’s current channel", "此额度不属于账号当前使用的通道,切换到对应通道后才参与判定。": "This quota does not belong to the account’s current channel. It is evaluated only after switching to its channel.", "每": "Every", "每 {period}消耗 ≥ {count} Token": "Usage per {period} ≥ {count} tokens", "每周或每月额度已耗尽,短周期实际可用额度按 0% 计算;账号明细保留原始读数": "The weekly or monthly quota is exhausted, so the effective short-window quota is treated as 0%; account details retain the original readings", "每日消耗 ≥": "Daily usage ≥", "每日消耗 ≥ {count} Token(每天 0 点重置)": "Daily usage ≥ {count} tokens (resets at midnight)", "每日重置": "Resets daily", "每日重置(额度按周期回满,不是作废)": "Resets daily (the quota refills each cycle; it is not voided)", "每条请求换一个出口(按顺序轮流),上游看到的 IP 因此是变化的;出口的地址与端口由「网络代理」页管理": "Each request moves to the next exit in turn, so the upstream sees a changing IP; exit addresses and ports are managed on the Network proxy page", "每组共用一个触发动作;第二条条件起可选择「与/或」。与优先于或,下面会显示明确分组。各条件组独立生效。": "Each group shares one action. From the second condition onward, choose AND or OR. AND takes precedence over OR; grouping is shown below. Each group takes effect independently.", "没有匹配「{kw}」的账号": "No accounts match \"{kw}\"", "没有可全选的账号": "No accounts to select", "没有可用出口": "No exits available", "没有适用于本次操作的账号": "No accounts eligible for this operation", "没有选中的账号": "No accounts selected", "活动套餐": "Start Plan", "活动套餐的推理端点要求每条请求带一个阿里云验证码令牌;令牌由本应用在后台静默铸造,界面关闭时无法铸造": "The Start Plan inference endpoint requires an Alibaba Cloud captcha token on every request; the app mints tokens silently in the background and cannot mint while the UI is closed", "活动套餐(Start Plan)": "Start Plan", "活动套餐(Start Plan)— 走官方活动端点,用活动里领到的额度": "Start Plan — uses the official event endpoints and the quota claimed in the event", "活动时间:{time}": "Event period: {time}", "活动期内每天发一份新套餐;同一份当天重复领取会提示「已领取过」,次日可再领。领取要走一次人机验证(滑块)。": "During the event a new plan is issued every day; claiming the same one again the same day returns \"already claimed\", and you can claim again the next day. Claiming goes through a human verification (slider).", "活动期内每天发一份新套餐;已领的套餐不重复提交,次日可领新套餐。只有主动领取时才会进行人机验证。": "A new plan is offered each day during the campaign. Claimed plans are not submitted again. Human verification runs only when you choose to claim.", "活动目录合并账号预览、营销活动与匿名探测。已领取仅依据领取记录或账号名下套餐;状态待确认时可尝试领取,资格以上游返回为准。": "The event catalog combines account previews, marketing events, and anonymous discovery. Claimed status requires a claim record or an account-owned plan. If the status is unconfirmed, you can try claiming; eligibility is determined by the upstream response.", "测试中…": "Testing…", "测试出口": "Test exit", "消耗顺序": "Consumption order", "添加 新→旧": "Added new→old", "添加 旧→新": "Added old→new", "添加规则": "Add rule", "添加限制": "Add limit", "清掉本机的限流标记,立刻重新尝试该模型(上游若仍在限流会再次被标记)": "Clear the local rate-limit flag and retry this model immediately (it will be flagged again if the upstream is still rate-limiting)", "清掉该账号全部模型的限流标记": "Clear the rate-limit flags of every model on this account", "清空全部规则": "Clear all rules", "清空搜索与三个筛选档位,回到全部账号": "Clear the search box and the three filter groups, back to all accounts", "清空选中账号的限制规则": "Clear selected accounts’ limiter rules", "清除": "Clear", "清除失败:{error}": "Clear failed: {error}", "清除失败:{message}": "Clear failed: {message}", "清除已配置的 API Key(转发时会因缺少凭证被跳过)": "Clear the configured API Key (forwarding will skip the account for lack of a credential)", "清除已配置的 {label}": "Clear the configured {label}", "清除已配置的余额查询凭证": "Clear the configured balance query credential", "清除标记": "Clear flag", "清除筛选": "Clear filters", "清除该账号的冷却与全部模型限流标记": "Clear this account's cooldown and all model rate-limit flags", "滚动窗口": "Rolling window", "点击{action}各模型的限流明细": "Click to {action} the per-model rate-limit details", "点击查看各模型的限流明细": "Click to view per-model rate-limit details", "点击查看账号冷却与模型限流明细": "Click to view account cooldown and model rate-limit details", "状态": "Status", "状态 {status}": "Status {status}", "状态待确认": "Status unconfirmed", "状态未知": "Unknown", "生效 {time}": "Starts {time}", "生效中": "Active", "生效至到期累计(不自动回满)": "Cumulative from activation to expiry (no automatic refill)", "用 NewAPI 站点的个人访问令牌查询账户余额(不是这条账号的上游 API Key)。令牌在站点的「个人设置」里生成,只有旧版 / 定制站点才需要额外填用户 ID。": "Queries the account balance with a NewAPI site personal access token (not this account's upstream API key). The token is generated under the site's \"Personal settings\"; only older / custom sites additionally need a user ID.", "用 bigmodel.cn 控制台的访问令牌查询账户余额(人民币元)。令牌是登录后浏览器 Cookie `bigmodel_token_production` 的值:开发者工具 → 应用(Application)→ Cookie 里复制。": "Queries the account balance (CNY) with an access token from the bigmodel.cn console. The token is the value of the browser cookie `bigmodel_token_production` after logging in: DevTools → Application → Cookies, then copy it.", "用下面的规则统一替换各账号的全部规则,执行前会再次确认。": "Replaces every account’s entire rule list with the rules below; confirmation is required before running.", "用商汤日日新控制台的账号密码查询(与推理用的 API Key 不是同一套)。网关会自动换取登录票并缓存,过期后自动重登,不需要手动维护。": "Queries with the SenseNova console account and password (not the same credentials as the inference API key). The gateway exchanges them for a login ticket and caches it, logging in again automatically when it expires — no manual upkeep.", "用户名": "Username", "用这条账号的 API Key 查询订阅用量,不需要额外配置;读数展开成 5 小时 / 每周 / 每月三个窗口。": "Queries subscription usage with this account's API key; no extra setup. The reading expands into 5-hour / weekly / monthly windows.", "用这条账号的 API Key 查询,不需要额外配置。": "Queries with this account's API key; no extra setup.", "用这条账号的 API Key 生成签名后查询账户余额(美元),不需要额外配置。要求 API Key 是 z.ai 的「id.secret」形态(控制台生成的 Key 就是)。": "Signs with this account's API key and queries the balance (USD); no extra setup. The API key must be in z.ai's \"id.secret\" form (which is what the console generates).", "留空 = 不修改,清除用右边的按钮": "Leave empty to keep the current one; clear with the button on the right", "登录 / 导入一个新账号": "Sign in / import a new account", "登录授权已失效,请重新登录;自动续期无法恢复已过期或已撤销的刷新令牌。": "Sign-in authorization is no longer valid. Sign in again; automatic renewal cannot restore an expired or revoked refresh token.", "登录授权截止:{time};自动续期不会延长此时间,届时需重新网页登录。": "Sign-in authorization expires at {time}. Automatic renewal does not extend this deadline; sign in again through the browser when it expires.", "百分比阈值必须在 0~100 之间": "The percentage threshold must be between 0 and 100", "直连": "Direct", "确定删除选中的 {count} 个账号?此操作不可恢复,账号的登录态会一并移除。": "Delete the selected {count} accounts? This cannot be undone, and their login state will be removed as well.", "确定清空 {count} 个账号的全部限制规则?余额与 Token 将不再设限;已禁用的账号不会自动启用。": "Clear all limiter rules from {count} accounts? Balance and Token limits will be removed; disabled accounts will not be enabled automatically.", "确定清除全部模型的限流标记?": "Clear rate-limit flags for all models?", "确定清除模型「{model}」的限流标记?": "Clear the rate-limit flag for model \"{model}\"?", "确定清除该账号的冷却与全部模型限流标记?": "Clear this account's cooldown and all model rate-limit flags?", "禁用": "Disable", "禁用整个账号(手动恢复)": "Disable the entire account (manual recovery)", "禁用该账号(需手动重新启用)": "Disable the account (manual re-enabling required)", "禁用这一组里的全部账号(含被筛选隐藏的)": "Disable every account in this group (including ones hidden by filters)", "福利按限时活动下发,不是每个账号都有 —— 正常状态,不是查询失败": "Welfare is issued through limited-time events and not every account has it — this is a normal state, not a query failure", "福利日额度": "Daily welfare quota", "福利网关未读到:{error}": "Failed to read the welfare gateway: {error}", "秒": "seconds", "秒;默认 60 秒,包含重试等待,多步骤查询可适当延长。": "seconds; defaults to 60, including retry waits. Increase for multi-step queries if needed.", "积分": "Points", "积分到期时间": "Credit expiry", "积分包": "Point pack", "积分明细": "Points details", "积分查询已复用转发用的登录凭证,这里通常留空即可。只有旧版本填过、或从旧代理导入过凭证时才有值": "Points queries reuse the login credential used for forwarding, so this is usually left blank. It only has a value if an older version filled it in or credentials were imported from the old proxy", "稍后由后台判定自动禁用": "Disabled automatically after a background check", "窗口 = 今天 0 点起(本地时区),0 点重置即清零恢复;按账号在 requests 表聚合": "Window = from midnight today (local time); the midnight reset clears it and restores the account; aggregated per account in the requests table", "窗口内已用 {used} / {limit} Token,转发时会跳过该账号(重置后自动恢复)": "{used} / {limit} tokens used in the window; forwarding skips this account (recovers automatically after the reset)", "窗口对齐自然时间(整点 / 整 N 分钟一轮回),重置即清零恢复;按账号在 requests 表聚合": "The window aligns to wall-clock time (rolls over on the hour / every N minutes); a reset clears it and restores the account; aggregated per account in the requests table", "窗口数量超过展示上限,仅展示部分读数": "The window count exceeds the display limit; only some readings are shown", "窗口重置时间": "Window reset times", "窗口长度": "Window length", "窗口额度与时间": "Quota windows and timing", "端口": "Port", "端口准备中": "Port pending", "第 {rank} 顺位": "Position {rank}", "等待当前验证码流程结束": "Waiting for the current verification to finish", "筛选": "Filter", "筛选 / 搜索 / 分页生效时组顺位不可拖动(别家的组整组不可见,落点没法定位)": "Group order cannot be dragged while a filter / search / paging is active (other groups are hidden entirely, so the drop target cannot be located)", "系统代理信息无效,请手动填写。": "The system proxy information is invalid. Enter it manually.", "系统代理协议暂不支持自动填入,请手动配置 HTTP 或 SOCKS5 代理": "This system proxy protocol cannot be imported. Configure an HTTP or SOCKS5 proxy manually.", "系统代理地址无效,请手动填写": "The system proxy address is invalid. Enter it manually.", "系统代理认证信息无法读取,请手动填写": "The system proxy credentials could not be read. Enter them manually.", "累计起点": "Counting start", "级联删除名下全部账号,不可恢复": "Cascade-deletes all its accounts; cannot be undone", "组内先后:按住左边的把手上下拖动即可调整;整组的先后拖分组带的把手": "Within the group: hold the handle on the left and drag up / down to reorder; for the order of whole groups, drag the group band's handle", "组内并发上限": "Group concurrency limit", "组内手动顺序": "Manual order within the group", "组内第 {rank} 位": "Position {rank} in group", "组顺位已锁定": "Group order locked", "组顺位:越小越先用(拖动分组带调整)": "Group position: smaller goes first (drag the group band to adjust)", "统一设置自动查询的开关、间隔和失败重试次数;不会复制或覆盖余额查询凭证。": "Sets the auto-query switch, interval, and retry count; balance query credentials are never copied or overwritten.", "统计周期": "Counting period", "统计周期尚未开始或已经结束": "The counting period has not started or has ended", "统计窗口必须是 1 分钟~31 天": "The counting window must be between 1 minute and 31 days", "统计结束时间必须晚于开始时间": "The counting end time must be later than the start time", "缓存用量未知,不按零计量,也不用于推算余额": "Cached usage is unknown; it is neither counted as zero nor used to infer balance", "编码套餐(Coding Plan)": "Coding Plan", "编码套餐(Coding Plan)— 走开放平台端点,消耗开放平台的额度(订阅套餐 / 资源包 / 充值余额)": "Coding Plan — uses the open-platform endpoints and consumes open-platform quota (subscription plan / resource packs / prepaid balance)", "编码套餐(Coding Plan)— 走开放平台端点,用自己订阅的额度": "Coding Plan — uses the open-platform endpoints and your own subscription quota", "编辑": "Edit", "编辑限制": "Edit limit", "编辑限制条件": "Edit limit condition", "网关电脑未检测到可导入的系统代理;请手动填写,或选择已保存的代理。": "No importable system proxy was found on the gateway machine. Enter one manually or choose a saved proxy.", "网络": "Network", "网页端会逐个下载文件;浏览器提示时请允许本网站下载多个文件。": "The web panel downloads files individually. If prompted, allow this site to download multiple files.", "自动查询余额": "Auto-query balance", "自动查询余额(按下面的间隔自动刷新余额列的读数)": "Auto-query balance (refresh the balance column reading at the interval below)", "自定义代理": "Custom proxy", "自定义代理…": "Custom proxy…", "自定义:": "Custom: ", "自然周": "Calendar week", "自然日": "Calendar day", "自然日(每天 0 点)": "Calendar day (00:00 daily)", "自然月": "Calendar month", "补全请求": "Completion requests", "补铸失败:{error}": "Token minting failed: {error}", "规则操作": "Rule operation", "解析失败": "Resolve failed", "触发动作": "Action", "触发后": "Then", "触发条件": "Condition", "计入 {counted}/{total}": "counted {counted}/{total}", "订阅已移除": "Subscription removed", "订阅统计未读到:{error}": "Failed to read subscription stats: {error}", "记录里没有过期时间": "No expiry time in the record", "设为首选": "Set as first", "设置并发上限": "Set concurrency limit", "访客账号没有积分体系,因此不查询余额(登录账号可以查)": "Guest accounts have no points system, so no balance is queried (a signed-in account can be queried)", "访问令牌": "Access token", "试用版": "Trial", "该上游无需鉴权": "This upstream needs no auth", "该上游无需鉴权(转发与拉取模型都不发送鉴权头)": "This upstream needs no auth (no auth header is sent when forwarding or fetching models)", "该提供商尚未接入余额查询": "Balance queries are not integrated for this provider", "该提供商没有余额查询": "This provider has no balance query", "该提供商没有余额查询;可按 Token 消耗设置限制。": "This provider has no balance query; you can limit Token usage instead.", "该提供商的推理转发尚未接入,账号不参与转发": "Inference forwarding for this provider is not wired up yet; the account takes no part in forwarding", "该账号不支持刷新 Token 或未提供刷新凭证": "This account does not support token refresh or has no refresh credentials", "该账号出网走的代理(Clash 出口 / 自定义 / 直连);点击可修改": "The proxy this account uses for outbound traffic (Clash exit / custom / direct); click to change", "该账号出网走的代理(已保存的代理 / 自定义 / 直连);点击可修改": "Proxy used by this account (saved proxy / custom / direct); click to change.", "该账号当前限流中的模型;点徽章看明细": "Models this account is currently rate-limited on; click the badge for details", "该账号没有套餐登录态(jwt),套餐池通道会失败:请重新登录该账号": "This account has no plan login state (JWT); the plan-pool channel will fail — sign in to this account again", "该账号没有套餐登录态(jwt),活动套餐会失败:请重新登录该账号": "This account has no plan login state (JWT); Start Plan will fail — sign in to this account again", "该账号没有福利模型额度(福利按活动下发,不是每个账号都有)": "This account has no welfare model quota (welfare is issued through events and not every account has it)", "该账号没有积分类读数(额度只有福利 token 池)": "This account has no points-class reading (its quota is only the welfare token pool)", "该账号的额度只有福利 token 池(见余额格那两行),订阅统计没有积分类计量表": "This account's quota is only the welfare token pool (see the two lines in the balance cell); the subscription stats have no points-class meter", "该额度中的全部模型": "All models in this quota", "请先勾选要操作的账号": "Select the accounts to act on first", "请先选择 Clash Verge 出口": "Select a Clash Verge exit first", "请先选择已保存的代理": "Select a saved proxy first", "请填写代理主机地址": "Enter the proxy host address", "请填写提供商名称": "Enter the provider name", "请填写提供商的 Base URL": "Enter the provider's Base URL", "请填写查询间隔": "Enter the query interval", "请填写重置周期": "Enter the reset period", "请至少添加一条限制规则;清空请使用清空操作": "Add at least one limiter rule; use the clear operation to remove all rules", "请选择代理": "Select a proxy", "请选择出口": "Select an exit", "读取中…": "Loading…", "读取失败:{error}": "Failed to load: {error}", "读取系统代理失败": "Failed to read the system proxy", "读取网关电脑当前的 HTTPS 系统代理,填入自定义地址;后续系统设置变化不会自动同步。": "Copies the gateway machine's current HTTPS system proxy into the custom fields. Later system changes are not synced automatically.", "读取自 {dir};端口由 Clash Verge 管理,这里实时同步": "Read from {dir}; the port is managed by Clash Verge and syncs live here", "读数来自自动余额查询;与余额列同一数字口径,严格小于才触发(等于阈值仍可用)": "The reading comes from the auto balance query; same reading as the balance column — the rule triggers only when strictly below it (equal to the threshold is still usable)", "读数里没有套餐清单(免费账号、或套餐的上游状态还没刷新;可点右上角「查询余额」重读)": "The reading contains no plan list (free account, or the upstream plan state is not refreshed yet; click \"Check balance\" at the top right to re-read)", "读数里没有额度桶,这里按套餐权益里的已用 / 总量显示(上游给的数)": "The reading has no quota bucket; this shows the used / total from the plan entitlement (the upstream figures)", "调整到全局队列第一位": "Move to the front of the global queue", "调整顺序失败:{message}": "Failed to reorder: {message}", "账号": "Accounts", "账号不存在,请刷新后重试": "Account not found; refresh and try again", "账号不存在,请刷新后重试。": "Account not found; refresh and try again.", "账号主额度": "Account primary quota", "账号余额单位不一致,暂不按余额排序,继续比较其他规则": "Account balances use different units. Balance sorting is skipped; other rules still apply.", "账号全部模型暂时停止转发 · 到恢复时间自动解除": "All models on this account are paused · Resumes automatically at the recovery time", "账号冷却": "Account cooldown", "账号列表刷新不可用,请重新打开页面": "Account refresh is unavailable. Reopen the page", "账号列表刷新失败": "Failed to refresh the account list.", "账号列表刷新接口不可用,请重新打开页面": "Account list refresh is unavailable. Reopen the page.", "账号列表加载失败,请点击「刷新」重试": "Failed to load accounts. Click \"Refresh\" to retry", "账号列表加载失败,请点击「刷新」重试:{message}": "Failed to load accounts. Click \"Refresh\" to retry: {message}", "账号列表已刷新": "Account list refreshed", "账号名 / 邮箱 / 备注": "Account name / email / note", "账号套餐到期:{time}": "Account plan expires: {time}", "账号导出失败:{reason}": "Account export failed: {reason}", "账号已保存,但列表刷新失败:{error}": "The account was saved, but the list failed to refresh: {error}", "账号已保存,但提供商未更新:{error}": "Account saved, but the provider was not updated: {error}", "账号数据仍然保留,无需重新添加。安装或启用对应插件并成功加载后,账号会自动恢复显示。": "Your account data is kept; do not add the accounts again. They will reappear automatically once the required plugins are installed or enabled and loaded successfully.", "账号显示名称": "Account display name", "账号更新接口不可用,请重新打开页面": "Account updates are unavailable. Reopen the page.", "账号更新结果未确认,请刷新后核对设置": "The account update could not be confirmed. Refresh and check the settings.", "账号正在导出,请稍候": "Accounts are being exported. Please wait.", "账号添加时间": "Account added time", "账号级条件组已触发;点击查看限制器": "An account-wide condition group has triggered; click to view the limiter", "账号表": "Accounts table", "账号设置": "Account settings", "账号设置 · {name}": "Account settings · {name}", "账号设置分组": "Account settings sections", "账号邮箱": "Account email", "账号页与全局路由共用此消耗顺序,网关按最新余额数据选路,不需要保持页面打开。模型独立顺序会覆盖全局。": "Accounts and global routing share this consumption order. The gateway routes using the latest balance data, even when the page is closed. Independent model order overrides the global order.", "跨账号批量配置仅支持通用条件;套餐实例不能直接复制到其他账号。": "Bulk configuration across accounts supports only general conditions. Plan instances cannot be copied directly to other accounts.", "跳过 {count} 个:": "{count} skipped: ", "跳过该账号(余额回升自动恢复)": "Skip this account (recovers automatically when the balance rises)", "跳过该账号(自动恢复)": "Skip this account (recovers automatically)", "跳过该账号(重置后自动恢复)": "Skip this account (recovers automatically after a reset)", "跳过(自动恢复)": "Skip (automatic recovery)", "转发优先级": "Forwarding priority", "转发走套餐池(Start Plan)通道(zcode.z.ai 的 Anthropic 端点,用账号里的体验额度 / 活动领取额度);在账号设置里可切回编码套餐": "Forwarding uses the plan-pool (Start Plan) channel (zcode.z.ai's Anthropic endpoint, with the account's trial quota / event grants); you can switch back to Coding Plan in account settings", "转发走活动套餐通道(zcode.z.ai 的 Anthropic 端点,用账号里领到的额度);在账号设置里可切回编码套餐": "Forwarding uses the Start Plan channel (zcode.z.ai's Anthropic endpoint, with the quota claimed in the account); you can switch back to Coding Plan in account settings", "转发顺序": "Forwarding order", "轮询全部代理节点": "Rotate across all proxy nodes", "轮询的代理": "Proxies to rotate", "轮询至少要选择一条代理(或改选「全部」)": "Select at least one proxy to rotate (or switch back to \"All\")", "轮询(换 IP)": "Rotate (change IP)", "还有 {d} 天": "{d}d left", "还有 {h} 小时": "{h}h left", "还有 {h} 小时 {m} 分": "{h}h {m}m left", "还有 {n} 分钟": "{n} min left", "还没有代理(去「网络代理」页添加)": "No proxies yet (add one on the Network proxy page)", "还没有余额读数(已自动查询一次,稍候;也可以点右上角「查询余额」重读)": "No balance reading yet (one query has been started automatically, please wait; you can also click \"Check balance\" at the top right)", "还没有保存的代理": "No saved proxies yet", "还没有批量规则,请先添加限制或从所选账号复制。": "No bulk rules yet; add a limit or copy from a selected account.", "还没有条件组:账号照常参与转发,不设置额度保护。": "No condition groups yet. The account forwards requests normally without quota protection.", "还没有账号,去桌面端添加": "No accounts yet. Add one on desktop.", "还没有账号,请点击「添加账号」": "No accounts yet. Click “Add account”.", "还没有限制规则:账号照常参与转发,余额与 Token 消耗都不设上限。": "No limit rules yet: the account forwards as usual, with no cap on balance or Token usage.", "这一份今天已经领过了(重复领取上游会回「已领取过」)": "This one was already claimed today (claiming it again returns \"already claimed\" from upstream)", "这一家查不到积分到期时间": "This provider has no credit expiry data", "这一家没有可用余额查询": "This provider does not support available balance queries", "这一栏改的是": "This section changes ", "这一段按提供商出现:有什么配什么。": "This section appears per provider: configure whatever it offers.", "这一类现在没有账号": "No accounts in this category", "这一组开着排序规则:关掉规则后才能手动拖": "Auto-sort is on for this group: turn the rules off to drag manually", "这个账号的余额走窗口限额通道(只配了编码套餐 API Key):只有每 N 小时的剩余比例,读不到套餐清单": "This account reads its balance through the window-limit channel (only a Coding Plan API Key is configured): it only has the remaining percentage of each N-hour window, not the plan list", "这会{what}所有启用中的账号,转发将不可用。确定继续?": "This will {what} all enabled accounts, and forwarding will be unavailable. Continue?", "这是既有配置(直接引用 Clash 出口,不经过代理池)。推荐改用上面的": "This is a legacy configuration (it references a Clash exit directly, bypassing the proxy pool). The recommended alternative is ", "这条自定义账号既没有 API Key,也没有勾选「无需鉴权」:转发时会被跳过,该提供商下的模型也不会出现在模型列表里。去账号「设置」里补上 Key,或勾选「该上游无需鉴权」": "This custom account has neither an API Key nor \"This upstream needs no auth\" checked: forwarding will skip it, and this provider's models will not appear in the model list. Add a Key in the account's Settings, or check \"This upstream needs no auth\"", "这条账号是谁、排第几、能不能接请求。": "Who this account is, where it sits in the queue, and whether it can take requests.", "这条账号访问上游走哪条线路。": "Which route this account takes to the upstream.", "这里只影响「显示」:卸载或停用插件不会删除账号;重新安装、启用并成功加载后,这些账号会自动回到列表。": "This affects display only: uninstalling or disabling a plugin never deletes accounts. Install, enable and load the plugin successfully and they come back automatically.", "连接失败": "Connection failed", "连接数": "Connections", "追加规则(保留原有)": "Append rules (keep existing)", "追加限制规则": "Append limiter rules", "选中多个模型时,每个模型单独累计、单独比较阈值;不合并用量。": "When multiple models are selected, usage and thresholds are evaluated separately for each model. Usage is not combined.", "选择": "Select", "选择所选账号作为模板(可选)": "Choose a selected account as a template (optional)", "选择要轮询的代理(可多选)": "Select proxies to rotate (multiple)", "逐个刷新所选账号的 Token,未到期也会尝试刷新;不改变启用状态、代理或转发顺序。": "Refresh tokens for the selected accounts one at a time, even if they have not expired. Enabled status, proxies, and forwarding order are kept.", "逐窗口最低:{list}": "Lowest per window: {list}", "逐请求轮换出口(换 IP):OpenCode Zen 免费档按 IP 限流,单个 IP 的额度用完会对它一律 429": "Rotates the exit per request (changing the IP): the OpenCode Zen free tier limits by IP — once an IP runs out of quota, requests from it all get 429", "通用额度/本地保护": "General quota / local protection", "邮箱 {email}": "Email {email}", "部分余额信息暂未获取;未显示上游原始诊断": "Some balance information is unavailable; raw upstream diagnostics are not shown", "部分来源查询失败,已保留其他结果:{message}": "Some sources could not be queried; other results were retained: {message}", "部分来源查询失败,暂不能确认本期活动或领取状态": "Some sources could not be queried, so current events or claim status cannot be confirmed yet.", "部分窗口偏低": "Some windows are low", "部分窗口未返回可识别读数": "Some windows returned no recognizable readings", "部分读数未知": "Some readings are unknown", "部分额度读数暂不可用。": "Some quota readings are temporarily unavailable.", "配置已变更,请重新查询": "Settings changed. Query again to update the balance.", "重新安装这个插件后自动回来": "Reinstall this plugin and they return automatically", "重新读取": "Reload", "重新读取该账号的余额与套餐(走余额查询那条链)": "Re-read this account's balance and plans (goes through the balance query chain)", "重新读取账号列表和插件状态,不刷新 Token 或查询余额": "Reload the account list and plugin status without refreshing tokens or querying balances", "重查": "Retry", "重置": "Reset", "重置 {date}": "Resets {date}", "重置也不恢复,需手动启用": "A reset will not restore it; enable it manually", "重置周期必须是 30 分钟 ~ 24 小时": "The reset period must be 30 minutes to 24 hours", "重置方式": "Reset mode", "重置时区": "Reset time zone", "重置详情": "Reset details", "长期有效": "Long-lived", "间隔单位": "Interval unit", "阈值": "Threshold", "降低优先级": "Lower priority", "限制器": "Limiter", "限制器 · {n} 个模型": "Limiter · {n} models", "限制器 · 账号已跳过": "Limiter · Account skipped", "限制器:{window}已用 {used} / {threshold} Token": "Limiter: {window} — {used} / {threshold} tokens used", "限制指标": "Limit metric", "限制类型": "Limit type", "限制阈值必须是大于 0 的数字": "The limit threshold must be a number greater than 0", "限制阈值必须是非负有限数字": "The threshold must be a non-negative finite number", "限流": "Rate limit", "限流中": "Rate-limited", "限流已清除": "Rate limit cleared", "限流明细": "Rate-limit details", "限额": "Limit", "限额状态": "Limit status", "隐藏账号名(名字显示为星号)": "Hide name (shown as asterisks)", "需要人机验证时,在该账号的「套餐明细」中主动开始验证。": "When human verification is required, start it manually in this account’s Plan details.", "需要重新登录": "Sign-in required", "需要验证码时由打开着的主窗口或浏览器面板补铸;库存、补铸状态和失败原因分别显示": "When verification is required, the open main window or browser panel mints tokens; stock, minting status and errors are shown separately", "需重登": "Relogin", "顺序": "Order", "顺序未保存:{message}": "Order not saved: {message}", "领取 {time}": "Claimed {time}", "额度": "Quota", "额度充足": "Quota available", "额度来源": "Quota source", "额度查询暂不可用。": "Quota queries are temporarily unavailable.", "额度查询未完成,未显示上游原始诊断。": "The quota query did not complete. Raw upstream diagnostics are not shown.", "额度窗口读数来自开放平台监控通道(套餐 JWT 那条通道没有额度桶):读的是每 N 小时 / 每周窗口的剩余比例": "The quota-window reading comes from the open-platform monitoring channel (the Coding Plan JWT channel has no quota bucket): it reads the remaining percentage of each N-hour / weekly window", "额度详情": "Quota details", "首次失败后额外重试的次数;默认 3 次,0 = 不重试。手动和自动查询均生效,全部失败后才显示失败并记录日志。": "Additional attempts after the first failure; defaults to 3, or 0 for no retries. Applies to manual and automatic queries. Failure is shown and logged only after all attempts fail.", "验证失败:{error}": "Verification failed: {error}", "验证码令牌池接口不可用": "CAPTCHA token pool interface unavailable", "验证码令牌:{counts}": "Captcha tokens: {counts}", "高级请求": "Premium requests", "魔粒": "Magicubes", "默认仅开启最快到期优先;可用余额和账号添加时间默认关闭。": "Only earliest expiry first is enabled by default. Available balance and account creation time sorting are off.", "默认保持手动顺序,可按需开启支持的自动排序规则。": "Manual order is the default. Enable supported automatic sorting rules as needed.", "默认展开 / 收起": "Default expanded / collapsed", "({n} 个未配置查询凭证)": " ({n} without query credentials)", "(不可用)": " (unavailable)", "(其他订阅,可能未生效)": " (other subscription, may not be active)", "(只测了前 {limit} 个,还有 {rest} 个未测)": " (only the first {limit} were tested; {rest} left untested)", "(名下 {count} 个账号共用)": " (shared by its {count} accounts)", "(已在 Clash 中禁用)": " (disabled in Clash)", "(库存为空,等待补铸;请保持主窗口或浏览器面板打开)": " (stock empty, awaiting refill; keep the main window or browser panel open)", "(未启用套餐池账号,暂不补铸)": " (no enabled Start Plan account; minting paused)", "(激活事件补报失败,可能影响领取资格:{message})": "(Reporting the activation event failed; this may affect claim eligibility: {message})", "+ 添加条件": "+ Add condition", "+ 添加限制": "+ Add limit", ",{countdown}重置": ", {countdown} until reset", ",只对 OpenCode Zen 这类上游有意义,别的家请关掉。": ", so it only matters for upstreams like OpenCode Zen — turn it off for other providers.", ",已达到上限": ", limit reached", ":到「网络代理」页的「订阅管理」里点「同步 Clash Verge」把出口导进池后即可选 —— 那样能集中测试、也能被多个账号共用。": ": on the Network proxy page, open \"Manage subscriptions\" and click \"Sync Clash Verge\" to import exits into the pool and then select them — that centralizes testing and lets several accounts share them.", ";": "; ", "{count} 个分区有未保存的更改": "Unsaved changes in {count} sections", "{count} 个账号共用": "Shared by {count} accounts", "{count} 个账号共用提供商的连接配置。": "{count} accounts share this provider's connection settings.", "{count} 个账号共用连接配置": "Connection settings shared by {count} accounts", "✅ 已改回跟随提供商的 Base URL": "✅ This account follows the provider's Base URL again", "「{name}」名下 {count} 个账号共用这些连接设置。修改协议或 Base URL 可能中断正在进行的请求。": "These connection settings are shared by {count} accounts under {name}. Changing the protocol or Base URL may interrupt requests in progress.", "「{name}」名下 {count} 个账号共用;修改协议或地址可能中断正在进行的请求。": "Shared by {count} accounts under {name}. Changing the protocol or address may interrupt requests in progress.", "仅当前账号": "This account only", "仅用于 OpenCode Zen 这类上游,普通提供商请保持关闭。": "Only for upstream services such as OpenCode Zen. Leave this off for other providers.", "代理只作用于当前账号,不改变其他账号的出网方式。": "The proxy applies only to this account and does not change how other accounts connect.", "余额读数也是限制器余额规则的数据来源。": "Balance readings also supply the data used by balance-based limiter rules.", "使用密钥访问上游": "Use a key to access the upstream service", "保存后将移除密钥,转发与拉取模型都不发送鉴权头。请确认上游确实无需凭证。": "Saving removes the key and omits authentication headers when forwarding requests or fetching models. Make sure the upstream service does not require credentials.", "保存提供商共用配置?": "Save shared provider settings?", "保存更改": "Save changes", "共用": "Shared", "关闭后不参与转发,余额查询不受影响。": "When disabled, this account is excluded from forwarding. Balance queries are unaffected.", "凭证设置": "Credentials", "出网方式": "Connection method", "前往模型管理": "Go to model management", "前往模型管理会关闭账号设置,尚未保存的修改不会生效。": "Going to model management closes account settings and discards unsaved changes.", "包含提供商共用配置,将影响 {count} 个账号": "Includes shared provider settings affecting {count} accounts", "原密钥不会回显;更换密钥不会改变账号 ID。": "The existing key is never displayed. Replacing it does not change the account ID.", "各分区的更改将统一保存": "Changes across all sections are saved together", "启用账号": "Enable account", "在账号列表中拖动分组或行首把手,调整转发顺序。": "Drag a group or a row handle in the account list to change the forwarding order.", "基本信息": "Basic information", "填写接口基址,无需追加 {path}。": "Enter the API base URL without appending {path}.", "将同时删除名下 {count} 个账号,无法恢复。": "Also deletes all {count} accounts under this provider. This cannot be undone.", "开启后会改写请求体,补齐会话头与占位工具;未填密钥时使用匿名凭证 public。": "When enabled, request bodies are rewritten to add session headers and placeholder tools. Without a key, the anonymous credential public is used.", "当前没有凭证,转发时会跳过此账号。请填写密钥或选择「无需鉴权」。": "This account has no credentials and will be skipped when forwarding. Enter a key or select No authentication.", "当前账号": "Current account", "所有分区中尚未保存的修改都会被放弃。已确认的独立清除操作不受影响。": "Unsaved changes in all sections will be discarded. Previously confirmed standalone clearing operations are unaffected.", "提供商名称": "Provider name", "改回跟随": "Follow provider", "改回跟随提供商": "Follow provider", "改回跟随提供商?": "Follow the provider again?", "新密钥待保存": "New key pending save", "无需鉴权": "No authentication", "显示新输入的密钥": "Show the newly entered key", "本地服务或无需凭证的上游": "Local or credential-free upstream services", "查询凭证": "Query credentials", "模型清单与映射在「模型管理」中维护。": "Manage model lists and mappings in Model management.", "模拟 OpenCode 官方客户端": "Emulate the official OpenCode client", "正在保存…": "Saving…", "正在编辑提供商共用配置": "Editing shared provider settings", "没有未保存的更改": "No unsaved changes", "没有规则或全部停用时不限制;跳过后自动恢复,禁用后需手动启用。": "No limits apply if there are no rules or all rules are off. Skipped accounts recover automatically; disabled accounts must be enabled manually.", "清除余额查询凭证?": "Clear balance query credentials?", "清除已存 API Key?": "Clear the saved API Key?", "清除已存密钥": "Clear saved key", "清除查询凭证?": "Clear query credentials?", "用于当前账号的对话、余额查询、模型拉取、模型测试、签到及凭证刷新等上游请求。留空使用提供商默认值;可选预置或直接填写。": "Applies to this account's upstream requests, including chats, balance queries, model fetching and testing, check-ins, and credential refreshes. Leave empty for the provider's defaults; select a preset or enter a value.", "用明确的规则保护当前账号的额度。": "Protect this account's quota with explicit rules.", "留空不修改,替换后点击「保存更改」生效。": "Leave blank to keep the key. A replacement takes effect after clicking Save changes.", "留空保留当前密钥,输入新密钥以替换": "Leave blank to keep the current key, or enter a replacement", "确认保存": "Confirm save", "确认后立即生效,不受底部保存按钮控制。没有凭证且未开启「无需鉴权」时,此账号将被转发跳过。": "This takes effect immediately after confirmation, independently of the Save button. Without credentials or No authentication, this account will be skipped when forwarding.", "确认后立即生效,不受底部保存按钮控制。通常可继续复用转发用的登录凭证。": "This takes effect immediately after confirmation, independently of the Save button. The login credentials used for forwarding can usually be reused.", "确认后立即生效,余额查询可能显示「未配置」。取消账号设置不会恢复已清除的凭证。": "This takes effect immediately after confirmation. Balance queries may show Not configured. Canceling account settings will not restore cleared credentials.", "确认弹窗不可用,请重新打开页面": "The confirmation dialog is unavailable. Reopen the page.", "管理当前账号的凭证与可用套餐。": "Manage this account's credentials and available plans.", "统一管理提供商的协议、地址与兼容选项。": "Manage the provider's protocol, address, and compatibility options in one place.", "自定义 API": "Custom API", "要修改连接地址或协议?": "Need to change the connection address or protocol?", "设置当前账号访问上游的出网方式。": "Choose how this account connects to the upstream service.", "设置账号名称、启用状态与转发行为。": "Set the account name, enabled state, and forwarding behavior.", "请填写有效的 HTTP 或 HTTPS 地址": "Enter a valid HTTP or HTTPS URL", "请求标识": "Request identity", "请求端点": "Request endpoint", "账号凭证": "Account credentials", "转发行为": "Forwarding behavior", "达到上限后,将请求交给其他账号。": "When the limit is reached, requests are passed to other accounts.", "这个账号单独存了一份地址:{url},转发时优先用它。上面改的是提供商共用地址,不会覆盖它。": "This account stores its own address ({url}), which takes precedence when forwarding. Changing the shared provider address above does not override it.", "这个账号将改用提供商当前保存的 Base URL:{url}。确认后立即生效,不受底部保存按钮控制。": "This account will use the Base URL currently saved on the provider: {url}. Takes effect immediately and is not controlled by the Save button below.", "连接参数": "Connection parameters", "连接设置": "Connection settings", "配置余额查询凭证、自动刷新间隔与失败重试。": "Configure balance query credentials, the automatic refresh interval, and retries after failure.", "鉴权方式": "Authentication method", "隐藏新输入的密钥": "Hide the newly entered key", "高级兼容": "Advanced compatibility", "默认关闭": "Off by default", " · 模型 {head}{rest}": " · Models: {head}{rest}", " 等 {n} 个": " ({n} total)", "1// 开头的 Google refresh token(也可直接粘贴 refresh_token=… 整行)": "Google refresh token starting with 1// (you can also paste the whole refresh_token=… line)", "11 位大陆手机号": "11-digit mainland China mobile number", "1~64 个字符,账号列表里按它分组显示": "1-64 characters; accounts are grouped by it in the account list", "6 位数字": "6 digits", "
  • 没有可自动领的活动
  • ": "
  • No campaigns can be claimed automatically
  • ", "

    领到的是套餐赠送积分,不会增加福利模型的 token 池;": "

    What you receive is plan gift points, which do not add to the welfare model token pool; ", "ACP 代理配置无效,请重新选择代理。": "The ACP proxy configuration is invalid. Select the proxy again.", "ACP 会话失败时不自动重发,也不切换到其他接入方式。": "A failed ACP session is not retried automatically or switched to another connection method.", "ACP 使用网关电脑上的官方 agy CLI,不是当前手机或浏览器所在设备。请先安装 agy 1.5.0 或更新版本:https://antigravity.google/docs/cli。程序不在默认位置时,可在网关启动环境设置 AGY_PATH。": "ACP uses the official agy CLI on the gateway computer, not the device running this browser or phone. Install agy 1.5.0 or later first: https://antigravity.google/docs/cli. For a custom installation path, set AGY_PATH in the gateway's startup environment.", "ACP 尚未返回可用的会话模型目录,请检查官方 CLI 登录状态后重试。": "ACP has not returned a usable session model catalog. Check the official CLI sign-in status and try again.", "ACP 的本机进程仍使用原来的代理。请先在插件页停用再启用 ACP 插件,再使用新的代理。": "The local ACP processes still use the previous proxy. Disable and re-enable the ACP plugin on the Plugins page before using a different proxy.", "API Key + 控制台令牌(模型调用 + 墨点额度)": "API Key + console token (model access + ink-credit balance)", "API 凭证添加暂不能解析代理池引用;请使用自定义代理地址,添加后再在账号设置中调整。": "Adding API credentials cannot currently resolve proxy-pool references. Use a custom proxy address, then adjust it in account settings after adding the account.", "API 模板": "API templates", "AWS Builder ID(直接授权,减少一次回填)": "AWS Builder ID (direct authorization, one fewer callback)", "AWS 地区(账号目录所在地区)": "AWS region (where the account directory is hosted)", "AiHubMix 的 OpenAI 兼容端点,使用 AiHubMix 的 API Key;模型 ID 以平台清单为准": "AiHubMix's OpenAI-compatible endpoint; use an AiHubMix API Key and the model IDs listed by the platform", "Anthropic 兼容端点在 https://api.deepseek.com/anthropic(协议换 anthropic 时填它)": "The Anthropic-compatible endpoint is https://api.deepseek.com/anthropic (fill it in when you switch the protocol to anthropic)", "Anthropic 协议填根地址,不要带 /v1": "For the Anthropic protocol, use the root URL without /v1", "Antigravity": "Antigravity", "Antigravity 账号的添加方式": "Antigravity account setup method", "AtomCode": "AtomCode", "AutoClaw 国内版": "AutoClaw China edition", "AutoClaw 国际版": "AutoClaw International edition", "BDUSS 必填;请粘贴**完整 Cookie**(Cookie 编辑器一键导出即可)—— 其中 **PTOKEN 必须保留**,网关要用它向百度换发 KukuAI 业务会话令牌,缺了它模型刷新会报「未登录」。支持整段 Cookie 头、Cookie 编辑器导出的 JSON 数组,或 {BDUSS, STOKEN} 对象。KukuAI 没有刷新机制,登录态过期后重新粘贴即可。": "BDUSS is required; paste the **full Cookie** (a Cookie editor can export it in one click) — the **PTOKEN must be kept**, as the gateway uses it to exchange for a KukuAI business session token from Baidu; without it, model refresh reports \"Not signed in\". A full Cookie header, a JSON array exported by a Cookie editor, or a {BDUSS, STOKEN} object are all supported. KukuAI has no refresh mechanism, so once the login state expires, just paste it again.", "BDUSS=…; STOKEN=…(或 Cookie 编辑器导出的 JSON)": "BDUSS=…; STOKEN=… (or the JSON exported by a Cookie editor)", "CatPaw 的 X-Passport-Token(登录态 Cookie)": "CatPaw's X-Passport-Token (login-state Cookie)", "ChatGPT / Codex": "ChatGPT / Codex", "ChatGPT API": "ChatGPT API", "ChatGPT API 订阅": "ChatGPT API subscription", "Claude Code 本机订阅": "Claude Code local subscription", "Claude 订阅": "Claude subscription", "Cline Pass 的 API Key 在 app.cline.bot 获取(订阅制);端点为 OpenAI 兼容,模型清单以 Cline 控制台为准,模型名在模型管理里按裸名添加(如 glm-5.2 / kimi-k2.7-code / deepseek-v4-pro);上游按客户端形态校验,所需的客户端请求头已随卡预置": "Get the Cline Pass API Key at app.cline.bot (subscription-based); the endpoint is OpenAI-compatible, the model catalog follows the Cline console, and model names are added under Model management with the plain name (e.g. glm-5.2 / kimi-k2.7-code / deepseek-v4-pro); the upstream validates the client shape, so the required client request headers are preset on this card", "Cloud project 必填;不会借用其他 Google 提供商的凭证或额度。": "A Cloud project is required. No credentials or quota from other Google providers are borrowed.", "Cloud-IDE-JWT(三段点分)": "Cloud-IDE-JWT (three dot-separated segments)", "Cloudflare Account ID(32 位十六进制)": "Cloudflare Account ID (32 hex characters)", "Codex 订阅": "Codex subscription", "Command Code": "Command Code", "Cursor dashboard API key;loader 按需重新 exchange 模型 token,不提供手动令牌刷新。": "Cursor dashboard API key. The loader exchanges model tokens on demand; manual token refresh is not provided.", "DeepSeek 网页": "DeepSeek Web", "Gemini CLI / Code Assist": "Gemini CLI / Code Assist", "Gemini CLI 凭证文件绝对路径(只读,不复制或写回 refresh token)": "Absolute path to the Gemini CLI credential file (read-only; no copying or writing back refresh tokens)", "GitHub Copilot": "GitHub Copilot", "GitHub 官方设备码登录": "Official GitHub device-code sign-in", "GitHub 登录域名(留空使用 github.com)": "GitHub sign-in domain (leave blank for github.com)", "Google Cloud Project ID(必填,Standard / Enterprise 资格由上游判定)": "Google Cloud Project ID (required; upstream determines Standard / Enterprise eligibility)", "Google Cloud Project ID(必填,Standard / Enterprise 资格由上游判定);默认候选来自 {variable},请明确确认": "Google Cloud Project ID (required; upstream determines Standard / Enterprise eligibility). The default candidate comes from {variable}; confirm it explicitly.", "Google OAuth(Code Assist + Cloud project)": "Google OAuth (Code Assist + Cloud project)", "Google 授权(ACP)": "Google sign-in (ACP)", "Groq 的 OpenAI 兼容端点,使用 GroqCloud 的 API Key": "Groq's OpenAI-compatible endpoint; use a GroqCloud API Key", "IAM Identity Center(企业账号,直接授权)": "IAM Identity Center (organization account, direct authorization)", "JWT(三段点分;也可直接粘贴 Bearer 整行或 data.bin 内容)": "JWT (three dot-separated parts; you can also paste a whole Bearer line or the data.bin content)", "JWT(三段点分;也可直接粘贴 chatglm_token=… 整行)": "JWT (three dot-separated parts; a whole chatglm_token=… line works too)", "Kimi / Moonshot 国内版": "Kimi / Moonshot (China)", "Kimi / Moonshot 国内站 API Key,使用 moonshot.cn 按量接口;不是 Kimi Code 会员入口": "Use a Kimi / Moonshot China API Key with the pay-as-you-go endpoint at moonshot.cn; this is not the Kimi Code membership endpoint", "Kimi / Moonshot 国际版": "Kimi / Moonshot (International)", "Kimi / Moonshot 国际站 API Key,使用 moonshot.ai 按量接口;不是 Kimi Code 会员入口": "Use a Kimi / Moonshot International API Key with the pay-as-you-go endpoint at moonshot.ai; this is not the Kimi Code membership endpoint", "Kiro API key(ksk_…)。": "Kiro API key (ksk_…).", "Kiro 登录页(Google / GitHub 等)": "Kiro sign-in page (Google / GitHub and more)", "Kiro 网页登录": "Kiro web sign-in", "LM Studio(本地)": "LM Studio (Local)", "LobsterAI": "LobsterAI", "LongCat 的 OpenAI 兼容端点,使用 LongCat 平台的 API Key": "LongCat's OpenAI-compatible endpoint; use an API Key from the LongCat platform", "MClaw 由插件在网关电脑上启动专用 Chrome 窗口,独立登录环境也用于自动续期,不使用系统默认浏览器或应用内嵌窗口。": "The MClaw plugin opens a dedicated Chrome window on the gateway machine. Its isolated sign-in profile is also used for automatic renewal; it does not use the system default browser or the app's embedded window.", "MiniMax Code 国内版": "MiniMax Code (China)", "MiniMax Code 国际版": "MiniMax Code (Global)", "Mistral 的 OpenAI 兼容端点,使用 Mistral 控制台的 API Key": "Mistral's OpenAI-compatible endpoint; use an API Key from the Mistral console", "ModelScope 国内版": "ModelScope (China)", "ModelScope 国际版": "ModelScope (International)", "MonkeyCode": "MonkeyCode", "MonkeyCode 国际版": "MonkeyCode International edition", "MonkeyCode 自动网页登录仅限桌面端;浏览器面板请登录对应官网后粘贴 session。": "Automatic MonkeyCode web sign-in requires the desktop app. In the browser panel, sign in to the corresponding official site and paste your session.", "NVIDIA NIM 托管端点,Key 在 integrate.api.nvidia.com 申请": "NVIDIA NIM managed endpoint; apply for the Key at integrate.api.nvidia.com", "Nous Portal 的按量 API,使用 Portal 的 API Key;不是旧的订阅登录方式": "Nous Portal's pay-as-you-go API; use a Portal API Key, not the former subscription sign-in method", "OfficeAce 果办": "OfficeAce", "QuWork 凭证": "QuWork credentials", "QuWork 原设备标识": "Original QuWork device identity", "QwenWork 千问办公": "QwenWork (Public)", "QwenWork 千问办公企业版": "QwenWork (Enterprise)", "StepFun 国内版(按量)": "StepFun (China, pay as you go)", "StepFun 国内站按量 API;请使用按量 API Key,不要填 Step Plan 套餐 Key": "StepFun China pay-as-you-go API; use a pay-as-you-go API Key, not a Step Plan subscription Key", "StepFun 国际版(按量)": "StepFun (International, pay as you go)", "StepFun 国际站按量 API;请使用按量 API Key,不要填 Step Plan 套餐 Key": "StepFun International pay-as-you-go API; use a pay-as-you-go API Key, not a Step Plan subscription Key", "Tabbit 国内版": "Tabbit (China)", "Tabbit 国际版": "Tabbit (International)", "TokenPlan API Key(控制台 → 科研模型 → API Key)": "TokenPlan API Key (console → Research Models → API Key)", "User-Agent(可选)": "User-Agent (optional)", "accessToken 是 Accio 的登录凭证(一长串不透明 token,不是 JWT);refreshToken 可选,填了之后到期能自动续期。请填写 {label}账号的凭证 —— {siteNote}(最容易拿到的办法:直接用上方的「网页登录」,不需要手工找 token。)": "accessToken is Accio's login credential (a long opaque token, not a JWT); refreshToken is optional and enables automatic renewal on expiry. Enter the credential of the {label} account — {siteNote} (the easiest way to get it: just use \"Web login\" above; no need to hunt for the token manually.)", "accessToken 是 Trae 的 Cloud-IDE-JWT(三段点分),refreshToken 用于到期自动续期(本家 refreshToken 一次一换:换发一次旧的即作废,所以两份程序别同时刷同一个账号)。
    手工粘贴时请连 machineId / deviceId 一起填:上游把它们与登录时上传的设备公钥绑在一起判设备,凭空换一对会撞 2xxxx 那族设备绑定拒绝。
    没有这三样时的正路是用上方的「网页登录」;容器 / 远程部署形态按提示粘贴地址栏回调地址即可。": "accessToken is Trae's Cloud-IDE-JWT (three dot-separated segments), and refreshToken enables automatic renewal on expiry (this provider rotates refreshToken on every use: once exchanged, the old one is void, so do not refresh the same account from two programs at once).
    When pasting manually, fill in machineId / deviceId as well: upstream ties them to the device public key uploaded at sign-in to identify the device, and swapping in a new pair from nowhere triggers the 2xxxx family of device-binding rejections.
    Without these three, the proper route is \"Web login\" above; for container / remote deployments, paste the callback URL from the address bar as prompted.", "chat.deepseek.com 的 userToken.value,不是收费 API Key": "userToken.value from chat.deepseek.com, not a paid API key", "github-copilot/apps.json 或 opencode/auth.json": "github-copilot/apps.json or opencode/auth.json", "github.com 或 company.ghe.com": "github.com or company.ghe.com", "github.com:Iv1.b507a08c87ecfe98 或 github-copilot": "github.com:Iv1.b507a08c87ecfe98 or github-copilot", "monkeycode_ai_session 的值(也可直接粘贴整段 Cookie)": "The value of monkeycode_ai_session (you can also paste the whole Cookie)", "ms- 开头的 API 令牌": "API token starting with ms-", "project 必填;只读引用文件,模块的 OAuth 续期不写回客户端。": "A project is required. Files are referenced read-only; module OAuth renewal never writes back to the client.", "refreshToken 可选,填了到期可自动续期;两者都能从小浣熊客户端登录态文件里取到。": "refreshToken is optional and enables automatic renewal on expiry; both can be obtained from the Raccoon client login-state file.", "refreshToken 可选,填了可自动续期;两者都能从客户端登录态文件取到。同一个 Cline 账号两个池都能用,这里归入 {label}。": "refreshToken is optional and enables automatic renewal; both can be obtained from the client login-state file. The same Cline account works in both pools; here it is grouped under {label}.", "token 支持 enc: 前缀(Windows 上自动解密)。未填 refreshToken 无法自动续期。": "token supports the enc: prefix (decrypted automatically on Windows). Without a refreshToken, automatic renewal is not possible.", "token 是登录态 Cookie;CatPaw 没有刷新机制,过期后需在客户端重新登录。": "token is the login-state Cookie; CatPaw has no refresh mechanism, so sign in again in the client after it expires.", "token=…; user_id=…(也可粘贴 Copy as cURL 整段)": "token=…; user_id=… (you can also paste the whole Copy as cURL)", "user_ 开头的 API Key(也可直接粘贴 Authorization: Bearer … 整行)": "API Key starting with user_ (you can also paste the whole Authorization: Bearer … line)", "xAI 的 OpenAI 兼容端点,使用 xAI 控制台的 API Key;不是 Grok 网页订阅": "xAI's OpenAI-compatible endpoint; use an API Key from the xAI console, not a Grok web subscription", "your-company.vpc.qwenwork.cn 或 https://your-company.vpc.qwenwork.cn": "your-company.vpc.qwenwork.cn or https://your-company.vpc.qwenwork.cn", "{label} 网页登录的打开方式": "How to open {label} web login", "{label} 账号地区": "{label} account region", "{label} 账号的添加方式": "How to add a {label} account", "{label}账号已添加": "{label} account added", "{label}(只读本机)": "{label} (read-only local reference)", "{message}:请在打开的页面完成滑块,完成后回到这里点「已完成验证,继续发送」": "{message}: complete the slider in the page that just opened, then come back here and click \"Verification done, send again\"", "{message}:请手动打开验证页面 {url},完成后回到这里点「已完成验证,继续发送」": "{message}: open the verification page {url} manually, then come back here and click \"Verification done, send again\"", "{name} 不是合法 JSON:{reason}": "{name} is not valid JSON: {reason}", "{name}要粘一个 JSON 对象(形如 {sample})": "{name} requires a JSON object (like {sample})", "{n} 个账号": "{n} accounts", "{n} 个账号,点击添加": "{n} accounts, click to add", "{seconds}s 后重发": "Resend in {seconds}s", "✅ {label}账号已添加": "✅ {label} account added", "✅ {label}账号已添加{name}": "✅ {label} account added{name}", "✅ 已从 cc-switch 导入 {n} 个供应商": "✅ Imported {n} providers from cc-switch", "✅ 已创建自定义提供商「{name}」并添加账号": "✅ Created custom provider \"{name}\" and added an account", "✅ 已删除自定义提供商「{name}」{accounts}{keys}": "✅ Deleted custom provider \"{name}\"{accounts}{keys}", "✅ 已更新已有账号{name}(同一把 API Key 只保留一条,重复添加会合并)": "✅ Updated the existing account{name} (one account per API key; re-adding merges into it)", "✅ 已更新已有账号{name}(同一提供商内,同一把 API Key 只保留一条)": "✅ Updated the existing account{name} (one account per API key within each provider)", "✅ 登录成功,{edition}账号已加入列表": "✅ Signed in; {edition} account added to the list", "✅ 领取成功:{planId}{period}": "✅ Claim successful: {planId}{period}", " 同一家可以放多把 key,按优先级轮换。": " One provider can hold multiple keys, rotated by priority.", "「{name}」的账号添加功能还在开发中,敬请期待。": "Adding accounts for \"{name}\" is still in development — stay tuned.", "一个 Key 用遍多家模型,模型名用「厂商/模型」全称(如 deepseek/deepseek-chat)": "One Key works across many vendors; use the full \"vendor/model\" name (e.g. deepseek/deepseek-chat)", "上游不要鉴权时留空,并勾选下面一项(留空又不勾会被当成未配置凭证)": "Leave blank when the upstream needs no authentication, and check the option below (blank without the checkbox counts as no credential configured)", "上游信息": "Upstream info", "上游没有给出验证页面地址": "The provider did not return a verification page address", "上游要求人机验证,但没有给出验证页面地址,请稍后重试": "The provider requires human verification but returned no verification page address. Please try again later", "不使用预置": "No preset", "不可领({status})": "Not claimable ({status})", "不授权": "Do not authorize", "不支持导入": "Import not supported", "不是有效的凭证文件:内容要是一个 JSON 对象": "Not a valid credential file: the content must be a JSON object", "不是有效的凭证文件:需要包含 accessToken 与 uid": "Not a valid credential file: accessToken and uid are required", "不是自定义提供商": "Not a custom provider", "不需要 Key:转发与拉取模型都不发送鉴权头": "No Key needed: neither forwarding nor model fetching sends auth headers", "不需要登录:点下面的按钮,网关会直接在智谱清言换发一份访客凭证并加入账号列表(也可以先填个备注名)。访客凭证可以直接用来对话,免费额度由上游按设备发放。

    注意:访客账号没有积分体系 —— 它与「会员积分」「每日登录积分」「活动领取」相关的接口一律需要登录,因此那些能力对访客会如实跳过(账号页的积分、签到中心都不显示读数)。想要积分就用「填写凭证」粘一个已登录账号的令牌,或「导入桌面端登录态」。": "No sign-in needed: click the button below and the gateway will obtain a guest credential from Zhipu Qingyan directly and add it to the account list (you can fill in a note name first). The guest credential can be used for chat right away; the free quota is issued by the upstream per device.

    Note: a guest account has no points system — its member points, daily sign-in points and activity claim endpoints all require sign-in, so those capabilities are skipped for guests (no readings are shown on the accounts page or in the check-in center). To get points, use \"Fill in credentials\" to paste a signed-in account token, or \"Import desktop sign-in state\".", "两版账号可同时保存,各自一份模型清单(国内版与国际版是两家提供商,可分别启用与映射)。": "Both editions' accounts can be saved at once, each with its own model catalog (the China and International editions are two providers that can be enabled and mapped separately).", "中国版": "China edition", "也支持本软件导出的单账号 JSON 文件,保留账号凭证与附加信息。": "Individual account JSON files exported by this application are also supported, preserving credentials and additional account data.", "仅 API Key(模型调用,不含墨点额度)": "API Key only (model access, no ink-credit balance)", "仅填写自己的 GitHub 令牌": "Enter only your own GitHub token", "仅支持仍有有效 Gemini Code Assist Standard / Enterprise 资格并绑定 Cloud project 的账号。个人免费版及 Google AI Pro / Ultra 已于 2026-06-18 停止支持;Standard / Enterprise 新订阅已于 2026-10-09 停售。不会切换到其他 Google 产品或额度池。": "Only accounts with valid existing Gemini Code Assist Standard / Enterprise eligibility and a linked Cloud project are supported. The individual free tier and Google AI Pro / Ultra support ended on 2026-06-18; sales of new Standard / Enterprise subscriptions ended on 2026-10-09. No other Google product or quota pool will be used.", "仅读取本机 Claude Code 的当前订阅登录。若未登录,请先在自己的终端登录;本地凭证仍由 CLI 管理。": "Read only the current local Claude Code subscription sign-in. If signed out, sign in in your own terminal first. The CLI continues to manage local credentials.", "今天没有需要领的活动(都已到账)": "No campaigns to claim today (all already credited)", "今天(北京时间 {day})已试 {attempts} 次,还能试 {left} 次{next}
    ": "Tried {attempts} times today (Beijing time {day}); {left} attempts left{next}
    ", "从 Google 官方源下载并核验 SHA-512;下载使用网关默认出口。更新失败保留旧版,进行中的对话不受替换影响。": "Downloads from Google’s official source and verifies SHA-512 using the gateway’s default network connection. Failed updates keep the previous version, and active conversations are not interrupted.", "从别的机器(或 OfficeAce 桌面端 models.json)取三项贴进来:模型网关基址(baseUrl,形如 https://modelgw-…/v2)与 modelAppKey / modelAppSecret。这三项就能转发(网关凭据不过期);控制面临时凭据(accessKeyId 等)可选,留空则额度/自动续期不可用,但不影响转发。": "Grab three items from another machine (or from the OfficeAce desktop app's models.json) and paste them here: the model gateway base URL (baseUrl, shaped like https://modelgw-…/v2) plus modelAppKey / modelAppSecret. These three are enough to forward requests (the gateway credential never expires); the control-plane temporary credentials (accessKeyId and so on) are optional — leaving them blank disables balance queries and auto-renewal but does not affect forwarding.", "从本机导入桌面端登录态": "Import desktop login state from this machine", "任务镜像 id": "Task image id", "余额查询": "Balance query", "你企业的千问办公旗舰版域名(企业管理后台地址栏的域名,如 your-company.vpc.qwenwork.cn)": "Your QwenWork Enterprise flagship domain (the domain in your enterprise admin address bar, e.g. your-company.vpc.qwenwork.cn)", "使用 Google 账号登录": "Sign in with Google", "使用 Zai 账号登录": "Sign in with Zai", "使用 {name} 模板新建提供商": "Create a provider using the {name} template", "使用个人访问令牌(PAT)": "Use a personal access token (PAT)", "使用本机 Claude Code 登录": "Use local Claude Code sign-in", "使用本机 Kimi Work 登录": "Use local Kimi Work sign-in", "使用模板新建提供商": "Create a provider from this template", "使用网页令牌,不是收费 API Key。": "Use a web session token, not a paid API key.", "使用自己的 GitHub 账号授权;模型条款须在官方客户端手动确认。": "Authorize with your own GitHub account. Model terms must be accepted manually in the official client.", "先在网关所在机器启动 LM Studio 服务;localhost 指向网关所在机器,远程或容器部署请改为网关可访问的地址。默认无需鉴权;启用认证后请取消「该上游无需鉴权」并填写真实 API Key": "Start the LM Studio server on the machine running the gateway first. localhost refers to the gateway's machine; for remote or container deployments, use an address reachable from the gateway. Authentication is disabled by default; if you enable it, uncheck \"This upstream needs no authentication\" and enter a real API Key", "免费模型不用填 Key(默认勾上「该上游无需鉴权」,网关自动用匿名凭证);付费模型则填 Zen 的 API Key。免费档上游只认官方客户端形态,已默认开启「伪装 OpenCode 官方客户端」": "Free models need no Key (\"This upstream needs no authentication\" is checked by default, and the gateway uses anonymous credentials automatically); for paid models, enter your Zen API Key. The free tier only accepts the official client form, so \"Emulate the official OpenCode client\" is on by default", "关联用户指定的本地 Copilot 凭证(只读)": "Link a user-selected local Copilot credential (read-only)", "内嵌窗口": "Embedded window", "内嵌窗口打开;关窗即取消等待(Google 账号被拒时改用系统浏览器)": "Opens in the embedded window; closing it cancels the wait (if a Google account is rejected, switch to the system browser)", "内嵌窗口打开;完成后自动加入列表,关窗即取消等待": "Opens in the embedded window; added to the list when done; closing it cancels the wait", "内嵌窗口打开;扫码完成后自动加入列表,关窗即取消等待": "Opens in an embedded window; the account is added automatically once you have scanned — closing the window cancels the wait", "内嵌窗口用全新环境,多账号互不影响;关窗即取消等待": "The embedded window uses a fresh environment, so multiple accounts do not affect each other; closing it cancels the wait", "内嵌窗口登录": "Sign in in the embedded window", "内嵌窗口(推荐)": "Embedded window (recommended)", "准备验证…": "Preparing verification…", "凭据 JSON": "Credential JSON", "凭证 JSON 或模型凭证": "Credential JSON or model credential", "凭证仅发送至当前网关": "Credentials sent only to this gateway", "凭证文件在哪?": "Where is the credential file?", "凭证文件类型": "Credential file type", "创建并添加账号": "Create and add account", "创建这个提供商,并同时建立它的第一个账号。": "Create this provider and its first account in one step.", "删除功能不可用(脚本未就绪)": "Delete is unavailable (script not ready)", "删除失败:{reason}": "Delete failed: {reason}", "删除此提供商": "Delete this provider", "千问办公 国内版": "QwenWork (China)", "千问办公 国际版": "QwenWork (International)", "千问办公{label}暂时无法登录:上游只接受它自己的官方回调地址,不论证码到本机。": "QwenWork {label} cannot be signed in right now: the upstream service only accepts its own official callback address, so the authorization code never comes back to this machine.", "原样提交本次流程的完整回调 URL。": "Submit the complete callback URL for this flow unchanged.", "去安装提供商插件包": "Install a provider plugin pack", "及 {n} 个账号": " and {n} accounts", "发送中…": "Sending…", "发送失败:{message}": "Send failed: {message}", "发送未确认:登录窗口已弹出,请在弹出的窗口中手动完成登录": "Send unconfirmed: the sign-in window has opened; complete the sign-in manually in that window", "取消失败:{message}": "Cancel failed: {message}", "取消安装": "Cancel installation", "取消等待": "Cancel sign-in", "只使用此路线签发的 OAuth 凭证;direct SIWC 与 Codex 客户端身份不同。": "Use only OAuth credentials issued for this route. Direct SIWC and Codex use different client identities.", "只关联真实 CLI 2.1.259+ 的当前订阅;不代登录、不复制或续期客户端凭证。": "Link only the current subscription of a genuine CLI 2.1.259+. Do not sign in on your behalf, copy or renew client credentials.", "只拿到 JWT 时填这里;Cookie 里有 token 可留空": "Fill this only if you have just the JWT; leave empty if the Cookie contains token", "只有「内嵌窗口」能恢复第三方入口:系统浏览器里我们无法改动登录页": "Only the Embedded window can restore third-party options: we cannot modify the sign-in page in the system browser", "只看这一类": "Only this category", "只读引用 Grok Build home/scope/account;每次读取当前登录态,不复制 token,不回退退出前快照,不主动续期;源有效期未知时不作长期有效承诺。": "Reference Grok Build home/scope/account read-only. Each read uses the current sign-in without copying tokens, reverting to a pre-sign-out snapshot or renewing. An unknown source expiry is not a promise of long-lived credentials.", "只读引用本机 Kiro CLI/IDE;每次读取校验同一邮箱,不复制 token、不主动续期或回写,失效后由原客户端重登或同步。": "Reference local Kiro CLI/IDE sign-in read-only. Each read verifies the same email without copying tokens, renewing or writing back. After expiry, sign in again or sync in the original client.", "只读所选标准文件与账号条目并验证 GitHub/Copilot 身份;只保存引用,不保存令牌副本,不扫描目录、读取 keychain 或运行 CLI。": "Read only the selected standard file and account entry and verify the GitHub/Copilot identity. Store a reference, not copied tokens; do not scan directories, read keychains or run a CLI.", "只读校验明确选择的本机凭证文件;仅保存引用与稳定身份,不复制或续期原客户端令牌。": "Validate only the explicitly selected local credential file, read-only. Store a reference and stable identity, without copying or renewing the original client's tokens.", "只读用户明确指定的文件和账号条目,不自动扫描。": "Read only the explicitly selected file and account entry; no automatic scanning.", "只读验证所选 Gemini CLI 登录态和指定 project 的 Code Assist Standard / Enterprise 资格;不会启动 CLI、续期或复制令牌。": "Verify the selected Gemini CLI sign-in and Code Assist Standard / Enterprise eligibility for the specified project, read-only. Do not start the CLI, renew or copy tokens.", "只读验证本机 Claude Code 当前订阅登录;凭证仍由原 CLI 管理。": "Verify the current local Claude Code subscription sign-in read-only. The original CLI continues to manage its credentials.", "只读验证本机 Kimi 桌面版已有的 Work 登录,不复制令牌;账号可能没有可用模型。": "Verify the existing local Kimi desktop Work sign-in read-only, without copying tokens. The account may have no available models.", "可选": "Optional", "可选(cloudaicompanionProject):留空由网关自动发现": "Optional (cloudaicompanionProject); if blank, the gateway discovers it automatically", "可选,仅远程兑换码激活需要;从官方客户端读取": "Optional; needed only for remote code activation. Read it from the official client.", "可选,展示用": "Optional; for display", "可选,没有则无法自动续期": "Optional; without it, automatic renewal is not possible", "可选,用于生成账号标识": "Optional; used to build the account identifier", "可选,留空使用凭据里的 user_name": "Optional; defaults to the user_name in the credential", "可选,留空使用账号名或邮箱": "Optional; if left blank the account name or email is used", "可选,留空使用账号姓名、邮箱或令牌指纹": "Optional; defaults to the account name, email, or token fingerprint", "可选,留空使用账号昵称或邮箱": "Optional; defaults to the account nickname or email", "可选,留空则用 key 尾号": "Optional; defaults to the key suffix", "可选,留空则用 userId": "Optional; defaults to userId", "可选,留空则用上游账号昵称": "Optional; defaults to the upstream account nickname", "可选,留空则用上游返回的账号名或账号 id": "Optional; defaults to the account name or account id returned by upstream", "可选,留空则用凭证里的账号名": "Optional; defaults to the account name in the credential", "可选,留空则用文件里的昵称": "Optional; leave empty to use the nickname from the file", "可选,留空则用登录名或 uid": "Optional; defaults to the login name or uid", "可选,留空则用脱敏手机号": "Optional; defaults to the masked phone number", "可选,留空则用脱敏手机号或 userId": "Optional; defaults to the masked phone number or userId", "可选,留空则用账号 uk": "Optional; defaults to the account uk", "可选,留空则用账号昵称": "Optional; defaults to the account nickname", "可选,留空则用账号昵称或 userId": "Optional; leave blank to use the account nickname or userId", "可选,留空则用邮箱或令牌尾号": "Optional; defaults to the email or token suffix", "可选,留空用「AtomCode」": "Optional; defaults to “AtomCode”", "可选,留空用「OfficeAce 果办」": "Optional; defaults to “OfficeAce”", "可选,留空自动生成": "Optional; generated automatically if blank", "可选,留空自动用昵称": "Optional; defaults to the nickname", "可选,给这个访客账号起个备注名": "Optional; a note name for this guest account", "可选,续期时带上": "Optional; sent when renewing", "可选,讯飞侧 userid": "Optional; the userid on the iFlytek side", "可选:发起对话必需,留空则由网关从该账号已有任务里自动发现,发现不到时之后手动补": "Optional; required to start a conversation. If blank, the gateway discovers it automatically from this account's existing tasks; if it cannot find one, fill it in manually later.", "可选:账号邮箱,用于展示与身份识别(换新令牌也能认回同一账号)": "Optional; the account email, used for display and to recognize the identity (the same account is recognized even after switching to a new token)", "可选;UUID 形态,与凭据同生共死": "Optional; UUID form, lives and dies with the credential", "可选;填了才能到期自动续期": "Optional; required for automatic renewal on expiry", "可选;用于去重与展示名(留空时网关会问一次上游)": "Optional; used for deduplication and the display name (when blank, the gateway asks upstream once)", "可选;用于生成账号 id 与展示名": "Optional; used to generate the account id and display name", "可选;纯数字串(上游只收 8–24 位数字)": "Optional; digits only (upstream accepts only 8–24 digits)", "可领取": "Claimable", "同一家可以混着放:有 Key 的账号与无鉴权账号各按各的规则走;无需鉴权的账号也能并存多条(各自可配不同的出网代理)": "Keyed and no-auth accounts can coexist in one provider, each routed by its own rules; multiple no-auth accounts are allowed too (each with its own egress proxy)", "同地址换 anthropic 协议即走它的 Claude 兼容端点。转发必须填 OpenCode Go 的 API Key(订阅制;获取模型清单不需要 Key,但发请求上游会回 401「Missing API key」)": "Switch the protocol to anthropic on the same address to use its Claude-compatible endpoint. Forwarding requires an OpenCode Go API Key (subscription-based; fetching the model catalog needs no Key, but requests get a 401 \"Missing API key\" from upstream)", "响应为空": "Empty response", "商汤日日新的 OpenAI 兼容端点;余额查询走控制台账号密码(见下方「余额查询」一段)": "SenseNova's OpenAI-compatible endpoint; balance query uses the console account and password (see \"Balance query\" below)", "回调已提交,仍需等待网关确认账号登录完成。": "Callback submitted. Wait for the gateway to confirm account sign-in is complete.", "回调未被接受,请重新复制本次登录的完整回调地址": "Callback not accepted. Copy the complete callback URL for this sign-in again.", "国内版": "China edition", "国内版与**国际版是两套独立的账号与套餐**,凭证与领取的套餐都不通用。": "The China edition and **the International edition are two separate sets of accounts and plans**; credentials and claimed plans do not carry over between them.", "国内版登录页没有 Google / GitHub 入口(它用微信 / 手机号 / 邮箱登录)": "The China edition's sign-in page has no Google / GitHub options (it uses WeChat / phone / email sign-in)", "国内版的登录站点是 www.accio-ai.com,与国际版不是同一站。": "The China edition's sign-in site is www.accio-ai.com, a different site from the International edition's.", "国内版(WorkBuddy)": "China edition (WorkBuddy)", "国内站为 https://api.siliconflow.cn/v1": "China site: https://api.siliconflow.cn/v1", "国内站(minimaxi.com);OpenAI 兼容地址为 https://api.minimaxi.com/v1": "China site (minimaxi.com); the OpenAI-compatible address is https://api.minimaxi.com/v1", "国际版": "International edition", "国际版 z.ai 的 Coding 套餐;OpenAI 兼容地址为 https://api.z.ai/api/coding/paas/v4": "The International edition z.ai Coding plan; the OpenAI-compatible address is https://api.z.ai/api/coding/paas/v4", "国际版与国内版是**两套独立的账号**(同一账号体系的两个站点),凭证不通用。": "The International and China editions are **two separate sets of accounts** (two sites of the same account system); credentials do not carry over.", "国际版与国内版账号体系独立,请填国际版的凭证。未填 refreshToken 无法自动续期。": "The International and China editions have separate account systems; enter the International edition's credentials. Without a refreshToken, automatic renewal is not possible.", "国际版登录页默认只显示邮箱登录,勾选后恢复 Google / GitHub / X 入口": "The International edition's sign-in page shows only email sign-in by default; checking this restores the Google / GitHub / X options", "国际版的推理站点是 api.z.ai,与国内版不是同一站;套餐也各自独立。": "The International edition's inference site is api.z.ai, a different site from the China edition's; plans are separate as well.", "国际版(WorkBuddy AI)": "International edition (WorkBuddy AI)", "国际站 Coding 套餐;OpenAI 兼容地址为 https://api.minimax.io/v1": "International site Coding plan; the OpenAI-compatible address is https://api.minimax.io/v1", "在 AtomGit 的 AtomCode 页面登出后取得两项贴进来:accessToken 与 refreshToken。续期令牌建议填写——本家令牌不是 JWT(约 7 天到期,读不到过期时间),没有它账号无法自动续期,到期只能重新登录。": "Paste the two values from the AtomCode page on AtomGit: accessToken and refreshToken. The refresh token is strongly recommended — this provider's token is not a JWT (it expires in about 7 days and carries no readable expiry), so an account without it cannot renew itself and must be re-authorised once it expires.", "在 DeepSeek 官网完成登录,自动加入账号列表。": "Sign in on the official DeepSeek website to add your account automatically.", "在 GitHub 输入设备码 {code},核对账号与授权权限。设备码过期后需要重新发起登录。": "Enter device code {code} on GitHub and check the account and requested permissions. Start sign-in again if the device code expires.", "在 cc-switch 里找到": "Found", "在 chat.deepseek.com 登录本人账号后,从浏览器开发者工具的 Application → Local Storage 复制 userToken 的 value。Cookie 可选,需补充时粘贴该站点请求里的完整 Cookie;登录态失效或要求人机验证时,请回官方网页手动登录后更新。这里不接受收费 API Key。": "Sign in to your own account at chat.deepseek.com, then copy the value field of userToken from Application → Local Storage in your browser's developer tools. Cookie is optional; if needed, paste the full Cookie header from a request to that site. If your session expires or human verification is required, sign in manually on the official website and update your credentials. Paid API keys are not accepted here.", "在 web.tabbit.ai 登录后,从开发者工具 Application → Cookies 复制 token 与 user_id,或直接粘贴该站点请求的 Copy as cURL 整段。国际站没有可复刻的网页授权回调,手机号登录也处在上游灰度里,所以只能导入已有登录态。登录态有效期约 7 天,过期后重新导入。Cookie 与 JWT 至少填一项。": "After signing in at web.tabbit.ai, copy token and user_id from DevTools → Application → Cookies, or paste the whole Copy as cURL of a request to that site. The international site has no reproducible web-auth callback, and phone login is still in upstream rollout, so only an existing login state can be imported. The login state lasts about 7 days; re-import it after expiry. Provide at least one of Cookie or JWT.", "在 web.tabbit.com 登录后,从开发者工具 Application → Cookies 复制 token 与 user_id,或直接粘贴该站点请求的 Copy as cURL 整段。登录态有效期约 7 天,上游没有续期接口,过期后重新导入即可。Cookie 与 JWT 至少填一项。": "After signing in at web.tabbit.com, copy token and user_id from DevTools → Application → Cookies, or paste the whole Copy as cURL of a request to that site. The login state lasts about 7 days and the upstream has no refresh endpoint; re-import it after expiry. Provide at least one of Cookie or JWT.", "在内嵌窗口里完成官方登录,成功后自动加入账号列表。": "Complete the official sign-in in the embedded window; the account is added to the list automatically on success.", "在{label}的 Qoder 账号设置 → Integrations 生成 PAT(别填 Google / GitHub 的令牌)。两个地区的账号与凭证不通用。": "Generate a PAT in the Qoder account settings → Integrations for {label} (do not use a Google / GitHub token). Accounts and credentials do not carry over between the two regions.", "在应用内嵌窗口完成 WPS 登录,登录凭据仅交给原插件校验并保存到当前网关。": "Sign in to WPS in the app's embedded window. Credentials are passed only to the original plugin for verification and saved to this gateway.", "在所选站点的 MonkeyCode 官方页面完成登录和验证码,成功后自动读取登录态并加入账号列表,无需手动复制 Cookie。": "Complete sign-in and verification on the official MonkeyCode page for the selected region. Your session is captured and the account is added automatically; no need to copy cookies.", "在打开的官方授权页里用微信扫码登录(页面会直接显示二维码)。扫码成功后自动加入账号列表。": "Scan the WeChat QR code on the official authorization page that opens (the QR code appears right away). The account is added to the list automatically after a successful scan.", "在打开的官方登录页里完成登录,成功后自动加入账号列表。": "Complete the sign-in on the official page that opens; the account is added to the list automatically on success.", "在打开的登录页里用百度账号登录 KukuAI 主站(手机验证码 / 扫码均可),登录成功后自动加入账号列表。网关会向百度换发 KukuAI 业务会话令牌(依赖本机已安装库库AI 客户端)。": "Sign in to the KukuAI main site with your Baidu account on the login page that opens (SMS code or QR scan both work); the account is added to the list automatically on success. The gateway exchanges it with Baidu for a KukuAI business session token (requires the KukuAI client installed on this machine).", "在打开的登录页里登录 Google 账号(Antigravity 的授权页),授权完成后自动加入账号列表。": "Sign in with your Google account on the login page that opens (Antigravity's authorization page); the account is added to the list automatically once authorization completes.", "在打开的窗口里用百度账号登录 KukuAI 主站(手机验证码 / 扫码均可),登录成功后自动加入账号列表。网关会向百度换发 KukuAI 业务会话令牌(依赖本机已安装库库AI 客户端)。": "In the window that opens, sign in to the KukuAI main site with your Baidu account (SMS code or QR scan both work); the account is added to the list automatically on success. The gateway exchanges it with Baidu for a KukuAI business session token (requires the KukuAI client installed on this machine).", "在打开的窗口里登录 Google 账号(Antigravity 的授权页),授权完成后自动加入账号列表。": "Sign in with your Google account in the window that opens (Antigravity's authorization page); the account is added to the list automatically once authorization completes.", "在打开的页面里登录千问办公{label}({site})的账号,登录完成后会自动加入列表。两版的账号与凭证不通用。": "Sign in to your QwenWork {label} ({site}) account in the page that opens. The account joins the list as soon as you finish. The two editions have separate accounts and credentials.", "在浏览器中打开登录页": "Open the sign-in page in your browser", "在系统浏览器授权指定 project 的 Code Assist Standard / Enterprise;账号与 project 仍须通过真实预检。": "Authorize Code Assist Standard / Enterprise for the specified project in your system browser. The account and project must still pass a live preflight.", "在豆包官方页面完成登录,窗口会自动读取完整 Cookie 并加入账号列表;不需要安装豆包工作客户端。": "Sign in on the official Doubao page. The window will read the complete cookies and add the account; the Doubao Work client is not required.", "地区": "Region", "填写信息后发起授权,进度与失败原因会显示在这里。": "Enter the required information and start authorization; progress and errors appear here.", "填写具体站点名称;模板类型不会作为站点身份": "Enter a name for this site; the template type does not identify the site", "填写凭证": "Enter credentials", "填写凭证添加": "Enter credentials to add", "备注名": "Label", "套餐": "Plan", "如何获取": "How to get it", "如官方页面跳回的是网关本机地址,请在桌面面板完成回调;手机端不会猜测未声明的回调输入。": "If the official page redirects to a gateway-local address, complete the callback in the desktop panel. Mobile does not guess undeclared callback inputs.", "如官方页面跳回的是网关本机地址,请粘贴完整回调;没有授权页的本机方式仍需等待网关确认。": "If the official page redirects to a local address on the gateway machine, paste the complete callback URL. Local methods without an authorization page still require confirmation from the gateway.", "如:公司中转站、个人备用站": "e.g. Company gateway, Personal backup", "如:智谱 GLM": "e.g. Zhipu GLM", "安装在运行网关的机器,不是当前手机或浏览器所在设备。由 Agent2API 独立管理,不覆盖原有安装;仅点击按钮后下载。": "Installs on the machine running the gateway, not this phone or browser device. Agent2API manages a separate copy without replacing existing installations. Downloads start only after you click the button.", "安装已取消,原有版本未更改。": "Installation canceled. The previous version was not changed.", "安装操作未得到有效确认,请重新检查状态;不会自动重复安装。": "The installation request was not confirmed. Check the status again; installation will not be retried automatically.", "完成官方登录后粘贴包含 state 的完整 loopback 回调地址。": "After completing official sign-in, paste the complete loopback callback URL including state.", "完成登录后自动加入账号列表,昵称取自上游。": "Added to the account list automatically after sign-in; the nickname comes from upstream.", "完整 JSON 已包含时无需填写": "Not needed if already included in the JSON", "完整回调地址(原样提交)": "Complete callback URL (submitted unchanged)", "官方 PKCE 登录;浏览器登录态有有效期,失效后需重登,不提供维护续期。": "Official PKCE sign-in. Browser sessions expire and require signing in again; maintenance renewal is not provided.", "官方客户端凭证目录:Windows 是 C:\\Users\\<你的用户名>\\AppData\\Local\\CodeBuddyExtension\\Data\\Public\\auth,macOS 是 ~/Library/Application Support/CodeBuddyExtension/Data/Public/auth": "Official client credential directory: Windows — C:\\Users\\\\AppData\\Local\\CodeBuddyExtension\\Data\\Public\\auth; macOS — ~/Library/Application Support/CodeBuddyExtension/Data/Public/auth", "官方已确认到账": "Officially confirmed as credited", "官方浏览器登录": "Official browser sign-in", "官方浏览器登录(粘贴完整回调)": "Official browser sign-in (paste the full callback URL)", "官方网页正常登录后的 Cookie;风控时请手动更新": "Cookie from a normal sign-in on the official website; update it manually if verification is required", "客户端版本": "Client version", "宿主已持久保存的稳定 hostId(urn:uuid,不能每次生成)": "The stable hostId already persisted by the host (urn:uuid; do not generate a new one each time)", "导入": "Import", "导入 QuWork 本机登录态": "Import local QuWork sign-in", "导入 kiro-cli / Kiro IDE 登录态": "Import kiro-cli / Kiro IDE sign-in", "导入中…": "Importing…", "导入凭证文件": "Import credential file", "导入失败": "Import failed", "导入失败:{reason}": "Import failed: {reason}", "导入所选": "Import selected", "导入所选({n})": "Import selected ({n})", "导入桌面端登录态": "Import desktop login state", "导入用户指定的本地 Copilot 凭证": "Import user-selected local Copilot credentials", "将在新标签页中打开授权页;完成后自动加入账号列表。": "The authorization page opens in a new tab; the account is added to the list automatically when done.", "将在新标签页中打开授权页;完成后自动加入账号列表。若页面跳回本机地址后账号没有出现,按提示把地址栏里的完整回调地址粘贴回来即可。": "The authorization page opens in a new tab; the account is added to the list automatically when done. If the page jumps back to a local address and the account does not appear, paste the full callback URL from the address bar when prompted.", "将打开内嵌窗口;授权完成后自动加入账号列表。关掉窗口即取消等待。授权页最后可能提示无法打开 zcode:// 链接,这是正常的 —— 结果已由服务端记下": "The embedded window will open; the account is added to the list automatically once authorization completes. Closing the window cancels the wait. The authorization page may end with a message that it cannot open the zcode:// link — that is normal; the result has already been recorded server-side", "将打开内嵌窗口;授权完成后自动加入账号列表。远程面板可粘贴回调地址。关掉窗口即取消等待。链接 5 分钟内有效,超时或未点就会作废(可重新发起)": "The embedded window will open; the account is added to the list automatically once authorization completes. On a remote panel you can paste the callback URL. Closing the window cancels the wait. The link is valid for 5 minutes; if it times out or is not clicked, it is voided (you can start again)", "将打开内嵌窗口;登录完成后自动加入账号列表。关掉窗口即取消等待": "The embedded window will open; the account is added to the list automatically after sign-in. Closing the window cancels the wait", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的 Trae 账号);同机完成后自动加入,Docker / 远程面板按提示粘贴地址栏回调地址。": "The authorization page will open in your system default browser (reusing the Trae account already signed in there); on the same machine the account is added automatically when done. For Docker / remote panels, paste the callback URL from the address bar as prompted.", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的 ZCode 账号);授权完成后自动加入账号列表。页面最后可能提示无法打开 zcode:// 链接,属正常现象": "The authorization page will open in your system default browser (reusing the ZCode account already signed in there); the account is added to the list automatically once authorization completes. A final message that the zcode:// link cannot be opened is normal", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的华为云账号);授权码由网关轮询云端取回,与浏览器跑在哪台机器无关,完成后自动加入账号列表": "The authorization page will open in your system default browser (reusing the Huawei Cloud account already signed in there); the gateway polls the cloud for the authorization code, so it does not matter which machine the browser runs on. The account is added to the list automatically once done", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的华为云账号);浏览器与网关不在同一台机器时,按上方说明把最终回调地址粘贴回面板": "The authorization page will open in your system default browser (reusing the Huawei Cloud account already signed in there); when the browser and the gateway are not on the same machine, paste the final callback URL back into the panel as described above", "将用系统默认浏览器打开登录页(会复用浏览器里已登录的 Accio 账号);完成登录后自动加入账号列表,关掉弹窗即取消等待": "The sign-in page will open in your system default browser (reusing the Accio account already signed in there); the account is added to the list automatically after sign-in, and closing the popup cancels the wait", "将用系统默认浏览器打开登录页(会复用浏览器里已登录的 LobsterAI 账号);完成登录后自动加入账号列表,关掉弹窗即取消等待": "The sign-in page will open in your system default browser (reusing the LobsterAI account already signed in there); the account is added to the list automatically after sign-in, and closing the popup cancels the wait", "小米 MiMo Token Plan 套餐(新加坡站)": "Xiaomi MiMo Token Plan (Singapore site)", "小米 MiMo 按量 API;使用按量 API Key,不要混用 Token Plan 套餐 Key": "Xiaomi MiMo pay-as-you-go API; use a pay-as-you-go API Key, not a Token Plan subscription Key", "小米 MiMo(按量)": "Xiaomi MiMo (pay as you go)", "已到账": "Credited", "已取消登录等待": "Pending sign-in canceled", "已取消领取": "Claim canceled", "已取消验证码": "Verification canceled", "已填写手机号,正在发送验证码…": "Phone number entered; sending the code…", "已声明无需鉴权:账号会被正常选路,出网时不带任何鉴权头": "Marked as needing no authentication: the account is routed normally, and no auth headers are sent outbound", "已完成验证,继续发送": "Verification done, send again", "已导入 {ok} 个,失败 {fail} 个(失败项已标注在列表里)": "Imported {ok}, failed {fail} (failed items are marked in the list)", "已建 API": "Configured APIs", "已建过 · {n} 个账号,点击继续添加": "Already created · {n} accounts, click to add more", "已建过,点击继续添加账号": "Already created, click to add another account", "已打开官方登录页,请在窗口中完成登录…": "Official sign-in page opened; complete sign-in in the window…", "已收到授权回调,正在完成登录…": "Authorization callback received. Completing sign-in…", "已收到浏览器授权,正在获取账号凭据…": "Browser authorization received. Retrieving account credentials…", "已有 API Key(留空则在浏览器登录后自动创建)": "Existing API Key (leave blank to create one after browser sign-in)", "已有验证码流程正在进行,请先完成或取消": "A verification is already in progress. Complete or cancel it first.", "已检测到本机客户端": "Local client detected", "已点发送,等待短信…": "Sent; waiting for the SMS…", "已用系统默认浏览器打开登录页,请在浏览器中完成登录…": "Sign-in page opened in your system default browser; complete sign-in in the browser…", "已读取 QuWork 本机登录态,正在添加账号。": "QuWork local sign-in read. Adding the account…", "已领取,等官方确认": "Claimed, awaiting official confirmation", "引用本机 Gemini CLI oauth_creds.json(只读)": "Reference local Gemini CLI oauth_creds.json (read-only)", "当前分类里没有「{keyword}」,其它分类有 {n} 个匹配": "No match for \"{keyword}\" in this category; {n} found in other categories.", "当前壳版本不支持 AutoClaw 网页登录,请更新应用": "This app version does not support AutoClaw web login; update the app", "当前没有可领取的套餐(活动尚未开始)": "No plans are available to claim right now (the event has not started yet)", "当前版本:{version}": "Current version: {version}", "当前环境不支持领取(桥接方法缺失)": "Claiming is not supported in this environment (bridge method missing)", "必填,CatPaw 账号标识": "Required; CatPaw account identifier", "恢复 Google / GitHub 入口": "Restore Google / GitHub options", "所选代理会保存到账号设置,后续请求继续使用。": "The selected proxy will be saved in account settings and used for subsequent requests.", "手动代理": "Manual proxy", "手动导入 GitHub OAuth / GitHub 令牌": "Manually provide a GitHub OAuth / GitHub token", "手机号": "Phone number", "手机验证码登录": "SMS code login", "打开 LobsterAI(有道龙虾)的官方登录页(lobsterai.youdao.com)并用你的 LobsterAI 账号登录:登录成功后官方页面会跳回本机并自动加入账号列表 —— 回调落在网关自己的端口上,所以浏览器要与网关在同一台机器上;授权码只在本机传给网关,界面不显示明文 token。": "Open the official LobsterAI sign-in page (lobsterai.youdao.com) and sign in with your LobsterAI account: once finished, the official page returns to this machine and the account is added automatically — the callback lands on the gateway's own port, so the browser must be on the same machine as the gateway; the auth code is only handed to the gateway locally and no plaintext token is shown in the UI.", "打开 Trae 的官方授权页(trae.cn)并用你的 Trae 账号登录:授权完成后官方页面会跳回本机的一个临时端口;同机部署自动接收,Docker / 远程面板请按提示复制地址栏回调地址。": "Open the official authorization page for Trae (trae.cn) and sign in with your Trae account: once authorized, the official page redirects back to a temporary port on this machine; a same-machine deployment receives it automatically, while Docker / remote panels should copy the callback URL from the address bar as prompted.", "打开 Accio {label}的官方登录页({site})并用你的 Accio 账号登录:登录成功后官方页面会跳回本机;同机自动完成,Docker / 远程面板按提示粘贴回调地址即可(授权码只在本机传给网关,界面不显示明文 token)。": "Open the official sign-in page for Accio {label} ({site}) and sign in with your Accio account: on success the official page redirects back to this machine; a same-machine setup completes automatically, while Docker / remote panels just paste the callback URL as prompted (the authorization code is passed to the gateway only on this machine, and no plaintext token is shown in the UI).", "打开 Accio {label}登录页": "Open the Accio {label} sign-in page", "打开 Antigravity 网页登录": "Open Antigravity web login", "打开 AtomGit 授权页登录:登录完成后网关会自动轮询代理取回令牌并加入账号列表(授权回调由代理终结,不回到本机,因此无需手工回填回调地址)。": "Open the AtomGit authorization page and sign in: once finished, the gateway automatically polls the broker for the token and adds the account (the callback is terminated by the broker and never returns to this machine, so no callback URL needs to be filled in).", "打开 CatPaw 网页登录": "Open CatPaw web login", "打开 Cline 授权页": "Open Cline authorization page", "打开 CodeArts 授权页": "Open CodeArts authorization page", "打开 LobsterAI 登录页": "Open the LobsterAI sign-in page", "打开 Qoder 网页登录": "Open Qoder web login", "打开 Trae 授权页": "Open Trae authorization page", "打开 ZCode {label}的官方授权页并用你的账号登录。授权结果由 ZCode 服务端记录,网关在后台自动取回凭证并加入账号列表。": "Open the official authorization page for ZCode {label} and sign in with your account. The authorization result is recorded by the ZCode server; the gateway fetches the credential in the background and adds the account to the list.", "打开 ZCode {label}授权页": "Open the ZCode {label} authorization page", "打开下一步授权页": "Open the next authorization page", "打开人机验证": "Open human verification", "打开千问办公网页登录": "Open QwenWork web login", "打开华为云 CodeArts 的官方授权页登录:登录完成后官方页面会把浏览器带回网关自己的 /oauth/callback,网关用一次性授权码换取临时凭据并加入账号列表。
    网关跑在另一台机器上时,网页端会提示把地址栏中的最终回调地址直接粘贴回面板。": "Open the official Huawei Cloud CodeArts authorization page to sign in: once done, the official page brings the browser back to the gateway's own /oauth/callback, and the gateway exchanges the one-time authorization code for temporary credentials and adds the account to the list.
    When the gateway runs on another machine, the web UI prompts you to paste the final callback URL from the address bar back into the panel.", "打开华为云授权页登录:登录完成后网关会自动轮询云端取回授权码并加入账号列表(不需要装 OfficeAce 桌面端,也无需手工回填回调地址)。": "Open the Huawei Cloud authorization page and sign in: once finished, the gateway automatically polls the cloud for the authorization code and adds the account to the list (no OfficeAce desktop app required, and no need to paste a callback URL back manually).", "打开官方授权页": "Open the official authorization page", "打开官方授权页完成设备码授权,登录的是{label}({site})的账号。": "Open the official authorization page and complete the device-code authorization; you will be signing in to a {label} ({site}) account.", "打开授权页": "Open the authorization page", "打开授权页完成确认,账号自动加入 {label}{note}": "Open the authorization page and confirm; the account is added to {label} automatically{note}", "打开方式": "Open with", "打开网页登录": "Open web login", "按已验证邮箱只读引用 cursor-agent 当前登录态;每次操作重读 keychain/auth.json,不复制 token、不主动运行 CLI 续期,退出或失效后需在原客户端重登。": "Reference the current cursor-agent sign-in read-only, pinned to the verified email. Each operation rereads keychain/auth.json without copying tokens or running CLI renewal. Sign in again in the original client after signing out or expiry.", "授权只读引用,不复制、不修改、不续期本机凭证": "Allow read-only references, without copying, modifying or renewing local credentials", "授权回调提交失败;请检查输入并重试,登录仍在等待。": "Authorization callback submission failed. Check the input and retry; sign-in is still waiting.", "授权每次请求只读所选文件,固定当前账号与工作区?": "Allow read-only access to the selected file on each request, pinned to this account and workspace?", "授权码或令牌(原样提交)": "Authorization code or token (submitted unchanged)", "授权读取所选条目": "Allow reading the selected entry", "授权页、换证与取账号信息都走这条线路。无头服务器上没有系统代理,这里不选就走直连(多数网络里到不了 Google)。": "The authorization page, code exchange and account lookup all use this route. A headless server has no system proxy, so leaving it unset means a direct connection (which cannot reach Google in most networks).", "探测失败:{message}": "Probe failed: {message}", "接入一个兼容上游": "Connect a compatible upstream", "控制台 uaa-token(粘贴令牌值或完整的 uaa-token=… Cookie 项)": "Console uaa-token (paste the token value or the full uaa-token=… cookie entry)", "推荐": "Recommended", "提交中…": "Submitting…", "提交授权回调": "Submit authorization callback", "提供商仅在已启用且加载后出现。登录与本机引用均作用在所连接网关,不是手机。": "Providers appear only after being enabled and loaded. Sign-in and local references apply to the connected gateway, not this phone.", "插件专用 Chrome 登录(自动读取凭据)": "Plugin-managed Chrome sign-in (automatic credential capture)", "插件会在网关电脑上启动独立浏览器并读取登录结果,不使用系统默认浏览器。": "The plugin starts a separate browser on the gateway machine and reads the sign-in result. It does not use the system's default browser.", "搜索提供商": "Search providers", "搜索提供商…": "Search providers…", "整份粘贴官方插件 / CLIProxyAPI 落盘的凭据 JSON(形如 {\"codearts_provider_credential\":{…}},铺平的也行)。
    必填:access_key_id、secret_access_key、security_token。要能自动续期,必须连 refresh_token 与 oauth_context 一起粘 —— 临时凭据约一小时到期,缺这半块就续不回来,只能重新登录。": "Paste the whole credential JSON written to disk by the official plugin / CLIProxyAPI (like {\"codearts_provider_credential\":{…}}; a flattened form also works).
    Required: access_key_id, secret_access_key, security_token.For automatic renewal you must paste refresh_token and oauth_context as well — temporary credentials expire in about an hour, and without that half they cannot be renewed; you would have to sign in again.", "文件是{edition}凭证,已按该版本导入": "The file contains {edition} credentials and has been imported as that edition", "新增独立登录": "New independent sign-in", "新建自定义提供商": "New custom provider", "新网关确认代理同次保存后不再重复提交;旧网关使用兼容保存并提示核查,失败不会撤销已添加的账号。": "No second save is sent when the new gateway confirms the proxy was saved with the account. Older gateways use a compatibility save with a verification warning; failure does not remove the added account.", "方案:{label}": "Scheme: {label}", "无需手动复制令牌,验证码在官方页面完成。": "No token copying needed. Complete verification on the official page.", "旧网关未确认代理同次保存,已使用兼容接口保存;请在账号设置中确认代理选择。": "The older gateway did not confirm a combined proxy save. The compatibility endpoint was used; check the proxy selection in account settings.", "明文 JWT 或 auth.json 里的 enc: 加密值(自动解密)": "Plaintext JWT, or the enc: encrypted value in auth.json (decrypted automatically)", "明文 JWT(国际版账号的 access token)": "Plaintext JWT (the access token of an International edition account)", "明确选择文件与只读授权;不修改或续期原客户端登录态。": "Explicitly select the file and authorize read-only access. The original client sign-in is neither modified nor renewed.", "明确选择文件内的账号条目键名": "Select the exact account-entry key in the file", "明确选择标准凭证文件的完整绝对路径": "Select the full absolute path to a standard credential file", "是否授权只读取此文件和所选账号凭证?": "Allow read-only access to this file and the selected account credential?", "显示凭证": "Show credentials", "智谱 bigmodel.cn 的 Coding 套餐,Key 在 open.bigmodel.cn/usercenter/apikeys": "Zhipu's bigmodel.cn Coding plan; get the Key at open.bigmodel.cn/usercenter/apikeys", "暂不支持自动安装": "Automatic installation unavailable", "暂时无法检查官方最新版;已安装且满足最低要求的客户端仍可使用。": "Cannot check the latest official version right now. An installed client that meets the minimum requirements can still be used.", "暂时无法登录": "Sign-in unavailable", "有可用更新": "Update available", "未开启客户端调试端口时,请使用网页登录或粘贴 Cookie。": "If the client debugging port is not enabled, use web sign-in or paste cookies.", "未知错误": "Unknown error", "未能获取授权地址,请重试": "Could not get the authorization URL; try again", "未能读取 cc-switch 数据": "Could not read cc-switch data", "未领取成功": "Claim unsuccessful", "本体订阅未返回动态登录方式(501);不会猜测导入接口或显示插件手动凭证入口。请更新网关后重试。": "The native subscription returned no dynamic sign-in methods (501). Import endpoints will not be guessed and no plugin manual-credentials form will be shown. Update the gateway and retry.", "本地 Ollama、OpenCode Zen 免费档这类上游要勾上,否则账号不可用": "Check this for upstreams like local Ollama or the OpenCode Zen free tier; otherwise the account cannot be used", "本家有两个**互不替代**的凭证,按你要用的功能填,至少填一个:编码套餐 API Key 用于转发推理(打 {site})与查询窗口限额(每 N 小时 / 每周的剩余比例);jwt 用于领取套餐与查询余额(打 zcode.z.ai 的 billing 网关,官方叫 Coding Plan JWT,是一串三段点分的字符串)。余额两把都能查、但读到的东西不同:jwt 读到余额桶与套餐到期,API Key 读到窗口限额;而领取只认 jwt、转发只认 API Key。请填写 {label}账号的凭证 —— {plan}(最容易拿到的办法:直接用上方的「网页登录」—— 它会替你把这个 API Key 换好,两个凭证一起拿到。)": "This provider has two credentials that **do not replace each other**; fill in the one(s) for the features you need, at least one: the Coding Plan API Key is used for forwarding inference (hits {site}) and for querying the window limits (the remaining percentage of each N-hour / weekly window); the jwt is used for claiming plans and querying balance (hits the billing gateway at zcode.z.ai; officially called a Coding Plan JWT, a three-segment dot-separated string). Either one can query balance, but they read different things: the jwt reads the balance buckets and the plan expiry, while the API Key reads the window limits; and claiming only accepts the jwt, forwarding only accepts the API Key. Please enter the credentials for the {label} account — {plan} (the easiest way: just use \"Web login\" above — it exchanges this API Key for you and gets both credentials at once.)", "本机 Ollama 的 OpenAI 兼容端点,无需 API Key(默认已勾上「该上游无需鉴权」,鉴权头一个都不发)": "The local Ollama OpenAI-compatible endpoint; no API Key needed (\"This upstream needs no authentication\" is checked by default, and no auth headers are sent at all)", "本机 auth.json(只读引用)": "Local auth.json (read-only reference)", "本机凭证已校验。宿主仅保存文件引用与稳定身份,每次请求重新读取。": "Local credentials verified. The host stores only a file reference and stable identity, rereading it on each request.", "本机部署会自动完成登录;服务器或 Docker 部署时,若授权后跳到无法访问的 localhost 或 127.0.0.1 页面,请把地址栏中的完整回调地址粘贴回来。AWS 登录如需继续授权,请打开下一步授权页,完成后再次回填。请勿修改地址或把回调链接发给他人。": "Local deployments complete sign-in automatically. For server or Docker deployments, if authorization redirects to an unreachable localhost or 127.0.0.1 page, paste the complete URL from the address bar here. If AWS needs another authorization step, open the next authorization page and paste its new callback URL afterward. Do not modify or share callback URLs.", "本次未确认到账": "Not confirmed as credited this time", "条可导入": "are importable", "条配置,其中": "configs in cc-switch, of which", "桌面运行时不可用(Tauri 未初始化)": "Desktop runtime unavailable (Tauri not initialized)", "检测失败": "Check failed", "模型网关基址": "Model gateway base URL", "正在准备 AWS 授权…": "Preparing AWS authorization…", "正在准备安装…": "Preparing installation…", "正在取消安装…": "Canceling installation…", "正在启用新版本…": "Activating the new version…", "正在打开百度登录页…": "Opening the Baidu sign-in page…", "正在扫描本机 cc-switch…": "Scanning cc-switch on this machine…", "正在换发访客凭证…": "Requesting a guest credential…", "正在校验官方安装包…": "Verifying the official download…", "正在检查安装状态…": "Checking installation status…", "正在检查客户端版本…": "Checking the client version…", "正在添加…": "Adding…", "正在等待{name}登录完成;完成或取消后才能发起新的登录": "Waiting for {name} sign-in to finish; you can start a new sign-in only after it completes or is canceled", "此 Copilot 手动令牌方式未声明回调输入契约,暂不发起;请改用设备码登录或只读本机引用。": "This Copilot manual-token method declares no callback input contract and will not be started. Use device-code sign-in or a read-only local reference instead.", "此提供商已有登录任务,请先完成或取消。": "A sign-in is already in progress for this provider. Complete or cancel it first.", "此提供商未声明动态登录方式,请在网关桌面面板使用其既有入口;手机端不会猜测凭证字段。": "This provider declares no dynamic sign-in methods. Use its existing entry point in the gateway desktop panel; the mobile app will not guess credential fields.", "此方式需要原样提交授权码或令牌;输入会隐藏,不会当作 URL 或 API 凭证解析。提交后仍需等待网关确认。": "This method requires an unchanged authorization code or token. The input is hidden and is not parsed as a URL or API credential. Wait for gateway confirmation after submitting.", "此方式需要完整回调地址;请原样粘贴,不拆分参数或重建地址。提交后仍需等待网关确认。": "This method requires the complete callback URL. Paste it unchanged, without splitting parameters or rebuilding the URL. Wait for gateway confirmation after submitting.", "每个账号使用独立的官方登录目录。终端登录沿用该终端的网络环境;这里选择的代理用于添加后的模型请求。": "Each account uses its own official sign-in directory. Terminal sign-in uses that terminal's network settings; the proxy selected here applies to model requests after the account is added.", "每周": "Weekly", "每日": "Daily", "每月": "Monthly", "没有则无法自动续期": "Without it, automatic renewal is not possible", "没有匹配「{keyword}」的提供商": "No providers match \"{keyword}\"", "浏览器拦截了弹窗": "The browser blocked the pop-up", "浏览器授权已收到,但网关直连 DeepAI 失败。请在登录代理中填入系统代理或选择可用代理后重新登录。": "Browser authorization was received, but the gateway could not reach DeepAI directly. Fill from the system proxy or choose a working sign-in proxy, then sign in again.", "浏览器授权已收到,但通过所选代理获取账号凭据失败。请检查该代理后重新登录。": "Browser authorization was received, but retrieving account credentials through the selected proxy failed. Check the proxy and sign in again.", "浏览器显示登录完成后,网关还需联网获取账号凭据。若浏览器或 Magpie 使用系统代理,请先在下方点击「填入系统代理」;选择直连不会跟随系统代理。": "After the browser shows sign-in complete, the gateway still needs to retrieve account credentials online. If your browser or Magpie uses a system proxy, click “Fill from system proxy” below first. Direct connections do not use the system proxy.", "浏览器登录(墨点额度 + 自动创建 API Key)": "Browser sign-in (ink credits + automatic API Key creation)", "浏览器登录(复用已有 API Key)": "Browser sign-in (reuse an existing API Key)", "浏览器面板无法读取其他站点的登录态,请使用本人网页账号的令牌。": "The browser panel cannot read sign-in sessions from other sites. Use the token from your own web account.", "浏览器面板无法读取其它站点的 Cookie,请登录 www.doubao.com 后,使用「填写凭证」粘贴完整 Cookie。": "The browser panel cannot read cookies from other sites. Sign in at www.doubao.com, then paste the complete cookies under Credentials.", "添加 DeepSeek 账号": "Add DeepSeek account", "添加 {name} 账号": "Add {name} account", "添加中…": "Adding…", "添加到 ": "Add to ", "添加到此提供商": "Add to this provider", "添加失败:{reason}": "Add failed: {reason}", "添加小浣熊账号": "Add Raccoon account", "添加方式": "Add method", "添加时要用它出网校验凭证(例如 Antigravity 要打一次 Google 的 token 端点)。无头服务器上没有系统代理,这里不选就走直连。": "Used to reach the network when validating the credential on add (for example, Antigravity calls a Google token endpoint). A headless server has no system proxy, so leaving it unset means a direct connection.", "添加访客账号": "Add a guest account", "添加账号": "Add account", "火山引擎 Coding 套餐;通用推理接入点为 https://ark.cn-beijing.volces.com/api/v3": "Volcano Engine Coding plan; the general inference endpoint is https://ark.cn-beijing.volces.com/api/v3", "点击添加账号": "Click to add an account", "点击登录后,在 Google 页面授权,再原样粘贴授权码或完整页面地址;已登录的 agy 会直接连接。Google 凭证由官方客户端保管,Agent2API 只保存本机连接标记。同一网关仅使用 agy 当前登录的一个账号,不支持复制为多个独立账号。": "Click Sign in, authorize on Google's page, then paste the authorization code or full page URL unchanged. If agy is already signed in, it connects directly. The official client keeps Google's credentials; Agent2API stores only a local connection marker. Each gateway uses agy's current account, not multiple independent copies.", "点开即预填,填 Key 接入": "Opens prefilled; enter your Key to connect", "点按钮后先过一次滑块验证(官方风控),随后打开登录页,登录完成即自动添加账号。
    这是国际版官方唯一的登录方式;已在客户端登录过的,用「导入桌面端登录态」更快。": "After clicking the button, first pass a slider verification (the vendor's risk control), then the sign-in page opens and the account is added automatically once you sign in.
    This is the only official sign-in method for the International edition; if you are already signed in to the client, \"Import desktop login state\" is faster.", "独立 Kiro OAuth 支持续期;保留原登录验证,不接受任意 bearer token。": "Independent Kiro OAuth supports renewal. Original sign-in validation is retained; arbitrary bearer tokens are not accepted.", "用 AutoClaw 账号绑定的手机号登录:点击「获取验证码」,收到短信后填入下方并登录。验证码由本机直接提交给官方接口,界面不显示 token。": "Sign in with the phone number bound to your AutoClaw account: click \"Get code\", then enter the SMS code below and sign in. The code is submitted from this machine directly to the official API; no token is shown in the UI.", "用 CatPaw 账号完成登录(美团 passport),成功后自动加入账号列表。": "Sign in with your CatPaw account (Meituan Passport); the account is added to the list automatically on success.", "用 Loomy 账号绑定的手机号登录:点「获取验证码」后填入即可。这是本家最省事的入口。": "Sign in with the phone number bound to your Loomy account: click \"Get code\" and enter it. This is the easiest way in for this provider.", "用于转发;形如 apiKey.secret 两段点分(不填则这个账号不能转发)": "Used for forwarding; two dot-separated segments like apiKey.secret (if left blank, this account cannot forward)", "用于领取套餐与查询余额;不填则这个账号不能领取与查余额": "Used for claiming plans and querying balance; if left blank, this account cannot claim or check balance", "用户 ID": "User ID", "用绑定的手机号登录:点「获取验证码」后填入即可。这是国内版官方唯一的登录方式。": "Sign in with your bound phone number: click \"Get code\" and enter it. This is the only official sign-in method for the China edition.", "用绑定的手机号登录:点「获取验证码」,收到短信后填入下方并点「登录并添加」。这是国内站官方唯一的登录方式。": "Sign in with your bound phone number: tap \"Get code\", enter the SMS code below and click \"Sign in and add\". This is the only official sign-in method for the China site.", "由插件打开浏览器登录": "Sign in using the plugin's browser", "由本机 Grok Build CLI 执行官方设备授权;仅保存 home/scope/account 引用,不镜像 token,后续操作只读,不提供维护续期。": "The local Grok Build CLI performs official device authorization. Only a home/scope/account reference is stored, without token copies. Subsequent operations are read-only; maintenance renewal is not provided.", "留空使用 1.17.16(10117016)": "Leave empty to use 1.17.16(10117016)", "留空使用该提供商默认值": "Leave empty to use the provider's default", "留空使用账号默认名称": "Leave blank to use the default account name", "留空使用默认的 User-Agent;可从预置里选一个内置客户端,也可以直接填写。": "Leave empty to use the default User-Agent; pick a built-in client preset or type one directly.", "留空则用提供商名称": "Leave blank to use the provider name", "留空自动查找;也可填写网关本机 agy 可执行文件的绝对路径": "Leave blank to detect automatically, or enter the absolute path to agy on the gateway machine", "登录 / 添加 {name} 账号": "Sign in / add {name} account", "登录 JWT": "Login JWT", "登录 chat.deepseek.com 后,打开开发者工具 → Application → Local Storage,复制 userToken 的 value。": "Sign in at chat.deepseek.com, open Developer Tools → Application → Local Storage, and copy the value field of userToken.", "登录 session(一长串)": "Login session (a long string)", "登录中…": "Signing in…", "登录代理不支持轮询出网,请选择一条已保存的代理": "Sign-in does not support rotating proxies. Select one saved proxy.", "登录凭证 accessToken": "Sign-in credential accessToken", "登录出网代理": "Sign-in outbound proxy", "登录取消未确认,请刷新状态后重试。": "Sign-in cancellation was not confirmed. Refresh the status and retry.", "登录失败:{message}": "Sign-in failed: {message}", "登录尚未完成,请继续通过共享登录桥等待结果": "Sign-in is not complete yet. Continue waiting for the result through the shared sign-in bridge.", "登录已结束": "Sign-in has ended", "登录并添加": "Sign in and add", "登录态文件路径:~/.box-agent/config/auth.json(Windows:C:\\Users\\<你的用户名>\\.box-agent\\config\\auth.json)": "Login-state file path: ~/.box-agent/config/auth.json (Windows: C:\\Users\\\\.box-agent\\config\\auth.json)", "登录授权地址无效,已取消本次等待。": "The sign-in authorization URL is invalid; this wait was canceled.", "登录桥未返回已完成的账号或会话,请重试": "The sign-in bridge did not return a completed account or session. Try again.", "登录桥返回了空会话,无法确认账号已添加": "The sign-in bridge returned an empty session, so account addition cannot be confirmed.", "相同协议和地址的提供商已经存在。可以继续新建独立提供商,或明确选择已有提供商添加账号。": "A provider with the same protocol and address already exists. Create a separate provider, or select an existing one to add an account.", "看全部匹配": "See all matches", "确定删除自定义提供商「{name}」?将同时删除该提供商下 {count} 个账号,删除后无法恢复。": "Delete custom provider \"{name}\"? This will also delete {count} accounts under it; deletion cannot be undone.", "站点名称": "Site name", "端砚由插件在网关电脑上启动独立的 Edge、Chrome 或 Chromium 窗口,不使用系统默认浏览器或应用内嵌窗口。": "The InkStone plugin opens a separate Edge, Chrome or Chromium window on the gateway machine. It does not use the system default browser or the app's embedded window.", "等待 Accio {label}登录完成…": "Waiting for Accio {label} sign-in…", "等待 AtomCode 登录完成…": "Waiting for AtomCode sign-in…", "等待 CatPaw 登录完成…": "Waiting for CatPaw sign-in…", "等待 Cline 授权确认…": "Waiting for Cline authorization confirmation…", "等待 CodeArts 登录完成…": "Waiting for CodeArts sign-in…", "等待 Google 授权完成…": "Waiting for Google authorization…", "等待 KukuAI 登录完成…": "Waiting for KukuAI sign-in…", "等待 LobsterAI 登录完成…": "Waiting for LobsterAI sign-in…", "等待 MonkeyCode 登录完成…": "Waiting for MonkeyCode sign-in…", "等待 OfficeAce 登录完成…": "Waiting for OfficeAce sign-in…", "等待 OrcaTerm 登录完成…": "Waiting for OrcaTerm sign-in…", "等待 Qoder 授权完成…": "Waiting for Qoder authorization…", "等待 Trae 授权完成…": "Waiting for Trae authorization…", "等待 ZCode {label}授权完成…": "Waiting for ZCode {label} authorization…", "等待你在官方页面完成登录,成功后自动添加账号。": "Waiting for you to sign in on the official page. Your account will be added automatically on success.", "等待千问办公登录完成…": "Waiting for the QwenWork sign-in to finish…", "等待小浣熊登录完成…": "Waiting for Raccoon sign-in…", "等待插件完成登录": "Waiting for the plugin to complete sign-in", "等待浏览器完成登录": "Waiting for browser sign-in to complete", "等待浏览器授权;若本机回调页面无法打开,请复制地址栏中的完整地址回填。": "Waiting for browser authorization. If the local callback page cannot open, copy the complete address from the address bar and paste it here.", "等待登录完成…": "Waiting for sign-in…", "等待网页登录…": "Waiting for web login…", "等待豆包工作登录完成…": "Waiting for Doubao Work sign-in…", "粘贴 API Key": "Paste API Key", "粘贴 API 令牌": "Paste API token", "粘贴 Accio 的 accessToken": "Paste the Accio accessToken", "粘贴 Antigravity 的 Google refresh token(以 1// 开头;直接粘贴含 refresh_token= 的整行也行)。
    这是网页登录之外的手工入口(例如从已登录的官方 IDE 里导出)。refresh token 不会过期,access token 到期由网关自动续期;令牌丢了只能重新走 Google 授权,请妥善保存。": "Paste Antigravity's Google refresh token (starts with 1//; pasting the whole line containing refresh_token= also works).
    This is a manual entry besides web login (for example, exported from the official IDE you are already signed in to). The refresh token does not expire, and the gateway renews the access token automatically when it expires; if the token is lost, you can only go through Google authorization again, so keep it safe.", "粘贴 Command Code 的 API Key(user_ 开头;从官方 CLI 的 ~/.commandcode/auth.json 或网页 studio 获取)。整行 / 带引号 / 带 Bearer 前缀地粘都行,网关会自己剥成裸 key。key 不过期、也没有续期接口,失效后重新获取即可;添加时网关会做一次轻量探活,失败不影响添加。": "Paste the Command Code API Key (starts with user_; get it from the official CLI's ~/.commandcode/auth.json or the web studio). Pasting the whole line / with quotes / with the Bearer prefix all work; the gateway strips it down to the bare key itself. The key does not expire and there is no renewal API, so if it stops working just get a new one. When adding, the gateway runs a lightweight liveness check; a failure does not affect adding.", "粘贴 Cookie": "Paste Cookie", "粘贴 Google refresh token": "Paste Google refresh token", "粘贴 ModelScope 的 API 令牌(ms- 开头,在 {site} 的「访问令牌」页获取)。
    {siteNote}
    这枚令牌两用:网关既用它调推理,也用它读账号身份、魔粒余额与每日签到。令牌长期有效、没有续期接口,失效后重新获取再粘一次即可。": "Paste a ModelScope API token (starts with ms-; create one on the \"Access tokens\" page of {site}).
    {siteNote}
    The same token serves two purposes: the gateway uses it both to call inference and to read the account identity, the credits balance and the daily check-in. The token is long-lived and there is no renewal API — if it stops working, just create a new one and paste it again.", "粘贴 OrcaTerm 的 OAuth accessToken(JWT,三段点分;从桌面客户端 data.bin 或 Web 版 Cookie ot_session 获取)。直接粘贴含 Bearer / ot_session= 的整行也行,网关会自己剥成裸 token。添加后由网关自动续期(上游有续期接口),无需跟随 2 小时时效手动更换。": "Paste OrcaTerm's OAuth accessToken (a JWT with three dot-separated parts; available from the desktop client's data.bin or the web version's ot_session cookie). Pasting a whole line containing Bearer / ot_session= is fine too — the gateway strips it down to the bare token. After adding, the gateway renews it automatically (the upstream has a renewal API), so you do not need to follow the 2-hour expiry by hand.", "粘贴 Qoder 个人访问令牌(pt-…)": "Paste the Qoder personal access token (pt-…)", "粘贴 accessToken": "Paste accessToken", "粘贴 access_token(一长串 JWT)": "Paste access_token (a long JWT)", "粘贴 session cookie": "Paste session cookie", "粘贴 token / refreshToken": "Paste token / refreshToken", "粘贴 userToken.value": "Paste userToken.value", "粘贴 workos:… 开头的令牌(不带前缀也会自动补上)": "Paste a token starting with workos:… (the prefix is added automatically if missing)", "粘贴 www.doubao.com 的完整 Cookie(必须含 sessionid),也支持 Cookie JSON 数组或对象。复用豆包工作账号的额度;Cookie 失效后需重新登录,没有自动续期。": "Paste the complete www.doubao.com cookies, including sessionid. Cookie JSON arrays and objects are also accepted. Uses your Doubao Work account quota; expired cookies require signing in again and cannot be renewed automatically.", "粘贴令牌": "Paste token", "粘贴令牌对": "Paste token pair", "粘贴你本人已授权的 GitHub OAuth 令牌(不是设备码或 Copilot 短令牌)。令牌仍需由 GitHub 验证并交换;CLI 专用令牌可能不支持编辑器令牌交换。": "Paste your authorized GitHub OAuth token, not a device code or short-lived Copilot token. GitHub must still validate and exchange it; CLI-only tokens may not support editor-token exchange.", "粘贴完整登录凭证 JSON,或只填模型凭证 llmToken。仅模型凭证可对话;积分、续期和奖励需要登录凭证 accessToken。": "Paste the full sign-in JSON or just the model credential llmToken. Model-only credentials support chat; credits, renewal and rewards require accessToken.", "粘贴智谱清言的访问令牌(JWT,三段点分)。获取方式:浏览器打开 chatglm.cn 并登录后,在开发者工具的 Application → Cookies 里复制 chatglm_token 的值(也可以直接粘 chatglm_token=…; 整行)。粘贴后会先向上游校验一次,校验通过才落账号;登录账号的积分、签到能力都能用,之后由网关自动续期(上游有续期接口)。": "Paste a Zhipu Qingyan access token (a JWT with three dot-separated parts). How to get it: open chatglm.cn in a browser, sign in, then copy the value of the chatglm_token cookie from Application → Cookies in the developer tools (pasting the whole chatglm_token=…; line works too). It is verified against the upstream once after pasting, and the account is only saved if that passes; signed-in accounts get points and sign-in capability, and the gateway renews it automatically afterwards (the upstream has a renewal API).", "粘贴登录凭据": "Paste login credentials", "粘贴的是登录 session(同时是模型网关的 token)。Loomy 没有续期接口,session 有效期约 14 天,过期后重新登录即可。": "What you paste is the login session (which is also the model gateway token). Loomy has no renewal API; the session is valid for about 14 days, so just sign in again after it expires.", "粘贴网关凭据": "Paste gateway credentials", "粘贴网页登录凭证": "Paste web login credentials", "粘贴网页登录态 cookie monkeycode_ai_session 的值(在浏览器里复制整段 Cookie 直接粘贴也行,网关会自己剥出值)。
    {siteNote}
    MonkeyCode 没有续期接口:session 有效期约 30 天(硬限制),过期后重新登录网页、再粘贴一次即可。": "Paste the value of the web session cookie monkeycode_ai_session (copying the whole Cookie in the browser and pasting it directly also works; the gateway extracts the value itself).
    {siteNote}
    MonkeyCode has no renewal API: the session is valid for about 30 days (a hard limit); once it expires, sign in to the web page again and paste it one more time.", "粘贴网页访问令牌": "Paste a web access token", "粘贴访问令牌": "Paste an access token", "系统浏览器": "System browser", "系统浏览器可复用已有登录态(国际版推荐);内嵌窗口更干净。": "The system browser can reuse an existing login state (recommended for the International edition); the embedded window is cleaner.", "系统浏览器打开(复用已登录的 Cline 账号);完成后自动加入列表": "Opens in the system browser (reuses the signed-in Cline account); added to the list when done", "系统浏览器打开(复用已登录的 Google 账号);完成后自动加入列表": "Opens in the system browser (reuses the Google account already signed in); added to the list when done", "系统浏览器打开(复用已登录的 Zai / Google 账号);完成后自动加入列表": "Opens in the system browser (reuses the signed-in Zai / Google account); added to the list when done", "系统浏览器打开(复用已登录的美团账号);完成后自动加入列表": "Opens in the system browser (reuses the signed-in Meituan account); added to the list when done", "系统浏览器打开(复用已登录账号);完成后自动加入列表": "Opens in the system browser (reuses a signed-in account); added to the list when done", "系统默认浏览器": "System default browser", "组织登录地址(Start URL)": "Organization sign-in address (Start URL)", "继续新建独立提供商": "Create a separate provider", "续期令牌": "Refresh token", "编码套餐 API Key": "Coding Plan API Key", "网关 Secret": "Gateway secret", "网关未返回有效的手动回调输入契约;请更新网关后重新发起。": "The gateway did not return a valid manual callback input contract. Update the gateway and start again.", "网页 Cookie": "Web Cookie", "网页登录": "Web login", "网页登录 / 填写凭证": "Web sign-in / Enter credentials", "网页登录的打开方式": "How to open web login", "网页登录(Zai / Google)": "Web login (Zai / Google)", "网页访问令牌": "Web access token", "腾讯 TokenHub 国内版(按量)": "Tencent TokenHub (China, pay as you go)", "腾讯 TokenHub 国内站按量 API;使用 TokenHub API Key,不是 Token Plan 套餐或 WorkBuddy 凭证": "Tencent TokenHub China pay-as-you-go API; use a TokenHub API Key, not Token Plan or WorkBuddy credentials", "腾讯 TokenHub 国际版(按量)": "Tencent TokenHub (International, pay as you go)", "腾讯 TokenHub 国际站按量 API;使用 TokenHub API Key,不是 Token Plan 套餐或 WorkBuddy 凭证": "Tencent TokenHub International pay-as-you-go API; use a TokenHub API Key, not Token Plan or WorkBuddy credentials", "自定义": "Custom", "自建聚合面板:填你自己的站点地址。余额查询用该账号的 API Key 打 {base}/v1/usage,不需要额外配置": "Self-hosted aggregation panel: fill in your own site address. Balance query calls {base}/v1/usage with this account's API key; no extra setup", "自建聚合面板:填你自己的站点地址;余额查询要另填 NewAPI 的个人访问令牌(见下方「余额查询」一段)": "Self-hosted aggregation panel: fill in your own site address; balance query additionally needs a NewAPI personal access token (see \"Balance query\" below)", "获取风控配置失败,将直接尝试领取:{message}": "Failed to get the risk-control config; trying to claim directly: {message}", "获取风控配置失败:{message}": "Could not load verification settings: {message}", "获取验证码": "Get code", "要添加到其他站点,请返回「已建 API」重新选择": "To add to another site, return to Configured APIs and select it", "解锁 Premium": "Unlock Premium", "访客模式": "Guest mode", "访客模式(免登录)": "Guest mode (no sign-in)", "访问令牌": "Access token", "该上游无需鉴权(不发送鉴权头)": "This upstream needs no authentication (no auth headers are sent)", "该地址已有提供商": "A provider already uses this address", "该提供商": "This provider", "该提供商已不存在或地址已变更,请重新选择": "This provider no longer exists or its address has changed; select it again", "该提供商已不存在(可能已被删除),请刷新后重试": "This provider no longer exists (it may have been deleted); refresh and try again", "该提供商账号添加功能即将上线": "Account adding for this provider is coming soon", "该登录需要继续跳转,请在网关桌面面板重新发起。": "This sign-in requires another redirect. Start it again in the gateway desktop panel.", "该自定义提供商已不存在(可能已被删除),请刷新后重试": "This custom provider no longer exists (it may have been deleted); refresh and try again", "请使用网页访问令牌,不要填写 sk- 开头的 API Key。": "Use a web access token, not an API key starting with sk-.", "请先选择一个自定义提供商": "Select a custom provider first", "请在弹出的滑块中完成验证(官方要求的风控步骤)": "Complete the verification in the slider popup (a risk-control step required by the vendor)", "请在插件打开的专用 Chrome 窗口中登录移动云(yun.139.com)。登录成功后会自动读取并验证凭据,随后继续添加账号。": "Sign in to China Mobile Cloud (yun.139.com) in the dedicated Chrome window opened by the plugin. After sign-in, credentials are read and verified automatically, then the account is added.", "请在插件打开的端砚控制台窗口中登录(支持密码、短信或扫码)。插件会自动读取登录结果并关闭窗口,无需手动关闭;随后按所选方式创建或复用 API Key。新建密钥的明文只显示一次,由插件保存。": "Sign in to the InkStone console window opened by the plugin using a password, SMS or QR code. The plugin reads the sign-in result and closes the window automatically. It then creates or reuses an API Key according to the selected method. New keys are shown in plaintext only once and are saved by the plugin.", "请在插件打开的端砚控制台窗口中登录(支持密码、短信或扫码),然后退出该浏览器:macOS 请按 Cmd+Q(只关闭窗口不够),Linux 请关闭最后一个窗口。插件读取登录结果后会继续处理,并按所选方式创建或复用 API Key。新建密钥的明文只显示一次,由插件保存。": "Sign in to the InkStone console window opened by the plugin using a password, SMS or QR code, then quit that browser: press Cmd+Q on macOS (closing the window is not enough), or close its last window on Linux. The plugin then reads the sign-in result and creates or reuses an API Key according to the selected method. New keys are shown in plaintext only once and are saved by the plugin.", "请在系统浏览器完成官方登录。": "Complete the official sign-in in your system browser.", "请在运行网关的机器上打开 PowerShell,执行下面的专用登录命令,并按官方提示完成授权。面板会自动检测登录结果,不需要粘贴凭证。": "Open PowerShell on the gateway machine, run the dedicated sign-in command below and follow the official authorization prompts. The panel detects completion automatically; you do not need to paste credentials.", "请在运行网关的机器上打开终端,执行下面的专用登录命令,并按官方提示完成授权。面板会自动检测登录结果,不需要粘贴凭证。": "Open a terminal on the gateway machine, run the dedicated sign-in command below and follow the official authorization prompts. The panel detects completion automatically; you do not need to paste credentials.", "请填写 11 位大陆手机号": "Enter an 11-digit mainland China phone number", "请填写 6 位数字验证码": "Enter the 6-digit code", "请填写 Base URL": "Enter the Base URL", "请填写 {label}": "Enter {label}", "请填写名称": "Enter a name", "请安装并启用对应的提供商插件;列表为空时请刷新后重试。": "Install and enable the corresponding provider plugin. If the list is empty, refresh and try again.", "请完成验证…": "Complete the verification…", "请选择客户端凭证文件,或本软件导出的单账号 JSON 文件": "Select a client credential file or an individual account JSON file exported by this application.", "读取 %APPDATA%/AutoClaw/auth.json 并解密,仅 Windows": "Reads and decrypts %APPDATA%/AutoClaw/auth.json; Windows only", "读取 ~/.cline/data/settings/providers.json,需已在 Cline 客户端登录": "Reads ~/.cline/data/settings/providers.json; requires being signed in to the Cline client", "读取 ~/.meituan-catpaw/auth.json,需已在 CatPaw 客户端登录": "Reads ~/.meituan-catpaw/auth.json; requires being signed in to the CatPaw client", "读取本机 KukuAI 客户端登录态(%APPDATA%\\baidugenflowpro\\Network\\Cookies),需已在 KukuAI 客户端登录": "Reads the local KukuAI client login state (%APPDATA%\\baidugenflowpro\\Network\\Cookies); requires being signed in to the KukuAI client", "读取本机 OrcaTerm 客户端登录态(%APPDATA%\\com.orcaterm-desktop.app\\data.bin),需已在 OrcaTerm 客户端登录": "Read the local OrcaTerm client sign-in state (%APPDATA%\\com.orcaterm-desktop.app\\data.bin); the OrcaTerm client must be signed in", "读取本机已登录豆包工作客户端的 Cookie,每次请求实时读取;客户端需使用 --remote-debugging-port=9342 启动。本软件不修改、关闭或重启客户端。": "Reads cookies from the signed-in local Doubao Work client on each request. Start the client with --remote-debugging-port=9342. This application does not modify, close or restart the client.", "读取本机智谱清言客户端登录态(%APPDATA%\\chatglm\\Network\\Cookies),需已在客户端登录": "Read the local Zhipu Qingyan client sign-in state (%APPDATA%\\chatglm\\Network\\Cookies); the client must be signed in", "读取的是网关电脑上已登录的客户端,不是打开面板的电脑;也可改用粘贴凭据。": "Reads the signed-in client on the gateway machine, not the computer displaying the panel. You can also paste credentials instead.", "读取网关所在机器上 kiro-cli 或 Kiro IDE 的登录态,不是当前浏览器所在电脑的账号;续期后会写回原处。": "Reads kiro-cli or Kiro IDE sign-in on the gateway machine, not the computer running this browser. Renewed credentials are written back to the original location.", "读取运行网关的电脑上已登录的 QuWork,只保存本机引用,不修改官方客户端文件;切换账号后需重新导入。": "Reads QuWork signed in on the gateway machine and stores only a local reference without changing official files. Import again after switching accounts.", "读本机官方客户端(Tencent WorkBuddy / WorkBuddy AI)当前登录的账号:自动定位其凭证目录里最新的登录态文件(需已在本机官方客户端登录)。导入后由网关自动续期,无需跟随 2 小时时效手动换令牌。": "Reads the account currently logged in to the official client (Tencent WorkBuddy / WorkBuddy AI) on this machine: the newest session file in its credential directory is located automatically (the official client must be logged in on this machine). The gateway renews the token after import — no need to swap tokens manually with the 2-hour expiry.", "读本机客户端当前登录态(明文 Cookie,无需解密)。客户端运行时 Cookies 文件被独占占用,导入前请先关闭 KukuAI 客户端。": "Reads the local client's current login state (plaintext Cookie, no decryption needed). The Cookies file is exclusively locked while the client runs, so close the KukuAI client before importing.", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。": "Reads the local client's current login state live each time (deleting this record does not affect the client's login state).", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。客户端重新登录后点「刷新 Token」同步。": "Reads the local client's current login state live each time (deleting this record does not affect the client's login state). After signing in again in the client, click \"Refresh token\" to sync.", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。客户端重新登录后重新导入即可。": "Reads the local client's current login state live each time (deleting this record does not affect the client's login state). After signing in again in the client, just re-import.", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。用 Zai / Google 登录客户端的用户走这一条。": "Reads the local client's current login state live each time (deleting this record does not affect the client's login state). Users who sign in to the client with Zai / Google should use this one.", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。这一条归入 {label}。": "Reads the local client's current login state live each time (deleting this record does not affect the client's login state). This one is grouped under {label}.", "读本机客户端当前登录的 OAuth 令牌(明文 JSON,无需解密)。导入后由网关自动续期,无需跟随客户端的 2 小时时效手动换令牌。": "Reads the OAuth token the local client is currently signed in with (plain-text JSON, no decryption needed). After importing, the gateway renews it automatically — no need to follow the client's 2-hour expiry by hand.", "读本机客户端当前的登录态。客户端的 Cookies 是 DPAPI 加密的(Chromium os_crypt),因此仅 Windows 可用;客户端正在运行时可能读不到该文件,先退出客户端再试即可(也可改用「填写凭证」粘贴令牌)。": "Read the current sign-in state of the local client. The client's cookies are DPAPI-encrypted (Chromium os_crypt), so this is Windows-only; the file may be unreadable while the client is running — quit the client and retry (or use \"Fill in credentials\" to paste a token instead).", "豆包工作": "Doubao Work", "账号信息": "Account info", "账号信息不完整,请刷新后重试": "Account info is incomplete; refresh and try again", "账号名由插件自动获取,添加后可修改。": "The plugin fills in the account name automatically; you can change it after adding.", "账号已添加,但代理选择未确认保存;请在账号设置中重新检查。": "Account added, but saving the proxy selection was not confirmed. Check it in account settings.", "账号已添加,但未返回账号 ID,无法保存登录代理选择。": "Account added, but no account ID was returned, so the sign-in proxy selection could not be saved.", "账号已添加,但请留意:{warning}": "Account added, but note: {warning}", "账号已添加,但账号列表同步失败,请刷新重试。": "Account added, but syncing the account list failed. Refresh and retry.", "账号文件的提供商与当前选择不一致,请选择对应的提供商后再导入": "The account file belongs to a different provider. Select the matching provider before importing it.", "账号版本": "Account edition", "账号类型": "Account type", "账号:{name}
    ": "Account: {name}
    ", "走 Inference Providers 路由,Key 在 hf.co/settings/tokens 创建": "Routes through Inference Providers; create the Key at hf.co/settings/tokens", "返回提供商列表": "Back to providers", "还没有可用的提供商。各家提供商的转发与账号实现都在插件包里,装好之后这里就会出现。": "No providers available yet. Forwarding and account handling for each provider live in plugin packs; they show up here once a pack is installed.", "还没有账号": "No accounts yet", "还需完成 AWS 授权:请打开下一步授权页,完成后回填新的完整回调地址。": "AWS authorization is still required. Open the next authorization page, then paste the new complete callback URL.", "还需继续授权,请打开下一步授权页,完成后回填新的完整回调地址。": "More authorization is required. Open the next authorization page, then paste the new complete callback URL.", "这一家当前不支持网页登录,请改用填写凭证": "This provider does not support web login right now; use Enter credentials instead", "这个账号当前没有可自动领的活动(只自动领每日登录赠送积分)": "This account has no campaigns that can be claimed automatically right now (only the daily login gift points are claimed automatically)", "这份额度走「活动套餐」通道:若转发时提示编码套餐已到期,": "This quota goes through the Start Plan channel: if forwarding reports that the Coding Plan has expired, ", "这里填国内站(modelscope.cn)的账号:请粘贴国内站的令牌。国际站(modelscope.ai)是另一家 provider、另一套账号,两边的令牌不通用。": "This is for the China site (modelscope.cn) account: paste the China site's token. The international site (modelscope.ai) is another provider with its own account; tokens are not interchangeable between the two.", "这里填国内站(monkeycode-ai.com)的账号:请粘贴国内站的 session。国际站(monkeycode-ai.net)是另一家 provider、另一套账号,两边的凭证不通用。": "This is for the China site (monkeycode-ai.com) account: paste the China site's session. The international site (monkeycode-ai.net) is another provider with its own account; credentials are not interchangeable between the two.", "这里填国际站(modelscope.ai)的账号:请粘贴国际站的令牌。国内站(modelscope.cn)是另一家 provider、另一套账号,两边的令牌不通用。": "This is for the international site (modelscope.ai) account: paste the international site's token. The China site (modelscope.cn) is another provider with its own account; tokens are not interchangeable between the two.", "这里填国际站(monkeycode-ai.net)的账号:请粘贴国际站的 session。国内站(monkeycode-ai.com)是另一家 provider、另一套账号,两边的凭证不通用。": "This is for the international site (monkeycode-ai.net) account: paste the international site's session. The China site (monkeycode-ai.com) is another provider with its own account; credentials are not interchangeable between the two.", "选择 CatPaw 客户端的登录态文件 auth.json(Windows:C:\\Users\\<你的用户名>\\.meituan-catpaw\\auth.json;macOS / Linux:~/.meituan-catpaw/auth.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端。": "Select the CatPaw client's login-state file auth.json (Windows: C:\\Users\\\\.meituan-catpaw\\auth.json; macOS / Linux: ~/.meituan-catpaw/auth.json). After import the credentials live on the gateway and can be forwarded independently — no longer dependent on this machine's client.", "选择 Cline 客户端的登录态文件 providers.json(Windows:C:\\Users\\<你的用户名>\\.cline\\data\\settings\\providers.json;macOS / Linux:~/.cline/data/settings/providers.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端;这一条归入 {label}。": "Select the Cline client's login-state file providers.json (Windows: C:\\Users\\\\.cline\\data\\settings\\providers.json; macOS / Linux: ~/.cline/data/settings/providers.json). After import the credentials live on the gateway and can be forwarded independently — no longer dependent on this machine's client; this record goes into {label}.", "选择 KukuAI 客户端的 Cookies 文件(%APPDATA%\\baidugenflowpro\\Network\\Cookies):它是**二进制** SQLite 数据库(无扩展名,不是 JSON)。导入时读的是你选中文件的副本、不和运行中的客户端抢占用,因此**无需先关闭客户端**。导入后凭证直接落在网关、可独立转发。": "Select the KukuAI client's Cookies file (%APPDATA%\\baidugenflowpro\\Network\\Cookies): it is a **binary** SQLite database (no extension, not JSON). The import reads a copy of the file you selected and does not compete with the running client for the lock, so **you do not need to close the client first**. After import the credentials live on the gateway and can be forwarded independently.", "选择 OAuth auth.json 的绝对路径(不扫描其他目录)": "Select the absolute path to OAuth auth.json (no other directories are scanned)", "选择凭证文件导入": "Import from credential file", "选择包含 Cookie 的 JSON 对象,或本软件导出的单账号 JSON 文件。导入后可独立使用,不需要持续运行豆包工作客户端。": "Select a JSON object containing cookies, or a single-account JSON exported by this application. The imported account works independently without keeping the Doubao Work client running.", "选择包含 Tabbit Cookie / JWT 的 JSON 或文本文件;也可以直接粘贴到上方表单。": "Choose a JSON or text file containing the Tabbit Cookie / JWT; you can also paste it into the form above.", "选择包含该提供商凭证的 JSON 文件,或本软件导出的单账号 JSON 文件。导入后凭证保存在网关,可独立使用。": "Select a JSON file containing this provider's credentials or an individual account JSON file exported by this application. Imported credentials are stored in the gateway and can be used independently.", "选择官方客户端的登录态凭证文件(workbuddy-desktop.info / workbuddy-desktop-ai.info)或 wb2api 导出的账号 JSON(嵌套 / 扁平形均可)。": "Select the official client's session credential file (workbuddy-desktop.info / workbuddy-desktop-ai.info) or an account JSON exported by wb2api (nested or flat).", "选择小浣熊客户端的登录态文件 auth.json(Windows:C:\\Users\\<你的用户名>\\.box-agent\\config\\auth.json;macOS / Linux:~/.box-agent/config/auth.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端。": "Select the Raccoon client's login-state file auth.json (Windows: C:\\Users\\\\.box-agent\\config\\auth.json; macOS / Linux: ~/.box-agent/config/auth.json). After import the credentials live on the gateway and can be forwarded independently — no longer dependent on this machine's client.", "选择提供商": "Select provider", "选择新增账号或重新授权当前注册": "Choose a new account or reauthorize the current registration", "选择的文件不是合法 JSON": "The selected file is not valid JSON", "选择要添加账号的提供商": "Select the provider to add an account for", "选择预置客户端": "Choose a preset client", "重新扫描": "Rescan", "重新授权所选账号(固定原身份和 clientId)": "Reauthorize the selected account (keep its identity and clientId)", "重新读取提供商": "Reload providers", "鉴权": "Authentication", "阿里云 Token Plan 套餐(国际站)": "Alibaba Cloud Token Plan (International site)", "阿里云百炼 Coding 套餐(国内站)": "Alibaba Cloud Model Studio Coding plan (China site)", "阿里云百炼 Coding 套餐(国际站)": "Alibaba Cloud Model Studio Coding plan (International site)", "阿里云百炼模型服务(国际站,OpenAI 兼容模式)": "Alibaba Cloud Model Studio model service (International site, OpenAI-compatible mode)", "隐藏凭证": "Hide credentials", "需要图形验证码:登录窗口已弹出,请填写后继续": "Captcha required: the sign-in window has opened; fill it in to continue", "需要手动提交授权回调": "Manual authorization callback required", "需要时填写完整 Cookie": "Paste the complete Cookie if needed", "需要进行人机验证": "Human verification required", "预置 API": "Preset API", "领取 CodeArts 每日福利": "Claim CodeArts daily welfare", "领取失败:{message}": "Claim failed: {message}", "领取并让官方确认": "Claim and await confirmation", "风控验证配置不完整,请稍后重试": "Risk-control verification config is incomplete; try again later", "验证码": "Verification code", "验证码业务请求超时,请刷新状态后重试": "The verified operation timed out. Refresh its status before retrying.", "验证码令牌入池接口不可用": "The verification token submission API is unavailable.", "验证码令牌未全部入池": "The verification token was not accepted by the pool.", "验证码令牌池未返回状态": "The verification token pool returned no status.", "验证码已使用,请重新验证": "This verification token has already been used. Verify again.", "验证码已发送。收到后填入下方并点「登录并添加」": "Code sent. Enter it below and click \"Sign in and add\"", "验证码已发送,请查看手机短信": "Code sent; check your SMS", "验证码已发送,请查看手机短信。填入下方并点「登录并添加」即完成登录": "Code sent; check your SMS. Enter it below and click \"Sign in and add\" to finish signing in", "验证码已发送,请查看短信": "Code sent; check your messages", "验证码校验失败,请重试": "Code verification failed; try again", "验证码校验超时,请重试": "Code verification timed out; try again", "验证码组件不可用,请重试": "Verification component unavailable; try again", "验证码组件初始化超时,请重试": "Verification component initialization timed out; try again", "验证码组件加载失败,请检查网络后重试": "Verification component failed to load; check your network and try again", "验证码组件加载异常,请重试": "Verification component encountered a loading error; try again", "验证码组件加载超时,请检查网络后重试": "Verification component timed out while loading; check your network and try again", "验证码组件未加载,请重启应用后重试": "Verification component not loaded; restart the app and try again", "验证码组件返回的验证串不完整(请重试)": "The verification component returned an incomplete token. Please retry.", "验证被上游风控拒绝,请稍后重试": "The upstream security service rejected verification. Please try again later.", "验证请求过于频繁,请稍后重试": "Verification requests are too frequent. Please try again later.", "默认开启;填 0 关闭(发送「已设为默认浏览器」标记)": "Enabled by default; enter 0 to disable (sends the \"set as default browser\" marker)", "(免费额度池,模型名带 cline-free/ 前缀)。": " (free quota pool; model names carry the cline-free/ prefix).", "(其中 {n} 把恢复为不限制)": " ({n} of which are now unrestricted)", "(必填)": " (Required)", "(有效期 {window})": "(valid {window})", "(订阅池,模型名带 cline-pass/ 前缀,需要账号有对应订阅)。": " (subscription pool; model names carry the cline-pass/ prefix and the account needs the matching subscription).", ",下一次最快 {minutes} 分钟后": ", earliest next attempt in {minutes} min", ",并从 {n} 把 Key 的可用提供商里移除": ", and removed it from the allowed providers of {n} keys", " · 思考等级 ": " · Reasoning level ", " · 思考等级 {level}": " · Reasoning level {level}", " · 有映射 ": " · mapped ", " · 限额中": " · Rate-limited", " → 转发": " → forwards to", " 上登记上游模型": ", register upstream model", " 与 ": " and ", " 个": " ", " 个模型 · 已启用 ": " models · enabled ", " 个账号": " accounts", " 会广告它、请求它也会被转发到这家。 支持字母、数字与 ": " will advertise it, and requests for it will be forwarded to this provider. Supported characters are letters, digits and ", " 失败": " failed", " 已发出,等待上游首帧…": "'s request has been sent; waiting for the upstream's first frame…", " 成功 ·": " succeeded ·", " 这类符号,但不能含空格或换行,且不超过 128 个字符。同一提供商内,同名绑定最多启用一条;已有启用绑定时不能新增,启用备用绑定会自动关闭其他同名绑定。不同提供商可各启用一条同名绑定,用于主备切换。": " symbols like those, but no spaces or line breaks, and at most 128 characters. Only one binding with the same name can be enabled per provider. Disable an active binding before adding another. Enabling a standby binding automatically disables the others. Different providers may each enable one binding with that name for failover.", " 里的 ": ", they appear as ", "(全局)": "(global)", "(未选)": "(not selected)", "0 家": "0 providers", "<上游模型 ID>": "", "<上游模型>": "", "<对外名>": "", "models.dev 补齐:对下游声明 {value}": "Filled in by models.dev: declared to downstream as {value}", "{action}映射 {alias}": "{action} mapping {alias}", "{id}({name})": "{id} ({name})", "{label}要填 1 ~ 1 亿之间的整数(留空 = {inherit})": "{label} must be an integer between 1 and 100,000,000 (leave empty = {inherit})", "{label}:{value}(对下游声明的精确值){origin}{suffix}": "{label}: {value} (exact value declared to downstream){origin}{suffix}", "{label}:{value}(对下游声明的精确值){suffix}": "{label}: {value} (exact value declared to downstream){suffix}", "{label}:上游未声明{suffix}": "{label}: Not declared upstream{suffix}", "{label}:上游未声明(下游会按不支持处理){suffix}": "{label}: Not declared upstream (downstream treats it as unsupported){suffix}", "{label}:不支持{origin}{suffix}": "{label}: Not supported{origin}{suffix}", "{label}:不支持{suffix}": "{label}: Not supported{suffix}", "{label}:支持{origin}{suffix}": "{label}: Supported{origin}{suffix}", "{label}:支持{suffix}": "{label}: Supported{suffix}", "{level}(本次指定)": "{level} (specified for this test)", "{name}({id})": "{name} ({id})", "{name}(不在该家当前清单里)": "{name} (not in this provider's current catalog)", "{n} 个": "{n}", "{n} 个映射": "{n} mappings", "{n} 个模型": "{n} models", "{n} 字节": "{n} bytes", "{provider}:模型清单为空,等待获取": "{provider}: the model catalog is empty and waiting to be fetched", "{status}:模型获取失败": "{status}: Failed to fetch models", "{total} 家 · 成功 {done}": "{total} providers · {done} succeeded", "{total} 家 · 成功 {done} · 失败 {failed}": "{total} providers · {done} succeeded · {failed} failed", "✅ 已保存 {id} 的能力位({provider})": "✅ Saved capability flags for {id} ({provider})", "✅ 已导入 {added} 个模型({skipped} 个已存在,跳过)": "✅ Imported {added} models ({skipped} already existed and were skipped)", "✅ 已更新 {name} 的思考等级": "✅ Updated the reasoning level for {name}", "✅ 已添加映射 {name} → {target}({label}){suffix}": "✅ Added mapping {name} → {target} ({label}){suffix}", "✅ 已登记 {name}({label}),但该提供商还没有可用账号,这一行要加上账号后才会显示": "✅ Registered {name} ({label}), but this provider has no usable accounts yet; the row will appear once you add one", "✅ 已登记模型 {name}({label})": "✅ Registered model {name} ({label})", "✅ 已登记自定义模型 {name}({label})": "✅ Registered custom model {name} ({label})", "✅ 批量{action}完成:共 {n} 个模型": "✅ Batch {action} complete: {n} models", "✅ 批量{action}完成:共 {n} 个模型(跳过不可删除的 {skipped} 个)": "✅ Batch {action} complete: {n} models ({skipped} not deletable, skipped)", "。": ".", "。上游清单给的值不准时,在这里改;": ". If the upstream catalog's values are inaccurate, edit them here; ", "。同一对外名可在多个提供商各添加一条: 下游用同一个名字请求,网关按账号优先级主备切换,失败自动落到下一个提供商。": ". The same public name can be added once under each of multiple providers: downstream requests with that name are routed with primary/backup switching by account priority, and failures fall through to the next provider automatically.", "「恢复继承」会把这一项交还给上游清单的值。": "“Restore inheritance” returns this field to the value from the upstream catalog.", "「来源」列会标成": "The “Source” column will show ", "上下文 / 输出": "Context / Output", "上下文窗口": "Context window", "上下文窗口 {input} / 最大输出 Token {output} —— 点击修改模型能力": "Context window {input} / max output tokens {output} — click to edit model capabilities", "上游 {model}": "Upstream {model}", "上游不认识这个模型名:先点「获取模型」刷新清单,或核对默认绑定指向的上游模型。": "Upstream doesn't recognize this model name: click “Fetch models” to refresh the catalog, or check the upstream model the default binding points to.", "上游原始响应": "Raw upstream response", "上游可用档位:{levels}": "Upstream supported levels: {levels}", "上游固定为 {level},绑定其他等级也无法调高。": "Upstream is fixed at {level}; binding another level cannot increase it.", "上游已经不再提供这个模型(可能已下线或改了 ID)": "The upstream no longer offers this model (it may have been retired or renamed).", "上游拒绝了这条登录态:重新登录一次,或把这条账号删掉。": "Upstream rejected this login session: sign in again, or delete this account.", "上游未声明": "Not declared upstream", "上游未声明(下游会按不支持处理)": "Not declared upstream (downstream treats it as unsupported)", "上游未部署": "Not deployed upstream", "上游模型": "Upstream model", "上游模型 ID": "Upstream model ID", "上游没在预算内给完回答。可以只勾一个账号再测一次,看是普遍慢还是某一个账号慢。": "Upstream didn't finish its answer within the budget. Test again with only one account checked to see whether it is slow in general or only on one account.", "上游没有给出可读的错误说明": "Upstream returned no readable error description", "上游没有返回任何模型": "Upstream returned no models", "上游目录列出了这个模型,但推理端尚未识别;保留在清单中,后续探测成功后自动清除标记": "The upstream catalog lists this model, but the inference backend does not recognize it yet. It remains in the catalog, and the marker is cleared automatically after a successful probe.", "上游目录尚未拉到,用的是内置静态清单;点「刷新模型清单」可重试": "The upstream catalog hasn't been fetched yet, so the built-in static catalog is in use; click “Fetch models” to retry", "上游能列出这个模型,但官方客户端不展示它;本仓已默认关闭它的默认绑定(点这一行的开关可以手动打开)": "Upstream lists this model, but the official client does not show it; the gateway has disabled its default binding (use the row switch to enable it manually)", "下游客户端": "downstream clients", "下游请求 ": "Downstream request ", "不展示": "Not shown", "不影响网关的转发与路由": "Doesn't affect gateway forwarding or routing", "不支持": "Not supported", "不覆盖": "Do not override", "两边原因不一样时各自处理。如果": "Handle each cause separately when they differ. If ", "中止测试": "Abort test", "仅支持已识别压缩格式的 ZCode;客户端修改压缩格式后可能需要更新适配。": "Only recognized ZCode compaction formats are supported. Client changes to the format may require an adapter update.", "仅本次测试临时生效,不修改账号保存的代理配置。可选「网络代理」页里的节点或强制直连。": "Applies to this test only without changing the account's saved proxy setting. Choose a node from the Network Proxies page or force a direct connection.", "从这一家的上游拉一份模型清单,勾选要哪些再导入(已添加的不会重复导入)": "Pull a model catalog from this provider's upstream, check the ones you want, then import them (models already added won't be imported again)", "代理池响应异常": "Invalid proxy pool response", "以模型本名直发": "Sent under the model's own name", "以这个上游模型发一次最小请求,走真实转发链路": "Send a minimal request with this upstream model through the real forwarding path", "例如 gpt-4o": "e.g. gpt-4o", "例如 gpt-5.5-preview": "e.g. gpt-5.5-preview", "保存": "Save", "保存中…": "Saving…", "保存失败:{message}": "Save failed: {message}", "保存映射": "Save mapping", "保存等级": "Save level", "倍率": "Multiplier", "倍率升序": "Multiplier ascending", "倍率升序,点击切换为降序": "Multiplier ascending; click to switch to descending", "倍率降序": "Multiplier descending", "倍率降序,点击切换为升序": "Multiplier descending; click to switch to ascending", "全选当前筛选出的模型(跨分页);再点取消": "Select all models in the current filter (across pages); click again to clear", "全选当前筛选结果": "Select all filtered results", "全选未添加": "Select all not added", "全选({n})": "Select all ({n})", "全部": "All", "全部删除": "Delete all", "全部映射": "all mappings", "全部自定义提供商": "All custom providers", "全部({n} 家)": "All ({n} providers)", "共 {n} 家 · 点「获取模型」开始": "{n} providers · click “Fetch models” to start", "关闭": "Close", "关闭即中止": "Closing aborts", "关闭后保留规则,所有请求按原模型处理。": "When disabled, rules are retained and all requests use the original model.", "其余 {n} 个会被跳过。": "the remaining {n} will be skipped.", "内置": "Built-in", "内置提供商": "Built-in provider", "内置清单": "Built-in catalog", "再测一次": "Test again", "删除": "Delete", "删除中…": "Deleting…", "删除入口未就绪,请重试或重启应用": "Delete isn't ready yet; retry or restart the app", "删除全部未挂载映射": "Delete all unattached mappings", "删除映射": "Delete mapping", "删除映射 {alias}": "Delete mapping {alias}", "删除未挂载的映射": "Delete unattached mapping", "删除自定义提供商": "Delete custom provider", "删除规则 {n}": "Delete rule {n}", "删除这个自定义提供商(连同名下账号)": "Delete this custom provider (along with its accounts)", "删除这条映射": "Delete this mapping", "删除选中的模型": "Delete selected models", "刷新全部家(逐家打上游)": "Refresh every provider (each hits upstream once)", "刷新完成,但没有得到任何结果": "Refresh finished, but no results were returned", "刷新模型管理页里各提供商的远程模型目录,逐家结果列在弹窗里": "Refresh the remote model catalogs of the providers on the Model Management page; per-provider results are listed in the dialog", "刷新清单": "Refresh catalog", "加载中…": "Loading…", "勾上它,导入后即进入这家的清单": "Check it to add it to this provider's catalog on import", "勾几个就并行测几次;默认选队列里最靠前的一个。": "Each account you check is tested in parallel; the first one in the queue is selected by default.", "勾选后可批量操作": "Check to enable batch actions", "压缩模型": "Compaction model", "压缩路由": "Compaction routing", "压缩路由入口尚未就绪,请刷新页面后重试": "Compaction routing is not ready. Refresh the page and try again.", "压缩路由已保存,下次压缩请求生效": "Compaction routing saved. It applies to the next compaction request.", "压缩路由接口返回了不完整的数据": "The compaction routing API returned incomplete data.", "原始 ID 已作为默认绑定,请直接使用该绑定的开关或等级按钮": "The original ID is already the default binding; use that binding's toggle or level button directly", "原始 ID 的默认绑定不能删除,请关闭它的开关": "The default binding for the original ID cannot be deleted. Disable its toggle instead.", "取消": "Cancel", "另有 {n} 个非手动登记的模型将被跳过。": "Another {n} models that aren't manually registered will be skipped.", "另有 {n} 条别名映射({aliases}),别名不参与本次": "There are also {n} alias mappings ({aliases}); aliases aren't used in this test", "只刷新这一家的模型清单": "Refresh only this provider's model catalog", "只在识别到 ZCode 上下文压缩请求时切换模型,普通对话仍使用原模型。": "Switch models only for recognized ZCode context compaction requests. Regular conversations keep using the original model.", "只属于这一家": "exclusive to this provider", "可删除 {n} 个(手动登记 / 自定义家);": "{n} can be deleted (manually registered / custom provider); ", "可见": "Visible", "可见性": "Visibility", "可配思考档位": "Configurable reasoning levels", "同一客户端的来源模型不能重复:{model}": "The source model cannot be repeated for the same client: {model}", "同一条错误出现在所有账号上": "the same error appears on all accounts", "后端桥不可用": "Backend bridge unavailable", "启用压缩路由": "Enable compaction routing", "启用后将自动关闭该提供商的其他同名绑定:{bindings}": "Enabling this will automatically disable the provider’s other bindings with the same name: {bindings}", "启用规则 {n}": "Enable rule {n}", "回复": "Reply", "固定思考档位": "Fixed reasoning level", "固定思考档位:{level}": "Fixed reasoning level: {level}", "图片": "Images", "图片生成": "Image generation", "图片生成模型请通过 /v1/images/generations 调用,暂不支持对话测试": "Use /v1/images/generations for image models; chat testing is not supported yet", "图片编辑": "Image editing", "图片识别": "Image recognition", "圆点带内侧描边 = 由 models.dev 补齐;右上角小点 = 你手动覆盖过;虚线圈 = 未声明。悬停某一枚可看逐项出处。": "Dot with an inner ring = filled in by models.dev; small dot at the corner = you overrode it; dashed ring = not declared. Hover a dot to see where each value comes from.", "在 ": "On ", "填上游真正认识的那个模型 ID(不是给下游用的名字)。登记后它会进入该家的模型清单: 表格里出现这一行、": "Enter the model ID that upstream actually recognizes (not the name used downstream). Once registered, it enters this provider's model catalog: this row appears in the table, ", "复制": "Copy", "多半是上游自己的问题,过一会儿再试。同一个错误出现在所有账号上时,先查模型目录与映射。": "This is most likely a problem on the upstream side; try again later. When the same error appears on all accounts, check the model catalog and mappings first.", "失败": "Failed", "失败 {n} 个 · 首个失败:{error}": "{n} failed · first failure: {error}", "如果 ZCode 已设置压缩路由,网关看到的是它改写后的模型。建议同一套规则只在一处配置。": "If ZCode already has compaction routing configured, the gateway sees the rewritten model. Configure the same routing rules in only one place.", "完成": "Done", "官方客户端会展示这个模型": "The official client lists this model", "对下游声明的能力(工具调用 / 图片识别 / 视频识别 / 支持思考)—— 点击修改": "Capabilities declared to downstream (tool calling / image recognition / video recognition / reasoning support) — click to edit", "对外名可以是中文、字母、数字与 ": "Public names may contain Chinese characters, letters, digits and ", "对外名可自由命名,允许与上游模型 ID 同名(同名时该上游的原生路由优先,映射作兜底); 支持字母、数字与 ": "The public name can be anything and may match an upstream model ID (when identical, that upstream's native route takes precedence and the mapping acts as a fallback); supported characters are letters, digits and ", "对外映射名(下游请求时用)": "Public mapping name (used in downstream requests)", "对话协议": "Chat protocol", "对话协议的说明": "About chat protocol", "对选中的 {n} 个模型执行批量操作": "Run batch actions on the {n} selected models", "导入失败:{message}": "Import failed: {message}", "导入选中的 {n} 个模型": "Import {n} selected models", "将作用于以下模型": "Applies to the following models", "尚未获取": "Not fetched yet", "尚未配置压缩规则,默认使用原模型。": "No compaction rules configured. The original model is used by default.", "尝试 {n} 次": "{n} attempts", "展开其余 {n} 个模型 ▾": "Show {n} more models ▾", "工具": "Tools", "工具调用": "Tool calling", "已中止在途测试({n} 个账号)": "Aborted in-flight tests ({n} accounts)", "已删除 {n} 条未挂载映射": "Deleted {n} unattached mappings", "已刷新": "Refreshed", "已启用": "Enabled", "已启用 {name},其他同名绑定已自动关闭": "Enabled {name}. Other bindings with the same name were disabled automatically.", "已填写:对下游声明 {value}": "Set: declared to downstream as {value}", "已添加": "Added", "已等待 {seconds}s": "Waited {seconds}s", "已覆盖上游值": "Upstream value overridden", "已覆盖:对下游声明 {value}": "Overridden: declared to downstream as {value}", "已选 ": "Selected ", "已选 {picked} 个 · 上游共 {upstream} 个 · 清单已有 {managed} 个": "{picked} selected · {upstream} upstream total · {managed} already in catalog", "开始测试": "Start test", "当前环境不支持代理池": "Proxy pool is not supported in this environment", "当前环境不支持读取 API Key": "This environment cannot load API keys", "当前通道未声明可用档位,映射等级不会注入;请先获取模型目录。": "This route has not declared supported levels. Mapping levels will not be injected; fetch the model catalog first.", "待获取": "Not fetched", "思考": "Reasoning", "思考等级": "Reasoning level", "思考等级 {level}": "Reasoning level {level}", "思考等级 {level}(点击修改)": "Reasoning level {level} (click to edit)", "思考等级的注入规则": "Reasoning level injection rules", "思考过程({n} 字)": "Reasoning process ({n} chars)", "恢复继承": "Restore inheritance", "成功 {ok} 个,失败 {failed} 个": "{ok} succeeded, {failed} failed", "所选 API Key 无权调用此模型或提供商": "The selected API Key cannot access this model or provider", "所选模型含同一提供商的同名绑定「{id}」,请分别启用,避免相互关闭": "The selected models contain bindings named “{id}” under the same provider. Enable them separately to avoid disabling one another.", "所选模型没有共同可用档位,请分别设置或清除绑定。": "The selected models have no shared supported level. Configure them separately or clear their bindings.", "手动": "Manual", "手动登记": "Manual", "手动登记的上游模型;移除它会直接删掉这条登记": "A manually registered upstream model; removing it deletes this registration outright", "执行{action}": "{action}", "批量{action}完成:成功 {ok} 个,失败 {failed} 个": "Batch {action} finished: {ok} succeeded, {failed} failed", "批量操作": "Batch actions", "批量操作 · 已选 {n} 个模型": "Batch actions · {n} models selected", "按倍率升序排列": "Sort by multiplier ascending", "按倍率排序": "Sort by multiplier", "按可见性筛选": "Filter by visibility", "按客户端发送的模型 ID 匹配,支持模型别名和对话路由组;每次只映射一次。": "Match the model ID sent by the client. Model aliases and chat routing groups are supported; each request is mapped once.", "按所选网关对话协议组装请求并校验响应转换(Chat Completions / Responses / Anthropic Messages)。": "Build the request and verify response translation using the selected gateway protocol (Chat Completions / Responses / Anthropic Messages).", "按提供商分组排序,已启用模型优先;未知倍率排在末尾": "Sort within provider groups, with enabled models first; unknown multipliers stay last", "按提供商选择": "Select by provider", "按状态筛选": "Filter by status", "提供商": "Provider", "搜索模型": "Search models", "搜索模型 ID / 名称 / 映射名…": "Search model ID / name / mapping name…", "搜索模型 ID / 提供商": "Search model ID / provider", "搜索模型 ID…": "Search model ID…", "搜索账号…": "Search accounts…", "操作": "Actions", "支持": "Supported", "支持思考": "Reasoning support", "收起 ▴": "Collapse ▴", "放弃尚未保存的压缩路由修改?": "Discard unsaved compaction routing changes?", "数字带虚线底 = 由 models.dev 补齐;右上角小点 = 你手动覆盖过;— = 未声明。点任意一格可改。": "Number with a dotted underline = filled in by models.dev; small dot at the corner = you overrode it; — = not declared. Click any cell to edit.", "新建一个自定义提供商(同时创建它的第一个账号)": "Create a custom provider (and its first account)", "映射、思考等级、上下文窗口与工具调用能力在桌面端「模型管理」里改;手机端只做启停。": "Mappings, reasoning levels, context windows and tool-calling capabilities are edited on desktop under “Model management”; mobile only toggles models.", "映射「{alias} → {target}」不存在": "Mapping “{alias} → {target}” doesn't exist", "映射上未绑定思考等级,「跟随映射」等于这次不注入": "No reasoning level is bound to this mapping, so “Follow mapping” means nothing is injected this time", "映射已关闭": "Mapping disabled", "映射已关闭,点击启用": "Mapping disabled; click to enable", "映射已删除": "Mapping deleted", "映射已启用": "Mapping enabled", "映射已启用,其他同名绑定已自动关闭": "Mapping enabled. Other bindings with the same name were disabled automatically.", "映射已启用,点击关闭": "Mapping enabled; click to close", "映射已绑定思考等级 {level},可用时会优先覆盖本次指定的等级": "This mapping binds reasoning level {level}; when supported, it overrides the level specified for this test", "暂无模型(请先添加账号)": "No models yet (add an account first)", "更新日期": "Updated", "最多可添加 {n} 条压缩规则": "You can add up to {n} compaction rules.", "最大输出 Token": "Max output tokens", "有映射": "Mapped", "未填写": "Not set", "未填写(下游按未声明处理)": "Not set (downstream treats it as not declared)", "未声明": "Not declared", "未挂载映射:已删除 {removed} 条,失败 {failed} 条。首个失败:{error}": "Unattached mappings: {removed} deleted, {failed} failed. First error: {error}", "未挂载的模型映射": "Unattached model mappings", "未接入": "Not connected", "未添加": "Not added", "未知": "Unknown", "本机网关没有返回结论": "The local gateway returned no result", "本次没有取到新内容": "No new content this time", "本次测试的发送口径": "What this test sends", "来源": "Source", "来源未知": "Unknown source", "来源模型": "Source model", "来源模型和压缩模型不能相同": "The source and compaction models must be different.", "来自上游目录接口,清单拉取于 {at};刷新失败时保留上一份成功结果": "From the upstream catalog API; catalog fetched at {at}; the last successful result is kept if a refresh fails", "来自上游目录接口;刷新失败时保留上一份成功结果": "From the upstream catalog API; the last successful result is kept if a refresh fails", "桥接调用返回空(本机网关没有响应这次测试)": "Bridge call returned empty (the local gateway didn't respond to this test)", "模型 ID「{id}」在该提供商已有启用绑定,请先关闭它再添加": "Model ID “{id}” already has an enabled binding under this provider. Disable it before adding another.", "模型 ID「{id}」已存在,请使用已有模型": "Model ID “{id}” already exists. Use the existing model.", "模型 ID「{id}」已绑定到此上游模型,请直接使用已有绑定": "Model ID “{id}” is already bound to this upstream model. Use the existing binding.", "模型「{name}」已存在(忽略大小写判重)": "The model “{name}” already exists (duplicate check is case-insensitive)", "模型已移除": "Model removed", "模型数": "Models", "模型映射": "Model mapping", "模型来源": "Model source", "模型清单为空:已有可用账号,请点「获取模型」拉取目录": "The model catalog is empty. Usable accounts are available; click “Fetch models” to retrieve it.", "模型清单已刷新": "Model catalog refreshed", "模型目录刷新不可用,请重新打开面板": "Model catalog refresh is unavailable. Reopen the panel.", "模型目录刷新结果": "Model catalog refresh results", "模型管理表": "Models table", "模型能力": "Model capabilities", "模型获取失败": "Failed to fetch models", "正在刷新…": "Refreshing…", "正在测 ": "Testing ", "正在获取…": "Fetching…", "正在读取压缩路由…": "Loading compaction routes…", "每条映射 = 对外名 → 上游模型;原始 ID 与别名有独立开关,默认绑定永远存在(没有映射时是合成的那条)。": "Each mapping = public name → upstream model; the original ID and each alias have their own toggle, and the default binding always exists (it's the synthesized one when there are no mappings).", "没有匹配「{keyword}」的模型": "No models match “{keyword}”", "没有匹配当前筛选的模型": "No models match the current filter", "没有匹配的模型": "No matching models", "没有可选的对话模型,请先启用模型和对应账号。": "No chat models are available. Enable a model and its account first.", "没有选中任何模型": "No models selected", "没有选中的模型": "No models selected", "流式请求": "Streaming request", "流式请求的说明": "About streaming requests", "测试": "Test", "测试未通过": "Test failed", "测试模型": "Test model", "测试结果": "Test result", "测试节点": "Test node", "测试节点的说明": "About test node", "测试账号": "Test accounts", "测试账号的说明": "About test accounts", "添加模型映射": "Add model mapping", "添加自定义模型": "Add custom model", "清空": "Clear", "清除覆盖,回到上游声明值": "Clear the override and go back to the upstream declared value", "清除这一项(回到未声明)": "Clear this field (back to not declared)", "清除(不覆盖)": "Clear (do not override)", "点击复制:{name}": "Click to copy: {name}", "点右侧「获取模型」从上游拉取这家的模型清单": "Click “Fetch models” on the right to pull this provider's model catalog from upstream", "用哪个账号去拉这家的模型清单": "Which account to use to fetch this provider's model catalog", "用户提示词": "User prompt", "用户登记的自定义模型;整份清单只属于这一家": "Custom models registered by you; the whole list belongs to this provider only", "用时 {time}": "Took {time}", "用时 {time} · 首字 {ttfb}": "Took {time} · first token {ttfb}", "留空则不携带;设置页的提示词模式照常生效": "Leave empty to omit it; the prompt mode on the Settings page still applies", "留空用默认问候「你好」": "Leave empty to use the default greeting “Hello”", "的模型合集:每家的清单互相独立,别名也只在自己那家内生效;要改名称 / 协议 / Base URL,到账号页该家账号的「设置」→ 提供商一栏。": "'s model collection: each provider's list is independent, and aliases only take effect within their own provider; to change the name / protocol / Base URL, go to that provider's account on the Accounts page → \"Settings\" → provider section.", "目录模块未就绪": "The catalog module isn't ready", "目标使用自身的思考设置或默认值,仍受网关 Key 权限限制;不可用时明确报错,不自动退回原模型。": "The target uses its own reasoning settings or defaults and remains subject to gateway key permissions. If unavailable, an error is returned without falling back to the original model.", "目标已下线": "Target retired", "直接移除": "directly removes ", "直连(不使用代理)": "Direct connection (no proxy)", "看的能力声明(": ". In ", "真实链路 · 消耗少量额度 · 日志带「测试」标记,不计报表": "Real path · uses a small amount of quota · logs are tagged “Test” and excluded from reports", "确定删除映射「{alias} → {target}」?": "Delete the mapping “{alias} → {target}”?", "确定删除映射「{alias} → {target}」?它指向的上游模型已不在清单里。": "Delete the mapping “{alias} → {target}”? The upstream model it points to is no longer in the catalog.", "确定删除映射「{alias} → {target}」?它指向的上游模型已不在清单里。": "Delete the mapping “{alias} → {target}”? The upstream model it points to is no longer in the catalog.", "确定删除此区域列出的全部 {n} 条未挂载映射?此操作不可撤销,不会删除正常挂载的映射或模型。": "Delete all {n} unattached mappings listed in this section? This cannot be undone. Attached mappings and models will not be deleted.", "确定删除选中的 {count} 个模型登记?删除后 /v1/models 不再广告它们、请求也会被拒。": "Delete the {count} selected model registrations? After deletion, /v1/models will no longer advertise them and requests to them will be rejected.", "确定移除自定义模型「{id}」?这条登记会被直接移除,之后 /v1/models 不再广告它、请求它也会被拒。": "Remove the custom model “{id}”? This registration will be removed directly, after which /v1/models will no longer advertise it and requests to it will be rejected.", "确认桌面端还在运行,再重试一次。": "Make sure the desktop app is still running, then try again.", "确认选择": "Confirm selection", "社区参考档位,不代表当前上游通道支持;实际以该通道目录为准。": "Community reference levels do not guarantee support on this upstream route; its catalog is authoritative.", "社区参考档位:{levels}": "Community reference levels: {levels}", "移除": "Remove", "移除自定义模型": "Remove custom model", "系统提示词": "System prompt", "绑定 {requested},按当前通道将发送 {effective}。": "Bound to {requested}; this route will send {effective}.", "绑定在「对外名 → 上游模型」这一条映射上的思考等级(列表照抄 OmniProxy 的手动绑定),选「不覆盖」表示不给这条映射指定等级。它会跟着这条映射注入转发,由承载的那家翻译成自己的档位字段(CatPaw 归并成 low/high/max,Qoder 按模型声明的档位归一)。以下几种情况故意不注入:① off / none(关闭思考)—— 本项目没有安全的表达方式;② 表外的自定义等级(各家能力范围不同,无法判断上游收不收);③ 客户端请求体里已经自己指定了档位(那是更明确的意图,绑定不覆盖);④ 这家上游不认识档位字段(如 WorkBuddy / 小浣熊 / AutoClaw / Cline)。注入与跳过都会写进详细日志。": "The reasoning level bound to a “public name → upstream model” mapping (the list mirrors OmniProxy's manual bindings). Choosing “Do not override” means no level is assigned to this mapping. It is injected along with this mapping during forwarding and translated by the serving provider into its own level field (CatPaw merges them into low/high/max; Qoder normalizes them to the levels the model declares). It is deliberately not injected in the following cases: 1) off / none (reasoning off) — this project has no safe way to express them; 2) custom levels outside the table (providers differ in what they support, so there is no way to tell whether upstream accepts them); 3) the client request body already specifies a level (that is a clearer intent, which the binding does not override); 4) this upstream doesn't recognize the level field (e.g. WorkBuddy / Raccoon / AutoClaw / Cline). Both injections and skips are written to the detailed log.", "继承上游": "Inherit from upstream", "继承上游 {value}": "Inherit from upstream {value}", "继承上游:{value}": "Inherit from upstream: {value}", "网关未返回保存后的提供商记录": "The gateway did not return the saved provider record.", "网关未返回逐家模型目录刷新结果": "The gateway returned no per-provider model catalog refresh results", "能力": "Capabilities", "自定义 · 全部": "Custom · all", "自定义家": "Custom provider", "自定义提供商": "Custom provider", "自定义提供商的清单": "Custom provider catalog —", "自定义提供商还没有模型:先在左栏选一家,点「添加模型」登记,或「获取上游模型」从上游拉取": "This custom provider has no models yet: pick a provider in the left rail, click \"Add model\" to register one, or \"Fetch upstream models\" to pull from upstream", "自定义模型已移除": "Custom model removed", "自定义等级": "Custom level", "自定义等级…": "Custom level…", "自定义等级(例如 custom-high)": "Custom level (e.g. custom-high)", "至少选一个测试账号": "Select at least one test account", "节点 {proxy}": "Node {proxy}", "获取": "Fetch", "获取中…": "Fetching…", "获取失败:{message}": "Fetch failed: {message}", "获取模型": "Fetch models", "获取模型 — {name}": "Fetch models — {name}", "规则 {n}": "Rule {n}", "规则不绑定提供商,压缩模型由其路由配置决定使用哪家提供商。": "Rules are not tied to a provider. The compaction model's routing configuration determines which provider is used.", "视频": "Videos", "视频识别": "Video recognition", "设置 / 清除会应用到选中模型的": "Setting / clearing applies to ", "设置思考等级": "Set reasoning level", "设置思考等级后,会覆盖下游请求中的等级;选择“不覆盖”则保留下游参数。实际档位以提供商支持范围为准,无法注入时保留原请求并记录原因。off / none 仍不由映射注入。": "A configured reasoning level overrides the level in downstream requests. Choose “Do not override” to preserve downstream parameters. The effective level depends on provider support; if it cannot be applied, the original request is preserved and the reason is logged. Mappings still do not inject off / none.", "设置思考等级(当前未绑定)": "Set reasoning level (not bound)", "该提供商已不存在(可能已被删除),请刷新列表": "This provider no longer exists (it may have been deleted); refresh the list", "该提供商当前没有可选的上游模型": "This provider currently has no selectable upstream models", "该提供商没有可用账号(要在账号页启用一个、且凭证完整),一行都发不出去": "This provider has no usable accounts (enable one on the Accounts page with complete credentials), so not a single request can be sent", "该提供商的清单里没有模型「{name}」": "This provider's catalog has no model “{name}”", "该等级无法注入,请选择上游可用档位或清除绑定。": "This level cannot be injected. Select an upstream supported level or clear the binding.", "该行当前未启用:测试照常按本名直发(「先测通、再决定要不要启用」正是这颗按钮的用法),但本行的思考等级绑定不参与本次,生产路由也要等绑定打开后才会放行": "This row is currently disabled: the test still sends the model under its own name (“test it first, then decide whether to enable it” is exactly what this button is for), but this row's reasoning level binding is not used this time, and production routing won't be allowed through until the binding is turned on", "该账号对这个模型正在限额冷却,等一会儿自己会好;也可以先测别的账号。": "This account is cooling down on rate limits for this model; it will recover on its own shortly. You can also test another account first.", "说明": "Note", "请先选择一把 API Key": "Select an API Key first", "请填写上游模型 ID": "Enter an upstream model ID", "请填写对外映射名": "Enter a public mapping name", "请填写模型 ID": "Enter a model ID", "请填写自定义思考等级,或改选候选档 / 「清除」": "Enter a custom reasoning level, or pick a candidate level / “Clear”", "请完整选择来源模型和压缩模型": "Select both a source model and a compaction model.", "请选择受支持的客户端": "Select a supported client.", "请选择提供商": "Select a provider", "读取模型清单失败:{message}": "Failed to read the model catalog: {message}", "账号 ": "Account ", "跟随映射(当前 {level})": "Follow mapping (currently {level})", "跟随映射(未绑定等级)": "Follow mapping (no level bound)", "跟随映射(该行未启用,本次不注入)": "Follow mapping (row disabled; not injected this time)", "跟随账号配置": "Follow account setting", "跳过": "Skipped", "转发到上游模型": "Forward to upstream model", "还没有可刷新的提供商:先在账号页添加一个账号": "No providers to refresh yet: add an account on the Accounts page first", "还没有自定义提供商": "No custom providers yet", "这一行已不在当前清单里(模型被移除、或目录刷新后上游不再提供它)。关闭后刷新列表再试。": "This row is no longer in the current catalog (the model was removed, or upstream no longer offers it after a catalog refresh). Close this dialog, refresh the list, and try again.", "这个模型仍在承载它的提供商清单里,但那一家的模型行当前没有出现(例如该家没有可用账号)": "This model is still in the catalog of the provider that carries it, but that provider has no model row right now (for example, it has no usable account).", "这个模型在官方客户端里是否会被展列;不展示的那些默认已关闭(含默认绑定)": "Whether the official client lists this model; entries that are not shown are disabled by default (including the default binding)", "这个模型已经在这家的清单里,不重复导入": "This model is already in this provider's catalog; it won't be imported again", "这个模型的图片能力(图片生成 / 图片编辑)—— 点击修改": "This model's image capabilities (image generation / image editing) — click to edit", "这些映射指向的上游模型已不在当前清单里,挂不到任何模型行上:它们不会出现在 /v1/models,用对应别名发请求也会失败。删除后该对外名即可重新使用。": "The upstream models these mappings point to are no longer in the current catalog, so they cannot be attached to any model row: they will not appear in /v1/models, and requests sent with the corresponding alias will fail. Delete one to free up its public name.", "这些映射指向的上游模型已不在当前清单里,用对应别名发请求会失败。可以在这里删除,删掉后该对外名即可重新使用。": "The upstream models these mappings point to are no longer in the current catalog, so requests sent with the corresponding alias will fail. You can delete them here to free up the public name.", "这几项是给": "These fields are capability declarations for ", "这家提供商没有可见性判据(目前只有 Antigravity / Qoder / 小浣熊 / CodeArts 有)": "This provider has no visibility rule (currently only Antigravity / Qoder / Raccoon / CodeArts have one)", "这家有可见性判据,但这一条上游没有表态 —— 按可见处理": "This provider has a visibility rule, but upstream did not state it for this entry — treated as visible", "这家没有可用账号(要在账号页启用一个、且凭证完整)": "This provider has no usable accounts (enable one on the Accounts page with complete credentials)", "这家用固定模型清单,无可刷新": "This provider uses a fixed model catalog; nothing to refresh", "这家的模型清单是全局的,不跟账号走": "This provider's model catalog is global and not tied to accounts", "这家的清单是你自己登记的,不填的项下游按未声明处理。": "This provider's catalog is what you registered yourself; fields left empty are treated as not declared downstream.", "这家还没有可用账号,刷新会使用默认登录态": "This provider has no usable accounts yet; the refresh will use the default login session", "这家还没有模型:点「添加模型」登记,或「获取上游模型」从上游拉取": "No models for this provider yet: click “Add model” to register one, or “Fetch models” to pull from upstream", "这是模型自己能配的档位(来自上游目录),只读;要改某一档请到映射弹窗里选。": "These are the levels the model itself supports (from the upstream catalog); they're read-only. To change a level, select it in the mapping dialog.", "这条登记(不像内置模型那样只是隐藏),因为它的存在完全由这次登记决定。": "this registration (unlike built-in models, which are merely hidden), because its existence is decided entirely by this registration.", "这里是": "This is ", "远程": "Remote", "远程目录": "Remote catalog", "远程目录已更新,「来源」列会显示为「远程」": "Remote catalog updated; the “Source” column will show “Remote”", "适用客户端": "Client", "选一个账号(至少一个)": "Select an account (at least one)", "选中的模型都不是手动登记,无法删除(开关映射才是它们的手段)": "None of the selected models are manually registered, so they can't be deleted (use the mapping toggles instead)", "选中的都不是手动登记的模型,删除不可用(上游目录带回来的行由清单决定存在性)": "None of the selected models are manually registered; deletion isn't available (rows brought back by the upstream catalog exist as long as the catalog lists them)", "重新获取": "Fetch again", "重新读取会丢弃当前草稿,确定继续?": "Reloading will discard the current draft. Continue?", "重试": "Retry", "错误详情": "Error details", "默认": "Default", "默认开,与真实请求一致:可同时验证 SSE 链路与首字延迟。": "On by default, matching real requests: verifies both the SSE path and time to first token.", "默认档位:{level}": "Default level: {level}", "默认绑定": "Default binding", "({label})": " ({label})", "({provider})": " ({provider})", "(上游这一次返回了空正文)": "(Upstream returned an empty body this time)", "(中间共尝试 {n} 次)": " ({n} attempts in total)", "(已禁用)": " (disabled)", "(已被手动覆盖,弹窗里可恢复继承)": " (manually overridden; restore inheritance in the dialog)", "(手动设定)": " (set manually)", "(由 models.dev 补齐)": " (filled in by models.dev)", "(登记后即可用这个名字请求)": " (you can request with this name once registered)", "(续)": "(cont.) ", "(默认 ": "(default ", "(默认绑定与别名 chips);「清除」= 不给这些映射指定等级(选「不覆盖」的口径与映射弹窗一致)": " of the selected models (default binding and alias chips); “Clear” means no level is assigned to these mappings (same as “Do not override” in the mapping dialog)", ")": ")", "),下游按它们决定发不发图片、按多大的窗口堆历史。": ". Downstream uses them to decide whether to send images and how much history to pack into the context window.", "+ 新建自定义提供商": "+ New custom provider", "+ 映射": "+ Mapping", "+ 添加压缩规则": "+ Add compaction rule", "+ 添加模型": "+ Add model", "+等级": "+Level", ",与远程目录 / 内置清单区分开。删除自定义模型是": ", which distinguishes it from the remote catalog / built-in catalog. Deleting a custom model ", ",已完成 ": ", completed ", ",跳过 {n} 个": ", {n} skipped", ",通常就不是账号问题了:先确认这个模型还在上游目录里(「获取模型」刷一次),再看默认绑定指向的上游模型对不对。": ", it's usually not an account problem: first confirm this model is still in the upstream catalog (run “Fetch models” once), then check whether the default binding points to the right upstream model.", ":": ": ", ":这里的模型不会出现在其他家,别名也只在这一家内生效。改名称 / 协议 / Base URL 在账号页该家账号的「设置」→ 提供商一栏;整家不要了,鼠标移到左栏这家上点 × 删除(连同名下账号)。": ": the models here won't appear under other providers, and aliases take effect only within this provider. To change the name / protocol / Base URL, use the “Settings” → Provider section of this provider's account on the Accounts page; to remove the whole provider, hover over it in the left rail and click × to delete it (along with its accounts).", ";其中 {keys} 由 models.dev 补齐": "; {keys} filled in by models.dev", ";首个失败:{error}": "; first failure: {error}", "{account} · 账号设置": "{account} · Account settings", "{account} 参与本路由": "Include {account} in this route", "{account} 尝试失败后切换到此账号": "Switched to this account after {account} failed", "{available} 可用 · {blocked} 跳过": "{available} available · {blocked} skipped", "{clients} 的标题请求": "Title request from {clients}", "{client} 的压缩请求": "Compaction request from {client}", "{models} 看不了图时": "When {models} cannot read images", "{model} 参与本路由": "Include {model} in this route", "{model} 有独立配置": "{model} has its own configuration", "{name} · 提供商路由设置": "{name} · Provider routing settings", "{name} 已{state}": "{name} {state}", "{name} 的账号顺序已调整": "{name} account order changed", "{n} 个候选": "{n} candidates", "{n} 个参与账号": "{n} participating accounts", "{n} 个启用且参与的账号": "{n} enabled, participating accounts", "{n} 个提供商": "{n} providers", "{n} 个模型限流": "{n} models rate-limited", "{n} 个请求": "{n} requests", "{n} 个账号 · {on} 启用 · {off} 禁用": "{n} accounts · {on} enabled · {off} disabled", "{n} 个账号已折叠": "{n} accounts collapsed", "{n} 个跳过": "{n} skipped", "{n} 在途": "{n} in flight", "{n} 处未保存": "{n} unsaved changes", "{n} 已完成": "{n} completed", "{n} 条": "{n} entries", "{n} 条活跃绑定": "{n} active bindings", "{n} 条请求没有会话标识,未计入会话数量。": "{n} requests have no session identifier and are not included in the session count.", "{n} 条账号路径": "{n} account paths", "{n} 次": "{n} attempts", "{n} 项参与": "{n} participating", "{paths} 条路径 · {sessions} 个会话": "{paths} paths · {sessions} sessions", "{providers} 个提供商 / {accounts} 个账号": "{providers} providers / {accounts} accounts", "{providers} 个提供商 · {accounts} 个参与账号": "{providers} providers · {accounts} participating accounts", "{provider} 参与本路由": "Include {provider} in this route", "{selected} / {total} 个账号参与": "{selected} / {total} accounts included", "{selected} / {total} 个账号启用": "{selected} / {total} accounts enabled", "{time} 后恢复": "Recovers in {time}", "一个路由组最多允许 {n} 个成员": "A route group can have at most {n} members", "一条历史路径": "A historical path", "上游已响应": "Upstream responded", "上游请求已发出": "Upstream request sent", "上游调用": "Upstream call", "下一条请求": "Next request", "下一条请求将走": "The next request will go to", "不参与": "Not included", "不按余额排序": "Do not sort by balance", "不按到期排序": "Do not sort by expiry", "与账号页共用全局消耗规则": "Shares global consumption rules with Accounts", "与账号页共用:{rules}。积分到期等规则直接影响网关实际选路。": "Shared with Accounts: {rules}. Rules such as credit expiry directly affect gateway routing.", "为什么没有调用": "Why it was not called", "为什么选择它": "Why it was selected", "为压缩请求指定模型": "Choose a model for compaction requests", "五分钟没有往来即释放;客户端会话标识优先,内容哈希兜底。": "Released after five minutes of inactivity. Client session identifiers take priority; a content hash is used as a fallback.", "仅保留最后承载信息,尝试明细未记录": "Only the final account is retained; attempt details were not recorded", "仅允许指定提供商": "Allow selected providers only", "仅列出真实目录中的对话模型,不自动更改模型映射。": "Only chat models from the actual catalog are listed. Model mappings remain unchanged.", "仅加入的参与": "Only added providers", "仅勾选的参与": "Only checked providers", "仅历史": "History only", "仅在途": "In flight only", "仅展示已发生的请求,不表示当前可选": "Shows recorded requests, not current eligibility", "仅影响此路由的后续请求": "Only affects subsequent requests to this route", "仅看选中路径": "Selected paths only", "仅筛选右侧账号列表,不改变路由配置。": "Only filters the account list on the right. Routing settings stay unchanged.", "仍保留配置,账号可继续用于其他路由。": "Settings are retained. Accounts remain available to other routes.", "仍然保存": "Save anyway", "从上到下就是选路顺序": "Top to bottom is the routing order", "从当前视图移除": "Remove from this view", "从现有模型中创建独立配置,自动列出提供它的全部提供商;之后的修改只跟随这个模型。": "Create an independent configuration for an existing model. All providers serving it are listed automatically; later changes apply only to this model.", "以下 {n} 个账号原本被全局路由排除。确认后会将它们设为禁用,所有路由都不能再选用;原有独立路由的参与名单保留。": "These {n} accounts were excluded from the global route. Confirming disables them for all routes. Existing participation lists in independent routes are preserved.", "优先使用队首账号,不可用时顺延。": "Prefer the first account in the queue and fall back when it is unavailable.", "优先尝试": "Try first", "优先级:{rules};前一项相同才比较后一项。": "Priority: {rules}. Later rules apply only when earlier rules tie.", "会话": "Sessions", "会话最长保持六小时无往来;可以随时在会话粘滞中解除。": "Bindings last for up to six hours of inactivity and can be released at any time under Session bindings.", "会话来源": "Session source", "会话标识": "Session identifier", "会话标识 {id} · 来源 {source}": "Session {id} · source {source}", "会话标识未记录,不将此请求推断为独立会话。": "No session identifier was recorded. This request is not assumed to be a separate session.", "会话活动": "Session activity", "会话粘住": "Session binding hit", "会话粘滞": "Session bindings", "会话粘滞 {mode}": "Session affinity {mode}", "会话粘滞改为{value}": "Session affinity set to {value}", "位置 = 顺位": "Position = priority", "作用范围": "Scope", "例如:日常省钱": "For example: Everyday savings", "供继承全局的模型使用": "Used by models inheriting global settings", "保存": "Save", "保存中…": "Saving…", "保存仅影响后续选路,历史快照与在途请求不改写。": "Saving affects subsequent routing only. Historical snapshots and in-flight requests remain unchanged.", "保存全局路由": "Save global routing", "保存后仅用于后续请求,不改变历史快照或在途请求。": "Saving applies only to subsequent requests, without changing historical snapshots or in-flight requests.", "保存后只影响后续请求": "Only affects later requests", "保存后才会影响真实请求": "Changes affect real requests only after saving", "保存响应不完整,请刷新当前配置确认结果": "The save response is incomplete. Reload the current configuration to confirm the result.", "保存当前配置": "Save current configuration", "保存模型路由": "Save model routing", "保存的尝试明细中没有这次调用": "This call is not present in the saved attempt details", "保存空路由": "Save empty route", "保存规则": "Save rule", "保存路由": "Save route", "保存路由后,在客户端填写此模型 ID。密钥使用你自己的网关 Key。": "After saving, use this model ID in your client with your own gateway key.", "保护设置由所有模型共用;模型独立配置可覆盖参与范围、顺序、策略与粘滞。": "Protection settings are shared by all models. Independent model configurations can override participation, order, strategy, and stickiness.", "修改后影响继承全局的模型": "Changes affect models that inherit the global configuration", "修改范围以「编辑范围」为准": "Changes apply to the selected editing scope", "候选": "Candidates", "候选 {n}": "Candidates {n}", "候选 · {name}": "Candidate · {name}", "候选与跳过": "Candidates and skips", "候选与跳过清单各最多保存十二项;这里只回放当时保存的快照,不用当前队列重算。": "Up to twelve candidates and skips are saved. This replays the saved snapshot, not the current queue.", "候选与跳过清单各最多保存十二项;重试和跨账号切换见尝试明细。": "Candidate and skipped lists each retain up to twelve entries. See attempt details for retries and account switches.", "候选和跳过清单各最多保存十二项,超出部分不绘制。": "Candidate and skipped lists each retain up to twelve entries. Additional entries are not drawn.", "候选快照中有此账号,但保存的尝试明细未显示它被调用": "This account appears in the candidate snapshot, but no call to it is recorded in the saved attempts", "候选快照仅保存部分记录,未保存的账号无法回放": "Only part of the candidate snapshot was saved; accounts without records cannot be replayed", "候选筛选": "Candidate filter", "候选规模": "Candidate pool", "候选账号": "Candidate account", "候选顺序": "Candidate order", "停用后保留卡片与账号,方便随时恢复;不会全局禁用提供商。": "Disabling keeps the card and accounts for easy restoration. It does not disable the provider globally.", "停用后保留卡片与账号;自动参与不会重新启用明确停用的提供商。": "Disabling keeps the card and accounts. Automatic participation does not re-enable explicitly disabled providers.", "停用此提供商": "Disable this provider", "停用路由提供商": "Disable routing provider", "允许参与的提供商": "Allowed providers", "先处理凭证、限额或参与范围。": "Resolve credentials, limits, or scope first.", "先尝试当前路由内的视觉模型,不可用时再按顺序尝试指定模型;指定模型可跨路由池。": "Try vision models in the current route first, then try the selected models in order if unavailable. Selected models can use a different routing pool.", "先读图再交回": "Reads the image first, then hands back to", "全局": "Global", "全局保护设置": "Global protection settings", "全局修改影响继承它的模型;独立模型配置不变。": "Global changes affect models that inherit them; independent model configurations remain unchanged.", "全局修改影响继承的设置;模型已独立设置的项目保持不变。": "Global changes affect inherited settings; model-specific overrides remain unchanged.", "全局参与范围": "Global participation scope", "全局顺序与账号页联动,修改即时保存。": "Global order stays in sync with Accounts. Changes are saved immediately.", "全局默认": "Global defaults", "全局默认供继承的模型使用;给某个模型单独配置后,它就不再跟随全局。": "Global default serves models that inherit it; once a model has its own config, it stops following global.", "全部候选": "All candidates", "全部模型(窗口内没有请求)": "All models (no requests in window)", "全部禁用": "All accounts disabled", "全部移出": "Remove all", "全部移出本路由": "Remove all from this route", "全部自动参与": "All providers automatically", "全部解除": "Release all", "全部请求": "All requests", "全部路径": "All paths", "共 {n} 个可添加的模型": "{n} models can be added", "共 {n} 条路由回放": "{n} routing replays", "共尝试 {total} 次,保存了 {saved} 条明细": "{total} attempts; {saved} details saved", "关联与在途优先": "Selected and in-flight first", "关联请求路径": "Related request paths", "关闭": "Close", "其他候选": "Other candidates", "其他客户端": "Other clients", "其他账号已完成请求,没有继续调用这个候选": "Another account completed the request, so this candidate was not called", "内容哈希": "Content hash", "内容哈希(推断)": "Content hash (inferred)", "内部重试不会增加账号切换节点。": "Internal retries do not add account-switch nodes.", "决定后续请求用谁、按什么顺序,以及是否沿用会话账号。": "Choose which accounts handle subsequent requests, their order, and whether to reuse the session account.", "冷却中": "Cooling down", "切换 {n} 次": "{n} switches", "切换后,原本不在名单内的可用提供商也会参与转发。明确停用的提供商和排除的账号不会恢复。": "After switching, available providers outside the previous list will also participate. Explicitly disabled providers and excluded accounts remain excluded.", "切换模型后,右侧只展示该模型的提供商与账号路由。": "Switching models shows only that model's provider and account routes on the right.", "列表内容": "List content", "创建独立配置": "Create independent configuration", "创建草稿": "Create draft", "删除后此入口将不再接受请求。不会删除成员模型、提供商或账号。": "Deleting this entry stops it accepting requests. Member models, providers and accounts are not deleted.", "删除后这个模型会重新跟随全局配置,已保存的独立设置和当前未保存修改都会被移除。": "Deleting it makes this model follow the global configuration again. Saved independent settings and any unsaved changes will be removed.", "删除独立路由": "Delete independent route", "删除独立配置": "Delete independent config", "删除规则": "Delete rule", "删除路由组": "Delete route group", "刷新请求记录": "Refresh request history", "刷新路由": "Refresh routes", "刷新预演": "Refresh preview", "加入": "added", "加入路由": "Add to route", "历史只读,不影响当前配置": "Read-only history; current settings are unchanged", "历史只读,当前配置的修改不会改变这条请求的快照。": "History is read-only. Configuration changes do not alter this request snapshot.", "历史快照保留了 {shown} / {total} 个候选明细,其余未记录。": "The historical snapshot retained {shown} of {total} candidate details. The rest were not recorded.", "历史承载账号当前不可用": "Historical account currently unavailable", "历史日期": "History date", "历史记录": "History", "压缩上下文": "Context compaction", "压缩模型": "Compaction model", "原因": "Reason", "原始报文在请求详情里,这里只看选路过程。": "Raw payloads live in request details; this view only shows routing.", "原模型": "Original model", "去账号页添加": "Add on the Accounts page", "参与": "Included", "参与当前视图转发": "Forward requests in this view", "参与方式": "Participation", "参与方式改为{value}": "Participation changed to {value}", "参与本路由": "Included in this route", "参与范围": "Participation scope", "参与范围与顺序独立保存;策略和粘滞可分别继承全局。": "Participation and order are saved independently; strategy and stickiness can each inherit global settings.", "参与账号": "Participating accounts", "参与路由": "Participates in routing", "参与路由的账号": "Accounts participating in routing", "参与转发": "Participating members", "参与顺序": "Routing order", "发生切换": "Account switched", "取消": "Cancel", "取消勾选只排除当前范围,不会在账号页全局禁用账号。": "Unchecking excludes the account only from this scope; it does not disable it globally on the Accounts page.", "取消选中": "Clear selection", "只从当前路由移出,保留模型和账号配置;不会改变其他路由。": "Remove only from this route, retaining model and account settings. Other routes are unchanged.", "只从当前路由视图移除,不删除提供商或账号,也不改变其他模型的独立配置。": "Remove only from the current routing view. Providers, accounts, and other models' independent configurations remain unchanged.", "只修改全局参与范围,不改变账号排序、模型开关或模型独立路由;网关 Key 权限与限流仍然生效。": "Changes only global participation, not account order, model enablement, or independent model routes. Gateway Key permissions and rate limits still apply.", "只列出当前模型已有启用绑定的提供商;这里只设置路由,不新建模型绑定。": "Only providers with an enabled binding for this model are listed. This changes routing, not model bindings.", "只影响这个路由成员,不改变账号启用状态,也不影响其他模型。新增账号需要手动加入。": "Only affects this member, not account enablement or other models. New accounts must be added manually.", "只改写被识别为标题生成的小请求,普通对话不受影响。": "Only small requests recognised as title generation are rewritten; normal conversations are unaffected.", "只有加入的提供商参与,新增提供商需要手动加入。": "Only added providers participate. New providers must be added manually.", "只有勾选的提供商参与;以后新增的提供商需要在这里勾选。": "Only checked providers participate; new providers must be checked here.", "只有名单内的提供商可以参与;新增提供商不会自动加入。": "Only listed providers can participate. New providers are not added automatically.", "只看用过这个模型的客户端与账号。点一条看它当时是怎么选的。": "Only clients and accounts that used this model. Open one to see how its account was chosen.", "只看这个客户端经过的模型与账号。点一条看它当时是怎么选的。": "Only models and accounts this client went through. Open one to see how its account was chosen.", "只看这个提供商下参与路由的账号。点一条看它当时是怎么选的。": "Only participating accounts under this provider. Open one to see how its account was chosen.", "只看这个账号承接的请求。点一条看完整的选路过程。": "Only requests handled by this account. Open one to see the full routing.", "只看这条路径上的请求。点一条看完整的选路过程。": "Only requests on this path. Open one to see the full routing.", "只移出本路由,账号状态和其他路由不变;保存后此入口将没有可用路由。": "Remove only from this route. Accounts and other routes stay unchanged. After saving, this entry has no available route.", "只读预演,不会推进轮转;保存后才会影响真实请求。": "Read-only preview; it does not advance rotation. Only saving affects real requests.", "可以保存空路由,但请求会明确失败,不会回退全局。": "An empty route can be saved, but requests will fail explicitly without falling back globally.", "可以跨提供商、跨模型多选。同一提供商也可以加入不同模型。": "Select multiple models across providers. Different models from the same provider can also be included.", "可用候选": "Available candidates", "可用待命": "Available, on standby", "可用账号按请求轮换;开启会话粘性时同一会话优先留在原账号。": "Rotate available accounts per request. With session stickiness enabled, the same session prefers its previous account.", "右侧面板内容": "Right panel content", "同一会话优先保持模型与账号,不可用时才顺延。": "Prefer the same model and account within a session; fall back when unavailable.", "同一模型,选择不同提供商": "Same model, different providers", "同号重试 {n} 次": "{n} same-account retries", "同账号内部重试": "Internal retries on the same account", "后备账号": "Backup account", "后过期": "until expiry", "否": "No", "启用": "enabled", "启用 {provider} 的账号": "Enable accounts for {provider}", "启用全部账号": "Enable all accounts", "启用当前列表账号": "Enable accounts in this list", "启用提供商中的第 {rank} 顺位;当前可用候选第 {effective} 顺位。": "Priority {rank} among enabled providers; current available-candidate priority {effective}.", "启用提供商中的第 {rank} 顺位;当前没有可用候选账号。": "Priority {rank} among enabled providers; no candidate accounts are currently available.", "启用规则": "Enable rule", "启用账号 {account}": "Enable account {account}", "命中 {n} 次": "{n} hits", "命中下面规则的上下文压缩请求,会改用指定的模型压缩一次;账号仍按新模型自己的路由挑。": "Context compaction requests matching a rule below are compacted once with the model you pick; the account is then chosen by that model's own route.", "命中会话粘性,沿用原账号完成请求": "Session stickiness matched; the previous account completed the request", "命中会话粘滞": "Session binding hit", "命中这条规则的压缩请求会改用「压缩模型」重发一次;改写之后按新模型自己的路由挑账号。": "Compaction requests matching this rule are re-sent once with the compaction model; the account is then chosen by that model's own route.", "命中配置": "Matched configuration", "响应到达": "Response received", "响应到达后": "After response arrival", "响应完成": "Response complete", "回放中": "Replaying", "回放保持不变": "Replay remains unchanged", "回放步骤": "Replay step", "固定这条请求": "Pin this request", "在工作台查看": "Open in workbench", "在途 + 近期": "In flight + recent", "在途 {n} / {limit}": "In flight {n} / {limit}", "在途时长": "Elapsed in-flight time", "在途请求 / 并发上限": "In-flight requests / concurrency limit", "备选按顺序尝试;一个都不加时,当前路由内找不到视觉模型就停止并说明原因。": "Fallbacks are tried in order; with none added, the request stops with an explanation when no vision model is found in the current route.", "复制失败,请手动选择并复制": "Copy failed. Select and copy manually.", "复制网关地址": "Copy gateway URL", "失败原因未记录": "Failure reason not recorded", "失败后备选": "Fallback on failure", "失败时直接报错": "Report the error on failure", "失败时退回原模型": "Fall back to the original model on failure", "失败阈值": "Failure threshold", "完整详情": "Full details", "完整请求详情": "Full request details", "完整过程": "Full process", "实时状态暂未更新,当前显示上次读取的结果:{error}": "Live status could not be refreshed. Showing the last retrieved results: {error}", "实际尝试失败": "Actual attempt failed", "实际模型": "Actual model", "实际请求路径": "Actual request paths", "实际账号尝试": "Actual account attempts", "客户端已取消请求": "The client cancelled the request", "客户端模型 {client} → 实际模型 {model}": "Client model {client} → upstream model {model}", "客户端请求": "Client request", "对外模型 ID": "Public model ID", "对外模型 ID 已被占用,请换一个名称": "This public model ID is taken. Choose another.", "对外模型 ID 格式不正确": "Invalid public model ID", "将禁用当前所选的 {n} 个账号,所有路由都不能再选用它们。此操作立即保存,不会删除账号。": "Disable the {n} selected accounts for all routes. This change is saved immediately and does not delete the accounts.", "尚未记录承载账号": "No serving account recorded yet", "尚未读取到有效的积分到期时间": "No valid credit expiry time has been loaded yet", "尝试 {n}": "Attempt {n}", "尝试 {n} · 最终承载": "Attempt {n} · final carrier", "尝试中": "Trying", "尝试失败": "Attempt failed", "尝试明细已截断或未记录,画布只展示保存下来的信息。": "Attempt details were truncated or not recorded. The canvas shows only saved information.", "尝试结果": "Attempt result", "尝试记录": "Attempts", "展开其余 {n} 个候选": "Show {n} more candidates", "展开完整原因": "Show full reason", "工具服务的视觉模型": "the tool service vision model", "左侧修改的是全局默认,不会影响它。": "Changes on the left apply to the global default and do not affect it.", "已保存": "Saved", "已保存 {n} 个候选": "{n} candidates saved", "已保存明细": "Saved details", "已停用": "Disabled", "已停用提供商 · {n}": "Inactive providers · {n}", "已关闭": "Disabled", "已删除独立配置,改为跟随全局": "Independent config deleted; now following the global configuration", "已启用": "Enabled", "已启用模拟条件": "Simulation conditions enabled", "已固定这条请求,新请求不会打断当前查看": "This request is pinned; new requests will not interrupt this view", "已完成记录": "Completed records", "已完成请求时间范围": "Completed request time range", "已尝试": "Already attempted", "已尝试 · 失败": "Tried · failed", "已用时": "Elapsed", "已禁用账号": "Disabled accounts", "已禁用账号 · {n}": "Disabled accounts · {n}", "已解除 {n} 条会话粘滞": "Released {n} session bindings", "已记录 {n} 次尝试": "{n} recorded attempts", "已跳过": "Skipped", "已转换为账号启停,独立路由参与名单保持不变": "Converted to account enable/disable controls. Independent route participation lists are unchanged.", "平均耗时": "Average duration", "并发已满": "Concurrency limit reached", "序号表示先后,不是提供商之间互相转发": "Numbers show the order of attempts, not forwarding between providers", "应用到草稿": "Apply to draft", "开始 {start} · 响应 {response} · 结束 {finish}": "Start {start} · response {response} · end {finish}", "开始于 +{time}": "Started at +{time}", "开始时间": "Start time", "当前全局路由使用固定参与名单,新增提供商不会自动加入。": "The global route uses a fixed participation list. New providers are not added automatically.", "当前可用队首": "Current available queue head", "当前承载": "Current handling account", "当前有效顺位以路由预演为准,不改变保存的配置优先级。": "The current effective order follows the routing preview and does not change the saved configuration priority.", "当前档位不保留跨请求粘滞,因此没有活跃绑定。": "The current mode does not retain bindings across requests, so there are no active bindings.", "当前模型": "Current model", "当前模型使用独立顺序,不受全局自动消耗排序影响。删除独立路由后会重新跟随账号页。": "This model uses an independent order, unaffected by global automatic consumption sorting. Deleting the independent route makes it follow Accounts again.", "当前模型使用独立顺序,不受全局自动消耗排序影响。恢复继承后会重新跟随账号页。": "This model uses an independent order, unaffected by global automatic consumption sorting. Restore inheritance to follow Accounts again.", "当前模型没有对应的账号,请先添加账号或检查模型绑定。": "No accounts are associated with this model. Add an account or check its model bindings.", "当前模型配置独立保存,不影响全局和其他模型。": "This model's configuration is saved independently and does not affect global settings or other models.", "当前没有参与账号,保存后这个范围可能无法承载新请求。": "No accounts currently participate. Saving may leave this scope unable to handle new requests.", "当前没有可沿用的粘滞绑定": "No reusable session binding", "当前空闲": "Currently idle", "当前绑定:{account},剩余 {time}": "Current binding: {account}, expires in {time}", "当前继承全局。改成模型独立配置后,改动只影响这个模型。": "Currently inherits global. A model-specific config only affects this model.", "当前继承全局固定名单;新增提供商需手动添加或在全局配置中改为自动参与。": "This view inherits the fixed global list. Add new providers manually or enable automatic participation in the global configuration.", "当前继承全局,修改前先切到独立配置": "Inheriting global — switch to own config before editing", "当前继承全局,切换到独立配置后只修改本模型。": "Currently inheriting global settings. Switch to an independent configuration to edit only this model.", "当前网关尚不支持全局账号启停,请更新网关后重新读取。": "This gateway does not yet support global account controls. Update the gateway and reload.", "当前范围内没有请求": "No requests in this range", "当前范围的提供商都没有账号,先在账号页添加": "No providers in this scope have accounts yet. Add one on the Accounts page.", "当前视图没有活跃会话粘滞": "No active session bindings in this view", "当前视图没有路由回放记录": "No routing replays in this view", "当前视图的请求入口": "Request entry point for this view", "当前请求": "In-flight requests", "当前路由位置": "Current routing position", "当前路由内的视觉模型": "a vision model in this route", "当前配置": "Current configuration", "当前配置已排除": "Excluded by current configuration", "当时": "At request time", "当时可用,当前请求尚未轮到这个账号": "Available at the time; this request has not reached this account yet", "当时可选的账号 · {n}": "Accounts available at the time · {n}", "当时状态": "State at the time", "当时的候选说明": "Candidate notes at the time", "当时的成员模型": "Member models at request time", "当时的选路原因未记录": "The routing reason was not recorded at the time", "当时被候选过滤规则跳过": "Skipped by candidate filtering rules at the time", "当时配置": "Configuration at request time", "当时配置与当前配置": "Configuration then and now", "影响继承全局的模型": "Affects models inheriting global settings", "怎么选账号": "Account selection", "思考等级 {value}": "Reasoning level {value}", "总耗时": "Total duration", "总计 {n} tokens": "{n} total tokens", "恢复": "Restore", "恢复全局继承": "Restore global inheritance", "恢复按账号页面的全局优先级选路,解除全局视图的提供商和账号范围限制。模型独立配置不会改变。": "Restore routing by the account page's global priority and remove provider and account restrictions from the global view. Independent model configurations remain unchanged.", "恢复提供商": "Restore providers", "恢复路由提供商": "Restore routing providers", "恢复阈值": "Recovery threshold", "恢复默认路由": "Restore default routing", "成功承载": "Handled successfully", "成员内轮询": "Rotate within members", "成员模型": "Member models", "所有可用提供商自动参与,新增账号或插件后无需再加路由;明确停用的保持不变。": "All available providers join automatically — no route to add after new accounts or plugins; explicitly disabled ones stay off.", "所有可用提供商自动参与,新增账号或插件后无需再添加路由。已停用的提供商和已排除的账号保持不变。": "All available providers participate automatically. Adding accounts or plugins requires no extra routing setup. Disabled providers and excluded accounts remain unchanged.", "所有可用提供商都已在当前路由中": "All available providers are already in this route", "所有模型共用": "Shared by all models", "所有模型共用路由策略与保护设置;全局顺序和消耗规则与账号页联动,模型独立配置可明确覆盖顺序。": "All models share routing strategies and protection settings. Global order and consumption rules stay in sync with Accounts; an independent model configuration can explicitly override the order.", "打开完整请求详情": "Open full request details", "打开该模型配置": "Open this model's configuration", "执行耗时": "Execution time", "执行记录": "Execution records", "执行路径": "Execution path", "执行路径按当时快照保留": "Execution path follows the recorded snapshot", "批量禁用账号": "Disable accounts in bulk", "承载账号": "Handling account", "把不同提供商、不同模型组合成一个入口。客户端使用对外模型 ID 发起请求。": "Combine models from different providers into one entry. Clients request its public model ID.", "把全局配置复制成这个模型的独立配置": "Copy the global config into a model-specific one", "拖动卡片改顺位,勾选决定参与;这里的位置就是实际选路顺序。": "Drag cards to reorder, check to include; this order is the real routing order.", "拖动或按 Alt + 方向键调整顺序": "Drag or press Alt + arrow keys to reorder", "拖动把手或按 Alt + 方向键调整顺序,更多操作在右侧菜单。": "Drag a handle or use Alt + arrow keys to reorder. More actions are in the menu on the right.", "拖动把手调整顺序,也可以使用右侧上下按钮。": "Drag the handle to reorder, or use the up/down buttons on the right.", "拖动提供商与账号调整顺序,修改即时保存。": "Drag providers and accounts to reorder them. Changes are saved immediately.", "拖动改顺位、勾选决定参与;这里的位置就是实际选路顺序。": "Drag to reorder, check to include; this order is the real routing order.", "拖动调整提供商顺序": "Drag to reorder providers", "拖动调整账号顺序": "Drag to reorder accounts", "按客户端类型聚合": "Grouped by client type", "按已保存配置": "Using saved configuration", "按当前草稿预演,不发送请求,不消耗额度。": "Preview this draft without sending requests or spending quota.", "按当前视图的顺序参与选路": "Routed in the order configured for this view", "按此范围查看配置": "Open config for this scope", "按步骤回放,不重新发送请求": "Replay steps without sending the request again", "按请求开始时的顺位": "In the order at request start", "按请求模型选择": "Select by requested model", "按路径聚合,会话在列表中展开,不在画布逐条连线。": "Grouped by path. Sessions are shown in the list, not as separate lines on the canvas.", "排除": "excluded", "提供商与账号": "Providers and accounts", "提供商保持优先顺序,同一提供商的账号轮流承接。": "Keep providers in priority order and rotate accounts within each provider.", "提供商参与": "Provider scope", "提供商参与方式": "Provider participation mode", "提供商参与方式改为{value}": "Provider scope set to {value}", "提供商参与范围": "Provider participation scope", "提供商未参与": "Provider not included", "提供商未记录": "Provider not recorded", "提供商范围": "Provider scope", "提供商路由设置": "Provider routing settings", "搜索会话或账号": "Search sessions or accounts", "搜索客户端、模型或账号": "Search clients, models, or accounts", "搜索提供商或模型": "Search providers or models", "搜索提供商或账号": "Search providers or accounts", "搜索本页会话或账号": "Search sessions or accounts on this page", "搜索模型": "Search models", "搜索模型、账号或会话来源": "Search models, accounts, or session sources", "搜索模型或请求 ID": "Search model or request ID", "搜索请求、模型或账号": "Search requests, models, or accounts", "搜索路由配置": "Search route configurations", "撤销修改": "Discard changes", "撤销草稿": "Discard draft", "收起其他候选": "Hide other candidates", "改为独立配置": "Switch to own config", "改为自动参与": "Enable automatic participation", "改用": "Switch to", "放到第 {n} 位": "Drop at position {n}", "放大画布": "Zoom in", "整次请求改交": "Hands the whole request to", "文本对话": "Text chat", "新增可用提供商会自动参与;这里只需恢复曾明确停用的提供商。": "New available providers participate automatically. Use this dialog only to restore explicitly disabled providers.", "新增提供商自动参与;移出本路由的不会自动加回。": "New providers join automatically. Removed providers are not automatically re-added.", "新增模型": "Add model", "新增模型独立路由": "Add independent model route", "新增模型独立配置": "New model-specific config", "新增路由配置": "Add routing configuration", "新建路由组": "New route group", "新配置 · 保存后生效": "New config · applies after saving", "无可用账号": "No available accounts", "无有效绑定": "No valid binding", "时间相对请求开始;历史只读,修改当前配置不会改变这条记录。": "Times are relative to the request start. History is read-only; changing the current configuration does not alter this record.", "时间相对请求开始;未记录的旧数据不补算。历史只读,修改当前配置不会改变这条记录。": "Times are relative to request start; old records without data are not backfilled. History is read-only — changing current config won't alter this record.", "时间相对请求开始;未记录的旧数据不补算。响应到达不等于流式请求结束。": "Times are relative to the request start. Missing historical data is not inferred. Receiving a response does not mean a streaming request has ended.", "是": "Yes", "显示全部": "Show all", "显示其他候选": "Show other candidates", "显示无账号 ({n})": "Show without accounts ({n})", "暂停": "Pause", "暂无可用账号": "No available accounts", "曾被限流的账号暂时排到队尾,三十分钟后或转发成功后恢复。": "Previously rate-limited accounts move to the back temporarily and return after thirty minutes or a successful forward.", "最早到期的剩余积分包:{time}": "Earliest-expiring credit pack with a remaining balance: {time}", "最终承载": "Final handling account", "最终由 {account} 承接": "Handled by {account}", "最近 {n} 分钟": "Last {n} minutes", "最近 {n} 条": "Latest {n}", "最近使用:{time}": "Last used: {time}", "最近完成": "Recently completed", "最近没有命中记录": "No recent hits", "最近请求已完成": "Latest request completed", "有在途": "With in-flight requests", "有未保存修改,预演仍按已保存配置。": "There are unsaved changes; the preview still uses the saved configuration.", "有未保存的修改": "There are unsaved changes", "未保存完整尝试明细,仅显示请求记录中的承载信息。": "Full attempt details were not saved. Only the handling information in the request record is shown.", "未保存草稿": "Unsaved draft", "未切换": "No switch", "未参与": "Not participating", "未参与提供商 · {n}": "Non-participating providers · {n}", "未参与提供商默认收起;选中历史路径时仍会显示。": "Non-participating providers are collapsed by default, but remain visible when their historical path is selected.", "未参与本范围": "Not in this scope", "未参与本路由": "Not in this route", "未发生切换": "No switch", "未记录上游调用": "No upstream call recorded", "未识别客户端": "Unidentified client", "未调用": "Not called", "未调用不画请求线;模型限流与当前配置分别展示。": "No call means no request line. Model rate limits and current configuration are shown separately.", "未调用的候选": "Candidates not called", "未轮到": "Not reached", "未选择客户端": "No client selected", "未选择模型": "No model selected", "未配置模型的默认路由": "Default route for unconfigured models", "本地网关": "Local gateway", "本次尝试失败": "This attempt failed", "本次执行": "This execution", "本次状态": "Request status", "本次用时": "Attempt time", "本次结果": "Request outcome", "本次耗时": "Attempt duration", "本次请求": "This request", "本次请求已完成": "This request has completed", "本窗口未调用": "Not called in this window", "本轮选路预演": "Routing preview", "来源未记录": "Source not recorded", "查看上游错误": "View upstream error", "查看上游错误摘要": "View upstream error summary", "查看其他 {n} 个候选": "Show {n} other candidates", "查看实际请求的选路、尝试与结果": "View routing decisions, attempts, and results for actual requests", "查看当前配置": "View current configuration", "查看最后一次尝试": "View the last attempt", "查看详情内容": "Choose detail content", "查看配置": "View configuration", "查看配置详情": "View configuration details", "标题生成": "Title generation", "标题生成路由入口尚未就绪,请刷新页面后重试": "The title generation route entry is not ready yet. Refresh the page and try again.", "检测到旧版全局参与设置,请先确认转换,再管理账号启停。": "Legacy global participation settings were found. Confirm their conversion before managing account status.", "模型、网关、提供商与账号的可视化选路": "Visual routing across models, the gateway, providers, and accounts", "模型未记录": "Model not recorded", "模型独立路由": "Model-specific route", "模型独立配置": "Independent model configuration", "模型看不了图片时,按下面的规则交给视觉模型;没配到的模型、以及本来就能看图的,一律原样放行。": "When a model cannot read images, the rules below hand them to a vision model; models not configured here — and those that can read images anyway — pass through unchanged.", "模型绑定不可用": "Model binding unavailable", "模型路由": "Model routes", "模拟首选失败": "Simulate primary failure", "正在处理": "In progress", "正在由 {account} 处理": "Processing with {account}", "正在编辑": "Editing", "正在读取会话绑定…": "Loading session binding…", "正在读取当前配置": "Loading current configuration", "正在读取路由…": "Loading routes…", "正在选路,尚未记录上游尝试": "Routing is in progress; no upstream attempt has been recorded yet", "正在预览 {model}": "Previewing {model}", "此为配置顺位,当前没有可用候选账号。": "This is the configured priority; there are currently no available candidate accounts.", "此入口没有参与路由的提供商,保存后请求将明确失败。": "This entry has no participating providers. Requests will fail explicitly after saving.", "此入口没有参与路由的账号。保存后请求将明确失败,不会回退全局或自动恢复参与名单。": "No accounts participate in this entry. After saving, requests fail explicitly, without global fallback or restoring the list automatically.", "此刻队列": "Current queue", "此提供商当前没有可用的模型绑定,配置已保留;在模型管理中恢复绑定后会自动回来。": "This provider currently has no available model binding. Its configuration is retained and will return automatically when the binding is restored in Model management.", "此模型限流": "Rate-limited for this model", "每轮重新选路,不保留跨请求的账号绑定。": "Route each turn independently without retaining account bindings across requests.", "没有保存其他候选信息": "No other candidate information was saved", "没有保存调用明细": "No call details saved", "没有其他候选账号": "No other candidate accounts", "没有匹配的会话": "No matching sessions", "没有匹配的候选": "No matching candidates", "没有匹配的提供商或账号": "No matching providers or accounts", "没有匹配的记录": "No matching records", "没有匹配的请求": "No matching requests", "没有匹配的路由配置": "No matching route configurations", "没有参与路由的账号": "No accounts participating in routing", "没有可添加的模型": "No models available to add", "没有可用提供商,请先添加账号或安装插件。": "No providers are available. Add an account or install a plugin first.", "没有可用模型": "No models available", "没有可用账号": "No accounts available", "没有可选的对话模型,请先启用模型和对应账号。": "No chat models are available. Enable a model and its account first.", "没有独立配置的模型沿用全局路由。": "Models without independent configurations use the global route.", "没有请求也能配置路由": "Configure routing without requests", "没有跳过": "Nothing skipped", "没有需要恢复的提供商": "No providers need restoring", "沿用工具服务的视觉模型": "Use the tool service vision model", "流动:有请求在途": "Moving: requests in flight", "消耗规则": "Consumption rules", "消耗规则已保存,但路由列表刷新失败:{error}": "Consumption rules were saved, but the routing list could not be refreshed: {error}", "添加到全局路由,新请求将按这里的顺序选择账号。": "Add to the global route. New requests select accounts in the order configured here.", "添加到固定参与名单;以后新增的提供商仍需手动加入。": "Add to the fixed participation list. Future providers must still be added manually.", "添加参与模型": "Add participating models", "添加规则": "Add rule", "添加路由提供商": "Add routing provider", "清空选择": "Clear selection", "清除会话粘滞": "Clear session bindings", "灰线:历史流量": "Gray: historical traffic", "点击查看这次尝试的结果与原因": "Click to view this attempt result and reason", "点击节点查看请求,点击齿轮编辑路由配置。": "Click a node to view requests; click the gear to edit routing.", "点击节点筛选,点击齿轮进入配置": "Click a node to filter, the gear to configure", "点击节点,切换到对应请求详情": "Click a node to switch to its request details", "点客户端看它用过的模型": "Click a client to see its models", "点模型看它的请求": "Click a model to see its requests", "点节点筛选,再点一次取消;点齿轮进入配置": "Click a node to filter, click it again to clear; the gear opens config", "熔断保护": "Circuit breaker", "特殊请求路由": "Special request routing", "特殊请求路由 · 只改写模型,不改选账号规则": "Special request routing · rewrites the model only, account rules stay unchanged", "独立": "Own", "独立账号顺序": "Independent account order", "独立路由": "Independent route", "独立路由的账号顺序不受全局消耗规则影响": "The account order in an independent route is not affected by global consumption rules", "独立配置": "Independent configuration", "画布位置不改变选路优先级": "Canvas position does not change routing priority", "真实请求还会考虑当时的会话绑定、并发与限额状态。": "Real requests also consider current session bindings, concurrency and quota.", "确定删除「{model}」的独立路由配置?删除后该模型将使用全局路由。不会删除模型、账号或请求记录。": "Delete the independent routing configuration for “{model}”? This model will then use the global route. No models, accounts, or request records will be deleted.", "确认转换": "Confirm conversion", "禁用全部账号": "Disable all accounts", "禁用当前列表账号": "Disable accounts in this list", "禁用账号": "Disable account", "积分到期:暂无数据": "Credit expiry: no data", "积分:{time}": "Credits: {time}", "移出": "removed", "移出本路由": "Remove from this route", "移除此模型的独立路由配置,之后重新继承全局路由。不会删除模型、账号或请求记录。": "Remove this model's independent routing configuration and inherit the global route again. No models, accounts, or request records will be deleted.", "移除路由提供商": "Remove routing provider", "窗口内无请求": "No requests in window", "第 {n} 位": "Position {n}", "第 {n} 次尝试 · {name}": "Attempt {n} · {name}", "第 {n} 顺位": "Priority {n}", "等待回放": "Awaiting replay", "等待首帧": "Waiting for first byte", "策略": "Strategy", "筛选模型": "Filter by model", "粘性命中": "Binding hits", "粘性:{mode}": "Stickiness: {mode}", "粘滞": "Sticky", "粘滞 {mode}": "Affinity {mode}", "粘滞命中": "Binding hit", "粘滞标记": "Binding markers", "组名": "Group name", "组名方便识别,对外模型 ID 给客户端使用。": "The group name is for identification; clients use the public model ID.", "经过 {n} 次切换后成功,最终承载:{account}": "Succeeded after {n} switches; final account: {account}", "绑定:{account}": "Bound to: {account}", "结束时间": "End time", "结果未记录": "Result not recorded", "统一路由设置": "Global routing settings", "统一路由设置已保存": "Global routing settings saved", "继承": "Inherit", "继承全局": "Inherit global", "继承全局配置": "Inherits global configuration", "继承全局:{value}": "Inherit global: {value}", "继承时不能改这里的值;切到独立配置后才会写入这个模型。": "Values can't change while inheriting; switching to own config writes them for this model.", "编辑全局默认": "Edit global defaults", "编辑范围": "Editing scope", "编辑规则": "Edit rule", "编辑路由组": "Edit route group", "缩小画布": "Zoom out", "网关继续尝试下一个账号": "Gateway proceeds to the next account", "耗时未记录": "Duration not recorded", "自动参与": "Automatic participation", "自动参与模式下将明确停用此提供商,之后新增账号也不会自动恢复;不会删除提供商或账号。": "This explicitly disables the provider in automatic mode. Adding accounts later will not re-enable it. No providers or accounts are deleted.", "自动参与(推荐)": "Automatic (recommended)", "自动消耗排序已启用,请先关闭规则再手动调整": "Automatic consumption sorting is enabled. Turn off the rules before reordering manually", "自动:空闲五分钟释放;会话内:空闲六小时释放;每轮或关闭:不保留跨请求绑定。": "Auto: release after five idle minutes. Session: release after six idle hours. Per-turn or Off: no binding across requests.", "自动:空闲五分钟释放;会话内:空闲六小时;每轮或关闭:不跨请求绑定。": "Auto: released after five idle minutes; Session: six idle hours; Per turn or Off: no cross-request binding.", "自定义路由组": "Custom route groups", "草稿预演": "Draft preview", "被跳过": "Skipped", "被跳过的账号": "Skipped accounts", "规则": "Rules", "规则全局生效,不受原路由池限制;指定模型按自己的路由选账号,网关 Key 权限仍然生效。": "Rules apply globally, without being limited to the original routing pool. Selected models use their own routing to choose accounts; gateway key permissions still apply.", "规则最多 {n} 条。": "Up to {n} rules.", "视频输入": "Video input", "解除": "Release", "解除全局路由的参与范围限制,继续使用与账号页共用的手动顺序和自动消耗规则;模型独立配置保持不变。": "Remove global routing participation restrictions while keeping the manual order and automatic consumption rules shared with Accounts. Independent model configurations remain unchanged.", "解除全部粘滞": "Release all bindings", "解除只清除网关的账号绑定,不删除聊天历史、不关闭粘性设置。后续成功请求仍可建立新的绑定;重启网关会清空这些进程本地记录。": "Releasing clears only the gateway's account binding, not chat history or the stickiness setting. Later successful requests can create new bindings. Restarting the gateway clears these process-local records.", "解除当前模型全部粘滞": "Release this model's bindings", "解除所有模型的全部会话粘滞。不会终止在途请求,之后的请求会重新选路。": "Release all session bindings for all models. In-flight requests are not terminated; later requests are routed again.", "解除这个模型的全部会话粘滞。不会终止在途请求,之后的请求会重新选路。": "Release all session bindings for this model. In-flight requests are not terminated; later requests are routed again.", "解除这条会话": "Release this session", "触发客户端": "Triggering client", "计算中…": "Calculating…", "记录所有经过网关的请求,不要求绑定客户端。": "Records all requests through the gateway, without requiring client bindings.", "记录时间": "Captured at", "设置参与范围": "Configure participation", "识别客户端": "Recognised clients", "该提供商在当前视图中已停用": "This provider is disabled in this view", "该提供商没有账号,请先到账号页添加。": "This provider has no accounts. Add one on the Accounts page first.", "请填写组名和对外模型 ID": "Enter a group name and public model ID", "请检查熔断参数:失败阈值 1~20,时长 10~600 秒,恢复阈值 1~10。": "Check the circuit breaker parameters: failure threshold 1–20, duration 10–600 seconds, recovery threshold 1–10.", "请求": "Requests", "请求 ID 未记录": "Request ID not recorded", "请求仍在处理中,当前阶段:{phase}": "Request is still in progress; current phase: {phase}", "请求仍在进行": "Request still running", "请求会去哪里": "Where will the request go?", "请求回放": "Request replay", "请求在途": "Request in flight", "请求完成不代表会话关闭;粘滞有效期不是在线状态。": "Request completion does not mean the session is closed. Binding expiry is not an online status.", "请求已取消": "Request cancelled", "请求当时的配置": "Configuration at request time", "请求成功完成,未发生账号切换": "Request completed successfully without an account switch", "请求成功完成,未记录承载账号": "The request succeeded, but the serving account was not recorded", "请求执行": "Request execution", "请求执行回放": "Request execution replay", "请求日志 →": "Request log →", "请求未成功完成": "Request did not complete successfully", "请求模型": "Request model", "请求活动范围": "Request activity range", "请求状态": "Request status", "请求结论": "Request outcome", "请求范围": "Request range", "请求记录数据库不可用": "Request database unavailable", "请求跟踪": "Request tracing", "请求跟踪内容": "Request tracing content", "请求进入": "Request received", "请求进入网关": "Request reaches gateway", "请求需要": "Request requirements", "请选择模型": "Select a model", "读取中…": "Loading…", "谁参与及先后顺序": "Participation and priority", "调整全局消耗规则": "Edit global consumption rules", "调整到期时间、可用余额及其他消耗规则的优先级": "Adjust the priority of expiry, available balance and other consumption rules", "调整后续请求的配置": "Configure subsequent requests", "调整模型顺序": "Reorder models", "调整积分到期远近及其他消耗规则": "Adjust credit expiry order and other consumption rules", "调用示例": "Request example", "账号 {name} 已{state}": "Account {name} {state}", "账号全部禁用": "All accounts disabled", "账号启停与账号页同步,立即影响所有路由;策略与排序需保存。": "Account status stays in sync with Accounts and applies immediately to all routes. Save policy and order changes separately.", "账号启停与默认规则": "Account status and default rules", "账号启停操作": "Account enable/disable actions", "账号启停立即生效;路由配置保存后生效": "Account status applies immediately; routing settings apply after saving", "账号启停部分完成:成功 {ok} 个,失败 {fail} 个,跳过 {skip} 个。{details}": "Account status partially updated: {ok} succeeded, {fail} failed, {skip} skipped. {details}", "账号尝试": "Account attempts", "账号已禁用": "Account disabled", "账号已移除": "Account removed", "账号操作": "Account actions", "账号未记录": "Account not recorded", "账号组": "Account groups", "账号组操作": "Account group actions", "账号设置与全局保护另行保存,不属于本页路由草稿。": "Account settings and global protection are saved separately, outside this routing draft.", "账号设置与所有路由共用,不改变当前路由的参与名单。": "Account settings apply across all routes without changing this route's participation list.", "账号路由设置": "Account routing settings", "起点是请求本身,不依赖客户端绑定。": "The request itself is the starting point; no client binding is required.", "跟随列表中的最新请求": "Following the latest request in the list", "跨模型组合": "Mixed-model group", "路径": "Path", "路径过多,画布仅展示前 300 条;统计覆盖完整窗口,请筛选模型缩小范围。": "Too many paths. The canvas shows the first 300; totals cover the full window. Filter by model to narrow the view.", "路由入口": "Route entries", "路由参与操作": "Route participation actions", "路由工作台": "Routing workbench", "路由工作台不可用": "Routing workspace unavailable", "路由快照未记录": "Routing snapshot not recorded", "路由成员操作": "Route member actions", "路由接口不可用,请确认网关与界面已更新": "Routing API unavailable. Ensure both the gateway and interface are updated.", "路由接口返回了不完整的数据": "The routing API returned incomplete data", "路由数据正在更新,请稍后重试": "Routing data is being updated. Please try again shortly.", "路由模式": "Routing mode", "路由画布": "Routing canvas", "路由策略改为{value}": "Routing policy set to {value}", "路由类型": "Route type", "路由组": "Route group", "路由组已删除": "Route group deleted", "路由视图": "Routing view", "路由设置": "Routing settings", "路由配置": "Routing configuration", "路由配置列表": "Route configuration list", "路由配置尚未读取": "Routing configuration not loaded yet", "路由配置已保存": "Routing configuration saved", "路由配置已保存,仅影响后续选路": "Routing configuration saved; applies to subsequent routing only", "路由配置操作": "Route configuration actions", "路由配置版本不可用,请更新网关后重试": "Configuration version unavailable. Update the gateway and try again.", "跳过候选": "Skipped candidates", "转发前就失败、或旧记录未落库时,只能看到请求本身与配置快照。": "If it failed before forwarding, or the old record wasn't stored, only the request and config snapshot are shown.", "转发失败的账号暂时休息,避免连续请求反复撞到同一故障。": "Accounts that fail to forward rest temporarily, avoiding repeated requests to the same failing account.", "转换只处理当前账号;之后新增账号按账号页的启用状态使用。不会启用任何已禁用的账号。": "Conversion only affects existing accounts. New accounts follow their status on the Accounts page. No disabled account will be enabled.", "转换旧版全局参与设置": "Convert legacy global participation settings", "转换旧版设置": "Convert legacy settings", "转换结果未确认,请重新读取全局配置": "Conversion could not be confirmed. Reload the global configuration.", "输出 {n} tokens": "{n} output tokens", "过程提示": "Process notes", "运行视图": "Live view", "近期 {n} 次请求": "{n} recent requests", "返回全部流向": "Back to all traffic", "返回列表": "Back to list", "返回实时": "Back to live", "返回画布": "Back to canvas", "还有 {n} 处": "{n} more", "还没有参与模型": "No participating models yet", "还没有参与路由的提供商": "No providers participating in routing yet", "还没有可用模型,先在账号页添加账号": "No models available yet. Add an account on the Accounts page first.", "还没有可用的模型,请先启用模型和对应账号。": "No models available yet; enable models and their accounts first.", "还没有规则。压缩请求会按原模型照常转发。": "No rules yet. Compaction requests are forwarded with the original model.", "还没有规则。图片会照常交给原模型,看不了的就会报错。": "No rules yet. Images go to the original model as usual; models that cannot read them will fail.", "还没有规则。标题请求会照常交给原模型。": "No rules yet. Title requests go to the original model as usual.", "还没有账号,先在账号页添加;有账号的提供商才会出现在这里": "No accounts yet. Add one on the Accounts page; only providers with accounts appear here.", "还没选压缩模型": "No compaction model selected", "还没选原模型": "No source model selected", "还没选标题模型": "No title model selected", "还没选视觉模型": "No vision model selected", "这一页改的只作用于当前范围": "Changes here only affect this scope", "这个范围内最近的请求。点一条看它当时是怎么选的账号。": "Recent requests in this scope. Open one to see how its account was chosen.", "这个范围怎么选账号": "How this scope picks accounts", "这些设置由所有模型共用;提供商与账号的参与范围和顺序在各自视图中独立配置。": "These settings are shared by all models. Provider and account participation and order are configured independently in each view.", "这份记录来自实际请求,不使用当前账号队列重新推演。": "This record comes from an actual request, not a simulation using the current account queue.", "这是请求当时保存的选路快照,修改当前路由不会改变这份记录。": "This snapshot was saved when the request was routed. Changing the current route does not change this record.", "这条会话已解除或过期,不再有活跃绑定。": "This session has been released or expired and no longer has an active binding.", "这条规则只改写被识别为标题生成的小请求,普通对话不受影响。": "This rule only rewrites small requests recognised as title generation; normal conversations are unaffected.", "这条规则里的模型收到图片时按选定的方式处理;没被任何规则选中的模型一律原样放行。": "Requests for the models in this rule are handled the chosen way when they contain images; models not selected by any rule pass through unchanged.", "这条请求使用的路由组已删除,当时的快照仍可查看": "The route group used by this request has been deleted; its saved snapshot is still available", "这条请求对应的会话当前仍绑定到「{account}」。": "The session for this request is currently bound to “{account}”.", "这条请求没有保存上游尝试明细": "No upstream attempt details were saved for this request", "这条请求没有保存路由决策": "No routing decision was saved for this request", "这条请求没有保存路由快照,仍可查看已有的请求和尝试信息。": "No routing snapshot was saved for this request. Existing request and attempt information is still available.", "这次尝试的结果": "Result of this attempt", "这里只决定是否参与本路由,不改变账号启用状态。": "This only controls route participation, not whether the account is enabled.", "这里的参与范围只影响当前视图;账号启停、并发和限制器属于账号本身,所有模型共用。": "Participation here affects only this view. Account enablement, concurrency, and limiters belong to the account and are shared by all models.", "这里的顺序决定实际选路;画布只为查看请求调整位置。": "This order controls actual routing; the canvas rearranges nodes only to make requests easier to view.", "这里调整的是账号组的全局消耗规则;当前独立路由的账号顺序保持不变。": "These are the account group's global consumption rules. The current independent route's account order stays unchanged.", "连线表示参与本路由": "Lines indicate participation in this route", "连线表示账号组中有已启用账号": "Lines indicate account groups with enabled accounts", "连续失败达到阈值时暂时让位,恢复后再重新参与。": "Temporarily step aside after consecutive failures reach the threshold and participate again after recovery.", "退避 {time}": "Backoff {time}", "选中": "Selected", "选中流量详情": "Selected traffic details", "选中路径": "Selected path", "选择一个或多个客户端": "Select one or more clients", "选择一条请求查看执行过程": "Select a request to view its execution", "选择一条请求查看选路过程": "Select a request to view its routing process", "选择作用范围后配置路由": "Select a scope to configure routing", "选择左侧请求查看选路过程": "Select a request on the left to view its routing.", "选择模型": "Select a model", "选择请求模型后查看具体限流状态": "Select a request model to see its rate-limit state", "选择账号": "Select accounts", "选择路由入口": "Select a route entry", "选择预览模型后查看队列": "Select a preview model to view the queue", "选路原因未记录": "Routing reason not recorded", "选路情况": "Routing decisions", "选路方式": "Routing strategy", "选路预演": "Routing preview", "逐步回放": "Step-by-step replay", "配置作用范围": "Configuration scope", "配置第 {rank} 顺位;当前可用候选第 {effective} 顺位。": "Configured priority {rank}; current available-candidate priority {effective}.", "配置范围": "Configuration scope", "配置该模型": "Configure this model", "配置请求的参与范围与优先顺序": "Configure routing participation and priority", "配置项": "Setting", "配置顺位 {n}": "Configured priority {n}", "重新读取": "Reload", "重新读取会丢弃当前范围的未保存草稿,其他范围的草稿保留。": "Reloading discards the unsaved draft for this scope. Drafts in other scopes are kept.", "重新读取配置": "Reload configuration", "队列为无会话预演;实际粘性命中和重试顺延以回放为准。": "The queue is a session-free preview. Refer to replays for actual binding hits and retry fallback.", "队首": "Queue head", "阶段 {phase} · 已进行 {time}": "Phase {phase} · {time} elapsed", "限制器跳过": "Skipped by limiter", "隐藏无账号 ({n})": "Hide without accounts ({n})", "静止蓝线:选中历史路径": "Still blue: selected historical path", "顺位": "Rank", "顺序修改即时保存,仅作用于当前视图。": "Order changes are saved immediately and affect only this view.", "顺序调整不会解除限流;有效粘滞优先于普通账号顺序。": "Reordering does not clear rate limits. A valid binding takes precedence over normal account order.", "预演首选": "Preview primary choice", "预览模型": "Preview model", "首帧": "First response", "首帧 {time}": "First byte {time}", "首帧耗时": "Time to first frame", "首帧:{time}": "First frame: {time}", "首选账号": "Primary account", "默认自动参与;新增可用提供商无需再添加路由,明确停用项保持不变。": "Participation is automatic by default. New available providers need no extra routing setup; explicitly disabled providers remain disabled.", "默认规则": "Default rules", "默认路由": "Default route", "Agent 配置": "Agent Configuration", "Claude Code 按 Opus / Sonnet / Haiku / 子 Agent 分档请求模型;这里把每档指向网关目录里的模型,留空表示不改写该档。": "Claude Code requests models per tier (Opus / Sonnet / Haiku / subagent). Point each tier at a model from the gateway catalog; leave a tier blank to leave that field untouched.", "Claude Code 支持多模型菜单和逐模型思考等级;上下文及输入能力由客户端识别,不把自动压缩阈值冒充上下文窗口。": "Claude Code supports a multi-model menu and per-model reasoning effort. Context and input capabilities are recognized by the client; the auto-compaction threshold is not treated as the context window.", "Claude Code 的 Opus / Sonnet / Haiku / 子 Agent 四档默认都指向上面选的模型;要让某一档用别的模型,在这里单独改。": "All four Claude Code tiers (Opus / Sonnet / Haiku / subagent) point at the model chosen above by default. To give one tier a different model, change it here.", "Codex 的模型目录支持逐模型上下文、图片和思考档位,不提供可写的逐模型输出上限。": "The Codex model catalog supports per-model context windows, image input, and reasoning levels, but has no writable per-model output limit.", "Crush 需要明确填写输出上限、图片与思考能力": "Crush requires explicit output limits, image support, and reasoning support", "DSH 配置目标": "DSH configuration target", "Kimi Code 只能追加能力声明,不能关闭内置识别的能力。输出上限仅新版 Anthropic 协议生效;旧版不写入思考档位。": "Kimi Code can add capability declarations but cannot disable built-in capabilities. Output limits apply only to the Anthropic protocol in newer versions; reasoning levels are not written for legacy versions.", "MCP 服务名称": "MCP server name", "Skill 目录名": "Skill folder name", "Token 上限必须是 1 到 1 亿之间的整数": "Token limits must be integers between 1 and 100 million", "Zed 的 API Key 仍需在客户端提供商设置中填写;本页不修改系统凭证。": "Enter the API key in Zed provider settings. This page does not modify system credentials.", "{id}(不在网关目录)": "{id} (not in gateway catalog)", "· 走网关": "· via gateway", "一键把本机 AI 客户端接到本地网关:改写它自己的配置文件,保留其它设置": "Point local AI clients at the local gateway: rewrite their config files and leave every other setting alone", "一键接入": "Quick connect", "一键设置": "Fill all", "上下文": "Context", "上次应用未完整结束,请先查看恢复预览。": "The last apply operation did not finish. Review the restore preview first.", "上游模型 id,例如 raccoon-coder-pro": "Upstream model id, e.g. raccoon-coder-pro", "下面是这个客户端文件里现有的配置(只读)。点「从客户端导入」把它收进我的配置,之后就能编辑和切换。": "These are the profiles already in this client's config file (read-only). Click \"Import from client\" to copy them into my profiles — then they can be edited and switched.", "不写入": "Not set", "不要添加 /v1/messages;客户端会自行追加请求路径。": "Do not append /v1/messages; the client adds the request path.", "与客户端一致": "Matches client", "个 · 已安装": " · installed", "中转": "Relay", "仅修改所选 MCP 条目,保留其它配置和注释;保存不会启动服务。": "Only the selected MCP entry is changed; other settings and comments are preserved. Saving does not start the server.", "仅可读取": "Read-only", "从客户端导入": "Import from client", "从网关目录选择": "Select from gateway catalog", "从网关目录选择模型": "Select a model from the gateway catalog", "会用最近一次备份覆盖它的配置文件。这一步不会改动你在本页存的配置列表。": "Overwrites its config file with the most recent backup. The profile list on this page is untouched.", "低": "Low", "使用中": "In use", "使用此配置": "Use this configuration", "使用此配置时设为默认,其他模型仍可在客户端选择。": "This becomes the default model when you use this configuration. Other models remain available in the client.", "使用真实模型 ID,不要填写模型展示名。": "Use the actual model ID, not its display name.", "使用网关 Key": "Use gateway key", "保存会直接修改客户端配置;确认前展示差异,写入前自动备份。": "Saving updates the client configuration directly. Changes are shown before confirmation, and a backup is made before writing.", "保存修改": "Save changes", "保存只记录方案,不修改客户端。应用时会另外展示文件差异并请求确认。": "Saving only stores the profile. Applying shows file changes and asks for confirmation separately.", "保存后可在配置列表中切换,不影响当前使用的配置。": "Once saved, switch to it from the configuration list. The current configuration remains unchanged.", "保存后同步更新客户端;写入前可查看改动,并自动备份。": "Saving also updates the client. Review the changes before writing; a backup is created automatically.", "保存方案": "Save profile", "保存方案不会切换客户端;应用后改变实际默认模型。": "Saving does not switch the client; applying changes its actual default model.", "保存方案不会切换客户端;选择“应用并设为默认”才改变实际默认模型。": "Saving does not switch the client. Choose “Apply and set as default” to change its actual default model.", "保存时自动写入完整的 /chat/completions 路径。": "The complete /chat/completions path is written automatically.", "保存路径": "Save path", "保留导入的认证": "Keep imported authentication", "保留现有认证": "Keep existing authentication", "修改后点击「使用此配置」才会更新客户端。": "After editing, select Use this configuration to update the client.", "停用后将从客户端可选项中关闭此配置,其他配置不受影响。": "This configuration will be disabled in the client's available options. Other configurations are unaffected.", "停用配置": "Disable configuration", "全选搜索结果": "Select all search results", "全部配置(全局覆盖)": "All profiles (global override)", "共": "Total", "关闭后丢弃本次修改,不会保存配置或改动客户端。": "Closing discards these changes without saving the configuration or changing the client.", "关闭后丢弃本次草稿,不会保存空方案,也不会修改客户端。": "Closing discards this draft. No empty profile is saved and the client is not modified.", "内容已经一致,无需写入": "The content already matches; no write is needed", "写入中…": "Writing…", "写入后需要重开会话才生效": "Restart the session after writing for it to take effect", "写入失败:{reason}": "Write failed: {reason}", "写入客户端": "Write to client", "写入文件": "Configuration file", "写入预览": "Write preview", "删除 MCP": "Delete MCP", "删除 Skill": "Delete Skill", "删除只移除 SKILL.md,辅助文件保留在原目录;不会执行其中的脚本。": "Deleting removes only SKILL.md. Supporting files remain in the original folder; no scripts are executed.", "删除客户端配置": "Delete client configuration", "删除已保存方案?": "Delete saved profile?", "删除新建文件": "Remove newly created file", "删除方案": "Delete profile", "删除配置": "Delete configuration", "删除配置?": "Delete configuration?", "动态表达式、独立作用域或全局覆盖的 MCP 为只读,请在 DSH 中编辑。": "MCP entries with dynamic expressions, isolated scopes, or global overrides are read-only. Edit them in DSH.", "单配置": "Single profile", "另一项配置操作尚未完成": "Another configuration operation is still running", "只保存变量引用,不修改系统环境;请在启动客户端的环境里设置变量值。": "Only the variable reference is saved. Set its value in the environment used to launch the client; the system environment is not modified.", "只删除 Agent2API 中的方案,不修改客户端当前配置。": "Only the profile in Agent2API is deleted. The client's current configuration is untouched.", "只改 enabled 与默认项,其余条目原样保留": "Only the enabled and default flags change; every other entry is kept as-is", "只改属于我们的那几个键,其它设置原样保留": "Only the keys we own change; every other setting is kept as-is", "可先新增配置,安装后再使用": "You can add configurations now and use them after installation", "可同时启用多条;切换只改 enabled 与默认项": "Several entries can be enabled at once; switching only changes the enabled and default flags", "可搜索并多选模型;上下文、输出上限和能力分别从网关目录自动填入。": "Search and select multiple models. Each model’s context window, output limit, and capabilities are filled from the gateway catalog.", "可选模型": "Available models", "同一时刻只有一套生效;写入 = 把这一套整段写进客户端文件": "Only one profile is active at a time; writing copies that profile into the client config file", "启用 {name}": "Enable {name}", "启用此配置": "Enable this configuration", "启用配置": "Enable configuration", "图形化管理客户端原生配置;保存方案与应用配置分开。": "Manage native client configuration visually; saving profiles and applying configuration are separate actions.", "图片输入": "Image input", "在客户端管理认证": "Manage authentication in client", "填写服务根地址,不要附加 /v1beta 或 generateContent 路径。": "Enter the service root URL. Do not append /v1beta or a generateContent path.", "处理中…": "Processing…", "备注": "Note", "多套配置": "Multiple profiles", "多配置 · 已启用 {n}": "Multi-profile · {n} enabled", "子 Agent": "Subagent", "安装或初始化后可重新检测;自定义安装位置可指定配置路径。": "Recheck after installation or initialization. For custom locations, specify the configuration path.", "完整配置文件路径": "Full configuration file path", "官方直连": "Official direct", "客户端列表加载失败:{reason}": "Failed to load the client list: {reason}", "客户端列表响应无效": "Invalid client list response", "客户端协议": "Client protocol", "客户端原生 MCP 配置(JSON)": "Native client MCP configuration (JSON)", "客户端原生配置": "Native client configuration", "客户端官方配置说明": "Official client configuration guide", "客户端实际配置": "Actual client configuration", "客户端必须实际使用同一个配置文件;本页不改变客户端启动参数。": "The client must use the same configuration file. This page does not change its launch arguments.", "客户端文件已有外部修改,自动恢复会拒绝覆盖。": "The client file has external changes. Automatic restore will refuse to overwrite them.", "客户端条目启用状态": "Client entry enabled state", "客户端清单": "Clients", "客户端管理分类": "Client management category", "客户端自己的设置优先;这里写的是写入时带进去的初值": "The client's own settings win; this is only the initial value written in", "客户端资源已保存并校验": "Client resources saved and verified", "客户端选项": "Client options", "客户端配置写入后未通过校验": "Client configuration failed verification after writing", "客户端配置已经一致,无需写入": "Client configuration already matches; no write is needed", "客户端默认地址": "Client default endpoint", "密钥在 Agent2API 中加密保存;使用时按客户端要求写入。": "Keys are stored encrypted in Agent2API and written in the format required by the client when used.", "密钥已隐藏;绿色为新增,红色为删除。所有实际写入文件都列在这里。": "Keys are hidden. Green indicates additions and red indicates removals. All files to be written are listed here.", "导入模型及客户端未知字段会保留;本页删除方案不会删除客户端条目。": "Imported models and unrecognized client fields are preserved. Deleting a profile here does not delete client entries.", "将删除此配置及客户端中的对应条目,其他配置不受影响。": "This configuration and its matching client entry will be deleted. Other configurations are unaffected.", "尚未初始化": "Not initialized", "尚未支持这个客户端的资源管理": "Resource management is not yet supported for this client", "展开可调整能力;— 表示客户端未声明": "Expand to adjust capabilities; — means the client did not declare it", "已保存": "Saved", "已保存方案": "Saved profiles", "已保存,未应用": "Saved, not applied", "已写入 {name}": "Written to {name}", "已写入 {name};这个客户端只在启动时读配置,重开一个会话才生效": "Written to {name}; this client reads its config at startup, so reopen a session for it to take effect", "已删除保存方案,客户端配置未改动": "Saved profile deleted; client configuration is unchanged", "已安装": "Installed", "已导入 {n} 套方案": "Imported {n} profiles", "已按备份还原 {name}": "Restored {name} from backup", "已收进我的配置:{n} 条": "Imported into my profiles: {n}", "已检测到": "Detected", "已选择": "Selected", "已选模型": "Selected models", "已配置": "Configured", "已预填网关地址、协议、Key 与模型;确认后直接写入客户端,不需要先保存方案。": "Gateway URL, protocol, key, and model are prefilled. Confirm to write directly to the client without saving a profile first.", "应用": "Apply", "应用中…": "Applying…", "应用到客户端": "Apply to client", "应用并设为默认": "Apply and set as default", "应用时使用当前启用的真实 Key;预览会隐藏密钥。": "Applying uses a currently enabled real key; previews hide the secret.", "当前环境不支持保存": "Saving is unavailable in this environment", "当前环境不支持保存(桥接方法缺失)": "Saving is unavailable here (bridge method missing)", "当前环境不支持写入(桥接方法缺失)": "Writing is unavailable here (bridge method missing)", "当前环境不支持客户端接管(桥接方法缺失)": "Client takeover is unavailable here (bridge method missing)", "当前环境不支持客户端配置": "Client configuration is unavailable in this environment", "当前环境不支持导入": "Importing is unavailable in this environment", "当前环境不支持导入(桥接方法缺失)": "Importing is unavailable here (bridge method missing)", "当前环境不支持应用": "Applying is unavailable in this environment", "当前环境不支持恢复": "Restoring is unavailable in this environment", "当前环境不支持还原(桥接方法缺失)": "Restoring is unavailable here (bridge method missing)", "当前环境不支持预览": "Preview is unavailable in this environment", "当前环境无法读取网关模型目录": "The gateway model catalog cannot be read in this environment", "当前网关未启用 API Key 鉴权;占位值只用于客户端要求非空密钥的场景。": "API key authentication is not enabled on this gateway. A placeholder is used only when a client requires a non-empty key.", "当前默认": "Current default", "思考能力": "Reasoning support", "恢复作用在网关所在机器;密钥已隐藏,不会覆盖应用后的外部修改。": "Restore acts on the gateway host. Keys are hidden and external changes made after applying will not be overwritten.", "恢复自动检测": "Restore automatic detection", "所有操作作用在网关所在机器。": "All operations act on the gateway host.", "所选 Key 下没有可用的对话模型,请先启用模型或手动填写。": "No chat models are available for this key. Enable a model or enter one manually.", "所选 Key 下没有可用的对话模型,请先启用模型或更换 Key。": "No chat models are available for this key. Enable a model or choose another key.", "所选 Key 无权使用当前模型,请重新选择": "This key cannot use the current model. Select another key or model.", "手动添加模型": "Add model manually", "手机端可查看客户端实际配置并撤销上次应用;编辑方案请使用桌面端。": "On mobile, view client configuration and undo the last application. Use the desktop interface to edit profiles.", "手机端可查看模型配置、撤销上次应用,并管理提示词、Skill 与 MCP。": "On mobile, view model settings, undo the last application, and manage prompts, Skills and MCP.", "指定配置路径": "Specify configuration path", "按备份还原": "Restore from backup", "按备份还原 {name}?": "Restore {name} from backup?", "换 Key 后会按新 Key 的授权重新核对已选模型": "Switching keys re-checks the selected models against the new key's permissions.", "接入后使用此默认模型,其它已选模型仍可在客户端切换。": "This model becomes the default. Other selected models remain available in the client.", "接入客户端": "Connect client", "接入本网关": "Connected to this gateway", "接入状态来自客户端配置文件。恢复前显示差异;文件被其他程序修改时拒绝覆盖。": "Connection status comes from the client configuration file. Restore shows changes first and refuses to overwrite files modified by other programs.", "接入端点": "Endpoint", "接口基址": "API base URL", "搜索客户端": "Search clients", "搜索客户端 / 配置文件…": "Search clients or config files…", "搜索已选模型": "Search selected models", "搜索模型 ID / 展示名…": "Search model ID or display name…", "撤销上次应用": "Undo last application", "操作目标:网关所在机器": "Target: gateway host", "收起更多配置": "Hide additional settings", "收起模型选择": "Hide model picker", "改写网关所在机器上的客户端配置": "Manage client configuration on the gateway host", "改动": "Changed", "放弃修改": "Discard changes", "放弃未保存的修改?": "Discard unsaved changes?", "新增": "Added", "新增 MCP": "Add MCP", "新增配置": "Add configuration", "新建 Skill": "New Skill", "新建文件": "New file", "新建方案或导入当前配置;保存后再决定是否应用。": "Create a profile or import the current configuration. Decide whether to apply it after saving.", "新建配置": "New profile", "新建配置方案": "New configuration profile", "新版网页版和桌面版分别保存模型配置;旧版模型设置共享,MCP 始终只写入所选运行方式。": "Newer web and desktop apps store model settings separately. Legacy model settings are shared; MCP is always written only to the selected profile.", "新配置": "New profile", "方案中的密钥加密保存;客户端原生配置可能要求明文。": "Profile keys are stored encrypted. Native client configuration may require plaintext.", "方案名称": "Profile name", "方案已保存,尚未应用到客户端": "Profile saved, not yet applied to the client", "无改动": "No changes", "无配置": "No profile", "无需认证": "No authentication", "旧版共享设置": "Legacy shared settings", "暂无预览": "No preview yet", "更多配置": "Additional settings", "最多选择 {n} 个模型": "Select up to {n} models", "最近检测:{time}": "Last checked: {time}", "有改动": "Changed", "未声明 / 保留": "Unspecified / keep", "未安装": "Not installed", "未找到客户端程序或配置文件": "No client program or configuration file found", "未接入本网关": "Not connected to this gateway", "未接管": "Not connected", "未检测到": "Not detected", "未检测到安装": "No installation detected", "未读取到可识别的客户端配置": "No recognized client configuration found", "未走网关": "Not via gateway", "本机": "This device", "本机服务": "Local service", "本机没有找到 {name}": "{name} was not found on this machine", "本机网关": "Local gateway", "本网关": "This gateway", "来自客户端文件,只读": "From the client config, read-only", "查看文件改动": "View file changes", "桌面版": "Desktop app", "模型 ID": "Model ID", "模型 ID 不能为空或重复": "Model IDs cannot be empty or duplicated", "模型 id": "Model id", "模型 {n}": "Model {n}", "模型展示名": "Model display name", "模型思考等级": "Model reasoning effort", "模型或客户端不支持所选思考等级": "The model or client does not support the selected reasoning level", "模型未声明思考档位,保留客户端默认,不显示猜测选项。": "The model does not declare reasoning levels. Client defaults are preserved; guessed options are not shown.", "模型目录响应无效": "Invalid model catalog response", "模型目录读取失败,可手动填写真实模型 ID。": "Failed to read the model catalog. You can enter the actual model ID manually.", "模型配置": "Model settings", "模型默认": "Model default", "正在检测客户端…": "Detecting clients…", "正在生成准确预览…": "Generating exact preview…", "正在生成预览…": "Generating preview…", "正在读取本机客户端…": "Reading local clients…", "正在读取网关模型并填入配置…": "Loading gateway models and filling the configuration…", "此处来自磁盘文件,不代表正在运行的旧会话已经重载。": "This is read from disk. It does not mean an existing session has reloaded the configuration.", "此配置未在客户端中使用,删除不会改变当前使用的配置。": "This configuration is not in use in the client. Deleting it will not change the current configuration.", "每个客户端可以有": "Each client can have", "每个模型独立保存能力;展开可调整,未声明的数据不会猜测填写。": "Capabilities are stored per model. Expand to adjust them; unspecified values are not guessed.", "没有匹配的客户端": "No matching clients", "没有可导入的新条目(可能还没配过,或已经在我的配置里)": "No new entries to import (not configured yet, or already in my profiles)", "没有新的条目可收(都已在我的配置里)": "No new entries to import (all are already in my profiles)", "没有新的配置可以导入": "No new configuration to import", "没有检测到可接管的客户端": "No manageable clients detected", "没有选中配置": "No configuration selected", "没有选中配置方案": "No configuration profile selected", "添加到客户端": "Add to client", "点击右上角「新增配置」,添加网关或其他服务": "Use Add configuration at the top right to add a gateway or another service", "点击模型展开详细配置;搜索只筛选显示,不会移除模型。": "Click a model to expand its settings. Search only filters the displayed list; it does not remove models.", "版本未识别": "Version not identified", "状态来自配置文件,已打开的会话可能需要重新加载": "Status comes from configuration files; existing sessions may need to reload", "环境变量名": "Environment variable name", "生成中…": "Generating…", "留空保留 / 未声明": "Blank: keep / unspecified", "留空保留已保存密钥": "Leave blank to keep the saved key", "留空的分档会以 Claude Code 内置模型名请求网关;网关没有同名模型时该档会失败,建议点「一键设置」。": "A blank tier makes Claude Code request the gateway with its built-in model name; that tier fails when the gateway has no model by that name. Use \"Fill all\" instead.", "留空表示不写入": "Leave blank to skip", "确认": "Confirm", "确认使用": "Confirm", "确认停用": "Confirm disable", "确认写入": "Confirm write", "确认写入后会同步修改客户端开关;取消不会生效。": "Confirming the write also updates the client entry's enabled state. Canceling leaves it unchanged.", "确认写入后更新客户端默认模型;取消不会生效。": "The client's default model is updated after you confirm the write. Canceling leaves it unchanged.", "确认写入客户端资源": "Confirm writing client resources", "确认删除": "Confirm deletion", "确认删除客户端资源": "Confirm deleting client resources", "确认后将切换到此配置,原配置会保留在列表中。": "Confirm to switch to this configuration. The previous configuration will remain in the list.", "确认后将更新 {name} 的配置文件,原配置会自动备份。": "Confirm to update the configuration files for {name}. The original files will be backed up automatically.", "确认后将此配置加入客户端,已有配置会保留。": "Confirm to add this configuration to the client. Existing configurations will be kept.", "确认应用": "Confirm application", "确认恢复": "Confirm restore", "确认接入": "Confirm connection", "移除模型会写入客户端配置;其它条目和未知字段保留,确认前可查看差异。": "Removing a model updates the client configuration. Other entries and unrecognized fields are preserved; review the changes before confirming.", "移除模型:{name}": "Remove model: {name}", "第一把启用的 Key": "First enabled key", "第三方中转": "Third-party relay", "编辑 MCP": "Edit MCP", "编辑 Skill": "Edit Skill", "编辑客户端配置": "Edit client configuration", "编辑配置": "Edit configuration", "编辑配置方案": "Edit configuration profile", "编辑:{name}": "Edit: {name}", "网关目录共 {n} 个": "{n} in the gateway catalog", "网页版": "Web app", "自定义路径": "Custom path", "行号由后端逐行比对给出": "Line numbers come from the backend line-by-line comparison", "装好后回到这一页点「重新检测」,它会出现在上面的列表里。": "Once installed, come back to this page and click \"Recheck\" — it will show up in the list above.", "视频输入": "Video input", "解除接入本网关": "Disconnect from this gateway", "认证方式": "Authentication method", "设为默认": "Set as default", "请先在「网关 Key」页创建并启用一把 Key": "Create and enable a key on the Gateway Key page first.", "请在 Zed 提供商设置中保存 API Key;本页不修改系统凭证存储。": "Save the API key in Zed's provider settings. This page does not modify the system credential store.", "请填写 API Key": "Enter an API key", "请填写方案名称": "Enter a profile name", "请填写有效的 http 或 https 地址": "Enter a valid HTTP or HTTPS URL", "请填写有效的环境变量名": "Enter a valid environment variable name", "请填写配置名称": "Enter a configuration name", "请至少添加一个模型": "Add at least one model", "请补全配置后使用": "Complete this configuration before using it", "请输入密钥": "Enter a key", "请选择": "Select an option", "请选择模型": "Select a model", "读取失败": "Read failed", "读取客户端配置失败:{reason}": "Failed to read the client config: {reason}", "走网关": "Via gateway", "路径属于网关所在机器,不是浏览器所在设备。只改变检测目标,不修改客户端文件。": "The path is on the gateway host, not the browser's device. Only the detection target changes; client files are not modified.", "输出上限": "Max output", "返回编辑": "Back to editing", "还原中…": "Restoring…", "还原失败:{reason}": "Restore failed: {reason}", "还没有配置": "No profiles yet", "还没有配置。点「新建配置」建一套指向本机网关的,再写入客户端。": "No profiles yet. Click \"New profile\" to create one pointing at the local gateway, then write it to the client.", "还没有预览。选一套配置后这里会显示写入客户端之后的样子。": "No preview yet. Pick a profile and this shows what the client config will look like after writing.", "这个客户端不从网关目录选模型,用右侧的「添加模型」逐个填写。": "This client does not select models from the gateway catalog; add them one by one on the right.", "这个客户端不支持所选协议": "This client does not support the selected protocol", "这个客户端不能接入本网关": "This client cannot connect to this gateway", "这个客户端会自己重读配置,写入后开新会话即生效。": "This client reloads its config on its own; open a new session after writing.", "这个客户端只在启动时读配置:写入后重开一个会话才生效。": "This client only reads its config at startup: reopen a session after writing.", "这个客户端的配置里没有读出地址(可能还没配过,或形状不认识)": "No address could be read from this client's config (it may not be configured yet, or the shape is unrecognized)", "这个客户端自己支持多套配置并存": "This client supports several profiles side by side", "这个客户端自己管理多套配置,可同时启用多条;切换只改 enabled 与默认项,不动它的模型清单。": "This client manages several profiles itself and can enable more than one; switching only changes the enabled and default flags, never its model list.", "这个客户端还没有 MCP": "This client has no MCP servers yet", "这个客户端还没有 Skill": "This client has no Skills yet", "这个客户端需要填写模型上下文窗口": "This client requires the model's context window", "这套配置是干什么用的(只显示在本页)": "What this profile is for (shown on this page only)", "这是待应用状态;保存不会立即改变客户端开关。": "This is the pending state. Saving does not immediately toggle the client entry.", "这里只调整此模型,不影响其它模型。": "Changes here affect only this model.", "这里只选择客户端实际支持的协议,不改变上游提供商协议。": "Only protocols actually supported by the client can be selected here. The upstream provider protocol is unchanged.", "连接方式": "Connection type", "连接配置": "Connection settings", "选一个客户端开始": "Pick a client to start", "选择 MCP": "Select MCP", "选择 Skill": "Select Skill", "选择模型": "Select models", "选择网关 Key": "Select a gateway key", "选择要接入的模型;确认前展示文件改动,写入前自动备份。": "Choose models to connect. File changes are shown before confirmation, and a backup is made before writing.", "选择配置目标": "Select configuration target", "通常以 /v1 结尾,不要附加具体请求路径。": "Usually ends with /v1. Do not append a specific request path.", "部分已选模型已不可用或所选 Key 无权使用,请移除或更换 Key。": "Some selected models are unavailable or not allowed by this key. Remove them or choose another key.", "配置": "Profile", "配置位置与说明": "Configuration location and details", "配置列表": "Configurations", "配置列表格式不匹配,请重启网关后刷新页面": "Configuration list format mismatch. Restart the gateway, then refresh this page.", "配置可读写": "Configuration readable and writable", "配置名称": "Configuration name", "配置差异": "Configuration diff", "配置已保存,可在列表中点击使用": "Configuration saved. Select it in the list to use it.", "配置已删除": "Configuration deleted", "配置已删除,客户端文件已同步更新": "Configuration deleted and client files updated", "配置已应用并读回校验;请重开客户端或会话": "Configuration applied and verified by reading it back. Restart the client or session.", "配置已恢复并校验": "Configuration restored and verified", "配置操作": "Configuration actions", "配置文件已写入并校验;尚未验证 DSH 是否加载,请在所选客户端新建会话确认。": "Configuration files were written and verified. DSH loading has not been verified; start a new session in the selected client to confirm.", "配置来源": "Profile source", "重新填入目录能力": "Refill from catalog", "重新检测": "Recheck", "重新生成预览": "Regenerate preview", "需要重新编辑:": "Needs editing again:", "需重开会话生效": "Restart the session to apply", "预览并保存": "Preview and save", "预览草稿改动": "Preview draft changes", "高": "High", "高级选项": "Advanced options", "默认模型": "Default model", "默认模型必须来自模型列表": "The default model must be in the model list", "默认模型思考等级": "Default model reasoning effort", "(本机网关 / 官方直连 / 第三方中转 / 本机服务),随时切换。单配置客户端切换 = 整段覆写并备份原文件;多配置客户端(如 ZCode)只改 enabled 与默认项,它自己的条目一律不动。": "(local gateway / official direct / third-party relay / local service) and switch between them at any time. For single-profile clients, switching rewrites the whole profile and backs up the original file; for multi-profile clients such as ZCode it only changes the enabled and default flags and never touches their own entries.", "API Key 无效或无权限": "The API Key is invalid or unauthorized", "API 接口文档": "API documentation", "DSH 使用 Agent 页当前选择的配置目标。写入后请在 DSH 中确认工具是否出现,必要时重启对应客户端。": "DSH uses the configuration target selected on the Agent page. After writing, check that the tools appear in DSH and restart the corresponding client if needed.", "Key 明文只会写入所选客户端的本机配置文件。": "The plaintext Key is only written into the local configuration files of the selected clients.", "MCP & Skills": "MCP & Skills", "MCP 接入信息": "MCP connection details", "Node.js 无需额外依赖,推荐使用;Python 需要本机有 python。": "Node.js needs no extra dependencies and is recommended; Python requires python on this machine.", "{name} 接入客户端": "Connect {name} to clients", "上游提供商": "Upstream provider", "上游提供商配置": "Upstream provider configuration", "上游提供商配置由各接入协议共享,改动后所有协议同时生效。": "Upstream provider settings are shared by all access protocols; changes take effect for all of them.", "上游没有返回结果": "The upstream returned no results", "上游请求超时": "The upstream request timed out", "下载图片 {index}": "Download image {index}", "不指定": "Not specified", "中文": "Chinese", "仅搜索": "Search only", "仅支持单选,默认为 Tavily。": "Single selection only; defaults to Tavily.", "仅显示已启用且至少有一个可用模型的提供商。": "Only providers that are enabled and have at least one available model are shown.", "仅显示该提供商下已启用的模型。": "Only enabled models under this provider are shown.", "任务编号或原提交编号,至少提供一项": "Provide a job ID or the original submission ID", "作为远程 MCP 服务,在支持 MCP 的客户端配置里填写地址即可接入。": "Exposed as a remote MCP service; add the URL to any MCP-capable client.", "使用已有账号生成或编辑图片,支持任务查询与本机文件保存。": "Generate or edit images with existing accounts, track jobs and save files locally.", "保存能力配置": "Save capability settings", "保留至 {time}": "Available until {time}", "共 {count} 项能力": "{count} capabilities", "内部请求本站网关时使用的网关 Key;额度、限流与请求日志记在该 Key 上。": "The gateway Key used for internal requests to this gateway; quota, rate limits and request logs are recorded on that Key.", "内部调用 API Key": "Internal API Key", "写入失败": "Write failed", "写入配置": "Write configuration", "单次图片上限": "Images per request", "卸载失败": "Uninstall failed", "参考图允许读取的目录": "Allowed reference directories", "参考图链接或已生成图片 ID;本地桥接还可传文件路径": "Reference URLs or generated image IDs; the local bridge also accepts file paths", "取消全选": "Deselect all", "只保存新文件,不覆盖已有不同内容。目录权限写入客户端配置,更新配置时需要重新确认。": "Only new files are saved; different existing content is never overwritten. Directory permissions are written to the client configuration and must be confirmed again when updating it.", "可选。留空时不传,由模型映射的「思考覆盖」决定。": "Optional. Leave empty to omit it and let the mapping's reasoning override decide.", "可选,每行一个已有绝对目录。输出目录默认允许读取;其他位置的文件不会读取或上传。": "Optional: one existing absolute directory per line. The output directory is readable by default; files elsewhere are not read or uploaded.", "启用 / 停用此服务": "Enable / disable this service", "图片分析": "Image analysis", "图片占用 {used} MiB,生成中预留 {reserved} MiB。": "Images use {used} MiB; active jobs reserve {reserved} MiB.", "图片生成配置": "Image generation settings", "图片生成配置已保存": "Image generation settings saved", "图片输出目录": "Image output directory", "在支持远程 MCP 的客户端中填写该地址,并使用网关 Key 作为 Bearer 令牌。": "Fill in this URL in any client that supports remote MCP, and use a gateway Key as the Bearer token.", "复制失败,请手动选择后复制": "Copy failed; select and copy manually", "复制文档": "Copy document", "复用「账号」页的登录态,不需要额外填写搜索密钥。账号停用或删除后不会自动换号。": "Uses an existing login from the Accounts page; no additional search API key is required. Disabled or deleted accounts are not replaced automatically.", "复用已有账号生图,不改变 Agent 的对话模型。实际调用遵守接入 Key 的模型和提供商权限。": "Generate images with existing accounts without changing the agent's chat model. Calls follow the connecting key's model and provider permissions.", "存储上限(MiB)": "Storage limit (MiB)", "安装目标": "Install targets", "完整的图片要求": "Complete image requirements", "客户端环境": "Client environment", "客户端调用超时设为 120 秒;后台生成超时由服务配置控制,未完成时通过任务编号查询。": "Client calls time out after 120 seconds. The service controls the generation deadline; query unfinished jobs by their ID.", "客户端配置示例": "Client configuration example", "密钥已清除": "Key cleared", "密钥或账号登录态无效": "The API key or account login is invalid", "密钥提示": "Key hint", "将按服务的工具执行超时({seconds} 秒)同步写入客户端配置。": "The service's tool execution timeout ({seconds}s) will be written into the client configuration.", "将搜索、视觉等能力通过 MCP 或 Skills 接入客户端。": "Connect clients to search, vision and other capabilities through MCP or Skills.", "尚未配置图片生成,请先选择可用的生图模型并保存。": "Image generation is not configured. Select an available image model and save.", "尚未配置视觉模型,配置前调用方会收到“未配置”错误。": "No vision model is configured yet; callers receive a \"not configured\" error until it is.", "工具执行超时": "Tool execution timeout", "工具执行超时已保存": "Tool execution timeout saved", "工具服务": "Tool services", "已写入 {count} 个客户端配置": "Wrote configuration for {count} clients", "已处理 {count} 个目标": "Processed {count} targets", "已复制": "Copied", "已失效": "Invalid", "已安装到 {count} 个客户端": "Installed to {count} clients", "已完成": "Completed", "已完成 {count} 个目标": "Completed {count} targets", "已接入 {count} 个目标": "Connected to {count} targets", "已有账号": "Existing account", "已有账号搜索只支持搜索,不支持网页抓取;请求会使用绑定账号的额度与出网设置。": "Account-based sources support search only, not page fetching. Requests use the bound account’s quota and outbound network settings.", "已检查保存的配置,未发起生图;账号实际额度与上游可用性以调用结果为准。": "Saved settings checked without generating an image. Actual account quota and upstream availability are determined when making a call.", "已绑定的搜索账号不存在,请重新选择": "The bound search account no longer exists; select another account", "已绑定的搜索账号已停用": "The bound search account is disabled", "已绑定账号不可用,请重新选择": "The bound account is unavailable; select another account", "已过期或清理": "Expired or cleared", "已选择 {count} / {total} 个": "Selected {count} / {total}", "已配置的 API Key 已失效(被删除或禁用),请重新选择并保存。": "The configured API Key is no longer valid (deleted or disabled); select a new one and save.", "当前提供商插件不支持账号搜索,请更新插件": "The current provider plugin does not support account-based search; update the plugin", "当前模型:{provider} / {model}": "Current model: {provider} / {model}", "当前没有可用的安装目标": "No install targets available", "当前没有已安装/已配置的目标": "Nothing is installed or configured yet", "当前网关 Key 无权使用所选账号搜索来源": "This gateway Key is not allowed to use the selected account-based search sources", "打包为 Agent Skill,由 Agent2API 面板安装到本机客户端目录。": "Packaged as an Agent Skill and installed into local client directories from the Agent2API panel.", "批量抓取 1~10 个 URL,使用后台选中的单个抓取提供商。": "Fetch 1-10 URLs using the single fetch provider selected on the server.", "批量搜索 1~10 条查询,并发调用后台选中的提供商后合并重复来源。": "Search 1-10 queries in parallel with the providers selected on the server, then merge duplicate sources.", "批量网页抓取": "Batch page fetching", "批量网页抓取提供商": "Batch page fetch provider", "批量网页搜索": "Batch web search", "批量网页搜索不可用:所选提供商均未启用或未配置密钥。": "Batch web search unavailable: none of the selected providers is enabled and configured.", "批量网页搜索不可用:请启用来源并配置密钥或绑定可用账号。": "Batch web search is unavailable: enable a source and configure its API key or bind an available account.", "批量网页搜索可用:将使用 {ready},未配置的 {missing} 会自动跳过。": "Batch web search available: using {ready}; unconfigured {missing} will be skipped automatically.", "批量网页搜索可用:所选提供商均已启用并配置密钥。": "Batch web search available: all selected providers are enabled and configured.", "批量网页搜索可用:所选来源均已启用并配置完成。": "Batch web search is available: all selected sources are enabled and configured.", "批量网页搜索提供商": "Batch web search providers", "批量网页搜索至少选择一个提供商": "Select at least one provider for batch web search", "把 1~10 张图片与提示词交给后台配置的视觉模型,返回模型回复文本。": "Send 1-10 images and a prompt to the vision model configured on the server and return the model reply text.", "把下面这段合并到客户端配置的 mcpServers 里,并把 Key 换成你自己的。": "Merge the snippet below into the client's mcpServers and replace the Key with your own.", "把图片与提示词交给后台配置的视觉模型分析,并把模型回复返回给调用方的大模型。": "Sends images and a prompt to the vision model configured on the server and returns the model reply to the calling model.", "抓取:{name}": "Fetch: {name}", "按参考图修改,仅在配置了可用编辑模型时提供。": "Edit reference images; available only when a supported editing model is configured.", "按描述使用已配置的模型生图,默认一张,会消耗账号额度。": "Generate images from a description using the configured model. Defaults to one image and consumes account credits.", "接入协议": "Access protocol", "接入方式": "Connection mode", "提供 REST API,任何能发 HTTP 请求的程序都可以携带网关 Key 直接调用。": "Provides a REST API; any program that can send HTTP requests can call it with a gateway Key.", "提供商尚未配置密钥": "The provider has no API key configured", "提供商尚未配置有效密钥": "The provider has no valid API key configured", "提供商插件暂不可用": "The provider plugin is temporarily unavailable", "提供商插件未安装或未启用": "The provider plugin is not installed or enabled", "提供商暂不可用或配置有误": "The provider is temporarily unavailable or misconfigured", "提供商选择": "Provider selection", "提示词,描述要让模型在图片中查看的内容": "Prompt describing what the model should look for in the images", "插件搜索能力声明不完整,请更新插件": "The plugin’s search capability information is incomplete; update the plugin", "插件返回的搜索来源格式不正确": "The plugin returned search sources in an invalid format", "搜索、视觉与生图共用网关配置。本机客户端的 MCP 安装在桌面端完成。": "Search, vision and image generation use gateway settings. Install MCP into local clients from the desktop app.", "搜索参数不符合该来源的要求": "The search parameters do not meet this source’s requirements", "搜索提供商没有返回来源": "The search provider returned no sources", "搜索服务拒绝了该账号,请检查账号权限": "The search service rejected this account; check its permissions", "搜索来源配置不完整": "The search source configuration is incomplete", "搜索请求超时": "The search request timed out", "搜索账号不属于该提供商,请重新选择": "The search account belongs to a different provider; select another account", "搜索账号登录态已失效,请重新登录": "The search account login has expired; sign in again", "搜索额度已用完或触发限流": "The search quota is exhausted or the rate limit was reached", "支持多选。每次搜索会并发调用所选提供商并合并重复来源。": "Multiple selection. Each search calls the selected providers in parallel and merges duplicate sources.", "无法确认插件搜索能力,请更新或重启提供商插件": "Unable to confirm search support; update or restart the provider plugin", "暂无生图记录,连接 MCP 后即可让 Agent 生成图片。": "No image jobs yet. Connect MCP to let your agent generate images.", "暴露的工具": "Exposed tools", "更新时间": "Updated", "最大生成并发": "Concurrent generation limit", "最近生成记录": "Recent image jobs", "服务与协议": "Services and protocols", "服务入口": "Service endpoint", "服务名称": "Service", "服务地址": "Service URL", "服务状态已更新": "Service status updated", "服务端强制单次工具执行的超时上限(同一服务的 Skill / MCP / API 共用)。安装 MCP 时会按此值写入客户端配置;修改后需在客户端重新「更新」配置并重进会话才会生效。": "Server-enforced timeout for a single tool execution (shared by the Skill / MCP / API protocols of the same service). Installing MCP writes this value into the client configuration; after changing it, re-run \"Update\" in the client and reopen the session.", "服务端强制单次工具执行的超时上限(同一服务的 Skill / MCP 共用)。安装 MCP 时会按此值写入客户端配置;修改后需在客户端重新「更新」配置并重进会话才会生效。": "Server-enforced timeout for a single tool execution (shared by the Skill / MCP protocols of the same service). Installing MCP writes this value into the client configuration; after changing it, re-run \"Update\" in the client and reopen the session.", "服务能力": "Capabilities", "服务配置": "Service configuration", "未选择账号": "No account selected", "本地桥接": "Local bridge", "本地桥接会在本机运行一个 node 脚本,支持直接传本地图片路径,推荐在桌面端使用。": "The local bridge runs a Node script on this machine and supports local image paths; recommended on desktop.", "本地桥接需要 Node.js 18 或更新版本,自动读取授权目录的参考图并保存生成结果;HTTP 接入只返回下载地址。": "The local bridge requires Node.js 18 or newer. It reads references from authorized directories and saves generated images. HTTP mode only returns download URLs.", "本机接入": "Local install", "本次提交的唯一编号,断线重试使用原编号": "Unique submission ID; reuse it when retrying after a disconnect", "查询原任务并取回图片,不再次生图或扣费。": "Query the original job and retrieve its images without generating or charging again.", "查询生成结果": "Get generation result", "检查配置": "Check configuration", "正在加载安装目标…": "Loading install targets…", "正在加载工具服务…": "Loading tool services…", "正在加载工具服务配置…": "Loading tool service configuration…", "每条搜索词最多 {count} 字": "Up to {count} characters per query", "没有匹配的工具服务": "No matching tool services", "没有可用的工具服务": "No tool services available", "没有可用的生图模型,请先添加账号、启用对应插件并更新模型目录。": "No image model is available. Add an account, enable its plugin and refresh the model catalog.", "没有可用的网关 Key": "No available gateway Key", "没有可绑定的启用账号,请先到「账号」页添加或启用。": "No enabled account is available to bind. Add or enable one on the Accounts page first.", "没有可配置的提供商": "No providers to configure", "清理这次生成的临时图片?已保存到本机的文件不会被删除,原提交编号也不会重新生图。": "Clear the temporary images for this job? Files saved locally will remain, and the original submission ID will not generate again.", "清除密钥": "Clear key", "清除配置": "Clear configuration", "点击「复制文档」可复制整份 Markdown 文档,直接发给对接方即可。": "Click \"Copy document\" to copy the whole Markdown document and send it to integrators.", "生图模型": "Image generation model", "生图账号": "Image generation account", "生成中": "Generating", "生成较慢时先返回任务编号。断线后查询原任务,不自动重画;超时不代表没有扣费。": "Slow generations return a job ID first. Query the original job after reconnecting; no automatic regeneration. A timeout does not mean no credits were charged.", "确定清除提供商 {name} 的 API Key?清除后该提供商将不可用,直到重新保存新密钥。": "Clear the API Key of {name}? The provider will be unavailable until a new key is saved.", "移除 {name} 配置": "Remove {name} configuration", "空白的 API Key 不会覆盖已保存的密钥。": "An empty API Key will not overwrite the saved key.", "管理可供客户端安装和运行的工具服务,并配置上游提供商与能力。": "Manage tool services that clients can install and run, and configure their upstream providers and capabilities.", "结果不确定": "Result uncertain", "结果保留(小时)": "Retention (hours)", "编辑 {name}": "Edit {name}", "编辑可使用不同模型;未配置可用编辑模型时,不向 Agent 提供编辑工具。": "Editing can use a different model. The editing tool is not exposed without an available editing model.", "编辑提供商 {name}": "Edit provider {name}", "编辑模型": "Editing model", "网络搜索": "Web Search", "网络搜索与视觉分析:网关侧配置,改完立即生效。本机客户端的安装在桌面端完成。": "Web search and vision analysis are gateway-side settings that take effect immediately. Installing into local clients is done on desktop.", "聚合 Tavily、Querit、Firecrawl、Ollama Web Search,提供批量网页搜索与网页抓取能力。": "Aggregates Tavily, Querit, Firecrawl and Ollama Web Search for batch web search and page fetching.", "聚合标准搜索服务及已有 WorkBuddy、Kiro 账号的搜索能力;网页抓取仍使用标准服务。": "Combines standard search services with search from existing WorkBuddy and Kiro accounts. Page fetching still uses standard services.", "能力提供商配置已保存": "Capability provider settings saved", "能力数量": "Capabilities", "自动选择仅在所选提供商内遵守现有路由;固定账号仍受停用、冷却与额度限制,不会自动换号。": "Automatic selection follows existing routing within the selected provider. Fixed accounts still obey disabled status, cooldowns and quota limits; they are never replaced automatically.", "自动选择账号": "Select account automatically", "至少选择一个搜索提供商": "Select at least one search provider", "获取 API Key": "Get API Key", "要分析的图片(1~10 张),每张为 http(s) URL 或图片 data URI": "Images to analyze (1-10), each an http(s) URL or an image data URI", "要抓取并提取正文的网页 URL(1~10 个)": "Page URLs to fetch and extract (1-10)", "要搜索的查询,每条并发执行(1~10 条)": "Queries to search, each executed in parallel (1-10)", "视觉分析": "Vision Analysis", "视觉服务配置已保存": "Vision service configuration saved", "视觉服务配置已清除": "Vision service configuration cleared", "视觉模型配置": "Vision model configuration", "视觉链路测试失败": "Vision pipeline test failed", "视觉链路连通:耗时 {duration}ms": "Vision pipeline connected in {duration}ms", "触发上游限流": "The upstream rate limit was hit", "该协议已停用,已接入的客户端会收到服务停用错误。": "This protocol is disabled; connected clients will receive a service-disabled error.", "该协议通过 Agent2API 面板安装到本机客户端目录。": "This protocol is installed into local client directories from the Agent2API panel.", "该提供商不支持网页抓取": "This provider does not support page fetching", "该搜索来源使用 API Key,不接受账号绑定": "This search source uses an API Key and does not accept account bindings", "该搜索来源使用已有账号,不接受 API Key": "This search source uses an existing account and does not accept an API Key", "请先选择 API Key": "Select an API Key first", "请先选择提供商": "Select a provider first", "请先选择搜索使用的账号": "Select an account to use for search first", "请求参数无效": "Invalid request parameters", "请至少选择一个目标": "Select at least one target", "请选择 API Key": "Select an API Key", "请选择内部调用 API Key": "Select the internal API Key", "请选择图片输出目录": "Select an image output directory", "请选择提供商与上游模型": "Select a provider and an upstream model", "调用用的 API Key": "API Key for invocation", "账号搜索暂不可用,请检查账号及插件状态": "Account-based search is temporarily unavailable; check the account and plugin status", "账号搜索配置不完整,请重新选择账号或更新插件": "Account-based search is not fully configured; select an account again or update the plugin", "超时 {seconds}s": "Timeout {seconds}s", "输入新密钥;留空保持不变": "Enter a new key; leave empty to keep the current one", "运行时": "Runtime", "还没有可用的提供商,请先在「账号」页添加账号并在「模型管理」页确认有已启用的模型。": "No providers available yet. Add accounts on the Accounts page and make sure there are enabled models on the Models page.", "还没有可用的提供商,请先在桌面端添加账号并确认有已启用的模型。": "No providers available yet. Add accounts on desktop and make sure there are enabled models.", "这是后台生成任务的时间上限。单次 MCP 调用最多等待 20 秒,未完成时返回任务编号;查询不会重新生图。": "This limits the background generation task. Each MCP call waits up to 20 seconds, then returns a job ID if unfinished. Queries never generate again.", "这里管理的是「客户端能用什么」:服务是否对外提供、上游提供商与密钥、视觉分析用哪个模型。": "This page manages what clients can use: whether services are exposed, their upstream providers and keys, and which model vision analysis uses.", "远程 HTTP": "Remote HTTP", "远程 HTTP 只接受图片 URL 或 data URI,不需要本机安装 node。": "Remote HTTP only accepts image URLs or data URIs; no local Node.js is required.", "连接成功:{count} 条结果,耗时 {duration}ms": "Connected: {count} results in {duration}ms", "连接测试失败": "Connection test failed", "选择处理图片的上游提供商与模型。调用时会用内部 Key 经本站网关请求该模型,协议转换、重试与故障转移全部复用网关。": "Select the upstream provider and model for images. Calls go through this gateway with the internal Key, reusing protocol translation, retries and failover.", "选择安装目标、运行时与调用用的 API Key。Skill 包与密钥只写入所选客户端的本机目录。": "Select install targets, runtime and the API Key for invocation. The Skill package and key are written only into the selected clients' local directories.", "选择已有目录,图片只会写入此目录及其子目录": "Select an existing directory; images are saved only there or in its subdirectories", "选择目录": "Choose directory", "选择要从中移除的客户端,未勾选的客户端保持不变。": "Select the clients to remove it from; unselected clients are left unchanged.", "选择要写入 MCP 配置的客户端。配置只动本服务那一项,客户端原有的其它 MCP 服务保持不变。": "Select the clients to write the MCP configuration into. Only this service's entry is changed; other MCP servers stay untouched.", "配置搜索与抓取所使用的上游提供商。调用方不再传递 provider,运行时始终使用这里保存的设置。": "Configure the upstream providers used for search and fetching. Callers no longer pass a provider; the saved settings are always used at runtime.", "默认只生成一张。空间不足时先拒绝请求,不消耗生图额度;只清理过期结果,已保存到本机目录的文件不受影响。": "One image is generated by default. Insufficient storage rejects the request before credits are spent. Only expired results are cleaned up; locally saved files are unaffected.", " 到 {file}": " to {file}", " 正文已改:{edited}(其余段用官方原文)。": " Text edited: {edited} (the remaining blocks use the official text).", "(无 id)": "(no id)", "/v1 拒绝无 Key 请求": "/v1 rejects keyless requests", "0 B": "0 B", "100%(默认)": "100% (default)", "<本机IP>": "", "ALTCHA(本地验证)": "ALTCHA (local verification)", "Access Key ID": "Access Key ID", "Agent2API 手机端": "Agent2API Mobile", "Android 应用(APK)": "Android app (APK)", "Cline 上游按请求头判定「调用方是不是 Cline 自家产品」:X-CLIENT-TYPE: cline-sdk 是硬门槛(缺了它免费池模型一律 403),版本号与平台标识让请求更贴近官方客户端的形态。这里列出的是网关默认会发的头:改某一行的值 = 覆盖默认值(也可以新增默认清单之外的自定义头);把值清空保存 = 这个头不发送;在界面删掉被改过的行 = 回落默认值。改完点「保存」,下一个 Cline 请求立即生效。不懂某一行的含义就不要动它 —— 伪装头的价值在「与官方客户端逐字一致」。": "The Cline upstream decides from the request headers whether the caller is one of Cline's own products: X-CLIENT-TYPE: cline-sdk is a hard requirement (without it, free-pool models always return 403), and the version number and platform identifier make the request look closer to the official client. Listed here are the headers the gateway sends by default: editing a row's value overrides the default (you can also add custom headers beyond the default list); saving an empty value means this header is not sent; deleting an edited row in the UI reverts it to the default. Click \"Save\" when done and the next Cline request picks it up immediately. Do not touch a row you do not understand — the value of spoofed headers lies in being word-for-word identical to the official client.", "Cline 伪装头": "Cline Spoofed Headers", "Cline 伪装头已刷新": "Cline spoofed headers refreshed", "Docker 容器": "Docker container", "Endpoint": "Endpoint", "Endpoint 填 https://<账户ID>.r2.cloudflarestorage.com,Region 固定填 auto。": "Set Endpoint to https://.r2.cloudflarestorage.com and Region to auto.", "Endpoint 填 https://cos.ap-guangzhou.myqcloud.com,Region 填 ap-guangzhou(按实际地域改)。": "Set Endpoint to https://cos.ap-guangzhou.myqcloud.com and Region to ap-guangzhou (change to your actual region).", "Endpoint 填 https://obs.cn-north-4.myhuaweicloud.com,Region 填 cn-north-4(按实际地域改)。": "Set Endpoint to https://obs.cn-north-4.myhuaweicloud.com and Region to cn-north-4 (change to your actual region).", "Endpoint 填 https://oss-cn-hangzhou.aliyuncs.com,Region 填 cn-hangzhou(按实际地域改)。": "Set Endpoint to https://oss-cn-hangzhou.aliyuncs.com and Region to cn-hangzhou (change to your actual region).", "Endpoint 形如 http://192.168.1.10:9000(自建通常用 http);Region 一般填 us-east-1。": "Endpoint looks like http://192.168.1.10:9000 (self-hosted usually uses http); Region is typically us-east-1.", "Endpoint 留空即走 AWS 官方地址;Region 必须与桶所在区域一致。": "Leave Endpoint empty to use the official AWS address; Region must match the bucket's region.", "KB": "KB", "Linux 安装包(deb)": "Linux package (deb)", "Logo 不能超过 2 MiB": "The logo must not exceed 2 MiB", "Logo 仅支持 PNG、JPG、WebP 图片": "Only PNG, JPG and WebP images are supported for logos", "Nextcloud": "Nextcloud", "OpenAI 新版 API 用 developer 角色取代 system 承载指令,新版 OpenAI SDK 与部分客户端发的对话里会出现 role 为 developer 的消息;不少 OpenAI 兼容上游(尤其是自定义提供商的透传路径)不认识这个角色,收到就报 400。开启本项后,网关在每次转发前把 developer 角色的消息改写为 system —— 两类角色在 OpenAI 语义上等价(OpenAI 自己的迁移指南也是这么映射的),改写不影响对话内容与语义;对本来就只认 system 的各家内置上游同样无害。默认开启;关掉后 developer 消息会原样发往上游,不认识它的上游会报「角色不存在」一类的错误。": "The newer OpenAI API carries instructions in a developer role instead of system, so conversations sent by current OpenAI SDKs and some clients contain messages with role \"developer\". Many OpenAI-compatible upstreams (especially the passthrough path of custom providers) do not recognize that role and reject the whole request with 400. When enabled, the gateway rewrites developer-role messages to system before every forward — the two roles are equivalent in OpenAI semantics (OpenAI's own migration guide maps them the same way), so the rewrite changes neither content nor meaning, and it is harmless to the built-in upstreams that only accept system anyway. Enabled by default; when off, developer messages go upstream as-is and upstreams that do not know the role return \"unknown role\"-style errors.", "QQ 群 · Telegram": "QQ groups · Telegram", "S3 兼容存储": "S3-compatible storage", "Safari 没有安装按钮:点底部的「分享」,选「添加到主屏幕」,再点「添加」。": "Safari has no install button: tap Share at the bottom, choose \"Add to Home Screen\", then tap \"Add\".", "Secret Access Key": "Secret Access Key", "Token 读数量级": "Token Readout Scale", "UTF-8 文本文件路径,留空用内置默认提示词(通用编码助手提示词,不含任何会被上游拦截的模板句)。只在「替换 / 追加」模式下生效,透传模式不读它。": "Path to a UTF-8 text file. Leave empty to use the built-in default prompt (a general coding-assistant prompt with no template sentences the upstream would block). Only applies in Replace / Append mode; passthrough mode does not read it.", "WebView / 浏览器内核": "WebView / browser engine", "Windows 安装包(NSIS)": "Windows installer (NSIS)", "Windows 服务": "Windows service", "ZCode 套餐池(Start Plan)通道每条请求都要消耗一个当次铸造的人机验证令牌(一次性,2 分钟过期),库存低于该值时界面自动补铸到它。默认 3 个。调大能吸收突发并发,但用不掉的令牌 2 分钟就过期作废,烧的是上游风控配额。可填 1–10。": "Every request on the ZCode plan-pool (Start Plan) channel consumes a freshly minted CAPTCHA token (one-shot, expires in 2 minutes); when stock falls below this value the UI mints more up to it. Default 3. A larger value absorbs bursts, but unused tokens expire after 2 minutes and burn the upstream risk-control quota. Allowed 1-10.", "ZCode「套餐池(Start Plan)」通道的每条推理请求都要附一个当次铸造的阿里云无痕验证令牌(一次性、约 2 分钟过期):令牌由界面里的铸造守卫静默铸好、推给网关入池,转发时逐条取用。这里的三个值管的是补货节奏:①「库存目标」= 库存低于它守卫才补铸、补到它为止,默认 3 个;②「轮询间隔」= 守卫多久看一次库存,默认 2500 毫秒,只影响反应速度(库存够用时不会多铸);③「单轮铸造上限」= 发现缺货时一轮最多铸几个,默认 1 个(连铸之间固定隔 500 毫秒)。请求密集、请求日志里连续出现「需要人机验证令牌」的 503 时,把目标与单轮上限适当调大、轮询调快,能让池子跟得上消耗 —— 代价是上游(阿里云)对铸造频率有风控,铸得越多越快越容易触发限流,且用不掉的令牌 2 分钟即过期作废、等于白烧配额,所以建议小步调。保存后对下一轮补货立即生效,不用重启。": "Every inference request on the ZCode \"Plan pool (Start Plan)\" channel must carry a freshly minted Aliyun invisible-CAPTCHA token (one-shot, expires in about 2 minutes): tokens are minted silently by the mint guard in the UI and pushed into the gateway pool, from which forwarding takes one per request. The three values here govern the restocking rhythm: ① \"Stock target\" = the guard mints more only when stock falls below it, up to it (default 3); ② \"Polling interval\" = how often the guard checks stock, default 2500 ms (only affects reaction speed — no extra minting while stock is sufficient); ③ \"Per-round mint cap\" = the most tokens minted in one round upon a shortage, default 1 (consecutive mints are fixed 500 ms apart). When requests are dense and the request log keeps showing 503 \"needs a CAPTCHA token\", raise the target and per-round cap and poll faster so the pool keeps up — the trade-off is that the upstream (Aliyun) rate-limits minting: the more and faster you mint, the likelier you trip the limit, and unused tokens expire within 2 minutes anyway, effectively burning quota — so adjust in small steps. Saving takes effect on the next restock round, no restart needed.", "beta 版": "Beta release", "iOS 应用": "iOS app", "models.dev 元数据": "models.dev metadata", "models.dev 元数据已更新({count} 条)": "models.dev metadata updated ({count} entries)", "models.dev 是一个开源的模型资料库(社区维护),这里用它补齐「上游没告诉我们」的模型能力:上下文窗口、最大输出、工具调用、图片、视频、是否支持思考,以及这个模型认识哪些思考档位。优先级是:你在「模型能力」里手工改的值 > 上游清单自己声明的值 > models.dev 的值 —— 它只填上游没声明的空位,从不推翻上游已声明的。网关随包内嵌了一份快照,所以离线、首次启动、访问不通时也有数据;开启时会按「模型目录刷新」任务的间隔联网更新(同一轮里一并刷新,也可在这里立即刷新)。关闭只停联网刷新,已经拿到的数据继续用。": "models.dev is an open-source, community-maintained model database. It fills in what the upstream never told us: context window, max output, tool calling, images, video, reasoning support, and which reasoning levels the model actually accepts. Priority: values you edited by hand under \"Model capabilities\" > what the upstream catalog declares > models.dev — it only fills gaps the upstream left, and never overrides a declared value. A snapshot ships inside the app, so offline, first-run and blocked-network cases still have data; while enabled it refreshes online on the \"Model catalog refresh\" schedule (in the same round, or on demand here). Turning it off only stops the online refresh; existing data stays in use.", "models.dev 模型元数据": "models.dev model metadata", "systemd 服务": "systemd service", "{count} 条": "{count} entries", "{count} 条 · 来自{origin}{at} · {mode}": "{count} entries · from {origin}{at} · {mode}", "{count} 条规则,按列表顺序执行": "{count} rules, executed in list order", "{d} 天 {h} 小时": "{d}d {h}h", "{h} 小时 {m} 分钟": "{h}h {m}m", "{label} 提示词文件": "{label} prompt file", "{label} 的提示词模式": "{label} prompt mode", "{label}({message})": "{label} ({message})", "{lines} 行、{chars} 字符(按当前草稿计)": "{lines} lines, {chars} characters (based on the current draft)", "{minutes} 分钟": "{minutes} minutes", "{models} 同时出现在两块设置里,会按「辅助识图」处理。想改的话,把其中一个从这边的模型名单里去掉。": "{models} appears in both blocks and will be handled by assisted image reading. To change that, remove it from one of the model lists.", "{mode}生效:上游收到的 system 来自{source}{lines}。": "{mode} in effect: the system prompt sent upstream comes from {source}{lines}.", "{m} 分钟": "{m}m", "{noun}不能为空(可填 {min}–{max})": "{noun} cannot be empty (allowed range: {min}–{max})", "{noun}必须在 {min}–{max} 之间(当前填的是 {text})": "{noun} must be between {min} and {max} (currently entered: {text})", "{noun}必须是整数": "{noun} must be an integer", "{n} B": "{n} B", "{n} GB": "{n} GB", "{n} KB": "{n} KB", "{n} MB": "{n} MB", "{n} 个头将随每个 Cline 请求发送": "{n} headers will be sent with every Cline request", "{n} 台可选 · 点此切换": "{n} servers · tap to switch", "{n} 项 · {shown} 显示": "{n} items · {shown} shown", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "{total} menus · {shown} shown · {hidden} hidden · {groups} groups", "{way}的适用模型": "Models for {way}", "⚠️ 密钥警告": "⚠️ Key warning", "⚠️ 已关闭「{label}」的机器人校验": "⚠️ Bot check disabled for \"{label}\"", "⚠️ 机器人校验已关闭": "⚠️ Captcha disabled", "✅ Cline 伪装头已保存": "✅ Cline spoofed headers saved", "✅ models.dev 模型元数据已开启": "✅ models.dev model metadata enabled", "✅ 云同步设置已保存": "✅ Cloud sync settings saved", "✅ 会话图片压缩已开启": "✅ Image compression is on", "✅ 出站指纹脱敏已开启": "✅ Fingerprint masking enabled", "✅ 密码已修改,其他设备的登录已失效": "✅ Password changed. Sign-ins on other devices have been revoked", "✅ 导入完成:{summary}": "✅ Import complete: {summary}", "✅ 已上传到云端({size})": "✅ Uploaded to the cloud ({size})", "✅ 已为「{label}」装上网关自带提示词": "✅ Gateway-provided prompt installed for \"{label}\"", "✅ 已从云端恢复{note}": "✅ Restored from the cloud{note}", "✅ 已保存:{label}": "✅ Saved: {label}", "✅ 已保存:{label} {value}": "✅ Saved: {label} {value}", "✅ 已保存:指定错误码直接换号": "✅ Saved: Switch Accounts on Specified Error Codes", "✅ 已保留 {days} 天": "✅ Kept for {days} days", "✅ 已保留 {days} 天,超出部分已清理": "✅ Kept for {days} days; older data cleared", "✅ 已加密备份 {n} 张表({size}),包含恢复密钥:{file}": "✅ Encrypted backup of {n} tables ({size}), including recovery keys: {file}", "✅ 已备份 {n} 张表({size})到 {file}": "✅ Backed up {n} tables ({size}) to {file}", "✅ 已导入账号密钥,请继续下载": "✅ Account key imported; continue with the download", "✅ 已导出 {count} 个账号{note}{file}": "✅ Exported {count} accounts{note}{file}", "✅ 已开启「{label}」的机器人校验": "✅ Bot check enabled for \"{label}\"", "✅ 已恢复 {n} 张表{note}": "✅ Restored {n} tables{note}", "✅ 已改用 k / M / B 缩写": "✅ Now using k / M / B abbreviations", "✅ 已改用本地量级词(万 / 亿式)": "✅ Now using local magnitude words (万 / 亿-style)", "✅ 已自动创建网关 Key「默认」(可在「网关 Key」页查看)": "✅ Automatically created the gateway key \"Default\" (view it on the \"Gateway Key\" page)", "✅ 已解除内容拦截降级": "✅ Content-block fallback cleared", "✅ 开发者角色兼容已开启": "✅ Developer role compatibility enabled", "✅ 指纹脱敏设置已保存": "✅ Fingerprint masking settings saved", "✅ 数量上限已设为 {count} 条": "✅ Record limit set to {count}", "✅ 数量上限已设为 {count} 条,超出部分已清理": "✅ Record limit set to {count}; excess records removed", "✅ 机器人校验已开启": "✅ Captcha enabled", "✅ 第三方模型回答完自动折叠过程已开启": "✅ Collapse third-party model work after the answer enabled", "✅ 设置已保存,应用正在重启…": "✅ Settings saved, the app is restarting…", "✅ 调试模式已关闭": "✅ Debug mode disabled", "✅ 调试模式已开启": "✅ Debug mode enabled", "✅ 路由设置已保存": "✅ Routing settings saved", "✅ 连接成功:{path}": "✅ Connected: {path}", "、{n} 个自定义提供商": ", {n} custom providers", "。事件日志、请求明细、调试报文与面板登录态保持不变。替换前会自动把当前业务数据备份到配置目录的 backups/ 下。": ". Event logs, request details, debug payloads and panel login state stay untouched. The current business data is backed up to backups/ under the config directory before replacing.", "「{label}」将从 {previous} 天改为 {days} 天。": "\"{label}\" will change from {previous} days to {days} days.", "「{label}」将从 {previous} 条改为 {count} 条。": "\"{label}\" will change from {previous} to {count} records.", "「{label}」改用内置默认提示词": "\"{label}\" now uses the built-in default prompt", "「{label}」的提示词文件已更新": "\"{label}\" prompt file updated", "「{label}」的提示词正文已更新": "\"{label}\" prompt text updated", "「{label}」的模式改为「{mode}」": "\"{label}\" mode changed to \"{mode}\"", "「{label}」的网关自带提示词已改回官方原文": "\"{label}\" gateway-provided prompt restored to the official text", "「{label}」的网关自带提示词正文已更新": "\"{label}\" gateway-provided prompt text updated", "「模型管理」里每个能力的来源标记(上游 / models.dev / 已覆盖)读的就是这份数据;映射弹窗的思考档位下拉也按这里的数据只列该模型真实认识的档位。": "The per-capability source marks in \"Model management\" (upstream / models.dev / overridden) come from this data, and the reasoning-level dropdown in the mapping dialog lists only the levels the model actually accepts, based on it.", "「用哪份提示词」本来是按上游分别决定的事,所以每家可以有自己的模式、提示词文件与正文:不在这里列出的提供商一律沿用上面那份默认设置,「跟随默认」把这一家取消、回到默认。带「网关自带」那一行的家(目前是 ZCode 两家)默认就列在这里 —— 那一段是网关自己装上去的文本,不来自客户端也不来自提示词文件,默认开启、可以关掉,也可以改它的正文(改过的那一段以你的文本为准);关掉后还能不能通过上游校验,取决于上游当下的口径,行内说明了实测依据。「模式 / 提示词文件 / 正文」管的是客户端自己的 system 怎么处理,与那个开关是两件事。": "Which prompt to use is decided per upstream, so each provider can have its own mode, prompt file, and text: providers not listed here all use the default settings above, and \"Follow Default\" removes a provider's override and returns it to the default. Providers with a \"Gateway-Provided Prompt\" row (currently the two ZCode providers) are listed here by default — that text is installed by the gateway itself, comes from neither the client nor a prompt file, is on by default, can be turned off, and its text can be edited (edited blocks use your text); whether it still passes upstream validation after being turned off depends on the upstream's current criteria, and the row's hint documents what was measured. \"Mode / Prompt File / Prompt Text\" controls how the client's own system prompt is handled — a separate matter from that switch.", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "\"Settings\" is pinned, so its group cannot be hidden as a whole; you can still hide its other menus individually", "「请求日志」页的逐条请求记录,默认 99999 天(近似全量保留),可填 1–99999 天。": "Per-request records on the \"Request Logs\" page. Defaults to 99999 days (about 274 years — kept in full for practical purposes); range 1–99999 days.", "「请求日志」页的逐条请求记录,默认 99999 天,可填 1–99999 天;同时受数量上限限制。": "Per-request records on the Request Logs page. Defaults to 99999 days; accepts 1–99999 days. The record limit also applies.", "一个 .a2ab 文件即可跨机器恢复,账号、网关 Key、GitHub 令牌与云同步凭据无需另行复制密钥。插件程序与库外文件不在整库备份范围。": "One .a2ab file restores data on another machine without separately copying keys for accounts, gateway keys, GitHub tokens, or cloud sync credentials. Plugin programs and files outside the database are not included.", "一段内置装配": "a built-in assembly", "三档数据各自独立计时,超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件;请求日志是网关每次转发到上游的逐条记录;按天聚合供报表页的热力图与按天趋势使用。请求日志与按天聚合默认 99999 天(约 274 年,效果上等于全量保留),事件日志默认 30 天。把某一档改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。三档的可填范围均为 1–99999 天。": "The three data types are timed independently; anything beyond its retention period is deleted: event logs are system events such as sign-ins, account switches, and 429 switches; request logs are the per-request records of everything the gateway forwards upstream; the daily aggregates feed the heatmap and daily trends on the Reports page. Request logs and daily aggregates default to 99999 days (about 274 years — kept in full for practical purposes), and event logs default to 30 days. Lowering a value (for example, 30 days to 7 days) and saving deletes the excess historical data immediately, and this cannot be undone; raising it or leaving it unchanged deletes nothing. All three accept 1–99999 days.", "三段各自成块,所以分开编辑": "Three separate blocks, edited separately", "上传": "Upload", "上传 Logo": "Upload logo", "上传中…": "Uploading…", "上传内容含加密后的账号凭证与网关配置": "The upload contains encrypted account credentials and gateway configuration", "上传到云端": "Upload to cloud", "上传失败:{message}": "Upload failed: {message}", "上次同步:{time}({action})": "Last sync: {time} ({action})", "上次成功刷新的结果(存在本机数据库里)": "Result of the last successful refresh (stored in the local database)", "上游 CLI 版本": "Upstream CLI version", "上游客户端版本": "Upstream client version", "上游按": "The upstream checks ", "上游按「结构」校验身份:三段必须各自成块,所以这里分开编辑三段(不能合成一段)。动态段里的运行值写成占位符,发请求时才替换:{cwd} 工作目录、{platform} 平台、{shell} shell、{os_version} 系统版本、{git} 是否 git 仓库、{provider} 提供方标识、{model} 模型名。清空某一段 = 那一段恢复官方原文。第三段发出时前面会自带一个空行(官方形状)。": "The upstream verifies identity by \"structure\": the three blocks must each be a separate block, so they are edited separately here (they cannot be merged into one). Runtime values in the dynamic block are written as placeholders and substituted only when a request is sent: {cwd} working directory, {platform} platform, {shell} shell, {os_version} OS version, {git} whether this is a git repository, {provider} provider identifier, {model} model name. Clearing a block = that block reverts to the official text. A blank line is automatically prepended to the third block when it is sent (the official shape).", "上游未配置": "Upstream not configured", "上游模型繁忙时会先排队(回一句「建议 N 秒后再来」):网关等一会儿再发同一请求,最多等几次。默认 2 次,可填 0–10;填 0 表示不等待,排队直接返回 503 并说明「不是登录态或额度问题」。": "Busy upstream models queue first (replying \"suggest waiting N seconds\"): the gateway waits a while and resends the same request, up to a set number of waits. Default 2; accepts 0–10. 0 means no waiting: a queued response returns 503 directly and states that this is not a sign-in or quota problem.", "上游用「逐字精确匹配」的方式审核请求体(不是语义审核):客户端注入的固定模板句、计费头字段名、以及某些裸错误码出现在报文里就会整单拦截,返回 400。开启本项后,网关在每次转发前改写这些指纹 —— 表头键值整段删除,承载语义的模板句只换一个词(如 official CLI for Claude → official CLI tool for Claude),对话内容与语义都不受影响。规则集是内置的,不需要也无法维护词表。关掉本项后客户端模板会原样发往上游,可能重新出现模板句被误拦的报错。": "The upstream reviews request bodies by exact word-for-word matching (not semantic review): fixed template sentences injected by the client, billing header field names, and certain bare error codes in the payload cause the entire request to be blocked with 400. With this option on, the gateway rewrites those fingerprints before every forward — header key/value pairs are deleted entirely, and template sentences that carry meaning have a single word swapped (e.g. official CLI for Claude → official CLI tool for Claude); the conversation content and meaning are unaffected. The rule set is built in — there is no word list to maintain, and none can be. With this option off, client templates go upstream as-is and template-sentence false blocks may reappear.", "上游请求四个阶段各自的等待上限(秒,1~3600):①「连接中超时」= 建立 TCP/TLS 连接或代理隧道的最大等待,默认 30 秒;②「等待响应超时」= 请求发出后等上游响应头的最大时间,默认 300 秒 —— 网关请求上游恒带 stream,响应头在 SSE 建立时就到达,与模型思考多久无关;③「流式响应空闲超时」= 流式响应相邻两块数据之间允许的最大空闲,收到新数据即重新计时,默认 300 秒 —— 上游长时间不吐数据即判定连接僵死并断开;④「非流式响应超时」= 读完整份非流式响应体的总预算(一次性计时、不重置),默认 300 秒。四项都是「等待上限」,只要数据还在来,正常的流式回答就一直往下传。保存后对下一个请求立即生效,不用重启。": "The upstream wait limit for each of the four request stages (seconds, 1–3600): (1) \"Connect Timeout\" = the maximum wait to establish the TCP/TLS connection or proxy tunnel, default 30 seconds; (2) \"Response Headers Timeout\" = the maximum time to wait for the upstream's response headers after the request is sent, default 300 seconds — gateway requests always use stream, and the response headers arrive as soon as the SSE stream is established, regardless of how long the model thinks; (3) \"Stream Idle Timeout\" = the maximum idle gap allowed between adjacent chunks of a streaming response, the timer restarting on each new chunk, default 300 seconds — if the upstream sends no data for a long time, the connection is judged dead and disconnected; (4) \"Non-Streaming Timeout\" = the total budget for reading a complete non-streaming response body (a single timer that is not reset), default 300 seconds. All four are wait limits: as long as data keeps arriving, a normal streaming answer keeps flowing. Changes take effect on the next request without a restart.", "上游调试报文": "Upstream debug payloads", "上移": "Move up", "上移规则": "Move rule up", "下次自动重试:{time}": "Next automatic retry: {time}", "下游正文": "Downstream bodies", "下移": "Move down", "下移规则": "Move rule down", "下载失败:{message}": "Download failed: {message}", "不一致": "Mismatch", "不做会话识别,每条请求都重新按策略选路。": "No session detection: every request is routed by strategy from scratch.", "不做图片兼容": "Do not adapt images", "不可用": "Unavailable", "与网关同源的面板;完整管理功能在桌面端": "A panel served by the same gateway; full management lives on desktop", "两张开关分别管桌面端(应用内窗口,也包含开启局域网访问后从其他设备访问的那份面板)与网页端(Docker / 服务端自托管的浏览器面板)。默认都开启;桌面端只在本机使用、嫌验证耗时可以关掉,网页端暴露在网络上,建议保持开启。": "The two switches cover the desktop side (the in-app window, including the panel reached from other devices when LAN access is on) and the web side (the browser panel hosted by Docker / server). Both default to on. Turn the desktop one off if you only use it locally and find the check slow; keep the web one on, since that page is exposed to the network.", "两次输入的备份密码不一致": "The backup passwords do not match", "两次输入的新密码不一致": "The new passwords do not match", "两次重试之间的等待时间,两项共用,可填 0–300 秒。": "Wait time between two retries, shared by both settings. Range: 0–300 seconds.", "两种方式不会互相自动切换。": "The two modes never switch to each other automatically.", "两组设置分别用于桌面端托管的网页管理面板与网页端(Docker / 服务端)的浏览器面板。是否可被其他设备访问取决于网络访问与防火墙设置,不限于局域网。两端默认都开启人机验证,建议保持开启。": "The two groups apply to the web panel hosted by the desktop app and the browser panel hosted by Docker / server. Access from other devices depends on network access and firewall settings and is not limited to the LAN. Human verification is enabled by default for both; keeping it enabled is recommended.", "为了安全,开启前需要先注册一个": "For security, you need to register a ", "主进程未返回启动设置,请更新桌面端后重试": "The main process did not return startup settings. Update the desktop app and try again.", "主进程桥不可用": "Main process bridge unavailable", "主题": "Theme", "事件日志": "Event logs", "事件日志保留天数": "Event Log Retention Days", "云同步": "Cloud sync", "产品名": "Product name", "产品名不能包含斜杠或版本号,请改用前缀匹配": "Product names cannot include slashes or versions. Use prefix matching.", "人机验证": "Human verification", "人机验证失败": "Human verification failed", "人机验证已完成": "Human verification complete", "人机验证还在计算,请稍候": "Human verification is still running, please wait", "仅在同一会话、同一问题和相同权限范围内复用;追问新细节会重新识读。缓存只存在本机内存。": "Results are reused only within the same conversation, question and permission scope. New questions trigger a fresh reading. The cache is kept only in local memory.", "仅在账号、配置、签到或余额等实质内容变化时上传;导出时间或查询时间单独变化不会触发上传。": "Upload only when account data, settings, check-in results or balances change. Changes to export or query timestamps alone do not trigger an upload.", "仅处理本次转发副本,不修改客户端选择,也不删除当前或历史图片。": "Only this forwarded copy is changed. The client's selection and all current and historical images are preserved.", "仅影响面板登录与注册,不影响 API Key 调用。保存后生效,已登录会话不会退出。": "Only affects panel sign-in and registration, not API key requests. Changes take effect after saving and do not sign out existing sessions.", "仅本机": "This device only", "仅用现有数据、不联网刷新": "Using existing data only, no online refresh", "从云端恢复": "Restore from cloud", "从桌面图标启动,全屏、无地址栏。想卸载:长按图标删除,或清除浏览器站点数据。": "Launch it from the home screen icon: full screen, no address bar. To uninstall, long-press the icon and remove it, or clear the browser's site data.", "优先使用当前路由内的视觉模型": "Prefer vision models in the current route", "优先在当前路由内找可用的视觉模型,找不到就用 {model} 直接回答,不再回到原模型。": "An available vision model inside the current route is preferred; if there is none, {model} answers directly instead of the original model.", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "This restores the default groups, order and visibility. Groups you created are removed (their menus are kept).", "会话图片压缩设置已刷新": "Image compression settings refreshed", "位置": "Location", "位置与端口": "Location and ports", "使用 Rust 正则语法,保存时由后端校验;不支持环视和反向引用。": "Uses Rust regular expression syntax, validated by the backend when saving. Lookaround and backreferences are not supported.", "使用中文单位(亿 / 万)": "Use Chinese units (yi / wan)", "使用本地量级词(万 / 亿式)": "Use local magnitude words (万 / 亿-style)", "使用默认值": "Using defaults", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "The sidebar layout module did not load (ui/sidebar-layout.js must be included before app.js).", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "No menus are shown in the sidebar. Turn on the ones you need under Settings → Display → Sidebar menus.", "侧边栏菜单": "Sidebar menus", "保存上游原始报文(请求头、请求体、响应头、响应体)": "Save raw upstream payloads (request headers, request body, response headers, response body)", "保存单独配置": "Save model override", "保存后以这里的文本为准": "The text here takes precedence once saved", "保存后对下一轮补货立即生效,不用重启。守卫跑在应用界面里:轻量模式关窗销毁界面期间无法铸造,走套餐池(Start Plan)通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。": "Saving takes effect on the next restock round, no restart needed. The guard runs inside the app UI: while lightweight mode has destroyed the UI after a window close, no tokens can be minted — requests on the plan-pool (Start Plan) channel land in the request log as 503 (with the reason); reopen the UI and minting recovers automatically.", "保存后应用将重启以生效。": "The app will restart after saving for this to take effect.", "保存后状态读取立即生效。后台不会自动生成令牌;需要人机验证时,在账号的「套餐明细」中主动开始验证。模型请求免验证时无需保持界面打开。": "Status polling settings take effect immediately after saving. No tokens are generated automatically. Start required verification in the account’s Plan details. You do not need to keep the interface open when model requests are exempt from verification.", "保存后立即生效,不用重启:策略与粘性作用于**下一次**转发的选路,进行中的请求不受影响。": "Takes effect on save, no restart: strategy and stickiness apply to the **next** forwarded request; in-flight requests are unaffected.", "保存后立即生效,不用重启;次数用尽仍失败时,错误原样返回给客户端。": "Takes effect immediately after saving, no restart needed; if all attempts are exhausted and the request still fails, the error is returned to the client as-is.", "保存后立即生效,不用重启;超时按上游失败处理(计入请求日志的「错误」列,并按「请求重试」的设置决定是否重试)。": "Takes effect immediately after saving, no restart needed; a timeout is treated as an upstream failure (counted in the \"Error\" column of the request logs, and retried according to the \"Request Retries\" settings).", "保存后立即生效:保留天数和数量上限同时生效,调小任一项会立即清理超出的历史数据,且不可恢复。": "Takes effect immediately after saving. Both retention days and record limits apply; lowering either immediately removes excess historical data and cannot be undone.", "保存后立即生效:改小保留天数会立刻删除超出的历史数据,且不可恢复。": "Takes effect immediately after saving: lowering the retention days deletes the excess historical data at once, and this cannot be undone.", "保存在当前网关,登录页也会公开显示。不会更改安装包、快捷方式、系统托盘图标或软件版本信息。": "Saved on the current gateway and displayed publicly on the sign-in page. Does not change the installer, shortcuts, system tray icon or software version information.", "保存并重启": "Save & Restart", "保存设置": "Save settings", "保持当前路由范围,不跳到其他路由组。": "Stays within the current route and never jumps to another route group.", "保活换行丢弃": "Strip keepalive newlines", "保留原图和对话,由视觉模型直接回答本次请求。": "Keep the original images and conversation, and let a vision model answer this request directly.", "保留原图,选择视觉模型": "Keep the images and select a vision model", "保留图片中的文字、代码、数字、布局与状态。识读失败就停止,不删图后继续回答。": "Preserve text, code, numbers, layout and state in the images. Stop if reading fails; never remove images and continue answering.", "保留天数已刷新": "Retention days refreshed", "保留旧版配置兼容,当前不会自动连铸。每次点击「开始验证」只取得一枚令牌,失败或取消后停止。": "Kept for compatibility with older settings. Tokens are not minted automatically in batches. Each Start verification action obtains one token and stops on failure or cancellation.", "保留草稿并读取最新设置": "Keep draft and reload settings", "修改密码": "Change password", "修改密码需要输入当前密码;修改成功后,其他设备 / 浏览器上的登录会立即失效,当前这条会话保留。": "Changing the password requires the current one. After success, sign-ins on other devices and browsers are revoked immediately; this session stays active.", "值": "Value", "值与默认值相同的行不占覆盖(存的是「改过的键」,不是全量配置);值留空保存表示这个头不发送,删除改过的行表示回落默认值。改完立即生效,不用重启。": "Rows whose value equals the default do not count as overrides (only changed keys are stored, not the whole configuration); saving an empty value means this header is not sent, and deleting an edited row reverts it to the default. Changes take effect immediately, no restart needed.", "值(留空 = 不发送)": "Value (empty = not sent)", "停止并说明原因": "Stop and explain why", "像素": "px", "允许其他设备访问前,需要设置面板管理员账号与密码。注册完成后会继续开启流程并重启应用。": "Set a panel administrator username and password before allowing access from other devices. After registration, network access will be enabled and the app will restart.", "允许其他设备访问网关": "Allow other devices to access the gateway", "允许局域网内的设备访问网关": "Allow devices on the LAN to access the gateway", "允许无 Key 裸跑": "Allow running without keys", "允许浏览器里的页面跨来源调用网关(/v1/*)": "Allow pages in a browser to call the gateway cross-origin (/v1/*)", "允许的域名": "Allowed hostnames", "先发送原图,明确拒图后补救": "Send original images first; adapt only after an explicit rejection", "先把图片交给视觉模型读一遍,再让原模型结合读到的内容回答。": "The vision model reads the image first, then the original model answers using what was read.", "全局配置": "Global Configuration", "全部已配置": "All configured", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 中,加密密钥单独保存在库外。跨机器备份请使用「整库备份 / 恢复」,不要只复制数据库。更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "Accounts, event logs, request records, debug payloads, and settings are stored in agent2api.db. Encryption keys are stored separately. To move between machines, use Full database backup / restore rather than copying only the database. To change the directory, set AGENT2API_PROXY_HOME and restart.", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 这一个 SQLite 数据库里。备份时只需拷贝这个文件;更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "All data (accounts, event logs, request records, debug payloads, and settings) is kept in a single SQLite database, agent2api.db, in the configuration directory. To back up, just copy this file; to change its location, set the AGENT2API_PROXY_HOME environment variable and restart the app.", "全部角色": "All roles", "全部角色沿用原有行为,包含思考内容和工具参数;指定角色时只改消息正文,未选角色及思考内容、工具参数保持原样。": "All roles keeps the existing behavior, including reasoning content and tool arguments. Selected roles rewrites only message content; unselected roles, reasoning content and tool arguments remain unchanged.", "共享视觉模型已变更,请重新确认并保存,避免把图片交给未经确认的模型。": "The shared vision model changed. Confirm and save again before sending images to the new model.", "共用设置:{providers}": "Shared settings: {providers}", "关闭后不再提供网页管理面板,本机桌面程序仍可正常管理;已开启的 API 转发不受影响。": "The web management panel will no longer be served. You can still manage the gateway in the local desktop app, and API forwarding is not affected.", "关闭后手动上传 / 下载也会被拒绝。": "When off, manual upload/download is rejected too.", "关闭后网关只监听 127.0.0.1,其他设备将无法直接连接,网页管理面板也会一并关闭。已配置的网关 Key 与账号不受影响。": "The gateway will listen only on 127.0.0.1, preventing direct connections from other devices. The web management panel will also be disabled. Existing gateway keys and accounts are not affected.", "关闭后网关回到只监听 127.0.0.1,局域网内的设备将无法继续访问;已配置的网关 Key 与账号都不受影响。": "Once disabled, the gateway goes back to listening only on 127.0.0.1 and devices on the LAN can no longer reach it; configured gateway keys and accounts are unaffected.", "关闭后,管理界面不再从局域网提供,只有本机的桌面程序可以管理;已开启的 API 转发不受影响。": "Once disabled, the admin UI is no longer exposed over the LAN — only the desktop app on this machine can manage it; API forwarding that is already enabled is unaffected.", "关闭局域网访问": "Disable LAN Access", "关闭并重启": "Close & Restart", "关闭思考": "Disable reasoning", "关闭窗口即退出程序,后台转发随之中断": "Closing the window quits the app, and background forwarding stops with it", "关闭窗口时最小化到托盘": "Minimize to tray when the window is closed", "关闭窗口时程序不退出,转发继续在后台运行;退出请用托盘菜单": "Closing the window does not quit the app; forwarding keeps running in the background. To quit, use the tray menu", "关闭网络访问": "Disable network access", "兼容处理最长等待": "Longest wait for compatibility processing", "兼容处理最长等待(秒)": "Maximum image adaptation wait (seconds)", "内容拦截降级": "Content-block fallback", "内置识别、自定义规则与来源声明": "Built-in identification, custom rules, and origin declarations", "内置软件标识规则": "Built-in User-Agent rule", "内置默认": "Built-in defaults", "内置默认提示词": "the built-in default prompt", "再输入一次新密码": "Re-enter the new password", "凭据类请求头已脱敏。": "Credential request headers have been redacted.", "凭证只保存在这台手机上,按服务器分别存放": "Credentials are stored only on this phone, separately for each server", "出问题时把这一页截图,或点「复制全部信息」把文本贴进反馈,一般就能定位到大致原因。": "When something goes wrong, screenshot this page or use \"Copy all info\" and paste the text into your report — that is usually enough to narrow down the cause.", "分享图标在 Safari 底部工具栏中间": "The Share icon sits in the middle of Safari's bottom toolbar", "分组名": "Group name", "分组名,例如「常用」": "Group name, e.g. \"Favorites\"", "切换视觉模型": "Switch to a vision model", "切换视觉模型 · 视觉模型回答": "Switch models · Vision model answers", "切换视觉模型配置": "Vision model switching settings", "切换账号重试次数": "Account-Switch Retries", "刚刚从 models.dev 拉到的最新数据": "Fresh data just fetched from models.dev", "删除 {code}": "Delete {code}", "删除分组": "Delete group", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "Delete group \"{name}\"? Its {n} menus will move to \"{target}\" — nothing is lost.", "删除匹配内容": "Delete matched text", "删除后不再接受这个分类的来源声明,历史记录保留原来的名称和用量。": "Origin declarations for this category will no longer be accepted. Historical records retain their original names and usage.", "删除后,新请求不再使用这条规则;历史记录保持不变。": "New requests will no longer use this rule. Historical records stay unchanged.", "删除客户端分类": "Delete client category", "删除状态码 {code}": "Delete status code {code}", "删除空分组「{name}」?": "Delete the empty group \"{name}\"?", "删除识别规则": "Delete identification rule", "删除这个分组(组内菜单移到第一组)": "Delete this group (its menus move to the first group)", "刷新": "Refresh", "刷新失败:{message}": "Refresh failed: {message}", "前台运行": "Foreground process", "前缀": "Prefix", "剥离上游审核黑名单指纹(改写请求体里的模板句与表头)": "Strip upstream review blacklist fingerprints (rewrite template sentences and headers in request bodies)", "功能建议": "Feature Request", "加入备选": "Add as backup", "加密备份必填,旧 SQL 可留空": "Required for encrypted backups; leave blank for legacy SQL", "包含": "Contains", "包含日志与调试报文": "Include logs and debug payloads", "包含:{items}": "Includes: {items}", "匹配内容": "Match pattern", "匹配内容不能为空,且最多 {max} 个字符": "The match pattern is required and must not exceed {max} characters", "匹配内容不能为空,最长 256 个字符": "Enter a match pattern of up to 256 characters", "匹配原文含零宽空格,词表预览用 \\u{200b} 标出;编辑时保留该字符。": "The pattern contains a zero-width space, shown as \\u{200b} in the rule preview. Preserve this character when editing.", "匹配方式": "Match type", "区域(Region)": "Region", "华为云 OBS": "Huawei Cloud OBS", "单独指定视觉模型": "Choose a separate vision model", "单轮铸造上限": "Per-round mint cap", "占用大小": "Size on Disk", "历史未记录识别依据": "Identification evidence was not recorded", "原来的「全局方式 + 模型单独配置」已按相同意思自动填成下面的模型名单,可以照用也可以重新调整;改动一处之后就会按新形式存下来。": "Your previous \"global mode + per-model overrides\" has been filled into the model lists below with the same meaning. Keep it as is or adjust it; once you change anything it is stored in the new form.", "原模型不能直接看图": "The original model cannot read images directly", "原模型根据识读内容回答": "The original model answers using the image description", "去反馈": "Give Feedback", "去申请": "Submit a Request", "反馈与需求": "Feedback & Requests", "发现缺货时一轮最多铸几个(连铸之间固定隔 500 毫秒)。默认 1 个:SDK 同一实例连铸容易互相干扰。调大补货更快,但单轮连铸越多越容易触发上游风控。可填 1–5。": "How many tokens a single round may mint when a shortage is found (fixed 500 ms between back-to-back mints). Default 1: consecutive mints on one SDK instance tend to interfere with each other. A larger value restocks faster, but the more mints per round, the easier it trips the upstream risk control. 1–5 accepted.", "取消勾选后只备份业务数据(账号、配置与余额记录),文件显著变小;事件日志、请求统计与调试报文不会进备份文件。": "Unchecked, only business data is backed up (accounts, configuration, balance records) and the file shrinks considerably; event logs, request stats, and debug payloads are left out.", "变更网页管理面板": "Change Web Admin Panel", "只列单独配置过的家,其余沿用上面的全局配置": "Only providers configured individually are listed; the rest use the global configuration above", "只对「排队制」的上游生效:模型繁忙时上游不报错,只回一句「建议 N 秒后再来」,网关按建议时长等一会儿再发同一请求,等满次数仍排不上才把「排队中」作为错误返回(HTTP 503,文案会说明这不是登录态或额度问题)。等待发生在首个字节之前,吃的是「等待响应超时」那份预算 —— 两项设置一起决定一次请求最多卡多久;排队不会标记账号限额、也不会换账号(换谁都一样在排队)。保存后对下一个请求立即生效,不用重启。": "Applies only to queueing upstreams : when a model is busy the upstream raises no error, it just replies \"suggest waiting N seconds\"; the gateway waits for the suggested duration and resends the same request, and only when the wait count is exhausted is \"queueing\" returned as an error (HTTP 503, with text explaining that this is not a sign-in or quota problem). The wait happens before the first byte and comes out of the \"Response Headers Timeout\" budget — together the two settings determine how long one request can stall at most; queueing does not mark the account as rate-limited and does not switch accounts (everyone is queueing). Takes effect on the next request after saving, no restart needed.", "只影响读图那一步的思考深度;两块设置统一用这个选择。": "Only affects how deeply the image-reading step thinks; both blocks share this choice.", "只有已安装、启用并声明了设置项的提供商会出现在这里。可前往插件页检查安装与启用状态。": "Only providers with an installed, enabled plugin that declares settings appear here. Check installation and activation on the Plugins page.", "只沿用模型与思考等级,不借用视觉服务的内部 Key;仍受当前请求权限限制。": "Only the model and reasoning level are reused, not the vision service's internal Key. The current request's permissions still apply.", "只清掉这个浏览器存的 Key,不影响网关": "Only clears the key stored in this browser; the gateway is untouched", "只覆盖指定提供商的指定模型,其余跟随全局。": "Override only the selected model from the selected provider; all others follow the global settings.", "可跨提供商多选;只处理这些模型看不了的图片。": "Multi-select across providers; only images these models cannot read are handled.", "可跨提供商多选;这些模型的请求会整体改交视觉模型。": "Multi-select across providers; requests from these models are handed over to the vision model as a whole.", "可选。部分服务(如中国科技云数据胶囊)会按 User-Agent 校验凭据绑定的客户端类型,此时填写包含该类型名的字符串(例如 rclone/v1.67.0)。留空则维持默认。": "Optional. Some services (such as CSTCloud Data Capsule) validate the credential's bound client type via the User-Agent; if so, enter a string containing that type name (for example rclone/v1.67.0). Leave blank to keep the default.", "合计只累加当前筛选后可见的账号,筛选、搜索一改数字就跟着变。": "Totals only add up accounts visible under the current filter; changing the filter or search changes the number.", "合计按整组统计(默认):不受筛选、搜索影响,被筛掉与已禁用的账号也计入。": "Totals cover the whole group (default): filtering and search do not change them, and filtered-out or disabled accounts still count.", "同一会话、同一问题、相同权限范围内复用;追问新细节会重新识读。": "Reused within the same session, question and permission scope; asking about new details triggers a fresh read.", "同一会话在 5 分钟内尽量跟住同一个账号;停了 5 分钟再发就算新会话。多数场景用它 —— 多轮对话少换号,也不至于把账号焊死。": "The same session tries to stay on one account for 5 minutes; pausing longer than 5 minutes starts a new session. The choice for most cases — fewer account switches in multi-turn chats, without pinning an account.", "同一会话在 6 小时内跟住同一个账号;适合一坐几个小时的长会话,上游的上下文缓存能吃到更多。": "The same session stays on one account for up to 6 hours; suited to marathon sessions — the upstream context cache gets reused much more.", "同一提供商的同一模型不能重复配置": "The same provider and model cannot have duplicate overrides", "同一账号重试次数": "Same-Account Retries", "同时开放网页管理面板": "Also expose the web admin panel", "同步密码": "Sync password", "名单最多 {max} 个状态码": "At most {max} status codes", "后端没有返回版本信息": "The backend returned no version info", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "Contains the pinned \"Settings\" menu, so the group cannot be hidden as a whole (you can still hide its other menus individually)", "启动与托盘": "Startup & Tray", "启动时间": "Started at", "启用云同步": "Enable cloud sync", "启用图片兼容": "Enable image compatibility", "启用规则": "Enable rule", "启用规则:{name}": "Enable rule: {name}", "命中依据:{header} · {pattern}": "Matched evidence: {header} · {pattern}", "命中这些上游状态码的失败不在同一账号重发,直接换下一个账号继续试(换号占用「切换账号重试次数」,换满仍失败才把错误原样返回给客户端)。输入 100–599 的状态码后回车添加,点 × 或退格删除;默认 402(积分不足)。清空全部表示任何错误都照常重试。": "Failures matching these upstream status codes are not retried on the same account — the gateway switches to the next account and keeps trying (an account switch consumes an \"Account-Switch Retries\" slot; only when those are exhausted is the error returned to the client as-is). Type a status code from 100–599 and press Enter to add it; click × or press Backspace to delete one. Default: 402 (insufficient points). Clearing the list means any error is retried as usual.", "品牌 Logo": "Brand logo", "品牌设置": "Brand settings", "品牌设置已保存": "Brand settings saved", "品牌预览": "Brand preview", "哪些模型用这种方式": "Which models use this way", "固定": "Pinned", "图标经 Magpie 引入,未单独记录 Lobe Icons 的图标版本;以上版本仅用于核对许可。": "These icons were obtained through Magpie. The Lobe Icons asset revision was not recorded separately; the revision above was used only to verify the license.", "图片与相关对话将交给配置的视觉模型处理,可能增加等待时间和费用。请确认这些服务可以接收你的图片。": "Images and relevant conversation will be sent to the configured vision models, which may increase latency and cost. Confirm that these services may receive your images.", "图片兼容": "Image compatibility", "图片兼容当前是关闭的:下面两块设置照样能改、会被保留,但不会对任何请求生效。": "Image compatibility is currently off: the two blocks below can still be edited and are kept, but nothing here applies to any request.", "图片兼容设置已保存,仅对新请求生效。": "Image compatibility settings saved. They apply only to new requests.", "图片兼容设置读取失败": "Failed to load image compatibility settings", "图片压缩": "Image compression", "图片最长边超过这个值就等比缩小(只缩不放)。默认 2048,可填 256–8192 —— 多数视觉模型在这个量级已经够用,调小更省流量、但细节会丢。": "Images whose longest edge exceeds this value are scaled down proportionally (never enlarged). Default 2048, range 256-8192 — most vision models are fine at this size; a smaller value saves bandwidth but loses detail.", "图片能力未知时": "When image capability is unknown", "图片过大、格式错误或下载失败不会被当作模型不支持图片。": "Oversized, malformed or undownloadable images are not treated as unsupported by the model.", "在同一个账号上原地重发几次(不含首发;整条请求共用一份,用完后换来的账号只发一次就继续换)。可填 0–10,0 表示失败立即换号。": "How many times to resend in place on the same account (not counting the first send; the whole request shares one pool, and once it is used up, any account switched to gets only one send before switching continues). Accepts 0–10; 0 means switch accounts immediately on failure.", "在这里直接编辑提示词正文:保存后以这份文本为准(优先于上面的提示词文件),清空则回到文件 / 内置默认。改一个字不必再去编辑器里开文件。": "Edit the prompt text right here: after saving, this text takes precedence (over the prompt file above), and clearing it falls back to the file / built-in default. No need to open a file in an editor just to change one word.", "在途请求": "In-flight requests", "地址格式不对。填「IP 或域名:端口」,可带 http:// 或 https://,例如 192.168.1.23:3065": "Invalid address. Enter \"IP or domain:port\", optionally with http:// or https:// — e.g. 192.168.1.23:3065", "坚果云": "Jianguoyun (Nutstore)", "坚果云需使用「第三方应用密码」(账户信息 → 安全选项里生成),地址必须是 /dav/ 下的目录。": "Jianguoyun requires an app-specific password (generate it under Account info → Security), and the URL must point to a directory under /dav/.", "填「IP 或域名:端口」。协议可写 http:// 或 https://,不写默认 http;http 不写端口默认 3065,https 默认 443。地址里的 /m、/v1 会自动去掉。": "Enter \"IP or domain:port\". The scheme may be http:// or https:// (http is assumed if omitted). Without a port, http defaults to 3065 and https to 443. Any /m or /v1 in the address is stripped automatically.", "处理方式": "Processing mode", "处理示意": "How it works", "备份中…": "Backing up…", "备份包含账号凭证、网关 Key、GitHub 令牌与云同步凭据的恢复密钥,整个文件受备份密码保护。请分开保管文件与密码;忘记密码无法恢复。": "The backup contains recovery keys for account credentials, gateway keys, GitHub tokens, and cloud sync credentials. The whole file is protected by the backup password. Store the file and password separately; without the password, restoration is impossible.", "备份密码": "Backup password", "备份密码不能超过 1024 字节": "The backup password must not exceed 1024 bytes", "备份密码至少需要 12 位,建议使用较长且不重复的密码": "Use at least 12 characters; a long, unique password is recommended", "备份整库": "Back up database", "备份文件内含全部账号凭证、网关 API Key 与面板管理员凭据,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "The backup file contains every account credential, the gateway API keys, and the panel admin credentials — enough to log in directly. Keep it safe; do not share it or upload it anywhere public.", "备选模型": "Backup model", "复制全部信息": "Copy all info", "复制给客户端": "Copy for your client", "复用相同图片的识读结果": "Reuse readings of identical images", "外观": "Appearance", "外观 · 接入 · 关于": "Appearance · Access · About", "多个客户端标识冲突": "Conflicting client identifiers", "天": "days", "天数": "Days", "失败 {n} 个": "failed: {n}", "失败 {n} 个:{detail}": "Failed: {n}; {detail}", "失败后最多再换几个账号试(填 N = 最多换 N 个,首发那个不算)。换到同一家名下另一个账号、或换到另一家,都各算一次;换满仍失败就返回错误。可填 0–10,0 表示失败立即报错。": "How many more accounts to try on failure (N = switch to at most N accounts; the account that made the first attempt does not count). Switching to another account under the same provider and switching to a different provider each count as one; once the limit is reached and the request still fails, an error is returned. Accepts 0–10; 0 means report the error immediately on failure.", "存储桶(Bucket)": "Bucket", "存储概况已刷新": "Storage overview refreshed", "安全": "Security", "安装到主屏幕": "Add to Home Screen", "安装到桌面": "Install as app", "安装包形态": "Installer kind", "完全相同": "Exact match", "官方原文只有一句:声明自己是 ZCode。": "The official text is a single sentence: a declaration that it is ZCode.", "实际处理:": "What actually happens: ", "客户端 system 原样出站。": "The client's system prompt goes out as-is.", "客户端 system 原样出站(只靠指纹脱敏改写模板句)。": "The client's system prompt goes out as-is (only fingerprint masking rewrites template sentences).", "客户端专用请求头": "Client-specific header", "客户端名称": "Client name", "客户端名称不能为空,最长 80 个字符": "Enter a client name of up to 80 characters", "客户端名称重复或与内置名称冲突": "Client name is duplicated or conflicts with a built-in name", "客户端标识无效或重复": "Invalid or duplicate client identifier", "客户端识别": "Client identification", "客户端识别入口尚未就绪,请刷新页面后重试": "Client identification is not ready. Refresh the page and try again.", "客户端识别设置读取失败": "Failed to load client identification settings", "客户端(Claude Code / Codex 等 CLI)会在 system 提示词里注入几十句固定模板,上游按逐字匹配审核,命中就整单拦截(HTTP 400)。指纹脱敏能改写实测命中过的那几句,但换一个客户端版本就可能冒出新的。这里可以把 system 整段换成网关自己那份:①「透传」= 不动客户端 system(默认,行为与之前完全一致);②「替换」= 删掉客户端所有 system / developer 消息,换成网关的提示词(客户端项目规范随之消失);③「追加」= 在开头连续 system 块之后插入一条网关提示词,既有消息逐字不动(客户端规范与网关提示词并用)。那份提示词有两个来源:提示词文件(留空用内置默认),或直接在界面上编辑正文 —— 编辑过就以那份正文为准(优先于文件),清空则回到文件 / 内置默认。另外,透传 / 追加模式下撞了内容拦截(多半是指纹误报)时,网关会自动换一段最小中性提示词重试一次,并把「降级期」开到次日 00:00 —— 期间所有请求直接带中性提示词出门,不再先撞一次 400;这里能看见并提前解除它。上面几项是**默认值**:想给某个提供商单独配,用下面的「按提供商」加一行(带「网关自带」的家默认就列在那里)—— 不同的上游对这些内容的接受程度不一样。": "Clients (CLI tools such as Claude Code / Codex) inject dozens of fixed template sentences into the system prompt, and the upstream reviews them by word-for-word matching — a hit blocks the whole request (HTTP 400). Fingerprint masking can rewrite the sentences observed to be hit, but a different client version may introduce new ones. Here you can replace the whole system prompt with the gateway's own one: (1) \"Passthrough\" = leave the client's system prompt untouched (the default, identical to the previous behavior); (2) \"Replace\" = delete all client system / developer messages and substitute the gateway's prompt (the client's project instructions disappear with them); (3) \"Append\" = insert one gateway prompt after the leading consecutive system blocks, leaving existing messages word-for-word intact (the client's instructions and the gateway prompt are used together). That prompt has two sources: a prompt file (leave empty for the built-in default), or editing the text right in the UI — an edited text takes precedence (over the file), and clearing it goes back to the file / built-in default. Also, in Passthrough / Append mode, if content blocking is hit (usually a fingerprint false positive), the gateway automatically retries once with a minimal neutral prompt and extends the \"fallback period\" to 00:00 the next day — during that period every request goes out with the neutral prompt directly, with no 400 hit first; you can see it here and clear it early. The items above are **defaults**: to configure a single provider, add a row under \"Per-Provider Configuration\" below (providers with \"Gateway-Provided Prompt\" are listed there by default) — different upstreams tolerate these differently.", "家之间仍按优先级,只有同一家内部轮流用各账号 —— 想优先用某几家、又不愿把某一家的某个账号焊死时用它。": "Providers still follow priority; only accounts within the same provider take turns. For preferring a few providers without pinning any single account.", "家内轮询": "Per-provider rotation", "容器内更新": "In-container update", "密码、文件或密钥校验失败时不会替换主库;替换阶段失败会自动尝试还原,实际结果以上方错误说明为准。": "Password, file, or key validation failures leave the main database unchanged. If replacement fails, restoration is attempted automatically; the error above reports the actual outcome.", "密码加密 · 包含恢复密钥": "Password encrypted · Recovery keys included", "密码至少 8 位": "Password must be at least 8 characters", "对话里内嵌的 base64 大图(截图、照片)既撑大请求体,也拉高按像素折算的上游计费。开启后,网关在转发前把超过阈值的图等比缩到长边上限、重新存成 JPEG —— 只改发给上游的副本,请求日志里保存的仍是你发来的原图。同一张原图在多轮对话里重复出现时复用上一次的压缩结果,不会每轮重算。http 链接图片、GIF 动图、SVG 一律不动;压完反而更大的图也保留原图。只作用在对话场景,生图与图片编辑不受影响。默认开启;不想要的话把开关关掉即可。": "Large base64 images embedded in a conversation (screenshots, photos) both bloat the request body and raise upstream billing, which is computed from pixels. When enabled, the gateway scales images above the threshold down to the long-edge limit and re-encodes them as JPEG before forwarding — only the copy sent upstream is changed; the request log still stores the original you sent. When the same original image reappears across turns, the previous compressed result is reused instead of recomputed. Images referenced by http links, animated GIFs and SVGs are never touched; an image that would grow after re-encoding is kept as-is. Applies to chat only — image generation and editing are unaffected. On by default; turn the switch off if you do not want it.", "导入前会把本机的 account.key 改名备份(account.key.bak-时间戳),不会直接删除。": "The local account.key is renamed to a backup (account.key.bak-) before importing; it is never deleted.", "导入完成:{summary}": "Import complete: {summary}", "导入密钥失败:{message}": "Key import failed: {message}", "导入密钥并继续": "Import key and continue", "导入账号": "Import Accounts", "导出中…": "Exporting…", "导出会把全部账号与自定义提供商定义写入一个 JSON 文件,可以拷到另一台机器上导入后继续使用。导入采用合并策略:同提供商下按业务身份(UID / userId / apiKey 等)去重 —— 已存在的账号只更新凭证,保留本机原有的优先级顺序;新账号追加到转发顺序末尾,不会抢占当前正在使用的账号;自定义提供商定义按 id 合并,本机缺失时自动补建。": "Export writes all accounts and custom provider definitions to a JSON file that can be copied to another machine and imported for continued use. Import merges: within the same provider, accounts are deduplicated by business identity (UID / userId / apiKey, etc.) — existing accounts only get their credentials updated and keep this machine's existing priority order; new accounts are appended to the end of the forwarding order and never displace the account currently in use; custom provider definitions are merged by id and created automatically when missing locally.", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义": "The export file contains credentials such as accessToken / refreshToken / apiKey along with custom provider definitions", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "The export file contains credentials such as accessToken / refreshToken / apiKey along with custom provider definitions, and can be used to sign in directly. Keep it safe; do not share it or upload it to a public location.", "导出账号": "Export Accounts", "将数据库和恢复凭证所需的密钥一起保存为密码加密的 .a2ab 备份,可在 Windows、macOS 或 Linux 上恢复,无需手工复制密钥。恢复时整体替换账号、配置、日志与桌面设置,并使用目标机器的密钥重新加密凭证,不覆盖本机已有钥匙。可取消包含日志以减小文件;旧 .sql 备份仍可导入。恢复前自动保留安全备份,完成后需要重新登录管理面板。": "Save the database and required recovery keys in a password-encrypted .a2ab backup. Restore it on Windows, macOS, or Linux without manually copying keys. Restoration replaces accounts, configuration, logs, and desktop settings, and re-encrypts credentials with the destination keys without overwriting them. Exclude logs to reduce file size. Legacy .sql imports remain supported. A safety backup is created before replacement; sign in again afterward.", "尚未注册管理员。开启「网关 → 网络访问 → 允许其他设备访问网关」时会引导注册,也可以从登录页注册。": "No administrator is registered yet. Enabling Gateway → Network access → Allow other devices to access the gateway guides you through registration. You can also register from the sign-in page.", "尚未注册管理员:管理接口不需要登录。开启「允许局域网访问」时会引导注册,也可以从登录页注册。": "No administrator registered: the management API does not require sign-in. Enabling \"Allow LAN access\" walks you through registration; you can also register from the login page.", "尚未配置视觉分析模型": "No vision analysis model is configured", "局域网开放后,管理接口要求登录。请设置管理员账号与密码,注册完成会直接继续开启流程。": "Once LAN access is on, the admin API requires signing in. Set an admin account and password; registration finishes and the enablement flow continues automatically.", "局域网访问": "LAN Access", "工具用法与环境说明那一大段。": "The long block covering tool usage and environment notes.", "已为「{label}」单独配置提示词": "Prompt configured individually for \"{label}\"", "已作为独立应用运行": "Standalone app", "已使用本机密钥重新加密 {n} 项凭证,原有密钥未被覆盖。": "Re-encrypted {n} credentials with local keys. Existing keys were not overwritten.", "已保存 {count} / {limit} 条报文(超出后丢弃最旧的)。": "{count} / {limit} payloads saved (oldest discarded when the limit is exceeded).", "已保存的值不符合当前插件规则,请修改或恢复默认值。": "The saved value does not meet the current plugin rules. Edit it or restore the default.", "已保存,留空则不修改": "Saved; leave blank to keep unchanged", "已保存,留空沿用": "Saved; leave blank to keep", "已关闭": "Disabled", "已关闭 models.dev 联网刷新": "Online refresh for models.dev turned off", "已关闭。{note}": "Disabled. {note}", "已关闭「{label}」的网关自带提示词:能否通过上游校验取决于上游当前口径": "Turned off the gateway-provided prompt for \"{label}\": whether it passes upstream validation depends on the upstream's current criteria", "已关闭会话图片压缩": "Image compression disabled", "已关闭出站指纹脱敏": "Fingerprint masking disabled", "已关闭开发者角色兼容": "Developer role compatibility disabled", "已关闭第三方模型回答完自动折叠过程": "Collapse third-party model work after the answer disabled", "已关闭网关跨域访问": "Gateway CORS disabled", "已关闭:不额外补阶段标记,由客户端决定过程展示。": "Disabled: no extra phase markers; the client controls how work is displayed.", "已删除分组「{name}」": "Deleted group \"{name}\"", "已取消「{label}」的单独配置": "Individual configuration removed for \"{label}\"", "已取消安装": "Installation cancelled", "已取消导入": "Import canceled", "已取消导出": "Export canceled", "已取消恢复": "Restore canceled", "已启用 {count} 条规则,应用于{scope}。": "{count} rules enabled, applied to {scope}.", "已启用登录": "Sign-in enabled", "已复制全部版本信息": "Copied all version info", "已应用": "Applied", "已开启": "Enabled", "已开启:为正常完成的 Codex 回答补阶段标记。": "Enabled: add phase markers to normally completed Codex replies.", "已开启:其他设备把 API 地址指向 {url}{panel}。": "Enabled: on other devices, point the API address to {url}{panel}.", "已开启:监听 0.0.0.0,允许其他设备访问。": "Enabled: listening on 0.0.0.0 to allow access from other devices.", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "Restored the default groups: Overview / Forwarding / Diagnostics / System", "已截断": "Truncated", "已指定出口": "Pinned egress", "已接管": "Managed", "已改回内置默认提示词": "Reverted to the built-in default prompt", "已新建分组「{name}」,点组头的 + 把菜单移进来": "Created group \"{name}\" — use + on its header to move menus in", "已清掉「{label}」界面编辑的正文": "Cleared the UI-edited text for \"{label}\"", "已清掉界面编辑的提示词(回落文件 / 内置默认)": "Cleared the UI-edited prompt (falls back to the file / built-in default)", "已清除本机保存的 API Key": "Removed the API key stored in this browser", "已生效": "In Effect", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。": "Switched automatically to a minimal neutral prompt (an upstream content block — most likely a system-prompt fingerprint false positive); lifts automatically at {until}.", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "Automatically switched to a minimal neutral prompt (upstream content blocking was hit, most likely a false positive on system fingerprints); it clears automatically at {until}. During this period this mode's own prompt is not sent; once you have fixed the prompt you can clear it immediately.", "已自定义": "Customized", "已运行": "Uptime", "已退出登录": "Signed out", "已隐藏": "Hidden", "巴西葡萄牙语": "Brazilian Portuguese", "希望接入新的提供商或模型": "A new provider or model you would like supported", "库中 schema": "Schema in database", "库主文件的大小(不含运行期间的 WAL 临时文件,退出时已自动并回)。": "Size of the database's main file (excluding WAL temp files created while running, which are merged back in automatically on exit).", "库存目标": "Stock target", "应用提供商": "Apply to providers", "应用版本:{version}": "App version: {version}", "应用状态": "App status", "应用窗口": "App window", "建立上游 TCP/TLS 连接或代理隧道的最大等待时间(秒),默认 30 秒,范围 1~3600。": "Maximum time to establish the upstream TCP/TLS connection or proxy tunnel (seconds). Default 30 seconds, range 1–3600.", "开发构建": "Debug build", "开发者角色兼容": "Developer role compat", "开发者角色兼容设置已刷新": "Developer role compatibility setting refreshed", "开启前需要注册面板管理员,已注册会跳过此步骤。管理接口需要管理员会话或网关 Key;API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。": "A panel administrator must be registered before enabling this; existing administrators skip this step. Management endpoints require an admin session or gateway key. API calls require an enabled gateway key; a default key is created automatically if none is available.", "开启后新发生的请求才会被记录(已经过去的请求补不回来)。报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "Only requests that happen after turning this on are recorded (past ones can't be backfilled). Payloads live in the local database and only the most recent 500 are kept (the oldest are dropped beyond that); the count shows under \"Data → Data storage\" on the left as \"Debug payloads\".", "开启后新发生的请求才会被记录(已经过去的请求补不回来),请求日志的「预览对话」也随之开始保存原始正文。上游报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "Only requests that occur after this is enabled are recorded (past requests cannot be recovered), and the \"Conversation preview\" in request logs also starts saving raw bodies. Upstream payloads are stored in the local database, keeping only the most recent 500 (the oldest are discarded when the limit is exceeded); the count is shown under \"Data → Data Storage\" → \"Debug Payloads\".", "开启后监听所有 IPv4 网卡(0.0.0.0),并不局限于局域网,也不会自动开放到公网;实际访问范围取决于网络与防火墙设置。修改后需要重启应用。": "Enabling this listens on all IPv4 interfaces (0.0.0.0), not just the LAN, but does not automatically expose the gateway to the internet. Actual access depends on your network and firewall settings. Changes require an app restart.", "开启后网关将监听所有 IPv4 网卡(0.0.0.0),访问范围不再限于本机,也不局限于局域网。是否能从公网访问取决于网络与防火墙设置。": "The gateway will listen on all IPv4 interfaces (0.0.0.0). Access is no longer limited to this machine or to the LAN. Public internet access depends on your network and firewall settings.", "开启后网关将监听所有网卡,同一局域网内的设备即可把 API 地址指向本机 IP 一起使用;管理接口从此要求管理员会话或网关 Key,转发接口在没有一把启用的 Key 时也会拒绝服务(届时会自动创建一把名为「默认」的 Key)。": "Once enabled, the gateway listens on all network interfaces, and devices on the same LAN can point the API address at this machine's IP to share it; the admin API then requires an admin session or a gateway key, and the forwarding API refuses service when no key is enabled (a key named \"Default\" is created automatically at that point).", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 套餐池(Start Plan)」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "When enabled, closing the window does not just hide it — the entire UI window is destroyed: the six resident WebView2 processes (about 200 MB of memory) exit, while gateway forwarding, scheduled check-ins and balance queries keep running in the background process, unaffected; click the tray icon to reopen the UI when needed (WebView cold start takes about 1 second). Note: while the UI is destroyed, CAPTCHA tokens for the ZCode \"Plan pool (Start Plan)\" channel are minted by the UI and cannot be replenished — requests on that channel land in the request log as 503 (with the reason), and reopening the UI restores minting automatically. This switch only matters when \"Minimize to tray on close\" is enabled; minimizing the window is unaffected.", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 活动套餐」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "Once enabled, closing the window does not merely hide it — the UI window is destroyed entirely: WebView2's six resident processes (about 200MB of memory) exit with it, while gateway forwarding, scheduled check-ins, and balance queries keep running in the background process, unaffected; to get the UI back, click the tray icon (a cold WebView start takes about 1 second). Note: while the UI is destroyed, the verification-code tokens for the \"ZCode activity plan\" channel are minted by the UI and cannot be replenished — requests going through that channel land in the request logs as 503 (with the reason stated), and reopening the UI restores them automatically. This switch only matters when \"Minimize to tray when the window is closed\" is on; minimizing the window is unaffected.", "开启后,关闭窗口会销毁界面并释放 WebView 进程,网关转发、定时签到、余额查询仍在后台继续。ZCode 模型请求免验证时不受影响;上游要求人机验证时,需要重新打开界面,在账号的「套餐明细」中主动完成验证。此开关只在「关闭窗口时最小化到托盘」开启时有意义。": "When enabled, closing the window destroys the interface and releases WebView processes. Forwarding, scheduled check-ins and balance queries continue in the background. ZCode requests exempt from verification are unaffected. If verification is required, reopen the interface and complete it in the account’s Plan details. This setting applies only when closing minimizes the app to the tray.", "开启后,新发生的请求会保存上游调试报文与下游正文,历史请求无法补录。上游调试报文只保留最近 500 条;两侧条数可在「数据 → 数据存储」查看。关闭开关不会删除已保存的报文,可在请求日志中选择「仅清空报文原文」一起清理。": "New requests save upstream debug payloads and downstream bodies after this is enabled; past requests cannot be backfilled. Only the most recent 500 upstream debug payloads are kept. Counts for both sides are shown under Data → Data storage. Turning this off does not delete saved payloads; choose Clear raw payloads only in request logs to clear both sides together.", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。": "Once enabled, the sign-in page completes verification in the browser in the background (imperceptible to a real person), while every scripted attempt must first solve a challenge — brute-forcing and mass registration become significantly more expensive. This only affects panel sign-in / registration, not the API keys used by API clients.", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。桌面端与网页端各自独立:桌面端主要服务本机与局域网,网页端(Docker / 服务端)直接暴露在网络上的登录页风险更高,建议保持开启。": "When on, the login page solves the challenge in the background (invisible to humans) while every scripted attempt must compute one first — brute force and account squatting become far more expensive. It only affects panel sign-in / registration, not API keys used by clients. Desktop and web are independent: the desktop page mostly serves this machine and the LAN, while the web page (Docker / server) is exposed to the network and benefits more from staying on.", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "When on, the gateway stores every forward's **request to the upstream** (headers + body) and the **upstream response** (status code + headers + body) locally in full, for the \"Details\" view on the request logs page. Credential fields in request headers — Authorization, Cookie, API Key, and the like — are always replaced with [redacted] and never hit the disk in plain text; request and response bodies are stored as-is (they may contain your conversations). Only the most recent 500 payloads are kept; the oldest are dropped beyond that. This is a temporary troubleshooting switch — keep it off when you don't need it.", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看;请求日志详情的「预览对话」也依赖本开关 —— 它保存的是客户端发来的请求体与网关下发的响应体(两侧各截断到 128 KiB),不开这个开关时预览对话没有数据可看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。上游报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "Once enabled, the gateway saves every forward's **request to the upstream** (request headers + request body) and **the upstream's response** (status code + response headers + response body) in full locally, for viewing under \"Details\" on the request logs page; the \"Conversation preview\" in request details also depends on this switch — it saves the client's request body and the gateway's response body (each truncated to 128 KiB), and with the switch off there is no data to preview. Credential fields in request headers such as Authorization, Cookie, and API Key are always replaced with [redacted] and never written to disk in plain text; request and response bodies are saved as-is (they may contain your conversation content). Only the most recent 500 upstream payloads are kept; older ones are discarded. This is a temporary switch for troubleshooting — turn it off when you no longer need it.", "开启后,能连接到网关的设备可通过浏览器访问网页管理面板,需使用管理员账号登录。访问范围与网关相同,并不局限于局域网。": "Devices that can reach the gateway will be able to open the web management panel in a browser and sign in with an administrator account. Its access scope is the same as the gateway's and is not limited to the LAN.", "开启后,调用方可以用专用请求头声明已登记的客户端名称。这不是身份认证,只用于日志和统计,不会获得额外权限。": "When enabled, callers can declare a registered client name using the dedicated header. This is not authentication: it only affects logs and statistics and grants no additional permissions.", "开启局域网访问": "Enable LAN Access", "开启来源声明": "Enable origin declarations", "开启网络访问": "Enable network access", "开放后,局域网内其他设备的浏览器打开本机 IP 即可进入管理面板(需管理员账号登录)。": "Once enabled, other devices on the LAN can open this machine's IP in a browser to reach the admin panel (signing in with an admin account is required).", "开机自动启动": "Launch at startup", "开源许可": "Open-source license", "开(最多 {n} 轮)": "On (up to {n} rounds)", "归属客户端": "Assigned client", "当前三段都是官方原文。": "All three blocks are currently the official text.", "当前不可用": "Currently unavailable", "当前后端不支持词表编辑与提供商范围,请更新后端后重试。": "This backend does not support editable rules or provider scope. Update the backend and try again.", "当前固定为浅色模式,不随系统变化。": "Currently fixed to Light mode; it does not follow the system.", "当前固定为深色模式,不随系统变化。": "Currently fixed to Dark mode; it does not follow the system.", "当前密码": "Current password", "当前已改过:{edited}。": "Edited so far: {edited}.", "当前形态": "Running as", "当前按 100% 显示(默认比例)。": "Currently displayed at 100% (the default).", "当前按 k / M 缩写显示(如 1.20M / 8.4k)。": "Currently shown with k / M abbreviations (e.g. 1.20M / 8.4k).", "当前按 {n}% 显示。": "Currently displayed at {n}%.", "当前按「万 / 亿」式本地量级词显示(如 1.2亿 / 8400万)。": "Currently shown with 万 / 亿-style local magnitude words (e.g. 1.2亿 / 8400万).", "当前是透传模式:存下来也不会发出,切成「替换 / 追加」之后才生效。": "Currently in Passthrough mode: saving it will not send it; it takes effect only after switching to \"Replace / Append\".", "当前显示为「1.20M / 8.4k / 1.2B」这类英文缩写。": "Currently shown with k / M / B abbreviations (e.g. 1.20M / 8.4k / 1.2B).", "当前显示为「1.2亿 / 8400万」这类中文量级。": "Currently shown as \"1.2亿 / 8400万\"-style Chinese magnitudes.", "当前样本结果:{name}": "Current sample result: {name}", "当前正在使用": "Currently in use", "当前浏览器以管理员身份登录着本面板。「退出登录」会撤销这台设备的登录会话(30 天内的自动续期一并失效),需要重新输入账号密码;其他已登录的设备不受影响。": "This browser is currently signed in to the panel as an administrator. \"Sign Out\" revokes this device's session (automatic renewals within 30 days are voided too) and the account and password must be entered again; other signed-in devices are unaffected.", "当前版本不支持品牌设置": "This version does not support brand settings", "当前环境不支持局域网访问设置": "This environment does not support LAN access settings", "当前环境不支持整库备份": "Full-database backup is not available in this environment", "当前环境不支持整库备份(仅桌面端可用)": "Full-database backup is not available here (desktop only)", "当前环境不支持整库恢复": "Full-database restore is not available in this environment", "当前环境不支持整库恢复(仅桌面端可用)": "Full-database restore is not available here (desktop only)", "当前环境不支持网络访问设置": "Network access settings are not supported in this environment", "当前环境不支持读取版本信息(桥接方法缺失)": "This environment cannot read version info (bridge method missing)", "当前生效值:{value}": "Effective value: {value}", "当前生效的正文来自{source}{file}。保存后这一份会盖过提示词文件与内置默认{note}。": "The active text comes from {source}{file}. Once saved, this copy overrides the prompt file and the built-in default{note}.", "当前界面": "Current interface", "当前管理员:{name}": "Signed in as: {name}", "当前设置已保存": "Current settings are saved", "当前跟随操作系统的深浅色设置,系统切换时界面会自动跟上。": "Currently following the operating system's light / dark setting; the UI follows along automatically when the system switches.", "当前路由内的可用视觉模型": "Available vision models in the current route", "待迁移旧数据": "Legacy data pending migration", "待配置": "Not configured", "忘记密码时无法在界面里找回:需要停掉程序后,从数据库删除管理员记录(kv 表的 panelAdmin 键),重启后按首次使用重新注册。具体命令与各形态的库文件路径见 docs 目录下的「重置管理员」文档。": "If you forget the password it cannot be recovered in the UI: stop the program, delete the administrator record from the database (the panelAdmin key in the kv table), then restart and register again as on first use. Commands and the database path for each deployment form are in the \"Reset administrator\" document under docs.", "思考等级、图片能力未知、等待上限": "Reasoning level, unknown image capability, wait limit", "恢复中…": "Restoring…", "恢复失败:{message}": "Restore failed: {message}", "恢复官方原文": "Restore Official Text", "恢复插件默认值": "Restore plugin default", "恢复整库": "Restore database", "恢复整库备份": "Restore full backup", "恢复默认": "Restore Defaults", "恢复默认 Logo": "Restore default logo", "恢复默认侧边栏": "Restore default sidebar", "恢复默认品牌": "Restore default brand", "恢复默认词表": "Restore default rules", "想回到原来那份,把这里清空再保存即可(不会删掉你配的文件路径)。": "To go back to the previous one, clear this and save (the file path you configured is not deleted).", "想要的新功能或改进想法": "A new feature or improvement you would like to see", "所有未单独配置的提供商都用这一份": "Used by every provider that is not configured individually", "所有菜单都已在这一组": "Every menu is already in this group", "手机端可管理所连接网关的账号、签到与插件,并使用提供商声明的动态登录入口;其余既有添加入口、编辑凭证和改写客户端配置仍需桌面面板。": "The mobile app manages accounts, check-in and plugins on the connected gateway and supports sign-in through providers’ declared dynamic methods. Other existing add-account entry points, credential editing and client configuration changes still require the desktop panel.", "托管网页界面": "Serves web UI", "把地址里的 your-server 与 USERNAME 换成你自己的;目录不存在时会自动创建。": "Replace your-server and USERNAME in the URL with your own; the directory is created automatically if missing.", "把整份数据库(账号、网关配置、事件日志、请求统计、调试报文与桌面设置)导出成一个 SQL 文件,恢复时整体替换本机全部数据 —— 与上面「账号导入 / 导出」的逐条合并是两种语义:恢复会连配置、日志与当前启用状态一起换成备份那台机器的状态。导出默认包含日志与调试报文(文件可能很大),不需要时可以取消勾选只备业务数据。恢复前会自动把当前数据备份到配置目录的 backups/ 下,恢复后需要重新登录管理面板。": "Exports the entire database (accounts, gateway config, event logs, request stats, debug payloads, desktop settings) into one SQL file; restoring wholesale-replaces all local data. This is a different semantic from the \"Account import / export\" above, which merges item by item: a restore swaps config, logs, and enabled states to whatever the backup machine had. The export includes logs and debug payloads by default (the file can be large); uncheck to back up business data only. Before a restore, the current data is automatically backed up to backups/ under the config directory, and you will need to log in to the panel again afterwards.", "把整次请求交给视觉模型,由它直接回答,不再回到原模型。": "The whole request goes to the vision model, which answers directly instead of the original model.", "把菜单移入 {name}": "Move a menu into {name}", "把菜单移入「{name}」": "Move a menu into \"{name}\"", "把账号、网关配置、自定义提供商、Agent 配置、代理池 / 订阅、签到与余额记录同步到 WebDAV 或 S3 兼容存储,换台机器后一键取回。事件日志、请求明细、调试报文与面板登录态不在同步范围内(它们是本机的运行痕迹)。上传的账号凭证仍是加密形态,解密用的账号密钥由「同步密码」单独加密后一并上传 —— 同步密码不会保存到云端,换机下载时需要重新输入。": "Sync accounts, gateway configuration, custom providers, Agent profiles, proxy pool / subscriptions, and check-in and balance records to WebDAV or S3-compatible storage, then pull them back on another machine in one click. Event logs, request details, debug payloads and panel login state are out of scope (they are this machine's runtime traces). Uploaded account credentials stay encrypted; the account key that decrypts them is itself encrypted with the sync password and uploaded alongside — the sync password is never stored in the cloud, so you must re-enter it when restoring on another machine.", "把路径里的主目录显示成 ~,截图分享时不暴露用户名": "Shows the home directory in paths as ~ so screenshots do not reveal your username", "把路径里的主目录(如 C:\\Users\\你的用户名)显示成 ~,截图分享时不暴露用户名。只影响本页显示与复制,不改任何文件。": "Shows the home directory in paths (e.g. C:\\Users\\your-name) as ~ so screenshots do not reveal your username. Only affects this page and its copied text; no files are changed.", "报表天数": "Report Days", "报表页的热力图与按天趋势,默认 99999 天(近似全量保留),可填 1–99999 天。": "The heatmap and daily trends on the Reports page. Defaults to 99999 days (about 274 years — kept in full for practical purposes); range 1–99999 days.", "拖动分组 {name}": "Drag group {name}", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "Drag the ⠿ handle to reorder (menus can move across groups); use the switches to show or hide; click a group name to rename it; the + on a group header moves another menu into it; the eye button hides a whole group. Changes apply instantly and are remembered — the sidebar on the left is the result. Keyboard: focus a handle and press Alt+↑ / ↓.", "拖动菜单 {name}": "Drag menu {name}", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "Drag to reorder groups (Alt+↑ / ↓ also works)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "Drag to reorder, across groups too (Alt+↑ / ↓ also works)", "指定备选仍受当前请求权限和路由范围限制,路由组请求不会跳到组外。不会转为辅助识图继续。": "Designated fallbacks remain subject to the current permissions and route scope. Route-group requests never leave the group. This mode never falls back to assisted image reading.", "指定提供商": "Selected providers", "指定角色": "Selected roles", "指定错误码直接换号": "Switch Accounts on Specified Error Codes", "指纹脱敏": "Fingerprint sanitizing", "指纹脱敏会在转发前按词表顺序改写请求消息中的文本,包括对话内容、思考内容和工具调用参数。默认词表包含客户端模板句与计费表头的精确替换、正则删除规则,可以新增、编辑、删除、启停和调整顺序;替换内容留空表示删除匹配内容。默认应用全部提供商,也可指定多家。改动只作用于发给上游的副本,响应内容不变。编辑后点击「保存设置」,下一次请求生效;清空词表表示不做任何指纹改写,恢复默认只重置词表。": "Before forwarding, fingerprint masking applies rules in list order to message text, including conversation content, reasoning content and tool-call arguments. The default rules contain exact replacements and regular-expression deletions for client templates and billing headers. You can add, edit, delete, enable, disable and reorder rules; an empty replacement deletes the matched text. All providers are selected by default, or you can select specific providers. Only the outbound copy is modified; responses are unchanged. Click Save settings to apply changes to the next request. An empty rule list performs no fingerprint rewriting, and restoring defaults resets only the rules.", "指纹脱敏设置仅本次运行生效,写入数据库失败,请检查配置目录": "Fingerprint masking settings apply only to this run. Database writing failed; check the configuration directory.", "指纹脱敏设置已刷新": "Fingerprint masking settings refreshed", "按下面两块设置处理图片;关闭后设置全部保留。": "Images are handled by the two blocks below; turning this off keeps all of the settings.", "按原文精确匹配,区分大小写;不会自动去掉首尾空白。": "Matches the exact text, case-sensitively. Leading and trailing whitespace is preserved.", "按天聚合保留天数": "Daily aggregate retention (days)", "按指定备选顺序尝试": "Try designated fallbacks in order", "按提供商查看和调整专属选项": "View and adjust provider-specific options", "按提供商筛选设置": "Filter settings by provider", "按提供商管理专属选项,作用于当前网关中该提供商的所有账号。": "Manage provider-specific options. Changes apply to all accounts for that provider on the current gateway.", "按提供商配置": "Per-Provider Configuration", "按每条请求的软件标识识别客户端,不依赖 API Key。规则修改只影响新请求,内置规则随软件更新,自定义规则参与备份与云同步。": "Identify each request by its software identifiers, independently of API keys. Rule changes affect new requests only. Built-in rules update with the app; custom rules are included in backups and cloud sync.", "换一台服务器": "Switch server", "排队等待": "Queueing", "排队等待次数": "Queue Wait Count", "排队等待秒数": "Queue Wait Seconds", "排队等待设置已刷新": "Queueing settings refreshed", "接入": "Access", "接受调用方来源声明": "Accept caller origin declarations", "接管回答的模型": "Model that takes over the answer", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "Choose which menus the sidebar shows, in what order, and how they are grouped. Hiding only affects navigation — it does not revoke access, and hidden pages can still be opened by URL.", "控制报表与请求日志里 Token 读数的写法:开启后按「万 / 亿」式的本地量级词显示(简体为万 / 亿,繁体为萬 / 億,日文为万 / 億,韩文为만 / 억),关闭则用 k / M 缩写(与上游文档、接口字段的写法一致)。英文 / 葡语的本地量级词就是 k / M,这项对它们没有区别。只影响显示口径,不改变任何统计与存储的数值。": "Controls how Token counts are written in reports and request logs: when on, values are shown with 万 / 亿-style local magnitude words (万 / 亿 in Simplified Chinese, 萬 / 億 in Traditional Chinese, 万 / 億 in Japanese, 만 / 억 in Korean); when off, k / M abbreviations are used (matching how upstream docs and API fields write them). For English / Portuguese the local magnitude words are k / M, so this makes no difference to them. This only affects how values are displayed; no statistics or stored numbers change.", "控制报表与请求日志里 Token 读数的写法:开启后按中文量级显示(1.2亿 / 8400万),关闭则用 k / M / B 缩写(与上游文档、接口字段的写法一致)。这只影响显示口径,不改变任何统计与存储的数值。": "Controls how token counts read in reports and request logs: on shows Chinese magnitudes (1.2亿 / 8400万), off uses k / M / B abbreviations (consistent with upstream docs and API fields). This only changes the display; no statistics or stored numbers are affected.", "控制界面的深浅色,与左侧边栏底部的三个主题按钮是同一个设置(改哪一处,另一处立刻跟上)。「跟随系统」会随操作系统当前的浅色 / 深色自动切换,并在系统主题变化时即时跟上;选「浅色」或「深色」则把界面固定在该模式,不再随系统变化。窗口标题栏的深浅色会一并同步,不会出现深色界面配一条浅色标题栏的情况。": "Controls the UI's light / dark colors; it is the same setting as the three theme buttons at the bottom of the left sidebar (change either one and the other follows immediately). \"System\" switches automatically with the operating system's current light / dark setting and follows changes as they happen; choosing \"Light\" or \"Dark\" pins the UI to that mode regardless of the system. The window title bar's light / dark color stays in sync too, so you never end up with a dark UI under a light title bar.", "提供商与模型": "Provider and model", "提供商专属设置": "Provider-specific settings", "提供商当前不可用,未保存的修改已保留;恢复插件后可继续编辑。": "The provider is unavailable. Unsaved edits are kept; restore the plugin to continue editing.", "提供商设置已保存": "Provider settings saved", "提供商设置返回格式无效,请刷新后重试": "The provider settings response is invalid. Refresh and try again.", "提建议": "Make a Suggestion", "提示词文件": "Prompt File", "提示词文件已更新": "Prompt file updated", "提示词正文": "Prompt Text", "提示词正文已更新": "Prompt text updated", "插件或设置已变化,请放弃修改并刷新后重新编辑。": "The plugin or settings changed. Discard your edits and refresh before editing again.", "操作系统": "Operating system", "支持 .a2ab 加密备份和旧 .sql 文件;旧 SQL 不包含恢复密钥,跨机器导入仍需原机密钥。": "Supports encrypted .a2ab backups and legacy .sql files. Legacy SQL does not include recovery keys, so another machine still needs the original keys.", "支持 PNG、JPG、WebP,最大 2 MiB、4096 × 4096 像素;自动缩小至 512 像素以内,建议使用正方形图片。": "Supports PNG, JPG and WebP up to 2 MiB and 4096 × 4096 pixels. Images are resized to fit within 512 pixels. Square images are recommended.", "改动仍保存在本机,修复网络或凭据后下一次改动会自动重试,也可以手动点「上传到云端」。": "Your changes are still saved locally. After fixing the network or credentials, the next change retries automatically, or click \"Upload to cloud\" manually.", "改动仍保存在本机,系统会延长等待并自动重试;修复网络或凭据后,也可以手动点「上传到云端」。": "Your changes remain saved locally. The system will retry automatically with a longer delay. After fixing the network or credentials, you can also select \"Upload to cloud\" manually.", "改完立即生效,不用重启(下一个请求就用新模式)。降级是自动的临时状态,解除后本模式自己的提示词立刻恢复。": "Takes effect immediately after the change, no restart needed (the next request uses the new mode). The fallback is an automatic temporary state; once cleared, this mode's own prompt is restored immediately.", "放大或缩小整个界面(文字与控件一起变),效果与浏览器 Ctrl +/- 相同:共 11 档,立即生效并记住。": "Zoom the whole interface in or out (text and controls scale together), equivalent to Ctrl +/- in a browser: 11 steps, applied immediately and remembered.", "放弃修改并刷新": "Discard edits and refresh", "数据": "Data", "数据保留": "Data Retention", "数据保留设置已刷新": "Data retention settings refreshed", "数据存储": "Data Storage", "数据库 schema": "Database schema", "数据库不可用": "Database unavailable", "数据库与恢复密钥一起加密保存。密码不会保存在应用或备份中,忘记后无法恢复,请妥善保管。": "The database and recovery keys are encrypted together. The password is not stored in the application or backup. Keep it safe: without it, restoration is impossible.", "数据库主文件与 WAL 文件的总占用,与请求日志清理弹窗采用同一口径;清理后可压缩数据库回收空闲空间。": "Total size of the database main file and WAL file, using the same calculation as the request cleanup dialog. After clearing data, vacuum the database to reclaim unused space.", "数据库文件": "Database file", "数据目录": "Data directory", "数据统一保存在配置目录下的 agent2api.db;如需更换位置,请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "Data is kept in agent2api.db in the configuration directory; to change the location, set the AGENT2API_PROXY_HOME environment variable and restart the app.", "整体替换": "wholesale-replaced", "整库备份 / 恢复": "Full-database backup / restore", "整次请求交给 {model} 直接回答,不再回到原模型。": "The whole request goes to {model}, which answers directly instead of the original model.", "新分组名": "New group name", "新增 {added} 个、更新 {updated} 个{suffix}{note}": "{added} added, {updated} updated{suffix}{note}", "新增脱敏规则": "Add masking rule", "新增规则": "Add rule", "新安装和升级后默认关闭。先配置再开启,关闭后保留配置。": "Off by default for new installations and upgrades. Configure before enabling; disabling keeps your settings.", "新密码": "New password", "新密码不能与当前密码相同": "New password must differ from the current one", "新密码至少 8 位": "Password must be at least 8 characters", "新建分组": "New group", "新建客户端分类": "New client category", "无效或重复的标识请求头:{headers}": "Invalid or duplicate identity headers: {headers}", "无法读取品牌设置": "Could not read brand settings", "无法读取图片,请重新选择": "Could not read the image. Select it again.", "日志与请求日志同时受保留天数和数量上限限制。日志默认 30 天、10000 条,各级别按比例保留;调试详情最多保留 3 天。请求日志默认 99999 天、1000000 条(100 万),超出后从最旧的记录开始清理,并同步删除对应原始正文。按天聚合默认 99999 天,只按天数保留,不受请求日志数量清理影响。天数可填 1–99999,数量可填 1–100000000。调小任一设置并确认后立即清理,且不可恢复。": "Logs and request logs are limited by both retention days and record count. Logs default to 30 days and 10,000 records, with capacity allocated proportionally by level; debug details are kept for at most 3 days. Request logs default to 99999 days and 1,000,000 records; excess records are removed oldest first together with their raw bodies. Daily aggregates default to 99999 days and are limited only by days; request log count cleanup does not affect them. Days accept 1–99999 and counts accept 1–100000000. Lowering any setting and confirming immediately removes excess data, which cannot be recovered.", "日志保留数量上限": "Log record limit", "日志文件": "Log file", "日语": "Japanese", "显示 {name}": "Show {name}", "显示分组 {name}": "Show group {name}", "显示名称": "Display name", "显示名称最多 64 个字符": "The display name can contain up to 64 characters", "显示模式": "Theme", "显示这一组": "Show this group", "暂无可编辑的提供商设置": "No editable provider settings", "暂无自定义规则,正在使用内置识别。也可以从请求详情直接添加规则。": "No custom rules; built-in identification is active. You can also add a rule from request details.", "暂未获取到本机访问地址,请使用其他设备能连接到的本机 IP 与网关端口。": "The local access address is not available yet. Use this machine's IP and gateway port that the other device can reach.", "更新": "Update", "更新出网线路": "Update egress route", "更新通道": "Update channel", "替换": "Replace", "替换 = 客户端 system / developer 消息全部删掉,换成网关的提示词;追加 = 保留客户端内容,只在开头 system 块之后多插一条。两者都只改发给上游的副本,客户端看到的响应不变。": "Replace = delete all client system / developer messages and substitute the gateway's prompt; Append = keep the client's content and just insert one extra prompt after the leading system blocks. Both only change the copy sent upstream; the response the client sees is unchanged.", "替换为网关提示词": "Replace with gateway prompt", "替换内容": "Replacement text", "替换内容最多 {max} 个字符": "Replacement text must not exceed {max} characters", "替换前会自动把当前数据备份到配置目录的 backups/ 文件夹。": "Before the replace, the current data is automatically backed up to the backups/ folder under the config directory.", "替换并恢复": "Replace and restore", "最多 64 个字符,留空恢复为 Agent2API。": "Up to 64 characters. Leave blank to restore Agent2API.", "最小自动上传间隔": "Minimum automatic upload interval", "最近 {window} 条请求中,{scanned} 条有识别依据,{matched} 条符合条件,{applied} 条会采用本规则。": "Of the latest {window} requests, {scanned} have evidence, {matched} match, and {applied} would use this rule.", "有未保存的修改": "There are unsaved changes", "有未保存的改动:保存后才能同步(测试连接不受影响)。": "Unsaved changes: save first to sync (testing the connection is unaffected).", "有近期套餐池请求时读取库存状态的间隔,默认 2500 毫秒,可填 1000–30000。没有近期请求时降低读取频率,轮询不会发起验证码。": "Stock polling interval while Start Plan requests are recent: 2500 ms by default, from 1000 to 30000. Polling slows down when idle and never triggers verification.", "服务商": "Provider", "服务器地址": "Server URL", "服务端密钥加密保存,不会返回浏览器;切回 ALTCHA 后会保留,方便再次启用。": "The secret key is stored encrypted and never returned to the browser. It is kept when switching back to ALTCHA so you can enable Turnstile again later.", "服务端密钥(Secret Key)": "Secret Key", "期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "While this mode is on, its own prompt is not sent; lift it as soon as your prompt is fixed.", "未保存": "Unsaved", "未匹配已知客户端": "No known client matched", "未单独配置:模式、提示词文件与正文都跟随上面的全局配置(当前「{mode}」)。": "Not configured individually: mode, prompt file, and text all follow the global configuration above (currently \"{mode}\").", "未启用": "Disabled", "未开启轻量模式:关窗仅隐藏窗口,界面进程常驻内存,随时打开不等待": "Lightweight mode off: closing the window only hides it, the UI process stays in memory, and it opens instantly", "未开启,developer 角色消息会原样发往上游,不认识该角色的上游会报错(400)。": "Off: developer-role messages are sent upstream as-is; upstreams that do not know the role return an error (400).", "未开启,客户端 system 模板会原样发往上游,可能被内容审核误拦(400)。": "Off: client system templates go upstream as-is and may be falsely blocked by content review (400).", "未开启,浏览器跨域无法直连网关。": "Off: browsers cannot reach the gateway cross-origin.", "未开启,转发时不保存任何原始报文。": "Off: no raw payloads are saved while forwarding.", "未开启:网关只监听 127.0.0.1,仅本机可以访问。": "Off: the gateway listens only on 127.0.0.1 and is reachable only from this machine.", "未注册": "Not registered", "未注册闸门": "Unregistered gate", "未知原因": "Unknown reason", "未知来源": "Unknown source", "未知设备": "Unknown device", "未知账号": "Unknown account", "未能读取 Cline 伪装头设置,请稍后重试": "Could not read the Cline spoofed header settings. Please try again later.", "未能读取 models.dev 元数据状态,请稍后重试": "Could not read the models.dev metadata state. Please try again later.", "未能读取云同步设置,请稍后重试。": "Could not read cloud sync settings. Please try again later.", "未能读取保存后的指纹脱敏设置": "Could not read the saved fingerprint masking settings", "未能读取开发者角色兼容设置,请稍后重试": "Could not read the developer role compatibility setting, please try again later", "未能读取指纹脱敏设置,请稍后重试": "Could not read the fingerprint masking settings. Please try again later.", "未能读取机器人校验设置": "Could not read bot verification settings", "未能读取第三方模型回答完自动折叠过程设置,请稍后重试": "Could not read the third-party reasoning collapse setting, please try again later", "未能读取系统提示词设置,请稍后重试": "Could not read the system prompt settings. Please try again later.", "未能读取网关跨域访问设置,请稍后重试": "Could not read the gateway CORS settings. Please try again later.", "未能读取网络访问设置,请稍后重试": "Could not load network access settings. Please try again later.", "未能读取调试模式设置,请稍后重试": "Could not read the debug mode settings. Please try again later.", "未能读取账户信息,请稍后重试": "Could not read account information, please try again later", "未采用本规则,请检查开关、来源声明或规则顺序": "This rule was not used. Check its switch, caller declarations, or rule order.", "本地账号、配置、签到与余额记录变化后自动上传(合并 1 秒内的连续改动,最长 10 秒传一次;内容没变时不发请求)。": "Automatically upload after local account, configuration, check-in and balance record changes (changes within 1 second are merged, at most one upload every 10 seconds; no request is sent when nothing changed).", "本机 API 地址": "This device's API address", "本机 APK 版本": "Local APK version", "本机全部数据会被备份整体替换,恢复前自动保留安全备份,完成后需要重新登录管理面板。本机已有密钥不会被覆盖。": "All local database data will be replaced. A safety backup is saved first, and you must sign in again afterward. Existing local keys will not be overwritten.", "本机应用版本": "Local app version", "本机界面版本": "Local UI version", "本机的业务数据(账号、配置、Agent 配置、代理池 / 订阅、签到与余额记录)将上传并": "This machine's business data (accounts, configuration, Agent profiles, proxy pool / subscriptions, check-in and balance records) will be uploaded and", "本机的全部数据(账号、网关配置、日志统计与桌面设置)将被所选备份文件": "All data on this machine (accounts, gateway config, log stats, and desktop settings) will be ", "本机的账号、网关配置、Agent 配置、代理池 / 订阅、签到与余额记录将被远端快照": "This machine's accounts, gateway configuration, Agent profiles, proxy pool / subscriptions, and check-in and balance records will be replaced by the remote snapshot", "本次无需刷新": "No refresh needed this time", "本软件不提供任何担保,可按 AGPL-3.0 修改与分发;通过网络提供修改版服务时须向用户提供对应源码。": "This software comes without warranty and may be modified and distributed under AGPL-3.0. Modified network services must offer their Corresponding Source to users.", "本项目的 AGPL-3.0 许可不替代这些第三方许可。名称与标识的商标权归各自权利人所有。": "This project's AGPL-3.0 license does not replace these third-party licenses. Trademark rights in names and logos belong to their respective owners.", "机器人校验": "Captcha", "机器人校验设置已保存": "Bot verification settings saved", "条数": "Record count", "来源声明当前关闭,这条规则不会生效。请先在客户端识别设置中开启。": "Caller declarations are disabled, so this rule will not apply. Enable them in client identification settings first.", "来源声明无效或未登记,本次已忽略。": "The origin declaration was invalid or unregistered and was ignored.", "来源声明未启用,本次已忽略。": "Origin declarations are disabled and were ignored.", "来源版本": "Source revision", "来源设备:{device}": "Source device: {device}", "来自 {device},生成于 {time}": "From {device}, created at {time}", "架构": "Architecture", "查看内置客户端({n})": "View built-in clients ({n})", "查询管理员状态失败:{message}": "Failed to check admin status: {message}", "校验身份:这三段必须各自成块排在最前(实测:三段并成一段会被回 405 / 3012)。因此这里按段编辑,不能合成一段。改过的段以你的文本为准,没改的段继续用官方原文;清空某一段 = 那一段恢复官方原文。": "for identity: the three blocks must each be a separate block placed at the very top (measured: merging the three into one returns 405 / 3012). So they are edited per block here; they cannot be merged into one. Edited blocks use your text; unedited blocks keep the official text; clearing a block reverts that block to the official text.", "桌面端": "Desktop app", "桌面端登录 / 注册验证": "Desktop sign-in / registration verification", "桌面端:登录 / 注册需要 ALTCHA 人机验证": "Desktop: sign-in / registration requires ALTCHA proof-of-work", "桌面端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "Desktop: sign-in / registration requires ALTCHA proof-of-work (in use now)", "桌面运行时不可用,暂时无法保存": "Desktop runtime unavailable; cannot save right now", "档案": "Profile", "检测中…": "Checking…", "概览": "Overview", "模型不能直接看图时,按你选择的方式处理。原生支持图片的请求直接转发,不增加识图调用。": "When a model cannot read images, use your selected mode. Native image-capable requests pass through without an extra vision call.", "模型单独配置": "Per-model overrides", "模型目录没写明是否支持图片时按这里处理。": "Used when the model catalog does not say whether images are supported.", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。下面两块分别选好「哪些模型」和「用哪只模型」即可;没配到的模型、以及本来就能看图的模型,一律原样放行。这里的改动立即生效,不需要保存。": "A model that cannot read images has only two options: let another model read the image for it, or hand the whole request to a model that can. Choose the models and the vision model in the two blocks below. Anything not covered here — including models that already read images — passes through untouched. Changes here take effect immediately; there is nothing to save.", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。没配到的模型、以及本来就能看图的模型,一律原样放行;每个请求只用其中一种方式,不会两种串着做,处理失败也不会改走另一种。改动立即生效,不需要保存。": "A model that cannot read images has only two options: let another model read the image for it, or hand the whole request to a model that can. Anything not covered here — including models that already read images — passes through untouched. Each request uses exactly one of the two ways; they are never chained, and a failure does not fall back to the other. Changes take effect immediately; there is nothing to save.", "模型请求是否需要验证码由 ZCode 上游配置决定,领取验证与模型请求免验证分别处理。后台只检查配置和库存,不自动运行验证码或弹出拼图;需要验证时,在账号的「套餐明细」中点击「开始验证」。验证令牌一次性使用,短时间内过期,失败或取消后不会自动重试。": "ZCode upstream settings determine whether model requests need verification, independently of plan claims. The background only checks settings and stock; it never runs verification or opens a puzzle automatically. Start required verification in the account’s Plan details. Tokens are single-use, expire shortly, and are not retried automatically after failure or cancellation.", "模式": "Mode", "模式改为「{mode}」": "Mode changed to \"{mode}\"", "次": "times", "次日 00:00": "00:00 the next day", "正则表达式": "Regular expression", "正在保存上游原始报文:": "Saving raw upstream payloads:", "正在修改…": "Changing…", "正在剥离出站请求里的审核指纹:表头键值整段删除,模板句最小改写。": "Stripping review fingerprints from outbound requests: header key/value pairs are deleted entirely, and template sentences get minimal rewrites.", "正在安装…": "Installing…", "正在应答跨源请求:浏览器跨域请求可直连 /v1/*。": "Answering cross-origin requests: browsers can reach /v1/* directly cross-origin.", "正在归一角色:developer 角色消息转发前改写为 system。": "Normalizing roles: developer-role messages are rewritten to system before forwarding.", "正在注册…": "Registering…", "正在联网更新": "Updating online", "正在读取提供商设置…": "Loading provider settings…", "正式版": "Stable", "每个请求只会用到其中一种方式,不会两种串着做;处理失败也不会改走另一种。配了哪只视觉模型,那次请求的图片就会交给它。": "Each request uses exactly one of the two ways; they are never chained and a failure does not fall back to the other. Whichever vision model is configured is the one that receives the images for that request.", "每条请求轮换到下一个可用账号;新会话交给当前最闲的那位。适合想把手里的号摊开用、不让某一个一直扛。": "Rotates to the next usable account on every request; a new session goes to whoever is least busy. For spreading usage across accounts instead of letting one carry everything.", "每条请求都重新按策略选路 —— 行为与「关闭」一致,仅保留会话识别的记录。": "Every request is routed by strategy from scratch — same behavior as \"Off\", only the session records are kept.", "每次等待的时长,默认 0 = 跟随上游建议(实测 9~30 秒,上游没给建议时用 15 秒)。可填 0–120 秒强制一个固定时长。": "Duration of each wait. Default 0 = follow the upstream's suggestion (measured 9–30 seconds; 15 seconds when the upstream gives none). Accepts 0–120 seconds to force a fixed duration.", "每行一个域名,不填协议、端口或路径;与 Cloudflare 中的配置一致,服务端按完整域名匹配。手机 App 使用所连接网关的域名。": "Enter one hostname per line, without a scheme, port or path. Match your Cloudflare configuration; the server requires an exact hostname match. The mobile app uses the connected gateway's hostname.", "毫秒": "ms", "沟通方式 / 上下文管理 + Environment 段。": "The communication style / context management + Environment block.", "没有可导出的账号": "No accounts to export", "没有可用视觉模型时": "When no vision model is available", "没有已确认支持图片的模型,请先在模型管理中确认。": "No model is confirmed to support images. Confirm its capability in Model Management first.", "没能读到「{label}」的当前值,改为 {count} 条可能会删除超出的历史数据。": "Could not read the current value of \"{label}\". Setting it to {count} records may delete excess historical data.", "没能读到「{label}」的当前值,改为 {days} 天可能会删除超出的历史数据。": "Could not read the current value of \"{label}\"; changing it to {days} days may delete excess historical data.", "沿用对应方式的视觉模型配置,不额外维护一份模型列表。": "Reuse the vision configuration for that mode; no separate model list is needed.", "沿用工具服务的视觉分析模型": "Reuse the tool service's vision analysis model", "沿用工具服务的视觉分析模型(未配置)": "Vision model from the tool service (not configured)", "注册并开启": "Register & Enable", "注册管理员账号": "Register Admin Account", "注意:这一家的「网关自带」开关现在是关的,改过的正文要等开关打开才生效。": "Note: this provider's \"Gateway-Provided Prompt\" switch is currently off; edited text takes effect only after the switch is turned on.", "流式响应相邻数据之间允许的最大空闲时间(秒),收到新数据后重新计时,默认 300 秒,范围 1~3600。": "Maximum idle time allowed between adjacent chunks of a streaming response (seconds); the timer restarts on each new chunk. Default 300 seconds, range 1–3600.", "流式响应空闲超时": "Stream Idle Timeout", "测试连接": "Test connection", "浏览器 / PWA": "Browser / PWA", "浏览器只在 https 或 localhost 下提供离线缓存;局域网 http 访问不影响正常使用": "Browsers only offer offline caching over https or localhost. Accessing over plain http on the LAN still works normally.", "浏览器在本地完成计算,不需要第三方密钥,也不依赖外部验证服务。": "The browser performs the computation locally. No third-party keys or external verification service are required.", "浏览器标签页": "Browser tab", "浏览器面板": "Browser panel", "消息角色": "Message roles", "添加备选模型": "Add fallback model", "添加提供商": "Add Provider", "添加提供商…": "Add provider…", "添加自定义头": "Add Custom Header", "添加要单独配置的提供商": "Add a provider to configure individually", "清除本机凭证": "Clear local credentials", "清除这里的正文": "Clear Text Here", "源代码": "Source code", "点下面的入口会用系统默认浏览器打开 GitHub 的对应表单(需要 GitHub 账号,模板已预设好,填完直接提交即可)。": "The entries below open the matching GitHub form in your system's default browser (a GitHub account is required; the template is preset, so just fill it in and submit).", "点击重命名": "Click to rename", "点此添加或切换服务器": "Tap to add or switch servers", "点此添加服务器": "Tap to add a server", "版本": "Version", "版本信息": "Version info", "版本信息 · 所连网关环境": "Version info · connected gateway", "版权声明": "Copyright notice", "状态码 {code} 已在名单里": "Status code {code} is already in the list", "状态码必须是 {min}–{max} 的整数(收到: {text})": "Status code must be an integer from {min} to {max} (received: {text})", "环境": "Environment", "生成时间:{time}": "Created at: {time}", "生效顺序:有效的来源声明优先,然后按顺序匹配自定义规则,最后使用内置规则。中转丢失原始标识时,无法自动推断背后的软件。": "Priority: valid origin declaration, custom rules in order, then built-in rules. If a relay removes the original identifier, the original software cannot be inferred automatically.", "用 models.dev 补齐上游没声明的模型能力与思考档位(联网刷新,内嵌快照始终生效)": "Fill in model capabilities and reasoning levels the upstream never declares, using models.dev (refreshed online; the bundled snapshot always applies)", "用于加密上云的账号密钥。请自己记牢 —— 它不保存到云端,换机下载时必须输入同一个密码,否则账号数据无法解密。": "Used to encrypt the account key that goes to the cloud. Remember it — it is not stored in the cloud, and you must enter the same password when restoring on another machine, otherwise the account data cannot be decrypted.", "用哪只模型识图": "Which model reads the image", "用浏览器菜单里的「添加到主屏幕」把这一页装成 App:全屏打开、没有地址栏,和原生应用一样。": "Use \"Add to Home Screen\" in the browser menu to install this page as an app: full screen, no address bar, just like a native app.", "由 Cloudflare 提供验证,需要浏览器与网关均能连接 Cloudflare。验证失败或服务不可用时不会自动放行。": "Verification is provided by Cloudflare. Both the browser and gateway must be able to reach Cloudflare. Failed verification or an unavailable service will not allow access.", "由 {source} 覆盖,手动设置暂不生效": "Overridden by {source}; the manual setting is not currently active", "界面缩放": "Interface Zoom", "界面缩放比例": "Interface Zoom Level", "界面语言": "Interface Language", "界面语言。可选简体中文、繁體中文、English、日本語、한국어、Português (Brasil),或「跟随系统」(按浏览器 / 系统的语言列表自动选)。切换后整页立即刷新;该偏好只存在本机(localStorage),不影响账号、密钥与转发。": "Interface language. Choices: 简体中文, 繁體中文, English, 日本語, 한국어, Português (Brasil), or System (picked automatically from the browser / system language list). Switching reloads the whole page immediately; the preference is stored only on this machine (localStorage) and does not affect accounts, keys, or forwarding.", "界面语言只保存在本机(localStorage)。切换后整页立即刷新,不影响账号、密钥与转发。": "The interface language is stored only on this machine (localStorage). Switching reloads the whole page immediately and does not affect accounts, keys, or forwarding.", "界面里编辑的正文": "the text edited in the UI", "留空 = 用内置默认提示词": "Leave empty = use the built-in default prompt", "留空使用 AWS 官方地址": "Leave blank to use the official AWS address", "留空使用默认": "Leave blank to use the default", "留空表示删除匹配内容;替换内容按原文写入,$ 不作为捕获组引用。": "Leave empty to delete matched text. Replacement text is inserted literally; $ is not a capture-group reference.", "登录 / 注册需要通过 ALTCHA 人机验证(工作量证明)": "Require ALTCHA human verification (proof of work) for sign-in / registration", "登录 / 账号切换 / 429 切换等系统事件,可填 1–99999 天。": "System events such as sign-ins, account switches, and 429 switches. Range: 1–99999 days.", "登录 Agent2API": "Sign in to Agent2API", "登录 {name}": "Sign in to {name}", "登录人机验证": "Login CAPTCHA", "百分比类读数(如 OpenCode Go、Antigravity)不能相加,组头显示的是组内最低剩余比例。": "Percentage readings (such as OpenCode Go or Antigravity) cannot be summed; the band shows the group's lowest remaining percentage.", "监听地址": "Listen address", "目前展示仓库已登记的图标来源许可,不代表完整的第三方依赖清单。": "This list contains the icon source licenses currently recorded in the repository, not a complete inventory of third-party dependencies.", "目标路径:{path}": "Target path: {path}", "直接按上面的设置兼容": "Apply the settings above right away", "直接按当前方式兼容": "Apply the selected mode directly", "知道了": "Got it", "确定": "Confirm", "确定后加入当前草稿,点击「保存设置」才会生效。": "Confirm adds the rule to the draft. Click Save settings to apply it.", "确定继续?": " Continue?", "确认上传": "Confirm upload", "确认图片处理授权": "Confirm image processing consent", "确认备份密码": "Confirm backup password", "确认并保存": "Confirm and save", "确认新密码": "Confirm new password", "确认缩减数据保留": "Confirm reduced data retention", "确认缩短保留天数": "Confirm Shorter Retention", "社区与支持": "Community & support", "离线缓存未启用": "Offline cache is off", "积分合计只统计当前筛选出来的账号": "Only sum accounts visible under the current filter", "移入「{name}」": "Move into \"{name}\"", "程序路径": "Executable path", "空 = 不要这一份,回落提示词文件 / 内置默认提示词。": "Empty = do not keep this copy; falls back to the prompt file / built-in default prompt.", "空分组 · 点组头的 + 把菜单移进来": "Empty group · use + on the header to move menus in", "立即解除": "Clear Now", "站点密钥(Site Key)": "Site Key", "第一段": "Block 1", "第一段(身份句)": "Block 1 (identity sentence)", "第三方应用密码": "App-specific password", "第三方开源许可": "Third-party open-source licenses", "第三方模型回答完自动折叠过程": "Collapse third-party model work after the answer", "第三方模型回答完自动折叠过程设置已刷新": "Third-party reasoning collapse setting refreshed", "第三段": "Block 3", "第三段(动态段)": "Block 3 (dynamic block)", "第二段": "Block 2", "第二段(稳定段)": "Block 2 (stable block)", "等待响应超时": "Response Headers Timeout", "等待期间请求日志的状态列会显示「排队中」阶段,详情弹窗的「内部重试」里能逐次看到等待时长;等待用尽后返回 HTTP 503(不是 401/429:既不会刷新凭证,也不会把账号标成限额)。": "While waiting, the status column in the request logs shows a \"Queueing\" phase, and the \"Internal Retries\" section of the detail dialog lists each wait duration; when the waits run out, HTTP 503 is returned (not 401/429: credentials are not refreshed and the account is not marked as rate-limited).", "等比放大或缩小整个界面(文字、控件、间距一起变),效果与浏览器按 Ctrl +/- 相同:80%–130%、5% 一档。窗口本身不缩放,变的是页面内容的显示比例,设置立即生效并记住,下次启动直接按这个比例打开。放得越大可视范围越小,窗口较窄或表格较宽时不建议调得太大。": "Zoom the whole interface proportionally (text, controls, and spacing scale together), equivalent to Ctrl +/- in a browser: 80%–130% in 5% steps. The window itself does not resize — what changes is the page content's display scale; the setting applies immediately and is remembered, so the next launch opens at this scale. The larger the scale, the less you can see at once; with a narrow window or wide tables, do not set it too high.", "简体中文": "Simplified Chinese", "管理员已注册": "Admin registered", "管理员账号": "Administrator account", "管理插件": "Manage plugins", "精确文本": "Exact text", "系统提示词模式": "System Prompt Mode", "系统提示词设置已刷新": "System prompt settings refreshed", "累计请求": "Total requests", "繁体中文": "Traditional Chinese", "约 {n} 字符": "approx. {n} characters", "结构": "structure ", "给 Codex 的响应补阶段标记,回答完后像官方模型一样把推理与命令过程折叠起来": "Add phase markers to Codex responses so reasoning and commands collapse after the answer, like official models", "继续并清理": "Continue & Clean Up", "编辑提示词正文 · {label}": "Edit Prompt Text · {label}", "编辑提示词正文 · 全局": "Edit Prompt Text · Global", "编辑正文": "Edit Text", "编辑网关自带提示词 · {label}": "Edit Gateway-Provided Prompt · {label}", "编辑脱敏规则": "Edit masking rule", "编辑识别规则": "Edit identification rule", "缩放后重新存成 JPEG 时用的质量。默认 80,可填 40–95;数值越小体积越小、画质越差。": "JPEG quality used when re-encoding the scaled image. Default 80, range 40-95; lower means a smaller file and lower quality.", "缩放比例": "Zoom Level", "网关": "Gateway", "网关 Key 数量": "Gateway key count", "网关尚未就绪": "The gateway is not ready yet", "网关自带": "Gateway-Provided Prompt", "网关跨域访问已开启": "Gateway CORS enabled", "网关跨域访问设置已刷新": "Gateway CORS settings refreshed", "网关跨域访问(CORS)": "Gateway CORS", "网关面(/v1/*)默认不应答浏览器跨源请求:页面直连会被预检拦下,只报「无法连接 API」。注意来源是 * —— 未配「网关 Key」时任何网页都能借本机网关打上游,故默认关闭;只给自己用的话,让页面与网关同源(本地反代 /v1)更稳妥。面板接口(/api/*)不受影响。": "The gateway endpoints (/v1/*) do not answer browser cross-origin requests by default: a page connecting directly is stopped by the preflight and only reports \"cannot connect to the API\". Note that the allowed origin is * — with no gateway key configured, any web page could use this machine's gateway to hit upstreams, which is why the default is off; if you only use it yourself, serving the page from the same origin as the gateway (a local reverse proxy for /v1) is safer. The panel API (/api/*) is unaffected.", "网络访问": "Network access", "网页端": "Web", "网页端登录 / 注册验证": "Web sign-in / registration verification", "网页端的界面缩放由浏览器自己控制(Ctrl + / Ctrl -,或浏览器菜单里的缩放),此项不可调。": "In the web build, interface zoom is controlled by the browser itself (Ctrl + / Ctrl -, or the zoom entry in the browser menu); this setting is not adjustable.", "网页端:登录 / 注册需要 ALTCHA 人机验证": "Web: sign-in / registration requires ALTCHA proof-of-work", "网页端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "Web: sign-in / registration requires ALTCHA proof-of-work (in use now)", "网页管理地址": "Web management address", "群晖 NAS": "Synology NAS", "群晖需在「控制面板 → 应用程序门户 → WebDAV」里启用服务,端口默认 5005(HTTP)/ 5006(HTTPS)。": "On Synology, enable the service under Control Panel → Application Portal → WebDAV; the default ports are 5005 (HTTP) / 5006 (HTTPS).", "脱敏词表": "Masking rules", "腾讯云 COS": "Tencent Cloud COS", "自动同步": "Auto sync", "自动同步上次失败": "Last auto sync failed", "自动续写": "Auto continuation", "自定义 User-Agent": "Custom User-Agent", "自定义客户端分类": "Custom client categories", "自定义客户端数量已达上限": "Custom client limit reached", "自定义提供商 {id}": "Custom provider {id}", "自定义网站和应用界面中显示的名称与 Logo。": "Customize the name and logo displayed on the website and in the application.", "自定义识别规则": "Custom identification rules", "自愈保护": "Self-healing guards", "至少 12 位": "At least 12 characters", "至少 8 位,换机下载时需要": "At least 8 characters; needed when restoring on another machine", "至少要保留一个分组": "At least one group must remain", "英语": "English", "范围 5–120 秒,并受原请求时限约束。": "Range 5–120 seconds, also bounded by the original request timeout.", "范围为 5–120 秒,并受原请求时限约束。图片过大、格式错误或下载失败不会被当作模型不支持图片。": "Allowed range: 5–120 seconds, also limited by the original request timeout. Oversized images, invalid formats and download failures are not treated as missing image support.", "被更高优先级覆盖": "Overridden by higher priority", "装上{size}的官方身份提示词": "Install the official identity prompt ({size})", "装成 App 后从桌面图标直接进入:全屏打开、没有地址栏。": "Installed as an app it opens straight from the home screen icon: full screen, no address bar.", "覆盖": "overwrite", "规则 / 匹配方式": "Rule / match type", "规则可以增删改、启停和调整顺序;替换内容留空表示删除匹配内容。恢复默认只重置词表,不改开关和提供商范围。": "Add, edit, delete, enable, disable and reorder rules. An empty replacement deletes matched text. Restoring defaults resets only the rules, not the switch or provider scope.", "规则名称": "Rule name", "规则名称不能为空,且最多 {max} 个字符": "The rule name is required and must not exceed {max} characters", "规则已保存,对后续请求生效;当前历史记录未修改。": "Rule saved for future requests. This historical record was not changed.", "规则忽略大小写,只影响新请求的日志与统计,不改变模型选择或权限。": "Rules ignore case and affect only logs and statistics for new requests, not model selection or permissions.", "规则编号:{id}": "Rule ID: {id}", "视觉模型": "Vision model", "视觉模型先识读图片,再由原模型分析和回答。": "A vision model reads the images first, then the original model analyzes and answers.", "视觉模型来源": "Vision model source", "视觉模型的思考等级": "Reasoning level of the vision model", "视觉模型直接回答": "The vision model answers directly", "视觉模型识读图片": "The vision model reads the images", "解码后小于这个体积的图片保持原样。默认 512KB,可填 0–10240;填 0 表示所有内嵌图片都过一遍。": "Images smaller than this size after decoding are kept as-is. Default 512KB, range 0-10240; 0 processes every inline image.", "解除失败:{message}": "Failed to clear the fallback: {message}", "触发阈值": "Trigger threshold", "计数": "Counts", "计量单位": "Number notation", "让 Codex 在收到最终答案后收起中间过程。仅为严格识别的 Codex Responses 请求补阶段标记,报表归类和来源声明不影响此判断。正常结束且没有工具调用的非空回答才补 final_answer,工具调用前的说明补 commentary;错误、截断、缺少结束信号或未知结束原因不补最终答案标记。默认关闭,不改变回答文字,也不减少模型思考或用量。": "Let Codex collapse intermediate work after the final answer. Phase markers are added only to strictly identified Codex Responses requests, independently of report categories and client declarations. Only non-empty, normally completed replies without tool calls receive final_answer; text before tool calls receives commentary. Errors, truncation, missing completion signals and unknown finish reasons never receive a final-answer marker. Off by default; answer text, model reasoning and usage are unchanged.", "许可原文": "Original license text", "许可原文已随软件内置,无需联网即可查看;打开项目来源链接需要联网。": "License texts are bundled with the app and available offline. Opening project source links requires an internet connection.", "许可核对版本": "Revision used to verify the license", "设置不可隐藏(隐藏了只能清缓存找回来)": "\"Settings\" cannot be hidden (you would have to clear storage to get it back)", "设置备份密码": "Set backup password", "设置识别规则": "Set identification rule", "访问时请使用目标设备能连接到的地址;这里显示的本机地址不代表公网可达。": "Use an address reachable from the connecting device. The local address shown here does not imply public internet reachability.", "识别依据": "Identification evidence", "识别规则数量已达上限": "Identification rule limit reached", "词表为空,不会改写任何指纹。可以新增规则或恢复默认词表。": "The rule list is empty; no fingerprints will be rewritten. Add a rule or restore the defaults.", "该提供商暂无可编辑的专属设置": "This provider has no editable settings", "详细日志": "Verbose logs", "语言设置": "Language Settings", "请先保存设置再同步": "Save the settings before syncing", "请先在 Cloudflare 创建 Turnstile 组件,建议选择 Managed 模式,并添加面板实际使用的域名。": "Create a Turnstile widget in Cloudflare first. Managed mode is recommended. Add the actual domain names used to access the panel.", "请填一个分组名": "Please enter a group name", "请填写管理员账号(64 字符以内)": "Enter an admin account (up to 64 characters)", "请求发出后等待上游响应头的最大时间(秒),默认 300 秒,范围 1~3600。": "Maximum time to wait for the upstream's response headers after the request is sent (seconds). Default 300 seconds, range 1–3600.", "请求带有不同软件的标识,未自动归类;可用自定义规则明确归属。": "The request contains identifiers for different applications and was not classified automatically. Use a custom rule to assign it.", "请求提供商 / 模型支持": "Provider / Model Support Request", "请求日志保留天数": "Request log retention (days)", "请求日志保留数量上限": "Request log record limit", "请求记录": "Request Records", "请求超时": "Request Timeouts", "请求转发到上游失败时(服务器瞬时错误、连接失败,以及 WorkBuddy 的 11-128 敏感词拦截),网关会等一段间隔后再发一次。次数分两档,管的是两件事:①「同一账号重试次数」在同一账号上原地重发几次 —— 一般是提示词被上游拦截、或链路瞬时抖动,等一会儿重发往往就好了;②「切换账号重试次数」这份请求最多再换几个账号试 —— 首发的那个账号不算,每换一个扣一次,不分是不是同一家(换到同一家的下一个账号也算一次),换满还失败就把错误返回给客户端。两项都设为 0 表示失败不重试、直接报错。注意账号级限额(429)不占这里的换号次数 —— 那类失败走「冷却该账号并换下一个账号」的降级,与这里的重试是两条路。另有「指定错误码直接换号」名单(默认 402):命中名单的上游状态码不在同一账号重发,直接按队列换下一个账号继续试(换号也占「切换账号重试次数」),换满仍失败才把错误返回给客户端。": "When forwarding a request to an upstream fails (transient server errors, connection failures, and WorkBuddy's 11-128 sensitive-word blocking), the gateway waits for an interval and sends it once more. The counts come in two tiers covering two different things: (1) \"Same-Account Retries\" resends in place on the same account a few times — usually the prompt was blocked by the upstream or the link flickered, and resending after a wait tends to succeed; (2) \"Account-Switch Retries\" is how many more accounts this request may try — the account that sent it first does not count, each switch costs one, regardless of whether it is the same provider (switching to the next account of the same provider also counts), and when the switches are exhausted and it still fails, the error is returned to the client. Setting both to 0 means no retries on failure — error out immediately. Note that account-level throttling (429) does not consume these account switches — that kind of failure goes through the \"cool down the account and move to the next one\" fallback, a separate path from the retries here. There is also the \"Switch Accounts on Specified Error Codes\" list (default 402): upstream status codes on the list are not retried on the same account; the gateway switches to the next account in the queue and keeps trying (the switch also consumes an \"Account-Switch Retries\" slot), and only when those are exhausted is the error returned to the client.", "请求重试": "Request Retries", "请至少选择一个提供商": "Select at least one provider", "请输入同步密码": "Enter the sync password", "请输入当前密码": "Please enter your current password", "请输入服务端密钥": "Enter the secret key", "请选择可用的标识请求头": "Select an available identity header", "请选择归属客户端": "Select the client to assign", "读取云同步设置失败:{message}": "Failed to read cloud sync settings: {message}", "读取失败:{message}": "Failed to read: {message}", "读取完整非流式响应体允许的最大时间(秒),默认 300 秒,范围 1~3600。": "Maximum time allowed to read a complete non-streaming response body (seconds). Default 300 seconds, range 1–3600.", "读取网关信息失败:{message}": "Failed to read gateway info: {message}", "读取远端…": "Reading remote…", "读取远端信息失败:{message}": "Failed to read remote info: {message}", "调用方声明": "Caller declaration", "调试报文": "Debug Payloads", "调试模式": "Debug mode", "调试模式设置已刷新": "Debug mode settings refreshed", "负载均衡": "Load balancing", "账号列表": "Account list", "账号导入 / 导出": "Account Import / Export", "账号路由": "Account routing", "账号页表格的两项显示偏好,只存在本机(localStorage),不影响账号数据与转发。「积分合计只统计当前筛选出来的账号」:账号页每一家的分组带右侧有一枚「可用合计」,默认按整组求和 —— 不受筛选、搜索影响,被筛掉的账号也计入(余额是资产,禁用也只表示不参与转发,额度仍在账上)。打开这一项后改为只累加当前可见的行:例如筛出 1 个 100 积分的账号,合计就是 100,而不是同组两个账号之和 1,000。分页不参与这个口径 —— 翻页看的是同一份结果的不同屏,合计不随页码变化。「隐藏账号名」与表头「账号」旁边那颗眼睛是同一个开关:打开后账号列的名字整体显示成星号,适合截图分享时遮挡账号。": "Two display preferences for the accounts table. They are stored only on this machine (localStorage) and never affect account data or forwarding. \"Only sum accounts visible under the current filter\": each provider band on the accounts page shows a \"Total available\" badge, and by default it sums the whole group — filtering and search do not change it, and accounts filtered out still count (balance is an asset; disabling an account only keeps it out of forwarding, the credit stays). Turn this on to add up only the rows currently visible: filter down to one account with 100 credits and the total reads 100, not 1,000 (the sum of two accounts in that group). Paging does not take part in this rule — pages are just different screens of the same result, so the total does not change as you flip pages. \"Hide account names\" is the same switch as the eye next to the \"Account\" column header: when on, names in the account column are shown as asterisks, handy for screenshots.", "账户": "Account", "超出的历史数据会被立即删除,且不可恢复。": "Excess historical data will be deleted immediately and cannot be recovered.", "超时": "Timeout", "超时设置已刷新": "Timeout settings refreshed", "跟随模型配置": "Follow model settings", "跟随系统 · 浅色 · 深色": "System · Light · Dark", "跟随默认": "Follow Default", "跨域访问": "CORS", "路由": "Routing", "路由组只使用组内成员;普通路由只使用参与范围内的账号和模型。": "Route groups use only their members. Ordinary routes use only accounts and models within their participation scope.", "路由设置已刷新": "Routing settings refreshed", "跳过 {n} 个": "skipped: {n}", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;负载均衡是每条请求换下一位,把负载摊到各个账号上。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时)、被 429 的账号垫底排到队尾 30 分钟、余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 前两层可以在下面按需开关,限制器由账号的「限制器」设置管。": "How accounts are picked when forwarding a request: ① \"Routing strategy\" sets the queueing rule — Strict order means position 1 takes every request until it can't answer (rate-limited / failing / out of quota) before the next one steps in; Load balancing rotates to the next account on every request, spreading the load across accounts. ② \"Session stickiness\" keeps the same session (same model + same opening messages) on one account wherever possible — multi-turn conversations reuse the upstream context cache, fewer account switches, less waste; Auto sticks for 5 minutes, In-session for 6 hours, Per turn and Off don't stick. The queue position (first column of the accounts table) is the foundation under every strategy; strategies are layered on top of it. Routing also has three self-healing guards: accounts that fail to forward back off for a while (starting at 15 minutes, doubling per failure, capped at 1 hour), accounts 429'd despite having quota go to the back of the queue for 30 minutes, and accounts out of quota or over their per-period token cap are held by the limiter — the first two can be toggled below as needed; the limiter is governed by each account's \"Limiter\" settings.", "转发前压缩对话里内嵌的大图(只改发给上游的副本,生图与图片编辑不受影响)": "Compress large inline images in conversations before forwarding (only the copy sent upstream changes; image generation and editing are unaffected)", "转发前将 developer 角色消息转换为 system,兼容不支持 developer 角色的 OpenAI 兼容上游": "Convert developer-role messages to system before forwarding, for OpenAI-compatible upstreams that do not support the developer role", "转发失败的账号休息一会儿再回来:15 分钟起步,连续失败翻倍,封顶 1 小时;成功一次立即恢复。目的是「让这次失败先凉一会儿」,免得一条条地反复撞同一个坏账号。": "An account that fails to forward rests for a while before coming back: starting at 15 minutes, doubling per consecutive failure, capped at 1 hour; one success restores it immediately. The point is to let a failure cool off instead of hammering the same bad account request after request.", "转发链路": "Forwarding", "轮询间隔": "Poll interval", "软件标识超过 1 KB,已截断保存;匹配仅使用保留部分。": "The software identifier exceeded 1 KB and was truncated. Matching uses only the retained portion.", "软件版本": "Software version", "轻量模式": "Lightweight mode", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 套餐池(Start Plan)通道不可用,相关请求会在请求日志里注明原因": "Lightweight mode is on: closing the window destroys the UI process (freeing about 200 MB of memory) while the gateway continues in the background; while the UI is destroyed, the ZCode plan-pool (Start Plan) channel is unavailable and affected requests will note the reason in the request log", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 活动套餐通道不可用,相关请求会在请求日志里注明原因": "Lightweight mode on: closing the window destroys the UI process (freeing about 200MB of memory) while the gateway keeps running in the background; while the UI is destroyed, the ZCode activity-plan channel is unavailable, and affected requests are noted in the request logs with the reason", "轻量模式(关窗释放界面内存)": "Lightweight mode (releases UI memory when the window is closed)", "辅助识图": "Assisted image reading", "辅助识图 · 原模型回答": "Assisted reading · Original model answers", "辅助识图保留原模型回答;切换视觉模型会让视觉模型直接回答。本次授权也包含已设置的模型单独配置。": "Assisted reading keeps the original answering model; switching lets the vision model answer directly. This consent also covers your per-model overrides.", "辅助识图或切换视觉模型,默认关闭": "Assisted reading or vision model switching, off by default", "辅助识图配置": "Assisted image reading settings", "输入同步密码": "Enter sync password", "输入当前登录用的密码": "Enter your current password", "输入状态码,回车添加": "Enter a status code and press Enter", "运行形态": "Deployment", "近期没有命中样本,不代表未来请求不会命中。": "No recent samples matched; future requests may still match.", "还原": "Revert", "还有额度时被 429 的账号排到队尾,30 分钟后自动回到队列(成功转发一次也会立即回来)。它标记的是「疑似共享池被别人抢」,不是「这个账号本身有问题」。⚠️ 注意它与路由策略的配合:在「家内轮询」下,队尾意味着这一家整体被往后排 —— 如果某个提供商的账号被批量限流,它们会集体沉到队尾,那个家可能长时间轮不到。这时可以关掉本项,让 429 过的账号只受冷却约束(冷却到点自动回来)。": "An account with quota left that gets 429'd goes to the back of the queue and returns automatically after 30 minutes (one successful forward also brings it right back). This marks \"the shared pool is probably being drained by someone else\", not \"this account is broken\". ⚠️ Mind the interplay with the routing strategy: under \"Per-provider rotation\", the back of the queue means the whole provider gets pushed back — if one provider's accounts are rate-limited en masse, they all sink to the back and that provider may not be reached for a long time. Turn this off in that case, so 429'd accounts are only bound by cooldown (they come back automatically when it expires).", "还没有可用的视觉模型。": "No vision model is available yet.", "还没有同步过。": "Not synced yet.", "还没有添加服务器。点右上角「添加」,填入网关所在机器的 IP 或域名与端口。": "No servers yet. Tap \"Add\" at the top right and enter the IP or domain and port of the machine running the gateway.", "还没有装载任何数据。": "No data loaded yet.", "还没有读到版本信息": "Version info has not been loaded yet", "还没有选择模型,这块设置暂时不起作用。": "No models selected yet, so this block does nothing for now.", "这一份就是「替换 / 追加」模式下网关要发的 system 正文。": "This is the system text the gateway sends in Replace / Append mode.", "这一项已隐藏": "This item is hidden", "这一项正在显示": "This item is visible", "这些模型的请求交给当前路由内可用的视觉模型回答,不再回到原模型。": "Requests from these models are answered by an available vision model in the current route instead of the original model.", "这些模型看到图片时,先把图片交给 {model} 读一遍,再由它们自己结合读到的内容回答。": "When these models see an image, {model} reads it first, and they answer using what was read.", "这些模型看到图片时,先把图片交给「沿用工具服务的视觉分析模型」读一遍,再由它们自己结合读到的内容回答。": "When these models see an image, the vision model from the tool service reads it first, and they answer using what was read.", "这只模型只负责看图,最终仍由原模型回答。": "This model only reads the image; the original model still answers.", "这只模型直接接收图片与对话,完成本次回答。": "This model receives the images and the conversation and produces this answer itself.", "这台网关未启用机器人校验": "This gateway does not require bot verification", "这台网关没有管理员,用一把已启用的 API Key 访问。": "This gateway has no admin account. Access it with an enabled API key.", "这条历史请求没有保存识别依据,不能据此自动创建规则。": "This historical request has no saved identification evidence, so it cannot be used to create a rule automatically.", "这条规则已被删除,请关闭编辑后重新添加。": "This rule was deleted. Close the editor and add it again.", "这里只列出已保存的提供商配置;未配置的提供商沿用全局设置,可从下拉框手动添加。用户保存的模式、文件和正文优先于全局设置,「跟随默认」只取消该提供商的模式、文件和正文覆盖。ZCode 套餐池默认由插件按三块装配,客户端系统正文合入第三块,不会自动创建替换规则;手动修改的网关提示词段或关闭开关仍以用户配置为准,能否被接受取决于上游规则。": "Only saved provider settings are listed here. Unconfigured providers follow the global settings and can be added manually from the dropdown. Saved modes, files and prompt text override the global settings; Follow Default removes only that provider's mode, file and text overrides. For ZCode's Start Plan, the plugin assembles three blocks by default and merges the client's system text into the third, without creating a replacement rule. Manually edited gateway prompt blocks and a disabled assembly switch still take precedence; acceptance depends on the upstream rules.", "进程 PID": "Process PID", "远程根目录": "Remote root directory", "远端同一路径下的旧快照。事件日志、请求明细与调试报文不会上传。": "the old snapshot at the same remote path. Event logs, request details and debug payloads are not uploaded.", "远端已有一份快照,将被覆盖": "A snapshot already exists on the remote and will be overwritten", "远端快照使用了另一把账号密钥,但没有携带密钥文件,无法在本机解密。请在原来那台机器上重新上传一次。": "The remote snapshot uses a different account key but does not include the key file, so it cannot be decrypted here. Re-upload once from the original machine.", "远端快照使用的账号密钥与本机不同。请输入上传那台机器设置的同步密码,用它解出密钥装到本机后再继续下载。": "The remote snapshot uses a different account key than this machine. Enter the sync password set on the uploading machine to decrypt the key and install it here, then continue the download.", "远端数据与当前版本不兼容": "Remote data is incompatible with this version", "远端该路径下还没有快照,本次是首次上传。": "No snapshot exists at that remote path yet; this is the first upload.", "远端路径:{path}": "Remote path: {path}", "远端还没有可下载的同步数据": "No sync data available to download on the remote", "连不上这台网关。确认地址与端口正确、网关已启动,且已开启「局域网访问」;用 https 时还要确认证书有效": "Cannot reach this gateway. Check the address and port, that the gateway is running, and that \"LAN access\" is enabled; for https also check that the certificate is valid.", "连不上这台网关。请确认地址、端口与防火墙设置,网关需已启动;桌面端请在「设置 → 网关 → 网络访问」开启「允许其他设备访问网关」。使用 HTTPS 时还需确认证书有效。": "Cannot reach this gateway. Check the address, port, and firewall settings, and make sure the gateway is running. For the desktop app, enable Allow other devices to access the gateway under Settings → Gateway → Network access. For HTTPS, also check that the certificate is valid.", "连接中超时": "Connect Timeout", "连接失败:{message}": "Connection failed: {message}", "连续失败到阈值后把这个账号整个打开(默认关)。与失败退避的分工:退避管「单次失败先凉一会儿」,惩罚轻、自动恢复;熔断管「这个账号现在整体不对劲,别再一条条地试」,要连续成功若干次才关。打开期间该账号被跳过,除非全场只剩它 —— 那时仍放行试一次。": "Trips this account off entirely after consecutive failures reach a threshold (off by default). Division of labor with failure backoff: backoff means \"let a single failure cool off\" — light penalty, automatic recovery; the circuit breaker means \"this account is misbehaving as a whole, stop trying it one request at a time\" and takes several consecutive successes to close. While open, the account is skipped — unless it is the only one left, in which case it still gets one try.", "追加": "Append", "追加网关提示词": "Append gateway prompt", "退出失败:{message}": "Sign-out failed: {message}", "退出登录": "Sign Out", "退出这台服务器的登录,不影响其他服务器": "Sign out of this server only; others are unaffected", "选好接管回答的视觉模型后这块设置才会生效。": "This block takes effect once a vision model to answer is chosen.", "选好视觉模型后这块设置才会生效。": "This block takes effect once a vision model is chosen.", "选定提供商": "Selected provider", "选择一个或多个模型": "Select one or more models", "选择位置并加密备份": "Choose location and encrypt backup", "选择备份文件并恢复": "Choose a backup file and restore", "选择提供商(可多选)": "Select providers (multiple allowed)", "选路规则": "Selection rules", "选项与默认值由已启用插件提供;你保存的覆盖值不会被插件更新替换。": "Enabled plugins provide these options and defaults. Plugin updates do not replace your saved overrides.", "选项与默认值由插件提供,你保存的修改不会被插件更新覆盖。切换提供商不会丢失未保存的修改。": "Options and defaults come from plugins. Plugin updates do not overwrite your saved changes. Switching providers keeps unsaved edits.", "透传": "Passthrough", "透传客户端 system": "Passthrough client system", "透传客户端 system(默认)": "Passthrough client system (default)", "通常是网络问题,点右侧重试": "Usually a network issue — tap Retry on the right", "通用": "General", "遇到 Bug、报错或异常行为": "Bugs, errors, or unexpected behavior", "配置目录下的 agent2api.db(账号、日志、请求记录、调试报文与设置都在里面)。": "agent2api.db in the configuration directory (it holds accounts, logs, request records, debug payloads, and settings).", "采用本规则": "Uses this rule", "重启后生效,不影响当前操作": "Takes effect after a restart; nothing you're doing is interrupted", "重命名": "Rename", "重命名只更新分类显示名,不拆分历史用量,也不重新归类历史请求。": "Renaming changes only the category label, without splitting past usage or reclassifying historical requests.", "重命名客户端分类": "Rename client category", "重复清理": "Repeat cleanup", "重复清理直到不再变化(仅正则删除)": "Repeat until unchanged (regular-expression deletion only)", "重新读取会替换当前未保存的草稿。": "Reloading replaces the current unsaved draft.", "重新读取设置": "Reload settings", "重编码质量": "Re-encode quality", "重置会清空管理员账号与密码,面板将回到「未注册」状态。": "Reset clears the administrator account and password, returning the panel to the \"not registered\" state.", "重置管理员": "Reset administrator", "重试设置已刷新": "Retry settings refreshed", "重试间隔": "Retry Interval", "铸造守卫每隔多久看一次库存(毫秒)。只影响发现缺货的反应速度 —— 库存够用时轮询不会铸造任何令牌。默认 2500 毫秒,可填 1000–30000。": "How often the minting guard checks the stock (milliseconds). It only affects how quickly a shortage is noticed — with enough stock, the poll mints nothing. Default 2500 ms; 1000–30000 accepted.", "长边像素上限": "Max long-edge pixels", "问题反馈": "Bug Report", "阿里云 OSS": "Alibaba Cloud OSS", "限流中账号": "Rate-limited accounts", "随包内嵌的快照(发版时的那份)": "Snapshot bundled with the app (the one from the last release)", "隐藏 {name}": "Hide {name}", "隐藏分组 {name}": "Hide group {name}", "隐藏用户名": "Hide username", "隐藏账号名(显示成星号)": "Hide account names (show asterisks)", "隐藏这一组": "Hide this group", "非流式响应超时": "Non-Streaming Timeout", "面板登录": "Panel login", "面板端口": "Panel port", "面板管理员账号": "panel admin account", "韩语": "Korean", "项目来源": "Project source", "预览不发送模型请求,也不修改历史记录。": "Preview does not call a model or modify historical records.", "预览中…": "Previewing…", "预览匹配": "Preview matches", "预设": "Preset", "首选不可用时再依次尝试备选。": "If the first choice is unavailable, the backups are tried in order.", "首选不可用时再依次尝试;留空则停止并说明原因。": "Tried in order when the first choice is unavailable; leave empty to stop and explain why.", "验证方式": "Verification method", "验证码令牌池": "Captcha token pool", "验证码令牌池设置已刷新": "Captcha token pool settings refreshed", "验证码库存的参考目标,默认 3 个,可填 1–10。只影响库存状态展示,不会因为低于目标自动生成令牌或弹出验证码。": "Reference stock target: 3 by default, from 1 to 10. It only affects the stock display; falling below it never generates tokens or opens verification automatically.", "高级设置": "Advanced settings", "默认 10000 条,按日志级别分配保留容量,超出后清理最旧的记录;同时受保留天数限制。": "Defaults to 10,000 records, with capacity allocated by log level. The oldest excess records are removed; retention days also apply.", "默认 1000000 条(100 万),超出后清理最旧的请求记录及其原始正文,不影响按天聚合报表;同时受保留天数限制。": "Defaults to 1,000,000 records. The oldest excess request records and their raw bodies are removed without affecting daily aggregate reports; retention days also apply.", "默认 5 分钟。间隔内的变化合并为最新快照,到期后上传;手动上传不受限制。失败后会延长等待并自动重试。": "Defaults to 5 minutes. Changes during the interval are merged into the latest snapshot and uploaded when it is due. Manual uploads are not limited. Failed attempts are retried automatically with a longer delay.", "默认仅本机可访问(127.0.0.1)。开启后监听所有 IPv4 网卡(0.0.0.0),访问范围由网络与防火墙决定,不限于局域网,也不会自动开放到公网。开启前必须注册面板管理员;管理接口需要管理员会话或网关 Key,API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。「同时开放网页管理面板」默认关闭,开启后可从其他设备的浏览器登录管理;关闭它不影响 API 转发和本机桌面管理。修改任一开关都需要重启应用。": "By default, only this machine can connect (127.0.0.1). Enabling this listens on all IPv4 interfaces (0.0.0.0); access depends on your network and firewall, is not limited to the LAN, and is not automatically opened to the internet. A panel administrator must be registered first. Management endpoints require an admin session or gateway key; API calls require an enabled gateway key, with a default key created automatically if needed. The web management panel is off by default. Enable it to sign in from another device's browser; disabling it does not affect API forwarding or local desktop management. Either switch requires an app restart.", "默认值通常够用,出问题时才需要调": "The defaults are usually fine; only tune these when something goes wrong", "默认关闭。开启后下一次 Codex 请求立即生效,不用重启;只对 Codex 来源的 /v1/responses 请求补阶段标记,其它客户端与 /v1/chat/completions 不受影响。": "Off by default. Enabling takes effect on the next Codex request without a restart; phase markers are only added to Codex-origin /v1/responses requests, other clients and /v1/chat/completions are unaffected.", "默认关闭。改动立即生效,不用重启;关闭期间的跨源请求会被预检拦下。": "Off by default. Changes take effect immediately, no restart needed; while off, cross-origin requests are stopped by the preflight.", "默认关闭窗口不会退出程序,而是把窗口缩到系统托盘,转发继续在后台运行(OpenAI 客户端不受影响);要彻底退出程序,请在托盘图标上右键选「退出」。关掉这个开关后,点关闭按钮即退出程序、转发随之中断。「开机自动启动」开启后,登录系统时会自动启动本程序(通常直接驻留托盘),不需要手动打开。": "By default, closing the window does not quit the app; it shrinks the window to the system tray and forwarding keeps running in the background (OpenAI clients are unaffected). To quit the app completely, right-click the tray icon and choose \"Exit\". With this switch off, clicking the close button quits the app and forwarding stops with it. With \"Launch at startup\" on, the app starts automatically when you sign in to the system (usually staying in the tray), so you do not need to open it manually.", "默认应用全部提供商(包含之后新增的插件与自定义提供商)。指定范围后,未选中的提供商不做指纹脱敏;清空选择自动回到全部提供商。": "Applies to all providers by default, including plugins and custom providers added later. With a selected scope, other providers are not masked. Clearing the selection returns to all providers.", "默认开启。只改 role 字段本身,消息内容与顺序都不动;本项只改发给上游的副本,客户端看到的响应内容不变。": "Enabled by default. Only the role field changes — message content and order stay untouched; this only rewrites the copy sent upstream, and what the client sees never changes.", "默认开启。只改发给上游的副本,客户端看到的响应与原图都不变;请求日志里保存的是客户端发来的原图,不是压缩后的版本。只作用在对话链路,生图 / 图片编辑不经过这里。改完对下一个请求立即生效,不用重启。": "On by default. Only the copy sent upstream is changed; the response and the original image seen by the client stay the same, and the request log stores the original image from the client rather than the compressed version. Applies to the chat path only — image generation and editing do not go through it. Changes take effect on the next request, no restart needed.", "默认开启。命中明细会记进请求日志的「敏」标签(悬停可看命中了哪几条规则)。本项只改发给上游的副本,客户端看到的响应内容不变。": "On by default. Hits are recorded in the request log's \"sensitive\" tag (hover to see which rules matched). This only changes the copy sent upstream; the response content the client sees is unchanged.", "默认开启并应用全部提供商。编辑词表或应用范围后点击「保存设置」,下一次请求立即生效,不用重启。命中明细仍记进请求日志的「敏」标签。": "Enabled for all providers by default. Edit rules or provider scope and click Save settings; the next request uses the changes without restarting. Rule hits are still recorded in the request log's masking tag.", "默认网关只监听 127.0.0.1,只有本机能访问。开启后网关改听所有网卡,同一局域网内的设备可以把 API 地址指向本机 IP 一起使用。出于安全考虑,开启前必须先注册一个面板管理员:管理接口从此要求管理员会话或网关 Key,模型额度不会对局域网裸奔;一把启用的网关 Key 都没有时,转发接口也会拒绝服务,直到创建第一把。改动需要重启应用生效。「同时开放网页管理面板」把管理界面也出给局域网(其他设备的浏览器打开本机 IP 即可管理),默认关闭 —— 桌面端的面板仍只由本程序自己出。": "By default the gateway listens only on 127.0.0.1 and only this machine can reach it. Once enabled, the gateway listens on all network interfaces, and devices on the same LAN can point the API address at this machine's IP to share it. For security, you must first register a panel administrator: the admin API then requires an admin session or a gateway key, so model quotas are not left wide open to the LAN; and when no gateway key is enabled, the forwarding API refuses service too, until the first one is created. The change requires an app restart to take effect. \"Also serve the web admin panel\" exposes the admin UI to the LAN as well (other devices can open this machine's IP in a browser to manage it); it is off by default — the desktop build still serves the panel only from this app itself.", "({n} 个整组隐藏)": " ({n} groups hidden)", "({n} 行)": " ({n} lines)", "({n} 项被覆盖)": " ({n} overridden)", "(全部为默认值)": " (all defaults)", "(官方原文)": "(official text)", "(已存一份正文,{n} 行;切成「替换 / 追加」后生效)": " (a text copy is saved, {n} lines; takes effect after switching to \"Replace / Append\")", "(已改)": "(edited)", "(已注册过会跳过这一步,直接生效)。": " before enabling this (if you have already registered, this step is skipped and the change takes effect directly).", "(当前生效的就是这一份,{n} 行)": " (this is the active copy, {n} lines)", "(文件:{path})": " (file: {path})", "(未生效)": "(not in effect)", ",{items}": ", {items}", ",{time}": ", {time}", ",以及代理池 / 订阅里可能存在的代理凭据。请使用只有你能访问的私有存储;账号密钥由同步密码单独加密,泄露存储本身不等于泄露账号。": ", plus any proxy credentials that may exist in the proxy pool / subscriptions. Use private storage only you can access; the account key is encrypted separately with the sync password, so leaking the storage alone does not expose your accounts.", ",包括恢复后需要重新登录管理面板。": " with the selected backup file, including the admin re-login after restore.", ",可直接用于登录。请妥善保管,不要外传或上传到公共位置。": ", and it can be used to sign in directly. Keep it safe; do not share it or upload it to a public location.", ",文件里后续的改动在清空这里之前不再生效": "; later changes to the file will not take effect until this is cleared", ",替换前的数据已备份为 {name}": ", the pre-replace data was backed up as {name}", ",自定义提供商新增 {added} 个、更新 {updated} 个": ", custom providers: {added} added, {updated} updated", ";开关关闭时词表不执行": "; rules do not run while masking is disabled", ";网页管理面板已一并开放(浏览器打开同一地址)": "; the web admin panel is also open (open the same address in a browser)", "AI 调整后的 JSON({n} 字符)": "AI-adjusted JSON ({n} chars)", "CodeArts 的账号余额还剩多少?": "How much credit is left on the CodeArts account?", "JSON 文件会以文本发送给当前对话模型,其中的凭证也会保存在这条会话里。": "JSON files are sent to the current chat model as text, and credentials in them are also saved in this conversation.", "[已省略 {n} 字符的 JSON]": "[JSON of {n} chars omitted]", "attachment 与 content 只能给一个": "Provide either attachment or content, not both", "section 只能是 models / mappings / both": "section must be models / mappings / both", "{n} 个候选,{m} 个跳过": "{n} candidates, {m} skipped", "{n} 条映射": "{n} mappings", "{n} 条请求日志": "{n} request log entries", "{n} 条运行日志": "{n} runtime log entries", "{requests} 次请求,{tokens} Token": "{requests} requests, {tokens} tokens", "「{name}」是空文件。": "\"{name}\" is empty.", "「{name}」看起来是二进制文件,助手只接收 JSON 文本。": "\"{name}\" looks like a binary file; the assistant only accepts JSON text.", "「{name}」超过 {n} MB,请换一个小一点的 JSON 文件。": "\"{name}\" is larger than {n} MB. Choose a smaller JSON file.", "「{name}」超过 {n} MB,请换一个小一点的 JSON 文件,或去添加账号页导入。": "\"{name}\" is larger than {n} MB. Choose a smaller JSON file or import it from the Add Account page.", "一次最多 {n} 个文件。": "At most {n} files at a time.", "一次最多 {n} 个文件,多出的没有添加。": "At most {n} files at a time; extra files were not added.", "一次最多 {n} 张图片。": "Up to {n} images at a time.", "一次最多 {n} 张图片,多出的没有添加。": "Up to {n} images at a time; additional images were not added.", "下载图片": "Download image", "今天用了多少 Token?": "How many tokens did I use today?", "会话响应不完整": "Incomplete session response", "保存位置": "Save location", "保存图片失败:{message}": "Failed to save image: {message}", "保存思考等级失败:{message}": "Failed to save reasoning level: {message}", "修改上传或已生成的图片,支持多张参考图。": "Edit uploaded or generated images using multiple references.", "修改文件": "Modify files", "修改模型能力": "Edit model capabilities", "凭证会保存到网关;同一提供商下同一身份的账号会更新原凭证。文件若是整库导出的 accounts 数组,会按文件里的账号批量导入。": "Credentials will be saved to the gateway. An account with the same identity under the same provider will have its credentials updated. If the file is a full export with an accounts array, all accounts in it are imported.", "分叉": "Fork", "分叉会话失败:{message}": "Failed to fork conversation: {message}", "分支": "Branch", "删除会话失败:{message}": "Failed to delete session: {message}", "删除消息": "Delete message", "删除这条对话": "Delete this conversation", "删除这条对话?": "Delete this conversation?", "删除这条消息?模型消息关联的工具结果也会一并删除。": "Delete this message? Tool results associated with a model message will also be deleted.", "助手设置没读出来,暂时存不了对话模型 —— 看输入框下方的提示。": "Assistant settings could not be read, so the chat model can't be saved yet — see the hint below the input box.", "助手设置没读出来,暂时存不了思考等级 —— 看输入框下方的提示。": "Assistant settings could not be loaded, so the reasoning level cannot be saved right now — see the hint below the input box.", "助手设置没读出来,现在还不能发消息 —— 看输入框下方的提示。": "Assistant settings could not be read, so messages can't be sent yet — see the hint below the input box.", "单张参考图不能超过 10 MiB": "A reference image cannot exceed 10 MiB", "历史会话": "Session history", "历史对话": "Conversation history", "原始 ID 的默认绑定不能删除,请关闭它的开关": "The default binding for the original ID cannot be deleted; turn it off instead", "原始报文或对话正文已省略": "Raw payload or conversation content omitted", "参数 {name} 只能是:{values}": "Parameter {name} must be one of: {values}", "参数 {name} 必须是不小于 {min} 的整数": "Parameter {name} must be an integer greater than or equal to {min}", "参数 {name} 必须是不超过 {max} 个字符的字符串": "Parameter {name} must be a string of at most {max} characters", "参数 {name} 必须是布尔值": "Parameter {name} must be a boolean", "参数 {name} 必须是有效日期(YYYY-MM-DD)": "Parameter {name} must be a valid date (YYYY-MM-DD)", "参数 {name} 必须是毫秒时间戳": "Parameter {name} must be a millisecond timestamp", "参数不完整(需要 provider / id / alias / action)": "Incomplete parameters (provider / id / alias / action required)", "参考图仅支持 PNG、JPEG、WebP": "Reference images must be PNG, JPEG, or WebP", "参考图会交给图片编辑工具,当前对话模型不会读取图片。": "Reference images are sent to the image editing tool; the current chat model will not read them.", "参考图片列表不能为空": "The reference image list cannot be empty", "参考图片编号不存在": "The reference image number does not exist", "参考图片请使用附件编号、已生成图片 ID 或 HTTP(S) 链接": "Use an attachment number, a generated image ID, or an HTTP(S) link for reference images", "发消息或做任务…(Enter 发送,Shift+Enter 换行,可粘贴图片或 JSON 文件)": "Send a message or task… (Enter to send, Shift+Enter for a new line; images and JSON files can be pasted)", "发起模型测试": "Run a model test", "受限": "Restricted", "变更前确认": "Confirm before changes", "只支持图片和 JSON 凭证文件(.json / .info)": "Only images and JSON credential files (.json / .info) are supported", "只支持图片和 JSON 凭证文件(.json / .info);「{name}」已跳过。": "Only images and JSON credential files (.json / .info) are supported; \"{name}\" was skipped.", "各账号余额还剩多少?": "How much balance is left on each account?", "启用 / 禁用模型": "Enable / disable models", "启用 / 禁用账号": "Enable / disable accounts", "命令": "Command", "哪些模型在多家重复了?": "Which models are duplicated across providers?", "图片 {n}": "Image {n}", "图片工具包含不支持的参数:{name}": "The image tool received an unsupported parameter: {name}", "图片工具没有返回可显示的图片": "The image tool returned no displayable images", "图片工具缺少当前会话": "The image tool has no current session", "图片工具需要提示词和图片模型": "The image tool requires a prompt and an image model", "完全访问": "Full access", "实时余额查询会请求上游,并可能触发已配置的自动禁用规则。": "Live balance checks send requests to upstream providers and may trigger the configured automatic account-disable rules.", "对指定模型发一次真实请求,回报连通性与耗时。": "Sends one real request to the given model and reports reachability and latency.", "对话由网关转发到上游模型,用量计入请求日志": "Chat is relayed to the upstream model by the gateway; usage is recorded in the request log", "导入账号文件": "Import account file", "将导入一个账号:": "Import one account:", "就绪": "Ready", "工具「{name}」未获授权,未执行。": "Tool \"{name}\" is not authorized and was not executed.", "工具调用已达本轮上限,已停止继续执行。": "This turn reached the tool-call limit; further execution has stopped.", "已从这条消息分叉为新对话": "A new conversation was forked from this message", "已停止": "Stopped", "已停止生成": "Generation stopped", "已完成 {n} 项改动": "Completed {n} changes", "已完成 {n} 项,剩余 {m} 项未执行": "Completed {n} items; {m} items were not executed", "已导入账号「{name}」": "Imported account \"{name}\"", "已生成 {n} 张图片": "Generated {n} images", "已调用": "Called", "开关模型的对外可用性,不改其它属性。": "Toggles a model's outward availability without touching other attributes.", "开始日期不能晚于结束日期": "The start date cannot be later than the end date", "开始时间必须早于结束时间": "The start time must be earlier than the end time", "当前安装包未包含原生图片保存能力,请更新应用。": "This app package does not include native image saving. Update the app.", "当前客户端缺少读取接口:{name}": "This client is missing the read interface: {name}", "当前对话没有可读取的文本附件:请先把 JSON 文件发给助手": "No readable text attachment in this conversation. Send the JSON file to the assistant first.", "思考过程": "Reasoning", "思考:跟随模型": "Reasoning: follow model", "成功率": "Success rate", "打开会话失败:{message}": "Failed to open session: {message}", "执行中": "Running", "执行结果": "Operation result", "批量导入:新增 {added}、更新 {updated}、失败 {failed}": "Batch import: {added} added, {updated} updated, {failed} failed", "把凭证文件交给对应提供商解析并落库;同身份账号会更新凭证。": "Let the matching provider parse and save the credential file; an account with the same identity will have its credentials updated.", "把重复的模型加上家名前缀区分开": "Prefix duplicated models with their provider name to tell them apart", "拒绝": "Deny", "按提供商名称查询模型、能力、来源与映射,支持自定义提供商。": "Query models, capabilities, sources, and mappings by provider name, including custom providers.", "按提示词生成图片。": "Generate images from the prompt.", "按提示词编辑参考图片。": "Edit reference images using the prompt.", "按文件内容判断": "Infer from file content", "按文本生成图片,结果直接显示在对话中。": "Generate images from text and display them in the conversation.", "提供商 id「{provider}」格式不正确": "Invalid provider id \"{provider}\"", "提供商「{name}」匹配到多家,请使用提供商 ID:{list}": "Provider \"{name}\" matches multiple entries. Use a provider ID: {list}", "改上下文窗口 / 最大输出 Token / 工具调用等能力位。": "Edits capability flags such as context window, max output tokens, and tool calls.", "改某一家的整组顺位(先试哪一家)。": "Reorders a provider's whole group (which provider is tried first).", "改账号在全局队列里的名次,决定主备与切换顺序。": "Changes an account's rank in the global queue, deciding primary/backup and failover order.", "文件内容是空的": "The file is empty", "文件过大({n} 字符):请先用 read_attachment 分段查看,或改用添加账号页导入": "File too large ({n} chars). Read it in chunks with read_attachment first, or import it from the Add Account page", "新增 / 删除映射名,支持批量加前缀与同名合并到多家。": "Adds/removes mapping names, with bulk prefixing and merging a shared name across providers.", "新建会话": "New session", "无法判断这些凭证属于哪家提供商。请先问用户,或用 provider 指定(常见 id:{list})": "Cannot tell which provider these credentials belong to. Ask the user, or specify provider (common ids: {list})", "无法读取图片": "Unable to read image", "最高": "Maximum", "有什么可以帮你?可以问配置、查余额、让我改模型设置。": "How can I help? Ask about configuration, check balances, or have me change model settings.", "未命名对话": "Untitled conversation", "未知的工具:{name}": "Unknown tool: {name}", "权限模式": "Permission mode", "极低": "Minimal", "查看 API Key 详情必须指定 API Key 身份": "Specify an API key identity to view its details", "查看图片": "View image", "查看模型候选账号、跳过原因和当前路由策略。": "Shows candidate accounts, skip reasons and the current routing strategy for a model.", "查询凭证、插件和定时任务等运行事件的脱敏摘要。": "Reads redacted summaries of runtime events, including credentials, plugins and scheduled tasks.", "查询生产请求的 Token 用量、成功率、排行和趋势。": "Reads token usage, success rates, rankings and trends for production requests.", "查询用量报表": "Read usage report", "查询请求日志": "Read request logs", "查询请求状态、耗时、账号、错误与重试,不读取对话正文。": "Reads request status, latency, accounts, errors and retries without reading conversation content.", "查询账号余额": "Query account balance", "查询路由队列": "Inspect routing queue", "查询运行日志": "Read runtime logs", "标题总结失败:{message}": "Title generation failed: {message}", "标题总结提示词": "Title generation prompt", "标题总结模型": "Title generation model", "标题总结设置已保存": "Title generation settings saved", "模型「{model}」当前不在可用列表中,请重新选择;也可到「模型管理」或「插件」页检查是否已启用。": "The model \"{model}\" is not in the available list. Pick another one; you can also check whether it is enabled under Model management or on the Plugins page.", "模型名称": "Model name", "模型响应未完整结束,请重试;未执行其中的工具调用。": "The model response did not finish completely. Please retry; none of its tool calls were executed.", "模型对话": "Model chat", "模型没有返回内容": "The model returned no content", "正在思考…": "Thinking…", "正在执行": "Working", "正在生成,点右侧按钮可停止": "Generating — tap the button on the right to stop", "正在读取可用模型…": "Loading available models…", "正在读取图片…": "Loading image…", "没有可用的模型": "No models available", "没有已启用的模型,请先在「模型管理」里启用": "No enabled models. Enable some under Model management first.", "没有找到提供商「{name}」,请先不填 provider 查询,或用 keyword 搜索": "Provider \"{name}\" was not found. Query without provider first, or search with keyword", "没有找到附件「{ref}」:编号从 1 开始,也可以用文件名": "Attachment \"{ref}\" not found. Numbering starts at 1; you can also use the file name", "没有提供要修改的项目": "No items to modify were provided", "测一下当前最快的模型通不通": "Check whether the currently fastest model is reachable", "浏览": "Browse", "消息操作": "Message actions", "深度推理": "Deep reasoning", "添加图片": "Add images", "添加图片或 JSON 文件(也可粘贴或拖入)": "Add images or JSON files (or paste/drop)", "添加图片或文件": "Add image or file", "清空全部": "Clear all", "清空历史失败:{message}": "Failed to clear history: {message}", "现在有哪些账号被限流?": "Which accounts are rate limited right now?", "生成图片": "Generate images", "生成的图片": "Generated image", "用户目录": "Home folder", "看看哪些模型在多家重复了": "Show which models are duplicated across providers", "禁用会把账号移出转发队列,线路可能因此断供。": "Disabling removes the account from the forwarding queue; the route may run dry as a result.", "移除图片 {n}": "Remove image {n}", "移除文件「{name}」": "Remove file \"{name}\"", "终端": "Terminal", "编辑图片": "Edit images", "编辑消息": "Edit message", "聊天附件 {ref}": "Chat attachment {ref}", "自定义提供商模块未就绪(请刷新界面后重试)": "Custom provider module is not ready (refresh the UI and try again)", "获取模型列表": "List models", "获取账号列表": "List accounts", "获取账号详情": "Get account details", "计划": "Plan", "设置模型映射 ID": "Set model mapping ID", "请先上传参考图片,或先生成一张图片": "Upload a reference image or generate an image first", "请提供 attachment 或 content": "Provide attachment or content", "读取 {name}": "Read {name}", "读取 {name}({from}-{to} 字符)": "Read {name} ({from}-{to} chars)", "读取凭证状态、限流、并发、代理和限制器的本地快照。": "Reads a local snapshot of credentials, rate limits, connections, proxy settings and limiters.", "读取历史会话失败:{message}": "Failed to load conversation history: {message}", "读取响应不完整:{name}": "Incomplete response: {name}", "读取图片失败": "Failed to read image", "读取图片失败:{message}": "Failed to read image: {message}", "读取文件失败:{message}": "Failed to read file: {message}", "读取模型清单失败": "Failed to load the model list", "读取聊天里上传的 JSON / .info 文件,支持分页。": "Read JSON / .info files uploaded in the chat, with pagination.", "读取账号、启用状态、优先级与隐藏原因,支持筛选和分页。": "Reads accounts, enabled states, priorities and reasons for hidden accounts, with filtering and pagination.", "读取附件": "Read attachment", "读各提供商的模型清单、映射名与启用状态。": "Reads each provider's model list, mapping names, and enabled state.", "读各账号的额度 / 剩余用量。": "Reads each account's quota and remaining usage.", "调整提供商顺位": "Reorder providers", "调整账号优先级": "Adjust account priority", "账号「{name}」匹配到多条记录,请使用账号 ID:{ids}": "Account \"{name}\" matches multiple records. Use an account ID: {ids}", "账号额度": "Account quota", "跟随对话模型": "Follow chat model", "跟随模型(不指定)": "Follow model (unspecified)", "跟随网关设置": "Use gateway setting", "返回": "Back", "还没有历史对话": "No conversation history yet", "还没有配置默认模型": "No default model configured yet", "这一版网关还没有 AI 助手接口(HTTP 404),请升级网关后重试。": "This gateway version does not have the AI assistant API (HTTP 404). Upgrade the gateway and try again.", "这一版网关还没有 AI 助手接口(HTTP 404):后端还是旧的,重新编译 / 重启客户端后再试。{message}": "This gateway build doesn't have the AI assistant API yet (HTTP 404): the backend is older. Rebuild or restart the client and try again. {message}", "这一轮来回已达 {n} 次上限,我先停下等你指示(可以换个说法,或拆成几步让我做)。": "This turn has reached the {n}-round-trip limit, so I stopped for your input (try rephrasing, or split it into a few steps).", "这条会话没能存进历史:{message}": "This conversation could not be saved to history: {message}", "这次工具调用没有保存完成结果,历史回放不会重新执行。": "No completed result was saved for this tool call. Replaying history will not execute it again.", "这里只改本次会话用的模型,不会改网关里保存的默认值。": "This only changes the model for this session; the default saved in the gateway is untouched.", "连接网关失败({base}):{message}": "Failed to reach the gateway ({base}): {message}", "选择 API Key": "Select API Key", "选择 API Key…": "Select API Key…", "选择对话模型": "Choose chat model", "配置响应不完整": "Incomplete config response", "问点什么…": "Ask something…", "项目": "Project", "额度窗口": "Quota window", "首轮回答完成后自动总结;这会调用所选模型并消耗额度。": "Generate a title after the first reply completes. This calls the selected model and consumes quota.", " · 检查于 {time}": " · checked at {time}", " 已发布(当前 {current}),更新日志如下:": " has been released (current: {current}). Release notes below:", "Agent2API 一直在更新,是因为有人在背后持续投入。如果它帮到了你,欢迎请作者喝杯咖啡。": "Agent2API keeps improving because someone keeps investing time in it. If it has helped you, consider buying the author a coffee.", "GitHub Token 未填写": "GitHub Token not set", "GitHub 令牌": "GitHub Token", "GitHub 加速前缀": "GitHub accelerator prefix", "GitHub 接口限流中,请在 {seconds} 秒后重试": "The GitHub API is rate-limited. Try again in {seconds} seconds.", "GitHub 接口限流中,请在「插件设置」的「GitHub 令牌」中填写凭证,以提高请求限额。": "The GitHub API is rate-limited. Enter your credentials under GitHub Token in Plugin settings to increase the request limit.", "GitHub 接口限流中,请在「更新设置」的「GitHub 令牌」中填写凭证,以提高请求限额。": "The GitHub API is rate-limited. Enter your credentials under GitHub Token in Update settings to increase the request limit.", "GitHub 接口限流中,请稍后重试": "The GitHub API is rate-limited. Try again later.", "GitHub 源「{source}」限流,{seconds} 秒后可重试(上游未提供恢复时间)": "GitHub source “{source}” is rate-limited. Retry in {seconds} seconds (no reset time was provided).", "GitHub 源「{source}」限流,请在 {seconds} 秒后重试": "GitHub source “{source}” is rate-limited. Try again in {seconds} seconds.", "GitHub 访问方式": "GitHub access mode", "GitHub 访问设置已保存": "GitHub access settings saved", "QQ 群": "QQ group", "QQ 群 / Telegram 都在这里": "QQ groups and Telegram are all here", "QQ 群 {n}": "QQ group {n}", "Telegram 群": "Telegram group", "Windows 服务一键更新会核验官方更新包,再由独立升级进程停止服务、备份替换并重新启动。账号与配置保留,确认新版运行后页面自动刷新。": "Windows service updates verify the official package, then a separate updater stops the service, backs up and replaces files, and starts it again. Accounts and settings are preserved. The page refreshes after the new version is confirmed running.", "Windows 服务升级权限或目录保护不符合要求。请以管理员身份重跑新版 install-service.ps1;自定义服务账号或外部托管环境请按原方式升级。": "The Windows service permissions or directory protection do not meet update requirements. Run the new install-service.ps1 as administrator. Custom service accounts or externally managed environments should use their existing upgrade procedure.", "Windows 服务部署需要手动升级。请解压新版服务端包,以管理员身份运行 install-service.ps1;账号与配置会保留。": "Windows services require manual upgrades. Extract the new server package and run install-service.ps1 as administrator. Accounts and settings are preserved.", "beta 版可能不稳定。两项同时开启时,按版本号选择最高版本,不会降级;安装到正式版或 beta 版后仍保留关注选择。": "Beta builds may be unstable. With both channels enabled, the highest version is selected without downgrading. Your channel choices remain unchanged after installing either a stable or beta release.", "systemd 一键更新由受限升级程序完成:下载、核验官方校验值、备份替换、重启并确认版本。网关保持普通账号运行,账号与配置不变。": "A restricted helper handles systemd updates: download, official checksum verification, backup, replacement, restart and version confirmation. The gateway keeps running as an unprivileged user. Accounts and settings are preserved.", "{message};其他线路可重新检查": "{message} Other routes can be checked again.", "{ms} 毫秒": "{ms} ms", "{seconds} 秒后可重试": "Retry in {seconds} seconds", "{version} 已就位,服务正在重启,页面会在恢复后自动刷新…({seconds}s)": "{version} is in place. The service is restarting; this page will refresh automatically once it is back… ({seconds}s)", "{version}(预发布)": "{version} (Pre-release)", "✅ GitHub 令牌已保存(加密存储,界面不再显示)": "✅ GitHub Token saved (stored encrypted; it will no longer be shown in the UI)", "✅ 已加入 beta 版,之后的检查会包含 beta 版": "✅ Joined the beta channel; later checks will include beta builds", "✅ 已清除界面保存的 GitHub 令牌(环境变量若配置过则继续生效)": "✅ Cleared the GitHub Token saved in the UI (a configured environment variable still applies)", "✅ 已退出 beta 版,之后的检查只看正式版": "✅ Left the beta channel; later checks only look at stable releases", "✅ 数据升级完成({n} 项)": "✅ Data migration complete ({n} items)", "✅ 更新出网已切换为 {label}": "✅ Outbound route for updates switched to {label}", "✅ 更新出网已切换为直连": "✅ Outbound route for updates switched to Direct connection", "✅ 自动检查更新已保存": "✅ Automatic update checks saved", "一键更新": "One-click update", "一键更新入口不可用,请刷新页面后重试。": "One-click updates are unavailable. Refresh the page and try again.", "一键更新服务端?": "Update the server now?", "一键更新组件不可用或权限配置不正确。请使用新版安装包执行 sudo bash install.sh --upgrade 修复。": "The update helper is unavailable or its permissions are incorrect. Run sudo bash install.sh --upgrade from the new package to repair it.", "上次 GitHub 限流的等待时间已结束,可重新检查": "The previous GitHub rate-limit wait has ended. You can check again.", "上次结果:{state}": "Previous result: {state}", "上游未提供恢复时间,按 GitHub 建议短暂等待": "No reset time provided; briefly waiting as GitHub recommends", "下载中": "Downloading", "下载失败": "Download failed", "下载失败:{error}": "Download failed: {error}", "下载已取消,可重新点击「下载并安装」。": "Download canceled. Click \"Download and install\" to try again.", "下载已取消,可重新点击「下载并更新」。": "Download cancelled; click \"Download and update\" to try again.", "下载并安装": "Download and install", "下载并更新": "Download and update", "下载服务端包": "Download server package", "不支持此类请求": "Request type not supported", "与 gh-proxy.com 属于同一服务的备用线路。": "An alternative route from the same service as gh-proxy.com.", "与网关的软件更新和插件共用设置;APK 下载由手机联网,GitHub 令牌不会发送给加速站。": "Shares settings with gateway updates and plugins. APK files are downloaded by the phone; GitHub tokens are never sent to the accelerator.", "与软件更新共用出网代理和 GitHub 凭证,修改任意一处都会同步生效。": "Shares the egress proxy and GitHub credentials with software updates. Changes in either place take effect in both.", "个人开发并开源维护,免费使用,也不会收集你的账号数据。如果它帮到了你,欢迎到项目仓库点个 Star 支持一下。": "Independently developed and open-source maintained. It is free to use, and never collects your account data. If it helps you, a Star on the project repository would be much appreciated.", "仅 beta 版": "Beta only", "仅官方源": "Official source only", "仅插件索引和文件下载,不支持版本查询": "Plugin indexes and downloads only; release queries are not supported", "仅正式版": "Stable only", "仓库暂无发布版本。{at}": "This repository has no releases yet.{at}", "代理列表读取失败": "Failed to load the proxy list", "令牌已生效,但写入磁盘失败(重启后会丢失)": "The Token is now active, but writing to disk failed (it will be lost after a restart)", "以上状态来自网关;APK 下载会由手机按本机网络重新选择通道。": "These results are from the gateway. APK downloads select a route using the phone’s own network.", "优先使用加速源,访问失败后回退官方源;不会绕过 GitHub 限流冷却。": "Uses the accelerator first and falls back to the official source on failure. GitHub rate-limit cooldowns are respected.", "优先加速源": "Preferred accelerator", "优先访问官方源,连接失败后尝试加速源;短期记住成功的源,定期恢复官方优先。": "Tries the official source first, then the accelerator if the connection fails. Remembers successful sources briefly and periodically retries the official source.", "允许本机自动检查": "Allow automatic checks on this device", "先使用指定加速源,失败后尝试其他已启用的加速源,最后回退官方源。": "Try the selected accelerator first, then other enabled accelerators, and finally the official source.", "关于作者": "About the author", "关注 beta 版更新": "Follow beta updates", "关注正式版更新": "Follow stable updates", "出网线路与 GitHub 令牌设置": "Outbound route and GitHub Token settings", "出网线路已切换,但写入磁盘失败(重启后会恢复原线路)": "Outbound route switched, but writing to disk failed (the old route will be restored after a restart)", "分别探测版本查询、插件索引和文件下载,选择最快返回有效内容的源;成功线路短期复用,失败自动切换。": "Check release queries, plugin indexes and downloads separately. Use the first valid response, briefly reuse successful routes and switch on failure.", "分钟({min} ~ {max})": "minutes ({min}–{max})", "到 GitHub 发布页下载": "Download from the GitHub release page", "到点自动向 GitHub 查询新版本,查到就走「检测到更新」弹窗;关闭后「检查更新」按钮仍可手动触发": "Checks GitHub for new versions on schedule and opens the \"Update available\" dialog when one is found; dismissing it still leaves manual checks available via the Check for updates button", "加入 beta 版": "Join the beta channel", "加入交流群": "Join the community", "加速源优先": "Accelerator first", "单独设置": "Configure separately", "即将满员": "Almost full", "即将满员,请优先加3群、4群": "Almost full — please join group 3 or 4 first", "去更新": "Update now", "发布页上没有 {wanted} 这个文件": "The release page has no file named {wanted}", "发布页上没有对应本机架构的服务端更新包": "The release page has no server update package for this machine's architecture", "发布页上的文件被更新源的访问方式过滤掉了,请检查「更新设置」里的 GitHub 访问方式": "The files on the release page were filtered out by your update source settings. Check the GitHub access mode in Update settings.", "发现新版本 {latest}(当前 {current})。{at}": "New version {latest} is available (current: {current}).{at}", "发现新版本 {latest}(当前 {current})。{reason}{at}": "Version {latest} is available (current: {current}). {reason}{at}", "发现新版本 {latest}(当前 {current}),但该版本没有提供容器内更新包({reason});请在宿主机执行 docker compose pull && docker compose up -d 升级。{at}": "New version {latest} found (current: {current}), but this release provides no in-container update package ({reason}). Upgrade on the host with docker compose pull && docker compose up -d.{at}", "发现新版本 {latest}(当前 {current}),但这一版没有提供本机安装包({reason});可到 GitHub 发布页手动下载。{at}": "New version {latest} is available (current: {current}), but this release provides no installer for this machine ({reason}). You can download it manually from the GitHub release page.{at}", "取消下载": "Cancel download", "取消失败:{error}": "Failed to cancel: {error}", "只访问 GitHub 官方源,仍使用所选出网代理。": "Uses only the official GitHub source, through the selected outbound proxy.", "可安装": "Ready to install", "启动失败": "Launch failed", "启动安装程序失败:{error}": "Failed to launch the installer: {error}", "启用加速源 {source}": "Enable accelerator {source}", "在 GitHub 查看完整说明": "View full release notes on GitHub", "在 QQ 里搜索群号即可加入。": "Search the group number in QQ to join.", "在宿主机执行 docker compose pull && docker compose up -d 即可升级。": "Run docker compose pull && docker compose up -d on the host to upgrade.", "在浏览器中打开": "Open in browser", "在浏览器中打开 GitHub 发布页": "Open the GitHub release page in your browser", "在浏览器中打开项目仓库,点 Star 支持作者": "Open the project repository in your browser and Star it to support the author", "在默认浏览器中打开 GitHub 的令牌创建页(备注已预设,无需勾选任何权限,直接点 Generate token)": "Open GitHub's Token creation page in your default browser (the note is prefilled, no scopes need to be selected—just click Generate token)", "填写后检查限额 60 → 5000 次/小时(创建令牌无需勾选任何权限)": "Fill it in to raise the check rate limit from 60 to 5000 requests/hour (no scopes needed to create the Token)", "填写支持 Raw、Release 和 GitHub API 的 HTTPS 加速站前缀,留空恢复默认。": "Enter an HTTPS accelerator prefix supporting Raw, Releases and the GitHub API. Leave blank to restore the default.", "复制群号 {group}": "Copy group number {group}", "安装中": "Installing", "安装包": "installer", "安装包已下载完成,正在启动安装程序(需要管理员权限,会弹出 UAC 确认框)…": "Installer downloaded. Launching the installer (admin rights required; a UAC prompt will appear)…", "安装包已下载完成,正在启动新的 AppImage…": "Installer downloaded; launching the new AppImage…", "安装包已下载完成,正在打开系统安装器…": "Installer downloaded; opening the system installer…", "安装包已下载完成,正在挂载磁盘映像…": "Installer downloaded. Mounting the disk image…", "安装包已就绪:{name}。点击「安装并重启」后会启动新的 AppImage;把它移动到你的应用目录并替换旧文件即完成升级(本程序会先退出以释放文件占用)。": "Installer ready: {name}. \"Install and restart\" launches the new AppImage; move it to your applications folder and replace the old file to finish the upgrade (this app quits first to release the file).", "安装包已就绪:{name}。点击「安装并重启」后需要管理员权限,会弹出 UAC 确认框。": "Installer ready: {name}. Clicking \"Install and restart\" requires admin rights and will show a UAC prompt.", "安装包已就绪:{name}。点击「打开安装包」后会交给系统安装器,按提示输入密码即可完成安装(本程序无需退出)。": "Installer ready: {name}. \"Open installer\" hands it to the system installer — enter your password when prompted (this app does not need to quit).", "安装包已就绪:{name}。点击「打开安装包」后会挂载磁盘映像,把应用拖进「应用程序」即可完成安装。": "Installer ready: {name}. Clicking \"Open installer\" mounts the disk image; drag the app into Applications to finish installing.", "安装包已挂载,请在弹出的窗口里把应用拖进「应用程序」完成安装。安装完成后重新打开本程序即可。": "The disk image is mounted. Drag the app into Applications in the window that appeared to finish installing, then reopen this app.", "安装失败": "Installation failed", "安装失败:{error}": "Installation failed: {error}", "安装并重启": "Install and restart", "安装程序已启动,本程序将退出以便完成覆盖安装。安装程序需要管理员权限,会弹出 UAC 确认框,请选择「是」。": "The installer has started. This app will exit so the update can replace it. The installer needs admin rights; when the UAC prompt appears, choose \"Yes\".", "官方源": "Official source", "容器内更新:更新包从 GitHub 发布页下载,校验 sha256 后由面板替换容器内的程序与界面文件,再重启服务(容器由 restart 策略拉起,页面会自动刷新)。更新的是容器里的文件,compose 里的镜像标签不变 —— 之后执行 docker compose pull && up -d 会使用镜像里的版本。检查更新与下载的出网线路、GitHub 令牌都在「更新设置」里。": "In-container update: the package is downloaded from the GitHub releases page, verified by sha256, and the panel then replaces the program and UI files inside the container before restarting the service (the container is brought back by its restart policy, and this page refreshes automatically). Only the files inside the container are updated — the image tag in your compose file stays the same, so a later docker compose pull && up -d uses the image version. The egress route and GitHub token used for checking and downloading live in \"Update settings\".", "将更新至 {version}。下载和校验完成后会短暂停止服务、替换程序并自动重启;账号与配置会保留。确认后无需再次点击安装。": "Update to {version}? Once downloaded and verified, the service will briefly stop, the files will be replaced and the service will restart automatically. Accounts and settings are preserved. No further installation click is needed.", "已加密存储在本地,不显示具体值;粘贴新令牌可覆盖": "Stored encrypted locally and never displayed; paste a new Token to overwrite it", "已取消": "Canceled", "已填写": "Saved", "已填写(粘贴新令牌可覆盖)": "Saved (paste a new Token to overwrite)", "已打开系统安装器,请在它弹出的窗口里完成安装。安装完成后重新打开本程序即可。": "The system installer is open — finish the installation in its window, then reopen this app.", "已是最新": "Up to date", "已更新至 {version},服务已恢复。": "Updated to {version}. The service is back online.", "已替换为 {version},正在重启服务…": "Replaced with {version}; restarting the service…", "已配置 GITHUB_TOKEN 环境变量,界面保存的令牌优先于它": "The GITHUB_TOKEN environment variable is set; a Token saved in the UI takes precedence over it", "开启后只更新到 beta 版(预发布),取版本最高的一个;beta 版可能不稳定。开启期间不会因为正式版发布而自动切回正式版 —— 想切回请关闭本开关。关闭后只更新到正式版,且不会降级到版本号更低的版本。": "When on, updates come only from beta (pre-release) builds, always the highest version; beta builds may be unstable. While it stays on, a stable release will not switch you back automatically — turn this off to go back. When off, updates come only from stable releases and never downgrade to a lower version.", "开始更新": "Start update", "当前 Windows 服务尚未接入一键更新。请解压新版服务端包,以管理员身份运行一次 install-service.ps1,原有账号、目录、端口和配置会保留。": "One-click updates are not set up for this Windows service. Extract the new server package and run install-service.ps1 once as administrator. Existing accounts, directories, ports and settings will be preserved.", "当前下载通道:{source}": "Download source: {source}", "当前为直接运行的服务端,请停止程序后替换服务端包,再重新启动。": "This server runs without a service manager. Stop it, replace the server files and start it again.", "当前关注:{channels}": "Following: {channels}", "当前安装尚未接入一键更新。请下载新版服务端包,执行一次 sudo bash install.sh --upgrade;之后即可在面板更新。": "One-click updates are not installed yet. Download the new server package and run sudo bash install.sh --upgrade once. Future updates can then be installed from the panel.", "当前已是最新版本({current})。{at}": "You already have the latest version ({current}).{at}", "当前版本": "Current version", "当前系统或架构暂不支持面板自动安装,请查看发布页。": "Automatic installation is not supported on this system or architecture. Check the release page.", "当前线路不可用:{error};请重新选择代理或切回直连": "The current route is unavailable: {error}; select another proxy or switch back to a direct connection", "当前网关仍使用旧版单源设置,升级网关后可管理多个加速源。": "This gateway still uses legacy single-source settings. Upgrade it to manage multiple accelerators.", "当前需要手动升级": "Manual upgrade required", "当前:自动检查关闭": "Automatic checks are off", "当前:自动检查开启,每 {n} 分钟": "Automatic checks are on, every {n} minutes", "待重启": "Restart pending", "待重新检查": "Needs a new check", "微信赞赏": "WeChat", "微信赞赏码": "WeChat donation code", "打开 GitHub 令牌页面": "Open GitHub Token page", "打开安装包": "Open installer", "打开链接失败:{error}": "Failed to open the link: {error}", "指定代理": "Selected proxy", "指定加速源优先": "Selected accelerator first", "按上游返回时间": "Using the upstream reset time", "插件索引": "Plugin index", "插件默认跟随这里的更新通道、自动检查和间隔;可在插件设置中单独设置。": "Plugins follow these update channels, automatic checks and interval by default. You can configure them separately in Plugin settings.", "支付宝": "Alipay", "支付宝收款码": "Alipay payment QR code", "支持作者": "Support the author", "支持版本查询": "Supports release queries", "收藏项目": "Star project", "数据升级失败:{error}(旧数据仍在原处,下次启动会自动重试)": "Data migration failed: {error} (the old data is still in place; it will be retried automatically on the next launch)", "数据升级未全部完成(已导入 {n} 项,仍有数据待导入,下次启动会自动重试)": "Data migration incomplete ({n} items imported; the remaining data will be imported on the next launch)", "数据升级:没有需要导入的旧数据": "Data migration: no old data to import", "文件下载": "File download", "新版本 ": "New version ", "无法开始更新:{error}": "Unable to start the update: {error}", "无法比较": "Cannot compare", "无法解密": "Cannot decrypt", "无法读取更新信息": "Unable to read update information", "显示的是当前网络下的响应耗时,不代表长期稳定性或完整下载速度。未探测的源会在实际更新时检查。": "Times reflect responses on the current network, not long-term reliability or full download speed. Unchecked sources are checked during actual updates.", "暂未确认服务恢复,请检查服务器状态后刷新页面;不会自动重复安装。": "Service recovery has not been confirmed. Check the server and refresh this page. Installation will not repeat automatically.", "更新任务已结束,但当前运行版本与目标不一致,请检查服务日志。": "The update task ended, but the running version differs from the target. Check the service logs.", "更新出网代理": "Outbound proxy for updates", "更新包从 GitHub Release 获取。自动模式按实际请求选择可用通道,失败后换源;镜像安装包必须匹配官方校验值,取不到时仅使用原始源。加速源、代理和令牌在「更新设置」中配置,指定代理失效不会静默直连。": "Update packages come from GitHub Releases. Automatic mode selects sources using real requests and switches on failure. Mirrored installers must match an official checksum; without one, only the original source is used. Configure accelerators, proxies and tokens in Update settings. An unavailable selected proxy never silently falls back to a direct connection.", "更新包从 GitHub Release 获取,下载后交给本平台安装器。GitHub 访问方式、加速前缀、出网代理和令牌在「更新设置」中配置。默认官方优先,连接失败后尝试加速源;镜像安装包必须匹配官方校验值,取不到时仅使用原始源。指定代理失效会明确报错,不会静默改走直连。": "Update packages come from GitHub Releases and open in your platform installer after download. Configure the GitHub access mode, accelerator prefix, outbound proxy and token in Update settings. The official source is tried first by default, then the accelerator if the connection fails. Mirrored installers must match an official checksum; without one, only the original source is used. An unavailable selected proxy reports an error instead of silently switching to a direct connection.", "更新包从 GitHub 发布页下载,下载完成后可直接启动安装程序并自动重启本程序。安装包会先校验来源域名与文件完整性。检查更新与下载安装包的出网线路、GitHub 令牌都在「更新设置」里:线路默认直连(直连失败时自动借 Clash Verge 的混合端口重试一次),选定指定出口后只走该出口;填写 GitHub 令牌可把检查限额从 60 次/小时提高到 5000 次/小时。": "Update packages are downloaded from the GitHub releases page; once downloaded, the installer can be started directly and this app restarts automatically. The installer verifies the source domain and file integrity first. The outbound route and GitHub Token for update checks and installer downloads are both in Update settings: the route defaults to a direct connection (if that fails, it automatically retries once through Clash Verge's mixed port), and once a specific proxy is selected only that route is used; filling in a GitHub Token raises the check rate limit from 60 to 5000 requests/hour.", "更新包已就绪:{name}。点「安装并重启」后,面板会校验并替换容器内的程序与界面文件,然后重启服务(页面会自动刷新)。": "Update package ready: {name}. After you click \"Install and restart\", the panel verifies and replaces the program and UI files inside the container, then restarts the service (the page refreshes automatically).", "更新失败": "Update failed", "更新失败:{error}": "Update failed: {error}", "更新完成": "Update complete", "更新已应用到容器内,重启服务后生效。{at}": "The update has been applied inside the container and takes effect after the service restarts.{at}", "更新已应用到容器内,重启服务后生效。{at}(本次检查失败:{error})": "The update has been applied inside the container and takes effect after the service restarts.{at} (this check failed: {error})", "更新日志": "Release notes", "更新设置": "Update settings", "更新进行中": "Update in progress", "更新通道已保存": "Update channels saved", "更新通道已改变,请重新检查更新。": "Update channels changed. Check for updates again.", "替换完成,正在重启服务…": "Replacement complete; restarting the service…", "最多保留 6 个 HTTPS 加速源;自定义源可关闭版本查询支持。": "Keep up to 6 HTTPS accelerators. Release queries can be disabled for custom sources.", "最新发布版本为 {latest},但当前版本号「{current}」无法解析,未做新旧判断。{at}": "The latest release is {latest}, but the current version \"{current}\" cannot be parsed, so no comparison was made.{at}", "最新版本": "Latest version", "最近采用": "Last used", "有新版本": "New version", "服务正在重启,页面会在恢复后自动刷新…({seconds}s)": "The service is restarting; this page will refresh automatically once it is back… ({seconds}s)", "服务端压缩包": "Server archive", "未找到适用的更新包": "No suitable update package", "未找到适用的更新包。需要:{wanted};发布页包含的文件类型:{seen}。": "No suitable update package was found. Required: {wanted}. File types on the release page: {seen}.", "未探测": "Not checked", "未检查": "Not checked", "本工具由": "This tool is built by", "查看发布页": "View release page", "校验中": "Verifying", "检查中": "Checking", "检查中…": "Checking…", "检查失败": "Check failed", "检查更新": "Check for updates", "检查更新与下载安装包使用所选线路;未选择代理时先直连,失败后尝试 Clash Verge 混合端口;指定代理不可用时不会自动改走直连。": "Update checks and installer downloads use the selected route. Without a proxy selection, a direct connection is tried first, followed by the Clash Verge mixed port if it fails. An unavailable specified proxy never falls back to a direct connection.", "检查更新与下载安装包使用所选线路;未选择代理时直连,指定代理不可用时不会自动改走直连。": "Update checks and installer downloads use the selected route. With no proxy selected, connections are direct; an unavailable selected proxy will not automatically fall back to direct connections.", "检查更新与下载安装包走哪条线路(当前:{current});选择即保存。选项来自「网络代理」页;直连失败时会自动借 Clash 混合端口重试一次,选定指定代理后只走它": "Which route update checks and installer downloads use (current: {current}); your choice is saved immediately. Options come from the Network proxy page; if a direct connection fails, it automatically retries once through Clash's mixed port, and once a specific proxy is selected only that route is used", "检查更新失败:{error}": "Update check failed: {error}", "检查更新失败:{error}(以下版本与更新日志来自上次成功检查,检查于 {time})": "Update check failed: {error} (the versions and release notes below are from the last successful check at {time})", "检查计划": "Check schedule", "检查间隔必须是 {min} ~ {max} 分钟": "The check interval must be {min}–{max} minutes", "检查间隔(分钟)": "Check interval (minutes)", "检测到更新": "Update available", "检测到自定义程序或界面路径,一键更新不会覆盖这些位置。请按原部署方式升级。": "Custom program or panel paths were detected. One-click updates will not overwrite them. Use your existing deployment procedure.", "正在下载 {name}:{percent}%({received} / {total} MB)": "Downloading {name}: {percent}% ({received} / {total} MB)", "正在下载 {version} 的服务端更新包…": "Downloading the server update for {version}…", "正在下载安装包…(下载完成后会交给系统安装器,按提示输入密码即可完成安装)": "Downloading the installer… (once done it is handed to the system installer; enter your password when prompted).", "正在下载安装包…(下载完成后会启动新的 AppImage;把它替换掉旧文件即完成升级)": "Downloading the installer… (once done the new AppImage launches; move it over the old file to finish the upgrade).", "正在下载安装包…(下载完成后会挂载磁盘映像,把应用拖进「应用程序」即可完成安装)": "Downloading installer… (when it finishes, the disk image will be mounted; drag the app into Applications to complete the installation)", "正在下载安装包…(下载完成后启动安装程序需要管理员权限,会弹出 UAC 确认框)": "Downloading installer… (when it finishes, starting the installer requires admin rights and will show a UAC prompt)", "正在下载服务端更新包…(下载完成后由面板完成替换,重启容器内的服务后生效)": "Downloading the server update package… (the panel replaces the files once the download finishes; the update takes effect after the service inside the container restarts)", "正在取消下载…": "Canceling the download…", "正在备份并替换服务端程序与界面,请勿关闭服务器…": "Backing up and replacing the server and panel files. Do not shut down the server…", "正在把旧数据导入 SQLite 数据库(旧文件会保留,不会删除)…": "Importing old data into the SQLite database (old files are kept, not deleted)…", "正在查询 GitHub 上的最新发布版本…": "Checking GitHub for the latest release…", "正在校验并替换容器内的程序与界面文件…": "Verifying and replacing the program and UI files inside the container…", "正在独立核验官方更新包,校验通过前不会修改现有程序…": "Independently verifying the official update. Existing files will not change until verification succeeds…", "正在选择下载通道…": "Selecting a download source…", "正在重启服务并确认新版本,页面恢复后会自动刷新…": "Restarting the service and verifying the new version. This page will refresh after recovery…", "正式版与 beta 版": "Stable and beta", "没有可下载的安装包": "No installer available for download", "没有可下载的安装包:{reason}": "No installer available for download: {reason}", "没有启用的加速源,将只使用官方源。": "No accelerators are enabled. Only the official source will be used.", "沿用已记录的恢复时间": "Using the previously recorded reset time", "点击「检查更新」后,这里会显示最新版本的更新说明。": "After you click \"Check for updates\", the release notes for the latest version will appear here.", "点击「检查更新」查询 GitHub 上的最新发布版本。": "Click \"Check for updates\" to query GitHub for the latest release.", "点击「检查更新」查询最新发布版本。": "Click \"Check for updates\" to query the latest release.", "点击在浏览器中打开": "Click to open in your browser", "点击复制群号": "Click to copy the group number", "版本 {version} · 按 GitHub 访问设置下载安装包": "Version {version} · Downloads installers using GitHub access settings", "版本查询": "Release query", "版本查询、插件索引、文件下载": "Release queries, plugin indexes and downloads", "状态来自最近一次实际请求,并非实时测速。过期后标为待重新检查;限流只暂停对应线路,其他线路仍可使用。": "These are results from the latest real requests, not live speed tests. Expired results need a new check. Rate limits pause only the affected route; other routes remain available.", "环境变量": "Environment variable", "立即重启": "Restart now", "等待恢复": "Waiting for recovery", "管理员已关闭面板一键更新,请使用手动升级方式。": "An administrator has disabled one-click updates. Please upgrade manually.", "粘贴 GitHub 令牌(ghp_… / github_pat_…)": "Paste GitHub Token (ghp_… / github_pat_…)", "网关已关闭自动检查,此处只做手动检查": "The gateway has disabled automatic checks. Only manual checks are available here.", "群号": "Group number", "群号:{group}": "Group number: {group}", "自动检查更新": "Automatic update checks", "自动选择最快可用源": "Automatically select the fastest available source", "自动(官方优先)": "Automatic (official first)", "自定义加速前缀": "Custom accelerator prefix", "至少需要关注正式版或 beta 版中的一个通道": "Follow at least one channel: stable or beta.", "补充内置备用源": "Add missing built-in sources", "记录于 {time}": "Recorded at {time}", "请先粘贴 GitHub 令牌": "Paste a GitHub Token first", "请检查服务日志": "Please check the service logs", "读取下载进度失败:{error}": "Failed to read download progress: {error}", "读取中": "Loading", "赞赏完全自愿,不解锁任何功能,也不影响正常使用。": "Donations are entirely voluntary. They do not unlock any features or affect normal use.", "赞赏方式": "Donation method", "跟随软件": "Follow software settings", "跳过此次更新": "Skip this update", "软件更新": "Software update", "软件更新与插件共用此设置;GitHub 令牌仅发送给官方 API。镜像安装包需要官方校验值,镜像插件包需要可信签名。": "Software updates and plugins share this setting. GitHub tokens go only to the official API. Mirrored installers require an official checksum; mirrored plugins require a trusted signature.", "软件版本检查设置不可用": "Software update check settings are unavailable.", "返回内容异常": "Invalid response content", "这一版只有 {seen},没有本机需要的 {wanted}": "This release only contains {seen}; it has no {wanted} for this machine", "这一版没有为当前平台提供安装包": "This release provides no installer for the current platform", "这一版没有发布本机需要的安装包({wanted})": "This release did not publish the installer this machine needs ({wanted})", "这一版没有提供容器内更新包": "This release provides no in-container update package", "这一版没有提供容器内更新包:{reason}": "This release provides no in-container update package: {reason}", "这一版没有提供本机安装包": "This release provides no installer for this machine", "这一版还没有上传任何文件(构建可能失败,或仍在打包上传)": "No files have been uploaded for this release yet (the build may have failed, or uploads are still in progress)", "这个版本没有填写发布说明。": "No release notes were provided for this version.", "连接超时": "Connection timed out", "通道已切换,但写入磁盘失败(重启后会回到原设置)": "Channel switched, but writing to disk failed (the old setting will be restored after a restart)", "遇到问题或有使用心得,欢迎到群里交流。": "Questions and tips are welcome in any of these groups.", "重启中": "Restarting", "重新粘贴保存一次即可自愈": "Paste and save it again to recover", "重试下载": "Retry download", "链接地址不受支持": "Unsupported link", "限流冷却中": "Waiting for rate limit reset", "面板自动安装": "Automatic installation from panel", "预发布": "Pre-release", "默认开启;即使当前使用 beta 版,也可收到版本号更高的正式版更新。": "Enabled by default. Even on a beta build, you can receive stable releases with a higher version.", "默认跟随软件的正式版和 beta 关注选择;单独设置只影响插件。始终按版本号选择更新,不会降级。": "Follows the software’s stable and beta channel choices by default. Separate settings affect only plugins. Updates are selected by version and never downgrade.", "默认跟随软件的自动检查和间隔。关闭自动检查也会暂停插件自动更新和自动下载;手动检查与安装不受影响。": "Follows the software’s automatic checks and interval by default. Turning off automatic checks also pauses automatic plugin updates and downloads. Manual checks and installation remain available.", "(检查于 {time})": " (checked at {time})", "API Key 列表": "API Key list", "Key 已停用": "Key disabled", "Key 已删除": "Key deleted", "Key 已启用": "Key enabled", "Key 至少需要 8 个字符": "Key must be at least 8 characters", "✅ Key 已创建,记得复制给客户端": "✅ Key created — remember to copy it to your client", "✅ 可用范围已保存": "✅ Allowed scope saved", "不限制": "No restrictions", "与": " and ", "例如 Cursor / 公司电脑": "e.g. Cursor / Work laptop", "保存失败:{reason}": "Save failed: {reason}", "保存范围": "Save scope", "创建": "Create", "创建时间": "Created", "删除网关 Key": "Delete gateway key", "助手图片工具": "Assistant image tools", "助手标题总结": "Assistant title summary", "可用提供商": "Available providers", "可用提供商:{names}": "Available providers: {names}", "可用模型": "Available models", "可用模型:{names}": "Available models: {names}", "可用范围": "Allowed scope", "可用范围 · {name}": "Allowed scope · {name}", "启用「{name}」": "Enable \"{name}\"", "复制 Key": "Copy key", "客户端请求需带 ": "Client requests must include ", "已删除": "Deleted", "已启用鉴权 · {n} 把 Key 生效": "Auth enabled · {n} keys active", "当前不限制:这把 Key 可以用全部提供商与全部对外模型": "No restrictions: this key can use all providers and all public models", "所选 API Key 已不可用": "The selected API Key is unavailable", "所选 API Key 已不可用,请重新选择": "The selected API Key is unavailable. Select another key.", "提供商:{names}": "Providers: {names}", "搜索模型…": "Search models…", "操作失败:{reason}": "Operation failed: {reason}", "新建 API Key": "New API Key", "日活保活": "Daily activity keepalive", "显示": "Shown", "未启用鉴权": "Auth not enabled", "未命名": "Untitled", "未提供客户端标识": "No client identifier provided", "未知客户端": "Unknown client", "模型调用使用所选 Key 的权限,日志记录 Key 名称,不保存密钥值。": "Model calls use the selected key's permissions. Logs record its name, never the secret value.", "模型:{names}": "Models: {names}", "正在读取 API Key…": "Loading API keys…", "没有匹配的选项": "No matching options", "没有可用的 API Key,请先在「网关 Key」页创建并启用": "No API key is available. Create and enable one on the Gateway Key page.", "留空 = 不限制": "Blank = no restriction", "留空自动生成;手填至少 8 个字符": "Leave blank to auto-generate; enter at least 8 characters manually", "留空表示不限制;同时设置时请求需同时满足两个条件(模型在白名单内且路由到允许的提供商)。 「可用模型」的候选跟着上面勾选的提供商走:没勾提供商时它是空的(还没有约束范围), 勾了几家就列出这几家能收的全部对外名。": "Leave blank for no restriction; when both are set, requests must satisfy both conditions (the model is on the allowlist and routing resolves to an allowed provider). \"Available models\" candidates follow the providers checked above: with none checked it is empty (no scope constrained yet), and with a few checked it lists all the public names those providers accept.", "确定删除 Key「{name}」?使用它的客户端会立刻无法访问。": "Delete key \"{name}\"? Clients using it will lose access immediately.", "网关 Key 表": "Gateway key table", "自动记住本次选择,下次打开继续使用;Key 被停用或删除后需重新选择。": "Your selection is remembered for next time. Select another key if it is disabled or deleted.", "请先在上面选择可用提供商": "Select available providers above first", "读取 Key 列表失败:{reason}": "Failed to load key list: {reason}", "还没有 Key,当前不鉴权": "No keys yet — auth is currently off", "这几家当前没有可用模型(账号未登录或清单为空)": "These providers currently have no available models (accounts not signed in or catalog empty)", "这把 Key 不限制提供商与模型(可用全部上游与全部对外模型)": "This key is not restricted by provider or model (all upstreams and all public models are available)", "限制:{text}": "Restrictions: {text}", "隐藏": "Hide", "(模型候选需先选提供商;不选则沿用当前这几项,保存后仍按模型白名单生效)": "(model candidates require selecting providers first; if none are selected the current entries are kept, and the model allowlist still applies after saving)", "(行内「可用范围」):留空 = 不限制,两个都设时 按交集生效 —— 被限制的模型对这把 Key 表现为「不存在」(拉 /v1/models 也看不到它), 提供它的家不在可用列表里时请求同样被拒。": " (the inline \"Allowed scope\"): leave blank = no restriction; when both are set, the intersection applies — a restricted model simply \"does not exist\" for this key (it will not appear when fetching /v1/models either), and requests are also rejected when the provider offering it is not in the allowed list.", "+ 新建 Key": "+ New key", "; 修改后立即生效,本程序自身会自动使用第一把启用的 Key。每把 Key 可单独限制": "; changes take effect immediately, and this app itself automatically uses the first enabled key. Each key can restrict ", ";修改后立即生效。模型测试、助手和日活保活必须选择 Key,受限 Key 不能访问管理接口。每把 Key 可单独限制": "; changes take effect immediately. Model tests, the assistant, and daily keepalive must use a selected Key. Restricted Keys cannot access management endpoints. Each Key can separately restrict ", ";当前必须带 Key。": "; an enabled Key is required.", " AI 账号专用静态住宅 IP:Scamalytics 低欺诈评分,不限流量,首单 75 折(AGENT2API25)": " native static residential IPs for AI accounts: low Scamalytics fraud score, unlimited traffic, 25% off your first purchase (AGENT2API25)", " 提供 AI 账号专用的原生静态住宅 IP(Static Residential ISP):IP 来自真实家庭宽带运营商,Scamalytics 低欺诈评分,每个 IP 独享,不限流量,$3.90 起。": " offers native static residential ISP proxies for AI accounts (Static Residential ISP): IPs come from real home broadband operators with low Scamalytics fraud scores, each IP is dedicated to you, with unlimited traffic, from $3.90.", " 那一类由「同步 Clash Verge」 镜像进来(进入本页时会自动同步一次):名称、端口、启用都跟随 Clash, 在 Clash 里改或删,这里跟着变 —— 所以它们只读,改请到 Clash Verge 里改。": " entries are mirrored in by \"Sync Clash Verge\" (auto-synced once when you enter this page): name, port, and enabled state all follow Clash — edit or delete them there and they change here too, so these entries are read-only; make your changes in Clash Verge.", "Clash Verge": "Clash Verge", "SOCKS5 用户名和密码不能超过 255 字节": "SOCKS5 usernames and passwords must not exceed 255 bytes", "YAML 文件": "YAML file", "{names} 等 {n} 条": "{names} and {n} in total", "{n} 个": "{n}", "{n} 个出口": "{n} endpoints", "{n} 个账号在用": "{n} accounts using", "{n} 条订阅": "{n} subscriptions", "{percent}%({received} / {total} MB)": "{percent}% ({received} / {total} MB)", "✅ {ip}": "✅ {ip}", "✅ 「{name}」出口可用{ip}{took}": "✅ \"{name}\" endpoint available{ip}{took}", "✅ 内核下载完成,正在启动…": "✅ Kernel downloaded, starting…", "✅ 内核已手动导入到 {dir}": "✅ Kernel imported manually to {dir}", "✅ 已同步 Clash Verge 出口({n} 项变更)": "✅ Synced Clash Verge endpoints ({n} changes)", "✅ 连接成功": "✅ Connected", "✅ 连通性测试设置已保存": "✅ Connectivity test settings saved", "❌ 「{name}」{error}": "❌ \"{name}\": {error}", "❌ 连接失败": "❌ Connection failed", "「测试」与「批量测试」访问的目标;留空用默认(打 WorkBuddy 上游)。判据是能否拿到 HTTP 响应,不用考虑该网址返回什么内容。": "The target that \"Test\" and \"Test selected\" visit; leave empty for the default (the WorkBuddy upstream). The criterion is whether an HTTP response is received — what the URL returns does not matter.", "上传本地文件": "Upload a local file", "上次下载失败:{reason}": "Last download failed: {reason}", "上次下载已停止,未下载完的临时文件已删除": "Last download was stopped; the partial file was deleted", "上次同步": "Last sync", "上次测试": "Last test", "下载": "Download", "下载中…": "Downloading…", "下载内核": "Download kernel", "下载完成后可启动": "Start after the download completes", "下载已经完成,停止没赶上(内核已安装)": "The download finished before the stop took effect (kernel installed)", "下载线路": "Download route", "下载线路 / 存放目录没能写进配置(本次下载已按新设置走,重启后会恢复原值)": "The route / folder could not be saved to the config (this download uses the new settings; they revert after a restart)", "不再提供": "No longer available", "不再提醒": "Do not show again", "为降低维护成本、资源占用及合规风险,Agent2API 已停止提供代理订阅与内置代理内核相关功能。": "To reduce maintenance costs, resource usage and compliance risks, Agent2API no longer provides proxy subscriptions or built-in proxy kernel features.", "之前使用订阅节点?": "Previously using subscription nodes?", "也可以把二维码截图直接粘贴到弹窗里(Ctrl+V)": "You can also paste a QR code screenshot directly into this dialog (Ctrl+V)", "二维码里没有订阅链接": "No subscription URL found in the QR code", "从图片识别二维码": "Scan QR code from image", "代理主机只能填写域名或 IP 地址,不能包含协议、端口或路径": "Enter only a domain or IP address, without a protocol, port or path", "代理主机地址无效": "Invalid proxy host", "代理修改已保存": "Proxy changes saved", "代理内核": "Proxy kernel", "代理内核未安装(下载内核后,被账号或服务线路引用的节点会自动开监听端口)": "The proxy kernel is not installed. After downloading it, nodes referenced by accounts or service routes will automatically get listening ports.", "代理内核未安装(在「订阅管理」里下载内核后,被账号引用的节点会自动开监听端口)": "Proxy kernel is not installed (after downloading it in Subscription Management, referenced nodes automatically get a listening port)", "代理列表": "Proxy list", "代理列表加载失败:{reason}": "Failed to load proxy list: {reason}", "代理列表响应异常": "Unexpected proxy list response", "代理协议只支持 HTTP 或 SOCKS5": "Only HTTP and SOCKS5 proxies are supported", "代理名称": "Proxy name", "代理名称不能超过 60 个字符": "Proxy names must not exceed 60 characters", "代理已添加": "Proxy added", "代理格式无效,请按示例填写": "Invalid proxy format. Follow the examples.", "代理池": "Proxy pool", "代理池表": "Proxy pool table", "代理订阅功能已下线": "Proxy subscriptions have been discontinued", "代理设置": "Proxy settings", "代理设置响应异常": "Unexpected proxy settings response", "代理账号和密码不能超过 200 个字符": "Proxy usernames and passwords must not exceed 200 characters", "代理账号或密码的 URL 编码无效": "Invalid URL encoding in the proxy username or password", "以下行未能识别,已留在输入框中;修正后可再次解析。": "These lines could not be parsed and remain in the input. Correct them and parse again.", "使用情况": "Usage", "例如:我的机场": "e.g. My airport", "例如:香港 HTTP 出口": "e.g. Hong Kong HTTP endpoint", "保存代理": "Save proxy", "保存已有的代理地址,供账号与服务线路按需使用。": "Save existing proxy addresses for use by accounts and service routes as needed.", "保持原文件": "Keeping the current file", "停止下载": "Stop download", "停止下载失败:{reason}": "Failed to stop the download: {reason}", "停止请求已发出,但下载还没收手,稍后再看一次进度": "Stop requested, but the download has not stopped yet - check the progress again shortly", "先把下载的内核放到网关机器的目录,再填写文件或目录的绝对路径。目录内会查找官方包或 mihomo 二进制;远程面板不能读取浏览器电脑的路径。": "Place the downloaded kernel in a folder on the gateway machine, then enter its absolute file or folder path. Folders are searched for the official archive or mihomo binary. A remote panel cannot read paths on your browser's computer.", "先经过系统代理,再连接到此代理": "Connect through the system proxy first, then through this proxy", "全选当前筛选出的出口": "Select all filtered endpoints", "全选所有代理": "Select all proxies", "全选({n} 个)": "Select all ({n})", "全部协议": "All protocols", "全部提供方": "All vendors", "全部订阅": "All subscriptions", "关掉这个窗口不会中断下载(它在后台继续跑)—— 要停下就点下面的「停止下载」,未下载完的临时文件会被删除。": "Closing this window does not interrupt the download (it keeps running in the background) - to stop it, click \"Stop download\" below; the partial file is deleted.", "关闭代理后,引用它的账号回退直连。连通性以最近一次检测结果为准。": "Disabling a proxy makes accounts referencing it fall back to direct connections. Connectivity reflects the most recent check.", "关闭内核": "Stop kernel", "关闭内核失败:{reason}": "Failed to stop the kernel: {reason}", "其中 {n} 条正被账号使用 —— 删除后那些账号会回退直连。": "{n} of them are in use by accounts — those accounts will fall back to direct connections after deletion.", "其中 {n} 条正被账号使用 —— 删除后需重新设置相关账号的代理,不会自动直连。": "{n} selected proxies are in use. After deletion, reconfigure the affected accounts; they will not connect directly automatically.", "其中 {n} 条是同步来的只读条目(Clash / 订阅):可参与批量测试,删除会跳过": "{n} of the selected entries are synced read-only entries (Clash / subscriptions): they can be batch-tested, but deletion skips them", "其中 {n} 条来自 Clash 同步:可参与批量测试,删除会跳过": "{n} of the selected entries come from Clash sync: they can be batch-tested, but deletion skips them", "内核 {version}": "Kernel {version}", "内核 {version}({asset})": "Kernel {version} ({asset})", "内核下载": "Kernel download", "内核下载失败:{reason}": "Kernel download failed: {reason}", "内核二进制 / 配置 / 端口映射都会放在这里,默认 {dir};目录不存在会在下载开始时自动创建。": "The kernel binary, its config and the port map all live here. Default: {dir}. The folder is created automatically when the download starts.", "内核启动失败:{reason}": "Kernel failed to start: {reason}", "内核导入仍在后台执行,请刷新状态查看结果": "Kernel import is still running in the background. Refresh the status to check the result.", "内核导入任务排队中…": "Kernel import is queued…", "内核导入失败": "Kernel import failed", "内核导入状态已变化,请刷新后确认": "The kernel import status has changed. Refresh to check the result.", "内核已停止": "Kernel stopped", "内核已停止,点「启动内核」拉起": "Kernel stopped — click \"Start kernel\" to launch it", "内核已关闭(订阅与端口注册表保留,「启动内核」后原位恢复)": "Kernel stopped (subscriptions and the port registry are kept; ports are restored in place after \"Start kernel\")", "内核已导入,但启动失败:{reason}": "Kernel imported, but startup failed: {reason}", "内核已导入,但存放目录未能保存,重启网关后会恢复原位置": "The kernel was imported, but its folder could not be saved. The previous location will be restored after restarting the gateway.", "内核已手动关闭": "Kernel manually stopped", "内核已手动关闭(点「启动内核」拉起)": "Kernel manually stopped — click \"Start kernel\" to launch it", "内核文件必须非空且不超过 {max} MiB": "The kernel file must not be empty or exceed {max} MiB", "内核未安装": "Kernel not installed", "内核正在启动…": "Kernel is starting…", "内核正在执行操作,请稍后重试": "A kernel operation is in progress. Try again shortly.", "内核没有在超时内停下来": "the kernel did not stop within the timeout", "内核目录没能删掉(可能仍被进程占用),稍后重试一次": "The kernel folder could not be removed — a process may still hold it. Try again in a moment.", "内核运行中": "Kernel running", "出口 IP {ip}": "Exit IP {ip}", "出口可用": "Proxy available", "出口测试网址": "Connectivity test URL", "删除代理": "Delete proxy", "删除内核": "Delete kernel", "删除内核失败:{reason}": "Failed to delete the kernel: {reason}", "删除订阅": "Delete subscription", "刷新中…": "Refreshing…", "刷新失败:{reason}": "Refresh failed: {reason}", "功能调整通知": "Feature change notice", "勾选「{name}」": "Select \"{name}\"", "单个添加": "Add one", "去获取": "Get one", "另有 {n} 条是同步来的只读条目(Clash / 订阅),将跳过。": "{n} more entries are synced read-only entries (Clash / subscriptions) and will be skipped.", "另有 {n} 条来自 Clash Verge 同步,将跳过(请到 Clash Verge 里删)。": "{n} more entries come from Clash Verge sync and will be skipped (delete them in Clash Verge).", "只读:在 Clash Verge 里改": "Read-only: edit it in Clash Verge", "只读:在「订阅管理」里改": "Read-only: edit it under \"Manage subscriptions\"", "同步 Clash Verge": "Sync Clash Verge", "同步中…": "Syncing…", "同步失败:{reason}": "Sync failed: {reason}", "名字与端口在 Clash Verge 里改;启用可在本页关闭": "Edit the name and port in Clash Verge; the enable switch can be turned off on this page", "名字与端口跟随订阅与内核;启用可在本页关闭": "Name and port follow the subscription and kernel; the enable switch can be turned off on this page", "后台继续": "Continue in background", "启动内核": "Start kernel", "启用订阅「{name}」": "Enable subscription \"{name}\"", "启用这条代理": "Enable this proxy", "启用这条订阅": "Enable this subscription", "启用(禁用后,使用此代理的账号请求将失败;仍可测试)": "Enabled (disabling blocks requests from accounts using this proxy; testing remains available)", "启用(禁用的条目不会被账号使用,被引用时账号回退直连;仍可测试)": "Enabled (disabled entries are not used by accounts — an account referencing one falls back to a direct connection; testing still works)", "启用(禁用的订阅不参与内核同步,它的节点会从代理池移除)": "Enabled (disabled subscriptions are not synced by the kernel, and their nodes are removed from the proxy pool)", "图片读取失败": "Failed to read the image", "地址": "Address", "地址不完整": "Incomplete address", "地址由网关所在设备访问;本机代理需运行在该设备上。": "The gateway device connects to this address. A local proxy must run on that device.", "复制下载链接": "Copy download link", "复制订阅链接": "Copy subscription URL", "失败 {n} 个({reason})": "{n} failed ({reason})", "存放位置": "Folder", "存放位置 {dir}": "Folder {dir}", "存放位置要填绝对路径,例如 D:\\proxy-kernel": "The folder must be an absolute path, for example D:\\proxy-kernel", "家庭宽带": "Home broadband", "导入内核": "Import kernel", "导入并替换": "Import and replace", "导入来源": "Import source", "将替换现有代理内核,运行中的连接会短暂中断。订阅、账号引用与端口映射会保留。是否继续?": "The existing proxy kernel will be replaced, briefly interrupting active connections. Subscriptions, account references and port mappings will be kept. Continue?", "展开其余 {n} 个 ▾": "Show {n} more ▾", "已下载?手动导入": "Already downloaded? Import manually", "已保存。重启内核后,新分配的节点端口才会按新范围来。": "Saved. After the kernel restarts, newly allocated node ports will follow the new range.", "已保存「{name}」": "Saved \"{name}\"", "已停止下载内核(未下载完的临时文件已删除)": "Kernel download stopped (the partial file was deleted)", "已删除 {n} 个代理": "Deleted {n} proxies", "已删除「{name}」": "Deleted \"{name}\"", "已删除内核(订阅与账号引用保留,重新下载后会重新分配端口)": "Kernel deleted (subscriptions and account references are kept; ports are reassigned after you download it again)", "已删除内核(订阅与账号引用保留;有文件仍被占用,将在下次启动时清理)": "Kernel deleted (subscriptions and account references are kept; some files are still in use and will be cleaned up on the next launch)", "已刷新「{name}」,正在同步节点…": "Refreshed \"{name}\"; syncing nodes…", "已启用 {n} 个": "{n} enabled", "已启用「{name}」": "Enabled \"{name}\"", "已启用「{name}」,正在补建监听端口(内核重建中)": "Enabled \"{name}\"; rebuilding its listening port (kernel is restarting)", "已在本页禁用(打开开关即恢复)": "Disabled on this page (turn the switch on to restore it)", "已新增「{name}」": "Added \"{name}\"", "已新增订阅「{name}」,内核正在同步节点…": "Added subscription \"{name}\"; the kernel is syncing nodes…", "已是最新,没有需要同步的变更": "Already up to date — no changes to sync", "已有手动配置不受此次调整影响。你仍可添加 HTTP / SOCKS5 地址,并使用连通性测试。": "Existing manual configurations are not affected. You can still add HTTP / SOCKS5 addresses and test connectivity.", "已有手动配置和 Clash Verge 端点引用不受影响。仍可添加 HTTP / SOCKS5 地址、同步 Clash Verge 端点并测试连通性;Clash Verge 由你自行安装和运行。": "Existing manual configurations and Clash Verge endpoint references are not affected. You can still add HTTP / SOCKS5 addresses, sync Clash Verge endpoints and test connectivity. Install and run Clash Verge separately.", "已有账号引用它,但内核还没把监听端口补建出来 —— 稍等片刻,或重新启用这条节点": "An account already references it, but the kernel has not created the listening port yet — wait a moment, or re-enable this node", "已有账号或服务线路引用它,监听端口尚未就绪;请稍等,或检查内核状态": "An account or service route references this node, but its listening port is not ready. Wait a moment or check the kernel status.", "已禁用": "Disabled", "已禁用「{name}」": "Disabled \"{name}\"", "已禁用「{name}」,监听端口正在关闭(内核重建中)": "Disabled \"{name}\"; its listening port is closing (kernel is restarting)", "已禁用(未开监听端口)": "Disabled (no listening port)", "已移除的订阅": "Removed subscription", "已识别 {n} 条 · 已勾选 {selected} 条": "{n} parsed · {selected} selected", "已识别 {n} 条代理,跳过 {duplicates} 条重复地址": "Parsed {n} proxies and skipped {duplicates} duplicates", "已识别订阅链接": "Subscription URL recognized", "已选择「{name}」,保存后导入": "Selected \"{name}\" - imported on save", "已配置认证": "Authentication configured", "当前客户端不支持手动导入内核,请更新或刷新页面": "This client does not support manual kernel import. Update it or refresh the page.", "当前没有正在进行的下载": "There is no download in progress", "当前环境不支持代理池(桥接方法缺失)": "Proxy pool is not supported in this environment (bridge method missing)", "当前环境不支持代理测试(桥接方法缺失)": "Proxy testing is not supported in this environment (bridge method missing)", "当前环境不支持代理设置(桥接方法缺失)": "Proxy settings are not supported in this environment (bridge method missing)", "当前环境不支持同步(桥接方法缺失)": "Sync is not supported in this environment (bridge method missing)", "当前环境不支持启停(桥接方法缺失)": "Enabling/disabling is not supported in this environment (bridge method missing)", "当前环境不支持订阅(桥接方法缺失)": "Subscriptions are not supported in this environment (bridge method missing)", "当前环境不支持选择文件夹,直接填写绝对路径即可": "This environment cannot open a folder picker - just type the absolute path", "当前线路不可用:{error};重新选一条或切回直连": "The current route is unavailable: {error}. Pick another one or switch back to direct", "我知道了": "Got it", "所属订阅已删除,这条节点不会再分配端口 —— 可以删除它": "Its subscription was deleted, so this node will never get a port — you can delete it", "手动下载官方内核": "Download official kernel manually", "手动代理与 Clash Verge 同步仍然保留": "Manual proxies and Clash Verge sync remain available", "手动代理仍然保留": "Manual proxies remain available", "手动填写的地址与端口": "Manually entered address and port", "手动导入内核": "Import kernel manually", "打开文件夹选择框失败:{reason}": "Failed to open the folder picker: {reason}", "批量删除": "Delete selected", "批量删除代理": "Delete selected proxies", "批量测试": "Test selected", "批量测试完成:{ok} 个可用、{failed} 个失败(共 {total} 个)": "Batch test complete: {ok} available, {failed} failed ({total} total)", "批量测试完成:{ok} 个可用(共 {total} 个)": "Batch test complete: {ok} available ({total} total)", "批量测试({n})": "Test selected ({n})", "批量添加": "Add in bulk", "批量添加响应异常,请刷新代理列表确认后再试": "Unexpected batch response. Refresh the proxy list to check what was saved before retrying.", "批量添加完成:新增 {added} 条,重复 {duplicates} 条,失败 {failed} 条": "Batch complete: {added} added, {duplicates} duplicates, {failed} failed", "批量添加({n})": "Add selected ({n})", "按协议筛选": "Filter by protocol", "按提供方筛选": "Filter by vendor", "按来源筛选": "Filter by source", "按需下载(约 20-40MB)": "Downloaded on demand (~20-40MB)", "按需下载(约 20-40MB),只在启用订阅功能时需要": "Downloaded on demand (~20-40MB), only needed when subscriptions are used", "控制端口 {port} · {n} 个节点监听器": "control port {port} · {n} node listeners", "搜索代理": "Search proxies", "搜索名称 / 地址 / 端口": "Search name / address / port", "搜索节点": "Search endpoints", "支持官方压缩包和解压后的内核二进制;只接受当前版本,SHA-256 校验不通过时不会替换现有内核。": "Official archives and extracted kernel binaries are supported. Only the current version is accepted; a failed SHA-256 check leaves the existing kernel unchanged.", "支持手动地址与 Clash Verge 端点同步,不接管代理服务的安装与运行。": "Supports manually entered addresses and Clash Verge endpoint sync; proxy service installation and execution are not managed here.", "文件或目录路径": "File or folder path", "文件读取失败": "Failed to read the file", "新增代理": "New proxy", "新增方式": "Add mode", "新增订阅": "New subscription", "新解析的代理默认使用非直连": "Use chained connections for newly parsed proxies", "显示 {n} / 共 {total} 个出口": "Showing {n} / {total} endpoints", "暂未使用": "Not in use", "更新中…": "Updating…", "更新出网线路已保存,正在准备监听端口": "The update route has been saved; preparing its listening port.", "替换代理内核": "Replace proxy kernel", "最近检测": "Last check", "有 {n} 个账号正在使用它({names})—— 删除后这些账号会回退直连。": "{n} accounts are currently using it ({names}) — they will fall back to direct connections after deletion.", "有 {n} 个账号正在使用它({names})—— 删除后需重新设置这些账号的代理,不会自动直连。": "{n} accounts use this proxy ({names}). After deletion, reconfigure their proxies; they will not connect directly automatically.", "有 {n} 个账号正在使用它,删除后这些账号会回退直连。": "{n} accounts use this proxy. Deleting it makes those accounts fall back to direct connections.", "有 {n} 个账号正在使用它,删除后需重新设置这些账号的代理,不会自动直连。": "{n} accounts use this proxy. After deletion, reconfigure their proxies; they will not connect directly automatically.", "未同步": "Not synced", "未检测": "Not checked", "未检测到 Clash Verge:{reason}": "Clash Verge not detected: {reason}", "未测试": "Not tested", "未知错误": "Unknown error", "未选择文件": "No file selected", "本地 YAML 文件": "Local YAML file", "本地文件": "Local file", "本地文件不会自动更新:要更新节点,重新选择文件后保存;不重选则内容保持不变。": "Local files do not update automatically: to update the nodes, pick the file again and save; without re-picking, the content stays unchanged.", "本地文件订阅无需更新(要换内容请编辑后重新选择文件)": "Local-file subscriptions need no update (to change the content, edit it and pick the file again)", "本地文件订阅的内容在导入时固定:节点会由内核起成本地监听器并镜像进代理池,节点数稍等几秒由轮询刷新。": "A local-file subscription's content is fixed at import time: the kernel starts the nodes as local listeners and mirrors them into the proxy pool; the node count refreshes by polling in a few seconds.", "本页可编辑、可删除": "Editable and deletable on this page", "来自 Clash Verge 同步(名称、端口跟随 Clash),请到 Clash Verge 中修改;启用可在本页关闭": "Synced from Clash Verge (name and port follow Clash); edit them in Clash Verge. The enable switch can be turned off on this page.", "正在下载内核": "Downloading kernel", "正在停止…": "Stopping…", "正在安装内核…": "Installing kernel…", "正在导入…": "Importing…", "正在开始…": "Starting…", "正在校验内核…": "Verifying kernel…", "正在读取并上传文件…": "Reading and uploading file…", "正在连接 GitHub…": "Connecting to GitHub…", "正常": "Active", "此代理用于{services};删除后这些线路将不可用,不会自动回退直连。": "This proxy is used for {services}. Deleting it makes those routes unavailable; they will not fall back to a direct connection.", "此代理用于软件 / 插件更新;删除后这些线路将不可用,不会自动回退直连。": "This proxy is used for software / plugin updates. Deleting it makes those routes unavailable; they will not automatically fall back to direct connections.", "每次最多添加 {n} 条代理": "Add up to {n} proxies at a time", "每行一条,解析后可修改名称、设置非直连并测试,最后保存勾选的代理。": "Enter one proxy per line. Parse the list, edit names, choose chained connections and test, then save the selected proxies.", "没有匹配「{kw}」的出口": "No endpoints match \"{kw}\"", "没有匹配当前筛选的出口": "No endpoints match the current filters", "没有可全选的代理": "No proxies to select", "没有可删除的条目": "No entries to delete", "没能同步:{reason}": "Could not sync: {reason}", "测试中 {done}/{total}": "Testing {done}/{total}", "测试失败:{reason}": "Test failed: {reason}", "测试目标网址": "Test target URL", "测试结果没能记下:{reason}": "Could not save the test result: {reason}", "测试网址要以 http:// 或 https:// 开头": "The test URL must start with http:// or https://", "测试设置": "Test settings", "添加一个 HTTP 或 SOCKS5 地址,之后可以在账号或服务线路中选择使用。": "Add an HTTP or SOCKS5 address to use with accounts or service routes.", "添加单个": "Add proxy", "添加手动 HTTP / SOCKS5 地址,或同步 Clash Verge 的端点,供账号与服务线路使用。": "Add a manual HTTP / SOCKS5 address or sync Clash Verge endpoints for use by accounts and service routes.", "添加第一个代理": "Add your first proxy", "清空已识别": "Clear parsed list", "清空筛选": "Clear filters", "确定删除「{name}」?{used}": "Delete \"{name}\"? {used}", "确定删除「{name}」?它在代理池里的节点会一并移除,引用这些节点的账号会回退直连。": "Delete \"{name}\"? Its nodes in the proxy pool will be removed too, and accounts referencing them will fall back to direct connections.", "确定删除「{name}」?": "Delete \"{name}\"?", "确定删除已下载的内核{version}?内核文件与端口映射会被移除,订阅节点会失去监听端口(地址列显示「端口准备中」),引用它们的账号会暂时回退直连;订阅本身保留,重新下载内核后会重新分配端口。": "Delete the downloaded kernel{version}? The kernel files and the port mapping will be removed, subscription nodes lose their listening ports (the address column shows \"Port pending\"), and accounts referencing them fall back to a direct connection for now. The subscriptions themselves are kept, and ports are reassigned after you download the kernel again.", "确定删除选中的 {n} 个代理?": "Delete the {n} selected proxies?", "禁用后本端不再用它(引用它的账号回退直连),并会关掉它的本地监听端口": "Once disabled this machine stops using it (accounts referencing it fall back to direct), and its local listening port is closed", "禁用后本端不再用它(引用它的账号回退直连);端口在 Clash Verge 侧,不受影响": "Once disabled this machine stops using it (accounts referencing it fall back to direct); the port stays as it is on the Clash Verge side", "立即更新": "Update now", "端口范围必须是 1-65535 的整数": "The port range must be integers from 1 to 65535", "第 {line} 行:{error}": "Line {line}: {error}", "类型": "Type", "粘贴代理列表后点击「解析」": "Paste a proxy list, then click Parse", "编辑代理": "Edit proxy", "编辑订阅": "Edit subscription", "网关已切换,请重新打开代理弹窗": "The gateway has changed. Reopen the proxy dialog.", "网关未返回内核导入任务,请刷新状态后确认": "The gateway did not return a kernel import task. Refresh the status to check the result.", "网关机器上的文件或目录": "File or folder on the gateway machine", "节点": "Nodes", "节点由内核起成本地监听器,镜像进代理池": "Nodes are started as local listeners by the kernel and mirrored into the proxy pool", "节点端口范围 {base}–{end}": "Node port range {base}–{end}", "节点端口范围(结束)": "Node port range (end)", "节点端口范围(起始)": "Node port range (start)", "解析": "Parse", "订阅": "Subscriptions", "订阅与 Clash 的出口自动镜像进来": "Subscription and Clash endpoints are mirrored in automatically", "订阅内容由内核定时刷新(每 24 小时);节点数与同步状态在保存后由轮询刷新,稍等几秒。": "Subscription content is refreshed by the kernel on a schedule (every 24 hours); node count and sync state refresh by polling after saving — give it a few seconds.", "订阅导入与更新、订阅节点管理,以及代理内核的下载、安装和运行。": "Subscription import and updates, subscription node management, and proxy kernel download, installation and execution.", "订阅来源": "Subscription source", "订阅管理": "Manage subscriptions", "订阅管理({n})": "Manage subscriptions ({n})", "订阅节点会在本机各占一个监听端口,从该范围里挑空闲的分配;节点多的大订阅把默认范围({base}-{end})用尽时会报「没有可用的节点端口」,这时把范围调大再重启内核。已分配出去的端口不会因改范围而失效。": "Each subscription node takes one local listener port, allocated from free ports in this range; when a large subscription exhausts the default range ({base}-{end}) the app reports \"no free node ports\" — enlarge the range and restart the kernel. Ports already allocated stay valid when the range changes.", "订阅里的节点会自动同步进下方代理池,账号即可引用。": "Nodes from subscriptions are synced into the proxy pool below, ready for accounts to use.", "订阅里的节点会自动同步进代理池,账号即可引用。": "Nodes from the subscription are synced into the proxy pool automatically, ready for accounts to use.", "订阅里的节点会被内核起成本地监听器,镜像到代理池(账号按 id 引用,与本页其它出口同一用法)。内核只在用到订阅时按需下载(约 20-40MB),不随安装包分发。": "Nodes from subscriptions are started as local listeners by the kernel and mirrored into the proxy pool (accounts reference them by id, same as every other endpoint on this page). The kernel is only downloaded on demand when subscriptions are in use (~20-40MB), and is not bundled with the installer.", "订阅链接": "Subscription URL", "识别中…": "Recognizing…", "该节点所属订阅已删除,不会再被同步更新,可手动删除清理": "The subscription this node belonged to has been deleted; it will no longer be synced and can be deleted manually", "该节点来自订阅(名称、端口跟随订阅与内核),请在「订阅管理」里修改;启用可在本页关闭": "This node comes from a subscription (name and port follow the subscription and kernel); edit them under \"Manage subscriptions\". The enable switch can be turned off on this page.", "请下载与网关平台一致的官方内核,不是浏览器所在设备的平台。": "Download the official kernel for the gateway's platform, not the device running your browser.", "请填写代理名称": "Enter a proxy name", "请填写已有代理服务的 HTTP / SOCKS5 地址,或自行运行 Clash Verge 后同步端点,并重新为相关账号和服务线路选择代理。": "Enter the HTTP / SOCKS5 address of an existing proxy service, or run Clash Verge separately and sync its endpoints, then select a proxy again for the affected accounts and service routes.", "请填写网关机器上的绝对文件或目录路径": "Enter an absolute file or folder path on the gateway machine", "请改为填写已有代理服务的 HTTP / SOCKS5 地址,并重新为相关账号和服务线路选择代理。": "Enter the HTTP / SOCKS5 address of an existing proxy service, then select a proxy again for the affected accounts and service routes.", "请选择要导入的 YAML 文件": "Select a YAML file to import first", "请选择要导入的内核文件": "Select a kernel file to import", "读取失败:{reason}": "Load failed: {reason}", "起始端口不能大于结束端口": "The start port cannot be greater than the end port", "跳过 {n} 个(Clash 同步)": "skipped {n} (Clash sync)", "跳过 {n} 个(同步只读条目)": "skipped {n} (synced read-only entries)", "软件 / 插件更新": "Software / plugin updates", "还没有代理。点右上角「+ 新增代理」手填一个,或在「订阅管理」里导入订阅节点、同步 Clash Verge 的出口。": "No proxies yet. Click \"+ New proxy\" in the top right to fill one in manually, or import subscription nodes / sync Clash Verge endpoints under \"Manage subscriptions\".", "还没有代理。点右上角「+ 新增代理」手填一个,或点「同步 Clash Verge」把 Clash 的出口导进来。": "No proxies yet. Click \"+ New proxy\" in the top right to fill one in manually, or click \"Sync Clash Verge\" to import Clash endpoints.", "还没有订阅。点右上角「+ 新增订阅」粘贴订阅链接,或从图片识别二维码导入。": "No subscriptions yet. Click \"+ New subscription\" in the top right to paste a subscription URL, or import one by scanning a QR code from an image.", "还没有订阅:粘贴订阅链接、导入本地 YAML 文件,或从图片识别二维码。": "No subscriptions yet: paste a subscription URL, import a local YAML file, or scan a QR code from an image.", "还没有订阅:粘贴订阅链接,或从图片识别二维码导入。": "No subscriptions yet: paste a subscription URL, or scan a QR code from an image.", "还没有账号使用它(端口只在被账号引用时才分配 —— 在账号里选它并保存后,内核会自动开端口)": "No account is using it yet (a port is only assigned once an account references the node — select it in an account and save, and the kernel opens the port automatically)", "还没有账号或服务线路使用它;在账号或更新设置中选中并保存后,内核会自动开端口": "No account or service route uses this node yet. Select it in account or update settings and save to have the kernel open a port automatically.", "这是网关机器上的安装目录,留空使用默认位置。导入会复制文件并建立版本目录,不删除原下载文件。": "This is the installation folder on the gateway machine. Leave it empty for the default location. Import copies the file into a versioned folder without deleting your original download.", "这条在 Clash Verge 里是停用的,本页启用不生效 —— 到 Clash Verge 里打开它": "This listener is disabled in Clash Verge, so enabling it here has no effect — turn it on in Clash Verge", "这里只连接你提供的代理地址,不接管代理服务的安装与运行。": "Only connects to the proxy addresses you provide; proxy service installation and execution are not managed here.", "连接成功": "Connected", "连通性": "Connectivity", "连通性测试设置": "Connectivity test settings", "选中的 {n} 条都是同步来的只读条目(Clash / 订阅),不能删除": "All {n} selected entries are synced read-only entries (Clash / subscriptions) and cannot be deleted", "选中的 {n} 条都来自 Clash Verge 同步,不能删除(请到 Clash Verge 里删)": "All {n} selected entries come from Clash Verge sync and cannot be deleted (delete them in Clash Verge)", "选中的代理用于{services};删除后这些线路将不可用,不会自动回退直连。": "The selected proxies are used for {services}. Deleting them makes those routes unavailable; they will not fall back to a direct connection.", "选择 YAML 文件…": "Choose a YAML file…", "选择内核文件…": "Choose kernel file…", "选择目录…": "Choose folder…", "选项来自「网络代理」页(Clash Verge 同步的出口在这里可用;订阅节点要等内核起来才有端口)。选「直连」时连不上会自动借 Clash 混合端口重试一次;选定某条线路后只走它。": "Options come from the \"Network proxy\" page (Clash Verge exports are usable here; subscription nodes only get a port once the kernel is running). With \"Direct\", a failed attempt retries once through the Clash mixed port; an explicitly picked route is the only one used.", "通过代理访问该网址,检查是否能收到 HTTP 响应。留空沿用网关默认值。": "Access this URL through the proxy to check for an HTTP response. Leave it empty to use the gateway default.", "部分测试结果没能记下:{reason}": "Some test results could not be saved: {reason}", "重启内核": "Restart kernel", "重新选择文件…": "Choose a different file…", "需要干净的出口?": "Need a clean exit?", "需要用户名和密码(可选)": "Username and password required (optional)", "非直连": "Chained", "非直连代理": "Chain through system proxy", "非直连会先经过网关所在设备的系统代理,再连接到此代理;系统代理不可用时不会改走直连。": "Connect through the gateway device's system proxy first, then through this proxy. If the system proxy is unavailable, requests will not fall back to a direct connection.", "首次购买使用优惠码 AGENT2API25 享 75 折。": "Use code AGENT2API25 for 25% off your first purchase.", "+ 新增代理": "+ New proxy", "+ 新增订阅": "+ New subscription", ",": ", ", " 或 ": " or ", "Anthropic SDK 会自动携带版本头;手写 Messages 请求可使用 2023-06-01。/v1/models 收到该头或 x-api-key 时返回 Anthropic 列表形态。": "The Anthropic SDK adds its version header automatically; handwritten Messages requests can use 2023-06-01. /v1/models returns the Anthropic list format when it receives that header or x-api-key.", "Anthropic 业务错误结构示例": "Anthropic business error structure example", "Anthropic 官方 SDK / Claude Code 使用的根地址:": "Root address for the official Anthropic SDK / Claude Code: ", "Anthropic 标准要求显式填写正整数。网关对缺失或无效值补 8192,但上游模型的实际预算仍可能更低。": "The Anthropic standard requires an explicit positive integer. The gateway substitutes 8192 for missing or invalid values, but the upstream model may have a lower budget.", "Antigravity 支持宽高比 1:1、2:3、3:2、3:4、4:3、4:5、5:4、9:16、16:9、21:9,尺寸会映射到原生 1K / 2K / 4K 档。请求最长边 ≤1792 为 1K,1793–3072 为 2K,3073–4096 为 4K;超过 4096 会被该提供商拒绝。": "Antigravity supports aspect ratios 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, and 21:9, mapping sizes to native 1K / 2K / 4K tiers. Requested longest edges ≤1792 map to 1K, 1793–3072 to 2K, and 3073–4096 to 4K; this provider rejects values above 4096.", "Antigravity 的 size=auto 生成使用 1:1、1K;参考图编辑使用 1K 且不强制正方形。模型版本可能有更严格的输出限制;宽高比需接近支持值,不能任意指定像素尺寸。": "For Antigravity, size=auto generates at 1:1 and 1K; reference editing uses 1K without forcing a square. Model versions may have stricter output limits. Aspect ratios must be close to supported values; arbitrary pixel sizes are not supported.", "Base URL 填进客户端的「API 地址 / Base URL」栏;对话协议按客户端支持的类型三选一(Chat Completions / Responses / Anthropic Messages),三者共用同一套模型与账号池,可随时切换;鉴权用「网关 Key」页里任一启用 Key。": "Put the Base URL into your client's \"API address / Base URL\" field; choose one of the three chat protocols based on what your client supports (Chat Completions / Responses / Anthropic Messages); all three share the same models and account pool, so you can switch at any time; authenticate with any enabled Key from the Gateway Key page.", "Chat 流式成功通常以 data: [DONE] 收尾。需要同时处理 delta.content、思考字段和 delta.tool_calls;工具参数可能跨多个增量拼接。": "Successful Chat streams normally end with data: [DONE]. Handle delta.content, reasoning fields, and delta.tool_calls; tool arguments may need to be assembled across multiple deltas.", "Chat、Responses 和图片接口通常返回 error 对象,其中 message 是可读说明,type 是错误类别,code 与 upstream_code 按情况附带。Anthropic 业务错误使用 type=error 的信封;鉴权中间件、无效 JSON 或网关层错误也可能返回通用 error 形态。": "Chat, Responses, and image endpoints normally return an error object: message describes the error, type classifies it, and code and upstream_code are optional. Anthropic business errors use a type=error envelope; authentication middleware, invalid JSON, and gateway-level errors may also use the generic error shape.", "Claude Code / Anthropic SDK(token 计数:/v1/messages/count_tokens)": "Claude Code / Anthropic SDK (token counting: /v1/messages/count_tokens)", "Claude Code / Anthropic SDK;模型与账号池和 OpenAI 入口共用。": "Claude Code / Anthropic SDK; shares models and the account pool with the OpenAI endpoints.", "Codex / 新版 OpenAI SDK;无状态转发,历史由客户端携带。": "Codex / newer OpenAI SDKs; stateless forwarding with client-supplied history.", "GET /health 返回 status=ok 或 degraded。公网安全模式只返回简化探活信息;HTTP 200 或 status=ok 不代表所有提供商在线、账号有额度或图片模型可调用。": "GET /health returns status=ok or degraded. Public-network secure mode exposes only simplified liveness information. HTTP 200 or status=ok does not mean every provider is online, accounts have quota, or image models are callable.", "GET /health、GET /v1/models 和网关临时图片下载不强制检查 Key。模型清单可在配 Key 前读取,但这不能证明 Key 正确;应以携带该 Key 的实际业务请求为准。": "GET /health, GET /v1/models, and temporary gateway image downloads do not require a Key. Reading the model list before configuring a Key does not validate it; only an actual protected request with that Key can do so.", "HTTP(S) 参考图由网关服务器下载,不携带网关 Key 或提供商凭证。外链必须能被网关无额外请求头访问;本机、内网、带用户名密码或不安全重定向地址会被拒绝。受保护图片建议直接上传文件。": "The gateway server downloads HTTP(S) references without gateway Keys or provider credentials. External URLs must be accessible without extra headers. Local, private-network, credential-bearing, or unsafe redirect addresses are rejected. Upload protected images directly instead.", "JSON 图片引用编辑请求": "JSON image-reference editing request", "JSON 图片生成请求": "JSON image generation request", "JSON 的 images 是对象数组,每项只能包含 image_url。接受完整 HTTP(S) URL、data:image/...;base64,...,或先前响应返回的完整网关临时图片链接;不接受裸 base64、相对路径、file_id 或本地文件路径。": "JSON images is an array of objects containing only image_url. Accepts absolute HTTP(S) URLs, data:image/...;base64,..., or full temporary gateway image URLs returned earlier. Raw base64, relative paths, file_id, and local file paths are not accepted.", "JSON 请求使用 application/json。图片编辑上传文件时使用 multipart/form-data;curl -F 会自动生成 boundary,不要手动覆盖此请求头。": "Use application/json for JSON requests and multipart/form-data when uploading files for image editing. curl -F generates the boundary automatically; do not override this header manually.", "Key 缺失、无效、停用,或上游认证失败。网关未收到 Key 时返回 model_api_key_required,无效 Key 返回 invalid_api_key;请检查请求头与「网关 Key」页。": "Missing, invalid, or disabled Key, or upstream authentication failure. The gateway returns model_api_key_required for a missing Key and invalid_api_key for an invalid one. Check request headers and the Gateway Key page.", "Key 缺失、无效、停用,或上游认证失败。网关鉴权失败通常为 invalid_api_key;检查请求头与「网关 Key」页,而不是仅重拉模型列表。": "Missing, invalid, or disabled Key, or upstream authentication failure. Gateway Key failures normally use invalid_api_key. Check headers and the Gateway Key page; refreshing the model list alone is insufficient.", "LLM 请求": "LLM requests", "Messages 响应结构": "Messages response structure", "Messages 请求": "Messages request", "ModelScope 不支持 style、mask 与 input_fidelity;quality 仅接受省略、auto 或 standard,background 仅接受省略、auto 或 opaque,moderation 仅接受省略或 auto。风格与修改目标请写入 prompt。": "ModelScope does not support style, mask or input_fidelity. quality accepts omission, auto or standard; background accepts omission, auto or opaque; moderation accepts omission or auto. Describe style and editing goals in prompt.", "ModelScope 使用官方异步任务接口,创建后只查询同一任务,不会为了等待结果重新提交。单次 n=1;size 可省略、设为 auto,或指定边长 64–2048 的 WIDTHxHEIGHT,具体型号可能进一步限制。": "ModelScope uses the official asynchronous task API. It polls the same task without resubmitting. Each request uses n=1; size may be omitted, auto, or WIDTHxHEIGHT with edges from 64–2048. Individual models may impose stricter limits.", "OpenAI Python SDK 图片示例": "OpenAI Python SDK image example", "OpenAI SDK 的 base_url 填「接口地址」章节中以 /v1 结尾的 Base URL,不要填完整的 /chat/completions。Anthropic 官方 SDK 与 Claude Code 的 ANTHROPIC_BASE_URL 填网关根地址,不带 /v1;它们会自行追加 /v1/messages。其他客户端是否自动追加 /v1,以其地址栏说明为准。": "Set the OpenAI SDK's base_url to the Base URL ending in /v1 in the API address chapter, not the full /chat/completions URL. For the official Anthropic SDK and Claude Code, set ANTHROPIC_BASE_URL to the gateway root without /v1; they append /v1/messages themselves. Other clients may append /v1 differently; follow their address-field instructions.", "OpenAI SDK 的 base_url 填上方以 /v1 结尾的 Base URL,不要填完整的 /chat/completions。Anthropic 官方 SDK 与 Claude Code 的 ANTHROPIC_BASE_URL 填网关根地址,不带 /v1;它们会自行追加 /v1/messages。其他客户端是否自动追加 /v1,以其地址栏说明为准。": "Set the OpenAI SDK's base_url to the Base URL above ending in /v1, not the full /chat/completions URL. For the official Anthropic SDK and Claude Code, set ANTHROPIC_BASE_URL to the gateway root without /v1; they append /v1/messages themselves. Other clients may append /v1 differently; follow their address-field instructions.", "OpenAI 兼容客户端使用此地址;Anthropic 官方 SDK 使用下方说明中的网关根地址。": "Use this address for OpenAI-compatible clients; the official Anthropic SDK uses the gateway root address described below.", "OpenAI 新协议(Codex、新版 SDK)": "Newer OpenAI protocol (Codex, newer SDKs)", "Python:生成、编辑并保存图片": "Python: generate, edit, and save images", "Responses 使用 function_call / function_call_output 配对,Anthropic 使用 tool_use / tool_result 配对。协议转换会处理这些格式,但不会替客户端执行自定义函数。上游原生搜索等服务端工具是否可用取决于提供商,不能当成网关统一能力。": "Responses pairs function_call with function_call_output; Anthropic pairs tool_use with tool_result. Protocol conversion handles these formats but does not execute custom functions for the client. Native upstream tools such as search depend on the provider, not a universal gateway capability.", "Responses 响应结构": "Responses response structure", "Responses 请求": "Responses request", "SDK 示例使用的环境变量": "Environment variables for the SDK example", "Token 估算响应": "Token estimate response", "Token 数量估算": "Token count estimate", "Token 自动续期": "Automatic token renewal", "WorkBuddy 走官方图片接口:size 省略或设为 auto 时按 1024x1024 请求;该通道不接受 quality、style、background 与 moderation,请把风格与质量要求写进 prompt。参考图以 data URL 内联在 JSON 请求里发送(不是 multipart),模型 id 由上游目录下发,换版本时以 /v1/models 为准。": "WorkBuddy uses its official image API: an omitted size, or size=auto, is requested as 1024x1024; this channel does not accept quality, style, background or moderation, so describe style and quality in the prompt. Reference images are sent inline as data URLs inside the JSON request (not multipart), and model ids come from the upstream catalog — check /v1/models when the version changes.", "base64 图片响应结构": "Base64 image response structure", "chat 用于三种对话入口;image 用于 /v1/images/generations 和 /v1/images/edits。不要把图片模型提交给对话入口。": "chat models use the three chat endpoints; image models use /v1/images/generations and /v1/images/edits. Do not submit image models to chat endpoints.", "count_tokens 在本地估算,不调用上游 tokenizer;返回 input_tokens 和 estimated=true。数值用于上下文预算,不用于精确计费,尤其不应当作图片的真实 Token 用量。": "count_tokens estimates locally without calling an upstream tokenizer. Returns input_tokens and estimated=true. Use it for context budgeting, not exact billing, especially not the actual token cost of images.", "curl -F 自动生成 multipart boundary。不要额外设置 Content-Type: application/json 或手写无 boundary 的 multipart/form-data;prompt 使用 --form-string 可避免特殊字符被当作文件上传。": "curl -F generates multipart boundaries. Do not add Content-Type: application/json or manually set multipart/form-data without a boundary. Use --form-string for prompt to avoid interpreting special characters as file uploads.", "response_format=b64_json 时返回不带 data URL 前缀的标准 base64。解码为二进制后保存;网页展示时自行加对应 MIME 类型前缀。": "With response_format=b64_json, returns standard base64 without a data URL prefix. Decode to binary and save. For web display, add the appropriate MIME prefix yourself.", "response_format=url 不保证永久地址;网关临时链接与 AI 助手会话中的图片存储是两套机制,不能混用接口或有效期。": "response_format=url does not guarantee permanent URLs. Temporary gateway links and assistant-session image storage are separate mechanisms; their endpoints and lifetimes are not interchangeable.", "response_format=url 时返回。可能是提供商签名链接,也可能是网关临时下载链接;应直接使用返回值,不要自行拼下载 id。": "Returned with response_format=url. May be a provider signed URL or temporary gateway download URL. Use the returned value directly; do not construct download ids yourself.", "stream 默认 false;true 返回 Anthropic 事件流。stop_sequences 映射为停止序列,是否支持取决于上游。": "stream defaults to false; true returns Anthropic events. stop_sequences maps to stop sequences, with support determined by the upstream.", "usage 的 prompt_tokens、completion_tokens、total_tokens 表示用量,不等于统一货币价格。上游未提供时可能缺失或为 0。": "usage.prompt_tokens, completion_tokens, and total_tokens measure usage, not a uniform monetary price. Values may be omitted or 0 when the upstream does not provide them.", "✓ 支持 · ✗ 不支持 · — 无此概念 · ? 未声明": "✓ Supported · ✗ Unsupported · — Not applicable · ? Undeclared", "。一把启用的 Key 都没有时不鉴权(默认网关只监听 127.0.0.1;在设置页开启「局域网访问」后监听所有网卡,鉴权与安全闸门随之启用)。": ". When no Key is enabled, auth is off (by default the Gateway listens only on 127.0.0.1; after you enable \"LAN access\" in Settings it listens on all network interfaces, and auth and security gates turn on with it).", "三种对话协议的流式错误需要检查事件内容与正常结束标记;HTTP 200 本身不足以证明成功。图片接口仅返回非流式 JSON。": "For all three chat protocols, check stream events and normal termination markers. HTTP 200 alone does not prove success. Image endpoints return non-streaming JSON only.", "上一章": "Previous chapter", "上传一张或多张参考图,并用提示词描述保留内容与修改目标。": "Upload one or more reference images and describe what to preserve and change in the prompt.", "上传一张本地参考图": "Upload one local reference image", "上传多张参考图": "Upload multiple reference images", "上传本地文件推荐 multipart/form-data;已经有图片 URL 或 base64 时可发送 application/json。除参考图字段外,参数与图片生成相同。": "Use multipart/form-data for local files, or application/json for existing image URLs or base64 data. Other than reference fields, parameters are shared with generation.", "下一章": "Next chapter", "下表是网关接受的参数范围,不是所有提供商都支持的范围。生成与编辑共用这些字段,具体上游可能进一步拒绝数量、质量、风格、背景或尺寸。": "This table shows parameters accepted by the gateway, not support shared by every provider. Generation and editing share these fields, while upstreams may impose stricter count, quality, style, background, or size limits.", "下载并保存网关临时图片": "Download and save a temporary gateway image", "下载返回原始图片二进制及 image/png、image/jpeg 或 image/webp Content-Type,不是 JSON。不存在或过期返回 404,响应使用 private, no-store 与 nosniff。": "Downloads return raw image bytes with image/png, image/jpeg, or image/webp Content-Type, not JSON. Missing or expired links return 404; responses use private, no-store and nosniff.", "不强制鉴权;仅用于确认网关可访问,不保证模型或额度可用。": "Authentication is not required; checks gateway reachability, not model or quota availability.", "不强制鉴权;携带有效 Key 可查看该 Key 获准使用的模型。": "Authentication is not required; a valid Key filters the list to models that Key is authorized to use.", "不携带 Anthropic 相关头时,模型接口返回 OpenAI 风格的 object=list、data 数组和 meta 摘要;携带 anthropic-version 或 x-api-key 时,返回 data、has_more、first_id、last_id,并保留能力扩展字段。": "Without Anthropic-related headers, the model endpoint returns the OpenAI-style object=list, data array, and meta summary. With anthropic-version or x-api-key, it returns data, has_more, first_id, and last_id while retaining capability extensions.", "不支持依赖服务端状态的 previous_response_id、conversation、托管提示词 prompt,以及 background=true;请由客户端保存并回传历史,不要调用未实现的 Responses 查询或删除接口。": "Server-state features previous_response_id, conversation, hosted prompt, and background=true are unsupported. Save and resend history on the client; do not call unimplemented Responses retrieval or deletion endpoints.", "不要把 base64 图片塞回对话文本或日志,也不要将“请求超时”理解为“没有扣费”。如需连续编辑,保存结果文件后再作为下一次 image 上传。": "Do not put image base64 into chat text or logs, and do not interpret a request timeout as 'not charged'. For successive edits, save the result and upload it as the next image.", "业务请求的 model 值。owned_by 表示目录条目的归属,不保证每次请求都由该提供商承载;同名模型与映射可能有多个路由。": "The model value for business requests. owned_by identifies the catalog entry's owner, not necessarily the provider serving each request; identical model names and mappings may have multiple routes.", "临时图片下载": "Temporary image download", "也可使用 x-api-key: YOUR_GATEWAY_KEY,常用于 Anthropic 客户端。两种鉴权头任选一种即可,不要填提供商账号令牌或面板登录令牌。": "Alternatively, use x-api-key: YOUR_GATEWAY_KEY, commonly used by Anthropic clients. Choose either authentication header; do not use provider account tokens or panel login tokens.", "仅可省略或设为 stream=false、partial_images=0。当前不支持图片事件流、渐进图片或流式部分结果。未知参数会被拒绝,不会静默忽略。": "Omit or set stream=false and partial_images=0. Image event streams, progressive images, and partial streaming results are unsupported. Unknown parameters are rejected, not silently ignored.", "仅在上游返回修改后的提示词时保留,不保证每个模型都有。": "Preserved only when the upstream returns a revised prompt; not every model provides one.", "仅在显式指定 output_format=jpeg 时支持,网关按 JPEG 质量参数编码。PNG、WebP 当前不支持此参数。": "Supported only with explicit output_format=jpeg; the gateway encodes using a JPEG quality setting. PNG and WebP do not currently support this parameter.", "仅用于响应返回的网关临时链接;{id} 必须替换为实际下载令牌。": "Only for temporary gateway URLs returned in responses; replace {id} with the actual download token.", "仍从当前网关目录选择对话模型,不要求模型名称一定以 claude 开头。具体能力以实际承载模型为准。": "Select a chat model from the current gateway catalog; its name need not start with claude. Capabilities depend on the model actually serving the request.", "估算输入 Token 数量": "Estimate input tokens", "使用 supports_image_editing=true 的图片模型。该接口是参考图编辑、重绘或合成,不是精确遮罩修补;当前不支持 mask 与 input_fidelity,也不支持 file_id。": "Use an image model with supports_image_editing=true. This endpoint edits, redraws, or combines references; it is not precise mask-based inpainting. mask, input_fidelity, and file_id are currently unsupported.", "使用与 Chat 相同的对话模型 id 和 Key 授权规则。": "Use the same chat model ids and Key authorization rules as Chat.", "使用同一客户端生成与编辑,并将返回的 base64 保存为图片文件。": "Generate and edit with one client, then save returned base64 as image files.", "使用支持工具调用的模型。函数声明、调用结果配对与多模态请求示例见「看图与工具调用」章节。": "Use a tool-capable model. See the Vision and tool calling chapter for function declarations, matched tool results and multimodal request examples.", "使用支持工具调用的模型。函数声明、调用结果配对与多模态请求示例见下一节。": "Use a tool-capable model. Function declarations, matched tool results, and multimodal examples are in the next section.", "使用说明与兼容边界": "Usage notes and compatibility", "健康检查": "Health check", "先前网关返回的 /v1/images/files/{id} 完整链接可在未过期时作为 JSON 参考图。不要把 AI 助手内部的 assistant-image:ID 当成对外接口图片 URL。": "A full /v1/images/files/{id} URL previously returned by this gateway can serve as a JSON reference while valid. Do not use the assistant's internal assistant-image:ID references as public API image URLs.", "先确定网关地址、Key 和模型,再选择客户端支持的协议。": "Determine the gateway address, Key, and model before choosing a protocol supported by your client.", "兼容 Anthropic 消息块与 SSE 事件,支持本地 Token 预算估算。": "Compatible Anthropic content blocks and SSE events, with local token budget estimates.", "兼容 Responses 请求与事件格式,适合 Codex 等客户端;不是服务端会话存储。": "Compatible Responses requests and events for clients such as Codex; not server-side conversation storage.", "内置 AI 助手已有 generate_images 与 edit_images 工具,可在助手设置中启用并按确认模式执行。外部 API 客户端不会自动获得这些工具;需要由客户端声明并实际调用图片接口。": "The built-in AI assistant has generate_images and edit_images tools, enabled in assistant settings and executed according to confirmation mode. External API clients do not receive these tools automatically; they must declare tools and call the image endpoints themselves.", "函数工具使用 Responses 的声明格式;工具结果以 function_call_output 携带相同 call_id。实际工具能力仍依赖模型与提供商。": "Use Responses-format function declarations. Return tool results as function_call_output with the matching call_id. Actual support depends on the model and provider.", "函数工具声明包含 name、description、input_schema;结果在后续 user 消息的 tool_result 块中携带对应 tool_use_id。": "Function tools declare name, description, and input_schema. Return results in tool_result blocks of a subsequent user message with the matching tool_use_id.", "分别可能表示请求中断或请求过大。参考图过大时需缩小图片或减少数量,原样重试不会解决;中断的图片任务可能已经消耗额度。": "May indicate interruption and oversized requests respectively. Reduce reference-image size or count; resending unchanged data will not help. Interrupted image jobs may already have consumed quota.", "分别控制输出上限与是否流式。stream 默认 false;true 返回 Responses 命名事件。": "Control the output limit and streaming. stream defaults to false; true returns named Responses events.", "分别表示工具调用与思考能力。是否生效仍取决于实际承载模型、提供商和相关设置。": "Indicate tool-calling and reasoning support respectively. Actual behavior also depends on the serving model, provider, and settings.", "分别请求思考档位与结构化输出;能力和可用取值依赖模型。不要因字段被接受就假定上游已经执行。": "Request reasoning effort and structured output respectively. Capabilities and values depend on the model; accepting a field does not prove the upstream applied it.", "协议兼容不保证工具、思考、结构化输出、透明背景或每个尺寸都被所有提供商支持。先查看当前模型能力和插件版本,再核对请求日志的承载提供商与错误摘要。": "Protocol compatibility does not guarantee every provider supports tools, reasoning, structured output, transparent backgrounds, or every size. Check model capabilities and plugin versions, then inspect the serving provider and error summary in request logs.", "单图可用 image=@reference.png,多图重复提交 image[]。也兼容 images、images[] 与 image[0] 这类数字索引字段;普通参数不能重复提交。": "Use image=@reference.png for one image, or repeat image[] for multiple images. images, images[], and numeric fields such as image[0] are also accepted. Regular parameters cannot be repeated.", "单轮可以是字符串;多轮使用消息与工具项数组,客户端应携带必要历史。文本块使用 input_text,图片块使用 input_image。": "Use a string for a single turn or an array of message and tool items for multiple turns, including required history. Text blocks use input_text; image blocks use input_image.", "参考图编辑": "Reference-image editing", "参考图编辑;支持 multipart 文件上传或 JSON 图片引用。": "Reference-image editing; accepts multipart file uploads or JSON image references.", "只支持这三种可解码图片格式,校验实际文件内容而不是仅看扩展名;单张最多 10 MiB,边长最多 8192。": "Only these three decodable formats are supported. Actual file contents are validated, not just extensions. Each image is limited to 10 MiB and edges of 8192 pixels.", "可用值为 auto、standard、hd、low、medium、high、xhigh、max。小浣熊与 Antigravity 仅接受省略、auto 或 standard;其他值是否有效取决于 Loomy 的具体模型。": "Accepted values: auto, standard, hd, low, medium, high, xhigh, max. Raccoon and Antigravity allow only omission, auto, or standard. Other values depend on the particular Loomy model.", "可省略,或使用 auto、WIDTHxHEIGHT,例如 1024x1024。网关校验边长 1–8192,提供商可能进一步限制宽高比与分辨率,不保证精确像素输出。": "Optional; use auto or WIDTHxHEIGHT, such as 1024x1024. The gateway validates edges from 1–8192; providers may further restrict aspect ratios and resolution. Exact output pixels are not guaranteed.", "可能是网关内部错误、上游异常、插件未接入、暂无可用账号、图片下载或编码失败。": "Possible internal gateway errors, upstream failures, missing plugin capabilities, unavailable accounts, or image download and encoding failures.", "可能是网关内部错误、上游异常、插件未接入、暂无可用账号、图片下载或编码失败。公网模式的 api_key_not_configured 表示必须先配置网关 Key。": "Possible internal gateway errors, upstream failures, missing plugin capabilities, unavailable accounts, or image download/encoding failures. api_key_not_configured in public-network mode means a gateway Key must be configured first.", "可能附带实际输出编码、用量或点数。usage 与 points_consumed 取决于上游,缺失不代表免费;若未要求固定编码,不要默认所有图片都是 PNG。": "May include actual encoding, usage, or points. usage and points_consumed depend on the upstream; their absence does not imply free service. Without a requested encoding, do not assume all images are PNG.", "可选的调用方用户标识,不是网关鉴权 Key,也不能用于指定账号或绕过 Key 的授权范围。是否传递与处理取决于提供商。": "Optional caller user identifier, not a gateway Key. It cannot select an account or bypass Key restrictions. Forwarding and handling depend on the provider.", "启用": "enabled", "图片响应与下载": "Image responses and downloads", "图片响应创建时间,Unix 秒。不要与错误限额恢复字段 reset_at 的毫秒单位混用。": "Response creation time in Unix seconds. Do not confuse it with error recovery field reset_at, which uses milliseconds.", "图片生成与共用参数": "Image generation and shared parameters", "图片生成与编辑": "Image generation and editing", "图片输入是理解图片,工具调用是由客户端执行动作;二者都需要模型能力支持。": "Image input interprets images; tool calling asks the client to execute actions. Both require model support.", "在线模型列表": "Online model list", "在线模型列表指自动拉取上游目录;仅有静态模型清单不算在线支持。": "Online model lists mean the upstream catalog can be fetched automatically; a static list alone does not count as online support.", "地址速查与请求示例使用当前网关地址。从其他设备访问时,127.0.0.1 指向那台设备自身,必须换成实际可达的网关地址。": "The address list and request examples use the current gateway address. On another device, 127.0.0.1 refers to that device itself; replace it with an address that actually reaches the gateway.", "填进客户端的「API 地址 / Base URL」": "Paste into your client's \"API address / Base URL\" field", "声明函数工具的请求体": "Request body declaring a function tool", "复制地址": "Copy address", "复制示例": "Copy example", "多图有顺序意义:在 prompt 中明确“第 1 张是主体,第 2 张是风格参考”等关系。编辑不保证逐像素保真,要求保留的主体、文字或布局应明确描述。": "Image order matters. Explain relationships in prompt, for example, 'image 1 is the subject; image 2 is the style reference'. Editing does not guarantee pixel-perfect preservation; explicitly identify subjects, text, or layouts to retain.", "多数 OpenAI 兼容客户端的默认协议": "The default protocol for most OpenAI-compatible clients", "字段 / 状态": "Field / status", "字段与限制": "Fields and limits", "安装并使用支持 Images 参数的 OpenAI Python SDK。先按接入章节设置 GATEWAY_KEY 与 IMAGE_MODEL_ID,编辑前确认该模型支持参考图,并准备本地 reference.png。": "Install an OpenAI Python SDK version supporting Images parameters. Set GATEWAY_KEY and IMAGE_MODEL_ID as described in the connection section. Check editing support and prepare a local reference.png before editing.", "客户端自动拉取可用模型;不受鉴权限制,配 Key 之前就能拉": "Clients fetch available models automatically; no auth required, so it works even before a Key is configured", "对话协议": "Chat protocols", "对话协议与上下文预算": "Chat protocols and context budgets", "对话协议(按客户端支持的类型选一行)": "Chat protocol (pick the row your client supports)", "对话模型看图请求": "Vision request with a chat model", "小浣熊与 Antigravity 不支持此字段,请在 prompt 中描述风格;Loomy 转交上游,由模型决定是否支持。": "Raccoon and Antigravity do not support this field; describe style in prompt. Loomy forwards it upstream, where support depends on the model.", "小浣熊与 Antigravity 仅接受省略、auto 或 opaque;不保证所有模型都能生成透明背景。文件转码不会自动抠图。": "Raccoon and Antigravity allow only omission, auto, or opaque. Transparent output is not supported by every model; file conversion does not remove backgrounds.", "小浣熊与 Antigravity 仅接受省略或 auto。该字段不保证上游降低审核强度,内容政策拒绝不会自动重试。": "Raccoon and Antigravity allow only omission or auto. This does not guarantee reduced upstream moderation, and content-policy rejections are not retried automatically.", "小浣熊使用 raccoon-image;Loomy 使用目录中的 kind=image 模型;Antigravity 使用目录中的 gemini-*-image 模型;ModelScope 使用已确认支持的 Qwen-Image、Z-Image 或 Qwen-Image-Edit 型号;WorkBuddy 使用目录中带 text-to-image 或 image-to-image 标签的模型,例如 hunyuan-image-alpha 与 hunyuan-image-alpha-edit。实际 model 值以当前 /v1/models 为准,不要直接复制官方 API 的默认模型名。": "Raccoon uses raccoon-image; Loomy uses the kind=image models in the catalog; Antigravity uses the gemini-*-image models in the catalog; ModelScope uses the confirmed Qwen-Image, Z-Image or Qwen-Image-Edit models; WorkBuddy uses the models in the catalog tagged text-to-image or image-to-image, such as hunyuan-image-alpha and hunyuan-image-alpha-edit. Always take the actual model value from the current /v1/models; do not copy model names from a vendor's own API defaults.", "展开目录": "Show contents", "工具服务 API": "Tool services API", "工具服务 API 文档": "Tool services API documentation", "工具服务 API 是网关对外的固定接口,路径以 /api/web-search 开头;不属于 /v1 对话协议,也不是管理面板的管理接口,鉴权同样使用网关 Key。": "The tool services API is a fixed public gateway interface whose paths start with /api/web-search. It is not part of the /v1 chat protocols and is not a management-panel API; authentication also uses a gateway Key.", "已实现,待实测": "Implemented; pending live testing", "已实现,待实测:仅表示代码已接入,尚未通过真实账号验证。": "Implemented; pending live testing: the code is integrated, but has not been validated with a real account.", "建议显式填写图片模型 id。省略时从当前 Key 可用目录中选择支持本次操作的图片模型,不使用对话默认模型;没有对应能力模型时返回 503。": "Specify an image model id explicitly. If omitted, the gateway selects a model supporting this operation from the Key's available catalog, not the default chat model. Returns 503 if no capable model is available.", "待实测": "Pending live testing", "必填。使用 user / assistant 角色;content 可为字符串或 text、image、tool_use、tool_result 等内容块。": "Required. Use user / assistant roles. content may be a string or blocks such as text, image, tool_use, and tool_result.", "必填。包含 role 与 content;常见角色为 system、user、assistant,工具结果使用 tool。文本可直接使用字符串,多模态使用内容块数组。": "Required. Each item includes role and content. Common roles are system, user, and assistant; tool results use tool. Text may be a string; multimodal content uses an array of content blocks.", "必填且不能为空,最多 32000 个字符。描述主体、构图、风格和修改目标;当前不支持 mask,编辑范围也应在提示词中说明。": "Required and nonempty, up to 32000 characters. Describe the subject, composition, style, and desired changes. Masks are unsupported, so describe editing regions in the prompt as well.", "执行工具后回传结果的请求体": "Request body returning executed tool results", "找到 {count} 个章节": "Found {count} chapters", "排错与限制": "Troubleshooting and limits", "接入与鉴权": "Connection and authentication", "接入指南": "Getting started", "接入指南与接口参考": "Guides and API reference", "接口参考目录": "API reference contents", "接口地址": "API address", "推荐使用 Authorization: Bearer YOUR_GATEWAY_KEY;Key 来自「网关 Key」页,并且必须处于启用状态。": "Use Authorization: Bearer YOUR_GATEWAY_KEY. Obtain an enabled Key from the Gateway Key page.", "推荐显式指定当前目录中的对话模型 id。省略时尝试网关默认模型;默认选择也受该 Key 的授权范围限制。": "Explicitly select a chat model id from the current catalog. If omitted, the gateway tries its default model, still subject to the Key's authorized scope.", "描述输入与输出模态,例如 text、image、video。字段缺失不表示自动支持其他文件、音频或服务端上传接口。": "Describe input and output modalities such as text, image, and video. Missing fields do not imply support for other files, audio, or server-side upload endpoints.", "提供商能力": "Provider capabilities", "提供商能力适配表": "Provider capability matrix", "搜索文档": "Search documentation", "搜索文档、参数或接口…": "Search docs, parameters or endpoints…", "收起全部": "Collapse all", "收起目录": "Hide contents", "文本生成图片;JSON 请求,非流式返回 base64 或下载链接。": "Generate images from text; send JSON and receive non-streaming base64 data or download URLs.", "文档内容": "Documentation", "文档目录": "Documentation contents", "无此概念": "Not applicable", "映射为思考档位与结构化输出请求;支持范围以目标模型为准。": "Map to reasoning effort and structured-output requests; supported values depend on the target model.", "未声明表示插件没有提供明确结论,不等于不支持。": "Undeclared means the plugin has not provided a definite conclusion; it does not mean unsupported.", "未声明表示网关本体或插件没有提供明确结论,不等于不支持。": "Undeclared means the gateway or plugin has not provided a definite conclusion; it does not mean unsupported.", "本体订阅": "Native subscriptions", "本地上下文预算估算,返回 estimated=true;不是上游精确分词。": "Local context budget estimate, returning estimated=true; not an exact upstream token count.", "本机免鉴权模式没有启用 Key 时可调用;启用任意 Key 后,受保护接口都要携带有效 Key。公网安全模式没有配置 Key 时会拒绝受保护的 /v1 请求,并返回 503 api_key_not_configured。": "Local no-auth mode permits calls when no Key is enabled. Once any Key is enabled, protected endpoints require a valid Key. Public-network secure mode rejects protected /v1 requests when no Key is configured, returning 503 api_key_not_configured.", "本页只说明实际提供的接口,不等于完整复刻 OpenAI / Anthropic 服务。未列出的 Files、Batch、图片 variations、服务端会话存储等端点不要假定可用。": "This page documents implemented endpoints, not a complete OpenAI / Anthropic service replica. Do not assume unlisted Files, Batch, image variations, or server-side conversation storage endpoints exist.", "本页说明对外的 /v1 接口,不是管理面板的 /api 接口。三种对话协议共用模型目录、模型映射、账号池和网关 Key,但请求与响应格式不同。": "This page describes the public /v1 endpoints, not the management panel's /api endpoints. All three chat protocols share the model catalog, model mappings, account pool, and gateway Keys, but use different request and response formats.", "查看当前网关的客户端地址和各接口路径,一键复制后即可使用。": "View the current gateway's client addresses and endpoint paths, ready to copy and use.", "根据文字提示生成图片。请求使用 JSON,生成与编辑均只支持非流式响应。": "Generate images from a text prompt. Requests use JSON; both generation and editing support non-streaming responses only.", "检查网关是否可访问": "Check gateway reachability", "模型不存在、已关闭或不在 Key 授权范围,常附 model_not_found;也可能是路径错误,或临时图片下载链接已过期。": "Model missing, disabled, or outside the Key's scope, commonly with model_not_found. It may also indicate a wrong path or an expired temporary image URL.", "模型列表": "List models", "模型发现与健康检查": "Model discovery and health checks", "模型清单": "Model list", "模型清单与健康检查": "Model list and health checks", "模型清单反映当前账号、模型启停与映射配置。不带 Key 时可读取公开清单;携带 Key 时必须有效,返回内容按该 Key 的授权范围过滤,无效 Key 返回 401。": "The model list reflects current accounts, enabled models, and mappings. Without a Key, the public list is available. If a Key is provided, it must be valid and the list is filtered by its authorization scope; invalid Keys return 401.", "模型清单反映当前账号、模型启停与映射配置;携带有效网关 Key 时进一步按该 Key 的授权范围过滤。不带 Key 或 Key 无效时仍可读取未按该 Key 收窄的清单。": "The model list reflects current accounts, model enablement, and mappings. A valid gateway Key further filters it to that Key's authorized scope. Without a Key or with an invalid Key, the list is not restricted by that Key.", "模型清单结构示例": "Example model list structure", "模型调用始终需要启用且可用的网关 API Key,即使只在本机使用也不能免鉴权。管理员登录会话只用于管理面板,不能代替模型调用的 Key。": "Model calls always require an enabled, usable gateway API Key, even for local use. Administrator login sessions only authorize panel management and cannot replace the Key for model calls.", "每把 Key 的可用模型、可用提供商限制同样适用于生图和编辑图。模型名称使用 /v1/models 中的 id 或已配置的映射名,不要直接使用展示名称。": "Per-Key model and provider restrictions also apply to image generation and editing. Use an id from /v1/models or a configured mapping name, not a display name.", "没有找到匹配的文档": "No matching documentation", "流式以 message_start 开始,经 content_block_start / content_block_delta / content_block_stop,最终 message_delta 与 message_stop 收尾;不要按 Chat 的 [DONE] 规则解析。": "Streams begin with message_start, include content_block_start / content_block_delta / content_block_stop, and finish with message_delta and message_stop. Do not parse them using Chat's [DONE] convention.", "流式包含 response.created、response.output_text.delta 和最终 response.completed 等事件;错误可能以 response.failed 结束。输出预算不足时检查 incomplete 状态与 incomplete_details。": "Streams include response.created, response.output_text.delta, and final response.completed events. Errors may end with response.failed. Check incomplete status and incomplete_details when the output budget is insufficient.", "流式对话请求": "Streaming chat request", "流式开始后 HTTP 状态码无法再改;即使已经收到 200,也要检查流内错误、结束原因及是否正常收尾,不能把断流视为成功。": "HTTP status cannot change after streaming starts. Even after receiving 200, check stream errors, finish reasons, and normal termination; a disconnected stream is not a successful result.", "流式用量可请求 include_usage=true;最终是否返回用量取决于上游,不应假设每个增量都有 usage。": "Request include_usage=true for streaming usage. Whether final usage is returned depends on the upstream; do not expect usage in every delta.", "清除搜索": "Clear search", "点击章节展开参数、示例和兼容边界;示例只供复制,不会在本页发起模型请求或消耗额度。": "Expand a section for parameters, examples, and compatibility boundaries. Examples are copy-only; this page does not send model requests or consume quota.", "生图可能消耗账号额度。先使用 n=1 和较小尺寸确认能力,内容政策拒绝或结果不确定时不要自动重复提交。": "Image generation may consume account quota. Start with n=1 and a smaller size. Do not automatically resubmit after content-policy rejection or an uncertain result.", "生成、编辑与对话接口共用网关 Key;完整鉴权规则、模型能力和请求示例见下方章节。": "Generation, editing, and chat endpoints share gateway Keys. See the sections below for authentication, model capabilities, and request examples.", "生成、编辑与对话接口共用网关 Key;鉴权规则、模型能力和请求示例可从文档目录查阅。": "Generation, editing and chat endpoints share gateway Keys. Find authentication rules, model capabilities and request examples in the documentation contents.", "生成与编辑返回同一结构;base64 适合直接保存,URL 适合短期获取。": "Generation and editing return the same structure. Base64 suits direct saving; URLs suit short-term retrieval.", "用于请求思考配置或档位,由网关映射到目标模型;不保证所有 Anthropic 原生特性在跨协议转发时完全等价。": "Request reasoning configuration or effort, mapped to the target model. Not all native Anthropic features are guaranteed equivalent across protocol conversion.", "的 Key:请求带 ": " Key from the Gateway Key page: requests carry ", "目前小浣熊、Loomy、Antigravity、ModelScope、WorkBuddy 已接入图片生成;Loomy、Antigravity、ModelScope 与 WorkBuddy 同时接入参考图编辑,小浣熊暂不支持编辑。需要当前提供商插件包含对应能力,并且账号、模型和 Key 授权可用。": "Raccoon, Loomy, Antigravity, ModelScope and WorkBuddy currently support image generation; Loomy, Antigravity, ModelScope and WorkBuddy also support reference-image editing, while Raccoon does not. The provider plugin must include the capability, and the account, model and gateway key authorization must be available.", "目录声明的上下文与最大输出预算,可能省略。预算和余额不是同一概念,也不能替代上游的实际限制。": "Catalog-declared context and maximum output budgets; may be omitted. Token budgets are not account balances and do not override actual upstream limits.", "看图与工具调用": "Vision and tool calling", "看图请求使用对话模型,并确认 supports_images=true。Chat 使用 text 与 image_url 内容块,图片值可为上游支持的 HTTP(S) URL 或 data URL;可用格式与大小取决于目标模型。「参考图编辑」章节的上传限制不应直接套用到所有对话模型。": "For vision, use a chat model with supports_images=true. Chat uses text and image_url blocks, with upstream-supported HTTP(S) URLs or data URLs. Formats and sizes depend on the target model. The upload limits in the Reference-image editing chapter do not automatically apply to all chat models.", "看图请求使用对话模型,并确认 supports_images=true。Chat 使用 text 与 image_url 内容块,图片值可为上游支持的 HTTP(S) URL 或 data URL;可用格式与大小取决于目标模型。下方编辑图的上传限制不应直接套用到所有对话模型。": "For vision, use a chat model with supports_images=true. Chat uses text and image_url blocks. Images may use upstream-supported HTTP(S) URLs or data URLs; formats and sizes depend on the target model. The editing upload limits below do not automatically apply to all chat models.", "示例仅供复制,不会在本页发起请求或消耗额度。": "Examples are copy-only. This page does not send requests or consume quota.", "示例显式设置 max_retries=0,避免 SDK 对超时或 5xx 自动重新提交收费任务;timeout=300.0 仅是客户端等待示例,不会改变网关或上游的超时配置。": "The example sets max_retries=0 to prevent automatic SDK resubmission of billable requests on timeouts or 5xx. timeout=300.0 is only an example client wait; it does not change gateway or upstream timeouts.", "章节导航": "Chapter navigation", "类型 / 范围": "Type / range", "系统说明是顶层字段,不要放进 messages 的 system 角色;支持文本或 text 块数组。": "System instructions belong in this top-level field, not a system role in messages. Accepts text or an array of text blocks.", "系统说明,对应 Chat 的 system 消息;需要时每次请求重新携带。": "System instructions corresponding to Chat's system message; include them again on each request when needed.", "结合 HTTP 状态、错误内容与请求日志判断问题;不要盲目重试收费请求。": "Use HTTP status, error details, and request logs to diagnose issues; do not blindly retry billable requests.", "编辑请求上传总大小最多 16 MiB。参考图转为 data URL 后,内联图片与最终 JSON 请求还受 14 MiB 上限;base64 约增加三分之一体积,因此多张各小于 10 MiB 也可能超限。": "Editing uploads are limited to 16 MiB total. After conversion to data URLs, inline images and the final JSON request are also limited to 14 MiB. Base64 adds about one third to size, so several files below 10 MiB each can still exceed the total.", "网关临时 URL 响应结构": "Temporary gateway URL response structure", "网关临时下载不要求 Authorization,链接中的随机令牌就是访问凭据,任何拿到链接的人都能下载。请将链接视为敏感信息,重要结果及时保存,不要当作长期文件存储。": "Temporary gateway downloads do not require Authorization. The random URL token is the access credential; anyone with the link can download. Treat it as sensitive, save important results promptly, and do not use it as long-term storage.", "网关临时图片仅保存在内存,生成后 1 小时过期,网关重启后立即失效。缓存总容量 128 MiB;缓存满时会返回错误并建议改用 b64_json。上游签名链接的有效期由提供商决定。": "Temporary gateway images are kept in memory for 1 hour and disappear immediately on gateway restart. Cache capacity is 128 MiB; a full cache returns an error suggesting b64_json. Upstream signed URL lifetimes are determined by the provider.", "网关内置的安全重试与客户端 SDK 的重试是两层独立行为。图片客户端建议关闭自动重试;即使网关已停止重试,SDK 仍可能重新提交整条请求。": "Gateway safe retries and client SDK retries are independent. Disable automatic retries for image clients; the SDK may resubmit the entire request even after the gateway stopped retrying.", "网关可将实际图片转换为指定文件编码。省略时保留上游图片格式;需要固定扩展名时建议显式填写。JPEG 无法保留透明通道。": "The gateway can convert the actual image to the selected encoding. If omitted, it preserves the upstream format. Specify it for a fixed file extension; JPEG cannot preserve transparency.", "网关始终无状态,响应中的 store=false。即使请求 store=true,也不会保存可供后续检索的 Responses 对象。": "The gateway is always stateless and returns store=false. Sending store=true does not save Responses objects for later retrieval.", "网关接受 1–10,默认 1;Antigravity 与 ModelScope 仅支持 n=1。上游返回数量不足时网关报错,不会为了凑数再次调用图片生成。": "The gateway accepts 1–10, default 1; Antigravity and ModelScope accept only n=1. If the upstream returns too few images, the gateway reports an error without generating again to fill the count.", "网关接受 1–10,默认 1;Antigravity 仅支持 n=1。上游返回数量不足时网关报错,不会为了凑数再次调用图片生成。": "The gateway accepts 1–10, default 1; Antigravity accepts n=1 only. If the upstream returns too few images, the gateway reports an error rather than generating again to fill the count.", "网关最多接受 16 张参考图。Antigravity 的 gemini-2.5-* 模型最多 3 张,其他当前接入的 Antigravity 图片模型最多 14 张;Loomy 还可能受上游模型限制。": "The gateway accepts up to 16 references. Antigravity gemini-2.5-* models accept up to 3; other currently integrated Antigravity image models accept up to 14. Loomy may impose additional model limits.", "网关最多接受 16 张参考图。Antigravity 的 gemini-2.5-* 模型最多 3 张,其他当前接入的 Antigravity 图片模型最多 14 张;ModelScope 接受 1–3 张参考图;Loomy 还可能受上游模型限制。": "The gateway accepts up to 16 references. Antigravity gemini-2.5-* models accept up to 3; other integrated Antigravity image models accept up to 14. ModelScope accepts 1–3; Loomy may impose additional model limits.", "网关需要下载或转换输出时,单张图片最多 32 MiB、边长最多 8192,并使用有界解码。请求 output_format 会按实际图片转码,而不是只修改文件扩展名。": "When the gateway downloads or converts output, each image is limited to 32 MiB and edges of 8192 pixels with bounded decoding. output_format converts the actual image, not merely its extension.", "网络搜索与网页抓取的 REST 接口,使用网关 Key 鉴权;不属于 /v1 对话协议。": "REST endpoints for web search and page fetching, authenticated with a gateway Key; not part of the /v1 chat protocols.", "能力由当前插件版本申报,表示适配支持情况,不代表账号额度或当前可用性。": "Capabilities are declared by the installed plugin version. They describe integration support, not account quota or current availability.", "能力由当前网关本体或插件版本申报,表示适配支持情况,不代表账号额度或当前可用性。": "Capabilities are declared by the current gateway or plugin version. They describe integration support, not account quota or current availability.", "自定义函数工具通过 tools 声明。模型返回 tool_calls 后,客户端校验参数、执行函数,再把 assistant 工具调用和 role=tool 结果一起放入下一次 messages;tool_call_id 必须对应,不能遗漏并行调用的结果。": "Declare custom function tools in tools. When the model returns tool_calls, the client validates arguments, executes functions, and sends both the assistant tool calls and role=tool results in the next messages array. Match tool_call_id and include results for every parallel call.", "表示当前目录与插件声明支持参考图编辑。编辑前检查此字段,不要仅凭模型名称包含 image 判断。": "Indicates reference-image editing support declared by the current catalog and plugin. Check it before editing; an image substring in the model name is not sufficient.", "表示支持图片输入,不等于支持生成图片。对话模型可用于看图;编辑模型也可能声明此字段。": "Indicates image input support, not image generation. Chat models can interpret images, and editing models may also declare this field.", "表示目录条目属于生图模型。调用还需要当前插件已接入生成能力,且存在获准使用的可用账号。": "Identifies an image-generation catalog entry. Calls still require generation support in the installed plugin and an available authorized account.", "试试接口路径、参数名或其他关键词。": "Try an endpoint path, parameter name or another keyword.", "详细接口参考": "Detailed API reference", "请求与响应示例": "Request and response examples", "请求参数、模型能力或协议形态不支持。图片相关 code 可能为 invalid_image_input、image_generation_not_supported 或 image_editing_not_supported;修改请求后再发。": "Unsupported parameters, model capabilities, or protocol formats. Image codes may include invalid_image_input, image_generation_not_supported, or image_editing_not_supported. Correct the request before resubmitting.", "请求示例适用于 Bash / Git Bash。YOUR_GATEWAY_KEY、CHAT_MODEL_ID、IMAGE_MODEL_ID 和图片占位地址都需要替换;返回示例仅展示结构,能力位、Token 数量和时间戳不是当前网关的实测值。": "Request examples use Bash / Git Bash syntax. Replace YOUR_GATEWAY_KEY, CHAT_MODEL_ID, IMAGE_MODEL_ID, and placeholder image URLs. Response examples only illustrate structure; capability flags, token counts, and timestamps are not measurements from your current gateway.", "读取提供商能力表失败:{error}": "Failed to load provider capabilities: {error}", "读取插件能力表失败:{error}": "Failed to load plugin capabilities: {error}", "读取获准使用的模型": "Read authorized models", "输出 Token 上限,具体支持字段和预算以模型为准。不要同时设置冲突的上限;达到上限时 finish_reason 可能为 length。": "Maximum output tokens; supported fields and budgets depend on the model. Avoid conflicting limits. finish_reason may be length when the limit is reached.", "通用对话入口,适合大多数 OpenAI 兼容客户端。": "General-purpose chat endpoint for most OpenAI-compatible clients.", "通用错误结构示例": "Generic error structure example", "通过能力字段选择正确模型;健康检查只说明网关可访问。": "Select the correct model using capability fields; health checks only confirm gateway reachability.", "遇到“图片请求可能已消耗额度,未自动重试”或“上游已生成”等提示,先核对请求日志与上游结果。客户端超时、断线或取消不代表上游撤销任务;自动重发可能再次扣费。": "If the error warns that an image request may have consumed quota and was not retried, or that the upstream already generated it, check request logs and upstream results first. Client timeout, disconnection, or cancellation does not imply upstream cancellation; resubmission may charge again.", "采样参数,是否支持和有效范围由提供商与模型决定。协议兼容不代表每家上游都支持全部调参项。": "Sampling parameters. Support and valid ranges depend on the provider and model; protocol compatibility does not imply support for every tuning parameter.", "鉴权用「网关 Key」页里任一": "Authenticate with any ", "错误、限额与兼容边界": "Errors, limits, and compatibility boundaries", "限流、额度不足或当前无可用账号窗口。能确定恢复时间时可能返回 Retry-After(秒)、reset_at(Unix 毫秒)与 reset_at_text;这些字段不是每次都有。": "Rate limit, insufficient quota, or no currently available account window. When recovery is known, Retry-After (seconds), reset_at (Unix milliseconds), and reset_at_text may be returned; they are not always present.", "非流式响应读取 choices[].message;流式响应读取 choices[].delta。每次请求由客户端携带 messages 历史,网关不会根据上一条响应 id 自动恢复对话。": "Read choices[].message for non-streaming responses and choices[].delta for streams. Supply messages history with every request; the gateway does not restore a conversation from a previous response id.", "非流式对话响应": "Non-streaming chat response", "非流式对话请求": "Non-streaming chat request", "非流式返回 object=response、status、output 数组与 output_text。output 也可能包含 reasoning 或 function_call,不能只读取数组第一项。": "Non-streaming responses contain object=response, status, output, and output_text. output may also contain reasoning or function_call items; do not read only the first item.", "非流式返回 type=message、content 块数组、stop_reason 与 usage。content 可能同时包含文本、思考与工具调用,应该按 type 遍历。": "Non-streaming responses contain type=message, content blocks, stop_reason, and usage. Iterate by type because content may combine text, reasoning, and tool calls.", "领取类": "Reward claims", "默认 b64_json,返回可直接解码的图片 base64;url 返回上游签名链接或网关临时下载链接。不是图片文件编码。": "Defaults to b64_json for decodable image base64. url returns an upstream signed URL or temporary gateway download URL. This is not the image file encoding.", "默认 false,返回完整 JSON;true 返回 text/event-stream。curl 查看流式输出时添加 -N,客户端应按完整 SSE 事件解析而不是按网络分块解析。": "Defaults to false for a complete JSON response; true returns text/event-stream. Add -N to curl for streaming output. Parse complete SSE events rather than assuming network chunks are event boundaries.", "24 小时总用量": "24-hour total usage", "24 小时整体命中率": "24-hour overall hit rate", "24 小时请求数": "24-hour requests", "30 天": "30 days", "7 天": "7 days", "API Key 分布": "API key breakdown", "Token": "Token", "Top 提供商": "Top providers", "Top 模型": "Top models", "Top 账号": "Top accounts", "{date} · {tokens} tokens · {n} 次请求": "{date} · {tokens} tokens · {n} requests", "{date} · 无请求": "{date} · No requests", "{model}:{tokens} tokens": "{model}: {tokens} tokens", "{m}月": "{m}/", "{m}月{d}日 周{wd}": "{m}/{d} {wd}", "{name} · {tokens} tokens · {n} 次请求 · {pct}": "{name} · {tokens} tokens · {n} requests · {pct}", "{name}:{tokens} tokens · 占 {pct}%": "{name}: {tokens} tokens · {pct}% of total", "{n} 家提供商": "{n} providers", "{n} 次请求": "{n} requests", "{n} 项": "{n} items", "{n} 项低于 {threshold}%,已合并为“其他”": "{n} items below {threshold}% are grouped under Other", "{title}显示数量": "Number of items in {title}", "{tokens} tokens · 占 {pct}": "{tokens} tokens · {pct} of total", "…还有 {n} 个模型": "…and {n} more models", "…还有 {n} 项": "…and {n} more items", "一": "Mo", "三": "We", "二": "Tu", "五": "Fr", "仅在饼图合并,右侧列表完整保留每个项目": "Grouped only in the donut; every item remains in the list", "仅调整两个饼图,右侧列表始终完整显示": "Only the two donuts change; the lists always show every item", "仅调整这两张图的展示,所有用量仍计入总 Token,占比保持不变": "Only these two charts are affected. All usage remains in the total, and shares stay unchanged.", "今天": "Today", "全部用量": "All usage", "六": "Sa", "其他 {pct} · {n} 项,仅在饼图合并": "Other {pct} · {n} items, grouped only in the donut", "其他({n} 项)": "Other ({n} items)", "其余 {n} 项": "Remaining {n} items", "前 {n} 名": "Top {n}", "前 {n} 名占全部用量 {pct}": "Top {n} account for {pct} of total usage", "区间共 {n} 天": "{n} days in range", "占比低于": "Group shares below", "占输入 Token 的 {rate}": "{rate} of input tokens", "历史明细不完整": "Historical details are incomplete", "另 {n} 项": "{n} more", "右轴": "Right axis", "合并只作用于饼图。低于阈值的扇区归入“其他”,右侧列表完整保留每个项目,总量和占比不变。": "Grouping affects only the donuts. Slices below the threshold are grouped as Other; every item remains in the list, with totals and shares unchanged.", "合并小项": "Group small slices", "合计": "Total", "含今天在内往前数": "Counting back from today", "命中 {hit} / 输入 {input}": "Hits {hit} / input {input}", "命中率": "Hit rate", "命中率 = 缓存读取 Token / 输入 Token(promptTokens)。窗口越短越贴近「此刻」:上游把缓存读取与输入分开上报时,该比值合法地可能超过 100%,此处不夹取值、如实展示。": "Hit rate = cache-read tokens / input tokens (promptTokens). The shorter the window, the closer it is to \"right now\": when an upstream reports cache reads separately from input, this ratio can legitimately exceed 100%; it is shown as-is, without clamping.", "命中率 {rate}(命中 {hit} / 输入 {input})": "Hit rate {rate} ({hit} hits / {input} input)", "四": "Th", "图表显示": "Chart display", "图表类型": "Chart type", "在右侧展开“其他”查看明细": "Expand Other in the legend to view details", "天有调用": "active days", "小项合并阈值": "Small-slice grouping threshold", "展开其他明细": "Expand Other details", "左轴": "Left axis", "开启“合并小项”后,低于阈值的项目合并为灰色“其他”,可在右侧展开明细。合并只影响展示,总 Token 和占比不变。": "With Group small slices enabled, items below the threshold are grouped into a gray Other slice. Expand Other in the legend to view details. Only the display changes; total tokens and shares stay unchanged.", "开始日期": "Start date", "当前连续天数": "Current streak", "总 Token": "Total tokens", "总 Token:{tokens}": "Total tokens: {tokens}", "总 Token:{tokens}({n} 次请求)": "Total tokens: {tokens} ({n} requests)", "总请求数": "Total requests", "总量不变": "Total unchanged", "悬停查看完整读数与分项": "Hover for full readings and a breakdown", "成功率 {rate}": "Success rate {rate}", "成功率 {rate} · 失败 {n} 次": "Success rate {rate} · {n} failed", "成功请求数": "Successful requests", "所选范围内暂无请求": "No requests in the selected range", "所选范围内每个提供商各消耗了多少 Token,按 Token 用量从多到少排。同一个模型名可能有多家都能提供,网关按设置页「转发路由」的优先级依次尝试,所以占比也反映了实际落到谁身上。百分比按本区间的总 Token 数算(这一块只看用量,请求次数与成功率在概览卡片里)。「未知」是指那批请求没记下承载它的提供商 —— 主要是记录提供商这个功能上线之前的旧明细,其次是请求在选定上游之前就失败了(请求体非法、模型不存在、没有可用账号)。这一维与账号那一维不同:旧明细里根本没有「哪家承载」的信息(早期版本只有单一上游,但那是配置事实而非逐条记录),所以无法回算,旧数据会一直留在「未知」里;此后新产生的请求都会记上具体的提供商。": "How many tokens each provider used in the selected range, sorted by token usage from high to low. The same model name may be offered by several providers; the Gateway tries them in priority order as configured in the Forwarding route setting, so the share also reflects where requests actually landed. Percentages are based on the total tokens for the range (this block only looks at usage; request counts and success rates are in the overview cards). \"Unknown\" means those requests did not record the provider that served them—mainly detail rows from before provider recording existed, and requests that failed before an upstream was chosen (invalid request body, model not found, no available account). This dimension differs from accounts: old detail rows have no \"which provider served it\" information at all (early versions had a single upstream, but that was a configuration fact, not a per-request record), so they cannot be recomputed and old data stays in \"Unknown\" forever; requests created from now on all record their specific provider.", "所选范围内每个提供商各消耗了多少 Token,按用量从多到少排,扇区角度即占比。同一个模型名可能有多家都能提供,网关按设置页「转发路由」的优先级依次尝试,所以占比也反映了实际落到谁身上。中心是这一维的合计(等于概览里的总 Token),右侧每行给出该提供商的 Token 用量与百分比。「未知」是指那批请求没记下承载它的提供商 —— 主要是记录提供商这个功能上线之前的旧明细,其次是请求在选定上游之前就失败了。": "How many tokens each provider used in the selected range, sorted by usage from high to low; each sector's angle is its share. The same model name may be offered by several providers; the Gateway tries them in priority order as configured in the Forwarding route setting, so the share also reflects where requests actually landed. The center shows the total for this dimension (equal to Total tokens in the overview), and each row on the right gives that provider's token usage and percentage. \"Unknown\" means those requests did not record the provider that served them—mainly detail rows from before provider recording existed, and requests that failed before an upstream was chosen.", "所选范围内每个模型各消耗了多少 Token,按用量从多到少排,扇区角度即占比。中心是这一维的合计(等于概览里的总 Token),右侧每行给出该模型的 Token 用量与百分比。扇区内的百分比只在 ≥3% 时标出,更小的会挤成一团 —— 完整读数在右侧列表与悬停气泡里。颜色按用量排名分配:最大的那段是红色,依次往后;同一份报表里换个维度看,配色口径不变。": "How many tokens each model used in the selected range, sorted by usage from high to low; each sector's angle is its share. The center shows the total for this dimension (equal to Total tokens in the overview), and each row on the right gives that model's token usage and percentage. Percentages inside sectors are labeled only when ≥3%; smaller ones would crowd together—full readings are in the list on the right and in hover tooltips. Colors are assigned by usage rank: the largest sector is red, and so on down the line; switching dimensions in the same report keeps the same color scheme.", "所选范围内每个账号各消耗了多少 Token,按 Token 用量从多到少排。账号是比提供商更细的一维:同一家可以挂多个账号,转发时按优先级在候选链上依次尝试,所以这里反映的是「具体哪个登录态在出力」。百分比按本区间的总 Token 数算(这一块只看用量,请求次数与成功率在概览卡片里)。「未知账号」是指那批请求没有账号身份:走默认登录态转发(未配置账号列表)时会这样;这一维上线前写出的旧聚合行也没有账号明细,但它们会在升级导入旧数据时按明细自动补算回来 —— 只有明细已被手动清理掉的那几天补不回来,仍留在「未知账号」里,那是确实无从恢复的部分。": "How many tokens each account used in the selected range, sorted by token usage from high to low. Accounts are a finer dimension than providers: one provider can have several accounts, and requests try each account along the candidate chain by priority, so this reflects which specific login session is doing the work. Percentages are based on the total tokens for the range (this block only looks at usage; request counts and success rates are in the overview cards). \"Unknown account\" means those requests had no account identity: this happens when forwarding through the default login session (no account list configured); old aggregate rows written before this dimension existed also lack account details, but they are recomputed automatically from detail records when old data is imported during upgrade — only days whose details have already been cleared manually cannot be recovered and remain in \"Unknown account\"; those are genuinely unrecoverable.", "所选范围内还没有提供商用量": "No provider usage in the selected range", "所选范围内还没有模型用量": "No model usage in the selected range", "所选范围内还没有请求记录": "No request records in the selected range", "所选范围内还没有账号用量": "No account usage in the selected range", "折线": "Line", "报表时间范围": "Report time range", "按 Token 用量从多到少排列,扇区角度表示占比。占比不低于 3% 的扇区显示百分比,所有项目的完整读数保留在右侧列表与悬停提示中。": "Sorted by token usage, with each slice's angle showing its share. Slices of at least 3% show a percentage; full readings for every item remain in the list and hover details.", "按 Token 统计": "By tokens", "按天 Token 趋势": "Daily token trend", "按日统计": "Grouped by day", "按本地整点统计": "Grouped by local hour", "按本地整点,无请求的整点不标注": "By local hour; hours with no requests are not labeled", "按每条请求的软件标识和识别规则统计,不依赖 API Key,也不代表设备或用户数。待确认的软件统一计入“其它”;规则修改不重新归类历史请求。": "Statistics use per-request software identifiers and identification rules, independently of API keys. They do not count devices or users. Unconfirmed software is grouped under Other; rule changes do not reclassify historical requests.", "提供商用": "Provider usage", "提供商用占比": "Provider usage share", "提供商用量": "Provider usage", "提供商用量占比": "Provider usage share", "提供商:{text}": "Provider: {text}", "收起其他明细": "Collapse Other details", "方格为本地自然日,无请求显示为空槽": "Each cell is a local calendar day; days with no requests appear as empty slots", "无请求的整点按 0% 计,但不写读数": "Hours with no requests count as 0%, but are not labeled", "日": "Su", "日均": "Daily average", "日均 {value}": "Daily average {value}", "时间范围。「今天」是本地自然日今天 0 点到现在;「昨天」是昨天一整天(0 点到 24 点);「近 7 天 / 近 30 天」含今天在内往前数,即今天与之前的 6 / 29 天,不是「不含今天的 7 / 30 天」。": "Time range. \"Today\" is the local calendar day from 00:00 until now; \"Yesterday\" is the whole of yesterday (00:00–24:00); \"Last 7 days\" / \"Last 30 days\" count backwards from today inclusive, i.e. today plus the previous 6 / 29 days — not 7 / 30 days excluding today.", "昨天": "Yesterday", "暂无热力图数据": "No heatmap data", "暂无缓存趋势数据": "No cache trend data", "暂无趋势数据": "No trend data", "最近整点命中率": "Latest hourly hit rate", "最近请求": "Recent requests", "未知模型": "Unknown model", "本月": "This month", "查看用量、调用来源与缓存表现": "View usage, request sources, and cache performance", "柱状": "Bars", "模型与提供商共用此设置": "Shared by the model and provider charts", "模型用量": "Model usage", "模型用量占比": "Model usage share", "每天的总 Token 用量(输入 + 输出)。柱顶标出当天的读数;区间很长、柱子挤到放不下时只标最高的那几天,其余悬停柱子即可读到。": "Total token usage for each day (input + output). Each bar is labeled with that day's reading; when the range is long and bars are too crowded for labels, only the highest days are labeled—hover over any bar to read the rest.", "活跃天数": "Active days", "活跃热力图": "Activity heatmap", "用量分布": "Usage breakdown", "用量趋势": "Usage trend", "的项目合并为“其他”": "under Other", "筛选统计项目": "Filter report items", "累计": "Total", "累计请求 {n} 条": "{n} requests in total", "结束日期": "End date", "结束日期(含当天)": "End date (inclusive)", "统计报表": "Usage report", "统计概览": "Statistics overview", "缓存命中率": "Cache hit rate", "缓存读取属于输入读数,不额外计入总 Token": "Cache reads are part of the input reading and are not added to total tokens again", "缓存读取属于输入,不重复计入总 Token": "Cache reads are part of input, not added to total tokens again", "自定义区间": "Custom range", "请求日志只展示仍保留的明细;清理明细不会减少日报中的历史用量。": "Request logs show only retained details; clearing them does not reduce historical usage in daily reports.", "读取 {hit} ÷ 输入 {input}": "Cache reads {hit} ÷ input {input}", "读取报表失败:{error}": "Failed to load report: {error}", "起始日期(含当天)": "Start date (inclusive)", "输入": "Input", "输入 + 输出": "Input + output", "输入 Token": "Input tokens", "输出": "Output", "输出 Token": "Output tokens", "运行中": "Running", "近 1 小时": "Last 1 hour", "近 10 分钟": "Last 10 minutes", "近 24 小时": "Last 24 hours", "近 24 小时缓存命中率与总 Token 趋势": "Last 24 hours: cache hit rate and total tokens trend", "近 24 小时缓存命中率趋势": "Last 24 hours: cache hit rate trend", "近 30 天": "Last 30 days", "近 365 天 · 不随上方日期筛选变化": "Last 365 days · independent of the date filter", "近 365 天活跃热力图": "Last 365 days: activity heatmap", "近 365 天,按天 Token 用量着色(档位按本窗口峰值自动定)": "Last 365 days, colored by daily token usage (levels are set automatically from this window's peak)", "近 7 天": "Last 7 days", "饼图不合并小项": "Show all donut slices", "饼图小于 {threshold}% 归入其他": "Group donut slices below {threshold}%", "饼图显示": "Donut display", " · ": " · ", " · {n} 个账号今日重试已用完": " · {n} accounts used up today’s retries", " · 补签在主签到区间结束后执行": " · Catch-up runs after the main check-in window", "AgentArts 服务声明": "AgentArts Service Statement", "MiniMax Code 国内版每日签到 · 同地区签名账号接口读取七日面板并领取今日积分;已领取不重复领,奖励以官方返回为准": "MiniMax Code (China) daily check-in · The signed account API for this region reads the seven-day panel and claims today’s points. Already claimed rewards are not claimed again; rewards follow official responses.", "MiniMax Code 国际版每日签到 · 同地区签名账号接口读取七日面板并领取今日积分;已领取不重复领,奖励以官方返回为准": "MiniMax Code (Global) daily check-in · The signed account API for this region reads the seven-day panel and claims today’s points. Already claimed rewards are not claimed again; rewards follow official responses.", "QuWork 每日奖励:先查询领取状态,再领取并回查;结果不明时不重复提交。": "QuWork daily rewards: check status before claiming, then verify the result. Uncertain claims are not repeated.", "SOLO 的 checkin_credits 领取 · 按自然日 0 点刷新": "SOLO checkin_credits claims · reset at midnight (calendar day)", "Sonus 等限时活动 · 资格、额度和有效期以官方返回为准": "Sonus and other limited-time campaigns · Eligibility, credits and validity follow the official response", "UMID 组件安装失败:{error}": "UMID component installation failed: {error}", "UMID 组件已安装,可重新签到。": "The UMID component is installed. You can check in again.", "UMID 组件管理接口不可用,请刷新页面或更新网关。": "The UMID component management API is unavailable. Refresh the page or update the gateway.", "WorkBuddy 国内版 · 查询任务树后一键点亮 / 领奖 · 含开学季与猫猫旅行 · 点击行展开明细": "WorkBuddy CN · Query the task tree, then light up / claim in one click · includes the school-season event and cat travel · click a row for details", "WorkBuddy 国际版保活模型,按顺序回退": "WorkBuddy International keep-alive models, tried in order", "WorkBuddy 国际版日活任务的免费模型 · 全局一份,与条目无关": "Free models for WorkBuddy International daily activity · one global setting, unrelated to schedules", "ZCode 自动领取验证": "ZCode automatic claim verification", "{date}(每天 {time})": "{date} (daily at {time})", "{done} / {total} 个账号已签": "{done} of {total} accounts checked in", "{done}/{total} 已签": "{done}/{total} checked in", "{label} ×{count}({reason})": "{label} ×{count} ({reason})", "{name}定时补签开关": "Scheduled catch-up for {name}", "{name}签到时间": "Check-in time for {name}", "{n} 个平台": "{n} platforms", "{n} 个平台 · {groups} 组签到时间": "{n} platforms · {groups} time groups", "{n} 个计划 · 北京时间 UTC+8": "{n} schedules · Beijing time UTC+8", "{n} 个账号今天的重试次数已用完": "{n} accounts have used up today’s retry limit", "{n} 个账号等待窗口或活动": "{n} accounts waiting for a window or campaign", "{n} 积分": "{n} points", "{n} 项可完成": "{n} to complete", "{n} 项待领": "{n} to claim", "{points} 积分": "{points} points", "{total} 账号 · {done} 已签": "{done} of {total} checked in", "{total} 项任务 · {pending} 项可完成": "{total} tasks · {pending} to complete", "✅ UMID 组件已安装,下轮签到即可领取国际版积分": "✅ UMID component installed — the next check-in can claim International points", "✅ {message}": "✅ {message}", "✅ 定时签到已开启": "✅ Scheduled check-in enabled", "✅ 开学季任务执行完成": "✅ School-season tasks completed", "✅ 成长任务执行完成:积分 +{credit} 能量 +{energy}": "✅ Growth tasks completed: credits +{credit}, energy +{energy}", "✅ 新手福利领取完成": "✅ Starter rewards claimed", "✅ 新手福利领取完成,累计 {n} 积分": "✅ Starter rewards claimed, {n} points earned in total", "✅ 签到完成:{succeeded}/{total} 个账号成功领取{active}": "✅ Check-in complete: {succeeded}/{total} accounts claimed successfully{active}", "「保活模型链」是 WorkBuddy 国际版领日活时用来保活的免费模型,按顺序逐个尝试、 第一个成功即止;清空提交恢复缺省({defaults})。 当天去重 + 幂等领取:重复执行只会拿到「已领取」,不会重复加分。": "The \"keep-alive model chain\" is the free models used to keep WorkBuddy International accounts active during daily activity runs — tried in order, stops at the first success; submit empty to restore the default ({defaults}). Same-day dedup + idempotent claiming: repeat runs only return \"already claimed\" and never add points twice.", "「保活模型链」是 WorkBuddy 国际版领日活时用来保活的免费模型,按顺序逐个尝试、 第一个成功即止;清空清单并保存 = 恢复缺省链(当前缺省:{defaults})。 当天去重 + 幂等领取:重复执行只会拿到「已领取」,不会重复加分。": "The \"keep-alive model chain\" is the free models used to keep WorkBuddy International accounts active during daily activity runs — tried in order, stops at the first success; clearing the list and saving restores the default chain (current default: {defaults}). Same-day dedup + idempotent claiming: repeat runs only return \"already claimed\" and never add points twice.", "「免费领积分」的每日任务 · 逐个领取": "\"Free points\" daily tasks · claimed one by one", "一次性福利 · 已领取状态保存在网关,领完无需重复查询 · 点击行展开任务清单": "One-time rewards · claim status is stored on the gateway, so claimed rewards need no further queries · click a row to expand tasks", "一次性福利 · 签到后自动查询并领取,领完记在本机不再查上游 · 点击行展开任务清单": "One-time rewards · queried and claimed automatically after check-in; once claimed they are recorded locally and no longer queried upstream · click a row to expand the task list", "一次性福利已全部结清": "All one-time rewards settled", "一次性福利已结清": "One-time rewards settled", "一次性福利已结清,无需重复查询": "One-time rewards have been claimed; no need to query again", "一次领当天全部奖励(每日签到 + 新人礼) · 幂等由上游保证": "Claims all of the day’s rewards in one action (daily check-in + newcomer gift) · idempotency guaranteed by the upstream", "一键安装组件": "Install component", "一键完成": "Complete all", "一键领取({n})": "Claim all ({n})", "上一轮({time}):{n} 个动作,+{credit} 积分": "Last run ({time}): {n} actions, +{credit} credits", "上次执行:{line}": "Last run: {line}", "上次签到时间": "Last check-in", "上次领取 {time} · 领取需通过滑块验证码": "Last claimed {time} · claim requires passing a slider CAPTCHA", "下一账号:{time}": "Next account: {time}", "下次 {date}": "Next {date}", "下次 {date} · 点此管理条目": "Next {date} · click to manage schedules", "下次检查:{time}": "Next check: {time}", "下次自动执行": "Next automatic run", "不参与每日签到:{list}。CodeArts 的一次性奖励在下方「新手福利」,它与 ZCode 的每日/套餐福利领取见「活动福利」。": "Not in daily check-in: {list}. CodeArts one-time rewards are under \"Starter rewards\" below; its and ZCode's daily/plan benefits are claimed under \"Activity rewards\".", "不参与每日签到:{list}。CodeArts 的一次性奖励在下方「新手福利」,它的每日福利就在上方「每日签到」里;ZCode 的套餐领取见「活动福利」。": "Not in daily check-in: {list}. CodeArts one-time rewards are under \"Starter rewards\" below, and its daily welfare is right above under \"Daily check-in\"; ZCode plan claims are under \"Activity rewards\".", "不参与签到": "Not in check-in", "不可领": "Unavailable", "不自动重试等待中的活动": "Waiting campaigns are not retried automatically", "不适用": "Not applicable", "与国内版同一套任务接口 · 站点不同": "Same task API as the China edition · different site", "与国内版同一套链路 · 站点不同、令牌不通用": "Same flow as the China edition · different site, tokens not interchangeable", "与定时补签不同,仅处理窗口未开或活动暂未下发。": "Unlike scheduled catch-up, only handles windows not yet open or campaigns not yet issued.", "与新人积分独立,不购买付费套餐、不自动续费": "Separate from newcomer points. No paid plans are purchased and no automatic renewals are made.", "专属或自定义时间作为区间起点,沿用默认区间长度;每天重新随机,重启不改变当天安排。": "Platform-specific or custom times set the start and use the default window length. Times are randomized daily; restarting keeps today’s schedule.", "个账号不参与": "accounts excluded", "主签到区间结束后等待 {n} 分钟": "Wait {n} minutes after the main check-in window ends", "主签到后等待 {n} 分钟": "Wait {n} minutes after the main check-in", "主签到后等待(分钟)": "Wait after main check-in (minutes)", "主签到已执行": "Main check-in ran", "主签到已执行不等于每个账号都已领取成功;账号结果请查看签到记录。": "A completed main run does not mean every account claimed successfully. See the check-in records for account results.", "仅处理窗口未开或活动暂未下发的账号,不对所有错误反复执行。": "Only retries accounts waiting for a window or campaign; it does not repeat every error.", "仅开通官方报价为 0 元的个人体验套餐,固定关闭自动续费;奖励另行领取": "Only activate the personal trial when the official price is CNY 0, with automatic renewal disabled. Rewards are claimed separately.", "仅提交你填写的权益,不购买套餐;兑换码激活可能需要原客户端的设备标识。": "Only redeem the benefit you enter; no plan is purchased. Code activation may require the original client’s device identity.", "今天 · 北京时间自然日": "Today · Beijing calendar day", "今天不再自动重试,明天自动重置。要现在再试一次,用签到计划里的「立即执行」。": "These accounts are not retried again today; the counter resets tomorrow. To try once more right now, use “Run now” in the check-in schedule.", "今天已执行:{list}": "Ran today: {list}", "今天已领 {n} 份": "Claimed {n} today", "今天未领": "Not claimed today", "今天(北京时间 {day})已领取 · 官方确认到账 {n} 项 · 明天可再领": "Claimed today (Beijing time {day}) · {n} items confirmed received · can claim again tomorrow", "今日主签到": "Today's main check-in", "今日已执行": "Ran today", "今日已派出": "Sent out today", "今日已签": "Checked in today", "今日已领取": "Claimed today", "今日已领取豆包工作签到奖励,已由官方确认": "Today's Doubao Work check-in reward has already been claimed and confirmed by the official service.", "今日签到": "Today", "今日签到任务尚未满足领取条件": "Today's check-in task is not yet eligible for a reward.", "今日签到进度": "Today's check-in progress", "从清单里移除": "Remove from the list", "例如:每日自动签到": "For example: Daily automatic check-in", "保存计划": "Save schedule", "保活": "Keep-alive", "保活 API Key 已保存": "Keepalive API Key saved", "保活 {n}": "{n} kept alive", "保活+领取": "Keep-alive + claim", "保活中…": "Keeping alive…", "保活模型链": "Keep-alive model chain", "保活模型链为全局配置,猫猫旅行有独立的开关与时刻。": "The keep-alive model chain is global. Cat travel has its own switch and times.", "先创建签到计划,再为它设置定时补签。": "Create a check-in schedule first, then configure its scheduled catch-up.", "先查询活动,再选择要领取的奖励;不会购买或订阅套餐": "Query campaigns, then choose a reward to claim. No plan is purchased or subscribed to.", "免费体验套餐": "Free trial plan", "免费套餐已开通并确认生效": "The free plan has been activated and confirmed active", "兑换中…": "Redeeming…", "兑换权益": "Redeem benefit", "兑换结果待确认,请到官方客户端核对;不会重复提交": "Redemption is awaiting confirmation. Check the official client; no duplicate request will be sent.", "兑换请求未得到确认,请到官方客户端核对;不要重复提交": "The redemption request was not confirmed. Check the official client and do not submit it again.", "全选": "Select all", "全部 {n} 家": "All {n} providers", "全部完成": "All done", "全部查询": "Query all", "全部签到": "Check in all", "全部类型": "All types", "全部结果": "All outcomes", "全部账号均可签到": "All accounts can check in", "全部领取": "Claim all", "关着:不自动巡检(仍可手动巡检)": "Off: no automatic inspection (manual inspection still works)", "关着:所有条目都不执行": "Off: no schedule runs", "关闭活动窗口重试不会关闭定时补签。插件提供下次重试时刻时,以插件返回的时间为准。": "Disabling campaign-window retries does not disable scheduled catch-up. If the plugin supplies a retry time, that time takes precedence.", "其他自动任务": "Other automatic tasks", "凭证不可用": "Credentials unavailable", "凭证需刷新": "Credentials need refreshing", "切换任务后,左侧只保留有账号的提供商": "Only providers with accounts for the selected task are listed on the left", "删除失败:{error}": "Delete failed: {error}", "删除定时条目": "Delete schedule", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活并在网页通道建会话点亮日活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;CodeArts 领当日的运营福利(领取 → 确认 → 回读核实,自动执行受每天 6 次 / 间隔 10 分钟的写请求限流);OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "At the scheduled time, automatically checks in the enabled accounts of the ticked providers (WorkBuddy CN uses the daily check-in API; the international version uses the daily-activity quest: probe the event, claim the daily-active reward, then keep alive with the free model and open a session over the web channel to light up the daily activity; Raccoon uses the desktop daily-points flow; AutoClaw uses the official client's daily check-in task; Qoder CN claims via the event, and accounts without an assigned event get a neutral notice; Qoder international needs a device risk-control identity (generated by the UMID component of the local Qoder client / qodercli) before the \"Daily 100 Credits\" event is even visible — without the component you get a clear explanation instead of an error; Trae claims SOLO's daily check-in points (reset at midnight), and when the upstream has no event for the account or the credentials lack a device ID you get \"not claimed + reason\" instead of an error; Loomy claims the first-login points once a day per account; KukuAI claims the \"Free points\" daily task; CodeArts claims the day's operational perks (claim → confirm → verify by re-reading; automatic runs are rate-limited to 6 write requests a day, 10 minutes apart); OfficeAce claims all of the day's rewards in one go (daily check-in + newcomer gift)). If the machine was off at the scheduled time, a catch-up check-in runs at boot, so nothing is missed. Every provider's check-in API is idempotent — running it again never claims twice.", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;CodeArts 领当日的运营福利(领取 → 确认 → 回读核实,自动执行受每天 6 次 / 间隔 10 分钟的写请求限流);OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "At the scheduled time, auto check-in runs for the available accounts of the selected providers (WorkBuddy China uses the daily check-in API; International uses daily activity tasks — detect the campaign, claim the daily-activity reward, then keep the account alive with free models; Raccoon uses the desktop daily points flow; AutoClaw uses the official client's daily check-in task; Qoder China uses campaign claims, and accounts with no campaign assigned get a neutral notice; Qoder International needs a device risk-control identity first (generated by the UMID component of the local Qoder client / qodercli) to see the \"Daily 100 Credits\" campaign, and a missing component yields a clear explanation instead of an error; Trae claims SOLO's daily check-in points (reset at midnight by calendar day), and when the upstream has no campaign for the account or the credential has no device ID the result is \"not claimed + the specific reason\" instead of an error; Loomy awards first-login points once a day per account; KukuAI claims the \"Free points\" daily tasks; CodeArts claims that day's campaign welfare (claim → confirm → read back to verify; automatic runs are limited to 6 write attempts per day with a 10-minute gap); OfficeAce claims all of that day's rewards in one action (daily check-in + newcomer gift)). If the machine was off at the scheduled time, the missed run is made up automatically after it starts — nothing is skipped just because the machine was off. Every provider's check-in API is idempotent, so running it again never claims twice.", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "At the scheduled time, auto check-in runs for the available accounts of the selected providers (WorkBuddy China uses the daily check-in API; International uses daily activity tasks — detect the campaign, claim the daily-activity reward, then keep the account alive with free models; Raccoon uses the desktop daily points flow; AutoClaw uses the official client's daily check-in task; Qoder China uses campaign claims, and accounts with no campaign assigned get a neutral notice; Qoder International needs a device risk-control identity first (generated by the UMID component of the local Qoder client / qodercli) to see the \"Daily 100 Credits\" campaign, and a missing component yields a clear explanation instead of an error; Trae claims SOLO's daily check-in points (reset at midnight by calendar day), and when the upstream has no campaign for the account or the credential has no device ID the result is \"not claimed + the specific reason\" instead of an error; Loomy awards first-login points once a day per account; KukuAI claims the \"Free points\" daily tasks; OfficeAce claims all of that day's rewards in one action (daily check-in + newcomer gift)). If the machine was off at the scheduled time, the missed run is made up automatically after it starts — nothing is skipped just because the machine was off. Every provider's check-in API is idempotent, so running it again never claims twice.", "到点待执行": "Due, waiting to run", "到点时逐个签到,已勾 {n} / {total} 家": "Checked {n} of {total} — each is checked in at the scheduled time", "北京时间 · 已启用 {n} 个签到计划": "Beijing time · {n} enabled check-in schedules", "北京时间 · 每天重复 · 随设置更新": "Beijing time · Repeats daily · Updates with settings", "北京时间 · 逗号分隔 · 最多 6 条 · 到点后最多晚 30 秒执行;错过时点开机后会补跑一轮。": "Beijing time · comma-separated · up to 6 entries · runs at most 30 seconds late; a missed slot is caught up once after boot.", "北京时间 · 错过区间会补跑未执行账号,重启保留当天安排;任务在网关执行,关闭手机不影响排程。": "Beijing time · Missed windows are caught up for unrun accounts. Restarting keeps today’s schedule. Tasks run on the gateway, so closing the mobile app does not affect them.", "北京时间 · 错过时点开机后会自动补签": "Beijing time · missed runs are made up automatically after startup", "区间内陆续签到": "Checking in across the window", "区间结束后等待(分钟)": "Wait after window ends (minutes)", "单账号签到不受范围限制": "Per-account check-in is not limited by scope", "原套餐已到期或冻结,请在官方客户端处理;这里不会续费或变更套餐": "The existing plan has expired or been frozen. Manage it in the official client; this page will not renew or change it.", "去插件页安装签到能力": "Install check-in support on the Plugins page", "去领取": "Claim now", "发放中": "Issuing", "发放失败": "Issue failed", "取消验证": "Cancel verification", "另有 {n} 个账号不参与": "{n} more accounts are not included", "另有 {n} 个账号不参与每日签到": "{n} more accounts are not part of daily check-in", "只列当前任务里有账号的提供商。": "Only providers with accounts in the current task are listed.", "只重试这些账号,不会重签整个计划。具体原因见签到记录。": "Only these accounts are retried, not the whole schedule. See the records for details.", "只领取已完成任务的奖励(幂等,重复点不会重复入账)": "Claim rewards of completed tasks only (idempotent; repeated clicks will not double-credit)", "可使用管理员凭据调用:": "You can call this API with administrator credentials:", "可完成": "Can complete", "可派出": "Can send out", "可选 · 缺省显示时刻": "Optional · defaults to the time", "可领": "Available", "可领奖": "Can claim", "各家区间起点": "Window start by provider", "同时控制定时签到、定时补签和活动窗口重试;猫猫旅行独立运行。": "Controls scheduled check-ins, catch-up and campaign retries together. Cat travel runs independently.", "后端未返回 UMID 组件安装结果": "The backend did not return a UMID component installation result", "后端未返回 UMID 组件状态": "The backend did not return the UMID component status", "后端未返回定时签到数据": "Backend returned no schedule data", "后端未返回巡检结果": "The backend did not return an inspection result", "后端未返回新手福利数据": "The backend did not return starter reward data", "后端未返回有效的套餐状态": "The gateway did not return a valid plan status", "后端未返回权益兑换结果": "The gateway returned no redemption result", "后端未返回活动福利数据": "The gateway returned no campaign reward data", "后端未返回签到中心数据": "The backend did not return check-in center data", "启用的计划在各自区间内随机签到": "Enabled schedules check in randomly within their windows", "启用签到计划 {name}": "Enable check-in schedule {name}", "国际版签到需要 UMID 组件生成设备风控身份(本机未检测到)。": "International check-in requires the UMID component to generate a device risk-control identity (not detected on this machine).", "在桌面端设置": "Configure on desktop", "在途": "Traveling", "基本设置": "Basic settings", "填入缺省链": "Fill in default chain", "填写你已有的兑换码或订单号": "Enter a code or order number you already have", "填好时刻与签到范围后点「保存」;名称可以留空(界面显示时刻)": "Pick a time and the providers, then click Save; the name is optional (the time is shown when empty)", "失败 {n}": "{n} failed", "奖励与权益 · 资格、额度和有效期以官方返回为准": "Rewards and benefits · Eligibility, quota and validity follow the official response", "套餐已冻结": "Plan frozen", "套餐已到期": "Plan expired", "套餐已开通,无需重复操作": "The plan is already active. No further action is needed.", "套餐明细": "Plan details", "套餐查询凭证已过期,请先到账号页刷新凭证;此查询不会自动续期": "The credentials for querying plans have expired. Refresh them on the Accounts page first; this query does not refresh credentials automatically.", "套餐领取": "Plan claim", "安装 Qoder 客户端或 qodercli 后即可(无需重启网关)。": "Install the Qoder client or qodercli to enable it (no need to restart the gateway).", "安装中…": "Installing…", "安装后仍未检测到 UMID 组件,请重新检查。": "The UMID component is still not detected after installation. Check again.", "官方客户端的每日签到任务": "Official client's daily check-in task", "官方拒绝套餐查询,请检查账号授权;这不一定表示 Token 已过期": "The official service denied the plan query. Check account authorization; this does not necessarily mean the token has expired.", "官方显示自动续费已开启,请到官方客户端检查": "The official service reports that automatic renewal is enabled. Check it in the official client.", "官方未返回明确的套餐状态,暂不能开通": "The official service returned no definite plan status. Activation is unavailable for now.", "定时签到": "Scheduled check-in", "定时签到和定时补签分开管理。补签沿用对应签到计划的平台范围,不重复领取已完成的账号。": "Scheduled check-ins and catch-up are managed separately. Catch-up uses the linked schedule's platforms and skips completed accounts.", "定时签到已关闭": "Scheduled check-in disabled", "定时补签": "Scheduled catch-up", "实际发放:{time}": "Issued at: {time}", "实际时间由网关计算,晚窗口的平台会顺延补签;只处理当天未签到账号。": "The gateway calculates the actual times. Later windows delay catch-up, which only handles accounts not checked in today.", "实际签到安排": "Actual check-in schedule", "实际补签": "Actual catch-up", "实际补签取「主签到时间加等待间隔」与「补签不早于」中较晚的时刻。": "Catch-up runs at the later of the main check-in plus the wait interval and the earliest catch-up time.", "对应主签到:{times}": "Linked main check-in: {times}", "对应签到计划 · 沿用 {n} 个平台范围,只补未签到账号": "Linked schedule · Same {n} platforms, only accounts not checked in", "对应签到计划:{name}": "Linked check-in schedule: {name}", "尚未开始": "Not started", "尚未开通套餐,可开通免费体验套餐": "No plan is active. You can activate the free trial plan.", "尚未执行": "Not run yet", "尚未查询": "Not queried yet", "尚未查询任务状态": "Task status not queried yet", "尝试领取": "Try claiming", "展开": "Expand", "巡检一次": "Run one round", "巡检中…": "Inspecting…", "巡检失败:{reason}": "Inspection failed: {reason}", "已保存:{label}": "Saved: {label}", "已保存:保活模型链": "Saved: Keep-alive model chain", "已保存:定时条目": "Saved: schedule", "已保存:猫猫旅行排程": "Saved: cat travel schedule", "已全部领取": "All claimed", "已删除定时条目": "Schedule deleted", "已发放": "Issued", "已完成活跃上报(连登已点亮),但活动未开启(本次没有可领的奖励)": "Activity reported (streak lit up), but the campaign is not active (nothing to claim this time)", "已就绪": "Ready", "已开始批量签到": "Bulk check-in started", "已开通": "Active", "已得 {earned} / {total} 积分": "{earned} / {total} points earned", "已执行 {n} / {total} 个平台": "{n} / {total} platforms ran", "已执行 {n} / {total} 个账号": "{n} / {total} accounts processed", "已抽 {n} 次": "Drew {n} times", "已提交「{label}」的签到": "Check-in submitted for {label}", "已暂停": "Paused", "已有结果 {checked} / 共 {total} 个账号": "Results for {checked} / {total} accounts", "已查 {checked} / {total} 个账号": "Checked {checked} of {total} accounts", "已确认不自动续费": "Automatic renewal confirmed off", "已确认领取": "Claim confirmed", "已签": "Checked in", "已签到自动跳过": "Checked-in accounts are skipped", "已结束": "Ended", "已选 {n} / {total} 个平台": "{n} / {total} platforms selected", "已领 {claimed}/{total} · 累计 {earned} 积分": "Claimed {claimed}/{total} · {earned} points earned", "已领 {done} / {total} 份套餐": "Claimed {done} / {total} plans", "已领养": "Adopted", "已领取": "Claimed", "已领取「{name}」": "Claimed {name}", "带设备风控身份领取「每日 100 Credits」 · 需要 UMID 组件": "Claim \"Daily 100 Credits\" with a device risk-control identity · requires the UMID component", "平台与签到时间": "Platforms and check-in times", "平台与随机签到区间": "Platforms and random check-in windows", "平台专属": "Platform-specific", "平台专属时间": "Platform-specific time", "平台专属时间由网关提供。自定义时间会覆盖专属时间,提前执行可能遇到窗口未开。": "Platform-specific times come from the gateway. Custom times override them; running early may hit a closed window.", "平台批次": "Platform group", "开关": "Toggles", "开启定时补签": "Enable scheduled catch-up", "开启活动窗口重试": "Enable campaign-window retries", "开始 {time}": "Starts {time}", "开学季执行失败:{error}": "School-season run failed: {error}", "开学季执行完成:{message}": "School-season run completed: {message}", "开学季活动": "School-season event", "开着:启用的条目按各自时刻执行": "On: enabled schedules run at their own times", "开着:按下面的时刻自动巡检": "On: inspects automatically at the times below", "开通中…": "Activating…", "开通免费套餐": "Activate free plan", "开通未得到确认,请重新查询套餐状态;不会自动重试开通": "Activation was not confirmed. Check the plan status again; activation will not be retried automatically.", "开通结果待确认": "Activation awaiting confirmation", "开通请求仍在处理或结果待确认,请稍后查询,不要重复提交": "Activation is still processing or awaiting confirmation. Check again later; do not submit another request.", "当前没有可领取的套餐": "No plans available right now", "当前没有等待窗口或活动下发的账号。": "No accounts are waiting for a window or campaign.", "当前活动未提供每日签到任务": "The current campaign has no daily check-in task.", "当前网关中,补签等待间隔与活动重试间隔共用;修改间隔会同步影响两者,开关与重试次数仍分别设置。": "The current gateway shares the catch-up wait and campaign retry interval. Changing it affects both; switches and retry counts are still separate.", "当前账号暂不符合该活动的领取条件": "This account is not currently eligible for this reward", "当前账号未下发豆包工作签到活动,无需反复领取": "No Doubao Work check-in campaign is available for this account. Repeated claims are unnecessary.", "待发放": "Pending issue", "待执行": "Waiting to run", "待签": "Not checked in", "待领取": "To claim", "待领新手福利": "Starter rewards to claim", "总开关": "Master switch", "总开关已关闭": "Master switch is off", "总开关已关闭 · 在「定时签到」页打开": "Master switch is off · enable it on the \"Scheduled check-in\" tab", "成功 {n}": "{n} succeeded", "成长任务": "Growth tasks", "成长任务完成({done} 项成功、{failed} 项失败),积分 +{credit} 能量 +{energy}": "Growth tasks finished ({done} succeeded, {failed} failed): credits +{credit}, energy +{energy}", "成长任务执行失败:{error}": "Growth task run failed: {error}", "我已阅读并同意以下服务声明,仅授权开通零元体验套餐,不自动续费": "I have read and accept the service statements below, and authorize only the zero-cost trial without automatic renewal.", "所有时间按北京时间计算。每个账号每天随机安排一次,重启保留当天安排;错过区间时会补跑未执行账号。": "All times use Beijing time. Each account gets one random time per day, retained across restarts. If a window is missed, unrun accounts are caught up.", "所有时间按北京时间计算。网关启动后会补跑当天已到点、尚未执行的签到,不会提前执行未来时点。": "All times use Beijing time. On startup, the gateway catches up today's due, unrun check-ins without running future slots early.", "手动签到": "Manual check-in", "执行失败:{error}": "Run failed: {error}", "执行并抽奖": "Run & draw", "执行开学季任务并抽空抽奖机会(分享 / 对话 / 专家事件)": "Run school-season tasks and spend all draw chances (share / chat / expert events)", "执行规则": "Execution rules", "把缺省链填进清单,再点「保存」生效": "Puts the default chain into the list; click Save to apply", "抽奖机会 {n} 次": "{n} draw chances", "按住拖动调整顺序": "Press and drag to reorder", "按住拖动,调整这个模型在链里的顺序": "Press and drag to change this model's position in the chain", "按序逐个尝试,共 {n} 个": "{n} models, tried in order", "按结果筛选": "Filter by outcome", "授权被拒绝": "Authorization denied", "探测 + 领取 + 保活 · 与定时签到同一套组合": "Detect + claim + keep-alive · same combo as scheduled check-in", "探测活动并领取日活奖励 · 不做保活": "Detect the campaign and claim the daily-activity reward · no keep-alive", "接单 + 点亮 + 领奖(只处理已实测沉淀的任务)": "Accept + light up + claim (only tasks with verified recipes)", "插件未就绪,范围仍保留": "Plugin unavailable; scope retained", "搜索平台": "Search platforms", "搜索签到平台": "Search check-in platforms", "搜账号 / 收益 / 错误 / 触发原因": "Search account / gain / error / trigger reason", "收起": "Collapse", "收起平台": "Hide platforms", "收起新建": "Close new entry", "新建定时条目": "New scheduled entry", "新建签到计划": "New check-in schedule", "新手任务": "Starter tasks", "新手福利": "Starter rewards", "新手福利与活动": "Starter rewards & campaigns", "新手福利是一次性任务:领完就没了,重复点不会重复加分。": "Starter rewards are one-time tasks: once claimed they are gone, and repeated taps do not add points again.", "新手福利有 {n} 项领取失败,可重试": "{n} starter reward(s) failed to claim — you can retry", "新手福利领取失败 {n} 项": "Failed to claim {n} starter rewards", "新用户积分": "New-user credits", "新计划默认开启补签和活动窗口重试;保存后可到「定时补签」页单独调整。": "New schedules enable catch-up and campaign retries by default. After saving, adjust them on the Scheduled catch-up tab.", "无": "None", "无独立签到接口 · 每天替账号打一次登录信息(即当日魔粒)": "No dedicated check-in API · hits the login-info endpoint once a day per account (which grants the daily credits)", "无独立签到接口 · 每天替账号打一次首次登录积分": "No dedicated check-in API · awards first-login points once a day per account", "无账号": "No accounts", "时刻": "Times", "暂不可领": "Not claimable yet", "暂不可领(未满足条件)": "Not claimable yet (requirements not met)", "暂不支持": "Not supported yet", "暂无可领取福利": "No rewards available to claim", "暂无启用的条目": "No enabled entries", "暂无启用的条目 · 点此添加": "No enabled schedules · click to add one", "暂无月度赠送记录": "No monthly gift records", "暂无活动": "No active campaign", "最近执行:{time}": "Last run: {time}", "最近结果:成功 {n} · 保活 {active} · 失败 {failed}": "Latest result: {n} successful · {active} kept active · {failed} failed", "月度赠送": "Monthly gifts", "有平台到点待执行": "Some platforms are due and waiting", "有未保存的改动": "Unsaved changes", "未勾选提供商": "No provider selected", "未完成,请查看签到记录": "Not completed. Please check the check-in records.", "未开启": "Off", "未开通": "Not activated", "未执行开通,请查询套餐状态查看原因": "Activation was not performed. Query the plan status for details.", "未解锁": "Locked", "未领养(领养需先完成当日对话量)": "Not adopted (adoption requires the daily chat quota first)", "未领取": "Not claimed", "本地台账里今天还没领过;活动期内每天发一份新套餐": "No claim recorded locally for today yet; a new plan is issued every day during the event", "本地台账里今天(北京时间)领过的套餐:{plans}": "Plans claimed today (Beijing time) according to the local record: {plans}", "本次签到结果的记录时间:{time}(本机时区)": "Time this check-in result was recorded: {time} (local time zone)", "本次自动领取未完成验证,请在套餐明细中手动领取": "Verification was not completed for this automatic claim. Claim manually from the plan details.", "本轮已跳过:{reason}": "This run was skipped: {reason}", "权益兑换成功,重新查询可查看最新记录": "Benefit redeemed. Query again to see the latest records.", "权益兑换未成功": "Benefit redemption failed", "权益兑换码 / 订单号": "Redemption code / order number", "条启用": "enabled", "来源说明中的时刻是定时条目的名称或基准时刻,不是本次执行时间": "The time in the source description is the schedule name or base time, not the time of this run", "果办免费体验套餐": "OfficeAce free trial plan", "果办套餐接口不可用,请更新主程序和提供商插件": "The OfficeAce plan API is unavailable. Update the main application and the provider plugin.", "果办服务声明": "OfficeAce Service Statement", "查看平台": "View platforms", "查看签到记录": "View check-in records", "查询于 {time}": "Queried at {time}", "查询任务": "Query tasks", "查询任务树并一键点亮 / 领奖(含开学季与猫猫旅行)": "Query the task tree, then light up / claim in one click (includes school-season and cat travel)", "查询只读取套餐状态,点击开通后才会执行": "Querying only reads the plan status. Activation runs only when you click Activate.", "查询失败:{error}": "Query failed: {error}", "查询套餐": "Check plan", "查询活动": "Query campaigns", "查询结果": "Check result", "桌面端每日积分链路": "Desktop daily points flow", "次数按账号每天单独计算:重试到上限的账号今天不再重试,明天自动重置。": "The limit is counted per account, per day: an account that reaches it is not retried again today and resets tomorrow.", "正在为本次领取验证;若出现滑块,请手动完成": "Verifying this claim. If a slider appears, please complete it manually.", "正在读取 UMID 组件状态…": "Loading the UMID component status…", "正在读取定时签到数据…": "Loading schedule data…", "正在读取签到数据…": "Loading check-in data…", "每个签到计划对应一组补签设置": "Each check-in schedule has its own catch-up settings", "每个账号每天在区间内随机执行一次;开始与结束相同则按固定时刻执行。": "Each account runs once a day at a random time within the window. Equal start and end times mean a fixed-time run.", "每天 {time}": "Daily at {time}", "每天 {time} · {scope}": "Daily {time} · {scope}", "每天定点巡检 · 一趟推进一步 · 与签到排程互相独立": "Runs once per slot · one step per run · independent of the check-in schedule", "每天执行": "Runs daily", "每天按这里的时刻自动巡检一遍 WorkBuddy 国内版账号:没有猫就领养、在家就派出、到站就领奖。一趟只推进一步,所以建议留两个时刻(早上派出、晚上领奖)。企业版与国际版账号自动跳过。": "Automatically inspects every WorkBuddy China account at these times: adopts a cat if there is none, sends it out when idle, claims the reward when it arrives. Each run advances one step, so two slots are recommended (send out in the morning, claim in the evening). Enterprise and international accounts are skipped automatically.", "每天时刻": "Daily time", "每天自动执行": "Runs automatically every day", "每天补查一次": "One catch-up check daily", "每天补查一轮,只处理今天未签到的账号。": "Checks once daily, only for accounts not checked in today.", "每执行一次签到 · 每个账号一条明细 · 结果与收益以后端落账为准": "One row per account per check-in run · outcomes and gains as recorded by the backend", "每日活动签到(+100 积分,已领则中性提示)": "Daily activity check-in (+100 credits; a neutral note if already claimed)", "每日活跃任务 · 网页会话保活点亮日活,领取才加积分 · 两者可分开执行": "Daily activity tasks · a web-app conversation lights up the daily activity, only claims add points · the two can run separately", "每日登录积分 · 顺带领取会员活动 · 访客账号无积分体系(跳过)": "Daily sign-in points · claims member activities along the way · guest accounts have no points system (skipped)", "每日福利 · 领取 → 确认 → 回读核实 · 按北京时间自然日重置": "Daily welfare · claim → confirm → read back to verify · resets on the Beijing calendar day", "每日签到": "Daily check-in", "每日签到积分": "Daily check-in credits", "每条条目各有时刻与范围 · 各自当天去重 · 错过时点开机自动补签": "Each schedule has its own time and scope · same-day dedup per entry · missed runs are made up after startup", "每账号一条明细": "One entry per account", "每账号一条明细 · 点此查看「签到记录」": "One row per account · open \"Check-in records\"", "每账号每天最多重试(次)": "Maximum retries per account per day", "没有专属时间的平台跟随默认时间;已有专属或自定义时间的平台不会被覆盖。": "Platforms without their own time follow the default. Platform-specific and custom times are preserved.", "没有匹配的平台": "No matching platforms", "没有可执行账号": "No eligible accounts", "没有可签到的账号": "No accounts available for check-in", "没有可领套餐的账号(ZCode 未添加)。": "No accounts with claimable plans (ZCode not added).", "没有可领福利的账号(CodeArts / ZCode 未添加)。": "No accounts with claimable rewards (CodeArts / ZCode not added).", "没有支持成长任务的账号(需要 WorkBuddy 国内版)。": "No accounts support growth tasks (WorkBuddy CN required).", "没有支持新手福利的账号": "No accounts support starter rewards", "没有支持新手福利的账号 —— 目前有 Loomy、小浣熊、CodeArts 三家。": "No accounts support starter rewards — currently Loomy, Raccoon and CodeArts.", "没有支持活动福利的账号,请添加账号并更新提供商插件。": "No accounts support campaign rewards. Add an account and update the provider plugin.", "没有符合条件的账号。": "No accounts match the current filter.", "没有符合筛选条件的签到记录": "No check-in records match the current filters", "没有需要执行的任务": "Nothing to run", "活动奖励领取成功": "Campaign reward claimed successfully", "活动尚未开始(上游接口未部署)": "Campaign has not started (upstream endpoint not deployed)", "活动开始:{time}": "Campaign starts: {time}", "活动按自然日发新套餐,每天可领一次": "The campaign issues a new plan per calendar day; one claim per day", "活动未开放或已结束,请重新查询": "The campaign has not opened or has ended. Query again.", "活动福利": "Event rewards", "活动福利接口不可用,请更新网关后重试": "The campaign rewards API is unavailable. Update the gateway and try again.", "活动窗口重试": "Campaign-window retries", "活动窗口重试已关闭,等待窗口或活动下发的账号不会自动再试。": "Window retry is off; accounts waiting for a window or campaign are not retried automatically.", "活动领取未成功,请重新查询后再试": "The reward was not claimed. Query again before retrying.", "活动(campaign)领取 · 每天 10:00 刷新": "Campaign claims · refreshed daily at 10:00", "活跃上报与保活均未成功,且活动未开启": "Both the activity report and keep-alive failed, and the campaign is not active", "活跃上报完成,但保活未成功且活动未开启": "Activity reported, but keep-alive failed and the campaign is not active", "活跃上报完成,但活动未开启": "Activity reported, but the campaign is not active", "活跃上报成功": "Activity reported", "活跃保活失败": "Keep-alive failed", "活跃保活完成": "Keep-alive complete", "活跃保活完成,但活动未开启": "Keep-alive complete, but the campaign is not active", "活跃保活完成,但活跃上报失败且活动未开启": "Keep-alive complete, but the activity report failed and the campaign is not active", "添加条目": "Add schedule", "添加模型": "Add model", "清单为空 —— 保存后恢复缺省链": "The list is empty — saving restores the default chain", "清单里已经有「{name}」": "The list already contains \"{name}\"", "清空失败:{error}": "Clear failed: {error}", "清空签到记录": "Clear check-in records", "滚动 24 小时签到;按插件返回的时间等待下一次领取,不以自然日重复领取": "Rolling 24-hour check-in. Wait for the next time reported by the plugin instead of claiming again at midnight.", "点「套餐明细」看领到了哪几份、什么时候生效;活动期内每天可再领": "Click \"Plan details\" to see which plans you got and when they take effect; you can claim again every day during the event", "点击行展开账号明细 · 单账号签到不受范围限制": "Click a row to expand account details · single-account check-in is not limited by scope", "点进去查看任务并领取": "Tap to view the tasks and claim", "状态未确认": "Status unconfirmed", "独立链路 · 只提供手动入口 · 不进自动签到": "Separate flow · manual entry only · not part of auto check-in", "猫猫旅行": "Cat travel", "猫猫旅行失败:{error}": "Cat travel failed: {error}", "猫猫旅行失败:{message}": "Cat travel failed: {message}", "猫猫旅行定时排程": "Cat travel schedule", "猫猫旅行:{message}": "Cat travel: {message}", "猫猫旅行:{n} 个动作,+{credit} 积分": "Cat travel: {n} actions, +{credit} credits", "猫猫旅行:{n} 个动作,+{credit} 积分,{failed} 个失败": "Cat travel: {n} actions, +{credit} credits, {failed} failed", "用免费模型与网页会话维持账号活跃 · 不领取奖励": "Keep the account active with free models and a web-app conversation · no rewards claimed", "由官方按期自动发放,这里只展示记录,不重复领取。": "Issued automatically by the official service on schedule. These records are read-only; no duplicate claims are made.", "确定删除「{name}」?删除后到点不再执行。": "Delete \"{name}\"? It will no longer run at its scheduled time.", "确定删除「{name}」?对应的定时补签与活动重试也会一并移除,签到记录保留。": "Delete “{name}”? Its catch-up and campaign retries will also be removed. Check-in records are kept.", "确定清空全部签到记录?清空后无法恢复。": "Clear ALL check-in records? This cannot be undone.", "确定清空当前筛选出的签到记录?清空后无法恢复。": "Clear the filtered check-in records? This cannot be undone.", "确认兑换": "Confirm redemption", "确认把这份权益兑换到当前账号?兑换后可能无法撤销。": "Redeem this benefit to the current account? This may not be reversible.", "移除 {name}": "Remove {name}", "立即全部签到": "Check in all now", "立即巡检全部": "Inspect all now", "立即执行「{name}」会手动签到整个计划范围,不等待平台时点。窗口未开的平台可能仍无法领取。": "Run “{name}” now for the entire scope, without waiting for platform times? Closed windows may still prevent claims.", "等待时点": "Waiting for time", "等待签到区间": "Waiting for the check-in window", "等待签到时间": "Waiting for check-in time", "签到": "Check in", "签到与补签计划已暂停,配置仍保留;手动执行不受总开关影响。": "Check-in and catch-up schedules are paused, with settings retained. Manual runs are not affected by the master switch.", "签到中…": "Checking in…", "签到中心分区": "Check-in center sections", "签到功能分类": "Check-in categories", "签到区间": "Check-in window", "签到失败:{error}": "Check-in failed: {error}", "签到完成:{succeeded}/{total} 成功{active},{failed} 个失败": "Check-in complete: {succeeded}/{total} succeeded{active}, {failed} failed", "签到完成:{success}/{total} 成功,保活 {active},失败 {failed}": "Check-in finished: {success}/{total} successful, {active} kept active, {failed} failed", "签到成功": "Check-in succeeded", "签到提供商": "Check-in providers", "签到日期按北京时间计算": "The check-in date uses Beijing time", "签到时间": "Check-in time", "签到类型": "Check-in type", "签到范围": "Check-in scope", "签到触发时刻": "Check-in trigger time", "签到计划": "Check-in schedules", "签到记录": "Check-in records", "签到记录时间范围": "Check-in records time range", "签到记录表": "Check-in records table", "管理定时签到": "Manage scheduled check-ins", "累计签到记录": "Total check-in records", "结束时间不能早于开始时间,暂不支持跨天区间。": "The end cannot be earlier than the start. Overnight windows are not supported yet.", "结算于 {time}": "Settled at {time}", "编辑签到计划": "Edit check-in schedule", "缺少套餐开通凭证,请通过果办网页登录补齐授权": "Plan activation credentials are missing. Sign in to OfficeAce through web login to restore authorization.", "缺少开通凭证": "Activation credentials missing", "网关设备组件": "Gateway device component", "能量 {n}": "Energy {n}", "腾讯每日签到接口 · 仅国内版": "Tencent daily check-in API · China edition only", "自动巡检已暂停:{reason}": "Automatic inspection is paused: {reason}", "自动执行已开启": "Automatic runs enabled", "自动执行已暂停": "Automatic runs paused", "自动执行总开关": "Automatic run master switch", "自定义时间": "Custom time", "至少勾一家才能保存(不勾等于这条条目不签到)": "Select at least one provider to save (an empty scope means this entry checks in nothing)", "补签不早于": "Catch-up no earlier than", "补签不早于 {time}": "Catch-up no earlier than {time}", "补签单独设置,只检查今天还没有签到的账号。": "Configure catch-up separately; only checks accounts not checked in today.", "补签取「主签到区间结束加等待间隔」与「补签不早于」中较晚的时刻,不会提前补签尚未轮到的账号。": "Catch-up uses the later of the main window end plus the wait interval and the earliest catch-up time. Accounts still waiting for their turn are not processed early.", "补签在主签到区间结束后执行,只补未签到账号。": "Catch-up runs after the main check-in window and only processes accounts not checked in.", "补签已关闭": "Catch-up disabled", "补签已关闭,不影响主签到;开启后会自动生成各平台的补签安排。": "Catch-up is off; main check-ins are unaffected. Enabling it generates catch-up times for each platform.", "补签已开启": "Catch-up enabled", "补签检查": "Catch-up check", "补签计划": "Catch-up schedules", "触发会话活跃并观测积分变化;未观测到新发放时不会标为已签到": "Activates the session and checks for a points increase. No newly observed grant means it is not marked as checked in.", "计划名称": "Schedule name", "订单 {order} · 第 {period} 期": "Order {order} · Period {period}", "设备校验未就绪,部分活动可能不显示:{reason}": "Device verification is unavailable, so some campaigns may be hidden: {reason}", "设置各平台每天的签到时间,按窗口分批执行。": "Set each platform's daily check-in time and run in groups by window.", "设置定时补签": "Configure scheduled catch-up", "设置每天的签到区间,各账号在区间内随机错峰执行。": "Set the daily check-in window. Accounts run at random staggered times within it.", "设置活动窗口重试": "Configure campaign-window retries", "设置补签": "Configure catch-up", "该权益已兑换,无需重复提交": "This benefit was already redeemed. Do not submit it again.", "该活动已领取,无需重复领取": "This reward has already been claimed. No further claim is needed.", "该账号当前没有可领取的限时活动": "No limited-time rewards are currently available for this account", "请填写合法区间,结束不早于开始,并至少选择一家提供商。": "Enter a valid window with the end no earlier than the start, and select at least one provider.", "请检查时间、间隔和次数是否在允许范围内。": "Check that the time, interval and count are within the allowed ranges.", "请至少选择一个签到平台": "Select at least one check-in platform", "读取定时签到数据失败:{error}": "Failed to load schedule data: {error}", "读取签到数据失败:{error}": "Failed to load check-in data: {error}", "读取签到记录失败:{error}": "Failed to load check-in records: {error}", "调整重试": "Adjust retries", "豆包工作今日领取仍未确认,请前往官方客户端查看;再次点击仅查询结果,不会重复领取": "Today's Doubao Work claim is still unconfirmed. Check the official app; clicking again only checks the result and does not repeat the claim.", "豆包工作签到奖励已领取,已回查确认": "The Doubao Work check-in reward was claimed and verified.", "豆包工作领取结果待确认,稍后只查询结果,不会重复提交领取": "The Doubao Work claim is awaiting confirmation. Later attempts will only check the result, not submit another claim.", "账号未使用官方果办网关地址,无法在此开通免费套餐": "This account does not use an official OfficeAce gateway address. The free plan cannot be activated here.", "跟随默认时间": "Follows default time", "跳过 {n}": "{n} skipped", "运营活动交付(领取 → 确认 → 回读核实)· 领的是套餐赠送积分": "Campaign delivery (claim → confirm → read back to verify) · these are plan bonus points", "还有 {n} 个平台未执行": "{n} platforms have not run yet", "还没执行过": "Never run yet", "还没有可签到的提供商。签到能力随提供商插件包提供,装好并添加账号后这里就会出现。": "No providers to check in yet. Check-in support ships with the provider plugin packs; it appears here once a pack is installed and an account is added.", "还没有定时条目 —— 点「添加条目」建一条,或到「签到中心」手动签到。": "No schedules yet — click \"Add schedule\" to create one, or check in manually on the \"Check-in center\" tab.", "还没有签到计划,先选择平台和默认时间。": "No check-in schedules yet. Choose platforms and a default time first.", "还没有签到记录 —— 手动签到或等定时条目执行后,明细会出现在这里。": "No check-in records yet — details appear here after a manual check-in or a scheduled run.", "还没有记录": "No records yet", "这个账号没有新手任务": "This account has no starter tasks", "这里只修改定时签到;补签和活动重试配置保持原样,在「定时补签」页单独设置。": "Only scheduled check-ins are edited here. Catch-up and campaign retry settings are preserved and configured separately on the catch-up tab.", "这里只管理签到时间;补签与活动窗口重试在独立页设置。": "Only check-in times are managed here. Catch-up and campaign retries have a separate page.", "连登 {n} 天": "{n}-day streak", "选填": "Optional", "选择 {name}": "Select {name}", "选择平台后显示实际签到时间": "Select platforms to see actual check-in times", "部分": "Partial", "重新查询": "Check again", "重新检查": "Check again", "重签": "Check in again", "重试": "Retry", "重试关闭": "Retries disabled", "重试已暂停": "Retries paused", "重试开启": "Retries enabled", "重试间隔(分钟)": "Retry interval (minutes)", "间隔 {gap} 分钟 · 每账号每天最多重试 {limit} 次": "Every {gap} minutes · Up to {limit} retries per account per day", "间隔填 0 会关闭活动窗口重试;定时补签仍至少等待 1 分钟,不会一起关闭。": "An interval of 0 disables campaign retries. Scheduled catch-up still waits at least 1 minute and remains enabled.", "限时体验套餐 · 领取需滑块验证码 · 逐份查看与领取": "Limited-time trial plan · claim requires a slider CAPTCHA · view and claim one by one", "限时体验套餐(start-plan),活动期内每天一份 · 领取需滑块验证码": "Limited-time trial plan (start-plan), one per day during the campaign · claim requires a slider CAPTCHA", "限时活动与体验套餐 · 查询后逐项领取 · 不影响每日签到": "Limited-time rewards and trial plans · Query and claim individually · Separate from daily check-in", "随机签到开始": "Random check-in start", "随机签到结束": "Random check-in end", "随签到计划暂停": "Paused with the check-in schedule", "需人工处理": "Manual action required", "需真实操作": "Requires real action", "需要人工验证": "Human verification required", "非活动期": "Event inactive", "项": "items", "预计发放:{time}": "Scheduled issue: {time}", "领取": "Claim", "领取中": "Claiming", "领取中…": "Claiming…", "领取免费 CodingPlan(按需:套餐有效时只回读额度)": "Claim the free CodingPlan (on demand: when the plan is active the quota is only read back)", "领取后 {days} 天有效": "Valid for {days} days after claiming", "领取失败": "Claim failed", "领取失败:{error}": "Claim failed: {error}", "领取奖励": "Claim reward", "领取截止:{time}": "Claim deadline: {time}", "领取时间:{time}": "Claimed at: {time}", "领取结果待确认": "Claim awaiting confirmation", "领取结果待确认,请稍后查询;不会重复提交领取": "The claim is awaiting confirmation. Query again later; no duplicate claim will be submitted.", "领取被拒绝": "Claim rejected", "领取通常需要过一次滑块验证;活动套餐多为当天稍晚生效,领取后可在桌面端「账号」里看套餐明细。": "Claiming usually requires passing a slider verification. Campaign plans often take effect later the same day; after claiming, see plan details under Accounts on desktop.", "领取验证任务已结束,请到套餐明细查看结果": "This verification task has ended. Check the plan details for the result.", "额度到期:{time}": "Credits expire: {time}", "验证凭据正在提交,领取结果请查看签到记录": "Submitting verification. Check the check-in records for the claim result.", "验证提交结果未确认,请查看签到记录,勿重复领取": "The verification submission is unconfirmed. Check the check-in records and do not repeat the claim.", "默认 {time} · {n} 个平台 · {groups} 组签到时间": "Default {time} · {n} platforms · {groups} time groups", "默认使用第一把可用 API Key,想换就在上面选一把": "Uses the first available API Key by default; select another above to change it.", "默认签到时间": "Default check-in time", "(共 {n} 个账号)": " ({n} accounts total)", "(能量 / 连登读数本次未取到)": "(Energy / streak readings unavailable this time)", ",日活保活 {n} 个": ", {n} kept alive", " 字段": " field", " 的 ": " — see the ", "{enabled} / {total} 个已开启": "{enabled} / {total} enabled", "{name}开关": "{name} toggle", "{name}间隔": "{name} interval", "{name}间隔必须是 {min}–{max} 分钟的整数": "The {name} interval must be a whole number from {min} to {max} minutes", "{n} 秒后": "in {n} seconds", "✅ {task}:{summary}": "✅ {task}: {summary}", "✅ 已更新「{label}」": "✅ Updated \"{label}\"", "上次执行 {time}": "Last run {time}", "上次执行 {time}({result})": "Last run {time} ({result})", "上次执行中断,没有完整结果;请核对账号状态": "The previous run was interrupted and has no complete results. Check the account status.", "下次执行 {time}": "Next run: {time}", "下次执行 {time}({relative})": "Next run {time} ({relative})", "仅维护过期或即将过期的凭证": "Only expired or soon-to-expire credentials are maintained", "仅记录状态与结果,不展示密钥或令牌。": "Only status and results are recorded; keys and tokens are not shown.", "仅重试失败项": "Retry failed items only", "仅重试这一项": "Retry this item only", "任务正在执行中,请稍候": "The task is already running. Please wait.", "任务清单": "Task list", "任务配置保存在 ": "Task configuration is stored in ", "停留在「报表」页时按此间隔重新拉取统计数据;页面不可见时不请求。": "While the Reports page is open, statistics are fetched again at this interval; no requests are made while the page is not visible.", "停留在「日志」页时按此间隔重新拉取系统事件;页面不可见时不请求。": "While the Logs page is open, system events are fetched again at this interval; no requests are made while the page is not visible.", "停留在「请求日志」页时按此间隔重新拉取请求日志;页面不可见时不请求。": "While the Request logs page is open, request logs are fetched again at this interval; no requests are made while the page is not visible.", "全部触发方式": "All triggers", "全部跳过": "All skipped", "共 {n} 次执行": "{n} runs in total", "关闭自动维护不影响手动执行,也不影响对话请求所需的按需续期。": "Turning off automatic maintenance does not affect manual runs or on-demand credential renewal for chat requests.", "冷却中,{relative}重试": "Cooling down, retrying {relative}", "冷却至 {time}": "Cooldown until {time}", "凭证变化": "Credential changes", "凭证已更新": "Credentials updated", "凭证未过期或临期": "Credentials are not expired or close to expiry", "凭证维护": "Credential maintenance", "凭证自动维护": "Credential auto-maintenance", "分钟执行一次": "minutes per run", "刚刚已执行,请稍后重试": "This task just ran. Please retry shortly.", "刷新前有效期": "Expiry before renewal", "刷新后有效期": "Expiry after renewal", "刷新记录": "Refresh records", "即将执行": "About to run", "原因 / 说明": "Reason / Notes", "去账号页处理": "Open account", "只刷新过期或即将过期的账号凭证": "Renew only expired or soon-to-expire account credentials", "可填 {min}–{max}": "Allowed: {min}–{max}", "可填 {min}–{max} {unit}(默认 {def} {unit})": "Allowed: {min}–{max} {unit} (default {def} {unit})", "固定模型清单": "Fixed model list", "失败重试": "Retry of failed items", "定时任务已刷新": "Scheduled tasks refreshed", "定期向 GitHub 查询最新发布版本,默认每 20 分钟一次。检查结果、排期和限流冷却跨重启保留;手动检查也会合并重复请求并遵守冷却。开关与间隔在「软件更新」面板的「更新设置」弹窗里配置(定时任务页不再渲染这一条)。": "Periodically queries GitHub for the latest release version, once every 20 minutes by default. Check results, scheduling, and the rate-limit cooldown persist across restarts; manual checks also merge duplicate requests and respect the cooldown. The toggle and interval are configured in the \"Update settings\" dialog of the \"Software update\" panel (this row is no longer rendered on the Scheduled tasks page).", "定期拉取最新模型清单,重启沿用排期与缓存。客户端读取模型列表的后台刷新也遵守本任务开关、间隔和失败冷却;手动获取模型可提前刷新。": "Periodically fetches the latest model list; the schedule and cache carry over across restarts. The background refresh when clients read the model list also respects this task's toggle, interval, and failure cooldown; a manual model fetch can refresh ahead of schedule.", "定期拉取最新模型清单,重启沿用排期与缓存。客户端读取模型列表的后台刷新也遵守本任务开关、间隔和失败冷却;手动获取模型可提前刷新。同一轮顺带刷新 models.dev 模型元数据(能力位与思考档位,可在设置页单独关闭)。": "Periodically fetches the latest model list; the schedule and cache carry over across restarts. The background refresh when clients read the model list also respects this task's toggle, interval, and failure cooldown; a manual model fetch can refresh ahead of schedule. The same round also refreshes the models.dev model metadata (capability flags and reasoning tiers, which can be turned off separately on the Settings page).", "定期获取各提供商的最新模型清单": "Periodically fetch each provider's latest model list", "定期遍历账号,只刷新已过期或临期的凭证。重启后沿用上次排期,失败账号在冷却后重试;转发需要的按需续期不受此开关影响。": "Periodically iterates over accounts and refreshes only expired or soon-to-expire credentials. The previous schedule carries over after a restart, and failed accounts are retried after a cooldown; on-demand renewals needed for forwarding are not affected by this toggle.", "客户端触发": "Client-triggered", "尚未执行维护": "Not run yet", "尚未执行维护,自动或手动执行后会显示结果": "No maintenance has run yet. Results will appear after an automatic or manual run.", "已在设置里关闭 models.dev 模型元数据": "models.dev metadata is disabled in Settings", "已执行": "Done", "已更新 {n} 条": "Updated {n} entries", "已续期并确认凭证更新": "Renewed and confirmed that credentials were updated", "已获取最新模型目录": "Latest model catalog fetched", "建议重试时间": "Suggested retry time", "当前没有可用的目录账号": "No account is available for fetching the catalog", "成功提供商": "Providers updated", "成功账号": "Accounts renewed", "手动触发": "Manual", "执行中断": "Interrupted", "执行中断,结果可能已部分生效,请先核对账号状态": "The run was interrupted. Some changes may have taken effect; check the account status first.", "执行失败:{reason}": "Run failed: {reason}", "执行时的结果快照,不随账号后续变化而改变": "A snapshot of this run, unchanged by later account updates", "执行时间": "Run time", "执行明细": "Run details", "执行汇总": "Run summary", "执行间隔(分钟)": "Interval (minutes)", "报表自动刷新": "Reports auto-refresh", "指定账号不属于该提供商、未启用或没有可用凭证": "The selected account belongs to another provider, is disabled, or has no usable credentials", "提供商当前不可用,未执行目录更新": "The provider is unavailable; its catalog was not updated", "搜索账号或提供商": "Search accounts or providers", "收起明细": "Hide details", "改动立即生效,不需要重启程序": "Changes take effect immediately; no restart needed", "无失败项": "No failures", "日志页自动刷新": "Logs auto-refresh", "明细状态筛选": "Filter item status", "暂无维护记录,首次执行后会自动保存": "No maintenance records yet. The first run will be saved automatically.", "暂无记录": "No records yet", "最近一次": "Last run", "有失败项": "Has failures", "有效期已延长": "Expiry extended", "未使用账号": "No account used", "未变更": "Unchanged", "未注册的提供商": "Unregistered provider", "未返回失败原因": "No failure reason was returned", "本次无需更新,沿用现有状态": "No update needed; keeping the current state", "本轮共 {n} 项": "{n} items in this run", "本轮没有符合条件的项目": "No matching items in this run", "查看凭证与模型目录的每次维护结果,失败和跳过都有原因": "Review every credential and model catalog maintenance run, with reasons for failures and skipped items", "查看原因": "View reason", "查看明细": "View details", "查看详情": "View details", "模型基础信息": "Model metadata", "模型目录": "Model catalog", "模型目录刷新": "Model catalog refresh", "模型目录更新": "Model catalog update", "正在加载定时任务…": "Loading scheduled tasks…", "正在读取维护记录…": "Loading maintenance records…", "此前仅有汇总,尚无逐项记录": "Only a summary was recorded previously; item details are not available", "每 {n} 分钟": "Every {n} minutes", "没有可显示的定时任务。后端未返回任务清单,请确认网关正在运行。": "No scheduled tasks to show. The backend did not return a task list — make sure the gateway is running.", "没有符合筛选条件的维护记录": "No maintenance records match these filters", "沿用缓存或当前没有可用的目录来源": "Using cached data, or no catalog source is currently available", "沿用缓存,尚未到刷新时间": "Using the cache; the next update is not due yet", "状态每 20 秒自动同步": "Status syncs automatically every 20 seconds", "由页面按间隔自动刷新": "Auto-refreshed by the page on its interval", "登录授权已失效,需要重新登录该账号": "Sign-in authorization has expired. Sign in to this account again.", "目录最近更新时间": "Last catalog update", "立即执行": "Run now", "立即检查": "Check now", "维护已完成,结果已保存": "Maintenance completed and results saved", "维护已开始,结果会自动更新,可离开此页": "Maintenance started. Results will update automatically; you can leave this page.", "维护已执行,但完整结果未能保存;请先核对账号状态,不要反复执行": "Maintenance ran, but the complete results could not be saved. Check account status before running it again.", "维护已结束,有失败项,请查看明细": "Maintenance finished with failures. Review the details.", "维护接口不可用,请更新网关并重新打开页面": "The maintenance API is unavailable. Update the gateway and reopen this page.", "维护正在执行,完成后会显示逐项结果": "Maintenance is running. Item results will appear when it finishes.", "维护类型": "Maintenance type", "维护记录保留 {days} 天,最多 {count} 次;仅保存结果,不保存密钥或令牌。": "Maintenance records are kept for {days} days, up to {count} runs. Only results are saved, never keys or tokens.", "维护设置": "Maintenance settings", "维护设置未能保存到数据库,请检查磁盘空间和权限": "Maintenance settings could not be saved to the database. Check disk space and permissions.", "自动和手动维护,统一在这里查看": "Automatic and manual maintenance in one place", "自动维护与手动执行共用同一份结果记录": "Automatic and manual runs share the same result history", "自动维护已关闭": "Automatic maintenance is off", "自动触发": "Automatic", "触发方式": "Trigger", "该提供商不支持主动刷新凭证(没有续期手段)": "This provider does not support credential renewal", "该提供商使用固定模型清单": "This provider uses a fixed model list", "该次执行未完成,没有完整明细": "This run did not finish; complete details are unavailable", "请求日志页自动刷新": "Request logs auto-refresh", "账号已不存在,未执行维护": "The account no longer exists; maintenance was not performed", "软件版本检查": "Software update check", "还没有执行记录": "No runs recorded yet", "逐个提供商更新模型目录,模型基础信息单独列出结果": "Updates each provider's catalog; model metadata results are listed separately", "部分失败": "Partially failed", "部分设置可能已保存,请核对后重试:{reason}": "Some settings may have been saved. Review them before retrying: {reason}", "重新加载": "Reload", "重试生成新记录,不覆盖本次结果": "Retries create a new record without overwriting this result", "间隔不能为空(可填 {min}–{max} {unit})": "Interval cannot be empty (allowed: {min}–{max} {unit})", "间隔必须在 {min}–{max} {unit} 之间(当前填的是 {value})": "Interval must be between {min} and {max} {unit} (currently {value})", "间隔必须是整数": "Interval must be an integer", "页面自动刷新": "Page auto-refresh", "debug 及以上": "debug and above", "info 及以上": "info and above", "warn 及以上": "warn and above", "{matched} / {total} 条": "{matched} / {total} entries", "{minutes} 分 {seconds} 秒": "{minutes} min {seconds} s", "{n} 个启动失败": "{n} failed to start", "{n} 个已就绪": "{n} ready", "{n} 个等待恢复": "{n} waiting for recovery", "{n} 条": "{n} entries", "{n} 毫秒": "{n} ms", "✅ 已导出 {count} 条日志到 {file}": "✅ Exported {count} log entries to {file}", "上游": "Upstream", "上游接口请求": "Upstream API request", "事件摘要": "Event summary", "事件日志时间范围": "Event log time range", "事件详情": "Event details", "仅 error": "error only", "仅显示调试记录,供排查问题使用。": "Shows only debug records for troubleshooting.", "仅错误": "Errors only", "余额查询失败": "Balance query failed", "余额查询完成": "Balance query completed", "余额查询未配置": "Balance query not configured", "信息": "Info", "信息及以上": "Info and above", "全部事件": "All events", "全部分类": "All categories", "全部级别": "All levels", "共享运行环境尚未就绪,不代表这个插件本身损坏。请在插件页查看加载诊断。": "The shared runtime is not ready; this does not mean the plugin is damaged. View the loading diagnostics on the Plugins page.", "关联标识": "Correlation ID", "出站参数归一": "Outbound parameter normalization", "分类": "Category", "分页按折叠后的组数计算": "Pagination counts collapsed groups", "加载插件": "Loading plugin", "原始消息": "Original message", "原始记录": "Raw records", "原始记录 {n} 条": "{n} raw records", "发生时间": "Occurrence times", "各阶段耗时": "Time spent at each stage", "启动结果": "Startup results", "启动超时": "Startup timed out", "启动进程": "Starting process", "处理建议": "Suggested action", "复制原始记录": "Copy raw records", "复制失败": "Copy failed", "复制当前筛选结果": "Copy filtered results", "复制本页原始记录": "Copy this page's raw records", "导出": "Export", "导出当前筛选": "Export filtered logs", "已复制 {n} 条日志": "Copied {n} log entries", "已暂停刷新": "Refresh paused", "恢复刷新": "Resume refresh", "折叠重复日志": "Collapse repeated logs", "按分类筛选": "Filter by category", "按最低级别筛选": "Filter by minimum level", "插件名称": "Plugin name", "插件启动失败": "Plugin failed to start", "插件启动存在异常": "Some plugins could not start", "插件启动完成,{n} 个已就绪": "Plugin startup complete: {n} ready", "插件启动超时": "Plugin startup timed out", "插件已就绪": "Plugin ready", "插件已恢复运行": "Plugin is running again", "插件暂不可用,等待运行环境恢复": "Plugin unavailable while the runtime recovers", "插件暂时无法使用": "Plugin temporarily unavailable", "插件未能就绪": "Plugin did not become ready", "插件未能正常停止": "Plugin did not stop normally", "插件编号": "Plugin ID", "插件进程已退出": "Plugin process exited", "搜索关键字": "Search keywords", "搜索插件、消息、提供商或账号": "Search plugins, messages, providers or accounts", "搜索插件、消息、提供商或账号…": "Search plugins, messages, providers or accounts…", "搜索消息、提供商或账号": "Search messages, providers or accounts", "搜索消息、提供商或账号…": "Search messages, providers or accounts…", "搜索消息关键词": "Search message keywords", "搜索消息关键词…": "Search message keywords…", "操作失败:{error}": "Operation failed: {error}", "日志视图": "Log view", "日志详情": "Log details", "日志详情视图": "Log details view", "显示 {groups} 组 · 原始记录 {entries} 条": "{groups} groups · {entries} raw records", "显示启动汇总和需要关注的事件;单个插件的正常启动记录在“全部事件”中。": "Shows startup summaries and events that need attention. Individual successful startups are in All events.", "显示所有已保留的事件;技术信息可在详情中查看。": "Shows all retained events. Open details for technical information.", "暂停刷新": "Pause refresh", "暂无日志": "No logs", "暂无日志可导出": "No logs to export", "有 {n} 条新日志": "{n} new log entries", "服务": "Service", "未记录插件名称": "Plugin name not recorded", "本次启动超过等待时限。请在插件页查看加载诊断,确认后重新加载。": "Startup exceeded the time limit. Review the loading diagnostics on the Plugins page before reloading.", "查看日志详情:{message}": "View log details: {message}", "查看最新": "View latest", "模型 {model}": "Model {model}", "次数": "Count", "正在加载日志…": "Loading logs…", "没有符合条件的日志": "No logs match the conditions", "没有符合筛选条件的日志": "No logs match the filters", "清空中…": "Clearing…", "清空当前筛选": "Clear filtered logs", "清空运行日志": "Clear runtime logs", "状态码": "Status code", "用时 {duration}": "Took {duration}", "登记提供商": "Registering providers", "相关功能暂不可用,原因见详情": "Related features are unavailable; see details for the reason", "确定清空全部运行日志?清空后无法恢复。": "Clear all runtime logs? This cannot be undone.", "确定清空当前筛选出的 {count} 条日志?清空后无法恢复。": "Clear the {count} filtered log entries? This cannot be undone.", "系统事件": "System events", "级别": "Level", "结束阅读": "End reading", "结果未确认": "Result unconfirmed", "脱敏": "Redaction", "自动刷新": "Auto-refresh", "自动刷新已关闭": "Auto-refresh disabled", "自动签到": "Auto check-in", "补充系统消息": "System message added", "警告": "Warning", "警告 {n}": "Warnings {n}", "警告及以上": "Warnings and errors", "计费接口请求": "Billing API request", "详细信息": "Details", "请在插件页查看加载诊断,确认原因后重新加载。": "View the loading diagnostics on the Plugins page and check the cause before reloading.", "读取日志失败": "Failed to load logs", "调试": "Debug", "调试 {n}": "Debug {n}", "调试详情": "Debug details", "调试采集未开启,仅显示已保留的记录。可在设置中开启调试模式。": "Debug collection is off. Only retained records are shown. Enable debug mode in Settings to collect new records.", "运行日志已清空": "Runtime logs cleared", "部分插件暂不可用。请在插件页查看异常插件的加载诊断。": "Some plugins are unavailable. Open the Plugins page to view their loading diagnostics.", "重要事件": "Important events", "错误": "Error", "错误 {n}": "Errors {n}", "阅读模式": "Reading mode", "阅读模式,列表保持不动": "Reading mode: list stays in place", "附加数据": "Additional data", " · {n} 进行中": " · {n} in progress", " · 会话粘住": " · session stuck", "

    无响应原文
    ": "
    No raw response
    ", "
    无法解析响应内容
    ": "
    Unable to parse response content
    ", "
    无法解析请求体(不是含 messages 数组的 JSON)
    ": "
    Unable to parse request body (not JSON with a messages array)
    ", "
    无请求原文
    ": "
    No raw request
    ", "
    调用工具 {name}
    ": "
    Tool call {name}
    ", "响应原文": "Raw response", "思考过程": "Reasoning process", "请求原文": "Raw request", "HTTP {status},但响应体阶段出错": "HTTP {status}, but the response body phase failed", "HTTP {status},但响应体阶段出错:见错误列": "HTTP {status}, but the response body phase failed: see the error column", "{duration} / 首帧 {first}": "{duration} / TTFB {first}", "{m}分{s}秒": "{m}m {s}s", "{n}秒": "{n}s", "{s}秒{ms}ms": "{s}s {ms}ms", "↻ {n} 次": "↻ {n} times", "↻ 重试 {n} 次": "↻ Retried {n} times", "✅ 压缩完成": "✅ Vacuum complete", "「仅看进行中」开启时,状态固定为进行中": "When \"In progress only\" is on, the status is pinned to In progress", "上游模型繁忙,请求已排进上游队列;网关正按上游建议的时长等待后重发(不是登录态或额度问题)": "Upstream model is busy; the request is queued upstream and the Gateway will resend it after the wait suggested by the upstream (not a login-session or quota problem)", "上游没有返回积分消耗": "The upstream did not report points consumption", "上游状态码: {status}": "Upstream status code: {status}", "上游请求已发出,正在等第一个字节到达(模型的思考时间也在这段)": "Upstream request sent, waiting for the first byte to arrive (model thinking time is included here)", "上游返回错误": "Upstream returned an error", "下游请求的模型:{model}": "Model requested downstream: {model}", "仅清空报文原文": "Clear raw payloads only", "仅看进行中": "In progress only", "令牌": "Tokens", "体积": "Size", "保留 {count} 条请求记录 · 将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "Keep {count} request records · Clear {upstream} upstream debug payloads and {downstream} downstream bodies · Database size {db}", "保留 {count} 条请求记录;将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。用量统计与报表不变。": "Keeps {count} request records; clears {upstream} upstream debug payloads and {downstream} downstream bodies. Usage statistics and reports remain unchanged.", "保留统计行与报表,只抹掉请求 / 响应正文。清理后详情弹窗的「预览对话」将无原文可看,统计数字分毫不动。": "Keeps stats rows and reports, and only wipes the request / response bodies. After clearing, \"Conversation preview\" in the detail dialog will have no raw content to show and the stats numbers stay exactly the same.", "保留请求记录、用量统计与报表,同时清理上游调试报文和下游请求 / 响应正文。清理后「预览对话」与「原始报文」不再保留原文。有筛选时只清理命中请求的报文;无筛选时清空两侧全部报文。此操作无法恢复。": "Keeps request records, usage statistics, and reports while clearing upstream debug payloads and downstream request / response bodies. Conversation preview and Raw payload will no longer contain the original content. With filters active, only payloads for matching requests are cleared; without filters, all payloads on both sides are cleared. This cannot be undone.", "全部删除": "Delete all", "全部提供商": "All providers", "全部模型": "All models", "全部状态": "All statuses", "全部请求数据": "all request data", "共 {images} 张图片,复用 {cached} 张识读结果": "{images} images; {cached} readings reused", "共 {n} 次尝试": "{n} attempts total", "共 {n} 次尝试,最终由 {provider} 承载": "{n} attempts total, finally served by {provider}", "其它": "Other", "内容按原样保存,请求头中的凭据字段已替换为 [redacted]": "Content is saved as-is; credential fields in the request headers have been replaced with [redacted]", "内部重试": "Internal retry", "切换路径:": "Switch path:", "列表数据已刷新,请重试(关闭后重新打开这条详情)": "List data has been refreshed; please try again (close and reopen this detail)", "删除日志记录本身。当前有筛选时只删命中的条目,按天聚合报表不受影响;无筛选时清空全部并重置报表。此方式无法恢复。": "Deletes the log records themselves. With filters active, only matching entries are deleted and daily aggregate reports are unaffected; with no filters, everything is cleared and reports are reset. This cannot be undone.", "删除请求记录,并同步清理对应的上游调试报文与下游正文。有筛选时只删除命中的记录,按天聚合报表不受影响;无筛选时清空全部并重置报表。此操作无法恢复。": "Deletes request records together with their upstream debug payloads and downstream bodies. With filters active, only matching records are deleted and daily reports are preserved; without filters, all data is cleared and reports are reset. This cannot be undone.", "压缩中…": "Vacuuming…", "压缩失败:{message}": "Vacuum failed: {message}", "压缩已在后台开始,完成后会自动提示": "Vacuum started in the background; you will be notified when it completes", "压缩已在进行中": "Vacuum already in progress", "压缩已在进行中,接上它的进度等待完成": "Vacuum already in progress; joining it and waiting for it to finish", "压缩数据库": "Vacuum database", "压缩正在后台执行,完成后自动恢复": "Vacuum is running in the background; it resumes automatically when it completes", "原始报文": "Raw payload", "原模型": "Original model", "另有 {missing} 次尝试未记录明细(只保留最早的 {kept} 条)": "{missing} more attempts have no details recorded (only the earliest {kept} are kept)", "另有 {n} 个词命中": "{n} more words hit", "只显示正在转发中的请求(状态列按阶段显示:连接中 / 等待响应 / 响应中 / 重试中,用时列显示已用时)": "Only shows requests currently being forwarded (the status column shows the phase: Connecting / Awaiting response / Streaming / Retrying; the duration column shows elapsed time)", "只看失败": "Failed only", "只看成功": "Success only", "只看进行中": "In progress only", "命中了敏感词": "Sensitive word hit", "命中的敏感词": "Sensitive words hit", "响应中": "Streaming", "响应体": "Response body", "响应头": "Response headers", "回收已删除数据占用的磁盘空间(checkpoint + VACUUM,后台执行)": "Reclaims the disk space used by deleted data (checkpoint + VACUUM, runs in the background)", "图片处理用时:{n} 秒": "Image processing time: {n} seconds", "在设置 → 通用里开启「调试模式」后,新发生的请求才会保存报文": "Raw payloads are only saved for requests made after \"Debug mode\" is enabled in Settings → General", "在路由页查看": "View on the Routing page", "处理中": "Processing", "失败请求不记录用量": "Usage is not recorded for failed requests", "失败({status}):{error}": "Failed ({status}): {error}", "失败:{error}": "Failed: {error}", "实际发给上游 {bytes} 字节": "{bytes} bytes actually sent upstream", "客户端": "Client", "将删除 {count} 条日志 · 其中 {raw} 条仍带报文原文 · 数据库占用 {db}": "Will delete {count} logs · {raw} of them still carry raw payloads · database size {db}", "将删除 {count} 条请求记录 · 同步清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "Delete {count} request records · Clear {upstream} upstream debug payloads and {downstream} downstream bodies · Database size {db}", "将删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "Deletes {count} request records and clears {upstream} upstream debug payloads and {downstream} downstream bodies.", "尝试 {n} ·": "Attempt {n} ·", "尝试明细": "Attempt details", "尝试次数": "Attempts", "工具结果": "Tool result", "工具结果 · {id}": "Tool result · {id}", "工具结果图片": "Tool result image", "已删除 {count} 条": "{count} logs deleted", "已删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "Deleted {count} request records and cleared {upstream} upstream debug payloads and {downstream} downstream bodies.", "已受理终止:上游连接已断开,列表稍后刷新为「请求已被手动终止」": "Abort accepted: the upstream connection is closed; the list will refresh to \"Request manually aborted\" shortly", "已抹掉 {count} 条报文原文": "Raw payloads wiped for {count} logs", "已清理上游调试报文 {upstream} 条、下游正文 {downstream} 条;请求记录与报表已保留。": "Cleared {upstream} upstream debug payloads and {downstream} downstream bodies; request records and reports were preserved.", "已用时(请求仍在转发中)": "Elapsed time (request is still being forwarded)", "开启调试模式后仅记录新请求,历史对话无法补录;关闭不会删除已有记录。": "Debug mode records only new requests; past conversations cannot be recovered. Turning it off does not delete existing records.", "当前筛选范围": "the current filter results", "当前网关未提供上游 / 下游清理统计,请更新网关后再清理。": "This gateway does not provide upstream / downstream cleanup counts. Update the gateway before clearing data.", "成功": "Success", "成功({status})": "Success ({status})", "所属请求": "Parent request", "执行清理": "Run clear", "报文超过单条上限,请求体 / 响应体已按上限截断": "Payload exceeds the per-record limit; the request / response bodies have been truncated to the limit", "抹掉原文": "Wipe raw payloads", "按提供商筛选": "Filter by provider", "按提供商筛选(只列日志里出现过的)": "Filter by provider (only lists providers seen in the logs)", "按时间倒序,全量保留": "Reverse chronological order; kept in full", "按模型筛选": "Filter by model", "按模型筛选(只列日志里出现过的;精确匹配模型名)": "Filter by model (only lists models seen in the logs; matches the exact model name)", "按请求结果筛选": "Filter by request result", "排队中": "Queued", "提供商 / 账号": "Provider / Account", "提供商: {provider}": "Provider: {provider}", "提示": "Notice", "敏": "SW", "敏感词": "Sensitive words", "数据库占用包含主文件与 WAL 文件;清理后可点击「压缩数据库」回收空闲空间。": "Database size includes the main file and WAL file. After clearing data, use Vacuum database to reclaim unused space.", "断开上游连接,明细记为「请求已被手动终止」": "Disconnects the upstream connection and records the detail as \"Request manually aborted\"", "无报文原文(未开启「调试模式」,或已被清理)": "No raw payload (debug mode was off, or it has been cleared)", "无结果记录": "No result recorded", "旧版本保存的正文可能已截断,无法恢复缺失内容": "The body saved by an older version may be truncated; missing content cannot be recovered", "时间": "Time", "暂无请求日志,网关还没有转发过请求": "No request logs yet; the Gateway hasn't forwarded any requests", "最终承载:{picked}": "Finally served by: {picked}", "本次请求消耗 {credit} 积分": "Points consumed by this request: {credit}", "本轮尝试失败,正在退避等待或切换到下一个账号": "This attempt failed; backing off or switching to the next account", "来源客户端:{client}": "Source client: {client}", "查看该请求的上游原始报文": "View the raw upstream payload for this request", "模型": "Model", "模型测试": "Model test", "模型管理页操作列那颗「测试」发起的请求:与真实请求同一条转发链路,但不计入报表统计": "Requests started by the \"Test\" button in the action column of the Model Management page: the same forwarding path as real requests, but not counted in reports", "正在加载请求日志…": "Loading request logs…", "正在统计…": "Calculating…", "正文超过单条上限,可能已被截断": "Body exceeds the per-record limit and may have been truncated", "没有符合筛选条件的请求": "No requests match the current filters", "清理": "Clear", "清理中…": "Clearing…", "清理失败:{message}": "Clear failed: {message}", "清理方式": "Clear mode", "清理请求已返回,但结果数据不完整,请刷新后确认。": "The cleanup request returned incomplete result data. Refresh to confirm the outcome.", "清理请求日志": "Clear request logs", "清理预览数据不完整": "Cleanup preview data is incomplete", "清空两侧原文": "Clear both sides", "生产请求": "Production requests", "生成速度:输出 token ÷ 流式段用时(总用时 − 首响);流式段不足总用时一半时按总用时计": "Generation speed: output tokens ÷ streaming time (total duration − TTFB); falls back to total duration when the streaming window is under half the request", "用时": "Duration", "用量": "Usage", "确定对{scope}执行「{label}」?
    {summary}
    此操作无法恢复。": "Run {label} on {scope}?
    {summary}
    This cannot be undone.", "确定对全部请求日志执行「{label}」?将处理 {count} 条,此操作无法恢复。": "Run \"{label}\" on all request logs? This will process {count} entries and cannot be undone.", "确定按当前筛选执行「{label}」?将处理 {count} 条,此操作无法恢复。": "Run \"{label}\" on the current filter results? This will process {count} entries and cannot be undone.", "确定终止这条正在转发的请求?
    上游连接会立即断开,明细将记为「请求已被手动终止」。": "Abort this request that is being forwarded?
    The upstream connection will be closed immediately and the detail will be recorded as \"Request manually aborted\".", "等待响应": "Awaiting response", "策略 {strategy} · 会话粘性 {sticky}{hit}": "Strategy {strategy} · Stickiness {sticky}{hit}", "终止": "Abort", "终止失败:{error}": "Abort failed: {error}", "终止请求": "Abort request", "结果": "Result", "缓存读取: - / 命中率: -": "Cache reads: - / Hit rate: -", "缓存读取: {cache} / 命中率: {rate}": "Cache reads: {cache} / Hit rate: {rate}", "耗时": "Duration", "被跳过:": "Skipped: ", "识别到 User-Agent,但不属于已知的客户端类型:{ua}": "User-Agent present but not a known client type: {ua}", "识图用量按实际视觉账号单独记录,不混入原模型的回答用量。": "Vision usage is recorded separately against the actual vision account, not mixed with the original model's answer usage.", "详情": "Details", "详情内容": "Detail content", "请求体": "Request body", "请求图片": "Request image", "请求在任何账号接手之前就失败了": "The request failed before any account picked it up", "请求头": "Request headers", "请求已受理,正在选路、取凭证、建立上游连接": "Request accepted; selecting a route, fetching credentials, and establishing the upstream connection", "请求日志列表": "Request Logs", "请求日志时间范围": "Request Logs time range", "请求日志表": "Request Logs table", "请求正在转发中,用时列显示的是已用时": "The request is being forwarded; the duration column shows elapsed time", "请求筛选": "Request filters", "请求详情": "Request details", "读取请求日志失败,详见控制台": "Failed to load request logs; see the console for details", "路由回放": "Routing replay", "转发到上游的模型:{model}": "Model forwarded to the upstream: {model}", "轮次": "Round", "辅助识图调用": "Assisted image reading call", "输入 {input} · 输出 {output} · 总计 {total} · 缓存读 {cache}": "Input {input} · Output {output} · Total {total} · Cache reads {cache}", "这条报文由旧版本截断保存,缺失内容无法恢复": "This payload was truncated by an older version; missing content cannot be recovered", "这条明细是一次模型测试(人工发起):走的是真实转发链路,但不计入报表统计": "This detail row is a model test (manually started): it takes the same forwarding path as real requests but is not counted in reports", "这条明细没有记录提供商(旧数据或请求未走到转发)": "No provider is recorded for this detail row (old data, or the request never reached forwarding)", "这条明细没有记录来源客户端(旧数据、模型测试,或请求未带 User-Agent)": "No source client recorded for this entry (legacy data, model test, or request without User-Agent)", "这条记录命中了敏感词,但没有留下命中明细": "This record hit a sensitive word, but no hit details were kept", "这条记录的尝试明细未采集(该字段上线前的旧数据,或请求在转发前就失败)": "Attempt details were not collected for this record (old data from before this field existed, or the request failed before forwarding)", "这条请求没有保存这一段报文": "This request did not save this payload section", "进入「{phase}」阶段已持续 {time}": "In \"{phase}\" phase for {time}", "进行中": "In progress", "进行中…": "In progress…", "连接中": "Connecting", "速度": "Speed", "重试 {n}": "Retry {n}", "重试中": "Retrying", "重试次数": "Retries", "面板内发起的模型调用,消耗额度并记录 Key,不计入生产报表": "Model call started from the panel; uses quota and records the API Key, but is excluded from production reports", "预览对话": "Conversation preview", "预览读取失败": "Failed to load preview", "预览读取失败:{error}": "Failed to load preview: {error}", "额外识图用量:{n} Token": "Additional vision usage: {n} tokens", "首响 {time}": "TTFB {time}", "首响:上游首帧到达的耗时": "TTFB: time to first byte from the upstream", "首响:上游首帧到达的耗时(请求仍在转发中)": "TTFB: time to first byte from the upstream (request is still being forwarded)", "首帧已到,上游内容正在下发": "First byte received; upstream content is streaming in", "(请求仍在转发中)": "(request is still being forwarded)", "(账号:{account})": "(Account: {account})", ",{n}毫秒后重试": ", retry in {n}ms", ",{n}秒后重试": ", retry in {n}s", "{name}的列设置": "{name} column settings", "「{label}」列的对齐": "\"{label}\" column alignment", "中": "Center", "共 0 条": "0 total", "共 {total} 条 · 当前第 {start}–{end} 条": "{total} total · showing {start}–{end}", "共 {total} 条(全部显示)": "{total} total (showing all)", "列": "Column", "列设置": "Column settings", "右": "Right", "对齐": "Alignment", "左": "Left", "当前只有一页": "Only one page", "拖动 ⋮⋮ 调整顺序": "Drag ⋮⋮ to reorder", "按住拖动调整列顺序": "Press and drag to reorder columns", "显示「{label}」列": "Show the \"{label}\" column", "条": "rows", "每页": "Per page", "每页条数": "Rows per page", "调整「{name}」的列:显示 / 隐藏、顺序、对齐": "Adjust \"{name}\" columns: show / hide, order, alignment", "跳至": "Go to", "跳转到指定页": "Go to a specific page", "跳转到第 1–{pageCount} 页": "Go to page 1–{pageCount}", "这一列已隐藏": "This column is hidden", "这一列正在显示": "This column is visible", "页": "page", "PID:{pid}": "PID: {pid}", "{label} · {port}": "{label} · {port}", "。已经把这个地址填进其它工具(Claude Code、Cherry Studio 等)的,需要一并改成新地址,否则那些工具会连不上。": ". If you have already put this address into other tools (Claude Code, Cherry Studio, etc.), update it there as well, or those tools will not be able to connect.", "与当前端口相同,无需重启": "Same as the current port; no restart needed", "例如 3066": "e.g. 3066", "即将结束以下进程:": "About to end the following process:", "已结束进程 {name}(PID {pid}),端口已释放": "Ended process {name} (PID {pid}); the port is now free", "当前状态": "Current status", "当前端口 {port},网关运行正常。": "Current port: {port}. The Gateway is running normally.", "换端口后要改的地方": "What to update after changing the port", "新端口": "New port", "更换端口": "Change port", "更换网关端口": "Change Gateway port", "本地网关正在监听 {url},可直接调用 OpenAI 兼容接口": "The local Gateway is listening on {url}; the OpenAI-compatible API can be called directly", "校验中…": "Validating…", "正在检查… · {port}": "Checking… · {port}", "正在确认网关是否已就绪": "Checking whether the Gateway is ready", "正在重启…": "Restarting…", "端口 {port} 上没有查到监听进程,请改用「更换端口」": "No process is listening on port {port}; use \"Change port\" instead", "端口号": "Port number", "端口已改为 {port},正在重启…": "Port changed to {port}; restarting…", "端口已释放。现在重启程序让网关用这个端口启动?": "The port is now free. Restart the app so the Gateway starts on this port?", "端口需在 1024-65535 之间": "Port must be between 1024 and 65535", "端口需在 1024-65535 之间。1023 及以下是系统保留范围,普通程序无法监听。": "Port must be between 1024 and 65535. Ports 1023 and below are reserved by the system and cannot be listened on by regular programs.", "结束中…": "Ending…", "结束占用端口的进程": "End the process holding the port", "结束占用进程": "End process", "结束失败:{reason}": "Failed to end the process: {reason}", "结束它会强制退出该程序未保存的数据。确认继续?": "Ending it will force-quit that program and unsaved data will be lost. Continue?", "结束进程": "End process", "网关启动中… · {port}": "Gateway starting… · {port}", "网关启动失败": "Gateway failed to start", "网关地址会变成 ": "The Gateway address will become ", "网关运行中 · {port}": "Gateway running · {port}", "该端口不可用": "This port is unavailable", "路径:{path}": "Path: {path}", "进程名:{name}": "Process name: {name}", "进程已结束,但端口仍被占用,建议改用「更换端口」": "The process ended, but the port is still in use; try \"Change port\" instead", "重启": "Restart", "重启中…": "Restarting…", "重启失败:{reason}": "Restart failed: {reason}", "重启程序": "Restart app", "(未知)": "(unknown)" }); +window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { "无可用账号:{reason}": "No accounts available: {reason}", "AI 助手": "AI Assistant", "API Key 用量详情": "API key usage details", "API Key 统计": "API key statistics", "API Key(可选)": "API Key (optional)", "API 凭证": "API credentials", "API 方法提交给插件的账号规范化入口;不会用该密钥发起 OAuth 登录。": "API methods submit to the plugin's account normalization entry point; the key is not used to start OAuth sign-in.", "AWS Bedrock SSO": "AWS Bedrock SSO", "Agent2API · 多提供商本地网关": "Agent2API · Multi-provider local gateway", "Agent2API 社区": "Agent2API community", "Codar(科搭)": "Codar", "Cursor": "Cursor", "Devin": "Devin", "Factory": "Factory", "GitHub Copilot": "GitHub Copilot", "Grok": "Grok", "JSON 格式不正确": "Invalid JSON format", "JoyCode(京东)": "JoyCode (JD)", "Kimi Work": "Kimi Work", "Linux (amd64)": "Linux (amd64)", "Linux (arm64)": "Linux (arm64)", "Magpie 官方": "Magpie official", "Magpie 官方与社区插件,共用一个按需下载的运行时": "Official and community Magpie plugins share one runtime downloaded on demand", "Magpie 官方名单": "Magpie official catalog", "Magpie 官方和社区插件均通过兼容方式接入 Agent2API,不保证 100% 可用。": "Official and community Magpie plugins are integrated with Agent2API for compatibility only; 100% availability is not guaranteed.", "Magpie 推荐": "Magpie recommended", "Magpie 插件": "Magpie plugins", "Magpie 插件安装须知": "Magpie plugin installation notice", "Magpie 社区": "Magpie community", "Magpie 社区分发源": "Magpie community distribution", "Magpie 脚本插件": "Magpie script plugins", "MiniMax Code 国内/国际": "MiniMax Code China / Global", "MiniMax Code 的设备码登录、对话、模型目录、余额与每日签到;国内版与国际版可分别启停。": "Device-code sign-in, chat, model catalog, balance and daily check-in for MiniMax Code. Enable the China and Global providers separately.", "Nous Portal": "Nous Portal", "OAuth 登录": "OAuth sign-in", "Open Design": "Open Design", "Providers Hub": "Providers Hub", "QQ 群号": "QQ group number", "Star 数暂未读取": "Star count is not available yet", "Star 更新于 {time}": "Stars updated {time}", "Token 用量": "Token usage", "WPS 灵犀": "WPS Lingxi", "Windows (ARM64)": "Windows (ARM64)", "Windows (x64)": "Windows (x64)", "Zed": "Zed", "macOS (Apple Silicon)": "macOS (Apple Silicon)", "macOS (Intel)": "macOS (Intel)", "npm 包名": "npm package name", "npm 包名、GitHub 地址或 magpie:包名": "npm package, GitHub URL or magpie:package", "npm 包名或 GitHub 地址": "npm package name or GitHub URL", "npm 未发布的包会尝试 Magpie 社区分发源;不会绕过完整性校验或执行安装脚本。": "Packages missing from npm are looked up in Magpie's community distribution. Integrity checks are never skipped, and install scripts are not run.", "{count} 个 Star": "{count} stars", "{count} 个插件": "{count} plugins", "{count} 家": "{count} providers", "{count} 家提供商": "{count} providers", "{count} 家提供商 · 安装于 {time}": "{count} providers · Installed {time}", "{key} 需要 true / false / null": "{key} must be true / false / null", "{key} 需要数字": "{key} must be a number", "{label}(API)": "{label} (API)", "{label}(OAuth)": "{label} (OAuth)", "{n} 个启用": "{n} enabled", "{n} 个已限流": "{n} rate-limited", "{n} 个请求正在转发中,点开「请求日志」查看": "{n} requests in flight — open \"Request logs\" to view", "{n} 个账号可用": "{n} accounts available", "{n} 个账号启用": "{n} accounts enabled", "{n} 条失败请求未读,点开「请求日志」查看": "{n} unread failed requests — open \"Request logs\" to view", "{n} 条错误日志未读,点开「日志」查看": "{n} unread error logs — open \"Logs\" to view", "{n} 项 · {shown} 显示": "{n} items · {shown} shown", "{size} · 下载后可直接安装,无需跳转浏览器": "{size} · Downloads and installs in place — no browser redirect", "{size} · 点击下载后可直接安装,无需跳转浏览器": "{size} · Tap download to install right away — no browser redirect", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "{total} menus · {shown} shown · {hidden} hidden · {groups} groups", "· 不会改动任何配置": "· makes no config changes", "· 每次执行前列改动清单,等你确认": "· lists the changes before each run and waits for your confirmation", "—": "—", "“本机”指运行网关的机器,不是打开面板的电脑。远程浏览器也可以发起,但网关本机可能需要安装客户端并已登录;是否可用由网关返回结果决定。": "“Local” means the machine running the gateway, not the computer displaying the panel. A remote browser can also start this, but the gateway machine may need the client installed and signed in. Availability depends on the gateway's response.", "✅ GitHub 令牌已保存(加密存储,界面不再显示)": "✅ GitHub token saved (stored encrypted, never shown again)", "✅ Token 已刷新": "✅ Token refreshed", "✅ 已将账号优先级调整到全局第一位": "✅ Account moved to first in the global queue", "✅ 已清除界面保存的 GitHub 令牌(环境变量若配置过则继续生效)": "✅ Removed the saved GitHub token (an environment variable, if set, still applies)", "「{name}」匹配到多个账号:{list},请用完整账号名重试": "\"{name}\" matches multiple accounts: {list}. Retry with the full account name.", "「工具全不勾选 → 不注入系统提示词」:想当纯聊天用时,不必再去关上面的开关。": "\"No tools selected → no system prompt\": if you want plain chat, you don't need to turn the switch above off.", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "\"Settings\" is pinned, so its group cannot be hidden as a whole; you can still hide its other menus individually", "上一页": "Previous", "上次加载记录(非本次故障)": "Previous load record (not a current failure)", "下一页": "Next", "下拉刷新": "Pull to refresh", "下次自动重试:{time}": "Next automatic retry: {time}", "下载与当前平台对应的插件包(zip),点右上角「安装插件包」选中它即可。": "Download the plugin pack (zip) for this platform, then click \"Install plugin pack\" at the top right and select it.", "不填写(可选)": "Leave blank (optional)", "与电脑端一致:每 {n} 分钟": "Matches the desktop app: every {n} min", "为 Agent2API 扩展网页提供商,支持智谱清言的模型调用、访客与登录账号、凭证续期、模型目录、积分查询、签到和任务领取。": "Adds web providers to Agent2API, with Zhipu Qingyan model requests, guest and signed-in accounts, credential renewal, model catalogs, points queries, check-in and task rewards.", "为网关扩展多家 AI 提供商,支持账号登录与导入、模型调用、凭证续期、模型目录、余额查询和签到。具体能力以各提供商的支持情况为准。": "Adds AI providers to the gateway, with account sign-in and import, model requests, credential renewal, model catalogs, balance queries and check-in. Available capabilities vary by provider.", "主导航": "Main navigation", "也可输入 file: 加网关电脑上的插件目录或 tgz 文件绝对路径;本地插件会复制安装,不修改源目录。": "You can also enter file: followed by the absolute path to a plugin directory or tgz file on the gateway computer. Local plugins are copied for installation without changing the source directory.", "书生·端砚": "Intern InkStone", "了解并安装": "I understand, install", "仅在该 API 方法需要额外密钥时填写": "Fill in only if this API method requires an additional key.", "仅安装你信任的 npm 包、GitHub 仓库或 Magpie 社区分发包;完整性校验不等于安全审计。": "Only install npm packages, GitHub repositories or Magpie community packages you trust. Integrity verification is not a security audit.", "仅安装你信任的 npm 包或 GitHub 仓库;版本与完整性检查不能保证脚本安全。": "Only install npm packages or GitHub repositories you trust. Version and integrity checks do not guarantee script safety.", "仅安装你信任的 npm 包;下载校验只能确认文件完整,不能保证脚本安全。": "Only install npm packages you trust. Download verification confirms file integrity, not script safety.", "仅影响插件更新通道,与主程序独立。开启后可安装 beta 版;已使用 beta 时保持该通道,关闭后只看正式版且不会降级。": "Only affects plugin updates, independently of the application. Enable to receive beta versions. Plugins already on beta stay on that channel; disabling selects stable releases without downgrading.", "仅自动更新已安装、已启用且通过可信签名校验的社区插件。新插件需手动安装,卸载后不会自动重新安装;未签名插件需手动更新。": "Only automatically updates installed, enabled community plugins with verified trusted signatures. New plugins require manual installation and are not automatically reinstalled after removal. Unsigned plugins require manual updates.", "从 GitHub 官方源下载固定提交。仓库根目录须有可直接运行的插件入口;不会执行构建脚本或安装依赖。": "Downloads a fixed commit directly from GitHub. The repository root must contain a runnable plugin entry; build scripts and dependency installation are not run.", "从 GitHub 官方源下载固定提交。仓库须包含可运行的提供商入口;安装运行依赖,但不执行构建和安装脚本。": "Downloads a pinned commit directly from GitHub. The repository must include a runnable provider entry point. Runtime dependencies are installed, but build and installation scripts are not run.", "从 Magpie 社区官方分发目录下载,核验 SHA-512;更新与重装继续使用此来源。": "Downloads from Magpie's official community distribution with SHA-512 verification. Updates and reinstalls keep this source.", "从 npm / GitHub / Magpie 安装": "Install from npm / GitHub / Magpie", "从 npm / GitHub 安装": "Install from npm / GitHub", "从 npm 安装": "Install from npm", "从文件安装…": "Install from file…", "从网关本机客户端导入": "Import from a client on the gateway machine", "仓库没有已提交的可加载入口,请等待作者发布构建产物": "This repository has no committed loadable entry point. Wait for the author to publish a build.", "代价": "Cost", "令牌已生效,但写入磁盘失败(重启后会丢失)": "The token is active but could not be written to disk (it will be lost on restart)", "以下设置属于所连接网关,不是手机本地设置。": "These settings belong to the connected gateway, not this phone.", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "This restores the default groups, order and visibility. Groups you created are removed (their menus are kept).", "会话内": "In-session", "会话已过期。重新登录后会自动回到手机端。": "Your session expired. Sign in again and you will return to the mobile app automatically.", "会话粘性": "Session stickiness", "作为 system 消息注入给助手": "Injected to the assistant as a system message", "作者尚未提供插件介绍。": "The author has not provided a plugin description.", "使用 Cloudflare 账号 ID 与 API Token,接入 Workers AI 对话和在线模型目录。": "Connect Workers AI chat and its online model catalog using a Cloudflare Account ID and API Token.", "使用 Warp 终端的登录态,接入账号可用模型并查询 AI 请求额度。": "Use your Warp terminal sign-in to access the account's available models and view its AI request allowance.", "使用你在网关电脑上安装并登录的 agy CLI,通过 ACP 协议接入模型、工具调用和额度查询;与依赖 Antigravity IDE 的 Antigravity ACP 插件不同。": "Uses the agy CLI installed and signed in on your gateway computer for models, tool calls and quota queries over ACP. This is different from the Antigravity ACP plugin that relies on the Antigravity IDE.", "使用网关本机 gcloud / ADC 登录,接入 Vertex AI 模型并查询 Google Cloud 促销赠金。": "Use gcloud / ADC credentials on the gateway machine to access Vertex AI models and view Google Cloud promotional credits.", "例如:家里、公司": "e.g. Home, Office", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "The sidebar layout module did not load (ui/sidebar-layout.js must be included before app.js).", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "No menus are shown in the sidebar. Turn on the ones you need under Settings → Display → Sidebar menus.", "侧边栏菜单": "Sidebar menus", "保存失败:{error}": "Save failed: {error}", "保存对话模型失败:{message}": "Failed to save the chat model: {message}", "保存并继续": "Save and continue", "修改高级参数会等待在途任务结束后重新加载插件;专属开关实时生效。": "Changing advanced options reloads the plugin after active tasks finish. Provider switches take effect immediately.", "候选队列": "Candidate queue", "停止": "Stop", "停用": "Disabled", "允许的操作": "Allowed operations", "允许签到及附带任务": "Allow check-in and bundled tasks", "先添加一台网关": "Add a gateway first", "先选择插件声明的账号登录方式,再填写必需字段。OAuth 由共享登录桥负责等待、取消和错误;API 凭证通过账号规范化入口添加。": "Select an account sign-in method declared by the plugin, then fill in its required fields. The shared sign-in bridge handles OAuth waiting, cancellation and errors; API credentials are added through the account normalization entry point.", "免鉴权调用": "Unauthenticated calls", "全不选": "Deselect all", "全部 API Key": "All API keys", "全部客户端": "All clients", "全部更新": "Update all", "共 {n} 条记录": "{n} records", "共享登录桥不可用,请重新打开面板": "The shared sign-in bridge is unavailable. Reopen the panel.", "共享运行环境尚未就绪,本插件没有明确的加载失败结果。": "The shared runtime is not ready. No load failure has been confirmed for this plugin.", "关": "Off", "关闭菜单": "Close menu", "兼容 OpenCode v1 / Magpie 提供商插件及其运行依赖;不加载界面、独立工具或 Pi 扩展。": "Supports OpenCode v1 / Magpie provider plugins and their runtime dependencies. UI plugins, standalone tools and Pi extensions are not loaded.", "准备运行环境": "Preparing runtime", "凭证 JSON 含有不允许的字段:{key}": "The credentials JSON contains a disallowed field: {key}", "凭证 JSON 嵌套过深,请只粘贴该插件要求的凭证对象": "The credentials JSON is nested too deeply. Paste only the credentials object required by this plugin.", "凭证 JSON 必须是非空对象,不能是数组或字符串": "The credentials JSON must be a non-empty object, not an array or a string.", "凭证 JSON 格式不正确,请检查括号和引号": "The credentials JSON is not valid. Check the brackets and quotation marks.", "凭证 JSON(必填)": "Credentials JSON (required)", "凭证只在提交时发送到网关;备注名和代理请使用下面的字段,解析错误不会回显凭证内容。": "Credentials are sent to the gateway only on submission. Use the fields below for the label and proxy; parse errors will not display credential contents.", "分布来自保留的日报来源明细;无法恢复的历史不反推客户端或模型。": "Breakdowns come from retained daily source aggregates; clients or models are not inferred for unrecoverable history.", "分支、标签或提交(留空使用默认分支)": "Branch, tag or commit (leave blank for the default branch)", "分组名": "Group name", "分组名,例如「常用」": "Group name, e.g. \"Favorites\"", "切换菜单": "Toggle menu", "列表 = 模型管理页里所有已启用的模型。助手走本地网关发起对话,消耗所选账号的额度。": "The list is every enabled model from the Model management page. The assistant chats through the local gateway and spends the selected account's quota.", "创建并进入": "Create & enter", "创建管理员账号": "Create admin account", "初始化已完成,正在等待校验和登记。": "Initialization is complete. Waiting for validation and registration.", "初始化超时": "Initialization timed out", "删除 {n} 条": "Delete {n} entries", "删除分组": "Delete group", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "Delete group \"{name}\"? Its {n} menus will move to \"{target}\" — nothing is lost.", "删除空分组「{name}」?": "Delete the empty group \"{name}\"?", "删除这个分组(组内菜单移到第一组)": "Delete this group (its menus move to the first group)", "刷新清单": "Refresh catalog", "刷新状态": "Refresh status", "加入插件 beta 版": "Join plugin beta releases", "加载中": "Loading", "加载助手设置失败:{message}": "Failed to load assistant settings: {message}", "加载失败": "Load failed", "加载失败:{error}": "Load failed: {error}", "加载更多": "Load more", "加载更早的记录": "Load older records", "加载状态": "Load status", "加载诊断": "Load diagnostics", "助手": "Assistant", "助手自己用哪个模型生成回复": "Which model the assistant uses to generate replies", "助手设置读取失败,工具可能已过时。": "Failed to read assistant settings; the tool list may be out of date.", "助手走本地网关,消耗所选账号的额度": "The assistant goes through the local gateway and spends the selected account's quota", "勾选即注入该工具;不勾选 = 助手看不到它": "Checked tools are injected; unchecked ones are invisible to the assistant", "十几 MB": "about a dozen MB", "升级会重新下载并校验插件包(约 {size}),装完立即生效,账号数据不受影响。": "Upgrading downloads the plugin pack again and verifies it (about {size}). It takes effect immediately and your account data is untouched.", "协议版本": "Protocol version", "单签": "Single", "占比": "Share", "即将就绪": "Almost ready", "卸载": "Uninstall", "卸载插件": "Uninstall plugin", "卸载插件包": "Uninstall plugin pack", "历史数据整理中": "Organizing history data", "历史明细不完整,输入、输出与缓存读数无法恢复": "Historical details are incomplete; input, output and cache readings cannot be recovered.", "历史未记录 Key": "Key not recorded in history", "原生插件包,来自项目插件仓库": "Native packages from the project plugin repository", "原生辅助授权": "Native helper permissions", "原生辅助授权已失效或暂不可用,请重新选择并确认。": "The native helper permission is no longer valid or is temporarily unavailable. Select a helper and confirm again.", "原生辅助程序不受 Wasm 沙箱限制,只授权你信任的已安装插件。辅助程序更新后需要重新确认。": "Native helpers are outside the Wasm sandbox. Only authorize installed plugins you trust. Confirm again after a helper is updated.", "去下载": "Get it", "去登录": "Sign in", "参数不完整(需要 account / enabled)": "Incomplete parameters (account / enabled required)", "参数不完整(需要 account / position)": "Incomplete parameters (account / position required)", "参数不完整(需要 provider / id / alias)": "Incomplete parameters (provider / id / alias required)", "参数不完整(需要 provider / id / capabilities)": "Incomplete parameters (provider / id / capabilities required)", "参数不完整(需要 provider / id / enabled)": "Incomplete parameters (provider / id / enabled required)", "参数不完整(需要 provider / position)": "Incomplete parameters (provider / position required)", "发现新版本 {latest}(当前 {current}),点开「设置 - 软件更新」可查看更新日志并下载": "New version {latest} available (current: {current}) — open \"Settings - Software update\" to see the changelog and download", "发现新版本 {version}": "New version {version} available", "发送": "Send", "取消日期筛选": "Clear date filter", "受影响的来源将在 {time} 后自动重试": "Affected sources will retry automatically after {time}", "只改映射名,不动上游模型 ID;映射立即生效(新对话即可用)。": "Only the mapping name changes; the upstream model ID stays. Mappings take effect immediately (usable in a new chat).", "只注入工具定义": "Only tool definitions are injected", "只统计已结束的生产请求;失败请求仍计入请求数,Token 用量沿用现有成功请求口径。": "Only completed production requests are counted. Failed requests still count as requests; token usage follows the existing successful-request policy.", "只读": "Read-only", "只读工具": "Read-only tools", "可以点击「刷新」读取插件仓库,或从本地 zip 安装插件。": "Click Refresh to load the plugin catalog, or install a local zip.", "可填 {min}–{max} 秒,关闭后保留间隔": "Enter {min}–{max} seconds; the interval is kept when turned off", "可更新": "Updates available", "可更新 v{version}": "v{version} available", "可更新到 v{version}": "Update available: v{version}", "可用": "usable", "可选,留空使用账号昵称": "Optional; leave blank to use the account nickname.", "各家提供商的转发与账号实现都在插件包里,不随本软件发布。装好插件后,模型转发、添加账号、签到与余额查询才会生效。": "Forwarding and account handling for each provider live in plugin packs that ship separately from this app. Model forwarding, adding accounts, check-in and balance queries only work once the pack is installed.", "后台只读取状态,不会自动弹出验证码;验证结果一次性使用,短时间内过期。": "The background only reads status and never opens verification automatically. Each token is single-use and expires shortly.", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "Contains the pinned \"Settings\" menu, so the group cannot be hidden as a whole (you can still hide its other menus individually)", "启动较慢,仍在加载;尚未收到失败结果。": "Startup is taking longer, but loading is still in progress. No failure has been reported.", "四种组合的实际效果": "What each combination actually does", "回复由 {model} 生成 · 走本地网关": "Reply generated by {model} · via the local gateway", "固定": "Pinned", "在 GitHub 上创建令牌(无需勾选任何权限)": "Create a token on GitHub (no scopes needed)", "填写账号登录所需信息并发起授权;等待、取消与失败原因由共享登录桥处理,设备码和操作指引会显示在上方。": "Enter the information required for account sign-in and start authorization. The shared sign-in bridge handles waiting, cancellation and failure details; device codes and instructions appear above.", "备注名(可选)": "Label (optional)", "复制失败,请手动选择复制": "Copy failed, please select and copy manually", "复制订阅链接": "Copy subscription link", "失败 · {status}": "Failed · {status}", "失败退避": "Failure backoff", "奖励 {bonus}": "Bonus {bonus}", "套餐 {plan}": "Plan {plan}", "套餐池人机验证": "Start Plan human verification", "套餐池请求需要验证,请主动开始验证后重试请求": "A Start Plan request needs verification. Start verification manually, then retry the request.", "安装": "Install", "安装 {name}": "Install {name}", "安装与更新插件时访问 GitHub 用。与「设置 → 更新 → 更新设置」里的同一项互通,填一次即可。不填也能用,只是匿名请求限额较低(60 次/小时)。": "Used when installing and updating plugins from GitHub. The same value as \"Settings → Update → Update settings\", so fill it once. Optional — without it the anonymous request limit is lower (60/hour).", "安装于 {time}": "Installed {time}", "安装包已就绪,点「安装」即可完成更新": "Package ready — tap \"Install\" to finish updating", "安装插件包": "Install plugin pack", "安装时间": "Installed at", "安装脚本插件": "Install script plugin", "完成时间:{time}": "Finished: {time}", "官方": "Official", "官方与推荐来自 Magpie 官方名单;第三方来自 GitHub 的 magpie-plugin 标签,不代表官方推荐。": "Official and recommended plugins come from Magpie's official catalog. Third-party plugins are discovered through GitHub's magpie-plugin topic and are not officially recommended.", "官方签名:包内容与发布者签的完全一致,未被改过": "Official signature: the pack content matches what the publisher signed, byte for byte", "定时": "Scheduled", "定时任务": "Scheduled tasks", "实际注入": "Actually injected", "客户端分布": "Client breakdown", "客户端统计": "Client statistics", "宿主错误": "Host error", "对话": "Chats", "对话模型": "Chat model", "对话模型已切换": "Chat model switched", "将修改 {model} 的 {n} 项能力:": "About to change {n} capabilities of {model}:", "将修改 {n} 个模型的启停状态:": "About to change the enabled state of {n} models:", "将修改 {n} 个账号的启用状态(其中禁用 {k} 个):": "About to change the enabled state of {n} accounts (disabling {k}):", "将对 {model} 发起一次真实请求:": "About to send one real request to {model}:", "将执行 {label}。": "About to run {label}.", "将把「{provider}」整组移到第 {position} 顺位:": "About to move the whole \"{provider}\" group to position {position}:", "将把账号「{account}」移到第 {position} 顺位:": "About to move account \"{account}\" to position {position}:", "将改动 {n} 条映射({parts}):": "About to change {n} mappings ({parts}):", "小米 MiMo": "Xiaomi MiMo", "尚未取得插件清单": "Plugin catalog not loaded yet", "尚未检查更新": "Not checked yet", "尚未登录": "Not signed in yet", "已下载": "Downloaded", "已下载,待安装": "Downloaded, ready to install", "已修改 {n} 个模型": "Changed {n} models", "已修改 {n} 个账号": "Changed {n} accounts", "已修改 {n} 项能力": "Changed {n} capabilities", "已停止这次回答。": "This reply was stopped.", "已全部取消勾选": "All tools deselected", "已关闭自动检查": "Automatic checks off", "已删除分组「{name}」": "Deleted group \"{name}\"", "已加载": "Loaded", "已勾选 {n} / {total}": "{n} / {total} selected", "已勾选「{label}」": "\"{label}\" selected", "已勾选工具": "Tools selected", "已取消「{label}」": "\"{label}\" deselected", "已启动安装器": "Installer launched", "已填写(粘贴新令牌可覆盖)": "Filled in (paste a new token to replace it)", "已复制:{text}": "Copied: {text}", "已开启自动检查": "Automatic checks on", "已恢复推荐勾选": "Recommended selection restored", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "Restored the default groups: Overview / Forwarding / Diagnostics / System", "已改动 {n} 条映射": "Changed {n} mappings", "已新建分组「{name}」,点组头的 + 把菜单移进来": "Created group \"{name}\" — use + on its header to move menus in", "已是最新版本": "You are on the latest version", "已显示 {shown} / {total} 个提供商插件": "Showing {shown} of {total} provider plugins", "已更新 {count} 个插件": "Updated {count} plugins", "已更新 {done} 个插件,{failed} 个失败:{error}": "Updated {done} plugins, {failed} failed: {error}", "已注入 {n} / {total} 个工具 · 系统提示词:{state}": "{n} / {total} tools injected · System prompt: {state}", "已添加的服务器": "Added servers", "已由其他插件接管,请到对应插件中管理。": "This provider is managed by another plugin. Manage it in that plugin's settings.", "已登录": "Signed in", "已离线 · 显示的是缓存内容": "Offline — showing cached content", "已移到第 {n} 顺位": "Moved to position {n}", "已签名": "Signed", "开": "On", "开关和选项即时保存;输入项请点击对应的「保存」按钮。": "Switches and options save immediately. For text and number fields, click the corresponding Save button.", "开始时间:{time}": "Started: {time}", "开始验证": "Start verification", "当前": "Current", "当前一个工具都没勾选,助手只能纯聊天。去「设置 → AI 助手 → 工具」里勾上需要的工具。": "No tools are selected, so the assistant can only chat. Enable the tools you need under Settings → AI Assistant → Tools.", "当前兼容无运行时 npm 依赖的提供商插件;不加载 Magpie 界面、Matrix 工具或 Pi 扩展。": "Currently supports provider plugins without runtime npm dependencies. Magpie pages, Matrix tools and Pi extensions are not loaded.", "当前平台": "Current platform", "当前平台暂无包": "No package for this platform", "当前插件未申请原生辅助能力": "No installed plugin has requested native helpers", "当前暂不可安装": "Installation is currently unavailable", "当前模型请求免人机验证": "Model requests currently require no human verification.", "当前版本 {current},最低可用版本 {minimum}。": "Current version: {current}. Minimum supported version: {minimum}.", "当前版本 {version}": "Current version {version}", "当前网关要求插件版本不低于 v{version},补齐前暂不加载。": "This gateway requires plugin v{version} or later. The plugin will not load until updated.", "当前:已关闭(助手不收到任何系统提示词,工具定义照发)": "Current: off (the assistant receives no system prompt; tool definitions are still sent)", "当前:已开启 · 使用内置默认提示词(还没自定义)": "Current: on · using the built-in default prompt (not customized yet)", "当前:已开启 · 自定义内容 {n} 字": "Current: on · custom content, {n} characters", "影响转发": "Affects routing", "待就绪": "Not ready yet", "待确认": "Pending confirmation", "总剩余 {total}": "Total left {total}", "恢复上游原值": "Restore upstream values", "恢复推荐": "Restore recommended", "恢复默认侧边栏": "Restore default sidebar", "成功 / 失败": "Success / failure", "成功领取": "Claimed", "我会在动手前把改动列给你确认。": "I'll list the changes for you to confirm before making them.", "我信任所选辅助程序并允许它执行声明的本机操作": "I trust the selected helper and allow its declared local operations", "我信任此插件来源,并允许它在网关电脑上运行。": "I trust this plugin source and allow it to run on the gateway computer.", "所有菜单都已在这一组": "Every menu is already in this group", "手动凭证 JSON": "Manual credentials JSON", "手动凭证 JSON(兼容入口)": "Manual credentials JSON (compatibility entry)", "执行": "Run", "执行时刻": "Run times", "把菜单移入 {name}": "Move a menu into {name}", "把菜单移入「{name}」": "Move a menu into \"{name}\"", "报表": "Reports", "拖动分组 {name}": "Drag group {name}", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "Drag the ⠿ handle to reorder (menus can move across groups); use the switches to show or hide; click a group name to rename it; the + on a group header moves another menu into it; the eye button hides a whole group. Changes apply instantly and are remembered — the sidebar on the left is the result. Keyboard: focus a handle and press Alt+↑ / ↓.", "拖动菜单 {name}": "Drag menu {name}", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "Drag to reorder groups (Alt+↑ / ↓ also works)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "Drag to reorder, across groups too (Alt+↑ / ↓ also works)", "按 API Key 筛选": "Filter by API key", "按 Token": "By tokens", "按天请求趋势": "Daily request trend", "按客户端筛选": "Filter by client", "按访问网关的 API Key 统计生产请求,不包含助手对话和模型测试。停用、删除 Key 不会删除历史用量;密钥值不会进入报表。历史没有记录身份的请求单列,不能追溯到某把 Key。": "Production requests grouped by the gateway API key, excluding assistant chats and model tests. Disabling or deleting a key preserves its historical usage. Reports never include the secret value. Requests without a recorded identity are listed separately and cannot be attributed to a key.", "按请求 User-Agent 识别的客户端类型统计,不代表设备或用户数。“其它”表示有 User-Agent 但未匹配已知类型;“未记录客户端”表示旧数据或请求未带 User-Agent。": "Grouped by client type identified from the request User-Agent, not by devices or users. Other means a User-Agent was present but no known type matched; Unrecorded client means legacy data or no User-Agent.", "按请求数": "By requests", "按间隔检查插件版本,在对应卡片显示更新;关闭后仍可手动检查。自动更新或自动下载开启时也使用此间隔。": "Checks plugin versions at this interval and shows updates on their cards. Manual checks remain available when disabled. Automatic updates and downloads also use this interval.", "按需下载": "Download on demand", "按需安装插件,为 AI 路由网关扩展提供商能力。插件独立于主程序更新,下载完成后自动校验并安装。": "Install optional plugins to extend your AI routing gateway. Plugins update independently of the application and are verified and installed automatically after download.", "换一组筛选条件,或把来源和状态都切回「全部」。": "Try different filters, or set both Source and Status back to All.", "授权": "Authorize", "排序已保存,但列表刷新失败:{message}": "Order saved, but the list could not refresh: {message}", "排序未保存:{message}": "Order not saved: {message}", "排序设置迁移失败:{message}": "Could not migrate sorting settings: {message}", "排第 1 的接走所有请求,直到它不能答(限流 / 故障 / 额度尽)才轮到下一位 —— 就是「从上往下」的现状行为。": "Position 1 takes every request until it can't answer (rate-limited / failing / out of quota) before the next one steps in — the same top-down behavior as today.", "接入 Agnes AI 国际版:浏览器登录、在线模型目录、套餐用量与美元余额;与 Agnes Code 桌面版独立。": "Connect Agnes AI international with browser sign-in, an online model catalog, plan usage and a USD balance. Separate from the Agnes Code desktop product.", "接入 Agnes Code:本机登录态或 accessToken、模型目录、积分与登录奖励观测。": "Connect Agnes Code using a local session or accessToken, with model catalogs, points and observed sign-in rewards.", "接入 Codar(科搭):本机凭据、模型目录、积分与滚动窗口签到。": "Connect Codar with local credentials, model catalogs, points and rolling-window check-in.", "接入 DeepAI Code:网页登录、本机凭据、模型目录、额度查询与签到。": "Connect DeepAI Code with web sign-in, local credentials, model catalogs, quota queries and check-in.", "接入 JoyCode(京东):网页登录、企业租户、模型目录与额度明细。": "Connect JoyCode (JD) with web sign-in, enterprise tenants, model catalogs and quota details.", "接入 WPS 灵犀:网页登录、客户端导入、Cookie、模型目录与智点;签到及附带任务默认允许。": "Connect WPS Lingxi with web sign-in, client import, cookies, model catalogs and credits. Check-in and bundled tasks are allowed by default.", "接入中国移动云 MClaw:浏览器登录、在线模型目录、aitokens 额度与凭证续期。": "Connect China Mobile Cloud MClaw with browser sign-in, an online model catalog, aitokens allowance and credential renewal.", "接入书生·端砚墨点计划:浏览器登录、API Key、模型目录与墨点额度窗口。": "Connect the Intern InkStone Token Plan with browser sign-in, an API key, a model catalog and ink-credit quota windows.", "接口不兼容": "Incompatible interface", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "Choose which menus the sidebar shows, in what order, and how they are grouped. Hiding only affects navigation — it does not revoke access, and hidden pages can still be opened by URL.", "提供商启停": "Provider switches", "提供商增强": "Provider Enhancement", "提供商设置": "Provider settings", "提示词": "Prompt", "提示词开关": "Prompt switch", "插件": "Plugins", "插件与当前网关的公共接口不兼容,暂未加载。": "The plugin is incompatible with the gateway's public interface and has not been loaded.", "插件仓库": "Plugin repository", "插件任务": "Plugin tasks", "插件包与主程序分开安装、分开升级。卸载插件后账号数据仍然保留,重新装回即可继续使用;仅该包提供的转发与添加账号需要插件,本体订阅不受影响。": "Plugin packs install and upgrade independently of the application. Uninstalling keeps account data; reinstall to continue. Only forwarding and adding accounts supplied by that pack require it. Native subscriptions are unaffected.", "插件包与主程序分开安装、分开升级。卸载插件后账号数据仍然保留,重新装回即可继续使用;但转发与添加账号需要插件在位。": "Plugin packs install and upgrade independently of the app. Uninstalling a pack keeps your account data - reinstall it to continue. Forwarding and adding accounts need the pack present.", "插件包大小不能超过 {n} MiB": "Plugin package size cannot exceed {n} MiB.", "插件包已卸载": "Plugin pack uninstalled", "插件包已安装": "Plugin pack installed", "插件包已安装到 v{version}": "Plugin installed: v{version}", "插件包已更新到 v{version}": "Plugin pack updated to v{version}", "插件包的可执行文件不在磁盘上(可能被手工删除或移动),请重新安装。": "The plugin pack binary is missing from disk (it may have been deleted or moved). Please reinstall it.", "插件参数必须是 JSON 对象": "Plugin options must be a JSON object", "插件发布信息读取失败,请稍后刷新": "Could not read the plugin release information. Refresh later.", "插件只声明了短信登录,但没有下发可用的动态表单;此界面不会猜测短信接口": "The plugin only declared SMS sign-in but did not provide a usable dynamic form. This interface will not guess SMS endpoints.", "插件尚未声明有效版本,暂时无法安装": "The plugin has no valid version declared and cannot be installed yet.", "插件尚未提供可下载的发布包": "The plugin does not have a downloadable release yet.", "插件已就绪,账号列表将自动同步。": "The plugin is ready. The account list will update automatically.", "插件更新未完成": "Plugin update did not complete", "插件未启用或已不再申请此权限;已有授权仍可撤销。": "The plugin is disabled or no longer requests this permission. Existing grants can still be revoked.", "插件未实现 auth.methods(501),且没有可用的旧版登录声明;仅保留需要插件确认的手动凭证 JSON 入口": "The plugin does not implement auth.methods (501) and has no usable legacy sign-in declarations. Only the manual credentials JSON entry remains, subject to validation by the plugin.", "插件未实现 auth.methods(501);以下入口仅依据旧版登录声明显示": "The plugin does not implement auth.methods (501). The entries below are shown solely based on its legacy sign-in declarations.", "插件没有声明可用的账号登录方式,请更新插件或联系插件作者": "The plugin has not declared any available account sign-in methods. Update the plugin or contact its author.", "插件清单暂未完整读取": "The plugin catalog is not fully loaded", "插件版本(留空使用 latest)": "Plugin version (leave blank for latest)", "插件状态已变更,但账号列表同步失败。请回到账号页点击「刷新」重试。": "Plugin status changed, but the account list could not be synced. Return to Accounts and click \"Refresh\" to retry.", "插件独立安装与更新。卸载后账号数据仍会保留;脚本插件共用一个按需下载的运行时。": "Plugins install and update independently. Uninstalling keeps account data; script plugins share one runtime downloaded on demand.", "插件登录指引": "Plugin sign-in instructions", "插件登录方式包含重复的输入字段": "The plugin's sign-in method contains duplicate input fields.", "插件登录选择字段包含无效或重复的选项": "The plugin's sign-in selection field contains invalid or duplicate options.", "插件登录选择字段缺少选项列表": "The plugin's sign-in selection field is missing its option list.", "插件目录": "Plugin directory", "插件设置": "Plugin settings", "插件设置已保存": "Plugin settings saved", "插件返回了无效的登录字段,请更新插件或联系作者": "The plugin returned an invalid sign-in field. Update the plugin or contact its author.", "插件返回了无效的登录方式,请更新插件或联系作者": "The plugin returned an invalid sign-in method. Update the plugin or contact its author.", "插件选项": "Plugin options", "搜索…": "Search…", "搜索插件": "Search plugins", "撤销授权": "Revoke permission", "支持自动授权、设备码、手动授权码和插件声明的凭据表单;本机读取作用于网关电脑。": "Supports automatic authorization, device codes, manual authorization codes and plugin-defined credential forms. Local imports read from the gateway machine.", "改动立即生效;禁用后指向它的请求会落到下一个候选。": "Changes take effect immediately; once disabled, requests for it fall through to the next candidate.", "改动类工具": "Write tools", "改成": "Change to", "文件缺失": "Files missing", "文档": "Docs", "新": "New", "新分组名": "New group name", "新增 {n} 条": "Add {n} entries", "新对话": "New chat", "新建分组": "New group", "无凭证": "No credentials", "无法解密": "Cannot decrypt", "无法读取插件更新进度,请刷新后查看结果。": "Could not read plugin update progress. Refresh to view the result.", "无法读取登录方式": "Unable to load sign-in methods", "日志": "Logs", "旧版本保存的正文可能已截断,无法恢复缺失内容": "The body saved by an older version may be truncated; missing content cannot be recovered", "旧版浏览器登录暂不接收备注名和登录代理,请添加后在账号设置中调整。": "Legacy browser sign-in does not currently accept a label or sign-in proxy. Adjust them in account settings after adding the account.", "旧版登录方式": "Legacy sign-in method", "映射名": "Mapping name", "显示 {name}": "Show {name}", "显示分组 {name}": "Show group {name}", "显示这一组": "Show this group", "智能": "AI", "暂不可安装": "Unavailable", "暂无可安装的插件": "No plugins available to install", "暂无可用的原生辅助程序,请先安装并启用所需插件。": "No native helper is available. Install and enable the required plugin first.", "暂时无法获取插件状态,显示上次结果;这不代表插件启动失败。": "Plugin status is temporarily unavailable. Showing the previous result; this does not mean the plugin failed to start.", "暂未发布": "Not published yet", "暂未取得明确的加载结果,不能据此判断启动失败。": "No confirmed load result is available yet. This does not indicate a startup failure.", "更多": "More", "更新": "Update", "更新到 v{version}": "Update to v{version}", "更新前无法继续调用模型;账号、配置和历史记录不会被删除。": "Model requests are unavailable until you update. Accounts, settings and history will be preserved.", "更新或启停会等待共享宿主内的请求结束;账号数据始终由网关统一保存。": "Updates and enable/disable changes wait for requests in the shared host to finish. The gateway always manages account data.", "更新/重装": "Update / reinstall", "最大化": "Maximize", "最小化": "Minimize", "最近调用": "Last call", "有": "Yes", "有 {count} 个插件可更新": "{count} plugins have updates", "有插件包的协议版本与当前网关不一致({versions}),请下载对应版本的插件包。": "Some plugin packs use a protocol version that does not match this gateway ({versions}). Please download matching packs.", "有新版本,重启后生效": "New version ready — restart to apply", "有新版本:v{current} → v{latest}": "New version available: v{current} → v{latest}", "有更新": "Update available", "服务器": "Servers", "服务器已切换,请重新加载页面": "The server has changed. Reload the page", "未加载": "Not loaded", "未同步": "Not synced", "未就绪": "Not ready", "未授权": "Not authorized", "未登录": "Not signed in", "未知工具「{name}」:它在设置里可能刚被取消勾选,或这一版助手还不认识它。": "Unknown tool \"{name}\": it may have just been deselected in settings, or this version of the assistant doesn't recognize it yet.", "未签名": "Unsigned", "未签名包不会自动覆盖;点击「补齐插件」将安装官方签名包。": "Unsigned packages are not replaced automatically. Click Update required plugin to install an officially signed package.", "未签名:可以正常使用,但无法证明这个包出自官方;升级时同样只做格式校验": "Unsigned: it works normally, but there is no proof this pack came from the official publisher; upgrades only check its format too", "未能保存自动刷新设置": "Could not save auto-refresh settings", "未能读取自动刷新设置": "Could not load auto-refresh settings", "未记录": "Unrecorded", "未记录客户端": "Unrecorded client", "未运行": "Not running", "未选择服务器": "No server selected", "本地网关监听状态": "Local gateway listening status", "本次初始化超过等待时限,已停止;可查看诊断后重试。": "This initialization exceeded its time limit and was stopped. Check diagnostics before retrying.", "本次加载未完成,请查看诊断。": "This load did not complete. Check diagnostics.", "本次用时 {n} 秒": "Elapsed: {n} s", "权限": "Permissions", "来自 Magpie 社区的插件,共用一个按需下载的运行时": "Magpie community plugins share one runtime downloaded on demand", "来自环境变量": "From env", "来自环境变量 GITHUB_TOKEN": "From the GITHUB_TOKEN environment variable", "松开刷新": "Release to refresh", "查看 GitHub 仓库:{repository}": "View GitHub repository: {repository}", "查看全部": "View all", "查看参数": "View arguments", "查看发布说明": "View release notes", "查看发布页面": "Open release page", "查看提供商插件": "View provider plugins", "查看更新日志": "View changelog", "查看结果": "View result", "查看进度": "View progress", "标题总结设置": "Title generation settings", "桌面桥不可用(本页需要在 Agent2API 客户端里打开)": "Desktop bridge unavailable (this page must be opened inside the Agent2API client)", "检查更新失败": "Failed to check for updates", "检测到更新后自动下载、校验并安装已启用的官方签名插件。": "Automatically downloads, verifies and installs updates for enabled, officially signed plugins.", "检测到更新后自动下载、校验并安装已启用的官方签名插件。未签名或第三方插件仍需手动更新。": "Automatically downloads, verifies and installs updates for enabled, officially signed plugins. Unsigned and third-party plugins still require manual updates.", "模型分布": "Model breakdown", "模型管理": "Model management", "正在下载 Bun 运行时": "Downloading the Bun runtime", "正在下载…": "Downloading…", "正在下载脚本插件": "Downloading script plugin", "正在初始化插件,尚未收到失败结果。": "Initializing the plugin. No failure has been reported.", "正在加载": "Loading", "正在加载 · {n} 家提供商的账号暂未显示,就绪后自动恢复。": "Loading · Accounts from {n} providers are temporarily hidden and will return when ready.", "正在加载新插件…": "Loading the new plugin…", "正在加载脚本插件": "Loading script plugins", "正在启动": "Starting", "正在启动插件,账号将在就绪后自动恢复。": "Starting the plugin. Accounts will return automatically when it is ready.", "正在完成人机验证…": "Completing human verification…", "正在恢复原有脚本插件": "Restoring previous script plugins", "正在恢复旧版本插件…": "Restoring the previous plugin version…", "正在更新第 {index}/{total} 个…": "Updating {index} of {total}…", "正在校验包内容…": "Verifying package…", "正在检查…": "Checking…", "正在检查或准备脚本运行环境。": "Checking or preparing the script runtime.", "正在自动补齐官方插件,不受日常更新开关和通道限制。": "The official plugin is being updated to the required version, independently of routine update settings and channels.", "正在补齐插件…": "Updating required plugin…", "正在识别二维码…": "Recognizing QR code…", "正在读取、校验并安装插件包…": "Reading, verifying and installing plugin…", "正在读取插件信息 {done}/{total}": "Reading plugin information {done}/{total}", "正在读取插件列表…": "Loading plugin catalog…", "正在读取插件清单…": "Loading plugin catalog…", "正在读取插件登录方式…": "Loading plugin sign-in methods…", "正在连接…": "Connecting…", "正在重试…": "Retrying…", "正在验证…": "Verifying…", "此 OAuth 方法未声明备注名字段,账号名由插件获取;添加后可在账号设置中修改。": "This OAuth method has no declared label field. The plugin obtains the account name; you can change it in account settings after adding the account.", "此插件不是提供商插件,当前无法安装": "This is not a provider plugin and cannot be installed here.", "此方式可能需要手动提交授权回调。完成官方登录后,按共享登录桥的提示粘贴完整回调地址;不要把回调地址当作 API Key 或 Token。": "This method may require submitting the authorization callback manually. After completing the official sign-in, paste the full callback URL as instructed by the shared sign-in bridge. Do not treat the callback URL as an API Key or Token.", "此旧版登录声明无法安全映射到动态表单,请联系插件作者": "This legacy sign-in declaration cannot be safely mapped to a dynamic form. Contact the plugin author.", "此登录方式需要由共享登录桥发起": "This sign-in method must be started through the shared sign-in bridge.", "每台服务器的登录状态各自独立保存,切换后不用重新登录。地址改掉后需要重新登录。": "Each server keeps its own sign-in, so switching back does not require signing in again. Changing a server's address requires signing in again.", "每日签到及一次性任务;可能消耗智点、发送对话并创建及解散群聊": "Daily check-in and one-time tasks; may spend credits, send chats, and create and disband group chats", "每轮": "Per turn", "没有可恢复的维度明细": "No recoverable breakdown", "没有可更新的版本": "No update available", "没有找到提供商「{provider}」的账号": "No accounts found for provider \"{provider}\"", "没有找到账号「{name}」": "No account found named \"{name}\"", "没有符合筛选条件的插件": "No plugins match these filters", "没有说明": "No description", "没有近期套餐池请求,不生成验证码令牌": "No recent Start Plan requests; no verification tokens are generated.", "没给账号名": "No account name given", "注入系统提示词": "Inject system prompt", "活动": "Campaign", "浅色": "Light", "消耗该账号额度": "Spends this account's quota", "消耗额度": "Spends quota", "深色": "Dark", "添加": "Add", "添加失败": "Failed to add", "添加服务器": "Add server", "清单更新于 {time}": "Catalog updated {time}", "清空 = 回到内置默认(与「恢复默认」等价)。": "Clearing reverts to the built-in default (same as \"Restore Defaults\").", "清除失败:{error}": "Clear failed: {error}", "点「编辑」弹窗改内容;开关关掉就整段不发。": "Click \"Edit\" to change the content in a dialog; turning the switch off sends none of it.", "点击重命名": "Click to rename", "熔断": "Circuit breaker", "熔断时长(秒)": "Breaker duration (seconds)", "版本 {version} · 从 GitHub 直接下载安装包": "Version {version} · downloads the package straight from GitHub", "版本 {version} · 从网关下载安装包": "Version {version} · downloads the package from the gateway", "版本 {version} · 更新包需从 Release 页面获取": "Version {version} · get the update from the Release page", "环境变量 Key": "Environment variable key", "用一句话让我查或改本机的模型转发配置。": "Ask me in one sentence to inspect or change this machine's model routing config.", "用量详情": "Usage details", "由其他插件接管": "Managed by another plugin", "电脑端已关闭「软件版本检查」,此处只做手动检查": "Version checks are off on the desktop app, so this page only checks manually", "登录、模型调用、模型列表、余额查询和签到等功能,可能因插件实现或上游变化而不可用。": "Login, model calls, model lists, balance queries and check-ins may become unavailable depending on how the plugin is implemented or on upstream changes.", "登录指引 / 设备码授权": "Sign-in instructions / Device-code authorization", "登录支持自动完成的 OAuth/设备码和 API Key;要求手动回调的插件暂不支持。": "Supports automatic OAuth/device-code sign-in and API keys. Plugins requiring manual callbacks are not supported yet.", "登录方式说明": "Sign-in method details", "登录桥未确认账号添加完成": "The sign-in bridge has not confirmed that the account was added.", "登录面板": "Sign in", "监听 127.0.0.1": "Listening on 127.0.0.1", "直接加载兼容的 Magpie / OpenCode v1 提供商包,多个插件共用一个 Bun 进程。": "Load compatible Magpie / OpenCode v1 provider packages directly. Multiple plugins share one Bun process.", "直接说要改什么 / 查什么…(Enter 发送,Shift+Enter 换行)": "Just say what to change or check… (Enter to send, Shift+Enter for a new line)", "确定删除账号「{name}」?{note}": "Delete account \"{name}\"? {note}", "确定卸载「{name}」吗?卸载后这个包里的提供商将无法转发,也无法添加账号。账号数据本身不会被删除,重新安装后可以继续使用。": "Uninstall \"{name}\"? Its providers will no longer forward requests or accept new accounts. Account data itself is kept and works again after reinstalling.", "确定卸载「{name}」吗?对应提供商将停止转发,账号数据仍然保留,重新安装后恢复。": "Uninstall “{name}”? Its providers will stop forwarding. Account data is retained and becomes available again after reinstalling.", "确认后立即生效": "Takes effect right after confirmation", "确认并安装": "Confirm and install", "确认授权": "Confirm authorization", "社区": "Community", "社区插件": "Community plugin", "禁用会把账号移出转发队列;若这条线路没有别的可用账号,请求会直接失败。": "Disabling removes the account from the forwarding queue; if this route has no other usable account, requests will fail outright.", "移入「{name}」": "Move into \"{name}\"", "稍后": "Later", "空分组 · 点组头的 + 把菜单移进来": "Empty group · use + on the header to move menus in", "立即刷新": "Refresh now", "立即升级": "Upgrade now", "第 {current} / {total} 页": "Page {current} of {total}", "第三方": "Third-party", "等待前面的插件完成,不代表加载失败。": "Waiting for earlier plugins to finish. This is not a load failure.", "等待加载": "Waiting to load", "等待当前任务结束,插件继续服务…": "Waiting for active tasks to finish; the plugin is still serving requests…", "等待窗口": "Waiting for window", "等待脚本插件的在途请求和登录完成": "Waiting for active script requests and sign-ins to finish", "等待账号登录完成…": "Waiting for account sign-in to complete…", "等待运行环境恢复": "Waiting for runtime recovery", "等这一轮跑完…": "Waiting for this turn to finish…", "签到中心": "Check-in center", "签到及插件附带任务;可能消耗额度,具体行为由插件决定": "Check-in and bundled plugin tasks; may spend credits. The plugin determines the actions.", "签到及附带任务默认允许,实际执行遵循签到中心的开关和计划。": "Check-ins and the side tasks that come with them are allowed by default; actual execution follows the switches and schedules in the check-in center.", "粘贴 GitHub 令牌(ghp_… / github_pat_…)": "Paste a GitHub token (ghp_… / github_pat_…)", "粘贴插件要求的 JSON 对象,不要包含 provider、name、proxy 或登录流程控制字段": "Paste the JSON object required by the plugin, without provider, name, proxy or sign-in flow control fields.", "系统提示词 + 工具定义": "System prompt + tool definitions", "系统提示词已保存": "System prompt saved", "系统提示词已关闭": "System prompt turned off", "系统提示词已开启": "System prompt turned on", "统计排序": "Statistics sort order", "继续安装": "Continue installing", "缓存读取": "Cache reads", "编辑服务器": "Edit server", "编辑系统提示词": "Edit system prompt", "网关 Key": "Gateway key", "网关没有返回有效的登录方式列表,无法确认该插件的登录能力": "The gateway did not return a valid list of sign-in methods, so this plugin's sign-in capabilities cannot be confirmed.", "网关运行中": "Gateway running", "网络代理": "Network proxy", "网页提供商": "Web Providers", "网页登录(旧版声明)": "Web sign-in (legacy declaration)", "能力位决定下游看到的声明(能不能贴图、能塞多少上下文),不改上游的真实行为。": "Capability flags decide what downstream sees declared (image input, context size) without changing upstream behavior.", "脚本不是安全沙箱,可以访问网关所在电脑的文件和网络。不要安装来历不明的插件。": "Scripts are not sandboxed and can access files and the network on the gateway computer. Do not install plugins from unknown sources.", "脚本插件共用运行环境;重试会等待当前任务结束,不会删除账号或重新安装插件。": "Script plugins share a runtime. Retrying waits for current tasks to finish and does not delete accounts or reinstall plugins.", "脚本签到可能包含额外任务并消耗额度。WPS 灵犀还可能发送对话、创建及解散群聊;授权后会接入现有自动签到计划。": "Script check-in may run extra tasks and spend credits. WPS Lingxi may also send chats, create group chats and disband them. Once authorized, it joins existing automatic check-in schedules.", "自动": "Auto", "自动刷新间隔(秒)": "Auto-refresh interval (seconds)", "自动安装": "Automatic installation", "自动更新插件": "Automatically update plugins", "自动检查插件更新": "Automatically check plugin updates", "自动维护": "Automatic maintenance", "至少要保留一个分组": "At least one group must remain", "补签": "Catch-up", "补齐插件": "Update required plugin", "订阅里的节点会自动同步进下方代理池,账号即可引用。": "Nodes from subscriptions are synced into the proxy pool below, ready for accounts to use.", "订阅链接必须是 http:// 或 https:// 开头": "The subscription link must start with http:// or https://", "设备授权码:{code}": "Device authorization code: {code}", "设备码授权时,请按网关给出的指引在官方页面确认设备授权码。没有授权地址不等于失败,可能需要在网关本机客户端完成操作;请以共享登录桥返回的状态为准。": "For device-code authorization, follow the gateway's instructions to confirm the device authorization code on the official page. A missing authorization URL does not mean failure; you may need to complete the operation in a client on the gateway machine. Rely on the status returned by the shared sign-in bridge.", "设置": "Settings", "设置不可隐藏(隐藏了只能清缓存找回来)": "\"Settings\" cannot be hidden (you would have to clear storage to get it back)", "设置已生效,但写入磁盘失败(重启后会恢复原设置)": "Settings applied, but could not be saved to disk (will revert after restart)", "设置未同步": "Settings not synced", "诊断": "Diagnostics", "诊断信息": "Diagnostics", "该提供商已不在运行时目录中,请返回列表重新选择": "This provider is no longer in the runtime catalog. Return to the list and select again.", "该登录方式没有可选项,无法提交;请更新插件或联系作者": "This sign-in method has no selectable options and cannot be submitted. Update the plugin or contact its author.", "请允许安装未知来源应用后重试": "Allow installing apps from unknown sources, then try again", "请先在插件页授权签到及附带任务": "Authorize check-in and bundled tasks on the Plugins page first", "请先粘贴 GitHub 令牌": "Paste a GitHub token first", "请先选择有效的 OAuth 登录方式": "Select a valid OAuth sign-in method first.", "请在 Release 页面下载后通过 TestFlight 或 App Store 安装": "Download from the Release page, then install via TestFlight or the App Store", "请填一个分组名": "Please enter a group name", "请填写订阅名称": "Please enter a subscription name", "请填写非空的凭证 JSON 对象,且不超过 256 KiB": "Enter a non-empty credentials JSON object no larger than 256 KiB.", "请查看上方原因,稍后刷新重试。": "See the reason above and refresh again later.", "请根据不兼容原因更新插件或网关;不会要求两者版本号一致。": "Update the plugin or gateway as indicated by the compatibility error. Their version numbers do not need to match.", "请求失败": "Request failed", "请求失败:{message}": "Request failed: {message}", "请求数": "Requests", "请求日志": "Request logs", "请确认": "Please confirm", "请稍候": "Please wait", "请输入 {min}–{max} 之间的整数秒数": "Enter a whole number of seconds between {min} and {max}", "请选择 {label} 的有效选项": "Select a valid option for {label}.", "读取完成的插件会陆续显示,无需停留在此页面等待。": "Plugins appear as their information loads. You can leave this page while loading continues.", "读取插件状态失败:{error}": "Failed to read plugin status: {error}", "读取文件失败": "Failed to read the file", "读取消耗排序失败:{message}": "Could not load consumption order: {message}", "读取设置失败:{error}": "Could not load settings: {error}", "账号 / 登录出网代理": "Account / sign-in outbound proxy", "账号不在当前队列里": "The account is not in the current queue", "账号列表响应异常": "Unexpected account list response", "账号已删除": "Account deleted", "账号已在全局队列第一位": "Account is already first in the global queue", "账号排序接口不可用,请确认网关与界面已更新": "Account sorting API unavailable. Ensure both the gateway and interface are updated.", "账号登录方式": "Account sign-in methods", "趋势统计指标": "Trend metric", "趋势统计维度": "Trend dimension", "跟随系统": "System", "路由策略": "Routing strategy", "转发能力": "Forwarding", "软件版本检查设置不可用": "Software update check settings are unavailable.", "输入 / 输出": "Input / output", "输入这台网关的管理员账号与密码。": "Enter this gateway's administrator account and password.", "运行时不内置于安装包,首次安装脚本插件时自动下载并校验。": "The runtime is not bundled with the installer. It is downloaded and verified when you first install a script plugin.", "运行正常 · {url}": "Running normally · {url}", "运行状态": "Status", "还没有安装任何提供商插件包": "No provider plugin pack is installed yet", "还没有签到记录": "No check-in records yet", "还没有订阅:粘贴订阅链接,或从图片识别二维码导入。": "No subscriptions yet: paste a subscription URL, or scan a QR code from an image.", "还没有选择对话模型:先在下方选一个(或去「设置 → AI 助手」里选)。": "No chat model selected yet: pick one below (or under Settings → AI Assistant).", "这一版没有提供 Android 安装包:{reason}": "This release does not include an Android package: {reason}", "这一项已隐藏": "This item is hidden", "这一项正在显示": "This item is visible", "这个包提供的提供商(可单独停用某一家)": "Providers in this pack (each can be disabled separately)", "这个面板没有管理员,用一把已启用的 API Key 访问(在桌面端「网关 Key」页创建)。": "This panel has no admin account. Access it with an enabled API key (create one under Gateway keys on desktop).", "这会真实发起上游请求并消耗额度": "This sends a real upstream request and spends quota", "这台网关没有管理员,用一把已启用的 API Key 访问(在桌面端「网关 Key」页创建)。": "This gateway has no administrator. Use an enabled API key instead (create one on the desktop app's \"Gateway Key\" page).", "这台网关还没有管理员。设置一个账号密码,之后用它登录。": "This gateway has no administrator yet. Set an account and password, then use them to sign in.", "这是旧插件的手动兼容入口,不代表支持任意凭证或登录方式。请仅粘贴该插件明确接受的凭证 JSON;网关会交给 account.normalize 校验,不会自动推断 Token、Cookie 或 OAuth。": "This is a manual compatibility entry for legacy plugins, not support for arbitrary credentials or sign-in methods. Paste only credentials JSON explicitly accepted by the plugin. The gateway passes it to account.normalize for validation and does not infer Token, Cookie or OAuth credentials.", "这是真实的上游请求,与生产走同一条链路(会记账,报表排除)。": "This is a real upstream request over the same path as production (it is billed but excluded from reports).", "这段文本作为 system 消息排在对话最前面。工具的定义与当前配置概览由网关自动附加,不用写在这里。": "This text goes at the very front of the conversation as a system message. Tool definitions and the current config overview are appended automatically by the gateway, so don't write them here.", "连不上插件仓库,请检查网络或代理后重试": "Cannot reach the plugin repository. Check your network or proxy and try again.", "连接已有 SAP AI Core 部署:从网关本机导入凭据文件,按资源组获取模型;不创建部署或查询额度。": "Connect existing SAP AI Core deployments by importing a credential file from the gateway machine and listing models per resource group. Does not create deployments or report quotas.", "连接并保存": "Connect & save", "连续崩溃": "Repeated crashes", "连通 · {ms}ms": "Reachable · {ms}ms", "选择模型…": "Choose a model…", "通过 API Key 接入 River 对话与在线模型目录;插件不提供余额数值。": "Connect River chat and its online model catalog via an API Key. The plugin does not report a balance amount.", "通过 Magpie 原插件接入设备码登录、对话、模型目录、余额和每日签到。": "Uses the original Magpie plugin for device-code sign-in, chat, model catalogs, balance and daily check-in.", "通过社区插件接入 {providers},可在设置中管理提供商,签到计划在签到中心管理。": "Connects {providers} through a community plugin. Manage providers in settings and check-in schedules in Check-in Center.", "部分信息未能更新,已读取的插件仍可查看。": "Some information could not be updated. Previously loaded plugins remain available to browse.", "部分插件的附带任务可能消耗额度、发送对话或创建及解散群聊。": "Side tasks of some plugins may consume quota, send messages, or create and dismiss group chats.", "都不注入": "Nothing is injected", "都不注入(助手退化为纯聊天)": "Nothing is injected (the assistant falls back to plain chat)", "重启更新": "Restart & update", "重新读取登录方式": "Reload sign-in methods", "队列是一次性整表提交(后端按新顺序重编优先级),移动会连带调整其它组的相对次序。": "The queue is submitted as a whole table at once (the backend renumbers priorities in the new order), so a move also shifts the relative order of other groups.", "队列是一次性整表提交;位置越靠前,路由时越先被选中。": "The queue is submitted as a whole table at once; the earlier the position, the sooner it is picked when routing.", "限流垫底": "Rate-limit demotion", "隐藏 {name}": "Hide {name}", "隐藏分组 {name}": "Hide group {name}", "隐藏这一组": "Hide this group", "需要强制更新": "Required update", "需要网关 API Key": "Gateway API key required", "需要网关本机环境": "Requires the gateway machine's local environment", "需要补齐插件": "Plugin update required", "顺序优先": "Strict order", "首页": "Home", "高危": "High risk", "高级参数(JSON)": "Advanced options (JSON)", "默认分支": "Default branch", "默认跟随软件的正式版和 beta 关注选择;单独设置只影响日常更新,最低版本补齐按当前软件版本选择配套包。": "Release channels follow the app by default. Custom channels affect only routine updates; required plugin updates select a package for the current app version.", "默认跟随软件的自动检查和间隔。关闭自动检查后暂停插件自动更新;手动检查、安装和更新不受影响。": "Automatic checks and intervals follow the app by default. Turning off automatic checks pauses automatic plugin updates; manual checks, installation and updates remain available.", "({n} 个整组隐藏)": " ({n} groups hidden)", "(不会影响客户端登录态)": "(does not affect the client's sign-in state)", "(仅显示前 20 条,共 {n} 条)": "(showing the first 20 of {n})", "(可选)": " (Optional)", "(未指定)": "(not specified)", "(请下载与该平台对应的插件包)": "(download the pack built for this platform)", "(默认问候)": "(default greeting)", "Agent2API · 登录": "Agent2API · Sign in", "OpenAI 兼容网关 · 管理面板": "OpenAI-compatible Gateway · Admin panel", "Turnstile 加载或验证失败,请检查网络、浏览器拦截和域名配置后重试。": "Turnstile could not load or verify. Check your connection, browser blocking and hostname settings, then try again.", "Turnstile 验证超时,请重试。": "Turnstile verification timed out. Please try again.", "创建账号并进入面板": "Create account and enter panel", "密码": "Password", "当前浏览器不支持 Turnstile,请更新浏览器后重试。": "This browser does not support Turnstile. Update your browser and try again.", "我不是机器人": "I'm not a robot", "无法读取登录验证设置,请刷新页面重试": "Could not read sign-in verification settings. Refresh the page and try again.", "无法连接网关": "Cannot connect to the gateway", "无法连接网关,请确认服务已启动": "Cannot connect to the gateway. Please make sure the service is running.", "机器人校验配置已变更或不完整,请刷新页面或联系管理员。": "Bot verification settings have changed or are incomplete. Refresh the page or contact the administrator.", "登录": "Sign in", "登录后可在「网关 Key」页为 API 客户端创建密钥": "After signing in, you can create keys for API clients on the Gateway Key page", "管理员账号": "Admin account", "继续": "Continue", "至少 8 位": "At least 8 characters", "设置密码(至少 8 位)": "Set a password (at least 8 characters)", "请先勾选「我不是机器人」完成验证": "Check \"I'm not a robot\" first to complete the verification", "请填写账号与密码": "Enter the account and password", "请完成人机验证后重试": "Complete the human verification and try again", "请求失败,请重试": "Request failed. Please try again.", "请输入管理员账号与密码": "Enter the admin account and password", "重新验证": "Verify again", "首次使用:创建一个管理员账号,用于登录此面板": "First-time use: create an admin account to sign in to this panel", "验证中…": "Verifying…", "验证失败,请重试": "Verification failed. Please try again.", "验证成功": "Verified", " · 今日 {used} / {quota}": " · Today {used} / {quota}", " · 当前 {n}": " · Currently {n}", " · 本周期 {used} / {quota}": " · This period {used} / {quota}", " · 限流 {n}": " · {n} rate-limited", " 等": " etc.", "0 = 不限": "0 = unlimited", "0 = 按本家默认 {default}": "0 = provider default {default}", "30 秒 ~ 24 小时;手动查询会顺延下一轮": "30 seconds to 24 hours; a manual query postpones the next round", "7 天内到期": "Expires within 7 days", "7 天内到期 {amount}({count} 份)": "Expiring within 7 days: {amount} ({count} packs)", "7天 {count}份": "{count} packs in 7d", "7天 {n}": "{n} in 7d", "API Key": "API Key", "Accio 国内版": "Accio China edition", "Base URL": "Base URL", "Clash Verge 里还没有配置混合监听器或节点端口": "No mixed listener or node port is configured in Clash Verge", "Clash 出口:": "Clash exit: ", "Copilot 额度单位": "Copilot quota units", "NewAPI 个人访问令牌": "NewAPI personal access token", "NewAPI 用户 ID": "NewAPI user ID", "OpenAI 兼容": "OpenAI-compatible", "OpenAI 兼容填到 /v1;Anthropic 填根地址": "For OpenAI-compatible use /v1; for Anthropic use the root URL", "Qoder 中国版": "Qoder China edition", "Qoder 国际版": "Qoder International edition", "Token 刷新接口不可用,请重新打开页面": "The token refresh service is unavailable. Please reopen the page.", "Token 刷新结果未确认,请刷新后核对账号状态": "Token refresh could not be confirmed. Reload the list and check the account status.", "Token 单位": "Token unit", "Token 时": "tokens", "Token 消耗": "Token usage", "Token 规则按每个账号已有的窗口消耗判定,保存不会清零;停用或清空规则不会自动启用账号。": "Token rules use each account’s existing window usage; saving does not reset usage. Disabling or clearing rules does not enable accounts.", "Token 限制阈值必须是大于 0 的安全整数": "The Token threshold must be a positive safe integer", "Token 限额": "Token limit", "Token 限额 · 已禁用": "Token limit · Disabled", "Token 限额 · 已跳过": "Token limit · Skipped", "WorkBuddy 国内版": "WorkBuddy China edition", "WorkBuddy 国际版": "WorkBuddy International edition", "ZCode 国内版": "ZCode China edition", "ZCode 国际版": "ZCode International edition", "ZCode 套餐明细 — {name}": "ZCode plans — {name}", "bigmodel_token_production 的值": "Value of bigmodel_token_production", "{action}{who}": "{action} {who}", "{amount},另 {count} 份余量未知": "{amount}, plus {count} packs with unknown remaining amounts", "{body}({period})": "{body} ({period})", "{cond} 时 → {action}": "{cond} → {action}", "{count} 份": "{count} packs", "{count} 份仅提供比例": "{count} packs with percentage-only readings", "{count} 份单位未知": "{count} packs with unknown units", "{count} 次": "{count} calls", "{days} 天后到期": "Expires in {days} days", "{error}(不会自动改为直连)": "{error} (no automatic fallback to a direct connection)", "{error}(转发时会回退直连)": "{error} (falls back to direct when forwarding)", "{groups} 家 · 显示 {rows} 行": "{groups} providers · showing {rows} rows", "{hours} 小时后到期": "Expires in {hours} h", "{label} ×{count}": "{label} ×{count}", "{label}({count})": "{label} ({count})", "{message}(去该账号的「设置」里填上查询凭证即可)": "{message} (fill in the query credential in this account's Settings)", "{minutes} 分钟后到期": "Expires in {minutes} min", "{month}月{day}日 {clock}": "{month}/{day} {clock}", "{name} · 分组设置": "{name} · Group settings", "{name} 移到 {group} 组内第 {rank} 位": "Moved {name} to position {rank} within the {group} group", "{name} 移到第 {rank} 顺位": "Moved {name} to global position {rank}", "{name}的方向": "Direction of {name}", "{name}({parts})": "{name} ({parts})", "{name}({time} 起生效)": "{name} (takes effect at {time})", "{n} 个已计入": "{n} counted", "{n} 个查询失败": "{n} failed to query", "{n} 个模型 ▾": "{n} models ▾", "{n} 个模型限流中 · 到恢复时间自动解除": "{n} models rate-limited · clears automatically at the reset time", "{n} 个模型限流中 · 记录来自上游 429 / 限额码,到恢复时间自动解除": "{n} models rate-limited · recorded from upstream 429 / quota codes; clears automatically at the reset time", "{n} 个请求正在使用该账号(含还在下发内容的流式请求)": "{n} requests are using this account (including streaming requests still sending content)", "{n} 个读数只读到一半(读数可信但不完整)": "{n} only partially read (readable but incomplete)", "{n} 个读数没有绝对数(只给比例或无额度),未计入": "{n} have no absolute figure (percentage only or no quota), not counted", "{n} 个读数里没有可用比例,未计入": "{n} readings had no usable percentage and were not counted", "{n} 个账号 · {e} 启用 · {l} 限流": "{n} accounts · {e} enabled · {l} rate limited", "{n} 个账号 · 启用 {e}": "{n} accounts · {e} enabled", "{n} 个还没查到(未查询或正在查询)": "{n} not read yet (not queried or in progress)", "{n} 个还没查询": "{n} not queried yet", "{n} 分钟": "{n} min", "{n} 分钟前更新": "Updated {n} minutes ago", "{n} 分钟后": "in {n} min", "{n} 天前更新": "Updated {n} days ago", "{n} 天后": "in {n} days", "{n} 小时": "{n} h", "{n} 小时前更新": "Updated {n} hours ago", "{n} 小时后": "in {n} h", "{n} 秒": "{n} s", "{n} 秒前更新": "Updated {n} seconds ago", "{period}窗口": "{period} window", "{plan}({time} 领取)": "{plan} (claimed {time})", "{providers} 家提供商、共 {total} 个账号。数据仍在,只是当前没有可用的插件来执行它们。": "{providers} providers, {total} accounts. The data is still here — there is just no working plugin to run them right now.", "{reason}。该账号的登录态已被上游注销,自动刷新不会再成功,请重新登录该账号": "{reason}. The upstream has revoked this account's session; automatic refresh will never succeed again — sign in to this account again.", "{scope} {used} / {quota} Token,{countdown}重置": "{scope} {used} / {quota} tokens, {countdown} until reset", "{text}过期": "Expires {text}", "{text}过期({full})": "Expires {text} ({full})", "{time} 到期": "expires {time}", "{time} 恢复": "Resets {time}", "{time} 生效": "starts {time}", "{time} 领取": "claimed {time}", "{total} 个账号 · 启用 {enabled} · 禁用 {disabled}{limited}": "{total} accounts · {enabled} enabled · {disabled} disabled{limited}", "{tried}探测并领取官方每日登录赠送的套餐积分(到账进套餐积分,不增加福利模型 token 池)": "{tried}Probe and claim the plan points the official app gifts on daily login (they credit to plan points and do not add to the welfare model token pool)", "{unit}余量未知({count} 份)": "Remaining {unit} unknown ({count} packs)", "{verb}完成:成功 {ok} 个,失败 {fail} 个({detail}{more})": "{verb} finished: {ok} succeeded, {fail} failed ({detail}{more})", "{verb}完成:成功 {ok} 个,未变更 {unchanged} 个,跳过 {skip} 个,失败 {fail} 个": "{verb} completed: {ok} changed, {unchanged} unchanged, {skip} skipped, {fail} failed", "✅ {ok}/{total} 个出口可用": "✅ {ok}/{total} exits available", "✅ {verb}完成:共 {count} 个账号": "✅ {verb} finished: {count} accounts", "✅ 优先级已改为 {n}": "✅ Priority changed to {n}", "✅ 出口可用": "✅ Exit available", "✅ 已保存:{note}": "✅ Saved: {note}", "✅ 已启用": "✅ Enabled", "✅ 已启用 {n} 个账号": "✅ Enabled {n} accounts", "✅ 已导出 {count} 个账号文件": "✅ Exported {count} account files", "✅ 已更新 {n} 个账号的余额{suffix}": "✅ Balance updated for {n} accounts{suffix}", "✅ 已更新余额": "✅ Balance updated", "✅ 已清除 API Key(该账号现在没有凭证,转发会被跳过)": "✅ API Key cleared (the account now has no credential; forwarding will skip it)", "✅ 已清除 {model} 的限流标记": "✅ Rate-limit flag cleared for {model}", "✅ 已清除余额查询凭证": "✅ Balance query credential cleared", "✅ 已清除查询凭证": "✅ Balance credentials cleared", "✅ 已清除该账号全部限流标记": "✅ Cleared all rate-limit flags for this account", "✅ 已禁用": "✅ Disabled", "✅ 已禁用 {n} 个账号": "✅ Disabled {n} accounts", "✅ 已重新读取 Clash Verge 配置": "✅ Clash Verge config reloaded", "✅ 账号设置已保存": "✅ Account settings saved", "✅ 顺序已保存": "✅ Order saved", " 出口 IP {ip}": " Exit IP {ip}", "、": ", ", "、补官方会话头、请求体补两个占位工具(上游免费档的三道校验)。": ", adds official session headers, and adds two placeholder tools to the request body (the three checks of the upstream free tier).", "「{name}」已在「网络代理」页禁用,请先启用它或换一条": "\"{name}\" is disabled on the \"Network proxy\" page. Enable it first or pick another one.", "「{name}」开着排序规则:先关掉规则,才能手动调整组内顺序": "“{name}” has sorting rules on: turn them off before adjusting the order inside the group", "「{name}」本身": "\"{name}\" itself", "「已保存的代理」": "\"Saved proxy\"", "「网络代理」页还没有出口 —— 去那里新增,或在「订阅管理」里点「同步 Clash Verge」把 Clash 的出口导进来": "The Network proxy page has no exits yet — add one there, or click \"Sync Clash Verge\" under \"Manage subscriptions\" to import Clash's exits", "「网络代理」页还没有出口 —— 去那里添加一个 HTTP 或 SOCKS5 地址": "No proxies are saved yet. Add an HTTP or SOCKS5 address on the Network proxy page.", "「网络代理」页还没有出口 —— 去那里添加手动地址或同步 Clash Verge 的端点": "No proxies are saved yet. Add a manual address or sync Clash Verge endpoints on the Network proxy page.", "「网络代理」页里每个启用的出口轮流使用;之后新加的出口自动加入": "Every enabled exit on the Network proxy page is used in turn; exits added later join automatically", "一般不用填": "Usually left blank", "万": "10k", "上一条规则相同时才比较下一条;想优先按余额消耗,请把可用余额移到第一位。": "Each rule is used only when the preceding rules tie. Move Available balance to the top to prioritize consumption by balance.", "上次成功查询:{time}": "Last successful query: {time}", "上游拒绝了本次余额查询": "The upstream rejected this balance query", "上游提供了补充说明;未显示原始正文": "The upstream supplied additional notes; the original body is not shown", "上游暂时限制余额查询,请稍后重试": "The upstream is temporarily limiting balance queries. Retry later.", "上游未给总量,画不出剩余比例": "The upstream gave no total, so the remaining ratio cannot be drawn", "上游未返回可识别额度窗口": "The upstream returned no recognizable quota windows", "上游本来不要凭证时(本地 Ollama、OpenCode Zen 的免费档)勾上这一项:账号会被正常选路;只把 Key 留空": "Check this when the upstream does not need credentials (local Ollama, the OpenCode Zen free tier): the account is still routed normally; just leave the Key blank", "上游没有提供此额度的分桶用量,当前使用本地估算保护;在其他客户端产生的消耗不会计入。": "The upstream does not provide usage for this quota bucket, so protection uses a local estimate. Usage in other clients is not counted.", "上游的 API Key。留空 = 不修改(改凭证不会换账号 id);要清掉已配的凭证用右边的「清除」": "The upstream API Key. Leave blank = no change (editing a credential does not change the account id); to remove a configured credential use \"Clear\" on the right", "上游的余额读数里没有这个套餐的额度桶,剩余量读不到;余额列显示的是套餐发放的权益额度,不是剩余量": "The upstream balance reading has no quota bucket for this plan, so the remaining amount is unavailable; the balance column shows the plan's granted entitlement, not the remaining amount", "上游返回 {status}": "Upstream returned {status}", "上游限制 · 已禁用": "Upstream restriction · Disabled", "上游额度无上限": "The upstream quota is unlimited", "上面所有规则都相同时,保持你拖出来的顺序": "When every rule above ties, keep the order you dragged", "不到 1 分钟": "under a minute", "不到 1 分钟到期": "Expires in under 1 min", "不可用:{error}": "Unavailable: {error}", "不足 {n}": "Less than {n}", "不限": "Unlimited", "与队列里的上一个账号交换优先级(可能是另一家的账号)": "Swap priority with the previous account in the queue (may be an account from another provider)", "与队列里的下一个账号交换优先级(可能是另一家的账号)": "Swap priority with the next account in the queue (may be an account from another provider)", "严格按消耗顺序使用账号需选择「顺序优先」;轮询、会话粘性及账号保护仍按原设置生效。": "Select Priority order to use accounts strictly in consumption order. Rotation, session stickiness and account protection keep their existing settings.", "个": "total", "个 · 共": "of", "个人": "Personal", "主凭证没有固定到期时刻,到期由网关自动续期或本来就不会过期": "The primary credential has no fixed expiry — the gateway renews it automatically, or it does not expire at all", "主机": "Host", "亿": "100M", "仅将优先级调整到全局第一位,不改变启用状态": "Only moves priority to first in the global queue; does not change the enabled state", "仅按手动顺序": "Manual order only", "仅统一修改现有规则的开关,保留阈值、动作和重置方式;不改变账号的启用状态。": "Only changes existing rule switches; thresholds, actions, reset modes, and account enabled states are kept.", "仅账号管理": "Account management only", "仅跳过命中条件的模型,其他模型仍可转发;点击查看限制器": "Only models whose conditions are met are skipped; other models can still forward requests. Click to view the limiter.", "今天 {clock}": "today {clock}", "今天 {time}": "today {time}", "今天到期 {amount}({count} 份)": "Expiring today: {amount} ({count} packs)", "今天还没有领过:上面「可领取的套餐」里逐份点「领取」即可": "Nothing claimed today yet: just click \"Claim\" on each plan under \"Claimable plans\" above.", "今天(北京时间 {day})已由官方确认到账 {n} 项;领到的是套餐赠送积分,不增加福利模型的 token 池;按自然日重置,明天可再领": "The official side confirmed {n} credits today (Beijing time {day}); they are plan gift points and do not add to the welfare model token pool; resets per calendar day, so you can claim again tomorrow", "今天(北京时间 {day})已试过 {n} 次但官方尚未确认到账,": "Tried {n} times today (Beijing time {day}) but the official side has not confirmed the credit yet. ", "今天(北京时间)已领取 {n} 份:{plans}": "Claimed today (Beijing time): {n} — {plans}", "今天(本地 0 点重置)": "Today (resets at midnight local)", "今日剩 {n} 分钟": "{n} min left today", "今日剩 {n} 小时": "{n} h left today", "今日发放": "Granted today", "今日已用": "Used today", "今日已领": "claimed today", "代理": "Proxy", "代理不可用:{error}": "Proxy unavailable: {error}", "代理不可用:{error}(不会自动改为直连);选「自定义代理…」去修改": "Proxy unavailable: {error} (no automatic direct connection); choose \"Custom proxy…\" to fix it", "代理不可用:{error}(转发时会回退直连);选「自定义代理…」去修改": "Proxy unavailable: {error} (falls back to direct when forwarding); choose \"Custom proxy…\" to fix it", "代理列表响应异常({type})": "Unexpected proxy list response ({type})", "代理列表读取失败(重试中)": "Failed to load the proxy list (retrying)", "代理已更新": "Proxy updated", "代理异常": "Proxy error", "代理方式": "Proxy mode", "代理池响应异常({type})": "Unexpected proxy pool response ({type})", "代理端口必须是 1-65535 的整数": "Proxy port must be an integer from 1 to 65535", "以下 {count} 个账号不支持余额查询,本次会跳过:{names}": "These {count} accounts do not support balance queries and will be skipped: {names}", "企业": "Enterprise", "优先级": "Priority", "优先级 {priority} 已被同一提供商的「{name}」占用,请换一个数值": "Priority {priority} is already taken by \"{name}\" in the same provider; choose another value", "优先级必须是数字": "Priority must be a number", "优先级未保存:{message}": "Priority not saved: {message}", "会员共享额度": "Shared membership quota", "会员共享额度不是本账号独立额度,不与其他窗口相加;未证实团队独立额度": "Shared membership quota is not exclusive to this account and is not added to other windows. Separate team quota is unconfirmed.", "会被当成「未配置凭证」而跳过。": ", and it is treated as \"no credential\" and skipped.", "伪装 OpenCode 官方客户端": "Emulate the official OpenCode client", "伪装 OpenCode 官方客户端(OpenCode Zen 免费档要它才放行)": "Emulate the official OpenCode client (the OpenCode Zen free tier requires this to let traffic through)", "余量 {value}": "Remaining {value}", "余额": "Balance", "余额 < {threshold}": "Balance < {threshold}", "余额不足": "Low balance", "余额不足 · 已跳过": "Low balance · Skipped", "余额低于": "Balance below", "余额低于阈值时的提示": "Warn when balance drops below a threshold", "余额低于阈值,转发时会跳过该账号(余额回升自动恢复)": "Balance is below the threshold; forwarding skips this account (recovers automatically when the balance rises)", "余额低于限制器的阈值,转发时会跳过该账号(余额回升自动恢复)": "Balance is below the limiter threshold; forwarding skips this account (recovers automatically when the balance rises)", "余额列读数的自动刷新;也是「限制器」余额规则的数据来源。": "Auto-refreshes the balance column reading; also the data source for the Limiter's balance rules.", "余额响应为空": "Empty balance response", "余额大优先": "Higher balance first", "余额小优先": "Lower balance first", "余额已更新": "Balance updated", "余额查询凭证": "Balance query credential", "余额查询凭证已失效,请刷新查询登录态": "The balance-query credential has expired. Refresh the query sign-in state.", "余额查询失败:{message}": "Balance query failed: {message}", "余额查询接口不可用,请更新网关后重试": "Balance query is unavailable. Update the gateway and try again.", "余额查询接口返回异常": "The balance query returned an invalid response.", "余额查询方案:{label}": "Balance query scheme: {label}", "余额沿用现有口径;Token 按重置方式内的累计消耗判定(切换类型会清空阈值)": "Balance keeps its existing basis; Token is judged by cumulative usage within the reset window (switching types clears the threshold)", "余额详情": "Balance details", "使用套餐": "Plan in use", "使用最近一次成功查询的总余额,随余额刷新调整;查询失败保留上次读数,不额外增加查询频率。": "Uses the total balance from the last successful query and updates as balances refresh. Failed queries retain the previous reading; query frequency is unchanged.", "保存失败:{error}": "Save failed: {error}", "保存条件": "Save condition", "保存规则": "Save rule", "保留 {n} 个账号": "Keeps {n} accounts", "保留各账号原有规则,只追加下面的规则;完全相同的规则不会重复添加。": "Keeps each account’s existing rules and appends the rules below; identical rules are not added twice.", "修改代理": "Change proxy", "停止旧查询,按当前配置重新查询余额": "Stop the previous query and check the balance using the current settings", "停用全部规则": "Disable all rules", "免费版": "Free", "全局一条队列:数值越小越先用,不分提供商": "One global queue: lower numbers are tried first, regardless of provider", "全局唯一:所有提供商的账号都不能重号,数值越小越先用": "Globally unique: no two accounts across all providers may share a number; lower numbers are tried first", "全局队列": "Global queue", "全局队列第 {position} 位,共 {total} 位": "Position {position} of {total} in the global queue", "全选 / 取消全选当前筛选结果(与批量栏同一个选择)": "Select / deselect all current filter results (the same selection as the batch bar)", "全选当前筛选结果({n} 个)": "Select all filtered ({n})", "全部代理节点(推荐)": "All proxy nodes (recommended)", "全部启用中的账号将被{what}": "This will {what} all enabled accounts", "全部启用({n})": "Enable all ({n})", "全部清除": "Clear all", "全部禁用({n})": "Disable all ({n})", "全部({n})": "All ({n})", "共有 {n} 个账号暂未显示": "{n} accounts are not shown", "关闭则不参与转发(余额查询照常,见「查询设置」)": "When off, the account takes no part in forwarding (balance queries still run — see \"Query settings\")", "关闭后,该账号转发失败时返回本次错误,不再顺延其他账号。禁用、无凭证和限制器等保护仍生效。": "When off, forwarding failures on this account return the error without switching to another account. Disabled-account, missing-credential, and limiter protections still apply.", "关闭自动查询后,余额限制器只能使用上次读数;手动查询仍可用。": "With auto-query off, balance limiters use the last reading; manual queries remain available.", "内消耗 ≥": "usage ≥", "再领一次": "Claim again", "冷却进度 {percent}%": "Cooldown progress {percent}%", "冻结余额": "Frozen balance", "凭证与套餐": "Credential & plan", "凭证已过期,转发时会先刷新": "Credential expired; it is refreshed before forwarding", "凭证已过期;能否续期取决于登录方式,本机引用需由原客户端处理": "Credential expired; renewal depends on the sign-in method. Local references must be handled in the original client", "出口": "Exit", "出网代理": "Outbound proxy", "分窗口额度": "Quota by window", "分组设置": "Group settings", "分钟": "minutes", "刚刚更新": "Updated just now", "删除各账号的全部限制规则,执行前会再次确认。": "Removes every account’s limiter rules; confirmation is required before running.", "删除提供商": "Delete provider", "删除组": "Delete group", "删除账号": "Delete account", "删除这条账号记录(不会影响客户端自己的登录态;之后可再点「导入桌面端登录态」加回来)": "Delete this account record (it does not affect the client's own login state; you can add it back later with \"Import desktop login state\")", "删除选中的账号": "Delete selected accounts", "到恢复时间后自动解除,无需手动操作": "Clears automatically at the reset time; no manual action needed", "到期 {date}": "Expires {date}", "到期 {time}": "Expires {time}", "到期 近→远": "Expiry near→far", "到期 远→近": "Expiry far→near", "到期时间": "Expiry time", "刷新 Token": "Refresh token", "刷新 Token 完成:成功 {ok} 个,跳过 {skip} 个,失败 {fail} 个": "Token refresh complete: {ok} succeeded, {skip} skipped, {fail} failed", "刷新 Token:已处理 {completed}/{total} 个,当前账号:{name}": "Refreshing tokens: {completed}/{total} processed, current account: {name}", "刷新列表": "Refresh list", "刷新套餐与额度": "Refresh plans and quotas", "刷新账号列表失败,当前仍显示上一次成功读取的数据:{message}": "Failed to refresh accounts. The last successfully loaded data is still shown: {message}", "刷新账号列表失败:{message}": "Failed to refresh accounts: {message}", "剩 {left} / {total}{unit}": "{left} / {total}{unit} left", "剩 {n} 分钟": "{n} min left", "剩 {remaining}": "{remaining} left", "剩 {remaining} / {total}": "{remaining} / {total} left", "剩不到 1 分钟": "Less than 1 min left", "剩余 {percent}%": "{percent}% left", "剩余比例": "Remaining percentage", "剩余额度": "Remaining quota", "加载异常": "Load failed", "北京时间(UTC+8)": "Beijing time (UTC+8)", "协议": "Protocol", "即将到期 {count} 份": "{count} packs expiring soon", "即将过期 {n}": "{n} expiring soon", "历史余额,尚未按新配置验证": "Previous balance, not yet verified with the new settings", "原代理来源已下线,请选择已保存的代理、自定义地址或直连": "The previous proxy source has been discontinued. Choose a saved proxy, a custom address or a direct connection.", "去「插件」页": "Open Plugins", "去「插件」页启用": "Enable on the Plugins page", "去「插件」页安装": "Install on the Plugins page", "去启用": "Enable", "去安装": "Install", "又不勾": "without checking it", "取消余额查询": "Cancel balance query", "取消查询": "Cancel query", "取消查询失败:{message}": "Failed to cancel query: {message}", "取消选择": "Deselect", "另有 {n} 个已勾选账号被当前筛选隐藏,仍会参与操作": "{n} selected accounts are hidden by the current filter but still take part", "另有 {n} 个账号因提供商插件未就绪,暂未显示": "{n} more accounts are hidden because their provider plugins are not ready", "只修改本次选择的设置,不影响备注、凭证、转发顺序或其他设置。": "Only changes the chosen settings; labels, credentials, forwarding order, and other settings are kept.", "只比较同一家、同单位的数值余额;未知、比例和无限额度不作为零余额,有明确余额的账号优先。": "Only numeric balances from the same provider and in the same unit are compared. Unknown, percentage and unlimited quotas are not treated as zero; accounts with known balances come first.", "只重试临时故障;次数与整轮时间上限任一用尽即停止,凭证错误不重试。": "Only temporary failures are retried. Stops when either the retry count or overall time limit is reached. Credential errors are not retried.", "可添加多条;同类规则也允许并存(例如一条按余额、两条不同重置方式的 Token)": "You can add several; rules of the same kind may coexist (for example one balance rule and two Token rules with different reset modes)", "可用 {total}": "{total} available", "可用 {value}": "Available {value}", "可用 {value} {unit}": "{value} {unit} available", "可用余额": "Available balance", "可用合计": "Total available", "可用最低": "Lowest available", "可留空:新版请求头只认令牌;旧版会把用户 ID 放进 New-Api-User 头": "Optional: newer builds only use the token; older ones put the user ID in the New-Api-User header", "可领取的套餐": "Claimable plans", "各窗口独立限制请求,不相加为总余额。": "Each window limits requests independently; they do not add up to a total balance.", "同提供商内暂无其他账号占用优先级": "No other accounts in this provider use a priority", "同提供商已占用:{names}": "Taken in this provider: {names}", "名称": "Name", "后续加入": "Coming later", "含 {n} 个不限额度账号,合计记为 ∞": "includes {n} unlimited account(s); total shown as ∞", "启动中…": "Starting…", "启用全部规则": "Enable all rules", "启用插件包后自动回来": "Enable the plugin pack and they return automatically", "启用状态": "Enabled status", "启用该规则": "Enable this rule", "启用该账号": "Enable this account", "启用这一组里的全部账号(含被筛选隐藏的)": "Enable every account in this group (including ones hidden by filters)", "启用这家提供商后自动回来": "Enable this provider and they return automatically", "周期": "Period", "周期 Token": "Period tokens", "周期单位": "Period unit", "命中条件的模型": "Models matching the conditions", "商汤日日新控制台的登录密码": "SenseNova console login password", "商汤日日新控制台的登录账号": "SenseNova console login account", "固定兜底,不受开关影响": "Fixed fallback, not affected by the toggles", "固定周期": "Fixed period", "在 NewAPI 站点「个人设置」里生成的访问令牌": "Access token generated under \"Personal settings\" on the NewAPI site", "在列表里拖:拖分组带调整整组顺位,拖行首把手调整组内先后(顺序由拖拽表达,不再填数字)": "Drag in the list: drag a group band to reorder whole groups, drag a row handle to reorder within the group (order is expressed by dragging — no more typing numbers)", "在账号设置的「基本」分组里设置该账号同时最多处理的请求数": "Set the maximum number of requests this account can handle at once under \"Basic\" in account settings", "地址与端口由「网络代理」页管理:那边改一次、测一次,所有引用它的账号一起生效": "Address and port are managed on the Network proxy page: change and test them once there, and every account referencing them updates together", "基本": "Basic", "填入系统代理": "Fill from system proxy", "备注名 / 启用 / 代理": "Label / enable / proxy", "备注名 {name}": "Label {name}", "备注名不能为空": "Label cannot be empty", "备注名已更新": "Label updated", "复制当前设置": "Copy current settings", "复制自账号": "Copy from account", "失败 {count} 个:": "{count} failed:", "失败后允许换号": "Allow account switching after failure", "失败重试次数": "Retries after failure", "失败重试次数必须是 0~{max} 的整数": "Retry count must be an integer from 0 to {max}", "套餐 {name}": "Plan {name}", "套餐实例不能跨账号复制,请改用通用额度或本地保护条件": "Plan instances cannot be copied between accounts. Use a general quota or local protection condition instead.", "套餐尚未生效或已经到期": "The plan is not active yet or has expired", "套餐池": "Plan pool", "套餐池的推理端点要求每条请求带一个阿里云验证码令牌;令牌由本应用在后台静默铸造,界面关闭时无法铸造": "The plan-pool inference endpoint requires an Aliyun CAPTCHA token on every request; tokens are minted silently by this app in the background, and cannot be minted while the UI is closed", "套餐池(Start Plan)": "Plan pool (Start Plan)", "套餐池(Start Plan)— 走 zcode.z.ai 端点,消耗 ZCode 套餐池的额度(新用户体验额度 / 活动领取)": "Plan pool (Start Plan) — uses the zcode.z.ai endpoints and the ZCode plan-pool quota (new-user trial quota / event grants)", "套餐积分的重置日期": "Reset date for plan points", "存在延迟计量信息,无法据此推算当前余额": "Delayed metering information cannot be used to infer the current balance", "它会改写请求体": "It rewrites the request body", "官方限时活动": "Official limited-time event", "实际阈值:{value} Token": "Actual threshold: {value} tokens", "对话 token": "Chat tokens", "对话请求": "Chat requests", "导出文件包含登录凭证,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "Exported files contain credentials that can be used to sign in. Keep them safe; do not share them or upload them to a public location.", "导出未返回结果": "The export returned no result.", "导出本组全部账号,每个账号一个 JSON 文件(含被筛选隐藏的)": "Export every account in this group as a separate JSON file, including accounts hidden by filters", "导出本组账号": "Export accounts in this group", "将作用于以下账号": "Applies to the following accounts", "将用草稿中的 {rules} 条规则替换 {count} 个账号的全部限制规则,原有规则不会保留。确定继续?": "Replace all limiter rules of {count} accounts with the {rules} draft rules? Existing rules will not be kept.", "将这个账号及其登录凭证保存为单独的 JSON 文件": "Save this account and its credentials as a separate JSON file", "小时": "hours", "小浣熊": "Raccoon", "尚未查询该账号的余额": "This account's balance has not been queried yet", "尝试领取": "Try claiming", "展开": "Expand", "展开全部": "Expand all", "展开全部分组": "Expand all groups", "展开或收起(默认收起)": "Expand or collapse (collapsed by default)", "展开这一组": "Expand this group", "已保存的代理": "Saved proxy", "已停用": "Disabled", "已发起 {count} 个账号文件的下载,请在浏览器下载列表确认": "Started downloads for {count} account files. Check your browser's downloads to confirm.", "已取消查询": "Query cancelled", "已启用 {name}": "Enabled {name}", "已启用自动排序,组内拖动已锁定;关闭全部规则可恢复原手动顺序。": "Automatic sorting is enabled and dragging within the group is locked. Turn off all rules to restore the original manual order.", "已启用,点击禁用(不参与转发)": "Enabled; click to disable (excluded from forwarding)", "已在全局队列第一位": "Already first in the global queue", "已复制到草稿,执行后才会应用到所选账号": "Copied to the draft; applies to the selected accounts only after running", "已导出 {count} 个账号文件,{failed} 个未导出:{reason}": "Exported {count} account files; {failed} could not be exported: {reason}", "已是首选": "Already first", "已暂停验证,需要时请手动重试": "Verification paused. Retry manually when needed.", "已更新 {ok}/{total} 个账号,{failed} 个失败": "Updated {ok}/{total} accounts, {failed} failed", "已查询": "Queried", "已用 {used}": "{used} used", "已用 {used} / 共 {total}": "Used {used} / {total}", "已用完 / 已过期": "Used up / Expired", "已用比例": "Used percentage", "已用额度": "Used quota", "已禁用": "Disabled", "已禁用 {name}": "Disabled {name}", "已禁用,点击启用": "Disabled; click to enable", "已筛选 {n} 项": "{n} shown", "已被「{name}」占用": "Taken by \"{name}\"", "已触发": "Triggered", "已触发 · 账号已禁用": "Triggered · Account disabled", "已设为首选": "Set as first", "已设置": "Configured", "已跳过{current}": "Skipped{current}", "已跳过{usage}{countdown}": "Skipped{usage}{countdown}", "已达上限{usage}": "At limit{usage}", "已过期": "Expired", "已过期({time})": "Expired ({time})", "已选": "Selected", "已配置,留空则不修改": "Configured; leave blank to keep", "已限流": "Rate-limited", "已领到、还没到生效时间的套餐(生效后余额列会按它显示):\n{lines}": "Claimed plans that have not taken effect yet (the balance column shows them once they do):\n{lines}", "并发上限": "Concurrency limit", "并发上限 0~{max};CodeArts 等有默认值的家填 0 即按本家默认;达到上限的账号会被跳过、请求转给其他账号": "Concurrency limit 0–{max}; for providers with a default (e.g. CodeArts), 0 means that default; accounts at the limit are skipped and requests go to other accounts", "并发上限 0~{max};达到上限的账号会被跳过、请求转给其他账号": "Concurrency limit 0–{max}; accounts at the limit are skipped and requests go to other accounts", "并发上限 0~{max};达到上限的账号跳过、请求转给其他账号(原列表 ⋯ 菜单的「并发上限」入口已并入这里)": "Concurrency limit 0–{max}; accounts at the limit are skipped and requests go to other accounts (the \"Concurrency limit\" entry from the list's ⋯ menu is now here)", "并发上限 填 0 即按本家默认 {default};填 1 或 2 就按填的算,更大的数会被本家上限截断(原列表 ⋯ 菜单的「并发上限」入口已并入这里)": "0 uses the provider default ({default}); 1 or 2 are honoured as entered, larger values are capped by the provider limit (the \"Concurrency limit\" entry from the list's ⋯ menu is now here)", "并发上限必须是 0~{max} 的整数": "Concurrency limit must be an integer from 0 to {max}", "并发上限:{value}": "Concurrency limit: {value}", "开启后,网关按 OpenCode 官方 CLI 的形状发请求:没填 Key 的账号用匿名凭证": "When on, the gateway sends requests in the shape of the official OpenCode CLI: for accounts with no Key it uses anonymous credentials", "开始 {time}": "Starts {time}", "当": "When", "当前不符合资格": "Currently ineligible", "当前不需要验证码令牌": "CAPTCHA tokens are not required right now", "当前代理不可用,请重新选择": "The current proxy is unavailable. Choose another proxy.", "当前代理不可用:{error}(不会自动改为直连)": "Current proxy unavailable: {error} (no automatic fallback to a direct connection)", "当前代理不可用:{error}(转发时会回退直连)": "Current proxy is unavailable: {error} (falls back to direct when forwarding)", "当前余额 {n};与余额列同一数字口径,严格小于才触发(等于阈值仍可用)": "Current balance {n}; same reading as the balance column — the rule triggers only when strictly below it (equal to the threshold is still usable)", "当前可手动调整组内顺序。": "You can currently reorder accounts in this group manually.", "当前可用 ∞(不参与余额不足判定)": "Currently ∞ available (excluded from the low-balance check)", "当前客户端不支持逐账号导出,请更新客户端": "This client does not support individual account exports. Please update it.", "当前已经是默认规则": "This is already the default rule set", "当前排序规则:{rules}。点击调整": "Current sorting: {rules}. Click to adjust", "当前未发现本期活动,不代表账号不符合资格": "No current events were found. This does not mean the account is ineligible.", "当前没有任何模型处于限流中": "No models are currently rate-limited", "当前没有可领取的套餐(活动期内每天发一份,明天可再领)": "No claimable plans right now (one is issued each day during the event; you can claim again tomorrow)", "当前没有限流中的模型。": "No models are currently rate-limited.", "当前筛选下 {n} 个账号的百分比读数不能相加,取最低的剩余比例(随筛选、搜索变化,不受分页影响)": "Percentage readings for the {n} accounts under the current filter cannot be added; this shows the lowest remaining percentage (changes with filters/search, unaffected by paging)", "当前筛选下 {n} 个账号的额度概览(随筛选、搜索变化,不受分页影响)": "Quota overview for the {n} accounts under the current filter (changes with filters and search, unaffected by paging)", "当前筛选下没有账号": "No accounts match the current filters", "当前筛选条件下没有账号": "No accounts match the current filter", "当前网关不支持余额排序,请先更新网关": "This gateway does not support balance sorting. Update the gateway first.", "当前规则:{rules}。": "Current rules: {rules}.", "当前规则:{rules}。自动排序生效时,组内拖动把手会锁定;关掉全部规则即回到手动顺序。": "Current rules: {rules}. While auto-sort is active the drag handle inside the group is locked; turn every rule off to go back to manual order.", "当前视图不能调整组顺位:{reason} 之后再拖动": "Group order cannot be changed in this view: clear {reason} first, then drag", "当前钩子仅提供套餐与周期,未提供余额数值": "The current hook provides only plan and period information, not a numeric balance", "当前:{label}(Clash Verge 直接引用);可在「网络代理」页同步端点后改选": "Current: {label} (direct Clash Verge reference). You can sync endpoints on the Network proxy page and select one instead.", "当前:{label}(未经过代理池 —— 可在「网络代理」页把出口同步进池后来这里改选)": "Current: {label} (not via the proxy pool — sync the exit into the pool on the Network proxy page to select it here)", "当前:{label}(未经过代理池 —— 可在「网络代理」页添加相同地址后来这里改选)": "Current: {label} (not using the proxy pool; add the same address on the Network proxy page, then select it here).", "当前:{label}(每条请求换一个出口);「自定义代理…」打开完整设置": "Current: {label} (a different exit per request); \"Custom proxy…\" opens the full settings", "当前:{label};选项来自「网络代理」页;「自定义代理…」打开完整设置": "Current: {label}; options come from the Network proxy page; \"Custom proxy…\" opens the full settings", "当前:{value}": "Current: {value}", "待定": "TBD", "待生效": "Pending", "待生效 {n} 份": "{n} pending", "待生效 {time}": "Effective from {time}", "必填": "Required", "必填;留空 = 不修改,清除用右边的按钮": "Required; leave empty to keep the current one, use the button on the right to clear", "总剩余 {total} · 套餐 {plan} · 奖励 {bonus}": "Total left {total} · plan {plan} · bonus {bonus}", "总积分": "Total points", "总积分是当前可用积分的汇总,与余额列一致;不重复累加汇总行,不包含 Token、次数或其他单位的额度。": "Total points is the aggregate of currently available points, matching the balance column. Summary rows are not counted twice, and tokens, request counts, and quotas in other units are excluded.", "总量 {value}": "Total {value}", "恢复时间未知": "Reset time unknown", "恢复默认:仅开启最快到期优先": "Restore defaults: earliest expiry first only", "恢复默认:仅按手动顺序": "Restore defaults: manual order only", "恢复默认:最快到期优先,账号添加时间关闭": "Restore defaults: soonest expiry first, added-time sorting off", "我的套餐": "My plans", "或": "OR", "所有提供商都有这个字段": "Every provider has this field", "所选账号的各周期:{list}": "Selected account's periods: {list}", "手动添加": "Manual entry", "打开批量操作弹窗,并预选这一组的账号(改代理等动作在弹窗里挑参数)": "Opens the bulk-operations dialog with this group's accounts preselected (pick parameters like the proxy inside the dialog)", "执行中…": "Running…", "执行({action})": "Run ({action})", "批量动作": "Batch action", "批量操作 · 已选 {count} 个账号": "Batch operation · {count} accounts selected", "批量操作失败:{error}": "Batch operation failed: {error}", "批量操作已保存,但列表刷新失败:{error}": "Bulk changes were saved, but the list failed to refresh: {error}", "批量操作接口不可用,请重新打开页面": "Bulk operation service is unavailable; reopen the page", "批量操作未返回结果,请刷新后确认状态": "No result returned for the bulk operation; refresh to confirm the state", "批量操作本组": "Bulk operations for this group", "批量操作结果不完整,请刷新后核对所选账号": "The bulk operation returned incomplete results. Refresh and check the selected accounts.", "批量操作结果未确认,请刷新后核对设置": "The bulk changes could not be confirmed. Refresh and check the settings.", "批量规则按每个账号分别判定,不合并余额或 Token 用量。": "Bulk rules are evaluated separately for each account; balances and Token usage are not combined.", "把每页调回「全部」": "Set the page size back to \"All\"", "折叠": "Collapse", "折叠全部": "Collapse all", "折叠全部分组(只留组头)": "Collapse all groups (keep only the group headers)", "折叠这一组": "Collapse this group", "拖动调整列宽(双击还原)": "Drag to resize the column (double-click to reset)", "拖动调整整组顺序": "Drag to reorder whole groups", "拖动调整组内顺序": "Drag to reorder within the group", "按上游额度查询的读数判定;模型共用同一个额度池时,选择模型不会拆分该池余额。": "Evaluated using the upstream quota reading. Selecting models does not split the balance of a shared quota pool.", "按优先级从上到下比较,勾选的项才参与": "Compared top to bottom; only checked rules take part", "按住拖动,调整这一家的组顺位(整组一起动)": "Hold and drag to change this provider's group position (the whole group moves together)", "按住拖动,调整这个账号在本组内的顺序": "Hold and drag to change this account's order within its group", "按总积分设置限制": "Limit by total points", "按提供商筛选账号": "Filter accounts by provider", "按最低剩余比例选择账号,所有周期均来自同一账号": "Selects the account with the lowest remaining percentage; all periods come from that account", "按未显示原因筛选": "Filter by reason", "按模型": "Per model", "按每日或短周期实际可用额度最低的账号展示,所有周期均来自同一账号": "Shows the account with the lowest effective daily or short-window quota; all periods come from that account", "按规则限制该账号参与转发:没有规则(或全部停用)= 不限制;跳过档自动恢复,禁用档需手动启用。": "Limit this account's participation in forwarding with rules: no rules (or all off) = no limit; skip rules recover automatically, disable rules need manual re-enabling.", "按账号总可用余额比较,不重复累加积分明细": "Compare total available account balances without adding credit details again", "按账号最早到期、且还有剩余的积分包比较": "Compares each account by its earliest credit pack that still has balance and has not expired", "排序": "Sorting", "提供商已停用": "Provider disabled", "提供商显示名,1~{max} 个字符": "Provider display name, 1–{max} characters", "提供商:{name}": "Provider: {name}", "提高优先级": "Raise priority", "插件包已停用": "Plugin pack disabled", "插件已启用但加载失败": "The plugin is enabled but failed to load", "插件未加载": "Plugin not loaded", "插件未安装": "Plugin not installed", "搜索": "Search", "搜索账号": "Search accounts", "搜索账号 / 邮箱 / 备注": "Search account / email / note", "操作失败:{message}": "Operation failed: {message}", "收起": "Collapse", "改动即时生效": "Changes apply immediately", "改协议 / Base URL 会改变它们的转发方式,正在进行的请求可能失败;模型清单与映射在「模型管理」页。": "Changing the protocol / Base URL changes how they forward, and in-flight requests may fail; the model list and mapping are on the Model management page.", "数值越小越先用;": "Lower numbers are tried first; ", "数值越小越先用;{hint}": "Lower numbers are tried first; {hint}", "整个账号": "Entire account", "整轮查询时限": "Overall query timeout", "整轮查询时限必须是 15~180 秒的整数": "The overall timeout must be an integer from 15 to 180 seconds.", "新账号落到组首 / 组尾": "New accounts go to the top / bottom", "旗舰": "Pro", "无上限 · 已用 {used}": "Unlimited · {used} used", "无上限按日计(上游到达上限后仍继续计数,超额如实显示)": "Unlimited, counted daily (counting continues after the upstream limit is reached, and the overage is shown as-is)", "无代理(直连)": "No proxy (direct)", "无数据": "No data", "无法拖动:已启用自动消耗规则({rules})。请先在「消耗顺序」中关闭这些规则,再手动调整。": "Cannot drag while automatic consumption rules are enabled ({rules}). Turn them off under Consumption order before reordering manually.", "无法拖动:当前已按积分到期时间和账号添加时间自动排序。请先在「消耗顺序」中关闭这两项规则,再手动调整。": "Cannot drag: accounts are automatically sorted by credit expiry and added time. Turn off both rules under Consumption order before reordering manually.", "无法拖动:当前已按积分到期时间自动排序。请先在「消耗顺序」中关闭该规则,再手动调整。": "Cannot drag: accounts are automatically sorted by credit expiry. Turn off this rule under Consumption order before reordering manually.", "无法拖动:当前已按账号添加时间自动排序。请先在「消耗顺序」中关闭该规则,再手动调整。": "Cannot drag: accounts are automatically sorted by added time. Turn off this rule under Consumption order before reordering manually.", "无福利额度": "No welfare quota", "既有 Clash Verge 直接引用继续可用;也可在「网络代理」页同步端点,再改选「已保存的代理」。": "Existing direct Clash Verge references remain available. You can also sync endpoints on the Network proxy page and switch to Saved proxies.", "旧数据导入": "Legacy import", "旧版 / 定制站点才需要,新版可留空": "Only older / custom sites need it; leave empty on newer ones", "时": " ", "明天 {clock}": "tomorrow {clock}", "明天 {time}": "tomorrow {time}", "明天到期": "Expires tomorrow", "明细": "Details", "昵称 {name}": "Nickname {name}", "显示账号名": "Show name", "暂无可查询余额的账号": "No accounts with a queryable balance", "暂无可比较余额;查到同单位的数值后自动生效,比例与无限额度不参与": "No comparable balances yet. Sorting applies once numeric balances in the same unit are available; percentages and unlimited quotas are excluded.", "暂无可用积分信息": "No credit information is currently available", "暂无数据:先查询一次余额,之后会自动按到期排序": "No data yet: query the balance once and expiry sorting takes over automatically", "暂无数据:先查询一次余额,可按需启用到期排序": "No data yet: query the balance once; enable expiry sorting if needed", "暂无读数": "No reading available", "暂无账号,请点击右上角「添加账号」": "No accounts yet — click \"Add account\" in the top right", "暂无额度信息": "No quota information", "更多操作": "More actions", "更多设置": "More settings", "更新于 {time}": "Updated {time}", "更新失败": "Update failed", "替换全部规则": "Replace all rules", "替换选中账号的限制规则": "Replace selected accounts’ limiter rules", "最快到期优先": "Soonest expiry first", "最新添加优先": "Newest first", "最早 {soonest} 恢复": "Earliest reset {soonest}", "最早恢复": "Earliest reset", "最早添加优先": "Oldest first", "最晚到期优先": "Latest expiry first", "有 {n} 个账号因提供商插件未就绪,暂未显示": "{n} accounts are hidden because their provider plugins are not ready", "有效期": "Expiry", "有的账号过了 0 点额度就回来 —— 选「自然日」": "Some accounts regain quota after midnight — choose \"Calendar day\"", "服务器本地时区": "Server local time zone", "未使用": "Unused", "未启用套餐池账号,不生成验证码令牌": "No enabled Start Plan accounts; no verification tokens are generated.", "未命名账号": "Unnamed account", "未声明可手动续期;本机引用请在原客户端处理登录态。": "Manual renewal is not declared. For local references, manage sign-in in the original client.", "未接入查询": "Query not integrated", "未显示的账号": "Hidden accounts", "未显示账号": "Hidden accounts", "未查询": "Not queried", "未检测到 Clash Verge": "Clash Verge not detected", "未检测到 Clash Verge 配置": "No Clash Verge config detected", "未被使用": "Not in use", "未触发": "Not triggered", "未触发{current}": "Not triggered{current}", "未触发{usage}{countdown}": "Not triggered{usage}{countdown}", "未设备注名": "No label", "未返回余额数据": "No balance data returned", "未返回可确认的余额数值": "No confirmed numeric balance was returned", "未返回可识别的余额数据": "No recognizable balance data returned", "未返回重置时间": "Reset time unavailable", "未配置": "Not configured", "未配置凭证": "No credential", "本周期 Token 消耗达到限制器的上限,账号已被自动禁用(窗口重置也不恢复,需手动启用)": "This period's Token usage reached the limiter cap, and the account was disabled automatically (a window reset will not restore it; enable it manually)", "本周期 Token 消耗达到限制器的上限,转发时会跳过该账号(窗口重置自动恢复)": "This period's Token usage reached the limiter cap; forwarding skips this account (recovers automatically when the window resets)", "本周期已用": "Used this period", "本地 Token 消耗": "Local token usage", "本地台账里今天还领过这些,但上面的读数里还没有:{plans}(读数刷新可能有延迟)": "Also claimed today according to the local record, but not in the readings above yet: {plans} (the reading may take a while to refresh)", "本地消耗上限必须是大于 0 的安全整数": "The local usage limit must be a positive safe integer", "本地用量保护": "Local usage protection", "本地统计只包含经过本网关的请求,不等于上游账单;清理请求日志不会清零。套餐选择用于限定保护范围,不会强制上游扣指定套餐。": "Local counters include only requests through this gateway, not the upstream bill. Clearing request logs does not reset them. Selecting a plan scopes protection; it does not force the upstream to charge that plan.", "本地请求次数": "Local request count", "本地领取于 {time}": "Claimed locally at {time}", "本提供商不支持积分到期排序,默认保持手动顺序;可按需启用账号添加时间排序。": "This provider does not support credit expiry sorting, so manual order is the default. Enable added-time sorting if needed.", "本提供商默认启用最快到期优先,账号添加时间默认关闭;关闭全部规则可恢复手动顺序。": "This provider defaults to soonest expiry first, with added-time sorting off. Turn off all rules to restore manual order.", "本期活动": "Current events", "本期活动按套餐分别展示,领取资格以上游返回为准": "Current events are listed by plan. Eligibility is determined by the upstream response.", "本组 {n} 个账号的可用余额之和,按整组统计(不受筛选、搜索影响)": "Sum of available balance across all {n} accounts in this group, counted over the whole group (unaffected by filters or search)", "本组 {n} 个账号的百分比读数不能相加,取组内最低的剩余比例(按整组统计,不受筛选、搜索影响)": "Percentage readings for the {n} accounts in this group cannot be added; this shows the lowest remaining percentage (whole group, unaffected by filters or search)", "本组 {n} 个账号的额度概览(按整组统计,不受筛选、搜索影响)": "Quota overview for the {n} accounts in this group (whole group, unaffected by filters or search)", "本组代理": "Proxy for this group", "本组操作": "Group actions", "本组每个账号会分别保存为一个 JSON 文件,包含被筛选隐藏的账号。": "Each account in this group will be saved as a separate JSON file, including accounts hidden by filters.", "权益 {value}": "Grant {value}", "权益 {value} {unit}": "Grant {value} {unit}", "条件即时生效,关掉面板就能看到结果。": "Filters apply instantly — close the panel to see the results.", "条件组 {n}": "Condition group {n}", "来源 {source}": "Source {source}", "查看": "View", "查看因插件未就绪而暂未显示的账号": "Accounts hidden because their provider plugin is not ready", "查看插件状态": "View plugin status", "查询中…": "Checking…", "查询余额": "Query balance", "查询全部账号的余额(含已禁用账号 —— 禁用只表示不参与转发)": "Query the balance of all accounts (including disabled ones — disabled only means they take no part in forwarding)", "查询凭证还没配齐:填好后余额列才有读数,在此之前会显示「未配置」。": "Balance credentials are not complete: the balance column only gets readings once they are filled in; until then it shows \"Not configured\".", "查询失败": "Query failed", "查询失败:{message}": "Query failed: {message}", "查询已成功,但上游未提供额度数据,不代表余额为零。": "The query succeeded, but the provider returned no quota data. This does not mean the balance is zero.", "查询设置": "Query settings", "查询该账号剩余余额(读数显示在余额列)": "Query this account's remaining balance (the reading shows in the balance column)", "查询超时,可重新查询": "Query timed out. You can try again.", "查询间隔": "Query interval", "查询间隔必须是 {min} 秒 ~ 24 小时": "The query interval must be {min} seconds to 24 hours", "桌面端实时登录态请在原客户端更新": "Update this live desktop session in the original client", "桌面端实时登录态(凭证每次从客户端登录态文件读取)": "Live desktop login state (the credential is read from the client login-state file each time)", "模型范围": "Model scope", "正在加载…": "Loading…", "正在探测可领取的套餐…": "Checking for claimable plans…", "正在查询": "Querying", "正在查询本期活动…": "Checking current events…", "正在补铸验证码令牌": "Minting CAPTCHA tokens", "正在读取 Clash Verge 配置…": "Reading Clash Verge config…", "正在读取…": "Loading…", "正在读取代理列表…": "Loading proxy list…", "正在连接上游…": "Connecting to upstream…", "正常": "Normal", "此刻正在使用这个账号的请求数(含还在下发内容的流式请求);为 0 时不显示": "The number of requests currently using this account (including streaming requests still sending content); hidden when 0", "此额度不属于账号当前使用的通道": "This quota does not belong to the account’s current channel", "此额度不属于账号当前使用的通道,切换到对应通道后才参与判定。": "This quota does not belong to the account’s current channel. It is evaluated only after switching to its channel.", "每": "Every", "每 {period}消耗 ≥ {count} Token": "Usage per {period} ≥ {count} tokens", "每周或每月额度已耗尽,短周期实际可用额度按 0% 计算;账号明细保留原始读数": "The weekly or monthly quota is exhausted, so the effective short-window quota is treated as 0%; account details retain the original readings", "每日消耗 ≥": "Daily usage ≥", "每日消耗 ≥ {count} Token(每天 0 点重置)": "Daily usage ≥ {count} tokens (resets at midnight)", "每日重置": "Resets daily", "每日重置(额度按周期回满,不是作废)": "Resets daily (the quota refills each cycle; it is not voided)", "每条请求换一个出口(按顺序轮流),上游看到的 IP 因此是变化的;出口的地址与端口由「网络代理」页管理": "Each request moves to the next exit in turn, so the upstream sees a changing IP; exit addresses and ports are managed on the Network proxy page", "每组共用一个触发动作;第二条条件起可选择「与/或」。与优先于或,下面会显示明确分组。各条件组独立生效。": "Each group shares one action. From the second condition onward, choose AND or OR. AND takes precedence over OR; grouping is shown below. Each group takes effect independently.", "没有匹配「{kw}」的账号": "No accounts match \"{kw}\"", "没有可全选的账号": "No accounts to select", "没有可用出口": "No exits available", "没有适用于本次操作的账号": "No accounts eligible for this operation", "没有选中的账号": "No accounts selected", "活动套餐": "Start Plan", "活动套餐的推理端点要求每条请求带一个阿里云验证码令牌;令牌由本应用在后台静默铸造,界面关闭时无法铸造": "The Start Plan inference endpoint requires an Alibaba Cloud captcha token on every request; the app mints tokens silently in the background and cannot mint while the UI is closed", "活动套餐(Start Plan)": "Start Plan", "活动套餐(Start Plan)— 走官方活动端点,用活动里领到的额度": "Start Plan — uses the official event endpoints and the quota claimed in the event", "活动时间:{time}": "Event period: {time}", "活动期内每天发一份新套餐;同一份当天重复领取会提示「已领取过」,次日可再领。领取要走一次人机验证(滑块)。": "During the event a new plan is issued every day; claiming the same one again the same day returns \"already claimed\", and you can claim again the next day. Claiming goes through a human verification (slider).", "活动期内每天发一份新套餐;已领的套餐不重复提交,次日可领新套餐。只有主动领取时才会进行人机验证。": "A new plan is offered each day during the campaign. Claimed plans are not submitted again. Human verification runs only when you choose to claim.", "活动目录合并账号预览、营销活动与匿名探测。已领取仅依据领取记录或账号名下套餐;状态待确认时可尝试领取,资格以上游返回为准。": "The event catalog combines account previews, marketing events, and anonymous discovery. Claimed status requires a claim record or an account-owned plan. If the status is unconfirmed, you can try claiming; eligibility is determined by the upstream response.", "测试中…": "Testing…", "测试出口": "Test exit", "消耗顺序": "Consumption order", "添加 新→旧": "Added new→old", "添加 旧→新": "Added old→new", "添加规则": "Add rule", "添加限制": "Add limit", "清掉本机的限流标记,立刻重新尝试该模型(上游若仍在限流会再次被标记)": "Clear the local rate-limit flag and retry this model immediately (it will be flagged again if the upstream is still rate-limiting)", "清掉该账号全部模型的限流标记": "Clear the rate-limit flags of every model on this account", "清空全部规则": "Clear all rules", "清空搜索与三个筛选档位,回到全部账号": "Clear the search box and the three filter groups, back to all accounts", "清空选中账号的限制规则": "Clear selected accounts’ limiter rules", "清除": "Clear", "清除失败:{error}": "Clear failed: {error}", "清除失败:{message}": "Clear failed: {message}", "清除已配置的 API Key(转发时会因缺少凭证被跳过)": "Clear the configured API Key (forwarding will skip the account for lack of a credential)", "清除已配置的 {label}": "Clear the configured {label}", "清除已配置的余额查询凭证": "Clear the configured balance query credential", "清除标记": "Clear flag", "清除筛选": "Clear filters", "清除该账号的冷却与全部模型限流标记": "Clear this account's cooldown and all model rate-limit flags", "滚动窗口": "Rolling window", "点击{action}各模型的限流明细": "Click to {action} the per-model rate-limit details", "点击查看各模型的限流明细": "Click to view per-model rate-limit details", "点击查看账号冷却与模型限流明细": "Click to view account cooldown and model rate-limit details", "状态": "Status", "状态 {status}": "Status {status}", "状态待确认": "Status unconfirmed", "状态未知": "Unknown", "生效 {time}": "Starts {time}", "生效中": "Active", "生效至到期累计(不自动回满)": "Cumulative from activation to expiry (no automatic refill)", "用 NewAPI 站点的个人访问令牌查询账户余额(不是这条账号的上游 API Key)。令牌在站点的「个人设置」里生成,只有旧版 / 定制站点才需要额外填用户 ID。": "Queries the account balance with a NewAPI site personal access token (not this account's upstream API key). The token is generated under the site's \"Personal settings\"; only older / custom sites additionally need a user ID.", "用 bigmodel.cn 控制台的访问令牌查询账户余额(人民币元)。令牌是登录后浏览器 Cookie `bigmodel_token_production` 的值:开发者工具 → 应用(Application)→ Cookie 里复制。": "Queries the account balance (CNY) with an access token from the bigmodel.cn console. The token is the value of the browser cookie `bigmodel_token_production` after logging in: DevTools → Application → Cookies, then copy it.", "用下面的规则统一替换各账号的全部规则,执行前会再次确认。": "Replaces every account’s entire rule list with the rules below; confirmation is required before running.", "用商汤日日新控制台的账号密码查询(与推理用的 API Key 不是同一套)。网关会自动换取登录票并缓存,过期后自动重登,不需要手动维护。": "Queries with the SenseNova console account and password (not the same credentials as the inference API key). The gateway exchanges them for a login ticket and caches it, logging in again automatically when it expires — no manual upkeep.", "用户名": "Username", "用这条账号的 API Key 查询订阅用量,不需要额外配置;读数展开成 5 小时 / 每周 / 每月三个窗口。": "Queries subscription usage with this account's API key; no extra setup. The reading expands into 5-hour / weekly / monthly windows.", "用这条账号的 API Key 查询,不需要额外配置。": "Queries with this account's API key; no extra setup.", "用这条账号的 API Key 生成签名后查询账户余额(美元),不需要额外配置。要求 API Key 是 z.ai 的「id.secret」形态(控制台生成的 Key 就是)。": "Signs with this account's API key and queries the balance (USD); no extra setup. The API key must be in z.ai's \"id.secret\" form (which is what the console generates).", "留空 = 不修改,清除用右边的按钮": "Leave empty to keep the current one; clear with the button on the right", "登录 / 导入一个新账号": "Sign in / import a new account", "登录授权已失效,请重新登录;自动续期无法恢复已过期或已撤销的刷新令牌。": "Sign-in authorization is no longer valid. Sign in again; automatic renewal cannot restore an expired or revoked refresh token.", "登录授权截止:{time};自动续期不会延长此时间,届时需重新网页登录。": "Sign-in authorization expires at {time}. Automatic renewal does not extend this deadline; sign in again through the browser when it expires.", "百分比阈值必须在 0~100 之间": "The percentage threshold must be between 0 and 100", "直连": "Direct", "确定删除选中的 {count} 个账号?此操作不可恢复,账号的登录态会一并移除。": "Delete the selected {count} accounts? This cannot be undone, and their login state will be removed as well.", "确定清空 {count} 个账号的全部限制规则?余额与 Token 将不再设限;已禁用的账号不会自动启用。": "Clear all limiter rules from {count} accounts? Balance and Token limits will be removed; disabled accounts will not be enabled automatically.", "确定清除全部模型的限流标记?": "Clear rate-limit flags for all models?", "确定清除模型「{model}」的限流标记?": "Clear the rate-limit flag for model \"{model}\"?", "确定清除该账号的冷却与全部模型限流标记?": "Clear this account's cooldown and all model rate-limit flags?", "禁用": "Disable", "禁用整个账号(手动恢复)": "Disable the entire account (manual recovery)", "禁用该账号(需手动重新启用)": "Disable the account (manual re-enabling required)", "禁用这一组里的全部账号(含被筛选隐藏的)": "Disable every account in this group (including ones hidden by filters)", "福利按限时活动下发,不是每个账号都有 —— 正常状态,不是查询失败": "Welfare is issued through limited-time events and not every account has it — this is a normal state, not a query failure", "福利日额度": "Daily welfare quota", "福利网关未读到:{error}": "Failed to read the welfare gateway: {error}", "秒": "seconds", "秒;默认 60 秒,包含重试等待,多步骤查询可适当延长。": "seconds; defaults to 60, including retry waits. Increase for multi-step queries if needed.", "积分": "Points", "积分到期时间": "Credit expiry", "积分包": "Point pack", "积分明细": "Points details", "积分查询已复用转发用的登录凭证,这里通常留空即可。只有旧版本填过、或从旧代理导入过凭证时才有值": "Points queries reuse the login credential used for forwarding, so this is usually left blank. It only has a value if an older version filled it in or credentials were imported from the old proxy", "稍后由后台判定自动禁用": "Disabled automatically after a background check", "窗口 = 今天 0 点起(本地时区),0 点重置即清零恢复;按账号在 requests 表聚合": "Window = from midnight today (local time); the midnight reset clears it and restores the account; aggregated per account in the requests table", "窗口内已用 {used} / {limit} Token,转发时会跳过该账号(重置后自动恢复)": "{used} / {limit} tokens used in the window; forwarding skips this account (recovers automatically after the reset)", "窗口对齐自然时间(整点 / 整 N 分钟一轮回),重置即清零恢复;按账号在 requests 表聚合": "The window aligns to wall-clock time (rolls over on the hour / every N minutes); a reset clears it and restores the account; aggregated per account in the requests table", "窗口数量超过展示上限,仅展示部分读数": "The window count exceeds the display limit; only some readings are shown", "窗口重置时间": "Window reset times", "窗口长度": "Window length", "窗口额度与时间": "Quota windows and timing", "端口": "Port", "端口准备中": "Port pending", "第 {rank} 顺位": "Position {rank}", "等待当前验证码流程结束": "Waiting for the current verification to finish", "筛选": "Filter", "筛选 / 搜索 / 分页生效时组顺位不可拖动(别家的组整组不可见,落点没法定位)": "Group order cannot be dragged while a filter / search / paging is active (other groups are hidden entirely, so the drop target cannot be located)", "系统代理信息无效,请手动填写。": "The system proxy information is invalid. Enter it manually.", "系统代理协议暂不支持自动填入,请手动配置 HTTP 或 SOCKS5 代理": "This system proxy protocol cannot be imported. Configure an HTTP or SOCKS5 proxy manually.", "系统代理地址无效,请手动填写": "The system proxy address is invalid. Enter it manually.", "系统代理认证信息无法读取,请手动填写": "The system proxy credentials could not be read. Enter them manually.", "累计起点": "Counting start", "级联删除名下全部账号,不可恢复": "Cascade-deletes all its accounts; cannot be undone", "组内先后:按住左边的把手上下拖动即可调整;整组的先后拖分组带的把手": "Within the group: hold the handle on the left and drag up / down to reorder; for the order of whole groups, drag the group band's handle", "组内并发上限": "Group concurrency limit", "组内手动顺序": "Manual order within the group", "组内第 {rank} 位": "Position {rank} in group", "组顺位已锁定": "Group order locked", "组顺位:越小越先用(拖动分组带调整)": "Group position: smaller goes first (drag the group band to adjust)", "统一设置自动查询的开关、间隔和失败重试次数;不会复制或覆盖余额查询凭证。": "Sets the auto-query switch, interval, and retry count; balance query credentials are never copied or overwritten.", "统计周期": "Counting period", "统计周期尚未开始或已经结束": "The counting period has not started or has ended", "统计窗口必须是 1 分钟~31 天": "The counting window must be between 1 minute and 31 days", "统计结束时间必须晚于开始时间": "The counting end time must be later than the start time", "缓存用量未知,不按零计量,也不用于推算余额": "Cached usage is unknown; it is neither counted as zero nor used to infer balance", "编码套餐(Coding Plan)": "Coding Plan", "编码套餐(Coding Plan)— 走开放平台端点,消耗开放平台的额度(订阅套餐 / 资源包 / 充值余额)": "Coding Plan — uses the open-platform endpoints and consumes open-platform quota (subscription plan / resource packs / prepaid balance)", "编码套餐(Coding Plan)— 走开放平台端点,用自己订阅的额度": "Coding Plan — uses the open-platform endpoints and your own subscription quota", "编辑": "Edit", "编辑限制": "Edit limit", "编辑限制条件": "Edit limit condition", "网关电脑未检测到可导入的系统代理;请手动填写,或选择已保存的代理。": "No importable system proxy was found on the gateway machine. Enter one manually or choose a saved proxy.", "网络": "Network", "网页端会逐个下载文件;浏览器提示时请允许本网站下载多个文件。": "The web panel downloads files individually. If prompted, allow this site to download multiple files.", "自动查询余额": "Auto-query balance", "自动查询余额(按下面的间隔自动刷新余额列的读数)": "Auto-query balance (refresh the balance column reading at the interval below)", "自定义代理": "Custom proxy", "自定义代理…": "Custom proxy…", "自定义:": "Custom: ", "自然周": "Calendar week", "自然日": "Calendar day", "自然日(每天 0 点)": "Calendar day (00:00 daily)", "自然月": "Calendar month", "补全请求": "Completion requests", "补铸失败:{error}": "Token minting failed: {error}", "规则操作": "Rule operation", "解析失败": "Resolve failed", "触发动作": "Action", "触发后": "Then", "触发条件": "Condition", "计入 {counted}/{total}": "counted {counted}/{total}", "订阅已移除": "Subscription removed", "订阅统计未读到:{error}": "Failed to read subscription stats: {error}", "记录里没有过期时间": "No expiry time in the record", "设为首选": "Set as first", "设置并发上限": "Set concurrency limit", "访客账号没有积分体系,因此不查询余额(登录账号可以查)": "Guest accounts have no points system, so no balance is queried (a signed-in account can be queried)", "访问令牌": "Access token", "试用版": "Trial", "该上游无需鉴权": "This upstream needs no auth", "该上游无需鉴权(转发与拉取模型都不发送鉴权头)": "This upstream needs no auth (no auth header is sent when forwarding or fetching models)", "该提供商尚未接入余额查询": "Balance queries are not integrated for this provider", "该提供商没有余额查询": "This provider has no balance query", "该提供商没有余额查询;可按 Token 消耗设置限制。": "This provider has no balance query; you can limit Token usage instead.", "该提供商的推理转发尚未接入,账号不参与转发": "Inference forwarding for this provider is not wired up yet; the account takes no part in forwarding", "该账号不支持刷新 Token 或未提供刷新凭证": "This account does not support token refresh or has no refresh credentials", "该账号出网走的代理(Clash 出口 / 自定义 / 直连);点击可修改": "The proxy this account uses for outbound traffic (Clash exit / custom / direct); click to change", "该账号出网走的代理(已保存的代理 / 自定义 / 直连);点击可修改": "Proxy used by this account (saved proxy / custom / direct); click to change.", "该账号当前限流中的模型;点徽章看明细": "Models this account is currently rate-limited on; click the badge for details", "该账号没有套餐登录态(jwt),套餐池通道会失败:请重新登录该账号": "This account has no plan login state (JWT); the plan-pool channel will fail — sign in to this account again", "该账号没有套餐登录态(jwt),活动套餐会失败:请重新登录该账号": "This account has no plan login state (JWT); Start Plan will fail — sign in to this account again", "该账号没有福利模型额度(福利按活动下发,不是每个账号都有)": "This account has no welfare model quota (welfare is issued through events and not every account has it)", "该账号没有积分类读数(额度只有福利 token 池)": "This account has no points-class reading (its quota is only the welfare token pool)", "该账号的额度只有福利 token 池(见余额格那两行),订阅统计没有积分类计量表": "This account's quota is only the welfare token pool (see the two lines in the balance cell); the subscription stats have no points-class meter", "该额度中的全部模型": "All models in this quota", "请先勾选要操作的账号": "Select the accounts to act on first", "请先选择 Clash Verge 出口": "Select a Clash Verge exit first", "请先选择已保存的代理": "Select a saved proxy first", "请填写代理主机地址": "Enter the proxy host address", "请填写提供商名称": "Enter the provider name", "请填写提供商的 Base URL": "Enter the provider's Base URL", "请填写查询间隔": "Enter the query interval", "请填写重置周期": "Enter the reset period", "请至少添加一条限制规则;清空请使用清空操作": "Add at least one limiter rule; use the clear operation to remove all rules", "请选择代理": "Select a proxy", "请选择出口": "Select an exit", "读取中…": "Loading…", "读取失败:{error}": "Failed to load: {error}", "读取系统代理失败": "Failed to read the system proxy", "读取网关电脑当前的 HTTPS 系统代理,填入自定义地址;后续系统设置变化不会自动同步。": "Copies the gateway machine's current HTTPS system proxy into the custom fields. Later system changes are not synced automatically.", "读取自 {dir};端口由 Clash Verge 管理,这里实时同步": "Read from {dir}; the port is managed by Clash Verge and syncs live here", "读数来自自动余额查询;与余额列同一数字口径,严格小于才触发(等于阈值仍可用)": "The reading comes from the auto balance query; same reading as the balance column — the rule triggers only when strictly below it (equal to the threshold is still usable)", "读数里没有套餐清单(免费账号、或套餐的上游状态还没刷新;可点右上角「查询余额」重读)": "The reading contains no plan list (free account, or the upstream plan state is not refreshed yet; click \"Check balance\" at the top right to re-read)", "读数里没有额度桶,这里按套餐权益里的已用 / 总量显示(上游给的数)": "The reading has no quota bucket; this shows the used / total from the plan entitlement (the upstream figures)", "调整到全局队列第一位": "Move to the front of the global queue", "调整顺序失败:{message}": "Failed to reorder: {message}", "账号": "Accounts", "账号不存在,请刷新后重试": "Account not found; refresh and try again", "账号不存在,请刷新后重试。": "Account not found; refresh and try again.", "账号主额度": "Account primary quota", "账号余额单位不一致,暂不按余额排序,继续比较其他规则": "Account balances use different units. Balance sorting is skipped; other rules still apply.", "账号全部模型暂时停止转发 · 到恢复时间自动解除": "All models on this account are paused · Resumes automatically at the recovery time", "账号冷却": "Account cooldown", "账号列表刷新不可用,请重新打开页面": "Account refresh is unavailable. Reopen the page", "账号列表刷新失败": "Failed to refresh the account list.", "账号列表刷新接口不可用,请重新打开页面": "Account list refresh is unavailable. Reopen the page.", "账号列表加载失败,请点击「刷新」重试": "Failed to load accounts. Click \"Refresh\" to retry", "账号列表加载失败,请点击「刷新」重试:{message}": "Failed to load accounts. Click \"Refresh\" to retry: {message}", "账号列表已刷新": "Account list refreshed", "账号名 / 邮箱 / 备注": "Account name / email / note", "账号套餐到期:{time}": "Account plan expires: {time}", "账号导出失败:{reason}": "Account export failed: {reason}", "账号已保存,但列表刷新失败:{error}": "The account was saved, but the list failed to refresh: {error}", "账号已保存,但提供商未更新:{error}": "Account saved, but the provider was not updated: {error}", "账号数据仍然保留,无需重新添加。安装或启用对应插件并成功加载后,账号会自动恢复显示。": "Your account data is kept; do not add the accounts again. They will reappear automatically once the required plugins are installed or enabled and loaded successfully.", "账号显示名称": "Account display name", "账号更新接口不可用,请重新打开页面": "Account updates are unavailable. Reopen the page.", "账号更新结果未确认,请刷新后核对设置": "The account update could not be confirmed. Refresh and check the settings.", "账号正在导出,请稍候": "Accounts are being exported. Please wait.", "账号添加时间": "Account added time", "账号级条件组已触发;点击查看限制器": "An account-wide condition group has triggered; click to view the limiter", "账号表": "Accounts table", "账号设置": "Account settings", "账号设置 · {name}": "Account settings · {name}", "账号设置分组": "Account settings sections", "账号邮箱": "Account email", "账号页与全局路由共用此消耗顺序,网关按最新余额数据选路,不需要保持页面打开。模型独立顺序会覆盖全局。": "Accounts and global routing share this consumption order. The gateway routes using the latest balance data, even when the page is closed. Independent model order overrides the global order.", "跨账号批量配置仅支持通用条件;套餐实例不能直接复制到其他账号。": "Bulk configuration across accounts supports only general conditions. Plan instances cannot be copied directly to other accounts.", "跳过 {count} 个:": "{count} skipped: ", "跳过该账号(余额回升自动恢复)": "Skip this account (recovers automatically when the balance rises)", "跳过该账号(自动恢复)": "Skip this account (recovers automatically)", "跳过该账号(重置后自动恢复)": "Skip this account (recovers automatically after a reset)", "跳过(自动恢复)": "Skip (automatic recovery)", "转发优先级": "Forwarding priority", "转发走套餐池(Start Plan)通道(zcode.z.ai 的 Anthropic 端点,用账号里的体验额度 / 活动领取额度);在账号设置里可切回编码套餐": "Forwarding uses the plan-pool (Start Plan) channel (zcode.z.ai's Anthropic endpoint, with the account's trial quota / event grants); you can switch back to Coding Plan in account settings", "转发走活动套餐通道(zcode.z.ai 的 Anthropic 端点,用账号里领到的额度);在账号设置里可切回编码套餐": "Forwarding uses the Start Plan channel (zcode.z.ai's Anthropic endpoint, with the quota claimed in the account); you can switch back to Coding Plan in account settings", "转发顺序": "Forwarding order", "轮询全部代理节点": "Rotate across all proxy nodes", "轮询的代理": "Proxies to rotate", "轮询至少要选择一条代理(或改选「全部」)": "Select at least one proxy to rotate (or switch back to \"All\")", "轮询(换 IP)": "Rotate (change IP)", "还有 {d} 天": "{d}d left", "还有 {h} 小时": "{h}h left", "还有 {h} 小时 {m} 分": "{h}h {m}m left", "还有 {n} 分钟": "{n} min left", "还没有代理(去「网络代理」页添加)": "No proxies yet (add one on the Network proxy page)", "还没有余额读数(已自动查询一次,稍候;也可以点右上角「查询余额」重读)": "No balance reading yet (one query has been started automatically, please wait; you can also click \"Check balance\" at the top right)", "还没有保存的代理": "No saved proxies yet", "还没有批量规则,请先添加限制或从所选账号复制。": "No bulk rules yet; add a limit or copy from a selected account.", "还没有条件组:账号照常参与转发,不设置额度保护。": "No condition groups yet. The account forwards requests normally without quota protection.", "还没有账号,去桌面端添加": "No accounts yet. Add one on desktop.", "还没有账号,请点击「添加账号」": "No accounts yet. Click “Add account”.", "还没有限制规则:账号照常参与转发,余额与 Token 消耗都不设上限。": "No limit rules yet: the account forwards as usual, with no cap on balance or Token usage.", "这一份今天已经领过了(重复领取上游会回「已领取过」)": "This one was already claimed today (claiming it again returns \"already claimed\" from upstream)", "这一家查不到积分到期时间": "This provider has no credit expiry data", "这一家没有可用余额查询": "This provider does not support available balance queries", "这一栏改的是": "This section changes ", "这一段按提供商出现:有什么配什么。": "This section appears per provider: configure whatever it offers.", "这一类现在没有账号": "No accounts in this category", "这一组开着排序规则:关掉规则后才能手动拖": "Auto-sort is on for this group: turn the rules off to drag manually", "这个账号的余额走窗口限额通道(只配了编码套餐 API Key):只有每 N 小时的剩余比例,读不到套餐清单": "This account reads its balance through the window-limit channel (only a Coding Plan API Key is configured): it only has the remaining percentage of each N-hour window, not the plan list", "这会{what}所有启用中的账号,转发将不可用。确定继续?": "This will {what} all enabled accounts, and forwarding will be unavailable. Continue?", "这是既有配置(直接引用 Clash 出口,不经过代理池)。推荐改用上面的": "This is a legacy configuration (it references a Clash exit directly, bypassing the proxy pool). The recommended alternative is ", "这条自定义账号既没有 API Key,也没有勾选「无需鉴权」:转发时会被跳过,该提供商下的模型也不会出现在模型列表里。去账号「设置」里补上 Key,或勾选「该上游无需鉴权」": "This custom account has neither an API Key nor \"This upstream needs no auth\" checked: forwarding will skip it, and this provider's models will not appear in the model list. Add a Key in the account's Settings, or check \"This upstream needs no auth\"", "这条账号是谁、排第几、能不能接请求。": "Who this account is, where it sits in the queue, and whether it can take requests.", "这条账号访问上游走哪条线路。": "Which route this account takes to the upstream.", "这里只影响「显示」:卸载或停用插件不会删除账号;重新安装、启用并成功加载后,这些账号会自动回到列表。": "This affects display only: uninstalling or disabling a plugin never deletes accounts. Install, enable and load the plugin successfully and they come back automatically.", "连接失败": "Connection failed", "连接数": "Connections", "追加规则(保留原有)": "Append rules (keep existing)", "追加限制规则": "Append limiter rules", "选中多个模型时,每个模型单独累计、单独比较阈值;不合并用量。": "When multiple models are selected, usage and thresholds are evaluated separately for each model. Usage is not combined.", "选择": "Select", "选择所选账号作为模板(可选)": "Choose a selected account as a template (optional)", "选择要轮询的代理(可多选)": "Select proxies to rotate (multiple)", "逐个刷新所选账号的 Token,未到期也会尝试刷新;不改变启用状态、代理或转发顺序。": "Refresh tokens for the selected accounts one at a time, even if they have not expired. Enabled status, proxies, and forwarding order are kept.", "逐窗口最低:{list}": "Lowest per window: {list}", "逐请求轮换出口(换 IP):OpenCode Zen 免费档按 IP 限流,单个 IP 的额度用完会对它一律 429": "Rotates the exit per request (changing the IP): the OpenCode Zen free tier limits by IP — once an IP runs out of quota, requests from it all get 429", "通用额度/本地保护": "General quota / local protection", "邮箱 {email}": "Email {email}", "部分余额信息暂未获取;未显示上游原始诊断": "Some balance information is unavailable; raw upstream diagnostics are not shown", "部分来源查询失败,已保留其他结果:{message}": "Some sources could not be queried; other results were retained: {message}", "部分来源查询失败,暂不能确认本期活动或领取状态": "Some sources could not be queried, so current events or claim status cannot be confirmed yet.", "部分窗口偏低": "Some windows are low", "部分窗口未返回可识别读数": "Some windows returned no recognizable readings", "部分读数未知": "Some readings are unknown", "部分额度读数暂不可用。": "Some quota readings are temporarily unavailable.", "配置已变更,请重新查询": "Settings changed. Query again to update the balance.", "重新安装这个插件后自动回来": "Reinstall this plugin and they return automatically", "重新读取": "Reload", "重新读取该账号的余额与套餐(走余额查询那条链)": "Re-read this account's balance and plans (goes through the balance query chain)", "重新读取账号列表和插件状态,不刷新 Token 或查询余额": "Reload the account list and plugin status without refreshing tokens or querying balances", "重查": "Retry", "重置": "Reset", "重置 {date}": "Resets {date}", "重置也不恢复,需手动启用": "A reset will not restore it; enable it manually", "重置周期必须是 30 分钟 ~ 24 小时": "The reset period must be 30 minutes to 24 hours", "重置方式": "Reset mode", "重置时区": "Reset time zone", "重置详情": "Reset details", "长期有效": "Long-lived", "间隔单位": "Interval unit", "阈值": "Threshold", "降低优先级": "Lower priority", "限制器": "Limiter", "限制器 · {n} 个模型": "Limiter · {n} models", "限制器 · 账号已跳过": "Limiter · Account skipped", "限制器:{window}已用 {used} / {threshold} Token": "Limiter: {window} — {used} / {threshold} tokens used", "限制指标": "Limit metric", "限制类型": "Limit type", "限制阈值必须是大于 0 的数字": "The limit threshold must be a number greater than 0", "限制阈值必须是非负有限数字": "The threshold must be a non-negative finite number", "限流": "Rate limit", "限流中": "Rate-limited", "限流已清除": "Rate limit cleared", "限流明细": "Rate-limit details", "限额": "Limit", "限额状态": "Limit status", "隐藏账号名(名字显示为星号)": "Hide name (shown as asterisks)", "需要人机验证时,在该账号的「套餐明细」中主动开始验证。": "When human verification is required, start it manually in this account’s Plan details.", "需要重新登录": "Sign-in required", "需要验证码时由打开着的主窗口或浏览器面板补铸;库存、补铸状态和失败原因分别显示": "When verification is required, the open main window or browser panel mints tokens; stock, minting status and errors are shown separately", "需重登": "Relogin", "顺序": "Order", "顺序未保存:{message}": "Order not saved: {message}", "领取 {time}": "Claimed {time}", "额度": "Quota", "额度充足": "Quota available", "额度来源": "Quota source", "额度查询暂不可用。": "Quota queries are temporarily unavailable.", "额度查询未完成,未显示上游原始诊断。": "The quota query did not complete. Raw upstream diagnostics are not shown.", "额度窗口读数来自开放平台监控通道(套餐 JWT 那条通道没有额度桶):读的是每 N 小时 / 每周窗口的剩余比例": "The quota-window reading comes from the open-platform monitoring channel (the Coding Plan JWT channel has no quota bucket): it reads the remaining percentage of each N-hour / weekly window", "额度详情": "Quota details", "首次失败后额外重试的次数;默认 3 次,0 = 不重试。手动和自动查询均生效,全部失败后才显示失败并记录日志。": "Additional attempts after the first failure; defaults to 3, or 0 for no retries. Applies to manual and automatic queries. Failure is shown and logged only after all attempts fail.", "验证失败:{error}": "Verification failed: {error}", "验证码令牌池接口不可用": "CAPTCHA token pool interface unavailable", "验证码令牌:{counts}": "Captcha tokens: {counts}", "高级请求": "Premium requests", "魔粒": "Magicubes", "默认仅开启最快到期优先;可用余额和账号添加时间默认关闭。": "Only earliest expiry first is enabled by default. Available balance and account creation time sorting are off.", "默认保持手动顺序,可按需开启支持的自动排序规则。": "Manual order is the default. Enable supported automatic sorting rules as needed.", "默认展开 / 收起": "Default expanded / collapsed", "({n} 个未配置查询凭证)": " ({n} without query credentials)", "(不可用)": " (unavailable)", "(其他订阅,可能未生效)": " (other subscription, may not be active)", "(只测了前 {limit} 个,还有 {rest} 个未测)": " (only the first {limit} were tested; {rest} left untested)", "(名下 {count} 个账号共用)": " (shared by its {count} accounts)", "(已在 Clash 中禁用)": " (disabled in Clash)", "(库存为空,等待补铸;请保持主窗口或浏览器面板打开)": " (stock empty, awaiting refill; keep the main window or browser panel open)", "(未启用套餐池账号,暂不补铸)": " (no enabled Start Plan account; minting paused)", "(激活事件补报失败,可能影响领取资格:{message})": "(Reporting the activation event failed; this may affect claim eligibility: {message})", "+ 添加条件": "+ Add condition", "+ 添加限制": "+ Add limit", ",{countdown}重置": ", {countdown} until reset", ",只对 OpenCode Zen 这类上游有意义,别的家请关掉。": ", so it only matters for upstreams like OpenCode Zen — turn it off for other providers.", ",已达到上限": ", limit reached", ":到「网络代理」页的「订阅管理」里点「同步 Clash Verge」把出口导进池后即可选 —— 那样能集中测试、也能被多个账号共用。": ": on the Network proxy page, open \"Manage subscriptions\" and click \"Sync Clash Verge\" to import exits into the pool and then select them — that centralizes testing and lets several accounts share them.", ";": "; ", "{count} 个分区有未保存的更改": "Unsaved changes in {count} sections", "{count} 个账号共用": "Shared by {count} accounts", "{count} 个账号共用提供商的连接配置。": "{count} accounts share this provider's connection settings.", "{count} 个账号共用连接配置": "Connection settings shared by {count} accounts", "✅ 已改回跟随提供商的 Base URL": "✅ This account follows the provider's Base URL again", "「{name}」名下 {count} 个账号共用这些连接设置。修改协议或 Base URL 可能中断正在进行的请求。": "These connection settings are shared by {count} accounts under {name}. Changing the protocol or Base URL may interrupt requests in progress.", "「{name}」名下 {count} 个账号共用;修改协议或地址可能中断正在进行的请求。": "Shared by {count} accounts under {name}. Changing the protocol or address may interrupt requests in progress.", "仅当前账号": "This account only", "仅用于 OpenCode Zen 这类上游,普通提供商请保持关闭。": "Only for upstream services such as OpenCode Zen. Leave this off for other providers.", "代理只作用于当前账号,不改变其他账号的出网方式。": "The proxy applies only to this account and does not change how other accounts connect.", "余额读数也是限制器余额规则的数据来源。": "Balance readings also supply the data used by balance-based limiter rules.", "使用密钥访问上游": "Use a key to access the upstream service", "保存后将移除密钥,转发与拉取模型都不发送鉴权头。请确认上游确实无需凭证。": "Saving removes the key and omits authentication headers when forwarding requests or fetching models. Make sure the upstream service does not require credentials.", "保存提供商共用配置?": "Save shared provider settings?", "保存更改": "Save changes", "共用": "Shared", "关闭后不参与转发,余额查询不受影响。": "When disabled, this account is excluded from forwarding. Balance queries are unaffected.", "凭证设置": "Credentials", "出网方式": "Connection method", "前往模型管理": "Go to model management", "前往模型管理会关闭账号设置,尚未保存的修改不会生效。": "Going to model management closes account settings and discards unsaved changes.", "包含提供商共用配置,将影响 {count} 个账号": "Includes shared provider settings affecting {count} accounts", "原密钥不会回显;更换密钥不会改变账号 ID。": "The existing key is never displayed. Replacing it does not change the account ID.", "各分区的更改将统一保存": "Changes across all sections are saved together", "启用账号": "Enable account", "在账号列表中拖动分组或行首把手,调整转发顺序。": "Drag a group or a row handle in the account list to change the forwarding order.", "基本信息": "Basic information", "填写接口基址,无需追加 {path}。": "Enter the API base URL without appending {path}.", "将同时删除名下 {count} 个账号,无法恢复。": "Also deletes all {count} accounts under this provider. This cannot be undone.", "开启后会改写请求体,补齐会话头与占位工具;未填密钥时使用匿名凭证 public。": "When enabled, request bodies are rewritten to add session headers and placeholder tools. Without a key, the anonymous credential public is used.", "当前没有凭证,转发时会跳过此账号。请填写密钥或选择「无需鉴权」。": "This account has no credentials and will be skipped when forwarding. Enter a key or select No authentication.", "当前账号": "Current account", "所有分区中尚未保存的修改都会被放弃。已确认的独立清除操作不受影响。": "Unsaved changes in all sections will be discarded. Previously confirmed standalone clearing operations are unaffected.", "提供商名称": "Provider name", "改回跟随": "Follow provider", "改回跟随提供商": "Follow provider", "改回跟随提供商?": "Follow the provider again?", "新密钥待保存": "New key pending save", "无需鉴权": "No authentication", "显示新输入的密钥": "Show the newly entered key", "本地服务或无需凭证的上游": "Local or credential-free upstream services", "查询凭证": "Query credentials", "模型清单与映射在「模型管理」中维护。": "Manage model lists and mappings in Model management.", "模拟 OpenCode 官方客户端": "Emulate the official OpenCode client", "正在保存…": "Saving…", "正在编辑提供商共用配置": "Editing shared provider settings", "没有未保存的更改": "No unsaved changes", "没有规则或全部停用时不限制;跳过后自动恢复,禁用后需手动启用。": "No limits apply if there are no rules or all rules are off. Skipped accounts recover automatically; disabled accounts must be enabled manually.", "清除余额查询凭证?": "Clear balance query credentials?", "清除已存 API Key?": "Clear the saved API Key?", "清除已存密钥": "Clear saved key", "清除查询凭证?": "Clear query credentials?", "用于当前账号的对话、余额查询、模型拉取、模型测试、签到及凭证刷新等上游请求。留空使用提供商默认值;可选预置或直接填写。": "Applies to this account's upstream requests, including chats, balance queries, model fetching and testing, check-ins, and credential refreshes. Leave empty for the provider's defaults; select a preset or enter a value.", "用明确的规则保护当前账号的额度。": "Protect this account's quota with explicit rules.", "留空不修改,替换后点击「保存更改」生效。": "Leave blank to keep the key. A replacement takes effect after clicking Save changes.", "留空保留当前密钥,输入新密钥以替换": "Leave blank to keep the current key, or enter a replacement", "确认保存": "Confirm save", "确认后立即生效,不受底部保存按钮控制。没有凭证且未开启「无需鉴权」时,此账号将被转发跳过。": "This takes effect immediately after confirmation, independently of the Save button. Without credentials or No authentication, this account will be skipped when forwarding.", "确认后立即生效,不受底部保存按钮控制。通常可继续复用转发用的登录凭证。": "This takes effect immediately after confirmation, independently of the Save button. The login credentials used for forwarding can usually be reused.", "确认后立即生效,余额查询可能显示「未配置」。取消账号设置不会恢复已清除的凭证。": "This takes effect immediately after confirmation. Balance queries may show Not configured. Canceling account settings will not restore cleared credentials.", "确认弹窗不可用,请重新打开页面": "The confirmation dialog is unavailable. Reopen the page.", "管理当前账号的凭证与可用套餐。": "Manage this account's credentials and available plans.", "统一管理提供商的协议、地址与兼容选项。": "Manage the provider's protocol, address, and compatibility options in one place.", "自定义 API": "Custom API", "要修改连接地址或协议?": "Need to change the connection address or protocol?", "设置当前账号访问上游的出网方式。": "Choose how this account connects to the upstream service.", "设置账号名称、启用状态与转发行为。": "Set the account name, enabled state, and forwarding behavior.", "请填写有效的 HTTP 或 HTTPS 地址": "Enter a valid HTTP or HTTPS URL", "请求标识": "Request identity", "请求端点": "Request endpoint", "账号凭证": "Account credentials", "转发行为": "Forwarding behavior", "达到上限后,将请求交给其他账号。": "When the limit is reached, requests are passed to other accounts.", "这个账号单独存了一份地址:{url},转发时优先用它。上面改的是提供商共用地址,不会覆盖它。": "This account stores its own address ({url}), which takes precedence when forwarding. Changing the shared provider address above does not override it.", "这个账号将改用提供商当前保存的 Base URL:{url}。确认后立即生效,不受底部保存按钮控制。": "This account will use the Base URL currently saved on the provider: {url}. Takes effect immediately and is not controlled by the Save button below.", "连接参数": "Connection parameters", "连接设置": "Connection settings", "配置余额查询凭证、自动刷新间隔与失败重试。": "Configure balance query credentials, the automatic refresh interval, and retries after failure.", "鉴权方式": "Authentication method", "隐藏新输入的密钥": "Hide the newly entered key", "高级兼容": "Advanced compatibility", "默认关闭": "Off by default", " · 模型 {head}{rest}": " · Models: {head}{rest}", " 等 {n} 个": " ({n} total)", "1// 开头的 Google refresh token(也可直接粘贴 refresh_token=… 整行)": "Google refresh token starting with 1// (you can also paste the whole refresh_token=… line)", "11 位大陆手机号": "11-digit mainland China mobile number", "1~64 个字符,账号列表里按它分组显示": "1-64 characters; accounts are grouped by it in the account list", "6 位数字": "6 digits", "
  • 没有可自动领的活动
  • ": "
  • No campaigns can be claimed automatically
  • ", "

    领到的是套餐赠送积分,不会增加福利模型的 token 池;": "

    What you receive is plan gift points, which do not add to the welfare model token pool; ", "ACP 代理配置无效,请重新选择代理。": "The ACP proxy configuration is invalid. Select the proxy again.", "ACP 会话失败时不自动重发,也不切换到其他接入方式。": "A failed ACP session is not retried automatically or switched to another connection method.", "ACP 使用网关电脑上的官方 agy CLI,不是当前手机或浏览器所在设备。请先安装 agy 1.5.0 或更新版本:https://antigravity.google/docs/cli。程序不在默认位置时,可在网关启动环境设置 AGY_PATH。": "ACP uses the official agy CLI on the gateway computer, not the device running this browser or phone. Install agy 1.5.0 or later first: https://antigravity.google/docs/cli. For a custom installation path, set AGY_PATH in the gateway's startup environment.", "ACP 尚未返回可用的会话模型目录,请检查官方 CLI 登录状态后重试。": "ACP has not returned a usable session model catalog. Check the official CLI sign-in status and try again.", "ACP 的本机进程仍使用原来的代理。请先在插件页停用再启用 ACP 插件,再使用新的代理。": "The local ACP processes still use the previous proxy. Disable and re-enable the ACP plugin on the Plugins page before using a different proxy.", "API Key + 控制台令牌(模型调用 + 墨点额度)": "API Key + console token (model access + ink-credit balance)", "API 凭证添加暂不能解析代理池引用;请使用自定义代理地址,添加后再在账号设置中调整。": "Adding API credentials cannot currently resolve proxy-pool references. Use a custom proxy address, then adjust it in account settings after adding the account.", "API 模板": "API templates", "AWS Builder ID(直接授权,减少一次回填)": "AWS Builder ID (direct authorization, one fewer callback)", "AWS 地区(账号目录所在地区)": "AWS region (where the account directory is hosted)", "AiHubMix 的 OpenAI 兼容端点,使用 AiHubMix 的 API Key;模型 ID 以平台清单为准": "AiHubMix's OpenAI-compatible endpoint; use an AiHubMix API Key and the model IDs listed by the platform", "Anthropic 兼容端点在 https://api.deepseek.com/anthropic(协议换 anthropic 时填它)": "The Anthropic-compatible endpoint is https://api.deepseek.com/anthropic (fill it in when you switch the protocol to anthropic)", "Anthropic 协议填根地址,不要带 /v1": "For the Anthropic protocol, use the root URL without /v1", "Antigravity": "Antigravity", "Antigravity 账号的添加方式": "Antigravity account setup method", "AtomCode": "AtomCode", "AutoClaw 国内版": "AutoClaw China edition", "AutoClaw 国际版": "AutoClaw International edition", "BDUSS 必填;请粘贴**完整 Cookie**(Cookie 编辑器一键导出即可)—— 其中 **PTOKEN 必须保留**,网关要用它向百度换发 KukuAI 业务会话令牌,缺了它模型刷新会报「未登录」。支持整段 Cookie 头、Cookie 编辑器导出的 JSON 数组,或 {BDUSS, STOKEN} 对象。KukuAI 没有刷新机制,登录态过期后重新粘贴即可。": "BDUSS is required; paste the **full Cookie** (a Cookie editor can export it in one click) — the **PTOKEN must be kept**, as the gateway uses it to exchange for a KukuAI business session token from Baidu; without it, model refresh reports \"Not signed in\". A full Cookie header, a JSON array exported by a Cookie editor, or a {BDUSS, STOKEN} object are all supported. KukuAI has no refresh mechanism, so once the login state expires, just paste it again.", "BDUSS=…; STOKEN=…(或 Cookie 编辑器导出的 JSON)": "BDUSS=…; STOKEN=… (or the JSON exported by a Cookie editor)", "CatPaw 的 X-Passport-Token(登录态 Cookie)": "CatPaw's X-Passport-Token (login-state Cookie)", "ChatGPT / Codex": "ChatGPT / Codex", "ChatGPT API": "ChatGPT API", "ChatGPT API 订阅": "ChatGPT API subscription", "Claude Code 本机订阅": "Claude Code local subscription", "Claude 订阅": "Claude subscription", "Cline Pass 的 API Key 在 app.cline.bot 获取(订阅制);端点为 OpenAI 兼容,模型清单以 Cline 控制台为准,模型名在模型管理里按裸名添加(如 glm-5.2 / kimi-k2.7-code / deepseek-v4-pro);上游按客户端形态校验,所需的客户端请求头已随卡预置": "Get the Cline Pass API Key at app.cline.bot (subscription-based); the endpoint is OpenAI-compatible, the model catalog follows the Cline console, and model names are added under Model management with the plain name (e.g. glm-5.2 / kimi-k2.7-code / deepseek-v4-pro); the upstream validates the client shape, so the required client request headers are preset on this card", "Cloud project 必填;不会借用其他 Google 提供商的凭证或额度。": "A Cloud project is required. No credentials or quota from other Google providers are borrowed.", "Cloud-IDE-JWT(三段点分)": "Cloud-IDE-JWT (three dot-separated segments)", "Cloudflare Account ID(32 位十六进制)": "Cloudflare Account ID (32 hex characters)", "Codex 订阅": "Codex subscription", "Command Code": "Command Code", "Cursor dashboard API key;loader 按需重新 exchange 模型 token,不提供手动令牌刷新。": "Cursor dashboard API key. The loader exchanges model tokens on demand; manual token refresh is not provided.", "DeepSeek 网页": "DeepSeek Web", "Gemini CLI / Code Assist": "Gemini CLI / Code Assist", "Gemini CLI 凭证文件绝对路径(只读,不复制或写回 refresh token)": "Absolute path to the Gemini CLI credential file (read-only; no copying or writing back refresh tokens)", "GitHub Copilot": "GitHub Copilot", "GitHub 官方设备码登录": "Official GitHub device-code sign-in", "GitHub 登录域名(留空使用 github.com)": "GitHub sign-in domain (leave blank for github.com)", "Google Cloud Project ID(必填,Standard / Enterprise 资格由上游判定)": "Google Cloud Project ID (required; upstream determines Standard / Enterprise eligibility)", "Google Cloud Project ID(必填,Standard / Enterprise 资格由上游判定);默认候选来自 {variable},请明确确认": "Google Cloud Project ID (required; upstream determines Standard / Enterprise eligibility). The default candidate comes from {variable}; confirm it explicitly.", "Google OAuth(Code Assist + Cloud project)": "Google OAuth (Code Assist + Cloud project)", "Google 授权(ACP)": "Google sign-in (ACP)", "Groq 的 OpenAI 兼容端点,使用 GroqCloud 的 API Key": "Groq's OpenAI-compatible endpoint; use a GroqCloud API Key", "IAM Identity Center(企业账号,直接授权)": "IAM Identity Center (organization account, direct authorization)", "JWT(三段点分;也可直接粘贴 Bearer 整行或 data.bin 内容)": "JWT (three dot-separated parts; you can also paste a whole Bearer line or the data.bin content)", "JWT(三段点分;也可直接粘贴 chatglm_token=… 整行)": "JWT (three dot-separated parts; a whole chatglm_token=… line works too)", "Kimi / Moonshot 国内版": "Kimi / Moonshot (China)", "Kimi / Moonshot 国内站 API Key,使用 moonshot.cn 按量接口;不是 Kimi Code 会员入口": "Use a Kimi / Moonshot China API Key with the pay-as-you-go endpoint at moonshot.cn; this is not the Kimi Code membership endpoint", "Kimi / Moonshot 国际版": "Kimi / Moonshot (International)", "Kimi / Moonshot 国际站 API Key,使用 moonshot.ai 按量接口;不是 Kimi Code 会员入口": "Use a Kimi / Moonshot International API Key with the pay-as-you-go endpoint at moonshot.ai; this is not the Kimi Code membership endpoint", "Kiro API key(ksk_…)。": "Kiro API key (ksk_…).", "Kiro 登录页(Google / GitHub 等)": "Kiro sign-in page (Google / GitHub and more)", "Kiro 网页登录": "Kiro web sign-in", "LM Studio(本地)": "LM Studio (Local)", "LobsterAI": "LobsterAI", "LongCat 的 OpenAI 兼容端点,使用 LongCat 平台的 API Key": "LongCat's OpenAI-compatible endpoint; use an API Key from the LongCat platform", "MClaw 由插件在网关电脑上启动专用 Chrome 窗口,独立登录环境也用于自动续期,不使用系统默认浏览器或应用内嵌窗口。": "The MClaw plugin opens a dedicated Chrome window on the gateway machine. Its isolated sign-in profile is also used for automatic renewal; it does not use the system default browser or the app's embedded window.", "MiniMax Code 国内版": "MiniMax Code (China)", "MiniMax Code 国际版": "MiniMax Code (Global)", "Mistral 的 OpenAI 兼容端点,使用 Mistral 控制台的 API Key": "Mistral's OpenAI-compatible endpoint; use an API Key from the Mistral console", "ModelScope 国内版": "ModelScope (China)", "ModelScope 国际版": "ModelScope (International)", "MonkeyCode": "MonkeyCode", "MonkeyCode 国际版": "MonkeyCode International edition", "MonkeyCode 自动网页登录仅限桌面端;浏览器面板请登录对应官网后粘贴 session。": "Automatic MonkeyCode web sign-in requires the desktop app. In the browser panel, sign in to the corresponding official site and paste your session.", "NVIDIA NIM 托管端点,Key 在 integrate.api.nvidia.com 申请": "NVIDIA NIM managed endpoint; apply for the Key at integrate.api.nvidia.com", "Nous Portal 的按量 API,使用 Portal 的 API Key;不是旧的订阅登录方式": "Nous Portal's pay-as-you-go API; use a Portal API Key, not the former subscription sign-in method", "OfficeAce 果办": "OfficeAce", "QuWork 凭证": "QuWork credentials", "QuWork 原设备标识": "Original QuWork device identity", "QwenWork 千问办公": "QwenWork (Public)", "QwenWork 千问办公企业版": "QwenWork (Enterprise)", "StepFun 国内版(按量)": "StepFun (China, pay as you go)", "StepFun 国内站按量 API;请使用按量 API Key,不要填 Step Plan 套餐 Key": "StepFun China pay-as-you-go API; use a pay-as-you-go API Key, not a Step Plan subscription Key", "StepFun 国际版(按量)": "StepFun (International, pay as you go)", "StepFun 国际站按量 API;请使用按量 API Key,不要填 Step Plan 套餐 Key": "StepFun International pay-as-you-go API; use a pay-as-you-go API Key, not a Step Plan subscription Key", "Tabbit 国内版": "Tabbit (China)", "Tabbit 国际版": "Tabbit (International)", "TokenPlan API Key(控制台 → 科研模型 → API Key)": "TokenPlan API Key (console → Research Models → API Key)", "User-Agent(可选)": "User-Agent (optional)", "accessToken 是 Accio 的登录凭证(一长串不透明 token,不是 JWT);refreshToken 可选,填了之后到期能自动续期。请填写 {label}账号的凭证 —— {siteNote}(最容易拿到的办法:直接用上方的「网页登录」,不需要手工找 token。)": "accessToken is Accio's login credential (a long opaque token, not a JWT); refreshToken is optional and enables automatic renewal on expiry. Enter the credential of the {label} account — {siteNote} (the easiest way to get it: just use \"Web login\" above; no need to hunt for the token manually.)", "accessToken 是 Trae 的 Cloud-IDE-JWT(三段点分),refreshToken 用于到期自动续期(本家 refreshToken 一次一换:换发一次旧的即作废,所以两份程序别同时刷同一个账号)。
    手工粘贴时请连 machineId / deviceId 一起填:上游把它们与登录时上传的设备公钥绑在一起判设备,凭空换一对会撞 2xxxx 那族设备绑定拒绝。
    没有这三样时的正路是用上方的「网页登录」;容器 / 远程部署形态按提示粘贴地址栏回调地址即可。": "accessToken is Trae's Cloud-IDE-JWT (three dot-separated segments), and refreshToken enables automatic renewal on expiry (this provider rotates refreshToken on every use: once exchanged, the old one is void, so do not refresh the same account from two programs at once).
    When pasting manually, fill in machineId / deviceId as well: upstream ties them to the device public key uploaded at sign-in to identify the device, and swapping in a new pair from nowhere triggers the 2xxxx family of device-binding rejections.
    Without these three, the proper route is \"Web login\" above; for container / remote deployments, paste the callback URL from the address bar as prompted.", "chat.deepseek.com 的 userToken.value,不是收费 API Key": "userToken.value from chat.deepseek.com, not a paid API key", "github-copilot/apps.json 或 opencode/auth.json": "github-copilot/apps.json or opencode/auth.json", "github.com 或 company.ghe.com": "github.com or company.ghe.com", "github.com:Iv1.b507a08c87ecfe98 或 github-copilot": "github.com:Iv1.b507a08c87ecfe98 or github-copilot", "monkeycode_ai_session 的值(也可直接粘贴整段 Cookie)": "The value of monkeycode_ai_session (you can also paste the whole Cookie)", "ms- 开头的 API 令牌": "API token starting with ms-", "project 必填;只读引用文件,模块的 OAuth 续期不写回客户端。": "A project is required. Files are referenced read-only; module OAuth renewal never writes back to the client.", "refreshToken 可选,填了到期可自动续期;两者都能从小浣熊客户端登录态文件里取到。": "refreshToken is optional and enables automatic renewal on expiry; both can be obtained from the Raccoon client login-state file.", "refreshToken 可选,填了可自动续期;两者都能从客户端登录态文件取到。同一个 Cline 账号两个池都能用,这里归入 {label}。": "refreshToken is optional and enables automatic renewal; both can be obtained from the client login-state file. The same Cline account works in both pools; here it is grouped under {label}.", "token 支持 enc: 前缀(Windows 上自动解密)。未填 refreshToken 无法自动续期。": "token supports the enc: prefix (decrypted automatically on Windows). Without a refreshToken, automatic renewal is not possible.", "token 是登录态 Cookie;CatPaw 没有刷新机制,过期后需在客户端重新登录。": "token is the login-state Cookie; CatPaw has no refresh mechanism, so sign in again in the client after it expires.", "token=…; user_id=…(也可粘贴 Copy as cURL 整段)": "token=…; user_id=… (you can also paste the whole Copy as cURL)", "user_ 开头的 API Key(也可直接粘贴 Authorization: Bearer … 整行)": "API Key starting with user_ (you can also paste the whole Authorization: Bearer … line)", "xAI 的 OpenAI 兼容端点,使用 xAI 控制台的 API Key;不是 Grok 网页订阅": "xAI's OpenAI-compatible endpoint; use an API Key from the xAI console, not a Grok web subscription", "your-company.vpc.qwenwork.cn 或 https://your-company.vpc.qwenwork.cn": "your-company.vpc.qwenwork.cn or https://your-company.vpc.qwenwork.cn", "{label} 网页登录的打开方式": "How to open {label} web login", "{label} 账号地区": "{label} account region", "{label} 账号的添加方式": "How to add a {label} account", "{label}账号已添加": "{label} account added", "{label}(只读本机)": "{label} (read-only local reference)", "{message}:请在打开的页面完成滑块,完成后回到这里点「已完成验证,继续发送」": "{message}: complete the slider in the page that just opened, then come back here and click \"Verification done, send again\"", "{message}:请手动打开验证页面 {url},完成后回到这里点「已完成验证,继续发送」": "{message}: open the verification page {url} manually, then come back here and click \"Verification done, send again\"", "{name} 不是合法 JSON:{reason}": "{name} is not valid JSON: {reason}", "{name}要粘一个 JSON 对象(形如 {sample})": "{name} requires a JSON object (like {sample})", "{n} 个账号": "{n} accounts", "{n} 个账号,点击添加": "{n} accounts, click to add", "{seconds}s 后重发": "Resend in {seconds}s", "✅ {label}账号已添加": "✅ {label} account added", "✅ {label}账号已添加{name}": "✅ {label} account added{name}", "✅ 已从 cc-switch 导入 {n} 个供应商": "✅ Imported {n} providers from cc-switch", "✅ 已创建自定义提供商「{name}」并添加账号": "✅ Created custom provider \"{name}\" and added an account", "✅ 已删除自定义提供商「{name}」{accounts}{keys}": "✅ Deleted custom provider \"{name}\"{accounts}{keys}", "✅ 已更新已有账号{name}(同一把 API Key 只保留一条,重复添加会合并)": "✅ Updated the existing account{name} (one account per API key; re-adding merges into it)", "✅ 已更新已有账号{name}(同一提供商内,同一把 API Key 只保留一条)": "✅ Updated the existing account{name} (one account per API key within each provider)", "✅ 登录成功,{edition}账号已加入列表": "✅ Signed in; {edition} account added to the list", "✅ 领取成功:{planId}{period}": "✅ Claim successful: {planId}{period}", " 同一家可以放多把 key,按优先级轮换。": " One provider can hold multiple keys, rotated by priority.", "「{name}」的账号添加功能还在开发中,敬请期待。": "Adding accounts for \"{name}\" is still in development — stay tuned.", "一个 Key 用遍多家模型,模型名用「厂商/模型」全称(如 deepseek/deepseek-chat)": "One Key works across many vendors; use the full \"vendor/model\" name (e.g. deepseek/deepseek-chat)", "上游不要鉴权时留空,并勾选下面一项(留空又不勾会被当成未配置凭证)": "Leave blank when the upstream needs no authentication, and check the option below (blank without the checkbox counts as no credential configured)", "上游信息": "Upstream info", "上游没有给出验证页面地址": "The provider did not return a verification page address", "上游要求人机验证,但没有给出验证页面地址,请稍后重试": "The provider requires human verification but returned no verification page address. Please try again later", "不使用预置": "No preset", "不可领({status})": "Not claimable ({status})", "不授权": "Do not authorize", "不支持导入": "Import not supported", "不是有效的凭证文件:内容要是一个 JSON 对象": "Not a valid credential file: the content must be a JSON object", "不是有效的凭证文件:需要包含 accessToken 与 uid": "Not a valid credential file: accessToken and uid are required", "不是自定义提供商": "Not a custom provider", "不需要 Key:转发与拉取模型都不发送鉴权头": "No Key needed: neither forwarding nor model fetching sends auth headers", "不需要登录:点下面的按钮,网关会直接在智谱清言换发一份访客凭证并加入账号列表(也可以先填个备注名)。访客凭证可以直接用来对话,免费额度由上游按设备发放。

    注意:访客账号没有积分体系 —— 它与「会员积分」「每日登录积分」「活动领取」相关的接口一律需要登录,因此那些能力对访客会如实跳过(账号页的积分、签到中心都不显示读数)。想要积分就用「填写凭证」粘一个已登录账号的令牌,或「导入桌面端登录态」。": "No sign-in needed: click the button below and the gateway will obtain a guest credential from Zhipu Qingyan directly and add it to the account list (you can fill in a note name first). The guest credential can be used for chat right away; the free quota is issued by the upstream per device.

    Note: a guest account has no points system — its member points, daily sign-in points and activity claim endpoints all require sign-in, so those capabilities are skipped for guests (no readings are shown on the accounts page or in the check-in center). To get points, use \"Fill in credentials\" to paste a signed-in account token, or \"Import desktop sign-in state\".", "两版账号可同时保存,各自一份模型清单(国内版与国际版是两家提供商,可分别启用与映射)。": "Both editions' accounts can be saved at once, each with its own model catalog (the China and International editions are two providers that can be enabled and mapped separately).", "中国版": "China edition", "也支持本软件导出的单账号 JSON 文件,保留账号凭证与附加信息。": "Individual account JSON files exported by this application are also supported, preserving credentials and additional account data.", "仅 API Key(模型调用,不含墨点额度)": "API Key only (model access, no ink-credit balance)", "仅填写自己的 GitHub 令牌": "Enter only your own GitHub token", "仅支持仍有有效 Gemini Code Assist Standard / Enterprise 资格并绑定 Cloud project 的账号。个人免费版及 Google AI Pro / Ultra 已于 2026-06-18 停止支持;Standard / Enterprise 新订阅已于 2026-10-09 停售。不会切换到其他 Google 产品或额度池。": "Only accounts with valid existing Gemini Code Assist Standard / Enterprise eligibility and a linked Cloud project are supported. The individual free tier and Google AI Pro / Ultra support ended on 2026-06-18; sales of new Standard / Enterprise subscriptions ended on 2026-10-09. No other Google product or quota pool will be used.", "仅读取本机 Claude Code 的当前订阅登录。若未登录,请先在自己的终端登录;本地凭证仍由 CLI 管理。": "Read only the current local Claude Code subscription sign-in. If signed out, sign in in your own terminal first. The CLI continues to manage local credentials.", "今天没有需要领的活动(都已到账)": "No campaigns to claim today (all already credited)", "今天(北京时间 {day})已试 {attempts} 次,还能试 {left} 次{next}
    ": "Tried {attempts} times today (Beijing time {day}); {left} attempts left{next}
    ", "从 Google 官方源下载并核验 SHA-512;下载使用网关默认出口。更新失败保留旧版,进行中的对话不受替换影响。": "Downloads from Google’s official source and verifies SHA-512 using the gateway’s default network connection. Failed updates keep the previous version, and active conversations are not interrupted.", "从别的机器(或 OfficeAce 桌面端 models.json)取三项贴进来:模型网关基址(baseUrl,形如 https://modelgw-…/v2)与 modelAppKey / modelAppSecret。这三项就能转发(网关凭据不过期);控制面临时凭据(accessKeyId 等)可选,留空则额度/自动续期不可用,但不影响转发。": "Grab three items from another machine (or from the OfficeAce desktop app's models.json) and paste them here: the model gateway base URL (baseUrl, shaped like https://modelgw-…/v2) plus modelAppKey / modelAppSecret. These three are enough to forward requests (the gateway credential never expires); the control-plane temporary credentials (accessKeyId and so on) are optional — leaving them blank disables balance queries and auto-renewal but does not affect forwarding.", "从本机导入桌面端登录态": "Import desktop login state from this machine", "任务镜像 id": "Task image id", "余额查询": "Balance query", "你企业的千问办公旗舰版域名(企业管理后台地址栏的域名,如 your-company.vpc.qwenwork.cn)": "Your QwenWork Enterprise flagship domain (the domain in your enterprise admin address bar, e.g. your-company.vpc.qwenwork.cn)", "使用 Google 账号登录": "Sign in with Google", "使用 Zai 账号登录": "Sign in with Zai", "使用 {name} 模板新建提供商": "Create a provider using the {name} template", "使用个人访问令牌(PAT)": "Use a personal access token (PAT)", "使用本机 Claude Code 登录": "Use local Claude Code sign-in", "使用本机 Kimi Work 登录": "Use local Kimi Work sign-in", "使用模板新建提供商": "Create a provider from this template", "使用网页令牌,不是收费 API Key。": "Use a web session token, not a paid API key.", "使用自己的 GitHub 账号授权;模型条款须在官方客户端手动确认。": "Authorize with your own GitHub account. Model terms must be accepted manually in the official client.", "先在网关所在机器启动 LM Studio 服务;localhost 指向网关所在机器,远程或容器部署请改为网关可访问的地址。默认无需鉴权;启用认证后请取消「该上游无需鉴权」并填写真实 API Key": "Start the LM Studio server on the machine running the gateway first. localhost refers to the gateway's machine; for remote or container deployments, use an address reachable from the gateway. Authentication is disabled by default; if you enable it, uncheck \"This upstream needs no authentication\" and enter a real API Key", "免费模型不用填 Key(默认勾上「该上游无需鉴权」,网关自动用匿名凭证);付费模型则填 Zen 的 API Key。免费档上游只认官方客户端形态,已默认开启「伪装 OpenCode 官方客户端」": "Free models need no Key (\"This upstream needs no authentication\" is checked by default, and the gateway uses anonymous credentials automatically); for paid models, enter your Zen API Key. The free tier only accepts the official client form, so \"Emulate the official OpenCode client\" is on by default", "关联用户指定的本地 Copilot 凭证(只读)": "Link a user-selected local Copilot credential (read-only)", "内嵌窗口": "Embedded window", "内嵌窗口打开;关窗即取消等待(Google 账号被拒时改用系统浏览器)": "Opens in the embedded window; closing it cancels the wait (if a Google account is rejected, switch to the system browser)", "内嵌窗口打开;完成后自动加入列表,关窗即取消等待": "Opens in the embedded window; added to the list when done; closing it cancels the wait", "内嵌窗口打开;扫码完成后自动加入列表,关窗即取消等待": "Opens in an embedded window; the account is added automatically once you have scanned — closing the window cancels the wait", "内嵌窗口用全新环境,多账号互不影响;关窗即取消等待": "The embedded window uses a fresh environment, so multiple accounts do not affect each other; closing it cancels the wait", "内嵌窗口登录": "Sign in in the embedded window", "内嵌窗口(推荐)": "Embedded window (recommended)", "准备验证…": "Preparing verification…", "凭据 JSON": "Credential JSON", "凭证 JSON 或模型凭证": "Credential JSON or model credential", "凭证仅发送至当前网关": "Credentials sent only to this gateway", "凭证文件在哪?": "Where is the credential file?", "凭证文件类型": "Credential file type", "创建并添加账号": "Create and add account", "创建这个提供商,并同时建立它的第一个账号。": "Create this provider and its first account in one step.", "删除功能不可用(脚本未就绪)": "Delete is unavailable (script not ready)", "删除失败:{reason}": "Delete failed: {reason}", "删除此提供商": "Delete this provider", "千问办公 国内版": "QwenWork (China)", "千问办公 国际版": "QwenWork (International)", "千问办公{label}暂时无法登录:上游只接受它自己的官方回调地址,不论证码到本机。": "QwenWork {label} cannot be signed in right now: the upstream service only accepts its own official callback address, so the authorization code never comes back to this machine.", "原样提交本次流程的完整回调 URL。": "Submit the complete callback URL for this flow unchanged.", "去安装提供商插件包": "Install a provider plugin pack", "及 {n} 个账号": " and {n} accounts", "发送中…": "Sending…", "发送失败:{message}": "Send failed: {message}", "发送未确认:登录窗口已弹出,请在弹出的窗口中手动完成登录": "Send unconfirmed: the sign-in window has opened; complete the sign-in manually in that window", "取消失败:{message}": "Cancel failed: {message}", "取消安装": "Cancel installation", "取消等待": "Cancel sign-in", "只使用此路线签发的 OAuth 凭证;direct SIWC 与 Codex 客户端身份不同。": "Use only OAuth credentials issued for this route. Direct SIWC and Codex use different client identities.", "只关联真实 CLI 2.1.259+ 的当前订阅;不代登录、不复制或续期客户端凭证。": "Link only the current subscription of a genuine CLI 2.1.259+. Do not sign in on your behalf, copy or renew client credentials.", "只拿到 JWT 时填这里;Cookie 里有 token 可留空": "Fill this only if you have just the JWT; leave empty if the Cookie contains token", "只有「内嵌窗口」能恢复第三方入口:系统浏览器里我们无法改动登录页": "Only the Embedded window can restore third-party options: we cannot modify the sign-in page in the system browser", "只看这一类": "Only this category", "只读引用 Grok Build home/scope/account;每次读取当前登录态,不复制 token,不回退退出前快照,不主动续期;源有效期未知时不作长期有效承诺。": "Reference Grok Build home/scope/account read-only. Each read uses the current sign-in without copying tokens, reverting to a pre-sign-out snapshot or renewing. An unknown source expiry is not a promise of long-lived credentials.", "只读引用本机 Kiro CLI/IDE;每次读取校验同一邮箱,不复制 token、不主动续期或回写,失效后由原客户端重登或同步。": "Reference local Kiro CLI/IDE sign-in read-only. Each read verifies the same email without copying tokens, renewing or writing back. After expiry, sign in again or sync in the original client.", "只读所选标准文件与账号条目并验证 GitHub/Copilot 身份;只保存引用,不保存令牌副本,不扫描目录、读取 keychain 或运行 CLI。": "Read only the selected standard file and account entry and verify the GitHub/Copilot identity. Store a reference, not copied tokens; do not scan directories, read keychains or run a CLI.", "只读校验明确选择的本机凭证文件;仅保存引用与稳定身份,不复制或续期原客户端令牌。": "Validate only the explicitly selected local credential file, read-only. Store a reference and stable identity, without copying or renewing the original client's tokens.", "只读用户明确指定的文件和账号条目,不自动扫描。": "Read only the explicitly selected file and account entry; no automatic scanning.", "只读验证所选 Gemini CLI 登录态和指定 project 的 Code Assist Standard / Enterprise 资格;不会启动 CLI、续期或复制令牌。": "Verify the selected Gemini CLI sign-in and Code Assist Standard / Enterprise eligibility for the specified project, read-only. Do not start the CLI, renew or copy tokens.", "只读验证本机 Claude Code 当前订阅登录;凭证仍由原 CLI 管理。": "Verify the current local Claude Code subscription sign-in read-only. The original CLI continues to manage its credentials.", "只读验证本机 Kimi 桌面版已有的 Work 登录,不复制令牌;账号可能没有可用模型。": "Verify the existing local Kimi desktop Work sign-in read-only, without copying tokens. The account may have no available models.", "可选": "Optional", "可选(cloudaicompanionProject):留空由网关自动发现": "Optional (cloudaicompanionProject); if blank, the gateway discovers it automatically", "可选,仅远程兑换码激活需要;从官方客户端读取": "Optional; needed only for remote code activation. Read it from the official client.", "可选,展示用": "Optional; for display", "可选,没有则无法自动续期": "Optional; without it, automatic renewal is not possible", "可选,用于生成账号标识": "Optional; used to build the account identifier", "可选,留空使用凭据里的 user_name": "Optional; defaults to the user_name in the credential", "可选,留空使用账号名或邮箱": "Optional; if left blank the account name or email is used", "可选,留空使用账号姓名、邮箱或令牌指纹": "Optional; defaults to the account name, email, or token fingerprint", "可选,留空使用账号昵称或邮箱": "Optional; defaults to the account nickname or email", "可选,留空则用 key 尾号": "Optional; defaults to the key suffix", "可选,留空则用 userId": "Optional; defaults to userId", "可选,留空则用上游账号昵称": "Optional; defaults to the upstream account nickname", "可选,留空则用上游返回的账号名或账号 id": "Optional; defaults to the account name or account id returned by upstream", "可选,留空则用凭证里的账号名": "Optional; defaults to the account name in the credential", "可选,留空则用文件里的昵称": "Optional; leave empty to use the nickname from the file", "可选,留空则用登录名或 uid": "Optional; defaults to the login name or uid", "可选,留空则用脱敏手机号": "Optional; defaults to the masked phone number", "可选,留空则用脱敏手机号或 userId": "Optional; defaults to the masked phone number or userId", "可选,留空则用账号 uk": "Optional; defaults to the account uk", "可选,留空则用账号昵称": "Optional; defaults to the account nickname", "可选,留空则用账号昵称或 userId": "Optional; leave blank to use the account nickname or userId", "可选,留空则用邮箱或令牌尾号": "Optional; defaults to the email or token suffix", "可选,留空用「AtomCode」": "Optional; defaults to “AtomCode”", "可选,留空用「OfficeAce 果办」": "Optional; defaults to “OfficeAce”", "可选,留空自动生成": "Optional; generated automatically if blank", "可选,留空自动用昵称": "Optional; defaults to the nickname", "可选,给这个访客账号起个备注名": "Optional; a note name for this guest account", "可选,续期时带上": "Optional; sent when renewing", "可选,讯飞侧 userid": "Optional; the userid on the iFlytek side", "可选:发起对话必需,留空则由网关从该账号已有任务里自动发现,发现不到时之后手动补": "Optional; required to start a conversation. If blank, the gateway discovers it automatically from this account's existing tasks; if it cannot find one, fill it in manually later.", "可选:账号邮箱,用于展示与身份识别(换新令牌也能认回同一账号)": "Optional; the account email, used for display and to recognize the identity (the same account is recognized even after switching to a new token)", "可选;UUID 形态,与凭据同生共死": "Optional; UUID form, lives and dies with the credential", "可选;填了才能到期自动续期": "Optional; required for automatic renewal on expiry", "可选;用于去重与展示名(留空时网关会问一次上游)": "Optional; used for deduplication and the display name (when blank, the gateway asks upstream once)", "可选;用于生成账号 id 与展示名": "Optional; used to generate the account id and display name", "可选;纯数字串(上游只收 8–24 位数字)": "Optional; digits only (upstream accepts only 8–24 digits)", "可领取": "Claimable", "同一家可以混着放:有 Key 的账号与无鉴权账号各按各的规则走;无需鉴权的账号也能并存多条(各自可配不同的出网代理)": "Keyed and no-auth accounts can coexist in one provider, each routed by its own rules; multiple no-auth accounts are allowed too (each with its own egress proxy)", "同地址换 anthropic 协议即走它的 Claude 兼容端点。转发必须填 OpenCode Go 的 API Key(订阅制;获取模型清单不需要 Key,但发请求上游会回 401「Missing API key」)": "Switch the protocol to anthropic on the same address to use its Claude-compatible endpoint. Forwarding requires an OpenCode Go API Key (subscription-based; fetching the model catalog needs no Key, but requests get a 401 \"Missing API key\" from upstream)", "响应为空": "Empty response", "商汤日日新的 OpenAI 兼容端点;余额查询走控制台账号密码(见下方「余额查询」一段)": "SenseNova's OpenAI-compatible endpoint; balance query uses the console account and password (see \"Balance query\" below)", "回调已提交,仍需等待网关确认账号登录完成。": "Callback submitted. Wait for the gateway to confirm account sign-in is complete.", "回调未被接受,请重新复制本次登录的完整回调地址": "Callback not accepted. Copy the complete callback URL for this sign-in again.", "国内版": "China edition", "国内版与**国际版是两套独立的账号与套餐**,凭证与领取的套餐都不通用。": "The China edition and **the International edition are two separate sets of accounts and plans**; credentials and claimed plans do not carry over between them.", "国内版登录页没有 Google / GitHub 入口(它用微信 / 手机号 / 邮箱登录)": "The China edition's sign-in page has no Google / GitHub options (it uses WeChat / phone / email sign-in)", "国内版的登录站点是 www.accio-ai.com,与国际版不是同一站。": "The China edition's sign-in site is www.accio-ai.com, a different site from the International edition's.", "国内版(WorkBuddy)": "China edition (WorkBuddy)", "国内站为 https://api.siliconflow.cn/v1": "China site: https://api.siliconflow.cn/v1", "国内站(minimaxi.com);OpenAI 兼容地址为 https://api.minimaxi.com/v1": "China site (minimaxi.com); the OpenAI-compatible address is https://api.minimaxi.com/v1", "国际版": "International edition", "国际版 z.ai 的 Coding 套餐;OpenAI 兼容地址为 https://api.z.ai/api/coding/paas/v4": "The International edition z.ai Coding plan; the OpenAI-compatible address is https://api.z.ai/api/coding/paas/v4", "国际版与国内版是**两套独立的账号**(同一账号体系的两个站点),凭证不通用。": "The International and China editions are **two separate sets of accounts** (two sites of the same account system); credentials do not carry over.", "国际版与国内版账号体系独立,请填国际版的凭证。未填 refreshToken 无法自动续期。": "The International and China editions have separate account systems; enter the International edition's credentials. Without a refreshToken, automatic renewal is not possible.", "国际版登录页默认只显示邮箱登录,勾选后恢复 Google / GitHub / X 入口": "The International edition's sign-in page shows only email sign-in by default; checking this restores the Google / GitHub / X options", "国际版的推理站点是 api.z.ai,与国内版不是同一站;套餐也各自独立。": "The International edition's inference site is api.z.ai, a different site from the China edition's; plans are separate as well.", "国际版(WorkBuddy AI)": "International edition (WorkBuddy AI)", "国际站 Coding 套餐;OpenAI 兼容地址为 https://api.minimax.io/v1": "International site Coding plan; the OpenAI-compatible address is https://api.minimax.io/v1", "在 AtomGit 的 AtomCode 页面登出后取得两项贴进来:accessToken 与 refreshToken。续期令牌建议填写——本家令牌不是 JWT(约 7 天到期,读不到过期时间),没有它账号无法自动续期,到期只能重新登录。": "Paste the two values from the AtomCode page on AtomGit: accessToken and refreshToken. The refresh token is strongly recommended — this provider's token is not a JWT (it expires in about 7 days and carries no readable expiry), so an account without it cannot renew itself and must be re-authorised once it expires.", "在 DeepSeek 官网完成登录,自动加入账号列表。": "Sign in on the official DeepSeek website to add your account automatically.", "在 GitHub 输入设备码 {code},核对账号与授权权限。设备码过期后需要重新发起登录。": "Enter device code {code} on GitHub and check the account and requested permissions. Start sign-in again if the device code expires.", "在 cc-switch 里找到": "Found", "在 chat.deepseek.com 登录本人账号后,从浏览器开发者工具的 Application → Local Storage 复制 userToken 的 value。Cookie 可选,需补充时粘贴该站点请求里的完整 Cookie;登录态失效或要求人机验证时,请回官方网页手动登录后更新。这里不接受收费 API Key。": "Sign in to your own account at chat.deepseek.com, then copy the value field of userToken from Application → Local Storage in your browser's developer tools. Cookie is optional; if needed, paste the full Cookie header from a request to that site. If your session expires or human verification is required, sign in manually on the official website and update your credentials. Paid API keys are not accepted here.", "在 web.tabbit.ai 登录后,从开发者工具 Application → Cookies 复制 token 与 user_id,或直接粘贴该站点请求的 Copy as cURL 整段。国际站没有可复刻的网页授权回调,手机号登录也处在上游灰度里,所以只能导入已有登录态。登录态有效期约 7 天,过期后重新导入。Cookie 与 JWT 至少填一项。": "After signing in at web.tabbit.ai, copy token and user_id from DevTools → Application → Cookies, or paste the whole Copy as cURL of a request to that site. The international site has no reproducible web-auth callback, and phone login is still in upstream rollout, so only an existing login state can be imported. The login state lasts about 7 days; re-import it after expiry. Provide at least one of Cookie or JWT.", "在 web.tabbit.com 登录后,从开发者工具 Application → Cookies 复制 token 与 user_id,或直接粘贴该站点请求的 Copy as cURL 整段。登录态有效期约 7 天,上游没有续期接口,过期后重新导入即可。Cookie 与 JWT 至少填一项。": "After signing in at web.tabbit.com, copy token and user_id from DevTools → Application → Cookies, or paste the whole Copy as cURL of a request to that site. The login state lasts about 7 days and the upstream has no refresh endpoint; re-import it after expiry. Provide at least one of Cookie or JWT.", "在内嵌窗口里完成官方登录,成功后自动加入账号列表。": "Complete the official sign-in in the embedded window; the account is added to the list automatically on success.", "在{label}的 Qoder 账号设置 → Integrations 生成 PAT(别填 Google / GitHub 的令牌)。两个地区的账号与凭证不通用。": "Generate a PAT in the Qoder account settings → Integrations for {label} (do not use a Google / GitHub token). Accounts and credentials do not carry over between the two regions.", "在应用内嵌窗口完成 WPS 登录,登录凭据仅交给原插件校验并保存到当前网关。": "Sign in to WPS in the app's embedded window. Credentials are passed only to the original plugin for verification and saved to this gateway.", "在所选站点的 MonkeyCode 官方页面完成登录和验证码,成功后自动读取登录态并加入账号列表,无需手动复制 Cookie。": "Complete sign-in and verification on the official MonkeyCode page for the selected region. Your session is captured and the account is added automatically; no need to copy cookies.", "在打开的官方授权页里用微信扫码登录(页面会直接显示二维码)。扫码成功后自动加入账号列表。": "Scan the WeChat QR code on the official authorization page that opens (the QR code appears right away). The account is added to the list automatically after a successful scan.", "在打开的官方登录页里完成登录,成功后自动加入账号列表。": "Complete the sign-in on the official page that opens; the account is added to the list automatically on success.", "在打开的登录页里用百度账号登录 KukuAI 主站(手机验证码 / 扫码均可),登录成功后自动加入账号列表。网关会向百度换发 KukuAI 业务会话令牌(依赖本机已安装库库AI 客户端)。": "Sign in to the KukuAI main site with your Baidu account on the login page that opens (SMS code or QR scan both work); the account is added to the list automatically on success. The gateway exchanges it with Baidu for a KukuAI business session token (requires the KukuAI client installed on this machine).", "在打开的登录页里登录 Google 账号(Antigravity 的授权页),授权完成后自动加入账号列表。": "Sign in with your Google account on the login page that opens (Antigravity's authorization page); the account is added to the list automatically once authorization completes.", "在打开的窗口里用百度账号登录 KukuAI 主站(手机验证码 / 扫码均可),登录成功后自动加入账号列表。网关会向百度换发 KukuAI 业务会话令牌(依赖本机已安装库库AI 客户端)。": "In the window that opens, sign in to the KukuAI main site with your Baidu account (SMS code or QR scan both work); the account is added to the list automatically on success. The gateway exchanges it with Baidu for a KukuAI business session token (requires the KukuAI client installed on this machine).", "在打开的窗口里登录 Google 账号(Antigravity 的授权页),授权完成后自动加入账号列表。": "Sign in with your Google account in the window that opens (Antigravity's authorization page); the account is added to the list automatically once authorization completes.", "在打开的页面里登录千问办公{label}({site})的账号,登录完成后会自动加入列表。两版的账号与凭证不通用。": "Sign in to your QwenWork {label} ({site}) account in the page that opens. The account joins the list as soon as you finish. The two editions have separate accounts and credentials.", "在浏览器中打开登录页": "Open the sign-in page in your browser", "在系统浏览器授权指定 project 的 Code Assist Standard / Enterprise;账号与 project 仍须通过真实预检。": "Authorize Code Assist Standard / Enterprise for the specified project in your system browser. The account and project must still pass a live preflight.", "在豆包官方页面完成登录,窗口会自动读取完整 Cookie 并加入账号列表;不需要安装豆包工作客户端。": "Sign in on the official Doubao page. The window will read the complete cookies and add the account; the Doubao Work client is not required.", "地区": "Region", "填写信息后发起授权,进度与失败原因会显示在这里。": "Enter the required information and start authorization; progress and errors appear here.", "填写具体站点名称;模板类型不会作为站点身份": "Enter a name for this site; the template type does not identify the site", "填写凭证": "Enter credentials", "填写凭证添加": "Enter credentials to add", "备注名": "Label", "套餐": "Plan", "如何获取": "How to get it", "如官方页面跳回的是网关本机地址,请在桌面面板完成回调;手机端不会猜测未声明的回调输入。": "If the official page redirects to a gateway-local address, complete the callback in the desktop panel. Mobile does not guess undeclared callback inputs.", "如官方页面跳回的是网关本机地址,请粘贴完整回调;没有授权页的本机方式仍需等待网关确认。": "If the official page redirects to a local address on the gateway machine, paste the complete callback URL. Local methods without an authorization page still require confirmation from the gateway.", "如:公司中转站、个人备用站": "e.g. Company gateway, Personal backup", "如:智谱 GLM": "e.g. Zhipu GLM", "安装在运行网关的机器,不是当前手机或浏览器所在设备。由 Agent2API 独立管理,不覆盖原有安装;仅点击按钮后下载。": "Installs on the machine running the gateway, not this phone or browser device. Agent2API manages a separate copy without replacing existing installations. Downloads start only after you click the button.", "安装已取消,原有版本未更改。": "Installation canceled. The previous version was not changed.", "安装操作未得到有效确认,请重新检查状态;不会自动重复安装。": "The installation request was not confirmed. Check the status again; installation will not be retried automatically.", "完成官方登录后粘贴包含 state 的完整 loopback 回调地址。": "After completing official sign-in, paste the complete loopback callback URL including state.", "完成登录后自动加入账号列表,昵称取自上游。": "Added to the account list automatically after sign-in; the nickname comes from upstream.", "完整 JSON 已包含时无需填写": "Not needed if already included in the JSON", "完整回调地址(原样提交)": "Complete callback URL (submitted unchanged)", "官方 PKCE 登录;浏览器登录态有有效期,失效后需重登,不提供维护续期。": "Official PKCE sign-in. Browser sessions expire and require signing in again; maintenance renewal is not provided.", "官方客户端凭证目录:Windows 是 C:\\Users\\<你的用户名>\\AppData\\Local\\CodeBuddyExtension\\Data\\Public\\auth,macOS 是 ~/Library/Application Support/CodeBuddyExtension/Data/Public/auth": "Official client credential directory: Windows — C:\\Users\\\\AppData\\Local\\CodeBuddyExtension\\Data\\Public\\auth; macOS — ~/Library/Application Support/CodeBuddyExtension/Data/Public/auth", "官方已确认到账": "Officially confirmed as credited", "官方浏览器登录": "Official browser sign-in", "官方浏览器登录(粘贴完整回调)": "Official browser sign-in (paste the full callback URL)", "官方网页正常登录后的 Cookie;风控时请手动更新": "Cookie from a normal sign-in on the official website; update it manually if verification is required", "客户端版本": "Client version", "宿主已持久保存的稳定 hostId(urn:uuid,不能每次生成)": "The stable hostId already persisted by the host (urn:uuid; do not generate a new one each time)", "导入": "Import", "导入 QuWork 本机登录态": "Import local QuWork sign-in", "导入 kiro-cli / Kiro IDE 登录态": "Import kiro-cli / Kiro IDE sign-in", "导入中…": "Importing…", "导入凭证文件": "Import credential file", "导入失败": "Import failed", "导入失败:{reason}": "Import failed: {reason}", "导入所选": "Import selected", "导入所选({n})": "Import selected ({n})", "导入桌面端登录态": "Import desktop login state", "导入用户指定的本地 Copilot 凭证": "Import user-selected local Copilot credentials", "将在新标签页中打开授权页;完成后自动加入账号列表。": "The authorization page opens in a new tab; the account is added to the list automatically when done.", "将在新标签页中打开授权页;完成后自动加入账号列表。若页面跳回本机地址后账号没有出现,按提示把地址栏里的完整回调地址粘贴回来即可。": "The authorization page opens in a new tab; the account is added to the list automatically when done. If the page jumps back to a local address and the account does not appear, paste the full callback URL from the address bar when prompted.", "将打开内嵌窗口;授权完成后自动加入账号列表。关掉窗口即取消等待。授权页最后可能提示无法打开 zcode:// 链接,这是正常的 —— 结果已由服务端记下": "The embedded window will open; the account is added to the list automatically once authorization completes. Closing the window cancels the wait. The authorization page may end with a message that it cannot open the zcode:// link — that is normal; the result has already been recorded server-side", "将打开内嵌窗口;授权完成后自动加入账号列表。远程面板可粘贴回调地址。关掉窗口即取消等待。链接 5 分钟内有效,超时或未点就会作废(可重新发起)": "The embedded window will open; the account is added to the list automatically once authorization completes. On a remote panel you can paste the callback URL. Closing the window cancels the wait. The link is valid for 5 minutes; if it times out or is not clicked, it is voided (you can start again)", "将打开内嵌窗口;登录完成后自动加入账号列表。关掉窗口即取消等待": "The embedded window will open; the account is added to the list automatically after sign-in. Closing the window cancels the wait", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的 Trae 账号);同机完成后自动加入,Docker / 远程面板按提示粘贴地址栏回调地址。": "The authorization page will open in your system default browser (reusing the Trae account already signed in there); on the same machine the account is added automatically when done. For Docker / remote panels, paste the callback URL from the address bar as prompted.", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的 ZCode 账号);授权完成后自动加入账号列表。页面最后可能提示无法打开 zcode:// 链接,属正常现象": "The authorization page will open in your system default browser (reusing the ZCode account already signed in there); the account is added to the list automatically once authorization completes. A final message that the zcode:// link cannot be opened is normal", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的华为云账号);授权码由网关轮询云端取回,与浏览器跑在哪台机器无关,完成后自动加入账号列表": "The authorization page will open in your system default browser (reusing the Huawei Cloud account already signed in there); the gateway polls the cloud for the authorization code, so it does not matter which machine the browser runs on. The account is added to the list automatically once done", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的华为云账号);浏览器与网关不在同一台机器时,按上方说明把最终回调地址粘贴回面板": "The authorization page will open in your system default browser (reusing the Huawei Cloud account already signed in there); when the browser and the gateway are not on the same machine, paste the final callback URL back into the panel as described above", "将用系统默认浏览器打开登录页(会复用浏览器里已登录的 Accio 账号);完成登录后自动加入账号列表,关掉弹窗即取消等待": "The sign-in page will open in your system default browser (reusing the Accio account already signed in there); the account is added to the list automatically after sign-in, and closing the popup cancels the wait", "将用系统默认浏览器打开登录页(会复用浏览器里已登录的 LobsterAI 账号);完成登录后自动加入账号列表,关掉弹窗即取消等待": "The sign-in page will open in your system default browser (reusing the LobsterAI account already signed in there); the account is added to the list automatically after sign-in, and closing the popup cancels the wait", "小米 MiMo Token Plan 套餐(新加坡站)": "Xiaomi MiMo Token Plan (Singapore site)", "小米 MiMo 按量 API;使用按量 API Key,不要混用 Token Plan 套餐 Key": "Xiaomi MiMo pay-as-you-go API; use a pay-as-you-go API Key, not a Token Plan subscription Key", "小米 MiMo(按量)": "Xiaomi MiMo (pay as you go)", "已到账": "Credited", "已取消登录等待": "Pending sign-in canceled", "已取消领取": "Claim canceled", "已取消验证码": "Verification canceled", "已填写手机号,正在发送验证码…": "Phone number entered; sending the code…", "已声明无需鉴权:账号会被正常选路,出网时不带任何鉴权头": "Marked as needing no authentication: the account is routed normally, and no auth headers are sent outbound", "已完成验证,继续发送": "Verification done, send again", "已导入 {ok} 个,失败 {fail} 个(失败项已标注在列表里)": "Imported {ok}, failed {fail} (failed items are marked in the list)", "已建 API": "Configured APIs", "已建过 · {n} 个账号,点击继续添加": "Already created · {n} accounts, click to add more", "已建过,点击继续添加账号": "Already created, click to add another account", "已打开官方登录页,请在窗口中完成登录…": "Official sign-in page opened; complete sign-in in the window…", "已收到授权回调,正在完成登录…": "Authorization callback received. Completing sign-in…", "已收到浏览器授权,正在获取账号凭据…": "Browser authorization received. Retrieving account credentials…", "已有 API Key(留空则在浏览器登录后自动创建)": "Existing API Key (leave blank to create one after browser sign-in)", "已有验证码流程正在进行,请先完成或取消": "A verification is already in progress. Complete or cancel it first.", "已检测到本机客户端": "Local client detected", "已点发送,等待短信…": "Sent; waiting for the SMS…", "已用系统默认浏览器打开登录页,请在浏览器中完成登录…": "Sign-in page opened in your system default browser; complete sign-in in the browser…", "已读取 QuWork 本机登录态,正在添加账号。": "QuWork local sign-in read. Adding the account…", "已领取,等官方确认": "Claimed, awaiting official confirmation", "引用本机 Gemini CLI oauth_creds.json(只读)": "Reference local Gemini CLI oauth_creds.json (read-only)", "当前分类里没有「{keyword}」,其它分类有 {n} 个匹配": "No match for \"{keyword}\" in this category; {n} found in other categories.", "当前壳版本不支持 AutoClaw 网页登录,请更新应用": "This app version does not support AutoClaw web login; update the app", "当前没有可领取的套餐(活动尚未开始)": "No plans are available to claim right now (the event has not started yet)", "当前版本:{version}": "Current version: {version}", "当前环境不支持领取(桥接方法缺失)": "Claiming is not supported in this environment (bridge method missing)", "必填,CatPaw 账号标识": "Required; CatPaw account identifier", "恢复 Google / GitHub 入口": "Restore Google / GitHub options", "所选代理会保存到账号设置,后续请求继续使用。": "The selected proxy will be saved in account settings and used for subsequent requests.", "手动代理": "Manual proxy", "手动导入 GitHub OAuth / GitHub 令牌": "Manually provide a GitHub OAuth / GitHub token", "手机号": "Phone number", "手机验证码登录": "SMS code login", "打开 LobsterAI(有道龙虾)的官方登录页(lobsterai.youdao.com)并用你的 LobsterAI 账号登录:登录成功后官方页面会跳回本机并自动加入账号列表 —— 回调落在网关自己的端口上,所以浏览器要与网关在同一台机器上;授权码只在本机传给网关,界面不显示明文 token。": "Open the official LobsterAI sign-in page (lobsterai.youdao.com) and sign in with your LobsterAI account: once finished, the official page returns to this machine and the account is added automatically — the callback lands on the gateway's own port, so the browser must be on the same machine as the gateway; the auth code is only handed to the gateway locally and no plaintext token is shown in the UI.", "打开 Trae 的官方授权页(trae.cn)并用你的 Trae 账号登录:授权完成后官方页面会跳回本机的一个临时端口;同机部署自动接收,Docker / 远程面板请按提示复制地址栏回调地址。": "Open the official authorization page for Trae (trae.cn) and sign in with your Trae account: once authorized, the official page redirects back to a temporary port on this machine; a same-machine deployment receives it automatically, while Docker / remote panels should copy the callback URL from the address bar as prompted.", "打开 Accio {label}的官方登录页({site})并用你的 Accio 账号登录:登录成功后官方页面会跳回本机;同机自动完成,Docker / 远程面板按提示粘贴回调地址即可(授权码只在本机传给网关,界面不显示明文 token)。": "Open the official sign-in page for Accio {label} ({site}) and sign in with your Accio account: on success the official page redirects back to this machine; a same-machine setup completes automatically, while Docker / remote panels just paste the callback URL as prompted (the authorization code is passed to the gateway only on this machine, and no plaintext token is shown in the UI).", "打开 Accio {label}登录页": "Open the Accio {label} sign-in page", "打开 Antigravity 网页登录": "Open Antigravity web login", "打开 AtomGit 授权页登录:登录完成后网关会自动轮询代理取回令牌并加入账号列表(授权回调由代理终结,不回到本机,因此无需手工回填回调地址)。": "Open the AtomGit authorization page and sign in: once finished, the gateway automatically polls the broker for the token and adds the account (the callback is terminated by the broker and never returns to this machine, so no callback URL needs to be filled in).", "打开 CatPaw 网页登录": "Open CatPaw web login", "打开 Cline 授权页": "Open Cline authorization page", "打开 CodeArts 授权页": "Open CodeArts authorization page", "打开 LobsterAI 登录页": "Open the LobsterAI sign-in page", "打开 Qoder 网页登录": "Open Qoder web login", "打开 Trae 授权页": "Open Trae authorization page", "打开 ZCode {label}的官方授权页并用你的账号登录。授权结果由 ZCode 服务端记录,网关在后台自动取回凭证并加入账号列表。": "Open the official authorization page for ZCode {label} and sign in with your account. The authorization result is recorded by the ZCode server; the gateway fetches the credential in the background and adds the account to the list.", "打开 ZCode {label}授权页": "Open the ZCode {label} authorization page", "打开下一步授权页": "Open the next authorization page", "打开人机验证": "Open human verification", "打开千问办公网页登录": "Open QwenWork web login", "打开华为云 CodeArts 的官方授权页登录:登录完成后官方页面会把浏览器带回网关自己的 /oauth/callback,网关用一次性授权码换取临时凭据并加入账号列表。
    网关跑在另一台机器上时,网页端会提示把地址栏中的最终回调地址直接粘贴回面板。": "Open the official Huawei Cloud CodeArts authorization page to sign in: once done, the official page brings the browser back to the gateway's own /oauth/callback, and the gateway exchanges the one-time authorization code for temporary credentials and adds the account to the list.
    When the gateway runs on another machine, the web UI prompts you to paste the final callback URL from the address bar back into the panel.", "打开华为云授权页登录:登录完成后网关会自动轮询云端取回授权码并加入账号列表(不需要装 OfficeAce 桌面端,也无需手工回填回调地址)。": "Open the Huawei Cloud authorization page and sign in: once finished, the gateway automatically polls the cloud for the authorization code and adds the account to the list (no OfficeAce desktop app required, and no need to paste a callback URL back manually).", "打开官方授权页": "Open the official authorization page", "打开官方授权页完成设备码授权,登录的是{label}({site})的账号。": "Open the official authorization page and complete the device-code authorization; you will be signing in to a {label} ({site}) account.", "打开授权页": "Open the authorization page", "打开授权页完成确认,账号自动加入 {label}{note}": "Open the authorization page and confirm; the account is added to {label} automatically{note}", "打开方式": "Open with", "打开网页登录": "Open web login", "按已验证邮箱只读引用 cursor-agent 当前登录态;每次操作重读 keychain/auth.json,不复制 token、不主动运行 CLI 续期,退出或失效后需在原客户端重登。": "Reference the current cursor-agent sign-in read-only, pinned to the verified email. Each operation rereads keychain/auth.json without copying tokens or running CLI renewal. Sign in again in the original client after signing out or expiry.", "授权只读引用,不复制、不修改、不续期本机凭证": "Allow read-only references, without copying, modifying or renewing local credentials", "授权回调提交失败;请检查输入并重试,登录仍在等待。": "Authorization callback submission failed. Check the input and retry; sign-in is still waiting.", "授权每次请求只读所选文件,固定当前账号与工作区?": "Allow read-only access to the selected file on each request, pinned to this account and workspace?", "授权码或令牌(原样提交)": "Authorization code or token (submitted unchanged)", "授权读取所选条目": "Allow reading the selected entry", "授权页、换证与取账号信息都走这条线路。无头服务器上没有系统代理,这里不选就走直连(多数网络里到不了 Google)。": "The authorization page, code exchange and account lookup all use this route. A headless server has no system proxy, so leaving it unset means a direct connection (which cannot reach Google in most networks).", "探测失败:{message}": "Probe failed: {message}", "接入一个兼容上游": "Connect a compatible upstream", "控制台 uaa-token(粘贴令牌值或完整的 uaa-token=… Cookie 项)": "Console uaa-token (paste the token value or the full uaa-token=… cookie entry)", "推荐": "Recommended", "提交中…": "Submitting…", "提交授权回调": "Submit authorization callback", "提供商仅在已启用且加载后出现。登录与本机引用均作用在所连接网关,不是手机。": "Providers appear only after being enabled and loaded. Sign-in and local references apply to the connected gateway, not this phone.", "插件专用 Chrome 登录(自动读取凭据)": "Plugin-managed Chrome sign-in (automatic credential capture)", "插件会在网关电脑上启动独立浏览器并读取登录结果,不使用系统默认浏览器。": "The plugin starts a separate browser on the gateway machine and reads the sign-in result. It does not use the system's default browser.", "搜索提供商": "Search providers", "搜索提供商…": "Search providers…", "整份粘贴官方插件 / CLIProxyAPI 落盘的凭据 JSON(形如 {\"codearts_provider_credential\":{…}},铺平的也行)。
    必填:access_key_id、secret_access_key、security_token。要能自动续期,必须连 refresh_token 与 oauth_context 一起粘 —— 临时凭据约一小时到期,缺这半块就续不回来,只能重新登录。": "Paste the whole credential JSON written to disk by the official plugin / CLIProxyAPI (like {\"codearts_provider_credential\":{…}}; a flattened form also works).
    Required: access_key_id, secret_access_key, security_token.For automatic renewal you must paste refresh_token and oauth_context as well — temporary credentials expire in about an hour, and without that half they cannot be renewed; you would have to sign in again.", "文件是{edition}凭证,已按该版本导入": "The file contains {edition} credentials and has been imported as that edition", "新增独立登录": "New independent sign-in", "新建自定义提供商": "New custom provider", "新网关确认代理同次保存后不再重复提交;旧网关使用兼容保存并提示核查,失败不会撤销已添加的账号。": "No second save is sent when the new gateway confirms the proxy was saved with the account. Older gateways use a compatibility save with a verification warning; failure does not remove the added account.", "方案:{label}": "Scheme: {label}", "无需手动复制令牌,验证码在官方页面完成。": "No token copying needed. Complete verification on the official page.", "旧网关未确认代理同次保存,已使用兼容接口保存;请在账号设置中确认代理选择。": "The older gateway did not confirm a combined proxy save. The compatibility endpoint was used; check the proxy selection in account settings.", "明文 JWT 或 auth.json 里的 enc: 加密值(自动解密)": "Plaintext JWT, or the enc: encrypted value in auth.json (decrypted automatically)", "明文 JWT(国际版账号的 access token)": "Plaintext JWT (the access token of an International edition account)", "明确选择文件与只读授权;不修改或续期原客户端登录态。": "Explicitly select the file and authorize read-only access. The original client sign-in is neither modified nor renewed.", "明确选择文件内的账号条目键名": "Select the exact account-entry key in the file", "明确选择标准凭证文件的完整绝对路径": "Select the full absolute path to a standard credential file", "是否授权只读取此文件和所选账号凭证?": "Allow read-only access to this file and the selected account credential?", "显示凭证": "Show credentials", "智谱 bigmodel.cn 的 Coding 套餐,Key 在 open.bigmodel.cn/usercenter/apikeys": "Zhipu's bigmodel.cn Coding plan; get the Key at open.bigmodel.cn/usercenter/apikeys", "暂不支持自动安装": "Automatic installation unavailable", "暂时无法检查官方最新版;已安装且满足最低要求的客户端仍可使用。": "Cannot check the latest official version right now. An installed client that meets the minimum requirements can still be used.", "暂时无法登录": "Sign-in unavailable", "有可用更新": "Update available", "未开启客户端调试端口时,请使用网页登录或粘贴 Cookie。": "If the client debugging port is not enabled, use web sign-in or paste cookies.", "未知错误": "Unknown error", "未能获取授权地址,请重试": "Could not get the authorization URL; try again", "未能读取 cc-switch 数据": "Could not read cc-switch data", "未领取成功": "Claim unsuccessful", "本体订阅未返回动态登录方式(501);不会猜测导入接口或显示插件手动凭证入口。请更新网关后重试。": "The native subscription returned no dynamic sign-in methods (501). Import endpoints will not be guessed and no plugin manual-credentials form will be shown. Update the gateway and retry.", "本地 Ollama、OpenCode Zen 免费档这类上游要勾上,否则账号不可用": "Check this for upstreams like local Ollama or the OpenCode Zen free tier; otherwise the account cannot be used", "本家有两个**互不替代**的凭证,按你要用的功能填,至少填一个:编码套餐 API Key 用于转发推理(打 {site})与查询窗口限额(每 N 小时 / 每周的剩余比例);jwt 用于领取套餐与查询余额(打 zcode.z.ai 的 billing 网关,官方叫 Coding Plan JWT,是一串三段点分的字符串)。余额两把都能查、但读到的东西不同:jwt 读到余额桶与套餐到期,API Key 读到窗口限额;而领取只认 jwt、转发只认 API Key。请填写 {label}账号的凭证 —— {plan}(最容易拿到的办法:直接用上方的「网页登录」—— 它会替你把这个 API Key 换好,两个凭证一起拿到。)": "This provider has two credentials that **do not replace each other**; fill in the one(s) for the features you need, at least one: the Coding Plan API Key is used for forwarding inference (hits {site}) and for querying the window limits (the remaining percentage of each N-hour / weekly window); the jwt is used for claiming plans and querying balance (hits the billing gateway at zcode.z.ai; officially called a Coding Plan JWT, a three-segment dot-separated string). Either one can query balance, but they read different things: the jwt reads the balance buckets and the plan expiry, while the API Key reads the window limits; and claiming only accepts the jwt, forwarding only accepts the API Key. Please enter the credentials for the {label} account — {plan} (the easiest way: just use \"Web login\" above — it exchanges this API Key for you and gets both credentials at once.)", "本机 Ollama 的 OpenAI 兼容端点,无需 API Key(默认已勾上「该上游无需鉴权」,鉴权头一个都不发)": "The local Ollama OpenAI-compatible endpoint; no API Key needed (\"This upstream needs no authentication\" is checked by default, and no auth headers are sent at all)", "本机 auth.json(只读引用)": "Local auth.json (read-only reference)", "本机凭证已校验。宿主仅保存文件引用与稳定身份,每次请求重新读取。": "Local credentials verified. The host stores only a file reference and stable identity, rereading it on each request.", "本机部署会自动完成登录;服务器或 Docker 部署时,若授权后跳到无法访问的 localhost 或 127.0.0.1 页面,请把地址栏中的完整回调地址粘贴回来。AWS 登录如需继续授权,请打开下一步授权页,完成后再次回填。请勿修改地址或把回调链接发给他人。": "Local deployments complete sign-in automatically. For server or Docker deployments, if authorization redirects to an unreachable localhost or 127.0.0.1 page, paste the complete URL from the address bar here. If AWS needs another authorization step, open the next authorization page and paste its new callback URL afterward. Do not modify or share callback URLs.", "本次未确认到账": "Not confirmed as credited this time", "条可导入": "are importable", "条配置,其中": "configs in cc-switch, of which", "桌面运行时不可用(Tauri 未初始化)": "Desktop runtime unavailable (Tauri not initialized)", "检测失败": "Check failed", "模型网关基址": "Model gateway base URL", "正在准备 AWS 授权…": "Preparing AWS authorization…", "正在准备安装…": "Preparing installation…", "正在取消安装…": "Canceling installation…", "正在启用新版本…": "Activating the new version…", "正在打开百度登录页…": "Opening the Baidu sign-in page…", "正在扫描本机 cc-switch…": "Scanning cc-switch on this machine…", "正在换发访客凭证…": "Requesting a guest credential…", "正在校验官方安装包…": "Verifying the official download…", "正在检查安装状态…": "Checking installation status…", "正在检查客户端版本…": "Checking the client version…", "正在添加…": "Adding…", "正在等待{name}登录完成;完成或取消后才能发起新的登录": "Waiting for {name} sign-in to finish; you can start a new sign-in only after it completes or is canceled", "此 Copilot 手动令牌方式未声明回调输入契约,暂不发起;请改用设备码登录或只读本机引用。": "This Copilot manual-token method declares no callback input contract and will not be started. Use device-code sign-in or a read-only local reference instead.", "此提供商已有登录任务,请先完成或取消。": "A sign-in is already in progress for this provider. Complete or cancel it first.", "此提供商未声明动态登录方式,请在网关桌面面板使用其既有入口;手机端不会猜测凭证字段。": "This provider declares no dynamic sign-in methods. Use its existing entry point in the gateway desktop panel; the mobile app will not guess credential fields.", "此方式需要原样提交授权码或令牌;输入会隐藏,不会当作 URL 或 API 凭证解析。提交后仍需等待网关确认。": "This method requires an unchanged authorization code or token. The input is hidden and is not parsed as a URL or API credential. Wait for gateway confirmation after submitting.", "此方式需要完整回调地址;请原样粘贴,不拆分参数或重建地址。提交后仍需等待网关确认。": "This method requires the complete callback URL. Paste it unchanged, without splitting parameters or rebuilding the URL. Wait for gateway confirmation after submitting.", "每个账号使用独立的官方登录目录。终端登录沿用该终端的网络环境;这里选择的代理用于添加后的模型请求。": "Each account uses its own official sign-in directory. Terminal sign-in uses that terminal's network settings; the proxy selected here applies to model requests after the account is added.", "每周": "Weekly", "每日": "Daily", "每月": "Monthly", "没有则无法自动续期": "Without it, automatic renewal is not possible", "没有匹配「{keyword}」的提供商": "No providers match \"{keyword}\"", "浏览器拦截了弹窗": "The browser blocked the pop-up", "浏览器授权已收到,但网关直连 DeepAI 失败。请在登录代理中填入系统代理或选择可用代理后重新登录。": "Browser authorization was received, but the gateway could not reach DeepAI directly. Fill from the system proxy or choose a working sign-in proxy, then sign in again.", "浏览器授权已收到,但通过所选代理获取账号凭据失败。请检查该代理后重新登录。": "Browser authorization was received, but retrieving account credentials through the selected proxy failed. Check the proxy and sign in again.", "浏览器显示登录完成后,网关还需联网获取账号凭据。若浏览器或 Magpie 使用系统代理,请先在下方点击「填入系统代理」;选择直连不会跟随系统代理。": "After the browser shows sign-in complete, the gateway still needs to retrieve account credentials online. If your browser or Magpie uses a system proxy, click “Fill from system proxy” below first. Direct connections do not use the system proxy.", "浏览器登录(墨点额度 + 自动创建 API Key)": "Browser sign-in (ink credits + automatic API Key creation)", "浏览器登录(复用已有 API Key)": "Browser sign-in (reuse an existing API Key)", "浏览器面板无法读取其他站点的登录态,请使用本人网页账号的令牌。": "The browser panel cannot read sign-in sessions from other sites. Use the token from your own web account.", "浏览器面板无法读取其它站点的 Cookie,请登录 www.doubao.com 后,使用「填写凭证」粘贴完整 Cookie。": "The browser panel cannot read cookies from other sites. Sign in at www.doubao.com, then paste the complete cookies under Credentials.", "添加 DeepSeek 账号": "Add DeepSeek account", "添加 {name} 账号": "Add {name} account", "添加中…": "Adding…", "添加到 ": "Add to ", "添加到此提供商": "Add to this provider", "添加失败:{reason}": "Add failed: {reason}", "添加小浣熊账号": "Add Raccoon account", "添加方式": "Add method", "添加时要用它出网校验凭证(例如 Antigravity 要打一次 Google 的 token 端点)。无头服务器上没有系统代理,这里不选就走直连。": "Used to reach the network when validating the credential on add (for example, Antigravity calls a Google token endpoint). A headless server has no system proxy, so leaving it unset means a direct connection.", "添加访客账号": "Add a guest account", "添加账号": "Add account", "火山引擎 Coding 套餐;通用推理接入点为 https://ark.cn-beijing.volces.com/api/v3": "Volcano Engine Coding plan; the general inference endpoint is https://ark.cn-beijing.volces.com/api/v3", "点击添加账号": "Click to add an account", "点击登录后,在 Google 页面授权,再原样粘贴授权码或完整页面地址;已登录的 agy 会直接连接。Google 凭证由官方客户端保管,Agent2API 只保存本机连接标记。同一网关仅使用 agy 当前登录的一个账号,不支持复制为多个独立账号。": "Click Sign in, authorize on Google's page, then paste the authorization code or full page URL unchanged. If agy is already signed in, it connects directly. The official client keeps Google's credentials; Agent2API stores only a local connection marker. Each gateway uses agy's current account, not multiple independent copies.", "点开即预填,填 Key 接入": "Opens prefilled; enter your Key to connect", "点按钮后先过一次滑块验证(官方风控),随后打开登录页,登录完成即自动添加账号。
    这是国际版官方唯一的登录方式;已在客户端登录过的,用「导入桌面端登录态」更快。": "After clicking the button, first pass a slider verification (the vendor's risk control), then the sign-in page opens and the account is added automatically once you sign in.
    This is the only official sign-in method for the International edition; if you are already signed in to the client, \"Import desktop login state\" is faster.", "独立 Kiro OAuth 支持续期;保留原登录验证,不接受任意 bearer token。": "Independent Kiro OAuth supports renewal. Original sign-in validation is retained; arbitrary bearer tokens are not accepted.", "用 AutoClaw 账号绑定的手机号登录:点击「获取验证码」,收到短信后填入下方并登录。验证码由本机直接提交给官方接口,界面不显示 token。": "Sign in with the phone number bound to your AutoClaw account: click \"Get code\", then enter the SMS code below and sign in. The code is submitted from this machine directly to the official API; no token is shown in the UI.", "用 CatPaw 账号完成登录(美团 passport),成功后自动加入账号列表。": "Sign in with your CatPaw account (Meituan Passport); the account is added to the list automatically on success.", "用 Loomy 账号绑定的手机号登录:点「获取验证码」后填入即可。这是本家最省事的入口。": "Sign in with the phone number bound to your Loomy account: click \"Get code\" and enter it. This is the easiest way in for this provider.", "用于转发;形如 apiKey.secret 两段点分(不填则这个账号不能转发)": "Used for forwarding; two dot-separated segments like apiKey.secret (if left blank, this account cannot forward)", "用于领取套餐与查询余额;不填则这个账号不能领取与查余额": "Used for claiming plans and querying balance; if left blank, this account cannot claim or check balance", "用户 ID": "User ID", "用绑定的手机号登录:点「获取验证码」后填入即可。这是国内版官方唯一的登录方式。": "Sign in with your bound phone number: click \"Get code\" and enter it. This is the only official sign-in method for the China edition.", "用绑定的手机号登录:点「获取验证码」,收到短信后填入下方并点「登录并添加」。这是国内站官方唯一的登录方式。": "Sign in with your bound phone number: tap \"Get code\", enter the SMS code below and click \"Sign in and add\". This is the only official sign-in method for the China site.", "由插件打开浏览器登录": "Sign in using the plugin's browser", "由本机 Grok Build CLI 执行官方设备授权;仅保存 home/scope/account 引用,不镜像 token,后续操作只读,不提供维护续期。": "The local Grok Build CLI performs official device authorization. Only a home/scope/account reference is stored, without token copies. Subsequent operations are read-only; maintenance renewal is not provided.", "留空使用 1.17.16(10117016)": "Leave empty to use 1.17.16(10117016)", "留空使用该提供商默认值": "Leave empty to use the provider's default", "留空使用账号默认名称": "Leave blank to use the default account name", "留空使用默认的 User-Agent;可从预置里选一个内置客户端,也可以直接填写。": "Leave empty to use the default User-Agent; pick a built-in client preset or type one directly.", "留空则用提供商名称": "Leave blank to use the provider name", "留空自动查找;也可填写网关本机 agy 可执行文件的绝对路径": "Leave blank to detect automatically, or enter the absolute path to agy on the gateway machine", "登录 / 添加 {name} 账号": "Sign in / add {name} account", "登录 JWT": "Login JWT", "登录 chat.deepseek.com 后,打开开发者工具 → Application → Local Storage,复制 userToken 的 value。": "Sign in at chat.deepseek.com, open Developer Tools → Application → Local Storage, and copy the value field of userToken.", "登录 session(一长串)": "Login session (a long string)", "登录中…": "Signing in…", "登录代理不支持轮询出网,请选择一条已保存的代理": "Sign-in does not support rotating proxies. Select one saved proxy.", "登录凭证 accessToken": "Sign-in credential accessToken", "登录出网代理": "Sign-in outbound proxy", "登录取消未确认,请刷新状态后重试。": "Sign-in cancellation was not confirmed. Refresh the status and retry.", "登录失败:{message}": "Sign-in failed: {message}", "登录尚未完成,请继续通过共享登录桥等待结果": "Sign-in is not complete yet. Continue waiting for the result through the shared sign-in bridge.", "登录已结束": "Sign-in has ended", "登录并添加": "Sign in and add", "登录态文件路径:~/.box-agent/config/auth.json(Windows:C:\\Users\\<你的用户名>\\.box-agent\\config\\auth.json)": "Login-state file path: ~/.box-agent/config/auth.json (Windows: C:\\Users\\\\.box-agent\\config\\auth.json)", "登录授权地址无效,已取消本次等待。": "The sign-in authorization URL is invalid; this wait was canceled.", "登录桥未返回已完成的账号或会话,请重试": "The sign-in bridge did not return a completed account or session. Try again.", "登录桥返回了空会话,无法确认账号已添加": "The sign-in bridge returned an empty session, so account addition cannot be confirmed.", "相同协议和地址的提供商已经存在。可以继续新建独立提供商,或明确选择已有提供商添加账号。": "A provider with the same protocol and address already exists. Create a separate provider, or select an existing one to add an account.", "看全部匹配": "See all matches", "确定删除自定义提供商「{name}」?将同时删除该提供商下 {count} 个账号,删除后无法恢复。": "Delete custom provider \"{name}\"? This will also delete {count} accounts under it; deletion cannot be undone.", "站点名称": "Site name", "端砚由插件在网关电脑上启动独立的 Edge、Chrome 或 Chromium 窗口,不使用系统默认浏览器或应用内嵌窗口。": "The InkStone plugin opens a separate Edge, Chrome or Chromium window on the gateway machine. It does not use the system default browser or the app's embedded window.", "等待 Accio {label}登录完成…": "Waiting for Accio {label} sign-in…", "等待 AtomCode 登录完成…": "Waiting for AtomCode sign-in…", "等待 CatPaw 登录完成…": "Waiting for CatPaw sign-in…", "等待 Cline 授权确认…": "Waiting for Cline authorization confirmation…", "等待 CodeArts 登录完成…": "Waiting for CodeArts sign-in…", "等待 Google 授权完成…": "Waiting for Google authorization…", "等待 KukuAI 登录完成…": "Waiting for KukuAI sign-in…", "等待 LobsterAI 登录完成…": "Waiting for LobsterAI sign-in…", "等待 MonkeyCode 登录完成…": "Waiting for MonkeyCode sign-in…", "等待 OfficeAce 登录完成…": "Waiting for OfficeAce sign-in…", "等待 OrcaTerm 登录完成…": "Waiting for OrcaTerm sign-in…", "等待 Qoder 授权完成…": "Waiting for Qoder authorization…", "等待 Trae 授权完成…": "Waiting for Trae authorization…", "等待 ZCode {label}授权完成…": "Waiting for ZCode {label} authorization…", "等待你在官方页面完成登录,成功后自动添加账号。": "Waiting for you to sign in on the official page. Your account will be added automatically on success.", "等待千问办公登录完成…": "Waiting for the QwenWork sign-in to finish…", "等待小浣熊登录完成…": "Waiting for Raccoon sign-in…", "等待插件完成登录": "Waiting for the plugin to complete sign-in", "等待浏览器完成登录": "Waiting for browser sign-in to complete", "等待浏览器授权;若本机回调页面无法打开,请复制地址栏中的完整地址回填。": "Waiting for browser authorization. If the local callback page cannot open, copy the complete address from the address bar and paste it here.", "等待登录完成…": "Waiting for sign-in…", "等待网页登录…": "Waiting for web login…", "等待豆包工作登录完成…": "Waiting for Doubao Work sign-in…", "粘贴 API Key": "Paste API Key", "粘贴 API 令牌": "Paste API token", "粘贴 Accio 的 accessToken": "Paste the Accio accessToken", "粘贴 Antigravity 的 Google refresh token(以 1// 开头;直接粘贴含 refresh_token= 的整行也行)。
    这是网页登录之外的手工入口(例如从已登录的官方 IDE 里导出)。refresh token 不会过期,access token 到期由网关自动续期;令牌丢了只能重新走 Google 授权,请妥善保存。": "Paste Antigravity's Google refresh token (starts with 1//; pasting the whole line containing refresh_token= also works).
    This is a manual entry besides web login (for example, exported from the official IDE you are already signed in to). The refresh token does not expire, and the gateway renews the access token automatically when it expires; if the token is lost, you can only go through Google authorization again, so keep it safe.", "粘贴 Command Code 的 API Key(user_ 开头;从官方 CLI 的 ~/.commandcode/auth.json 或网页 studio 获取)。整行 / 带引号 / 带 Bearer 前缀地粘都行,网关会自己剥成裸 key。key 不过期、也没有续期接口,失效后重新获取即可;添加时网关会做一次轻量探活,失败不影响添加。": "Paste the Command Code API Key (starts with user_; get it from the official CLI's ~/.commandcode/auth.json or the web studio). Pasting the whole line / with quotes / with the Bearer prefix all work; the gateway strips it down to the bare key itself. The key does not expire and there is no renewal API, so if it stops working just get a new one. When adding, the gateway runs a lightweight liveness check; a failure does not affect adding.", "粘贴 Cookie": "Paste Cookie", "粘贴 Google refresh token": "Paste Google refresh token", "粘贴 ModelScope 的 API 令牌(ms- 开头,在 {site} 的「访问令牌」页获取)。
    {siteNote}
    这枚令牌两用:网关既用它调推理,也用它读账号身份、魔粒余额与每日签到。令牌长期有效、没有续期接口,失效后重新获取再粘一次即可。": "Paste a ModelScope API token (starts with ms-; create one on the \"Access tokens\" page of {site}).
    {siteNote}
    The same token serves two purposes: the gateway uses it both to call inference and to read the account identity, the credits balance and the daily check-in. The token is long-lived and there is no renewal API — if it stops working, just create a new one and paste it again.", "粘贴 OrcaTerm 的 OAuth accessToken(JWT,三段点分;从桌面客户端 data.bin 或 Web 版 Cookie ot_session 获取)。直接粘贴含 Bearer / ot_session= 的整行也行,网关会自己剥成裸 token。添加后由网关自动续期(上游有续期接口),无需跟随 2 小时时效手动更换。": "Paste OrcaTerm's OAuth accessToken (a JWT with three dot-separated parts; available from the desktop client's data.bin or the web version's ot_session cookie). Pasting a whole line containing Bearer / ot_session= is fine too — the gateway strips it down to the bare token. After adding, the gateway renews it automatically (the upstream has a renewal API), so you do not need to follow the 2-hour expiry by hand.", "粘贴 Qoder 个人访问令牌(pt-…)": "Paste the Qoder personal access token (pt-…)", "粘贴 accessToken": "Paste accessToken", "粘贴 access_token(一长串 JWT)": "Paste access_token (a long JWT)", "粘贴 session cookie": "Paste session cookie", "粘贴 token / refreshToken": "Paste token / refreshToken", "粘贴 userToken.value": "Paste userToken.value", "粘贴 workos:… 开头的令牌(不带前缀也会自动补上)": "Paste a token starting with workos:… (the prefix is added automatically if missing)", "粘贴 www.doubao.com 的完整 Cookie(必须含 sessionid),也支持 Cookie JSON 数组或对象。复用豆包工作账号的额度;Cookie 失效后需重新登录,没有自动续期。": "Paste the complete www.doubao.com cookies, including sessionid. Cookie JSON arrays and objects are also accepted. Uses your Doubao Work account quota; expired cookies require signing in again and cannot be renewed automatically.", "粘贴令牌": "Paste token", "粘贴令牌对": "Paste token pair", "粘贴你本人已授权的 GitHub OAuth 令牌(不是设备码或 Copilot 短令牌)。令牌仍需由 GitHub 验证并交换;CLI 专用令牌可能不支持编辑器令牌交换。": "Paste your authorized GitHub OAuth token, not a device code or short-lived Copilot token. GitHub must still validate and exchange it; CLI-only tokens may not support editor-token exchange.", "粘贴完整登录凭证 JSON,或只填模型凭证 llmToken。仅模型凭证可对话;积分、续期和奖励需要登录凭证 accessToken。": "Paste the full sign-in JSON or just the model credential llmToken. Model-only credentials support chat; credits, renewal and rewards require accessToken.", "粘贴智谱清言的访问令牌(JWT,三段点分)。获取方式:浏览器打开 chatglm.cn 并登录后,在开发者工具的 Application → Cookies 里复制 chatglm_token 的值(也可以直接粘 chatglm_token=…; 整行)。粘贴后会先向上游校验一次,校验通过才落账号;登录账号的积分、签到能力都能用,之后由网关自动续期(上游有续期接口)。": "Paste a Zhipu Qingyan access token (a JWT with three dot-separated parts). How to get it: open chatglm.cn in a browser, sign in, then copy the value of the chatglm_token cookie from Application → Cookies in the developer tools (pasting the whole chatglm_token=…; line works too). It is verified against the upstream once after pasting, and the account is only saved if that passes; signed-in accounts get points and sign-in capability, and the gateway renews it automatically afterwards (the upstream has a renewal API).", "粘贴登录凭据": "Paste login credentials", "粘贴的是登录 session(同时是模型网关的 token)。Loomy 没有续期接口,session 有效期约 14 天,过期后重新登录即可。": "What you paste is the login session (which is also the model gateway token). Loomy has no renewal API; the session is valid for about 14 days, so just sign in again after it expires.", "粘贴网关凭据": "Paste gateway credentials", "粘贴网页登录凭证": "Paste web login credentials", "粘贴网页登录态 cookie monkeycode_ai_session 的值(在浏览器里复制整段 Cookie 直接粘贴也行,网关会自己剥出值)。
    {siteNote}
    MonkeyCode 没有续期接口:session 有效期约 30 天(硬限制),过期后重新登录网页、再粘贴一次即可。": "Paste the value of the web session cookie monkeycode_ai_session (copying the whole Cookie in the browser and pasting it directly also works; the gateway extracts the value itself).
    {siteNote}
    MonkeyCode has no renewal API: the session is valid for about 30 days (a hard limit); once it expires, sign in to the web page again and paste it one more time.", "粘贴网页访问令牌": "Paste a web access token", "粘贴访问令牌": "Paste an access token", "系统浏览器": "System browser", "系统浏览器可复用已有登录态(国际版推荐);内嵌窗口更干净。": "The system browser can reuse an existing login state (recommended for the International edition); the embedded window is cleaner.", "系统浏览器打开(复用已登录的 Cline 账号);完成后自动加入列表": "Opens in the system browser (reuses the signed-in Cline account); added to the list when done", "系统浏览器打开(复用已登录的 Google 账号);完成后自动加入列表": "Opens in the system browser (reuses the Google account already signed in); added to the list when done", "系统浏览器打开(复用已登录的 Zai / Google 账号);完成后自动加入列表": "Opens in the system browser (reuses the signed-in Zai / Google account); added to the list when done", "系统浏览器打开(复用已登录的美团账号);完成后自动加入列表": "Opens in the system browser (reuses the signed-in Meituan account); added to the list when done", "系统浏览器打开(复用已登录账号);完成后自动加入列表": "Opens in the system browser (reuses a signed-in account); added to the list when done", "系统默认浏览器": "System default browser", "组织登录地址(Start URL)": "Organization sign-in address (Start URL)", "继续新建独立提供商": "Create a separate provider", "续期令牌": "Refresh token", "编码套餐 API Key": "Coding Plan API Key", "网关 Secret": "Gateway secret", "网关未返回有效的手动回调输入契约;请更新网关后重新发起。": "The gateway did not return a valid manual callback input contract. Update the gateway and start again.", "网页 Cookie": "Web Cookie", "网页登录": "Web login", "网页登录 / 填写凭证": "Web sign-in / Enter credentials", "网页登录的打开方式": "How to open web login", "网页登录(Zai / Google)": "Web login (Zai / Google)", "网页访问令牌": "Web access token", "腾讯 TokenHub 国内版(按量)": "Tencent TokenHub (China, pay as you go)", "腾讯 TokenHub 国内站按量 API;使用 TokenHub API Key,不是 Token Plan 套餐或 WorkBuddy 凭证": "Tencent TokenHub China pay-as-you-go API; use a TokenHub API Key, not Token Plan or WorkBuddy credentials", "腾讯 TokenHub 国际版(按量)": "Tencent TokenHub (International, pay as you go)", "腾讯 TokenHub 国际站按量 API;使用 TokenHub API Key,不是 Token Plan 套餐或 WorkBuddy 凭证": "Tencent TokenHub International pay-as-you-go API; use a TokenHub API Key, not Token Plan or WorkBuddy credentials", "自定义": "Custom", "自建聚合面板:填你自己的站点地址。余额查询用该账号的 API Key 打 {base}/v1/usage,不需要额外配置": "Self-hosted aggregation panel: fill in your own site address. Balance query calls {base}/v1/usage with this account's API key; no extra setup", "自建聚合面板:填你自己的站点地址;余额查询要另填 NewAPI 的个人访问令牌(见下方「余额查询」一段)": "Self-hosted aggregation panel: fill in your own site address; balance query additionally needs a NewAPI personal access token (see \"Balance query\" below)", "获取风控配置失败,将直接尝试领取:{message}": "Failed to get the risk-control config; trying to claim directly: {message}", "获取风控配置失败:{message}": "Could not load verification settings: {message}", "获取验证码": "Get code", "要添加到其他站点,请返回「已建 API」重新选择": "To add to another site, return to Configured APIs and select it", "解锁 Premium": "Unlock Premium", "访客模式": "Guest mode", "访客模式(免登录)": "Guest mode (no sign-in)", "访问令牌": "Access token", "该上游无需鉴权(不发送鉴权头)": "This upstream needs no authentication (no auth headers are sent)", "该地址已有提供商": "A provider already uses this address", "该提供商": "This provider", "该提供商已不存在或地址已变更,请重新选择": "This provider no longer exists or its address has changed; select it again", "该提供商已不存在(可能已被删除),请刷新后重试": "This provider no longer exists (it may have been deleted); refresh and try again", "该提供商账号添加功能即将上线": "Account adding for this provider is coming soon", "该登录需要继续跳转,请在网关桌面面板重新发起。": "This sign-in requires another redirect. Start it again in the gateway desktop panel.", "该自定义提供商已不存在(可能已被删除),请刷新后重试": "This custom provider no longer exists (it may have been deleted); refresh and try again", "请使用网页访问令牌,不要填写 sk- 开头的 API Key。": "Use a web access token, not an API key starting with sk-.", "请先选择一个自定义提供商": "Select a custom provider first", "请在弹出的滑块中完成验证(官方要求的风控步骤)": "Complete the verification in the slider popup (a risk-control step required by the vendor)", "请在插件打开的专用 Chrome 窗口中登录移动云(yun.139.com)。登录成功后会自动读取并验证凭据,随后继续添加账号。": "Sign in to China Mobile Cloud (yun.139.com) in the dedicated Chrome window opened by the plugin. After sign-in, credentials are read and verified automatically, then the account is added.", "请在插件打开的端砚控制台窗口中登录(支持密码、短信或扫码)。插件会自动读取登录结果并关闭窗口,无需手动关闭;随后按所选方式创建或复用 API Key。新建密钥的明文只显示一次,由插件保存。": "Sign in to the InkStone console window opened by the plugin using a password, SMS or QR code. The plugin reads the sign-in result and closes the window automatically. It then creates or reuses an API Key according to the selected method. New keys are shown in plaintext only once and are saved by the plugin.", "请在插件打开的端砚控制台窗口中登录(支持密码、短信或扫码),然后退出该浏览器:macOS 请按 Cmd+Q(只关闭窗口不够),Linux 请关闭最后一个窗口。插件读取登录结果后会继续处理,并按所选方式创建或复用 API Key。新建密钥的明文只显示一次,由插件保存。": "Sign in to the InkStone console window opened by the plugin using a password, SMS or QR code, then quit that browser: press Cmd+Q on macOS (closing the window is not enough), or close its last window on Linux. The plugin then reads the sign-in result and creates or reuses an API Key according to the selected method. New keys are shown in plaintext only once and are saved by the plugin.", "请在系统浏览器完成官方登录。": "Complete the official sign-in in your system browser.", "请在运行网关的机器上打开 PowerShell,执行下面的专用登录命令,并按官方提示完成授权。面板会自动检测登录结果,不需要粘贴凭证。": "Open PowerShell on the gateway machine, run the dedicated sign-in command below and follow the official authorization prompts. The panel detects completion automatically; you do not need to paste credentials.", "请在运行网关的机器上打开终端,执行下面的专用登录命令,并按官方提示完成授权。面板会自动检测登录结果,不需要粘贴凭证。": "Open a terminal on the gateway machine, run the dedicated sign-in command below and follow the official authorization prompts. The panel detects completion automatically; you do not need to paste credentials.", "请填写 11 位大陆手机号": "Enter an 11-digit mainland China phone number", "请填写 6 位数字验证码": "Enter the 6-digit code", "请填写 Base URL": "Enter the Base URL", "请填写 {label}": "Enter {label}", "请填写名称": "Enter a name", "请安装并启用对应的提供商插件;列表为空时请刷新后重试。": "Install and enable the corresponding provider plugin. If the list is empty, refresh and try again.", "请完成验证…": "Complete the verification…", "请选择客户端凭证文件,或本软件导出的单账号 JSON 文件": "Select a client credential file or an individual account JSON file exported by this application.", "读取 %APPDATA%/AutoClaw/auth.json 并解密,仅 Windows": "Reads and decrypts %APPDATA%/AutoClaw/auth.json; Windows only", "读取 ~/.cline/data/settings/providers.json,需已在 Cline 客户端登录": "Reads ~/.cline/data/settings/providers.json; requires being signed in to the Cline client", "读取 ~/.meituan-catpaw/auth.json,需已在 CatPaw 客户端登录": "Reads ~/.meituan-catpaw/auth.json; requires being signed in to the CatPaw client", "读取本机 KukuAI 客户端登录态(%APPDATA%\\baidugenflowpro\\Network\\Cookies),需已在 KukuAI 客户端登录": "Reads the local KukuAI client login state (%APPDATA%\\baidugenflowpro\\Network\\Cookies); requires being signed in to the KukuAI client", "读取本机 OrcaTerm 客户端登录态(%APPDATA%\\com.orcaterm-desktop.app\\data.bin),需已在 OrcaTerm 客户端登录": "Read the local OrcaTerm client sign-in state (%APPDATA%\\com.orcaterm-desktop.app\\data.bin); the OrcaTerm client must be signed in", "读取本机已登录豆包工作客户端的 Cookie,每次请求实时读取;客户端需使用 --remote-debugging-port=9342 启动。本软件不修改、关闭或重启客户端。": "Reads cookies from the signed-in local Doubao Work client on each request. Start the client with --remote-debugging-port=9342. This application does not modify, close or restart the client.", "读取本机智谱清言客户端登录态(%APPDATA%\\chatglm\\Network\\Cookies),需已在客户端登录": "Read the local Zhipu Qingyan client sign-in state (%APPDATA%\\chatglm\\Network\\Cookies); the client must be signed in", "读取的是网关电脑上已登录的客户端,不是打开面板的电脑;也可改用粘贴凭据。": "Reads the signed-in client on the gateway machine, not the computer displaying the panel. You can also paste credentials instead.", "读取网关所在机器上 kiro-cli 或 Kiro IDE 的登录态,不是当前浏览器所在电脑的账号;续期后会写回原处。": "Reads kiro-cli or Kiro IDE sign-in on the gateway machine, not the computer running this browser. Renewed credentials are written back to the original location.", "读取运行网关的电脑上已登录的 QuWork,只保存本机引用,不修改官方客户端文件;切换账号后需重新导入。": "Reads QuWork signed in on the gateway machine and stores only a local reference without changing official files. Import again after switching accounts.", "读本机官方客户端(Tencent WorkBuddy / WorkBuddy AI)当前登录的账号:自动定位其凭证目录里最新的登录态文件(需已在本机官方客户端登录)。导入后由网关自动续期,无需跟随 2 小时时效手动换令牌。": "Reads the account currently logged in to the official client (Tencent WorkBuddy / WorkBuddy AI) on this machine: the newest session file in its credential directory is located automatically (the official client must be logged in on this machine). The gateway renews the token after import — no need to swap tokens manually with the 2-hour expiry.", "读本机客户端当前登录态(明文 Cookie,无需解密)。客户端运行时 Cookies 文件被独占占用,导入前请先关闭 KukuAI 客户端。": "Reads the local client's current login state (plaintext Cookie, no decryption needed). The Cookies file is exclusively locked while the client runs, so close the KukuAI client before importing.", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。": "Reads the local client's current login state live each time (deleting this record does not affect the client's login state).", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。客户端重新登录后点「刷新 Token」同步。": "Reads the local client's current login state live each time (deleting this record does not affect the client's login state). After signing in again in the client, click \"Refresh token\" to sync.", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。客户端重新登录后重新导入即可。": "Reads the local client's current login state live each time (deleting this record does not affect the client's login state). After signing in again in the client, just re-import.", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。用 Zai / Google 登录客户端的用户走这一条。": "Reads the local client's current login state live each time (deleting this record does not affect the client's login state). Users who sign in to the client with Zai / Google should use this one.", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。这一条归入 {label}。": "Reads the local client's current login state live each time (deleting this record does not affect the client's login state). This one is grouped under {label}.", "读本机客户端当前登录的 OAuth 令牌(明文 JSON,无需解密)。导入后由网关自动续期,无需跟随客户端的 2 小时时效手动换令牌。": "Reads the OAuth token the local client is currently signed in with (plain-text JSON, no decryption needed). After importing, the gateway renews it automatically — no need to follow the client's 2-hour expiry by hand.", "读本机客户端当前的登录态。客户端的 Cookies 是 DPAPI 加密的(Chromium os_crypt),因此仅 Windows 可用;客户端正在运行时可能读不到该文件,先退出客户端再试即可(也可改用「填写凭证」粘贴令牌)。": "Read the current sign-in state of the local client. The client's cookies are DPAPI-encrypted (Chromium os_crypt), so this is Windows-only; the file may be unreadable while the client is running — quit the client and retry (or use \"Fill in credentials\" to paste a token instead).", "豆包工作": "Doubao Work", "账号信息": "Account info", "账号信息不完整,请刷新后重试": "Account info is incomplete; refresh and try again", "账号名由插件自动获取,添加后可修改。": "The plugin fills in the account name automatically; you can change it after adding.", "账号已添加,但代理选择未确认保存;请在账号设置中重新检查。": "Account added, but saving the proxy selection was not confirmed. Check it in account settings.", "账号已添加,但未返回账号 ID,无法保存登录代理选择。": "Account added, but no account ID was returned, so the sign-in proxy selection could not be saved.", "账号已添加,但请留意:{warning}": "Account added, but note: {warning}", "账号已添加,但账号列表同步失败,请刷新重试。": "Account added, but syncing the account list failed. Refresh and retry.", "账号文件的提供商与当前选择不一致,请选择对应的提供商后再导入": "The account file belongs to a different provider. Select the matching provider before importing it.", "账号版本": "Account edition", "账号类型": "Account type", "账号:{name}
    ": "Account: {name}
    ", "走 Inference Providers 路由,Key 在 hf.co/settings/tokens 创建": "Routes through Inference Providers; create the Key at hf.co/settings/tokens", "返回提供商列表": "Back to providers", "还没有可用的提供商。各家提供商的转发与账号实现都在插件包里,装好之后这里就会出现。": "No providers available yet. Forwarding and account handling for each provider live in plugin packs; they show up here once a pack is installed.", "还没有账号": "No accounts yet", "还需完成 AWS 授权:请打开下一步授权页,完成后回填新的完整回调地址。": "AWS authorization is still required. Open the next authorization page, then paste the new complete callback URL.", "还需继续授权,请打开下一步授权页,完成后回填新的完整回调地址。": "More authorization is required. Open the next authorization page, then paste the new complete callback URL.", "这一家当前不支持网页登录,请改用填写凭证": "This provider does not support web login right now; use Enter credentials instead", "这个账号当前没有可自动领的活动(只自动领每日登录赠送积分)": "This account has no campaigns that can be claimed automatically right now (only the daily login gift points are claimed automatically)", "这份额度走「活动套餐」通道:若转发时提示编码套餐已到期,": "This quota goes through the Start Plan channel: if forwarding reports that the Coding Plan has expired, ", "这里填国内站(modelscope.cn)的账号:请粘贴国内站的令牌。国际站(modelscope.ai)是另一家 provider、另一套账号,两边的令牌不通用。": "This is for the China site (modelscope.cn) account: paste the China site's token. The international site (modelscope.ai) is another provider with its own account; tokens are not interchangeable between the two.", "这里填国内站(monkeycode-ai.com)的账号:请粘贴国内站的 session。国际站(monkeycode-ai.net)是另一家 provider、另一套账号,两边的凭证不通用。": "This is for the China site (monkeycode-ai.com) account: paste the China site's session. The international site (monkeycode-ai.net) is another provider with its own account; credentials are not interchangeable between the two.", "这里填国际站(modelscope.ai)的账号:请粘贴国际站的令牌。国内站(modelscope.cn)是另一家 provider、另一套账号,两边的令牌不通用。": "This is for the international site (modelscope.ai) account: paste the international site's token. The China site (modelscope.cn) is another provider with its own account; tokens are not interchangeable between the two.", "这里填国际站(monkeycode-ai.net)的账号:请粘贴国际站的 session。国内站(monkeycode-ai.com)是另一家 provider、另一套账号,两边的凭证不通用。": "This is for the international site (monkeycode-ai.net) account: paste the international site's session. The China site (monkeycode-ai.com) is another provider with its own account; credentials are not interchangeable between the two.", "选择 CatPaw 客户端的登录态文件 auth.json(Windows:C:\\Users\\<你的用户名>\\.meituan-catpaw\\auth.json;macOS / Linux:~/.meituan-catpaw/auth.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端。": "Select the CatPaw client's login-state file auth.json (Windows: C:\\Users\\\\.meituan-catpaw\\auth.json; macOS / Linux: ~/.meituan-catpaw/auth.json). After import the credentials live on the gateway and can be forwarded independently — no longer dependent on this machine's client.", "选择 Cline 客户端的登录态文件 providers.json(Windows:C:\\Users\\<你的用户名>\\.cline\\data\\settings\\providers.json;macOS / Linux:~/.cline/data/settings/providers.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端;这一条归入 {label}。": "Select the Cline client's login-state file providers.json (Windows: C:\\Users\\\\.cline\\data\\settings\\providers.json; macOS / Linux: ~/.cline/data/settings/providers.json). After import the credentials live on the gateway and can be forwarded independently — no longer dependent on this machine's client; this record goes into {label}.", "选择 KukuAI 客户端的 Cookies 文件(%APPDATA%\\baidugenflowpro\\Network\\Cookies):它是**二进制** SQLite 数据库(无扩展名,不是 JSON)。导入时读的是你选中文件的副本、不和运行中的客户端抢占用,因此**无需先关闭客户端**。导入后凭证直接落在网关、可独立转发。": "Select the KukuAI client's Cookies file (%APPDATA%\\baidugenflowpro\\Network\\Cookies): it is a **binary** SQLite database (no extension, not JSON). The import reads a copy of the file you selected and does not compete with the running client for the lock, so **you do not need to close the client first**. After import the credentials live on the gateway and can be forwarded independently.", "选择 OAuth auth.json 的绝对路径(不扫描其他目录)": "Select the absolute path to OAuth auth.json (no other directories are scanned)", "选择凭证文件导入": "Import from credential file", "选择包含 Cookie 的 JSON 对象,或本软件导出的单账号 JSON 文件。导入后可独立使用,不需要持续运行豆包工作客户端。": "Select a JSON object containing cookies, or a single-account JSON exported by this application. The imported account works independently without keeping the Doubao Work client running.", "选择包含 Tabbit Cookie / JWT 的 JSON 或文本文件;也可以直接粘贴到上方表单。": "Choose a JSON or text file containing the Tabbit Cookie / JWT; you can also paste it into the form above.", "选择包含该提供商凭证的 JSON 文件,或本软件导出的单账号 JSON 文件。导入后凭证保存在网关,可独立使用。": "Select a JSON file containing this provider's credentials or an individual account JSON file exported by this application. Imported credentials are stored in the gateway and can be used independently.", "选择官方客户端的登录态凭证文件(workbuddy-desktop.info / workbuddy-desktop-ai.info)或 wb2api 导出的账号 JSON(嵌套 / 扁平形均可)。": "Select the official client's session credential file (workbuddy-desktop.info / workbuddy-desktop-ai.info) or an account JSON exported by wb2api (nested or flat).", "选择小浣熊客户端的登录态文件 auth.json(Windows:C:\\Users\\<你的用户名>\\.box-agent\\config\\auth.json;macOS / Linux:~/.box-agent/config/auth.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端。": "Select the Raccoon client's login-state file auth.json (Windows: C:\\Users\\\\.box-agent\\config\\auth.json; macOS / Linux: ~/.box-agent/config/auth.json). After import the credentials live on the gateway and can be forwarded independently — no longer dependent on this machine's client.", "选择提供商": "Select provider", "选择新增账号或重新授权当前注册": "Choose a new account or reauthorize the current registration", "选择的文件不是合法 JSON": "The selected file is not valid JSON", "选择要添加账号的提供商": "Select the provider to add an account for", "选择预置客户端": "Choose a preset client", "重新扫描": "Rescan", "重新授权所选账号(固定原身份和 clientId)": "Reauthorize the selected account (keep its identity and clientId)", "重新读取提供商": "Reload providers", "鉴权": "Authentication", "阿里云 Token Plan 套餐(国际站)": "Alibaba Cloud Token Plan (International site)", "阿里云百炼 Coding 套餐(国内站)": "Alibaba Cloud Model Studio Coding plan (China site)", "阿里云百炼 Coding 套餐(国际站)": "Alibaba Cloud Model Studio Coding plan (International site)", "阿里云百炼模型服务(国际站,OpenAI 兼容模式)": "Alibaba Cloud Model Studio model service (International site, OpenAI-compatible mode)", "隐藏凭证": "Hide credentials", "需要图形验证码:登录窗口已弹出,请填写后继续": "Captcha required: the sign-in window has opened; fill it in to continue", "需要手动提交授权回调": "Manual authorization callback required", "需要时填写完整 Cookie": "Paste the complete Cookie if needed", "需要进行人机验证": "Human verification required", "预置 API": "Preset API", "领取 CodeArts 每日福利": "Claim CodeArts daily welfare", "领取失败:{message}": "Claim failed: {message}", "领取并让官方确认": "Claim and await confirmation", "风控验证配置不完整,请稍后重试": "Risk-control verification config is incomplete; try again later", "验证码": "Verification code", "验证码业务请求超时,请刷新状态后重试": "The verified operation timed out. Refresh its status before retrying.", "验证码令牌入池接口不可用": "The verification token submission API is unavailable.", "验证码令牌未全部入池": "The verification token was not accepted by the pool.", "验证码令牌池未返回状态": "The verification token pool returned no status.", "验证码已使用,请重新验证": "This verification token has already been used. Verify again.", "验证码已发送。收到后填入下方并点「登录并添加」": "Code sent. Enter it below and click \"Sign in and add\"", "验证码已发送,请查看手机短信": "Code sent; check your SMS", "验证码已发送,请查看手机短信。填入下方并点「登录并添加」即完成登录": "Code sent; check your SMS. Enter it below and click \"Sign in and add\" to finish signing in", "验证码已发送,请查看短信": "Code sent; check your messages", "验证码校验失败,请重试": "Code verification failed; try again", "验证码校验超时,请重试": "Code verification timed out; try again", "验证码组件不可用,请重试": "Verification component unavailable; try again", "验证码组件初始化超时,请重试": "Verification component initialization timed out; try again", "验证码组件加载失败,请检查网络后重试": "Verification component failed to load; check your network and try again", "验证码组件加载异常,请重试": "Verification component encountered a loading error; try again", "验证码组件加载超时,请检查网络后重试": "Verification component timed out while loading; check your network and try again", "验证码组件未加载,请重启应用后重试": "Verification component not loaded; restart the app and try again", "验证码组件返回的验证串不完整(请重试)": "The verification component returned an incomplete token. Please retry.", "验证被上游风控拒绝,请稍后重试": "The upstream security service rejected verification. Please try again later.", "验证请求过于频繁,请稍后重试": "Verification requests are too frequent. Please try again later.", "默认开启;填 0 关闭(发送「已设为默认浏览器」标记)": "Enabled by default; enter 0 to disable (sends the \"set as default browser\" marker)", "(免费额度池,模型名带 cline-free/ 前缀)。": " (free quota pool; model names carry the cline-free/ prefix).", "(其中 {n} 把恢复为不限制)": " ({n} of which are now unrestricted)", "(必填)": " (Required)", "(有效期 {window})": "(valid {window})", "(订阅池,模型名带 cline-pass/ 前缀,需要账号有对应订阅)。": " (subscription pool; model names carry the cline-pass/ prefix and the account needs the matching subscription).", ",下一次最快 {minutes} 分钟后": ", earliest next attempt in {minutes} min", ",并从 {n} 把 Key 的可用提供商里移除": ", and removed it from the allowed providers of {n} keys", " · 思考等级 ": " · Reasoning level ", " · 思考等级 {level}": " · Reasoning level {level}", " · 有映射 ": " · mapped ", " · 限额中": " · Rate-limited", " → 转发": " → forwards to", " 上登记上游模型": ", register upstream model", " 与 ": " and ", " 个": " ", " 个模型 · 已启用 ": " models · enabled ", " 个账号": " accounts", " 会广告它、请求它也会被转发到这家。 支持字母、数字与 ": " will advertise it, and requests for it will be forwarded to this provider. Supported characters are letters, digits and ", " 失败": " failed", " 已发出,等待上游首帧…": "'s request has been sent; waiting for the upstream's first frame…", " 成功 ·": " succeeded ·", " 这类符号,但不能含空格或换行,且不超过 128 个字符。同一提供商内,同名绑定最多启用一条;已有启用绑定时不能新增,启用备用绑定会自动关闭其他同名绑定。不同提供商可各启用一条同名绑定,用于主备切换。": " symbols like those, but no spaces or line breaks, and at most 128 characters. Only one binding with the same name can be enabled per provider. Disable an active binding before adding another. Enabling a standby binding automatically disables the others. Different providers may each enable one binding with that name for failover.", " 里的 ": ", they appear as ", "(全局)": "(global)", "(未选)": "(not selected)", "0 家": "0 providers", "<上游模型 ID>": "", "<上游模型>": "", "<对外名>": "", "models.dev 补齐:对下游声明 {value}": "Filled in by models.dev: declared to downstream as {value}", "{action}映射 {alias}": "{action} mapping {alias}", "{id}({name})": "{id} ({name})", "{label}要填 1 ~ 1 亿之间的整数(留空 = {inherit})": "{label} must be an integer between 1 and 100,000,000 (leave empty = {inherit})", "{label}:{value}(对下游声明的精确值){origin}{suffix}": "{label}: {value} (exact value declared to downstream){origin}{suffix}", "{label}:{value}(对下游声明的精确值){suffix}": "{label}: {value} (exact value declared to downstream){suffix}", "{label}:上游未声明{suffix}": "{label}: Not declared upstream{suffix}", "{label}:上游未声明(下游会按不支持处理){suffix}": "{label}: Not declared upstream (downstream treats it as unsupported){suffix}", "{label}:不支持{origin}{suffix}": "{label}: Not supported{origin}{suffix}", "{label}:不支持{suffix}": "{label}: Not supported{suffix}", "{label}:支持{origin}{suffix}": "{label}: Supported{origin}{suffix}", "{label}:支持{suffix}": "{label}: Supported{suffix}", "{level}(本次指定)": "{level} (specified for this test)", "{name}({id})": "{name} ({id})", "{name}(不在该家当前清单里)": "{name} (not in this provider's current catalog)", "{n} 个": "{n}", "{n} 个映射": "{n} mappings", "{n} 个模型": "{n} models", "{n} 字节": "{n} bytes", "{provider}:模型清单为空,等待获取": "{provider}: the model catalog is empty and waiting to be fetched", "{status}:模型获取失败": "{status}: Failed to fetch models", "{total} 家 · 成功 {done}": "{total} providers · {done} succeeded", "{total} 家 · 成功 {done} · 失败 {failed}": "{total} providers · {done} succeeded · {failed} failed", "✅ 已保存 {id} 的能力位({provider})": "✅ Saved capability flags for {id} ({provider})", "✅ 已导入 {added} 个模型({skipped} 个已存在,跳过)": "✅ Imported {added} models ({skipped} already existed and were skipped)", "✅ 已更新 {name} 的思考等级": "✅ Updated the reasoning level for {name}", "✅ 已添加映射 {name} → {target}({label}){suffix}": "✅ Added mapping {name} → {target} ({label}){suffix}", "✅ 已登记 {name}({label}),但该提供商还没有可用账号,这一行要加上账号后才会显示": "✅ Registered {name} ({label}), but this provider has no usable accounts yet; the row will appear once you add one", "✅ 已登记模型 {name}({label})": "✅ Registered model {name} ({label})", "✅ 已登记自定义模型 {name}({label})": "✅ Registered custom model {name} ({label})", "✅ 批量{action}完成:共 {n} 个模型": "✅ Batch {action} complete: {n} models", "✅ 批量{action}完成:共 {n} 个模型(跳过不可删除的 {skipped} 个)": "✅ Batch {action} complete: {n} models ({skipped} not deletable, skipped)", "。": ".", "。上游清单给的值不准时,在这里改;": ". If the upstream catalog's values are inaccurate, edit them here; ", "。同一对外名可在多个提供商各添加一条: 下游用同一个名字请求,网关按账号优先级主备切换,失败自动落到下一个提供商。": ". The same public name can be added once under each of multiple providers: downstream requests with that name are routed with primary/backup switching by account priority, and failures fall through to the next provider automatically.", "「恢复继承」会把这一项交还给上游清单的值。": "“Restore inheritance” returns this field to the value from the upstream catalog.", "「来源」列会标成": "The “Source” column will show ", "上下文 / 输出": "Context / Output", "上下文窗口": "Context window", "上下文窗口 {input} / 最大输出 Token {output} —— 点击修改模型能力": "Context window {input} / max output tokens {output} — click to edit model capabilities", "上游 {model}": "Upstream {model}", "上游不认识这个模型名:先点「获取模型」刷新清单,或核对默认绑定指向的上游模型。": "Upstream doesn't recognize this model name: click “Fetch models” to refresh the catalog, or check the upstream model the default binding points to.", "上游原始响应": "Raw upstream response", "上游可用档位:{levels}": "Upstream supported levels: {levels}", "上游固定为 {level},绑定其他等级也无法调高。": "Upstream is fixed at {level}; binding another level cannot increase it.", "上游已经不再提供这个模型(可能已下线或改了 ID)": "The upstream no longer offers this model (it may have been retired or renamed).", "上游拒绝了这条登录态:重新登录一次,或把这条账号删掉。": "Upstream rejected this login session: sign in again, or delete this account.", "上游未声明": "Not declared upstream", "上游未声明(下游会按不支持处理)": "Not declared upstream (downstream treats it as unsupported)", "上游未部署": "Not deployed upstream", "上游模型": "Upstream model", "上游模型 ID": "Upstream model ID", "上游没在预算内给完回答。可以只勾一个账号再测一次,看是普遍慢还是某一个账号慢。": "Upstream didn't finish its answer within the budget. Test again with only one account checked to see whether it is slow in general or only on one account.", "上游没有给出可读的错误说明": "Upstream returned no readable error description", "上游没有返回任何模型": "Upstream returned no models", "上游目录列出了这个模型,但推理端尚未识别;保留在清单中,后续探测成功后自动清除标记": "The upstream catalog lists this model, but the inference backend does not recognize it yet. It remains in the catalog, and the marker is cleared automatically after a successful probe.", "上游目录尚未拉到,用的是内置静态清单;点「刷新模型清单」可重试": "The upstream catalog hasn't been fetched yet, so the built-in static catalog is in use; click “Fetch models” to retry", "上游能列出这个模型,但官方客户端不展示它;本仓已默认关闭它的默认绑定(点这一行的开关可以手动打开)": "Upstream lists this model, but the official client does not show it; the gateway has disabled its default binding (use the row switch to enable it manually)", "下游客户端": "downstream clients", "下游请求 ": "Downstream request ", "不展示": "Not shown", "不影响网关的转发与路由": "Doesn't affect gateway forwarding or routing", "不支持": "Not supported", "不覆盖": "Do not override", "两边原因不一样时各自处理。如果": "Handle each cause separately when they differ. If ", "中止测试": "Abort test", "仅支持已识别压缩格式的 ZCode;客户端修改压缩格式后可能需要更新适配。": "Only recognized ZCode compaction formats are supported. Client changes to the format may require an adapter update.", "仅本次测试临时生效,不修改账号保存的代理配置。可选「网络代理」页里的节点或强制直连。": "Applies to this test only without changing the account's saved proxy setting. Choose a node from the Network Proxies page or force a direct connection.", "从这一家的上游拉一份模型清单,勾选要哪些再导入(已添加的不会重复导入)": "Pull a model catalog from this provider's upstream, check the ones you want, then import them (models already added won't be imported again)", "代理池响应异常": "Invalid proxy pool response", "以模型本名直发": "Sent under the model's own name", "以这个上游模型发一次最小请求,走真实转发链路": "Send a minimal request with this upstream model through the real forwarding path", "例如 gpt-4o": "e.g. gpt-4o", "例如 gpt-5.5-preview": "e.g. gpt-5.5-preview", "保存": "Save", "保存中…": "Saving…", "保存失败:{message}": "Save failed: {message}", "保存映射": "Save mapping", "保存等级": "Save level", "倍率": "Multiplier", "倍率升序": "Multiplier ascending", "倍率升序,点击切换为降序": "Multiplier ascending; click to switch to descending", "倍率降序": "Multiplier descending", "倍率降序,点击切换为升序": "Multiplier descending; click to switch to ascending", "全选当前筛选出的模型(跨分页);再点取消": "Select all models in the current filter (across pages); click again to clear", "全选当前筛选结果": "Select all filtered results", "全选未添加": "Select all not added", "全选({n})": "Select all ({n})", "全部": "All", "全部删除": "Delete all", "全部映射": "all mappings", "全部自定义提供商": "All custom providers", "全部({n} 家)": "All ({n} providers)", "共 {n} 家 · 点「获取模型」开始": "{n} providers · click “Fetch models” to start", "关闭": "Close", "关闭即中止": "Closing aborts", "关闭后保留规则,所有请求按原模型处理。": "When disabled, rules are retained and all requests use the original model.", "其余 {n} 个会被跳过。": "the remaining {n} will be skipped.", "内置": "Built-in", "内置提供商": "Built-in provider", "内置清单": "Built-in catalog", "再测一次": "Test again", "删除": "Delete", "删除中…": "Deleting…", "删除入口未就绪,请重试或重启应用": "Delete isn't ready yet; retry or restart the app", "删除全部未挂载映射": "Delete all unattached mappings", "删除映射": "Delete mapping", "删除映射 {alias}": "Delete mapping {alias}", "删除未挂载的映射": "Delete unattached mapping", "删除自定义提供商": "Delete custom provider", "删除规则 {n}": "Delete rule {n}", "删除这个自定义提供商(连同名下账号)": "Delete this custom provider (along with its accounts)", "删除这条映射": "Delete this mapping", "删除选中的模型": "Delete selected models", "刷新全部家(逐家打上游)": "Refresh every provider (each hits upstream once)", "刷新完成,但没有得到任何结果": "Refresh finished, but no results were returned", "刷新模型管理页里各提供商的远程模型目录,逐家结果列在弹窗里": "Refresh the remote model catalogs of the providers on the Model Management page; per-provider results are listed in the dialog", "刷新清单": "Refresh catalog", "加载中…": "Loading…", "勾上它,导入后即进入这家的清单": "Check it to add it to this provider's catalog on import", "勾几个就并行测几次;默认选队列里最靠前的一个。": "Each account you check is tested in parallel; the first one in the queue is selected by default.", "勾选后可批量操作": "Check to enable batch actions", "压缩模型": "Compaction model", "压缩路由": "Compaction routing", "压缩路由入口尚未就绪,请刷新页面后重试": "Compaction routing is not ready. Refresh the page and try again.", "压缩路由已保存,下次压缩请求生效": "Compaction routing saved. It applies to the next compaction request.", "压缩路由接口返回了不完整的数据": "The compaction routing API returned incomplete data.", "原始 ID 已作为默认绑定,请直接使用该绑定的开关或等级按钮": "The original ID is already the default binding; use that binding's toggle or level button directly", "原始 ID 的默认绑定不能删除,请关闭它的开关": "The default binding for the original ID cannot be deleted. Disable its toggle instead.", "取消": "Cancel", "另有 {n} 个非手动登记的模型将被跳过。": "Another {n} models that aren't manually registered will be skipped.", "另有 {n} 条别名映射({aliases}),别名不参与本次": "There are also {n} alias mappings ({aliases}); aliases aren't used in this test", "只刷新这一家的模型清单": "Refresh only this provider's model catalog", "只在识别到 ZCode 上下文压缩请求时切换模型,普通对话仍使用原模型。": "Switch models only for recognized ZCode context compaction requests. Regular conversations keep using the original model.", "只属于这一家": "exclusive to this provider", "可删除 {n} 个(手动登记 / 自定义家);": "{n} can be deleted (manually registered / custom provider); ", "可见": "Visible", "可见性": "Visibility", "可配思考档位": "Configurable reasoning levels", "同一客户端的来源模型不能重复:{model}": "The source model cannot be repeated for the same client: {model}", "同一条错误出现在所有账号上": "the same error appears on all accounts", "后端桥不可用": "Backend bridge unavailable", "启用压缩路由": "Enable compaction routing", "启用后将自动关闭该提供商的其他同名绑定:{bindings}": "Enabling this will automatically disable the provider’s other bindings with the same name: {bindings}", "启用规则 {n}": "Enable rule {n}", "回复": "Reply", "固定思考档位": "Fixed reasoning level", "固定思考档位:{level}": "Fixed reasoning level: {level}", "图片": "Images", "图片生成": "Image generation", "图片生成模型请通过 /v1/images/generations 调用,暂不支持对话测试": "Use /v1/images/generations for image models; chat testing is not supported yet", "图片编辑": "Image editing", "图片识别": "Image recognition", "圆点带内侧描边 = 由 models.dev 补齐;右上角小点 = 你手动覆盖过;虚线圈 = 未声明。悬停某一枚可看逐项出处。": "Dot with an inner ring = filled in by models.dev; small dot at the corner = you overrode it; dashed ring = not declared. Hover a dot to see where each value comes from.", "在 ": "On ", "填上游真正认识的那个模型 ID(不是给下游用的名字)。登记后它会进入该家的模型清单: 表格里出现这一行、": "Enter the model ID that upstream actually recognizes (not the name used downstream). Once registered, it enters this provider's model catalog: this row appears in the table, ", "复制": "Copy", "多半是上游自己的问题,过一会儿再试。同一个错误出现在所有账号上时,先查模型目录与映射。": "This is most likely a problem on the upstream side; try again later. When the same error appears on all accounts, check the model catalog and mappings first.", "失败": "Failed", "失败 {n} 个 · 首个失败:{error}": "{n} failed · first failure: {error}", "如果 ZCode 已设置压缩路由,网关看到的是它改写后的模型。建议同一套规则只在一处配置。": "If ZCode already has compaction routing configured, the gateway sees the rewritten model. Configure the same routing rules in only one place.", "完成": "Done", "官方客户端会展示这个模型": "The official client lists this model", "对下游声明的能力(工具调用 / 图片识别 / 视频识别 / 支持思考)—— 点击修改": "Capabilities declared to downstream (tool calling / image recognition / video recognition / reasoning support) — click to edit", "对外名可以是中文、字母、数字与 ": "Public names may contain Chinese characters, letters, digits and ", "对外名可自由命名,允许与上游模型 ID 同名(同名时该上游的原生路由优先,映射作兜底); 支持字母、数字与 ": "The public name can be anything and may match an upstream model ID (when identical, that upstream's native route takes precedence and the mapping acts as a fallback); supported characters are letters, digits and ", "对外映射名(下游请求时用)": "Public mapping name (used in downstream requests)", "对话协议": "Chat protocol", "对话协议的说明": "About chat protocol", "对选中的 {n} 个模型执行批量操作": "Run batch actions on the {n} selected models", "导入失败:{message}": "Import failed: {message}", "导入选中的 {n} 个模型": "Import {n} selected models", "将作用于以下模型": "Applies to the following models", "尚未获取": "Not fetched yet", "尚未配置压缩规则,默认使用原模型。": "No compaction rules configured. The original model is used by default.", "尝试 {n} 次": "{n} attempts", "展开其余 {n} 个模型 ▾": "Show {n} more models ▾", "工具": "Tools", "工具调用": "Tool calling", "已中止在途测试({n} 个账号)": "Aborted in-flight tests ({n} accounts)", "已删除 {n} 条未挂载映射": "Deleted {n} unattached mappings", "已刷新": "Refreshed", "已启用": "Enabled", "已启用 {name},其他同名绑定已自动关闭": "Enabled {name}. Other bindings with the same name were disabled automatically.", "已填写:对下游声明 {value}": "Set: declared to downstream as {value}", "已添加": "Added", "已等待 {seconds}s": "Waited {seconds}s", "已覆盖上游值": "Upstream value overridden", "已覆盖:对下游声明 {value}": "Overridden: declared to downstream as {value}", "已选 ": "Selected ", "已选 {picked} 个 · 上游共 {upstream} 个 · 清单已有 {managed} 个": "{picked} selected · {upstream} upstream total · {managed} already in catalog", "开始测试": "Start test", "当前环境不支持代理池": "Proxy pool is not supported in this environment", "当前环境不支持读取 API Key": "This environment cannot load API keys", "当前通道未声明可用档位,映射等级不会注入;请先获取模型目录。": "This route has not declared supported levels. Mapping levels will not be injected; fetch the model catalog first.", "待获取": "Not fetched", "思考": "Reasoning", "思考等级": "Reasoning level", "思考等级 {level}": "Reasoning level {level}", "思考等级 {level}(点击修改)": "Reasoning level {level} (click to edit)", "思考等级的注入规则": "Reasoning level injection rules", "思考过程({n} 字)": "Reasoning process ({n} chars)", "恢复继承": "Restore inheritance", "成功 {ok} 个,失败 {failed} 个": "{ok} succeeded, {failed} failed", "所选 API Key 无权调用此模型或提供商": "The selected API Key cannot access this model or provider", "所选模型含同一提供商的同名绑定「{id}」,请分别启用,避免相互关闭": "The selected models contain bindings named “{id}” under the same provider. Enable them separately to avoid disabling one another.", "所选模型没有共同可用档位,请分别设置或清除绑定。": "The selected models have no shared supported level. Configure them separately or clear their bindings.", "手动": "Manual", "手动登记": "Manual", "手动登记的上游模型;移除它会直接删掉这条登记": "A manually registered upstream model; removing it deletes this registration outright", "执行{action}": "{action}", "批量{action}完成:成功 {ok} 个,失败 {failed} 个": "Batch {action} finished: {ok} succeeded, {failed} failed", "批量操作": "Batch actions", "批量操作 · 已选 {n} 个模型": "Batch actions · {n} models selected", "按倍率升序排列": "Sort by multiplier ascending", "按倍率排序": "Sort by multiplier", "按可见性筛选": "Filter by visibility", "按客户端发送的模型 ID 匹配,支持模型别名和对话路由组;每次只映射一次。": "Match the model ID sent by the client. Model aliases and chat routing groups are supported; each request is mapped once.", "按所选网关对话协议组装请求并校验响应转换(Chat Completions / Responses / Anthropic Messages)。": "Build the request and verify response translation using the selected gateway protocol (Chat Completions / Responses / Anthropic Messages).", "按提供商分组排序,已启用模型优先;未知倍率排在末尾": "Sort within provider groups, with enabled models first; unknown multipliers stay last", "按提供商选择": "Select by provider", "按状态筛选": "Filter by status", "提供商": "Provider", "搜索模型": "Search models", "搜索模型 ID / 名称 / 映射名…": "Search model ID / name / mapping name…", "搜索模型 ID / 提供商": "Search model ID / provider", "搜索模型 ID…": "Search model ID…", "搜索账号…": "Search accounts…", "操作": "Actions", "支持": "Supported", "支持思考": "Reasoning support", "收起 ▴": "Collapse ▴", "放弃尚未保存的压缩路由修改?": "Discard unsaved compaction routing changes?", "数字带虚线底 = 由 models.dev 补齐;右上角小点 = 你手动覆盖过;— = 未声明。点任意一格可改。": "Number with a dotted underline = filled in by models.dev; small dot at the corner = you overrode it; — = not declared. Click any cell to edit.", "新建一个自定义提供商(同时创建它的第一个账号)": "Create a custom provider (and its first account)", "映射、思考等级、上下文窗口与工具调用能力在桌面端「模型管理」里改;手机端只做启停。": "Mappings, reasoning levels, context windows and tool-calling capabilities are edited on desktop under “Model management”; mobile only toggles models.", "映射「{alias} → {target}」不存在": "Mapping “{alias} → {target}” doesn't exist", "映射上未绑定思考等级,「跟随映射」等于这次不注入": "No reasoning level is bound to this mapping, so “Follow mapping” means nothing is injected this time", "映射已关闭": "Mapping disabled", "映射已关闭,点击启用": "Mapping disabled; click to enable", "映射已删除": "Mapping deleted", "映射已启用": "Mapping enabled", "映射已启用,其他同名绑定已自动关闭": "Mapping enabled. Other bindings with the same name were disabled automatically.", "映射已启用,点击关闭": "Mapping enabled; click to close", "映射已绑定思考等级 {level},可用时会优先覆盖本次指定的等级": "This mapping binds reasoning level {level}; when supported, it overrides the level specified for this test", "暂无模型(请先添加账号)": "No models yet (add an account first)", "更新日期": "Updated", "最多可添加 {n} 条压缩规则": "You can add up to {n} compaction rules.", "最大输出 Token": "Max output tokens", "有映射": "Mapped", "未填写": "Not set", "未填写(下游按未声明处理)": "Not set (downstream treats it as not declared)", "未声明": "Not declared", "未挂载映射:已删除 {removed} 条,失败 {failed} 条。首个失败:{error}": "Unattached mappings: {removed} deleted, {failed} failed. First error: {error}", "未挂载的模型映射": "Unattached model mappings", "未接入": "Not connected", "未添加": "Not added", "未知": "Unknown", "本机网关没有返回结论": "The local gateway returned no result", "本次没有取到新内容": "No new content this time", "本次测试的发送口径": "What this test sends", "来源": "Source", "来源未知": "Unknown source", "来源模型": "Source model", "来源模型和压缩模型不能相同": "The source and compaction models must be different.", "来自上游目录接口,清单拉取于 {at};刷新失败时保留上一份成功结果": "From the upstream catalog API; catalog fetched at {at}; the last successful result is kept if a refresh fails", "来自上游目录接口;刷新失败时保留上一份成功结果": "From the upstream catalog API; the last successful result is kept if a refresh fails", "桥接调用返回空(本机网关没有响应这次测试)": "Bridge call returned empty (the local gateway didn't respond to this test)", "模型 ID「{id}」在该提供商已有启用绑定,请先关闭它再添加": "Model ID “{id}” already has an enabled binding under this provider. Disable it before adding another.", "模型 ID「{id}」已存在,请使用已有模型": "Model ID “{id}” already exists. Use the existing model.", "模型 ID「{id}」已绑定到此上游模型,请直接使用已有绑定": "Model ID “{id}” is already bound to this upstream model. Use the existing binding.", "模型「{name}」已存在(忽略大小写判重)": "The model “{name}” already exists (duplicate check is case-insensitive)", "模型已移除": "Model removed", "模型数": "Models", "模型映射": "Model mapping", "模型来源": "Model source", "模型清单为空:已有可用账号,请点「获取模型」拉取目录": "The model catalog is empty. Usable accounts are available; click “Fetch models” to retrieve it.", "模型清单已刷新": "Model catalog refreshed", "模型目录刷新不可用,请重新打开面板": "Model catalog refresh is unavailable. Reopen the panel.", "模型目录刷新结果": "Model catalog refresh results", "模型管理表": "Models table", "模型能力": "Model capabilities", "模型获取失败": "Failed to fetch models", "正在刷新…": "Refreshing…", "正在测 ": "Testing ", "正在获取…": "Fetching…", "正在读取压缩路由…": "Loading compaction routes…", "每条映射 = 对外名 → 上游模型;原始 ID 与别名有独立开关,默认绑定永远存在(没有映射时是合成的那条)。": "Each mapping = public name → upstream model; the original ID and each alias have their own toggle, and the default binding always exists (it's the synthesized one when there are no mappings).", "没有匹配「{keyword}」的模型": "No models match “{keyword}”", "没有匹配当前筛选的模型": "No models match the current filter", "没有匹配的模型": "No matching models", "没有可选的对话模型,请先启用模型和对应账号。": "No chat models are available. Enable a model and its account first.", "没有选中任何模型": "No models selected", "没有选中的模型": "No models selected", "流式请求": "Streaming request", "流式请求的说明": "About streaming requests", "测试": "Test", "测试未通过": "Test failed", "测试模型": "Test model", "测试结果": "Test result", "测试节点": "Test node", "测试节点的说明": "About test node", "测试账号": "Test accounts", "测试账号的说明": "About test accounts", "添加模型映射": "Add model mapping", "添加自定义模型": "Add custom model", "清空": "Clear", "清除覆盖,回到上游声明值": "Clear the override and go back to the upstream declared value", "清除这一项(回到未声明)": "Clear this field (back to not declared)", "清除(不覆盖)": "Clear (do not override)", "点击复制:{name}": "Click to copy: {name}", "点右侧「获取模型」从上游拉取这家的模型清单": "Click “Fetch models” on the right to pull this provider's model catalog from upstream", "用哪个账号去拉这家的模型清单": "Which account to use to fetch this provider's model catalog", "用户提示词": "User prompt", "用户登记的自定义模型;整份清单只属于这一家": "Custom models registered by you; the whole list belongs to this provider only", "用时 {time}": "Took {time}", "用时 {time} · 首字 {ttfb}": "Took {time} · first token {ttfb}", "留空则不携带;设置页的提示词模式照常生效": "Leave empty to omit it; the prompt mode on the Settings page still applies", "留空用默认问候「你好」": "Leave empty to use the default greeting “Hello”", "的模型合集:每家的清单互相独立,别名也只在自己那家内生效;要改名称 / 协议 / Base URL,到账号页该家账号的「设置」→ 提供商一栏。": "'s model collection: each provider's list is independent, and aliases only take effect within their own provider; to change the name / protocol / Base URL, go to that provider's account on the Accounts page → \"Settings\" → provider section.", "目录模块未就绪": "The catalog module isn't ready", "目标使用自身的思考设置或默认值,仍受网关 Key 权限限制;不可用时明确报错,不自动退回原模型。": "The target uses its own reasoning settings or defaults and remains subject to gateway key permissions. If unavailable, an error is returned without falling back to the original model.", "目标已下线": "Target retired", "直接移除": "directly removes ", "直连(不使用代理)": "Direct connection (no proxy)", "看的能力声明(": ". In ", "真实链路 · 消耗少量额度 · 日志带「测试」标记,不计报表": "Real path · uses a small amount of quota · logs are tagged “Test” and excluded from reports", "确定删除映射「{alias} → {target}」?": "Delete the mapping “{alias} → {target}”?", "确定删除映射「{alias} → {target}」?它指向的上游模型已不在清单里。": "Delete the mapping “{alias} → {target}”? The upstream model it points to is no longer in the catalog.", "确定删除映射「{alias} → {target}」?它指向的上游模型已不在清单里。": "Delete the mapping “{alias} → {target}”? The upstream model it points to is no longer in the catalog.", "确定删除此区域列出的全部 {n} 条未挂载映射?此操作不可撤销,不会删除正常挂载的映射或模型。": "Delete all {n} unattached mappings listed in this section? This cannot be undone. Attached mappings and models will not be deleted.", "确定删除选中的 {count} 个模型登记?删除后 /v1/models 不再广告它们、请求也会被拒。": "Delete the {count} selected model registrations? After deletion, /v1/models will no longer advertise them and requests to them will be rejected.", "确定移除自定义模型「{id}」?这条登记会被直接移除,之后 /v1/models 不再广告它、请求它也会被拒。": "Remove the custom model “{id}”? This registration will be removed directly, after which /v1/models will no longer advertise it and requests to it will be rejected.", "确认桌面端还在运行,再重试一次。": "Make sure the desktop app is still running, then try again.", "确认选择": "Confirm selection", "社区参考档位,不代表当前上游通道支持;实际以该通道目录为准。": "Community reference levels do not guarantee support on this upstream route; its catalog is authoritative.", "社区参考档位:{levels}": "Community reference levels: {levels}", "移除": "Remove", "移除自定义模型": "Remove custom model", "系统提示词": "System prompt", "绑定 {requested},按当前通道将发送 {effective}。": "Bound to {requested}; this route will send {effective}.", "绑定在「对外名 → 上游模型」这一条映射上的思考等级(列表照抄 OmniProxy 的手动绑定),选「不覆盖」表示不给这条映射指定等级。它会跟着这条映射注入转发,由承载的那家翻译成自己的档位字段(CatPaw 归并成 low/high/max,Qoder 按模型声明的档位归一)。以下几种情况故意不注入:① off / none(关闭思考)—— 本项目没有安全的表达方式;② 表外的自定义等级(各家能力范围不同,无法判断上游收不收);③ 客户端请求体里已经自己指定了档位(那是更明确的意图,绑定不覆盖);④ 这家上游不认识档位字段(如 WorkBuddy / 小浣熊 / AutoClaw / Cline)。注入与跳过都会写进详细日志。": "The reasoning level bound to a “public name → upstream model” mapping (the list mirrors OmniProxy's manual bindings). Choosing “Do not override” means no level is assigned to this mapping. It is injected along with this mapping during forwarding and translated by the serving provider into its own level field (CatPaw merges them into low/high/max; Qoder normalizes them to the levels the model declares). It is deliberately not injected in the following cases: 1) off / none (reasoning off) — this project has no safe way to express them; 2) custom levels outside the table (providers differ in what they support, so there is no way to tell whether upstream accepts them); 3) the client request body already specifies a level (that is a clearer intent, which the binding does not override); 4) this upstream doesn't recognize the level field (e.g. WorkBuddy / Raccoon / AutoClaw / Cline). Both injections and skips are written to the detailed log.", "继承上游": "Inherit from upstream", "继承上游 {value}": "Inherit from upstream {value}", "继承上游:{value}": "Inherit from upstream: {value}", "网关未返回保存后的提供商记录": "The gateway did not return the saved provider record.", "网关未返回逐家模型目录刷新结果": "The gateway returned no per-provider model catalog refresh results", "能力": "Capabilities", "自定义 · 全部": "Custom · all", "自定义家": "Custom provider", "自定义提供商": "Custom provider", "自定义提供商的清单": "Custom provider catalog —", "自定义提供商还没有模型:先在左栏选一家,点「添加模型」登记,或「获取上游模型」从上游拉取": "This custom provider has no models yet: pick a provider in the left rail, click \"Add model\" to register one, or \"Fetch upstream models\" to pull from upstream", "自定义模型已移除": "Custom model removed", "自定义等级": "Custom level", "自定义等级…": "Custom level…", "自定义等级(例如 custom-high)": "Custom level (e.g. custom-high)", "至少选一个测试账号": "Select at least one test account", "节点 {proxy}": "Node {proxy}", "获取": "Fetch", "获取中…": "Fetching…", "获取失败:{message}": "Fetch failed: {message}", "获取模型": "Fetch models", "获取模型 — {name}": "Fetch models — {name}", "规则 {n}": "Rule {n}", "规则不绑定提供商,压缩模型由其路由配置决定使用哪家提供商。": "Rules are not tied to a provider. The compaction model's routing configuration determines which provider is used.", "视频": "Videos", "视频识别": "Video recognition", "设置 / 清除会应用到选中模型的": "Setting / clearing applies to ", "设置思考等级": "Set reasoning level", "设置思考等级后,会覆盖下游请求中的等级;选择“不覆盖”则保留下游参数。实际档位以提供商支持范围为准,无法注入时保留原请求并记录原因。off / none 仍不由映射注入。": "A configured reasoning level overrides the level in downstream requests. Choose “Do not override” to preserve downstream parameters. The effective level depends on provider support; if it cannot be applied, the original request is preserved and the reason is logged. Mappings still do not inject off / none.", "设置思考等级(当前未绑定)": "Set reasoning level (not bound)", "该提供商已不存在(可能已被删除),请刷新列表": "This provider no longer exists (it may have been deleted); refresh the list", "该提供商当前没有可选的上游模型": "This provider currently has no selectable upstream models", "该提供商没有可用账号(要在账号页启用一个、且凭证完整),一行都发不出去": "This provider has no usable accounts (enable one on the Accounts page with complete credentials), so not a single request can be sent", "该提供商的清单里没有模型「{name}」": "This provider's catalog has no model “{name}”", "该等级无法注入,请选择上游可用档位或清除绑定。": "This level cannot be injected. Select an upstream supported level or clear the binding.", "该行当前未启用:测试照常按本名直发(「先测通、再决定要不要启用」正是这颗按钮的用法),但本行的思考等级绑定不参与本次,生产路由也要等绑定打开后才会放行": "This row is currently disabled: the test still sends the model under its own name (“test it first, then decide whether to enable it” is exactly what this button is for), but this row's reasoning level binding is not used this time, and production routing won't be allowed through until the binding is turned on", "该账号对这个模型正在限额冷却,等一会儿自己会好;也可以先测别的账号。": "This account is cooling down on rate limits for this model; it will recover on its own shortly. You can also test another account first.", "说明": "Note", "请先选择一把 API Key": "Select an API Key first", "请填写上游模型 ID": "Enter an upstream model ID", "请填写对外映射名": "Enter a public mapping name", "请填写模型 ID": "Enter a model ID", "请填写自定义思考等级,或改选候选档 / 「清除」": "Enter a custom reasoning level, or pick a candidate level / “Clear”", "请完整选择来源模型和压缩模型": "Select both a source model and a compaction model.", "请选择受支持的客户端": "Select a supported client.", "请选择提供商": "Select a provider", "读取模型清单失败:{message}": "Failed to read the model catalog: {message}", "账号 ": "Account ", "跟随映射(当前 {level})": "Follow mapping (currently {level})", "跟随映射(未绑定等级)": "Follow mapping (no level bound)", "跟随映射(该行未启用,本次不注入)": "Follow mapping (row disabled; not injected this time)", "跟随账号配置": "Follow account setting", "跳过": "Skipped", "转发到上游模型": "Forward to upstream model", "还没有可刷新的提供商:先在账号页添加一个账号": "No providers to refresh yet: add an account on the Accounts page first", "还没有自定义提供商": "No custom providers yet", "这一行已不在当前清单里(模型被移除、或目录刷新后上游不再提供它)。关闭后刷新列表再试。": "This row is no longer in the current catalog (the model was removed, or upstream no longer offers it after a catalog refresh). Close this dialog, refresh the list, and try again.", "这个模型仍在承载它的提供商清单里,但那一家的模型行当前没有出现(例如该家没有可用账号)": "This model is still in the catalog of the provider that carries it, but that provider has no model row right now (for example, it has no usable account).", "这个模型在官方客户端里是否会被展列;不展示的那些默认已关闭(含默认绑定)": "Whether the official client lists this model; entries that are not shown are disabled by default (including the default binding)", "这个模型已经在这家的清单里,不重复导入": "This model is already in this provider's catalog; it won't be imported again", "这个模型的图片能力(图片生成 / 图片编辑)—— 点击修改": "This model's image capabilities (image generation / image editing) — click to edit", "这些映射指向的上游模型已不在当前清单里,挂不到任何模型行上:它们不会出现在 /v1/models,用对应别名发请求也会失败。删除后该对外名即可重新使用。": "The upstream models these mappings point to are no longer in the current catalog, so they cannot be attached to any model row: they will not appear in /v1/models, and requests sent with the corresponding alias will fail. Delete one to free up its public name.", "这些映射指向的上游模型已不在当前清单里,用对应别名发请求会失败。可以在这里删除,删掉后该对外名即可重新使用。": "The upstream models these mappings point to are no longer in the current catalog, so requests sent with the corresponding alias will fail. You can delete them here to free up the public name.", "这几项是给": "These fields are capability declarations for ", "这家提供商没有可见性判据(目前只有 Antigravity / Qoder / 小浣熊 / CodeArts 有)": "This provider has no visibility rule (currently only Antigravity / Qoder / Raccoon / CodeArts have one)", "这家有可见性判据,但这一条上游没有表态 —— 按可见处理": "This provider has a visibility rule, but upstream did not state it for this entry — treated as visible", "这家没有可用账号(要在账号页启用一个、且凭证完整)": "This provider has no usable accounts (enable one on the Accounts page with complete credentials)", "这家用固定模型清单,无可刷新": "This provider uses a fixed model catalog; nothing to refresh", "这家的模型清单是全局的,不跟账号走": "This provider's model catalog is global and not tied to accounts", "这家的清单是你自己登记的,不填的项下游按未声明处理。": "This provider's catalog is what you registered yourself; fields left empty are treated as not declared downstream.", "这家还没有可用账号,刷新会使用默认登录态": "This provider has no usable accounts yet; the refresh will use the default login session", "这家还没有模型:点「添加模型」登记,或「获取上游模型」从上游拉取": "No models for this provider yet: click “Add model” to register one, or “Fetch models” to pull from upstream", "这是模型自己能配的档位(来自上游目录),只读;要改某一档请到映射弹窗里选。": "These are the levels the model itself supports (from the upstream catalog); they're read-only. To change a level, select it in the mapping dialog.", "这条登记(不像内置模型那样只是隐藏),因为它的存在完全由这次登记决定。": "this registration (unlike built-in models, which are merely hidden), because its existence is decided entirely by this registration.", "这里是": "This is ", "远程": "Remote", "远程目录": "Remote catalog", "远程目录已更新,「来源」列会显示为「远程」": "Remote catalog updated; the “Source” column will show “Remote”", "适用客户端": "Client", "选一个账号(至少一个)": "Select an account (at least one)", "选中的模型都不是手动登记,无法删除(开关映射才是它们的手段)": "None of the selected models are manually registered, so they can't be deleted (use the mapping toggles instead)", "选中的都不是手动登记的模型,删除不可用(上游目录带回来的行由清单决定存在性)": "None of the selected models are manually registered; deletion isn't available (rows brought back by the upstream catalog exist as long as the catalog lists them)", "重新获取": "Fetch again", "重新读取会丢弃当前草稿,确定继续?": "Reloading will discard the current draft. Continue?", "重试": "Retry", "错误详情": "Error details", "默认": "Default", "默认开,与真实请求一致:可同时验证 SSE 链路与首字延迟。": "On by default, matching real requests: verifies both the SSE path and time to first token.", "默认档位:{level}": "Default level: {level}", "默认绑定": "Default binding", "({label})": " ({label})", "({provider})": " ({provider})", "(上游这一次返回了空正文)": "(Upstream returned an empty body this time)", "(中间共尝试 {n} 次)": " ({n} attempts in total)", "(已禁用)": " (disabled)", "(已被手动覆盖,弹窗里可恢复继承)": " (manually overridden; restore inheritance in the dialog)", "(手动设定)": " (set manually)", "(由 models.dev 补齐)": " (filled in by models.dev)", "(登记后即可用这个名字请求)": " (you can request with this name once registered)", "(续)": "(cont.) ", "(默认 ": "(default ", "(默认绑定与别名 chips);「清除」= 不给这些映射指定等级(选「不覆盖」的口径与映射弹窗一致)": " of the selected models (default binding and alias chips); “Clear” means no level is assigned to these mappings (same as “Do not override” in the mapping dialog)", ")": ")", "),下游按它们决定发不发图片、按多大的窗口堆历史。": ". Downstream uses them to decide whether to send images and how much history to pack into the context window.", "+ 新建自定义提供商": "+ New custom provider", "+ 映射": "+ Mapping", "+ 添加压缩规则": "+ Add compaction rule", "+ 添加模型": "+ Add model", "+等级": "+Level", ",与远程目录 / 内置清单区分开。删除自定义模型是": ", which distinguishes it from the remote catalog / built-in catalog. Deleting a custom model ", ",已完成 ": ", completed ", ",跳过 {n} 个": ", {n} skipped", ",通常就不是账号问题了:先确认这个模型还在上游目录里(「获取模型」刷一次),再看默认绑定指向的上游模型对不对。": ", it's usually not an account problem: first confirm this model is still in the upstream catalog (run “Fetch models” once), then check whether the default binding points to the right upstream model.", ":": ": ", ":这里的模型不会出现在其他家,别名也只在这一家内生效。改名称 / 协议 / Base URL 在账号页该家账号的「设置」→ 提供商一栏;整家不要了,鼠标移到左栏这家上点 × 删除(连同名下账号)。": ": the models here won't appear under other providers, and aliases take effect only within this provider. To change the name / protocol / Base URL, use the “Settings” → Provider section of this provider's account on the Accounts page; to remove the whole provider, hover over it in the left rail and click × to delete it (along with its accounts).", ";其中 {keys} 由 models.dev 补齐": "; {keys} filled in by models.dev", ";首个失败:{error}": "; first failure: {error}", "{account} · 账号设置": "{account} · Account settings", "{account} 参与本路由": "Include {account} in this route", "{account} 尝试失败后切换到此账号": "Switched to this account after {account} failed", "{available} 可用 · {blocked} 跳过": "{available} available · {blocked} skipped", "{clients} 的标题请求": "Title request from {clients}", "{client} 的压缩请求": "Compaction request from {client}", "{models} 看不了图时": "When {models} cannot read images", "{model} 参与本路由": "Include {model} in this route", "{model} 有独立配置": "{model} has its own configuration", "{name} · 提供商路由设置": "{name} · Provider routing settings", "{name} 已{state}": "{name} {state}", "{name} 的账号顺序已调整": "{name} account order changed", "{n} 个候选": "{n} candidates", "{n} 个参与账号": "{n} participating accounts", "{n} 个启用且参与的账号": "{n} enabled, participating accounts", "{n} 个提供商": "{n} providers", "{n} 个模型限流": "{n} models rate-limited", "{n} 个请求": "{n} requests", "{n} 个账号 · {on} 启用 · {off} 禁用": "{n} accounts · {on} enabled · {off} disabled", "{n} 个账号已折叠": "{n} accounts collapsed", "{n} 个跳过": "{n} skipped", "{n} 在途": "{n} in flight", "{n} 处未保存": "{n} unsaved changes", "{n} 已完成": "{n} completed", "{n} 条": "{n} entries", "{n} 条活跃绑定": "{n} active bindings", "{n} 条请求没有会话标识,未计入会话数量。": "{n} requests have no session identifier and are not included in the session count.", "{n} 条账号路径": "{n} account paths", "{n} 次": "{n} attempts", "{n} 项参与": "{n} participating", "{paths} 条路径 · {sessions} 个会话": "{paths} paths · {sessions} sessions", "{providers} 个提供商 / {accounts} 个账号": "{providers} providers / {accounts} accounts", "{providers} 个提供商 · {accounts} 个参与账号": "{providers} providers · {accounts} participating accounts", "{provider} 参与本路由": "Include {provider} in this route", "{selected} / {total} 个账号参与": "{selected} / {total} accounts included", "{selected} / {total} 个账号启用": "{selected} / {total} accounts enabled", "{time} 后恢复": "Recovers in {time}", "一个路由组最多允许 {n} 个成员": "A route group can have at most {n} members", "一条历史路径": "A historical path", "上游已响应": "Upstream responded", "上游请求已发出": "Upstream request sent", "上游调用": "Upstream call", "下一条请求": "Next request", "下一条请求将走": "The next request will go to", "不参与": "Not included", "不按余额排序": "Do not sort by balance", "不按到期排序": "Do not sort by expiry", "与账号页共用全局消耗规则": "Shares global consumption rules with Accounts", "与账号页共用:{rules}。积分到期等规则直接影响网关实际选路。": "Shared with Accounts: {rules}. Rules such as credit expiry directly affect gateway routing.", "为什么没有调用": "Why it was not called", "为什么选择它": "Why it was selected", "为压缩请求指定模型": "Choose a model for compaction requests", "五分钟没有往来即释放;客户端会话标识优先,内容哈希兜底。": "Released after five minutes of inactivity. Client session identifiers take priority; a content hash is used as a fallback.", "仅保留最后承载信息,尝试明细未记录": "Only the final account is retained; attempt details were not recorded", "仅允许指定提供商": "Allow selected providers only", "仅列出真实目录中的对话模型,不自动更改模型映射。": "Only chat models from the actual catalog are listed. Model mappings remain unchanged.", "仅加入的参与": "Only added providers", "仅勾选的参与": "Only checked providers", "仅历史": "History only", "仅在途": "In flight only", "仅展示已发生的请求,不表示当前可选": "Shows recorded requests, not current eligibility", "仅影响此路由的后续请求": "Only affects subsequent requests to this route", "仅看选中路径": "Selected paths only", "仅筛选右侧账号列表,不改变路由配置。": "Only filters the account list on the right. Routing settings stay unchanged.", "仍保留配置,账号可继续用于其他路由。": "Settings are retained. Accounts remain available to other routes.", "仍然保存": "Save anyway", "从上到下就是选路顺序": "Top to bottom is the routing order", "从当前视图移除": "Remove from this view", "从现有模型中创建独立配置,自动列出提供它的全部提供商;之后的修改只跟随这个模型。": "Create an independent configuration for an existing model. All providers serving it are listed automatically; later changes apply only to this model.", "以下 {n} 个账号原本被全局路由排除。确认后会将它们设为禁用,所有路由都不能再选用;原有独立路由的参与名单保留。": "These {n} accounts were excluded from the global route. Confirming disables them for all routes. Existing participation lists in independent routes are preserved.", "优先使用队首账号,不可用时顺延。": "Prefer the first account in the queue and fall back when it is unavailable.", "优先尝试": "Try first", "优先级:{rules};前一项相同才比较后一项。": "Priority: {rules}. Later rules apply only when earlier rules tie.", "会话": "Sessions", "会话最长保持六小时无往来;可以随时在会话粘滞中解除。": "Bindings last for up to six hours of inactivity and can be released at any time under Session bindings.", "会话来源": "Session source", "会话标识": "Session identifier", "会话标识 {id} · 来源 {source}": "Session {id} · source {source}", "会话标识未记录,不将此请求推断为独立会话。": "No session identifier was recorded. This request is not assumed to be a separate session.", "会话活动": "Session activity", "会话粘住": "Session binding hit", "会话粘滞": "Session bindings", "会话粘滞 {mode}": "Session affinity {mode}", "会话粘滞改为{value}": "Session affinity set to {value}", "位置 = 顺位": "Position = priority", "作用范围": "Scope", "例如:日常省钱": "For example: Everyday savings", "供继承全局的模型使用": "Used by models inheriting global settings", "保存": "Save", "保存中…": "Saving…", "保存仅影响后续选路,历史快照与在途请求不改写。": "Saving affects subsequent routing only. Historical snapshots and in-flight requests remain unchanged.", "保存全局路由": "Save global routing", "保存后仅用于后续请求,不改变历史快照或在途请求。": "Saving applies only to subsequent requests, without changing historical snapshots or in-flight requests.", "保存后只影响后续请求": "Only affects later requests", "保存后才会影响真实请求": "Changes affect real requests only after saving", "保存响应不完整,请刷新当前配置确认结果": "The save response is incomplete. Reload the current configuration to confirm the result.", "保存当前配置": "Save current configuration", "保存模型路由": "Save model routing", "保存的尝试明细中没有这次调用": "This call is not present in the saved attempt details", "保存空路由": "Save empty route", "保存规则": "Save rule", "保存路由": "Save route", "保存路由后,在客户端填写此模型 ID。密钥使用你自己的网关 Key。": "After saving, use this model ID in your client with your own gateway key.", "保护设置由所有模型共用;模型独立配置可覆盖参与范围、顺序、策略与粘滞。": "Protection settings are shared by all models. Independent model configurations can override participation, order, strategy, and stickiness.", "修改后影响继承全局的模型": "Changes affect models that inherit the global configuration", "修改范围以「编辑范围」为准": "Changes apply to the selected editing scope", "候选": "Candidates", "候选 {n}": "Candidates {n}", "候选 · {name}": "Candidate · {name}", "候选与跳过": "Candidates and skips", "候选与跳过清单各最多保存十二项;这里只回放当时保存的快照,不用当前队列重算。": "Up to twelve candidates and skips are saved. This replays the saved snapshot, not the current queue.", "候选与跳过清单各最多保存十二项;重试和跨账号切换见尝试明细。": "Candidate and skipped lists each retain up to twelve entries. See attempt details for retries and account switches.", "候选和跳过清单各最多保存十二项,超出部分不绘制。": "Candidate and skipped lists each retain up to twelve entries. Additional entries are not drawn.", "候选快照中有此账号,但保存的尝试明细未显示它被调用": "This account appears in the candidate snapshot, but no call to it is recorded in the saved attempts", "候选快照仅保存部分记录,未保存的账号无法回放": "Only part of the candidate snapshot was saved; accounts without records cannot be replayed", "候选筛选": "Candidate filter", "候选规模": "Candidate pool", "候选账号": "Candidate account", "候选顺序": "Candidate order", "停用后保留卡片与账号,方便随时恢复;不会全局禁用提供商。": "Disabling keeps the card and accounts for easy restoration. It does not disable the provider globally.", "停用后保留卡片与账号;自动参与不会重新启用明确停用的提供商。": "Disabling keeps the card and accounts. Automatic participation does not re-enable explicitly disabled providers.", "停用此提供商": "Disable this provider", "停用路由提供商": "Disable routing provider", "允许参与的提供商": "Allowed providers", "先处理凭证、限额或参与范围。": "Resolve credentials, limits, or scope first.", "先尝试当前路由内的视觉模型,不可用时再按顺序尝试指定模型;指定模型可跨路由池。": "Try vision models in the current route first, then try the selected models in order if unavailable. Selected models can use a different routing pool.", "先读图再交回": "Reads the image first, then hands back to", "全局": "Global", "全局保护设置": "Global protection settings", "全局修改影响继承它的模型;独立模型配置不变。": "Global changes affect models that inherit them; independent model configurations remain unchanged.", "全局修改影响继承的设置;模型已独立设置的项目保持不变。": "Global changes affect inherited settings; model-specific overrides remain unchanged.", "全局参与范围": "Global participation scope", "全局顺序与账号页联动,修改即时保存。": "Global order stays in sync with Accounts. Changes are saved immediately.", "全局默认": "Global defaults", "全局默认供继承的模型使用;给某个模型单独配置后,它就不再跟随全局。": "Global default serves models that inherit it; once a model has its own config, it stops following global.", "全部候选": "All candidates", "全部模型(窗口内没有请求)": "All models (no requests in window)", "全部禁用": "All accounts disabled", "全部移出": "Remove all", "全部移出本路由": "Remove all from this route", "全部自动参与": "All providers automatically", "全部解除": "Release all", "全部请求": "All requests", "全部路径": "All paths", "共 {n} 个可添加的模型": "{n} models can be added", "共 {n} 条路由回放": "{n} routing replays", "共尝试 {total} 次,保存了 {saved} 条明细": "{total} attempts; {saved} details saved", "关联与在途优先": "Selected and in-flight first", "关联请求路径": "Related request paths", "关闭": "Close", "其他候选": "Other candidates", "其他客户端": "Other clients", "其他账号已完成请求,没有继续调用这个候选": "Another account completed the request, so this candidate was not called", "内容哈希": "Content hash", "内容哈希(推断)": "Content hash (inferred)", "内部重试不会增加账号切换节点。": "Internal retries do not add account-switch nodes.", "决定后续请求用谁、按什么顺序,以及是否沿用会话账号。": "Choose which accounts handle subsequent requests, their order, and whether to reuse the session account.", "冷却中": "Cooling down", "切换 {n} 次": "{n} switches", "切换后,原本不在名单内的可用提供商也会参与转发。明确停用的提供商和排除的账号不会恢复。": "After switching, available providers outside the previous list will also participate. Explicitly disabled providers and excluded accounts remain excluded.", "切换模型后,右侧只展示该模型的提供商与账号路由。": "Switching models shows only that model's provider and account routes on the right.", "列表内容": "List content", "创建独立配置": "Create independent configuration", "创建草稿": "Create draft", "删除后此入口将不再接受请求。不会删除成员模型、提供商或账号。": "Deleting this entry stops it accepting requests. Member models, providers and accounts are not deleted.", "删除后这个模型会重新跟随全局配置,已保存的独立设置和当前未保存修改都会被移除。": "Deleting it makes this model follow the global configuration again. Saved independent settings and any unsaved changes will be removed.", "删除独立路由": "Delete independent route", "删除独立配置": "Delete independent config", "删除规则": "Delete rule", "删除路由组": "Delete route group", "刷新请求记录": "Refresh request history", "刷新路由": "Refresh routes", "刷新预演": "Refresh preview", "加入": "added", "加入路由": "Add to route", "历史只读,不影响当前配置": "Read-only history; current settings are unchanged", "历史只读,当前配置的修改不会改变这条请求的快照。": "History is read-only. Configuration changes do not alter this request snapshot.", "历史快照保留了 {shown} / {total} 个候选明细,其余未记录。": "The historical snapshot retained {shown} of {total} candidate details. The rest were not recorded.", "历史承载账号当前不可用": "Historical account currently unavailable", "历史日期": "History date", "历史记录": "History", "压缩上下文": "Context compaction", "压缩模型": "Compaction model", "原因": "Reason", "原始报文在请求详情里,这里只看选路过程。": "Raw payloads live in request details; this view only shows routing.", "原模型": "Original model", "去账号页添加": "Add on the Accounts page", "参与": "Included", "参与当前视图转发": "Forward requests in this view", "参与方式": "Participation", "参与方式改为{value}": "Participation changed to {value}", "参与本路由": "Included in this route", "参与范围": "Participation scope", "参与范围与顺序独立保存;策略和粘滞可分别继承全局。": "Participation and order are saved independently; strategy and stickiness can each inherit global settings.", "参与账号": "Participating accounts", "参与路由": "Participates in routing", "参与路由的账号": "Accounts participating in routing", "参与转发": "Participating members", "参与顺序": "Routing order", "发生切换": "Account switched", "取消": "Cancel", "取消勾选只排除当前范围,不会在账号页全局禁用账号。": "Unchecking excludes the account only from this scope; it does not disable it globally on the Accounts page.", "取消选中": "Clear selection", "只从当前路由移出,保留模型和账号配置;不会改变其他路由。": "Remove only from this route, retaining model and account settings. Other routes are unchanged.", "只从当前路由视图移除,不删除提供商或账号,也不改变其他模型的独立配置。": "Remove only from the current routing view. Providers, accounts, and other models' independent configurations remain unchanged.", "只修改全局参与范围,不改变账号排序、模型开关或模型独立路由;网关 Key 权限与限流仍然生效。": "Changes only global participation, not account order, model enablement, or independent model routes. Gateway Key permissions and rate limits still apply.", "只列出当前模型已有启用绑定的提供商;这里只设置路由,不新建模型绑定。": "Only providers with an enabled binding for this model are listed. This changes routing, not model bindings.", "只影响这个路由成员,不改变账号启用状态,也不影响其他模型。新增账号需要手动加入。": "Only affects this member, not account enablement or other models. New accounts must be added manually.", "只改写被识别为标题生成的小请求,普通对话不受影响。": "Only small requests recognised as title generation are rewritten; normal conversations are unaffected.", "只有加入的提供商参与,新增提供商需要手动加入。": "Only added providers participate. New providers must be added manually.", "只有勾选的提供商参与;以后新增的提供商需要在这里勾选。": "Only checked providers participate; new providers must be checked here.", "只有名单内的提供商可以参与;新增提供商不会自动加入。": "Only listed providers can participate. New providers are not added automatically.", "只看用过这个模型的客户端与账号。点一条看它当时是怎么选的。": "Only clients and accounts that used this model. Open one to see how its account was chosen.", "只看这个客户端经过的模型与账号。点一条看它当时是怎么选的。": "Only models and accounts this client went through. Open one to see how its account was chosen.", "只看这个提供商下参与路由的账号。点一条看它当时是怎么选的。": "Only participating accounts under this provider. Open one to see how its account was chosen.", "只看这个账号承接的请求。点一条看完整的选路过程。": "Only requests handled by this account. Open one to see the full routing.", "只看这条路径上的请求。点一条看完整的选路过程。": "Only requests on this path. Open one to see the full routing.", "只移出本路由,账号状态和其他路由不变;保存后此入口将没有可用路由。": "Remove only from this route. Accounts and other routes stay unchanged. After saving, this entry has no available route.", "只读预演,不会推进轮转;保存后才会影响真实请求。": "Read-only preview; it does not advance rotation. Only saving affects real requests.", "可以保存空路由,但请求会明确失败,不会回退全局。": "An empty route can be saved, but requests will fail explicitly without falling back globally.", "可以跨提供商、跨模型多选。同一提供商也可以加入不同模型。": "Select multiple models across providers. Different models from the same provider can also be included.", "可用候选": "Available candidates", "可用待命": "Available, on standby", "可用账号按请求轮换;开启会话粘性时同一会话优先留在原账号。": "Rotate available accounts per request. With session stickiness enabled, the same session prefers its previous account.", "右侧面板内容": "Right panel content", "同一会话优先保持模型与账号,不可用时才顺延。": "Prefer the same model and account within a session; fall back when unavailable.", "同一模型,选择不同提供商": "Same model, different providers", "同号重试 {n} 次": "{n} same-account retries", "同账号内部重试": "Internal retries on the same account", "后备账号": "Backup account", "后过期": "until expiry", "否": "No", "启用": "enabled", "启用 {provider} 的账号": "Enable accounts for {provider}", "启用全部账号": "Enable all accounts", "启用当前列表账号": "Enable accounts in this list", "启用提供商中的第 {rank} 顺位;当前可用候选第 {effective} 顺位。": "Priority {rank} among enabled providers; current available-candidate priority {effective}.", "启用提供商中的第 {rank} 顺位;当前没有可用候选账号。": "Priority {rank} among enabled providers; no candidate accounts are currently available.", "启用规则": "Enable rule", "启用账号 {account}": "Enable account {account}", "命中 {n} 次": "{n} hits", "命中下面规则的上下文压缩请求,会改用指定的模型压缩一次;账号仍按新模型自己的路由挑。": "Context compaction requests matching a rule below are compacted once with the model you pick; the account is then chosen by that model's own route.", "命中会话粘性,沿用原账号完成请求": "Session stickiness matched; the previous account completed the request", "命中会话粘滞": "Session binding hit", "命中这条规则的压缩请求会改用「压缩模型」重发一次;改写之后按新模型自己的路由挑账号。": "Compaction requests matching this rule are re-sent once with the compaction model; the account is then chosen by that model's own route.", "命中配置": "Matched configuration", "响应到达": "Response received", "响应到达后": "After response arrival", "响应完成": "Response complete", "回放中": "Replaying", "回放保持不变": "Replay remains unchanged", "回放步骤": "Replay step", "固定这条请求": "Pin this request", "在工作台查看": "Open in workbench", "在途 + 近期": "In flight + recent", "在途 {n} / {limit}": "In flight {n} / {limit}", "在途时长": "Elapsed in-flight time", "在途请求 / 并发上限": "In-flight requests / concurrency limit", "备选按顺序尝试;一个都不加时,当前路由内找不到视觉模型就停止并说明原因。": "Fallbacks are tried in order; with none added, the request stops with an explanation when no vision model is found in the current route.", "复制失败,请手动选择并复制": "Copy failed. Select and copy manually.", "复制网关地址": "Copy gateway URL", "失败原因未记录": "Failure reason not recorded", "失败后备选": "Fallback on failure", "失败时直接报错": "Report the error on failure", "失败时退回原模型": "Fall back to the original model on failure", "失败阈值": "Failure threshold", "完整详情": "Full details", "完整请求详情": "Full request details", "完整过程": "Full process", "实时状态暂未更新,当前显示上次读取的结果:{error}": "Live status could not be refreshed. Showing the last retrieved results: {error}", "实际尝试失败": "Actual attempt failed", "实际模型": "Actual model", "实际请求路径": "Actual request paths", "实际账号尝试": "Actual account attempts", "客户端已取消请求": "The client cancelled the request", "客户端模型 {client} → 实际模型 {model}": "Client model {client} → upstream model {model}", "客户端请求": "Client request", "对外模型 ID": "Public model ID", "对外模型 ID 已被占用,请换一个名称": "This public model ID is taken. Choose another.", "对外模型 ID 格式不正确": "Invalid public model ID", "将禁用当前所选的 {n} 个账号,所有路由都不能再选用它们。此操作立即保存,不会删除账号。": "Disable the {n} selected accounts for all routes. This change is saved immediately and does not delete the accounts.", "尚未记录承载账号": "No serving account recorded yet", "尚未读取到有效的积分到期时间": "No valid credit expiry time has been loaded yet", "尝试 {n}": "Attempt {n}", "尝试 {n} · 最终承载": "Attempt {n} · final carrier", "尝试中": "Trying", "尝试失败": "Attempt failed", "尝试明细已截断或未记录,画布只展示保存下来的信息。": "Attempt details were truncated or not recorded. The canvas shows only saved information.", "尝试结果": "Attempt result", "尝试记录": "Attempts", "展开其余 {n} 个候选": "Show {n} more candidates", "展开完整原因": "Show full reason", "工具服务的视觉模型": "the tool service vision model", "左侧修改的是全局默认,不会影响它。": "Changes on the left apply to the global default and do not affect it.", "已保存": "Saved", "已保存 {n} 个候选": "{n} candidates saved", "已保存明细": "Saved details", "已停用": "Disabled", "已停用提供商 · {n}": "Inactive providers · {n}", "已关闭": "Disabled", "已删除独立配置,改为跟随全局": "Independent config deleted; now following the global configuration", "已启用": "Enabled", "已启用模拟条件": "Simulation conditions enabled", "已固定这条请求,新请求不会打断当前查看": "This request is pinned; new requests will not interrupt this view", "已完成记录": "Completed records", "已完成请求时间范围": "Completed request time range", "已尝试": "Already attempted", "已尝试 · 失败": "Tried · failed", "已用时": "Elapsed", "已禁用账号": "Disabled accounts", "已禁用账号 · {n}": "Disabled accounts · {n}", "已解除 {n} 条会话粘滞": "Released {n} session bindings", "已记录 {n} 次尝试": "{n} recorded attempts", "已跳过": "Skipped", "已转换为账号启停,独立路由参与名单保持不变": "Converted to account enable/disable controls. Independent route participation lists are unchanged.", "平均耗时": "Average duration", "并发已满": "Concurrency limit reached", "序号表示先后,不是提供商之间互相转发": "Numbers show the order of attempts, not forwarding between providers", "应用到草稿": "Apply to draft", "开始 {start} · 响应 {response} · 结束 {finish}": "Start {start} · response {response} · end {finish}", "开始于 +{time}": "Started at +{time}", "开始时间": "Start time", "当前全局路由使用固定参与名单,新增提供商不会自动加入。": "The global route uses a fixed participation list. New providers are not added automatically.", "当前可用队首": "Current available queue head", "当前承载": "Current handling account", "当前有效顺位以路由预演为准,不改变保存的配置优先级。": "The current effective order follows the routing preview and does not change the saved configuration priority.", "当前档位不保留跨请求粘滞,因此没有活跃绑定。": "The current mode does not retain bindings across requests, so there are no active bindings.", "当前模型": "Current model", "当前模型使用独立顺序,不受全局自动消耗排序影响。删除独立路由后会重新跟随账号页。": "This model uses an independent order, unaffected by global automatic consumption sorting. Deleting the independent route makes it follow Accounts again.", "当前模型使用独立顺序,不受全局自动消耗排序影响。恢复继承后会重新跟随账号页。": "This model uses an independent order, unaffected by global automatic consumption sorting. Restore inheritance to follow Accounts again.", "当前模型没有对应的账号,请先添加账号或检查模型绑定。": "No accounts are associated with this model. Add an account or check its model bindings.", "当前模型配置独立保存,不影响全局和其他模型。": "This model's configuration is saved independently and does not affect global settings or other models.", "当前没有参与账号,保存后这个范围可能无法承载新请求。": "No accounts currently participate. Saving may leave this scope unable to handle new requests.", "当前没有可沿用的粘滞绑定": "No reusable session binding", "当前空闲": "Currently idle", "当前绑定:{account},剩余 {time}": "Current binding: {account}, expires in {time}", "当前继承全局。改成模型独立配置后,改动只影响这个模型。": "Currently inherits global. A model-specific config only affects this model.", "当前继承全局固定名单;新增提供商需手动添加或在全局配置中改为自动参与。": "This view inherits the fixed global list. Add new providers manually or enable automatic participation in the global configuration.", "当前继承全局,修改前先切到独立配置": "Inheriting global — switch to own config before editing", "当前继承全局,切换到独立配置后只修改本模型。": "Currently inheriting global settings. Switch to an independent configuration to edit only this model.", "当前网关尚不支持全局账号启停,请更新网关后重新读取。": "This gateway does not yet support global account controls. Update the gateway and reload.", "当前范围内没有请求": "No requests in this range", "当前范围的提供商都没有账号,先在账号页添加": "No providers in this scope have accounts yet. Add one on the Accounts page.", "当前视图没有活跃会话粘滞": "No active session bindings in this view", "当前视图没有路由回放记录": "No routing replays in this view", "当前视图的请求入口": "Request entry point for this view", "当前请求": "In-flight requests", "当前路由位置": "Current routing position", "当前路由内的视觉模型": "a vision model in this route", "当前配置": "Current configuration", "当前配置已排除": "Excluded by current configuration", "当时": "At request time", "当时可用,当前请求尚未轮到这个账号": "Available at the time; this request has not reached this account yet", "当时可选的账号 · {n}": "Accounts available at the time · {n}", "当时状态": "State at the time", "当时的候选说明": "Candidate notes at the time", "当时的成员模型": "Member models at request time", "当时的选路原因未记录": "The routing reason was not recorded at the time", "当时被候选过滤规则跳过": "Skipped by candidate filtering rules at the time", "当时配置": "Configuration at request time", "当时配置与当前配置": "Configuration then and now", "影响继承全局的模型": "Affects models inheriting global settings", "怎么选账号": "Account selection", "思考等级 {value}": "Reasoning level {value}", "总耗时": "Total duration", "总计 {n} tokens": "{n} total tokens", "恢复": "Restore", "恢复全局继承": "Restore global inheritance", "恢复按账号页面的全局优先级选路,解除全局视图的提供商和账号范围限制。模型独立配置不会改变。": "Restore routing by the account page's global priority and remove provider and account restrictions from the global view. Independent model configurations remain unchanged.", "恢复提供商": "Restore providers", "恢复路由提供商": "Restore routing providers", "恢复阈值": "Recovery threshold", "恢复默认路由": "Restore default routing", "成功承载": "Handled successfully", "成员内轮询": "Rotate within members", "成员模型": "Member models", "所有可用提供商自动参与,新增账号或插件后无需再加路由;明确停用的保持不变。": "All available providers join automatically — no route to add after new accounts or plugins; explicitly disabled ones stay off.", "所有可用提供商自动参与,新增账号或插件后无需再添加路由。已停用的提供商和已排除的账号保持不变。": "All available providers participate automatically. Adding accounts or plugins requires no extra routing setup. Disabled providers and excluded accounts remain unchanged.", "所有可用提供商都已在当前路由中": "All available providers are already in this route", "所有模型共用": "Shared by all models", "所有模型共用路由策略与保护设置;全局顺序和消耗规则与账号页联动,模型独立配置可明确覆盖顺序。": "All models share routing strategies and protection settings. Global order and consumption rules stay in sync with Accounts; an independent model configuration can explicitly override the order.", "打开完整请求详情": "Open full request details", "打开该模型配置": "Open this model's configuration", "执行耗时": "Execution time", "执行记录": "Execution records", "执行路径": "Execution path", "执行路径按当时快照保留": "Execution path follows the recorded snapshot", "批量禁用账号": "Disable accounts in bulk", "承载账号": "Handling account", "把不同提供商、不同模型组合成一个入口。客户端使用对外模型 ID 发起请求。": "Combine models from different providers into one entry. Clients request its public model ID.", "把全局配置复制成这个模型的独立配置": "Copy the global config into a model-specific one", "拖动卡片改顺位,勾选决定参与;这里的位置就是实际选路顺序。": "Drag cards to reorder, check to include; this order is the real routing order.", "拖动或按 Alt + 方向键调整顺序": "Drag or press Alt + arrow keys to reorder", "拖动把手或按 Alt + 方向键调整顺序,更多操作在右侧菜单。": "Drag a handle or use Alt + arrow keys to reorder. More actions are in the menu on the right.", "拖动把手调整顺序,也可以使用右侧上下按钮。": "Drag the handle to reorder, or use the up/down buttons on the right.", "拖动提供商与账号调整顺序,修改即时保存。": "Drag providers and accounts to reorder them. Changes are saved immediately.", "拖动改顺位、勾选决定参与;这里的位置就是实际选路顺序。": "Drag to reorder, check to include; this order is the real routing order.", "拖动调整提供商顺序": "Drag to reorder providers", "拖动调整账号顺序": "Drag to reorder accounts", "按客户端类型聚合": "Grouped by client type", "按已保存配置": "Using saved configuration", "按当前草稿预演,不发送请求,不消耗额度。": "Preview this draft without sending requests or spending quota.", "按当前视图的顺序参与选路": "Routed in the order configured for this view", "按此范围查看配置": "Open config for this scope", "按步骤回放,不重新发送请求": "Replay steps without sending the request again", "按请求开始时的顺位": "In the order at request start", "按请求模型选择": "Select by requested model", "按路径聚合,会话在列表中展开,不在画布逐条连线。": "Grouped by path. Sessions are shown in the list, not as separate lines on the canvas.", "排除": "excluded", "提供商与账号": "Providers and accounts", "提供商保持优先顺序,同一提供商的账号轮流承接。": "Keep providers in priority order and rotate accounts within each provider.", "提供商参与": "Provider scope", "提供商参与方式": "Provider participation mode", "提供商参与方式改为{value}": "Provider scope set to {value}", "提供商参与范围": "Provider participation scope", "提供商未参与": "Provider not included", "提供商未记录": "Provider not recorded", "提供商范围": "Provider scope", "提供商路由设置": "Provider routing settings", "搜索会话或账号": "Search sessions or accounts", "搜索客户端、模型或账号": "Search clients, models, or accounts", "搜索提供商或模型": "Search providers or models", "搜索提供商或账号": "Search providers or accounts", "搜索本页会话或账号": "Search sessions or accounts on this page", "搜索模型": "Search models", "搜索模型、账号或会话来源": "Search models, accounts, or session sources", "搜索模型或请求 ID": "Search model or request ID", "搜索请求、模型或账号": "Search requests, models, or accounts", "搜索路由配置": "Search route configurations", "撤销修改": "Discard changes", "撤销草稿": "Discard draft", "收起其他候选": "Hide other candidates", "改为独立配置": "Switch to own config", "改为自动参与": "Enable automatic participation", "改用": "Switch to", "放到第 {n} 位": "Drop at position {n}", "放大画布": "Zoom in", "整次请求改交": "Hands the whole request to", "文本对话": "Text chat", "新增可用提供商会自动参与;这里只需恢复曾明确停用的提供商。": "New available providers participate automatically. Use this dialog only to restore explicitly disabled providers.", "新增提供商自动参与;移出本路由的不会自动加回。": "New providers join automatically. Removed providers are not automatically re-added.", "新增模型": "Add model", "新增模型独立路由": "Add independent model route", "新增模型独立配置": "New model-specific config", "新增路由配置": "Add routing configuration", "新建路由组": "New route group", "新配置 · 保存后生效": "New config · applies after saving", "无可用账号": "No available accounts", "无有效绑定": "No valid binding", "时间相对请求开始;历史只读,修改当前配置不会改变这条记录。": "Times are relative to the request start. History is read-only; changing the current configuration does not alter this record.", "时间相对请求开始;未记录的旧数据不补算。历史只读,修改当前配置不会改变这条记录。": "Times are relative to request start; old records without data are not backfilled. History is read-only — changing current config won't alter this record.", "时间相对请求开始;未记录的旧数据不补算。响应到达不等于流式请求结束。": "Times are relative to the request start. Missing historical data is not inferred. Receiving a response does not mean a streaming request has ended.", "是": "Yes", "显示全部": "Show all", "显示其他候选": "Show other candidates", "显示无账号 ({n})": "Show without accounts ({n})", "暂停": "Pause", "暂无可用账号": "No available accounts", "曾被限流的账号暂时排到队尾,三十分钟后或转发成功后恢复。": "Previously rate-limited accounts move to the back temporarily and return after thirty minutes or a successful forward.", "最早到期的剩余积分包:{time}": "Earliest-expiring credit pack with a remaining balance: {time}", "最终承载": "Final handling account", "最终由 {account} 承接": "Handled by {account}", "最近 {n} 分钟": "Last {n} minutes", "最近 {n} 条": "Latest {n}", "最近使用:{time}": "Last used: {time}", "最近完成": "Recently completed", "最近没有命中记录": "No recent hits", "最近请求已完成": "Latest request completed", "有在途": "With in-flight requests", "有未保存修改,预演仍按已保存配置。": "There are unsaved changes; the preview still uses the saved configuration.", "有未保存的修改": "There are unsaved changes", "未保存完整尝试明细,仅显示请求记录中的承载信息。": "Full attempt details were not saved. Only the handling information in the request record is shown.", "未保存草稿": "Unsaved draft", "未切换": "No switch", "未参与": "Not participating", "未参与提供商 · {n}": "Non-participating providers · {n}", "未参与提供商默认收起;选中历史路径时仍会显示。": "Non-participating providers are collapsed by default, but remain visible when their historical path is selected.", "未参与本范围": "Not in this scope", "未参与本路由": "Not in this route", "未发生切换": "No switch", "未记录上游调用": "No upstream call recorded", "未识别客户端": "Unidentified client", "未调用": "Not called", "未调用不画请求线;模型限流与当前配置分别展示。": "No call means no request line. Model rate limits and current configuration are shown separately.", "未调用的候选": "Candidates not called", "未轮到": "Not reached", "未选择客户端": "No client selected", "未选择模型": "No model selected", "未配置模型的默认路由": "Default route for unconfigured models", "本地网关": "Local gateway", "本次尝试失败": "This attempt failed", "本次执行": "This execution", "本次状态": "Request status", "本次用时": "Attempt time", "本次结果": "Request outcome", "本次耗时": "Attempt duration", "本次请求": "This request", "本次请求已完成": "This request has completed", "本窗口未调用": "Not called in this window", "本轮选路预演": "Routing preview", "来源未记录": "Source not recorded", "查看上游错误": "View upstream error", "查看上游错误摘要": "View upstream error summary", "查看其他 {n} 个候选": "Show {n} other candidates", "查看实际请求的选路、尝试与结果": "View routing decisions, attempts, and results for actual requests", "查看当前配置": "View current configuration", "查看最后一次尝试": "View the last attempt", "查看详情内容": "Choose detail content", "查看配置": "View configuration", "查看配置详情": "View configuration details", "标题生成": "Title generation", "标题生成路由入口尚未就绪,请刷新页面后重试": "The title generation route entry is not ready yet. Refresh the page and try again.", "检测到旧版全局参与设置,请先确认转换,再管理账号启停。": "Legacy global participation settings were found. Confirm their conversion before managing account status.", "模型、网关、提供商与账号的可视化选路": "Visual routing across models, the gateway, providers, and accounts", "模型未记录": "Model not recorded", "模型独立路由": "Model-specific route", "模型独立配置": "Independent model configuration", "模型看不了图片时,按下面的规则交给视觉模型;没配到的模型、以及本来就能看图的,一律原样放行。": "When a model cannot read images, the rules below hand them to a vision model; models not configured here — and those that can read images anyway — pass through unchanged.", "模型绑定不可用": "Model binding unavailable", "模型路由": "Model routes", "模拟首选失败": "Simulate primary failure", "正在处理": "In progress", "正在由 {account} 处理": "Processing with {account}", "正在编辑": "Editing", "正在读取会话绑定…": "Loading session binding…", "正在读取当前配置": "Loading current configuration", "正在读取路由…": "Loading routes…", "正在选路,尚未记录上游尝试": "Routing is in progress; no upstream attempt has been recorded yet", "正在预览 {model}": "Previewing {model}", "此为配置顺位,当前没有可用候选账号。": "This is the configured priority; there are currently no available candidate accounts.", "此入口没有参与路由的提供商,保存后请求将明确失败。": "This entry has no participating providers. Requests will fail explicitly after saving.", "此入口没有参与路由的账号。保存后请求将明确失败,不会回退全局或自动恢复参与名单。": "No accounts participate in this entry. After saving, requests fail explicitly, without global fallback or restoring the list automatically.", "此刻队列": "Current queue", "此提供商当前没有可用的模型绑定,配置已保留;在模型管理中恢复绑定后会自动回来。": "This provider currently has no available model binding. Its configuration is retained and will return automatically when the binding is restored in Model management.", "此模型限流": "Rate-limited for this model", "每轮重新选路,不保留跨请求的账号绑定。": "Route each turn independently without retaining account bindings across requests.", "没有保存其他候选信息": "No other candidate information was saved", "没有保存调用明细": "No call details saved", "没有其他候选账号": "No other candidate accounts", "没有匹配的会话": "No matching sessions", "没有匹配的候选": "No matching candidates", "没有匹配的提供商或账号": "No matching providers or accounts", "没有匹配的记录": "No matching records", "没有匹配的请求": "No matching requests", "没有匹配的路由配置": "No matching route configurations", "没有参与路由的账号": "No accounts participating in routing", "没有可添加的模型": "No models available to add", "没有可用提供商,请先添加账号或安装插件。": "No providers are available. Add an account or install a plugin first.", "没有可用模型": "No models available", "没有可用账号": "No accounts available", "没有可选的对话模型,请先启用模型和对应账号。": "No chat models are available. Enable a model and its account first.", "没有独立配置的模型沿用全局路由。": "Models without independent configurations use the global route.", "没有请求也能配置路由": "Configure routing without requests", "没有跳过": "Nothing skipped", "没有需要恢复的提供商": "No providers need restoring", "沿用工具服务的视觉模型": "Use the tool service vision model", "流动:有请求在途": "Moving: requests in flight", "消耗规则": "Consumption rules", "消耗规则已保存,但路由列表刷新失败:{error}": "Consumption rules were saved, but the routing list could not be refreshed: {error}", "添加到全局路由,新请求将按这里的顺序选择账号。": "Add to the global route. New requests select accounts in the order configured here.", "添加到固定参与名单;以后新增的提供商仍需手动加入。": "Add to the fixed participation list. Future providers must still be added manually.", "添加参与模型": "Add participating models", "添加规则": "Add rule", "添加路由提供商": "Add routing provider", "清空选择": "Clear selection", "清除会话粘滞": "Clear session bindings", "灰线:历史流量": "Gray: historical traffic", "点击查看这次尝试的结果与原因": "Click to view this attempt result and reason", "点击节点查看请求,点击齿轮编辑路由配置。": "Click a node to view requests; click the gear to edit routing.", "点击节点筛选,点击齿轮进入配置": "Click a node to filter, the gear to configure", "点击节点,切换到对应请求详情": "Click a node to switch to its request details", "点客户端看它用过的模型": "Click a client to see its models", "点模型看它的请求": "Click a model to see its requests", "点节点筛选,再点一次取消;点齿轮进入配置": "Click a node to filter, click it again to clear; the gear opens config", "熔断保护": "Circuit breaker", "特殊请求路由": "Special request routing", "特殊请求路由 · 只改写模型,不改选账号规则": "Special request routing · rewrites the model only, account rules stay unchanged", "独立": "Own", "独立账号顺序": "Independent account order", "独立路由": "Independent route", "独立路由的账号顺序不受全局消耗规则影响": "The account order in an independent route is not affected by global consumption rules", "独立配置": "Independent configuration", "画布位置不改变选路优先级": "Canvas position does not change routing priority", "真实请求还会考虑当时的会话绑定、并发与限额状态。": "Real requests also consider current session bindings, concurrency and quota.", "确定删除「{model}」的独立路由配置?删除后该模型将使用全局路由。不会删除模型、账号或请求记录。": "Delete the independent routing configuration for “{model}”? This model will then use the global route. No models, accounts, or request records will be deleted.", "确认转换": "Confirm conversion", "禁用全部账号": "Disable all accounts", "禁用当前列表账号": "Disable accounts in this list", "禁用账号": "Disable account", "积分到期:暂无数据": "Credit expiry: no data", "积分:{time}": "Credits: {time}", "移出": "removed", "移出本路由": "Remove from this route", "移除此模型的独立路由配置,之后重新继承全局路由。不会删除模型、账号或请求记录。": "Remove this model's independent routing configuration and inherit the global route again. No models, accounts, or request records will be deleted.", "移除路由提供商": "Remove routing provider", "窗口内无请求": "No requests in window", "第 {n} 位": "Position {n}", "第 {n} 次尝试 · {name}": "Attempt {n} · {name}", "第 {n} 顺位": "Priority {n}", "等待回放": "Awaiting replay", "等待首帧": "Waiting for first byte", "策略": "Strategy", "筛选模型": "Filter by model", "粘性命中": "Binding hits", "粘性:{mode}": "Stickiness: {mode}", "粘滞": "Sticky", "粘滞 {mode}": "Affinity {mode}", "粘滞命中": "Binding hit", "粘滞标记": "Binding markers", "组名": "Group name", "组名方便识别,对外模型 ID 给客户端使用。": "The group name is for identification; clients use the public model ID.", "经过 {n} 次切换后成功,最终承载:{account}": "Succeeded after {n} switches; final account: {account}", "绑定:{account}": "Bound to: {account}", "结束时间": "End time", "结果未记录": "Result not recorded", "统一路由设置": "Global routing settings", "统一路由设置已保存": "Global routing settings saved", "继承": "Inherit", "继承全局": "Inherit global", "继承全局配置": "Inherits global configuration", "继承全局:{value}": "Inherit global: {value}", "继承时不能改这里的值;切到独立配置后才会写入这个模型。": "Values can't change while inheriting; switching to own config writes them for this model.", "编辑全局默认": "Edit global defaults", "编辑范围": "Editing scope", "编辑规则": "Edit rule", "编辑路由组": "Edit route group", "缩小画布": "Zoom out", "网关继续尝试下一个账号": "Gateway proceeds to the next account", "耗时未记录": "Duration not recorded", "自动参与": "Automatic participation", "自动参与模式下将明确停用此提供商,之后新增账号也不会自动恢复;不会删除提供商或账号。": "This explicitly disables the provider in automatic mode. Adding accounts later will not re-enable it. No providers or accounts are deleted.", "自动参与(推荐)": "Automatic (recommended)", "自动消耗排序已启用,请先关闭规则再手动调整": "Automatic consumption sorting is enabled. Turn off the rules before reordering manually", "自动:空闲五分钟释放;会话内:空闲六小时释放;每轮或关闭:不保留跨请求绑定。": "Auto: release after five idle minutes. Session: release after six idle hours. Per-turn or Off: no binding across requests.", "自动:空闲五分钟释放;会话内:空闲六小时;每轮或关闭:不跨请求绑定。": "Auto: released after five idle minutes; Session: six idle hours; Per turn or Off: no cross-request binding.", "自定义路由组": "Custom route groups", "草稿预演": "Draft preview", "被跳过": "Skipped", "被跳过的账号": "Skipped accounts", "规则": "Rules", "规则全局生效,不受原路由池限制;指定模型按自己的路由选账号,网关 Key 权限仍然生效。": "Rules apply globally, without being limited to the original routing pool. Selected models use their own routing to choose accounts; gateway key permissions still apply.", "规则最多 {n} 条。": "Up to {n} rules.", "视频输入": "Video input", "解除": "Release", "解除全局路由的参与范围限制,继续使用与账号页共用的手动顺序和自动消耗规则;模型独立配置保持不变。": "Remove global routing participation restrictions while keeping the manual order and automatic consumption rules shared with Accounts. Independent model configurations remain unchanged.", "解除全部粘滞": "Release all bindings", "解除只清除网关的账号绑定,不删除聊天历史、不关闭粘性设置。后续成功请求仍可建立新的绑定;重启网关会清空这些进程本地记录。": "Releasing clears only the gateway's account binding, not chat history or the stickiness setting. Later successful requests can create new bindings. Restarting the gateway clears these process-local records.", "解除当前模型全部粘滞": "Release this model's bindings", "解除所有模型的全部会话粘滞。不会终止在途请求,之后的请求会重新选路。": "Release all session bindings for all models. In-flight requests are not terminated; later requests are routed again.", "解除这个模型的全部会话粘滞。不会终止在途请求,之后的请求会重新选路。": "Release all session bindings for this model. In-flight requests are not terminated; later requests are routed again.", "解除这条会话": "Release this session", "触发客户端": "Triggering client", "计算中…": "Calculating…", "记录所有经过网关的请求,不要求绑定客户端。": "Records all requests through the gateway, without requiring client bindings.", "记录时间": "Captured at", "设置参与范围": "Configure participation", "识别客户端": "Recognised clients", "该提供商在当前视图中已停用": "This provider is disabled in this view", "该提供商没有账号,请先到账号页添加。": "This provider has no accounts. Add one on the Accounts page first.", "请填写组名和对外模型 ID": "Enter a group name and public model ID", "请检查熔断参数:失败阈值 1~20,时长 10~600 秒,恢复阈值 1~10。": "Check the circuit breaker parameters: failure threshold 1–20, duration 10–600 seconds, recovery threshold 1–10.", "请求": "Requests", "请求 ID 未记录": "Request ID not recorded", "请求仍在处理中,当前阶段:{phase}": "Request is still in progress; current phase: {phase}", "请求仍在进行": "Request still running", "请求会去哪里": "Where will the request go?", "请求回放": "Request replay", "请求在途": "Request in flight", "请求完成不代表会话关闭;粘滞有效期不是在线状态。": "Request completion does not mean the session is closed. Binding expiry is not an online status.", "请求已取消": "Request cancelled", "请求当时的配置": "Configuration at request time", "请求成功完成,未发生账号切换": "Request completed successfully without an account switch", "请求成功完成,未记录承载账号": "The request succeeded, but the serving account was not recorded", "请求执行": "Request execution", "请求执行回放": "Request execution replay", "请求日志 →": "Request log →", "请求未成功完成": "Request did not complete successfully", "请求模型": "Request model", "请求活动范围": "Request activity range", "请求状态": "Request status", "请求结论": "Request outcome", "请求范围": "Request range", "请求记录数据库不可用": "Request database unavailable", "请求跟踪": "Request tracing", "请求跟踪内容": "Request tracing content", "请求进入": "Request received", "请求进入网关": "Request reaches gateway", "请求需要": "Request requirements", "请选择模型": "Select a model", "读取中…": "Loading…", "谁参与及先后顺序": "Participation and priority", "调整全局消耗规则": "Edit global consumption rules", "调整到期时间、可用余额及其他消耗规则的优先级": "Adjust the priority of expiry, available balance and other consumption rules", "调整后续请求的配置": "Configure subsequent requests", "调整模型顺序": "Reorder models", "调整积分到期远近及其他消耗规则": "Adjust credit expiry order and other consumption rules", "调用示例": "Request example", "账号 {name} 已{state}": "Account {name} {state}", "账号全部禁用": "All accounts disabled", "账号启停与账号页同步,立即影响所有路由;策略与排序需保存。": "Account status stays in sync with Accounts and applies immediately to all routes. Save policy and order changes separately.", "账号启停与默认规则": "Account status and default rules", "账号启停操作": "Account enable/disable actions", "账号启停立即生效;路由配置保存后生效": "Account status applies immediately; routing settings apply after saving", "账号启停部分完成:成功 {ok} 个,失败 {fail} 个,跳过 {skip} 个。{details}": "Account status partially updated: {ok} succeeded, {fail} failed, {skip} skipped. {details}", "账号尝试": "Account attempts", "账号已禁用": "Account disabled", "账号已移除": "Account removed", "账号操作": "Account actions", "账号未记录": "Account not recorded", "账号组": "Account groups", "账号组操作": "Account group actions", "账号设置与全局保护另行保存,不属于本页路由草稿。": "Account settings and global protection are saved separately, outside this routing draft.", "账号设置与所有路由共用,不改变当前路由的参与名单。": "Account settings apply across all routes without changing this route's participation list.", "账号路由设置": "Account routing settings", "起点是请求本身,不依赖客户端绑定。": "The request itself is the starting point; no client binding is required.", "跟随列表中的最新请求": "Following the latest request in the list", "跨模型组合": "Mixed-model group", "路径": "Path", "路径过多,画布仅展示前 300 条;统计覆盖完整窗口,请筛选模型缩小范围。": "Too many paths. The canvas shows the first 300; totals cover the full window. Filter by model to narrow the view.", "路由入口": "Route entries", "路由参与操作": "Route participation actions", "路由工作台": "Routing workbench", "路由工作台不可用": "Routing workspace unavailable", "路由快照未记录": "Routing snapshot not recorded", "路由成员操作": "Route member actions", "路由接口不可用,请确认网关与界面已更新": "Routing API unavailable. Ensure both the gateway and interface are updated.", "路由接口返回了不完整的数据": "The routing API returned incomplete data", "路由数据正在更新,请稍后重试": "Routing data is being updated. Please try again shortly.", "路由模式": "Routing mode", "路由画布": "Routing canvas", "路由策略改为{value}": "Routing policy set to {value}", "路由类型": "Route type", "路由组": "Route group", "路由组已删除": "Route group deleted", "路由视图": "Routing view", "路由设置": "Routing settings", "路由配置": "Routing configuration", "路由配置列表": "Route configuration list", "路由配置尚未读取": "Routing configuration not loaded yet", "路由配置已保存": "Routing configuration saved", "路由配置已保存,仅影响后续选路": "Routing configuration saved; applies to subsequent routing only", "路由配置操作": "Route configuration actions", "路由配置版本不可用,请更新网关后重试": "Configuration version unavailable. Update the gateway and try again.", "跳过候选": "Skipped candidates", "转发前就失败、或旧记录未落库时,只能看到请求本身与配置快照。": "If it failed before forwarding, or the old record wasn't stored, only the request and config snapshot are shown.", "转发失败的账号暂时休息,避免连续请求反复撞到同一故障。": "Accounts that fail to forward rest temporarily, avoiding repeated requests to the same failing account.", "转换只处理当前账号;之后新增账号按账号页的启用状态使用。不会启用任何已禁用的账号。": "Conversion only affects existing accounts. New accounts follow their status on the Accounts page. No disabled account will be enabled.", "转换旧版全局参与设置": "Convert legacy global participation settings", "转换旧版设置": "Convert legacy settings", "转换结果未确认,请重新读取全局配置": "Conversion could not be confirmed. Reload the global configuration.", "输出 {n} tokens": "{n} output tokens", "过程提示": "Process notes", "运行视图": "Live view", "近期 {n} 次请求": "{n} recent requests", "返回全部流向": "Back to all traffic", "返回列表": "Back to list", "返回实时": "Back to live", "返回画布": "Back to canvas", "还有 {n} 处": "{n} more", "还没有参与模型": "No participating models yet", "还没有参与路由的提供商": "No providers participating in routing yet", "还没有可用模型,先在账号页添加账号": "No models available yet. Add an account on the Accounts page first.", "还没有可用的模型,请先启用模型和对应账号。": "No models available yet; enable models and their accounts first.", "还没有规则。压缩请求会按原模型照常转发。": "No rules yet. Compaction requests are forwarded with the original model.", "还没有规则。图片会照常交给原模型,看不了的就会报错。": "No rules yet. Images go to the original model as usual; models that cannot read them will fail.", "还没有规则。标题请求会照常交给原模型。": "No rules yet. Title requests go to the original model as usual.", "还没有账号,先在账号页添加;有账号的提供商才会出现在这里": "No accounts yet. Add one on the Accounts page; only providers with accounts appear here.", "还没选压缩模型": "No compaction model selected", "还没选原模型": "No source model selected", "还没选标题模型": "No title model selected", "还没选视觉模型": "No vision model selected", "这一页改的只作用于当前范围": "Changes here only affect this scope", "这个范围内最近的请求。点一条看它当时是怎么选的账号。": "Recent requests in this scope. Open one to see how its account was chosen.", "这个范围怎么选账号": "How this scope picks accounts", "这些设置由所有模型共用;提供商与账号的参与范围和顺序在各自视图中独立配置。": "These settings are shared by all models. Provider and account participation and order are configured independently in each view.", "这份记录来自实际请求,不使用当前账号队列重新推演。": "This record comes from an actual request, not a simulation using the current account queue.", "这是请求当时保存的选路快照,修改当前路由不会改变这份记录。": "This snapshot was saved when the request was routed. Changing the current route does not change this record.", "这条会话已解除或过期,不再有活跃绑定。": "This session has been released or expired and no longer has an active binding.", "这条规则只改写被识别为标题生成的小请求,普通对话不受影响。": "This rule only rewrites small requests recognised as title generation; normal conversations are unaffected.", "这条规则里的模型收到图片时按选定的方式处理;没被任何规则选中的模型一律原样放行。": "Requests for the models in this rule are handled the chosen way when they contain images; models not selected by any rule pass through unchanged.", "这条请求使用的路由组已删除,当时的快照仍可查看": "The route group used by this request has been deleted; its saved snapshot is still available", "这条请求对应的会话当前仍绑定到「{account}」。": "The session for this request is currently bound to “{account}”.", "这条请求没有保存上游尝试明细": "No upstream attempt details were saved for this request", "这条请求没有保存路由决策": "No routing decision was saved for this request", "这条请求没有保存路由快照,仍可查看已有的请求和尝试信息。": "No routing snapshot was saved for this request. Existing request and attempt information is still available.", "这次尝试的结果": "Result of this attempt", "这里只决定是否参与本路由,不改变账号启用状态。": "This only controls route participation, not whether the account is enabled.", "这里的参与范围只影响当前视图;账号启停、并发和限制器属于账号本身,所有模型共用。": "Participation here affects only this view. Account enablement, concurrency, and limiters belong to the account and are shared by all models.", "这里的顺序决定实际选路;画布只为查看请求调整位置。": "This order controls actual routing; the canvas rearranges nodes only to make requests easier to view.", "这里调整的是账号组的全局消耗规则;当前独立路由的账号顺序保持不变。": "These are the account group's global consumption rules. The current independent route's account order stays unchanged.", "连线表示参与本路由": "Lines indicate participation in this route", "连线表示账号组中有已启用账号": "Lines indicate account groups with enabled accounts", "连续失败达到阈值时暂时让位,恢复后再重新参与。": "Temporarily step aside after consecutive failures reach the threshold and participate again after recovery.", "退避 {time}": "Backoff {time}", "选中": "Selected", "选中流量详情": "Selected traffic details", "选中路径": "Selected path", "选择一个或多个客户端": "Select one or more clients", "选择一条请求查看执行过程": "Select a request to view its execution", "选择一条请求查看选路过程": "Select a request to view its routing process", "选择作用范围后配置路由": "Select a scope to configure routing", "选择左侧请求查看选路过程": "Select a request on the left to view its routing.", "选择模型": "Select a model", "选择请求模型后查看具体限流状态": "Select a request model to see its rate-limit state", "选择账号": "Select accounts", "选择路由入口": "Select a route entry", "选择预览模型后查看队列": "Select a preview model to view the queue", "选路原因未记录": "Routing reason not recorded", "选路情况": "Routing decisions", "选路方式": "Routing strategy", "选路预演": "Routing preview", "逐步回放": "Step-by-step replay", "配置作用范围": "Configuration scope", "配置第 {rank} 顺位;当前可用候选第 {effective} 顺位。": "Configured priority {rank}; current available-candidate priority {effective}.", "配置范围": "Configuration scope", "配置该模型": "Configure this model", "配置请求的参与范围与优先顺序": "Configure routing participation and priority", "配置项": "Setting", "配置顺位 {n}": "Configured priority {n}", "重新读取": "Reload", "重新读取会丢弃当前范围的未保存草稿,其他范围的草稿保留。": "Reloading discards the unsaved draft for this scope. Drafts in other scopes are kept.", "重新读取配置": "Reload configuration", "队列为无会话预演;实际粘性命中和重试顺延以回放为准。": "The queue is a session-free preview. Refer to replays for actual binding hits and retry fallback.", "队首": "Queue head", "阶段 {phase} · 已进行 {time}": "Phase {phase} · {time} elapsed", "限制器跳过": "Skipped by limiter", "隐藏无账号 ({n})": "Hide without accounts ({n})", "静止蓝线:选中历史路径": "Still blue: selected historical path", "顺位": "Rank", "顺序修改即时保存,仅作用于当前视图。": "Order changes are saved immediately and affect only this view.", "顺序调整不会解除限流;有效粘滞优先于普通账号顺序。": "Reordering does not clear rate limits. A valid binding takes precedence over normal account order.", "预演首选": "Preview primary choice", "预览模型": "Preview model", "首帧": "First response", "首帧 {time}": "First byte {time}", "首帧耗时": "Time to first frame", "首帧:{time}": "First frame: {time}", "首选账号": "Primary account", "默认自动参与;新增可用提供商无需再添加路由,明确停用项保持不变。": "Participation is automatic by default. New available providers need no extra routing setup; explicitly disabled providers remain disabled.", "默认规则": "Default rules", "默认路由": "Default route", "Agent 配置": "Agent Configuration", "Claude Code 按 Opus / Sonnet / Haiku / 子 Agent 分档请求模型;这里把每档指向网关目录里的模型,留空表示不改写该档。": "Claude Code requests models per tier (Opus / Sonnet / Haiku / subagent). Point each tier at a model from the gateway catalog; leave a tier blank to leave that field untouched.", "Claude Code 支持多模型菜单和逐模型思考等级;上下文及输入能力由客户端识别,不把自动压缩阈值冒充上下文窗口。": "Claude Code supports a multi-model menu and per-model reasoning effort. Context and input capabilities are recognized by the client; the auto-compaction threshold is not treated as the context window.", "Claude Code 的 Opus / Sonnet / Haiku / 子 Agent 四档默认都指向上面选的模型;要让某一档用别的模型,在这里单独改。": "All four Claude Code tiers (Opus / Sonnet / Haiku / subagent) point at the model chosen above by default. To give one tier a different model, change it here.", "Codex 的模型目录支持逐模型上下文、图片和思考档位,不提供可写的逐模型输出上限。": "The Codex model catalog supports per-model context windows, image input, and reasoning levels, but has no writable per-model output limit.", "Crush 需要明确填写输出上限、图片与思考能力": "Crush requires explicit output limits, image support, and reasoning support", "DSH 配置目标": "DSH configuration target", "Kimi Code 只能追加能力声明,不能关闭内置识别的能力。输出上限仅新版 Anthropic 协议生效;旧版不写入思考档位。": "Kimi Code can add capability declarations but cannot disable built-in capabilities. Output limits apply only to the Anthropic protocol in newer versions; reasoning levels are not written for legacy versions.", "MCP 服务名称": "MCP server name", "Skill 目录名": "Skill folder name", "Token 上限必须是 1 到 1 亿之间的整数": "Token limits must be integers between 1 and 100 million", "Zed 的 API Key 仍需在客户端提供商设置中填写;本页不修改系统凭证。": "Enter the API key in Zed provider settings. This page does not modify system credentials.", "{id}(不在网关目录)": "{id} (not in gateway catalog)", "· 走网关": "· via gateway", "一键把本机 AI 客户端接到本地网关:改写它自己的配置文件,保留其它设置": "Point local AI clients at the local gateway: rewrite their config files and leave every other setting alone", "一键接入": "Quick connect", "一键设置": "Fill all", "上下文": "Context", "上次应用未完整结束,请先查看恢复预览。": "The last apply operation did not finish. Review the restore preview first.", "上游模型 id,例如 raccoon-coder-pro": "Upstream model id, e.g. raccoon-coder-pro", "下面是这个客户端文件里现有的配置(只读)。点「从客户端导入」把它收进我的配置,之后就能编辑和切换。": "These are the profiles already in this client's config file (read-only). Click \"Import from client\" to copy them into my profiles — then they can be edited and switched.", "不写入": "Not set", "不要添加 /v1/messages;客户端会自行追加请求路径。": "Do not append /v1/messages; the client adds the request path.", "与客户端一致": "Matches client", "个 · 已安装": " · installed", "中转": "Relay", "仅修改所选 MCP 条目,保留其它配置和注释;保存不会启动服务。": "Only the selected MCP entry is changed; other settings and comments are preserved. Saving does not start the server.", "仅可读取": "Read-only", "从客户端导入": "Import from client", "从网关目录选择": "Select from gateway catalog", "从网关目录选择模型": "Select a model from the gateway catalog", "会用最近一次备份覆盖它的配置文件。这一步不会改动你在本页存的配置列表。": "Overwrites its config file with the most recent backup. The profile list on this page is untouched.", "低": "Low", "使用中": "In use", "使用此配置": "Use this configuration", "使用此配置时设为默认,其他模型仍可在客户端选择。": "This becomes the default model when you use this configuration. Other models remain available in the client.", "使用真实模型 ID,不要填写模型展示名。": "Use the actual model ID, not its display name.", "使用网关 Key": "Use gateway key", "保存会直接修改客户端配置;确认前展示差异,写入前自动备份。": "Saving updates the client configuration directly. Changes are shown before confirmation, and a backup is made before writing.", "保存修改": "Save changes", "保存只记录方案,不修改客户端。应用时会另外展示文件差异并请求确认。": "Saving only stores the profile. Applying shows file changes and asks for confirmation separately.", "保存后可在配置列表中切换,不影响当前使用的配置。": "Once saved, switch to it from the configuration list. The current configuration remains unchanged.", "保存后同步更新客户端;写入前可查看改动,并自动备份。": "Saving also updates the client. Review the changes before writing; a backup is created automatically.", "保存方案": "Save profile", "保存方案不会切换客户端;应用后改变实际默认模型。": "Saving does not switch the client; applying changes its actual default model.", "保存方案不会切换客户端;选择“应用并设为默认”才改变实际默认模型。": "Saving does not switch the client. Choose “Apply and set as default” to change its actual default model.", "保存时自动写入完整的 /chat/completions 路径。": "The complete /chat/completions path is written automatically.", "保存路径": "Save path", "保留导入的认证": "Keep imported authentication", "保留现有认证": "Keep existing authentication", "修改后点击「使用此配置」才会更新客户端。": "After editing, select Use this configuration to update the client.", "停用后将从客户端可选项中关闭此配置,其他配置不受影响。": "This configuration will be disabled in the client's available options. Other configurations are unaffected.", "停用配置": "Disable configuration", "全选搜索结果": "Select all search results", "全部配置(全局覆盖)": "All profiles (global override)", "共": "Total", "关闭后丢弃本次修改,不会保存配置或改动客户端。": "Closing discards these changes without saving the configuration or changing the client.", "关闭后丢弃本次草稿,不会保存空方案,也不会修改客户端。": "Closing discards this draft. No empty profile is saved and the client is not modified.", "内容已经一致,无需写入": "The content already matches; no write is needed", "写入中…": "Writing…", "写入后需要重开会话才生效": "Restart the session after writing for it to take effect", "写入失败:{reason}": "Write failed: {reason}", "写入客户端": "Write to client", "写入文件": "Configuration file", "写入预览": "Write preview", "删除 MCP": "Delete MCP", "删除 Skill": "Delete Skill", "删除只移除 SKILL.md,辅助文件保留在原目录;不会执行其中的脚本。": "Deleting removes only SKILL.md. Supporting files remain in the original folder; no scripts are executed.", "删除客户端配置": "Delete client configuration", "删除已保存方案?": "Delete saved profile?", "删除新建文件": "Remove newly created file", "删除方案": "Delete profile", "删除配置": "Delete configuration", "删除配置?": "Delete configuration?", "动态表达式、独立作用域或全局覆盖的 MCP 为只读,请在 DSH 中编辑。": "MCP entries with dynamic expressions, isolated scopes, or global overrides are read-only. Edit them in DSH.", "单配置": "Single profile", "另一项配置操作尚未完成": "Another configuration operation is still running", "只保存变量引用,不修改系统环境;请在启动客户端的环境里设置变量值。": "Only the variable reference is saved. Set its value in the environment used to launch the client; the system environment is not modified.", "只删除 Agent2API 中的方案,不修改客户端当前配置。": "Only the profile in Agent2API is deleted. The client's current configuration is untouched.", "只改 enabled 与默认项,其余条目原样保留": "Only the enabled and default flags change; every other entry is kept as-is", "只改属于我们的那几个键,其它设置原样保留": "Only the keys we own change; every other setting is kept as-is", "可先新增配置,安装后再使用": "You can add configurations now and use them after installation", "可同时启用多条;切换只改 enabled 与默认项": "Several entries can be enabled at once; switching only changes the enabled and default flags", "可搜索并多选模型;上下文、输出上限和能力分别从网关目录自动填入。": "Search and select multiple models. Each model’s context window, output limit, and capabilities are filled from the gateway catalog.", "可选模型": "Available models", "同一时刻只有一套生效;写入 = 把这一套整段写进客户端文件": "Only one profile is active at a time; writing copies that profile into the client config file", "启用 {name}": "Enable {name}", "启用此配置": "Enable this configuration", "启用配置": "Enable configuration", "图形化管理客户端原生配置;保存方案与应用配置分开。": "Manage native client configuration visually; saving profiles and applying configuration are separate actions.", "图片输入": "Image input", "在客户端管理认证": "Manage authentication in client", "填写服务根地址,不要附加 /v1beta 或 generateContent 路径。": "Enter the service root URL. Do not append /v1beta or a generateContent path.", "处理中…": "Processing…", "备注": "Note", "多套配置": "Multiple profiles", "多配置 · 已启用 {n}": "Multi-profile · {n} enabled", "子 Agent": "Subagent", "安装或初始化后可重新检测;自定义安装位置可指定配置路径。": "Recheck after installation or initialization. For custom locations, specify the configuration path.", "完整配置文件路径": "Full configuration file path", "官方直连": "Official direct", "客户端列表加载失败:{reason}": "Failed to load the client list: {reason}", "客户端列表响应无效": "Invalid client list response", "客户端协议": "Client protocol", "客户端原生 MCP 配置(JSON)": "Native client MCP configuration (JSON)", "客户端原生配置": "Native client configuration", "客户端官方配置说明": "Official client configuration guide", "客户端实际配置": "Actual client configuration", "客户端必须实际使用同一个配置文件;本页不改变客户端启动参数。": "The client must use the same configuration file. This page does not change its launch arguments.", "客户端文件已有外部修改,自动恢复会拒绝覆盖。": "The client file has external changes. Automatic restore will refuse to overwrite them.", "客户端条目启用状态": "Client entry enabled state", "客户端清单": "Clients", "客户端管理分类": "Client management category", "客户端自己的设置优先;这里写的是写入时带进去的初值": "The client's own settings win; this is only the initial value written in", "客户端资源已保存并校验": "Client resources saved and verified", "客户端选项": "Client options", "客户端配置写入后未通过校验": "Client configuration failed verification after writing", "客户端配置已经一致,无需写入": "Client configuration already matches; no write is needed", "客户端默认地址": "Client default endpoint", "密钥在 Agent2API 中加密保存;使用时按客户端要求写入。": "Keys are stored encrypted in Agent2API and written in the format required by the client when used.", "密钥已隐藏;绿色为新增,红色为删除。所有实际写入文件都列在这里。": "Keys are hidden. Green indicates additions and red indicates removals. All files to be written are listed here.", "导入模型及客户端未知字段会保留;本页删除方案不会删除客户端条目。": "Imported models and unrecognized client fields are preserved. Deleting a profile here does not delete client entries.", "将删除此配置及客户端中的对应条目,其他配置不受影响。": "This configuration and its matching client entry will be deleted. Other configurations are unaffected.", "尚未初始化": "Not initialized", "尚未支持这个客户端的资源管理": "Resource management is not yet supported for this client", "展开可调整能力;— 表示客户端未声明": "Expand to adjust capabilities; — means the client did not declare it", "已保存": "Saved", "已保存方案": "Saved profiles", "已保存,未应用": "Saved, not applied", "已写入 {name}": "Written to {name}", "已写入 {name};这个客户端只在启动时读配置,重开一个会话才生效": "Written to {name}; this client reads its config at startup, so reopen a session for it to take effect", "已删除保存方案,客户端配置未改动": "Saved profile deleted; client configuration is unchanged", "已安装": "Installed", "已导入 {n} 套方案": "Imported {n} profiles", "已按备份还原 {name}": "Restored {name} from backup", "已收进我的配置:{n} 条": "Imported into my profiles: {n}", "已检测到": "Detected", "已选择": "Selected", "已选模型": "Selected models", "已配置": "Configured", "已预填网关地址、协议、Key 与模型;确认后直接写入客户端,不需要先保存方案。": "Gateway URL, protocol, key, and model are prefilled. Confirm to write directly to the client without saving a profile first.", "应用": "Apply", "应用中…": "Applying…", "应用到客户端": "Apply to client", "应用并设为默认": "Apply and set as default", "应用时使用当前启用的真实 Key;预览会隐藏密钥。": "Applying uses a currently enabled real key; previews hide the secret.", "当前环境不支持保存": "Saving is unavailable in this environment", "当前环境不支持保存(桥接方法缺失)": "Saving is unavailable here (bridge method missing)", "当前环境不支持写入(桥接方法缺失)": "Writing is unavailable here (bridge method missing)", "当前环境不支持客户端接管(桥接方法缺失)": "Client takeover is unavailable here (bridge method missing)", "当前环境不支持客户端配置": "Client configuration is unavailable in this environment", "当前环境不支持导入": "Importing is unavailable in this environment", "当前环境不支持导入(桥接方法缺失)": "Importing is unavailable here (bridge method missing)", "当前环境不支持应用": "Applying is unavailable in this environment", "当前环境不支持恢复": "Restoring is unavailable in this environment", "当前环境不支持还原(桥接方法缺失)": "Restoring is unavailable here (bridge method missing)", "当前环境不支持预览": "Preview is unavailable in this environment", "当前环境无法读取网关模型目录": "The gateway model catalog cannot be read in this environment", "当前网关未启用 API Key 鉴权;占位值只用于客户端要求非空密钥的场景。": "API key authentication is not enabled on this gateway. A placeholder is used only when a client requires a non-empty key.", "当前默认": "Current default", "思考能力": "Reasoning support", "恢复作用在网关所在机器;密钥已隐藏,不会覆盖应用后的外部修改。": "Restore acts on the gateway host. Keys are hidden and external changes made after applying will not be overwritten.", "恢复自动检测": "Restore automatic detection", "所有操作作用在网关所在机器。": "All operations act on the gateway host.", "所选 Key 下没有可用的对话模型,请先启用模型或手动填写。": "No chat models are available for this key. Enable a model or enter one manually.", "所选 Key 下没有可用的对话模型,请先启用模型或更换 Key。": "No chat models are available for this key. Enable a model or choose another key.", "所选 Key 无权使用当前模型,请重新选择": "This key cannot use the current model. Select another key or model.", "手动添加模型": "Add model manually", "手机端可查看客户端实际配置并撤销上次应用;编辑方案请使用桌面端。": "On mobile, view client configuration and undo the last application. Use the desktop interface to edit profiles.", "手机端可查看模型配置、撤销上次应用,并管理提示词、Skill 与 MCP。": "On mobile, view model settings, undo the last application, and manage prompts, Skills and MCP.", "指定配置路径": "Specify configuration path", "按备份还原": "Restore from backup", "按备份还原 {name}?": "Restore {name} from backup?", "换 Key 后会按新 Key 的授权重新核对已选模型": "Switching keys re-checks the selected models against the new key's permissions.", "接入后使用此默认模型,其它已选模型仍可在客户端切换。": "This model becomes the default. Other selected models remain available in the client.", "接入客户端": "Connect client", "接入本网关": "Connected to this gateway", "接入状态来自客户端配置文件。恢复前显示差异;文件被其他程序修改时拒绝覆盖。": "Connection status comes from the client configuration file. Restore shows changes first and refuses to overwrite files modified by other programs.", "接入端点": "Endpoint", "接口基址": "API base URL", "搜索客户端": "Search clients", "搜索客户端 / 配置文件…": "Search clients or config files…", "搜索已选模型": "Search selected models", "搜索模型 ID / 展示名…": "Search model ID or display name…", "撤销上次应用": "Undo last application", "操作目标:网关所在机器": "Target: gateway host", "收起更多配置": "Hide additional settings", "收起模型选择": "Hide model picker", "改写网关所在机器上的客户端配置": "Manage client configuration on the gateway host", "改动": "Changed", "放弃修改": "Discard changes", "放弃未保存的修改?": "Discard unsaved changes?", "新增": "Added", "新增 MCP": "Add MCP", "新增配置": "Add configuration", "新建 Skill": "New Skill", "新建文件": "New file", "新建方案或导入当前配置;保存后再决定是否应用。": "Create a profile or import the current configuration. Decide whether to apply it after saving.", "新建配置": "New profile", "新建配置方案": "New configuration profile", "新版网页版和桌面版分别保存模型配置;旧版模型设置共享,MCP 始终只写入所选运行方式。": "Newer web and desktop apps store model settings separately. Legacy model settings are shared; MCP is always written only to the selected profile.", "新配置": "New profile", "方案中的密钥加密保存;客户端原生配置可能要求明文。": "Profile keys are stored encrypted. Native client configuration may require plaintext.", "方案名称": "Profile name", "方案已保存,尚未应用到客户端": "Profile saved, not yet applied to the client", "无改动": "No changes", "无配置": "No profile", "无需认证": "No authentication", "旧版共享设置": "Legacy shared settings", "暂无预览": "No preview yet", "更多配置": "Additional settings", "最多选择 {n} 个模型": "Select up to {n} models", "最近检测:{time}": "Last checked: {time}", "有改动": "Changed", "未声明 / 保留": "Unspecified / keep", "未安装": "Not installed", "未找到客户端程序或配置文件": "No client program or configuration file found", "未接入本网关": "Not connected to this gateway", "未接管": "Not connected", "未检测到": "Not detected", "未检测到安装": "No installation detected", "未读取到可识别的客户端配置": "No recognized client configuration found", "未走网关": "Not via gateway", "本机": "This device", "本机服务": "Local service", "本机没有找到 {name}": "{name} was not found on this machine", "本机网关": "Local gateway", "本网关": "This gateway", "来自客户端文件,只读": "From the client config, read-only", "查看文件改动": "View file changes", "桌面版": "Desktop app", "模型 ID": "Model ID", "模型 ID 不能为空或重复": "Model IDs cannot be empty or duplicated", "模型 id": "Model id", "模型 {n}": "Model {n}", "模型展示名": "Model display name", "模型思考等级": "Model reasoning effort", "模型或客户端不支持所选思考等级": "The model or client does not support the selected reasoning level", "模型未声明思考档位,保留客户端默认,不显示猜测选项。": "The model does not declare reasoning levels. Client defaults are preserved; guessed options are not shown.", "模型目录响应无效": "Invalid model catalog response", "模型目录读取失败,可手动填写真实模型 ID。": "Failed to read the model catalog. You can enter the actual model ID manually.", "模型配置": "Model settings", "模型默认": "Model default", "正在检测客户端…": "Detecting clients…", "正在生成准确预览…": "Generating exact preview…", "正在生成预览…": "Generating preview…", "正在读取本机客户端…": "Reading local clients…", "正在读取网关模型并填入配置…": "Loading gateway models and filling the configuration…", "此处来自磁盘文件,不代表正在运行的旧会话已经重载。": "This is read from disk. It does not mean an existing session has reloaded the configuration.", "此配置未在客户端中使用,删除不会改变当前使用的配置。": "This configuration is not in use in the client. Deleting it will not change the current configuration.", "每个客户端可以有": "Each client can have", "每个模型独立保存能力;展开可调整,未声明的数据不会猜测填写。": "Capabilities are stored per model. Expand to adjust them; unspecified values are not guessed.", "没有匹配的客户端": "No matching clients", "没有可导入的新条目(可能还没配过,或已经在我的配置里)": "No new entries to import (not configured yet, or already in my profiles)", "没有新的条目可收(都已在我的配置里)": "No new entries to import (all are already in my profiles)", "没有新的配置可以导入": "No new configuration to import", "没有检测到可接管的客户端": "No manageable clients detected", "没有选中配置": "No configuration selected", "没有选中配置方案": "No configuration profile selected", "添加到客户端": "Add to client", "点击右上角「新增配置」,添加网关或其他服务": "Use Add configuration at the top right to add a gateway or another service", "点击模型展开详细配置;搜索只筛选显示,不会移除模型。": "Click a model to expand its settings. Search only filters the displayed list; it does not remove models.", "版本未识别": "Version not identified", "状态来自配置文件,已打开的会话可能需要重新加载": "Status comes from configuration files; existing sessions may need to reload", "环境变量名": "Environment variable name", "生成中…": "Generating…", "留空保留 / 未声明": "Blank: keep / unspecified", "留空保留已保存密钥": "Leave blank to keep the saved key", "留空的分档会以 Claude Code 内置模型名请求网关;网关没有同名模型时该档会失败,建议点「一键设置」。": "A blank tier makes Claude Code request the gateway with its built-in model name; that tier fails when the gateway has no model by that name. Use \"Fill all\" instead.", "留空表示不写入": "Leave blank to skip", "确认": "Confirm", "确认使用": "Confirm", "确认停用": "Confirm disable", "确认写入": "Confirm write", "确认写入后会同步修改客户端开关;取消不会生效。": "Confirming the write also updates the client entry's enabled state. Canceling leaves it unchanged.", "确认写入后更新客户端默认模型;取消不会生效。": "The client's default model is updated after you confirm the write. Canceling leaves it unchanged.", "确认写入客户端资源": "Confirm writing client resources", "确认删除": "Confirm deletion", "确认删除客户端资源": "Confirm deleting client resources", "确认后将切换到此配置,原配置会保留在列表中。": "Confirm to switch to this configuration. The previous configuration will remain in the list.", "确认后将更新 {name} 的配置文件,原配置会自动备份。": "Confirm to update the configuration files for {name}. The original files will be backed up automatically.", "确认后将此配置加入客户端,已有配置会保留。": "Confirm to add this configuration to the client. Existing configurations will be kept.", "确认应用": "Confirm application", "确认恢复": "Confirm restore", "确认接入": "Confirm connection", "移除模型会写入客户端配置;其它条目和未知字段保留,确认前可查看差异。": "Removing a model updates the client configuration. Other entries and unrecognized fields are preserved; review the changes before confirming.", "移除模型:{name}": "Remove model: {name}", "第一把启用的 Key": "First enabled key", "第三方中转": "Third-party relay", "编辑 MCP": "Edit MCP", "编辑 Skill": "Edit Skill", "编辑客户端配置": "Edit client configuration", "编辑配置": "Edit configuration", "编辑配置方案": "Edit configuration profile", "编辑:{name}": "Edit: {name}", "网关目录共 {n} 个": "{n} in the gateway catalog", "网页版": "Web app", "自定义路径": "Custom path", "行号由后端逐行比对给出": "Line numbers come from the backend line-by-line comparison", "装好后回到这一页点「重新检测」,它会出现在上面的列表里。": "Once installed, come back to this page and click \"Recheck\" — it will show up in the list above.", "视频输入": "Video input", "解除接入本网关": "Disconnect from this gateway", "认证方式": "Authentication method", "设为默认": "Set as default", "请先在「网关 Key」页创建并启用一把 Key": "Create and enable a key on the Gateway Key page first.", "请在 Zed 提供商设置中保存 API Key;本页不修改系统凭证存储。": "Save the API key in Zed's provider settings. This page does not modify the system credential store.", "请填写 API Key": "Enter an API key", "请填写方案名称": "Enter a profile name", "请填写有效的 http 或 https 地址": "Enter a valid HTTP or HTTPS URL", "请填写有效的环境变量名": "Enter a valid environment variable name", "请填写配置名称": "Enter a configuration name", "请至少添加一个模型": "Add at least one model", "请补全配置后使用": "Complete this configuration before using it", "请输入密钥": "Enter a key", "请选择": "Select an option", "请选择模型": "Select a model", "读取失败": "Read failed", "读取客户端配置失败:{reason}": "Failed to read the client config: {reason}", "走网关": "Via gateway", "路径属于网关所在机器,不是浏览器所在设备。只改变检测目标,不修改客户端文件。": "The path is on the gateway host, not the browser's device. Only the detection target changes; client files are not modified.", "输出上限": "Max output", "返回编辑": "Back to editing", "还原中…": "Restoring…", "还原失败:{reason}": "Restore failed: {reason}", "还没有配置": "No profiles yet", "还没有配置。点「新建配置」建一套指向本机网关的,再写入客户端。": "No profiles yet. Click \"New profile\" to create one pointing at the local gateway, then write it to the client.", "还没有预览。选一套配置后这里会显示写入客户端之后的样子。": "No preview yet. Pick a profile and this shows what the client config will look like after writing.", "这个客户端不从网关目录选模型,用右侧的「添加模型」逐个填写。": "This client does not select models from the gateway catalog; add them one by one on the right.", "这个客户端不支持所选协议": "This client does not support the selected protocol", "这个客户端不能接入本网关": "This client cannot connect to this gateway", "这个客户端会自己重读配置,写入后开新会话即生效。": "This client reloads its config on its own; open a new session after writing.", "这个客户端只在启动时读配置:写入后重开一个会话才生效。": "This client only reads its config at startup: reopen a session after writing.", "这个客户端的配置里没有读出地址(可能还没配过,或形状不认识)": "No address could be read from this client's config (it may not be configured yet, or the shape is unrecognized)", "这个客户端自己支持多套配置并存": "This client supports several profiles side by side", "这个客户端自己管理多套配置,可同时启用多条;切换只改 enabled 与默认项,不动它的模型清单。": "This client manages several profiles itself and can enable more than one; switching only changes the enabled and default flags, never its model list.", "这个客户端还没有 MCP": "This client has no MCP servers yet", "这个客户端还没有 Skill": "This client has no Skills yet", "这个客户端需要填写模型上下文窗口": "This client requires the model's context window", "这套配置是干什么用的(只显示在本页)": "What this profile is for (shown on this page only)", "这是待应用状态;保存不会立即改变客户端开关。": "This is the pending state. Saving does not immediately toggle the client entry.", "这里只调整此模型,不影响其它模型。": "Changes here affect only this model.", "这里只选择客户端实际支持的协议,不改变上游提供商协议。": "Only protocols actually supported by the client can be selected here. The upstream provider protocol is unchanged.", "连接方式": "Connection type", "连接配置": "Connection settings", "选一个客户端开始": "Pick a client to start", "选择 MCP": "Select MCP", "选择 Skill": "Select Skill", "选择模型": "Select models", "选择网关 Key": "Select a gateway key", "选择要接入的模型;确认前展示文件改动,写入前自动备份。": "Choose models to connect. File changes are shown before confirmation, and a backup is made before writing.", "选择配置目标": "Select configuration target", "通常以 /v1 结尾,不要附加具体请求路径。": "Usually ends with /v1. Do not append a specific request path.", "部分已选模型已不可用或所选 Key 无权使用,请移除或更换 Key。": "Some selected models are unavailable or not allowed by this key. Remove them or choose another key.", "配置": "Profile", "配置位置与说明": "Configuration location and details", "配置列表": "Configurations", "配置列表格式不匹配,请重启网关后刷新页面": "Configuration list format mismatch. Restart the gateway, then refresh this page.", "配置可读写": "Configuration readable and writable", "配置名称": "Configuration name", "配置差异": "Configuration diff", "配置已保存,可在列表中点击使用": "Configuration saved. Select it in the list to use it.", "配置已删除": "Configuration deleted", "配置已删除,客户端文件已同步更新": "Configuration deleted and client files updated", "配置已应用并读回校验;请重开客户端或会话": "Configuration applied and verified by reading it back. Restart the client or session.", "配置已恢复并校验": "Configuration restored and verified", "配置操作": "Configuration actions", "配置文件已写入并校验;尚未验证 DSH 是否加载,请在所选客户端新建会话确认。": "Configuration files were written and verified. DSH loading has not been verified; start a new session in the selected client to confirm.", "配置来源": "Profile source", "重新填入目录能力": "Refill from catalog", "重新检测": "Recheck", "重新生成预览": "Regenerate preview", "需要重新编辑:": "Needs editing again:", "需重开会话生效": "Restart the session to apply", "预览并保存": "Preview and save", "预览草稿改动": "Preview draft changes", "高": "High", "高级选项": "Advanced options", "默认模型": "Default model", "默认模型必须来自模型列表": "The default model must be in the model list", "默认模型思考等级": "Default model reasoning effort", "(本机网关 / 官方直连 / 第三方中转 / 本机服务),随时切换。单配置客户端切换 = 整段覆写并备份原文件;多配置客户端(如 ZCode)只改 enabled 与默认项,它自己的条目一律不动。": "(local gateway / official direct / third-party relay / local service) and switch between them at any time. For single-profile clients, switching rewrites the whole profile and backs up the original file; for multi-profile clients such as ZCode it only changes the enabled and default flags and never touches their own entries.", "API Key 无效或无权限": "The API Key is invalid or unauthorized", "API 接口文档": "API documentation", "DSH 使用 Agent 页当前选择的配置目标。写入后请在 DSH 中确认工具是否出现,必要时重启对应客户端。": "DSH uses the configuration target selected on the Agent page. After writing, check that the tools appear in DSH and restart the corresponding client if needed.", "Key 明文只会写入所选客户端的本机配置文件。": "The plaintext Key is only written into the local configuration files of the selected clients.", "MCP & Skills": "MCP & Skills", "MCP 接入信息": "MCP connection details", "Node.js 无需额外依赖,推荐使用;Python 需要本机有 python。": "Node.js needs no extra dependencies and is recommended; Python requires python on this machine.", "{name} 接入客户端": "Connect {name} to clients", "上游提供商": "Upstream provider", "上游提供商配置": "Upstream provider configuration", "上游提供商配置由各接入协议共享,改动后所有协议同时生效。": "Upstream provider settings are shared by all access protocols; changes take effect for all of them.", "上游没有返回结果": "The upstream returned no results", "上游请求超时": "The upstream request timed out", "下载图片 {index}": "Download image {index}", "不指定": "Not specified", "中文": "Chinese", "仅搜索": "Search only", "仅支持单选,默认为 Tavily。": "Single selection only; defaults to Tavily.", "仅显示已启用且至少有一个可用模型的提供商。": "Only providers that are enabled and have at least one available model are shown.", "仅显示该提供商下已启用的模型。": "Only enabled models under this provider are shown.", "任务编号或原提交编号,至少提供一项": "Provide a job ID or the original submission ID", "作为远程 MCP 服务,在支持 MCP 的客户端配置里填写地址即可接入。": "Exposed as a remote MCP service; add the URL to any MCP-capable client.", "使用已有账号生成或编辑图片,支持任务查询与本机文件保存。": "Generate or edit images with existing accounts, track jobs and save files locally.", "保存能力配置": "Save capability settings", "保留至 {time}": "Available until {time}", "共 {count} 项能力": "{count} capabilities", "内部请求本站网关时使用的网关 Key;额度、限流与请求日志记在该 Key 上。": "The gateway Key used for internal requests to this gateway; quota, rate limits and request logs are recorded on that Key.", "内部调用 API Key": "Internal API Key", "写入失败": "Write failed", "写入配置": "Write configuration", "单次图片上限": "Images per request", "卸载失败": "Uninstall failed", "参考图允许读取的目录": "Allowed reference directories", "参考图链接或已生成图片 ID;本地桥接还可传文件路径": "Reference URLs or generated image IDs; the local bridge also accepts file paths", "取消全选": "Deselect all", "只保存新文件,不覆盖已有不同内容。目录权限写入客户端配置,更新配置时需要重新确认。": "Only new files are saved; different existing content is never overwritten. Directory permissions are written to the client configuration and must be confirmed again when updating it.", "可选。留空时不传,由模型映射的「思考覆盖」决定。": "Optional. Leave empty to omit it and let the mapping's reasoning override decide.", "可选,每行一个已有绝对目录。输出目录默认允许读取;其他位置的文件不会读取或上传。": "Optional: one existing absolute directory per line. The output directory is readable by default; files elsewhere are not read or uploaded.", "启用 / 停用此服务": "Enable / disable this service", "图片分析": "Image analysis", "图片占用 {used} MiB,生成中预留 {reserved} MiB。": "Images use {used} MiB; active jobs reserve {reserved} MiB.", "图片生成配置": "Image generation settings", "图片生成配置已保存": "Image generation settings saved", "图片输出目录": "Image output directory", "在支持远程 MCP 的客户端中填写该地址,并使用网关 Key 作为 Bearer 令牌。": "Fill in this URL in any client that supports remote MCP, and use a gateway Key as the Bearer token.", "复制失败,请手动选择后复制": "Copy failed; select and copy manually", "复制文档": "Copy document", "复用「账号」页的登录态,不需要额外填写搜索密钥。账号停用或删除后不会自动换号。": "Uses an existing login from the Accounts page; no additional search API key is required. Disabled or deleted accounts are not replaced automatically.", "复用已有账号生图,不改变 Agent 的对话模型。实际调用遵守接入 Key 的模型和提供商权限。": "Generate images with existing accounts without changing the agent's chat model. Calls follow the connecting key's model and provider permissions.", "存储上限(MiB)": "Storage limit (MiB)", "安装目标": "Install targets", "完整的图片要求": "Complete image requirements", "客户端环境": "Client environment", "客户端调用超时设为 120 秒;后台生成超时由服务配置控制,未完成时通过任务编号查询。": "Client calls time out after 120 seconds. The service controls the generation deadline; query unfinished jobs by their ID.", "客户端配置示例": "Client configuration example", "密钥已清除": "Key cleared", "密钥或账号登录态无效": "The API key or account login is invalid", "密钥提示": "Key hint", "将按服务的工具执行超时({seconds} 秒)同步写入客户端配置。": "The service's tool execution timeout ({seconds}s) will be written into the client configuration.", "将搜索、视觉等能力通过 MCP 或 Skills 接入客户端。": "Connect clients to search, vision and other capabilities through MCP or Skills.", "尚未配置图片生成,请先选择可用的生图模型并保存。": "Image generation is not configured. Select an available image model and save.", "尚未配置视觉模型,配置前调用方会收到“未配置”错误。": "No vision model is configured yet; callers receive a \"not configured\" error until it is.", "工具执行超时": "Tool execution timeout", "工具执行超时已保存": "Tool execution timeout saved", "工具服务": "Tool services", "已写入 {count} 个客户端配置": "Wrote configuration for {count} clients", "已处理 {count} 个目标": "Processed {count} targets", "已复制": "Copied", "已失效": "Invalid", "已安装到 {count} 个客户端": "Installed to {count} clients", "已完成": "Completed", "已完成 {count} 个目标": "Completed {count} targets", "已接入 {count} 个目标": "Connected to {count} targets", "已有账号": "Existing account", "已有账号搜索只支持搜索,不支持网页抓取;请求会使用绑定账号的额度与出网设置。": "Account-based sources support search only, not page fetching. Requests use the bound account’s quota and outbound network settings.", "已检查保存的配置,未发起生图;账号实际额度与上游可用性以调用结果为准。": "Saved settings checked without generating an image. Actual account quota and upstream availability are determined when making a call.", "已绑定的搜索账号不存在,请重新选择": "The bound search account no longer exists; select another account", "已绑定的搜索账号已停用": "The bound search account is disabled", "已绑定账号不可用,请重新选择": "The bound account is unavailable; select another account", "已过期或清理": "Expired or cleared", "已选择 {count} / {total} 个": "Selected {count} / {total}", "已配置的 API Key 已失效(被删除或禁用),请重新选择并保存。": "The configured API Key is no longer valid (deleted or disabled); select a new one and save.", "当前提供商插件不支持账号搜索,请更新插件": "The current provider plugin does not support account-based search; update the plugin", "当前模型:{provider} / {model}": "Current model: {provider} / {model}", "当前没有可用的安装目标": "No install targets available", "当前没有已安装/已配置的目标": "Nothing is installed or configured yet", "当前网关 Key 无权使用所选账号搜索来源": "This gateway Key is not allowed to use the selected account-based search sources", "打包为 Agent Skill,由 Agent2API 面板安装到本机客户端目录。": "Packaged as an Agent Skill and installed into local client directories from the Agent2API panel.", "批量抓取 1~10 个 URL,使用后台选中的单个抓取提供商。": "Fetch 1-10 URLs using the single fetch provider selected on the server.", "批量搜索 1~10 条查询,并发调用后台选中的提供商后合并重复来源。": "Search 1-10 queries in parallel with the providers selected on the server, then merge duplicate sources.", "批量网页抓取": "Batch page fetching", "批量网页抓取提供商": "Batch page fetch provider", "批量网页搜索": "Batch web search", "批量网页搜索不可用:所选提供商均未启用或未配置密钥。": "Batch web search unavailable: none of the selected providers is enabled and configured.", "批量网页搜索不可用:请启用来源并配置密钥或绑定可用账号。": "Batch web search is unavailable: enable a source and configure its API key or bind an available account.", "批量网页搜索可用:将使用 {ready},未配置的 {missing} 会自动跳过。": "Batch web search available: using {ready}; unconfigured {missing} will be skipped automatically.", "批量网页搜索可用:所选提供商均已启用并配置密钥。": "Batch web search available: all selected providers are enabled and configured.", "批量网页搜索可用:所选来源均已启用并配置完成。": "Batch web search is available: all selected sources are enabled and configured.", "批量网页搜索提供商": "Batch web search providers", "批量网页搜索至少选择一个提供商": "Select at least one provider for batch web search", "把 1~10 张图片与提示词交给后台配置的视觉模型,返回模型回复文本。": "Send 1-10 images and a prompt to the vision model configured on the server and return the model reply text.", "把下面这段合并到客户端配置的 mcpServers 里,并把 Key 换成你自己的。": "Merge the snippet below into the client's mcpServers and replace the Key with your own.", "把图片与提示词交给后台配置的视觉模型分析,并把模型回复返回给调用方的大模型。": "Sends images and a prompt to the vision model configured on the server and returns the model reply to the calling model.", "抓取:{name}": "Fetch: {name}", "按参考图修改,仅在配置了可用编辑模型时提供。": "Edit reference images; available only when a supported editing model is configured.", "按描述使用已配置的模型生图,默认一张,会消耗账号额度。": "Generate images from a description using the configured model. Defaults to one image and consumes account credits.", "接入协议": "Access protocol", "接入方式": "Connection mode", "提供 REST API,任何能发 HTTP 请求的程序都可以携带网关 Key 直接调用。": "Provides a REST API; any program that can send HTTP requests can call it with a gateway Key.", "提供商尚未配置密钥": "The provider has no API key configured", "提供商尚未配置有效密钥": "The provider has no valid API key configured", "提供商插件暂不可用": "The provider plugin is temporarily unavailable", "提供商插件未安装或未启用": "The provider plugin is not installed or enabled", "提供商暂不可用或配置有误": "The provider is temporarily unavailable or misconfigured", "提供商选择": "Provider selection", "提示词,描述要让模型在图片中查看的内容": "Prompt describing what the model should look for in the images", "插件搜索能力声明不完整,请更新插件": "The plugin’s search capability information is incomplete; update the plugin", "插件返回的搜索来源格式不正确": "The plugin returned search sources in an invalid format", "搜索、视觉与生图共用网关配置。本机客户端的 MCP 安装在桌面端完成。": "Search, vision and image generation use gateway settings. Install MCP into local clients from the desktop app.", "搜索参数不符合该来源的要求": "The search parameters do not meet this source’s requirements", "搜索提供商没有返回来源": "The search provider returned no sources", "搜索服务拒绝了该账号,请检查账号权限": "The search service rejected this account; check its permissions", "搜索来源配置不完整": "The search source configuration is incomplete", "搜索请求超时": "The search request timed out", "搜索账号不属于该提供商,请重新选择": "The search account belongs to a different provider; select another account", "搜索账号登录态已失效,请重新登录": "The search account login has expired; sign in again", "搜索额度已用完或触发限流": "The search quota is exhausted or the rate limit was reached", "支持多选。每次搜索会并发调用所选提供商并合并重复来源。": "Multiple selection. Each search calls the selected providers in parallel and merges duplicate sources.", "无法确认插件搜索能力,请更新或重启提供商插件": "Unable to confirm search support; update or restart the provider plugin", "暂无生图记录,连接 MCP 后即可让 Agent 生成图片。": "No image jobs yet. Connect MCP to let your agent generate images.", "暴露的工具": "Exposed tools", "更新时间": "Updated", "最大生成并发": "Concurrent generation limit", "最近生成记录": "Recent image jobs", "服务与协议": "Services and protocols", "服务入口": "Service endpoint", "服务名称": "Service", "服务地址": "Service URL", "服务状态已更新": "Service status updated", "服务端强制单次工具执行的超时上限(同一服务的 Skill / MCP / API 共用)。安装 MCP 时会按此值写入客户端配置;修改后需在客户端重新「更新」配置并重进会话才会生效。": "Server-enforced timeout for a single tool execution (shared by the Skill / MCP / API protocols of the same service). Installing MCP writes this value into the client configuration; after changing it, re-run \"Update\" in the client and reopen the session.", "服务端强制单次工具执行的超时上限(同一服务的 Skill / MCP 共用)。安装 MCP 时会按此值写入客户端配置;修改后需在客户端重新「更新」配置并重进会话才会生效。": "Server-enforced timeout for a single tool execution (shared by the Skill / MCP protocols of the same service). Installing MCP writes this value into the client configuration; after changing it, re-run \"Update\" in the client and reopen the session.", "服务能力": "Capabilities", "服务配置": "Service configuration", "未选择账号": "No account selected", "本地桥接": "Local bridge", "本地桥接会在本机运行一个 node 脚本,支持直接传本地图片路径,推荐在桌面端使用。": "The local bridge runs a Node script on this machine and supports local image paths; recommended on desktop.", "本地桥接需要 Node.js 18 或更新版本,自动读取授权目录的参考图并保存生成结果;HTTP 接入只返回下载地址。": "The local bridge requires Node.js 18 or newer. It reads references from authorized directories and saves generated images. HTTP mode only returns download URLs.", "本机接入": "Local install", "本次提交的唯一编号,断线重试使用原编号": "Unique submission ID; reuse it when retrying after a disconnect", "查询原任务并取回图片,不再次生图或扣费。": "Query the original job and retrieve its images without generating or charging again.", "查询生成结果": "Get generation result", "检查配置": "Check configuration", "正在加载安装目标…": "Loading install targets…", "正在加载工具服务…": "Loading tool services…", "正在加载工具服务配置…": "Loading tool service configuration…", "每条搜索词最多 {count} 字": "Up to {count} characters per query", "没有匹配的工具服务": "No matching tool services", "没有可用的工具服务": "No tool services available", "没有可用的生图模型,请先添加账号、启用对应插件并更新模型目录。": "No image model is available. Add an account, enable its plugin and refresh the model catalog.", "没有可用的网关 Key": "No available gateway Key", "没有可绑定的启用账号,请先到「账号」页添加或启用。": "No enabled account is available to bind. Add or enable one on the Accounts page first.", "没有可配置的提供商": "No providers to configure", "清理这次生成的临时图片?已保存到本机的文件不会被删除,原提交编号也不会重新生图。": "Clear the temporary images for this job? Files saved locally will remain, and the original submission ID will not generate again.", "清除密钥": "Clear key", "清除配置": "Clear configuration", "点击「复制文档」可复制整份 Markdown 文档,直接发给对接方即可。": "Click \"Copy document\" to copy the whole Markdown document and send it to integrators.", "生图模型": "Image generation model", "生图账号": "Image generation account", "生成中": "Generating", "生成较慢时先返回任务编号。断线后查询原任务,不自动重画;超时不代表没有扣费。": "Slow generations return a job ID first. Query the original job after reconnecting; no automatic regeneration. A timeout does not mean no credits were charged.", "确定清除提供商 {name} 的 API Key?清除后该提供商将不可用,直到重新保存新密钥。": "Clear the API Key of {name}? The provider will be unavailable until a new key is saved.", "移除 {name} 配置": "Remove {name} configuration", "空白的 API Key 不会覆盖已保存的密钥。": "An empty API Key will not overwrite the saved key.", "管理可供客户端安装和运行的工具服务,并配置上游提供商与能力。": "Manage tool services that clients can install and run, and configure their upstream providers and capabilities.", "结果不确定": "Result uncertain", "结果保留(小时)": "Retention (hours)", "编辑 {name}": "Edit {name}", "编辑可使用不同模型;未配置可用编辑模型时,不向 Agent 提供编辑工具。": "Editing can use a different model. The editing tool is not exposed without an available editing model.", "编辑提供商 {name}": "Edit provider {name}", "编辑模型": "Editing model", "网络搜索": "Web Search", "网络搜索与视觉分析:网关侧配置,改完立即生效。本机客户端的安装在桌面端完成。": "Web search and vision analysis are gateway-side settings that take effect immediately. Installing into local clients is done on desktop.", "聚合 Tavily、Querit、Firecrawl、Ollama Web Search,提供批量网页搜索与网页抓取能力。": "Aggregates Tavily, Querit, Firecrawl and Ollama Web Search for batch web search and page fetching.", "聚合标准搜索服务及已有 WorkBuddy、Kiro 账号的搜索能力;网页抓取仍使用标准服务。": "Combines standard search services with search from existing WorkBuddy and Kiro accounts. Page fetching still uses standard services.", "能力提供商配置已保存": "Capability provider settings saved", "能力数量": "Capabilities", "自动选择仅在所选提供商内遵守现有路由;固定账号仍受停用、冷却与额度限制,不会自动换号。": "Automatic selection follows existing routing within the selected provider. Fixed accounts still obey disabled status, cooldowns and quota limits; they are never replaced automatically.", "自动选择账号": "Select account automatically", "至少选择一个搜索提供商": "Select at least one search provider", "获取 API Key": "Get API Key", "要分析的图片(1~10 张),每张为 http(s) URL 或图片 data URI": "Images to analyze (1-10), each an http(s) URL or an image data URI", "要抓取并提取正文的网页 URL(1~10 个)": "Page URLs to fetch and extract (1-10)", "要搜索的查询,每条并发执行(1~10 条)": "Queries to search, each executed in parallel (1-10)", "视觉分析": "Vision Analysis", "视觉服务配置已保存": "Vision service configuration saved", "视觉服务配置已清除": "Vision service configuration cleared", "视觉模型配置": "Vision model configuration", "视觉链路测试失败": "Vision pipeline test failed", "视觉链路连通:耗时 {duration}ms": "Vision pipeline connected in {duration}ms", "触发上游限流": "The upstream rate limit was hit", "该协议已停用,已接入的客户端会收到服务停用错误。": "This protocol is disabled; connected clients will receive a service-disabled error.", "该协议通过 Agent2API 面板安装到本机客户端目录。": "This protocol is installed into local client directories from the Agent2API panel.", "该提供商不支持网页抓取": "This provider does not support page fetching", "该搜索来源使用 API Key,不接受账号绑定": "This search source uses an API Key and does not accept account bindings", "该搜索来源使用已有账号,不接受 API Key": "This search source uses an existing account and does not accept an API Key", "请先选择 API Key": "Select an API Key first", "请先选择提供商": "Select a provider first", "请先选择搜索使用的账号": "Select an account to use for search first", "请求参数无效": "Invalid request parameters", "请至少选择一个目标": "Select at least one target", "请选择 API Key": "Select an API Key", "请选择内部调用 API Key": "Select the internal API Key", "请选择图片输出目录": "Select an image output directory", "请选择提供商与上游模型": "Select a provider and an upstream model", "调用用的 API Key": "API Key for invocation", "账号搜索暂不可用,请检查账号及插件状态": "Account-based search is temporarily unavailable; check the account and plugin status", "账号搜索配置不完整,请重新选择账号或更新插件": "Account-based search is not fully configured; select an account again or update the plugin", "超时 {seconds}s": "Timeout {seconds}s", "输入新密钥;留空保持不变": "Enter a new key; leave empty to keep the current one", "运行时": "Runtime", "还没有可用的提供商,请先在「账号」页添加账号并在「模型管理」页确认有已启用的模型。": "No providers available yet. Add accounts on the Accounts page and make sure there are enabled models on the Models page.", "还没有可用的提供商,请先在桌面端添加账号并确认有已启用的模型。": "No providers available yet. Add accounts on desktop and make sure there are enabled models.", "这是后台生成任务的时间上限。单次 MCP 调用最多等待 20 秒,未完成时返回任务编号;查询不会重新生图。": "This limits the background generation task. Each MCP call waits up to 20 seconds, then returns a job ID if unfinished. Queries never generate again.", "这里管理的是「客户端能用什么」:服务是否对外提供、上游提供商与密钥、视觉分析用哪个模型。": "This page manages what clients can use: whether services are exposed, their upstream providers and keys, and which model vision analysis uses.", "远程 HTTP": "Remote HTTP", "远程 HTTP 只接受图片 URL 或 data URI,不需要本机安装 node。": "Remote HTTP only accepts image URLs or data URIs; no local Node.js is required.", "连接成功:{count} 条结果,耗时 {duration}ms": "Connected: {count} results in {duration}ms", "连接测试失败": "Connection test failed", "选择处理图片的上游提供商与模型。调用时会用内部 Key 经本站网关请求该模型,协议转换、重试与故障转移全部复用网关。": "Select the upstream provider and model for images. Calls go through this gateway with the internal Key, reusing protocol translation, retries and failover.", "选择安装目标、运行时与调用用的 API Key。Skill 包与密钥只写入所选客户端的本机目录。": "Select install targets, runtime and the API Key for invocation. The Skill package and key are written only into the selected clients' local directories.", "选择已有目录,图片只会写入此目录及其子目录": "Select an existing directory; images are saved only there or in its subdirectories", "选择目录": "Choose directory", "选择要从中移除的客户端,未勾选的客户端保持不变。": "Select the clients to remove it from; unselected clients are left unchanged.", "选择要写入 MCP 配置的客户端。配置只动本服务那一项,客户端原有的其它 MCP 服务保持不变。": "Select the clients to write the MCP configuration into. Only this service's entry is changed; other MCP servers stay untouched.", "配置搜索与抓取所使用的上游提供商。调用方不再传递 provider,运行时始终使用这里保存的设置。": "Configure the upstream providers used for search and fetching. Callers no longer pass a provider; the saved settings are always used at runtime.", "默认只生成一张。空间不足时先拒绝请求,不消耗生图额度;只清理过期结果,已保存到本机目录的文件不受影响。": "One image is generated by default. Insufficient storage rejects the request before credits are spent. Only expired results are cleaned up; locally saved files are unaffected.", " 到 {file}": " to {file}", " 正文已改:{edited}(其余段用官方原文)。": " Text edited: {edited} (the remaining blocks use the official text).", "(无 id)": "(no id)", "/v1 拒绝无 Key 请求": "/v1 rejects keyless requests", "0 B": "0 B", "100%(默认)": "100% (default)", "<本机IP>": "", "ALTCHA(本地验证)": "ALTCHA (local verification)", "Access Key ID": "Access Key ID", "Agent2API 手机端": "Agent2API Mobile", "Android 应用(APK)": "Android app (APK)", "Cline 上游按请求头判定「调用方是不是 Cline 自家产品」:X-CLIENT-TYPE: cline-sdk 是硬门槛(缺了它免费池模型一律 403),版本号与平台标识让请求更贴近官方客户端的形态。这里列出的是网关默认会发的头:改某一行的值 = 覆盖默认值(也可以新增默认清单之外的自定义头);把值清空保存 = 这个头不发送;在界面删掉被改过的行 = 回落默认值。改完点「保存」,下一个 Cline 请求立即生效。不懂某一行的含义就不要动它 —— 伪装头的价值在「与官方客户端逐字一致」。": "The Cline upstream decides from the request headers whether the caller is one of Cline's own products: X-CLIENT-TYPE: cline-sdk is a hard requirement (without it, free-pool models always return 403), and the version number and platform identifier make the request look closer to the official client. Listed here are the headers the gateway sends by default: editing a row's value overrides the default (you can also add custom headers beyond the default list); saving an empty value means this header is not sent; deleting an edited row in the UI reverts it to the default. Click \"Save\" when done and the next Cline request picks it up immediately. Do not touch a row you do not understand — the value of spoofed headers lies in being word-for-word identical to the official client.", "Cline 伪装头": "Cline Spoofed Headers", "Cline 伪装头已刷新": "Cline spoofed headers refreshed", "Docker 容器": "Docker container", "Endpoint": "Endpoint", "Endpoint 填 https://<账户ID>.r2.cloudflarestorage.com,Region 固定填 auto。": "Set Endpoint to https://.r2.cloudflarestorage.com and Region to auto.", "Endpoint 填 https://cos.ap-guangzhou.myqcloud.com,Region 填 ap-guangzhou(按实际地域改)。": "Set Endpoint to https://cos.ap-guangzhou.myqcloud.com and Region to ap-guangzhou (change to your actual region).", "Endpoint 填 https://obs.cn-north-4.myhuaweicloud.com,Region 填 cn-north-4(按实际地域改)。": "Set Endpoint to https://obs.cn-north-4.myhuaweicloud.com and Region to cn-north-4 (change to your actual region).", "Endpoint 填 https://oss-cn-hangzhou.aliyuncs.com,Region 填 cn-hangzhou(按实际地域改)。": "Set Endpoint to https://oss-cn-hangzhou.aliyuncs.com and Region to cn-hangzhou (change to your actual region).", "Endpoint 形如 http://192.168.1.10:9000(自建通常用 http);Region 一般填 us-east-1。": "Endpoint looks like http://192.168.1.10:9000 (self-hosted usually uses http); Region is typically us-east-1.", "Endpoint 留空即走 AWS 官方地址;Region 必须与桶所在区域一致。": "Leave Endpoint empty to use the official AWS address; Region must match the bucket's region.", "KB": "KB", "Linux 安装包(deb)": "Linux package (deb)", "Logo 不能超过 2 MiB": "The logo must not exceed 2 MiB", "Logo 仅支持 PNG、JPG、WebP 图片": "Only PNG, JPG and WebP images are supported for logos", "Nextcloud": "Nextcloud", "OpenAI 新版 API 用 developer 角色取代 system 承载指令,新版 OpenAI SDK 与部分客户端发的对话里会出现 role 为 developer 的消息;不少 OpenAI 兼容上游(尤其是自定义提供商的透传路径)不认识这个角色,收到就报 400。开启本项后,网关在每次转发前把 developer 角色的消息改写为 system —— 两类角色在 OpenAI 语义上等价(OpenAI 自己的迁移指南也是这么映射的),改写不影响对话内容与语义;对本来就只认 system 的各家内置上游同样无害。默认开启;关掉后 developer 消息会原样发往上游,不认识它的上游会报「角色不存在」一类的错误。": "The newer OpenAI API carries instructions in a developer role instead of system, so conversations sent by current OpenAI SDKs and some clients contain messages with role \"developer\". Many OpenAI-compatible upstreams (especially the passthrough path of custom providers) do not recognize that role and reject the whole request with 400. When enabled, the gateway rewrites developer-role messages to system before every forward — the two roles are equivalent in OpenAI semantics (OpenAI's own migration guide maps them the same way), so the rewrite changes neither content nor meaning, and it is harmless to the built-in upstreams that only accept system anyway. Enabled by default; when off, developer messages go upstream as-is and upstreams that do not know the role return \"unknown role\"-style errors.", "QQ 群 · Telegram": "QQ groups · Telegram", "S3 兼容存储": "S3-compatible storage", "Safari 没有安装按钮:点底部的「分享」,选「添加到主屏幕」,再点「添加」。": "Safari has no install button: tap Share at the bottom, choose \"Add to Home Screen\", then tap \"Add\".", "Secret Access Key": "Secret Access Key", "Token 读数量级": "Token Readout Scale", "UTF-8 文本文件路径,留空用内置默认提示词(通用编码助手提示词,不含任何会被上游拦截的模板句)。只在「替换 / 追加」模式下生效,透传模式不读它。": "Path to a UTF-8 text file. Leave empty to use the built-in default prompt (a general coding-assistant prompt with no template sentences the upstream would block). Only applies in Replace / Append mode; passthrough mode does not read it.", "WebView / 浏览器内核": "WebView / browser engine", "Windows 安装包(NSIS)": "Windows installer (NSIS)", "Windows 服务": "Windows service", "ZCode 套餐池(Start Plan)通道每条请求都要消耗一个当次铸造的人机验证令牌(一次性,2 分钟过期),库存低于该值时界面自动补铸到它。默认 3 个。调大能吸收突发并发,但用不掉的令牌 2 分钟就过期作废,烧的是上游风控配额。可填 1–10。": "Every request on the ZCode plan-pool (Start Plan) channel consumes a freshly minted CAPTCHA token (one-shot, expires in 2 minutes); when stock falls below this value the UI mints more up to it. Default 3. A larger value absorbs bursts, but unused tokens expire after 2 minutes and burn the upstream risk-control quota. Allowed 1-10.", "ZCode「套餐池(Start Plan)」通道的每条推理请求都要附一个当次铸造的阿里云无痕验证令牌(一次性、约 2 分钟过期):令牌由界面里的铸造守卫静默铸好、推给网关入池,转发时逐条取用。这里的三个值管的是补货节奏:①「库存目标」= 库存低于它守卫才补铸、补到它为止,默认 3 个;②「轮询间隔」= 守卫多久看一次库存,默认 2500 毫秒,只影响反应速度(库存够用时不会多铸);③「单轮铸造上限」= 发现缺货时一轮最多铸几个,默认 1 个(连铸之间固定隔 500 毫秒)。请求密集、请求日志里连续出现「需要人机验证令牌」的 503 时,把目标与单轮上限适当调大、轮询调快,能让池子跟得上消耗 —— 代价是上游(阿里云)对铸造频率有风控,铸得越多越快越容易触发限流,且用不掉的令牌 2 分钟即过期作废、等于白烧配额,所以建议小步调。保存后对下一轮补货立即生效,不用重启。": "Every inference request on the ZCode \"Plan pool (Start Plan)\" channel must carry a freshly minted Aliyun invisible-CAPTCHA token (one-shot, expires in about 2 minutes): tokens are minted silently by the mint guard in the UI and pushed into the gateway pool, from which forwarding takes one per request. The three values here govern the restocking rhythm: ① \"Stock target\" = the guard mints more only when stock falls below it, up to it (default 3); ② \"Polling interval\" = how often the guard checks stock, default 2500 ms (only affects reaction speed — no extra minting while stock is sufficient); ③ \"Per-round mint cap\" = the most tokens minted in one round upon a shortage, default 1 (consecutive mints are fixed 500 ms apart). When requests are dense and the request log keeps showing 503 \"needs a CAPTCHA token\", raise the target and per-round cap and poll faster so the pool keeps up — the trade-off is that the upstream (Aliyun) rate-limits minting: the more and faster you mint, the likelier you trip the limit, and unused tokens expire within 2 minutes anyway, effectively burning quota — so adjust in small steps. Saving takes effect on the next restock round, no restart needed.", "beta 版": "Beta release", "iOS 应用": "iOS app", "models.dev 元数据": "models.dev metadata", "models.dev 元数据已更新({count} 条)": "models.dev metadata updated ({count} entries)", "models.dev 是一个开源的模型资料库(社区维护),这里用它补齐「上游没告诉我们」的模型能力:上下文窗口、最大输出、工具调用、图片、视频、是否支持思考,以及这个模型认识哪些思考档位。优先级是:你在「模型能力」里手工改的值 > 上游清单自己声明的值 > models.dev 的值 —— 它只填上游没声明的空位,从不推翻上游已声明的。网关随包内嵌了一份快照,所以离线、首次启动、访问不通时也有数据;开启时会按「模型目录刷新」任务的间隔联网更新(同一轮里一并刷新,也可在这里立即刷新)。关闭只停联网刷新,已经拿到的数据继续用。": "models.dev is an open-source, community-maintained model database. It fills in what the upstream never told us: context window, max output, tool calling, images, video, reasoning support, and which reasoning levels the model actually accepts. Priority: values you edited by hand under \"Model capabilities\" > what the upstream catalog declares > models.dev — it only fills gaps the upstream left, and never overrides a declared value. A snapshot ships inside the app, so offline, first-run and blocked-network cases still have data; while enabled it refreshes online on the \"Model catalog refresh\" schedule (in the same round, or on demand here). Turning it off only stops the online refresh; existing data stays in use.", "models.dev 模型元数据": "models.dev model metadata", "systemd 服务": "systemd service", "{count} 条": "{count} entries", "{count} 条 · 来自{origin}{at} · {mode}": "{count} entries · from {origin}{at} · {mode}", "{count} 条规则,按列表顺序执行": "{count} rules, executed in list order", "{d} 天 {h} 小时": "{d}d {h}h", "{h} 小时 {m} 分钟": "{h}h {m}m", "{label} 提示词文件": "{label} prompt file", "{label} 的提示词模式": "{label} prompt mode", "{label}({message})": "{label} ({message})", "{lines} 行、{chars} 字符(按当前草稿计)": "{lines} lines, {chars} characters (based on the current draft)", "{minutes} 分钟": "{minutes} minutes", "{models} 同时出现在两块设置里,会按「辅助识图」处理。想改的话,把其中一个从这边的模型名单里去掉。": "{models} appears in both blocks and will be handled by assisted image reading. To change that, remove it from one of the model lists.", "{mode}生效:上游收到的 system 来自{source}{lines}。": "{mode} in effect: the system prompt sent upstream comes from {source}{lines}.", "{m} 分钟": "{m}m", "{noun}不能为空(可填 {min}–{max})": "{noun} cannot be empty (allowed range: {min}–{max})", "{noun}必须在 {min}–{max} 之间(当前填的是 {text})": "{noun} must be between {min} and {max} (currently entered: {text})", "{noun}必须是整数": "{noun} must be an integer", "{n} B": "{n} B", "{n} GB": "{n} GB", "{n} KB": "{n} KB", "{n} MB": "{n} MB", "{n} 个头将随每个 Cline 请求发送": "{n} headers will be sent with every Cline request", "{n} 台可选 · 点此切换": "{n} servers · tap to switch", "{n} 项 · {shown} 显示": "{n} items · {shown} shown", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "{total} menus · {shown} shown · {hidden} hidden · {groups} groups", "{way}的适用模型": "Models for {way}", "⚠️ 密钥警告": "⚠️ Key warning", "⚠️ 已关闭「{label}」的机器人校验": "⚠️ Bot check disabled for \"{label}\"", "⚠️ 机器人校验已关闭": "⚠️ Captcha disabled", "✅ Cline 伪装头已保存": "✅ Cline spoofed headers saved", "✅ models.dev 模型元数据已开启": "✅ models.dev model metadata enabled", "✅ 云同步设置已保存": "✅ Cloud sync settings saved", "✅ 会话图片压缩已开启": "✅ Image compression is on", "✅ 出站指纹脱敏已开启": "✅ Fingerprint masking enabled", "✅ 密码已修改,其他设备的登录已失效": "✅ Password changed. Sign-ins on other devices have been revoked", "✅ 导入完成:{summary}": "✅ Import complete: {summary}", "✅ 已上传到云端({size})": "✅ Uploaded to the cloud ({size})", "✅ 已为「{label}」装上网关自带提示词": "✅ Gateway-provided prompt installed for \"{label}\"", "✅ 已从云端恢复{note}": "✅ Restored from the cloud{note}", "✅ 已保存:{label}": "✅ Saved: {label}", "✅ 已保存:{label} {value}": "✅ Saved: {label} {value}", "✅ 已保存:指定错误码直接换号": "✅ Saved: Switch Accounts on Specified Error Codes", "✅ 已保留 {days} 天": "✅ Kept for {days} days", "✅ 已保留 {days} 天,超出部分已清理": "✅ Kept for {days} days; older data cleared", "✅ 已加密备份 {n} 张表({size}),包含恢复密钥:{file}": "✅ Encrypted backup of {n} tables ({size}), including recovery keys: {file}", "✅ 已备份 {n} 张表({size})到 {file}": "✅ Backed up {n} tables ({size}) to {file}", "✅ 已导入账号密钥,请继续下载": "✅ Account key imported; continue with the download", "✅ 已导出 {count} 个账号{note}{file}": "✅ Exported {count} accounts{note}{file}", "✅ 已开启「{label}」的机器人校验": "✅ Bot check enabled for \"{label}\"", "✅ 已恢复 {n} 张表{note}": "✅ Restored {n} tables{note}", "✅ 已改用 k / M / B 缩写": "✅ Now using k / M / B abbreviations", "✅ 已改用本地量级词(万 / 亿式)": "✅ Now using local magnitude words (万 / 亿-style)", "✅ 已自动创建网关 Key「默认」(可在「网关 Key」页查看)": "✅ Automatically created the gateway key \"Default\" (view it on the \"Gateway Key\" page)", "✅ 已解除内容拦截降级": "✅ Content-block fallback cleared", "✅ 开发者角色兼容已开启": "✅ Developer role compatibility enabled", "✅ 指纹脱敏设置已保存": "✅ Fingerprint masking settings saved", "✅ 数量上限已设为 {count} 条": "✅ Record limit set to {count}", "✅ 数量上限已设为 {count} 条,超出部分已清理": "✅ Record limit set to {count}; excess records removed", "✅ 机器人校验已开启": "✅ Captcha enabled", "✅ 第三方模型回答完自动折叠过程已开启": "✅ Collapse third-party model work after the answer enabled", "✅ 设置已保存,应用正在重启…": "✅ Settings saved, the app is restarting…", "✅ 调试模式已关闭": "✅ Debug mode disabled", "✅ 调试模式已开启": "✅ Debug mode enabled", "✅ 路由设置已保存": "✅ Routing settings saved", "✅ 连接成功:{path}": "✅ Connected: {path}", "、{n} 个自定义提供商": ", {n} custom providers", "。事件日志、请求明细、调试报文与面板登录态保持不变。替换前会自动把当前业务数据备份到配置目录的 backups/ 下。": ". Event logs, request details, debug payloads and panel login state stay untouched. The current business data is backed up to backups/ under the config directory before replacing.", "「{label}」将从 {previous} 天改为 {days} 天。": "\"{label}\" will change from {previous} days to {days} days.", "「{label}」将从 {previous} 条改为 {count} 条。": "\"{label}\" will change from {previous} to {count} records.", "「{label}」改用内置默认提示词": "\"{label}\" now uses the built-in default prompt", "「{label}」的提示词文件已更新": "\"{label}\" prompt file updated", "「{label}」的提示词正文已更新": "\"{label}\" prompt text updated", "「{label}」的模式改为「{mode}」": "\"{label}\" mode changed to \"{mode}\"", "「{label}」的网关自带提示词已改回官方原文": "\"{label}\" gateway-provided prompt restored to the official text", "「{label}」的网关自带提示词正文已更新": "\"{label}\" gateway-provided prompt text updated", "「模型管理」里每个能力的来源标记(上游 / models.dev / 已覆盖)读的就是这份数据;映射弹窗的思考档位下拉也按这里的数据只列该模型真实认识的档位。": "The per-capability source marks in \"Model management\" (upstream / models.dev / overridden) come from this data, and the reasoning-level dropdown in the mapping dialog lists only the levels the model actually accepts, based on it.", "「用哪份提示词」本来是按上游分别决定的事,所以每家可以有自己的模式、提示词文件与正文:不在这里列出的提供商一律沿用上面那份默认设置,「跟随默认」把这一家取消、回到默认。带「网关自带」那一行的家(目前是 ZCode 两家)默认就列在这里 —— 那一段是网关自己装上去的文本,不来自客户端也不来自提示词文件,默认开启、可以关掉,也可以改它的正文(改过的那一段以你的文本为准);关掉后还能不能通过上游校验,取决于上游当下的口径,行内说明了实测依据。「模式 / 提示词文件 / 正文」管的是客户端自己的 system 怎么处理,与那个开关是两件事。": "Which prompt to use is decided per upstream, so each provider can have its own mode, prompt file, and text: providers not listed here all use the default settings above, and \"Follow Default\" removes a provider's override and returns it to the default. Providers with a \"Gateway-Provided Prompt\" row (currently the two ZCode providers) are listed here by default — that text is installed by the gateway itself, comes from neither the client nor a prompt file, is on by default, can be turned off, and its text can be edited (edited blocks use your text); whether it still passes upstream validation after being turned off depends on the upstream's current criteria, and the row's hint documents what was measured. \"Mode / Prompt File / Prompt Text\" controls how the client's own system prompt is handled — a separate matter from that switch.", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "\"Settings\" is pinned, so its group cannot be hidden as a whole; you can still hide its other menus individually", "「请求日志」页的逐条请求记录,默认 99999 天(近似全量保留),可填 1–99999 天。": "Per-request records on the \"Request Logs\" page. Defaults to 99999 days (about 274 years — kept in full for practical purposes); range 1–99999 days.", "「请求日志」页的逐条请求记录,默认 99999 天,可填 1–99999 天;同时受数量上限限制。": "Per-request records on the Request Logs page. Defaults to 99999 days; accepts 1–99999 days. The record limit also applies.", "一个 .a2ab 文件即可跨机器恢复,账号、网关 Key、GitHub 令牌与云同步凭据无需另行复制密钥。插件程序与库外文件不在整库备份范围。": "One .a2ab file restores data on another machine without separately copying keys for accounts, gateway keys, GitHub tokens, or cloud sync credentials. Plugin programs and files outside the database are not included.", "一段内置装配": "a built-in assembly", "三档数据各自独立计时,超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件;请求日志是网关每次转发到上游的逐条记录;按天聚合供报表页的热力图与按天趋势使用。请求日志与按天聚合默认 99999 天(约 274 年,效果上等于全量保留),事件日志默认 30 天。把某一档改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。三档的可填范围均为 1–99999 天。": "The three data types are timed independently; anything beyond its retention period is deleted: event logs are system events such as sign-ins, account switches, and 429 switches; request logs are the per-request records of everything the gateway forwards upstream; the daily aggregates feed the heatmap and daily trends on the Reports page. Request logs and daily aggregates default to 99999 days (about 274 years — kept in full for practical purposes), and event logs default to 30 days. Lowering a value (for example, 30 days to 7 days) and saving deletes the excess historical data immediately, and this cannot be undone; raising it or leaving it unchanged deletes nothing. All three accept 1–99999 days.", "三段各自成块,所以分开编辑": "Three separate blocks, edited separately", "上传": "Upload", "上传 Logo": "Upload logo", "上传中…": "Uploading…", "上传内容含加密后的账号凭证与网关配置": "The upload contains encrypted account credentials and gateway configuration", "上传到云端": "Upload to cloud", "上传失败:{message}": "Upload failed: {message}", "上次同步:{time}({action})": "Last sync: {time} ({action})", "上次成功刷新的结果(存在本机数据库里)": "Result of the last successful refresh (stored in the local database)", "上游 CLI 版本": "Upstream CLI version", "上游客户端版本": "Upstream client version", "上游按": "The upstream checks ", "上游按「结构」校验身份:三段必须各自成块,所以这里分开编辑三段(不能合成一段)。动态段里的运行值写成占位符,发请求时才替换:{cwd} 工作目录、{platform} 平台、{shell} shell、{os_version} 系统版本、{git} 是否 git 仓库、{provider} 提供方标识、{model} 模型名。清空某一段 = 那一段恢复官方原文。第三段发出时前面会自带一个空行(官方形状)。": "The upstream verifies identity by \"structure\": the three blocks must each be a separate block, so they are edited separately here (they cannot be merged into one). Runtime values in the dynamic block are written as placeholders and substituted only when a request is sent: {cwd} working directory, {platform} platform, {shell} shell, {os_version} OS version, {git} whether this is a git repository, {provider} provider identifier, {model} model name. Clearing a block = that block reverts to the official text. A blank line is automatically prepended to the third block when it is sent (the official shape).", "上游未配置": "Upstream not configured", "上游模型繁忙时会先排队(回一句「建议 N 秒后再来」):网关等一会儿再发同一请求,最多等几次。默认 2 次,可填 0–10;填 0 表示不等待,排队直接返回 503 并说明「不是登录态或额度问题」。": "Busy upstream models queue first (replying \"suggest waiting N seconds\"): the gateway waits a while and resends the same request, up to a set number of waits. Default 2; accepts 0–10. 0 means no waiting: a queued response returns 503 directly and states that this is not a sign-in or quota problem.", "上游用「逐字精确匹配」的方式审核请求体(不是语义审核):客户端注入的固定模板句、计费头字段名、以及某些裸错误码出现在报文里就会整单拦截,返回 400。开启本项后,网关在每次转发前改写这些指纹 —— 表头键值整段删除,承载语义的模板句只换一个词(如 official CLI for Claude → official CLI tool for Claude),对话内容与语义都不受影响。规则集是内置的,不需要也无法维护词表。关掉本项后客户端模板会原样发往上游,可能重新出现模板句被误拦的报错。": "The upstream reviews request bodies by exact word-for-word matching (not semantic review): fixed template sentences injected by the client, billing header field names, and certain bare error codes in the payload cause the entire request to be blocked with 400. With this option on, the gateway rewrites those fingerprints before every forward — header key/value pairs are deleted entirely, and template sentences that carry meaning have a single word swapped (e.g. official CLI for Claude → official CLI tool for Claude); the conversation content and meaning are unaffected. The rule set is built in — there is no word list to maintain, and none can be. With this option off, client templates go upstream as-is and template-sentence false blocks may reappear.", "上游请求四个阶段各自的等待上限(秒,1~3600):①「连接中超时」= 建立 TCP/TLS 连接或代理隧道的最大等待,默认 30 秒;②「等待响应超时」= 请求发出后等上游响应头的最大时间,默认 300 秒 —— 网关请求上游恒带 stream,响应头在 SSE 建立时就到达,与模型思考多久无关;③「流式响应空闲超时」= 流式响应相邻两块数据之间允许的最大空闲,收到新数据即重新计时,默认 300 秒 —— 上游长时间不吐数据即判定连接僵死并断开;④「非流式响应超时」= 读完整份非流式响应体的总预算(一次性计时、不重置),默认 300 秒。四项都是「等待上限」,只要数据还在来,正常的流式回答就一直往下传。保存后对下一个请求立即生效,不用重启。": "The upstream wait limit for each of the four request stages (seconds, 1–3600): (1) \"Connect Timeout\" = the maximum wait to establish the TCP/TLS connection or proxy tunnel, default 30 seconds; (2) \"Response Headers Timeout\" = the maximum time to wait for the upstream's response headers after the request is sent, default 300 seconds — gateway requests always use stream, and the response headers arrive as soon as the SSE stream is established, regardless of how long the model thinks; (3) \"Stream Idle Timeout\" = the maximum idle gap allowed between adjacent chunks of a streaming response, the timer restarting on each new chunk, default 300 seconds — if the upstream sends no data for a long time, the connection is judged dead and disconnected; (4) \"Non-Streaming Timeout\" = the total budget for reading a complete non-streaming response body (a single timer that is not reset), default 300 seconds. All four are wait limits: as long as data keeps arriving, a normal streaming answer keeps flowing. Changes take effect on the next request without a restart.", "上游调试报文": "Upstream debug payloads", "上移": "Move up", "上移规则": "Move rule up", "下次自动重试:{time}": "Next automatic retry: {time}", "下游正文": "Downstream bodies", "下移": "Move down", "下移规则": "Move rule down", "下载失败:{message}": "Download failed: {message}", "不一致": "Mismatch", "不做会话识别,每条请求都重新按策略选路。": "No session detection: every request is routed by strategy from scratch.", "不做图片兼容": "Do not adapt images", "不可用": "Unavailable", "与网关同源的面板;完整管理功能在桌面端": "A panel served by the same gateway; full management lives on desktop", "两张开关分别管桌面端(应用内窗口,也包含开启局域网访问后从其他设备访问的那份面板)与网页端(Docker / 服务端自托管的浏览器面板)。默认都开启;桌面端只在本机使用、嫌验证耗时可以关掉,网页端暴露在网络上,建议保持开启。": "The two switches cover the desktop side (the in-app window, including the panel reached from other devices when LAN access is on) and the web side (the browser panel hosted by Docker / server). Both default to on. Turn the desktop one off if you only use it locally and find the check slow; keep the web one on, since that page is exposed to the network.", "两次输入的备份密码不一致": "The backup passwords do not match", "两次输入的新密码不一致": "The new passwords do not match", "两次重试之间的等待时间,两项共用,可填 0–300 秒。": "Wait time between two retries, shared by both settings. Range: 0–300 seconds.", "两种方式不会互相自动切换。": "The two modes never switch to each other automatically.", "两组设置分别用于桌面端托管的网页管理面板与网页端(Docker / 服务端)的浏览器面板。是否可被其他设备访问取决于网络访问与防火墙设置,不限于局域网。两端默认都开启人机验证,建议保持开启。": "The two groups apply to the web panel hosted by the desktop app and the browser panel hosted by Docker / server. Access from other devices depends on network access and firewall settings and is not limited to the LAN. Human verification is enabled by default for both; keeping it enabled is recommended.", "为了安全,开启前需要先注册一个": "For security, you need to register a ", "主进程未返回启动设置,请更新桌面端后重试": "The main process did not return startup settings. Update the desktop app and try again.", "主进程桥不可用": "Main process bridge unavailable", "主题": "Theme", "事件日志": "Event logs", "事件日志保留天数": "Event Log Retention Days", "云同步": "Cloud sync", "产品名": "Product name", "产品名不能包含斜杠或版本号,请改用前缀匹配": "Product names cannot include slashes or versions. Use prefix matching.", "人机验证": "Human verification", "人机验证失败": "Human verification failed", "人机验证已完成": "Human verification complete", "人机验证还在计算,请稍候": "Human verification is still running, please wait", "仅在同一会话、同一问题和相同权限范围内复用;追问新细节会重新识读。缓存只存在本机内存。": "Results are reused only within the same conversation, question and permission scope. New questions trigger a fresh reading. The cache is kept only in local memory.", "仅在账号、配置、签到或余额等实质内容变化时上传;导出时间或查询时间单独变化不会触发上传。": "Upload only when account data, settings, check-in results or balances change. Changes to export or query timestamps alone do not trigger an upload.", "仅处理本次转发副本,不修改客户端选择,也不删除当前或历史图片。": "Only this forwarded copy is changed. The client's selection and all current and historical images are preserved.", "仅影响面板登录与注册,不影响 API Key 调用。保存后生效,已登录会话不会退出。": "Only affects panel sign-in and registration, not API key requests. Changes take effect after saving and do not sign out existing sessions.", "仅本机": "This device only", "仅用现有数据、不联网刷新": "Using existing data only, no online refresh", "从云端恢复": "Restore from cloud", "从桌面图标启动,全屏、无地址栏。想卸载:长按图标删除,或清除浏览器站点数据。": "Launch it from the home screen icon: full screen, no address bar. To uninstall, long-press the icon and remove it, or clear the browser's site data.", "优先使用当前路由内的视觉模型": "Prefer vision models in the current route", "优先在当前路由内找可用的视觉模型,找不到就用 {model} 直接回答,不再回到原模型。": "An available vision model inside the current route is preferred; if there is none, {model} answers directly instead of the original model.", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "This restores the default groups, order and visibility. Groups you created are removed (their menus are kept).", "会话图片压缩设置已刷新": "Image compression settings refreshed", "位置": "Location", "位置与端口": "Location and ports", "使用 Rust 正则语法,保存时由后端校验;不支持环视和反向引用。": "Uses Rust regular expression syntax, validated by the backend when saving. Lookaround and backreferences are not supported.", "使用中文单位(亿 / 万)": "Use Chinese units (yi / wan)", "使用本地量级词(万 / 亿式)": "Use local magnitude words (万 / 亿-style)", "使用默认值": "Using defaults", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "The sidebar layout module did not load (ui/sidebar-layout.js must be included before app.js).", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "No menus are shown in the sidebar. Turn on the ones you need under Settings → Display → Sidebar menus.", "侧边栏菜单": "Sidebar menus", "保存上游原始报文(请求头、请求体、响应头、响应体)": "Save raw upstream payloads (request headers, request body, response headers, response body)", "保存单独配置": "Save model override", "保存后以这里的文本为准": "The text here takes precedence once saved", "保存后对下一轮补货立即生效,不用重启。守卫跑在应用界面里:轻量模式关窗销毁界面期间无法铸造,走套餐池(Start Plan)通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。": "Saving takes effect on the next restock round, no restart needed. The guard runs inside the app UI: while lightweight mode has destroyed the UI after a window close, no tokens can be minted — requests on the plan-pool (Start Plan) channel land in the request log as 503 (with the reason); reopen the UI and minting recovers automatically.", "保存后应用将重启以生效。": "The app will restart after saving for this to take effect.", "保存后状态读取立即生效。后台不会自动生成令牌;需要人机验证时,在账号的「套餐明细」中主动开始验证。模型请求免验证时无需保持界面打开。": "Status polling settings take effect immediately after saving. No tokens are generated automatically. Start required verification in the account’s Plan details. You do not need to keep the interface open when model requests are exempt from verification.", "保存后立即生效,不用重启:策略与粘性作用于**下一次**转发的选路,进行中的请求不受影响。": "Takes effect on save, no restart: strategy and stickiness apply to the **next** forwarded request; in-flight requests are unaffected.", "保存后立即生效,不用重启;次数用尽仍失败时,错误原样返回给客户端。": "Takes effect immediately after saving, no restart needed; if all attempts are exhausted and the request still fails, the error is returned to the client as-is.", "保存后立即生效,不用重启;超时按上游失败处理(计入请求日志的「错误」列,并按「请求重试」的设置决定是否重试)。": "Takes effect immediately after saving, no restart needed; a timeout is treated as an upstream failure (counted in the \"Error\" column of the request logs, and retried according to the \"Request Retries\" settings).", "保存后立即生效:保留天数和数量上限同时生效,调小任一项会立即清理超出的历史数据,且不可恢复。": "Takes effect immediately after saving. Both retention days and record limits apply; lowering either immediately removes excess historical data and cannot be undone.", "保存后立即生效:改小保留天数会立刻删除超出的历史数据,且不可恢复。": "Takes effect immediately after saving: lowering the retention days deletes the excess historical data at once, and this cannot be undone.", "保存在当前网关,登录页也会公开显示。不会更改安装包、快捷方式、系统托盘图标或软件版本信息。": "Saved on the current gateway and displayed publicly on the sign-in page. Does not change the installer, shortcuts, system tray icon or software version information.", "保存并重启": "Save & Restart", "保存设置": "Save settings", "保持当前路由范围,不跳到其他路由组。": "Stays within the current route and never jumps to another route group.", "保活换行丢弃": "Strip keepalive newlines", "保留原图和对话,由视觉模型直接回答本次请求。": "Keep the original images and conversation, and let a vision model answer this request directly.", "保留原图,选择视觉模型": "Keep the images and select a vision model", "保留图片中的文字、代码、数字、布局与状态。识读失败就停止,不删图后继续回答。": "Preserve text, code, numbers, layout and state in the images. Stop if reading fails; never remove images and continue answering.", "保留天数已刷新": "Retention days refreshed", "保留旧版配置兼容,当前不会自动连铸。每次点击「开始验证」只取得一枚令牌,失败或取消后停止。": "Kept for compatibility with older settings. Tokens are not minted automatically in batches. Each Start verification action obtains one token and stops on failure or cancellation.", "保留草稿并读取最新设置": "Keep draft and reload settings", "修改密码": "Change password", "修改密码需要输入当前密码;修改成功后,其他设备 / 浏览器上的登录会立即失效,当前这条会话保留。": "Changing the password requires the current one. After success, sign-ins on other devices and browsers are revoked immediately; this session stays active.", "值": "Value", "值与默认值相同的行不占覆盖(存的是「改过的键」,不是全量配置);值留空保存表示这个头不发送,删除改过的行表示回落默认值。改完立即生效,不用重启。": "Rows whose value equals the default do not count as overrides (only changed keys are stored, not the whole configuration); saving an empty value means this header is not sent, and deleting an edited row reverts it to the default. Changes take effect immediately, no restart needed.", "值(留空 = 不发送)": "Value (empty = not sent)", "停止并说明原因": "Stop and explain why", "像素": "px", "允许其他设备访问前,需要设置面板管理员账号与密码。注册完成后会继续开启流程并重启应用。": "Set a panel administrator username and password before allowing access from other devices. After registration, network access will be enabled and the app will restart.", "允许其他设备访问网关": "Allow other devices to access the gateway", "允许局域网内的设备访问网关": "Allow devices on the LAN to access the gateway", "允许无 Key 裸跑": "Allow running without keys", "允许浏览器里的页面跨来源调用网关(/v1/*)": "Allow pages in a browser to call the gateway cross-origin (/v1/*)", "允许的域名": "Allowed hostnames", "先发送原图,明确拒图后补救": "Send original images first; adapt only after an explicit rejection", "先把图片交给视觉模型读一遍,再让原模型结合读到的内容回答。": "The vision model reads the image first, then the original model answers using what was read.", "全局配置": "Global Configuration", "全部已配置": "All configured", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 中,加密密钥单独保存在库外。跨机器备份请使用「整库备份 / 恢复」,不要只复制数据库。更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "Accounts, event logs, request records, debug payloads, and settings are stored in agent2api.db. Encryption keys are stored separately. To move between machines, use Full database backup / restore rather than copying only the database. To change the directory, set AGENT2API_PROXY_HOME and restart.", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 这一个 SQLite 数据库里。备份时只需拷贝这个文件;更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "All data (accounts, event logs, request records, debug payloads, and settings) is kept in a single SQLite database, agent2api.db, in the configuration directory. To back up, just copy this file; to change its location, set the AGENT2API_PROXY_HOME environment variable and restart the app.", "全部角色": "All roles", "全部角色沿用原有行为,包含思考内容和工具参数;指定角色时只改消息正文,未选角色及思考内容、工具参数保持原样。": "All roles keeps the existing behavior, including reasoning content and tool arguments. Selected roles rewrites only message content; unselected roles, reasoning content and tool arguments remain unchanged.", "共享视觉模型已变更,请重新确认并保存,避免把图片交给未经确认的模型。": "The shared vision model changed. Confirm and save again before sending images to the new model.", "共用设置:{providers}": "Shared settings: {providers}", "关闭后不再提供网页管理面板,本机桌面程序仍可正常管理;已开启的 API 转发不受影响。": "The web management panel will no longer be served. You can still manage the gateway in the local desktop app, and API forwarding is not affected.", "关闭后手动上传 / 下载也会被拒绝。": "When off, manual upload/download is rejected too.", "关闭后网关只监听 127.0.0.1,其他设备将无法直接连接,网页管理面板也会一并关闭。已配置的网关 Key 与账号不受影响。": "The gateway will listen only on 127.0.0.1, preventing direct connections from other devices. The web management panel will also be disabled. Existing gateway keys and accounts are not affected.", "关闭后网关回到只监听 127.0.0.1,局域网内的设备将无法继续访问;已配置的网关 Key 与账号都不受影响。": "Once disabled, the gateway goes back to listening only on 127.0.0.1 and devices on the LAN can no longer reach it; configured gateway keys and accounts are unaffected.", "关闭后,管理界面不再从局域网提供,只有本机的桌面程序可以管理;已开启的 API 转发不受影响。": "Once disabled, the admin UI is no longer exposed over the LAN — only the desktop app on this machine can manage it; API forwarding that is already enabled is unaffected.", "关闭局域网访问": "Disable LAN Access", "关闭并重启": "Close & Restart", "关闭思考": "Disable reasoning", "关闭窗口即退出程序,后台转发随之中断": "Closing the window quits the app, and background forwarding stops with it", "关闭窗口时最小化到托盘": "Minimize to tray when the window is closed", "关闭窗口时程序不退出,转发继续在后台运行;退出请用托盘菜单": "Closing the window does not quit the app; forwarding keeps running in the background. To quit, use the tray menu", "关闭网络访问": "Disable network access", "兼容处理最长等待": "Longest wait for compatibility processing", "兼容处理最长等待(秒)": "Maximum image adaptation wait (seconds)", "内容拦截降级": "Content-block fallback", "内置识别、自定义规则与来源声明": "Built-in identification, custom rules, and origin declarations", "内置软件标识规则": "Built-in User-Agent rule", "内置默认": "Built-in defaults", "内置默认提示词": "the built-in default prompt", "再输入一次新密码": "Re-enter the new password", "凭据类请求头已脱敏。": "Credential request headers have been redacted.", "凭证只保存在这台手机上,按服务器分别存放": "Credentials are stored only on this phone, separately for each server", "出问题时把这一页截图,或点「复制全部信息」把文本贴进反馈,一般就能定位到大致原因。": "When something goes wrong, screenshot this page or use \"Copy all info\" and paste the text into your report — that is usually enough to narrow down the cause.", "分享图标在 Safari 底部工具栏中间": "The Share icon sits in the middle of Safari's bottom toolbar", "分组名": "Group name", "分组名,例如「常用」": "Group name, e.g. \"Favorites\"", "切换视觉模型": "Switch to a vision model", "切换视觉模型 · 视觉模型回答": "Switch models · Vision model answers", "切换视觉模型配置": "Vision model switching settings", "切换账号重试次数": "Account-Switch Retries", "刚刚从 models.dev 拉到的最新数据": "Fresh data just fetched from models.dev", "删除 {code}": "Delete {code}", "删除分组": "Delete group", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "Delete group \"{name}\"? Its {n} menus will move to \"{target}\" — nothing is lost.", "删除匹配内容": "Delete matched text", "删除后不再接受这个分类的来源声明,历史记录保留原来的名称和用量。": "Origin declarations for this category will no longer be accepted. Historical records retain their original names and usage.", "删除后,新请求不再使用这条规则;历史记录保持不变。": "New requests will no longer use this rule. Historical records stay unchanged.", "删除客户端分类": "Delete client category", "删除状态码 {code}": "Delete status code {code}", "删除空分组「{name}」?": "Delete the empty group \"{name}\"?", "删除识别规则": "Delete identification rule", "删除这个分组(组内菜单移到第一组)": "Delete this group (its menus move to the first group)", "刷新": "Refresh", "刷新失败:{message}": "Refresh failed: {message}", "前台运行": "Foreground process", "前缀": "Prefix", "剥离上游审核黑名单指纹(改写请求体里的模板句与表头)": "Strip upstream review blacklist fingerprints (rewrite template sentences and headers in request bodies)", "功能建议": "Feature Request", "加入备选": "Add as backup", "加密备份必填,旧 SQL 可留空": "Required for encrypted backups; leave blank for legacy SQL", "包含": "Contains", "包含日志与调试报文": "Include logs and debug payloads", "包含:{items}": "Includes: {items}", "匹配内容": "Match pattern", "匹配内容不能为空,且最多 {max} 个字符": "The match pattern is required and must not exceed {max} characters", "匹配内容不能为空,最长 256 个字符": "Enter a match pattern of up to 256 characters", "匹配原文含零宽空格,词表预览用 \\u{200b} 标出;编辑时保留该字符。": "The pattern contains a zero-width space, shown as \\u{200b} in the rule preview. Preserve this character when editing.", "匹配方式": "Match type", "区域(Region)": "Region", "华为云 OBS": "Huawei Cloud OBS", "单独指定视觉模型": "Choose a separate vision model", "单轮铸造上限": "Per-round mint cap", "占用大小": "Size on Disk", "历史未记录识别依据": "Identification evidence was not recorded", "原来的「全局方式 + 模型单独配置」已按相同意思自动填成下面的模型名单,可以照用也可以重新调整;改动一处之后就会按新形式存下来。": "Your previous \"global mode + per-model overrides\" has been filled into the model lists below with the same meaning. Keep it as is or adjust it; once you change anything it is stored in the new form.", "原模型不能直接看图": "The original model cannot read images directly", "原模型根据识读内容回答": "The original model answers using the image description", "去反馈": "Give Feedback", "去申请": "Submit a Request", "反馈与需求": "Feedback & Requests", "发现缺货时一轮最多铸几个(连铸之间固定隔 500 毫秒)。默认 1 个:SDK 同一实例连铸容易互相干扰。调大补货更快,但单轮连铸越多越容易触发上游风控。可填 1–5。": "How many tokens a single round may mint when a shortage is found (fixed 500 ms between back-to-back mints). Default 1: consecutive mints on one SDK instance tend to interfere with each other. A larger value restocks faster, but the more mints per round, the easier it trips the upstream risk control. 1–5 accepted.", "取消勾选后只备份业务数据(账号、配置与余额记录),文件显著变小;事件日志、请求统计与调试报文不会进备份文件。": "Unchecked, only business data is backed up (accounts, configuration, balance records) and the file shrinks considerably; event logs, request stats, and debug payloads are left out.", "变更网页管理面板": "Change Web Admin Panel", "只列单独配置过的家,其余沿用上面的全局配置": "Only providers configured individually are listed; the rest use the global configuration above", "只对「排队制」的上游生效:模型繁忙时上游不报错,只回一句「建议 N 秒后再来」,网关按建议时长等一会儿再发同一请求,等满次数仍排不上才把「排队中」作为错误返回(HTTP 503,文案会说明这不是登录态或额度问题)。等待发生在首个字节之前,吃的是「等待响应超时」那份预算 —— 两项设置一起决定一次请求最多卡多久;排队不会标记账号限额、也不会换账号(换谁都一样在排队)。保存后对下一个请求立即生效,不用重启。": "Applies only to queueing upstreams : when a model is busy the upstream raises no error, it just replies \"suggest waiting N seconds\"; the gateway waits for the suggested duration and resends the same request, and only when the wait count is exhausted is \"queueing\" returned as an error (HTTP 503, with text explaining that this is not a sign-in or quota problem). The wait happens before the first byte and comes out of the \"Response Headers Timeout\" budget — together the two settings determine how long one request can stall at most; queueing does not mark the account as rate-limited and does not switch accounts (everyone is queueing). Takes effect on the next request after saving, no restart needed.", "只影响读图那一步的思考深度;两块设置统一用这个选择。": "Only affects how deeply the image-reading step thinks; both blocks share this choice.", "只有已安装、启用并声明了设置项的提供商会出现在这里。可前往插件页检查安装与启用状态。": "Only providers with an installed, enabled plugin that declares settings appear here. Check installation and activation on the Plugins page.", "只沿用模型与思考等级,不借用视觉服务的内部 Key;仍受当前请求权限限制。": "Only the model and reasoning level are reused, not the vision service's internal Key. The current request's permissions still apply.", "只清掉这个浏览器存的 Key,不影响网关": "Only clears the key stored in this browser; the gateway is untouched", "只覆盖指定提供商的指定模型,其余跟随全局。": "Override only the selected model from the selected provider; all others follow the global settings.", "可跨提供商多选;只处理这些模型看不了的图片。": "Multi-select across providers; only images these models cannot read are handled.", "可跨提供商多选;这些模型的请求会整体改交视觉模型。": "Multi-select across providers; requests from these models are handed over to the vision model as a whole.", "可选。部分服务(如中国科技云数据胶囊)会按 User-Agent 校验凭据绑定的客户端类型,此时填写包含该类型名的字符串(例如 rclone/v1.67.0)。留空则维持默认。": "Optional. Some services (such as CSTCloud Data Capsule) validate the credential's bound client type via the User-Agent; if so, enter a string containing that type name (for example rclone/v1.67.0). Leave blank to keep the default.", "合计只累加当前筛选后可见的账号,筛选、搜索一改数字就跟着变。": "Totals only add up accounts visible under the current filter; changing the filter or search changes the number.", "合计按整组统计(默认):不受筛选、搜索影响,被筛掉与已禁用的账号也计入。": "Totals cover the whole group (default): filtering and search do not change them, and filtered-out or disabled accounts still count.", "同一会话、同一问题、相同权限范围内复用;追问新细节会重新识读。": "Reused within the same session, question and permission scope; asking about new details triggers a fresh read.", "同一会话在 5 分钟内尽量跟住同一个账号;停了 5 分钟再发就算新会话。多数场景用它 —— 多轮对话少换号,也不至于把账号焊死。": "The same session tries to stay on one account for 5 minutes; pausing longer than 5 minutes starts a new session. The choice for most cases — fewer account switches in multi-turn chats, without pinning an account.", "同一会话在 6 小时内跟住同一个账号;适合一坐几个小时的长会话,上游的上下文缓存能吃到更多。": "The same session stays on one account for up to 6 hours; suited to marathon sessions — the upstream context cache gets reused much more.", "同一提供商的同一模型不能重复配置": "The same provider and model cannot have duplicate overrides", "同一账号重试次数": "Same-Account Retries", "同时开放网页管理面板": "Also expose the web admin panel", "同步密码": "Sync password", "名单最多 {max} 个状态码": "At most {max} status codes", "后端没有返回版本信息": "The backend returned no version info", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "Contains the pinned \"Settings\" menu, so the group cannot be hidden as a whole (you can still hide its other menus individually)", "启动与托盘": "Startup & Tray", "启动时间": "Started at", "启用云同步": "Enable cloud sync", "启用图片兼容": "Enable image compatibility", "启用规则": "Enable rule", "启用规则:{name}": "Enable rule: {name}", "命中依据:{header} · {pattern}": "Matched evidence: {header} · {pattern}", "命中这些上游状态码的失败不在同一账号重发,直接换下一个账号继续试(换号占用「切换账号重试次数」,换满仍失败才把错误原样返回给客户端)。输入 100–599 的状态码后回车添加,点 × 或退格删除;默认 402(积分不足)。清空全部表示任何错误都照常重试。": "Failures matching these upstream status codes are not retried on the same account — the gateway switches to the next account and keeps trying (an account switch consumes an \"Account-Switch Retries\" slot; only when those are exhausted is the error returned to the client as-is). Type a status code from 100–599 and press Enter to add it; click × or press Backspace to delete one. Default: 402 (insufficient points). Clearing the list means any error is retried as usual.", "品牌 Logo": "Brand logo", "品牌设置": "Brand settings", "品牌设置已保存": "Brand settings saved", "品牌预览": "Brand preview", "哪些模型用这种方式": "Which models use this way", "固定": "Pinned", "图标经 Magpie 引入,未单独记录 Lobe Icons 的图标版本;以上版本仅用于核对许可。": "These icons were obtained through Magpie. The Lobe Icons asset revision was not recorded separately; the revision above was used only to verify the license.", "图片与相关对话将交给配置的视觉模型处理,可能增加等待时间和费用。请确认这些服务可以接收你的图片。": "Images and relevant conversation will be sent to the configured vision models, which may increase latency and cost. Confirm that these services may receive your images.", "图片兼容": "Image compatibility", "图片兼容当前是关闭的:下面两块设置照样能改、会被保留,但不会对任何请求生效。": "Image compatibility is currently off: the two blocks below can still be edited and are kept, but nothing here applies to any request.", "图片兼容设置已保存,仅对新请求生效。": "Image compatibility settings saved. They apply only to new requests.", "图片兼容设置读取失败": "Failed to load image compatibility settings", "图片压缩": "Image compression", "图片最长边超过这个值就等比缩小(只缩不放)。默认 2048,可填 256–8192 —— 多数视觉模型在这个量级已经够用,调小更省流量、但细节会丢。": "Images whose longest edge exceeds this value are scaled down proportionally (never enlarged). Default 2048, range 256-8192 — most vision models are fine at this size; a smaller value saves bandwidth but loses detail.", "图片能力未知时": "When image capability is unknown", "图片过大、格式错误或下载失败不会被当作模型不支持图片。": "Oversized, malformed or undownloadable images are not treated as unsupported by the model.", "在同一个账号上原地重发几次(不含首发;整条请求共用一份,用完后换来的账号只发一次就继续换)。可填 0–10,0 表示失败立即换号。": "How many times to resend in place on the same account (not counting the first send; the whole request shares one pool, and once it is used up, any account switched to gets only one send before switching continues). Accepts 0–10; 0 means switch accounts immediately on failure.", "在这里直接编辑提示词正文:保存后以这份文本为准(优先于上面的提示词文件),清空则回到文件 / 内置默认。改一个字不必再去编辑器里开文件。": "Edit the prompt text right here: after saving, this text takes precedence (over the prompt file above), and clearing it falls back to the file / built-in default. No need to open a file in an editor just to change one word.", "在途请求": "In-flight requests", "地址格式不对。填「IP 或域名:端口」,可带 http:// 或 https://,例如 192.168.1.23:3065": "Invalid address. Enter \"IP or domain:port\", optionally with http:// or https:// — e.g. 192.168.1.23:3065", "坚果云": "Jianguoyun (Nutstore)", "坚果云需使用「第三方应用密码」(账户信息 → 安全选项里生成),地址必须是 /dav/ 下的目录。": "Jianguoyun requires an app-specific password (generate it under Account info → Security), and the URL must point to a directory under /dav/.", "填「IP 或域名:端口」。协议可写 http:// 或 https://,不写默认 http;http 不写端口默认 3065,https 默认 443。地址里的 /m、/v1 会自动去掉。": "Enter \"IP or domain:port\". The scheme may be http:// or https:// (http is assumed if omitted). Without a port, http defaults to 3065 and https to 443. Any /m or /v1 in the address is stripped automatically.", "处理方式": "Processing mode", "处理示意": "How it works", "备份中…": "Backing up…", "备份包含账号凭证、网关 Key、GitHub 令牌与云同步凭据的恢复密钥,整个文件受备份密码保护。请分开保管文件与密码;忘记密码无法恢复。": "The backup contains recovery keys for account credentials, gateway keys, GitHub tokens, and cloud sync credentials. The whole file is protected by the backup password. Store the file and password separately; without the password, restoration is impossible.", "备份密码": "Backup password", "备份密码不能超过 1024 字节": "The backup password must not exceed 1024 bytes", "备份密码至少需要 12 位,建议使用较长且不重复的密码": "Use at least 12 characters; a long, unique password is recommended", "备份整库": "Back up database", "备份文件内含全部账号凭证、网关 API Key 与面板管理员凭据,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "The backup file contains every account credential, the gateway API keys, and the panel admin credentials — enough to log in directly. Keep it safe; do not share it or upload it anywhere public.", "备选模型": "Backup model", "复制全部信息": "Copy all info", "复制给客户端": "Copy for your client", "复用相同图片的识读结果": "Reuse readings of identical images", "外观": "Appearance", "外观 · 接入 · 关于": "Appearance · Access · About", "多个客户端标识冲突": "Conflicting client identifiers", "天": "days", "天数": "Days", "失败 {n} 个": "failed: {n}", "失败 {n} 个:{detail}": "Failed: {n}; {detail}", "失败后最多再换几个账号试(填 N = 最多换 N 个,首发那个不算)。换到同一家名下另一个账号、或换到另一家,都各算一次;换满仍失败就返回错误。可填 0–10,0 表示失败立即报错。": "How many more accounts to try on failure (N = switch to at most N accounts; the account that made the first attempt does not count). Switching to another account under the same provider and switching to a different provider each count as one; once the limit is reached and the request still fails, an error is returned. Accepts 0–10; 0 means report the error immediately on failure.", "存储桶(Bucket)": "Bucket", "存储概况已刷新": "Storage overview refreshed", "安全": "Security", "安装到主屏幕": "Add to Home Screen", "安装到桌面": "Install as app", "安装包形态": "Installer kind", "完全相同": "Exact match", "官方原文只有一句:声明自己是 ZCode。": "The official text is a single sentence: a declaration that it is ZCode.", "实际处理:": "What actually happens: ", "客户端 system 原样出站。": "The client's system prompt goes out as-is.", "客户端 system 原样出站(只靠指纹脱敏改写模板句)。": "The client's system prompt goes out as-is (only fingerprint masking rewrites template sentences).", "客户端专用请求头": "Client-specific header", "客户端名称": "Client name", "客户端名称不能为空,最长 80 个字符": "Enter a client name of up to 80 characters", "客户端名称重复或与内置名称冲突": "Client name is duplicated or conflicts with a built-in name", "客户端标识无效或重复": "Invalid or duplicate client identifier", "客户端识别": "Client identification", "客户端识别入口尚未就绪,请刷新页面后重试": "Client identification is not ready. Refresh the page and try again.", "客户端识别设置读取失败": "Failed to load client identification settings", "客户端(Claude Code / Codex 等 CLI)会在 system 提示词里注入几十句固定模板,上游按逐字匹配审核,命中就整单拦截(HTTP 400)。指纹脱敏能改写实测命中过的那几句,但换一个客户端版本就可能冒出新的。这里可以把 system 整段换成网关自己那份:①「透传」= 不动客户端 system(默认,行为与之前完全一致);②「替换」= 删掉客户端所有 system / developer 消息,换成网关的提示词(客户端项目规范随之消失);③「追加」= 在开头连续 system 块之后插入一条网关提示词,既有消息逐字不动(客户端规范与网关提示词并用)。那份提示词有两个来源:提示词文件(留空用内置默认),或直接在界面上编辑正文 —— 编辑过就以那份正文为准(优先于文件),清空则回到文件 / 内置默认。另外,透传 / 追加模式下撞了内容拦截(多半是指纹误报)时,网关会自动换一段最小中性提示词重试一次,并把「降级期」开到次日 00:00 —— 期间所有请求直接带中性提示词出门,不再先撞一次 400;这里能看见并提前解除它。上面几项是**默认值**:想给某个提供商单独配,用下面的「按提供商」加一行(带「网关自带」的家默认就列在那里)—— 不同的上游对这些内容的接受程度不一样。": "Clients (CLI tools such as Claude Code / Codex) inject dozens of fixed template sentences into the system prompt, and the upstream reviews them by word-for-word matching — a hit blocks the whole request (HTTP 400). Fingerprint masking can rewrite the sentences observed to be hit, but a different client version may introduce new ones. Here you can replace the whole system prompt with the gateway's own one: (1) \"Passthrough\" = leave the client's system prompt untouched (the default, identical to the previous behavior); (2) \"Replace\" = delete all client system / developer messages and substitute the gateway's prompt (the client's project instructions disappear with them); (3) \"Append\" = insert one gateway prompt after the leading consecutive system blocks, leaving existing messages word-for-word intact (the client's instructions and the gateway prompt are used together). That prompt has two sources: a prompt file (leave empty for the built-in default), or editing the text right in the UI — an edited text takes precedence (over the file), and clearing it goes back to the file / built-in default. Also, in Passthrough / Append mode, if content blocking is hit (usually a fingerprint false positive), the gateway automatically retries once with a minimal neutral prompt and extends the \"fallback period\" to 00:00 the next day — during that period every request goes out with the neutral prompt directly, with no 400 hit first; you can see it here and clear it early. The items above are **defaults**: to configure a single provider, add a row under \"Per-Provider Configuration\" below (providers with \"Gateway-Provided Prompt\" are listed there by default) — different upstreams tolerate these differently.", "家之间仍按优先级,只有同一家内部轮流用各账号 —— 想优先用某几家、又不愿把某一家的某个账号焊死时用它。": "Providers still follow priority; only accounts within the same provider take turns. For preferring a few providers without pinning any single account.", "家内轮询": "Per-provider rotation", "容器内更新": "In-container update", "密码、文件或密钥校验失败时不会替换主库;替换阶段失败会自动尝试还原,实际结果以上方错误说明为准。": "Password, file, or key validation failures leave the main database unchanged. If replacement fails, restoration is attempted automatically; the error above reports the actual outcome.", "密码加密 · 包含恢复密钥": "Password encrypted · Recovery keys included", "密码至少 8 位": "Password must be at least 8 characters", "对话里内嵌的 base64 大图(截图、照片)既撑大请求体,也拉高按像素折算的上游计费。开启后,网关在转发前把超过阈值的图等比缩到长边上限、重新存成 JPEG —— 只改发给上游的副本,请求日志里保存的仍是你发来的原图。同一张原图在多轮对话里重复出现时复用上一次的压缩结果,不会每轮重算。http 链接图片、GIF 动图、SVG 一律不动;压完反而更大的图也保留原图。只作用在对话场景,生图与图片编辑不受影响。默认开启;不想要的话把开关关掉即可。": "Large base64 images embedded in a conversation (screenshots, photos) both bloat the request body and raise upstream billing, which is computed from pixels. When enabled, the gateway scales images above the threshold down to the long-edge limit and re-encodes them as JPEG before forwarding — only the copy sent upstream is changed; the request log still stores the original you sent. When the same original image reappears across turns, the previous compressed result is reused instead of recomputed. Images referenced by http links, animated GIFs and SVGs are never touched; an image that would grow after re-encoding is kept as-is. Applies to chat only — image generation and editing are unaffected. On by default; turn the switch off if you do not want it.", "导入前会把本机的 account.key 改名备份(account.key.bak-时间戳),不会直接删除。": "The local account.key is renamed to a backup (account.key.bak-) before importing; it is never deleted.", "导入完成:{summary}": "Import complete: {summary}", "导入密钥失败:{message}": "Key import failed: {message}", "导入密钥并继续": "Import key and continue", "导入账号": "Import Accounts", "导出中…": "Exporting…", "导出会把全部账号与自定义提供商定义写入一个 JSON 文件,可以拷到另一台机器上导入后继续使用。导入采用合并策略:同提供商下按业务身份(UID / userId / apiKey 等)去重 —— 已存在的账号只更新凭证,保留本机原有的优先级顺序;新账号追加到转发顺序末尾,不会抢占当前正在使用的账号;自定义提供商定义按 id 合并,本机缺失时自动补建。": "Export writes all accounts and custom provider definitions to a JSON file that can be copied to another machine and imported for continued use. Import merges: within the same provider, accounts are deduplicated by business identity (UID / userId / apiKey, etc.) — existing accounts only get their credentials updated and keep this machine's existing priority order; new accounts are appended to the end of the forwarding order and never displace the account currently in use; custom provider definitions are merged by id and created automatically when missing locally.", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义": "The export file contains credentials such as accessToken / refreshToken / apiKey along with custom provider definitions", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "The export file contains credentials such as accessToken / refreshToken / apiKey along with custom provider definitions, and can be used to sign in directly. Keep it safe; do not share it or upload it to a public location.", "导出账号": "Export Accounts", "将数据库和恢复凭证所需的密钥一起保存为密码加密的 .a2ab 备份,可在 Windows、macOS 或 Linux 上恢复,无需手工复制密钥。恢复时整体替换账号、配置、日志与桌面设置,并使用目标机器的密钥重新加密凭证,不覆盖本机已有钥匙。可取消包含日志以减小文件;旧 .sql 备份仍可导入。恢复前自动保留安全备份,完成后需要重新登录管理面板。": "Save the database and required recovery keys in a password-encrypted .a2ab backup. Restore it on Windows, macOS, or Linux without manually copying keys. Restoration replaces accounts, configuration, logs, and desktop settings, and re-encrypts credentials with the destination keys without overwriting them. Exclude logs to reduce file size. Legacy .sql imports remain supported. A safety backup is created before replacement; sign in again afterward.", "尚未注册管理员。开启「网关 → 网络访问 → 允许其他设备访问网关」时会引导注册,也可以从登录页注册。": "No administrator is registered yet. Enabling Gateway → Network access → Allow other devices to access the gateway guides you through registration. You can also register from the sign-in page.", "尚未注册管理员:管理接口不需要登录。开启「允许局域网访问」时会引导注册,也可以从登录页注册。": "No administrator registered: the management API does not require sign-in. Enabling \"Allow LAN access\" walks you through registration; you can also register from the login page.", "尚未配置视觉分析模型": "No vision analysis model is configured", "局域网开放后,管理接口要求登录。请设置管理员账号与密码,注册完成会直接继续开启流程。": "Once LAN access is on, the admin API requires signing in. Set an admin account and password; registration finishes and the enablement flow continues automatically.", "局域网访问": "LAN Access", "工具用法与环境说明那一大段。": "The long block covering tool usage and environment notes.", "已为「{label}」单独配置提示词": "Prompt configured individually for \"{label}\"", "已作为独立应用运行": "Standalone app", "已使用本机密钥重新加密 {n} 项凭证,原有密钥未被覆盖。": "Re-encrypted {n} credentials with local keys. Existing keys were not overwritten.", "已保存 {count} / {limit} 条报文(超出后丢弃最旧的)。": "{count} / {limit} payloads saved (oldest discarded when the limit is exceeded).", "已保存的值不符合当前插件规则,请修改或恢复默认值。": "The saved value does not meet the current plugin rules. Edit it or restore the default.", "已保存,留空则不修改": "Saved; leave blank to keep unchanged", "已保存,留空沿用": "Saved; leave blank to keep", "已关闭": "Disabled", "已关闭 models.dev 联网刷新": "Online refresh for models.dev turned off", "已关闭。{note}": "Disabled. {note}", "已关闭「{label}」的网关自带提示词:能否通过上游校验取决于上游当前口径": "Turned off the gateway-provided prompt for \"{label}\": whether it passes upstream validation depends on the upstream's current criteria", "已关闭会话图片压缩": "Image compression disabled", "已关闭出站指纹脱敏": "Fingerprint masking disabled", "已关闭开发者角色兼容": "Developer role compatibility disabled", "已关闭第三方模型回答完自动折叠过程": "Collapse third-party model work after the answer disabled", "已关闭网关跨域访问": "Gateway CORS disabled", "已关闭:不额外补阶段标记,由客户端决定过程展示。": "Disabled: no extra phase markers; the client controls how work is displayed.", "已删除分组「{name}」": "Deleted group \"{name}\"", "已取消「{label}」的单独配置": "Individual configuration removed for \"{label}\"", "已取消安装": "Installation cancelled", "已取消导入": "Import canceled", "已取消导出": "Export canceled", "已取消恢复": "Restore canceled", "已启用 {count} 条规则,应用于{scope}。": "{count} rules enabled, applied to {scope}.", "已启用登录": "Sign-in enabled", "已复制全部版本信息": "Copied all version info", "已应用": "Applied", "已开启": "Enabled", "已开启:为正常完成的 Codex 回答补阶段标记。": "Enabled: add phase markers to normally completed Codex replies.", "已开启:其他设备把 API 地址指向 {url}{panel}。": "Enabled: on other devices, point the API address to {url}{panel}.", "已开启:监听 0.0.0.0,允许其他设备访问。": "Enabled: listening on 0.0.0.0 to allow access from other devices.", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "Restored the default groups: Overview / Forwarding / Diagnostics / System", "已截断": "Truncated", "已指定出口": "Pinned egress", "已接管": "Managed", "已改回内置默认提示词": "Reverted to the built-in default prompt", "已新建分组「{name}」,点组头的 + 把菜单移进来": "Created group \"{name}\" — use + on its header to move menus in", "已清掉「{label}」界面编辑的正文": "Cleared the UI-edited text for \"{label}\"", "已清掉界面编辑的提示词(回落文件 / 内置默认)": "Cleared the UI-edited prompt (falls back to the file / built-in default)", "已清除本机保存的 API Key": "Removed the API key stored in this browser", "已生效": "In Effect", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。": "Switched automatically to a minimal neutral prompt (an upstream content block — most likely a system-prompt fingerprint false positive); lifts automatically at {until}.", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "Automatically switched to a minimal neutral prompt (upstream content blocking was hit, most likely a false positive on system fingerprints); it clears automatically at {until}. During this period this mode's own prompt is not sent; once you have fixed the prompt you can clear it immediately.", "已自定义": "Customized", "已运行": "Uptime", "已退出登录": "Signed out", "已隐藏": "Hidden", "巴西葡萄牙语": "Brazilian Portuguese", "希望接入新的提供商或模型": "A new provider or model you would like supported", "库中 schema": "Schema in database", "库主文件的大小(不含运行期间的 WAL 临时文件,退出时已自动并回)。": "Size of the database's main file (excluding WAL temp files created while running, which are merged back in automatically on exit).", "库存目标": "Stock target", "应用提供商": "Apply to providers", "应用版本:{version}": "App version: {version}", "应用状态": "App status", "应用窗口": "App window", "建立上游 TCP/TLS 连接或代理隧道的最大等待时间(秒),默认 30 秒,范围 1~3600。": "Maximum time to establish the upstream TCP/TLS connection or proxy tunnel (seconds). Default 30 seconds, range 1–3600.", "开发构建": "Debug build", "开发者角色兼容": "Developer role compat", "开发者角色兼容设置已刷新": "Developer role compatibility setting refreshed", "开启前需要注册面板管理员,已注册会跳过此步骤。管理接口需要管理员会话或网关 Key;API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。": "A panel administrator must be registered before enabling this; existing administrators skip this step. Management endpoints require an admin session or gateway key. API calls require an enabled gateway key; a default key is created automatically if none is available.", "开启后新发生的请求才会被记录(已经过去的请求补不回来)。报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "Only requests that happen after turning this on are recorded (past ones can't be backfilled). Payloads live in the local database and only the most recent 500 are kept (the oldest are dropped beyond that); the count shows under \"Data → Data storage\" on the left as \"Debug payloads\".", "开启后新发生的请求才会被记录(已经过去的请求补不回来),请求日志的「预览对话」也随之开始保存原始正文。上游报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "Only requests that occur after this is enabled are recorded (past requests cannot be recovered), and the \"Conversation preview\" in request logs also starts saving raw bodies. Upstream payloads are stored in the local database, keeping only the most recent 500 (the oldest are discarded when the limit is exceeded); the count is shown under \"Data → Data Storage\" → \"Debug Payloads\".", "开启后监听所有 IPv4 网卡(0.0.0.0),并不局限于局域网,也不会自动开放到公网;实际访问范围取决于网络与防火墙设置。修改后需要重启应用。": "Enabling this listens on all IPv4 interfaces (0.0.0.0), not just the LAN, but does not automatically expose the gateway to the internet. Actual access depends on your network and firewall settings. Changes require an app restart.", "开启后网关将监听所有 IPv4 网卡(0.0.0.0),访问范围不再限于本机,也不局限于局域网。是否能从公网访问取决于网络与防火墙设置。": "The gateway will listen on all IPv4 interfaces (0.0.0.0). Access is no longer limited to this machine or to the LAN. Public internet access depends on your network and firewall settings.", "开启后网关将监听所有网卡,同一局域网内的设备即可把 API 地址指向本机 IP 一起使用;管理接口从此要求管理员会话或网关 Key,转发接口在没有一把启用的 Key 时也会拒绝服务(届时会自动创建一把名为「默认」的 Key)。": "Once enabled, the gateway listens on all network interfaces, and devices on the same LAN can point the API address at this machine's IP to share it; the admin API then requires an admin session or a gateway key, and the forwarding API refuses service when no key is enabled (a key named \"Default\" is created automatically at that point).", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 套餐池(Start Plan)」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "When enabled, closing the window does not just hide it — the entire UI window is destroyed: the six resident WebView2 processes (about 200 MB of memory) exit, while gateway forwarding, scheduled check-ins and balance queries keep running in the background process, unaffected; click the tray icon to reopen the UI when needed (WebView cold start takes about 1 second). Note: while the UI is destroyed, CAPTCHA tokens for the ZCode \"Plan pool (Start Plan)\" channel are minted by the UI and cannot be replenished — requests on that channel land in the request log as 503 (with the reason), and reopening the UI restores minting automatically. This switch only matters when \"Minimize to tray on close\" is enabled; minimizing the window is unaffected.", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 活动套餐」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "Once enabled, closing the window does not merely hide it — the UI window is destroyed entirely: WebView2's six resident processes (about 200MB of memory) exit with it, while gateway forwarding, scheduled check-ins, and balance queries keep running in the background process, unaffected; to get the UI back, click the tray icon (a cold WebView start takes about 1 second). Note: while the UI is destroyed, the verification-code tokens for the \"ZCode activity plan\" channel are minted by the UI and cannot be replenished — requests going through that channel land in the request logs as 503 (with the reason stated), and reopening the UI restores them automatically. This switch only matters when \"Minimize to tray when the window is closed\" is on; minimizing the window is unaffected.", "开启后,关闭窗口会销毁界面并释放 WebView 进程,网关转发、定时签到、余额查询仍在后台继续。ZCode 模型请求免验证时不受影响;上游要求人机验证时,需要重新打开界面,在账号的「套餐明细」中主动完成验证。此开关只在「关闭窗口时最小化到托盘」开启时有意义。": "When enabled, closing the window destroys the interface and releases WebView processes. Forwarding, scheduled check-ins and balance queries continue in the background. ZCode requests exempt from verification are unaffected. If verification is required, reopen the interface and complete it in the account’s Plan details. This setting applies only when closing minimizes the app to the tray.", "开启后,新发生的请求会保存上游调试报文与下游正文,历史请求无法补录。上游调试报文只保留最近 500 条;两侧条数可在「数据 → 数据存储」查看。关闭开关不会删除已保存的报文,可在请求日志中选择「仅清空报文原文」一起清理。": "New requests save upstream debug payloads and downstream bodies after this is enabled; past requests cannot be backfilled. Only the most recent 500 upstream debug payloads are kept. Counts for both sides are shown under Data → Data storage. Turning this off does not delete saved payloads; choose Clear raw payloads only in request logs to clear both sides together.", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。": "Once enabled, the sign-in page completes verification in the browser in the background (imperceptible to a real person), while every scripted attempt must first solve a challenge — brute-forcing and mass registration become significantly more expensive. This only affects panel sign-in / registration, not the API keys used by API clients.", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。桌面端与网页端各自独立:桌面端主要服务本机与局域网,网页端(Docker / 服务端)直接暴露在网络上的登录页风险更高,建议保持开启。": "When on, the login page solves the challenge in the background (invisible to humans) while every scripted attempt must compute one first — brute force and account squatting become far more expensive. It only affects panel sign-in / registration, not API keys used by clients. Desktop and web are independent: the desktop page mostly serves this machine and the LAN, while the web page (Docker / server) is exposed to the network and benefits more from staying on.", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "When on, the gateway stores every forward's **request to the upstream** (headers + body) and the **upstream response** (status code + headers + body) locally in full, for the \"Details\" view on the request logs page. Credential fields in request headers — Authorization, Cookie, API Key, and the like — are always replaced with [redacted] and never hit the disk in plain text; request and response bodies are stored as-is (they may contain your conversations). Only the most recent 500 payloads are kept; the oldest are dropped beyond that. This is a temporary troubleshooting switch — keep it off when you don't need it.", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看;请求日志详情的「预览对话」也依赖本开关 —— 它保存的是客户端发来的请求体与网关下发的响应体(两侧各截断到 128 KiB),不开这个开关时预览对话没有数据可看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。上游报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "Once enabled, the gateway saves every forward's **request to the upstream** (request headers + request body) and **the upstream's response** (status code + response headers + response body) in full locally, for viewing under \"Details\" on the request logs page; the \"Conversation preview\" in request details also depends on this switch — it saves the client's request body and the gateway's response body (each truncated to 128 KiB), and with the switch off there is no data to preview. Credential fields in request headers such as Authorization, Cookie, and API Key are always replaced with [redacted] and never written to disk in plain text; request and response bodies are saved as-is (they may contain your conversation content). Only the most recent 500 upstream payloads are kept; older ones are discarded. This is a temporary switch for troubleshooting — turn it off when you no longer need it.", "开启后,能连接到网关的设备可通过浏览器访问网页管理面板,需使用管理员账号登录。访问范围与网关相同,并不局限于局域网。": "Devices that can reach the gateway will be able to open the web management panel in a browser and sign in with an administrator account. Its access scope is the same as the gateway's and is not limited to the LAN.", "开启后,调用方可以用专用请求头声明已登记的客户端名称。这不是身份认证,只用于日志和统计,不会获得额外权限。": "When enabled, callers can declare a registered client name using the dedicated header. This is not authentication: it only affects logs and statistics and grants no additional permissions.", "开启局域网访问": "Enable LAN Access", "开启来源声明": "Enable origin declarations", "开启网络访问": "Enable network access", "开放后,局域网内其他设备的浏览器打开本机 IP 即可进入管理面板(需管理员账号登录)。": "Once enabled, other devices on the LAN can open this machine's IP in a browser to reach the admin panel (signing in with an admin account is required).", "开机自动启动": "Launch at startup", "开源许可": "Open-source license", "开(最多 {n} 轮)": "On (up to {n} rounds)", "归属客户端": "Assigned client", "当前三段都是官方原文。": "All three blocks are currently the official text.", "当前不可用": "Currently unavailable", "当前后端不支持词表编辑与提供商范围,请更新后端后重试。": "This backend does not support editable rules or provider scope. Update the backend and try again.", "当前固定为浅色模式,不随系统变化。": "Currently fixed to Light mode; it does not follow the system.", "当前固定为深色模式,不随系统变化。": "Currently fixed to Dark mode; it does not follow the system.", "当前密码": "Current password", "当前已改过:{edited}。": "Edited so far: {edited}.", "当前形态": "Running as", "当前按 100% 显示(默认比例)。": "Currently displayed at 100% (the default).", "当前按 k / M 缩写显示(如 1.20M / 8.4k)。": "Currently shown with k / M abbreviations (e.g. 1.20M / 8.4k).", "当前按 {n}% 显示。": "Currently displayed at {n}%.", "当前按「万 / 亿」式本地量级词显示(如 1.2亿 / 8400万)。": "Currently shown with 万 / 亿-style local magnitude words (e.g. 1.2亿 / 8400万).", "当前是透传模式:存下来也不会发出,切成「替换 / 追加」之后才生效。": "Currently in Passthrough mode: saving it will not send it; it takes effect only after switching to \"Replace / Append\".", "当前显示为「1.20M / 8.4k / 1.2B」这类英文缩写。": "Currently shown with k / M / B abbreviations (e.g. 1.20M / 8.4k / 1.2B).", "当前显示为「1.2亿 / 8400万」这类中文量级。": "Currently shown as \"1.2亿 / 8400万\"-style Chinese magnitudes.", "当前样本结果:{name}": "Current sample result: {name}", "当前正在使用": "Currently in use", "当前浏览器以管理员身份登录着本面板。「退出登录」会撤销这台设备的登录会话(30 天内的自动续期一并失效),需要重新输入账号密码;其他已登录的设备不受影响。": "This browser is currently signed in to the panel as an administrator. \"Sign Out\" revokes this device's session (automatic renewals within 30 days are voided too) and the account and password must be entered again; other signed-in devices are unaffected.", "当前版本不支持品牌设置": "This version does not support brand settings", "当前环境不支持局域网访问设置": "This environment does not support LAN access settings", "当前环境不支持整库备份": "Full-database backup is not available in this environment", "当前环境不支持整库备份(仅桌面端可用)": "Full-database backup is not available here (desktop only)", "当前环境不支持整库恢复": "Full-database restore is not available in this environment", "当前环境不支持整库恢复(仅桌面端可用)": "Full-database restore is not available here (desktop only)", "当前环境不支持网络访问设置": "Network access settings are not supported in this environment", "当前环境不支持读取版本信息(桥接方法缺失)": "This environment cannot read version info (bridge method missing)", "当前生效值:{value}": "Effective value: {value}", "当前生效的正文来自{source}{file}。保存后这一份会盖过提示词文件与内置默认{note}。": "The active text comes from {source}{file}. Once saved, this copy overrides the prompt file and the built-in default{note}.", "当前界面": "Current interface", "当前管理员:{name}": "Signed in as: {name}", "当前设置已保存": "Current settings are saved", "当前跟随操作系统的深浅色设置,系统切换时界面会自动跟上。": "Currently following the operating system's light / dark setting; the UI follows along automatically when the system switches.", "当前路由内的可用视觉模型": "Available vision models in the current route", "待迁移旧数据": "Legacy data pending migration", "待配置": "Not configured", "忘记密码时无法在界面里找回:需要停掉程序后,从数据库删除管理员记录(kv 表的 panelAdmin 键),重启后按首次使用重新注册。具体命令与各形态的库文件路径见 docs 目录下的「重置管理员」文档。": "If you forget the password it cannot be recovered in the UI: stop the program, delete the administrator record from the database (the panelAdmin key in the kv table), then restart and register again as on first use. Commands and the database path for each deployment form are in the \"Reset administrator\" document under docs.", "思考等级、图片能力未知、等待上限": "Reasoning level, unknown image capability, wait limit", "恢复中…": "Restoring…", "恢复失败:{message}": "Restore failed: {message}", "恢复官方原文": "Restore Official Text", "恢复插件默认值": "Restore plugin default", "恢复整库": "Restore database", "恢复整库备份": "Restore full backup", "恢复默认": "Restore Defaults", "恢复默认 Logo": "Restore default logo", "恢复默认侧边栏": "Restore default sidebar", "恢复默认品牌": "Restore default brand", "恢复默认词表": "Restore default rules", "想回到原来那份,把这里清空再保存即可(不会删掉你配的文件路径)。": "To go back to the previous one, clear this and save (the file path you configured is not deleted).", "想要的新功能或改进想法": "A new feature or improvement you would like to see", "所有未单独配置的提供商都用这一份": "Used by every provider that is not configured individually", "所有菜单都已在这一组": "Every menu is already in this group", "手机端可管理所连接网关的账号、签到与插件,并使用提供商声明的动态登录入口;其余既有添加入口、编辑凭证和改写客户端配置仍需桌面面板。": "The mobile app manages accounts, check-in and plugins on the connected gateway and supports sign-in through providers’ declared dynamic methods. Other existing add-account entry points, credential editing and client configuration changes still require the desktop panel.", "托管网页界面": "Serves web UI", "把地址里的 your-server 与 USERNAME 换成你自己的;目录不存在时会自动创建。": "Replace your-server and USERNAME in the URL with your own; the directory is created automatically if missing.", "把整份数据库(账号、网关配置、事件日志、请求统计、调试报文与桌面设置)导出成一个 SQL 文件,恢复时整体替换本机全部数据 —— 与上面「账号导入 / 导出」的逐条合并是两种语义:恢复会连配置、日志与当前启用状态一起换成备份那台机器的状态。导出默认包含日志与调试报文(文件可能很大),不需要时可以取消勾选只备业务数据。恢复前会自动把当前数据备份到配置目录的 backups/ 下,恢复后需要重新登录管理面板。": "Exports the entire database (accounts, gateway config, event logs, request stats, debug payloads, desktop settings) into one SQL file; restoring wholesale-replaces all local data. This is a different semantic from the \"Account import / export\" above, which merges item by item: a restore swaps config, logs, and enabled states to whatever the backup machine had. The export includes logs and debug payloads by default (the file can be large); uncheck to back up business data only. Before a restore, the current data is automatically backed up to backups/ under the config directory, and you will need to log in to the panel again afterwards.", "把整次请求交给视觉模型,由它直接回答,不再回到原模型。": "The whole request goes to the vision model, which answers directly instead of the original model.", "把菜单移入 {name}": "Move a menu into {name}", "把菜单移入「{name}」": "Move a menu into \"{name}\"", "把账号、网关配置、自定义提供商、Agent 配置、代理池 / 订阅、签到与余额记录同步到 WebDAV 或 S3 兼容存储,换台机器后一键取回。事件日志、请求明细、调试报文与面板登录态不在同步范围内(它们是本机的运行痕迹)。上传的账号凭证仍是加密形态,解密用的账号密钥由「同步密码」单独加密后一并上传 —— 同步密码不会保存到云端,换机下载时需要重新输入。": "Sync accounts, gateway configuration, custom providers, Agent profiles, proxy pool / subscriptions, and check-in and balance records to WebDAV or S3-compatible storage, then pull them back on another machine in one click. Event logs, request details, debug payloads and panel login state are out of scope (they are this machine's runtime traces). Uploaded account credentials stay encrypted; the account key that decrypts them is itself encrypted with the sync password and uploaded alongside — the sync password is never stored in the cloud, so you must re-enter it when restoring on another machine.", "把路径里的主目录显示成 ~,截图分享时不暴露用户名": "Shows the home directory in paths as ~ so screenshots do not reveal your username", "把路径里的主目录(如 C:\\Users\\你的用户名)显示成 ~,截图分享时不暴露用户名。只影响本页显示与复制,不改任何文件。": "Shows the home directory in paths (e.g. C:\\Users\\your-name) as ~ so screenshots do not reveal your username. Only affects this page and its copied text; no files are changed.", "报表天数": "Report Days", "报表页的热力图与按天趋势,默认 99999 天(近似全量保留),可填 1–99999 天。": "The heatmap and daily trends on the Reports page. Defaults to 99999 days (about 274 years — kept in full for practical purposes); range 1–99999 days.", "拖动分组 {name}": "Drag group {name}", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "Drag the ⠿ handle to reorder (menus can move across groups); use the switches to show or hide; click a group name to rename it; the + on a group header moves another menu into it; the eye button hides a whole group. Changes apply instantly and are remembered — the sidebar on the left is the result. Keyboard: focus a handle and press Alt+↑ / ↓.", "拖动菜单 {name}": "Drag menu {name}", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "Drag to reorder groups (Alt+↑ / ↓ also works)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "Drag to reorder, across groups too (Alt+↑ / ↓ also works)", "指定备选仍受当前请求权限和路由范围限制,路由组请求不会跳到组外。不会转为辅助识图继续。": "Designated fallbacks remain subject to the current permissions and route scope. Route-group requests never leave the group. This mode never falls back to assisted image reading.", "指定提供商": "Selected providers", "指定角色": "Selected roles", "指定错误码直接换号": "Switch Accounts on Specified Error Codes", "指纹脱敏": "Fingerprint sanitizing", "指纹脱敏会在转发前按词表顺序改写请求消息中的文本,包括对话内容、思考内容和工具调用参数。默认词表包含客户端模板句与计费表头的精确替换、正则删除规则,可以新增、编辑、删除、启停和调整顺序;替换内容留空表示删除匹配内容。默认应用全部提供商,也可指定多家。改动只作用于发给上游的副本,响应内容不变。编辑后点击「保存设置」,下一次请求生效;清空词表表示不做任何指纹改写,恢复默认只重置词表。": "Before forwarding, fingerprint masking applies rules in list order to message text, including conversation content, reasoning content and tool-call arguments. The default rules contain exact replacements and regular-expression deletions for client templates and billing headers. You can add, edit, delete, enable, disable and reorder rules; an empty replacement deletes the matched text. All providers are selected by default, or you can select specific providers. Only the outbound copy is modified; responses are unchanged. Click Save settings to apply changes to the next request. An empty rule list performs no fingerprint rewriting, and restoring defaults resets only the rules.", "指纹脱敏设置仅本次运行生效,写入数据库失败,请检查配置目录": "Fingerprint masking settings apply only to this run. Database writing failed; check the configuration directory.", "指纹脱敏设置已刷新": "Fingerprint masking settings refreshed", "按下面两块设置处理图片;关闭后设置全部保留。": "Images are handled by the two blocks below; turning this off keeps all of the settings.", "按列表自上而下匹配,位于来源声明之后、内置规则之前;可用于给难认的标识钉规则。": "Matched top-down in list order, after caller declarations and before builtin rules; use it to pin hard-to-recognize clients.", "按原文精确匹配,区分大小写;不会自动去掉首尾空白。": "Matches the exact text, case-sensitively. Leading and trailing whitespace is preserved.", "按天聚合保留天数": "Daily aggregate retention (days)", "按指定备选顺序尝试": "Try designated fallbacks in order", "按提供商查看和调整专属选项": "View and adjust provider-specific options", "按提供商筛选设置": "Filter settings by provider", "按提供商管理专属选项,作用于当前网关中该提供商的所有账号。": "Manage provider-specific options. Changes apply to all accounts for that provider on the current gateway.", "按提供商配置": "Per-Provider Configuration", "按每条请求的软件标识识别客户端,不依赖 API Key。规则修改只影响新请求,内置规则随软件更新,自定义规则参与备份与云同步。": "Identify each request by its software identifiers, independently of API keys. Rule changes affect new requests only. Built-in rules update with the app; custom rules are included in backups and cloud sync.", "换一台服务器": "Switch server", "排队等待": "Queueing", "排队等待次数": "Queue Wait Count", "排队等待秒数": "Queue Wait Seconds", "排队等待设置已刷新": "Queueing settings refreshed", "接入": "Access", "接受调用方来源声明": "Accept caller origin declarations", "接管回答的模型": "Model that takes over the answer", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "Choose which menus the sidebar shows, in what order, and how they are grouped. Hiding only affects navigation — it does not revoke access, and hidden pages can still be opened by URL.", "控制报表与请求日志里 Token 读数的写法:开启后按「万 / 亿」式的本地量级词显示(简体为万 / 亿,繁体为萬 / 億,日文为万 / 億,韩文为만 / 억),关闭则用 k / M 缩写(与上游文档、接口字段的写法一致)。英文 / 葡语的本地量级词就是 k / M,这项对它们没有区别。只影响显示口径,不改变任何统计与存储的数值。": "Controls how Token counts are written in reports and request logs: when on, values are shown with 万 / 亿-style local magnitude words (万 / 亿 in Simplified Chinese, 萬 / 億 in Traditional Chinese, 万 / 億 in Japanese, 만 / 억 in Korean); when off, k / M abbreviations are used (matching how upstream docs and API fields write them). For English / Portuguese the local magnitude words are k / M, so this makes no difference to them. This only affects how values are displayed; no statistics or stored numbers change.", "控制报表与请求日志里 Token 读数的写法:开启后按中文量级显示(1.2亿 / 8400万),关闭则用 k / M / B 缩写(与上游文档、接口字段的写法一致)。这只影响显示口径,不改变任何统计与存储的数值。": "Controls how token counts read in reports and request logs: on shows Chinese magnitudes (1.2亿 / 8400万), off uses k / M / B abbreviations (consistent with upstream docs and API fields). This only changes the display; no statistics or stored numbers are affected.", "控制界面的深浅色,与左侧边栏底部的三个主题按钮是同一个设置(改哪一处,另一处立刻跟上)。「跟随系统」会随操作系统当前的浅色 / 深色自动切换,并在系统主题变化时即时跟上;选「浅色」或「深色」则把界面固定在该模式,不再随系统变化。窗口标题栏的深浅色会一并同步,不会出现深色界面配一条浅色标题栏的情况。": "Controls the UI's light / dark colors; it is the same setting as the three theme buttons at the bottom of the left sidebar (change either one and the other follows immediately). \"System\" switches automatically with the operating system's current light / dark setting and follows changes as they happen; choosing \"Light\" or \"Dark\" pins the UI to that mode regardless of the system. The window title bar's light / dark color stays in sync too, so you never end up with a dark UI under a light title bar.", "提供商与模型": "Provider and model", "提供商专属设置": "Provider-specific settings", "提供商当前不可用,未保存的修改已保留;恢复插件后可继续编辑。": "The provider is unavailable. Unsaved edits are kept; restore the plugin to continue editing.", "提供商设置已保存": "Provider settings saved", "提供商设置返回格式无效,请刷新后重试": "The provider settings response is invalid. Refresh and try again.", "提建议": "Make a Suggestion", "提示词文件": "Prompt File", "提示词文件已更新": "Prompt file updated", "提示词正文": "Prompt Text", "提示词正文已更新": "Prompt text updated", "插件或设置已变化,请放弃修改并刷新后重新编辑。": "The plugin or settings changed. Discard your edits and refresh before editing again.", "操作系统": "Operating system", "支持 .a2ab 加密备份和旧 .sql 文件;旧 SQL 不包含恢复密钥,跨机器导入仍需原机密钥。": "Supports encrypted .a2ab backups and legacy .sql files. Legacy SQL does not include recovery keys, so another machine still needs the original keys.", "支持 PNG、JPG、WebP,最大 2 MiB、4096 × 4096 像素;自动缩小至 512 像素以内,建议使用正方形图片。": "Supports PNG, JPG and WebP up to 2 MiB and 4096 × 4096 pixels. Images are resized to fit within 512 pixels. Square images are recommended.", "改动仍保存在本机,修复网络或凭据后下一次改动会自动重试,也可以手动点「上传到云端」。": "Your changes are still saved locally. After fixing the network or credentials, the next change retries automatically, or click \"Upload to cloud\" manually.", "改动仍保存在本机,系统会延长等待并自动重试;修复网络或凭据后,也可以手动点「上传到云端」。": "Your changes remain saved locally. The system will retry automatically with a longer delay. After fixing the network or credentials, you can also select \"Upload to cloud\" manually.", "改完立即生效,不用重启(下一个请求就用新模式)。降级是自动的临时状态,解除后本模式自己的提示词立刻恢复。": "Takes effect immediately after the change, no restart needed (the next request uses the new mode). The fallback is an automatic temporary state; once cleared, this mode's own prompt is restored immediately.", "放大或缩小整个界面(文字与控件一起变),效果与浏览器 Ctrl +/- 相同:共 11 档,立即生效并记住。": "Zoom the whole interface in or out (text and controls scale together), equivalent to Ctrl +/- in a browser: 11 steps, applied immediately and remembered.", "放弃修改并刷新": "Discard edits and refresh", "数据": "Data", "数据保留": "Data Retention", "数据保留设置已刷新": "Data retention settings refreshed", "数据存储": "Data Storage", "数据库 schema": "Database schema", "数据库不可用": "Database unavailable", "数据库与恢复密钥一起加密保存。密码不会保存在应用或备份中,忘记后无法恢复,请妥善保管。": "The database and recovery keys are encrypted together. The password is not stored in the application or backup. Keep it safe: without it, restoration is impossible.", "数据库主文件与 WAL 文件的总占用,与请求日志清理弹窗采用同一口径;清理后可压缩数据库回收空闲空间。": "Total size of the database main file and WAL file, using the same calculation as the request cleanup dialog. After clearing data, vacuum the database to reclaim unused space.", "数据库文件": "Database file", "数据目录": "Data directory", "数据统一保存在配置目录下的 agent2api.db;如需更换位置,请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "Data is kept in agent2api.db in the configuration directory; to change the location, set the AGENT2API_PROXY_HOME environment variable and restart the app.", "整体替换": "wholesale-replaced", "整库备份 / 恢复": "Full-database backup / restore", "整次请求交给 {model} 直接回答,不再回到原模型。": "The whole request goes to {model}, which answers directly instead of the original model.", "新分组名": "New group name", "新增 {added} 个、更新 {updated} 个{suffix}{note}": "{added} added, {updated} updated{suffix}{note}", "新增脱敏规则": "Add masking rule", "新增规则": "Add rule", "新安装和升级后默认关闭。先配置再开启,关闭后保留配置。": "Off by default for new installations and upgrades. Configure before enabling; disabling keeps your settings.", "新密码": "New password", "新密码不能与当前密码相同": "New password must differ from the current one", "新密码至少 8 位": "Password must be at least 8 characters", "新建分组": "New group", "新建客户端分类": "New client category", "无效或重复的标识请求头:{headers}": "Invalid or duplicate identity headers: {headers}", "无法读取品牌设置": "Could not read brand settings", "无法读取图片,请重新选择": "Could not read the image. Select it again.", "日志与请求日志同时受保留天数和数量上限限制。日志默认 30 天、10000 条,各级别按比例保留;调试详情最多保留 3 天。请求日志默认 99999 天、1000000 条(100 万),超出后从最旧的记录开始清理,并同步删除对应原始正文。按天聚合默认 99999 天,只按天数保留,不受请求日志数量清理影响。天数可填 1–99999,数量可填 1–100000000。调小任一设置并确认后立即清理,且不可恢复。": "Logs and request logs are limited by both retention days and record count. Logs default to 30 days and 10,000 records, with capacity allocated proportionally by level; debug details are kept for at most 3 days. Request logs default to 99999 days and 1,000,000 records; excess records are removed oldest first together with their raw bodies. Daily aggregates default to 99999 days and are limited only by days; request log count cleanup does not affect them. Days accept 1–99999 and counts accept 1–100000000. Lowering any setting and confirming immediately removes excess data, which cannot be recovered.", "日志保留数量上限": "Log record limit", "日志文件": "Log file", "日语": "Japanese", "显示 {name}": "Show {name}", "显示分组 {name}": "Show group {name}", "显示名称": "Display name", "显示名称最多 64 个字符": "The display name can contain up to 64 characters", "显示模式": "Theme", "显示这一组": "Show this group", "暂无可编辑的提供商设置": "No editable provider settings", "暂无自定义规则,正在使用内置识别。也可以从请求详情直接添加规则。": "No custom rules; built-in identification is active. You can also add a rule from request details.", "暂未获取到本机访问地址,请使用其他设备能连接到的本机 IP 与网关端口。": "The local access address is not available yet. Use this machine's IP and gateway port that the other device can reach.", "更新": "Update", "更新出网线路": "Update egress route", "更新通道": "Update channel", "替换": "Replace", "替换 = 客户端 system / developer 消息全部删掉,换成网关的提示词;追加 = 保留客户端内容,只在开头 system 块之后多插一条。两者都只改发给上游的副本,客户端看到的响应不变。": "Replace = delete all client system / developer messages and substitute the gateway's prompt; Append = keep the client's content and just insert one extra prompt after the leading system blocks. Both only change the copy sent upstream; the response the client sees is unchanged.", "替换为网关提示词": "Replace with gateway prompt", "替换内容": "Replacement text", "替换内容最多 {max} 个字符": "Replacement text must not exceed {max} characters", "替换前会自动把当前数据备份到配置目录的 backups/ 文件夹。": "Before the replace, the current data is automatically backed up to the backups/ folder under the config directory.", "替换并恢复": "Replace and restore", "最多 64 个字符,留空恢复为 Agent2API。": "Up to 64 characters. Leave blank to restore Agent2API.", "最小自动上传间隔": "Minimum automatic upload interval", "最近 {window} 条请求中,{scanned} 条有识别依据,{matched} 条符合条件,{applied} 条会采用本规则。": "Of the latest {window} requests, {scanned} have evidence, {matched} match, and {applied} would use this rule.", "有未保存的修改": "There are unsaved changes", "有未保存的改动:保存后才能同步(测试连接不受影响)。": "Unsaved changes: save first to sync (testing the connection is unaffected).", "有近期套餐池请求时读取库存状态的间隔,默认 2500 毫秒,可填 1000–30000。没有近期请求时降低读取频率,轮询不会发起验证码。": "Stock polling interval while Start Plan requests are recent: 2500 ms by default, from 1000 to 30000. Polling slows down when idle and never triggers verification.", "服务商": "Provider", "服务器地址": "Server URL", "服务端密钥加密保存,不会返回浏览器;切回 ALTCHA 后会保留,方便再次启用。": "The secret key is stored encrypted and never returned to the browser. It is kept when switching back to ALTCHA so you can enable Turnstile again later.", "服务端密钥(Secret Key)": "Secret Key", "期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "While this mode is on, its own prompt is not sent; lift it as soon as your prompt is fixed.", "未保存": "Unsaved", "未匹配已知客户端": "No known client matched", "未单独配置:模式、提示词文件与正文都跟随上面的全局配置(当前「{mode}」)。": "Not configured individually: mode, prompt file, and text all follow the global configuration above (currently \"{mode}\").", "未启用": "Disabled", "未开启轻量模式:关窗仅隐藏窗口,界面进程常驻内存,随时打开不等待": "Lightweight mode off: closing the window only hides it, the UI process stays in memory, and it opens instantly", "未开启,developer 角色消息会原样发往上游,不认识该角色的上游会报错(400)。": "Off: developer-role messages are sent upstream as-is; upstreams that do not know the role return an error (400).", "未开启,客户端 system 模板会原样发往上游,可能被内容审核误拦(400)。": "Off: client system templates go upstream as-is and may be falsely blocked by content review (400).", "未开启,浏览器跨域无法直连网关。": "Off: browsers cannot reach the gateway cross-origin.", "未开启,转发时不保存任何原始报文。": "Off: no raw payloads are saved while forwarding.", "未开启:网关只监听 127.0.0.1,仅本机可以访问。": "Off: the gateway listens only on 127.0.0.1 and is reachable only from this machine.", "未注册": "Not registered", "未注册闸门": "Unregistered gate", "未知原因": "Unknown reason", "未知来源": "Unknown source", "未知设备": "Unknown device", "未知账号": "Unknown account", "未能读取 Cline 伪装头设置,请稍后重试": "Could not read the Cline spoofed header settings. Please try again later.", "未能读取 models.dev 元数据状态,请稍后重试": "Could not read the models.dev metadata state. Please try again later.", "未能读取云同步设置,请稍后重试。": "Could not read cloud sync settings. Please try again later.", "未能读取保存后的指纹脱敏设置": "Could not read the saved fingerprint masking settings", "未能读取开发者角色兼容设置,请稍后重试": "Could not read the developer role compatibility setting, please try again later", "未能读取指纹脱敏设置,请稍后重试": "Could not read the fingerprint masking settings. Please try again later.", "未能读取机器人校验设置": "Could not read bot verification settings", "未能读取第三方模型回答完自动折叠过程设置,请稍后重试": "Could not read the third-party reasoning collapse setting, please try again later", "未能读取系统提示词设置,请稍后重试": "Could not read the system prompt settings. Please try again later.", "未能读取网关跨域访问设置,请稍后重试": "Could not read the gateway CORS settings. Please try again later.", "未能读取网络访问设置,请稍后重试": "Could not load network access settings. Please try again later.", "未能读取调试模式设置,请稍后重试": "Could not read the debug mode settings. Please try again later.", "未能读取账户信息,请稍后重试": "Could not read account information, please try again later", "未采用本规则,请检查开关、来源声明或规则顺序": "This rule was not used. Check its switch, caller declarations, or rule order.", "本地账号、配置、签到与余额记录变化后自动上传(合并 1 秒内的连续改动,最长 10 秒传一次;内容没变时不发请求)。": "Automatically upload after local account, configuration, check-in and balance record changes (changes within 1 second are merged, at most one upload every 10 seconds; no request is sent when nothing changed).", "本机 API 地址": "This device's API address", "本机 APK 版本": "Local APK version", "本机全部数据会被备份整体替换,恢复前自动保留安全备份,完成后需要重新登录管理面板。本机已有密钥不会被覆盖。": "All local database data will be replaced. A safety backup is saved first, and you must sign in again afterward. Existing local keys will not be overwritten.", "本机应用版本": "Local app version", "本机界面版本": "Local UI version", "本机的业务数据(账号、配置、Agent 配置、代理池 / 订阅、签到与余额记录)将上传并": "This machine's business data (accounts, configuration, Agent profiles, proxy pool / subscriptions, check-in and balance records) will be uploaded and", "本机的全部数据(账号、网关配置、日志统计与桌面设置)将被所选备份文件": "All data on this machine (accounts, gateway config, log stats, and desktop settings) will be ", "本机的账号、网关配置、Agent 配置、代理池 / 订阅、签到与余额记录将被远端快照": "This machine's accounts, gateway configuration, Agent profiles, proxy pool / subscriptions, and check-in and balance records will be replaced by the remote snapshot", "本次无需刷新": "No refresh needed this time", "本软件不提供任何担保,可按 AGPL-3.0 修改与分发;通过网络提供修改版服务时须向用户提供对应源码。": "This software comes without warranty and may be modified and distributed under AGPL-3.0. Modified network services must offer their Corresponding Source to users.", "本项目的 AGPL-3.0 许可不替代这些第三方许可。名称与标识的商标权归各自权利人所有。": "This project's AGPL-3.0 license does not replace these third-party licenses. Trademark rights in names and logos belong to their respective owners.", "机器人校验": "Captcha", "机器人校验设置已保存": "Bot verification settings saved", "条数": "Record count", "来源声明当前关闭,这条规则不会生效。请先在客户端识别设置中开启。": "Caller declarations are disabled, so this rule will not apply. Enable them in client identification settings first.", "来源声明无效或未登记,本次已忽略。": "The origin declaration was invalid or unregistered and was ignored.", "来源声明未启用,本次已忽略。": "Origin declarations are disabled and were ignored.", "来源版本": "Source revision", "来源设备:{device}": "Source device: {device}", "来自 {device},生成于 {time}": "From {device}, created at {time}", "架构": "Architecture", "查看内置客户端({n})": "View built-in clients ({n})", "查询管理员状态失败:{message}": "Failed to check admin status: {message}", "校验身份:这三段必须各自成块排在最前(实测:三段并成一段会被回 405 / 3012)。因此这里按段编辑,不能合成一段。改过的段以你的文本为准,没改的段继续用官方原文;清空某一段 = 那一段恢复官方原文。": "for identity: the three blocks must each be a separate block placed at the very top (measured: merging the three into one returns 405 / 3012). So they are edited per block here; they cannot be merged into one. Edited blocks use your text; unedited blocks keep the official text; clearing a block reverts that block to the official text.", "桌面端": "Desktop app", "桌面端登录 / 注册验证": "Desktop sign-in / registration verification", "桌面端:登录 / 注册需要 ALTCHA 人机验证": "Desktop: sign-in / registration requires ALTCHA proof-of-work", "桌面端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "Desktop: sign-in / registration requires ALTCHA proof-of-work (in use now)", "桌面运行时不可用,暂时无法保存": "Desktop runtime unavailable; cannot save right now", "档案": "Profile", "检测中…": "Checking…", "概览": "Overview", "模型不能直接看图时,按你选择的方式处理。原生支持图片的请求直接转发,不增加识图调用。": "When a model cannot read images, use your selected mode. Native image-capable requests pass through without an extra vision call.", "模型单独配置": "Per-model overrides", "模型目录没写明是否支持图片时按这里处理。": "Used when the model catalog does not say whether images are supported.", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。下面两块分别选好「哪些模型」和「用哪只模型」即可;没配到的模型、以及本来就能看图的模型,一律原样放行。这里的改动立即生效,不需要保存。": "A model that cannot read images has only two options: let another model read the image for it, or hand the whole request to a model that can. Choose the models and the vision model in the two blocks below. Anything not covered here — including models that already read images — passes through untouched. Changes here take effect immediately; there is nothing to save.", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。没配到的模型、以及本来就能看图的模型,一律原样放行;每个请求只用其中一种方式,不会两种串着做,处理失败也不会改走另一种。改动立即生效,不需要保存。": "A model that cannot read images has only two options: let another model read the image for it, or hand the whole request to a model that can. Anything not covered here — including models that already read images — passes through untouched. Each request uses exactly one of the two ways; they are never chained, and a failure does not fall back to the other. Changes take effect immediately; there is nothing to save.", "模型请求是否需要验证码由 ZCode 上游配置决定,领取验证与模型请求免验证分别处理。后台只检查配置和库存,不自动运行验证码或弹出拼图;需要验证时,在账号的「套餐明细」中点击「开始验证」。验证令牌一次性使用,短时间内过期,失败或取消后不会自动重试。": "ZCode upstream settings determine whether model requests need verification, independently of plan claims. The background only checks settings and stock; it never runs verification or opens a puzzle automatically. Start required verification in the account’s Plan details. Tokens are single-use, expire shortly, and are not retried automatically after failure or cancellation.", "模式": "Mode", "模式改为「{mode}」": "Mode changed to \"{mode}\"", "次": "times", "次日 00:00": "00:00 the next day", "正则表达式": "Regular expression", "正在保存上游原始报文:": "Saving raw upstream payloads:", "正在修改…": "Changing…", "正在剥离出站请求里的审核指纹:表头键值整段删除,模板句最小改写。": "Stripping review fingerprints from outbound requests: header key/value pairs are deleted entirely, and template sentences get minimal rewrites.", "正在安装…": "Installing…", "正在应答跨源请求:浏览器跨域请求可直连 /v1/*。": "Answering cross-origin requests: browsers can reach /v1/* directly cross-origin.", "正在归一角色:developer 角色消息转发前改写为 system。": "Normalizing roles: developer-role messages are rewritten to system before forwarding.", "正在注册…": "Registering…", "正在联网更新": "Updating online", "正在读取提供商设置…": "Loading provider settings…", "正式版": "Stable", "每个请求只会用到其中一种方式,不会两种串着做;处理失败也不会改走另一种。配了哪只视觉模型,那次请求的图片就会交给它。": "Each request uses exactly one of the two ways; they are never chained and a failure does not fall back to the other. Whichever vision model is configured is the one that receives the images for that request.", "每条请求轮换到下一个可用账号;新会话交给当前最闲的那位。适合想把手里的号摊开用、不让某一个一直扛。": "Rotates to the next usable account on every request; a new session goes to whoever is least busy. For spreading usage across accounts instead of letting one carry everything.", "每条请求都重新按策略选路 —— 行为与「关闭」一致,仅保留会话识别的记录。": "Every request is routed by strategy from scratch — same behavior as \"Off\", only the session records are kept.", "每次等待的时长,默认 0 = 跟随上游建议(实测 9~30 秒,上游没给建议时用 15 秒)。可填 0–120 秒强制一个固定时长。": "Duration of each wait. Default 0 = follow the upstream's suggestion (measured 9–30 seconds; 15 seconds when the upstream gives none). Accepts 0–120 seconds to force a fixed duration.", "每行一个域名,不填协议、端口或路径;与 Cloudflare 中的配置一致,服务端按完整域名匹配。手机 App 使用所连接网关的域名。": "Enter one hostname per line, without a scheme, port or path. Match your Cloudflare configuration; the server requires an exact hostname match. The mobile app uses the connected gateway's hostname.", "毫秒": "ms", "沟通方式 / 上下文管理 + Environment 段。": "The communication style / context management + Environment block.", "没有可导出的账号": "No accounts to export", "没有可用视觉模型时": "When no vision model is available", "没有已确认支持图片的模型,请先在模型管理中确认。": "No model is confirmed to support images. Confirm its capability in Model Management first.", "没能读到「{label}」的当前值,改为 {count} 条可能会删除超出的历史数据。": "Could not read the current value of \"{label}\". Setting it to {count} records may delete excess historical data.", "没能读到「{label}」的当前值,改为 {days} 天可能会删除超出的历史数据。": "Could not read the current value of \"{label}\"; changing it to {days} days may delete excess historical data.", "沿用对应方式的视觉模型配置,不额外维护一份模型列表。": "Reuse the vision configuration for that mode; no separate model list is needed.", "沿用工具服务的视觉分析模型": "Reuse the tool service's vision analysis model", "沿用工具服务的视觉分析模型(未配置)": "Vision model from the tool service (not configured)", "注册并开启": "Register & Enable", "注册管理员账号": "Register Admin Account", "注意:这一家的「网关自带」开关现在是关的,改过的正文要等开关打开才生效。": "Note: this provider's \"Gateway-Provided Prompt\" switch is currently off; edited text takes effect only after the switch is turned on.", "流式响应相邻数据之间允许的最大空闲时间(秒),收到新数据后重新计时,默认 300 秒,范围 1~3600。": "Maximum idle time allowed between adjacent chunks of a streaming response (seconds); the timer restarts on each new chunk. Default 300 seconds, range 1–3600.", "流式响应空闲超时": "Stream Idle Timeout", "测试连接": "Test connection", "浏览器 / PWA": "Browser / PWA", "浏览器只在 https 或 localhost 下提供离线缓存;局域网 http 访问不影响正常使用": "Browsers only offer offline caching over https or localhost. Accessing over plain http on the LAN still works normally.", "浏览器在本地完成计算,不需要第三方密钥,也不依赖外部验证服务。": "The browser performs the computation locally. No third-party keys or external verification service are required.", "浏览器标签页": "Browser tab", "浏览器面板": "Browser panel", "消息角色": "Message roles", "添加备选模型": "Add fallback model", "添加提供商": "Add Provider", "添加提供商…": "Add provider…", "添加自定义头": "Add Custom Header", "添加要单独配置的提供商": "Add a provider to configure individually", "清除本机凭证": "Clear local credentials", "清除这里的正文": "Clear Text Here", "源代码": "Source code", "点下面的入口会用系统默认浏览器打开 GitHub 的对应表单(需要 GitHub 账号,模板已预设好,填完直接提交即可)。": "The entries below open the matching GitHub form in your system's default browser (a GitHub account is required; the template is preset, so just fill it in and submit).", "点击重命名": "Click to rename", "点此添加或切换服务器": "Tap to add or switch servers", "点此添加服务器": "Tap to add a server", "版本": "Version", "版本信息": "Version info", "版本信息 · 所连网关环境": "Version info · connected gateway", "版权声明": "Copyright notice", "状态码 {code} 已在名单里": "Status code {code} is already in the list", "状态码必须是 {min}–{max} 的整数(收到: {text})": "Status code must be an integer from {min} to {max} (received: {text})", "环境": "Environment", "生成时间:{time}": "Created at: {time}", "生效顺序:有效的来源声明优先,然后按顺序匹配自定义规则,最后使用内置规则。中转丢失原始标识时,无法自动推断背后的软件。": "Priority: valid origin declaration, custom rules in order, then built-in rules. If a relay removes the original identifier, the original software cannot be inferred automatically.", "用 models.dev 补齐上游没声明的模型能力与思考档位(联网刷新,内嵌快照始终生效)": "Fill in model capabilities and reasoning levels the upstream never declares, using models.dev (refreshed online; the bundled snapshot always applies)", "用于加密上云的账号密钥。请自己记牢 —— 它不保存到云端,换机下载时必须输入同一个密码,否则账号数据无法解密。": "Used to encrypt the account key that goes to the cloud. Remember it — it is not stored in the cloud, and you must enter the same password when restoring on another machine, otherwise the account data cannot be decrypted.", "用哪只模型识图": "Which model reads the image", "用浏览器菜单里的「添加到主屏幕」把这一页装成 App:全屏打开、没有地址栏,和原生应用一样。": "Use \"Add to Home Screen\" in the browser menu to install this page as an app: full screen, no address bar, just like a native app.", "由 Cloudflare 提供验证,需要浏览器与网关均能连接 Cloudflare。验证失败或服务不可用时不会自动放行。": "Verification is provided by Cloudflare. Both the browser and gateway must be able to reach Cloudflare. Failed verification or an unavailable service will not allow access.", "由 {source} 覆盖,手动设置暂不生效": "Overridden by {source}; the manual setting is not currently active", "界面缩放": "Interface Zoom", "界面缩放比例": "Interface Zoom Level", "界面语言": "Interface Language", "界面语言。可选简体中文、繁體中文、English、日本語、한국어、Português (Brasil),或「跟随系统」(按浏览器 / 系统的语言列表自动选)。切换后整页立即刷新;该偏好只存在本机(localStorage),不影响账号、密钥与转发。": "Interface language. Choices: 简体中文, 繁體中文, English, 日本語, 한국어, Português (Brasil), or System (picked automatically from the browser / system language list). Switching reloads the whole page immediately; the preference is stored only on this machine (localStorage) and does not affect accounts, keys, or forwarding.", "界面语言只保存在本机(localStorage)。切换后整页立即刷新,不影响账号、密钥与转发。": "The interface language is stored only on this machine (localStorage). Switching reloads the whole page immediately and does not affect accounts, keys, or forwarding.", "界面里编辑的正文": "the text edited in the UI", "留空 = 用内置默认提示词": "Leave empty = use the built-in default prompt", "留空使用 AWS 官方地址": "Leave blank to use the official AWS address", "留空使用默认": "Leave blank to use the default", "留空表示删除匹配内容;替换内容按原文写入,$ 不作为捕获组引用。": "Leave empty to delete matched text. Replacement text is inserted literally; $ is not a capture-group reference.", "登录 / 注册需要通过 ALTCHA 人机验证(工作量证明)": "Require ALTCHA human verification (proof of work) for sign-in / registration", "登录 / 账号切换 / 429 切换等系统事件,可填 1–99999 天。": "System events such as sign-ins, account switches, and 429 switches. Range: 1–99999 days.", "登录 Agent2API": "Sign in to Agent2API", "登录 {name}": "Sign in to {name}", "登录人机验证": "Login CAPTCHA", "百分比类读数(如 OpenCode Go、Antigravity)不能相加,组头显示的是组内最低剩余比例。": "Percentage readings (such as OpenCode Go or Antigravity) cannot be summed; the band shows the group's lowest remaining percentage.", "监听地址": "Listen address", "目前展示仓库已登记的图标来源许可,不代表完整的第三方依赖清单。": "This list contains the icon source licenses currently recorded in the repository, not a complete inventory of third-party dependencies.", "目标路径:{path}": "Target path: {path}", "直接按上面的设置兼容": "Apply the settings above right away", "直接按当前方式兼容": "Apply the selected mode directly", "知道了": "Got it", "确定": "Confirm", "确定后加入当前草稿,点击「保存设置」才会生效。": "Confirm adds the rule to the draft. Click Save settings to apply it.", "确定继续?": " Continue?", "确认上传": "Confirm upload", "确认图片处理授权": "Confirm image processing consent", "确认备份密码": "Confirm backup password", "确认并保存": "Confirm and save", "确认新密码": "Confirm new password", "确认缩减数据保留": "Confirm reduced data retention", "确认缩短保留天数": "Confirm Shorter Retention", "社区与支持": "Community & support", "离线缓存未启用": "Offline cache is off", "积分合计只统计当前筛选出来的账号": "Only sum accounts visible under the current filter", "移入「{name}」": "Move into \"{name}\"", "程序路径": "Executable path", "空 = 不要这一份,回落提示词文件 / 内置默认提示词。": "Empty = do not keep this copy; falls back to the prompt file / built-in default prompt.", "空分组 · 点组头的 + 把菜单移进来": "Empty group · use + on the header to move menus in", "立即解除": "Clear Now", "站点密钥(Site Key)": "Site Key", "第一段": "Block 1", "第一段(身份句)": "Block 1 (identity sentence)", "第三方应用密码": "App-specific password", "第三方开源许可": "Third-party open-source licenses", "第三方模型回答完自动折叠过程": "Collapse third-party model work after the answer", "第三方模型回答完自动折叠过程设置已刷新": "Third-party reasoning collapse setting refreshed", "第三段": "Block 3", "第三段(动态段)": "Block 3 (dynamic block)", "第二段": "Block 2", "第二段(稳定段)": "Block 2 (stable block)", "等待响应超时": "Response Headers Timeout", "等待期间请求日志的状态列会显示「排队中」阶段,详情弹窗的「内部重试」里能逐次看到等待时长;等待用尽后返回 HTTP 503(不是 401/429:既不会刷新凭证,也不会把账号标成限额)。": "While waiting, the status column in the request logs shows a \"Queueing\" phase, and the \"Internal Retries\" section of the detail dialog lists each wait duration; when the waits run out, HTTP 503 is returned (not 401/429: credentials are not refreshed and the account is not marked as rate-limited).", "等比放大或缩小整个界面(文字、控件、间距一起变),效果与浏览器按 Ctrl +/- 相同:80%–130%、5% 一档。窗口本身不缩放,变的是页面内容的显示比例,设置立即生效并记住,下次启动直接按这个比例打开。放得越大可视范围越小,窗口较窄或表格较宽时不建议调得太大。": "Zoom the whole interface proportionally (text, controls, and spacing scale together), equivalent to Ctrl +/- in a browser: 80%–130% in 5% steps. The window itself does not resize — what changes is the page content's display scale; the setting applies immediately and is remembered, so the next launch opens at this scale. The larger the scale, the less you can see at once; with a narrow window or wide tables, do not set it too high.", "简体中文": "Simplified Chinese", "管理员已注册": "Admin registered", "管理员账号": "Administrator account", "管理插件": "Manage plugins", "精确文本": "Exact text", "系统提示词模式": "System Prompt Mode", "系统提示词设置已刷新": "System prompt settings refreshed", "累计请求": "Total requests", "繁体中文": "Traditional Chinese", "约 {n} 字符": "approx. {n} characters", "结构": "structure ", "给 Codex 的响应补阶段标记,回答完后像官方模型一样把推理与命令过程折叠起来": "Add phase markers to Codex responses so reasoning and commands collapse after the answer, like official models", "继续并清理": "Continue & Clean Up", "编辑提示词正文 · {label}": "Edit Prompt Text · {label}", "编辑提示词正文 · 全局": "Edit Prompt Text · Global", "编辑正文": "Edit Text", "编辑网关自带提示词 · {label}": "Edit Gateway-Provided Prompt · {label}", "编辑脱敏规则": "Edit masking rule", "编辑识别规则": "Edit identification rule", "缩放后重新存成 JPEG 时用的质量。默认 80,可填 40–95;数值越小体积越小、画质越差。": "JPEG quality used when re-encoding the scaled image. Default 80, range 40-95; lower means a smaller file and lower quality.", "缩放比例": "Zoom Level", "网关": "Gateway", "网关 Key 数量": "Gateway key count", "网关尚未就绪": "The gateway is not ready yet", "网关自带": "Gateway-Provided Prompt", "网关跨域访问已开启": "Gateway CORS enabled", "网关跨域访问设置已刷新": "Gateway CORS settings refreshed", "网关跨域访问(CORS)": "Gateway CORS", "网关面(/v1/*)默认不应答浏览器跨源请求:页面直连会被预检拦下,只报「无法连接 API」。注意来源是 * —— 未配「网关 Key」时任何网页都能借本机网关打上游,故默认关闭;只给自己用的话,让页面与网关同源(本地反代 /v1)更稳妥。面板接口(/api/*)不受影响。": "The gateway endpoints (/v1/*) do not answer browser cross-origin requests by default: a page connecting directly is stopped by the preflight and only reports \"cannot connect to the API\". Note that the allowed origin is * — with no gateway key configured, any web page could use this machine's gateway to hit upstreams, which is why the default is off; if you only use it yourself, serving the page from the same origin as the gateway (a local reverse proxy for /v1) is safer. The panel API (/api/*) is unaffected.", "网络访问": "Network access", "网页端": "Web", "网页端登录 / 注册验证": "Web sign-in / registration verification", "网页端的界面缩放由浏览器自己控制(Ctrl + / Ctrl -,或浏览器菜单里的缩放),此项不可调。": "In the web build, interface zoom is controlled by the browser itself (Ctrl + / Ctrl -, or the zoom entry in the browser menu); this setting is not adjustable.", "网页端:登录 / 注册需要 ALTCHA 人机验证": "Web: sign-in / registration requires ALTCHA proof-of-work", "网页端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "Web: sign-in / registration requires ALTCHA proof-of-work (in use now)", "网页管理地址": "Web management address", "群晖 NAS": "Synology NAS", "群晖需在「控制面板 → 应用程序门户 → WebDAV」里启用服务,端口默认 5005(HTTP)/ 5006(HTTPS)。": "On Synology, enable the service under Control Panel → Application Portal → WebDAV; the default ports are 5005 (HTTP) / 5006 (HTTPS).", "脱敏词表": "Masking rules", "腾讯云 COS": "Tencent Cloud COS", "自动同步": "Auto sync", "自动同步上次失败": "Last auto sync failed", "自动续写": "Auto continuation", "自定义 User-Agent": "Custom User-Agent", "自定义 · {name}": "Custom · {name}", "自定义头匹配规则": "Custom header rules", "自定义客户端分类": "Custom client categories", "自定义客户端数量已达上限": "Custom client limit reached", "自定义提供商 {id}": "Custom provider {id}", "自定义网站和应用界面中显示的名称与 Logo。": "Customize the name and logo displayed on the website and in the application.", "自定义识别规则": "Custom identification rules", "自愈保护": "Self-healing guards", "至少 12 位": "At least 12 characters", "至少 8 位,换机下载时需要": "At least 8 characters; needed when restoring on another machine", "至少要保留一个分组": "At least one group must remain", "英语": "English", "范围 5–120 秒,并受原请求时限约束。": "Range 5–120 seconds, also bounded by the original request timeout.", "范围为 5–120 秒,并受原请求时限约束。图片过大、格式错误或下载失败不会被当作模型不支持图片。": "Allowed range: 5–120 seconds, also limited by the original request timeout. Oversized images, invalid formats and download failures are not treated as missing image support.", "被更高优先级覆盖": "Overridden by higher priority", "装上{size}的官方身份提示词": "Install the official identity prompt ({size})", "装成 App 后从桌面图标直接进入:全屏打开、没有地址栏。": "Installed as an app it opens straight from the home screen icon: full screen, no address bar.", "覆盖": "overwrite", "规则 / 匹配方式": "Rule / match type", "规则可以增删改、启停和调整顺序;替换内容留空表示删除匹配内容。恢复默认只重置词表,不改开关和提供商范围。": "Add, edit, delete, enable, disable and reorder rules. An empty replacement deletes matched text. Restoring defaults resets only the rules, not the switch or provider scope.", "规则名称": "Rule name", "规则名称不能为空,且最多 {max} 个字符": "The rule name is required and must not exceed {max} characters", "规则已保存,对后续请求生效;当前历史记录未修改。": "Rule saved for future requests. This historical record was not changed.", "规则忽略大小写,只影响新请求的日志与统计,不改变模型选择或权限。": "Rules ignore case and affect only logs and statistics for new requests, not model selection or permissions.", "规则编号:{id}": "Rule ID: {id}", "视觉模型": "Vision model", "视觉模型先识读图片,再由原模型分析和回答。": "A vision model reads the images first, then the original model analyzes and answers.", "视觉模型来源": "Vision model source", "视觉模型的思考等级": "Reasoning level of the vision model", "视觉模型直接回答": "The vision model answers directly", "视觉模型识读图片": "The vision model reads the images", "解码后小于这个体积的图片保持原样。默认 512KB,可填 0–10240;填 0 表示所有内嵌图片都过一遍。": "Images smaller than this size after decoding are kept as-is. Default 512KB, range 0-10240; 0 processes every inline image.", "解除失败:{message}": "Failed to clear the fallback: {message}", "触发阈值": "Trigger threshold", "计数": "Counts", "计量单位": "Number notation", "让 Codex 在收到最终答案后收起中间过程。仅为严格识别的 Codex Responses 请求补阶段标记,报表归类和来源声明不影响此判断。正常结束且没有工具调用的非空回答才补 final_answer,工具调用前的说明补 commentary;错误、截断、缺少结束信号或未知结束原因不补最终答案标记。默认关闭,不改变回答文字,也不减少模型思考或用量。": "Let Codex collapse intermediate work after the final answer. Phase markers are added only to strictly identified Codex Responses requests, independently of report categories and client declarations. Only non-empty, normally completed replies without tool calls receive final_answer; text before tool calls receives commentary. Errors, truncation, missing completion signals and unknown finish reasons never receive a final-answer marker. Off by default; answer text, model reasoning and usage are unchanged.", "许可原文": "Original license text", "许可原文已随软件内置,无需联网即可查看;打开项目来源链接需要联网。": "License texts are bundled with the app and available offline. Opening project source links requires an internet connection.", "许可核对版本": "Revision used to verify the license", "设置不可隐藏(隐藏了只能清缓存找回来)": "\"Settings\" cannot be hidden (you would have to clear storage to get it back)", "设置备份密码": "Set backup password", "设置识别规则": "Set identification rule", "访问时请使用目标设备能连接到的地址;这里显示的本机地址不代表公网可达。": "Use an address reachable from the connecting device. The local address shown here does not imply public internet reachability.", "识别依据": "Identification evidence", "识别规则数量已达上限": "Identification rule limit reached", "词表为空,不会改写任何指纹。可以新增规则或恢复默认词表。": "The rule list is empty; no fingerprints will be rewritten. Add a rule or restore the defaults.", "该提供商暂无可编辑的专属设置": "This provider has no editable settings", "详细日志": "Verbose logs", "语言设置": "Language Settings", "请先保存设置再同步": "Save the settings before syncing", "请先在 Cloudflare 创建 Turnstile 组件,建议选择 Managed 模式,并添加面板实际使用的域名。": "Create a Turnstile widget in Cloudflare first. Managed mode is recommended. Add the actual domain names used to access the panel.", "请填一个分组名": "Please enter a group name", "请填写管理员账号(64 字符以内)": "Enter an admin account (up to 64 characters)", "请求发出后等待上游响应头的最大时间(秒),默认 300 秒,范围 1~3600。": "Maximum time to wait for the upstream's response headers after the request is sent (seconds). Default 300 seconds, range 1–3600.", "请求带有不同软件的标识,未自动归类;可用自定义规则明确归属。": "The request contains identifiers for different applications and was not classified automatically. Use a custom rule to assign it.", "请求提供商 / 模型支持": "Provider / Model Support Request", "请求日志保留天数": "Request log retention (days)", "请求日志保留数量上限": "Request log record limit", "请求记录": "Request Records", "请求超时": "Request Timeouts", "请求转发到上游失败时(服务器瞬时错误、连接失败,以及 WorkBuddy 的 11-128 敏感词拦截),网关会等一段间隔后再发一次。次数分两档,管的是两件事:①「同一账号重试次数」在同一账号上原地重发几次 —— 一般是提示词被上游拦截、或链路瞬时抖动,等一会儿重发往往就好了;②「切换账号重试次数」这份请求最多再换几个账号试 —— 首发的那个账号不算,每换一个扣一次,不分是不是同一家(换到同一家的下一个账号也算一次),换满还失败就把错误返回给客户端。两项都设为 0 表示失败不重试、直接报错。注意账号级限额(429)不占这里的换号次数 —— 那类失败走「冷却该账号并换下一个账号」的降级,与这里的重试是两条路。另有「指定错误码直接换号」名单(默认 402):命中名单的上游状态码不在同一账号重发,直接按队列换下一个账号继续试(换号也占「切换账号重试次数」),换满仍失败才把错误返回给客户端。": "When forwarding a request to an upstream fails (transient server errors, connection failures, and WorkBuddy's 11-128 sensitive-word blocking), the gateway waits for an interval and sends it once more. The counts come in two tiers covering two different things: (1) \"Same-Account Retries\" resends in place on the same account a few times — usually the prompt was blocked by the upstream or the link flickered, and resending after a wait tends to succeed; (2) \"Account-Switch Retries\" is how many more accounts this request may try — the account that sent it first does not count, each switch costs one, regardless of whether it is the same provider (switching to the next account of the same provider also counts), and when the switches are exhausted and it still fails, the error is returned to the client. Setting both to 0 means no retries on failure — error out immediately. Note that account-level throttling (429) does not consume these account switches — that kind of failure goes through the \"cool down the account and move to the next one\" fallback, a separate path from the retries here. There is also the \"Switch Accounts on Specified Error Codes\" list (default 402): upstream status codes on the list are not retried on the same account; the gateway switches to the next account in the queue and keeps trying (the switch also consumes an \"Account-Switch Retries\" slot), and only when those are exhausted is the error returned to the client.", "请求重试": "Request Retries", "请至少选择一个提供商": "Select at least one provider", "请输入同步密码": "Enter the sync password", "请输入当前密码": "Please enter your current password", "请输入服务端密钥": "Enter the secret key", "请选择可用的标识请求头": "Select an available identity header", "请选择归属客户端": "Select the client to assign", "读取云同步设置失败:{message}": "Failed to read cloud sync settings: {message}", "读取失败:{message}": "Failed to read: {message}", "读取完整非流式响应体允许的最大时间(秒),默认 300 秒,范围 1~3600。": "Maximum time allowed to read a complete non-streaming response body (seconds). Default 300 seconds, range 1–3600.", "读取网关信息失败:{message}": "Failed to read gateway info: {message}", "读取远端…": "Reading remote…", "读取远端信息失败:{message}": "Failed to read remote info: {message}", "调用方声明": "Caller declaration", "调试报文": "Debug Payloads", "调试模式": "Debug mode", "调试模式设置已刷新": "Debug mode settings refreshed", "负载均衡": "Load balancing", "账号列表": "Account list", "账号导入 / 导出": "Account Import / Export", "账号路由": "Account routing", "账号页表格的两项显示偏好,只存在本机(localStorage),不影响账号数据与转发。「积分合计只统计当前筛选出来的账号」:账号页每一家的分组带右侧有一枚「可用合计」,默认按整组求和 —— 不受筛选、搜索影响,被筛掉的账号也计入(余额是资产,禁用也只表示不参与转发,额度仍在账上)。打开这一项后改为只累加当前可见的行:例如筛出 1 个 100 积分的账号,合计就是 100,而不是同组两个账号之和 1,000。分页不参与这个口径 —— 翻页看的是同一份结果的不同屏,合计不随页码变化。「隐藏账号名」与表头「账号」旁边那颗眼睛是同一个开关:打开后账号列的名字整体显示成星号,适合截图分享时遮挡账号。": "Two display preferences for the accounts table. They are stored only on this machine (localStorage) and never affect account data or forwarding. \"Only sum accounts visible under the current filter\": each provider band on the accounts page shows a \"Total available\" badge, and by default it sums the whole group — filtering and search do not change it, and accounts filtered out still count (balance is an asset; disabling an account only keeps it out of forwarding, the credit stays). Turn this on to add up only the rows currently visible: filter down to one account with 100 credits and the total reads 100, not 1,000 (the sum of two accounts in that group). Paging does not take part in this rule — pages are just different screens of the same result, so the total does not change as you flip pages. \"Hide account names\" is the same switch as the eye next to the \"Account\" column header: when on, names in the account column are shown as asterisks, handy for screenshots.", "账户": "Account", "超出的历史数据会被立即删除,且不可恢复。": "Excess historical data will be deleted immediately and cannot be recovered.", "超时": "Timeout", "超时设置已刷新": "Timeout settings refreshed", "跟随模型配置": "Follow model settings", "跟随系统 · 浅色 · 深色": "System · Light · Dark", "跟随默认": "Follow Default", "跨域访问": "CORS", "路由": "Routing", "路由组只使用组内成员;普通路由只使用参与范围内的账号和模型。": "Route groups use only their members. Ordinary routes use only accounts and models within their participation scope.", "路由设置已刷新": "Routing settings refreshed", "跳过 {n} 个": "skipped: {n}", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;负载均衡是每条请求换下一位,把负载摊到各个账号上。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时)、被 429 的账号垫底排到队尾 30 分钟、余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 前两层可以在下面按需开关,限制器由账号的「限制器」设置管。": "How accounts are picked when forwarding a request: ① \"Routing strategy\" sets the queueing rule — Strict order means position 1 takes every request until it can't answer (rate-limited / failing / out of quota) before the next one steps in; Load balancing rotates to the next account on every request, spreading the load across accounts. ② \"Session stickiness\" keeps the same session (same model + same opening messages) on one account wherever possible — multi-turn conversations reuse the upstream context cache, fewer account switches, less waste; Auto sticks for 5 minutes, In-session for 6 hours, Per turn and Off don't stick. The queue position (first column of the accounts table) is the foundation under every strategy; strategies are layered on top of it. Routing also has three self-healing guards: accounts that fail to forward back off for a while (starting at 15 minutes, doubling per failure, capped at 1 hour), accounts 429'd despite having quota go to the back of the queue for 30 minutes, and accounts out of quota or over their per-period token cap are held by the limiter — the first two can be toggled below as needed; the limiter is governed by each account's \"Limiter\" settings.", "转发前压缩对话里内嵌的大图(只改发给上游的副本,生图与图片编辑不受影响)": "Compress large inline images in conversations before forwarding (only the copy sent upstream changes; image generation and editing are unaffected)", "转发前将 developer 角色消息转换为 system,兼容不支持 developer 角色的 OpenAI 兼容上游": "Convert developer-role messages to system before forwarding, for OpenAI-compatible upstreams that do not support the developer role", "转发失败的账号休息一会儿再回来:15 分钟起步,连续失败翻倍,封顶 1 小时;成功一次立即恢复。目的是「让这次失败先凉一会儿」,免得一条条地反复撞同一个坏账号。": "An account that fails to forward rests for a while before coming back: starting at 15 minutes, doubling per consecutive failure, capped at 1 hour; one success restores it immediately. The point is to let a failure cool off instead of hammering the same bad account request after request.", "转发链路": "Forwarding", "轮询间隔": "Poll interval", "软件标识超过 1 KB,已截断保存;匹配仅使用保留部分。": "The software identifier exceeded 1 KB and was truncated. Matching uses only the retained portion.", "软件版本": "Software version", "轻量模式": "Lightweight mode", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 套餐池(Start Plan)通道不可用,相关请求会在请求日志里注明原因": "Lightweight mode is on: closing the window destroys the UI process (freeing about 200 MB of memory) while the gateway continues in the background; while the UI is destroyed, the ZCode plan-pool (Start Plan) channel is unavailable and affected requests will note the reason in the request log", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 活动套餐通道不可用,相关请求会在请求日志里注明原因": "Lightweight mode on: closing the window destroys the UI process (freeing about 200MB of memory) while the gateway keeps running in the background; while the UI is destroyed, the ZCode activity-plan channel is unavailable, and affected requests are noted in the request logs with the reason", "轻量模式(关窗释放界面内存)": "Lightweight mode (releases UI memory when the window is closed)", "辅助识图": "Assisted image reading", "辅助识图 · 原模型回答": "Assisted reading · Original model answers", "辅助识图保留原模型回答;切换视觉模型会让视觉模型直接回答。本次授权也包含已设置的模型单独配置。": "Assisted reading keeps the original answering model; switching lets the vision model answer directly. This consent also covers your per-model overrides.", "辅助识图或切换视觉模型,默认关闭": "Assisted reading or vision model switching, off by default", "辅助识图配置": "Assisted image reading settings", "输入同步密码": "Enter sync password", "输入当前登录用的密码": "Enter your current password", "输入状态码,回车添加": "Enter a status code and press Enter", "运行形态": "Deployment", "近期没有命中样本,不代表未来请求不会命中。": "No recent samples matched; future requests may still match.", "还原": "Revert", "还有额度时被 429 的账号排到队尾,30 分钟后自动回到队列(成功转发一次也会立即回来)。它标记的是「疑似共享池被别人抢」,不是「这个账号本身有问题」。⚠️ 注意它与路由策略的配合:在「家内轮询」下,队尾意味着这一家整体被往后排 —— 如果某个提供商的账号被批量限流,它们会集体沉到队尾,那个家可能长时间轮不到。这时可以关掉本项,让 429 过的账号只受冷却约束(冷却到点自动回来)。": "An account with quota left that gets 429'd goes to the back of the queue and returns automatically after 30 minutes (one successful forward also brings it right back). This marks \"the shared pool is probably being drained by someone else\", not \"this account is broken\". ⚠️ Mind the interplay with the routing strategy: under \"Per-provider rotation\", the back of the queue means the whole provider gets pushed back — if one provider's accounts are rate-limited en masse, they all sink to the back and that provider may not be reached for a long time. Turn this off in that case, so 429'd accounts are only bound by cooldown (they come back automatically when it expires).", "还没有可用的视觉模型。": "No vision model is available yet.", "还没有同步过。": "Not synced yet.", "还没有添加服务器。点右上角「添加」,填入网关所在机器的 IP 或域名与端口。": "No servers yet. Tap \"Add\" at the top right and enter the IP or domain and port of the machine running the gateway.", "还没有装载任何数据。": "No data loaded yet.", "还没有读到版本信息": "Version info has not been loaded yet", "还没有选择模型,这块设置暂时不起作用。": "No models selected yet, so this block does nothing for now.", "这一份就是「替换 / 追加」模式下网关要发的 system 正文。": "This is the system text the gateway sends in Replace / Append mode.", "这一项已隐藏": "This item is hidden", "这一项正在显示": "This item is visible", "这些模型的请求交给当前路由内可用的视觉模型回答,不再回到原模型。": "Requests from these models are answered by an available vision model in the current route instead of the original model.", "这些模型看到图片时,先把图片交给 {model} 读一遍,再由它们自己结合读到的内容回答。": "When these models see an image, {model} reads it first, and they answer using what was read.", "这些模型看到图片时,先把图片交给「沿用工具服务的视觉分析模型」读一遍,再由它们自己结合读到的内容回答。": "When these models see an image, the vision model from the tool service reads it first, and they answer using what was read.", "这只模型只负责看图,最终仍由原模型回答。": "This model only reads the image; the original model still answers.", "这只模型直接接收图片与对话,完成本次回答。": "This model receives the images and the conversation and produces this answer itself.", "这台网关未启用机器人校验": "This gateway does not require bot verification", "这台网关没有管理员,用一把已启用的 API Key 访问。": "This gateway has no admin account. Access it with an enabled API key.", "这条历史请求没有保存识别依据,不能据此自动创建规则。": "This historical request has no saved identification evidence, so it cannot be used to create a rule automatically.", "这条规则已被删除,请关闭编辑后重新添加。": "This rule was deleted. Close the editor and add it again.", "这里只列出已保存的提供商配置;未配置的提供商沿用全局设置,可从下拉框手动添加。用户保存的模式、文件和正文优先于全局设置,「跟随默认」只取消该提供商的模式、文件和正文覆盖。ZCode 套餐池默认由插件按三块装配,客户端系统正文合入第三块,不会自动创建替换规则;手动修改的网关提示词段或关闭开关仍以用户配置为准,能否被接受取决于上游规则。": "Only saved provider settings are listed here. Unconfigured providers follow the global settings and can be added manually from the dropdown. Saved modes, files and prompt text override the global settings; Follow Default removes only that provider's mode, file and text overrides. For ZCode's Start Plan, the plugin assembles three blocks by default and merges the client's system text into the third, without creating a replacement rule. Manually edited gateway prompt blocks and a disabled assembly switch still take precedence; acceptance depends on the upstream rules.", "进程 PID": "Process PID", "远程根目录": "Remote root directory", "远端同一路径下的旧快照。事件日志、请求明细与调试报文不会上传。": "the old snapshot at the same remote path. Event logs, request details and debug payloads are not uploaded.", "远端已有一份快照,将被覆盖": "A snapshot already exists on the remote and will be overwritten", "远端快照使用了另一把账号密钥,但没有携带密钥文件,无法在本机解密。请在原来那台机器上重新上传一次。": "The remote snapshot uses a different account key but does not include the key file, so it cannot be decrypted here. Re-upload once from the original machine.", "远端快照使用的账号密钥与本机不同。请输入上传那台机器设置的同步密码,用它解出密钥装到本机后再继续下载。": "The remote snapshot uses a different account key than this machine. Enter the sync password set on the uploading machine to decrypt the key and install it here, then continue the download.", "远端数据与当前版本不兼容": "Remote data is incompatible with this version", "远端该路径下还没有快照,本次是首次上传。": "No snapshot exists at that remote path yet; this is the first upload.", "远端路径:{path}": "Remote path: {path}", "远端还没有可下载的同步数据": "No sync data available to download on the remote", "连不上这台网关。确认地址与端口正确、网关已启动,且已开启「局域网访问」;用 https 时还要确认证书有效": "Cannot reach this gateway. Check the address and port, that the gateway is running, and that \"LAN access\" is enabled; for https also check that the certificate is valid.", "连不上这台网关。请确认地址、端口与防火墙设置,网关需已启动;桌面端请在「设置 → 网关 → 网络访问」开启「允许其他设备访问网关」。使用 HTTPS 时还需确认证书有效。": "Cannot reach this gateway. Check the address, port, and firewall settings, and make sure the gateway is running. For the desktop app, enable Allow other devices to access the gateway under Settings → Gateway → Network access. For HTTPS, also check that the certificate is valid.", "连接中超时": "Connect Timeout", "连接失败:{message}": "Connection failed: {message}", "连续失败到阈值后把这个账号整个打开(默认关)。与失败退避的分工:退避管「单次失败先凉一会儿」,惩罚轻、自动恢复;熔断管「这个账号现在整体不对劲,别再一条条地试」,要连续成功若干次才关。打开期间该账号被跳过,除非全场只剩它 —— 那时仍放行试一次。": "Trips this account off entirely after consecutive failures reach a threshold (off by default). Division of labor with failure backoff: backoff means \"let a single failure cool off\" — light penalty, automatic recovery; the circuit breaker means \"this account is misbehaving as a whole, stop trying it one request at a time\" and takes several consecutive successes to close. While open, the account is skipped — unless it is the only one left, in which case it still gets one try.", "追加": "Append", "追加网关提示词": "Append gateway prompt", "退出失败:{message}": "Sign-out failed: {message}", "退出登录": "Sign Out", "退出这台服务器的登录,不影响其他服务器": "Sign out of this server only; others are unaffected", "选好接管回答的视觉模型后这块设置才会生效。": "This block takes effect once a vision model to answer is chosen.", "选好视觉模型后这块设置才会生效。": "This block takes effect once a vision model is chosen.", "选定提供商": "Selected provider", "选择一个或多个模型": "Select one or more models", "选择位置并加密备份": "Choose location and encrypt backup", "选择备份文件并恢复": "Choose a backup file and restore", "选择提供商(可多选)": "Select providers (multiple allowed)", "选路规则": "Selection rules", "选项与默认值由已启用插件提供;你保存的覆盖值不会被插件更新替换。": "Enabled plugins provide these options and defaults. Plugin updates do not replace your saved overrides.", "选项与默认值由插件提供,你保存的修改不会被插件更新覆盖。切换提供商不会丢失未保存的修改。": "Options and defaults come from plugins. Plugin updates do not overwrite your saved changes. Switching providers keeps unsaved edits.", "透传": "Passthrough", "透传客户端 system": "Passthrough client system", "透传客户端 system(默认)": "Passthrough client system (default)", "通常是网络问题,点右侧重试": "Usually a network issue — tap Retry on the right", "通用": "General", "遇到 Bug、报错或异常行为": "Bugs, errors, or unexpected behavior", "配置目录下的 agent2api.db(账号、日志、请求记录、调试报文与设置都在里面)。": "agent2api.db in the configuration directory (it holds accounts, logs, request records, debug payloads, and settings).", "采用本规则": "Uses this rule", "重启后生效,不影响当前操作": "Takes effect after a restart; nothing you're doing is interrupted", "重命名": "Rename", "重命名只更新分类显示名,不拆分历史用量,也不重新归类历史请求。": "Renaming changes only the category label, without splitting past usage or reclassifying historical requests.", "重命名客户端分类": "Rename client category", "重复清理": "Repeat cleanup", "重复清理直到不再变化(仅正则删除)": "Repeat until unchanged (regular-expression deletion only)", "重新读取会替换当前未保存的草稿。": "Reloading replaces the current unsaved draft.", "重新读取设置": "Reload settings", "重编码质量": "Re-encode quality", "重置会清空管理员账号与密码,面板将回到「未注册」状态。": "Reset clears the administrator account and password, returning the panel to the \"not registered\" state.", "重置管理员": "Reset administrator", "重试设置已刷新": "Retry settings refreshed", "重试间隔": "Retry Interval", "铸造守卫每隔多久看一次库存(毫秒)。只影响发现缺货的反应速度 —— 库存够用时轮询不会铸造任何令牌。默认 2500 毫秒,可填 1000–30000。": "How often the minting guard checks the stock (milliseconds). It only affects how quickly a shortage is noticed — with enough stock, the poll mints nothing. Default 2500 ms; 1000–30000 accepted.", "长边像素上限": "Max long-edge pixels", "问题反馈": "Bug Report", "阿里云 OSS": "Alibaba Cloud OSS", "限流中账号": "Rate-limited accounts", "随包内嵌的快照(发版时的那份)": "Snapshot bundled with the app (the one from the last release)", "隐藏 {name}": "Hide {name}", "隐藏分组 {name}": "Hide group {name}", "隐藏用户名": "Hide username", "隐藏账号名(显示成星号)": "Hide account names (show asterisks)", "隐藏这一组": "Hide this group", "非流式响应超时": "Non-Streaming Timeout", "面板登录": "Panel login", "面板端口": "Panel port", "面板管理员账号": "panel admin account", "韩语": "Korean", "项目来源": "Project source", "预览不发送模型请求,也不修改历史记录。": "Preview does not call a model or modify historical records.", "预览中…": "Previewing…", "预览匹配": "Preview matches", "预设": "Preset", "首选不可用时再依次尝试备选。": "If the first choice is unavailable, the backups are tried in order.", "首选不可用时再依次尝试;留空则停止并说明原因。": "Tried in order when the first choice is unavailable; leave empty to stop and explain why.", "验证方式": "Verification method", "验证码令牌池": "Captcha token pool", "验证码令牌池设置已刷新": "Captcha token pool settings refreshed", "验证码库存的参考目标,默认 3 个,可填 1–10。只影响库存状态展示,不会因为低于目标自动生成令牌或弹出验证码。": "Reference stock target: 3 by default, from 1 to 10. It only affects the stock display; falling below it never generates tokens or opens verification automatically.", "高级设置": "Advanced settings", "默认 10000 条,按日志级别分配保留容量,超出后清理最旧的记录;同时受保留天数限制。": "Defaults to 10,000 records, with capacity allocated by log level. The oldest excess records are removed; retention days also apply.", "默认 1000000 条(100 万),超出后清理最旧的请求记录及其原始正文,不影响按天聚合报表;同时受保留天数限制。": "Defaults to 1,000,000 records. The oldest excess request records and their raw bodies are removed without affecting daily aggregate reports; retention days also apply.", "默认 5 分钟。间隔内的变化合并为最新快照,到期后上传;手动上传不受限制。失败后会延长等待并自动重试。": "Defaults to 5 minutes. Changes during the interval are merged into the latest snapshot and uploaded when it is due. Manual uploads are not limited. Failed attempts are retried automatically with a longer delay.", "默认仅本机可访问(127.0.0.1)。开启后监听所有 IPv4 网卡(0.0.0.0),访问范围由网络与防火墙决定,不限于局域网,也不会自动开放到公网。开启前必须注册面板管理员;管理接口需要管理员会话或网关 Key,API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。「同时开放网页管理面板」默认关闭,开启后可从其他设备的浏览器登录管理;关闭它不影响 API 转发和本机桌面管理。修改任一开关都需要重启应用。": "By default, only this machine can connect (127.0.0.1). Enabling this listens on all IPv4 interfaces (0.0.0.0); access depends on your network and firewall, is not limited to the LAN, and is not automatically opened to the internet. A panel administrator must be registered first. Management endpoints require an admin session or gateway key; API calls require an enabled gateway key, with a default key created automatically if needed. The web management panel is off by default. Enable it to sign in from another device's browser; disabling it does not affect API forwarding or local desktop management. Either switch requires an app restart.", "默认值通常够用,出问题时才需要调": "The defaults are usually fine; only tune these when something goes wrong", "默认关闭。开启后下一次 Codex 请求立即生效,不用重启;只对 Codex 来源的 /v1/responses 请求补阶段标记,其它客户端与 /v1/chat/completions 不受影响。": "Off by default. Enabling takes effect on the next Codex request without a restart; phase markers are only added to Codex-origin /v1/responses requests, other clients and /v1/chat/completions are unaffected.", "默认关闭。改动立即生效,不用重启;关闭期间的跨源请求会被预检拦下。": "Off by default. Changes take effect immediately, no restart needed; while off, cross-origin requests are stopped by the preflight.", "默认关闭窗口不会退出程序,而是把窗口缩到系统托盘,转发继续在后台运行(OpenAI 客户端不受影响);要彻底退出程序,请在托盘图标上右键选「退出」。关掉这个开关后,点关闭按钮即退出程序、转发随之中断。「开机自动启动」开启后,登录系统时会自动启动本程序(通常直接驻留托盘),不需要手动打开。": "By default, closing the window does not quit the app; it shrinks the window to the system tray and forwarding keeps running in the background (OpenAI clients are unaffected). To quit the app completely, right-click the tray icon and choose \"Exit\". With this switch off, clicking the close button quits the app and forwarding stops with it. With \"Launch at startup\" on, the app starts automatically when you sign in to the system (usually staying in the tray), so you do not need to open it manually.", "默认应用全部提供商(包含之后新增的插件与自定义提供商)。指定范围后,未选中的提供商不做指纹脱敏;清空选择自动回到全部提供商。": "Applies to all providers by default, including plugins and custom providers added later. With a selected scope, other providers are not masked. Clearing the selection returns to all providers.", "默认开启。只改 role 字段本身,消息内容与顺序都不动;本项只改发给上游的副本,客户端看到的响应内容不变。": "Enabled by default. Only the role field changes — message content and order stay untouched; this only rewrites the copy sent upstream, and what the client sees never changes.", "默认开启。只改发给上游的副本,客户端看到的响应与原图都不变;请求日志里保存的是客户端发来的原图,不是压缩后的版本。只作用在对话链路,生图 / 图片编辑不经过这里。改完对下一个请求立即生效,不用重启。": "On by default. Only the copy sent upstream is changed; the response and the original image seen by the client stay the same, and the request log stores the original image from the client rather than the compressed version. Applies to the chat path only — image generation and editing do not go through it. Changes take effect on the next request, no restart needed.", "默认开启。命中明细会记进请求日志的「敏」标签(悬停可看命中了哪几条规则)。本项只改发给上游的副本,客户端看到的响应内容不变。": "On by default. Hits are recorded in the request log's \"sensitive\" tag (hover to see which rules matched). This only changes the copy sent upstream; the response content the client sees is unchanged.", "默认开启并应用全部提供商。编辑词表或应用范围后点击「保存设置」,下一次请求立即生效,不用重启。命中明细仍记进请求日志的「敏」标签。": "Enabled for all providers by default. Edit rules or provider scope and click Save settings; the next request uses the changes without restarting. Rule hits are still recorded in the request log's masking tag.", "默认网关只监听 127.0.0.1,只有本机能访问。开启后网关改听所有网卡,同一局域网内的设备可以把 API 地址指向本机 IP 一起使用。出于安全考虑,开启前必须先注册一个面板管理员:管理接口从此要求管理员会话或网关 Key,模型额度不会对局域网裸奔;一把启用的网关 Key 都没有时,转发接口也会拒绝服务,直到创建第一把。改动需要重启应用生效。「同时开放网页管理面板」把管理界面也出给局域网(其他设备的浏览器打开本机 IP 即可管理),默认关闭 —— 桌面端的面板仍只由本程序自己出。": "By default the gateway listens only on 127.0.0.1 and only this machine can reach it. Once enabled, the gateway listens on all network interfaces, and devices on the same LAN can point the API address at this machine's IP to share it. For security, you must first register a panel administrator: the admin API then requires an admin session or a gateway key, so model quotas are not left wide open to the LAN; and when no gateway key is enabled, the forwarding API refuses service too, until the first one is created. The change requires an app restart to take effect. \"Also serve the web admin panel\" exposes the admin UI to the LAN as well (other devices can open this machine's IP in a browser to manage it); it is off by default — the desktop build still serves the panel only from this app itself.", "({n} 个整组隐藏)": " ({n} groups hidden)", "({n} 行)": " ({n} lines)", "({n} 项被覆盖)": " ({n} overridden)", "(全部为默认值)": " (all defaults)", "(官方原文)": "(official text)", "(已存一份正文,{n} 行;切成「替换 / 追加」后生效)": " (a text copy is saved, {n} lines; takes effect after switching to \"Replace / Append\")", "(已改)": "(edited)", "(已注册过会跳过这一步,直接生效)。": " before enabling this (if you have already registered, this step is skipped and the change takes effect directly).", "(当前生效的就是这一份,{n} 行)": " (this is the active copy, {n} lines)", "(文件:{path})": " (file: {path})", "(未生效)": "(not in effect)", ",{items}": ", {items}", ",{time}": ", {time}", ",以及代理池 / 订阅里可能存在的代理凭据。请使用只有你能访问的私有存储;账号密钥由同步密码单独加密,泄露存储本身不等于泄露账号。": ", plus any proxy credentials that may exist in the proxy pool / subscriptions. Use private storage only you can access; the account key is encrypted separately with the sync password, so leaking the storage alone does not expose your accounts.", ",包括恢复后需要重新登录管理面板。": " with the selected backup file, including the admin re-login after restore.", ",可直接用于登录。请妥善保管,不要外传或上传到公共位置。": ", and it can be used to sign in directly. Keep it safe; do not share it or upload it to a public location.", ",文件里后续的改动在清空这里之前不再生效": "; later changes to the file will not take effect until this is cleared", ",替换前的数据已备份为 {name}": ", the pre-replace data was backed up as {name}", ",自定义提供商新增 {added} 个、更新 {updated} 个": ", custom providers: {added} added, {updated} updated", ";开关关闭时词表不执行": "; rules do not run while masking is disabled", ";网页管理面板已一并开放(浏览器打开同一地址)": "; the web admin panel is also open (open the same address in a browser)", "AI 调整后的 JSON({n} 字符)": "AI-adjusted JSON ({n} chars)", "CodeArts 的账号余额还剩多少?": "How much credit is left on the CodeArts account?", "JSON 文件会以文本发送给当前对话模型,其中的凭证也会保存在这条会话里。": "JSON files are sent to the current chat model as text, and credentials in them are also saved in this conversation.", "[已省略 {n} 字符的 JSON]": "[JSON of {n} chars omitted]", "attachment 与 content 只能给一个": "Provide either attachment or content, not both", "section 只能是 models / mappings / both": "section must be models / mappings / both", "{n} 个候选,{m} 个跳过": "{n} candidates, {m} skipped", "{n} 条映射": "{n} mappings", "{n} 条请求日志": "{n} request log entries", "{n} 条运行日志": "{n} runtime log entries", "{requests} 次请求,{tokens} Token": "{requests} requests, {tokens} tokens", "「{name}」是空文件。": "\"{name}\" is empty.", "「{name}」看起来是二进制文件,助手只接收 JSON 文本。": "\"{name}\" looks like a binary file; the assistant only accepts JSON text.", "「{name}」超过 {n} MB,请换一个小一点的 JSON 文件。": "\"{name}\" is larger than {n} MB. Choose a smaller JSON file.", "「{name}」超过 {n} MB,请换一个小一点的 JSON 文件,或去添加账号页导入。": "\"{name}\" is larger than {n} MB. Choose a smaller JSON file or import it from the Add Account page.", "一次最多 {n} 个文件。": "At most {n} files at a time.", "一次最多 {n} 个文件,多出的没有添加。": "At most {n} files at a time; extra files were not added.", "一次最多 {n} 张图片。": "Up to {n} images at a time.", "一次最多 {n} 张图片,多出的没有添加。": "Up to {n} images at a time; additional images were not added.", "下载图片": "Download image", "今天用了多少 Token?": "How many tokens did I use today?", "会话响应不完整": "Incomplete session response", "保存位置": "Save location", "保存图片失败:{message}": "Failed to save image: {message}", "保存思考等级失败:{message}": "Failed to save reasoning level: {message}", "修改上传或已生成的图片,支持多张参考图。": "Edit uploaded or generated images using multiple references.", "修改文件": "Modify files", "修改模型能力": "Edit model capabilities", "凭证会保存到网关;同一提供商下同一身份的账号会更新原凭证。文件若是整库导出的 accounts 数组,会按文件里的账号批量导入。": "Credentials will be saved to the gateway. An account with the same identity under the same provider will have its credentials updated. If the file is a full export with an accounts array, all accounts in it are imported.", "分叉": "Fork", "分叉会话失败:{message}": "Failed to fork conversation: {message}", "分支": "Branch", "删除会话失败:{message}": "Failed to delete session: {message}", "删除消息": "Delete message", "删除这条对话": "Delete this conversation", "删除这条对话?": "Delete this conversation?", "删除这条消息?模型消息关联的工具结果也会一并删除。": "Delete this message? Tool results associated with a model message will also be deleted.", "助手设置没读出来,暂时存不了对话模型 —— 看输入框下方的提示。": "Assistant settings could not be read, so the chat model can't be saved yet — see the hint below the input box.", "助手设置没读出来,暂时存不了思考等级 —— 看输入框下方的提示。": "Assistant settings could not be loaded, so the reasoning level cannot be saved right now — see the hint below the input box.", "助手设置没读出来,现在还不能发消息 —— 看输入框下方的提示。": "Assistant settings could not be read, so messages can't be sent yet — see the hint below the input box.", "单张参考图不能超过 10 MiB": "A reference image cannot exceed 10 MiB", "历史会话": "Session history", "历史对话": "Conversation history", "原始 ID 的默认绑定不能删除,请关闭它的开关": "The default binding for the original ID cannot be deleted; turn it off instead", "原始报文或对话正文已省略": "Raw payload or conversation content omitted", "参数 {name} 只能是:{values}": "Parameter {name} must be one of: {values}", "参数 {name} 必须是不小于 {min} 的整数": "Parameter {name} must be an integer greater than or equal to {min}", "参数 {name} 必须是不超过 {max} 个字符的字符串": "Parameter {name} must be a string of at most {max} characters", "参数 {name} 必须是布尔值": "Parameter {name} must be a boolean", "参数 {name} 必须是有效日期(YYYY-MM-DD)": "Parameter {name} must be a valid date (YYYY-MM-DD)", "参数 {name} 必须是毫秒时间戳": "Parameter {name} must be a millisecond timestamp", "参数不完整(需要 provider / id / alias / action)": "Incomplete parameters (provider / id / alias / action required)", "参考图仅支持 PNG、JPEG、WebP": "Reference images must be PNG, JPEG, or WebP", "参考图会交给图片编辑工具,当前对话模型不会读取图片。": "Reference images are sent to the image editing tool; the current chat model will not read them.", "参考图片列表不能为空": "The reference image list cannot be empty", "参考图片编号不存在": "The reference image number does not exist", "参考图片请使用附件编号、已生成图片 ID 或 HTTP(S) 链接": "Use an attachment number, a generated image ID, or an HTTP(S) link for reference images", "发消息或做任务…(Enter 发送,Shift+Enter 换行,可粘贴图片或 JSON 文件)": "Send a message or task… (Enter to send, Shift+Enter for a new line; images and JSON files can be pasted)", "发起模型测试": "Run a model test", "受限": "Restricted", "变更前确认": "Confirm before changes", "只支持图片和 JSON 凭证文件(.json / .info)": "Only images and JSON credential files (.json / .info) are supported", "只支持图片和 JSON 凭证文件(.json / .info);「{name}」已跳过。": "Only images and JSON credential files (.json / .info) are supported; \"{name}\" was skipped.", "各账号余额还剩多少?": "How much balance is left on each account?", "启用 / 禁用模型": "Enable / disable models", "启用 / 禁用账号": "Enable / disable accounts", "命令": "Command", "哪些模型在多家重复了?": "Which models are duplicated across providers?", "图片 {n}": "Image {n}", "图片工具包含不支持的参数:{name}": "The image tool received an unsupported parameter: {name}", "图片工具没有返回可显示的图片": "The image tool returned no displayable images", "图片工具缺少当前会话": "The image tool has no current session", "图片工具需要提示词和图片模型": "The image tool requires a prompt and an image model", "完全访问": "Full access", "实时余额查询会请求上游,并可能触发已配置的自动禁用规则。": "Live balance checks send requests to upstream providers and may trigger the configured automatic account-disable rules.", "对指定模型发一次真实请求,回报连通性与耗时。": "Sends one real request to the given model and reports reachability and latency.", "对话由网关转发到上游模型,用量计入请求日志": "Chat is relayed to the upstream model by the gateway; usage is recorded in the request log", "导入账号文件": "Import account file", "将导入一个账号:": "Import one account:", "就绪": "Ready", "工具「{name}」未获授权,未执行。": "Tool \"{name}\" is not authorized and was not executed.", "工具调用已达本轮上限,已停止继续执行。": "This turn reached the tool-call limit; further execution has stopped.", "已从这条消息分叉为新对话": "A new conversation was forked from this message", "已停止": "Stopped", "已停止生成": "Generation stopped", "已完成 {n} 项改动": "Completed {n} changes", "已完成 {n} 项,剩余 {m} 项未执行": "Completed {n} items; {m} items were not executed", "已导入账号「{name}」": "Imported account \"{name}\"", "已生成 {n} 张图片": "Generated {n} images", "已调用": "Called", "开关模型的对外可用性,不改其它属性。": "Toggles a model's outward availability without touching other attributes.", "开始日期不能晚于结束日期": "The start date cannot be later than the end date", "开始时间必须早于结束时间": "The start time must be earlier than the end time", "当前安装包未包含原生图片保存能力,请更新应用。": "This app package does not include native image saving. Update the app.", "当前客户端缺少读取接口:{name}": "This client is missing the read interface: {name}", "当前对话没有可读取的文本附件:请先把 JSON 文件发给助手": "No readable text attachment in this conversation. Send the JSON file to the assistant first.", "思考过程": "Reasoning", "思考:跟随模型": "Reasoning: follow model", "成功率": "Success rate", "打开会话失败:{message}": "Failed to open session: {message}", "执行中": "Running", "执行结果": "Operation result", "批量导入:新增 {added}、更新 {updated}、失败 {failed}": "Batch import: {added} added, {updated} updated, {failed} failed", "把凭证文件交给对应提供商解析并落库;同身份账号会更新凭证。": "Let the matching provider parse and save the credential file; an account with the same identity will have its credentials updated.", "把重复的模型加上家名前缀区分开": "Prefix duplicated models with their provider name to tell them apart", "拒绝": "Deny", "按提供商名称查询模型、能力、来源与映射,支持自定义提供商。": "Query models, capabilities, sources, and mappings by provider name, including custom providers.", "按提示词生成图片。": "Generate images from the prompt.", "按提示词编辑参考图片。": "Edit reference images using the prompt.", "按文件内容判断": "Infer from file content", "按文本生成图片,结果直接显示在对话中。": "Generate images from text and display them in the conversation.", "提供商 id「{provider}」格式不正确": "Invalid provider id \"{provider}\"", "提供商「{name}」匹配到多家,请使用提供商 ID:{list}": "Provider \"{name}\" matches multiple entries. Use a provider ID: {list}", "改上下文窗口 / 最大输出 Token / 工具调用等能力位。": "Edits capability flags such as context window, max output tokens, and tool calls.", "改某一家的整组顺位(先试哪一家)。": "Reorders a provider's whole group (which provider is tried first).", "改账号在全局队列里的名次,决定主备与切换顺序。": "Changes an account's rank in the global queue, deciding primary/backup and failover order.", "文件内容是空的": "The file is empty", "文件过大({n} 字符):请先用 read_attachment 分段查看,或改用添加账号页导入": "File too large ({n} chars). Read it in chunks with read_attachment first, or import it from the Add Account page", "新增 / 删除映射名,支持批量加前缀与同名合并到多家。": "Adds/removes mapping names, with bulk prefixing and merging a shared name across providers.", "新建会话": "New session", "无法判断这些凭证属于哪家提供商。请先问用户,或用 provider 指定(常见 id:{list})": "Cannot tell which provider these credentials belong to. Ask the user, or specify provider (common ids: {list})", "无法读取图片": "Unable to read image", "最高": "Maximum", "有什么可以帮你?可以问配置、查余额、让我改模型设置。": "How can I help? Ask about configuration, check balances, or have me change model settings.", "未命名对话": "Untitled conversation", "未知的工具:{name}": "Unknown tool: {name}", "权限模式": "Permission mode", "极低": "Minimal", "查看 API Key 详情必须指定 API Key 身份": "Specify an API key identity to view its details", "查看图片": "View image", "查看模型候选账号、跳过原因和当前路由策略。": "Shows candidate accounts, skip reasons and the current routing strategy for a model.", "查询凭证、插件和定时任务等运行事件的脱敏摘要。": "Reads redacted summaries of runtime events, including credentials, plugins and scheduled tasks.", "查询生产请求的 Token 用量、成功率、排行和趋势。": "Reads token usage, success rates, rankings and trends for production requests.", "查询用量报表": "Read usage report", "查询请求日志": "Read request logs", "查询请求状态、耗时、账号、错误与重试,不读取对话正文。": "Reads request status, latency, accounts, errors and retries without reading conversation content.", "查询账号余额": "Query account balance", "查询路由队列": "Inspect routing queue", "查询运行日志": "Read runtime logs", "标题总结失败:{message}": "Title generation failed: {message}", "标题总结提示词": "Title generation prompt", "标题总结模型": "Title generation model", "标题总结设置已保存": "Title generation settings saved", "模型「{model}」当前不在可用列表中,请重新选择;也可到「模型管理」或「插件」页检查是否已启用。": "The model \"{model}\" is not in the available list. Pick another one; you can also check whether it is enabled under Model management or on the Plugins page.", "模型名称": "Model name", "模型响应未完整结束,请重试;未执行其中的工具调用。": "The model response did not finish completely. Please retry; none of its tool calls were executed.", "模型对话": "Model chat", "模型没有返回内容": "The model returned no content", "正在思考…": "Thinking…", "正在执行": "Working", "正在生成,点右侧按钮可停止": "Generating — tap the button on the right to stop", "正在读取可用模型…": "Loading available models…", "正在读取图片…": "Loading image…", "没有可用的模型": "No models available", "没有已启用的模型,请先在「模型管理」里启用": "No enabled models. Enable some under Model management first.", "没有找到提供商「{name}」,请先不填 provider 查询,或用 keyword 搜索": "Provider \"{name}\" was not found. Query without provider first, or search with keyword", "没有找到附件「{ref}」:编号从 1 开始,也可以用文件名": "Attachment \"{ref}\" not found. Numbering starts at 1; you can also use the file name", "没有提供要修改的项目": "No items to modify were provided", "测一下当前最快的模型通不通": "Check whether the currently fastest model is reachable", "浏览": "Browse", "消息操作": "Message actions", "深度推理": "Deep reasoning", "添加图片": "Add images", "添加图片或 JSON 文件(也可粘贴或拖入)": "Add images or JSON files (or paste/drop)", "添加图片或文件": "Add image or file", "清空全部": "Clear all", "清空历史失败:{message}": "Failed to clear history: {message}", "现在有哪些账号被限流?": "Which accounts are rate limited right now?", "生成图片": "Generate images", "生成的图片": "Generated image", "用户目录": "Home folder", "看看哪些模型在多家重复了": "Show which models are duplicated across providers", "禁用会把账号移出转发队列,线路可能因此断供。": "Disabling removes the account from the forwarding queue; the route may run dry as a result.", "移除图片 {n}": "Remove image {n}", "移除文件「{name}」": "Remove file \"{name}\"", "终端": "Terminal", "编辑图片": "Edit images", "编辑消息": "Edit message", "聊天附件 {ref}": "Chat attachment {ref}", "自定义提供商模块未就绪(请刷新界面后重试)": "Custom provider module is not ready (refresh the UI and try again)", "获取模型列表": "List models", "获取账号列表": "List accounts", "获取账号详情": "Get account details", "计划": "Plan", "设置模型映射 ID": "Set model mapping ID", "请先上传参考图片,或先生成一张图片": "Upload a reference image or generate an image first", "请提供 attachment 或 content": "Provide attachment or content", "读取 {name}": "Read {name}", "读取 {name}({from}-{to} 字符)": "Read {name} ({from}-{to} chars)", "读取凭证状态、限流、并发、代理和限制器的本地快照。": "Reads a local snapshot of credentials, rate limits, connections, proxy settings and limiters.", "读取历史会话失败:{message}": "Failed to load conversation history: {message}", "读取响应不完整:{name}": "Incomplete response: {name}", "读取图片失败": "Failed to read image", "读取图片失败:{message}": "Failed to read image: {message}", "读取文件失败:{message}": "Failed to read file: {message}", "读取模型清单失败": "Failed to load the model list", "读取聊天里上传的 JSON / .info 文件,支持分页。": "Read JSON / .info files uploaded in the chat, with pagination.", "读取账号、启用状态、优先级与隐藏原因,支持筛选和分页。": "Reads accounts, enabled states, priorities and reasons for hidden accounts, with filtering and pagination.", "读取附件": "Read attachment", "读各提供商的模型清单、映射名与启用状态。": "Reads each provider's model list, mapping names, and enabled state.", "读各账号的额度 / 剩余用量。": "Reads each account's quota and remaining usage.", "调整提供商顺位": "Reorder providers", "调整账号优先级": "Adjust account priority", "账号「{name}」匹配到多条记录,请使用账号 ID:{ids}": "Account \"{name}\" matches multiple records. Use an account ID: {ids}", "账号额度": "Account quota", "跟随对话模型": "Follow chat model", "跟随模型(不指定)": "Follow model (unspecified)", "跟随网关设置": "Use gateway setting", "返回": "Back", "还没有历史对话": "No conversation history yet", "还没有配置默认模型": "No default model configured yet", "这一版网关还没有 AI 助手接口(HTTP 404),请升级网关后重试。": "This gateway version does not have the AI assistant API (HTTP 404). Upgrade the gateway and try again.", "这一版网关还没有 AI 助手接口(HTTP 404):后端还是旧的,重新编译 / 重启客户端后再试。{message}": "This gateway build doesn't have the AI assistant API yet (HTTP 404): the backend is older. Rebuild or restart the client and try again. {message}", "这一轮来回已达 {n} 次上限,我先停下等你指示(可以换个说法,或拆成几步让我做)。": "This turn has reached the {n}-round-trip limit, so I stopped for your input (try rephrasing, or split it into a few steps).", "这条会话没能存进历史:{message}": "This conversation could not be saved to history: {message}", "这次工具调用没有保存完成结果,历史回放不会重新执行。": "No completed result was saved for this tool call. Replaying history will not execute it again.", "这里只改本次会话用的模型,不会改网关里保存的默认值。": "This only changes the model for this session; the default saved in the gateway is untouched.", "连接网关失败({base}):{message}": "Failed to reach the gateway ({base}): {message}", "选择 API Key": "Select API Key", "选择 API Key…": "Select API Key…", "选择对话模型": "Choose chat model", "配置响应不完整": "Incomplete config response", "问点什么…": "Ask something…", "项目": "Project", "额度窗口": "Quota window", "首轮回答完成后自动总结;这会调用所选模型并消耗额度。": "Generate a title after the first reply completes. This calls the selected model and consumes quota.", " · 检查于 {time}": " · checked at {time}", " 已发布(当前 {current}),更新日志如下:": " has been released (current: {current}). Release notes below:", "Agent2API 一直在更新,是因为有人在背后持续投入。如果它帮到了你,欢迎请作者喝杯咖啡。": "Agent2API keeps improving because someone keeps investing time in it. If it has helped you, consider buying the author a coffee.", "GitHub Token 未填写": "GitHub Token not set", "GitHub 令牌": "GitHub Token", "GitHub 加速前缀": "GitHub accelerator prefix", "GitHub 接口限流中,请在 {seconds} 秒后重试": "The GitHub API is rate-limited. Try again in {seconds} seconds.", "GitHub 接口限流中,请在「插件设置」的「GitHub 令牌」中填写凭证,以提高请求限额。": "The GitHub API is rate-limited. Enter your credentials under GitHub Token in Plugin settings to increase the request limit.", "GitHub 接口限流中,请在「更新设置」的「GitHub 令牌」中填写凭证,以提高请求限额。": "The GitHub API is rate-limited. Enter your credentials under GitHub Token in Update settings to increase the request limit.", "GitHub 接口限流中,请稍后重试": "The GitHub API is rate-limited. Try again later.", "GitHub 源「{source}」限流,{seconds} 秒后可重试(上游未提供恢复时间)": "GitHub source “{source}” is rate-limited. Retry in {seconds} seconds (no reset time was provided).", "GitHub 源「{source}」限流,请在 {seconds} 秒后重试": "GitHub source “{source}” is rate-limited. Try again in {seconds} seconds.", "GitHub 访问方式": "GitHub access mode", "GitHub 访问设置已保存": "GitHub access settings saved", "QQ 群": "QQ group", "QQ 群 / Telegram 都在这里": "QQ groups and Telegram are all here", "QQ 群 {n}": "QQ group {n}", "Telegram 群": "Telegram group", "Windows 服务一键更新会核验官方更新包,再由独立升级进程停止服务、备份替换并重新启动。账号与配置保留,确认新版运行后页面自动刷新。": "Windows service updates verify the official package, then a separate updater stops the service, backs up and replaces files, and starts it again. Accounts and settings are preserved. The page refreshes after the new version is confirmed running.", "Windows 服务升级权限或目录保护不符合要求。请以管理员身份重跑新版 install-service.ps1;自定义服务账号或外部托管环境请按原方式升级。": "The Windows service permissions or directory protection do not meet update requirements. Run the new install-service.ps1 as administrator. Custom service accounts or externally managed environments should use their existing upgrade procedure.", "Windows 服务部署需要手动升级。请解压新版服务端包,以管理员身份运行 install-service.ps1;账号与配置会保留。": "Windows services require manual upgrades. Extract the new server package and run install-service.ps1 as administrator. Accounts and settings are preserved.", "beta 版可能不稳定。两项同时开启时,按版本号选择最高版本,不会降级;安装到正式版或 beta 版后仍保留关注选择。": "Beta builds may be unstable. With both channels enabled, the highest version is selected without downgrading. Your channel choices remain unchanged after installing either a stable or beta release.", "systemd 一键更新由受限升级程序完成:下载、核验官方校验值、备份替换、重启并确认版本。网关保持普通账号运行,账号与配置不变。": "A restricted helper handles systemd updates: download, official checksum verification, backup, replacement, restart and version confirmation. The gateway keeps running as an unprivileged user. Accounts and settings are preserved.", "{message};其他线路可重新检查": "{message} Other routes can be checked again.", "{ms} 毫秒": "{ms} ms", "{seconds} 秒后可重试": "Retry in {seconds} seconds", "{version} 已就位,服务正在重启,页面会在恢复后自动刷新…({seconds}s)": "{version} is in place. The service is restarting; this page will refresh automatically once it is back… ({seconds}s)", "{version}(预发布)": "{version} (Pre-release)", "✅ GitHub 令牌已保存(加密存储,界面不再显示)": "✅ GitHub Token saved (stored encrypted; it will no longer be shown in the UI)", "✅ 已加入 beta 版,之后的检查会包含 beta 版": "✅ Joined the beta channel; later checks will include beta builds", "✅ 已清除界面保存的 GitHub 令牌(环境变量若配置过则继续生效)": "✅ Cleared the GitHub Token saved in the UI (a configured environment variable still applies)", "✅ 已退出 beta 版,之后的检查只看正式版": "✅ Left the beta channel; later checks only look at stable releases", "✅ 数据升级完成({n} 项)": "✅ Data migration complete ({n} items)", "✅ 更新出网已切换为 {label}": "✅ Outbound route for updates switched to {label}", "✅ 更新出网已切换为直连": "✅ Outbound route for updates switched to Direct connection", "✅ 自动检查更新已保存": "✅ Automatic update checks saved", "一键更新": "One-click update", "一键更新入口不可用,请刷新页面后重试。": "One-click updates are unavailable. Refresh the page and try again.", "一键更新服务端?": "Update the server now?", "一键更新组件不可用或权限配置不正确。请使用新版安装包执行 sudo bash install.sh --upgrade 修复。": "The update helper is unavailable or its permissions are incorrect. Run sudo bash install.sh --upgrade from the new package to repair it.", "上次 GitHub 限流的等待时间已结束,可重新检查": "The previous GitHub rate-limit wait has ended. You can check again.", "上次结果:{state}": "Previous result: {state}", "上游未提供恢复时间,按 GitHub 建议短暂等待": "No reset time provided; briefly waiting as GitHub recommends", "下载中": "Downloading", "下载失败": "Download failed", "下载失败:{error}": "Download failed: {error}", "下载已取消,可重新点击「下载并安装」。": "Download canceled. Click \"Download and install\" to try again.", "下载已取消,可重新点击「下载并更新」。": "Download cancelled; click \"Download and update\" to try again.", "下载并安装": "Download and install", "下载并更新": "Download and update", "下载服务端包": "Download server package", "不支持此类请求": "Request type not supported", "与 gh-proxy.com 属于同一服务的备用线路。": "An alternative route from the same service as gh-proxy.com.", "与网关的软件更新和插件共用设置;APK 下载由手机联网,GitHub 令牌不会发送给加速站。": "Shares settings with gateway updates and plugins. APK files are downloaded by the phone; GitHub tokens are never sent to the accelerator.", "与软件更新共用出网代理和 GitHub 凭证,修改任意一处都会同步生效。": "Shares the egress proxy and GitHub credentials with software updates. Changes in either place take effect in both.", "个人开发并开源维护,免费使用,也不会收集你的账号数据。如果它帮到了你,欢迎到项目仓库点个 Star 支持一下。": "Independently developed and open-source maintained. It is free to use, and never collects your account data. If it helps you, a Star on the project repository would be much appreciated.", "仅 beta 版": "Beta only", "仅官方源": "Official source only", "仅插件索引和文件下载,不支持版本查询": "Plugin indexes and downloads only; release queries are not supported", "仅正式版": "Stable only", "仓库暂无发布版本。{at}": "This repository has no releases yet.{at}", "代理列表读取失败": "Failed to load the proxy list", "令牌已生效,但写入磁盘失败(重启后会丢失)": "The Token is now active, but writing to disk failed (it will be lost after a restart)", "以上状态来自网关;APK 下载会由手机按本机网络重新选择通道。": "These results are from the gateway. APK downloads select a route using the phone’s own network.", "优先使用加速源,访问失败后回退官方源;不会绕过 GitHub 限流冷却。": "Uses the accelerator first and falls back to the official source on failure. GitHub rate-limit cooldowns are respected.", "优先加速源": "Preferred accelerator", "优先访问官方源,连接失败后尝试加速源;短期记住成功的源,定期恢复官方优先。": "Tries the official source first, then the accelerator if the connection fails. Remembers successful sources briefly and periodically retries the official source.", "允许本机自动检查": "Allow automatic checks on this device", "先使用指定加速源,失败后尝试其他已启用的加速源,最后回退官方源。": "Try the selected accelerator first, then other enabled accelerators, and finally the official source.", "关于作者": "About the author", "关注 beta 版更新": "Follow beta updates", "关注正式版更新": "Follow stable updates", "出网线路与 GitHub 令牌设置": "Outbound route and GitHub Token settings", "出网线路已切换,但写入磁盘失败(重启后会恢复原线路)": "Outbound route switched, but writing to disk failed (the old route will be restored after a restart)", "分别探测版本查询、插件索引和文件下载,选择最快返回有效内容的源;成功线路短期复用,失败自动切换。": "Check release queries, plugin indexes and downloads separately. Use the first valid response, briefly reuse successful routes and switch on failure.", "分钟({min} ~ {max})": "minutes ({min}–{max})", "到 GitHub 发布页下载": "Download from the GitHub release page", "到点自动向 GitHub 查询新版本,查到就走「检测到更新」弹窗;关闭后「检查更新」按钮仍可手动触发": "Checks GitHub for new versions on schedule and opens the \"Update available\" dialog when one is found; dismissing it still leaves manual checks available via the Check for updates button", "加入 beta 版": "Join the beta channel", "加入交流群": "Join the community", "加速源优先": "Accelerator first", "单独设置": "Configure separately", "即将满员": "Almost full", "即将满员,请优先加3群、4群": "Almost full — please join group 3 or 4 first", "去更新": "Update now", "发布页上没有 {wanted} 这个文件": "The release page has no file named {wanted}", "发布页上没有对应本机架构的服务端更新包": "The release page has no server update package for this machine's architecture", "发布页上的文件被更新源的访问方式过滤掉了,请检查「更新设置」里的 GitHub 访问方式": "The files on the release page were filtered out by your update source settings. Check the GitHub access mode in Update settings.", "发现新版本 {latest}(当前 {current})。{at}": "New version {latest} is available (current: {current}).{at}", "发现新版本 {latest}(当前 {current})。{reason}{at}": "Version {latest} is available (current: {current}). {reason}{at}", "发现新版本 {latest}(当前 {current}),但该版本没有提供容器内更新包({reason});请在宿主机执行 docker compose pull && docker compose up -d 升级。{at}": "New version {latest} found (current: {current}), but this release provides no in-container update package ({reason}). Upgrade on the host with docker compose pull && docker compose up -d.{at}", "发现新版本 {latest}(当前 {current}),但这一版没有提供本机安装包({reason});可到 GitHub 发布页手动下载。{at}": "New version {latest} is available (current: {current}), but this release provides no installer for this machine ({reason}). You can download it manually from the GitHub release page.{at}", "取消下载": "Cancel download", "取消失败:{error}": "Failed to cancel: {error}", "只访问 GitHub 官方源,仍使用所选出网代理。": "Uses only the official GitHub source, through the selected outbound proxy.", "可安装": "Ready to install", "启动失败": "Launch failed", "启动安装程序失败:{error}": "Failed to launch the installer: {error}", "启用加速源 {source}": "Enable accelerator {source}", "在 GitHub 查看完整说明": "View full release notes on GitHub", "在 QQ 里搜索群号即可加入。": "Search the group number in QQ to join.", "在宿主机执行 docker compose pull && docker compose up -d 即可升级。": "Run docker compose pull && docker compose up -d on the host to upgrade.", "在浏览器中打开": "Open in browser", "在浏览器中打开 GitHub 发布页": "Open the GitHub release page in your browser", "在浏览器中打开项目仓库,点 Star 支持作者": "Open the project repository in your browser and Star it to support the author", "在默认浏览器中打开 GitHub 的令牌创建页(备注已预设,无需勾选任何权限,直接点 Generate token)": "Open GitHub's Token creation page in your default browser (the note is prefilled, no scopes need to be selected—just click Generate token)", "填写后检查限额 60 → 5000 次/小时(创建令牌无需勾选任何权限)": "Fill it in to raise the check rate limit from 60 to 5000 requests/hour (no scopes needed to create the Token)", "填写支持 Raw、Release 和 GitHub API 的 HTTPS 加速站前缀,留空恢复默认。": "Enter an HTTPS accelerator prefix supporting Raw, Releases and the GitHub API. Leave blank to restore the default.", "复制群号 {group}": "Copy group number {group}", "安装中": "Installing", "安装包": "installer", "安装包已下载完成,正在启动安装程序(需要管理员权限,会弹出 UAC 确认框)…": "Installer downloaded. Launching the installer (admin rights required; a UAC prompt will appear)…", "安装包已下载完成,正在启动新的 AppImage…": "Installer downloaded; launching the new AppImage…", "安装包已下载完成,正在打开系统安装器…": "Installer downloaded; opening the system installer…", "安装包已下载完成,正在挂载磁盘映像…": "Installer downloaded. Mounting the disk image…", "安装包已就绪:{name}。点击「安装并重启」后会启动新的 AppImage;把它移动到你的应用目录并替换旧文件即完成升级(本程序会先退出以释放文件占用)。": "Installer ready: {name}. \"Install and restart\" launches the new AppImage; move it to your applications folder and replace the old file to finish the upgrade (this app quits first to release the file).", "安装包已就绪:{name}。点击「安装并重启」后需要管理员权限,会弹出 UAC 确认框。": "Installer ready: {name}. Clicking \"Install and restart\" requires admin rights and will show a UAC prompt.", "安装包已就绪:{name}。点击「打开安装包」后会交给系统安装器,按提示输入密码即可完成安装(本程序无需退出)。": "Installer ready: {name}. \"Open installer\" hands it to the system installer — enter your password when prompted (this app does not need to quit).", "安装包已就绪:{name}。点击「打开安装包」后会挂载磁盘映像,把应用拖进「应用程序」即可完成安装。": "Installer ready: {name}. Clicking \"Open installer\" mounts the disk image; drag the app into Applications to finish installing.", "安装包已挂载,请在弹出的窗口里把应用拖进「应用程序」完成安装。安装完成后重新打开本程序即可。": "The disk image is mounted. Drag the app into Applications in the window that appeared to finish installing, then reopen this app.", "安装失败": "Installation failed", "安装失败:{error}": "Installation failed: {error}", "安装并重启": "Install and restart", "安装程序已启动,本程序将退出以便完成覆盖安装。安装程序需要管理员权限,会弹出 UAC 确认框,请选择「是」。": "The installer has started. This app will exit so the update can replace it. The installer needs admin rights; when the UAC prompt appears, choose \"Yes\".", "官方源": "Official source", "容器内更新:更新包从 GitHub 发布页下载,校验 sha256 后由面板替换容器内的程序与界面文件,再重启服务(容器由 restart 策略拉起,页面会自动刷新)。更新的是容器里的文件,compose 里的镜像标签不变 —— 之后执行 docker compose pull && up -d 会使用镜像里的版本。检查更新与下载的出网线路、GitHub 令牌都在「更新设置」里。": "In-container update: the package is downloaded from the GitHub releases page, verified by sha256, and the panel then replaces the program and UI files inside the container before restarting the service (the container is brought back by its restart policy, and this page refreshes automatically). Only the files inside the container are updated — the image tag in your compose file stays the same, so a later docker compose pull && up -d uses the image version. The egress route and GitHub token used for checking and downloading live in \"Update settings\".", "将更新至 {version}。下载和校验完成后会短暂停止服务、替换程序并自动重启;账号与配置会保留。确认后无需再次点击安装。": "Update to {version}? Once downloaded and verified, the service will briefly stop, the files will be replaced and the service will restart automatically. Accounts and settings are preserved. No further installation click is needed.", "已加密存储在本地,不显示具体值;粘贴新令牌可覆盖": "Stored encrypted locally and never displayed; paste a new Token to overwrite it", "已取消": "Canceled", "已填写": "Saved", "已填写(粘贴新令牌可覆盖)": "Saved (paste a new Token to overwrite)", "已打开系统安装器,请在它弹出的窗口里完成安装。安装完成后重新打开本程序即可。": "The system installer is open — finish the installation in its window, then reopen this app.", "已是最新": "Up to date", "已更新至 {version},服务已恢复。": "Updated to {version}. The service is back online.", "已替换为 {version},正在重启服务…": "Replaced with {version}; restarting the service…", "已配置 GITHUB_TOKEN 环境变量,界面保存的令牌优先于它": "The GITHUB_TOKEN environment variable is set; a Token saved in the UI takes precedence over it", "开启后只更新到 beta 版(预发布),取版本最高的一个;beta 版可能不稳定。开启期间不会因为正式版发布而自动切回正式版 —— 想切回请关闭本开关。关闭后只更新到正式版,且不会降级到版本号更低的版本。": "When on, updates come only from beta (pre-release) builds, always the highest version; beta builds may be unstable. While it stays on, a stable release will not switch you back automatically — turn this off to go back. When off, updates come only from stable releases and never downgrade to a lower version.", "开始更新": "Start update", "当前 Windows 服务尚未接入一键更新。请解压新版服务端包,以管理员身份运行一次 install-service.ps1,原有账号、目录、端口和配置会保留。": "One-click updates are not set up for this Windows service. Extract the new server package and run install-service.ps1 once as administrator. Existing accounts, directories, ports and settings will be preserved.", "当前下载通道:{source}": "Download source: {source}", "当前为直接运行的服务端,请停止程序后替换服务端包,再重新启动。": "This server runs without a service manager. Stop it, replace the server files and start it again.", "当前关注:{channels}": "Following: {channels}", "当前安装尚未接入一键更新。请下载新版服务端包,执行一次 sudo bash install.sh --upgrade;之后即可在面板更新。": "One-click updates are not installed yet. Download the new server package and run sudo bash install.sh --upgrade once. Future updates can then be installed from the panel.", "当前已是最新版本({current})。{at}": "You already have the latest version ({current}).{at}", "当前版本": "Current version", "当前系统或架构暂不支持面板自动安装,请查看发布页。": "Automatic installation is not supported on this system or architecture. Check the release page.", "当前线路不可用:{error};请重新选择代理或切回直连": "The current route is unavailable: {error}; select another proxy or switch back to a direct connection", "当前网关仍使用旧版单源设置,升级网关后可管理多个加速源。": "This gateway still uses legacy single-source settings. Upgrade it to manage multiple accelerators.", "当前需要手动升级": "Manual upgrade required", "当前:自动检查关闭": "Automatic checks are off", "当前:自动检查开启,每 {n} 分钟": "Automatic checks are on, every {n} minutes", "待重启": "Restart pending", "待重新检查": "Needs a new check", "微信赞赏": "WeChat", "微信赞赏码": "WeChat donation code", "打开 GitHub 令牌页面": "Open GitHub Token page", "打开安装包": "Open installer", "打开链接失败:{error}": "Failed to open the link: {error}", "指定代理": "Selected proxy", "指定加速源优先": "Selected accelerator first", "按上游返回时间": "Using the upstream reset time", "插件索引": "Plugin index", "插件默认跟随这里的更新通道、自动检查和间隔;可在插件设置中单独设置。": "Plugins follow these update channels, automatic checks and interval by default. You can configure them separately in Plugin settings.", "支付宝": "Alipay", "支付宝收款码": "Alipay payment QR code", "支持作者": "Support the author", "支持版本查询": "Supports release queries", "收藏项目": "Star project", "数据升级失败:{error}(旧数据仍在原处,下次启动会自动重试)": "Data migration failed: {error} (the old data is still in place; it will be retried automatically on the next launch)", "数据升级未全部完成(已导入 {n} 项,仍有数据待导入,下次启动会自动重试)": "Data migration incomplete ({n} items imported; the remaining data will be imported on the next launch)", "数据升级:没有需要导入的旧数据": "Data migration: no old data to import", "文件下载": "File download", "新版本 ": "New version ", "无法开始更新:{error}": "Unable to start the update: {error}", "无法比较": "Cannot compare", "无法解密": "Cannot decrypt", "无法读取更新信息": "Unable to read update information", "显示的是当前网络下的响应耗时,不代表长期稳定性或完整下载速度。未探测的源会在实际更新时检查。": "Times reflect responses on the current network, not long-term reliability or full download speed. Unchecked sources are checked during actual updates.", "暂未确认服务恢复,请检查服务器状态后刷新页面;不会自动重复安装。": "Service recovery has not been confirmed. Check the server and refresh this page. Installation will not repeat automatically.", "更新任务已结束,但当前运行版本与目标不一致,请检查服务日志。": "The update task ended, but the running version differs from the target. Check the service logs.", "更新出网代理": "Outbound proxy for updates", "更新包从 GitHub Release 获取。自动模式按实际请求选择可用通道,失败后换源;镜像安装包必须匹配官方校验值,取不到时仅使用原始源。加速源、代理和令牌在「更新设置」中配置,指定代理失效不会静默直连。": "Update packages come from GitHub Releases. Automatic mode selects sources using real requests and switches on failure. Mirrored installers must match an official checksum; without one, only the original source is used. Configure accelerators, proxies and tokens in Update settings. An unavailable selected proxy never silently falls back to a direct connection.", "更新包从 GitHub Release 获取,下载后交给本平台安装器。GitHub 访问方式、加速前缀、出网代理和令牌在「更新设置」中配置。默认官方优先,连接失败后尝试加速源;镜像安装包必须匹配官方校验值,取不到时仅使用原始源。指定代理失效会明确报错,不会静默改走直连。": "Update packages come from GitHub Releases and open in your platform installer after download. Configure the GitHub access mode, accelerator prefix, outbound proxy and token in Update settings. The official source is tried first by default, then the accelerator if the connection fails. Mirrored installers must match an official checksum; without one, only the original source is used. An unavailable selected proxy reports an error instead of silently switching to a direct connection.", "更新包从 GitHub 发布页下载,下载完成后可直接启动安装程序并自动重启本程序。安装包会先校验来源域名与文件完整性。检查更新与下载安装包的出网线路、GitHub 令牌都在「更新设置」里:线路默认直连(直连失败时自动借 Clash Verge 的混合端口重试一次),选定指定出口后只走该出口;填写 GitHub 令牌可把检查限额从 60 次/小时提高到 5000 次/小时。": "Update packages are downloaded from the GitHub releases page; once downloaded, the installer can be started directly and this app restarts automatically. The installer verifies the source domain and file integrity first. The outbound route and GitHub Token for update checks and installer downloads are both in Update settings: the route defaults to a direct connection (if that fails, it automatically retries once through Clash Verge's mixed port), and once a specific proxy is selected only that route is used; filling in a GitHub Token raises the check rate limit from 60 to 5000 requests/hour.", "更新包已就绪:{name}。点「安装并重启」后,面板会校验并替换容器内的程序与界面文件,然后重启服务(页面会自动刷新)。": "Update package ready: {name}. After you click \"Install and restart\", the panel verifies and replaces the program and UI files inside the container, then restarts the service (the page refreshes automatically).", "更新失败": "Update failed", "更新失败:{error}": "Update failed: {error}", "更新完成": "Update complete", "更新已应用到容器内,重启服务后生效。{at}": "The update has been applied inside the container and takes effect after the service restarts.{at}", "更新已应用到容器内,重启服务后生效。{at}(本次检查失败:{error})": "The update has been applied inside the container and takes effect after the service restarts.{at} (this check failed: {error})", "更新日志": "Release notes", "更新设置": "Update settings", "更新进行中": "Update in progress", "更新通道已保存": "Update channels saved", "更新通道已改变,请重新检查更新。": "Update channels changed. Check for updates again.", "替换完成,正在重启服务…": "Replacement complete; restarting the service…", "最多保留 6 个 HTTPS 加速源;自定义源可关闭版本查询支持。": "Keep up to 6 HTTPS accelerators. Release queries can be disabled for custom sources.", "最新发布版本为 {latest},但当前版本号「{current}」无法解析,未做新旧判断。{at}": "The latest release is {latest}, but the current version \"{current}\" cannot be parsed, so no comparison was made.{at}", "最新版本": "Latest version", "最近采用": "Last used", "有新版本": "New version", "服务正在重启,页面会在恢复后自动刷新…({seconds}s)": "The service is restarting; this page will refresh automatically once it is back… ({seconds}s)", "服务端压缩包": "Server archive", "未找到适用的更新包": "No suitable update package", "未找到适用的更新包。需要:{wanted};发布页包含的文件类型:{seen}。": "No suitable update package was found. Required: {wanted}. File types on the release page: {seen}.", "未探测": "Not checked", "未检查": "Not checked", "本工具由": "This tool is built by", "查看发布页": "View release page", "校验中": "Verifying", "检查中": "Checking", "检查中…": "Checking…", "检查失败": "Check failed", "检查更新": "Check for updates", "检查更新与下载安装包使用所选线路;未选择代理时先直连,失败后尝试 Clash Verge 混合端口;指定代理不可用时不会自动改走直连。": "Update checks and installer downloads use the selected route. Without a proxy selection, a direct connection is tried first, followed by the Clash Verge mixed port if it fails. An unavailable specified proxy never falls back to a direct connection.", "检查更新与下载安装包使用所选线路;未选择代理时直连,指定代理不可用时不会自动改走直连。": "Update checks and installer downloads use the selected route. With no proxy selected, connections are direct; an unavailable selected proxy will not automatically fall back to direct connections.", "检查更新与下载安装包走哪条线路(当前:{current});选择即保存。选项来自「网络代理」页;直连失败时会自动借 Clash 混合端口重试一次,选定指定代理后只走它": "Which route update checks and installer downloads use (current: {current}); your choice is saved immediately. Options come from the Network proxy page; if a direct connection fails, it automatically retries once through Clash's mixed port, and once a specific proxy is selected only that route is used", "检查更新失败:{error}": "Update check failed: {error}", "检查更新失败:{error}(以下版本与更新日志来自上次成功检查,检查于 {time})": "Update check failed: {error} (the versions and release notes below are from the last successful check at {time})", "检查计划": "Check schedule", "检查间隔必须是 {min} ~ {max} 分钟": "The check interval must be {min}–{max} minutes", "检查间隔(分钟)": "Check interval (minutes)", "检测到更新": "Update available", "检测到自定义程序或界面路径,一键更新不会覆盖这些位置。请按原部署方式升级。": "Custom program or panel paths were detected. One-click updates will not overwrite them. Use your existing deployment procedure.", "正在下载 {name}:{percent}%({received} / {total} MB)": "Downloading {name}: {percent}% ({received} / {total} MB)", "正在下载 {version} 的服务端更新包…": "Downloading the server update for {version}…", "正在下载安装包…(下载完成后会交给系统安装器,按提示输入密码即可完成安装)": "Downloading the installer… (once done it is handed to the system installer; enter your password when prompted).", "正在下载安装包…(下载完成后会启动新的 AppImage;把它替换掉旧文件即完成升级)": "Downloading the installer… (once done the new AppImage launches; move it over the old file to finish the upgrade).", "正在下载安装包…(下载完成后会挂载磁盘映像,把应用拖进「应用程序」即可完成安装)": "Downloading installer… (when it finishes, the disk image will be mounted; drag the app into Applications to complete the installation)", "正在下载安装包…(下载完成后启动安装程序需要管理员权限,会弹出 UAC 确认框)": "Downloading installer… (when it finishes, starting the installer requires admin rights and will show a UAC prompt)", "正在下载服务端更新包…(下载完成后由面板完成替换,重启容器内的服务后生效)": "Downloading the server update package… (the panel replaces the files once the download finishes; the update takes effect after the service inside the container restarts)", "正在取消下载…": "Canceling the download…", "正在备份并替换服务端程序与界面,请勿关闭服务器…": "Backing up and replacing the server and panel files. Do not shut down the server…", "正在把旧数据导入 SQLite 数据库(旧文件会保留,不会删除)…": "Importing old data into the SQLite database (old files are kept, not deleted)…", "正在查询 GitHub 上的最新发布版本…": "Checking GitHub for the latest release…", "正在校验并替换容器内的程序与界面文件…": "Verifying and replacing the program and UI files inside the container…", "正在独立核验官方更新包,校验通过前不会修改现有程序…": "Independently verifying the official update. Existing files will not change until verification succeeds…", "正在选择下载通道…": "Selecting a download source…", "正在重启服务并确认新版本,页面恢复后会自动刷新…": "Restarting the service and verifying the new version. This page will refresh after recovery…", "正式版与 beta 版": "Stable and beta", "没有可下载的安装包": "No installer available for download", "没有可下载的安装包:{reason}": "No installer available for download: {reason}", "没有启用的加速源,将只使用官方源。": "No accelerators are enabled. Only the official source will be used.", "沿用已记录的恢复时间": "Using the previously recorded reset time", "点击「检查更新」后,这里会显示最新版本的更新说明。": "After you click \"Check for updates\", the release notes for the latest version will appear here.", "点击「检查更新」查询 GitHub 上的最新发布版本。": "Click \"Check for updates\" to query GitHub for the latest release.", "点击「检查更新」查询最新发布版本。": "Click \"Check for updates\" to query the latest release.", "点击在浏览器中打开": "Click to open in your browser", "点击复制群号": "Click to copy the group number", "版本 {version} · 按 GitHub 访问设置下载安装包": "Version {version} · Downloads installers using GitHub access settings", "版本查询": "Release query", "版本查询、插件索引、文件下载": "Release queries, plugin indexes and downloads", "状态来自最近一次实际请求,并非实时测速。过期后标为待重新检查;限流只暂停对应线路,其他线路仍可使用。": "These are results from the latest real requests, not live speed tests. Expired results need a new check. Rate limits pause only the affected route; other routes remain available.", "环境变量": "Environment variable", "立即重启": "Restart now", "等待恢复": "Waiting for recovery", "管理员已关闭面板一键更新,请使用手动升级方式。": "An administrator has disabled one-click updates. Please upgrade manually.", "粘贴 GitHub 令牌(ghp_… / github_pat_…)": "Paste GitHub Token (ghp_… / github_pat_…)", "网关已关闭自动检查,此处只做手动检查": "The gateway has disabled automatic checks. Only manual checks are available here.", "群号": "Group number", "群号:{group}": "Group number: {group}", "自动检查更新": "Automatic update checks", "自动选择最快可用源": "Automatically select the fastest available source", "自动(官方优先)": "Automatic (official first)", "自定义加速前缀": "Custom accelerator prefix", "至少需要关注正式版或 beta 版中的一个通道": "Follow at least one channel: stable or beta.", "补充内置备用源": "Add missing built-in sources", "记录于 {time}": "Recorded at {time}", "请先粘贴 GitHub 令牌": "Paste a GitHub Token first", "请检查服务日志": "Please check the service logs", "读取下载进度失败:{error}": "Failed to read download progress: {error}", "读取中": "Loading", "赞赏完全自愿,不解锁任何功能,也不影响正常使用。": "Donations are entirely voluntary. They do not unlock any features or affect normal use.", "赞赏方式": "Donation method", "跟随软件": "Follow software settings", "跳过此次更新": "Skip this update", "软件更新": "Software update", "软件更新与插件共用此设置;GitHub 令牌仅发送给官方 API。镜像安装包需要官方校验值,镜像插件包需要可信签名。": "Software updates and plugins share this setting. GitHub tokens go only to the official API. Mirrored installers require an official checksum; mirrored plugins require a trusted signature.", "软件版本检查设置不可用": "Software update check settings are unavailable.", "返回内容异常": "Invalid response content", "这一版只有 {seen},没有本机需要的 {wanted}": "This release only contains {seen}; it has no {wanted} for this machine", "这一版没有为当前平台提供安装包": "This release provides no installer for the current platform", "这一版没有发布本机需要的安装包({wanted})": "This release did not publish the installer this machine needs ({wanted})", "这一版没有提供容器内更新包": "This release provides no in-container update package", "这一版没有提供容器内更新包:{reason}": "This release provides no in-container update package: {reason}", "这一版没有提供本机安装包": "This release provides no installer for this machine", "这一版还没有上传任何文件(构建可能失败,或仍在打包上传)": "No files have been uploaded for this release yet (the build may have failed, or uploads are still in progress)", "这个版本没有填写发布说明。": "No release notes were provided for this version.", "连接超时": "Connection timed out", "通道已切换,但写入磁盘失败(重启后会回到原设置)": "Channel switched, but writing to disk failed (the old setting will be restored after a restart)", "遇到问题或有使用心得,欢迎到群里交流。": "Questions and tips are welcome in any of these groups.", "重启中": "Restarting", "重新粘贴保存一次即可自愈": "Paste and save it again to recover", "重试下载": "Retry download", "链接地址不受支持": "Unsupported link", "限流冷却中": "Waiting for rate limit reset", "面板自动安装": "Automatic installation from panel", "预发布": "Pre-release", "默认开启;即使当前使用 beta 版,也可收到版本号更高的正式版更新。": "Enabled by default. Even on a beta build, you can receive stable releases with a higher version.", "默认跟随软件的正式版和 beta 关注选择;单独设置只影响插件。始终按版本号选择更新,不会降级。": "Follows the software’s stable and beta channel choices by default. Separate settings affect only plugins. Updates are selected by version and never downgrade.", "默认跟随软件的自动检查和间隔。关闭自动检查也会暂停插件自动更新和自动下载;手动检查与安装不受影响。": "Follows the software’s automatic checks and interval by default. Turning off automatic checks also pauses automatic plugin updates and downloads. Manual checks and installation remain available.", "(检查于 {time})": " (checked at {time})", "API Key 列表": "API Key list", "Key 已停用": "Key disabled", "Key 已删除": "Key deleted", "Key 已启用": "Key enabled", "Key 至少需要 8 个字符": "Key must be at least 8 characters", "✅ Key 已创建,记得复制给客户端": "✅ Key created — remember to copy it to your client", "✅ 可用范围已保存": "✅ Allowed scope saved", "不限制": "No restrictions", "与": " and ", "例如 Cursor / 公司电脑": "e.g. Cursor / Work laptop", "保存失败:{reason}": "Save failed: {reason}", "保存范围": "Save scope", "创建": "Create", "创建时间": "Created", "删除网关 Key": "Delete gateway key", "助手图片工具": "Assistant image tools", "助手标题总结": "Assistant title summary", "可用提供商": "Available providers", "可用提供商:{names}": "Available providers: {names}", "可用模型": "Available models", "可用模型:{names}": "Available models: {names}", "可用范围": "Allowed scope", "可用范围 · {name}": "Allowed scope · {name}", "启用「{name}」": "Enable \"{name}\"", "复制 Key": "Copy key", "客户端请求需带 ": "Client requests must include ", "已删除": "Deleted", "已启用鉴权 · {n} 把 Key 生效": "Auth enabled · {n} keys active", "当前不限制:这把 Key 可以用全部提供商与全部对外模型": "No restrictions: this key can use all providers and all public models", "所选 API Key 已不可用": "The selected API Key is unavailable", "所选 API Key 已不可用,请重新选择": "The selected API Key is unavailable. Select another key.", "提供商:{names}": "Providers: {names}", "搜索模型…": "Search models…", "操作失败:{reason}": "Operation failed: {reason}", "新建 API Key": "New API Key", "日活保活": "Daily activity keepalive", "显示": "Shown", "未启用鉴权": "Auth not enabled", "未命名": "Untitled", "未提供客户端标识": "No client identifier provided", "未知客户端": "Unknown client", "模型调用使用所选 Key 的权限,日志记录 Key 名称,不保存密钥值。": "Model calls use the selected key's permissions. Logs record its name, never the secret value.", "模型:{names}": "Models: {names}", "正在读取 API Key…": "Loading API keys…", "没有匹配的选项": "No matching options", "没有可用的 API Key,请先在「网关 Key」页创建并启用": "No API key is available. Create and enable one on the Gateway Key page.", "留空 = 不限制": "Blank = no restriction", "留空自动生成;手填至少 8 个字符": "Leave blank to auto-generate; enter at least 8 characters manually", "留空表示不限制;同时设置时请求需同时满足两个条件(模型在白名单内且路由到允许的提供商)。 「可用模型」的候选跟着上面勾选的提供商走:没勾提供商时它是空的(还没有约束范围), 勾了几家就列出这几家能收的全部对外名。": "Leave blank for no restriction; when both are set, requests must satisfy both conditions (the model is on the allowlist and routing resolves to an allowed provider). \"Available models\" candidates follow the providers checked above: with none checked it is empty (no scope constrained yet), and with a few checked it lists all the public names those providers accept.", "确定删除 Key「{name}」?使用它的客户端会立刻无法访问。": "Delete key \"{name}\"? Clients using it will lose access immediately.", "网关 Key 表": "Gateway key table", "自动记住本次选择,下次打开继续使用;Key 被停用或删除后需重新选择。": "Your selection is remembered for next time. Select another key if it is disabled or deleted.", "请先在上面选择可用提供商": "Select available providers above first", "读取 Key 列表失败:{reason}": "Failed to load key list: {reason}", "还没有 Key,当前不鉴权": "No keys yet — auth is currently off", "这几家当前没有可用模型(账号未登录或清单为空)": "These providers currently have no available models (accounts not signed in or catalog empty)", "这把 Key 不限制提供商与模型(可用全部上游与全部对外模型)": "This key is not restricted by provider or model (all upstreams and all public models are available)", "限制:{text}": "Restrictions: {text}", "隐藏": "Hide", "(模型候选需先选提供商;不选则沿用当前这几项,保存后仍按模型白名单生效)": "(model candidates require selecting providers first; if none are selected the current entries are kept, and the model allowlist still applies after saving)", "(行内「可用范围」):留空 = 不限制,两个都设时 按交集生效 —— 被限制的模型对这把 Key 表现为「不存在」(拉 /v1/models 也看不到它), 提供它的家不在可用列表里时请求同样被拒。": " (the inline \"Allowed scope\"): leave blank = no restriction; when both are set, the intersection applies — a restricted model simply \"does not exist\" for this key (it will not appear when fetching /v1/models either), and requests are also rejected when the provider offering it is not in the allowed list.", "+ 新建 Key": "+ New key", "; 修改后立即生效,本程序自身会自动使用第一把启用的 Key。每把 Key 可单独限制": "; changes take effect immediately, and this app itself automatically uses the first enabled key. Each key can restrict ", ";修改后立即生效。模型测试、助手和日活保活必须选择 Key,受限 Key 不能访问管理接口。每把 Key 可单独限制": "; changes take effect immediately. Model tests, the assistant, and daily keepalive must use a selected Key. Restricted Keys cannot access management endpoints. Each Key can separately restrict ", ";当前必须带 Key。": "; an enabled Key is required.", " AI 账号专用静态住宅 IP:Scamalytics 低欺诈评分,不限流量,首单 75 折(AGENT2API25)": " native static residential IPs for AI accounts: low Scamalytics fraud score, unlimited traffic, 25% off your first purchase (AGENT2API25)", " 提供 AI 账号专用的原生静态住宅 IP(Static Residential ISP):IP 来自真实家庭宽带运营商,Scamalytics 低欺诈评分,每个 IP 独享,不限流量,$3.90 起。": " offers native static residential ISP proxies for AI accounts (Static Residential ISP): IPs come from real home broadband operators with low Scamalytics fraud scores, each IP is dedicated to you, with unlimited traffic, from $3.90.", " 那一类由「同步 Clash Verge」 镜像进来(进入本页时会自动同步一次):名称、端口、启用都跟随 Clash, 在 Clash 里改或删,这里跟着变 —— 所以它们只读,改请到 Clash Verge 里改。": " entries are mirrored in by \"Sync Clash Verge\" (auto-synced once when you enter this page): name, port, and enabled state all follow Clash — edit or delete them there and they change here too, so these entries are read-only; make your changes in Clash Verge.", "Clash Verge": "Clash Verge", "SOCKS5 用户名和密码不能超过 255 字节": "SOCKS5 usernames and passwords must not exceed 255 bytes", "YAML 文件": "YAML file", "{names} 等 {n} 条": "{names} and {n} in total", "{n} 个": "{n}", "{n} 个出口": "{n} endpoints", "{n} 个账号在用": "{n} accounts using", "{n} 条订阅": "{n} subscriptions", "{percent}%({received} / {total} MB)": "{percent}% ({received} / {total} MB)", "✅ {ip}": "✅ {ip}", "✅ 「{name}」出口可用{ip}{took}": "✅ \"{name}\" endpoint available{ip}{took}", "✅ 内核下载完成,正在启动…": "✅ Kernel downloaded, starting…", "✅ 内核已手动导入到 {dir}": "✅ Kernel imported manually to {dir}", "✅ 已同步 Clash Verge 出口({n} 项变更)": "✅ Synced Clash Verge endpoints ({n} changes)", "✅ 连接成功": "✅ Connected", "✅ 连通性测试设置已保存": "✅ Connectivity test settings saved", "❌ 「{name}」{error}": "❌ \"{name}\": {error}", "❌ 连接失败": "❌ Connection failed", "「测试」与「批量测试」访问的目标;留空用默认(打 WorkBuddy 上游)。判据是能否拿到 HTTP 响应,不用考虑该网址返回什么内容。": "The target that \"Test\" and \"Test selected\" visit; leave empty for the default (the WorkBuddy upstream). The criterion is whether an HTTP response is received — what the URL returns does not matter.", "上传本地文件": "Upload a local file", "上次下载失败:{reason}": "Last download failed: {reason}", "上次下载已停止,未下载完的临时文件已删除": "Last download was stopped; the partial file was deleted", "上次同步": "Last sync", "上次测试": "Last test", "下载": "Download", "下载中…": "Downloading…", "下载内核": "Download kernel", "下载完成后可启动": "Start after the download completes", "下载已经完成,停止没赶上(内核已安装)": "The download finished before the stop took effect (kernel installed)", "下载线路": "Download route", "下载线路 / 存放目录没能写进配置(本次下载已按新设置走,重启后会恢复原值)": "The route / folder could not be saved to the config (this download uses the new settings; they revert after a restart)", "不再提供": "No longer available", "不再提醒": "Do not show again", "为降低维护成本、资源占用及合规风险,Agent2API 已停止提供代理订阅与内置代理内核相关功能。": "To reduce maintenance costs, resource usage and compliance risks, Agent2API no longer provides proxy subscriptions or built-in proxy kernel features.", "之前使用订阅节点?": "Previously using subscription nodes?", "也可以把二维码截图直接粘贴到弹窗里(Ctrl+V)": "You can also paste a QR code screenshot directly into this dialog (Ctrl+V)", "二维码里没有订阅链接": "No subscription URL found in the QR code", "从图片识别二维码": "Scan QR code from image", "代理主机只能填写域名或 IP 地址,不能包含协议、端口或路径": "Enter only a domain or IP address, without a protocol, port or path", "代理主机地址无效": "Invalid proxy host", "代理修改已保存": "Proxy changes saved", "代理内核": "Proxy kernel", "代理内核未安装(下载内核后,被账号或服务线路引用的节点会自动开监听端口)": "The proxy kernel is not installed. After downloading it, nodes referenced by accounts or service routes will automatically get listening ports.", "代理内核未安装(在「订阅管理」里下载内核后,被账号引用的节点会自动开监听端口)": "Proxy kernel is not installed (after downloading it in Subscription Management, referenced nodes automatically get a listening port)", "代理列表": "Proxy list", "代理列表加载失败:{reason}": "Failed to load proxy list: {reason}", "代理列表响应异常": "Unexpected proxy list response", "代理协议只支持 HTTP 或 SOCKS5": "Only HTTP and SOCKS5 proxies are supported", "代理名称": "Proxy name", "代理名称不能超过 60 个字符": "Proxy names must not exceed 60 characters", "代理已添加": "Proxy added", "代理格式无效,请按示例填写": "Invalid proxy format. Follow the examples.", "代理池": "Proxy pool", "代理池表": "Proxy pool table", "代理订阅功能已下线": "Proxy subscriptions have been discontinued", "代理设置": "Proxy settings", "代理设置响应异常": "Unexpected proxy settings response", "代理账号和密码不能超过 200 个字符": "Proxy usernames and passwords must not exceed 200 characters", "代理账号或密码的 URL 编码无效": "Invalid URL encoding in the proxy username or password", "以下行未能识别,已留在输入框中;修正后可再次解析。": "These lines could not be parsed and remain in the input. Correct them and parse again.", "使用情况": "Usage", "例如:我的机场": "e.g. My airport", "例如:香港 HTTP 出口": "e.g. Hong Kong HTTP endpoint", "保存代理": "Save proxy", "保存已有的代理地址,供账号与服务线路按需使用。": "Save existing proxy addresses for use by accounts and service routes as needed.", "保持原文件": "Keeping the current file", "停止下载": "Stop download", "停止下载失败:{reason}": "Failed to stop the download: {reason}", "停止请求已发出,但下载还没收手,稍后再看一次进度": "Stop requested, but the download has not stopped yet - check the progress again shortly", "先把下载的内核放到网关机器的目录,再填写文件或目录的绝对路径。目录内会查找官方包或 mihomo 二进制;远程面板不能读取浏览器电脑的路径。": "Place the downloaded kernel in a folder on the gateway machine, then enter its absolute file or folder path. Folders are searched for the official archive or mihomo binary. A remote panel cannot read paths on your browser's computer.", "先经过系统代理,再连接到此代理": "Connect through the system proxy first, then through this proxy", "全选当前筛选出的出口": "Select all filtered endpoints", "全选所有代理": "Select all proxies", "全选({n} 个)": "Select all ({n})", "全部协议": "All protocols", "全部提供方": "All vendors", "全部订阅": "All subscriptions", "关掉这个窗口不会中断下载(它在后台继续跑)—— 要停下就点下面的「停止下载」,未下载完的临时文件会被删除。": "Closing this window does not interrupt the download (it keeps running in the background) - to stop it, click \"Stop download\" below; the partial file is deleted.", "关闭代理后,引用它的账号回退直连。连通性以最近一次检测结果为准。": "Disabling a proxy makes accounts referencing it fall back to direct connections. Connectivity reflects the most recent check.", "关闭内核": "Stop kernel", "关闭内核失败:{reason}": "Failed to stop the kernel: {reason}", "其中 {n} 条正被账号使用 —— 删除后那些账号会回退直连。": "{n} of them are in use by accounts — those accounts will fall back to direct connections after deletion.", "其中 {n} 条正被账号使用 —— 删除后需重新设置相关账号的代理,不会自动直连。": "{n} selected proxies are in use. After deletion, reconfigure the affected accounts; they will not connect directly automatically.", "其中 {n} 条是同步来的只读条目(Clash / 订阅):可参与批量测试,删除会跳过": "{n} of the selected entries are synced read-only entries (Clash / subscriptions): they can be batch-tested, but deletion skips them", "其中 {n} 条来自 Clash 同步:可参与批量测试,删除会跳过": "{n} of the selected entries come from Clash sync: they can be batch-tested, but deletion skips them", "内核 {version}": "Kernel {version}", "内核 {version}({asset})": "Kernel {version} ({asset})", "内核下载": "Kernel download", "内核下载失败:{reason}": "Kernel download failed: {reason}", "内核二进制 / 配置 / 端口映射都会放在这里,默认 {dir};目录不存在会在下载开始时自动创建。": "The kernel binary, its config and the port map all live here. Default: {dir}. The folder is created automatically when the download starts.", "内核启动失败:{reason}": "Kernel failed to start: {reason}", "内核导入仍在后台执行,请刷新状态查看结果": "Kernel import is still running in the background. Refresh the status to check the result.", "内核导入任务排队中…": "Kernel import is queued…", "内核导入失败": "Kernel import failed", "内核导入状态已变化,请刷新后确认": "The kernel import status has changed. Refresh to check the result.", "内核已停止": "Kernel stopped", "内核已停止,点「启动内核」拉起": "Kernel stopped — click \"Start kernel\" to launch it", "内核已关闭(订阅与端口注册表保留,「启动内核」后原位恢复)": "Kernel stopped (subscriptions and the port registry are kept; ports are restored in place after \"Start kernel\")", "内核已导入,但启动失败:{reason}": "Kernel imported, but startup failed: {reason}", "内核已导入,但存放目录未能保存,重启网关后会恢复原位置": "The kernel was imported, but its folder could not be saved. The previous location will be restored after restarting the gateway.", "内核已手动关闭": "Kernel manually stopped", "内核已手动关闭(点「启动内核」拉起)": "Kernel manually stopped — click \"Start kernel\" to launch it", "内核文件必须非空且不超过 {max} MiB": "The kernel file must not be empty or exceed {max} MiB", "内核未安装": "Kernel not installed", "内核正在启动…": "Kernel is starting…", "内核正在执行操作,请稍后重试": "A kernel operation is in progress. Try again shortly.", "内核没有在超时内停下来": "the kernel did not stop within the timeout", "内核目录没能删掉(可能仍被进程占用),稍后重试一次": "The kernel folder could not be removed — a process may still hold it. Try again in a moment.", "内核运行中": "Kernel running", "出口 IP {ip}": "Exit IP {ip}", "出口可用": "Proxy available", "出口测试网址": "Connectivity test URL", "删除代理": "Delete proxy", "删除内核": "Delete kernel", "删除内核失败:{reason}": "Failed to delete the kernel: {reason}", "删除订阅": "Delete subscription", "刷新中…": "Refreshing…", "刷新失败:{reason}": "Refresh failed: {reason}", "功能调整通知": "Feature change notice", "勾选「{name}」": "Select \"{name}\"", "单个添加": "Add one", "去获取": "Get one", "另有 {n} 条是同步来的只读条目(Clash / 订阅),将跳过。": "{n} more entries are synced read-only entries (Clash / subscriptions) and will be skipped.", "另有 {n} 条来自 Clash Verge 同步,将跳过(请到 Clash Verge 里删)。": "{n} more entries come from Clash Verge sync and will be skipped (delete them in Clash Verge).", "只读:在 Clash Verge 里改": "Read-only: edit it in Clash Verge", "只读:在「订阅管理」里改": "Read-only: edit it under \"Manage subscriptions\"", "同步 Clash Verge": "Sync Clash Verge", "同步中…": "Syncing…", "同步失败:{reason}": "Sync failed: {reason}", "名字与端口在 Clash Verge 里改;启用可在本页关闭": "Edit the name and port in Clash Verge; the enable switch can be turned off on this page", "名字与端口跟随订阅与内核;启用可在本页关闭": "Name and port follow the subscription and kernel; the enable switch can be turned off on this page", "后台继续": "Continue in background", "启动内核": "Start kernel", "启用订阅「{name}」": "Enable subscription \"{name}\"", "启用这条代理": "Enable this proxy", "启用这条订阅": "Enable this subscription", "启用(禁用后,使用此代理的账号请求将失败;仍可测试)": "Enabled (disabling blocks requests from accounts using this proxy; testing remains available)", "启用(禁用的条目不会被账号使用,被引用时账号回退直连;仍可测试)": "Enabled (disabled entries are not used by accounts — an account referencing one falls back to a direct connection; testing still works)", "启用(禁用的订阅不参与内核同步,它的节点会从代理池移除)": "Enabled (disabled subscriptions are not synced by the kernel, and their nodes are removed from the proxy pool)", "图片读取失败": "Failed to read the image", "地址": "Address", "地址不完整": "Incomplete address", "地址由网关所在设备访问;本机代理需运行在该设备上。": "The gateway device connects to this address. A local proxy must run on that device.", "复制下载链接": "Copy download link", "复制订阅链接": "Copy subscription URL", "失败 {n} 个({reason})": "{n} failed ({reason})", "存放位置": "Folder", "存放位置 {dir}": "Folder {dir}", "存放位置要填绝对路径,例如 D:\\proxy-kernel": "The folder must be an absolute path, for example D:\\proxy-kernel", "家庭宽带": "Home broadband", "导入内核": "Import kernel", "导入并替换": "Import and replace", "导入来源": "Import source", "将替换现有代理内核,运行中的连接会短暂中断。订阅、账号引用与端口映射会保留。是否继续?": "The existing proxy kernel will be replaced, briefly interrupting active connections. Subscriptions, account references and port mappings will be kept. Continue?", "展开其余 {n} 个 ▾": "Show {n} more ▾", "已下载?手动导入": "Already downloaded? Import manually", "已保存。重启内核后,新分配的节点端口才会按新范围来。": "Saved. After the kernel restarts, newly allocated node ports will follow the new range.", "已保存「{name}」": "Saved \"{name}\"", "已停止下载内核(未下载完的临时文件已删除)": "Kernel download stopped (the partial file was deleted)", "已删除 {n} 个代理": "Deleted {n} proxies", "已删除「{name}」": "Deleted \"{name}\"", "已删除内核(订阅与账号引用保留,重新下载后会重新分配端口)": "Kernel deleted (subscriptions and account references are kept; ports are reassigned after you download it again)", "已删除内核(订阅与账号引用保留;有文件仍被占用,将在下次启动时清理)": "Kernel deleted (subscriptions and account references are kept; some files are still in use and will be cleaned up on the next launch)", "已刷新「{name}」,正在同步节点…": "Refreshed \"{name}\"; syncing nodes…", "已启用 {n} 个": "{n} enabled", "已启用「{name}」": "Enabled \"{name}\"", "已启用「{name}」,正在补建监听端口(内核重建中)": "Enabled \"{name}\"; rebuilding its listening port (kernel is restarting)", "已在本页禁用(打开开关即恢复)": "Disabled on this page (turn the switch on to restore it)", "已新增「{name}」": "Added \"{name}\"", "已新增订阅「{name}」,内核正在同步节点…": "Added subscription \"{name}\"; the kernel is syncing nodes…", "已是最新,没有需要同步的变更": "Already up to date — no changes to sync", "已有手动配置不受此次调整影响。你仍可添加 HTTP / SOCKS5 地址,并使用连通性测试。": "Existing manual configurations are not affected. You can still add HTTP / SOCKS5 addresses and test connectivity.", "已有手动配置和 Clash Verge 端点引用不受影响。仍可添加 HTTP / SOCKS5 地址、同步 Clash Verge 端点并测试连通性;Clash Verge 由你自行安装和运行。": "Existing manual configurations and Clash Verge endpoint references are not affected. You can still add HTTP / SOCKS5 addresses, sync Clash Verge endpoints and test connectivity. Install and run Clash Verge separately.", "已有账号引用它,但内核还没把监听端口补建出来 —— 稍等片刻,或重新启用这条节点": "An account already references it, but the kernel has not created the listening port yet — wait a moment, or re-enable this node", "已有账号或服务线路引用它,监听端口尚未就绪;请稍等,或检查内核状态": "An account or service route references this node, but its listening port is not ready. Wait a moment or check the kernel status.", "已禁用": "Disabled", "已禁用「{name}」": "Disabled \"{name}\"", "已禁用「{name}」,监听端口正在关闭(内核重建中)": "Disabled \"{name}\"; its listening port is closing (kernel is restarting)", "已禁用(未开监听端口)": "Disabled (no listening port)", "已移除的订阅": "Removed subscription", "已识别 {n} 条 · 已勾选 {selected} 条": "{n} parsed · {selected} selected", "已识别 {n} 条代理,跳过 {duplicates} 条重复地址": "Parsed {n} proxies and skipped {duplicates} duplicates", "已识别订阅链接": "Subscription URL recognized", "已选择「{name}」,保存后导入": "Selected \"{name}\" - imported on save", "已配置认证": "Authentication configured", "当前客户端不支持手动导入内核,请更新或刷新页面": "This client does not support manual kernel import. Update it or refresh the page.", "当前没有正在进行的下载": "There is no download in progress", "当前环境不支持代理池(桥接方法缺失)": "Proxy pool is not supported in this environment (bridge method missing)", "当前环境不支持代理测试(桥接方法缺失)": "Proxy testing is not supported in this environment (bridge method missing)", "当前环境不支持代理设置(桥接方法缺失)": "Proxy settings are not supported in this environment (bridge method missing)", "当前环境不支持同步(桥接方法缺失)": "Sync is not supported in this environment (bridge method missing)", "当前环境不支持启停(桥接方法缺失)": "Enabling/disabling is not supported in this environment (bridge method missing)", "当前环境不支持订阅(桥接方法缺失)": "Subscriptions are not supported in this environment (bridge method missing)", "当前环境不支持选择文件夹,直接填写绝对路径即可": "This environment cannot open a folder picker - just type the absolute path", "当前线路不可用:{error};重新选一条或切回直连": "The current route is unavailable: {error}. Pick another one or switch back to direct", "我知道了": "Got it", "所属订阅已删除,这条节点不会再分配端口 —— 可以删除它": "Its subscription was deleted, so this node will never get a port — you can delete it", "手动下载官方内核": "Download official kernel manually", "手动代理与 Clash Verge 同步仍然保留": "Manual proxies and Clash Verge sync remain available", "手动代理仍然保留": "Manual proxies remain available", "手动填写的地址与端口": "Manually entered address and port", "手动导入内核": "Import kernel manually", "打开文件夹选择框失败:{reason}": "Failed to open the folder picker: {reason}", "批量删除": "Delete selected", "批量删除代理": "Delete selected proxies", "批量测试": "Test selected", "批量测试完成:{ok} 个可用、{failed} 个失败(共 {total} 个)": "Batch test complete: {ok} available, {failed} failed ({total} total)", "批量测试完成:{ok} 个可用(共 {total} 个)": "Batch test complete: {ok} available ({total} total)", "批量测试({n})": "Test selected ({n})", "批量添加": "Add in bulk", "批量添加响应异常,请刷新代理列表确认后再试": "Unexpected batch response. Refresh the proxy list to check what was saved before retrying.", "批量添加完成:新增 {added} 条,重复 {duplicates} 条,失败 {failed} 条": "Batch complete: {added} added, {duplicates} duplicates, {failed} failed", "批量添加({n})": "Add selected ({n})", "按协议筛选": "Filter by protocol", "按提供方筛选": "Filter by vendor", "按来源筛选": "Filter by source", "按需下载(约 20-40MB)": "Downloaded on demand (~20-40MB)", "按需下载(约 20-40MB),只在启用订阅功能时需要": "Downloaded on demand (~20-40MB), only needed when subscriptions are used", "控制端口 {port} · {n} 个节点监听器": "control port {port} · {n} node listeners", "搜索代理": "Search proxies", "搜索名称 / 地址 / 端口": "Search name / address / port", "搜索节点": "Search endpoints", "支持官方压缩包和解压后的内核二进制;只接受当前版本,SHA-256 校验不通过时不会替换现有内核。": "Official archives and extracted kernel binaries are supported. Only the current version is accepted; a failed SHA-256 check leaves the existing kernel unchanged.", "支持手动地址与 Clash Verge 端点同步,不接管代理服务的安装与运行。": "Supports manually entered addresses and Clash Verge endpoint sync; proxy service installation and execution are not managed here.", "文件或目录路径": "File or folder path", "文件读取失败": "Failed to read the file", "新增代理": "New proxy", "新增方式": "Add mode", "新增订阅": "New subscription", "新解析的代理默认使用非直连": "Use chained connections for newly parsed proxies", "显示 {n} / 共 {total} 个出口": "Showing {n} / {total} endpoints", "暂未使用": "Not in use", "更新中…": "Updating…", "更新出网线路已保存,正在准备监听端口": "The update route has been saved; preparing its listening port.", "替换代理内核": "Replace proxy kernel", "最近检测": "Last check", "有 {n} 个账号正在使用它({names})—— 删除后这些账号会回退直连。": "{n} accounts are currently using it ({names}) — they will fall back to direct connections after deletion.", "有 {n} 个账号正在使用它({names})—— 删除后需重新设置这些账号的代理,不会自动直连。": "{n} accounts use this proxy ({names}). After deletion, reconfigure their proxies; they will not connect directly automatically.", "有 {n} 个账号正在使用它,删除后这些账号会回退直连。": "{n} accounts use this proxy. Deleting it makes those accounts fall back to direct connections.", "有 {n} 个账号正在使用它,删除后需重新设置这些账号的代理,不会自动直连。": "{n} accounts use this proxy. After deletion, reconfigure their proxies; they will not connect directly automatically.", "未同步": "Not synced", "未检测": "Not checked", "未检测到 Clash Verge:{reason}": "Clash Verge not detected: {reason}", "未测试": "Not tested", "未知错误": "Unknown error", "未选择文件": "No file selected", "本地 YAML 文件": "Local YAML file", "本地文件": "Local file", "本地文件不会自动更新:要更新节点,重新选择文件后保存;不重选则内容保持不变。": "Local files do not update automatically: to update the nodes, pick the file again and save; without re-picking, the content stays unchanged.", "本地文件订阅无需更新(要换内容请编辑后重新选择文件)": "Local-file subscriptions need no update (to change the content, edit it and pick the file again)", "本地文件订阅的内容在导入时固定:节点会由内核起成本地监听器并镜像进代理池,节点数稍等几秒由轮询刷新。": "A local-file subscription's content is fixed at import time: the kernel starts the nodes as local listeners and mirrors them into the proxy pool; the node count refreshes by polling in a few seconds.", "本页可编辑、可删除": "Editable and deletable on this page", "来自 Clash Verge 同步(名称、端口跟随 Clash),请到 Clash Verge 中修改;启用可在本页关闭": "Synced from Clash Verge (name and port follow Clash); edit them in Clash Verge. The enable switch can be turned off on this page.", "正在下载内核": "Downloading kernel", "正在停止…": "Stopping…", "正在安装内核…": "Installing kernel…", "正在导入…": "Importing…", "正在开始…": "Starting…", "正在校验内核…": "Verifying kernel…", "正在读取并上传文件…": "Reading and uploading file…", "正在连接 GitHub…": "Connecting to GitHub…", "正常": "Active", "此代理用于{services};删除后这些线路将不可用,不会自动回退直连。": "This proxy is used for {services}. Deleting it makes those routes unavailable; they will not fall back to a direct connection.", "此代理用于软件 / 插件更新;删除后这些线路将不可用,不会自动回退直连。": "This proxy is used for software / plugin updates. Deleting it makes those routes unavailable; they will not automatically fall back to direct connections.", "每次最多添加 {n} 条代理": "Add up to {n} proxies at a time", "每行一条,解析后可修改名称、设置非直连并测试,最后保存勾选的代理。": "Enter one proxy per line. Parse the list, edit names, choose chained connections and test, then save the selected proxies.", "没有匹配「{kw}」的出口": "No endpoints match \"{kw}\"", "没有匹配当前筛选的出口": "No endpoints match the current filters", "没有可全选的代理": "No proxies to select", "没有可删除的条目": "No entries to delete", "没能同步:{reason}": "Could not sync: {reason}", "测试中 {done}/{total}": "Testing {done}/{total}", "测试失败:{reason}": "Test failed: {reason}", "测试目标网址": "Test target URL", "测试结果没能记下:{reason}": "Could not save the test result: {reason}", "测试网址要以 http:// 或 https:// 开头": "The test URL must start with http:// or https://", "测试设置": "Test settings", "添加一个 HTTP 或 SOCKS5 地址,之后可以在账号或服务线路中选择使用。": "Add an HTTP or SOCKS5 address to use with accounts or service routes.", "添加单个": "Add proxy", "添加手动 HTTP / SOCKS5 地址,或同步 Clash Verge 的端点,供账号与服务线路使用。": "Add a manual HTTP / SOCKS5 address or sync Clash Verge endpoints for use by accounts and service routes.", "添加第一个代理": "Add your first proxy", "清空已识别": "Clear parsed list", "清空筛选": "Clear filters", "确定删除「{name}」?{used}": "Delete \"{name}\"? {used}", "确定删除「{name}」?它在代理池里的节点会一并移除,引用这些节点的账号会回退直连。": "Delete \"{name}\"? Its nodes in the proxy pool will be removed too, and accounts referencing them will fall back to direct connections.", "确定删除「{name}」?": "Delete \"{name}\"?", "确定删除已下载的内核{version}?内核文件与端口映射会被移除,订阅节点会失去监听端口(地址列显示「端口准备中」),引用它们的账号会暂时回退直连;订阅本身保留,重新下载内核后会重新分配端口。": "Delete the downloaded kernel{version}? The kernel files and the port mapping will be removed, subscription nodes lose their listening ports (the address column shows \"Port pending\"), and accounts referencing them fall back to a direct connection for now. The subscriptions themselves are kept, and ports are reassigned after you download the kernel again.", "确定删除选中的 {n} 个代理?": "Delete the {n} selected proxies?", "禁用后本端不再用它(引用它的账号回退直连),并会关掉它的本地监听端口": "Once disabled this machine stops using it (accounts referencing it fall back to direct), and its local listening port is closed", "禁用后本端不再用它(引用它的账号回退直连);端口在 Clash Verge 侧,不受影响": "Once disabled this machine stops using it (accounts referencing it fall back to direct); the port stays as it is on the Clash Verge side", "立即更新": "Update now", "端口范围必须是 1-65535 的整数": "The port range must be integers from 1 to 65535", "第 {line} 行:{error}": "Line {line}: {error}", "类型": "Type", "粘贴代理列表后点击「解析」": "Paste a proxy list, then click Parse", "编辑代理": "Edit proxy", "编辑订阅": "Edit subscription", "网关已切换,请重新打开代理弹窗": "The gateway has changed. Reopen the proxy dialog.", "网关未返回内核导入任务,请刷新状态后确认": "The gateway did not return a kernel import task. Refresh the status to check the result.", "网关机器上的文件或目录": "File or folder on the gateway machine", "节点": "Nodes", "节点由内核起成本地监听器,镜像进代理池": "Nodes are started as local listeners by the kernel and mirrored into the proxy pool", "节点端口范围 {base}–{end}": "Node port range {base}–{end}", "节点端口范围(结束)": "Node port range (end)", "节点端口范围(起始)": "Node port range (start)", "解析": "Parse", "订阅": "Subscriptions", "订阅与 Clash 的出口自动镜像进来": "Subscription and Clash endpoints are mirrored in automatically", "订阅内容由内核定时刷新(每 24 小时);节点数与同步状态在保存后由轮询刷新,稍等几秒。": "Subscription content is refreshed by the kernel on a schedule (every 24 hours); node count and sync state refresh by polling after saving — give it a few seconds.", "订阅导入与更新、订阅节点管理,以及代理内核的下载、安装和运行。": "Subscription import and updates, subscription node management, and proxy kernel download, installation and execution.", "订阅来源": "Subscription source", "订阅管理": "Manage subscriptions", "订阅管理({n})": "Manage subscriptions ({n})", "订阅节点会在本机各占一个监听端口,从该范围里挑空闲的分配;节点多的大订阅把默认范围({base}-{end})用尽时会报「没有可用的节点端口」,这时把范围调大再重启内核。已分配出去的端口不会因改范围而失效。": "Each subscription node takes one local listener port, allocated from free ports in this range; when a large subscription exhausts the default range ({base}-{end}) the app reports \"no free node ports\" — enlarge the range and restart the kernel. Ports already allocated stay valid when the range changes.", "订阅里的节点会自动同步进下方代理池,账号即可引用。": "Nodes from subscriptions are synced into the proxy pool below, ready for accounts to use.", "订阅里的节点会自动同步进代理池,账号即可引用。": "Nodes from the subscription are synced into the proxy pool automatically, ready for accounts to use.", "订阅里的节点会被内核起成本地监听器,镜像到代理池(账号按 id 引用,与本页其它出口同一用法)。内核只在用到订阅时按需下载(约 20-40MB),不随安装包分发。": "Nodes from subscriptions are started as local listeners by the kernel and mirrored into the proxy pool (accounts reference them by id, same as every other endpoint on this page). The kernel is only downloaded on demand when subscriptions are in use (~20-40MB), and is not bundled with the installer.", "订阅链接": "Subscription URL", "识别中…": "Recognizing…", "该节点所属订阅已删除,不会再被同步更新,可手动删除清理": "The subscription this node belonged to has been deleted; it will no longer be synced and can be deleted manually", "该节点来自订阅(名称、端口跟随订阅与内核),请在「订阅管理」里修改;启用可在本页关闭": "This node comes from a subscription (name and port follow the subscription and kernel); edit them under \"Manage subscriptions\". The enable switch can be turned off on this page.", "请下载与网关平台一致的官方内核,不是浏览器所在设备的平台。": "Download the official kernel for the gateway's platform, not the device running your browser.", "请填写代理名称": "Enter a proxy name", "请填写已有代理服务的 HTTP / SOCKS5 地址,或自行运行 Clash Verge 后同步端点,并重新为相关账号和服务线路选择代理。": "Enter the HTTP / SOCKS5 address of an existing proxy service, or run Clash Verge separately and sync its endpoints, then select a proxy again for the affected accounts and service routes.", "请填写网关机器上的绝对文件或目录路径": "Enter an absolute file or folder path on the gateway machine", "请改为填写已有代理服务的 HTTP / SOCKS5 地址,并重新为相关账号和服务线路选择代理。": "Enter the HTTP / SOCKS5 address of an existing proxy service, then select a proxy again for the affected accounts and service routes.", "请选择要导入的 YAML 文件": "Select a YAML file to import first", "请选择要导入的内核文件": "Select a kernel file to import", "读取失败:{reason}": "Load failed: {reason}", "起始端口不能大于结束端口": "The start port cannot be greater than the end port", "跳过 {n} 个(Clash 同步)": "skipped {n} (Clash sync)", "跳过 {n} 个(同步只读条目)": "skipped {n} (synced read-only entries)", "软件 / 插件更新": "Software / plugin updates", "还没有代理。点右上角「+ 新增代理」手填一个,或在「订阅管理」里导入订阅节点、同步 Clash Verge 的出口。": "No proxies yet. Click \"+ New proxy\" in the top right to fill one in manually, or import subscription nodes / sync Clash Verge endpoints under \"Manage subscriptions\".", "还没有代理。点右上角「+ 新增代理」手填一个,或点「同步 Clash Verge」把 Clash 的出口导进来。": "No proxies yet. Click \"+ New proxy\" in the top right to fill one in manually, or click \"Sync Clash Verge\" to import Clash endpoints.", "还没有订阅。点右上角「+ 新增订阅」粘贴订阅链接,或从图片识别二维码导入。": "No subscriptions yet. Click \"+ New subscription\" in the top right to paste a subscription URL, or import one by scanning a QR code from an image.", "还没有订阅:粘贴订阅链接、导入本地 YAML 文件,或从图片识别二维码。": "No subscriptions yet: paste a subscription URL, import a local YAML file, or scan a QR code from an image.", "还没有订阅:粘贴订阅链接,或从图片识别二维码导入。": "No subscriptions yet: paste a subscription URL, or scan a QR code from an image.", "还没有账号使用它(端口只在被账号引用时才分配 —— 在账号里选它并保存后,内核会自动开端口)": "No account is using it yet (a port is only assigned once an account references the node — select it in an account and save, and the kernel opens the port automatically)", "还没有账号或服务线路使用它;在账号或更新设置中选中并保存后,内核会自动开端口": "No account or service route uses this node yet. Select it in account or update settings and save to have the kernel open a port automatically.", "这是网关机器上的安装目录,留空使用默认位置。导入会复制文件并建立版本目录,不删除原下载文件。": "This is the installation folder on the gateway machine. Leave it empty for the default location. Import copies the file into a versioned folder without deleting your original download.", "这条在 Clash Verge 里是停用的,本页启用不生效 —— 到 Clash Verge 里打开它": "This listener is disabled in Clash Verge, so enabling it here has no effect — turn it on in Clash Verge", "这里只连接你提供的代理地址,不接管代理服务的安装与运行。": "Only connects to the proxy addresses you provide; proxy service installation and execution are not managed here.", "连接成功": "Connected", "连通性": "Connectivity", "连通性测试设置": "Connectivity test settings", "选中的 {n} 条都是同步来的只读条目(Clash / 订阅),不能删除": "All {n} selected entries are synced read-only entries (Clash / subscriptions) and cannot be deleted", "选中的 {n} 条都来自 Clash Verge 同步,不能删除(请到 Clash Verge 里删)": "All {n} selected entries come from Clash Verge sync and cannot be deleted (delete them in Clash Verge)", "选中的代理用于{services};删除后这些线路将不可用,不会自动回退直连。": "The selected proxies are used for {services}. Deleting them makes those routes unavailable; they will not fall back to a direct connection.", "选择 YAML 文件…": "Choose a YAML file…", "选择内核文件…": "Choose kernel file…", "选择目录…": "Choose folder…", "选项来自「网络代理」页(Clash Verge 同步的出口在这里可用;订阅节点要等内核起来才有端口)。选「直连」时连不上会自动借 Clash 混合端口重试一次;选定某条线路后只走它。": "Options come from the \"Network proxy\" page (Clash Verge exports are usable here; subscription nodes only get a port once the kernel is running). With \"Direct\", a failed attempt retries once through the Clash mixed port; an explicitly picked route is the only one used.", "通过代理访问该网址,检查是否能收到 HTTP 响应。留空沿用网关默认值。": "Access this URL through the proxy to check for an HTTP response. Leave it empty to use the gateway default.", "部分测试结果没能记下:{reason}": "Some test results could not be saved: {reason}", "重启内核": "Restart kernel", "重新选择文件…": "Choose a different file…", "需要干净的出口?": "Need a clean exit?", "需要用户名和密码(可选)": "Username and password required (optional)", "非直连": "Chained", "非直连代理": "Chain through system proxy", "非直连会先经过网关所在设备的系统代理,再连接到此代理;系统代理不可用时不会改走直连。": "Connect through the gateway device's system proxy first, then through this proxy. If the system proxy is unavailable, requests will not fall back to a direct connection.", "首次购买使用优惠码 AGENT2API25 享 75 折。": "Use code AGENT2API25 for 25% off your first purchase.", "+ 新增代理": "+ New proxy", "+ 新增订阅": "+ New subscription", ",": ", ", " 或 ": " or ", "Anthropic SDK 会自动携带版本头;手写 Messages 请求可使用 2023-06-01。/v1/models 收到该头或 x-api-key 时返回 Anthropic 列表形态。": "The Anthropic SDK adds its version header automatically; handwritten Messages requests can use 2023-06-01. /v1/models returns the Anthropic list format when it receives that header or x-api-key.", "Anthropic 业务错误结构示例": "Anthropic business error structure example", "Anthropic 官方 SDK / Claude Code 使用的根地址:": "Root address for the official Anthropic SDK / Claude Code: ", "Anthropic 标准要求显式填写正整数。网关对缺失或无效值补 8192,但上游模型的实际预算仍可能更低。": "The Anthropic standard requires an explicit positive integer. The gateway substitutes 8192 for missing or invalid values, but the upstream model may have a lower budget.", "Antigravity 支持宽高比 1:1、2:3、3:2、3:4、4:3、4:5、5:4、9:16、16:9、21:9,尺寸会映射到原生 1K / 2K / 4K 档。请求最长边 ≤1792 为 1K,1793–3072 为 2K,3073–4096 为 4K;超过 4096 会被该提供商拒绝。": "Antigravity supports aspect ratios 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, and 21:9, mapping sizes to native 1K / 2K / 4K tiers. Requested longest edges ≤1792 map to 1K, 1793–3072 to 2K, and 3073–4096 to 4K; this provider rejects values above 4096.", "Antigravity 的 size=auto 生成使用 1:1、1K;参考图编辑使用 1K 且不强制正方形。模型版本可能有更严格的输出限制;宽高比需接近支持值,不能任意指定像素尺寸。": "For Antigravity, size=auto generates at 1:1 and 1K; reference editing uses 1K without forcing a square. Model versions may have stricter output limits. Aspect ratios must be close to supported values; arbitrary pixel sizes are not supported.", "Base URL 填进客户端的「API 地址 / Base URL」栏;对话协议按客户端支持的类型三选一(Chat Completions / Responses / Anthropic Messages),三者共用同一套模型与账号池,可随时切换;鉴权用「网关 Key」页里任一启用 Key。": "Put the Base URL into your client's \"API address / Base URL\" field; choose one of the three chat protocols based on what your client supports (Chat Completions / Responses / Anthropic Messages); all three share the same models and account pool, so you can switch at any time; authenticate with any enabled Key from the Gateway Key page.", "Chat 流式成功通常以 data: [DONE] 收尾。需要同时处理 delta.content、思考字段和 delta.tool_calls;工具参数可能跨多个增量拼接。": "Successful Chat streams normally end with data: [DONE]. Handle delta.content, reasoning fields, and delta.tool_calls; tool arguments may need to be assembled across multiple deltas.", "Chat、Responses 和图片接口通常返回 error 对象,其中 message 是可读说明,type 是错误类别,code 与 upstream_code 按情况附带。Anthropic 业务错误使用 type=error 的信封;鉴权中间件、无效 JSON 或网关层错误也可能返回通用 error 形态。": "Chat, Responses, and image endpoints normally return an error object: message describes the error, type classifies it, and code and upstream_code are optional. Anthropic business errors use a type=error envelope; authentication middleware, invalid JSON, and gateway-level errors may also use the generic error shape.", "Claude Code / Anthropic SDK(token 计数:/v1/messages/count_tokens)": "Claude Code / Anthropic SDK (token counting: /v1/messages/count_tokens)", "Claude Code / Anthropic SDK;模型与账号池和 OpenAI 入口共用。": "Claude Code / Anthropic SDK; shares models and the account pool with the OpenAI endpoints.", "Codex / 新版 OpenAI SDK;无状态转发,历史由客户端携带。": "Codex / newer OpenAI SDKs; stateless forwarding with client-supplied history.", "GET /health 返回 status=ok 或 degraded。公网安全模式只返回简化探活信息;HTTP 200 或 status=ok 不代表所有提供商在线、账号有额度或图片模型可调用。": "GET /health returns status=ok or degraded. Public-network secure mode exposes only simplified liveness information. HTTP 200 or status=ok does not mean every provider is online, accounts have quota, or image models are callable.", "GET /health、GET /v1/models 和网关临时图片下载不强制检查 Key。模型清单可在配 Key 前读取,但这不能证明 Key 正确;应以携带该 Key 的实际业务请求为准。": "GET /health, GET /v1/models, and temporary gateway image downloads do not require a Key. Reading the model list before configuring a Key does not validate it; only an actual protected request with that Key can do so.", "HTTP(S) 参考图由网关服务器下载,不携带网关 Key 或提供商凭证。外链必须能被网关无额外请求头访问;本机、内网、带用户名密码或不安全重定向地址会被拒绝。受保护图片建议直接上传文件。": "The gateway server downloads HTTP(S) references without gateway Keys or provider credentials. External URLs must be accessible without extra headers. Local, private-network, credential-bearing, or unsafe redirect addresses are rejected. Upload protected images directly instead.", "JSON 图片引用编辑请求": "JSON image-reference editing request", "JSON 图片生成请求": "JSON image generation request", "JSON 的 images 是对象数组,每项只能包含 image_url。接受完整 HTTP(S) URL、data:image/...;base64,...,或先前响应返回的完整网关临时图片链接;不接受裸 base64、相对路径、file_id 或本地文件路径。": "JSON images is an array of objects containing only image_url. Accepts absolute HTTP(S) URLs, data:image/...;base64,..., or full temporary gateway image URLs returned earlier. Raw base64, relative paths, file_id, and local file paths are not accepted.", "JSON 请求使用 application/json。图片编辑上传文件时使用 multipart/form-data;curl -F 会自动生成 boundary,不要手动覆盖此请求头。": "Use application/json for JSON requests and multipart/form-data when uploading files for image editing. curl -F generates the boundary automatically; do not override this header manually.", "Key 缺失、无效、停用,或上游认证失败。网关未收到 Key 时返回 model_api_key_required,无效 Key 返回 invalid_api_key;请检查请求头与「网关 Key」页。": "Missing, invalid, or disabled Key, or upstream authentication failure. The gateway returns model_api_key_required for a missing Key and invalid_api_key for an invalid one. Check request headers and the Gateway Key page.", "Key 缺失、无效、停用,或上游认证失败。网关鉴权失败通常为 invalid_api_key;检查请求头与「网关 Key」页,而不是仅重拉模型列表。": "Missing, invalid, or disabled Key, or upstream authentication failure. Gateway Key failures normally use invalid_api_key. Check headers and the Gateway Key page; refreshing the model list alone is insufficient.", "LLM 请求": "LLM requests", "Messages 响应结构": "Messages response structure", "Messages 请求": "Messages request", "ModelScope 不支持 style、mask 与 input_fidelity;quality 仅接受省略、auto 或 standard,background 仅接受省略、auto 或 opaque,moderation 仅接受省略或 auto。风格与修改目标请写入 prompt。": "ModelScope does not support style, mask or input_fidelity. quality accepts omission, auto or standard; background accepts omission, auto or opaque; moderation accepts omission or auto. Describe style and editing goals in prompt.", "ModelScope 使用官方异步任务接口,创建后只查询同一任务,不会为了等待结果重新提交。单次 n=1;size 可省略、设为 auto,或指定边长 64–2048 的 WIDTHxHEIGHT,具体型号可能进一步限制。": "ModelScope uses the official asynchronous task API. It polls the same task without resubmitting. Each request uses n=1; size may be omitted, auto, or WIDTHxHEIGHT with edges from 64–2048. Individual models may impose stricter limits.", "OpenAI Python SDK 图片示例": "OpenAI Python SDK image example", "OpenAI SDK 的 base_url 填「接口地址」章节中以 /v1 结尾的 Base URL,不要填完整的 /chat/completions。Anthropic 官方 SDK 与 Claude Code 的 ANTHROPIC_BASE_URL 填网关根地址,不带 /v1;它们会自行追加 /v1/messages。其他客户端是否自动追加 /v1,以其地址栏说明为准。": "Set the OpenAI SDK's base_url to the Base URL ending in /v1 in the API address chapter, not the full /chat/completions URL. For the official Anthropic SDK and Claude Code, set ANTHROPIC_BASE_URL to the gateway root without /v1; they append /v1/messages themselves. Other clients may append /v1 differently; follow their address-field instructions.", "OpenAI SDK 的 base_url 填上方以 /v1 结尾的 Base URL,不要填完整的 /chat/completions。Anthropic 官方 SDK 与 Claude Code 的 ANTHROPIC_BASE_URL 填网关根地址,不带 /v1;它们会自行追加 /v1/messages。其他客户端是否自动追加 /v1,以其地址栏说明为准。": "Set the OpenAI SDK's base_url to the Base URL above ending in /v1, not the full /chat/completions URL. For the official Anthropic SDK and Claude Code, set ANTHROPIC_BASE_URL to the gateway root without /v1; they append /v1/messages themselves. Other clients may append /v1 differently; follow their address-field instructions.", "OpenAI 兼容客户端使用此地址;Anthropic 官方 SDK 使用下方说明中的网关根地址。": "Use this address for OpenAI-compatible clients; the official Anthropic SDK uses the gateway root address described below.", "OpenAI 新协议(Codex、新版 SDK)": "Newer OpenAI protocol (Codex, newer SDKs)", "Python:生成、编辑并保存图片": "Python: generate, edit, and save images", "Responses 使用 function_call / function_call_output 配对,Anthropic 使用 tool_use / tool_result 配对。协议转换会处理这些格式,但不会替客户端执行自定义函数。上游原生搜索等服务端工具是否可用取决于提供商,不能当成网关统一能力。": "Responses pairs function_call with function_call_output; Anthropic pairs tool_use with tool_result. Protocol conversion handles these formats but does not execute custom functions for the client. Native upstream tools such as search depend on the provider, not a universal gateway capability.", "Responses 响应结构": "Responses response structure", "Responses 请求": "Responses request", "SDK 示例使用的环境变量": "Environment variables for the SDK example", "Token 估算响应": "Token estimate response", "Token 数量估算": "Token count estimate", "Token 自动续期": "Automatic token renewal", "WorkBuddy 走官方图片接口:size 省略或设为 auto 时按 1024x1024 请求;该通道不接受 quality、style、background 与 moderation,请把风格与质量要求写进 prompt。参考图以 data URL 内联在 JSON 请求里发送(不是 multipart),模型 id 由上游目录下发,换版本时以 /v1/models 为准。": "WorkBuddy uses its official image API: an omitted size, or size=auto, is requested as 1024x1024; this channel does not accept quality, style, background or moderation, so describe style and quality in the prompt. Reference images are sent inline as data URLs inside the JSON request (not multipart), and model ids come from the upstream catalog — check /v1/models when the version changes.", "base64 图片响应结构": "Base64 image response structure", "chat 用于三种对话入口;image 用于 /v1/images/generations 和 /v1/images/edits。不要把图片模型提交给对话入口。": "chat models use the three chat endpoints; image models use /v1/images/generations and /v1/images/edits. Do not submit image models to chat endpoints.", "count_tokens 在本地估算,不调用上游 tokenizer;返回 input_tokens 和 estimated=true。数值用于上下文预算,不用于精确计费,尤其不应当作图片的真实 Token 用量。": "count_tokens estimates locally without calling an upstream tokenizer. Returns input_tokens and estimated=true. Use it for context budgeting, not exact billing, especially not the actual token cost of images.", "curl -F 自动生成 multipart boundary。不要额外设置 Content-Type: application/json 或手写无 boundary 的 multipart/form-data;prompt 使用 --form-string 可避免特殊字符被当作文件上传。": "curl -F generates multipart boundaries. Do not add Content-Type: application/json or manually set multipart/form-data without a boundary. Use --form-string for prompt to avoid interpreting special characters as file uploads.", "response_format=b64_json 时返回不带 data URL 前缀的标准 base64。解码为二进制后保存;网页展示时自行加对应 MIME 类型前缀。": "With response_format=b64_json, returns standard base64 without a data URL prefix. Decode to binary and save. For web display, add the appropriate MIME prefix yourself.", "response_format=url 不保证永久地址;网关临时链接与 AI 助手会话中的图片存储是两套机制,不能混用接口或有效期。": "response_format=url does not guarantee permanent URLs. Temporary gateway links and assistant-session image storage are separate mechanisms; their endpoints and lifetimes are not interchangeable.", "response_format=url 时返回。可能是提供商签名链接,也可能是网关临时下载链接;应直接使用返回值,不要自行拼下载 id。": "Returned with response_format=url. May be a provider signed URL or temporary gateway download URL. Use the returned value directly; do not construct download ids yourself.", "stream 默认 false;true 返回 Anthropic 事件流。stop_sequences 映射为停止序列,是否支持取决于上游。": "stream defaults to false; true returns Anthropic events. stop_sequences maps to stop sequences, with support determined by the upstream.", "usage 的 prompt_tokens、completion_tokens、total_tokens 表示用量,不等于统一货币价格。上游未提供时可能缺失或为 0。": "usage.prompt_tokens, completion_tokens, and total_tokens measure usage, not a uniform monetary price. Values may be omitted or 0 when the upstream does not provide them.", "✓ 支持 · ✗ 不支持 · — 无此概念 · ? 未声明": "✓ Supported · ✗ Unsupported · — Not applicable · ? Undeclared", "。一把启用的 Key 都没有时不鉴权(默认网关只监听 127.0.0.1;在设置页开启「局域网访问」后监听所有网卡,鉴权与安全闸门随之启用)。": ". When no Key is enabled, auth is off (by default the Gateway listens only on 127.0.0.1; after you enable \"LAN access\" in Settings it listens on all network interfaces, and auth and security gates turn on with it).", "三种对话协议的流式错误需要检查事件内容与正常结束标记;HTTP 200 本身不足以证明成功。图片接口仅返回非流式 JSON。": "For all three chat protocols, check stream events and normal termination markers. HTTP 200 alone does not prove success. Image endpoints return non-streaming JSON only.", "上一章": "Previous chapter", "上传一张或多张参考图,并用提示词描述保留内容与修改目标。": "Upload one or more reference images and describe what to preserve and change in the prompt.", "上传一张本地参考图": "Upload one local reference image", "上传多张参考图": "Upload multiple reference images", "上传本地文件推荐 multipart/form-data;已经有图片 URL 或 base64 时可发送 application/json。除参考图字段外,参数与图片生成相同。": "Use multipart/form-data for local files, or application/json for existing image URLs or base64 data. Other than reference fields, parameters are shared with generation.", "下一章": "Next chapter", "下表是网关接受的参数范围,不是所有提供商都支持的范围。生成与编辑共用这些字段,具体上游可能进一步拒绝数量、质量、风格、背景或尺寸。": "This table shows parameters accepted by the gateway, not support shared by every provider. Generation and editing share these fields, while upstreams may impose stricter count, quality, style, background, or size limits.", "下载并保存网关临时图片": "Download and save a temporary gateway image", "下载返回原始图片二进制及 image/png、image/jpeg 或 image/webp Content-Type,不是 JSON。不存在或过期返回 404,响应使用 private, no-store 与 nosniff。": "Downloads return raw image bytes with image/png, image/jpeg, or image/webp Content-Type, not JSON. Missing or expired links return 404; responses use private, no-store and nosniff.", "不强制鉴权;仅用于确认网关可访问,不保证模型或额度可用。": "Authentication is not required; checks gateway reachability, not model or quota availability.", "不强制鉴权;携带有效 Key 可查看该 Key 获准使用的模型。": "Authentication is not required; a valid Key filters the list to models that Key is authorized to use.", "不携带 Anthropic 相关头时,模型接口返回 OpenAI 风格的 object=list、data 数组和 meta 摘要;携带 anthropic-version 或 x-api-key 时,返回 data、has_more、first_id、last_id,并保留能力扩展字段。": "Without Anthropic-related headers, the model endpoint returns the OpenAI-style object=list, data array, and meta summary. With anthropic-version or x-api-key, it returns data, has_more, first_id, and last_id while retaining capability extensions.", "不支持依赖服务端状态的 previous_response_id、conversation、托管提示词 prompt,以及 background=true;请由客户端保存并回传历史,不要调用未实现的 Responses 查询或删除接口。": "Server-state features previous_response_id, conversation, hosted prompt, and background=true are unsupported. Save and resend history on the client; do not call unimplemented Responses retrieval or deletion endpoints.", "不要把 base64 图片塞回对话文本或日志,也不要将“请求超时”理解为“没有扣费”。如需连续编辑,保存结果文件后再作为下一次 image 上传。": "Do not put image base64 into chat text or logs, and do not interpret a request timeout as 'not charged'. For successive edits, save the result and upload it as the next image.", "业务请求的 model 值。owned_by 表示目录条目的归属,不保证每次请求都由该提供商承载;同名模型与映射可能有多个路由。": "The model value for business requests. owned_by identifies the catalog entry's owner, not necessarily the provider serving each request; identical model names and mappings may have multiple routes.", "临时图片下载": "Temporary image download", "也可使用 x-api-key: YOUR_GATEWAY_KEY,常用于 Anthropic 客户端。两种鉴权头任选一种即可,不要填提供商账号令牌或面板登录令牌。": "Alternatively, use x-api-key: YOUR_GATEWAY_KEY, commonly used by Anthropic clients. Choose either authentication header; do not use provider account tokens or panel login tokens.", "仅可省略或设为 stream=false、partial_images=0。当前不支持图片事件流、渐进图片或流式部分结果。未知参数会被拒绝,不会静默忽略。": "Omit or set stream=false and partial_images=0. Image event streams, progressive images, and partial streaming results are unsupported. Unknown parameters are rejected, not silently ignored.", "仅在上游返回修改后的提示词时保留,不保证每个模型都有。": "Preserved only when the upstream returns a revised prompt; not every model provides one.", "仅在显式指定 output_format=jpeg 时支持,网关按 JPEG 质量参数编码。PNG、WebP 当前不支持此参数。": "Supported only with explicit output_format=jpeg; the gateway encodes using a JPEG quality setting. PNG and WebP do not currently support this parameter.", "仅用于响应返回的网关临时链接;{id} 必须替换为实际下载令牌。": "Only for temporary gateway URLs returned in responses; replace {id} with the actual download token.", "仍从当前网关目录选择对话模型,不要求模型名称一定以 claude 开头。具体能力以实际承载模型为准。": "Select a chat model from the current gateway catalog; its name need not start with claude. Capabilities depend on the model actually serving the request.", "估算输入 Token 数量": "Estimate input tokens", "使用 supports_image_editing=true 的图片模型。该接口是参考图编辑、重绘或合成,不是精确遮罩修补;当前不支持 mask 与 input_fidelity,也不支持 file_id。": "Use an image model with supports_image_editing=true. This endpoint edits, redraws, or combines references; it is not precise mask-based inpainting. mask, input_fidelity, and file_id are currently unsupported.", "使用与 Chat 相同的对话模型 id 和 Key 授权规则。": "Use the same chat model ids and Key authorization rules as Chat.", "使用同一客户端生成与编辑,并将返回的 base64 保存为图片文件。": "Generate and edit with one client, then save returned base64 as image files.", "使用支持工具调用的模型。函数声明、调用结果配对与多模态请求示例见「看图与工具调用」章节。": "Use a tool-capable model. See the Vision and tool calling chapter for function declarations, matched tool results and multimodal request examples.", "使用支持工具调用的模型。函数声明、调用结果配对与多模态请求示例见下一节。": "Use a tool-capable model. Function declarations, matched tool results, and multimodal examples are in the next section.", "使用说明与兼容边界": "Usage notes and compatibility", "健康检查": "Health check", "先前网关返回的 /v1/images/files/{id} 完整链接可在未过期时作为 JSON 参考图。不要把 AI 助手内部的 assistant-image:ID 当成对外接口图片 URL。": "A full /v1/images/files/{id} URL previously returned by this gateway can serve as a JSON reference while valid. Do not use the assistant's internal assistant-image:ID references as public API image URLs.", "先确定网关地址、Key 和模型,再选择客户端支持的协议。": "Determine the gateway address, Key, and model before choosing a protocol supported by your client.", "兼容 Anthropic 消息块与 SSE 事件,支持本地 Token 预算估算。": "Compatible Anthropic content blocks and SSE events, with local token budget estimates.", "兼容 Responses 请求与事件格式,适合 Codex 等客户端;不是服务端会话存储。": "Compatible Responses requests and events for clients such as Codex; not server-side conversation storage.", "内置 AI 助手已有 generate_images 与 edit_images 工具,可在助手设置中启用并按确认模式执行。外部 API 客户端不会自动获得这些工具;需要由客户端声明并实际调用图片接口。": "The built-in AI assistant has generate_images and edit_images tools, enabled in assistant settings and executed according to confirmation mode. External API clients do not receive these tools automatically; they must declare tools and call the image endpoints themselves.", "函数工具使用 Responses 的声明格式;工具结果以 function_call_output 携带相同 call_id。实际工具能力仍依赖模型与提供商。": "Use Responses-format function declarations. Return tool results as function_call_output with the matching call_id. Actual support depends on the model and provider.", "函数工具声明包含 name、description、input_schema;结果在后续 user 消息的 tool_result 块中携带对应 tool_use_id。": "Function tools declare name, description, and input_schema. Return results in tool_result blocks of a subsequent user message with the matching tool_use_id.", "分别可能表示请求中断或请求过大。参考图过大时需缩小图片或减少数量,原样重试不会解决;中断的图片任务可能已经消耗额度。": "May indicate interruption and oversized requests respectively. Reduce reference-image size or count; resending unchanged data will not help. Interrupted image jobs may already have consumed quota.", "分别控制输出上限与是否流式。stream 默认 false;true 返回 Responses 命名事件。": "Control the output limit and streaming. stream defaults to false; true returns named Responses events.", "分别表示工具调用与思考能力。是否生效仍取决于实际承载模型、提供商和相关设置。": "Indicate tool-calling and reasoning support respectively. Actual behavior also depends on the serving model, provider, and settings.", "分别请求思考档位与结构化输出;能力和可用取值依赖模型。不要因字段被接受就假定上游已经执行。": "Request reasoning effort and structured output respectively. Capabilities and values depend on the model; accepting a field does not prove the upstream applied it.", "协议兼容不保证工具、思考、结构化输出、透明背景或每个尺寸都被所有提供商支持。先查看当前模型能力和插件版本,再核对请求日志的承载提供商与错误摘要。": "Protocol compatibility does not guarantee every provider supports tools, reasoning, structured output, transparent backgrounds, or every size. Check model capabilities and plugin versions, then inspect the serving provider and error summary in request logs.", "单图可用 image=@reference.png,多图重复提交 image[]。也兼容 images、images[] 与 image[0] 这类数字索引字段;普通参数不能重复提交。": "Use image=@reference.png for one image, or repeat image[] for multiple images. images, images[], and numeric fields such as image[0] are also accepted. Regular parameters cannot be repeated.", "单轮可以是字符串;多轮使用消息与工具项数组,客户端应携带必要历史。文本块使用 input_text,图片块使用 input_image。": "Use a string for a single turn or an array of message and tool items for multiple turns, including required history. Text blocks use input_text; image blocks use input_image.", "参考图编辑": "Reference-image editing", "参考图编辑;支持 multipart 文件上传或 JSON 图片引用。": "Reference-image editing; accepts multipart file uploads or JSON image references.", "只支持这三种可解码图片格式,校验实际文件内容而不是仅看扩展名;单张最多 10 MiB,边长最多 8192。": "Only these three decodable formats are supported. Actual file contents are validated, not just extensions. Each image is limited to 10 MiB and edges of 8192 pixels.", "可用值为 auto、standard、hd、low、medium、high、xhigh、max。小浣熊与 Antigravity 仅接受省略、auto 或 standard;其他值是否有效取决于 Loomy 的具体模型。": "Accepted values: auto, standard, hd, low, medium, high, xhigh, max. Raccoon and Antigravity allow only omission, auto, or standard. Other values depend on the particular Loomy model.", "可省略,或使用 auto、WIDTHxHEIGHT,例如 1024x1024。网关校验边长 1–8192,提供商可能进一步限制宽高比与分辨率,不保证精确像素输出。": "Optional; use auto or WIDTHxHEIGHT, such as 1024x1024. The gateway validates edges from 1–8192; providers may further restrict aspect ratios and resolution. Exact output pixels are not guaranteed.", "可能是网关内部错误、上游异常、插件未接入、暂无可用账号、图片下载或编码失败。": "Possible internal gateway errors, upstream failures, missing plugin capabilities, unavailable accounts, or image download and encoding failures.", "可能是网关内部错误、上游异常、插件未接入、暂无可用账号、图片下载或编码失败。公网模式的 api_key_not_configured 表示必须先配置网关 Key。": "Possible internal gateway errors, upstream failures, missing plugin capabilities, unavailable accounts, or image download/encoding failures. api_key_not_configured in public-network mode means a gateway Key must be configured first.", "可能附带实际输出编码、用量或点数。usage 与 points_consumed 取决于上游,缺失不代表免费;若未要求固定编码,不要默认所有图片都是 PNG。": "May include actual encoding, usage, or points. usage and points_consumed depend on the upstream; their absence does not imply free service. Without a requested encoding, do not assume all images are PNG.", "可选的调用方用户标识,不是网关鉴权 Key,也不能用于指定账号或绕过 Key 的授权范围。是否传递与处理取决于提供商。": "Optional caller user identifier, not a gateway Key. It cannot select an account or bypass Key restrictions. Forwarding and handling depend on the provider.", "启用": "enabled", "图片响应与下载": "Image responses and downloads", "图片响应创建时间,Unix 秒。不要与错误限额恢复字段 reset_at 的毫秒单位混用。": "Response creation time in Unix seconds. Do not confuse it with error recovery field reset_at, which uses milliseconds.", "图片生成与共用参数": "Image generation and shared parameters", "图片生成与编辑": "Image generation and editing", "图片输入是理解图片,工具调用是由客户端执行动作;二者都需要模型能力支持。": "Image input interprets images; tool calling asks the client to execute actions. Both require model support.", "在线模型列表": "Online model list", "在线模型列表指自动拉取上游目录;仅有静态模型清单不算在线支持。": "Online model lists mean the upstream catalog can be fetched automatically; a static list alone does not count as online support.", "地址速查与请求示例使用当前网关地址。从其他设备访问时,127.0.0.1 指向那台设备自身,必须换成实际可达的网关地址。": "The address list and request examples use the current gateway address. On another device, 127.0.0.1 refers to that device itself; replace it with an address that actually reaches the gateway.", "填进客户端的「API 地址 / Base URL」": "Paste into your client's \"API address / Base URL\" field", "声明函数工具的请求体": "Request body declaring a function tool", "复制地址": "Copy address", "复制示例": "Copy example", "多图有顺序意义:在 prompt 中明确“第 1 张是主体,第 2 张是风格参考”等关系。编辑不保证逐像素保真,要求保留的主体、文字或布局应明确描述。": "Image order matters. Explain relationships in prompt, for example, 'image 1 is the subject; image 2 is the style reference'. Editing does not guarantee pixel-perfect preservation; explicitly identify subjects, text, or layouts to retain.", "多数 OpenAI 兼容客户端的默认协议": "The default protocol for most OpenAI-compatible clients", "字段 / 状态": "Field / status", "字段与限制": "Fields and limits", "安装并使用支持 Images 参数的 OpenAI Python SDK。先按接入章节设置 GATEWAY_KEY 与 IMAGE_MODEL_ID,编辑前确认该模型支持参考图,并准备本地 reference.png。": "Install an OpenAI Python SDK version supporting Images parameters. Set GATEWAY_KEY and IMAGE_MODEL_ID as described in the connection section. Check editing support and prepare a local reference.png before editing.", "客户端自动拉取可用模型;不受鉴权限制,配 Key 之前就能拉": "Clients fetch available models automatically; no auth required, so it works even before a Key is configured", "对话协议": "Chat protocols", "对话协议与上下文预算": "Chat protocols and context budgets", "对话协议(按客户端支持的类型选一行)": "Chat protocol (pick the row your client supports)", "对话模型看图请求": "Vision request with a chat model", "小浣熊与 Antigravity 不支持此字段,请在 prompt 中描述风格;Loomy 转交上游,由模型决定是否支持。": "Raccoon and Antigravity do not support this field; describe style in prompt. Loomy forwards it upstream, where support depends on the model.", "小浣熊与 Antigravity 仅接受省略、auto 或 opaque;不保证所有模型都能生成透明背景。文件转码不会自动抠图。": "Raccoon and Antigravity allow only omission, auto, or opaque. Transparent output is not supported by every model; file conversion does not remove backgrounds.", "小浣熊与 Antigravity 仅接受省略或 auto。该字段不保证上游降低审核强度,内容政策拒绝不会自动重试。": "Raccoon and Antigravity allow only omission or auto. This does not guarantee reduced upstream moderation, and content-policy rejections are not retried automatically.", "小浣熊使用 raccoon-image;Loomy 使用目录中的 kind=image 模型;Antigravity 使用目录中的 gemini-*-image 模型;ModelScope 使用已确认支持的 Qwen-Image、Z-Image 或 Qwen-Image-Edit 型号;WorkBuddy 使用目录中带 text-to-image 或 image-to-image 标签的模型,例如 hunyuan-image-alpha 与 hunyuan-image-alpha-edit。实际 model 值以当前 /v1/models 为准,不要直接复制官方 API 的默认模型名。": "Raccoon uses raccoon-image; Loomy uses the kind=image models in the catalog; Antigravity uses the gemini-*-image models in the catalog; ModelScope uses the confirmed Qwen-Image, Z-Image or Qwen-Image-Edit models; WorkBuddy uses the models in the catalog tagged text-to-image or image-to-image, such as hunyuan-image-alpha and hunyuan-image-alpha-edit. Always take the actual model value from the current /v1/models; do not copy model names from a vendor's own API defaults.", "展开目录": "Show contents", "工具服务 API": "Tool services API", "工具服务 API 文档": "Tool services API documentation", "工具服务 API 是网关对外的固定接口,路径以 /api/web-search 开头;不属于 /v1 对话协议,也不是管理面板的管理接口,鉴权同样使用网关 Key。": "The tool services API is a fixed public gateway interface whose paths start with /api/web-search. It is not part of the /v1 chat protocols and is not a management-panel API; authentication also uses a gateway Key.", "已实现,待实测": "Implemented; pending live testing", "已实现,待实测:仅表示代码已接入,尚未通过真实账号验证。": "Implemented; pending live testing: the code is integrated, but has not been validated with a real account.", "建议显式填写图片模型 id。省略时从当前 Key 可用目录中选择支持本次操作的图片模型,不使用对话默认模型;没有对应能力模型时返回 503。": "Specify an image model id explicitly. If omitted, the gateway selects a model supporting this operation from the Key's available catalog, not the default chat model. Returns 503 if no capable model is available.", "待实测": "Pending live testing", "必填。使用 user / assistant 角色;content 可为字符串或 text、image、tool_use、tool_result 等内容块。": "Required. Use user / assistant roles. content may be a string or blocks such as text, image, tool_use, and tool_result.", "必填。包含 role 与 content;常见角色为 system、user、assistant,工具结果使用 tool。文本可直接使用字符串,多模态使用内容块数组。": "Required. Each item includes role and content. Common roles are system, user, and assistant; tool results use tool. Text may be a string; multimodal content uses an array of content blocks.", "必填且不能为空,最多 32000 个字符。描述主体、构图、风格和修改目标;当前不支持 mask,编辑范围也应在提示词中说明。": "Required and nonempty, up to 32000 characters. Describe the subject, composition, style, and desired changes. Masks are unsupported, so describe editing regions in the prompt as well.", "执行工具后回传结果的请求体": "Request body returning executed tool results", "找到 {count} 个章节": "Found {count} chapters", "排错与限制": "Troubleshooting and limits", "接入与鉴权": "Connection and authentication", "接入指南": "Getting started", "接入指南与接口参考": "Guides and API reference", "接口参考目录": "API reference contents", "接口地址": "API address", "推荐使用 Authorization: Bearer YOUR_GATEWAY_KEY;Key 来自「网关 Key」页,并且必须处于启用状态。": "Use Authorization: Bearer YOUR_GATEWAY_KEY. Obtain an enabled Key from the Gateway Key page.", "推荐显式指定当前目录中的对话模型 id。省略时尝试网关默认模型;默认选择也受该 Key 的授权范围限制。": "Explicitly select a chat model id from the current catalog. If omitted, the gateway tries its default model, still subject to the Key's authorized scope.", "描述输入与输出模态,例如 text、image、video。字段缺失不表示自动支持其他文件、音频或服务端上传接口。": "Describe input and output modalities such as text, image, and video. Missing fields do not imply support for other files, audio, or server-side upload endpoints.", "提供商能力": "Provider capabilities", "提供商能力适配表": "Provider capability matrix", "搜索文档": "Search documentation", "搜索文档、参数或接口…": "Search docs, parameters or endpoints…", "收起全部": "Collapse all", "收起目录": "Hide contents", "文本生成图片;JSON 请求,非流式返回 base64 或下载链接。": "Generate images from text; send JSON and receive non-streaming base64 data or download URLs.", "文档内容": "Documentation", "文档目录": "Documentation contents", "无此概念": "Not applicable", "映射为思考档位与结构化输出请求;支持范围以目标模型为准。": "Map to reasoning effort and structured-output requests; supported values depend on the target model.", "未声明表示插件没有提供明确结论,不等于不支持。": "Undeclared means the plugin has not provided a definite conclusion; it does not mean unsupported.", "未声明表示网关本体或插件没有提供明确结论,不等于不支持。": "Undeclared means the gateway or plugin has not provided a definite conclusion; it does not mean unsupported.", "本体订阅": "Native subscriptions", "本地上下文预算估算,返回 estimated=true;不是上游精确分词。": "Local context budget estimate, returning estimated=true; not an exact upstream token count.", "本机免鉴权模式没有启用 Key 时可调用;启用任意 Key 后,受保护接口都要携带有效 Key。公网安全模式没有配置 Key 时会拒绝受保护的 /v1 请求,并返回 503 api_key_not_configured。": "Local no-auth mode permits calls when no Key is enabled. Once any Key is enabled, protected endpoints require a valid Key. Public-network secure mode rejects protected /v1 requests when no Key is configured, returning 503 api_key_not_configured.", "本页只说明实际提供的接口,不等于完整复刻 OpenAI / Anthropic 服务。未列出的 Files、Batch、图片 variations、服务端会话存储等端点不要假定可用。": "This page documents implemented endpoints, not a complete OpenAI / Anthropic service replica. Do not assume unlisted Files, Batch, image variations, or server-side conversation storage endpoints exist.", "本页说明对外的 /v1 接口,不是管理面板的 /api 接口。三种对话协议共用模型目录、模型映射、账号池和网关 Key,但请求与响应格式不同。": "This page describes the public /v1 endpoints, not the management panel's /api endpoints. All three chat protocols share the model catalog, model mappings, account pool, and gateway Keys, but use different request and response formats.", "查看当前网关的客户端地址和各接口路径,一键复制后即可使用。": "View the current gateway's client addresses and endpoint paths, ready to copy and use.", "根据文字提示生成图片。请求使用 JSON,生成与编辑均只支持非流式响应。": "Generate images from a text prompt. Requests use JSON; both generation and editing support non-streaming responses only.", "检查网关是否可访问": "Check gateway reachability", "模型不存在、已关闭或不在 Key 授权范围,常附 model_not_found;也可能是路径错误,或临时图片下载链接已过期。": "Model missing, disabled, or outside the Key's scope, commonly with model_not_found. It may also indicate a wrong path or an expired temporary image URL.", "模型列表": "List models", "模型发现与健康检查": "Model discovery and health checks", "模型清单": "Model list", "模型清单与健康检查": "Model list and health checks", "模型清单反映当前账号、模型启停与映射配置。不带 Key 时可读取公开清单;携带 Key 时必须有效,返回内容按该 Key 的授权范围过滤,无效 Key 返回 401。": "The model list reflects current accounts, enabled models, and mappings. Without a Key, the public list is available. If a Key is provided, it must be valid and the list is filtered by its authorization scope; invalid Keys return 401.", "模型清单反映当前账号、模型启停与映射配置;携带有效网关 Key 时进一步按该 Key 的授权范围过滤。不带 Key 或 Key 无效时仍可读取未按该 Key 收窄的清单。": "The model list reflects current accounts, model enablement, and mappings. A valid gateway Key further filters it to that Key's authorized scope. Without a Key or with an invalid Key, the list is not restricted by that Key.", "模型清单结构示例": "Example model list structure", "模型调用始终需要启用且可用的网关 API Key,即使只在本机使用也不能免鉴权。管理员登录会话只用于管理面板,不能代替模型调用的 Key。": "Model calls always require an enabled, usable gateway API Key, even for local use. Administrator login sessions only authorize panel management and cannot replace the Key for model calls.", "每把 Key 的可用模型、可用提供商限制同样适用于生图和编辑图。模型名称使用 /v1/models 中的 id 或已配置的映射名,不要直接使用展示名称。": "Per-Key model and provider restrictions also apply to image generation and editing. Use an id from /v1/models or a configured mapping name, not a display name.", "没有找到匹配的文档": "No matching documentation", "流式以 message_start 开始,经 content_block_start / content_block_delta / content_block_stop,最终 message_delta 与 message_stop 收尾;不要按 Chat 的 [DONE] 规则解析。": "Streams begin with message_start, include content_block_start / content_block_delta / content_block_stop, and finish with message_delta and message_stop. Do not parse them using Chat's [DONE] convention.", "流式包含 response.created、response.output_text.delta 和最终 response.completed 等事件;错误可能以 response.failed 结束。输出预算不足时检查 incomplete 状态与 incomplete_details。": "Streams include response.created, response.output_text.delta, and final response.completed events. Errors may end with response.failed. Check incomplete status and incomplete_details when the output budget is insufficient.", "流式对话请求": "Streaming chat request", "流式开始后 HTTP 状态码无法再改;即使已经收到 200,也要检查流内错误、结束原因及是否正常收尾,不能把断流视为成功。": "HTTP status cannot change after streaming starts. Even after receiving 200, check stream errors, finish reasons, and normal termination; a disconnected stream is not a successful result.", "流式用量可请求 include_usage=true;最终是否返回用量取决于上游,不应假设每个增量都有 usage。": "Request include_usage=true for streaming usage. Whether final usage is returned depends on the upstream; do not expect usage in every delta.", "清除搜索": "Clear search", "点击章节展开参数、示例和兼容边界;示例只供复制,不会在本页发起模型请求或消耗额度。": "Expand a section for parameters, examples, and compatibility boundaries. Examples are copy-only; this page does not send model requests or consume quota.", "生图可能消耗账号额度。先使用 n=1 和较小尺寸确认能力,内容政策拒绝或结果不确定时不要自动重复提交。": "Image generation may consume account quota. Start with n=1 and a smaller size. Do not automatically resubmit after content-policy rejection or an uncertain result.", "生成、编辑与对话接口共用网关 Key;完整鉴权规则、模型能力和请求示例见下方章节。": "Generation, editing, and chat endpoints share gateway Keys. See the sections below for authentication, model capabilities, and request examples.", "生成、编辑与对话接口共用网关 Key;鉴权规则、模型能力和请求示例可从文档目录查阅。": "Generation, editing and chat endpoints share gateway Keys. Find authentication rules, model capabilities and request examples in the documentation contents.", "生成与编辑返回同一结构;base64 适合直接保存,URL 适合短期获取。": "Generation and editing return the same structure. Base64 suits direct saving; URLs suit short-term retrieval.", "用于请求思考配置或档位,由网关映射到目标模型;不保证所有 Anthropic 原生特性在跨协议转发时完全等价。": "Request reasoning configuration or effort, mapped to the target model. Not all native Anthropic features are guaranteed equivalent across protocol conversion.", "的 Key:请求带 ": " Key from the Gateway Key page: requests carry ", "目前小浣熊、Loomy、Antigravity、ModelScope、WorkBuddy 已接入图片生成;Loomy、Antigravity、ModelScope 与 WorkBuddy 同时接入参考图编辑,小浣熊暂不支持编辑。需要当前提供商插件包含对应能力,并且账号、模型和 Key 授权可用。": "Raccoon, Loomy, Antigravity, ModelScope and WorkBuddy currently support image generation; Loomy, Antigravity, ModelScope and WorkBuddy also support reference-image editing, while Raccoon does not. The provider plugin must include the capability, and the account, model and gateway key authorization must be available.", "目录声明的上下文与最大输出预算,可能省略。预算和余额不是同一概念,也不能替代上游的实际限制。": "Catalog-declared context and maximum output budgets; may be omitted. Token budgets are not account balances and do not override actual upstream limits.", "看图与工具调用": "Vision and tool calling", "看图请求使用对话模型,并确认 supports_images=true。Chat 使用 text 与 image_url 内容块,图片值可为上游支持的 HTTP(S) URL 或 data URL;可用格式与大小取决于目标模型。「参考图编辑」章节的上传限制不应直接套用到所有对话模型。": "For vision, use a chat model with supports_images=true. Chat uses text and image_url blocks, with upstream-supported HTTP(S) URLs or data URLs. Formats and sizes depend on the target model. The upload limits in the Reference-image editing chapter do not automatically apply to all chat models.", "看图请求使用对话模型,并确认 supports_images=true。Chat 使用 text 与 image_url 内容块,图片值可为上游支持的 HTTP(S) URL 或 data URL;可用格式与大小取决于目标模型。下方编辑图的上传限制不应直接套用到所有对话模型。": "For vision, use a chat model with supports_images=true. Chat uses text and image_url blocks. Images may use upstream-supported HTTP(S) URLs or data URLs; formats and sizes depend on the target model. The editing upload limits below do not automatically apply to all chat models.", "示例仅供复制,不会在本页发起请求或消耗额度。": "Examples are copy-only. This page does not send requests or consume quota.", "示例显式设置 max_retries=0,避免 SDK 对超时或 5xx 自动重新提交收费任务;timeout=300.0 仅是客户端等待示例,不会改变网关或上游的超时配置。": "The example sets max_retries=0 to prevent automatic SDK resubmission of billable requests on timeouts or 5xx. timeout=300.0 is only an example client wait; it does not change gateway or upstream timeouts.", "章节导航": "Chapter navigation", "类型 / 范围": "Type / range", "系统说明是顶层字段,不要放进 messages 的 system 角色;支持文本或 text 块数组。": "System instructions belong in this top-level field, not a system role in messages. Accepts text or an array of text blocks.", "系统说明,对应 Chat 的 system 消息;需要时每次请求重新携带。": "System instructions corresponding to Chat's system message; include them again on each request when needed.", "结合 HTTP 状态、错误内容与请求日志判断问题;不要盲目重试收费请求。": "Use HTTP status, error details, and request logs to diagnose issues; do not blindly retry billable requests.", "编辑请求上传总大小最多 16 MiB。参考图转为 data URL 后,内联图片与最终 JSON 请求还受 14 MiB 上限;base64 约增加三分之一体积,因此多张各小于 10 MiB 也可能超限。": "Editing uploads are limited to 16 MiB total. After conversion to data URLs, inline images and the final JSON request are also limited to 14 MiB. Base64 adds about one third to size, so several files below 10 MiB each can still exceed the total.", "网关临时 URL 响应结构": "Temporary gateway URL response structure", "网关临时下载不要求 Authorization,链接中的随机令牌就是访问凭据,任何拿到链接的人都能下载。请将链接视为敏感信息,重要结果及时保存,不要当作长期文件存储。": "Temporary gateway downloads do not require Authorization. The random URL token is the access credential; anyone with the link can download. Treat it as sensitive, save important results promptly, and do not use it as long-term storage.", "网关临时图片仅保存在内存,生成后 1 小时过期,网关重启后立即失效。缓存总容量 128 MiB;缓存满时会返回错误并建议改用 b64_json。上游签名链接的有效期由提供商决定。": "Temporary gateway images are kept in memory for 1 hour and disappear immediately on gateway restart. Cache capacity is 128 MiB; a full cache returns an error suggesting b64_json. Upstream signed URL lifetimes are determined by the provider.", "网关内置的安全重试与客户端 SDK 的重试是两层独立行为。图片客户端建议关闭自动重试;即使网关已停止重试,SDK 仍可能重新提交整条请求。": "Gateway safe retries and client SDK retries are independent. Disable automatic retries for image clients; the SDK may resubmit the entire request even after the gateway stopped retrying.", "网关可将实际图片转换为指定文件编码。省略时保留上游图片格式;需要固定扩展名时建议显式填写。JPEG 无法保留透明通道。": "The gateway can convert the actual image to the selected encoding. If omitted, it preserves the upstream format. Specify it for a fixed file extension; JPEG cannot preserve transparency.", "网关始终无状态,响应中的 store=false。即使请求 store=true,也不会保存可供后续检索的 Responses 对象。": "The gateway is always stateless and returns store=false. Sending store=true does not save Responses objects for later retrieval.", "网关接受 1–10,默认 1;Antigravity 与 ModelScope 仅支持 n=1。上游返回数量不足时网关报错,不会为了凑数再次调用图片生成。": "The gateway accepts 1–10, default 1; Antigravity and ModelScope accept only n=1. If the upstream returns too few images, the gateway reports an error without generating again to fill the count.", "网关接受 1–10,默认 1;Antigravity 仅支持 n=1。上游返回数量不足时网关报错,不会为了凑数再次调用图片生成。": "The gateway accepts 1–10, default 1; Antigravity accepts n=1 only. If the upstream returns too few images, the gateway reports an error rather than generating again to fill the count.", "网关最多接受 16 张参考图。Antigravity 的 gemini-2.5-* 模型最多 3 张,其他当前接入的 Antigravity 图片模型最多 14 张;Loomy 还可能受上游模型限制。": "The gateway accepts up to 16 references. Antigravity gemini-2.5-* models accept up to 3; other currently integrated Antigravity image models accept up to 14. Loomy may impose additional model limits.", "网关最多接受 16 张参考图。Antigravity 的 gemini-2.5-* 模型最多 3 张,其他当前接入的 Antigravity 图片模型最多 14 张;ModelScope 接受 1–3 张参考图;Loomy 还可能受上游模型限制。": "The gateway accepts up to 16 references. Antigravity gemini-2.5-* models accept up to 3; other integrated Antigravity image models accept up to 14. ModelScope accepts 1–3; Loomy may impose additional model limits.", "网关需要下载或转换输出时,单张图片最多 32 MiB、边长最多 8192,并使用有界解码。请求 output_format 会按实际图片转码,而不是只修改文件扩展名。": "When the gateway downloads or converts output, each image is limited to 32 MiB and edges of 8192 pixels with bounded decoding. output_format converts the actual image, not merely its extension.", "网络搜索与网页抓取的 REST 接口,使用网关 Key 鉴权;不属于 /v1 对话协议。": "REST endpoints for web search and page fetching, authenticated with a gateway Key; not part of the /v1 chat protocols.", "能力由当前插件版本申报,表示适配支持情况,不代表账号额度或当前可用性。": "Capabilities are declared by the installed plugin version. They describe integration support, not account quota or current availability.", "能力由当前网关本体或插件版本申报,表示适配支持情况,不代表账号额度或当前可用性。": "Capabilities are declared by the current gateway or plugin version. They describe integration support, not account quota or current availability.", "自定义函数工具通过 tools 声明。模型返回 tool_calls 后,客户端校验参数、执行函数,再把 assistant 工具调用和 role=tool 结果一起放入下一次 messages;tool_call_id 必须对应,不能遗漏并行调用的结果。": "Declare custom function tools in tools. When the model returns tool_calls, the client validates arguments, executes functions, and sends both the assistant tool calls and role=tool results in the next messages array. Match tool_call_id and include results for every parallel call.", "表示当前目录与插件声明支持参考图编辑。编辑前检查此字段,不要仅凭模型名称包含 image 判断。": "Indicates reference-image editing support declared by the current catalog and plugin. Check it before editing; an image substring in the model name is not sufficient.", "表示支持图片输入,不等于支持生成图片。对话模型可用于看图;编辑模型也可能声明此字段。": "Indicates image input support, not image generation. Chat models can interpret images, and editing models may also declare this field.", "表示目录条目属于生图模型。调用还需要当前插件已接入生成能力,且存在获准使用的可用账号。": "Identifies an image-generation catalog entry. Calls still require generation support in the installed plugin and an available authorized account.", "试试接口路径、参数名或其他关键词。": "Try an endpoint path, parameter name or another keyword.", "详细接口参考": "Detailed API reference", "请求与响应示例": "Request and response examples", "请求参数、模型能力或协议形态不支持。图片相关 code 可能为 invalid_image_input、image_generation_not_supported 或 image_editing_not_supported;修改请求后再发。": "Unsupported parameters, model capabilities, or protocol formats. Image codes may include invalid_image_input, image_generation_not_supported, or image_editing_not_supported. Correct the request before resubmitting.", "请求示例适用于 Bash / Git Bash。YOUR_GATEWAY_KEY、CHAT_MODEL_ID、IMAGE_MODEL_ID 和图片占位地址都需要替换;返回示例仅展示结构,能力位、Token 数量和时间戳不是当前网关的实测值。": "Request examples use Bash / Git Bash syntax. Replace YOUR_GATEWAY_KEY, CHAT_MODEL_ID, IMAGE_MODEL_ID, and placeholder image URLs. Response examples only illustrate structure; capability flags, token counts, and timestamps are not measurements from your current gateway.", "读取提供商能力表失败:{error}": "Failed to load provider capabilities: {error}", "读取插件能力表失败:{error}": "Failed to load plugin capabilities: {error}", "读取获准使用的模型": "Read authorized models", "输出 Token 上限,具体支持字段和预算以模型为准。不要同时设置冲突的上限;达到上限时 finish_reason 可能为 length。": "Maximum output tokens; supported fields and budgets depend on the model. Avoid conflicting limits. finish_reason may be length when the limit is reached.", "通用对话入口,适合大多数 OpenAI 兼容客户端。": "General-purpose chat endpoint for most OpenAI-compatible clients.", "通用错误结构示例": "Generic error structure example", "通过能力字段选择正确模型;健康检查只说明网关可访问。": "Select the correct model using capability fields; health checks only confirm gateway reachability.", "遇到“图片请求可能已消耗额度,未自动重试”或“上游已生成”等提示,先核对请求日志与上游结果。客户端超时、断线或取消不代表上游撤销任务;自动重发可能再次扣费。": "If the error warns that an image request may have consumed quota and was not retried, or that the upstream already generated it, check request logs and upstream results first. Client timeout, disconnection, or cancellation does not imply upstream cancellation; resubmission may charge again.", "采样参数,是否支持和有效范围由提供商与模型决定。协议兼容不代表每家上游都支持全部调参项。": "Sampling parameters. Support and valid ranges depend on the provider and model; protocol compatibility does not imply support for every tuning parameter.", "鉴权用「网关 Key」页里任一": "Authenticate with any ", "错误、限额与兼容边界": "Errors, limits, and compatibility boundaries", "限流、额度不足或当前无可用账号窗口。能确定恢复时间时可能返回 Retry-After(秒)、reset_at(Unix 毫秒)与 reset_at_text;这些字段不是每次都有。": "Rate limit, insufficient quota, or no currently available account window. When recovery is known, Retry-After (seconds), reset_at (Unix milliseconds), and reset_at_text may be returned; they are not always present.", "非流式响应读取 choices[].message;流式响应读取 choices[].delta。每次请求由客户端携带 messages 历史,网关不会根据上一条响应 id 自动恢复对话。": "Read choices[].message for non-streaming responses and choices[].delta for streams. Supply messages history with every request; the gateway does not restore a conversation from a previous response id.", "非流式对话响应": "Non-streaming chat response", "非流式对话请求": "Non-streaming chat request", "非流式返回 object=response、status、output 数组与 output_text。output 也可能包含 reasoning 或 function_call,不能只读取数组第一项。": "Non-streaming responses contain object=response, status, output, and output_text. output may also contain reasoning or function_call items; do not read only the first item.", "非流式返回 type=message、content 块数组、stop_reason 与 usage。content 可能同时包含文本、思考与工具调用,应该按 type 遍历。": "Non-streaming responses contain type=message, content blocks, stop_reason, and usage. Iterate by type because content may combine text, reasoning, and tool calls.", "领取类": "Reward claims", "默认 b64_json,返回可直接解码的图片 base64;url 返回上游签名链接或网关临时下载链接。不是图片文件编码。": "Defaults to b64_json for decodable image base64. url returns an upstream signed URL or temporary gateway download URL. This is not the image file encoding.", "默认 false,返回完整 JSON;true 返回 text/event-stream。curl 查看流式输出时添加 -N,客户端应按完整 SSE 事件解析而不是按网络分块解析。": "Defaults to false for a complete JSON response; true returns text/event-stream. Add -N to curl for streaming output. Parse complete SSE events rather than assuming network chunks are event boundaries.", "24 小时总用量": "24-hour total usage", "24 小时整体命中率": "24-hour overall hit rate", "24 小时请求数": "24-hour requests", "30 天": "30 days", "7 天": "7 days", "API Key 分布": "API key breakdown", "Token": "Token", "Top 提供商": "Top providers", "Top 模型": "Top models", "Top 账号": "Top accounts", "{date} · {tokens} tokens · {n} 次请求": "{date} · {tokens} tokens · {n} requests", "{date} · 无请求": "{date} · No requests", "{model}:{tokens} tokens": "{model}: {tokens} tokens", "{m}月": "{m}/", "{m}月{d}日 周{wd}": "{m}/{d} {wd}", "{name} · {tokens} tokens · {n} 次请求 · {pct}": "{name} · {tokens} tokens · {n} requests · {pct}", "{name}:{tokens} tokens · 占 {pct}%": "{name}: {tokens} tokens · {pct}% of total", "{n} 家提供商": "{n} providers", "{n} 次请求": "{n} requests", "{n} 项": "{n} items", "{n} 项低于 {threshold}%,已合并为“其他”": "{n} items below {threshold}% are grouped under Other", "{title}显示数量": "Number of items in {title}", "{tokens} tokens · 占 {pct}": "{tokens} tokens · {pct} of total", "…还有 {n} 个模型": "…and {n} more models", "…还有 {n} 项": "…and {n} more items", "一": "Mo", "三": "We", "二": "Tu", "五": "Fr", "仅在饼图合并,右侧列表完整保留每个项目": "Grouped only in the donut; every item remains in the list", "仅调整两个饼图,右侧列表始终完整显示": "Only the two donuts change; the lists always show every item", "仅调整这两张图的展示,所有用量仍计入总 Token,占比保持不变": "Only these two charts are affected. All usage remains in the total, and shares stay unchanged.", "今天": "Today", "全部用量": "All usage", "六": "Sa", "其他 {pct} · {n} 项,仅在饼图合并": "Other {pct} · {n} items, grouped only in the donut", "其他({n} 项)": "Other ({n} items)", "其余 {n} 项": "Remaining {n} items", "前 {n} 名": "Top {n}", "前 {n} 名占全部用量 {pct}": "Top {n} account for {pct} of total usage", "区间共 {n} 天": "{n} days in range", "占比低于": "Group shares below", "占输入 Token 的 {rate}": "{rate} of input tokens", "历史明细不完整": "Historical details are incomplete", "另 {n} 项": "{n} more", "右轴": "Right axis", "合并只作用于饼图。低于阈值的扇区归入“其他”,右侧列表完整保留每个项目,总量和占比不变。": "Grouping affects only the donuts. Slices below the threshold are grouped as Other; every item remains in the list, with totals and shares unchanged.", "合并小项": "Group small slices", "合计": "Total", "含今天在内往前数": "Counting back from today", "命中 {hit} / 输入 {input}": "Hits {hit} / input {input}", "命中率": "Hit rate", "命中率 = 缓存读取 Token / 输入 Token(promptTokens)。窗口越短越贴近「此刻」:上游把缓存读取与输入分开上报时,该比值合法地可能超过 100%,此处不夹取值、如实展示。": "Hit rate = cache-read tokens / input tokens (promptTokens). The shorter the window, the closer it is to \"right now\": when an upstream reports cache reads separately from input, this ratio can legitimately exceed 100%; it is shown as-is, without clamping.", "命中率 {rate}(命中 {hit} / 输入 {input})": "Hit rate {rate} ({hit} hits / {input} input)", "四": "Th", "图表显示": "Chart display", "图表类型": "Chart type", "在右侧展开“其他”查看明细": "Expand Other in the legend to view details", "天有调用": "active days", "小项合并阈值": "Small-slice grouping threshold", "展开其他明细": "Expand Other details", "左轴": "Left axis", "开启“合并小项”后,低于阈值的项目合并为灰色“其他”,可在右侧展开明细。合并只影响展示,总 Token 和占比不变。": "With Group small slices enabled, items below the threshold are grouped into a gray Other slice. Expand Other in the legend to view details. Only the display changes; total tokens and shares stay unchanged.", "开始日期": "Start date", "当前连续天数": "Current streak", "总 Token": "Total tokens", "总 Token:{tokens}": "Total tokens: {tokens}", "总 Token:{tokens}({n} 次请求)": "Total tokens: {tokens} ({n} requests)", "总请求数": "Total requests", "总量不变": "Total unchanged", "悬停查看完整读数与分项": "Hover for full readings and a breakdown", "成功率 {rate}": "Success rate {rate}", "成功率 {rate} · 失败 {n} 次": "Success rate {rate} · {n} failed", "成功请求数": "Successful requests", "所选范围内暂无请求": "No requests in the selected range", "所选范围内每个提供商各消耗了多少 Token,按 Token 用量从多到少排。同一个模型名可能有多家都能提供,网关按设置页「转发路由」的优先级依次尝试,所以占比也反映了实际落到谁身上。百分比按本区间的总 Token 数算(这一块只看用量,请求次数与成功率在概览卡片里)。「未知」是指那批请求没记下承载它的提供商 —— 主要是记录提供商这个功能上线之前的旧明细,其次是请求在选定上游之前就失败了(请求体非法、模型不存在、没有可用账号)。这一维与账号那一维不同:旧明细里根本没有「哪家承载」的信息(早期版本只有单一上游,但那是配置事实而非逐条记录),所以无法回算,旧数据会一直留在「未知」里;此后新产生的请求都会记上具体的提供商。": "How many tokens each provider used in the selected range, sorted by token usage from high to low. The same model name may be offered by several providers; the Gateway tries them in priority order as configured in the Forwarding route setting, so the share also reflects where requests actually landed. Percentages are based on the total tokens for the range (this block only looks at usage; request counts and success rates are in the overview cards). \"Unknown\" means those requests did not record the provider that served them—mainly detail rows from before provider recording existed, and requests that failed before an upstream was chosen (invalid request body, model not found, no available account). This dimension differs from accounts: old detail rows have no \"which provider served it\" information at all (early versions had a single upstream, but that was a configuration fact, not a per-request record), so they cannot be recomputed and old data stays in \"Unknown\" forever; requests created from now on all record their specific provider.", "所选范围内每个提供商各消耗了多少 Token,按用量从多到少排,扇区角度即占比。同一个模型名可能有多家都能提供,网关按设置页「转发路由」的优先级依次尝试,所以占比也反映了实际落到谁身上。中心是这一维的合计(等于概览里的总 Token),右侧每行给出该提供商的 Token 用量与百分比。「未知」是指那批请求没记下承载它的提供商 —— 主要是记录提供商这个功能上线之前的旧明细,其次是请求在选定上游之前就失败了。": "How many tokens each provider used in the selected range, sorted by usage from high to low; each sector's angle is its share. The same model name may be offered by several providers; the Gateway tries them in priority order as configured in the Forwarding route setting, so the share also reflects where requests actually landed. The center shows the total for this dimension (equal to Total tokens in the overview), and each row on the right gives that provider's token usage and percentage. \"Unknown\" means those requests did not record the provider that served them—mainly detail rows from before provider recording existed, and requests that failed before an upstream was chosen.", "所选范围内每个模型各消耗了多少 Token,按用量从多到少排,扇区角度即占比。中心是这一维的合计(等于概览里的总 Token),右侧每行给出该模型的 Token 用量与百分比。扇区内的百分比只在 ≥3% 时标出,更小的会挤成一团 —— 完整读数在右侧列表与悬停气泡里。颜色按用量排名分配:最大的那段是红色,依次往后;同一份报表里换个维度看,配色口径不变。": "How many tokens each model used in the selected range, sorted by usage from high to low; each sector's angle is its share. The center shows the total for this dimension (equal to Total tokens in the overview), and each row on the right gives that model's token usage and percentage. Percentages inside sectors are labeled only when ≥3%; smaller ones would crowd together—full readings are in the list on the right and in hover tooltips. Colors are assigned by usage rank: the largest sector is red, and so on down the line; switching dimensions in the same report keeps the same color scheme.", "所选范围内每个账号各消耗了多少 Token,按 Token 用量从多到少排。账号是比提供商更细的一维:同一家可以挂多个账号,转发时按优先级在候选链上依次尝试,所以这里反映的是「具体哪个登录态在出力」。百分比按本区间的总 Token 数算(这一块只看用量,请求次数与成功率在概览卡片里)。「未知账号」是指那批请求没有账号身份:走默认登录态转发(未配置账号列表)时会这样;这一维上线前写出的旧聚合行也没有账号明细,但它们会在升级导入旧数据时按明细自动补算回来 —— 只有明细已被手动清理掉的那几天补不回来,仍留在「未知账号」里,那是确实无从恢复的部分。": "How many tokens each account used in the selected range, sorted by token usage from high to low. Accounts are a finer dimension than providers: one provider can have several accounts, and requests try each account along the candidate chain by priority, so this reflects which specific login session is doing the work. Percentages are based on the total tokens for the range (this block only looks at usage; request counts and success rates are in the overview cards). \"Unknown account\" means those requests had no account identity: this happens when forwarding through the default login session (no account list configured); old aggregate rows written before this dimension existed also lack account details, but they are recomputed automatically from detail records when old data is imported during upgrade — only days whose details have already been cleared manually cannot be recovered and remain in \"Unknown account\"; those are genuinely unrecoverable.", "所选范围内还没有提供商用量": "No provider usage in the selected range", "所选范围内还没有模型用量": "No model usage in the selected range", "所选范围内还没有请求记录": "No request records in the selected range", "所选范围内还没有账号用量": "No account usage in the selected range", "折线": "Line", "报表时间范围": "Report time range", "按 Token 用量从多到少排列,扇区角度表示占比。占比不低于 3% 的扇区显示百分比,所有项目的完整读数保留在右侧列表与悬停提示中。": "Sorted by token usage, with each slice's angle showing its share. Slices of at least 3% show a percentage; full readings for every item remain in the list and hover details.", "按 Token 统计": "By tokens", "按天 Token 趋势": "Daily token trend", "按日统计": "Grouped by day", "按本地整点统计": "Grouped by local hour", "按本地整点,无请求的整点不标注": "By local hour; hours with no requests are not labeled", "按每条请求的软件标识和识别规则统计,不依赖 API Key,也不代表设备或用户数。待确认的软件统一计入“其它”;规则修改不重新归类历史请求。": "Statistics use per-request software identifiers and identification rules, independently of API keys. They do not count devices or users. Unconfirmed software is grouped under Other; rule changes do not reclassify historical requests.", "提供商用": "Provider usage", "提供商用占比": "Provider usage share", "提供商用量": "Provider usage", "提供商用量占比": "Provider usage share", "提供商:{text}": "Provider: {text}", "收起其他明细": "Collapse Other details", "方格为本地自然日,无请求显示为空槽": "Each cell is a local calendar day; days with no requests appear as empty slots", "无请求的整点按 0% 计,但不写读数": "Hours with no requests count as 0%, but are not labeled", "日": "Su", "日均": "Daily average", "日均 {value}": "Daily average {value}", "时间范围。「今天」是本地自然日今天 0 点到现在;「昨天」是昨天一整天(0 点到 24 点);「近 7 天 / 近 30 天」含今天在内往前数,即今天与之前的 6 / 29 天,不是「不含今天的 7 / 30 天」。": "Time range. \"Today\" is the local calendar day from 00:00 until now; \"Yesterday\" is the whole of yesterday (00:00–24:00); \"Last 7 days\" / \"Last 30 days\" count backwards from today inclusive, i.e. today plus the previous 6 / 29 days — not 7 / 30 days excluding today.", "昨天": "Yesterday", "暂无热力图数据": "No heatmap data", "暂无缓存趋势数据": "No cache trend data", "暂无趋势数据": "No trend data", "最近整点命中率": "Latest hourly hit rate", "最近请求": "Recent requests", "未知模型": "Unknown model", "本月": "This month", "查看用量、调用来源与缓存表现": "View usage, request sources, and cache performance", "柱状": "Bars", "模型与提供商共用此设置": "Shared by the model and provider charts", "模型用量": "Model usage", "模型用量占比": "Model usage share", "每天的总 Token 用量(输入 + 输出)。柱顶标出当天的读数;区间很长、柱子挤到放不下时只标最高的那几天,其余悬停柱子即可读到。": "Total token usage for each day (input + output). Each bar is labeled with that day's reading; when the range is long and bars are too crowded for labels, only the highest days are labeled—hover over any bar to read the rest.", "活跃天数": "Active days", "活跃热力图": "Activity heatmap", "用量分布": "Usage breakdown", "用量趋势": "Usage trend", "的项目合并为“其他”": "under Other", "筛选统计项目": "Filter report items", "累计": "Total", "累计请求 {n} 条": "{n} requests in total", "结束日期": "End date", "结束日期(含当天)": "End date (inclusive)", "统计报表": "Usage report", "统计概览": "Statistics overview", "缓存命中率": "Cache hit rate", "缓存读取属于输入读数,不额外计入总 Token": "Cache reads are part of the input reading and are not added to total tokens again", "缓存读取属于输入,不重复计入总 Token": "Cache reads are part of input, not added to total tokens again", "自定义区间": "Custom range", "请求日志只展示仍保留的明细;清理明细不会减少日报中的历史用量。": "Request logs show only retained details; clearing them does not reduce historical usage in daily reports.", "读取 {hit} ÷ 输入 {input}": "Cache reads {hit} ÷ input {input}", "读取报表失败:{error}": "Failed to load report: {error}", "起始日期(含当天)": "Start date (inclusive)", "输入": "Input", "输入 + 输出": "Input + output", "输入 Token": "Input tokens", "输出": "Output", "输出 Token": "Output tokens", "运行中": "Running", "近 1 小时": "Last 1 hour", "近 10 分钟": "Last 10 minutes", "近 24 小时": "Last 24 hours", "近 24 小时缓存命中率与总 Token 趋势": "Last 24 hours: cache hit rate and total tokens trend", "近 24 小时缓存命中率趋势": "Last 24 hours: cache hit rate trend", "近 30 天": "Last 30 days", "近 365 天 · 不随上方日期筛选变化": "Last 365 days · independent of the date filter", "近 365 天活跃热力图": "Last 365 days: activity heatmap", "近 365 天,按天 Token 用量着色(档位按本窗口峰值自动定)": "Last 365 days, colored by daily token usage (levels are set automatically from this window's peak)", "近 7 天": "Last 7 days", "饼图不合并小项": "Show all donut slices", "饼图小于 {threshold}% 归入其他": "Group donut slices below {threshold}%", "饼图显示": "Donut display", " · ": " · ", " · {n} 个账号今日重试已用完": " · {n} accounts used up today’s retries", " · 补签在主签到区间结束后执行": " · Catch-up runs after the main check-in window", "AgentArts 服务声明": "AgentArts Service Statement", "MiniMax Code 国内版每日签到 · 同地区签名账号接口读取七日面板并领取今日积分;已领取不重复领,奖励以官方返回为准": "MiniMax Code (China) daily check-in · The signed account API for this region reads the seven-day panel and claims today’s points. Already claimed rewards are not claimed again; rewards follow official responses.", "MiniMax Code 国际版每日签到 · 同地区签名账号接口读取七日面板并领取今日积分;已领取不重复领,奖励以官方返回为准": "MiniMax Code (Global) daily check-in · The signed account API for this region reads the seven-day panel and claims today’s points. Already claimed rewards are not claimed again; rewards follow official responses.", "QuWork 每日奖励:先查询领取状态,再领取并回查;结果不明时不重复提交。": "QuWork daily rewards: check status before claiming, then verify the result. Uncertain claims are not repeated.", "SOLO 的 checkin_credits 领取 · 按自然日 0 点刷新": "SOLO checkin_credits claims · reset at midnight (calendar day)", "Sonus 等限时活动 · 资格、额度和有效期以官方返回为准": "Sonus and other limited-time campaigns · Eligibility, credits and validity follow the official response", "UMID 组件安装失败:{error}": "UMID component installation failed: {error}", "UMID 组件已安装,可重新签到。": "The UMID component is installed. You can check in again.", "UMID 组件管理接口不可用,请刷新页面或更新网关。": "The UMID component management API is unavailable. Refresh the page or update the gateway.", "WorkBuddy 国内版 · 查询任务树后一键点亮 / 领奖 · 含开学季与猫猫旅行 · 点击行展开明细": "WorkBuddy CN · Query the task tree, then light up / claim in one click · includes the school-season event and cat travel · click a row for details", "WorkBuddy 国际版保活模型,按顺序回退": "WorkBuddy International keep-alive models, tried in order", "WorkBuddy 国际版日活任务的免费模型 · 全局一份,与条目无关": "Free models for WorkBuddy International daily activity · one global setting, unrelated to schedules", "ZCode 自动领取验证": "ZCode automatic claim verification", "{date}(每天 {time})": "{date} (daily at {time})", "{done} / {total} 个账号已签": "{done} of {total} accounts checked in", "{done}/{total} 已签": "{done}/{total} checked in", "{label} ×{count}({reason})": "{label} ×{count} ({reason})", "{name}定时补签开关": "Scheduled catch-up for {name}", "{name}签到时间": "Check-in time for {name}", "{n} 个平台": "{n} platforms", "{n} 个平台 · {groups} 组签到时间": "{n} platforms · {groups} time groups", "{n} 个计划 · 北京时间 UTC+8": "{n} schedules · Beijing time UTC+8", "{n} 个账号今天的重试次数已用完": "{n} accounts have used up today’s retry limit", "{n} 个账号等待窗口或活动": "{n} accounts waiting for a window or campaign", "{n} 积分": "{n} points", "{n} 项可完成": "{n} to complete", "{n} 项待领": "{n} to claim", "{points} 积分": "{points} points", "{total} 账号 · {done} 已签": "{done} of {total} checked in", "{total} 项任务 · {pending} 项可完成": "{total} tasks · {pending} to complete", "✅ UMID 组件已安装,下轮签到即可领取国际版积分": "✅ UMID component installed — the next check-in can claim International points", "✅ {message}": "✅ {message}", "✅ 定时签到已开启": "✅ Scheduled check-in enabled", "✅ 开学季任务执行完成": "✅ School-season tasks completed", "✅ 成长任务执行完成:积分 +{credit} 能量 +{energy}": "✅ Growth tasks completed: credits +{credit}, energy +{energy}", "✅ 新手福利领取完成": "✅ Starter rewards claimed", "✅ 新手福利领取完成,累计 {n} 积分": "✅ Starter rewards claimed, {n} points earned in total", "✅ 签到完成:{succeeded}/{total} 个账号成功领取{active}": "✅ Check-in complete: {succeeded}/{total} accounts claimed successfully{active}", "「保活模型链」是 WorkBuddy 国际版领日活时用来保活的免费模型,按顺序逐个尝试、 第一个成功即止;清空提交恢复缺省({defaults})。 当天去重 + 幂等领取:重复执行只会拿到「已领取」,不会重复加分。": "The \"keep-alive model chain\" is the free models used to keep WorkBuddy International accounts active during daily activity runs — tried in order, stops at the first success; submit empty to restore the default ({defaults}). Same-day dedup + idempotent claiming: repeat runs only return \"already claimed\" and never add points twice.", "「保活模型链」是 WorkBuddy 国际版领日活时用来保活的免费模型,按顺序逐个尝试、 第一个成功即止;清空清单并保存 = 恢复缺省链(当前缺省:{defaults})。 当天去重 + 幂等领取:重复执行只会拿到「已领取」,不会重复加分。": "The \"keep-alive model chain\" is the free models used to keep WorkBuddy International accounts active during daily activity runs — tried in order, stops at the first success; clearing the list and saving restores the default chain (current default: {defaults}). Same-day dedup + idempotent claiming: repeat runs only return \"already claimed\" and never add points twice.", "「免费领积分」的每日任务 · 逐个领取": "\"Free points\" daily tasks · claimed one by one", "一次性福利 · 已领取状态保存在网关,领完无需重复查询 · 点击行展开任务清单": "One-time rewards · claim status is stored on the gateway, so claimed rewards need no further queries · click a row to expand tasks", "一次性福利 · 签到后自动查询并领取,领完记在本机不再查上游 · 点击行展开任务清单": "One-time rewards · queried and claimed automatically after check-in; once claimed they are recorded locally and no longer queried upstream · click a row to expand the task list", "一次性福利已全部结清": "All one-time rewards settled", "一次性福利已结清": "One-time rewards settled", "一次性福利已结清,无需重复查询": "One-time rewards have been claimed; no need to query again", "一次领当天全部奖励(每日签到 + 新人礼) · 幂等由上游保证": "Claims all of the day’s rewards in one action (daily check-in + newcomer gift) · idempotency guaranteed by the upstream", "一键安装组件": "Install component", "一键完成": "Complete all", "一键领取({n})": "Claim all ({n})", "上一轮({time}):{n} 个动作,+{credit} 积分": "Last run ({time}): {n} actions, +{credit} credits", "上次执行:{line}": "Last run: {line}", "上次签到时间": "Last check-in", "上次领取 {time} · 领取需通过滑块验证码": "Last claimed {time} · claim requires passing a slider CAPTCHA", "下一账号:{time}": "Next account: {time}", "下次 {date}": "Next {date}", "下次 {date} · 点此管理条目": "Next {date} · click to manage schedules", "下次检查:{time}": "Next check: {time}", "下次自动执行": "Next automatic run", "不参与每日签到:{list}。CodeArts 的一次性奖励在下方「新手福利」,它与 ZCode 的每日/套餐福利领取见「活动福利」。": "Not in daily check-in: {list}. CodeArts one-time rewards are under \"Starter rewards\" below; its and ZCode's daily/plan benefits are claimed under \"Activity rewards\".", "不参与每日签到:{list}。CodeArts 的一次性奖励在下方「新手福利」,它的每日福利就在上方「每日签到」里;ZCode 的套餐领取见「活动福利」。": "Not in daily check-in: {list}. CodeArts one-time rewards are under \"Starter rewards\" below, and its daily welfare is right above under \"Daily check-in\"; ZCode plan claims are under \"Activity rewards\".", "不参与签到": "Not in check-in", "不可领": "Unavailable", "不自动重试等待中的活动": "Waiting campaigns are not retried automatically", "不适用": "Not applicable", "与国内版同一套任务接口 · 站点不同": "Same task API as the China edition · different site", "与国内版同一套链路 · 站点不同、令牌不通用": "Same flow as the China edition · different site, tokens not interchangeable", "与定时补签不同,仅处理窗口未开或活动暂未下发。": "Unlike scheduled catch-up, only handles windows not yet open or campaigns not yet issued.", "与新人积分独立,不购买付费套餐、不自动续费": "Separate from newcomer points. No paid plans are purchased and no automatic renewals are made.", "专属或自定义时间作为区间起点,沿用默认区间长度;每天重新随机,重启不改变当天安排。": "Platform-specific or custom times set the start and use the default window length. Times are randomized daily; restarting keeps today’s schedule.", "个账号不参与": "accounts excluded", "主签到区间结束后等待 {n} 分钟": "Wait {n} minutes after the main check-in window ends", "主签到后等待 {n} 分钟": "Wait {n} minutes after the main check-in", "主签到后等待(分钟)": "Wait after main check-in (minutes)", "主签到已执行": "Main check-in ran", "主签到已执行不等于每个账号都已领取成功;账号结果请查看签到记录。": "A completed main run does not mean every account claimed successfully. See the check-in records for account results.", "仅处理窗口未开或活动暂未下发的账号,不对所有错误反复执行。": "Only retries accounts waiting for a window or campaign; it does not repeat every error.", "仅开通官方报价为 0 元的个人体验套餐,固定关闭自动续费;奖励另行领取": "Only activate the personal trial when the official price is CNY 0, with automatic renewal disabled. Rewards are claimed separately.", "仅提交你填写的权益,不购买套餐;兑换码激活可能需要原客户端的设备标识。": "Only redeem the benefit you enter; no plan is purchased. Code activation may require the original client’s device identity.", "今天 · 北京时间自然日": "Today · Beijing calendar day", "今天不再自动重试,明天自动重置。要现在再试一次,用签到计划里的「立即执行」。": "These accounts are not retried again today; the counter resets tomorrow. To try once more right now, use “Run now” in the check-in schedule.", "今天已执行:{list}": "Ran today: {list}", "今天已领 {n} 份": "Claimed {n} today", "今天未领": "Not claimed today", "今天(北京时间 {day})已领取 · 官方确认到账 {n} 项 · 明天可再领": "Claimed today (Beijing time {day}) · {n} items confirmed received · can claim again tomorrow", "今日主签到": "Today's main check-in", "今日已执行": "Ran today", "今日已派出": "Sent out today", "今日已签": "Checked in today", "今日已领取": "Claimed today", "今日已领取豆包工作签到奖励,已由官方确认": "Today's Doubao Work check-in reward has already been claimed and confirmed by the official service.", "今日签到": "Today", "今日签到任务尚未满足领取条件": "Today's check-in task is not yet eligible for a reward.", "今日签到进度": "Today's check-in progress", "从清单里移除": "Remove from the list", "例如:每日自动签到": "For example: Daily automatic check-in", "保存计划": "Save schedule", "保活": "Keep-alive", "保活 API Key 已保存": "Keepalive API Key saved", "保活 {n}": "{n} kept alive", "保活+领取": "Keep-alive + claim", "保活中…": "Keeping alive…", "保活模型链": "Keep-alive model chain", "保活模型链为全局配置,猫猫旅行有独立的开关与时刻。": "The keep-alive model chain is global. Cat travel has its own switch and times.", "先创建签到计划,再为它设置定时补签。": "Create a check-in schedule first, then configure its scheduled catch-up.", "先查询活动,再选择要领取的奖励;不会购买或订阅套餐": "Query campaigns, then choose a reward to claim. No plan is purchased or subscribed to.", "免费体验套餐": "Free trial plan", "免费套餐已开通并确认生效": "The free plan has been activated and confirmed active", "兑换中…": "Redeeming…", "兑换权益": "Redeem benefit", "兑换结果待确认,请到官方客户端核对;不会重复提交": "Redemption is awaiting confirmation. Check the official client; no duplicate request will be sent.", "兑换请求未得到确认,请到官方客户端核对;不要重复提交": "The redemption request was not confirmed. Check the official client and do not submit it again.", "全选": "Select all", "全部 {n} 家": "All {n} providers", "全部完成": "All done", "全部查询": "Query all", "全部签到": "Check in all", "全部类型": "All types", "全部结果": "All outcomes", "全部账号均可签到": "All accounts can check in", "全部领取": "Claim all", "关着:不自动巡检(仍可手动巡检)": "Off: no automatic inspection (manual inspection still works)", "关着:所有条目都不执行": "Off: no schedule runs", "关闭活动窗口重试不会关闭定时补签。插件提供下次重试时刻时,以插件返回的时间为准。": "Disabling campaign-window retries does not disable scheduled catch-up. If the plugin supplies a retry time, that time takes precedence.", "其他自动任务": "Other automatic tasks", "凭证不可用": "Credentials unavailable", "凭证需刷新": "Credentials need refreshing", "切换任务后,左侧只保留有账号的提供商": "Only providers with accounts for the selected task are listed on the left", "删除失败:{error}": "Delete failed: {error}", "删除定时条目": "Delete schedule", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活并在网页通道建会话点亮日活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;CodeArts 领当日的运营福利(领取 → 确认 → 回读核实,自动执行受每天 6 次 / 间隔 10 分钟的写请求限流);OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "At the scheduled time, automatically checks in the enabled accounts of the ticked providers (WorkBuddy CN uses the daily check-in API; the international version uses the daily-activity quest: probe the event, claim the daily-active reward, then keep alive with the free model and open a session over the web channel to light up the daily activity; Raccoon uses the desktop daily-points flow; AutoClaw uses the official client's daily check-in task; Qoder CN claims via the event, and accounts without an assigned event get a neutral notice; Qoder international needs a device risk-control identity (generated by the UMID component of the local Qoder client / qodercli) before the \"Daily 100 Credits\" event is even visible — without the component you get a clear explanation instead of an error; Trae claims SOLO's daily check-in points (reset at midnight), and when the upstream has no event for the account or the credentials lack a device ID you get \"not claimed + reason\" instead of an error; Loomy claims the first-login points once a day per account; KukuAI claims the \"Free points\" daily task; CodeArts claims the day's operational perks (claim → confirm → verify by re-reading; automatic runs are rate-limited to 6 write requests a day, 10 minutes apart); OfficeAce claims all of the day's rewards in one go (daily check-in + newcomer gift)). If the machine was off at the scheduled time, a catch-up check-in runs at boot, so nothing is missed. Every provider's check-in API is idempotent — running it again never claims twice.", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;CodeArts 领当日的运营福利(领取 → 确认 → 回读核实,自动执行受每天 6 次 / 间隔 10 分钟的写请求限流);OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "At the scheduled time, auto check-in runs for the available accounts of the selected providers (WorkBuddy China uses the daily check-in API; International uses daily activity tasks — detect the campaign, claim the daily-activity reward, then keep the account alive with free models; Raccoon uses the desktop daily points flow; AutoClaw uses the official client's daily check-in task; Qoder China uses campaign claims, and accounts with no campaign assigned get a neutral notice; Qoder International needs a device risk-control identity first (generated by the UMID component of the local Qoder client / qodercli) to see the \"Daily 100 Credits\" campaign, and a missing component yields a clear explanation instead of an error; Trae claims SOLO's daily check-in points (reset at midnight by calendar day), and when the upstream has no campaign for the account or the credential has no device ID the result is \"not claimed + the specific reason\" instead of an error; Loomy awards first-login points once a day per account; KukuAI claims the \"Free points\" daily tasks; CodeArts claims that day's campaign welfare (claim → confirm → read back to verify; automatic runs are limited to 6 write attempts per day with a 10-minute gap); OfficeAce claims all of that day's rewards in one action (daily check-in + newcomer gift)). If the machine was off at the scheduled time, the missed run is made up automatically after it starts — nothing is skipped just because the machine was off. Every provider's check-in API is idempotent, so running it again never claims twice.", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "At the scheduled time, auto check-in runs for the available accounts of the selected providers (WorkBuddy China uses the daily check-in API; International uses daily activity tasks — detect the campaign, claim the daily-activity reward, then keep the account alive with free models; Raccoon uses the desktop daily points flow; AutoClaw uses the official client's daily check-in task; Qoder China uses campaign claims, and accounts with no campaign assigned get a neutral notice; Qoder International needs a device risk-control identity first (generated by the UMID component of the local Qoder client / qodercli) to see the \"Daily 100 Credits\" campaign, and a missing component yields a clear explanation instead of an error; Trae claims SOLO's daily check-in points (reset at midnight by calendar day), and when the upstream has no campaign for the account or the credential has no device ID the result is \"not claimed + the specific reason\" instead of an error; Loomy awards first-login points once a day per account; KukuAI claims the \"Free points\" daily tasks; OfficeAce claims all of that day's rewards in one action (daily check-in + newcomer gift)). If the machine was off at the scheduled time, the missed run is made up automatically after it starts — nothing is skipped just because the machine was off. Every provider's check-in API is idempotent, so running it again never claims twice.", "到点待执行": "Due, waiting to run", "到点时逐个签到,已勾 {n} / {total} 家": "Checked {n} of {total} — each is checked in at the scheduled time", "北京时间 · 已启用 {n} 个签到计划": "Beijing time · {n} enabled check-in schedules", "北京时间 · 每天重复 · 随设置更新": "Beijing time · Repeats daily · Updates with settings", "北京时间 · 逗号分隔 · 最多 6 条 · 到点后最多晚 30 秒执行;错过时点开机后会补跑一轮。": "Beijing time · comma-separated · up to 6 entries · runs at most 30 seconds late; a missed slot is caught up once after boot.", "北京时间 · 错过区间会补跑未执行账号,重启保留当天安排;任务在网关执行,关闭手机不影响排程。": "Beijing time · Missed windows are caught up for unrun accounts. Restarting keeps today’s schedule. Tasks run on the gateway, so closing the mobile app does not affect them.", "北京时间 · 错过时点开机后会自动补签": "Beijing time · missed runs are made up automatically after startup", "区间内陆续签到": "Checking in across the window", "区间结束后等待(分钟)": "Wait after window ends (minutes)", "单账号签到不受范围限制": "Per-account check-in is not limited by scope", "原套餐已到期或冻结,请在官方客户端处理;这里不会续费或变更套餐": "The existing plan has expired or been frozen. Manage it in the official client; this page will not renew or change it.", "去插件页安装签到能力": "Install check-in support on the Plugins page", "去领取": "Claim now", "发放中": "Issuing", "发放失败": "Issue failed", "取消验证": "Cancel verification", "另有 {n} 个账号不参与": "{n} more accounts are not included", "另有 {n} 个账号不参与每日签到": "{n} more accounts are not part of daily check-in", "只列当前任务里有账号的提供商。": "Only providers with accounts in the current task are listed.", "只重试这些账号,不会重签整个计划。具体原因见签到记录。": "Only these accounts are retried, not the whole schedule. See the records for details.", "只领取已完成任务的奖励(幂等,重复点不会重复入账)": "Claim rewards of completed tasks only (idempotent; repeated clicks will not double-credit)", "可使用管理员凭据调用:": "You can call this API with administrator credentials:", "可完成": "Can complete", "可派出": "Can send out", "可选 · 缺省显示时刻": "Optional · defaults to the time", "可领": "Available", "可领奖": "Can claim", "各家区间起点": "Window start by provider", "同时控制定时签到、定时补签和活动窗口重试;猫猫旅行独立运行。": "Controls scheduled check-ins, catch-up and campaign retries together. Cat travel runs independently.", "后端未返回 UMID 组件安装结果": "The backend did not return a UMID component installation result", "后端未返回 UMID 组件状态": "The backend did not return the UMID component status", "后端未返回定时签到数据": "Backend returned no schedule data", "后端未返回巡检结果": "The backend did not return an inspection result", "后端未返回新手福利数据": "The backend did not return starter reward data", "后端未返回有效的套餐状态": "The gateway did not return a valid plan status", "后端未返回权益兑换结果": "The gateway returned no redemption result", "后端未返回活动福利数据": "The gateway returned no campaign reward data", "后端未返回签到中心数据": "The backend did not return check-in center data", "启用的计划在各自区间内随机签到": "Enabled schedules check in randomly within their windows", "启用签到计划 {name}": "Enable check-in schedule {name}", "国际版签到需要 UMID 组件生成设备风控身份(本机未检测到)。": "International check-in requires the UMID component to generate a device risk-control identity (not detected on this machine).", "在桌面端设置": "Configure on desktop", "在途": "Traveling", "基本设置": "Basic settings", "填入缺省链": "Fill in default chain", "填写你已有的兑换码或订单号": "Enter a code or order number you already have", "填好时刻与签到范围后点「保存」;名称可以留空(界面显示时刻)": "Pick a time and the providers, then click Save; the name is optional (the time is shown when empty)", "失败 {n}": "{n} failed", "奖励与权益 · 资格、额度和有效期以官方返回为准": "Rewards and benefits · Eligibility, quota and validity follow the official response", "套餐已冻结": "Plan frozen", "套餐已到期": "Plan expired", "套餐已开通,无需重复操作": "The plan is already active. No further action is needed.", "套餐明细": "Plan details", "套餐查询凭证已过期,请先到账号页刷新凭证;此查询不会自动续期": "The credentials for querying plans have expired. Refresh them on the Accounts page first; this query does not refresh credentials automatically.", "套餐领取": "Plan claim", "安装 Qoder 客户端或 qodercli 后即可(无需重启网关)。": "Install the Qoder client or qodercli to enable it (no need to restart the gateway).", "安装中…": "Installing…", "安装后仍未检测到 UMID 组件,请重新检查。": "The UMID component is still not detected after installation. Check again.", "官方客户端的每日签到任务": "Official client's daily check-in task", "官方拒绝套餐查询,请检查账号授权;这不一定表示 Token 已过期": "The official service denied the plan query. Check account authorization; this does not necessarily mean the token has expired.", "官方显示自动续费已开启,请到官方客户端检查": "The official service reports that automatic renewal is enabled. Check it in the official client.", "官方未返回明确的套餐状态,暂不能开通": "The official service returned no definite plan status. Activation is unavailable for now.", "定时签到": "Scheduled check-in", "定时签到和定时补签分开管理。补签沿用对应签到计划的平台范围,不重复领取已完成的账号。": "Scheduled check-ins and catch-up are managed separately. Catch-up uses the linked schedule's platforms and skips completed accounts.", "定时签到已关闭": "Scheduled check-in disabled", "定时补签": "Scheduled catch-up", "实际发放:{time}": "Issued at: {time}", "实际时间由网关计算,晚窗口的平台会顺延补签;只处理当天未签到账号。": "The gateway calculates the actual times. Later windows delay catch-up, which only handles accounts not checked in today.", "实际签到安排": "Actual check-in schedule", "实际补签": "Actual catch-up", "实际补签取「主签到时间加等待间隔」与「补签不早于」中较晚的时刻。": "Catch-up runs at the later of the main check-in plus the wait interval and the earliest catch-up time.", "对应主签到:{times}": "Linked main check-in: {times}", "对应签到计划 · 沿用 {n} 个平台范围,只补未签到账号": "Linked schedule · Same {n} platforms, only accounts not checked in", "对应签到计划:{name}": "Linked check-in schedule: {name}", "尚未开始": "Not started", "尚未开通套餐,可开通免费体验套餐": "No plan is active. You can activate the free trial plan.", "尚未执行": "Not run yet", "尚未查询": "Not queried yet", "尚未查询任务状态": "Task status not queried yet", "尝试领取": "Try claiming", "展开": "Expand", "巡检一次": "Run one round", "巡检中…": "Inspecting…", "巡检失败:{reason}": "Inspection failed: {reason}", "已保存:{label}": "Saved: {label}", "已保存:保活模型链": "Saved: Keep-alive model chain", "已保存:定时条目": "Saved: schedule", "已保存:猫猫旅行排程": "Saved: cat travel schedule", "已全部领取": "All claimed", "已删除定时条目": "Schedule deleted", "已发放": "Issued", "已完成活跃上报(连登已点亮),但活动未开启(本次没有可领的奖励)": "Activity reported (streak lit up), but the campaign is not active (nothing to claim this time)", "已就绪": "Ready", "已开始批量签到": "Bulk check-in started", "已开通": "Active", "已得 {earned} / {total} 积分": "{earned} / {total} points earned", "已执行 {n} / {total} 个平台": "{n} / {total} platforms ran", "已执行 {n} / {total} 个账号": "{n} / {total} accounts processed", "已抽 {n} 次": "Drew {n} times", "已提交「{label}」的签到": "Check-in submitted for {label}", "已暂停": "Paused", "已有结果 {checked} / 共 {total} 个账号": "Results for {checked} / {total} accounts", "已查 {checked} / {total} 个账号": "Checked {checked} of {total} accounts", "已确认不自动续费": "Automatic renewal confirmed off", "已确认领取": "Claim confirmed", "已签": "Checked in", "已签到自动跳过": "Checked-in accounts are skipped", "已结束": "Ended", "已选 {n} / {total} 个平台": "{n} / {total} platforms selected", "已领 {claimed}/{total} · 累计 {earned} 积分": "Claimed {claimed}/{total} · {earned} points earned", "已领 {done} / {total} 份套餐": "Claimed {done} / {total} plans", "已领养": "Adopted", "已领取": "Claimed", "已领取「{name}」": "Claimed {name}", "带设备风控身份领取「每日 100 Credits」 · 需要 UMID 组件": "Claim \"Daily 100 Credits\" with a device risk-control identity · requires the UMID component", "平台与签到时间": "Platforms and check-in times", "平台与随机签到区间": "Platforms and random check-in windows", "平台专属": "Platform-specific", "平台专属时间": "Platform-specific time", "平台专属时间由网关提供。自定义时间会覆盖专属时间,提前执行可能遇到窗口未开。": "Platform-specific times come from the gateway. Custom times override them; running early may hit a closed window.", "平台批次": "Platform group", "开关": "Toggles", "开启定时补签": "Enable scheduled catch-up", "开启活动窗口重试": "Enable campaign-window retries", "开始 {time}": "Starts {time}", "开学季执行失败:{error}": "School-season run failed: {error}", "开学季执行完成:{message}": "School-season run completed: {message}", "开学季活动": "School-season event", "开着:启用的条目按各自时刻执行": "On: enabled schedules run at their own times", "开着:按下面的时刻自动巡检": "On: inspects automatically at the times below", "开通中…": "Activating…", "开通免费套餐": "Activate free plan", "开通未得到确认,请重新查询套餐状态;不会自动重试开通": "Activation was not confirmed. Check the plan status again; activation will not be retried automatically.", "开通结果待确认": "Activation awaiting confirmation", "开通请求仍在处理或结果待确认,请稍后查询,不要重复提交": "Activation is still processing or awaiting confirmation. Check again later; do not submit another request.", "当前没有可领取的套餐": "No plans available right now", "当前没有等待窗口或活动下发的账号。": "No accounts are waiting for a window or campaign.", "当前活动未提供每日签到任务": "The current campaign has no daily check-in task.", "当前网关中,补签等待间隔与活动重试间隔共用;修改间隔会同步影响两者,开关与重试次数仍分别设置。": "The current gateway shares the catch-up wait and campaign retry interval. Changing it affects both; switches and retry counts are still separate.", "当前账号暂不符合该活动的领取条件": "This account is not currently eligible for this reward", "当前账号未下发豆包工作签到活动,无需反复领取": "No Doubao Work check-in campaign is available for this account. Repeated claims are unnecessary.", "待发放": "Pending issue", "待执行": "Waiting to run", "待签": "Not checked in", "待领取": "To claim", "待领新手福利": "Starter rewards to claim", "总开关": "Master switch", "总开关已关闭": "Master switch is off", "总开关已关闭 · 在「定时签到」页打开": "Master switch is off · enable it on the \"Scheduled check-in\" tab", "成功 {n}": "{n} succeeded", "成长任务": "Growth tasks", "成长任务完成({done} 项成功、{failed} 项失败),积分 +{credit} 能量 +{energy}": "Growth tasks finished ({done} succeeded, {failed} failed): credits +{credit}, energy +{energy}", "成长任务执行失败:{error}": "Growth task run failed: {error}", "我已阅读并同意以下服务声明,仅授权开通零元体验套餐,不自动续费": "I have read and accept the service statements below, and authorize only the zero-cost trial without automatic renewal.", "所有时间按北京时间计算。每个账号每天随机安排一次,重启保留当天安排;错过区间时会补跑未执行账号。": "All times use Beijing time. Each account gets one random time per day, retained across restarts. If a window is missed, unrun accounts are caught up.", "所有时间按北京时间计算。网关启动后会补跑当天已到点、尚未执行的签到,不会提前执行未来时点。": "All times use Beijing time. On startup, the gateway catches up today's due, unrun check-ins without running future slots early.", "手动签到": "Manual check-in", "执行失败:{error}": "Run failed: {error}", "执行并抽奖": "Run & draw", "执行开学季任务并抽空抽奖机会(分享 / 对话 / 专家事件)": "Run school-season tasks and spend all draw chances (share / chat / expert events)", "执行规则": "Execution rules", "把缺省链填进清单,再点「保存」生效": "Puts the default chain into the list; click Save to apply", "抽奖机会 {n} 次": "{n} draw chances", "按住拖动调整顺序": "Press and drag to reorder", "按住拖动,调整这个模型在链里的顺序": "Press and drag to change this model's position in the chain", "按序逐个尝试,共 {n} 个": "{n} models, tried in order", "按结果筛选": "Filter by outcome", "授权被拒绝": "Authorization denied", "探测 + 领取 + 保活 · 与定时签到同一套组合": "Detect + claim + keep-alive · same combo as scheduled check-in", "探测活动并领取日活奖励 · 不做保活": "Detect the campaign and claim the daily-activity reward · no keep-alive", "接单 + 点亮 + 领奖(只处理已实测沉淀的任务)": "Accept + light up + claim (only tasks with verified recipes)", "插件未就绪,范围仍保留": "Plugin unavailable; scope retained", "搜索平台": "Search platforms", "搜索签到平台": "Search check-in platforms", "搜账号 / 收益 / 错误 / 触发原因": "Search account / gain / error / trigger reason", "收起": "Collapse", "收起平台": "Hide platforms", "收起新建": "Close new entry", "新建定时条目": "New scheduled entry", "新建签到计划": "New check-in schedule", "新手任务": "Starter tasks", "新手福利": "Starter rewards", "新手福利与活动": "Starter rewards & campaigns", "新手福利是一次性任务:领完就没了,重复点不会重复加分。": "Starter rewards are one-time tasks: once claimed they are gone, and repeated taps do not add points again.", "新手福利有 {n} 项领取失败,可重试": "{n} starter reward(s) failed to claim — you can retry", "新手福利领取失败 {n} 项": "Failed to claim {n} starter rewards", "新用户积分": "New-user credits", "新计划默认开启补签和活动窗口重试;保存后可到「定时补签」页单独调整。": "New schedules enable catch-up and campaign retries by default. After saving, adjust them on the Scheduled catch-up tab.", "无": "None", "无独立签到接口 · 每天替账号打一次登录信息(即当日魔粒)": "No dedicated check-in API · hits the login-info endpoint once a day per account (which grants the daily credits)", "无独立签到接口 · 每天替账号打一次首次登录积分": "No dedicated check-in API · awards first-login points once a day per account", "无账号": "No accounts", "时刻": "Times", "暂不可领": "Not claimable yet", "暂不可领(未满足条件)": "Not claimable yet (requirements not met)", "暂不支持": "Not supported yet", "暂无可领取福利": "No rewards available to claim", "暂无启用的条目": "No enabled entries", "暂无启用的条目 · 点此添加": "No enabled schedules · click to add one", "暂无月度赠送记录": "No monthly gift records", "暂无活动": "No active campaign", "最近执行:{time}": "Last run: {time}", "最近结果:成功 {n} · 保活 {active} · 失败 {failed}": "Latest result: {n} successful · {active} kept active · {failed} failed", "月度赠送": "Monthly gifts", "有平台到点待执行": "Some platforms are due and waiting", "有未保存的改动": "Unsaved changes", "未勾选提供商": "No provider selected", "未完成,请查看签到记录": "Not completed. Please check the check-in records.", "未开启": "Off", "未开通": "Not activated", "未执行开通,请查询套餐状态查看原因": "Activation was not performed. Query the plan status for details.", "未解锁": "Locked", "未领养(领养需先完成当日对话量)": "Not adopted (adoption requires the daily chat quota first)", "未领取": "Not claimed", "本地台账里今天还没领过;活动期内每天发一份新套餐": "No claim recorded locally for today yet; a new plan is issued every day during the event", "本地台账里今天(北京时间)领过的套餐:{plans}": "Plans claimed today (Beijing time) according to the local record: {plans}", "本次签到结果的记录时间:{time}(本机时区)": "Time this check-in result was recorded: {time} (local time zone)", "本次自动领取未完成验证,请在套餐明细中手动领取": "Verification was not completed for this automatic claim. Claim manually from the plan details.", "本轮已跳过:{reason}": "This run was skipped: {reason}", "权益兑换成功,重新查询可查看最新记录": "Benefit redeemed. Query again to see the latest records.", "权益兑换未成功": "Benefit redemption failed", "权益兑换码 / 订单号": "Redemption code / order number", "条启用": "enabled", "来源说明中的时刻是定时条目的名称或基准时刻,不是本次执行时间": "The time in the source description is the schedule name or base time, not the time of this run", "果办免费体验套餐": "OfficeAce free trial plan", "果办套餐接口不可用,请更新主程序和提供商插件": "The OfficeAce plan API is unavailable. Update the main application and the provider plugin.", "果办服务声明": "OfficeAce Service Statement", "查看平台": "View platforms", "查看签到记录": "View check-in records", "查询于 {time}": "Queried at {time}", "查询任务": "Query tasks", "查询任务树并一键点亮 / 领奖(含开学季与猫猫旅行)": "Query the task tree, then light up / claim in one click (includes school-season and cat travel)", "查询只读取套餐状态,点击开通后才会执行": "Querying only reads the plan status. Activation runs only when you click Activate.", "查询失败:{error}": "Query failed: {error}", "查询套餐": "Check plan", "查询活动": "Query campaigns", "查询结果": "Check result", "桌面端每日积分链路": "Desktop daily points flow", "次数按账号每天单独计算:重试到上限的账号今天不再重试,明天自动重置。": "The limit is counted per account, per day: an account that reaches it is not retried again today and resets tomorrow.", "正在为本次领取验证;若出现滑块,请手动完成": "Verifying this claim. If a slider appears, please complete it manually.", "正在读取 UMID 组件状态…": "Loading the UMID component status…", "正在读取定时签到数据…": "Loading schedule data…", "正在读取签到数据…": "Loading check-in data…", "每个签到计划对应一组补签设置": "Each check-in schedule has its own catch-up settings", "每个账号每天在区间内随机执行一次;开始与结束相同则按固定时刻执行。": "Each account runs once a day at a random time within the window. Equal start and end times mean a fixed-time run.", "每天 {time}": "Daily at {time}", "每天 {time} · {scope}": "Daily {time} · {scope}", "每天定点巡检 · 一趟推进一步 · 与签到排程互相独立": "Runs once per slot · one step per run · independent of the check-in schedule", "每天执行": "Runs daily", "每天按这里的时刻自动巡检一遍 WorkBuddy 国内版账号:没有猫就领养、在家就派出、到站就领奖。一趟只推进一步,所以建议留两个时刻(早上派出、晚上领奖)。企业版与国际版账号自动跳过。": "Automatically inspects every WorkBuddy China account at these times: adopts a cat if there is none, sends it out when idle, claims the reward when it arrives. Each run advances one step, so two slots are recommended (send out in the morning, claim in the evening). Enterprise and international accounts are skipped automatically.", "每天时刻": "Daily time", "每天自动执行": "Runs automatically every day", "每天补查一次": "One catch-up check daily", "每天补查一轮,只处理今天未签到的账号。": "Checks once daily, only for accounts not checked in today.", "每执行一次签到 · 每个账号一条明细 · 结果与收益以后端落账为准": "One row per account per check-in run · outcomes and gains as recorded by the backend", "每日活动签到(+100 积分,已领则中性提示)": "Daily activity check-in (+100 credits; a neutral note if already claimed)", "每日活跃任务 · 网页会话保活点亮日活,领取才加积分 · 两者可分开执行": "Daily activity tasks · a web-app conversation lights up the daily activity, only claims add points · the two can run separately", "每日登录积分 · 顺带领取会员活动 · 访客账号无积分体系(跳过)": "Daily sign-in points · claims member activities along the way · guest accounts have no points system (skipped)", "每日福利 · 领取 → 确认 → 回读核实 · 按北京时间自然日重置": "Daily welfare · claim → confirm → read back to verify · resets on the Beijing calendar day", "每日签到": "Daily check-in", "每日签到积分": "Daily check-in credits", "每条条目各有时刻与范围 · 各自当天去重 · 错过时点开机自动补签": "Each schedule has its own time and scope · same-day dedup per entry · missed runs are made up after startup", "每账号一条明细": "One entry per account", "每账号一条明细 · 点此查看「签到记录」": "One row per account · open \"Check-in records\"", "每账号每天最多重试(次)": "Maximum retries per account per day", "没有专属时间的平台跟随默认时间;已有专属或自定义时间的平台不会被覆盖。": "Platforms without their own time follow the default. Platform-specific and custom times are preserved.", "没有匹配的平台": "No matching platforms", "没有可执行账号": "No eligible accounts", "没有可签到的账号": "No accounts available for check-in", "没有可领套餐的账号(ZCode 未添加)。": "No accounts with claimable plans (ZCode not added).", "没有可领福利的账号(CodeArts / ZCode 未添加)。": "No accounts with claimable rewards (CodeArts / ZCode not added).", "没有支持成长任务的账号(需要 WorkBuddy 国内版)。": "No accounts support growth tasks (WorkBuddy CN required).", "没有支持新手福利的账号": "No accounts support starter rewards", "没有支持新手福利的账号 —— 目前有 Loomy、小浣熊、CodeArts 三家。": "No accounts support starter rewards — currently Loomy, Raccoon and CodeArts.", "没有支持活动福利的账号,请添加账号并更新提供商插件。": "No accounts support campaign rewards. Add an account and update the provider plugin.", "没有符合条件的账号。": "No accounts match the current filter.", "没有符合筛选条件的签到记录": "No check-in records match the current filters", "没有需要执行的任务": "Nothing to run", "活动奖励领取成功": "Campaign reward claimed successfully", "活动尚未开始(上游接口未部署)": "Campaign has not started (upstream endpoint not deployed)", "活动开始:{time}": "Campaign starts: {time}", "活动按自然日发新套餐,每天可领一次": "The campaign issues a new plan per calendar day; one claim per day", "活动未开放或已结束,请重新查询": "The campaign has not opened or has ended. Query again.", "活动福利": "Event rewards", "活动福利接口不可用,请更新网关后重试": "The campaign rewards API is unavailable. Update the gateway and try again.", "活动窗口重试": "Campaign-window retries", "活动窗口重试已关闭,等待窗口或活动下发的账号不会自动再试。": "Window retry is off; accounts waiting for a window or campaign are not retried automatically.", "活动领取未成功,请重新查询后再试": "The reward was not claimed. Query again before retrying.", "活动(campaign)领取 · 每天 10:00 刷新": "Campaign claims · refreshed daily at 10:00", "活跃上报与保活均未成功,且活动未开启": "Both the activity report and keep-alive failed, and the campaign is not active", "活跃上报完成,但保活未成功且活动未开启": "Activity reported, but keep-alive failed and the campaign is not active", "活跃上报完成,但活动未开启": "Activity reported, but the campaign is not active", "活跃上报成功": "Activity reported", "活跃保活失败": "Keep-alive failed", "活跃保活完成": "Keep-alive complete", "活跃保活完成,但活动未开启": "Keep-alive complete, but the campaign is not active", "活跃保活完成,但活跃上报失败且活动未开启": "Keep-alive complete, but the activity report failed and the campaign is not active", "添加条目": "Add schedule", "添加模型": "Add model", "清单为空 —— 保存后恢复缺省链": "The list is empty — saving restores the default chain", "清单里已经有「{name}」": "The list already contains \"{name}\"", "清空失败:{error}": "Clear failed: {error}", "清空签到记录": "Clear check-in records", "滚动 24 小时签到;按插件返回的时间等待下一次领取,不以自然日重复领取": "Rolling 24-hour check-in. Wait for the next time reported by the plugin instead of claiming again at midnight.", "点「套餐明细」看领到了哪几份、什么时候生效;活动期内每天可再领": "Click \"Plan details\" to see which plans you got and when they take effect; you can claim again every day during the event", "点击行展开账号明细 · 单账号签到不受范围限制": "Click a row to expand account details · single-account check-in is not limited by scope", "点进去查看任务并领取": "Tap to view the tasks and claim", "状态未确认": "Status unconfirmed", "独立链路 · 只提供手动入口 · 不进自动签到": "Separate flow · manual entry only · not part of auto check-in", "猫猫旅行": "Cat travel", "猫猫旅行失败:{error}": "Cat travel failed: {error}", "猫猫旅行失败:{message}": "Cat travel failed: {message}", "猫猫旅行定时排程": "Cat travel schedule", "猫猫旅行:{message}": "Cat travel: {message}", "猫猫旅行:{n} 个动作,+{credit} 积分": "Cat travel: {n} actions, +{credit} credits", "猫猫旅行:{n} 个动作,+{credit} 积分,{failed} 个失败": "Cat travel: {n} actions, +{credit} credits, {failed} failed", "用免费模型与网页会话维持账号活跃 · 不领取奖励": "Keep the account active with free models and a web-app conversation · no rewards claimed", "由官方按期自动发放,这里只展示记录,不重复领取。": "Issued automatically by the official service on schedule. These records are read-only; no duplicate claims are made.", "确定删除「{name}」?删除后到点不再执行。": "Delete \"{name}\"? It will no longer run at its scheduled time.", "确定删除「{name}」?对应的定时补签与活动重试也会一并移除,签到记录保留。": "Delete “{name}”? Its catch-up and campaign retries will also be removed. Check-in records are kept.", "确定清空全部签到记录?清空后无法恢复。": "Clear ALL check-in records? This cannot be undone.", "确定清空当前筛选出的签到记录?清空后无法恢复。": "Clear the filtered check-in records? This cannot be undone.", "确认兑换": "Confirm redemption", "确认把这份权益兑换到当前账号?兑换后可能无法撤销。": "Redeem this benefit to the current account? This may not be reversible.", "移除 {name}": "Remove {name}", "立即全部签到": "Check in all now", "立即巡检全部": "Inspect all now", "立即执行「{name}」会手动签到整个计划范围,不等待平台时点。窗口未开的平台可能仍无法领取。": "Run “{name}” now for the entire scope, without waiting for platform times? Closed windows may still prevent claims.", "等待时点": "Waiting for time", "等待签到区间": "Waiting for the check-in window", "等待签到时间": "Waiting for check-in time", "签到": "Check in", "签到与补签计划已暂停,配置仍保留;手动执行不受总开关影响。": "Check-in and catch-up schedules are paused, with settings retained. Manual runs are not affected by the master switch.", "签到中…": "Checking in…", "签到中心分区": "Check-in center sections", "签到功能分类": "Check-in categories", "签到区间": "Check-in window", "签到失败:{error}": "Check-in failed: {error}", "签到完成:{succeeded}/{total} 成功{active},{failed} 个失败": "Check-in complete: {succeeded}/{total} succeeded{active}, {failed} failed", "签到完成:{success}/{total} 成功,保活 {active},失败 {failed}": "Check-in finished: {success}/{total} successful, {active} kept active, {failed} failed", "签到成功": "Check-in succeeded", "签到提供商": "Check-in providers", "签到日期按北京时间计算": "The check-in date uses Beijing time", "签到时间": "Check-in time", "签到类型": "Check-in type", "签到范围": "Check-in scope", "签到触发时刻": "Check-in trigger time", "签到计划": "Check-in schedules", "签到记录": "Check-in records", "签到记录时间范围": "Check-in records time range", "签到记录表": "Check-in records table", "管理定时签到": "Manage scheduled check-ins", "累计签到记录": "Total check-in records", "结束时间不能早于开始时间,暂不支持跨天区间。": "The end cannot be earlier than the start. Overnight windows are not supported yet.", "结算于 {time}": "Settled at {time}", "编辑签到计划": "Edit check-in schedule", "缺少套餐开通凭证,请通过果办网页登录补齐授权": "Plan activation credentials are missing. Sign in to OfficeAce through web login to restore authorization.", "缺少开通凭证": "Activation credentials missing", "网关设备组件": "Gateway device component", "能量 {n}": "Energy {n}", "腾讯每日签到接口 · 仅国内版": "Tencent daily check-in API · China edition only", "自动巡检已暂停:{reason}": "Automatic inspection is paused: {reason}", "自动执行已开启": "Automatic runs enabled", "自动执行已暂停": "Automatic runs paused", "自动执行总开关": "Automatic run master switch", "自定义时间": "Custom time", "至少勾一家才能保存(不勾等于这条条目不签到)": "Select at least one provider to save (an empty scope means this entry checks in nothing)", "补签不早于": "Catch-up no earlier than", "补签不早于 {time}": "Catch-up no earlier than {time}", "补签单独设置,只检查今天还没有签到的账号。": "Configure catch-up separately; only checks accounts not checked in today.", "补签取「主签到区间结束加等待间隔」与「补签不早于」中较晚的时刻,不会提前补签尚未轮到的账号。": "Catch-up uses the later of the main window end plus the wait interval and the earliest catch-up time. Accounts still waiting for their turn are not processed early.", "补签在主签到区间结束后执行,只补未签到账号。": "Catch-up runs after the main check-in window and only processes accounts not checked in.", "补签已关闭": "Catch-up disabled", "补签已关闭,不影响主签到;开启后会自动生成各平台的补签安排。": "Catch-up is off; main check-ins are unaffected. Enabling it generates catch-up times for each platform.", "补签已开启": "Catch-up enabled", "补签检查": "Catch-up check", "补签计划": "Catch-up schedules", "触发会话活跃并观测积分变化;未观测到新发放时不会标为已签到": "Activates the session and checks for a points increase. No newly observed grant means it is not marked as checked in.", "计划名称": "Schedule name", "订单 {order} · 第 {period} 期": "Order {order} · Period {period}", "设备校验未就绪,部分活动可能不显示:{reason}": "Device verification is unavailable, so some campaigns may be hidden: {reason}", "设置各平台每天的签到时间,按窗口分批执行。": "Set each platform's daily check-in time and run in groups by window.", "设置定时补签": "Configure scheduled catch-up", "设置每天的签到区间,各账号在区间内随机错峰执行。": "Set the daily check-in window. Accounts run at random staggered times within it.", "设置活动窗口重试": "Configure campaign-window retries", "设置补签": "Configure catch-up", "该权益已兑换,无需重复提交": "This benefit was already redeemed. Do not submit it again.", "该活动已领取,无需重复领取": "This reward has already been claimed. No further claim is needed.", "该账号当前没有可领取的限时活动": "No limited-time rewards are currently available for this account", "请填写合法区间,结束不早于开始,并至少选择一家提供商。": "Enter a valid window with the end no earlier than the start, and select at least one provider.", "请检查时间、间隔和次数是否在允许范围内。": "Check that the time, interval and count are within the allowed ranges.", "请至少选择一个签到平台": "Select at least one check-in platform", "读取定时签到数据失败:{error}": "Failed to load schedule data: {error}", "读取签到数据失败:{error}": "Failed to load check-in data: {error}", "读取签到记录失败:{error}": "Failed to load check-in records: {error}", "调整重试": "Adjust retries", "豆包工作今日领取仍未确认,请前往官方客户端查看;再次点击仅查询结果,不会重复领取": "Today's Doubao Work claim is still unconfirmed. Check the official app; clicking again only checks the result and does not repeat the claim.", "豆包工作签到奖励已领取,已回查确认": "The Doubao Work check-in reward was claimed and verified.", "豆包工作领取结果待确认,稍后只查询结果,不会重复提交领取": "The Doubao Work claim is awaiting confirmation. Later attempts will only check the result, not submit another claim.", "账号未使用官方果办网关地址,无法在此开通免费套餐": "This account does not use an official OfficeAce gateway address. The free plan cannot be activated here.", "跟随默认时间": "Follows default time", "跳过 {n}": "{n} skipped", "运营活动交付(领取 → 确认 → 回读核实)· 领的是套餐赠送积分": "Campaign delivery (claim → confirm → read back to verify) · these are plan bonus points", "还有 {n} 个平台未执行": "{n} platforms have not run yet", "还没执行过": "Never run yet", "还没有可签到的提供商。签到能力随提供商插件包提供,装好并添加账号后这里就会出现。": "No providers to check in yet. Check-in support ships with the provider plugin packs; it appears here once a pack is installed and an account is added.", "还没有定时条目 —— 点「添加条目」建一条,或到「签到中心」手动签到。": "No schedules yet — click \"Add schedule\" to create one, or check in manually on the \"Check-in center\" tab.", "还没有签到计划,先选择平台和默认时间。": "No check-in schedules yet. Choose platforms and a default time first.", "还没有签到记录 —— 手动签到或等定时条目执行后,明细会出现在这里。": "No check-in records yet — details appear here after a manual check-in or a scheduled run.", "还没有记录": "No records yet", "这个账号没有新手任务": "This account has no starter tasks", "这里只修改定时签到;补签和活动重试配置保持原样,在「定时补签」页单独设置。": "Only scheduled check-ins are edited here. Catch-up and campaign retry settings are preserved and configured separately on the catch-up tab.", "这里只管理签到时间;补签与活动窗口重试在独立页设置。": "Only check-in times are managed here. Catch-up and campaign retries have a separate page.", "连登 {n} 天": "{n}-day streak", "选填": "Optional", "选择 {name}": "Select {name}", "选择平台后显示实际签到时间": "Select platforms to see actual check-in times", "部分": "Partial", "重新查询": "Check again", "重新检查": "Check again", "重签": "Check in again", "重试": "Retry", "重试关闭": "Retries disabled", "重试已暂停": "Retries paused", "重试开启": "Retries enabled", "重试间隔(分钟)": "Retry interval (minutes)", "间隔 {gap} 分钟 · 每账号每天最多重试 {limit} 次": "Every {gap} minutes · Up to {limit} retries per account per day", "间隔填 0 会关闭活动窗口重试;定时补签仍至少等待 1 分钟,不会一起关闭。": "An interval of 0 disables campaign retries. Scheduled catch-up still waits at least 1 minute and remains enabled.", "限时体验套餐 · 领取需滑块验证码 · 逐份查看与领取": "Limited-time trial plan · claim requires a slider CAPTCHA · view and claim one by one", "限时体验套餐(start-plan),活动期内每天一份 · 领取需滑块验证码": "Limited-time trial plan (start-plan), one per day during the campaign · claim requires a slider CAPTCHA", "限时活动与体验套餐 · 查询后逐项领取 · 不影响每日签到": "Limited-time rewards and trial plans · Query and claim individually · Separate from daily check-in", "随机签到开始": "Random check-in start", "随机签到结束": "Random check-in end", "随签到计划暂停": "Paused with the check-in schedule", "需人工处理": "Manual action required", "需真实操作": "Requires real action", "需要人工验证": "Human verification required", "非活动期": "Event inactive", "项": "items", "预计发放:{time}": "Scheduled issue: {time}", "领取": "Claim", "领取中": "Claiming", "领取中…": "Claiming…", "领取免费 CodingPlan(按需:套餐有效时只回读额度)": "Claim the free CodingPlan (on demand: when the plan is active the quota is only read back)", "领取后 {days} 天有效": "Valid for {days} days after claiming", "领取失败": "Claim failed", "领取失败:{error}": "Claim failed: {error}", "领取奖励": "Claim reward", "领取截止:{time}": "Claim deadline: {time}", "领取时间:{time}": "Claimed at: {time}", "领取结果待确认": "Claim awaiting confirmation", "领取结果待确认,请稍后查询;不会重复提交领取": "The claim is awaiting confirmation. Query again later; no duplicate claim will be submitted.", "领取被拒绝": "Claim rejected", "领取通常需要过一次滑块验证;活动套餐多为当天稍晚生效,领取后可在桌面端「账号」里看套餐明细。": "Claiming usually requires passing a slider verification. Campaign plans often take effect later the same day; after claiming, see plan details under Accounts on desktop.", "领取验证任务已结束,请到套餐明细查看结果": "This verification task has ended. Check the plan details for the result.", "额度到期:{time}": "Credits expire: {time}", "验证凭据正在提交,领取结果请查看签到记录": "Submitting verification. Check the check-in records for the claim result.", "验证提交结果未确认,请查看签到记录,勿重复领取": "The verification submission is unconfirmed. Check the check-in records and do not repeat the claim.", "默认 {time} · {n} 个平台 · {groups} 组签到时间": "Default {time} · {n} platforms · {groups} time groups", "默认使用第一把可用 API Key,想换就在上面选一把": "Uses the first available API Key by default; select another above to change it.", "默认签到时间": "Default check-in time", "(共 {n} 个账号)": " ({n} accounts total)", "(能量 / 连登读数本次未取到)": "(Energy / streak readings unavailable this time)", ",日活保活 {n} 个": ", {n} kept alive", " 字段": " field", " 的 ": " — see the ", "{enabled} / {total} 个已开启": "{enabled} / {total} enabled", "{name}开关": "{name} toggle", "{name}间隔": "{name} interval", "{name}间隔必须是 {min}–{max} 分钟的整数": "The {name} interval must be a whole number from {min} to {max} minutes", "{n} 秒后": "in {n} seconds", "✅ {task}:{summary}": "✅ {task}: {summary}", "✅ 已更新「{label}」": "✅ Updated \"{label}\"", "上次执行 {time}": "Last run {time}", "上次执行 {time}({result})": "Last run {time} ({result})", "上次执行中断,没有完整结果;请核对账号状态": "The previous run was interrupted and has no complete results. Check the account status.", "下次执行 {time}": "Next run: {time}", "下次执行 {time}({relative})": "Next run {time} ({relative})", "仅维护过期或即将过期的凭证": "Only expired or soon-to-expire credentials are maintained", "仅记录状态与结果,不展示密钥或令牌。": "Only status and results are recorded; keys and tokens are not shown.", "仅重试失败项": "Retry failed items only", "仅重试这一项": "Retry this item only", "任务正在执行中,请稍候": "The task is already running. Please wait.", "任务清单": "Task list", "任务配置保存在 ": "Task configuration is stored in ", "停留在「报表」页时按此间隔重新拉取统计数据;页面不可见时不请求。": "While the Reports page is open, statistics are fetched again at this interval; no requests are made while the page is not visible.", "停留在「日志」页时按此间隔重新拉取系统事件;页面不可见时不请求。": "While the Logs page is open, system events are fetched again at this interval; no requests are made while the page is not visible.", "停留在「请求日志」页时按此间隔重新拉取请求日志;页面不可见时不请求。": "While the Request logs page is open, request logs are fetched again at this interval; no requests are made while the page is not visible.", "全部触发方式": "All triggers", "全部跳过": "All skipped", "共 {n} 次执行": "{n} runs in total", "关闭自动维护不影响手动执行,也不影响对话请求所需的按需续期。": "Turning off automatic maintenance does not affect manual runs or on-demand credential renewal for chat requests.", "冷却中,{relative}重试": "Cooling down, retrying {relative}", "冷却至 {time}": "Cooldown until {time}", "凭证变化": "Credential changes", "凭证已更新": "Credentials updated", "凭证未过期或临期": "Credentials are not expired or close to expiry", "凭证维护": "Credential maintenance", "凭证自动维护": "Credential auto-maintenance", "分钟执行一次": "minutes per run", "刚刚已执行,请稍后重试": "This task just ran. Please retry shortly.", "刷新前有效期": "Expiry before renewal", "刷新后有效期": "Expiry after renewal", "刷新记录": "Refresh records", "即将执行": "About to run", "原因 / 说明": "Reason / Notes", "去账号页处理": "Open account", "只刷新过期或即将过期的账号凭证": "Renew only expired or soon-to-expire account credentials", "可填 {min}–{max}": "Allowed: {min}–{max}", "可填 {min}–{max} {unit}(默认 {def} {unit})": "Allowed: {min}–{max} {unit} (default {def} {unit})", "固定模型清单": "Fixed model list", "失败重试": "Retry of failed items", "定时任务已刷新": "Scheduled tasks refreshed", "定期向 GitHub 查询最新发布版本,默认每 20 分钟一次。检查结果、排期和限流冷却跨重启保留;手动检查也会合并重复请求并遵守冷却。开关与间隔在「软件更新」面板的「更新设置」弹窗里配置(定时任务页不再渲染这一条)。": "Periodically queries GitHub for the latest release version, once every 20 minutes by default. Check results, scheduling, and the rate-limit cooldown persist across restarts; manual checks also merge duplicate requests and respect the cooldown. The toggle and interval are configured in the \"Update settings\" dialog of the \"Software update\" panel (this row is no longer rendered on the Scheduled tasks page).", "定期拉取最新模型清单,重启沿用排期与缓存。客户端读取模型列表的后台刷新也遵守本任务开关、间隔和失败冷却;手动获取模型可提前刷新。": "Periodically fetches the latest model list; the schedule and cache carry over across restarts. The background refresh when clients read the model list also respects this task's toggle, interval, and failure cooldown; a manual model fetch can refresh ahead of schedule.", "定期拉取最新模型清单,重启沿用排期与缓存。客户端读取模型列表的后台刷新也遵守本任务开关、间隔和失败冷却;手动获取模型可提前刷新。同一轮顺带刷新 models.dev 模型元数据(能力位与思考档位,可在设置页单独关闭)。": "Periodically fetches the latest model list; the schedule and cache carry over across restarts. The background refresh when clients read the model list also respects this task's toggle, interval, and failure cooldown; a manual model fetch can refresh ahead of schedule. The same round also refreshes the models.dev model metadata (capability flags and reasoning tiers, which can be turned off separately on the Settings page).", "定期获取各提供商的最新模型清单": "Periodically fetch each provider's latest model list", "定期遍历账号,只刷新已过期或临期的凭证。重启后沿用上次排期,失败账号在冷却后重试;转发需要的按需续期不受此开关影响。": "Periodically iterates over accounts and refreshes only expired or soon-to-expire credentials. The previous schedule carries over after a restart, and failed accounts are retried after a cooldown; on-demand renewals needed for forwarding are not affected by this toggle.", "客户端触发": "Client-triggered", "尚未执行维护": "Not run yet", "尚未执行维护,自动或手动执行后会显示结果": "No maintenance has run yet. Results will appear after an automatic or manual run.", "已在设置里关闭 models.dev 模型元数据": "models.dev metadata is disabled in Settings", "已执行": "Done", "已更新 {n} 条": "Updated {n} entries", "已续期并确认凭证更新": "Renewed and confirmed that credentials were updated", "已获取最新模型目录": "Latest model catalog fetched", "建议重试时间": "Suggested retry time", "当前没有可用的目录账号": "No account is available for fetching the catalog", "成功提供商": "Providers updated", "成功账号": "Accounts renewed", "手动触发": "Manual", "执行中断": "Interrupted", "执行中断,结果可能已部分生效,请先核对账号状态": "The run was interrupted. Some changes may have taken effect; check the account status first.", "执行失败:{reason}": "Run failed: {reason}", "执行时的结果快照,不随账号后续变化而改变": "A snapshot of this run, unchanged by later account updates", "执行时间": "Run time", "执行明细": "Run details", "执行汇总": "Run summary", "执行间隔(分钟)": "Interval (minutes)", "报表自动刷新": "Reports auto-refresh", "指定账号不属于该提供商、未启用或没有可用凭证": "The selected account belongs to another provider, is disabled, or has no usable credentials", "提供商当前不可用,未执行目录更新": "The provider is unavailable; its catalog was not updated", "搜索账号或提供商": "Search accounts or providers", "收起明细": "Hide details", "改动立即生效,不需要重启程序": "Changes take effect immediately; no restart needed", "无失败项": "No failures", "日志页自动刷新": "Logs auto-refresh", "明细状态筛选": "Filter item status", "暂无维护记录,首次执行后会自动保存": "No maintenance records yet. The first run will be saved automatically.", "暂无记录": "No records yet", "最近一次": "Last run", "有失败项": "Has failures", "有效期已延长": "Expiry extended", "未使用账号": "No account used", "未变更": "Unchanged", "未注册的提供商": "Unregistered provider", "未返回失败原因": "No failure reason was returned", "本次无需更新,沿用现有状态": "No update needed; keeping the current state", "本轮共 {n} 项": "{n} items in this run", "本轮没有符合条件的项目": "No matching items in this run", "查看凭证与模型目录的每次维护结果,失败和跳过都有原因": "Review every credential and model catalog maintenance run, with reasons for failures and skipped items", "查看原因": "View reason", "查看明细": "View details", "查看详情": "View details", "模型基础信息": "Model metadata", "模型目录": "Model catalog", "模型目录刷新": "Model catalog refresh", "模型目录更新": "Model catalog update", "正在加载定时任务…": "Loading scheduled tasks…", "正在读取维护记录…": "Loading maintenance records…", "此前仅有汇总,尚无逐项记录": "Only a summary was recorded previously; item details are not available", "每 {n} 分钟": "Every {n} minutes", "没有可显示的定时任务。后端未返回任务清单,请确认网关正在运行。": "No scheduled tasks to show. The backend did not return a task list — make sure the gateway is running.", "没有符合筛选条件的维护记录": "No maintenance records match these filters", "沿用缓存或当前没有可用的目录来源": "Using cached data, or no catalog source is currently available", "沿用缓存,尚未到刷新时间": "Using the cache; the next update is not due yet", "状态每 20 秒自动同步": "Status syncs automatically every 20 seconds", "由页面按间隔自动刷新": "Auto-refreshed by the page on its interval", "登录授权已失效,需要重新登录该账号": "Sign-in authorization has expired. Sign in to this account again.", "目录最近更新时间": "Last catalog update", "立即执行": "Run now", "立即检查": "Check now", "维护已完成,结果已保存": "Maintenance completed and results saved", "维护已开始,结果会自动更新,可离开此页": "Maintenance started. Results will update automatically; you can leave this page.", "维护已执行,但完整结果未能保存;请先核对账号状态,不要反复执行": "Maintenance ran, but the complete results could not be saved. Check account status before running it again.", "维护已结束,有失败项,请查看明细": "Maintenance finished with failures. Review the details.", "维护接口不可用,请更新网关并重新打开页面": "The maintenance API is unavailable. Update the gateway and reopen this page.", "维护正在执行,完成后会显示逐项结果": "Maintenance is running. Item results will appear when it finishes.", "维护类型": "Maintenance type", "维护记录保留 {days} 天,最多 {count} 次;仅保存结果,不保存密钥或令牌。": "Maintenance records are kept for {days} days, up to {count} runs. Only results are saved, never keys or tokens.", "维护设置": "Maintenance settings", "维护设置未能保存到数据库,请检查磁盘空间和权限": "Maintenance settings could not be saved to the database. Check disk space and permissions.", "自动和手动维护,统一在这里查看": "Automatic and manual maintenance in one place", "自动维护与手动执行共用同一份结果记录": "Automatic and manual runs share the same result history", "自动维护已关闭": "Automatic maintenance is off", "自动触发": "Automatic", "触发方式": "Trigger", "该提供商不支持主动刷新凭证(没有续期手段)": "This provider does not support credential renewal", "该提供商使用固定模型清单": "This provider uses a fixed model list", "该次执行未完成,没有完整明细": "This run did not finish; complete details are unavailable", "请求日志页自动刷新": "Request logs auto-refresh", "账号已不存在,未执行维护": "The account no longer exists; maintenance was not performed", "软件版本检查": "Software update check", "还没有执行记录": "No runs recorded yet", "逐个提供商更新模型目录,模型基础信息单独列出结果": "Updates each provider's catalog; model metadata results are listed separately", "部分失败": "Partially failed", "部分设置可能已保存,请核对后重试:{reason}": "Some settings may have been saved. Review them before retrying: {reason}", "重新加载": "Reload", "重试生成新记录,不覆盖本次结果": "Retries create a new record without overwriting this result", "间隔不能为空(可填 {min}–{max} {unit})": "Interval cannot be empty (allowed: {min}–{max} {unit})", "间隔必须在 {min}–{max} {unit} 之间(当前填的是 {value})": "Interval must be between {min} and {max} {unit} (currently {value})", "间隔必须是整数": "Interval must be an integer", "页面自动刷新": "Page auto-refresh", "debug 及以上": "debug and above", "info 及以上": "info and above", "warn 及以上": "warn and above", "{matched} / {total} 条": "{matched} / {total} entries", "{minutes} 分 {seconds} 秒": "{minutes} min {seconds} s", "{n} 个启动失败": "{n} failed to start", "{n} 个已就绪": "{n} ready", "{n} 个等待恢复": "{n} waiting for recovery", "{n} 条": "{n} entries", "{n} 毫秒": "{n} ms", "✅ 已导出 {count} 条日志到 {file}": "✅ Exported {count} log entries to {file}", "上游": "Upstream", "上游接口请求": "Upstream API request", "事件摘要": "Event summary", "事件日志时间范围": "Event log time range", "事件详情": "Event details", "仅 error": "error only", "仅显示调试记录,供排查问题使用。": "Shows only debug records for troubleshooting.", "仅错误": "Errors only", "余额查询失败": "Balance query failed", "余额查询完成": "Balance query completed", "余额查询未配置": "Balance query not configured", "信息": "Info", "信息及以上": "Info and above", "全部事件": "All events", "全部分类": "All categories", "全部级别": "All levels", "共享运行环境尚未就绪,不代表这个插件本身损坏。请在插件页查看加载诊断。": "The shared runtime is not ready; this does not mean the plugin is damaged. View the loading diagnostics on the Plugins page.", "关联标识": "Correlation ID", "出站参数归一": "Outbound parameter normalization", "分类": "Category", "分页按折叠后的组数计算": "Pagination counts collapsed groups", "加载插件": "Loading plugin", "原始消息": "Original message", "原始记录": "Raw records", "原始记录 {n} 条": "{n} raw records", "发生时间": "Occurrence times", "各阶段耗时": "Time spent at each stage", "启动结果": "Startup results", "启动超时": "Startup timed out", "启动进程": "Starting process", "处理建议": "Suggested action", "复制原始记录": "Copy raw records", "复制失败": "Copy failed", "复制当前筛选结果": "Copy filtered results", "复制本页原始记录": "Copy this page's raw records", "导出": "Export", "导出当前筛选": "Export filtered logs", "已复制 {n} 条日志": "Copied {n} log entries", "已暂停刷新": "Refresh paused", "恢复刷新": "Resume refresh", "折叠重复日志": "Collapse repeated logs", "按分类筛选": "Filter by category", "按最低级别筛选": "Filter by minimum level", "插件名称": "Plugin name", "插件启动失败": "Plugin failed to start", "插件启动存在异常": "Some plugins could not start", "插件启动完成,{n} 个已就绪": "Plugin startup complete: {n} ready", "插件启动超时": "Plugin startup timed out", "插件已就绪": "Plugin ready", "插件已恢复运行": "Plugin is running again", "插件暂不可用,等待运行环境恢复": "Plugin unavailable while the runtime recovers", "插件暂时无法使用": "Plugin temporarily unavailable", "插件未能就绪": "Plugin did not become ready", "插件未能正常停止": "Plugin did not stop normally", "插件编号": "Plugin ID", "插件进程已退出": "Plugin process exited", "搜索关键字": "Search keywords", "搜索插件、消息、提供商或账号": "Search plugins, messages, providers or accounts", "搜索插件、消息、提供商或账号…": "Search plugins, messages, providers or accounts…", "搜索消息、提供商或账号": "Search messages, providers or accounts", "搜索消息、提供商或账号…": "Search messages, providers or accounts…", "搜索消息关键词": "Search message keywords", "搜索消息关键词…": "Search message keywords…", "操作失败:{error}": "Operation failed: {error}", "日志视图": "Log view", "日志详情": "Log details", "日志详情视图": "Log details view", "显示 {groups} 组 · 原始记录 {entries} 条": "{groups} groups · {entries} raw records", "显示启动汇总和需要关注的事件;单个插件的正常启动记录在“全部事件”中。": "Shows startup summaries and events that need attention. Individual successful startups are in All events.", "显示所有已保留的事件;技术信息可在详情中查看。": "Shows all retained events. Open details for technical information.", "暂停刷新": "Pause refresh", "暂无日志": "No logs", "暂无日志可导出": "No logs to export", "有 {n} 条新日志": "{n} new log entries", "服务": "Service", "未记录插件名称": "Plugin name not recorded", "本次启动超过等待时限。请在插件页查看加载诊断,确认后重新加载。": "Startup exceeded the time limit. Review the loading diagnostics on the Plugins page before reloading.", "查看日志详情:{message}": "View log details: {message}", "查看最新": "View latest", "模型 {model}": "Model {model}", "次数": "Count", "正在加载日志…": "Loading logs…", "没有符合条件的日志": "No logs match the conditions", "没有符合筛选条件的日志": "No logs match the filters", "清空中…": "Clearing…", "清空当前筛选": "Clear filtered logs", "清空运行日志": "Clear runtime logs", "状态码": "Status code", "用时 {duration}": "Took {duration}", "登记提供商": "Registering providers", "相关功能暂不可用,原因见详情": "Related features are unavailable; see details for the reason", "确定清空全部运行日志?清空后无法恢复。": "Clear all runtime logs? This cannot be undone.", "确定清空当前筛选出的 {count} 条日志?清空后无法恢复。": "Clear the {count} filtered log entries? This cannot be undone.", "系统事件": "System events", "级别": "Level", "结束阅读": "End reading", "结果未确认": "Result unconfirmed", "脱敏": "Redaction", "自动刷新": "Auto-refresh", "自动刷新已关闭": "Auto-refresh disabled", "自动签到": "Auto check-in", "补充系统消息": "System message added", "警告": "Warning", "警告 {n}": "Warnings {n}", "警告及以上": "Warnings and errors", "计费接口请求": "Billing API request", "详细信息": "Details", "请在插件页查看加载诊断,确认原因后重新加载。": "View the loading diagnostics on the Plugins page and check the cause before reloading.", "读取日志失败": "Failed to load logs", "调试": "Debug", "调试 {n}": "Debug {n}", "调试详情": "Debug details", "调试采集未开启,仅显示已保留的记录。可在设置中开启调试模式。": "Debug collection is off. Only retained records are shown. Enable debug mode in Settings to collect new records.", "运行日志已清空": "Runtime logs cleared", "部分插件暂不可用。请在插件页查看异常插件的加载诊断。": "Some plugins are unavailable. Open the Plugins page to view their loading diagnostics.", "重要事件": "Important events", "错误": "Error", "错误 {n}": "Errors {n}", "阅读模式": "Reading mode", "阅读模式,列表保持不动": "Reading mode: list stays in place", "附加数据": "Additional data", " · {n} 进行中": " · {n} in progress", " · 会话粘住": " · session stuck", "

    无响应原文
    ": "
    No raw response
    ", "
    无法解析响应内容
    ": "
    Unable to parse response content
    ", "
    无法解析请求体(不是含 messages 数组的 JSON)
    ": "
    Unable to parse request body (not JSON with a messages array)
    ", "
    无请求原文
    ": "
    No raw request
    ", "
    调用工具 {name}
    ": "
    Tool call {name}
    ", "响应原文": "Raw response", "思考过程": "Reasoning process", "请求原文": "Raw request", "HTTP {status},但响应体阶段出错": "HTTP {status}, but the response body phase failed", "HTTP {status},但响应体阶段出错:见错误列": "HTTP {status}, but the response body phase failed: see the error column", "{duration} / 首帧 {first}": "{duration} / TTFB {first}", "{m}分{s}秒": "{m}m {s}s", "{n}秒": "{n}s", "{s}秒{ms}ms": "{s}s {ms}ms", "↻ {n} 次": "↻ {n} times", "↻ 重试 {n} 次": "↻ Retried {n} times", "✅ 压缩完成": "✅ Vacuum complete", "「仅看进行中」开启时,状态固定为进行中": "When \"In progress only\" is on, the status is pinned to In progress", "上游模型繁忙,请求已排进上游队列;网关正按上游建议的时长等待后重发(不是登录态或额度问题)": "Upstream model is busy; the request is queued upstream and the Gateway will resend it after the wait suggested by the upstream (not a login-session or quota problem)", "上游没有返回积分消耗": "The upstream did not report points consumption", "上游状态码: {status}": "Upstream status code: {status}", "上游请求已发出,正在等第一个字节到达(模型的思考时间也在这段)": "Upstream request sent, waiting for the first byte to arrive (model thinking time is included here)", "上游返回错误": "Upstream returned an error", "下游请求的模型:{model}": "Model requested downstream: {model}", "仅清空报文原文": "Clear raw payloads only", "仅看进行中": "In progress only", "令牌": "Tokens", "体积": "Size", "供应商": "Provider", "供应商归属规则": "Provider attribution rules", "保存中…": "Saving…", "保存归属规则": "Save attribution rule", "保留 {count} 条请求记录 · 将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "Keep {count} request records · Clear {upstream} upstream debug payloads and {downstream} downstream bodies · Database size {db}", "保留 {count} 条请求记录;将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。用量统计与报表不变。": "Keeps {count} request records; clears {upstream} upstream debug payloads and {downstream} downstream bodies. Usage statistics and reports remain unchanged.", "保留统计行与报表,只抹掉请求 / 响应正文。清理后详情弹窗的「预览对话」将无原文可看,统计数字分毫不动。": "Keeps stats rows and reports, and only wipes the request / response bodies. After clearing, \"Conversation preview\" in the detail dialog will have no raw content to show and the stats numbers stay exactly the same.", "保留草稿并读取最新设置": "Keep draft and reload latest settings", "保留请求记录、用量统计与报表,同时清理上游调试报文和下游请求 / 响应正文。清理后「预览对话」与「原始报文」不再保留原文。有筛选时只清理命中请求的报文;无筛选时清空两侧全部报文。此操作无法恢复。": "Keeps request records, usage statistics, and reports while clearing upstream debug payloads and downstream request / response bodies. Conversation preview and Raw payload will no longer contain the original content. With filters active, only payloads for matching requests are cleared; without filters, all payloads on both sides are cleared. This cannot be undone.", "全部删除": "Delete all", "全部提供商": "All providers", "全部模型": "All models", "全部状态": "All statuses", "全部请求数据": "all request data", "共 {images} 张图片,复用 {cached} 张识读结果": "{images} images; {cached} readings reused", "共 {n} 次尝试": "{n} attempts total", "共 {n} 次尝试,最终由 {provider} 承载": "{n} attempts total, finally served by {provider}", "其它": "Other", "内容按原样保存,请求头中的凭据字段已替换为 [redacted]": "Content is saved as-is; credential fields in the request headers have been replaced with [redacted]", "内部重试": "Internal retry", "切换视觉模型": "Vision model reroute", "切换路径:": "Switch path:", "列表数据已刷新,请重试(关闭后重新打开这条详情)": "List data has been refreshed; please try again (close and reopen this detail)", "删除归属规则": "Delete attribution rule", "删除日志记录本身。当前有筛选时只删命中的条目,按天聚合报表不受影响;无筛选时清空全部并重置报表。此方式无法恢复。": "Deletes the log records themselves. With filters active, only matching entries are deleted and daily aggregate reports are unaffected; with no filters, everything is cleared and reports are reset. This cannot be undone.", "删除请求记录,并同步清理对应的上游调试报文与下游正文。有筛选时只删除命中的记录,按天聚合报表不受影响;无筛选时清空全部并重置报表。此操作无法恢复。": "Deletes request records together with their upstream debug payloads and downstream bodies. With filters active, only matching records are deleted and daily reports are preserved; without filters, all data is cleared and reports are reset. This cannot be undone.", "压缩中…": "Vacuuming…", "压缩失败:{message}": "Vacuum failed: {message}", "压缩已在后台开始,完成后会自动提示": "Vacuum started in the background; you will be notified when it completes", "压缩已在进行中": "Vacuum already in progress", "压缩已在进行中,接上它的进度等待完成": "Vacuum already in progress; joining it and waiting for it to finish", "压缩数据库": "Vacuum database", "压缩正在后台执行,完成后自动恢复": "Vacuum is running in the background; it resumes automatically when it completes", "原始报文": "Raw payload", "原模型": "Original model", "取消": "Cancel", "另有 {missing} 次尝试未记录明细(只保留最早的 {kept} 条)": "{missing} more attempts have no details recorded (only the earliest {kept} are kept)", "另有 {n} 个词命中": "{n} more words hit", "只显示正在转发中的请求(状态列按阶段显示:连接中 / 等待响应 / 响应中 / 重试中,用时列显示已用时)": "Only shows requests currently being forwarded (the status column shows the phase: Connecting / Awaiting response / Streaming / Retrying; the duration column shows elapsed time)", "只看失败": "Failed only", "只看成功": "Success only", "只看进行中": "In progress only", "命中了敏感词": "Sensitive word hit", "命中依据:{header} · {pattern}": "Matched on: {header} · {pattern}", "命中的敏感词": "Sensitive words hit", "命中规则:{provider} → {client}": "Matched rule: {provider} → {client}", "响应中": "Streaming", "响应体": "Response body", "响应头": "Response headers", "回收已删除数据占用的磁盘空间(checkpoint + VACUUM,后台执行)": "Reclaims the disk space used by deleted data (checkpoint + VACUUM, runs in the background)", "图片处理用时:{n} 秒": "Image processing time: {n} seconds", "在设置 → 通用里开启「调试模式」后,新发生的请求才会保存报文": "Raw payloads are only saved for requests made after \"Debug mode\" is enabled in Settings → General", "在路由页查看": "View on the Routing page", "处理中": "Processing", "失败": "Failed", "失败请求不记录用量": "Usage is not recorded for failed requests", "失败({status}):{error}": "Failed ({status}): {error}", "失败:{error}": "Failed: {error}", "实际发给上游 {bytes} 字节": "{bytes} bytes actually sent upstream", "客户端": "Client", "将删除 {count} 条日志 · 其中 {raw} 条仍带报文原文 · 数据库占用 {db}": "Will delete {count} logs · {raw} of them still carry raw payloads · database size {db}", "将删除 {count} 条请求记录 · 同步清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "Delete {count} request records · Clear {upstream} upstream debug payloads and {downstream} downstream bodies · Database size {db}", "将删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "Deletes {count} request records and clears {upstream} upstream debug payloads and {downstream} downstream bodies.", "尝试 {n} ·": "Attempt {n} ·", "尝试明细": "Attempt details", "尝试次数": "Attempts", "工具结果": "Tool result", "工具结果 · {id}": "Tool result · {id}", "工具结果图片": "Tool result image", "已删除 {count} 条": "{count} logs deleted", "已删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "Deleted {count} request records and cleared {upstream} upstream debug payloads and {downstream} downstream bodies.", "已受理终止:上游连接已断开,列表稍后刷新为「请求已被手动终止」": "Abort accepted: the upstream connection is closed; the list will refresh to \"Request manually aborted\" shortly", "已完成": "Completed", "已抹掉 {count} 条报文原文": "Raw payloads wiped for {count} logs", "已清理上游调试报文 {upstream} 条、下游正文 {downstream} 条;请求记录与报表已保留。": "Cleared {upstream} upstream debug payloads and {downstream} downstream bodies; request records and reports were preserved.", "已用时(请求仍在转发中)": "Elapsed time (request is still being forwarded)", "开启调试模式后仅记录新请求,历史对话无法补录;关闭不会删除已有记录。": "Debug mode records only new requests; past conversations cannot be recovered. Turning it off does not delete existing records.", "归属客户端": "Client", "当前筛选范围": "the current filter results", "当前网关未提供上游 / 下游清理统计,请更新网关后再清理。": "This gateway does not provide upstream / downstream cleanup counts. Update the gateway before clearing data.", "成功": "Success", "成功({status})": "Success ({status})", "所属请求": "Parent request", "执行清理": "Run clear", "报文超过单条上限,请求体 / 响应体已按上限截断": "Payload exceeds the per-record limit; the request / response bodies have been truncated to the limit", "抹掉原文": "Wipe raw payloads", "按提供商筛选": "Filter by provider", "按提供商筛选(只列日志里出现过的)": "Filter by provider (only lists providers seen in the logs)", "按时间倒序,全量保留": "Reverse chronological order; kept in full", "按模型筛选": "Filter by model", "按模型筛选(只列日志里出现过的;精确匹配模型名)": "Filter by model (only lists models seen in the logs; matches the exact model name)", "按请求结果筛选": "Filter by request result", "排队中": "Queued", "提供商 / 账号": "Provider / Account", "提供商: {provider}": "Provider: {provider}", "提示": "Notice", "搜索供应商": "Search providers", "搜索客户端": "Search clients", "敏": "SW", "敏感词": "Sensitive words", "数据库占用包含主文件与 WAL 文件;清理后可点击「压缩数据库」回收空闲空间。": "Database size includes the main file and WAL file. After clearing data, use Vacuum database to reclaim unused space.", "断开上游连接,明细记为「请求已被手动终止」": "Disconnects the upstream connection and records the detail as \"Request manually aborted\"", "无报文原文(未开启「调试模式」,或已被清理)": "No raw payload (debug mode was off, or it has been cleared)", "无结果记录": "No result recorded", "旧版本保存的正文可能已截断,无法恢复缺失内容": "The body saved by an older version may be truncated; missing content cannot be recovered", "时间": "Time", "暂无请求日志,网关还没有转发过请求": "No request logs yet; the Gateway hasn't forwarded any requests", "最终归属(记账时的客户端)": "Final attribution (the client recorded for accounting)", "最终承载:{picked}": "Finally served by: {picked}", "未改写,保留识别结果": "Not rewritten; the identified client is kept", "本次请求消耗 {credit} 积分": "Points consumed by this request: {credit}", "本轮尝试失败,正在退避等待或切换到下一个账号": "This attempt failed; backing off or switching to the next account", "来源客户端:{client}": "Source client: {client}", "查看该请求的上游原始报文": "View the raw upstream payload for this request", "模型": "Model", "模型测试": "Model test", "模型管理页操作列那颗「测试」发起的请求:与真实请求同一条转发链路,但不计入报表统计": "Requests started by the \"Test\" button in the action column of the Model Management page: the same forwarding path as real requests, but not counted in reports", "正在加载请求日志…": "Loading request logs…", "正在统计…": "Calculating…", "正文超过单条上限,可能已被截断": "Body exceeds the per-record limit and may have been truncated", "没有符合筛选条件的请求": "No requests match the current filters", "添加自定义头匹配规则…": "Add a custom header rule…", "清理": "Clear", "清理中…": "Clearing…", "清理失败:{message}": "Clear failed: {message}", "清理方式": "Clear mode", "清理请求已返回,但结果数据不完整,请刷新后确认。": "The cleanup request returned incomplete result data. Refresh to confirm the outcome.", "清理请求日志": "Clear request logs", "清理预览数据不完整": "Cleanup preview data is incomplete", "清空两侧原文": "Clear both sides", "生产请求": "Production requests", "生成速度:输出 token ÷ 流式段用时(总用时 − 首响);流式段不足总用时一半时按总用时计": "Generation speed: output tokens ÷ streaming time (total duration − TTFB); falls back to total duration when the streaming window is under half the request", "用时": "Duration", "用量": "Usage", "确定对{scope}执行「{label}」?
    {summary}
    此操作无法恢复。": "Run {label} on {scope}?
    {summary}
    This cannot be undone.", "确定对全部请求日志执行「{label}」?将处理 {count} 条,此操作无法恢复。": "Run \"{label}\" on all request logs? This will process {count} entries and cannot be undone.", "确定按当前筛选执行「{label}」?将处理 {count} 条,此操作无法恢复。": "Run \"{label}\" on the current filter results? This will process {count} entries and cannot be undone.", "确定终止这条正在转发的请求?
    上游连接会立即断开,明细将记为「请求已被手动终止」。": "Abort this request that is being forwarded?
    The upstream connection will be closed immediately and the detail will be recorded as \"Request manually aborted\".", "等待响应": "Awaiting response", "策略 {strategy} · 会话粘性 {sticky}{hit}": "Strategy {strategy} · Stickiness {sticky}{hit}", "终止": "Abort", "终止失败:{error}": "Abort failed: {error}", "终止请求": "Abort request", "结果": "Result", "缓存读取: - / 命中率: -": "Cache reads: - / Hit rate: -", "缓存读取: {cache} / 命中率: {rate}": "Cache reads: {cache} / Hit rate: {rate}", "编辑这条头匹配规则…": "Edit this header rule…", "耗时": "Duration", "自定义 · {name}": "Custom · {name}", "被跳过:": "Skipped: ", "设置识别规则": "Set identification rules", "识别到 User-Agent,但不属于已知的客户端类型:{ua}": "User-Agent present but not a known client type: {ua}", "识别结果(请求头识别出的真实客户端)": "Identification result (the real client recognized from request headers)", "识图用量按实际视觉账号单独记录,不混入原模型的回答用量。": "Vision usage is recorded separately against the actual vision account, not mixed with the original model's answer usage.", "该供应商已有归属规则,保存将覆盖它": "This provider already has an attribution rule; saving overwrites it", "详情": "Details", "详情内容": "Detail content", "请求体": "Request body", "请求图片": "Request image", "请求在任何账号接手之前就失败了": "The request failed before any account picked it up", "请求头": "Request headers", "请求头识别为 {identified},已改写归属为 {client}": "Identified as {identified} from request headers; attribution rewritten to {client}", "请求已受理,正在选路、取凭证、建立上游连接": "Request accepted; selecting a route, fetching credentials, and establishing the upstream connection", "请求日志列表": "Request Logs", "请求日志时间范围": "Request Logs time range", "请求日志表": "Request Logs table", "请求正在转发中,用时列显示的是已用时": "The request is being forwarded; the duration column shows elapsed time", "请求筛选": "Request filters", "请求详情": "Request details", "请选择供应商": "Select a provider", "请选择归属客户端": "Select a client", "读取请求日志失败,详见控制台": "Failed to load request logs; see the console for details", "路由回放": "Routing replay", "转发到上游的模型:{model}": "Model forwarded to the upstream: {model}", "轮次": "Round", "辅助识图": "Assisted image reading", "辅助识图调用": "Assisted image reading call", "输入 {input} · 输出 {output} · 总计 {total} · 缓存读 {cache}": "Input {input} · Output {output} · Total {total} · Cache reads {cache}", "这条报文由旧版本截断保存,缺失内容无法恢复": "This payload was truncated by an older version; missing content cannot be recovered", "这条明细是一次模型测试(人工发起):走的是真实转发链路,但不计入报表统计": "This detail row is a model test (manually started): it takes the same forwarding path as real requests but is not counted in reports", "这条明细没有记录提供商(旧数据或请求未走到转发)": "No provider is recorded for this detail row (old data, or the request never reached forwarding)", "这条明细没有记录来源客户端(旧数据、模型测试,或请求未带 User-Agent)": "No source client recorded for this entry (legacy data, model test, or request without User-Agent)", "这条记录命中了敏感词,但没有留下命中明细": "This record hit a sensitive word, but no hit details were kept", "这条记录的尝试明细未采集(该字段上线前的旧数据,或请求在转发前就失败)": "Attempt details were not collected for this record (old data from before this field existed, or the request failed before forwarding)", "这条请求没有保存这一段报文": "This request did not save this payload section", "这条请求没有记录供应商(旧数据或未走到转发),不能从这里改归属": "No provider recorded for this request (legacy data or it never reached forwarding); attribution cannot be changed here", "进入「{phase}」阶段已持续 {time}": "In \"{phase}\" phase for {time}", "进行中": "In progress", "进行中…": "In progress…", "连接中": "Connecting", "选择供应商": "Select provider", "选择归属客户端": "Select client", "速度": "Speed", "重试 {n}": "Retry {n}", "重试中": "Retrying", "重试次数": "Retries", "面板内发起的模型调用,消耗额度并记录 Key,不计入生产报表": "Model call started from the panel; uses quota and records the API Key, but is excluded from production reports", "预览对话": "Conversation preview", "预览读取失败": "Failed to load preview", "预览读取失败:{error}": "Failed to load preview: {error}", "额外识图用量:{n} Token": "Additional vision usage: {n} tokens", "首响 {time}": "TTFB {time}", "首响:上游首帧到达的耗时": "TTFB: time to first byte from the upstream", "首响:上游首帧到达的耗时(请求仍在转发中)": "TTFB: time to first byte from the upstream (request is still being forwarded)", "首帧已到,上游内容正在下发": "First byte received; upstream content is streaming in", "默认归属客户端": "Default attribution client", "(请求仍在转发中)": "(request is still being forwarded)", "(账号:{account})": "(Account: {account})", ",{n}毫秒后重试": ", retry in {n}ms", ",{n}秒后重试": ", retry in {n}s", "{name}的列设置": "{name} column settings", "「{label}」列的对齐": "\"{label}\" column alignment", "中": "Center", "共 0 条": "0 total", "共 {total} 条 · 当前第 {start}–{end} 条": "{total} total · showing {start}–{end}", "共 {total} 条(全部显示)": "{total} total (showing all)", "列": "Column", "列设置": "Column settings", "右": "Right", "对齐": "Alignment", "左": "Left", "当前只有一页": "Only one page", "拖动 ⋮⋮ 调整顺序": "Drag ⋮⋮ to reorder", "按住拖动调整列顺序": "Press and drag to reorder columns", "显示「{label}」列": "Show the \"{label}\" column", "条": "rows", "每页": "Per page", "每页条数": "Rows per page", "调整「{name}」的列:显示 / 隐藏、顺序、对齐": "Adjust \"{name}\" columns: show / hide, order, alignment", "跳至": "Go to", "跳转到指定页": "Go to a specific page", "跳转到第 1–{pageCount} 页": "Go to page 1–{pageCount}", "这一列已隐藏": "This column is hidden", "这一列正在显示": "This column is visible", "页": "page", "PID:{pid}": "PID: {pid}", "{label} · {port}": "{label} · {port}", "。已经把这个地址填进其它工具(Claude Code、Cherry Studio 等)的,需要一并改成新地址,否则那些工具会连不上。": ". If you have already put this address into other tools (Claude Code, Cherry Studio, etc.), update it there as well, or those tools will not be able to connect.", "与当前端口相同,无需重启": "Same as the current port; no restart needed", "例如 3066": "e.g. 3066", "即将结束以下进程:": "About to end the following process:", "已结束进程 {name}(PID {pid}),端口已释放": "Ended process {name} (PID {pid}); the port is now free", "当前状态": "Current status", "当前端口 {port},网关运行正常。": "Current port: {port}. The Gateway is running normally.", "换端口后要改的地方": "What to update after changing the port", "新端口": "New port", "更换端口": "Change port", "更换网关端口": "Change Gateway port", "本地网关正在监听 {url},可直接调用 OpenAI 兼容接口": "The local Gateway is listening on {url}; the OpenAI-compatible API can be called directly", "校验中…": "Validating…", "正在检查… · {port}": "Checking… · {port}", "正在确认网关是否已就绪": "Checking whether the Gateway is ready", "正在重启…": "Restarting…", "端口 {port} 上没有查到监听进程,请改用「更换端口」": "No process is listening on port {port}; use \"Change port\" instead", "端口号": "Port number", "端口已改为 {port},正在重启…": "Port changed to {port}; restarting…", "端口已释放。现在重启程序让网关用这个端口启动?": "The port is now free. Restart the app so the Gateway starts on this port?", "端口需在 1024-65535 之间": "Port must be between 1024 and 65535", "端口需在 1024-65535 之间。1023 及以下是系统保留范围,普通程序无法监听。": "Port must be between 1024 and 65535. Ports 1023 and below are reserved by the system and cannot be listened on by regular programs.", "结束中…": "Ending…", "结束占用端口的进程": "End the process holding the port", "结束占用进程": "End process", "结束失败:{reason}": "Failed to end the process: {reason}", "结束它会强制退出该程序未保存的数据。确认继续?": "Ending it will force-quit that program and unsaved data will be lost. Continue?", "结束进程": "End process", "网关启动中… · {port}": "Gateway starting… · {port}", "网关启动失败": "Gateway failed to start", "网关地址会变成 ": "The Gateway address will become ", "网关运行中 · {port}": "Gateway running · {port}", "该端口不可用": "This port is unavailable", "路径:{path}": "Path: {path}", "进程名:{name}": "Process name: {name}", "进程已结束,但端口仍被占用,建议改用「更换端口」": "The process ended, but the port is still in use; try \"Change port\" instead", "重启": "Restart", "重启中…": "Restarting…", "重启失败:{reason}": "Restart failed: {reason}", "重启程序": "Restart app", "(未知)": "(unknown)" }); diff --git a/desktop-tauri/ui/i18n/combined/ja.js b/desktop-tauri/ui/i18n/combined/ja.js index 1576d7b9..f592d3cf 100644 --- a/desktop-tauri/ui/i18n/combined/ja.js +++ b/desktop-tauri/ui/i18n/combined/ja.js @@ -1,2 +1,2 @@ /* Agent2API 词典构建产物:ja/combined —— 由 desktop-tauri/i18n/build.mjs 生成,请勿手改;源头是 i18n-src/*.json */ -window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { "无可用账号:{reason}": "利用可能なアカウントがありません:{reason}", "AI 助手": "AI アシスタント", "API Key 用量详情": "API Key 使用量の詳細", "API Key 统计": "API Key 統計", "API Key(可选)": "API Key(任意)", "API 凭证": "API 認証情報", "API 方法提交给插件的账号规范化入口;不会用该密钥发起 OAuth 登录。": "API 方式はプラグインのアカウント正規化処理に送信されます。このキーで OAuth ログインを開始することはありません。", "Agent2API · 多提供商本地网关": "Agent2API · マルチプロバイダーのローカルゲートウェイ", "Agent2API 社区": "Agent2API コミュニティ", "Codar(科搭)": "Codar(科搭)", "JSON 格式不正确": "JSON の形式が正しくありません", "JoyCode(京东)": "JoyCode(京東)", "Linux (amd64)": "Linux (amd64)", "Linux (arm64)": "Linux (arm64)", "Magpie 官方": "Magpie 公式", "Magpie 官方与社区插件,共用一个按需下载的运行时": "Magpie の公式・コミュニティプラグインは、必要時に取得するランタイムを共有します", "Magpie 官方名单": "Magpie 公式カタログ", "Magpie 官方和社区插件均通过兼容方式接入 Agent2API,不保证 100% 可用。": "Magpie の公式・コミュニティプラグインはいずれも互換方式で Agent2API に接続しており、100% の動作を保証するものではありません。", "Magpie 推荐": "Magpie おすすめ", "Magpie 插件": "Magpie プラグイン", "Magpie 插件安装须知": "Magpie プラグインのインストールについて", "Magpie 社区": "Magpie コミュニティ", "Magpie 社区分发源": "Magpie コミュニティ配布元", "Magpie 脚本插件": "Magpie スクリプトプラグイン", "MiniMax Code 国内/国际": "MiniMax Code 中国版/国際版", "MiniMax Code 的设备码登录、对话、模型目录、余额与每日签到;国内版与国际版可分别启停。": "MiniMax Code のデバイスコードログイン、対話、モデル一覧、残高と毎日のチェックイン。中国版と国際版を個別に有効化できます。", "OAuth 登录": "OAuth ログイン", "QQ 群号": "QQ グループ番号", "Star 数暂未读取": "スター数はまだ取得できていません", "Star 更新于 {time}": "スター数の更新:{time}", "Token 用量": "Token 使用量", "WPS 灵犀": "WPS 霊犀", "Windows (ARM64)": "Windows (ARM64)", "Windows (x64)": "Windows (x64)", "macOS (Apple Silicon)": "macOS (Apple Silicon)", "macOS (Intel)": "macOS (Intel)", "npm 包名": "npm パッケージ名", "npm 包名、GitHub 地址或 magpie:包名": "npm パッケージ名、GitHub URL、magpie:パッケージ名", "npm 包名或 GitHub 地址": "npm パッケージ名または GitHub URL", "npm 未发布的包会尝试 Magpie 社区分发源;不会绕过完整性校验或执行安装脚本。": "npm にないパッケージは Magpie コミュニティの配布元を確認します。整合性検証の省略やインストールスクリプトの実行はしません。", "{count} 个 Star": "{count} スター", "{count} 个插件": "{count} 個のプラグイン", "{count} 家": "{count} プロバイダー", "{count} 家提供商": "{count} プロバイダー", "{count} 家提供商 · 安装于 {time}": "{count} プロバイダー · {time} にインストール", "{key} 需要 true / false / null": "{key} は true / false / null のいずれかである必要があります", "{key} 需要数字": "{key} は数値である必要があります", "{label}(API)": "{label}(API)", "{label}(OAuth)": "{label}(OAuth)", "{n} 个启用": "{n} 件有効", "{n} 个已限流": "{n} 件レート制限中", "{n} 个请求正在转发中,点开「请求日志」查看": "{n} 件のリクエストを転送中。「リクエストログ」で確認できます。", "{n} 个账号可用": "{n} 件のアカウントが利用可能", "{n} 个账号启用": "{n} 件のアカウントが有効", "{n} 条失败请求未读,点开「请求日志」查看": "{n} 件の失敗リクエストが未読です。「リクエストログ」で確認できます。", "{n} 条错误日志未读,点开「日志」查看": "{n} 件のエラーログが未読です。「ログ」で確認できます。", "{n} 项 · {shown} 显示": "{n} 項目 · {shown} 表示", "{size} · 下载后可直接安装,无需跳转浏览器": "{size} · ダウンロード後そのままインストールできます(ブラウザに移動しません)", "{size} · 点击下载后可直接安装,无需跳转浏览器": "{size} · ダウンロード後すぐにインストールできます(ブラウザに移動しません)", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "メニュー {total} 件 · 表示 {shown} · 非表示 {hidden} · グループ {groups} 件", "· 不会改动任何配置": "· 設定は一切変更しません", "· 每次执行前列改动清单,等你确认": "· 実行前に変更内容を一覧表示し、確認を待ちます", "—": "—", "“本机”指运行网关的机器,不是打开面板的电脑。远程浏览器也可以发起,但网关本机可能需要安装客户端并已登录;是否可用由网关返回结果决定。": "「本機」はゲートウェイを実行しているマシンを指し、パネルを開いているパソコンではありません。リモートのブラウザからも開始できますが、ゲートウェイのマシンにクライアントがインストールされ、ログイン済みである必要がある場合があります。利用可否はゲートウェイの応答で決まります。", "✅ GitHub 令牌已保存(加密存储,界面不再显示)": "✅ GitHub トークンを保存しました(暗号化して保存、画面には再表示されません)", "✅ Token 已刷新": "✅ Token を更新しました", "✅ 已将账号优先级调整到全局第一位": "✅ アカウントの優先度をグローバルキューの先頭に変更しました", "✅ 已清除界面保存的 GitHub 令牌(环境变量若配置过则继续生效)": "✅ 保存された GitHub トークンを削除しました(環境変数が設定されていれば引き続き有効です)", "「{name}」匹配到多个账号:{list},请用完整账号名重试": "「{name}」が複数のアカウントに一致しました:{list}。完全なアカウント名で再試行してください。", "「工具全不勾选 → 不注入系统提示词」:想当纯聊天用时,不必再去关上面的开关。": "「ツールをすべて外す → システムプロンプトは注入されない」:純粋なチャットとして使いたいときは、上のスイッチを切る必要はありません。", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "「設定」は固定項目のため、そのグループはまとめて非表示にできません。他のメニューは個別に非表示にできます", "上一页": "前のページ", "上次加载记录(非本次故障)": "前回の読み込み記録(今回の障害ではありません)", "下一页": "次のページ", "下拉刷新": "引いて更新", "下次自动重试:{time}": "次の自動再試行:{time}", "下载与当前平台对应的插件包(zip),点右上角「安装插件包」选中它即可。": "このプラットフォーム向けのプラグインパック(zip)をダウンロードし、右上の「プラグインパックをインストール」から選択してください。", "不填写(可选)": "入力しない(任意)", "与电脑端一致:每 {n} 分钟": "デスクトップ版と同じ:{n} 分ごと", "为 Agent2API 扩展网页提供商,支持智谱清言的模型调用、访客与登录账号、凭证续期、模型目录、积分查询、签到和任务领取。": "Agent2API に Web プロバイダーを追加し、智譜清言のモデル呼び出し、ゲストとログイン済みアカウント、認証情報の更新、モデル一覧、ポイント照会、チェックインとタスク報酬を提供します。", "为网关扩展多家 AI 提供商,支持账号登录与导入、模型调用、凭证续期、模型目录、余额查询和签到。具体能力以各提供商的支持情况为准。": "ゲートウェイに複数の AI プロバイダーを追加し、ログインとアカウントのインポート、モデル呼び出し、認証情報の更新、モデル一覧、残高照会、チェックインを提供します。対応機能は各プロバイダーによって異なります。", "主导航": "メインナビゲーション", "也可输入 file: 加网关电脑上的插件目录或 tgz 文件绝对路径;本地插件会复制安装,不修改源目录。": "file: に続けて、ゲートウェイのマシン上にあるプラグインのディレクトリまたは tgz ファイルの絶対パスも指定できます。ローカルプラグインはコピーしてインストールし、元のディレクトリは変更しません。", "书生·端砚": "Intern InkStone(書生·端硯)", "了解并安装": "理解してインストール", "仅在该 API 方法需要额外密钥时填写": "この API 方式で追加のキーが必要な場合のみ入力してください。", "仅安装你信任的 npm 包、GitHub 仓库或 Magpie 社区分发包;完整性校验不等于安全审计。": "信頼できる npm パッケージ、GitHub リポジトリ、Magpie コミュニティのパッケージのみをインストールしてください。整合性検証は安全性の監査ではありません。", "仅安装你信任的 npm 包或 GitHub 仓库;版本与完整性检查不能保证脚本安全。": "信頼できる npm パッケージまたは GitHub リポジトリのみをインストールしてください。バージョンと完全性の検証は、スクリプトの安全性を保証しません。", "仅安装你信任的 npm 包;下载校验只能确认文件完整,不能保证脚本安全。": "信頼できる npm パッケージのみをインストールしてください。ダウンロードの検証はファイルの完全性を確認するもので、安全性を保証しません。", "仅影响插件更新通道,与主程序独立。开启后可安装 beta 版;已使用 beta 时保持该通道,关闭后只看正式版且不会降级。": "本体とは独立したプラグイン更新チャンネルです。有効にすると beta 版を取得できます。beta 使用中はそのチャンネルを維持し、無効にすると正式版のみを確認します。ダウングレードはしません。", "仅自动更新已安装、已启用且通过可信签名校验的社区插件。新插件需手动安装,卸载后不会自动重新安装;未签名插件需手动更新。": "インストール済みで有効な、信頼できる署名の検証に合格したコミュニティプラグインのみを自動更新します。新しいプラグインは手動インストールが必要で、削除後に自動で再インストールされません。未署名のプラグインは手動更新が必要です。", "从 GitHub 官方源下载固定提交。仓库根目录须有可直接运行的插件入口;不会执行构建脚本或安装依赖。": "GitHub の公式配信元から固定コミットを取得します。リポジトリのルートに実行可能なプラグインの入口が必要です。ビルドスクリプトの実行や依存関係のインストールは行いません。", "从 GitHub 官方源下载固定提交。仓库须包含可运行的提供商入口;安装运行依赖,但不执行构建和安装脚本。": "特定のコミットを GitHub から直接ダウンロードします。リポジトリには実行可能なプロバイダーのエントリーポイントが必要です。実行時の依存関係はインストールしますが、ビルドやインストール用スクリプトは実行しません。", "从 Magpie 社区官方分发目录下载,核验 SHA-512;更新与重装继续使用此来源。": "Magpie コミュニティの公式配布先から取得し、SHA-512 を検証します。更新と再インストールも同じ配布元を使います。", "从 npm / GitHub / Magpie 安装": "npm / GitHub / Magpie からインストール", "从 npm / GitHub 安装": "npm / GitHub からインストール", "从 npm 安装": "npm からインストール", "从文件安装…": "ファイルからインストール…", "从网关本机客户端导入": "ゲートウェイのマシン上のクライアントからインポート", "仓库没有已提交的可加载入口,请等待作者发布构建产物": "リポジトリに読み込み可能なエントリーポイントがありません。作者によるビルドの公開をお待ちください。", "代价": "コスト", "令牌已生效,但写入磁盘失败(重启后会丢失)": "トークンは有効になりましたが、ディスクへの書き込みに失敗しました(再起動で失われます)", "以下设置属于所连接网关,不是手机本地设置。": "以下は接続先ゲートウェイの設定で、このスマートフォンのローカル設定ではありません。", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "グループ・順序・表示設定を既定に戻します。作成したグループは削除されます(メニューは失われません)。", "会话内": "セッション単位", "会话已过期。重新登录后会自动回到手机端。": "セッションが切れました。再度ログインするとモバイル版に自動で戻ります。", "会话粘性": "セッション粘着", "作为 system 消息注入给助手": "system メッセージとしてアシスタントに注入", "作者尚未提供插件介绍。": "作者によるプラグインの説明はまだありません。", "使用 Cloudflare 账号 ID 与 API Token,接入 Workers AI 对话和在线模型目录。": "Cloudflare のアカウント ID と API Token で Workers AI の対話とオンラインモデル一覧に接続します。", "使用 Warp 终端的登录态,接入账号可用模型并查询 AI 请求额度。": "Warp ターミナルのログイン情報で、アカウントが利用できるモデルに接続し、AI リクエストの利用枠を確認します。", "使用你在网关电脑上安装并登录的 agy CLI,通过 ACP 协议接入模型、工具调用和额度查询;与依赖 Antigravity IDE 的 Antigravity ACP 插件不同。": "ゲートウェイのコンピューターにインストールしてログイン済みの agy CLI を使い、ACP 経由でモデル、ツール呼び出し、使用枠の照会に接続します。Antigravity IDE に依存する Antigravity ACP プラグインとは異なります。", "使用网关本机 gcloud / ADC 登录,接入 Vertex AI 模型并查询 Google Cloud 促销赠金。": "ゲートウェイのマシン上の gcloud / ADC 認証情報で Vertex AI モデルに接続し、Google Cloud のプロモーションクレジットを確認します。", "例如:家里、公司": "例:自宅、会社", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "サイドバーのレイアウトモジュールが読み込まれていません(ui/sidebar-layout.js を app.js より前に読み込む必要があります)。", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "サイドバーにメニューが表示されていません。「設定 → 表示 → サイドバーのメニュー」で必要な項目をオンにしてください。", "侧边栏菜单": "サイドバーのメニュー", "保存失败:{error}": "保存に失敗しました:{error}", "保存对话模型失败:{message}": "対話モデルの保存に失敗:{message}", "保存并继续": "保存して続行", "修改高级参数会等待在途任务结束后重新加载插件;专属开关实时生效。": "詳細設定を変更すると、実行中のタスクが終了してからプラグインを再読み込みします。プロバイダーのスイッチは即座に反映されます。", "候选队列": "候補キュー", "停止": "停止", "停用": "無効", "允许的操作": "許可される操作", "允许签到及附带任务": "チェックインと付随タスクを許可", "先添加一台网关": "まずゲートウェイを追加してください", "先选择插件声明的账号登录方式,再填写必需字段。OAuth 由共享登录桥负责等待、取消和错误;API 凭证通过账号规范化入口添加。": "プラグインが宣言したアカウントログイン方式を選び、必須項目を入力してください。OAuth の待機、キャンセル、エラーは共通ログインブリッジが処理し、API 認証情報はアカウント正規化処理から追加されます。", "免鉴权调用": "認証なしの呼び出し", "全不选": "すべて解除", "全部 API Key": "すべての API Key", "全部客户端": "すべてのクライアント", "全部更新": "すべて更新", "共 {n} 条记录": "全 {n} 件", "共享登录桥不可用,请重新打开面板": "共通ログインブリッジを利用できません。パネルを開き直してください。", "共享运行环境尚未就绪,本插件没有明确的加载失败结果。": "共有実行環境がまだ準備できていません。このプラグイン自体の読み込み失敗は確認されていません。", "关": "オフ", "关闭菜单": "メニューを閉じる", "兼容 OpenCode v1 / Magpie 提供商插件及其运行依赖;不加载界面、独立工具或 Pi 扩展。": "OpenCode v1 / Magpie のプロバイダープラグインと実行時の依存関係に対応します。UI、独立したツール、Pi 拡張は読み込みません。", "准备运行环境": "実行環境を準備中", "凭证 JSON 含有不允许的字段:{key}": "認証情報 JSON に許可されていない項目があります:{key}", "凭证 JSON 嵌套过深,请只粘贴该插件要求的凭证对象": "認証情報 JSON の入れ子が深すぎます。このプラグインが要求する認証情報オブジェクトのみを貼り付けてください。", "凭证 JSON 必须是非空对象,不能是数组或字符串": "認証情報 JSON は空でないオブジェクトである必要があります。配列や文字列は使用できません。", "凭证 JSON 格式不正确,请检查括号和引号": "認証情報 JSON の形式が正しくありません。括弧と引用符を確認してください。", "凭证 JSON(必填)": "認証情報 JSON(必須)", "凭证只在提交时发送到网关;备注名和代理请使用下面的字段,解析错误不会回显凭证内容。": "認証情報は送信時にのみゲートウェイへ送られます。表示名とプロキシは下の項目で設定してください。解析エラーで認証情報の内容が表示されることはありません。", "分布来自保留的日报来源明细;无法恢复的历史不反推客户端或模型。": "内訳は保存された日次の送信元集計に基づきます。復元できない履歴からクライアントやモデルを推測しません。", "分支、标签或提交(留空使用默认分支)": "ブランチ・タグ・コミット(空欄で既定のブランチ)", "分组名": "グループ名", "分组名,例如「常用」": "グループ名(例:「よく使う」)", "切换菜单": "メニューを切り替える", "列表 = 模型管理页里所有已启用的模型。助手走本地网关发起对话,消耗所选账号的额度。": "一覧は「モデル管理」ページで有効なすべてのモデルです。アシスタントはローカルゲートウェイ経由で対話し、選択したアカウントの枠を消費します。", "创建并进入": "作成して開始", "创建管理员账号": "管理者アカウントを作成", "初始化已完成,正在等待校验和登记。": "初期化が完了し、検証と登録を待っています。", "初始化超时": "初期化がタイムアウト", "删除 {n} 条": "{n} 件を削除", "删除分组": "グループを削除", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "グループ「{name}」を削除しますか?{n} 件のメニューは「{target}」へ移動するので失われません。", "删除空分组「{name}」?": "空のグループ「{name}」を削除しますか?", "删除这个分组(组内菜单移到第一组)": "このグループを削除(メニューは最初のグループへ移動)", "刷新清单": "一覧を更新", "刷新状态": "状態を更新", "加入插件 beta 版": "プラグイン beta 版に参加", "加载中": "読み込み中", "加载助手设置失败:{message}": "アシスタント設定の読み込みに失敗:{message}", "加载失败": "読み込み失敗", "加载失败:{error}": "読み込みに失敗しました:{error}", "加载更多": "さらに読み込む", "加载更早的记录": "以前の記録を読み込む", "加载状态": "読み込み状態", "加载诊断": "読み込み診断", "助手": "アシスタント", "助手自己用哪个模型生成回复": "アシスタントが返答の生成に使うモデル", "助手设置读取失败,工具可能已过时。": "アシスタント設定の読み取りに失敗しました。ツールが古い可能性があります。", "助手走本地网关,消耗所选账号的额度": "アシスタントはローカルゲートウェイ経由で、選択したアカウントの枠を消費します", "勾选即注入该工具;不勾选 = 助手看不到它": "チェックしたツールが注入されます。チェックを外すとアシスタントからは見えません", "十几 MB": "十数 MB", "升级会重新下载并校验插件包(约 {size}),装完立即生效,账号数据不受影响。": "アップグレードではプラグインパックを再ダウンロードして検証します(約 {size})。インストール後すぐに反映され、アカウントデータは影響を受けません。", "协议版本": "プロトコルバージョン", "单签": "個別", "占比": "割合", "即将就绪": "まもなく準備完了", "卸载": "アンインストール", "卸载插件": "プラグインをアンインストール", "卸载插件包": "プラグインパックを削除", "历史数据整理中": "履歴データを整理中", "历史明细不完整,输入、输出与缓存读数无法恢复": "過去の明細が不完全なため、入力・出力・キャッシュの値は復元できません。", "历史未记录 Key": "過去の Key 未記録", "原生插件包,来自项目插件仓库": "プロジェクトのリポジトリから提供されるネイティブプラグイン", "原生辅助授权": "ネイティブヘルパーの許可", "原生辅助授权已失效或暂不可用,请重新选择并确认。": "ネイティブヘルパーの許可が無効になったか、一時的に利用できません。選び直して確認してください。", "原生辅助程序不受 Wasm 沙箱限制,只授权你信任的已安装插件。辅助程序更新后需要重新确认。": "ネイティブヘルパーは Wasm サンドボックスの制限外です。信頼できるインストール済みプラグインにのみ許可してください。更新後は再確認が必要です。", "去下载": "ダウンロード", "去登录": "ログインへ", "参数不完整(需要 account / enabled)": "パラメータが不足しています(account / enabled が必要)", "参数不完整(需要 account / position)": "パラメータが不足しています(account / position が必要)", "参数不完整(需要 provider / id / alias)": "パラメータが不足しています(provider / id / alias が必要)", "参数不完整(需要 provider / id / capabilities)": "パラメータが不足しています(provider / id / capabilities が必要)", "参数不完整(需要 provider / id / enabled)": "パラメータが不足しています(provider / id / enabled が必要)", "参数不完整(需要 provider / position)": "パラメータが不足しています(provider / position が必要)", "发现新版本 {latest}(当前 {current}),点开「设置 - 软件更新」可查看更新日志并下载": "新バージョン {latest} が見つかりました(現在 {current})。「設定 - ソフトウェア更新」を開くと更新履歴を確認してダウンロードできます", "发现新版本 {version}": "新しいバージョン {version} があります", "发送": "送信", "取消日期筛选": "日付フィルターを解除", "受影响的来源将在 {time} 后自动重试": "取得できなかった配信元には {time} 以降に自動で再試行します", "只改映射名,不动上游模型 ID;映射立即生效(新对话即可用)。": "変わるのはマッピング名だけで、アップストリームのモデル ID はそのままです。マッピングはすぐ反映されます(新しい対話から利用可能)。", "只注入工具定义": "ツール定義のみ注入", "只统计已结束的生产请求;失败请求仍计入请求数,Token 用量沿用现有成功请求口径。": "完了した本番リクエストのみを集計します。失敗もリクエスト数に含め、Token 使用量は既存の成功リクエストの集計基準に従います。", "只读": "読み取り専用", "只读工具": "読み取り専用ツール", "可以点击「刷新」读取插件仓库,或从本地 zip 安装插件。": "「更新」でプラグイン一覧を取得するか、ローカル zip からインストールできます。", "可填 {min}–{max} 秒,关闭后保留间隔": "{min}~{max} 秒で指定。オフにしても間隔は保持されます", "可更新": "更新あり", "可更新 v{version}": "v{version} に更新できます", "可更新到 v{version}": "v{version} に更新可能", "可用": "件利用可", "可选,留空使用账号昵称": "任意。空欄の場合はアカウントのニックネームを使用", "各家提供商的转发与账号实现都在插件包里,不随本软件发布。装好插件后,模型转发、添加账号、签到与余额查询才会生效。": "各プロバイダーの転送とアカウント処理はプラグインパックに入っており、本アプリには同梱されません。プラグインを入れると、モデル転送・アカウント追加・チェックイン・残高照会が使えるようになります。", "后台只读取状态,不会自动弹出验证码;验证结果一次性使用,短时间内过期。": "バックグラウンドでは状態を読み取るだけで、認証画面を自動表示しません。認証トークンは一度だけ使用でき、短時間で期限切れになります。", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "固定項目「設定」を含むため、グループごと非表示にはできません(他のメニューは個別に非表示にできます)", "启动较慢,仍在加载;尚未收到失败结果。": "起動に時間がかかっていますが、読み込みは進行中です。失敗は報告されていません。", "四种组合的实际效果": "4 通りの組み合わせの実際の効果", "回复由 {model} 生成 · 走本地网关": "返答は {model} が生成 · ローカルゲートウェイ経由", "固定": "固定", "在 GitHub 上创建令牌(无需勾选任何权限)": "GitHub でトークンを作成(権限の選択は不要)", "填写账号登录所需信息并发起授权;等待、取消与失败原因由共享登录桥处理,设备码和操作指引会显示在上方。": "アカウントのログインに必要な情報を入力して認証を開始してください。待機、キャンセル、失敗の理由は共通ログインブリッジが処理し、デバイスコードと操作の案内は上に表示されます。", "备注名(可选)": "表示名(任意)", "复制失败,请手动选择复制": "コピーに失敗しました。手動で選択してコピーしてください", "复制订阅链接": "サブスクリプションリンクをコピー", "失败 · {status}": "失敗 · {status}", "失败退避": "失敗バックオフ", "奖励 {bonus}": "ボーナス {bonus}", "套餐 {plan}": "プラン {plan}", "套餐池人机验证": "Start Plan の人間認証", "套餐池请求需要验证,请主动开始验证后重试请求": "Start Plan リクエストに認証が必要です。手動で認証を開始してからリクエストを再試行してください。", "安装": "インストール", "安装 {name}": "{name} をインストール", "安装与更新插件时访问 GitHub 用。与「设置 → 更新 → 更新设置」里的同一项互通,填一次即可。不填也能用,只是匿名请求限额较低(60 次/小时)。": "プラグインのインストールと更新で GitHub にアクセスするときに使います。「設定 → 更新 → 更新設定」と同じ項目なので、どちらか一方に入力すれば十分です。未入力でも使えますが、匿名リクエストの上限が低くなります(60 回/時間)。", "安装于 {time}": "{time} にインストール", "安装包已就绪,点「安装」即可完成更新": "インストールパッケージの準備ができました。「インストール」で更新が完了します", "安装插件包": "プラグインパックをインストール", "安装时间": "インストール日時", "安装脚本插件": "スクリプトプラグインをインストール", "完成时间:{time}": "完了時刻:{time}", "官方": "公式", "官方与推荐来自 Magpie 官方名单;第三方来自 GitHub 的 magpie-plugin 标签,不代表官方推荐。": "公式・おすすめは Magpie 公式カタログに基づきます。サードパーティーは GitHub の magpie-plugin トピックから取得したもので、公式の推奨を意味しません。", "官方签名:包内容与发布者签的完全一致,未被改过": "公式署名:パックの内容は発行者が署名したものと完全に一致しており、改変されていません", "定时": "定期", "定时任务": "定期タスク", "实际注入": "実際の注入内容", "客户端分布": "クライアント別内訳", "客户端统计": "クライアント統計", "宿主错误": "ホストエラー", "对话": "チャット", "对话模型": "対話モデル", "对话模型已切换": "対話モデルを切り替えました", "将修改 {model} 的 {n} 项能力:": "{model} の能力 {n} 項目を変更します:", "将修改 {n} 个模型的启停状态:": "{n} 個のモデルの有効 / 無効を変更します:", "将修改 {n} 个账号的启用状态(其中禁用 {k} 个):": "{n} 個のアカウントの有効状態を変更します(うち {k} 個を無効化):", "将对 {model} 发起一次真实请求:": "{model} に実際のリクエストを 1 回送信します:", "将执行 {label}。": "{label} を実行します。", "将把「{provider}」整组移到第 {position} 顺位:": "「{provider}」のグループ全体を {position} 番目に移動します:", "将把账号「{account}」移到第 {position} 顺位:": "アカウント「{account}」を {position} 番目に移動します:", "将改动 {n} 条映射({parts}):": "マッピング {n} 件を変更します({parts}):", "小米 MiMo": "Xiaomi MiMo", "尚未取得插件清单": "プラグイン一覧は未取得です", "尚未检查更新": "更新未確認", "尚未登录": "まだログインしていません", "已下载": "ダウンロード済み", "已下载,待安装": "ダウンロード済み・インストール待ち", "已修改 {n} 个模型": "{n} 個のモデルを変更しました", "已修改 {n} 个账号": "{n} 個のアカウントを変更しました", "已修改 {n} 项能力": "能力 {n} 項目を変更しました", "已停止这次回答。": "この回答を停止しました。", "已全部取消勾选": "すべてのチェックを外しました", "已关闭自动检查": "自動チェックをオフにしました", "已删除分组「{name}」": "グループ「{name}」を削除しました", "已加载": "読み込み済み", "已勾选 {n} / {total}": "{n} / {total} 選択中", "已勾选「{label}」": "「{label}」を選択しました", "已勾选工具": "ツールあり", "已取消「{label}」": "「{label}」の選択を解除しました", "已启动安装器": "インストーラーを起動しました", "已填写(粘贴新令牌可覆盖)": "入力済み(新しいトークンを貼り付けると上書きされます)", "已复制:{text}": "コピーしました:{text}", "已开启自动检查": "自動チェックをオンにしました", "已恢复推荐勾选": "推奨のチェックに戻しました", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "既定のグループに戻しました:概要 / 転送経路 / 診断 / システム", "已改动 {n} 条映射": "マッピング {n} 件を変更しました", "已新建分组「{name}」,点组头的 + 把菜单移进来": "グループ「{name}」を作成しました。見出しの + でメニューを移動できます", "已是最新版本": "最新バージョンです", "已显示 {shown} / {total} 个提供商插件": "プロバイダープラグイン {total} 件中 {shown} 件を表示", "已更新 {count} 个插件": "{count} 個のプラグインを更新しました", "已更新 {done} 个插件,{failed} 个失败:{error}": "{done} 個のプラグインを更新しました。{failed} 個失敗:{error}", "已注入 {n} / {total} 个工具 · 系统提示词:{state}": "ツール {n} / {total} 個を注入 · システムプロンプト:{state}", "已添加的服务器": "追加済みのサーバー", "已由其他插件接管,请到对应插件中管理。": "このプロバイダーは別のプラグインが管理しています。該当するプラグインの設定で管理してください。", "已登录": "ログイン済み", "已离线 · 显示的是缓存内容": "オフライン — キャッシュを表示中", "已移到第 {n} 顺位": "{n} 番目に移動しました", "已签名": "署名済み", "开": "オン", "开关和选项即时保存;输入项请点击对应的「保存」按钮。": "スイッチと選択項目はすぐに保存されます。入力欄は対応する「保存」ボタンを押してください。", "开始时间:{time}": "開始時刻:{time}", "开始验证": "認証を開始", "当前": "現在", "当前一个工具都没勾选,助手只能纯聊天。去「设置 → AI 助手 → 工具」里勾上需要的工具。": "ツールが 1 つも選ばれていないため、アシスタントはチャットしかできません。「設定 → AI アシスタント → ツール」で必要なツールにチェックしてください。", "当前兼容无运行时 npm 依赖的提供商插件;不加载 Magpie 界面、Matrix 工具或 Pi 扩展。": "現在は実行時の npm 依存がないプロバイダープラグインに対応しています。Magpie の画面、Matrix ツール、Pi 拡張は読み込みません。", "当前平台": "現在のプラットフォーム", "当前平台暂无包": "このプラットフォーム用のパッケージがありません", "当前插件未申请原生辅助能力": "ネイティブヘルパーを要求するプラグインはありません", "当前暂不可安装": "現在インストールできません", "当前模型请求免人机验证": "現在、モデルリクエストに人間認証は不要です。", "当前版本 {current},最低可用版本 {minimum}。": "現在のバージョンは {current}、利用可能な最低バージョンは {minimum} です。", "当前版本 {version}": "現在のバージョン {version}", "当前网关要求插件版本不低于 v{version},补齐前暂不加载。": "このゲートウェイにはプラグイン v{version} 以降が必要です。更新するまで読み込みません。", "当前:已关闭(助手不收到任何系统提示词,工具定义照发)": "現在:オフ(アシスタントにシステムプロンプトは送られませんが、ツール定義は送信されます)", "当前:已开启 · 使用内置默认提示词(还没自定义)": "現在:オン · 組み込みの既定プロンプトを使用中(未カスタマイズ)", "当前:已开启 · 自定义内容 {n} 字": "現在:オン · カスタム内容 {n} 文字", "影响转发": "転送に影響", "待就绪": "準備待ち", "待确认": "確認待ち", "总剩余 {total}": "残り合計 {total}", "恢复上游原值": "アップストリームの元の値に戻す", "恢复推荐": "推奨に戻す", "恢复默认侧边栏": "サイドバーを既定に戻す", "成功 / 失败": "成功 / 失敗", "成功领取": "受取済み", "我会在动手前把改动列给你确认。": "変更内容は実行前に一覧で示し、確認を待ちます。", "我信任所选辅助程序并允许它执行声明的本机操作": "選択したヘルパーを信頼し、宣言されたローカル操作を許可します", "我信任此插件来源,并允许它在网关电脑上运行。": "このプラグインの提供元を信頼し、ゲートウェイのコンピューターでの実行を許可します。", "所有菜单都已在这一组": "すべてのメニューがこのグループにあります", "手动凭证 JSON": "認証情報 JSON の手動入力", "手动凭证 JSON(兼容入口)": "認証情報 JSON の手動入力(互換用)", "执行": "実行", "执行时刻": "実行時刻", "把菜单移入 {name}": "メニューを {name} へ移動", "把菜单移入「{name}」": "メニューを「{name}」へ移動", "报表": "レポート", "拖动分组 {name}": "グループ {name} をドラッグ", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "左側の ⠿ をドラッグして順序を変更(メニューはグループをまたげます)。スイッチで表示/非表示、グループ名をクリックで名前変更、グループ見出しの + で他のメニューを移動、目のボタンでグループごと非表示。変更は即座に反映され保存されます(左のサイドバーが結果です)。キーボード操作:ハンドルにフォーカスして Alt+↑ / ↓。", "拖动菜单 {name}": "メニュー {name} をドラッグ", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "ドラッグでグループの順序を変更(Alt+↑ / ↓ でも可)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "ドラッグで順序を変更、グループをまたげます(Alt+↑ / ↓ でも可)", "按 API Key 筛选": "API Key で絞り込み", "按 Token": "Token 順", "按天请求趋势": "日別リクエスト推移", "按客户端筛选": "クライアントで絞り込み", "按访问网关的 API Key 统计生产请求,不包含助手对话和模型测试。停用、删除 Key 不会删除历史用量;密钥值不会进入报表。历史没有记录身份的请求单列,不能追溯到某把 Key。": "ゲートウェイにアクセスする API Key ごとに本番リクエストを集計し、アシスタントの会話とモデルテストは除外します。Key を無効化・削除しても過去の使用量は残り、秘密鍵の値はレポートに含めません。Key が未記録の過去のリクエストは別枠に表示し、特定の Key には遡って割り当てません。", "按请求 User-Agent 识别的客户端类型统计,不代表设备或用户数。“其它”表示有 User-Agent 但未匹配已知类型;“未记录客户端”表示旧数据或请求未带 User-Agent。": "リクエストの User-Agent から識別したクライアント種類で集計します。端末数やユーザー数ではありません。「その他」は User-Agent が既知の種類に一致しない場合、「クライアント未記録」は旧データまたは User-Agent がない場合です。", "按请求数": "リクエスト数順", "按间隔检查插件版本,在对应卡片显示更新;关闭后仍可手动检查。自动更新或自动下载开启时也使用此间隔。": "この間隔でプラグインのバージョンを確認し、カードに更新を表示します。無効でも手動確認は可能です。自動更新と自動ダウンロードも同じ間隔を使用します。", "按需下载": "必要時にダウンロード", "按需安装插件,为 AI 路由网关扩展提供商能力。插件独立于主程序更新,下载完成后自动校验并安装。": "必要なプラグインをインストールして AI ゲートウェイを拡張できます。プラグインは本体とは別に更新し、ダウンロード後に自動で検証・インストールします。", "换一组筛选条件,或把来源和状态都切回「全部」。": "絞り込み条件を変えるか、ソースと状態をどちらも「すべて」に戻してください。", "授权": "許可", "排序已保存,但列表刷新失败:{message}": "順序は保存されましたが、一覧を更新できませんでした:{message}", "排序未保存:{message}": "順序を保存できませんでした:{message}", "排序设置迁移失败:{message}": "並べ替え設定を移行できませんでした:{message}", "排第 1 的接走所有请求,直到它不能答(限流 / 故障 / 额度尽)才轮到下一位 —— 就是「从上往下」的现状行为。": "1 番目のアカウントが答えられなくなる(レート制限 / 障害 / 枠切れ)まで全リクエストを受け持ち、そこで初めて次に回ります —— 今までどおりの「上から順」の動作です。", "接入 Agnes AI 国际版:浏览器登录、在线模型目录、套餐用量与美元余额;与 Agnes Code 桌面版独立。": "Agnes AI 国際版に接続:ブラウザログイン、オンラインモデル一覧、プラン使用量と米ドル残高。Agnes Code デスクトップ版とは別の製品です。", "接入 Agnes Code:本机登录态或 accessToken、模型目录、积分与登录奖励观测。": "Agnes Code に接続:ローカルのログイン情報または accessToken、モデル一覧、ポイント、ログイン報酬の確認。", "接入 Codar(科搭):本机凭据、模型目录、积分与滚动窗口签到。": "Codar(科搭)に接続:ローカル認証情報、モデル一覧、ポイント、ローリング期間のチェックイン。", "接入 DeepAI Code:网页登录、本机凭据、模型目录、额度查询与签到。": "DeepAI Code に接続:Web ログイン、ローカル認証情報、モデル一覧、利用枠の照会、チェックイン。", "接入 JoyCode(京东):网页登录、企业租户、模型目录与额度明细。": "JoyCode(京東)に接続:Web ログイン、企業テナント、モデル一覧、利用枠の詳細。", "接入 WPS 灵犀:网页登录、客户端导入、Cookie、模型目录与智点;签到及附带任务默认允许。": "WPS 霊犀に接続:Web ログイン、クライアントからの取り込み、Cookie、モデル一覧、ポイント。チェックインと付随タスクは既定で許可されます。", "接入中国移动云 MClaw:浏览器登录、在线模型目录、aitokens 额度与凭证续期。": "中国移動クラウドの MClaw に接続:ブラウザログイン、オンラインモデル一覧、aitokens 利用枠と認証情報の更新。", "接入书生·端砚墨点计划:浏览器登录、API Key、模型目录与墨点额度窗口。": "Intern InkStone の墨点プランに接続:ブラウザログイン、API Key、モデル一覧と期間ごとの墨点利用枠。", "接口不兼容": "インターフェース非互換", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "サイドバーに表示するメニュー、その順序、グループ分けを設定します。非表示はナビゲーションの表示だけに影響し、アクセス権は失われません。非表示にしたページも URL から直接開けます。", "提供商启停": "プロバイダーの有効・無効", "提供商增强": "プロバイダー拡張", "提供商设置": "プロバイダー設定", "提示词": "プロンプト", "提示词开关": "プロンプトのスイッチ", "插件": "プラグイン", "插件与当前网关的公共接口不兼容,暂未加载。": "プラグインは現在のゲートウェイの公開インターフェースと互換性がないため、読み込まれていません。", "插件仓库": "プラグインリポジトリ", "插件任务": "プラグインのタスク", "插件包与主程序分开安装、分开升级。卸载插件后账号数据仍然保留,重新装回即可继续使用;仅该包提供的转发与添加账号需要插件,本体订阅不受影响。": "プラグインパックは本体とは別にインストール・更新します。削除してもアカウントデータは残り、再インストールで引き続き使用できます。そのパックが提供する転送とアカウント追加のみがプラグインを必要とし、本体のサブスクリプションには影響しません。", "插件包与主程序分开安装、分开升级。卸载插件后账号数据仍然保留,重新装回即可继续使用;但转发与添加账号需要插件在位。": "プラグインパックは本体とは別にインストール・更新します。削除してもアカウントデータは残り、入れ直せばそのまま使えます。ただし転送とアカウント追加にはプラグインが必要です。", "插件包大小不能超过 {n} MiB": "プラグインパックのサイズは {n} MiB 以下である必要があります。", "插件包已卸载": "プラグインパックを削除しました", "插件包已安装": "プラグインパックをインストールしました", "插件包已安装到 v{version}": "プラグイン v{version} をインストールしました", "插件包已更新到 v{version}": "プラグインパックを v{version} に更新しました", "插件包的可执行文件不在磁盘上(可能被手工删除或移动),请重新安装。": "プラグインパックの実行ファイルがディスク上にありません(手動で削除・移動された可能性があります)。再インストールしてください。", "插件参数必须是 JSON 对象": "プラグインの設定は JSON オブジェクトで指定してください", "插件发布信息读取失败,请稍后刷新": "プラグインのリリース情報を取得できませんでした。後で更新してください。", "插件只声明了短信登录,但没有下发可用的动态表单;此界面不会猜测短信接口": "プラグインは SMS ログインのみを宣言していますが、利用可能な動的フォームを提供していません。この画面では SMS API を推測しません。", "插件尚未声明有效版本,暂时无法安装": "プラグインに有効なバージョンが指定されていないため、まだインストールできません。", "插件尚未提供可下载的发布包": "このプラグインにはまだダウンロード可能なリリースがありません。", "插件已就绪,账号列表将自动同步。": "プラグインの準備ができました。アカウント一覧は自動更新されます。", "插件更新未完成": "プラグインの更新が完了しませんでした", "插件未启用或已不再申请此权限;已有授权仍可撤销。": "プラグインは無効か、この権限を要求しなくなりました。既存の許可は取り消せます。", "插件未实现 auth.methods(501),且没有可用的旧版登录声明;仅保留需要插件确认的手动凭证 JSON 入口": "プラグインは auth.methods を実装しておらず(501)、利用可能な旧版のログイン宣言もありません。プラグインによる確認が必要な認証情報 JSON の手動入力のみを残しています。", "插件未实现 auth.methods(501);以下入口仅依据旧版登录声明显示": "プラグインは auth.methods を実装していません(501)。以下の項目は旧版のログイン宣言のみに基づいて表示されます。", "插件没有声明可用的账号登录方式,请更新插件或联系插件作者": "プラグインに利用可能なアカウントログイン方式が宣言されていません。プラグインを更新するか、作者にお問い合わせください。", "插件清单暂未完整读取": "プラグイン一覧を完全には取得できていません", "插件版本(留空使用 latest)": "プラグインのバージョン(空欄で latest)", "插件状态已变更,但账号列表同步失败。请回到账号页点击「刷新」重试。": "プラグイン状態は変更されましたが、アカウント一覧の同期に失敗しました。アカウントページで「更新」をクリックして再試行してください。", "插件独立安装与更新。卸载后账号数据仍会保留;脚本插件共用一个按需下载的运行时。": "プラグインは個別にインストール・更新します。削除してもアカウントデータは残り、スクリプトプラグインは必要時に取得するランタイムを共有します。", "插件登录指引": "プラグインのログイン案内", "插件登录方式包含重复的输入字段": "プラグインのログイン方式に重複した入力項目があります。", "插件登录选择字段包含无效或重复的选项": "プラグインのログイン選択項目に無効または重複した選択肢があります。", "插件登录选择字段缺少选项列表": "プラグインのログイン選択項目に選択肢の一覧がありません。", "插件目录": "プラグインディレクトリ", "插件设置": "プラグイン設定", "插件设置已保存": "プラグイン設定を保存しました", "插件返回了无效的登录字段,请更新插件或联系作者": "プラグインが無効なログイン項目を返しました。プラグインを更新するか、作者にお問い合わせください。", "插件返回了无效的登录方式,请更新插件或联系作者": "プラグインが無効なログイン方式を返しました。プラグインを更新するか、作者にお問い合わせください。", "插件选项": "プラグインの設定", "搜索…": "検索…", "搜索插件": "プラグインを検索", "撤销授权": "許可を取り消す", "支持自动授权、设备码、手动授权码和插件声明的凭据表单;本机读取作用于网关电脑。": "自動認証、デバイスコード、手動認証コード、プラグインが定義する認証フォームに対応します。ローカル読み取りの対象はゲートウェイのコンピューターです。", "改动立即生效;禁用后指向它的请求会落到下一个候选。": "変更はすぐ反映されます。無効化すると、それ宛のリクエストは次の候補に回ります。", "改动类工具": "変更系ツール", "改成": "変更後", "文件缺失": "ファイル欠落", "文档": "ドキュメント", "新": "新", "新分组名": "新しいグループ名", "新增 {n} 条": "{n} 件を追加", "新对话": "新しい対話", "新建分组": "グループを追加", "无凭证": "認証情報なし", "无法解密": "復号できません", "无法读取插件更新进度,请刷新后查看结果。": "プラグインの更新状況を読み取れませんでした。再読み込みして結果を確認してください。", "无法读取登录方式": "ログイン方式を読み込めません", "日志": "ログ", "旧版本保存的正文可能已截断,无法恢复缺失内容": "旧バージョンで保存された本文は切り詰められている可能性があり、欠落した内容は復元できません", "旧版浏览器登录暂不接收备注名和登录代理,请添加后在账号设置中调整。": "旧版のブラウザログインでは現在、表示名とログイン用プロキシを受け付けません。アカウント追加後にアカウント設定で変更してください。", "旧版登录方式": "旧版のログイン方式", "映射名": "マッピング名", "显示 {name}": "{name} を表示", "显示分组 {name}": "グループ {name} を表示", "显示这一组": "このグループを表示", "智能": "AI", "暂不可安装": "インストール不可", "暂无可安装的插件": "インストール可能なプラグインはありません", "暂无可用的原生辅助程序,请先安装并启用所需插件。": "利用できるネイティブヘルパーがありません。必要なプラグインをインストールして有効にしてください。", "暂时无法获取插件状态,显示上次结果;这不代表插件启动失败。": "プラグインの状態を取得できないため、前回の結果を表示しています。起動失敗を意味するものではありません。", "暂未发布": "未公開", "暂未取得明确的加载结果,不能据此判断启动失败。": "読み込み結果はまだ確定していません。これだけで起動失敗とは判断できません。", "更多": "その他", "更新": "更新", "更新到 v{version}": "v{version} に更新", "更新前无法继续调用模型;账号、配置和历史记录不会被删除。": "更新するまでモデルを呼び出せません。アカウント、設定、履歴は削除されません。", "更新或启停会等待共享宿主内的请求结束;账号数据始终由网关统一保存。": "更新や有効・無効の切り替えは、共有ホストのリクエスト完了を待って行います。アカウントデータは常にゲートウェイが管理します。", "更新/重装": "更新/再インストール", "最大化": "最大化", "最小化": "最小化", "最近调用": "最終呼び出し", "有": "あり", "有 {count} 个插件可更新": "{count} 個のプラグインに更新があります", "有插件包的协议版本与当前网关不一致({versions}),请下载对应版本的插件包。": "プロトコルバージョンがこのゲートウェイと一致しないプラグインパックがあります({versions})。対応するバージョンのパックをダウンロードしてください。", "有新版本,重启后生效": "新しいバージョンがあります。再起動で反映", "有新版本:v{current} → v{latest}": "新しいバージョンがあります:v{current} → v{latest}", "有更新": "更新あり", "服务器": "サーバー", "服务器已切换,请重新加载页面": "サーバーが切り替わりました。ページを再読み込みしてください", "未加载": "未読み込み", "未同步": "未同期", "未就绪": "準備未完了", "未授权": "未許可", "未登录": "未ログイン", "未知工具「{name}」:它在设置里可能刚被取消勾选,或这一版助手还不认识它。": "不明なツール「{name}」:設定でチェックを外したばかりか、このバージョンのアシスタントがまだ認識していない可能性があります。", "未签名": "未署名", "未签名包不会自动覆盖;点击「补齐插件」将安装官方签名包。": "未署名のパッケージは自動で置き換えません。「必要なプラグインを更新」を押すと公式署名付きパッケージをインストールします。", "未签名:可以正常使用,但无法证明这个包出自官方;升级时同样只做格式校验": "未署名:通常どおり使えますが、このパックが公式のものであることを証明できません。アップグレード時も形式チェックのみ行います", "未能保存自动刷新设置": "自動更新の設定を保存できませんでした", "未能读取自动刷新设置": "自動更新の設定を読み込めませんでした", "未记录": "未記録", "未记录客户端": "クライアント未記録", "未运行": "停止中", "未选择服务器": "サーバー未選択", "本地网关监听状态": "ローカルゲートウェイのリッスン状態", "本次初始化超过等待时限,已停止;可查看诊断后重试。": "初期化が制限時間を超えたため停止しました。診断を確認してから再試行できます。", "本次加载未完成,请查看诊断。": "今回の読み込みは完了しませんでした。診断を確認してください。", "本次用时 {n} 秒": "今回の所要時間:{n} 秒", "权限": "権限", "来自 Magpie 社区的插件,共用一个按需下载的运行时": "Magpie コミュニティのプラグインは、必要時に取得するランタイムを共有します", "来自环境变量": "環境変数から", "来自环境变量 GITHUB_TOKEN": "環境変数 GITHUB_TOKEN から", "松开刷新": "離して更新", "查看 GitHub 仓库:{repository}": "GitHub リポジトリを開く:{repository}", "查看全部": "すべて表示", "查看参数": "パラメータを表示", "查看发布说明": "リリースノートを見る", "查看发布页面": "リリースページを開く", "查看提供商插件": "プロバイダープラグインを見る", "查看更新日志": "更新履歴を表示", "查看结果": "結果を表示", "查看进度": "進捗を確認", "标题总结设置": "タイトル生成設定", "桌面桥不可用(本页需要在 Agent2API 客户端里打开)": "デスクトップブリッジが利用できません(このページは Agent2API クライアント内で開く必要があります)", "检查更新失败": "更新の確認に失敗しました", "检测到更新后自动下载、校验并安装已启用的官方签名插件。": "更新を検出すると、有効な公式署名付きプラグインを自動でダウンロード・検証・インストールします。", "检测到更新后自动下载、校验并安装已启用的官方签名插件。未签名或第三方插件仍需手动更新。": "有効な公式署名付きプラグインの更新を自動でダウンロード・検証・インストールします。未署名や第三者のプラグインは手動更新が必要です。", "模型分布": "モデル別内訳", "模型管理": "モデル管理", "正在下载 Bun 运行时": "Bun ランタイムをダウンロード中", "正在下载…": "ダウンロード中…", "正在下载脚本插件": "スクリプトプラグインをダウンロード中", "正在初始化插件,尚未收到失败结果。": "プラグインを初期化しています。失敗は報告されていません。", "正在加载": "読み込み中", "正在加载 · {n} 家提供商的账号暂未显示,就绪后自动恢复。": "読み込み中 · {n} 社のプロバイダーのアカウントは一時的に非表示です。準備ができると自動的に再表示されます。", "正在加载新插件…": "新しいプラグインを読み込み中…", "正在加载脚本插件": "スクリプトプラグインを読み込み中", "正在启动": "起動中", "正在启动插件,账号将在就绪后自动恢复。": "プラグインを起動しています。準備ができるとアカウントは自動的に再表示されます。", "正在完成人机验证…": "認証を完了しています…", "正在恢复原有脚本插件": "以前のスクリプトプラグインを復元中", "正在恢复旧版本插件…": "以前のプラグインバージョンを復元中…", "正在更新第 {index}/{total} 个…": "{total} 個中 {index} 個目を更新中…", "正在校验包内容…": "パッケージを検証中…", "正在检查…": "確認中…", "正在检查或准备脚本运行环境。": "スクリプト実行環境を確認・準備しています。", "正在自动补齐官方插件,不受日常更新开关和通道限制。": "通常の更新設定やチャンネルに関係なく、公式プラグインを必要なバージョンに自動更新しています。", "正在补齐插件…": "必要なプラグインを更新中…", "正在识别二维码…": "QR コードを認識中…", "正在读取、校验并安装插件包…": "プラグインを読み込み・検証・インストール中…", "正在读取插件信息 {done}/{total}": "プラグイン情報を取得中 {done}/{total}", "正在读取插件列表…": "プラグイン一覧を読み込み中…", "正在读取插件清单…": "プラグイン一覧を取得中…", "正在读取插件登录方式…": "プラグインのログイン方式を読み込み中…", "正在连接…": "接続中…", "正在重试…": "再試行中…", "正在验证…": "認証中…", "此 OAuth 方法未声明备注名字段,账号名由插件获取;添加后可在账号设置中修改。": "この OAuth 方式では表示名の項目が宣言されていません。アカウント名はプラグインが取得し、追加後にアカウント設定で変更できます。", "此插件不是提供商插件,当前无法安装": "これはプロバイダープラグインではないため、ここではインストールできません。", "此方式可能需要手动提交授权回调。完成官方登录后,按共享登录桥的提示粘贴完整回调地址;不要把回调地址当作 API Key 或 Token。": "この方式では認証コールバックの手動送信が必要な場合があります。公式ログインの完了後、共通ログインブリッジの案内に従って完全なコールバック URL を貼り付けてください。コールバック URL を API Key や Token として扱わないでください。", "此旧版登录声明无法安全映射到动态表单,请联系插件作者": "この旧版のログイン宣言は動的フォームに安全に対応付けられません。プラグインの作者にお問い合わせください。", "此登录方式需要由共享登录桥发起": "このログイン方式は共通ログインブリッジから開始する必要があります。", "每台服务器的登录状态各自独立保存,切换后不用重新登录。地址改掉后需要重新登录。": "ログイン状態はサーバーごとに個別に保存されるため、切り替え直しても再ログインは不要です。アドレスを変更した場合は再ログインが必要です。", "每日签到及一次性任务;可能消耗智点、发送对话并创建及解散群聊": "毎日のチェックインと一度限りのタスク。クレジットの消費、会話の送信、グループチャットの作成と解散を伴う場合があります", "每轮": "毎ターン", "没有可恢复的维度明细": "復元可能な内訳がありません", "没有可更新的版本": "更新できるバージョンはありません", "没有找到提供商「{provider}」的账号": "プロバイダー「{provider}」のアカウントが見つかりません", "没有找到账号「{name}」": "アカウント「{name}」が見つかりません", "没有符合筛选条件的插件": "条件に一致するプラグインはありません", "没有说明": "説明なし", "没有近期套餐池请求,不生成验证码令牌": "最近の Start Plan リクエストがないため、認証トークンは生成しません。", "没给账号名": "アカウント名が指定されていません", "注入系统提示词": "システムプロンプトを注入", "活动": "キャンペーン", "浅色": "ライト", "消耗该账号额度": "このアカウントの枠を消費します", "消耗额度": "枠を消費", "深色": "ダーク", "添加": "追加", "添加失败": "追加に失敗しました", "添加服务器": "サーバーを追加", "清单更新于 {time}": "一覧の更新:{time}", "清空 = 回到内置默认(与「恢复默认」等价)。": "空にすると組み込みの既定に戻ります(「デフォルトに戻す」と同じ)。", "清除失败:{error}": "削除に失敗しました:{error}", "点「编辑」弹窗改内容;开关关掉就整段不发。": "「編集」をクリックするとダイアログで内容を変更できます。スイッチを切ると丸ごと送信されません。", "点击重命名": "クリックで名前を変更", "熔断": "サーキットブレーカー", "熔断时长(秒)": "サーキットブレーカー時間(秒)", "版本 {version} · 从 GitHub 直接下载安装包": "バージョン {version} · GitHub から直接ダウンロードします", "版本 {version} · 从网关下载安装包": "バージョン {version} · ゲートウェイからパッケージをダウンロードします", "版本 {version} · 更新包需从 Release 页面获取": "バージョン {version} · 更新パッケージは Release ページから取得してください", "环境变量 Key": "環境変数の Key", "用一句话让我查或改本机的模型转发配置。": "一言で指示してください。本機のモデル転送設定を調べたり変更したりします。", "用量详情": "使用量の詳細", "由其他插件接管": "別のプラグインが管理", "电脑端已关闭「软件版本检查」,此处只做手动检查": "デスクトップ版で「ソフトウェアのバージョン確認」がオフのため、ここでは手動チェックのみ行います", "登录、模型调用、模型列表、余额查询和签到等功能,可能因插件实现或上游变化而不可用。": "ログイン、モデル呼び出し、モデル一覧、残高照会、チェックインなどの機能は、プラグインの実装や上流の変更により利用できなくなる場合があります。", "登录指引 / 设备码授权": "ログインの案内 / デバイスコード認証", "登录支持自动完成的 OAuth/设备码和 API Key;要求手动回调的插件暂不支持。": "自動で完了する OAuth/デバイスコードログインと API Key に対応しています。手動コールバックが必要なプラグインには未対応です。", "登录方式说明": "ログイン方式の説明", "登录桥未确认账号添加完成": "ログインブリッジからアカウント追加の完了を確認できませんでした。", "登录面板": "ログイン", "监听 127.0.0.1": "127.0.0.1 でリッスン中", "直接加载兼容的 Magpie / OpenCode v1 提供商包,多个插件共用一个 Bun 进程。": "互換性のある Magpie / OpenCode v1 プロバイダーパッケージを直接読み込みます。複数のプラグインで 1 つの Bun プロセスを共有します。", "直接说要改什么 / 查什么…(Enter 发送,Shift+Enter 换行)": "変更したいこと / 調べたいことをそのまま入力…(Enter で送信、Shift+Enter で改行)", "确定删除账号「{name}」?{note}": "アカウント「{name}」を削除しますか?{note}", "确定卸载「{name}」吗?卸载后这个包里的提供商将无法转发,也无法添加账号。账号数据本身不会被删除,重新安装后可以继续使用。": "「{name}」を削除しますか?削除するとこのパックのプロバイダーは転送もアカウント追加もできなくなります。アカウントデータ自体は削除されず、再インストール後にそのまま使えます。", "确定卸载「{name}」吗?对应提供商将停止转发,账号数据仍然保留,重新安装后恢复。": "「{name}」をアンインストールしますか?対応するプロバイダーの転送は停止します。アカウントデータは保持され、再インストール後に利用できます。", "确认后立即生效": "確認後すぐに反映されます", "确认并安装": "確認してインストール", "确认授权": "許可を確定", "社区": "コミュニティ", "社区插件": "コミュニティプラグイン", "禁用会把账号移出转发队列;若这条线路没有别的可用账号,请求会直接失败。": "無効化するとアカウントは転送キューから外れます。この経路に他に使えるアカウントがなければ、リクエストはそのまま失敗します。", "移入「{name}」": "「{name}」へ移動", "稍后": "あとで", "空分组 · 点组头的 + 把菜单移进来": "空のグループ · 見出しの + でメニューを移動できます", "立即刷新": "今すぐ更新", "立即升级": "今すぐアップグレード", "第 {current} / {total} 页": "{current} / {total} ページ", "第三方": "サードパーティ", "等待前面的插件完成,不代表加载失败。": "先行するプラグインの完了を待っています。読み込み失敗ではありません。", "等待加载": "読み込み待ち", "等待当前任务结束,插件继续服务…": "実行中のタスクの終了を待機中。プラグインは引き続き動作しています…", "等待窗口": "受取可能時刻待ち", "等待脚本插件的在途请求和登录完成": "実行中のリクエストとログインの完了を待機中", "等待账号登录完成…": "アカウントのログイン完了を待っています…", "等待运行环境恢复": "実行環境の復旧待ち", "等这一轮跑完…": "このターンが終わるまでお待ちください…", "签到中心": "チェックインセンター", "签到及插件附带任务;可能消耗额度,具体行为由插件决定": "チェックインとプラグインの付随タスク。クレジットを消費する場合があり、具体的な動作はプラグインによって決まります", "签到及附带任务默认允许,实际执行遵循签到中心的开关和计划。": "チェックインおよび付随タスクは既定で許可され、実際の実行はチェックインセンターのスイッチとスケジュールに従います。", "粘贴 GitHub 令牌(ghp_… / github_pat_…)": "GitHub トークンを貼り付け(ghp_… / github_pat_…)", "粘贴插件要求的 JSON 对象,不要包含 provider、name、proxy 或登录流程控制字段": "プラグインが要求する JSON オブジェクトを貼り付けてください。provider、name、proxy やログイン処理の制御項目は含めないでください。", "系统提示词 + 工具定义": "システムプロンプト + ツール定義", "系统提示词已保存": "システムプロンプトを保存しました", "系统提示词已关闭": "システムプロンプトをオフにしました", "系统提示词已开启": "システムプロンプトをオンにしました", "统计排序": "統計の並び順", "继续安装": "インストールを続行", "缓存读取": "キャッシュ読み取り", "编辑服务器": "サーバーを編集", "编辑系统提示词": "システムプロンプトを編集", "网关 Key": "ゲートウェイキー", "网关没有返回有效的登录方式列表,无法确认该插件的登录能力": "ゲートウェイから有効なログイン方式の一覧が返されなかったため、このプラグインのログイン機能を確認できません。", "网关运行中": "ゲートウェイ稼働中", "网络代理": "ネットワークプロキシ", "网页提供商": "Web プロバイダー", "网页登录(旧版声明)": "ウェブログイン(旧版の宣言)", "能力位决定下游看到的声明(能不能贴图、能塞多少上下文),不改上游的真实行为。": "能力フラグは下流に見える宣言(画像入力の可否、コンテキスト量)を決めるもので、アップストリームの実際の挙動は変わりません。", "脚本不是安全沙箱,可以访问网关所在电脑的文件和网络。不要安装来历不明的插件。": "スクリプトはサンドボックス化されておらず、ゲートウェイのコンピューター上のファイルやネットワークにアクセスできます。出所不明のプラグインはインストールしないでください。", "脚本插件共用运行环境;重试会等待当前任务结束,不会删除账号或重新安装插件。": "スクリプトプラグインは実行環境を共有します。再試行は実行中のタスクの終了を待ち、アカウントの削除やプラグインの再インストールは行いません。", "脚本签到可能包含额外任务并消耗额度。WPS 灵犀还可能发送对话、创建及解散群聊;授权后会接入现有自动签到计划。": "スクリプトのチェックインは追加タスクを実行し、クレジットを消費する場合があります。WPS 霊犀では会話の送信、グループチャットの作成と解散も行われる場合があります。許可すると既存の自動チェックイン予定に組み込まれます。", "自动": "自動", "自动刷新间隔(秒)": "自動更新の間隔(秒)", "自动安装": "自動インストール", "自动更新插件": "プラグインを自動更新", "自动检查插件更新": "プラグインの更新を自動確認", "自动维护": "自動メンテナンス", "至少要保留一个分组": "グループは最低 1 つ必要です", "补签": "補填", "补齐插件": "必要なプラグインを更新", "订阅链接必须是 http:// 或 https:// 开头": "サブスクリプションリンクは http:// または https:// で始まる必要があります", "设备授权码:{code}": "デバイス認証コード:{code}", "设备码授权时,请按网关给出的指引在官方页面确认设备授权码。没有授权地址不等于失败,可能需要在网关本机客户端完成操作;请以共享登录桥返回的状态为准。": "デバイスコード認証では、ゲートウェイの案内に従い公式ページでデバイス認証コードを確認してください。認証 URL がないことは失敗を意味しません。ゲートウェイのマシン上のクライアントで操作を完了する必要がある場合があります。共通ログインブリッジが返す状態を基準にしてください。", "设置": "設定", "设置不可隐藏(隐藏了只能清缓存找回来)": "「設定」は非表示にできません(戻すにはデータの削除が必要になります)", "设置已生效,但写入磁盘失败(重启后会恢复原设置)": "設定は適用されましたが保存できませんでした(再起動すると元に戻ります)", "设置未同步": "設定が未同期", "诊断": "診断", "诊断信息": "診断情報", "该提供商已不在运行时目录中,请返回列表重新选择": "このプロバイダーは実行時の一覧に存在しなくなりました。一覧に戻って選択し直してください。", "该登录方式没有可选项,无法提交;请更新插件或联系作者": "このログイン方式には選択肢がないため、送信できません。プラグインを更新するか、作者にお問い合わせください。", "请允许安装未知来源应用后重试": "「提供元不明のアプリ」のインストールを許可してから再試行してください", "请先在插件页授权签到及附带任务": "先にプラグインページでチェックインと付随タスクを許可してください", "请先粘贴 GitHub 令牌": "先に GitHub トークンを貼り付けてください", "请先选择有效的 OAuth 登录方式": "先に有効な OAuth ログイン方式を選択してください。", "请在 Release 页面下载后通过 TestFlight 或 App Store 安装": "Release ページからダウンロードし、TestFlight または App Store 経由でインストールしてください", "请填一个分组名": "グループ名を入力してください", "请填写订阅名称": "サブスクリプション名を入力してください", "请填写非空的凭证 JSON 对象,且不超过 256 KiB": "空でない認証情報の JSON オブジェクトを 256 KiB 以下で入力してください。", "请查看上方原因,稍后刷新重试。": "上記の理由を確認し、後で再度更新してください。", "请根据不兼容原因更新插件或网关;不会要求两者版本号一致。": "互換性エラーの内容に応じてプラグインまたはゲートウェイを更新してください。両者のバージョン番号を一致させる必要はありません。", "请求失败": "リクエストに失敗しました", "请求失败:{message}": "リクエスト失敗:{message}", "请求数": "リクエスト数", "请求日志": "リクエストログ", "请确认": "確認してください", "请稍候": "しばらくお待ちください", "请输入 {min}–{max} 之间的整数秒数": "秒数を {min}~{max} の整数で入力してください", "请选择 {label} 的有效选项": "{label} の有効な選択肢を選んでください。", "读取完成的插件会陆续显示,无需停留在此页面等待。": "取得したプラグインから順に表示します。このページを離れても読み込みは続きます。", "读取插件状态失败:{error}": "プラグイン状態の読み取りに失敗しました:{error}", "读取文件失败": "ファイルの読み取りに失敗しました", "读取消耗排序失败:{message}": "消費順序を読み込めませんでした:{message}", "读取设置失败:{error}": "設定の読み込みに失敗しました:{error}", "账号 / 登录出网代理": "アカウント / ログインの送信プロキシ", "账号不在当前队列里": "アカウントが現在のキューにありません", "账号列表响应异常": "アカウント一覧の応答が不正です", "账号已删除": "アカウントを削除しました", "账号已在全局队列第一位": "アカウントはすでにグローバルキューの先頭です", "账号排序接口不可用,请确认网关与界面已更新": "アカウント並べ替え API を利用できません。ゲートウェイと画面が更新済みか確認してください。", "账号登录方式": "アカウントのログイン方式", "趋势统计指标": "推移の指標", "趋势统计维度": "推移の集計軸", "跟随系统": "システム", "路由策略": "ルーティング戦略", "转发能力": "転送機能", "软件版本检查设置不可用": "ソフトウェア更新の確認設定を取得できません。", "输入 / 输出": "入力 / 出力", "输入这台网关的管理员账号与密码。": "このゲートウェイの管理者アカウントとパスワードを入力してください。", "运行时不内置于安装包,首次安装脚本插件时自动下载并校验。": "ランタイムはインストーラーに含まれません。スクリプトプラグインの初回インストール時に自動でダウンロードし、検証します。", "运行正常 · {url}": "正常稼働中 · {url}", "运行状态": "稼働状態", "还没有安装任何提供商插件包": "プロバイダープラグインパックがまだインストールされていません", "还没有签到记录": "チェックイン記録はまだありません", "还没有选择对话模型:先在下方选一个(或去「设置 → AI 助手」里选)。": "対話モデルが未選択です:下から選んでください(または「設定 → AI アシスタント」で選択)。", "这一版没有提供 Android 安装包:{reason}": "このバージョンには Android 用パッケージがありません:{reason}", "这一项已隐藏": "この項目は非表示です", "这一项正在显示": "この項目は表示中です", "这个包提供的提供商(可单独停用某一家)": "このパックが提供するプロバイダー(個別に無効化できます)", "这个面板没有管理员,用一把已启用的 API Key 访问(在桌面端「网关 Key」页创建)。": "このパネルには管理者がありません。有効な API Key でアクセスしてください(デスクトップ版「ゲートウェイキー」で作成)。", "这会真实发起上游请求并消耗额度": "実際にアップストリームへリクエストを送り、枠を消費します", "这台网关没有管理员,用一把已启用的 API Key 访问(在桌面端「网关 Key」页创建)。": "このゲートウェイには管理者がいません。有効な API Key でアクセスしてください(デスクトップ版の「ゲートウェイ Key」ページで作成できます)。", "这台网关还没有管理员。设置一个账号密码,之后用它登录。": "このゲートウェイにはまだ管理者がいません。アカウントとパスワードを設定し、それでログインしてください。", "这是旧插件的手动兼容入口,不代表支持任意凭证或登录方式。请仅粘贴该插件明确接受的凭证 JSON;网关会交给 account.normalize 校验,不会自动推断 Token、Cookie 或 OAuth。": "これは旧プラグイン向けの手動互換入力であり、任意の認証情報やログイン方式への対応を意味しません。プラグインが明示的に受け付ける認証情報 JSON のみを貼り付けてください。ゲートウェイは account.normalize に検証を依頼し、Token、Cookie、OAuth を自動で推測しません。", "这是真实的上游请求,与生产走同一条链路(会记账,报表排除)。": "これは実際のアップストリームリクエストで、本番と同じ経路を通ります(課金されますが、レポートからは除外)。", "这段文本作为 system 消息排在对话最前面。工具的定义与当前配置概览由网关自动附加,不用写在这里。": "この文章は system メッセージとして対話の先頭に置かれます。ツール定義と現在の設定概要はゲートウェイが自動で付加するため、ここに書く必要はありません。", "连不上插件仓库,请检查网络或代理后重试": "プラグインリポジトリに接続できません。ネットワークまたはプロキシを確認して再試行してください。", "连接已有 SAP AI Core 部署:从网关本机导入凭据文件,按资源组获取模型;不创建部署或查询额度。": "既存の SAP AI Core デプロイに接続:ゲートウェイのマシンから認証情報ファイルを取り込み、リソースグループごとにモデルを取得します。デプロイの作成や利用枠の照会は行いません。", "连接并保存": "接続して保存", "连续崩溃": "連続クラッシュ", "连通 · {ms}ms": "接続 OK · {ms}ms", "选择模型…": "モデルを選択…", "通过 API Key 接入 River 对话与在线模型目录;插件不提供余额数值。": "API Key で River の対話とオンラインモデル一覧に接続します。プラグインは残高の数値を返しません。", "通过 Magpie 原插件接入设备码登录、对话、模型目录、余额和每日签到。": "Magpie の元のプラグインを使い、デバイスコードログイン、対話、モデル一覧、残高、毎日のチェックインを接続します。", "通过社区插件接入 {providers},可在设置中管理提供商,签到计划在签到中心管理。": "コミュニティプラグインで {providers} に接続します。プロバイダーは設定で、チェックインのスケジュールはチェックインセンターで管理できます。", "部分信息未能更新,已读取的插件仍可查看。": "一部の情報を更新できませんでした。取得済みのプラグインは引き続き表示できます。", "部分插件的附带任务可能消耗额度、发送对话或创建及解散群聊。": "一部プラグインの付随タスクは、クォータを消費したり、会話を送信したり、グループチャットを作成・解散したりする場合があります。", "都不注入": "どちらも注入しない", "都不注入(助手退化为纯聊天)": "どちらも注入しない(アシスタントは純粋なチャットに)", "重启更新": "再起動して更新", "重新读取登录方式": "ログイン方式を再読み込み", "队列是一次性整表提交(后端按新顺序重编优先级),移动会连带调整其它组的相对次序。": "キューは全体を一括で送信します(バックエンドが新しい順序で優先度を振り直すため)、移動すると他のグループの相対順も変わります。", "队列是一次性整表提交;位置越靠前,路由时越先被选中。": "キューは全体を一括で送信します。位置が前ほど、ルーティング時に先に選ばれます。", "限流垫底": "レート制限で後ろへ", "隐藏 {name}": "{name} を非表示", "隐藏分组 {name}": "グループ {name} を非表示", "隐藏这一组": "このグループを非表示", "需要强制更新": "必須の更新", "需要网关 API Key": "ゲートウェイ API Key が必要です", "需要网关本机环境": "ゲートウェイのマシン上の環境が必要です", "需要补齐插件": "プラグインの更新が必要", "顺序优先": "順序優先", "首页": "ホーム", "高危": "高リスク", "高级参数(JSON)": "詳細設定(JSON)", "默认分支": "既定のブランチ", "默认跟随软件的正式版和 beta 关注选择;单独设置只影响日常更新,最低版本补齐按当前软件版本选择配套包。": "更新チャンネルは既定でアプリに従います。個別設定は通常の更新だけに適用され、必須更新では現在のアプリに対応するパッケージを選択します。", "默认跟随软件的自动检查和间隔。关闭自动检查后暂停插件自动更新;手动检查、安装和更新不受影响。": "自動確認と間隔は既定でアプリの設定に従います。自動確認をオフにするとプラグインの自動更新を停止しますが、手動での確認・インストール・更新は引き続き利用できます。", "({n} 个整组隐藏)": "({n} グループを非表示)", "(不会影响客户端登录态)": "(クライアントのログイン状態には影響しません)", "(仅显示前 20 条,共 {n} 条)": "(先頭 20 件のみ表示 · 全 {n} 件)", "(可选)": "(任意)", "(未指定)": "(未指定)", "(请下载与该平台对应的插件包)": "(このプラットフォーム向けのパックをダウンロードしてください)", "(默认问候)": "(既定の挨拶)", "Agent2API · 登录": "Agent2API · ログイン", "OpenAI 兼容网关 · 管理面板": "OpenAI 互換ゲートウェイ · 管理パネル", "Turnstile 加载或验证失败,请检查网络、浏览器拦截和域名配置后重试。": "Turnstile の読み込みまたは認証に失敗しました。ネットワーク、ブラウザーのブロック機能、ドメイン設定を確認して再試行してください。", "Turnstile 验证超时,请重试。": "Turnstile の認証がタイムアウトしました。再試行してください。", "创建账号并进入面板": "アカウントを作成してパネルへ進む", "密码": "パスワード", "当前浏览器不支持 Turnstile,请更新浏览器后重试。": "このブラウザーは Turnstile に対応していません。更新して再試行してください。", "我不是机器人": "私はロボットではありません", "无法读取登录验证设置,请刷新页面重试": "ログイン認証設定を読み取れません。ページを更新して再試行してください", "无法连接网关": "ゲートウェイに接続できません", "无法连接网关,请确认服务已启动": "ゲートウェイに接続できません。サービスが起動しているか確認してください", "机器人校验配置已变更或不完整,请刷新页面或联系管理员。": "ボット対策の設定が変更されたか、不完全です。ページを更新するか管理者に連絡してください。", "登录": "ログイン", "登录后可在「网关 Key」页为 API 客户端创建密钥": "ログイン後は「ゲートウェイキー」ページで API クライアント用のキーを作成できます", "管理员账号": "管理者アカウント", "继续": "続ける", "至少 8 位": "8 文字以上", "设置密码(至少 8 位)": "パスワードを設定(8 文字以上)", "请先勾选「我不是机器人」完成验证": "先に「私はロボットではありません」にチェックして認証を完了してください", "请填写账号与密码": "アカウントとパスワードを入力してください", "请完成人机验证后重试": "本人確認を完了してから再試行してください", "请求失败,请重试": "リクエストに失敗しました。もう一度お試しください", "请输入管理员账号与密码": "管理者アカウントとパスワードを入力してください", "重新验证": "再認証", "首次使用:创建一个管理员账号,用于登录此面板": "初回利用時:このパネルへのログイン用に管理者アカウントを作成してください", "验证中…": "検証中…", "验证失败,请重试": "検証に失敗しました。もう一度お試しください", "验证成功": "検証成功", " · 今日 {used} / {quota}": " · 今日 {used} / {quota}", " · 当前 {n}": " · 現在 {n}", " · 本周期 {used} / {quota}": " · 今周期 {used} / {quota}", " · 限流 {n}": " · レート制限 {n}", " 等": " など", "0 = 不限": "0 = 無制限", "0 = 按本家默认 {default}": "0 = 本家のデフォルト {default}", "30 秒 ~ 24 小时;手动查询会顺延下一轮": "30 秒 ~ 24 時間;手動クエリは次の周期に順延", "7 天内到期": "7 日以内に期限切れ", "7 天内到期 {amount}({count} 份)": "7日以内に失効:{amount}({count} 件)", "7天 {count}份": "7日内 {count}件", "7天 {n}": "7日以内 {n}", "API Key": "API Key", "Accio 国内版": "Accio 中国版", "Base URL": "Base URL", "Clash Verge 里还没有配置混合监听器或节点端口": "Clash Verge に混合リスナーまたはノードポートがまだ設定されていません", "Clash 出口:": "Clash 出口:", "Copilot 额度单位": "Copilot 使用枠単位", "NewAPI 个人访问令牌": "NewAPI 個人アクセストークン", "NewAPI 用户 ID": "NewAPI ユーザー ID", "OpenAI 兼容": "OpenAI 互換", "OpenAI 兼容填到 /v1;Anthropic 填根地址": "OpenAI 互換は /v1 まで、Anthropic はルートアドレスを入力", "Qoder 中国版": "Qoder 中国版", "Qoder 国际版": "Qoder 国際版", "Token 刷新接口不可用,请重新打开页面": "Token 更新機能を利用できません。ページを開き直してください。", "Token 刷新结果未确认,请刷新后核对账号状态": "Token の更新結果を確認できませんでした。一覧を再読み込みしてアカウントの状態を確認してください。", "Token 单位": "Token 単位", "Token 时": "Token 以上になったとき", "Token 消耗": "Token 消費", "Token 规则按每个账号已有的窗口消耗判定,保存不会清零;停用或清空规则不会自动启用账号。": "Token ルールは各アカウントの既存の期間内使用量で判定します。保存で使用量はリセットされず、ルールの停止・削除でアカウントは有効化されません。", "Token 限制阈值必须是大于 0 的安全整数": "Token のしきい値は 0 より大きい安全な整数で指定してください", "Token 限额": "Token 上限", "Token 限额 · 已禁用": "Token 上限 · 無効", "Token 限额 · 已跳过": "Token 上限 · スキップ", "WorkBuddy 国内版": "WorkBuddy 中国版", "WorkBuddy 国际版": "WorkBuddy 国際版", "ZCode 国内版": "ZCode 中国版", "ZCode 国际版": "ZCode 国際版", "ZCode 套餐明细 — {name}": "ZCode プラン明細 — {name}", "bigmodel_token_production 的值": "bigmodel_token_production の値", "{action}{who}": "{action}{who}", "{amount},另 {count} 份余量未知": "{amount}、ほか {count} 件は残量不明", "{body}({period})": "{body}({period})", "{cond} 时 → {action}": "{cond} のとき → {action}", "{count} 份": "{count} 件", "{count} 份仅提供比例": "割合のみ {count} 件", "{count} 份单位未知": "単位不明 {count} 件", "{count} 次": "{count} 回", "{days} 天后到期": "{days} 日後に失効", "{error}(不会自动改为直连)": "{error}(直接接続へ自動的には切り替えません)", "{error}(转发时会回退直连)": "{error}(転送時は直接接続にフォールバック)", "{groups} 家 · 显示 {rows} 行": "{groups} 社 · {rows} 行を表示", "{hours} 小时后到期": "{hours} 時間後に失効", "{label} ×{count}": "{label} ×{count}", "{label}({count})": "{label}({count})", "{message}(去该账号的「设置」里填上查询凭证即可)": "{message}(そのアカウントの「設定」でクエリ用認証情報を入力すれば解決します)", "{minutes} 分钟后到期": "{minutes} 分後に失効", "{month}月{day}日 {clock}": "{month}月{day}日 {clock}", "{name} · 分组设置": "{name} · グループ設定", "{name} 移到 {group} 组内第 {rank} 位": "{name} を {group} グループ内の {rank} 番へ移動しました", "{name} 移到第 {rank} 顺位": "{name} を全体 {rank} 番へ移動しました", "{name}的方向": "{name}の方向", "{name}({parts})": "{name}({parts})", "{name}({time} 起生效)": "{name}({time} から有効)", "{n} 个已计入": "{n} 件を合計", "{n} 个查询失败": "{n} 件の照会に失敗", "{n} 个模型 ▾": "{n} 個のモデル ▾", "{n} 个模型限流中 · 记录来自上游 429 / 限额码,到恢复时间自动解除": "{n} 個のモデルがレート制限中 · 記録はアップストリームの 429 / クォータコードによるもので、リセット時刻に自動解除", "{n} 个请求正在使用该账号(含还在下发内容的流式请求)": "{n} 件のリクエストがこのアカウントを使用中(コンテンツ配信中のストリーミングリクエストを含む)", "{n} 个读数只读到一半(读数可信但不完整)": "{n} 件は一部のみ取得(値は信頼できるが不完全)", "{n} 个读数没有绝对数(只给比例或无额度),未计入": "{n} 件は絶対値なし(割合のみ、または枠なし)のため合計に含めず", "{n} 个读数里没有可用比例,未计入": "{n} 件は利用できる割合がなく、集計していません", "{n} 个账号 · {e} 启用 · {l} 限流": "{n} 件 · 有効 {e} · レート制限 {l}", "{n} 个账号 · 启用 {e}": "{n} 件 · 有効 {e}", "{n} 个还没查到(未查询或正在查询)": "{n} 件は未取得(未照会または照会中)", "{n} 个还没查询": "{n} 件は未照会", "{n} 分钟": "{n} 分", "{n} 分钟前更新": "{n} 分前に更新", "{n} 分钟后": "{n} 分後", "{n} 天前更新": "{n} 日前に更新", "{n} 天后": "{n} 日後", "{n} 小时": "{n} 時間", "{n} 小时前更新": "{n} 時間前に更新", "{n} 小时后": "{n} 時間後", "{n} 秒": "{n} 秒", "{n} 秒前更新": "{n} 秒前に更新", "{period}窗口": "{period}ウィンドウ", "{plan}({time} 领取)": "{plan}({time} 受け取り)", "{providers} 家提供商、共 {total} 个账号。数据仍在,只是当前没有可用的插件来执行它们。": "{providers} 社のプロバイダー、計 {total} 件のアカウント。データは残っており、今それを実行できるプラグインがないだけです。", "{reason}。该账号的登录态已被上游注销,自动刷新不会再成功,请重新登录该账号": "{reason}。このアカウントのログイン状態はアップストリーム側で取り消されました。自動更新は今後成功しないため、このアカウントで再度ログインしてください。", "{scope} {used} / {quota} Token,{countdown}重置": "{scope} {used} / {quota} Token、{countdown}にリセット", "{text}过期": "{text}に期限切れ", "{text}过期({full})": "{text}に期限切れ({full})", "{time} 到期": "{time} に期限切れ", "{time} 恢复": "{time} にリセット", "{time} 生效": "{time} に有効", "{time} 领取": "{time} に受け取り", "{total} 个账号 · 启用 {enabled} · 禁用 {disabled}{limited}": "{total} 件のアカウント · 有効 {enabled} · 無効 {disabled}{limited}", "{tried}探测并领取官方每日登录赠送的套餐积分(到账进套餐积分,不增加福利模型 token 池)": "{tried}公式のデイリーログイン特典のプラン積分を検出して受け取る(到着分はプラン積分に入り、特典モデルの token プールは増えません)", "{unit}余量未知({count} 份)": "{unit}の残量不明({count} 件)", "{verb}完成:成功 {ok} 个,失败 {fail} 个({detail}{more})": "{verb}完了:成功 {ok} 件、失敗 {fail} 件({detail}{more})", "{verb}完成:成功 {ok} 个,未变更 {unchanged} 个,跳过 {skip} 个,失败 {fail} 个": "{verb}完了:変更 {ok} 件、変更なし {unchanged} 件、スキップ {skip} 件、失敗 {fail} 件", "✅ {ok}/{total} 个出口可用": "✅ {ok}/{total} 個の出口が利用可能", "✅ {verb}完成:共 {count} 个账号": "✅ {verb}完了:合計 {count} アカウント", "✅ 优先级已改为 {n}": "✅ 優先度を {n} に変更しました", "✅ 出口可用": "✅ 出口は利用可能", "✅ 已保存:{note}": "✅ 保存しました:{note}", "✅ 已启用": "✅ 有効化しました", "✅ 已启用 {n} 个账号": "✅ {n} 件のアカウントを有効化しました", "✅ 已导出 {count} 个账号文件": "✅ {count} 件のアカウントファイルをエクスポートしました", "✅ 已更新 {n} 个账号的余额{suffix}": "✅ {n} アカウントの残高を更新しました{suffix}", "✅ 已更新余额": "✅ 残高を更新しました", "✅ 已清除 API Key(该账号现在没有凭证,转发会被跳过)": "✅ API Key を消去しました(このアカウントには認証情報がなく、転送はスキップされます)", "✅ 已清除 {model} 的限流标记": "✅ {model} のレート制限マークを消去しました", "✅ 已清除余额查询凭证": "✅ 残高クエリ用認証情報を消去しました", "✅ 已清除查询凭证": "✅ 照会用認証情報をクリアしました", "✅ 已清除该账号全部限流标记": "✅ このアカウントのレート制限マークをすべて消去しました", "✅ 已禁用": "✅ 無効化しました", "✅ 已禁用 {n} 个账号": "✅ {n} 件のアカウントを無効化しました", "✅ 已重新读取 Clash Verge 配置": "✅ Clash Verge の設定を再読み込みしました", "✅ 账号设置已保存": "✅ アカウント設定を保存しました", "✅ 顺序已保存": "✅ 順序を保存しました", " 出口 IP {ip}": " 出口 IP {ip}", "、": "、", "、补官方会话头、请求体补两个占位工具(上游免费档的三道校验)。": "、公式セッションヘッダーを補完し、リクエストボディに 2 つのプレースホルダーツールを補完します(アップストリーム無料枠の 3 つの検証)。", "「{name}」已在「网络代理」页禁用,请先启用它或换一条": "「{name}」は「ネットワークプロキシ」ページで無効になっています。先に有効にするか、別のものを選んでください。", "「{name}」开着排序规则:先关掉规则,才能手动调整组内顺序": "「{name}」は並べ替えルールが有効です。グループ内の順序を手動で調整する前にルールをオフにしてください", "「{name}」本身": "「{name}」自体", "「已保存的代理」": "「保存済みのプロキシ」", "「网络代理」页还没有出口 —— 去那里新增,或在「订阅管理」里点「同步 Clash Verge」把 Clash 的出口导进来": "「ネットワークプロキシ」ページにまだ出口がありません —— そこで追加するか、「サブスク管理」で「Clash Verge を同期」をクリックして Clash の出口をインポートしてください", "「网络代理」页还没有出口 —— 去那里添加一个 HTTP 或 SOCKS5 地址": "「ネットワークプロキシ」ページに HTTP または SOCKS5 アドレスを追加してください。", "「网络代理」页还没有出口 —— 去那里添加手动地址或同步 Clash Verge 的端点": "まだプロキシがありません。「ネットワークプロキシ」ページで手動アドレスを追加するか、Clash Verge のエンドポイントを同期してください。", "「网络代理」页里每个启用的出口轮流使用;之后新加的出口自动加入": "「ネットワークプロキシ」ページで有効な出口を順番に使います。あとから追加した出口も自動的に含まれます", "一般不用填": "通常は入力不要", "万": "万", "上一条规则相同时才比较下一条;想优先按余额消耗,请把可用余额移到第一位。": "前のルールで同順位の場合のみ次のルールを比較します。残高を優先するには「利用可能残高」を先頭に移動してください。", "上次成功查询:{time}": "最後に取得できた日時:{time}", "上游拒绝了本次余额查询": "上流が今回の残高照会を拒否しました", "上游提供了补充说明;未显示原始正文": "上流から補足説明が提供されました。元の本文は表示しません", "上游暂时限制余额查询,请稍后重试": "上流が残高照会を一時的に制限しています。後で再試行してください。", "上游未给总量,画不出剩余比例": "アップストリームが総量を返さないため、残量比率を描画できません", "上游未返回可识别额度窗口": "上流から識別可能な使用枠期間が返されませんでした", "上游本来不要凭证时(本地 Ollama、OpenCode Zen 的免费档)勾上这一项:账号会被正常选路;只把 Key 留空": "アップストリーム本来認証情報が不要な場合(ローカル Ollama、OpenCode Zen の無料枠)はこの項目にチェックを入れてください:アカウントは通常どおりルーティング対象になり、Key は空のままにします", "上游没有提供此额度的分桶用量,当前使用本地估算保护;在其他客户端产生的消耗不会计入。": "上流からこの枠の個別使用量が提供されないため、ローカル推計で保護します。他のクライアントでの使用量は含まれません。", "上游的 API Key。留空 = 不修改(改凭证不会换账号 id);要清掉已配的凭证用右边的「清除」": "アップストリームの API Key。空欄 = 変更しない(認証情報を変更してもアカウント id は変わりません);設定済みの認証情報を消去するには右の「消去」を使います", "上游的余额读数里没有这个套餐的额度桶,剩余量读不到;余额列显示的是套餐发放的权益额度,不是剩余量": "上流の残高読み取り値にはこのプランの枠(バケット)がなく、残量は取得できません。残高列に表示されるのはプランの付与権益であり、残量ではありません", "上游返回 {status}": "アップストリームが {status} を返却", "上游限制 · 已禁用": "上流の制限 · 無効化済み", "上游额度无上限": "上流の使用枠は無制限です", "上面所有规则都相同时,保持你拖出来的顺序": "上のすべてのルールが同じ場合、ドラッグした順序を維持します", "不到 1 分钟": "1 分未満", "不到 1 分钟到期": "1分未満で失効", "不可用:{error}": "使用不可:{error}", "不足 {n}": "{n} 未満", "不限": "無制限", "与队列里的上一个账号交换优先级(可能是另一家的账号)": "キューの 1 つ前のアカウントと優先度を交換(別プロバイダーのアカウントの場合もあります)", "与队列里的下一个账号交换优先级(可能是另一家的账号)": "キューの 1 つ後のアカウントと優先度を交換(別プロバイダーのアカウントの場合もあります)", "严格按消耗顺序使用账号需选择「顺序优先」;轮询、会话粘性及账号保护仍按原设置生效。": "消費順序どおりにアカウントを使用するには「順序優先」を選択してください。ローテーション、セッション固定、アカウント保護は既存の設定に従います。", "个": "個", "个 · 共": "個 · 合計", "个人": "個人", "主凭证没有固定到期时刻,到期由网关自动续期或本来就不会过期": "主となる資格情報に固定の有効期限はありません(期限切れはゲートウェイが自動更新します。そもそも期限がない場合もあります)", "主机": "ホスト", "亿": "億", "仅将优先级调整到全局第一位,不改变启用状态": "優先度をグローバルキューの先頭に調整するだけで、有効状態は変更しません", "仅按手动顺序": "手動順序のみ", "仅统一修改现有规则的开关,保留阈值、动作和重置方式;不改变账号的启用状态。": "既存ルールのオン・オフだけを統一し、しきい値、アクション、リセット方式、アカウントの有効状態は保持します。", "仅账号管理": "アカウント管理のみ", "仅跳过命中条件的模型,其他模型仍可转发;点击查看限制器": "条件に該当したモデルだけをスキップし、他のモデルは引き続き転送できます。クリックしてリミッターを確認します。", "今天 {clock}": "今日 {clock}", "今天 {time}": "今日 {time}", "今天到期 {amount}({count} 份)": "本日失効:{amount}({count} 件)", "今天还没有领过:上面「可领取的套餐」里逐份点「领取」即可": "本日はまだ受け取っていません。上の「受け取れるプラン」で各プランの「受け取る」を押してください。", "今天(北京时间 {day})已由官方确认到账 {n} 项;领到的是套餐赠送积分,不增加福利模型的 token 池;按自然日重置,明天可再领": "今日(北京時間 {day})は {n} 件の到着が公式に確認済み;受け取ったのはプラン特典積分で、特典モデルの token プールは増えません;自然日でリセットされ、明日また受け取れます", "今天(北京时间 {day})已试过 {n} 次但官方尚未确认到账,": "今日(北京時間 {day})は {n} 回試しましたが公式の到着確認はまだです、", "今天(北京时间)已领取 {n} 份:{plans}": "本日(北京時間)受け取り済み {n} 件:{plans}", "今天(本地 0 点重置)": "今日(ローカル 0 時にリセット)", "今日剩 {n} 分钟": "本日残り {n} 分", "今日剩 {n} 小时": "本日残り {n} 時間", "今日发放": "本日の付与額", "今日已用": "本日の使用量", "今日已领": "本日受取済み", "代理": "プロキシ", "代理不可用:{error}": "プロキシ使用不可:{error}", "代理不可用:{error}(不会自动改为直连);选「自定义代理…」去修改": "プロキシを利用できません:{error}(直接接続へ自動的には切り替えません)。「カスタムプロキシ…」で修正してください", "代理不可用:{error}(转发时会回退直连);选「自定义代理…」去修改": "プロキシ使用不可:{error}(転送時は直接接続にフォールバック);「カスタムプロキシ…」を選んで変更してください", "代理列表响应异常({type})": "プロキシ一覧のレスポンス異常({type})", "代理列表读取失败(重试中)": "プロキシ一覧の読み込みに失敗(再試行中)", "代理已更新": "プロキシを更新しました", "代理异常": "プロキシ異常", "代理方式": "プロキシ方式", "代理池响应异常({type})": "プロキシプールのレスポンス異常({type})", "代理端口必须是 1-65535 的整数": "プロキシポートは 1-65535 の整数でなければなりません", "以下 {count} 个账号不支持余额查询,本次会跳过:{names}": "次の {count} 件は残高照会に非対応のためスキップします:{names}", "企业": "企業", "优先级": "優先度", "优先级 {priority} 已被同一提供商的「{name}」占用,请换一个数值": "優先度 {priority} は同一プロバイダーの「{name}」が使用中です。別の数値に変更してください", "优先级必须是数字": "優先度は数値でなければなりません", "优先级未保存:{message}": "優先度は未保存:{message}", "会员共享额度": "会員共通の使用枠", "会员共享额度不是本账号独立额度,不与其他窗口相加;未证实团队独立额度": "会員共通の使用枠はこのアカウント専用ではなく、他の期間とは合算しません。チーム専用枠は未確認です。", "会被当成「未配置凭证」而跳过。": "「認証情報未設定」と見なされスキップされます。", "伪装 OpenCode 官方客户端": "OpenCode 公式クライアントを偽装", "伪装 OpenCode 官方客户端(OpenCode Zen 免费档要它才放行)": "OpenCode 公式クライアントを偽装(OpenCode Zen の無料枠はこれがないと通しません)", "余量 {value}": "残量 {value}", "余额": "残高", "余额 < {threshold}": "残高 < {threshold}", "余额不足": "残高不足", "余额不足 · 已跳过": "残高不足 · スキップ", "余额低于": "残高が", "余额低于阈值时的提示": "残高がしきい値を下回ったときに通知", "余额低于阈值,转发时会跳过该账号(余额回升自动恢复)": "残高がしきい値を下回ると、転送時にこのアカウントをスキップします(残高が戻れば自動復帰)", "余额低于限制器的阈值,转发时会跳过该账号(余额回升自动恢复)": "残高がリミッターのしきい値を下回ると、転送時にこのアカウントをスキップします(残高が戻れば自動復帰)", "余额列读数的自动刷新;也是「限制器」余额规则的数据来源。": "残高列の読み取り値の自動更新;「リミッター」の残高ルールのデータソースでもあります。", "余额响应为空": "残高レスポンスが空", "余额大优先": "残高が多い順", "余额小优先": "残高が少ない順", "余额已更新": "残高を更新しました", "余额查询凭证": "残高クエリ用認証情報", "余额查询凭证已失效,请刷新查询登录态": "残高照会用の認証情報が失効しました。照会用のログイン状態を更新してください。", "余额查询失败:{message}": "残高クエリ失敗:{message}", "余额查询接口不可用,请更新网关后重试": "残高照会を利用できません。ゲートウェイを更新して再試行してください。", "余额查询接口返回异常": "残高照会から無効な応答が返されました。", "余额查询方案:{label}": "残高照会の方式:{label}", "余额沿用现有口径;Token 按重置方式内的累计消耗判定(切换类型会清空阈值)": "残高は既存の基準を踏襲;Token はリセット方式内の累計消費で判定(タイプを切り替えるとしきい値はクリアされます)", "余额详情": "残高の詳細", "使用套餐": "利用プラン", "使用最近一次成功查询的总余额,随余额刷新调整;查询失败保留上次读数,不额外增加查询频率。": "最後に成功した照会の合計残高を使用し、残高更新に合わせて順序を調整します。照会失敗時は前回の値を保持し、照会頻度は増やしません。", "保存失败:{error}": "保存失敗:{error}", "保存条件": "条件を保存", "保存规则": "ルールを保存", "保留 {n} 个账号": "{n} 件のアカウントを保持", "保留各账号原有规则,只追加下面的规则;完全相同的规则不会重复添加。": "各アカウントの既存ルールを保持して下のルールを追加します。同一ルールは重複追加しません。", "修改代理": "プロキシを変更", "停止旧查询,按当前配置重新查询余额": "前の照会を停止し、現在の設定で残高を再照会します", "停用全部规则": "全ルールを停止", "免费版": "無料版", "全局一条队列:数值越小越先用,不分提供商": "グローバルで 1 本のキュー:数値が小さいほど優先、プロバイダーは問いません", "全局唯一:所有提供商的账号都不能重号,数值越小越先用": "グローバルで一意:すべてのプロバイダーのアカウントで重複不可、数値が小さいほど優先", "全局队列": "グローバルキュー", "全局队列第 {position} 位,共 {total} 位": "グローバルキュー {position} 位(全 {total} 位)", "全选 / 取消全选当前筛选结果(与批量栏同一个选择)": "現在の絞り込み結果を全選択 / 全解除(一括操作バーと同じ選択)", "全选当前筛选结果({n} 个)": "現在の絞り込み結果を全選択({n} 個)", "全部代理节点(推荐)": "すべてのプロキシノード(推奨)", "全部启用中的账号将被{what}": "有効中のすべてのアカウントが{what}されます", "全部启用({n})": "すべて有効化({n})", "全部清除": "すべて消去", "全部禁用({n})": "すべて無効化({n})", "全部({n})": "すべて({n})", "共有 {n} 个账号暂未显示": "{n} 件のアカウントが非表示です", "关闭则不参与转发(余额查询照常,见「查询设置」)": "オフにすると転送に参加しません(残高クエリは通常どおり、詳細は「クエリ設定」)", "关闭后,该账号转发失败时返回本次错误,不再顺延其他账号。禁用、无凭证和限制器等保护仍生效。": "無効の場合、このアカウントの転送失敗時はエラーを返し、他のアカウントへ切り替えません。無効化、認証情報不足、リミッターなどの保護は引き続き有効です。", "关闭自动查询后,余额限制器只能使用上次读数;手动查询仍可用。": "自動照会をオフにすると残高リミッターは前回の値で判定します。手動照会は引き続き利用できます。", "内消耗 ≥": "内の消費が", "再领一次": "もう一度受け取る", "冻结余额": "凍結残高", "凭证与套餐": "認証情報とプラン", "凭证已过期,转发时会先刷新": "認証情報が期限切れです。転送時に先に更新されます", "凭证已过期;能否续期取决于登录方式,本机引用需由原客户端处理": "認証情報が期限切れです。更新できるかはログイン方法によります。ローカル参照は元のクライアントで管理してください", "出口": "出口", "出网代理": "送信プロキシ", "分窗口额度": "期間別クォータ", "分组设置": "グループ設定", "分钟": "分", "刚刚更新": "たった今更新", "删除各账号的全部限制规则,执行前会再次确认。": "各アカウントの制限ルールをすべて削除します。実行前に再確認します。", "删除提供商": "プロバイダーを削除", "删除组": "グループを削除", "删除账号": "アカウントを削除", "删除这条账号记录(不会影响客户端自己的登录态;之后可再点「导入桌面端登录态」加回来)": "このアカウント記録を削除(クライアント自身のログイン状態には影響しません;後で「デスクトップ版のログイン状態をインポート」をクリックすれば戻せます)", "删除选中的账号": "選択したアカウントを削除", "到恢复时间后自动解除,无需手动操作": "リセット時刻になると自動解除、手動操作は不要", "到期 {date}": "有効期限 {date}", "到期 {time}": "期限 {time}", "到期 近→远": "期限 近→遠", "到期 远→近": "期限 遠→近", "到期时间": "有効期限", "刷新 Token": "Token を更新", "刷新 Token 完成:成功 {ok} 个,跳过 {skip} 个,失败 {fail} 个": "Token 更新完了:成功 {ok} 件、スキップ {skip} 件、失敗 {fail} 件", "刷新 Token:已处理 {completed}/{total} 个,当前账号:{name}": "Token 更新中:{completed}/{total} 件処理済み、現在のアカウント:{name}", "刷新列表": "一覧を更新", "刷新套餐与额度": "プランと使用枠を更新", "刷新账号列表失败,当前仍显示上一次成功读取的数据:{message}": "アカウント一覧の更新に失敗しました。最後に取得できたデータを表示しています:{message}", "刷新账号列表失败:{message}": "アカウント一覧の更新に失敗しました:{message}", "剩 {left} / {total}{unit}": "残り {left} / {total}{unit}", "剩 {n} 分钟": "残り {n} 分", "剩 {remaining}": "残り {remaining}", "剩 {remaining} / {total}": "残り {remaining} / {total}", "剩不到 1 分钟": "残り 1 分未満", "剩余 {percent}%": "残り {percent}%", "剩余比例": "残りの割合", "剩余额度": "残りの使用枠", "加载异常": "読み込み失敗", "北京时间(UTC+8)": "北京時間(UTC+8)", "协议": "プロトコル", "即将到期 {count} 份": "失効間近 {count} 件", "即将过期 {n}": "失効間近 {n}", "历史余额,尚未按新配置验证": "以前の残高です。新しい設定ではまだ確認されていません", "原代理来源已下线,请选择已保存的代理、自定义地址或直连": "以前のプロキシ接続元は提供終了です。保存済みプロキシ、カスタムアドレス、または直接接続を選択してください。", "去「插件」页": "プラグインを開く", "去「插件」页启用": "「プラグイン」で有効化", "去「插件」页安装": "「プラグイン」でインストール", "去启用": "有効にする", "去安装": "インストール", "又不勾": "チェックしないと", "取消余额查询": "残高照会をキャンセル", "取消查询": "照会をキャンセル", "取消查询失败:{message}": "照会のキャンセルに失敗:{message}", "取消选择": "選択を解除", "另有 {n} 个已勾选账号被当前筛选隐藏,仍会参与操作": "他に {n} 個のチェック済みアカウントが現在の絞り込みで非表示です。操作の対象には含まれます", "另有 {n} 个账号因提供商插件未就绪,暂未显示": "ほかに {n} 件のアカウントが、プロバイダープラグインの準備ができていないため非表示です", "只修改本次选择的设置,不影响备注、凭证、转发顺序或其他设置。": "選んだ設定だけを変更し、ラベル、認証情報、転送順序、その他の設定は保持します。", "只比较同一家、同单位的数值余额;未知、比例和无限额度不作为零余额,有明确余额的账号优先。": "同じプロバイダー・同じ単位の数値残高のみを比較します。不明、割合、無制限枠は残高ゼロとみなさず、残高が明確なアカウントを優先します。", "只重试临时故障;次数与整轮时间上限任一用尽即停止,凭证错误不重试。": "一時的な障害のみ再試行します。回数または全体の制限時間に達すると停止し、認証情報のエラーは再試行しません。", "可添加多条;同类规则也允许并存(例如一条按余额、两条不同重置方式的 Token)": "複数追加できます;同種のルールの併存も可能(例:残高によるもの 1 件、リセット方式が異なる Token のもの 2 件)", "可用 {total}": "利用可能 {total}", "可用 {value}": "利用可能 {value}", "可用 {value} {unit}": "利用可能 {value} {unit}", "可用余额": "利用可能残高", "可用合计": "利用可能合計", "可用最低": "最低利用可能", "可留空:新版请求头只认令牌;旧版会把用户 ID 放进 New-Api-User 头": "空欄可:新しい版はトークンのみで、旧版はユーザー ID を New-Api-User ヘッダーに入れます", "可领取的套餐": "受け取れるプラン", "各窗口独立限制请求,不相加为总余额。": "各期間は個別にリクエストを制限するため、合計残高として加算しません。", "同提供商内暂无其他账号占用优先级": "同一プロバイダー内で優先度を使用している他のアカウントはありません", "同提供商已占用:{names}": "同一プロバイダーで使用中:{names}", "名称": "名称", "后续加入": "今後追加予定", "含 {n} 个不限额度账号,合计记为 ∞": "無制限のアカウントを {n} 件含むため、合計は ∞ と表示", "启动中…": "開始中…", "启用全部规则": "全ルールを有効化", "启用插件包后自动回来": "プラグインパックを有効にすると自動で戻ります", "启用状态": "有効状態", "启用该规则": "このルールを有効化", "启用该账号": "このアカウントを有効化", "启用这一组里的全部账号(含被筛选隐藏的)": "このグループの全アカウントを有効化します(フィルタで非表示のものも含む)", "启用这家提供商后自动回来": "このプロバイダーを有効にすると自動で戻ります", "周期": "周期", "周期 Token": "周期 Token", "周期单位": "周期単位", "命中条件的模型": "条件に該当したモデル", "商汤日日新控制台的登录密码": "SenseNova コンソールのログインパスワード", "商汤日日新控制台的登录账号": "SenseNova コンソールのログインアカウント", "固定兜底,不受开关影响": "固定のフォールバック(スイッチの影響を受けません)", "固定周期": "固定周期", "在 NewAPI 站点「个人设置」里生成的访问令牌": "NewAPI サイトの「個人設定」で発行したアクセストークン", "在列表里拖:拖分组带调整整组顺位,拖行首把手调整组内先后(顺序由拖拽表达,不再填数字)": "リスト内でドラッグ:グループバーをドラッグでグループ全体の順位、行頭のハンドルをドラッグでグループ内の順序を調整します(順序はドラッグで表現、数値入力は廃止)", "在账号设置的「基本」分组里设置该账号同时最多处理的请求数": "アカウント設定の「基本」グループで、このアカウントが同時に処理する最大リクエスト数を設定します", "地址与端口由「网络代理」页管理:那边改一次、测一次,所有引用它的账号一起生效": "アドレスとポートは「ネットワークプロキシ」ページで管理:そこで 1 回変更・テストすれば、参照しているすべてのアカウントにまとめて反映されます", "基本": "基本", "填入系统代理": "システムプロキシを入力", "备注名 / 启用 / 代理": "ラベル名 / 有効 / プロキシ", "备注名 {name}": "ラベル名 {name}", "备注名不能为空": "ラベル名を空にすることはできません", "备注名已更新": "ラベル名を更新しました", "复制当前设置": "現在の設定をコピー", "复制自账号": "コピー元アカウント", "失败 {count} 个:": "失敗 {count} 件:", "失败后允许换号": "失敗後のアカウント切り替えを許可", "失败重试次数": "失敗時の再試行回数", "失败重试次数必须是 0~{max} 的整数": "再試行回数は 0〜{max} の整数で指定してください", "套餐 {name}": "プラン {name}", "套餐实例不能跨账号复制,请改用通用额度或本地保护条件": "プランのインスタンスは別のアカウントへコピーできません。共通の使用枠またはローカル保護の条件を使用してください。", "套餐尚未生效或已经到期": "プランはまだ有効になっていないか、期限切れです", "套餐池": "プランプール", "套餐池的推理端点要求每条请求带一个阿里云验证码令牌;令牌由本应用在后台静默铸造,界面关闭时无法铸造": "プランプールの推論エンドポイントはリクエストごとに Aliyun CAPTCHA トークンを必要とします;トークンは本アプリがバックグラウンドで静かに生成し、UI を閉じている間は生成できません", "套餐池(Start Plan)": "プランプール(Start Plan)", "套餐池(Start Plan)— 走 zcode.z.ai 端点,消耗 ZCode 套餐池的额度(新用户体验额度 / 活动领取)": "プランプール(Start Plan)— zcode.z.ai のエンドポイントを使用し、ZCode プランプールのクォータ(新規ユーザーの体験クォータ / イベント受け取り分)を消費", "套餐积分的重置日期": "プラン積分のリセット日", "存在延迟计量信息,无法据此推算当前余额": "遅延した計測情報から現在の残高を推定することはできません", "它会改写请求体": "リクエストボディを書き換えます", "官方限时活动": "公式期間限定キャンペーン", "实际阈值:{value} Token": "実際のしきい値:{value} Token", "对话 token": "対話 token", "对话请求": "チャットリクエスト", "导出文件包含登录凭证,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "エクスポートファイルにはログインに使用できる認証情報が含まれます。安全に保管し、外部への共有や公開場所へのアップロードはしないでください。", "导出未返回结果": "エクスポート結果が返されませんでした。", "导出本组全部账号,每个账号一个 JSON 文件(含被筛选隐藏的)": "このグループの全アカウントを個別の JSON ファイルに出力します(フィルターで非表示のものも含む)", "导出本组账号": "このグループをエクスポート", "将作用于以下账号": "以下のアカウントに適用されます", "将用草稿中的 {rules} 条规则替换 {count} 个账号的全部限制规则,原有规则不会保留。确定继续?": "{count} 件の全制限ルールを下書きの {rules} 件に置き換えます。既存ルールは保持されません。続行しますか?", "将这个账号及其登录凭证保存为单独的 JSON 文件": "このアカウントと認証情報を個別の JSON ファイルに保存します", "小时": "時間", "小浣熊": "小浣熊", "尚未查询该账号的余额": "このアカウントの残高はまだクエリしていません", "尝试领取": "受け取りを試す", "展开": "展開", "展开全部": "すべて展開", "展开全部分组": "全グループを展開", "展开或收起(默认收起)": "展開または折りたたみ(既定は折りたたみ)", "展开这一组": "このグループを展開", "已保存的代理": "保存済みのプロキシ", "已停用": "無効", "已发起 {count} 个账号文件的下载,请在浏览器下载列表确认": "{count} 件のアカウントファイルのダウンロードを開始しました。ブラウザーのダウンロード一覧で確認してください。", "已取消查询": "照会をキャンセルしました", "已启用 {name}": "「{name}」を有効にしました", "已启用自动排序,组内拖动已锁定;关闭全部规则可恢复原手动顺序。": "自動並べ替えが有効なため、グループ内のドラッグはロックされています。すべてのルールを無効にすると元の手動順序に戻ります。", "已启用,点击禁用(不参与转发)": "有効中、クリックで無効化(転送に参加しません)", "已在全局队列第一位": "すでにグローバルキューの先頭です", "已复制到草稿,执行后才会应用到所选账号": "下書きにコピーしました。実行すると選択したアカウントに適用されます", "已导出 {count} 个账号文件,{failed} 个未导出:{reason}": "{count} 件のアカウントファイルをエクスポートしました。{failed} 件は未出力です:{reason}", "已是首选": "すでに最優先です", "已暂停验证,需要时请手动重试": "認証は一時停止しています。必要なときに手動で再試行してください。", "已更新 {ok}/{total} 个账号,{failed} 个失败": "{ok}/{total} アカウントを更新、{failed} 件失敗", "已查询": "取得済み", "已用 {used}": "使用済み {used}", "已用 {used} / 共 {total}": "使用済み {used} / 全体 {total}", "已用完 / 已过期": "使い切り / 期限切れ", "已用比例": "使用済みの割合", "已用额度": "使用済みの枠", "已禁用": "無効", "已禁用 {name}": "「{name}」を無効にしました", "已禁用,点击启用": "無効中、クリックで有効化", "已筛选 {n} 项": "{n} 件を表示中", "已被「{name}」占用": "「{name}」が使用中", "已触发": "発動済み", "已触发 · 账号已禁用": "発動済み · アカウント無効", "已设为首选": "最優先に設定しました", "已设置": "設定済み", "已跳过{current}": "スキップ{current}", "已跳过{usage}{countdown}": "スキップ{usage}{countdown}", "已达上限{usage}": "上限到達{usage}", "已过期": "期限切れ", "已过期({time})": "期限切れ({time})", "已选": "選択済み", "已配置,留空则不修改": "設定済み、空欄なら変更しません", "已限流": "レート制限中", "已领到、还没到生效时间的套餐(生效后余额列会按它显示):\n{lines}": "受け取り済みで、まだ有効になっていないプラン(有効になると残高列に表示されます):\n{lines}", "并发上限": "同時接続上限", "并发上限 0~{max};CodeArts 等有默认值的家填 0 即按本家默认;达到上限的账号会被跳过、请求转给其他账号": "同時接続上限 0~{max};デフォルト値のあるプロバイダー(CodeArts など)は 0 を指定するとそのデフォルトになります;上限に達したアカウントはスキップされ、リクエストは他のアカウントに回されます", "并发上限 0~{max};达到上限的账号会被跳过、请求转给其他账号": "同時接続上限 0~{max};上限に達したアカウントはスキップされ、リクエストは他のアカウントに回されます", "并发上限 0~{max};达到上限的账号跳过、请求转给其他账号(原列表 ⋯ 菜单的「并发上限」入口已并入这里)": "同時接続上限 0~{max};上限に達したアカウントはスキップされ、リクエストは他のアカウントに回されます(旧リストの ⋯ メニューの「同時接続上限」はここに統合されました)", "并发上限 填 0 即按本家默认 {default};填 1 或 2 就按填的算,更大的数会被本家上限截断(原列表 ⋯ 菜单的「并发上限」入口已并入这里)": "0 を指定するとこのプロバイダーのデフォルト({default})になります;1 や 2 はそのまま適用され、それより大きい値はプロバイダー側の上限で切り詰められます(旧リストの ⋯ メニューの「同時接続上限」はここに統合されました)", "并发上限必须是 0~{max} 的整数": "同時接続上限は 0~{max} の整数でなければなりません", "并发上限:{value}": "同時接続上限:{value}", "开启后,网关按 OpenCode 官方 CLI 的形状发请求:没填 Key 的账号用匿名凭证": "オンにすると、ゲートウェイは OpenCode 公式 CLI の形式でリクエストを送信します:Key を入力していないアカウントの匿名認証情報は", "开始 {time}": "開始 {time}", "当": "条件", "当前不符合资格": "現在は対象外", "当前不需要验证码令牌": "現在、CAPTCHA トークンは不要です", "当前代理不可用,请重新选择": "現在のプロキシは利用できません。選び直してください。", "当前代理不可用:{error}(不会自动改为直连)": "現在のプロキシを利用できません:{error}(直接接続へ自動的には切り替えません)", "当前代理不可用:{error}(转发时会回退直连)": "現在のプロキシは使用不可:{error}(転送時は直接接続にフォールバック)", "当前余额 {n};与余额列同一数字口径,严格小于才触发(等于阈值仍可用)": "現在の残高 {n};残高列と同じ数値基準で、厳密に下回った場合のみ発動(しきい値と同じなら利用可能)", "当前可手动调整组内顺序。": "現在、グループ内の順序を手動で変更できます。", "当前可用 ∞(不参与余额不足判定)": "現在利用可能 ∞(残高不足の判定対象外)", "当前客户端不支持逐账号导出,请更新客户端": "このクライアントはアカウントごとのエクスポートに対応していません。更新してください。", "当前已经是默认规则": "すでに既定のルールです", "当前排序规则:{rules}。点击调整": "現在の並べ替えルール:{rules}。クリックして調整", "当前未发现本期活动,不代表账号不符合资格": "現在のキャンペーンは見つかりませんでした。アカウントに資格がないことを意味するものではありません。", "当前没有任何模型处于限流中": "現在レート制限中のモデルはありません", "当前没有可领取的套餐(活动期内每天发一份,明天可再领)": "現在受け取れるプランはありません(キャンペーン期間中は毎日 1 件配布されます。明日また受け取れます)", "当前没有限流中的模型。": "現在レート制限中のモデルはありません。", "当前筛选下 {n} 个账号的百分比读数不能相加,取最低的剩余比例(随筛选、搜索变化,不受分页影响)": "現在の絞り込みで表示中の {n} 個のアカウントの割合表示は合算できないため、最も低い残り割合を表示します(絞り込み・検索で変化、ページ送りの影響なし)", "当前筛选下 {n} 个账号的额度概览(随筛选、搜索变化,不受分页影响)": "現在の絞り込みに含まれる {n} 個のアカウントの利用枠概要(絞り込み・検索で変化し、ページ送りの影響は受けません)", "当前筛选下没有账号": "現在の条件に一致するアカウントはありません", "当前筛选条件下没有账号": "現在の絞り込み条件に該当するアカウントはありません", "当前网关不支持余额排序,请先更新网关": "このゲートウェイは残高順の並べ替えに対応していません。先にゲートウェイを更新してください。", "当前规则:{rules}。": "現在のルール:{rules}。", "当前规则:{rules}。自动排序生效时,组内拖动把手会锁定;关掉全部规则即回到手动顺序。": "現在のルール:{rules}。自動並べ替えが有効な間はグループ内のドラッグハンドルがロックされます。すべてのルールをオフにすると手動順序に戻ります。", "当前视图不能调整组顺位:{reason} 之后再拖动": "この表示ではグループ順位を変更できません:{reason} にしてからドラッグしてください", "当前钩子仅提供套餐与周期,未提供余额数值": "現在の hook はプランと期間のみを提供し、残高の数値はありません", "当前:{label}(Clash Verge 直接引用);可在「网络代理」页同步端点后改选": "現在:{label}(Clash Verge の直接参照)。「ネットワークプロキシ」ページで同期したエンドポイントに切り替えられます。", "当前:{label}(未经过代理池 —— 可在「网络代理」页把出口同步进池后来这里改选)": "現在:{label}(プロキシプールを経由していません —— 「ネットワークプロキシ」ページで出口をプールに同期してからここで選び直せます)", "当前:{label}(未经过代理池 —— 可在「网络代理」页添加相同地址后来这里改选)": "現在:{label}(プロキシプール未使用。「ネットワークプロキシ」ページに同じアドレスを追加し、ここで選択できます)", "当前:{label}(每条请求换一个出口);「自定义代理…」打开完整设置": "現在:{label}(リクエストごとに出口が変わります);「カスタムプロキシ…」で詳細設定を開きます", "当前:{label};选项来自「网络代理」页;「自定义代理…」打开完整设置": "現在:{label};選択肢は「ネットワークプロキシ」ページから;「カスタムプロキシ…」で詳細設定を開きます", "当前:{value}": "現在:{value}", "待定": "未定", "待生效": "有効待ち", "待生效 {n} 份": "有効待ち {n} 件", "待生效 {time}": "{time} から有効", "必填": "必須", "必填;留空 = 不修改,清除用右边的按钮": "必須。空欄なら現状を維持、クリアは右のボタンで", "总剩余 {total} · 套餐 {plan} · 奖励 {bonus}": "残り合計 {total} · プラン {plan} · ボーナス {bonus}", "总积分": "利用可能ポイント合計", "总积分是当前可用积分的汇总,与余额列一致;不重复累加汇总行,不包含 Token、次数或其他单位的额度。": "現在利用可能なポイントの合計で、残高列と同じ値です。集計行を二重に加算せず、Token、回数、その他の単位の使用枠は含みません。", "总量 {value}": "総量 {value}", "恢复时间未知": "リセット時刻不明", "恢复默认:仅开启最快到期优先": "既定に戻す:期限が近い順のみ有効", "恢复默认:仅按手动顺序": "既定に戻す:手動順序のみ", "恢复默认:最快到期优先,账号添加时间关闭": "既定に戻す:期限が近い順、追加日時による並べ替えはオフ", "我的套餐": "自分のプラン", "或": "または", "所有提供商都有这个字段": "すべてのプロバイダーにこの項目があります", "所选账号的各周期:{list}": "選択したアカウントの各期間:{list}", "手动添加": "手動追加", "打开批量操作弹窗,并预选这一组的账号(改代理等动作在弹窗里挑参数)": "一括操作ダイアログを開き、このグループのアカウントを事前選択します(プロキシ変更などのパラメータはダイアログ内で選択)", "执行中…": "実行中…", "执行({action})": "実行({action})", "批量动作": "一括操作", "批量操作 · 已选 {count} 个账号": "一括操作 · {count} アカウントを選択", "批量操作失败:{error}": "一括操作失敗:{error}", "批量操作已保存,但列表刷新失败:{error}": "一括変更は保存されましたが一覧の更新に失敗しました:{error}", "批量操作接口不可用,请重新打开页面": "一括操作を利用できません。ページを開き直してください", "批量操作未返回结果,请刷新后确认状态": "一括操作の結果が返りませんでした。更新して状態を確認してください", "批量操作本组": "このグループを一括操作", "批量操作结果不完整,请刷新后核对所选账号": "一括操作の結果が不完全です。再読み込みして選択したアカウントを確認してください。", "批量操作结果未确认,请刷新后核对设置": "一括操作の更新結果を確認できませんでした。再読み込みして設定を確認してください。", "批量规则按每个账号分别判定,不合并余额或 Token 用量。": "一括ルールはアカウントごとに判定し、残高や Token 使用量は合算しません。", "把每页调回「全部」": "表示件数を「すべて」に戻す", "折叠": "折りたたむ", "折叠全部": "すべて折りたたむ", "折叠全部分组(只留组头)": "全グループを折りたたむ(グループヘッダーのみ残す)", "折叠这一组": "このグループを折りたたむ", "拖动调整列宽(双击还原)": "ドラッグで列幅を調整(ダブルクリックでリセット)", "拖动调整整组顺序": "ドラッグでグループ全体の順序を調整", "拖动调整组内顺序": "ドラッグでグループ内の順序を調整", "按上游额度查询的读数判定;模型共用同一个额度池时,选择模型不会拆分该池余额。": "上流の使用枠の読数で判定します。複数モデルが同じ枠を共有する場合、モデルを選んでも残量は分割されません。", "按优先级从上到下比较,勾选的项才参与": "上から順に優先度で比較し、チェックした項目だけが使われます", "按住拖动,调整这一家的组顺位(整组一起动)": "ドラッグでこのプロバイダーのグループ順位を調整(グループごと動きます)", "按住拖动,调整这个账号在本组内的顺序": "ドラッグでこのアカウントのグループ内の順序を調整", "按总积分设置限制": "ポイント合計で制限", "按提供商筛选账号": "プロバイダーでアカウントを絞り込み", "按最低剩余比例选择账号,所有周期均来自同一账号": "残り割合が最も低いアカウントを選び、すべての期間を同じアカウントから表示します", "按未显示原因筛选": "非表示の理由で絞り込む", "按模型": "モデル別", "按每日或短周期实际可用额度最低的账号展示,所有周期均来自同一账号": "日次または短期間で実際に利用できる枠が最も少ないアカウントを選び、すべての期間を同じアカウントから表示します", "按规则限制该账号参与转发:没有规则(或全部停用)= 不限制;跳过档自动恢复,禁用档需手动启用。": "ルールに従ってこのアカウントの転送参加を制限:ルールがない(またはすべて停止)= 制限なし;スキップ段階は自動復帰、無効段階は手動での有効化が必要です。", "按账号总可用余额比较,不重复累加积分明细": "アカウントの利用可能残高の合計を比較し、ポイント明細を重複加算しません", "按账号最早到期、且还有剩余的积分包比较": "残高が残り、まだ有効なクレジットパックのうち最も早い期限で比較します", "排序": "並べ替え", "提供商已停用": "プロバイダー無効", "提供商显示名,1~{max} 个字符": "プロバイダーの表示名、1~{max} 文字", "提供商:{name}": "プロバイダー:{name}", "提高优先级": "優先度を上げる", "插件包已停用": "プラグインパック無効", "插件已启用但加载失败": "プラグインは有効ですが読み込みに失敗しました", "插件未加载": "プラグイン未読み込み", "插件未安装": "プラグイン未インストール", "搜索": "検索", "搜索账号": "アカウントを検索", "搜索账号 / 邮箱 / 备注": "アカウント / メール / メモを検索", "操作失败:{message}": "操作失敗:{message}", "收起": "折りたたむ", "改动即时生效": "変更はすぐに反映されます", "改协议 / Base URL 会改变它们的转发方式,正在进行的请求可能失败;模型清单与映射在「模型管理」页。": "プロトコル / Base URL を変更すると転送方式が変わり、進行中のリクエストが失敗する可能性があります;モデル一覧とマッピングは「モデル管理」ページにあります。", "数值越小越先用;": "数値が小さいほど優先;", "数值越小越先用;{hint}": "数値が小さいほど優先;{hint}", "整个账号": "アカウント全体", "整轮查询时限": "照会全体の制限時間", "整轮查询时限必须是 15~180 秒的整数": "照会全体の制限時間は15~180秒の整数で指定してください。", "新账号落到组首 / 组尾": "新しいアカウントを先頭 / 末尾に追加", "旗舰": "フラッグシップ", "无上限 · 已用 {used}": "上限なし · 使用済み {used}", "无上限按日计(上游到达上限后仍继续计数,超额如实显示)": "上限なしは日単位で集計(アップストリームが上限に達した後もカウントを継続し、超過分はそのまま表示)", "无代理(直连)": "プロキシなし(直接接続)", "无数据": "データなし", "无法拖动:已启用自动消耗规则({rules})。请先在「消耗顺序」中关闭这些规则,再手动调整。": "自動消費ルール({rules})が有効なためドラッグできません。「消費順序」でこれらのルールを無効にしてから手動で並べ替えてください。", "无法拖动:当前已按积分到期时间和账号添加时间自动排序。请先在「消耗顺序」中关闭这两项规则,再手动调整。": "ドラッグできません。クレジットの期限とアカウントの追加日時で自動的に並べ替えています。手動で変更するには、先に「消費順序」で両方のルールをオフにしてください。", "无法拖动:当前已按积分到期时间自动排序。请先在「消耗顺序」中关闭该规则,再手动调整。": "ドラッグできません。クレジットの期限で自動的に並べ替えています。手動で変更するには、先に「消費順序」でこのルールをオフにしてください。", "无法拖动:当前已按账号添加时间自动排序。请先在「消耗顺序」中关闭该规则,再手动调整。": "ドラッグできません。アカウントの追加日時で自動的に並べ替えています。手動で変更するには、先に「消費順序」でこのルールをオフにしてください。", "无福利额度": "特典クォータなし", "既有 Clash Verge 直接引用继续可用;也可在「网络代理」页同步端点,再改选「已保存的代理」。": "既存の Clash Verge 直接参照は引き続き利用できます。「ネットワークプロキシ」ページでエンドポイントを同期して、「保存済みプロキシ」に切り替えることもできます。", "旧数据导入": "旧データのインポート", "旧版 / 定制站点才需要,新版可留空": "旧版 / カスタムサイトでのみ必要。新しい版なら空欄で OK", "时": "未満のとき", "明天 {clock}": "明日 {clock}", "明天 {time}": "明日 {time}", "明天到期": "明日失効", "明细": "明細", "昵称 {name}": "ニックネーム {name}", "显示账号名": "アカウント名を表示", "暂无可查询余额的账号": "残高をクエリできるアカウントがありません", "暂无可比较余额;查到同单位的数值后自动生效,比例与无限额度不参与": "比較できる残高がありません。同じ単位の数値が取得されると自動適用されます。割合と無制限枠は対象外です", "暂无可用积分信息": "現在、利用可能なクレジット情報はありません", "暂无数据:先查询一次余额,之后会自动按到期排序": "データがありません:一度残高を照会すると、以降は有効期限で自動的に並びます", "暂无数据:先查询一次余额,可按需启用到期排序": "データがありません:一度残高を照会し、必要に応じて期限による並べ替えを有効にしてください", "暂无读数": "読数がありません", "暂无账号,请点击右上角「添加账号」": "アカウントがありません。右上の「アカウントを追加」をクリックしてください", "暂无额度信息": "利用枠の情報なし", "更多操作": "その他の操作", "更多设置": "その他の設定", "更新于 {time}": "更新日時 {time}", "更新失败": "更新に失敗", "替换全部规则": "全ルールを置換", "替换选中账号的限制规则": "選択したアカウントの制限ルールを置換", "最快到期优先": "期限が近い順", "最新添加优先": "新しい順", "最早 {soonest} 恢复": "最短リセット:{soonest}", "最早恢复": "最短リセット", "最早添加优先": "古い順", "最晚到期优先": "期限が遠い順", "有 {n} 个账号因提供商插件未就绪,暂未显示": "{n} 件のアカウントが、プロバイダープラグインの準備ができていないため非表示です", "有效期": "有効期限", "有的账号过了 0 点额度就回来 —— 选「自然日」": "0 時を過ぎるとクォータが戻るアカウントもあります —— 「自然日」を選択", "服务器本地时区": "サーバーのローカルタイムゾーン", "未使用": "未使用", "未启用套餐池账号,不生成验证码令牌": "有効な Start Plan アカウントがないため、認証トークンは生成しません。", "未命名账号": "名称未設定のアカウント", "未声明可手动续期;本机引用请在原客户端处理登录态。": "手動更新は宣言されていません。ローカル参照のログイン状態は元のクライアントで管理してください。", "未接入查询": "照会は未連携", "未显示的账号": "非表示のアカウント", "未显示账号": "非表示のアカウント", "未查询": "未クエリ", "未检测到 Clash Verge": "Clash Verge が検出されません", "未检测到 Clash Verge 配置": "Clash Verge の設定が検出されません", "未被使用": "未使用", "未触发": "未発動", "未触发{current}": "未発動{current}", "未触发{usage}{countdown}": "未発動{usage}{countdown}", "未设备注名": "ラベル名未設定", "未返回余额数据": "残高データが返されません", "未返回可确认的余额数值": "確認可能な残高の数値が返されませんでした", "未返回可识别的余额数据": "識別可能な残高データが返されません", "未返回重置时间": "リセット日時は未取得", "未配置": "未設定", "未配置凭证": "認証情報未設定", "本周期 Token 消耗达到限制器的上限,账号已被自动禁用(窗口重置也不恢复,需手动启用)": "今周期の Token 消費がリミッターの上限に達したため、アカウントは自動的に無効化されました(ウィンドウがリセットされても復帰せず、手動での有効化が必要です)", "本周期 Token 消耗达到限制器的上限,转发时会跳过该账号(窗口重置自动恢复)": "今周期の Token 消費がリミッターの上限に達すると、転送時にこのアカウントをスキップします(ウィンドウのリセットで自動復帰)", "本周期已用": "今周期の使用量", "本地 Token 消耗": "ローカルの Token 使用量", "本地台账里今天还领过这些,但上面的读数里还没有:{plans}(读数刷新可能有延迟)": "ローカル記録では本日ほかにも受け取っていますが、上の読み取り値にはまだ出ていません:{plans}(読み取り値の更新には時間がかかることがあります)", "本地消耗上限必须是大于 0 的安全整数": "ローカル使用量の上限は 0 より大きい安全な整数で指定してください", "本地用量保护": "ローカル使用量の保護", "本地统计只包含经过本网关的请求,不等于上游账单;清理请求日志不会清零。套餐选择用于限定保护范围,不会强制上游扣指定套餐。": "ローカル集計はこのゲートウェイを通るリクエストのみで、上流の請求とは異なります。ログを削除しても集計はリセットされません。プランの選択は保護範囲の指定であり、上流の課金先プランを強制しません。", "本地请求次数": "ローカルのリクエスト数", "本地领取于 {time}": "ローカルで {time} に受け取り", "本提供商不支持积分到期排序,默认保持手动顺序;可按需启用账号添加时间排序。": "このプロバイダーはクレジットの期限による並べ替えに対応していないため、既定では手動順序を維持します。必要に応じて追加日時による並べ替えを有効にできます。", "本提供商默认启用最快到期优先,账号添加时间默认关闭;关闭全部规则可恢复手动顺序。": "このプロバイダーは既定で期限が近い順に並び、追加日時による並べ替えはオフです。すべてのルールをオフにすると手動順序に戻ります。", "本期活动": "現在のキャンペーン", "本期活动按套餐分别展示,领取资格以上游返回为准": "現在のキャンペーンをプランごとに表示します。受け取り資格は上流の応答に従います。", "本组 {n} 个账号的可用余额之和,按整组统计(不受筛选、搜索影响)": "このグループ {n} 件の利用可能残高の合計(グループ全体で集計、絞り込み・検索の影響を受けません)", "本组 {n} 个账号的百分比读数不能相加,取组内最低的剩余比例(按整组统计,不受筛选、搜索影响)": "このグループの {n} 個のアカウントの割合表示は合算できないため、グループ内で最も低い残り割合を表示します(グループ全体で集計、絞り込み・検索の影響なし)", "本组 {n} 个账号的额度概览(按整组统计,不受筛选、搜索影响)": "このグループの {n} 個のアカウントの利用枠概要(グループ全体で集計し、絞り込み・検索の影響は受けません)", "本组代理": "このグループのプロキシ", "本组操作": "グループ操作", "本组每个账号会分别保存为一个 JSON 文件,包含被筛选隐藏的账号。": "このグループの各アカウントを個別の JSON ファイルに保存します。フィルターで非表示のアカウントも含まれます。", "权益 {value}": "権益 {value}", "权益 {value} {unit}": "権益 {value} {unit}", "条件即时生效,关掉面板就能看到结果。": "条件はすぐに反映されます。パネルを閉じると結果が表示されます。", "条件组 {n}": "条件グループ {n}", "来源 {source}": "ソース {source}", "查看": "表示", "查看因插件未就绪而暂未显示的账号": "プラグインが未準備のため非表示になっているアカウント", "查看插件状态": "プラグイン状態を確認", "查询中…": "クエリ中…", "查询余额": "残高をクエリ", "查询全部账号的余额(含已禁用账号 —— 禁用只表示不参与转发)": "すべてのアカウントの残高をクエリ(無効化済みアカウントを含む —— 無効は転送に参加しないことだけを意味します)", "查询凭证还没配齐:填好后余额列才有读数,在此之前会显示「未配置」。": "照会用認証情報が揃っていません:入力を終えると残高列に数値が表示され、それまでは「未設定」と出ます。", "查询失败": "クエリ失敗", "查询失败:{message}": "クエリ失敗:{message}", "查询已成功,但上游未提供额度数据,不代表余额为零。": "照会は成功しましたが、プロバイダーから利用枠のデータが返されませんでした。残高がゼロという意味ではありません。", "查询设置": "クエリ設定", "查询该账号剩余余额(读数显示在余额列)": "このアカウントの残りの残高をクエリ(読み取り値は残高列に表示)", "查询超时,可重新查询": "照会がタイムアウトしました。再照会できます。", "查询间隔": "クエリ間隔", "查询间隔必须是 {min} 秒 ~ 24 小时": "クエリ間隔は {min} 秒 ~ 24 時間でなければなりません", "桌面端实时登录态请在原客户端更新": "デスクトップのリアルタイムログイン状態は元のクライアントで更新してください", "桌面端实时登录态(凭证每次从客户端登录态文件读取)": "デスクトップ版のリアルタイムログイン状態(認証情報は毎回クライアントのログイン状態ファイルから読み込みます)", "模型范围": "対象モデル", "正在加载…": "読み込み中…", "正在探测可领取的套餐…": "受け取れるプランを確認しています…", "正在查询": "クエリ中", "正在查询本期活动…": "現在のキャンペーンを確認中…", "正在补铸验证码令牌": "CAPTCHA トークンを生成中", "正在读取 Clash Verge 配置…": "Clash Verge の設定を読み込み中…", "正在读取…": "読み込み中…", "正在读取代理列表…": "プロキシ一覧を読み込み中…", "正在连接上游…": "アップストリームに接続中…", "正常": "正常", "此刻正在使用这个账号的请求数(含还在下发内容的流式请求);为 0 时不显示": "現在このアカウントを使用しているリクエスト数(コンテンツ配信中のストリーミングリクエストを含む);0 のときは非表示", "此额度不属于账号当前使用的通道": "この使用枠はアカウントの現在のチャンネルに属していません", "此额度不属于账号当前使用的通道,切换到对应通道后才参与判定。": "この使用枠は現在のチャンネルに属していません。対応するチャンネルへ切り替えると判定に使用されます。", "每": "毎", "每 {period}消耗 ≥ {count} Token": "毎 {period}の消費 ≥ {count} Token", "每周或每月额度已耗尽,短周期实际可用额度按 0% 计算;账号明细保留原始读数": "週次または月次の枠を使い切っているため、短期間の実際の利用可能枠は 0% として扱います。アカウント詳細には元の値を保持します", "每日消耗 ≥": "毎日の消費が", "每日消耗 ≥ {count} Token(每天 0 点重置)": "毎日の消費 ≥ {count} Token(毎日 0 時にリセット)", "每日重置": "毎日リセット", "每日重置(额度按周期回满,不是作废)": "毎日リセット(枠は周期ごとに満額へ戻るだけで、失効ではありません)", "每条请求换一个出口(按顺序轮流),上游看到的 IP 因此是变化的;出口的地址与端口由「网络代理」页管理": "リクエストごとに次の出口へ順番に切り替わるため、上流から見える IP が変わります。出口のアドレスとポートは「ネットワークプロキシ」ページで管理します", "每组共用一个触发动作;第二条条件起可选择「与/或」。与优先于或,下面会显示明确分组。各条件组独立生效。": "各グループで同じ動作を使います。2 番目以降の条件には「かつ/または」を選べます。「かつ」を優先し、下に括弧で明示します。グループごとに独立して適用されます。", "没有匹配「{kw}」的账号": "「{kw}」に一致するアカウントはありません", "没有可全选的账号": "全選択できるアカウントがありません", "没有可用出口": "利用可能な出口がありません", "没有适用于本次操作的账号": "この操作を適用できるアカウントがありません", "没有选中的账号": "選択されたアカウントがありません", "活动套餐": "イベントプラン", "活动套餐的推理端点要求每条请求带一个阿里云验证码令牌;令牌由本应用在后台静默铸造,界面关闭时无法铸造": "イベントプランの推論エンドポイントは各リクエストに Alibaba Cloud の認証コードトークンを要求します;トークンは本アプリがバックグラウンドでサイレントに生成するため、画面を閉じている間は生成できません", "活动套餐(Start Plan)": "イベントプラン(Start Plan)", "活动套餐(Start Plan)— 走官方活动端点,用活动里领到的额度": "イベントプラン(Start Plan)— 公式のイベントエンドポイントを使用し、イベントで受け取ったクォータを消費", "活动时间:{time}": "キャンペーン期間:{time}", "活动期内每天发一份新套餐;同一份当天重复领取会提示「已领取过」,次日可再领。领取要走一次人机验证(滑块)。": "キャンペーン期間中は毎日新しいプランが 1 件配布されます。同じプランを同日に再度受け取ると「受け取り済み」と表示され、翌日にまた受け取れます。受け取りには人機認証(スライダー)が 1 回必要です。", "活动期内每天发一份新套餐;已领的套餐不重复提交,次日可领新套餐。只有主动领取时才会进行人机验证。": "キャンペーン期間中は毎日新しいプランが提供されます。受け取り済みのプランは再送信せず、翌日に新しいプランを受け取れます。人間認証は手動で受け取るときのみ行います。", "活动目录合并账号预览、营销活动与匿名探测。已领取仅依据领取记录或账号名下套餐;状态待确认时可尝试领取,资格以上游返回为准。": "キャンペーン一覧はアカウントのプレビュー、マーケティング情報、匿名照会を統合します。受け取り済みの判定には受け取り記録またはアカウント所有のプランが必要です。未確認の場合は受け取りを試せます。資格は上流の応答に従います。", "测试中…": "テスト中…", "测试出口": "出口をテスト", "消耗顺序": "消費順序", "添加 新→旧": "追加 新→旧", "添加 旧→新": "追加 旧→新", "添加规则": "ルールを追加", "添加限制": "制限を追加", "清掉本机的限流标记,立刻重新尝试该模型(上游若仍在限流会再次被标记)": "本機のレート制限マークを消去し、このモデルをすぐに再試行します(アップストリームがまだレート制限中なら再度マークされます)", "清掉该账号全部模型的限流标记": "このアカウントのすべてのモデルのレート制限マークを消去", "清空全部规则": "全ルールを削除", "清空搜索与三个筛选档位,回到全部账号": "検索と3つの絞り込みをクリアして全アカウントに戻す", "清空选中账号的限制规则": "選択したアカウントの制限ルールを削除", "清除": "消去", "清除失败:{error}": "消去失敗:{error}", "清除失败:{message}": "消去失敗:{message}", "清除已配置的 API Key(转发时会因缺少凭证被跳过)": "設定済みの API Key を消去(転送時に認証情報がないためスキップされます)", "清除已配置的 {label}": "設定済みの {label} をクリア", "清除已配置的余额查询凭证": "設定済みの残高クエリ用認証情報を消去", "清除标记": "マークを消去", "清除筛选": "フィルタをクリア", "清除该账号的冷却与全部模型限流标记": "このアカウントのクールダウンと全モデルのレート制限フラグを解除", "滚动窗口": "ローリングウィンドウ", "点击{action}各模型的限流明细": "クリックで各モデルのレート制限明細を{action}", "点击查看账号冷却与模型限流明细": "クリックしてアカウントのクールダウンとモデルのレート制限の詳細を表示", "状态": "状態", "状态 {status}": "状態 {status}", "状态待确认": "受け取り状況未確認", "状态未知": "状態不明", "生效 {time}": "有効 {time}", "生效中": "有効中", "生效至到期累计(不自动回满)": "有効開始から期限まで累積(自動補充なし)", "用 NewAPI 站点的个人访问令牌查询账户余额(不是这条账号的上游 API Key)。令牌在站点的「个人设置」里生成,只有旧版 / 定制站点才需要额外填用户 ID。": "NewAPI サイトの個人アクセストークンで残高を照会します(このアカウントのアップストリーム API キーではありません)。トークンはサイトの「個人設定」で発行し、ユーザー ID の追加入力が必要なのは旧版 / カスタムサイトだけです。", "用 bigmodel.cn 控制台的访问令牌查询账户余额(人民币元)。令牌是登录后浏览器 Cookie `bigmodel_token_production` 的值:开发者工具 → 应用(Application)→ Cookie 里复制。": "bigmodel.cn コンソールのアクセストークンで残高を照会します(人民元)。トークンはログイン後のブラウザ Cookie `bigmodel_token_production` の値:開発者ツール → アプリケーション → Cookie からコピーしてください。", "用下面的规则统一替换各账号的全部规则,执行前会再次确认。": "各アカウントの全ルールを下のルールに置き換えます。実行前に再確認します。", "用商汤日日新控制台的账号密码查询(与推理用的 API Key 不是同一套)。网关会自动换取登录票并缓存,过期后自动重登,不需要手动维护。": "SenseNova コンソールのアカウントとパスワードで照会します(推論用の API キーとは別物)。ゲートウェイがログインチケットを自動取得してキャッシュし、期限切れなら自動で再ログインするため、手動管理は不要です。", "用户名": "ユーザー名", "用这条账号的 API Key 查询订阅用量,不需要额外配置;读数展开成 5 小时 / 每周 / 每月三个窗口。": "このアカウントの API キーでサブスクリプション使用量を照会します。追加設定不要で、数値は 5 時間 / 週 / 月の 3 つのウィンドウに展開されます。", "用这条账号的 API Key 查询,不需要额外配置。": "このアカウントの API キーで照会します。追加設定不要。", "用这条账号的 API Key 生成签名后查询账户余额(美元),不需要额外配置。要求 API Key 是 z.ai 的「id.secret」形态(控制台生成的 Key 就是)。": "このアカウントの API キーで署名を作り残高を照会します(米ドル)。追加設定不要。API キーは z.ai の「id.secret」形式である必要があります(コンソールで発行されるキーがそれです)。", "留空 = 不修改,清除用右边的按钮": "空欄なら現状を維持、クリアは右のボタンで", "登录 / 导入一个新账号": "ログイン / 新しいアカウントをインポート", "登录授权已失效,请重新登录;自动续期无法恢复已过期或已撤销的刷新令牌。": "ログイン認可が失効しました。再ログインしてください。期限切れまたは取り消されたリフレッシュトークンは自動更新では復元できません。", "登录授权截止:{time};自动续期不会延长此时间,届时需重新网页登录。": "ログイン認可の有効期限:{time}。自動更新ではこの期限は延長されません。期限切れ後はブラウザーで再ログインしてください。", "百分比阈值必须在 0~100 之间": "割合のしきい値は 0~100 の範囲で指定してください", "直连": "直接接続", "确定删除选中的 {count} 个账号?此操作不可恢复,账号的登录态会一并移除。": "選択した {count} 個のアカウントを削除しますか?この操作は元に戻せません。アカウントのログイン状態も併せて削除されます。", "确定清空 {count} 个账号的全部限制规则?余额与 Token 将不再设限;已禁用的账号不会自动启用。": "{count} 件の制限ルールをすべて削除しますか?残高と Token は無制限になります。無効なアカウントは自動的に有効化されません。", "确定清除全部模型的限流标记?": "すべてのモデルのレート制限を解除しますか?", "确定清除模型「{model}」的限流标记?": "モデル「{model}」のレート制限を解除しますか?", "确定清除该账号的冷却与全部模型限流标记?": "このアカウントのクールダウンと全モデルのレート制限フラグを解除しますか?", "禁用": "無効化", "禁用整个账号(手动恢复)": "アカウント全体を無効化(手動で復帰)", "禁用该账号(需手动重新启用)": "このアカウントを無効化(手動での再有効化が必要です)", "禁用这一组里的全部账号(含被筛选隐藏的)": "このグループの全アカウントを無効化します(フィルタで非表示のものも含む)", "福利按限时活动下发,不是每个账号都有 —— 正常状态,不是查询失败": "特典は期間限定イベントで配布されるため、すべてのアカウントにあるわけではありません —— 正常な状態であり、クエリ失敗ではありません", "福利日额度": "特典日次クォータ", "福利网关未读到:{error}": "特典ゲートウェイから読み取れません:{error}", "秒": "秒", "秒;默认 60 秒,包含重试等待,多步骤查询可适当延长。": "秒。初期値は60秒で、再試行の待機を含みます。複数段階の照会では必要に応じて延長できます。", "积分": "積分", "积分到期时间": "クレジット有効期限", "积分包": "積分包", "积分明细": "積分明細", "积分查询已复用转发用的登录凭证,这里通常留空即可。只有旧版本填过、或从旧代理导入过凭证时才有值": "積分クエリは転送用のログイン認証情報を再利用するため、通常は空欄のままで構いません。旧バージョンで入力した場合、または旧プロキシから認証情報をインポートした場合のみ値が入ります", "稍后由后台判定自动禁用": "後でバックグラウンドの判定により自動的に無効化されます", "窗口 = 今天 0 点起(本地时区),0 点重置即清零恢复;按账号在 requests 表聚合": "ウィンドウ = 今日 0 時から(ローカルタイムゾーン)、0 時のリセットでゼロに戻り復帰;アカウントごとに requests テーブルで集計", "窗口内已用 {used} / {limit} Token,转发时会跳过该账号(重置后自动恢复)": "ウィンドウ内で {used} / {limit} Token 使用済みのため、転送時にこのアカウントをスキップします(リセット後は自動復帰)", "窗口对齐自然时间(整点 / 整 N 分钟一轮回),重置即清零恢复;按账号在 requests 表聚合": "ウィンドウは自然時間に整列(毎時 / N 分ごとの周期)、リセットでゼロに戻り復帰;アカウントごとに requests テーブルで集計", "窗口数量超过展示上限,仅展示部分读数": "期間の数が表示上限を超えているため、一部の数値のみ表示します", "窗口重置时间": "各期間のリセット日時", "窗口长度": "ウィンドウの長さ", "窗口额度与时间": "利用枠と日時", "端口": "ポート", "端口准备中": "ポート準備中", "第 {rank} 顺位": "全体 {rank} 番", "等待当前验证码流程结束": "現在の認証が終わるまで待機中", "筛选": "絞り込み", "筛选 / 搜索 / 分页生效时组顺位不可拖动(别家的组整组不可见,落点没法定位)": "フィルター / 検索 / ページング中はグループ順位をドラッグできません(他社のグループ全体が非表示のため、ドロップ位置を特定できません)", "系统代理信息无效,请手动填写。": "システムプロキシ情報が無効です。手動で入力してください。", "系统代理协议暂不支持自动填入,请手动配置 HTTP 或 SOCKS5 代理": "このシステムプロキシのプロトコルは自動入力に対応していません。HTTP または SOCKS5 プロキシを手動で設定してください。", "系统代理地址无效,请手动填写": "システムプロキシのアドレスが無効です。手動で入力してください。", "系统代理认证信息无法读取,请手动填写": "システムプロキシの認証情報を読み取れません。手動で入力してください。", "累计起点": "集計開始日時", "级联删除名下全部账号,不可恢复": "配下のすべてのアカウントを連鎖削除、復元不可", "组内先后:按住左边的把手上下拖动即可调整;整组的先后拖分组带的把手": "グループ内の順序:左のハンドルを上下にドラッグで調整できます。グループ全体の順序はグループバーのハンドルをドラッグしてください", "组内并发上限": "グループ内の同時実行上限", "组内手动顺序": "グループ内の手動順序", "组内第 {rank} 位": "グループ内 {rank} 番", "组顺位已锁定": "グループ順位はロック中", "组顺位:越小越先用(拖动分组带调整)": "グループ順位:小さいほど先に使われます(グループバーをドラッグして調整)", "统一设置自动查询的开关、间隔和失败重试次数;不会复制或覆盖余额查询凭证。": "自動照会のオン・オフ、間隔、失敗時の再試行回数を統一します。残高照会の認証情報はコピーも上書きもしません。", "统计周期": "集計期間", "统计周期尚未开始或已经结束": "集計期間はまだ始まっていないか、終了しています", "统计窗口必须是 1 分钟~31 天": "集計ウィンドウは 1 分~31 日で指定してください", "统计结束时间必须晚于开始时间": "集計終了日時は開始日時より後にしてください", "缓存用量未知,不按零计量,也不用于推算余额": "キャッシュ使用量は不明です。ゼロとは扱わず、残高の推定にも使いません", "编码套餐(Coding Plan)": "コーディングプラン(Coding Plan)", "编码套餐(Coding Plan)— 走开放平台端点,消耗开放平台的额度(订阅套餐 / 资源包 / 充值余额)": "コーディングプラン(Coding Plan)— オープンプラットフォームのエンドポイントを使用し、オープンプラットフォームのクォータ(購読プラン / リソースパック / チャージ残高)を消費", "编码套餐(Coding Plan)— 走开放平台端点,用自己订阅的额度": "コーディングプラン(Coding Plan)— オープンプラットフォームのエンドポイントを使用し、自身で購読したクォータを消費", "编辑": "編集", "编辑限制": "制限を編集", "编辑限制条件": "制限条件を編集", "网关电脑未检测到可导入的系统代理;请手动填写,或选择已保存的代理。": "ゲートウェイのマシンに取り込めるシステムプロキシがありません。手動で入力するか、保存済みのプロキシを選択してください。", "网络": "ネットワーク", "网页端会逐个下载文件;浏览器提示时请允许本网站下载多个文件。": "Web 版ではファイルを個別にダウンロードします。ブラウザーに確認が表示されたら、このサイトの複数ファイルのダウンロードを許可してください。", "自动查询余额": "残高を自動クエリ", "自动查询余额(按下面的间隔自动刷新余额列的读数)": "残高を自動クエリ(下の間隔で残高列の読み取り値を自動更新)", "自定义代理": "カスタムプロキシ", "自定义代理…": "カスタムプロキシ…", "自定义:": "カスタム:", "自然周": "暦週", "自然日": "暦日", "自然日(每天 0 点)": "自然日(毎日 0 時)", "自然月": "暦月", "补全请求": "補完リクエスト", "补铸失败:{error}": "トークン生成失敗:{error}", "规则操作": "ルール操作", "解析失败": "解析失敗", "触发动作": "発動アクション", "触发后": "発動後", "触发条件": "発動条件", "计入 {counted}/{total}": "集計 {counted}/{total}", "订阅已移除": "サブスク削除済み", "订阅统计未读到:{error}": "サブスクリプション統計を読み取れません:{error}", "记录里没有过期时间": "記録に有効期限がありません", "设为首选": "最優先に設定", "设置并发上限": "同時接続上限を設定", "访客账号没有积分体系,因此不查询余额(登录账号可以查)": "ゲストアカウントにはポイント制度がないため、残高は照会しません(ログインアカウントなら照会できます)", "访问令牌": "アクセストークン", "试用版": "トライアル版", "该上游无需鉴权": "このアップストリームは認証不要", "该上游无需鉴权(转发与拉取模型都不发送鉴权头)": "このアップストリームは認証不要(転送とモデル取得のいずれも認証ヘッダーを送信しません)", "该提供商尚未接入余额查询": "このプロバイダーの残高照会はまだ連携されていません", "该提供商没有余额查询": "このプロバイダーには残高クエリがありません", "该提供商没有余额查询;可按 Token 消耗设置限制。": "このプロバイダーは残高照会に非対応です。Token 使用量で制限できます。", "该提供商的推理转发尚未接入,账号不参与转发": "このプロバイダーの推論転送は未対応のため、アカウントは転送に参加しません", "该账号不支持刷新 Token 或未提供刷新凭证": "このアカウントは Token 更新に未対応か、更新用の認証情報がありません", "该账号出网走的代理(Clash 出口 / 自定义 / 直连);点击可修改": "このアカウントの送信に使うプロキシ(Clash 出口 / カスタム / 直接接続);クリックで変更", "该账号出网走的代理(已保存的代理 / 自定义 / 直连);点击可修改": "このアカウントの接続プロキシ(保存済み / カスタム / 直接接続)。クリックして変更できます。", "该账号当前限流中的模型;点徽章看明细": "このアカウントで現在レート制限中のモデル;バッジをクリックすると明細を表示", "该账号没有套餐登录态(jwt),套餐池通道会失败:请重新登录该账号": "このアカウントにはプランのログイン状態(jwt)がないため、プランプール経路は失敗します:このアカウントに再ログインしてください", "该账号没有套餐登录态(jwt),活动套餐会失败:请重新登录该账号": "このアカウントにはプランのログイン状態(jwt)がないため、イベントプランは失敗します:このアカウントに再ログインしてください", "该账号没有福利模型额度(福利按活动下发,不是每个账号都有)": "このアカウントには特典モデルのクォータがありません(特典はイベントで配布されるため、すべてのアカウントにあるわけではありません)", "该账号没有积分类读数(额度只有福利 token 池)": "このアカウントには積分系の読み取り値がありません(クォータは特典 token プールのみ)", "该账号的额度只有福利 token 池(见余额格那两行),订阅统计没有积分类计量表": "このアカウントのクォータは特典 token プールのみ(残高セルの 2 行を参照)。サブスクリプション統計には積分系のメーターがありません", "该额度中的全部模型": "この使用枠の全モデル", "请先勾选要操作的账号": "操作するアカウントを先にチェックしてください", "请先选择 Clash Verge 出口": "先に Clash Verge の出口を選択してください", "请先选择已保存的代理": "先に保存済みのプロキシを選択してください", "请填写代理主机地址": "プロキシホストアドレスを入力してください", "请填写提供商名称": "プロバイダー名を入力してください", "请填写提供商的 Base URL": "プロバイダーの Base URL を入力してください", "请填写查询间隔": "クエリ間隔を入力してください", "请填写重置周期": "リセット周期を入力してください", "请至少添加一条限制规则;清空请使用清空操作": "制限ルールを少なくとも 1 件追加してください。全削除には削除操作を使ってください", "请选择代理": "プロキシを選択してください", "请选择出口": "出口を選択してください", "读取中…": "読み込み中…", "读取失败:{error}": "読み込み失敗:{error}", "读取系统代理失败": "システムプロキシの読み取りに失敗しました", "读取网关电脑当前的 HTTPS 系统代理,填入自定义地址;后续系统设置变化不会自动同步。": "ゲートウェイのマシンに設定された現在の HTTPS システムプロキシをカスタム欄に入力します。その後のシステム設定の変更は自動同期されません。", "读取自 {dir};端口由 Clash Verge 管理,这里实时同步": "{dir} から読み込み;ポートは Clash Verge が管理し、ここはリアルタイムで同期されます", "读数来自自动余额查询;与余额列同一数字口径,严格小于才触发(等于阈值仍可用)": "読み取り値は自動残高クエリによるもの;残高列と同じ数値基準で、厳密に下回った場合のみ発動(しきい値と同じなら利用可能)", "读数里没有套餐清单(免费账号、或套餐的上游状态还没刷新;可点右上角「查询余额」重读)": "この読み取り値にプラン一覧がありません(無料アカウント、または上流のプラン状態がまだ更新されていません。右上の「残高を照会」で再取得できます)", "读数里没有额度桶,这里按套餐权益里的已用 / 总量显示(上游给的数)": "読み取り値に枠(バケット)がないため、プラン権益の已用 / 総量(上流の数値)を表示しています", "调整到全局队列第一位": "グローバルキューの先頭に移動します", "调整顺序失败:{message}": "順序の調整失敗:{message}", "账号": "アカウント", "账号不存在,请刷新后重试": "アカウントが存在しません。更新して再試行してください", "账号不存在,请刷新后重试。": "アカウントが存在しません。更新して再試行してください。", "账号主额度": "アカウントの主な使用枠", "账号余额单位不一致,暂不按余额排序,继续比较其他规则": "アカウントの残高単位が異なるため、残高順の並べ替えをスキップし、他のルールを適用します", "账号全部模型暂时停止转发 · 到恢复时间自动解除": "このアカウントの全モデルへの転送を一時停止 · 復旧時刻に自動解除", "账号冷却": "アカウントのクールダウン", "账号列表刷新不可用,请重新打开页面": "アカウント一覧を更新できません。ページを開き直してください", "账号列表刷新失败": "アカウント一覧の再読み込みに失敗しました。", "账号列表刷新接口不可用,请重新打开页面": "アカウント一覧の再読み込みを利用できません。ページを開き直してください。", "账号列表加载失败,请点击「刷新」重试": "アカウント一覧を読み込めません。「更新」をクリックして再試行してください", "账号列表加载失败,请点击「刷新」重试:{message}": "アカウント一覧を読み込めません。「更新」をクリックして再試行してください:{message}", "账号列表已刷新": "アカウント一覧を更新しました", "账号名 / 邮箱 / 备注": "アカウント名 / メール / メモ", "账号套餐到期:{time}": "アカウントのプラン有効期限:{time}", "账号导出失败:{reason}": "アカウントのエクスポートに失敗しました:{reason}", "账号已保存,但列表刷新失败:{error}": "アカウントは保存されましたが、一覧の再読み込みに失敗しました:{error}", "账号已保存,但提供商未更新:{error}": "アカウントは保存されましたが、プロバイダーが更新されていません:{error}", "账号数据仍然保留,无需重新添加。安装或启用对应插件并成功加载后,账号会自动恢复显示。": "アカウントデータは保持されています。再追加は不要です。対応するプラグインをインストールまたは有効化し、正常に読み込まれると自動的に再表示されます。", "账号显示名称": "アカウントの表示名", "账号更新接口不可用,请重新打开页面": "アカウント更新を利用できません。ページを開き直してください。", "账号更新结果未确认,请刷新后核对设置": "アカウントの更新結果を確認できませんでした。再読み込みして設定を確認してください。", "账号正在导出,请稍候": "アカウントをエクスポート中です。しばらくお待ちください。", "账号添加时间": "アカウント追加日時", "账号级条件组已触发;点击查看限制器": "アカウント全体の条件グループが発動しました。クリックしてリミッターを確認します。", "账号表": "アカウントテーブル", "账号设置": "アカウント設定", "账号设置 · {name}": "アカウント設定 · {name}", "账号设置分组": "アカウント設定グループ", "账号邮箱": "アカウントのメールアドレス", "账号页与全局路由共用此消耗顺序,网关按最新余额数据选路,不需要保持页面打开。模型独立顺序会覆盖全局。": "アカウントページと全体ルーティングはこの消費順序を共有します。ゲートウェイは最新の残高データで経路を選択し、ページを開いたままにする必要はありません。モデルの個別順序が全体順序に優先します。", "跨账号批量配置仅支持通用条件;套餐实例不能直接复制到其他账号。": "複数アカウントへの一括設定は共通条件のみ対応します。プランのインスタンスは他のアカウントへ直接コピーできません。", "跳过 {count} 个:": "{count} 件スキップ:", "跳过该账号(余额回升自动恢复)": "このアカウントをスキップ(残高の回復で自動復帰)", "跳过该账号(自动恢复)": "このアカウントをスキップ(自動復帰)", "跳过该账号(重置后自动恢复)": "このアカウントをスキップ(リセット後に自動復帰)", "跳过(自动恢复)": "スキップ(自動復帰)", "转发优先级": "転送優先度", "转发走套餐池(Start Plan)通道(zcode.z.ai 的 Anthropic 端点,用账号里的体验额度 / 活动领取额度);在账号设置里可切回编码套餐": "転送はプランプール(Start Plan)経路を使用(zcode.z.ai の Anthropic エンドポイント、アカウントの体験クォータ / イベント受け取り分を消費);アカウント設定でコーディングプランに戻せます", "转发走活动套餐通道(zcode.z.ai 的 Anthropic 端点,用账号里领到的额度);在账号设置里可切回编码套餐": "転送はイベントプラン経路を使用(zcode.z.ai の Anthropic エンドポイント、アカウントで受け取ったクォータを消費);アカウント設定でコーディングプランに戻せます", "转发顺序": "転送順序", "轮询全部代理节点": "すべてのプロキシノードをローテーション", "轮询的代理": "ローテーションするプロキシ", "轮询至少要选择一条代理(或改选「全部」)": "ローテーションには少なくとも 1 つのプロキシを選択してください(「すべて」に戻すこともできます)", "轮询(换 IP)": "ローテーション(IP 切り替え)", "还没有代理(去「网络代理」页添加)": "プロキシがまだありません(「ネットワークプロキシ」ページで追加)", "还没有余额读数(已自动查询一次,稍候;也可以点右上角「查询余额」重读)": "まだ残高の読み取り値がありません(自動で 1 回照会済みです。しばらくお待ちいただくか、右上の「残高を照会」で再取得してください)", "还没有保存的代理": "保存済みのプロキシがまだありません", "还没有批量规则,请先添加限制或从所选账号复制。": "一括ルールがまだありません。制限を追加するか、選択したアカウントからコピーしてください。", "还没有条件组:账号照常参与转发,不设置额度保护。": "条件グループはまだありません。アカウントは使用枠の保護なしで通常どおり転送します。", "还没有账号,去桌面端添加": "アカウントがありません。デスクトップ版で追加してください。", "还没有账号,请点击「添加账号」": "アカウントはまだありません。「アカウントを追加」をクリックしてください。", "还没有限制规则:账号照常参与转发,余额与 Token 消耗都不设上限。": "制限ルールがまだありません:アカウントは通常どおり転送に参加し、残高と Token 消費に上限はありません。", "这一份今天已经领过了(重复领取上游会回「已领取过」)": "このプランは本日すでに受け取り済みです(再度受け取ると上流は「受け取り済み」を返します)", "这一家查不到积分到期时间": "このプロバイダーではクレジット有効期限を取得できません", "这一家没有可用余额查询": "このプロバイダーは利用可能残高の照会に対応していません", "这一栏改的是": "この欄で変更するのは", "这一段按提供商出现:有什么配什么。": "このセクションはプロバイダーごとに表示され、設定できる項目だけが現れます。", "这一类现在没有账号": "この分類にアカウントはありません", "这一组开着排序规则:关掉规则后才能手动拖": "このグループは並べ替えルールが有効です。手動でドラッグするにはルールをオフにしてください", "这个账号的余额走窗口限额通道(只配了编码套餐 API Key):只有每 N 小时的剩余比例,读不到套餐清单": "このアカウントの残高はウィンドウ上限チャネル経由です(コーディングプランの API Key のみ設定)。N 時間ごとの残り割合のみで、プラン一覧は取得できません", "这会{what}所有启用中的账号,转发将不可用。确定继续?": "これは有効中のすべてのアカウントを{what}します。転送が利用できなくなります。続行しますか?", "这是既有配置(直接引用 Clash 出口,不经过代理池)。推荐改用上面的": "これは既存の設定です(Clash 出口を直接参照し、プロキシプールを経由しません)。上記の使用を推奨:", "这条自定义账号既没有 API Key,也没有勾选「无需鉴权」:转发时会被跳过,该提供商下的模型也不会出现在模型列表里。去账号「设置」里补上 Key,或勾选「该上游无需鉴权」": "このカスタムアカウントには API Key もなく、「認証不要」もチェックされていません:転送時はスキップされ、このプロバイダーのモデルもモデル一覧に表示されません。アカウントの「設定」で Key を追加するか、「このアップストリームは認証不要」をチェックしてください", "这条账号是谁、排第几、能不能接请求。": "このアカウントがどれか、何番目か、リクエストを受けられるか。", "这条账号访问上游走哪条线路。": "このアカウントがアップストリームへアクセスする経路。", "这里只影响「显示」:卸载或停用插件不会删除账号;重新安装、启用并成功加载后,这些账号会自动回到列表。": "これは表示だけに影響します。プラグインを削除・無効にしてもアカウントは削除されません。再インストールして有効化し、正常に読み込まれれば自動で戻ります。", "连接失败": "接続失敗", "连接数": "接続数", "追加规则(保留原有)": "ルールを追加(既存を保持)", "追加限制规则": "制限ルールを追加", "选中多个模型时,每个模型单独累计、单独比较阈值;不合并用量。": "複数モデルを選択した場合、それぞれの使用量を個別に累積してしきい値と比較します。使用量は合算しません。", "选择": "選択", "选择所选账号作为模板(可选)": "選択したアカウントをテンプレートにする(任意)", "选择要轮询的代理(可多选)": "ローテーションするプロキシを選択(複数可)", "逐个刷新所选账号的 Token,未到期也会尝试刷新;不改变启用状态、代理或转发顺序。": "選択したアカウントの Token を、期限前でも順番に更新します。有効状態、プロキシ、転送順序は変更しません。", "逐窗口最低:{list}": "ウィンドウ別の最低:{list}", "逐请求轮换出口(换 IP):OpenCode Zen 免费档按 IP 限流,单个 IP 的额度用完会对它一律 429": "リクエストごとに出口を切り替えます(IP 変更):OpenCode Zen の無料枠は IP 単位で制限され、ある IP の枠を使い切るとその IP からのリクエストは一律 429 になります", "通用额度/本地保护": "共通の使用枠/ローカル保護", "邮箱 {email}": "メール {email}", "部分余额信息暂未获取;未显示上游原始诊断": "残高情報の一部を取得できません。上流の未加工の診断情報は表示しません", "部分来源查询失败,已保留其他结果:{message}": "一部の情報源を照会できませんでした。他の結果は保持しています:{message}", "部分来源查询失败,暂不能确认本期活动或领取状态": "一部の情報源を照会できず、現在のキャンペーンまたは受け取り状況を確認できません。", "部分窗口偏低": "一部の期間の残量が少ない", "部分窗口未返回可识别读数": "一部の使用期間から識別可能な数値が返されませんでした", "部分读数未知": "一部の残量が不明", "部分额度读数暂不可用。": "一部の使用枠の数値を現在取得できません。", "配置已变更,请重新查询": "設定が変更されました。再照会してください。", "重新安装这个插件后自动回来": "このプラグインを再インストールすると自動で戻ります", "重新读取": "再読み込み", "重新读取该账号的余额与套餐(走余额查询那条链)": "このアカウントの残高とプランを再取得(残高照会の経路を使用)", "重新读取账号列表和插件状态,不刷新 Token 或查询余额": "Token の更新や残高照会を行わず、アカウント一覧とプラグイン状態を再読み込み", "重查": "再照会", "重置": "リセット", "重置 {date}": "リセット {date}", "重置也不恢复,需手动启用": "リセットしても復帰せず、手動での有効化が必要", "重置周期必须是 30 分钟 ~ 24 小时": "リセット周期は 30 分 ~ 24 時間でなければなりません", "重置方式": "リセット方式", "重置时区": "リセットのタイムゾーン", "重置详情": "リセット詳細", "长期有效": "長期有効", "间隔单位": "間隔単位", "阈值": "しきい値", "降低优先级": "優先度を下げる", "限制器": "リミッター", "限制器 · {n} 个模型": "リミッター · {n} モデル", "限制器 · 账号已跳过": "リミッター · アカウントをスキップ", "限制器:{window}已用 {used} / {threshold} Token": "リミッター:{window}使用済み {used} / {threshold} Token", "限制指标": "制限の指標", "限制类型": "制限タイプ", "限制阈值必须是大于 0 的数字": "制限のしきい値は 0 より大きい数値でなければなりません", "限制阈值必须是非负有限数字": "しきい値は 0 以上の有限な数値で指定してください", "限流": "レート制限", "限流中": "レート制限中", "限流已清除": "レート制限を解除しました", "限额": "上限", "限额状态": "上限ステータス", "隐藏账号名(名字显示为星号)": "アカウント名を隠す(名前はアスタリスクで表示)", "需要人机验证时,在该账号的「套餐明细」中主动开始验证。": "人間認証が必要な場合は、このアカウントの「プラン詳細」で認証を開始してください。", "需要重新登录": "再ログインが必要", "需要验证码时由打开着的主窗口或浏览器面板补铸;库存、补铸状态和失败原因分别显示": "認証が必要な場合、開いているメインウィンドウまたはブラウザのパネルがトークンを生成します。在庫、生成状態、失敗理由は別々に表示されます", "需重登": "再ログイン", "顺序": "順序", "顺序未保存:{message}": "順序を保存できませんでした:{message}", "领取 {time}": "受け取り {time}", "额度": "枠", "额度充足": "利用枠あり", "额度来源": "使用枠の提供元", "额度查询暂不可用。": "使用枠の照会を現在利用できません。", "额度查询未完成,未显示上游原始诊断。": "使用枠の照会は完了しませんでした。上流の未加工の診断情報は表示しません。", "额度窗口读数来自开放平台监控通道(套餐 JWT 那条通道没有额度桶):读的是每 N 小时 / 每周窗口的剩余比例": "枠(ウィンドウ)の読み取り値はオープンプラットフォームの監視チャネルから取得しています(コーディングプランの JWT チャネルには枠がありません)。N 時間ごと / 週ごとのウィンドウの残り割合を読んでいます", "额度详情": "利用枠の詳細", "首次失败后额外重试的次数;默认 3 次,0 = 不重试。手动和自动查询均生效,全部失败后才显示失败并记录日志。": "初回失敗後に追加で試行する回数です。既定は 3 回、0 は再試行なし。手動・自動照会の両方に適用され、すべて失敗した場合のみ失敗を表示し、ログに記録します。", "验证失败:{error}": "認証に失敗しました:{error}", "验证码令牌池接口不可用": "CAPTCHA トークンプールを利用できません", "验证码令牌:{counts}": "認証コードトークン:{counts}", "高级请求": "プレミアムリクエスト", "魔粒": "Magicubes", "默认仅开启最快到期优先;可用余额和账号添加时间默认关闭。": "既定では期限が近い順のみ有効です。利用可能残高とアカウント追加日時の並べ替えは無効です。", "默认保持手动顺序,可按需开启支持的自动排序规则。": "既定では手動順序を維持します。必要に応じて対応する自動並べ替えルールを有効にできます。", "默认展开 / 收起": "既定の展開 / 折りたたみ", "({n} 个未配置查询凭证)": "({n} 個はクエリ用認証情報が未設定)", "(不可用)": "(使用不可)", "(其他订阅,可能未生效)": "(その他のサブスクリプション、未反映の可能性あり)", "(只测了前 {limit} 个,还有 {rest} 个未测)": "(先頭 {limit} 個のみテスト済み、残り {rest} 個は未テスト)", "(名下 {count} 个账号共用)": "(配下の {count} アカウントで共用)", "(已在 Clash 中禁用)": "(Clash で無効化済み)", "(库存为空,等待补铸;请保持主窗口或浏览器面板打开)": "(在庫なし、補充待ち。メインウィンドウまたはブラウザのパネルを開いたままにしてください)", "(未启用套餐池账号,暂不补铸)": "(有効な Start Plan アカウントがないため生成停止中)", "(激活事件补报失败,可能影响领取资格:{message})": "(有効化イベントの追加送信に失敗しました。受け取り資格に影響する可能性があります:{message})", "+ 添加条件": "+ 条件を追加", "+ 添加限制": "+ 制限を追加", ",{countdown}重置": "、{countdown}にリセット", ",只对 OpenCode Zen 这类上游有意义,别的家请关掉。": "、OpenCode Zen のようなアップストリームでのみ意味があります。他のプロバイダーではオフにしてください。", ",已达到上限": "、上限に達しました", ":到「网络代理」页的「订阅管理」里点「同步 Clash Verge」把出口导进池后即可选 —— 那样能集中测试、也能被多个账号共用。": ":「ネットワークプロキシ」ページの「サブスク管理」で「Clash Verge を同期」をクリックして出口をプールにインポートすると選択できます —— そうすれば一括でテストでき、複数のアカウントでも共用できます。", ";": ";", "{count} 个分区有未保存的更改": "{count} 個のセクションに未保存の変更があります", "{count} 个账号共用": "{count} 個のアカウントで共有", "{count} 个账号共用提供商的连接配置。": "このプロバイダーの接続設定は {count} 個のアカウントで共有されています。", "{count} 个账号共用连接配置": "{count} 個のアカウントで接続設定を共有", "✅ 已改回跟随提供商的 Base URL": "✅ プロバイダーの Base URL に追従するよう戻しました", "「{name}」名下 {count} 个账号共用这些连接设置。修改协议或 Base URL 可能中断正在进行的请求。": "この接続設定は「{name}」の {count} 個のアカウントで共有されています。プロトコルや Base URL を変更すると、処理中のリクエストが中断される可能性があります。", "「{name}」名下 {count} 个账号共用;修改协议或地址可能中断正在进行的请求。": "「{name}」の {count} 個のアカウントで共有されています。プロトコルやアドレスを変更すると、処理中のリクエストが中断される可能性があります。", "仅当前账号": "このアカウントのみ", "仅用于 OpenCode Zen 这类上游,普通提供商请保持关闭。": "OpenCode Zen などの上流サービス専用です。通常のプロバイダーではオフのままにしてください。", "代理只作用于当前账号,不改变其他账号的出网方式。": "プロキシはこのアカウントにのみ適用され、他のアカウントの接続方法は変更されません。", "余额读数也是限制器余额规则的数据来源。": "残高の値は、制限ルールの残高条件にも使用されます。", "使用密钥访问上游": "キーを使って上流に接続", "保存后将移除密钥,转发与拉取模型都不发送鉴权头。请确认上游确实无需凭证。": "保存するとキーが削除され、リクエスト転送とモデル取得時に認証ヘッダーを送信しなくなります。上流で認証情報が不要であることを確認してください。", "保存提供商共用配置?": "プロバイダーの共有設定を保存しますか?", "保存更改": "変更を保存", "共用": "共有", "关闭后不参与转发,余额查询不受影响。": "オフにすると転送に使用されなくなります。残高照会には影響しません。", "凭证设置": "認証情報", "出网方式": "接続方法", "前往模型管理": "モデル管理へ", "前往模型管理会关闭账号设置,尚未保存的修改不会生效。": "モデル管理へ移動するとアカウント設定が閉じられ、未保存の変更は破棄されます。", "包含提供商共用配置,将影响 {count} 个账号": "{count} 個のアカウントに影響する共有設定を含みます", "原密钥不会回显;更换密钥不会改变账号 ID。": "既存のキーは表示されません。キーを変更してもアカウント ID は変わりません。", "各分区的更改将统一保存": "すべてのセクションの変更をまとめて保存します", "启用账号": "アカウントを有効にする", "在账号列表中拖动分组或行首把手,调整转发顺序。": "アカウント一覧でグループや行頭のハンドルをドラッグして、転送順序を変更します。", "基本信息": "基本情報", "填写接口基址,无需追加 {path}。": "API のベース URL を入力してください。{path} を追加する必要はありません。", "将同时删除名下 {count} 个账号,无法恢复。": "このプロバイダーの {count} 個のアカウントもすべて削除されます。元に戻せません。", "开启后会改写请求体,补齐会话头与占位工具;未填密钥时使用匿名凭证 public。": "有効にするとリクエスト本文を書き換え、セッションヘッダーとプレースホルダーツールを補います。キーがない場合は匿名認証情報 public を使用します。", "当前没有凭证,转发时会跳过此账号。请填写密钥或选择「无需鉴权」。": "認証情報がないため、転送時にこのアカウントはスキップされます。キーを入力するか「認証不要」を選択してください。", "当前账号": "現在のアカウント", "所有分区中尚未保存的修改都会被放弃。已确认的独立清除操作不受影响。": "すべてのセクションの未保存の変更が破棄されます。確認済みの個別の削除操作には影響しません。", "提供商名称": "プロバイダー名", "改回跟随": "プロバイダーに追従", "改回跟随提供商": "プロバイダーに追従", "改回跟随提供商?": "プロバイダーに追従する設定に戻しますか?", "新密钥待保存": "新しいキーは未保存", "无需鉴权": "認証不要", "显示新输入的密钥": "新しく入力したキーを表示", "本地服务或无需凭证的上游": "ローカルサービスや認証不要の上流", "查询凭证": "照会用認証情報", "模型清单与映射在「模型管理」中维护。": "モデル一覧とマッピングは「モデル管理」で編集します。", "模拟 OpenCode 官方客户端": "OpenCode 公式クライアントをエミュレート", "正在保存…": "保存中…", "正在编辑提供商共用配置": "プロバイダーの共有設定を編集中", "没有未保存的更改": "未保存の変更はありません", "没有规则或全部停用时不限制;跳过后自动恢复,禁用后需手动启用。": "ルールがないか、すべてオフの場合は制限しません。スキップは自動復帰し、無効化した場合は手動で有効にする必要があります。", "清除余额查询凭证?": "残高照会用の認証情報を削除しますか?", "清除已存 API Key?": "保存済みの API Key を削除しますか?", "清除已存密钥": "保存済みキーを削除", "清除查询凭证?": "照会用認証情報を削除しますか?", "用于当前账号的对话、余额查询、模型拉取、模型测试、签到及凭证刷新等上游请求。留空使用提供商默认值;可选预置或直接填写。": "このアカウントのチャット、残高照会、モデル取得・テスト、チェックイン、認証情報の更新など、上流へのリクエストに適用されます。空欄ではプロバイダーの既定値を使用します。プリセットの選択または直接入力ができます。", "用明确的规则保护当前账号的额度。": "明確なルールでこのアカウントの利用枠を保護します。", "留空不修改,替换后点击「保存更改」生效。": "空欄のままなら変更しません。新しいキーは「変更を保存」を押すと反映されます。", "留空保留当前密钥,输入新密钥以替换": "空欄で既存のキーを維持、新しいキーを入力して変更", "确认保存": "保存を確認", "确认后立即生效,不受底部保存按钮控制。没有凭证且未开启「无需鉴权」时,此账号将被转发跳过。": "確認後すぐに反映され、下部の保存ボタンとは独立しています。認証情報がなく「認証不要」もオフの場合、このアカウントは転送時にスキップされます。", "确认后立即生效,不受底部保存按钮控制。通常可继续复用转发用的登录凭证。": "確認後すぐに反映され、下部の保存ボタンとは独立しています。通常は転送用のログイン認証情報を引き続き使用できます。", "确认后立即生效,余额查询可能显示「未配置」。取消账号设置不会恢复已清除的凭证。": "確認後すぐに反映され、残高照会に「未設定」と表示される場合があります。アカウント設定をキャンセルしても、削除済みの認証情報は復元されません。", "确认弹窗不可用,请重新打开页面": "確認ダイアログを利用できません。ページを開き直してください。", "管理当前账号的凭证与可用套餐。": "このアカウントの認証情報と利用可能なプランを管理します。", "统一管理提供商的协议、地址与兼容选项。": "プロバイダーのプロトコル、アドレス、互換性設定をまとめて管理します。", "自定义 API": "カスタム API", "要修改连接地址或协议?": "接続アドレスやプロトコルを変更しますか?", "设置当前账号访问上游的出网方式。": "このアカウントから上流サービスへの接続方法を設定します。", "设置账号名称、启用状态与转发行为。": "アカウント名、有効状態、転送時の動作を設定します。", "请填写有效的 HTTP 或 HTTPS 地址": "有効な HTTP または HTTPS アドレスを入力してください", "请求标识": "リクエスト識別", "请求端点": "リクエスト先", "账号凭证": "アカウント認証情報", "转发行为": "転送時の動作", "达到上限后,将请求交给其他账号。": "上限に達すると、リクエストを他のアカウントに渡します。", "这个账号单独存了一份地址:{url},转发时优先用它。上面改的是提供商共用地址,不会覆盖它。": "このアカウントは独自のアドレス({url})を保存しており、転送時はこちらが優先されます。上で変更するのはプロバイダー共通のアドレスで、この値は上書きされません。", "这个账号将改用提供商当前保存的 Base URL:{url}。确认后立即生效,不受底部保存按钮控制。": "このアカウントはプロバイダーに現在保存されている Base URL({url})を使うようになります。確認するとすぐに反映され、下部の保存ボタンの対象外です。", "连接参数": "接続パラメーター", "连接设置": "接続設定", "配置余额查询凭证、自动刷新间隔与失败重试。": "残高照会用認証情報、自動更新間隔、失敗時の再試行を設定します。", "鉴权方式": "認証方法", "隐藏新输入的密钥": "新しく入力したキーを非表示", "高级兼容": "高度な互換性設定", "默认关闭": "既定ではオフ", " · 模型 {head}{rest}": " · モデル {head}{rest}", " 等 {n} 个": " など {n} 個", "1// 开头的 Google refresh token(也可直接粘贴 refresh_token=… 整行)": "1// で始まる Google refresh token(refresh_token=… の行をそのまま貼り付けても可)", "11 位大陆手机号": "11 桁の中国本土の携帯番号", "1~64 个字符,账号列表里按它分组显示": "1~64 文字、アカウント一覧ではこれでグループ表示されます", "6 位数字": "6 桁の数字", "
  • 没有可自动领的活动
  • ": "
  • 自動で受け取れるイベントはありません
  • ", "

    领到的是套餐赠送积分,不会增加福利模型的 token 池;": "

    受け取るのはプラン特典ポイントで、特典モデルの token プールは増えません;", "ACP 代理配置无效,请重新选择代理。": "ACP のプロキシ設定が無効です。プロキシを選び直してください。", "ACP 会话失败时不自动重发,也不切换到其他接入方式。": "ACP セッションが失敗しても、自動再送や別の接続方式への切り替えは行いません。", "ACP 使用网关电脑上的官方 agy CLI,不是当前手机或浏览器所在设备。请先安装 agy 1.5.0 或更新版本:https://antigravity.google/docs/cli。程序不在默认位置时,可在网关启动环境设置 AGY_PATH。": "ACP はブラウザーやスマートフォンではなく、ゲートウェイのコンピューター上の公式 agy CLI を使用します。まず agy 1.5.0 以降をインストールしてください:https://antigravity.google/docs/cli。標準以外の場所にある場合は、ゲートウェイの起動環境で AGY_PATH を設定できます。", "ACP 尚未返回可用的会话模型目录,请检查官方 CLI 登录状态后重试。": "ACP から利用可能なセッションのモデル一覧が返されていません。公式 CLI のログイン状態を確認して再試行してください。", "ACP 的本机进程仍使用原来的代理。请先在插件页停用再启用 ACP 插件,再使用新的代理。": "ローカル ACP プロセスは以前のプロキシを使用しています。新しいプロキシを使う前に、プラグインページで ACP プラグインを無効化してから再度有効化してください。", "API Key + 控制台令牌(模型调用 + 墨点额度)": "API Key + コンソールトークン(モデル利用 + 墨点残高)", "API 凭证添加暂不能解析代理池引用;请使用自定义代理地址,添加后再在账号设置中调整。": "API 認証情報の追加では、現在プロキシプールの参照を解決できません。カスタムプロキシのアドレスを指定し、追加後にアカウント設定で調整してください。", "API 模板": "API テンプレート", "AWS Builder ID(直接授权,减少一次回填)": "AWS Builder ID(直接認可、貼り付けが 1 回減ります)", "AWS 地区(账号目录所在地区)": "AWS リージョン(アカウントディレクトリの所在地)", "AiHubMix 的 OpenAI 兼容端点,使用 AiHubMix 的 API Key;模型 ID 以平台清单为准": "AiHubMix の OpenAI 互換エンドポイントです。AiHubMix の API Key を使用し、モデル ID はプラットフォームの一覧に従ってください", "Anthropic 兼容端点在 https://api.deepseek.com/anthropic(协议换 anthropic 时填它)": "Anthropic 互換エンドポイントは https://api.deepseek.com/anthropic です(プロトコルを anthropic に切り替えるときにこれを入力)", "Anthropic 协议填根地址,不要带 /v1": "Anthropic プロトコルではルートアドレスを入力し、/v1 は付けないでください", "Antigravity": "Antigravity", "Antigravity 账号的添加方式": "Antigravity アカウントの追加方法", "AtomCode": "AtomCode", "AutoClaw 国内版": "AutoClaw 中国版", "AutoClaw 国际版": "AutoClaw 国際版", "BDUSS 必填;请粘贴**完整 Cookie**(Cookie 编辑器一键导出即可)—— 其中 **PTOKEN 必须保留**,网关要用它向百度换发 KukuAI 业务会话令牌,缺了它模型刷新会报「未登录」。支持整段 Cookie 头、Cookie 编辑器导出的 JSON 数组,或 {BDUSS, STOKEN} 对象。KukuAI 没有刷新机制,登录态过期后重新粘贴即可。": "BDUSS は必須です;**完全な Cookie** を貼り付けてください(Cookie エディターのワンクリック書き出しで構いません)—— このうち **PTOKEN は必ず残してください**。ゲートウェイはこれを使って Baidu から KukuAI の業務セッショントークンを発行してもらうため、欠けるとモデル更新時に「未ログイン」と表示されます。Cookie ヘッダー全体、Cookie エディターが書き出した JSON 配列、または {BDUSS, STOKEN} オブジェクトに対応しています。KukuAI には更新の仕組みがないため、ログイン状態の期限が切れたら貼り直せば済みます。", "BDUSS=…; STOKEN=…(或 Cookie 编辑器导出的 JSON)": "BDUSS=…; STOKEN=…(または Cookie エディターが書き出した JSON)", "CatPaw 的 X-Passport-Token(登录态 Cookie)": "CatPaw の X-Passport-Token(ログイン状態 Cookie)", "ChatGPT / Codex": "ChatGPT / Codex", "ChatGPT API": "ChatGPT API", "ChatGPT API 订阅": "ChatGPT API サブスクリプション", "Claude Code 本机订阅": "Claude Code ローカルサブスクリプション", "Claude 订阅": "Claude サブスクリプション", "Cline Pass 的 API Key 在 app.cline.bot 获取(订阅制);端点为 OpenAI 兼容,模型清单以 Cline 控制台为准,模型名在模型管理里按裸名添加(如 glm-5.2 / kimi-k2.7-code / deepseek-v4-pro);上游按客户端形态校验,所需的客户端请求头已随卡预置": "Cline Pass の API Key は app.cline.bot で取得します(サブスクリプション制)。エンドポイントは OpenAI 互換で、モデル一覧は Cline コンソールが正となります。モデル名はモデル管理で接頭辞なしの名前のまま追加します(例:glm-5.2 / kimi-k2.7-code / deepseek-v4-pro)。上流はクライアントの形態を検証するため、必要なクライアントリクエストヘッダーはこのカードにあらかじめ設定されています", "Cloud project 必填;不会借用其他 Google 提供商的凭证或额度。": "Cloud project は必須です。他の Google プロバイダーの認証情報や使用枠は流用しません。", "Cloud-IDE-JWT(三段点分)": "Cloud-IDE-JWT(3 段のドット区切り)", "Cloudflare Account ID(32 位十六进制)": "Cloudflare アカウント ID(16 進数 32 桁)", "Codex 订阅": "Codex サブスクリプション", "Command Code": "Command Code", "Cursor dashboard API key;loader 按需重新 exchange 模型 token,不提供手动令牌刷新。": "Cursor dashboard API key。loader が必要に応じてモデル用 token を交換します。手動トークン更新は行いません。", "DeepSeek 网页": "DeepSeek Web", "Gemini CLI / Code Assist": "Gemini CLI / Code Assist", "Gemini CLI 凭证文件绝对路径(只读,不复制或写回 refresh token)": "Gemini CLI 認証情報ファイルの絶対パス(読み取り専用。refresh token のコピーや書き戻しは行いません)", "GitHub Copilot": "GitHub Copilot", "GitHub 官方设备码登录": "GitHub 公式デバイスコード認証", "GitHub 登录域名(留空使用 github.com)": "GitHub ログインドメイン(空欄は github.com)", "Google Cloud Project ID(必填,Standard / Enterprise 资格由上游判定)": "Google Cloud Project ID(必須。Standard / Enterprise 利用資格は上流が判定)", "Google Cloud Project ID(必填,Standard / Enterprise 资格由上游判定);默认候选来自 {variable},请明确确认": "Google Cloud Project ID(必須。Standard / Enterprise 利用資格は上流が判定)。既定候補は {variable} から取得しています。明示的に確認してください。", "Google OAuth(Code Assist + Cloud project)": "Google OAuth(Code Assist + Cloud project)", "Google 授权(ACP)": "Google 認証(ACP)", "Groq 的 OpenAI 兼容端点,使用 GroqCloud 的 API Key": "Groq の OpenAI 互換エンドポイントです。GroqCloud の API Key を使用します", "IAM Identity Center(企业账号,直接授权)": "IAM Identity Center(組織アカウント、直接認可)", "JWT(三段点分;也可直接粘贴 Bearer 整行或 data.bin 内容)": "JWT(ドット区切り 3 パート。Bearer 行全体や data.bin の中身を貼っても可)", "JWT(三段点分;也可直接粘贴 chatglm_token=… 整行)": "JWT(3 つのドット区切り部分。chatglm_token=… の行をそのまま貼っても可)", "Kimi / Moonshot 国内版": "Kimi / Moonshot 中国版", "Kimi / Moonshot 国内站 API Key,使用 moonshot.cn 按量接口;不是 Kimi Code 会员入口": "Kimi / Moonshot 中国サイトの API Key を使用し、moonshot.cn の従量課金 API に接続します。Kimi Code 会員向けの接続先ではありません", "Kimi / Moonshot 国际版": "Kimi / Moonshot 国際版", "Kimi / Moonshot 国际站 API Key,使用 moonshot.ai 按量接口;不是 Kimi Code 会员入口": "Kimi / Moonshot 国際サイトの API Key を使用し、moonshot.ai の従量課金 API に接続します。Kimi Code 会員向けの接続先ではありません", "Kiro API key(ksk_…)。": "Kiro API key(ksk_…)。", "Kiro 登录页(Google / GitHub 等)": "Kiro ログインページ(Google / GitHub など)", "Kiro 网页登录": "Kiro Web ログイン", "LM Studio(本地)": "LM Studio(ローカル)", "LobsterAI": "LobsterAI", "LongCat 的 OpenAI 兼容端点,使用 LongCat 平台的 API Key": "LongCat の OpenAI 互換エンドポイントです。LongCat プラットフォームの API Key を使用します", "MClaw 由插件在网关电脑上启动专用 Chrome 窗口,独立登录环境也用于自动续期,不使用系统默认浏览器或应用内嵌窗口。": "MClaw プラグインはゲートウェイのマシン上で専用 Chrome ウィンドウを起動します。独立したログイン環境は自動更新にも使用するため、システムの既定ブラウザーやアプリ内蔵ウィンドウは使用しません。", "MiniMax Code 国内版": "MiniMax Code 中国版", "MiniMax Code 国际版": "MiniMax Code 国際版", "Mistral 的 OpenAI 兼容端点,使用 Mistral 控制台的 API Key": "Mistral の OpenAI 互換エンドポイントです。Mistral コンソールの API Key を使用します", "ModelScope 国内版": "ModelScope 中国版", "ModelScope 国际版": "ModelScope 国際版", "MonkeyCode": "MonkeyCode", "MonkeyCode 国际版": "MonkeyCode 国際版", "MonkeyCode 自动网页登录仅限桌面端;浏览器面板请登录对应官网后粘贴 session。": "MonkeyCode の自動ウェブログインはデスクトップ版専用です。ブラウザの管理画面では、対応する公式サイトにログインして session を貼り付けてください。", "NVIDIA NIM 托管端点,Key 在 integrate.api.nvidia.com 申请": "NVIDIA NIM のマネージドエンドポイント。Key は integrate.api.nvidia.com で申請します", "Nous Portal 的按量 API,使用 Portal 的 API Key;不是旧的订阅登录方式": "Nous Portal の従量課金 API です。従来のサブスクリプションログインではなく、Portal の API Key を使用します", "OfficeAce 果办": "OfficeAce", "QuWork 凭证": "QuWork 認証情報", "QuWork 原设备标识": "QuWork の元のデバイス識別情報", "QwenWork 千问办公": "QwenWork 公共版", "QwenWork 千问办公企业版": "QwenWork 企業版", "StepFun 国内版(按量)": "StepFun 中国版(従量課金)", "StepFun 国内站按量 API;请使用按量 API Key,不要填 Step Plan 套餐 Key": "StepFun 中国サイトの従量課金 API です。Step Plan のプラン用 Key ではなく、従量課金用 API Key を入力してください", "StepFun 国际版(按量)": "StepFun 国際版(従量課金)", "StepFun 国际站按量 API;请使用按量 API Key,不要填 Step Plan 套餐 Key": "StepFun 国際サイトの従量課金 API です。Step Plan のプラン用 Key ではなく、従量課金用 API Key を入力してください", "Tabbit 国内版": "Tabbit 中国版", "Tabbit 国际版": "Tabbit 国際版", "TokenPlan API Key(控制台 → 科研模型 → API Key)": "TokenPlan API Key(コンソール → 科研模型 → API Key)", "User-Agent(可选)": "User-Agent(任意)", "accessToken 是 Accio 的登录凭证(一长串不透明 token,不是 JWT);refreshToken 可选,填了之后到期能自动续期。请填写 {label}账号的凭证 —— {siteNote}(最容易拿到的办法:直接用上方的「网页登录」,不需要手工找 token。)": "accessToken は Accio のログイン認証情報です(長い不透明な token 文字列で、JWT ではありません);refreshToken は任意で、入力すると期限切れ時に自動更新できます。{label}アカウントの認証情報を入力してください —— {siteNote}(最も簡単な方法:上の「ウェブログイン」を使えば token を手動で探す必要はありません。)", "accessToken 是 Trae 的 Cloud-IDE-JWT(三段点分),refreshToken 用于到期自动续期(本家 refreshToken 一次一换:换发一次旧的即作废,所以两份程序别同时刷同一个账号)。
    手工粘贴时请连 machineId / deviceId 一起填:上游把它们与登录时上传的设备公钥绑在一起判设备,凭空换一对会撞 2xxxx 那族设备绑定拒绝。
    没有这三样时的正路是用上方的「网页登录」;容器 / 远程部署形态按提示粘贴地址栏回调地址即可。": "accessToken は Trae の Cloud-IDE-JWT(3 段のドット区切り)です。refreshToken は期限切れ時の自動更新に使用します(本家の refreshToken は 1 回ごとに交換され、一度更新すると古いものは無効になります。そのため 2 つのプログラムで同じアカウントを同時に更新しないでください)。
    手動で貼り付ける場合は machineId / deviceId も一緒に入力してください:アップストリームはこれらをログイン時にアップロードされたデバイス公開鍵と紐付けてデバイスを判定するため、根拠なく別のペアにすると 2xxxx 系のデバイスバインディング拒否に当たります。
    この 3 つがない場合の正道は上の「ウェブログイン」を使うことです;コンテナ / リモートデプロイ形態では案内に従ってアドレスバーのコールバックアドレスを貼り付けてください。", "chat.deepseek.com 的 userToken.value,不是收费 API Key": "chat.deepseek.com の userToken.value。有料 API Key ではありません", "github-copilot/apps.json 或 opencode/auth.json": "github-copilot/apps.json または opencode/auth.json", "github.com 或 company.ghe.com": "github.com または company.ghe.com", "github.com:Iv1.b507a08c87ecfe98 或 github-copilot": "github.com:Iv1.b507a08c87ecfe98 または github-copilot", "monkeycode_ai_session 的值(也可直接粘贴整段 Cookie)": "monkeycode_ai_session の値(Cookie 全体をそのまま貼り付けても可)", "ms- 开头的 API 令牌": "ms- で始まる API トークン", "project 必填;只读引用文件,模块的 OAuth 续期不写回客户端。": "project は必須です。ファイルを読み取り専用で参照し、モジュールの OAuth 更新はクライアントに書き戻しません。", "refreshToken 可选,填了到期可自动续期;两者都能从小浣熊客户端登录态文件里取到。": "refreshToken は任意で、入力すると期限切れ時に自動更新できます;どちらも小浣熊クライアントのログイン状態ファイルから取得できます。", "refreshToken 可选,填了可自动续期;两者都能从客户端登录态文件取到。同一个 Cline 账号两个池都能用,这里归入 {label}。": "refreshToken は任意で、入力すると自動更新できます;どちらもクライアントのログイン状態ファイルから取得できます。同じ Cline アカウントはどちらのプールでも使え、ここでは {label} に分類されます。", "token 支持 enc: 前缀(Windows 上自动解密)。未填 refreshToken 无法自动续期。": "token は enc: プレフィックスに対応しています(Windows では自動復号)。refreshToken を入力しないと自動更新できません。", "token 是登录态 Cookie;CatPaw 没有刷新机制,过期后需在客户端重新登录。": "token はログイン状態 Cookie です;CatPaw には更新の仕組みがないため、期限切れ後はクライアントで再ログインが必要です。", "token=…; user_id=…(也可粘贴 Copy as cURL 整段)": "token=…; user_id=…(Copy as cURL の全体を貼り付けても可)", "user_ 开头的 API Key(也可直接粘贴 Authorization: Bearer … 整行)": "user_ で始まる API Key(Authorization: Bearer … の行をそのまま貼り付けても可)", "xAI 的 OpenAI 兼容端点,使用 xAI 控制台的 API Key;不是 Grok 网页订阅": "xAI の OpenAI 互換エンドポイントです。Grok Web のサブスクリプションではなく、xAI コンソールの API Key を使用します", "your-company.vpc.qwenwork.cn 或 https://your-company.vpc.qwenwork.cn": "your-company.vpc.qwenwork.cn または https://your-company.vpc.qwenwork.cn", "{label} 网页登录的打开方式": "{label} のウェブログインの開き方", "{label} 账号地区": "{label} アカウントの地域", "{label} 账号的添加方式": "{label} アカウントの追加方法", "{label}账号已添加": "{label} アカウントを追加しました", "{label}(只读本机)": "{label}(ローカル・読み取り専用)", "{message}:请在打开的页面完成滑块,完成后回到这里点「已完成验证,继续发送」": "{message}:開いたページでスライダーを完了し、戻って「認証完了、再送信」をクリックしてください", "{message}:请手动打开验证页面 {url},完成后回到这里点「已完成验证,继续发送」": "{message}:認証ページ {url} を手動で開き、完了後に戻って「認証完了、再送信」をクリックしてください", "{name} 不是合法 JSON:{reason}": "{name} は有効な JSON ではありません:{reason}", "{name}要粘一个 JSON 对象(形如 {sample})": "{name} には JSON オブジェクトを貼り付けてください(例:{sample})", "{n} 个账号": "{n} 個のアカウント", "{n} 个账号,点击添加": "{n} 個のアカウント、クリックして追加", "{seconds}s 后重发": "{seconds} 秒後に再送", "✅ {label}账号已添加": "✅ {label} アカウントを追加しました", "✅ {label}账号已添加{name}": "✅ {label} アカウントを追加しました{name}", "✅ 已从 cc-switch 导入 {n} 个供应商": "✅ cc-switch から {n} 個のプロバイダーをインポートしました", "✅ 已创建自定义提供商「{name}」并添加账号": "✅ カスタムプロバイダー「{name}」を作成し、アカウントを追加しました", "✅ 已删除自定义提供商「{name}」{accounts}{keys}": "✅ カスタムプロバイダー「{name}」を削除しました{accounts}{keys}", "✅ 已更新已有账号{name}(同一把 API Key 只保留一条,重复添加会合并)": "✅ 既存アカウント{name}を更新しました(同じ API Key は 1 件のみ保持し、再追加はマージされます)", "✅ 已更新已有账号{name}(同一提供商内,同一把 API Key 只保留一条)": "✅ 既存のアカウント{name}を更新しました(同じプロバイダー内では API Key ごとに 1 件のみ保持)", "✅ 登录成功,{edition}账号已加入列表": "✅ ログインに成功し、{edition}アカウントをリストに追加しました", "✅ 领取成功:{planId}{period}": "✅ 受け取りに成功しました:{planId}{period}", " 同一家可以放多把 key,按优先级轮换。": " 同じプロバイダーに複数の key を置くことができ、優先度に従ってローテーションされます。", "「{name}」的账号添加功能还在开发中,敬请期待。": "「{name}」のアカウント追加機能は開発中です。ご期待ください。", "一个 Key 用遍多家模型,模型名用「厂商/模型」全称(如 deepseek/deepseek-chat)": "1 つの Key で複数のプロバイダーのモデルを利用できます。モデル名は「ベンダー/モデル」の完全名を指定します(例:deepseek/deepseek-chat)", "上游不要鉴权时留空,并勾选下面一项(留空又不勾会被当成未配置凭证)": "アップストリームが認証不要の場合は空欄にし、下の項目にチェックを入れてください(空欄かつ未チェックでは認証情報未設定として扱われます)", "上游信息": "アップストリーム情報", "上游没有给出验证页面地址": "上流が認証ページのアドレスを返しませんでした", "上游要求人机验证,但没有给出验证页面地址,请稍后重试": "上流が人間認証を要求していますが、認証ページのアドレスが返されませんでした。しばらくしてから再試行してください", "不使用预置": "プリセットを使用しない", "不可领({status})": "受け取り不可({status})", "不授权": "許可しない", "不支持导入": "インポートに対応していません", "不是有效的凭证文件:内容要是一个 JSON 对象": "有効な認証情報ファイルではありません:内容は JSON オブジェクトである必要があります", "不是有效的凭证文件:需要包含 accessToken 与 uid": "有効な認証情報ファイルではありません:accessToken と uid が必要です", "不是自定义提供商": "カスタムプロバイダーではありません", "不需要 Key:转发与拉取模型都不发送鉴权头": "Key は不要:転送とモデル取得のいずれも認証ヘッダーを送信しません", "不需要登录:点下面的按钮,网关会直接在智谱清言换发一份访客凭证并加入账号列表(也可以先填个备注名)。访客凭证可以直接用来对话,免费额度由上游按设备发放。

    注意:访客账号没有积分体系 —— 它与「会员积分」「每日登录积分」「活动领取」相关的接口一律需要登录,因此那些能力对访客会如实跳过(账号页的积分、签到中心都不显示读数)。想要积分就用「填写凭证」粘一个已登录账号的令牌,或「导入桌面端登录态」。": "ログイン不要です。下のボタンを押すと、ゲートウェイが智谱清言からゲスト資格情報を直接取得してアカウント一覧に追加します(先にメモ名を入力しても構いません)。ゲスト資格情報はそのまま会話に使え、無料枠は上流がデバイス単位で発行します。

    注意:ゲストアカウントにはポイント体系がありません。会員ポイント・毎日ログインポイント・アクティビティ受け取りの各インターフェースはすべてログインが必要なため、これらの機能はゲストではスキップされます(アカウントページのポイントや签到センターには数値が表示されません)。ポイントが必要な場合は「資格情報を入力」でログイン済みアカウントのトークンを貼り付けるか、「デスクトップのログイン状態をインポート」してください。", "两版账号可同时保存,各自一份模型清单(国内版与国际版是两家提供商,可分别启用与映射)。": "両版のアカウントは同時に保存でき、それぞれ独自のモデルカタログを持ちます(中国版と国際版は別々のプロバイダーで、個別に有効化とマッピングができます)。", "中国版": "中国版", "也支持本软件导出的单账号 JSON 文件,保留账号凭证与附加信息。": "本アプリが出力した単一アカウントの JSON ファイルにも対応し、認証情報と追加データを保持します。", "仅 API Key(模型调用,不含墨点额度)": "API Key のみ(モデル利用、墨点残高なし)", "仅填写自己的 GitHub 令牌": "自分の GitHub トークンのみを入力", "仅支持仍有有效 Gemini Code Assist Standard / Enterprise 资格并绑定 Cloud project 的账号。个人免费版及 Google AI Pro / Ultra 已于 2026-06-18 停止支持;Standard / Enterprise 新订阅已于 2026-10-09 停售。不会切换到其他 Google 产品或额度池。": "有効な Gemini Code Assist Standard / Enterprise 利用資格があり、Cloud project に紐付いた既存アカウントのみを対象とします。個人無料版と Google AI Pro / Ultra は 2026-06-18 に対応を終了し、Standard / Enterprise の新規契約は 2026-10-09 に販売終了しました。他の Google 製品や使用枠には切り替えません。", "仅读取本机 Claude Code 的当前订阅登录。若未登录,请先在自己的终端登录;本地凭证仍由 CLI 管理。": "ローカル Claude Code の現在のサブスクリプション認証のみを読み取ります。未ログインの場合は自分の端末で先にログインしてください。ローカル認証情報は引き続き CLI が管理します。", "今天没有需要领的活动(都已到账)": "本日受け取る必要のあるイベントはありません(すべて付与済み)", "今天(北京时间 {day})已试 {attempts} 次,还能试 {left} 次{next}
    ": "本日(北京時間 {day})は {attempts} 回試行済み、あと {left} 回試せます{next}
    ", "从 Google 官方源下载并核验 SHA-512;下载使用网关默认出口。更新失败保留旧版,进行中的对话不受替换影响。": "Google の公式配布元からゲートウェイの既定の接続でダウンロードし、SHA-512 を検証します。更新に失敗しても旧版を保持し、進行中の会話は中断しません。", "从别的机器(或 OfficeAce 桌面端 models.json)取三项贴进来:模型网关基址(baseUrl,形如 https://modelgw-…/v2)与 modelAppKey / modelAppSecret。这三项就能转发(网关凭据不过期);控制面临时凭据(accessKeyId 等)可选,留空则额度/自动续期不可用,但不影响转发。": "別のマシン(または OfficeAce デスクトップ版の models.json)から次の 3 項目を取り出して貼り付けてください:モデルゲートウェイのベース URL(baseUrl、https://modelgw-…/v2 の形式)と modelAppKey / modelAppSecret。この 3 項目だけで転送できます(ゲートウェイ認証情報は無期限)。コントロールプレーンの一時認証情報(accessKeyId など)は任意で、空欄の場合は残高照会と自動更新が使えませんが、転送には影響しません。", "从本机导入桌面端登录态": "本機からデスクトップ版のログイン状態をインポート", "任务镜像 id": "タスクイメージ id", "余额查询": "残高照会", "你企业的千问办公旗舰版域名(企业管理后台地址栏的域名,如 your-company.vpc.qwenwork.cn)": "QwenWork Enterprise 旗艦版のドメイン(企業管理画面のアドレスバーにあるドメイン。例: your-company.vpc.qwenwork.cn)", "使用 Google 账号登录": "Google アカウントでログイン", "使用 Zai 账号登录": "Zai アカウントでログイン", "使用 {name} 模板新建提供商": "{name} テンプレートでプロバイダーを作成", "使用个人访问令牌(PAT)": "個人アクセストークン(PAT)を使用", "使用本机 Claude Code 登录": "ローカル Claude Code の認証を使用", "使用本机 Kimi Work 登录": "ローカル Kimi Work の認証を使用", "使用模板新建提供商": "このテンプレートでプロバイダーを作成", "使用网页令牌,不是收费 API Key。": "有料 API Key ではなく、Web トークンを使用してください。", "使用自己的 GitHub 账号授权;模型条款须在官方客户端手动确认。": "自分の GitHub アカウントで認可します。モデル規約は公式クライアントで手動確認が必要です。", "先在网关所在机器启动 LM Studio 服务;localhost 指向网关所在机器,远程或容器部署请改为网关可访问的地址。默认无需鉴权;启用认证后请取消「该上游无需鉴权」并填写真实 API Key": "まずゲートウェイが動作するマシンで LM Studio サーバーを起動してください。localhost はゲートウェイのマシンを指します。リモート環境やコンテナでは、ゲートウェイから接続できるアドレスに変更してください。既定では認証不要です。認証を有効にした場合は「このアップストリームは認証不要」のチェックを外し、実際の API Key を入力してください", "免费模型不用填 Key(默认勾上「该上游无需鉴权」,网关自动用匿名凭证);付费模型则填 Zen 的 API Key。免费档上游只认官方客户端形态,已默认开启「伪装 OpenCode 官方客户端」": "無料モデルでは Key の入力は不要です(既定で「このアップストリームは認証不要」がチェックされ、ゲートウェイは自動的に匿名認証情報を使用します);有料モデルでは Zen の API Key を入力します。無料枠のアップストリームは公式クライアントの形態しか受け付けないため、「OpenCode 公式クライアントの偽装」が既定で有効になっています", "关联用户指定的本地 Copilot 凭证(只读)": "ユーザー指定のローカル Copilot 認証情報を関連付け(読み取り専用)", "内嵌窗口": "内蔵ウィンドウ", "内嵌窗口打开;关窗即取消等待(Google 账号被拒时改用系统浏览器)": "内蔵ウィンドウで開きます;ウィンドウを閉じると待機をキャンセルします(Google アカウントが拒否された場合はシステムブラウザをお使いください)", "内嵌窗口打开;完成后自动加入列表,关窗即取消等待": "内蔵ウィンドウで開きます;完了後は自動でリストに追加され、ウィンドウを閉じると待機をキャンセルします", "内嵌窗口打开;扫码完成后自动加入列表,关窗即取消等待": "内蔵ウィンドウで開きます。読み取りが完了すると自動で一覧に追加され、ウィンドウを閉じると待機を中止します", "内嵌窗口用全新环境,多账号互不影响;关窗即取消等待": "内蔵ウィンドウは新しい環境を使うため、複数のアカウントが互いに影響しません;ウィンドウを閉じると待機をキャンセルします", "内嵌窗口登录": "アプリ内ウィンドウでログイン", "内嵌窗口(推荐)": "内蔵ウィンドウ(推奨)", "准备验证…": "認証を準備中…", "凭据 JSON": "認証情報 JSON", "凭证 JSON 或模型凭证": "認証 JSON またはモデル認証情報", "凭证仅发送至当前网关": "認証情報はこのゲートウェイにのみ送信されます", "凭证文件在哪?": "認証情報ファイルの場所は?", "凭证文件类型": "認証情報ファイルの種類", "创建并添加账号": "作成してアカウントを追加", "创建这个提供商,并同时建立它的第一个账号。": "このプロバイダーを作成し、同時にその最初のアカウントを作成します。", "删除功能不可用(脚本未就绪)": "削除機能は利用できません(スクリプト未準備)", "删除失败:{reason}": "削除に失敗しました:{reason}", "删除此提供商": "このプロバイダーを削除", "千问办公 国内版": "QwenWork(中国版)", "千问办公 国际版": "QwenWork(国際版)", "千问办公{label}暂时无法登录:上游只接受它自己的官方回调地址,不论证码到本机。": "QwenWork {label} は現在ログインできません。上流は自社の公式コールバックアドレスのみを受け付けるため、認可コードがこの端末に戻りません。", "原样提交本次流程的完整回调 URL。": "今回のフローの完全なコールバック URL を変更せず送信してください。", "去安装提供商插件包": "プロバイダープラグインパックをインストール", "及 {n} 个账号": "、および {n} 個のアカウント", "发送中…": "送信中…", "发送失败:{message}": "送信に失敗しました:{message}", "发送未确认:登录窗口已弹出,请在弹出的窗口中手动完成登录": "送信は未確認です:ログインウィンドウが開きました。表示されたウィンドウで手動でログインを完了してください", "取消失败:{message}": "キャンセルに失敗しました:{message}", "取消安装": "インストールをキャンセル", "取消等待": "待機をキャンセル", "只使用此路线签发的 OAuth 凭证;direct SIWC 与 Codex 客户端身份不同。": "この経路用に発行された OAuth 認証情報のみを使用します。direct SIWC と Codex はクライアント識別情報が異なります。", "只关联真实 CLI 2.1.259+ 的当前订阅;不代登录、不复制或续期客户端凭证。": "正規 CLI 2.1.259+ の現在の契約のみを関連付けます。ログインの代行、認証情報の複製・更新は行いません。", "只拿到 JWT 时填这里;Cookie 里有 token 可留空": "JWT だけを持っている場合に入力。Cookie に token が含まれていれば空欄で可", "只有「内嵌窗口」能恢复第三方入口:系统浏览器里我们无法改动登录页": "「内蔵ウィンドウ」でのみサードパーティの入り口を復元できます:システムブラウザではログインページを変更できないためです", "只看这一类": "この分類のみ", "只读引用 Grok Build home/scope/account;每次读取当前登录态,不复制 token,不回退退出前快照,不主动续期;源有效期未知时不作长期有效承诺。": "Grok Build home/scope/account を読み取り専用で参照します。毎回現在の認証を読み取り、token の複製、ログアウト前のスナップショットへの復帰、更新は行いません。元の期限が不明な場合、長期有効とは保証しません。", "只读引用本机 Kiro CLI/IDE;每次读取校验同一邮箱,不复制 token、不主动续期或回写,失效后由原客户端重登或同步。": "ローカル Kiro CLI/IDE を読み取り専用で参照します。各読み取りで同じメールアドレスを確認し、token の複製・更新・書き戻しは行いません。失効後は元のクライアントで再ログインまたは同期してください。", "只读所选标准文件与账号条目并验证 GitHub/Copilot 身份;只保存引用,不保存令牌副本,不扫描目录、读取 keychain 或运行 CLI。": "選択した標準ファイルとアカウント項目のみを読み取り、GitHub/Copilot の識別情報を検証します。参照のみを保存し、トークンのコピー、ディレクトリ走査、keychain の読み取り、CLI 実行は行いません。", "只读校验明确选择的本机凭证文件;仅保存引用与稳定身份,不复制或续期原客户端令牌。": "明示的に選択したローカル認証情報ファイルのみを読み取り専用で検証します。参照と安定した識別情報のみを保存し、元のクライアントのトークンはコピー・更新しません。", "只读用户明确指定的文件和账号条目,不自动扫描。": "ユーザーが明示したファイルとアカウント項目のみを読み取り、自動走査は行いません。", "只读验证所选 Gemini CLI 登录态和指定 project 的 Code Assist Standard / Enterprise 资格;不会启动 CLI、续期或复制令牌。": "選択した Gemini CLI の認証状態と指定 project の Code Assist Standard / Enterprise 利用資格を読み取り専用で検証します。CLI の起動やトークンの更新・コピーは行いません。", "只读验证本机 Claude Code 当前订阅登录;凭证仍由原 CLI 管理。": "ローカル Claude Code の現在のサブスクリプション認証を読み取り専用で検証します。認証情報は引き続き元の CLI が管理します。", "只读验证本机 Kimi 桌面版已有的 Work 登录,不复制令牌;账号可能没有可用模型。": "ローカル Kimi デスクトップの既存 Work 認証を読み取り専用で検証し、トークンはコピーしません。利用可能なモデルがない場合があります。", "可选": "任意", "可选(cloudaicompanionProject):留空由网关自动发现": "任意(cloudaicompanionProject):空欄の場合はゲートウェイが自動検出します", "可选,仅远程兑换码激活需要;从官方客户端读取": "任意。リモートでのコード有効化時のみ必要です。公式クライアントから読み取ってください。", "可选,展示用": "任意、表示用", "可选,没有则无法自动续期": "任意、ないと自動更新できません", "可选,用于生成账号标识": "任意。アカウント識別子の生成に使用", "可选,留空使用凭据里的 user_name": "任意、空欄の場合は認証情報の user_name を使用", "可选,留空使用账号名或邮箱": "任意。空欄の場合はアカウント名またはメールアドレスを使用します", "可选,留空使用账号姓名、邮箱或令牌指纹": "任意、空欄の場合はアカウントの氏名、メールアドレス、またはトークンフィンガープリントを使用", "可选,留空使用账号昵称或邮箱": "任意、空欄の場合はアカウントのニックネームまたはメールアドレスを使用", "可选,留空则用 key 尾号": "任意、空欄の場合は key の末尾を使用", "可选,留空则用 userId": "任意、空欄の場合は userId を使用", "可选,留空则用上游账号昵称": "任意・空欄なら上流のアカウント名を使用", "可选,留空则用上游返回的账号名或账号 id": "任意、空欄の場合はアップストリームが返したアカウント名またはアカウント id を使用", "可选,留空则用凭证里的账号名": "任意、空欄の場合は認証情報のアカウント名を使用", "可选,留空则用文件里的昵称": "任意。空欄の場合はファイル内のニックネームを使用", "可选,留空则用登录名或 uid": "任意、空欄の場合はログイン名または uid を使用", "可选,留空则用脱敏手机号": "任意、空欄の場合はマスク済み電話番号を使用", "可选,留空则用脱敏手机号或 userId": "任意、空欄の場合はマスク済み電話番号または userId を使用", "可选,留空则用账号 uk": "任意、空欄の場合はアカウントの uk を使用", "可选,留空则用账号昵称": "任意。空欄ならアカウントのニックネームを使用", "可选,留空则用账号昵称或 userId": "任意。空欄の場合はアカウントのニックネームまたは userId を使用", "可选,留空则用邮箱或令牌尾号": "任意、空欄の場合はメールアドレスまたはトークンの末尾を使用", "可选,留空用「AtomCode」": "任意。空欄なら「AtomCode」", "可选,留空用「OfficeAce 果办」": "任意、空欄の場合は「OfficeAce」を使用", "可选,留空自动生成": "任意、空欄の場合は自動生成", "可选,留空自动用昵称": "任意、空欄の場合はニックネームを自動使用", "可选,给这个访客账号起个备注名": "任意。このゲストアカウントのメモ名", "可选,续期时带上": "任意、更新時に一緒に送信されます", "可选,讯飞侧 userid": "任意、iFlytek 側の userid", "可选:发起对话必需,留空则由网关从该账号已有任务里自动发现,发现不到时之后手动补": "任意;会話の開始に必須です。空欄の場合はゲートウェイがこのアカウントの既存タスクから自動検出します。見つからない場合は後で手動で補ってください。", "可选:账号邮箱,用于展示与身份识别(换新令牌也能认回同一账号)": "任意;アカウントのメールアドレスで、表示と身元識別に使用します(新しいトークンに替えても同じアカウントとして認識されます)", "可选;UUID 形态,与凭据同生共死": "任意;UUID 形式で、認証情報と一体で管理されます", "可选;填了才能到期自动续期": "任意;入力すると期限切れ時に自動更新できます", "可选;用于去重与展示名(留空时网关会问一次上游)": "任意;重複排除と表示名に使用します(空欄の場合、ゲートウェイがアップストリームに一度問い合わせます)", "可选;用于生成账号 id 与展示名": "任意;アカウント id と表示名の生成に使用します", "可选;纯数字串(上游只收 8–24 位数字)": "任意;数字のみの文字列(アップストリームは 8–24 桁の数字のみ受け付けます)", "可领取": "受け取り可能", "同一家可以混着放:有 Key 的账号与无鉴权账号各按各的规则走;无需鉴权的账号也能并存多条(各自可配不同的出网代理)": "同じプロバイダーに API Key ありのアカウントと認証不要アカウントを混在でき、それぞれの規則でルーティングされます。認証不要アカウントも複数併存でき、それぞれ別の送信プロキシを設定できます", "同地址换 anthropic 协议即走它的 Claude 兼容端点。转发必须填 OpenCode Go 的 API Key(订阅制;获取模型清单不需要 Key,但发请求上游会回 401「Missing API key」)": "同じアドレスでプロトコルを anthropic に変えると、その Claude 互換エンドポイントを使用します。転送には OpenCode Go の API Key が必須です(サブスクリプション制;モデルカタログの取得に Key は不要ですが、リクエストを送るとアップストリームが 401「Missing API key」を返します)", "响应为空": "応答が空です", "商汤日日新的 OpenAI 兼容端点;余额查询走控制台账号密码(见下方「余额查询」一段)": "SenseNova の OpenAI 互換エンドポイント。残高照会はコンソールのアカウント / パスワードを使います(下の「残高照会」の節を参照)", "回调已提交,仍需等待网关确认账号登录完成。": "コールバックを送信しました。ゲートウェイがログイン完了を確認するまでお待ちください。", "回调未被接受,请重新复制本次登录的完整回调地址": "コールバックが受理されませんでした。今回のログインの完全なコールバック URL をもう一度コピーしてください。", "国内版": "中国版", "国内版与**国际版是两套独立的账号与套餐**,凭证与领取的套餐都不通用。": "中国版と**国際版は 2 組の独立したアカウントとプラン**で、認証情報と受け取ったプランはどちらも共用できません。", "国内版登录页没有 Google / GitHub 入口(它用微信 / 手机号 / 邮箱登录)": "中国版のログインページには Google / GitHub の入り口がありません(WeChat / 電話番号 / メールアドレスでログインします)", "国内版的登录站点是 www.accio-ai.com,与国际版不是同一站。": "中国版のログインサイトは www.accio-ai.com で、国際版とは別のサイトです。", "国内版(WorkBuddy)": "中国版(WorkBuddy)", "国内站为 https://api.siliconflow.cn/v1": "中国版サイトは https://api.siliconflow.cn/v1", "国内站(minimaxi.com);OpenAI 兼容地址为 https://api.minimaxi.com/v1": "中国版サイト(minimaxi.com);OpenAI 互換アドレスは https://api.minimaxi.com/v1", "国际版": "国際版", "国际版 z.ai 的 Coding 套餐;OpenAI 兼容地址为 https://api.z.ai/api/coding/paas/v4": "国際版 z.ai の Coding プラン;OpenAI 互換アドレスは https://api.z.ai/api/coding/paas/v4", "国际版与国内版是**两套独立的账号**(同一账号体系的两个站点),凭证不通用。": "国際版と中国版は**2 組の独立したアカウント**です(同じアカウント体系の 2 つのサイト)。認証情報は共用できません。", "国际版与国内版账号体系独立,请填国际版的凭证。未填 refreshToken 无法自动续期。": "国際版と中国版はアカウント体系が独立しています。国際版の認証情報を入力してください。refreshToken を入力しないと自動更新できません。", "国际版登录页默认只显示邮箱登录,勾选后恢复 Google / GitHub / X 入口": "国際版のログインページは既定でメールアドレスログインのみ表示されます。チェックすると Google / GitHub / X の入り口が復元されます", "国际版的推理站点是 api.z.ai,与国内版不是同一站;套餐也各自独立。": "国際版の推論サイトは api.z.ai で、中国版とは別のサイトです;プランもそれぞれ独立しています。", "国际版(WorkBuddy AI)": "国際版(WorkBuddy AI)", "国际站 Coding 套餐;OpenAI 兼容地址为 https://api.minimax.io/v1": "国際版サイトの Coding プラン;OpenAI 互換アドレスは https://api.minimax.io/v1", "在 AtomGit 的 AtomCode 页面登出后取得两项贴进来:accessToken 与 refreshToken。续期令牌建议填写——本家令牌不是 JWT(约 7 天到期,读不到过期时间),没有它账号无法自动续期,到期只能重新登录。": "AtomGit の AtomCode ページから accessToken と refreshToken の 2 つを取得して貼り付けてください。リフレッシュトークンの入力推奨 —— このプロバイダーのトークンは JWT ではなく(約 7 日で失効し、失効時刻も読み取れません)、これが無いと自動更新できず、失効後は再ログインが必要になります。", "在 DeepSeek 官网完成登录,自动加入账号列表。": "DeepSeek 公式サイトでログインすると、アカウントが自動で追加されます。", "在 GitHub 输入设备码 {code},核对账号与授权权限。设备码过期后需要重新发起登录。": "GitHub でデバイスコード {code} を入力し、アカウントと認可権限を確認してください。コードが期限切れになった場合はログインを再度開始してください。", "在 cc-switch 里找到": "cc-switch で", "在 chat.deepseek.com 登录本人账号后,从浏览器开发者工具的 Application → Local Storage 复制 userToken 的 value。Cookie 可选,需补充时粘贴该站点请求里的完整 Cookie;登录态失效或要求人机验证时,请回官方网页手动登录后更新。这里不接受收费 API Key。": "chat.deepseek.com で自分のアカウントにログインし、ブラウザーの開発者ツールの Application → Local Storage から userToken の value をコピーしてください。Cookie は任意です。必要な場合は、このサイトへのリクエストの Cookie ヘッダー全体を貼り付けてください。セッションが無効になった場合や人間による認証が必要な場合は、公式サイトで手動ログインして認証情報を更新してください。有料 API Key は使用できません。", "在 web.tabbit.ai 登录后,从开发者工具 Application → Cookies 复制 token 与 user_id,或直接粘贴该站点请求的 Copy as cURL 整段。国际站没有可复刻的网页授权回调,手机号登录也处在上游灰度里,所以只能导入已有登录态。登录态有效期约 7 天,过期后重新导入。Cookie 与 JWT 至少填一项。": "web.tabbit.ai にログイン後、開発者ツールの Application → Cookies から token と user_id をコピーするか、そのサイトへのリクエストの Copy as cURL 全体を貼り付けてください。国際サイトには再現可能な Web 認証コールバックがなく、電話番号ログインも上流の段階的公開中であるため、既存のログイン状態のみ取り込めます。ログイン状態の有効期間は約 7 日で、期限切れ後は再取り込みが必要です。Cookie と JWT の少なくとも一方を入力してください。", "在 web.tabbit.com 登录后,从开发者工具 Application → Cookies 复制 token 与 user_id,或直接粘贴该站点请求的 Copy as cURL 整段。登录态有效期约 7 天,上游没有续期接口,过期后重新导入即可。Cookie 与 JWT 至少填一项。": "web.tabbit.com にログイン後、開発者ツールの Application → Cookies から token と user_id をコピーするか、そのサイトへのリクエストの Copy as cURL 全体を貼り付けてください。ログイン状態の有効期間は約 7 日で、上流に更新エンドポイントはありません。期限切れ後は再取り込みしてください。Cookie と JWT の少なくとも一方を入力してください。", "在内嵌窗口里完成官方登录,成功后自动加入账号列表。": "内蔵ウィンドウで公式ログインを完了してください。成功すると自動でアカウント一覧に追加されます。", "在{label}的 Qoder 账号设置 → Integrations 生成 PAT(别填 Google / GitHub 的令牌)。两个地区的账号与凭证不通用。": "{label} の Qoder アカウント設定 → Integrations で PAT を生成してください(Google / GitHub のトークンは入力しないでください)。2 つの地域のアカウントと認証情報は共用できません。", "在应用内嵌窗口完成 WPS 登录,登录凭据仅交给原插件校验并保存到当前网关。": "アプリ内ウィンドウで WPS にログインします。認証情報は元のプラグインにのみ渡して検証し、このゲートウェイに保存します。", "在所选站点的 MonkeyCode 官方页面完成登录和验证码,成功后自动读取登录态并加入账号列表,无需手动复制 Cookie。": "選択した地域の MonkeyCode 公式ページでログインと認証を完了してください。セッションを自動取得してアカウント一覧に追加するため、Cookie のコピーは不要です。", "在打开的官方授权页里用微信扫码登录(页面会直接显示二维码)。扫码成功后自动加入账号列表。": "開いた公式認可ページで WeChat の QR コードを読み取ってログインします(ページに QR コードが直接表示されます)。読み取りに成功すると自動でアカウント一覧に追加されます。", "在打开的官方登录页里完成登录,成功后自动加入账号列表。": "開いた公式ログインページでログインすると、成功後に自動でアカウント一覧に追加されます。", "在打开的登录页里用百度账号登录 KukuAI 主站(手机验证码 / 扫码均可),登录成功后自动加入账号列表。网关会向百度换发 KukuAI 业务会话令牌(依赖本机已安装库库AI 客户端)。": "開いたログインページで Baidu アカウントを使って KukuAI 本サイトにログインします(SMS コード / QR スキャンのどちらも可)。成功後は自動でアカウント一覧に追加されます。ゲートウェイは Baidu と KukuAI 業務セッショントークンを交換します(本機に庫庫AI クライアントのインストールが必要)。", "在打开的登录页里登录 Google 账号(Antigravity 的授权页),授权完成后自动加入账号列表。": "開いたログインページ(Antigravity の認証ページ)で Google アカウントにログインすると、認証完了後に自動でアカウント一覧に追加されます。", "在打开的窗口里用百度账号登录 KukuAI 主站(手机验证码 / 扫码均可),登录成功后自动加入账号列表。网关会向百度换发 KukuAI 业务会话令牌(依赖本机已安装库库AI 客户端)。": "開いたウィンドウで Baidu アカウントを使って KukuAI 本体サイトにログインしてください(SMS 認証コード / QR コードのいずれも可)。ログインに成功すると自動でアカウント一覧に追加されます。ゲートウェイは Baidu から KukuAI の業務セッショントークンを発行してもらいます(本機に KukuAI クライアントがインストールされている必要があります)。", "在打开的窗口里登录 Google 账号(Antigravity 的授权页),授权完成后自动加入账号列表。": "開いたウィンドウで Google アカウントにログインしてください(Antigravity の認可ページ)。認可が完了すると自動でアカウントリストに追加されます。", "在打开的页面里登录千问办公{label}({site})的账号,登录完成后会自动加入列表。两版的账号与凭证不通用。": "開いたページで QwenWork {label}({site})のアカウントにログインしてください。完了すると自動で一覧に追加されます。両エディションのアカウントと資格情報は共用できません。", "在浏览器中打开登录页": "ブラウザでログインページを開く", "在系统浏览器授权指定 project 的 Code Assist Standard / Enterprise;账号与 project 仍须通过真实预检。": "指定 project の Code Assist Standard / Enterprise をシステムブラウザーで認可します。アカウントと project は実際の事前確認に合格する必要があります。", "在豆包官方页面完成登录,窗口会自动读取完整 Cookie 并加入账号列表;不需要安装豆包工作客户端。": "豆包の公式ページでログインすると、ウィンドウが完全な Cookie を読み取りアカウントを追加します。豆包工作クライアントのインストールは不要です。", "地区": "地域", "填写信息后发起授权,进度与失败原因会显示在这里。": "必要な情報を入力して認証を開始してください。進行状況と失敗理由はここに表示されます。", "填写具体站点名称;模板类型不会作为站点身份": "このサイトの名前を入力してください。テンプレートの種類はサイトの識別には使われません", "填写凭证": "認証情報を入力", "填写凭证添加": "認証情報を入力して追加", "备注名": "ラベル名", "套餐": "プラン", "如何获取": "取得方法", "如官方页面跳回的是网关本机地址,请在桌面面板完成回调;手机端不会猜测未声明的回调输入。": "公式ページがゲートウェイのローカルアドレスに戻る場合は、デスクトップパネルでコールバックを完了してください。モバイル版は未宣言の入力を推測しません。", "如官方页面跳回的是网关本机地址,请粘贴完整回调;没有授权页的本机方式仍需等待网关确认。": "公式ページがゲートウェイのローカルアドレスに戻る場合は、完全なコールバック URL を貼り付けてください。認可ページのないローカル方式でも、ゲートウェイの確認を待つ必要があります。", "如:公司中转站、个人备用站": "例:社内ゲートウェイ、個人用バックアップ", "如:智谱 GLM": "例:Zhipu GLM", "安装在运行网关的机器,不是当前手机或浏览器所在设备。由 Agent2API 独立管理,不覆盖原有安装;仅点击按钮后下载。": "このスマートフォンやブラウザーの端末ではなく、ゲートウェイを実行しているマシンにインストールします。既存のインストールを上書きせず、Agent2API が別途管理します。ボタンを押した場合のみダウンロードします。", "安装已取消,原有版本未更改。": "インストールをキャンセルしました。既存のバージョンは変更していません。", "安装操作未得到有效确认,请重新检查状态;不会自动重复安装。": "インストール操作を確認できませんでした。状態を再確認してください。自動で再インストールは行いません。", "完成官方登录后粘贴包含 state 的完整 loopback 回调地址。": "公式ログイン完了後、state を含む完全な loopback コールバック URL を貼り付けてください。", "完成登录后自动加入账号列表,昵称取自上游。": "ログイン完了後は自動でアカウント一覧に追加されます。ニックネームはアップストリームから取得します。", "完整 JSON 已包含时无需填写": "JSON に含まれている場合は入力不要", "完整回调地址(原样提交)": "完全なコールバック URL(変更せず送信)", "官方 PKCE 登录;浏览器登录态有有效期,失效后需重登,不提供维护续期。": "公式 PKCE 認証です。ブラウザーのログイン状態には期限があり、失効後は再ログインが必要です。管理用の自動更新は行いません。", "官方客户端凭证目录:Windows 是 C:\\Users\\<你的用户名>\\AppData\\Local\\CodeBuddyExtension\\Data\\Public\\auth,macOS 是 ~/Library/Application Support/CodeBuddyExtension/Data/Public/auth": "公式クライアントの認証情報ディレクトリ:Windows は C:\\Users\\<ユーザー名>\\AppData\\Local\\CodeBuddyExtension\\Data\\Public\\auth、macOS は ~/Library/Application Support/CodeBuddyExtension/Data/Public/auth", "官方已确认到账": "公式が付与を確認済み", "官方浏览器登录": "公式ブラウザー認証", "官方浏览器登录(粘贴完整回调)": "公式ブラウザー認証(完全なコールバックを貼り付け)", "官方网页正常登录后的 Cookie;风控时请手动更新": "公式サイトで通常ログインした際の Cookie。認証が必要な場合は手動で更新してください", "客户端版本": "クライアント版", "宿主已持久保存的稳定 hostId(urn:uuid,不能每次生成)": "ホストが永続保存済みの安定した hostId(urn:uuid。毎回生成しないでください)", "导入": "インポート", "导入 QuWork 本机登录态": "QuWork の本機ログインを取り込む", "导入 kiro-cli / Kiro IDE 登录态": "kiro-cli / Kiro IDE のログイン状態を取り込む", "导入中…": "インポート中…", "导入凭证文件": "認証情報ファイルのインポート", "导入失败": "インポートに失敗しました", "导入失败:{reason}": "インポートに失敗しました:{reason}", "导入所选": "選択項目をインポート", "导入所选({n})": "選択項目をインポート({n})", "导入桌面端登录态": "デスクトップ版のログイン状態をインポート", "导入用户指定的本地 Copilot 凭证": "ユーザー指定のローカル Copilot 認証情報を取り込む", "将在新标签页中打开授权页;完成后自动加入账号列表。": "新しいタブで認証ページを開きます。完了後は自動でアカウント一覧に追加されます。", "将在新标签页中打开授权页;完成后自动加入账号列表。若页面跳回本机地址后账号没有出现,按提示把地址栏里的完整回调地址粘贴回来即可。": "新しいタブで認証ページを開きます。完了後は自動でアカウント一覧に追加されます。ローカルアドレスに戻った後もアカウントが表示されない場合は、プロンプトに従ってアドレスバーの完全なコールバック URL を貼り付けてください。", "将打开内嵌窗口;授权完成后自动加入账号列表。关掉窗口即取消等待。授权页最后可能提示无法打开 zcode:// 链接,这是正常的 —— 结果已由服务端记下": "内蔵ウィンドウを開きます;認可が完了すると自動でアカウント一覧に追加されます。ウィンドウを閉じると待機をキャンセルします。認可ページの最後に zcode:// リンクを開けない旨の表示が出ることがありますが、これは正常です —— 結果はサーバー側で記録済みです", "将打开内嵌窗口;授权完成后自动加入账号列表。远程面板可粘贴回调地址。关掉窗口即取消等待。链接 5 分钟内有效,超时或未点就会作废(可重新发起)": "内蔵ウィンドウを開きます;認可が完了すると自動でアカウント一覧に追加されます。リモートパネルではコールバックアドレスを貼り付けられます。ウィンドウを閉じると待機をキャンセルします。リンクの有効期限は 5 分で、タイムアウトまたは未クリックの場合は無効になります(再発行できます)", "将打开内嵌窗口;登录完成后自动加入账号列表。关掉窗口即取消等待": "内蔵ウィンドウを開きます;ログイン完了後は自動でアカウント一覧に追加されます。ウィンドウを閉じると待機をキャンセルします", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的 Trae 账号);同机完成后自动加入,Docker / 远程面板按提示粘贴地址栏回调地址。": "システムの既定ブラウザで認可ページを開きます(ブラウザでログイン済みの Trae アカウントが再利用されます);同一マシンでは完了後に自動追加され、Docker / リモートパネルでは案内に従ってアドレスバーのコールバックアドレスを貼り付けてください。", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的 ZCode 账号);授权完成后自动加入账号列表。页面最后可能提示无法打开 zcode:// 链接,属正常现象": "システムの既定ブラウザで認可ページを開きます(ブラウザでログイン済みの ZCode アカウントが再利用されます);認可完了後は自動でアカウント一覧に追加されます。ページの最後に zcode:// リンクを開けない旨の表示が出ることがありますが、正常な動作です", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的华为云账号);授权码由网关轮询云端取回,与浏览器跑在哪台机器无关,完成后自动加入账号列表": "システムの既定ブラウザで認可ページを開きます(ブラウザでログイン済みの Huawei Cloud アカウントが再利用されます);認可コードはゲートウェイがクラウドをポーリングして取得するため、ブラウザがどのマシンで動いていても関係ありません。完了後は自動でアカウント一覧に追加されます", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的华为云账号);浏览器与网关不在同一台机器时,按上方说明把最终回调地址粘贴回面板": "システムの既定ブラウザで認可ページを開きます(ブラウザでログイン済みの Huawei Cloud アカウントが再利用されます);ブラウザとゲートウェイが別のマシンにある場合は、上の説明に従って最終的なコールバックアドレスをパネルに貼り付けてください", "将用系统默认浏览器打开登录页(会复用浏览器里已登录的 Accio 账号);完成登录后自动加入账号列表,关掉弹窗即取消等待": "システムの既定ブラウザでログインページを開きます(ブラウザでログイン済みの Accio アカウントが再利用されます);ログイン完了後は自動でアカウント一覧に追加され、ポップアップを閉じると待機をキャンセルします", "将用系统默认浏览器打开登录页(会复用浏览器里已登录的 LobsterAI 账号);完成登录后自动加入账号列表,关掉弹窗即取消等待": "システムの既定ブラウザでログインページを開きます(ブラウザでログイン済みの LobsterAI アカウントが再利用されます);ログイン完了後は自動でアカウント一覧に追加され、ポップアップを閉じると待機をキャンセルします", "小米 MiMo Token Plan 套餐(新加坡站)": "小米 MiMo Token Plan プラン(シンガポールサイト)", "小米 MiMo 按量 API;使用按量 API Key,不要混用 Token Plan 套餐 Key": "Xiaomi MiMo の従量課金 API です。Token Plan のプラン用 Key と混同せず、従量課金用 API Key を使用してください", "小米 MiMo(按量)": "Xiaomi MiMo(従量課金)", "已到账": "付与済み", "已取消登录等待": "ログイン待ちをキャンセルしました", "已取消领取": "受け取りをキャンセルしました", "已取消验证码": "認証をキャンセルしました", "已填写手机号,正在发送验证码…": "電話番号を入力しました。認証コードを送信中…", "已声明无需鉴权:账号会被正常选路,出网时不带任何鉴权头": "認証不要を宣言済み:アカウントは通常どおりルーティングされ、送信時に認証ヘッダーは一切付きません", "已完成验证,继续发送": "認証完了、再送信", "已导入 {ok} 个,失败 {fail} 个(失败项已标注在列表里)": "{ok} 個をインポートしました。失敗 {fail} 個(失敗した項目にはリスト内でマークが付いています)", "已建 API": "設定済み API", "已建过 · {n} 个账号,点击继续添加": "作成済み · {n} 個のアカウント、クリックして追加", "已建过,点击继续添加账号": "作成済み、クリックしてアカウントを追加", "已打开官方登录页,请在窗口中完成登录…": "公式ログインページを開きました。ウィンドウでログインを完了してください…", "已收到授权回调,正在完成登录…": "認可コールバックを受信しました。ログインを完了しています…", "已收到浏览器授权,正在获取账号凭据…": "ブラウザーの認可を受信しました。アカウントの認証情報を取得中…", "已有 API Key(留空则在浏览器登录后自动创建)": "既存の API Key(空欄ならブラウザーログイン後に自動作成)", "已有验证码流程正在进行,请先完成或取消": "認証が進行中です。先に完了するかキャンセルしてください。", "已检测到本机客户端": "ローカルクライアントを検出", "已点发送,等待短信…": "送信しました。SMS を待っています…", "已用系统默认浏览器打开登录页,请在浏览器中完成登录…": "システムの既定ブラウザでログインページを開きました。ブラウザでログインを完了してください…", "已读取 QuWork 本机登录态,正在添加账号。": "QuWork の本機ログインを読み取りました。アカウントを追加しています。", "已领取,等官方确认": "受け取り済み、公式の確認待ち", "引用本机 Gemini CLI oauth_creds.json(只读)": "ローカル Gemini CLI oauth_creds.json を参照(読み取り専用)", "当前分类里没有「{keyword}」,其它分类有 {n} 个匹配": "「{keyword}」はこの分類にはありませんが、他の分類に {n} 件あります", "当前壳版本不支持 AutoClaw 网页登录,请更新应用": "現在のシェルバージョンは AutoClaw のウェブログインに対応していません。アプリを更新してください", "当前没有可领取的套餐(活动尚未开始)": "現在受け取り可能なプランはありません(イベントはまだ開始されていません)", "当前版本:{version}": "現在のバージョン:{version}", "当前环境不支持领取(桥接方法缺失)": "現在の環境では受け取りに対応していません(ブリッジメソッドがありません)", "必填,CatPaw 账号标识": "必須、CatPaw アカウントの識別子", "恢复 Google / GitHub 入口": "Google / GitHub の入り口を復元", "所选代理会保存到账号设置,后续请求继续使用。": "選択したプロキシはアカウント設定に保存され、以降のリクエストでも使用されます。", "手动代理": "手動プロキシ", "手动导入 GitHub OAuth / GitHub 令牌": "GitHub OAuth / GitHub トークンを手動入力", "手机号": "電話番号", "手机验证码登录": "SMS 認証コードログイン", "打开 LobsterAI(有道龙虾)的官方登录页(lobsterai.youdao.com)并用你的 LobsterAI 账号登录:登录成功后官方页面会跳回本机并自动加入账号列表 —— 回调落在网关自己的端口上,所以浏览器要与网关在同一台机器上;授权码只在本机传给网关,界面不显示明文 token。": "公式の LobsterAI ログインページ(lobsterai.youdao.com)を開き、LobsterAI アカウントでログインしてください:ログインに成功すると公式ページが本機に戻り、自動でアカウント一覧に追加されます —— コールバックはゲートウェイ自身のポートに届くため、ブラウザはゲートウェイと同じマシンで開く必要があります。認証コードは本機内でゲートウェイに渡されるだけで、画面に平文トークンは表示されません。", "打开 Trae 的官方授权页(trae.cn)并用你的 Trae 账号登录:授权完成后官方页面会跳回本机的一个临时端口;同机部署自动接收,Docker / 远程面板请按提示复制地址栏回调地址。": "Trae の公式認可ページ(trae.cn)を開き、あなたの Trae アカウントでログインしてください:認可が完了すると公式ページから本機の一時ポートにリダイレクトされます;同一マシンでのデプロイでは自動受信し、Docker / リモートパネルでは案内に従ってアドレスバーのコールバックアドレスをコピーしてください。", "打开 Accio {label}的官方登录页({site})并用你的 Accio 账号登录:登录成功后官方页面会跳回本机;同机自动完成,Docker / 远程面板按提示粘贴回调地址即可(授权码只在本机传给网关,界面不显示明文 token)。": "Accio {label}の公式ログインページ({site})を開き、あなたの Accio アカウントでログインしてください:ログインに成功すると公式ページから本機にリダイレクトされます;同一マシンでは自動完了し、Docker / リモートパネルでは案内に従ってコールバックアドレスを貼り付けてください(認可コードは本機からゲートウェイに渡されるだけで、画面に平文 token は表示されません)。", "打开 Accio {label}登录页": "Accio {label} のログインページを開く", "打开 Antigravity 网页登录": "Antigravity のウェブログインを開く", "打开 AtomGit 授权页登录:登录完成后网关会自动轮询代理取回令牌并加入账号列表(授权回调由代理终结,不回到本机,因此无需手工回填回调地址)。": "AtomGit の認可ページを開いてログインしてください。完了後、ゲートウェイが自動的にブローカーをポーリングしてトークンを取得し、アカウントを追加します(コールバックはブローカー側で終端され本機には戻らないため、コールバック URL の手入力は不要です)。", "打开 CatPaw 网页登录": "CatPaw のウェブログインを開く", "打开 Cline 授权页": "Cline の認可ページを開く", "打开 CodeArts 授权页": "CodeArts の認可ページを開く", "打开 LobsterAI 登录页": "LobsterAI のログインページを開く", "打开 Qoder 网页登录": "Qoder のウェブログインを開く", "打开 Trae 授权页": "Trae の認可ページを開く", "打开 ZCode {label}的官方授权页并用你的账号登录。授权结果由 ZCode 服务端记录,网关在后台自动取回凭证并加入账号列表。": "ZCode {label}の公式認可ページを開き、あなたのアカウントでログインしてください。認可結果は ZCode サーバー側で記録され、ゲートウェイがバックグラウンドで自動的に認証情報を取得してアカウント一覧に追加します。", "打开 ZCode {label}授权页": "ZCode {label} の認可ページを開く", "打开下一步授权页": "次の認可ページを開く", "打开人机验证": "人間認証を開く", "打开千问办公网页登录": "QwenWork のウェブログインを開く", "打开华为云 CodeArts 的官方授权页登录:登录完成后官方页面会把浏览器带回网关自己的 /oauth/callback,网关用一次性授权码换取临时凭据并加入账号列表。
    网关跑在另一台机器上时,网页端会提示把地址栏中的最终回调地址直接粘贴回面板。": "Huawei Cloud CodeArts の公式認可ページを開いてログインします:ログイン完了後、公式ページからブラウザがゲートウェイ自身の /oauth/callback に戻され、ゲートウェイはワンタイム認可コードで一時認証情報を取得し、アカウント一覧に追加します。
    ゲートウェイが別のマシンで動作している場合は、ウェブ画面でアドレスバーの最終的なコールバックアドレスをそのままパネルに貼り付けるよう案内されます。", "打开华为云授权页登录:登录完成后网关会自动轮询云端取回授权码并加入账号列表(不需要装 OfficeAce 桌面端,也无需手工回填回调地址)。": "Huawei Cloud の認可ページを開いてログインしてください:完了すると、ゲートウェイがクラウドをポーリングして認可コードを取得し、アカウント一覧に追加します(OfficeAce デスクトップ版は不要で、コールバック URL を手動で貼り戻す必要もありません)。", "打开官方授权页": "公式認可ページを開く", "打开官方授权页完成设备码授权,登录的是{label}({site})的账号。": "公式認可ページを開いてデバイスコード認可を完了します。ログインするのは {label}({site})のアカウントです。", "打开授权页": "認可ページを開く", "打开授权页完成确认,账号自动加入 {label}{note}": "認可ページを開いて確認を完了すると、アカウントが自動で {label} に追加されます{note}", "打开方式": "開き方", "打开网页登录": "ウェブログインを開く", "按已验证邮箱只读引用 cursor-agent 当前登录态;每次操作重读 keychain/auth.json,不复制 token、不主动运行 CLI 续期,退出或失效后需在原客户端重登。": "検証済みメールアドレスに固定し、cursor-agent の現在の認証を読み取り専用で参照します。各操作で keychain/auth.json を再読み込みし、トークンの複製や CLI による更新は実行しません。ログアウト・失効後は元のクライアントで再ログインしてください。", "授权只读引用,不复制、不修改、不续期本机凭证": "読み取り専用参照を許可し、ローカル認証情報のコピー・変更・更新は行わない", "授权回调提交失败;请检查输入并重试,登录仍在等待。": "認可コールバックの送信に失敗しました。入力を確認して再試行してください。ログインは待機中です。", "授权每次请求只读所选文件,固定当前账号与工作区?": "このアカウントとワークスペースに固定して、各リクエストで選択ファイルの読み取り専用参照を許可しますか?", "授权码或令牌(原样提交)": "認可コードまたはトークン(変更せず送信)", "授权读取所选条目": "選択した項目の読み取りを許可", "授权页、换证与取账号信息都走这条线路。无头服务器上没有系统代理,这里不选就走直连(多数网络里到不了 Google)。": "認可ページ・コード交換・アカウント情報の取得はすべてこの経路を使います。ヘッドレスサーバーにはシステムプロキシがないため、未選択の場合は直接接続になります(多くのネットワークでは Google に到達できません)。", "探测失败:{message}": "検出に失敗しました:{message}", "接入一个兼容上游": "互換アップストリームを接続", "控制台 uaa-token(粘贴令牌值或完整的 uaa-token=… Cookie 项)": "コンソールの uaa-token(トークン値または uaa-token=… Cookie 項目全体を貼り付け)", "推荐": "推奨", "提交中…": "送信中…", "提交授权回调": "認可コールバックを送信", "提供商仅在已启用且加载后出现。登录与本机引用均作用在所连接网关,不是手机。": "プロバイダーは有効化され、読み込まれた後に表示されます。ログインとローカル参照は接続先のゲートウェイに適用され、スマートフォンではありません。", "插件专用 Chrome 登录(自动读取凭据)": "プラグイン専用 Chrome でログイン(認証情報を自動取得)", "插件会在网关电脑上启动独立浏览器并读取登录结果,不使用系统默认浏览器。": "プラグインがゲートウェイのコンピューターで専用ブラウザーを起動し、ログイン結果を読み取ります。システムの既定ブラウザーは使いません。", "搜索提供商": "プロバイダーを検索", "搜索提供商…": "プロバイダーを検索…", "整份粘贴官方插件 / CLIProxyAPI 落盘的凭据 JSON(形如 {\"codearts_provider_credential\":{…}},铺平的也行)。
    必填:access_key_id、secret_access_key、security_token。要能自动续期,必须连 refresh_token 与 oauth_context 一起粘 —— 临时凭据约一小时到期,缺这半块就续不回来,只能重新登录。": "公式プラグイン / CLIProxyAPI が保存した認証情報 JSON をまるごと貼り付けてください({\"codearts_provider_credential\":{…}} の形。フラットなものでも可)。
    必須:access_key_id、secret_access_key、security_token。自動更新を効かせるには refresh_token と oauth_context も一緒に貼り付ける必要があります —— 一時認証情報は約 1 時間で期限切れになり、この半分が欠けると更新できず、再ログインするしかありません。", "文件是{edition}凭证,已按该版本导入": "ファイルは{edition}の認証情報のため、そのバージョンでインポートしました", "新增独立登录": "独立した認証を新規追加", "新建自定义提供商": "カスタムプロバイダーを新規作成", "新网关确认代理同次保存后不再重复提交;旧网关使用兼容保存并提示核查,失败不会撤销已添加的账号。": "新ゲートウェイがアカウントと同時にプロキシを保存したと確認した場合は再送信しません。旧ゲートウェイでは互換保存と確認警告を使用し、失敗しても追加済みアカウントは削除しません。", "方案:{label}": "方式:{label}", "无需手动复制令牌,验证码在官方页面完成。": "トークンのコピーは不要です。認証コードは公式ページで入力してください。", "旧网关未确认代理同次保存,已使用兼容接口保存;请在账号设置中确认代理选择。": "旧ゲートウェイはプロキシの同時保存を確認しなかったため、互換 API で保存しました。アカウント設定でプロキシ選択を確認してください。", "明文 JWT 或 auth.json 里的 enc: 加密值(自动解密)": "平文 JWT または auth.json 内の enc: 暗号化値(自動復号)", "明文 JWT(国际版账号的 access token)": "平文 JWT(国際版アカウントの access token)", "明确选择文件与只读授权;不修改或续期原客户端登录态。": "ファイルと読み取り専用アクセスを明示的に選択します。元のクライアントのログイン状態は変更・更新しません。", "明确选择文件内的账号条目键名": "ファイル内のアカウント項目の正確なキー名を選択", "明确选择标准凭证文件的完整绝对路径": "標準認証情報ファイルの完全な絶対パスを選択", "是否授权只读取此文件和所选账号凭证?": "このファイルと選択したアカウント認証情報の読み取り専用アクセスを許可しますか?", "显示凭证": "認証情報を表示", "智谱 bigmodel.cn 的 Coding 套餐,Key 在 open.bigmodel.cn/usercenter/apikeys": "Zhipu bigmodel.cn の Coding プラン。Key は open.bigmodel.cn/usercenter/apikeys で取得します", "暂不支持自动安装": "自動インストール非対応", "暂时无法检查官方最新版;已安装且满足最低要求的客户端仍可使用。": "現在、公式の最新バージョンを確認できません。インストール済みのクライアントが最低要件を満たしていれば、そのまま利用できます。", "暂时无法登录": "現在ログインできません", "有可用更新": "更新があります", "未开启客户端调试端口时,请使用网页登录或粘贴 Cookie。": "クライアントのデバッグポートが有効でない場合は、Web ログインまたは Cookie の貼り付けを使用してください。", "未知错误": "不明なエラー", "未能获取授权地址,请重试": "認可アドレスを取得できませんでした。再試行してください", "未能读取 cc-switch 数据": "cc-switch のデータを読み取れませんでした", "未领取成功": "受け取りに失敗しました", "本体订阅未返回动态登录方式(501);不会猜测导入接口或显示插件手动凭证入口。请更新网关后重试。": "本体のサブスクリプションから動的なログイン方式が返されませんでした(501)。インポート API を推測したり、プラグイン用の認証情報入力を表示したりはしません。ゲートウェイを更新して再試行してください。", "本地 Ollama、OpenCode Zen 免费档这类上游要勾上,否则账号不可用": "ローカル Ollama、OpenCode Zen の無料枠などのアップストリームではチェックを入れてください。入れないとアカウントを使用できません", "本家有两个**互不替代**的凭证,按你要用的功能填,至少填一个:编码套餐 API Key 用于转发推理(打 {site})与查询窗口限额(每 N 小时 / 每周的剩余比例);jwt 用于领取套餐与查询余额(打 zcode.z.ai 的 billing 网关,官方叫 Coding Plan JWT,是一串三段点分的字符串)。余额两把都能查、但读到的东西不同:jwt 读到余额桶与套餐到期,API Key 读到窗口限额;而领取只认 jwt、转发只认 API Key。请填写 {label}账号的凭证 —— {plan}(最容易拿到的办法:直接用上方的「网页登录」—— 它会替你把这个 API Key 换好,两个凭证一起拿到。)": "本家には**互いに代替できない** 2 つの認証情報があり、使いたい機能に応じて入力してください。少なくともどちらか一方は必須です:コーディングプラン API Key は推論の転送用({site} を叩きます)とウィンドウクォータの照会用(N 時間ごと / 週ごとの残り割合);jwt はプランの受け取りと残高照会用(zcode.z.ai の billing ゲートウェイを叩きます。公式名称は Coding Plan JWT で、3 段のドット区切り文字列です)。残高はどちらでも照会できますが、読み取れる内容が異なります:jwt は残高バケットとプランの有効期限、API Key はウィンドウクォータを読み取ります;受け取りは jwt のみ、転送は API Key のみです。{label}アカウントの認証情報を入力してください —— {plan}(最も簡単な方法:上の「ウェブログイン」を使うこと —— この API Key を代わりに交換してくれ、2 つの認証情報をまとめて取得できます。)", "本机 Ollama 的 OpenAI 兼容端点,无需 API Key(默认已勾上「该上游无需鉴权」,鉴权头一个都不发)": "本機の Ollama の OpenAI 互換エンドポイント。API Key は不要です(既定で「このアップストリームは認証不要」がチェック済みで、認証ヘッダーは一切送信されません)", "本机 auth.json(只读引用)": "ローカル auth.json(読み取り専用参照)", "本机凭证已校验。宿主仅保存文件引用与稳定身份,每次请求重新读取。": "ローカル認証情報を検証しました。ホストはファイル参照と安定した識別情報のみを保存し、各リクエストで再読み込みします。", "本机部署会自动完成登录;服务器或 Docker 部署时,若授权后跳到无法访问的 localhost 或 127.0.0.1 页面,请把地址栏中的完整回调地址粘贴回来。AWS 登录如需继续授权,请打开下一步授权页,完成后再次回填。请勿修改地址或把回调链接发给他人。": "ローカル環境ではログインが自動で完了します。サーバーや Docker 環境で認可後に localhost または 127.0.0.1 のページが開けない場合は、アドレスバーの完全なコールバック URL をここに貼り付けてください。AWS で追加の認可が必要な場合は次の認可ページを開き、完了後に新しい URL を貼り付けてください。URL を変更したり他人と共有したりしないでください。", "本次未确认到账": "今回は付与が確認できませんでした", "条可导入": "件がインポート可能", "条配置,其中": "件の設定、うち", "桌面运行时不可用(Tauri 未初始化)": "デスクトップランタイムが利用できません(Tauri が未初期化)", "检测失败": "確認に失敗しました", "模型网关基址": "モデルゲートウェイのベース URL", "正在准备 AWS 授权…": "AWS 認可を準備しています…", "正在准备安装…": "インストールを準備中…", "正在取消安装…": "インストールをキャンセル中…", "正在启用新版本…": "新しいバージョンを有効化中…", "正在打开百度登录页…": "Baidu のログインページを開いています…", "正在扫描本机 cc-switch…": "本機の cc-switch をスキャンしています…", "正在换发访客凭证…": "ゲスト資格情報を発行中…", "正在校验官方安装包…": "公式インストールファイルを検証中…", "正在检查安装状态…": "インストール状態を確認中…", "正在检查客户端版本…": "クライアントのバージョンを確認中…", "正在添加…": "追加中…", "正在等待{name}登录完成;完成或取消后才能发起新的登录": "{name} のログイン完了を待っています;完了またはキャンセルしないと新しいログインを開始できません", "此 Copilot 手动令牌方式未声明回调输入契约,暂不发起;请改用设备码登录或只读本机引用。": "この Copilot の手動トークン方式にはコールバック入力の契約が宣言されていないため開始しません。デバイスコード認証またはローカルの読み取り専用参照を使用してください。", "此提供商已有登录任务,请先完成或取消。": "このプロバイダーではログイン処理が進行中です。先に完了するかキャンセルしてください。", "此提供商未声明动态登录方式,请在网关桌面面板使用其既有入口;手机端不会猜测凭证字段。": "このプロバイダーには動的ログイン方式の宣言がありません。ゲートウェイのデスクトップパネルで既存の入口を使用してください。モバイル版は認証情報の項目を推測しません。", "此方式需要原样提交授权码或令牌;输入会隐藏,不会当作 URL 或 API 凭证解析。提交后仍需等待网关确认。": "この方式は認可コードまたはトークンを変更せず送信します。入力は非表示で、URL や API 認証情報として解析しません。送信後もゲートウェイの確認を待ちます。", "此方式需要完整回调地址;请原样粘贴,不拆分参数或重建地址。提交后仍需等待网关确认。": "この方式は完全なコールバック URL が必要です。パラメーターの分割や URL の再構築をせず、そのまま貼り付けてください。送信後もゲートウェイの確認を待ちます。", "每个账号使用独立的官方登录目录。终端登录沿用该终端的网络环境;这里选择的代理用于添加后的模型请求。": "各アカウントは独立した公式ログインディレクトリを使用します。端末でのログインにはその端末のネットワーク設定を使い、ここで選んだプロキシは追加後のモデルリクエストに適用されます。", "每周": "毎週", "每日": "毎日", "每月": "毎月", "没有则无法自动续期": "ないと自動更新できません", "没有匹配「{keyword}」的提供商": "「{keyword}」に一致するプロバイダーはありません", "浏览器拦截了弹窗": "ブラウザがポップアップをブロックしました", "浏览器授权已收到,但网关直连 DeepAI 失败。请在登录代理中填入系统代理或选择可用代理后重新登录。": "ブラウザーの認可は受信しましたが、ゲートウェイから DeepAI への直接接続に失敗しました。ログイン用にシステムプロキシを入力するか、利用可能なプロキシを選んでから再度ログインしてください。", "浏览器授权已收到,但通过所选代理获取账号凭据失败。请检查该代理后重新登录。": "ブラウザーの認可は受信しましたが、選択したプロキシ経由で認証情報を取得できませんでした。プロキシを確認して再度ログインしてください。", "浏览器显示登录完成后,网关还需联网获取账号凭据。若浏览器或 Magpie 使用系统代理,请先在下方点击「填入系统代理」;选择直连不会跟随系统代理。": "ブラウザーにログイン完了と表示された後も、ゲートウェイはネットワーク経由で認証情報を取得します。ブラウザーや Magpie がシステムプロキシを使っている場合は、先に下の「システムプロキシを入力」を押してください。直接接続ではシステムプロキシを使いません。", "浏览器登录(墨点额度 + 自动创建 API Key)": "ブラウザーでログイン(墨点残高 + API Key 自動作成)", "浏览器登录(复用已有 API Key)": "ブラウザーでログイン(既存の API Key を再利用)", "浏览器面板无法读取其他站点的登录态,请使用本人网页账号的令牌。": "ブラウザーパネルは他サイトのログイン状態を読み取れません。自分の Web アカウントのトークンを使用してください。", "浏览器面板无法读取其它站点的 Cookie,请登录 www.doubao.com 后,使用「填写凭证」粘贴完整 Cookie。": "ブラウザパネルは他サイトの Cookie を読み取れません。www.doubao.com にログインし、「認証情報」で完全な Cookie を貼り付けてください。", "添加 DeepSeek 账号": "DeepSeek アカウントを追加", "添加 {name} 账号": "{name} アカウントを追加", "添加中…": "追加中…", "添加到 ": "追加先 ", "添加到此提供商": "このプロバイダーに追加", "添加失败:{reason}": "追加に失敗しました:{reason}", "添加小浣熊账号": "小浣熊アカウントを追加", "添加方式": "追加方法", "添加时要用它出网校验凭证(例如 Antigravity 要打一次 Google 的 token 端点)。无头服务器上没有系统代理,这里不选就走直连。": "追加時に資格情報を検証するための通信で使います(例:Antigravity は Google のトークンエンドポイントを呼びます)。ヘッドレスサーバーにはシステムプロキシがないため、未選択の場合は直接接続になります。", "添加访客账号": "ゲストアカウントを追加", "添加账号": "アカウントを追加", "火山引擎 Coding 套餐;通用推理接入点为 https://ark.cn-beijing.volces.com/api/v3": "Volcano Engine Coding プラン;汎用推論エンドポイントは https://ark.cn-beijing.volces.com/api/v3", "点击添加账号": "クリックしてアカウントを追加", "点击登录后,在 Google 页面授权,再原样粘贴授权码或完整页面地址;已登录的 agy 会直接连接。Google 凭证由官方客户端保管,Agent2API 只保存本机连接标记。同一网关仅使用 agy 当前登录的一个账号,不支持复制为多个独立账号。": "ログインを押して Google のページで認証し、認証コードまたはページの URL 全体をそのまま貼り付けてください。agy がログイン済みなら直接接続します。Google の認証情報は公式クライアントが管理し、Agent2API はローカル接続の印だけを保存します。各ゲートウェイは agy の現在の 1 アカウントを使い、独立した複数アカウントとして複製はできません。", "点开即预填,填 Key 接入": "開くと自動入力済み、Key を入力して接続", "点按钮后先过一次滑块验证(官方风控),随后打开登录页,登录完成即自动添加账号。
    这是国际版官方唯一的登录方式;已在客户端登录过的,用「导入桌面端登录态」更快。": "ボタンを押すとまずスライダー認証(公式の不正対策)を 1 回行い、その後ログインページが開きます。ログイン完了で自動的にアカウントが追加されます。
    これが国際版公式の唯一のログイン方式です。すでにクライアントでログイン済みの場合は、「デスクトップ版のログイン状態をインポート」を使う方が速いです。", "独立 Kiro OAuth 支持续期;保留原登录验证,不接受任意 bearer token。": "独立した Kiro OAuth は更新に対応します。元のログイン検証を維持し、任意の bearer token は受け付けません。", "用 AutoClaw 账号绑定的手机号登录:点击「获取验证码」,收到短信后填入下方并登录。验证码由本机直接提交给官方接口,界面不显示 token。": "AutoClaw アカウントに紐付けられた電話番号でログインします:「コードを取得」をクリックし、SMS を受け取ったら下の欄に入力してログインしてください。認証コードは本機から直接公式 API に送信され、画面に token は表示されません。", "用 CatPaw 账号完成登录(美团 passport),成功后自动加入账号列表。": "CatPaw アカウントでログインを完了します(Meituan passport)。成功すると自動でアカウント一覧に追加されます。", "用 Loomy 账号绑定的手机号登录:点「获取验证码」后填入即可。这是本家最省事的入口。": "Loomy アカウントに紐付けられた電話番号でログインします:「コードを取得」をクリックして入力するだけです。本家で最も手軽な入り口です。", "用于转发;形如 apiKey.secret 两段点分(不填则这个账号不能转发)": "転送用。apiKey.secret の 2 段ドット区切り形式です(未入力の場合、このアカウントは転送できません)", "用于领取套餐与查询余额;不填则这个账号不能领取与查余额": "プランの受け取りと残高照会用。未入力の場合、このアカウントは受け取りと残高照会ができません", "用户 ID": "ユーザー ID", "用绑定的手机号登录:点「获取验证码」后填入即可。这是国内版官方唯一的登录方式。": "紐付けられた電話番号でログインします:「コードを取得」をクリックして入力するだけです。これが中国版公式の唯一のログイン方式です。", "用绑定的手机号登录:点「获取验证码」,收到短信后填入下方并点「登录并添加」。这是国内站官方唯一的登录方式。": "本人の携帯番号でログインします。「認証コードを取得」を押し、届いたコードを下に入力して「ログインして追加」をクリックしてください。中国サイトで唯一の公式ログイン方法です。", "由插件打开浏览器登录": "プラグインのブラウザーでログイン", "由本机 Grok Build CLI 执行官方设备授权;仅保存 home/scope/account 引用,不镜像 token,后续操作只读,不提供维护续期。": "ローカル Grok Build CLI が公式デバイス認証を実行します。home/scope/account の参照のみを保存し、token の複製はしません。その後の操作は読み取り専用で、管理用の更新は行いません。", "留空使用 1.17.16(10117016)": "空欄の場合は 1.17.16(10117016) を使用", "留空使用该提供商默认值": "空欄の場合はプロバイダーの既定値を使用", "留空使用账号默认名称": "空欄の場合はアカウントの既定名を使用", "留空使用默认的 User-Agent;可从预置里选一个内置客户端,也可以直接填写。": "空欄の場合は既定の User-Agent を使用します。プリセットの内蔵クライアントを選ぶことも、直接入力することもできます。", "留空则用提供商名称": "空欄の場合はプロバイダー名を使用", "留空自动查找;也可填写网关本机 agy 可执行文件的绝对路径": "空欄で自動検出、またはゲートウェイのマシン上にある agy の絶対パスを入力", "登录 / 添加 {name} 账号": "ログイン / {name} アカウントを追加", "登录 JWT": "ログイン JWT", "登录 chat.deepseek.com 后,打开开发者工具 → Application → Local Storage,复制 userToken 的 value。": "chat.deepseek.com にログインし、開発者ツール → Application → Local Storage を開いて userToken の value をコピーしてください。", "登录 session(一长串)": "ログイン session(長い文字列)", "登录中…": "ログイン中…", "登录代理不支持轮询出网,请选择一条已保存的代理": "ログインではプロキシのローテーションを使用できません。保存済みプロキシを 1 つ選択してください。", "登录凭证 accessToken": "ログイン認証情報 accessToken", "登录出网代理": "ログインの送信プロキシ", "登录取消未确认,请刷新状态后重试。": "ログインのキャンセルを確認できませんでした。状態を更新して再試行してください。", "登录失败:{message}": "ログインに失敗しました:{message}", "登录尚未完成,请继续通过共享登录桥等待结果": "ログインはまだ完了していません。共通ログインブリッジで引き続き結果をお待ちください。", "登录已结束": "ログインは終了しました", "登录并添加": "ログインして追加", "登录态文件路径:~/.box-agent/config/auth.json(Windows:C:\\Users\\<你的用户名>\\.box-agent\\config\\auth.json)": "ログイン状態ファイルのパス:~/.box-agent/config/auth.json(Windows:C:\\Users\\<ユーザー名>\\.box-agent\\config\\auth.json)", "登录授权地址无效,已取消本次等待。": "ログイン認可 URL が無効なため、今回の待機をキャンセルしました。", "登录桥未返回已完成的账号或会话,请重试": "ログインブリッジから完了済みのアカウントまたはセッションが返されませんでした。再試行してください。", "登录桥返回了空会话,无法确认账号已添加": "ログインブリッジが空のセッションを返したため、アカウントの追加を確認できません。", "相同协议和地址的提供商已经存在。可以继续新建独立提供商,或明确选择已有提供商添加账号。": "同じプロトコルとアドレスのプロバイダーが既に存在します。別のプロバイダーを作成するか、既存のプロバイダーを選択してアカウントを追加してください。", "看全部匹配": "すべての一致を見る", "确定删除自定义提供商「{name}」?将同时删除该提供商下 {count} 个账号,删除后无法恢复。": "カスタムプロバイダー「{name}」を削除しますか?このプロバイダー配下の {count} 個のアカウントも同時に削除され、削除後は元に戻せません。", "站点名称": "サイト名", "端砚由插件在网关电脑上启动独立的 Edge、Chrome 或 Chromium 窗口,不使用系统默认浏览器或应用内嵌窗口。": "InkStone プラグインはゲートウェイのマシン上で専用の Edge・Chrome・Chromium ウィンドウを起動します。システムの既定ブラウザーやアプリ内蔵ウィンドウは使用しません。", "等待 Accio {label}登录完成…": "Accio {label} のログイン完了を待っています…", "等待 AtomCode 登录完成…": "AtomCode のログイン完了を待機中…", "等待 CatPaw 登录完成…": "CatPaw のログイン完了を待っています…", "等待 Cline 授权确认…": "Cline の認可確認を待っています…", "等待 CodeArts 登录完成…": "CodeArts のログイン完了を待っています…", "等待 Google 授权完成…": "Google の認可完了を待っています…", "等待 KukuAI 登录完成…": "KukuAI のログイン完了を待っています…", "等待 LobsterAI 登录完成…": "LobsterAI のログイン完了を待っています…", "等待 MonkeyCode 登录完成…": "MonkeyCode のログイン完了を待っています…", "等待 OfficeAce 登录完成…": "OfficeAce のログイン完了を待っています…", "等待 OrcaTerm 登录完成…": "OrcaTerm のログイン完了を待っています…", "等待 Qoder 授权完成…": "Qoder の認可完了を待っています…", "等待 Trae 授权完成…": "Trae の認可完了を待っています…", "等待 ZCode {label}授权完成…": "ZCode {label} の認可完了を待っています…", "等待你在官方页面完成登录,成功后自动添加账号。": "公式ページでのログイン完了を待っています。成功するとアカウントが自動で追加されます。", "等待千问办公登录完成…": "QwenWork のログイン完了を待っています…", "等待小浣熊登录完成…": "小浣熊のログイン完了を待っています…", "等待插件完成登录": "プラグインのログイン完了を待機中", "等待浏览器完成登录": "ブラウザーのログイン完了を待機中", "等待浏览器授权;若本机回调页面无法打开,请复制地址栏中的完整地址回填。": "ブラウザーでの認可を待っています。ローカルのコールバックページが開けない場合は、アドレスバーの完全な URL をコピーして貼り付けてください。", "等待登录完成…": "ログインの完了を待っています…", "等待网页登录…": "ウェブログインを待っています…", "等待豆包工作登录完成…": "豆包工作へのログインを待っています…", "粘贴 API Key": "API Key を貼り付け", "粘贴 API 令牌": "API トークンを貼り付け", "粘贴 Accio 的 accessToken": "Accio の accessToken を貼り付け", "粘贴 Antigravity 的 Google refresh token(以 1// 开头;直接粘贴含 refresh_token= 的整行也行)。
    这是网页登录之外的手工入口(例如从已登录的官方 IDE 里导出)。refresh token 不会过期,access token 到期由网关自动续期;令牌丢了只能重新走 Google 授权,请妥善保存。": "Antigravity の Google refresh token を貼り付け(1// で始まる;refresh_token= を含む行全体をそのまま貼り付けても可)。
    これはウェブログイン以外の手動入り口です(例:ログイン済みの公式 IDE からエクスポート)。refresh token は期限切れにならず、access token の期限切れはゲートウェイが自動で更新します;トークンを紛失すると Google の認可をやり直すしかないため、大切に保管してください。", "粘贴 Command Code 的 API Key(user_ 开头;从官方 CLI 的 ~/.commandcode/auth.json 或网页 studio 获取)。整行 / 带引号 / 带 Bearer 前缀地粘都行,网关会自己剥成裸 key。key 不过期、也没有续期接口,失效后重新获取即可;添加时网关会做一次轻量探活,失败不影响添加。": "Command Code の API Key を貼り付け(user_ で始まる;公式 CLI の ~/.commandcode/auth.json またはウェブの studio から取得)。行全体 / 引用符付き / Bearer プレフィックス付きのまま貼り付けても構いません。ゲートウェイが自動で裸の key に剥がします。key は期限切れにならず、更新用 API もありません。無効になったら取得し直してください;追加時にゲートウェイが軽量な死活確認を 1 回行いますが、失敗しても追加には影響しません。", "粘贴 Cookie": "Cookie を貼り付け", "粘贴 Google refresh token": "Google refresh token を貼り付け", "粘贴 ModelScope 的 API 令牌(ms- 开头,在 {site} 的「访问令牌」页获取)。
    {siteNote}
    这枚令牌两用:网关既用它调推理,也用它读账号身份、魔粒余额与每日签到。令牌长期有效、没有续期接口,失效后重新获取再粘一次即可。": "ModelScope の API トークン(ms- で始まる)を貼り付けてください({site} の「アクセストークン」ページで取得できます)。
    {siteNote}
    このトークンは二役です:ゲートウェイは推論の呼び出しにも、アカウント情報・魔粒残高・毎日のチェックインの取得にも使います。トークンは長期有効で更新 API はありません。使えなくなったら再取得して貼り直してください。", "粘贴 OrcaTerm 的 OAuth accessToken(JWT,三段点分;从桌面客户端 data.bin 或 Web 版 Cookie ot_session 获取)。直接粘贴含 Bearer / ot_session= 的整行也行,网关会自己剥成裸 token。添加后由网关自动续期(上游有续期接口),无需跟随 2 小时时效手动更换。": "OrcaTerm の OAuth accessToken(ドット区切り 3 パートの JWT。デスクトップクライアントの data.bin か Web 版の Cookie ot_session から取得)を貼り付けます。Bearer / ot_session= を含む行をそのまま貼ってもよく、ゲートウェイが裸のトークンに剥がします。追加後はゲートウェイが自動で更新するため(上流に更新 API があります)、2 時間の有効期限を手動で追う必要はありません。", "粘贴 Qoder 个人访问令牌(pt-…)": "Qoder の個人アクセストークン(pt-…)を貼り付け", "粘贴 accessToken": "accessToken を貼り付け", "粘贴 access_token(一长串 JWT)": "access_token(長い JWT)を貼り付け", "粘贴 session cookie": "session cookie を貼り付け", "粘贴 token / refreshToken": "token / refreshToken を貼り付け", "粘贴 userToken.value": "userToken.value を貼り付け", "粘贴 workos:… 开头的令牌(不带前缀也会自动补上)": "workos:… で始まるトークンを貼り付け(プレフィックスがなくても自動で補われます)", "粘贴 www.doubao.com 的完整 Cookie(必须含 sessionid),也支持 Cookie JSON 数组或对象。复用豆包工作账号的额度;Cookie 失效后需重新登录,没有自动续期。": "sessionid を含む www.doubao.com の完全な Cookie を貼り付けてください。Cookie の JSON 配列とオブジェクトにも対応します。豆包工作アカウントのクォータを使用し、Cookie が無効になると再ログインが必要です。自動更新はありません。", "粘贴令牌": "トークンを貼り付け", "粘贴令牌对": "トークンペアを貼り付け", "粘贴你本人已授权的 GitHub OAuth 令牌(不是设备码或 Copilot 短令牌)。令牌仍需由 GitHub 验证并交换;CLI 专用令牌可能不支持编辑器令牌交换。": "本人が認可した GitHub OAuth トークンを貼り付けます。デバイスコードや短期 Copilot トークンではありません。GitHub による検証・交換が必要で、CLI 専用トークンはエディタートークンへの交換に対応しない場合があります。", "粘贴完整登录凭证 JSON,或只填模型凭证 llmToken。仅模型凭证可对话;积分、续期和奖励需要登录凭证 accessToken。": "ログイン JSON 全体、またはモデル認証情報 llmToken を貼り付けます。モデル認証情報のみの場合は対話に対応し、ポイント・更新・報酬には accessToken が必要です。", "粘贴智谱清言的访问令牌(JWT,三段点分)。获取方式:浏览器打开 chatglm.cn 并登录后,在开发者工具的 Application → Cookies 里复制 chatglm_token 的值(也可以直接粘 chatglm_token=…; 整行)。粘贴后会先向上游校验一次,校验通过才落账号;登录账号的积分、签到能力都能用,之后由网关自动续期(上游有续期接口)。": "智谱清言のアクセストークン(3 つのドット区切り部分からなる JWT)を貼り付けてください。取得方法:ブラウザで chatglm.cn を開いてログインし、開発者ツールの Application → Cookies から chatglm_token の値をコピーします(chatglm_token=…; の行をそのまま貼っても可)。貼り付けたあと上流に対して一度検証し、通った場合のみアカウントを保存します。ログイン済みアカウントではポイントと签到の機能が使え、以降はゲートウェイが自動で更新します(上流に更新インターフェースがあります)。", "粘贴登录凭据": "ログイン認証情報を貼り付け", "粘贴的是登录 session(同时是模型网关的 token)。Loomy 没有续期接口,session 有效期约 14 天,过期后重新登录即可。": "貼り付けるのはログイン session です(同時にモデルゲートウェイの token でもあります)。Loomy には更新用 API がなく、session の有効期間は約 14 日です。期限切れ後は再ログインしてください。", "粘贴网关凭据": "ゲートウェイ認証情報を貼り付け", "粘贴网页登录凭证": "Web ログイン資格情報を貼り付け", "粘贴网页登录态 cookie monkeycode_ai_session 的值(在浏览器里复制整段 Cookie 直接粘贴也行,网关会自己剥出值)。
    {siteNote}
    MonkeyCode 没有续期接口:session 有效期约 30 天(硬限制),过期后重新登录网页、再粘贴一次即可。": "ウェブのログイン状態 cookie monkeycode_ai_session の値を貼り付け(ブラウザーで Cookie 全体をコピーしてそのまま貼り付けても可。ゲートウェイが値を自動で取り出します)。
    {siteNote}
    MonkeyCode には更新用 API がありません:session の有効期間は約 30 日(ハードリミット)で、期限切れ後はウェブに再ログインして貼り付け直せば済みます。", "粘贴网页访问令牌": "Web アクセストークンを貼り付け", "粘贴访问令牌": "アクセストークンを貼り付け", "系统浏览器": "システムブラウザ", "系统浏览器可复用已有登录态(国际版推荐);内嵌窗口更干净。": "システムブラウザは既存のログイン状態を再利用できます(国際版で推奨);内蔵ウィンドウの方がクリーンです。", "系统浏览器打开(复用已登录的 Cline 账号);完成后自动加入列表": "システムブラウザで開く(ログイン済みの Cline アカウントを再利用);完了後は自動でリストに追加されます", "系统浏览器打开(复用已登录的 Google 账号);完成后自动加入列表": "システムブラウザで開きます(ログイン済みの Google アカウントを再利用);完了後は自動でリストに追加されます", "系统浏览器打开(复用已登录的 Zai / Google 账号);完成后自动加入列表": "システムブラウザで開く(ログイン済みの Zai / Google アカウントを再利用);完了後は自動でリストに追加されます", "系统浏览器打开(复用已登录的美团账号);完成后自动加入列表": "システムブラウザで開く(ログイン済みの Meituan アカウントを再利用);完了後は自動でリストに追加されます", "系统浏览器打开(复用已登录账号);完成后自动加入列表": "システムブラウザで開く(ログイン済みアカウントを再利用);完了後は自動でリストに追加されます", "系统默认浏览器": "システムの既定ブラウザ", "组织登录地址(Start URL)": "組織のログイン URL(Start URL)", "继续新建独立提供商": "別のプロバイダーを作成", "续期令牌": "リフレッシュトークン", "编码套餐 API Key": "コーディングプラン API Key", "网关 Secret": "ゲートウェイシークレット", "网关未返回有效的手动回调输入契约;请更新网关后重新发起。": "ゲートウェイが有効な手動コールバック入力契約を返しませんでした。ゲートウェイを更新し、もう一度開始してください。", "网页 Cookie": "Web Cookie", "网页登录": "ウェブログイン", "网页登录 / 填写凭证": "Web ログイン / 認証情報を入力", "网页登录的打开方式": "ウェブログインの開き方", "网页登录(Zai / Google)": "ウェブログイン(Zai / Google)", "网页访问令牌": "Web アクセストークン", "腾讯 TokenHub 国内版(按量)": "Tencent TokenHub 中国版(従量課金)", "腾讯 TokenHub 国内站按量 API;使用 TokenHub API Key,不是 Token Plan 套餐或 WorkBuddy 凭证": "Tencent TokenHub 中国サイトの従量課金 API です。Token Plan や WorkBuddy の認証情報ではなく、TokenHub API Key を使用します", "腾讯 TokenHub 国际版(按量)": "Tencent TokenHub 国際版(従量課金)", "腾讯 TokenHub 国际站按量 API;使用 TokenHub API Key,不是 Token Plan 套餐或 WorkBuddy 凭证": "Tencent TokenHub 国際サイトの従量課金 API です。Token Plan や WorkBuddy の認証情報ではなく、TokenHub API Key を使用します", "自定义": "カスタム", "自建聚合面板:填你自己的站点地址。余额查询用该账号的 API Key 打 {base}/v1/usage,不需要额外配置": "自前のアグリゲーションパネル:自分のサイトアドレスを入力。残高照会はこのアカウントの API キーで {base}/v1/usage を叩きます。追加設定不要", "自建聚合面板:填你自己的站点地址;余额查询要另填 NewAPI 的个人访问令牌(见下方「余额查询」一段)": "自前のアグリゲーションパネル:自分のサイトアドレスを入力。残高照会には別途 NewAPI の個人アクセストークンが必要です(下の「残高照会」の節を参照)", "获取风控配置失败,将直接尝试领取:{message}": "不正対策設定の取得に失敗しました。そのまま受け取りを試みます:{message}", "获取风控配置失败:{message}": "認証設定を取得できませんでした:{message}", "获取验证码": "コードを取得", "要添加到其他站点,请返回「已建 API」重新选择": "別のサイトに追加するには、「設定済み API」に戻って選択してください", "解锁 Premium": "Premium を解除", "访客模式": "ゲストモード", "访客模式(免登录)": "ゲストモード(ログイン不要)", "访问令牌": "アクセストークン", "该上游无需鉴权(不发送鉴权头)": "このアップストリームは認証不要(認証ヘッダーを送信しません)", "该地址已有提供商": "このアドレスのプロバイダーは既に存在します", "该提供商": "このプロバイダー", "该提供商已不存在或地址已变更,请重新选择": "このプロバイダーは存在しないか、アドレスが変更されています。選択し直してください", "该提供商已不存在(可能已被删除),请刷新后重试": "このプロバイダーは存在しません(削除された可能性があります)。更新して再試行してください", "该提供商账号添加功能即将上线": "このプロバイダーのアカウント追加機能は近日公開予定です", "该登录需要继续跳转,请在网关桌面面板重新发起。": "このログインには追加のリダイレクトが必要です。ゲートウェイのデスクトップパネルで再度開始してください。", "该自定义提供商已不存在(可能已被删除),请刷新后重试": "このカスタムプロバイダーは存在しません(削除された可能性があります)。更新してから再試行してください", "请使用网页访问令牌,不要填写 sk- 开头的 API Key。": "Web アクセストークンを使用し、sk- で始まる API Key は入力しないでください。", "请先选择一个自定义提供商": "先にカスタムプロバイダーを選択してください", "请在弹出的滑块中完成验证(官方要求的风控步骤)": "表示されたスライダーで認証を完了してください(公式が求める不正対策ステップ)", "请在插件打开的专用 Chrome 窗口中登录移动云(yun.139.com)。登录成功后会自动读取并验证凭据,随后继续添加账号。": "プラグインが開いた専用 Chrome ウィンドウで中国移動クラウド(yun.139.com)にログインしてください。成功すると認証情報を自動取得・検証し、アカウント追加を続行します。", "请在插件打开的端砚控制台窗口中登录(支持密码、短信或扫码)。插件会自动读取登录结果并关闭窗口,无需手动关闭;随后按所选方式创建或复用 API Key。新建密钥的明文只显示一次,由插件保存。": "プラグインが開いた InkStone コンソールで、パスワード・SMS・QR コードのいずれかでログインしてください。プラグインが結果を読み取り、ウィンドウを自動で閉じます。続いて選択した方式で API Key を作成または再利用します。新しいキーの平文は一度だけ表示され、プラグインが保存します。", "请在插件打开的端砚控制台窗口中登录(支持密码、短信或扫码),然后退出该浏览器:macOS 请按 Cmd+Q(只关闭窗口不够),Linux 请关闭最后一个窗口。插件读取登录结果后会继续处理,并按所选方式创建或复用 API Key。新建密钥的明文只显示一次,由插件保存。": "プラグインが開いた InkStone コンソールで、パスワード・SMS・QR コードのいずれかでログインし、そのブラウザーを終了してください。macOS は Cmd+Q(ウィンドウを閉じるだけでは不十分)、Linux は最後のウィンドウを閉じます。プラグインが結果を読み取り、選択した方式で API Key を作成または再利用します。新しいキーの平文は一度だけ表示され、プラグインが保存します。", "请在系统浏览器完成官方登录。": "システムブラウザーで公式ログインを完了してください。", "请在运行网关的机器上打开 PowerShell,执行下面的专用登录命令,并按官方提示完成授权。面板会自动检测登录结果,不需要粘贴凭证。": "ゲートウェイのマシンで PowerShell を開き、以下の専用ログインコマンドを実行して公式の案内に従って認可を完了してください。パネルは完了を自動検出するため、認証情報の貼り付けは不要です。", "请在运行网关的机器上打开终端,执行下面的专用登录命令,并按官方提示完成授权。面板会自动检测登录结果,不需要粘贴凭证。": "ゲートウェイのマシンで端末を開き、以下の専用ログインコマンドを実行して公式の案内に従って認可を完了してください。パネルは完了を自動検出するため、認証情報の貼り付けは不要です。", "请填写 11 位大陆手机号": "11 桁の中国本土の携帯番号を入力してください", "请填写 6 位数字验证码": "6 桁の認証コードを入力してください", "请填写 Base URL": "Base URL を入力してください", "请填写 {label}": "{label} を入力してください", "请填写名称": "名前を入力してください", "请安装并启用对应的提供商插件;列表为空时请刷新后重试。": "対応するプロバイダープラグインをインストールして有効にしてください。一覧が空の場合は、更新して再試行してください。", "请完成验证…": "認証を完了してください…", "请选择客户端凭证文件,或本软件导出的单账号 JSON 文件": "クライアントの認証情報ファイル、または本アプリが出力した単一アカウントの JSON ファイルを選択してください。", "读取 %APPDATA%/AutoClaw/auth.json 并解密,仅 Windows": "%APPDATA%/AutoClaw/auth.json を読み込んで復号します。Windows のみ", "读取 ~/.cline/data/settings/providers.json,需已在 Cline 客户端登录": "~/.cline/data/settings/providers.json を読み込みます。Cline クライアントでログイン済みである必要があります", "读取 ~/.meituan-catpaw/auth.json,需已在 CatPaw 客户端登录": "~/.meituan-catpaw/auth.json を読み込みます。CatPaw クライアントでログイン済みである必要があります", "读取本机 KukuAI 客户端登录态(%APPDATA%\\baidugenflowpro\\Network\\Cookies),需已在 KukuAI 客户端登录": "本機の KukuAI クライアントのログイン状態を読み込みます(%APPDATA%\\baidugenflowpro\\Network\\Cookies)。KukuAI クライアントでログイン済みである必要があります", "读取本机 OrcaTerm 客户端登录态(%APPDATA%\\com.orcaterm-desktop.app\\data.bin),需已在 OrcaTerm 客户端登录": "ローカルの OrcaTerm クライアントのログイン状態(%APPDATA%\\com.orcaterm-desktop.app\\data.bin)を読み取ります。OrcaTerm クライアントでのログインが必要です", "读取本机已登录豆包工作客户端的 Cookie,每次请求实时读取;客户端需使用 --remote-debugging-port=9342 启动。本软件不修改、关闭或重启客户端。": "リクエストごとに、ログイン済みのローカル豆包工作クライアントから Cookie を読み取ります。クライアントを --remote-debugging-port=9342 で起動してください。本アプリはクライアントを変更、終了、再起動しません。", "读取本机智谱清言客户端登录态(%APPDATA%\\chatglm\\Network\\Cookies),需已在客户端登录": "本機の智谱清言クライアントのログイン状態を読み取ります(%APPDATA%\\chatglm\\Network\\Cookies)。クライアントでログイン済みである必要があります", "读取的是网关电脑上已登录的客户端,不是打开面板的电脑;也可改用粘贴凭据。": "パネルを開いている端末ではなく、ゲートウェイのコンピューターにあるログイン済みクライアントを読み取ります。認証情報の貼り付けも利用できます。", "读取网关所在机器上 kiro-cli 或 Kiro IDE 的登录态,不是当前浏览器所在电脑的账号;续期后会写回原处。": "このブラウザーの端末ではなく、ゲートウェイ端末上の kiro-cli または Kiro IDE のログイン状態を読み取ります。更新した認証情報は元の場所に書き戻します。", "读取运行网关的电脑上已登录的 QuWork,只保存本机引用,不修改官方客户端文件;切换账号后需重新导入。": "ゲートウェイのコンピューターでログイン済みの QuWork を読み取り、参照のみを保存します。公式ファイルは変更しません。アカウント切替後は再度取り込んでください。", "读本机官方客户端(Tencent WorkBuddy / WorkBuddy AI)当前登录的账号:自动定位其凭证目录里最新的登录态文件(需已在本机官方客户端登录)。导入后由网关自动续期,无需跟随 2 小时时效手动换令牌。": "このマシンの公式クライアント(Tencent WorkBuddy / WorkBuddy AI)で現在ログイン中のアカウントを読み取ります:認証情報ディレクトリ内の最新のログイン状態ファイルを自動で特定します(このマシンの公式クライアントにログイン済みである必要があります)。インポート後はゲートウェイが自動で更新するため、2 時間の有効期限に合わせて手動でトークンを交換する必要はありません。", "读本机客户端当前登录态(明文 Cookie,无需解密)。客户端运行时 Cookies 文件被独占占用,导入前请先关闭 KukuAI 客户端。": "本機クライアントの現在のログイン状態を読み込みます(平文 Cookie、復号不要)。クライアントの実行中は Cookies ファイルが排他占有されるため、インポート前に KukuAI クライアントを終了してください。", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。": "本機クライアントの現在のログイン状態を読み込みます。毎回リアルタイムで読み取ります(この記録を削除してもクライアントのログイン状態には影響しません)。", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。客户端重新登录后点「刷新 Token」同步。": "本機クライアントの現在のログイン状態を読み込みます。毎回リアルタイムで読み取ります(この記録を削除してもクライアントのログイン状態には影響しません)。クライアントで再ログインしたら「Token を更新」をクリックして同期してください。", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。客户端重新登录后重新导入即可。": "本機クライアントの現在のログイン状態を読み込みます。毎回リアルタイムで読み取ります(この記録を削除してもクライアントのログイン状態には影響しません)。クライアントで再ログインしたら再インポートしてください。", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。用 Zai / Google 登录客户端的用户走这一条。": "本機クライアントの現在のログイン状態を読み込みます。毎回リアルタイムで読み取ります(この記録を削除してもクライアントのログイン状態には影響しません)。Zai / Google でクライアントにログインしているユーザーはこちらを使ってください。", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。这一条归入 {label}。": "本機クライアントの現在のログイン状態を読み込みます。毎回リアルタイムで読み取ります(この記録を削除してもクライアントのログイン状態には影響しません)。これは {label} に分類されます。", "读本机客户端当前登录的 OAuth 令牌(明文 JSON,无需解密)。导入后由网关自动续期,无需跟随客户端的 2 小时时效手动换令牌。": "ローカルクライアントが現在ログインしている OAuth トークンを読み取ります(平文 JSON、復号不要)。インポート後はゲートウェイが自動で更新するため、クライアントの 2 時間の有効期限に合わせて手動で切り替える必要はありません。", "读本机客户端当前的登录态。客户端的 Cookies 是 DPAPI 加密的(Chromium os_crypt),因此仅 Windows 可用;客户端正在运行时可能读不到该文件,先退出客户端再试即可(也可改用「填写凭证」粘贴令牌)。": "本機クライアントの現在のログイン状態を読み取ります。クライアントの Cookies は DPAPI 暗号化(Chromium os_crypt)されているため、Windows でのみ利用できます。クライアントの起動中はこのファイルを読めないことがあるので、クライアントを終了してから再試行してください(「資格情報を入力」でトークンを貼り付ける方法でも構いません)。", "豆包工作": "豆包工作", "账号信息": "アカウント情報", "账号信息不完整,请刷新后重试": "アカウント情報が不完全です。更新してから再試行してください", "账号名由插件自动获取,添加后可修改。": "アカウント名はプラグインが自動で取得します。追加後に変更できます。", "账号已添加,但代理选择未确认保存;请在账号设置中重新检查。": "アカウントを追加しましたが、プロキシ選択の保存は確認できませんでした。アカウント設定で確認してください。", "账号已添加,但未返回账号 ID,无法保存登录代理选择。": "アカウントを追加しましたが、アカウント ID が返されなかったためログインプロキシの選択を保存できません。", "账号已添加,但请留意:{warning}": "アカウントを追加しましたが、ご注意ください:{warning}", "账号已添加,但账号列表同步失败,请刷新重试。": "アカウントを追加しましたが、一覧の同期に失敗しました。更新して再試行してください。", "账号文件的提供商与当前选择不一致,请选择对应的提供商后再导入": "アカウントファイルのプロバイダーが現在の選択と異なります。対応するプロバイダーを選択してからインポートしてください。", "账号版本": "アカウントバージョン", "账号类型": "アカウント種別", "账号:{name}
    ": "アカウント:{name}
    ", "走 Inference Providers 路由,Key 在 hf.co/settings/tokens 创建": "Inference Providers ルートを使用します。Key は hf.co/settings/tokens で作成します", "返回提供商列表": "プロバイダー一覧に戻る", "还没有可用的提供商。各家提供商的转发与账号实现都在插件包里,装好之后这里就会出现。": "利用できるプロバイダーはまだありません。各プロバイダーの転送とアカウント処理はプラグインパックに含まれています。パックをインストールするとここに表示されます。", "还没有账号": "アカウントはまだありません", "还需完成 AWS 授权:请打开下一步授权页,完成后回填新的完整回调地址。": "AWS の認可が必要です。次の認可ページを開き、完了後に新しい完全なコールバック URL を貼り付けてください。", "还需继续授权,请打开下一步授权页,完成后回填新的完整回调地址。": "追加の認可が必要です。次の認可ページを開き、完了後に新しい完全なコールバック URL を貼り付けてください。", "这一家当前不支持网页登录,请改用填写凭证": "このプロバイダーは現在ウェブログインに対応していません。認証情報の入力に切り替えてください", "这个账号当前没有可自动领的活动(只自动领每日登录赠送积分)": "このアカウントには現在自動で受け取れるイベントがありません(自動で受け取るのは毎日ログインで付与されるポイントのみです)", "这份额度走「活动套餐」通道:若转发时提示编码套餐已到期,": "このクォータは「イベントプラン」の経路を使用します:転送時にコーディングプランの期限切れが表示された場合は、", "这里填国内站(modelscope.cn)的账号:请粘贴国内站的令牌。国际站(modelscope.ai)是另一家 provider、另一套账号,两边的令牌不通用。": "ここには中国版サイト(modelscope.cn)のアカウントを入力します。中国版サイトのトークンを貼り付けてください。国際版サイト(modelscope.ai)は別のプロバイダ・別のアカウント体系で、トークンは相互利用できません。", "这里填国内站(monkeycode-ai.com)的账号:请粘贴国内站的 session。国际站(monkeycode-ai.net)是另一家 provider、另一套账号,两边的凭证不通用。": "ここには中国サイト(monkeycode-ai.com)のアカウントを入力します:中国サイトの session を貼り付けてください。国際サイト(monkeycode-ai.net)は別のプロバイダーで、アカウントも別です。両者の認証情報は共用できません。", "这里填国际站(modelscope.ai)的账号:请粘贴国际站的令牌。国内站(modelscope.cn)是另一家 provider、另一套账号,两边的令牌不通用。": "ここには国際版サイト(modelscope.ai)のアカウントを入力します。国際版サイトのトークンを貼り付けてください。中国版サイト(modelscope.cn)は別のプロバイダ・別のアカウント体系で、トークンは相互利用できません。", "这里填国际站(monkeycode-ai.net)的账号:请粘贴国际站的 session。国内站(monkeycode-ai.com)是另一家 provider、另一套账号,两边的凭证不通用。": "ここには国際サイト(monkeycode-ai.net)のアカウントを入力します:国際サイトの session を貼り付けてください。中国サイト(monkeycode-ai.com)は別のプロバイダーで、アカウントも別です。両者の認証情報は共用できません。", "选择 CatPaw 客户端的登录态文件 auth.json(Windows:C:\\Users\\<你的用户名>\\.meituan-catpaw\\auth.json;macOS / Linux:~/.meituan-catpaw/auth.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端。": "CatPaw クライアントのログイン状態ファイル auth.json を選択します(Windows:C:\\Users\\<ユーザー名>\\.meituan-catpaw\\auth.json、macOS / Linux:~/.meituan-catpaw/auth.json)。インポート後は認証情報がゲートウェイ側に保存され、単独で転送できるようになります(本機クライアントに依存しません)。", "选择 Cline 客户端的登录态文件 providers.json(Windows:C:\\Users\\<你的用户名>\\.cline\\data\\settings\\providers.json;macOS / Linux:~/.cline/data/settings/providers.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端;这一条归入 {label}。": "Cline クライアントのログイン状態ファイル providers.json を選択します(Windows:C:\\Users\\<ユーザー名>\\.cline\\data\\settings\\providers.json、macOS / Linux:~/.cline/data/settings/providers.json)。インポート後は認証情報がゲートウェイ側に保存され、単独で転送できるようになります(本機クライアントに依存しません)。この項目は {label} に登録されます。", "选择 KukuAI 客户端的 Cookies 文件(%APPDATA%\\baidugenflowpro\\Network\\Cookies):它是**二进制** SQLite 数据库(无扩展名,不是 JSON)。导入时读的是你选中文件的副本、不和运行中的客户端抢占用,因此**无需先关闭客户端**。导入后凭证直接落在网关、可独立转发。": "KukuAI クライアントの Cookies ファイルを選択します(%APPDATA%\\baidugenflowpro\\Network\\Cookies):これは**バイナリ**の SQLite データベースです(拡張子なし、JSON ではありません)。インポート時は選択したファイルのコピーを読み、実行中のクライアントと占有を争いません。したがって**クライアントを終了する必要はありません**。インポート後は認証情報がゲートウェイ側に保存され、単独で転送できるようになります。", "选择 OAuth auth.json 的绝对路径(不扫描其他目录)": "OAuth auth.json の絶対パスを選択(他のディレクトリは走査しません)", "选择凭证文件导入": "認証情報ファイルからインポート", "选择包含 Cookie 的 JSON 对象,或本软件导出的单账号 JSON 文件。导入后可独立使用,不需要持续运行豆包工作客户端。": "Cookie を含む JSON オブジェクト、または本アプリがエクスポートした単一アカウントの JSON ファイルを選択してください。インポート後は豆包工作クライアントを起動し続ける必要はありません。", "选择包含 Tabbit Cookie / JWT 的 JSON 或文本文件;也可以直接粘贴到上方表单。": "Tabbit の Cookie / JWT を含む JSON またはテキストファイルを選択してください。上のフォームに直接貼り付けることもできます。", "选择包含该提供商凭证的 JSON 文件,或本软件导出的单账号 JSON 文件。导入后凭证保存在网关,可独立使用。": "このプロバイダーの認証情報を含む JSON ファイル、または本アプリが出力した単一アカウントの JSON ファイルを選択してください。認証情報はゲートウェイに保存され、独立して使用できます。", "选择官方客户端的登录态凭证文件(workbuddy-desktop.info / workbuddy-desktop-ai.info)或 wb2api 导出的账号 JSON(嵌套 / 扁平形均可)。": "公式クライアントのログイン状態の認証情報ファイル(workbuddy-desktop.info / workbuddy-desktop-ai.info)または wb2api がエクスポートしたアカウント JSON(ネスト / フラット形式どちらも可)を選択してください。", "选择小浣熊客户端的登录态文件 auth.json(Windows:C:\\Users\\<你的用户名>\\.box-agent\\config\\auth.json;macOS / Linux:~/.box-agent/config/auth.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端。": "小浣熊クライアントのログイン状態ファイル auth.json を選択します(Windows:C:\\Users\\<ユーザー名>\\.box-agent\\config\\auth.json、macOS / Linux:~/.box-agent/config/auth.json)。インポート後は認証情報がゲートウェイ側に保存され、単独で転送できるようになります(本機クライアントに依存しません)。", "选择提供商": "プロバイダーを選択", "选择新增账号或重新授权当前注册": "新規アカウント追加または現在の登録の再認証を選択", "选择的文件不是合法 JSON": "選択したファイルは有効な JSON ではありません", "选择要添加账号的提供商": "アカウントを追加するプロバイダーを選択", "选择预置客户端": "プリセットクライアントを選択", "重新扫描": "再スキャン", "重新授权所选账号(固定原身份和 clientId)": "選択アカウントを再認可(元の識別情報と clientId を維持)", "重新读取提供商": "プロバイダーを再読み込み", "鉴权": "認証", "阿里云 Token Plan 套餐(国际站)": "Alibaba Cloud Token Plan プラン(国際版サイト)", "阿里云百炼 Coding 套餐(国内站)": "Alibaba Cloud Model Studio Coding プラン(中国版サイト)", "阿里云百炼 Coding 套餐(国际站)": "Alibaba Cloud Model Studio Coding プラン(国際版サイト)", "阿里云百炼模型服务(国际站,OpenAI 兼容模式)": "Alibaba Cloud Model Studio モデルサービス(国際版サイト、OpenAI 互換モード)", "隐藏凭证": "認証情報を隠す", "需要图形验证码:登录窗口已弹出,请填写后继续": "画像認証が必要です:ログインウィンドウが開きました。入力して続行してください", "需要手动提交授权回调": "認可コールバックの手動送信が必要", "需要时填写完整 Cookie": "必要な場合は完全な Cookie を入力", "需要进行人机验证": "人間認証が必要です", "预置 API": "プリセット API", "领取 CodeArts 每日福利": "CodeArts の毎日特典を受け取る", "领取失败:{message}": "受け取りに失敗しました:{message}", "领取并让官方确认": "受け取って公式の確認を待つ", "风控验证配置不完整,请稍后重试": "不正対策認証の設定が不完全です。しばらくしてから再試行してください", "验证码": "認証コード", "验证码业务请求超时,请刷新状态后重试": "認証後の操作がタイムアウトしました。状態を更新してから再試行してください。", "验证码令牌入池接口不可用": "認証トークン登録 API を利用できません。", "验证码令牌未全部入池": "認証トークンをプールに登録できませんでした。", "验证码令牌池未返回状态": "認証トークンプールから状態が返されませんでした。", "验证码已使用,请重新验证": "認証トークンは使用済みです。再度認証してください。", "验证码已发送。收到后填入下方并点「登录并添加」": "認証コードを送信しました。受け取ったら下の欄に入力し、「ログインして追加」をクリックしてください", "验证码已发送,请查看手机短信": "認証コードを送信しました。携帯の SMS をご確認ください", "验证码已发送,请查看手机短信。填入下方并点「登录并添加」即完成登录": "認証コードを送信しました。携帯の SMS をご確認ください。下の欄に入力して「ログインして追加」をクリックすると、ログインが完了します", "验证码已发送,请查看短信": "認証コードを送信しました。SMS をご確認ください", "验证码校验失败,请重试": "認証コードの検証に失敗しました。再試行してください", "验证码校验超时,请重试": "認証コードの検証がタイムアウトしました。再試行してください", "验证码组件不可用,请重试": "認証コンポーネントが利用できません。再試行してください", "验证码组件初始化超时,请重试": "認証コンポーネントの初期化がタイムアウトしました。再試行してください", "验证码组件加载失败,请检查网络后重试": "認証コンポーネントの読み込みに失敗しました。ネットワークを確認して再試行してください", "验证码组件加载异常,请重试": "認証コンポーネントの読み込みでエラーが発生しました。再試行してください", "验证码组件加载超时,请检查网络后重试": "認証コンポーネントの読み込みがタイムアウトしました。ネットワークを確認して再試行してください", "验证码组件未加载,请重启应用后重试": "認証コンポーネントが読み込まれていません。アプリを再起動してから再試行してください", "验证码组件返回的验证串不完整(请重试)": "認証コンポーネントが不完全なトークンを返しました。再試行してください。", "验证被上游风控拒绝,请稍后重试": "上流のセキュリティサービスが認証を拒否しました。しばらくしてから再試行してください。", "验证请求过于频繁,请稍后重试": "認証リクエストが多すぎます。しばらくしてから再試行してください。", "默认开启;填 0 关闭(发送「已设为默认浏览器」标记)": "既定で有効。0 を入力すると無効(「既定のブラウザに設定済み」マーカーを送信)", "(免费额度池,模型名带 cline-free/ 前缀)。": "(無料枠プール、モデル名に cline-free/ プレフィックスが付きます)。", "(其中 {n} 把恢复为不限制)": "(うち {n} 個は無制限に戻ります)", "(必填)": "(必須)", "(有效期 {window})": "(有効期間 {window})", "(订阅池,模型名带 cline-pass/ 前缀,需要账号有对应订阅)。": "(サブスクプール、モデル名に cline-pass/ プレフィックスが付きます。アカウントに対応するサブスクリプションが必要です)。", ",下一次最快 {minutes} 分钟后": "、次回は最短 {minutes} 分後", ",并从 {n} 把 Key 的可用提供商里移除": "、Key {n} 個を利用可能なプロバイダーからも除外しました", " · 思考等级 ": " · 思考レベル ", " · 思考等级 {level}": " · 思考レベル {level}", " · 有映射 ": " · マッピングあり ", " · 限额中": " · レート制限中", " → 转发": " → 転送", " 上登记上游模型": "」にアップストリームモデル", " 与 ": " と ", " 个": " 個", " 个模型 · 已启用 ": " 個のモデル · 有効 ", " 个账号": " 件のアカウント", " 会广告它、请求它也会被转发到这家。 支持字母、数字与 ": " がそれを広告し、それをリクエストしてもこのプロバイダーへ転送されます。 使用できる文字は英字、数字と ", " 失败": " 失敗", " 已发出,等待上游首帧…": " を送信しました。アップストリームの初回フレームを待機中…", " 成功 ·": " 成功 ·", " 这类符号,但不能含空格或换行,且不超过 128 个字符。同一提供商内,同名绑定最多启用一条;已有启用绑定时不能新增,启用备用绑定会自动关闭其他同名绑定。不同提供商可各启用一条同名绑定,用于主备切换。": " などの記号を使用できますが、空白や改行は使用できず、128 文字以内にしてください。同一プロバイダー内では同名のバインドを1つだけ有効にできます。追加する前に既存の有効なバインドを無効にしてください。予備のバインドを有効にすると、他の同名のバインドは自動的に無効になります。フェイルオーバー用に、異なるプロバイダーではそれぞれ1つを有効にできます。", " 里的 ": " の ", "(全局)": "(グローバル)", "(未选)": "(未選択)", "0 家": "0 社", "<上游模型 ID>": "<アップストリームモデル ID>", "<上游模型>": "<アップストリームモデル>", "<对外名>": "<外部公開名>", "models.dev 补齐:对下游声明 {value}": "models.dev による補完: 下流には {value} として宣言", "{action}映射 {alias}": "マッピング {alias} を{action}", "{id}({name})": "{id}({name})", "{label}要填 1 ~ 1 亿之间的整数(留空 = {inherit})": "{label}には 1 ~ 1 億の間の整数を入力してください(空欄 = {inherit})", "{label}:{value}(对下游声明的精确值){origin}{suffix}": "{label}: {value}(下流に宣言する正確な値){origin}{suffix}", "{label}:{value}(对下游声明的精确值){suffix}": "{label}:{value}(ダウンストリームへ宣言する正確な値){suffix}", "{label}:上游未声明{suffix}": "{label}:アップストリーム未宣言{suffix}", "{label}:上游未声明(下游会按不支持处理){suffix}": "{label}:アップストリーム未宣言(ダウンストリームでは未対応として処理){suffix}", "{label}:不支持{origin}{suffix}": "{label}: 非対応{origin}{suffix}", "{label}:不支持{suffix}": "{label}:未対応{suffix}", "{label}:支持{origin}{suffix}": "{label}: 対応{origin}{suffix}", "{label}:支持{suffix}": "{label}:対応{suffix}", "{level}(本次指定)": "{level}(今回指定)", "{name}({id})": "{name}({id})", "{name}(不在该家当前清单里)": "{name}(このプロバイダーの現在のカタログにありません)", "{n} 个": "{n} 個", "{n} 个映射": "{n} 件のマッピング", "{n} 个模型": "{n} 個のモデル", "{n} 字节": "{n} バイト", "{provider}:模型清单为空,等待获取": "{provider}:モデルカタログが空です。取得を待機中", "{status}:模型获取失败": "{status}:モデルの取得に失敗", "{total} 家 · 成功 {done}": "{total} 社 · 成功 {done}", "{total} 家 · 成功 {done} · 失败 {failed}": "{total} 社 · 成功 {done} · 失敗 {failed}", "✅ 已保存 {id} 的能力位({provider})": "✅ {id} の能力フラグを保存しました({provider})", "✅ 已导入 {added} 个模型({skipped} 个已存在,跳过)": "✅ {added} 個のモデルをインポートしました({skipped} 個は既存のためスキップ)", "✅ 已更新 {name} 的思考等级": "✅ {name} の思考レベルを更新しました", "✅ 已添加映射 {name} → {target}({label}){suffix}": "✅ マッピング {name} → {target} を追加しました({label}){suffix}", "✅ 已登记 {name}({label}),但该提供商还没有可用账号,这一行要加上账号后才会显示": "✅ {name} を登録しました({label})。ただしこのプロバイダーにはまだ利用可能なアカウントがないため、この行はアカウントを追加するまで表示されません", "✅ 已登记模型 {name}({label})": "✅ モデル {name} を登録しました({label})", "✅ 已登记自定义模型 {name}({label})": "✅ カスタムモデル {name} を登録しました({label})", "✅ 批量{action}完成:共 {n} 个模型": "✅ 一括操作「{action}」が完了:合計 {n} 個のモデル", "✅ 批量{action}完成:共 {n} 个模型(跳过不可删除的 {skipped} 个)": "✅ 一括操作「{action}」が完了:合計 {n} 個のモデル(削除できない {skipped} 個はスキップ)", "。": "。", "。上游清单给的值不准时,在这里改;": "。アップストリームのカタログの値が正しくない場合はここで変更します;", "。同一对外名可在多个提供商各添加一条: 下游用同一个名字请求,网关按账号优先级主备切换,失败自动落到下一个提供商。": "。同じ外部公開名は複数のプロバイダーにそれぞれ 1 件ずつ追加できます: ダウンストリームが同じ名前でリクエストすると、ゲートウェイはアカウントの優先度に従ってプライマリ/バックアップを切り替え、失敗時は自動的に次のプロバイダーへフォールバックします。", "「恢复继承」会把这一项交还给上游清单的值。": "「継承を復元」はこの項目をアップストリームのカタログの値に戻します。", "「来源」列会标成": "「ソース」列は", "上下文 / 输出": "コンテキスト / 出力", "上下文窗口": "コンテキストウィンドウ", "上下文窗口 {input} / 最大输出 Token {output} —— 点击修改模型能力": "コンテキストウィンドウ {input} / 最大出力 Token {output} —— クリックしてモデル能力を変更", "上游 {model}": "アップストリーム {model}", "上游不认识这个模型名:先点「获取模型」刷新清单,或核对默认绑定指向的上游模型。": "アップストリームがこのモデル名を認識できません:まず「モデルを取得」でカタログを更新するか、デフォルトバインディングが指すアップストリームモデルを確認してください。", "上游原始响应": "アップストリームの生レスポンス", "上游可用档位:{levels}": "上流で利用可能なレベル:{levels}", "上游固定为 {level},绑定其他等级也无法调高。": "上流は {level} に固定されています。別のレベルを指定しても引き上げられません。", "上游已经不再提供这个模型(可能已下线或改了 ID)": "上流はこのモデルを提供しなくなりました(廃止または ID 変更の可能性があります)。", "上游拒绝了这条登录态:重新登录一次,或把这条账号删掉。": "アップストリームがこのログイン状態を拒否しました:もう一度ログインするか、このアカウントを削除してください。", "上游未声明": "アップストリーム未宣言", "上游未声明(下游会按不支持处理)": "アップストリーム未宣言(ダウンストリームでは未対応として処理)", "上游未部署": "上流で未デプロイ", "上游模型": "アップストリームモデル", "上游模型 ID": "アップストリームモデル ID", "上游没在预算内给完回答。可以只勾一个账号再测一次,看是普遍慢还是某一个账号慢。": "アップストリームが予算内で回答を返し切れませんでした。アカウントを 1 つだけチェックして再テストすると、全体的に遅いのか特定のアカウントだけ遅いのかを確認できます。", "上游没有给出可读的错误说明": "アップストリームが読み取り可能なエラー説明を返しませんでした", "上游没有返回任何模型": "アップストリームがモデルを 1 つも返しませんでした", "上游目录列出了这个模型,但推理端尚未识别;保留在清单中,后续探测成功后自动清除标记": "上流カタログにはこのモデルがありますが、推論バックエンドはまだ認識していません。カタログには保持され、後の疎通確認に成功すると表示は自動的に解除されます。", "上游目录尚未拉到,用的是内置静态清单;点「刷新模型清单」可重试": "アップストリームのディレクトリをまだ取得できていません。内蔵の静的カタログを使用しています;「モデルカタログを更新」で再試行できます", "上游能列出这个模型,但官方客户端不展示它;本仓已默认关闭它的默认绑定(点这一行的开关可以手动打开)": "上流はこのモデルを返しますが、公式クライアントは表示しません。本ゲートウェイは既定バインディングを無効にしています(行のスイッチで手動で有効化できます)", "下游客户端": "ダウンストリームクライアント", "下游请求 ": "ダウンストリームのリクエスト ", "不展示": "非表示", "不影响网关的转发与路由": "ゲートウェイの転送とルーティングには影響しません", "不支持": "未対応", "不覆盖": "上書きしない", "两边原因不一样时各自处理。如果": "両者の原因が異なる場合はそれぞれ対処します。もし", "中止测试": "テストを中止", "仅支持已识别压缩格式的 ZCode;客户端修改压缩格式后可能需要更新适配。": "識別済みの ZCode 圧縮形式のみ対応しています。クライアントが形式を変更した場合、対応の更新が必要になることがあります。", "仅本次测试临时生效,不修改账号保存的代理配置。可选「网络代理」页里的节点或强制直连。": "今回のテストにのみ一時的に適用され、アカウントに保存されたプロキシ設定は変更されません。「ネットワークプロキシ」ページのノードを選択するか、直接接続を強制できます。", "从这一家的上游拉一份模型清单,勾选要哪些再导入(已添加的不会重复导入)": "このプロバイダーのアップストリームからモデルカタログを取得し、必要なものを選んでインポートします(追加済みのものは重複インポートされません)", "代理池响应异常": "プロキシプールの応答が不正です", "以模型本名直发": "モデル本来の名前でそのまま送信", "以这个上游模型发一次最小请求,走真实转发链路": "このアップストリームモデルで最小限のリクエストを 1 回送信し、実際の転送経路を通します", "例如 gpt-4o": "例:gpt-4o", "例如 gpt-5.5-preview": "例:gpt-5.5-preview", "保存": "保存", "保存中…": "保存中…", "保存失败:{message}": "保存に失敗:{message}", "保存映射": "マッピングを保存", "保存等级": "レベルを保存", "倍率": "倍率", "倍率升序": "倍率の昇順", "倍率升序,点击切换为降序": "倍率の昇順。クリックで降順に切り替え", "倍率降序": "倍率の降順", "倍率降序,点击切换为升序": "倍率の降順。クリックで昇順に切り替え", "全选当前筛选出的模型(跨分页);再点取消": "現在の絞り込み結果のモデルをすべて選択(ページをまたぎます);もう一度クリックすると解除", "全选当前筛选结果": "現在の絞り込み結果をすべて選択", "全选未添加": "未追加をすべて選択", "全选({n})": "すべて選択({n})", "全部": "すべて", "全部删除": "すべて削除", "全部映射": "すべてのマッピング", "全部自定义提供商": "カスタムプロバイダー全部", "全部({n} 家)": "すべて({n} 社)", "共 {n} 家 · 点「获取模型」开始": "合計 {n} 社 · 「モデルを取得」をクリックして開始", "关闭": "閉じる", "关闭即中止": "閉じると中止されます", "关闭后保留规则,所有请求按原模型处理。": "無効にしてもルールは保持され、すべてのリクエストは元のモデルで処理されます。", "其余 {n} 个会被跳过。": "残りの {n} 個はスキップされます。", "内置": "内蔵", "内置提供商": "内蔵プロバイダー", "内置清单": "内蔵カタログ", "再测一次": "もう一度テスト", "删除": "削除", "删除中…": "削除中…", "删除入口未就绪,请重试或重启应用": "削除の入口が準備できていません。再試行するか、アプリを再起動してください", "删除全部未挂载映射": "未接続のマッピングをすべて削除", "删除映射": "マッピングを削除", "删除映射 {alias}": "マッピング {alias} を削除", "删除未挂载的映射": "未接続のマッピングを削除", "删除自定义提供商": "カスタムプロバイダーを削除", "删除规则 {n}": "ルール {n} を削除", "删除这个自定义提供商(连同名下账号)": "このカスタムプロバイダーを削除(配下のアカウントも含む)", "删除这条映射": "このマッピングを削除", "删除选中的模型": "選択したモデルを削除", "刷新全部家(逐家打上游)": "すべてのプロバイダーを更新(各家ごとにアップストリームへ 1 回)", "刷新完成,但没有得到任何结果": "更新は完了しましたが、結果が得られませんでした", "刷新模型管理页里各提供商的远程模型目录,逐家结果列在弹窗里": "モデル管理ページの各プロバイダーのリモートモデルディレクトリを更新し、プロバイダーごとの結果をダイアログに一覧表示します", "刷新清单": "カタログを更新", "加载中…": "読み込み中…", "勾上它,导入后即进入这家的清单": "チェックを入れると、インポート後にこのプロバイダーのカタログに入ります", "勾几个就并行测几次;默认选队列里最靠前的一个。": "チェックした数だけ並行してテストします;デフォルトではキューの先頭の 1 つを選択します。", "勾选后可批量操作": "チェックすると一括操作ができます", "压缩模型": "圧縮用モデル", "压缩路由": "圧縮ルーティング", "压缩路由入口尚未就绪,请刷新页面后重试": "圧縮ルーティングの準備ができていません。ページを更新して再試行してください。", "压缩路由已保存,下次压缩请求生效": "圧縮ルーティングを保存しました。次の圧縮リクエストから適用されます。", "压缩路由接口返回了不完整的数据": "圧縮ルーティング API から不完全なデータが返されました。", "原始 ID 已作为默认绑定,请直接使用该绑定的开关或等级按钮": "元の ID はすでにデフォルトバインディングになっています。そのバインディングのスイッチまたはレベルボタンを直接使用してください", "原始 ID 的默认绑定不能删除,请关闭它的开关": "元の ID のデフォルトバインドは削除できません。スイッチを無効にしてください。", "取消": "キャンセル", "另有 {n} 个非手动登记的模型将被跳过。": "ほかに手動登録でない {n} 個のモデルがスキップされます。", "另有 {n} 条别名映射({aliases}),别名不参与本次": "ほかに {n} 件のエイリアスマッピング({aliases})がありますが、エイリアスは今回は対象外です", "只刷新这一家的模型清单": "このプロバイダーのモデル一覧だけを更新", "只在识别到 ZCode 上下文压缩请求时切换模型,普通对话仍使用原模型。": "ZCode のコンテキスト圧縮リクエストを識別した場合のみモデルを切り替えます。通常の会話では元のモデルを使用します。", "只属于这一家": "このプロバイダーだけに属します", "可删除 {n} 个(手动登记 / 自定义家);": "削除可能 {n} 個(手動登録 / カスタムプロバイダー);", "可见": "表示", "可见性": "表示状態", "可配思考档位": "設定可能な思考レベル", "同一客户端的来源模型不能重复:{model}": "同じクライアントで元のモデルを重複指定できません:{model}", "同一条错误出现在所有账号上": "同じエラーがすべてのアカウントで発生する", "后端桥不可用": "バックエンドブリッジが利用できません", "启用压缩路由": "圧縮ルーティングを有効化", "启用后将自动关闭该提供商的其他同名绑定:{bindings}": "有効にすると、このプロバイダーの同名の他のバインドが自動的に無効になります:{bindings}", "启用规则 {n}": "ルール {n} を有効化", "回复": "応答", "固定思考档位": "固定思考レベル", "固定思考档位:{level}": "固定思考レベル:{level}", "图片": "画像", "图片生成": "画像生成", "图片生成模型请通过 /v1/images/generations 调用,暂不支持对话测试": "画像モデルは /v1/images/generations で呼び出してください。チャットテストにはまだ対応していません", "图片编辑": "画像編集", "图片识别": "画像認識", "圆点带内侧描边 = 由 models.dev 补齐;右上角小点 = 你手动覆盖过;虚线圈 = 未声明。悬停某一枚可看逐项出处。": "ドットの内側の輪 = models.dev による補完;右上の小点 = 手動で上書き済み;破線の輪 = 未宣言。ドットにカーソルを合わせると項目ごとの出典が見られます。", "在 ": "「", "填上游真正认识的那个模型 ID(不是给下游用的名字)。登记后它会进入该家的模型清单: 表格里出现这一行、": "アップストリームが実際に認識するモデル ID(ダウンストリームで使う名前ではありません)を入力してください。登録するとこのプロバイダーのモデルカタログに入ります: テーブルにこの行が現れ、", "复制": "コピー", "多半是上游自己的问题,过一会儿再试。同一个错误出现在所有账号上时,先查模型目录与映射。": "多くの場合アップストリーム側の問題です。しばらくしてから再試行してください。同じエラーがすべてのアカウントで発生する場合は、まずモデルディレクトリとマッピングを確認してください。", "失败": "失敗", "失败 {n} 个 · 首个失败:{error}": "失敗 {n} 個 · 最初の失敗:{error}", "如果 ZCode 已设置压缩路由,网关看到的是它改写后的模型。建议同一套规则只在一处配置。": "ZCode 側で圧縮ルーティングを設定済みの場合、ゲートウェイには変更後のモデルが届きます。同じルールは一か所だけで設定することを推奨します。", "完成": "完了", "官方客户端会展示这个模型": "公式クライアントはこのモデルを表示します", "对下游声明的能力(工具调用 / 图片识别 / 视频识别 / 支持思考)—— 点击修改": "ダウンストリームへ宣言する能力(ツール呼び出し / 画像認識 / 動画認識 / 思考対応)—— クリックして変更", "对外名可以是中文、字母、数字与 ": "公開名には中国語、英字、数字、および ", "对外名可自由命名,允许与上游模型 ID 同名(同名时该上游的原生路由优先,映射作兜底); 支持字母、数字与 ": "外部公開名は自由に命名でき、アップストリームモデル ID と同じ名前でもかまいません(同名の場合はそのアップストリームのネイティブルートが優先され、マッピングはフォールバックになります); 使用できる文字は英字、数字と ", "对外映射名(下游请求时用)": "外部公開マッピング名(ダウンストリームのリクエストで使用)", "对话协议": "対話プロトコル", "对话协议的说明": "対話プロトコルの説明", "对选中的 {n} 个模型执行批量操作": "選択した {n} 個のモデルに一括操作を実行", "导入失败:{message}": "インポートに失敗:{message}", "导入选中的 {n} 个模型": "選択した {n} 個のモデルをインポート", "将作用于以下模型": "以下のモデルに適用されます", "尚未获取": "未取得", "尚未配置压缩规则,默认使用原模型。": "圧縮ルールは未設定です。既定では元のモデルを使用します。", "尝试 {n} 次": "試行 {n} 回", "展开其余 {n} 个模型 ▾": "残り {n} 個のモデルを展開 ▾", "工具": "ツール", "工具调用": "ツール呼び出し", "已中止在途测试({n} 个账号)": "実行中のテストを中止しました({n} 件のアカウント)", "已删除 {n} 条未挂载映射": "未接続のマッピング {n} 件を削除しました", "已刷新": "更新済み", "已启用": "有効", "已启用 {name},其他同名绑定已自动关闭": "{name} を有効にしました。同名の他のバインドは自動的に無効になりました。", "已填写:对下游声明 {value}": "入力済み:ダウンストリームへ {value} を宣言", "已添加": "追加済み", "已等待 {seconds}s": "経過 {seconds}s", "已覆盖上游值": "アップストリーム値を上書き済み", "已覆盖:对下游声明 {value}": "上書き済み:ダウンストリームへ {value} を宣言", "已选 ": "選択済み ", "已选 {picked} 个 · 上游共 {upstream} 个 · 清单已有 {managed} 个": "選択済み {picked} 個 · アップストリーム合計 {upstream} 個 · カタログ登録済み {managed} 個", "开始测试": "テストを開始", "当前环境不支持代理池": "現在の環境はプロキシプールに対応していません", "当前环境不支持读取 API Key": "現在の環境では API Key を読み込めません", "当前通道未声明可用档位,映射等级不会注入;请先获取模型目录。": "この経路は利用可能なレベルを宣言していません。マッピングのレベルは注入されません。先にモデルカタログを取得してください。", "待获取": "取得待ち", "思考": "思考", "思考等级": "思考レベル", "思考等级 {level}": "思考レベル {level}", "思考等级 {level}(点击修改)": "思考レベル {level}(クリックして変更)", "思考等级的注入规则": "思考レベルの注入ルール", "思考过程({n} 字)": "思考プロセス({n} 文字)", "恢复继承": "継承を復元", "成功 {ok} 个,失败 {failed} 个": "成功 {ok} 個、失敗 {failed} 個", "所选 API Key 无权调用此模型或提供商": "選択した API Key にはこのモデルまたはプロバイダーを利用する権限がありません", "所选模型含同一提供商的同名绑定「{id}」,请分别启用,避免相互关闭": "選択したモデルには同一プロバイダーの同名バインド「{id}」があります。互いに無効にならないよう、個別に有効にしてください。", "所选模型没有共同可用档位,请分别设置或清除绑定。": "選択したモデルに共通の対応レベルがありません。個別に設定するか、バインドを解除してください。", "手动": "手動", "手动登记": "手動登録", "手动登记的上游模型;移除它会直接删掉这条登记": "手動登録されたアップストリームモデル;削除するとこの登録が直接削除されます", "执行{action}": "「{action}」を実行", "批量{action}完成:成功 {ok} 个,失败 {failed} 个": "一括操作「{action}」が完了:成功 {ok} 個、失敗 {failed} 個", "批量操作": "一括操作", "批量操作 · 已选 {n} 个模型": "一括操作 · 選択済み {n} 個のモデル", "按倍率升序排列": "倍率の昇順で並べ替え", "按倍率排序": "倍率で並べ替え", "按可见性筛选": "表示状態で絞り込む", "按客户端发送的模型 ID 匹配,支持模型别名和对话路由组;每次只映射一次。": "クライアントが送信したモデル ID で照合します。モデルの別名と会話ルーティンググループに対応し、各リクエストのマッピングは1回のみです。", "按所选网关对话协议组装请求并校验响应转换(Chat Completions / Responses / Anthropic Messages)。": "選択したゲートウェイ対話プロトコルでリクエストを組み立て、レスポンス変換を検証します(Chat Completions / Responses / Anthropic Messages)。", "按提供商分组排序,已启用模型优先;未知倍率排在末尾": "プロバイダーごとに並べ替え、有効なモデルを優先。倍率が不明なモデルは末尾に表示", "按提供商选择": "プロバイダーで選択", "按状态筛选": "ステータスで絞り込み", "提供商": "プロバイダー", "搜索模型": "モデルを検索", "搜索模型 ID / 名称 / 映射名…": "モデル ID / 名前 / マッピング名を検索…", "搜索模型 ID / 提供商": "モデル ID / プロバイダーを検索", "搜索模型 ID…": "モデル ID を検索…", "搜索账号…": "アカウントを検索…", "操作": "操作", "支持": "対応", "支持思考": "思考対応", "收起 ▴": "折りたたむ ▴", "放弃尚未保存的压缩路由修改?": "未保存の圧縮ルーティングの変更を破棄しますか?", "数字带虚线底 = 由 models.dev 补齐;右上角小点 = 你手动覆盖过;— = 未声明。点任意一格可改。": "数字の点線下線 = models.dev による補完;右上の小点 = 手動で上書き済み;— = 未宣言。どのセルもクリックで変更できます。", "新建一个自定义提供商(同时创建它的第一个账号)": "新しいカスタムプロバイダーを作成(同時に最初のアカウントも作成)", "映射、思考等级、上下文窗口与工具调用能力在桌面端「模型管理」里改;手机端只做启停。": "マッピング、推論レベル、コンテキストウィンドウ、ツール呼び出し能力はデスクトップの「モデル管理」で変更します。モバイルでは有効/無効の切り替えのみです。", "映射「{alias} → {target}」不存在": "マッピング「{alias} → {target}」が存在しません", "映射上未绑定思考等级,「跟随映射」等于这次不注入": "マッピングに思考レベルがバインドされていないため、「マッピングに従う」は今回は注入なしになります", "映射已关闭": "マッピングはオフです", "映射已关闭,点击启用": "マッピングはオフです。クリックで有効化", "映射已删除": "マッピングを削除しました", "映射已启用": "マッピングはオンです", "映射已启用,其他同名绑定已自动关闭": "マッピングを有効にしました。同名の他のバインドは自動的に無効になりました。", "映射已启用,点击关闭": "マッピングはオンです。クリックでオフ", "映射已绑定思考等级 {level},可用时会优先覆盖本次指定的等级": "このマッピングには思考レベル {level} が設定されており、対応している場合は今回指定したレベルより優先されます", "暂无模型(请先添加账号)": "モデルがありません(先にアカウントを追加してください)", "更新日期": "更新日", "最多可添加 {n} 条压缩规则": "圧縮ルールは最大 {n} 件まで追加できます。", "最大输出 Token": "最大出力 Token", "有映射": "マッピングあり", "未填写": "未入力", "未填写(下游按未声明处理)": "未入力(ダウンストリームでは未宣言として処理)", "未声明": "未宣言", "未挂载映射:已删除 {removed} 条,失败 {failed} 条。首个失败:{error}": "未接続のマッピング:{removed} 件を削除、{failed} 件は失敗しました。最初のエラー:{error}", "未挂载的模型映射": "未接続のモデルマッピング", "未接入": "未接続", "未添加": "未追加", "未知": "不明", "本机网关没有返回结论": "ローカルゲートウェイが結論を返しませんでした", "本次没有取到新内容": "今回は新しい内容を取得できませんでした", "本次测试的发送口径": "今回のテストの送信仕様", "来源": "ソース", "来源未知": "ソース不明", "来源模型": "元のモデル", "来源模型和压缩模型不能相同": "元のモデルと圧縮用モデルには異なるモデルを指定してください。", "来自上游目录接口,清单拉取于 {at};刷新失败时保留上一份成功结果": "アップストリームのディレクトリ API 由来、カタログの取得日時は {at};更新に失敗した場合は前回成功した結果を保持します", "来自上游目录接口;刷新失败时保留上一份成功结果": "アップストリームのディレクトリ API 由来;更新に失敗した場合は前回成功した結果を保持します", "桥接调用返回空(本机网关没有响应这次测试)": "ブリッジ呼び出しが空を返しました(ローカルゲートウェイがこのテストに応答しませんでした)", "模型 ID「{id}」在该提供商已有启用绑定,请先关闭它再添加": "このプロバイダーにはモデル ID「{id}」の有効なバインドがあります。無効にしてから追加してください。", "模型 ID「{id}」已存在,请使用已有模型": "モデル ID「{id}」は既に存在します。既存のモデルを使用してください。", "模型 ID「{id}」已绑定到此上游模型,请直接使用已有绑定": "モデル ID「{id}」はこのアップストリームモデルに既にバインドされています。既存のバインドを使用してください。", "模型「{name}」已存在(忽略大小写判重)": "モデル「{name}」はすでに存在します(大文字小文字を無視して重複判定)", "模型已移除": "モデルを削除しました", "模型数": "モデル数", "模型映射": "モデルマッピング", "模型来源": "モデルのソース", "模型清单为空:已有可用账号,请点「获取模型」拉取目录": "モデルカタログが空です。利用可能なアカウントはあります。「モデルを取得」をクリックしてカタログを取得してください。", "模型清单已刷新": "モデルカタログを更新しました", "模型目录刷新不可用,请重新打开面板": "モデルカタログの更新を利用できません。パネルを開き直してください。", "模型目录刷新结果": "モデルカタログの更新結果", "模型管理表": "モデル管理テーブル", "模型能力": "モデル能力", "模型获取失败": "モデルの取得に失敗", "正在刷新…": "更新中…", "正在测 ": "テスト中 ", "正在获取…": "取得中…", "正在读取压缩路由…": "圧縮ルーティングを読み込み中…", "每条映射 = 对外名 → 上游模型;原始 ID 与别名有独立开关,默认绑定永远存在(没有映射时是合成的那条)。": "各マッピング = 外部公開名 → アップストリームモデル;元の ID とエイリアスにはそれぞれ独立したスイッチがあり、デフォルトバインディングは常に存在します(マッピングがない場合は合成された 1 件です)。", "没有匹配「{keyword}」的模型": "「{keyword}」に一致するモデルはありません", "没有匹配当前筛选的模型": "現在の絞り込みに一致するモデルはありません", "没有匹配的模型": "一致するモデルがありません", "没有可选的对话模型,请先启用模型和对应账号。": "選択できる会話モデルがありません。まずモデルと対応するアカウントを有効にしてください。", "没有选中任何模型": "モデルが 1 つも選択されていません", "没有选中的模型": "選択されたモデルがありません", "流式请求": "ストリーミングリクエスト", "流式请求的说明": "ストリーミングリクエストの説明", "测试": "テスト", "测试未通过": "テストに失敗しました", "测试模型": "モデルをテスト", "测试结果": "テスト結果", "测试节点": "テストノード", "测试节点的说明": "テストノードの説明", "测试账号": "テストアカウント", "测试账号的说明": "テストアカウントの説明", "添加模型映射": "モデルマッピングを追加", "添加自定义模型": "カスタムモデルを追加", "清空": "クリア", "清除覆盖,回到上游声明值": "上書きを解除してアップストリームの宣言値に戻す", "清除这一项(回到未声明)": "この項目をクリア(未宣言に戻す)", "清除(不覆盖)": "クリア(上書きしない)", "点击复制:{name}": "クリックでコピー:{name}", "点右侧「获取模型」从上游拉取这家的模型清单": "右側の「モデルを取得」をクリックして、このプロバイダーのモデルカタログをアップストリームから取得します", "用哪个账号去拉这家的模型清单": "このプロバイダーのモデルカタログを取得するアカウント", "用户提示词": "ユーザープロンプト", "用户登记的自定义模型;整份清单只属于这一家": "ユーザーが登録したカスタムモデル。リスト全体がこのプロバイダー専用です", "用时 {time}": "所要時間 {time}", "用时 {time} · 首字 {ttfb}": "所要時間 {time} · 初回トークン {ttfb}", "留空则不携带;设置页的提示词模式照常生效": "空欄の場合は送信しません;設定ページのプロンプトモードは通常どおり有効です", "留空用默认问候「你好」": "空欄の場合はデフォルトの挨拶「你好」を使用", "的模型合集:每家的清单互相独立,别名也只在自己那家内生效;要改名称 / 协议 / Base URL,到账号页该家账号的「设置」→ 提供商一栏。": " のモデル集合です:各社のリストは互いに独立し、別名も自社内でのみ有効。名称 / プロトコル / Base URL の変更はアカウントページの該当アカウント「設定」→ プロバイダー欄で行います。", "目录模块未就绪": "ディレクトリモジュールが準備できていません", "目标使用自身的思考设置或默认值,仍受网关 Key 权限限制;不可用时明确报错,不自动退回原模型。": "転送先独自の思考設定または既定値を使用し、ゲートウェイキーの権限制限も適用されます。利用できない場合はエラーを返し、元のモデルへ自動で戻しません。", "目标已下线": "対象は提供終了", "直接移除": "直接削除", "直连(不使用代理)": "直接接続(プロキシなし)", "看的能力声明(": "に見せる能力宣言です(", "真实链路 · 消耗少量额度 · 日志带「测试」标记,不计报表": "実際の経路 · クォータを少量消費 · ログに「テスト」マークが付き、レポートには計上されません", "确定删除映射「{alias} → {target}」?": "マッピング「{alias} → {target}」を削除してもよろしいですか?", "确定删除映射「{alias} → {target}」?它指向的上游模型已不在清单里。": "マッピング「{alias} → {target}」を削除しますか? 参照先の上流モデルはカタログに存在しません。", "确定删除映射「{alias} → {target}」?它指向的上游模型已不在清单里。": "マッピング「{alias} → {target}」を削除しますか? 参照先の上流モデルはカタログに存在しません。", "确定删除此区域列出的全部 {n} 条未挂载映射?此操作不可撤销,不会删除正常挂载的映射或模型。": "この領域に表示されている未接続のマッピング {n} 件をすべて削除しますか?この操作は取り消せません。正常に接続されているマッピングやモデルは削除されません。", "确定删除选中的 {count} 个模型登记?删除后 /v1/models 不再广告它们、请求也会被拒。": "選択した {count} 件のモデル登録を削除してもよろしいですか?削除後は /v1/models がそれらを広告しなくなり、リクエストも拒否されます。", "确定移除自定义模型「{id}」?这条登记会被直接移除,之后 /v1/models 不再广告它、请求它也会被拒。": "カスタムモデル「{id}」を削除してもよろしいですか?この登録は直接削除され、以降 /v1/models はそれを広告しなくなり、リクエストも拒否されます。", "确认桌面端还在运行,再重试一次。": "デスクトップアプリがまだ実行中であることを確認して、もう一度再試行してください。", "确认选择": "選択を確定", "社区参考档位,不代表当前上游通道支持;实际以该通道目录为准。": "コミュニティの参考レベルはこの上流経路の対応を保証しません。実際の経路のカタログを優先します。", "社区参考档位:{levels}": "コミュニティの参考レベル:{levels}", "移除": "削除", "移除自定义模型": "カスタムモデルを削除", "系统提示词": "システムプロンプト", "绑定 {requested},按当前通道将发送 {effective}。": "{requested} をバインドしています。この経路では {effective} を送信します。", "绑定在「对外名 → 上游模型」这一条映射上的思考等级(列表照抄 OmniProxy 的手动绑定),选「不覆盖」表示不给这条映射指定等级。它会跟着这条映射注入转发,由承载的那家翻译成自己的档位字段(CatPaw 归并成 low/high/max,Qoder 按模型声明的档位归一)。以下几种情况故意不注入:① off / none(关闭思考)—— 本项目没有安全的表达方式;② 表外的自定义等级(各家能力范围不同,无法判断上游收不收);③ 客户端请求体里已经自己指定了档位(那是更明确的意图,绑定不覆盖);④ 这家上游不认识档位字段(如 WorkBuddy / 小浣熊 / AutoClaw / Cline)。注入与跳过都会写进详细日志。": "「外部公開名 → アップストリームモデル」のこのマッピングにバインドされた思考レベルです(リストは OmniProxy の手動バインディングをそのまま踏襲)。「上書きしない」を選ぶと、このマッピングにレベルを指定しないことを意味します。レベルはこのマッピングに従って転送時に注入され、受け持つプロバイダーが自分のレベルフィールドに変換します(CatPaw は low/high/max に統合し、Qoder はモデルが宣言したレベルに正規化)。次の場合は意図的に注入しません:① off / none(思考オフ)—— 本プロジェクトには安全な表現方法がありません;② 表にないカスタムレベル(プロバイダーごとに対応範囲が異なり、アップストリームが受け取るか判断できません);③ クライアントのリクエストボディですでにレベルが指定されている(そちらの意図がより明確なため、バインディングでは上書きしません);④ このプロバイダーのアップストリームがレベルフィールドを認識しない(WorkBuddy / 小浣熊 / AutoClaw / Cline など)。注入とスキップはどちらも詳細ログに記録されます。", "继承上游": "上流を継承", "继承上游 {value}": "上流を継承 {value}", "继承上游:{value}": "上流を継承:{value}", "网关未返回保存后的提供商记录": "ゲートウェイから保存後のプロバイダーレコードが返されませんでした。", "网关未返回逐家模型目录刷新结果": "ゲートウェイからプロバイダー別のモデルカタログ更新結果が返されませんでした", "能力": "能力", "自定义 · 全部": "カスタム · すべて", "自定义家": "カスタムプロバイダー", "自定义提供商": "カスタムプロバイダー", "自定义提供商的清单": "カスタムプロバイダーのカタログ", "自定义提供商还没有模型:先在左栏选一家,点「添加模型」登记,或「获取上游模型」从上游拉取": "このカスタムプロバイダーにはまだモデルがありません:左の欄でプロバイダーを選び、「モデルを追加」で登録するか、「上流モデルを取得」で取得してください", "自定义模型已移除": "カスタムモデルを削除しました", "自定义等级": "カスタムレベル", "自定义等级…": "カスタムレベル…", "自定义等级(例如 custom-high)": "カスタムレベル(例:custom-high)", "至少选一个测试账号": "テストアカウントを 1 つ以上選択してください", "节点 {proxy}": "ノード {proxy}", "获取": "取得", "获取中…": "取得中…", "获取失败:{message}": "取得に失敗:{message}", "获取模型": "モデルを取得", "获取模型 — {name}": "モデルを取得 — {name}", "规则 {n}": "ルール {n}", "规则不绑定提供商,压缩模型由其路由配置决定使用哪家提供商。": "ルールはプロバイダーに紐づきません。使用するプロバイダーは、圧縮用モデルのルーティング設定で決まります。", "视频": "動画", "视频识别": "動画認識", "设置 / 清除会应用到选中模型的": "設定 / クリアは選択したモデルの", "设置思考等级": "思考レベルを設定", "设置思考等级后,会覆盖下游请求中的等级;选择“不覆盖”则保留下游参数。实际档位以提供商支持范围为准,无法注入时保留原请求并记录原因。off / none 仍不由映射注入。": "思考レベルを設定すると、クライアントのリクエストで指定されたレベルを上書きします。「上書きしない」を選ぶとクライアントのパラメーターを保持します。実際のレベルはプロバイダーの対応範囲に従います。適用できない場合は元のリクエストを保持し、理由をログに記録します。off / none は引き続きマッピングから注入しません。", "设置思考等级(当前未绑定)": "思考レベルを設定(現在未バインド)", "该提供商已不存在(可能已被删除),请刷新列表": "このプロバイダーは存在しません(すでに削除された可能性があります)。リストを更新してください", "该提供商当前没有可选的上游模型": "このプロバイダーには現在選択できるアップストリームモデルがありません", "该提供商没有可用账号(要在账号页启用一个、且凭证完整),一行都发不出去": "このプロバイダーには利用可能なアカウントがありません(アカウントページで 1 つ有効化し、認証情報を揃える必要があります)。1 行も送信できません", "该提供商的清单里没有模型「{name}」": "このプロバイダーのカタログにモデル「{name}」がありません", "该等级无法注入,请选择上游可用档位或清除绑定。": "このレベルは注入できません。上流の対応レベルを選ぶか、バインドを解除してください。", "该行当前未启用:测试照常按本名直发(「先测通、再决定要不要启用」正是这颗按钮的用法),但本行的思考等级绑定不参与本次,生产路由也要等绑定打开后才会放行": "この行は現在未有効です:テストは通常どおり本来の名前でそのまま送信されます(「まず疎通を確認し、それから有効化するか決める」というのがこのボタンの使い方です)が、この行の思考レベルバインディングは今回は適用されず、本番ルーティングもバインディングをオンにするまで通りません", "该账号对这个模型正在限额冷却,等一会儿自己会好;也可以先测别的账号。": "このアカウントはこのモデルに対してレート制限のクールダウン中です。しばらくすれば自然に回復します;先に別のアカウントをテストしてもかまいません。", "说明": "説明", "请先选择一把 API Key": "先に API Key を選択してください", "请填写上游模型 ID": "アップストリームモデル ID を入力してください", "请填写对外映射名": "外部公開マッピング名を入力してください", "请填写模型 ID": "モデル ID を入力してください", "请填写自定义思考等级,或改选候选档 / 「清除」": "カスタム思考レベルを入力するか、候補レベル / 「クリア」を選び直してください", "请完整选择来源模型和压缩模型": "元のモデルと圧縮用モデルの両方を選択してください。", "请选择受支持的客户端": "対応するクライアントを選択してください。", "请选择提供商": "プロバイダーを選択してください", "读取模型清单失败:{message}": "モデルカタログの読み取りに失敗:{message}", "账号 ": "アカウント ", "跟随映射(当前 {level})": "マッピングに従う(現在 {level})", "跟随映射(未绑定等级)": "マッピングに従う(レベル未バインド)", "跟随映射(该行未启用,本次不注入)": "マッピングに従う(この行は未有効のため、今回は注入しません)", "跟随账号配置": "アカウント設定に従う", "跳过": "スキップ", "转发到上游模型": "アップストリームモデルへ転送", "还没有可刷新的提供商:先在账号页添加一个账号": "更新できるプロバイダーがありません:先にアカウントページでアカウントを追加してください", "还没有自定义提供商": "カスタムプロバイダーはまだありません", "这一行已不在当前清单里(模型被移除、或目录刷新后上游不再提供它)。关闭后刷新列表再试。": "この行は現在のカタログに存在しません(モデルが削除されたか、ディレクトリ更新後にアップストリームが提供しなくなったためです)。閉じてからリストを更新して再試行してください。", "这个模型仍在承载它的提供商清单里,但那一家的模型行当前没有出现(例如该家没有可用账号)": "このモデルは提供元プロバイダーのカタログにはまだありますが、そのプロバイダーの行が今は表示されていません(例:利用可能なアカウントがない)。", "这个模型在官方客户端里是否会被展列;不展示的那些默认已关闭(含默认绑定)": "このモデルが公式クライアントに表示されるかどうか。非表示のものは既定で無効化されています(既定バインディングを含む)", "这个模型已经在这家的清单里,不重复导入": "このモデルはすでにこのプロバイダーのカタログにあるため、重複インポートしません", "这个模型的图片能力(图片生成 / 图片编辑)—— 点击修改": "このモデルの画像機能(画像生成 / 画像編集)—— クリックで変更", "这些映射指向的上游模型已不在当前清单里,挂不到任何模型行上:它们不会出现在 /v1/models,用对应别名发请求也会失败。删除后该对外名即可重新使用。": "これらのマッピングが指す上流モデルは現在のカタログに存在しないため、どのモデル行にも紐付きません。「/v1/models」には表示されず、対応するエイリアスでのリクエストも失敗します。削除すると、その公開名を再利用できるようになります。", "这些映射指向的上游模型已不在当前清单里,用对应别名发请求会失败。可以在这里删除,删掉后该对外名即可重新使用。": "これらのマッピングが指す上流モデルは現在のカタログにありません。対応するエイリアスでのリクエストは失敗します。ここで削除すると、その公開名を再利用できます。", "这几项是给": "これらの項目は", "这家提供商没有可见性判据(目前只有 Antigravity / Qoder / 小浣熊 / CodeArts 有)": "このプロバイダーには表示状態の判定規則がありません(現在は Antigravity / Qoder / Raccoon / CodeArts のみ)", "这家有可见性判据,但这一条上游没有表态 —— 按可见处理": "このプロバイダーには表示状態の判定規則がありますが、この項目は上流が表明していません — 表示として扱います", "这家没有可用账号(要在账号页启用一个、且凭证完整)": "このプロバイダーには利用可能なアカウントがありません(アカウントページで 1 つ有効化し、認証情報を揃えてください)", "这家用固定模型清单,无可刷新": "このプロバイダーは固定のモデルカタログを使用しているため、更新できません", "这家的模型清单是全局的,不跟账号走": "このプロバイダーのモデルカタログはグローバルで、アカウントには依存しません", "这家的清单是你自己登记的,不填的项下游按未声明处理。": "このプロバイダーのカタログは自分で登録したものです。未入力の項目はダウンストリームでは未宣言として処理されます。", "这家还没有可用账号,刷新会使用默认登录态": "このプロバイダーにはまだ利用可能なアカウントがありません。更新時はデフォルトのログイン状態を使用します", "这家还没有模型:点「添加模型」登记,或「获取上游模型」从上游拉取": "このプロバイダーにはまだモデルがありません:「モデルを追加」で登録するか、「アップストリームモデルを取得」でアップストリームから取得してください", "这是模型自己能配的档位(来自上游目录),只读;要改某一档请到映射弹窗里选。": "これはモデル自身が設定できるレベルです(アップストリームディレクトリ由来)。読み取り専用です;特定のレベルを変更するにはマッピングダイアログで選択してください。", "这条登记(不像内置模型那样只是隐藏),因为它的存在完全由这次登记决定。": "することを意味します(内蔵モデルのように非表示にするだけではありません)。その存在はこの登録だけで決まるためです。", "这里是": "ここは ", "远程": "リモート", "远程目录": "リモートディレクトリ", "远程目录已更新,「来源」列会显示为「远程」": "リモートディレクトリが更新されました。「ソース」列は「リモート」と表示されます", "适用客户端": "対象クライアント", "选一个账号(至少一个)": "アカウントを選択(1 つ以上)", "选中的模型都不是手动登记,无法删除(开关映射才是它们的手段)": "選択したモデルはいずれも手動登録ではないため削除できません(マッピングのオン・オフがこれらの手段です)", "选中的都不是手动登记的模型,删除不可用(上游目录带回来的行由清单决定存在性)": "選択したものはいずれも手動登録されたモデルではないため、削除は使用できません(アップストリームディレクトリから取り込んだ行はカタログが存在を決めます)", "重新获取": "再取得", "重新读取会丢弃当前草稿,确定继续?": "再読み込みすると現在の下書きが破棄されます。続行しますか?", "重试": "再試行", "错误详情": "エラー詳細", "默认": "デフォルト", "默认开,与真实请求一致:可同时验证 SSE 链路与首字延迟。": "デフォルトでオン。実際のリクエストと一致するため、SSE 経路と初回トークンまでの遅延を同時に検証できます。", "默认档位:{level}": "既定レベル:{level}", "默认绑定": "デフォルトバインディング", "({label})": "({label})", "({provider})": "({provider})", "(上游这一次返回了空正文)": "(アップストリームは今回、空の本文を返しました)", "(中间共尝试 {n} 次)": "(途中で計 {n} 回試行)", "(已禁用)": "(無効)", "(已被手动覆盖,弹窗里可恢复继承)": "(手動で上書き済み。ダイアログで継承を復元できます)", "(手动设定)": "(手動設定)", "(由 models.dev 补齐)": "(models.dev による補完)", "(登记后即可用这个名字请求)": "(登録すると、この名前でリクエストできるようになります)", "(续)": "(続き)", "(默认 ": "(デフォルト ", "(默认绑定与别名 chips);「清除」= 不给这些映射指定等级(选「不覆盖」的口径与映射弹窗一致)": "(デフォルトバインディングとエイリアス chips)に適用されます;「クリア」= これらのマッピングにレベルを指定しない(「上書きしない」を選んだ場合の扱いはマッピングダイアログと一致)", ")": ")", "),下游按它们决定发不发图片、按多大的窗口堆历史。": ")で、ダウンストリームはこれらに基づいて画像を送るかどうか、どのくらいのウィンドウで履歴を積むかを決めます。", "+ 新建自定义提供商": "+ カスタムプロバイダーを作成", "+ 映射": "+ マッピング", "+ 添加压缩规则": "+ 圧縮ルールを追加", "+ 添加模型": "+ モデルを追加", "+等级": "+レベル", ",与远程目录 / 内置清单区分开。删除自定义模型是": "と表示され、リモートディレクトリや内蔵カタログとは区別されます。カスタムモデルの削除はこの登録を", ",已完成 ": "、完了 ", ",跳过 {n} 个": "、{n} 個をスキップ", ",通常就不是账号问题了:先确认这个模型还在上游目录里(「获取模型」刷一次),再看默认绑定指向的上游模型对不对。": "なら、通常はアカウントの問題ではありません:まずこのモデルがまだアップストリームのディレクトリにあるか確認し(「モデルを取得」で 1 回更新)、次にデフォルトバインディングが指すアップストリームモデルが正しいか確認してください。", ":": ":", ":这里的模型不会出现在其他家,别名也只在这一家内生效。改名称 / 协议 / Base URL 在账号页该家账号的「设置」→ 提供商一栏;整家不要了,鼠标移到左栏这家上点 × 删除(连同名下账号)。": ":ここのモデルは他のプロバイダーには表示されず、エイリアスもこのプロバイダー内でのみ有効です。名前 / プロトコル / Base URL の変更は、アカウントページのこのプロバイダーのアカウントの「設定」→ プロバイダー欄で行います;プロバイダーを丸ごと不要にした場合は、左カラムのこのプロバイダーにマウスを合わせて × をクリックして削除します(配下のアカウントも含む)。", ";其中 {keys} 由 models.dev 补齐": ";うち {keys} は models.dev による補完", ";首个失败:{error}": ";最初の失敗:{error}", "{account} · 账号设置": "{account} · アカウント設定", "{account} 参与本路由": "{account} をこのルートに含める", "{account} 尝试失败后切换到此账号": "{account} での試行失敗後、このアカウントに切り替えました", "{available} 可用 · {blocked} 跳过": "利用可能 {available} · スキップ {blocked}", "{clients} 的标题请求": "{clients} のタイトルリクエスト", "{client} 的压缩请求": "{client} のコンテキスト圧縮リクエスト", "{models} 看不了图时": "{models} が画像を読めないとき", "{model} 参与本路由": "{model} をこのルートに含める", "{model} 有独立配置": "{model} には独立した設定があります", "{name} · 提供商路由设置": "{name} · プロバイダールーティング設定", "{name} 已{state}": "{name}:{state}", "{name} 的账号顺序已调整": "{name} のアカウント順を変更", "{n} 个候选": "候補 {n} 件", "{n} 个参与账号": "参加アカウント {n} 件", "{n} 个启用且参与的账号": "有効かつ参加中のアカウント {n} 件", "{n} 个提供商": "{n} プロバイダー", "{n} 个模型限流": "{n} モデルがレート制限中", "{n} 个请求": "リクエスト {n} 件", "{n} 个账号 · {on} 启用 · {off} 禁用": "{n} アカウント · 有効 {on} · 無効 {off}", "{n} 个账号已折叠": "{n} アカウントを折りたたみ中", "{n} 个跳过": "スキップ {n} 件", "{n} 在途": "{n} 件処理中", "{n} 处未保存": "{n} 件未保存", "{n} 已完成": "{n} 件完了", "{n} 条": "{n} 件", "{n} 条活跃绑定": "有効な割り当て {n} 件", "{n} 条请求没有会话标识,未计入会话数量。": "{n} 件のリクエストにはセッション識別子がないため、セッション数に含めていません。", "{n} 条账号路径": "アカウント経路 {n} 本", "{n} 次": "{n} 回", "{n} 项参与": "{n} 件が参加中", "{paths} 条路径 · {sessions} 个会话": "{paths} 経路 · {sessions} セッション", "{providers} 个提供商 / {accounts} 个账号": "{providers} プロバイダー / {accounts} アカウント", "{providers} 个提供商 · {accounts} 个参与账号": "{providers} プロバイダー · {accounts} 参加アカウント", "{provider} 参与本路由": "{provider} をこのルートに含める", "{selected} / {total} 个账号参与": "{selected} / {total} アカウントが参加", "{selected} / {total} 个账号启用": "{selected} / {total} アカウントが有効", "{time} 后恢复": "{time} 後に復旧", "一个路由组最多允许 {n} 个成员": "ルートグループには最大 {n} 個のメンバーを追加できます", "一条历史路径": "過去のパス1件", "上游已响应": "上流から応答済み", "上游请求已发出": "上流リクエストを送信済み", "上游调用": "上流呼び出し", "下一条请求": "次のリクエスト", "下一条请求将走": "次のリクエストの送信先", "不参与": "不参加", "不按余额排序": "残高順に並べ替えない", "不按到期排序": "有効期限で並べ替えない", "与账号页共用全局消耗规则": "アカウントページと全体消費ルールを共有", "与账号页共用:{rules}。积分到期等规则直接影响网关实际选路。": "アカウントページと共有:{rules}。クレジット有効期限などのルールはゲートウェイの実際の経路選択に反映されます。", "为什么没有调用": "呼び出されなかった理由", "为什么选择它": "選択された理由", "为压缩请求指定模型": "圧縮リクエスト用モデルを指定", "五分钟没有往来即释放;客户端会话标识优先,内容哈希兜底。": "5 分間通信がないと解除されます。クライアントのセッション識別子を優先し、なければ内容ハッシュを使用します。", "仅保留最后承载信息,尝试明细未记录": "最後に処理したアカウントの情報のみ保存されています。試行詳細は記録されていません", "仅允许指定提供商": "指定したプロバイダーのみ許可", "仅列出真实目录中的对话模型,不自动更改模型映射。": "実際のカタログにある会話モデルのみ表示します。モデルマッピングは変更しません。", "仅加入的参与": "追加したもののみ参加", "仅勾选的参与": "チェックしたもののみ参加", "仅历史": "履歴のみ", "仅在途": "処理中のみ", "仅展示已发生的请求,不表示当前可选": "記録されたリクエストの表示であり、現在選択可能という意味ではありません", "仅影响此路由的后续请求": "このルートへの以降のリクエストにのみ適用", "仅看选中路径": "選択した経路のみ", "仅筛选右侧账号列表,不改变路由配置。": "右側のアカウント一覧だけを絞り込みます。ルーティング設定は変更しません。", "仍保留配置,账号可继续用于其他路由。": "設定は保持され、アカウントは他のルートで引き続き使用できます。", "仍然保存": "このまま保存", "从上到下就是选路顺序": "上から下が選路順です", "从当前视图移除": "現在のビューから除外", "从现有模型中创建独立配置,自动列出提供它的全部提供商;之后的修改只跟随这个模型。": "既存モデルの個別設定を作成します。対応するすべてのプロバイダーが自動表示され、以降の変更はこのモデルだけに適用されます。", "以下 {n} 个账号原本被全局路由排除。确认后会将它们设为禁用,所有路由都不能再选用;原有独立路由的参与名单保留。": "以下の {n} アカウントは全体ルートから除外されていました。変換すると無効になり、すべてのルートで選択されなくなります。個別ルートの参加リストは保持されます。", "优先使用队首账号,不可用时顺延。": "先頭のアカウントを優先し、利用できなければ次へ進みます。", "优先尝试": "優先して試行", "优先级:{rules};前一项相同才比较后一项。": "優先順位:{rules}。前の条件が同じ場合のみ次の条件を比較します。", "会话": "セッション", "会话最长保持六小时无往来;可以随时在会话粘滞中解除。": "通信がない状態で最大 6 時間保持します。「セッション固定」でいつでも解除できます。", "会话来源": "セッションの取得元", "会话标识": "セッション識別子", "会话标识 {id} · 来源 {source}": "セッション {id} · ソース {source}", "会话标识未记录,不将此请求推断为独立会话。": "セッション識別子が記録されていないため、このリクエストを独立したセッションとは推定しません。", "会话活动": "セッションの活動", "会话粘住": "セッション固定に一致", "会话粘滞": "セッション固定", "会话粘滞 {mode}": "セッション固定 {mode}", "会话粘滞改为{value}": "セッション固定を{value}に変更", "位置 = 顺位": "位置 = 優先順位", "作用范围": "適用範囲", "例如:日常省钱": "例:普段使い・節約", "供继承全局的模型使用": "全体設定を継承するモデルに適用", "保存": "保存", "保存中…": "保存中…", "保存仅影响后续选路,历史快照与在途请求不改写。": "保存は以降の経路選択にのみ反映されます。履歴のスナップショットや処理中のリクエストは変更しません。", "保存全局路由": "全体ルーティングを保存", "保存后仅用于后续请求,不改变历史快照或在途请求。": "保存内容は以降のリクエストにのみ適用され、履歴のスナップショットや処理中のリクエストは変更しません。", "保存后只影响后续请求": "保存後は以降のリクエストにのみ反映", "保存后才会影响真实请求": "保存後に実際のリクエストへ反映されます", "保存响应不完整,请刷新当前配置确认结果": "保存の応答が不完全です。現在の設定を再読み込みして結果を確認してください。", "保存当前配置": "現在の設定を保存", "保存模型路由": "モデルのルーティングを保存", "保存的尝试明细中没有这次调用": "保存された試行詳細にこの呼び出しはありません", "保存空路由": "空のルートを保存", "保存规则": "ルールを保存", "保存路由": "ルートを保存", "保存路由后,在客户端填写此模型 ID。密钥使用你自己的网关 Key。": "保存後、このモデル ID と自分のゲートウェイキーをクライアントに設定してください。", "保护设置由所有模型共用;模型独立配置可覆盖参与范围、顺序、策略与粘滞。": "保護設定は全モデルで共通です。モデル個別設定では参加範囲、順序、戦略、セッション固定を上書きできます。", "修改后影响继承全局的模型": "変更はグローバル設定を継承するモデルに影響します", "修改范围以「编辑范围」为准": "変更の適用先は「編集範囲」に従います", "候选": "候補", "候选 {n}": "候補 {n}", "候选 · {name}": "候補 · {name}", "候选与跳过": "候補とスキップ", "候选与跳过清单各最多保存十二项;这里只回放当时保存的快照,不用当前队列重算。": "候補とスキップは各最大12件まで保存されます。ここでは保存済みスナップショットのみを再生し、現在のキューでは再計算しません。", "候选与跳过清单各最多保存十二项;重试和跨账号切换见尝试明细。": "候補とスキップ一覧はそれぞれ最大 12 件保存されます。再試行やアカウント切り替えは試行詳細をご覧ください。", "候选和跳过清单各最多保存十二项,超出部分不绘制。": "候補とスキップ一覧はそれぞれ最大 12 件保存され、それを超える項目は描画されません。", "候选快照中有此账号,但保存的尝试明细未显示它被调用": "このアカウントは候補のスナップショットにありますが、保存された試行詳細に呼び出しの記録はありません", "候选快照仅保存部分记录,未保存的账号无法回放": "候補のスナップショットは一部のみ保存されています。未保存のアカウントは再生できません", "候选筛选": "候補フィルター", "候选规模": "候補の規模", "候选账号": "候補アカウント", "候选顺序": "候補の順序", "停用后保留卡片与账号,方便随时恢复;不会全局禁用提供商。": "停止してもカードとアカウントは残り、いつでも復元できます。プロバイダー全体は無効化されません。", "停用后保留卡片与账号;自动参与不会重新启用明确停用的提供商。": "停止してもカードとアカウントは保持されます。自動参加で明示的に停止したプロバイダーが再有効化されることはありません。", "停用此提供商": "このプロバイダーを停止", "停用路由提供商": "ルーティングプロバイダーを停止", "允许参与的提供商": "参加を許可するプロバイダー", "先处理凭证、限额或参与范围。": "先に認証情報・上限・対象範囲を確認してください。", "先尝试当前路由内的视觉模型,不可用时再按顺序尝试指定模型;指定模型可跨路由池。": "まず現在のルート内の視覚モデルを試し、利用できない場合は指定モデルを順に試します。指定モデルは別のルーティングプールを利用できます。", "先读图再交回": "先に画像を読み取り、次に戻す:", "全局": "グローバル", "全局保护设置": "全体保護設定", "全局修改影响继承它的模型;独立模型配置不变。": "全体設定の変更は継承するモデルに適用され、個別設定のモデルは変わりません。", "全局修改影响继承的设置;模型已独立设置的项目保持不变。": "全体の変更は継承される設定に反映されます。モデルで個別に設定した項目は変わりません。", "全局参与范围": "全体の参加範囲", "全局顺序与账号页联动,修改即时保存。": "全体順序はアカウントページと連動し、変更は即時保存されます。", "全局默认": "全体の既定設定", "全局默认供继承的模型使用;给某个模型单独配置后,它就不再跟随全局。": "グローバル既定は継承するモデルが使います。モデル固有の設定を作ると、そのモデルはグローバルに従わなくなります。", "全部候选": "すべての候補", "全部模型(窗口内没有请求)": "すべてのモデル(期間内にリクエストなし)", "全部禁用": "全アカウントが無効", "全部移出": "すべて除外", "全部移出本路由": "このルートからすべて除外", "全部自动参与": "すべて自動参加", "全部解除": "すべて解除", "全部请求": "すべてのリクエスト", "全部路径": "すべての経路", "共 {n} 个可添加的模型": "追加できるモデルは {n} 件", "共 {n} 条路由回放": "ルーティング再生 {n} 件", "共尝试 {total} 次,保存了 {saved} 条明细": "試行 {total} 回、保存済み明細 {saved} 件", "关联与在途优先": "選択中・処理中を優先表示", "关联请求路径": "関連リクエスト経路", "关闭": "閉じる", "其他候选": "その他の候補", "其他客户端": "その他のクライアント", "其他账号已完成请求,没有继续调用这个候选": "別のアカウントでリクエストが完了したため、この候補は呼び出されませんでした", "内容哈希": "内容ハッシュ", "内容哈希(推断)": "内容ハッシュ(推定)", "内部重试不会增加账号切换节点。": "内部再試行ではアカウント切り替えのノードは増えません。", "决定后续请求用谁、按什么顺序,以及是否沿用会话账号。": "以降のリクエストで使うアカウント、その順序、セッションのアカウントを継続利用するかを設定します。", "冷却中": "クールダウン中", "切换 {n} 次": "切り替え {n} 回", "切换后,原本不在名单内的可用提供商也会参与转发。明确停用的提供商和排除的账号不会恢复。": "切り替えると、以前の一覧にない利用可能なプロバイダーも転送に参加します。明示的に停止したプロバイダーと除外したアカウントは復元されません。", "切换模型后,右侧只展示该模型的提供商与账号路由。": "モデルを切り替えると、右側にはそのモデルのプロバイダーとアカウントの経路だけが表示されます。", "列表内容": "リストの内容", "创建独立配置": "個別設定を作成", "创建草稿": "下書きを作成", "删除后此入口将不再接受请求。不会删除成员模型、提供商或账号。": "削除すると、この入口はリクエストを受け付けなくなります。メンバーのモデル、プロバイダー、アカウントは削除しません。", "删除后这个模型会重新跟随全局配置,已保存的独立设置和当前未保存修改都会被移除。": "削除するとこのモデルは再びグローバル設定に従います。保存済みの独立設定と未保存の変更は削除されます。", "删除独立路由": "個別ルーティングを削除", "删除独立配置": "独立設定を削除", "删除规则": "ルールを削除", "删除路由组": "ルートグループを削除", "刷新请求记录": "リクエスト履歴を更新", "刷新路由": "ルーティングを更新", "刷新预演": "プレビューを更新", "加入": "追加", "加入路由": "ルートに追加", "历史只读,不影响当前配置": "履歴は読み取り専用で、現在の設定には影響しません", "历史只读,当前配置的修改不会改变这条请求的快照。": "履歴は読み取り専用です。現在の設定を変更しても、このリクエストのスナップショットは変わりません。", "历史快照保留了 {shown} / {total} 个候选明细,其余未记录。": "履歴のスナップショットには {total} 件中 {shown} 件の候補詳細が保存されています。残りは未記録です。", "历史承载账号当前不可用": "履歴の処理アカウントは現在利用できません", "历史日期": "履歴の日付", "历史记录": "履歴", "压缩上下文": "コンテキスト圧縮", "压缩模型": "圧縮用モデル", "原因": "理由", "原始报文在请求详情里,这里只看选路过程。": "生のペイロードはリクエスト詳細にあります。ここでは経路選択のみを表示します。", "原模型": "元のモデル", "去账号页添加": "アカウントページで追加", "参与": "参加", "参与当前视图转发": "現在のビューで転送に参加", "参与方式": "参加方法", "参与方式改为{value}": "参加方法を{value}に変更", "参与本路由": "このルートに参加", "参与范围": "参加範囲", "参与范围与顺序独立保存;策略和粘滞可分别继承全局。": "参加範囲と順序は個別に保存されます。戦略とセッション固定はそれぞれ全体設定を継承できます。", "参与账号": "参加アカウント", "参与路由": "ルーティングに参加", "参与路由的账号": "ルーティングに参加するアカウント", "参与转发": "転送に参加", "参与顺序": "参加順", "发生切换": "アカウント切り替えあり", "取消": "キャンセル", "取消勾选只排除当前范围,不会在账号页全局禁用账号。": "チェックを外すとこの範囲からのみ除外されます。アカウントページで全体的に無効化する操作ではありません。", "取消选中": "選択を解除", "只从当前路由移出,保留模型和账号配置;不会改变其他路由。": "現在のルートからのみ除外し、モデルとアカウントの設定は保持します。他のルートは変更しません。", "只从当前路由视图移除,不删除提供商或账号,也不改变其他模型的独立配置。": "現在のルーティングビューからのみ除外します。プロバイダーやアカウントは削除せず、他のモデルの個別設定も変更しません。", "只修改全局参与范围,不改变账号排序、模型开关或模型独立路由;网关 Key 权限与限流仍然生效。": "全体の参加範囲のみを変更します。アカウント順序、モデルの有効・無効、モデルの個別ルーティングは変更せず、ゲートウェイ Key の権限とレート制限も維持されます。", "只列出当前模型已有启用绑定的提供商;这里只设置路由,不新建模型绑定。": "このモデルの有効な紐付けがあるプロバイダーだけを表示します。ここではルーティングのみを設定し、モデルの紐付けは新規作成しません。", "只影响这个路由成员,不改变账号启用状态,也不影响其他模型。新增账号需要手动加入。": "このメンバーだけに適用します。アカウントの有効状態や他のモデルは変更しません。新しいアカウントは手動で追加してください。", "只改写被识别为标题生成的小请求,普通对话不受影响。": "タイトル生成として認識された小さなリクエストだけを書き換えます。通常の会話には影響しません。", "只有加入的提供商参与,新增提供商需要手动加入。": "追加済みのプロバイダーのみ参加します。新規プロバイダーは手動追加が必要です。", "只有勾选的提供商参与;以后新增的提供商需要在这里勾选。": "チェックしたプロバイダーのみ参加します。今後追加されたプロバイダーはここでチェックしてください。", "只有名单内的提供商可以参与;新增提供商不会自动加入。": "一覧内のプロバイダーのみ参加できます。新しいプロバイダーは自動追加されません。", "只看用过这个模型的客户端与账号。点一条看它当时是怎么选的。": "このモデルを使ったクライアントとアカウントのみ。1件開くと当時の選び方がわかります。", "只看这个客户端经过的模型与账号。点一条看它当时是怎么选的。": "このクライアントが通ったモデルとアカウントのみ。1件開くと当時の選び方がわかります。", "只看这个提供商下参与路由的账号。点一条看它当时是怎么选的。": "このプロバイダーで参加しているアカウントのみ。1件開くと当時の選び方がわかります。", "只看这个账号承接的请求。点一条看完整的选路过程。": "このアカウントが担当したリクエストのみ。1件開くと選路の全過程がわかります。", "只看这条路径上的请求。点一条看完整的选路过程。": "このパス上のリクエストのみ。1件開くと選路の全過程がわかります。", "只移出本路由,账号状态和其他路由不变;保存后此入口将没有可用路由。": "このルートからのみ除外します。アカウント状態と他のルートは変わりません。保存後、この入口には利用可能な経路がなくなります。", "只读预演,不会推进轮转;保存后才会影响真实请求。": "読み取り専用のプレビューです。ローテーションは進みません。保存後に実際のリクエストへ反映されます。", "可以保存空路由,但请求会明确失败,不会回退全局。": "空のルートも保存できますが、リクエストは明示的に失敗し、全体設定へは戻りません。", "可以跨提供商、跨模型多选。同一提供商也可以加入不同模型。": "複数のプロバイダーやモデルを選択できます。同じプロバイダーの異なるモデルも追加できます。", "可用候选": "利用可能な候補", "可用待命": "利用可能・待機中", "可用账号按请求轮换;开启会话粘性时同一会话优先留在原账号。": "利用可能なアカウントをリクエストごとに交代させます。セッション固定が有効な場合、同じセッションでは元のアカウントを優先します。", "右侧面板内容": "右パネルの内容", "同一会话优先保持模型与账号,不可用时才顺延。": "同じセッションではモデルとアカウントを優先して維持し、利用できない場合に次へ進みます。", "同一模型,选择不同提供商": "同じモデルでプロバイダーを選択", "同号重试 {n} 次": "同じアカウントで {n} 回再試行", "同账号内部重试": "同じアカウント内の再試行", "后备账号": "予備アカウント", "后过期": "で期限切れ", "否": "いいえ", "启用": "有効", "启用 {provider} 的账号": "{provider} のアカウントを有効化", "启用全部账号": "すべてのアカウントを有効化", "启用当前列表账号": "この一覧のアカウントを有効化", "启用提供商中的第 {rank} 顺位;当前可用候选第 {effective} 顺位。": "有効なプロバイダー内での優先順位は {rank}。現在利用可能な候補内での優先順位は {effective} です。", "启用提供商中的第 {rank} 顺位;当前没有可用候选账号。": "有効なプロバイダー内での優先順位は {rank}。現在利用可能な候補アカウントはありません。", "启用规则": "ルールを有効化", "启用账号 {account}": "アカウント {account} を有効化", "命中 {n} 次": "一致 {n} 回", "命中下面规则的上下文压缩请求,会改用指定的模型压缩一次;账号仍按新模型自己的路由挑。": "下のルールに一致したコンテキスト圧縮リクエストだけ、指定したモデルで一度圧縮します。アカウントは新しいモデル自身のルートで選ばれます。", "命中会话粘性,沿用原账号完成请求": "セッション固定に一致し、元のアカウントでリクエストを完了しました", "命中会话粘滞": "セッション固定に一致", "命中这条规则的压缩请求会改用「压缩模型」重发一次;改写之后按新模型自己的路由挑账号。": "このルールに一致した圧縮リクエストは「圧縮モデル」で一度送り直します。アカウントは新しいモデル自身のルートで選ばれます。", "命中配置": "適用された設定", "响应到达": "応答到着", "响应到达后": "応答到着後", "响应完成": "応答完了", "回放中": "再生中", "回放保持不变": "再生内容は変更しません", "回放步骤": "再生ステップ", "固定这条请求": "このリクエストを固定", "在工作台查看": "ワークスペースで表示", "在途 + 近期": "処理中 + 最近", "在途 {n} / {limit}": "処理中 {n} / {limit}", "在途时长": "処理中の経過時間", "在途请求 / 并发上限": "処理中リクエスト / 同時実行上限", "备选按顺序尝试;一个都不加时,当前路由内找不到视觉模型就停止并说明原因。": "代替モデルは順に試します。1つも追加していない場合、現在のルートに視覚モデルがなければ理由を添えて停止します。", "复制失败,请手动选择并复制": "コピーできませんでした。手動で選択してコピーしてください。", "复制网关地址": "ゲートウェイ URL をコピー", "失败原因未记录": "失敗の理由は記録されていません", "失败后备选": "失敗時の候補", "失败时直接报错": "失敗時はエラーを返す", "失败时退回原模型": "失敗時は元のモデルに戻す", "失败阈值": "失敗しきい値", "完整详情": "すべての詳細", "完整请求详情": "リクエストの全詳細", "完整过程": "全過程", "实时状态暂未更新,当前显示上次读取的结果:{error}": "リアルタイム状態を更新できませんでした。前回取得した結果を表示しています:{error}", "实际尝试失败": "実際の試行失敗", "实际模型": "実際のモデル", "实际请求路径": "実際のリクエスト経路", "实际账号尝试": "実際のアカウント試行", "客户端已取消请求": "クライアントがリクエストをキャンセルしました", "客户端模型 {client} → 实际模型 {model}": "クライアントモデル {client} → 実際のモデル {model}", "客户端请求": "クライアントのリクエスト", "对外模型 ID": "公開モデル ID", "对外模型 ID 已被占用,请换一个名称": "公開モデル ID は使用済みです。別の名前にしてください。", "对外模型 ID 格式不正确": "公開モデル ID の形式が正しくありません", "将禁用当前所选的 {n} 个账号,所有路由都不能再选用它们。此操作立即保存,不会删除账号。": "選択した {n} アカウントを無効にし、すべてのルートで選択されなくなります。変更は即時保存されます。アカウントは削除しません。", "尚未记录承载账号": "処理するアカウントはまだ記録されていません", "尚未读取到有效的积分到期时间": "有効なクレジット有効期限はまだ取得できていません", "尝试 {n}": "試行 {n}", "尝试 {n} · 最终承载": "試行 {n} · 最終担当", "尝试中": "試行中", "尝试失败": "試行失敗", "尝试明细已截断或未记录,画布只展示保存下来的信息。": "試行詳細は一部省略されているか、記録されていません。キャンバスには保存された情報のみ表示します。", "尝试结果": "試行結果", "尝试记录": "試行履歴", "展开其余 {n} 个候选": "残り {n} 件の候補を表示", "展开完整原因": "理由をすべて表示", "工具服务的视觉模型": "ツールサービスの視覚モデル", "左侧修改的是全局默认,不会影响它。": "左側の変更はグローバル既定に対するもので、このモデルには影響しません。", "已保存": "保存しました", "已保存 {n} 个候选": "候補 {n} 件を保存済み", "已保存明细": "保存された詳細", "已停用": "無効", "已停用提供商 · {n}": "停止中のプロバイダー · {n}", "已关闭": "オフ", "已删除独立配置,改为跟随全局": "独立設定を削除し、グローバル設定に従うようにしました", "已启用": "有効", "已启用模拟条件": "シミュレーション条件が有効", "已固定这条请求,新请求不会打断当前查看": "このリクエストは固定されています。新しいリクエストで表示は切り替わりません", "已完成记录": "完了済み記録", "已完成请求时间范围": "完了済みリクエストの時間範囲", "已尝试": "試行済み", "已尝试 · 失败": "試行済み・失敗", "已用时": "経過時間", "已禁用账号": "無効なアカウント", "已禁用账号 · {n}": "無効なアカウント · {n}", "已解除 {n} 条会话粘滞": "セッション固定を {n} 件解除しました", "已记录 {n} 次尝试": "試行 {n} 回を記録", "已跳过": "スキップ済み", "已转换为账号启停,独立路由参与名单保持不变": "アカウントの有効・無効管理に変換しました。個別ルートの参加リストは変更していません。", "平均耗时": "平均所要時間", "并发已满": "同時実行上限に到達", "序号表示先后,不是提供商之间互相转发": "番号は試行順序を表し、プロバイダー間の転送ではありません", "应用到草稿": "下書きに適用", "开始 {start} · 响应 {response} · 结束 {finish}": "開始 {start} · 応答 {response} · 終了 {finish}", "开始于 +{time}": "開始 +{time}", "开始时间": "開始時刻", "当前全局路由使用固定参与名单,新增提供商不会自动加入。": "全体ルーティングは固定の参加一覧を使用しています。新しいプロバイダーは自動追加されません。", "当前可用队首": "現在利用可能な先頭候補", "当前承载": "現在の処理アカウント", "当前有效顺位以路由预演为准,不改变保存的配置优先级。": "現在の有効な順序はルーティングプレビューに従い、保存済みの設定優先順位は変更しません。", "当前档位不保留跨请求粘滞,因此没有活跃绑定。": "現在のモードではリクエスト間の固定を保持しないため、有効な割り当てはありません。", "当前模型": "現在のモデル", "当前模型使用独立顺序,不受全局自动消耗排序影响。删除独立路由后会重新跟随账号页。": "このモデルは個別順序を使用し、全体の自動消費順序には影響されません。個別ルーティングを削除すると、アカウントページに再び連動します。", "当前模型使用独立顺序,不受全局自动消耗排序影响。恢复继承后会重新跟随账号页。": "このモデルは個別順序を使用し、全体の自動消費順序には影響されません。継承に戻すとアカウントページに再び連動します。", "当前模型没有对应的账号,请先添加账号或检查模型绑定。": "このモデルに対応するアカウントがありません。アカウントを追加するか、モデルの紐付けを確認してください。", "当前模型配置独立保存,不影响全局和其他模型。": "このモデルの設定は個別に保存され、全体設定や他のモデルには影響しません。", "当前没有参与账号,保存后这个范围可能无法承载新请求。": "参加アカウントがありません。保存すると、この範囲で新しいリクエストを処理できなくなる場合があります。", "当前没有可沿用的粘滞绑定": "現在利用できるセッション固定なし", "当前空闲": "現在アイドル", "当前绑定:{account},剩余 {time}": "現在の割り当て:{account}、残り {time}", "当前继承全局。改成模型独立配置后,改动只影响这个模型。": "現在はグローバルを継承しています。モデル固有の設定に切り替えると、このモデルだけに反映されます。", "当前继承全局固定名单;新增提供商需手动添加或在全局配置中改为自动参与。": "全体の固定一覧を継承しています。新しいプロバイダーを手動追加するか、全体設定で自動参加に切り替えてください。", "当前继承全局,修改前先切到独立配置": "グローバルを継承中。編集前に独立設定へ切り替えてください", "当前继承全局,切换到独立配置后只修改本模型。": "現在は全体設定を継承しています。個別設定に切り替えると、このモデルのみ変更できます。", "当前网关尚不支持全局账号启停,请更新网关后重新读取。": "このゲートウェイは全体のアカウント管理に未対応です。更新して再読み込みしてください。", "当前范围内没有请求": "現在の範囲にリクエストはありません", "当前范围的提供商都没有账号,先在账号页添加": "この範囲のプロバイダーにはまだアカウントがありません。アカウントページで追加してください。", "当前视图没有活跃会话粘滞": "現在のビューに有効なセッション固定はありません", "当前视图没有路由回放记录": "現在のビューにルーティング再生記録はありません", "当前视图的请求入口": "現在のビューのリクエスト入口", "当前请求": "処理中リクエスト", "当前路由位置": "現在のルーティング位置", "当前路由内的视觉模型": "現在のルート内の視覚モデル", "当前配置": "現在の設定", "当前配置已排除": "現在の設定で除外", "当时": "リクエスト時", "当时可用,当前请求尚未轮到这个账号": "当時は利用可能でしたが、このリクエストではまだこのアカウントの順番に達していません", "当时可选的账号 · {n}": "当時の選択可能アカウント · {n}", "当时状态": "当時の状態", "当时的候选说明": "当時の候補説明", "当时的成员模型": "リクエスト時のメンバーモデル", "当时的选路原因未记录": "当時のルーティング理由は記録されていません", "当时被候选过滤规则跳过": "当時の候補フィルタールールでスキップされました", "当时配置": "リクエスト時の設定", "当时配置与当前配置": "当時の設定と現在の設定", "影响继承全局的模型": "全体設定を継承するモデルに適用", "怎么选账号": "アカウントの選び方", "思考等级 {value}": "推論レベル {value}", "总耗时": "総所要時間", "总计 {n} tokens": "合計 {n} トークン", "恢复": "復元", "恢复全局继承": "全体設定の継承に戻す", "恢复按账号页面的全局优先级选路,解除全局视图的提供商和账号范围限制。模型独立配置不会改变。": "アカウントページの全体優先順位によるルーティングに戻し、全体ビューのプロバイダーとアカウントの範囲制限を解除します。モデルの個別設定は変わりません。", "恢复提供商": "プロバイダーを復元", "恢复路由提供商": "ルーティングプロバイダーを復元", "恢复阈值": "復帰しきい値", "恢复默认路由": "既定のルーティングに戻す", "成功承载": "正常に処理", "成员内轮询": "メンバー内で順番に使用", "成员模型": "メンバーモデル", "所有可用提供商自动参与,新增账号或插件后无需再加路由;明确停用的保持不变。": "利用可能なプロバイダーはすべて自動参加します。アカウントやプラグインを追加してもルート追加は不要です(明示的に無効化したものは除く)。", "所有可用提供商自动参与,新增账号或插件后无需再添加路由。已停用的提供商和已排除的账号保持不变。": "利用可能なすべてのプロバイダーが自動参加します。アカウントやプラグインの追加後にルーティングを追加する必要はありません。停止したプロバイダーと除外したアカウントは維持されます。", "所有可用提供商都已在当前路由中": "利用可能なすべてのプロバイダーが追加済みです", "所有模型共用": "全モデルで共有", "所有模型共用路由策略与保护设置;全局顺序和消耗规则与账号页联动,模型独立配置可明确覆盖顺序。": "すべてのモデルでルーティング戦略と保護設定を共有します。全体順序と消費ルールはアカウントページと連動し、モデルの個別設定で順序を明示的に上書きできます。", "打开完整请求详情": "リクエストの全詳細を開く", "打开该模型配置": "このモデルの設定を開く", "执行耗时": "実行時間", "执行记录": "実行記録", "执行路径": "実行経路", "执行路径按当时快照保留": "実行経路は当時のスナップショットを保持", "批量禁用账号": "アカウントを一括無効化", "承载账号": "処理アカウント", "把不同提供商、不同模型组合成一个入口。客户端使用对外模型 ID 发起请求。": "異なるプロバイダーやモデルを一つの入口にまとめます。クライアントは公開モデル ID でリクエストします。", "把全局配置复制成这个模型的独立配置": "グローバル設定をこのモデル固有の設定として複製", "拖动卡片改顺位,勾选决定参与;这里的位置就是实际选路顺序。": "カードをドラッグして順位を変更、チェックで参加を決定。ここの並びが実際の選路順です。", "拖动或按 Alt + 方向键调整顺序": "ドラッグまたは Alt + 矢印キーで並べ替え", "拖动把手或按 Alt + 方向键调整顺序,更多操作在右侧菜单。": "ハンドルをドラッグするか Alt + 矢印キーで並べ替えます。その他の操作は右側のメニューにあります。", "拖动把手调整顺序,也可以使用右侧上下按钮。": "ハンドルをドラッグするか、右側の上下ボタンで並べ替えます。", "拖动提供商与账号调整顺序,修改即时保存。": "プロバイダーとアカウントをドラッグして並べ替えます。変更は即時保存されます。", "拖动改顺位、勾选决定参与;这里的位置就是实际选路顺序。": "ドラッグで順位変更、チェックで参加を決定。ここの並びが実際の選路順です。", "拖动调整提供商顺序": "ドラッグでプロバイダーを並べ替え", "拖动调整账号顺序": "ドラッグでアカウントを並べ替え", "按客户端类型聚合": "クライアント種類ごとに集計", "按已保存配置": "保存済み設定に基づく", "按当前草稿预演,不发送请求,不消耗额度。": "現在の下書きをプレビューします。リクエスト送信や利用枠の消費はありません。", "按当前视图的顺序参与选路": "現在のビューの順序でルーティングに参加", "按此范围查看配置": "この範囲の設定を開く", "按步骤回放,不重新发送请求": "リクエストを再送せず、ステップごとに再生します", "按请求开始时的顺位": "リクエスト開始時の順位", "按请求模型选择": "リクエストされたモデルで選択", "按路径聚合,会话在列表中展开,不在画布逐条连线。": "経路ごとに集計します。セッションは一覧で表示し、キャンバスに個別の線は描きません。", "排除": "除外", "提供商与账号": "プロバイダーとアカウント", "提供商保持优先顺序,同一提供商的账号轮流承接。": "プロバイダーの優先順位を維持し、同じプロバイダー内のアカウントで交代します。", "提供商参与": "プロバイダー参加", "提供商参与方式": "プロバイダーの参加方式", "提供商参与方式改为{value}": "プロバイダー参加方式を{value}に変更", "提供商参与范围": "プロバイダーの参加範囲", "提供商未参与": "プロバイダー未参加", "提供商未记录": "プロバイダー未記録", "提供商范围": "プロバイダー範囲", "提供商路由设置": "プロバイダールーティング設定", "搜索会话或账号": "セッションやアカウントを検索", "搜索客户端、模型或账号": "クライアント、モデル、アカウントを検索", "搜索提供商或模型": "プロバイダーやモデルを検索", "搜索提供商或账号": "プロバイダーやアカウントを検索", "搜索本页会话或账号": "このページのセッションやアカウントを検索", "搜索模型": "モデルを検索", "搜索模型、账号或会话来源": "モデル、アカウント、セッション元を検索", "搜索模型或请求 ID": "モデルまたはリクエスト ID を検索", "搜索请求、模型或账号": "リクエスト・モデル・アカウントを検索", "搜索路由配置": "ルーティング設定を検索", "撤销修改": "変更を破棄", "撤销草稿": "下書きを破棄", "收起其他候选": "他の候補を閉じる", "改为独立配置": "独立設定に変更", "改为自动参与": "自動参加に切り替え", "改用": "切り替え先", "放到第 {n} 位": "{n} 番目に移動", "放大画布": "拡大", "整次请求改交": "リクエスト全体を次に委ねる:", "文本对话": "テキスト会話", "新增可用提供商会自动参与;这里只需恢复曾明确停用的提供商。": "新しい利用可能なプロバイダーは自動参加します。ここでは明示的に停止したプロバイダーのみ復元します。", "新增提供商自动参与;移出本路由的不会自动加回。": "新しいプロバイダーは自動参加します。このルートから除外したものは自動で戻りません。", "新增模型": "モデルを追加", "新增模型独立路由": "モデルの個別ルーティングを追加", "新增模型独立配置": "モデル固有設定を追加", "新增路由配置": "ルーティング設定を追加", "新建路由组": "ルートグループを新規作成", "新配置 · 保存后生效": "新しい設定 · 保存後に反映", "无可用账号": "利用可能なアカウントなし", "无有效绑定": "有効な割り当てなし", "时间相对请求开始;历史只读,修改当前配置不会改变这条记录。": "時刻はリクエスト開始からの相対値です。履歴は読み取り専用で、現在の設定を変更してもこの記録は変わりません。", "时间相对请求开始;未记录的旧数据不补算。历史只读,修改当前配置不会改变这条记录。": "時刻はリクエスト開始からの相対値です。記録のない旧データは補算しません。履歴は読み取り専用で、現在の設定を変えてもこの記録は変わりません。", "时间相对请求开始;未记录的旧数据不补算。响应到达不等于流式请求结束。": "時刻はリクエスト開始からの相対値です。未記録の過去データは推測で補完しません。応答到着はストリーミングリクエストの終了を意味しません。", "是": "はい", "显示全部": "すべて表示", "显示其他候选": "その他の候補を表示", "显示无账号 ({n})": "アカウントなしを表示 ({n})", "暂停": "一時停止", "暂无可用账号": "利用可能なアカウントなし", "曾被限流的账号暂时排到队尾,三十分钟后或转发成功后恢复。": "レート制限されたアカウントは一時的に最後尾へ移動し、30 分後または転送成功後に復帰します。", "最早到期的剩余积分包:{time}": "残高があるクレジットパックの最も早い有効期限:{time}", "最终承载": "最終処理アカウント", "最终由 {account} 承接": "最終的に {account} が処理", "最近 {n} 分钟": "直近 {n} 分", "最近 {n} 条": "直近 {n} 件", "最近使用:{time}": "最終使用:{time}", "最近完成": "最近完了", "最近没有命中记录": "最近の該当はありません", "最近请求已完成": "最新リクエストは完了済み", "有在途": "処理中あり", "有未保存修改,预演仍按已保存配置。": "未保存の変更があります。プレビューは保存済み設定に基づきます。", "有未保存的修改": "未保存の変更があります", "未保存完整尝试明细,仅显示请求记录中的承载信息。": "試行の詳細は保存されていません。リクエスト記録の処理アカウント情報のみ表示します。", "未保存草稿": "未保存の下書き", "未切换": "切り替えなし", "未参与": "不参加", "未参与提供商 · {n}": "不参加のプロバイダー · {n}", "未参与提供商默认收起;选中历史路径时仍会显示。": "不参加のプロバイダーは既定で折りたたまれますが、関連する履歴経路を選ぶと表示されます。", "未参与本范围": "この範囲には未参加", "未参与本路由": "このルートには不参加", "未发生切换": "切り替えなし", "未记录上游调用": "上流呼び出し未記録", "未识别客户端": "未識別のクライアント", "未调用": "未呼び出し", "未调用不画请求线;模型限流与当前配置分别展示。": "呼び出しがなければリクエスト線は描きません。モデルのレート制限と現在の設定は別々に表示します。", "未调用的候选": "未呼び出しの候補", "未轮到": "順番が来なかった", "未选择客户端": "クライアント未選択", "未选择模型": "モデル未選択", "未配置模型的默认路由": "未設定モデルの既定経路", "本地网关": "ローカルゲートウェイ", "本次尝试失败": "今回の試行は失敗", "本次执行": "今回の実行", "本次状态": "今回の状態", "本次用时": "試行時間", "本次结果": "リクエストの結果", "本次耗时": "今回の所要時間", "本次请求": "今回のリクエスト", "本次请求已完成": "今回のリクエストは完了済み", "本窗口未调用": "この期間に呼び出しなし", "本轮选路预演": "今回のルーティングプレビュー", "来源未记录": "送信元の記録なし", "查看上游错误": "上流エラーを表示", "查看上游错误摘要": "上流エラーの概要を表示", "查看其他 {n} 个候选": "他の候補 {n} 件を表示", "查看实际请求的选路、尝试与结果": "実際のリクエストのルーティング、試行、結果を表示", "查看当前配置": "現在の設定を表示", "查看最后一次尝试": "最後の試行を表示", "查看详情内容": "表示する詳細を選択", "查看配置": "設定を表示", "查看配置详情": "設定の詳細を表示", "标题生成": "タイトル生成", "标题生成路由入口尚未就绪,请刷新页面后重试": "タイトル生成ルートの入口がまだ準備できていません。ページを再読み込みしてからお試しください。", "检测到旧版全局参与设置,请先确认转换,再管理账号启停。": "旧版の全体参加設定が見つかりました。変換を確認してからアカウントの有効・無効を管理してください。", "模型、网关、提供商与账号的可视化选路": "モデル、ゲートウェイ、プロバイダー、アカウント間の可視化ルーティング", "模型未记录": "モデル未記録", "模型独立路由": "モデル専用ルート", "模型独立配置": "モデル個別設定", "模型看不了图片时,按下面的规则交给视觉模型;没配到的模型、以及本来就能看图的,一律原样放行。": "モデルが画像を読めないときは、下のルールに従って視覚モデルに渡します。ここで設定していないモデルと、もともと画像を読めるモデルはそのまま通します。", "模型绑定不可用": "モデルの紐付けを利用不可", "模型路由": "モデルルーティング", "模拟首选失败": "優先候補の失敗をシミュレーション", "正在处理": "処理中", "正在由 {account} 处理": "{account} で処理中", "正在编辑": "編集中", "正在读取会话绑定…": "セッションの割り当てを読み込み中…", "正在读取当前配置": "現在の設定を読み込み中", "正在读取路由…": "ルーティングを読み込み中…", "正在选路,尚未记录上游尝试": "ルーティング中です。上流への試行はまだ記録されていません", "正在预览 {model}": "{model} をプレビュー中", "此为配置顺位,当前没有可用候选账号。": "これは設定上の優先順位です。現在、利用可能な候補アカウントはありません。", "此入口没有参与路由的提供商,保存后请求将明确失败。": "この入口には参加プロバイダーがありません。保存後、リクエストは明示的に失敗します。", "此入口没有参与路由的账号。保存后请求将明确失败,不会回退全局或自动恢复参与名单。": "この入口には参加アカウントがありません。保存後は明示的に失敗し、全体設定への切り替えや参加リストの自動復元は行いません。", "此刻队列": "現在のキュー", "此提供商当前没有可用的模型绑定,配置已保留;在模型管理中恢复绑定后会自动回来。": "このプロバイダーには現在利用可能なモデルの紐付けがありません。設定は保持され、モデル管理で紐付けを復元すると自動的に戻ります。", "此模型限流": "このモデルはレート制限中", "每轮重新选路,不保留跨请求的账号绑定。": "各ターンで再選択し、リクエスト間のアカウント割り当ては保持しません。", "没有保存其他候选信息": "その他の候補情報は保存されていません", "没有保存调用明细": "呼び出し明細が保存されていません", "没有其他候选账号": "他の候補アカウントはありません", "没有匹配的会话": "一致するセッションはありません", "没有匹配的候选": "一致する候補はありません", "没有匹配的提供商或账号": "一致するプロバイダーやアカウントはありません", "没有匹配的记录": "一致する記録はありません", "没有匹配的请求": "一致するリクエストはありません", "没有匹配的路由配置": "一致するルーティング設定はありません", "没有参与路由的账号": "ルーティングに参加するアカウントはありません", "没有可添加的模型": "追加できるモデルはありません", "没有可用提供商,请先添加账号或安装插件。": "利用可能なプロバイダーがありません。先にアカウントを追加するかプラグインをインストールしてください。", "没有可用模型": "利用可能なモデルがありません", "没有可用账号": "利用可能なアカウントがありません", "没有可选的对话模型,请先启用模型和对应账号。": "選択できる会話モデルがありません。まずモデルと対応するアカウントを有効にしてください。", "没有独立配置的模型沿用全局路由。": "個別設定がないモデルは全体ルーティングを使用します。", "没有请求也能配置路由": "リクエストがなくても設定できます", "没有跳过": "スキップなし", "没有需要恢复的提供商": "復元が必要なプロバイダーはありません", "沿用工具服务的视觉模型": "ツールサービスの視覚モデルを使う", "流动:有请求在途": "流動:処理中のリクエストあり", "消耗规则": "消費ルール", "消耗规则已保存,但路由列表刷新失败:{error}": "消費ルールは保存されましたが、ルーティング一覧を更新できませんでした:{error}", "添加到全局路由,新请求将按这里的顺序选择账号。": "全体ルーティングに追加します。新しいリクエストはここで設定した順序でアカウントを選択します。", "添加到固定参与名单;以后新增的提供商仍需手动加入。": "固定の参加一覧に追加します。今後追加するプロバイダーも手動で一覧に追加する必要があります。", "添加参与模型": "参加モデルを追加", "添加规则": "ルールを追加", "添加路由提供商": "ルーティングプロバイダーを追加", "清空选择": "選択をクリア", "清除会话粘滞": "セッション固定を解除", "灰线:历史流量": "灰色:過去の通信", "点击查看这次尝试的结果与原因": "クリックして今回の試行結果と理由を表示", "点击节点查看请求,点击齿轮编辑路由配置。": "ノードでリクエストを表示し、歯車でルーティング設定を編集します。", "点击节点筛选,点击齿轮进入配置": "ノードをクリックで絞り込み、歯車で設定へ", "点击节点,切换到对应请求详情": "ノードをクリックすると、対応するリクエスト詳細に切り替わります", "点客户端看它用过的模型": "クライアントをクリックで使用モデルを表示", "点模型看它的请求": "モデルをクリックでリクエスト表示", "点节点筛选,再点一次取消;点齿轮进入配置": "ノードをクリックで絞り込み、もう一度クリックで解除。歯車で設定へ", "熔断保护": "サーキットブレーカー", "特殊请求路由": "特殊リクエストルーティング", "特殊请求路由 · 只改写模型,不改选账号规则": "特殊リクエストルーティング · モデルのみ書き換え、アカウント選択のルールは変更しません", "独立": "独立", "独立账号顺序": "個別のアカウント順序", "独立路由": "個別ルーティング", "独立路由的账号顺序不受全局消耗规则影响": "個別ルートのアカウント順序は全体の消費ルールの影響を受けません", "独立配置": "個別設定", "画布位置不改变选路优先级": "キャンバス上の位置はルーティングの優先順位を変えません", "真实请求还会考虑当时的会话绑定、并发与限额状态。": "実際のリクエストでは、その時点のセッション固定、同時接続数、利用制限も考慮します。", "确定删除「{model}」的独立路由配置?删除后该模型将使用全局路由。不会删除模型、账号或请求记录。": "「{model}」の個別ルーティング設定を削除しますか?削除後、このモデルは全体ルーティングを使用します。モデル、アカウント、リクエスト記録は削除しません。", "确认转换": "変換を確認", "禁用全部账号": "すべてのアカウントを無効化", "禁用当前列表账号": "この一覧のアカウントを無効化", "禁用账号": "アカウントを無効化", "积分到期:暂无数据": "クレジット期限:データなし", "积分:{time}": "クレジット:{time}", "移出": "削除", "移出本路由": "このルートから除外", "移除此模型的独立路由配置,之后重新继承全局路由。不会删除模型、账号或请求记录。": "このモデルの個別ルーティング設定を削除し、全体設定の継承に戻します。モデル、アカウント、リクエスト記録は削除しません。", "移除路由提供商": "ルーティングプロバイダーを除外", "窗口内无请求": "期間内にリクエストなし", "第 {n} 位": "{n} 番目", "第 {n} 次尝试 · {name}": "試行 {n} 回目 · {name}", "第 {n} 顺位": "優先順位 {n}", "等待回放": "再生待ち", "等待首帧": "最初のバイトを待機", "策略": "戦略", "筛选模型": "モデルで絞り込み", "粘性命中": "固定に一致", "粘性:{mode}": "固定:{mode}", "粘滞": "固定", "粘滞 {mode}": "固定 {mode}", "粘滞命中": "固定に一致", "粘滞标记": "固定マーカー", "组名": "グループ名", "组名方便识别,对外模型 ID 给客户端使用。": "グループ名は識別用です。クライアントは公開モデル ID を使用します。", "经过 {n} 次切换后成功,最终承载:{account}": "{n} 回の切り替え後に成功しました。最終処理アカウント:{account}", "绑定:{account}": "割り当て:{account}", "结束时间": "終了時刻", "结果未记录": "結果未記録", "统一路由设置": "共通ルーティング設定", "统一路由设置已保存": "共通ルーティング設定を保存しました", "继承": "継承", "继承全局": "全体設定を継承", "继承全局配置": "グローバル設定を継承", "继承全局:{value}": "全体設定を継承:{value}", "继承时不能改这里的值;切到独立配置后才会写入这个模型。": "継承中は値を変更できません。独立設定に切り替えるとこのモデルに保存されます。", "编辑全局默认": "全体の既定設定を編集", "编辑范围": "編集範囲", "编辑规则": "ルールを編集", "编辑路由组": "ルートグループを編集", "缩小画布": "縮小", "网关继续尝试下一个账号": "ゲートウェイが次のアカウントを試行", "耗时未记录": "所要時間未記録", "自动参与": "自動参加", "自动参与模式下将明确停用此提供商,之后新增账号也不会自动恢复;不会删除提供商或账号。": "自動参加モードでこのプロバイダーを明示的に停止します。後からアカウントを追加しても自動復元されません。プロバイダーやアカウントは削除しません。", "自动参与(推荐)": "自動参加(推奨)", "自动消耗排序已启用,请先关闭规则再手动调整": "自動消費順序が有効です。手動で並べ替えるには先にルールをオフにしてください", "自动:空闲五分钟释放;会话内:空闲六小时释放;每轮或关闭:不保留跨请求绑定。": "自動:5 分間アイドルで解除。セッション内:6 時間アイドルで解除。毎ターンまたはオフ:リクエスト間の固定なし。", "自动:空闲五分钟释放;会话内:空闲六小时;每轮或关闭:不跨请求绑定。": "自動:5分間アイドルで解放、セッション内:6時間アイドルまで、毎ターンまたはオフ:リクエスト間の紐付けなし。", "自定义路由组": "カスタムルートグループ", "草稿预演": "下書きのプレビュー", "被跳过": "スキップ", "被跳过的账号": "スキップされたアカウント", "规则": "ルール", "规则全局生效,不受原路由池限制;指定模型按自己的路由选账号,网关 Key 权限仍然生效。": "ルールは全体に適用され、元のルーティングプールには制限されません。指定したモデル自身のルーティングでアカウントを選び、ゲートウェイキーの権限は引き続き適用されます。", "规则最多 {n} 条。": "ルールは最大 {n} 件です。", "视频输入": "動画入力", "解除": "解除", "解除全局路由的参与范围限制,继续使用与账号页共用的手动顺序和自动消耗规则;模型独立配置保持不变。": "全体ルーティングの参加範囲制限を解除し、アカウントページと共有する手動順序と自動消費ルールは維持します。モデルの個別設定は変更しません。", "解除全部粘滞": "すべての固定を解除", "解除只清除网关的账号绑定,不删除聊天历史、不关闭粘性设置。后续成功请求仍可建立新的绑定;重启网关会清空这些进程本地记录。": "解除はゲートウェイのアカウント割り当てのみを消去します。チャット履歴や固定設定は残ります。以降の成功リクエストで新しい割り当てを作成でき、ゲートウェイの再起動でこのプロセス内の記録は消去されます。", "解除当前模型全部粘滞": "このモデルの固定をすべて解除", "解除所有模型的全部会话粘滞。不会终止在途请求,之后的请求会重新选路。": "すべてのモデルのセッション固定を解除します。処理中のリクエストは終了せず、以降のリクエストは再選択されます。", "解除这个模型的全部会话粘滞。不会终止在途请求,之后的请求会重新选路。": "このモデルのセッション固定をすべて解除します。処理中のリクエストは終了せず、以降のリクエストは再選択されます。", "解除这条会话": "このセッションを解除", "触发客户端": "トリガー元のクライアント", "计算中…": "計算中…", "记录所有经过网关的请求,不要求绑定客户端。": "クライアントの紐付けを必要とせず、ゲートウェイを通るすべてのリクエストを記録します。", "记录时间": "記録時刻", "设置参与范围": "参加範囲を設定", "识别客户端": "識別するクライアント", "该提供商在当前视图中已停用": "このプロバイダーは現在のビューで停止中です", "该提供商没有账号,请先到账号页添加。": "このプロバイダーにアカウントはありません。先にアカウントページで追加してください。", "请填写组名和对外模型 ID": "グループ名と公開モデル ID を入力してください", "请检查熔断参数:失败阈值 1~20,时长 10~600 秒,恢复阈值 1~10。": "サーキットブレーカーの設定を確認してください。失敗しきい値は 1~20、期間は 10~600 秒、復帰しきい値は 1~10 です。", "请求": "リクエスト", "请求 ID 未记录": "リクエスト ID 未記録", "请求仍在处理中,当前阶段:{phase}": "リクエストは処理中です。現在の段階:{phase}", "请求仍在进行": "リクエスト処理中", "请求会去哪里": "リクエストの送信先", "请求回放": "リクエスト再生", "请求在途": "リクエスト処理中", "请求完成不代表会话关闭;粘滞有效期不是在线状态。": "リクエスト完了はセッション終了を意味しません。固定の有効期限はオンライン状態ではありません。", "请求已取消": "リクエストはキャンセルされました", "请求当时的配置": "リクエスト時の設定", "请求成功完成,未发生账号切换": "アカウントを切り替えずにリクエストが正常に完了しました", "请求成功完成,未记录承载账号": "リクエストは成功しましたが、処理したアカウントは記録されていません", "请求执行": "リクエスト実行", "请求执行回放": "リクエスト実行の再生", "请求日志 →": "リクエストログ →", "请求未成功完成": "リクエストは正常に完了しませんでした", "请求模型": "リクエストモデル", "请求活动范围": "リクエストの活動範囲", "请求状态": "リクエスト状態", "请求结论": "リクエストの結論", "请求范围": "リクエスト範囲", "请求记录数据库不可用": "リクエスト記録データベースを利用できません", "请求跟踪": "リクエスト追跡", "请求跟踪内容": "リクエスト追跡の表示内容", "请求进入": "リクエスト受信", "请求进入网关": "リクエストがゲートウェイに到達", "请求需要": "リクエストの要件", "请选择模型": "モデルを選択してください", "读取中…": "読み込み中…", "谁参与及先后顺序": "参加するアカウントと優先順位", "调整全局消耗规则": "全体消費ルールを変更", "调整到期时间、可用余额及其他消耗规则的优先级": "有効期限、利用可能残高、その他の消費ルールの優先順位を変更", "调整后续请求的配置": "以降のリクエストを設定", "调整模型顺序": "モデルを並べ替え", "调整积分到期远近及其他消耗规则": "クレジットの有効期限順やその他の消費ルールを変更", "调用示例": "呼び出し例", "账号 {name} 已{state}": "アカウント {name}:{state}", "账号全部禁用": "全アカウント無効", "账号启停与账号页同步,立即影响所有路由;策略与排序需保存。": "アカウントの有効・無効はアカウントページと同期し、全ルートに即時反映されます。戦略と順序は保存が必要です。", "账号启停与默认规则": "アカウントの有効・無効と既定ルール", "账号启停操作": "アカウントの有効・無効操作", "账号启停立即生效;路由配置保存后生效": "アカウント状態は即時反映、ルーティング設定は保存後に反映", "账号启停部分完成:成功 {ok} 个,失败 {fail} 个,跳过 {skip} 个。{details}": "アカウント状態の更新は一部完了しました。成功 {ok}、失敗 {fail}、スキップ {skip}。{details}", "账号尝试": "アカウント試行", "账号已禁用": "アカウントは無効です", "账号已移除": "アカウントは削除済みです", "账号操作": "アカウント操作", "账号未记录": "アカウント未記録", "账号组": "アカウントグループ", "账号组操作": "アカウントグループの操作", "账号设置与全局保护另行保存,不属于本页路由草稿。": "アカウント設定と全体保護は別途保存され、このルーティングの下書きには含まれません。", "账号设置与所有路由共用,不改变当前路由的参与名单。": "アカウント設定はすべてのルートで共有されます。現在のルートの参加リストは変更しません。", "账号路由设置": "アカウントのルーティング設定", "起点是请求本身,不依赖客户端绑定。": "リクエスト自体を起点とし、クライアントの紐付けには依存しません。", "跟随列表中的最新请求": "一覧の最新リクエストに追従中", "跨模型组合": "複数モデルの組み合わせ", "路径": "パス", "路径过多,画布仅展示前 300 条;统计覆盖完整窗口,请筛选模型缩小范围。": "経路が多いため最初の 300 本のみ表示します。統計は期間全体を対象とします。モデルで絞り込んでください。", "路由入口": "ルート入口", "路由参与操作": "ルート参加の操作", "路由工作台": "ルーティングワークスペース", "路由工作台不可用": "ルーティングワークスペースを利用できません", "路由快照未记录": "ルーティングのスナップショット未記録", "路由成员操作": "ルートメンバーの操作", "路由接口不可用,请确认网关与界面已更新": "ルーティング API を利用できません。ゲートウェイと画面が更新済みか確認してください。", "路由接口返回了不完整的数据": "ルーティング API が不完全なデータを返しました", "路由数据正在更新,请稍后重试": "ルーティングデータを更新中です。しばらくしてから再試行してください。", "路由模式": "ルーティングモード", "路由画布": "ルーティングキャンバス", "路由策略改为{value}": "ルーティングポリシーを{value}に変更", "路由类型": "ルートの種類", "路由组": "ルートグループ", "路由组已删除": "ルーティンググループは削除済み", "路由视图": "ルーティング表示", "路由设置": "ルーティング設定", "路由配置": "ルーティング設定", "路由配置列表": "ルーティング設定一覧", "路由配置尚未读取": "ルーティング設定はまだ読み込まれていません", "路由配置已保存": "ルーティング設定を保存しました", "路由配置已保存,仅影响后续选路": "ルーティング設定を保存しました。以降の経路選択にのみ反映されます", "路由配置操作": "ルーティング設定の操作", "路由配置版本不可用,请更新网关后重试": "設定バージョンを取得できません。ゲートウェイを更新して再試行してください。", "跳过候选": "スキップした候補", "转发前就失败、或旧记录未落库时,只能看到请求本身与配置快照。": "転送前に失敗した場合や旧レコードが未保存の場合は、リクエスト本体と設定スナップショットのみ表示します。", "转发失败的账号暂时休息,避免连续请求反复撞到同一故障。": "転送に失敗したアカウントを一時的に休止し、同じ障害への連続リクエストを避けます。", "转换只处理当前账号;之后新增账号按账号页的启用状态使用。不会启用任何已禁用的账号。": "変換対象は既存のアカウントのみです。新しいアカウントはアカウントページの状態に従います。無効なアカウントが有効になることはありません。", "转换旧版全局参与设置": "旧版の全体参加設定を変換", "转换旧版设置": "旧版の設定を変換", "转换结果未确认,请重新读取全局配置": "変換結果を確認できません。全体設定を再読み込みしてください。", "输出 {n} tokens": "出力 {n} tokens", "过程提示": "過程の補足", "运行视图": "稼働ビュー", "近期 {n} 次请求": "最近のリクエスト {n} 件", "返回全部流向": "すべての流れに戻る", "返回列表": "一覧に戻る", "返回实时": "リアルタイムに戻る", "返回画布": "キャンバスに戻る", "还有 {n} 处": "他 {n} 件", "还没有参与模型": "参加モデルはまだありません", "还没有参与路由的提供商": "ルーティングに参加するプロバイダーはまだありません", "还没有可用模型,先在账号页添加账号": "利用可能なモデルがまだありません。先にアカウントページでアカウントを追加してください。", "还没有可用的模型,请先启用模型和对应账号。": "利用できるモデルがありません。先にモデルと対応アカウントを有効にしてください。", "还没有规则。压缩请求会按原模型照常转发。": "ルールはまだありません。圧縮リクエストは元のモデルのまま転送されます。", "还没有规则。图片会照常交给原模型,看不了的就会报错。": "ルールはまだありません。画像は元のモデルにそのまま渡され、読めない場合はエラーになります。", "还没有规则。标题请求会照常交给原模型。": "ルールはまだありません。タイトルリクエストは元のモデルにそのまま渡されます。", "还没有账号,先在账号页添加;有账号的提供商才会出现在这里": "アカウントがまだありません。アカウントページで追加してください。アカウントのあるプロバイダーだけがここに表示されます。", "还没选压缩模型": "圧縮モデルが未選択", "还没选原模型": "元モデルが未選択", "还没选标题模型": "タイトルモデルが未選択", "还没选视觉模型": "視覚モデルが未選択", "这一页改的只作用于当前范围": "このページの変更はこの範囲にのみ作用します", "这个范围内最近的请求。点一条看它当时是怎么选的账号。": "この範囲の最近のリクエスト。1件開くと当時のアカウント選択がわかります。", "这个范围怎么选账号": "この範囲のアカウント選択", "这些设置由所有模型共用;提供商与账号的参与范围和顺序在各自视图中独立配置。": "これらの設定はすべてのモデルで共通です。プロバイダーとアカウントの参加範囲や順序は各ビューで個別設定します。", "这份记录来自实际请求,不使用当前账号队列重新推演。": "この記録は実際のリクエストに基づいており、現在のアカウントキューによる再シミュレーションではありません。", "这是请求当时保存的选路快照,修改当前路由不会改变这份记录。": "リクエスト時に保存されたルーティングのスナップショットです。現在の経路を変更しても記録は変わりません。", "这条会话已解除或过期,不再有活跃绑定。": "このセッションは解除済みまたは期限切れで、有効な割り当てはありません。", "这条规则只改写被识别为标题生成的小请求,普通对话不受影响。": "このルールはタイトル生成と判定された小さなリクエストだけを書き換えます。通常の会話には影響しません。", "这条规则里的模型收到图片时按选定的方式处理;没被任何规则选中的模型一律原样放行。": "このルールのモデルに画像が届いたときは選んだ方法で処理します。どのルールにも選ばれていないモデルはそのまま通します。", "这条请求使用的路由组已删除,当时的快照仍可查看": "このリクエストで使用したルーティンググループは削除されていますが、当時のスナップショットは閲覧できます", "这条请求对应的会话当前仍绑定到「{account}」。": "このリクエストのセッションは現在「{account}」に割り当てられています。", "这条请求没有保存上游尝试明细": "このリクエストの上流試行詳細は保存されていません", "这条请求没有保存路由决策": "このリクエストのルーティング判断は保存されていません", "这条请求没有保存路由快照,仍可查看已有的请求和尝试信息。": "このリクエストのルーティングスナップショットは保存されていませんが、既存のリクエスト情報と試行情報は表示できます。", "这次尝试的结果": "今回の試行結果", "这里只决定是否参与本路由,不改变账号启用状态。": "このルートへの参加だけを設定します。アカウントの有効状態は変更しません。", "这里的参与范围只影响当前视图;账号启停、并发和限制器属于账号本身,所有模型共用。": "ここでの参加範囲は現在のビューだけに影響します。アカウントの有効・無効、同時実行、リミッターは全モデル共通のアカウント設定です。", "这里的顺序决定实际选路;画布只为查看请求调整位置。": "この順序が実際のルーティングに使われます。キャンバス上の位置はリクエストを見やすくするためだけに変わります。", "这里调整的是账号组的全局消耗规则;当前独立路由的账号顺序保持不变。": "ここではアカウントグループの全体消費ルールを変更します。現在の個別ルートのアカウント順序は変わりません。", "连线表示参与本路由": "接続線はこのルートへの参加を示します", "连线表示账号组中有已启用账号": "接続線は有効なアカウントを含むグループを示します", "连续失败达到阈值时暂时让位,恢复后再重新参与。": "連続失敗がしきい値に達すると一時的に退き、回復後に再参加します。", "退避 {time}": "待機 {time}", "选中": "選択済み", "选中流量详情": "選択した通信の詳細", "选中路径": "選択した経路", "选择一个或多个客户端": "クライアントを1つ以上選択", "选择一条请求查看执行过程": "リクエストを選択して実行過程を表示", "选择一条请求查看选路过程": "リクエストを選択してルーティング過程を表示", "选择作用范围后配置路由": "適用範囲を選択してルーティングを設定", "选择左侧请求查看选路过程": "左のリクエストを選択すると選路過程を表示します", "选择模型": "モデルを選択", "选择请求模型后查看具体限流状态": "リクエストモデルを選択して具体的なレート制限を確認", "选择账号": "アカウントを選択", "选择路由入口": "ルート入口を選択", "选择预览模型后查看队列": "プレビューモデルを選択するとキューを表示します", "选路原因未记录": "選択理由は記録されていません", "选路情况": "ルーティングの状況", "选路方式": "ルーティング方式", "选路预演": "ルーティングプレビュー", "逐步回放": "ステップ再生", "配置作用范围": "設定の適用範囲", "配置第 {rank} 顺位;当前可用候选第 {effective} 顺位。": "設定上の優先順位は {rank}、現在の利用可能な候補では {effective} 番目です。", "配置范围": "設定範囲", "配置该模型": "このモデルを設定", "配置请求的参与范围与优先顺序": "ルーティングの参加範囲と優先順位を設定", "配置项": "設定項目", "配置顺位 {n}": "設定上の優先順位 {n}", "重新读取": "再読み込み", "重新读取会丢弃当前范围的未保存草稿,其他范围的草稿保留。": "再読み込みすると、この範囲の未保存の下書きを破棄します。他の範囲の下書きは保持されます。", "重新读取配置": "設定を再読み込み", "队列为无会话预演;实际粘性命中和重试顺延以回放为准。": "キューはセッション固定なしのプレビューです。実際の固定や再試行の切り替えは再生記録をご覧ください。", "队首": "キュー先頭", "阶段 {phase} · 已进行 {time}": "フェーズ {phase} · 経過 {time}", "限制器跳过": "リミッターによりスキップ", "隐藏无账号 ({n})": "アカウントなしを隠す ({n})", "静止蓝线:选中历史路径": "静止した青線:選択した履歴経路", "顺位": "順位", "顺序修改即时保存,仅作用于当前视图。": "順序変更は即時保存され、現在のビューだけに適用されます。", "顺序调整不会解除限流;有效粘滞优先于普通账号顺序。": "並べ替えてもレート制限は解除されません。有効な固定は通常のアカウント順序より優先されます。", "预演首选": "プレビューの優先候補", "预览模型": "プレビューモデル", "首帧": "初回応答", "首帧 {time}": "初回応答 {time}", "首帧耗时": "最初のフレームまでの時間", "首帧:{time}": "最初のフレーム:{time}", "首选账号": "優先アカウント", "默认自动参与;新增可用提供商无需再添加路由,明确停用项保持不变。": "既定では自動参加します。新しい利用可能なプロバイダーのルーティング追加は不要で、明示的に停止した項目は維持されます。", "默认规则": "既定のルール", "默认路由": "既定のルーティング", "Agent 配置": "Agent 設定", "Claude Code 按 Opus / Sonnet / Haiku / 子 Agent 分档请求模型;这里把每档指向网关目录里的模型,留空表示不改写该档。": "Claude Code は Opus / Sonnet / Haiku / サブエージェントの枠ごとにモデルを要求します。ここで各枠をゲートウェイカタログのモデルに向けます。空欄にするとその枠は書き換えません。", "Claude Code 支持多模型菜单和逐模型思考等级;上下文及输入能力由客户端识别,不把自动压缩阈值冒充上下文窗口。": "Claude Code は複数モデルのメニューとモデル別の思考レベルに対応しています。コンテキストと入力機能はクライアントが判定します。自動圧縮のしきい値をコンテキストウィンドウとして扱うことはありません。", "Claude Code 的 Opus / Sonnet / Haiku / 子 Agent 四档默认都指向上面选的模型;要让某一档用别的模型,在这里单独改。": "Claude Code の Opus / Sonnet / Haiku / サブエージェントの 4 枠は既定で上で選んだモデルを指します。特定の枠だけ別のモデルにする場合はここで変更します。", "Codex 的模型目录支持逐模型上下文、图片和思考档位,不提供可写的逐模型输出上限。": "Codex のモデルカタログはモデル別のコンテキスト、画像入力、思考レベルに対応していますが、モデル別の出力上限を書き込む項目はありません。", "Crush 需要明确填写输出上限、图片与思考能力": "Crush では出力上限・画像対応・思考能力を明示してください", "DSH 配置目标": "DSH 設定対象", "Kimi Code 只能追加能力声明,不能关闭内置识别的能力。输出上限仅新版 Anthropic 协议生效;旧版不写入思考档位。": "Kimi Code では対応機能の宣言を追加できますが、組み込みで認識される機能は無効にできません。出力上限は新版の Anthropic プロトコルでのみ有効です。旧版には思考レベルを書き込みません。", "MCP 服务名称": "MCP サーバー名", "Skill 目录名": "Skill フォルダー名", "Token 上限必须是 1 到 1 亿之间的整数": "トークン上限は 1~1 億の整数で指定してください", "Zed 的 API Key 仍需在客户端提供商设置中填写;本页不修改系统凭证。": "Zed のプロバイダー設定で API Key を入力してください。このページはシステムの認証情報を変更しません。", "{id}(不在网关目录)": "{id}(ゲートウェイカタログにありません)", "· 走网关": "· ゲートウェイ経由", "一键把本机 AI 客户端接到本地网关:改写它自己的配置文件,保留其它设置": "ローカルの AI クライアントをローカルゲートウェイに接続します。各クライアントの設定ファイルを書き換え、それ以外の設定はそのまま残します", "一键接入": "簡単接続", "一键设置": "一括設定", "上下文": "コンテキスト", "上次应用未完整结束,请先查看恢复预览。": "前回の適用が完了していません。先に復元プレビューを確認してください。", "上游模型 id,例如 raccoon-coder-pro": "上流モデル ID(例: raccoon-coder-pro)", "下面是这个客户端文件里现有的配置(只读)。点「从客户端导入」把它收进我的配置,之后就能编辑和切换。": "以下はこのクライアントの設定ファイルにある既存の設定です(読み取り専用)。「クライアントから読み込む」を押すと自分の設定に取り込み、編集・切り替えができるようになります。", "不写入": "書き込まない", "不要添加 /v1/messages;客户端会自行追加请求路径。": "/v1/messages は付けないでください。クライアントがリクエストパスを追加します。", "与客户端一致": "クライアントと一致", "个 · 已安装": " 件 · インストール済み", "中转": "中継", "仅修改所选 MCP 条目,保留其它配置和注释;保存不会启动服务。": "選択した MCP 項目のみを変更し、他の設定とコメントを保持します。保存してもサーバーは起動しません。", "仅可读取": "読み取り専用", "从客户端导入": "クライアントから読み込む", "从网关目录选择": "ゲートウェイの一覧から選択", "从网关目录选择模型": "ゲートウェイの一覧からモデルを選択", "会用最近一次备份覆盖它的配置文件。这一步不会改动你在本页存的配置列表。": "最新のバックアップで設定ファイルを上書きします。このページに保存した設定リストは変更されません。", "低": "低", "使用中": "使用中", "使用此配置": "この設定を使用", "使用此配置时设为默认,其他模型仍可在客户端选择。": "この設定を使用すると既定モデルになります。他のモデルもクライアントで選択できます。", "使用真实模型 ID,不要填写模型展示名。": "表示名ではなく、実際のモデル ID を入力してください。", "使用网关 Key": "ゲートウェイキーを使用", "保存会直接修改客户端配置;确认前展示差异,写入前自动备份。": "保存するとクライアント設定を直接変更します。確認前に差分を表示し、書き込み前にバックアップします。", "保存修改": "変更を保存", "保存只记录方案,不修改客户端。应用时会另外展示文件差异并请求确认。": "保存はプロファイルの記録のみで、クライアントは変更しません。適用時にファイルの差分を表示して、別途確認します。", "保存后可在配置列表中切换,不影响当前使用的配置。": "保存後に設定一覧から切り替えられます。現在使用中の設定には影響しません。", "保存后同步更新客户端;写入前可查看改动,并自动备份。": "保存するとクライアントも更新します。書き込み前に変更を確認でき、自動でバックアップします。", "保存方案": "プロファイルを保存", "保存方案不会切换客户端;应用后改变实际默认模型。": "保存だけではクライアントは切り替わりません。適用すると実際の既定モデルが変わります。", "保存方案不会切换客户端;选择“应用并设为默认”才改变实际默认模型。": "保存だけではクライアントは切り替わりません。「適用して既定に設定」を選ぶと、実際の既定モデルが変わります。", "保存时自动写入完整的 /chat/completions 路径。": "完全な /chat/completions パスが自動的に書き込まれます。", "保存路径": "パスを保存", "保留导入的认证": "読み込んだ認証を保持", "保留现有认证": "現在の認証を保持", "修改后点击「使用此配置」才会更新客户端。": "編集後に「この設定を使用」を選択するとクライアントを更新します。", "停用后将从客户端可选项中关闭此配置,其他配置不受影响。": "クライアントの選択肢でこの設定を無効にします。他の設定には影響しません。", "停用配置": "設定を無効化", "全选搜索结果": "検索結果をすべて選択", "全部配置(全局覆盖)": "全プロファイル(グローバル上書き)", "共": "合計", "关闭后丢弃本次修改,不会保存配置或改动客户端。": "閉じると変更を破棄します。設定の保存やクライアントの変更は行いません。", "关闭后丢弃本次草稿,不会保存空方案,也不会修改客户端。": "閉じると今回の下書きは破棄されます。空のプロファイルは保存されず、クライアントも変更されません。", "内容已经一致,无需写入": "内容はすでに一致しています。書き込みは不要です", "写入中…": "書き込み中…", "写入后需要重开会话才生效": "書き込み後はセッションを開き直すと反映されます", "写入失败:{reason}": "書き込みに失敗しました: {reason}", "写入客户端": "クライアントに書き込む", "写入文件": "設定ファイル", "写入预览": "書き込みプレビュー", "删除 MCP": "MCP を削除", "删除 Skill": "Skill を削除", "删除只移除 SKILL.md,辅助文件保留在原目录;不会执行其中的脚本。": "削除するのは SKILL.md のみです。補助ファイルは元のフォルダーに残り、スクリプトは実行されません。", "删除客户端配置": "クライアント設定を削除", "删除已保存方案?": "保存済みプロファイルを削除しますか?", "删除新建文件": "新規作成ファイルを削除", "删除方案": "プロファイルを削除", "删除配置": "設定を削除", "删除配置?": "設定を削除しますか?", "动态表达式、独立作用域或全局覆盖的 MCP 为只读,请在 DSH 中编辑。": "動的な式、独立したスコープ、またはグローバル上書きのある MCP は読み取り専用です。DSH で編集してください。", "单配置": "単一設定", "另一项配置操作尚未完成": "別の設定操作がまだ完了していません", "只保存变量引用,不修改系统环境;请在启动客户端的环境里设置变量值。": "変数の参照のみを保存します。システム環境は変更しません。クライアントを起動する環境に変数の値を設定してください。", "只删除 Agent2API 中的方案,不修改客户端当前配置。": "Agent2API のプロファイルのみを削除します。クライアントの現在の設定は変更しません。", "只改 enabled 与默认项,其余条目原样保留": "enabled と既定項目だけを変更し、その他の項目はそのまま残します", "只改属于我们的那几个键,其它设置原样保留": "当方のキーだけを変更し、その他の設定はそのまま残します", "可先新增配置,安装后再使用": "先に設定を追加し、インストール後に使用できます", "可同时启用多条;切换只改 enabled 与默认项": "複数を同時に有効化できます。切り替えは enabled と既定項目だけを変更します", "可搜索并多选模型;上下文、输出上限和能力分别从网关目录自动填入。": "モデルを検索して複数選択できます。各モデルのコンテキスト長、出力上限、機能はゲートウェイの一覧から自動入力します。", "可选模型": "選択できるモデル", "同一时刻只有一套生效;写入 = 把这一套整段写进客户端文件": "同時に有効なのは 1 つだけです。書き込み = その設定をクライアントのファイルへまとめて書き込みます", "启用 {name}": "{name} を有効化", "启用此配置": "この設定を有効化", "启用配置": "設定を有効化", "图形化管理客户端原生配置;保存方案与应用配置分开。": "クライアントのネイティブ設定を GUI で管理します。プロファイルの保存と設定の適用は別の操作です。", "图片输入": "画像入力", "在客户端管理认证": "クライアントで認証を管理", "填写服务根地址,不要附加 /v1beta 或 generateContent 路径。": "サービスのルート URL を入力してください。/v1beta や generateContent のパスは付けないでください。", "处理中…": "処理中…", "备注": "メモ", "多套配置": "複数の設定", "多配置 · 已启用 {n}": "複数設定 · {n} 件有効", "子 Agent": "サブエージェント", "安装或初始化后可重新检测;自定义安装位置可指定配置路径。": "インストールや初期化後に再検出できます。独自の場所を使用する場合は設定パスを指定してください。", "完整配置文件路径": "設定ファイルの完全なパス", "官方直连": "公式直結", "客户端列表加载失败:{reason}": "クライアント一覧の読み込みに失敗しました: {reason}", "客户端列表响应无效": "クライアント一覧の応答が無効です", "客户端协议": "クライアントのプロトコル", "客户端原生 MCP 配置(JSON)": "クライアントのネイティブ MCP 設定(JSON)", "客户端原生配置": "クライアントのネイティブ設定", "客户端官方配置说明": "クライアントの公式設定ガイド", "客户端实际配置": "クライアントの実際の設定", "客户端必须实际使用同一个配置文件;本页不改变客户端启动参数。": "クライアントが同じ設定ファイルを実際に使用する必要があります。このページでは起動引数を変更しません。", "客户端文件已有外部修改,自动恢复会拒绝覆盖。": "クライアントのファイルに外部からの変更があります。自動復元では上書きしません。", "客户端条目启用状态": "クライアント項目の有効状態", "客户端清单": "クライアント一覧", "客户端管理分类": "クライアント管理の分類", "客户端自己的设置优先;这里写的是写入时带进去的初值": "クライアント側の設定が優先されます。ここに書くのは書き込み時の初期値です", "客户端资源已保存并校验": "クライアントのリソースを保存し検証しました", "客户端选项": "クライアントのオプション", "客户端配置写入后未通过校验": "書き込み後のクライアント設定の検証に失敗しました", "客户端配置已经一致,无需写入": "クライアント設定はすでに一致しています。書き込みは不要です", "客户端默认地址": "クライアントの既定エンドポイント", "密钥在 Agent2API 中加密保存;使用时按客户端要求写入。": "キーは Agent2API 内で暗号化して保存し、使用時にクライアントの形式で書き込みます。", "密钥已隐藏;绿色为新增,红色为删除。所有实际写入文件都列在这里。": "キーは非表示です。緑は追加、赤は削除を表します。実際に書き込むすべてのファイルをここに表示します。", "导入模型及客户端未知字段会保留;本页删除方案不会删除客户端条目。": "読み込んだモデルと未知のクライアント項目は保持します。このページでプロファイルを削除しても、クライアントの項目は削除されません。", "将删除此配置及客户端中的对应条目,其他配置不受影响。": "この設定と対応するクライアントの項目を削除します。他の設定には影響しません。", "尚未初始化": "未初期化", "尚未支持这个客户端的资源管理": "このクライアントのリソース管理にはまだ対応していません", "展开可调整能力;— 表示客户端未声明": "展開して能力を調整できます。— はクライアントが未宣言", "已保存": "保存しました", "已保存方案": "保存済みプロファイル", "已保存,未应用": "保存済み・未適用", "已写入 {name}": "{name} に書き込みました", "已写入 {name};这个客户端只在启动时读配置,重开一个会话才生效": "{name} に書き込みました。このクライアントは起動時にしか設定を読まないため、セッションを開き直すと反映されます", "已删除保存方案,客户端配置未改动": "保存済みプロファイルを削除しました。クライアント設定は変更していません", "已安装": "インストール済み", "已导入 {n} 套方案": "{n} 件のプロファイルを読み込みました", "已按备份还原 {name}": "{name} をバックアップから復元しました", "已收进我的配置:{n} 条": "自分の設定に取り込みました: {n} 件", "已检测到": "検出済み", "已选择": "選択済み", "已选模型": "選択済みモデル", "已配置": "設定済み", "已预填网关地址、协议、Key 与模型;确认后直接写入客户端,不需要先保存方案。": "ゲートウェイ URL、プロトコル、Key、モデルは入力済みです。確認後にクライアントへ直接書き込み、プロファイルの事前保存は不要です。", "应用": "適用", "应用中…": "適用中…", "应用到客户端": "クライアントに適用", "应用并设为默认": "適用して既定に設定", "应用时使用当前启用的真实 Key;预览会隐藏密钥。": "適用時は現在有効な実際のキーを使用します。プレビューではキーを非表示にします。", "当前环境不支持保存": "この環境では保存できません", "当前环境不支持保存(桥接方法缺失)": "この環境では保存できません(ブリッジメソッドが見つかりません)", "当前环境不支持写入(桥接方法缺失)": "この環境では書き込めません(ブリッジメソッドが見つかりません)", "当前环境不支持客户端接管(桥接方法缺失)": "この環境ではクライアント接続を利用できません(ブリッジメソッドが見つかりません)", "当前环境不支持客户端配置": "この環境ではクライアント設定を利用できません", "当前环境不支持导入": "この環境では読み込みできません", "当前环境不支持导入(桥接方法缺失)": "この環境では読み込めません(ブリッジメソッドが見つかりません)", "当前环境不支持应用": "この環境では適用できません", "当前环境不支持恢复": "この環境では復元できません", "当前环境不支持还原(桥接方法缺失)": "この環境では復元できません(ブリッジメソッドが見つかりません)", "当前环境不支持预览": "この環境ではプレビューを利用できません", "当前环境无法读取网关模型目录": "この環境ではゲートウェイのモデル一覧を読み取れません", "当前网关未启用 API Key 鉴权;占位值只用于客户端要求非空密钥的场景。": "このゲートウェイでは API キー認証が無効です。空でないキーをクライアントが要求する場合のみ仮の値を使用します。", "当前默认": "現在の既定", "思考能力": "思考能力", "恢复作用在网关所在机器;密钥已隐藏,不会覆盖应用后的外部修改。": "復元はゲートウェイが稼働するマシンに対して行います。キーは非表示で、適用後の外部変更は上書きしません。", "恢复自动检测": "自動検出に戻す", "所有操作作用在网关所在机器。": "すべての操作はゲートウェイが稼働するマシンに対して行います。", "所选 Key 下没有可用的对话模型,请先启用模型或手动填写。": "この Key で利用できる対話モデルがありません。モデルを有効化するか手動で入力してください。", "所选 Key 下没有可用的对话模型,请先启用模型或更换 Key。": "この Key で利用できる対話モデルがありません。モデルを有効にするか別の Key を選択してください。", "所选 Key 无权使用当前模型,请重新选择": "選択した Key は現在のモデルを利用できません。選び直してください。", "手动添加模型": "モデルを手動で追加", "手机端可查看客户端实际配置并撤销上次应用;编辑方案请使用桌面端。": "モバイルではクライアントの実際の設定の確認と前回の適用の取り消しができます。プロファイルの編集はデスクトップをご利用ください。", "手机端可查看模型配置、撤销上次应用,并管理提示词、Skill 与 MCP。": "モバイルではモデル設定の確認、前回の適用の取り消し、プロンプト・Skill・MCP の管理ができます。", "指定配置路径": "設定パスを指定", "按备份还原": "バックアップから復元", "按备份还原 {name}?": "{name} をバックアップから復元しますか?", "换 Key 后会按新 Key 的授权重新核对已选模型": "キーを変更すると、新しいキーの権限で選択済みモデルを再確認します。", "接入后使用此默认模型,其它已选模型仍可在客户端切换。": "接続後はこのモデルを既定にします。他の選択済みモデルもクライアントで切り替えられます。", "接入客户端": "クライアントを接続", "接入本网关": "このゲートウェイに接続", "接入状态来自客户端配置文件。恢复前显示差异;文件被其他程序修改时拒绝覆盖。": "接続状態はクライアントの設定ファイルから取得します。復元前に差分を表示し、他のプログラムが変更したファイルは上書きしません。", "接入端点": "接続エンドポイント", "接口基址": "API のベース URL", "搜索客户端": "クライアントを検索", "搜索客户端 / 配置文件…": "クライアント / 設定ファイルを検索…", "搜索已选模型": "選択済みモデルを検索", "搜索模型 ID / 展示名…": "モデル ID / 表示名を検索…", "撤销上次应用": "前回の適用を取り消す", "操作目标:网关所在机器": "操作対象:ゲートウェイのマシン", "收起更多配置": "追加設定を閉じる", "收起模型选择": "モデル選択を閉じる", "改写网关所在机器上的客户端配置": "ゲートウェイのマシン上のクライアント設定を管理", "改动": "変更", "放弃修改": "変更を破棄", "放弃未保存的修改?": "未保存の変更を破棄しますか?", "新增": "追加", "新增 MCP": "MCP を追加", "新增配置": "設定を追加", "新建 Skill": "Skill を新規作成", "新建文件": "新規ファイル", "新建方案或导入当前配置;保存后再决定是否应用。": "プロファイルを作成するか現在の設定を読み込んでください。保存後に適用するかどうかを選べます。", "新建配置": "新規設定", "新建配置方案": "設定プロファイルを新規作成", "新版网页版和桌面版分别保存模型配置;旧版模型设置共享,MCP 始终只写入所选运行方式。": "新版の Web 版とデスクトップ版はモデル設定を別々に保存します。旧版のモデル設定は共有されますが、MCP は選択したプロファイルにのみ書き込まれます。", "新配置": "新規設定", "方案中的密钥加密保存;客户端原生配置可能要求明文。": "プロファイル内のキーは暗号化して保存します。クライアントのネイティブ設定には平文が必要な場合があります。", "方案名称": "プロファイル名", "方案已保存,尚未应用到客户端": "プロファイルを保存しました。クライアントにはまだ適用していません", "无改动": "変更なし", "无配置": "設定なし", "无需认证": "認証なし", "旧版共享设置": "旧版の共有設定", "暂无预览": "プレビューはまだありません", "更多配置": "追加設定", "最多选择 {n} 个模型": "モデルは最大 {n} 個まで選択できます", "最近检测:{time}": "最終検出:{time}", "有改动": "変更あり", "未声明 / 保留": "未指定/保持", "未安装": "未インストール", "未找到客户端程序或配置文件": "クライアントのプログラムまたは設定ファイルが見つかりません", "未接入本网关": "このゲートウェイに未接続", "未接管": "未接続", "未检测到": "未検出", "未检测到安装": "インストールが検出されません", "未读取到可识别的客户端配置": "認識できるクライアント設定が見つかりません", "未走网关": "ゲートウェイ未経由", "本机": "この端末", "本机服务": "ローカルサービス", "本机没有找到 {name}": "このマシンに {name} が見つかりません", "本机网关": "ローカルゲートウェイ", "本网关": "このゲートウェイ", "来自客户端文件,只读": "クライアント設定ファイルから取得(読み取り専用)", "查看文件改动": "ファイルの変更を表示", "桌面版": "デスクトップ版", "模型 ID": "モデル ID", "模型 ID 不能为空或重复": "モデル ID は空欄または重複にできません", "模型 id": "モデル ID", "模型 {n}": "モデル {n}", "模型展示名": "モデルの表示名", "模型思考等级": "モデルの思考レベル", "模型或客户端不支持所选思考等级": "モデルまたはクライアントが選択した思考レベルに対応していません", "模型未声明思考档位,保留客户端默认,不显示猜测选项。": "モデルが思考レベルを宣言していません。クライアントの既定値を保持し、推測した選択肢は表示しません。", "模型目录响应无效": "モデル一覧の応答が無効です", "模型目录读取失败,可手动填写真实模型 ID。": "モデル一覧を読み込めませんでした。実際のモデル ID を手動で入力できます。", "模型配置": "モデル設定", "模型默认": "モデルの既定値", "正在检测客户端…": "クライアントを検出中…", "正在生成准确预览…": "正確なプレビューを生成中…", "正在生成预览…": "プレビューを生成中…", "正在读取本机客户端…": "ローカルクライアントを読み込み中…", "正在读取网关模型并填入配置…": "ゲートウェイのモデルを読み込み、設定を入力中…", "此处来自磁盘文件,不代表正在运行的旧会话已经重载。": "ここにはディスクから読み取った内容を表示します。実行中の既存セッションが設定を再読み込みしたことを意味しません。", "此配置未在客户端中使用,删除不会改变当前使用的配置。": "この設定はクライアントで使用されていません。削除しても現在の設定は変わりません。", "每个客户端可以有": "各クライアントは", "每个模型独立保存能力;展开可调整,未声明的数据不会猜测填写。": "機能はモデルごとに保存します。展開すると調整できます。未指定の値を推測して入力することはありません。", "没有匹配的客户端": "一致するクライアントがありません", "没有可导入的新条目(可能还没配过,或已经在我的配置里)": "読み込める新しい項目がありません(未設定か、すでに自分の設定にあります)", "没有新的条目可收(都已在我的配置里)": "取り込む新しい項目はありません(すべて自分の設定にあります)", "没有新的配置可以导入": "読み込む新しい設定はありません", "没有检测到可接管的客户端": "管理可能なクライアントが検出されません", "没有选中配置": "設定が選択されていません", "没有选中配置方案": "設定プロファイルが選択されていません", "添加到客户端": "クライアントに追加", "点击右上角「新增配置」,添加网关或其他服务": "右上の「設定を追加」からゲートウェイや他のサービスを追加できます", "点击模型展开详细配置;搜索只筛选显示,不会移除模型。": "モデルをクリックすると詳細設定が開きます。検索は表示を絞り込むだけで、モデルは削除されません。", "版本未识别": "バージョン未確認", "状态来自配置文件,已打开的会话可能需要重新加载": "状態は設定ファイルに基づきます。既存のセッションは再読み込みが必要な場合があります", "环境变量名": "環境変数名", "生成中…": "生成中…", "留空保留 / 未声明": "空欄:保持/未指定", "留空保留已保存密钥": "空欄で保存済みキーを保持", "留空的分档会以 Claude Code 内置模型名请求网关;网关没有同名模型时该档会失败,建议点「一键设置」。": "空欄の枠は Claude Code 内蔵のモデル名でゲートウェイに要求します。同名のモデルがなければその枠は失敗します。「一括設定」を推奨します。", "留空表示不写入": "空欄なら書き込まない", "确认": "確認", "确认使用": "使用を確認", "确认停用": "無効化を確認", "确认写入": "書き込みを確認", "确认写入后会同步修改客户端开关;取消不会生效。": "書き込みを確定すると、クライアント項目の有効状態も更新されます。キャンセルした場合は変更されません。", "确认写入后更新客户端默认模型;取消不会生效。": "書き込みを確定すると、クライアントの既定モデルが更新されます。キャンセルした場合は変更されません。", "确认写入客户端资源": "クライアントリソースの書き込みを確認", "确认删除": "削除を確認", "确认删除客户端资源": "クライアントリソースの削除を確認", "确认后将切换到此配置,原配置会保留在列表中。": "確認するとこの設定に切り替えます。元の設定は一覧に残ります。", "确认后将更新 {name} 的配置文件,原配置会自动备份。": "確認すると {name} の設定ファイルを更新します。元のファイルは自動でバックアップします。", "确认后将此配置加入客户端,已有配置会保留。": "確認するとこの設定をクライアントに追加します。既存の設定は保持します。", "确认应用": "適用を確認", "确认恢复": "復元を確認", "确认接入": "接続を確認", "移除模型会写入客户端配置;其它条目和未知字段保留,确认前可查看差异。": "モデルの削除はクライアント設定に反映されます。他の項目と未知のフィールドは保持され、確認前に差分を確認できます。", "移除模型:{name}": "モデルを削除: {name}", "第一把启用的 Key": "最初の有効なキー", "第三方中转": "サードパーティ中継", "编辑 MCP": "MCP を編集", "编辑 Skill": "Skill を編集", "编辑客户端配置": "クライアント設定を編集", "编辑配置": "設定を編集", "编辑配置方案": "設定プロファイルを編集", "编辑:{name}": "編集: {name}", "网关目录共 {n} 个": "ゲートウェイカタログに {n} 件", "网页版": "Web 版", "自定义路径": "カスタムパス", "行号由后端逐行比对给出": "行番号はバックエンドの行単位の比較によるものです", "装好后回到这一页点「重新检测」,它会出现在上面的列表里。": "インストール後にこのページへ戻り「再検出」を押すと、上の一覧に表示されます。", "视频输入": "動画入力", "解除接入本网关": "このゲートウェイとの接続を解除", "认证方式": "認証方式", "设为默认": "既定に設定", "请先在「网关 Key」页创建并启用一把 Key": "先に「ゲートウェイ Key」ページで Key を作成して有効化してください。", "请在 Zed 提供商设置中保存 API Key;本页不修改系统凭证存储。": "Zed のプロバイダー設定で API キーを保存してください。このページではシステムの認証情報ストアを変更しません。", "请填写 API Key": "API キーを入力してください", "请填写方案名称": "プロファイル名を入力してください", "请填写有效的 http 或 https 地址": "有効な http または https の URL を入力してください", "请填写有效的环境变量名": "有効な環境変数名を入力してください", "请填写配置名称": "設定名を入力してください", "请至少添加一个模型": "モデルを 1 つ以上追加してください", "请补全配置后使用": "設定を完成させてから使用してください", "请输入密钥": "キーを入力してください", "请选择": "選択してください", "请选择模型": "モデルを選択してください", "读取失败": "読み取り失敗", "读取客户端配置失败:{reason}": "クライアント設定の読み込みに失敗しました: {reason}", "走网关": "ゲートウェイ経由", "路径属于网关所在机器,不是浏览器所在设备。只改变检测目标,不修改客户端文件。": "パスはブラウザーの端末ではなくゲートウェイのマシン上のものです。検出対象のみを変え、クライアントのファイルは変更しません。", "输出上限": "最大出力", "返回编辑": "編集に戻る", "还原中…": "復元中…", "还原失败:{reason}": "復元に失敗しました: {reason}", "还没有配置": "設定がまだありません", "还没有配置。点「新建配置」建一套指向本机网关的,再写入客户端。": "設定がまだありません。「新規設定」でローカルゲートウェイを指す設定を作り、クライアントに書き込んでください。", "还没有预览。选一套配置后这里会显示写入客户端之后的样子。": "プレビューはまだありません。設定を選ぶと、クライアントへ書き込んだ後の内容がここに表示されます。", "这个客户端不从网关目录选模型,用右侧的「添加模型」逐个填写。": "このクライアントはゲートウェイカタログからモデルを選択しません。右側で 1 つずつ追加してください。", "这个客户端不支持所选协议": "このクライアントは選択したプロトコルに対応していません", "这个客户端不能接入本网关": "このクライアントはこのゲートウェイに接続できません", "这个客户端会自己重读配置,写入后开新会话即生效。": "このクライアントは設定を自動で読み直します。書き込み後に新しいセッションを開けば反映されます。", "这个客户端只在启动时读配置:写入后重开一个会话才生效。": "このクライアントは起動時にしか設定を読みません。書き込み後にセッションを開き直すと反映されます。", "这个客户端的配置里没有读出地址(可能还没配过,或形状不认识)": "このクライアントの設定からアドレスを読み取れませんでした(未設定か、形式を認識できません)", "这个客户端自己支持多套配置并存": "このクライアントは複数の設定を並存できます", "这个客户端自己管理多套配置,可同时启用多条;切换只改 enabled 与默认项,不动它的模型清单。": "このクライアントは複数の設定を自前で管理し、複数を同時に有効化できます。切り替えは enabled と既定項目だけを変更し、モデル一覧には触れません。", "这个客户端还没有 MCP": "このクライアントにはまだ MCP サーバーがありません", "这个客户端还没有 Skill": "このクライアントにはまだ Skill がありません", "这个客户端需要填写模型上下文窗口": "このクライアントではモデルのコンテキスト長が必要です", "这套配置是干什么用的(只显示在本页)": "この設定の用途(このページにのみ表示)", "这是待应用状态;保存不会立即改变客户端开关。": "これは適用予定の状態です。保存だけではクライアントの有効状態は変わりません。", "这里只调整此模型,不影响其它模型。": "ここでの変更はこのモデルにのみ適用されます。", "这里只选择客户端实际支持的协议,不改变上游提供商协议。": "ここではクライアントが実際に対応するプロトコルのみを選びます。上流プロバイダーのプロトコルは変更しません。", "连接方式": "接続方式", "连接配置": "接続設定", "选一个客户端开始": "クライアントを選んで開始", "选择 MCP": "MCP を選択", "选择 Skill": "Skill を選択", "选择模型": "モデルを選択", "选择网关 Key": "ゲートウェイ Key を選択", "选择要接入的模型;确认前展示文件改动,写入前自动备份。": "接続するモデルを選択します。確認前にファイルの変更を表示し、書き込み前に自動バックアップします。", "选择配置目标": "設定対象を選択", "通常以 /v1 结尾,不要附加具体请求路径。": "通常は /v1 で終わる URL です。具体的なリクエストパスは付けないでください。", "部分已选模型已不可用或所选 Key 无权使用,请移除或更换 Key。": "一部の選択済みモデルは利用できないか、この Key では許可されていません。削除するか別の Key を選択してください。", "配置": "設定", "配置位置与说明": "設定の保存先と詳細", "配置列表": "設定一覧", "配置列表格式不匹配,请重启网关后刷新页面": "設定一覧の形式が一致しません。ゲートウェイを再起動してからページを更新してください。", "配置可读写": "設定の読み書き可能", "配置名称": "設定名", "配置差异": "設定の差分", "配置已保存,可在列表中点击使用": "設定を保存しました。一覧から選択して使用できます。", "配置已删除": "設定を削除しました", "配置已删除,客户端文件已同步更新": "設定を削除し、クライアントのファイルを更新しました", "配置已应用并读回校验;请重开客户端或会话": "設定を適用し、再読み取りで検証しました。クライアントまたはセッションを開き直してください", "配置已恢复并校验": "設定を復元し検証しました", "配置操作": "設定の操作", "配置文件已写入并校验;尚未验证 DSH 是否加载,请在所选客户端新建会话确认。": "設定ファイルの書き込みと検証が完了しました。DSH に読み込まれたかは未確認です。選択したクライアントで新しい会話を作成して確認してください。", "配置来源": "設定の種類", "重新填入目录能力": "一覧から機能を再入力", "重新检测": "再検出", "重新生成预览": "プレビューを再生成", "需要重新编辑:": "再編集が必要です:", "需重开会话生效": "セッションを開き直すと反映されます", "预览并保存": "プレビューして保存", "预览草稿改动": "下書きの変更をプレビュー", "高": "高", "高级选项": "詳細オプション", "默认模型": "既定モデル", "默认模型必须来自模型列表": "既定モデルはモデル一覧から選んでください", "默认模型思考等级": "既定モデルの思考レベル", "(本机网关 / 官方直连 / 第三方中转 / 本机服务),随时切换。单配置客户端切换 = 整段覆写并备份原文件;多配置客户端(如 ZCode)只改 enabled 与默认项,它自己的条目一律不动。": "(ローカルゲートウェイ / 公式直結 / サードパーティ中継 / ローカルサービス)をいつでも切り替えられます。単一設定のクライアントでは設定全体を上書きし、元のファイルをバックアップします。ZCode のような複数設定のクライアントでは enabled と既定項目だけを変更し、独自の項目には一切触れません。", "API Key 无效或无权限": "API Key が無効、または権限がありません", "API 接口文档": "API ドキュメント", "DSH 使用 Agent 页当前选择的配置目标。写入后请在 DSH 中确认工具是否出现,必要时重启对应客户端。": "DSH は Agent ページで選択した設定対象を使用します。書き込み後、DSH にツールが表示されることを確認し、必要に応じて該当クライアントを再起動してください。", "Key 明文只会写入所选客户端的本机配置文件。": "プレーンテキストの Key は、選択したクライアントのローカル設定ファイルにのみ書き込まれます。", "MCP & Skills": "MCP & Skills", "MCP 接入信息": "MCP 接続情報", "Node.js 无需额外依赖,推荐使用;Python 需要本机有 python。": "Node.js は追加依存が不要で推奨です。Python を使うには本機に python が必要です。", "{name} 接入客户端": "{name} をクライアントに接続", "上游提供商": "上流プロバイダー", "上游提供商配置": "上流プロバイダー設定", "上游提供商配置由各接入协议共享,改动后所有协议同时生效。": "上流プロバイダー設定は各アクセスプロトコルで共有され、変更はすべてのプロトコルに同時に反映されます。", "上游没有返回结果": "上流が結果を返しませんでした", "上游请求超时": "上流リクエストがタイムアウトしました", "下载图片 {index}": "画像 {index} をダウンロード", "不指定": "指定しない", "中文": "中国語", "仅搜索": "検索のみ", "仅支持单选,默认为 Tavily。": "単一選択のみ。既定は Tavily です。", "仅显示已启用且至少有一个可用模型的提供商。": "有効で、利用可能なモデルが 1 つ以上あるプロバイダーのみ表示します。", "仅显示该提供商下已启用的模型。": "このプロバイダーで有効なモデルのみ表示します。", "任务编号或原提交编号,至少提供一项": "タスク ID または元の送信 ID を指定してください", "作为远程 MCP 服务,在支持 MCP 的客户端配置里填写地址即可接入。": "リモート MCP サービスとして提供され、MCP 対応クライアントの設定に URL を書けば接続できます。", "使用已有账号生成或编辑图片,支持任务查询与本机文件保存。": "既存アカウントで画像を生成・編集し、タスクの確認とローカル保存ができます。", "保存能力配置": "機能設定を保存", "保留至 {time}": "{time} まで保存", "共 {count} 项能力": "全 {count} 機能", "内部请求本站网关时使用的网关 Key;额度、限流与请求日志记在该 Key 上。": "内部でこのゲートウェイを呼ぶときに使うゲートウェイ Key。クォータ、レート制限、リクエストログはこの Key に記録されます。", "内部调用 API Key": "内部呼び出し用 API Key", "写入失败": "書き込みに失敗しました", "写入配置": "設定を書き込む", "单次图片上限": "1 回の画像上限", "卸载失败": "アンインストールに失敗しました", "参考图允许读取的目录": "参照画像の読み取り許可フォルダー", "参考图链接或已生成图片 ID;本地桥接还可传文件路径": "参照画像の URL または生成画像 ID。ローカルブリッジではファイルパスも指定可能", "取消全选": "すべて解除", "只保存新文件,不覆盖已有不同内容。目录权限写入客户端配置,更新配置时需要重新确认。": "新規ファイルのみ保存し、内容の異なる既存ファイルは上書きしません。フォルダー権限はクライアント設定に保存され、更新時に再確認が必要です。", "可选。留空时不传,由模型映射的「思考覆盖」决定。": "任意。空欄なら送信せず、モデルマッピングの「思考オーバーライド」に任せます。", "可选,每行一个已有绝对目录。输出目录默认允许读取;其他位置的文件不会读取或上传。": "任意。既存フォルダーの絶対パスを 1 行に 1 つ指定します。出力先は標準で読み取り可能です。他の場所のファイルは読み取り・アップロードしません。", "启用 / 停用此服务": "このサービスを有効 / 無効にする", "图片分析": "画像分析", "图片占用 {used} MiB,生成中预留 {reserved} MiB。": "画像使用量 {used} MiB、生成中の予約領域 {reserved} MiB。", "图片生成配置": "画像生成設定", "图片生成配置已保存": "画像生成設定を保存しました", "图片输出目录": "画像の出力フォルダー", "在支持远程 MCP 的客户端中填写该地址,并使用网关 Key 作为 Bearer 令牌。": "リモート MCP 対応クライアントにこの URL を入力し、ゲートウェイ Key を Bearer トークンとして使います。", "复制失败,请手动选择后复制": "コピーに失敗しました。手動で選択してコピーしてください", "复制文档": "ドキュメントをコピー", "复用「账号」页的登录态,不需要额外填写搜索密钥。账号停用或删除后不会自动换号。": "「アカウント」ページのログイン状態を再利用するため、検索用キーの追加入力は不要です。アカウントを無効化または削除しても、自動で別のアカウントに切り替えません。", "复用已有账号生图,不改变 Agent 的对话模型。实际调用遵守接入 Key 的模型和提供商权限。": "既存アカウントで画像を生成し、Agent の会話モデルは変更しません。呼び出しには接続用 Key のモデル・プロバイダー権限が適用されます。", "存储上限(MiB)": "保存容量上限(MiB)", "安装目标": "インストール先", "完整的图片要求": "画像の詳細な要件", "客户端环境": "クライアント環境", "客户端调用超时设为 120 秒;后台生成超时由服务配置控制,未完成时通过任务编号查询。": "クライアントの呼び出しは 120 秒でタイムアウトします。生成処理の期限はサービス設定に従います。未完了のタスクは ID で照会してください。", "客户端配置示例": "クライアント設定例", "密钥已清除": "キーを削除しました", "密钥或账号登录态无效": "API キーまたはアカウントのログイン状態が無効です", "密钥提示": "キーのヒント", "将按服务的工具执行超时({seconds} 秒)同步写入客户端配置。": "サービスのツール実行タイムアウト({seconds} 秒)がクライアント設定に書き込まれます。", "将搜索、视觉等能力通过 MCP 或 Skills 接入客户端。": "MCP または Skills を通じて、検索や画像分析などの機能をクライアントで利用できます。", "尚未配置图片生成,请先选择可用的生图模型并保存。": "画像生成が未設定です。利用可能な画像生成モデルを選んで保存してください。", "尚未配置视觉模型,配置前调用方会收到“未配置”错误。": "視覚モデルが未設定です。設定するまで呼び出し側には「未設定」エラーが返ります。", "工具执行超时": "ツール実行タイムアウト", "工具执行超时已保存": "ツール実行タイムアウトを保存しました", "工具服务": "ツールサービス", "已写入 {count} 个客户端配置": "{count} 個のクライアント設定に書き込みました", "已处理 {count} 个目标": "{count} 件の対象を処理しました", "已复制": "コピーしました", "已失效": "無効", "已安装到 {count} 个客户端": "{count} 個のクライアントにインストールしました", "已完成": "完了", "已完成 {count} 个目标": "{count} 件の対象を完了しました", "已接入 {count} 个目标": "{count} 件の対象に接続済み", "已有账号": "既存アカウント", "已有账号搜索只支持搜索,不支持网页抓取;请求会使用绑定账号的额度与出网设置。": "既存アカウントのソースは検索のみ対応し、ページ取得はできません。リクエストには紐付けたアカウントのクォータと外部接続設定を使います。", "已检查保存的配置,未发起生图;账号实际额度与上游可用性以调用结果为准。": "保存済み設定を確認しました。画像は生成していません。実際の残量と上流の利用可否は呼び出し結果で確認できます。", "已绑定的搜索账号不存在,请重新选择": "紐付けた検索アカウントが存在しません。選び直してください", "已绑定的搜索账号已停用": "紐付けた検索アカウントは無効です", "已绑定账号不可用,请重新选择": "紐付けたアカウントが利用できません。選び直してください", "已过期或清理": "期限切れ・削除済み", "已选择 {count} / {total} 个": "{count} / {total} 件選択中", "已配置的 API Key 已失效(被删除或禁用),请重新选择并保存。": "設定済みの API Key が無効です(削除または無効化)。選び直して保存してください。", "当前提供商插件不支持账号搜索,请更新插件": "現在のプロバイダープラグインはアカウント検索に対応していません。更新してください", "当前模型:{provider} / {model}": "現在のモデル:{provider} / {model}", "当前没有可用的安装目标": "利用できるインストール先がありません", "当前没有已安装/已配置的目标": "インストール済み / 設定済みの対象はありません", "当前网关 Key 无权使用所选账号搜索来源": "このゲートウェイ Key には、選択したアカウント検索ソースを使う権限がありません", "打包为 Agent Skill,由 Agent2API 面板安装到本机客户端目录。": "Agent Skill としてパッケージ化され、Agent2API パネルからローカルのクライアントディレクトリにインストールされます。", "批量抓取 1~10 个 URL,使用后台选中的单个抓取提供商。": "サーバー側で選択した単一の取得プロバイダーを使い、1~10 個の URL を一括取得します。", "批量搜索 1~10 条查询,并发调用后台选中的提供商后合并重复来源。": "サーバー側で選択したプロバイダーで 1~10 件のクエリを並行検索し、重複するソースを統合します。", "批量网页抓取": "一括ページ取得", "批量网页抓取提供商": "一括ページ取得プロバイダー", "批量网页搜索": "一括ウェブ検索", "批量网页搜索不可用:所选提供商均未启用或未配置密钥。": "一括ウェブ検索は利用できません:選択したプロバイダーはいずれも有効化・キー設定されていません。", "批量网页搜索不可用:请启用来源并配置密钥或绑定可用账号。": "一括ウェブ検索は利用できません。ソースを有効にし、API キーを設定するか、利用可能なアカウントを紐付けてください。", "批量网页搜索可用:将使用 {ready},未配置的 {missing} 会自动跳过。": "一括ウェブ検索が利用できます:{ready} を使用し、未設定の {missing} は自動的にスキップします。", "批量网页搜索可用:所选提供商均已启用并配置密钥。": "一括ウェブ検索が利用できます。選択したプロバイダーはすべて有効でキーも設定済みです。", "批量网页搜索可用:所选来源均已启用并配置完成。": "一括ウェブ検索が利用できます。選択したソースはすべて有効で設定済みです。", "批量网页搜索提供商": "一括ウェブ検索プロバイダー", "批量网页搜索至少选择一个提供商": "一括ウェブ検索には少なくとも 1 つのプロバイダーを選択してください", "把 1~10 张图片与提示词交给后台配置的视觉模型,返回模型回复文本。": "1~10 枚の画像とプロンプトをサーバー側で設定した視覚モデルに渡し、モデルの返答テキストを返します。", "把下面这段合并到客户端配置的 mcpServers 里,并把 Key 换成你自己的。": "以下のスニペットをクライアント設定の mcpServers にマージし、Key をご自身のものに置き換えてください。", "把图片与提示词交给后台配置的视觉模型分析,并把模型回复返回给调用方的大模型。": "画像とプロンプトをサーバー側で設定した視覚モデルに渡して分析し、モデルの返答を呼び出し側のモデルに返します。", "抓取:{name}": "取得:{name}", "按参考图修改,仅在配置了可用编辑模型时提供。": "参照画像を編集します。利用可能な編集モデルが設定されている場合のみ提供します。", "按描述使用已配置的模型生图,默认一张,会消耗账号额度。": "設定済みモデルで説明から画像を生成します。標準は 1 枚で、アカウントのクレジットを消費します。", "接入协议": "アクセスプロトコル", "接入方式": "接続方式", "提供 REST API,任何能发 HTTP 请求的程序都可以携带网关 Key 直接调用。": "REST API を提供します。HTTP リクエストを送れるプログラムなら、ゲートウェイ Key を付けて直接呼び出せます。", "提供商尚未配置密钥": "プロバイダーに API キーが設定されていません", "提供商尚未配置有效密钥": "プロバイダーに有効な API キーが設定されていません", "提供商插件暂不可用": "プロバイダープラグインが一時的に利用できません", "提供商插件未安装或未启用": "プロバイダープラグインが未インストール、または無効です", "提供商暂不可用或配置有误": "プロバイダーが一時的に利用できないか、設定に誤りがあります", "提供商选择": "プロバイダー選択", "提示词,描述要让模型在图片中查看的内容": "画像内でモデルに見てほしい内容を説明するプロンプト", "插件搜索能力声明不完整,请更新插件": "プラグインの検索機能情報が不完全です。更新してください", "插件返回的搜索来源格式不正确": "プラグインが返した検索ソースの形式が正しくありません", "搜索、视觉与生图共用网关配置。本机客户端的 MCP 安装在桌面端完成。": "検索・視覚分析・画像生成はゲートウェイ設定を使います。ローカルクライアントへの MCP インストールはデスクトップで行います。", "搜索参数不符合该来源的要求": "検索パラメーターがこのソースの要件を満たしていません", "搜索提供商没有返回来源": "検索プロバイダーがソースを返しませんでした", "搜索服务拒绝了该账号,请检查账号权限": "検索サービスがこのアカウントを拒否しました。権限を確認してください", "搜索来源配置不完整": "検索ソースの設定が不完全です", "搜索请求超时": "検索リクエストがタイムアウトしました", "搜索账号不属于该提供商,请重新选择": "検索アカウントは別のプロバイダーのものです。選び直してください", "搜索账号登录态已失效,请重新登录": "検索アカウントのログインが失効しました。再度ログインしてください", "搜索额度已用完或触发限流": "検索クォータを使い切ったか、レート制限に達しました", "支持多选。每次搜索会并发调用所选提供商并合并重复来源。": "複数選択できます。検索のたびに選択したプロバイダーを並行して呼び、重複するソースを統合します。", "无法确认插件搜索能力,请更新或重启提供商插件": "検索への対応を確認できません。プロバイダープラグインを更新または再起動してください", "暂无生图记录,连接 MCP 后即可让 Agent 生成图片。": "画像生成の記録はまだありません。MCP に接続すると Agent で画像を生成できます。", "暴露的工具": "公開ツール", "更新时间": "更新日時", "最大生成并发": "同時生成の上限", "最近生成记录": "最近の生成記録", "服务与协议": "サービスとプロトコル", "服务入口": "サービス入口", "服务名称": "サービス名", "服务地址": "サービス URL", "服务状态已更新": "サービス状態を更新しました", "服务端强制单次工具执行的超时上限(同一服务的 Skill / MCP / API 共用)。安装 MCP 时会按此值写入客户端配置;修改后需在客户端重新「更新」配置并重进会话才会生效。": "サーバー側で強制する 1 回のツール実行のタイムアウト上限(同じサービスの Skill / MCP / API で共有)。MCP インストール時にこの値がクライアント設定に書き込まれます。変更後はクライアントで「更新」をやり直し、セッションに入り直すと反映されます。", "服务端强制单次工具执行的超时上限(同一服务的 Skill / MCP 共用)。安装 MCP 时会按此值写入客户端配置;修改后需在客户端重新「更新」配置并重进会话才会生效。": "サービス側で強制する単一ツール実行のタイムアウト上限(同じサービスの Skill / MCP で共用)。MCP をインストールするときにこの値をクライアント設定へ書き込みます。変更後はクライアントで「更新」を再実行し、セッションを開き直すまで反映されません。", "服务能力": "サービス機能", "服务配置": "サービス設定", "未选择账号": "アカウント未選択", "本地桥接": "ローカルブリッジ", "本地桥接会在本机运行一个 node 脚本,支持直接传本地图片路径,推荐在桌面端使用。": "ローカルブリッジは本機で Node スクリプトを実行し、ローカル画像パスをそのまま渡せます。デスクトップでの利用を推奨します。", "本地桥接需要 Node.js 18 或更新版本,自动读取授权目录的参考图并保存生成结果;HTTP 接入只返回下载地址。": "ローカルブリッジには Node.js 18 以降が必要です。許可フォルダーの参照画像を読み込み、生成結果を保存します。HTTP 接続はダウンロード URL のみ返します。", "本机接入": "ローカル接続", "本次提交的唯一编号,断线重试使用原编号": "送信ごとの固有 ID。切断後の再試行では同じ ID を使用", "查询原任务并取回图片,不再次生图或扣费。": "元のタスクを照会して画像を取得します。再生成や追加課金は行いません。", "查询生成结果": "生成結果を確認", "检查配置": "設定を確認", "正在加载安装目标…": "インストール先を読み込み中…", "正在加载工具服务…": "ツールサービスを読み込み中…", "正在加载工具服务配置…": "ツールサービス設定を読み込み中…", "每条搜索词最多 {count} 字": "検索語は 1 件につき最大 {count} 文字", "没有匹配的工具服务": "一致するツールサービスはありません", "没有可用的工具服务": "利用できるツールサービスがありません", "没有可用的生图模型,请先添加账号、启用对应插件并更新模型目录。": "利用可能な画像生成モデルがありません。アカウントを追加し、対応プラグインを有効化してモデル一覧を更新してください。", "没有可用的网关 Key": "利用できるゲートウェイ Key がありません", "没有可绑定的启用账号,请先到「账号」页添加或启用。": "紐付け可能な有効なアカウントがありません。先に「アカウント」ページで追加または有効化してください。", "没有可配置的提供商": "設定できるプロバイダーがありません", "清理这次生成的临时图片?已保存到本机的文件不会被删除,原提交编号也不会重新生图。": "このタスクの一時画像を削除しますか?ローカル保存済みのファイルは削除されず、元の送信 ID で再生成も行われません。", "清除密钥": "キーを削除", "清除配置": "設定を削除", "点击「复制文档」可复制整份 Markdown 文档,直接发给对接方即可。": "「ドキュメントをコピー」で Markdown 全文をコピーでき、そのまま連携先に渡せます。", "生图模型": "画像生成モデル", "生图账号": "画像生成アカウント", "生成中": "生成中", "生成较慢时先返回任务编号。断线后查询原任务,不自动重画;超时不代表没有扣费。": "生成に時間がかかる場合は先にタスク ID を返します。再接続後は元のタスクを照会し、自動で再生成しません。タイムアウトでも課金されている可能性があります。", "确定清除提供商 {name} 的 API Key?清除后该提供商将不可用,直到重新保存新密钥。": "{name} の API Key を削除しますか?新しいキーを保存するまでこのプロバイダーは利用できません。", "移除 {name} 配置": "{name} の設定を削除", "空白的 API Key 不会覆盖已保存的密钥。": "空の API Key は保存済みのキーを上書きしません。", "管理可供客户端安装和运行的工具服务,并配置上游提供商与能力。": "クライアントがインストールして使えるツールサービスを管理し、上流プロバイダーと機能を設定します。", "结果不确定": "結果不明", "结果保留(小时)": "保存期間(時間)", "编辑 {name}": "{name} を編集", "编辑可使用不同模型;未配置可用编辑模型时,不向 Agent 提供编辑工具。": "編集には別のモデルを使用できます。利用可能な編集モデルが未設定の場合、Agent に編集ツールを公開しません。", "编辑提供商 {name}": "プロバイダー {name} を編集", "编辑模型": "編集モデル", "网络搜索": "ウェブ検索", "网络搜索与视觉分析:网关侧配置,改完立即生效。本机客户端的安装在桌面端完成。": "ウェブ検索と視覚分析はゲートウェイ側の設定で、変更はすぐに反映されます。ローカルクライアントへのインストールはデスクトップで行います。", "聚合 Tavily、Querit、Firecrawl、Ollama Web Search,提供批量网页搜索与网页抓取能力。": "Tavily、Querit、Firecrawl、Ollama Web Search を統合し、一括ウェブ検索とページ取得を提供します。", "聚合标准搜索服务及已有 WorkBuddy、Kiro 账号的搜索能力;网页抓取仍使用标准服务。": "標準の検索サービスと既存の WorkBuddy・Kiro アカウントの検索機能を統合します。ページ取得には引き続き標準サービスを使います。", "能力提供商配置已保存": "機能プロバイダー設定を保存しました", "能力数量": "機能数", "自动选择仅在所选提供商内遵守现有路由;固定账号仍受停用、冷却与额度限制,不会自动换号。": "自動選択は選択したプロバイダー内で既存のルーティングに従います。固定アカウントも無効化・クールダウン・残量制限の対象となり、自動切り替えは行いません。", "自动选择账号": "アカウントを自動選択", "至少选择一个搜索提供商": "検索プロバイダーを 1 つ以上選択してください", "获取 API Key": "API Key を取得", "要分析的图片(1~10 张),每张为 http(s) URL 或图片 data URI": "分析する画像(1~10 枚)。各項目は http(s) URL または画像 data URI", "要抓取并提取正文的网页 URL(1~10 个)": "取得して本文を抽出するページ URL(1~10 個)", "要搜索的查询,每条并发执行(1~10 条)": "検索するクエリ。各クエリは並行実行されます(1~10 件)", "视觉分析": "視覚分析", "视觉服务配置已保存": "視覚サービス設定を保存しました", "视觉服务配置已清除": "視覚サービス設定を削除しました", "视觉模型配置": "視覚モデル設定", "视觉链路测试失败": "視覚パイプラインのテストに失敗しました", "视觉链路连通:耗时 {duration}ms": "視覚パイプライン接続 OK:{duration}ms", "触发上游限流": "上流のレート制限に達しました", "该协议已停用,已接入的客户端会收到服务停用错误。": "このプロトコルは無効です。接続済みのクライアントにはサービス無効エラーが返ります。", "该协议通过 Agent2API 面板安装到本机客户端目录。": "このプロトコルは Agent2API パネルからローカルのクライアントディレクトリにインストールされます。", "该提供商不支持网页抓取": "このプロバイダーはページ取得に対応していません", "该搜索来源使用 API Key,不接受账号绑定": "この検索ソースは API Key を使用するため、アカウントは紐付けできません", "该搜索来源使用已有账号,不接受 API Key": "この検索ソースは既存アカウントを使用するため、API Key は指定できません", "请先选择 API Key": "先に API Key を選択してください", "请先选择提供商": "先にプロバイダーを選択してください", "请先选择搜索使用的账号": "先に検索に使うアカウントを選択してください", "请求参数无效": "リクエストパラメータが無効です", "请至少选择一个目标": "少なくとも 1 つの対象を選択してください", "请选择 API Key": "API Key を選択してください", "请选择内部调用 API Key": "内部呼び出し用 API Key を選択してください", "请选择图片输出目录": "画像の出力フォルダーを選択してください", "请选择提供商与上游模型": "プロバイダーと上流モデルを選択してください", "调用用的 API Key": "呼び出し用 API Key", "账号搜索暂不可用,请检查账号及插件状态": "アカウント検索が一時的に利用できません。アカウントとプラグインの状態を確認してください", "账号搜索配置不完整,请重新选择账号或更新插件": "アカウント検索の設定が不完全です。アカウントを選び直すか、プラグインを更新してください", "超时 {seconds}s": "タイムアウト {seconds}s", "输入新密钥;留空保持不变": "新しいキーを入力。空欄なら変更しません", "运行时": "ランタイム", "还没有可用的提供商,请先在「账号」页添加账号并在「模型管理」页确认有已启用的模型。": "利用できるプロバイダーがありません。先に「アカウント」ページでアカウントを追加し、「モデル管理」ページで有効なモデルがあることを確認してください。", "还没有可用的提供商,请先在桌面端添加账号并确认有已启用的模型。": "利用できるプロバイダーがありません。デスクトップでアカウントを追加し、有効なモデルがあることを確認してください。", "这是后台生成任务的时间上限。单次 MCP 调用最多等待 20 秒,未完成时返回任务编号;查询不会重新生图。": "バックグラウンド生成タスクの制限時間です。MCP 呼び出しは最大 20 秒待機し、未完了ならタスク ID を返します。照会で再生成は行いません。", "这里管理的是「客户端能用什么」:服务是否对外提供、上游提供商与密钥、视觉分析用哪个模型。": "ここでは「クライアントが何を使えるか」を管理します。サービスの公開可否、上流プロバイダーとキー、視覚分析に使うモデルです。", "远程 HTTP": "リモート HTTP", "远程 HTTP 只接受图片 URL 或 data URI,不需要本机安装 node。": "リモート HTTP は画像 URL または data URI のみ受け付けます。本機に Node.js は不要です。", "连接成功:{count} 条结果,耗时 {duration}ms": "接続成功:{count} 件、{duration}ms", "连接测试失败": "接続テストに失敗しました", "选择处理图片的上游提供商与模型。调用时会用内部 Key 经本站网关请求该模型,协议转换、重试与故障转移全部复用网关。": "画像を処理する上流プロバイダーとモデルを選択します。呼び出し時は内部 Key でこのゲートウェイ経由でモデルにリクエストし、プロトコル変換・再試行・フェイルオーバーはすべてゲートウェイを再利用します。", "选择安装目标、运行时与调用用的 API Key。Skill 包与密钥只写入所选客户端的本机目录。": "インストール先、ランタイム、呼び出し用 API Key を選択します。Skill パッケージとキーは選択したクライアントのローカルディレクトリにのみ書き込まれます。", "选择已有目录,图片只会写入此目录及其子目录": "既存フォルダーを選択。画像はそのフォルダーと配下にのみ保存します", "选择目录": "フォルダーを選択", "选择要从中移除的客户端,未勾选的客户端保持不变。": "削除するクライアントを選択します。チェックしないクライアントは変更されません。", "选择要写入 MCP 配置的客户端。配置只动本服务那一项,客户端原有的其它 MCP 服务保持不变。": "MCP 設定を書き込むクライアントを選択します。このサービスの項目だけを変更し、既存の他の MCP サービスはそのまま残します。", "配置搜索与抓取所使用的上游提供商。调用方不再传递 provider,运行时始终使用这里保存的设置。": "検索と取得に使う上流プロバイダーを設定します。呼び出し側は provider を渡さず、実行時は常にここに保存した設定を使います。", "默认只生成一张。空间不足时先拒绝请求,不消耗生图额度;只清理过期结果,已保存到本机目录的文件不受影响。": "標準では 1 枚生成します。保存容量が足りない場合はクレジット消費前に拒否します。期限切れの結果のみ自動削除し、ローカル保存済みファイルには影響しません。", " 到 {file}": " {file} へ", " 正文已改:{edited}(其余段用官方原文)。": " 本文変更あり:{edited}(残りの段は公式原文を使用)。", "(无 id)": "(id なし)", "/v1 拒绝无 Key 请求": "/v1 はキーなしのリクエストを拒否", "0 B": "0 B", "100%(默认)": "100%(デフォルト)", "<本机IP>": "<本機の IP>", "ALTCHA(本地验证)": "ALTCHA(ローカル認証)", "Access Key ID": "Access Key ID", "Agent2API 手机端": "Agent2API モバイル", "Android 应用(APK)": "Android アプリ(APK)", "Cline 上游按请求头判定「调用方是不是 Cline 自家产品」:X-CLIENT-TYPE: cline-sdk 是硬门槛(缺了它免费池模型一律 403),版本号与平台标识让请求更贴近官方客户端的形态。这里列出的是网关默认会发的头:改某一行的值 = 覆盖默认值(也可以新增默认清单之外的自定义头);把值清空保存 = 这个头不发送;在界面删掉被改过的行 = 回落默认值。改完点「保存」,下一个 Cline 请求立即生效。不懂某一行的含义就不要动它 —— 伪装头的价值在「与官方客户端逐字一致」。": "Cline のアップストリームはリクエストヘッダーで「呼び出し元が Cline 自社製品かどうか」を判定します:X-CLIENT-TYPE: cline-sdk は必須条件で(これが欠けると無料プールのモデルは一律 403)、バージョン番号とプラットフォーム識別子がリクエストを公式クライアントの形に近づけます。ここに並ぶのはゲートウェイがデフォルトで送信するヘッダーです:いずれかの行の値を変更 = デフォルト値を上書き(デフォルト一覧にないカスタムヘッダーの追加も可);値を空にして保存 = そのヘッダーを送信しない;画面で変更した行を削除 = デフォルト値にフォールバック。変更後は「保存」をクリックすると、次の Cline リクエストから即時有効です。各行の意味が分からない場合は触らないでください —— 偽装ヘッダーの価値は「公式クライアントとの逐語一致」にあります。", "Cline 伪装头": "Cline 偽装ヘッダー", "Cline 伪装头已刷新": "Cline 偽装ヘッダーを更新しました", "Docker 容器": "Docker コンテナ", "Endpoint": "Endpoint", "Endpoint 填 https://<账户ID>.r2.cloudflarestorage.com,Region 固定填 auto。": "Endpoint に https://<アカウントID>.r2.cloudflarestorage.com を、Region には auto を指定します。", "Endpoint 填 https://cos.ap-guangzhou.myqcloud.com,Region 填 ap-guangzhou(按实际地域改)。": "Endpoint に https://cos.ap-guangzhou.myqcloud.com を、Region には ap-guangzhou を指定します(実際のリージョンに合わせて変更)。", "Endpoint 填 https://obs.cn-north-4.myhuaweicloud.com,Region 填 cn-north-4(按实际地域改)。": "Endpoint に https://obs.cn-north-4.myhuaweicloud.com を、Region には cn-north-4 を指定します(実際のリージョンに合わせて変更)。", "Endpoint 填 https://oss-cn-hangzhou.aliyuncs.com,Region 填 cn-hangzhou(按实际地域改)。": "Endpoint に https://oss-cn-hangzhou.aliyuncs.com を、Region には cn-hangzhou を指定します(実際のリージョンに合わせて変更)。", "Endpoint 形如 http://192.168.1.10:9000(自建通常用 http);Region 一般填 us-east-1。": "Endpoint は http://192.168.1.10:9000 のような形式(自前ホストでは通常 http)で、Region は通常 us-east-1 です。", "Endpoint 留空即走 AWS 官方地址;Region 必须与桶所在区域一致。": "Endpoint を空欄にすると AWS 公式アドレスを使用します。Region はバケットのリージョンと一致させてください。", "KB": "KB", "Linux 安装包(deb)": "Linux パッケージ(deb)", "Logo 不能超过 2 MiB": "ロゴは 2 MiB 以下にしてください", "Logo 仅支持 PNG、JPG、WebP 图片": "ロゴには PNG、JPG、WebP 画像のみ使用できます", "Nextcloud": "Nextcloud", "OpenAI 新版 API 用 developer 角色取代 system 承载指令,新版 OpenAI SDK 与部分客户端发的对话里会出现 role 为 developer 的消息;不少 OpenAI 兼容上游(尤其是自定义提供商的透传路径)不认识这个角色,收到就报 400。开启本项后,网关在每次转发前把 developer 角色的消息改写为 system —— 两类角色在 OpenAI 语义上等价(OpenAI 自己的迁移指南也是这么映射的),改写不影响对话内容与语义;对本来就只认 system 的各家内置上游同样无害。默认开启;关掉后 developer 消息会原样发往上游,不认识它的上游会报「角色不存在」一类的错误。": "新版の OpenAI API は system に代わって developer ロールで指示を伝えるため、最新の OpenAI SDK や一部クライアントが送る会話には role が developer のメッセージが含まれます。多くの OpenAI 互換アップストリーム(特にカスタムプロバイダーの透過パス)はこのロールを認識せず、受け取ると 400 を返します。有効にすると、ゲートウェイは毎回の転送前に developer ロールのメッセージを system に書き換えます —— 両ロールは OpenAI のセマンティクス上で等価(OpenAI 自身の移行ガイドも同じマッピング)なので、書き換えは会話の内容と意味に影響しません。もともと system しか受け付けない内蔵アップストリームにとっても無害です。デフォルトは有効。無効にすると developer メッセージはそのまま送られ、このロールを認識しないアップストリームは「ロールが存在しない」系のエラーを返します。", "QQ 群 · Telegram": "QQ グループ · Telegram", "S3 兼容存储": "S3 互換ストレージ", "Safari 没有安装按钮:点底部的「分享」,选「添加到主屏幕」,再点「添加」。": "Safari にはインストールボタンがありません。下部の「共有」→「ホーム画面に追加」→「追加」の順にタップしてください。", "Secret Access Key": "Secret Access Key", "Token 读数量级": "Token の数値表記", "UTF-8 文本文件路径,留空用内置默认提示词(通用编码助手提示词,不含任何会被上游拦截的模板句)。只在「替换 / 追加」模式下生效,透传模式不读它。": "UTF-8 テキストファイルのパス。空欄なら内蔵のデフォルトシステムプロンプトを使用(汎用コーディングアシスタント用プロンプトで、アップストリームにブロックされるテンプレート文は含みません)。「置換 / 追加」モードでのみ有効で、パススルーモードでは読み込まれません。", "WebView / 浏览器内核": "WebView / ブラウザエンジン", "Windows 安装包(NSIS)": "Windows インストーラー(NSIS)", "Windows 服务": "Windows サービス", "ZCode 套餐池(Start Plan)通道每条请求都要消耗一个当次铸造的人机验证令牌(一次性,2 分钟过期),库存低于该值时界面自动补铸到它。默认 3 个。调大能吸收突发并发,但用不掉的令牌 2 分钟就过期作废,烧的是上游风控配额。可填 1–10。": "ZCode プランプール(Start Plan)経路の各リクエストは、その場で生成された CAPTCHA トークン(1 回限り、2 分で失効)を 1 個消費します。在庫がこの値を下回ると、UI がこの値まで自動補充します。既定は 3。大きくすると突発的な同時実行を吸収できますが、使い切れなかったトークンは 2 分で失効し、上流のリスク管理クォータを消耗します。1〜10 を指定できます。", "ZCode「套餐池(Start Plan)」通道的每条推理请求都要附一个当次铸造的阿里云无痕验证令牌(一次性、约 2 分钟过期):令牌由界面里的铸造守卫静默铸好、推给网关入池,转发时逐条取用。这里的三个值管的是补货节奏:①「库存目标」= 库存低于它守卫才补铸、补到它为止,默认 3 个;②「轮询间隔」= 守卫多久看一次库存,默认 2500 毫秒,只影响反应速度(库存够用时不会多铸);③「单轮铸造上限」= 发现缺货时一轮最多铸几个,默认 1 个(连铸之间固定隔 500 毫秒)。请求密集、请求日志里连续出现「需要人机验证令牌」的 503 时,把目标与单轮上限适当调大、轮询调快,能让池子跟得上消耗 —— 代价是上游(阿里云)对铸造频率有风控,铸得越多越快越容易触发限流,且用不掉的令牌 2 分钟即过期作废、等于白烧配额,所以建议小步调。保存后对下一轮补货立即生效,不用重启。": "ZCode「プランプール(Start Plan)」経路の各推論リクエストには、その場で生成された Aliyun インビジブル CAPTCHA トークン(1 回限り、約 2 分で失効)を添える必要があります:トークンは UI 内のミントガードが静かに生成してゲートウェイのプールへ入れ、転送時にリクエストごとに取り出します。ここの 3 つの値は補充のリズムを管理します:①「在庫目標」= 在庫がこの値を下回ったときだけこの値まで補充(既定 3);②「ポーリング間隔」= ガードが在庫を確認する間隔、既定 2500 ミリ秒(反応速度にのみ影響。在庫が十分なら余計に生成しません);③「1 ラウンドの生成上限」= 在庫切れを検出した 1 ラウンドで生成する最大数、既定 1(連続生成の間は固定 500 ミリ秒)。リクエストが密で、リクエストログに「CAPTCHA トークンが必要」の 503 が続く場合は、目標と 1 ラウンド上限を適度に上げ、ポーリングを速めるとプールが消費に追いつきます —— ただし上流(Aliyun)は生成頻度にリスク管理があり、多く速く生成するほど制限に触れやすく、使い切れなかったトークンは 2 分で失効してクォータの無駄になるため、小刻みな調整を推奨します。保存すると次の補充ラウンドから即時反映、再起動不要。", "beta 版": "beta 版", "iOS 应用": "iOS アプリ", "models.dev 元数据": "models.dev メタデータ", "models.dev 元数据已更新({count} 条)": "models.dev メタデータを更新しました({count} 件)", "models.dev 是一个开源的模型资料库(社区维护),这里用它补齐「上游没告诉我们」的模型能力:上下文窗口、最大输出、工具调用、图片、视频、是否支持思考,以及这个模型认识哪些思考档位。优先级是:你在「模型能力」里手工改的值 > 上游清单自己声明的值 > models.dev 的值 —— 它只填上游没声明的空位,从不推翻上游已声明的。网关随包内嵌了一份快照,所以离线、首次启动、访问不通时也有数据;开启时会按「模型目录刷新」任务的间隔联网更新(同一轮里一并刷新,也可在这里立即刷新)。关闭只停联网刷新,已经拿到的数据继续用。": "models.dev はコミュニティが維持するオープンソースのモデルデータベースです。上流が教えてくれなかった情報(コンテキスト長、最大出力、ツール呼び出し、画像、動画、推論の可否、およびそのモデルが実際に受け付ける推論レベル)をここで補います。優先順位は「モデル能力」で手動変更した値 > 上流カタログの宣言値 > models.dev の値 —— 上流が宣言した値を覆すことはなく、空欄だけを埋めます。スナップショットを同梱しているため、オフライン・初回起動・通信不可でもデータがあります。有効時は「モデルカタログ更新」タスクの間隔でオンライン更新します(同じ回でまとめて、またはここで即時)。オフにするとオンライン更新だけが止まり、取得済みのデータは引き続き使われます。", "models.dev 模型元数据": "models.dev モデルメタデータ", "systemd 服务": "systemd サービス", "{count} 条": "{count} 件", "{count} 条 · 来自{origin}{at} · {mode}": "{count} 件 · 出典: {origin}{at} · {mode}", "{count} 条规则,按列表顺序执行": "{count} 件のルールを一覧順に実行", "{d} 天 {h} 小时": "{d} 日 {h} 時間", "{h} 小时 {m} 分钟": "{h} 時間 {m} 分", "{label} 提示词文件": "{label} のシステムプロンプトファイル", "{label} 的提示词模式": "{label} のシステムプロンプトモード", "{label}({message})": "{label}({message})", "{lines} 行、{chars} 字符(按当前草稿计)": "{lines} 行、{chars} 文字(現在の下書きで算出)", "{minutes} 分钟": "{minutes} 分", "{models} 同时出现在两块设置里,会按「辅助识图」处理。想改的话,把其中一个从这边的模型名单里去掉。": "{models} が両方のブロックに入っています。この場合は「補助読み取り」で処理されます。変更するには、どちらかのモデル一覧から外してください。", "{mode}生效:上游收到的 system 来自{source}{lines}。": "{mode}が有効:アップストリームが受け取る system の出所は{source}{lines}。", "{m} 分钟": "{m} 分", "{noun}不能为空(可填 {min}–{max})": "{noun}は空にできません({min}–{max} を入力できます)", "{noun}必须在 {min}–{max} 之间(当前填的是 {text})": "{noun}は {min}–{max} の範囲で入力してください(現在の入力値:{text})", "{noun}必须是整数": "{noun}は整数でなければなりません", "{n} B": "{n} B", "{n} GB": "{n} GB", "{n} KB": "{n} KB", "{n} MB": "{n} MB", "{n} 个头将随每个 Cline 请求发送": "{n} 個のヘッダーが各 Cline リクエストとともに送信されます", "{n} 台可选 · 点此切换": "{n} 台 · タップして切り替え", "{n} 项 · {shown} 显示": "{n} 項目 · {shown} 表示", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "メニュー {total} 件 · 表示 {shown} · 非表示 {hidden} · グループ {groups} 件", "{way}的适用模型": "{way}の対象モデル", "⚠️ 密钥警告": "⚠️ キーの警告", "⚠️ 已关闭「{label}」的机器人校验": "⚠️「{label}」のボット対策を無効にしました", "⚠️ 机器人校验已关闭": "⚠️ ロボット検証をオフにしました", "✅ Cline 伪装头已保存": "✅ Cline 偽装ヘッダーを保存しました", "✅ models.dev 模型元数据已开启": "✅ models.dev モデルメタデータを有効にしました", "✅ 云同步设置已保存": "✅ クラウド同期の設定を保存しました", "✅ 会话图片压缩已开启": "✅ 画像圧縮を有効にしました", "✅ 出站指纹脱敏已开启": "✅ フィンガープリントのマスキングをオンにしました", "✅ 密码已修改,其他设备的登录已失效": "✅ パスワードを変更しました。他の端末のログインは無効になりました", "✅ 导入完成:{summary}": "✅ インポート完了:{summary}", "✅ 已上传到云端({size})": "✅ クラウドにアップロードしました({size})", "✅ 已为「{label}」装上网关自带提示词": "✅ 「{label}」にゲートウェイ内蔵のシステムプロンプトを適用しました", "✅ 已从云端恢复{note}": "✅ クラウドから復元しました{note}", "✅ 已保存:{label}": "✅ 保存しました:{label}", "✅ 已保存:{label} {value}": "✅ 保存しました:{label} {value}", "✅ 已保存:指定错误码直接换号": "✅ 保存しました:指定エラーコードで直接アカウント切替", "✅ 已保留 {days} 天": "✅ {days} 日間保持しました", "✅ 已保留 {days} 天,超出部分已清理": "✅ {days} 日間保持し、超過分を削除しました", "✅ 已加密备份 {n} 张表({size}),包含恢复密钥:{file}": "✅ {n} テーブルを暗号化バックアップしました({size})。復元鍵を含む:{file}", "✅ 已备份 {n} 张表({size})到 {file}": "✅ {n} テーブル({size})を {file} へバックアップしました", "✅ 已导入账号密钥,请继续下载": "✅ アカウントキーをインポートしました。ダウンロードを続けてください", "✅ 已导出 {count} 个账号{note}{file}": "✅ {count} 件のアカウントをエクスポートしました{note}{file}", "✅ 已开启「{label}」的机器人校验": "✅「{label}」のボット対策を有効にしました", "✅ 已恢复 {n} 张表{note}": "✅ {n} テーブルを復元しました{note}", "✅ 已改用 k / M / B 缩写": "✅ k / M / B の略記に切り替えました", "✅ 已改用本地量级词(万 / 亿式)": "✅ ローカル量級語(万 / 億式)に切り替えました", "✅ 已自动创建网关 Key「默认」(可在「网关 Key」页查看)": "✅ ゲートウェイキー「デフォルト」を自動作成しました(「ゲートウェイキー」ページで確認できます)", "✅ 已解除内容拦截降级": "✅ コンテンツブロックのフォールバックを解除しました", "✅ 开发者角色兼容已开启": "✅ developer ロール互換を有効にしました", "✅ 指纹脱敏设置已保存": "✅ フィンガープリントのマスキング設定を保存しました", "✅ 数量上限已设为 {count} 条": "✅ 件数上限を {count} 件に設定しました", "✅ 数量上限已设为 {count} 条,超出部分已清理": "✅ 件数上限を {count} 件に設定し、超過分を削除しました", "✅ 机器人校验已开启": "✅ ロボット検証をオンにしました", "✅ 第三方模型回答完自动折叠过程已开启": "✅ サードパーティモデルの回答後の工程の自動折りたたみを有効にしました", "✅ 设置已保存,应用正在重启…": "✅ 設定を保存しました。アプリを再起動しています…", "✅ 调试模式已关闭": "✅ デバッグモードをオフにしました", "✅ 调试模式已开启": "✅ デバッグモードをオンにしました", "✅ 路由设置已保存": "ルーティング設定を保存しました", "✅ 连接成功:{path}": "✅ 接続に成功しました:{path}", "、{n} 个自定义提供商": "、カスタムプロバイダー {n} 件", "。事件日志、请求明细、调试报文与面板登录态保持不变。替换前会自动把当前业务数据备份到配置目录的 backups/ 下。": "。イベントログ・リクエスト明細・デバッグ通信記録・パネルのログイン状態は変更されません。置き換え前に現在の業務データを設定ディレクトリの backups/ に自動でバックアップします。", "「{label}」将从 {previous} 天改为 {days} 天。": "「{label}」を {previous} 日から {days} 日へ変更します。", "「{label}」将从 {previous} 条改为 {count} 条。": "「{label}」を {previous} 件から {count} 件に変更します。", "「{label}」改用内置默认提示词": "「{label}」を内蔵のデフォルトシステムプロンプトに切り替えました", "「{label}」的提示词文件已更新": "「{label}」のシステムプロンプトファイルを更新しました", "「{label}」的提示词正文已更新": "「{label}」のシステムプロンプト本文を更新しました", "「{label}」的模式改为「{mode}」": "「{label}」のモードを「{mode}」に変更しました", "「{label}」的网关自带提示词已改回官方原文": "「{label}」のゲートウェイ内蔵システムプロンプトを公式原文に戻しました", "「{label}」的网关自带提示词正文已更新": "「{label}」のゲートウェイ内蔵システムプロンプトの本文を更新しました", "「模型管理」里每个能力的来源标记(上游 / models.dev / 已覆盖)读的就是这份数据;映射弹窗的思考档位下拉也按这里的数据只列该模型真实认识的档位。": "「モデル管理」の各能力の出典表示(上流 / models.dev / 上書き済み)はこのデータを読んでいます。マッピングダイアログの推論レベル選択も、ここに基づいてそのモデルが実際に受け付けるレベルだけを並べます。", "「用哪份提示词」本来是按上游分别决定的事,所以每家可以有自己的模式、提示词文件与正文:不在这里列出的提供商一律沿用上面那份默认设置,「跟随默认」把这一家取消、回到默认。带「网关自带」那一行的家(目前是 ZCode 两家)默认就列在这里 —— 那一段是网关自己装上去的文本,不来自客户端也不来自提示词文件,默认开启、可以关掉,也可以改它的正文(改过的那一段以你的文本为准);关掉后还能不能通过上游校验,取决于上游当下的口径,行内说明了实测依据。「模式 / 提示词文件 / 正文」管的是客户端自己的 system 怎么处理,与那个开关是两件事。": "「どのシステムプロンプトを使うか」は本来アップストリームごとに決める話なので、各プロバイダーが独自のモード・システムプロンプトファイル・本文を持てます:ここに表示されないプロバイダーはすべて上記のデフォルト設定を引き継ぎ、「デフォルトに従う」でそのプロバイダーの設定を解除してデフォルトに戻します。「ゲートウェイ内蔵」の行があるプロバイダー(現在は ZCode の 2 社)はデフォルトでここに表示されます —— その部分はゲートウェイが自ら組み込むテキストで、クライアントからもシステムプロンプトファイルからも来ません。デフォルトはオンで、オフにもでき、本文も変更できます(変更した部分はあなたのテキストが優先)。オフにした後でアップストリームの検証を通過できるかは、アップストリームの現時点の基準次第です(行内に実測の根拠を記載)。「モード / システムプロンプトファイル / 本文」はクライアント自身の system をどう扱うかの設定で、あのスイッチとは別物です。", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "「設定」は固定項目のため、そのグループはまとめて非表示にできません。他のメニューは個別に非表示にできます", "「请求日志」页的逐条请求记录,默认 99999 天(近似全量保留),可填 1–99999 天。": "「リクエストログ」ページのリクエストごとの記録。既定は 99999 日(ほぼ全量保持)で、1〜99999 日を指定できます。", "「请求日志」页的逐条请求记录,默认 99999 天,可填 1–99999 天;同时受数量上限限制。": "「リクエストログ」ページのリクエストごとの記録。既定は 99999 日で、1–99999 日を指定できます。件数上限も適用されます。", "一个 .a2ab 文件即可跨机器恢复,账号、网关 Key、GitHub 令牌与云同步凭据无需另行复制密钥。插件程序与库外文件不在整库备份范围。": "1 つの .a2ab ファイルで別端末に復元でき、アカウント、ゲートウェイ Key、GitHub トークン、クラウド同期認証情報の鍵を別途コピーする必要はありません。プラグインのプログラムとデータベース外のファイルは対象外です。", "一段内置装配": "内蔵の定型ブロック", "三档数据各自独立计时,超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件;请求日志是网关每次转发到上游的逐条记录;按天聚合供报表页的热力图与按天趋势使用。请求日志与按天聚合默认 99999 天(约 274 年,效果上等于全量保留),事件日志默认 30 天。把某一档改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。三档的可填范围均为 1–99999 天。": "3 種類のデータはそれぞれ独立して計時され、保存日数を超えた部分は削除されます:イベントログはログイン、アカウント切替、429 切替といったシステムイベント;リクエストログはゲートウェイがアップストリームへ転送するたびの記録;日次集計はレポートページのヒートマップと日次トレンドに使われます。リクエストログと日次集計の既定は 99999 日(約 274 年、実質的に全量保持)、イベントログの既定は 30 日です。いずれかを小さくして(例:30 日→7 日)保存すると、超えた履歴データは即座に削除され、元に戻せません。大きくするか変更しない場合は何も削除されません。3 つとも指定できる範囲は 1〜99999 日です。", "三段各自成块,所以分开编辑": "3 つの段はそれぞれ独立したブロックになるため、分けて編集します", "上传": "アップロード", "上传 Logo": "ロゴをアップロード", "上传中…": "アップロード中…", "上传内容含加密后的账号凭证与网关配置": "アップロード内容には暗号化されたアカウント認証情報とゲートウェイ設定が含まれます", "上传到云端": "クラウドへアップロード", "上传失败:{message}": "アップロードに失敗しました:{message}", "上次同步:{time}({action})": "前回の同期:{time}({action})", "上次成功刷新的结果(存在本机数据库里)": "前回の更新に成功した結果(ローカルデータベースに保存)", "上游 CLI 版本": "上流 CLI のバージョン", "上游客户端版本": "上流クライアントのバージョン", "上游按": "アップストリームは", "上游按「结构」校验身份:三段必须各自成块,所以这里分开编辑三段(不能合成一段)。动态段里的运行值写成占位符,发请求时才替换:{cwd} 工作目录、{platform} 平台、{shell} shell、{os_version} 系统版本、{git} 是否 git 仓库、{provider} 提供方标识、{model} 模型名。清空某一段 = 那一段恢复官方原文。第三段发出时前面会自带一个空行(官方形状)。": "アップストリームは「構造」で身元を検証します:3 つの段はそれぞれ独立したブロックとして並ぶ必要があるため、ここでは 3 つの段を別々に編集します(1 段にまとめることはできません)。動的段の実行値はプレースホルダーとして記述し、リクエスト送信時に置換されます:{cwd} 作業ディレクトリ、{platform} プラットフォーム、{shell} シェル、{os_version} OS バージョン、{git} git リポジトリかどうか、{provider} 提供元識別子、{model} モデル名。ある段を空にする = その段は公式原文に戻ります。第 3 段は送信時に先頭へ空行が 1 つ自動的に付きます(公式の形状)。", "上游未配置": "上流が未設定", "上游模型繁忙时会先排队(回一句「建议 N 秒后再来」):网关等一会儿再发同一请求,最多等几次。默认 2 次,可填 0–10;填 0 表示不等待,排队直接返回 503 并说明「不是登录态或额度问题」。": "アップストリームのモデルが混雑していると、まずキューイングされます(「N 秒後に再試行することをおすすめします」と返ってくる形で):ゲートウェイはしばらく待ってから同じリクエストを再送し、最大で数回まで待ちます。デフォルトは 2 回で、0–10 を入力できます。0 を入力すると待たずに、キューイングが直接 503 を返し「ログイン状態やクォータの問題ではない」と説明します。", "上游用「逐字精确匹配」的方式审核请求体(不是语义审核):客户端注入的固定模板句、计费头字段名、以及某些裸错误码出现在报文里就会整单拦截,返回 400。开启本项后,网关在每次转发前改写这些指纹 —— 表头键值整段删除,承载语义的模板句只换一个词(如 official CLI for Claude → official CLI tool for Claude),对话内容与语义都不受影响。规则集是内置的,不需要也无法维护词表。关掉本项后客户端模板会原样发往上游,可能重新出现模板句被误拦的报错。": "アップストリームはリクエスト本文を「逐語完全一致」で審査します(意味的な審査ではありません):クライアントが注入する固定テンプレート文、課金ヘッダーのフィールド名、および一部の裸のエラーコードがメッセージに現れると、リクエスト全体がブロックされ 400 が返ります。本項目をオンにすると、ゲートウェイは転送のたびにこれらのフィンガープリントを書き換えます —— ヘッダーのキーと値は丸ごと削除し、意味を担うテンプレート文は 1 語だけ置き換えます(例:official CLI for Claude → official CLI tool for Claude)。会話の内容と意味は一切影響を受けません。ルールセットは内蔵で、単語リストを保守する必要もできません。本項目をオフにするとクライアントのテンプレートがそのままアップストリームへ送られ、テンプレート文が誤ってブロックされるエラーが再発する可能性があります。", "上游请求四个阶段各自的等待上限(秒,1~3600):①「连接中超时」= 建立 TCP/TLS 连接或代理隧道的最大等待,默认 30 秒;②「等待响应超时」= 请求发出后等上游响应头的最大时间,默认 300 秒 —— 网关请求上游恒带 stream,响应头在 SSE 建立时就到达,与模型思考多久无关;③「流式响应空闲超时」= 流式响应相邻两块数据之间允许的最大空闲,收到新数据即重新计时,默认 300 秒 —— 上游长时间不吐数据即判定连接僵死并断开;④「非流式响应超时」= 读完整份非流式响应体的总预算(一次性计时、不重置),默认 300 秒。四项都是「等待上限」,只要数据还在来,正常的流式回答就一直往下传。保存后对下一个请求立即生效,不用重启。": "アップストリームリクエストの 4 段階それぞれの待機上限(秒、1~3600):①「接続タイムアウト」= TCP/TLS 接続またはプロキシトンネルを確立する最大待機時間、デフォルト 30 秒;②「応答待ちタイムアウト」= リクエスト送出後、アップストリームのレスポンスヘッダーを待つ最大時間、デフォルト 300 秒 —— ゲートウェイはアップストリームへのリクエストに常に stream を付け、レスポンスヘッダーは SSE の確立時点で到着するため、モデルがどれだけ考えるかとは無関係です;③「ストリーミング応答アイドルタイムアウト」= ストリーミング応答の隣接する 2 つのデータ間に許される最大アイドル時間で、新しいデータを受信すると計時がリセットされます、デフォルト 300 秒 —— アップストリームが長時間データを出さなければ接続が死んだと判定して切断します;④「非ストリーミング応答タイムアウト」= 非ストリーミング応答本文全体を読み切る総予算(一度だけ計時、リセットなし)、デフォルト 300 秒。4 項目はいずれも「待機上限」で、データが流れ続けている限り、正常なストリーミング応答はそのまま流れ続けます。保存後は次のリクエストから即時有効で、再起動は不要です。", "上游调试报文": "アップストリームのデバッグペイロード", "上移": "上へ", "上移规则": "ルールを上へ移動", "下次自动重试:{time}": "次の自動再試行:{time}", "下游正文": "ダウンストリーム本文", "下移": "下へ", "下移规则": "ルールを下へ移動", "下载失败:{message}": "ダウンロードに失敗しました:{message}", "不一致": "不一致", "不做会话识别,每条请求都重新按策略选路。": "セッションを識別せず、リクエストごとに戦略に従って選び直します。", "不做图片兼容": "画像互換処理を行わない", "不可用": "利用不可", "与网关同源的面板;完整管理功能在桌面端": "ゲートウェイと同一オリジンのパネルです。詳細な管理はデスクトップ版で行います", "两张开关分别管桌面端(应用内窗口,也包含开启局域网访问后从其他设备访问的那份面板)与网页端(Docker / 服务端自托管的浏览器面板)。默认都开启;桌面端只在本机使用、嫌验证耗时可以关掉,网页端暴露在网络上,建议保持开启。": "2 つのスイッチはデスクトップ側(アプリ内ウィンドウ。LAN アクセス有効時に他端末から開くパネルも含む)と Web 側(Docker / サーバーが配信するブラウザパネル)を個別に制御します。既定はどちらも有効です。ローカル専用で認証の待ち時間が気になる場合はデスクトップ側を切っても構いませんが、ネットワークに露出する Web 側は有効のままを推奨します。", "两次输入的备份密码不一致": "バックアップのパスワードが一致しません", "两次输入的新密码不一致": "新しいパスワードが一致しません", "两次重试之间的等待时间,两项共用,可填 0–300 秒。": "2 回のリトライ間の待機時間。2 項目で共用し、0–300 秒を入力できます。", "两种方式不会互相自动切换。": "2つの方式が自動で切り替わることはありません。", "两组设置分别用于桌面端托管的网页管理面板与网页端(Docker / 服务端)的浏览器面板。是否可被其他设备访问取决于网络访问与防火墙设置,不限于局域网。两端默认都开启人机验证,建议保持开启。": "2 つの設定グループは、デスクトップアプリが配信する Web 管理パネルと、Docker / サーバーが配信するブラウザーパネルにそれぞれ適用されます。他の端末からのアクセスはネットワークアクセスとファイアウォールの設定で決まり、LAN に限定されません。人間であることの確認はどちらも既定で有効です。有効のままにすることを推奨します。", "为了安全,开启前需要先注册一个": "安全のため、オンにする前に", "主进程未返回启动设置,请更新桌面端后重试": "メインプロセスが起動設定を返しませんでした。デスクトップアプリを更新してから再試行してください", "主进程桥不可用": "メインプロセスのブリッジを利用できません", "主题": "テーマ", "事件日志": "イベントログ", "事件日志保留天数": "イベントログの保存日数", "云同步": "クラウド同期", "产品名": "製品名", "产品名不能包含斜杠或版本号,请改用前缀匹配": "製品名にスラッシュやバージョン番号は含められません。前方一致を使用してください。", "人机验证": "人間確認", "人机验证失败": "人間確認に失敗しました", "人机验证已完成": "人間確認が完了しました", "人机验证还在计算,请稍候": "人間確認を計算中です。しばらくお待ちください", "仅在同一会话、同一问题和相同权限范围内复用;追问新细节会重新识读。缓存只存在本机内存。": "同じ会話・質問・権限範囲内でのみ結果を再利用します。新しい詳細を尋ねると再度読み取ります。キャッシュはローカルメモリにのみ保持されます。", "仅在账号、配置、签到或余额等实质内容变化时上传;导出时间或查询时间单独变化不会触发上传。": "アカウント、設定、チェックイン結果、残高などの実質的な内容が変わった場合のみアップロードします。エクスポート時刻や照会時刻だけの変更ではアップロードしません。", "仅处理本次转发副本,不修改客户端选择,也不删除当前或历史图片。": "今回転送するコピーのみを処理します。クライアントの選択は変更せず、現在および過去の画像も削除しません。", "仅影响面板登录与注册,不影响 API Key 调用。保存后生效,已登录会话不会退出。": "パネルのログインと登録にのみ適用され、API キーによる呼び出しには影響しません。保存後すぐに有効になり、既存のセッションはログアウトされません。", "仅本机": "この端末のみ", "仅用现有数据、不联网刷新": "既存データのみ使用、オンライン更新なし", "从云端恢复": "クラウドから復元", "从桌面图标启动,全屏、无地址栏。想卸载:长按图标删除,或清除浏览器站点数据。": "ホーム画面のアイコンから起動します。全画面・アドレスバーなし。削除するにはアイコンを長押しして削除するか、ブラウザのサイトデータを消去してください。", "优先使用当前路由内的视觉模型": "現在のルート内の視覚モデルを優先", "优先在当前路由内找可用的视觉模型,找不到就用 {model} 直接回答,不再回到原模型。": "現在のルート内で使える視覚モデルを優先し、なければ {model} が元のモデルの代わりに直接回答します。", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "グループ・順序・表示設定を既定に戻します。作成したグループは削除されます(メニューは失われません)。", "会话图片压缩设置已刷新": "画像圧縮の設定を再読み込みしました", "位置": "場所", "位置与端口": "場所とポート", "使用 Rust 正则语法,保存时由后端校验;不支持环视和反向引用。": "Rust の正規表現構文を使用し、保存時にバックエンドで検証します。先読み・後読みと後方参照は使用できません。", "使用中文单位(亿 / 万)": "中国語の単位を使う(億 / 万)", "使用本地量级词(万 / 亿式)": "ローカル量級語(万 / 億式)を使用", "使用默认值": "既定値を使用", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "サイドバーのレイアウトモジュールが読み込まれていません(ui/sidebar-layout.js を app.js より前に読み込む必要があります)。", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "サイドバーにメニューが表示されていません。「設定 → 表示 → サイドバーのメニュー」で必要な項目をオンにしてください。", "侧边栏菜单": "サイドバーのメニュー", "保存上游原始报文(请求头、请求体、响应头、响应体)": "アップストリームの生メッセージを保存(リクエストヘッダー、リクエストボディ、レスポンスヘッダー、レスポンスボディ)", "保存单独配置": "モデル別設定を保存", "保存后以这里的文本为准": "保存後はここのテキストが優先されます", "保存后对下一轮补货立即生效,不用重启。守卫跑在应用界面里:轻量模式关窗销毁界面期间无法铸造,走套餐池(Start Plan)通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。": "保存すると次の補充ラウンドから即時反映され、再起動は不要です。ガードはアプリの UI 内で動作します:軽量モードでウィンドウを閉じて UI が破棄されている間はトークンを生成できず、プランプール(Start Plan)経路のリクエストは理由付きで 503 としてリクエストログに記録されます。UI を開き直すと自動的に復旧します。", "保存后应用将重启以生效。": "保存後、有効にするためアプリが再起動します。", "保存后状态读取立即生效。后台不会自动生成令牌;需要人机验证时,在账号的「套餐明细」中主动开始验证。模型请求免验证时无需保持界面打开。": "保存後、状態取得の設定はすぐに反映されます。トークンは自動生成しません。認証が必要な場合はアカウントの「プラン詳細」で開始してください。モデルリクエストが認証不要の場合、画面を開いたままにする必要はありません。", "保存后立即生效,不用重启:策略与粘性作用于**下一次**转发的选路,进行中的请求不受影响。": "保存するとすぐ反映、再起動不要:戦略と粘着は**次の**転送の選択から効き、処理中のリクエストには影響しません。", "保存后立即生效,不用重启;次数用尽仍失败时,错误原样返回给客户端。": "保存後は即時有効で再起動は不要です。回数を使い切ってもなお失敗する場合、エラーはそのままクライアントへ返されます。", "保存后立即生效,不用重启;超时按上游失败处理(计入请求日志的「错误」列,并按「请求重试」的设置决定是否重试)。": "保存後は即時有効で再起動は不要です。タイムアウトはアップストリームの失敗として扱われます(リクエストログの「エラー」列に計上され、「リクエストリトライ」の設定に従ってリトライするかどうかが決まります)。", "保存后立即生效:保留天数和数量上限同时生效,调小任一项会立即清理超出的历史数据,且不可恢复。": "保存後すぐに有効になります。保存日数と件数上限の両方が適用され、いずれかを減らすと超過した履歴データが直ちに削除されます。元に戻すことはできません。", "保存后立即生效:改小保留天数会立刻删除超出的历史数据,且不可恢复。": "保存後は即時有効:保存日数を小さくすると超過した履歴データがすぐに削除され、元に戻せません。", "保存在当前网关,登录页也会公开显示。不会更改安装包、快捷方式、系统托盘图标或软件版本信息。": "現在のゲートウェイに保存され、ログイン画面にも公開表示されます。インストーラー、ショートカット、システムトレイのアイコン、ソフトウェアのバージョン情報は変更しません。", "保存并重启": "保存して再起動", "保存设置": "設定を保存", "保持当前路由范围,不跳到其他路由组。": "現在のルート範囲を保ち、他のルートグループには移りません。", "保活换行丢弃": "keepalive 改行の除去", "保留原图和对话,由视觉模型直接回答本次请求。": "元の画像と会話を保持し、視覚モデルが今回のリクエストに直接回答します。", "保留原图,选择视觉模型": "元の画像を保持し、視覚モデルを選択", "保留图片中的文字、代码、数字、布局与状态。识读失败就停止,不删图后继续回答。": "画像内の文字、コード、数値、配置、状態を保持します。読み取りに失敗した場合は停止し、画像を削除して回答を続けることはありません。", "保留天数已刷新": "保存日数を更新しました", "保留旧版配置兼容,当前不会自动连铸。每次点击「开始验证」只取得一枚令牌,失败或取消后停止。": "旧設定との互換性のために保持します。トークンの自動連続生成は行いません。「認証を開始」を押すたびにトークンを一つ取得し、失敗またはキャンセルで停止します。", "保留草稿并读取最新设置": "下書きを保持して最新設定を読み込む", "修改密码": "パスワード変更", "修改密码需要输入当前密码;修改成功后,其他设备 / 浏览器上的登录会立即失效,当前这条会话保留。": "パスワード変更には現在のパスワードが必要です。成功すると他の端末・ブラウザのログインは即座に無効になり、このセッションだけが残ります。", "值": "値", "值与默认值相同的行不占覆盖(存的是「改过的键」,不是全量配置);值留空保存表示这个头不发送,删除改过的行表示回落默认值。改完立即生效,不用重启。": "デフォルト値と同じ行は上書きとして扱われません(保存されるのは「変更されたキー」であり、全量の設定ではありません)。値を空にして保存するとそのヘッダーは送信されず、変更した行を削除するとデフォルト値にフォールバックします。変更後は即時有効で、再起動は不要です。", "值(留空 = 不发送)": "値(空欄 = 送信しない)", "停止并说明原因": "停止して理由を表示", "像素": "px", "允许其他设备访问前,需要设置面板管理员账号与密码。注册完成后会继续开启流程并重启应用。": "他の端末からのアクセスを許可する前に、パネル管理者のユーザー名とパスワードを設定してください。登録完了後に有効化を続行し、アプリを再起動します。", "允许其他设备访问网关": "他の端末からゲートウェイへのアクセスを許可", "允许局域网内的设备访问网关": "LAN 内のデバイスにゲートウェイへのアクセスを許可", "允许无 Key 裸跑": "キーなし実行を許可", "允许浏览器里的页面跨来源调用网关(/v1/*)": "ブラウザー内のページからクロスオリジンでゲートウェイを呼び出すことを許可(/v1/*)", "允许的域名": "許可するホスト名", "先发送原图,明确拒图后补救": "まず元の画像を送信し、明確に拒否された場合のみ互換処理", "先把图片交给视觉模型读一遍,再让原模型结合读到的内容回答。": "まず視覚モデルに画像を読ませ、読み取った内容を踏まえて元のモデルが回答します。", "全局配置": "グローバル設定", "全部已配置": "すべて設定済み", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 中,加密密钥单独保存在库外。跨机器备份请使用「整库备份 / 恢复」,不要只复制数据库。更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "アカウント、ログ、リクエスト記録、デバッグデータ、設定は agent2api.db に保存され、暗号鍵は別に保存されます。端末間の移行にはデータベースだけをコピーせず、全体バックアップ / 復元を使用してください。保存先を変更するには AGENT2API_PROXY_HOME を設定して再起動します。", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 这一个 SQLite 数据库里。备份时只需拷贝这个文件;更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "すべてのデータ(アカウント、イベントログ、リクエスト記録、デバッグメッセージ、設定)は、設定ディレクトリ配下の agent2api.db という単一の SQLite データベースにまとめて保存されます。バックアップ時はこのファイルをコピーするだけで済みます。保存場所を変更する場合は、環境変数 AGENT2API_PROXY_HOME を設定してからプログラムを再起動してください。", "全部角色": "すべてのロール", "全部角色沿用原有行为,包含思考内容和工具参数;指定角色时只改消息正文,未选角色及思考内容、工具参数保持原样。": "すべてのロールでは、推論内容とツール引数を含む従来の動作を維持します。ロールを指定するとメッセージ本文のみを書き換え、未選択のロール、推論内容、ツール引数は変更しません。", "共享视觉模型已变更,请重新确认并保存,避免把图片交给未经确认的模型。": "共有の視覚モデルが変更されました。未確認のモデルに画像を送信しないよう、再度確認して保存してください。", "共用设置:{providers}": "共有設定:{providers}", "关闭后不再提供网页管理面板,本机桌面程序仍可正常管理;已开启的 API 转发不受影响。": "無効にすると Web 管理パネルの配信を停止します。本機のデスクトップアプリでは引き続き管理でき、API 転送には影響しません。", "关闭后手动上传 / 下载也会被拒绝。": "オフにすると手動のアップロード / ダウンロードも拒否されます。", "关闭后网关只监听 127.0.0.1,其他设备将无法直接连接,网页管理面板也会一并关闭。已配置的网关 Key 与账号不受影响。": "無効にすると、ゲートウェイは 127.0.0.1 のみで待ち受け、他の端末から直接接続できなくなります。Web 管理パネルも無効になります。既存のゲートウェイキーとアカウントには影響しません。", "关闭后网关回到只监听 127.0.0.1,局域网内的设备将无法继续访问;已配置的网关 Key 与账号都不受影响。": "オフにするとゲートウェイは 127.0.0.1 のみの待ち受けに戻り、LAN 内のデバイスはアクセスできなくなります。設定済みのゲートウェイキーとアカウントは影響を受けません。", "关闭后,管理界面不再从局域网提供,只有本机的桌面程序可以管理;已开启的 API 转发不受影响。": "オフにすると、管理画面は LAN に公開されなくなり、本機のデスクトップアプリからのみ管理できます。有効になっている API 転送は影響を受けません。", "关闭局域网访问": "LAN アクセスをオフにする", "关闭并重启": "閉じて再起動", "关闭思考": "推論を無効化", "关闭窗口即退出程序,后台转发随之中断": "ウィンドウを閉じるとプログラムが終了し、バックグラウンドの転送も中断されます", "关闭窗口时最小化到托盘": "ウィンドウを閉じたときはトレイに最小化", "关闭窗口时程序不退出,转发继续在后台运行;退出请用托盘菜单": "ウィンドウを閉じてもプログラムは終了せず、転送はバックグラウンドで継続します。終了するにはトレイのメニューから操作してください", "关闭网络访问": "ネットワークアクセスを無効化", "兼容处理最长等待": "互換処理の最大待ち時間", "兼容处理最长等待(秒)": "互換処理の最大待ち時間(秒)", "内容拦截降级": "コンテンツブロックのフォールバック", "内置识别、自定义规则与来源声明": "内蔵識別、カスタムルール、呼び出し元の申告", "内置软件标识规则": "内蔵ソフトウェア識別ルール", "内置默认": "組み込みのデフォルト", "内置默认提示词": "内蔵のデフォルトシステムプロンプト", "再输入一次新密码": "新しいパスワードをもう一度入力", "凭据类请求头已脱敏。": "認証情報系のリクエストヘッダーはマスキング済みです。", "凭证只保存在这台手机上,按服务器分别存放": "認証情報はこの端末にのみ保存され、サーバーごとに分けて管理されます", "出问题时把这一页截图,或点「复制全部信息」把文本贴进反馈,一般就能定位到大致原因。": "問題が起きたらこのページをスクリーンショットするか、「すべての情報をコピー」でテキストを報告に貼ってください。大抵の原因はそれで絞り込めます。", "分享图标在 Safari 底部工具栏中间": "共有アイコンは Safari 下部ツールバーの中央にあります", "分组名": "グループ名", "分组名,例如「常用」": "グループ名(例:「よく使う」)", "切换视觉模型": "視覚モデルに切り替え", "切换视觉模型 · 视觉模型回答": "モデル切り替え · 視覚モデルが回答", "切换视觉模型配置": "視覚モデル切り替え設定", "切换账号重试次数": "アカウント切替のリトライ回数", "刚刚从 models.dev 拉到的最新数据": "models.dev から取得したばかりの最新データ", "删除 {code}": "{code} を削除", "删除分组": "グループを削除", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "グループ「{name}」を削除しますか?{n} 件のメニューは「{target}」へ移動するので失われません。", "删除匹配内容": "一致した内容を削除", "删除后不再接受这个分类的来源声明,历史记录保留原来的名称和用量。": "削除後はこの分類の申告を受け付けません。過去の記録には元の名前と使用量が残ります。", "删除后,新请求不再使用这条规则;历史记录保持不变。": "削除後は新しいリクエストにこのルールを使用しません。過去の記録は変わりません。", "删除客户端分类": "クライアント分類を削除", "删除状态码 {code}": "ステータスコード {code} を削除", "删除空分组「{name}」?": "空のグループ「{name}」を削除しますか?", "删除识别规则": "識別ルールを削除", "删除这个分组(组内菜单移到第一组)": "このグループを削除(メニューは最初のグループへ移動)", "刷新": "更新", "刷新失败:{message}": "更新に失敗しました: {message}", "前台运行": "フォアグラウンド実行", "前缀": "前方一致", "剥离上游审核黑名单指纹(改写请求体里的模板句与表头)": "アップストリーム審査のブラックリストフィンガープリントを除去(リクエスト本文のテンプレート文とヘッダーを書き換え)", "功能建议": "機能提案", "加入备选": "バックアップに追加", "加密备份必填,旧 SQL 可留空": "暗号化バックアップでは必須、旧 SQL では空欄可", "包含": "部分一致", "包含日志与调试报文": "ログとデバッグペイロードを含める", "包含:{items}": "含まれるもの:{items}", "匹配内容": "一致パターン", "匹配内容不能为空,且最多 {max} 个字符": "一致パターンは必須です。{max} 文字以内で入力してください", "匹配内容不能为空,最长 256 个字符": "一致条件は必須です。256文字以内で入力してください", "匹配原文含零宽空格,词表预览用 \\u{200b} 标出;编辑时保留该字符。": "パターンにゼロ幅スペースが含まれています。一覧では \\u{200b} と表示します。編集時はこの文字を保持してください。", "匹配方式": "一致方式", "区域(Region)": "リージョン(Region)", "华为云 OBS": "Huawei Cloud OBS", "单独指定视觉模型": "視覚モデルを個別に指定", "单轮铸造上限": "1 回の発行上限", "占用大小": "使用サイズ", "历史未记录识别依据": "過去の識別根拠は未記録です", "原来的「全局方式 + 模型单独配置」已按相同意思自动填成下面的模型名单,可以照用也可以重新调整;改动一处之后就会按新形式存下来。": "以前の「全体方式 + モデル個別設定」を同じ意味のまま下のモデル一覧に反映しました。そのまま使っても調整しても構いません。どこか 1 か所でも変更すると新しい形式で保存されます。", "原模型不能直接看图": "元のモデルは画像を直接認識できません", "原模型根据识读内容回答": "元のモデルが読み取り内容に基づいて回答", "去反馈": "フィードバックする", "去申请": "申請する", "反馈与需求": "フィードバックと要望", "发现缺货时一轮最多铸几个(连铸之间固定隔 500 毫秒)。默认 1 个:SDK 同一实例连铸容易互相干扰。调大补货更快,但单轮连铸越多越容易触发上游风控。可填 1–5。": "品切れ検知時に 1 回で最大いくつ発行するか(連続発行の間は固定で 500 ミリ秒あける)。既定は 1:同じ SDK インスタンスでの連続発行は干渉しやすいためです。大きくすると補充は速くなりますが、1 回に多く発行するほど上流のリスク制御に引っかかりやすくなります。1–5 を指定可。", "取消勾选后只备份业务数据(账号、配置与余额记录),文件显著变小;事件日志、请求统计与调试报文不会进备份文件。": "チェックを外すと業務データ(アカウント・設定・残高記録)だけをバックアップし、ファイルはかなり小さくなります。イベントログ・リクエスト統計・デバッグペイロードはバックアップに入りません。", "变更网页管理面板": "Web 管理パネルの変更", "只列单独配置过的家,其余沿用上面的全局配置": "個別に設定したものだけを表示し、それ以外は上記のグローバル設定を引き継ぎます", "只对「排队制」的上游生效:模型繁忙时上游不报错,只回一句「建议 N 秒后再来」,网关按建议时长等一会儿再发同一请求,等满次数仍排不上才把「排队中」作为错误返回(HTTP 503,文案会说明这不是登录态或额度问题)。等待发生在首个字节之前,吃的是「等待响应超时」那份预算 —— 两项设置一起决定一次请求最多卡多久;排队不会标记账号限额、也不会换账号(换谁都一样在排队)。保存后对下一个请求立即生效,不用重启。": "「キューイング方式」のアップストリームにのみ有効です:モデルが混雑しているとき、アップストリームはエラーを返さず「N 秒後に再試行することをおすすめします」とだけ返します。ゲートウェイは推奨された時間だけ待ってから同じリクエストを再送し、規定回数まで待っても順番が回ってこない場合にのみ「キューイング中」をエラーとして返します(HTTP 503。メッセージにはこれがログイン状態やクォータの問題ではないことが明記されます)。待機は最初のバイトより前に発生し、「応答待ちタイムアウト」の予算を消費します —— 2 つの設定が合わさって 1 つのリクエストが最大どれだけ停滞しうるかを決めます。キューイングはアカウントをレート制限としてマークせず、アカウントの切り替えも行いません(誰に切り替えても同じようにキューイングされます)。保存後は次のリクエストから即時有効で、再起動は不要です。", "只影响读图那一步的思考深度;两块设置统一用这个选择。": "画像を読む手順の思考の深さだけに影響します。2 つのブロックで共通の設定です。", "只有已安装、启用并声明了设置项的提供商会出现在这里。可前往插件页检查安装与启用状态。": "インストール済みで有効なプラグインが設定項目を提供している場合のみ表示されます。プラグインページでインストールと有効化の状態を確認できます。", "只沿用模型与思考等级,不借用视觉服务的内部 Key;仍受当前请求权限限制。": "モデルと推論レベルのみを利用し、視覚サービスの内部 Key は使用しません。現在のリクエストの権限制限が適用されます。", "只清掉这个浏览器存的 Key,不影响网关": "このブラウザに保存された Key のみ削除します。ゲートウェイには影響しません", "只覆盖指定提供商的指定模型,其余跟随全局。": "指定したプロバイダーの指定モデルのみを上書きし、それ以外は全体設定に従います。", "可跨提供商多选;只处理这些模型看不了的图片。": "プロバイダーをまたいで複数選択できます。これらのモデルが読めない画像だけを処理します。", "可跨提供商多选;这些模型的请求会整体改交视觉模型。": "プロバイダーをまたいで複数選択できます。これらのモデルへのリクエストは丸ごと視覚モデルに渡します。", "可选。部分服务(如中国科技云数据胶囊)会按 User-Agent 校验凭据绑定的客户端类型,此时填写包含该类型名的字符串(例如 rclone/v1.67.0)。留空则维持默认。": "任意。一部のサービス(例:中国科技云データカプセル)は User-Agent で認証情報に紐づいたクライアント種別を検証します。その場合は種別名を含む文字列(例:rclone/v1.67.0)を入力してください。空欄なら既定のままです。", "合计只累加当前筛选后可见的账号,筛选、搜索一改数字就跟着变。": "合計は現在の絞り込みで表示中のアカウントのみを合算します。絞り込みや検索を変えると数字も変わります。", "合计按整组统计(默认):不受筛选、搜索影响,被筛掉与已禁用的账号也计入。": "合計はグループ全体で計算します(既定)。絞り込みや検索の影響を受けず、除外されたアカウントや無効なアカウントも含まれます。", "同一会话、同一问题、相同权限范围内复用;追问新细节会重新识读。": "同じセッション・同じ質問・同じ権限範囲内で再利用します。新しい詳細を尋ねると読み直します。", "同一会话在 5 分钟内尽量跟住同一个账号;停了 5 分钟再发就算新会话。多数场景用它 —— 多轮对话少换号,也不至于把账号焊死。": "同じセッションは 5 分以内ならできるだけ同じアカウントを使い続け、5 分空くと新しいセッション扱い。多くの場面におすすめ —— 連続対話でアカウントが頻繁に切り替わらず、特定アカウントに固定もされません。", "同一会话在 6 小时内跟住同一个账号;适合一坐几个小时的长会话,上游的上下文缓存能吃到更多。": "同じセッションは最大 6 時間同じアカウントを使い続けます。何時間も続く長丁場に最適で、アップストリームのコンテキストキャッシュをより多く活かせます。", "同一提供商的同一模型不能重复配置": "同じプロバイダーの同じモデルを重複設定できません", "同一账号重试次数": "同一アカウントのリトライ回数", "同时开放网页管理面板": "Web 管理パネルも同時に公開", "同步密码": "同期パスワード", "名单最多 {max} 个状态码": "リストに入れられるステータスコードは最大 {max} 個", "后端没有返回版本信息": "バックエンドがバージョン情報を返しませんでした", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "固定項目「設定」を含むため、グループごと非表示にはできません(他のメニューは個別に非表示にできます)", "启动与托盘": "起動とトレイ", "启动时间": "起動時刻", "启用云同步": "クラウド同期を有効にする", "启用图片兼容": "画像互換処理を有効化", "启用规则": "ルールを有効化", "启用规则:{name}": "ルールを有効化:{name}", "命中依据:{header} · {pattern}": "一致した根拠:{header} · {pattern}", "命中这些上游状态码的失败不在同一账号重发,直接换下一个账号继续试(换号占用「切换账号重试次数」,换满仍失败才把错误原样返回给客户端)。输入 100–599 的状态码后回车添加,点 × 或退格删除;默认 402(积分不足)。清空全部表示任何错误都照常重试。": "これらのアップストリームステータスコードに該当する失敗は、同一アカウントでの再送を行わず、次のアカウントに切り替えて試行を続けます(アカウント切替は「アカウント切替のリトライ回数」を消費し、使い切ってもなお失敗する場合にのみエラーがそのままクライアントへ返されます)。100–599 のステータスコードを入力して Enter で追加、× または Backspace で削除します。デフォルトは 402(ポイント残高不足)。すべてクリアすると、あらゆるエラーで通常どおりリトライします。", "品牌 Logo": "ブランドロゴ", "品牌设置": "ブランド設定", "品牌设置已保存": "ブランド設定を保存しました", "品牌预览": "ブランドのプレビュー", "哪些模型用这种方式": "この方式を使うモデル", "固定": "固定", "图标经 Magpie 引入,未单独记录 Lobe Icons 的图标版本;以上版本仅用于核对许可。": "アイコンは Magpie 経由で導入されています。Lobe Icons のアイコン自体のリビジョンは個別に記録されておらず、上記はライセンス確認のみに使用したリビジョンです。", "图片与相关对话将交给配置的视觉模型处理,可能增加等待时间和费用。请确认这些服务可以接收你的图片。": "画像と関連する会話を設定済みの視覚モデルに送信します。待ち時間や費用が増える場合があります。これらのサービスへの画像送信を許可するか確認してください。", "图片兼容": "画像互換処理", "图片兼容当前是关闭的:下面两块设置照样能改、会被保留,但不会对任何请求生效。": "画像互換は現在オフです。下の 2 つのブロックは編集でき内容も残りますが、どのリクエストにも適用されません。", "图片兼容设置已保存,仅对新请求生效。": "画像互換設定を保存しました。新しいリクエストにのみ適用されます。", "图片兼容设置读取失败": "画像互換設定を読み込めませんでした", "图片压缩": "画像圧縮", "图片最长边超过这个值就等比缩小(只缩不放)。默认 2048,可填 256–8192 —— 多数视觉模型在这个量级已经够用,调小更省流量、但细节会丢。": "画像の長辺がこの値を超えると縦横比を保って縮小します(拡大はしません)。既定 2048、256〜8192 で指定できます。多くのビジョンモデルはこの大きさで十分で、小さくすると通信量は減りますが細部が失われます。", "图片能力未知时": "画像対応が不明な場合", "图片过大、格式错误或下载失败不会被当作模型不支持图片。": "画像が大きすぎる、形式が不正、ダウンロード失敗といった場合は「モデルが画像非対応」とは扱いません。", "在同一个账号上原地重发几次(不含首发;整条请求共用一份,用完后换来的账号只发一次就继续换)。可填 0–10,0 表示失败立即换号。": "同じアカウントでそのまま何回再送するか(初回は含みません。1 つのリクエスト全体で 1 つの回数を共用し、使い切った後に切り替えたアカウントでは 1 回送信するごとに次の切替へ進みます)。0–10 を入力でき、0 は失敗時に即座にアカウントを切り替えることを意味します。", "在这里直接编辑提示词正文:保存后以这份文本为准(优先于上面的提示词文件),清空则回到文件 / 内置默认。改一个字不必再去编辑器里开文件。": "ここでシステムプロンプトの本文を直接編集できます:保存後はこのテキストが優先されます(上記のシステムプロンプトファイルより優先)。クリアするとファイル / 内蔵デフォルトに戻ります。1 文字の変更のためにエディターでファイルを開く必要はもうありません。", "在途请求": "処理中のリクエスト", "地址格式不对。填「IP 或域名:端口」,可带 http:// 或 https://,例如 192.168.1.23:3065": "アドレスの形式が正しくありません。「IP またはドメイン:ポート」で入力してください(http:// または https:// も可)。例: 192.168.1.23:3065", "坚果云": "Jianguoyun(Nutstore)", "坚果云需使用「第三方应用密码」(账户信息 → 安全选项里生成),地址必须是 /dav/ 下的目录。": "Jianguoyun では「サードパーティアプリのパスワード」(アカウント情報 → セキュリティで生成)が必要で、URL は /dav/ 配下のディレクトリを指定してください。", "填「IP 或域名:端口」。协议可写 http:// 或 https://,不写默认 http;http 不写端口默认 3065,https 默认 443。地址里的 /m、/v1 会自动去掉。": "「IP またはドメイン:ポート」を入力してください。プロトコルは http:// または https:// が使えます(省略時は http)。ポートを省略すると http は 3065、https は 443 になります。アドレス内の /m、/v1 は自動的に除去されます。", "处理方式": "処理方式", "处理示意": "処理の流れ", "备份中…": "バックアップ中…", "备份包含账号凭证、网关 Key、GitHub 令牌与云同步凭据的恢复密钥,整个文件受备份密码保护。请分开保管文件与密码;忘记密码无法恢复。": "アカウント認証情報、ゲートウェイ Key、GitHub トークン、クラウド同期認証情報の復元鍵を含み、ファイル全体がバックアップのパスワードで保護されます。ファイルとパスワードは別々に保管してください。パスワードを忘れると復元できません。", "备份密码": "バックアップのパスワード", "备份密码不能超过 1024 字节": "バックアップのパスワードは 1024 バイト以内にしてください", "备份密码至少需要 12 位,建议使用较长且不重复的密码": "12 文字以上の長く使い回していないパスワードを推奨します", "备份整库": "データベースをバックアップ", "备份文件内含全部账号凭证、网关 API Key 与面板管理员凭据,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "バックアップファイルには全アカウントの認証情報・ゲートウェイ API キー・管理パネルの管理者認証情報が入っており、そのままログインに使えます。厳重に保管し、外部に漏らしたり公開場所へアップロードしたりしないでください。", "备选模型": "バックアップモデル", "复制全部信息": "すべての情報をコピー", "复制给客户端": "クライアント用にコピー", "复用相同图片的识读结果": "同じ画像の読み取り結果を再利用", "外观": "外観", "外观 · 接入 · 关于": "外観 · 接続 · 情報", "多个客户端标识冲突": "複数のクライアント識別情報が競合", "天": "日", "天数": "日数", "失败 {n} 个": "失敗 {n} 件", "失败 {n} 个:{detail}": "失敗 {n} 件:{detail}", "失败后最多再换几个账号试(填 N = 最多换 N 个,首发那个不算)。换到同一家名下另一个账号、或换到另一家,都各算一次;换满仍失败就返回错误。可填 0–10,0 表示失败立即报错。": "失敗後に最大であと何個のアカウントに切り替えて試すか(N を入力 = 最大 N 個まで切替。初回のアカウントは含みません)。同じプロバイダー配下の別のアカウントへの切替も、別のプロバイダーへの切替もそれぞれ 1 回と数えます。使い切ってもなお失敗する場合はエラーを返します。0–10 を入力でき、0 は失敗時に即座にエラーを返すことを意味します。", "存储桶(Bucket)": "バケット(Bucket)", "存储概况已刷新": "ストレージ概要を更新しました", "安全": "セキュリティ", "安装到主屏幕": "ホーム画面に追加", "安装到桌面": "アプリとしてインストール", "安装包形态": "インストーラの種類", "完全相同": "完全一致", "官方原文只有一句:声明自己是 ZCode。": "公式原文は 1 文だけです:自分が ZCode であることを宣言します。", "实际处理:": "実際の処理:", "客户端 system 原样出站。": "クライアントの system をそのまま送信します。", "客户端 system 原样出站(只靠指纹脱敏改写模板句)。": "クライアントの system をそのまま送信します(テンプレート文の書き換えはフィンガープリントのマスキングのみ)。", "客户端专用请求头": "クライアント専用ヘッダー", "客户端名称": "クライアント名", "客户端名称不能为空,最长 80 个字符": "クライアント名は必須です。80文字以内で入力してください", "客户端名称重复或与内置名称冲突": "クライアント名が重複しているか、内蔵名と競合しています", "客户端标识无效或重复": "クライアント識別情報が無効または重複", "客户端识别": "クライアント識別", "客户端识别入口尚未就绪,请刷新页面后重试": "クライアント識別の準備ができていません。ページを更新して再試行してください。", "客户端识别设置读取失败": "クライアント識別設定を読み込めませんでした", "客户端(Claude Code / Codex 等 CLI)会在 system 提示词里注入几十句固定模板,上游按逐字匹配审核,命中就整单拦截(HTTP 400)。指纹脱敏能改写实测命中过的那几句,但换一个客户端版本就可能冒出新的。这里可以把 system 整段换成网关自己那份:①「透传」= 不动客户端 system(默认,行为与之前完全一致);②「替换」= 删掉客户端所有 system / developer 消息,换成网关的提示词(客户端项目规范随之消失);③「追加」= 在开头连续 system 块之后插入一条网关提示词,既有消息逐字不动(客户端规范与网关提示词并用)。那份提示词有两个来源:提示词文件(留空用内置默认),或直接在界面上编辑正文 —— 编辑过就以那份正文为准(优先于文件),清空则回到文件 / 内置默认。另外,透传 / 追加模式下撞了内容拦截(多半是指纹误报)时,网关会自动换一段最小中性提示词重试一次,并把「降级期」开到次日 00:00 —— 期间所有请求直接带中性提示词出门,不再先撞一次 400;这里能看见并提前解除它。上面几项是**默认值**:想给某个提供商单独配,用下面的「按提供商」加一行(带「网关自带」的家默认就列在那里)—— 不同的上游对这些内容的接受程度不一样。": "クライアント(Claude Code / Codex などの CLI)は system プロンプトに数十文の固定テンプレートを注入し、アップストリームは逐語一致で審査するため、ヒットするとリクエスト全体がブロックされます(HTTP 400)。フィンガープリントのマスキングは実測でヒットした数文を書き換えられますが、クライアントのバージョンが変わると新しい文が現れる可能性があります。ここでは system 全体をゲートウェイ自身のものに差し替えられます:①「パススルー」= クライアントの system に手を加えない(デフォルト。挙動は従来と完全に同じ);②「置換」= クライアントのすべての system / developer メッセージを削除し、ゲートウェイのシステムプロンプトに差し替える(クライアントのプロジェクト規約も同時に消えます);③「追加」= 先頭に連続する system ブロックの後ろにゲートウェイのシステムプロンプトを 1 件挿入し、既存のメッセージは逐語のまま(クライアントの規約とゲートウェイのシステムプロンプトを併用)。そのシステムプロンプトには 2 つのソースがあります:システムプロンプトファイル(空欄なら内蔵デフォルトを使用)、または画面上で本文を直接編集 —— 編集した場合はその本文が優先され(ファイルより優先)、クリアするとファイル / 内蔵デフォルトに戻ります。また、パススルー / 追加モードでコンテンツブロックに当たった場合(多くはフィンガープリントの誤検知)、ゲートウェイは自動的に最小限の中立システムプロンプトに切り替えて 1 回リトライし、「フォールバック期間」を翌日 00:00 まで設定します —— 期間中はすべてのリクエストが中立プロンプトを直接携えて送信され、400 に当たることはなくなります。ここでその状態を確認し、前倒しで解除できます。上記の項目は**デフォルト値**です:特定のプロバイダーに個別設定したい場合は、下の「プロバイダー別設定」で行を追加してください(「ゲートウェイ内蔵」があるプロバイダーはデフォルトでそこに表示されます)—— アップストリームによってこれらの内容の受け入れ具合は異なります。", "家之间仍按优先级,只有同一家内部轮流用各账号 —— 想优先用某几家、又不愿把某一家的某个账号焊死时用它。": "プロバイダー間は優先度どおり、同じプロバイダー内だけでアカウントを順送りします —— いくつかのプロバイダーを優先しつつ、特定アカウントに固定したくないときに。", "家内轮询": "プロバイダー内ローテーション", "容器内更新": "コンテナ内更新", "密码、文件或密钥校验失败时不会替换主库;替换阶段失败会自动尝试还原,实际结果以上方错误说明为准。": "パスワード、ファイル、鍵の検証に失敗した場合、メインデータベースは変更されません。置換に失敗した場合は自動で元に戻す処理を試みます。実際の結果は上のエラー表示を確認してください。", "密码加密 · 包含恢复密钥": "パスワード暗号化 · 復元鍵を含む", "密码至少 8 位": "パスワードは 8 文字以上", "对话里内嵌的 base64 大图(截图、照片)既撑大请求体,也拉高按像素折算的上游计费。开启后,网关在转发前把超过阈值的图等比缩到长边上限、重新存成 JPEG —— 只改发给上游的副本,请求日志里保存的仍是你发来的原图。同一张原图在多轮对话里重复出现时复用上一次的压缩结果,不会每轮重算。http 链接图片、GIF 动图、SVG 一律不动;压完反而更大的图也保留原图。只作用在对话场景,生图与图片编辑不受影响。默认开启;不想要的话把开关关掉即可。": "会話に埋め込まれた大きな base64 画像(スクリーンショットや写真)はリクエストボディを膨らませ、ピクセル数に応じて課金される上流のコストも押し上げます。有効にすると、転送前にしきい値を超える画像を長辺上限まで縮小し JPEG で再エンコードします。変更されるのは上流へ送るコピーだけで、リクエストログには送信元の原画像が保存されます。同じ原画像が複数ターンで再送される場合は、前回の圧縮結果を再利用し毎回計算し直しません。http リンクの画像、アニメーション GIF、SVG は一切変更しません。再エンコードで逆に大きくなる画像も原画像のままです。チャットのみに作用し、画像生成と画像編集には影響しません。既定では有効です。不要ならスイッチを切ってください。", "导入前会把本机的 account.key 改名备份(account.key.bak-时间戳),不会直接删除。": "インポート前にローカルの account.key を account.key.bak-<タイムスタンプ> に改名して退避します(削除はしません)。", "导入完成:{summary}": "インポート完了:{summary}", "导入密钥失败:{message}": "キーのインポートに失敗しました:{message}", "导入密钥并继续": "キーをインポートして続行", "导入账号": "アカウントをインポート", "导出中…": "エクスポート中…", "导出会把全部账号与自定义提供商定义写入一个 JSON 文件,可以拷到另一台机器上导入后继续使用。导入采用合并策略:同提供商下按业务身份(UID / userId / apiKey 等)去重 —— 已存在的账号只更新凭证,保留本机原有的优先级顺序;新账号追加到转发顺序末尾,不会抢占当前正在使用的账号;自定义提供商定义按 id 合并,本机缺失时自动补建。": "エクスポートはすべてのアカウントとカスタムプロバイダー定義を 1 つの JSON ファイルに書き出し、別のマシンにコピーしてインポートすればそのまま使い続けられます。インポートはマージ方式を採用します:同じプロバイダー配下では業務上の身元(UID / userId / apiKey など)で重複を排除 —— 既存のアカウントは認証情報のみ更新し、本機の優先順はそのまま維持します。新しいアカウントは転送順の末尾に追加され、現在使用中のアカウントを奪いません。カスタムプロバイダー定義は id 単位でマージし、本機にない場合は自動的に作成します。", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义": "エクスポートファイルには accessToken / refreshToken / apiKey などの認証情報とカスタムプロバイダー定義が含まれます", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "エクスポートファイルには accessToken / refreshToken / apiKey などの認証情報とカスタムプロバイダー定義が含まれ、そのままログインに使用できます。厳重に保管し、第三者に渡したり公共の場所へアップロードしたりしないでください。", "导出账号": "アカウントをエクスポート", "将数据库和恢复凭证所需的密钥一起保存为密码加密的 .a2ab 备份,可在 Windows、macOS 或 Linux 上恢复,无需手工复制密钥。恢复时整体替换账号、配置、日志与桌面设置,并使用目标机器的密钥重新加密凭证,不覆盖本机已有钥匙。可取消包含日志以减小文件;旧 .sql 备份仍可导入。恢复前自动保留安全备份,完成后需要重新登录管理面板。": "データベースと復元鍵をパスワードで暗号化した .a2ab にまとめ、Windows、macOS、Linux で鍵を手動コピーせず復元できます。アカウント、設定、ログ、デスクトップ設定を全体置換し、移行先の鍵で認証情報を再暗号化します。既存の鍵は上書きしません。ログを除外して容量を減らせます。旧 .sql も読み込めます。事前に安全バックアップを作成し、完了後は再ログインが必要です。", "尚未注册管理员。开启「网关 → 网络访问 → 允许其他设备访问网关」时会引导注册,也可以从登录页注册。": "管理者はまだ登録されていません。「ゲートウェイ → ネットワークアクセス → 他の端末からゲートウェイへのアクセスを許可」を有効にすると登録に進みます。ログインページからも登録できます。", "尚未注册管理员:管理接口不需要登录。开启「允许局域网访问」时会引导注册,也可以从登录页注册。": "管理者が未登録です:管理 API にログインは不要です。「LAN アクセスを許可」を有効にすると登録へ案内されます。ログインページから登録することもできます。", "尚未配置视觉分析模型": "視覚分析モデルが未設定です", "局域网开放后,管理接口要求登录。请设置管理员账号与密码,注册完成会直接继续开启流程。": "LAN に公開すると、管理インターフェースはログインを要求します。管理者アカウントとパスワードを設定してください。登録が完了すると、そのまま有効化の処理を続行します。", "局域网访问": "LAN アクセス", "工具用法与环境说明那一大段。": "ツールの使い方と環境説明の大きなかたまりです。", "已为「{label}」单独配置提示词": "「{label}」にシステムプロンプトを個別設定しました", "已作为独立应用运行": "独立アプリとして実行中", "已使用本机密钥重新加密 {n} 项凭证,原有密钥未被覆盖。": "{n} 件の認証情報をこの端末の鍵で再暗号化しました。既存の鍵は上書きしていません。", "已保存 {count} / {limit} 条报文(超出后丢弃最旧的)。": "{count} / {limit} 件のメッセージを保存済み(超過分は古いものから破棄)。", "已保存的值不符合当前插件规则,请修改或恢复默认值。": "保存済みの値が現在のプラグインの規則に合いません。変更するか既定値に戻してください。", "已保存,留空则不修改": "保存済み。空欄なら変更しません", "已保存,留空沿用": "保存済み(空欄ならそのまま使用)", "已关闭": "オフ", "已关闭 models.dev 联网刷新": "models.dev のオンライン更新をオフにしました", "已关闭。{note}": "オフです。{note}", "已关闭「{label}」的网关自带提示词:能否通过上游校验取决于上游当前口径": "「{label}」のゲートウェイ内蔵システムプロンプトをオフにしました:アップストリームの検証を通過できるかはアップストリームの現在の基準次第です", "已关闭会话图片压缩": "画像圧縮を無効にしました", "已关闭出站指纹脱敏": "フィンガープリントのマスキングをオフにしました", "已关闭开发者角色兼容": "developer ロール互換を無効にしました", "已关闭第三方模型回答完自动折叠过程": "サードパーティモデルの回答後の工程の自動折りたたみを無効にしました", "已关闭网关跨域访问": "ゲートウェイの CORS アクセスをオフにしました", "已关闭:不额外补阶段标记,由客户端决定过程展示。": "無効:フェーズマーカーを追加せず、作業の表示はクライアントに任せます。", "已删除分组「{name}」": "グループ「{name}」を削除しました", "已取消「{label}」的单独配置": "「{label}」の個別設定を解除しました", "已取消安装": "インストールをキャンセルしました", "已取消导入": "インポートをキャンセルしました", "已取消导出": "エクスポートをキャンセルしました", "已取消恢复": "復元をキャンセルしました", "已启用 {count} 条规则,应用于{scope}。": "{count} 件のルールが有効です。適用先:{scope}。", "已启用登录": "ログイン有効", "已复制全部版本信息": "バージョン情報をすべてコピーしました", "已应用": "適用済み", "已开启": "オン", "已开启:为正常完成的 Codex 回答补阶段标记。": "有効:正常に完了した Codex の回答にフェーズマーカーを補います。", "已开启:其他设备把 API 地址指向 {url}{panel}。": "オン:他のデバイスが API アドレスを {url} に向ければ一緒に使えます{panel}。", "已开启:监听 0.0.0.0,允许其他设备访问。": "有効:0.0.0.0 で待ち受け、他の端末からのアクセスを許可しています。", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "既定のグループに戻しました:概要 / 転送経路 / 診断 / システム", "已截断": "切り詰め済み", "已指定出口": "出口を指定", "已接管": "引き継ぎ済み", "已改回内置默认提示词": "内蔵のデフォルトシステムプロンプトに戻しました", "已新建分组「{name}」,点组头的 + 把菜单移进来": "グループ「{name}」を作成しました。見出しの + でメニューを移動できます", "已清掉「{label}」界面编辑的正文": "「{label}」の画面で編集した本文をクリアしました", "已清掉界面编辑的提示词(回落文件 / 内置默认)": "画面で編集したシステムプロンプトをクリアしました(ファイル / 内蔵デフォルトにフォールバック)", "已清除本机保存的 API Key": "このブラウザに保存された API Key を削除しました", "已生效": "有効", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。": "最小限の中立的なプロンプトへ自動切替しました(アップストリームのコンテンツブロックに当たったもので、多くは system 指紋の誤検知です)。{until} に自動解除されます。", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "最小限の中立システムプロンプトに自動的に切り替えました(アップストリームのコンテンツブロックに当たりました。多くは system のフィンガープリントの誤検知です)。{until} に自動解除されます。期間中は本モード自身のシステムプロンプトは送信されません。システムプロンプトを修正すればすぐに解除できます。", "已自定义": "カスタマイズ済み", "已运行": "稼働時間", "已退出登录": "ログアウトしました", "已隐藏": "非表示", "巴西葡萄牙语": "ブラジルポルトガル語", "希望接入新的提供商或模型": "新しいプロバイダーやモデルへの対応を希望", "库中 schema": "DB 内 schema", "库主文件的大小(不含运行期间的 WAL 临时文件,退出时已自动并回)。": "データベース本体ファイルのサイズ(実行中の WAL 一時ファイルは含みません。終了時に自動でマージし直されます)。", "库存目标": "在庫目標", "应用提供商": "適用するプロバイダー", "应用版本:{version}": "アプリのバージョン:{version}", "应用状态": "アプリの状態", "应用窗口": "アプリウィンドウ", "建立上游 TCP/TLS 连接或代理隧道的最大等待时间(秒),默认 30 秒,范围 1~3600。": "アップストリームへの TCP/TLS 接続またはプロキシトンネルを確立する最大待機時間(秒)。デフォルト 30 秒、範囲 1~3600。", "开发构建": "開発ビルド", "开发者角色兼容": "developer ロール互換", "开发者角色兼容设置已刷新": "developer ロール互換の設定を更新しました", "开启前需要注册面板管理员,已注册会跳过此步骤。管理接口需要管理员会话或网关 Key;API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。": "有効化する前にパネル管理者の登録が必要です。登録済みの場合はこの手順をスキップします。管理 API には管理者セッションまたはゲートウェイキーが必要です。API 呼び出しには有効なゲートウェイキーが必要で、存在しない場合はデフォルトキーが自動作成されます。", "开启后新发生的请求才会被记录(已经过去的请求补不回来)。报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "オン以降に発生したリクエストだけが記録されます(過去の分は遡って取得できません)。ペイロードはローカルデータベースに保存され、直近 500 件のみ保持(超過分は古いものから破棄)。件数は左の「データ → データ保存」の「デバッグペイロード」に表示されます。", "开启后新发生的请求才会被记录(已经过去的请求补不回来),请求日志的「预览对话」也随之开始保存原始正文。上游报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "オンにした後に発生したリクエストのみ記録されます(過去のリクエストは遡って記録できません)。リクエストログの「会話プレビュー」もこれを機に原文の保存を開始します。アップストリームのメッセージはローカルデータベースにまとめて保存され、直近 500 件のみ保持します(超過分は古いものから破棄)。件数は左側の「データ → データストレージ」の「デバッグメッセージ」で確認できます。", "开启后监听所有 IPv4 网卡(0.0.0.0),并不局限于局域网,也不会自动开放到公网;实际访问范围取决于网络与防火墙设置。修改后需要重启应用。": "有効にすると、すべての IPv4 インターフェース(0.0.0.0)で待ち受けます。LAN 限定ではありませんが、自動でインターネットに公開されるわけではありません。実際のアクセス範囲はネットワークとファイアウォールの設定で決まります。変更にはアプリの再起動が必要です。", "开启后网关将监听所有 IPv4 网卡(0.0.0.0),访问范围不再限于本机,也不局限于局域网。是否能从公网访问取决于网络与防火墙设置。": "ゲートウェイはすべての IPv4 インターフェース(0.0.0.0)で待ち受けます。アクセス範囲は本機や LAN に限定されません。インターネットからアクセスできるかどうかは、ネットワークとファイアウォールの設定で決まります。", "开启后网关将监听所有网卡,同一局域网内的设备即可把 API 地址指向本机 IP 一起使用;管理接口从此要求管理员会话或网关 Key,转发接口在没有一把启用的 Key 时也会拒绝服务(届时会自动创建一把名为「默认」的 Key)。": "オンにするとゲートウェイはすべてのネットワークアダプターで待ち受け、同じ LAN 内のデバイスから API アドレスを本機の IP に向けて一緒に利用できるようになります。管理インターフェースは管理者セッションまたはゲートウェイキーを要求するようになり、転送インターフェースは有効なキーが 1 つもない場合もサービスを拒否します(その際は「デフォルト」という名前のキーが自動作成されます)。", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 套餐池(Start Plan)」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "有効にすると、ウィンドウを閉じるのは隠すだけでなく UI ウィンドウ全体を破棄します:常駐する 6 つの WebView2 プロセス(約 200MB のメモリ)が終了し、ゲートウェイ転送・定時チェックイン・残高照会はバックグラウンドプロセスで影響なく継続します;UI が必要になったらトレイアイコンをクリックして開き直します(WebView のコールドスタートは約 1 秒)。注意:UI が破棄されている間、ZCode「プランプール(Start Plan)」経路の CAPTCHA トークンは UI が生成するため補充できず、その経路のリクエストは理由付きで 503 としてリクエストログに記録されます。UI を開き直すと自動的に復旧します。このスイッチは「閉じるときにトレイへ最小化」が有効なときにのみ意味があり、最小化したウィンドウには影響しません。", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 活动套餐」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "オンにすると、ウィンドウを閉じるのは単なる非表示ではなく、UI ウィンドウ全体を破棄します:基盤の WebView2 の常駐プロセス 6 つ(約 200MB のメモリ)も終了し、ゲートウェイの転送、定期チェックイン、残高照会はバックグラウンドプロセスで引き続き動作し、影響を受けません。UI が必要なときはトレイアイコンをクリックして開き直します(WebView のコールドスタートは約 1 秒)。注意:UI 破棄中は「ZCode アクティブプラン」チャネルの認証コードトークンが UI によって生成されるため補給できません —— このチャネルを通るリクエストは 503 となって理由とともにリクエストログに記録され、UI を開き直すと自動的に復旧します。このスイッチは「ウィンドウを閉じたときはトレイに最小化」がオンのときのみ意味を持ち、ウィンドウの最小化は影響を受けません。", "开启后,关闭窗口会销毁界面并释放 WebView 进程,网关转发、定时签到、余额查询仍在后台继续。ZCode 模型请求免验证时不受影响;上游要求人机验证时,需要重新打开界面,在账号的「套餐明细」中主动完成验证。此开关只在「关闭窗口时最小化到托盘」开启时有意义。": "有効にすると、ウィンドウを閉じる際に画面を破棄し WebView プロセスを解放します。転送、定時チェックイン、残高照会は継続します。認証不要の ZCode リクエストは影響を受けません。認証が必要な場合は画面を開き直して「プラン詳細」で認証してください。トレイへの最小化が有効な場合のみ適用されます。", "开启后,新发生的请求会保存上游调试报文与下游正文,历史请求无法补录。上游调试报文只保留最近 500 条;两侧条数可在「数据 → 数据存储」查看。关闭开关不会删除已保存的报文,可在请求日志中选择「仅清空报文原文」一起清理。": "有効にすると、新しいリクエストのアップストリームのデバッグペイロードとダウンストリーム本文を保存します。過去のリクエストは補完できません。アップストリームのデバッグペイロードは最新 500 件のみ保持します。両側の件数は「データ → データ保存」で確認できます。無効にしても保存済みのペイロードは削除されません。リクエストログの「原文のみクリア」で両側をまとめて削除できます。", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。": "オンにすると、ログインページはブラウザーのバックグラウンドで自動的に検証を完了します(人間には気づかれません)が、スクリプトは試行のたびにまず問題を 1 問解く必要があります —— ブルートフォース攻撃と大量登録のコストが大幅に上がります。影響するのはパネルのログイン / 登録のみで、API クライアントの API Key とは無関係です。", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。桌面端与网页端各自独立:桌面端主要服务本机与局域网,网页端(Docker / 服务端)直接暴露在网络上的登录页风险更高,建议保持开启。": "有効にすると、ログインページはバックグラウンドで認証を完了します(人間には意識されません)が、スクリプトによる試行は毎回 1 問解く必要があり、総当たりやアカウントの先取りのコストが大幅に上がります。影響するのはパネルのログイン / 登録のみで、API クライアントの API Key とは無関係です。デスクトップと Web は独立しています。デスクトップは主に本機と LAN 向け、Web(Docker / サーバー)はネットワークに露出するため有効のままを推奨します。", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "オンにすると、ゲートウェイは転送ごとに**アップストリームへ送ったリクエスト**(ヘッダー + ボディ)と**アップストリームからの応答**(ステータスコード + ヘッダー + ボディ)をローカルに丸ごと保存し、リクエストログページの「詳細」で確認できます。リクエストヘッダーの Authorization・Cookie・API キーなどの認証フィールドはすべて [redacted] に置き換わり、平文では保存されません。リクエスト / レスポンスのボディはそのまま保存されます(あなたの対話内容が含まれる場合があります)。ペイロードは直近 500 件のみ保持し、超過分は古いものから破棄します。トラブルシュート用の一時スイッチなので、不要なときはオフを推奨します。", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看;请求日志详情的「预览对话」也依赖本开关 —— 它保存的是客户端发来的请求体与网关下发的响应体(两侧各截断到 128 KiB),不开这个开关时预览对话没有数据可看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。上游报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "オンにすると、ゲートウェイは転送のたびに**アップストリームへ送るリクエスト**(リクエストヘッダー + リクエストボディ)と**アップストリームが返すレスポンス**(ステータスコード + レスポンスヘッダー + レスポンスボディ)を完全にローカルへ保存し、リクエストログページの「詳細」で確認できるようにします。リクエスト詳細の「会話プレビュー」もこのスイッチに依存します —— 保存するのはクライアントから届いたリクエストボディとゲートウェイが返したレスポンスボディ(いずれも 128 KiB で切り詰め)で、スイッチがオフのときはプレビューできるデータがありません。リクエストヘッダー内の Authorization、Cookie、API Key などの認証情報フィールドは一律 [redacted] に置き換えられ、平文でディスクに残りません。リクエストボディとレスポンスボディはそのまま保存されます(会話内容が含まれる場合があります)。アップストリームのメッセージは直近 500 件のみ保持し、超過分は古いものから破棄します。これはトラブルシューティング用の一時的なスイッチですので、不要なときはオフにすることをおすすめします。", "开启后,能连接到网关的设备可通过浏览器访问网页管理面板,需使用管理员账号登录。访问范围与网关相同,并不局限于局域网。": "有効にすると、ゲートウェイに接続できる端末からブラウザーで Web 管理パネルを開き、管理者アカウントでログインできます。アクセス範囲はゲートウェイと同じで、LAN に限定されません。", "开启后,调用方可以用专用请求头声明已登记的客户端名称。这不是身份认证,只用于日志和统计,不会获得额外权限。": "有効にすると、呼び出し元は専用ヘッダーで登録済みクライアント名を申告できます。これは認証ではなく、ログと統計にのみ使用され、追加の権限は付与されません。", "开启局域网访问": "LAN アクセスをオンにする", "开启来源声明": "呼び出し元の申告を有効にする", "开启网络访问": "ネットワークアクセスを有効化", "开放后,局域网内其他设备的浏览器打开本机 IP 即可进入管理面板(需管理员账号登录)。": "公開後は、LAN 内の他のデバイスのブラウザーで本機の IP を開くだけで管理パネルに入れます(管理者アカウントでのログインが必要)。", "开机自动启动": "自動起動", "开源许可": "オープンソースライセンス", "开(最多 {n} 轮)": "オン(最大 {n} ラウンド)", "归属客户端": "分類先クライアント", "当前三段都是官方原文。": "現在、3 つの段はすべて公式原文です。", "当前不可用": "現在利用できません", "当前后端不支持词表编辑与提供商范围,请更新后端后重试。": "現在のバックエンドはルール編集とプロバイダー範囲に対応していません。バックエンドを更新してください。", "当前固定为浅色模式,不随系统变化。": "現在はライトモードに固定されており、システムには連動しません。", "当前固定为深色模式,不随系统变化。": "現在はダークモードに固定されており、システムには連動しません。", "当前密码": "現在のパスワード", "当前已改过:{edited}。": "現在の変更箇所:{edited}。", "当前形态": "実行形態", "当前按 100% 显示(默认比例)。": "現在は 100% で表示中(デフォルト比率)。", "当前按 k / M 缩写显示(如 1.20M / 8.4k)。": "現在は k / M 略記で表示中(例:1.20M / 8.4k)。", "当前按 {n}% 显示。": "現在は {n}% で表示中。", "当前按「万 / 亿」式本地量级词显示(如 1.2亿 / 8400万)。": "現在は「万 / 億」式のローカル量級語で表示中(例:1.2億 / 8400万)。", "当前是透传模式:存下来也不会发出,切成「替换 / 追加」之后才生效。": "現在はパススルーモードです:保存しても送信されず、「置換 / 追加」に切り替えてから有効になります。", "当前显示为「1.20M / 8.4k / 1.2B」这类英文缩写。": "現在は「1.20M / 8.4k / 1.2B」のような英語略記で表示しています。", "当前显示为「1.2亿 / 8400万」这类中文量级。": "現在は「1.2億 / 8400万」のような中国語の桁表記で表示されています。", "当前样本结果:{name}": "現在のサンプル結果:{name}", "当前正在使用": "現在使用中", "当前浏览器以管理员身份登录着本面板。「退出登录」会撤销这台设备的登录会话(30 天内的自动续期一并失效),需要重新输入账号密码;其他已登录的设备不受影响。": "現在のブラウザーは管理者としてこのパネルにログインしています。「ログアウト」はこのデバイスのログインセッションを取り消し(30 日以内の自動更新も無効になります)、アカウントとパスワードの再入力が必要です。他のログイン済みデバイスは影響を受けません。", "当前版本不支持品牌设置": "このバージョンはブランド設定に対応していません", "当前环境不支持局域网访问设置": "現在の環境は LAN アクセス設定に対応していません", "当前环境不支持整库备份": "この環境ではデータベース全体のバックアップは使えません", "当前环境不支持整库备份(仅桌面端可用)": "この環境ではデータベース全体のバックアップは使えません(デスクトップ版のみ)", "当前环境不支持整库恢复": "この環境ではデータベース全体の復元は使えません", "当前环境不支持整库恢复(仅桌面端可用)": "この環境ではデータベース全体の復元は使えません(デスクトップ版のみ)", "当前环境不支持网络访问设置": "現在の環境ではネットワークアクセス設定を利用できません", "当前环境不支持读取版本信息(桥接方法缺失)": "この環境ではバージョン情報を取得できません(ブリッジメソッドが見つかりません)", "当前生效值:{value}": "現在の有効値:{value}", "当前生效的正文来自{source}{file}。保存后这一份会盖过提示词文件与内置默认{note}。": "現在有効な本文の出所は{source}です{file}。保存するとこの本文がシステムプロンプトファイルと内蔵デフォルトより優先されます{note}。", "当前界面": "現在の画面", "当前管理员:{name}": "現在の管理者:{name}", "当前设置已保存": "現在の設定は保存済みです", "当前跟随操作系统的深浅色设置,系统切换时界面会自动跟上。": "現在は OS のライト / ダーク設定に連動しており、システムの切替時に UI も自動的に追従します。", "当前路由内的可用视觉模型": "現在のルート内で利用可能な視覚モデル", "待迁移旧数据": "移行待ちの旧データ", "待配置": "未設定", "忘记密码时无法在界面里找回:需要停掉程序后,从数据库删除管理员记录(kv 表的 panelAdmin 键),重启后按首次使用重新注册。具体命令与各形态的库文件路径见 docs 目录下的「重置管理员」文档。": "パスワードを忘れた場合、画面から復旧することはできません。プログラムを停止し、データベースから管理者レコード(kv テーブルの panelAdmin キー)を削除してから再起動し、初回と同様に登録し直してください。具体的なコマンドと形態別のデータベースパスは docs の「管理者のリセット」を参照してください。", "思考等级、图片能力未知、等待上限": "思考レベル、画像対応が不明な場合、待ち時間の上限", "恢复中…": "復元中…", "恢复失败:{message}": "復元に失敗:{message}", "恢复官方原文": "公式原文に戻す", "恢复插件默认值": "プラグインの既定値に戻す", "恢复整库": "データベースを復元", "恢复整库备份": "全体バックアップを復元", "恢复默认": "デフォルトに戻す", "恢复默认 Logo": "標準のロゴに戻す", "恢复默认侧边栏": "サイドバーを既定に戻す", "恢复默认品牌": "標準のブランドに戻す", "恢复默认词表": "デフォルトのルールに戻す", "想回到原来那份,把这里清空再保存即可(不会删掉你配的文件路径)。": "元のものに戻したい場合は、ここを空にして保存するだけです(設定したファイルパスは削除されません)。", "想要的新功能或改进想法": "実現したい新機能や改善のアイデア", "所有未单独配置的提供商都用这一份": "個別設定していないすべてのプロバイダーがこれを使用します", "所有菜单都已在这一组": "すべてのメニューがこのグループにあります", "手机端可管理所连接网关的账号、签到与插件,并使用提供商声明的动态登录入口;其余既有添加入口、编辑凭证和改写客户端配置仍需桌面面板。": "モバイル版は接続先ゲートウェイのアカウント、チェックイン、プラグインを管理し、プロバイダーが宣言した動的ログイン方式を利用できます。その他の既存の追加機能、認証情報の編集、クライアント設定の変更にはデスクトップパネルが必要です。", "托管网页界面": "Web UI を配信", "把地址里的 your-server 与 USERNAME 换成你自己的;目录不存在时会自动创建。": "URL 内の your-server と USERNAME を自分の環境に置き換えてください。ディレクトリが無い場合は自動で作成します。", "把整份数据库(账号、网关配置、事件日志、请求统计、调试报文与桌面设置)导出成一个 SQL 文件,恢复时整体替换本机全部数据 —— 与上面「账号导入 / 导出」的逐条合并是两种语义:恢复会连配置、日志与当前启用状态一起换成备份那台机器的状态。导出默认包含日志与调试报文(文件可能很大),不需要时可以取消勾选只备业务数据。恢复前会自动把当前数据备份到配置目录的 backups/ 下,恢复后需要重新登录管理面板。": "データベース全体(アカウント・ゲートウェイ設定・イベントログ・リクエスト統計・デバッグペイロード・デスクトップ設定)を 1 つの SQL ファイルに書き出し、復元時はこのマシンの全データをまるごと置き換えます —— 上の「アカウントのインポート / エクスポート」とは意味が別で、あちらは 1 件ずつのマージ、復元は設定・ログ・有効状態までバックアップしたマシンの状態にそっくり入れ替わります。書き出しは既定でログとデバッグペイロードを含みます(ファイルは大きくなりがち)。不要ならチェックを外して業務データだけにできます。復元の直前には現在のデータを設定フォルダの backups/ へ自動バックアップし、復元後は管理パネルへ再ログインが必要です。", "把整次请求交给视觉模型,由它直接回答,不再回到原模型。": "リクエスト全体を視覚モデルに渡し、元のモデルに戻らず直接回答します。", "把菜单移入 {name}": "メニューを {name} へ移動", "把菜单移入「{name}」": "メニューを「{name}」へ移動", "把账号、网关配置、自定义提供商、Agent 配置、代理池 / 订阅、签到与余额记录同步到 WebDAV 或 S3 兼容存储,换台机器后一键取回。事件日志、请求明细、调试报文与面板登录态不在同步范围内(它们是本机的运行痕迹)。上传的账号凭证仍是加密形态,解密用的账号密钥由「同步密码」单独加密后一并上传 —— 同步密码不会保存到云端,换机下载时需要重新输入。": "アカウント、ゲートウェイ設定、カスタムプロバイダー、Agent 設定、プロキシプール / サブスクリプション、チェックインと残高の記録を WebDAV または S3 互換ストレージに同期し、別のマシンでワンクリックで復元できます。イベントログ、リクエスト明細、デバッグ通信記録、パネルのログイン状態は対象外です(これらは本機の実行履歴です)。アップロードされるアカウント認証情報は暗号化されたままで、復号に使うアカウントキーは「同期パスワード」で別途暗号化して一緒にアップロードします。同期パスワードはクラウドに保存されないため、別のマシンで復元する際に再入力が必要です。", "把路径里的主目录显示成 ~,截图分享时不暴露用户名": "パス内のホームディレクトリを ~ と表示し、スクリーンショットでユーザー名が漏れないようにします", "把路径里的主目录(如 C:\\Users\\你的用户名)显示成 ~,截图分享时不暴露用户名。只影响本页显示与复制,不改任何文件。": "パス内のホームディレクトリ(例: C:\\Users\\ユーザー名)を ~ と表示し、スクリーンショットでユーザー名が漏れないようにします。このページの表示とコピーだけに影響し、ファイルは変更しません。", "报表天数": "レポートの日数", "报表页的热力图与按天趋势,默认 99999 天(近似全量保留),可填 1–99999 天。": "レポートページのヒートマップと日次トレンド。既定は 99999 日(ほぼ全量保持)で、1〜99999 日を指定できます。", "拖动分组 {name}": "グループ {name} をドラッグ", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "左側の ⠿ をドラッグして順序を変更(メニューはグループをまたげます)。スイッチで表示/非表示、グループ名をクリックで名前変更、グループ見出しの + で他のメニューを移動、目のボタンでグループごと非表示。変更は即座に反映され保存されます(左のサイドバーが結果です)。キーボード操作:ハンドルにフォーカスして Alt+↑ / ↓。", "拖动菜单 {name}": "メニュー {name} をドラッグ", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "ドラッグでグループの順序を変更(Alt+↑ / ↓ でも可)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "ドラッグで順序を変更、グループをまたげます(Alt+↑ / ↓ でも可)", "指定备选仍受当前请求权限和路由范围限制,路由组请求不会跳到组外。不会转为辅助识图继续。": "指定した代替モデルにも現在の権限とルート範囲が適用されます。ルートグループ外には転送せず、補助画像読み取りに切り替えて続行することもありません。", "指定提供商": "指定したプロバイダー", "指定角色": "指定したロール", "指定错误码直接换号": "指定エラーコードで直接アカウント切替", "指纹脱敏": "フィンガープリント除去", "指纹脱敏会在转发前按词表顺序改写请求消息中的文本,包括对话内容、思考内容和工具调用参数。默认词表包含客户端模板句与计费表头的精确替换、正则删除规则,可以新增、编辑、删除、启停和调整顺序;替换内容留空表示删除匹配内容。默认应用全部提供商,也可指定多家。改动只作用于发给上游的副本,响应内容不变。编辑后点击「保存设置」,下一次请求生效;清空词表表示不做任何指纹改写,恢复默认只重置词表。": "転送前にルールの順序でメッセージのテキストを変更します。会話、思考内容、ツール呼び出し引数が対象です。デフォルトにはクライアントの定型文と課金ヘッダーを対象にした完全一致の置換と正規表現の削除が含まれます。ルールの追加、編集、削除、有効・無効の切り替え、並べ替えが可能です。置換内容が空なら一致部分を削除します。デフォルトですべてのプロバイダーに適用し、複数の指定も可能です。アップストリームに送るコピーのみを変更し、応答は変更しません。「設定を保存」を押すと次のリクエストから有効です。空の一覧では何も変更せず、デフォルト復元はルールだけをリセットします。", "指纹脱敏设置仅本次运行生效,写入数据库失败,请检查配置目录": "設定は今回の実行中のみ有効です。データベースへの書き込みに失敗しました。設定ディレクトリを確認してください。", "指纹脱敏设置已刷新": "フィンガープリントのマスキング設定を更新しました", "按下面两块设置处理图片;关闭后设置全部保留。": "下の 2 つのブロックの設定で画像を処理します。オフにしても設定はすべて残ります。", "按原文精确匹配,区分大小写;不会自动去掉首尾空白。": "大文字・小文字を区別して原文と完全一致で比較します。前後の空白は削除しません。", "按天聚合保留天数": "日次集計の保持日数", "按指定备选顺序尝试": "指定した代替モデルを順番に試す", "按提供商查看和调整专属选项": "プロバイダー固有の設定を確認・変更", "按提供商筛选设置": "プロバイダーで設定を絞り込む", "按提供商管理专属选项,作用于当前网关中该提供商的所有账号。": "プロバイダー固有の設定を管理します。変更は現在のゲートウェイにある、そのプロバイダーのすべてのアカウントに適用されます。", "按提供商配置": "プロバイダー別設定", "按每条请求的软件标识识别客户端,不依赖 API Key。规则修改只影响新请求,内置规则随软件更新,自定义规则参与备份与云同步。": "各リクエストのソフトウェア識別情報を使用し、API Keyには依存しません。ルール変更は新しいリクエストにのみ適用されます。内蔵ルールはアプリ更新に追従し、カスタムルールはバックアップとクラウド同期の対象です。", "换一台服务器": "別のサーバーに切り替える", "排队等待": "キューイング待機", "排队等待次数": "キューイングの待機回数", "排队等待秒数": "キューイングの待機秒数", "排队等待设置已刷新": "キューイング待機設定を更新しました", "接入": "接続", "接受调用方来源声明": "呼び出し元の申告を受け付ける", "接管回答的模型": "回答を引き継ぐモデル", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "サイドバーに表示するメニュー、その順序、グループ分けを設定します。非表示はナビゲーションの表示だけに影響し、アクセス権は失われません。非表示にしたページも URL から直接開けます。", "控制报表与请求日志里 Token 读数的写法:开启后按「万 / 亿」式的本地量级词显示(简体为万 / 亿,繁体为萬 / 億,日文为万 / 億,韩文为만 / 억),关闭则用 k / M 缩写(与上游文档、接口字段的写法一致)。英文 / 葡语的本地量级词就是 k / M,这项对它们没有区别。只影响显示口径,不改变任何统计与存储的数值。": "レポートとリクエストログにおける Token の数値表記を制御します:オンにすると「万 / 億」式のローカル量級語で表示し(簡体字は万 / 亿、繁体字は萬 / 億、日本語は万 / 億、韓国語は만 / 억)、オフにすると k / M 略記を使用します(アップストリームのドキュメントやインターフェースのフィールド表記と一致)。英語 / ポルトガル語ではローカル量級語がそのまま k / M なので、この項目による違いはありません。影響するのは表示の形式のみで、統計や保存される数値は変わりません。", "控制报表与请求日志里 Token 读数的写法:开启后按中文量级显示(1.2亿 / 8400万),关闭则用 k / M / B 缩写(与上游文档、接口字段的写法一致)。这只影响显示口径,不改变任何统计与存储的数值。": "レポートとリクエストログの Token 表記を切り替えます。オンでは中国語の数量単位(1.2億 / 8400万)、オフでは k / M / B の略記(上流のドキュメントや API フィールドと同じ書き方)で表示します。表示だけが変わり、統計値や保存値は変わりません。", "控制界面的深浅色,与左侧边栏底部的三个主题按钮是同一个设置(改哪一处,另一处立刻跟上)。「跟随系统」会随操作系统当前的浅色 / 深色自动切换,并在系统主题变化时即时跟上;选「浅色」或「深色」则把界面固定在该模式,不再随系统变化。窗口标题栏的深浅色会一并同步,不会出现深色界面配一条浅色标题栏的情况。": "UI のライト / ダークを制御します。左サイドバー下部の 3 つのテーマボタンと同じ設定です(どちらを変更しても、もう一方にすぐ反映されます)。「システム」は OS の現在のライト / ダークに自動で切り替わり、システムテーマの変化にも即座に追従します。「ライト」または「ダーク」を選ぶと UI はそのモードに固定され、システムには連動しなくなります。ウィンドウタイトルバーのライト / ダークも一緒に同期され、ダークの UI にライトのタイトルバーが付くようなことはありません。", "提供商与模型": "プロバイダーとモデル", "提供商专属设置": "プロバイダー固有の設定", "提供商当前不可用,未保存的修改已保留;恢复插件后可继续编辑。": "現在このプロバイダーを利用できません。未保存の編集は保持されています。プラグインが復旧すると編集を続けられます。", "提供商设置已保存": "プロバイダー設定を保存しました", "提供商设置返回格式无效,请刷新后重试": "プロバイダー設定の応答形式が無効です。更新してから再試行してください。", "提建议": "提案する", "提示词文件": "システムプロンプトファイル", "提示词文件已更新": "システムプロンプトファイルを更新しました", "提示词正文": "システムプロンプト本文", "提示词正文已更新": "システムプロンプト本文を更新しました", "插件或设置已变化,请放弃修改并刷新后重新编辑。": "プラグインまたは設定が変更されました。変更を破棄して更新し、再度編集してください。", "操作系统": "オペレーティングシステム", "支持 .a2ab 加密备份和旧 .sql 文件;旧 SQL 不包含恢复密钥,跨机器导入仍需原机密钥。": "暗号化された .a2ab と旧 .sql に対応しています。旧 SQL には復元鍵が含まれないため、別端末への移行には元の端末の鍵が必要です。", "支持 PNG、JPG、WebP,最大 2 MiB、4096 × 4096 像素;自动缩小至 512 像素以内,建议使用正方形图片。": "PNG、JPG、WebP に対応。最大 2 MiB、4096 × 4096 ピクセルです。512 ピクセル以内に自動縮小します。正方形の画像を推奨します。", "改动仍保存在本机,修复网络或凭据后下一次改动会自动重试,也可以手动点「上传到云端」。": "変更は本機に保存されています。ネットワークや認証情報を修正すれば次回の変更で自動的に再試行されます。手動で「クラウドへアップロード」を押すこともできます。", "改动仍保存在本机,系统会延长等待并自动重试;修复网络或凭据后,也可以手动点「上传到云端」。": "変更はこの端末に保存されています。待機時間を延ばして自動再試行します。ネットワークや認証情報を修正した後、「クラウドにアップロード」を手動で選ぶこともできます。", "改完立即生效,不用重启(下一个请求就用新模式)。降级是自动的临时状态,解除后本模式自己的提示词立刻恢复。": "変更後は即時有効で再起動は不要です(次のリクエストから新しいモードが適用されます)。フォールバックは自動的な一時状態で、解除されると本モード自身のシステムプロンプトがすぐに復帰します。", "放大或缩小整个界面(文字与控件一起变),效果与浏览器 Ctrl +/- 相同:共 11 档,立即生效并记住。": "UI 全体を拡大または縮小します(文字とコントロールが一緒に変化)。効果はブラウザーの Ctrl +/- と同じ:全 11 段階で、即時有効かつ記憶されます。", "放弃修改并刷新": "変更を破棄して更新", "数据": "データ", "数据保留": "データ保持", "数据保留设置已刷新": "データ保持設定を更新しました", "数据存储": "データストレージ", "数据库 schema": "データベース schema", "数据库不可用": "データベース利用不可", "数据库与恢复密钥一起加密保存。密码不会保存在应用或备份中,忘记后无法恢复,请妥善保管。": "データベースと復元鍵を一緒に暗号化します。パスワードはアプリにもバックアップにも保存されません。忘れると復元できないため、大切に保管してください。", "数据库主文件与 WAL 文件的总占用,与请求日志清理弹窗采用同一口径;清理后可压缩数据库回收空闲空间。": "データベースのメインファイルと WAL ファイルの合計サイズです。リクエストログのクリア画面と同じ計算方法です。クリア後はデータベースを圧縮して未使用領域を回収できます。", "数据库文件": "データベースファイル", "数据目录": "データディレクトリ", "数据统一保存在配置目录下的 agent2api.db;如需更换位置,请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "データは設定ディレクトリ配下の agent2api.db にまとめて保存されます。場所を変更する場合は、環境変数 AGENT2API_PROXY_HOME を設定してからプログラムを再起動してください。", "整体替换": "まるごと置き換え", "整库备份 / 恢复": "データベース全体のバックアップ / 復元", "整次请求交给 {model} 直接回答,不再回到原模型。": "リクエスト全体を {model} に渡し、元のモデルに戻らず直接回答します。", "新分组名": "新しいグループ名", "新增 {added} 个、更新 {updated} 个{suffix}{note}": "新規 {added} 件、更新 {updated} 件{suffix}{note}", "新增脱敏规则": "マスキングルールを追加", "新增规则": "ルールを追加", "新安装和升级后默认关闭。先配置再开启,关闭后保留配置。": "新規インストール時とアップグレード後はデフォルトで無効です。設定してから有効にしてください。無効にしても設定は保持されます。", "新密码": "新しいパスワード", "新密码不能与当前密码相同": "新しいパスワードは現在のものと異なる必要があります", "新密码至少 8 位": "パスワードは 8 文字以上にしてください", "新建分组": "グループを追加", "新建客户端分类": "クライアント分類を新規作成", "无效或重复的标识请求头:{headers}": "無効または重複した識別ヘッダー:{headers}", "无法读取品牌设置": "ブランド設定を読み取れません", "无法读取图片,请重新选择": "画像を読み取れません。選び直してください", "日志与请求日志同时受保留天数和数量上限限制。日志默认 30 天、10000 条,各级别按比例保留;调试详情最多保留 3 天。请求日志默认 99999 天、1000000 条(100 万),超出后从最旧的记录开始清理,并同步删除对应原始正文。按天聚合默认 99999 天,只按天数保留,不受请求日志数量清理影响。天数可填 1–99999,数量可填 1–100000000。调小任一设置并确认后立即清理,且不可恢复。": "ログとリクエストログには保存日数と件数上限の両方が適用されます。ログの既定は 30 日・10000 件で、レベルごとに比例配分して保持します。デバッグ詳細は最大 3 日です。リクエストログの既定は 99999 日・1000000 件(100 万件)で、超過分は古い記録から対応する元の本文とともに削除します。日次集計の既定は 99999 日で、日数のみで保持し、リクエストログの件数による削除には影響されません。日数は 1–99999、件数は 1–100000000 を指定できます。設定を減らして確認すると直ちに削除され、元に戻すことはできません。", "日志保留数量上限": "ログの保存件数上限", "日志文件": "ログファイル", "日语": "日本語", "显示 {name}": "{name} を表示", "显示分组 {name}": "グループ {name} を表示", "显示名称": "表示名", "显示名称最多 64 个字符": "表示名は最大 64 文字です", "显示模式": "表示モード", "显示这一组": "このグループを表示", "暂无可编辑的提供商设置": "編集可能なプロバイダー設定はありません", "暂无自定义规则,正在使用内置识别。也可以从请求详情直接添加规则。": "カスタムルールはありません。内蔵識別を使用中です。リクエスト詳細からもルールを追加できます。", "暂未获取到本机访问地址,请使用其他设备能连接到的本机 IP 与网关端口。": "この端末のアクセスアドレスをまだ取得できていません。他の端末から到達できる本機の IP とゲートウェイのポートを使用してください。", "更新": "更新", "更新出网线路": "更新の出口経路", "更新通道": "更新チャネル", "替换": "置換", "替换 = 客户端 system / developer 消息全部删掉,换成网关的提示词;追加 = 保留客户端内容,只在开头 system 块之后多插一条。两者都只改发给上游的副本,客户端看到的响应不变。": "置換 = クライアントの system / developer メッセージをすべて削除し、ゲートウェイのシステムプロンプトに差し替えます。追加 = クライアントの内容を保持し、先頭の system ブロックの後ろに 1 件挿入するだけ。どちらもアップストリームへ送るコピーのみを変更し、クライアントが見るレスポンスは変わりません。", "替换为网关提示词": "ゲートウェイのシステムプロンプトに置換", "替换内容": "置換内容", "替换内容最多 {max} 个字符": "置換内容は {max} 文字以内で入力してください", "替换前会自动把当前数据备份到配置目录的 backups/ 文件夹。": "置き換えの直前、現在のデータを設定フォルダの backups/ へ自動バックアップします。", "替换并恢复": "置き換えて復元", "最多 64 个字符,留空恢复为 Agent2API。": "最大 64 文字。空欄にすると Agent2API に戻ります。", "最小自动上传间隔": "自動アップロードの最小間隔", "最近 {window} 条请求中,{scanned} 条有识别依据,{matched} 条符合条件,{applied} 条会采用本规则。": "直近{window}件のうち、{scanned}件に識別根拠があり、{matched}件が条件に一致し、{applied}件にこのルールが適用されます。", "有未保存的修改": "未保存の変更があります", "有未保存的改动:保存后才能同步(测试连接不受影响)。": "未保存の変更があります。同期するには先に保存してください(接続テストは可能です)。", "有近期套餐池请求时读取库存状态的间隔,默认 2500 毫秒,可填 1000–30000。没有近期请求时降低读取频率,轮询不会发起验证码。": "最近の Start Plan リクエストがある場合の在庫取得間隔です。既定は 2500 ミリ秒、範囲は 1000~30000 です。リクエストがない場合は頻度を下げ、ポーリングで認証を開始しません。", "服务商": "プロバイダー", "服务器地址": "サーバーアドレス", "服务端密钥加密保存,不会返回浏览器;切回 ALTCHA 后会保留,方便再次启用。": "シークレットキーは暗号化して保存され、ブラウザーには返されません。ALTCHA に戻しても保持されるため、後から再び有効にできます。", "服务端密钥(Secret Key)": "シークレットキー(Secret Key)", "期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "このモードの間、独自のプロンプトは送信されません。プロンプトを修正できたらすぐ解除できます。", "未保存": "未保存", "未匹配已知客户端": "既知のクライアントに一致しません", "未单独配置:模式、提示词文件与正文都跟随上面的全局配置(当前「{mode}」)。": "個別設定なし:モード、システムプロンプトファイル、本文はいずれも上記のグローバル設定に従います(現在は「{mode}」)。", "未启用": "無効", "未开启轻量模式:关窗仅隐藏窗口,界面进程常驻内存,随时打开不等待": "軽量モードはオフ:ウィンドウを閉じても非表示になるだけで、UI プロセスはメモリに常駐し、いつでも待ち時間なく開けます", "未开启,developer 角色消息会原样发往上游,不认识该角色的上游会报错(400)。": "無効:developer ロールのメッセージはそのままアップストリームへ送られ、このロールを認識しないアップストリームはエラー(400)を返します。", "未开启,客户端 system 模板会原样发往上游,可能被内容审核误拦(400)。": "オフの場合、クライアントの system テンプレートはそのままアップストリームへ送られ、コンテンツ審査で誤ってブロックされる(400)可能性があります。", "未开启,浏览器跨域无法直连网关。": "オフの場合、ブラウザーから CORS でゲートウェイに直接接続できません。", "未开启,转发时不保存任何原始报文。": "オフの場合、転送時に生のメッセージは一切保存されません。", "未开启:网关只监听 127.0.0.1,仅本机可以访问。": "オフ:ゲートウェイは 127.0.0.1 のみで待ち受け、本機からのみアクセスできます。", "未注册": "未登録", "未注册闸门": "未登録ゲート", "未知原因": "不明な原因", "未知来源": "不明な出典", "未知设备": "不明なデバイス", "未知账号": "不明なアカウント", "未能读取 Cline 伪装头设置,请稍后重试": "Cline 偽装ヘッダー設定を読み込めませんでした。しばらくしてから再試行してください", "未能读取 models.dev 元数据状态,请稍后重试": "models.dev メタデータの状態を取得できませんでした。しばらくして再試行してください。", "未能读取云同步设置,请稍后重试。": "クラウド同期の設定を読み取れませんでした。しばらくしてから再試行してください。", "未能读取保存后的指纹脱敏设置": "保存後のマスキング設定を読み取れませんでした", "未能读取开发者角色兼容设置,请稍后重试": "developer ロール互換の設定を読み取れませんでした。しばらくしてから再試行してください", "未能读取指纹脱敏设置,请稍后重试": "フィンガープリントのマスキング設定を読み込めませんでした。しばらくしてから再試行してください", "未能读取机器人校验设置": "ボット対策の設定を読み取れませんでした", "未能读取第三方模型回答完自动折叠过程设置,请稍后重试": "サードパーティモデルの回答後の工程の自動折りたたみ設定を読み取れませんでした。しばらくしてから再試行してください", "未能读取系统提示词设置,请稍后重试": "システムプロンプト設定を読み込めませんでした。しばらくしてから再試行してください", "未能读取网关跨域访问设置,请稍后重试": "ゲートウェイの CORS アクセス設定を読み込めませんでした。しばらくしてから再試行してください", "未能读取网络访问设置,请稍后重试": "ネットワークアクセス設定を読み込めませんでした。しばらくしてから再試行してください。", "未能读取调试模式设置,请稍后重试": "デバッグモード設定を読み込めませんでした。しばらくしてから再試行してください", "未能读取账户信息,请稍后重试": "アカウント情報を取得できませんでした。しばらくしてから再試行してください", "未采用本规则,请检查开关、来源声明或规则顺序": "このルールは適用されません。スイッチ、呼び出し元の申告、ルール順序を確認してください。", "本地账号、配置、签到与余额记录变化后自动上传(合并 1 秒内的连续改动,最长 10 秒传一次;内容没变时不发请求)。": "ローカルのアカウント・設定・チェックイン・残高記録の変更後に自動アップロードします(1 秒以内の連続変更はまとめ、最大 10 秒に 1 回。内容が変わっていなければリクエストしません)。", "本机 API 地址": "この端末の API アドレス", "本机 APK 版本": "この端末の APK バージョン", "本机全部数据会被备份整体替换,恢复前自动保留安全备份,完成后需要重新登录管理面板。本机已有密钥不会被覆盖。": "この端末のデータベース内の全データが置き換わります。事前に安全バックアップを保存し、完了後は再ログインが必要です。既存の鍵は上書きしません。", "本机应用版本": "この端末のアプリバージョン", "本机界面版本": "この端末の UI バージョン", "本机的业务数据(账号、配置、Agent 配置、代理池 / 订阅、签到与余额记录)将上传并": "本機の業務データ(アカウント・設定・Agent 設定・プロキシプール / サブスクリプション・チェックインと残高の記録)をアップロードし、", "本机的全部数据(账号、网关配置、日志统计与桌面设置)将被所选备份文件": "このマシンの全データ(アカウント・ゲートウェイ設定・ログ統計・デスクトップ設定)は、選択したバックアップファイルで", "本机的账号、网关配置、Agent 配置、代理池 / 订阅、签到与余额记录将被远端快照": "本機のアカウント・ゲートウェイ設定・Agent 設定・プロキシプール / サブスクリプション・チェックインと残高の記録は、リモートのスナップショットで", "本次无需刷新": "今回は更新の必要がありません", "本软件不提供任何担保,可按 AGPL-3.0 修改与分发;通过网络提供修改版服务时须向用户提供对应源码。": "本ソフトウェアは無保証で、AGPL-3.0 に従い改変・配布できます。改変版をネットワークサービスとして提供する場合は、利用者に対応するソースを提供してください。", "本项目的 AGPL-3.0 许可不替代这些第三方许可。名称与标识的商标权归各自权利人所有。": "本プロジェクトの AGPL-3.0 ライセンスは、これらのサードパーティライセンスに代わるものではありません。名称とロゴの商標権は、それぞれの権利者に帰属します。", "机器人校验": "ロボット検証", "机器人校验设置已保存": "ボット対策の設定を保存しました", "条数": "件数", "来源声明当前关闭,这条规则不会生效。请先在客户端识别设置中开启。": "呼び出し元の申告は無効なため、このルールは適用されません。先にクライアント識別設定で有効にしてください。", "来源声明无效或未登记,本次已忽略。": "申告が無効または未登録のため無視しました。", "来源声明未启用,本次已忽略。": "呼び出し元の申告は無効のため無視しました。", "来源版本": "出典のリビジョン", "来源设备:{device}": "取得元デバイス:{device}", "来自 {device},生成于 {time}": "{device} から、{time} に作成", "架构": "アーキテクチャ", "查看内置客户端({n})": "内蔵クライアントを表示({n})", "查询管理员状态失败:{message}": "管理者状態の照会に失敗しました:{message}", "校验身份:这三段必须各自成块排在最前(实测:三段并成一段会被回 405 / 3012)。因此这里按段编辑,不能合成一段。改过的段以你的文本为准,没改的段继续用官方原文;清空某一段 = 那一段恢复官方原文。": "で身元を検証します:この 3 つの段はそれぞれ独立したブロックとして先頭に並ぶ必要があります(実測:3 段をまとめて 1 段にすると 405 / 3012 が返ります)。そのためここでは段ごとに編集し、1 段にまとめることはできません。変更した段はあなたのテキストが優先され、変更していない段は引き続き公式原文を使用します。ある段を空にする = その段は公式原文に戻ります。", "桌面端": "デスクトップ版", "桌面端登录 / 注册验证": "デスクトップ版のログイン / 登録時の認証", "桌面端:登录 / 注册需要 ALTCHA 人机验证": "デスクトップ:ログイン / 登録に ALTCHA の認証が必要", "桌面端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "デスクトップ:ログイン / 登録に ALTCHA の認証が必要(現在使用中)", "桌面运行时不可用,暂时无法保存": "デスクトップランタイムが利用できないため、保存できません", "档案": "プロファイル", "检测中…": "確認中…", "概览": "概要", "模型不能直接看图时,按你选择的方式处理。原生支持图片的请求直接转发,不增加识图调用。": "モデルが画像を直接認識できない場合に、選択した方式で処理します。画像に対応するモデルへのリクエストは追加の読み取りを行わず、そのまま転送します。", "模型单独配置": "モデル別設定", "模型目录没写明是否支持图片时按这里处理。": "モデル一覧に画像対応の記載がない場合の扱いです。", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。下面两块分别选好「哪些模型」和「用哪只模型」即可;没配到的模型、以及本来就能看图的模型,一律原样放行。这里的改动立即生效,不需要保存。": "画像を読めないモデルへの対処は 2 通りだけです。別のモデルに読ませるか、リクエスト全体を画像を読めるモデルに渡すかです。下の 2 つのブロックで「対象のモデル」と「使うモデル」を選んでください。ここに含まれないモデルと、もともと画像を読めるモデルはそのまま通します。ここの変更はすぐ反映され、保存は不要です。", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。没配到的模型、以及本来就能看图的模型,一律原样放行;每个请求只用其中一种方式,不会两种串着做,处理失败也不会改走另一种。改动立即生效,不需要保存。": "画像を読めないモデルへの対処は 2 通りだけです。別のモデルに読ませるか、リクエスト全体を画像を読めるモデルに渡すかです。ここに含まれないモデルと、もともと画像を読めるモデルはそのまま通します。1 つのリクエストで使う方式は 1 つだけで、2 つを続けて実行することはなく、失敗してももう一方には切り替えません。ここの変更はすぐ反映され、保存は不要です。", "模型请求是否需要验证码由 ZCode 上游配置决定,领取验证与模型请求免验证分别处理。后台只检查配置和库存,不自动运行验证码或弹出拼图;需要验证时,在账号的「套餐明细」中点击「开始验证」。验证令牌一次性使用,短时间内过期,失败或取消后不会自动重试。": "モデルリクエストの認証要否は ZCode の上流設定で決まり、プラン受け取りの認証とは別に扱います。バックグラウンドは設定と在庫のみを確認し、認証やパズルを自動表示しません。必要な場合は「プラン詳細」で「認証を開始」を押してください。トークンは一度のみ使用でき短時間で失効し、失敗やキャンセル後は自動再試行しません。", "模式": "モード", "模式改为「{mode}」": "モードを「{mode}」に変更しました", "次": "回", "次日 00:00": "翌日 00:00", "正则表达式": "正規表現", "正在保存上游原始报文:": "アップストリームの生メッセージを保存中:", "正在修改…": "変更中…", "正在剥离出站请求里的审核指纹:表头键值整段删除,模板句最小改写。": "送信リクエスト内の審査フィンガープリントを除去しています:ヘッダーのキーと値は丸ごと削除し、テンプレート文は最小限に書き換えます。", "正在安装…": "インストール中…", "正在应答跨源请求:浏览器跨域请求可直连 /v1/*。": "クロスオリジンリクエストに応答中:ブラウザーからの CORS リクエストは /v1/* に直接接続できます。", "正在归一角色:developer 角色消息转发前改写为 system。": "ロールを正規化中:developer ロールのメッセージは転送前に system に書き換えられます。", "正在注册…": "登録中…", "正在联网更新": "オンラインで更新中", "正在读取提供商设置…": "プロバイダー設定を読み込み中…", "正式版": "正式版", "每个请求只会用到其中一种方式,不会两种串着做;处理失败也不会改走另一种。配了哪只视觉模型,那次请求的图片就会交给它。": "1 つのリクエストで使う方式は 1 つだけです。2 つを続けて実行することはなく、失敗してももう一方には切り替えません。設定した視覚モデルに、そのリクエストの画像が渡されます。", "每条请求轮换到下一个可用账号;新会话交给当前最闲的那位。适合想把手里的号摊开用、不让某一个一直扛。": "リクエストごとに次の利用可能なアカウントへ順送りし、新しいセッションはいちばん暇なアカウントに任せます。手持ちのアカウントをまんべんなく使いたいときに。", "每条请求都重新按策略选路 —— 行为与「关闭」一致,仅保留会话识别的记录。": "リクエストごとに戦略に従って選び直します —— 動作は「オフ」と同じで、セッションの記録だけが残ります。", "每次等待的时长,默认 0 = 跟随上游建议(实测 9~30 秒,上游没给建议时用 15 秒)。可填 0–120 秒强制一个固定时长。": "1 回の待機時間。デフォルト 0 = アップストリームの推奨に従う(実測 9~30 秒、アップストリームが推奨を示さない場合は 15 秒)。0–120 秒を入力して固定の待機時間を強制することもできます。", "每行一个域名,不填协议、端口或路径;与 Cloudflare 中的配置一致,服务端按完整域名匹配。手机 App 使用所连接网关的域名。": "1 行に 1 つのホスト名を入力し、プロトコル・ポート・パスは含めないでください。Cloudflare の設定と一致させてください。サーバーはホスト名を完全一致で確認します。モバイルアプリは接続先ゲートウェイのホスト名を使用します。", "毫秒": "ミリ秒", "沟通方式 / 上下文管理 + Environment 段。": "コミュニケーション方針 / コンテキスト管理 + Environment の段です。", "没有可导出的账号": "エクスポートできるアカウントがありません", "没有可用视觉模型时": "利用可能な視覚モデルがない場合", "没有已确认支持图片的模型,请先在模型管理中确认。": "画像対応が確認済みのモデルがありません。先にモデル管理で確認してください。", "没能读到「{label}」的当前值,改为 {count} 条可能会删除超出的历史数据。": "「{label}」の現在値を読み取れませんでした。{count} 件に変更すると、超過した履歴データが削除される可能性があります。", "没能读到「{label}」的当前值,改为 {days} 天可能会删除超出的历史数据。": "「{label}」の現在値を読み取れませんでした。{days} 日に変更すると超過した履歴データが削除される可能性があります。", "沿用对应方式的视觉模型配置,不额外维护一份模型列表。": "該当する方式の視覚モデル設定を利用します。別のモデル一覧は不要です。", "沿用工具服务的视觉分析模型": "ツールサービスの視覚分析モデルを利用", "沿用工具服务的视觉分析模型(未配置)": "ツールサービスの視覚モデルを使う(未設定)", "注册并开启": "登録してオンにする", "注册管理员账号": "管理者アカウントを登録", "注意:这一家的「网关自带」开关现在是关的,改过的正文要等开关打开才生效。": "注意:このプロバイダーの「ゲートウェイ内蔵」スイッチは現在オフです。変更した本文はスイッチをオンにするまで有効になりません。", "流式响应相邻数据之间允许的最大空闲时间(秒),收到新数据后重新计时,默认 300 秒,范围 1~3600。": "ストリーミング応答の隣接するデータ間に許される最大アイドル時間(秒)。新しいデータを受信すると計時がリセットされます。デフォルト 300 秒、範囲 1~3600。", "流式响应空闲超时": "ストリーミング応答アイドルタイムアウト", "测试连接": "接続テスト", "浏览器 / PWA": "ブラウザ / PWA", "浏览器只在 https 或 localhost 下提供离线缓存;局域网 http 访问不影响正常使用": "ブラウザは https または localhost でのみオフラインキャッシュを提供します。LAN の http アクセスでも通常どおり使えます。", "浏览器在本地完成计算,不需要第三方密钥,也不依赖外部验证服务。": "ブラウザー内で計算を行います。外部サービスのキーや認証サービスは不要です。", "浏览器标签页": "ブラウザのタブ", "浏览器面板": "ブラウザパネル", "消息角色": "メッセージのロール", "添加备选模型": "代替モデルを追加", "添加提供商": "プロバイダーを追加", "添加提供商…": "プロバイダーを追加…", "添加自定义头": "カスタムヘッダーを追加", "添加要单独配置的提供商": "個別設定するプロバイダーを追加", "清除本机凭证": "この端末の認証情報を削除", "清除这里的正文": "ここの本文をクリア", "源代码": "ソースコード", "点下面的入口会用系统默认浏览器打开 GitHub 的对应表单(需要 GitHub 账号,模板已预设好,填完直接提交即可)。": "下のリンクをクリックすると、システムのデフォルトブラウザーで GitHub の該当フォームが開きます(GitHub アカウントが必要。テンプレートは用意済みなので、記入してそのまま送信するだけです)。", "点击重命名": "クリックで名前を変更", "点此添加或切换服务器": "タップしてサーバーを追加・切り替え", "点此添加服务器": "タップしてサーバーを追加", "版本": "バージョン", "版本信息": "バージョン情報", "版本信息 · 所连网关环境": "バージョン情報 · 接続中のゲートウェイ", "版权声明": "著作権表示", "状态码 {code} 已在名单里": "ステータスコード {code} はすでにリストにあります", "状态码必须是 {min}–{max} 的整数(收到: {text})": "ステータスコードは {min}–{max} の整数でなければなりません(受信値:{text})", "环境": "環境", "生成时间:{time}": "作成日時:{time}", "生效顺序:有效的来源声明优先,然后按顺序匹配自定义规则,最后使用内置规则。中转丢失原始标识时,无法自动推断背后的软件。": "適用順序:有効な申告、カスタムルールの順序、内蔵ルール。中継で元の識別情報が失われた場合、元のソフトウェアを自動推定することはできません。", "用 models.dev 补齐上游没声明的模型能力与思考档位(联网刷新,内嵌快照始终生效)": "上流が宣言していないモデル能力と推論レベルを models.dev で補完する(オンライン更新。同梱スナップショットは常に有効)", "用于加密上云的账号密钥。请自己记牢 —— 它不保存到云端,换机下载时必须输入同一个密码,否则账号数据无法解密。": "クラウドに送るアカウントキーの暗号化に使います。忘れないでください —— クラウドには保存されず、別のマシンで復元する際に同じパスワードを入力しないとアカウントデータを復号できません。", "用哪只模型识图": "画像を読むモデル", "用浏览器菜单里的「添加到主屏幕」把这一页装成 App:全屏打开、没有地址栏,和原生应用一样。": "ブラウザメニューの「ホーム画面に追加」でこのページをアプリとして入れられます。全画面・アドレスバーなしで、ネイティブアプリと同じ感覚です。", "由 Cloudflare 提供验证,需要浏览器与网关均能连接 Cloudflare。验证失败或服务不可用时不会自动放行。": "Cloudflare が認証を提供します。ブラウザーとゲートウェイの両方から Cloudflare に接続できる必要があります。認証失敗やサービス停止時にアクセスを許可することはありません。", "由 {source} 覆盖,手动设置暂不生效": "{source} が優先され、手動設定は現在適用されていません", "界面缩放": "UI ズーム", "界面缩放比例": "UI ズーム比率", "界面语言": "表示言語", "界面语言。可选简体中文、繁體中文、English、日本語、한국어、Português (Brasil),或「跟随系统」(按浏览器 / 系统的语言列表自动选)。切换后整页立即刷新;该偏好只存在本机(localStorage),不影响账号、密钥与转发。": "表示言語。簡体字中国語、繁體中文、English、日本語、한국어、Português (Brasil)、または「システム」(ブラウザー / システムの言語リストに従って自動選択)から選べます。切り替えるとページ全体が即座に再読み込みされます。この設定は本機(localStorage)にのみ保存され、アカウント、キー、転送には影響しません。", "界面语言只保存在本机(localStorage)。切换后整页立即刷新,不影响账号、密钥与转发。": "表示言語は本機(localStorage)にのみ保存されます。切り替えるとページ全体が即座に再読み込みされ、アカウント、キー、転送には影響しません。", "界面里编辑的正文": "画面で編集した本文", "留空 = 用内置默认提示词": "空欄 = 内蔵のデフォルトシステムプロンプトを使用", "留空使用 AWS 官方地址": "空欄なら AWS 公式アドレスを使用", "留空使用默认": "空欄なら既定値を使用", "留空表示删除匹配内容;替换内容按原文写入,$ 不作为捕获组引用。": "空欄なら一致部分を削除します。置換内容はそのまま書き込み、$ をキャプチャグループ参照として扱いません。", "登录 / 注册需要通过 ALTCHA 人机验证(工作量证明)": "ログイン / 登録には ALTCHA の人間検証(プルーフ・オブ・ワーク)が必要です", "登录 / 账号切换 / 429 切换等系统事件,可填 1–3650 天。": "ログイン / アカウント切替 / 429 切替などのシステムイベント。1–3650 日の範囲で入力できます。", "登录 / 账号切换 / 429 切换等系统事件,可填 1–99999 天。": "ログイン / アカウント切り替え / 429 切り替えなどのシステムイベント。1〜99999 日で指定できます。", "登录 Agent2API": "Agent2API にログイン", "登录 {name}": "{name} にログイン", "登录人机验证": "ログイン CAPTCHA", "百分比类读数(如 OpenCode Go、Antigravity)不能相加,组头显示的是组内最低剩余比例。": "パーセント表示の読み取り値(OpenCode Go、Antigravity など)は合算できないため、帯にはグループ内で最も低い残り割合を表示します。", "监听地址": "待受アドレス", "目前展示仓库已登记的图标来源许可,不代表完整的第三方依赖清单。": "現在表示しているのは、リポジトリに登録済みのアイコン出典のライセンスです。サードパーティ依存関係の完全な一覧ではありません。", "目标路径:{path}": "保存先パス:{path}", "直接按上面的设置兼容": "上の設定でそのまま互換処理する", "直接按当前方式兼容": "選択した方式で直接処理", "知道了": "了解", "确定": "確定", "确定后加入当前草稿,点击「保存设置」才会生效。": "確定すると下書きに追加します。「設定を保存」を押すと有効になります。", "确定继续?": "続行しますか?", "确认上传": "アップロードを確認", "确认图片处理授权": "画像処理の許可を確認", "确认备份密码": "バックアップのパスワードを確認", "确认并保存": "確認して保存", "确认新密码": "新しいパスワード(確認)", "确认缩减数据保留": "データ保持の縮小を確認", "确认缩短保留天数": "保存日数の短縮を確認", "社区与支持": "コミュニティとサポート", "离线缓存未启用": "オフラインキャッシュは無効です", "积分合计只统计当前筛选出来的账号": "ポイント合計を現在の絞り込み結果のみで計算する", "移入「{name}」": "「{name}」へ移動", "程序路径": "実行ファイルのパス", "空 = 不要这一份,回落提示词文件 / 内置默认提示词。": "空 = この本文を使用せず、システムプロンプトファイル / 内蔵デフォルトにフォールバックします。", "空分组 · 点组头的 + 把菜单移进来": "空のグループ · 見出しの + でメニューを移動できます", "立即解除": "今すぐ解除", "站点密钥(Site Key)": "サイトキー(Site Key)", "第一段": "第 1 段", "第一段(身份句)": "第 1 段(アイデンティティ文)", "第三方应用密码": "サードパーティアプリのパスワード", "第三方开源许可": "サードパーティのオープンソースライセンス", "第三方模型回答完自动折叠过程": "サードパーティモデルの回答後の工程を自動で折りたたむ", "第三方模型回答完自动折叠过程设置已刷新": "サードパーティモデルの回答後の工程の自動折りたたみ設定を更新しました", "第三段": "第 3 段", "第三段(动态段)": "第 3 段(動的段)", "第二段": "第 2 段", "第二段(稳定段)": "第 2 段(安定段)", "等待响应超时": "応答待ちタイムアウト", "等待期间请求日志的状态列会显示「排队中」阶段,详情弹窗的「内部重试」里能逐次看到等待时长;等待用尽后返回 HTTP 503(不是 401/429:既不会刷新凭证,也不会把账号标成限额)。": "待機中はリクエストログのステータス列に「キューイング中」の段階が表示され、詳細ダイアログの「内部リトライ」で待機時間を 1 回ずつ確認できます。待機を使い切ると HTTP 503 を返します(401/429 ではありません:認証情報の更新も、アカウントをレート制限としてマークすることも行いません)。", "等比放大或缩小整个界面(文字、控件、间距一起变),效果与浏览器按 Ctrl +/- 相同:80%–130%、5% 一档。窗口本身不缩放,变的是页面内容的显示比例,设置立即生效并记住,下次启动直接按这个比例打开。放得越大可视范围越小,窗口较窄或表格较宽时不建议调得太大。": "UI 全体を等比で拡大または縮小します(文字、コントロール、余白が一緒に変化)。効果はブラウザーで Ctrl +/- を押した場合と同じ:80%–130%、5% 刻み。ウィンドウ自体は拡大縮小されず、変わるのはページ内容の表示比率です。設定は即時有効かつ記憶され、次回起動時はその比率で直接開きます。大きくするほど表示できる範囲は狭くなるため、ウィンドウが狭い場合やテーブルが広い場合はあまり大きくしすぎないことをおすすめします。", "简体中文": "簡体字中国語", "管理员已注册": "管理者登録済み", "管理员账号": "管理者アカウント", "管理插件": "プラグインを管理", "精确文本": "完全一致テキスト", "系统提示词模式": "システムプロンプトモード", "系统提示词设置已刷新": "システムプロンプト設定を更新しました", "累计请求": "累計リクエスト", "繁体中文": "繁体字中国語", "约 {n} 字符": "約 {n} 文字", "结构": "構造", "给 Codex 的响应补阶段标记,回答完后像官方模型一样把推理与命令过程折叠起来": "Codex へのレスポンスにフェーズマーカーを補い、回答後に公式モデルと同様に推論とコマンドの工程を折りたたむ", "继续并清理": "続行して削除", "编辑提示词正文 · {label}": "システムプロンプト本文を編集 · {label}", "编辑提示词正文 · 全局": "システムプロンプト本文を編集 · グローバル", "编辑正文": "本文を編集", "编辑网关自带提示词 · {label}": "ゲートウェイ内蔵システムプロンプトを編集 · {label}", "编辑脱敏规则": "マスキングルールを編集", "编辑识别规则": "識別ルールを編集", "缩放后重新存成 JPEG 时用的质量。默认 80,可填 40–95;数值越小体积越小、画质越差。": "縮小後の画像を JPEG で保存し直すときの品質です。既定 80、40〜95 で指定できます。小さいほど容量は減りますが画質が落ちます。", "缩放比例": "ズーム比率", "网关": "ゲートウェイ", "网关 Key 数量": "ゲートウェイキー数", "网关尚未就绪": "ゲートウェイの準備ができていません", "网关自带": "ゲートウェイ内蔵", "网关跨域访问已开启": "ゲートウェイの CORS アクセスをオンにしました", "网关跨域访问设置已刷新": "ゲートウェイの CORS アクセス設定を更新しました", "网关跨域访问(CORS)": "ゲートウェイの CORS アクセス(クロスオリジン)", "网关面(/v1/*)默认不应答浏览器跨源请求:页面直连会被预检拦下,只报「无法连接 API」。注意来源是 * —— 未配「网关 Key」时任何网页都能借本机网关打上游,故默认关闭;只给自己用的话,让页面与网关同源(本地反代 /v1)更稳妥。面板接口(/api/*)不受影响。": "ゲートウェイ側(/v1/*)はデフォルトでブラウザーのクロスオリジンリクエストに応答しません:ページから直接接続するとプリフライトで拒否され、「API に接続できません」としか表示されません。許可オリジンが * である点に注意 —— 「ゲートウェイキー」を設定していない場合、どんな Web ページでも本機のゲートウェイ経由でアップストリームへアクセスできてしまうため、デフォルトではオフです。自分の利用だけであれば、ページとゲートウェイを同一オリジンにする(ローカルで /v1 をリバースプロキシする)ほうが安全です。パネルのインターフェース(/api/*)は影響を受けません。", "网络访问": "ネットワークアクセス", "网页端": "Web", "网页端登录 / 注册验证": "Web 版のログイン / 登録時の認証", "网页端的界面缩放由浏览器自己控制(Ctrl + / Ctrl -,或浏览器菜单里的缩放),此项不可调。": "Web 版の UI ズームはブラウザー側で制御します(Ctrl + / Ctrl -、またはブラウザーメニューのズーム)。この項目は調整できません。", "网页端:登录 / 注册需要 ALTCHA 人机验证": "Web:ログイン / 登録に ALTCHA の認証が必要", "网页端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "Web:ログイン / 登録に ALTCHA の認証が必要(現在使用中)", "网页管理地址": "Web 管理アドレス", "群晖 NAS": "Synology NAS", "群晖需在「控制面板 → 应用程序门户 → WebDAV」里启用服务,端口默认 5005(HTTP)/ 5006(HTTPS)。": "Synology では「コントロールパネル → アプリケーションポータル → WebDAV」でサービスを有効にしてください。既定のポートは 5005(HTTP)/ 5006(HTTPS)です。", "脱敏词表": "マスキングルール", "腾讯云 COS": "Tencent Cloud COS", "自动同步": "自動同期", "自动同步上次失败": "前回の自動同期に失敗しました", "自动续写": "自動継続生成", "自定义 User-Agent": "カスタム User-Agent", "自定义客户端分类": "カスタムクライアント分類", "自定义客户端数量已达上限": "カスタムクライアント数が上限に達しました", "自定义提供商 {id}": "カスタムプロバイダー {id}", "自定义网站和应用界面中显示的名称与 Logo。": "Web サイトとアプリの画面に表示する名前とロゴを変更します。", "自定义识别规则": "カスタム識別ルール", "自愈保护": "自動回復ガード", "至少 12 位": "12 文字以上", "至少 8 位,换机下载时需要": "8 文字以上。別のマシンでの復元時に必要", "至少要保留一个分组": "グループは最低 1 つ必要です", "英语": "英語", "范围 5–120 秒,并受原请求时限约束。": "範囲は 5~120 秒で、元のリクエストの制限時間にも従います。", "范围为 5–120 秒,并受原请求时限约束。图片过大、格式错误或下载失败不会被当作模型不支持图片。": "5~120秒の範囲で指定し、元のリクエストの制限時間も適用されます。画像サイズ超過、形式エラー、ダウンロード失敗は画像非対応として扱いません。", "被更高优先级覆盖": "優先度の高い設定で上書き", "装上{size}的官方身份提示词": "{size}の公式アイデンティティプロンプトを適用", "装成 App 后从桌面图标直接进入:全屏打开、没有地址栏。": "アプリとして入れるとホーム画面のアイコンから直接開けます。全画面・アドレスバーなし。", "覆盖": "上書き", "规则 / 匹配方式": "ルール / 一致方式", "规则可以增删改、启停和调整顺序;替换内容留空表示删除匹配内容。恢复默认只重置词表,不改开关和提供商范围。": "ルールの追加、編集、削除、有効化、無効化、並べ替えが可能です。置換内容が空なら一致部分を削除します。デフォルト復元はルールのみをリセットし、スイッチとプロバイダー範囲は変更しません。", "规则名称": "ルール名", "规则名称不能为空,且最多 {max} 个字符": "ルール名は必須です。{max} 文字以内で入力してください", "规则已保存,对后续请求生效;当前历史记录未修改。": "ルールを保存しました。以後のリクエストに適用され、現在の過去記録は変更されていません。", "规则忽略大小写,只影响新请求的日志与统计,不改变模型选择或权限。": "ルールは大文字・小文字を区別せず、新しいリクエストのログと統計にのみ適用されます。モデル選択や権限は変わりません。", "规则编号:{id}": "ルールID:{id}", "视觉模型": "視覚モデル", "视觉模型先识读图片,再由原模型分析和回答。": "視覚モデルが画像を読み取った後、元のモデルが分析して回答します。", "视觉模型来源": "視覚モデルの指定方法", "视觉模型的思考等级": "視覚モデルの思考レベル", "视觉模型直接回答": "視覚モデルが直接回答", "视觉模型识读图片": "視覚モデルが画像を読み取り", "解码后小于这个体积的图片保持原样。默认 512KB,可填 0–10240;填 0 表示所有内嵌图片都过一遍。": "デコード後のサイズがこの値を下回る画像はそのまま送ります。既定 512KB、0〜10240 で指定できます。0 にするとすべてのインライン画像を処理します。", "解除失败:{message}": "解除に失敗しました:{message}", "触发阈值": "適用しきい値", "计数": "カウント", "计量单位": "表記単位", "让 Codex 在收到最终答案后收起中间过程。仅为严格识别的 Codex Responses 请求补阶段标记,报表归类和来源声明不影响此判断。正常结束且没有工具调用的非空回答才补 final_answer,工具调用前的说明补 commentary;错误、截断、缺少结束信号或未知结束原因不补最终答案标记。默认关闭,不改变回答文字,也不减少模型思考或用量。": "Codex が最終回答を受け取った後、中間の作業を折りたためるようにします。厳密に識別した Codex の Responses リクエストにのみフェーズを補い、レポートの分類やクライアントの自己申告には左右されません。正常終了し、ツール呼び出しのない空でない回答にだけ final_answer を付け、ツール呼び出し前の説明には commentary を付けます。エラー、切り詰め、完了通知の欠落、不明な終了理由には最終回答マーカーを付けません。既定はオフで、回答本文、モデルの推論、使用量は変わりません。", "许可原文": "ライセンス原文", "许可原文已随软件内置,无需联网即可查看;打开项目来源链接需要联网。": "ライセンス原文はアプリに同梱されており、オフラインで閲覧できます。プロジェクトの出典リンクを開くにはインターネット接続が必要です。", "许可核对版本": "ライセンス確認に使用したリビジョン", "设置不可隐藏(隐藏了只能清缓存找回来)": "「設定」は非表示にできません(戻すにはデータの削除が必要になります)", "设置备份密码": "バックアップのパスワードを設定", "设置识别规则": "識別ルールを設定", "访问时请使用目标设备能连接到的地址;这里显示的本机地址不代表公网可达。": "接続元の端末から到達できるアドレスを使用してください。ここに表示されるアドレスは、インターネットからの到達を保証するものではありません。", "识别依据": "識別根拠", "识别规则数量已达上限": "識別ルール数が上限に達しました", "词表为空,不会改写任何指纹。可以新增规则或恢复默认词表。": "ルールが空のためフィンガープリントを変更しません。ルールを追加するかデフォルトに戻してください。", "该提供商暂无可编辑的专属设置": "このプロバイダーには編集可能な固有設定がありません", "详细日志": "詳細ログ", "语言设置": "言語設定", "请先保存设置再同步": "同期する前に設定を保存してください", "请先在 Cloudflare 创建 Turnstile 组件,建议选择 Managed 模式,并添加面板实际使用的域名。": "まず Cloudflare で Turnstile ウィジェットを作成してください。Managed モードを推奨します。パネルで実際に使用するドメインを追加してください。", "请填一个分组名": "グループ名を入力してください", "请填写管理员账号(64 字符以内)": "管理者アカウントを入力してください(64 文字以内)", "请求发出后等待上游响应头的最大时间(秒),默认 300 秒,范围 1~3600。": "リクエスト送出後、アップストリームのレスポンスヘッダーを待つ最大時間(秒)。デフォルト 300 秒、範囲 1~3600。", "请求带有不同软件的标识,未自动归类;可用自定义规则明确归属。": "異なるソフトウェアの識別情報が含まれるため、自動分類しませんでした。カスタムルールで分類先を指定できます。", "请求提供商 / 模型支持": "プロバイダー / モデルの対応をリクエスト", "请求日志保留天数": "リクエストログ保持日数", "请求日志保留数量上限": "リクエストログの保存件数上限", "请求记录": "リクエスト記録", "请求超时": "リクエストタイムアウト", "请求转发到上游失败时(服务器瞬时错误、连接失败,以及 WorkBuddy 的 11-128 敏感词拦截),网关会等一段间隔后再发一次。次数分两档,管的是两件事:①「同一账号重试次数」在同一账号上原地重发几次 —— 一般是提示词被上游拦截、或链路瞬时抖动,等一会儿重发往往就好了;②「切换账号重试次数」这份请求最多再换几个账号试 —— 首发的那个账号不算,每换一个扣一次,不分是不是同一家(换到同一家的下一个账号也算一次),换满还失败就把错误返回给客户端。两项都设为 0 表示失败不重试、直接报错。注意账号级限额(429)不占这里的换号次数 —— 那类失败走「冷却该账号并换下一个账号」的降级,与这里的重试是两条路。另有「指定错误码直接换号」名单(默认 402):命中名单的上游状态码不在同一账号重发,直接按队列换下一个账号继续试(换号也占「切换账号重试次数」),换满仍失败才把错误返回给客户端。": "アップストリームへの転送が失敗した場合(サーバーの一時的なエラー、接続失敗、および WorkBuddy の 11-128 センシティブワードブロック)、ゲートウェイは一定の間隔を置いてからもう一度送信します。回数は 2 系統に分かれ、それぞれ別のことを司ります:①「同一アカウントのリトライ回数」は同じアカウントでそのまま何回再送するか —— 多くはシステムプロンプトがアップストリームでブロックされた、または経路の一時的な揺らぎで、しばらく待って再送すれば直ることがよくあります;②「アカウント切替のリトライ回数」はこのリクエストであと最大何個のアカウントに切り替えて試すか —— 初回のアカウントは含まず、切り替えるたびに 1 回消費し、同じプロバイダーかどうかは問いません(同じプロバイダーの次のアカウントへの切替も 1 回と数えます)。使い切ってもなお失敗する場合はエラーをクライアントへ返します。両方とも 0 にすると、失敗時にリトライせず直接エラーを返します。注意:アカウント単位のレート制限(429)はここの切替回数を消費しません —— その種の失敗は「そのアカウントを冷却して次のアカウントへ」というフォールバックを通り、ここのリトライとは別ルートです。また「指定エラーコードで直接アカウント切替」リスト(デフォルト 402)があります:リストに該当するアップストリームのステータスコードは同一アカウントでの再送を行わず、キューの次のアカウントへ直接切り替えて試行を続けます(切替は「アカウント切替のリトライ回数」を消費します)。使い切ってもなお失敗する場合にのみ、エラーがクライアントへ返されます。", "请求重试": "リクエストリトライ", "请至少选择一个提供商": "プロバイダーを1つ以上選択してください", "请输入同步密码": "同期パスワードを入力してください", "请输入当前密码": "現在のパスワードを入力してください", "请输入服务端密钥": "シークレットキーを入力してください", "请选择可用的标识请求头": "使用可能な識別ヘッダーを選択してください", "请选择归属客户端": "分類先のクライアントを選択してください", "读取云同步设置失败:{message}": "クラウド同期の設定を読み取れませんでした:{message}", "读取失败:{message}": "読み込みに失敗しました: {message}", "读取完整非流式响应体允许的最大时间(秒),默认 300 秒,范围 1~3600。": "非ストリーミングレスポンスボディ全体を読み切るために許される最大時間(秒)。デフォルト 300 秒、範囲 1~3600。", "读取网关信息失败:{message}": "ゲートウェイ情報の読み込みに失敗しました: {message}", "读取远端…": "リモートを読み取り中…", "读取远端信息失败:{message}": "リモート情報の取得に失敗しました:{message}", "调用方声明": "呼び出し元の申告", "调试报文": "デバッグメッセージ", "调试模式": "デバッグモード", "调试模式设置已刷新": "デバッグモード設定を更新しました", "负载均衡": "負荷分散", "账号列表": "アカウント一覧", "账号导入 / 导出": "アカウントのインポート / エクスポート", "账号路由": "アカウントルーティング", "账号页表格的两项显示偏好,只存在本机(localStorage),不影响账号数据与转发。「积分合计只统计当前筛选出来的账号」:账号页每一家的分组带右侧有一枚「可用合计」,默认按整组求和 —— 不受筛选、搜索影响,被筛掉的账号也计入(余额是资产,禁用也只表示不参与转发,额度仍在账上)。打开这一项后改为只累加当前可见的行:例如筛出 1 个 100 积分的账号,合计就是 100,而不是同组两个账号之和 1,000。分页不参与这个口径 —— 翻页看的是同一份结果的不同屏,合计不随页码变化。「隐藏账号名」与表头「账号」旁边那颗眼睛是同一个开关:打开后账号列的名字整体显示成星号,适合截图分享时遮挡账号。": "アカウント一覧表の表示設定です。本機のみ(localStorage)に保存され、アカウントデータや転送には影響しません。「ポイント合計を現在の絞り込み結果のみで計算する」:アカウントページの各プロバイダ帯の右側に「利用可能合計」があります。既定ではグループ全体を合算し、絞り込みや検索の影響を受けず、除外されたアカウントも含まれます(残高は資産であり、無効化は転送に参加しないだけで、ポイントは残ります)。この項目をオンにすると、現在表示中の行だけを合算します。たとえば 100 ポイントのアカウント 1 件に絞り込むと合計は 100 になり、同じグループの 2 件の合計 1,000 にはなりません。ページ送りはこの計算に含まれません。ページは同じ結果を別の画面で見ているだけなので、ページを変えても合計は変わりません。「アカウント名を隠す」は表の「アカウント」列の横にある目のアイコンと同じスイッチです。オンにするとアカウント列の名前がアスタリスクで表示され、スクリーンショットの共有時に隠せます。", "账户": "アカウント", "超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件。把天数改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。可填范围为 1–3650 天。请求日志 / 按天聚合 / 签到记录已全量保留、不再自动删除,要清历史请到对应页面手动清空。": "保存期間を超えた部分は削除されます:イベントログはログイン、アカウント切替、429 切替といったシステムイベントです。日数を小さくして(例:30 日→7 日)保存すると、超えた履歴データは即座に削除され、元に戻せません。大きくするか変更しない場合は何も削除されません。設定できる範囲は 1〜3650 日です。リクエストログ / 日次集計 / チェックイン記録は全量保持となり自動削除されません。履歴を消すには、それぞれのページで手動でクリアしてください。", "超出的历史数据会被立即删除,且不可恢复。": "超過した履歴データはすぐに削除され、元に戻せません。", "超时": "タイムアウト", "超时设置已刷新": "タイムアウト設定を更新しました", "跟随模型配置": "モデル設定に従う", "跟随系统 · 浅色 · 深色": "システム · ライト · ダーク", "跟随默认": "デフォルトに従う", "跨域访问": "CORS", "路由": "ルーティング", "路由组只使用组内成员;普通路由只使用参与范围内的账号和模型。": "ルートグループはグループ内のメンバーのみを使用し、通常のルートは参加範囲内のアカウントとモデルのみを使用します。", "路由设置已刷新": "ルーティング設定を再読み込みしました", "跳过 {n} 个": "スキップ {n} 件", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;负载均衡是每条请求换下一位,把负载摊到各个账号上。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时)、被 429 的账号垫底排到队尾 30 分钟、余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 前两层可以在下面按需开关,限制器由账号的「限制器」设置管。": "リクエストの転送時にアカウントをどんな順で選ぶか:①「ルーティング戦略」が並びの規則を決めます —— 順序優先は 1 番手が答えられなくなる(レート制限 / 障害 / 枠切れ)まで全リクエストを受け持ち、そこで次に回ります。負荷分散はリクエストごとに次のアカウントへ回し、負荷を各アカウントに分散します。②「セッション粘着」は同じセッション(同じモデル + 同じ冒頭メッセージ)をできるだけ同じアカウントにひも付けます —— 連続対話ではアップストリームのコンテキストキャッシュを再利用でき、アカウントの切り替えも浪費も減ります。自動は 5 分、セッション単位は 6 時間粘着し、毎ターンとオフは粘着しません。アカウントの並び順(アカウント表の 1 列目)はどの戦略でも土台で、戦略はその上に重なります。さらにルーティングには 3 つの自動回復ガードがあります:転送に失敗したアカウントはしばらく退避し(15 分から始まり失敗のたびに倍増、上限 1 時間)、枠が残ったまま 429 を受けたアカウントは 30 分間最後尾へ回り、枠切れ / 期間トークン上限に達したアカウントはリミッターに止められます —— 前の 2 つは下で必要に応じてオン / オフでき、リミッターは各アカウントの「リミッター」設定に従います。", "转发前压缩对话里内嵌的大图(只改发给上游的副本,生图与图片编辑不受影响)": "転送前に会話へ埋め込まれた大きな画像を圧縮(変更されるのは上流へ送るコピーだけ。画像生成と画像編集には影響しません)", "转发前将 developer 角色消息转换为 system,兼容不支持 developer 角色的 OpenAI 兼容上游": "転送前に developer ロールのメッセージを system に変換し、developer ロール非対応の OpenAI 互換アップストリームにも対応", "转发失败的账号休息一会儿再回来:15 分钟起步,连续失败翻倍,封顶 1 小时;成功一次立即恢复。目的是「让这次失败先凉一会儿」,免得一条条地反复撞同一个坏账号。": "転送に失敗したアカウントはしばらく休んでから戻ります:初回 15 分、連続失敗で倍増、上限 1 時間。1 回成功すれば即復帰。「いったん失敗を冷ます」ためのもので、同じ不調アカウントにリクエストを連打しないための仕組みです。", "转发链路": "転送経路", "轮询间隔": "ポーリング間隔", "软件标识超过 1 KB,已截断保存;匹配仅使用保留部分。": "ソフトウェア識別情報が1 KBを超えたため切り詰めて保存しました。一致判定には保存部分のみを使用します。", "软件版本": "ソフトウェアバージョン", "轻量模式": "軽量モード", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 套餐池(Start Plan)通道不可用,相关请求会在请求日志里注明原因": "軽量モードが有効です:ウィンドウを閉じると UI プロセスを破棄し(約 200MB のメモリを解放)、ゲートウェイはバックグラウンドで継続します。UI が破棄されている間、ZCode プランプール(Start Plan)経路は利用できず、該当リクエストはリクエストログに理由が記録されます", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 活动套餐通道不可用,相关请求会在请求日志里注明原因": "軽量モードがオン:ウィンドウを閉じると UI プロセスを破棄し(約 200MB のメモリを解放)、ゲートウェイはバックグラウンドで継続します。UI 破棄期間中は ZCode アクティブプランチャネルは利用できず、該当するリクエストは理由がリクエストログに記録されます", "轻量模式(关窗释放界面内存)": "軽量モード(閉じると UI のメモリを解放)", "辅助识图": "補助画像読み取り", "辅助识图 · 原模型回答": "補助読み取り · 元のモデルが回答", "辅助识图保留原模型回答;切换视觉模型会让视觉模型直接回答。本次授权也包含已设置的模型单独配置。": "補助読み取りでは元のモデルが回答し、モデル切り替えでは視覚モデルが直接回答します。この許可には設定済みのモデル別設定も含まれます。", "辅助识图或切换视觉模型,默认关闭": "補助画像読み取り・視覚モデル切り替え(デフォルト無効)", "辅助识图配置": "補助画像読み取り設定", "输入同步密码": "同期パスワードを入力", "输入当前登录用的密码": "現在のログインパスワードを入力", "输入状态码,回车添加": "ステータスコードを入力し、Enter で追加", "运行形态": "実行形態", "近期没有命中样本,不代表未来请求不会命中。": "最近の一致サンプルはありませんが、今後のリクエストが一致する可能性はあります。", "还原": "元に戻す", "还有额度时被 429 的账号排到队尾,30 分钟后自动回到队列(成功转发一次也会立即回来)。它标记的是「疑似共享池被别人抢」,不是「这个账号本身有问题」。⚠️ 注意它与路由策略的配合:在「家内轮询」下,队尾意味着这一家整体被往后排 —— 如果某个提供商的账号被批量限流,它们会集体沉到队尾,那个家可能长时间轮不到。这时可以关掉本项,让 429 过的账号只受冷却约束(冷却到点自动回来)。": "枠が残っているのに 429 を食らったアカウントは最後尾に回り、30 分後に自動復帰します(1 回でも転送が成功すればすぐ戻る)。これは「共有プールを他の人に取られている疑い」を示すもので、「このアカウント自体の問題」ではありません。⚠️ ルーティング戦略との組み合わせに注意:「プロバイダー内ローテーション」では最後尾 = プロバイダーごと後ろへ回ることを意味します —— あるプロバイダーのアカウントがまとめてレート制限されると全員が最後尾に沈み、そのプロバイダーが長く回ってこない可能性があります。その場合は本項をオフにして、429 済みアカウントをクールダウンだけに任せるとよいでしょう(時間が来れば自動で戻ります)。", "还没有可用的视觉模型。": "利用できる視覚モデルがまだありません。", "还没有同步过。": "まだ同期していません。", "还没有添加服务器。点右上角「添加」,填入网关所在机器的 IP 或域名与端口。": "サーバーがまだありません。右上の「追加」から、ゲートウェイが動作するマシンの IP またはドメインとポートを入力してください。", "还没有装载任何数据。": "まだデータが読み込まれていません。", "还没有读到版本信息": "バージョン情報をまだ読み込んでいません", "还没有选择模型,这块设置暂时不起作用。": "モデルが未選択のため、このブロックは今のところ何も行いません。", "这一份就是「替换 / 追加」模式下网关要发的 system 正文。": "これが「置換 / 追加」モードでゲートウェイが送信する system の本文です。", "这一项已隐藏": "この項目は非表示です", "这一项正在显示": "この項目は表示中です", "这些模型的请求交给当前路由内可用的视觉模型回答,不再回到原模型。": "これらのモデルへのリクエストは、現在のルート内で使える視覚モデルが元のモデルの代わりに回答します。", "这些模型看到图片时,先把图片交给 {model} 读一遍,再由它们自己结合读到的内容回答。": "これらのモデルが画像を受け取ると、まず {model} に読ませ、読み取った内容を踏まえて元のモデルが回答します。", "这些模型看到图片时,先把图片交给「沿用工具服务的视觉分析模型」读一遍,再由它们自己结合读到的内容回答。": "これらのモデルが画像を受け取ると、まずツールサービス側の視覚モデルに読ませ、読み取った内容を踏まえて元のモデルが回答します。", "这只模型只负责看图,最终仍由原模型回答。": "このモデルは画像を読むだけで、最終的な回答は元のモデルが行います。", "这只模型直接接收图片与对话,完成本次回答。": "このモデルが画像と会話を直接受け取り、今回の回答を行います。", "这台网关未启用机器人校验": "このゲートウェイではボット確認が無効です", "这台网关没有管理员,用一把已启用的 API Key 访问。": "このゲートウェイには管理者がいません。有効な API Key でアクセスしてください。", "这条历史请求没有保存识别依据,不能据此自动创建规则。": "この過去のリクエストには識別根拠が保存されていないため、自動でルールを作成できません。", "这条规则已被删除,请关闭编辑后重新添加。": "このルールは削除されました。編集画面を閉じて追加し直してください。", "这里只列出已保存的提供商配置;未配置的提供商沿用全局设置,可从下拉框手动添加。用户保存的模式、文件和正文优先于全局设置,「跟随默认」只取消该提供商的模式、文件和正文覆盖。ZCode 套餐池默认由插件按三块装配,客户端系统正文合入第三块,不会自动创建替换规则;手动修改的网关提示词段或关闭开关仍以用户配置为准,能否被接受取决于上游规则。": "保存済みのプロバイダー設定だけを表示します。未設定のプロバイダーは全体設定に従い、ドロップダウンから手動で追加できます。保存したモード・ファイル・本文は全体設定より優先されます。「デフォルトに従う」は、そのプロバイダーのモード・ファイル・本文の上書きだけを解除します。ZCode の Start Plan は既定でプラグインが 3 ブロックを組み立て、クライアントの system 本文を第 3 ブロックにまとめます。置換ルールは自動作成しません。手動で編集したゲートウェイのプロンプト段や組み立てスイッチのオフ設定はそのまま優先され、受け付けられるかは上流のルール次第です。", "进程 PID": "プロセス PID", "远程根目录": "リモートのルートディレクトリ", "远端同一路径下的旧快照。事件日志、请求明细与调试报文不会上传。": "同じリモートパスにある古いスナップショットを上書きします。イベントログ・リクエスト明細・デバッグ通信記録はアップロードされません。", "远端已有一份快照,将被覆盖": "リモートに既存のスナップショットがあり、上書きされます", "远端快照使用了另一把账号密钥,但没有携带密钥文件,无法在本机解密。请在原来那台机器上重新上传一次。": "リモートのスナップショットは別のアカウントキーを使用していますが、キーファイルが含まれていないため本機では復号できません。元のマシンからもう一度アップロードしてください。", "远端快照使用的账号密钥与本机不同。请输入上传那台机器设置的同步密码,用它解出密钥装到本机后再继续下载。": "リモートのスナップショットは本機と異なるアカウントキーを使用しています。アップロードしたマシンで設定した同期パスワードを入力し、キーを復号して本機に導入してからダウンロードを続けてください。", "远端数据与当前版本不兼容": "リモートのデータは現在のバージョンと互換性がありません", "远端该路径下还没有快照,本次是首次上传。": "そのリモートパスにはまだスナップショットがありません。今回が初回のアップロードです。", "远端路径:{path}": "リモートパス:{path}", "远端还没有可下载的同步数据": "リモートにダウンロード可能な同期データがありません", "连不上这台网关。确认地址与端口正确、网关已启动,且已开启「局域网访问」;用 https 时还要确认证书有效": "このゲートウェイに接続できません。アドレスとポートが正しいこと、ゲートウェイが起動していること、「LAN アクセス」が有効なことを確認してください。https の場合は証明書が有効かも確認してください。", "连不上这台网关。请确认地址、端口与防火墙设置,网关需已启动;桌面端请在「设置 → 网关 → 网络访问」开启「允许其他设备访问网关」。使用 HTTPS 时还需确认证书有效。": "このゲートウェイに接続できません。アドレス、ポート、ファイアウォールの設定とゲートウェイの起動状態を確認してください。デスクトップ版では「設定 → ゲートウェイ → ネットワークアクセス」で「他の端末からゲートウェイへのアクセスを許可」を有効にしてください。HTTPS を使う場合は証明書の有効性も確認してください。", "连接中超时": "接続タイムアウト", "连接失败:{message}": "接続に失敗しました:{message}", "连续失败到阈值后把这个账号整个打开(默认关)。与失败退避的分工:退避管「单次失败先凉一会儿」,惩罚轻、自动恢复;熔断管「这个账号现在整体不对劲,别再一条条地试」,要连续成功若干次才关。打开期间该账号被跳过,除非全场只剩它 —— 那时仍放行试一次。": "連続失敗がしきい値に達したらアカウント全体を切り離します(既定はオフ)。失敗バックオフとの役割分担:バックオフは「1 回の失敗をいったん冷ます」軽い罰で自動復帰、サーキットブレーカーは「このアカウントは全体としておかしい、1 件ずつ試すのはやめよう」で、連続成功が数回続かないと閉じません。開いている間そのアカウントはスキップされますが、他に使えるものがなければ 1 回だけ試します。", "追加": "追加", "追加网关提示词": "ゲートウェイのシステムプロンプトを追加", "退出失败:{message}": "ログアウトに失敗しました:{message}", "退出登录": "ログアウト", "退出这台服务器的登录,不影响其他服务器": "このサーバーのみログアウトします。他への影響はありません", "选好接管回答的视觉模型后这块设置才会生效。": "回答を引き継ぐ視覚モデルを選ぶとこのブロックが有効になります。", "选好视觉模型后这块设置才会生效。": "視覚モデルを選ぶとこのブロックが有効になります。", "选定提供商": "選択したプロバイダー", "选择一个或多个模型": "1 つ以上のモデルを選択", "选择位置并加密备份": "保存先を選択して暗号化バックアップ", "选择备份文件并恢复": "バックアップファイルを選んで復元", "选择提供商(可多选)": "プロバイダーを選択(複数可)", "选路规则": "選択ルール", "选项与默认值由已启用插件提供;你保存的覆盖值不会被插件更新替换。": "有効なプラグインが項目と既定値を提供します。プラグインの更新で保存済みの設定が上書きされることはありません。", "选项与默认值由插件提供,你保存的修改不会被插件更新覆盖。切换提供商不会丢失未保存的修改。": "設定項目と既定値はプラグインが提供します。保存した変更はプラグイン更新で上書きされません。プロバイダーを切り替えても未保存の編集は保持されます。", "透传": "パススルー", "透传客户端 system": "クライアントの system をパススルー", "透传客户端 system(默认)": "クライアントの system をパススルー(デフォルト)", "通常是网络问题,点右侧重试": "多くはネットワークの問題です。右の再試行を押してください", "通用": "一般", "遇到 Bug、报错或异常行为": "Bug、エラー、異常動作が発生した場合", "配置目录下的 agent2api.db(账号、日志、请求记录、调试报文与设置都在里面)。": "設定ディレクトリ配下の agent2api.db(アカウント、ログ、リクエスト記録、デバッグメッセージ、設定がすべて入っています)。", "采用本规则": "このルールを適用", "重启后生效,不影响当前操作": "再起動で反映されます。作業中の内容には影響しません", "重命名": "名前を変更", "重命名只更新分类显示名,不拆分历史用量,也不重新归类历史请求。": "名前の変更は分類の表示名のみを更新します。過去の使用量を分割したり、リクエストを再分類したりしません。", "重命名客户端分类": "クライアント分類の名前を変更", "重复清理": "繰り返し削除", "重复清理直到不再变化(仅正则删除)": "変化がなくなるまで繰り返す(正規表現の削除のみ)", "重新读取会替换当前未保存的草稿。": "再読み込みすると、現在の未保存の下書きが置き換えられます。", "重新读取设置": "設定を再読み込み", "重编码质量": "再エンコード品質", "重置会清空管理员账号与密码,面板将回到「未注册」状态。": "リセットすると管理者アカウントとパスワードが消去され、パネルは「未登録」状態に戻ります。", "重置管理员": "管理者のリセット", "重试设置已刷新": "リトライ設定を更新しました", "重试间隔": "リトライ間隔", "铸造守卫每隔多久看一次库存(毫秒)。只影响发现缺货的反应速度 —— 库存够用时轮询不会铸造任何令牌。默认 2500 毫秒,可填 1000–30000。": "発行ガードが在庫を何ミリ秒ごとに確認するか。品切れの検知速度にだけ影響します —— 在庫が足りているときはポーリングしても何も発行しません。既定 2500 ミリ秒、1000–30000 を指定可。", "长边像素上限": "長辺の上限(ピクセル)", "问题反馈": "問題のフィードバック", "阿里云 OSS": "Alibaba Cloud OSS", "限流中账号": "レート制限中のアカウント", "随包内嵌的快照(发版时的那份)": "アプリ同梱のスナップショット(リリース時のもの)", "隐藏 {name}": "{name} を非表示", "隐藏分组 {name}": "グループ {name} を非表示", "隐藏用户名": "ユーザー名を隠す", "隐藏账号名(显示成星号)": "アカウント名を隠す(アスタリスク表示)", "隐藏这一组": "このグループを非表示", "非流式响应超时": "非ストリーミング応答タイムアウト", "面板登录": "パネルログイン", "面板端口": "パネルポート", "面板管理员账号": "パネル管理者アカウント", "韩语": "韓国語", "项目来源": "プロジェクトの出典", "预览不发送模型请求,也不修改历史记录。": "プレビューはモデルを呼び出さず、過去の記録も変更しません。", "预览中…": "プレビュー中…", "预览匹配": "一致結果をプレビュー", "预设": "プリセット", "首选不可用时再依次尝试备选。": "第一候補が使えないときは、バックアップを順に試します。", "首选不可用时再依次尝试;留空则停止并说明原因。": "第一候補が使えないときに順に試します。空にすると停止して理由を説明します。", "验证方式": "認証方式", "验证码令牌池": "CAPTCHA トークンプール", "验证码令牌池设置已刷新": "CAPTCHA トークンプール設定を再読み込みしました", "验证码库存的参考目标,默认 3 个,可填 1–10。只影响库存状态展示,不会因为低于目标自动生成令牌或弹出验证码。": "在庫表示の目安です。既定は 3、範囲は 1~10 です。表示のみに影響し、目標未満でもトークンを自動生成したり認証画面を開いたりしません。", "高级设置": "詳細設定", "默认 10000 条,按日志级别分配保留容量,超出后清理最旧的记录;同时受保留天数限制。": "既定は 10000 件です。ログレベルごとに容量を配分し、超過分は古い記録から削除します。保存日数の制限も適用されます。", "默认 1000000 条(100 万),超出后清理最旧的请求记录及其原始正文,不影响按天聚合报表;同时受保留天数限制。": "既定は 1000000 件(100 万件)です。超過分は古いリクエスト記録と元の本文から削除し、日次集計レポートには影響しません。保存日数の制限も適用されます。", "默认 5 分钟。间隔内的变化合并为最新快照,到期后上传;手动上传不受限制。失败后会延长等待并自动重试。": "既定は 5 分です。待機中の変更は最新のスナップショットにまとめ、間隔が経過してからアップロードします。手動アップロードは制限されません。失敗時は待機時間を延ばして自動再試行します。", "默认仅本机可访问(127.0.0.1)。开启后监听所有 IPv4 网卡(0.0.0.0),访问范围由网络与防火墙决定,不限于局域网,也不会自动开放到公网。开启前必须注册面板管理员;管理接口需要管理员会话或网关 Key,API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。「同时开放网页管理面板」默认关闭,开启后可从其他设备的浏览器登录管理;关闭它不影响 API 转发和本机桌面管理。修改任一开关都需要重启应用。": "既定では本機のみからアクセスできます(127.0.0.1)。有効にするとすべての IPv4 インターフェース(0.0.0.0)で待ち受け、アクセス範囲はネットワークとファイアウォールで決まります。LAN 限定ではなく、インターネットへの自動公開もしません。事前にパネル管理者の登録が必要です。管理 API には管理者セッションまたはゲートウェイキー、API 呼び出しには有効なゲートウェイキーが必要で、なければデフォルトキーを自動作成します。Web 管理パネルは既定で無効です。有効にすると他の端末のブラウザーからログインして管理できます。無効にしても API 転送と本機での管理には影響しません。どちらのスイッチも変更にはアプリの再起動が必要です。", "默认值通常够用,出问题时才需要调": "既定値でたいてい足ります。問題が出たときだけ調整してください", "默认关闭。开启后下一次 Codex 请求立即生效,不用重启;只对 Codex 来源的 /v1/responses 请求补阶段标记,其它客户端与 /v1/chat/completions 不受影响。": "デフォルトはオフ。有効にすると次回の Codex リクエストから再起動なしで反映されます。フェーズマーカーは Codex 由来の /v1/responses リクエストにのみ補われ、その他のクライアントと /v1/chat/completions は影響を受けません。", "默认关闭。改动立即生效,不用重启;关闭期间的跨源请求会被预检拦下。": "デフォルトはオフ。変更は即時有効で再起動は不要です。オフの間のクロスオリジンリクエストはプリフライトで拒否されます。", "默认关闭窗口不会退出程序,而是把窗口缩到系统托盘,转发继续在后台运行(OpenAI 客户端不受影响);要彻底退出程序,请在托盘图标上右键选「退出」。关掉这个开关后,点关闭按钮即退出程序、转发随之中断。「开机自动启动」开启后,登录系统时会自动启动本程序(通常直接驻留托盘),不需要手动打开。": "デフォルトでは、ウィンドウを閉じてもプログラムは終了せず、ウィンドウがシステムトレイに縮小され、転送はバックグラウンドで継続します(OpenAI クライアントは影響を受けません)。プログラムを完全に終了するには、トレイアイコンを右クリックして「終了」を選んでください。このスイッチをオフにすると、閉じるボタンを押した時点でプログラムが終了し、転送も中断されます。「自動起動」をオンにすると、システムへのログイン時に本プログラムが自動起動します(通常はそのままトレイに常駐します)。手動で開く必要はありません。", "默认应用全部提供商(包含之后新增的插件与自定义提供商)。指定范围后,未选中的提供商不做指纹脱敏;清空选择自动回到全部提供商。": "デフォルトでは今後追加するプラグインとカスタムプロバイダーを含むすべてに適用します。範囲を指定すると未選択のプロバイダーは処理しません。選択を空にするとすべてに戻ります。", "默认开启。只改 role 字段本身,消息内容与顺序都不动;本项只改发给上游的副本,客户端看到的响应内容不变。": "デフォルトは有効。role フィールドだけを書き換え、メッセージの内容と順序はそのまま。送信する副本だけが対象で、クライアントが見る応答は変わりません。", "默认开启。只改发给上游的副本,客户端看到的响应与原图都不变;请求日志里保存的是客户端发来的原图,不是压缩后的版本。只作用在对话链路,生图 / 图片编辑不经过这里。改完对下一个请求立即生效,不用重启。": "既定では有効です。変更されるのは上流へ送るコピーだけで、クライアントが見る応答と原画像は変わりません。リクエストログに保存されるのはクライアントが送った原画像で、圧縮後のものではありません。チャット経路のみに作用し、画像生成と画像編集はここを通りません。変更は次のリクエストから有効で、再起動は不要です。", "默认开启。命中明细会记进请求日志的「敏」标签(悬停可看命中了哪几条规则)。本项只改发给上游的副本,客户端看到的响应内容不变。": "デフォルトはオン。ヒットした明細はリクエストログの「敏」タグに記録されます(ホバーするとどのルールにヒットしたか確認できます)。本項目はアップストリームへ送るコピーのみを変更し、クライアントが見るレスポンス内容は変わりません。", "默认开启并应用全部提供商。编辑词表或应用范围后点击「保存设置」,下一次请求立即生效,不用重启。命中明细仍记进请求日志的「敏」标签。": "デフォルトで有効、すべてのプロバイダーに適用します。ルールや適用範囲を編集して「設定を保存」を押すと再起動なしで次のリクエストから有効です。一致情報は引き続きリクエストログのマスキングタグに記録します。", "默认网关只监听 127.0.0.1,只有本机能访问。开启后网关改听所有网卡,同一局域网内的设备可以把 API 地址指向本机 IP 一起使用。出于安全考虑,开启前必须先注册一个面板管理员:管理接口从此要求管理员会话或网关 Key,模型额度不会对局域网裸奔;一把启用的网关 Key 都没有时,转发接口也会拒绝服务,直到创建第一把。改动需要重启应用生效。「同时开放网页管理面板」把管理界面也出给局域网(其他设备的浏览器打开本机 IP 即可管理),默认关闭 —— 桌面端的面板仍只由本程序自己出。": "デフォルトでは、ゲートウェイは 127.0.0.1 のみで待ち受け、本機からのみアクセスできます。オンにするとゲートウェイはすべてのネットワークアダプターで待ち受けるようになり、同じ LAN 内のデバイスは API アドレスを本機の IP に向けて一緒に利用できます。セキュリティ上の理由から、オンにする前にまずパネル管理者を登録する必要があります:管理インターフェースは管理者セッションまたはゲートウェイキーを要求するようになり、モデルのクォータが LAN に無防備に晒されることはありません。有効なゲートウェイキーが 1 つもない場合、最初の 1 つを作成するまで転送インターフェースもサービスを拒否します。変更の反映にはアプリの再起動が必要です。「Web 管理パネルも同時に公開」は管理画面も LAN に公開します(他のデバイスのブラウザーで本機の IP を開けば管理できます)。デフォルトはオフ —— デスクトップ版のパネルは引き続き本プログラム自身のみが提供します。", "({n} 个整组隐藏)": "({n} グループを非表示)", "({n} 行)": "({n} 行)", "({n} 项被覆盖)": "({n} 項目を上書き)", "(全部为默认值)": "(すべてデフォルト値)", "(官方原文)": "(公式原文)", "(已存一份正文,{n} 行;切成「替换 / 追加」后生效)": "(本文を保存済み、{n} 行。「置換 / 追加」に切り替えると有効になります)", "(已改)": "(変更済み)", "(已注册过会跳过这一步,直接生效)。": "を登録する必要があります(登録済みの場合はこの手順をスキップし、そのまま有効になります)。", "(当前生效的就是这一份,{n} 行)": "(現在有効なのはこの本文、{n} 行)", "(文件:{path})": "(ファイル:{path})", "(未生效)": "(未適用)", ",{items}": "、{items}", ",{time}": "、{time}", ",以及代理池 / 订阅里可能存在的代理凭据。请使用只有你能访问的私有存储;账号密钥由同步密码单独加密,泄露存储本身不等于泄露账号。": "、およびプロキシプール / サブスクリプションに存在しうるプロキシ認証情報が含まれます。自分だけがアクセスできるプライベートなストレージを使用してください。アカウントキーは同期パスワードで別途暗号化されているため、ストレージが漏れてもアカウントが漏れるわけではありません。", ",包括恢复后需要重新登录管理面板。": "まるごと置き換えられます。復元後は管理パネルへの再ログインが必要です。", ",可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "、そのままログインに使用できます。厳重に保管し、第三者に渡したり公共の場所へアップロードしたりしないでください。", ",文件里后续的改动在清空这里之前不再生效": "。ファイル側の以降の変更はここをクリアするまで有効になりません", ",替换前的数据已备份为 {name}": "、置き換え前のデータは {name} としてバックアップ済みです", ",自定义提供商新增 {added} 个、更新 {updated} 个": "、カスタムプロバイダーは新規 {added} 件、更新 {updated} 件", ";开关关闭时词表不执行": ";無効時はルールを実行しません", ";网页管理面板已一并开放(浏览器打开同一地址)": ";Web 管理パネルも併せて公開されています(ブラウザーで同じアドレスを開いてください)", "AI 调整后的 JSON({n} 字符)": "AI が調整した JSON({n} 文字)", "CodeArts 的账号余额还剩多少?": "CodeArts のアカウント残高はあといくら?", "JSON 文件会以文本发送给当前对话模型,其中的凭证也会保存在这条会话里。": "JSON ファイルはテキストとして現在の対話モデルに送信され、含まれる認証情報もこの会話に保存されます。", "[已省略 {n} 字符的 JSON]": "[{n} 文字の JSON を省略]", "attachment 与 content 只能给一个": "attachment と content はどちらか一方だけ指定してください", "section 只能是 models / mappings / both": "section は models / mappings / both のいずれかです", "{n} 个候选,{m} 个跳过": "候補 {n} 件、スキップ {m} 件", "{n} 条映射": "{n} 件のマッピング", "{n} 条请求日志": "リクエストログ {n} 件", "{n} 条运行日志": "実行ログ {n} 件", "{requests} 次请求,{tokens} Token": "リクエスト {requests} 回、{tokens} Token", "「{name}」是空文件。": "「{name}」は空のファイルです。", "「{name}」看起来是二进制文件,助手只接收 JSON 文本。": "「{name}」はバイナリファイルのようです。アシスタントは JSON テキストのみ受け付けます。", "「{name}」超过 {n} MB,请换一个小一点的 JSON 文件。": "「{name}」は {n} MB を超えています。より小さい JSON ファイルを選択してください。", "「{name}」超过 {n} MB,请换一个小一点的 JSON 文件,或去添加账号页导入。": "「{name}」は {n} MB を超えています。より小さい JSON ファイルを選択するか、アカウント追加ページからインポートしてください。", "一次最多 {n} 个文件。": "一度に最大 {n} 個のファイルまでです。", "一次最多 {n} 个文件,多出的没有添加。": "一度に最大 {n} 個のファイルまでです。超過分は追加されませんでした。", "一次最多 {n} 张图片。": "一度に最大 {n} 枚です。", "一次最多 {n} 张图片,多出的没有添加。": "一度に最大 {n} 枚です。超過分は追加されませんでした。", "下载图片": "画像をダウンロード", "今天用了多少 Token?": "今日は何 Token 使いましたか?", "会话响应不完整": "セッションの応答が不完全です", "保存位置": "保存先", "保存图片失败:{message}": "画像の保存に失敗しました:{message}", "保存思考等级失败:{message}": "思考レベルの保存に失敗しました:{message}", "修改上传或已生成的图片,支持多张参考图。": "複数の参照画像を使用して、アップロード済みまたは生成済みの画像を編集します。", "修改文件": "ファイルを変更", "修改模型能力": "モデル能力を変更", "凭证会保存到网关;同一提供商下同一身份的账号会更新原凭证。文件若是整库导出的 accounts 数组,会按文件里的账号批量导入。": "認証情報はゲートウェイに保存されます。同じプロバイダーで同一身分のアカウントは元の認証情報が更新されます。ファイルが accounts 配列を含む完全エクスポートの場合、ファイル内のアカウントを一括インポートします。", "分叉": "分岐", "分叉会话失败:{message}": "会話の分岐に失敗しました:{message}", "分支": "分岐", "删除会话失败:{message}": "セッションの削除に失敗しました:{message}", "删除消息": "メッセージを削除", "删除这条对话": "この会話を削除", "删除这条对话?": "この会話を削除しますか?", "删除这条消息?模型消息关联的工具结果也会一并删除。": "このメッセージを削除しますか?モデルのメッセージに関連するツール結果も削除されます。", "助手设置没读出来,暂时存不了对话模型 —— 看输入框下方的提示。": "アシスタント設定を読み込めなかったため、対話モデルをまだ保存できません。入力欄の下のヒントをご確認ください。", "助手设置没读出来,暂时存不了思考等级 —— 看输入框下方的提示。": "アシスタント設定を読み込めないため、思考レベルを保存できません —— 入力欄の下のヒントを確認してください。", "助手设置没读出来,现在还不能发消息 —— 看输入框下方的提示。": "アシスタント設定を読み込めなかったため、まだメッセージを送信できません。入力欄の下のヒントをご確認ください。", "单张参考图不能超过 10 MiB": "参照画像 1 枚の上限は 10 MiB です", "历史会话": "セッション履歴", "历史对话": "会話履歴", "原始 ID 的默认绑定不能删除,请关闭它的开关": "元の ID の既定バインドは削除できません。スイッチをオフにしてください", "原始报文或对话正文已省略": "元の通信データまたは会話本文は省略されました", "参数 {name} 只能是:{values}": "パラメーター {name} は次のいずれかである必要があります:{values}", "参数 {name} 必须是不小于 {min} 的整数": "パラメーター {name} は {min} 以上の整数である必要があります", "参数 {name} 必须是不超过 {max} 个字符的字符串": "パラメーター {name} は {max} 文字以内の文字列である必要があります", "参数 {name} 必须是布尔值": "パラメーター {name} は真偽値である必要があります", "参数 {name} 必须是有效日期(YYYY-MM-DD)": "パラメーター {name} は有効な日付(YYYY-MM-DD)である必要があります", "参数 {name} 必须是毫秒时间戳": "パラメーター {name} はミリ秒のタイムスタンプである必要があります", "参数不完整(需要 provider / id / alias / action)": "パラメーターが不足しています(provider / id / alias / action が必要です)", "参考图仅支持 PNG、JPEG、WebP": "参照画像は PNG、JPEG、WebP に対応しています", "参考图会交给图片编辑工具,当前对话模型不会读取图片。": "参照画像は画像編集ツールに渡されます。現在の対話モデルは画像を読み取りません。", "参考图片列表不能为空": "参照画像のリストは空にできません", "参考图片编号不存在": "参照画像の番号が存在しません", "参考图片请使用附件编号、已生成图片 ID 或 HTTP(S) 链接": "参照画像には添付番号、生成済み画像 ID、または HTTP(S) リンクを指定してください", "发消息或做任务…(Enter 发送,Shift+Enter 换行,可粘贴图片或 JSON 文件)": "メッセージまたはタスクを入力…(Enter で送信、Shift+Enter で改行、画像や JSON ファイルを貼り付け可能)", "发起模型测试": "モデルテストを実行", "受限": "制限あり", "变更前确认": "変更前に確認", "只支持图片和 JSON 凭证文件(.json / .info)": "画像と JSON 認証ファイル(.json / .info)のみ対応しています", "只支持图片和 JSON 凭证文件(.json / .info);「{name}」已跳过。": "画像と JSON 認証ファイル(.json / .info)のみ対応しています。「{name}」はスキップしました。", "各账号余额还剩多少?": "各アカウントの残高はいくらですか?", "启用 / 禁用模型": "モデルの有効化 / 無効化", "启用 / 禁用账号": "アカウントの有効化 / 無効化", "命令": "コマンド", "哪些模型在多家重复了?": "複数のプロバイダに重複しているモデルは?", "图片 {n}": "画像 {n}", "图片工具包含不支持的参数:{name}": "画像ツールに未対応のパラメーターがあります:{name}", "图片工具没有返回可显示的图片": "画像ツールから表示可能な画像が返されませんでした", "图片工具缺少当前会话": "画像ツールに現在のセッションがありません", "图片工具需要提示词和图片模型": "画像ツールにはプロンプトと画像モデルが必要です", "完全访问": "フルアクセス", "实时余额查询会请求上游,并可能触发已配置的自动禁用规则。": "リアルタイムの残高照会は上流にリクエストを送り、設定済みの自動無効化ルールが適用される場合があります。", "对指定模型发一次真实请求,回报连通性与耗时。": "指定したモデルに実際のリクエストを 1 回送り、到達性と所要時間を報告します。", "对话由网关转发到上游模型,用量计入请求日志": "会話はゲートウェイが上流モデルへ転送します。使用量はリクエストログに記録されます", "导入账号文件": "アカウントファイルをインポート", "将导入一个账号:": "アカウントを 1 件インポートします:", "就绪": "準備完了", "工具「{name}」未获授权,未执行。": "ツール「{name}」は許可されていないため、実行されませんでした。", "工具调用已达本轮上限,已停止继续执行。": "このターンのツール呼び出し上限に達したため、以降の実行を停止しました。", "已从这条消息分叉为新对话": "このメッセージから新しい会話を分岐しました", "已停止": "停止済み", "已停止生成": "生成を停止しました", "已完成 {n} 项改动": "{n} 件の変更が完了しました", "已完成 {n} 项,剩余 {m} 项未执行": "{n} 件が完了し、残り {m} 件は実行されませんでした", "已导入账号「{name}」": "アカウント「{name}」をインポートしました", "已生成 {n} 张图片": "画像を {n} 枚生成しました", "已调用": "呼び出し", "开关模型的对外可用性,不改其它属性。": "モデルの対外的な可用性だけを切り替え、他の属性は変更しません。", "开始日期不能晚于结束日期": "開始日は終了日より後にできません", "开始时间必须早于结束时间": "開始時刻は終了時刻より前である必要があります", "当前安装包未包含原生图片保存能力,请更新应用。": "このアプリにはネイティブ画像保存機能が含まれていません。アプリを更新してください。", "当前客户端缺少读取接口:{name}": "このクライアントには読み取りインターフェースがありません:{name}", "当前对话没有可读取的文本附件:请先把 JSON 文件发给助手": "この会話には読み取れるテキスト添付がありません。先に JSON ファイルをアシスタントに送ってください", "思考过程": "思考過程", "思考:跟随模型": "思考:モデルに従う", "成功率": "成功率", "打开会话失败:{message}": "セッションを開けませんでした:{message}", "执行中": "実行中", "执行结果": "実行結果", "批量导入:新增 {added}、更新 {updated}、失败 {failed}": "一括インポート:追加 {added}、更新 {updated}、失敗 {failed}", "把凭证文件交给对应提供商解析并落库;同身份账号会更新凭证。": "認証ファイルを対応プロバイダーに解析させて保存します。同一身分のアカウントは認証情報が更新されます。", "把重复的模型加上家名前缀区分开": "重複しているモデルにプロバイダー名の接頭辞を付けて区別する", "拒绝": "拒否", "按提供商名称查询模型、能力、来源与映射,支持自定义提供商。": "プロバイダー名でモデル、能力、情報源、マッピングを照会します。カスタムプロバイダーにも対応します。", "按提示词生成图片。": "プロンプトから画像を生成します。", "按提示词编辑参考图片。": "プロンプトに従って参照画像を編集します。", "按文件内容判断": "ファイル内容から判断", "按文本生成图片,结果直接显示在对话中。": "テキストから画像を生成し、会話内に表示します。", "提供商 id「{provider}」格式不正确": "プロバイダー id「{provider}」の形式が正しくありません", "提供商「{name}」匹配到多家,请使用提供商 ID:{list}": "プロバイダー「{name}」に複数の項目が一致します。プロバイダー ID を指定してください:{list}", "改上下文窗口 / 最大输出 Token / 工具调用等能力位。": "コンテキストウィンドウ / 最大出力トークン / ツール呼び出しなどの能力フラグを変更します。", "改某一家的整组顺位(先试哪一家)。": "あるプロバイダーのグループ全体の順位を変更します(どちらを先に試すか)。", "改账号在全局队列里的名次,决定主备与切换顺序。": "グローバルキュー内のアカウント順位を変更し、主系 / 予備と切り替え順を決めます。", "文件内容是空的": "ファイル内容が空です", "文件过大({n} 字符):请先用 read_attachment 分段查看,或改用添加账号页导入": "ファイルが大きすぎます({n} 文字)。先に read_attachment で分割して確認するか、アカウント追加ページからインポートしてください", "新增 / 删除映射名,支持批量加前缀与同名合并到多家。": "マッピング名の追加 / 削除。一括での接頭辞付与や、同名を複数プロバイダーへ統合できます。", "新建会话": "新しいセッション", "无法判断这些凭证属于哪家提供商。请先问用户,或用 provider 指定(常见 id:{list})": "これらの認証情報がどのプロバイダーのものか判断できません。ユーザーに確認するか、provider で指定してください(一般的な id:{list})", "无法读取图片": "画像を読み取れません", "最高": "最大", "有什么可以帮你?可以问配置、查余额、让我改模型设置。": "何をお手伝いしましょうか。設定の質問、残高確認、モデル設定の変更ができます。", "未命名对话": "無題の会話", "未知的工具:{name}": "不明なツール: {name}", "权限模式": "権限モード", "极低": "最小", "查看 API Key 详情必须指定 API Key 身份": "API Key の詳細を表示するには Key の識別情報を指定してください", "查看图片": "画像を表示", "查看模型候选账号、跳过原因和当前路由策略。": "モデルの候補アカウント、スキップ理由、現在のルーティング方式を確認します。", "查询凭证、插件和定时任务等运行事件的脱敏摘要。": "認証情報、プラグイン、定期タスクなどの実行イベントを、機密情報を除いた要約で確認します。", "查询生产请求的 Token 用量、成功率、排行和趋势。": "本番リクエストの Token 使用量、成功率、ランキング、推移を読み取ります。", "查询用量报表": "使用量レポートを取得", "查询请求日志": "リクエストログを取得", "查询请求状态、耗时、账号、错误与重试,不读取对话正文。": "会話本文を読まずに、リクエストの状態、所要時間、アカウント、エラー、再試行を確認します。", "查询账号余额": "アカウント残高を照会", "查询路由队列": "ルーティングキューを確認", "查询运行日志": "実行ログを取得", "标题总结失败:{message}": "タイトル生成に失敗しました:{message}", "标题总结提示词": "タイトル生成プロンプト", "标题总结模型": "タイトル生成モデル", "标题总结设置已保存": "タイトル生成設定を保存しました", "模型「{model}」当前不在可用列表中,请重新选择;也可到「模型管理」或「插件」页检查是否已启用。": "モデル「{model}」は現在の利用可能リストにありません。選び直してください。「モデル管理」または「プラグイン」ページで有効になっているかもご確認ください。", "模型名称": "モデル名", "模型响应未完整结束,请重试;未执行其中的工具调用。": "モデルの応答が最後まで完了しませんでした。再試行してください。応答内のツール呼び出しは実行されていません。", "模型对话": "モデルチャット", "模型没有返回内容": "モデルから内容が返されませんでした", "正在思考…": "考え中…", "正在执行": "作業中", "正在生成,点右侧按钮可停止": "生成中 — 右のボタンで停止できます", "正在读取可用模型…": "利用可能なモデルを読み込み中…", "正在读取图片…": "画像を読み込み中…", "没有可用的模型": "利用可能なモデルがありません", "没有已启用的模型,请先在「模型管理」里启用": "有効なモデルがありません。先に「モデル管理」で有効にしてください", "没有找到提供商「{name}」,请先不填 provider 查询,或用 keyword 搜索": "プロバイダー「{name}」が見つかりません。まず provider を指定せずに照会するか、keyword で検索してください", "没有找到附件「{ref}」:编号从 1 开始,也可以用文件名": "添付「{ref}」が見つかりません。番号は 1 から始まります。ファイル名でも指定できます", "没有提供要修改的项目": "変更する項目が指定されていません", "测一下当前最快的模型通不通": "現在いちばん速いモデルが通るか試す", "浏览": "参照", "消息操作": "メッセージ操作", "深度推理": "深い推論", "添加图片": "画像を追加", "添加图片或 JSON 文件(也可粘贴或拖入)": "画像または JSON ファイルを追加(貼り付け・ドロップも可)", "添加图片或文件": "画像またはファイルを追加", "清空全部": "すべて消去", "清空历史失败:{message}": "履歴の消去に失敗しました:{message}", "现在有哪些账号被限流?": "現在レート制限中のアカウントは?", "生成图片": "画像を生成", "生成的图片": "生成した画像", "用户目录": "ホームフォルダー", "看看哪些模型在多家重复了": "複数のプロバイダーで重複しているモデルを見る", "禁用会把账号移出转发队列,线路可能因此断供。": "無効化するとアカウントは転送キューから外れ、その経路が供給停止になる可能性があります。", "移除图片 {n}": "画像 {n} を削除", "移除文件「{name}」": "ファイル「{name}」を削除", "终端": "ターミナル", "编辑图片": "画像を編集", "编辑消息": "メッセージを編集", "聊天附件 {ref}": "チャット添付 {ref}", "自定义提供商模块未就绪(请刷新界面后重试)": "カスタムプロバイダーモジュールが準備できていません(画面を再読み込みしてから再試行してください)", "获取模型列表": "モデル一覧を取得", "获取账号列表": "アカウント一覧を取得", "获取账号详情": "アカウント詳細を取得", "计划": "計画", "设置模型映射 ID": "モデルマッピング ID を設定", "请先上传参考图片,或先生成一张图片": "先に参照画像をアップロードするか、画像を生成してください", "请提供 attachment 或 content": "attachment または content を指定してください", "读取 {name}": "{name} を読み取る", "读取 {name}({from}-{to} 字符)": "{name} を読み取る({from}-{to} 文字)", "读取凭证状态、限流、并发、代理和限制器的本地快照。": "認証情報、レート制限、接続数、プロキシ、制限ルールのローカル状態を読み取ります。", "读取历史会话失败:{message}": "会話履歴の読み込みに失敗しました:{message}", "读取响应不完整:{name}": "応答が不完全です:{name}", "读取图片失败": "画像の読み込みに失敗しました", "读取图片失败:{message}": "画像の読み込みに失敗しました:{message}", "读取文件失败:{message}": "ファイルの読み取りに失敗しました:{message}", "读取模型清单失败": "モデル一覧の取得に失敗しました", "读取聊天里上传的 JSON / .info 文件,支持分页。": "チャットにアップロードされた JSON / .info ファイルをページ単位で読み取ります。", "读取账号、启用状态、优先级与隐藏原因,支持筛选和分页。": "アカウント、有効状態、優先順位、非表示の理由を読み取ります。絞り込みとページ分割に対応します。", "读取附件": "添付を読み取る", "读各提供商的模型清单、映射名与启用状态。": "各プロバイダーのモデル一覧・マッピング名・有効状態を読み取ります。", "读各账号的额度 / 剩余用量。": "各アカウントの枠 / 残量を読み取ります。", "调整提供商顺位": "プロバイダーの順位を調整", "调整账号优先级": "アカウントの優先度を調整", "账号「{name}」匹配到多条记录,请使用账号 ID:{ids}": "アカウント「{name}」に複数の記録が一致します。アカウント ID を指定してください:{ids}", "账号额度": "アカウントの使用枠", "跟随对话模型": "対話モデルに従う", "跟随模型(不指定)": "モデルに従う(指定なし)", "跟随网关设置": "ゲートウェイ設定に従う", "返回": "戻る", "还没有历史对话": "会話履歴はまだありません", "还没有配置默认模型": "既定モデルが未設定です", "这一版网关还没有 AI 助手接口(HTTP 404),请升级网关后重试。": "このバージョンのゲートウェイには AI アシスタント API がありません(HTTP 404)。ゲートウェイを更新して再試行してください。", "这一版网关还没有 AI 助手接口(HTTP 404):后端还是旧的,重新编译 / 重启客户端后再试。{message}": "このバージョンのゲートウェイには AI アシスタント API がまだありません(HTTP 404):バックエンドが古いため、再ビルド / クライアント再起動後にお試しください。{message}", "这一轮来回已达 {n} 次上限,我先停下等你指示(可以换个说法,或拆成几步让我做)。": "このターンは往復 {n} 回の上限に達したため、指示を待って停止しました(言い換えるか、いくつかの手順に分けてください)。", "这条会话没能存进历史:{message}": "この会話を履歴に保存できませんでした:{message}", "这次工具调用没有保存完成结果,历史回放不会重新执行。": "このツール呼び出しの完了結果は保存されていません。履歴の表示時に再実行することはありません。", "这里只改本次会话用的模型,不会改网关里保存的默认值。": "ここでの変更はこの会話にのみ適用され、ゲートウェイに保存された既定値は変わりません。", "连接网关失败({base}):{message}": "ゲートウェイへの接続に失敗({base}):{message}", "选择 API Key": "API Key を選択", "选择 API Key…": "API Key を選択…", "选择对话模型": "会話モデルを選択", "配置响应不完整": "設定レスポンスが不完全です", "问点什么…": "何か聞いてください…", "项目": "プロジェクト", "额度窗口": "使用枠の期間", "首轮回答完成后自动总结;这会调用所选模型并消耗额度。": "最初の回答が完了するとタイトルを生成します。選択したモデルを呼び出し、クォータを消費します。", " · 检查于 {time}": " · {time} に確認", " 已发布(当前 {current}),更新日志如下:": " が公開されました(現在 {current})。更新履歴は以下のとおりです:", "Agent2API 一直在更新,是因为有人在背后持续投入。如果它帮到了你,欢迎请作者喝杯咖啡。": "Agent2API が更新され続けるのは、誰かが陰で時間を注ぎ続けているからです。お役に立ったなら、作者にコーヒーを一杯おごってあげてください。", "GitHub Token 未填写": "GitHub トークン未入力", "GitHub 令牌": "GitHub トークン", "GitHub 加速前缀": "GitHub 高速化プレフィックス", "GitHub 接口限流中,请在 {seconds} 秒后重试": "GitHub API のレート制限に達しています。{seconds} 秒後に再試行してください。", "GitHub 接口限流中,请在「插件设置」的「GitHub 令牌」中填写凭证,以提高请求限额。": "GitHub API のレート制限に達しています。リクエスト上限を引き上げるには、「プラグイン設定」の「GitHub トークン」に認証情報を入力してください。", "GitHub 接口限流中,请在「更新设置」的「GitHub 令牌」中填写凭证,以提高请求限额。": "GitHub API のレート制限に達しています。リクエスト上限を引き上げるには、「更新設定」の「GitHub トークン」に認証情報を入力してください。", "GitHub 接口限流中,请稍后重试": "GitHub API のレート制限に達しています。しばらくしてから再試行してください。", "GitHub 源「{source}」限流,{seconds} 秒后可重试(上游未提供恢复时间)": "GitHub ソース「{source}」がレート制限中です。{seconds} 秒後に再試行できます(解除時刻の通知なし)。", "GitHub 源「{source}」限流,请在 {seconds} 秒后重试": "GitHub ソース「{source}」がレート制限中です。{seconds} 秒後に再試行してください。", "GitHub 访问方式": "GitHub アクセス方式", "GitHub 访问设置已保存": "GitHub アクセス設定を保存しました", "QQ 群": "QQ グループ", "QQ 群 / Telegram 都在这里": "QQ グループ・Telegram はこちら", "QQ 群 {n}": "QQ グループ {n}", "Telegram 群": "Telegram グループ", "Windows 服务一键更新会核验官方更新包,再由独立升级进程停止服务、备份替换并重新启动。账号与配置保留,确认新版运行后页面自动刷新。": "Windows サービス更新は公式パッケージを検証し、独立した更新プロセスがサービスの停止、バックアップ、置換、再起動を行います。アカウントと設定は保持され、新版の動作確認後にページを再読み込みします。", "Windows 服务升级权限或目录保护不符合要求。请以管理员身份重跑新版 install-service.ps1;自定义服务账号或外部托管环境请按原方式升级。": "Windows サービスの権限またはディレクトリ保護が更新要件を満たしていません。管理者として新版の install-service.ps1 を再実行してください。カスタムサービスアカウントや外部管理環境では従来の手順で更新してください。", "Windows 服务部署需要手动升级。请解压新版服务端包,以管理员身份运行 install-service.ps1;账号与配置会保留。": "Windows サービスは手動更新が必要です。新版サーバーパッケージを展開し、管理者として install-service.ps1 を実行してください。アカウントと設定は保持されます。", "beta 版可能不稳定。两项同时开启时,按版本号选择最高版本,不会降级;安装到正式版或 beta 版后仍保留关注选择。": "beta 版は不安定な場合があります。両方を有効にすると、バージョン番号が最も高いものを選び、ダウングレードはしません。正式版または beta 版をインストールしても、選択したチャンネルは維持されます。", "systemd 一键更新由受限升级程序完成:下载、核验官方校验值、备份替换、重启并确认版本。网关保持普通账号运行,账号与配置不变。": "systemd 更新は権限を制限したプログラムがダウンロード、公式チェックサム検証、バックアップ、置換、再起動とバージョン確認を行います。ゲートウェイは一般ユーザーのままで、アカウントと設定は保持されます。", "{message};其他线路可重新检查": "{message} 他の経路は再確認できます。", "{ms} 毫秒": "{ms} ミリ秒", "{seconds} 秒后可重试": "{seconds} 秒後に再試行可能", "{version} 已就位,服务正在重启,页面会在恢复后自动刷新…({seconds}s)": "{version} を適用しました。サービスを再起動しています。復旧後にページは自動で再読み込みされます…({seconds} 秒)", "{version}(预发布)": "{version}(プレリリース)", "✅ GitHub 令牌已保存(加密存储,界面不再显示)": "✅ GitHub トークンを保存しました(暗号化して保存され、画面には表示されません)", "✅ 已加入 beta 版,之后的检查会包含 beta 版": "✅ ベータ版に参加しました。以降の更新確認にはベータ版が含まれます", "✅ 已清除界面保存的 GitHub 令牌(环境变量若配置过则继续生效)": "✅ 画面に保存された GitHub トークンを削除しました(環境変数を設定済みの場合は引き続き有効です)", "✅ 已退出 beta 版,之后的检查只看正式版": "✅ ベータ版から退出しました。以降の更新確認は正式版のみを対象にします", "✅ 数据升级完成({n} 项)": "✅ データアップグレードが完了しました({n} 件)", "✅ 更新出网已切换为 {label}": "✅ 更新の送信経路を {label} に切り替えました", "✅ 更新出网已切换为直连": "✅ 更新の送信経路を直接接続に切り替えました", "✅ 自动检查更新已保存": "✅ 更新の自動確認を保存しました", "一键更新": "ワンクリック更新", "一键更新入口不可用,请刷新页面后重试。": "ワンクリック更新が利用できません。ページを再読み込みして再試行してください。", "一键更新服务端?": "サーバーを更新しますか?", "一键更新组件不可用或权限配置不正确。请使用新版安装包执行 sudo bash install.sh --upgrade 修复。": "更新コンポーネントが利用できないか権限が不正です。新版パッケージで sudo bash install.sh --upgrade を実行して修復してください。", "上次 GitHub 限流的等待时间已结束,可重新检查": "前回の GitHub レート制限の待機時間が終了しました。再確認できます。", "上次结果:{state}": "前回の結果:{state}", "上游未提供恢复时间,按 GitHub 建议短暂等待": "解除時刻の通知がないため、GitHub の推奨に従い短時間待機", "下载中": "ダウンロード中", "下载失败": "ダウンロード失敗", "下载失败:{error}": "ダウンロードに失敗しました:{error}", "下载已取消,可重新点击「下载并安装」。": "ダウンロードをキャンセルしました。「ダウンロードしてインストール」を再度クリックできます。", "下载已取消,可重新点击「下载并更新」。": "ダウンロードをキャンセルしました。「ダウンロードして更新」を再度クリックできます。", "下载并安装": "ダウンロードしてインストール", "下载并更新": "ダウンロードして更新", "下载服务端包": "サーバーパッケージを取得", "不支持此类请求": "このリクエストは非対応", "与 gh-proxy.com 属于同一服务的备用线路。": "gh-proxy.com と同じサービスの予備経路です。", "与网关的软件更新和插件共用设置;APK 下载由手机联网,GitHub 令牌不会发送给加速站。": "ゲートウェイの更新とプラグインで設定を共有します。APK はスマートフォンがダウンロードし、GitHub トークンを高速化サイトには送りません。", "与软件更新共用出网代理和 GitHub 凭证,修改任意一处都会同步生效。": "ソフトウェア更新と外向きプロキシおよび GitHub 認証情報を共有します。どちらで変更しても両方に反映されます。", "个人开发并开源维护,免费使用,也不会收集你的账号数据。如果它帮到了你,欢迎到项目仓库点个 Star 支持一下。": "が個人で開発し、オープンソースとして保守しています。無料で使えて、あなたのアカウントデータを収集することもありません。役に立ったなら、プロジェクトリポジトリで Star を付けて応援していただけると嬉しいです。", "仅 beta 版": "beta 版のみ", "仅官方源": "公式ソースのみ", "仅插件索引和文件下载,不支持版本查询": "プラグイン索引とファイル取得のみ。バージョン照会は非対応", "仅正式版": "正式版のみ", "仓库暂无发布版本。{at}": "リポジトリにはまだリリース版がありません。{at}", "代理列表读取失败": "プロキシ一覧の読み込みに失敗しました", "令牌已生效,但写入磁盘失败(重启后会丢失)": "トークンは有効になりましたが、ディスクへの書き込みに失敗しました(再起動すると失われます)", "以上状态来自网关;APK 下载会由手机按本机网络重新选择通道。": "上記はゲートウェイ側の状態です。APK はスマートフォンのネットワークで経路を選び直します。", "优先使用加速源,访问失败后回退官方源;不会绕过 GitHub 限流冷却。": "高速化ソースを優先し、失敗時は公式ソースに戻ります。GitHub のレート制限の待機時間は守られます。", "优先加速源": "優先する高速化ソース", "优先访问官方源,连接失败后尝试加速源;短期记住成功的源,定期恢复官方优先。": "公式ソースを優先し、接続に失敗すると高速化ソースを試します。成功したソースを短時間記憶し、定期的に公式優先に戻します。", "允许本机自动检查": "この端末での自動確認を許可", "先使用指定加速源,失败后尝试其他已启用的加速源,最后回退官方源。": "指定ソースを最初に試し、失敗したら有効な他の高速化ソース、最後に公式ソースを使用します。", "关于作者": "作者について", "关注 beta 版更新": "beta 版の更新を受け取る", "关注正式版更新": "正式版の更新を受け取る", "出网线路与 GitHub 令牌设置": "送信経路と GitHub トークンの設定", "出网线路已切换,但写入磁盘失败(重启后会恢复原线路)": "送信経路を切り替えましたが、ディスクへの書き込みに失敗しました(再起動すると元の経路に戻ります)", "分别探测版本查询、插件索引和文件下载,选择最快返回有效内容的源;成功线路短期复用,失败自动切换。": "バージョン照会、プラグイン索引、ダウンロードを個別に確認します。最初に有効な内容を返したソースを短時間再利用し、失敗時は切り替えます。", "分钟({min} ~ {max})": "分({min} ~ {max})", "到 GitHub 发布页下载": "GitHub のリリースページからダウンロード", "到点自动向 GitHub 查询新版本,查到就走「检测到更新」弹窗;关闭后「检查更新」按钮仍可手动触发": "時間になると自動で GitHub に新バージョンを問い合わせ、見つかると「更新を検出」ダイアログを表示します。閉じた後も「更新を確認」ボタンから手動で実行できます", "加入 beta 版": "ベータ版に参加", "加入交流群": "コミュニティに参加", "加速源优先": "高速化ソース優先", "单独设置": "個別に設定", "即将满员": "まもなく満員", "即将满员,请优先加3群、4群": "まもなく満員 — グループ 3 または 4 への参加をおすすめします", "去更新": "更新へ移動", "发布页上没有 {wanted} 这个文件": "リリースページに {wanted} というファイルがありません", "发布页上没有对应本机架构的服务端更新包": "リリースページに本機のアーキテクチャ向けのサーバー更新パッケージがありません", "发布页上的文件被更新源的访问方式过滤掉了,请检查「更新设置」里的 GitHub 访问方式": "リリースページのファイルが更新元のアクセス方式で除外されました。「更新設定」の GitHub アクセス方式を確認してください。", "发现新版本 {latest}(当前 {current})。{at}": "新バージョン {latest} が見つかりました(現在 {current})。{at}", "发现新版本 {latest}(当前 {current})。{reason}{at}": "新バージョン {latest} があります(現在 {current})。{reason}{at}", "发现新版本 {latest}(当前 {current}),但该版本没有提供容器内更新包({reason});请在宿主机执行 docker compose pull && docker compose up -d 升级。{at}": "新しいバージョン {latest} があります(現在 {current})が、このバージョンにはコンテナ内更新パッケージがありません({reason})。ホスト側で docker compose pull && docker compose up -d を実行して更新してください。{at}", "发现新版本 {latest}(当前 {current}),但这一版没有提供本机安装包({reason});可到 GitHub 发布页手动下载。{at}": "新しいバージョン {latest} があります(現在 {current})が、このバージョンには本機用のインストーラーがありません({reason})。GitHub のリリースページから手動でダウンロードできます。{at}", "取消下载": "ダウンロードをキャンセル", "取消失败:{error}": "キャンセルに失敗しました:{error}", "只访问 GitHub 官方源,仍使用所选出网代理。": "選択した外向きプロキシを使用し、GitHub の公式ソースのみにアクセスします。", "可安装": "インストール可能", "启动失败": "起動失敗", "启动安装程序失败:{error}": "インストーラーの起動に失敗しました:{error}", "启用加速源 {source}": "高速化ソース {source} を有効化", "在 GitHub 查看完整说明": "GitHub で完全な説明を見る", "在 QQ 里搜索群号即可加入。": "QQ でグループ番号を検索すると参加できます。", "在宿主机执行 docker compose pull && docker compose up -d 即可升级。": "ホスト側で docker compose pull && docker compose up -d を実行すると更新できます。", "在浏览器中打开": "ブラウザで開く", "在浏览器中打开 GitHub 发布页": "GitHub のリリースページをブラウザで開く", "在浏览器中打开项目仓库,点 Star 支持作者": "ブラウザでプロジェクトリポジトリを開き、Star で作者を応援", "在默认浏览器中打开 GitHub 的令牌创建页(备注已预设,无需勾选任何权限,直接点 Generate token)": "既定のブラウザで GitHub のトークン作成ページを開きます(メモは入力済み。権限のチェックは不要で、そのまま Generate token をクリック)", "填写后检查限额 60 → 5000 次/小时(创建令牌无需勾选任何权限)": "入力すると確認の上限が 60 → 5000 回/時間に上がります(トークンの作成に権限のチェックは不要)", "填写支持 Raw、Release 和 GitHub API 的 HTTPS 加速站前缀,留空恢复默认。": "Raw、Release、GitHub API に対応する HTTPS 高速化サイトのプレフィックスを入力してください。空欄で既定値に戻ります。", "复制群号 {group}": "グループ番号 {group} をコピー", "安装中": "インストール中", "安装包": "インストーラー", "安装包已下载完成,正在启动安装程序(需要管理员权限,会弹出 UAC 确认框)…": "インストーラーのダウンロードが完了しました。インストーラーを起動しています(管理者権限が必要で、UAC の確認ダイアログが表示されます)…", "安装包已下载完成,正在启动新的 AppImage…": "インストーラーのダウンロードが完了しました。新しい AppImage を起動しています…", "安装包已下载完成,正在打开系统安装器…": "インストーラーのダウンロードが完了しました。システムのインストーラーを開いています…", "安装包已下载完成,正在挂载磁盘映像…": "インストーラーのダウンロードが完了しました。ディスクイメージをマウントしています…", "安装包已就绪:{name}。点击「安装并重启」后会启动新的 AppImage;把它移动到你的应用目录并替换旧文件即完成升级(本程序会先退出以释放文件占用)。": "インストーラーの準備ができました: {name}。「インストールして再起動」で新しい AppImage が起動します。アプリ用フォルダーに移動して旧ファイルと置き換えれば更新完了です(本アプリはファイルを解放するため先に終了します)。", "安装包已就绪:{name}。点击「安装并重启」后需要管理员权限,会弹出 UAC 确认框。": "インストーラーの準備ができました:{name}。「インストールして再起動」をクリックすると管理者権限が必要で、UAC の確認ダイアログが表示されます。", "安装包已就绪:{name}。点击「打开安装包」后会交给系统安装器,按提示输入密码即可完成安装(本程序无需退出)。": "インストーラーの準備ができました: {name}。「インストーラーを開く」でシステムのインストーラーに渡されます。案内に従ってパスワードを入力してください(本アプリの終了は不要です)。", "安装包已就绪:{name}。点击「打开安装包」后会挂载磁盘映像,把应用拖进「应用程序」即可完成安装。": "インストーラーの準備ができました:{name}。「インストーラーを開く」をクリックするとディスクイメージがマウントされ、アプリを「アプリケーション」にドラッグすればインストールが完了します。", "安装包已挂载,请在弹出的窗口里把应用拖进「应用程序」完成安装。安装完成后重新打开本程序即可。": "インストーラーをマウントしました。表示されたウィンドウでアプリを「アプリケーション」にドラッグし、インストールを完了してください。インストール後は本アプリを開き直せば完了です。", "安装失败": "インストール失敗", "安装失败:{error}": "インストールに失敗しました:{error}", "安装并重启": "インストールして再起動", "安装程序已启动,本程序将退出以便完成覆盖安装。安装程序需要管理员权限,会弹出 UAC 确认框,请选择「是」。": "インストーラーを起動しました。上書きインストールを完了するため、本アプリは終了します。インストーラーには管理者権限が必要で、UAC の確認ダイアログが表示されるので「はい」を選択してください。", "官方源": "公式ソース", "容器内更新:更新包从 GitHub 发布页下载,校验 sha256 后由面板替换容器内的程序与界面文件,再重启服务(容器由 restart 策略拉起,页面会自动刷新)。更新的是容器里的文件,compose 里的镜像标签不变 —— 之后执行 docker compose pull && up -d 会使用镜像里的版本。检查更新与下载的出网线路、GitHub 令牌都在「更新设置」里。": "コンテナ内更新:更新パッケージは GitHub のリリースページからダウンロードし、sha256 を検証したうえでパネルがコンテナ内のプログラムと UI ファイルを置き換え、その後サービスを再起動します(コンテナは restart ポリシーで起動され、ページは自動で再読み込みされます)。更新されるのはコンテナ内のファイルで、compose のイメージタグは変わりません —— 後で docker compose pull && up -d を実行するとイメージ内のバージョンを使用します。更新の確認とダウンロードの送信経路、GitHub トークンは「更新設定」にあります。", "将更新至 {version}。下载和校验完成后会短暂停止服务、替换程序并自动重启;账号与配置会保留。确认后无需再次点击安装。": "{version} に更新します。ダウンロードと検証後、サービスを短時間停止してファイルを置き換え、自動で再起動します。アカウントと設定は保持されます。追加のインストール操作は不要です。", "已加密存储在本地,不显示具体值;粘贴新令牌可覆盖": "ローカルに暗号化して保存され、値は表示されません。新しいトークンを貼り付けると上書きできます", "已取消": "キャンセル済み", "已填写": "入力済み", "已填写(粘贴新令牌可覆盖)": "入力済み(新しいトークンを貼り付けると上書き)", "已打开系统安装器,请在它弹出的窗口里完成安装。安装完成后重新打开本程序即可。": "システムのインストーラーを開きました。表示されたウィンドウでインストールを完了し、その後このアプリを開き直してください。", "已是最新": "最新です", "已更新至 {version},服务已恢复。": "{version} に更新され、サービスが復旧しました。", "已替换为 {version},正在重启服务…": "{version} に置き換えました。サービスを再起動しています…", "已配置 GITHUB_TOKEN 环境变量,界面保存的令牌优先于它": "GITHUB_TOKEN 環境変数が設定されています。画面で保存したトークンが優先されます", "开启后只更新到 beta 版(预发布),取版本最高的一个;beta 版可能不稳定。开启期间不会因为正式版发布而自动切回正式版 —— 想切回请关闭本开关。关闭后只更新到正式版,且不会降级到版本号更低的版本。": "オンにすると beta 版(プレリリース)のみを対象に、最も高いバージョンへ更新します。beta 版は不安定な可能性があります。オンにしている間は、正式版がリリースされても自動で正式版に戻ることはありません —— 戻すにはこのスイッチをオフにしてください。オフにすると正式版のみを対象に更新し、より低いバージョンへダウングレードされることはありません。", "开始更新": "更新を開始", "当前 Windows 服务尚未接入一键更新。请解压新版服务端包,以管理员身份运行一次 install-service.ps1,原有账号、目录、端口和配置会保留。": "この Windows サービスにはワンクリック更新がまだ設定されていません。新版サーバーパッケージを展開し、管理者として install-service.ps1 を一度実行してください。既存のアカウント、ディレクトリ、ポート、設定は保持されます。", "当前下载通道:{source}": "ダウンロード元:{source}", "当前为直接运行的服务端,请停止程序后替换服务端包,再重新启动。": "サーバーはサービス管理なしで動作しています。停止してサーバーファイルを置き換え、再起動してください。", "当前关注:{channels}": "現在の対象:{channels}", "当前安装尚未接入一键更新。请下载新版服务端包,执行一次 sudo bash install.sh --upgrade;之后即可在面板更新。": "ワンクリック更新はまだ導入されていません。新版サーバーパッケージを取得し、一度 sudo bash install.sh --upgrade を実行してください。その後はパネルから更新できます。", "当前已是最新版本({current})。{at}": "現在のバージョンが最新です({current})。{at}", "当前版本": "現在のバージョン", "当前系统或架构暂不支持面板自动安装,请查看发布页。": "このシステムまたはアーキテクチャでは自動インストールに対応していません。リリースページを確認してください。", "当前线路不可用:{error};请重新选择代理或切回直连": "現在の経路は使用できません:{error}。プロキシを選び直すか、直接接続に戻してください", "当前网关仍使用旧版单源设置,升级网关后可管理多个加速源。": "このゲートウェイは旧版の単一ソース設定です。更新後に複数の高速化ソースを管理できます。", "当前需要手动升级": "手動更新が必要です", "当前:自动检查关闭": "現在:自動確認は無効", "当前:自动检查开启,每 {n} 分钟": "現在:自動確認は有効、{n} 分ごと", "待重启": "再起動待ち", "待重新检查": "再確認が必要", "微信赞赏": "WeChat", "微信赞赏码": "WeChat の寄付コード", "打开 GitHub 令牌页面": "GitHub トークンページを開く", "打开安装包": "インストーラーを開く", "打开链接失败:{error}": "リンクを開けませんでした:{error}", "指定代理": "指定プロキシ", "指定加速源优先": "指定した高速化ソースを優先", "按上游返回时间": "接続先が通知した解除時刻を使用", "插件索引": "プラグイン索引", "插件默认跟随这里的更新通道、自动检查和间隔;可在插件设置中单独设置。": "プラグインは既定で、この更新チャンネル・自動確認・間隔に従います。プラグイン設定で個別に設定できます。", "支付宝": "Alipay", "支付宝收款码": "Alipay の支払い用 QR コード", "支持作者": "作者を応援", "支持版本查询": "バージョン照会に対応", "收藏项目": "Star を付ける", "数据升级失败:{error}(旧数据仍在原处,下次启动会自动重试)": "データアップグレードに失敗しました:{error}(旧データはそのまま残っています。次回起動時に自動で再試行します)", "数据升级未全部完成(已导入 {n} 项,仍有数据待导入,下次启动会自动重试)": "データアップグレードが完了しませんでした({n} 件をインポート済み。未インポートのデータが残っており、次回起動時に自動で再試行します)", "数据升级:没有需要导入的旧数据": "データアップグレード:インポートが必要な旧データはありません", "文件下载": "ファイル取得", "新版本 ": "新バージョン ", "无法开始更新:{error}": "更新を開始できません:{error}", "无法比较": "比較できません", "无法解密": "復号できません", "无法读取更新信息": "更新情報を読み取れません", "显示的是当前网络下的响应耗时,不代表长期稳定性或完整下载速度。未探测的源会在实际更新时检查。": "表示時間は現在のネットワークでの応答時間であり、長期的な安定性や全体のダウンロード速度ではありません。未確認のソースは更新時に確認します。", "暂未确认服务恢复,请检查服务器状态后刷新页面;不会自动重复安装。": "サービスの復旧を確認できません。サーバーの状態を確認してページを再読み込みしてください。自動で再インストールはしません。", "更新任务已结束,但当前运行版本与目标不一致,请检查服务日志。": "更新は終了しましたが、実行中のバージョンが対象と一致しません。サービスログを確認してください。", "更新出网代理": "更新の送信プロキシ", "更新包从 GitHub Release 获取。自动模式按实际请求选择可用通道,失败后换源;镜像安装包必须匹配官方校验值,取不到时仅使用原始源。加速源、代理和令牌在「更新设置」中配置,指定代理失效不会静默直连。": "更新は GitHub Release から取得します。自動モードは実際の応答で経路を選び、失敗時に切り替えます。ミラーのインストーラーは公式チェックサムとの一致が必須で、取得できない場合は元のソースのみを使用します。高速化ソース、プロキシ、トークンは「更新設定」で設定します。指定プロキシの障害時に直接接続へ黙って切り替えることはありません。", "更新包从 GitHub Release 获取,下载后交给本平台安装器。GitHub 访问方式、加速前缀、出网代理和令牌在「更新设置」中配置。默认官方优先,连接失败后尝试加速源;镜像安装包必须匹配官方校验值,取不到时仅使用原始源。指定代理失效会明确报错,不会静默改走直连。": "更新パッケージは GitHub Release から取得し、ダウンロード後は各プラットフォームのインストーラーで開きます。GitHub アクセス方式、高速化プレフィックス、外向きプロキシ、トークンは「更新設定」で設定できます。既定では公式を優先し、接続失敗時に高速化ソースを試します。ミラーのインストーラーは公式のチェックサムと一致する必要があり、取得できない場合は元のソースのみを使います。指定プロキシが無効な場合はエラーを表示し、直接接続に黙って切り替えません。", "更新包从 GitHub 发布页下载,下载完成后可直接启动安装程序并自动重启本程序。安装包会先校验来源域名与文件完整性。检查更新与下载安装包的出网线路、GitHub 令牌都在「更新设置」里:线路默认直连(直连失败时自动借 Clash Verge 的混合端口重试一次),选定指定出口后只走该出口;填写 GitHub 令牌可把检查限额从 60 次/小时提高到 5000 次/小时。": "更新パッケージは GitHub のリリースページからダウンロードし、完了後はそのままインストーラーを起動して本アプリを自動的に再起動できます。インストーラーはダウンロード元のドメインとファイルの完全性を先に検証します。更新の確認とインストーラーのダウンロードの送信経路、GitHub トークンは、いずれも「更新設定」にあります。経路は既定で直接接続(直接接続に失敗すると Clash Verge の混合ポートを借りて一度だけ再試行)で、指定の出口を選ぶとその出口だけを使用します。GitHub トークンを入力すると、確認の上限を 60 回/時間から 5000 回/時間に引き上げられます。", "更新包已就绪:{name}。点「安装并重启」后,面板会校验并替换容器内的程序与界面文件,然后重启服务(页面会自动刷新)。": "更新パッケージの準備ができました:{name}。「インストールして再起動」をクリックすると、パネルがコンテナ内のプログラムと UI ファイルを検証して置き換え、その後サービスを再起動します(ページは自動で再読み込みされます)。", "更新失败": "更新失敗", "更新失败:{error}": "更新失敗:{error}", "更新完成": "更新完了", "更新已应用到容器内,重启服务后生效。{at}": "更新はコンテナ内に適用されました。サービスを再起動すると有効になります。{at}", "更新已应用到容器内,重启服务后生效。{at}(本次检查失败:{error})": "コンテナ内に更新が適用されました。サービスを再起動すると有効になります。{at}(今回の確認は失敗しました:{error})", "更新日志": "更新履歴", "更新设置": "更新設定", "更新进行中": "更新中", "更新通道已保存": "更新チャンネルを保存しました", "更新通道已改变,请重新检查更新。": "更新チャンネルが変わりました。もう一度更新を確認してください。", "替换完成,正在重启服务…": "置き換えが完了しました。サービスを再起動しています…", "最多保留 6 个 HTTPS 加速源;自定义源可关闭版本查询支持。": "HTTPS 高速化ソースは最大 6 件です。カスタムソースではバージョン照会を無効にできます。", "最新发布版本为 {latest},但当前版本号「{current}」无法解析,未做新旧判断。{at}": "最新リリースは {latest} ですが、現在のバージョン番号「{current}」を解析できないため、新旧の判定は行いませんでした。{at}", "最新版本": "最新バージョン", "最近采用": "直近の使用先", "有新版本": "新バージョンあり", "服务正在重启,页面会在恢复后自动刷新…({seconds}s)": "サービスを再起動しています。復旧後にページは自動で再読み込みされます…({seconds} 秒)", "服务端压缩包": "サーバーアーカイブ", "未找到适用的更新包": "対応する更新パッケージなし", "未找到适用的更新包。需要:{wanted};发布页包含的文件类型:{seen}。": "対応する更新パッケージが見つかりません。必要:{wanted}。公開されているファイル形式:{seen}。", "未探测": "未確認", "未检查": "未確認", "本工具由": "本ツールは", "查看发布页": "リリースページを見る", "校验中": "検証中", "检查中": "確認中", "检查中…": "確認中…", "检查失败": "確認失敗", "检查更新": "更新を確認", "检查更新与下载安装包使用所选线路;未选择代理时先直连,失败后尝试 Clash Verge 混合端口;指定代理不可用时不会自动改走直连。": "更新確認とインストーラーのダウンロードは選択した経路を使用します。未選択の場合は直接接続し、失敗すると Clash Verge の混合ポートを試します。指定したプロキシが使えない場合、直接接続には自動で切り替えません。", "检查更新与下载安装包使用所选线路;未选择代理时直连,指定代理不可用时不会自动改走直连。": "更新確認とインストーラーのダウンロードは選択した経路を使用します。未選択なら直接接続し、指定プロキシが利用できない場合は自動で直接接続に戻りません。", "检查更新与下载安装包走哪条线路(当前:{current});选择即保存。选项来自「网络代理」页;直连失败时会自动借 Clash 混合端口重试一次,选定指定代理后只走它": "更新の確認とインストーラーのダウンロードがどの経路を通るか(現在:{current})。選択すると保存されます。選択肢は「ネットワークプロキシ」ページのものです。直接接続に失敗した場合は Clash の混合ポートを借りて一度だけ再試行し、指定プロキシを選ぶとそのプロキシだけを使用します", "检查更新失败:{error}": "更新の確認に失敗しました:{error}", "检查更新失败:{error}(以下版本与更新日志来自上次成功检查,检查于 {time})": "更新の確認に失敗しました:{error}(以下のバージョンと更新履歴は前回の確認成功時({time})のものです)", "检查计划": "確認スケジュール", "检查间隔必须是 {min} ~ {max} 分钟": "確認間隔は {min} ~ {max} 分にしてください", "检查间隔(分钟)": "確認間隔(分)", "检测到更新": "更新を検出", "检测到自定义程序或界面路径,一键更新不会覆盖这些位置。请按原部署方式升级。": "プログラムまたは画面にカスタムパスを検出しました。ワンクリック更新では上書きしません。従来のデプロイ手順で更新してください。", "正在下载 {name}:{percent}%({received} / {total} MB)": "{name} をダウンロード中:{percent}%({received} / {total} MB)", "正在下载 {version} 的服务端更新包…": "{version} のサーバー更新をダウンロード中…", "正在下载安装包…(下载完成后会交给系统安装器,按提示输入密码即可完成安装)": "インストーラーをダウンロード中…(完了後はシステムのインストーラーに渡されます。案内に従ってパスワードを入力してください)", "正在下载安装包…(下载完成后会启动新的 AppImage;把它替换掉旧文件即完成升级)": "インストーラーをダウンロード中…(完了後は新しい AppImage が起動します。旧ファイルと置き換えれば更新完了です)", "正在下载安装包…(下载完成后会挂载磁盘映像,把应用拖进「应用程序」即可完成安装)": "インストーラーをダウンロード中…(ダウンロード完了後にディスクイメージをマウントし、アプリを「アプリケーション」にドラッグすればインストールが完了します)", "正在下载安装包…(下载完成后启动安装程序需要管理员权限,会弹出 UAC 确认框)": "インストーラーをダウンロード中…(ダウンロード完了後に起動するインストーラーには管理者権限が必要で、UAC の確認ダイアログが表示されます)", "正在下载服务端更新包…(下载完成后由面板完成替换,重启容器内的服务后生效)": "サーバー更新パッケージをダウンロードしています…(ダウンロード完了後にパネルがファイルを置き換え、コンテナ内のサービスを再起動すると有効になります)", "正在取消下载…": "ダウンロードをキャンセルしています…", "正在备份并替换服务端程序与界面,请勿关闭服务器…": "サーバーと画面をバックアップして置き換えています。サーバーの電源を切らないでください…", "正在把旧数据导入 SQLite 数据库(旧文件会保留,不会删除)…": "旧データを SQLite データベースにインポートしています(旧ファイルは残され、削除されません)…", "正在查询 GitHub 上的最新发布版本…": "GitHub 上の最新リリースを問い合わせています…", "正在校验并替换容器内的程序与界面文件…": "コンテナ内のプログラムと UI ファイルを検証して置き換えています…", "正在独立核验官方更新包,校验通过前不会修改现有程序…": "公式パッケージを独立して検証中です。検証が完了するまで既存ファイルは変更しません…", "正在选择下载通道…": "ダウンロード経路を選択中…", "正在重启服务并确认新版本,页面恢复后会自动刷新…": "サービスを再起動し、新バージョンを確認しています。復旧後にページを再読み込みします…", "正式版与 beta 版": "正式版と beta 版", "没有可下载的安装包": "ダウンロードできるインストーラーがありません", "没有可下载的安装包:{reason}": "ダウンロードできるインストーラーがありません:{reason}", "没有启用的加速源,将只使用官方源。": "有効な高速化ソースがないため、公式ソースのみを使用します。", "沿用已记录的恢复时间": "記録済みの解除時刻を使用", "点击「检查更新」后,这里会显示最新版本的更新说明。": "「更新を確認」をクリックすると、ここに最新バージョンの更新内容が表示されます。", "点击「检查更新」查询 GitHub 上的最新发布版本。": "「更新を確認」をクリックして GitHub 上の最新リリースを確認します。", "点击「检查更新」查询最新发布版本。": "「更新を確認」をクリックして最新リリースを確認します。", "点击在浏览器中打开": "クリックでブラウザが開きます", "点击复制群号": "クリックでグループ番号をコピー", "版本 {version} · 按 GitHub 访问设置下载安装包": "バージョン {version} · GitHub アクセス設定でインストーラーをダウンロード", "版本查询": "バージョン照会", "版本查询、插件索引、文件下载": "バージョン照会・プラグイン索引・ファイル取得", "状态来自最近一次实际请求,并非实时测速。过期后标为待重新检查;限流只暂停对应线路,其他线路仍可使用。": "直近の実際のリクエスト結果であり、リアルタイムの速度測定ではありません。期限切れは再確認が必要と表示します。レート制限は該当経路のみを停止し、他の経路は引き続き使用できます。", "环境变量": "環境変数", "立即重启": "今すぐ再起動", "等待恢复": "復旧待ち", "管理员已关闭面板一键更新,请使用手动升级方式。": "管理者がワンクリック更新を無効にしています。手動で更新してください。", "粘贴 GitHub 令牌(ghp_… / github_pat_…)": "GitHub トークンを貼り付け(ghp_… / github_pat_…)", "网关已关闭自动检查,此处只做手动检查": "ゲートウェイの自動確認は無効です。ここでは手動確認のみ利用できます。", "群号": "グループ番号", "群号:{group}": "グループ番号:{group}", "自动检查更新": "更新の自動確認", "自动选择最快可用源": "利用可能な最速ソースを自動選択", "自动(官方优先)": "自動(公式優先)", "自定义加速前缀": "カスタム高速化プレフィックス", "至少需要关注正式版或 beta 版中的一个通道": "正式版または beta 版の少なくとも一方を選択してください。", "补充内置备用源": "未登録の内蔵ソースを追加", "记录于 {time}": "記録時刻:{time}", "请先粘贴 GitHub 令牌": "先に GitHub トークンを貼り付けてください", "请检查服务日志": "サービスログを確認してください", "读取下载进度失败:{error}": "ダウンロード進捗の読み取りに失敗しました:{error}", "读取中": "読み込み中", "赞赏完全自愿,不解锁任何功能,也不影响正常使用。": "寄付は完全に任意です。機能の解放や通常の利用には一切影響しません。", "赞赏方式": "寄付方法", "跟随软件": "ソフトウェアに従う", "跳过此次更新": "今回の更新をスキップ", "软件更新": "ソフトウェア更新", "软件更新与插件共用此设置;GitHub 令牌仅发送给官方 API。镜像安装包需要官方校验值,镜像插件包需要可信签名。": "ソフトウェア更新とプラグインで共有します。GitHub トークンは公式 API にのみ送信します。ミラーのインストーラーには公式のチェックサム、プラグインには信頼できる署名が必要です。", "软件版本检查设置不可用": "ソフトウェア更新の確認設定を取得できません。", "返回内容异常": "応答内容が不正", "这一版只有 {seen},没有本机需要的 {wanted}": "このバージョンには {seen} しかなく、本機に必要な {wanted} がありません", "这一版没有为当前平台提供安装包": "このバージョンには現在のプラットフォーム用のインストーラーがありません", "这一版没有发布本机需要的安装包({wanted})": "このバージョンには本機に必要なインストーラー({wanted})が公開されていません", "这一版没有提供容器内更新包": "このバージョンにはコンテナ内更新パッケージがありません", "这一版没有提供容器内更新包:{reason}": "このバージョンにはコンテナ内更新パッケージがありません:{reason}", "这一版没有提供本机安装包": "このバージョンには本機用のインストーラーがありません", "这一版还没有上传任何文件(构建可能失败,或仍在打包上传)": "このバージョンにはまだファイルが 1 つもアップロードされていません(ビルドに失敗したか、まだアップロード中です)", "这个版本没有填写发布说明。": "このバージョンのリリースノートは登録されていません。", "连接超时": "接続タイムアウト", "通道已切换,但写入磁盘失败(重启后会回到原设置)": "チャンネルを切り替えましたが、ディスクへの書き込みに失敗しました(再起動すると元の設定に戻ります)", "遇到问题或有使用心得,欢迎到群里交流。": "ご質問や使用感の共有は各グループへどうぞ。", "重启中": "再起動中", "重新粘贴保存一次即可自愈": "もう一度貼り付けて保存すれば復旧します", "重试下载": "ダウンロードを再試行", "链接地址不受支持": "リンクのアドレスはサポートされていません", "限流冷却中": "レート制限の解除待ち", "面板自动安装": "パネルから自動インストール", "预发布": "プレリリース", "默认开启;即使当前使用 beta 版,也可收到版本号更高的正式版更新。": "既定で有効です。beta 版を使用中でも、バージョン番号がより高い正式版を受け取れます。", "默认跟随软件的正式版和 beta 关注选择;单独设置只影响插件。始终按版本号选择更新,不会降级。": "既定でソフトウェアの正式版・beta 版の選択に従います。個別設定はプラグインのみに適用されます。更新は常にバージョン番号で選び、ダウングレードはしません。", "默认跟随软件的自动检查和间隔。关闭自动检查也会暂停插件自动更新和自动下载;手动检查与安装不受影响。": "既定でソフトウェアの自動確認と間隔に従います。自動確認を無効にすると、プラグインの自動更新・自動ダウンロードも一時停止します。手動確認とインストールは利用できます。", "(检查于 {time})": "({time} に確認)", "API Key 列表": "API Key 一覧", "Key 已停用": "Key を無効化しました", "Key 已删除": "Key を削除しました", "Key 已启用": "Key を有効化しました", "Key 至少需要 8 个字符": "Key は 8 文字以上必要です", "✅ Key 已创建,记得复制给客户端": "✅ Key を作成しました。クライアントへのコピーをお忘れなく", "✅ 可用范围已保存": "✅ 利用範囲を保存しました", "不限制": "制限なし", "与": "と", "例如 Cursor / 公司电脑": "例:Cursor / 会社の PC", "保存失败:{reason}": "保存に失敗しました:{reason}", "保存范围": "範囲を保存", "创建": "作成", "创建时间": "作成日時", "删除网关 Key": "ゲートウェイキーを削除", "助手图片工具": "アシスタント画像ツール", "助手标题总结": "アシスタントのタイトル要約", "可用提供商": "利用可能なプロバイダー", "可用提供商:{names}": "利用可能なプロバイダー:{names}", "可用模型": "利用可能なモデル", "可用模型:{names}": "利用可能なモデル:{names}", "可用范围": "利用範囲", "可用范围 · {name}": "利用範囲 · {name}", "启用「{name}」": "「{name}」を有効化", "复制 Key": "Key をコピー", "客户端请求需带 ": "クライアントのリクエストには ", "已删除": "削除済み", "已启用鉴权 · {n} 把 Key 生效": "認証が有効 · {n} 本の Key が有効", "当前不限制:这把 Key 可以用全部提供商与全部对外模型": "現在は制限なし:この Key はすべてのプロバイダーとすべての外部公開モデルを利用できます", "所选 API Key 已不可用": "選択した API Key は利用できません", "所选 API Key 已不可用,请重新选择": "選択した API Key は利用できません。別の Key を選択してください。", "提供商:{names}": "プロバイダー:{names}", "搜索模型…": "モデルを検索…", "操作失败:{reason}": "操作に失敗しました:{reason}", "新建 API Key": "新規 API Key", "日活保活": "日次アクティビティ維持", "显示": "表示", "未启用鉴权": "認証は未有効", "未命名": "名称未設定", "未提供客户端标识": "クライアント識別情報なし", "未知客户端": "不明なクライアント", "模型调用使用所选 Key 的权限,日志记录 Key 名称,不保存密钥值。": "モデル呼び出しには選択した Key の権限が適用されます。ログには Key 名のみを記録し、秘密鍵の値は保存しません。", "模型:{names}": "モデル:{names}", "正在读取 API Key…": "API Key を読み込み中…", "没有匹配的选项": "一致するオプションがありません", "没有可用的 API Key,请先在「网关 Key」页创建并启用": "利用可能な API Key がありません。「ゲートウェイ Key」ページで作成して有効化してください。", "留空 = 不限制": "空欄 = 制限なし", "留空自动生成;手填至少 8 个字符": "空欄なら自動生成;手動入力は 8 文字以上", "留空表示不限制;同时设置时请求需同时满足两个条件(模型在白名单内且路由到允许的提供商)。 「可用模型」的候选跟着上面勾选的提供商走:没勾提供商时它是空的(还没有约束范围), 勾了几家就列出这几家能收的全部对外名。": "空欄なら制限なし;両方を設定した場合、リクエストは 2 つの条件を同時に満たす必要があります(モデルがホワイトリスト内にあり、かつ許可されたプロバイダーにルーティングされる)。「利用可能なモデル」の候補は上で選択したプロバイダーに連動します:プロバイダーを選んでいないときは空です(まだ範囲を制約していないため)、数社を選ぶと、それらのプロバイダーが受け入れられるすべての外部公開名が表示されます。", "确定删除 Key「{name}」?使用它的客户端会立刻无法访问。": "Key「{name}」を削除しますか?使用中のクライアントは直ちにアクセスできなくなります。", "网关 Key 表": "ゲートウェイキーテーブル", "自动记住本次选择,下次打开继续使用;Key 被停用或删除后需重新选择。": "今回の選択は記憶され、次回も使用されます。Key が無効化または削除された場合は選び直してください。", "请先在上面选择可用提供商": "先に上で利用可能なプロバイダーを選択してください", "读取 Key 列表失败:{reason}": "Key 一覧の読み込みに失敗しました:{reason}", "还没有 Key,当前不鉴权": "Key がまだありません。現在は認証を行いません", "这几家当前没有可用模型(账号未登录或清单为空)": "これらのプロバイダーには現在利用可能なモデルがありません(アカウントが未ログイン、またはリストが空です)", "这把 Key 不限制提供商与模型(可用全部上游与全部对外模型)": "この Key はプロバイダーとモデルを制限しません(すべてのアップストリームとすべての外部公開モデルを利用可能)", "限制:{text}": "制限:{text}", "隐藏": "非表示", "(模型候选需先选提供商;不选则沿用当前这几项,保存后仍按模型白名单生效)": "(モデルの候補には先にプロバイダーの選択が必要です;選択しない場合は現在の項目をそのまま使用し、保存後もモデルのホワイトリストとして有効です)", "(行内「可用范围」):留空 = 不限制,两个都设时 按交集生效 —— 被限制的模型对这把 Key 表现为「不存在」(拉 /v1/models 也看不到它), 提供它的家不在可用列表里时请求同样被拒。": "(行内の「利用範囲」):空欄 = 制限なし。両方を設定した場合は積集合で適用されます —— 制限されたモデルはこの Key からは「存在しない」ものとして扱われ(/v1/models を取得しても表示されません)、それを提供するプロバイダーが利用可能リストにない場合もリクエストは同様に拒否されます。", "+ 新建 Key": "+ 新規 Key", "; 修改后立即生效,本程序自身会自动使用第一把启用的 Key。每把 Key 可单独限制": "; 変更はすぐに反映され、本アプリ自身は最初に有効な Key を自動的に使用します。各 Key で個別に制限できる項目は、", ";修改后立即生效。模型测试、助手和日活保活必须选择 Key,受限 Key 不能访问管理接口。每把 Key 可单独限制": "。変更はすぐ反映されます。モデルテスト、アシスタント、日次活動維持には Key の選択が必要です。制限付き Key は管理 API にアクセスできません。各 Key で個別に制限できる項目は、", ";当前必须带 Key。": "。有効な Key が必要です。", " AI 账号专用静态住宅 IP:Scamalytics 低欺诈评分,不限流量,首单 75 折(AGENT2API25)": " AI アカウント専用のネイティブ静的住宅用 IP:Scamalytics の不正スコアが低く、通信量無制限、初回購入 25% オフ(AGENT2API25)", " 提供 AI 账号专用的原生静态住宅 IP(Static Residential ISP):IP 来自真实家庭宽带运营商,Scamalytics 低欺诈评分,每个 IP 独享,不限流量,$3.90 起。": " は AI アカウント専用のネイティブ静的住宅用 IP(Static Residential ISP)を提供しています。実在の家庭向けブロードバンド事業者の IP を使い、Scamalytics の不正スコアが低く、IP は 1 つずつ専有、通信量は無制限、$3.90 から。", " 那一类由「同步 Clash Verge」 镜像进来(进入本页时会自动同步一次):名称、端口、启用都跟随 Clash, 在 Clash 里改或删,这里跟着变 —— 所以它们只读,改请到 Clash Verge 里改。": " この種のエントリは「Clash Verge を同期」でまとめてミラー取り込みされます(このページを開くと自動で 1 回同期します):名前・ポート・有効状態はすべて Clash に従い、Clash 側で変更または削除すると、こちらも追随して変わります —— つまり読み取り専用なので、変更は Clash Verge 側で行ってください。", "Clash Verge": "Clash Verge", "SOCKS5 用户名和密码不能超过 255 字节": "SOCKS5 のユーザー名とパスワードは 255 バイト以内で入力してください", "YAML 文件": "YAML ファイル", "{names} 等 {n} 条": "{names} ほか {n} 件", "{n} 个出口": "エンドポイント {n} 件", "{n} 个账号在用": "{n} 件のアカウントが使用中", "{n} 条订阅": "{n} 件のサブスク", "{percent}%({received} / {total} MB)": "{percent}%({received} / {total} MB)", "✅ {ip}": "✅ {ip}", "✅ 「{name}」出口可用{ip}{took}": "✅ 「{name}」のエンドポイントは利用可能{ip}{took}", "✅ 内核下载完成,正在启动…": "✅ カーネルのダウンロードが完了、起動しています…", "✅ 内核已手动导入到 {dir}": "✅ カーネルを {dir} に手動インポートしました", "✅ 已同步 Clash Verge 出口({n} 项变更)": "✅ Clash Verge のエンドポイントを同期しました({n} 件の変更)", "✅ 连接成功": "✅ 接続成功", "✅ 连通性测试设置已保存": "✅ 接続テスト設定を保存しました", "❌ 「{name}」{error}": "❌ 「{name}」{error}", "❌ 连接失败": "❌ 接続失敗", "「测试」与「批量测试」访问的目标;留空用默认(打 WorkBuddy 上游)。判据是能否拿到 HTTP 响应,不用考虑该网址返回什么内容。": "「テスト」「一括テスト」がアクセスする先です。空欄なら既定(WorkBuddy 上流)を使用します。判定基準は HTTP レスポンスが取得できるかどうかで、URL が何を返すかは問いません。", "上传本地文件": "ローカルファイルをアップロード", "上次下载失败:{reason}": "前回のダウンロードは失敗しました:{reason}", "上次下载已停止,未下载完的临时文件已删除": "前回のダウンロードは停止され、未完了の一時ファイルは削除されました", "上次同步": "前回の同期", "上次测试": "前回のテスト", "下载": "ダウンロード", "下载中…": "ダウンロード中…", "下载内核": "カーネルをダウンロード", "下载已经完成,停止没赶上(内核已安装)": "停止が間に合わずダウンロードは完了しました(カーネルはインストール済み)", "下载线路": "ダウンロード経路", "下载线路 / 存放目录没能写进配置(本次下载已按新设置走,重启后会恢复原值)": "経路 / 保存先を設定に書き込めませんでした(今回のダウンロードは新しい設定で実行され、再起動後に元に戻ります)", "不再提供": "提供終了", "不再提醒": "今後表示しない", "为降低维护成本、资源占用及合规风险,Agent2API 已停止提供代理订阅与内置代理内核相关功能。": "保守コスト、リソース使用量、コンプライアンス上のリスクを軽減するため、Agent2API はプロキシのサブスクリプションと内蔵プロキシカーネル関連機能の提供を終了しました。", "之前使用订阅节点?": "サブスクリプションのノードを使用していましたか?", "也可以把二维码截图直接粘贴到弹窗里(Ctrl+V)": "QR コードのスクリーンショットをダイアログに直接貼り付けることもできます(Ctrl+V)", "二维码里没有订阅链接": "QR コードにサブスク URL がありません", "从图片识别二维码": "画像から QR コードを読み取る", "代理主机只能填写域名或 IP 地址,不能包含协议、端口或路径": "ドメイン名または IP アドレスのみ入力してください。プロトコル、ポート、パスは含めないでください", "代理主机地址无效": "プロキシのホストが無効です", "代理修改已保存": "プロキシの変更を保存しました", "代理内核": "プロキシカーネル", "代理内核未安装(下载内核后,被账号或服务线路引用的节点会自动开监听端口)": "プロキシカーネルが未インストールです。ダウンロード後、アカウントまたはサービス経路から参照されるノードにリスニングポートが自動で割り当てられます。", "代理内核未安装(在「订阅管理」里下载内核后,被账号引用的节点会自动开监听端口)": "プロキシカーネルが未インストールです(「サブスク管理」でカーネルをダウンロードすると、アカウントから参照されているノードに自動でリスンポートが割り当てられます)", "代理列表": "プロキシ一覧", "代理列表加载失败:{reason}": "プロキシ一覧の読み込みに失敗しました:{reason}", "代理列表响应异常": "プロキシ一覧の応答が異常です", "代理协议只支持 HTTP 或 SOCKS5": "HTTP または SOCKS5 プロキシのみ対応しています", "代理名称": "プロキシ名", "代理名称不能超过 60 个字符": "プロキシ名は 60 文字以内で入力してください", "代理已添加": "プロキシを追加しました", "代理格式无效,请按示例填写": "プロキシの形式が無効です。入力例に従ってください", "代理池": "プロキシプール", "代理池表": "プロキシプール表", "代理订阅功能已下线": "プロキシのサブスクリプション機能は終了しました", "代理设置": "プロキシ設定", "代理设置响应异常": "プロキシ設定の応答が異常です", "代理账号和密码不能超过 200 个字符": "プロキシのユーザー名とパスワードは 200 文字以内で入力してください", "代理账号或密码的 URL 编码无效": "プロキシのユーザー名またはパスワードの URL エンコードが無効です", "以下行未能识别,已留在输入框中;修正后可再次解析。": "以下の行を解析できなかったため、入力欄に残しています。修正後に再度解析してください。", "使用情况": "使用状況", "例如:我的机场": "例:マイ空港", "例如:香港 HTTP 出口": "例:香港 HTTP エンドポイント", "保存代理": "プロキシを保存", "保存已有的代理地址,供账号与服务线路按需使用。": "既存のプロキシアドレスを保存し、アカウントやサービス経路で必要に応じて使用できます。", "保持原文件": "現在のファイルを維持", "停止下载": "ダウンロードを停止", "停止下载失败:{reason}": "ダウンロードの停止に失敗しました:{reason}", "停止请求已发出,但下载还没收手,稍后再看一次进度": "停止を要求しましたが、ダウンロードはまだ止まっていません。少し後で進捗を確認してください", "先把下载的内核放到网关机器的目录,再填写文件或目录的绝对路径。目录内会查找官方包或 mihomo 二进制;远程面板不能读取浏览器电脑的路径。": "ダウンロードしたカーネルをゲートウェイ上のフォルダーに置き、その絶対パスを入力してください。フォルダー内の公式アーカイブまたは mihomo バイナリを検索します。リモートパネルからブラウザー端末上のパスは読み取れません。", "先经过系统代理,再连接到此代理": "システムプロキシを経由してからこのプロキシに接続します", "全选当前筛选出的出口": "現在の絞り込み結果をすべて選択", "全选所有代理": "すべてのプロキシを全選択", "全选({n} 个)": "全選択({n} 件)", "全部协议": "すべてのプロトコル", "全部提供方": "すべての提供元", "全部订阅": "すべてのサブスク", "关掉这个窗口不会中断下载(它在后台继续跑)—— 要停下就点下面的「停止下载」,未下载完的临时文件会被删除。": "このウィンドウを閉じてもダウンロードは中断されません(バックグラウンドで続行します)。止めるには下の「ダウンロードを停止」を押してください。未完了の一時ファイルは削除されます。", "关闭代理后,引用它的账号回退直连。连通性以最近一次检测结果为准。": "プロキシを無効にすると、参照しているアカウントは直接接続に戻ります。接続状態は直近のテスト結果です。", "关闭内核": "カーネルを停止", "关闭内核失败:{reason}": "カーネルの停止に失敗しました: {reason}", "其中 {n} 条正被账号使用 —— 删除后那些账号会回退直连。": "うち {n} 件はアカウントが使用中です —— 削除するとそれらのアカウントは直接接続にフォールバックします。", "其中 {n} 条正被账号使用 —— 删除后需重新设置相关账号的代理,不会自动直连。": "選択したプロキシのうち {n} 件が使用中です。削除後は関連アカウントのプロキシを再設定してください。直接接続へ自動的には切り替えません。", "其中 {n} 条是同步来的只读条目(Clash / 订阅):可参与批量测试,删除会跳过": "うち {n} 件は同期された読み取り専用エントリ(Clash / サブスク)です:一括テストには含まれますが、削除ではスキップされます", "其中 {n} 条来自 Clash 同步:可参与批量测试,删除会跳过": "うち {n} 件は Clash 同期由来:一括テストには参加できますが、削除時はスキップされます", "内核 {version}": "カーネル {version}", "内核 {version}({asset})": "カーネル {version}({asset})", "内核下载": "カーネルのダウンロード", "内核下载失败:{reason}": "カーネルのダウンロードに失敗:{reason}", "内核二进制 / 配置 / 端口映射都会放在这里,默认 {dir};目录不存在会在下载开始时自动创建。": "カーネルのバイナリ / 設定 / ポート対応表はここに置かれます。既定は {dir}。存在しないフォルダはダウンロード開始時に自動で作成されます。", "内核启动失败:{reason}": "カーネルの起動に失敗:{reason}", "内核导入仍在后台执行,请刷新状态查看结果": "インポートはバックグラウンドで実行中です。状態を更新して結果を確認してください。", "内核导入任务排队中…": "カーネルのインポートは待機中です…", "内核导入失败": "カーネルのインポートに失敗しました", "内核导入状态已变化,请刷新后确认": "インポート状態が変更されました。更新して結果を確認してください。", "内核已停止": "カーネル停止中", "内核已停止,点「启动内核」拉起": "カーネルは停止中です。「カーネルを起動」で立ち上げてください", "内核已关闭(订阅与端口注册表保留,「启动内核」后原位恢复)": "カーネルを停止しました(購読とポート登録は保持され、「カーネルを起動」で元のポートに復元されます)", "内核已导入,但启动失败:{reason}": "カーネルはインポートされましたが、起動に失敗しました:{reason}", "内核已导入,但存放目录未能保存,重启网关后会恢复原位置": "カーネルはインポートされましたが、保存先を記録できませんでした。ゲートウェイ再起動後は元の場所に戻ります。", "内核已手动关闭": "カーネルは手動停止中", "内核已手动关闭(点「启动内核」拉起)": "カーネルは手動停止中です。「カーネルを起動」で立ち上げてください", "内核文件必须非空且不超过 {max} MiB": "カーネルファイルは空ではなく、{max} MiB 以下である必要があります", "内核未安装": "カーネル未インストール", "内核正在启动…": "カーネルを起動しています…", "内核正在执行操作,请稍后重试": "カーネルの操作が進行中です。しばらくしてから再試行してください。", "内核没有在超时内停下来": "タイムアウト内にカーネルが停止しませんでした", "内核目录没能删掉(可能仍被进程占用),稍后重试一次": "カーネルのフォルダーを削除できませんでした(プロセスがまだ使用している可能性があります)。しばらくしてからもう一度お試しください。", "内核运行中": "カーネル稼働中", "出口 IP {ip}": "出口 IP {ip}", "出口可用": "プロキシ利用可能", "出口测试网址": "接続テスト URL", "删除代理": "プロキシを削除", "删除内核": "カーネルを削除", "删除内核失败:{reason}": "カーネルの削除に失敗:{reason}", "删除订阅": "サブスクを削除", "刷新中…": "更新中…", "刷新失败:{reason}": "更新に失敗:{reason}", "功能调整通知": "機能変更のお知らせ", "勾选「{name}」": "「{name}」をチェック", "单个添加": "個別追加", "去获取": "取得する", "另有 {n} 条是同步来的只读条目(Clash / 订阅),将跳过。": "別に {n} 件は同期された読み取り専用エントリ(Clash / サブスク)のためスキップします。", "另有 {n} 条来自 Clash Verge 同步,将跳过(请到 Clash Verge 里删)。": "ほかに {n} 件が Clash Verge 同期由来のためスキップされます(Clash Verge 側で削除してください)。", "只读:在 Clash Verge 里改": "読み取り専用:Clash Verge で変更してください", "只读:在「订阅管理」里改": "読み取り専用:「サブスク管理」で変更してください", "同步 Clash Verge": "Clash Verge を同期", "同步中…": "同期中…", "同步失败:{reason}": "同期に失敗しました:{reason}", "名字与端口在 Clash Verge 里改;启用可在本页关闭": "名前とポートは Clash Verge 側で変更してください。有効/無効はこのページで切り替えられます", "名字与端口跟随订阅与内核;启用可在本页关闭": "名前とポートは購読とカーネルに従います。有効/無効はこのページで切り替えられます", "后台继续": "バックグラウンドで続行", "启动内核": "カーネルを起動", "启用订阅「{name}」": "サブスク「{name}」を有効化", "启用这条代理": "このプロキシを有効化", "启用这条订阅": "このサブスクを有効化", "启用(禁用后,使用此代理的账号请求将失败;仍可测试)": "有効(無効にすると、このプロキシを使うアカウントのリクエストは失敗します。テストは可能です)", "启用(禁用的条目不会被账号使用,被引用时账号回退直连;仍可测试)": "有効化(無効なエントリはアカウントに使用されず、参照されている場合はアカウントが直接接続にフォールバックしますが、テストは可能です)", "启用(禁用的订阅不参与内核同步,它的节点会从代理池移除)": "有効(無効なサブスクはカーネル同期の対象外で、そのノードはプロキシプールから削除されます)", "图片读取失败": "画像の読み込みに失敗", "地址": "アドレス", "地址不完整": "アドレスが不完全", "地址由网关所在设备访问;本机代理需运行在该设备上。": "このアドレスにはゲートウェイ端末から接続します。ローカルプロキシはその端末上で実行してください。", "复制下载链接": "ダウンロードリンクをコピー", "失败 {n} 个({reason})": "失敗 {n} 件({reason})", "存放位置": "保存先", "存放位置 {dir}": "保存先 {dir}", "存放位置要填绝对路径,例如 D:\\proxy-kernel": "保存先は絶対パスで入力してください(例:D:\\proxy-kernel)", "家庭宽带": "家庭向けブロードバンド", "导入内核": "カーネルをインポート", "导入并替换": "インポートして置換", "导入来源": "インポート元", "将替换现有代理内核,运行中的连接会短暂中断。订阅、账号引用与端口映射会保留。是否继续?": "既存のプロキシカーネルを置き換えるため、接続が一時的に中断されます。サブスクリプション、アカウントの参照、ポートマッピングは保持されます。続行しますか?", "展开其余 {n} 个 ▾": "残り {n} 件を表示 ▾", "已下载?手动导入": "ダウンロード済み?手動でインポート", "已保存。重启内核后,新分配的节点端口才会按新范围来。": "保存しました。カーネル再起動後、新しく割り当てられるノードポートが新しい範囲に従います。", "已保存「{name}」": "「{name}」を保存しました", "已停止下载内核(未下载完的临时文件已删除)": "カーネルのダウンロードを停止しました(未完了の一時ファイルは削除済み)", "已删除 {n} 个代理": "プロキシを {n} 件削除しました", "已删除「{name}」": "「{name}」を削除しました", "已删除内核(订阅与账号引用保留,重新下载后会重新分配端口)": "カーネルを削除しました(サブスクとアカウントの参照は保持され、再ダウンロード後にポートが再割り当てされます)", "已删除内核(订阅与账号引用保留;有文件仍被占用,将在下次启动时清理)": "カーネルを削除しました(サブスクリプションとアカウントの参照は保持されます。使用中のファイルがあり、次回起動時にクリーンアップされます)", "已刷新「{name}」,正在同步节点…": "「{name}」を更新しました。ノードを同期しています…", "已启用 {n} 个": "{n} 件有効", "已启用「{name}」": "「{name}」を有効化しました", "已启用「{name}」,正在补建监听端口(内核重建中)": "「{name}」を有効にしました。リスニングポートを再作成しています(カーネル再起動中)", "已在本页禁用(打开开关即恢复)": "このページで無効化しています(スイッチをオンにすると元に戻ります)", "已新增「{name}」": "「{name}」を追加しました", "已新增订阅「{name}」,内核正在同步节点…": "サブスク「{name}」を追加しました。カーネルがノードを同期しています…", "已是最新,没有需要同步的变更": "すでに最新です。同期が必要な変更はありません", "已有手动配置不受此次调整影响。你仍可添加 HTTP / SOCKS5 地址,并使用连通性测试。": "既存の手動設定には影響しません。HTTP / SOCKS5 アドレスの追加と接続テストは引き続き利用できます。", "已有手动配置和 Clash Verge 端点引用不受影响。仍可添加 HTTP / SOCKS5 地址、同步 Clash Verge 端点并测试连通性;Clash Verge 由你自行安装和运行。": "既存の手動設定と Clash Verge エンドポイントへの参照には影響しません。HTTP / SOCKS5 アドレスの追加、Clash Verge の同期、接続テストは引き続き利用できます。Clash Verge は別途インストールして実行してください。", "已有账号引用它,但内核还没把监听端口补建出来 —— 稍等片刻,或重新启用这条节点": "アカウントからは参照されていますが、カーネルがまだリスンポートを作成していません — しばらく待つか、このノードを再度有効にしてください", "已有账号或服务线路引用它,监听端口尚未就绪;请稍等,或检查内核状态": "アカウントまたはサービス経路がこのノードを参照していますが、リスニングポートはまだ準備できていません。しばらく待つか、カーネルの状態を確認してください。", "已禁用「{name}」": "「{name}」を無効化しました", "已禁用「{name}」,监听端口正在关闭(内核重建中)": "「{name}」を無効にしました。リスニングポートを閉じています(カーネル再起動中)", "已禁用(未开监听端口)": "無効(リスニングポートなし)", "已移除的订阅": "削除済みのサブスク", "已识别 {n} 条 · 已勾选 {selected} 条": "解析済み {n} 件 · 選択済み {selected} 件", "已识别 {n} 条代理,跳过 {duplicates} 条重复地址": "{n} 件を解析し、重複する {duplicates} 件をスキップしました", "已识别订阅链接": "サブスク URL を認識しました", "已选择「{name}」,保存后导入": "「{name}」を選択しました。保存時に取り込まれます", "已配置认证": "認証設定済み", "当前客户端不支持手动导入内核,请更新或刷新页面": "このクライアントはカーネルの手動インポートに対応していません。更新またはページの再読み込みを行ってください。", "当前没有正在进行的下载": "進行中のダウンロードはありません", "当前环境不支持代理池(桥接方法缺失)": "現在の環境ではプロキシプールをサポートしていません(ブリッジメソッドがありません)", "当前环境不支持代理测试(桥接方法缺失)": "現在の環境ではプロキシテストをサポートしていません(ブリッジメソッドがありません)", "当前环境不支持代理设置(桥接方法缺失)": "この環境はプロキシ設定に対応していません(ブリッジメソッドがありません)", "当前环境不支持同步(桥接方法缺失)": "現在の環境では同期をサポートしていません(ブリッジメソッドがありません)", "当前环境不支持启停(桥接方法缺失)": "この環境では有効/無効の切り替えに対応していません(ブリッジメソッドが見つかりません)", "当前环境不支持订阅(桥接方法缺失)": "現在の環境ではサブスクを利用できません(ブリッジメソッドが見つかりません)", "当前环境不支持选择文件夹,直接填写绝对路径即可": "この環境ではフォルダ選択を開けません。絶対パスを直接入力してください", "当前线路不可用:{error};重新选一条或切回直连": "現在の経路は使用できません:{error}。別の経路を選ぶか直結に戻してください", "我知道了": "確認しました", "所属订阅已删除,这条节点不会再分配端口 —— 可以删除它": "所属サブスクが削除されたため、このノードにポートが割り当てられることはありません — 削除して構いません", "手动下载官方内核": "公式カーネルを手動ダウンロード", "手动代理与 Clash Verge 同步仍然保留": "手動プロキシと Clash Verge 同期は引き続き利用できます", "手动代理仍然保留": "手動プロキシは引き続き利用できます", "手动填写的地址与端口": "手動入力のアドレスとポート", "手动导入内核": "カーネルを手動インポート", "打开文件夹选择框失败:{reason}": "フォルダ選択を開けませんでした:{reason}", "批量删除": "一括削除", "批量删除代理": "プロキシを一括削除", "批量测试": "一括テスト", "批量测试完成:{ok} 个可用、{failed} 个失败(共 {total} 个)": "一括テスト完了:{ok} 件利用可能、{failed} 件失敗(全 {total} 件)", "批量测试完成:{ok} 个可用(共 {total} 个)": "一括テスト完了:{ok} 件利用可能(全 {total} 件)", "批量测试({n})": "一括テスト({n})", "批量添加": "一括追加", "批量添加响应异常,请刷新代理列表确认后再试": "一括追加の応答が異常です。一覧を更新し、保存状況を確認してから再試行してください", "批量添加完成:新增 {added} 条,重复 {duplicates} 条,失败 {failed} 条": "一括追加完了:追加 {added} 件、重複 {duplicates} 件、失敗 {failed} 件", "批量添加({n})": "一括追加({n})", "按协议筛选": "プロトコルで絞り込み", "按提供方筛选": "提供元で絞り込む", "按来源筛选": "来源で絞り込み", "按需下载(约 20-40MB)": "オンデマンドでダウンロード(約 20-40MB)", "控制端口 {port} · {n} 个节点监听器": "制御ポート {port} · ノードリスナー {n} 個", "搜索代理": "プロキシを検索", "搜索名称 / 地址 / 端口": "名前 / アドレス / ポートを検索", "搜索节点": "ノードを検索", "支持官方压缩包和解压后的内核二进制;只接受当前版本,SHA-256 校验不通过时不会替换现有内核。": "公式アーカイブと展開済みのバイナリに対応しています。現在のバージョンのみ受け付け、SHA-256 検証に失敗した場合は既存のカーネルを変更しません。", "支持手动地址与 Clash Verge 端点同步,不接管代理服务的安装与运行。": "手動入力のアドレスと Clash Verge のエンドポイント同期に対応しています。プロキシサービスのインストールや実行は管理しません。", "文件或目录路径": "ファイルまたはフォルダーのパス", "文件读取失败": "ファイルの読み取りに失敗しました", "新增代理": "プロキシを追加", "新增方式": "追加方法", "新增订阅": "サブスクを追加", "新解析的代理默认使用非直连": "新しく解析するプロキシはシステムプロキシ経由にする", "显示 {n} / 共 {total} 个出口": "{n} / 全 {total} 件の出口を表示", "暂未使用": "未使用", "更新中…": "更新中…", "更新出网线路已保存,正在准备监听端口": "更新経路を保存しました。リスニングポートを準備しています。", "替换代理内核": "プロキシカーネルを置換", "最近检测": "直近のテスト", "有 {n} 个账号正在使用它({names})—— 删除后这些账号会回退直连。": "{n} 件のアカウントがこれを使用中です({names})—— 削除するとこれらのアカウントは直接接続にフォールバックします。", "有 {n} 个账号正在使用它({names})—— 删除后需重新设置这些账号的代理,不会自动直连。": "{n} 件のアカウントが使用中です({names})。削除後はプロキシの再設定が必要です。直接接続へ自動的には切り替えません。", "有 {n} 个账号正在使用它,删除后这些账号会回退直连。": "{n} 件のアカウントが使用中です。削除すると、それらのアカウントは直接接続に戻ります。", "有 {n} 个账号正在使用它,删除后需重新设置这些账号的代理,不会自动直连。": "{n} 件のアカウントが使用中です。削除後はプロキシの再設定が必要です。直接接続へ自動的には切り替えません。", "未检测": "未テスト", "未检测到 Clash Verge:{reason}": "Clash Verge が検出されません:{reason}", "未测试": "未テスト", "未选择文件": "ファイルが未選択です", "本地 YAML 文件": "ローカル YAML ファイル", "本地文件": "ローカルファイル", "本地文件不会自动更新:要更新节点,重新选择文件后保存;不重选则内容保持不变。": "ローカルファイルは自動更新されません:ノードを更新するにはファイルを選び直して保存してください。選び直さない場合は内容が変わらず維持されます。", "本地文件订阅无需更新(要换内容请编辑后重新选择文件)": "ローカルファイルのサブスクは更新不要です(内容を変えるには編集でファイルを選び直してください)", "本地文件订阅的内容在导入时固定:节点会由内核起成本地监听器并镜像进代理池,节点数稍等几秒由轮询刷新。": "ローカルファイルのサブスクの内容は取り込み時に固定されます:ノードはカーネルがローカルリスナーとして起動し、プロキシプールへミラーされます。ノード数は数秒後にポーリングで更新されます。", "本页可编辑、可删除": "このページで編集・削除できます", "来自 Clash Verge 同步(名称、端口跟随 Clash),请到 Clash Verge 中修改;启用可在本页关闭": "Clash Verge からの同期(名前とポートは Clash に従います)。変更は Clash Verge で行ってください。有効/無効はこのページで切り替えられます", "正在下载内核": "カーネルをダウンロード中", "正在停止…": "停止中…", "正在安装内核…": "カーネルをインストール中…", "正在导入…": "インポート中…", "正在开始…": "開始中…", "正在校验内核…": "カーネルを検証中…", "正在读取并上传文件…": "ファイルを読み込み、アップロード中…", "正在连接 GitHub…": "GitHub に接続中…", "此代理用于{services};删除后这些线路将不可用,不会自动回退直连。": "このプロキシは{services}に使用されています。削除するとこれらの経路が使えなくなり、直接接続には自動でフォールバックしません。", "此代理用于软件 / 插件更新;删除后这些线路将不可用,不会自动回退直连。": "このプロキシはソフトウェア / プラグイン更新に使用されています。削除すると、それらの経路は利用できなくなり、直接接続には自動で戻りません。", "每次最多添加 {n} 条代理": "一度に追加できるプロキシは {n} 件までです", "每行一条,解析后可修改名称、设置非直连并测试,最后保存勾选的代理。": "1 行に 1 件入力してください。解析後に名前やシステムプロキシ経由の設定を変更してテストし、選択したプロキシを保存できます。", "没有匹配「{kw}」的出口": "「{kw}」に一致する出口はありません", "没有匹配当前筛选的出口": "現在の絞り込みに一致する出口はありません", "没有可全选的代理": "選択できるプロキシがありません", "没有可删除的条目": "削除できるエントリがありません", "没能同步:{reason}": "同期できませんでした:{reason}", "测试中 {done}/{total}": "テスト中 {done}/{total}", "测试失败:{reason}": "テストに失敗しました:{reason}", "测试目标网址": "テスト先 URL", "测试结果没能记下:{reason}": "テスト結果を記録できませんでした:{reason}", "测试网址要以 http:// 或 https:// 开头": "テスト URL は http:// または https:// で始まる必要があります", "测试设置": "テスト設定", "添加一个 HTTP 或 SOCKS5 地址,之后可以在账号或服务线路中选择使用。": "HTTP または SOCKS5 アドレスを追加すると、アカウントやサービス経路で選択できます。", "添加单个": "1 件追加", "添加手动 HTTP / SOCKS5 地址,或同步 Clash Verge 的端点,供账号与服务线路使用。": "HTTP / SOCKS5 アドレスを手動で追加するか、Clash Verge のエンドポイントを同期して、アカウントやサービス経路で使用できます。", "添加第一个代理": "最初のプロキシを追加", "清空已识别": "解析済み一覧をクリア", "清空筛选": "絞り込みを解除", "确定删除「{name}」?{used}": "「{name}」を削除しますか?{used}", "确定删除「{name}」?它在代理池里的节点会一并移除,引用这些节点的账号会回退直连。": "「{name}」を削除しますか?プロキシプール内の該当ノードも削除され、それらを参照しているアカウントは直接接続にフォールバックします。", "确定删除「{name}」?": "「{name}」を削除しますか?", "确定删除已下载的内核{version}?内核文件与端口映射会被移除,订阅节点会失去监听端口(地址列显示「端口准备中」),引用它们的账号会暂时回退直连;订阅本身保留,重新下载内核后会重新分配端口。": "ダウンロード済みのカーネル{version}を削除しますか?カーネルのファイルとポートマッピングが削除され、サブスクのノードはリスンポートを失います(アドレス列は「ポート準備中」と表示されます)。それらを参照しているアカウントは一時的に直接接続にフォールバックします。サブスク自体は保持され、カーネルを再ダウンロードするとポートが再割り当てされます。", "确定删除选中的 {n} 个代理?": "選択した {n} 件のプロキシを削除しますか?", "禁用后本端不再用它(引用它的账号回退直连),并会关掉它的本地监听端口": "無効にするとこの端末では使用しなくなり(参照しているアカウントは直接接続に戻ります)、ローカルのリスニングポートも閉じます", "禁用后本端不再用它(引用它的账号回退直连);端口在 Clash Verge 侧,不受影响": "無効にするとこの端末では使用しなくなり(参照しているアカウントは直接接続に戻ります)。ポートは Clash Verge 側のままで、影響はありません", "立即更新": "今すぐ更新", "端口范围必须是 1-65535 的整数": "ポート範囲は 1〜65535 の整数である必要があります", "第 {line} 行:{error}": "{line} 行目:{error}", "类型": "タイプ", "粘贴代理列表后点击「解析」": "プロキシ一覧を貼り付けて「解析」を押してください", "编辑代理": "プロキシを編集", "编辑订阅": "サブスクを編集", "网关已切换,请重新打开代理弹窗": "ゲートウェイが切り替わりました。プロキシのダイアログを開き直してください", "网关未返回内核导入任务,请刷新状态后确认": "ゲートウェイからインポートタスクが返されませんでした。状態を更新して結果を確認してください。", "网关机器上的文件或目录": "ゲートウェイ上のファイルまたはフォルダー", "节点": "ノード", "节点由内核起成本地监听器,镜像进代理池": "ノードはカーネルがローカルリスナーとして起動し、プロキシプールにミラーされます", "节点端口范围 {base}–{end}": "ノードポート範囲 {base}–{end}", "节点端口范围(结束)": "ノードポート範囲(終了)", "节点端口范围(起始)": "ノードポート範囲(開始)", "解析": "解析", "订阅": "サブスク", "订阅与 Clash 的出口自动镜像进来": "サブスクと Clash の出口は自動的にミラーされます", "订阅内容由内核定时刷新(每 24 小时);节点数与同步状态在保存后由轮询刷新,稍等几秒。": "サブスクの内容はカーネルが定期的(24 時間ごと)に更新します。保存後はポーリングでノード数と同期状態が更新されるまで数秒お待ちください。", "订阅导入与更新、订阅节点管理,以及代理内核的下载、安装和运行。": "サブスクリプションのインポート・更新、ノード管理、およびプロキシカーネルのダウンロード・インストール・実行。", "订阅来源": "サブスクのソース", "订阅管理": "サブスク管理", "订阅管理({n})": "サブスク管理({n})", "订阅节点会在本机各占一个监听端口,从该范围里挑空闲的分配;节点多的大订阅把默认范围({base}-{end})用尽时会报「没有可用的节点端口」,这时把范围调大再重启内核。已分配出去的端口不会因改范围而失效。": "サブスクリプションのノードはローカルのリスナーポートを 1 つずつ占有し、この範囲の空きポートから割り当てられます。ノード数の多い大きなサブスクリプションで既定の範囲({base}-{end})を使い切ると「利用可能なノードポートがありません」と表示されます。その場合は範囲を広げてカーネルを再起動してください。割り当て済みのポートは範囲を変更しても無効になりません。", "订阅里的节点会自动同步进代理池,账号即可引用。": "サブスクのノードは自動的にプロキシプールへ同期され、アカウントから参照できます。", "订阅里的节点会被内核起成本地监听器,镜像到代理池(账号按 id 引用,与本页其它出口同一用法)。内核只在用到订阅时按需下载(约 20-40MB),不随安装包分发。": "サブスクのノードはカーネルがローカルリスナーとして起動し、プロキシプールにミラーされます(アカウントは id で参照、このページの他の出口と同じ扱いです)。カーネルはサブスク利用時にのみオンデマンドでダウンロードされ(約 20-40MB)、インストーラーには同梱されません。", "订阅链接": "サブスク URL", "识别中…": "読み取り中…", "该节点所属订阅已删除,不会再被同步更新,可手动删除清理": "このノードが属するサブスクは削除済みで、今後同期されません。手動で削除できます", "该节点来自订阅(名称、端口跟随订阅与内核),请在「订阅管理」里修改;启用可在本页关闭": "このノードは購読由来です(名前とポートは購読とカーネルに従います)。変更は「購読の管理」で行ってください。有効/無効はこのページで切り替えられます", "请下载与网关平台一致的官方内核,不是浏览器所在设备的平台。": "ブラウザー端末ではなく、ゲートウェイのプラットフォームに合った公式カーネルをダウンロードしてください。", "请填写代理名称": "プロキシ名を入力してください", "请填写已有代理服务的 HTTP / SOCKS5 地址,或自行运行 Clash Verge 后同步端点,并重新为相关账号和服务线路选择代理。": "既存のプロキシサービスの HTTP / SOCKS5 アドレスを入力するか、Clash Verge を別途実行してエンドポイントを同期し、関連するアカウントとサービス経路のプロキシを選び直してください。", "请填写网关机器上的绝对文件或目录路径": "ゲートウェイ上のファイルまたはフォルダーの絶対パスを入力してください", "请改为填写已有代理服务的 HTTP / SOCKS5 地址,并重新为相关账号和服务线路选择代理。": "既存のプロキシサービスの HTTP / SOCKS5 アドレスを入力し、関連するアカウントとサービス経路のプロキシを選び直してください。", "请选择要导入的 YAML 文件": "取り込む YAML ファイルを選択してください", "请选择要导入的内核文件": "インポートするカーネルファイルを選択してください", "读取失败:{reason}": "読み込みに失敗しました:{reason}", "起始端口不能大于结束端口": "開始ポートは終了ポートより大きくできません", "跳过 {n} 个(Clash 同步)": "{n} 件をスキップ(Clash 同期)", "跳过 {n} 个(同步只读条目)": "{n} 件をスキップ(同期された読み取り専用エントリ)", "软件 / 插件更新": "ソフトウェア / プラグイン更新", "还没有代理。点右上角「+ 新增代理」手填一个,或在「订阅管理」里导入订阅节点、同步 Clash Verge 的出口。": "まだプロキシがありません。右上の「+ プロキシを追加」で手入力するか、「サブスク管理」でサブスクのノードを取り込む / Clash Verge の出口を同期してください。", "还没有代理。点右上角「+ 新增代理」手填一个,或点「同步 Clash Verge」把 Clash 的出口导进来。": "プロキシがまだありません。右上の「+ プロキシを追加」から手動で追加するか、「Clash Verge を同期」をクリックして Clash のエンドポイントを取り込んでください。", "还没有订阅:粘贴订阅链接、导入本地 YAML 文件,或从图片识别二维码。": "まだサブスクがありません:サブスク URL を貼り付けるか、ローカル YAML ファイルを取り込むか、画像から QR コードを読み取ってください。", "还没有账号使用它(端口只在被账号引用时才分配 —— 在账号里选它并保存后,内核会自动开端口)": "まだどのアカウントも使用していません(ポートはアカウントから参照されたときだけ割り当てられます — アカウントでこのノードを選んで保存すると、カーネルが自動でポートを開きます)", "还没有账号或服务线路使用它;在账号或更新设置中选中并保存后,内核会自动开端口": "まだアカウントやサービス経路で使われていません。アカウント設定または更新設定で選択して保存すると、カーネルが自動でポートを開きます。", "这是网关机器上的安装目录,留空使用默认位置。导入会复制文件并建立版本目录,不删除原下载文件。": "ゲートウェイ上のインストール先です。空欄なら既定の場所を使用します。ファイルをバージョン別フォルダーへコピーし、元のダウンロードファイルは削除しません。", "这条在 Clash Verge 里是停用的,本页启用不生效 —— 到 Clash Verge 里打开它": "この項目は Clash Verge 側で無効になっています。このページで有効にしても反映されません —— Clash Verge でオンにしてください", "这里只连接你提供的代理地址,不接管代理服务的安装与运行。": "指定されたプロキシアドレスへの接続のみ行い、プロキシサービスのインストールや実行は管理しません。", "连接成功": "接続成功", "连通性": "接続性", "连通性测试设置": "接続テスト設定", "选中的 {n} 条都是同步来的只读条目(Clash / 订阅),不能删除": "選択した {n} 件はすべて同期された読み取り専用エントリ(Clash / サブスク)で、削除できません", "选中的 {n} 条都来自 Clash Verge 同步,不能删除(请到 Clash Verge 里删)": "選択した {n} 件はすべて Clash Verge 同期由来のため削除できません(Clash Verge 側で削除してください)", "选中的代理用于{services};删除后这些线路将不可用,不会自动回退直连。": "選択したプロキシは{services}に使用されています。削除するとこれらの経路が使えなくなり、直接接続には自動でフォールバックしません。", "选择 YAML 文件…": "YAML ファイルを選択…", "选择内核文件…": "カーネルファイルを選択…", "选择目录…": "フォルダを選択…", "选项来自「网络代理」页(Clash Verge 同步的出口在这里可用;订阅节点要等内核起来才有端口)。选「直连」时连不上会自动借 Clash 混合端口重试一次;选定某条线路后只走它。": "選択肢は「ネットワークプロキシ」ページの内容です(Clash Verge から同期した出口はここで使えます。サブスクのノードはカーネル起動後にポートが付きます)。「直結」は接続に失敗すると Clash の混合ポートで一度だけ再試行し、経路を明示的に選ぶとそれのみを使用します。", "通过代理访问该网址,检查是否能收到 HTTP 响应。留空沿用网关默认值。": "プロキシ経由でこの URL にアクセスし、HTTP 応答を確認します。空欄の場合はゲートウェイの既定値を使用します。", "部分测试结果没能记下:{reason}": "一部のテスト結果を記録できませんでした:{reason}", "重启内核": "カーネルを再起動", "重新选择文件…": "ファイルを選び直す…", "需要干净的出口?": "きれいな出口が必要ですか?", "需要用户名和密码(可选)": "ユーザー名とパスワードが必要(任意)", "非直连": "システムプロキシ経由", "非直连代理": "システムプロキシを経由する", "非直连会先经过网关所在设备的系统代理,再连接到此代理;系统代理不可用时不会改走直连。": "ゲートウェイ端末のシステムプロキシを経由してから、このプロキシに接続します。システムプロキシが利用できない場合、直接接続には切り替えません。", "首次购买使用优惠码 AGENT2API25 享 75 折。": "初回購入はコード AGENT2API25 で 25% オフ。", "+ 新增代理": "+ プロキシを追加", "+ 新增订阅": "+ サブスクを追加", ",": "、", " 或 ": " または ", "Anthropic SDK 会自动携带版本头;手写 Messages 请求可使用 2023-06-01。/v1/models 收到该头或 x-api-key 时返回 Anthropic 列表形态。": "Anthropic SDK はバージョンヘッダーを自動付与します。手動の Messages リクエストは 2023-06-01 を指定できます。/v1/models はこのヘッダーまたは x-api-key があると Anthropic 形式の一覧を返します。", "Anthropic 业务错误结构示例": "Anthropic 業務エラー構造の例", "Anthropic 官方 SDK / Claude Code 使用的根地址:": "公式 Anthropic SDK / Claude Code 用のルートアドレス:", "Anthropic 标准要求显式填写正整数。网关对缺失或无效值补 8192,但上游模型的实际预算仍可能更低。": "Anthropic 標準では正整数の明示が必要です。ゲートウェイは省略・無効値を 8192 に補完しますが、上流モデルの予算はそれより低い場合があります。", "Antigravity 支持宽高比 1:1、2:3、3:2、3:4、4:3、4:5、5:4、9:16、16:9、21:9,尺寸会映射到原生 1K / 2K / 4K 档。请求最长边 ≤1792 为 1K,1793–3072 为 2K,3073–4096 为 4K;超过 4096 会被该提供商拒绝。": "Antigravity の比率は 1:1、2:3、3:2、3:4、4:3、4:5、5:4、9:16、16:9、21:9。サイズは原生 1K / 2K / 4K へ変換します。最長辺 ≤1792 は 1K、1793–3072 は 2K、3073–4096 は 4K、4096 超はこのプロバイダーが拒否します。", "Antigravity 的 size=auto 生成使用 1:1、1K;参考图编辑使用 1K 且不强制正方形。模型版本可能有更严格的输出限制;宽高比需接近支持值,不能任意指定像素尺寸。": "Antigravity の size=auto は生成時に 1:1・1K、参照編集時に正方形を強制せず 1K です。モデル版による追加制限があり、比率は対応値に近い必要があり、任意の画素数指定はできません。", "Base URL 填进客户端的「API 地址 / Base URL」栏;对话协议按客户端支持的类型三选一(Chat Completions / Responses / Anthropic Messages),三者共用同一套模型与账号池,可随时切换;鉴权用「网关 Key」页里任一启用 Key。": "Base URL はクライアントの「API アドレス / Base URL」欄に記入します。対話プロトコルはクライアントが対応している種類を三つ(Chat Completions / Responses / Anthropic Messages)の中から一つ選んでください。三者は同じモデルとアカウントプールを共有し、いつでも切り替えられます。認証には「ゲートウェイキー」ページで有効な Key をいずれか一つ使用します。", "Chat 流式成功通常以 data: [DONE] 收尾。需要同时处理 delta.content、思考字段和 delta.tool_calls;工具参数可能跨多个增量拼接。": "Chat の正常なストリームは通常 data: [DONE] で終了します。delta.content、推論フィールド、delta.tool_calls を処理し、複数デルタに分割されたツール引数を連結してください。", "Chat、Responses 和图片接口通常返回 error 对象,其中 message 是可读说明,type 是错误类别,code 与 upstream_code 按情况附带。Anthropic 业务错误使用 type=error 的信封;鉴权中间件、无效 JSON 或网关层错误也可能返回通用 error 形态。": "Chat、Responses、画像 API は通常 error オブジェクトを返します。message は説明、type は分類、code と upstream_code は任意です。Anthropic 業務エラーは type=error の形式ですが、認証、無効 JSON、ゲートウェイ層のエラーは汎用 error 形式の場合もあります。", "Claude Code / Anthropic SDK(token 计数:/v1/messages/count_tokens)": "Claude Code / Anthropic SDK(token カウント:/v1/messages/count_tokens)", "Claude Code / Anthropic SDK;模型与账号池和 OpenAI 入口共用。": "Claude Code / Anthropic SDK。OpenAI エンドポイントとモデル・アカウントプールを共有します。", "Codex / 新版 OpenAI SDK;无状态转发,历史由客户端携带。": "Codex / 新しい OpenAI SDK。ステートレス転送のため履歴はクライアントが送信します。", "GET /health 返回 status=ok 或 degraded。公网安全模式只返回简化探活信息;HTTP 200 或 status=ok 不代表所有提供商在线、账号有额度或图片模型可调用。": "GET /health は status=ok または degraded を返します。公開ネットワークの安全モードでは簡略な生存確認のみです。HTTP 200 や status=ok は、全プロバイダーの接続、残りクォータ、画像モデルの呼び出しを保証しません。", "GET /health、GET /v1/models 和网关临时图片下载不强制检查 Key。模型清单可在配 Key 前读取,但这不能证明 Key 正确;应以携带该 Key 的实际业务请求为准。": "GET /health、GET /v1/models、ゲートウェイの一時画像ダウンロードはキー必須ではありません。キー設定前にモデル一覧を読めても、そのキーが正しいことの証明にはなりません。実際の保護対象リクエストで確認してください。", "HTTP(S) 参考图由网关服务器下载,不携带网关 Key 或提供商凭证。外链必须能被网关无额外请求头访问;本机、内网、带用户名密码或不安全重定向地址会被拒绝。受保护图片建议直接上传文件。": "HTTP(S) 参照はゲートウェイがキー・プロバイダー認証情報なしで取得します。追加ヘッダーなしで取得可能な外部 URL が必要です。ローカル、内部ネットワーク、ユーザー名・パスワード付き、危険なリダイレクトは拒否します。保護画像は直接アップロードしてください。", "JSON 图片引用编辑请求": "JSON 画像参照の編集リクエスト", "JSON 图片生成请求": "JSON 画像生成リクエスト", "JSON 的 images 是对象数组,每项只能包含 image_url。接受完整 HTTP(S) URL、data:image/...;base64,...,或先前响应返回的完整网关临时图片链接;不接受裸 base64、相对路径、file_id 或本地文件路径。": "JSON の images は image_url のみを持つオブジェクト配列です。完全な HTTP(S) URL、data:image/...;base64,...、以前返された完全な一時画像 URL を受理します。裸の base64、相対パス、file_id、ローカルパスは非対応です。", "JSON 请求使用 application/json。图片编辑上传文件时使用 multipart/form-data;curl -F 会自动生成 boundary,不要手动覆盖此请求头。": "JSON は application/json、画像編集のファイル送信は multipart/form-data を使用します。curl -F は boundary を自動生成するので、このヘッダーを手動で上書きしないでください。", "Key 缺失、无效、停用,或上游认证失败。网关未收到 Key 时返回 model_api_key_required,无效 Key 返回 invalid_api_key;请检查请求头与「网关 Key」页。": "Key の不足・無効・無効化、または上流認証エラーです。Key 未指定は model_api_key_required、無効な Key は invalid_api_key を返します。リクエストヘッダーと「ゲートウェイキー」ページを確認してください。", "Key 缺失、无效、停用,或上游认证失败。网关鉴权失败通常为 invalid_api_key;检查请求头与「网关 Key」页,而不是仅重拉模型列表。": "キーの不足・無効・無効化、または上流認証エラーです。ゲートウェイ認証失敗は通常 invalid_api_key。モデル一覧の再取得だけでなく、ヘッダーと「ゲートウェイキー」ページを確認してください。", "LLM 请求": "LLM リクエスト", "Messages 响应结构": "Messages のレスポンス構造", "Messages 请求": "Messages リクエスト", "ModelScope 不支持 style、mask 与 input_fidelity;quality 仅接受省略、auto 或 standard,background 仅接受省略、auto 或 opaque,moderation 仅接受省略或 auto。风格与修改目标请写入 prompt。": "ModelScope は style、mask、input_fidelity に非対応です。quality は省略・auto・standard、background は省略・auto・opaque、moderation は省略・auto のみです。スタイルや変更目標は prompt に記述してください。", "ModelScope 使用官方异步任务接口,创建后只查询同一任务,不会为了等待结果重新提交。单次 n=1;size 可省略、设为 auto,或指定边长 64–2048 的 WIDTHxHEIGHT,具体型号可能进一步限制。": "ModelScope は公式の非同期タスク API を使用し、作成後は同じタスクを照会して再送信しません。n=1、size は省略・auto・辺長 64–2048 の WIDTHxHEIGHT が指定できます。モデルによる追加制限があります。", "OpenAI Python SDK 图片示例": "OpenAI Python SDK の画像例", "OpenAI SDK 的 base_url 填「接口地址」章节中以 /v1 结尾的 Base URL,不要填完整的 /chat/completions。Anthropic 官方 SDK 与 Claude Code 的 ANTHROPIC_BASE_URL 填网关根地址,不带 /v1;它们会自行追加 /v1/messages。其他客户端是否自动追加 /v1,以其地址栏说明为准。": "OpenAI SDK の base_url には「エンドポイントアドレス」の章にある /v1 で終わる Base URL を設定し、完全な /chat/completions URL は指定しません。公式 Anthropic SDK と Claude Code の ANTHROPIC_BASE_URL には /v1 を含まないゲートウェイのルートを指定します。SDK が /v1/messages を追加します。他のクライアントはアドレス欄の説明に従ってください。", "OpenAI SDK 的 base_url 填上方以 /v1 结尾的 Base URL,不要填完整的 /chat/completions。Anthropic 官方 SDK 与 Claude Code 的 ANTHROPIC_BASE_URL 填网关根地址,不带 /v1;它们会自行追加 /v1/messages。其他客户端是否自动追加 /v1,以其地址栏说明为准。": "OpenAI SDK の base_url には上記の /v1 で終わる Base URL を設定し、完全な /chat/completions URL は指定しません。公式 Anthropic SDK と Claude Code の ANTHROPIC_BASE_URL には /v1 を含まないゲートウェイのルートを指定します。SDK が /v1/messages を追加します。他のクライアントはアドレス欄の説明に従ってください。", "OpenAI 兼容客户端使用此地址;Anthropic 官方 SDK 使用下方说明中的网关根地址。": "OpenAI 互換クライアントにはこのアドレスを使用します。公式 Anthropic SDK には下記のゲートウェイルートアドレスを使用します。", "OpenAI 新协议(Codex、新版 SDK)": "OpenAI の新しいプロトコル(Codex、新版 SDK)", "Python:生成、编辑并保存图片": "Python:画像を生成・編集・保存", "Responses 使用 function_call / function_call_output 配对,Anthropic 使用 tool_use / tool_result 配对。协议转换会处理这些格式,但不会替客户端执行自定义函数。上游原生搜索等服务端工具是否可用取决于提供商,不能当成网关统一能力。": "Responses は function_call / function_call_output、Anthropic は tool_use / tool_result を対応付けます。形式は変換されますが、独自関数をゲートウェイが代わりに実行することはありません。上流の検索などのネイティブツールはプロバイダー依存で、統一機能ではありません。", "Responses 响应结构": "Responses のレスポンス構造", "Responses 请求": "Responses リクエスト", "SDK 示例使用的环境变量": "SDK 例で使用する環境変数", "Token 估算响应": "トークン推定レスポンス", "Token 数量估算": "トークン数の推定", "Token 自动续期": "トークン自動更新", "WorkBuddy 走官方图片接口:size 省略或设为 auto 时按 1024x1024 请求;该通道不接受 quality、style、background 与 moderation,请把风格与质量要求写进 prompt。参考图以 data URL 内联在 JSON 请求里发送(不是 multipart),模型 id 由上游目录下发,换版本时以 /v1/models 为准。": "WorkBuddy は公式の画像 API を使用します。size を省略または auto にした場合は 1024x1024 で要求します。この経路は quality、style、background、moderation を受け付けないため、スタイルと品質の指定は prompt に書いてください。参照画像は data URL として JSON リクエストにインラインで送信され(multipart ではありません)、モデル id は上流のカタログから配信されます。バージョンが変わったら /v1/models を確認してください。", "base64 图片响应结构": "base64 画像レスポンス構造", "chat 用于三种对话入口;image 用于 /v1/images/generations 和 /v1/images/edits。不要把图片模型提交给对话入口。": "chat は 3 種類の対話 API、image は /v1/images/generations と /v1/images/edits 用です。画像モデルを対話 API に送信しないでください。", "count_tokens 在本地估算,不调用上游 tokenizer;返回 input_tokens 和 estimated=true。数值用于上下文预算,不用于精确计费,尤其不应当作图片的真实 Token 用量。": "count_tokens は上流 tokenizer を呼ばずにローカル推定し、input_tokens と estimated=true を返します。コンテキスト予算用で、正確な課金計算、特に画像の実トークン数には使用しないでください。", "curl -F 自动生成 multipart boundary。不要额外设置 Content-Type: application/json 或手写无 boundary 的 multipart/form-data;prompt 使用 --form-string 可避免特殊字符被当作文件上传。": "curl -F が boundary を自動生成します。Content-Type: application/json や boundary なしの multipart/form-data を追加しないでください。prompt は --form-string を使うと特殊文字をファイル指定と誤認しません。", "response_format=b64_json 时返回不带 data URL 前缀的标准 base64。解码为二进制后保存;网页展示时自行加对应 MIME 类型前缀。": "response_format=b64_json は data URL 接頭辞なしの標準 base64 を返します。バイナリーにデコードして保存し、Web 表示時は対応 MIME 接頭辞を付けてください。", "response_format=url 不保证永久地址;网关临时链接与 AI 助手会话中的图片存储是两套机制,不能混用接口或有效期。": "response_format=url は永久アドレスを保証しません。一時ゲートウェイ URL とアシスタント会話画像の保存は別機構で、API や有効期間を混用できません。", "response_format=url 时返回。可能是提供商签名链接,也可能是网关临时下载链接;应直接使用返回值,不要自行拼下载 id。": "response_format=url 時に返します。プロバイダー署名 URL または一時ゲートウェイ URL です。返された値を使用し、ダウンロード id を自作しないでください。", "stream 默认 false;true 返回 Anthropic 事件流。stop_sequences 映射为停止序列,是否支持取决于上游。": "stream の既定は false、true は Anthropic イベントを返します。stop_sequences は停止シーケンスへマッピングされ、対応は上流次第です。", "usage 的 prompt_tokens、completion_tokens、total_tokens 表示用量,不等于统一货币价格。上游未提供时可能缺失或为 0。": "usage の prompt_tokens、completion_tokens、total_tokens は用量で、共通の通貨価格ではありません。上流が提供しない場合は省略または 0 になることがあります。", "✓ 支持 · ✗ 不支持 · — 无此概念 · ? 未声明": "✓ 対応 · ✗ 非対応 · — 対象外 · ? 未申告", "。一把启用的 Key 都没有时不鉴权(默认网关只监听 127.0.0.1;在设置页开启「局域网访问」后监听所有网卡,鉴权与安全闸门随之启用)。": "。有効な Key が一つもない場合は認証を行いません(既定ではゲートウェイは 127.0.0.1 のみをリッスンします。設定ページで「LAN アクセス」を有効にするとすべてのネットワークインターフェースをリッスンし、認証とセキュリティゲートも有効になります)。", "三种对话协议的流式错误需要检查事件内容与正常结束标记;HTTP 200 本身不足以证明成功。图片接口仅返回非流式 JSON。": "3 種類の対話ストリームではイベントと正常終了の標識を確認してください。HTTP 200 だけでは成功を証明できません。画像 API は非ストリーミング JSON のみです。", "上一章": "前の章", "上传一张或多张参考图,并用提示词描述保留内容与修改目标。": "1 枚以上の参照画像をアップロードし、保持する内容と変更目標を指示します。", "上传一张本地参考图": "ローカル参照画像を 1 枚アップロード", "上传多张参考图": "複数の参照画像をアップロード", "上传本地文件推荐 multipart/form-data;已经有图片 URL 或 base64 时可发送 application/json。除参考图字段外,参数与图片生成相同。": "ローカルファイルは multipart/form-data、画像 URL や base64 がある場合は application/json を使用できます。参照フィールド以外は画像生成と同じです。", "下一章": "次の章", "下表是网关接受的参数范围,不是所有提供商都支持的范围。生成与编辑共用这些字段,具体上游可能进一步拒绝数量、质量、风格、背景或尺寸。": "表はゲートウェイが受理する範囲で、全プロバイダー共通の対応範囲ではありません。生成と編集はこれらのフィールドを共有しますが、上流は数、品質、スタイル、背景、サイズをさらに制限する場合があります。", "下载并保存网关临时图片": "一時画像をダウンロードして保存", "下载返回原始图片二进制及 image/png、image/jpeg 或 image/webp Content-Type,不是 JSON。不存在或过期返回 404,响应使用 private, no-store 与 nosniff。": "JSON ではなく画像バイナリーと image/png、image/jpeg、image/webp の Content-Type を返します。不存在・期限切れは 404、private, no-store と nosniff を使用します。", "不强制鉴权;仅用于确认网关可访问,不保证模型或额度可用。": "認証は必須ではありません。ゲートウェイへの到達確認用で、モデルやクォータの利用可能性は保証しません。", "不强制鉴权;携带有效 Key 可查看该 Key 获准使用的模型。": "認証は必須ではありません。有効なキーを付けると、そのキーで利用可能なモデルに絞り込まれます。", "不携带 Anthropic 相关头时,模型接口返回 OpenAI 风格的 object=list、data 数组和 meta 摘要;携带 anthropic-version 或 x-api-key 时,返回 data、has_more、first_id、last_id,并保留能力扩展字段。": "Anthropic 関連ヘッダーがない場合、object=list、data 配列、meta を持つ OpenAI 形式です。anthropic-version または x-api-key がある場合は data、has_more、first_id、last_id を返し、機能拡張フィールドも保持します。", "不支持依赖服务端状态的 previous_response_id、conversation、托管提示词 prompt,以及 background=true;请由客户端保存并回传历史,不要调用未实现的 Responses 查询或删除接口。": "サーバー状態が必要な previous_response_id、conversation、管理された prompt、background=true は非対応です。履歴はクライアントで保存して再送信し、未実装の Responses 取得・削除 API を呼ばないでください。", "不要把 base64 图片塞回对话文本或日志,也不要将“请求超时”理解为“没有扣费”。如需连续编辑,保存结果文件后再作为下一次 image 上传。": "画像 base64 を対話本文やログに入れず、タイムアウトを未課金と解釈しないでください。連続編集では結果を保存して次回 image としてアップロードします。", "业务请求的 model 值。owned_by 表示目录条目的归属,不保证每次请求都由该提供商承载;同名模型与映射可能有多个路由。": "業務リクエストの model 値です。owned_by は一覧項目の所属を示し、各リクエストの処理担当を保証しません。同名モデルやマッピングには複数のルートがあり得ます。", "临时图片下载": "一時画像のダウンロード", "也可使用 x-api-key: YOUR_GATEWAY_KEY,常用于 Anthropic 客户端。两种鉴权头任选一种即可,不要填提供商账号令牌或面板登录令牌。": "Anthropic クライアントなどでは x-api-key: YOUR_GATEWAY_KEY も利用できます。認証ヘッダーはいずれか一方で構いません。プロバイダーのアカウントトークンや管理画面のログイントークンを使用しないでください。", "仅可省略或设为 stream=false、partial_images=0。当前不支持图片事件流、渐进图片或流式部分结果。未知参数会被拒绝,不会静默忽略。": "省略または stream=false、partial_images=0 のみです。画像イベント、漸進画像、ストリーム部分結果は非対応です。不明なパラメーターは黙って無視せず拒否します。", "仅在上游返回修改后的提示词时保留,不保证每个模型都有。": "上流が修正済みプロンプトを返した場合のみ保持し、全モデルで存在するとは限りません。", "仅在显式指定 output_format=jpeg 时支持,网关按 JPEG 质量参数编码。PNG、WebP 当前不支持此参数。": "output_format=jpeg を明示した場合のみ対応し、JPEG 品質設定でエンコードします。PNG と WebP はこのパラメーターに非対応です。", "仅用于响应返回的网关临时链接;{id} 必须替换为实际下载令牌。": "レスポンス内のゲートウェイ一時 URL 専用。{id} を実際のダウンロードトークンに置き換えてください。", "仍从当前网关目录选择对话模型,不要求模型名称一定以 claude 开头。具体能力以实际承载模型为准。": "現在のゲートウェイ一覧から対話モデルを選びます。モデル名が claude で始まる必要はなく、実際の処理モデルの能力に依存します。", "估算输入 Token 数量": "入力トークン数を推定", "使用 supports_image_editing=true 的图片模型。该接口是参考图编辑、重绘或合成,不是精确遮罩修补;当前不支持 mask 与 input_fidelity,也不支持 file_id。": "supports_image_editing=true の画像モデルを使用します。参照画像の編集、描き直し、合成用で、精密なマスク修復ではありません。mask、input_fidelity、file_id は非対応です。", "使用与 Chat 相同的对话模型 id 和 Key 授权规则。": "Chat と同じ対話モデル id とキーの許可規則を使用します。", "使用同一客户端生成与编辑,并将返回的 base64 保存为图片文件。": "同じクライアントで生成・編集し、返された base64 を画像ファイルに保存します。", "使用支持工具调用的模型。函数声明、调用结果配对与多模态请求示例见「看图与工具调用」章节。": "ツール対応モデルを使用します。関数宣言、呼び出しと結果の対応付け、マルチモーダルのリクエスト例は「画像理解とツール呼び出し」の章を参照してください。", "使用支持工具调用的模型。函数声明、调用结果配对与多模态请求示例见下一节。": "ツール対応モデルを使用します。関数宣言、呼び出しと結果の対応付け、マルチモーダルの例は次の節を参照してください。", "使用说明与兼容边界": "使用上の注意と互換性", "健康检查": "ヘルスチェック", "先前网关返回的 /v1/images/files/{id} 完整链接可在未过期时作为 JSON 参考图。不要把 AI 助手内部的 assistant-image:ID 当成对外接口图片 URL。": "以前ゲートウェイが返した完全な /v1/images/files/{id} URL は有効期限内なら JSON 参照に使用できます。アシスタント内部の assistant-image:ID を公開 API の画像 URL として使用しないでください。", "先确定网关地址、Key 和模型,再选择客户端支持的协议。": "ゲートウェイのアドレス、キー、モデルを確認してから、クライアントが対応するプロトコルを選択します。", "兼容 Anthropic 消息块与 SSE 事件,支持本地 Token 预算估算。": "Anthropic 内容ブロックと SSE イベントに対応し、ローカルでトークン予算を推定します。", "兼容 Responses 请求与事件格式,适合 Codex 等客户端;不是服务端会话存储。": "Codex など向けの Responses リクエスト・イベント互換。サーバー側の会話保存機能ではありません。", "内置 AI 助手已有 generate_images 与 edit_images 工具,可在助手设置中启用并按确认模式执行。外部 API 客户端不会自动获得这些工具;需要由客户端声明并实际调用图片接口。": "内蔵 AI アシスタントには generate_images と edit_images があります。アシスタント設定で有効にし、確認モードに従って実行します。外部 API クライアントに自動提供されるわけではなく、クライアント側でツールを宣言し画像 API を呼び出す必要があります。", "函数工具使用 Responses 的声明格式;工具结果以 function_call_output 携带相同 call_id。实际工具能力仍依赖模型与提供商。": "Responses 形式で関数を宣言し、結果は同じ call_id の function_call_output で返します。実際の対応はモデル・プロバイダーに依存します。", "函数工具声明包含 name、description、input_schema;结果在后续 user 消息的 tool_result 块中携带对应 tool_use_id。": "関数宣言は name、description、input_schema を含みます。後続 user メッセージの tool_result に対応する tool_use_id と結果を指定します。", "分别可能表示请求中断或请求过大。参考图过大时需缩小图片或减少数量,原样重试不会解决;中断的图片任务可能已经消耗额度。": "それぞれ中断・リクエスト過大などを示します。参照画像のサイズや数を減らしてください。同じ内容の再送信では解決せず、中断された画像処理でもクォータ消費済みの場合があります。", "分别控制输出上限与是否流式。stream 默认 false;true 返回 Responses 命名事件。": "出力上限とストリーミングを制御します。stream の既定は false、true は名前付き Responses イベントを返します。", "分别表示工具调用与思考能力。是否生效仍取决于实际承载模型、提供商和相关设置。": "それぞれツール呼び出し・推論への対応です。実際の動作は処理モデル、プロバイダー、設定にも依存します。", "分别请求思考档位与结构化输出;能力和可用取值依赖模型。不要因字段被接受就假定上游已经执行。": "それぞれ推論強度・構造化出力を要求します。機能と値はモデルに依存し、フィールドが受理されても上流で適用されたとは限りません。", "协议兼容不保证工具、思考、结构化输出、透明背景或每个尺寸都被所有提供商支持。先查看当前模型能力和插件版本,再核对请求日志的承载提供商与错误摘要。": "互換性はすべてのプロバイダーのツール、推論、構造化出力、透過背景、全サイズへの対応を保証しません。モデル能力とプラグイン版を確認し、ログ内の処理プロバイダーとエラー要約を確認してください。", "单图可用 image=@reference.png,多图重复提交 image[]。也兼容 images、images[] 与 image[0] 这类数字索引字段;普通参数不能重复提交。": "単一画像は image=@reference.png、複数は image[] を繰り返します。images、images[]、image[0] などの数値添字にも対応します。通常のパラメーターは重複不可です。", "单轮可以是字符串;多轮使用消息与工具项数组,客户端应携带必要历史。文本块使用 input_text,图片块使用 input_image。": "単一ターンは文字列、複数ターンは必要な履歴を含むメッセージ・ツール項目の配列です。テキストは input_text、画像は input_image を使用します。", "参考图编辑": "参照画像の編集", "参考图编辑;支持 multipart 文件上传或 JSON 图片引用。": "参照画像の編集。multipart ファイルアップロードまたは JSON 画像参照に対応。", "只支持这三种可解码图片格式,校验实际文件内容而不是仅看扩展名;单张最多 10 MiB,边长最多 8192。": "この 3 種のデコード可能画像のみです。拡張子だけでなく実際の内容を検証し、1 枚最大 10 MiB、辺長最大 8192 です。", "可用值为 auto、standard、hd、low、medium、high、xhigh、max。小浣熊与 Antigravity 仅接受省略、auto 或 standard;其他值是否有效取决于 Loomy 的具体模型。": "auto、standard、hd、low、medium、high、xhigh、max を受理します。Raccoon と Antigravity は省略、auto、standard のみで、他の値は Loomy のモデル次第です。", "可省略,或使用 auto、WIDTHxHEIGHT,例如 1024x1024。网关校验边长 1–8192,提供商可能进一步限制宽高比与分辨率,不保证精确像素输出。": "省略、auto、WIDTHxHEIGHT(例 1024x1024)を使用できます。辺長 1–8192 を検証しますが、プロバイダーは比率や解像度をさらに制限し、厳密な画素数は保証しません。", "可能是网关内部错误、上游异常、插件未接入、暂无可用账号、图片下载或编码失败。": "ゲートウェイ内部エラー、上流異常、プラグイン機能未連携、利用可能なアカウント不在、画像のダウンロード・エンコード失敗などです。", "可能是网关内部错误、上游异常、插件未接入、暂无可用账号、图片下载或编码失败。公网模式的 api_key_not_configured 表示必须先配置网关 Key。": "ゲートウェイ内部、上流異常、プラグイン能力不足、アカウント不在、画像ダウンロード・エンコード失敗などです。公開モードの api_key_not_configured は最初にゲートウェイキーを設定する必要があることを示します。", "可能附带实际输出编码、用量或点数。usage 与 points_consumed 取决于上游,缺失不代表免费;若未要求固定编码,不要默认所有图片都是 PNG。": "実エンコード、用量、ポイントなどを含む場合があります。usage と points_consumed がないことは無料を意味しません。形式を指定しなければすべて PNG とは限りません。", "可选的调用方用户标识,不是网关鉴权 Key,也不能用于指定账号或绕过 Key 的授权范围。是否传递与处理取决于提供商。": "任意の呼び出し元ユーザー識別子です。ゲートウェイキーではなく、アカウント指定やキー制限の回避には使えません。転送・処理はプロバイダーに依存します。", "启用": "有効", "图片响应与下载": "画像レスポンスとダウンロード", "图片响应创建时间,Unix 秒。不要与错误限额恢复字段 reset_at 的毫秒单位混用。": "レスポンス作成時刻、Unix 秒です。エラー復帰時刻 reset_at のミリ秒と混同しないでください。", "图片生成与共用参数": "画像生成と共通パラメーター", "图片生成与编辑": "画像生成と編集", "图片输入是理解图片,工具调用是由客户端执行动作;二者都需要模型能力支持。": "画像入力は画像の理解、ツール呼び出しはクライアントによる操作実行です。どちらもモデルの対応が必要です。", "在线模型列表": "オンラインモデル一覧", "在线模型列表指自动拉取上游目录;仅有静态模型清单不算在线支持。": "オンラインモデル一覧は上流のカタログを自動取得できることを指します。固定リストのみの場合はオンライン対応に含みません。", "地址速查与请求示例使用当前网关地址。从其他设备访问时,127.0.0.1 指向那台设备自身,必须换成实际可达的网关地址。": "アドレス一覧とリクエスト例は現在のゲートウェイアドレスを使用します。別の端末からアクセスする場合、127.0.0.1 はその端末自身を指すため、実際にゲートウェイへ到達できるアドレスに変更してください。", "填进客户端的「API 地址 / Base URL」": "クライアントの「API アドレス / Base URL」に記入", "声明函数工具的请求体": "関数ツールを宣言するリクエスト本文", "复制地址": "アドレスをコピー", "复制示例": "例をコピー", "多图有顺序意义:在 prompt 中明确“第 1 张是主体,第 2 张是风格参考”等关系。编辑不保证逐像素保真,要求保留的主体、文字或布局应明确描述。": "画像の順序には意味があります。prompt に「1 枚目が主体、2 枚目がスタイル」などを記述します。画素単位の保存は保証されず、保持する主体、文字、レイアウトは明示してください。", "多数 OpenAI 兼容客户端的默认协议": "多くの OpenAI 互換クライアントの既定プロトコル", "字段 / 状态": "フィールド / ステータス", "字段与限制": "フィールドと制限", "安装并使用支持 Images 参数的 OpenAI Python SDK。先按接入章节设置 GATEWAY_KEY 与 IMAGE_MODEL_ID,编辑前确认该模型支持参考图,并准备本地 reference.png。": "Images パラメーター対応の OpenAI Python SDK を使用します。接続節に従い GATEWAY_KEY と IMAGE_MODEL_ID を設定し、編集対応を確認してローカル reference.png を準備してください。", "客户端自动拉取可用模型;不受鉴权限制,配 Key 之前就能拉": "クライアントが利用可能なモデルを自動で取得します。認証の制限を受けないため、Key を設定する前でも取得できます", "对话协议": "対話プロトコル", "对话协议与上下文预算": "対話プロトコルとコンテキスト予算", "对话协议(按客户端支持的类型选一行)": "対話プロトコル(クライアントが対応する種類の行を一つ選択)", "对话模型看图请求": "対話モデルで画像を理解するリクエスト", "小浣熊与 Antigravity 不支持此字段,请在 prompt 中描述风格;Loomy 转交上游,由模型决定是否支持。": "Raccoon と Antigravity は非対応です。スタイルは prompt に書いてください。Loomy は上流へ渡し、対応はモデル次第です。", "小浣熊与 Antigravity 仅接受省略、auto 或 opaque;不保证所有模型都能生成透明背景。文件转码不会自动抠图。": "Raccoon と Antigravity は省略、auto、opaque のみです。全モデルが透過背景に対応するわけではなく、ファイル変換は背景を除去しません。", "小浣熊与 Antigravity 仅接受省略或 auto。该字段不保证上游降低审核强度,内容政策拒绝不会自动重试。": "Raccoon と Antigravity は省略または auto のみです。上流の審査緩和は保証せず、コンテンツポリシー拒否は自動再試行しません。", "小浣熊使用 raccoon-image;Loomy 使用目录中的 kind=image 模型;Antigravity 使用目录中的 gemini-*-image 模型;ModelScope 使用已确认支持的 Qwen-Image、Z-Image 或 Qwen-Image-Edit 型号;WorkBuddy 使用目录中带 text-to-image 或 image-to-image 标签的模型,例如 hunyuan-image-alpha 与 hunyuan-image-alpha-edit。实际 model 值以当前 /v1/models 为准,不要直接复制官方 API 的默认模型名。": "Raccoon は raccoon-image を使用します。Loomy はカタログの kind=image モデル、Antigravity はカタログの gemini-*-image モデル、ModelScope は対応が確認されている Qwen-Image、Z-Image、Qwen-Image-Edit モデルを使用します。WorkBuddy はカタログで text-to-image または image-to-image タグが付いたモデル(例: hunyuan-image-alpha、hunyuan-image-alpha-edit)を使用します。実際の model 値は現在の /v1/models を正とし、各社 API の既定モデル名をそのまま使わないでください。", "展开目录": "目次を開く", "工具服务 API": "ツールサービス API", "工具服务 API 文档": "ツールサービス API ドキュメント", "工具服务 API 是网关对外的固定接口,路径以 /api/web-search 开头;不属于 /v1 对话协议,也不是管理面板的管理接口,鉴权同样使用网关 Key。": "ツールサービス API はゲートウェイが外部公開する固定インターフェースで、パスは /api/web-search で始まります。/v1 の対話プロトコルではなく、管理パネルの管理 API でもありません。認証には同じくゲートウェイ Key を使用します。", "已实现,待实测": "実装済み・実測待ち", "已实现,待实测:仅表示代码已接入,尚未通过真实账号验证。": "実装済み・実測待ち:コードの連携のみを示し、実アカウントでは未検証です。", "建议显式填写图片模型 id。省略时从当前 Key 可用目录中选择支持本次操作的图片模型,不使用对话默认模型;没有对应能力模型时返回 503。": "画像モデル id を明示してください。省略時はキーの利用可能一覧から今回の操作に対応するモデルを選択し、対話既定モデルは使用しません。対応モデルがない場合は 503 です。", "待实测": "実測待ち", "必填。使用 user / assistant 角色;content 可为字符串或 text、image、tool_use、tool_result 等内容块。": "必須。user / assistant 役割を使用します。content は文字列または text、image、tool_use、tool_result などのブロックです。", "必填。包含 role 与 content;常见角色为 system、user、assistant,工具结果使用 tool。文本可直接使用字符串,多模态使用内容块数组。": "必須。role と content を含みます。通常は system、user、assistant、ツール結果は tool です。テキストは文字列、マルチモーダルは内容ブロック配列を使用します。", "必填且不能为空,最多 32000 个字符。描述主体、构图、风格和修改目标;当前不支持 mask,编辑范围也应在提示词中说明。": "必須かつ空不可、最大 32000 文字。主体、構図、スタイル、変更内容を記述します。mask は非対応のため編集範囲も指示内で説明してください。", "执行工具后回传结果的请求体": "実行したツール結果を返すリクエスト本文", "找到 {count} 个章节": "{count} 件の章が見つかりました", "排错与限制": "トラブルシューティングと制限", "接入与鉴权": "接続と認証", "接入指南": "接続ガイド", "接入指南与接口参考": "接続ガイドと API リファレンス", "接口参考目录": "API リファレンス目次", "接口地址": "エンドポイントアドレス", "推荐使用 Authorization: Bearer YOUR_GATEWAY_KEY;Key 来自「网关 Key」页,并且必须处于启用状态。": "Authorization: Bearer YOUR_GATEWAY_KEY を推奨します。「ゲートウェイキー」ページから有効なキーを取得してください。", "推荐显式指定当前目录中的对话模型 id。省略时尝试网关默认模型;默认选择也受该 Key 的授权范围限制。": "現在の一覧の対話モデル id を明示することを推奨します。省略時はゲートウェイの既定モデルを試しますが、キーの許可範囲に従います。", "描述输入与输出模态,例如 text、image、video。字段缺失不表示自动支持其他文件、音频或服务端上传接口。": "text、image、video などの入出力モダリティです。フィールドがないことは、他のファイル、音声、サーバーアップロード API への対応を意味しません。", "提供商能力": "プロバイダー機能", "提供商能力适配表": "プロバイダー機能対応表", "搜索文档": "ドキュメントを検索", "搜索文档、参数或接口…": "文書、パラメーター、API を検索…", "收起全部": "すべて折りたたむ", "收起目录": "目次を閉じる", "文本生成图片;JSON 请求,非流式返回 base64 或下载链接。": "テキストから画像を生成。JSON を送信し、非ストリーミングの base64 またはダウンロード URL を受け取ります。", "文档内容": "ドキュメント", "文档目录": "ドキュメント目次", "无此概念": "対象外", "映射为思考档位与结构化输出请求;支持范围以目标模型为准。": "推論強度・構造化出力へマッピングします。対応範囲は対象モデルに依存します。", "未声明表示插件没有提供明确结论,不等于不支持。": "未申告はプラグインが明確な結論を提供していないことを意味し、非対応とは限りません。", "未声明表示网关本体或插件没有提供明确结论,不等于不支持。": "未宣言はゲートウェイ本体やプラグインが明確な結論を提供していないことを意味し、非対応とは限りません。", "本体订阅": "本体のサブスクリプション", "本地上下文预算估算,返回 estimated=true;不是上游精确分词。": "ローカルでコンテキスト予算を推定し estimated=true を返します。上流の正確なトークン分割ではありません。", "本机免鉴权模式没有启用 Key 时可调用;启用任意 Key 后,受保护接口都要携带有效 Key。公网安全模式没有配置 Key 时会拒绝受保护的 /v1 请求,并返回 503 api_key_not_configured。": "ローカルの認証なしモードでは有効なキーがない場合に呼び出せます。キーを有効にすると保護対象 API に有効なキーが必要です。公開ネットワークの安全モードでキーが未設定の場合、保護対象の /v1 リクエストは 503 api_key_not_configured で拒否されます。", "本页只说明实际提供的接口,不等于完整复刻 OpenAI / Anthropic 服务。未列出的 Files、Batch、图片 variations、服务端会话存储等端点不要假定可用。": "このページは実装済み API の説明で、OpenAI / Anthropic サービス全体の再現ではありません。記載のない Files、Batch、画像 variations、サーバー会話保存 API が利用できると仮定しないでください。", "本页说明对外的 /v1 接口,不是管理面板的 /api 接口。三种对话协议共用模型目录、模型映射、账号池和网关 Key,但请求与响应格式不同。": "このページは公開 /v1 API の説明です。管理画面の /api API ではありません。3 種類の対話プロトコルはモデル一覧、モデルマッピング、アカウントプール、ゲートウェイキーを共有しますが、リクエストとレスポンス形式は異なります。", "查看当前网关的客户端地址和各接口路径,一键复制后即可使用。": "現在のゲートウェイのクライアント用アドレスと各 API パスを確認し、コピーして使用できます。", "根据文字提示生成图片。请求使用 JSON,生成与编辑均只支持非流式响应。": "テキスト指示から画像を生成します。JSON を使用し、生成・編集ともに非ストリーミングのみです。", "检查网关是否可访问": "ゲートウェイへの到達確認", "模型不存在、已关闭或不在 Key 授权范围,常附 model_not_found;也可能是路径错误,或临时图片下载链接已过期。": "モデルが存在しない、無効、キーの許可範囲外などで、通常 model_not_found が付きます。誤ったパスや一時画像 URL の期限切れの場合もあります。", "模型列表": "モデル一覧", "模型发现与健康检查": "モデル検出とヘルスチェック", "模型清单": "モデルリスト", "模型清单与健康检查": "モデル一覧とヘルスチェック", "模型清单反映当前账号、模型启停与映射配置。不带 Key 时可读取公开清单;携带 Key 时必须有效,返回内容按该 Key 的授权范围过滤,无效 Key 返回 401。": "モデル一覧には現在のアカウント、モデルの有効状態、マッピングが反映されます。Key なしでは公開一覧を取得できます。Key を付ける場合は有効なものが必要で、許可範囲に絞り込まれます。無効な Key は 401 を返します。", "模型清单反映当前账号、模型启停与映射配置;携带有效网关 Key 时进一步按该 Key 的授权范围过滤。不带 Key 或 Key 无效时仍可读取未按该 Key 收窄的清单。": "モデル一覧には現在のアカウント、モデルの有効・無効、マッピングが反映されます。有効なキーがあればさらにその許可範囲で絞り込みます。キーなし・無効なキーの場合、そのキーによる絞り込みは行いません。", "模型清单结构示例": "モデル一覧の構造例", "模型调用始终需要启用且可用的网关 API Key,即使只在本机使用也不能免鉴权。管理员登录会话只用于管理面板,不能代替模型调用的 Key。": "モデル呼び出しには常に有効で利用可能なゲートウェイ API Key が必要です。ローカル利用でも認証は省略できません。管理者セッションは管理画面専用で、モデル呼び出しの Key を代替できません。", "每把 Key 的可用模型、可用提供商限制同样适用于生图和编辑图。模型名称使用 /v1/models 中的 id 或已配置的映射名,不要直接使用展示名称。": "キーごとのモデル・プロバイダー制限は画像生成と編集にも適用されます。model には /v1/models の id または設定済みマッピング名を使用し、表示名を直接使用しないでください。", "没有找到匹配的文档": "一致するドキュメントがありません", "流式以 message_start 开始,经 content_block_start / content_block_delta / content_block_stop,最终 message_delta 与 message_stop 收尾;不要按 Chat 的 [DONE] 规则解析。": "message_start から開始し、content_block_start / content_block_delta / content_block_stop を経て message_delta と message_stop で終了します。Chat の [DONE] 規則で解析しないでください。", "流式包含 response.created、response.output_text.delta 和最终 response.completed 等事件;错误可能以 response.failed 结束。输出预算不足时检查 incomplete 状态与 incomplete_details。": "ストリームには response.created、response.output_text.delta、最終 response.completed などがあります。エラーは response.failed で終わる場合があります。出力予算不足時は incomplete と incomplete_details を確認してください。", "流式对话请求": "ストリーミング対話リクエスト", "流式开始后 HTTP 状态码无法再改;即使已经收到 200,也要检查流内错误、结束原因及是否正常收尾,不能把断流视为成功。": "ストリーム開始後は HTTP ステータスを変更できません。200 を受信してもストリーム内エラー、終了理由、正常な終了を確認し、切断を成功扱いしないでください。", "流式用量可请求 include_usage=true;最终是否返回用量取决于上游,不应假设每个增量都有 usage。": "include_usage=true でストリーミング用量を要求できます。最終用量の有無は上流次第で、各デルタに usage があるとは限りません。", "清除搜索": "検索をクリア", "点击章节展开参数、示例和兼容边界;示例只供复制,不会在本页发起模型请求或消耗额度。": "節を開くとパラメーター、例、互換性の境界を確認できます。例はコピー専用で、このページからモデルを呼び出したりクォータを消費したりしません。", "生图可能消耗账号额度。先使用 n=1 和较小尺寸确认能力,内容政策拒绝或结果不确定时不要自动重复提交。": "画像生成はクォータを消費する場合があります。まず n=1 と小さなサイズで確認し、ポリシー拒否や結果不明時に自動再送信しないでください。", "生成、编辑与对话接口共用网关 Key;完整鉴权规则、模型能力和请求示例见下方章节。": "画像生成・編集・対話 API はゲートウェイキーを共有します。詳しい認証規則、モデル能力、リクエスト例は下記の節を参照してください。", "生成、编辑与对话接口共用网关 Key;鉴权规则、模型能力和请求示例可从文档目录查阅。": "画像生成・編集・対話 API はゲートウェイキーを共有します。認証規則、モデル能力、リクエスト例はドキュメント目次から参照してください。", "生成与编辑返回同一结构;base64 适合直接保存,URL 适合短期获取。": "生成と編集は同じ構造を返します。base64 は直接保存、URL は短期取得に適しています。", "用于请求思考配置或档位,由网关映射到目标模型;不保证所有 Anthropic 原生特性在跨协议转发时完全等价。": "推論設定や強度を対象モデルへマッピングします。プロトコルをまたぐ転送ですべての Anthropic ネイティブ機能が完全に等価になるとは限りません。", "的 Key:请求带 ": "な Key をいずれか一つ認証に使用:リクエストに ", "目前小浣熊、Loomy、Antigravity、ModelScope、WorkBuddy 已接入图片生成;Loomy、Antigravity、ModelScope 与 WorkBuddy 同时接入参考图编辑,小浣熊暂不支持编辑。需要当前提供商插件包含对应能力,并且账号、模型和 Key 授权可用。": "現在、Raccoon、Loomy、Antigravity、ModelScope、WorkBuddy が画像生成に対応しています。Loomy、Antigravity、ModelScope、WorkBuddy は参照画像の編集にも対応していますが、Raccoon は編集に未対応です。プロバイダープラグインが該当機能を含み、アカウント・モデル・ゲートウェイ Key の認可が利用可能である必要があります。", "目录声明的上下文与最大输出预算,可能省略。预算和余额不是同一概念,也不能替代上游的实际限制。": "一覧が宣言するコンテキスト・最大出力予算で、省略される場合があります。トークン予算は残高ではなく、上流の実際の制限を上書きしません。", "看图与工具调用": "画像理解とツール呼び出し", "看图请求使用对话模型,并确认 supports_images=true。Chat 使用 text 与 image_url 内容块,图片值可为上游支持的 HTTP(S) URL 或 data URL;可用格式与大小取决于目标模型。「参考图编辑」章节的上传限制不应直接套用到所有对话模型。": "画像理解には supports_images=true の対話モデルを使用します。Chat は text と image_url ブロックを使い、上流が対応する HTTP(S) URL または data URL を指定します。形式とサイズは対象モデル次第です。「参照画像の編集」の章にあるアップロード制限がすべての対話モデルに適用されるわけではありません。", "看图请求使用对话模型,并确认 supports_images=true。Chat 使用 text 与 image_url 内容块,图片值可为上游支持的 HTTP(S) URL 或 data URL;可用格式与大小取决于目标模型。下方编辑图的上传限制不应直接套用到所有对话模型。": "画像理解には supports_images=true の対話モデルを使用します。Chat は text と image_url ブロックを使い、上流が対応する HTTP(S) URL または data URL を指定します。形式とサイズは対象モデル次第で、下記の編集アップロード制限がすべての対話モデルに適用されるわけではありません。", "示例仅供复制,不会在本页发起请求或消耗额度。": "例はコピー専用です。このページからリクエストを送信したり、クォータを消費したりしません。", "示例显式设置 max_retries=0,避免 SDK 对超时或 5xx 自动重新提交收费任务;timeout=300.0 仅是客户端等待示例,不会改变网关或上游的超时配置。": "例は max_retries=0 を明示し、タイムアウト・5xx 時の SDK の有料タスク自動再送を防ぎます。timeout=300.0 は待機時間の例だけで、ゲートウェイや上流の設定は変更しません。", "章节导航": "章のナビゲーション", "类型 / 范围": "型 / 範囲", "系统说明是顶层字段,不要放进 messages 的 system 角色;支持文本或 text 块数组。": "システム指示はトップレベルのこのフィールドに指定し、messages の system 役割には入れません。文字列または text ブロック配列に対応します。", "系统说明,对应 Chat 的 system 消息;需要时每次请求重新携带。": "Chat の system メッセージに対応するシステム指示です。必要なら毎回送信してください。", "结合 HTTP 状态、错误内容与请求日志判断问题;不要盲目重试收费请求。": "HTTP ステータス、エラー内容、リクエストログで原因を判断し、有料リクエストを無条件に再試行しないでください。", "编辑请求上传总大小最多 16 MiB。参考图转为 data URL 后,内联图片与最终 JSON 请求还受 14 MiB 上限;base64 约增加三分之一体积,因此多张各小于 10 MiB 也可能超限。": "編集アップロード全体は最大 16 MiB。data URL 化後の内蔵画像と最終 JSON は 14 MiB 制限も受けます。base64 は約 3 分の 1 増えるため、各画像が 10 MiB 未満でも合計超過する場合があります。", "网关临时 URL 响应结构": "ゲートウェイ一時 URL レスポンス構造", "网关临时下载不要求 Authorization,链接中的随机令牌就是访问凭据,任何拿到链接的人都能下载。请将链接视为敏感信息,重要结果及时保存,不要当作长期文件存储。": "一時ダウンロードは Authorization 不要です。URL 内のランダムトークンが認証情報で、リンクを知る人はダウンロードできます。機密として扱い、重要な結果はすぐ保存し長期保存先にしないでください。", "网关临时图片仅保存在内存,生成后 1 小时过期,网关重启后立即失效。缓存总容量 128 MiB;缓存满时会返回错误并建议改用 b64_json。上游签名链接的有效期由提供商决定。": "一時画像はメモリー内のみで 1 時間後に期限切れとなり、再起動ですぐ消えます。総容量 128 MiB で、満杯なら b64_json の利用を案内するエラーを返します。上流署名 URL の有効期間はプロバイダーが決めます。", "网关内置的安全重试与客户端 SDK 的重试是两层独立行为。图片客户端建议关闭自动重试;即使网关已停止重试,SDK 仍可能重新提交整条请求。": "ゲートウェイの安全再試行と SDK の再試行は独立しています。画像クライアントは自動再試行を無効にしてください。ゲートウェイが再試行を停止しても SDK が全リクエストを再送する場合があります。", "网关可将实际图片转换为指定文件编码。省略时保留上游图片格式;需要固定扩展名时建议显式填写。JPEG 无法保留透明通道。": "実際の画像を指定エンコードへ変換できます。省略時は上流形式を保持し、固定拡張子が必要なら明示してください。JPEG は透過を保持できません。", "网关始终无状态,响应中的 store=false。即使请求 store=true,也不会保存可供后续检索的 Responses 对象。": "ゲートウェイは常にステートレスで store=false を返します。store=true を送信しても、後で取得できる Responses オブジェクトは保存されません。", "网关接受 1–10,默认 1;Antigravity 与 ModelScope 仅支持 n=1。上游返回数量不足时网关报错,不会为了凑数再次调用图片生成。": "ゲートウェイは 1–10、既定 1。Antigravity と ModelScope は n=1 のみです。上流の返却数が不足した場合はエラーとし、枚数を満たすための再生成はしません。", "网关接受 1–10,默认 1;Antigravity 仅支持 n=1。上游返回数量不足时网关报错,不会为了凑数再次调用图片生成。": "ゲートウェイは 1–10、既定 1。Antigravity は n=1 のみです。上流の返却数が足りない場合はエラーとなり、枚数を満たすために再生成しません。", "网关最多接受 16 张参考图。Antigravity 的 gemini-2.5-* 模型最多 3 张,其他当前接入的 Antigravity 图片模型最多 14 张;Loomy 还可能受上游模型限制。": "最大 16 枚です。Antigravity gemini-2.5-* は 3 枚、それ以外の現在対応する Antigravity 画像モデルは 14 枚までです。Loomy は上流モデルの追加制限もあり得ます。", "网关最多接受 16 张参考图。Antigravity 的 gemini-2.5-* 模型最多 3 张,其他当前接入的 Antigravity 图片模型最多 14 张;ModelScope 接受 1–3 张参考图;Loomy 还可能受上游模型限制。": "参照画像は最大 16 枚です。Antigravity の gemini-2.5-* は 3 枚、他の対応済み画像モデルは 14 枚まで。ModelScope は 1–3 枚、Loomy は上流モデルの追加制限があり得ます。", "网关需要下载或转换输出时,单张图片最多 32 MiB、边长最多 8192,并使用有界解码。请求 output_format 会按实际图片转码,而不是只修改文件扩展名。": "出力を取得・変換する場合、1 枚最大 32 MiB、辺長最大 8192 で、制限付きデコードを使用します。output_format は拡張子だけでなく実際の画像を変換します。", "网络搜索与网页抓取的 REST 接口,使用网关 Key 鉴权;不属于 /v1 对话协议。": "ウェブ検索とウェブページ取得の REST インターフェース。ゲートウェイ Key で認証し、/v1 の対話プロトコルには含まれません。", "能力由当前插件版本申报,表示适配支持情况,不代表账号额度或当前可用性。": "機能はインストール済みのプラグインが申告します。連携の対応状況を示し、アカウントのクォータや現在の利用可否を示すものではありません。", "能力由当前网关本体或插件版本申报,表示适配支持情况,不代表账号额度或当前可用性。": "機能は現在のゲートウェイ本体またはプラグインが申告します。連携の対応状況を示し、アカウントのクォータや現在の利用可否を示すものではありません。", "自定义函数工具通过 tools 声明。模型返回 tool_calls 后,客户端校验参数、执行函数,再把 assistant 工具调用和 role=tool 结果一起放入下一次 messages;tool_call_id 必须对应,不能遗漏并行调用的结果。": "tools で独自関数を宣言します。tool_calls が返ったらクライアントが引数を検証して実行し、assistant の呼び出しと role=tool の結果を次回 messages に含めます。tool_call_id を一致させ、並列呼び出しの結果を省略しないでください。", "表示当前目录与插件声明支持参考图编辑。编辑前检查此字段,不要仅凭模型名称包含 image 判断。": "現在の一覧とプラグインが参照画像編集への対応を宣言していることを示します。編集前に確認し、モデル名に image があることだけで判断しないでください。", "表示支持图片输入,不等于支持生成图片。对话模型可用于看图;编辑模型也可能声明此字段。": "画像入力への対応であり、画像生成への対応ではありません。対話モデルは画像理解に使用でき、編集モデルもこのフィールドを宣言する場合があります。", "表示目录条目属于生图模型。调用还需要当前插件已接入生成能力,且存在获准使用的可用账号。": "画像生成モデルの一覧項目であることを示します。呼び出しには、現在のプラグインの生成対応と、許可された利用可能なアカウントが必要です。", "试试接口路径、参数名或其他关键词。": "API パス、パラメーター名、別のキーワードで検索してください。", "详细接口参考": "詳細 API リファレンス", "请求与响应示例": "リクエストとレスポンスの例", "请求参数、模型能力或协议形态不支持。图片相关 code 可能为 invalid_image_input、image_generation_not_supported 或 image_editing_not_supported;修改请求后再发。": "パラメーター、モデル能力、プロトコル形式が非対応です。画像関連 code は invalid_image_input、image_generation_not_supported、image_editing_not_supported などです。修正してから再送信してください。", "请求示例适用于 Bash / Git Bash。YOUR_GATEWAY_KEY、CHAT_MODEL_ID、IMAGE_MODEL_ID 和图片占位地址都需要替换;返回示例仅展示结构,能力位、Token 数量和时间戳不是当前网关的实测值。": "リクエスト例は Bash / Git Bash 用です。YOUR_GATEWAY_KEY、CHAT_MODEL_ID、IMAGE_MODEL_ID と画像の仮 URL を置き換えてください。レスポンス例は構造の例示であり、機能フラグ、トークン数、時刻は現在のゲートウェイの実測値ではありません。", "读取提供商能力表失败:{error}": "プロバイダー機能の読み込みに失敗しました:{error}", "读取插件能力表失败:{error}": "プラグイン機能の読み込みに失敗しました:{error}", "读取获准使用的模型": "許可されたモデルを取得", "输出 Token 上限,具体支持字段和预算以模型为准。不要同时设置冲突的上限;达到上限时 finish_reason 可能为 length。": "最大出力トークン数。対応フィールドと予算はモデルに依存します。矛盾する上限を同時に指定しないでください。上限到達時は finish_reason が length になる場合があります。", "通用对话入口,适合大多数 OpenAI 兼容客户端。": "多くの OpenAI 互換クライアント向けの汎用対話 API。", "通用错误结构示例": "汎用エラー構造の例", "通过能力字段选择正确模型;健康检查只说明网关可访问。": "機能フィールドから適切なモデルを選択します。ヘルスチェックは到達可能性のみを確認します。", "遇到“图片请求可能已消耗额度,未自动重试”或“上游已生成”等提示,先核对请求日志与上游结果。客户端超时、断线或取消不代表上游撤销任务;自动重发可能再次扣费。": "画像でクォータ消費の可能性があり自動再試行しなかった、または上流で生成済みという警告があれば、先にログと上流結果を確認してください。タイムアウト・切断・取消は上流処理の撤回を意味せず、再送信で再課金される場合があります。", "采样参数,是否支持和有效范围由提供商与模型决定。协议兼容不代表每家上游都支持全部调参项。": "サンプリング設定。対応状況と範囲はプロバイダー・モデルに依存します。プロトコル互換はすべての調整項目への対応を保証しません。", "鉴权用「网关 Key」页里任一": "「ゲートウェイキー」ページで", "错误、限额与兼容边界": "エラー・制限・互換性の境界", "限流、额度不足或当前无可用账号窗口。能确定恢复时间时可能返回 Retry-After(秒)、reset_at(Unix 毫秒)与 reset_at_text;这些字段不是每次都有。": "レート制限、クォータ不足、利用可能なアカウント枠がない状態です。復帰時刻が分かる場合は Retry-After(秒)、reset_at(Unix ミリ秒)、reset_at_text が返る場合がありますが、常にあるわけではありません。", "非流式响应读取 choices[].message;流式响应读取 choices[].delta。每次请求由客户端携带 messages 历史,网关不会根据上一条响应 id 自动恢复对话。": "非ストリーミングは choices[].message、ストリーミングは choices[].delta を読みます。毎回 messages の履歴を送信してください。前のレスポンス id から会話を自動復元することはありません。", "非流式对话响应": "非ストリーミング対話レスポンス", "非流式对话请求": "非ストリーミング対話リクエスト", "非流式返回 object=response、status、output 数组与 output_text。output 也可能包含 reasoning 或 function_call,不能只读取数组第一项。": "非ストリーミングは object=response、status、output 配列、output_text を返します。output は reasoning や function_call も含むため、最初の要素だけを読まないでください。", "非流式返回 type=message、content 块数组、stop_reason 与 usage。content 可能同时包含文本、思考与工具调用,应该按 type 遍历。": "非ストリーミングは type=message、content ブロック、stop_reason、usage を返します。テキスト・推論・ツール呼び出しが混在するため type ごとに処理してください。", "领取类": "報酬の取得", "默认 b64_json,返回可直接解码的图片 base64;url 返回上游签名链接或网关临时下载链接。不是图片文件编码。": "既定の b64_json はデコード可能な base64、url は上流署名 URL またはゲートウェイ一時 URL を返します。画像ファイルのエンコード形式ではありません。", "默认 false,返回完整 JSON;true 返回 text/event-stream。curl 查看流式输出时添加 -N,客户端应按完整 SSE 事件解析而不是按网络分块解析。": "既定は false で完全な JSON を返し、true は text/event-stream を返します。curl は -N を指定し、ネットワーク分割単位ではなく完全な SSE イベントを解析してください。", "24 小时总用量": "24時間の総使用量", "24 小时整体命中率": "24時間全体のヒット率", "24 小时请求数": "24時間のリクエスト数", "30 天": "30 日間", "7 天": "7 日間", "API Key 分布": "API Key 別内訳", "Token": "Token", "Top 提供商": "Top プロバイダー", "Top 模型": "Top モデル", "Top 账号": "Top アカウント", "{date} · {tokens} tokens · {n} 次请求": "{date} · {tokens} tokens · リクエスト {n} 件", "{date} · 无请求": "{date} · リクエストなし", "{model}:{tokens} tokens": "{model}:{tokens} tokens", "{m}月": "{m}月", "{m}月{d}日 周{wd}": "{m}月{d}日({wd})", "{name} · {tokens} tokens · {n} 次请求 · {pct}": "{name} · {tokens} tokens · リクエスト {n} 件 · {pct}", "{name}:{tokens} tokens · 占 {pct}%": "{name}:{tokens} tokens · 占有率 {pct}%", "{n} 家提供商": "プロバイダー {n} 件", "{n} 次请求": "リクエスト {n} 件", "{n} 项": "{n} 項目", "{n} 项低于 {threshold}%,已合并为“其他”": "{threshold}% 未満の {n} 項目を「その他」にまとめています", "{title}显示数量": "{title}の表示件数", "{tokens} tokens · 占 {pct}": "{tokens} tokens · 占有率 {pct}", "…还有 {n} 个模型": "…ほか {n} 件のモデル", "…还有 {n} 项": "…ほか {n} 項目", "一": "月", "三": "水", "二": "火", "五": "金", "仅在饼图合并,右侧列表完整保留每个项目": "円グラフ内だけで集約し、右の一覧にはすべての項目を表示します", "仅调整两个饼图,右侧列表始终完整显示": "2つの円グラフだけを変更し、右の一覧は常にすべて表示します", "仅调整这两张图的展示,所有用量仍计入总 Token,占比保持不变": "この2つのグラフの表示のみを変更します。すべての使用量は総 Token に含まれ、割合は変わりません", "今天": "今日", "全部用量": "すべての使用量", "六": "土", "其他 {pct} · {n} 项,仅在饼图合并": "その他 {pct} · {n} 項目、円グラフ内だけで集約", "其他({n} 项)": "その他({n} 項目)", "其余 {n} 项": "残り {n} 項目", "前 {n} 名": "上位 {n} 件", "前 {n} 名占全部用量 {pct}": "上位 {n} 件が総使用量の {pct}", "区间共 {n} 天": "全 {n} 日間", "占比低于": "割合が", "占输入 Token 的 {rate}": "入力 Token の {rate}", "历史明细不完整": "過去の明細が不完全です", "另 {n} 项": "ほか {n} 項目", "右轴": "右軸", "合并只作用于饼图。低于阈值的扇区归入“其他”,右侧列表完整保留每个项目,总量和占比不变。": "集約は円グラフだけに適用します。しきい値未満の扇形を「その他」にまとめ、右の一覧にはすべての項目を表示します。合計と割合は変わりません。", "合并小项": "小さい項目をまとめる", "合计": "合計", "含今天在内往前数": "本日を含めて遡ってカウント", "命中 {hit} / 输入 {input}": "ヒット {hit} / 入力 {input}", "命中率": "ヒット率", "命中率 = 缓存读取 Token / 输入 Token(promptTokens)。窗口越短越贴近「此刻」:上游把缓存读取与输入分开上报时,该比值合法地可能超过 100%,此处不夹取值、如实展示。": "ヒット率 = キャッシュ読み取り Token / 入力 Token(promptTokens)。ウィンドウが短いほど「現在」に近づきます。アップストリームがキャッシュ読み取りと入力を分けて報告する場合、この比率は 100% を超えることが正当にあり得ますが、ここでは値を切り詰めず、ありのままに表示します。", "命中率 {rate}(命中 {hit} / 输入 {input})": "ヒット率 {rate}(ヒット {hit} / 入力 {input})", "四": "木", "图表显示": "グラフ表示", "图表类型": "グラフの種類", "在右侧展开“其他”查看明细": "凡例の「その他」を展開すると明細を確認できます", "天有调用": "日間の利用", "小项合并阈值": "小さい項目をまとめるしきい値", "展开其他明细": "その他の明細を展開", "左轴": "左軸", "开启“合并小项”后,低于阈值的项目合并为灰色“其他”,可在右侧展开明细。合并只影响展示,总 Token 和占比不变。": "「小さい項目をまとめる」を有効にすると、しきい値未満の項目を灰色の「その他」にまとめます。凡例で展開すると明細を確認できます。表示のみの変更で、総 Token と割合は変わりません。", "开始日期": "開始日", "当前连续天数": "現在の連続日数", "总 Token": "総 Token", "总 Token:{tokens}": "合計 Token:{tokens}", "总 Token:{tokens}({n} 次请求)": "合計 Token:{tokens}({n} リクエスト)", "总请求数": "総リクエスト数", "总量不变": "合計は変更なし", "悬停查看完整读数与分项": "ホバーすると詳細な数値と内訳を表示", "成功率 {rate}": "成功率 {rate}", "成功率 {rate} · 失败 {n} 次": "成功率 {rate} · 失敗 {n} 件", "成功请求数": "成功リクエスト数", "所选范围内暂无请求": "選択期間内にリクエストがありません", "所选范围内每个提供商各消耗了多少 Token,按 Token 用量从多到少排。同一个模型名可能有多家都能提供,网关按设置页「转发路由」的优先级依次尝试,所以占比也反映了实际落到谁身上。百分比按本区间的总 Token 数算(这一块只看用量,请求次数与成功率在概览卡片里)。「未知」是指那批请求没记下承载它的提供商 —— 主要是记录提供商这个功能上线之前的旧明细,其次是请求在选定上游之前就失败了(请求体非法、模型不存在、没有可用账号)。这一维与账号那一维不同:旧明细里根本没有「哪家承载」的信息(早期版本只有单一上游,但那是配置事实而非逐条记录),所以无法回算,旧数据会一直留在「未知」里;此后新产生的请求都会记上具体的提供商。": "選択期間内で各プロバイダーがどれだけ Token を消費したかを、Token 使用量の多い順に並べたものです。同じモデル名を複数のプロバイダーが提供できることがあり、ゲートウェイは設定ページの「転送ルーティング」の優先度に沿って順に試すため、割合は実際にどのプロバイダーが処理したかも反映しています。パーセントはこの期間の総 Token 数に対して計算します(このセクションは使用量のみを見ており、リクエスト数と成功率は概要カードにあります)。「不明」とは、それらのリクエストに処理を担ったプロバイダーが記録されていない場合です —— 主にプロバイダーの記録機能が実装される前の古い明細で、次に、アップストリームを選択する前にリクエストが失敗した場合(リクエストボディが不正、モデルが存在しない、利用可能なアカウントがない)です。この次元はアカウントの次元とは異なります。古い明細には「どのプロバイダーが処理したか」の情報がそもそもありません(初期バージョンは単一アップストリームのみでしたが、それは設定上の事実であり、リクエストごとの記録ではありません)。そのため再計算できず、古いデータは「不明」に残り続けます。それ以降に新しく生成されたリクエストには、具体的なプロバイダーが記録されます。", "所选范围内每个提供商各消耗了多少 Token,按用量从多到少排,扇区角度即占比。同一个模型名可能有多家都能提供,网关按设置页「转发路由」的优先级依次尝试,所以占比也反映了实际落到谁身上。中心是这一维的合计(等于概览里的总 Token),右侧每行给出该提供商的 Token 用量与百分比。「未知」是指那批请求没记下承载它的提供商 —— 主要是记录提供商这个功能上线之前的旧明细,其次是请求在选定上游之前就失败了。": "選択期間内で各プロバイダーがどれだけ Token を消費したかを使用量の多い順に並べたもので、扇形の角度が割合を表します。同じモデル名を複数のプロバイダーが提供できることがあり、ゲートウェイは設定ページの「転送ルーティング」の優先度に沿って順に試すため、割合は実際にどのプロバイダーが処理したかも反映しています。中心はこの次元の合計(概要の総 Token と同じ)で、右側の各行にそのプロバイダーの Token 使用量とパーセントを表示します。「不明」とは、それらのリクエストに処理を担ったプロバイダーが記録されていない場合です —— 主にプロバイダーの記録機能が実装される前の古い明細で、次に、アップストリームを選択する前にリクエストが失敗した場合です。", "所选范围内每个模型各消耗了多少 Token,按用量从多到少排,扇区角度即占比。中心是这一维的合计(等于概览里的总 Token),右侧每行给出该模型的 Token 用量与百分比。扇区内的百分比只在 ≥3% 时标出,更小的会挤成一团 —— 完整读数在右侧列表与悬停气泡里。颜色按用量排名分配:最大的那段是红色,依次往后;同一份报表里换个维度看,配色口径不变。": "選択期間内で各モデルがどれだけ Token を消費したかを使用量の多い順に並べたもので、扇形の角度が割合を表します。中心はこの次元の合計(概要の総 Token と同じ)で、右側の各行にそのモデルの Token 使用量とパーセントを表示します。扇形内のパーセントは 3% 以上の場合にのみ表示し、それより小さいものは重なってしまうため —— 完全な値は右側のリストとホバー時のツールチップにあります。色は使用量の順位に応じて割り当てます。最も大きい区画が赤で、以降も順に続きます。同じレポートで別の次元を見ても、配色の基準は変わりません。", "所选范围内每个账号各消耗了多少 Token,按 Token 用量从多到少排。账号是比提供商更细的一维:同一家可以挂多个账号,转发时按优先级在候选链上依次尝试,所以这里反映的是「具体哪个登录态在出力」。百分比按本区间的总 Token 数算(这一块只看用量,请求次数与成功率在概览卡片里)。「未知账号」是指那批请求没有账号身份:走默认登录态转发(未配置账号列表)时会这样;这一维上线前写出的旧聚合行也没有账号明细,但它们会在升级导入旧数据时按明细自动补算回来 —— 只有明细已被手动清理掉的那几天补不回来,仍留在「未知账号」里,那是确实无从恢复的部分。": "選択期間内で各アカウントがどれだけ Token を消費したかを、Token 使用量の多い順に並べたものです。アカウントはプロバイダーより細かい次元です。同じプロバイダーに複数のアカウントを登録でき、転送時は優先度に沿って候補チェーンを順に試すため、ここには「具体的にどのログイン状態が処理を担っているか」が反映されます。パーセントはこの期間の総 Token 数に対して計算します(このセクションは使用量のみを見ており、リクエスト数と成功率は概要カードにあります)。「不明なアカウント」とは、それらのリクエストにアカウントの身元がない場合です。既定のログイン状態で転送する場合(アカウント一覧が未設定)にこうなります。この次元が実装される前に書き出された古い集計行にもアカウント明細はありませんが、それらは旧データのアップグレード取り込み時に明細から自動で再計算されます —— 明細が手動でクリアされた日ぶんだけは再計算できず、「不明なアカウント」に残り続けます。それは本当に復元しようのない部分です。", "所选范围内还没有提供商用量": "選択期間内にプロバイダー使用量がまだありません", "所选范围内还没有模型用量": "選択期間内にモデル使用量がまだありません", "所选范围内还没有请求记录": "選択期間内にリクエスト記録がまだありません", "所选范围内还没有账号用量": "選択期間内にアカウント使用量がまだありません", "折线": "折れ線", "报表时间范围": "レポートの期間", "按 Token 用量从多到少排列,扇区角度表示占比。占比不低于 3% 的扇区显示百分比,所有项目的完整读数保留在右侧列表与悬停提示中。": "Token 使用量の多い順に並び、扇形の角度が割合を表します。3%以上の扇形には割合を表示し、すべての項目の詳細な数値は右の一覧とホバー表示で確認できます。", "按 Token 统计": "Token 基準", "按天 Token 趋势": "日別 Token トレンド", "按日统计": "日別集計", "按本地整点统计": "ローカル時刻の毎正時単位", "按本地整点,无请求的整点不标注": "ローカル時刻の毎正時単位。リクエストがない正時はラベルを表示しません", "按每条请求的软件标识和识别规则统计,不依赖 API Key,也不代表设备或用户数。待确认的软件统一计入“其它”;规则修改不重新归类历史请求。": "統計は各リクエストのソフトウェア識別情報とルールに基づき、API Keyには依存しません。端末数やユーザー数ではありません。未確認のソフトウェアは「その他」に集計され、ルール変更で過去のリクエストを再分類することはありません。", "提供商用": "プロバイダー使用量", "提供商用占比": "プロバイダー使用量の割合", "提供商用量": "プロバイダー使用量", "提供商用量占比": "プロバイダー使用量の割合", "提供商:{text}": "プロバイダー:{text}", "收起其他明细": "その他の明細を折りたたむ", "方格为本地自然日,无请求显示为空槽": "マスはローカルの暦日で、リクエストがない日は空のマスとして表示", "无请求的整点按 0% 计,但不写读数": "リクエストがない正時は 0% として扱いますが、値は表示しません", "日": "日", "日均": "1日平均", "日均 {value}": "1日平均 {value}", "时间范围。「今天」是本地自然日今天 0 点到现在;「昨天」是昨天一整天(0 点到 24 点);「近 7 天 / 近 30 天」含今天在内往前数,即今天与之前的 6 / 29 天,不是「不含今天的 7 / 30 天」。": "期間。「今日」はローカル日付の今日 0 時から現在まで、「昨日」は昨日の丸一日(0 時から 24 時まで)。「直近 7 日 / 直近 30 日」は今日を含めて遡った日数で、今日とその前 6 / 29 日を指します(今日を除く 7 / 30 日ではありません)。", "昨天": "昨日", "暂无热力图数据": "ヒートマップのデータがありません", "暂无缓存趋势数据": "キャッシュトレンドのデータがありません", "暂无趋势数据": "トレンドのデータがありません", "最近整点命中率": "直近1時間枠のヒット率", "最近请求": "最近のリクエスト", "未知模型": "不明なモデル", "本月": "今月", "查看用量、调用来源与缓存表现": "使用量、リクエスト元、キャッシュの状況を確認", "柱状": "棒グラフ", "模型与提供商共用此设置": "モデルとプロバイダーのグラフに共通の設定", "模型用量": "モデル使用量", "模型用量占比": "モデル使用量の割合", "每天的总 Token 用量(输入 + 输出)。柱顶标出当天的读数;区间很长、柱子挤到放不下时只标最高的那几天,其余悬停柱子即可读到。": "日ごとの総 Token 使用量(入力 + 出力)。棒の上にその日の値を表示します。期間が長く棒が密集して収まらない場合は最も高い数日だけを表示し、残りは棒にホバーすると確認できます。", "活跃天数": "アクティブ日数", "活跃热力图": "アクティビティヒートマップ", "用量分布": "使用量の内訳", "用量趋势": "使用量の推移", "的项目合并为“其他”": "未満の項目を「その他」にまとめる", "筛选统计项目": "集計項目を絞り込み", "累计": "累計", "累计请求 {n} 条": "累計リクエスト {n} 件", "结束日期": "終了日", "结束日期(含当天)": "終了日(当日を含む)", "统计报表": "使用状況レポート", "统计概览": "統計概要", "缓存命中率": "キャッシュヒット率", "缓存读取属于输入读数,不额外计入总 Token": "キャッシュ読み取りは入力の一部であり、総 Token に重複加算しません", "缓存读取属于输入,不重复计入总 Token": "キャッシュ読み取りは入力の一部で、総 Token に重複加算しません", "自定义区间": "カスタム期間", "请求日志只展示仍保留的明细;清理明细不会减少日报中的历史用量。": "リクエストログには保存されている明細だけを表示します。明細を削除しても日次レポートの過去の使用量は減りません。", "读取 {hit} ÷ 输入 {input}": "キャッシュ読み取り {hit} ÷ 入力 {input}", "读取报表失败:{error}": "レポートの読み込みに失敗しました:{error}", "起始日期(含当天)": "開始日(当日を含む)", "输入": "入力", "输入 + 输出": "入力 + 出力", "输入 Token": "入力 Token", "输出": "出力", "输出 Token": "出力 Token", "运行中": "実行中", "近 1 小时": "直近 1 時間", "近 10 分钟": "直近 10 分", "近 24 小时": "直近 24 時間", "近 24 小时缓存命中率与总 Token 趋势": "直近 24 時間のキャッシュヒット率と総 Token のトレンド", "近 24 小时缓存命中率趋势": "直近 24 時間のキャッシュヒット率トレンド", "近 30 天": "直近 30 日", "近 365 天 · 不随上方日期筛选变化": "直近365日 · 上の日付フィルターとは独立", "近 365 天活跃热力图": "直近 365 日のアクティビティヒートマップ", "近 365 天,按天 Token 用量着色(档位按本窗口峰值自动定)": "直近 365 日を日別 Token 使用量で色分け(段階はこのウィンドウのピークに応じて自動決定)", "近 7 天": "直近 7 日", "饼图不合并小项": "すべての扇形を表示", "饼图小于 {threshold}% 归入其他": "{threshold}% 未満をその他に集約", "饼图显示": "円グラフ表示", " · ": " · ", " · {n} 个账号今日重试已用完": " · {n} 件は本日の再試行回数を使い切りました", " · 补签在主签到区间结束后执行": " · メイン時間帯の終了後に補完します", "AgentArts 服务声明": "AgentArts サービス声明", "MiniMax Code 国内版每日签到 · 同地区签名账号接口读取七日面板并领取今日积分;已领取不重复领,奖励以官方返回为准": "MiniMax Code 中国版の毎日チェックイン · 同地域の署名付きアカウント API で 7 日間のパネルを読み、今日のポイントを受け取ります。受け取り済みは再取得せず、報酬は公式の応答に従います。", "MiniMax Code 国际版每日签到 · 同地区签名账号接口读取七日面板并领取今日积分;已领取不重复领,奖励以官方返回为准": "MiniMax Code 国際版の毎日チェックイン · 同地域の署名付きアカウント API で 7 日間のパネルを読み、今日のポイントを受け取ります。受け取り済みは再取得せず、報酬は公式の応答に従います。", "QuWork 每日奖励:先查询领取状态,再领取并回查;结果不明时不重复提交。": "QuWork 日次報酬:受け取り前に状態を確認し、その後に結果を確認します。不明な結果は再送信しません。", "SOLO 的 checkin_credits 领取 · 按自然日 0 点刷新": "SOLO の checkin_credits 受け取り · 自然日 0 時に更新", "Sonus 等限时活动 · 资格、额度和有效期以官方返回为准": "Sonus などの期間限定キャンペーン · 対象条件、クレジット数、有効期間は公式の応答に準じます", "UMID 组件安装失败:{error}": "UMID コンポーネントのインストールに失敗しました:{error}", "UMID 组件已安装,可重新签到。": "UMID コンポーネントをインストールしました。再度チェックインできます。", "UMID 组件管理接口不可用,请刷新页面或更新网关。": "UMID コンポーネント管理 API を利用できません。ページを再読み込みするか、ゲートウェイを更新してください。", "WorkBuddy 国内版 · 查询任务树后一键点亮 / 领奖 · 含开学季与猫猫旅行 · 点击行展开明细": "WorkBuddy 中国版 · タスクツリーを照会してワンクリックで点灯/受け取り · 新学期イベントとねこ旅行を含む · 行をクリックで詳細", "WorkBuddy 国际版保活模型,按顺序回退": "WorkBuddy 国際版のキープアライブ用モデル(順番にフォールバック)", "WorkBuddy 国际版日活任务的免费模型 · 全局一份,与条目无关": "WorkBuddy国際版のデイリーアクティビティ用の無料モデル · 全体で1つの設定、スケジュールとは無関係", "ZCode 自动领取验证": "ZCode 自動受け取りの認証", "{date}(每天 {time})": "{date}(毎日 {time})", "{done} / {total} 个账号已签": "{total} 件中 {done} 件がチェックイン済み", "{done}/{total} 已签": "{done}/{total} チェックイン済み", "{label} ×{count}({reason})": "{label} ×{count}({reason})", "{name}定时补签开关": "{name}の定期補完スイッチ", "{name}签到时间": "{name}のチェックイン時刻", "{n} 个平台": "{n} プラットフォーム", "{n} 个平台 · {groups} 组签到时间": "{n} プラットフォーム · {groups} 組の時刻", "{n} 个计划 · 北京时间 UTC+8": "{n} 件のスケジュール · 北京時間 UTC+8", "{n} 个账号今天的重试次数已用完": "{n} 件のアカウントは本日の再試行回数を使い切りました", "{n} 个账号等待窗口或活动": "{n} アカウントが受付時間またはイベントを待機中", "{n} 积分": "{n} ポイント", "{n} 项可完成": "完了可能 {n} 件", "{n} 项待领": "{n} 件受け取り待ち", "{points} 积分": "{points} ポイント", "{total} 账号 · {done} 已签": "{total} アカウント · {done} チェックイン済み", "{total} 项任务 · {pending} 项可完成": "タスク {total} 件 · 完了可能 {pending} 件", "✅ UMID 组件已安装,下轮签到即可领取国际版积分": "✅ UMID コンポーネントをインストールしました。次回のチェックインで国際版の積分を受け取れます", "✅ {message}": "✅ {message}", "✅ 定时签到已开启": "✅ 定期チェックインを有効にしました", "✅ 开学季任务执行完成": "✅ 新学期タスクの実行が完了しました", "✅ 成长任务执行完成:积分 +{credit} 能量 +{energy}": "✅ 成長タスク完了:クレジット +{credit} エネルギー +{energy}", "✅ 新手福利领取完成": "✅ 初心者ボーナスの受け取りが完了しました", "✅ 新手福利领取完成,累计 {n} 积分": "✅ 初心者ボーナスの受け取りが完了しました。累計 {n} 積分", "✅ 签到完成:{succeeded}/{total} 个账号成功领取{active}": "✅ チェックイン完了:{succeeded}/{total} 件のアカウントが受け取りに成功{active}", "「保活模型链」是 WorkBuddy 国际版领日活时用来保活的免费模型,按顺序逐个尝试、 第一个成功即止;清空提交恢复缺省({defaults})。 当天去重 + 幂等领取:重复执行只会拿到「已领取」,不会重复加分。": "「キープアライブモデルチェーン」は、WorkBuddy国際版のデイリーアクティビティでアカウントを活性化し続けるための無料モデルです。順に試し、最初の成功で止まります。空で送信すると既定({defaults})に戻します。当日の重複排除+冪等な受け取り:再実行しても「受取済み」が返るだけで、ポイントが二重に加算されることはありません。", "「保活模型链」是 WorkBuddy 国际版领日活时用来保活的免费模型,按顺序逐个尝试、 第一个成功即止;清空清单并保存 = 恢复缺省链(当前缺省:{defaults})。 当天去重 + 幂等领取:重复执行只会拿到「已领取」,不会重复加分。": "「キープアライブモデルチェーン」は、WorkBuddy国際版のデイリーアクティビティでアカウントを活性化し続けるための無料モデルです。順に試し、最初の成功で止まります。リストを空にして保存すると既定のチェーン(現在の既定:{defaults})に戻ります。当日の重複排除+冪等な受け取り:再実行しても「受取済み」が返るだけで、ポイントが二重に加算されることはありません。", "「免费领积分」的每日任务 · 逐个领取": "「無料積分受け取り」のデイリータスク · 1 つずつ受け取る", "一次性福利 · 已领取状态保存在网关,领完无需重复查询 · 点击行展开任务清单": "一度きりの特典 · 受け取り状態はゲートウェイに保存され、受け取り後の再照会は不要です · 行をクリックしてタスク一覧を展開", "一次性福利 · 签到后自动查询并领取,领完记在本机不再查上游 · 点击行展开任务清单": "一度きりの特典 · チェックイン後に自動で照会して受け取り、受け取り済みは本機に記録し以降はアップストリームに問い合わせません · 行をクリックしてタスク一覧を展開", "一次性福利已全部结清": "一回限りの特典はすべて受け取り済みです", "一次性福利已结清": "一回限りの特典は受け取り済みです", "一次性福利已结清,无需重复查询": "一度きりの特典は受け取り済みです。再照会は不要です", "一次领当天全部奖励(每日签到 + 新人礼) · 幂等由上游保证": "その日の報酬を一度にまとめて受け取ります(毎日チェックイン+新規特典) · 冪等性はアップストリームが保証", "一键安装组件": "ワンクリックでインストール", "一键完成": "一括完了", "一键领取({n})": "一括受け取り({n})", "上一轮({time}):{n} 个动作,+{credit} 积分": "前回({time}):{n} 件のアクション、+{credit} クレジット", "上次执行:{line}": "前回実行:{line}", "上次签到时间": "前回のチェックイン時刻", "上次领取 {time} · 领取需通过滑块验证码": "前回の受け取り {time} · 受け取りにはスライダー認証が必要", "下一账号:{time}": "次のアカウント:{time}", "下次 {date}": "次回 {date}", "下次 {date} · 点此管理条目": "次回 {date} · クリックしてスケジュールを管理", "下次检查:{time}": "次回確認:{time}", "下次自动执行": "次回の自動実行", "不参与每日签到:{list}。CodeArts 的一次性奖励在下方「新手福利」,它与 ZCode 的每日/套餐福利领取见「活动福利」。": "デイリーチェックインの対象外:{list}。CodeArts の一度きりの特典は下の「初心者ボーナス」に、CodeArts と ZCode の日次/プラン特典の受け取りは「アクティビティ特典」にあります。", "不参与每日签到:{list}。CodeArts 的一次性奖励在下方「新手福利」,它的每日福利就在上方「每日签到」里;ZCode 的套餐领取见「活动福利」。": "デイリーチェックインの対象外:{list}。CodeArts の一度きりの特典は下の「初心者ボーナス」、CodeArts のデイリー特典はすぐ上の「デイリーチェックイン」にあります。ZCode のプラン受け取りは「アクティビティ特典」です。", "不参与签到": "チェックイン対象外", "不可领": "受け取り不可", "不自动重试等待中的活动": "待機中のイベントを自動再試行しません", "不适用": "対象外", "与国内版同一套任务接口 · 站点不同": "中国版と同じタスク API · サイトが異なる", "与国内版同一套链路 · 站点不同、令牌不通用": "中国版と同じ経路 · サイトが異なりトークンは相互利用不可", "与定时补签不同,仅处理窗口未开或活动暂未下发。": "定期補完とは異なり、受付開始前または未配信のイベントのみを処理します。", "与新人积分独立,不购买付费套餐、不自动续费": "新規ユーザーポイントとは独立しています。有料プランの購入や自動更新は行いません。", "专属或自定义时间作为区间起点,沿用默认区间长度;每天重新随机,重启不改变当天安排。": "専用またはカスタム時刻を開始時刻とし、既定の時間帯の長さを使います。毎日ランダムに割り当て、再起動しても当日の予定は変わりません。", "个账号不参与": "アカウントは対象外", "主签到区间结束后等待 {n} 分钟": "メイン時間帯の終了後 {n} 分待機", "主签到后等待 {n} 分钟": "メインチェックイン後 {n} 分待機", "主签到后等待(分钟)": "メインチェックイン後の待機(分)", "主签到已执行": "メインチェックイン実行済み", "主签到已执行不等于每个账号都已领取成功;账号结果请查看签到记录。": "メイン実行済みでも全アカウントの受け取り成功を意味しません。結果はチェックイン記録をご確認ください。", "仅处理窗口未开或活动暂未下发的账号,不对所有错误反复执行。": "受付開始またはイベント配信を待つアカウントのみ再試行し、すべてのエラーを繰り返しません。", "仅开通官方报价为 0 元的个人体验套餐,固定关闭自动续费;奖励另行领取": "公式価格が 0 元の個人体験プランのみを、自動更新を無効にして有効化します。報酬は別途受け取ります。", "仅提交你填写的权益,不购买套餐;兑换码激活可能需要原客户端的设备标识。": "入力した特典のみを引き換え、プランは購入しません。コードの有効化に元のクライアントのデバイス識別情報が必要な場合があります。", "今天 · 北京时间自然日": "今日 · 北京時間の暦日", "今天不再自动重试,明天自动重置。要现在再试一次,用签到计划里的「立即执行」。": "これらのアカウントは本日これ以上自動再試行しません。カウンターは明日リセットされます。今すぐもう一度試すには、チェックイン計画の「今すぐ実行」を使ってください。", "今天已执行:{list}": "本日の実行済み:{list}", "今天已领 {n} 份": "本日 {n} 件受け取り済み", "今天未领": "本日は未受取", "今天(北京时间 {day})已领取 · 官方确认到账 {n} 项 · 明天可再领": "本日(北京時間 {day})受け取り済み · 公式に {n} 件の到着を確認 · 明日また受け取れます", "今日主签到": "本日のメインチェックイン", "今日已执行": "本日実行済み", "今日已派出": "本日は出発済み", "今日已签": "本日チェックイン済み", "今日已领取": "本日受け取り済み", "今日已领取豆包工作签到奖励,已由官方确认": "豆包工作の本日のチェックイン報酬は受け取り済みで、公式サービスによる確認も完了しています。", "今日签到": "本日のチェックイン", "今日签到任务尚未满足领取条件": "本日のチェックインタスクは、まだ報酬の受け取り条件を満たしていません。", "今日签到进度": "本日のチェックイン進捗", "从清单里移除": "リストから削除", "例如:每日自动签到": "例:毎日の自動チェックイン", "保存计划": "スケジュールを保存", "保活": "キープアライブ", "保活 API Key 已保存": "キープアライブ用 API Key を保存しました", "保活 {n}": "キープアライブ {n}", "保活+领取": "キープアライブ+受け取り", "保活中…": "キープアライブ中…", "保活模型链": "キープアライブモデルチェーン", "保活模型链为全局配置,猫猫旅行有独立的开关与时刻。": "キープアライブモデルチェーンは全体設定です。ねこ旅行のスイッチと時刻は独立しています。", "先创建签到计划,再为它设置定时补签。": "先にチェックインスケジュールを作成し、その定期補完を設定してください。", "先查询活动,再选择要领取的奖励;不会购买或订阅套餐": "キャンペーンを照会してから、受け取る報酬を選んでください。プランの購入や契約は行いません。", "免费体验套餐": "無料体験プラン", "免费套餐已开通并确认生效": "無料プランを有効化し、適用を確認しました", "兑换中…": "引き換え中…", "兑换权益": "特典を引き換え", "兑换结果待确认,请到官方客户端核对;不会重复提交": "引き換え結果は確認待ちです。公式クライアントで確認してください。重複送信はしません。", "兑换请求未得到确认,请到官方客户端核对;不要重复提交": "引き換え要求を確認できませんでした。公式クライアントで確認し、再送信しないでください。", "全选": "すべて選択", "全部 {n} 家": "全 {n} 社", "全部完成": "すべて完了", "全部查询": "一括クエリ", "全部签到": "一括チェックイン", "全部类型": "すべての種類", "全部结果": "すべての結果", "全部账号均可签到": "すべてのアカウントがチェックイン可能", "全部领取": "すべて受け取る", "关着:不自动巡检(仍可手动巡检)": "オフ:自動巡回しません(手動巡回は可能)", "关着:所有条目都不执行": "オフ:どのスケジュールも実行されません", "关闭活动窗口重试不会关闭定时补签。插件提供下次重试时刻时,以插件返回的时间为准。": "受付時間の再試行を無効にしても定期補完は無効になりません。プラグインが次回時刻を返した場合はその時刻を使います。", "其他自动任务": "その他の自動タスク", "凭证不可用": "認証情報を利用できません", "凭证需刷新": "認証情報の更新が必要", "切换任务后,左侧只保留有账号的提供商": "タスクを切り替えると、左側にはアカウントのあるプロバイダーだけが表示されます", "删除失败:{error}": "削除に失敗しました:{error}", "删除定时条目": "スケジュールを削除", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活并在网页通道建会话点亮日活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;CodeArts 领当日的运营福利(领取 → 确认 → 回读核实,自动执行受每天 6 次 / 间隔 10 分钟的写请求限流);OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "時刻になると、チェックを入れたプロバイダーの利用可能なアカウントを自動でチェックインします(WorkBuddy 国内版は毎日チェックイン API、国際版はデイリーアクティブクエスト:イベントを探し、デイリーアクティブ報酬を受け取り、無料モデルでキープアライブし、Web チャネルでセッションを張って日次アクティブを点灯。小浣熊はデスクトップの日次ポイント経路。AutoClaw は公式クライアントの毎日チェックインタスク。Qoder 中国版はイベント受領で、イベントを付与されていないアカウントは中立的な通知を受け取ります。Qoder 国際版はデバイスのリスク管理 ID(ローカル Qoder クライアント / qodercli の UMID コンポーネントが生成)を持たないと「毎日 100 Credits」イベントが表示されず、コンポーネントがなければエラーではなく明確な説明が返ります。Trae は SOLO の毎日チェックインポイントを受け取り(0 時リセット)、上流がイベントを用意していない、または認証情報にデバイス ID がない場合は「未受領 + 理由」が返ります。Loomy は毎日 1 回初回ログインポイントを付け、KukuAI は「無料ポイント」の日次タスクを受け取り、CodeArts は当日の運営特典を受け取ります(受領 → 確認 → 再読で検証。自動実行は 1 日 6 回 / 10 分間隔の書き込みレート制限内)。OfficeAce はその日の特典を一括で受け取ります(毎日チェックイン + 新規特典))。時刻を逃しても起動時に自動で追補するため、電源が入っていなくても取りこぼしません。各社のチェックイン API は冪等で、繰り返しても二重受け取りにはなりません。", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;CodeArts 领当日的运营福利(领取 → 确认 → 回读核实,自动执行受每天 6 次 / 间隔 10 分钟的写请求限流);OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "時刻になると、チェックしたプロバイダーの利用可能なアカウントを自動でチェックインします(WorkBuddy 中国版はデイリーチェックイン API、国際版はデイリーアクティブタスク:イベントを検出して日活報酬を受け取り、無料モデルでキープアライブ。小浣熊はデスクトップ版のデイリー積分経路。AutoClaw は公式クライアントのデイリーチェックインタスク。Qoder 中国版はイベント受け取りで、イベントが配信されていないアカウントには中立的な案内が出ます。Qoder 国際版はデバイスリスク制御 ID(本機の Qoder クライアント / qodercli の UMID コンポーネントで生成)を付けて初めて「毎日 100 Credits」イベントが見えるようになり、コンポーネントが欠けている場合はエラーではなく明確な説明が出ます。Trae は SOLO のデイリーチェックイン積分を受け取り(自然日 0 時にリセット)、アップストリームがそのアカウントにイベントを開いていない場合や認証情報にデバイス ID がない場合は、エラーではなく「未受け取り + 具体的な理由」が返ります。Loomy は毎日アカウントの初回ログイン積分を 1 回付与します。KukuAI は「無料積分受け取り」のデイリータスクを消化します;CodeArts はその日の運営特典を受け取ります(受け取り → 確認 → 読み戻し検証。自動実行は 1 日 6 回・間隔 10 分の書き込み制限を受けます);OfficeAce はその日の報酬を一度の操作でまとめて受け取ります(毎日チェックイン+新規特典))。時刻を逃しても、起動後に自動で補完チェックインされ、当時電源が入っていなかったことを理由に漏れることはありません。各社のチェックイン API はすべて冪等なので、繰り返し実行しても二重に受け取ることはありません。", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "時刻になると、チェックしたプロバイダーの利用可能なアカウントを自動でチェックインします(WorkBuddy 中国版はデイリーチェックイン API、国際版はデイリーアクティブタスク:イベントを検出して日活報酬を受け取り、無料モデルでキープアライブ。小浣熊はデスクトップ版のデイリー積分経路。AutoClaw は公式クライアントのデイリーチェックインタスク。Qoder 中国版はイベント受け取りで、イベントが配信されていないアカウントには中立的な案内が出ます。Qoder 国際版はデバイスリスク制御 ID(本機の Qoder クライアント / qodercli の UMID コンポーネントで生成)を付けて初めて「毎日 100 Credits」イベントが見えるようになり、コンポーネントが欠けている場合はエラーではなく明確な説明が出ます。Trae は SOLO のデイリーチェックイン積分を受け取り(自然日 0 時にリセット)、アップストリームがそのアカウントにイベントを開いていない場合や認証情報にデバイス ID がない場合は、エラーではなく「未受け取り + 具体的な理由」が返ります。Loomy は毎日アカウントの初回ログイン積分を 1 回付与します。KukuAI は「無料積分受け取り」のデイリータスクを消化します;OfficeAce はその日の報酬を一度の操作でまとめて受け取ります(毎日チェックイン+新規特典))。時刻を逃しても、起動後に自動で補完チェックインされ、当時電源が入っていなかったことを理由に漏れることはありません。各社のチェックイン API はすべて冪等なので、繰り返し実行しても二重に受け取ることはありません。", "到点待执行": "時刻到達・実行待ち", "到点时逐个签到,已勾 {n} / {total} 家": "定刻に 1 社ずつチェックインします。選択 {n} / {total} 社", "北京时间 · 已启用 {n} 个签到计划": "北京時間 · {n} 件のチェックインが有効", "北京时间 · 每天重复 · 随设置更新": "北京時間 · 毎日繰り返し · 設定に合わせて更新", "北京时间 · 逗号分隔 · 最多 6 条 · 到点后最多晚 30 秒执行;错过时点开机后会补跑一轮。": "北京時間 · カンマ区切り · 最大6件 · 定刻から最大30秒遅れて実行。時刻を逃した場合は起動後に1回だけ追い実行します。", "北京时间 · 错过区间会补跑未执行账号,重启保留当天安排;任务在网关执行,关闭手机不影响排程。": "北京時間 · 時間帯を逃した場合は未実行のアカウントを補完し、再起動しても当日の予定を保持します。タスクはゲートウェイで実行され、モバイルアプリを閉じても予定に影響しません。", "北京时间 · 错过时点开机后会自动补签": "北京時間 · 起動時に自動で補完します", "区间内陆续签到": "時間帯内で順次チェックイン", "区间结束后等待(分钟)": "時間帯終了後の待機(分)", "单账号签到不受范围限制": "アカウント単体のチェックインは対象範囲に制限されません", "原套餐已到期或冻结,请在官方客户端处理;这里不会续费或变更套餐": "既存のプランは期限切れまたは凍結中です。公式クライアントで管理してください。ここでは更新やプラン変更は行いません。", "去插件页安装签到能力": "プラグインページでチェックイン機能をインストール", "去领取": "受け取りへ", "发放中": "付与中", "发放失败": "付与失敗", "取消验证": "認証をキャンセル", "另有 {n} 个账号不参与": "他に {n} 件のアカウントは対象外です", "另有 {n} 个账号不参与每日签到": "ほかにデイリーチェックインの対象外のアカウントが {n} 件", "只列当前任务里有账号的提供商。": "現在のタスクにアカウントがあるプロバイダーのみ表示します。", "只重试这些账号,不会重签整个计划。具体原因见签到记录。": "これらのアカウントのみ再試行します。全体は再実行しません。理由は記録をご確認ください。", "只领取已完成任务的奖励(幂等,重复点不会重复入账)": "完了済みタスクの報酬のみ受け取り(冪等・連打しても二重加算されません)", "可使用管理员凭据调用:": "管理者の認証情報を使って次の API を呼び出せます:", "可完成": "完了可能", "可派出": "出発可能", "可选 · 缺省显示时刻": "任意 · 未指定では時刻を表示", "可领": "受け取り可能", "可领奖": "受け取り可能", "各家区间起点": "各プロバイダーの開始時刻", "同时控制定时签到、定时补签和活动窗口重试;猫猫旅行独立运行。": "定期チェックイン・定期補完・受付時間の再試行をまとめて制御します。ねこ旅行は独立しています。", "后端未返回 UMID 组件安装结果": "バックエンドが UMID コンポーネントのインストール結果を返しませんでした", "后端未返回 UMID 组件状态": "バックエンドが UMID コンポーネントの状態を返しませんでした", "后端未返回定时签到数据": "バックエンドがスケジュールデータを返しませんでした", "后端未返回巡检结果": "バックエンドが巡回結果を返しませんでした", "后端未返回新手福利数据": "バックエンドが初心者ボーナスのデータを返しませんでした", "后端未返回有效的套餐状态": "ゲートウェイから有効なプラン状態が返されませんでした", "后端未返回权益兑换结果": "ゲートウェイから引き換え結果が返されませんでした", "后端未返回活动福利数据": "ゲートウェイからキャンペーン特典データが返されませんでした", "后端未返回签到中心数据": "バックエンドがチェックインセンターのデータを返しませんでした", "启用的计划在各自区间内随机签到": "有効なスケジュールは各時間帯内でランダムに実行します", "启用签到计划 {name}": "チェックインスケジュール {name} を有効化", "国际版签到需要 UMID 组件生成设备风控身份(本机未检测到)。": "国際版のチェックインには、UMID コンポーネントで生成するデバイスリスク制御 ID が必要です(本機では検出されませんでした)。", "在桌面端设置": "デスクトップ版で設定", "在途": "旅行中", "基本设置": "基本設定", "填入缺省链": "既定のチェーンを入力", "填写你已有的兑换码或订单号": "お持ちのコードまたは注文番号を入力", "填好时刻与签到范围后点「保存」;名称可以留空(界面显示时刻)": "時刻と範囲を決めて「保存」を押してください。名前は空欄でも構いません(空欄なら時刻を表示)", "失败 {n}": "失敗 {n}", "奖励与权益 · 资格、额度和有效期以官方返回为准": "報酬と特典 · 対象条件、クォータ、有効期間は公式の応答に従います", "套餐已冻结": "プラン凍結中", "套餐已到期": "プラン期限切れ", "套餐已开通,无需重复操作": "プランはすでに有効です。再操作は不要です。", "套餐明细": "プラン明細", "套餐查询凭证已过期,请先到账号页刷新凭证;此查询不会自动续期": "プラン照会の認証情報が期限切れです。先にアカウントページで更新してください。この照会では認証情報を自動更新しません。", "套餐领取": "プラン受け取り", "安装 Qoder 客户端或 qodercli 后即可(无需重启网关)。": "Qoder クライアントまたは qodercli をインストールすれば利用できます(ゲートウェイの再起動は不要)。", "安装中…": "インストール中…", "安装后仍未检测到 UMID 组件,请重新检查。": "インストール後も UMID コンポーネントを検出できません。再確認してください。", "官方客户端的每日签到任务": "公式クライアントのデイリーチェックインタスク", "官方拒绝套餐查询,请检查账号授权;这不一定表示 Token 已过期": "公式サービスがプラン照会を拒否しました。アカウントの認可を確認してください。必ずしもトークンの期限切れではありません。", "官方显示自动续费已开启,请到官方客户端检查": "公式サービスでは自動更新が有効と表示されています。公式クライアントで確認してください。", "官方未返回明确的套餐状态,暂不能开通": "公式サービスから明確なプラン状態が返されなかったため、現在は有効化できません。", "定时签到": "定期チェックイン", "定时签到和定时补签分开管理。补签沿用对应签到计划的平台范围,不重复领取已完成的账号。": "定期チェックインと補完は別々に管理します。補完は対応するスケジュールの対象を使い、完了済みアカウントは再受領しません。", "定时签到已关闭": "定期チェックインを無効にしました", "定时补签": "定期補完", "实际发放:{time}": "付与日時:{time}", "实际时间由网关计算,晚窗口的平台会顺延补签;只处理当天未签到账号。": "実際の時刻はゲートウェイが計算します。受付が遅い場合は補完も後になり、本日未チェックインのアカウントのみ処理します。", "实际签到安排": "実際のチェックイン予定", "实际补签": "実際の補完", "实际补签取「主签到时间加等待间隔」与「补签不早于」中较晚的时刻。": "補完は「メイン時刻+待機間隔」と「補完の開始下限」の遅い方に実行します。", "对应主签到:{times}": "対応メインチェックイン:{times}", "对应签到计划 · 沿用 {n} 个平台范围,只补未签到账号": "対応スケジュール · 同じ {n} 対象、本日未完了のみ", "对应签到计划:{name}": "対応チェックインスケジュール:{name}", "尚未开始": "未開始", "尚未开通套餐,可开通免费体验套餐": "プランはまだ有効ではありません。無料体験プランを有効にできます。", "尚未执行": "未実行", "尚未查询": "未照会", "尚未查询任务状态": "タスク状態は未クエリ", "尝试领取": "受け取りを試す", "展开": "展開", "巡检一次": "1 回実行", "巡检中…": "巡回中…", "巡检失败:{reason}": "巡回に失敗しました:{reason}", "已保存:{label}": "保存しました:{label}", "已保存:保活模型链": "保存しました:キープアライブモデルチェーン", "已保存:定时条目": "保存しました:スケジュール", "已保存:猫猫旅行排程": "保存しました:猫猫旅行スケジュール", "已全部领取": "すべて受け取り済み", "已删除定时条目": "スケジュールを削除しました", "已发放": "付与済み", "已完成活跃上报(连登已点亮),但活动未开启(本次没有可领的奖励)": "アクティビティを報告しました(連続ログイン達成)が、キャンペーンは未実施です(今回の報酬はなし)", "已就绪": "準備完了", "已开始批量签到": "一括チェックインを開始しました", "已开通": "有効", "已得 {earned} / {total} 积分": "{earned} / {total} ポイント獲得", "已执行 {n} / {total} 个平台": "{n} / {total} 対象を実行済み", "已执行 {n} / {total} 个账号": "{n} / {total} アカウント実行済み", "已抽 {n} 次": "{n} 回抽選しました", "已提交「{label}」的签到": "「{label}」のチェックインを送信しました", "已暂停": "一時停止中", "已有结果 {checked} / 共 {total} 个账号": "結果あり {checked} / 全 {total} アカウント", "已查 {checked} / {total} 个账号": "{total} 件中 {checked} 件を確認済み", "已确认不自动续费": "自動更新が無効であることを確認済み", "已确认领取": "受取確認済み", "已签": "チェックイン済み", "已签到自动跳过": "チェックイン済みは自動スキップ", "已结束": "終了", "已选 {n} / {total} 个平台": "{n} / {total} 対象を選択", "已领 {claimed}/{total} · 累计 {earned} 积分": "受け取り済み {claimed}/{total} · 累計 {earned} 積分", "已领 {done} / {total} 份套餐": "プラン {done} / {total} 件受け取り済み", "已领养": "飼い主になりました", "已领取": "受け取り済み", "已领取「{name}」": "「{name}」を受け取りました", "带设备风控身份领取「每日 100 Credits」 · 需要 UMID 组件": "デバイスリスク制御 ID を付けて「毎日 100 Credits」を受け取り · UMID コンポーネントが必要", "平台与签到时间": "プラットフォームと時刻", "平台与随机签到区间": "プラットフォームとランダム実行の時間帯", "平台专属": "専用", "平台专属时间": "プラットフォーム専用時刻", "平台专属时间由网关提供。自定义时间会覆盖专属时间,提前执行可能遇到窗口未开。": "専用時刻はゲートウェイから取得します。カスタム時刻が優先され、早すぎると受付開始前になる場合があります。", "平台批次": "対象グループ", "开关": "スイッチ", "开启定时补签": "定期補完を有効化", "开启活动窗口重试": "受付時間の再試行を有効化", "开始 {time}": "開始 {time}", "开学季执行失败:{error}": "新学期の実行に失敗:{error}", "开学季执行完成:{message}": "新学期の実行が完了:{message}", "开学季活动": "新学期イベント", "开着:启用的条目按各自时刻执行": "オン:有効なスケジュールがそれぞれの時刻に実行されます", "开着:按下面的时刻自动巡检": "オン:以下の時刻に自動巡回します", "开通中…": "有効化中…", "开通免费套餐": "無料プランを有効化", "开通未得到确认,请重新查询套餐状态;不会自动重试开通": "有効化を確認できませんでした。プランの状態を再確認してください。有効化は自動で再試行しません。", "开通结果待确认": "有効化の確認待ち", "开通请求仍在处理或结果待确认,请稍后查询,不要重复提交": "有効化を処理中、または結果を確認中です。後で再照会し、重複送信はしないでください。", "当前没有可领取的套餐": "現在受け取れるプランはありません", "当前没有等待窗口或活动下发的账号。": "受付開始やイベント配信を待つアカウントはありません。", "当前活动未提供每日签到任务": "現在のキャンペーンには毎日のチェックインタスクがありません。", "当前网关中,补签等待间隔与活动重试间隔共用;修改间隔会同步影响两者,开关与重试次数仍分别设置。": "現在のゲートウェイでは補完待機とイベント再試行の間隔を共用します。変更は両方に反映されますが、スイッチと回数は別設定です。", "当前账号暂不符合该活动的领取条件": "このアカウントは現在、この特典の受け取り条件を満たしていません", "当前账号未下发豆包工作签到活动,无需反复领取": "このアカウントには豆包工作のチェックインキャンペーンが提供されていません。受け取りを繰り返す必要はありません。", "待发放": "付与待ち", "待执行": "実行待ち", "待签": "未チェックイン", "待领取": "受け取り待ち", "待领新手福利": "受け取り待ちの初心者ボーナス", "总开关": "マスタースイッチ", "总开关已关闭": "全体スイッチはオフです", "总开关已关闭 · 在「定时签到」页打开": "マスタースイッチがオフです · 「定期チェックイン」タブで有効化してください", "成功 {n}": "成功 {n}", "成长任务": "成長タスク", "成长任务完成({done} 项成功、{failed} 项失败),积分 +{credit} 能量 +{energy}": "成長タスク完了(成功 {done} 件・失敗 {failed} 件):クレジット +{credit} エネルギー +{energy}", "成长任务执行失败:{error}": "成長タスクの実行に失敗:{error}", "我已阅读并同意以下服务声明,仅授权开通零元体验套餐,不自动续费": "以下のサービス声明を読み、同意します。0 元の体験プランの有効化のみを許可し、自動更新は行いません。", "所有时间按北京时间计算。每个账号每天随机安排一次,重启保留当天安排;错过区间时会补跑未执行账号。": "時刻はすべて北京時間です。各アカウントに毎日一つのランダムな時刻を割り当て、再起動しても保持します。時間帯を逃した場合は未実行のアカウントを補完します。", "所有时间按北京时间计算。网关启动后会补跑当天已到点、尚未执行的签到,不会提前执行未来时点。": "時刻はすべて北京時間です。起動後は本日到達済みの未実行分を補完し、未来の予定は早めに実行しません。", "手动签到": "手動チェックイン", "执行失败:{error}": "実行に失敗しました:{error}", "执行并抽奖": "実行して抽選", "执行开学季任务并抽空抽奖机会(分享 / 对话 / 专家事件)": "新学期タスクを実行し、抽選回数を使い切る(シェア/会話/エキスパートイベント)", "执行规则": "実行ルール", "把缺省链填进清单,再点「保存」生效": "既定のチェーンを一覧に入れます。「保存」で反映されます", "抽奖机会 {n} 次": "抽選チャンス {n} 回", "按住拖动调整顺序": "押したままドラッグで並べ替え", "按住拖动,调整这个模型在链里的顺序": "押したままドラッグして、チェーン内でのこのモデルの順序を変更します", "按序逐个尝试,共 {n} 个": "順番に試行、計 {n} 件", "按结果筛选": "結果で絞り込み", "授权被拒绝": "認可が拒否されました", "探测 + 领取 + 保活 · 与定时签到同一套组合": "検出 + 受け取り + キープアライブ · 定期チェックインと同じ組み合わせ", "探测活动并领取日活奖励 · 不做保活": "イベントを検出して日活報酬を受け取り · キープアライブは行わない", "接单 + 点亮 + 领奖(只处理已实测沉淀的任务)": "受注+点灯+受け取り(実測で検証済みのタスクのみ処理)", "插件未就绪,范围仍保留": "プラグイン未準備・対象は保持", "搜索平台": "プラットフォームを検索", "搜索签到平台": "チェックイン対象を検索", "搜账号 / 收益 / 错误 / 触发原因": "アカウント / 収益 / エラー / トリガー理由を検索", "收起": "折りたたむ", "收起平台": "対象を閉じる", "收起新建": "新規入力を閉じる", "新建定时条目": "新しい定時エントリ", "新建签到计划": "チェックインスケジュールを作成", "新手任务": "初心者タスク", "新手福利": "初心者ボーナス", "新手福利与活动": "初心者ボーナスとキャンペーン", "新手福利是一次性任务:领完就没了,重复点不会重复加分。": "初心者ボーナスは一回限りのタスクです。受け取ると終了し、何度押してもポイントは重複加算されません。", "新手福利有 {n} 项领取失败,可重试": "初心者ボーナスで {n} 件の受け取りに失敗しました。再試行できます", "新手福利领取失败 {n} 项": "初心者ボーナス {n} 件の受け取りに失敗しました", "新用户积分": "新規ユーザーポイント", "新计划默认开启补签和活动窗口重试;保存后可到「定时补签」页单独调整。": "新規スケジュールでは補完と再試行が既定で有効です。保存後に「定期補完」で別々に調整できます。", "无": "なし", "无独立签到接口 · 每天替账号打一次登录信息(即当日魔粒)": "専用のチェックイン API なし · 毎日アカウントのログイン情報を 1 回取得(当日の魔粒が付与される)", "无独立签到接口 · 每天替账号打一次首次登录积分": "専用のチェックイン API なし · 毎日アカウントの初回ログイン積分を 1 回付与", "无账号": "アカウントなし", "时刻": "時刻", "暂不可领": "受け取り不可", "暂不可领(未满足条件)": "まだ受け取れません(条件未達成)", "暂不支持": "未対応", "暂无可领取福利": "現在受け取れる特典はありません", "暂无启用的条目": "有効なエントリはありません", "暂无启用的条目 · 点此添加": "有効なスケジュールがありません · クリックして追加", "暂无月度赠送记录": "月次特典の記録はありません", "暂无活动": "開催中のキャンペーンなし", "最近执行:{time}": "最近の実行:{time}", "最近结果:成功 {n} · 保活 {active} · 失败 {failed}": "最近の結果:成功 {n} · 活性維持 {active} · 失敗 {failed}", "月度赠送": "月次特典", "有平台到点待执行": "時刻到達の実行待ちあり", "有未保存的改动": "未保存の変更があります", "未勾选提供商": "プロバイダー未選択", "未完成,请查看签到记录": "完了していません。チェックイン記録をご確認ください。", "未开启": "未有効", "未开通": "未有効化", "未执行开通,请查询套餐状态查看原因": "有効化は実行されませんでした。プランの状態を照会して理由を確認してください。", "未解锁": "未解禁", "未领养(领养需先完成当日对话量)": "未飼育(飼育には当日の会話量の達成が先に必要)", "未领取": "未受け取り", "本地台账里今天还没领过;活动期内每天发一份新套餐": "ローカルの記録では本日まだ受け取っていません。キャンペーン期間中は毎日新しいプランが 1 件配布されます", "本地台账里今天(北京时间)领过的套餐:{plans}": "ローカル記録で本日(北京時間)受け取ったプラン:{plans}", "本次签到结果的记录时间:{time}(本机时区)": "今回のチェックイン結果の記録時刻:{time}(ローカルタイムゾーン)", "本次自动领取未完成验证,请在套餐明细中手动领取": "今回の自動受け取りの認証が完了しませんでした。プラン詳細から手動で受け取ってください。", "本轮已跳过:{reason}": "今回の実行はスキップされました:{reason}", "权益兑换成功,重新查询可查看最新记录": "特典を引き換えました。再照会すると最新の記録を確認できます。", "权益兑换未成功": "特典の引き換えに失敗しました", "权益兑换码 / 订单号": "引き換えコード / 注文番号", "条启用": "件有効", "来源说明中的时刻是定时条目的名称或基准时刻,不是本次执行时间": "実行元の説明にある時刻はスケジュール名または基準時刻であり、今回の実行時刻ではありません", "果办免费体验套餐": "OfficeAce 無料体験プラン", "果办套餐接口不可用,请更新主程序和提供商插件": "OfficeAce のプラン API を利用できません。アプリ本体とプロバイダープラグインを更新してください。", "果办服务声明": "OfficeAce サービス声明", "查看平台": "対象を見る", "查看签到记录": "チェックイン記録を見る", "查询于 {time}": "{time} にクエリ", "查询任务": "タスクをクエリ", "查询任务树并一键点亮 / 领奖(含开学季与猫猫旅行)": "タスクツリーを照会してワンクリックで点灯/受け取り(新学期・ねこ旅行を含む)", "查询只读取套餐状态,点击开通后才会执行": "照会ではプランの状態のみ読み取ります。有効化ボタンを押した場合のみ実行します。", "查询失败:{error}": "クエリに失敗しました:{error}", "查询套餐": "プランを照会", "查询活动": "キャンペーンを照会", "查询结果": "結果を確認", "桌面端每日积分链路": "デスクトップ版のデイリー積分経路", "次数按账号每天单独计算:重试到上限的账号今天不再重试,明天自动重置。": "回数はアカウントごと・1日ごとに数えます。上限に達したアカウントは本日は再試行せず、明日リセットされます。", "正在为本次领取验证;若出现滑块,请手动完成": "今回の受け取りを認証しています。スライダーが表示された場合は、手動で操作してください。", "正在读取 UMID 组件状态…": "UMID コンポーネントの状態を読み込み中…", "正在读取定时签到数据…": "定期チェックインデータを読み込み中…", "正在读取签到数据…": "チェックインデータを読み込み中…", "每个签到计划对应一组补签设置": "各スケジュールに補完設定が対応", "每个账号每天在区间内随机执行一次;开始与结束相同则按固定时刻执行。": "各アカウントは毎日、時間帯内のランダムな時刻に一度実行されます。開始と終了が同じ場合は固定時刻に実行します。", "每天 {time}": "毎日 {time}", "每天 {time} · {scope}": "毎日 {time} · {scope}", "每天定点巡检 · 一趟推进一步 · 与签到排程互相独立": "毎日定時に巡回 · 1回で1ステップ · チェックインスケジュールとは独立", "每天执行": "毎日実行", "每天按这里的时刻自动巡检一遍 WorkBuddy 国内版账号:没有猫就领养、在家就派出、到站就领奖。一趟只推进一步,所以建议留两个时刻(早上派出、晚上领奖)。企业版与国际版账号自动跳过。": "ここで指定した時刻に WorkBuddy 中国版アカウントを自動巡回します:猫がいなければ里親登録、待機中なら出発、到着済みなら報酬を受け取ります。1回につき1ステップだけ進むため、2つの時刻(朝に出発・夜に受取)を推奨します。エンタープライズ版と国際版のアカウントは自動的にスキップされます。", "每天时刻": "毎日の時刻", "每天自动执行": "毎日自動で実行", "每天补查一次": "毎日一度補完確認", "每天补查一轮,只处理今天未签到的账号。": "毎日一度、本日未チェックインのアカウントのみ確認します。", "每执行一次签到 · 每个账号一条明细 · 结果与收益以后端落账为准": "チェックイン1回ごとに · アカウントごとに1行 · 結果と収益はバックエンドの記録が正", "每日活动签到(+100 积分,已领则中性提示)": "毎日のアクティビティ签到(+100 クレジット、受領済みなら中立の案内)", "每日活跃任务 · 网页会话保活点亮日活,领取才加积分 · 两者可分开执行": "毎日のアクティブタスク · Webチャネルの会話で日活を達成、ポイントは受け取りで加算 · 両方は別々に実行可能", "每日登录积分 · 顺带领取会员活动 · 访客账号无积分体系(跳过)": "毎日ログインポイント · あわせて会員アクティビティを受け取り · ゲストアカウントはポイント体系なし(スキップ)", "每日福利 · 领取 → 确认 → 回读核实 · 按北京时间自然日重置": "デイリー特典 · 受け取り → 確認 → 読み戻し検証 · 北京時間の自然日でリセット", "每日签到": "デイリーチェックイン", "每日签到积分": "毎日チェックインポイント", "每条条目各有时刻与范围 · 各自当天去重 · 错过时点开机自动补签": "スケジュールごとに時刻と範囲 · 当日はそれぞれ重複排除 · 起動時に自動補完", "每账号一条明细": "アカウントごとに 1 件", "每账号一条明细 · 点此查看「签到记录」": "アカウントごとに1行 · 「チェックイン記録」を開く", "每账号每天最多重试(次)": "各アカウントの一日最大再試行回数", "没有专属时间的平台跟随默认时间;已有专属或自定义时间的平台不会被覆盖。": "専用時刻がない対象は既定に従います。専用・カスタム時刻は上書きしません。", "没有匹配的平台": "一致する対象なし", "没有可执行账号": "実行できるアカウントなし", "没有可签到的账号": "チェックインできるアカウントがありません", "没有可领套餐的账号(ZCode 未添加)。": "受け取れるプランのあるアカウントがありません(ZCode 未追加)。", "没有可领福利的账号(CodeArts / ZCode 未添加)。": "受け取れる特典のあるアカウントがありません(CodeArts / ZCode が未追加)。", "没有支持成长任务的账号(需要 WorkBuddy 国内版)。": "成長タスクに対応するアカウントがありません(WorkBuddy 中国版が必要)。", "没有支持新手福利的账号": "初心者ボーナスに対応するアカウントがありません", "没有支持新手福利的账号 —— 目前有 Loomy、小浣熊、CodeArts 三家。": "初心者ボーナスに対応するアカウントがありません —— 現在は Loomy、小浣熊、CodeArts の 3 社です。", "没有支持活动福利的账号,请添加账号并更新提供商插件。": "キャンペーン特典に対応するアカウントがありません。アカウントを追加し、プロバイダープラグインを更新してください。", "没有符合条件的账号。": "条件に一致するアカウントはありません。", "没有符合筛选条件的签到记录": "絞り込み条件に一致するチェックイン記録がありません", "没有需要执行的任务": "実行するタスクはありません", "活动奖励领取成功": "キャンペーン報酬を受け取りました", "活动尚未开始(上游接口未部署)": "キャンペーンは未開始です(上流のエンドポイントが未デプロイ)", "活动开始:{time}": "キャンペーン開始:{time}", "活动按自然日发新套餐,每天可领一次": "キャンペーンは暦日ごとに新しいプランを配布します。受け取りは 1 日 1 回までです", "活动未开放或已结束,请重新查询": "キャンペーンは未開始または終了しています。再照会してください。", "活动福利": "イベント特典", "活动福利接口不可用,请更新网关后重试": "キャンペーン特典 API を利用できません。ゲートウェイを更新して再試行してください。", "活动窗口重试": "受付時間の再試行", "活动窗口重试已关闭,等待窗口或活动下发的账号不会自动再试。": "受付時間の再試行はオフです。受付時間やイベントの配信を待っているアカウントは自動再試行されません。", "活动领取未成功,请重新查询后再试": "特典を受け取れませんでした。再照会してからやり直してください。", "活动(campaign)领取 · 每天 10:00 刷新": "イベント(campaign)の受け取り · 毎日 10:00 に更新", "活跃上报与保活均未成功,且活动未开启": "アクティビティの報告とキープアライブの両方に失敗し、キャンペーンも未実施です", "活跃上报完成,但保活未成功且活动未开启": "アクティビティの報告は完了しましたが、キープアライブに失敗し、キャンペーンも未実施です", "活跃上报完成,但活动未开启": "アクティビティを報告しましたが、キャンペーンは未実施です", "活跃上报成功": "アクティビティの報告に成功しました", "活跃保活失败": "アクティブのキープアライブに失敗しました", "活跃保活完成": "アクティブのキープアライブが完了しました", "活跃保活完成,但活动未开启": "アクティブのキープアライブは完了しましたが、イベントが有効ではありません", "活跃保活完成,但活跃上报失败且活动未开启": "キープアライブは完了しましたが、アクティビティの報告に失敗し、キャンペーンも未実施です", "添加条目": "スケジュールを追加", "添加模型": "モデルを追加", "清单为空 —— 保存后恢复缺省链": "リストが空です — 保存すると既定のチェーンに戻ります", "清单里已经有「{name}」": "リストに「{name}」はすでにあります", "清空失败:{error}": "クリアに失敗しました:{error}", "清空签到记录": "チェックイン記録をクリア", "滚动 24 小时签到;按插件返回的时间等待下一次领取,不以自然日重复领取": "前回から 24 時間のチェックイン。日付の切替で繰り返さず、プラグインが返す次回時刻まで待ちます。", "点「套餐明细」看领到了哪几份、什么时候生效;活动期内每天可再领": "「プラン明細」で受け取ったプランと有効になる時期を確認できます。キャンペーン期間中は毎日また受け取れます", "点击行展开账号明细 · 单账号签到不受范围限制": "行をクリックしてアカウントの詳細を展開 · 単一アカウントのチェックインは範囲の制限を受けません", "点进去查看任务并领取": "タップしてタスクを確認し受け取る", "状态未确认": "状態未確認", "独立链路 · 只提供手动入口 · 不进自动签到": "独立した経路 · 手動入口のみ · 自動チェックインには含まれない", "猫猫旅行": "ねこ旅行", "猫猫旅行失败:{error}": "ねこ旅行に失敗:{error}", "猫猫旅行失败:{message}": "ねこ旅行に失敗:{message}", "猫猫旅行定时排程": "猫猫旅行スケジュール", "猫猫旅行:{message}": "ねこ旅行:{message}", "猫猫旅行:{n} 个动作,+{credit} 积分": "猫猫旅行:{n} 件のアクション、+{credit} クレジット", "猫猫旅行:{n} 个动作,+{credit} 积分,{failed} 个失败": "猫猫旅行:{n} 件のアクション、+{credit} クレジット、{failed} 件失敗", "用免费模型与网页会话维持账号活跃 · 不领取奖励": "無料モデルとWebチャネルの会話でアカウントのアクティブ状態を維持 · 報酬は受け取らない", "由官方按期自动发放,这里只展示记录,不重复领取。": "公式サービスが予定日に自動付与します。ここでは記録の閲覧のみで、重複取得はしません。", "确定删除「{name}」?删除后到点不再执行。": "「{name}」を削除しますか?削除後は予定時刻に実行されません。", "确定删除「{name}」?对应的定时补签与活动重试也会一并移除,签到记录保留。": "「{name}」を削除しますか?対応する補完と再試行も削除します。記録は残ります。", "确定清空全部签到记录?清空后无法恢复。": "すべてのチェックイン記録をクリアしますか?クリア後は復元できません。", "确定清空当前筛选出的签到记录?清空后无法恢复。": "現在の絞り込みに一致するチェックイン記録をクリアしますか?クリア後は復元できません。", "确认兑换": "引き換えを確定", "确认把这份权益兑换到当前账号?兑换后可能无法撤销。": "この特典を現在のアカウントで引き換えますか?取り消せない場合があります。", "移除 {name}": "{name} を削除", "立即全部签到": "今すぐ一括チェックイン", "立即巡检全部": "今すぐ全件巡回", "立即执行「{name}」会手动签到整个计划范围,不等待平台时点。窗口未开的平台可能仍无法领取。": "「{name}」を今すぐ実行すると対象全体を時刻待ちせず手動チェックインします。受付開始前は受け取れない場合があります。", "等待时点": "時刻待ち", "等待签到区间": "チェックイン時間帯待ち", "等待签到时间": "チェックイン時刻待ち", "签到": "チェックイン", "签到与补签计划已暂停,配置仍保留;手动执行不受总开关影响。": "チェックインと補完は停止中です。設定は保持され、手動実行はマスタースイッチの影響を受けません。", "签到中…": "チェックイン中…", "签到中心分区": "チェックインセンターのセクション", "签到功能分类": "チェックイン機能の分類", "签到区间": "チェックイン時間帯", "签到失败:{error}": "チェックインに失敗しました:{error}", "签到完成:{succeeded}/{total} 成功{active},{failed} 个失败": "チェックイン完了:{succeeded}/{total} 成功{active}、{failed} 件失敗", "签到完成:{success}/{total} 成功,保活 {active},失败 {failed}": "チェックイン完了:{success}/{total} 成功、{active} 件のアクティブ維持、{failed} 件失敗", "签到成功": "チェックインに成功しました", "签到提供商": "チェックインプロバイダー", "签到日期按北京时间计算": "チェックインの日付は北京時間で計算されます", "签到时间": "チェックイン時刻", "签到类型": "チェックインの種類", "签到范围": "チェックイン範囲", "签到触发时刻": "チェックイン実行時刻", "签到计划": "チェックインスケジュール", "签到记录": "チェックイン記録", "签到记录时间范围": "チェックイン記録の時間範囲", "签到记录表": "チェックイン記録テーブル", "管理定时签到": "定期チェックインを管理", "累计签到记录": "累計チェックイン記録", "结束时间不能早于开始时间,暂不支持跨天区间。": "終了は開始より前にできません。日をまたぐ時間帯にはまだ対応していません。", "结算于 {time}": "{time} に確定", "编辑签到计划": "チェックインスケジュールを編集", "缺少套餐开通凭证,请通过果办网页登录补齐授权": "プラン有効化の認証情報が不足しています。OfficeAce の Web ログインで認可を補ってください。", "缺少开通凭证": "有効化の認証情報が不足", "网关设备组件": "ゲートウェイのデバイスコンポーネント", "能量 {n}": "エネルギー {n}", "腾讯每日签到接口 · 仅国内版": "Tencent のデイリーチェックイン API · 中国版のみ", "自动巡检已暂停:{reason}": "自動巡回は一時停止中です:{reason}", "自动执行已开启": "自動実行有効", "自动执行已暂停": "自動実行停止中", "自动执行总开关": "自動実行マスタースイッチ", "自定义时间": "カスタム時刻", "至少勾一家才能保存(不勾等于这条条目不签到)": "保存するには 1 社以上選択してください(未選択=このエントリは何もチェックインしません)", "补签不早于": "補完の開始下限", "补签不早于 {time}": "補完は {time} 以降", "补签单独设置,只检查今天还没有签到的账号。": "補完は別設定で、本日未チェックインのアカウントのみ確認します。", "补签取「主签到区间结束加等待间隔」与「补签不早于」中较晚的时刻,不会提前补签尚未轮到的账号。": "補完は「メイン時間帯の終了+待機間隔」と「補完の開始下限」の遅い方に実行します。順番待ちのアカウントを早めに処理しません。", "补签在主签到区间结束后执行,只补未签到账号。": "補完はメイン時間帯の終了後、未チェックインのアカウントのみ処理します。", "补签已关闭": "補完無効", "补签已关闭,不影响主签到;开启后会自动生成各平台的补签安排。": "補完は無効ですがメイン実行には影響しません。有効にすると各対象の補完時刻を生成します。", "补签已开启": "補完有効", "补签检查": "補完確認", "补签计划": "補完スケジュール", "触发会话活跃并观测积分变化;未观测到新发放时不会标为已签到": "セッションをアクティブにしてポイントの変化を確認します。新しい付与が確認できない場合、チェックイン済みにはしません。", "计划名称": "スケジュール名", "订单 {order} · 第 {period} 期": "注文 {order} · 第 {period} 期", "设备校验未就绪,部分活动可能不显示:{reason}": "デバイス認証が利用できないため、一部のキャンペーンが表示されない場合があります:{reason}", "设置各平台每天的签到时间,按窗口分批执行。": "各対象の毎日時刻を設定し、受付時間ごとに実行します。", "设置定时补签": "定期補完を設定", "设置每天的签到区间,各账号在区间内随机错峰执行。": "毎日のチェックイン時間帯を設定します。各アカウントを時間帯内でランダムに分散して実行します。", "设置活动窗口重试": "受付時間の再試行を設定", "设置补签": "補完を設定", "该权益已兑换,无需重复提交": "この特典は引き換え済みです。再送信は不要です。", "该活动已领取,无需重复领取": "この特典は受け取り済みです。再度受け取る必要はありません。", "该账号当前没有可领取的限时活动": "このアカウントで現在受け取れる期間限定特典はありません", "请填写合法区间,结束不早于开始,并至少选择一家提供商。": "終了が開始より前にならない有効な時間帯を入力し、プロバイダーを一つ以上選択してください。", "请检查时间、间隔和次数是否在允许范围内。": "時刻・間隔・回数が許容範囲内か確認してください。", "请至少选择一个签到平台": "チェックイン対象を一つ以上選択してください", "读取定时签到数据失败:{error}": "定期チェックインデータの読み込みに失敗しました:{error}", "读取签到数据失败:{error}": "チェックインデータの読み込みに失敗しました:{error}", "读取签到记录失败:{error}": "チェックイン記録の読み込みに失敗しました:{error}", "调整重试": "再試行を調整", "豆包工作今日领取仍未确认,请前往官方客户端查看;再次点击仅查询结果,不会重复领取": "豆包工作の本日の受け取りは未確認です。公式アプリで確認してください。再度クリックしても結果のみを照会し、重複して受け取りません。", "豆包工作签到奖励已领取,已回查确认": "豆包工作のチェックイン報酬を受け取り、再照会で確認しました。", "豆包工作领取结果待确认,稍后只查询结果,不会重复提交领取": "豆包工作の受け取り結果を確認中です。以後は結果のみを照会し、受け取りを重複送信しません。", "账号未使用官方果办网关地址,无法在此开通免费套餐": "このアカウントは OfficeAce 公式ゲートウェイを使用していないため、ここでは無料プランを有効にできません。", "跟随默认时间": "既定時刻に従う", "跳过 {n}": "スキップ {n}", "运营活动交付(领取 → 确认 → 回读核实)· 领的是套餐赠送积分": "運営イベントの受け渡し(受け取り → 確認 → 読み戻しで検証)· 受け取るのはプラン特典積分", "还有 {n} 个平台未执行": "未実行の対象が {n} 件", "还没执行过": "まだ実行されていません", "还没有可签到的提供商。签到能力随提供商插件包提供,装好并添加账号后这里就会出现。": "チェックインできるプロバイダーはまだありません。チェックイン機能はプロバイダープラグインパックに含まれています。パックをインストールしてアカウントを追加するとここに表示されます。", "还没有定时条目 —— 点「添加条目」建一条,或到「签到中心」手动签到。": "スケジュールがまだありません —— 「スケジュールを追加」で作成するか、「チェックインセンター」で手動チェックインしてください。", "还没有签到计划,先选择平台和默认时间。": "スケジュールがありません。対象と既定時刻を選択してください。", "还没有签到记录 —— 手动签到或等定时条目执行后,明细会出现在这里。": "チェックイン記録はまだありません —— 手動チェックインまたは定期実行の後に、明細がここに表示されます。", "还没有记录": "記録はまだありません", "这个账号没有新手任务": "このアカウントに初心者タスクはありません", "这里只修改定时签到;补签和活动重试配置保持原样,在「定时补签」页单独设置。": "ここでは定期チェックインのみ変更します。補完と再試行の設定は保持され、「定期補完」で別に設定します。", "这里只管理签到时间;补签与活动窗口重试在独立页设置。": "ここではチェックイン時刻のみ管理します。補完と再試行は別ページで設定します。", "连登 {n} 天": "連続ログイン {n} 日", "选填": "任意", "选择 {name}": "{name} を選択", "选择平台后显示实际签到时间": "対象を選ぶと実際の時刻を表示", "部分": "一部", "重新查询": "再確認", "重新检查": "再確認", "重签": "再チェックイン", "重试": "再試行", "重试关闭": "再試行無効", "重试已暂停": "再試行停止中", "重试开启": "再試行有効", "重试间隔(分钟)": "再試行間隔(分)", "间隔 {gap} 分钟 · 每账号每天最多重试 {limit} 次": "間隔 {gap} 分 · 各アカウント一日最大 {limit} 回", "间隔填 0 会关闭活动窗口重试;定时补签仍至少等待 1 分钟,不会一起关闭。": "間隔 0 はイベント再試行を無効化します。定期補完は一分以上待機し、同時には無効になりません。", "限时体验套餐 · 领取需滑块验证码 · 逐份查看与领取": "期間限定お試しプラン · 受け取りにはスライダー認証が必要 · 1 件ずつ確認して受け取り", "限时体验套餐(start-plan),活动期内每天一份 · 领取需滑块验证码": "期間限定体験プラン(start-plan)。開催期間中は毎日 1 件 · 受け取りにはスライダー認証が必要", "限时活动与体验套餐 · 查询后逐项领取 · 不影响每日签到": "期間限定特典と体験プラン · 照会後に個別に受け取り · 毎日のチェックインとは独立", "随机签到开始": "ランダムチェックイン開始", "随机签到结束": "ランダムチェックイン終了", "随签到计划暂停": "チェックインスケジュールに連動して停止", "需人工处理": "手動での対応が必要", "需真实操作": "実際の操作が必要", "需要人工验证": "手動認証が必要", "非活动期": "イベント期間外", "项": "件", "预计发放:{time}": "付与予定:{time}", "领取": "受け取る", "领取中": "受け取り中", "领取中…": "受け取り中…", "领取免费 CodingPlan(按需:套餐有效时只回读额度)": "無料 CodingPlan を取得(オンデマンド:プラン有効時はクォータを読むだけ)", "领取后 {days} 天有效": "受け取り後 {days} 日間有効", "领取失败": "受け取りに失敗", "领取失败:{error}": "受け取りに失敗しました:{error}", "领取奖励": "報酬を受け取る", "领取截止:{time}": "受け取り期限:{time}", "领取时间:{time}": "受け取り日時:{time}", "领取结果待确认": "受け取り結果を確認中", "领取结果待确认,请稍后查询;不会重复提交领取": "受け取り結果を確認中です。後で再照会してください。受け取りを重複送信しません。", "领取被拒绝": "受取拒否", "领取通常需要过一次滑块验证;活动套餐多为当天稍晚生效,领取后可在桌面端「账号」里看套餐明细。": "受け取りには通常スライダー認証が必要です。キャンペーンのプランは当日の遅い時間に有効になることが多く、受け取り後はデスクトップ版「アカウント」でプラン明細を確認できます。", "领取验证任务已结束,请到套餐明细查看结果": "この認証タスクは終了しました。プラン詳細で結果を確認してください。", "额度到期:{time}": "クレジット有効期限:{time}", "验证凭据正在提交,领取结果请查看签到记录": "認証情報を送信しています。受け取り結果はチェックイン履歴で確認してください。", "验证提交结果未确认,请查看签到记录,勿重复领取": "認証の送信結果が未確認です。チェックイン履歴を確認し、受け取りを繰り返さないでください。", "默认 {time} · {n} 个平台 · {groups} 组签到时间": "既定 {time} · {n} 対象 · {groups} 組の時刻", "默认使用第一把可用 API Key,想换就在上面选一把": "既定では最初の利用可能な API Key を使います。変更する場合は上で選択してください。", "默认签到时间": "既定チェックイン時刻", "(共 {n} 个账号)": "(全 {n} アカウント)", "(能量 / 连登读数本次未取到)": "(エネルギー/連続ログインの数値は今回取得できませんでした)", ",日活保活 {n} 个": "、日活キープアライブ {n} 件", " 字段": " フィールド", " 的 ": " の ", "{enabled} / {total} 个已开启": "{enabled} / {total} 件有効", "{name}开关": "{name}のスイッチ", "{name}间隔": "{name}の間隔", "{name}间隔必须是 {min}–{max} 分钟的整数": "{name}の間隔は {min}~{max} 分の整数で指定してください", "{n} 秒后": "{n} 秒後", "✅ {task}:{summary}": "✅ {task}:{summary}", "✅ 已更新「{label}」": "✅ 「{label}」を更新しました", "上次执行 {time}": "前回の実行 {time}", "上次执行 {time}({result})": "前回の実行 {time}({result})", "上次执行中断,没有完整结果;请核对账号状态": "前回の実行が中断され、完全な結果がありません。アカウントの状態を確認してください。", "下次执行 {time}": "次回の実行:{time}", "下次执行 {time}({relative})": "次回の実行 {time}({relative})", "仅维护过期或即将过期的凭证": "期限切れまたは期限間近の認証情報のみを更新します", "仅记录状态与结果,不展示密钥或令牌。": "状態と結果のみを記録し、キーやトークンは表示しません。", "仅重试失败项": "失敗した項目のみ再試行", "仅重试这一项": "この項目のみ再試行", "任务正在执行中,请稍候": "タスクは実行中です。しばらくお待ちください。", "任务清单": "タスク一覧", "任务配置保存在 ": "タスク設定の保存先は ", "停留在「报表」页时按此间隔重新拉取统计数据;页面不可见时不请求。": "「レポート」ページを開いている間、この間隔で統計データを再取得します;ページが非表示のときはリクエストしません。", "停留在「日志」页时按此间隔重新拉取系统事件;页面不可见时不请求。": "「ログ」ページを開いている間、この間隔でシステムイベントを再取得します;ページが非表示のときはリクエストしません。", "停留在「请求日志」页时按此间隔重新拉取请求日志;页面不可见时不请求。": "「リクエストログ」ページを開いている間、この間隔でリクエストログを再取得します;ページが非表示のときはリクエストしません。", "全部触发方式": "すべての実行元", "全部跳过": "すべてスキップ", "共 {n} 次执行": "計 {n} 回の実行", "关闭自动维护不影响手动执行,也不影响对话请求所需的按需续期。": "自動メンテナンスをオフにしても、手動実行やチャットリクエスト時に必要な認証情報の更新には影響しません。", "冷却中,{relative}重试": "クールダウン中、{relative}後に再試行", "冷却至 {time}": "{time} までクールダウン", "凭证变化": "認証情報の変更", "凭证已更新": "認証情報を更新しました", "凭证未过期或临期": "認証情報は期限切れでも期限間近でもありません", "凭证维护": "認証情報のメンテナンス", "凭证自动维护": "認証情報の自動メンテナンス", "分钟执行一次": "分ごとに実行", "刚刚已执行,请稍后重试": "このタスクは直前に実行されました。少し待ってから再試行してください。", "刷新前有效期": "更新前の有効期限", "刷新后有效期": "更新後の有効期限", "刷新记录": "記録を再読み込み", "即将执行": "まもなく実行", "原因 / 说明": "理由・説明", "去账号页处理": "アカウントを開く", "只刷新过期或即将过期的账号凭证": "期限切れまたは期限間近のアカウント認証情報のみを更新します", "可填 {min}–{max}": "入力範囲:{min}~{max}", "可填 {min}–{max} {unit}(默认 {def} {unit})": "{min}–{max} {unit} を入力可能(既定 {def} {unit})", "固定模型清单": "固定モデル一覧", "失败重试": "失敗項目の再試行", "定时任务已刷新": "定期タスクを更新しました", "定期向 GitHub 查询最新发布版本,默认每 20 分钟一次。检查结果、排期和限流冷却跨重启保留;手动检查也会合并重复请求并遵守冷却。开关与间隔在「软件更新」面板的「更新设置」弹窗里配置(定时任务页不再渲染这一条)。": "GitHub に最新のリリースバージョンを定期的に問い合わせます(既定は 20 分ごと)。チェック結果・スケジュール・レート制限のクールダウンは再起動をまたいで保持されます;手動チェックも重複リクエストをまとめ、クールダウンに従います。スイッチと間隔は「ソフトウェア更新」パネルの「更新設定」ダイアログで設定します(定期タスクページにはこの行を表示しません)。", "定期拉取最新模型清单,重启沿用排期与缓存。客户端读取模型列表的后台刷新也遵守本任务开关、间隔和失败冷却;手动获取模型可提前刷新。": "最新のモデルリストを定期的に取得します。再起動後もスケジュールとキャッシュを引き継ぎます。クライアントがモデル一覧を読み取る際のバックグラウンド更新も、このタスクのスイッチ・間隔・失敗時のクールダウンに従います;手動でのモデル取得なら前倒しで更新できます。", "定期拉取最新模型清单,重启沿用排期与缓存。客户端读取模型列表的后台刷新也遵守本任务开关、间隔和失败冷却;手动获取模型可提前刷新。同一轮顺带刷新 models.dev 模型元数据(能力位与思考档位,可在设置页单独关闭)。": "最新のモデルリストを定期的に取得します。再起動後もスケジュールとキャッシュを引き継ぎます。クライアントがモデル一覧を読み取る際のバックグラウンド更新も、このタスクのスイッチ・間隔・失敗時のクールダウンに従います;手動でのモデル取得なら前倒しで更新できます。同じラウンドで models.dev のモデルメタデータ(能力フラグと思考ティア、設定ページで個別にオフにできます)も更新します。", "定期获取各提供商的最新模型清单": "各プロバイダーの最新モデル一覧を定期的に取得します", "定期遍历账号,只刷新已过期或临期的凭证。重启后沿用上次排期,失败账号在冷却后重试;转发需要的按需续期不受此开关影响。": "アカウントを定期的に走査し、期限切れまたは期限間近の認証情報だけを更新します。再起動後も前回のスケジュールを引き継ぎ、失敗したアカウントはクールダウン後に再試行します;転送時に必要なオンデマンド更新はこのスイッチの影響を受けません。", "客户端触发": "クライアントから実行", "尚未执行维护": "まだ実行されていません", "尚未执行维护,自动或手动执行后会显示结果": "メンテナンスはまだ実行されていません。自動または手動実行後に結果が表示されます。", "已在设置里关闭 models.dev 模型元数据": "設定で models.dev のモデルメタデータが無効になっています", "已执行": "実行しました", "已更新 {n} 条": "{n} 件を更新しました", "已续期并确认凭证更新": "認証情報を更新し、変更を確認しました", "已获取最新模型目录": "最新のモデルカタログを取得しました", "建议重试时间": "推奨の再試行時刻", "当前没有可用的目录账号": "カタログ取得に利用できるアカウントがありません", "成功提供商": "更新済みプロバイダー", "成功账号": "更新済みアカウント", "手动触发": "手動実行", "执行中断": "実行中断", "执行中断,结果可能已部分生效,请先核对账号状态": "実行が中断されました。一部の変更は反映済みの可能性があるため、先にアカウントの状態を確認してください。", "执行失败:{reason}": "実行に失敗しました:{reason}", "执行时的结果快照,不随账号后续变化而改变": "実行時点の結果です。その後のアカウント変更は反映されません", "执行时间": "実行日時", "执行明细": "実行の詳細", "执行汇总": "実行サマリー", "执行间隔(分钟)": "実行間隔(分)", "报表自动刷新": "レポートの自動更新", "指定账号不属于该提供商、未启用或没有可用凭证": "指定アカウントは別のプロバイダーに属しているか、無効か、有効な認証情報がありません", "提供商当前不可用,未执行目录更新": "プロバイダーを利用できないため、カタログを更新しませんでした", "搜索账号或提供商": "アカウントまたはプロバイダーを検索", "收起明细": "詳細を閉じる", "改动立即生效,不需要重启程序": "変更はすぐに反映され、アプリの再起動は不要です", "无失败项": "失敗なし", "日志页自动刷新": "ログページの自動更新", "明细状态筛选": "項目の状態で絞り込み", "暂无维护记录,首次执行后会自动保存": "メンテナンス記録はまだありません。初回実行後に自動保存されます。", "暂无记录": "記録なし", "最近一次": "前回の実行", "有失败项": "失敗あり", "有效期已延长": "有効期限を延長しました", "未使用账号": "アカウント未使用", "未变更": "変更なし", "未注册的提供商": "未登録のプロバイダー", "未返回失败原因": "失敗の理由が返されませんでした", "本次无需更新,沿用现有状态": "今回は更新不要のため、現在の状態を維持します", "本轮共 {n} 项": "今回の実行:計 {n} 項目", "本轮没有符合条件的项目": "今回の実行に条件に一致する項目はありません", "查看凭证与模型目录的每次维护结果,失败和跳过都有原因": "認証情報とモデルカタログの各メンテナンス結果を確認できます。失敗やスキップの理由も表示します", "查看原因": "理由を見る", "查看明细": "明細を見る", "查看详情": "詳細を見る", "模型基础信息": "モデルの基本情報", "模型目录": "モデルカタログ", "模型目录刷新": "モデルカタログ更新", "模型目录更新": "モデルカタログ更新", "正在加载定时任务…": "定期タスクを読み込み中…", "正在读取维护记录…": "メンテナンス記録を読み込み中…", "此前仅有汇总,尚无逐项记录": "以前はサマリーのみを記録していたため、項目別の明細はありません", "每 {n} 分钟": "{n} 分ごと", "没有可显示的定时任务。后端未返回任务清单,请确认网关正在运行。": "表示できる定期タスクがありません。バックエンドがタスク一覧を返しませんでした。ゲートウェイが稼働しているか確認してください。", "没有符合筛选条件的维护记录": "絞り込み条件に一致するメンテナンス記録はありません", "沿用缓存或当前没有可用的目录来源": "キャッシュを使用中、または利用可能なカタログ取得元がありません", "沿用缓存,尚未到刷新时间": "更新時刻前のため、キャッシュを使用します", "状态每 20 秒自动同步": "状態は 20 秒ごとに自動同期", "由页面按间隔自动刷新": "ページが間隔に従って自動更新", "登录授权已失效,需要重新登录该账号": "ログイン認証が失効しています。このアカウントに再ログインしてください。", "目录最近更新时间": "カタログの最終更新日時", "立即执行": "今すぐ実行", "立即检查": "今すぐ確認", "维护已完成,结果已保存": "メンテナンスが完了し、結果を保存しました", "维护已开始,结果会自动更新,可离开此页": "メンテナンスを開始しました。結果は自動更新されます。このページを離れても実行は続きます。", "维护已执行,但完整结果未能保存;请先核对账号状态,不要反复执行": "メンテナンスは実行されましたが、完全な結果を保存できませんでした。繰り返し実行せず、先にアカウントの状態を確認してください。", "维护已结束,有失败项,请查看明细": "メンテナンスが終了しましたが、一部の項目が失敗しました。明細を確認してください。", "维护接口不可用,请更新网关并重新打开页面": "メンテナンス機能を利用できません。ゲートウェイを更新してページを開き直してください。", "维护正在执行,完成后会显示逐项结果": "メンテナンスを実行中です。完了後に項目別の結果が表示されます。", "维护类型": "メンテナンスの種類", "维护记录保留 {days} 天,最多 {count} 次;仅保存结果,不保存密钥或令牌。": "メンテナンス記録は {days} 日間、最大 {count} 回分を保持します。結果のみを保存し、キーやトークンは保存しません。", "维护设置": "メンテナンス設定", "维护设置未能保存到数据库,请检查磁盘空间和权限": "メンテナンス設定をデータベースに保存できませんでした。ディスクの空き容量と権限を確認してください。", "自动和手动维护,统一在这里查看": "自動・手動メンテナンスをまとめて確認", "自动维护与手动执行共用同一份结果记录": "自動実行と手動実行の結果は同じ履歴に記録されます", "自动维护已关闭": "自動メンテナンスはオフです", "自动触发": "自動実行", "触发方式": "実行元", "该提供商不支持主动刷新凭证(没有续期手段)": "このプロバイダーは認証情報の更新に対応していません", "该提供商使用固定模型清单": "このプロバイダーは固定のモデル一覧を使用します", "该次执行未完成,没有完整明细": "この実行は完了していないため、完全な明細はありません", "请求日志页自动刷新": "リクエストログページの自動更新", "账号已不存在,未执行维护": "アカウントが存在しないため、メンテナンスを実行しませんでした", "软件版本检查": "ソフトウェア更新確認", "还没有执行记录": "実行記録はまだありません", "逐个提供商更新模型目录,模型基础信息单独列出结果": "プロバイダーごとにカタログを更新し、モデル基本情報の結果は別に表示します", "部分失败": "一部失敗", "部分设置可能已保存,请核对后重试:{reason}": "一部の設定は保存済みの可能性があります。確認してから再試行してください:{reason}", "重新加载": "再読み込み", "重试生成新记录,不覆盖本次结果": "再試行は新しい記録を作成し、今回の結果は上書きしません", "间隔不能为空(可填 {min}–{max} {unit})": "間隔を空にはできません({min}–{max} {unit} を入力可能)", "间隔必须在 {min}–{max} {unit} 之间(当前填的是 {value})": "間隔は {min}–{max} {unit} の範囲で指定してください(現在の入力値は {value})", "间隔必须是整数": "間隔は整数で入力してください", "页面自动刷新": "ページの自動更新", "debug 及以上": "debug 以上", "info 及以上": "info 以上", "warn 及以上": "warn 以上", "{matched} / {total} 条": "{matched} / {total} 件", "{minutes} 分 {seconds} 秒": "{minutes} 分 {seconds} 秒", "{n} 个启动失败": "{n} 個が起動失敗", "{n} 个已就绪": "{n} 個が準備完了", "{n} 个等待恢复": "{n} 個が復旧待ち", "{n} 条": "{n} 件", "{n} 毫秒": "{n} ミリ秒", "✅ 已导出 {count} 条日志到 {file}": "✅ {count} 件のログを {file} にエクスポートしました", "上游": "上流", "上游接口请求": "上流 API リクエスト", "事件摘要": "イベント概要", "事件日志时间范围": "イベントログの時間範囲", "事件详情": "イベント詳細", "仅 error": "error のみ", "仅显示调试记录,供排查问题使用。": "問題の調査に使用するデバッグ記録のみを表示します。", "仅错误": "エラーのみ", "余额查询失败": "残高照会に失敗しました", "余额查询完成": "残高照会が完了しました", "余额查询未配置": "残高照会が未設定です", "信息": "情報", "信息及以上": "情報以上", "全部事件": "すべてのイベント", "全部分类": "すべてのカテゴリ", "全部级别": "すべてのレベル", "共享运行环境尚未就绪,不代表这个插件本身损坏。请在插件页查看加载诊断。": "共有実行環境の準備ができていません。プラグイン自体の破損を意味するものではありません。プラグインページで読み込み診断をご確認ください。", "关联标识": "関連 ID", "出站参数归一": "送信パラメータの正規化", "分类": "カテゴリ", "分页按折叠后的组数计算": "ページ数は折りたたみ後のグループ数に基づきます", "加载插件": "プラグインの読み込み", "原始消息": "元のメッセージ", "原始记录": "元の記録", "原始记录 {n} 条": "元の記録 {n} 件", "发生时间": "発生時刻", "各阶段耗时": "各段階の所要時間", "启动结果": "起動結果", "启动超时": "起動タイムアウト", "启动进程": "プロセスの起動", "处理建议": "推奨される対処", "复制原始记录": "元の記録をコピー", "复制失败": "コピーに失敗しました", "复制当前筛选结果": "絞り込み結果をコピー", "复制本页原始记录": "このページの元の記録をコピー", "导出": "エクスポート", "导出当前筛选": "絞り込み結果をエクスポート", "已复制 {n} 条日志": "ログ {n} 件をコピーしました", "已暂停刷新": "更新を一時停止中", "恢复刷新": "更新を再開", "折叠重复日志": "重複ログを折りたたむ", "按分类筛选": "カテゴリで絞り込み", "按最低级别筛选": "最低レベルで絞り込み", "插件名称": "プラグイン名", "插件启动失败": "プラグインの起動に失敗しました", "插件启动存在异常": "一部のプラグインを起動できませんでした", "插件启动完成,{n} 个已就绪": "プラグインの起動完了:{n} 個が準備完了", "插件启动超时": "プラグインの起動がタイムアウトしました", "插件已就绪": "プラグインの準備完了", "插件已恢复运行": "プラグインが復旧しました", "插件暂不可用,等待运行环境恢复": "実行環境の復旧待ちのため、プラグインは一時的に利用できません", "插件暂时无法使用": "プラグインは一時的に利用できません", "插件未能就绪": "プラグインの準備が完了しませんでした", "插件未能正常停止": "プラグインを正常に停止できませんでした", "插件编号": "プラグイン ID", "插件进程已退出": "プラグインのプロセスが終了しました", "搜索关键字": "キーワードを検索", "搜索插件、消息、提供商或账号": "プラグイン、メッセージ、プロバイダー、アカウントを検索", "搜索插件、消息、提供商或账号…": "プラグイン、メッセージ、プロバイダー、アカウントを検索…", "搜索消息、提供商或账号": "メッセージ、プロバイダー、アカウントを検索", "搜索消息、提供商或账号…": "メッセージ、プロバイダー、アカウントを検索…", "搜索消息关键词": "メッセージのキーワードを検索", "搜索消息关键词…": "メッセージのキーワードを検索…", "操作失败:{error}": "操作に失敗しました:{error}", "日志视图": "ログ表示", "日志详情": "ログ詳細", "日志详情视图": "ログ詳細の表示", "显示 {groups} 组 · 原始记录 {entries} 条": "{groups} グループ · 元の記録 {entries} 件", "显示启动汇总和需要关注的事件;单个插件的正常启动记录在“全部事件”中。": "起動の概要と注意が必要なイベントを表示します。各プラグインの正常な起動記録は「すべてのイベント」で確認できます。", "显示所有已保留的事件;技术信息可在详情中查看。": "保存済みのすべてのイベントを表示します。技術情報は詳細で確認できます。", "暂停刷新": "更新を一時停止", "暂无日志": "ログがありません", "暂无日志可导出": "エクスポートできるログがありません", "有 {n} 条新日志": "新しいログが {n} 件あります", "服务": "サービス", "未记录插件名称": "プラグイン名の記録なし", "本次启动超过等待时限。请在插件页查看加载诊断,确认后重新加载。": "起動の待機時間を超えました。プラグインページで読み込み診断を確認してから、再読み込みしてください。", "查看日志详情:{message}": "ログ詳細を表示:{message}", "查看最新": "最新を表示", "模型 {model}": "モデル {model}", "次数": "回数", "正在加载日志…": "ログを読み込んでいます…", "没有符合条件的日志": "条件に一致するログがありません", "没有符合筛选条件的日志": "絞り込み条件に一致するログがありません", "清空中…": "クリア中…", "清空当前筛选": "絞り込み結果をクリア", "清空运行日志": "実行ログをクリア", "状态码": "ステータスコード", "用时 {duration}": "所要時間 {duration}", "登记提供商": "プロバイダーの登録", "相关功能暂不可用,原因见详情": "関連機能は一時的に利用できません。原因は詳細をご確認ください", "确定清空全部运行日志?清空后无法恢复。": "実行ログをすべてクリアしますか?クリアすると元に戻せません。", "确定清空当前筛选出的 {count} 条日志?清空后无法恢复。": "現在の絞り込みで抽出された {count} 件のログをクリアしますか?クリアすると元に戻せません。", "系统事件": "システムイベント", "级别": "レベル", "结束阅读": "閲覧を終了", "结果未确认": "結果未確認", "脱敏": "マスキング", "自动刷新": "自動更新", "自动刷新已关闭": "自動更新はオフです", "自动签到": "自動チェックイン", "补充系统消息": "システムメッセージを追加", "警告": "警告", "警告 {n}": "警告 {n} 件", "警告及以上": "警告とエラー", "计费接口请求": "課金 API リクエスト", "详细信息": "詳細情報", "请在插件页查看加载诊断,确认原因后重新加载。": "プラグインページで読み込み診断を開き、原因を確認してから再読み込みしてください。", "读取日志失败": "ログの読み込みに失敗しました", "调试": "デバッグ", "调试 {n}": "デバッグ {n} 件", "调试详情": "デバッグ詳細", "调试采集未开启,仅显示已保留的记录。可在设置中开启调试模式。": "デバッグ収集はオフです。保存済みの記録のみ表示します。新しい記録を収集するには、設定でデバッグモードを有効にしてください。", "运行日志已清空": "実行ログをクリアしました", "部分插件暂不可用。请在插件页查看异常插件的加载诊断。": "一部のプラグインは一時的に利用できません。プラグインページで該当プラグインの読み込み診断をご確認ください。", "重要事件": "重要イベント", "错误": "エラー", "错误 {n}": "エラー {n} 件", "阅读模式": "閲覧モード", "阅读模式,列表保持不动": "閲覧モード:リストを固定しています", "附加数据": "追加データ", " · {n} 进行中": " · 処理中 {n} 件", " · 会话粘住": " · セッション粘着", "

    无响应原文
    ": "
    レスポンス原文がありません
    ", "
    无法解析响应内容
    ": "
    レスポンスの内容を解析できません
    ", "
    无法解析请求体(不是含 messages 数组的 JSON)
    ": "
    リクエストボディを解析できません(messages 配列を含む JSON ではありません)
    ", "
    无请求原文
    ": "
    リクエスト原文がありません
    ", "
    调用工具 {name}
    ": "
    ツール呼び出し {name}
    ", "响应原文": "レスポンス原文", "思考过程": "思考プロセス", "请求原文": "リクエスト原文", "HTTP {status},但响应体阶段出错": "HTTP {status} ですが、レスポンスボディ段階でエラー", "HTTP {status},但响应体阶段出错:见错误列": "HTTP {status} ですが、レスポンスボディ段階でエラー:エラー列を参照", "{duration} / 首帧 {first}": "{duration} / 初回応答 {first}", "{m}分{s}秒": "{m}分{s}秒", "{n}秒": "{n}秒", "{s}秒{ms}ms": "{s}秒{ms}ms", "↻ {n} 次": "↻ {n} 回", "↻ 重试 {n} 次": "↻ リトライ {n} 回", "✅ 压缩完成": "✅ 圧縮が完了しました", "「仅看进行中」开启时,状态固定为进行中": "「処理中のみ表示」が有効な間、ステータスは処理中に固定されます", "上游模型繁忙,请求已排进上游队列;网关正按上游建议的时长等待后重发(不是登录态或额度问题)": "アップストリームのモデルが混雑しているため、リクエストはアップストリームのキューに入りました。ゲートウェイはアップストリームが推奨した時間だけ待ってから再送信します(ログイン状態やクォータの問題ではありません)", "上游没有返回积分消耗": "アップストリームがポイント消費を返していません", "上游状态码: {status}": "アップストリームのステータスコード:{status}", "上游请求已发出,正在等第一个字节到达(模型的思考时间也在这段)": "アップストリームへのリクエストは送信済みで、最初のバイトの到着を待っています(モデルの思考時間もこの段階に含まれます)", "上游返回错误": "アップストリームがエラーを返しました", "下游请求的模型:{model}": "ダウンストリームが要求したモデル:{model}", "仅清空报文原文": "原文のみクリア", "仅看进行中": "処理中のみ表示", "令牌": "トークン", "体积": "サイズ", "保留 {count} 条请求记录 · 将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "リクエスト記録 {count} 件を保持 · アップストリーム {upstream} 件、ダウンストリーム本文 {downstream} 件を削除 · DB サイズ {db}", "保留 {count} 条请求记录;将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。用量统计与报表不变。": "リクエスト記録 {count} 件を保持し、アップストリームのデバッグペイロード {upstream} 件とダウンストリーム本文 {downstream} 件を削除します。使用量統計とレポートは変わりません。", "保留统计行与报表,只抹掉请求 / 响应正文。清理后详情弹窗的「预览对话」将无原文可看,统计数字分毫不动。": "統計行とレポートはそのままに、リクエスト / レスポンス本文だけを消去します。クリア後は詳細ダイアログの「会話プレビュー」で原文を確認できなくなりますが、統計数値は一切変わりません。", "保留请求记录、用量统计与报表,同时清理上游调试报文和下游请求 / 响应正文。清理后「预览对话」与「原始报文」不再保留原文。有筛选时只清理命中请求的报文;无筛选时清空两侧全部报文。此操作无法恢复。": "リクエスト記録、使用量統計、レポートを保持したまま、アップストリームのデバッグペイロードとダウンストリームのリクエスト / レスポンス本文を削除します。「会話プレビュー」と「生ペイロード」に原文は残りません。絞り込み中は一致するリクエストのペイロードのみ、絞り込みがない場合は両側のすべてのペイロードを削除します。この操作は元に戻せません。", "全部删除": "すべて削除", "全部提供商": "すべてのプロバイダー", "全部模型": "すべてのモデル", "全部状态": "すべてのステータス", "全部请求数据": "すべてのリクエストデータ", "共 {images} 张图片,复用 {cached} 张识读结果": "画像 {images} 枚、読み取り結果 {cached} 件を再利用", "共 {n} 次尝试": "計 {n} 回の試行", "共 {n} 次尝试,最终由 {provider} 承载": "計 {n} 回の試行、最終的に {provider} が処理しました", "其它": "その他", "内容按原样保存,请求头中的凭据字段已替换为 [redacted]": "内容はそのまま保存され、リクエストヘッダー内の認証情報フィールドは [redacted] に置き換えられています", "内部重试": "内部リトライ", "切换路径:": "切替経路:", "列表数据已刷新,请重试(关闭后重新打开这条详情)": "リストのデータが更新されました。もう一度お試しください(閉じてからこの詳細を開き直してください)", "删除日志记录本身。当前有筛选时只删命中的条目,按天聚合报表不受影响;无筛选时清空全部并重置报表。此方式无法恢复。": "ログレコード自体を削除します。フィルター適用中はヒットした項目だけを削除し、日別集計レポートには影響しません。フィルターなしの場合はすべてをクリアしてレポートをリセットします。この方法では元に戻せません。", "删除请求记录,并同步清理对应的上游调试报文与下游正文。有筛选时只删除命中的记录,按天聚合报表不受影响;无筛选时清空全部并重置报表。此操作无法恢复。": "リクエスト記録と、それに対応するアップストリームのデバッグペイロードおよびダウンストリーム本文を削除します。絞り込み中は一致する記録のみ削除し、日別レポートは保持します。絞り込みがない場合はすべて削除し、レポートもリセットします。この操作は元に戻せません。", "压缩中…": "圧縮中…", "压缩失败:{message}": "圧縮に失敗しました:{message}", "压缩已在后台开始,完成后会自动提示": "圧縮はバックグラウンドで開始されました。完了すると自動で通知されます", "压缩已在进行中": "圧縮はすでに実行中です", "压缩已在进行中,接上它的进度等待完成": "圧縮はすでに実行中です。既存の進捗を引き継いで完了を待ちます", "压缩数据库": "データベース圧縮", "压缩正在后台执行,完成后自动恢复": "圧縮はバックグラウンドで実行中です。完了すると自動的に復帰します", "原始报文": "生ペイロード", "原模型": "元のモデル", "另有 {missing} 次尝试未记录明细(只保留最早的 {kept} 条)": "ほかに {missing} 回の試行は明細が記録されていません(古い方から {kept} 件のみ保持)", "另有 {n} 个词命中": "ほかに {n} 語がヒット", "只显示正在转发中的请求(状态列按阶段显示:连接中 / 等待响应 / 响应中 / 重试中,用时列显示已用时)": "転送中のリクエストのみ表示します(ステータス列は段階ごとに表示:接続中 / 応答待ち / 応答中 / リトライ中、所要時間列は経過時間を表示)", "只看失败": "失敗のみ", "只看成功": "成功のみ", "只看进行中": "処理中のみ", "命中了敏感词": "センシティブワードにヒット", "命中的敏感词": "ヒットしたセンシティブワード", "响应中": "応答中", "响应体": "レスポンスボディ", "响应头": "レスポンスヘッダー", "回收已删除数据占用的磁盘空间(checkpoint + VACUUM,后台执行)": "削除済みデータが占有していたディスク領域を回収します(checkpoint + VACUUM、バックグラウンドで実行)", "图片处理用时:{n} 秒": "画像処理時間:{n} 秒", "在设置 → 通用里开启「调试模式」后,新发生的请求才会保存报文": "設定 → 一般で「デバッグモード」を有効にすると、以降の新しいリクエストでのみペイロードが保存されます", "在路由页查看": "ルーティングページで表示", "处理中": "処理中", "失败请求不记录用量": "失敗したリクエストは使用量を記録しません", "失败({status}):{error}": "失敗({status}):{error}", "失败:{error}": "失敗:{error}", "实际发给上游 {bytes} 字节": "実際にアップストリームへ送信した {bytes} バイト", "客户端": "クライアント", "将删除 {count} 条日志 · 其中 {raw} 条仍带报文原文 · 数据库占用 {db}": "{count} 件のログを削除 · うち {raw} 件はペイロード原文あり · DB サイズ {db}", "将删除 {count} 条请求记录 · 同步清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "リクエスト記録 {count} 件を削除 · アップストリーム {upstream} 件、ダウンストリーム本文 {downstream} 件も削除 · DB サイズ {db}", "将删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "リクエスト記録 {count} 件と、アップストリームのデバッグペイロード {upstream} 件、ダウンストリーム本文 {downstream} 件を削除します。", "尝试 {n} ·": "試行 {n} ·", "尝试明细": "試行明細", "尝试次数": "試行回数", "工具结果": "ツール結果", "工具结果 · {id}": "ツール結果 · {id}", "工具结果图片": "ツール結果の画像", "已删除 {count} 条": "{count} 件を削除しました", "已删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "リクエスト記録 {count} 件と、アップストリームのデバッグペイロード {upstream} 件、ダウンストリーム本文 {downstream} 件を削除しました。", "已受理终止:上游连接已断开,列表稍后刷新为「请求已被手动终止」": "中断を受け付けました:アップストリーム接続は切断されました。リストはまもなく「リクエストは手動で中断されました」に更新されます", "已抹掉 {count} 条报文原文": "{count} 件のペイロード原文を消去しました", "已清理上游调试报文 {upstream} 条、下游正文 {downstream} 条;请求记录与报表已保留。": "アップストリームのデバッグペイロード {upstream} 件とダウンストリーム本文 {downstream} 件を削除しました。リクエスト記録とレポートは保持されています。", "已用时(请求仍在转发中)": "経過時間(リクエストは転送中)", "开启调试模式后仅记录新请求,历史对话无法补录;关闭不会删除已有记录。": "デバッグモードでは有効化後の新しいリクエストのみ記録され、過去の会話は復元できません。無効にしても既存の記録は削除されません。", "当前筛选范围": "現在の絞り込み範囲", "当前网关未提供上游 / 下游清理统计,请更新网关后再清理。": "現在のゲートウェイはアップストリーム / ダウンストリームのクリア件数を提供していません。ゲートウェイを更新してからクリアしてください。", "成功": "成功", "成功({status})": "成功({status})", "所属请求": "元のリクエスト", "执行清理": "クリアを実行", "报文超过单条上限,请求体 / 响应体已按上限截断": "ペイロードが 1 件あたりの上限を超えたため、リクエストボディ / レスポンスボディは上限で切り詰められています", "抹掉原文": "原文を消去", "按提供商筛选": "プロバイダーで絞り込み", "按提供商筛选(只列日志里出现过的)": "プロバイダーで絞り込み(ログに出現したもののみ表示)", "按时间倒序,全量保留": "時系列の新しい順、全量保持", "按模型筛选": "モデルで絞り込み", "按模型筛选(只列日志里出现过的;精确匹配模型名)": "モデルで絞り込み(ログに出現したもののみ表示;モデル名は完全一致)", "按请求结果筛选": "リクエスト結果で絞り込み", "排队中": "キュー中", "提供商 / 账号": "プロバイダー / アカウント", "提供商: {provider}": "プロバイダー:{provider}", "提示": "備考", "敏": "敏", "敏感词": "センシティブワード", "数据库占用包含主文件与 WAL 文件;清理后可点击「压缩数据库」回收空闲空间。": "DB サイズにはメインファイルと WAL ファイルを含みます。クリア後は「データベース圧縮」で未使用領域を回収できます。", "断开上游连接,明细记为「请求已被手动终止」": "アップストリーム接続を切断します。明細には「リクエストは手動で中断されました」と記録されます", "无报文原文(未开启「调试模式」,或已被清理)": "原文ペイロードがありません(デバッグモードが無効だったか、クリア済みです)", "无结果记录": "結果の記録なし", "旧版本保存的正文可能已截断,无法恢复缺失内容": "旧バージョンで保存された本文は切り詰められている可能性があり、欠落した内容は復元できません", "时间": "時刻", "暂无请求日志,网关还没有转发过请求": "リクエストログはまだありません。ゲートウェイはまだリクエストを転送したことがありません", "最终承载:{picked}": "最終的に処理:{picked}", "本次请求消耗 {credit} 积分": "このリクエストのポイント消費:{credit}", "本轮尝试失败,正在退避等待或切换到下一个账号": "今回の試行は失敗し、バックオフ待機中または次のアカウントへの切り替え中です", "来源客户端:{client}": "接続元クライアント:{client}", "查看该请求的上游原始报文": "このリクエストのアップストリーム生ペイロードを表示", "模型": "モデル", "模型测试": "モデルテスト", "模型管理页操作列那颗「测试」发起的请求:与真实请求同一条转发链路,但不计入报表统计": "モデル管理ページの操作列にある「テスト」から発行されたリクエスト:実際のリクエストと同じ転送経路を通りますが、レポート統計には含まれません", "正在加载请求日志…": "リクエストログを読み込んでいます…", "正在统计…": "統計中…", "正文超过单条上限,可能已被截断": "本文が 1 件あたりの上限を超えているため、切り詰められている可能性があります", "没有符合筛选条件的请求": "絞り込み条件に一致するリクエストがありません", "清理": "クリア", "清理中…": "クリア中…", "清理失败:{message}": "クリアに失敗しました:{message}", "清理方式": "クリア方法", "清理请求已返回,但结果数据不完整,请刷新后确认。": "クリア要求の結果データが不完全です。更新して結果を確認してください。", "清理请求日志": "リクエストログをクリア", "清理预览数据不完整": "クリアのプレビューデータが不完全です", "清空两侧原文": "両側の原文を削除", "生产请求": "本番リクエスト", "生成速度:输出 token ÷ 流式段用时(总用时 − 首响);流式段不足总用时一半时按总用时计": "生成速度:出力トークン ÷ ストリーミング時間(所要時間 − 初回応答)。ストリーミング時間が所要時間の半分未満の場合は所要時間で計算", "用时": "所要時間", "用量": "使用量", "确定对{scope}执行「{label}」?
    {summary}
    此操作无法恢复。": "{scope}に対して「{label}」を実行しますか?
    {summary}
    この操作は元に戻せません。", "确定对全部请求日志执行「{label}」?将处理 {count} 条,此操作无法恢复。": "すべてのリクエストログに対して「{label}」を実行しますか?{count} 件を処理します。この操作は元に戻せません。", "确定按当前筛选执行「{label}」?将处理 {count} 条,此操作无法恢复。": "現在の絞り込み条件で「{label}」を実行しますか?{count} 件を処理します。この操作は元に戻せません。", "确定终止这条正在转发的请求?
    上游连接会立即断开,明细将记为「请求已被手动终止」。": "この転送中のリクエストを中断しますか?
    アップストリーム接続はすぐに切断され、明細には「リクエストは手動で中断されました」と記録されます。", "等待响应": "応答待ち", "策略 {strategy} · 会话粘性 {sticky}{hit}": "戦略 {strategy} · セッション粘着 {sticky}{hit}", "终止": "中断", "终止失败:{error}": "中断に失敗しました:{error}", "终止请求": "リクエストを中断", "结果": "結果", "缓存读取: - / 命中率: -": "キャッシュ読み取り:- / ヒット率:-", "缓存读取: {cache} / 命中率: {rate}": "キャッシュ読み取り:{cache} / ヒット率:{rate}", "耗时": "所要時間", "被跳过:": "スキップ:", "识别到 User-Agent,但不属于已知的客户端类型:{ua}": "User-Agent はありますが、既知のクライアント種別ではありません:{ua}", "识图用量按实际视觉账号单独记录,不混入原模型的回答用量。": "画像読み取りの使用量は実際の視覚アカウントに個別記録され、元のモデルの回答使用量には混在しません。", "详情": "詳細", "详情内容": "詳細の内容", "请求体": "リクエストボディ", "请求图片": "リクエストの画像", "请求在任何账号接手之前就失败了": "リクエストはどのアカウントが引き継ぐ前に失敗しました", "请求头": "リクエストヘッダー", "请求已受理,正在选路、取凭证、建立上游连接": "リクエストを受け付けました。経路の選択、認証情報の取得、アップストリーム接続の確立を進めています", "请求日志列表": "リクエストログ一覧", "请求日志时间范围": "リクエストログの時間範囲", "请求日志表": "リクエストログテーブル", "请求正在转发中,用时列显示的是已用时": "リクエストは転送中です。所要時間列には経過時間が表示されます", "请求筛选": "リクエストの絞り込み", "请求详情": "リクエスト詳細", "读取请求日志失败,详见控制台": "リクエストログの読み込みに失敗しました。詳細はコンソールを確認してください", "路由回放": "ルーティングリプレイ", "转发到上游的模型:{model}": "アップストリームへ転送するモデル:{model}", "轮次": "回目", "辅助识图调用": "補助画像読み取り呼び出し", "输入 {input} · 输出 {output} · 总计 {total} · 缓存读 {cache}": "入力 {input} · 出力 {output} · 合計 {total} · キャッシュ読み取り {cache}", "这条报文由旧版本截断保存,缺失内容无法恢复": "このペイロードは旧バージョンで切り詰めて保存されたため、欠落した内容は復元できません", "这条明细是一次模型测试(人工发起):走的是真实转发链路,但不计入报表统计": "この明細はモデルテスト(手動実行)です:実際の転送経路を通りますが、レポート統計には含まれません", "这条明细没有记录提供商(旧数据或请求未走到转发)": "この明細にはプロバイダーが記録されていません(旧データか、リクエストが転送まで到達しなかったため)", "这条明细没有记录来源客户端(旧数据、模型测试,或请求未带 User-Agent)": "この記録には接続元クライアントがありません(旧データ、モデルテスト、または User-Agent なしのリクエスト)", "这条记录命中了敏感词,但没有留下命中明细": "この記録はセンシティブワードにヒットしましたが、ヒット明細が残っていません", "这条记录的尝试明细未采集(该字段上线前的旧数据,或请求在转发前就失败)": "この記録の試行明細は収集されていません(このフィールドの実装前の旧データか、リクエストが転送前に失敗したため)", "这条请求没有保存这一段报文": "このリクエストではこの区間のペイロードが保存されていません", "进入「{phase}」阶段已持续 {time}": "「{phase}」段階に入ってから {time} 経過", "进行中": "処理中", "进行中…": "処理中…", "连接中": "接続中", "速度": "速度", "重试 {n}": "リトライ {n}", "重试中": "リトライ中", "重试次数": "リトライ回数", "面板内发起的模型调用,消耗额度并记录 Key,不计入生产报表": "パネルから開始したモデル呼び出しです。クォータを消費し、API Key を記録しますが、本番レポートには含めません", "预览对话": "会話プレビュー", "预览读取失败": "プレビューの読み込みに失敗しました", "预览读取失败:{error}": "プレビューの読み込みに失敗しました:{error}", "额外识图用量:{n} Token": "追加の画像読み取り使用量:{n} トークン", "首响 {time}": "初回応答 {time}", "首响:上游首帧到达的耗时": "初回応答:アップストリームの初回フレーム到達までの所要時間", "首响:上游首帧到达的耗时(请求仍在转发中)": "初回応答:アップストリームの初回フレーム到達までの所要時間(リクエストは転送中)", "首帧已到,上游内容正在下发": "初回フレームが到着し、アップストリームの内容を受信しています", "(请求仍在转发中)": "(リクエストは転送中)", "(账号:{account})": "(アカウント:{account})", ",{n}毫秒后重试": "、{n}ミリ秒後にリトライ", ",{n}秒后重试": "、{n}秒後にリトライ", "{name}的列设置": "{name} の列設定", "「{label}」列的对齐": "「{label}」列の揃え", "中": "中央", "共 0 条": "全 0 件", "共 {total} 条 · 当前第 {start}–{end} 条": "全 {total} 件 · {start}–{end} 件目を表示", "共 {total} 条(全部显示)": "全 {total} 件(すべて表示)", "列": "列", "列设置": "列設定", "右": "右", "对齐": "揃え", "左": "左", "当前只有一页": "現在は 1 ページのみ", "拖动 ⋮⋮ 调整顺序": "⋮⋮ をドラッグして順序を調整", "按住拖动调整列顺序": "長押ししてドラッグすると列の順序を調整できます", "显示「{label}」列": "「{label}」列を表示", "条": "件", "每页": "1 ページあたり", "每页条数": "1 ページあたりの件数", "调整「{name}」的列:显示 / 隐藏、顺序、对齐": "「{name}」の列を調整:表示 / 非表示、順序、揃え", "跳至": "移動", "跳转到指定页": "指定したページへ移動", "跳转到第 1–{pageCount} 页": "1–{pageCount} ページ目へ移動", "这一列已隐藏": "この列は非表示", "这一列正在显示": "この列は表示中", "页": "ページ", "PID:{pid}": "PID:{pid}", "{label} · {port}": "{label} · {port}", "。已经把这个地址填进其它工具(Claude Code、Cherry Studio 等)的,需要一并改成新地址,否则那些工具会连不上。": "。すでにこのアドレスを他のツール(Claude Code、Cherry Studio など)に入力している場合は、あわせて新しいアドレスに変更してください。変更しないと、それらのツールは接続できなくなります。", "与当前端口相同,无需重启": "現在のポートと同じため、再起動は不要です", "例如 3066": "例:3066", "即将结束以下进程:": "以下のプロセスを終了します:", "已结束进程 {name}(PID {pid}),端口已释放": "プロセス {name}(PID {pid})を終了しました。ポートが解放されました", "当前状态": "現在の状態", "当前端口 {port},网关运行正常。": "現在のポートは {port} で、ゲートウェイは正常に動作しています。", "换端口后要改的地方": "ポート変更後に変更が必要な箇所", "新端口": "新しいポート", "更换端口": "ポートを変更", "更换网关端口": "ゲートウェイポートを変更", "本地网关正在监听 {url},可直接调用 OpenAI 兼容接口": "ローカルゲートウェイは {url} でリッスンしています。OpenAI 互換 API を直接呼び出せます", "校验中…": "検証中…", "正在检查… · {port}": "確認中… · {port}", "正在确认网关是否已就绪": "ゲートウェイの準備ができたか確認しています", "正在重启…": "再起動中…", "端口 {port} 上没有查到监听进程,请改用「更换端口」": "ポート {port} でリッスンしているプロセスが見つかりません。「ポートを変更」を使用してください", "端口号": "ポート番号", "端口已改为 {port},正在重启…": "ポートを {port} に変更しました。再起動中…", "端口已释放。现在重启程序让网关用这个端口启动?": "ポートが解放されました。今すぐアプリを再起動して、このポートでゲートウェイを起動しますか?", "端口需在 1024-65535 之间": "ポートは 1024-65535 の範囲で指定してください", "端口需在 1024-65535 之间。1023 及以下是系统保留范围,普通程序无法监听。": "ポートは 1024-65535 の範囲で指定してください。1023 以下はシステム予約範囲で、通常のプログラムはリッスンできません。", "结束中…": "終了中…", "结束占用端口的进程": "ポートを占有しているプロセスを終了", "结束占用进程": "ポート占有プロセスを終了", "结束失败:{reason}": "終了に失敗しました:{reason}", "结束它会强制退出该程序未保存的数据。确认继续?": "終了すると、そのプログラムの未保存データは強制的に破棄されます。続行してもよろしいですか?", "结束进程": "プロセスを終了", "网关启动中… · {port}": "ゲートウェイ起動中… · {port}", "网关启动失败": "ゲートウェイの起動に失敗", "网关地址会变成 ": "ゲートウェイのアドレスは ", "网关运行中 · {port}": "ゲートウェイ稼働中 · {port}", "该端口不可用": "このポートは使用できません", "路径:{path}": "パス:{path}", "进程名:{name}": "プロセス名:{name}", "进程已结束,但端口仍被占用,建议改用「更换端口」": "プロセスは終了しましたが、ポートはまだ使用中です。「ポートを変更」の使用をおすすめします", "重启": "再起動", "重启中…": "再起動中…", "重启失败:{reason}": "再起動に失敗しました:{reason}", "重启程序": "アプリを再起動", "(未知)": "(不明)" }); +window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { "无可用账号:{reason}": "利用可能なアカウントがありません:{reason}", "AI 助手": "AI アシスタント", "API Key 用量详情": "API Key 使用量の詳細", "API Key 统计": "API Key 統計", "API Key(可选)": "API Key(任意)", "API 凭证": "API 認証情報", "API 方法提交给插件的账号规范化入口;不会用该密钥发起 OAuth 登录。": "API 方式はプラグインのアカウント正規化処理に送信されます。このキーで OAuth ログインを開始することはありません。", "Agent2API · 多提供商本地网关": "Agent2API · マルチプロバイダーのローカルゲートウェイ", "Agent2API 社区": "Agent2API コミュニティ", "Codar(科搭)": "Codar(科搭)", "JSON 格式不正确": "JSON の形式が正しくありません", "JoyCode(京东)": "JoyCode(京東)", "Linux (amd64)": "Linux (amd64)", "Linux (arm64)": "Linux (arm64)", "Magpie 官方": "Magpie 公式", "Magpie 官方与社区插件,共用一个按需下载的运行时": "Magpie の公式・コミュニティプラグインは、必要時に取得するランタイムを共有します", "Magpie 官方名单": "Magpie 公式カタログ", "Magpie 官方和社区插件均通过兼容方式接入 Agent2API,不保证 100% 可用。": "Magpie の公式・コミュニティプラグインはいずれも互換方式で Agent2API に接続しており、100% の動作を保証するものではありません。", "Magpie 推荐": "Magpie おすすめ", "Magpie 插件": "Magpie プラグイン", "Magpie 插件安装须知": "Magpie プラグインのインストールについて", "Magpie 社区": "Magpie コミュニティ", "Magpie 社区分发源": "Magpie コミュニティ配布元", "Magpie 脚本插件": "Magpie スクリプトプラグイン", "MiniMax Code 国内/国际": "MiniMax Code 中国版/国際版", "MiniMax Code 的设备码登录、对话、模型目录、余额与每日签到;国内版与国际版可分别启停。": "MiniMax Code のデバイスコードログイン、対話、モデル一覧、残高と毎日のチェックイン。中国版と国際版を個別に有効化できます。", "OAuth 登录": "OAuth ログイン", "QQ 群号": "QQ グループ番号", "Star 数暂未读取": "スター数はまだ取得できていません", "Star 更新于 {time}": "スター数の更新:{time}", "Token 用量": "Token 使用量", "WPS 灵犀": "WPS 霊犀", "Windows (ARM64)": "Windows (ARM64)", "Windows (x64)": "Windows (x64)", "macOS (Apple Silicon)": "macOS (Apple Silicon)", "macOS (Intel)": "macOS (Intel)", "npm 包名": "npm パッケージ名", "npm 包名、GitHub 地址或 magpie:包名": "npm パッケージ名、GitHub URL、magpie:パッケージ名", "npm 包名或 GitHub 地址": "npm パッケージ名または GitHub URL", "npm 未发布的包会尝试 Magpie 社区分发源;不会绕过完整性校验或执行安装脚本。": "npm にないパッケージは Magpie コミュニティの配布元を確認します。整合性検証の省略やインストールスクリプトの実行はしません。", "{count} 个 Star": "{count} スター", "{count} 个插件": "{count} 個のプラグイン", "{count} 家": "{count} プロバイダー", "{count} 家提供商": "{count} プロバイダー", "{count} 家提供商 · 安装于 {time}": "{count} プロバイダー · {time} にインストール", "{key} 需要 true / false / null": "{key} は true / false / null のいずれかである必要があります", "{key} 需要数字": "{key} は数値である必要があります", "{label}(API)": "{label}(API)", "{label}(OAuth)": "{label}(OAuth)", "{n} 个启用": "{n} 件有効", "{n} 个已限流": "{n} 件レート制限中", "{n} 个请求正在转发中,点开「请求日志」查看": "{n} 件のリクエストを転送中。「リクエストログ」で確認できます。", "{n} 个账号可用": "{n} 件のアカウントが利用可能", "{n} 个账号启用": "{n} 件のアカウントが有効", "{n} 条失败请求未读,点开「请求日志」查看": "{n} 件の失敗リクエストが未読です。「リクエストログ」で確認できます。", "{n} 条错误日志未读,点开「日志」查看": "{n} 件のエラーログが未読です。「ログ」で確認できます。", "{n} 项 · {shown} 显示": "{n} 項目 · {shown} 表示", "{size} · 下载后可直接安装,无需跳转浏览器": "{size} · ダウンロード後そのままインストールできます(ブラウザに移動しません)", "{size} · 点击下载后可直接安装,无需跳转浏览器": "{size} · ダウンロード後すぐにインストールできます(ブラウザに移動しません)", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "メニュー {total} 件 · 表示 {shown} · 非表示 {hidden} · グループ {groups} 件", "· 不会改动任何配置": "· 設定は一切変更しません", "· 每次执行前列改动清单,等你确认": "· 実行前に変更内容を一覧表示し、確認を待ちます", "—": "—", "“本机”指运行网关的机器,不是打开面板的电脑。远程浏览器也可以发起,但网关本机可能需要安装客户端并已登录;是否可用由网关返回结果决定。": "「本機」はゲートウェイを実行しているマシンを指し、パネルを開いているパソコンではありません。リモートのブラウザからも開始できますが、ゲートウェイのマシンにクライアントがインストールされ、ログイン済みである必要がある場合があります。利用可否はゲートウェイの応答で決まります。", "✅ GitHub 令牌已保存(加密存储,界面不再显示)": "✅ GitHub トークンを保存しました(暗号化して保存、画面には再表示されません)", "✅ Token 已刷新": "✅ Token を更新しました", "✅ 已将账号优先级调整到全局第一位": "✅ アカウントの優先度をグローバルキューの先頭に変更しました", "✅ 已清除界面保存的 GitHub 令牌(环境变量若配置过则继续生效)": "✅ 保存された GitHub トークンを削除しました(環境変数が設定されていれば引き続き有効です)", "「{name}」匹配到多个账号:{list},请用完整账号名重试": "「{name}」が複数のアカウントに一致しました:{list}。完全なアカウント名で再試行してください。", "「工具全不勾选 → 不注入系统提示词」:想当纯聊天用时,不必再去关上面的开关。": "「ツールをすべて外す → システムプロンプトは注入されない」:純粋なチャットとして使いたいときは、上のスイッチを切る必要はありません。", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "「設定」は固定項目のため、そのグループはまとめて非表示にできません。他のメニューは個別に非表示にできます", "上一页": "前のページ", "上次加载记录(非本次故障)": "前回の読み込み記録(今回の障害ではありません)", "下一页": "次のページ", "下拉刷新": "引いて更新", "下次自动重试:{time}": "次の自動再試行:{time}", "下载与当前平台对应的插件包(zip),点右上角「安装插件包」选中它即可。": "このプラットフォーム向けのプラグインパック(zip)をダウンロードし、右上の「プラグインパックをインストール」から選択してください。", "不填写(可选)": "入力しない(任意)", "与电脑端一致:每 {n} 分钟": "デスクトップ版と同じ:{n} 分ごと", "为 Agent2API 扩展网页提供商,支持智谱清言的模型调用、访客与登录账号、凭证续期、模型目录、积分查询、签到和任务领取。": "Agent2API に Web プロバイダーを追加し、智譜清言のモデル呼び出し、ゲストとログイン済みアカウント、認証情報の更新、モデル一覧、ポイント照会、チェックインとタスク報酬を提供します。", "为网关扩展多家 AI 提供商,支持账号登录与导入、模型调用、凭证续期、模型目录、余额查询和签到。具体能力以各提供商的支持情况为准。": "ゲートウェイに複数の AI プロバイダーを追加し、ログインとアカウントのインポート、モデル呼び出し、認証情報の更新、モデル一覧、残高照会、チェックインを提供します。対応機能は各プロバイダーによって異なります。", "主导航": "メインナビゲーション", "也可输入 file: 加网关电脑上的插件目录或 tgz 文件绝对路径;本地插件会复制安装,不修改源目录。": "file: に続けて、ゲートウェイのマシン上にあるプラグインのディレクトリまたは tgz ファイルの絶対パスも指定できます。ローカルプラグインはコピーしてインストールし、元のディレクトリは変更しません。", "书生·端砚": "Intern InkStone(書生·端硯)", "了解并安装": "理解してインストール", "仅在该 API 方法需要额外密钥时填写": "この API 方式で追加のキーが必要な場合のみ入力してください。", "仅安装你信任的 npm 包、GitHub 仓库或 Magpie 社区分发包;完整性校验不等于安全审计。": "信頼できる npm パッケージ、GitHub リポジトリ、Magpie コミュニティのパッケージのみをインストールしてください。整合性検証は安全性の監査ではありません。", "仅安装你信任的 npm 包或 GitHub 仓库;版本与完整性检查不能保证脚本安全。": "信頼できる npm パッケージまたは GitHub リポジトリのみをインストールしてください。バージョンと完全性の検証は、スクリプトの安全性を保証しません。", "仅安装你信任的 npm 包;下载校验只能确认文件完整,不能保证脚本安全。": "信頼できる npm パッケージのみをインストールしてください。ダウンロードの検証はファイルの完全性を確認するもので、安全性を保証しません。", "仅影响插件更新通道,与主程序独立。开启后可安装 beta 版;已使用 beta 时保持该通道,关闭后只看正式版且不会降级。": "本体とは独立したプラグイン更新チャンネルです。有効にすると beta 版を取得できます。beta 使用中はそのチャンネルを維持し、無効にすると正式版のみを確認します。ダウングレードはしません。", "仅自动更新已安装、已启用且通过可信签名校验的社区插件。新插件需手动安装,卸载后不会自动重新安装;未签名插件需手动更新。": "インストール済みで有効な、信頼できる署名の検証に合格したコミュニティプラグインのみを自動更新します。新しいプラグインは手動インストールが必要で、削除後に自動で再インストールされません。未署名のプラグインは手動更新が必要です。", "从 GitHub 官方源下载固定提交。仓库根目录须有可直接运行的插件入口;不会执行构建脚本或安装依赖。": "GitHub の公式配信元から固定コミットを取得します。リポジトリのルートに実行可能なプラグインの入口が必要です。ビルドスクリプトの実行や依存関係のインストールは行いません。", "从 GitHub 官方源下载固定提交。仓库须包含可运行的提供商入口;安装运行依赖,但不执行构建和安装脚本。": "特定のコミットを GitHub から直接ダウンロードします。リポジトリには実行可能なプロバイダーのエントリーポイントが必要です。実行時の依存関係はインストールしますが、ビルドやインストール用スクリプトは実行しません。", "从 Magpie 社区官方分发目录下载,核验 SHA-512;更新与重装继续使用此来源。": "Magpie コミュニティの公式配布先から取得し、SHA-512 を検証します。更新と再インストールも同じ配布元を使います。", "从 npm / GitHub / Magpie 安装": "npm / GitHub / Magpie からインストール", "从 npm / GitHub 安装": "npm / GitHub からインストール", "从 npm 安装": "npm からインストール", "从文件安装…": "ファイルからインストール…", "从网关本机客户端导入": "ゲートウェイのマシン上のクライアントからインポート", "仓库没有已提交的可加载入口,请等待作者发布构建产物": "リポジトリに読み込み可能なエントリーポイントがありません。作者によるビルドの公開をお待ちください。", "代价": "コスト", "令牌已生效,但写入磁盘失败(重启后会丢失)": "トークンは有効になりましたが、ディスクへの書き込みに失敗しました(再起動で失われます)", "以下设置属于所连接网关,不是手机本地设置。": "以下は接続先ゲートウェイの設定で、このスマートフォンのローカル設定ではありません。", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "グループ・順序・表示設定を既定に戻します。作成したグループは削除されます(メニューは失われません)。", "会话内": "セッション単位", "会话已过期。重新登录后会自动回到手机端。": "セッションが切れました。再度ログインするとモバイル版に自動で戻ります。", "会话粘性": "セッション粘着", "作为 system 消息注入给助手": "system メッセージとしてアシスタントに注入", "作者尚未提供插件介绍。": "作者によるプラグインの説明はまだありません。", "使用 Cloudflare 账号 ID 与 API Token,接入 Workers AI 对话和在线模型目录。": "Cloudflare のアカウント ID と API Token で Workers AI の対話とオンラインモデル一覧に接続します。", "使用 Warp 终端的登录态,接入账号可用模型并查询 AI 请求额度。": "Warp ターミナルのログイン情報で、アカウントが利用できるモデルに接続し、AI リクエストの利用枠を確認します。", "使用你在网关电脑上安装并登录的 agy CLI,通过 ACP 协议接入模型、工具调用和额度查询;与依赖 Antigravity IDE 的 Antigravity ACP 插件不同。": "ゲートウェイのコンピューターにインストールしてログイン済みの agy CLI を使い、ACP 経由でモデル、ツール呼び出し、使用枠の照会に接続します。Antigravity IDE に依存する Antigravity ACP プラグインとは異なります。", "使用网关本机 gcloud / ADC 登录,接入 Vertex AI 模型并查询 Google Cloud 促销赠金。": "ゲートウェイのマシン上の gcloud / ADC 認証情報で Vertex AI モデルに接続し、Google Cloud のプロモーションクレジットを確認します。", "例如:家里、公司": "例:自宅、会社", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "サイドバーのレイアウトモジュールが読み込まれていません(ui/sidebar-layout.js を app.js より前に読み込む必要があります)。", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "サイドバーにメニューが表示されていません。「設定 → 表示 → サイドバーのメニュー」で必要な項目をオンにしてください。", "侧边栏菜单": "サイドバーのメニュー", "保存失败:{error}": "保存に失敗しました:{error}", "保存对话模型失败:{message}": "対話モデルの保存に失敗:{message}", "保存并继续": "保存して続行", "修改高级参数会等待在途任务结束后重新加载插件;专属开关实时生效。": "詳細設定を変更すると、実行中のタスクが終了してからプラグインを再読み込みします。プロバイダーのスイッチは即座に反映されます。", "候选队列": "候補キュー", "停止": "停止", "停用": "無効", "允许的操作": "許可される操作", "允许签到及附带任务": "チェックインと付随タスクを許可", "先添加一台网关": "まずゲートウェイを追加してください", "先选择插件声明的账号登录方式,再填写必需字段。OAuth 由共享登录桥负责等待、取消和错误;API 凭证通过账号规范化入口添加。": "プラグインが宣言したアカウントログイン方式を選び、必須項目を入力してください。OAuth の待機、キャンセル、エラーは共通ログインブリッジが処理し、API 認証情報はアカウント正規化処理から追加されます。", "免鉴权调用": "認証なしの呼び出し", "全不选": "すべて解除", "全部 API Key": "すべての API Key", "全部客户端": "すべてのクライアント", "全部更新": "すべて更新", "共 {n} 条记录": "全 {n} 件", "共享登录桥不可用,请重新打开面板": "共通ログインブリッジを利用できません。パネルを開き直してください。", "共享运行环境尚未就绪,本插件没有明确的加载失败结果。": "共有実行環境がまだ準備できていません。このプラグイン自体の読み込み失敗は確認されていません。", "关": "オフ", "关闭菜单": "メニューを閉じる", "兼容 OpenCode v1 / Magpie 提供商插件及其运行依赖;不加载界面、独立工具或 Pi 扩展。": "OpenCode v1 / Magpie のプロバイダープラグインと実行時の依存関係に対応します。UI、独立したツール、Pi 拡張は読み込みません。", "准备运行环境": "実行環境を準備中", "凭证 JSON 含有不允许的字段:{key}": "認証情報 JSON に許可されていない項目があります:{key}", "凭证 JSON 嵌套过深,请只粘贴该插件要求的凭证对象": "認証情報 JSON の入れ子が深すぎます。このプラグインが要求する認証情報オブジェクトのみを貼り付けてください。", "凭证 JSON 必须是非空对象,不能是数组或字符串": "認証情報 JSON は空でないオブジェクトである必要があります。配列や文字列は使用できません。", "凭证 JSON 格式不正确,请检查括号和引号": "認証情報 JSON の形式が正しくありません。括弧と引用符を確認してください。", "凭证 JSON(必填)": "認証情報 JSON(必須)", "凭证只在提交时发送到网关;备注名和代理请使用下面的字段,解析错误不会回显凭证内容。": "認証情報は送信時にのみゲートウェイへ送られます。表示名とプロキシは下の項目で設定してください。解析エラーで認証情報の内容が表示されることはありません。", "分布来自保留的日报来源明细;无法恢复的历史不反推客户端或模型。": "内訳は保存された日次の送信元集計に基づきます。復元できない履歴からクライアントやモデルを推測しません。", "分支、标签或提交(留空使用默认分支)": "ブランチ・タグ・コミット(空欄で既定のブランチ)", "分组名": "グループ名", "分组名,例如「常用」": "グループ名(例:「よく使う」)", "切换菜单": "メニューを切り替える", "列表 = 模型管理页里所有已启用的模型。助手走本地网关发起对话,消耗所选账号的额度。": "一覧は「モデル管理」ページで有効なすべてのモデルです。アシスタントはローカルゲートウェイ経由で対話し、選択したアカウントの枠を消費します。", "创建并进入": "作成して開始", "创建管理员账号": "管理者アカウントを作成", "初始化已完成,正在等待校验和登记。": "初期化が完了し、検証と登録を待っています。", "初始化超时": "初期化がタイムアウト", "删除 {n} 条": "{n} 件を削除", "删除分组": "グループを削除", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "グループ「{name}」を削除しますか?{n} 件のメニューは「{target}」へ移動するので失われません。", "删除空分组「{name}」?": "空のグループ「{name}」を削除しますか?", "删除这个分组(组内菜单移到第一组)": "このグループを削除(メニューは最初のグループへ移動)", "刷新清单": "一覧を更新", "刷新状态": "状態を更新", "加入插件 beta 版": "プラグイン beta 版に参加", "加载中": "読み込み中", "加载助手设置失败:{message}": "アシスタント設定の読み込みに失敗:{message}", "加载失败": "読み込み失敗", "加载失败:{error}": "読み込みに失敗しました:{error}", "加载更多": "さらに読み込む", "加载更早的记录": "以前の記録を読み込む", "加载状态": "読み込み状態", "加载诊断": "読み込み診断", "助手": "アシスタント", "助手自己用哪个模型生成回复": "アシスタントが返答の生成に使うモデル", "助手设置读取失败,工具可能已过时。": "アシスタント設定の読み取りに失敗しました。ツールが古い可能性があります。", "助手走本地网关,消耗所选账号的额度": "アシスタントはローカルゲートウェイ経由で、選択したアカウントの枠を消費します", "勾选即注入该工具;不勾选 = 助手看不到它": "チェックしたツールが注入されます。チェックを外すとアシスタントからは見えません", "十几 MB": "十数 MB", "升级会重新下载并校验插件包(约 {size}),装完立即生效,账号数据不受影响。": "アップグレードではプラグインパックを再ダウンロードして検証します(約 {size})。インストール後すぐに反映され、アカウントデータは影響を受けません。", "协议版本": "プロトコルバージョン", "单签": "個別", "占比": "割合", "即将就绪": "まもなく準備完了", "卸载": "アンインストール", "卸载插件": "プラグインをアンインストール", "卸载插件包": "プラグインパックを削除", "历史数据整理中": "履歴データを整理中", "历史明细不完整,输入、输出与缓存读数无法恢复": "過去の明細が不完全なため、入力・出力・キャッシュの値は復元できません。", "历史未记录 Key": "過去の Key 未記録", "原生插件包,来自项目插件仓库": "プロジェクトのリポジトリから提供されるネイティブプラグイン", "原生辅助授权": "ネイティブヘルパーの許可", "原生辅助授权已失效或暂不可用,请重新选择并确认。": "ネイティブヘルパーの許可が無効になったか、一時的に利用できません。選び直して確認してください。", "原生辅助程序不受 Wasm 沙箱限制,只授权你信任的已安装插件。辅助程序更新后需要重新确认。": "ネイティブヘルパーは Wasm サンドボックスの制限外です。信頼できるインストール済みプラグインにのみ許可してください。更新後は再確認が必要です。", "去下载": "ダウンロード", "去登录": "ログインへ", "参数不完整(需要 account / enabled)": "パラメータが不足しています(account / enabled が必要)", "参数不完整(需要 account / position)": "パラメータが不足しています(account / position が必要)", "参数不完整(需要 provider / id / alias)": "パラメータが不足しています(provider / id / alias が必要)", "参数不完整(需要 provider / id / capabilities)": "パラメータが不足しています(provider / id / capabilities が必要)", "参数不完整(需要 provider / id / enabled)": "パラメータが不足しています(provider / id / enabled が必要)", "参数不完整(需要 provider / position)": "パラメータが不足しています(provider / position が必要)", "发现新版本 {latest}(当前 {current}),点开「设置 - 软件更新」可查看更新日志并下载": "新バージョン {latest} が見つかりました(現在 {current})。「設定 - ソフトウェア更新」を開くと更新履歴を確認してダウンロードできます", "发现新版本 {version}": "新しいバージョン {version} があります", "发送": "送信", "取消日期筛选": "日付フィルターを解除", "受影响的来源将在 {time} 后自动重试": "取得できなかった配信元には {time} 以降に自動で再試行します", "只改映射名,不动上游模型 ID;映射立即生效(新对话即可用)。": "変わるのはマッピング名だけで、アップストリームのモデル ID はそのままです。マッピングはすぐ反映されます(新しい対話から利用可能)。", "只注入工具定义": "ツール定義のみ注入", "只统计已结束的生产请求;失败请求仍计入请求数,Token 用量沿用现有成功请求口径。": "完了した本番リクエストのみを集計します。失敗もリクエスト数に含め、Token 使用量は既存の成功リクエストの集計基準に従います。", "只读": "読み取り専用", "只读工具": "読み取り専用ツール", "可以点击「刷新」读取插件仓库,或从本地 zip 安装插件。": "「更新」でプラグイン一覧を取得するか、ローカル zip からインストールできます。", "可填 {min}–{max} 秒,关闭后保留间隔": "{min}~{max} 秒で指定。オフにしても間隔は保持されます", "可更新": "更新あり", "可更新 v{version}": "v{version} に更新できます", "可更新到 v{version}": "v{version} に更新可能", "可用": "件利用可", "可选,留空使用账号昵称": "任意。空欄の場合はアカウントのニックネームを使用", "各家提供商的转发与账号实现都在插件包里,不随本软件发布。装好插件后,模型转发、添加账号、签到与余额查询才会生效。": "各プロバイダーの転送とアカウント処理はプラグインパックに入っており、本アプリには同梱されません。プラグインを入れると、モデル転送・アカウント追加・チェックイン・残高照会が使えるようになります。", "后台只读取状态,不会自动弹出验证码;验证结果一次性使用,短时间内过期。": "バックグラウンドでは状態を読み取るだけで、認証画面を自動表示しません。認証トークンは一度だけ使用でき、短時間で期限切れになります。", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "固定項目「設定」を含むため、グループごと非表示にはできません(他のメニューは個別に非表示にできます)", "启动较慢,仍在加载;尚未收到失败结果。": "起動に時間がかかっていますが、読み込みは進行中です。失敗は報告されていません。", "四种组合的实际效果": "4 通りの組み合わせの実際の効果", "回复由 {model} 生成 · 走本地网关": "返答は {model} が生成 · ローカルゲートウェイ経由", "固定": "固定", "在 GitHub 上创建令牌(无需勾选任何权限)": "GitHub でトークンを作成(権限の選択は不要)", "填写账号登录所需信息并发起授权;等待、取消与失败原因由共享登录桥处理,设备码和操作指引会显示在上方。": "アカウントのログインに必要な情報を入力して認証を開始してください。待機、キャンセル、失敗の理由は共通ログインブリッジが処理し、デバイスコードと操作の案内は上に表示されます。", "备注名(可选)": "表示名(任意)", "复制失败,请手动选择复制": "コピーに失敗しました。手動で選択してコピーしてください", "复制订阅链接": "サブスクリプションリンクをコピー", "失败 · {status}": "失敗 · {status}", "失败退避": "失敗バックオフ", "奖励 {bonus}": "ボーナス {bonus}", "套餐 {plan}": "プラン {plan}", "套餐池人机验证": "Start Plan の人間認証", "套餐池请求需要验证,请主动开始验证后重试请求": "Start Plan リクエストに認証が必要です。手動で認証を開始してからリクエストを再試行してください。", "安装": "インストール", "安装 {name}": "{name} をインストール", "安装与更新插件时访问 GitHub 用。与「设置 → 更新 → 更新设置」里的同一项互通,填一次即可。不填也能用,只是匿名请求限额较低(60 次/小时)。": "プラグインのインストールと更新で GitHub にアクセスするときに使います。「設定 → 更新 → 更新設定」と同じ項目なので、どちらか一方に入力すれば十分です。未入力でも使えますが、匿名リクエストの上限が低くなります(60 回/時間)。", "安装于 {time}": "{time} にインストール", "安装包已就绪,点「安装」即可完成更新": "インストールパッケージの準備ができました。「インストール」で更新が完了します", "安装插件包": "プラグインパックをインストール", "安装时间": "インストール日時", "安装脚本插件": "スクリプトプラグインをインストール", "完成时间:{time}": "完了時刻:{time}", "官方": "公式", "官方与推荐来自 Magpie 官方名单;第三方来自 GitHub 的 magpie-plugin 标签,不代表官方推荐。": "公式・おすすめは Magpie 公式カタログに基づきます。サードパーティーは GitHub の magpie-plugin トピックから取得したもので、公式の推奨を意味しません。", "官方签名:包内容与发布者签的完全一致,未被改过": "公式署名:パックの内容は発行者が署名したものと完全に一致しており、改変されていません", "定时": "定期", "定时任务": "定期タスク", "实际注入": "実際の注入内容", "客户端分布": "クライアント別内訳", "客户端统计": "クライアント統計", "宿主错误": "ホストエラー", "对话": "チャット", "对话模型": "対話モデル", "对话模型已切换": "対話モデルを切り替えました", "将修改 {model} 的 {n} 项能力:": "{model} の能力 {n} 項目を変更します:", "将修改 {n} 个模型的启停状态:": "{n} 個のモデルの有効 / 無効を変更します:", "将修改 {n} 个账号的启用状态(其中禁用 {k} 个):": "{n} 個のアカウントの有効状態を変更します(うち {k} 個を無効化):", "将对 {model} 发起一次真实请求:": "{model} に実際のリクエストを 1 回送信します:", "将执行 {label}。": "{label} を実行します。", "将把「{provider}」整组移到第 {position} 顺位:": "「{provider}」のグループ全体を {position} 番目に移動します:", "将把账号「{account}」移到第 {position} 顺位:": "アカウント「{account}」を {position} 番目に移動します:", "将改动 {n} 条映射({parts}):": "マッピング {n} 件を変更します({parts}):", "小米 MiMo": "Xiaomi MiMo", "尚未取得插件清单": "プラグイン一覧は未取得です", "尚未检查更新": "更新未確認", "尚未登录": "まだログインしていません", "已下载": "ダウンロード済み", "已下载,待安装": "ダウンロード済み・インストール待ち", "已修改 {n} 个模型": "{n} 個のモデルを変更しました", "已修改 {n} 个账号": "{n} 個のアカウントを変更しました", "已修改 {n} 项能力": "能力 {n} 項目を変更しました", "已停止这次回答。": "この回答を停止しました。", "已全部取消勾选": "すべてのチェックを外しました", "已关闭自动检查": "自動チェックをオフにしました", "已删除分组「{name}」": "グループ「{name}」を削除しました", "已加载": "読み込み済み", "已勾选 {n} / {total}": "{n} / {total} 選択中", "已勾选「{label}」": "「{label}」を選択しました", "已勾选工具": "ツールあり", "已取消「{label}」": "「{label}」の選択を解除しました", "已启动安装器": "インストーラーを起動しました", "已填写(粘贴新令牌可覆盖)": "入力済み(新しいトークンを貼り付けると上書きされます)", "已复制:{text}": "コピーしました:{text}", "已开启自动检查": "自動チェックをオンにしました", "已恢复推荐勾选": "推奨のチェックに戻しました", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "既定のグループに戻しました:概要 / 転送経路 / 診断 / システム", "已改动 {n} 条映射": "マッピング {n} 件を変更しました", "已新建分组「{name}」,点组头的 + 把菜单移进来": "グループ「{name}」を作成しました。見出しの + でメニューを移動できます", "已是最新版本": "最新バージョンです", "已显示 {shown} / {total} 个提供商插件": "プロバイダープラグイン {total} 件中 {shown} 件を表示", "已更新 {count} 个插件": "{count} 個のプラグインを更新しました", "已更新 {done} 个插件,{failed} 个失败:{error}": "{done} 個のプラグインを更新しました。{failed} 個失敗:{error}", "已注入 {n} / {total} 个工具 · 系统提示词:{state}": "ツール {n} / {total} 個を注入 · システムプロンプト:{state}", "已添加的服务器": "追加済みのサーバー", "已由其他插件接管,请到对应插件中管理。": "このプロバイダーは別のプラグインが管理しています。該当するプラグインの設定で管理してください。", "已登录": "ログイン済み", "已离线 · 显示的是缓存内容": "オフライン — キャッシュを表示中", "已移到第 {n} 顺位": "{n} 番目に移動しました", "已签名": "署名済み", "开": "オン", "开关和选项即时保存;输入项请点击对应的「保存」按钮。": "スイッチと選択項目はすぐに保存されます。入力欄は対応する「保存」ボタンを押してください。", "开始时间:{time}": "開始時刻:{time}", "开始验证": "認証を開始", "当前": "現在", "当前一个工具都没勾选,助手只能纯聊天。去「设置 → AI 助手 → 工具」里勾上需要的工具。": "ツールが 1 つも選ばれていないため、アシスタントはチャットしかできません。「設定 → AI アシスタント → ツール」で必要なツールにチェックしてください。", "当前兼容无运行时 npm 依赖的提供商插件;不加载 Magpie 界面、Matrix 工具或 Pi 扩展。": "現在は実行時の npm 依存がないプロバイダープラグインに対応しています。Magpie の画面、Matrix ツール、Pi 拡張は読み込みません。", "当前平台": "現在のプラットフォーム", "当前平台暂无包": "このプラットフォーム用のパッケージがありません", "当前插件未申请原生辅助能力": "ネイティブヘルパーを要求するプラグインはありません", "当前暂不可安装": "現在インストールできません", "当前模型请求免人机验证": "現在、モデルリクエストに人間認証は不要です。", "当前版本 {current},最低可用版本 {minimum}。": "現在のバージョンは {current}、利用可能な最低バージョンは {minimum} です。", "当前版本 {version}": "現在のバージョン {version}", "当前网关要求插件版本不低于 v{version},补齐前暂不加载。": "このゲートウェイにはプラグイン v{version} 以降が必要です。更新するまで読み込みません。", "当前:已关闭(助手不收到任何系统提示词,工具定义照发)": "現在:オフ(アシスタントにシステムプロンプトは送られませんが、ツール定義は送信されます)", "当前:已开启 · 使用内置默认提示词(还没自定义)": "現在:オン · 組み込みの既定プロンプトを使用中(未カスタマイズ)", "当前:已开启 · 自定义内容 {n} 字": "現在:オン · カスタム内容 {n} 文字", "影响转发": "転送に影響", "待就绪": "準備待ち", "待确认": "確認待ち", "总剩余 {total}": "残り合計 {total}", "恢复上游原值": "アップストリームの元の値に戻す", "恢复推荐": "推奨に戻す", "恢复默认侧边栏": "サイドバーを既定に戻す", "成功 / 失败": "成功 / 失敗", "成功领取": "受取済み", "我会在动手前把改动列给你确认。": "変更内容は実行前に一覧で示し、確認を待ちます。", "我信任所选辅助程序并允许它执行声明的本机操作": "選択したヘルパーを信頼し、宣言されたローカル操作を許可します", "我信任此插件来源,并允许它在网关电脑上运行。": "このプラグインの提供元を信頼し、ゲートウェイのコンピューターでの実行を許可します。", "所有菜单都已在这一组": "すべてのメニューがこのグループにあります", "手动凭证 JSON": "認証情報 JSON の手動入力", "手动凭证 JSON(兼容入口)": "認証情報 JSON の手動入力(互換用)", "执行": "実行", "执行时刻": "実行時刻", "把菜单移入 {name}": "メニューを {name} へ移動", "把菜单移入「{name}」": "メニューを「{name}」へ移動", "报表": "レポート", "拖动分组 {name}": "グループ {name} をドラッグ", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "左側の ⠿ をドラッグして順序を変更(メニューはグループをまたげます)。スイッチで表示/非表示、グループ名をクリックで名前変更、グループ見出しの + で他のメニューを移動、目のボタンでグループごと非表示。変更は即座に反映され保存されます(左のサイドバーが結果です)。キーボード操作:ハンドルにフォーカスして Alt+↑ / ↓。", "拖动菜单 {name}": "メニュー {name} をドラッグ", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "ドラッグでグループの順序を変更(Alt+↑ / ↓ でも可)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "ドラッグで順序を変更、グループをまたげます(Alt+↑ / ↓ でも可)", "按 API Key 筛选": "API Key で絞り込み", "按 Token": "Token 順", "按天请求趋势": "日別リクエスト推移", "按客户端筛选": "クライアントで絞り込み", "按访问网关的 API Key 统计生产请求,不包含助手对话和模型测试。停用、删除 Key 不会删除历史用量;密钥值不会进入报表。历史没有记录身份的请求单列,不能追溯到某把 Key。": "ゲートウェイにアクセスする API Key ごとに本番リクエストを集計し、アシスタントの会話とモデルテストは除外します。Key を無効化・削除しても過去の使用量は残り、秘密鍵の値はレポートに含めません。Key が未記録の過去のリクエストは別枠に表示し、特定の Key には遡って割り当てません。", "按请求 User-Agent 识别的客户端类型统计,不代表设备或用户数。“其它”表示有 User-Agent 但未匹配已知类型;“未记录客户端”表示旧数据或请求未带 User-Agent。": "リクエストの User-Agent から識別したクライアント種類で集計します。端末数やユーザー数ではありません。「その他」は User-Agent が既知の種類に一致しない場合、「クライアント未記録」は旧データまたは User-Agent がない場合です。", "按请求数": "リクエスト数順", "按间隔检查插件版本,在对应卡片显示更新;关闭后仍可手动检查。自动更新或自动下载开启时也使用此间隔。": "この間隔でプラグインのバージョンを確認し、カードに更新を表示します。無効でも手動確認は可能です。自動更新と自動ダウンロードも同じ間隔を使用します。", "按需下载": "必要時にダウンロード", "按需安装插件,为 AI 路由网关扩展提供商能力。插件独立于主程序更新,下载完成后自动校验并安装。": "必要なプラグインをインストールして AI ゲートウェイを拡張できます。プラグインは本体とは別に更新し、ダウンロード後に自動で検証・インストールします。", "换一组筛选条件,或把来源和状态都切回「全部」。": "絞り込み条件を変えるか、ソースと状態をどちらも「すべて」に戻してください。", "授权": "許可", "排序已保存,但列表刷新失败:{message}": "順序は保存されましたが、一覧を更新できませんでした:{message}", "排序未保存:{message}": "順序を保存できませんでした:{message}", "排序设置迁移失败:{message}": "並べ替え設定を移行できませんでした:{message}", "排第 1 的接走所有请求,直到它不能答(限流 / 故障 / 额度尽)才轮到下一位 —— 就是「从上往下」的现状行为。": "1 番目のアカウントが答えられなくなる(レート制限 / 障害 / 枠切れ)まで全リクエストを受け持ち、そこで初めて次に回ります —— 今までどおりの「上から順」の動作です。", "接入 Agnes AI 国际版:浏览器登录、在线模型目录、套餐用量与美元余额;与 Agnes Code 桌面版独立。": "Agnes AI 国際版に接続:ブラウザログイン、オンラインモデル一覧、プラン使用量と米ドル残高。Agnes Code デスクトップ版とは別の製品です。", "接入 Agnes Code:本机登录态或 accessToken、模型目录、积分与登录奖励观测。": "Agnes Code に接続:ローカルのログイン情報または accessToken、モデル一覧、ポイント、ログイン報酬の確認。", "接入 Codar(科搭):本机凭据、模型目录、积分与滚动窗口签到。": "Codar(科搭)に接続:ローカル認証情報、モデル一覧、ポイント、ローリング期間のチェックイン。", "接入 DeepAI Code:网页登录、本机凭据、模型目录、额度查询与签到。": "DeepAI Code に接続:Web ログイン、ローカル認証情報、モデル一覧、利用枠の照会、チェックイン。", "接入 JoyCode(京东):网页登录、企业租户、模型目录与额度明细。": "JoyCode(京東)に接続:Web ログイン、企業テナント、モデル一覧、利用枠の詳細。", "接入 WPS 灵犀:网页登录、客户端导入、Cookie、模型目录与智点;签到及附带任务默认允许。": "WPS 霊犀に接続:Web ログイン、クライアントからの取り込み、Cookie、モデル一覧、ポイント。チェックインと付随タスクは既定で許可されます。", "接入中国移动云 MClaw:浏览器登录、在线模型目录、aitokens 额度与凭证续期。": "中国移動クラウドの MClaw に接続:ブラウザログイン、オンラインモデル一覧、aitokens 利用枠と認証情報の更新。", "接入书生·端砚墨点计划:浏览器登录、API Key、模型目录与墨点额度窗口。": "Intern InkStone の墨点プランに接続:ブラウザログイン、API Key、モデル一覧と期間ごとの墨点利用枠。", "接口不兼容": "インターフェース非互換", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "サイドバーに表示するメニュー、その順序、グループ分けを設定します。非表示はナビゲーションの表示だけに影響し、アクセス権は失われません。非表示にしたページも URL から直接開けます。", "提供商启停": "プロバイダーの有効・無効", "提供商增强": "プロバイダー拡張", "提供商设置": "プロバイダー設定", "提示词": "プロンプト", "提示词开关": "プロンプトのスイッチ", "插件": "プラグイン", "插件与当前网关的公共接口不兼容,暂未加载。": "プラグインは現在のゲートウェイの公開インターフェースと互換性がないため、読み込まれていません。", "插件仓库": "プラグインリポジトリ", "插件任务": "プラグインのタスク", "插件包与主程序分开安装、分开升级。卸载插件后账号数据仍然保留,重新装回即可继续使用;仅该包提供的转发与添加账号需要插件,本体订阅不受影响。": "プラグインパックは本体とは別にインストール・更新します。削除してもアカウントデータは残り、再インストールで引き続き使用できます。そのパックが提供する転送とアカウント追加のみがプラグインを必要とし、本体のサブスクリプションには影響しません。", "插件包与主程序分开安装、分开升级。卸载插件后账号数据仍然保留,重新装回即可继续使用;但转发与添加账号需要插件在位。": "プラグインパックは本体とは別にインストール・更新します。削除してもアカウントデータは残り、入れ直せばそのまま使えます。ただし転送とアカウント追加にはプラグインが必要です。", "插件包大小不能超过 {n} MiB": "プラグインパックのサイズは {n} MiB 以下である必要があります。", "插件包已卸载": "プラグインパックを削除しました", "插件包已安装": "プラグインパックをインストールしました", "插件包已安装到 v{version}": "プラグイン v{version} をインストールしました", "插件包已更新到 v{version}": "プラグインパックを v{version} に更新しました", "插件包的可执行文件不在磁盘上(可能被手工删除或移动),请重新安装。": "プラグインパックの実行ファイルがディスク上にありません(手動で削除・移動された可能性があります)。再インストールしてください。", "插件参数必须是 JSON 对象": "プラグインの設定は JSON オブジェクトで指定してください", "插件发布信息读取失败,请稍后刷新": "プラグインのリリース情報を取得できませんでした。後で更新してください。", "插件只声明了短信登录,但没有下发可用的动态表单;此界面不会猜测短信接口": "プラグインは SMS ログインのみを宣言していますが、利用可能な動的フォームを提供していません。この画面では SMS API を推測しません。", "插件尚未声明有效版本,暂时无法安装": "プラグインに有効なバージョンが指定されていないため、まだインストールできません。", "插件尚未提供可下载的发布包": "このプラグインにはまだダウンロード可能なリリースがありません。", "插件已就绪,账号列表将自动同步。": "プラグインの準備ができました。アカウント一覧は自動更新されます。", "插件更新未完成": "プラグインの更新が完了しませんでした", "插件未启用或已不再申请此权限;已有授权仍可撤销。": "プラグインは無効か、この権限を要求しなくなりました。既存の許可は取り消せます。", "插件未实现 auth.methods(501),且没有可用的旧版登录声明;仅保留需要插件确认的手动凭证 JSON 入口": "プラグインは auth.methods を実装しておらず(501)、利用可能な旧版のログイン宣言もありません。プラグインによる確認が必要な認証情報 JSON の手動入力のみを残しています。", "插件未实现 auth.methods(501);以下入口仅依据旧版登录声明显示": "プラグインは auth.methods を実装していません(501)。以下の項目は旧版のログイン宣言のみに基づいて表示されます。", "插件没有声明可用的账号登录方式,请更新插件或联系插件作者": "プラグインに利用可能なアカウントログイン方式が宣言されていません。プラグインを更新するか、作者にお問い合わせください。", "插件清单暂未完整读取": "プラグイン一覧を完全には取得できていません", "插件版本(留空使用 latest)": "プラグインのバージョン(空欄で latest)", "插件状态已变更,但账号列表同步失败。请回到账号页点击「刷新」重试。": "プラグイン状態は変更されましたが、アカウント一覧の同期に失敗しました。アカウントページで「更新」をクリックして再試行してください。", "插件独立安装与更新。卸载后账号数据仍会保留;脚本插件共用一个按需下载的运行时。": "プラグインは個別にインストール・更新します。削除してもアカウントデータは残り、スクリプトプラグインは必要時に取得するランタイムを共有します。", "插件登录指引": "プラグインのログイン案内", "插件登录方式包含重复的输入字段": "プラグインのログイン方式に重複した入力項目があります。", "插件登录选择字段包含无效或重复的选项": "プラグインのログイン選択項目に無効または重複した選択肢があります。", "插件登录选择字段缺少选项列表": "プラグインのログイン選択項目に選択肢の一覧がありません。", "插件目录": "プラグインディレクトリ", "插件设置": "プラグイン設定", "插件设置已保存": "プラグイン設定を保存しました", "插件返回了无效的登录字段,请更新插件或联系作者": "プラグインが無効なログイン項目を返しました。プラグインを更新するか、作者にお問い合わせください。", "插件返回了无效的登录方式,请更新插件或联系作者": "プラグインが無効なログイン方式を返しました。プラグインを更新するか、作者にお問い合わせください。", "插件选项": "プラグインの設定", "搜索…": "検索…", "搜索插件": "プラグインを検索", "撤销授权": "許可を取り消す", "支持自动授权、设备码、手动授权码和插件声明的凭据表单;本机读取作用于网关电脑。": "自動認証、デバイスコード、手動認証コード、プラグインが定義する認証フォームに対応します。ローカル読み取りの対象はゲートウェイのコンピューターです。", "改动立即生效;禁用后指向它的请求会落到下一个候选。": "変更はすぐ反映されます。無効化すると、それ宛のリクエストは次の候補に回ります。", "改动类工具": "変更系ツール", "改成": "変更後", "文件缺失": "ファイル欠落", "文档": "ドキュメント", "新": "新", "新分组名": "新しいグループ名", "新增 {n} 条": "{n} 件を追加", "新对话": "新しい対話", "新建分组": "グループを追加", "无凭证": "認証情報なし", "无法解密": "復号できません", "无法读取插件更新进度,请刷新后查看结果。": "プラグインの更新状況を読み取れませんでした。再読み込みして結果を確認してください。", "无法读取登录方式": "ログイン方式を読み込めません", "日志": "ログ", "旧版本保存的正文可能已截断,无法恢复缺失内容": "旧バージョンで保存された本文は切り詰められている可能性があり、欠落した内容は復元できません", "旧版浏览器登录暂不接收备注名和登录代理,请添加后在账号设置中调整。": "旧版のブラウザログインでは現在、表示名とログイン用プロキシを受け付けません。アカウント追加後にアカウント設定で変更してください。", "旧版登录方式": "旧版のログイン方式", "映射名": "マッピング名", "显示 {name}": "{name} を表示", "显示分组 {name}": "グループ {name} を表示", "显示这一组": "このグループを表示", "智能": "AI", "暂不可安装": "インストール不可", "暂无可安装的插件": "インストール可能なプラグインはありません", "暂无可用的原生辅助程序,请先安装并启用所需插件。": "利用できるネイティブヘルパーがありません。必要なプラグインをインストールして有効にしてください。", "暂时无法获取插件状态,显示上次结果;这不代表插件启动失败。": "プラグインの状態を取得できないため、前回の結果を表示しています。起動失敗を意味するものではありません。", "暂未发布": "未公開", "暂未取得明确的加载结果,不能据此判断启动失败。": "読み込み結果はまだ確定していません。これだけで起動失敗とは判断できません。", "更多": "その他", "更新": "更新", "更新到 v{version}": "v{version} に更新", "更新前无法继续调用模型;账号、配置和历史记录不会被删除。": "更新するまでモデルを呼び出せません。アカウント、設定、履歴は削除されません。", "更新或启停会等待共享宿主内的请求结束;账号数据始终由网关统一保存。": "更新や有効・無効の切り替えは、共有ホストのリクエスト完了を待って行います。アカウントデータは常にゲートウェイが管理します。", "更新/重装": "更新/再インストール", "最大化": "最大化", "最小化": "最小化", "最近调用": "最終呼び出し", "有": "あり", "有 {count} 个插件可更新": "{count} 個のプラグインに更新があります", "有插件包的协议版本与当前网关不一致({versions}),请下载对应版本的插件包。": "プロトコルバージョンがこのゲートウェイと一致しないプラグインパックがあります({versions})。対応するバージョンのパックをダウンロードしてください。", "有新版本,重启后生效": "新しいバージョンがあります。再起動で反映", "有新版本:v{current} → v{latest}": "新しいバージョンがあります:v{current} → v{latest}", "有更新": "更新あり", "服务器": "サーバー", "服务器已切换,请重新加载页面": "サーバーが切り替わりました。ページを再読み込みしてください", "未加载": "未読み込み", "未同步": "未同期", "未就绪": "準備未完了", "未授权": "未許可", "未登录": "未ログイン", "未知工具「{name}」:它在设置里可能刚被取消勾选,或这一版助手还不认识它。": "不明なツール「{name}」:設定でチェックを外したばかりか、このバージョンのアシスタントがまだ認識していない可能性があります。", "未签名": "未署名", "未签名包不会自动覆盖;点击「补齐插件」将安装官方签名包。": "未署名のパッケージは自動で置き換えません。「必要なプラグインを更新」を押すと公式署名付きパッケージをインストールします。", "未签名:可以正常使用,但无法证明这个包出自官方;升级时同样只做格式校验": "未署名:通常どおり使えますが、このパックが公式のものであることを証明できません。アップグレード時も形式チェックのみ行います", "未能保存自动刷新设置": "自動更新の設定を保存できませんでした", "未能读取自动刷新设置": "自動更新の設定を読み込めませんでした", "未记录": "未記録", "未记录客户端": "クライアント未記録", "未运行": "停止中", "未选择服务器": "サーバー未選択", "本地网关监听状态": "ローカルゲートウェイのリッスン状態", "本次初始化超过等待时限,已停止;可查看诊断后重试。": "初期化が制限時間を超えたため停止しました。診断を確認してから再試行できます。", "本次加载未完成,请查看诊断。": "今回の読み込みは完了しませんでした。診断を確認してください。", "本次用时 {n} 秒": "今回の所要時間:{n} 秒", "权限": "権限", "来自 Magpie 社区的插件,共用一个按需下载的运行时": "Magpie コミュニティのプラグインは、必要時に取得するランタイムを共有します", "来自环境变量": "環境変数から", "来自环境变量 GITHUB_TOKEN": "環境変数 GITHUB_TOKEN から", "松开刷新": "離して更新", "查看 GitHub 仓库:{repository}": "GitHub リポジトリを開く:{repository}", "查看全部": "すべて表示", "查看参数": "パラメータを表示", "查看发布说明": "リリースノートを見る", "查看发布页面": "リリースページを開く", "查看提供商插件": "プロバイダープラグインを見る", "查看更新日志": "更新履歴を表示", "查看结果": "結果を表示", "查看进度": "進捗を確認", "标题总结设置": "タイトル生成設定", "桌面桥不可用(本页需要在 Agent2API 客户端里打开)": "デスクトップブリッジが利用できません(このページは Agent2API クライアント内で開く必要があります)", "检查更新失败": "更新の確認に失敗しました", "检测到更新后自动下载、校验并安装已启用的官方签名插件。": "更新を検出すると、有効な公式署名付きプラグインを自動でダウンロード・検証・インストールします。", "检测到更新后自动下载、校验并安装已启用的官方签名插件。未签名或第三方插件仍需手动更新。": "有効な公式署名付きプラグインの更新を自動でダウンロード・検証・インストールします。未署名や第三者のプラグインは手動更新が必要です。", "模型分布": "モデル別内訳", "模型管理": "モデル管理", "正在下载 Bun 运行时": "Bun ランタイムをダウンロード中", "正在下载…": "ダウンロード中…", "正在下载脚本插件": "スクリプトプラグインをダウンロード中", "正在初始化插件,尚未收到失败结果。": "プラグインを初期化しています。失敗は報告されていません。", "正在加载": "読み込み中", "正在加载 · {n} 家提供商的账号暂未显示,就绪后自动恢复。": "読み込み中 · {n} 社のプロバイダーのアカウントは一時的に非表示です。準備ができると自動的に再表示されます。", "正在加载新插件…": "新しいプラグインを読み込み中…", "正在加载脚本插件": "スクリプトプラグインを読み込み中", "正在启动": "起動中", "正在启动插件,账号将在就绪后自动恢复。": "プラグインを起動しています。準備ができるとアカウントは自動的に再表示されます。", "正在完成人机验证…": "認証を完了しています…", "正在恢复原有脚本插件": "以前のスクリプトプラグインを復元中", "正在恢复旧版本插件…": "以前のプラグインバージョンを復元中…", "正在更新第 {index}/{total} 个…": "{total} 個中 {index} 個目を更新中…", "正在校验包内容…": "パッケージを検証中…", "正在检查…": "確認中…", "正在检查或准备脚本运行环境。": "スクリプト実行環境を確認・準備しています。", "正在自动补齐官方插件,不受日常更新开关和通道限制。": "通常の更新設定やチャンネルに関係なく、公式プラグインを必要なバージョンに自動更新しています。", "正在补齐插件…": "必要なプラグインを更新中…", "正在识别二维码…": "QR コードを認識中…", "正在读取、校验并安装插件包…": "プラグインを読み込み・検証・インストール中…", "正在读取插件信息 {done}/{total}": "プラグイン情報を取得中 {done}/{total}", "正在读取插件列表…": "プラグイン一覧を読み込み中…", "正在读取插件清单…": "プラグイン一覧を取得中…", "正在读取插件登录方式…": "プラグインのログイン方式を読み込み中…", "正在连接…": "接続中…", "正在重试…": "再試行中…", "正在验证…": "認証中…", "此 OAuth 方法未声明备注名字段,账号名由插件获取;添加后可在账号设置中修改。": "この OAuth 方式では表示名の項目が宣言されていません。アカウント名はプラグインが取得し、追加後にアカウント設定で変更できます。", "此插件不是提供商插件,当前无法安装": "これはプロバイダープラグインではないため、ここではインストールできません。", "此方式可能需要手动提交授权回调。完成官方登录后,按共享登录桥的提示粘贴完整回调地址;不要把回调地址当作 API Key 或 Token。": "この方式では認証コールバックの手動送信が必要な場合があります。公式ログインの完了後、共通ログインブリッジの案内に従って完全なコールバック URL を貼り付けてください。コールバック URL を API Key や Token として扱わないでください。", "此旧版登录声明无法安全映射到动态表单,请联系插件作者": "この旧版のログイン宣言は動的フォームに安全に対応付けられません。プラグインの作者にお問い合わせください。", "此登录方式需要由共享登录桥发起": "このログイン方式は共通ログインブリッジから開始する必要があります。", "每台服务器的登录状态各自独立保存,切换后不用重新登录。地址改掉后需要重新登录。": "ログイン状態はサーバーごとに個別に保存されるため、切り替え直しても再ログインは不要です。アドレスを変更した場合は再ログインが必要です。", "每日签到及一次性任务;可能消耗智点、发送对话并创建及解散群聊": "毎日のチェックインと一度限りのタスク。クレジットの消費、会話の送信、グループチャットの作成と解散を伴う場合があります", "每轮": "毎ターン", "没有可恢复的维度明细": "復元可能な内訳がありません", "没有可更新的版本": "更新できるバージョンはありません", "没有找到提供商「{provider}」的账号": "プロバイダー「{provider}」のアカウントが見つかりません", "没有找到账号「{name}」": "アカウント「{name}」が見つかりません", "没有符合筛选条件的插件": "条件に一致するプラグインはありません", "没有说明": "説明なし", "没有近期套餐池请求,不生成验证码令牌": "最近の Start Plan リクエストがないため、認証トークンは生成しません。", "没给账号名": "アカウント名が指定されていません", "注入系统提示词": "システムプロンプトを注入", "活动": "キャンペーン", "浅色": "ライト", "消耗该账号额度": "このアカウントの枠を消費します", "消耗额度": "枠を消費", "深色": "ダーク", "添加": "追加", "添加失败": "追加に失敗しました", "添加服务器": "サーバーを追加", "清单更新于 {time}": "一覧の更新:{time}", "清空 = 回到内置默认(与「恢复默认」等价)。": "空にすると組み込みの既定に戻ります(「デフォルトに戻す」と同じ)。", "清除失败:{error}": "削除に失敗しました:{error}", "点「编辑」弹窗改内容;开关关掉就整段不发。": "「編集」をクリックするとダイアログで内容を変更できます。スイッチを切ると丸ごと送信されません。", "点击重命名": "クリックで名前を変更", "熔断": "サーキットブレーカー", "熔断时长(秒)": "サーキットブレーカー時間(秒)", "版本 {version} · 从 GitHub 直接下载安装包": "バージョン {version} · GitHub から直接ダウンロードします", "版本 {version} · 从网关下载安装包": "バージョン {version} · ゲートウェイからパッケージをダウンロードします", "版本 {version} · 更新包需从 Release 页面获取": "バージョン {version} · 更新パッケージは Release ページから取得してください", "环境变量 Key": "環境変数の Key", "用一句话让我查或改本机的模型转发配置。": "一言で指示してください。本機のモデル転送設定を調べたり変更したりします。", "用量详情": "使用量の詳細", "由其他插件接管": "別のプラグインが管理", "电脑端已关闭「软件版本检查」,此处只做手动检查": "デスクトップ版で「ソフトウェアのバージョン確認」がオフのため、ここでは手動チェックのみ行います", "登录、模型调用、模型列表、余额查询和签到等功能,可能因插件实现或上游变化而不可用。": "ログイン、モデル呼び出し、モデル一覧、残高照会、チェックインなどの機能は、プラグインの実装や上流の変更により利用できなくなる場合があります。", "登录指引 / 设备码授权": "ログインの案内 / デバイスコード認証", "登录支持自动完成的 OAuth/设备码和 API Key;要求手动回调的插件暂不支持。": "自動で完了する OAuth/デバイスコードログインと API Key に対応しています。手動コールバックが必要なプラグインには未対応です。", "登录方式说明": "ログイン方式の説明", "登录桥未确认账号添加完成": "ログインブリッジからアカウント追加の完了を確認できませんでした。", "登录面板": "ログイン", "监听 127.0.0.1": "127.0.0.1 でリッスン中", "直接加载兼容的 Magpie / OpenCode v1 提供商包,多个插件共用一个 Bun 进程。": "互換性のある Magpie / OpenCode v1 プロバイダーパッケージを直接読み込みます。複数のプラグインで 1 つの Bun プロセスを共有します。", "直接说要改什么 / 查什么…(Enter 发送,Shift+Enter 换行)": "変更したいこと / 調べたいことをそのまま入力…(Enter で送信、Shift+Enter で改行)", "确定删除账号「{name}」?{note}": "アカウント「{name}」を削除しますか?{note}", "确定卸载「{name}」吗?卸载后这个包里的提供商将无法转发,也无法添加账号。账号数据本身不会被删除,重新安装后可以继续使用。": "「{name}」を削除しますか?削除するとこのパックのプロバイダーは転送もアカウント追加もできなくなります。アカウントデータ自体は削除されず、再インストール後にそのまま使えます。", "确定卸载「{name}」吗?对应提供商将停止转发,账号数据仍然保留,重新安装后恢复。": "「{name}」をアンインストールしますか?対応するプロバイダーの転送は停止します。アカウントデータは保持され、再インストール後に利用できます。", "确认后立即生效": "確認後すぐに反映されます", "确认并安装": "確認してインストール", "确认授权": "許可を確定", "社区": "コミュニティ", "社区插件": "コミュニティプラグイン", "禁用会把账号移出转发队列;若这条线路没有别的可用账号,请求会直接失败。": "無効化するとアカウントは転送キューから外れます。この経路に他に使えるアカウントがなければ、リクエストはそのまま失敗します。", "移入「{name}」": "「{name}」へ移動", "稍后": "あとで", "空分组 · 点组头的 + 把菜单移进来": "空のグループ · 見出しの + でメニューを移動できます", "立即刷新": "今すぐ更新", "立即升级": "今すぐアップグレード", "第 {current} / {total} 页": "{current} / {total} ページ", "第三方": "サードパーティ", "等待前面的插件完成,不代表加载失败。": "先行するプラグインの完了を待っています。読み込み失敗ではありません。", "等待加载": "読み込み待ち", "等待当前任务结束,插件继续服务…": "実行中のタスクの終了を待機中。プラグインは引き続き動作しています…", "等待窗口": "受取可能時刻待ち", "等待脚本插件的在途请求和登录完成": "実行中のリクエストとログインの完了を待機中", "等待账号登录完成…": "アカウントのログイン完了を待っています…", "等待运行环境恢复": "実行環境の復旧待ち", "等这一轮跑完…": "このターンが終わるまでお待ちください…", "签到中心": "チェックインセンター", "签到及插件附带任务;可能消耗额度,具体行为由插件决定": "チェックインとプラグインの付随タスク。クレジットを消費する場合があり、具体的な動作はプラグインによって決まります", "签到及附带任务默认允许,实际执行遵循签到中心的开关和计划。": "チェックインおよび付随タスクは既定で許可され、実際の実行はチェックインセンターのスイッチとスケジュールに従います。", "粘贴 GitHub 令牌(ghp_… / github_pat_…)": "GitHub トークンを貼り付け(ghp_… / github_pat_…)", "粘贴插件要求的 JSON 对象,不要包含 provider、name、proxy 或登录流程控制字段": "プラグインが要求する JSON オブジェクトを貼り付けてください。provider、name、proxy やログイン処理の制御項目は含めないでください。", "系统提示词 + 工具定义": "システムプロンプト + ツール定義", "系统提示词已保存": "システムプロンプトを保存しました", "系统提示词已关闭": "システムプロンプトをオフにしました", "系统提示词已开启": "システムプロンプトをオンにしました", "统计排序": "統計の並び順", "继续安装": "インストールを続行", "缓存读取": "キャッシュ読み取り", "编辑服务器": "サーバーを編集", "编辑系统提示词": "システムプロンプトを編集", "网关 Key": "ゲートウェイキー", "网关没有返回有效的登录方式列表,无法确认该插件的登录能力": "ゲートウェイから有効なログイン方式の一覧が返されなかったため、このプラグインのログイン機能を確認できません。", "网关运行中": "ゲートウェイ稼働中", "网络代理": "ネットワークプロキシ", "网页提供商": "Web プロバイダー", "网页登录(旧版声明)": "ウェブログイン(旧版の宣言)", "能力位决定下游看到的声明(能不能贴图、能塞多少上下文),不改上游的真实行为。": "能力フラグは下流に見える宣言(画像入力の可否、コンテキスト量)を決めるもので、アップストリームの実際の挙動は変わりません。", "脚本不是安全沙箱,可以访问网关所在电脑的文件和网络。不要安装来历不明的插件。": "スクリプトはサンドボックス化されておらず、ゲートウェイのコンピューター上のファイルやネットワークにアクセスできます。出所不明のプラグインはインストールしないでください。", "脚本插件共用运行环境;重试会等待当前任务结束,不会删除账号或重新安装插件。": "スクリプトプラグインは実行環境を共有します。再試行は実行中のタスクの終了を待ち、アカウントの削除やプラグインの再インストールは行いません。", "脚本签到可能包含额外任务并消耗额度。WPS 灵犀还可能发送对话、创建及解散群聊;授权后会接入现有自动签到计划。": "スクリプトのチェックインは追加タスクを実行し、クレジットを消費する場合があります。WPS 霊犀では会話の送信、グループチャットの作成と解散も行われる場合があります。許可すると既存の自動チェックイン予定に組み込まれます。", "自动": "自動", "自动刷新间隔(秒)": "自動更新の間隔(秒)", "自动安装": "自動インストール", "自动更新插件": "プラグインを自動更新", "自动检查插件更新": "プラグインの更新を自動確認", "自动维护": "自動メンテナンス", "至少要保留一个分组": "グループは最低 1 つ必要です", "补签": "補填", "补齐插件": "必要なプラグインを更新", "订阅链接必须是 http:// 或 https:// 开头": "サブスクリプションリンクは http:// または https:// で始まる必要があります", "设备授权码:{code}": "デバイス認証コード:{code}", "设备码授权时,请按网关给出的指引在官方页面确认设备授权码。没有授权地址不等于失败,可能需要在网关本机客户端完成操作;请以共享登录桥返回的状态为准。": "デバイスコード認証では、ゲートウェイの案内に従い公式ページでデバイス認証コードを確認してください。認証 URL がないことは失敗を意味しません。ゲートウェイのマシン上のクライアントで操作を完了する必要がある場合があります。共通ログインブリッジが返す状態を基準にしてください。", "设置": "設定", "设置不可隐藏(隐藏了只能清缓存找回来)": "「設定」は非表示にできません(戻すにはデータの削除が必要になります)", "设置已生效,但写入磁盘失败(重启后会恢复原设置)": "設定は適用されましたが保存できませんでした(再起動すると元に戻ります)", "设置未同步": "設定が未同期", "诊断": "診断", "诊断信息": "診断情報", "该提供商已不在运行时目录中,请返回列表重新选择": "このプロバイダーは実行時の一覧に存在しなくなりました。一覧に戻って選択し直してください。", "该登录方式没有可选项,无法提交;请更新插件或联系作者": "このログイン方式には選択肢がないため、送信できません。プラグインを更新するか、作者にお問い合わせください。", "请允许安装未知来源应用后重试": "「提供元不明のアプリ」のインストールを許可してから再試行してください", "请先在插件页授权签到及附带任务": "先にプラグインページでチェックインと付随タスクを許可してください", "请先粘贴 GitHub 令牌": "先に GitHub トークンを貼り付けてください", "请先选择有效的 OAuth 登录方式": "先に有効な OAuth ログイン方式を選択してください。", "请在 Release 页面下载后通过 TestFlight 或 App Store 安装": "Release ページからダウンロードし、TestFlight または App Store 経由でインストールしてください", "请填一个分组名": "グループ名を入力してください", "请填写订阅名称": "サブスクリプション名を入力してください", "请填写非空的凭证 JSON 对象,且不超过 256 KiB": "空でない認証情報の JSON オブジェクトを 256 KiB 以下で入力してください。", "请查看上方原因,稍后刷新重试。": "上記の理由を確認し、後で再度更新してください。", "请根据不兼容原因更新插件或网关;不会要求两者版本号一致。": "互換性エラーの内容に応じてプラグインまたはゲートウェイを更新してください。両者のバージョン番号を一致させる必要はありません。", "请求失败": "リクエストに失敗しました", "请求失败:{message}": "リクエスト失敗:{message}", "请求数": "リクエスト数", "请求日志": "リクエストログ", "请确认": "確認してください", "请稍候": "しばらくお待ちください", "请输入 {min}–{max} 之间的整数秒数": "秒数を {min}~{max} の整数で入力してください", "请选择 {label} 的有效选项": "{label} の有効な選択肢を選んでください。", "读取完成的插件会陆续显示,无需停留在此页面等待。": "取得したプラグインから順に表示します。このページを離れても読み込みは続きます。", "读取插件状态失败:{error}": "プラグイン状態の読み取りに失敗しました:{error}", "读取文件失败": "ファイルの読み取りに失敗しました", "读取消耗排序失败:{message}": "消費順序を読み込めませんでした:{message}", "读取设置失败:{error}": "設定の読み込みに失敗しました:{error}", "账号 / 登录出网代理": "アカウント / ログインの送信プロキシ", "账号不在当前队列里": "アカウントが現在のキューにありません", "账号列表响应异常": "アカウント一覧の応答が不正です", "账号已删除": "アカウントを削除しました", "账号已在全局队列第一位": "アカウントはすでにグローバルキューの先頭です", "账号排序接口不可用,请确认网关与界面已更新": "アカウント並べ替え API を利用できません。ゲートウェイと画面が更新済みか確認してください。", "账号登录方式": "アカウントのログイン方式", "趋势统计指标": "推移の指標", "趋势统计维度": "推移の集計軸", "跟随系统": "システム", "路由策略": "ルーティング戦略", "转发能力": "転送機能", "软件版本检查设置不可用": "ソフトウェア更新の確認設定を取得できません。", "输入 / 输出": "入力 / 出力", "输入这台网关的管理员账号与密码。": "このゲートウェイの管理者アカウントとパスワードを入力してください。", "运行时不内置于安装包,首次安装脚本插件时自动下载并校验。": "ランタイムはインストーラーに含まれません。スクリプトプラグインの初回インストール時に自動でダウンロードし、検証します。", "运行正常 · {url}": "正常稼働中 · {url}", "运行状态": "稼働状態", "还没有安装任何提供商插件包": "プロバイダープラグインパックがまだインストールされていません", "还没有签到记录": "チェックイン記録はまだありません", "还没有选择对话模型:先在下方选一个(或去「设置 → AI 助手」里选)。": "対話モデルが未選択です:下から選んでください(または「設定 → AI アシスタント」で選択)。", "这一版没有提供 Android 安装包:{reason}": "このバージョンには Android 用パッケージがありません:{reason}", "这一项已隐藏": "この項目は非表示です", "这一项正在显示": "この項目は表示中です", "这个包提供的提供商(可单独停用某一家)": "このパックが提供するプロバイダー(個別に無効化できます)", "这个面板没有管理员,用一把已启用的 API Key 访问(在桌面端「网关 Key」页创建)。": "このパネルには管理者がありません。有効な API Key でアクセスしてください(デスクトップ版「ゲートウェイキー」で作成)。", "这会真实发起上游请求并消耗额度": "実際にアップストリームへリクエストを送り、枠を消費します", "这台网关没有管理员,用一把已启用的 API Key 访问(在桌面端「网关 Key」页创建)。": "このゲートウェイには管理者がいません。有効な API Key でアクセスしてください(デスクトップ版の「ゲートウェイ Key」ページで作成できます)。", "这台网关还没有管理员。设置一个账号密码,之后用它登录。": "このゲートウェイにはまだ管理者がいません。アカウントとパスワードを設定し、それでログインしてください。", "这是旧插件的手动兼容入口,不代表支持任意凭证或登录方式。请仅粘贴该插件明确接受的凭证 JSON;网关会交给 account.normalize 校验,不会自动推断 Token、Cookie 或 OAuth。": "これは旧プラグイン向けの手動互換入力であり、任意の認証情報やログイン方式への対応を意味しません。プラグインが明示的に受け付ける認証情報 JSON のみを貼り付けてください。ゲートウェイは account.normalize に検証を依頼し、Token、Cookie、OAuth を自動で推測しません。", "这是真实的上游请求,与生产走同一条链路(会记账,报表排除)。": "これは実際のアップストリームリクエストで、本番と同じ経路を通ります(課金されますが、レポートからは除外)。", "这段文本作为 system 消息排在对话最前面。工具的定义与当前配置概览由网关自动附加,不用写在这里。": "この文章は system メッセージとして対話の先頭に置かれます。ツール定義と現在の設定概要はゲートウェイが自動で付加するため、ここに書く必要はありません。", "连不上插件仓库,请检查网络或代理后重试": "プラグインリポジトリに接続できません。ネットワークまたはプロキシを確認して再試行してください。", "连接已有 SAP AI Core 部署:从网关本机导入凭据文件,按资源组获取模型;不创建部署或查询额度。": "既存の SAP AI Core デプロイに接続:ゲートウェイのマシンから認証情報ファイルを取り込み、リソースグループごとにモデルを取得します。デプロイの作成や利用枠の照会は行いません。", "连接并保存": "接続して保存", "连续崩溃": "連続クラッシュ", "连通 · {ms}ms": "接続 OK · {ms}ms", "选择模型…": "モデルを選択…", "通过 API Key 接入 River 对话与在线模型目录;插件不提供余额数值。": "API Key で River の対話とオンラインモデル一覧に接続します。プラグインは残高の数値を返しません。", "通过 Magpie 原插件接入设备码登录、对话、模型目录、余额和每日签到。": "Magpie の元のプラグインを使い、デバイスコードログイン、対話、モデル一覧、残高、毎日のチェックインを接続します。", "通过社区插件接入 {providers},可在设置中管理提供商,签到计划在签到中心管理。": "コミュニティプラグインで {providers} に接続します。プロバイダーは設定で、チェックインのスケジュールはチェックインセンターで管理できます。", "部分信息未能更新,已读取的插件仍可查看。": "一部の情報を更新できませんでした。取得済みのプラグインは引き続き表示できます。", "部分插件的附带任务可能消耗额度、发送对话或创建及解散群聊。": "一部プラグインの付随タスクは、クォータを消費したり、会話を送信したり、グループチャットを作成・解散したりする場合があります。", "都不注入": "どちらも注入しない", "都不注入(助手退化为纯聊天)": "どちらも注入しない(アシスタントは純粋なチャットに)", "重启更新": "再起動して更新", "重新读取登录方式": "ログイン方式を再読み込み", "队列是一次性整表提交(后端按新顺序重编优先级),移动会连带调整其它组的相对次序。": "キューは全体を一括で送信します(バックエンドが新しい順序で優先度を振り直すため)、移動すると他のグループの相対順も変わります。", "队列是一次性整表提交;位置越靠前,路由时越先被选中。": "キューは全体を一括で送信します。位置が前ほど、ルーティング時に先に選ばれます。", "限流垫底": "レート制限で後ろへ", "隐藏 {name}": "{name} を非表示", "隐藏分组 {name}": "グループ {name} を非表示", "隐藏这一组": "このグループを非表示", "需要强制更新": "必須の更新", "需要网关 API Key": "ゲートウェイ API Key が必要です", "需要网关本机环境": "ゲートウェイのマシン上の環境が必要です", "需要补齐插件": "プラグインの更新が必要", "顺序优先": "順序優先", "首页": "ホーム", "高危": "高リスク", "高级参数(JSON)": "詳細設定(JSON)", "默认分支": "既定のブランチ", "默认跟随软件的正式版和 beta 关注选择;单独设置只影响日常更新,最低版本补齐按当前软件版本选择配套包。": "更新チャンネルは既定でアプリに従います。個別設定は通常の更新だけに適用され、必須更新では現在のアプリに対応するパッケージを選択します。", "默认跟随软件的自动检查和间隔。关闭自动检查后暂停插件自动更新;手动检查、安装和更新不受影响。": "自動確認と間隔は既定でアプリの設定に従います。自動確認をオフにするとプラグインの自動更新を停止しますが、手動での確認・インストール・更新は引き続き利用できます。", "({n} 个整组隐藏)": "({n} グループを非表示)", "(不会影响客户端登录态)": "(クライアントのログイン状態には影響しません)", "(仅显示前 20 条,共 {n} 条)": "(先頭 20 件のみ表示 · 全 {n} 件)", "(可选)": "(任意)", "(未指定)": "(未指定)", "(请下载与该平台对应的插件包)": "(このプラットフォーム向けのパックをダウンロードしてください)", "(默认问候)": "(既定の挨拶)", "Agent2API · 登录": "Agent2API · ログイン", "OpenAI 兼容网关 · 管理面板": "OpenAI 互換ゲートウェイ · 管理パネル", "Turnstile 加载或验证失败,请检查网络、浏览器拦截和域名配置后重试。": "Turnstile の読み込みまたは認証に失敗しました。ネットワーク、ブラウザーのブロック機能、ドメイン設定を確認して再試行してください。", "Turnstile 验证超时,请重试。": "Turnstile の認証がタイムアウトしました。再試行してください。", "创建账号并进入面板": "アカウントを作成してパネルへ進む", "密码": "パスワード", "当前浏览器不支持 Turnstile,请更新浏览器后重试。": "このブラウザーは Turnstile に対応していません。更新して再試行してください。", "我不是机器人": "私はロボットではありません", "无法读取登录验证设置,请刷新页面重试": "ログイン認証設定を読み取れません。ページを更新して再試行してください", "无法连接网关": "ゲートウェイに接続できません", "无法连接网关,请确认服务已启动": "ゲートウェイに接続できません。サービスが起動しているか確認してください", "机器人校验配置已变更或不完整,请刷新页面或联系管理员。": "ボット対策の設定が変更されたか、不完全です。ページを更新するか管理者に連絡してください。", "登录": "ログイン", "登录后可在「网关 Key」页为 API 客户端创建密钥": "ログイン後は「ゲートウェイキー」ページで API クライアント用のキーを作成できます", "管理员账号": "管理者アカウント", "继续": "続ける", "至少 8 位": "8 文字以上", "设置密码(至少 8 位)": "パスワードを設定(8 文字以上)", "请先勾选「我不是机器人」完成验证": "先に「私はロボットではありません」にチェックして認証を完了してください", "请填写账号与密码": "アカウントとパスワードを入力してください", "请完成人机验证后重试": "本人確認を完了してから再試行してください", "请求失败,请重试": "リクエストに失敗しました。もう一度お試しください", "请输入管理员账号与密码": "管理者アカウントとパスワードを入力してください", "重新验证": "再認証", "首次使用:创建一个管理员账号,用于登录此面板": "初回利用時:このパネルへのログイン用に管理者アカウントを作成してください", "验证中…": "検証中…", "验证失败,请重试": "検証に失敗しました。もう一度お試しください", "验证成功": "検証成功", " · 今日 {used} / {quota}": " · 今日 {used} / {quota}", " · 当前 {n}": " · 現在 {n}", " · 本周期 {used} / {quota}": " · 今周期 {used} / {quota}", " · 限流 {n}": " · レート制限 {n}", " 等": " など", "0 = 不限": "0 = 無制限", "0 = 按本家默认 {default}": "0 = 本家のデフォルト {default}", "30 秒 ~ 24 小时;手动查询会顺延下一轮": "30 秒 ~ 24 時間;手動クエリは次の周期に順延", "7 天内到期": "7 日以内に期限切れ", "7 天内到期 {amount}({count} 份)": "7日以内に失効:{amount}({count} 件)", "7天 {count}份": "7日内 {count}件", "7天 {n}": "7日以内 {n}", "API Key": "API Key", "Accio 国内版": "Accio 中国版", "Base URL": "Base URL", "Clash Verge 里还没有配置混合监听器或节点端口": "Clash Verge に混合リスナーまたはノードポートがまだ設定されていません", "Clash 出口:": "Clash 出口:", "Copilot 额度单位": "Copilot 使用枠単位", "NewAPI 个人访问令牌": "NewAPI 個人アクセストークン", "NewAPI 用户 ID": "NewAPI ユーザー ID", "OpenAI 兼容": "OpenAI 互換", "OpenAI 兼容填到 /v1;Anthropic 填根地址": "OpenAI 互換は /v1 まで、Anthropic はルートアドレスを入力", "Qoder 中国版": "Qoder 中国版", "Qoder 国际版": "Qoder 国際版", "Token 刷新接口不可用,请重新打开页面": "Token 更新機能を利用できません。ページを開き直してください。", "Token 刷新结果未确认,请刷新后核对账号状态": "Token の更新結果を確認できませんでした。一覧を再読み込みしてアカウントの状態を確認してください。", "Token 单位": "Token 単位", "Token 时": "Token 以上になったとき", "Token 消耗": "Token 消費", "Token 规则按每个账号已有的窗口消耗判定,保存不会清零;停用或清空规则不会自动启用账号。": "Token ルールは各アカウントの既存の期間内使用量で判定します。保存で使用量はリセットされず、ルールの停止・削除でアカウントは有効化されません。", "Token 限制阈值必须是大于 0 的安全整数": "Token のしきい値は 0 より大きい安全な整数で指定してください", "Token 限额": "Token 上限", "Token 限额 · 已禁用": "Token 上限 · 無効", "Token 限额 · 已跳过": "Token 上限 · スキップ", "WorkBuddy 国内版": "WorkBuddy 中国版", "WorkBuddy 国际版": "WorkBuddy 国際版", "ZCode 国内版": "ZCode 中国版", "ZCode 国际版": "ZCode 国際版", "ZCode 套餐明细 — {name}": "ZCode プラン明細 — {name}", "bigmodel_token_production 的值": "bigmodel_token_production の値", "{action}{who}": "{action}{who}", "{amount},另 {count} 份余量未知": "{amount}、ほか {count} 件は残量不明", "{body}({period})": "{body}({period})", "{cond} 时 → {action}": "{cond} のとき → {action}", "{count} 份": "{count} 件", "{count} 份仅提供比例": "割合のみ {count} 件", "{count} 份单位未知": "単位不明 {count} 件", "{count} 次": "{count} 回", "{days} 天后到期": "{days} 日後に失効", "{error}(不会自动改为直连)": "{error}(直接接続へ自動的には切り替えません)", "{error}(转发时会回退直连)": "{error}(転送時は直接接続にフォールバック)", "{groups} 家 · 显示 {rows} 行": "{groups} 社 · {rows} 行を表示", "{hours} 小时后到期": "{hours} 時間後に失効", "{label} ×{count}": "{label} ×{count}", "{label}({count})": "{label}({count})", "{message}(去该账号的「设置」里填上查询凭证即可)": "{message}(そのアカウントの「設定」でクエリ用認証情報を入力すれば解決します)", "{minutes} 分钟后到期": "{minutes} 分後に失効", "{month}月{day}日 {clock}": "{month}月{day}日 {clock}", "{name} · 分组设置": "{name} · グループ設定", "{name} 移到 {group} 组内第 {rank} 位": "{name} を {group} グループ内の {rank} 番へ移動しました", "{name} 移到第 {rank} 顺位": "{name} を全体 {rank} 番へ移動しました", "{name}的方向": "{name}の方向", "{name}({parts})": "{name}({parts})", "{name}({time} 起生效)": "{name}({time} から有効)", "{n} 个已计入": "{n} 件を合計", "{n} 个查询失败": "{n} 件の照会に失敗", "{n} 个模型 ▾": "{n} 個のモデル ▾", "{n} 个模型限流中 · 记录来自上游 429 / 限额码,到恢复时间自动解除": "{n} 個のモデルがレート制限中 · 記録はアップストリームの 429 / クォータコードによるもので、リセット時刻に自動解除", "{n} 个请求正在使用该账号(含还在下发内容的流式请求)": "{n} 件のリクエストがこのアカウントを使用中(コンテンツ配信中のストリーミングリクエストを含む)", "{n} 个读数只读到一半(读数可信但不完整)": "{n} 件は一部のみ取得(値は信頼できるが不完全)", "{n} 个读数没有绝对数(只给比例或无额度),未计入": "{n} 件は絶対値なし(割合のみ、または枠なし)のため合計に含めず", "{n} 个读数里没有可用比例,未计入": "{n} 件は利用できる割合がなく、集計していません", "{n} 个账号 · {e} 启用 · {l} 限流": "{n} 件 · 有効 {e} · レート制限 {l}", "{n} 个账号 · 启用 {e}": "{n} 件 · 有効 {e}", "{n} 个还没查到(未查询或正在查询)": "{n} 件は未取得(未照会または照会中)", "{n} 个还没查询": "{n} 件は未照会", "{n} 分钟": "{n} 分", "{n} 分钟前更新": "{n} 分前に更新", "{n} 分钟后": "{n} 分後", "{n} 天前更新": "{n} 日前に更新", "{n} 天后": "{n} 日後", "{n} 小时": "{n} 時間", "{n} 小时前更新": "{n} 時間前に更新", "{n} 小时后": "{n} 時間後", "{n} 秒": "{n} 秒", "{n} 秒前更新": "{n} 秒前に更新", "{period}窗口": "{period}ウィンドウ", "{plan}({time} 领取)": "{plan}({time} 受け取り)", "{providers} 家提供商、共 {total} 个账号。数据仍在,只是当前没有可用的插件来执行它们。": "{providers} 社のプロバイダー、計 {total} 件のアカウント。データは残っており、今それを実行できるプラグインがないだけです。", "{reason}。该账号的登录态已被上游注销,自动刷新不会再成功,请重新登录该账号": "{reason}。このアカウントのログイン状態はアップストリーム側で取り消されました。自動更新は今後成功しないため、このアカウントで再度ログインしてください。", "{scope} {used} / {quota} Token,{countdown}重置": "{scope} {used} / {quota} Token、{countdown}にリセット", "{text}过期": "{text}に期限切れ", "{text}过期({full})": "{text}に期限切れ({full})", "{time} 到期": "{time} に期限切れ", "{time} 恢复": "{time} にリセット", "{time} 生效": "{time} に有効", "{time} 领取": "{time} に受け取り", "{total} 个账号 · 启用 {enabled} · 禁用 {disabled}{limited}": "{total} 件のアカウント · 有効 {enabled} · 無効 {disabled}{limited}", "{tried}探测并领取官方每日登录赠送的套餐积分(到账进套餐积分,不增加福利模型 token 池)": "{tried}公式のデイリーログイン特典のプラン積分を検出して受け取る(到着分はプラン積分に入り、特典モデルの token プールは増えません)", "{unit}余量未知({count} 份)": "{unit}の残量不明({count} 件)", "{verb}完成:成功 {ok} 个,失败 {fail} 个({detail}{more})": "{verb}完了:成功 {ok} 件、失敗 {fail} 件({detail}{more})", "{verb}完成:成功 {ok} 个,未变更 {unchanged} 个,跳过 {skip} 个,失败 {fail} 个": "{verb}完了:変更 {ok} 件、変更なし {unchanged} 件、スキップ {skip} 件、失敗 {fail} 件", "✅ {ok}/{total} 个出口可用": "✅ {ok}/{total} 個の出口が利用可能", "✅ {verb}完成:共 {count} 个账号": "✅ {verb}完了:合計 {count} アカウント", "✅ 优先级已改为 {n}": "✅ 優先度を {n} に変更しました", "✅ 出口可用": "✅ 出口は利用可能", "✅ 已保存:{note}": "✅ 保存しました:{note}", "✅ 已启用": "✅ 有効化しました", "✅ 已启用 {n} 个账号": "✅ {n} 件のアカウントを有効化しました", "✅ 已导出 {count} 个账号文件": "✅ {count} 件のアカウントファイルをエクスポートしました", "✅ 已更新 {n} 个账号的余额{suffix}": "✅ {n} アカウントの残高を更新しました{suffix}", "✅ 已更新余额": "✅ 残高を更新しました", "✅ 已清除 API Key(该账号现在没有凭证,转发会被跳过)": "✅ API Key を消去しました(このアカウントには認証情報がなく、転送はスキップされます)", "✅ 已清除 {model} 的限流标记": "✅ {model} のレート制限マークを消去しました", "✅ 已清除余额查询凭证": "✅ 残高クエリ用認証情報を消去しました", "✅ 已清除查询凭证": "✅ 照会用認証情報をクリアしました", "✅ 已清除该账号全部限流标记": "✅ このアカウントのレート制限マークをすべて消去しました", "✅ 已禁用": "✅ 無効化しました", "✅ 已禁用 {n} 个账号": "✅ {n} 件のアカウントを無効化しました", "✅ 已重新读取 Clash Verge 配置": "✅ Clash Verge の設定を再読み込みしました", "✅ 账号设置已保存": "✅ アカウント設定を保存しました", "✅ 顺序已保存": "✅ 順序を保存しました", " 出口 IP {ip}": " 出口 IP {ip}", "、": "、", "、补官方会话头、请求体补两个占位工具(上游免费档的三道校验)。": "、公式セッションヘッダーを補完し、リクエストボディに 2 つのプレースホルダーツールを補完します(アップストリーム無料枠の 3 つの検証)。", "「{name}」已在「网络代理」页禁用,请先启用它或换一条": "「{name}」は「ネットワークプロキシ」ページで無効になっています。先に有効にするか、別のものを選んでください。", "「{name}」开着排序规则:先关掉规则,才能手动调整组内顺序": "「{name}」は並べ替えルールが有効です。グループ内の順序を手動で調整する前にルールをオフにしてください", "「{name}」本身": "「{name}」自体", "「已保存的代理」": "「保存済みのプロキシ」", "「网络代理」页还没有出口 —— 去那里新增,或在「订阅管理」里点「同步 Clash Verge」把 Clash 的出口导进来": "「ネットワークプロキシ」ページにまだ出口がありません —— そこで追加するか、「サブスク管理」で「Clash Verge を同期」をクリックして Clash の出口をインポートしてください", "「网络代理」页还没有出口 —— 去那里添加一个 HTTP 或 SOCKS5 地址": "「ネットワークプロキシ」ページに HTTP または SOCKS5 アドレスを追加してください。", "「网络代理」页还没有出口 —— 去那里添加手动地址或同步 Clash Verge 的端点": "まだプロキシがありません。「ネットワークプロキシ」ページで手動アドレスを追加するか、Clash Verge のエンドポイントを同期してください。", "「网络代理」页里每个启用的出口轮流使用;之后新加的出口自动加入": "「ネットワークプロキシ」ページで有効な出口を順番に使います。あとから追加した出口も自動的に含まれます", "一般不用填": "通常は入力不要", "万": "万", "上一条规则相同时才比较下一条;想优先按余额消耗,请把可用余额移到第一位。": "前のルールで同順位の場合のみ次のルールを比較します。残高を優先するには「利用可能残高」を先頭に移動してください。", "上次成功查询:{time}": "最後に取得できた日時:{time}", "上游拒绝了本次余额查询": "上流が今回の残高照会を拒否しました", "上游提供了补充说明;未显示原始正文": "上流から補足説明が提供されました。元の本文は表示しません", "上游暂时限制余额查询,请稍后重试": "上流が残高照会を一時的に制限しています。後で再試行してください。", "上游未给总量,画不出剩余比例": "アップストリームが総量を返さないため、残量比率を描画できません", "上游未返回可识别额度窗口": "上流から識別可能な使用枠期間が返されませんでした", "上游本来不要凭证时(本地 Ollama、OpenCode Zen 的免费档)勾上这一项:账号会被正常选路;只把 Key 留空": "アップストリーム本来認証情報が不要な場合(ローカル Ollama、OpenCode Zen の無料枠)はこの項目にチェックを入れてください:アカウントは通常どおりルーティング対象になり、Key は空のままにします", "上游没有提供此额度的分桶用量,当前使用本地估算保护;在其他客户端产生的消耗不会计入。": "上流からこの枠の個別使用量が提供されないため、ローカル推計で保護します。他のクライアントでの使用量は含まれません。", "上游的 API Key。留空 = 不修改(改凭证不会换账号 id);要清掉已配的凭证用右边的「清除」": "アップストリームの API Key。空欄 = 変更しない(認証情報を変更してもアカウント id は変わりません);設定済みの認証情報を消去するには右の「消去」を使います", "上游的余额读数里没有这个套餐的额度桶,剩余量读不到;余额列显示的是套餐发放的权益额度,不是剩余量": "上流の残高読み取り値にはこのプランの枠(バケット)がなく、残量は取得できません。残高列に表示されるのはプランの付与権益であり、残量ではありません", "上游返回 {status}": "アップストリームが {status} を返却", "上游限制 · 已禁用": "上流の制限 · 無効化済み", "上游额度无上限": "上流の使用枠は無制限です", "上面所有规则都相同时,保持你拖出来的顺序": "上のすべてのルールが同じ場合、ドラッグした順序を維持します", "不到 1 分钟": "1 分未満", "不到 1 分钟到期": "1分未満で失効", "不可用:{error}": "使用不可:{error}", "不足 {n}": "{n} 未満", "不限": "無制限", "与队列里的上一个账号交换优先级(可能是另一家的账号)": "キューの 1 つ前のアカウントと優先度を交換(別プロバイダーのアカウントの場合もあります)", "与队列里的下一个账号交换优先级(可能是另一家的账号)": "キューの 1 つ後のアカウントと優先度を交換(別プロバイダーのアカウントの場合もあります)", "严格按消耗顺序使用账号需选择「顺序优先」;轮询、会话粘性及账号保护仍按原设置生效。": "消費順序どおりにアカウントを使用するには「順序優先」を選択してください。ローテーション、セッション固定、アカウント保護は既存の設定に従います。", "个": "個", "个 · 共": "個 · 合計", "个人": "個人", "主凭证没有固定到期时刻,到期由网关自动续期或本来就不会过期": "主となる資格情報に固定の有効期限はありません(期限切れはゲートウェイが自動更新します。そもそも期限がない場合もあります)", "主机": "ホスト", "亿": "億", "仅将优先级调整到全局第一位,不改变启用状态": "優先度をグローバルキューの先頭に調整するだけで、有効状態は変更しません", "仅按手动顺序": "手動順序のみ", "仅统一修改现有规则的开关,保留阈值、动作和重置方式;不改变账号的启用状态。": "既存ルールのオン・オフだけを統一し、しきい値、アクション、リセット方式、アカウントの有効状態は保持します。", "仅账号管理": "アカウント管理のみ", "仅跳过命中条件的模型,其他模型仍可转发;点击查看限制器": "条件に該当したモデルだけをスキップし、他のモデルは引き続き転送できます。クリックしてリミッターを確認します。", "今天 {clock}": "今日 {clock}", "今天 {time}": "今日 {time}", "今天到期 {amount}({count} 份)": "本日失効:{amount}({count} 件)", "今天还没有领过:上面「可领取的套餐」里逐份点「领取」即可": "本日はまだ受け取っていません。上の「受け取れるプラン」で各プランの「受け取る」を押してください。", "今天(北京时间 {day})已由官方确认到账 {n} 项;领到的是套餐赠送积分,不增加福利模型的 token 池;按自然日重置,明天可再领": "今日(北京時間 {day})は {n} 件の到着が公式に確認済み;受け取ったのはプラン特典積分で、特典モデルの token プールは増えません;自然日でリセットされ、明日また受け取れます", "今天(北京时间 {day})已试过 {n} 次但官方尚未确认到账,": "今日(北京時間 {day})は {n} 回試しましたが公式の到着確認はまだです、", "今天(北京时间)已领取 {n} 份:{plans}": "本日(北京時間)受け取り済み {n} 件:{plans}", "今天(本地 0 点重置)": "今日(ローカル 0 時にリセット)", "今日剩 {n} 分钟": "本日残り {n} 分", "今日剩 {n} 小时": "本日残り {n} 時間", "今日发放": "本日の付与額", "今日已用": "本日の使用量", "今日已领": "本日受取済み", "代理": "プロキシ", "代理不可用:{error}": "プロキシ使用不可:{error}", "代理不可用:{error}(不会自动改为直连);选「自定义代理…」去修改": "プロキシを利用できません:{error}(直接接続へ自動的には切り替えません)。「カスタムプロキシ…」で修正してください", "代理不可用:{error}(转发时会回退直连);选「自定义代理…」去修改": "プロキシ使用不可:{error}(転送時は直接接続にフォールバック);「カスタムプロキシ…」を選んで変更してください", "代理列表响应异常({type})": "プロキシ一覧のレスポンス異常({type})", "代理列表读取失败(重试中)": "プロキシ一覧の読み込みに失敗(再試行中)", "代理已更新": "プロキシを更新しました", "代理异常": "プロキシ異常", "代理方式": "プロキシ方式", "代理池响应异常({type})": "プロキシプールのレスポンス異常({type})", "代理端口必须是 1-65535 的整数": "プロキシポートは 1-65535 の整数でなければなりません", "以下 {count} 个账号不支持余额查询,本次会跳过:{names}": "次の {count} 件は残高照会に非対応のためスキップします:{names}", "企业": "企業", "优先级": "優先度", "优先级 {priority} 已被同一提供商的「{name}」占用,请换一个数值": "優先度 {priority} は同一プロバイダーの「{name}」が使用中です。別の数値に変更してください", "优先级必须是数字": "優先度は数値でなければなりません", "优先级未保存:{message}": "優先度は未保存:{message}", "会员共享额度": "会員共通の使用枠", "会员共享额度不是本账号独立额度,不与其他窗口相加;未证实团队独立额度": "会員共通の使用枠はこのアカウント専用ではなく、他の期間とは合算しません。チーム専用枠は未確認です。", "会被当成「未配置凭证」而跳过。": "「認証情報未設定」と見なされスキップされます。", "伪装 OpenCode 官方客户端": "OpenCode 公式クライアントを偽装", "伪装 OpenCode 官方客户端(OpenCode Zen 免费档要它才放行)": "OpenCode 公式クライアントを偽装(OpenCode Zen の無料枠はこれがないと通しません)", "余量 {value}": "残量 {value}", "余额": "残高", "余额 < {threshold}": "残高 < {threshold}", "余额不足": "残高不足", "余额不足 · 已跳过": "残高不足 · スキップ", "余额低于": "残高が", "余额低于阈值时的提示": "残高がしきい値を下回ったときに通知", "余额低于阈值,转发时会跳过该账号(余额回升自动恢复)": "残高がしきい値を下回ると、転送時にこのアカウントをスキップします(残高が戻れば自動復帰)", "余额低于限制器的阈值,转发时会跳过该账号(余额回升自动恢复)": "残高がリミッターのしきい値を下回ると、転送時にこのアカウントをスキップします(残高が戻れば自動復帰)", "余额列读数的自动刷新;也是「限制器」余额规则的数据来源。": "残高列の読み取り値の自動更新;「リミッター」の残高ルールのデータソースでもあります。", "余额响应为空": "残高レスポンスが空", "余额大优先": "残高が多い順", "余额小优先": "残高が少ない順", "余额已更新": "残高を更新しました", "余额查询凭证": "残高クエリ用認証情報", "余额查询凭证已失效,请刷新查询登录态": "残高照会用の認証情報が失効しました。照会用のログイン状態を更新してください。", "余额查询失败:{message}": "残高クエリ失敗:{message}", "余额查询接口不可用,请更新网关后重试": "残高照会を利用できません。ゲートウェイを更新して再試行してください。", "余额查询接口返回异常": "残高照会から無効な応答が返されました。", "余额查询方案:{label}": "残高照会の方式:{label}", "余额沿用现有口径;Token 按重置方式内的累计消耗判定(切换类型会清空阈值)": "残高は既存の基準を踏襲;Token はリセット方式内の累計消費で判定(タイプを切り替えるとしきい値はクリアされます)", "余额详情": "残高の詳細", "使用套餐": "利用プラン", "使用最近一次成功查询的总余额,随余额刷新调整;查询失败保留上次读数,不额外增加查询频率。": "最後に成功した照会の合計残高を使用し、残高更新に合わせて順序を調整します。照会失敗時は前回の値を保持し、照会頻度は増やしません。", "保存失败:{error}": "保存失敗:{error}", "保存条件": "条件を保存", "保存规则": "ルールを保存", "保留 {n} 个账号": "{n} 件のアカウントを保持", "保留各账号原有规则,只追加下面的规则;完全相同的规则不会重复添加。": "各アカウントの既存ルールを保持して下のルールを追加します。同一ルールは重複追加しません。", "修改代理": "プロキシを変更", "停止旧查询,按当前配置重新查询余额": "前の照会を停止し、現在の設定で残高を再照会します", "停用全部规则": "全ルールを停止", "免费版": "無料版", "全局一条队列:数值越小越先用,不分提供商": "グローバルで 1 本のキュー:数値が小さいほど優先、プロバイダーは問いません", "全局唯一:所有提供商的账号都不能重号,数值越小越先用": "グローバルで一意:すべてのプロバイダーのアカウントで重複不可、数値が小さいほど優先", "全局队列": "グローバルキュー", "全局队列第 {position} 位,共 {total} 位": "グローバルキュー {position} 位(全 {total} 位)", "全选 / 取消全选当前筛选结果(与批量栏同一个选择)": "現在の絞り込み結果を全選択 / 全解除(一括操作バーと同じ選択)", "全选当前筛选结果({n} 个)": "現在の絞り込み結果を全選択({n} 個)", "全部代理节点(推荐)": "すべてのプロキシノード(推奨)", "全部启用中的账号将被{what}": "有効中のすべてのアカウントが{what}されます", "全部启用({n})": "すべて有効化({n})", "全部清除": "すべて消去", "全部禁用({n})": "すべて無効化({n})", "全部({n})": "すべて({n})", "共有 {n} 个账号暂未显示": "{n} 件のアカウントが非表示です", "关闭则不参与转发(余额查询照常,见「查询设置」)": "オフにすると転送に参加しません(残高クエリは通常どおり、詳細は「クエリ設定」)", "关闭后,该账号转发失败时返回本次错误,不再顺延其他账号。禁用、无凭证和限制器等保护仍生效。": "無効の場合、このアカウントの転送失敗時はエラーを返し、他のアカウントへ切り替えません。無効化、認証情報不足、リミッターなどの保護は引き続き有効です。", "关闭自动查询后,余额限制器只能使用上次读数;手动查询仍可用。": "自動照会をオフにすると残高リミッターは前回の値で判定します。手動照会は引き続き利用できます。", "内消耗 ≥": "内の消費が", "再领一次": "もう一度受け取る", "冻结余额": "凍結残高", "凭证与套餐": "認証情報とプラン", "凭证已过期,转发时会先刷新": "認証情報が期限切れです。転送時に先に更新されます", "凭证已过期;能否续期取决于登录方式,本机引用需由原客户端处理": "認証情報が期限切れです。更新できるかはログイン方法によります。ローカル参照は元のクライアントで管理してください", "出口": "出口", "出网代理": "送信プロキシ", "分窗口额度": "期間別クォータ", "分组设置": "グループ設定", "分钟": "分", "刚刚更新": "たった今更新", "删除各账号的全部限制规则,执行前会再次确认。": "各アカウントの制限ルールをすべて削除します。実行前に再確認します。", "删除提供商": "プロバイダーを削除", "删除组": "グループを削除", "删除账号": "アカウントを削除", "删除这条账号记录(不会影响客户端自己的登录态;之后可再点「导入桌面端登录态」加回来)": "このアカウント記録を削除(クライアント自身のログイン状態には影響しません;後で「デスクトップ版のログイン状態をインポート」をクリックすれば戻せます)", "删除选中的账号": "選択したアカウントを削除", "到恢复时间后自动解除,无需手动操作": "リセット時刻になると自動解除、手動操作は不要", "到期 {date}": "有効期限 {date}", "到期 {time}": "期限 {time}", "到期 近→远": "期限 近→遠", "到期 远→近": "期限 遠→近", "到期时间": "有効期限", "刷新 Token": "Token を更新", "刷新 Token 完成:成功 {ok} 个,跳过 {skip} 个,失败 {fail} 个": "Token 更新完了:成功 {ok} 件、スキップ {skip} 件、失敗 {fail} 件", "刷新 Token:已处理 {completed}/{total} 个,当前账号:{name}": "Token 更新中:{completed}/{total} 件処理済み、現在のアカウント:{name}", "刷新列表": "一覧を更新", "刷新套餐与额度": "プランと使用枠を更新", "刷新账号列表失败,当前仍显示上一次成功读取的数据:{message}": "アカウント一覧の更新に失敗しました。最後に取得できたデータを表示しています:{message}", "刷新账号列表失败:{message}": "アカウント一覧の更新に失敗しました:{message}", "剩 {left} / {total}{unit}": "残り {left} / {total}{unit}", "剩 {n} 分钟": "残り {n} 分", "剩 {remaining}": "残り {remaining}", "剩 {remaining} / {total}": "残り {remaining} / {total}", "剩不到 1 分钟": "残り 1 分未満", "剩余 {percent}%": "残り {percent}%", "剩余比例": "残りの割合", "剩余额度": "残りの使用枠", "加载异常": "読み込み失敗", "北京时间(UTC+8)": "北京時間(UTC+8)", "协议": "プロトコル", "即将到期 {count} 份": "失効間近 {count} 件", "即将过期 {n}": "失効間近 {n}", "历史余额,尚未按新配置验证": "以前の残高です。新しい設定ではまだ確認されていません", "原代理来源已下线,请选择已保存的代理、自定义地址或直连": "以前のプロキシ接続元は提供終了です。保存済みプロキシ、カスタムアドレス、または直接接続を選択してください。", "去「插件」页": "プラグインを開く", "去「插件」页启用": "「プラグイン」で有効化", "去「插件」页安装": "「プラグイン」でインストール", "去启用": "有効にする", "去安装": "インストール", "又不勾": "チェックしないと", "取消余额查询": "残高照会をキャンセル", "取消查询": "照会をキャンセル", "取消查询失败:{message}": "照会のキャンセルに失敗:{message}", "取消选择": "選択を解除", "另有 {n} 个已勾选账号被当前筛选隐藏,仍会参与操作": "他に {n} 個のチェック済みアカウントが現在の絞り込みで非表示です。操作の対象には含まれます", "另有 {n} 个账号因提供商插件未就绪,暂未显示": "ほかに {n} 件のアカウントが、プロバイダープラグインの準備ができていないため非表示です", "只修改本次选择的设置,不影响备注、凭证、转发顺序或其他设置。": "選んだ設定だけを変更し、ラベル、認証情報、転送順序、その他の設定は保持します。", "只比较同一家、同单位的数值余额;未知、比例和无限额度不作为零余额,有明确余额的账号优先。": "同じプロバイダー・同じ単位の数値残高のみを比較します。不明、割合、無制限枠は残高ゼロとみなさず、残高が明確なアカウントを優先します。", "只重试临时故障;次数与整轮时间上限任一用尽即停止,凭证错误不重试。": "一時的な障害のみ再試行します。回数または全体の制限時間に達すると停止し、認証情報のエラーは再試行しません。", "可添加多条;同类规则也允许并存(例如一条按余额、两条不同重置方式的 Token)": "複数追加できます;同種のルールの併存も可能(例:残高によるもの 1 件、リセット方式が異なる Token のもの 2 件)", "可用 {total}": "利用可能 {total}", "可用 {value}": "利用可能 {value}", "可用 {value} {unit}": "利用可能 {value} {unit}", "可用余额": "利用可能残高", "可用合计": "利用可能合計", "可用最低": "最低利用可能", "可留空:新版请求头只认令牌;旧版会把用户 ID 放进 New-Api-User 头": "空欄可:新しい版はトークンのみで、旧版はユーザー ID を New-Api-User ヘッダーに入れます", "可领取的套餐": "受け取れるプラン", "各窗口独立限制请求,不相加为总余额。": "各期間は個別にリクエストを制限するため、合計残高として加算しません。", "同提供商内暂无其他账号占用优先级": "同一プロバイダー内で優先度を使用している他のアカウントはありません", "同提供商已占用:{names}": "同一プロバイダーで使用中:{names}", "名称": "名称", "后续加入": "今後追加予定", "含 {n} 个不限额度账号,合计记为 ∞": "無制限のアカウントを {n} 件含むため、合計は ∞ と表示", "启动中…": "開始中…", "启用全部规则": "全ルールを有効化", "启用插件包后自动回来": "プラグインパックを有効にすると自動で戻ります", "启用状态": "有効状態", "启用该规则": "このルールを有効化", "启用该账号": "このアカウントを有効化", "启用这一组里的全部账号(含被筛选隐藏的)": "このグループの全アカウントを有効化します(フィルタで非表示のものも含む)", "启用这家提供商后自动回来": "このプロバイダーを有効にすると自動で戻ります", "周期": "周期", "周期 Token": "周期 Token", "周期单位": "周期単位", "命中条件的模型": "条件に該当したモデル", "商汤日日新控制台的登录密码": "SenseNova コンソールのログインパスワード", "商汤日日新控制台的登录账号": "SenseNova コンソールのログインアカウント", "固定兜底,不受开关影响": "固定のフォールバック(スイッチの影響を受けません)", "固定周期": "固定周期", "在 NewAPI 站点「个人设置」里生成的访问令牌": "NewAPI サイトの「個人設定」で発行したアクセストークン", "在列表里拖:拖分组带调整整组顺位,拖行首把手调整组内先后(顺序由拖拽表达,不再填数字)": "リスト内でドラッグ:グループバーをドラッグでグループ全体の順位、行頭のハンドルをドラッグでグループ内の順序を調整します(順序はドラッグで表現、数値入力は廃止)", "在账号设置的「基本」分组里设置该账号同时最多处理的请求数": "アカウント設定の「基本」グループで、このアカウントが同時に処理する最大リクエスト数を設定します", "地址与端口由「网络代理」页管理:那边改一次、测一次,所有引用它的账号一起生效": "アドレスとポートは「ネットワークプロキシ」ページで管理:そこで 1 回変更・テストすれば、参照しているすべてのアカウントにまとめて反映されます", "基本": "基本", "填入系统代理": "システムプロキシを入力", "备注名 / 启用 / 代理": "ラベル名 / 有効 / プロキシ", "备注名 {name}": "ラベル名 {name}", "备注名不能为空": "ラベル名を空にすることはできません", "备注名已更新": "ラベル名を更新しました", "复制当前设置": "現在の設定をコピー", "复制自账号": "コピー元アカウント", "失败 {count} 个:": "失敗 {count} 件:", "失败后允许换号": "失敗後のアカウント切り替えを許可", "失败重试次数": "失敗時の再試行回数", "失败重试次数必须是 0~{max} 的整数": "再試行回数は 0〜{max} の整数で指定してください", "套餐 {name}": "プラン {name}", "套餐实例不能跨账号复制,请改用通用额度或本地保护条件": "プランのインスタンスは別のアカウントへコピーできません。共通の使用枠またはローカル保護の条件を使用してください。", "套餐尚未生效或已经到期": "プランはまだ有効になっていないか、期限切れです", "套餐池": "プランプール", "套餐池的推理端点要求每条请求带一个阿里云验证码令牌;令牌由本应用在后台静默铸造,界面关闭时无法铸造": "プランプールの推論エンドポイントはリクエストごとに Aliyun CAPTCHA トークンを必要とします;トークンは本アプリがバックグラウンドで静かに生成し、UI を閉じている間は生成できません", "套餐池(Start Plan)": "プランプール(Start Plan)", "套餐池(Start Plan)— 走 zcode.z.ai 端点,消耗 ZCode 套餐池的额度(新用户体验额度 / 活动领取)": "プランプール(Start Plan)— zcode.z.ai のエンドポイントを使用し、ZCode プランプールのクォータ(新規ユーザーの体験クォータ / イベント受け取り分)を消費", "套餐积分的重置日期": "プラン積分のリセット日", "存在延迟计量信息,无法据此推算当前余额": "遅延した計測情報から現在の残高を推定することはできません", "它会改写请求体": "リクエストボディを書き換えます", "官方限时活动": "公式期間限定キャンペーン", "实际阈值:{value} Token": "実際のしきい値:{value} Token", "对话 token": "対話 token", "对话请求": "チャットリクエスト", "导出文件包含登录凭证,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "エクスポートファイルにはログインに使用できる認証情報が含まれます。安全に保管し、外部への共有や公開場所へのアップロードはしないでください。", "导出未返回结果": "エクスポート結果が返されませんでした。", "导出本组全部账号,每个账号一个 JSON 文件(含被筛选隐藏的)": "このグループの全アカウントを個別の JSON ファイルに出力します(フィルターで非表示のものも含む)", "导出本组账号": "このグループをエクスポート", "将作用于以下账号": "以下のアカウントに適用されます", "将用草稿中的 {rules} 条规则替换 {count} 个账号的全部限制规则,原有规则不会保留。确定继续?": "{count} 件の全制限ルールを下書きの {rules} 件に置き換えます。既存ルールは保持されません。続行しますか?", "将这个账号及其登录凭证保存为单独的 JSON 文件": "このアカウントと認証情報を個別の JSON ファイルに保存します", "小时": "時間", "小浣熊": "小浣熊", "尚未查询该账号的余额": "このアカウントの残高はまだクエリしていません", "尝试领取": "受け取りを試す", "展开": "展開", "展开全部": "すべて展開", "展开全部分组": "全グループを展開", "展开或收起(默认收起)": "展開または折りたたみ(既定は折りたたみ)", "展开这一组": "このグループを展開", "已保存的代理": "保存済みのプロキシ", "已停用": "無効", "已发起 {count} 个账号文件的下载,请在浏览器下载列表确认": "{count} 件のアカウントファイルのダウンロードを開始しました。ブラウザーのダウンロード一覧で確認してください。", "已取消查询": "照会をキャンセルしました", "已启用 {name}": "「{name}」を有効にしました", "已启用自动排序,组内拖动已锁定;关闭全部规则可恢复原手动顺序。": "自動並べ替えが有効なため、グループ内のドラッグはロックされています。すべてのルールを無効にすると元の手動順序に戻ります。", "已启用,点击禁用(不参与转发)": "有効中、クリックで無効化(転送に参加しません)", "已在全局队列第一位": "すでにグローバルキューの先頭です", "已复制到草稿,执行后才会应用到所选账号": "下書きにコピーしました。実行すると選択したアカウントに適用されます", "已导出 {count} 个账号文件,{failed} 个未导出:{reason}": "{count} 件のアカウントファイルをエクスポートしました。{failed} 件は未出力です:{reason}", "已是首选": "すでに最優先です", "已暂停验证,需要时请手动重试": "認証は一時停止しています。必要なときに手動で再試行してください。", "已更新 {ok}/{total} 个账号,{failed} 个失败": "{ok}/{total} アカウントを更新、{failed} 件失敗", "已查询": "取得済み", "已用 {used}": "使用済み {used}", "已用 {used} / 共 {total}": "使用済み {used} / 全体 {total}", "已用完 / 已过期": "使い切り / 期限切れ", "已用比例": "使用済みの割合", "已用额度": "使用済みの枠", "已禁用": "無効", "已禁用 {name}": "「{name}」を無効にしました", "已禁用,点击启用": "無効中、クリックで有効化", "已筛选 {n} 项": "{n} 件を表示中", "已被「{name}」占用": "「{name}」が使用中", "已触发": "発動済み", "已触发 · 账号已禁用": "発動済み · アカウント無効", "已设为首选": "最優先に設定しました", "已设置": "設定済み", "已跳过{current}": "スキップ{current}", "已跳过{usage}{countdown}": "スキップ{usage}{countdown}", "已达上限{usage}": "上限到達{usage}", "已过期": "期限切れ", "已过期({time})": "期限切れ({time})", "已选": "選択済み", "已配置,留空则不修改": "設定済み、空欄なら変更しません", "已限流": "レート制限中", "已领到、还没到生效时间的套餐(生效后余额列会按它显示):\n{lines}": "受け取り済みで、まだ有効になっていないプラン(有効になると残高列に表示されます):\n{lines}", "并发上限": "同時接続上限", "并发上限 0~{max};CodeArts 等有默认值的家填 0 即按本家默认;达到上限的账号会被跳过、请求转给其他账号": "同時接続上限 0~{max};デフォルト値のあるプロバイダー(CodeArts など)は 0 を指定するとそのデフォルトになります;上限に達したアカウントはスキップされ、リクエストは他のアカウントに回されます", "并发上限 0~{max};达到上限的账号会被跳过、请求转给其他账号": "同時接続上限 0~{max};上限に達したアカウントはスキップされ、リクエストは他のアカウントに回されます", "并发上限 0~{max};达到上限的账号跳过、请求转给其他账号(原列表 ⋯ 菜单的「并发上限」入口已并入这里)": "同時接続上限 0~{max};上限に達したアカウントはスキップされ、リクエストは他のアカウントに回されます(旧リストの ⋯ メニューの「同時接続上限」はここに統合されました)", "并发上限 填 0 即按本家默认 {default};填 1 或 2 就按填的算,更大的数会被本家上限截断(原列表 ⋯ 菜单的「并发上限」入口已并入这里)": "0 を指定するとこのプロバイダーのデフォルト({default})になります;1 や 2 はそのまま適用され、それより大きい値はプロバイダー側の上限で切り詰められます(旧リストの ⋯ メニューの「同時接続上限」はここに統合されました)", "并发上限必须是 0~{max} 的整数": "同時接続上限は 0~{max} の整数でなければなりません", "并发上限:{value}": "同時接続上限:{value}", "开启后,网关按 OpenCode 官方 CLI 的形状发请求:没填 Key 的账号用匿名凭证": "オンにすると、ゲートウェイは OpenCode 公式 CLI の形式でリクエストを送信します:Key を入力していないアカウントの匿名認証情報は", "开始 {time}": "開始 {time}", "当": "条件", "当前不符合资格": "現在は対象外", "当前不需要验证码令牌": "現在、CAPTCHA トークンは不要です", "当前代理不可用,请重新选择": "現在のプロキシは利用できません。選び直してください。", "当前代理不可用:{error}(不会自动改为直连)": "現在のプロキシを利用できません:{error}(直接接続へ自動的には切り替えません)", "当前代理不可用:{error}(转发时会回退直连)": "現在のプロキシは使用不可:{error}(転送時は直接接続にフォールバック)", "当前余额 {n};与余额列同一数字口径,严格小于才触发(等于阈值仍可用)": "現在の残高 {n};残高列と同じ数値基準で、厳密に下回った場合のみ発動(しきい値と同じなら利用可能)", "当前可手动调整组内顺序。": "現在、グループ内の順序を手動で変更できます。", "当前可用 ∞(不参与余额不足判定)": "現在利用可能 ∞(残高不足の判定対象外)", "当前客户端不支持逐账号导出,请更新客户端": "このクライアントはアカウントごとのエクスポートに対応していません。更新してください。", "当前已经是默认规则": "すでに既定のルールです", "当前排序规则:{rules}。点击调整": "現在の並べ替えルール:{rules}。クリックして調整", "当前未发现本期活动,不代表账号不符合资格": "現在のキャンペーンは見つかりませんでした。アカウントに資格がないことを意味するものではありません。", "当前没有任何模型处于限流中": "現在レート制限中のモデルはありません", "当前没有可领取的套餐(活动期内每天发一份,明天可再领)": "現在受け取れるプランはありません(キャンペーン期間中は毎日 1 件配布されます。明日また受け取れます)", "当前没有限流中的模型。": "現在レート制限中のモデルはありません。", "当前筛选下 {n} 个账号的百分比读数不能相加,取最低的剩余比例(随筛选、搜索变化,不受分页影响)": "現在の絞り込みで表示中の {n} 個のアカウントの割合表示は合算できないため、最も低い残り割合を表示します(絞り込み・検索で変化、ページ送りの影響なし)", "当前筛选下 {n} 个账号的额度概览(随筛选、搜索变化,不受分页影响)": "現在の絞り込みに含まれる {n} 個のアカウントの利用枠概要(絞り込み・検索で変化し、ページ送りの影響は受けません)", "当前筛选下没有账号": "現在の条件に一致するアカウントはありません", "当前筛选条件下没有账号": "現在の絞り込み条件に該当するアカウントはありません", "当前网关不支持余额排序,请先更新网关": "このゲートウェイは残高順の並べ替えに対応していません。先にゲートウェイを更新してください。", "当前规则:{rules}。": "現在のルール:{rules}。", "当前规则:{rules}。自动排序生效时,组内拖动把手会锁定;关掉全部规则即回到手动顺序。": "現在のルール:{rules}。自動並べ替えが有効な間はグループ内のドラッグハンドルがロックされます。すべてのルールをオフにすると手動順序に戻ります。", "当前视图不能调整组顺位:{reason} 之后再拖动": "この表示ではグループ順位を変更できません:{reason} にしてからドラッグしてください", "当前钩子仅提供套餐与周期,未提供余额数值": "現在の hook はプランと期間のみを提供し、残高の数値はありません", "当前:{label}(Clash Verge 直接引用);可在「网络代理」页同步端点后改选": "現在:{label}(Clash Verge の直接参照)。「ネットワークプロキシ」ページで同期したエンドポイントに切り替えられます。", "当前:{label}(未经过代理池 —— 可在「网络代理」页把出口同步进池后来这里改选)": "現在:{label}(プロキシプールを経由していません —— 「ネットワークプロキシ」ページで出口をプールに同期してからここで選び直せます)", "当前:{label}(未经过代理池 —— 可在「网络代理」页添加相同地址后来这里改选)": "現在:{label}(プロキシプール未使用。「ネットワークプロキシ」ページに同じアドレスを追加し、ここで選択できます)", "当前:{label}(每条请求换一个出口);「自定义代理…」打开完整设置": "現在:{label}(リクエストごとに出口が変わります);「カスタムプロキシ…」で詳細設定を開きます", "当前:{label};选项来自「网络代理」页;「自定义代理…」打开完整设置": "現在:{label};選択肢は「ネットワークプロキシ」ページから;「カスタムプロキシ…」で詳細設定を開きます", "当前:{value}": "現在:{value}", "待定": "未定", "待生效": "有効待ち", "待生效 {n} 份": "有効待ち {n} 件", "待生效 {time}": "{time} から有効", "必填": "必須", "必填;留空 = 不修改,清除用右边的按钮": "必須。空欄なら現状を維持、クリアは右のボタンで", "总剩余 {total} · 套餐 {plan} · 奖励 {bonus}": "残り合計 {total} · プラン {plan} · ボーナス {bonus}", "总积分": "利用可能ポイント合計", "总积分是当前可用积分的汇总,与余额列一致;不重复累加汇总行,不包含 Token、次数或其他单位的额度。": "現在利用可能なポイントの合計で、残高列と同じ値です。集計行を二重に加算せず、Token、回数、その他の単位の使用枠は含みません。", "总量 {value}": "総量 {value}", "恢复时间未知": "リセット時刻不明", "恢复默认:仅开启最快到期优先": "既定に戻す:期限が近い順のみ有効", "恢复默认:仅按手动顺序": "既定に戻す:手動順序のみ", "恢复默认:最快到期优先,账号添加时间关闭": "既定に戻す:期限が近い順、追加日時による並べ替えはオフ", "我的套餐": "自分のプラン", "或": "または", "所有提供商都有这个字段": "すべてのプロバイダーにこの項目があります", "所选账号的各周期:{list}": "選択したアカウントの各期間:{list}", "手动添加": "手動追加", "打开批量操作弹窗,并预选这一组的账号(改代理等动作在弹窗里挑参数)": "一括操作ダイアログを開き、このグループのアカウントを事前選択します(プロキシ変更などのパラメータはダイアログ内で選択)", "执行中…": "実行中…", "执行({action})": "実行({action})", "批量动作": "一括操作", "批量操作 · 已选 {count} 个账号": "一括操作 · {count} アカウントを選択", "批量操作失败:{error}": "一括操作失敗:{error}", "批量操作已保存,但列表刷新失败:{error}": "一括変更は保存されましたが一覧の更新に失敗しました:{error}", "批量操作接口不可用,请重新打开页面": "一括操作を利用できません。ページを開き直してください", "批量操作未返回结果,请刷新后确认状态": "一括操作の結果が返りませんでした。更新して状態を確認してください", "批量操作本组": "このグループを一括操作", "批量操作结果不完整,请刷新后核对所选账号": "一括操作の結果が不完全です。再読み込みして選択したアカウントを確認してください。", "批量操作结果未确认,请刷新后核对设置": "一括操作の更新結果を確認できませんでした。再読み込みして設定を確認してください。", "批量规则按每个账号分别判定,不合并余额或 Token 用量。": "一括ルールはアカウントごとに判定し、残高や Token 使用量は合算しません。", "把每页调回「全部」": "表示件数を「すべて」に戻す", "折叠": "折りたたむ", "折叠全部": "すべて折りたたむ", "折叠全部分组(只留组头)": "全グループを折りたたむ(グループヘッダーのみ残す)", "折叠这一组": "このグループを折りたたむ", "拖动调整列宽(双击还原)": "ドラッグで列幅を調整(ダブルクリックでリセット)", "拖动调整整组顺序": "ドラッグでグループ全体の順序を調整", "拖动调整组内顺序": "ドラッグでグループ内の順序を調整", "按上游额度查询的读数判定;模型共用同一个额度池时,选择模型不会拆分该池余额。": "上流の使用枠の読数で判定します。複数モデルが同じ枠を共有する場合、モデルを選んでも残量は分割されません。", "按优先级从上到下比较,勾选的项才参与": "上から順に優先度で比較し、チェックした項目だけが使われます", "按住拖动,调整这一家的组顺位(整组一起动)": "ドラッグでこのプロバイダーのグループ順位を調整(グループごと動きます)", "按住拖动,调整这个账号在本组内的顺序": "ドラッグでこのアカウントのグループ内の順序を調整", "按总积分设置限制": "ポイント合計で制限", "按提供商筛选账号": "プロバイダーでアカウントを絞り込み", "按最低剩余比例选择账号,所有周期均来自同一账号": "残り割合が最も低いアカウントを選び、すべての期間を同じアカウントから表示します", "按未显示原因筛选": "非表示の理由で絞り込む", "按模型": "モデル別", "按每日或短周期实际可用额度最低的账号展示,所有周期均来自同一账号": "日次または短期間で実際に利用できる枠が最も少ないアカウントを選び、すべての期間を同じアカウントから表示します", "按规则限制该账号参与转发:没有规则(或全部停用)= 不限制;跳过档自动恢复,禁用档需手动启用。": "ルールに従ってこのアカウントの転送参加を制限:ルールがない(またはすべて停止)= 制限なし;スキップ段階は自動復帰、無効段階は手動での有効化が必要です。", "按账号总可用余额比较,不重复累加积分明细": "アカウントの利用可能残高の合計を比較し、ポイント明細を重複加算しません", "按账号最早到期、且还有剩余的积分包比较": "残高が残り、まだ有効なクレジットパックのうち最も早い期限で比較します", "排序": "並べ替え", "提供商已停用": "プロバイダー無効", "提供商显示名,1~{max} 个字符": "プロバイダーの表示名、1~{max} 文字", "提供商:{name}": "プロバイダー:{name}", "提高优先级": "優先度を上げる", "插件包已停用": "プラグインパック無効", "插件已启用但加载失败": "プラグインは有効ですが読み込みに失敗しました", "插件未加载": "プラグイン未読み込み", "插件未安装": "プラグイン未インストール", "搜索": "検索", "搜索账号": "アカウントを検索", "搜索账号 / 邮箱 / 备注": "アカウント / メール / メモを検索", "操作失败:{message}": "操作失敗:{message}", "收起": "折りたたむ", "改动即时生效": "変更はすぐに反映されます", "改协议 / Base URL 会改变它们的转发方式,正在进行的请求可能失败;模型清单与映射在「模型管理」页。": "プロトコル / Base URL を変更すると転送方式が変わり、進行中のリクエストが失敗する可能性があります;モデル一覧とマッピングは「モデル管理」ページにあります。", "数值越小越先用;": "数値が小さいほど優先;", "数值越小越先用;{hint}": "数値が小さいほど優先;{hint}", "整个账号": "アカウント全体", "整轮查询时限": "照会全体の制限時間", "整轮查询时限必须是 15~180 秒的整数": "照会全体の制限時間は15~180秒の整数で指定してください。", "新账号落到组首 / 组尾": "新しいアカウントを先頭 / 末尾に追加", "旗舰": "フラッグシップ", "无上限 · 已用 {used}": "上限なし · 使用済み {used}", "无上限按日计(上游到达上限后仍继续计数,超额如实显示)": "上限なしは日単位で集計(アップストリームが上限に達した後もカウントを継続し、超過分はそのまま表示)", "无代理(直连)": "プロキシなし(直接接続)", "无数据": "データなし", "无法拖动:已启用自动消耗规则({rules})。请先在「消耗顺序」中关闭这些规则,再手动调整。": "自動消費ルール({rules})が有効なためドラッグできません。「消費順序」でこれらのルールを無効にしてから手動で並べ替えてください。", "无法拖动:当前已按积分到期时间和账号添加时间自动排序。请先在「消耗顺序」中关闭这两项规则,再手动调整。": "ドラッグできません。クレジットの期限とアカウントの追加日時で自動的に並べ替えています。手動で変更するには、先に「消費順序」で両方のルールをオフにしてください。", "无法拖动:当前已按积分到期时间自动排序。请先在「消耗顺序」中关闭该规则,再手动调整。": "ドラッグできません。クレジットの期限で自動的に並べ替えています。手動で変更するには、先に「消費順序」でこのルールをオフにしてください。", "无法拖动:当前已按账号添加时间自动排序。请先在「消耗顺序」中关闭该规则,再手动调整。": "ドラッグできません。アカウントの追加日時で自動的に並べ替えています。手動で変更するには、先に「消費順序」でこのルールをオフにしてください。", "无福利额度": "特典クォータなし", "既有 Clash Verge 直接引用继续可用;也可在「网络代理」页同步端点,再改选「已保存的代理」。": "既存の Clash Verge 直接参照は引き続き利用できます。「ネットワークプロキシ」ページでエンドポイントを同期して、「保存済みプロキシ」に切り替えることもできます。", "旧数据导入": "旧データのインポート", "旧版 / 定制站点才需要,新版可留空": "旧版 / カスタムサイトでのみ必要。新しい版なら空欄で OK", "时": "未満のとき", "明天 {clock}": "明日 {clock}", "明天 {time}": "明日 {time}", "明天到期": "明日失効", "明细": "明細", "昵称 {name}": "ニックネーム {name}", "显示账号名": "アカウント名を表示", "暂无可查询余额的账号": "残高をクエリできるアカウントがありません", "暂无可比较余额;查到同单位的数值后自动生效,比例与无限额度不参与": "比較できる残高がありません。同じ単位の数値が取得されると自動適用されます。割合と無制限枠は対象外です", "暂无可用积分信息": "現在、利用可能なクレジット情報はありません", "暂无数据:先查询一次余额,之后会自动按到期排序": "データがありません:一度残高を照会すると、以降は有効期限で自動的に並びます", "暂无数据:先查询一次余额,可按需启用到期排序": "データがありません:一度残高を照会し、必要に応じて期限による並べ替えを有効にしてください", "暂无读数": "読数がありません", "暂无账号,请点击右上角「添加账号」": "アカウントがありません。右上の「アカウントを追加」をクリックしてください", "暂无额度信息": "利用枠の情報なし", "更多操作": "その他の操作", "更多设置": "その他の設定", "更新于 {time}": "更新日時 {time}", "更新失败": "更新に失敗", "替换全部规则": "全ルールを置換", "替换选中账号的限制规则": "選択したアカウントの制限ルールを置換", "最快到期优先": "期限が近い順", "最新添加优先": "新しい順", "最早 {soonest} 恢复": "最短リセット:{soonest}", "最早恢复": "最短リセット", "最早添加优先": "古い順", "最晚到期优先": "期限が遠い順", "有 {n} 个账号因提供商插件未就绪,暂未显示": "{n} 件のアカウントが、プロバイダープラグインの準備ができていないため非表示です", "有效期": "有効期限", "有的账号过了 0 点额度就回来 —— 选「自然日」": "0 時を過ぎるとクォータが戻るアカウントもあります —— 「自然日」を選択", "服务器本地时区": "サーバーのローカルタイムゾーン", "未使用": "未使用", "未启用套餐池账号,不生成验证码令牌": "有効な Start Plan アカウントがないため、認証トークンは生成しません。", "未命名账号": "名称未設定のアカウント", "未声明可手动续期;本机引用请在原客户端处理登录态。": "手動更新は宣言されていません。ローカル参照のログイン状態は元のクライアントで管理してください。", "未接入查询": "照会は未連携", "未显示的账号": "非表示のアカウント", "未显示账号": "非表示のアカウント", "未查询": "未クエリ", "未检测到 Clash Verge": "Clash Verge が検出されません", "未检测到 Clash Verge 配置": "Clash Verge の設定が検出されません", "未被使用": "未使用", "未触发": "未発動", "未触发{current}": "未発動{current}", "未触发{usage}{countdown}": "未発動{usage}{countdown}", "未设备注名": "ラベル名未設定", "未返回余额数据": "残高データが返されません", "未返回可确认的余额数值": "確認可能な残高の数値が返されませんでした", "未返回可识别的余额数据": "識別可能な残高データが返されません", "未返回重置时间": "リセット日時は未取得", "未配置": "未設定", "未配置凭证": "認証情報未設定", "本周期 Token 消耗达到限制器的上限,账号已被自动禁用(窗口重置也不恢复,需手动启用)": "今周期の Token 消費がリミッターの上限に達したため、アカウントは自動的に無効化されました(ウィンドウがリセットされても復帰せず、手動での有効化が必要です)", "本周期 Token 消耗达到限制器的上限,转发时会跳过该账号(窗口重置自动恢复)": "今周期の Token 消費がリミッターの上限に達すると、転送時にこのアカウントをスキップします(ウィンドウのリセットで自動復帰)", "本周期已用": "今周期の使用量", "本地 Token 消耗": "ローカルの Token 使用量", "本地台账里今天还领过这些,但上面的读数里还没有:{plans}(读数刷新可能有延迟)": "ローカル記録では本日ほかにも受け取っていますが、上の読み取り値にはまだ出ていません:{plans}(読み取り値の更新には時間がかかることがあります)", "本地消耗上限必须是大于 0 的安全整数": "ローカル使用量の上限は 0 より大きい安全な整数で指定してください", "本地用量保护": "ローカル使用量の保護", "本地统计只包含经过本网关的请求,不等于上游账单;清理请求日志不会清零。套餐选择用于限定保护范围,不会强制上游扣指定套餐。": "ローカル集計はこのゲートウェイを通るリクエストのみで、上流の請求とは異なります。ログを削除しても集計はリセットされません。プランの選択は保護範囲の指定であり、上流の課金先プランを強制しません。", "本地请求次数": "ローカルのリクエスト数", "本地领取于 {time}": "ローカルで {time} に受け取り", "本提供商不支持积分到期排序,默认保持手动顺序;可按需启用账号添加时间排序。": "このプロバイダーはクレジットの期限による並べ替えに対応していないため、既定では手動順序を維持します。必要に応じて追加日時による並べ替えを有効にできます。", "本提供商默认启用最快到期优先,账号添加时间默认关闭;关闭全部规则可恢复手动顺序。": "このプロバイダーは既定で期限が近い順に並び、追加日時による並べ替えはオフです。すべてのルールをオフにすると手動順序に戻ります。", "本期活动": "現在のキャンペーン", "本期活动按套餐分别展示,领取资格以上游返回为准": "現在のキャンペーンをプランごとに表示します。受け取り資格は上流の応答に従います。", "本组 {n} 个账号的可用余额之和,按整组统计(不受筛选、搜索影响)": "このグループ {n} 件の利用可能残高の合計(グループ全体で集計、絞り込み・検索の影響を受けません)", "本组 {n} 个账号的百分比读数不能相加,取组内最低的剩余比例(按整组统计,不受筛选、搜索影响)": "このグループの {n} 個のアカウントの割合表示は合算できないため、グループ内で最も低い残り割合を表示します(グループ全体で集計、絞り込み・検索の影響なし)", "本组 {n} 个账号的额度概览(按整组统计,不受筛选、搜索影响)": "このグループの {n} 個のアカウントの利用枠概要(グループ全体で集計し、絞り込み・検索の影響は受けません)", "本组代理": "このグループのプロキシ", "本组操作": "グループ操作", "本组每个账号会分别保存为一个 JSON 文件,包含被筛选隐藏的账号。": "このグループの各アカウントを個別の JSON ファイルに保存します。フィルターで非表示のアカウントも含まれます。", "权益 {value}": "権益 {value}", "权益 {value} {unit}": "権益 {value} {unit}", "条件即时生效,关掉面板就能看到结果。": "条件はすぐに反映されます。パネルを閉じると結果が表示されます。", "条件组 {n}": "条件グループ {n}", "来源 {source}": "ソース {source}", "查看": "表示", "查看因插件未就绪而暂未显示的账号": "プラグインが未準備のため非表示になっているアカウント", "查看插件状态": "プラグイン状態を確認", "查询中…": "クエリ中…", "查询余额": "残高をクエリ", "查询全部账号的余额(含已禁用账号 —— 禁用只表示不参与转发)": "すべてのアカウントの残高をクエリ(無効化済みアカウントを含む —— 無効は転送に参加しないことだけを意味します)", "查询凭证还没配齐:填好后余额列才有读数,在此之前会显示「未配置」。": "照会用認証情報が揃っていません:入力を終えると残高列に数値が表示され、それまでは「未設定」と出ます。", "查询失败": "クエリ失敗", "查询失败:{message}": "クエリ失敗:{message}", "查询已成功,但上游未提供额度数据,不代表余额为零。": "照会は成功しましたが、プロバイダーから利用枠のデータが返されませんでした。残高がゼロという意味ではありません。", "查询设置": "クエリ設定", "查询该账号剩余余额(读数显示在余额列)": "このアカウントの残りの残高をクエリ(読み取り値は残高列に表示)", "查询超时,可重新查询": "照会がタイムアウトしました。再照会できます。", "查询间隔": "クエリ間隔", "查询间隔必须是 {min} 秒 ~ 24 小时": "クエリ間隔は {min} 秒 ~ 24 時間でなければなりません", "桌面端实时登录态请在原客户端更新": "デスクトップのリアルタイムログイン状態は元のクライアントで更新してください", "桌面端实时登录态(凭证每次从客户端登录态文件读取)": "デスクトップ版のリアルタイムログイン状態(認証情報は毎回クライアントのログイン状態ファイルから読み込みます)", "模型范围": "対象モデル", "正在加载…": "読み込み中…", "正在探测可领取的套餐…": "受け取れるプランを確認しています…", "正在查询": "クエリ中", "正在查询本期活动…": "現在のキャンペーンを確認中…", "正在补铸验证码令牌": "CAPTCHA トークンを生成中", "正在读取 Clash Verge 配置…": "Clash Verge の設定を読み込み中…", "正在读取…": "読み込み中…", "正在读取代理列表…": "プロキシ一覧を読み込み中…", "正在连接上游…": "アップストリームに接続中…", "正常": "正常", "此刻正在使用这个账号的请求数(含还在下发内容的流式请求);为 0 时不显示": "現在このアカウントを使用しているリクエスト数(コンテンツ配信中のストリーミングリクエストを含む);0 のときは非表示", "此额度不属于账号当前使用的通道": "この使用枠はアカウントの現在のチャンネルに属していません", "此额度不属于账号当前使用的通道,切换到对应通道后才参与判定。": "この使用枠は現在のチャンネルに属していません。対応するチャンネルへ切り替えると判定に使用されます。", "每": "毎", "每 {period}消耗 ≥ {count} Token": "毎 {period}の消費 ≥ {count} Token", "每周或每月额度已耗尽,短周期实际可用额度按 0% 计算;账号明细保留原始读数": "週次または月次の枠を使い切っているため、短期間の実際の利用可能枠は 0% として扱います。アカウント詳細には元の値を保持します", "每日消耗 ≥": "毎日の消費が", "每日消耗 ≥ {count} Token(每天 0 点重置)": "毎日の消費 ≥ {count} Token(毎日 0 時にリセット)", "每日重置": "毎日リセット", "每日重置(额度按周期回满,不是作废)": "毎日リセット(枠は周期ごとに満額へ戻るだけで、失効ではありません)", "每条请求换一个出口(按顺序轮流),上游看到的 IP 因此是变化的;出口的地址与端口由「网络代理」页管理": "リクエストごとに次の出口へ順番に切り替わるため、上流から見える IP が変わります。出口のアドレスとポートは「ネットワークプロキシ」ページで管理します", "每组共用一个触发动作;第二条条件起可选择「与/或」。与优先于或,下面会显示明确分组。各条件组独立生效。": "各グループで同じ動作を使います。2 番目以降の条件には「かつ/または」を選べます。「かつ」を優先し、下に括弧で明示します。グループごとに独立して適用されます。", "没有匹配「{kw}」的账号": "「{kw}」に一致するアカウントはありません", "没有可全选的账号": "全選択できるアカウントがありません", "没有可用出口": "利用可能な出口がありません", "没有适用于本次操作的账号": "この操作を適用できるアカウントがありません", "没有选中的账号": "選択されたアカウントがありません", "活动套餐": "イベントプラン", "活动套餐的推理端点要求每条请求带一个阿里云验证码令牌;令牌由本应用在后台静默铸造,界面关闭时无法铸造": "イベントプランの推論エンドポイントは各リクエストに Alibaba Cloud の認証コードトークンを要求します;トークンは本アプリがバックグラウンドでサイレントに生成するため、画面を閉じている間は生成できません", "活动套餐(Start Plan)": "イベントプラン(Start Plan)", "活动套餐(Start Plan)— 走官方活动端点,用活动里领到的额度": "イベントプラン(Start Plan)— 公式のイベントエンドポイントを使用し、イベントで受け取ったクォータを消費", "活动时间:{time}": "キャンペーン期間:{time}", "活动期内每天发一份新套餐;同一份当天重复领取会提示「已领取过」,次日可再领。领取要走一次人机验证(滑块)。": "キャンペーン期間中は毎日新しいプランが 1 件配布されます。同じプランを同日に再度受け取ると「受け取り済み」と表示され、翌日にまた受け取れます。受け取りには人機認証(スライダー)が 1 回必要です。", "活动期内每天发一份新套餐;已领的套餐不重复提交,次日可领新套餐。只有主动领取时才会进行人机验证。": "キャンペーン期間中は毎日新しいプランが提供されます。受け取り済みのプランは再送信せず、翌日に新しいプランを受け取れます。人間認証は手動で受け取るときのみ行います。", "活动目录合并账号预览、营销活动与匿名探测。已领取仅依据领取记录或账号名下套餐;状态待确认时可尝试领取,资格以上游返回为准。": "キャンペーン一覧はアカウントのプレビュー、マーケティング情報、匿名照会を統合します。受け取り済みの判定には受け取り記録またはアカウント所有のプランが必要です。未確認の場合は受け取りを試せます。資格は上流の応答に従います。", "测试中…": "テスト中…", "测试出口": "出口をテスト", "消耗顺序": "消費順序", "添加 新→旧": "追加 新→旧", "添加 旧→新": "追加 旧→新", "添加规则": "ルールを追加", "添加限制": "制限を追加", "清掉本机的限流标记,立刻重新尝试该模型(上游若仍在限流会再次被标记)": "本機のレート制限マークを消去し、このモデルをすぐに再試行します(アップストリームがまだレート制限中なら再度マークされます)", "清掉该账号全部模型的限流标记": "このアカウントのすべてのモデルのレート制限マークを消去", "清空全部规则": "全ルールを削除", "清空搜索与三个筛选档位,回到全部账号": "検索と3つの絞り込みをクリアして全アカウントに戻す", "清空选中账号的限制规则": "選択したアカウントの制限ルールを削除", "清除": "消去", "清除失败:{error}": "消去失敗:{error}", "清除失败:{message}": "消去失敗:{message}", "清除已配置的 API Key(转发时会因缺少凭证被跳过)": "設定済みの API Key を消去(転送時に認証情報がないためスキップされます)", "清除已配置的 {label}": "設定済みの {label} をクリア", "清除已配置的余额查询凭证": "設定済みの残高クエリ用認証情報を消去", "清除标记": "マークを消去", "清除筛选": "フィルタをクリア", "清除该账号的冷却与全部模型限流标记": "このアカウントのクールダウンと全モデルのレート制限フラグを解除", "滚动窗口": "ローリングウィンドウ", "点击{action}各模型的限流明细": "クリックで各モデルのレート制限明細を{action}", "点击查看账号冷却与模型限流明细": "クリックしてアカウントのクールダウンとモデルのレート制限の詳細を表示", "状态": "状態", "状态 {status}": "状態 {status}", "状态待确认": "受け取り状況未確認", "状态未知": "状態不明", "生效 {time}": "有効 {time}", "生效中": "有効中", "生效至到期累计(不自动回满)": "有効開始から期限まで累積(自動補充なし)", "用 NewAPI 站点的个人访问令牌查询账户余额(不是这条账号的上游 API Key)。令牌在站点的「个人设置」里生成,只有旧版 / 定制站点才需要额外填用户 ID。": "NewAPI サイトの個人アクセストークンで残高を照会します(このアカウントのアップストリーム API キーではありません)。トークンはサイトの「個人設定」で発行し、ユーザー ID の追加入力が必要なのは旧版 / カスタムサイトだけです。", "用 bigmodel.cn 控制台的访问令牌查询账户余额(人民币元)。令牌是登录后浏览器 Cookie `bigmodel_token_production` 的值:开发者工具 → 应用(Application)→ Cookie 里复制。": "bigmodel.cn コンソールのアクセストークンで残高を照会します(人民元)。トークンはログイン後のブラウザ Cookie `bigmodel_token_production` の値:開発者ツール → アプリケーション → Cookie からコピーしてください。", "用下面的规则统一替换各账号的全部规则,执行前会再次确认。": "各アカウントの全ルールを下のルールに置き換えます。実行前に再確認します。", "用商汤日日新控制台的账号密码查询(与推理用的 API Key 不是同一套)。网关会自动换取登录票并缓存,过期后自动重登,不需要手动维护。": "SenseNova コンソールのアカウントとパスワードで照会します(推論用の API キーとは別物)。ゲートウェイがログインチケットを自動取得してキャッシュし、期限切れなら自動で再ログインするため、手動管理は不要です。", "用户名": "ユーザー名", "用这条账号的 API Key 查询订阅用量,不需要额外配置;读数展开成 5 小时 / 每周 / 每月三个窗口。": "このアカウントの API キーでサブスクリプション使用量を照会します。追加設定不要で、数値は 5 時間 / 週 / 月の 3 つのウィンドウに展開されます。", "用这条账号的 API Key 查询,不需要额外配置。": "このアカウントの API キーで照会します。追加設定不要。", "用这条账号的 API Key 生成签名后查询账户余额(美元),不需要额外配置。要求 API Key 是 z.ai 的「id.secret」形态(控制台生成的 Key 就是)。": "このアカウントの API キーで署名を作り残高を照会します(米ドル)。追加設定不要。API キーは z.ai の「id.secret」形式である必要があります(コンソールで発行されるキーがそれです)。", "留空 = 不修改,清除用右边的按钮": "空欄なら現状を維持、クリアは右のボタンで", "登录 / 导入一个新账号": "ログイン / 新しいアカウントをインポート", "登录授权已失效,请重新登录;自动续期无法恢复已过期或已撤销的刷新令牌。": "ログイン認可が失効しました。再ログインしてください。期限切れまたは取り消されたリフレッシュトークンは自動更新では復元できません。", "登录授权截止:{time};自动续期不会延长此时间,届时需重新网页登录。": "ログイン認可の有効期限:{time}。自動更新ではこの期限は延長されません。期限切れ後はブラウザーで再ログインしてください。", "百分比阈值必须在 0~100 之间": "割合のしきい値は 0~100 の範囲で指定してください", "直连": "直接接続", "确定删除选中的 {count} 个账号?此操作不可恢复,账号的登录态会一并移除。": "選択した {count} 個のアカウントを削除しますか?この操作は元に戻せません。アカウントのログイン状態も併せて削除されます。", "确定清空 {count} 个账号的全部限制规则?余额与 Token 将不再设限;已禁用的账号不会自动启用。": "{count} 件の制限ルールをすべて削除しますか?残高と Token は無制限になります。無効なアカウントは自動的に有効化されません。", "确定清除全部模型的限流标记?": "すべてのモデルのレート制限を解除しますか?", "确定清除模型「{model}」的限流标记?": "モデル「{model}」のレート制限を解除しますか?", "确定清除该账号的冷却与全部模型限流标记?": "このアカウントのクールダウンと全モデルのレート制限フラグを解除しますか?", "禁用": "無効化", "禁用整个账号(手动恢复)": "アカウント全体を無効化(手動で復帰)", "禁用该账号(需手动重新启用)": "このアカウントを無効化(手動での再有効化が必要です)", "禁用这一组里的全部账号(含被筛选隐藏的)": "このグループの全アカウントを無効化します(フィルタで非表示のものも含む)", "福利按限时活动下发,不是每个账号都有 —— 正常状态,不是查询失败": "特典は期間限定イベントで配布されるため、すべてのアカウントにあるわけではありません —— 正常な状態であり、クエリ失敗ではありません", "福利日额度": "特典日次クォータ", "福利网关未读到:{error}": "特典ゲートウェイから読み取れません:{error}", "秒": "秒", "秒;默认 60 秒,包含重试等待,多步骤查询可适当延长。": "秒。初期値は60秒で、再試行の待機を含みます。複数段階の照会では必要に応じて延長できます。", "积分": "積分", "积分到期时间": "クレジット有効期限", "积分包": "積分包", "积分明细": "積分明細", "积分查询已复用转发用的登录凭证,这里通常留空即可。只有旧版本填过、或从旧代理导入过凭证时才有值": "積分クエリは転送用のログイン認証情報を再利用するため、通常は空欄のままで構いません。旧バージョンで入力した場合、または旧プロキシから認証情報をインポートした場合のみ値が入ります", "稍后由后台判定自动禁用": "後でバックグラウンドの判定により自動的に無効化されます", "窗口 = 今天 0 点起(本地时区),0 点重置即清零恢复;按账号在 requests 表聚合": "ウィンドウ = 今日 0 時から(ローカルタイムゾーン)、0 時のリセットでゼロに戻り復帰;アカウントごとに requests テーブルで集計", "窗口内已用 {used} / {limit} Token,转发时会跳过该账号(重置后自动恢复)": "ウィンドウ内で {used} / {limit} Token 使用済みのため、転送時にこのアカウントをスキップします(リセット後は自動復帰)", "窗口对齐自然时间(整点 / 整 N 分钟一轮回),重置即清零恢复;按账号在 requests 表聚合": "ウィンドウは自然時間に整列(毎時 / N 分ごとの周期)、リセットでゼロに戻り復帰;アカウントごとに requests テーブルで集計", "窗口数量超过展示上限,仅展示部分读数": "期間の数が表示上限を超えているため、一部の数値のみ表示します", "窗口重置时间": "各期間のリセット日時", "窗口长度": "ウィンドウの長さ", "窗口额度与时间": "利用枠と日時", "端口": "ポート", "端口准备中": "ポート準備中", "第 {rank} 顺位": "全体 {rank} 番", "等待当前验证码流程结束": "現在の認証が終わるまで待機中", "筛选": "絞り込み", "筛选 / 搜索 / 分页生效时组顺位不可拖动(别家的组整组不可见,落点没法定位)": "フィルター / 検索 / ページング中はグループ順位をドラッグできません(他社のグループ全体が非表示のため、ドロップ位置を特定できません)", "系统代理信息无效,请手动填写。": "システムプロキシ情報が無効です。手動で入力してください。", "系统代理协议暂不支持自动填入,请手动配置 HTTP 或 SOCKS5 代理": "このシステムプロキシのプロトコルは自動入力に対応していません。HTTP または SOCKS5 プロキシを手動で設定してください。", "系统代理地址无效,请手动填写": "システムプロキシのアドレスが無効です。手動で入力してください。", "系统代理认证信息无法读取,请手动填写": "システムプロキシの認証情報を読み取れません。手動で入力してください。", "累计起点": "集計開始日時", "级联删除名下全部账号,不可恢复": "配下のすべてのアカウントを連鎖削除、復元不可", "组内先后:按住左边的把手上下拖动即可调整;整组的先后拖分组带的把手": "グループ内の順序:左のハンドルを上下にドラッグで調整できます。グループ全体の順序はグループバーのハンドルをドラッグしてください", "组内并发上限": "グループ内の同時実行上限", "组内手动顺序": "グループ内の手動順序", "组内第 {rank} 位": "グループ内 {rank} 番", "组顺位已锁定": "グループ順位はロック中", "组顺位:越小越先用(拖动分组带调整)": "グループ順位:小さいほど先に使われます(グループバーをドラッグして調整)", "统一设置自动查询的开关、间隔和失败重试次数;不会复制或覆盖余额查询凭证。": "自動照会のオン・オフ、間隔、失敗時の再試行回数を統一します。残高照会の認証情報はコピーも上書きもしません。", "统计周期": "集計期間", "统计周期尚未开始或已经结束": "集計期間はまだ始まっていないか、終了しています", "统计窗口必须是 1 分钟~31 天": "集計ウィンドウは 1 分~31 日で指定してください", "统计结束时间必须晚于开始时间": "集計終了日時は開始日時より後にしてください", "缓存用量未知,不按零计量,也不用于推算余额": "キャッシュ使用量は不明です。ゼロとは扱わず、残高の推定にも使いません", "编码套餐(Coding Plan)": "コーディングプラン(Coding Plan)", "编码套餐(Coding Plan)— 走开放平台端点,消耗开放平台的额度(订阅套餐 / 资源包 / 充值余额)": "コーディングプラン(Coding Plan)— オープンプラットフォームのエンドポイントを使用し、オープンプラットフォームのクォータ(購読プラン / リソースパック / チャージ残高)を消費", "编码套餐(Coding Plan)— 走开放平台端点,用自己订阅的额度": "コーディングプラン(Coding Plan)— オープンプラットフォームのエンドポイントを使用し、自身で購読したクォータを消費", "编辑": "編集", "编辑限制": "制限を編集", "编辑限制条件": "制限条件を編集", "网关电脑未检测到可导入的系统代理;请手动填写,或选择已保存的代理。": "ゲートウェイのマシンに取り込めるシステムプロキシがありません。手動で入力するか、保存済みのプロキシを選択してください。", "网络": "ネットワーク", "网页端会逐个下载文件;浏览器提示时请允许本网站下载多个文件。": "Web 版ではファイルを個別にダウンロードします。ブラウザーに確認が表示されたら、このサイトの複数ファイルのダウンロードを許可してください。", "自动查询余额": "残高を自動クエリ", "自动查询余额(按下面的间隔自动刷新余额列的读数)": "残高を自動クエリ(下の間隔で残高列の読み取り値を自動更新)", "自定义代理": "カスタムプロキシ", "自定义代理…": "カスタムプロキシ…", "自定义:": "カスタム:", "自然周": "暦週", "自然日": "暦日", "自然日(每天 0 点)": "自然日(毎日 0 時)", "自然月": "暦月", "补全请求": "補完リクエスト", "补铸失败:{error}": "トークン生成失敗:{error}", "规则操作": "ルール操作", "解析失败": "解析失敗", "触发动作": "発動アクション", "触发后": "発動後", "触发条件": "発動条件", "计入 {counted}/{total}": "集計 {counted}/{total}", "订阅已移除": "サブスク削除済み", "订阅统计未读到:{error}": "サブスクリプション統計を読み取れません:{error}", "记录里没有过期时间": "記録に有効期限がありません", "设为首选": "最優先に設定", "设置并发上限": "同時接続上限を設定", "访客账号没有积分体系,因此不查询余额(登录账号可以查)": "ゲストアカウントにはポイント制度がないため、残高は照会しません(ログインアカウントなら照会できます)", "访问令牌": "アクセストークン", "试用版": "トライアル版", "该上游无需鉴权": "このアップストリームは認証不要", "该上游无需鉴权(转发与拉取模型都不发送鉴权头)": "このアップストリームは認証不要(転送とモデル取得のいずれも認証ヘッダーを送信しません)", "该提供商尚未接入余额查询": "このプロバイダーの残高照会はまだ連携されていません", "该提供商没有余额查询": "このプロバイダーには残高クエリがありません", "该提供商没有余额查询;可按 Token 消耗设置限制。": "このプロバイダーは残高照会に非対応です。Token 使用量で制限できます。", "该提供商的推理转发尚未接入,账号不参与转发": "このプロバイダーの推論転送は未対応のため、アカウントは転送に参加しません", "该账号不支持刷新 Token 或未提供刷新凭证": "このアカウントは Token 更新に未対応か、更新用の認証情報がありません", "该账号出网走的代理(Clash 出口 / 自定义 / 直连);点击可修改": "このアカウントの送信に使うプロキシ(Clash 出口 / カスタム / 直接接続);クリックで変更", "该账号出网走的代理(已保存的代理 / 自定义 / 直连);点击可修改": "このアカウントの接続プロキシ(保存済み / カスタム / 直接接続)。クリックして変更できます。", "该账号当前限流中的模型;点徽章看明细": "このアカウントで現在レート制限中のモデル;バッジをクリックすると明細を表示", "该账号没有套餐登录态(jwt),套餐池通道会失败:请重新登录该账号": "このアカウントにはプランのログイン状態(jwt)がないため、プランプール経路は失敗します:このアカウントに再ログインしてください", "该账号没有套餐登录态(jwt),活动套餐会失败:请重新登录该账号": "このアカウントにはプランのログイン状態(jwt)がないため、イベントプランは失敗します:このアカウントに再ログインしてください", "该账号没有福利模型额度(福利按活动下发,不是每个账号都有)": "このアカウントには特典モデルのクォータがありません(特典はイベントで配布されるため、すべてのアカウントにあるわけではありません)", "该账号没有积分类读数(额度只有福利 token 池)": "このアカウントには積分系の読み取り値がありません(クォータは特典 token プールのみ)", "该账号的额度只有福利 token 池(见余额格那两行),订阅统计没有积分类计量表": "このアカウントのクォータは特典 token プールのみ(残高セルの 2 行を参照)。サブスクリプション統計には積分系のメーターがありません", "该额度中的全部模型": "この使用枠の全モデル", "请先勾选要操作的账号": "操作するアカウントを先にチェックしてください", "请先选择 Clash Verge 出口": "先に Clash Verge の出口を選択してください", "请先选择已保存的代理": "先に保存済みのプロキシを選択してください", "请填写代理主机地址": "プロキシホストアドレスを入力してください", "请填写提供商名称": "プロバイダー名を入力してください", "请填写提供商的 Base URL": "プロバイダーの Base URL を入力してください", "请填写查询间隔": "クエリ間隔を入力してください", "请填写重置周期": "リセット周期を入力してください", "请至少添加一条限制规则;清空请使用清空操作": "制限ルールを少なくとも 1 件追加してください。全削除には削除操作を使ってください", "请选择代理": "プロキシを選択してください", "请选择出口": "出口を選択してください", "读取中…": "読み込み中…", "读取失败:{error}": "読み込み失敗:{error}", "读取系统代理失败": "システムプロキシの読み取りに失敗しました", "读取网关电脑当前的 HTTPS 系统代理,填入自定义地址;后续系统设置变化不会自动同步。": "ゲートウェイのマシンに設定された現在の HTTPS システムプロキシをカスタム欄に入力します。その後のシステム設定の変更は自動同期されません。", "读取自 {dir};端口由 Clash Verge 管理,这里实时同步": "{dir} から読み込み;ポートは Clash Verge が管理し、ここはリアルタイムで同期されます", "读数来自自动余额查询;与余额列同一数字口径,严格小于才触发(等于阈值仍可用)": "読み取り値は自動残高クエリによるもの;残高列と同じ数値基準で、厳密に下回った場合のみ発動(しきい値と同じなら利用可能)", "读数里没有套餐清单(免费账号、或套餐的上游状态还没刷新;可点右上角「查询余额」重读)": "この読み取り値にプラン一覧がありません(無料アカウント、または上流のプラン状態がまだ更新されていません。右上の「残高を照会」で再取得できます)", "读数里没有额度桶,这里按套餐权益里的已用 / 总量显示(上游给的数)": "読み取り値に枠(バケット)がないため、プラン権益の已用 / 総量(上流の数値)を表示しています", "调整到全局队列第一位": "グローバルキューの先頭に移動します", "调整顺序失败:{message}": "順序の調整失敗:{message}", "账号": "アカウント", "账号不存在,请刷新后重试": "アカウントが存在しません。更新して再試行してください", "账号不存在,请刷新后重试。": "アカウントが存在しません。更新して再試行してください。", "账号主额度": "アカウントの主な使用枠", "账号余额单位不一致,暂不按余额排序,继续比较其他规则": "アカウントの残高単位が異なるため、残高順の並べ替えをスキップし、他のルールを適用します", "账号全部模型暂时停止转发 · 到恢复时间自动解除": "このアカウントの全モデルへの転送を一時停止 · 復旧時刻に自動解除", "账号冷却": "アカウントのクールダウン", "账号列表刷新不可用,请重新打开页面": "アカウント一覧を更新できません。ページを開き直してください", "账号列表刷新失败": "アカウント一覧の再読み込みに失敗しました。", "账号列表刷新接口不可用,请重新打开页面": "アカウント一覧の再読み込みを利用できません。ページを開き直してください。", "账号列表加载失败,请点击「刷新」重试": "アカウント一覧を読み込めません。「更新」をクリックして再試行してください", "账号列表加载失败,请点击「刷新」重试:{message}": "アカウント一覧を読み込めません。「更新」をクリックして再試行してください:{message}", "账号列表已刷新": "アカウント一覧を更新しました", "账号名 / 邮箱 / 备注": "アカウント名 / メール / メモ", "账号套餐到期:{time}": "アカウントのプラン有効期限:{time}", "账号导出失败:{reason}": "アカウントのエクスポートに失敗しました:{reason}", "账号已保存,但列表刷新失败:{error}": "アカウントは保存されましたが、一覧の再読み込みに失敗しました:{error}", "账号已保存,但提供商未更新:{error}": "アカウントは保存されましたが、プロバイダーが更新されていません:{error}", "账号数据仍然保留,无需重新添加。安装或启用对应插件并成功加载后,账号会自动恢复显示。": "アカウントデータは保持されています。再追加は不要です。対応するプラグインをインストールまたは有効化し、正常に読み込まれると自動的に再表示されます。", "账号显示名称": "アカウントの表示名", "账号更新接口不可用,请重新打开页面": "アカウント更新を利用できません。ページを開き直してください。", "账号更新结果未确认,请刷新后核对设置": "アカウントの更新結果を確認できませんでした。再読み込みして設定を確認してください。", "账号正在导出,请稍候": "アカウントをエクスポート中です。しばらくお待ちください。", "账号添加时间": "アカウント追加日時", "账号级条件组已触发;点击查看限制器": "アカウント全体の条件グループが発動しました。クリックしてリミッターを確認します。", "账号表": "アカウントテーブル", "账号设置": "アカウント設定", "账号设置 · {name}": "アカウント設定 · {name}", "账号设置分组": "アカウント設定グループ", "账号邮箱": "アカウントのメールアドレス", "账号页与全局路由共用此消耗顺序,网关按最新余额数据选路,不需要保持页面打开。模型独立顺序会覆盖全局。": "アカウントページと全体ルーティングはこの消費順序を共有します。ゲートウェイは最新の残高データで経路を選択し、ページを開いたままにする必要はありません。モデルの個別順序が全体順序に優先します。", "跨账号批量配置仅支持通用条件;套餐实例不能直接复制到其他账号。": "複数アカウントへの一括設定は共通条件のみ対応します。プランのインスタンスは他のアカウントへ直接コピーできません。", "跳过 {count} 个:": "{count} 件スキップ:", "跳过该账号(余额回升自动恢复)": "このアカウントをスキップ(残高の回復で自動復帰)", "跳过该账号(自动恢复)": "このアカウントをスキップ(自動復帰)", "跳过该账号(重置后自动恢复)": "このアカウントをスキップ(リセット後に自動復帰)", "跳过(自动恢复)": "スキップ(自動復帰)", "转发优先级": "転送優先度", "转发走套餐池(Start Plan)通道(zcode.z.ai 的 Anthropic 端点,用账号里的体验额度 / 活动领取额度);在账号设置里可切回编码套餐": "転送はプランプール(Start Plan)経路を使用(zcode.z.ai の Anthropic エンドポイント、アカウントの体験クォータ / イベント受け取り分を消費);アカウント設定でコーディングプランに戻せます", "转发走活动套餐通道(zcode.z.ai 的 Anthropic 端点,用账号里领到的额度);在账号设置里可切回编码套餐": "転送はイベントプラン経路を使用(zcode.z.ai の Anthropic エンドポイント、アカウントで受け取ったクォータを消費);アカウント設定でコーディングプランに戻せます", "转发顺序": "転送順序", "轮询全部代理节点": "すべてのプロキシノードをローテーション", "轮询的代理": "ローテーションするプロキシ", "轮询至少要选择一条代理(或改选「全部」)": "ローテーションには少なくとも 1 つのプロキシを選択してください(「すべて」に戻すこともできます)", "轮询(换 IP)": "ローテーション(IP 切り替え)", "还没有代理(去「网络代理」页添加)": "プロキシがまだありません(「ネットワークプロキシ」ページで追加)", "还没有余额读数(已自动查询一次,稍候;也可以点右上角「查询余额」重读)": "まだ残高の読み取り値がありません(自動で 1 回照会済みです。しばらくお待ちいただくか、右上の「残高を照会」で再取得してください)", "还没有保存的代理": "保存済みのプロキシがまだありません", "还没有批量规则,请先添加限制或从所选账号复制。": "一括ルールがまだありません。制限を追加するか、選択したアカウントからコピーしてください。", "还没有条件组:账号照常参与转发,不设置额度保护。": "条件グループはまだありません。アカウントは使用枠の保護なしで通常どおり転送します。", "还没有账号,去桌面端添加": "アカウントがありません。デスクトップ版で追加してください。", "还没有账号,请点击「添加账号」": "アカウントはまだありません。「アカウントを追加」をクリックしてください。", "还没有限制规则:账号照常参与转发,余额与 Token 消耗都不设上限。": "制限ルールがまだありません:アカウントは通常どおり転送に参加し、残高と Token 消費に上限はありません。", "这一份今天已经领过了(重复领取上游会回「已领取过」)": "このプランは本日すでに受け取り済みです(再度受け取ると上流は「受け取り済み」を返します)", "这一家查不到积分到期时间": "このプロバイダーではクレジット有効期限を取得できません", "这一家没有可用余额查询": "このプロバイダーは利用可能残高の照会に対応していません", "这一栏改的是": "この欄で変更するのは", "这一段按提供商出现:有什么配什么。": "このセクションはプロバイダーごとに表示され、設定できる項目だけが現れます。", "这一类现在没有账号": "この分類にアカウントはありません", "这一组开着排序规则:关掉规则后才能手动拖": "このグループは並べ替えルールが有効です。手動でドラッグするにはルールをオフにしてください", "这个账号的余额走窗口限额通道(只配了编码套餐 API Key):只有每 N 小时的剩余比例,读不到套餐清单": "このアカウントの残高はウィンドウ上限チャネル経由です(コーディングプランの API Key のみ設定)。N 時間ごとの残り割合のみで、プラン一覧は取得できません", "这会{what}所有启用中的账号,转发将不可用。确定继续?": "これは有効中のすべてのアカウントを{what}します。転送が利用できなくなります。続行しますか?", "这是既有配置(直接引用 Clash 出口,不经过代理池)。推荐改用上面的": "これは既存の設定です(Clash 出口を直接参照し、プロキシプールを経由しません)。上記の使用を推奨:", "这条自定义账号既没有 API Key,也没有勾选「无需鉴权」:转发时会被跳过,该提供商下的模型也不会出现在模型列表里。去账号「设置」里补上 Key,或勾选「该上游无需鉴权」": "このカスタムアカウントには API Key もなく、「認証不要」もチェックされていません:転送時はスキップされ、このプロバイダーのモデルもモデル一覧に表示されません。アカウントの「設定」で Key を追加するか、「このアップストリームは認証不要」をチェックしてください", "这条账号是谁、排第几、能不能接请求。": "このアカウントがどれか、何番目か、リクエストを受けられるか。", "这条账号访问上游走哪条线路。": "このアカウントがアップストリームへアクセスする経路。", "这里只影响「显示」:卸载或停用插件不会删除账号;重新安装、启用并成功加载后,这些账号会自动回到列表。": "これは表示だけに影響します。プラグインを削除・無効にしてもアカウントは削除されません。再インストールして有効化し、正常に読み込まれれば自動で戻ります。", "连接失败": "接続失敗", "连接数": "接続数", "追加规则(保留原有)": "ルールを追加(既存を保持)", "追加限制规则": "制限ルールを追加", "选中多个模型时,每个模型单独累计、单独比较阈值;不合并用量。": "複数モデルを選択した場合、それぞれの使用量を個別に累積してしきい値と比較します。使用量は合算しません。", "选择": "選択", "选择所选账号作为模板(可选)": "選択したアカウントをテンプレートにする(任意)", "选择要轮询的代理(可多选)": "ローテーションするプロキシを選択(複数可)", "逐个刷新所选账号的 Token,未到期也会尝试刷新;不改变启用状态、代理或转发顺序。": "選択したアカウントの Token を、期限前でも順番に更新します。有効状態、プロキシ、転送順序は変更しません。", "逐窗口最低:{list}": "ウィンドウ別の最低:{list}", "逐请求轮换出口(换 IP):OpenCode Zen 免费档按 IP 限流,单个 IP 的额度用完会对它一律 429": "リクエストごとに出口を切り替えます(IP 変更):OpenCode Zen の無料枠は IP 単位で制限され、ある IP の枠を使い切るとその IP からのリクエストは一律 429 になります", "通用额度/本地保护": "共通の使用枠/ローカル保護", "邮箱 {email}": "メール {email}", "部分余额信息暂未获取;未显示上游原始诊断": "残高情報の一部を取得できません。上流の未加工の診断情報は表示しません", "部分来源查询失败,已保留其他结果:{message}": "一部の情報源を照会できませんでした。他の結果は保持しています:{message}", "部分来源查询失败,暂不能确认本期活动或领取状态": "一部の情報源を照会できず、現在のキャンペーンまたは受け取り状況を確認できません。", "部分窗口偏低": "一部の期間の残量が少ない", "部分窗口未返回可识别读数": "一部の使用期間から識別可能な数値が返されませんでした", "部分读数未知": "一部の残量が不明", "部分额度读数暂不可用。": "一部の使用枠の数値を現在取得できません。", "配置已变更,请重新查询": "設定が変更されました。再照会してください。", "重新安装这个插件后自动回来": "このプラグインを再インストールすると自動で戻ります", "重新读取": "再読み込み", "重新读取该账号的余额与套餐(走余额查询那条链)": "このアカウントの残高とプランを再取得(残高照会の経路を使用)", "重新读取账号列表和插件状态,不刷新 Token 或查询余额": "Token の更新や残高照会を行わず、アカウント一覧とプラグイン状態を再読み込み", "重查": "再照会", "重置": "リセット", "重置 {date}": "リセット {date}", "重置也不恢复,需手动启用": "リセットしても復帰せず、手動での有効化が必要", "重置周期必须是 30 分钟 ~ 24 小时": "リセット周期は 30 分 ~ 24 時間でなければなりません", "重置方式": "リセット方式", "重置时区": "リセットのタイムゾーン", "重置详情": "リセット詳細", "长期有效": "長期有効", "间隔单位": "間隔単位", "阈值": "しきい値", "降低优先级": "優先度を下げる", "限制器": "リミッター", "限制器 · {n} 个模型": "リミッター · {n} モデル", "限制器 · 账号已跳过": "リミッター · アカウントをスキップ", "限制器:{window}已用 {used} / {threshold} Token": "リミッター:{window}使用済み {used} / {threshold} Token", "限制指标": "制限の指標", "限制类型": "制限タイプ", "限制阈值必须是大于 0 的数字": "制限のしきい値は 0 より大きい数値でなければなりません", "限制阈值必须是非负有限数字": "しきい値は 0 以上の有限な数値で指定してください", "限流": "レート制限", "限流中": "レート制限中", "限流已清除": "レート制限を解除しました", "限额": "上限", "限额状态": "上限ステータス", "隐藏账号名(名字显示为星号)": "アカウント名を隠す(名前はアスタリスクで表示)", "需要人机验证时,在该账号的「套餐明细」中主动开始验证。": "人間認証が必要な場合は、このアカウントの「プラン詳細」で認証を開始してください。", "需要重新登录": "再ログインが必要", "需要验证码时由打开着的主窗口或浏览器面板补铸;库存、补铸状态和失败原因分别显示": "認証が必要な場合、開いているメインウィンドウまたはブラウザのパネルがトークンを生成します。在庫、生成状態、失敗理由は別々に表示されます", "需重登": "再ログイン", "顺序": "順序", "顺序未保存:{message}": "順序を保存できませんでした:{message}", "领取 {time}": "受け取り {time}", "额度": "枠", "额度充足": "利用枠あり", "额度来源": "使用枠の提供元", "额度查询暂不可用。": "使用枠の照会を現在利用できません。", "额度查询未完成,未显示上游原始诊断。": "使用枠の照会は完了しませんでした。上流の未加工の診断情報は表示しません。", "额度窗口读数来自开放平台监控通道(套餐 JWT 那条通道没有额度桶):读的是每 N 小时 / 每周窗口的剩余比例": "枠(ウィンドウ)の読み取り値はオープンプラットフォームの監視チャネルから取得しています(コーディングプランの JWT チャネルには枠がありません)。N 時間ごと / 週ごとのウィンドウの残り割合を読んでいます", "额度详情": "利用枠の詳細", "首次失败后额外重试的次数;默认 3 次,0 = 不重试。手动和自动查询均生效,全部失败后才显示失败并记录日志。": "初回失敗後に追加で試行する回数です。既定は 3 回、0 は再試行なし。手動・自動照会の両方に適用され、すべて失敗した場合のみ失敗を表示し、ログに記録します。", "验证失败:{error}": "認証に失敗しました:{error}", "验证码令牌池接口不可用": "CAPTCHA トークンプールを利用できません", "验证码令牌:{counts}": "認証コードトークン:{counts}", "高级请求": "プレミアムリクエスト", "魔粒": "Magicubes", "默认仅开启最快到期优先;可用余额和账号添加时间默认关闭。": "既定では期限が近い順のみ有効です。利用可能残高とアカウント追加日時の並べ替えは無効です。", "默认保持手动顺序,可按需开启支持的自动排序规则。": "既定では手動順序を維持します。必要に応じて対応する自動並べ替えルールを有効にできます。", "默认展开 / 收起": "既定の展開 / 折りたたみ", "({n} 个未配置查询凭证)": "({n} 個はクエリ用認証情報が未設定)", "(不可用)": "(使用不可)", "(其他订阅,可能未生效)": "(その他のサブスクリプション、未反映の可能性あり)", "(只测了前 {limit} 个,还有 {rest} 个未测)": "(先頭 {limit} 個のみテスト済み、残り {rest} 個は未テスト)", "(名下 {count} 个账号共用)": "(配下の {count} アカウントで共用)", "(已在 Clash 中禁用)": "(Clash で無効化済み)", "(库存为空,等待补铸;请保持主窗口或浏览器面板打开)": "(在庫なし、補充待ち。メインウィンドウまたはブラウザのパネルを開いたままにしてください)", "(未启用套餐池账号,暂不补铸)": "(有効な Start Plan アカウントがないため生成停止中)", "(激活事件补报失败,可能影响领取资格:{message})": "(有効化イベントの追加送信に失敗しました。受け取り資格に影響する可能性があります:{message})", "+ 添加条件": "+ 条件を追加", "+ 添加限制": "+ 制限を追加", ",{countdown}重置": "、{countdown}にリセット", ",只对 OpenCode Zen 这类上游有意义,别的家请关掉。": "、OpenCode Zen のようなアップストリームでのみ意味があります。他のプロバイダーではオフにしてください。", ",已达到上限": "、上限に達しました", ":到「网络代理」页的「订阅管理」里点「同步 Clash Verge」把出口导进池后即可选 —— 那样能集中测试、也能被多个账号共用。": ":「ネットワークプロキシ」ページの「サブスク管理」で「Clash Verge を同期」をクリックして出口をプールにインポートすると選択できます —— そうすれば一括でテストでき、複数のアカウントでも共用できます。", ";": ";", "{count} 个分区有未保存的更改": "{count} 個のセクションに未保存の変更があります", "{count} 个账号共用": "{count} 個のアカウントで共有", "{count} 个账号共用提供商的连接配置。": "このプロバイダーの接続設定は {count} 個のアカウントで共有されています。", "{count} 个账号共用连接配置": "{count} 個のアカウントで接続設定を共有", "✅ 已改回跟随提供商的 Base URL": "✅ プロバイダーの Base URL に追従するよう戻しました", "「{name}」名下 {count} 个账号共用这些连接设置。修改协议或 Base URL 可能中断正在进行的请求。": "この接続設定は「{name}」の {count} 個のアカウントで共有されています。プロトコルや Base URL を変更すると、処理中のリクエストが中断される可能性があります。", "「{name}」名下 {count} 个账号共用;修改协议或地址可能中断正在进行的请求。": "「{name}」の {count} 個のアカウントで共有されています。プロトコルやアドレスを変更すると、処理中のリクエストが中断される可能性があります。", "仅当前账号": "このアカウントのみ", "仅用于 OpenCode Zen 这类上游,普通提供商请保持关闭。": "OpenCode Zen などの上流サービス専用です。通常のプロバイダーではオフのままにしてください。", "代理只作用于当前账号,不改变其他账号的出网方式。": "プロキシはこのアカウントにのみ適用され、他のアカウントの接続方法は変更されません。", "余额读数也是限制器余额规则的数据来源。": "残高の値は、制限ルールの残高条件にも使用されます。", "使用密钥访问上游": "キーを使って上流に接続", "保存后将移除密钥,转发与拉取模型都不发送鉴权头。请确认上游确实无需凭证。": "保存するとキーが削除され、リクエスト転送とモデル取得時に認証ヘッダーを送信しなくなります。上流で認証情報が不要であることを確認してください。", "保存提供商共用配置?": "プロバイダーの共有設定を保存しますか?", "保存更改": "変更を保存", "共用": "共有", "关闭后不参与转发,余额查询不受影响。": "オフにすると転送に使用されなくなります。残高照会には影響しません。", "凭证设置": "認証情報", "出网方式": "接続方法", "前往模型管理": "モデル管理へ", "前往模型管理会关闭账号设置,尚未保存的修改不会生效。": "モデル管理へ移動するとアカウント設定が閉じられ、未保存の変更は破棄されます。", "包含提供商共用配置,将影响 {count} 个账号": "{count} 個のアカウントに影響する共有設定を含みます", "原密钥不会回显;更换密钥不会改变账号 ID。": "既存のキーは表示されません。キーを変更してもアカウント ID は変わりません。", "各分区的更改将统一保存": "すべてのセクションの変更をまとめて保存します", "启用账号": "アカウントを有効にする", "在账号列表中拖动分组或行首把手,调整转发顺序。": "アカウント一覧でグループや行頭のハンドルをドラッグして、転送順序を変更します。", "基本信息": "基本情報", "填写接口基址,无需追加 {path}。": "API のベース URL を入力してください。{path} を追加する必要はありません。", "将同时删除名下 {count} 个账号,无法恢复。": "このプロバイダーの {count} 個のアカウントもすべて削除されます。元に戻せません。", "开启后会改写请求体,补齐会话头与占位工具;未填密钥时使用匿名凭证 public。": "有効にするとリクエスト本文を書き換え、セッションヘッダーとプレースホルダーツールを補います。キーがない場合は匿名認証情報 public を使用します。", "当前没有凭证,转发时会跳过此账号。请填写密钥或选择「无需鉴权」。": "認証情報がないため、転送時にこのアカウントはスキップされます。キーを入力するか「認証不要」を選択してください。", "当前账号": "現在のアカウント", "所有分区中尚未保存的修改都会被放弃。已确认的独立清除操作不受影响。": "すべてのセクションの未保存の変更が破棄されます。確認済みの個別の削除操作には影響しません。", "提供商名称": "プロバイダー名", "改回跟随": "プロバイダーに追従", "改回跟随提供商": "プロバイダーに追従", "改回跟随提供商?": "プロバイダーに追従する設定に戻しますか?", "新密钥待保存": "新しいキーは未保存", "无需鉴权": "認証不要", "显示新输入的密钥": "新しく入力したキーを表示", "本地服务或无需凭证的上游": "ローカルサービスや認証不要の上流", "查询凭证": "照会用認証情報", "模型清单与映射在「模型管理」中维护。": "モデル一覧とマッピングは「モデル管理」で編集します。", "模拟 OpenCode 官方客户端": "OpenCode 公式クライアントをエミュレート", "正在保存…": "保存中…", "正在编辑提供商共用配置": "プロバイダーの共有設定を編集中", "没有未保存的更改": "未保存の変更はありません", "没有规则或全部停用时不限制;跳过后自动恢复,禁用后需手动启用。": "ルールがないか、すべてオフの場合は制限しません。スキップは自動復帰し、無効化した場合は手動で有効にする必要があります。", "清除余额查询凭证?": "残高照会用の認証情報を削除しますか?", "清除已存 API Key?": "保存済みの API Key を削除しますか?", "清除已存密钥": "保存済みキーを削除", "清除查询凭证?": "照会用認証情報を削除しますか?", "用于当前账号的对话、余额查询、模型拉取、模型测试、签到及凭证刷新等上游请求。留空使用提供商默认值;可选预置或直接填写。": "このアカウントのチャット、残高照会、モデル取得・テスト、チェックイン、認証情報の更新など、上流へのリクエストに適用されます。空欄ではプロバイダーの既定値を使用します。プリセットの選択または直接入力ができます。", "用明确的规则保护当前账号的额度。": "明確なルールでこのアカウントの利用枠を保護します。", "留空不修改,替换后点击「保存更改」生效。": "空欄のままなら変更しません。新しいキーは「変更を保存」を押すと反映されます。", "留空保留当前密钥,输入新密钥以替换": "空欄で既存のキーを維持、新しいキーを入力して変更", "确认保存": "保存を確認", "确认后立即生效,不受底部保存按钮控制。没有凭证且未开启「无需鉴权」时,此账号将被转发跳过。": "確認後すぐに反映され、下部の保存ボタンとは独立しています。認証情報がなく「認証不要」もオフの場合、このアカウントは転送時にスキップされます。", "确认后立即生效,不受底部保存按钮控制。通常可继续复用转发用的登录凭证。": "確認後すぐに反映され、下部の保存ボタンとは独立しています。通常は転送用のログイン認証情報を引き続き使用できます。", "确认后立即生效,余额查询可能显示「未配置」。取消账号设置不会恢复已清除的凭证。": "確認後すぐに反映され、残高照会に「未設定」と表示される場合があります。アカウント設定をキャンセルしても、削除済みの認証情報は復元されません。", "确认弹窗不可用,请重新打开页面": "確認ダイアログを利用できません。ページを開き直してください。", "管理当前账号的凭证与可用套餐。": "このアカウントの認証情報と利用可能なプランを管理します。", "统一管理提供商的协议、地址与兼容选项。": "プロバイダーのプロトコル、アドレス、互換性設定をまとめて管理します。", "自定义 API": "カスタム API", "要修改连接地址或协议?": "接続アドレスやプロトコルを変更しますか?", "设置当前账号访问上游的出网方式。": "このアカウントから上流サービスへの接続方法を設定します。", "设置账号名称、启用状态与转发行为。": "アカウント名、有効状態、転送時の動作を設定します。", "请填写有效的 HTTP 或 HTTPS 地址": "有効な HTTP または HTTPS アドレスを入力してください", "请求标识": "リクエスト識別", "请求端点": "リクエスト先", "账号凭证": "アカウント認証情報", "转发行为": "転送時の動作", "达到上限后,将请求交给其他账号。": "上限に達すると、リクエストを他のアカウントに渡します。", "这个账号单独存了一份地址:{url},转发时优先用它。上面改的是提供商共用地址,不会覆盖它。": "このアカウントは独自のアドレス({url})を保存しており、転送時はこちらが優先されます。上で変更するのはプロバイダー共通のアドレスで、この値は上書きされません。", "这个账号将改用提供商当前保存的 Base URL:{url}。确认后立即生效,不受底部保存按钮控制。": "このアカウントはプロバイダーに現在保存されている Base URL({url})を使うようになります。確認するとすぐに反映され、下部の保存ボタンの対象外です。", "连接参数": "接続パラメーター", "连接设置": "接続設定", "配置余额查询凭证、自动刷新间隔与失败重试。": "残高照会用認証情報、自動更新間隔、失敗時の再試行を設定します。", "鉴权方式": "認証方法", "隐藏新输入的密钥": "新しく入力したキーを非表示", "高级兼容": "高度な互換性設定", "默认关闭": "既定ではオフ", " · 模型 {head}{rest}": " · モデル {head}{rest}", " 等 {n} 个": " など {n} 個", "1// 开头的 Google refresh token(也可直接粘贴 refresh_token=… 整行)": "1// で始まる Google refresh token(refresh_token=… の行をそのまま貼り付けても可)", "11 位大陆手机号": "11 桁の中国本土の携帯番号", "1~64 个字符,账号列表里按它分组显示": "1~64 文字、アカウント一覧ではこれでグループ表示されます", "6 位数字": "6 桁の数字", "
  • 没有可自动领的活动
  • ": "
  • 自動で受け取れるイベントはありません
  • ", "

    领到的是套餐赠送积分,不会增加福利模型的 token 池;": "

    受け取るのはプラン特典ポイントで、特典モデルの token プールは増えません;", "ACP 代理配置无效,请重新选择代理。": "ACP のプロキシ設定が無効です。プロキシを選び直してください。", "ACP 会话失败时不自动重发,也不切换到其他接入方式。": "ACP セッションが失敗しても、自動再送や別の接続方式への切り替えは行いません。", "ACP 使用网关电脑上的官方 agy CLI,不是当前手机或浏览器所在设备。请先安装 agy 1.5.0 或更新版本:https://antigravity.google/docs/cli。程序不在默认位置时,可在网关启动环境设置 AGY_PATH。": "ACP はブラウザーやスマートフォンではなく、ゲートウェイのコンピューター上の公式 agy CLI を使用します。まず agy 1.5.0 以降をインストールしてください:https://antigravity.google/docs/cli。標準以外の場所にある場合は、ゲートウェイの起動環境で AGY_PATH を設定できます。", "ACP 尚未返回可用的会话模型目录,请检查官方 CLI 登录状态后重试。": "ACP から利用可能なセッションのモデル一覧が返されていません。公式 CLI のログイン状態を確認して再試行してください。", "ACP 的本机进程仍使用原来的代理。请先在插件页停用再启用 ACP 插件,再使用新的代理。": "ローカル ACP プロセスは以前のプロキシを使用しています。新しいプロキシを使う前に、プラグインページで ACP プラグインを無効化してから再度有効化してください。", "API Key + 控制台令牌(模型调用 + 墨点额度)": "API Key + コンソールトークン(モデル利用 + 墨点残高)", "API 凭证添加暂不能解析代理池引用;请使用自定义代理地址,添加后再在账号设置中调整。": "API 認証情報の追加では、現在プロキシプールの参照を解決できません。カスタムプロキシのアドレスを指定し、追加後にアカウント設定で調整してください。", "API 模板": "API テンプレート", "AWS Builder ID(直接授权,减少一次回填)": "AWS Builder ID(直接認可、貼り付けが 1 回減ります)", "AWS 地区(账号目录所在地区)": "AWS リージョン(アカウントディレクトリの所在地)", "AiHubMix 的 OpenAI 兼容端点,使用 AiHubMix 的 API Key;模型 ID 以平台清单为准": "AiHubMix の OpenAI 互換エンドポイントです。AiHubMix の API Key を使用し、モデル ID はプラットフォームの一覧に従ってください", "Anthropic 兼容端点在 https://api.deepseek.com/anthropic(协议换 anthropic 时填它)": "Anthropic 互換エンドポイントは https://api.deepseek.com/anthropic です(プロトコルを anthropic に切り替えるときにこれを入力)", "Anthropic 协议填根地址,不要带 /v1": "Anthropic プロトコルではルートアドレスを入力し、/v1 は付けないでください", "Antigravity": "Antigravity", "Antigravity 账号的添加方式": "Antigravity アカウントの追加方法", "AtomCode": "AtomCode", "AutoClaw 国内版": "AutoClaw 中国版", "AutoClaw 国际版": "AutoClaw 国際版", "BDUSS 必填;请粘贴**完整 Cookie**(Cookie 编辑器一键导出即可)—— 其中 **PTOKEN 必须保留**,网关要用它向百度换发 KukuAI 业务会话令牌,缺了它模型刷新会报「未登录」。支持整段 Cookie 头、Cookie 编辑器导出的 JSON 数组,或 {BDUSS, STOKEN} 对象。KukuAI 没有刷新机制,登录态过期后重新粘贴即可。": "BDUSS は必須です;**完全な Cookie** を貼り付けてください(Cookie エディターのワンクリック書き出しで構いません)—— このうち **PTOKEN は必ず残してください**。ゲートウェイはこれを使って Baidu から KukuAI の業務セッショントークンを発行してもらうため、欠けるとモデル更新時に「未ログイン」と表示されます。Cookie ヘッダー全体、Cookie エディターが書き出した JSON 配列、または {BDUSS, STOKEN} オブジェクトに対応しています。KukuAI には更新の仕組みがないため、ログイン状態の期限が切れたら貼り直せば済みます。", "BDUSS=…; STOKEN=…(或 Cookie 编辑器导出的 JSON)": "BDUSS=…; STOKEN=…(または Cookie エディターが書き出した JSON)", "CatPaw 的 X-Passport-Token(登录态 Cookie)": "CatPaw の X-Passport-Token(ログイン状態 Cookie)", "ChatGPT / Codex": "ChatGPT / Codex", "ChatGPT API": "ChatGPT API", "ChatGPT API 订阅": "ChatGPT API サブスクリプション", "Claude Code 本机订阅": "Claude Code ローカルサブスクリプション", "Claude 订阅": "Claude サブスクリプション", "Cline Pass 的 API Key 在 app.cline.bot 获取(订阅制);端点为 OpenAI 兼容,模型清单以 Cline 控制台为准,模型名在模型管理里按裸名添加(如 glm-5.2 / kimi-k2.7-code / deepseek-v4-pro);上游按客户端形态校验,所需的客户端请求头已随卡预置": "Cline Pass の API Key は app.cline.bot で取得します(サブスクリプション制)。エンドポイントは OpenAI 互換で、モデル一覧は Cline コンソールが正となります。モデル名はモデル管理で接頭辞なしの名前のまま追加します(例:glm-5.2 / kimi-k2.7-code / deepseek-v4-pro)。上流はクライアントの形態を検証するため、必要なクライアントリクエストヘッダーはこのカードにあらかじめ設定されています", "Cloud project 必填;不会借用其他 Google 提供商的凭证或额度。": "Cloud project は必須です。他の Google プロバイダーの認証情報や使用枠は流用しません。", "Cloud-IDE-JWT(三段点分)": "Cloud-IDE-JWT(3 段のドット区切り)", "Cloudflare Account ID(32 位十六进制)": "Cloudflare アカウント ID(16 進数 32 桁)", "Codex 订阅": "Codex サブスクリプション", "Command Code": "Command Code", "Cursor dashboard API key;loader 按需重新 exchange 模型 token,不提供手动令牌刷新。": "Cursor dashboard API key。loader が必要に応じてモデル用 token を交換します。手動トークン更新は行いません。", "DeepSeek 网页": "DeepSeek Web", "Gemini CLI / Code Assist": "Gemini CLI / Code Assist", "Gemini CLI 凭证文件绝对路径(只读,不复制或写回 refresh token)": "Gemini CLI 認証情報ファイルの絶対パス(読み取り専用。refresh token のコピーや書き戻しは行いません)", "GitHub Copilot": "GitHub Copilot", "GitHub 官方设备码登录": "GitHub 公式デバイスコード認証", "GitHub 登录域名(留空使用 github.com)": "GitHub ログインドメイン(空欄は github.com)", "Google Cloud Project ID(必填,Standard / Enterprise 资格由上游判定)": "Google Cloud Project ID(必須。Standard / Enterprise 利用資格は上流が判定)", "Google Cloud Project ID(必填,Standard / Enterprise 资格由上游判定);默认候选来自 {variable},请明确确认": "Google Cloud Project ID(必須。Standard / Enterprise 利用資格は上流が判定)。既定候補は {variable} から取得しています。明示的に確認してください。", "Google OAuth(Code Assist + Cloud project)": "Google OAuth(Code Assist + Cloud project)", "Google 授权(ACP)": "Google 認証(ACP)", "Groq 的 OpenAI 兼容端点,使用 GroqCloud 的 API Key": "Groq の OpenAI 互換エンドポイントです。GroqCloud の API Key を使用します", "IAM Identity Center(企业账号,直接授权)": "IAM Identity Center(組織アカウント、直接認可)", "JWT(三段点分;也可直接粘贴 Bearer 整行或 data.bin 内容)": "JWT(ドット区切り 3 パート。Bearer 行全体や data.bin の中身を貼っても可)", "JWT(三段点分;也可直接粘贴 chatglm_token=… 整行)": "JWT(3 つのドット区切り部分。chatglm_token=… の行をそのまま貼っても可)", "Kimi / Moonshot 国内版": "Kimi / Moonshot 中国版", "Kimi / Moonshot 国内站 API Key,使用 moonshot.cn 按量接口;不是 Kimi Code 会员入口": "Kimi / Moonshot 中国サイトの API Key を使用し、moonshot.cn の従量課金 API に接続します。Kimi Code 会員向けの接続先ではありません", "Kimi / Moonshot 国际版": "Kimi / Moonshot 国際版", "Kimi / Moonshot 国际站 API Key,使用 moonshot.ai 按量接口;不是 Kimi Code 会员入口": "Kimi / Moonshot 国際サイトの API Key を使用し、moonshot.ai の従量課金 API に接続します。Kimi Code 会員向けの接続先ではありません", "Kiro API key(ksk_…)。": "Kiro API key(ksk_…)。", "Kiro 登录页(Google / GitHub 等)": "Kiro ログインページ(Google / GitHub など)", "Kiro 网页登录": "Kiro Web ログイン", "LM Studio(本地)": "LM Studio(ローカル)", "LobsterAI": "LobsterAI", "LongCat 的 OpenAI 兼容端点,使用 LongCat 平台的 API Key": "LongCat の OpenAI 互換エンドポイントです。LongCat プラットフォームの API Key を使用します", "MClaw 由插件在网关电脑上启动专用 Chrome 窗口,独立登录环境也用于自动续期,不使用系统默认浏览器或应用内嵌窗口。": "MClaw プラグインはゲートウェイのマシン上で専用 Chrome ウィンドウを起動します。独立したログイン環境は自動更新にも使用するため、システムの既定ブラウザーやアプリ内蔵ウィンドウは使用しません。", "MiniMax Code 国内版": "MiniMax Code 中国版", "MiniMax Code 国际版": "MiniMax Code 国際版", "Mistral 的 OpenAI 兼容端点,使用 Mistral 控制台的 API Key": "Mistral の OpenAI 互換エンドポイントです。Mistral コンソールの API Key を使用します", "ModelScope 国内版": "ModelScope 中国版", "ModelScope 国际版": "ModelScope 国際版", "MonkeyCode": "MonkeyCode", "MonkeyCode 国际版": "MonkeyCode 国際版", "MonkeyCode 自动网页登录仅限桌面端;浏览器面板请登录对应官网后粘贴 session。": "MonkeyCode の自動ウェブログインはデスクトップ版専用です。ブラウザの管理画面では、対応する公式サイトにログインして session を貼り付けてください。", "NVIDIA NIM 托管端点,Key 在 integrate.api.nvidia.com 申请": "NVIDIA NIM のマネージドエンドポイント。Key は integrate.api.nvidia.com で申請します", "Nous Portal 的按量 API,使用 Portal 的 API Key;不是旧的订阅登录方式": "Nous Portal の従量課金 API です。従来のサブスクリプションログインではなく、Portal の API Key を使用します", "OfficeAce 果办": "OfficeAce", "QuWork 凭证": "QuWork 認証情報", "QuWork 原设备标识": "QuWork の元のデバイス識別情報", "QwenWork 千问办公": "QwenWork 公共版", "QwenWork 千问办公企业版": "QwenWork 企業版", "StepFun 国内版(按量)": "StepFun 中国版(従量課金)", "StepFun 国内站按量 API;请使用按量 API Key,不要填 Step Plan 套餐 Key": "StepFun 中国サイトの従量課金 API です。Step Plan のプラン用 Key ではなく、従量課金用 API Key を入力してください", "StepFun 国际版(按量)": "StepFun 国際版(従量課金)", "StepFun 国际站按量 API;请使用按量 API Key,不要填 Step Plan 套餐 Key": "StepFun 国際サイトの従量課金 API です。Step Plan のプラン用 Key ではなく、従量課金用 API Key を入力してください", "Tabbit 国内版": "Tabbit 中国版", "Tabbit 国际版": "Tabbit 国際版", "TokenPlan API Key(控制台 → 科研模型 → API Key)": "TokenPlan API Key(コンソール → 科研模型 → API Key)", "User-Agent(可选)": "User-Agent(任意)", "accessToken 是 Accio 的登录凭证(一长串不透明 token,不是 JWT);refreshToken 可选,填了之后到期能自动续期。请填写 {label}账号的凭证 —— {siteNote}(最容易拿到的办法:直接用上方的「网页登录」,不需要手工找 token。)": "accessToken は Accio のログイン認証情報です(長い不透明な token 文字列で、JWT ではありません);refreshToken は任意で、入力すると期限切れ時に自動更新できます。{label}アカウントの認証情報を入力してください —— {siteNote}(最も簡単な方法:上の「ウェブログイン」を使えば token を手動で探す必要はありません。)", "accessToken 是 Trae 的 Cloud-IDE-JWT(三段点分),refreshToken 用于到期自动续期(本家 refreshToken 一次一换:换发一次旧的即作废,所以两份程序别同时刷同一个账号)。
    手工粘贴时请连 machineId / deviceId 一起填:上游把它们与登录时上传的设备公钥绑在一起判设备,凭空换一对会撞 2xxxx 那族设备绑定拒绝。
    没有这三样时的正路是用上方的「网页登录」;容器 / 远程部署形态按提示粘贴地址栏回调地址即可。": "accessToken は Trae の Cloud-IDE-JWT(3 段のドット区切り)です。refreshToken は期限切れ時の自動更新に使用します(本家の refreshToken は 1 回ごとに交換され、一度更新すると古いものは無効になります。そのため 2 つのプログラムで同じアカウントを同時に更新しないでください)。
    手動で貼り付ける場合は machineId / deviceId も一緒に入力してください:アップストリームはこれらをログイン時にアップロードされたデバイス公開鍵と紐付けてデバイスを判定するため、根拠なく別のペアにすると 2xxxx 系のデバイスバインディング拒否に当たります。
    この 3 つがない場合の正道は上の「ウェブログイン」を使うことです;コンテナ / リモートデプロイ形態では案内に従ってアドレスバーのコールバックアドレスを貼り付けてください。", "chat.deepseek.com 的 userToken.value,不是收费 API Key": "chat.deepseek.com の userToken.value。有料 API Key ではありません", "github-copilot/apps.json 或 opencode/auth.json": "github-copilot/apps.json または opencode/auth.json", "github.com 或 company.ghe.com": "github.com または company.ghe.com", "github.com:Iv1.b507a08c87ecfe98 或 github-copilot": "github.com:Iv1.b507a08c87ecfe98 または github-copilot", "monkeycode_ai_session 的值(也可直接粘贴整段 Cookie)": "monkeycode_ai_session の値(Cookie 全体をそのまま貼り付けても可)", "ms- 开头的 API 令牌": "ms- で始まる API トークン", "project 必填;只读引用文件,模块的 OAuth 续期不写回客户端。": "project は必須です。ファイルを読み取り専用で参照し、モジュールの OAuth 更新はクライアントに書き戻しません。", "refreshToken 可选,填了到期可自动续期;两者都能从小浣熊客户端登录态文件里取到。": "refreshToken は任意で、入力すると期限切れ時に自動更新できます;どちらも小浣熊クライアントのログイン状態ファイルから取得できます。", "refreshToken 可选,填了可自动续期;两者都能从客户端登录态文件取到。同一个 Cline 账号两个池都能用,这里归入 {label}。": "refreshToken は任意で、入力すると自動更新できます;どちらもクライアントのログイン状態ファイルから取得できます。同じ Cline アカウントはどちらのプールでも使え、ここでは {label} に分類されます。", "token 支持 enc: 前缀(Windows 上自动解密)。未填 refreshToken 无法自动续期。": "token は enc: プレフィックスに対応しています(Windows では自動復号)。refreshToken を入力しないと自動更新できません。", "token 是登录态 Cookie;CatPaw 没有刷新机制,过期后需在客户端重新登录。": "token はログイン状態 Cookie です;CatPaw には更新の仕組みがないため、期限切れ後はクライアントで再ログインが必要です。", "token=…; user_id=…(也可粘贴 Copy as cURL 整段)": "token=…; user_id=…(Copy as cURL の全体を貼り付けても可)", "user_ 开头的 API Key(也可直接粘贴 Authorization: Bearer … 整行)": "user_ で始まる API Key(Authorization: Bearer … の行をそのまま貼り付けても可)", "xAI 的 OpenAI 兼容端点,使用 xAI 控制台的 API Key;不是 Grok 网页订阅": "xAI の OpenAI 互換エンドポイントです。Grok Web のサブスクリプションではなく、xAI コンソールの API Key を使用します", "your-company.vpc.qwenwork.cn 或 https://your-company.vpc.qwenwork.cn": "your-company.vpc.qwenwork.cn または https://your-company.vpc.qwenwork.cn", "{label} 网页登录的打开方式": "{label} のウェブログインの開き方", "{label} 账号地区": "{label} アカウントの地域", "{label} 账号的添加方式": "{label} アカウントの追加方法", "{label}账号已添加": "{label} アカウントを追加しました", "{label}(只读本机)": "{label}(ローカル・読み取り専用)", "{message}:请在打开的页面完成滑块,完成后回到这里点「已完成验证,继续发送」": "{message}:開いたページでスライダーを完了し、戻って「認証完了、再送信」をクリックしてください", "{message}:请手动打开验证页面 {url},完成后回到这里点「已完成验证,继续发送」": "{message}:認証ページ {url} を手動で開き、完了後に戻って「認証完了、再送信」をクリックしてください", "{name} 不是合法 JSON:{reason}": "{name} は有効な JSON ではありません:{reason}", "{name}要粘一个 JSON 对象(形如 {sample})": "{name} には JSON オブジェクトを貼り付けてください(例:{sample})", "{n} 个账号": "{n} 個のアカウント", "{n} 个账号,点击添加": "{n} 個のアカウント、クリックして追加", "{seconds}s 后重发": "{seconds} 秒後に再送", "✅ {label}账号已添加": "✅ {label} アカウントを追加しました", "✅ {label}账号已添加{name}": "✅ {label} アカウントを追加しました{name}", "✅ 已从 cc-switch 导入 {n} 个供应商": "✅ cc-switch から {n} 個のプロバイダーをインポートしました", "✅ 已创建自定义提供商「{name}」并添加账号": "✅ カスタムプロバイダー「{name}」を作成し、アカウントを追加しました", "✅ 已删除自定义提供商「{name}」{accounts}{keys}": "✅ カスタムプロバイダー「{name}」を削除しました{accounts}{keys}", "✅ 已更新已有账号{name}(同一把 API Key 只保留一条,重复添加会合并)": "✅ 既存アカウント{name}を更新しました(同じ API Key は 1 件のみ保持し、再追加はマージされます)", "✅ 已更新已有账号{name}(同一提供商内,同一把 API Key 只保留一条)": "✅ 既存のアカウント{name}を更新しました(同じプロバイダー内では API Key ごとに 1 件のみ保持)", "✅ 登录成功,{edition}账号已加入列表": "✅ ログインに成功し、{edition}アカウントをリストに追加しました", "✅ 领取成功:{planId}{period}": "✅ 受け取りに成功しました:{planId}{period}", " 同一家可以放多把 key,按优先级轮换。": " 同じプロバイダーに複数の key を置くことができ、優先度に従ってローテーションされます。", "「{name}」的账号添加功能还在开发中,敬请期待。": "「{name}」のアカウント追加機能は開発中です。ご期待ください。", "一个 Key 用遍多家模型,模型名用「厂商/模型」全称(如 deepseek/deepseek-chat)": "1 つの Key で複数のプロバイダーのモデルを利用できます。モデル名は「ベンダー/モデル」の完全名を指定します(例:deepseek/deepseek-chat)", "上游不要鉴权时留空,并勾选下面一项(留空又不勾会被当成未配置凭证)": "アップストリームが認証不要の場合は空欄にし、下の項目にチェックを入れてください(空欄かつ未チェックでは認証情報未設定として扱われます)", "上游信息": "アップストリーム情報", "上游没有给出验证页面地址": "上流が認証ページのアドレスを返しませんでした", "上游要求人机验证,但没有给出验证页面地址,请稍后重试": "上流が人間認証を要求していますが、認証ページのアドレスが返されませんでした。しばらくしてから再試行してください", "不使用预置": "プリセットを使用しない", "不可领({status})": "受け取り不可({status})", "不授权": "許可しない", "不支持导入": "インポートに対応していません", "不是有效的凭证文件:内容要是一个 JSON 对象": "有効な認証情報ファイルではありません:内容は JSON オブジェクトである必要があります", "不是有效的凭证文件:需要包含 accessToken 与 uid": "有効な認証情報ファイルではありません:accessToken と uid が必要です", "不是自定义提供商": "カスタムプロバイダーではありません", "不需要 Key:转发与拉取模型都不发送鉴权头": "Key は不要:転送とモデル取得のいずれも認証ヘッダーを送信しません", "不需要登录:点下面的按钮,网关会直接在智谱清言换发一份访客凭证并加入账号列表(也可以先填个备注名)。访客凭证可以直接用来对话,免费额度由上游按设备发放。

    注意:访客账号没有积分体系 —— 它与「会员积分」「每日登录积分」「活动领取」相关的接口一律需要登录,因此那些能力对访客会如实跳过(账号页的积分、签到中心都不显示读数)。想要积分就用「填写凭证」粘一个已登录账号的令牌,或「导入桌面端登录态」。": "ログイン不要です。下のボタンを押すと、ゲートウェイが智谱清言からゲスト資格情報を直接取得してアカウント一覧に追加します(先にメモ名を入力しても構いません)。ゲスト資格情報はそのまま会話に使え、無料枠は上流がデバイス単位で発行します。

    注意:ゲストアカウントにはポイント体系がありません。会員ポイント・毎日ログインポイント・アクティビティ受け取りの各インターフェースはすべてログインが必要なため、これらの機能はゲストではスキップされます(アカウントページのポイントや签到センターには数値が表示されません)。ポイントが必要な場合は「資格情報を入力」でログイン済みアカウントのトークンを貼り付けるか、「デスクトップのログイン状態をインポート」してください。", "两版账号可同时保存,各自一份模型清单(国内版与国际版是两家提供商,可分别启用与映射)。": "両版のアカウントは同時に保存でき、それぞれ独自のモデルカタログを持ちます(中国版と国際版は別々のプロバイダーで、個別に有効化とマッピングができます)。", "中国版": "中国版", "也支持本软件导出的单账号 JSON 文件,保留账号凭证与附加信息。": "本アプリが出力した単一アカウントの JSON ファイルにも対応し、認証情報と追加データを保持します。", "仅 API Key(模型调用,不含墨点额度)": "API Key のみ(モデル利用、墨点残高なし)", "仅填写自己的 GitHub 令牌": "自分の GitHub トークンのみを入力", "仅支持仍有有效 Gemini Code Assist Standard / Enterprise 资格并绑定 Cloud project 的账号。个人免费版及 Google AI Pro / Ultra 已于 2026-06-18 停止支持;Standard / Enterprise 新订阅已于 2026-10-09 停售。不会切换到其他 Google 产品或额度池。": "有効な Gemini Code Assist Standard / Enterprise 利用資格があり、Cloud project に紐付いた既存アカウントのみを対象とします。個人無料版と Google AI Pro / Ultra は 2026-06-18 に対応を終了し、Standard / Enterprise の新規契約は 2026-10-09 に販売終了しました。他の Google 製品や使用枠には切り替えません。", "仅读取本机 Claude Code 的当前订阅登录。若未登录,请先在自己的终端登录;本地凭证仍由 CLI 管理。": "ローカル Claude Code の現在のサブスクリプション認証のみを読み取ります。未ログインの場合は自分の端末で先にログインしてください。ローカル認証情報は引き続き CLI が管理します。", "今天没有需要领的活动(都已到账)": "本日受け取る必要のあるイベントはありません(すべて付与済み)", "今天(北京时间 {day})已试 {attempts} 次,还能试 {left} 次{next}
    ": "本日(北京時間 {day})は {attempts} 回試行済み、あと {left} 回試せます{next}
    ", "从 Google 官方源下载并核验 SHA-512;下载使用网关默认出口。更新失败保留旧版,进行中的对话不受替换影响。": "Google の公式配布元からゲートウェイの既定の接続でダウンロードし、SHA-512 を検証します。更新に失敗しても旧版を保持し、進行中の会話は中断しません。", "从别的机器(或 OfficeAce 桌面端 models.json)取三项贴进来:模型网关基址(baseUrl,形如 https://modelgw-…/v2)与 modelAppKey / modelAppSecret。这三项就能转发(网关凭据不过期);控制面临时凭据(accessKeyId 等)可选,留空则额度/自动续期不可用,但不影响转发。": "別のマシン(または OfficeAce デスクトップ版の models.json)から次の 3 項目を取り出して貼り付けてください:モデルゲートウェイのベース URL(baseUrl、https://modelgw-…/v2 の形式)と modelAppKey / modelAppSecret。この 3 項目だけで転送できます(ゲートウェイ認証情報は無期限)。コントロールプレーンの一時認証情報(accessKeyId など)は任意で、空欄の場合は残高照会と自動更新が使えませんが、転送には影響しません。", "从本机导入桌面端登录态": "本機からデスクトップ版のログイン状態をインポート", "任务镜像 id": "タスクイメージ id", "余额查询": "残高照会", "你企业的千问办公旗舰版域名(企业管理后台地址栏的域名,如 your-company.vpc.qwenwork.cn)": "QwenWork Enterprise 旗艦版のドメイン(企業管理画面のアドレスバーにあるドメイン。例: your-company.vpc.qwenwork.cn)", "使用 Google 账号登录": "Google アカウントでログイン", "使用 Zai 账号登录": "Zai アカウントでログイン", "使用 {name} 模板新建提供商": "{name} テンプレートでプロバイダーを作成", "使用个人访问令牌(PAT)": "個人アクセストークン(PAT)を使用", "使用本机 Claude Code 登录": "ローカル Claude Code の認証を使用", "使用本机 Kimi Work 登录": "ローカル Kimi Work の認証を使用", "使用模板新建提供商": "このテンプレートでプロバイダーを作成", "使用网页令牌,不是收费 API Key。": "有料 API Key ではなく、Web トークンを使用してください。", "使用自己的 GitHub 账号授权;模型条款须在官方客户端手动确认。": "自分の GitHub アカウントで認可します。モデル規約は公式クライアントで手動確認が必要です。", "先在网关所在机器启动 LM Studio 服务;localhost 指向网关所在机器,远程或容器部署请改为网关可访问的地址。默认无需鉴权;启用认证后请取消「该上游无需鉴权」并填写真实 API Key": "まずゲートウェイが動作するマシンで LM Studio サーバーを起動してください。localhost はゲートウェイのマシンを指します。リモート環境やコンテナでは、ゲートウェイから接続できるアドレスに変更してください。既定では認証不要です。認証を有効にした場合は「このアップストリームは認証不要」のチェックを外し、実際の API Key を入力してください", "免费模型不用填 Key(默认勾上「该上游无需鉴权」,网关自动用匿名凭证);付费模型则填 Zen 的 API Key。免费档上游只认官方客户端形态,已默认开启「伪装 OpenCode 官方客户端」": "無料モデルでは Key の入力は不要です(既定で「このアップストリームは認証不要」がチェックされ、ゲートウェイは自動的に匿名認証情報を使用します);有料モデルでは Zen の API Key を入力します。無料枠のアップストリームは公式クライアントの形態しか受け付けないため、「OpenCode 公式クライアントの偽装」が既定で有効になっています", "关联用户指定的本地 Copilot 凭证(只读)": "ユーザー指定のローカル Copilot 認証情報を関連付け(読み取り専用)", "内嵌窗口": "内蔵ウィンドウ", "内嵌窗口打开;关窗即取消等待(Google 账号被拒时改用系统浏览器)": "内蔵ウィンドウで開きます;ウィンドウを閉じると待機をキャンセルします(Google アカウントが拒否された場合はシステムブラウザをお使いください)", "内嵌窗口打开;完成后自动加入列表,关窗即取消等待": "内蔵ウィンドウで開きます;完了後は自動でリストに追加され、ウィンドウを閉じると待機をキャンセルします", "内嵌窗口打开;扫码完成后自动加入列表,关窗即取消等待": "内蔵ウィンドウで開きます。読み取りが完了すると自動で一覧に追加され、ウィンドウを閉じると待機を中止します", "内嵌窗口用全新环境,多账号互不影响;关窗即取消等待": "内蔵ウィンドウは新しい環境を使うため、複数のアカウントが互いに影響しません;ウィンドウを閉じると待機をキャンセルします", "内嵌窗口登录": "アプリ内ウィンドウでログイン", "内嵌窗口(推荐)": "内蔵ウィンドウ(推奨)", "准备验证…": "認証を準備中…", "凭据 JSON": "認証情報 JSON", "凭证 JSON 或模型凭证": "認証 JSON またはモデル認証情報", "凭证仅发送至当前网关": "認証情報はこのゲートウェイにのみ送信されます", "凭证文件在哪?": "認証情報ファイルの場所は?", "凭证文件类型": "認証情報ファイルの種類", "创建并添加账号": "作成してアカウントを追加", "创建这个提供商,并同时建立它的第一个账号。": "このプロバイダーを作成し、同時にその最初のアカウントを作成します。", "删除功能不可用(脚本未就绪)": "削除機能は利用できません(スクリプト未準備)", "删除失败:{reason}": "削除に失敗しました:{reason}", "删除此提供商": "このプロバイダーを削除", "千问办公 国内版": "QwenWork(中国版)", "千问办公 国际版": "QwenWork(国際版)", "千问办公{label}暂时无法登录:上游只接受它自己的官方回调地址,不论证码到本机。": "QwenWork {label} は現在ログインできません。上流は自社の公式コールバックアドレスのみを受け付けるため、認可コードがこの端末に戻りません。", "原样提交本次流程的完整回调 URL。": "今回のフローの完全なコールバック URL を変更せず送信してください。", "去安装提供商插件包": "プロバイダープラグインパックをインストール", "及 {n} 个账号": "、および {n} 個のアカウント", "发送中…": "送信中…", "发送失败:{message}": "送信に失敗しました:{message}", "发送未确认:登录窗口已弹出,请在弹出的窗口中手动完成登录": "送信は未確認です:ログインウィンドウが開きました。表示されたウィンドウで手動でログインを完了してください", "取消失败:{message}": "キャンセルに失敗しました:{message}", "取消安装": "インストールをキャンセル", "取消等待": "待機をキャンセル", "只使用此路线签发的 OAuth 凭证;direct SIWC 与 Codex 客户端身份不同。": "この経路用に発行された OAuth 認証情報のみを使用します。direct SIWC と Codex はクライアント識別情報が異なります。", "只关联真实 CLI 2.1.259+ 的当前订阅;不代登录、不复制或续期客户端凭证。": "正規 CLI 2.1.259+ の現在の契約のみを関連付けます。ログインの代行、認証情報の複製・更新は行いません。", "只拿到 JWT 时填这里;Cookie 里有 token 可留空": "JWT だけを持っている場合に入力。Cookie に token が含まれていれば空欄で可", "只有「内嵌窗口」能恢复第三方入口:系统浏览器里我们无法改动登录页": "「内蔵ウィンドウ」でのみサードパーティの入り口を復元できます:システムブラウザではログインページを変更できないためです", "只看这一类": "この分類のみ", "只读引用 Grok Build home/scope/account;每次读取当前登录态,不复制 token,不回退退出前快照,不主动续期;源有效期未知时不作长期有效承诺。": "Grok Build home/scope/account を読み取り専用で参照します。毎回現在の認証を読み取り、token の複製、ログアウト前のスナップショットへの復帰、更新は行いません。元の期限が不明な場合、長期有効とは保証しません。", "只读引用本机 Kiro CLI/IDE;每次读取校验同一邮箱,不复制 token、不主动续期或回写,失效后由原客户端重登或同步。": "ローカル Kiro CLI/IDE を読み取り専用で参照します。各読み取りで同じメールアドレスを確認し、token の複製・更新・書き戻しは行いません。失効後は元のクライアントで再ログインまたは同期してください。", "只读所选标准文件与账号条目并验证 GitHub/Copilot 身份;只保存引用,不保存令牌副本,不扫描目录、读取 keychain 或运行 CLI。": "選択した標準ファイルとアカウント項目のみを読み取り、GitHub/Copilot の識別情報を検証します。参照のみを保存し、トークンのコピー、ディレクトリ走査、keychain の読み取り、CLI 実行は行いません。", "只读校验明确选择的本机凭证文件;仅保存引用与稳定身份,不复制或续期原客户端令牌。": "明示的に選択したローカル認証情報ファイルのみを読み取り専用で検証します。参照と安定した識別情報のみを保存し、元のクライアントのトークンはコピー・更新しません。", "只读用户明确指定的文件和账号条目,不自动扫描。": "ユーザーが明示したファイルとアカウント項目のみを読み取り、自動走査は行いません。", "只读验证所选 Gemini CLI 登录态和指定 project 的 Code Assist Standard / Enterprise 资格;不会启动 CLI、续期或复制令牌。": "選択した Gemini CLI の認証状態と指定 project の Code Assist Standard / Enterprise 利用資格を読み取り専用で検証します。CLI の起動やトークンの更新・コピーは行いません。", "只读验证本机 Claude Code 当前订阅登录;凭证仍由原 CLI 管理。": "ローカル Claude Code の現在のサブスクリプション認証を読み取り専用で検証します。認証情報は引き続き元の CLI が管理します。", "只读验证本机 Kimi 桌面版已有的 Work 登录,不复制令牌;账号可能没有可用模型。": "ローカル Kimi デスクトップの既存 Work 認証を読み取り専用で検証し、トークンはコピーしません。利用可能なモデルがない場合があります。", "可选": "任意", "可选(cloudaicompanionProject):留空由网关自动发现": "任意(cloudaicompanionProject):空欄の場合はゲートウェイが自動検出します", "可选,仅远程兑换码激活需要;从官方客户端读取": "任意。リモートでのコード有効化時のみ必要です。公式クライアントから読み取ってください。", "可选,展示用": "任意、表示用", "可选,没有则无法自动续期": "任意、ないと自動更新できません", "可选,用于生成账号标识": "任意。アカウント識別子の生成に使用", "可选,留空使用凭据里的 user_name": "任意、空欄の場合は認証情報の user_name を使用", "可选,留空使用账号名或邮箱": "任意。空欄の場合はアカウント名またはメールアドレスを使用します", "可选,留空使用账号姓名、邮箱或令牌指纹": "任意、空欄の場合はアカウントの氏名、メールアドレス、またはトークンフィンガープリントを使用", "可选,留空使用账号昵称或邮箱": "任意、空欄の場合はアカウントのニックネームまたはメールアドレスを使用", "可选,留空则用 key 尾号": "任意、空欄の場合は key の末尾を使用", "可选,留空则用 userId": "任意、空欄の場合は userId を使用", "可选,留空则用上游账号昵称": "任意・空欄なら上流のアカウント名を使用", "可选,留空则用上游返回的账号名或账号 id": "任意、空欄の場合はアップストリームが返したアカウント名またはアカウント id を使用", "可选,留空则用凭证里的账号名": "任意、空欄の場合は認証情報のアカウント名を使用", "可选,留空则用文件里的昵称": "任意。空欄の場合はファイル内のニックネームを使用", "可选,留空则用登录名或 uid": "任意、空欄の場合はログイン名または uid を使用", "可选,留空则用脱敏手机号": "任意、空欄の場合はマスク済み電話番号を使用", "可选,留空则用脱敏手机号或 userId": "任意、空欄の場合はマスク済み電話番号または userId を使用", "可选,留空则用账号 uk": "任意、空欄の場合はアカウントの uk を使用", "可选,留空则用账号昵称": "任意。空欄ならアカウントのニックネームを使用", "可选,留空则用账号昵称或 userId": "任意。空欄の場合はアカウントのニックネームまたは userId を使用", "可选,留空则用邮箱或令牌尾号": "任意、空欄の場合はメールアドレスまたはトークンの末尾を使用", "可选,留空用「AtomCode」": "任意。空欄なら「AtomCode」", "可选,留空用「OfficeAce 果办」": "任意、空欄の場合は「OfficeAce」を使用", "可选,留空自动生成": "任意、空欄の場合は自動生成", "可选,留空自动用昵称": "任意、空欄の場合はニックネームを自動使用", "可选,给这个访客账号起个备注名": "任意。このゲストアカウントのメモ名", "可选,续期时带上": "任意、更新時に一緒に送信されます", "可选,讯飞侧 userid": "任意、iFlytek 側の userid", "可选:发起对话必需,留空则由网关从该账号已有任务里自动发现,发现不到时之后手动补": "任意;会話の開始に必須です。空欄の場合はゲートウェイがこのアカウントの既存タスクから自動検出します。見つからない場合は後で手動で補ってください。", "可选:账号邮箱,用于展示与身份识别(换新令牌也能认回同一账号)": "任意;アカウントのメールアドレスで、表示と身元識別に使用します(新しいトークンに替えても同じアカウントとして認識されます)", "可选;UUID 形态,与凭据同生共死": "任意;UUID 形式で、認証情報と一体で管理されます", "可选;填了才能到期自动续期": "任意;入力すると期限切れ時に自動更新できます", "可选;用于去重与展示名(留空时网关会问一次上游)": "任意;重複排除と表示名に使用します(空欄の場合、ゲートウェイがアップストリームに一度問い合わせます)", "可选;用于生成账号 id 与展示名": "任意;アカウント id と表示名の生成に使用します", "可选;纯数字串(上游只收 8–24 位数字)": "任意;数字のみの文字列(アップストリームは 8–24 桁の数字のみ受け付けます)", "可领取": "受け取り可能", "同一家可以混着放:有 Key 的账号与无鉴权账号各按各的规则走;无需鉴权的账号也能并存多条(各自可配不同的出网代理)": "同じプロバイダーに API Key ありのアカウントと認証不要アカウントを混在でき、それぞれの規則でルーティングされます。認証不要アカウントも複数併存でき、それぞれ別の送信プロキシを設定できます", "同地址换 anthropic 协议即走它的 Claude 兼容端点。转发必须填 OpenCode Go 的 API Key(订阅制;获取模型清单不需要 Key,但发请求上游会回 401「Missing API key」)": "同じアドレスでプロトコルを anthropic に変えると、その Claude 互換エンドポイントを使用します。転送には OpenCode Go の API Key が必須です(サブスクリプション制;モデルカタログの取得に Key は不要ですが、リクエストを送るとアップストリームが 401「Missing API key」を返します)", "响应为空": "応答が空です", "商汤日日新的 OpenAI 兼容端点;余额查询走控制台账号密码(见下方「余额查询」一段)": "SenseNova の OpenAI 互換エンドポイント。残高照会はコンソールのアカウント / パスワードを使います(下の「残高照会」の節を参照)", "回调已提交,仍需等待网关确认账号登录完成。": "コールバックを送信しました。ゲートウェイがログイン完了を確認するまでお待ちください。", "回调未被接受,请重新复制本次登录的完整回调地址": "コールバックが受理されませんでした。今回のログインの完全なコールバック URL をもう一度コピーしてください。", "国内版": "中国版", "国内版与**国际版是两套独立的账号与套餐**,凭证与领取的套餐都不通用。": "中国版と**国際版は 2 組の独立したアカウントとプラン**で、認証情報と受け取ったプランはどちらも共用できません。", "国内版登录页没有 Google / GitHub 入口(它用微信 / 手机号 / 邮箱登录)": "中国版のログインページには Google / GitHub の入り口がありません(WeChat / 電話番号 / メールアドレスでログインします)", "国内版的登录站点是 www.accio-ai.com,与国际版不是同一站。": "中国版のログインサイトは www.accio-ai.com で、国際版とは別のサイトです。", "国内版(WorkBuddy)": "中国版(WorkBuddy)", "国内站为 https://api.siliconflow.cn/v1": "中国版サイトは https://api.siliconflow.cn/v1", "国内站(minimaxi.com);OpenAI 兼容地址为 https://api.minimaxi.com/v1": "中国版サイト(minimaxi.com);OpenAI 互換アドレスは https://api.minimaxi.com/v1", "国际版": "国際版", "国际版 z.ai 的 Coding 套餐;OpenAI 兼容地址为 https://api.z.ai/api/coding/paas/v4": "国際版 z.ai の Coding プラン;OpenAI 互換アドレスは https://api.z.ai/api/coding/paas/v4", "国际版与国内版是**两套独立的账号**(同一账号体系的两个站点),凭证不通用。": "国際版と中国版は**2 組の独立したアカウント**です(同じアカウント体系の 2 つのサイト)。認証情報は共用できません。", "国际版与国内版账号体系独立,请填国际版的凭证。未填 refreshToken 无法自动续期。": "国際版と中国版はアカウント体系が独立しています。国際版の認証情報を入力してください。refreshToken を入力しないと自動更新できません。", "国际版登录页默认只显示邮箱登录,勾选后恢复 Google / GitHub / X 入口": "国際版のログインページは既定でメールアドレスログインのみ表示されます。チェックすると Google / GitHub / X の入り口が復元されます", "国际版的推理站点是 api.z.ai,与国内版不是同一站;套餐也各自独立。": "国際版の推論サイトは api.z.ai で、中国版とは別のサイトです;プランもそれぞれ独立しています。", "国际版(WorkBuddy AI)": "国際版(WorkBuddy AI)", "国际站 Coding 套餐;OpenAI 兼容地址为 https://api.minimax.io/v1": "国際版サイトの Coding プラン;OpenAI 互換アドレスは https://api.minimax.io/v1", "在 AtomGit 的 AtomCode 页面登出后取得两项贴进来:accessToken 与 refreshToken。续期令牌建议填写——本家令牌不是 JWT(约 7 天到期,读不到过期时间),没有它账号无法自动续期,到期只能重新登录。": "AtomGit の AtomCode ページから accessToken と refreshToken の 2 つを取得して貼り付けてください。リフレッシュトークンの入力推奨 —— このプロバイダーのトークンは JWT ではなく(約 7 日で失効し、失効時刻も読み取れません)、これが無いと自動更新できず、失効後は再ログインが必要になります。", "在 DeepSeek 官网完成登录,自动加入账号列表。": "DeepSeek 公式サイトでログインすると、アカウントが自動で追加されます。", "在 GitHub 输入设备码 {code},核对账号与授权权限。设备码过期后需要重新发起登录。": "GitHub でデバイスコード {code} を入力し、アカウントと認可権限を確認してください。コードが期限切れになった場合はログインを再度開始してください。", "在 cc-switch 里找到": "cc-switch で", "在 chat.deepseek.com 登录本人账号后,从浏览器开发者工具的 Application → Local Storage 复制 userToken 的 value。Cookie 可选,需补充时粘贴该站点请求里的完整 Cookie;登录态失效或要求人机验证时,请回官方网页手动登录后更新。这里不接受收费 API Key。": "chat.deepseek.com で自分のアカウントにログインし、ブラウザーの開発者ツールの Application → Local Storage から userToken の value をコピーしてください。Cookie は任意です。必要な場合は、このサイトへのリクエストの Cookie ヘッダー全体を貼り付けてください。セッションが無効になった場合や人間による認証が必要な場合は、公式サイトで手動ログインして認証情報を更新してください。有料 API Key は使用できません。", "在 web.tabbit.ai 登录后,从开发者工具 Application → Cookies 复制 token 与 user_id,或直接粘贴该站点请求的 Copy as cURL 整段。国际站没有可复刻的网页授权回调,手机号登录也处在上游灰度里,所以只能导入已有登录态。登录态有效期约 7 天,过期后重新导入。Cookie 与 JWT 至少填一项。": "web.tabbit.ai にログイン後、開発者ツールの Application → Cookies から token と user_id をコピーするか、そのサイトへのリクエストの Copy as cURL 全体を貼り付けてください。国際サイトには再現可能な Web 認証コールバックがなく、電話番号ログインも上流の段階的公開中であるため、既存のログイン状態のみ取り込めます。ログイン状態の有効期間は約 7 日で、期限切れ後は再取り込みが必要です。Cookie と JWT の少なくとも一方を入力してください。", "在 web.tabbit.com 登录后,从开发者工具 Application → Cookies 复制 token 与 user_id,或直接粘贴该站点请求的 Copy as cURL 整段。登录态有效期约 7 天,上游没有续期接口,过期后重新导入即可。Cookie 与 JWT 至少填一项。": "web.tabbit.com にログイン後、開発者ツールの Application → Cookies から token と user_id をコピーするか、そのサイトへのリクエストの Copy as cURL 全体を貼り付けてください。ログイン状態の有効期間は約 7 日で、上流に更新エンドポイントはありません。期限切れ後は再取り込みしてください。Cookie と JWT の少なくとも一方を入力してください。", "在内嵌窗口里完成官方登录,成功后自动加入账号列表。": "内蔵ウィンドウで公式ログインを完了してください。成功すると自動でアカウント一覧に追加されます。", "在{label}的 Qoder 账号设置 → Integrations 生成 PAT(别填 Google / GitHub 的令牌)。两个地区的账号与凭证不通用。": "{label} の Qoder アカウント設定 → Integrations で PAT を生成してください(Google / GitHub のトークンは入力しないでください)。2 つの地域のアカウントと認証情報は共用できません。", "在应用内嵌窗口完成 WPS 登录,登录凭据仅交给原插件校验并保存到当前网关。": "アプリ内ウィンドウで WPS にログインします。認証情報は元のプラグインにのみ渡して検証し、このゲートウェイに保存します。", "在所选站点的 MonkeyCode 官方页面完成登录和验证码,成功后自动读取登录态并加入账号列表,无需手动复制 Cookie。": "選択した地域の MonkeyCode 公式ページでログインと認証を完了してください。セッションを自動取得してアカウント一覧に追加するため、Cookie のコピーは不要です。", "在打开的官方授权页里用微信扫码登录(页面会直接显示二维码)。扫码成功后自动加入账号列表。": "開いた公式認可ページで WeChat の QR コードを読み取ってログインします(ページに QR コードが直接表示されます)。読み取りに成功すると自動でアカウント一覧に追加されます。", "在打开的官方登录页里完成登录,成功后自动加入账号列表。": "開いた公式ログインページでログインすると、成功後に自動でアカウント一覧に追加されます。", "在打开的登录页里用百度账号登录 KukuAI 主站(手机验证码 / 扫码均可),登录成功后自动加入账号列表。网关会向百度换发 KukuAI 业务会话令牌(依赖本机已安装库库AI 客户端)。": "開いたログインページで Baidu アカウントを使って KukuAI 本サイトにログインします(SMS コード / QR スキャンのどちらも可)。成功後は自動でアカウント一覧に追加されます。ゲートウェイは Baidu と KukuAI 業務セッショントークンを交換します(本機に庫庫AI クライアントのインストールが必要)。", "在打开的登录页里登录 Google 账号(Antigravity 的授权页),授权完成后自动加入账号列表。": "開いたログインページ(Antigravity の認証ページ)で Google アカウントにログインすると、認証完了後に自動でアカウント一覧に追加されます。", "在打开的窗口里用百度账号登录 KukuAI 主站(手机验证码 / 扫码均可),登录成功后自动加入账号列表。网关会向百度换发 KukuAI 业务会话令牌(依赖本机已安装库库AI 客户端)。": "開いたウィンドウで Baidu アカウントを使って KukuAI 本体サイトにログインしてください(SMS 認証コード / QR コードのいずれも可)。ログインに成功すると自動でアカウント一覧に追加されます。ゲートウェイは Baidu から KukuAI の業務セッショントークンを発行してもらいます(本機に KukuAI クライアントがインストールされている必要があります)。", "在打开的窗口里登录 Google 账号(Antigravity 的授权页),授权完成后自动加入账号列表。": "開いたウィンドウで Google アカウントにログインしてください(Antigravity の認可ページ)。認可が完了すると自動でアカウントリストに追加されます。", "在打开的页面里登录千问办公{label}({site})的账号,登录完成后会自动加入列表。两版的账号与凭证不通用。": "開いたページで QwenWork {label}({site})のアカウントにログインしてください。完了すると自動で一覧に追加されます。両エディションのアカウントと資格情報は共用できません。", "在浏览器中打开登录页": "ブラウザでログインページを開く", "在系统浏览器授权指定 project 的 Code Assist Standard / Enterprise;账号与 project 仍须通过真实预检。": "指定 project の Code Assist Standard / Enterprise をシステムブラウザーで認可します。アカウントと project は実際の事前確認に合格する必要があります。", "在豆包官方页面完成登录,窗口会自动读取完整 Cookie 并加入账号列表;不需要安装豆包工作客户端。": "豆包の公式ページでログインすると、ウィンドウが完全な Cookie を読み取りアカウントを追加します。豆包工作クライアントのインストールは不要です。", "地区": "地域", "填写信息后发起授权,进度与失败原因会显示在这里。": "必要な情報を入力して認証を開始してください。進行状況と失敗理由はここに表示されます。", "填写具体站点名称;模板类型不会作为站点身份": "このサイトの名前を入力してください。テンプレートの種類はサイトの識別には使われません", "填写凭证": "認証情報を入力", "填写凭证添加": "認証情報を入力して追加", "备注名": "ラベル名", "套餐": "プラン", "如何获取": "取得方法", "如官方页面跳回的是网关本机地址,请在桌面面板完成回调;手机端不会猜测未声明的回调输入。": "公式ページがゲートウェイのローカルアドレスに戻る場合は、デスクトップパネルでコールバックを完了してください。モバイル版は未宣言の入力を推測しません。", "如官方页面跳回的是网关本机地址,请粘贴完整回调;没有授权页的本机方式仍需等待网关确认。": "公式ページがゲートウェイのローカルアドレスに戻る場合は、完全なコールバック URL を貼り付けてください。認可ページのないローカル方式でも、ゲートウェイの確認を待つ必要があります。", "如:公司中转站、个人备用站": "例:社内ゲートウェイ、個人用バックアップ", "如:智谱 GLM": "例:Zhipu GLM", "安装在运行网关的机器,不是当前手机或浏览器所在设备。由 Agent2API 独立管理,不覆盖原有安装;仅点击按钮后下载。": "このスマートフォンやブラウザーの端末ではなく、ゲートウェイを実行しているマシンにインストールします。既存のインストールを上書きせず、Agent2API が別途管理します。ボタンを押した場合のみダウンロードします。", "安装已取消,原有版本未更改。": "インストールをキャンセルしました。既存のバージョンは変更していません。", "安装操作未得到有效确认,请重新检查状态;不会自动重复安装。": "インストール操作を確認できませんでした。状態を再確認してください。自動で再インストールは行いません。", "完成官方登录后粘贴包含 state 的完整 loopback 回调地址。": "公式ログイン完了後、state を含む完全な loopback コールバック URL を貼り付けてください。", "完成登录后自动加入账号列表,昵称取自上游。": "ログイン完了後は自動でアカウント一覧に追加されます。ニックネームはアップストリームから取得します。", "完整 JSON 已包含时无需填写": "JSON に含まれている場合は入力不要", "完整回调地址(原样提交)": "完全なコールバック URL(変更せず送信)", "官方 PKCE 登录;浏览器登录态有有效期,失效后需重登,不提供维护续期。": "公式 PKCE 認証です。ブラウザーのログイン状態には期限があり、失効後は再ログインが必要です。管理用の自動更新は行いません。", "官方客户端凭证目录:Windows 是 C:\\Users\\<你的用户名>\\AppData\\Local\\CodeBuddyExtension\\Data\\Public\\auth,macOS 是 ~/Library/Application Support/CodeBuddyExtension/Data/Public/auth": "公式クライアントの認証情報ディレクトリ:Windows は C:\\Users\\<ユーザー名>\\AppData\\Local\\CodeBuddyExtension\\Data\\Public\\auth、macOS は ~/Library/Application Support/CodeBuddyExtension/Data/Public/auth", "官方已确认到账": "公式が付与を確認済み", "官方浏览器登录": "公式ブラウザー認証", "官方浏览器登录(粘贴完整回调)": "公式ブラウザー認証(完全なコールバックを貼り付け)", "官方网页正常登录后的 Cookie;风控时请手动更新": "公式サイトで通常ログインした際の Cookie。認証が必要な場合は手動で更新してください", "客户端版本": "クライアント版", "宿主已持久保存的稳定 hostId(urn:uuid,不能每次生成)": "ホストが永続保存済みの安定した hostId(urn:uuid。毎回生成しないでください)", "导入": "インポート", "导入 QuWork 本机登录态": "QuWork の本機ログインを取り込む", "导入 kiro-cli / Kiro IDE 登录态": "kiro-cli / Kiro IDE のログイン状態を取り込む", "导入中…": "インポート中…", "导入凭证文件": "認証情報ファイルのインポート", "导入失败": "インポートに失敗しました", "导入失败:{reason}": "インポートに失敗しました:{reason}", "导入所选": "選択項目をインポート", "导入所选({n})": "選択項目をインポート({n})", "导入桌面端登录态": "デスクトップ版のログイン状態をインポート", "导入用户指定的本地 Copilot 凭证": "ユーザー指定のローカル Copilot 認証情報を取り込む", "将在新标签页中打开授权页;完成后自动加入账号列表。": "新しいタブで認証ページを開きます。完了後は自動でアカウント一覧に追加されます。", "将在新标签页中打开授权页;完成后自动加入账号列表。若页面跳回本机地址后账号没有出现,按提示把地址栏里的完整回调地址粘贴回来即可。": "新しいタブで認証ページを開きます。完了後は自動でアカウント一覧に追加されます。ローカルアドレスに戻った後もアカウントが表示されない場合は、プロンプトに従ってアドレスバーの完全なコールバック URL を貼り付けてください。", "将打开内嵌窗口;授权完成后自动加入账号列表。关掉窗口即取消等待。授权页最后可能提示无法打开 zcode:// 链接,这是正常的 —— 结果已由服务端记下": "内蔵ウィンドウを開きます;認可が完了すると自動でアカウント一覧に追加されます。ウィンドウを閉じると待機をキャンセルします。認可ページの最後に zcode:// リンクを開けない旨の表示が出ることがありますが、これは正常です —— 結果はサーバー側で記録済みです", "将打开内嵌窗口;授权完成后自动加入账号列表。远程面板可粘贴回调地址。关掉窗口即取消等待。链接 5 分钟内有效,超时或未点就会作废(可重新发起)": "内蔵ウィンドウを開きます;認可が完了すると自動でアカウント一覧に追加されます。リモートパネルではコールバックアドレスを貼り付けられます。ウィンドウを閉じると待機をキャンセルします。リンクの有効期限は 5 分で、タイムアウトまたは未クリックの場合は無効になります(再発行できます)", "将打开内嵌窗口;登录完成后自动加入账号列表。关掉窗口即取消等待": "内蔵ウィンドウを開きます;ログイン完了後は自動でアカウント一覧に追加されます。ウィンドウを閉じると待機をキャンセルします", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的 Trae 账号);同机完成后自动加入,Docker / 远程面板按提示粘贴地址栏回调地址。": "システムの既定ブラウザで認可ページを開きます(ブラウザでログイン済みの Trae アカウントが再利用されます);同一マシンでは完了後に自動追加され、Docker / リモートパネルでは案内に従ってアドレスバーのコールバックアドレスを貼り付けてください。", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的 ZCode 账号);授权完成后自动加入账号列表。页面最后可能提示无法打开 zcode:// 链接,属正常现象": "システムの既定ブラウザで認可ページを開きます(ブラウザでログイン済みの ZCode アカウントが再利用されます);認可完了後は自動でアカウント一覧に追加されます。ページの最後に zcode:// リンクを開けない旨の表示が出ることがありますが、正常な動作です", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的华为云账号);授权码由网关轮询云端取回,与浏览器跑在哪台机器无关,完成后自动加入账号列表": "システムの既定ブラウザで認可ページを開きます(ブラウザでログイン済みの Huawei Cloud アカウントが再利用されます);認可コードはゲートウェイがクラウドをポーリングして取得するため、ブラウザがどのマシンで動いていても関係ありません。完了後は自動でアカウント一覧に追加されます", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的华为云账号);浏览器与网关不在同一台机器时,按上方说明把最终回调地址粘贴回面板": "システムの既定ブラウザで認可ページを開きます(ブラウザでログイン済みの Huawei Cloud アカウントが再利用されます);ブラウザとゲートウェイが別のマシンにある場合は、上の説明に従って最終的なコールバックアドレスをパネルに貼り付けてください", "将用系统默认浏览器打开登录页(会复用浏览器里已登录的 Accio 账号);完成登录后自动加入账号列表,关掉弹窗即取消等待": "システムの既定ブラウザでログインページを開きます(ブラウザでログイン済みの Accio アカウントが再利用されます);ログイン完了後は自動でアカウント一覧に追加され、ポップアップを閉じると待機をキャンセルします", "将用系统默认浏览器打开登录页(会复用浏览器里已登录的 LobsterAI 账号);完成登录后自动加入账号列表,关掉弹窗即取消等待": "システムの既定ブラウザでログインページを開きます(ブラウザでログイン済みの LobsterAI アカウントが再利用されます);ログイン完了後は自動でアカウント一覧に追加され、ポップアップを閉じると待機をキャンセルします", "小米 MiMo Token Plan 套餐(新加坡站)": "小米 MiMo Token Plan プラン(シンガポールサイト)", "小米 MiMo 按量 API;使用按量 API Key,不要混用 Token Plan 套餐 Key": "Xiaomi MiMo の従量課金 API です。Token Plan のプラン用 Key と混同せず、従量課金用 API Key を使用してください", "小米 MiMo(按量)": "Xiaomi MiMo(従量課金)", "已到账": "付与済み", "已取消登录等待": "ログイン待ちをキャンセルしました", "已取消领取": "受け取りをキャンセルしました", "已取消验证码": "認証をキャンセルしました", "已填写手机号,正在发送验证码…": "電話番号を入力しました。認証コードを送信中…", "已声明无需鉴权:账号会被正常选路,出网时不带任何鉴权头": "認証不要を宣言済み:アカウントは通常どおりルーティングされ、送信時に認証ヘッダーは一切付きません", "已完成验证,继续发送": "認証完了、再送信", "已导入 {ok} 个,失败 {fail} 个(失败项已标注在列表里)": "{ok} 個をインポートしました。失敗 {fail} 個(失敗した項目にはリスト内でマークが付いています)", "已建 API": "設定済み API", "已建过 · {n} 个账号,点击继续添加": "作成済み · {n} 個のアカウント、クリックして追加", "已建过,点击继续添加账号": "作成済み、クリックしてアカウントを追加", "已打开官方登录页,请在窗口中完成登录…": "公式ログインページを開きました。ウィンドウでログインを完了してください…", "已收到授权回调,正在完成登录…": "認可コールバックを受信しました。ログインを完了しています…", "已收到浏览器授权,正在获取账号凭据…": "ブラウザーの認可を受信しました。アカウントの認証情報を取得中…", "已有 API Key(留空则在浏览器登录后自动创建)": "既存の API Key(空欄ならブラウザーログイン後に自動作成)", "已有验证码流程正在进行,请先完成或取消": "認証が進行中です。先に完了するかキャンセルしてください。", "已检测到本机客户端": "ローカルクライアントを検出", "已点发送,等待短信…": "送信しました。SMS を待っています…", "已用系统默认浏览器打开登录页,请在浏览器中完成登录…": "システムの既定ブラウザでログインページを開きました。ブラウザでログインを完了してください…", "已读取 QuWork 本机登录态,正在添加账号。": "QuWork の本機ログインを読み取りました。アカウントを追加しています。", "已领取,等官方确认": "受け取り済み、公式の確認待ち", "引用本机 Gemini CLI oauth_creds.json(只读)": "ローカル Gemini CLI oauth_creds.json を参照(読み取り専用)", "当前分类里没有「{keyword}」,其它分类有 {n} 个匹配": "「{keyword}」はこの分類にはありませんが、他の分類に {n} 件あります", "当前壳版本不支持 AutoClaw 网页登录,请更新应用": "現在のシェルバージョンは AutoClaw のウェブログインに対応していません。アプリを更新してください", "当前没有可领取的套餐(活动尚未开始)": "現在受け取り可能なプランはありません(イベントはまだ開始されていません)", "当前版本:{version}": "現在のバージョン:{version}", "当前环境不支持领取(桥接方法缺失)": "現在の環境では受け取りに対応していません(ブリッジメソッドがありません)", "必填,CatPaw 账号标识": "必須、CatPaw アカウントの識別子", "恢复 Google / GitHub 入口": "Google / GitHub の入り口を復元", "所选代理会保存到账号设置,后续请求继续使用。": "選択したプロキシはアカウント設定に保存され、以降のリクエストでも使用されます。", "手动代理": "手動プロキシ", "手动导入 GitHub OAuth / GitHub 令牌": "GitHub OAuth / GitHub トークンを手動入力", "手机号": "電話番号", "手机验证码登录": "SMS 認証コードログイン", "打开 LobsterAI(有道龙虾)的官方登录页(lobsterai.youdao.com)并用你的 LobsterAI 账号登录:登录成功后官方页面会跳回本机并自动加入账号列表 —— 回调落在网关自己的端口上,所以浏览器要与网关在同一台机器上;授权码只在本机传给网关,界面不显示明文 token。": "公式の LobsterAI ログインページ(lobsterai.youdao.com)を開き、LobsterAI アカウントでログインしてください:ログインに成功すると公式ページが本機に戻り、自動でアカウント一覧に追加されます —— コールバックはゲートウェイ自身のポートに届くため、ブラウザはゲートウェイと同じマシンで開く必要があります。認証コードは本機内でゲートウェイに渡されるだけで、画面に平文トークンは表示されません。", "打开 Trae 的官方授权页(trae.cn)并用你的 Trae 账号登录:授权完成后官方页面会跳回本机的一个临时端口;同机部署自动接收,Docker / 远程面板请按提示复制地址栏回调地址。": "Trae の公式認可ページ(trae.cn)を開き、あなたの Trae アカウントでログインしてください:認可が完了すると公式ページから本機の一時ポートにリダイレクトされます;同一マシンでのデプロイでは自動受信し、Docker / リモートパネルでは案内に従ってアドレスバーのコールバックアドレスをコピーしてください。", "打开 Accio {label}的官方登录页({site})并用你的 Accio 账号登录:登录成功后官方页面会跳回本机;同机自动完成,Docker / 远程面板按提示粘贴回调地址即可(授权码只在本机传给网关,界面不显示明文 token)。": "Accio {label}の公式ログインページ({site})を開き、あなたの Accio アカウントでログインしてください:ログインに成功すると公式ページから本機にリダイレクトされます;同一マシンでは自動完了し、Docker / リモートパネルでは案内に従ってコールバックアドレスを貼り付けてください(認可コードは本機からゲートウェイに渡されるだけで、画面に平文 token は表示されません)。", "打开 Accio {label}登录页": "Accio {label} のログインページを開く", "打开 Antigravity 网页登录": "Antigravity のウェブログインを開く", "打开 AtomGit 授权页登录:登录完成后网关会自动轮询代理取回令牌并加入账号列表(授权回调由代理终结,不回到本机,因此无需手工回填回调地址)。": "AtomGit の認可ページを開いてログインしてください。完了後、ゲートウェイが自動的にブローカーをポーリングしてトークンを取得し、アカウントを追加します(コールバックはブローカー側で終端され本機には戻らないため、コールバック URL の手入力は不要です)。", "打开 CatPaw 网页登录": "CatPaw のウェブログインを開く", "打开 Cline 授权页": "Cline の認可ページを開く", "打开 CodeArts 授权页": "CodeArts の認可ページを開く", "打开 LobsterAI 登录页": "LobsterAI のログインページを開く", "打开 Qoder 网页登录": "Qoder のウェブログインを開く", "打开 Trae 授权页": "Trae の認可ページを開く", "打开 ZCode {label}的官方授权页并用你的账号登录。授权结果由 ZCode 服务端记录,网关在后台自动取回凭证并加入账号列表。": "ZCode {label}の公式認可ページを開き、あなたのアカウントでログインしてください。認可結果は ZCode サーバー側で記録され、ゲートウェイがバックグラウンドで自動的に認証情報を取得してアカウント一覧に追加します。", "打开 ZCode {label}授权页": "ZCode {label} の認可ページを開く", "打开下一步授权页": "次の認可ページを開く", "打开人机验证": "人間認証を開く", "打开千问办公网页登录": "QwenWork のウェブログインを開く", "打开华为云 CodeArts 的官方授权页登录:登录完成后官方页面会把浏览器带回网关自己的 /oauth/callback,网关用一次性授权码换取临时凭据并加入账号列表。
    网关跑在另一台机器上时,网页端会提示把地址栏中的最终回调地址直接粘贴回面板。": "Huawei Cloud CodeArts の公式認可ページを開いてログインします:ログイン完了後、公式ページからブラウザがゲートウェイ自身の /oauth/callback に戻され、ゲートウェイはワンタイム認可コードで一時認証情報を取得し、アカウント一覧に追加します。
    ゲートウェイが別のマシンで動作している場合は、ウェブ画面でアドレスバーの最終的なコールバックアドレスをそのままパネルに貼り付けるよう案内されます。", "打开华为云授权页登录:登录完成后网关会自动轮询云端取回授权码并加入账号列表(不需要装 OfficeAce 桌面端,也无需手工回填回调地址)。": "Huawei Cloud の認可ページを開いてログインしてください:完了すると、ゲートウェイがクラウドをポーリングして認可コードを取得し、アカウント一覧に追加します(OfficeAce デスクトップ版は不要で、コールバック URL を手動で貼り戻す必要もありません)。", "打开官方授权页": "公式認可ページを開く", "打开官方授权页完成设备码授权,登录的是{label}({site})的账号。": "公式認可ページを開いてデバイスコード認可を完了します。ログインするのは {label}({site})のアカウントです。", "打开授权页": "認可ページを開く", "打开授权页完成确认,账号自动加入 {label}{note}": "認可ページを開いて確認を完了すると、アカウントが自動で {label} に追加されます{note}", "打开方式": "開き方", "打开网页登录": "ウェブログインを開く", "按已验证邮箱只读引用 cursor-agent 当前登录态;每次操作重读 keychain/auth.json,不复制 token、不主动运行 CLI 续期,退出或失效后需在原客户端重登。": "検証済みメールアドレスに固定し、cursor-agent の現在の認証を読み取り専用で参照します。各操作で keychain/auth.json を再読み込みし、トークンの複製や CLI による更新は実行しません。ログアウト・失効後は元のクライアントで再ログインしてください。", "授权只读引用,不复制、不修改、不续期本机凭证": "読み取り専用参照を許可し、ローカル認証情報のコピー・変更・更新は行わない", "授权回调提交失败;请检查输入并重试,登录仍在等待。": "認可コールバックの送信に失敗しました。入力を確認して再試行してください。ログインは待機中です。", "授权每次请求只读所选文件,固定当前账号与工作区?": "このアカウントとワークスペースに固定して、各リクエストで選択ファイルの読み取り専用参照を許可しますか?", "授权码或令牌(原样提交)": "認可コードまたはトークン(変更せず送信)", "授权读取所选条目": "選択した項目の読み取りを許可", "授权页、换证与取账号信息都走这条线路。无头服务器上没有系统代理,这里不选就走直连(多数网络里到不了 Google)。": "認可ページ・コード交換・アカウント情報の取得はすべてこの経路を使います。ヘッドレスサーバーにはシステムプロキシがないため、未選択の場合は直接接続になります(多くのネットワークでは Google に到達できません)。", "探测失败:{message}": "検出に失敗しました:{message}", "接入一个兼容上游": "互換アップストリームを接続", "控制台 uaa-token(粘贴令牌值或完整的 uaa-token=… Cookie 项)": "コンソールの uaa-token(トークン値または uaa-token=… Cookie 項目全体を貼り付け)", "推荐": "推奨", "提交中…": "送信中…", "提交授权回调": "認可コールバックを送信", "提供商仅在已启用且加载后出现。登录与本机引用均作用在所连接网关,不是手机。": "プロバイダーは有効化され、読み込まれた後に表示されます。ログインとローカル参照は接続先のゲートウェイに適用され、スマートフォンではありません。", "插件专用 Chrome 登录(自动读取凭据)": "プラグイン専用 Chrome でログイン(認証情報を自動取得)", "插件会在网关电脑上启动独立浏览器并读取登录结果,不使用系统默认浏览器。": "プラグインがゲートウェイのコンピューターで専用ブラウザーを起動し、ログイン結果を読み取ります。システムの既定ブラウザーは使いません。", "搜索提供商": "プロバイダーを検索", "搜索提供商…": "プロバイダーを検索…", "整份粘贴官方插件 / CLIProxyAPI 落盘的凭据 JSON(形如 {\"codearts_provider_credential\":{…}},铺平的也行)。
    必填:access_key_id、secret_access_key、security_token。要能自动续期,必须连 refresh_token 与 oauth_context 一起粘 —— 临时凭据约一小时到期,缺这半块就续不回来,只能重新登录。": "公式プラグイン / CLIProxyAPI が保存した認証情報 JSON をまるごと貼り付けてください({\"codearts_provider_credential\":{…}} の形。フラットなものでも可)。
    必須:access_key_id、secret_access_key、security_token。自動更新を効かせるには refresh_token と oauth_context も一緒に貼り付ける必要があります —— 一時認証情報は約 1 時間で期限切れになり、この半分が欠けると更新できず、再ログインするしかありません。", "文件是{edition}凭证,已按该版本导入": "ファイルは{edition}の認証情報のため、そのバージョンでインポートしました", "新增独立登录": "独立した認証を新規追加", "新建自定义提供商": "カスタムプロバイダーを新規作成", "新网关确认代理同次保存后不再重复提交;旧网关使用兼容保存并提示核查,失败不会撤销已添加的账号。": "新ゲートウェイがアカウントと同時にプロキシを保存したと確認した場合は再送信しません。旧ゲートウェイでは互換保存と確認警告を使用し、失敗しても追加済みアカウントは削除しません。", "方案:{label}": "方式:{label}", "无需手动复制令牌,验证码在官方页面完成。": "トークンのコピーは不要です。認証コードは公式ページで入力してください。", "旧网关未确认代理同次保存,已使用兼容接口保存;请在账号设置中确认代理选择。": "旧ゲートウェイはプロキシの同時保存を確認しなかったため、互換 API で保存しました。アカウント設定でプロキシ選択を確認してください。", "明文 JWT 或 auth.json 里的 enc: 加密值(自动解密)": "平文 JWT または auth.json 内の enc: 暗号化値(自動復号)", "明文 JWT(国际版账号的 access token)": "平文 JWT(国際版アカウントの access token)", "明确选择文件与只读授权;不修改或续期原客户端登录态。": "ファイルと読み取り専用アクセスを明示的に選択します。元のクライアントのログイン状態は変更・更新しません。", "明确选择文件内的账号条目键名": "ファイル内のアカウント項目の正確なキー名を選択", "明确选择标准凭证文件的完整绝对路径": "標準認証情報ファイルの完全な絶対パスを選択", "是否授权只读取此文件和所选账号凭证?": "このファイルと選択したアカウント認証情報の読み取り専用アクセスを許可しますか?", "显示凭证": "認証情報を表示", "智谱 bigmodel.cn 的 Coding 套餐,Key 在 open.bigmodel.cn/usercenter/apikeys": "Zhipu bigmodel.cn の Coding プラン。Key は open.bigmodel.cn/usercenter/apikeys で取得します", "暂不支持自动安装": "自動インストール非対応", "暂时无法检查官方最新版;已安装且满足最低要求的客户端仍可使用。": "現在、公式の最新バージョンを確認できません。インストール済みのクライアントが最低要件を満たしていれば、そのまま利用できます。", "暂时无法登录": "現在ログインできません", "有可用更新": "更新があります", "未开启客户端调试端口时,请使用网页登录或粘贴 Cookie。": "クライアントのデバッグポートが有効でない場合は、Web ログインまたは Cookie の貼り付けを使用してください。", "未知错误": "不明なエラー", "未能获取授权地址,请重试": "認可アドレスを取得できませんでした。再試行してください", "未能读取 cc-switch 数据": "cc-switch のデータを読み取れませんでした", "未领取成功": "受け取りに失敗しました", "本体订阅未返回动态登录方式(501);不会猜测导入接口或显示插件手动凭证入口。请更新网关后重试。": "本体のサブスクリプションから動的なログイン方式が返されませんでした(501)。インポート API を推測したり、プラグイン用の認証情報入力を表示したりはしません。ゲートウェイを更新して再試行してください。", "本地 Ollama、OpenCode Zen 免费档这类上游要勾上,否则账号不可用": "ローカル Ollama、OpenCode Zen の無料枠などのアップストリームではチェックを入れてください。入れないとアカウントを使用できません", "本家有两个**互不替代**的凭证,按你要用的功能填,至少填一个:编码套餐 API Key 用于转发推理(打 {site})与查询窗口限额(每 N 小时 / 每周的剩余比例);jwt 用于领取套餐与查询余额(打 zcode.z.ai 的 billing 网关,官方叫 Coding Plan JWT,是一串三段点分的字符串)。余额两把都能查、但读到的东西不同:jwt 读到余额桶与套餐到期,API Key 读到窗口限额;而领取只认 jwt、转发只认 API Key。请填写 {label}账号的凭证 —— {plan}(最容易拿到的办法:直接用上方的「网页登录」—— 它会替你把这个 API Key 换好,两个凭证一起拿到。)": "本家には**互いに代替できない** 2 つの認証情報があり、使いたい機能に応じて入力してください。少なくともどちらか一方は必須です:コーディングプラン API Key は推論の転送用({site} を叩きます)とウィンドウクォータの照会用(N 時間ごと / 週ごとの残り割合);jwt はプランの受け取りと残高照会用(zcode.z.ai の billing ゲートウェイを叩きます。公式名称は Coding Plan JWT で、3 段のドット区切り文字列です)。残高はどちらでも照会できますが、読み取れる内容が異なります:jwt は残高バケットとプランの有効期限、API Key はウィンドウクォータを読み取ります;受け取りは jwt のみ、転送は API Key のみです。{label}アカウントの認証情報を入力してください —— {plan}(最も簡単な方法:上の「ウェブログイン」を使うこと —— この API Key を代わりに交換してくれ、2 つの認証情報をまとめて取得できます。)", "本机 Ollama 的 OpenAI 兼容端点,无需 API Key(默认已勾上「该上游无需鉴权」,鉴权头一个都不发)": "本機の Ollama の OpenAI 互換エンドポイント。API Key は不要です(既定で「このアップストリームは認証不要」がチェック済みで、認証ヘッダーは一切送信されません)", "本机 auth.json(只读引用)": "ローカル auth.json(読み取り専用参照)", "本机凭证已校验。宿主仅保存文件引用与稳定身份,每次请求重新读取。": "ローカル認証情報を検証しました。ホストはファイル参照と安定した識別情報のみを保存し、各リクエストで再読み込みします。", "本机部署会自动完成登录;服务器或 Docker 部署时,若授权后跳到无法访问的 localhost 或 127.0.0.1 页面,请把地址栏中的完整回调地址粘贴回来。AWS 登录如需继续授权,请打开下一步授权页,完成后再次回填。请勿修改地址或把回调链接发给他人。": "ローカル環境ではログインが自動で完了します。サーバーや Docker 環境で認可後に localhost または 127.0.0.1 のページが開けない場合は、アドレスバーの完全なコールバック URL をここに貼り付けてください。AWS で追加の認可が必要な場合は次の認可ページを開き、完了後に新しい URL を貼り付けてください。URL を変更したり他人と共有したりしないでください。", "本次未确认到账": "今回は付与が確認できませんでした", "条可导入": "件がインポート可能", "条配置,其中": "件の設定、うち", "桌面运行时不可用(Tauri 未初始化)": "デスクトップランタイムが利用できません(Tauri が未初期化)", "检测失败": "確認に失敗しました", "模型网关基址": "モデルゲートウェイのベース URL", "正在准备 AWS 授权…": "AWS 認可を準備しています…", "正在准备安装…": "インストールを準備中…", "正在取消安装…": "インストールをキャンセル中…", "正在启用新版本…": "新しいバージョンを有効化中…", "正在打开百度登录页…": "Baidu のログインページを開いています…", "正在扫描本机 cc-switch…": "本機の cc-switch をスキャンしています…", "正在换发访客凭证…": "ゲスト資格情報を発行中…", "正在校验官方安装包…": "公式インストールファイルを検証中…", "正在检查安装状态…": "インストール状態を確認中…", "正在检查客户端版本…": "クライアントのバージョンを確認中…", "正在添加…": "追加中…", "正在等待{name}登录完成;完成或取消后才能发起新的登录": "{name} のログイン完了を待っています;完了またはキャンセルしないと新しいログインを開始できません", "此 Copilot 手动令牌方式未声明回调输入契约,暂不发起;请改用设备码登录或只读本机引用。": "この Copilot の手動トークン方式にはコールバック入力の契約が宣言されていないため開始しません。デバイスコード認証またはローカルの読み取り専用参照を使用してください。", "此提供商已有登录任务,请先完成或取消。": "このプロバイダーではログイン処理が進行中です。先に完了するかキャンセルしてください。", "此提供商未声明动态登录方式,请在网关桌面面板使用其既有入口;手机端不会猜测凭证字段。": "このプロバイダーには動的ログイン方式の宣言がありません。ゲートウェイのデスクトップパネルで既存の入口を使用してください。モバイル版は認証情報の項目を推測しません。", "此方式需要原样提交授权码或令牌;输入会隐藏,不会当作 URL 或 API 凭证解析。提交后仍需等待网关确认。": "この方式は認可コードまたはトークンを変更せず送信します。入力は非表示で、URL や API 認証情報として解析しません。送信後もゲートウェイの確認を待ちます。", "此方式需要完整回调地址;请原样粘贴,不拆分参数或重建地址。提交后仍需等待网关确认。": "この方式は完全なコールバック URL が必要です。パラメーターの分割や URL の再構築をせず、そのまま貼り付けてください。送信後もゲートウェイの確認を待ちます。", "每个账号使用独立的官方登录目录。终端登录沿用该终端的网络环境;这里选择的代理用于添加后的模型请求。": "各アカウントは独立した公式ログインディレクトリを使用します。端末でのログインにはその端末のネットワーク設定を使い、ここで選んだプロキシは追加後のモデルリクエストに適用されます。", "每周": "毎週", "每日": "毎日", "每月": "毎月", "没有则无法自动续期": "ないと自動更新できません", "没有匹配「{keyword}」的提供商": "「{keyword}」に一致するプロバイダーはありません", "浏览器拦截了弹窗": "ブラウザがポップアップをブロックしました", "浏览器授权已收到,但网关直连 DeepAI 失败。请在登录代理中填入系统代理或选择可用代理后重新登录。": "ブラウザーの認可は受信しましたが、ゲートウェイから DeepAI への直接接続に失敗しました。ログイン用にシステムプロキシを入力するか、利用可能なプロキシを選んでから再度ログインしてください。", "浏览器授权已收到,但通过所选代理获取账号凭据失败。请检查该代理后重新登录。": "ブラウザーの認可は受信しましたが、選択したプロキシ経由で認証情報を取得できませんでした。プロキシを確認して再度ログインしてください。", "浏览器显示登录完成后,网关还需联网获取账号凭据。若浏览器或 Magpie 使用系统代理,请先在下方点击「填入系统代理」;选择直连不会跟随系统代理。": "ブラウザーにログイン完了と表示された後も、ゲートウェイはネットワーク経由で認証情報を取得します。ブラウザーや Magpie がシステムプロキシを使っている場合は、先に下の「システムプロキシを入力」を押してください。直接接続ではシステムプロキシを使いません。", "浏览器登录(墨点额度 + 自动创建 API Key)": "ブラウザーでログイン(墨点残高 + API Key 自動作成)", "浏览器登录(复用已有 API Key)": "ブラウザーでログイン(既存の API Key を再利用)", "浏览器面板无法读取其他站点的登录态,请使用本人网页账号的令牌。": "ブラウザーパネルは他サイトのログイン状態を読み取れません。自分の Web アカウントのトークンを使用してください。", "浏览器面板无法读取其它站点的 Cookie,请登录 www.doubao.com 后,使用「填写凭证」粘贴完整 Cookie。": "ブラウザパネルは他サイトの Cookie を読み取れません。www.doubao.com にログインし、「認証情報」で完全な Cookie を貼り付けてください。", "添加 DeepSeek 账号": "DeepSeek アカウントを追加", "添加 {name} 账号": "{name} アカウントを追加", "添加中…": "追加中…", "添加到 ": "追加先 ", "添加到此提供商": "このプロバイダーに追加", "添加失败:{reason}": "追加に失敗しました:{reason}", "添加小浣熊账号": "小浣熊アカウントを追加", "添加方式": "追加方法", "添加时要用它出网校验凭证(例如 Antigravity 要打一次 Google 的 token 端点)。无头服务器上没有系统代理,这里不选就走直连。": "追加時に資格情報を検証するための通信で使います(例:Antigravity は Google のトークンエンドポイントを呼びます)。ヘッドレスサーバーにはシステムプロキシがないため、未選択の場合は直接接続になります。", "添加访客账号": "ゲストアカウントを追加", "添加账号": "アカウントを追加", "火山引擎 Coding 套餐;通用推理接入点为 https://ark.cn-beijing.volces.com/api/v3": "Volcano Engine Coding プラン;汎用推論エンドポイントは https://ark.cn-beijing.volces.com/api/v3", "点击添加账号": "クリックしてアカウントを追加", "点击登录后,在 Google 页面授权,再原样粘贴授权码或完整页面地址;已登录的 agy 会直接连接。Google 凭证由官方客户端保管,Agent2API 只保存本机连接标记。同一网关仅使用 agy 当前登录的一个账号,不支持复制为多个独立账号。": "ログインを押して Google のページで認証し、認証コードまたはページの URL 全体をそのまま貼り付けてください。agy がログイン済みなら直接接続します。Google の認証情報は公式クライアントが管理し、Agent2API はローカル接続の印だけを保存します。各ゲートウェイは agy の現在の 1 アカウントを使い、独立した複数アカウントとして複製はできません。", "点开即预填,填 Key 接入": "開くと自動入力済み、Key を入力して接続", "点按钮后先过一次滑块验证(官方风控),随后打开登录页,登录完成即自动添加账号。
    这是国际版官方唯一的登录方式;已在客户端登录过的,用「导入桌面端登录态」更快。": "ボタンを押すとまずスライダー認証(公式の不正対策)を 1 回行い、その後ログインページが開きます。ログイン完了で自動的にアカウントが追加されます。
    これが国際版公式の唯一のログイン方式です。すでにクライアントでログイン済みの場合は、「デスクトップ版のログイン状態をインポート」を使う方が速いです。", "独立 Kiro OAuth 支持续期;保留原登录验证,不接受任意 bearer token。": "独立した Kiro OAuth は更新に対応します。元のログイン検証を維持し、任意の bearer token は受け付けません。", "用 AutoClaw 账号绑定的手机号登录:点击「获取验证码」,收到短信后填入下方并登录。验证码由本机直接提交给官方接口,界面不显示 token。": "AutoClaw アカウントに紐付けられた電話番号でログインします:「コードを取得」をクリックし、SMS を受け取ったら下の欄に入力してログインしてください。認証コードは本機から直接公式 API に送信され、画面に token は表示されません。", "用 CatPaw 账号完成登录(美团 passport),成功后自动加入账号列表。": "CatPaw アカウントでログインを完了します(Meituan passport)。成功すると自動でアカウント一覧に追加されます。", "用 Loomy 账号绑定的手机号登录:点「获取验证码」后填入即可。这是本家最省事的入口。": "Loomy アカウントに紐付けられた電話番号でログインします:「コードを取得」をクリックして入力するだけです。本家で最も手軽な入り口です。", "用于转发;形如 apiKey.secret 两段点分(不填则这个账号不能转发)": "転送用。apiKey.secret の 2 段ドット区切り形式です(未入力の場合、このアカウントは転送できません)", "用于领取套餐与查询余额;不填则这个账号不能领取与查余额": "プランの受け取りと残高照会用。未入力の場合、このアカウントは受け取りと残高照会ができません", "用户 ID": "ユーザー ID", "用绑定的手机号登录:点「获取验证码」后填入即可。这是国内版官方唯一的登录方式。": "紐付けられた電話番号でログインします:「コードを取得」をクリックして入力するだけです。これが中国版公式の唯一のログイン方式です。", "用绑定的手机号登录:点「获取验证码」,收到短信后填入下方并点「登录并添加」。这是国内站官方唯一的登录方式。": "本人の携帯番号でログインします。「認証コードを取得」を押し、届いたコードを下に入力して「ログインして追加」をクリックしてください。中国サイトで唯一の公式ログイン方法です。", "由插件打开浏览器登录": "プラグインのブラウザーでログイン", "由本机 Grok Build CLI 执行官方设备授权;仅保存 home/scope/account 引用,不镜像 token,后续操作只读,不提供维护续期。": "ローカル Grok Build CLI が公式デバイス認証を実行します。home/scope/account の参照のみを保存し、token の複製はしません。その後の操作は読み取り専用で、管理用の更新は行いません。", "留空使用 1.17.16(10117016)": "空欄の場合は 1.17.16(10117016) を使用", "留空使用该提供商默认值": "空欄の場合はプロバイダーの既定値を使用", "留空使用账号默认名称": "空欄の場合はアカウントの既定名を使用", "留空使用默认的 User-Agent;可从预置里选一个内置客户端,也可以直接填写。": "空欄の場合は既定の User-Agent を使用します。プリセットの内蔵クライアントを選ぶことも、直接入力することもできます。", "留空则用提供商名称": "空欄の場合はプロバイダー名を使用", "留空自动查找;也可填写网关本机 agy 可执行文件的绝对路径": "空欄で自動検出、またはゲートウェイのマシン上にある agy の絶対パスを入力", "登录 / 添加 {name} 账号": "ログイン / {name} アカウントを追加", "登录 JWT": "ログイン JWT", "登录 chat.deepseek.com 后,打开开发者工具 → Application → Local Storage,复制 userToken 的 value。": "chat.deepseek.com にログインし、開発者ツール → Application → Local Storage を開いて userToken の value をコピーしてください。", "登录 session(一长串)": "ログイン session(長い文字列)", "登录中…": "ログイン中…", "登录代理不支持轮询出网,请选择一条已保存的代理": "ログインではプロキシのローテーションを使用できません。保存済みプロキシを 1 つ選択してください。", "登录凭证 accessToken": "ログイン認証情報 accessToken", "登录出网代理": "ログインの送信プロキシ", "登录取消未确认,请刷新状态后重试。": "ログインのキャンセルを確認できませんでした。状態を更新して再試行してください。", "登录失败:{message}": "ログインに失敗しました:{message}", "登录尚未完成,请继续通过共享登录桥等待结果": "ログインはまだ完了していません。共通ログインブリッジで引き続き結果をお待ちください。", "登录已结束": "ログインは終了しました", "登录并添加": "ログインして追加", "登录态文件路径:~/.box-agent/config/auth.json(Windows:C:\\Users\\<你的用户名>\\.box-agent\\config\\auth.json)": "ログイン状態ファイルのパス:~/.box-agent/config/auth.json(Windows:C:\\Users\\<ユーザー名>\\.box-agent\\config\\auth.json)", "登录授权地址无效,已取消本次等待。": "ログイン認可 URL が無効なため、今回の待機をキャンセルしました。", "登录桥未返回已完成的账号或会话,请重试": "ログインブリッジから完了済みのアカウントまたはセッションが返されませんでした。再試行してください。", "登录桥返回了空会话,无法确认账号已添加": "ログインブリッジが空のセッションを返したため、アカウントの追加を確認できません。", "相同协议和地址的提供商已经存在。可以继续新建独立提供商,或明确选择已有提供商添加账号。": "同じプロトコルとアドレスのプロバイダーが既に存在します。別のプロバイダーを作成するか、既存のプロバイダーを選択してアカウントを追加してください。", "看全部匹配": "すべての一致を見る", "确定删除自定义提供商「{name}」?将同时删除该提供商下 {count} 个账号,删除后无法恢复。": "カスタムプロバイダー「{name}」を削除しますか?このプロバイダー配下の {count} 個のアカウントも同時に削除され、削除後は元に戻せません。", "站点名称": "サイト名", "端砚由插件在网关电脑上启动独立的 Edge、Chrome 或 Chromium 窗口,不使用系统默认浏览器或应用内嵌窗口。": "InkStone プラグインはゲートウェイのマシン上で専用の Edge・Chrome・Chromium ウィンドウを起動します。システムの既定ブラウザーやアプリ内蔵ウィンドウは使用しません。", "等待 Accio {label}登录完成…": "Accio {label} のログイン完了を待っています…", "等待 AtomCode 登录完成…": "AtomCode のログイン完了を待機中…", "等待 CatPaw 登录完成…": "CatPaw のログイン完了を待っています…", "等待 Cline 授权确认…": "Cline の認可確認を待っています…", "等待 CodeArts 登录完成…": "CodeArts のログイン完了を待っています…", "等待 Google 授权完成…": "Google の認可完了を待っています…", "等待 KukuAI 登录完成…": "KukuAI のログイン完了を待っています…", "等待 LobsterAI 登录完成…": "LobsterAI のログイン完了を待っています…", "等待 MonkeyCode 登录完成…": "MonkeyCode のログイン完了を待っています…", "等待 OfficeAce 登录完成…": "OfficeAce のログイン完了を待っています…", "等待 OrcaTerm 登录完成…": "OrcaTerm のログイン完了を待っています…", "等待 Qoder 授权完成…": "Qoder の認可完了を待っています…", "等待 Trae 授权完成…": "Trae の認可完了を待っています…", "等待 ZCode {label}授权完成…": "ZCode {label} の認可完了を待っています…", "等待你在官方页面完成登录,成功后自动添加账号。": "公式ページでのログイン完了を待っています。成功するとアカウントが自動で追加されます。", "等待千问办公登录完成…": "QwenWork のログイン完了を待っています…", "等待小浣熊登录完成…": "小浣熊のログイン完了を待っています…", "等待插件完成登录": "プラグインのログイン完了を待機中", "等待浏览器完成登录": "ブラウザーのログイン完了を待機中", "等待浏览器授权;若本机回调页面无法打开,请复制地址栏中的完整地址回填。": "ブラウザーでの認可を待っています。ローカルのコールバックページが開けない場合は、アドレスバーの完全な URL をコピーして貼り付けてください。", "等待登录完成…": "ログインの完了を待っています…", "等待网页登录…": "ウェブログインを待っています…", "等待豆包工作登录完成…": "豆包工作へのログインを待っています…", "粘贴 API Key": "API Key を貼り付け", "粘贴 API 令牌": "API トークンを貼り付け", "粘贴 Accio 的 accessToken": "Accio の accessToken を貼り付け", "粘贴 Antigravity 的 Google refresh token(以 1// 开头;直接粘贴含 refresh_token= 的整行也行)。
    这是网页登录之外的手工入口(例如从已登录的官方 IDE 里导出)。refresh token 不会过期,access token 到期由网关自动续期;令牌丢了只能重新走 Google 授权,请妥善保存。": "Antigravity の Google refresh token を貼り付け(1// で始まる;refresh_token= を含む行全体をそのまま貼り付けても可)。
    これはウェブログイン以外の手動入り口です(例:ログイン済みの公式 IDE からエクスポート)。refresh token は期限切れにならず、access token の期限切れはゲートウェイが自動で更新します;トークンを紛失すると Google の認可をやり直すしかないため、大切に保管してください。", "粘贴 Command Code 的 API Key(user_ 开头;从官方 CLI 的 ~/.commandcode/auth.json 或网页 studio 获取)。整行 / 带引号 / 带 Bearer 前缀地粘都行,网关会自己剥成裸 key。key 不过期、也没有续期接口,失效后重新获取即可;添加时网关会做一次轻量探活,失败不影响添加。": "Command Code の API Key を貼り付け(user_ で始まる;公式 CLI の ~/.commandcode/auth.json またはウェブの studio から取得)。行全体 / 引用符付き / Bearer プレフィックス付きのまま貼り付けても構いません。ゲートウェイが自動で裸の key に剥がします。key は期限切れにならず、更新用 API もありません。無効になったら取得し直してください;追加時にゲートウェイが軽量な死活確認を 1 回行いますが、失敗しても追加には影響しません。", "粘贴 Cookie": "Cookie を貼り付け", "粘贴 Google refresh token": "Google refresh token を貼り付け", "粘贴 ModelScope 的 API 令牌(ms- 开头,在 {site} 的「访问令牌」页获取)。
    {siteNote}
    这枚令牌两用:网关既用它调推理,也用它读账号身份、魔粒余额与每日签到。令牌长期有效、没有续期接口,失效后重新获取再粘一次即可。": "ModelScope の API トークン(ms- で始まる)を貼り付けてください({site} の「アクセストークン」ページで取得できます)。
    {siteNote}
    このトークンは二役です:ゲートウェイは推論の呼び出しにも、アカウント情報・魔粒残高・毎日のチェックインの取得にも使います。トークンは長期有効で更新 API はありません。使えなくなったら再取得して貼り直してください。", "粘贴 OrcaTerm 的 OAuth accessToken(JWT,三段点分;从桌面客户端 data.bin 或 Web 版 Cookie ot_session 获取)。直接粘贴含 Bearer / ot_session= 的整行也行,网关会自己剥成裸 token。添加后由网关自动续期(上游有续期接口),无需跟随 2 小时时效手动更换。": "OrcaTerm の OAuth accessToken(ドット区切り 3 パートの JWT。デスクトップクライアントの data.bin か Web 版の Cookie ot_session から取得)を貼り付けます。Bearer / ot_session= を含む行をそのまま貼ってもよく、ゲートウェイが裸のトークンに剥がします。追加後はゲートウェイが自動で更新するため(上流に更新 API があります)、2 時間の有効期限を手動で追う必要はありません。", "粘贴 Qoder 个人访问令牌(pt-…)": "Qoder の個人アクセストークン(pt-…)を貼り付け", "粘贴 accessToken": "accessToken を貼り付け", "粘贴 access_token(一长串 JWT)": "access_token(長い JWT)を貼り付け", "粘贴 session cookie": "session cookie を貼り付け", "粘贴 token / refreshToken": "token / refreshToken を貼り付け", "粘贴 userToken.value": "userToken.value を貼り付け", "粘贴 workos:… 开头的令牌(不带前缀也会自动补上)": "workos:… で始まるトークンを貼り付け(プレフィックスがなくても自動で補われます)", "粘贴 www.doubao.com 的完整 Cookie(必须含 sessionid),也支持 Cookie JSON 数组或对象。复用豆包工作账号的额度;Cookie 失效后需重新登录,没有自动续期。": "sessionid を含む www.doubao.com の完全な Cookie を貼り付けてください。Cookie の JSON 配列とオブジェクトにも対応します。豆包工作アカウントのクォータを使用し、Cookie が無効になると再ログインが必要です。自動更新はありません。", "粘贴令牌": "トークンを貼り付け", "粘贴令牌对": "トークンペアを貼り付け", "粘贴你本人已授权的 GitHub OAuth 令牌(不是设备码或 Copilot 短令牌)。令牌仍需由 GitHub 验证并交换;CLI 专用令牌可能不支持编辑器令牌交换。": "本人が認可した GitHub OAuth トークンを貼り付けます。デバイスコードや短期 Copilot トークンではありません。GitHub による検証・交換が必要で、CLI 専用トークンはエディタートークンへの交換に対応しない場合があります。", "粘贴完整登录凭证 JSON,或只填模型凭证 llmToken。仅模型凭证可对话;积分、续期和奖励需要登录凭证 accessToken。": "ログイン JSON 全体、またはモデル認証情報 llmToken を貼り付けます。モデル認証情報のみの場合は対話に対応し、ポイント・更新・報酬には accessToken が必要です。", "粘贴智谱清言的访问令牌(JWT,三段点分)。获取方式:浏览器打开 chatglm.cn 并登录后,在开发者工具的 Application → Cookies 里复制 chatglm_token 的值(也可以直接粘 chatglm_token=…; 整行)。粘贴后会先向上游校验一次,校验通过才落账号;登录账号的积分、签到能力都能用,之后由网关自动续期(上游有续期接口)。": "智谱清言のアクセストークン(3 つのドット区切り部分からなる JWT)を貼り付けてください。取得方法:ブラウザで chatglm.cn を開いてログインし、開発者ツールの Application → Cookies から chatglm_token の値をコピーします(chatglm_token=…; の行をそのまま貼っても可)。貼り付けたあと上流に対して一度検証し、通った場合のみアカウントを保存します。ログイン済みアカウントではポイントと签到の機能が使え、以降はゲートウェイが自動で更新します(上流に更新インターフェースがあります)。", "粘贴登录凭据": "ログイン認証情報を貼り付け", "粘贴的是登录 session(同时是模型网关的 token)。Loomy 没有续期接口,session 有效期约 14 天,过期后重新登录即可。": "貼り付けるのはログイン session です(同時にモデルゲートウェイの token でもあります)。Loomy には更新用 API がなく、session の有効期間は約 14 日です。期限切れ後は再ログインしてください。", "粘贴网关凭据": "ゲートウェイ認証情報を貼り付け", "粘贴网页登录凭证": "Web ログイン資格情報を貼り付け", "粘贴网页登录态 cookie monkeycode_ai_session 的值(在浏览器里复制整段 Cookie 直接粘贴也行,网关会自己剥出值)。
    {siteNote}
    MonkeyCode 没有续期接口:session 有效期约 30 天(硬限制),过期后重新登录网页、再粘贴一次即可。": "ウェブのログイン状態 cookie monkeycode_ai_session の値を貼り付け(ブラウザーで Cookie 全体をコピーしてそのまま貼り付けても可。ゲートウェイが値を自動で取り出します)。
    {siteNote}
    MonkeyCode には更新用 API がありません:session の有効期間は約 30 日(ハードリミット)で、期限切れ後はウェブに再ログインして貼り付け直せば済みます。", "粘贴网页访问令牌": "Web アクセストークンを貼り付け", "粘贴访问令牌": "アクセストークンを貼り付け", "系统浏览器": "システムブラウザ", "系统浏览器可复用已有登录态(国际版推荐);内嵌窗口更干净。": "システムブラウザは既存のログイン状態を再利用できます(国際版で推奨);内蔵ウィンドウの方がクリーンです。", "系统浏览器打开(复用已登录的 Cline 账号);完成后自动加入列表": "システムブラウザで開く(ログイン済みの Cline アカウントを再利用);完了後は自動でリストに追加されます", "系统浏览器打开(复用已登录的 Google 账号);完成后自动加入列表": "システムブラウザで開きます(ログイン済みの Google アカウントを再利用);完了後は自動でリストに追加されます", "系统浏览器打开(复用已登录的 Zai / Google 账号);完成后自动加入列表": "システムブラウザで開く(ログイン済みの Zai / Google アカウントを再利用);完了後は自動でリストに追加されます", "系统浏览器打开(复用已登录的美团账号);完成后自动加入列表": "システムブラウザで開く(ログイン済みの Meituan アカウントを再利用);完了後は自動でリストに追加されます", "系统浏览器打开(复用已登录账号);完成后自动加入列表": "システムブラウザで開く(ログイン済みアカウントを再利用);完了後は自動でリストに追加されます", "系统默认浏览器": "システムの既定ブラウザ", "组织登录地址(Start URL)": "組織のログイン URL(Start URL)", "继续新建独立提供商": "別のプロバイダーを作成", "续期令牌": "リフレッシュトークン", "编码套餐 API Key": "コーディングプラン API Key", "网关 Secret": "ゲートウェイシークレット", "网关未返回有效的手动回调输入契约;请更新网关后重新发起。": "ゲートウェイが有効な手動コールバック入力契約を返しませんでした。ゲートウェイを更新し、もう一度開始してください。", "网页 Cookie": "Web Cookie", "网页登录": "ウェブログイン", "网页登录 / 填写凭证": "Web ログイン / 認証情報を入力", "网页登录的打开方式": "ウェブログインの開き方", "网页登录(Zai / Google)": "ウェブログイン(Zai / Google)", "网页访问令牌": "Web アクセストークン", "腾讯 TokenHub 国内版(按量)": "Tencent TokenHub 中国版(従量課金)", "腾讯 TokenHub 国内站按量 API;使用 TokenHub API Key,不是 Token Plan 套餐或 WorkBuddy 凭证": "Tencent TokenHub 中国サイトの従量課金 API です。Token Plan や WorkBuddy の認証情報ではなく、TokenHub API Key を使用します", "腾讯 TokenHub 国际版(按量)": "Tencent TokenHub 国際版(従量課金)", "腾讯 TokenHub 国际站按量 API;使用 TokenHub API Key,不是 Token Plan 套餐或 WorkBuddy 凭证": "Tencent TokenHub 国際サイトの従量課金 API です。Token Plan や WorkBuddy の認証情報ではなく、TokenHub API Key を使用します", "自定义": "カスタム", "自建聚合面板:填你自己的站点地址。余额查询用该账号的 API Key 打 {base}/v1/usage,不需要额外配置": "自前のアグリゲーションパネル:自分のサイトアドレスを入力。残高照会はこのアカウントの API キーで {base}/v1/usage を叩きます。追加設定不要", "自建聚合面板:填你自己的站点地址;余额查询要另填 NewAPI 的个人访问令牌(见下方「余额查询」一段)": "自前のアグリゲーションパネル:自分のサイトアドレスを入力。残高照会には別途 NewAPI の個人アクセストークンが必要です(下の「残高照会」の節を参照)", "获取风控配置失败,将直接尝试领取:{message}": "不正対策設定の取得に失敗しました。そのまま受け取りを試みます:{message}", "获取风控配置失败:{message}": "認証設定を取得できませんでした:{message}", "获取验证码": "コードを取得", "要添加到其他站点,请返回「已建 API」重新选择": "別のサイトに追加するには、「設定済み API」に戻って選択してください", "解锁 Premium": "Premium を解除", "访客模式": "ゲストモード", "访客模式(免登录)": "ゲストモード(ログイン不要)", "访问令牌": "アクセストークン", "该上游无需鉴权(不发送鉴权头)": "このアップストリームは認証不要(認証ヘッダーを送信しません)", "该地址已有提供商": "このアドレスのプロバイダーは既に存在します", "该提供商": "このプロバイダー", "该提供商已不存在或地址已变更,请重新选择": "このプロバイダーは存在しないか、アドレスが変更されています。選択し直してください", "该提供商已不存在(可能已被删除),请刷新后重试": "このプロバイダーは存在しません(削除された可能性があります)。更新して再試行してください", "该提供商账号添加功能即将上线": "このプロバイダーのアカウント追加機能は近日公開予定です", "该登录需要继续跳转,请在网关桌面面板重新发起。": "このログインには追加のリダイレクトが必要です。ゲートウェイのデスクトップパネルで再度開始してください。", "该自定义提供商已不存在(可能已被删除),请刷新后重试": "このカスタムプロバイダーは存在しません(削除された可能性があります)。更新してから再試行してください", "请使用网页访问令牌,不要填写 sk- 开头的 API Key。": "Web アクセストークンを使用し、sk- で始まる API Key は入力しないでください。", "请先选择一个自定义提供商": "先にカスタムプロバイダーを選択してください", "请在弹出的滑块中完成验证(官方要求的风控步骤)": "表示されたスライダーで認証を完了してください(公式が求める不正対策ステップ)", "请在插件打开的专用 Chrome 窗口中登录移动云(yun.139.com)。登录成功后会自动读取并验证凭据,随后继续添加账号。": "プラグインが開いた専用 Chrome ウィンドウで中国移動クラウド(yun.139.com)にログインしてください。成功すると認証情報を自動取得・検証し、アカウント追加を続行します。", "请在插件打开的端砚控制台窗口中登录(支持密码、短信或扫码)。插件会自动读取登录结果并关闭窗口,无需手动关闭;随后按所选方式创建或复用 API Key。新建密钥的明文只显示一次,由插件保存。": "プラグインが開いた InkStone コンソールで、パスワード・SMS・QR コードのいずれかでログインしてください。プラグインが結果を読み取り、ウィンドウを自動で閉じます。続いて選択した方式で API Key を作成または再利用します。新しいキーの平文は一度だけ表示され、プラグインが保存します。", "请在插件打开的端砚控制台窗口中登录(支持密码、短信或扫码),然后退出该浏览器:macOS 请按 Cmd+Q(只关闭窗口不够),Linux 请关闭最后一个窗口。插件读取登录结果后会继续处理,并按所选方式创建或复用 API Key。新建密钥的明文只显示一次,由插件保存。": "プラグインが開いた InkStone コンソールで、パスワード・SMS・QR コードのいずれかでログインし、そのブラウザーを終了してください。macOS は Cmd+Q(ウィンドウを閉じるだけでは不十分)、Linux は最後のウィンドウを閉じます。プラグインが結果を読み取り、選択した方式で API Key を作成または再利用します。新しいキーの平文は一度だけ表示され、プラグインが保存します。", "请在系统浏览器完成官方登录。": "システムブラウザーで公式ログインを完了してください。", "请在运行网关的机器上打开 PowerShell,执行下面的专用登录命令,并按官方提示完成授权。面板会自动检测登录结果,不需要粘贴凭证。": "ゲートウェイのマシンで PowerShell を開き、以下の専用ログインコマンドを実行して公式の案内に従って認可を完了してください。パネルは完了を自動検出するため、認証情報の貼り付けは不要です。", "请在运行网关的机器上打开终端,执行下面的专用登录命令,并按官方提示完成授权。面板会自动检测登录结果,不需要粘贴凭证。": "ゲートウェイのマシンで端末を開き、以下の専用ログインコマンドを実行して公式の案内に従って認可を完了してください。パネルは完了を自動検出するため、認証情報の貼り付けは不要です。", "请填写 11 位大陆手机号": "11 桁の中国本土の携帯番号を入力してください", "请填写 6 位数字验证码": "6 桁の認証コードを入力してください", "请填写 Base URL": "Base URL を入力してください", "请填写 {label}": "{label} を入力してください", "请填写名称": "名前を入力してください", "请安装并启用对应的提供商插件;列表为空时请刷新后重试。": "対応するプロバイダープラグインをインストールして有効にしてください。一覧が空の場合は、更新して再試行してください。", "请完成验证…": "認証を完了してください…", "请选择客户端凭证文件,或本软件导出的单账号 JSON 文件": "クライアントの認証情報ファイル、または本アプリが出力した単一アカウントの JSON ファイルを選択してください。", "读取 %APPDATA%/AutoClaw/auth.json 并解密,仅 Windows": "%APPDATA%/AutoClaw/auth.json を読み込んで復号します。Windows のみ", "读取 ~/.cline/data/settings/providers.json,需已在 Cline 客户端登录": "~/.cline/data/settings/providers.json を読み込みます。Cline クライアントでログイン済みである必要があります", "读取 ~/.meituan-catpaw/auth.json,需已在 CatPaw 客户端登录": "~/.meituan-catpaw/auth.json を読み込みます。CatPaw クライアントでログイン済みである必要があります", "读取本机 KukuAI 客户端登录态(%APPDATA%\\baidugenflowpro\\Network\\Cookies),需已在 KukuAI 客户端登录": "本機の KukuAI クライアントのログイン状態を読み込みます(%APPDATA%\\baidugenflowpro\\Network\\Cookies)。KukuAI クライアントでログイン済みである必要があります", "读取本机 OrcaTerm 客户端登录态(%APPDATA%\\com.orcaterm-desktop.app\\data.bin),需已在 OrcaTerm 客户端登录": "ローカルの OrcaTerm クライアントのログイン状態(%APPDATA%\\com.orcaterm-desktop.app\\data.bin)を読み取ります。OrcaTerm クライアントでのログインが必要です", "读取本机已登录豆包工作客户端的 Cookie,每次请求实时读取;客户端需使用 --remote-debugging-port=9342 启动。本软件不修改、关闭或重启客户端。": "リクエストごとに、ログイン済みのローカル豆包工作クライアントから Cookie を読み取ります。クライアントを --remote-debugging-port=9342 で起動してください。本アプリはクライアントを変更、終了、再起動しません。", "读取本机智谱清言客户端登录态(%APPDATA%\\chatglm\\Network\\Cookies),需已在客户端登录": "本機の智谱清言クライアントのログイン状態を読み取ります(%APPDATA%\\chatglm\\Network\\Cookies)。クライアントでログイン済みである必要があります", "读取的是网关电脑上已登录的客户端,不是打开面板的电脑;也可改用粘贴凭据。": "パネルを開いている端末ではなく、ゲートウェイのコンピューターにあるログイン済みクライアントを読み取ります。認証情報の貼り付けも利用できます。", "读取网关所在机器上 kiro-cli 或 Kiro IDE 的登录态,不是当前浏览器所在电脑的账号;续期后会写回原处。": "このブラウザーの端末ではなく、ゲートウェイ端末上の kiro-cli または Kiro IDE のログイン状態を読み取ります。更新した認証情報は元の場所に書き戻します。", "读取运行网关的电脑上已登录的 QuWork,只保存本机引用,不修改官方客户端文件;切换账号后需重新导入。": "ゲートウェイのコンピューターでログイン済みの QuWork を読み取り、参照のみを保存します。公式ファイルは変更しません。アカウント切替後は再度取り込んでください。", "读本机官方客户端(Tencent WorkBuddy / WorkBuddy AI)当前登录的账号:自动定位其凭证目录里最新的登录态文件(需已在本机官方客户端登录)。导入后由网关自动续期,无需跟随 2 小时时效手动换令牌。": "このマシンの公式クライアント(Tencent WorkBuddy / WorkBuddy AI)で現在ログイン中のアカウントを読み取ります:認証情報ディレクトリ内の最新のログイン状態ファイルを自動で特定します(このマシンの公式クライアントにログイン済みである必要があります)。インポート後はゲートウェイが自動で更新するため、2 時間の有効期限に合わせて手動でトークンを交換する必要はありません。", "读本机客户端当前登录态(明文 Cookie,无需解密)。客户端运行时 Cookies 文件被独占占用,导入前请先关闭 KukuAI 客户端。": "本機クライアントの現在のログイン状態を読み込みます(平文 Cookie、復号不要)。クライアントの実行中は Cookies ファイルが排他占有されるため、インポート前に KukuAI クライアントを終了してください。", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。": "本機クライアントの現在のログイン状態を読み込みます。毎回リアルタイムで読み取ります(この記録を削除してもクライアントのログイン状態には影響しません)。", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。客户端重新登录后点「刷新 Token」同步。": "本機クライアントの現在のログイン状態を読み込みます。毎回リアルタイムで読み取ります(この記録を削除してもクライアントのログイン状態には影響しません)。クライアントで再ログインしたら「Token を更新」をクリックして同期してください。", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。客户端重新登录后重新导入即可。": "本機クライアントの現在のログイン状態を読み込みます。毎回リアルタイムで読み取ります(この記録を削除してもクライアントのログイン状態には影響しません)。クライアントで再ログインしたら再インポートしてください。", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。用 Zai / Google 登录客户端的用户走这一条。": "本機クライアントの現在のログイン状態を読み込みます。毎回リアルタイムで読み取ります(この記録を削除してもクライアントのログイン状態には影響しません)。Zai / Google でクライアントにログインしているユーザーはこちらを使ってください。", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。这一条归入 {label}。": "本機クライアントの現在のログイン状態を読み込みます。毎回リアルタイムで読み取ります(この記録を削除してもクライアントのログイン状態には影響しません)。これは {label} に分類されます。", "读本机客户端当前登录的 OAuth 令牌(明文 JSON,无需解密)。导入后由网关自动续期,无需跟随客户端的 2 小时时效手动换令牌。": "ローカルクライアントが現在ログインしている OAuth トークンを読み取ります(平文 JSON、復号不要)。インポート後はゲートウェイが自動で更新するため、クライアントの 2 時間の有効期限に合わせて手動で切り替える必要はありません。", "读本机客户端当前的登录态。客户端的 Cookies 是 DPAPI 加密的(Chromium os_crypt),因此仅 Windows 可用;客户端正在运行时可能读不到该文件,先退出客户端再试即可(也可改用「填写凭证」粘贴令牌)。": "本機クライアントの現在のログイン状態を読み取ります。クライアントの Cookies は DPAPI 暗号化(Chromium os_crypt)されているため、Windows でのみ利用できます。クライアントの起動中はこのファイルを読めないことがあるので、クライアントを終了してから再試行してください(「資格情報を入力」でトークンを貼り付ける方法でも構いません)。", "豆包工作": "豆包工作", "账号信息": "アカウント情報", "账号信息不完整,请刷新后重试": "アカウント情報が不完全です。更新してから再試行してください", "账号名由插件自动获取,添加后可修改。": "アカウント名はプラグインが自動で取得します。追加後に変更できます。", "账号已添加,但代理选择未确认保存;请在账号设置中重新检查。": "アカウントを追加しましたが、プロキシ選択の保存は確認できませんでした。アカウント設定で確認してください。", "账号已添加,但未返回账号 ID,无法保存登录代理选择。": "アカウントを追加しましたが、アカウント ID が返されなかったためログインプロキシの選択を保存できません。", "账号已添加,但请留意:{warning}": "アカウントを追加しましたが、ご注意ください:{warning}", "账号已添加,但账号列表同步失败,请刷新重试。": "アカウントを追加しましたが、一覧の同期に失敗しました。更新して再試行してください。", "账号文件的提供商与当前选择不一致,请选择对应的提供商后再导入": "アカウントファイルのプロバイダーが現在の選択と異なります。対応するプロバイダーを選択してからインポートしてください。", "账号版本": "アカウントバージョン", "账号类型": "アカウント種別", "账号:{name}
    ": "アカウント:{name}
    ", "走 Inference Providers 路由,Key 在 hf.co/settings/tokens 创建": "Inference Providers ルートを使用します。Key は hf.co/settings/tokens で作成します", "返回提供商列表": "プロバイダー一覧に戻る", "还没有可用的提供商。各家提供商的转发与账号实现都在插件包里,装好之后这里就会出现。": "利用できるプロバイダーはまだありません。各プロバイダーの転送とアカウント処理はプラグインパックに含まれています。パックをインストールするとここに表示されます。", "还没有账号": "アカウントはまだありません", "还需完成 AWS 授权:请打开下一步授权页,完成后回填新的完整回调地址。": "AWS の認可が必要です。次の認可ページを開き、完了後に新しい完全なコールバック URL を貼り付けてください。", "还需继续授权,请打开下一步授权页,完成后回填新的完整回调地址。": "追加の認可が必要です。次の認可ページを開き、完了後に新しい完全なコールバック URL を貼り付けてください。", "这一家当前不支持网页登录,请改用填写凭证": "このプロバイダーは現在ウェブログインに対応していません。認証情報の入力に切り替えてください", "这个账号当前没有可自动领的活动(只自动领每日登录赠送积分)": "このアカウントには現在自動で受け取れるイベントがありません(自動で受け取るのは毎日ログインで付与されるポイントのみです)", "这份额度走「活动套餐」通道:若转发时提示编码套餐已到期,": "このクォータは「イベントプラン」の経路を使用します:転送時にコーディングプランの期限切れが表示された場合は、", "这里填国内站(modelscope.cn)的账号:请粘贴国内站的令牌。国际站(modelscope.ai)是另一家 provider、另一套账号,两边的令牌不通用。": "ここには中国版サイト(modelscope.cn)のアカウントを入力します。中国版サイトのトークンを貼り付けてください。国際版サイト(modelscope.ai)は別のプロバイダ・別のアカウント体系で、トークンは相互利用できません。", "这里填国内站(monkeycode-ai.com)的账号:请粘贴国内站的 session。国际站(monkeycode-ai.net)是另一家 provider、另一套账号,两边的凭证不通用。": "ここには中国サイト(monkeycode-ai.com)のアカウントを入力します:中国サイトの session を貼り付けてください。国際サイト(monkeycode-ai.net)は別のプロバイダーで、アカウントも別です。両者の認証情報は共用できません。", "这里填国际站(modelscope.ai)的账号:请粘贴国际站的令牌。国内站(modelscope.cn)是另一家 provider、另一套账号,两边的令牌不通用。": "ここには国際版サイト(modelscope.ai)のアカウントを入力します。国際版サイトのトークンを貼り付けてください。中国版サイト(modelscope.cn)は別のプロバイダ・別のアカウント体系で、トークンは相互利用できません。", "这里填国际站(monkeycode-ai.net)的账号:请粘贴国际站的 session。国内站(monkeycode-ai.com)是另一家 provider、另一套账号,两边的凭证不通用。": "ここには国際サイト(monkeycode-ai.net)のアカウントを入力します:国際サイトの session を貼り付けてください。中国サイト(monkeycode-ai.com)は別のプロバイダーで、アカウントも別です。両者の認証情報は共用できません。", "选择 CatPaw 客户端的登录态文件 auth.json(Windows:C:\\Users\\<你的用户名>\\.meituan-catpaw\\auth.json;macOS / Linux:~/.meituan-catpaw/auth.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端。": "CatPaw クライアントのログイン状態ファイル auth.json を選択します(Windows:C:\\Users\\<ユーザー名>\\.meituan-catpaw\\auth.json、macOS / Linux:~/.meituan-catpaw/auth.json)。インポート後は認証情報がゲートウェイ側に保存され、単独で転送できるようになります(本機クライアントに依存しません)。", "选择 Cline 客户端的登录态文件 providers.json(Windows:C:\\Users\\<你的用户名>\\.cline\\data\\settings\\providers.json;macOS / Linux:~/.cline/data/settings/providers.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端;这一条归入 {label}。": "Cline クライアントのログイン状態ファイル providers.json を選択します(Windows:C:\\Users\\<ユーザー名>\\.cline\\data\\settings\\providers.json、macOS / Linux:~/.cline/data/settings/providers.json)。インポート後は認証情報がゲートウェイ側に保存され、単独で転送できるようになります(本機クライアントに依存しません)。この項目は {label} に登録されます。", "选择 KukuAI 客户端的 Cookies 文件(%APPDATA%\\baidugenflowpro\\Network\\Cookies):它是**二进制** SQLite 数据库(无扩展名,不是 JSON)。导入时读的是你选中文件的副本、不和运行中的客户端抢占用,因此**无需先关闭客户端**。导入后凭证直接落在网关、可独立转发。": "KukuAI クライアントの Cookies ファイルを選択します(%APPDATA%\\baidugenflowpro\\Network\\Cookies):これは**バイナリ**の SQLite データベースです(拡張子なし、JSON ではありません)。インポート時は選択したファイルのコピーを読み、実行中のクライアントと占有を争いません。したがって**クライアントを終了する必要はありません**。インポート後は認証情報がゲートウェイ側に保存され、単独で転送できるようになります。", "选择 OAuth auth.json 的绝对路径(不扫描其他目录)": "OAuth auth.json の絶対パスを選択(他のディレクトリは走査しません)", "选择凭证文件导入": "認証情報ファイルからインポート", "选择包含 Cookie 的 JSON 对象,或本软件导出的单账号 JSON 文件。导入后可独立使用,不需要持续运行豆包工作客户端。": "Cookie を含む JSON オブジェクト、または本アプリがエクスポートした単一アカウントの JSON ファイルを選択してください。インポート後は豆包工作クライアントを起動し続ける必要はありません。", "选择包含 Tabbit Cookie / JWT 的 JSON 或文本文件;也可以直接粘贴到上方表单。": "Tabbit の Cookie / JWT を含む JSON またはテキストファイルを選択してください。上のフォームに直接貼り付けることもできます。", "选择包含该提供商凭证的 JSON 文件,或本软件导出的单账号 JSON 文件。导入后凭证保存在网关,可独立使用。": "このプロバイダーの認証情報を含む JSON ファイル、または本アプリが出力した単一アカウントの JSON ファイルを選択してください。認証情報はゲートウェイに保存され、独立して使用できます。", "选择官方客户端的登录态凭证文件(workbuddy-desktop.info / workbuddy-desktop-ai.info)或 wb2api 导出的账号 JSON(嵌套 / 扁平形均可)。": "公式クライアントのログイン状態の認証情報ファイル(workbuddy-desktop.info / workbuddy-desktop-ai.info)または wb2api がエクスポートしたアカウント JSON(ネスト / フラット形式どちらも可)を選択してください。", "选择小浣熊客户端的登录态文件 auth.json(Windows:C:\\Users\\<你的用户名>\\.box-agent\\config\\auth.json;macOS / Linux:~/.box-agent/config/auth.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端。": "小浣熊クライアントのログイン状態ファイル auth.json を選択します(Windows:C:\\Users\\<ユーザー名>\\.box-agent\\config\\auth.json、macOS / Linux:~/.box-agent/config/auth.json)。インポート後は認証情報がゲートウェイ側に保存され、単独で転送できるようになります(本機クライアントに依存しません)。", "选择提供商": "プロバイダーを選択", "选择新增账号或重新授权当前注册": "新規アカウント追加または現在の登録の再認証を選択", "选择的文件不是合法 JSON": "選択したファイルは有効な JSON ではありません", "选择要添加账号的提供商": "アカウントを追加するプロバイダーを選択", "选择预置客户端": "プリセットクライアントを選択", "重新扫描": "再スキャン", "重新授权所选账号(固定原身份和 clientId)": "選択アカウントを再認可(元の識別情報と clientId を維持)", "重新读取提供商": "プロバイダーを再読み込み", "鉴权": "認証", "阿里云 Token Plan 套餐(国际站)": "Alibaba Cloud Token Plan プラン(国際版サイト)", "阿里云百炼 Coding 套餐(国内站)": "Alibaba Cloud Model Studio Coding プラン(中国版サイト)", "阿里云百炼 Coding 套餐(国际站)": "Alibaba Cloud Model Studio Coding プラン(国際版サイト)", "阿里云百炼模型服务(国际站,OpenAI 兼容模式)": "Alibaba Cloud Model Studio モデルサービス(国際版サイト、OpenAI 互換モード)", "隐藏凭证": "認証情報を隠す", "需要图形验证码:登录窗口已弹出,请填写后继续": "画像認証が必要です:ログインウィンドウが開きました。入力して続行してください", "需要手动提交授权回调": "認可コールバックの手動送信が必要", "需要时填写完整 Cookie": "必要な場合は完全な Cookie を入力", "需要进行人机验证": "人間認証が必要です", "预置 API": "プリセット API", "领取 CodeArts 每日福利": "CodeArts の毎日特典を受け取る", "领取失败:{message}": "受け取りに失敗しました:{message}", "领取并让官方确认": "受け取って公式の確認を待つ", "风控验证配置不完整,请稍后重试": "不正対策認証の設定が不完全です。しばらくしてから再試行してください", "验证码": "認証コード", "验证码业务请求超时,请刷新状态后重试": "認証後の操作がタイムアウトしました。状態を更新してから再試行してください。", "验证码令牌入池接口不可用": "認証トークン登録 API を利用できません。", "验证码令牌未全部入池": "認証トークンをプールに登録できませんでした。", "验证码令牌池未返回状态": "認証トークンプールから状態が返されませんでした。", "验证码已使用,请重新验证": "認証トークンは使用済みです。再度認証してください。", "验证码已发送。收到后填入下方并点「登录并添加」": "認証コードを送信しました。受け取ったら下の欄に入力し、「ログインして追加」をクリックしてください", "验证码已发送,请查看手机短信": "認証コードを送信しました。携帯の SMS をご確認ください", "验证码已发送,请查看手机短信。填入下方并点「登录并添加」即完成登录": "認証コードを送信しました。携帯の SMS をご確認ください。下の欄に入力して「ログインして追加」をクリックすると、ログインが完了します", "验证码已发送,请查看短信": "認証コードを送信しました。SMS をご確認ください", "验证码校验失败,请重试": "認証コードの検証に失敗しました。再試行してください", "验证码校验超时,请重试": "認証コードの検証がタイムアウトしました。再試行してください", "验证码组件不可用,请重试": "認証コンポーネントが利用できません。再試行してください", "验证码组件初始化超时,请重试": "認証コンポーネントの初期化がタイムアウトしました。再試行してください", "验证码组件加载失败,请检查网络后重试": "認証コンポーネントの読み込みに失敗しました。ネットワークを確認して再試行してください", "验证码组件加载异常,请重试": "認証コンポーネントの読み込みでエラーが発生しました。再試行してください", "验证码组件加载超时,请检查网络后重试": "認証コンポーネントの読み込みがタイムアウトしました。ネットワークを確認して再試行してください", "验证码组件未加载,请重启应用后重试": "認証コンポーネントが読み込まれていません。アプリを再起動してから再試行してください", "验证码组件返回的验证串不完整(请重试)": "認証コンポーネントが不完全なトークンを返しました。再試行してください。", "验证被上游风控拒绝,请稍后重试": "上流のセキュリティサービスが認証を拒否しました。しばらくしてから再試行してください。", "验证请求过于频繁,请稍后重试": "認証リクエストが多すぎます。しばらくしてから再試行してください。", "默认开启;填 0 关闭(发送「已设为默认浏览器」标记)": "既定で有効。0 を入力すると無効(「既定のブラウザに設定済み」マーカーを送信)", "(免费额度池,模型名带 cline-free/ 前缀)。": "(無料枠プール、モデル名に cline-free/ プレフィックスが付きます)。", "(其中 {n} 把恢复为不限制)": "(うち {n} 個は無制限に戻ります)", "(必填)": "(必須)", "(有效期 {window})": "(有効期間 {window})", "(订阅池,模型名带 cline-pass/ 前缀,需要账号有对应订阅)。": "(サブスクプール、モデル名に cline-pass/ プレフィックスが付きます。アカウントに対応するサブスクリプションが必要です)。", ",下一次最快 {minutes} 分钟后": "、次回は最短 {minutes} 分後", ",并从 {n} 把 Key 的可用提供商里移除": "、Key {n} 個を利用可能なプロバイダーからも除外しました", " · 思考等级 ": " · 思考レベル ", " · 思考等级 {level}": " · 思考レベル {level}", " · 有映射 ": " · マッピングあり ", " · 限额中": " · レート制限中", " → 转发": " → 転送", " 上登记上游模型": "」にアップストリームモデル", " 与 ": " と ", " 个": " 個", " 个模型 · 已启用 ": " 個のモデル · 有効 ", " 个账号": " 件のアカウント", " 会广告它、请求它也会被转发到这家。 支持字母、数字与 ": " がそれを広告し、それをリクエストしてもこのプロバイダーへ転送されます。 使用できる文字は英字、数字と ", " 失败": " 失敗", " 已发出,等待上游首帧…": " を送信しました。アップストリームの初回フレームを待機中…", " 成功 ·": " 成功 ·", " 这类符号,但不能含空格或换行,且不超过 128 个字符。同一提供商内,同名绑定最多启用一条;已有启用绑定时不能新增,启用备用绑定会自动关闭其他同名绑定。不同提供商可各启用一条同名绑定,用于主备切换。": " などの記号を使用できますが、空白や改行は使用できず、128 文字以内にしてください。同一プロバイダー内では同名のバインドを1つだけ有効にできます。追加する前に既存の有効なバインドを無効にしてください。予備のバインドを有効にすると、他の同名のバインドは自動的に無効になります。フェイルオーバー用に、異なるプロバイダーではそれぞれ1つを有効にできます。", " 里的 ": " の ", "(全局)": "(グローバル)", "(未选)": "(未選択)", "0 家": "0 社", "<上游模型 ID>": "<アップストリームモデル ID>", "<上游模型>": "<アップストリームモデル>", "<对外名>": "<外部公開名>", "models.dev 补齐:对下游声明 {value}": "models.dev による補完: 下流には {value} として宣言", "{action}映射 {alias}": "マッピング {alias} を{action}", "{id}({name})": "{id}({name})", "{label}要填 1 ~ 1 亿之间的整数(留空 = {inherit})": "{label}には 1 ~ 1 億の間の整数を入力してください(空欄 = {inherit})", "{label}:{value}(对下游声明的精确值){origin}{suffix}": "{label}: {value}(下流に宣言する正確な値){origin}{suffix}", "{label}:{value}(对下游声明的精确值){suffix}": "{label}:{value}(ダウンストリームへ宣言する正確な値){suffix}", "{label}:上游未声明{suffix}": "{label}:アップストリーム未宣言{suffix}", "{label}:上游未声明(下游会按不支持处理){suffix}": "{label}:アップストリーム未宣言(ダウンストリームでは未対応として処理){suffix}", "{label}:不支持{origin}{suffix}": "{label}: 非対応{origin}{suffix}", "{label}:不支持{suffix}": "{label}:未対応{suffix}", "{label}:支持{origin}{suffix}": "{label}: 対応{origin}{suffix}", "{label}:支持{suffix}": "{label}:対応{suffix}", "{level}(本次指定)": "{level}(今回指定)", "{name}({id})": "{name}({id})", "{name}(不在该家当前清单里)": "{name}(このプロバイダーの現在のカタログにありません)", "{n} 个": "{n} 個", "{n} 个映射": "{n} 件のマッピング", "{n} 个模型": "{n} 個のモデル", "{n} 字节": "{n} バイト", "{provider}:模型清单为空,等待获取": "{provider}:モデルカタログが空です。取得を待機中", "{status}:模型获取失败": "{status}:モデルの取得に失敗", "{total} 家 · 成功 {done}": "{total} 社 · 成功 {done}", "{total} 家 · 成功 {done} · 失败 {failed}": "{total} 社 · 成功 {done} · 失敗 {failed}", "✅ 已保存 {id} 的能力位({provider})": "✅ {id} の能力フラグを保存しました({provider})", "✅ 已导入 {added} 个模型({skipped} 个已存在,跳过)": "✅ {added} 個のモデルをインポートしました({skipped} 個は既存のためスキップ)", "✅ 已更新 {name} 的思考等级": "✅ {name} の思考レベルを更新しました", "✅ 已添加映射 {name} → {target}({label}){suffix}": "✅ マッピング {name} → {target} を追加しました({label}){suffix}", "✅ 已登记 {name}({label}),但该提供商还没有可用账号,这一行要加上账号后才会显示": "✅ {name} を登録しました({label})。ただしこのプロバイダーにはまだ利用可能なアカウントがないため、この行はアカウントを追加するまで表示されません", "✅ 已登记模型 {name}({label})": "✅ モデル {name} を登録しました({label})", "✅ 已登记自定义模型 {name}({label})": "✅ カスタムモデル {name} を登録しました({label})", "✅ 批量{action}完成:共 {n} 个模型": "✅ 一括操作「{action}」が完了:合計 {n} 個のモデル", "✅ 批量{action}完成:共 {n} 个模型(跳过不可删除的 {skipped} 个)": "✅ 一括操作「{action}」が完了:合計 {n} 個のモデル(削除できない {skipped} 個はスキップ)", "。": "。", "。上游清单给的值不准时,在这里改;": "。アップストリームのカタログの値が正しくない場合はここで変更します;", "。同一对外名可在多个提供商各添加一条: 下游用同一个名字请求,网关按账号优先级主备切换,失败自动落到下一个提供商。": "。同じ外部公開名は複数のプロバイダーにそれぞれ 1 件ずつ追加できます: ダウンストリームが同じ名前でリクエストすると、ゲートウェイはアカウントの優先度に従ってプライマリ/バックアップを切り替え、失敗時は自動的に次のプロバイダーへフォールバックします。", "「恢复继承」会把这一项交还给上游清单的值。": "「継承を復元」はこの項目をアップストリームのカタログの値に戻します。", "「来源」列会标成": "「ソース」列は", "上下文 / 输出": "コンテキスト / 出力", "上下文窗口": "コンテキストウィンドウ", "上下文窗口 {input} / 最大输出 Token {output} —— 点击修改模型能力": "コンテキストウィンドウ {input} / 最大出力 Token {output} —— クリックしてモデル能力を変更", "上游 {model}": "アップストリーム {model}", "上游不认识这个模型名:先点「获取模型」刷新清单,或核对默认绑定指向的上游模型。": "アップストリームがこのモデル名を認識できません:まず「モデルを取得」でカタログを更新するか、デフォルトバインディングが指すアップストリームモデルを確認してください。", "上游原始响应": "アップストリームの生レスポンス", "上游可用档位:{levels}": "上流で利用可能なレベル:{levels}", "上游固定为 {level},绑定其他等级也无法调高。": "上流は {level} に固定されています。別のレベルを指定しても引き上げられません。", "上游已经不再提供这个模型(可能已下线或改了 ID)": "上流はこのモデルを提供しなくなりました(廃止または ID 変更の可能性があります)。", "上游拒绝了这条登录态:重新登录一次,或把这条账号删掉。": "アップストリームがこのログイン状態を拒否しました:もう一度ログインするか、このアカウントを削除してください。", "上游未声明": "アップストリーム未宣言", "上游未声明(下游会按不支持处理)": "アップストリーム未宣言(ダウンストリームでは未対応として処理)", "上游未部署": "上流で未デプロイ", "上游模型": "アップストリームモデル", "上游模型 ID": "アップストリームモデル ID", "上游没在预算内给完回答。可以只勾一个账号再测一次,看是普遍慢还是某一个账号慢。": "アップストリームが予算内で回答を返し切れませんでした。アカウントを 1 つだけチェックして再テストすると、全体的に遅いのか特定のアカウントだけ遅いのかを確認できます。", "上游没有给出可读的错误说明": "アップストリームが読み取り可能なエラー説明を返しませんでした", "上游没有返回任何模型": "アップストリームがモデルを 1 つも返しませんでした", "上游目录列出了这个模型,但推理端尚未识别;保留在清单中,后续探测成功后自动清除标记": "上流カタログにはこのモデルがありますが、推論バックエンドはまだ認識していません。カタログには保持され、後の疎通確認に成功すると表示は自動的に解除されます。", "上游目录尚未拉到,用的是内置静态清单;点「刷新模型清单」可重试": "アップストリームのディレクトリをまだ取得できていません。内蔵の静的カタログを使用しています;「モデルカタログを更新」で再試行できます", "上游能列出这个模型,但官方客户端不展示它;本仓已默认关闭它的默认绑定(点这一行的开关可以手动打开)": "上流はこのモデルを返しますが、公式クライアントは表示しません。本ゲートウェイは既定バインディングを無効にしています(行のスイッチで手動で有効化できます)", "下游客户端": "ダウンストリームクライアント", "下游请求 ": "ダウンストリームのリクエスト ", "不展示": "非表示", "不影响网关的转发与路由": "ゲートウェイの転送とルーティングには影響しません", "不支持": "未対応", "不覆盖": "上書きしない", "两边原因不一样时各自处理。如果": "両者の原因が異なる場合はそれぞれ対処します。もし", "中止测试": "テストを中止", "仅支持已识别压缩格式的 ZCode;客户端修改压缩格式后可能需要更新适配。": "識別済みの ZCode 圧縮形式のみ対応しています。クライアントが形式を変更した場合、対応の更新が必要になることがあります。", "仅本次测试临时生效,不修改账号保存的代理配置。可选「网络代理」页里的节点或强制直连。": "今回のテストにのみ一時的に適用され、アカウントに保存されたプロキシ設定は変更されません。「ネットワークプロキシ」ページのノードを選択するか、直接接続を強制できます。", "从这一家的上游拉一份模型清单,勾选要哪些再导入(已添加的不会重复导入)": "このプロバイダーのアップストリームからモデルカタログを取得し、必要なものを選んでインポートします(追加済みのものは重複インポートされません)", "代理池响应异常": "プロキシプールの応答が不正です", "以模型本名直发": "モデル本来の名前でそのまま送信", "以这个上游模型发一次最小请求,走真实转发链路": "このアップストリームモデルで最小限のリクエストを 1 回送信し、実際の転送経路を通します", "例如 gpt-4o": "例:gpt-4o", "例如 gpt-5.5-preview": "例:gpt-5.5-preview", "保存": "保存", "保存中…": "保存中…", "保存失败:{message}": "保存に失敗:{message}", "保存映射": "マッピングを保存", "保存等级": "レベルを保存", "倍率": "倍率", "倍率升序": "倍率の昇順", "倍率升序,点击切换为降序": "倍率の昇順。クリックで降順に切り替え", "倍率降序": "倍率の降順", "倍率降序,点击切换为升序": "倍率の降順。クリックで昇順に切り替え", "全选当前筛选出的模型(跨分页);再点取消": "現在の絞り込み結果のモデルをすべて選択(ページをまたぎます);もう一度クリックすると解除", "全选当前筛选结果": "現在の絞り込み結果をすべて選択", "全选未添加": "未追加をすべて選択", "全选({n})": "すべて選択({n})", "全部": "すべて", "全部删除": "すべて削除", "全部映射": "すべてのマッピング", "全部自定义提供商": "カスタムプロバイダー全部", "全部({n} 家)": "すべて({n} 社)", "共 {n} 家 · 点「获取模型」开始": "合計 {n} 社 · 「モデルを取得」をクリックして開始", "关闭": "閉じる", "关闭即中止": "閉じると中止されます", "关闭后保留规则,所有请求按原模型处理。": "無効にしてもルールは保持され、すべてのリクエストは元のモデルで処理されます。", "其余 {n} 个会被跳过。": "残りの {n} 個はスキップされます。", "内置": "内蔵", "内置提供商": "内蔵プロバイダー", "内置清单": "内蔵カタログ", "再测一次": "もう一度テスト", "删除": "削除", "删除中…": "削除中…", "删除入口未就绪,请重试或重启应用": "削除の入口が準備できていません。再試行するか、アプリを再起動してください", "删除全部未挂载映射": "未接続のマッピングをすべて削除", "删除映射": "マッピングを削除", "删除映射 {alias}": "マッピング {alias} を削除", "删除未挂载的映射": "未接続のマッピングを削除", "删除自定义提供商": "カスタムプロバイダーを削除", "删除规则 {n}": "ルール {n} を削除", "删除这个自定义提供商(连同名下账号)": "このカスタムプロバイダーを削除(配下のアカウントも含む)", "删除这条映射": "このマッピングを削除", "删除选中的模型": "選択したモデルを削除", "刷新全部家(逐家打上游)": "すべてのプロバイダーを更新(各家ごとにアップストリームへ 1 回)", "刷新完成,但没有得到任何结果": "更新は完了しましたが、結果が得られませんでした", "刷新模型管理页里各提供商的远程模型目录,逐家结果列在弹窗里": "モデル管理ページの各プロバイダーのリモートモデルディレクトリを更新し、プロバイダーごとの結果をダイアログに一覧表示します", "刷新清单": "カタログを更新", "加载中…": "読み込み中…", "勾上它,导入后即进入这家的清单": "チェックを入れると、インポート後にこのプロバイダーのカタログに入ります", "勾几个就并行测几次;默认选队列里最靠前的一个。": "チェックした数だけ並行してテストします;デフォルトではキューの先頭の 1 つを選択します。", "勾选后可批量操作": "チェックすると一括操作ができます", "压缩模型": "圧縮用モデル", "压缩路由": "圧縮ルーティング", "压缩路由入口尚未就绪,请刷新页面后重试": "圧縮ルーティングの準備ができていません。ページを更新して再試行してください。", "压缩路由已保存,下次压缩请求生效": "圧縮ルーティングを保存しました。次の圧縮リクエストから適用されます。", "压缩路由接口返回了不完整的数据": "圧縮ルーティング API から不完全なデータが返されました。", "原始 ID 已作为默认绑定,请直接使用该绑定的开关或等级按钮": "元の ID はすでにデフォルトバインディングになっています。そのバインディングのスイッチまたはレベルボタンを直接使用してください", "原始 ID 的默认绑定不能删除,请关闭它的开关": "元の ID のデフォルトバインドは削除できません。スイッチを無効にしてください。", "取消": "キャンセル", "另有 {n} 个非手动登记的模型将被跳过。": "ほかに手動登録でない {n} 個のモデルがスキップされます。", "另有 {n} 条别名映射({aliases}),别名不参与本次": "ほかに {n} 件のエイリアスマッピング({aliases})がありますが、エイリアスは今回は対象外です", "只刷新这一家的模型清单": "このプロバイダーのモデル一覧だけを更新", "只在识别到 ZCode 上下文压缩请求时切换模型,普通对话仍使用原模型。": "ZCode のコンテキスト圧縮リクエストを識別した場合のみモデルを切り替えます。通常の会話では元のモデルを使用します。", "只属于这一家": "このプロバイダーだけに属します", "可删除 {n} 个(手动登记 / 自定义家);": "削除可能 {n} 個(手動登録 / カスタムプロバイダー);", "可见": "表示", "可见性": "表示状態", "可配思考档位": "設定可能な思考レベル", "同一客户端的来源模型不能重复:{model}": "同じクライアントで元のモデルを重複指定できません:{model}", "同一条错误出现在所有账号上": "同じエラーがすべてのアカウントで発生する", "后端桥不可用": "バックエンドブリッジが利用できません", "启用压缩路由": "圧縮ルーティングを有効化", "启用后将自动关闭该提供商的其他同名绑定:{bindings}": "有効にすると、このプロバイダーの同名の他のバインドが自動的に無効になります:{bindings}", "启用规则 {n}": "ルール {n} を有効化", "回复": "応答", "固定思考档位": "固定思考レベル", "固定思考档位:{level}": "固定思考レベル:{level}", "图片": "画像", "图片生成": "画像生成", "图片生成模型请通过 /v1/images/generations 调用,暂不支持对话测试": "画像モデルは /v1/images/generations で呼び出してください。チャットテストにはまだ対応していません", "图片编辑": "画像編集", "图片识别": "画像認識", "圆点带内侧描边 = 由 models.dev 补齐;右上角小点 = 你手动覆盖过;虚线圈 = 未声明。悬停某一枚可看逐项出处。": "ドットの内側の輪 = models.dev による補完;右上の小点 = 手動で上書き済み;破線の輪 = 未宣言。ドットにカーソルを合わせると項目ごとの出典が見られます。", "在 ": "「", "填上游真正认识的那个模型 ID(不是给下游用的名字)。登记后它会进入该家的模型清单: 表格里出现这一行、": "アップストリームが実際に認識するモデル ID(ダウンストリームで使う名前ではありません)を入力してください。登録するとこのプロバイダーのモデルカタログに入ります: テーブルにこの行が現れ、", "复制": "コピー", "多半是上游自己的问题,过一会儿再试。同一个错误出现在所有账号上时,先查模型目录与映射。": "多くの場合アップストリーム側の問題です。しばらくしてから再試行してください。同じエラーがすべてのアカウントで発生する場合は、まずモデルディレクトリとマッピングを確認してください。", "失败": "失敗", "失败 {n} 个 · 首个失败:{error}": "失敗 {n} 個 · 最初の失敗:{error}", "如果 ZCode 已设置压缩路由,网关看到的是它改写后的模型。建议同一套规则只在一处配置。": "ZCode 側で圧縮ルーティングを設定済みの場合、ゲートウェイには変更後のモデルが届きます。同じルールは一か所だけで設定することを推奨します。", "完成": "完了", "官方客户端会展示这个模型": "公式クライアントはこのモデルを表示します", "对下游声明的能力(工具调用 / 图片识别 / 视频识别 / 支持思考)—— 点击修改": "ダウンストリームへ宣言する能力(ツール呼び出し / 画像認識 / 動画認識 / 思考対応)—— クリックして変更", "对外名可以是中文、字母、数字与 ": "公開名には中国語、英字、数字、および ", "对外名可自由命名,允许与上游模型 ID 同名(同名时该上游的原生路由优先,映射作兜底); 支持字母、数字与 ": "外部公開名は自由に命名でき、アップストリームモデル ID と同じ名前でもかまいません(同名の場合はそのアップストリームのネイティブルートが優先され、マッピングはフォールバックになります); 使用できる文字は英字、数字と ", "对外映射名(下游请求时用)": "外部公開マッピング名(ダウンストリームのリクエストで使用)", "对话协议": "対話プロトコル", "对话协议的说明": "対話プロトコルの説明", "对选中的 {n} 个模型执行批量操作": "選択した {n} 個のモデルに一括操作を実行", "导入失败:{message}": "インポートに失敗:{message}", "导入选中的 {n} 个模型": "選択した {n} 個のモデルをインポート", "将作用于以下模型": "以下のモデルに適用されます", "尚未获取": "未取得", "尚未配置压缩规则,默认使用原模型。": "圧縮ルールは未設定です。既定では元のモデルを使用します。", "尝试 {n} 次": "試行 {n} 回", "展开其余 {n} 个模型 ▾": "残り {n} 個のモデルを展開 ▾", "工具": "ツール", "工具调用": "ツール呼び出し", "已中止在途测试({n} 个账号)": "実行中のテストを中止しました({n} 件のアカウント)", "已删除 {n} 条未挂载映射": "未接続のマッピング {n} 件を削除しました", "已刷新": "更新済み", "已启用": "有効", "已启用 {name},其他同名绑定已自动关闭": "{name} を有効にしました。同名の他のバインドは自動的に無効になりました。", "已填写:对下游声明 {value}": "入力済み:ダウンストリームへ {value} を宣言", "已添加": "追加済み", "已等待 {seconds}s": "経過 {seconds}s", "已覆盖上游值": "アップストリーム値を上書き済み", "已覆盖:对下游声明 {value}": "上書き済み:ダウンストリームへ {value} を宣言", "已选 ": "選択済み ", "已选 {picked} 个 · 上游共 {upstream} 个 · 清单已有 {managed} 个": "選択済み {picked} 個 · アップストリーム合計 {upstream} 個 · カタログ登録済み {managed} 個", "开始测试": "テストを開始", "当前环境不支持代理池": "現在の環境はプロキシプールに対応していません", "当前环境不支持读取 API Key": "現在の環境では API Key を読み込めません", "当前通道未声明可用档位,映射等级不会注入;请先获取模型目录。": "この経路は利用可能なレベルを宣言していません。マッピングのレベルは注入されません。先にモデルカタログを取得してください。", "待获取": "取得待ち", "思考": "思考", "思考等级": "思考レベル", "思考等级 {level}": "思考レベル {level}", "思考等级 {level}(点击修改)": "思考レベル {level}(クリックして変更)", "思考等级的注入规则": "思考レベルの注入ルール", "思考过程({n} 字)": "思考プロセス({n} 文字)", "恢复继承": "継承を復元", "成功 {ok} 个,失败 {failed} 个": "成功 {ok} 個、失敗 {failed} 個", "所选 API Key 无权调用此模型或提供商": "選択した API Key にはこのモデルまたはプロバイダーを利用する権限がありません", "所选模型含同一提供商的同名绑定「{id}」,请分别启用,避免相互关闭": "選択したモデルには同一プロバイダーの同名バインド「{id}」があります。互いに無効にならないよう、個別に有効にしてください。", "所选模型没有共同可用档位,请分别设置或清除绑定。": "選択したモデルに共通の対応レベルがありません。個別に設定するか、バインドを解除してください。", "手动": "手動", "手动登记": "手動登録", "手动登记的上游模型;移除它会直接删掉这条登记": "手動登録されたアップストリームモデル;削除するとこの登録が直接削除されます", "执行{action}": "「{action}」を実行", "批量{action}完成:成功 {ok} 个,失败 {failed} 个": "一括操作「{action}」が完了:成功 {ok} 個、失敗 {failed} 個", "批量操作": "一括操作", "批量操作 · 已选 {n} 个模型": "一括操作 · 選択済み {n} 個のモデル", "按倍率升序排列": "倍率の昇順で並べ替え", "按倍率排序": "倍率で並べ替え", "按可见性筛选": "表示状態で絞り込む", "按客户端发送的模型 ID 匹配,支持模型别名和对话路由组;每次只映射一次。": "クライアントが送信したモデル ID で照合します。モデルの別名と会話ルーティンググループに対応し、各リクエストのマッピングは1回のみです。", "按所选网关对话协议组装请求并校验响应转换(Chat Completions / Responses / Anthropic Messages)。": "選択したゲートウェイ対話プロトコルでリクエストを組み立て、レスポンス変換を検証します(Chat Completions / Responses / Anthropic Messages)。", "按提供商分组排序,已启用模型优先;未知倍率排在末尾": "プロバイダーごとに並べ替え、有効なモデルを優先。倍率が不明なモデルは末尾に表示", "按提供商选择": "プロバイダーで選択", "按状态筛选": "ステータスで絞り込み", "提供商": "プロバイダー", "搜索模型": "モデルを検索", "搜索模型 ID / 名称 / 映射名…": "モデル ID / 名前 / マッピング名を検索…", "搜索模型 ID / 提供商": "モデル ID / プロバイダーを検索", "搜索模型 ID…": "モデル ID を検索…", "搜索账号…": "アカウントを検索…", "操作": "操作", "支持": "対応", "支持思考": "思考対応", "收起 ▴": "折りたたむ ▴", "放弃尚未保存的压缩路由修改?": "未保存の圧縮ルーティングの変更を破棄しますか?", "数字带虚线底 = 由 models.dev 补齐;右上角小点 = 你手动覆盖过;— = 未声明。点任意一格可改。": "数字の点線下線 = models.dev による補完;右上の小点 = 手動で上書き済み;— = 未宣言。どのセルもクリックで変更できます。", "新建一个自定义提供商(同时创建它的第一个账号)": "新しいカスタムプロバイダーを作成(同時に最初のアカウントも作成)", "映射、思考等级、上下文窗口与工具调用能力在桌面端「模型管理」里改;手机端只做启停。": "マッピング、推論レベル、コンテキストウィンドウ、ツール呼び出し能力はデスクトップの「モデル管理」で変更します。モバイルでは有効/無効の切り替えのみです。", "映射「{alias} → {target}」不存在": "マッピング「{alias} → {target}」が存在しません", "映射上未绑定思考等级,「跟随映射」等于这次不注入": "マッピングに思考レベルがバインドされていないため、「マッピングに従う」は今回は注入なしになります", "映射已关闭": "マッピングはオフです", "映射已关闭,点击启用": "マッピングはオフです。クリックで有効化", "映射已删除": "マッピングを削除しました", "映射已启用": "マッピングはオンです", "映射已启用,其他同名绑定已自动关闭": "マッピングを有効にしました。同名の他のバインドは自動的に無効になりました。", "映射已启用,点击关闭": "マッピングはオンです。クリックでオフ", "映射已绑定思考等级 {level},可用时会优先覆盖本次指定的等级": "このマッピングには思考レベル {level} が設定されており、対応している場合は今回指定したレベルより優先されます", "暂无模型(请先添加账号)": "モデルがありません(先にアカウントを追加してください)", "更新日期": "更新日", "最多可添加 {n} 条压缩规则": "圧縮ルールは最大 {n} 件まで追加できます。", "最大输出 Token": "最大出力 Token", "有映射": "マッピングあり", "未填写": "未入力", "未填写(下游按未声明处理)": "未入力(ダウンストリームでは未宣言として処理)", "未声明": "未宣言", "未挂载映射:已删除 {removed} 条,失败 {failed} 条。首个失败:{error}": "未接続のマッピング:{removed} 件を削除、{failed} 件は失敗しました。最初のエラー:{error}", "未挂载的模型映射": "未接続のモデルマッピング", "未接入": "未接続", "未添加": "未追加", "未知": "不明", "本机网关没有返回结论": "ローカルゲートウェイが結論を返しませんでした", "本次没有取到新内容": "今回は新しい内容を取得できませんでした", "本次测试的发送口径": "今回のテストの送信仕様", "来源": "ソース", "来源未知": "ソース不明", "来源模型": "元のモデル", "来源模型和压缩模型不能相同": "元のモデルと圧縮用モデルには異なるモデルを指定してください。", "来自上游目录接口,清单拉取于 {at};刷新失败时保留上一份成功结果": "アップストリームのディレクトリ API 由来、カタログの取得日時は {at};更新に失敗した場合は前回成功した結果を保持します", "来自上游目录接口;刷新失败时保留上一份成功结果": "アップストリームのディレクトリ API 由来;更新に失敗した場合は前回成功した結果を保持します", "桥接调用返回空(本机网关没有响应这次测试)": "ブリッジ呼び出しが空を返しました(ローカルゲートウェイがこのテストに応答しませんでした)", "模型 ID「{id}」在该提供商已有启用绑定,请先关闭它再添加": "このプロバイダーにはモデル ID「{id}」の有効なバインドがあります。無効にしてから追加してください。", "模型 ID「{id}」已存在,请使用已有模型": "モデル ID「{id}」は既に存在します。既存のモデルを使用してください。", "模型 ID「{id}」已绑定到此上游模型,请直接使用已有绑定": "モデル ID「{id}」はこのアップストリームモデルに既にバインドされています。既存のバインドを使用してください。", "模型「{name}」已存在(忽略大小写判重)": "モデル「{name}」はすでに存在します(大文字小文字を無視して重複判定)", "模型已移除": "モデルを削除しました", "模型数": "モデル数", "模型映射": "モデルマッピング", "模型来源": "モデルのソース", "模型清单为空:已有可用账号,请点「获取模型」拉取目录": "モデルカタログが空です。利用可能なアカウントはあります。「モデルを取得」をクリックしてカタログを取得してください。", "模型清单已刷新": "モデルカタログを更新しました", "模型目录刷新不可用,请重新打开面板": "モデルカタログの更新を利用できません。パネルを開き直してください。", "模型目录刷新结果": "モデルカタログの更新結果", "模型管理表": "モデル管理テーブル", "模型能力": "モデル能力", "模型获取失败": "モデルの取得に失敗", "正在刷新…": "更新中…", "正在测 ": "テスト中 ", "正在获取…": "取得中…", "正在读取压缩路由…": "圧縮ルーティングを読み込み中…", "每条映射 = 对外名 → 上游模型;原始 ID 与别名有独立开关,默认绑定永远存在(没有映射时是合成的那条)。": "各マッピング = 外部公開名 → アップストリームモデル;元の ID とエイリアスにはそれぞれ独立したスイッチがあり、デフォルトバインディングは常に存在します(マッピングがない場合は合成された 1 件です)。", "没有匹配「{keyword}」的模型": "「{keyword}」に一致するモデルはありません", "没有匹配当前筛选的模型": "現在の絞り込みに一致するモデルはありません", "没有匹配的模型": "一致するモデルがありません", "没有可选的对话模型,请先启用模型和对应账号。": "選択できる会話モデルがありません。まずモデルと対応するアカウントを有効にしてください。", "没有选中任何模型": "モデルが 1 つも選択されていません", "没有选中的模型": "選択されたモデルがありません", "流式请求": "ストリーミングリクエスト", "流式请求的说明": "ストリーミングリクエストの説明", "测试": "テスト", "测试未通过": "テストに失敗しました", "测试模型": "モデルをテスト", "测试结果": "テスト結果", "测试节点": "テストノード", "测试节点的说明": "テストノードの説明", "测试账号": "テストアカウント", "测试账号的说明": "テストアカウントの説明", "添加模型映射": "モデルマッピングを追加", "添加自定义模型": "カスタムモデルを追加", "清空": "クリア", "清除覆盖,回到上游声明值": "上書きを解除してアップストリームの宣言値に戻す", "清除这一项(回到未声明)": "この項目をクリア(未宣言に戻す)", "清除(不覆盖)": "クリア(上書きしない)", "点击复制:{name}": "クリックでコピー:{name}", "点右侧「获取模型」从上游拉取这家的模型清单": "右側の「モデルを取得」をクリックして、このプロバイダーのモデルカタログをアップストリームから取得します", "用哪个账号去拉这家的模型清单": "このプロバイダーのモデルカタログを取得するアカウント", "用户提示词": "ユーザープロンプト", "用户登记的自定义模型;整份清单只属于这一家": "ユーザーが登録したカスタムモデル。リスト全体がこのプロバイダー専用です", "用时 {time}": "所要時間 {time}", "用时 {time} · 首字 {ttfb}": "所要時間 {time} · 初回トークン {ttfb}", "留空则不携带;设置页的提示词模式照常生效": "空欄の場合は送信しません;設定ページのプロンプトモードは通常どおり有効です", "留空用默认问候「你好」": "空欄の場合はデフォルトの挨拶「你好」を使用", "的模型合集:每家的清单互相独立,别名也只在自己那家内生效;要改名称 / 协议 / Base URL,到账号页该家账号的「设置」→ 提供商一栏。": " のモデル集合です:各社のリストは互いに独立し、別名も自社内でのみ有効。名称 / プロトコル / Base URL の変更はアカウントページの該当アカウント「設定」→ プロバイダー欄で行います。", "目录模块未就绪": "ディレクトリモジュールが準備できていません", "目标使用自身的思考设置或默认值,仍受网关 Key 权限限制;不可用时明确报错,不自动退回原模型。": "転送先独自の思考設定または既定値を使用し、ゲートウェイキーの権限制限も適用されます。利用できない場合はエラーを返し、元のモデルへ自動で戻しません。", "目标已下线": "対象は提供終了", "直接移除": "直接削除", "直连(不使用代理)": "直接接続(プロキシなし)", "看的能力声明(": "に見せる能力宣言です(", "真实链路 · 消耗少量额度 · 日志带「测试」标记,不计报表": "実際の経路 · クォータを少量消費 · ログに「テスト」マークが付き、レポートには計上されません", "确定删除映射「{alias} → {target}」?": "マッピング「{alias} → {target}」を削除してもよろしいですか?", "确定删除映射「{alias} → {target}」?它指向的上游模型已不在清单里。": "マッピング「{alias} → {target}」を削除しますか? 参照先の上流モデルはカタログに存在しません。", "确定删除映射「{alias} → {target}」?它指向的上游模型已不在清单里。": "マッピング「{alias} → {target}」を削除しますか? 参照先の上流モデルはカタログに存在しません。", "确定删除此区域列出的全部 {n} 条未挂载映射?此操作不可撤销,不会删除正常挂载的映射或模型。": "この領域に表示されている未接続のマッピング {n} 件をすべて削除しますか?この操作は取り消せません。正常に接続されているマッピングやモデルは削除されません。", "确定删除选中的 {count} 个模型登记?删除后 /v1/models 不再广告它们、请求也会被拒。": "選択した {count} 件のモデル登録を削除してもよろしいですか?削除後は /v1/models がそれらを広告しなくなり、リクエストも拒否されます。", "确定移除自定义模型「{id}」?这条登记会被直接移除,之后 /v1/models 不再广告它、请求它也会被拒。": "カスタムモデル「{id}」を削除してもよろしいですか?この登録は直接削除され、以降 /v1/models はそれを広告しなくなり、リクエストも拒否されます。", "确认桌面端还在运行,再重试一次。": "デスクトップアプリがまだ実行中であることを確認して、もう一度再試行してください。", "确认选择": "選択を確定", "社区参考档位,不代表当前上游通道支持;实际以该通道目录为准。": "コミュニティの参考レベルはこの上流経路の対応を保証しません。実際の経路のカタログを優先します。", "社区参考档位:{levels}": "コミュニティの参考レベル:{levels}", "移除": "削除", "移除自定义模型": "カスタムモデルを削除", "系统提示词": "システムプロンプト", "绑定 {requested},按当前通道将发送 {effective}。": "{requested} をバインドしています。この経路では {effective} を送信します。", "绑定在「对外名 → 上游模型」这一条映射上的思考等级(列表照抄 OmniProxy 的手动绑定),选「不覆盖」表示不给这条映射指定等级。它会跟着这条映射注入转发,由承载的那家翻译成自己的档位字段(CatPaw 归并成 low/high/max,Qoder 按模型声明的档位归一)。以下几种情况故意不注入:① off / none(关闭思考)—— 本项目没有安全的表达方式;② 表外的自定义等级(各家能力范围不同,无法判断上游收不收);③ 客户端请求体里已经自己指定了档位(那是更明确的意图,绑定不覆盖);④ 这家上游不认识档位字段(如 WorkBuddy / 小浣熊 / AutoClaw / Cline)。注入与跳过都会写进详细日志。": "「外部公開名 → アップストリームモデル」のこのマッピングにバインドされた思考レベルです(リストは OmniProxy の手動バインディングをそのまま踏襲)。「上書きしない」を選ぶと、このマッピングにレベルを指定しないことを意味します。レベルはこのマッピングに従って転送時に注入され、受け持つプロバイダーが自分のレベルフィールドに変換します(CatPaw は low/high/max に統合し、Qoder はモデルが宣言したレベルに正規化)。次の場合は意図的に注入しません:① off / none(思考オフ)—— 本プロジェクトには安全な表現方法がありません;② 表にないカスタムレベル(プロバイダーごとに対応範囲が異なり、アップストリームが受け取るか判断できません);③ クライアントのリクエストボディですでにレベルが指定されている(そちらの意図がより明確なため、バインディングでは上書きしません);④ このプロバイダーのアップストリームがレベルフィールドを認識しない(WorkBuddy / 小浣熊 / AutoClaw / Cline など)。注入とスキップはどちらも詳細ログに記録されます。", "继承上游": "上流を継承", "继承上游 {value}": "上流を継承 {value}", "继承上游:{value}": "上流を継承:{value}", "网关未返回保存后的提供商记录": "ゲートウェイから保存後のプロバイダーレコードが返されませんでした。", "网关未返回逐家模型目录刷新结果": "ゲートウェイからプロバイダー別のモデルカタログ更新結果が返されませんでした", "能力": "能力", "自定义 · 全部": "カスタム · すべて", "自定义家": "カスタムプロバイダー", "自定义提供商": "カスタムプロバイダー", "自定义提供商的清单": "カスタムプロバイダーのカタログ", "自定义提供商还没有模型:先在左栏选一家,点「添加模型」登记,或「获取上游模型」从上游拉取": "このカスタムプロバイダーにはまだモデルがありません:左の欄でプロバイダーを選び、「モデルを追加」で登録するか、「上流モデルを取得」で取得してください", "自定义模型已移除": "カスタムモデルを削除しました", "自定义等级": "カスタムレベル", "自定义等级…": "カスタムレベル…", "自定义等级(例如 custom-high)": "カスタムレベル(例:custom-high)", "至少选一个测试账号": "テストアカウントを 1 つ以上選択してください", "节点 {proxy}": "ノード {proxy}", "获取": "取得", "获取中…": "取得中…", "获取失败:{message}": "取得に失敗:{message}", "获取模型": "モデルを取得", "获取模型 — {name}": "モデルを取得 — {name}", "规则 {n}": "ルール {n}", "规则不绑定提供商,压缩模型由其路由配置决定使用哪家提供商。": "ルールはプロバイダーに紐づきません。使用するプロバイダーは、圧縮用モデルのルーティング設定で決まります。", "视频": "動画", "视频识别": "動画認識", "设置 / 清除会应用到选中模型的": "設定 / クリアは選択したモデルの", "设置思考等级": "思考レベルを設定", "设置思考等级后,会覆盖下游请求中的等级;选择“不覆盖”则保留下游参数。实际档位以提供商支持范围为准,无法注入时保留原请求并记录原因。off / none 仍不由映射注入。": "思考レベルを設定すると、クライアントのリクエストで指定されたレベルを上書きします。「上書きしない」を選ぶとクライアントのパラメーターを保持します。実際のレベルはプロバイダーの対応範囲に従います。適用できない場合は元のリクエストを保持し、理由をログに記録します。off / none は引き続きマッピングから注入しません。", "设置思考等级(当前未绑定)": "思考レベルを設定(現在未バインド)", "该提供商已不存在(可能已被删除),请刷新列表": "このプロバイダーは存在しません(すでに削除された可能性があります)。リストを更新してください", "该提供商当前没有可选的上游模型": "このプロバイダーには現在選択できるアップストリームモデルがありません", "该提供商没有可用账号(要在账号页启用一个、且凭证完整),一行都发不出去": "このプロバイダーには利用可能なアカウントがありません(アカウントページで 1 つ有効化し、認証情報を揃える必要があります)。1 行も送信できません", "该提供商的清单里没有模型「{name}」": "このプロバイダーのカタログにモデル「{name}」がありません", "该等级无法注入,请选择上游可用档位或清除绑定。": "このレベルは注入できません。上流の対応レベルを選ぶか、バインドを解除してください。", "该行当前未启用:测试照常按本名直发(「先测通、再决定要不要启用」正是这颗按钮的用法),但本行的思考等级绑定不参与本次,生产路由也要等绑定打开后才会放行": "この行は現在未有効です:テストは通常どおり本来の名前でそのまま送信されます(「まず疎通を確認し、それから有効化するか決める」というのがこのボタンの使い方です)が、この行の思考レベルバインディングは今回は適用されず、本番ルーティングもバインディングをオンにするまで通りません", "该账号对这个模型正在限额冷却,等一会儿自己会好;也可以先测别的账号。": "このアカウントはこのモデルに対してレート制限のクールダウン中です。しばらくすれば自然に回復します;先に別のアカウントをテストしてもかまいません。", "说明": "説明", "请先选择一把 API Key": "先に API Key を選択してください", "请填写上游模型 ID": "アップストリームモデル ID を入力してください", "请填写对外映射名": "外部公開マッピング名を入力してください", "请填写模型 ID": "モデル ID を入力してください", "请填写自定义思考等级,或改选候选档 / 「清除」": "カスタム思考レベルを入力するか、候補レベル / 「クリア」を選び直してください", "请完整选择来源模型和压缩模型": "元のモデルと圧縮用モデルの両方を選択してください。", "请选择受支持的客户端": "対応するクライアントを選択してください。", "请选择提供商": "プロバイダーを選択してください", "读取模型清单失败:{message}": "モデルカタログの読み取りに失敗:{message}", "账号 ": "アカウント ", "跟随映射(当前 {level})": "マッピングに従う(現在 {level})", "跟随映射(未绑定等级)": "マッピングに従う(レベル未バインド)", "跟随映射(该行未启用,本次不注入)": "マッピングに従う(この行は未有効のため、今回は注入しません)", "跟随账号配置": "アカウント設定に従う", "跳过": "スキップ", "转发到上游模型": "アップストリームモデルへ転送", "还没有可刷新的提供商:先在账号页添加一个账号": "更新できるプロバイダーがありません:先にアカウントページでアカウントを追加してください", "还没有自定义提供商": "カスタムプロバイダーはまだありません", "这一行已不在当前清单里(模型被移除、或目录刷新后上游不再提供它)。关闭后刷新列表再试。": "この行は現在のカタログに存在しません(モデルが削除されたか、ディレクトリ更新後にアップストリームが提供しなくなったためです)。閉じてからリストを更新して再試行してください。", "这个模型仍在承载它的提供商清单里,但那一家的模型行当前没有出现(例如该家没有可用账号)": "このモデルは提供元プロバイダーのカタログにはまだありますが、そのプロバイダーの行が今は表示されていません(例:利用可能なアカウントがない)。", "这个模型在官方客户端里是否会被展列;不展示的那些默认已关闭(含默认绑定)": "このモデルが公式クライアントに表示されるかどうか。非表示のものは既定で無効化されています(既定バインディングを含む)", "这个模型已经在这家的清单里,不重复导入": "このモデルはすでにこのプロバイダーのカタログにあるため、重複インポートしません", "这个模型的图片能力(图片生成 / 图片编辑)—— 点击修改": "このモデルの画像機能(画像生成 / 画像編集)—— クリックで変更", "这些映射指向的上游模型已不在当前清单里,挂不到任何模型行上:它们不会出现在 /v1/models,用对应别名发请求也会失败。删除后该对外名即可重新使用。": "これらのマッピングが指す上流モデルは現在のカタログに存在しないため、どのモデル行にも紐付きません。「/v1/models」には表示されず、対応するエイリアスでのリクエストも失敗します。削除すると、その公開名を再利用できるようになります。", "这些映射指向的上游模型已不在当前清单里,用对应别名发请求会失败。可以在这里删除,删掉后该对外名即可重新使用。": "これらのマッピングが指す上流モデルは現在のカタログにありません。対応するエイリアスでのリクエストは失敗します。ここで削除すると、その公開名を再利用できます。", "这几项是给": "これらの項目は", "这家提供商没有可见性判据(目前只有 Antigravity / Qoder / 小浣熊 / CodeArts 有)": "このプロバイダーには表示状態の判定規則がありません(現在は Antigravity / Qoder / Raccoon / CodeArts のみ)", "这家有可见性判据,但这一条上游没有表态 —— 按可见处理": "このプロバイダーには表示状態の判定規則がありますが、この項目は上流が表明していません — 表示として扱います", "这家没有可用账号(要在账号页启用一个、且凭证完整)": "このプロバイダーには利用可能なアカウントがありません(アカウントページで 1 つ有効化し、認証情報を揃えてください)", "这家用固定模型清单,无可刷新": "このプロバイダーは固定のモデルカタログを使用しているため、更新できません", "这家的模型清单是全局的,不跟账号走": "このプロバイダーのモデルカタログはグローバルで、アカウントには依存しません", "这家的清单是你自己登记的,不填的项下游按未声明处理。": "このプロバイダーのカタログは自分で登録したものです。未入力の項目はダウンストリームでは未宣言として処理されます。", "这家还没有可用账号,刷新会使用默认登录态": "このプロバイダーにはまだ利用可能なアカウントがありません。更新時はデフォルトのログイン状態を使用します", "这家还没有模型:点「添加模型」登记,或「获取上游模型」从上游拉取": "このプロバイダーにはまだモデルがありません:「モデルを追加」で登録するか、「アップストリームモデルを取得」でアップストリームから取得してください", "这是模型自己能配的档位(来自上游目录),只读;要改某一档请到映射弹窗里选。": "これはモデル自身が設定できるレベルです(アップストリームディレクトリ由来)。読み取り専用です;特定のレベルを変更するにはマッピングダイアログで選択してください。", "这条登记(不像内置模型那样只是隐藏),因为它的存在完全由这次登记决定。": "することを意味します(内蔵モデルのように非表示にするだけではありません)。その存在はこの登録だけで決まるためです。", "这里是": "ここは ", "远程": "リモート", "远程目录": "リモートディレクトリ", "远程目录已更新,「来源」列会显示为「远程」": "リモートディレクトリが更新されました。「ソース」列は「リモート」と表示されます", "适用客户端": "対象クライアント", "选一个账号(至少一个)": "アカウントを選択(1 つ以上)", "选中的模型都不是手动登记,无法删除(开关映射才是它们的手段)": "選択したモデルはいずれも手動登録ではないため削除できません(マッピングのオン・オフがこれらの手段です)", "选中的都不是手动登记的模型,删除不可用(上游目录带回来的行由清单决定存在性)": "選択したものはいずれも手動登録されたモデルではないため、削除は使用できません(アップストリームディレクトリから取り込んだ行はカタログが存在を決めます)", "重新获取": "再取得", "重新读取会丢弃当前草稿,确定继续?": "再読み込みすると現在の下書きが破棄されます。続行しますか?", "重试": "再試行", "错误详情": "エラー詳細", "默认": "デフォルト", "默认开,与真实请求一致:可同时验证 SSE 链路与首字延迟。": "デフォルトでオン。実際のリクエストと一致するため、SSE 経路と初回トークンまでの遅延を同時に検証できます。", "默认档位:{level}": "既定レベル:{level}", "默认绑定": "デフォルトバインディング", "({label})": "({label})", "({provider})": "({provider})", "(上游这一次返回了空正文)": "(アップストリームは今回、空の本文を返しました)", "(中间共尝试 {n} 次)": "(途中で計 {n} 回試行)", "(已禁用)": "(無効)", "(已被手动覆盖,弹窗里可恢复继承)": "(手動で上書き済み。ダイアログで継承を復元できます)", "(手动设定)": "(手動設定)", "(由 models.dev 补齐)": "(models.dev による補完)", "(登记后即可用这个名字请求)": "(登録すると、この名前でリクエストできるようになります)", "(续)": "(続き)", "(默认 ": "(デフォルト ", "(默认绑定与别名 chips);「清除」= 不给这些映射指定等级(选「不覆盖」的口径与映射弹窗一致)": "(デフォルトバインディングとエイリアス chips)に適用されます;「クリア」= これらのマッピングにレベルを指定しない(「上書きしない」を選んだ場合の扱いはマッピングダイアログと一致)", ")": ")", "),下游按它们决定发不发图片、按多大的窗口堆历史。": ")で、ダウンストリームはこれらに基づいて画像を送るかどうか、どのくらいのウィンドウで履歴を積むかを決めます。", "+ 新建自定义提供商": "+ カスタムプロバイダーを作成", "+ 映射": "+ マッピング", "+ 添加压缩规则": "+ 圧縮ルールを追加", "+ 添加模型": "+ モデルを追加", "+等级": "+レベル", ",与远程目录 / 内置清单区分开。删除自定义模型是": "と表示され、リモートディレクトリや内蔵カタログとは区別されます。カスタムモデルの削除はこの登録を", ",已完成 ": "、完了 ", ",跳过 {n} 个": "、{n} 個をスキップ", ",通常就不是账号问题了:先确认这个模型还在上游目录里(「获取模型」刷一次),再看默认绑定指向的上游模型对不对。": "なら、通常はアカウントの問題ではありません:まずこのモデルがまだアップストリームのディレクトリにあるか確認し(「モデルを取得」で 1 回更新)、次にデフォルトバインディングが指すアップストリームモデルが正しいか確認してください。", ":": ":", ":这里的模型不会出现在其他家,别名也只在这一家内生效。改名称 / 协议 / Base URL 在账号页该家账号的「设置」→ 提供商一栏;整家不要了,鼠标移到左栏这家上点 × 删除(连同名下账号)。": ":ここのモデルは他のプロバイダーには表示されず、エイリアスもこのプロバイダー内でのみ有効です。名前 / プロトコル / Base URL の変更は、アカウントページのこのプロバイダーのアカウントの「設定」→ プロバイダー欄で行います;プロバイダーを丸ごと不要にした場合は、左カラムのこのプロバイダーにマウスを合わせて × をクリックして削除します(配下のアカウントも含む)。", ";其中 {keys} 由 models.dev 补齐": ";うち {keys} は models.dev による補完", ";首个失败:{error}": ";最初の失敗:{error}", "{account} · 账号设置": "{account} · アカウント設定", "{account} 参与本路由": "{account} をこのルートに含める", "{account} 尝试失败后切换到此账号": "{account} での試行失敗後、このアカウントに切り替えました", "{available} 可用 · {blocked} 跳过": "利用可能 {available} · スキップ {blocked}", "{clients} 的标题请求": "{clients} のタイトルリクエスト", "{client} 的压缩请求": "{client} のコンテキスト圧縮リクエスト", "{models} 看不了图时": "{models} が画像を読めないとき", "{model} 参与本路由": "{model} をこのルートに含める", "{model} 有独立配置": "{model} には独立した設定があります", "{name} · 提供商路由设置": "{name} · プロバイダールーティング設定", "{name} 已{state}": "{name}:{state}", "{name} 的账号顺序已调整": "{name} のアカウント順を変更", "{n} 个候选": "候補 {n} 件", "{n} 个参与账号": "参加アカウント {n} 件", "{n} 个启用且参与的账号": "有効かつ参加中のアカウント {n} 件", "{n} 个提供商": "{n} プロバイダー", "{n} 个模型限流": "{n} モデルがレート制限中", "{n} 个请求": "リクエスト {n} 件", "{n} 个账号 · {on} 启用 · {off} 禁用": "{n} アカウント · 有効 {on} · 無効 {off}", "{n} 个账号已折叠": "{n} アカウントを折りたたみ中", "{n} 个跳过": "スキップ {n} 件", "{n} 在途": "{n} 件処理中", "{n} 处未保存": "{n} 件未保存", "{n} 已完成": "{n} 件完了", "{n} 条": "{n} 件", "{n} 条活跃绑定": "有効な割り当て {n} 件", "{n} 条请求没有会话标识,未计入会话数量。": "{n} 件のリクエストにはセッション識別子がないため、セッション数に含めていません。", "{n} 条账号路径": "アカウント経路 {n} 本", "{n} 次": "{n} 回", "{n} 项参与": "{n} 件が参加中", "{paths} 条路径 · {sessions} 个会话": "{paths} 経路 · {sessions} セッション", "{providers} 个提供商 / {accounts} 个账号": "{providers} プロバイダー / {accounts} アカウント", "{providers} 个提供商 · {accounts} 个参与账号": "{providers} プロバイダー · {accounts} 参加アカウント", "{provider} 参与本路由": "{provider} をこのルートに含める", "{selected} / {total} 个账号参与": "{selected} / {total} アカウントが参加", "{selected} / {total} 个账号启用": "{selected} / {total} アカウントが有効", "{time} 后恢复": "{time} 後に復旧", "一个路由组最多允许 {n} 个成员": "ルートグループには最大 {n} 個のメンバーを追加できます", "一条历史路径": "過去のパス1件", "上游已响应": "上流から応答済み", "上游请求已发出": "上流リクエストを送信済み", "上游调用": "上流呼び出し", "下一条请求": "次のリクエスト", "下一条请求将走": "次のリクエストの送信先", "不参与": "不参加", "不按余额排序": "残高順に並べ替えない", "不按到期排序": "有効期限で並べ替えない", "与账号页共用全局消耗规则": "アカウントページと全体消費ルールを共有", "与账号页共用:{rules}。积分到期等规则直接影响网关实际选路。": "アカウントページと共有:{rules}。クレジット有効期限などのルールはゲートウェイの実際の経路選択に反映されます。", "为什么没有调用": "呼び出されなかった理由", "为什么选择它": "選択された理由", "为压缩请求指定模型": "圧縮リクエスト用モデルを指定", "五分钟没有往来即释放;客户端会话标识优先,内容哈希兜底。": "5 分間通信がないと解除されます。クライアントのセッション識別子を優先し、なければ内容ハッシュを使用します。", "仅保留最后承载信息,尝试明细未记录": "最後に処理したアカウントの情報のみ保存されています。試行詳細は記録されていません", "仅允许指定提供商": "指定したプロバイダーのみ許可", "仅列出真实目录中的对话模型,不自动更改模型映射。": "実際のカタログにある会話モデルのみ表示します。モデルマッピングは変更しません。", "仅加入的参与": "追加したもののみ参加", "仅勾选的参与": "チェックしたもののみ参加", "仅历史": "履歴のみ", "仅在途": "処理中のみ", "仅展示已发生的请求,不表示当前可选": "記録されたリクエストの表示であり、現在選択可能という意味ではありません", "仅影响此路由的后续请求": "このルートへの以降のリクエストにのみ適用", "仅看选中路径": "選択した経路のみ", "仅筛选右侧账号列表,不改变路由配置。": "右側のアカウント一覧だけを絞り込みます。ルーティング設定は変更しません。", "仍保留配置,账号可继续用于其他路由。": "設定は保持され、アカウントは他のルートで引き続き使用できます。", "仍然保存": "このまま保存", "从上到下就是选路顺序": "上から下が選路順です", "从当前视图移除": "現在のビューから除外", "从现有模型中创建独立配置,自动列出提供它的全部提供商;之后的修改只跟随这个模型。": "既存モデルの個別設定を作成します。対応するすべてのプロバイダーが自動表示され、以降の変更はこのモデルだけに適用されます。", "以下 {n} 个账号原本被全局路由排除。确认后会将它们设为禁用,所有路由都不能再选用;原有独立路由的参与名单保留。": "以下の {n} アカウントは全体ルートから除外されていました。変換すると無効になり、すべてのルートで選択されなくなります。個別ルートの参加リストは保持されます。", "优先使用队首账号,不可用时顺延。": "先頭のアカウントを優先し、利用できなければ次へ進みます。", "优先尝试": "優先して試行", "优先级:{rules};前一项相同才比较后一项。": "優先順位:{rules}。前の条件が同じ場合のみ次の条件を比較します。", "会话": "セッション", "会话最长保持六小时无往来;可以随时在会话粘滞中解除。": "通信がない状態で最大 6 時間保持します。「セッション固定」でいつでも解除できます。", "会话来源": "セッションの取得元", "会话标识": "セッション識別子", "会话标识 {id} · 来源 {source}": "セッション {id} · ソース {source}", "会话标识未记录,不将此请求推断为独立会话。": "セッション識別子が記録されていないため、このリクエストを独立したセッションとは推定しません。", "会话活动": "セッションの活動", "会话粘住": "セッション固定に一致", "会话粘滞": "セッション固定", "会话粘滞 {mode}": "セッション固定 {mode}", "会话粘滞改为{value}": "セッション固定を{value}に変更", "位置 = 顺位": "位置 = 優先順位", "作用范围": "適用範囲", "例如:日常省钱": "例:普段使い・節約", "供继承全局的模型使用": "全体設定を継承するモデルに適用", "保存": "保存", "保存中…": "保存中…", "保存仅影响后续选路,历史快照与在途请求不改写。": "保存は以降の経路選択にのみ反映されます。履歴のスナップショットや処理中のリクエストは変更しません。", "保存全局路由": "全体ルーティングを保存", "保存后仅用于后续请求,不改变历史快照或在途请求。": "保存内容は以降のリクエストにのみ適用され、履歴のスナップショットや処理中のリクエストは変更しません。", "保存后只影响后续请求": "保存後は以降のリクエストにのみ反映", "保存后才会影响真实请求": "保存後に実際のリクエストへ反映されます", "保存响应不完整,请刷新当前配置确认结果": "保存の応答が不完全です。現在の設定を再読み込みして結果を確認してください。", "保存当前配置": "現在の設定を保存", "保存模型路由": "モデルのルーティングを保存", "保存的尝试明细中没有这次调用": "保存された試行詳細にこの呼び出しはありません", "保存空路由": "空のルートを保存", "保存规则": "ルールを保存", "保存路由": "ルートを保存", "保存路由后,在客户端填写此模型 ID。密钥使用你自己的网关 Key。": "保存後、このモデル ID と自分のゲートウェイキーをクライアントに設定してください。", "保护设置由所有模型共用;模型独立配置可覆盖参与范围、顺序、策略与粘滞。": "保護設定は全モデルで共通です。モデル個別設定では参加範囲、順序、戦略、セッション固定を上書きできます。", "修改后影响继承全局的模型": "変更はグローバル設定を継承するモデルに影響します", "修改范围以「编辑范围」为准": "変更の適用先は「編集範囲」に従います", "候选": "候補", "候选 {n}": "候補 {n}", "候选 · {name}": "候補 · {name}", "候选与跳过": "候補とスキップ", "候选与跳过清单各最多保存十二项;这里只回放当时保存的快照,不用当前队列重算。": "候補とスキップは各最大12件まで保存されます。ここでは保存済みスナップショットのみを再生し、現在のキューでは再計算しません。", "候选与跳过清单各最多保存十二项;重试和跨账号切换见尝试明细。": "候補とスキップ一覧はそれぞれ最大 12 件保存されます。再試行やアカウント切り替えは試行詳細をご覧ください。", "候选和跳过清单各最多保存十二项,超出部分不绘制。": "候補とスキップ一覧はそれぞれ最大 12 件保存され、それを超える項目は描画されません。", "候选快照中有此账号,但保存的尝试明细未显示它被调用": "このアカウントは候補のスナップショットにありますが、保存された試行詳細に呼び出しの記録はありません", "候选快照仅保存部分记录,未保存的账号无法回放": "候補のスナップショットは一部のみ保存されています。未保存のアカウントは再生できません", "候选筛选": "候補フィルター", "候选规模": "候補の規模", "候选账号": "候補アカウント", "候选顺序": "候補の順序", "停用后保留卡片与账号,方便随时恢复;不会全局禁用提供商。": "停止してもカードとアカウントは残り、いつでも復元できます。プロバイダー全体は無効化されません。", "停用后保留卡片与账号;自动参与不会重新启用明确停用的提供商。": "停止してもカードとアカウントは保持されます。自動参加で明示的に停止したプロバイダーが再有効化されることはありません。", "停用此提供商": "このプロバイダーを停止", "停用路由提供商": "ルーティングプロバイダーを停止", "允许参与的提供商": "参加を許可するプロバイダー", "先处理凭证、限额或参与范围。": "先に認証情報・上限・対象範囲を確認してください。", "先尝试当前路由内的视觉模型,不可用时再按顺序尝试指定模型;指定模型可跨路由池。": "まず現在のルート内の視覚モデルを試し、利用できない場合は指定モデルを順に試します。指定モデルは別のルーティングプールを利用できます。", "先读图再交回": "先に画像を読み取り、次に戻す:", "全局": "グローバル", "全局保护设置": "全体保護設定", "全局修改影响继承它的模型;独立模型配置不变。": "全体設定の変更は継承するモデルに適用され、個別設定のモデルは変わりません。", "全局修改影响继承的设置;模型已独立设置的项目保持不变。": "全体の変更は継承される設定に反映されます。モデルで個別に設定した項目は変わりません。", "全局参与范围": "全体の参加範囲", "全局顺序与账号页联动,修改即时保存。": "全体順序はアカウントページと連動し、変更は即時保存されます。", "全局默认": "全体の既定設定", "全局默认供继承的模型使用;给某个模型单独配置后,它就不再跟随全局。": "グローバル既定は継承するモデルが使います。モデル固有の設定を作ると、そのモデルはグローバルに従わなくなります。", "全部候选": "すべての候補", "全部模型(窗口内没有请求)": "すべてのモデル(期間内にリクエストなし)", "全部禁用": "全アカウントが無効", "全部移出": "すべて除外", "全部移出本路由": "このルートからすべて除外", "全部自动参与": "すべて自動参加", "全部解除": "すべて解除", "全部请求": "すべてのリクエスト", "全部路径": "すべての経路", "共 {n} 个可添加的模型": "追加できるモデルは {n} 件", "共 {n} 条路由回放": "ルーティング再生 {n} 件", "共尝试 {total} 次,保存了 {saved} 条明细": "試行 {total} 回、保存済み明細 {saved} 件", "关联与在途优先": "選択中・処理中を優先表示", "关联请求路径": "関連リクエスト経路", "关闭": "閉じる", "其他候选": "その他の候補", "其他客户端": "その他のクライアント", "其他账号已完成请求,没有继续调用这个候选": "別のアカウントでリクエストが完了したため、この候補は呼び出されませんでした", "内容哈希": "内容ハッシュ", "内容哈希(推断)": "内容ハッシュ(推定)", "内部重试不会增加账号切换节点。": "内部再試行ではアカウント切り替えのノードは増えません。", "决定后续请求用谁、按什么顺序,以及是否沿用会话账号。": "以降のリクエストで使うアカウント、その順序、セッションのアカウントを継続利用するかを設定します。", "冷却中": "クールダウン中", "切换 {n} 次": "切り替え {n} 回", "切换后,原本不在名单内的可用提供商也会参与转发。明确停用的提供商和排除的账号不会恢复。": "切り替えると、以前の一覧にない利用可能なプロバイダーも転送に参加します。明示的に停止したプロバイダーと除外したアカウントは復元されません。", "切换模型后,右侧只展示该模型的提供商与账号路由。": "モデルを切り替えると、右側にはそのモデルのプロバイダーとアカウントの経路だけが表示されます。", "列表内容": "リストの内容", "创建独立配置": "個別設定を作成", "创建草稿": "下書きを作成", "删除后此入口将不再接受请求。不会删除成员模型、提供商或账号。": "削除すると、この入口はリクエストを受け付けなくなります。メンバーのモデル、プロバイダー、アカウントは削除しません。", "删除后这个模型会重新跟随全局配置,已保存的独立设置和当前未保存修改都会被移除。": "削除するとこのモデルは再びグローバル設定に従います。保存済みの独立設定と未保存の変更は削除されます。", "删除独立路由": "個別ルーティングを削除", "删除独立配置": "独立設定を削除", "删除规则": "ルールを削除", "删除路由组": "ルートグループを削除", "刷新请求记录": "リクエスト履歴を更新", "刷新路由": "ルーティングを更新", "刷新预演": "プレビューを更新", "加入": "追加", "加入路由": "ルートに追加", "历史只读,不影响当前配置": "履歴は読み取り専用で、現在の設定には影響しません", "历史只读,当前配置的修改不会改变这条请求的快照。": "履歴は読み取り専用です。現在の設定を変更しても、このリクエストのスナップショットは変わりません。", "历史快照保留了 {shown} / {total} 个候选明细,其余未记录。": "履歴のスナップショットには {total} 件中 {shown} 件の候補詳細が保存されています。残りは未記録です。", "历史承载账号当前不可用": "履歴の処理アカウントは現在利用できません", "历史日期": "履歴の日付", "历史记录": "履歴", "压缩上下文": "コンテキスト圧縮", "压缩模型": "圧縮用モデル", "原因": "理由", "原始报文在请求详情里,这里只看选路过程。": "生のペイロードはリクエスト詳細にあります。ここでは経路選択のみを表示します。", "原模型": "元のモデル", "去账号页添加": "アカウントページで追加", "参与": "参加", "参与当前视图转发": "現在のビューで転送に参加", "参与方式": "参加方法", "参与方式改为{value}": "参加方法を{value}に変更", "参与本路由": "このルートに参加", "参与范围": "参加範囲", "参与范围与顺序独立保存;策略和粘滞可分别继承全局。": "参加範囲と順序は個別に保存されます。戦略とセッション固定はそれぞれ全体設定を継承できます。", "参与账号": "参加アカウント", "参与路由": "ルーティングに参加", "参与路由的账号": "ルーティングに参加するアカウント", "参与转发": "転送に参加", "参与顺序": "参加順", "发生切换": "アカウント切り替えあり", "取消": "キャンセル", "取消勾选只排除当前范围,不会在账号页全局禁用账号。": "チェックを外すとこの範囲からのみ除外されます。アカウントページで全体的に無効化する操作ではありません。", "取消选中": "選択を解除", "只从当前路由移出,保留模型和账号配置;不会改变其他路由。": "現在のルートからのみ除外し、モデルとアカウントの設定は保持します。他のルートは変更しません。", "只从当前路由视图移除,不删除提供商或账号,也不改变其他模型的独立配置。": "現在のルーティングビューからのみ除外します。プロバイダーやアカウントは削除せず、他のモデルの個別設定も変更しません。", "只修改全局参与范围,不改变账号排序、模型开关或模型独立路由;网关 Key 权限与限流仍然生效。": "全体の参加範囲のみを変更します。アカウント順序、モデルの有効・無効、モデルの個別ルーティングは変更せず、ゲートウェイ Key の権限とレート制限も維持されます。", "只列出当前模型已有启用绑定的提供商;这里只设置路由,不新建模型绑定。": "このモデルの有効な紐付けがあるプロバイダーだけを表示します。ここではルーティングのみを設定し、モデルの紐付けは新規作成しません。", "只影响这个路由成员,不改变账号启用状态,也不影响其他模型。新增账号需要手动加入。": "このメンバーだけに適用します。アカウントの有効状態や他のモデルは変更しません。新しいアカウントは手動で追加してください。", "只改写被识别为标题生成的小请求,普通对话不受影响。": "タイトル生成として認識された小さなリクエストだけを書き換えます。通常の会話には影響しません。", "只有加入的提供商参与,新增提供商需要手动加入。": "追加済みのプロバイダーのみ参加します。新規プロバイダーは手動追加が必要です。", "只有勾选的提供商参与;以后新增的提供商需要在这里勾选。": "チェックしたプロバイダーのみ参加します。今後追加されたプロバイダーはここでチェックしてください。", "只有名单内的提供商可以参与;新增提供商不会自动加入。": "一覧内のプロバイダーのみ参加できます。新しいプロバイダーは自動追加されません。", "只看用过这个模型的客户端与账号。点一条看它当时是怎么选的。": "このモデルを使ったクライアントとアカウントのみ。1件開くと当時の選び方がわかります。", "只看这个客户端经过的模型与账号。点一条看它当时是怎么选的。": "このクライアントが通ったモデルとアカウントのみ。1件開くと当時の選び方がわかります。", "只看这个提供商下参与路由的账号。点一条看它当时是怎么选的。": "このプロバイダーで参加しているアカウントのみ。1件開くと当時の選び方がわかります。", "只看这个账号承接的请求。点一条看完整的选路过程。": "このアカウントが担当したリクエストのみ。1件開くと選路の全過程がわかります。", "只看这条路径上的请求。点一条看完整的选路过程。": "このパス上のリクエストのみ。1件開くと選路の全過程がわかります。", "只移出本路由,账号状态和其他路由不变;保存后此入口将没有可用路由。": "このルートからのみ除外します。アカウント状態と他のルートは変わりません。保存後、この入口には利用可能な経路がなくなります。", "只读预演,不会推进轮转;保存后才会影响真实请求。": "読み取り専用のプレビューです。ローテーションは進みません。保存後に実際のリクエストへ反映されます。", "可以保存空路由,但请求会明确失败,不会回退全局。": "空のルートも保存できますが、リクエストは明示的に失敗し、全体設定へは戻りません。", "可以跨提供商、跨模型多选。同一提供商也可以加入不同模型。": "複数のプロバイダーやモデルを選択できます。同じプロバイダーの異なるモデルも追加できます。", "可用候选": "利用可能な候補", "可用待命": "利用可能・待機中", "可用账号按请求轮换;开启会话粘性时同一会话优先留在原账号。": "利用可能なアカウントをリクエストごとに交代させます。セッション固定が有効な場合、同じセッションでは元のアカウントを優先します。", "右侧面板内容": "右パネルの内容", "同一会话优先保持模型与账号,不可用时才顺延。": "同じセッションではモデルとアカウントを優先して維持し、利用できない場合に次へ進みます。", "同一模型,选择不同提供商": "同じモデルでプロバイダーを選択", "同号重试 {n} 次": "同じアカウントで {n} 回再試行", "同账号内部重试": "同じアカウント内の再試行", "后备账号": "予備アカウント", "后过期": "で期限切れ", "否": "いいえ", "启用": "有効", "启用 {provider} 的账号": "{provider} のアカウントを有効化", "启用全部账号": "すべてのアカウントを有効化", "启用当前列表账号": "この一覧のアカウントを有効化", "启用提供商中的第 {rank} 顺位;当前可用候选第 {effective} 顺位。": "有効なプロバイダー内での優先順位は {rank}。現在利用可能な候補内での優先順位は {effective} です。", "启用提供商中的第 {rank} 顺位;当前没有可用候选账号。": "有効なプロバイダー内での優先順位は {rank}。現在利用可能な候補アカウントはありません。", "启用规则": "ルールを有効化", "启用账号 {account}": "アカウント {account} を有効化", "命中 {n} 次": "一致 {n} 回", "命中下面规则的上下文压缩请求,会改用指定的模型压缩一次;账号仍按新模型自己的路由挑。": "下のルールに一致したコンテキスト圧縮リクエストだけ、指定したモデルで一度圧縮します。アカウントは新しいモデル自身のルートで選ばれます。", "命中会话粘性,沿用原账号完成请求": "セッション固定に一致し、元のアカウントでリクエストを完了しました", "命中会话粘滞": "セッション固定に一致", "命中这条规则的压缩请求会改用「压缩模型」重发一次;改写之后按新模型自己的路由挑账号。": "このルールに一致した圧縮リクエストは「圧縮モデル」で一度送り直します。アカウントは新しいモデル自身のルートで選ばれます。", "命中配置": "適用された設定", "响应到达": "応答到着", "响应到达后": "応答到着後", "响应完成": "応答完了", "回放中": "再生中", "回放保持不变": "再生内容は変更しません", "回放步骤": "再生ステップ", "固定这条请求": "このリクエストを固定", "在工作台查看": "ワークスペースで表示", "在途 + 近期": "処理中 + 最近", "在途 {n} / {limit}": "処理中 {n} / {limit}", "在途时长": "処理中の経過時間", "在途请求 / 并发上限": "処理中リクエスト / 同時実行上限", "备选按顺序尝试;一个都不加时,当前路由内找不到视觉模型就停止并说明原因。": "代替モデルは順に試します。1つも追加していない場合、現在のルートに視覚モデルがなければ理由を添えて停止します。", "复制失败,请手动选择并复制": "コピーできませんでした。手動で選択してコピーしてください。", "复制网关地址": "ゲートウェイ URL をコピー", "失败原因未记录": "失敗の理由は記録されていません", "失败后备选": "失敗時の候補", "失败时直接报错": "失敗時はエラーを返す", "失败时退回原模型": "失敗時は元のモデルに戻す", "失败阈值": "失敗しきい値", "完整详情": "すべての詳細", "完整请求详情": "リクエストの全詳細", "完整过程": "全過程", "实时状态暂未更新,当前显示上次读取的结果:{error}": "リアルタイム状態を更新できませんでした。前回取得した結果を表示しています:{error}", "实际尝试失败": "実際の試行失敗", "实际模型": "実際のモデル", "实际请求路径": "実際のリクエスト経路", "实际账号尝试": "実際のアカウント試行", "客户端已取消请求": "クライアントがリクエストをキャンセルしました", "客户端模型 {client} → 实际模型 {model}": "クライアントモデル {client} → 実際のモデル {model}", "客户端请求": "クライアントのリクエスト", "对外模型 ID": "公開モデル ID", "对外模型 ID 已被占用,请换一个名称": "公開モデル ID は使用済みです。別の名前にしてください。", "对外模型 ID 格式不正确": "公開モデル ID の形式が正しくありません", "将禁用当前所选的 {n} 个账号,所有路由都不能再选用它们。此操作立即保存,不会删除账号。": "選択した {n} アカウントを無効にし、すべてのルートで選択されなくなります。変更は即時保存されます。アカウントは削除しません。", "尚未记录承载账号": "処理するアカウントはまだ記録されていません", "尚未读取到有效的积分到期时间": "有効なクレジット有効期限はまだ取得できていません", "尝试 {n}": "試行 {n}", "尝试 {n} · 最终承载": "試行 {n} · 最終担当", "尝试中": "試行中", "尝试失败": "試行失敗", "尝试明细已截断或未记录,画布只展示保存下来的信息。": "試行詳細は一部省略されているか、記録されていません。キャンバスには保存された情報のみ表示します。", "尝试结果": "試行結果", "尝试记录": "試行履歴", "展开其余 {n} 个候选": "残り {n} 件の候補を表示", "展开完整原因": "理由をすべて表示", "工具服务的视觉模型": "ツールサービスの視覚モデル", "左侧修改的是全局默认,不会影响它。": "左側の変更はグローバル既定に対するもので、このモデルには影響しません。", "已保存": "保存しました", "已保存 {n} 个候选": "候補 {n} 件を保存済み", "已保存明细": "保存された詳細", "已停用": "無効", "已停用提供商 · {n}": "停止中のプロバイダー · {n}", "已关闭": "オフ", "已删除独立配置,改为跟随全局": "独立設定を削除し、グローバル設定に従うようにしました", "已启用": "有効", "已启用模拟条件": "シミュレーション条件が有効", "已固定这条请求,新请求不会打断当前查看": "このリクエストは固定されています。新しいリクエストで表示は切り替わりません", "已完成记录": "完了済み記録", "已完成请求时间范围": "完了済みリクエストの時間範囲", "已尝试": "試行済み", "已尝试 · 失败": "試行済み・失敗", "已用时": "経過時間", "已禁用账号": "無効なアカウント", "已禁用账号 · {n}": "無効なアカウント · {n}", "已解除 {n} 条会话粘滞": "セッション固定を {n} 件解除しました", "已记录 {n} 次尝试": "試行 {n} 回を記録", "已跳过": "スキップ済み", "已转换为账号启停,独立路由参与名单保持不变": "アカウントの有効・無効管理に変換しました。個別ルートの参加リストは変更していません。", "平均耗时": "平均所要時間", "并发已满": "同時実行上限に到達", "序号表示先后,不是提供商之间互相转发": "番号は試行順序を表し、プロバイダー間の転送ではありません", "应用到草稿": "下書きに適用", "开始 {start} · 响应 {response} · 结束 {finish}": "開始 {start} · 応答 {response} · 終了 {finish}", "开始于 +{time}": "開始 +{time}", "开始时间": "開始時刻", "当前全局路由使用固定参与名单,新增提供商不会自动加入。": "全体ルーティングは固定の参加一覧を使用しています。新しいプロバイダーは自動追加されません。", "当前可用队首": "現在利用可能な先頭候補", "当前承载": "現在の処理アカウント", "当前有效顺位以路由预演为准,不改变保存的配置优先级。": "現在の有効な順序はルーティングプレビューに従い、保存済みの設定優先順位は変更しません。", "当前档位不保留跨请求粘滞,因此没有活跃绑定。": "現在のモードではリクエスト間の固定を保持しないため、有効な割り当てはありません。", "当前模型": "現在のモデル", "当前模型使用独立顺序,不受全局自动消耗排序影响。删除独立路由后会重新跟随账号页。": "このモデルは個別順序を使用し、全体の自動消費順序には影響されません。個別ルーティングを削除すると、アカウントページに再び連動します。", "当前模型使用独立顺序,不受全局自动消耗排序影响。恢复继承后会重新跟随账号页。": "このモデルは個別順序を使用し、全体の自動消費順序には影響されません。継承に戻すとアカウントページに再び連動します。", "当前模型没有对应的账号,请先添加账号或检查模型绑定。": "このモデルに対応するアカウントがありません。アカウントを追加するか、モデルの紐付けを確認してください。", "当前模型配置独立保存,不影响全局和其他模型。": "このモデルの設定は個別に保存され、全体設定や他のモデルには影響しません。", "当前没有参与账号,保存后这个范围可能无法承载新请求。": "参加アカウントがありません。保存すると、この範囲で新しいリクエストを処理できなくなる場合があります。", "当前没有可沿用的粘滞绑定": "現在利用できるセッション固定なし", "当前空闲": "現在アイドル", "当前绑定:{account},剩余 {time}": "現在の割り当て:{account}、残り {time}", "当前继承全局。改成模型独立配置后,改动只影响这个模型。": "現在はグローバルを継承しています。モデル固有の設定に切り替えると、このモデルだけに反映されます。", "当前继承全局固定名单;新增提供商需手动添加或在全局配置中改为自动参与。": "全体の固定一覧を継承しています。新しいプロバイダーを手動追加するか、全体設定で自動参加に切り替えてください。", "当前继承全局,修改前先切到独立配置": "グローバルを継承中。編集前に独立設定へ切り替えてください", "当前继承全局,切换到独立配置后只修改本模型。": "現在は全体設定を継承しています。個別設定に切り替えると、このモデルのみ変更できます。", "当前网关尚不支持全局账号启停,请更新网关后重新读取。": "このゲートウェイは全体のアカウント管理に未対応です。更新して再読み込みしてください。", "当前范围内没有请求": "現在の範囲にリクエストはありません", "当前范围的提供商都没有账号,先在账号页添加": "この範囲のプロバイダーにはまだアカウントがありません。アカウントページで追加してください。", "当前视图没有活跃会话粘滞": "現在のビューに有効なセッション固定はありません", "当前视图没有路由回放记录": "現在のビューにルーティング再生記録はありません", "当前视图的请求入口": "現在のビューのリクエスト入口", "当前请求": "処理中リクエスト", "当前路由位置": "現在のルーティング位置", "当前路由内的视觉模型": "現在のルート内の視覚モデル", "当前配置": "現在の設定", "当前配置已排除": "現在の設定で除外", "当时": "リクエスト時", "当时可用,当前请求尚未轮到这个账号": "当時は利用可能でしたが、このリクエストではまだこのアカウントの順番に達していません", "当时可选的账号 · {n}": "当時の選択可能アカウント · {n}", "当时状态": "当時の状態", "当时的候选说明": "当時の候補説明", "当时的成员模型": "リクエスト時のメンバーモデル", "当时的选路原因未记录": "当時のルーティング理由は記録されていません", "当时被候选过滤规则跳过": "当時の候補フィルタールールでスキップされました", "当时配置": "リクエスト時の設定", "当时配置与当前配置": "当時の設定と現在の設定", "影响继承全局的模型": "全体設定を継承するモデルに適用", "怎么选账号": "アカウントの選び方", "思考等级 {value}": "推論レベル {value}", "总耗时": "総所要時間", "总计 {n} tokens": "合計 {n} トークン", "恢复": "復元", "恢复全局继承": "全体設定の継承に戻す", "恢复按账号页面的全局优先级选路,解除全局视图的提供商和账号范围限制。模型独立配置不会改变。": "アカウントページの全体優先順位によるルーティングに戻し、全体ビューのプロバイダーとアカウントの範囲制限を解除します。モデルの個別設定は変わりません。", "恢复提供商": "プロバイダーを復元", "恢复路由提供商": "ルーティングプロバイダーを復元", "恢复阈值": "復帰しきい値", "恢复默认路由": "既定のルーティングに戻す", "成功承载": "正常に処理", "成员内轮询": "メンバー内で順番に使用", "成员模型": "メンバーモデル", "所有可用提供商自动参与,新增账号或插件后无需再加路由;明确停用的保持不变。": "利用可能なプロバイダーはすべて自動参加します。アカウントやプラグインを追加してもルート追加は不要です(明示的に無効化したものは除く)。", "所有可用提供商自动参与,新增账号或插件后无需再添加路由。已停用的提供商和已排除的账号保持不变。": "利用可能なすべてのプロバイダーが自動参加します。アカウントやプラグインの追加後にルーティングを追加する必要はありません。停止したプロバイダーと除外したアカウントは維持されます。", "所有可用提供商都已在当前路由中": "利用可能なすべてのプロバイダーが追加済みです", "所有模型共用": "全モデルで共有", "所有模型共用路由策略与保护设置;全局顺序和消耗规则与账号页联动,模型独立配置可明确覆盖顺序。": "すべてのモデルでルーティング戦略と保護設定を共有します。全体順序と消費ルールはアカウントページと連動し、モデルの個別設定で順序を明示的に上書きできます。", "打开完整请求详情": "リクエストの全詳細を開く", "打开该模型配置": "このモデルの設定を開く", "执行耗时": "実行時間", "执行记录": "実行記録", "执行路径": "実行経路", "执行路径按当时快照保留": "実行経路は当時のスナップショットを保持", "批量禁用账号": "アカウントを一括無効化", "承载账号": "処理アカウント", "把不同提供商、不同模型组合成一个入口。客户端使用对外模型 ID 发起请求。": "異なるプロバイダーやモデルを一つの入口にまとめます。クライアントは公開モデル ID でリクエストします。", "把全局配置复制成这个模型的独立配置": "グローバル設定をこのモデル固有の設定として複製", "拖动卡片改顺位,勾选决定参与;这里的位置就是实际选路顺序。": "カードをドラッグして順位を変更、チェックで参加を決定。ここの並びが実際の選路順です。", "拖动或按 Alt + 方向键调整顺序": "ドラッグまたは Alt + 矢印キーで並べ替え", "拖动把手或按 Alt + 方向键调整顺序,更多操作在右侧菜单。": "ハンドルをドラッグするか Alt + 矢印キーで並べ替えます。その他の操作は右側のメニューにあります。", "拖动把手调整顺序,也可以使用右侧上下按钮。": "ハンドルをドラッグするか、右側の上下ボタンで並べ替えます。", "拖动提供商与账号调整顺序,修改即时保存。": "プロバイダーとアカウントをドラッグして並べ替えます。変更は即時保存されます。", "拖动改顺位、勾选决定参与;这里的位置就是实际选路顺序。": "ドラッグで順位変更、チェックで参加を決定。ここの並びが実際の選路順です。", "拖动调整提供商顺序": "ドラッグでプロバイダーを並べ替え", "拖动调整账号顺序": "ドラッグでアカウントを並べ替え", "按客户端类型聚合": "クライアント種類ごとに集計", "按已保存配置": "保存済み設定に基づく", "按当前草稿预演,不发送请求,不消耗额度。": "現在の下書きをプレビューします。リクエスト送信や利用枠の消費はありません。", "按当前视图的顺序参与选路": "現在のビューの順序でルーティングに参加", "按此范围查看配置": "この範囲の設定を開く", "按步骤回放,不重新发送请求": "リクエストを再送せず、ステップごとに再生します", "按请求开始时的顺位": "リクエスト開始時の順位", "按请求模型选择": "リクエストされたモデルで選択", "按路径聚合,会话在列表中展开,不在画布逐条连线。": "経路ごとに集計します。セッションは一覧で表示し、キャンバスに個別の線は描きません。", "排除": "除外", "提供商与账号": "プロバイダーとアカウント", "提供商保持优先顺序,同一提供商的账号轮流承接。": "プロバイダーの優先順位を維持し、同じプロバイダー内のアカウントで交代します。", "提供商参与": "プロバイダー参加", "提供商参与方式": "プロバイダーの参加方式", "提供商参与方式改为{value}": "プロバイダー参加方式を{value}に変更", "提供商参与范围": "プロバイダーの参加範囲", "提供商未参与": "プロバイダー未参加", "提供商未记录": "プロバイダー未記録", "提供商范围": "プロバイダー範囲", "提供商路由设置": "プロバイダールーティング設定", "搜索会话或账号": "セッションやアカウントを検索", "搜索客户端、模型或账号": "クライアント、モデル、アカウントを検索", "搜索提供商或模型": "プロバイダーやモデルを検索", "搜索提供商或账号": "プロバイダーやアカウントを検索", "搜索本页会话或账号": "このページのセッションやアカウントを検索", "搜索模型": "モデルを検索", "搜索模型、账号或会话来源": "モデル、アカウント、セッション元を検索", "搜索模型或请求 ID": "モデルまたはリクエスト ID を検索", "搜索请求、模型或账号": "リクエスト・モデル・アカウントを検索", "搜索路由配置": "ルーティング設定を検索", "撤销修改": "変更を破棄", "撤销草稿": "下書きを破棄", "收起其他候选": "他の候補を閉じる", "改为独立配置": "独立設定に変更", "改为自动参与": "自動参加に切り替え", "改用": "切り替え先", "放到第 {n} 位": "{n} 番目に移動", "放大画布": "拡大", "整次请求改交": "リクエスト全体を次に委ねる:", "文本对话": "テキスト会話", "新增可用提供商会自动参与;这里只需恢复曾明确停用的提供商。": "新しい利用可能なプロバイダーは自動参加します。ここでは明示的に停止したプロバイダーのみ復元します。", "新增提供商自动参与;移出本路由的不会自动加回。": "新しいプロバイダーは自動参加します。このルートから除外したものは自動で戻りません。", "新增模型": "モデルを追加", "新增模型独立路由": "モデルの個別ルーティングを追加", "新增模型独立配置": "モデル固有設定を追加", "新增路由配置": "ルーティング設定を追加", "新建路由组": "ルートグループを新規作成", "新配置 · 保存后生效": "新しい設定 · 保存後に反映", "无可用账号": "利用可能なアカウントなし", "无有效绑定": "有効な割り当てなし", "时间相对请求开始;历史只读,修改当前配置不会改变这条记录。": "時刻はリクエスト開始からの相対値です。履歴は読み取り専用で、現在の設定を変更してもこの記録は変わりません。", "时间相对请求开始;未记录的旧数据不补算。历史只读,修改当前配置不会改变这条记录。": "時刻はリクエスト開始からの相対値です。記録のない旧データは補算しません。履歴は読み取り専用で、現在の設定を変えてもこの記録は変わりません。", "时间相对请求开始;未记录的旧数据不补算。响应到达不等于流式请求结束。": "時刻はリクエスト開始からの相対値です。未記録の過去データは推測で補完しません。応答到着はストリーミングリクエストの終了を意味しません。", "是": "はい", "显示全部": "すべて表示", "显示其他候选": "その他の候補を表示", "显示无账号 ({n})": "アカウントなしを表示 ({n})", "暂停": "一時停止", "暂无可用账号": "利用可能なアカウントなし", "曾被限流的账号暂时排到队尾,三十分钟后或转发成功后恢复。": "レート制限されたアカウントは一時的に最後尾へ移動し、30 分後または転送成功後に復帰します。", "最早到期的剩余积分包:{time}": "残高があるクレジットパックの最も早い有効期限:{time}", "最终承载": "最終処理アカウント", "最终由 {account} 承接": "最終的に {account} が処理", "最近 {n} 分钟": "直近 {n} 分", "最近 {n} 条": "直近 {n} 件", "最近使用:{time}": "最終使用:{time}", "最近完成": "最近完了", "最近没有命中记录": "最近の該当はありません", "最近请求已完成": "最新リクエストは完了済み", "有在途": "処理中あり", "有未保存修改,预演仍按已保存配置。": "未保存の変更があります。プレビューは保存済み設定に基づきます。", "有未保存的修改": "未保存の変更があります", "未保存完整尝试明细,仅显示请求记录中的承载信息。": "試行の詳細は保存されていません。リクエスト記録の処理アカウント情報のみ表示します。", "未保存草稿": "未保存の下書き", "未切换": "切り替えなし", "未参与": "不参加", "未参与提供商 · {n}": "不参加のプロバイダー · {n}", "未参与提供商默认收起;选中历史路径时仍会显示。": "不参加のプロバイダーは既定で折りたたまれますが、関連する履歴経路を選ぶと表示されます。", "未参与本范围": "この範囲には未参加", "未参与本路由": "このルートには不参加", "未发生切换": "切り替えなし", "未记录上游调用": "上流呼び出し未記録", "未识别客户端": "未識別のクライアント", "未调用": "未呼び出し", "未调用不画请求线;模型限流与当前配置分别展示。": "呼び出しがなければリクエスト線は描きません。モデルのレート制限と現在の設定は別々に表示します。", "未调用的候选": "未呼び出しの候補", "未轮到": "順番が来なかった", "未选择客户端": "クライアント未選択", "未选择模型": "モデル未選択", "未配置模型的默认路由": "未設定モデルの既定経路", "本地网关": "ローカルゲートウェイ", "本次尝试失败": "今回の試行は失敗", "本次执行": "今回の実行", "本次状态": "今回の状態", "本次用时": "試行時間", "本次结果": "リクエストの結果", "本次耗时": "今回の所要時間", "本次请求": "今回のリクエスト", "本次请求已完成": "今回のリクエストは完了済み", "本窗口未调用": "この期間に呼び出しなし", "本轮选路预演": "今回のルーティングプレビュー", "来源未记录": "送信元の記録なし", "查看上游错误": "上流エラーを表示", "查看上游错误摘要": "上流エラーの概要を表示", "查看其他 {n} 个候选": "他の候補 {n} 件を表示", "查看实际请求的选路、尝试与结果": "実際のリクエストのルーティング、試行、結果を表示", "查看当前配置": "現在の設定を表示", "查看最后一次尝试": "最後の試行を表示", "查看详情内容": "表示する詳細を選択", "查看配置": "設定を表示", "查看配置详情": "設定の詳細を表示", "标题生成": "タイトル生成", "标题生成路由入口尚未就绪,请刷新页面后重试": "タイトル生成ルートの入口がまだ準備できていません。ページを再読み込みしてからお試しください。", "检测到旧版全局参与设置,请先确认转换,再管理账号启停。": "旧版の全体参加設定が見つかりました。変換を確認してからアカウントの有効・無効を管理してください。", "模型、网关、提供商与账号的可视化选路": "モデル、ゲートウェイ、プロバイダー、アカウント間の可視化ルーティング", "模型未记录": "モデル未記録", "模型独立路由": "モデル専用ルート", "模型独立配置": "モデル個別設定", "模型看不了图片时,按下面的规则交给视觉模型;没配到的模型、以及本来就能看图的,一律原样放行。": "モデルが画像を読めないときは、下のルールに従って視覚モデルに渡します。ここで設定していないモデルと、もともと画像を読めるモデルはそのまま通します。", "模型绑定不可用": "モデルの紐付けを利用不可", "模型路由": "モデルルーティング", "模拟首选失败": "優先候補の失敗をシミュレーション", "正在处理": "処理中", "正在由 {account} 处理": "{account} で処理中", "正在编辑": "編集中", "正在读取会话绑定…": "セッションの割り当てを読み込み中…", "正在读取当前配置": "現在の設定を読み込み中", "正在读取路由…": "ルーティングを読み込み中…", "正在选路,尚未记录上游尝试": "ルーティング中です。上流への試行はまだ記録されていません", "正在预览 {model}": "{model} をプレビュー中", "此为配置顺位,当前没有可用候选账号。": "これは設定上の優先順位です。現在、利用可能な候補アカウントはありません。", "此入口没有参与路由的提供商,保存后请求将明确失败。": "この入口には参加プロバイダーがありません。保存後、リクエストは明示的に失敗します。", "此入口没有参与路由的账号。保存后请求将明确失败,不会回退全局或自动恢复参与名单。": "この入口には参加アカウントがありません。保存後は明示的に失敗し、全体設定への切り替えや参加リストの自動復元は行いません。", "此刻队列": "現在のキュー", "此提供商当前没有可用的模型绑定,配置已保留;在模型管理中恢复绑定后会自动回来。": "このプロバイダーには現在利用可能なモデルの紐付けがありません。設定は保持され、モデル管理で紐付けを復元すると自動的に戻ります。", "此模型限流": "このモデルはレート制限中", "每轮重新选路,不保留跨请求的账号绑定。": "各ターンで再選択し、リクエスト間のアカウント割り当ては保持しません。", "没有保存其他候选信息": "その他の候補情報は保存されていません", "没有保存调用明细": "呼び出し明細が保存されていません", "没有其他候选账号": "他の候補アカウントはありません", "没有匹配的会话": "一致するセッションはありません", "没有匹配的候选": "一致する候補はありません", "没有匹配的提供商或账号": "一致するプロバイダーやアカウントはありません", "没有匹配的记录": "一致する記録はありません", "没有匹配的请求": "一致するリクエストはありません", "没有匹配的路由配置": "一致するルーティング設定はありません", "没有参与路由的账号": "ルーティングに参加するアカウントはありません", "没有可添加的模型": "追加できるモデルはありません", "没有可用提供商,请先添加账号或安装插件。": "利用可能なプロバイダーがありません。先にアカウントを追加するかプラグインをインストールしてください。", "没有可用模型": "利用可能なモデルがありません", "没有可用账号": "利用可能なアカウントがありません", "没有可选的对话模型,请先启用模型和对应账号。": "選択できる会話モデルがありません。まずモデルと対応するアカウントを有効にしてください。", "没有独立配置的模型沿用全局路由。": "個別設定がないモデルは全体ルーティングを使用します。", "没有请求也能配置路由": "リクエストがなくても設定できます", "没有跳过": "スキップなし", "没有需要恢复的提供商": "復元が必要なプロバイダーはありません", "沿用工具服务的视觉模型": "ツールサービスの視覚モデルを使う", "流动:有请求在途": "流動:処理中のリクエストあり", "消耗规则": "消費ルール", "消耗规则已保存,但路由列表刷新失败:{error}": "消費ルールは保存されましたが、ルーティング一覧を更新できませんでした:{error}", "添加到全局路由,新请求将按这里的顺序选择账号。": "全体ルーティングに追加します。新しいリクエストはここで設定した順序でアカウントを選択します。", "添加到固定参与名单;以后新增的提供商仍需手动加入。": "固定の参加一覧に追加します。今後追加するプロバイダーも手動で一覧に追加する必要があります。", "添加参与模型": "参加モデルを追加", "添加规则": "ルールを追加", "添加路由提供商": "ルーティングプロバイダーを追加", "清空选择": "選択をクリア", "清除会话粘滞": "セッション固定を解除", "灰线:历史流量": "灰色:過去の通信", "点击查看这次尝试的结果与原因": "クリックして今回の試行結果と理由を表示", "点击节点查看请求,点击齿轮编辑路由配置。": "ノードでリクエストを表示し、歯車でルーティング設定を編集します。", "点击节点筛选,点击齿轮进入配置": "ノードをクリックで絞り込み、歯車で設定へ", "点击节点,切换到对应请求详情": "ノードをクリックすると、対応するリクエスト詳細に切り替わります", "点客户端看它用过的模型": "クライアントをクリックで使用モデルを表示", "点模型看它的请求": "モデルをクリックでリクエスト表示", "点节点筛选,再点一次取消;点齿轮进入配置": "ノードをクリックで絞り込み、もう一度クリックで解除。歯車で設定へ", "熔断保护": "サーキットブレーカー", "特殊请求路由": "特殊リクエストルーティング", "特殊请求路由 · 只改写模型,不改选账号规则": "特殊リクエストルーティング · モデルのみ書き換え、アカウント選択のルールは変更しません", "独立": "独立", "独立账号顺序": "個別のアカウント順序", "独立路由": "個別ルーティング", "独立路由的账号顺序不受全局消耗规则影响": "個別ルートのアカウント順序は全体の消費ルールの影響を受けません", "独立配置": "個別設定", "画布位置不改变选路优先级": "キャンバス上の位置はルーティングの優先順位を変えません", "真实请求还会考虑当时的会话绑定、并发与限额状态。": "実際のリクエストでは、その時点のセッション固定、同時接続数、利用制限も考慮します。", "确定删除「{model}」的独立路由配置?删除后该模型将使用全局路由。不会删除模型、账号或请求记录。": "「{model}」の個別ルーティング設定を削除しますか?削除後、このモデルは全体ルーティングを使用します。モデル、アカウント、リクエスト記録は削除しません。", "确认转换": "変換を確認", "禁用全部账号": "すべてのアカウントを無効化", "禁用当前列表账号": "この一覧のアカウントを無効化", "禁用账号": "アカウントを無効化", "积分到期:暂无数据": "クレジット期限:データなし", "积分:{time}": "クレジット:{time}", "移出": "削除", "移出本路由": "このルートから除外", "移除此模型的独立路由配置,之后重新继承全局路由。不会删除模型、账号或请求记录。": "このモデルの個別ルーティング設定を削除し、全体設定の継承に戻します。モデル、アカウント、リクエスト記録は削除しません。", "移除路由提供商": "ルーティングプロバイダーを除外", "窗口内无请求": "期間内にリクエストなし", "第 {n} 位": "{n} 番目", "第 {n} 次尝试 · {name}": "試行 {n} 回目 · {name}", "第 {n} 顺位": "優先順位 {n}", "等待回放": "再生待ち", "等待首帧": "最初のバイトを待機", "策略": "戦略", "筛选模型": "モデルで絞り込み", "粘性命中": "固定に一致", "粘性:{mode}": "固定:{mode}", "粘滞": "固定", "粘滞 {mode}": "固定 {mode}", "粘滞命中": "固定に一致", "粘滞标记": "固定マーカー", "组名": "グループ名", "组名方便识别,对外模型 ID 给客户端使用。": "グループ名は識別用です。クライアントは公開モデル ID を使用します。", "经过 {n} 次切换后成功,最终承载:{account}": "{n} 回の切り替え後に成功しました。最終処理アカウント:{account}", "绑定:{account}": "割り当て:{account}", "结束时间": "終了時刻", "结果未记录": "結果未記録", "统一路由设置": "共通ルーティング設定", "统一路由设置已保存": "共通ルーティング設定を保存しました", "继承": "継承", "继承全局": "全体設定を継承", "继承全局配置": "グローバル設定を継承", "继承全局:{value}": "全体設定を継承:{value}", "继承时不能改这里的值;切到独立配置后才会写入这个模型。": "継承中は値を変更できません。独立設定に切り替えるとこのモデルに保存されます。", "编辑全局默认": "全体の既定設定を編集", "编辑范围": "編集範囲", "编辑规则": "ルールを編集", "编辑路由组": "ルートグループを編集", "缩小画布": "縮小", "网关继续尝试下一个账号": "ゲートウェイが次のアカウントを試行", "耗时未记录": "所要時間未記録", "自动参与": "自動参加", "自动参与模式下将明确停用此提供商,之后新增账号也不会自动恢复;不会删除提供商或账号。": "自動参加モードでこのプロバイダーを明示的に停止します。後からアカウントを追加しても自動復元されません。プロバイダーやアカウントは削除しません。", "自动参与(推荐)": "自動参加(推奨)", "自动消耗排序已启用,请先关闭规则再手动调整": "自動消費順序が有効です。手動で並べ替えるには先にルールをオフにしてください", "自动:空闲五分钟释放;会话内:空闲六小时释放;每轮或关闭:不保留跨请求绑定。": "自動:5 分間アイドルで解除。セッション内:6 時間アイドルで解除。毎ターンまたはオフ:リクエスト間の固定なし。", "自动:空闲五分钟释放;会话内:空闲六小时;每轮或关闭:不跨请求绑定。": "自動:5分間アイドルで解放、セッション内:6時間アイドルまで、毎ターンまたはオフ:リクエスト間の紐付けなし。", "自定义路由组": "カスタムルートグループ", "草稿预演": "下書きのプレビュー", "被跳过": "スキップ", "被跳过的账号": "スキップされたアカウント", "规则": "ルール", "规则全局生效,不受原路由池限制;指定模型按自己的路由选账号,网关 Key 权限仍然生效。": "ルールは全体に適用され、元のルーティングプールには制限されません。指定したモデル自身のルーティングでアカウントを選び、ゲートウェイキーの権限は引き続き適用されます。", "规则最多 {n} 条。": "ルールは最大 {n} 件です。", "视频输入": "動画入力", "解除": "解除", "解除全局路由的参与范围限制,继续使用与账号页共用的手动顺序和自动消耗规则;模型独立配置保持不变。": "全体ルーティングの参加範囲制限を解除し、アカウントページと共有する手動順序と自動消費ルールは維持します。モデルの個別設定は変更しません。", "解除全部粘滞": "すべての固定を解除", "解除只清除网关的账号绑定,不删除聊天历史、不关闭粘性设置。后续成功请求仍可建立新的绑定;重启网关会清空这些进程本地记录。": "解除はゲートウェイのアカウント割り当てのみを消去します。チャット履歴や固定設定は残ります。以降の成功リクエストで新しい割り当てを作成でき、ゲートウェイの再起動でこのプロセス内の記録は消去されます。", "解除当前模型全部粘滞": "このモデルの固定をすべて解除", "解除所有模型的全部会话粘滞。不会终止在途请求,之后的请求会重新选路。": "すべてのモデルのセッション固定を解除します。処理中のリクエストは終了せず、以降のリクエストは再選択されます。", "解除这个模型的全部会话粘滞。不会终止在途请求,之后的请求会重新选路。": "このモデルのセッション固定をすべて解除します。処理中のリクエストは終了せず、以降のリクエストは再選択されます。", "解除这条会话": "このセッションを解除", "触发客户端": "トリガー元のクライアント", "计算中…": "計算中…", "记录所有经过网关的请求,不要求绑定客户端。": "クライアントの紐付けを必要とせず、ゲートウェイを通るすべてのリクエストを記録します。", "记录时间": "記録時刻", "设置参与范围": "参加範囲を設定", "识别客户端": "識別するクライアント", "该提供商在当前视图中已停用": "このプロバイダーは現在のビューで停止中です", "该提供商没有账号,请先到账号页添加。": "このプロバイダーにアカウントはありません。先にアカウントページで追加してください。", "请填写组名和对外模型 ID": "グループ名と公開モデル ID を入力してください", "请检查熔断参数:失败阈值 1~20,时长 10~600 秒,恢复阈值 1~10。": "サーキットブレーカーの設定を確認してください。失敗しきい値は 1~20、期間は 10~600 秒、復帰しきい値は 1~10 です。", "请求": "リクエスト", "请求 ID 未记录": "リクエスト ID 未記録", "请求仍在处理中,当前阶段:{phase}": "リクエストは処理中です。現在の段階:{phase}", "请求仍在进行": "リクエスト処理中", "请求会去哪里": "リクエストの送信先", "请求回放": "リクエスト再生", "请求在途": "リクエスト処理中", "请求完成不代表会话关闭;粘滞有效期不是在线状态。": "リクエスト完了はセッション終了を意味しません。固定の有効期限はオンライン状態ではありません。", "请求已取消": "リクエストはキャンセルされました", "请求当时的配置": "リクエスト時の設定", "请求成功完成,未发生账号切换": "アカウントを切り替えずにリクエストが正常に完了しました", "请求成功完成,未记录承载账号": "リクエストは成功しましたが、処理したアカウントは記録されていません", "请求执行": "リクエスト実行", "请求执行回放": "リクエスト実行の再生", "请求日志 →": "リクエストログ →", "请求未成功完成": "リクエストは正常に完了しませんでした", "请求模型": "リクエストモデル", "请求活动范围": "リクエストの活動範囲", "请求状态": "リクエスト状態", "请求结论": "リクエストの結論", "请求范围": "リクエスト範囲", "请求记录数据库不可用": "リクエスト記録データベースを利用できません", "请求跟踪": "リクエスト追跡", "请求跟踪内容": "リクエスト追跡の表示内容", "请求进入": "リクエスト受信", "请求进入网关": "リクエストがゲートウェイに到達", "请求需要": "リクエストの要件", "请选择模型": "モデルを選択してください", "读取中…": "読み込み中…", "谁参与及先后顺序": "参加するアカウントと優先順位", "调整全局消耗规则": "全体消費ルールを変更", "调整到期时间、可用余额及其他消耗规则的优先级": "有効期限、利用可能残高、その他の消費ルールの優先順位を変更", "调整后续请求的配置": "以降のリクエストを設定", "调整模型顺序": "モデルを並べ替え", "调整积分到期远近及其他消耗规则": "クレジットの有効期限順やその他の消費ルールを変更", "调用示例": "呼び出し例", "账号 {name} 已{state}": "アカウント {name}:{state}", "账号全部禁用": "全アカウント無効", "账号启停与账号页同步,立即影响所有路由;策略与排序需保存。": "アカウントの有効・無効はアカウントページと同期し、全ルートに即時反映されます。戦略と順序は保存が必要です。", "账号启停与默认规则": "アカウントの有効・無効と既定ルール", "账号启停操作": "アカウントの有効・無効操作", "账号启停立即生效;路由配置保存后生效": "アカウント状態は即時反映、ルーティング設定は保存後に反映", "账号启停部分完成:成功 {ok} 个,失败 {fail} 个,跳过 {skip} 个。{details}": "アカウント状態の更新は一部完了しました。成功 {ok}、失敗 {fail}、スキップ {skip}。{details}", "账号尝试": "アカウント試行", "账号已禁用": "アカウントは無効です", "账号已移除": "アカウントは削除済みです", "账号操作": "アカウント操作", "账号未记录": "アカウント未記録", "账号组": "アカウントグループ", "账号组操作": "アカウントグループの操作", "账号设置与全局保护另行保存,不属于本页路由草稿。": "アカウント設定と全体保護は別途保存され、このルーティングの下書きには含まれません。", "账号设置与所有路由共用,不改变当前路由的参与名单。": "アカウント設定はすべてのルートで共有されます。現在のルートの参加リストは変更しません。", "账号路由设置": "アカウントのルーティング設定", "起点是请求本身,不依赖客户端绑定。": "リクエスト自体を起点とし、クライアントの紐付けには依存しません。", "跟随列表中的最新请求": "一覧の最新リクエストに追従中", "跨模型组合": "複数モデルの組み合わせ", "路径": "パス", "路径过多,画布仅展示前 300 条;统计覆盖完整窗口,请筛选模型缩小范围。": "経路が多いため最初の 300 本のみ表示します。統計は期間全体を対象とします。モデルで絞り込んでください。", "路由入口": "ルート入口", "路由参与操作": "ルート参加の操作", "路由工作台": "ルーティングワークスペース", "路由工作台不可用": "ルーティングワークスペースを利用できません", "路由快照未记录": "ルーティングのスナップショット未記録", "路由成员操作": "ルートメンバーの操作", "路由接口不可用,请确认网关与界面已更新": "ルーティング API を利用できません。ゲートウェイと画面が更新済みか確認してください。", "路由接口返回了不完整的数据": "ルーティング API が不完全なデータを返しました", "路由数据正在更新,请稍后重试": "ルーティングデータを更新中です。しばらくしてから再試行してください。", "路由模式": "ルーティングモード", "路由画布": "ルーティングキャンバス", "路由策略改为{value}": "ルーティングポリシーを{value}に変更", "路由类型": "ルートの種類", "路由组": "ルートグループ", "路由组已删除": "ルーティンググループは削除済み", "路由视图": "ルーティング表示", "路由设置": "ルーティング設定", "路由配置": "ルーティング設定", "路由配置列表": "ルーティング設定一覧", "路由配置尚未读取": "ルーティング設定はまだ読み込まれていません", "路由配置已保存": "ルーティング設定を保存しました", "路由配置已保存,仅影响后续选路": "ルーティング設定を保存しました。以降の経路選択にのみ反映されます", "路由配置操作": "ルーティング設定の操作", "路由配置版本不可用,请更新网关后重试": "設定バージョンを取得できません。ゲートウェイを更新して再試行してください。", "跳过候选": "スキップした候補", "转发前就失败、或旧记录未落库时,只能看到请求本身与配置快照。": "転送前に失敗した場合や旧レコードが未保存の場合は、リクエスト本体と設定スナップショットのみ表示します。", "转发失败的账号暂时休息,避免连续请求反复撞到同一故障。": "転送に失敗したアカウントを一時的に休止し、同じ障害への連続リクエストを避けます。", "转换只处理当前账号;之后新增账号按账号页的启用状态使用。不会启用任何已禁用的账号。": "変換対象は既存のアカウントのみです。新しいアカウントはアカウントページの状態に従います。無効なアカウントが有効になることはありません。", "转换旧版全局参与设置": "旧版の全体参加設定を変換", "转换旧版设置": "旧版の設定を変換", "转换结果未确认,请重新读取全局配置": "変換結果を確認できません。全体設定を再読み込みしてください。", "输出 {n} tokens": "出力 {n} tokens", "过程提示": "過程の補足", "运行视图": "稼働ビュー", "近期 {n} 次请求": "最近のリクエスト {n} 件", "返回全部流向": "すべての流れに戻る", "返回列表": "一覧に戻る", "返回实时": "リアルタイムに戻る", "返回画布": "キャンバスに戻る", "还有 {n} 处": "他 {n} 件", "还没有参与模型": "参加モデルはまだありません", "还没有参与路由的提供商": "ルーティングに参加するプロバイダーはまだありません", "还没有可用模型,先在账号页添加账号": "利用可能なモデルがまだありません。先にアカウントページでアカウントを追加してください。", "还没有可用的模型,请先启用模型和对应账号。": "利用できるモデルがありません。先にモデルと対応アカウントを有効にしてください。", "还没有规则。压缩请求会按原模型照常转发。": "ルールはまだありません。圧縮リクエストは元のモデルのまま転送されます。", "还没有规则。图片会照常交给原模型,看不了的就会报错。": "ルールはまだありません。画像は元のモデルにそのまま渡され、読めない場合はエラーになります。", "还没有规则。标题请求会照常交给原模型。": "ルールはまだありません。タイトルリクエストは元のモデルにそのまま渡されます。", "还没有账号,先在账号页添加;有账号的提供商才会出现在这里": "アカウントがまだありません。アカウントページで追加してください。アカウントのあるプロバイダーだけがここに表示されます。", "还没选压缩模型": "圧縮モデルが未選択", "还没选原模型": "元モデルが未選択", "还没选标题模型": "タイトルモデルが未選択", "还没选视觉模型": "視覚モデルが未選択", "这一页改的只作用于当前范围": "このページの変更はこの範囲にのみ作用します", "这个范围内最近的请求。点一条看它当时是怎么选的账号。": "この範囲の最近のリクエスト。1件開くと当時のアカウント選択がわかります。", "这个范围怎么选账号": "この範囲のアカウント選択", "这些设置由所有模型共用;提供商与账号的参与范围和顺序在各自视图中独立配置。": "これらの設定はすべてのモデルで共通です。プロバイダーとアカウントの参加範囲や順序は各ビューで個別設定します。", "这份记录来自实际请求,不使用当前账号队列重新推演。": "この記録は実際のリクエストに基づいており、現在のアカウントキューによる再シミュレーションではありません。", "这是请求当时保存的选路快照,修改当前路由不会改变这份记录。": "リクエスト時に保存されたルーティングのスナップショットです。現在の経路を変更しても記録は変わりません。", "这条会话已解除或过期,不再有活跃绑定。": "このセッションは解除済みまたは期限切れで、有効な割り当てはありません。", "这条规则只改写被识别为标题生成的小请求,普通对话不受影响。": "このルールはタイトル生成と判定された小さなリクエストだけを書き換えます。通常の会話には影響しません。", "这条规则里的模型收到图片时按选定的方式处理;没被任何规则选中的模型一律原样放行。": "このルールのモデルに画像が届いたときは選んだ方法で処理します。どのルールにも選ばれていないモデルはそのまま通します。", "这条请求使用的路由组已删除,当时的快照仍可查看": "このリクエストで使用したルーティンググループは削除されていますが、当時のスナップショットは閲覧できます", "这条请求对应的会话当前仍绑定到「{account}」。": "このリクエストのセッションは現在「{account}」に割り当てられています。", "这条请求没有保存上游尝试明细": "このリクエストの上流試行詳細は保存されていません", "这条请求没有保存路由决策": "このリクエストのルーティング判断は保存されていません", "这条请求没有保存路由快照,仍可查看已有的请求和尝试信息。": "このリクエストのルーティングスナップショットは保存されていませんが、既存のリクエスト情報と試行情報は表示できます。", "这次尝试的结果": "今回の試行結果", "这里只决定是否参与本路由,不改变账号启用状态。": "このルートへの参加だけを設定します。アカウントの有効状態は変更しません。", "这里的参与范围只影响当前视图;账号启停、并发和限制器属于账号本身,所有模型共用。": "ここでの参加範囲は現在のビューだけに影響します。アカウントの有効・無効、同時実行、リミッターは全モデル共通のアカウント設定です。", "这里的顺序决定实际选路;画布只为查看请求调整位置。": "この順序が実際のルーティングに使われます。キャンバス上の位置はリクエストを見やすくするためだけに変わります。", "这里调整的是账号组的全局消耗规则;当前独立路由的账号顺序保持不变。": "ここではアカウントグループの全体消費ルールを変更します。現在の個別ルートのアカウント順序は変わりません。", "连线表示参与本路由": "接続線はこのルートへの参加を示します", "连线表示账号组中有已启用账号": "接続線は有効なアカウントを含むグループを示します", "连续失败达到阈值时暂时让位,恢复后再重新参与。": "連続失敗がしきい値に達すると一時的に退き、回復後に再参加します。", "退避 {time}": "待機 {time}", "选中": "選択済み", "选中流量详情": "選択した通信の詳細", "选中路径": "選択した経路", "选择一个或多个客户端": "クライアントを1つ以上選択", "选择一条请求查看执行过程": "リクエストを選択して実行過程を表示", "选择一条请求查看选路过程": "リクエストを選択してルーティング過程を表示", "选择作用范围后配置路由": "適用範囲を選択してルーティングを設定", "选择左侧请求查看选路过程": "左のリクエストを選択すると選路過程を表示します", "选择模型": "モデルを選択", "选择请求模型后查看具体限流状态": "リクエストモデルを選択して具体的なレート制限を確認", "选择账号": "アカウントを選択", "选择路由入口": "ルート入口を選択", "选择预览模型后查看队列": "プレビューモデルを選択するとキューを表示します", "选路原因未记录": "選択理由は記録されていません", "选路情况": "ルーティングの状況", "选路方式": "ルーティング方式", "选路预演": "ルーティングプレビュー", "逐步回放": "ステップ再生", "配置作用范围": "設定の適用範囲", "配置第 {rank} 顺位;当前可用候选第 {effective} 顺位。": "設定上の優先順位は {rank}、現在の利用可能な候補では {effective} 番目です。", "配置范围": "設定範囲", "配置该模型": "このモデルを設定", "配置请求的参与范围与优先顺序": "ルーティングの参加範囲と優先順位を設定", "配置项": "設定項目", "配置顺位 {n}": "設定上の優先順位 {n}", "重新读取": "再読み込み", "重新读取会丢弃当前范围的未保存草稿,其他范围的草稿保留。": "再読み込みすると、この範囲の未保存の下書きを破棄します。他の範囲の下書きは保持されます。", "重新读取配置": "設定を再読み込み", "队列为无会话预演;实际粘性命中和重试顺延以回放为准。": "キューはセッション固定なしのプレビューです。実際の固定や再試行の切り替えは再生記録をご覧ください。", "队首": "キュー先頭", "阶段 {phase} · 已进行 {time}": "フェーズ {phase} · 経過 {time}", "限制器跳过": "リミッターによりスキップ", "隐藏无账号 ({n})": "アカウントなしを隠す ({n})", "静止蓝线:选中历史路径": "静止した青線:選択した履歴経路", "顺位": "順位", "顺序修改即时保存,仅作用于当前视图。": "順序変更は即時保存され、現在のビューだけに適用されます。", "顺序调整不会解除限流;有效粘滞优先于普通账号顺序。": "並べ替えてもレート制限は解除されません。有効な固定は通常のアカウント順序より優先されます。", "预演首选": "プレビューの優先候補", "预览模型": "プレビューモデル", "首帧": "初回応答", "首帧 {time}": "初回応答 {time}", "首帧耗时": "最初のフレームまでの時間", "首帧:{time}": "最初のフレーム:{time}", "首选账号": "優先アカウント", "默认自动参与;新增可用提供商无需再添加路由,明确停用项保持不变。": "既定では自動参加します。新しい利用可能なプロバイダーのルーティング追加は不要で、明示的に停止した項目は維持されます。", "默认规则": "既定のルール", "默认路由": "既定のルーティング", "Agent 配置": "Agent 設定", "Claude Code 按 Opus / Sonnet / Haiku / 子 Agent 分档请求模型;这里把每档指向网关目录里的模型,留空表示不改写该档。": "Claude Code は Opus / Sonnet / Haiku / サブエージェントの枠ごとにモデルを要求します。ここで各枠をゲートウェイカタログのモデルに向けます。空欄にするとその枠は書き換えません。", "Claude Code 支持多模型菜单和逐模型思考等级;上下文及输入能力由客户端识别,不把自动压缩阈值冒充上下文窗口。": "Claude Code は複数モデルのメニューとモデル別の思考レベルに対応しています。コンテキストと入力機能はクライアントが判定します。自動圧縮のしきい値をコンテキストウィンドウとして扱うことはありません。", "Claude Code 的 Opus / Sonnet / Haiku / 子 Agent 四档默认都指向上面选的模型;要让某一档用别的模型,在这里单独改。": "Claude Code の Opus / Sonnet / Haiku / サブエージェントの 4 枠は既定で上で選んだモデルを指します。特定の枠だけ別のモデルにする場合はここで変更します。", "Codex 的模型目录支持逐模型上下文、图片和思考档位,不提供可写的逐模型输出上限。": "Codex のモデルカタログはモデル別のコンテキスト、画像入力、思考レベルに対応していますが、モデル別の出力上限を書き込む項目はありません。", "Crush 需要明确填写输出上限、图片与思考能力": "Crush では出力上限・画像対応・思考能力を明示してください", "DSH 配置目标": "DSH 設定対象", "Kimi Code 只能追加能力声明,不能关闭内置识别的能力。输出上限仅新版 Anthropic 协议生效;旧版不写入思考档位。": "Kimi Code では対応機能の宣言を追加できますが、組み込みで認識される機能は無効にできません。出力上限は新版の Anthropic プロトコルでのみ有効です。旧版には思考レベルを書き込みません。", "MCP 服务名称": "MCP サーバー名", "Skill 目录名": "Skill フォルダー名", "Token 上限必须是 1 到 1 亿之间的整数": "トークン上限は 1~1 億の整数で指定してください", "Zed 的 API Key 仍需在客户端提供商设置中填写;本页不修改系统凭证。": "Zed のプロバイダー設定で API Key を入力してください。このページはシステムの認証情報を変更しません。", "{id}(不在网关目录)": "{id}(ゲートウェイカタログにありません)", "· 走网关": "· ゲートウェイ経由", "一键把本机 AI 客户端接到本地网关:改写它自己的配置文件,保留其它设置": "ローカルの AI クライアントをローカルゲートウェイに接続します。各クライアントの設定ファイルを書き換え、それ以外の設定はそのまま残します", "一键接入": "簡単接続", "一键设置": "一括設定", "上下文": "コンテキスト", "上次应用未完整结束,请先查看恢复预览。": "前回の適用が完了していません。先に復元プレビューを確認してください。", "上游模型 id,例如 raccoon-coder-pro": "上流モデル ID(例: raccoon-coder-pro)", "下面是这个客户端文件里现有的配置(只读)。点「从客户端导入」把它收进我的配置,之后就能编辑和切换。": "以下はこのクライアントの設定ファイルにある既存の設定です(読み取り専用)。「クライアントから読み込む」を押すと自分の設定に取り込み、編集・切り替えができるようになります。", "不写入": "書き込まない", "不要添加 /v1/messages;客户端会自行追加请求路径。": "/v1/messages は付けないでください。クライアントがリクエストパスを追加します。", "与客户端一致": "クライアントと一致", "个 · 已安装": " 件 · インストール済み", "中转": "中継", "仅修改所选 MCP 条目,保留其它配置和注释;保存不会启动服务。": "選択した MCP 項目のみを変更し、他の設定とコメントを保持します。保存してもサーバーは起動しません。", "仅可读取": "読み取り専用", "从客户端导入": "クライアントから読み込む", "从网关目录选择": "ゲートウェイの一覧から選択", "从网关目录选择模型": "ゲートウェイの一覧からモデルを選択", "会用最近一次备份覆盖它的配置文件。这一步不会改动你在本页存的配置列表。": "最新のバックアップで設定ファイルを上書きします。このページに保存した設定リストは変更されません。", "低": "低", "使用中": "使用中", "使用此配置": "この設定を使用", "使用此配置时设为默认,其他模型仍可在客户端选择。": "この設定を使用すると既定モデルになります。他のモデルもクライアントで選択できます。", "使用真实模型 ID,不要填写模型展示名。": "表示名ではなく、実際のモデル ID を入力してください。", "使用网关 Key": "ゲートウェイキーを使用", "保存会直接修改客户端配置;确认前展示差异,写入前自动备份。": "保存するとクライアント設定を直接変更します。確認前に差分を表示し、書き込み前にバックアップします。", "保存修改": "変更を保存", "保存只记录方案,不修改客户端。应用时会另外展示文件差异并请求确认。": "保存はプロファイルの記録のみで、クライアントは変更しません。適用時にファイルの差分を表示して、別途確認します。", "保存后可在配置列表中切换,不影响当前使用的配置。": "保存後に設定一覧から切り替えられます。現在使用中の設定には影響しません。", "保存后同步更新客户端;写入前可查看改动,并自动备份。": "保存するとクライアントも更新します。書き込み前に変更を確認でき、自動でバックアップします。", "保存方案": "プロファイルを保存", "保存方案不会切换客户端;应用后改变实际默认模型。": "保存だけではクライアントは切り替わりません。適用すると実際の既定モデルが変わります。", "保存方案不会切换客户端;选择“应用并设为默认”才改变实际默认模型。": "保存だけではクライアントは切り替わりません。「適用して既定に設定」を選ぶと、実際の既定モデルが変わります。", "保存时自动写入完整的 /chat/completions 路径。": "完全な /chat/completions パスが自動的に書き込まれます。", "保存路径": "パスを保存", "保留导入的认证": "読み込んだ認証を保持", "保留现有认证": "現在の認証を保持", "修改后点击「使用此配置」才会更新客户端。": "編集後に「この設定を使用」を選択するとクライアントを更新します。", "停用后将从客户端可选项中关闭此配置,其他配置不受影响。": "クライアントの選択肢でこの設定を無効にします。他の設定には影響しません。", "停用配置": "設定を無効化", "全选搜索结果": "検索結果をすべて選択", "全部配置(全局覆盖)": "全プロファイル(グローバル上書き)", "共": "合計", "关闭后丢弃本次修改,不会保存配置或改动客户端。": "閉じると変更を破棄します。設定の保存やクライアントの変更は行いません。", "关闭后丢弃本次草稿,不会保存空方案,也不会修改客户端。": "閉じると今回の下書きは破棄されます。空のプロファイルは保存されず、クライアントも変更されません。", "内容已经一致,无需写入": "内容はすでに一致しています。書き込みは不要です", "写入中…": "書き込み中…", "写入后需要重开会话才生效": "書き込み後はセッションを開き直すと反映されます", "写入失败:{reason}": "書き込みに失敗しました: {reason}", "写入客户端": "クライアントに書き込む", "写入文件": "設定ファイル", "写入预览": "書き込みプレビュー", "删除 MCP": "MCP を削除", "删除 Skill": "Skill を削除", "删除只移除 SKILL.md,辅助文件保留在原目录;不会执行其中的脚本。": "削除するのは SKILL.md のみです。補助ファイルは元のフォルダーに残り、スクリプトは実行されません。", "删除客户端配置": "クライアント設定を削除", "删除已保存方案?": "保存済みプロファイルを削除しますか?", "删除新建文件": "新規作成ファイルを削除", "删除方案": "プロファイルを削除", "删除配置": "設定を削除", "删除配置?": "設定を削除しますか?", "动态表达式、独立作用域或全局覆盖的 MCP 为只读,请在 DSH 中编辑。": "動的な式、独立したスコープ、またはグローバル上書きのある MCP は読み取り専用です。DSH で編集してください。", "单配置": "単一設定", "另一项配置操作尚未完成": "別の設定操作がまだ完了していません", "只保存变量引用,不修改系统环境;请在启动客户端的环境里设置变量值。": "変数の参照のみを保存します。システム環境は変更しません。クライアントを起動する環境に変数の値を設定してください。", "只删除 Agent2API 中的方案,不修改客户端当前配置。": "Agent2API のプロファイルのみを削除します。クライアントの現在の設定は変更しません。", "只改 enabled 与默认项,其余条目原样保留": "enabled と既定項目だけを変更し、その他の項目はそのまま残します", "只改属于我们的那几个键,其它设置原样保留": "当方のキーだけを変更し、その他の設定はそのまま残します", "可先新增配置,安装后再使用": "先に設定を追加し、インストール後に使用できます", "可同时启用多条;切换只改 enabled 与默认项": "複数を同時に有効化できます。切り替えは enabled と既定項目だけを変更します", "可搜索并多选模型;上下文、输出上限和能力分别从网关目录自动填入。": "モデルを検索して複数選択できます。各モデルのコンテキスト長、出力上限、機能はゲートウェイの一覧から自動入力します。", "可选模型": "選択できるモデル", "同一时刻只有一套生效;写入 = 把这一套整段写进客户端文件": "同時に有効なのは 1 つだけです。書き込み = その設定をクライアントのファイルへまとめて書き込みます", "启用 {name}": "{name} を有効化", "启用此配置": "この設定を有効化", "启用配置": "設定を有効化", "图形化管理客户端原生配置;保存方案与应用配置分开。": "クライアントのネイティブ設定を GUI で管理します。プロファイルの保存と設定の適用は別の操作です。", "图片输入": "画像入力", "在客户端管理认证": "クライアントで認証を管理", "填写服务根地址,不要附加 /v1beta 或 generateContent 路径。": "サービスのルート URL を入力してください。/v1beta や generateContent のパスは付けないでください。", "处理中…": "処理中…", "备注": "メモ", "多套配置": "複数の設定", "多配置 · 已启用 {n}": "複数設定 · {n} 件有効", "子 Agent": "サブエージェント", "安装或初始化后可重新检测;自定义安装位置可指定配置路径。": "インストールや初期化後に再検出できます。独自の場所を使用する場合は設定パスを指定してください。", "完整配置文件路径": "設定ファイルの完全なパス", "官方直连": "公式直結", "客户端列表加载失败:{reason}": "クライアント一覧の読み込みに失敗しました: {reason}", "客户端列表响应无效": "クライアント一覧の応答が無効です", "客户端协议": "クライアントのプロトコル", "客户端原生 MCP 配置(JSON)": "クライアントのネイティブ MCP 設定(JSON)", "客户端原生配置": "クライアントのネイティブ設定", "客户端官方配置说明": "クライアントの公式設定ガイド", "客户端实际配置": "クライアントの実際の設定", "客户端必须实际使用同一个配置文件;本页不改变客户端启动参数。": "クライアントが同じ設定ファイルを実際に使用する必要があります。このページでは起動引数を変更しません。", "客户端文件已有外部修改,自动恢复会拒绝覆盖。": "クライアントのファイルに外部からの変更があります。自動復元では上書きしません。", "客户端条目启用状态": "クライアント項目の有効状態", "客户端清单": "クライアント一覧", "客户端管理分类": "クライアント管理の分類", "客户端自己的设置优先;这里写的是写入时带进去的初值": "クライアント側の設定が優先されます。ここに書くのは書き込み時の初期値です", "客户端资源已保存并校验": "クライアントのリソースを保存し検証しました", "客户端选项": "クライアントのオプション", "客户端配置写入后未通过校验": "書き込み後のクライアント設定の検証に失敗しました", "客户端配置已经一致,无需写入": "クライアント設定はすでに一致しています。書き込みは不要です", "客户端默认地址": "クライアントの既定エンドポイント", "密钥在 Agent2API 中加密保存;使用时按客户端要求写入。": "キーは Agent2API 内で暗号化して保存し、使用時にクライアントの形式で書き込みます。", "密钥已隐藏;绿色为新增,红色为删除。所有实际写入文件都列在这里。": "キーは非表示です。緑は追加、赤は削除を表します。実際に書き込むすべてのファイルをここに表示します。", "导入模型及客户端未知字段会保留;本页删除方案不会删除客户端条目。": "読み込んだモデルと未知のクライアント項目は保持します。このページでプロファイルを削除しても、クライアントの項目は削除されません。", "将删除此配置及客户端中的对应条目,其他配置不受影响。": "この設定と対応するクライアントの項目を削除します。他の設定には影響しません。", "尚未初始化": "未初期化", "尚未支持这个客户端的资源管理": "このクライアントのリソース管理にはまだ対応していません", "展开可调整能力;— 表示客户端未声明": "展開して能力を調整できます。— はクライアントが未宣言", "已保存": "保存しました", "已保存方案": "保存済みプロファイル", "已保存,未应用": "保存済み・未適用", "已写入 {name}": "{name} に書き込みました", "已写入 {name};这个客户端只在启动时读配置,重开一个会话才生效": "{name} に書き込みました。このクライアントは起動時にしか設定を読まないため、セッションを開き直すと反映されます", "已删除保存方案,客户端配置未改动": "保存済みプロファイルを削除しました。クライアント設定は変更していません", "已安装": "インストール済み", "已导入 {n} 套方案": "{n} 件のプロファイルを読み込みました", "已按备份还原 {name}": "{name} をバックアップから復元しました", "已收进我的配置:{n} 条": "自分の設定に取り込みました: {n} 件", "已检测到": "検出済み", "已选择": "選択済み", "已选模型": "選択済みモデル", "已配置": "設定済み", "已预填网关地址、协议、Key 与模型;确认后直接写入客户端,不需要先保存方案。": "ゲートウェイ URL、プロトコル、Key、モデルは入力済みです。確認後にクライアントへ直接書き込み、プロファイルの事前保存は不要です。", "应用": "適用", "应用中…": "適用中…", "应用到客户端": "クライアントに適用", "应用并设为默认": "適用して既定に設定", "应用时使用当前启用的真实 Key;预览会隐藏密钥。": "適用時は現在有効な実際のキーを使用します。プレビューではキーを非表示にします。", "当前环境不支持保存": "この環境では保存できません", "当前环境不支持保存(桥接方法缺失)": "この環境では保存できません(ブリッジメソッドが見つかりません)", "当前环境不支持写入(桥接方法缺失)": "この環境では書き込めません(ブリッジメソッドが見つかりません)", "当前环境不支持客户端接管(桥接方法缺失)": "この環境ではクライアント接続を利用できません(ブリッジメソッドが見つかりません)", "当前环境不支持客户端配置": "この環境ではクライアント設定を利用できません", "当前环境不支持导入": "この環境では読み込みできません", "当前环境不支持导入(桥接方法缺失)": "この環境では読み込めません(ブリッジメソッドが見つかりません)", "当前环境不支持应用": "この環境では適用できません", "当前环境不支持恢复": "この環境では復元できません", "当前环境不支持还原(桥接方法缺失)": "この環境では復元できません(ブリッジメソッドが見つかりません)", "当前环境不支持预览": "この環境ではプレビューを利用できません", "当前环境无法读取网关模型目录": "この環境ではゲートウェイのモデル一覧を読み取れません", "当前网关未启用 API Key 鉴权;占位值只用于客户端要求非空密钥的场景。": "このゲートウェイでは API キー認証が無効です。空でないキーをクライアントが要求する場合のみ仮の値を使用します。", "当前默认": "現在の既定", "思考能力": "思考能力", "恢复作用在网关所在机器;密钥已隐藏,不会覆盖应用后的外部修改。": "復元はゲートウェイが稼働するマシンに対して行います。キーは非表示で、適用後の外部変更は上書きしません。", "恢复自动检测": "自動検出に戻す", "所有操作作用在网关所在机器。": "すべての操作はゲートウェイが稼働するマシンに対して行います。", "所选 Key 下没有可用的对话模型,请先启用模型或手动填写。": "この Key で利用できる対話モデルがありません。モデルを有効化するか手動で入力してください。", "所选 Key 下没有可用的对话模型,请先启用模型或更换 Key。": "この Key で利用できる対話モデルがありません。モデルを有効にするか別の Key を選択してください。", "所选 Key 无权使用当前模型,请重新选择": "選択した Key は現在のモデルを利用できません。選び直してください。", "手动添加模型": "モデルを手動で追加", "手机端可查看客户端实际配置并撤销上次应用;编辑方案请使用桌面端。": "モバイルではクライアントの実際の設定の確認と前回の適用の取り消しができます。プロファイルの編集はデスクトップをご利用ください。", "手机端可查看模型配置、撤销上次应用,并管理提示词、Skill 与 MCP。": "モバイルではモデル設定の確認、前回の適用の取り消し、プロンプト・Skill・MCP の管理ができます。", "指定配置路径": "設定パスを指定", "按备份还原": "バックアップから復元", "按备份还原 {name}?": "{name} をバックアップから復元しますか?", "换 Key 后会按新 Key 的授权重新核对已选模型": "キーを変更すると、新しいキーの権限で選択済みモデルを再確認します。", "接入后使用此默认模型,其它已选模型仍可在客户端切换。": "接続後はこのモデルを既定にします。他の選択済みモデルもクライアントで切り替えられます。", "接入客户端": "クライアントを接続", "接入本网关": "このゲートウェイに接続", "接入状态来自客户端配置文件。恢复前显示差异;文件被其他程序修改时拒绝覆盖。": "接続状態はクライアントの設定ファイルから取得します。復元前に差分を表示し、他のプログラムが変更したファイルは上書きしません。", "接入端点": "接続エンドポイント", "接口基址": "API のベース URL", "搜索客户端": "クライアントを検索", "搜索客户端 / 配置文件…": "クライアント / 設定ファイルを検索…", "搜索已选模型": "選択済みモデルを検索", "搜索模型 ID / 展示名…": "モデル ID / 表示名を検索…", "撤销上次应用": "前回の適用を取り消す", "操作目标:网关所在机器": "操作対象:ゲートウェイのマシン", "收起更多配置": "追加設定を閉じる", "收起模型选择": "モデル選択を閉じる", "改写网关所在机器上的客户端配置": "ゲートウェイのマシン上のクライアント設定を管理", "改动": "変更", "放弃修改": "変更を破棄", "放弃未保存的修改?": "未保存の変更を破棄しますか?", "新增": "追加", "新增 MCP": "MCP を追加", "新增配置": "設定を追加", "新建 Skill": "Skill を新規作成", "新建文件": "新規ファイル", "新建方案或导入当前配置;保存后再决定是否应用。": "プロファイルを作成するか現在の設定を読み込んでください。保存後に適用するかどうかを選べます。", "新建配置": "新規設定", "新建配置方案": "設定プロファイルを新規作成", "新版网页版和桌面版分别保存模型配置;旧版模型设置共享,MCP 始终只写入所选运行方式。": "新版の Web 版とデスクトップ版はモデル設定を別々に保存します。旧版のモデル設定は共有されますが、MCP は選択したプロファイルにのみ書き込まれます。", "新配置": "新規設定", "方案中的密钥加密保存;客户端原生配置可能要求明文。": "プロファイル内のキーは暗号化して保存します。クライアントのネイティブ設定には平文が必要な場合があります。", "方案名称": "プロファイル名", "方案已保存,尚未应用到客户端": "プロファイルを保存しました。クライアントにはまだ適用していません", "无改动": "変更なし", "无配置": "設定なし", "无需认证": "認証なし", "旧版共享设置": "旧版の共有設定", "暂无预览": "プレビューはまだありません", "更多配置": "追加設定", "最多选择 {n} 个模型": "モデルは最大 {n} 個まで選択できます", "最近检测:{time}": "最終検出:{time}", "有改动": "変更あり", "未声明 / 保留": "未指定/保持", "未安装": "未インストール", "未找到客户端程序或配置文件": "クライアントのプログラムまたは設定ファイルが見つかりません", "未接入本网关": "このゲートウェイに未接続", "未接管": "未接続", "未检测到": "未検出", "未检测到安装": "インストールが検出されません", "未读取到可识别的客户端配置": "認識できるクライアント設定が見つかりません", "未走网关": "ゲートウェイ未経由", "本机": "この端末", "本机服务": "ローカルサービス", "本机没有找到 {name}": "このマシンに {name} が見つかりません", "本机网关": "ローカルゲートウェイ", "本网关": "このゲートウェイ", "来自客户端文件,只读": "クライアント設定ファイルから取得(読み取り専用)", "查看文件改动": "ファイルの変更を表示", "桌面版": "デスクトップ版", "模型 ID": "モデル ID", "模型 ID 不能为空或重复": "モデル ID は空欄または重複にできません", "模型 id": "モデル ID", "模型 {n}": "モデル {n}", "模型展示名": "モデルの表示名", "模型思考等级": "モデルの思考レベル", "模型或客户端不支持所选思考等级": "モデルまたはクライアントが選択した思考レベルに対応していません", "模型未声明思考档位,保留客户端默认,不显示猜测选项。": "モデルが思考レベルを宣言していません。クライアントの既定値を保持し、推測した選択肢は表示しません。", "模型目录响应无效": "モデル一覧の応答が無効です", "模型目录读取失败,可手动填写真实模型 ID。": "モデル一覧を読み込めませんでした。実際のモデル ID を手動で入力できます。", "模型配置": "モデル設定", "模型默认": "モデルの既定値", "正在检测客户端…": "クライアントを検出中…", "正在生成准确预览…": "正確なプレビューを生成中…", "正在生成预览…": "プレビューを生成中…", "正在读取本机客户端…": "ローカルクライアントを読み込み中…", "正在读取网关模型并填入配置…": "ゲートウェイのモデルを読み込み、設定を入力中…", "此处来自磁盘文件,不代表正在运行的旧会话已经重载。": "ここにはディスクから読み取った内容を表示します。実行中の既存セッションが設定を再読み込みしたことを意味しません。", "此配置未在客户端中使用,删除不会改变当前使用的配置。": "この設定はクライアントで使用されていません。削除しても現在の設定は変わりません。", "每个客户端可以有": "各クライアントは", "每个模型独立保存能力;展开可调整,未声明的数据不会猜测填写。": "機能はモデルごとに保存します。展開すると調整できます。未指定の値を推測して入力することはありません。", "没有匹配的客户端": "一致するクライアントがありません", "没有可导入的新条目(可能还没配过,或已经在我的配置里)": "読み込める新しい項目がありません(未設定か、すでに自分の設定にあります)", "没有新的条目可收(都已在我的配置里)": "取り込む新しい項目はありません(すべて自分の設定にあります)", "没有新的配置可以导入": "読み込む新しい設定はありません", "没有检测到可接管的客户端": "管理可能なクライアントが検出されません", "没有选中配置": "設定が選択されていません", "没有选中配置方案": "設定プロファイルが選択されていません", "添加到客户端": "クライアントに追加", "点击右上角「新增配置」,添加网关或其他服务": "右上の「設定を追加」からゲートウェイや他のサービスを追加できます", "点击模型展开详细配置;搜索只筛选显示,不会移除模型。": "モデルをクリックすると詳細設定が開きます。検索は表示を絞り込むだけで、モデルは削除されません。", "版本未识别": "バージョン未確認", "状态来自配置文件,已打开的会话可能需要重新加载": "状態は設定ファイルに基づきます。既存のセッションは再読み込みが必要な場合があります", "环境变量名": "環境変数名", "生成中…": "生成中…", "留空保留 / 未声明": "空欄:保持/未指定", "留空保留已保存密钥": "空欄で保存済みキーを保持", "留空的分档会以 Claude Code 内置模型名请求网关;网关没有同名模型时该档会失败,建议点「一键设置」。": "空欄の枠は Claude Code 内蔵のモデル名でゲートウェイに要求します。同名のモデルがなければその枠は失敗します。「一括設定」を推奨します。", "留空表示不写入": "空欄なら書き込まない", "确认": "確認", "确认使用": "使用を確認", "确认停用": "無効化を確認", "确认写入": "書き込みを確認", "确认写入后会同步修改客户端开关;取消不会生效。": "書き込みを確定すると、クライアント項目の有効状態も更新されます。キャンセルした場合は変更されません。", "确认写入后更新客户端默认模型;取消不会生效。": "書き込みを確定すると、クライアントの既定モデルが更新されます。キャンセルした場合は変更されません。", "确认写入客户端资源": "クライアントリソースの書き込みを確認", "确认删除": "削除を確認", "确认删除客户端资源": "クライアントリソースの削除を確認", "确认后将切换到此配置,原配置会保留在列表中。": "確認するとこの設定に切り替えます。元の設定は一覧に残ります。", "确认后将更新 {name} 的配置文件,原配置会自动备份。": "確認すると {name} の設定ファイルを更新します。元のファイルは自動でバックアップします。", "确认后将此配置加入客户端,已有配置会保留。": "確認するとこの設定をクライアントに追加します。既存の設定は保持します。", "确认应用": "適用を確認", "确认恢复": "復元を確認", "确认接入": "接続を確認", "移除模型会写入客户端配置;其它条目和未知字段保留,确认前可查看差异。": "モデルの削除はクライアント設定に反映されます。他の項目と未知のフィールドは保持され、確認前に差分を確認できます。", "移除模型:{name}": "モデルを削除: {name}", "第一把启用的 Key": "最初の有効なキー", "第三方中转": "サードパーティ中継", "编辑 MCP": "MCP を編集", "编辑 Skill": "Skill を編集", "编辑客户端配置": "クライアント設定を編集", "编辑配置": "設定を編集", "编辑配置方案": "設定プロファイルを編集", "编辑:{name}": "編集: {name}", "网关目录共 {n} 个": "ゲートウェイカタログに {n} 件", "网页版": "Web 版", "自定义路径": "カスタムパス", "行号由后端逐行比对给出": "行番号はバックエンドの行単位の比較によるものです", "装好后回到这一页点「重新检测」,它会出现在上面的列表里。": "インストール後にこのページへ戻り「再検出」を押すと、上の一覧に表示されます。", "视频输入": "動画入力", "解除接入本网关": "このゲートウェイとの接続を解除", "认证方式": "認証方式", "设为默认": "既定に設定", "请先在「网关 Key」页创建并启用一把 Key": "先に「ゲートウェイ Key」ページで Key を作成して有効化してください。", "请在 Zed 提供商设置中保存 API Key;本页不修改系统凭证存储。": "Zed のプロバイダー設定で API キーを保存してください。このページではシステムの認証情報ストアを変更しません。", "请填写 API Key": "API キーを入力してください", "请填写方案名称": "プロファイル名を入力してください", "请填写有效的 http 或 https 地址": "有効な http または https の URL を入力してください", "请填写有效的环境变量名": "有効な環境変数名を入力してください", "请填写配置名称": "設定名を入力してください", "请至少添加一个模型": "モデルを 1 つ以上追加してください", "请补全配置后使用": "設定を完成させてから使用してください", "请输入密钥": "キーを入力してください", "请选择": "選択してください", "请选择模型": "モデルを選択してください", "读取失败": "読み取り失敗", "读取客户端配置失败:{reason}": "クライアント設定の読み込みに失敗しました: {reason}", "走网关": "ゲートウェイ経由", "路径属于网关所在机器,不是浏览器所在设备。只改变检测目标,不修改客户端文件。": "パスはブラウザーの端末ではなくゲートウェイのマシン上のものです。検出対象のみを変え、クライアントのファイルは変更しません。", "输出上限": "最大出力", "返回编辑": "編集に戻る", "还原中…": "復元中…", "还原失败:{reason}": "復元に失敗しました: {reason}", "还没有配置": "設定がまだありません", "还没有配置。点「新建配置」建一套指向本机网关的,再写入客户端。": "設定がまだありません。「新規設定」でローカルゲートウェイを指す設定を作り、クライアントに書き込んでください。", "还没有预览。选一套配置后这里会显示写入客户端之后的样子。": "プレビューはまだありません。設定を選ぶと、クライアントへ書き込んだ後の内容がここに表示されます。", "这个客户端不从网关目录选模型,用右侧的「添加模型」逐个填写。": "このクライアントはゲートウェイカタログからモデルを選択しません。右側で 1 つずつ追加してください。", "这个客户端不支持所选协议": "このクライアントは選択したプロトコルに対応していません", "这个客户端不能接入本网关": "このクライアントはこのゲートウェイに接続できません", "这个客户端会自己重读配置,写入后开新会话即生效。": "このクライアントは設定を自動で読み直します。書き込み後に新しいセッションを開けば反映されます。", "这个客户端只在启动时读配置:写入后重开一个会话才生效。": "このクライアントは起動時にしか設定を読みません。書き込み後にセッションを開き直すと反映されます。", "这个客户端的配置里没有读出地址(可能还没配过,或形状不认识)": "このクライアントの設定からアドレスを読み取れませんでした(未設定か、形式を認識できません)", "这个客户端自己支持多套配置并存": "このクライアントは複数の設定を並存できます", "这个客户端自己管理多套配置,可同时启用多条;切换只改 enabled 与默认项,不动它的模型清单。": "このクライアントは複数の設定を自前で管理し、複数を同時に有効化できます。切り替えは enabled と既定項目だけを変更し、モデル一覧には触れません。", "这个客户端还没有 MCP": "このクライアントにはまだ MCP サーバーがありません", "这个客户端还没有 Skill": "このクライアントにはまだ Skill がありません", "这个客户端需要填写模型上下文窗口": "このクライアントではモデルのコンテキスト長が必要です", "这套配置是干什么用的(只显示在本页)": "この設定の用途(このページにのみ表示)", "这是待应用状态;保存不会立即改变客户端开关。": "これは適用予定の状態です。保存だけではクライアントの有効状態は変わりません。", "这里只调整此模型,不影响其它模型。": "ここでの変更はこのモデルにのみ適用されます。", "这里只选择客户端实际支持的协议,不改变上游提供商协议。": "ここではクライアントが実際に対応するプロトコルのみを選びます。上流プロバイダーのプロトコルは変更しません。", "连接方式": "接続方式", "连接配置": "接続設定", "选一个客户端开始": "クライアントを選んで開始", "选择 MCP": "MCP を選択", "选择 Skill": "Skill を選択", "选择模型": "モデルを選択", "选择网关 Key": "ゲートウェイ Key を選択", "选择要接入的模型;确认前展示文件改动,写入前自动备份。": "接続するモデルを選択します。確認前にファイルの変更を表示し、書き込み前に自動バックアップします。", "选择配置目标": "設定対象を選択", "通常以 /v1 结尾,不要附加具体请求路径。": "通常は /v1 で終わる URL です。具体的なリクエストパスは付けないでください。", "部分已选模型已不可用或所选 Key 无权使用,请移除或更换 Key。": "一部の選択済みモデルは利用できないか、この Key では許可されていません。削除するか別の Key を選択してください。", "配置": "設定", "配置位置与说明": "設定の保存先と詳細", "配置列表": "設定一覧", "配置列表格式不匹配,请重启网关后刷新页面": "設定一覧の形式が一致しません。ゲートウェイを再起動してからページを更新してください。", "配置可读写": "設定の読み書き可能", "配置名称": "設定名", "配置差异": "設定の差分", "配置已保存,可在列表中点击使用": "設定を保存しました。一覧から選択して使用できます。", "配置已删除": "設定を削除しました", "配置已删除,客户端文件已同步更新": "設定を削除し、クライアントのファイルを更新しました", "配置已应用并读回校验;请重开客户端或会话": "設定を適用し、再読み取りで検証しました。クライアントまたはセッションを開き直してください", "配置已恢复并校验": "設定を復元し検証しました", "配置操作": "設定の操作", "配置文件已写入并校验;尚未验证 DSH 是否加载,请在所选客户端新建会话确认。": "設定ファイルの書き込みと検証が完了しました。DSH に読み込まれたかは未確認です。選択したクライアントで新しい会話を作成して確認してください。", "配置来源": "設定の種類", "重新填入目录能力": "一覧から機能を再入力", "重新检测": "再検出", "重新生成预览": "プレビューを再生成", "需要重新编辑:": "再編集が必要です:", "需重开会话生效": "セッションを開き直すと反映されます", "预览并保存": "プレビューして保存", "预览草稿改动": "下書きの変更をプレビュー", "高": "高", "高级选项": "詳細オプション", "默认模型": "既定モデル", "默认模型必须来自模型列表": "既定モデルはモデル一覧から選んでください", "默认模型思考等级": "既定モデルの思考レベル", "(本机网关 / 官方直连 / 第三方中转 / 本机服务),随时切换。单配置客户端切换 = 整段覆写并备份原文件;多配置客户端(如 ZCode)只改 enabled 与默认项,它自己的条目一律不动。": "(ローカルゲートウェイ / 公式直結 / サードパーティ中継 / ローカルサービス)をいつでも切り替えられます。単一設定のクライアントでは設定全体を上書きし、元のファイルをバックアップします。ZCode のような複数設定のクライアントでは enabled と既定項目だけを変更し、独自の項目には一切触れません。", "API Key 无效或无权限": "API Key が無効、または権限がありません", "API 接口文档": "API ドキュメント", "DSH 使用 Agent 页当前选择的配置目标。写入后请在 DSH 中确认工具是否出现,必要时重启对应客户端。": "DSH は Agent ページで選択した設定対象を使用します。書き込み後、DSH にツールが表示されることを確認し、必要に応じて該当クライアントを再起動してください。", "Key 明文只会写入所选客户端的本机配置文件。": "プレーンテキストの Key は、選択したクライアントのローカル設定ファイルにのみ書き込まれます。", "MCP & Skills": "MCP & Skills", "MCP 接入信息": "MCP 接続情報", "Node.js 无需额外依赖,推荐使用;Python 需要本机有 python。": "Node.js は追加依存が不要で推奨です。Python を使うには本機に python が必要です。", "{name} 接入客户端": "{name} をクライアントに接続", "上游提供商": "上流プロバイダー", "上游提供商配置": "上流プロバイダー設定", "上游提供商配置由各接入协议共享,改动后所有协议同时生效。": "上流プロバイダー設定は各アクセスプロトコルで共有され、変更はすべてのプロトコルに同時に反映されます。", "上游没有返回结果": "上流が結果を返しませんでした", "上游请求超时": "上流リクエストがタイムアウトしました", "下载图片 {index}": "画像 {index} をダウンロード", "不指定": "指定しない", "中文": "中国語", "仅搜索": "検索のみ", "仅支持单选,默认为 Tavily。": "単一選択のみ。既定は Tavily です。", "仅显示已启用且至少有一个可用模型的提供商。": "有効で、利用可能なモデルが 1 つ以上あるプロバイダーのみ表示します。", "仅显示该提供商下已启用的模型。": "このプロバイダーで有効なモデルのみ表示します。", "任务编号或原提交编号,至少提供一项": "タスク ID または元の送信 ID を指定してください", "作为远程 MCP 服务,在支持 MCP 的客户端配置里填写地址即可接入。": "リモート MCP サービスとして提供され、MCP 対応クライアントの設定に URL を書けば接続できます。", "使用已有账号生成或编辑图片,支持任务查询与本机文件保存。": "既存アカウントで画像を生成・編集し、タスクの確認とローカル保存ができます。", "保存能力配置": "機能設定を保存", "保留至 {time}": "{time} まで保存", "共 {count} 项能力": "全 {count} 機能", "内部请求本站网关时使用的网关 Key;额度、限流与请求日志记在该 Key 上。": "内部でこのゲートウェイを呼ぶときに使うゲートウェイ Key。クォータ、レート制限、リクエストログはこの Key に記録されます。", "内部调用 API Key": "内部呼び出し用 API Key", "写入失败": "書き込みに失敗しました", "写入配置": "設定を書き込む", "单次图片上限": "1 回の画像上限", "卸载失败": "アンインストールに失敗しました", "参考图允许读取的目录": "参照画像の読み取り許可フォルダー", "参考图链接或已生成图片 ID;本地桥接还可传文件路径": "参照画像の URL または生成画像 ID。ローカルブリッジではファイルパスも指定可能", "取消全选": "すべて解除", "只保存新文件,不覆盖已有不同内容。目录权限写入客户端配置,更新配置时需要重新确认。": "新規ファイルのみ保存し、内容の異なる既存ファイルは上書きしません。フォルダー権限はクライアント設定に保存され、更新時に再確認が必要です。", "可选。留空时不传,由模型映射的「思考覆盖」决定。": "任意。空欄なら送信せず、モデルマッピングの「思考オーバーライド」に任せます。", "可选,每行一个已有绝对目录。输出目录默认允许读取;其他位置的文件不会读取或上传。": "任意。既存フォルダーの絶対パスを 1 行に 1 つ指定します。出力先は標準で読み取り可能です。他の場所のファイルは読み取り・アップロードしません。", "启用 / 停用此服务": "このサービスを有効 / 無効にする", "图片分析": "画像分析", "图片占用 {used} MiB,生成中预留 {reserved} MiB。": "画像使用量 {used} MiB、生成中の予約領域 {reserved} MiB。", "图片生成配置": "画像生成設定", "图片生成配置已保存": "画像生成設定を保存しました", "图片输出目录": "画像の出力フォルダー", "在支持远程 MCP 的客户端中填写该地址,并使用网关 Key 作为 Bearer 令牌。": "リモート MCP 対応クライアントにこの URL を入力し、ゲートウェイ Key を Bearer トークンとして使います。", "复制失败,请手动选择后复制": "コピーに失敗しました。手動で選択してコピーしてください", "复制文档": "ドキュメントをコピー", "复用「账号」页的登录态,不需要额外填写搜索密钥。账号停用或删除后不会自动换号。": "「アカウント」ページのログイン状態を再利用するため、検索用キーの追加入力は不要です。アカウントを無効化または削除しても、自動で別のアカウントに切り替えません。", "复用已有账号生图,不改变 Agent 的对话模型。实际调用遵守接入 Key 的模型和提供商权限。": "既存アカウントで画像を生成し、Agent の会話モデルは変更しません。呼び出しには接続用 Key のモデル・プロバイダー権限が適用されます。", "存储上限(MiB)": "保存容量上限(MiB)", "安装目标": "インストール先", "完整的图片要求": "画像の詳細な要件", "客户端环境": "クライアント環境", "客户端调用超时设为 120 秒;后台生成超时由服务配置控制,未完成时通过任务编号查询。": "クライアントの呼び出しは 120 秒でタイムアウトします。生成処理の期限はサービス設定に従います。未完了のタスクは ID で照会してください。", "客户端配置示例": "クライアント設定例", "密钥已清除": "キーを削除しました", "密钥或账号登录态无效": "API キーまたはアカウントのログイン状態が無効です", "密钥提示": "キーのヒント", "将按服务的工具执行超时({seconds} 秒)同步写入客户端配置。": "サービスのツール実行タイムアウト({seconds} 秒)がクライアント設定に書き込まれます。", "将搜索、视觉等能力通过 MCP 或 Skills 接入客户端。": "MCP または Skills を通じて、検索や画像分析などの機能をクライアントで利用できます。", "尚未配置图片生成,请先选择可用的生图模型并保存。": "画像生成が未設定です。利用可能な画像生成モデルを選んで保存してください。", "尚未配置视觉模型,配置前调用方会收到“未配置”错误。": "視覚モデルが未設定です。設定するまで呼び出し側には「未設定」エラーが返ります。", "工具执行超时": "ツール実行タイムアウト", "工具执行超时已保存": "ツール実行タイムアウトを保存しました", "工具服务": "ツールサービス", "已写入 {count} 个客户端配置": "{count} 個のクライアント設定に書き込みました", "已处理 {count} 个目标": "{count} 件の対象を処理しました", "已复制": "コピーしました", "已失效": "無効", "已安装到 {count} 个客户端": "{count} 個のクライアントにインストールしました", "已完成": "完了", "已完成 {count} 个目标": "{count} 件の対象を完了しました", "已接入 {count} 个目标": "{count} 件の対象に接続済み", "已有账号": "既存アカウント", "已有账号搜索只支持搜索,不支持网页抓取;请求会使用绑定账号的额度与出网设置。": "既存アカウントのソースは検索のみ対応し、ページ取得はできません。リクエストには紐付けたアカウントのクォータと外部接続設定を使います。", "已检查保存的配置,未发起生图;账号实际额度与上游可用性以调用结果为准。": "保存済み設定を確認しました。画像は生成していません。実際の残量と上流の利用可否は呼び出し結果で確認できます。", "已绑定的搜索账号不存在,请重新选择": "紐付けた検索アカウントが存在しません。選び直してください", "已绑定的搜索账号已停用": "紐付けた検索アカウントは無効です", "已绑定账号不可用,请重新选择": "紐付けたアカウントが利用できません。選び直してください", "已过期或清理": "期限切れ・削除済み", "已选择 {count} / {total} 个": "{count} / {total} 件選択中", "已配置的 API Key 已失效(被删除或禁用),请重新选择并保存。": "設定済みの API Key が無効です(削除または無効化)。選び直して保存してください。", "当前提供商插件不支持账号搜索,请更新插件": "現在のプロバイダープラグインはアカウント検索に対応していません。更新してください", "当前模型:{provider} / {model}": "現在のモデル:{provider} / {model}", "当前没有可用的安装目标": "利用できるインストール先がありません", "当前没有已安装/已配置的目标": "インストール済み / 設定済みの対象はありません", "当前网关 Key 无权使用所选账号搜索来源": "このゲートウェイ Key には、選択したアカウント検索ソースを使う権限がありません", "打包为 Agent Skill,由 Agent2API 面板安装到本机客户端目录。": "Agent Skill としてパッケージ化され、Agent2API パネルからローカルのクライアントディレクトリにインストールされます。", "批量抓取 1~10 个 URL,使用后台选中的单个抓取提供商。": "サーバー側で選択した単一の取得プロバイダーを使い、1~10 個の URL を一括取得します。", "批量搜索 1~10 条查询,并发调用后台选中的提供商后合并重复来源。": "サーバー側で選択したプロバイダーで 1~10 件のクエリを並行検索し、重複するソースを統合します。", "批量网页抓取": "一括ページ取得", "批量网页抓取提供商": "一括ページ取得プロバイダー", "批量网页搜索": "一括ウェブ検索", "批量网页搜索不可用:所选提供商均未启用或未配置密钥。": "一括ウェブ検索は利用できません:選択したプロバイダーはいずれも有効化・キー設定されていません。", "批量网页搜索不可用:请启用来源并配置密钥或绑定可用账号。": "一括ウェブ検索は利用できません。ソースを有効にし、API キーを設定するか、利用可能なアカウントを紐付けてください。", "批量网页搜索可用:将使用 {ready},未配置的 {missing} 会自动跳过。": "一括ウェブ検索が利用できます:{ready} を使用し、未設定の {missing} は自動的にスキップします。", "批量网页搜索可用:所选提供商均已启用并配置密钥。": "一括ウェブ検索が利用できます。選択したプロバイダーはすべて有効でキーも設定済みです。", "批量网页搜索可用:所选来源均已启用并配置完成。": "一括ウェブ検索が利用できます。選択したソースはすべて有効で設定済みです。", "批量网页搜索提供商": "一括ウェブ検索プロバイダー", "批量网页搜索至少选择一个提供商": "一括ウェブ検索には少なくとも 1 つのプロバイダーを選択してください", "把 1~10 张图片与提示词交给后台配置的视觉模型,返回模型回复文本。": "1~10 枚の画像とプロンプトをサーバー側で設定した視覚モデルに渡し、モデルの返答テキストを返します。", "把下面这段合并到客户端配置的 mcpServers 里,并把 Key 换成你自己的。": "以下のスニペットをクライアント設定の mcpServers にマージし、Key をご自身のものに置き換えてください。", "把图片与提示词交给后台配置的视觉模型分析,并把模型回复返回给调用方的大模型。": "画像とプロンプトをサーバー側で設定した視覚モデルに渡して分析し、モデルの返答を呼び出し側のモデルに返します。", "抓取:{name}": "取得:{name}", "按参考图修改,仅在配置了可用编辑模型时提供。": "参照画像を編集します。利用可能な編集モデルが設定されている場合のみ提供します。", "按描述使用已配置的模型生图,默认一张,会消耗账号额度。": "設定済みモデルで説明から画像を生成します。標準は 1 枚で、アカウントのクレジットを消費します。", "接入协议": "アクセスプロトコル", "接入方式": "接続方式", "提供 REST API,任何能发 HTTP 请求的程序都可以携带网关 Key 直接调用。": "REST API を提供します。HTTP リクエストを送れるプログラムなら、ゲートウェイ Key を付けて直接呼び出せます。", "提供商尚未配置密钥": "プロバイダーに API キーが設定されていません", "提供商尚未配置有效密钥": "プロバイダーに有効な API キーが設定されていません", "提供商插件暂不可用": "プロバイダープラグインが一時的に利用できません", "提供商插件未安装或未启用": "プロバイダープラグインが未インストール、または無効です", "提供商暂不可用或配置有误": "プロバイダーが一時的に利用できないか、設定に誤りがあります", "提供商选择": "プロバイダー選択", "提示词,描述要让模型在图片中查看的内容": "画像内でモデルに見てほしい内容を説明するプロンプト", "插件搜索能力声明不完整,请更新插件": "プラグインの検索機能情報が不完全です。更新してください", "插件返回的搜索来源格式不正确": "プラグインが返した検索ソースの形式が正しくありません", "搜索、视觉与生图共用网关配置。本机客户端的 MCP 安装在桌面端完成。": "検索・視覚分析・画像生成はゲートウェイ設定を使います。ローカルクライアントへの MCP インストールはデスクトップで行います。", "搜索参数不符合该来源的要求": "検索パラメーターがこのソースの要件を満たしていません", "搜索提供商没有返回来源": "検索プロバイダーがソースを返しませんでした", "搜索服务拒绝了该账号,请检查账号权限": "検索サービスがこのアカウントを拒否しました。権限を確認してください", "搜索来源配置不完整": "検索ソースの設定が不完全です", "搜索请求超时": "検索リクエストがタイムアウトしました", "搜索账号不属于该提供商,请重新选择": "検索アカウントは別のプロバイダーのものです。選び直してください", "搜索账号登录态已失效,请重新登录": "検索アカウントのログインが失効しました。再度ログインしてください", "搜索额度已用完或触发限流": "検索クォータを使い切ったか、レート制限に達しました", "支持多选。每次搜索会并发调用所选提供商并合并重复来源。": "複数選択できます。検索のたびに選択したプロバイダーを並行して呼び、重複するソースを統合します。", "无法确认插件搜索能力,请更新或重启提供商插件": "検索への対応を確認できません。プロバイダープラグインを更新または再起動してください", "暂无生图记录,连接 MCP 后即可让 Agent 生成图片。": "画像生成の記録はまだありません。MCP に接続すると Agent で画像を生成できます。", "暴露的工具": "公開ツール", "更新时间": "更新日時", "最大生成并发": "同時生成の上限", "最近生成记录": "最近の生成記録", "服务与协议": "サービスとプロトコル", "服务入口": "サービス入口", "服务名称": "サービス名", "服务地址": "サービス URL", "服务状态已更新": "サービス状態を更新しました", "服务端强制单次工具执行的超时上限(同一服务的 Skill / MCP / API 共用)。安装 MCP 时会按此值写入客户端配置;修改后需在客户端重新「更新」配置并重进会话才会生效。": "サーバー側で強制する 1 回のツール実行のタイムアウト上限(同じサービスの Skill / MCP / API で共有)。MCP インストール時にこの値がクライアント設定に書き込まれます。変更後はクライアントで「更新」をやり直し、セッションに入り直すと反映されます。", "服务端强制单次工具执行的超时上限(同一服务的 Skill / MCP 共用)。安装 MCP 时会按此值写入客户端配置;修改后需在客户端重新「更新」配置并重进会话才会生效。": "サービス側で強制する単一ツール実行のタイムアウト上限(同じサービスの Skill / MCP で共用)。MCP をインストールするときにこの値をクライアント設定へ書き込みます。変更後はクライアントで「更新」を再実行し、セッションを開き直すまで反映されません。", "服务能力": "サービス機能", "服务配置": "サービス設定", "未选择账号": "アカウント未選択", "本地桥接": "ローカルブリッジ", "本地桥接会在本机运行一个 node 脚本,支持直接传本地图片路径,推荐在桌面端使用。": "ローカルブリッジは本機で Node スクリプトを実行し、ローカル画像パスをそのまま渡せます。デスクトップでの利用を推奨します。", "本地桥接需要 Node.js 18 或更新版本,自动读取授权目录的参考图并保存生成结果;HTTP 接入只返回下载地址。": "ローカルブリッジには Node.js 18 以降が必要です。許可フォルダーの参照画像を読み込み、生成結果を保存します。HTTP 接続はダウンロード URL のみ返します。", "本机接入": "ローカル接続", "本次提交的唯一编号,断线重试使用原编号": "送信ごとの固有 ID。切断後の再試行では同じ ID を使用", "查询原任务并取回图片,不再次生图或扣费。": "元のタスクを照会して画像を取得します。再生成や追加課金は行いません。", "查询生成结果": "生成結果を確認", "检查配置": "設定を確認", "正在加载安装目标…": "インストール先を読み込み中…", "正在加载工具服务…": "ツールサービスを読み込み中…", "正在加载工具服务配置…": "ツールサービス設定を読み込み中…", "每条搜索词最多 {count} 字": "検索語は 1 件につき最大 {count} 文字", "没有匹配的工具服务": "一致するツールサービスはありません", "没有可用的工具服务": "利用できるツールサービスがありません", "没有可用的生图模型,请先添加账号、启用对应插件并更新模型目录。": "利用可能な画像生成モデルがありません。アカウントを追加し、対応プラグインを有効化してモデル一覧を更新してください。", "没有可用的网关 Key": "利用できるゲートウェイ Key がありません", "没有可绑定的启用账号,请先到「账号」页添加或启用。": "紐付け可能な有効なアカウントがありません。先に「アカウント」ページで追加または有効化してください。", "没有可配置的提供商": "設定できるプロバイダーがありません", "清理这次生成的临时图片?已保存到本机的文件不会被删除,原提交编号也不会重新生图。": "このタスクの一時画像を削除しますか?ローカル保存済みのファイルは削除されず、元の送信 ID で再生成も行われません。", "清除密钥": "キーを削除", "清除配置": "設定を削除", "点击「复制文档」可复制整份 Markdown 文档,直接发给对接方即可。": "「ドキュメントをコピー」で Markdown 全文をコピーでき、そのまま連携先に渡せます。", "生图模型": "画像生成モデル", "生图账号": "画像生成アカウント", "生成中": "生成中", "生成较慢时先返回任务编号。断线后查询原任务,不自动重画;超时不代表没有扣费。": "生成に時間がかかる場合は先にタスク ID を返します。再接続後は元のタスクを照会し、自動で再生成しません。タイムアウトでも課金されている可能性があります。", "确定清除提供商 {name} 的 API Key?清除后该提供商将不可用,直到重新保存新密钥。": "{name} の API Key を削除しますか?新しいキーを保存するまでこのプロバイダーは利用できません。", "移除 {name} 配置": "{name} の設定を削除", "空白的 API Key 不会覆盖已保存的密钥。": "空の API Key は保存済みのキーを上書きしません。", "管理可供客户端安装和运行的工具服务,并配置上游提供商与能力。": "クライアントがインストールして使えるツールサービスを管理し、上流プロバイダーと機能を設定します。", "结果不确定": "結果不明", "结果保留(小时)": "保存期間(時間)", "编辑 {name}": "{name} を編集", "编辑可使用不同模型;未配置可用编辑模型时,不向 Agent 提供编辑工具。": "編集には別のモデルを使用できます。利用可能な編集モデルが未設定の場合、Agent に編集ツールを公開しません。", "编辑提供商 {name}": "プロバイダー {name} を編集", "编辑模型": "編集モデル", "网络搜索": "ウェブ検索", "网络搜索与视觉分析:网关侧配置,改完立即生效。本机客户端的安装在桌面端完成。": "ウェブ検索と視覚分析はゲートウェイ側の設定で、変更はすぐに反映されます。ローカルクライアントへのインストールはデスクトップで行います。", "聚合 Tavily、Querit、Firecrawl、Ollama Web Search,提供批量网页搜索与网页抓取能力。": "Tavily、Querit、Firecrawl、Ollama Web Search を統合し、一括ウェブ検索とページ取得を提供します。", "聚合标准搜索服务及已有 WorkBuddy、Kiro 账号的搜索能力;网页抓取仍使用标准服务。": "標準の検索サービスと既存の WorkBuddy・Kiro アカウントの検索機能を統合します。ページ取得には引き続き標準サービスを使います。", "能力提供商配置已保存": "機能プロバイダー設定を保存しました", "能力数量": "機能数", "自动选择仅在所选提供商内遵守现有路由;固定账号仍受停用、冷却与额度限制,不会自动换号。": "自動選択は選択したプロバイダー内で既存のルーティングに従います。固定アカウントも無効化・クールダウン・残量制限の対象となり、自動切り替えは行いません。", "自动选择账号": "アカウントを自動選択", "至少选择一个搜索提供商": "検索プロバイダーを 1 つ以上選択してください", "获取 API Key": "API Key を取得", "要分析的图片(1~10 张),每张为 http(s) URL 或图片 data URI": "分析する画像(1~10 枚)。各項目は http(s) URL または画像 data URI", "要抓取并提取正文的网页 URL(1~10 个)": "取得して本文を抽出するページ URL(1~10 個)", "要搜索的查询,每条并发执行(1~10 条)": "検索するクエリ。各クエリは並行実行されます(1~10 件)", "视觉分析": "視覚分析", "视觉服务配置已保存": "視覚サービス設定を保存しました", "视觉服务配置已清除": "視覚サービス設定を削除しました", "视觉模型配置": "視覚モデル設定", "视觉链路测试失败": "視覚パイプラインのテストに失敗しました", "视觉链路连通:耗时 {duration}ms": "視覚パイプライン接続 OK:{duration}ms", "触发上游限流": "上流のレート制限に達しました", "该协议已停用,已接入的客户端会收到服务停用错误。": "このプロトコルは無効です。接続済みのクライアントにはサービス無効エラーが返ります。", "该协议通过 Agent2API 面板安装到本机客户端目录。": "このプロトコルは Agent2API パネルからローカルのクライアントディレクトリにインストールされます。", "该提供商不支持网页抓取": "このプロバイダーはページ取得に対応していません", "该搜索来源使用 API Key,不接受账号绑定": "この検索ソースは API Key を使用するため、アカウントは紐付けできません", "该搜索来源使用已有账号,不接受 API Key": "この検索ソースは既存アカウントを使用するため、API Key は指定できません", "请先选择 API Key": "先に API Key を選択してください", "请先选择提供商": "先にプロバイダーを選択してください", "请先选择搜索使用的账号": "先に検索に使うアカウントを選択してください", "请求参数无效": "リクエストパラメータが無効です", "请至少选择一个目标": "少なくとも 1 つの対象を選択してください", "请选择 API Key": "API Key を選択してください", "请选择内部调用 API Key": "内部呼び出し用 API Key を選択してください", "请选择图片输出目录": "画像の出力フォルダーを選択してください", "请选择提供商与上游模型": "プロバイダーと上流モデルを選択してください", "调用用的 API Key": "呼び出し用 API Key", "账号搜索暂不可用,请检查账号及插件状态": "アカウント検索が一時的に利用できません。アカウントとプラグインの状態を確認してください", "账号搜索配置不完整,请重新选择账号或更新插件": "アカウント検索の設定が不完全です。アカウントを選び直すか、プラグインを更新してください", "超时 {seconds}s": "タイムアウト {seconds}s", "输入新密钥;留空保持不变": "新しいキーを入力。空欄なら変更しません", "运行时": "ランタイム", "还没有可用的提供商,请先在「账号」页添加账号并在「模型管理」页确认有已启用的模型。": "利用できるプロバイダーがありません。先に「アカウント」ページでアカウントを追加し、「モデル管理」ページで有効なモデルがあることを確認してください。", "还没有可用的提供商,请先在桌面端添加账号并确认有已启用的模型。": "利用できるプロバイダーがありません。デスクトップでアカウントを追加し、有効なモデルがあることを確認してください。", "这是后台生成任务的时间上限。单次 MCP 调用最多等待 20 秒,未完成时返回任务编号;查询不会重新生图。": "バックグラウンド生成タスクの制限時間です。MCP 呼び出しは最大 20 秒待機し、未完了ならタスク ID を返します。照会で再生成は行いません。", "这里管理的是「客户端能用什么」:服务是否对外提供、上游提供商与密钥、视觉分析用哪个模型。": "ここでは「クライアントが何を使えるか」を管理します。サービスの公開可否、上流プロバイダーとキー、視覚分析に使うモデルです。", "远程 HTTP": "リモート HTTP", "远程 HTTP 只接受图片 URL 或 data URI,不需要本机安装 node。": "リモート HTTP は画像 URL または data URI のみ受け付けます。本機に Node.js は不要です。", "连接成功:{count} 条结果,耗时 {duration}ms": "接続成功:{count} 件、{duration}ms", "连接测试失败": "接続テストに失敗しました", "选择处理图片的上游提供商与模型。调用时会用内部 Key 经本站网关请求该模型,协议转换、重试与故障转移全部复用网关。": "画像を処理する上流プロバイダーとモデルを選択します。呼び出し時は内部 Key でこのゲートウェイ経由でモデルにリクエストし、プロトコル変換・再試行・フェイルオーバーはすべてゲートウェイを再利用します。", "选择安装目标、运行时与调用用的 API Key。Skill 包与密钥只写入所选客户端的本机目录。": "インストール先、ランタイム、呼び出し用 API Key を選択します。Skill パッケージとキーは選択したクライアントのローカルディレクトリにのみ書き込まれます。", "选择已有目录,图片只会写入此目录及其子目录": "既存フォルダーを選択。画像はそのフォルダーと配下にのみ保存します", "选择目录": "フォルダーを選択", "选择要从中移除的客户端,未勾选的客户端保持不变。": "削除するクライアントを選択します。チェックしないクライアントは変更されません。", "选择要写入 MCP 配置的客户端。配置只动本服务那一项,客户端原有的其它 MCP 服务保持不变。": "MCP 設定を書き込むクライアントを選択します。このサービスの項目だけを変更し、既存の他の MCP サービスはそのまま残します。", "配置搜索与抓取所使用的上游提供商。调用方不再传递 provider,运行时始终使用这里保存的设置。": "検索と取得に使う上流プロバイダーを設定します。呼び出し側は provider を渡さず、実行時は常にここに保存した設定を使います。", "默认只生成一张。空间不足时先拒绝请求,不消耗生图额度;只清理过期结果,已保存到本机目录的文件不受影响。": "標準では 1 枚生成します。保存容量が足りない場合はクレジット消費前に拒否します。期限切れの結果のみ自動削除し、ローカル保存済みファイルには影響しません。", " 到 {file}": " {file} へ", " 正文已改:{edited}(其余段用官方原文)。": " 本文変更あり:{edited}(残りの段は公式原文を使用)。", "(无 id)": "(id なし)", "/v1 拒绝无 Key 请求": "/v1 はキーなしのリクエストを拒否", "0 B": "0 B", "100%(默认)": "100%(デフォルト)", "<本机IP>": "<本機の IP>", "ALTCHA(本地验证)": "ALTCHA(ローカル認証)", "Access Key ID": "Access Key ID", "Agent2API 手机端": "Agent2API モバイル", "Android 应用(APK)": "Android アプリ(APK)", "Cline 上游按请求头判定「调用方是不是 Cline 自家产品」:X-CLIENT-TYPE: cline-sdk 是硬门槛(缺了它免费池模型一律 403),版本号与平台标识让请求更贴近官方客户端的形态。这里列出的是网关默认会发的头:改某一行的值 = 覆盖默认值(也可以新增默认清单之外的自定义头);把值清空保存 = 这个头不发送;在界面删掉被改过的行 = 回落默认值。改完点「保存」,下一个 Cline 请求立即生效。不懂某一行的含义就不要动它 —— 伪装头的价值在「与官方客户端逐字一致」。": "Cline のアップストリームはリクエストヘッダーで「呼び出し元が Cline 自社製品かどうか」を判定します:X-CLIENT-TYPE: cline-sdk は必須条件で(これが欠けると無料プールのモデルは一律 403)、バージョン番号とプラットフォーム識別子がリクエストを公式クライアントの形に近づけます。ここに並ぶのはゲートウェイがデフォルトで送信するヘッダーです:いずれかの行の値を変更 = デフォルト値を上書き(デフォルト一覧にないカスタムヘッダーの追加も可);値を空にして保存 = そのヘッダーを送信しない;画面で変更した行を削除 = デフォルト値にフォールバック。変更後は「保存」をクリックすると、次の Cline リクエストから即時有効です。各行の意味が分からない場合は触らないでください —— 偽装ヘッダーの価値は「公式クライアントとの逐語一致」にあります。", "Cline 伪装头": "Cline 偽装ヘッダー", "Cline 伪装头已刷新": "Cline 偽装ヘッダーを更新しました", "Docker 容器": "Docker コンテナ", "Endpoint": "Endpoint", "Endpoint 填 https://<账户ID>.r2.cloudflarestorage.com,Region 固定填 auto。": "Endpoint に https://<アカウントID>.r2.cloudflarestorage.com を、Region には auto を指定します。", "Endpoint 填 https://cos.ap-guangzhou.myqcloud.com,Region 填 ap-guangzhou(按实际地域改)。": "Endpoint に https://cos.ap-guangzhou.myqcloud.com を、Region には ap-guangzhou を指定します(実際のリージョンに合わせて変更)。", "Endpoint 填 https://obs.cn-north-4.myhuaweicloud.com,Region 填 cn-north-4(按实际地域改)。": "Endpoint に https://obs.cn-north-4.myhuaweicloud.com を、Region には cn-north-4 を指定します(実際のリージョンに合わせて変更)。", "Endpoint 填 https://oss-cn-hangzhou.aliyuncs.com,Region 填 cn-hangzhou(按实际地域改)。": "Endpoint に https://oss-cn-hangzhou.aliyuncs.com を、Region には cn-hangzhou を指定します(実際のリージョンに合わせて変更)。", "Endpoint 形如 http://192.168.1.10:9000(自建通常用 http);Region 一般填 us-east-1。": "Endpoint は http://192.168.1.10:9000 のような形式(自前ホストでは通常 http)で、Region は通常 us-east-1 です。", "Endpoint 留空即走 AWS 官方地址;Region 必须与桶所在区域一致。": "Endpoint を空欄にすると AWS 公式アドレスを使用します。Region はバケットのリージョンと一致させてください。", "KB": "KB", "Linux 安装包(deb)": "Linux パッケージ(deb)", "Logo 不能超过 2 MiB": "ロゴは 2 MiB 以下にしてください", "Logo 仅支持 PNG、JPG、WebP 图片": "ロゴには PNG、JPG、WebP 画像のみ使用できます", "Nextcloud": "Nextcloud", "OpenAI 新版 API 用 developer 角色取代 system 承载指令,新版 OpenAI SDK 与部分客户端发的对话里会出现 role 为 developer 的消息;不少 OpenAI 兼容上游(尤其是自定义提供商的透传路径)不认识这个角色,收到就报 400。开启本项后,网关在每次转发前把 developer 角色的消息改写为 system —— 两类角色在 OpenAI 语义上等价(OpenAI 自己的迁移指南也是这么映射的),改写不影响对话内容与语义;对本来就只认 system 的各家内置上游同样无害。默认开启;关掉后 developer 消息会原样发往上游,不认识它的上游会报「角色不存在」一类的错误。": "新版の OpenAI API は system に代わって developer ロールで指示を伝えるため、最新の OpenAI SDK や一部クライアントが送る会話には role が developer のメッセージが含まれます。多くの OpenAI 互換アップストリーム(特にカスタムプロバイダーの透過パス)はこのロールを認識せず、受け取ると 400 を返します。有効にすると、ゲートウェイは毎回の転送前に developer ロールのメッセージを system に書き換えます —— 両ロールは OpenAI のセマンティクス上で等価(OpenAI 自身の移行ガイドも同じマッピング)なので、書き換えは会話の内容と意味に影響しません。もともと system しか受け付けない内蔵アップストリームにとっても無害です。デフォルトは有効。無効にすると developer メッセージはそのまま送られ、このロールを認識しないアップストリームは「ロールが存在しない」系のエラーを返します。", "QQ 群 · Telegram": "QQ グループ · Telegram", "S3 兼容存储": "S3 互換ストレージ", "Safari 没有安装按钮:点底部的「分享」,选「添加到主屏幕」,再点「添加」。": "Safari にはインストールボタンがありません。下部の「共有」→「ホーム画面に追加」→「追加」の順にタップしてください。", "Secret Access Key": "Secret Access Key", "Token 读数量级": "Token の数値表記", "UTF-8 文本文件路径,留空用内置默认提示词(通用编码助手提示词,不含任何会被上游拦截的模板句)。只在「替换 / 追加」模式下生效,透传模式不读它。": "UTF-8 テキストファイルのパス。空欄なら内蔵のデフォルトシステムプロンプトを使用(汎用コーディングアシスタント用プロンプトで、アップストリームにブロックされるテンプレート文は含みません)。「置換 / 追加」モードでのみ有効で、パススルーモードでは読み込まれません。", "WebView / 浏览器内核": "WebView / ブラウザエンジン", "Windows 安装包(NSIS)": "Windows インストーラー(NSIS)", "Windows 服务": "Windows サービス", "ZCode 套餐池(Start Plan)通道每条请求都要消耗一个当次铸造的人机验证令牌(一次性,2 分钟过期),库存低于该值时界面自动补铸到它。默认 3 个。调大能吸收突发并发,但用不掉的令牌 2 分钟就过期作废,烧的是上游风控配额。可填 1–10。": "ZCode プランプール(Start Plan)経路の各リクエストは、その場で生成された CAPTCHA トークン(1 回限り、2 分で失効)を 1 個消費します。在庫がこの値を下回ると、UI がこの値まで自動補充します。既定は 3。大きくすると突発的な同時実行を吸収できますが、使い切れなかったトークンは 2 分で失効し、上流のリスク管理クォータを消耗します。1〜10 を指定できます。", "ZCode「套餐池(Start Plan)」通道的每条推理请求都要附一个当次铸造的阿里云无痕验证令牌(一次性、约 2 分钟过期):令牌由界面里的铸造守卫静默铸好、推给网关入池,转发时逐条取用。这里的三个值管的是补货节奏:①「库存目标」= 库存低于它守卫才补铸、补到它为止,默认 3 个;②「轮询间隔」= 守卫多久看一次库存,默认 2500 毫秒,只影响反应速度(库存够用时不会多铸);③「单轮铸造上限」= 发现缺货时一轮最多铸几个,默认 1 个(连铸之间固定隔 500 毫秒)。请求密集、请求日志里连续出现「需要人机验证令牌」的 503 时,把目标与单轮上限适当调大、轮询调快,能让池子跟得上消耗 —— 代价是上游(阿里云)对铸造频率有风控,铸得越多越快越容易触发限流,且用不掉的令牌 2 分钟即过期作废、等于白烧配额,所以建议小步调。保存后对下一轮补货立即生效,不用重启。": "ZCode「プランプール(Start Plan)」経路の各推論リクエストには、その場で生成された Aliyun インビジブル CAPTCHA トークン(1 回限り、約 2 分で失効)を添える必要があります:トークンは UI 内のミントガードが静かに生成してゲートウェイのプールへ入れ、転送時にリクエストごとに取り出します。ここの 3 つの値は補充のリズムを管理します:①「在庫目標」= 在庫がこの値を下回ったときだけこの値まで補充(既定 3);②「ポーリング間隔」= ガードが在庫を確認する間隔、既定 2500 ミリ秒(反応速度にのみ影響。在庫が十分なら余計に生成しません);③「1 ラウンドの生成上限」= 在庫切れを検出した 1 ラウンドで生成する最大数、既定 1(連続生成の間は固定 500 ミリ秒)。リクエストが密で、リクエストログに「CAPTCHA トークンが必要」の 503 が続く場合は、目標と 1 ラウンド上限を適度に上げ、ポーリングを速めるとプールが消費に追いつきます —— ただし上流(Aliyun)は生成頻度にリスク管理があり、多く速く生成するほど制限に触れやすく、使い切れなかったトークンは 2 分で失効してクォータの無駄になるため、小刻みな調整を推奨します。保存すると次の補充ラウンドから即時反映、再起動不要。", "beta 版": "beta 版", "iOS 应用": "iOS アプリ", "models.dev 元数据": "models.dev メタデータ", "models.dev 元数据已更新({count} 条)": "models.dev メタデータを更新しました({count} 件)", "models.dev 是一个开源的模型资料库(社区维护),这里用它补齐「上游没告诉我们」的模型能力:上下文窗口、最大输出、工具调用、图片、视频、是否支持思考,以及这个模型认识哪些思考档位。优先级是:你在「模型能力」里手工改的值 > 上游清单自己声明的值 > models.dev 的值 —— 它只填上游没声明的空位,从不推翻上游已声明的。网关随包内嵌了一份快照,所以离线、首次启动、访问不通时也有数据;开启时会按「模型目录刷新」任务的间隔联网更新(同一轮里一并刷新,也可在这里立即刷新)。关闭只停联网刷新,已经拿到的数据继续用。": "models.dev はコミュニティが維持するオープンソースのモデルデータベースです。上流が教えてくれなかった情報(コンテキスト長、最大出力、ツール呼び出し、画像、動画、推論の可否、およびそのモデルが実際に受け付ける推論レベル)をここで補います。優先順位は「モデル能力」で手動変更した値 > 上流カタログの宣言値 > models.dev の値 —— 上流が宣言した値を覆すことはなく、空欄だけを埋めます。スナップショットを同梱しているため、オフライン・初回起動・通信不可でもデータがあります。有効時は「モデルカタログ更新」タスクの間隔でオンライン更新します(同じ回でまとめて、またはここで即時)。オフにするとオンライン更新だけが止まり、取得済みのデータは引き続き使われます。", "models.dev 模型元数据": "models.dev モデルメタデータ", "systemd 服务": "systemd サービス", "{count} 条": "{count} 件", "{count} 条 · 来自{origin}{at} · {mode}": "{count} 件 · 出典: {origin}{at} · {mode}", "{count} 条规则,按列表顺序执行": "{count} 件のルールを一覧順に実行", "{d} 天 {h} 小时": "{d} 日 {h} 時間", "{h} 小时 {m} 分钟": "{h} 時間 {m} 分", "{label} 提示词文件": "{label} のシステムプロンプトファイル", "{label} 的提示词模式": "{label} のシステムプロンプトモード", "{label}({message})": "{label}({message})", "{lines} 行、{chars} 字符(按当前草稿计)": "{lines} 行、{chars} 文字(現在の下書きで算出)", "{minutes} 分钟": "{minutes} 分", "{models} 同时出现在两块设置里,会按「辅助识图」处理。想改的话,把其中一个从这边的模型名单里去掉。": "{models} が両方のブロックに入っています。この場合は「補助読み取り」で処理されます。変更するには、どちらかのモデル一覧から外してください。", "{mode}生效:上游收到的 system 来自{source}{lines}。": "{mode}が有効:アップストリームが受け取る system の出所は{source}{lines}。", "{m} 分钟": "{m} 分", "{noun}不能为空(可填 {min}–{max})": "{noun}は空にできません({min}–{max} を入力できます)", "{noun}必须在 {min}–{max} 之间(当前填的是 {text})": "{noun}は {min}–{max} の範囲で入力してください(現在の入力値:{text})", "{noun}必须是整数": "{noun}は整数でなければなりません", "{n} B": "{n} B", "{n} GB": "{n} GB", "{n} KB": "{n} KB", "{n} MB": "{n} MB", "{n} 个头将随每个 Cline 请求发送": "{n} 個のヘッダーが各 Cline リクエストとともに送信されます", "{n} 台可选 · 点此切换": "{n} 台 · タップして切り替え", "{n} 项 · {shown} 显示": "{n} 項目 · {shown} 表示", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "メニュー {total} 件 · 表示 {shown} · 非表示 {hidden} · グループ {groups} 件", "{way}的适用模型": "{way}の対象モデル", "⚠️ 密钥警告": "⚠️ キーの警告", "⚠️ 已关闭「{label}」的机器人校验": "⚠️「{label}」のボット対策を無効にしました", "⚠️ 机器人校验已关闭": "⚠️ ロボット検証をオフにしました", "✅ Cline 伪装头已保存": "✅ Cline 偽装ヘッダーを保存しました", "✅ models.dev 模型元数据已开启": "✅ models.dev モデルメタデータを有効にしました", "✅ 云同步设置已保存": "✅ クラウド同期の設定を保存しました", "✅ 会话图片压缩已开启": "✅ 画像圧縮を有効にしました", "✅ 出站指纹脱敏已开启": "✅ フィンガープリントのマスキングをオンにしました", "✅ 密码已修改,其他设备的登录已失效": "✅ パスワードを変更しました。他の端末のログインは無効になりました", "✅ 导入完成:{summary}": "✅ インポート完了:{summary}", "✅ 已上传到云端({size})": "✅ クラウドにアップロードしました({size})", "✅ 已为「{label}」装上网关自带提示词": "✅ 「{label}」にゲートウェイ内蔵のシステムプロンプトを適用しました", "✅ 已从云端恢复{note}": "✅ クラウドから復元しました{note}", "✅ 已保存:{label}": "✅ 保存しました:{label}", "✅ 已保存:{label} {value}": "✅ 保存しました:{label} {value}", "✅ 已保存:指定错误码直接换号": "✅ 保存しました:指定エラーコードで直接アカウント切替", "✅ 已保留 {days} 天": "✅ {days} 日間保持しました", "✅ 已保留 {days} 天,超出部分已清理": "✅ {days} 日間保持し、超過分を削除しました", "✅ 已加密备份 {n} 张表({size}),包含恢复密钥:{file}": "✅ {n} テーブルを暗号化バックアップしました({size})。復元鍵を含む:{file}", "✅ 已备份 {n} 张表({size})到 {file}": "✅ {n} テーブル({size})を {file} へバックアップしました", "✅ 已导入账号密钥,请继续下载": "✅ アカウントキーをインポートしました。ダウンロードを続けてください", "✅ 已导出 {count} 个账号{note}{file}": "✅ {count} 件のアカウントをエクスポートしました{note}{file}", "✅ 已开启「{label}」的机器人校验": "✅「{label}」のボット対策を有効にしました", "✅ 已恢复 {n} 张表{note}": "✅ {n} テーブルを復元しました{note}", "✅ 已改用 k / M / B 缩写": "✅ k / M / B の略記に切り替えました", "✅ 已改用本地量级词(万 / 亿式)": "✅ ローカル量級語(万 / 億式)に切り替えました", "✅ 已自动创建网关 Key「默认」(可在「网关 Key」页查看)": "✅ ゲートウェイキー「デフォルト」を自動作成しました(「ゲートウェイキー」ページで確認できます)", "✅ 已解除内容拦截降级": "✅ コンテンツブロックのフォールバックを解除しました", "✅ 开发者角色兼容已开启": "✅ developer ロール互換を有効にしました", "✅ 指纹脱敏设置已保存": "✅ フィンガープリントのマスキング設定を保存しました", "✅ 数量上限已设为 {count} 条": "✅ 件数上限を {count} 件に設定しました", "✅ 数量上限已设为 {count} 条,超出部分已清理": "✅ 件数上限を {count} 件に設定し、超過分を削除しました", "✅ 机器人校验已开启": "✅ ロボット検証をオンにしました", "✅ 第三方模型回答完自动折叠过程已开启": "✅ サードパーティモデルの回答後の工程の自動折りたたみを有効にしました", "✅ 设置已保存,应用正在重启…": "✅ 設定を保存しました。アプリを再起動しています…", "✅ 调试模式已关闭": "✅ デバッグモードをオフにしました", "✅ 调试模式已开启": "✅ デバッグモードをオンにしました", "✅ 路由设置已保存": "ルーティング設定を保存しました", "✅ 连接成功:{path}": "✅ 接続に成功しました:{path}", "、{n} 个自定义提供商": "、カスタムプロバイダー {n} 件", "。事件日志、请求明细、调试报文与面板登录态保持不变。替换前会自动把当前业务数据备份到配置目录的 backups/ 下。": "。イベントログ・リクエスト明細・デバッグ通信記録・パネルのログイン状態は変更されません。置き換え前に現在の業務データを設定ディレクトリの backups/ に自動でバックアップします。", "「{label}」将从 {previous} 天改为 {days} 天。": "「{label}」を {previous} 日から {days} 日へ変更します。", "「{label}」将从 {previous} 条改为 {count} 条。": "「{label}」を {previous} 件から {count} 件に変更します。", "「{label}」改用内置默认提示词": "「{label}」を内蔵のデフォルトシステムプロンプトに切り替えました", "「{label}」的提示词文件已更新": "「{label}」のシステムプロンプトファイルを更新しました", "「{label}」的提示词正文已更新": "「{label}」のシステムプロンプト本文を更新しました", "「{label}」的模式改为「{mode}」": "「{label}」のモードを「{mode}」に変更しました", "「{label}」的网关自带提示词已改回官方原文": "「{label}」のゲートウェイ内蔵システムプロンプトを公式原文に戻しました", "「{label}」的网关自带提示词正文已更新": "「{label}」のゲートウェイ内蔵システムプロンプトの本文を更新しました", "「模型管理」里每个能力的来源标记(上游 / models.dev / 已覆盖)读的就是这份数据;映射弹窗的思考档位下拉也按这里的数据只列该模型真实认识的档位。": "「モデル管理」の各能力の出典表示(上流 / models.dev / 上書き済み)はこのデータを読んでいます。マッピングダイアログの推論レベル選択も、ここに基づいてそのモデルが実際に受け付けるレベルだけを並べます。", "「用哪份提示词」本来是按上游分别决定的事,所以每家可以有自己的模式、提示词文件与正文:不在这里列出的提供商一律沿用上面那份默认设置,「跟随默认」把这一家取消、回到默认。带「网关自带」那一行的家(目前是 ZCode 两家)默认就列在这里 —— 那一段是网关自己装上去的文本,不来自客户端也不来自提示词文件,默认开启、可以关掉,也可以改它的正文(改过的那一段以你的文本为准);关掉后还能不能通过上游校验,取决于上游当下的口径,行内说明了实测依据。「模式 / 提示词文件 / 正文」管的是客户端自己的 system 怎么处理,与那个开关是两件事。": "「どのシステムプロンプトを使うか」は本来アップストリームごとに決める話なので、各プロバイダーが独自のモード・システムプロンプトファイル・本文を持てます:ここに表示されないプロバイダーはすべて上記のデフォルト設定を引き継ぎ、「デフォルトに従う」でそのプロバイダーの設定を解除してデフォルトに戻します。「ゲートウェイ内蔵」の行があるプロバイダー(現在は ZCode の 2 社)はデフォルトでここに表示されます —— その部分はゲートウェイが自ら組み込むテキストで、クライアントからもシステムプロンプトファイルからも来ません。デフォルトはオンで、オフにもでき、本文も変更できます(変更した部分はあなたのテキストが優先)。オフにした後でアップストリームの検証を通過できるかは、アップストリームの現時点の基準次第です(行内に実測の根拠を記載)。「モード / システムプロンプトファイル / 本文」はクライアント自身の system をどう扱うかの設定で、あのスイッチとは別物です。", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "「設定」は固定項目のため、そのグループはまとめて非表示にできません。他のメニューは個別に非表示にできます", "「请求日志」页的逐条请求记录,默认 99999 天(近似全量保留),可填 1–99999 天。": "「リクエストログ」ページのリクエストごとの記録。既定は 99999 日(ほぼ全量保持)で、1〜99999 日を指定できます。", "「请求日志」页的逐条请求记录,默认 99999 天,可填 1–99999 天;同时受数量上限限制。": "「リクエストログ」ページのリクエストごとの記録。既定は 99999 日で、1–99999 日を指定できます。件数上限も適用されます。", "一个 .a2ab 文件即可跨机器恢复,账号、网关 Key、GitHub 令牌与云同步凭据无需另行复制密钥。插件程序与库外文件不在整库备份范围。": "1 つの .a2ab ファイルで別端末に復元でき、アカウント、ゲートウェイ Key、GitHub トークン、クラウド同期認証情報の鍵を別途コピーする必要はありません。プラグインのプログラムとデータベース外のファイルは対象外です。", "一段内置装配": "内蔵の定型ブロック", "三档数据各自独立计时,超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件;请求日志是网关每次转发到上游的逐条记录;按天聚合供报表页的热力图与按天趋势使用。请求日志与按天聚合默认 99999 天(约 274 年,效果上等于全量保留),事件日志默认 30 天。把某一档改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。三档的可填范围均为 1–99999 天。": "3 種類のデータはそれぞれ独立して計時され、保存日数を超えた部分は削除されます:イベントログはログイン、アカウント切替、429 切替といったシステムイベント;リクエストログはゲートウェイがアップストリームへ転送するたびの記録;日次集計はレポートページのヒートマップと日次トレンドに使われます。リクエストログと日次集計の既定は 99999 日(約 274 年、実質的に全量保持)、イベントログの既定は 30 日です。いずれかを小さくして(例:30 日→7 日)保存すると、超えた履歴データは即座に削除され、元に戻せません。大きくするか変更しない場合は何も削除されません。3 つとも指定できる範囲は 1〜99999 日です。", "三段各自成块,所以分开编辑": "3 つの段はそれぞれ独立したブロックになるため、分けて編集します", "上传": "アップロード", "上传 Logo": "ロゴをアップロード", "上传中…": "アップロード中…", "上传内容含加密后的账号凭证与网关配置": "アップロード内容には暗号化されたアカウント認証情報とゲートウェイ設定が含まれます", "上传到云端": "クラウドへアップロード", "上传失败:{message}": "アップロードに失敗しました:{message}", "上次同步:{time}({action})": "前回の同期:{time}({action})", "上次成功刷新的结果(存在本机数据库里)": "前回の更新に成功した結果(ローカルデータベースに保存)", "上游 CLI 版本": "上流 CLI のバージョン", "上游客户端版本": "上流クライアントのバージョン", "上游按": "アップストリームは", "上游按「结构」校验身份:三段必须各自成块,所以这里分开编辑三段(不能合成一段)。动态段里的运行值写成占位符,发请求时才替换:{cwd} 工作目录、{platform} 平台、{shell} shell、{os_version} 系统版本、{git} 是否 git 仓库、{provider} 提供方标识、{model} 模型名。清空某一段 = 那一段恢复官方原文。第三段发出时前面会自带一个空行(官方形状)。": "アップストリームは「構造」で身元を検証します:3 つの段はそれぞれ独立したブロックとして並ぶ必要があるため、ここでは 3 つの段を別々に編集します(1 段にまとめることはできません)。動的段の実行値はプレースホルダーとして記述し、リクエスト送信時に置換されます:{cwd} 作業ディレクトリ、{platform} プラットフォーム、{shell} シェル、{os_version} OS バージョン、{git} git リポジトリかどうか、{provider} 提供元識別子、{model} モデル名。ある段を空にする = その段は公式原文に戻ります。第 3 段は送信時に先頭へ空行が 1 つ自動的に付きます(公式の形状)。", "上游未配置": "上流が未設定", "上游模型繁忙时会先排队(回一句「建议 N 秒后再来」):网关等一会儿再发同一请求,最多等几次。默认 2 次,可填 0–10;填 0 表示不等待,排队直接返回 503 并说明「不是登录态或额度问题」。": "アップストリームのモデルが混雑していると、まずキューイングされます(「N 秒後に再試行することをおすすめします」と返ってくる形で):ゲートウェイはしばらく待ってから同じリクエストを再送し、最大で数回まで待ちます。デフォルトは 2 回で、0–10 を入力できます。0 を入力すると待たずに、キューイングが直接 503 を返し「ログイン状態やクォータの問題ではない」と説明します。", "上游用「逐字精确匹配」的方式审核请求体(不是语义审核):客户端注入的固定模板句、计费头字段名、以及某些裸错误码出现在报文里就会整单拦截,返回 400。开启本项后,网关在每次转发前改写这些指纹 —— 表头键值整段删除,承载语义的模板句只换一个词(如 official CLI for Claude → official CLI tool for Claude),对话内容与语义都不受影响。规则集是内置的,不需要也无法维护词表。关掉本项后客户端模板会原样发往上游,可能重新出现模板句被误拦的报错。": "アップストリームはリクエスト本文を「逐語完全一致」で審査します(意味的な審査ではありません):クライアントが注入する固定テンプレート文、課金ヘッダーのフィールド名、および一部の裸のエラーコードがメッセージに現れると、リクエスト全体がブロックされ 400 が返ります。本項目をオンにすると、ゲートウェイは転送のたびにこれらのフィンガープリントを書き換えます —— ヘッダーのキーと値は丸ごと削除し、意味を担うテンプレート文は 1 語だけ置き換えます(例:official CLI for Claude → official CLI tool for Claude)。会話の内容と意味は一切影響を受けません。ルールセットは内蔵で、単語リストを保守する必要もできません。本項目をオフにするとクライアントのテンプレートがそのままアップストリームへ送られ、テンプレート文が誤ってブロックされるエラーが再発する可能性があります。", "上游请求四个阶段各自的等待上限(秒,1~3600):①「连接中超时」= 建立 TCP/TLS 连接或代理隧道的最大等待,默认 30 秒;②「等待响应超时」= 请求发出后等上游响应头的最大时间,默认 300 秒 —— 网关请求上游恒带 stream,响应头在 SSE 建立时就到达,与模型思考多久无关;③「流式响应空闲超时」= 流式响应相邻两块数据之间允许的最大空闲,收到新数据即重新计时,默认 300 秒 —— 上游长时间不吐数据即判定连接僵死并断开;④「非流式响应超时」= 读完整份非流式响应体的总预算(一次性计时、不重置),默认 300 秒。四项都是「等待上限」,只要数据还在来,正常的流式回答就一直往下传。保存后对下一个请求立即生效,不用重启。": "アップストリームリクエストの 4 段階それぞれの待機上限(秒、1~3600):①「接続タイムアウト」= TCP/TLS 接続またはプロキシトンネルを確立する最大待機時間、デフォルト 30 秒;②「応答待ちタイムアウト」= リクエスト送出後、アップストリームのレスポンスヘッダーを待つ最大時間、デフォルト 300 秒 —— ゲートウェイはアップストリームへのリクエストに常に stream を付け、レスポンスヘッダーは SSE の確立時点で到着するため、モデルがどれだけ考えるかとは無関係です;③「ストリーミング応答アイドルタイムアウト」= ストリーミング応答の隣接する 2 つのデータ間に許される最大アイドル時間で、新しいデータを受信すると計時がリセットされます、デフォルト 300 秒 —— アップストリームが長時間データを出さなければ接続が死んだと判定して切断します;④「非ストリーミング応答タイムアウト」= 非ストリーミング応答本文全体を読み切る総予算(一度だけ計時、リセットなし)、デフォルト 300 秒。4 項目はいずれも「待機上限」で、データが流れ続けている限り、正常なストリーミング応答はそのまま流れ続けます。保存後は次のリクエストから即時有効で、再起動は不要です。", "上游调试报文": "アップストリームのデバッグペイロード", "上移": "上へ", "上移规则": "ルールを上へ移動", "下次自动重试:{time}": "次の自動再試行:{time}", "下游正文": "ダウンストリーム本文", "下移": "下へ", "下移规则": "ルールを下へ移動", "下载失败:{message}": "ダウンロードに失敗しました:{message}", "不一致": "不一致", "不做会话识别,每条请求都重新按策略选路。": "セッションを識別せず、リクエストごとに戦略に従って選び直します。", "不做图片兼容": "画像互換処理を行わない", "不可用": "利用不可", "与网关同源的面板;完整管理功能在桌面端": "ゲートウェイと同一オリジンのパネルです。詳細な管理はデスクトップ版で行います", "两张开关分别管桌面端(应用内窗口,也包含开启局域网访问后从其他设备访问的那份面板)与网页端(Docker / 服务端自托管的浏览器面板)。默认都开启;桌面端只在本机使用、嫌验证耗时可以关掉,网页端暴露在网络上,建议保持开启。": "2 つのスイッチはデスクトップ側(アプリ内ウィンドウ。LAN アクセス有効時に他端末から開くパネルも含む)と Web 側(Docker / サーバーが配信するブラウザパネル)を個別に制御します。既定はどちらも有効です。ローカル専用で認証の待ち時間が気になる場合はデスクトップ側を切っても構いませんが、ネットワークに露出する Web 側は有効のままを推奨します。", "两次输入的备份密码不一致": "バックアップのパスワードが一致しません", "两次输入的新密码不一致": "新しいパスワードが一致しません", "两次重试之间的等待时间,两项共用,可填 0–300 秒。": "2 回のリトライ間の待機時間。2 項目で共用し、0–300 秒を入力できます。", "两种方式不会互相自动切换。": "2つの方式が自動で切り替わることはありません。", "两组设置分别用于桌面端托管的网页管理面板与网页端(Docker / 服务端)的浏览器面板。是否可被其他设备访问取决于网络访问与防火墙设置,不限于局域网。两端默认都开启人机验证,建议保持开启。": "2 つの設定グループは、デスクトップアプリが配信する Web 管理パネルと、Docker / サーバーが配信するブラウザーパネルにそれぞれ適用されます。他の端末からのアクセスはネットワークアクセスとファイアウォールの設定で決まり、LAN に限定されません。人間であることの確認はどちらも既定で有効です。有効のままにすることを推奨します。", "为了安全,开启前需要先注册一个": "安全のため、オンにする前に", "主进程未返回启动设置,请更新桌面端后重试": "メインプロセスが起動設定を返しませんでした。デスクトップアプリを更新してから再試行してください", "主进程桥不可用": "メインプロセスのブリッジを利用できません", "主题": "テーマ", "事件日志": "イベントログ", "事件日志保留天数": "イベントログの保存日数", "云同步": "クラウド同期", "产品名": "製品名", "产品名不能包含斜杠或版本号,请改用前缀匹配": "製品名にスラッシュやバージョン番号は含められません。前方一致を使用してください。", "人机验证": "人間確認", "人机验证失败": "人間確認に失敗しました", "人机验证已完成": "人間確認が完了しました", "人机验证还在计算,请稍候": "人間確認を計算中です。しばらくお待ちください", "仅在同一会话、同一问题和相同权限范围内复用;追问新细节会重新识读。缓存只存在本机内存。": "同じ会話・質問・権限範囲内でのみ結果を再利用します。新しい詳細を尋ねると再度読み取ります。キャッシュはローカルメモリにのみ保持されます。", "仅在账号、配置、签到或余额等实质内容变化时上传;导出时间或查询时间单独变化不会触发上传。": "アカウント、設定、チェックイン結果、残高などの実質的な内容が変わった場合のみアップロードします。エクスポート時刻や照会時刻だけの変更ではアップロードしません。", "仅处理本次转发副本,不修改客户端选择,也不删除当前或历史图片。": "今回転送するコピーのみを処理します。クライアントの選択は変更せず、現在および過去の画像も削除しません。", "仅影响面板登录与注册,不影响 API Key 调用。保存后生效,已登录会话不会退出。": "パネルのログインと登録にのみ適用され、API キーによる呼び出しには影響しません。保存後すぐに有効になり、既存のセッションはログアウトされません。", "仅本机": "この端末のみ", "仅用现有数据、不联网刷新": "既存データのみ使用、オンライン更新なし", "从云端恢复": "クラウドから復元", "从桌面图标启动,全屏、无地址栏。想卸载:长按图标删除,或清除浏览器站点数据。": "ホーム画面のアイコンから起動します。全画面・アドレスバーなし。削除するにはアイコンを長押しして削除するか、ブラウザのサイトデータを消去してください。", "优先使用当前路由内的视觉模型": "現在のルート内の視覚モデルを優先", "优先在当前路由内找可用的视觉模型,找不到就用 {model} 直接回答,不再回到原模型。": "現在のルート内で使える視覚モデルを優先し、なければ {model} が元のモデルの代わりに直接回答します。", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "グループ・順序・表示設定を既定に戻します。作成したグループは削除されます(メニューは失われません)。", "会话图片压缩设置已刷新": "画像圧縮の設定を再読み込みしました", "位置": "場所", "位置与端口": "場所とポート", "使用 Rust 正则语法,保存时由后端校验;不支持环视和反向引用。": "Rust の正規表現構文を使用し、保存時にバックエンドで検証します。先読み・後読みと後方参照は使用できません。", "使用中文单位(亿 / 万)": "中国語の単位を使う(億 / 万)", "使用本地量级词(万 / 亿式)": "ローカル量級語(万 / 億式)を使用", "使用默认值": "既定値を使用", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "サイドバーのレイアウトモジュールが読み込まれていません(ui/sidebar-layout.js を app.js より前に読み込む必要があります)。", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "サイドバーにメニューが表示されていません。「設定 → 表示 → サイドバーのメニュー」で必要な項目をオンにしてください。", "侧边栏菜单": "サイドバーのメニュー", "保存上游原始报文(请求头、请求体、响应头、响应体)": "アップストリームの生メッセージを保存(リクエストヘッダー、リクエストボディ、レスポンスヘッダー、レスポンスボディ)", "保存单独配置": "モデル別設定を保存", "保存后以这里的文本为准": "保存後はここのテキストが優先されます", "保存后对下一轮补货立即生效,不用重启。守卫跑在应用界面里:轻量模式关窗销毁界面期间无法铸造,走套餐池(Start Plan)通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。": "保存すると次の補充ラウンドから即時反映され、再起動は不要です。ガードはアプリの UI 内で動作します:軽量モードでウィンドウを閉じて UI が破棄されている間はトークンを生成できず、プランプール(Start Plan)経路のリクエストは理由付きで 503 としてリクエストログに記録されます。UI を開き直すと自動的に復旧します。", "保存后应用将重启以生效。": "保存後、有効にするためアプリが再起動します。", "保存后状态读取立即生效。后台不会自动生成令牌;需要人机验证时,在账号的「套餐明细」中主动开始验证。模型请求免验证时无需保持界面打开。": "保存後、状態取得の設定はすぐに反映されます。トークンは自動生成しません。認証が必要な場合はアカウントの「プラン詳細」で開始してください。モデルリクエストが認証不要の場合、画面を開いたままにする必要はありません。", "保存后立即生效,不用重启:策略与粘性作用于**下一次**转发的选路,进行中的请求不受影响。": "保存するとすぐ反映、再起動不要:戦略と粘着は**次の**転送の選択から効き、処理中のリクエストには影響しません。", "保存后立即生效,不用重启;次数用尽仍失败时,错误原样返回给客户端。": "保存後は即時有効で再起動は不要です。回数を使い切ってもなお失敗する場合、エラーはそのままクライアントへ返されます。", "保存后立即生效,不用重启;超时按上游失败处理(计入请求日志的「错误」列,并按「请求重试」的设置决定是否重试)。": "保存後は即時有効で再起動は不要です。タイムアウトはアップストリームの失敗として扱われます(リクエストログの「エラー」列に計上され、「リクエストリトライ」の設定に従ってリトライするかどうかが決まります)。", "保存后立即生效:保留天数和数量上限同时生效,调小任一项会立即清理超出的历史数据,且不可恢复。": "保存後すぐに有効になります。保存日数と件数上限の両方が適用され、いずれかを減らすと超過した履歴データが直ちに削除されます。元に戻すことはできません。", "保存后立即生效:改小保留天数会立刻删除超出的历史数据,且不可恢复。": "保存後は即時有効:保存日数を小さくすると超過した履歴データがすぐに削除され、元に戻せません。", "保存在当前网关,登录页也会公开显示。不会更改安装包、快捷方式、系统托盘图标或软件版本信息。": "現在のゲートウェイに保存され、ログイン画面にも公開表示されます。インストーラー、ショートカット、システムトレイのアイコン、ソフトウェアのバージョン情報は変更しません。", "保存并重启": "保存して再起動", "保存设置": "設定を保存", "保持当前路由范围,不跳到其他路由组。": "現在のルート範囲を保ち、他のルートグループには移りません。", "保活换行丢弃": "keepalive 改行の除去", "保留原图和对话,由视觉模型直接回答本次请求。": "元の画像と会話を保持し、視覚モデルが今回のリクエストに直接回答します。", "保留原图,选择视觉模型": "元の画像を保持し、視覚モデルを選択", "保留图片中的文字、代码、数字、布局与状态。识读失败就停止,不删图后继续回答。": "画像内の文字、コード、数値、配置、状態を保持します。読み取りに失敗した場合は停止し、画像を削除して回答を続けることはありません。", "保留天数已刷新": "保存日数を更新しました", "保留旧版配置兼容,当前不会自动连铸。每次点击「开始验证」只取得一枚令牌,失败或取消后停止。": "旧設定との互換性のために保持します。トークンの自動連続生成は行いません。「認証を開始」を押すたびにトークンを一つ取得し、失敗またはキャンセルで停止します。", "保留草稿并读取最新设置": "下書きを保持して最新設定を読み込む", "修改密码": "パスワード変更", "修改密码需要输入当前密码;修改成功后,其他设备 / 浏览器上的登录会立即失效,当前这条会话保留。": "パスワード変更には現在のパスワードが必要です。成功すると他の端末・ブラウザのログインは即座に無効になり、このセッションだけが残ります。", "值": "値", "值与默认值相同的行不占覆盖(存的是「改过的键」,不是全量配置);值留空保存表示这个头不发送,删除改过的行表示回落默认值。改完立即生效,不用重启。": "デフォルト値と同じ行は上書きとして扱われません(保存されるのは「変更されたキー」であり、全量の設定ではありません)。値を空にして保存するとそのヘッダーは送信されず、変更した行を削除するとデフォルト値にフォールバックします。変更後は即時有効で、再起動は不要です。", "值(留空 = 不发送)": "値(空欄 = 送信しない)", "停止并说明原因": "停止して理由を表示", "像素": "px", "允许其他设备访问前,需要设置面板管理员账号与密码。注册完成后会继续开启流程并重启应用。": "他の端末からのアクセスを許可する前に、パネル管理者のユーザー名とパスワードを設定してください。登録完了後に有効化を続行し、アプリを再起動します。", "允许其他设备访问网关": "他の端末からゲートウェイへのアクセスを許可", "允许局域网内的设备访问网关": "LAN 内のデバイスにゲートウェイへのアクセスを許可", "允许无 Key 裸跑": "キーなし実行を許可", "允许浏览器里的页面跨来源调用网关(/v1/*)": "ブラウザー内のページからクロスオリジンでゲートウェイを呼び出すことを許可(/v1/*)", "允许的域名": "許可するホスト名", "先发送原图,明确拒图后补救": "まず元の画像を送信し、明確に拒否された場合のみ互換処理", "先把图片交给视觉模型读一遍,再让原模型结合读到的内容回答。": "まず視覚モデルに画像を読ませ、読み取った内容を踏まえて元のモデルが回答します。", "全局配置": "グローバル設定", "全部已配置": "すべて設定済み", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 中,加密密钥单独保存在库外。跨机器备份请使用「整库备份 / 恢复」,不要只复制数据库。更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "アカウント、ログ、リクエスト記録、デバッグデータ、設定は agent2api.db に保存され、暗号鍵は別に保存されます。端末間の移行にはデータベースだけをコピーせず、全体バックアップ / 復元を使用してください。保存先を変更するには AGENT2API_PROXY_HOME を設定して再起動します。", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 这一个 SQLite 数据库里。备份时只需拷贝这个文件;更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "すべてのデータ(アカウント、イベントログ、リクエスト記録、デバッグメッセージ、設定)は、設定ディレクトリ配下の agent2api.db という単一の SQLite データベースにまとめて保存されます。バックアップ時はこのファイルをコピーするだけで済みます。保存場所を変更する場合は、環境変数 AGENT2API_PROXY_HOME を設定してからプログラムを再起動してください。", "全部角色": "すべてのロール", "全部角色沿用原有行为,包含思考内容和工具参数;指定角色时只改消息正文,未选角色及思考内容、工具参数保持原样。": "すべてのロールでは、推論内容とツール引数を含む従来の動作を維持します。ロールを指定するとメッセージ本文のみを書き換え、未選択のロール、推論内容、ツール引数は変更しません。", "共享视觉模型已变更,请重新确认并保存,避免把图片交给未经确认的模型。": "共有の視覚モデルが変更されました。未確認のモデルに画像を送信しないよう、再度確認して保存してください。", "共用设置:{providers}": "共有設定:{providers}", "关闭后不再提供网页管理面板,本机桌面程序仍可正常管理;已开启的 API 转发不受影响。": "無効にすると Web 管理パネルの配信を停止します。本機のデスクトップアプリでは引き続き管理でき、API 転送には影響しません。", "关闭后手动上传 / 下载也会被拒绝。": "オフにすると手動のアップロード / ダウンロードも拒否されます。", "关闭后网关只监听 127.0.0.1,其他设备将无法直接连接,网页管理面板也会一并关闭。已配置的网关 Key 与账号不受影响。": "無効にすると、ゲートウェイは 127.0.0.1 のみで待ち受け、他の端末から直接接続できなくなります。Web 管理パネルも無効になります。既存のゲートウェイキーとアカウントには影響しません。", "关闭后网关回到只监听 127.0.0.1,局域网内的设备将无法继续访问;已配置的网关 Key 与账号都不受影响。": "オフにするとゲートウェイは 127.0.0.1 のみの待ち受けに戻り、LAN 内のデバイスはアクセスできなくなります。設定済みのゲートウェイキーとアカウントは影響を受けません。", "关闭后,管理界面不再从局域网提供,只有本机的桌面程序可以管理;已开启的 API 转发不受影响。": "オフにすると、管理画面は LAN に公開されなくなり、本機のデスクトップアプリからのみ管理できます。有効になっている API 転送は影響を受けません。", "关闭局域网访问": "LAN アクセスをオフにする", "关闭并重启": "閉じて再起動", "关闭思考": "推論を無効化", "关闭窗口即退出程序,后台转发随之中断": "ウィンドウを閉じるとプログラムが終了し、バックグラウンドの転送も中断されます", "关闭窗口时最小化到托盘": "ウィンドウを閉じたときはトレイに最小化", "关闭窗口时程序不退出,转发继续在后台运行;退出请用托盘菜单": "ウィンドウを閉じてもプログラムは終了せず、転送はバックグラウンドで継続します。終了するにはトレイのメニューから操作してください", "关闭网络访问": "ネットワークアクセスを無効化", "兼容处理最长等待": "互換処理の最大待ち時間", "兼容处理最长等待(秒)": "互換処理の最大待ち時間(秒)", "内容拦截降级": "コンテンツブロックのフォールバック", "内置识别、自定义规则与来源声明": "内蔵識別、カスタムルール、呼び出し元の申告", "内置软件标识规则": "内蔵ソフトウェア識別ルール", "内置默认": "組み込みのデフォルト", "内置默认提示词": "内蔵のデフォルトシステムプロンプト", "再输入一次新密码": "新しいパスワードをもう一度入力", "凭据类请求头已脱敏。": "認証情報系のリクエストヘッダーはマスキング済みです。", "凭证只保存在这台手机上,按服务器分别存放": "認証情報はこの端末にのみ保存され、サーバーごとに分けて管理されます", "出问题时把这一页截图,或点「复制全部信息」把文本贴进反馈,一般就能定位到大致原因。": "問題が起きたらこのページをスクリーンショットするか、「すべての情報をコピー」でテキストを報告に貼ってください。大抵の原因はそれで絞り込めます。", "分享图标在 Safari 底部工具栏中间": "共有アイコンは Safari 下部ツールバーの中央にあります", "分组名": "グループ名", "分组名,例如「常用」": "グループ名(例:「よく使う」)", "切换视觉模型": "視覚モデルに切り替え", "切换视觉模型 · 视觉模型回答": "モデル切り替え · 視覚モデルが回答", "切换视觉模型配置": "視覚モデル切り替え設定", "切换账号重试次数": "アカウント切替のリトライ回数", "刚刚从 models.dev 拉到的最新数据": "models.dev から取得したばかりの最新データ", "删除 {code}": "{code} を削除", "删除分组": "グループを削除", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "グループ「{name}」を削除しますか?{n} 件のメニューは「{target}」へ移動するので失われません。", "删除匹配内容": "一致した内容を削除", "删除后不再接受这个分类的来源声明,历史记录保留原来的名称和用量。": "削除後はこの分類の申告を受け付けません。過去の記録には元の名前と使用量が残ります。", "删除后,新请求不再使用这条规则;历史记录保持不变。": "削除後は新しいリクエストにこのルールを使用しません。過去の記録は変わりません。", "删除客户端分类": "クライアント分類を削除", "删除状态码 {code}": "ステータスコード {code} を削除", "删除空分组「{name}」?": "空のグループ「{name}」を削除しますか?", "删除识别规则": "識別ルールを削除", "删除这个分组(组内菜单移到第一组)": "このグループを削除(メニューは最初のグループへ移動)", "刷新": "更新", "刷新失败:{message}": "更新に失敗しました: {message}", "前台运行": "フォアグラウンド実行", "前缀": "前方一致", "剥离上游审核黑名单指纹(改写请求体里的模板句与表头)": "アップストリーム審査のブラックリストフィンガープリントを除去(リクエスト本文のテンプレート文とヘッダーを書き換え)", "功能建议": "機能提案", "加入备选": "バックアップに追加", "加密备份必填,旧 SQL 可留空": "暗号化バックアップでは必須、旧 SQL では空欄可", "包含": "部分一致", "包含日志与调试报文": "ログとデバッグペイロードを含める", "包含:{items}": "含まれるもの:{items}", "匹配内容": "一致パターン", "匹配内容不能为空,且最多 {max} 个字符": "一致パターンは必須です。{max} 文字以内で入力してください", "匹配内容不能为空,最长 256 个字符": "一致条件は必須です。256文字以内で入力してください", "匹配原文含零宽空格,词表预览用 \\u{200b} 标出;编辑时保留该字符。": "パターンにゼロ幅スペースが含まれています。一覧では \\u{200b} と表示します。編集時はこの文字を保持してください。", "匹配方式": "一致方式", "区域(Region)": "リージョン(Region)", "华为云 OBS": "Huawei Cloud OBS", "单独指定视觉模型": "視覚モデルを個別に指定", "单轮铸造上限": "1 回の発行上限", "占用大小": "使用サイズ", "历史未记录识别依据": "過去の識別根拠は未記録です", "原来的「全局方式 + 模型单独配置」已按相同意思自动填成下面的模型名单,可以照用也可以重新调整;改动一处之后就会按新形式存下来。": "以前の「全体方式 + モデル個別設定」を同じ意味のまま下のモデル一覧に反映しました。そのまま使っても調整しても構いません。どこか 1 か所でも変更すると新しい形式で保存されます。", "原模型不能直接看图": "元のモデルは画像を直接認識できません", "原模型根据识读内容回答": "元のモデルが読み取り内容に基づいて回答", "去反馈": "フィードバックする", "去申请": "申請する", "反馈与需求": "フィードバックと要望", "发现缺货时一轮最多铸几个(连铸之间固定隔 500 毫秒)。默认 1 个:SDK 同一实例连铸容易互相干扰。调大补货更快,但单轮连铸越多越容易触发上游风控。可填 1–5。": "品切れ検知時に 1 回で最大いくつ発行するか(連続発行の間は固定で 500 ミリ秒あける)。既定は 1:同じ SDK インスタンスでの連続発行は干渉しやすいためです。大きくすると補充は速くなりますが、1 回に多く発行するほど上流のリスク制御に引っかかりやすくなります。1–5 を指定可。", "取消勾选后只备份业务数据(账号、配置与余额记录),文件显著变小;事件日志、请求统计与调试报文不会进备份文件。": "チェックを外すと業務データ(アカウント・設定・残高記録)だけをバックアップし、ファイルはかなり小さくなります。イベントログ・リクエスト統計・デバッグペイロードはバックアップに入りません。", "变更网页管理面板": "Web 管理パネルの変更", "只列单独配置过的家,其余沿用上面的全局配置": "個別に設定したものだけを表示し、それ以外は上記のグローバル設定を引き継ぎます", "只对「排队制」的上游生效:模型繁忙时上游不报错,只回一句「建议 N 秒后再来」,网关按建议时长等一会儿再发同一请求,等满次数仍排不上才把「排队中」作为错误返回(HTTP 503,文案会说明这不是登录态或额度问题)。等待发生在首个字节之前,吃的是「等待响应超时」那份预算 —— 两项设置一起决定一次请求最多卡多久;排队不会标记账号限额、也不会换账号(换谁都一样在排队)。保存后对下一个请求立即生效,不用重启。": "「キューイング方式」のアップストリームにのみ有効です:モデルが混雑しているとき、アップストリームはエラーを返さず「N 秒後に再試行することをおすすめします」とだけ返します。ゲートウェイは推奨された時間だけ待ってから同じリクエストを再送し、規定回数まで待っても順番が回ってこない場合にのみ「キューイング中」をエラーとして返します(HTTP 503。メッセージにはこれがログイン状態やクォータの問題ではないことが明記されます)。待機は最初のバイトより前に発生し、「応答待ちタイムアウト」の予算を消費します —— 2 つの設定が合わさって 1 つのリクエストが最大どれだけ停滞しうるかを決めます。キューイングはアカウントをレート制限としてマークせず、アカウントの切り替えも行いません(誰に切り替えても同じようにキューイングされます)。保存後は次のリクエストから即時有効で、再起動は不要です。", "只影响读图那一步的思考深度;两块设置统一用这个选择。": "画像を読む手順の思考の深さだけに影響します。2 つのブロックで共通の設定です。", "只有已安装、启用并声明了设置项的提供商会出现在这里。可前往插件页检查安装与启用状态。": "インストール済みで有効なプラグインが設定項目を提供している場合のみ表示されます。プラグインページでインストールと有効化の状態を確認できます。", "只沿用模型与思考等级,不借用视觉服务的内部 Key;仍受当前请求权限限制。": "モデルと推論レベルのみを利用し、視覚サービスの内部 Key は使用しません。現在のリクエストの権限制限が適用されます。", "只清掉这个浏览器存的 Key,不影响网关": "このブラウザに保存された Key のみ削除します。ゲートウェイには影響しません", "只覆盖指定提供商的指定模型,其余跟随全局。": "指定したプロバイダーの指定モデルのみを上書きし、それ以外は全体設定に従います。", "可跨提供商多选;只处理这些模型看不了的图片。": "プロバイダーをまたいで複数選択できます。これらのモデルが読めない画像だけを処理します。", "可跨提供商多选;这些模型的请求会整体改交视觉模型。": "プロバイダーをまたいで複数選択できます。これらのモデルへのリクエストは丸ごと視覚モデルに渡します。", "可选。部分服务(如中国科技云数据胶囊)会按 User-Agent 校验凭据绑定的客户端类型,此时填写包含该类型名的字符串(例如 rclone/v1.67.0)。留空则维持默认。": "任意。一部のサービス(例:中国科技云データカプセル)は User-Agent で認証情報に紐づいたクライアント種別を検証します。その場合は種別名を含む文字列(例:rclone/v1.67.0)を入力してください。空欄なら既定のままです。", "合计只累加当前筛选后可见的账号,筛选、搜索一改数字就跟着变。": "合計は現在の絞り込みで表示中のアカウントのみを合算します。絞り込みや検索を変えると数字も変わります。", "合计按整组统计(默认):不受筛选、搜索影响,被筛掉与已禁用的账号也计入。": "合計はグループ全体で計算します(既定)。絞り込みや検索の影響を受けず、除外されたアカウントや無効なアカウントも含まれます。", "同一会话、同一问题、相同权限范围内复用;追问新细节会重新识读。": "同じセッション・同じ質問・同じ権限範囲内で再利用します。新しい詳細を尋ねると読み直します。", "同一会话在 5 分钟内尽量跟住同一个账号;停了 5 分钟再发就算新会话。多数场景用它 —— 多轮对话少换号,也不至于把账号焊死。": "同じセッションは 5 分以内ならできるだけ同じアカウントを使い続け、5 分空くと新しいセッション扱い。多くの場面におすすめ —— 連続対話でアカウントが頻繁に切り替わらず、特定アカウントに固定もされません。", "同一会话在 6 小时内跟住同一个账号;适合一坐几个小时的长会话,上游的上下文缓存能吃到更多。": "同じセッションは最大 6 時間同じアカウントを使い続けます。何時間も続く長丁場に最適で、アップストリームのコンテキストキャッシュをより多く活かせます。", "同一提供商的同一模型不能重复配置": "同じプロバイダーの同じモデルを重複設定できません", "同一账号重试次数": "同一アカウントのリトライ回数", "同时开放网页管理面板": "Web 管理パネルも同時に公開", "同步密码": "同期パスワード", "名单最多 {max} 个状态码": "リストに入れられるステータスコードは最大 {max} 個", "后端没有返回版本信息": "バックエンドがバージョン情報を返しませんでした", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "固定項目「設定」を含むため、グループごと非表示にはできません(他のメニューは個別に非表示にできます)", "启动与托盘": "起動とトレイ", "启动时间": "起動時刻", "启用云同步": "クラウド同期を有効にする", "启用图片兼容": "画像互換処理を有効化", "启用规则": "ルールを有効化", "启用规则:{name}": "ルールを有効化:{name}", "命中依据:{header} · {pattern}": "一致した根拠:{header} · {pattern}", "命中这些上游状态码的失败不在同一账号重发,直接换下一个账号继续试(换号占用「切换账号重试次数」,换满仍失败才把错误原样返回给客户端)。输入 100–599 的状态码后回车添加,点 × 或退格删除;默认 402(积分不足)。清空全部表示任何错误都照常重试。": "これらのアップストリームステータスコードに該当する失敗は、同一アカウントでの再送を行わず、次のアカウントに切り替えて試行を続けます(アカウント切替は「アカウント切替のリトライ回数」を消費し、使い切ってもなお失敗する場合にのみエラーがそのままクライアントへ返されます)。100–599 のステータスコードを入力して Enter で追加、× または Backspace で削除します。デフォルトは 402(ポイント残高不足)。すべてクリアすると、あらゆるエラーで通常どおりリトライします。", "品牌 Logo": "ブランドロゴ", "品牌设置": "ブランド設定", "品牌设置已保存": "ブランド設定を保存しました", "品牌预览": "ブランドのプレビュー", "哪些模型用这种方式": "この方式を使うモデル", "固定": "固定", "图标经 Magpie 引入,未单独记录 Lobe Icons 的图标版本;以上版本仅用于核对许可。": "アイコンは Magpie 経由で導入されています。Lobe Icons のアイコン自体のリビジョンは個別に記録されておらず、上記はライセンス確認のみに使用したリビジョンです。", "图片与相关对话将交给配置的视觉模型处理,可能增加等待时间和费用。请确认这些服务可以接收你的图片。": "画像と関連する会話を設定済みの視覚モデルに送信します。待ち時間や費用が増える場合があります。これらのサービスへの画像送信を許可するか確認してください。", "图片兼容": "画像互換処理", "图片兼容当前是关闭的:下面两块设置照样能改、会被保留,但不会对任何请求生效。": "画像互換は現在オフです。下の 2 つのブロックは編集でき内容も残りますが、どのリクエストにも適用されません。", "图片兼容设置已保存,仅对新请求生效。": "画像互換設定を保存しました。新しいリクエストにのみ適用されます。", "图片兼容设置读取失败": "画像互換設定を読み込めませんでした", "图片压缩": "画像圧縮", "图片最长边超过这个值就等比缩小(只缩不放)。默认 2048,可填 256–8192 —— 多数视觉模型在这个量级已经够用,调小更省流量、但细节会丢。": "画像の長辺がこの値を超えると縦横比を保って縮小します(拡大はしません)。既定 2048、256〜8192 で指定できます。多くのビジョンモデルはこの大きさで十分で、小さくすると通信量は減りますが細部が失われます。", "图片能力未知时": "画像対応が不明な場合", "图片过大、格式错误或下载失败不会被当作模型不支持图片。": "画像が大きすぎる、形式が不正、ダウンロード失敗といった場合は「モデルが画像非対応」とは扱いません。", "在同一个账号上原地重发几次(不含首发;整条请求共用一份,用完后换来的账号只发一次就继续换)。可填 0–10,0 表示失败立即换号。": "同じアカウントでそのまま何回再送するか(初回は含みません。1 つのリクエスト全体で 1 つの回数を共用し、使い切った後に切り替えたアカウントでは 1 回送信するごとに次の切替へ進みます)。0–10 を入力でき、0 は失敗時に即座にアカウントを切り替えることを意味します。", "在这里直接编辑提示词正文:保存后以这份文本为准(优先于上面的提示词文件),清空则回到文件 / 内置默认。改一个字不必再去编辑器里开文件。": "ここでシステムプロンプトの本文を直接編集できます:保存後はこのテキストが優先されます(上記のシステムプロンプトファイルより優先)。クリアするとファイル / 内蔵デフォルトに戻ります。1 文字の変更のためにエディターでファイルを開く必要はもうありません。", "在途请求": "処理中のリクエスト", "地址格式不对。填「IP 或域名:端口」,可带 http:// 或 https://,例如 192.168.1.23:3065": "アドレスの形式が正しくありません。「IP またはドメイン:ポート」で入力してください(http:// または https:// も可)。例: 192.168.1.23:3065", "坚果云": "Jianguoyun(Nutstore)", "坚果云需使用「第三方应用密码」(账户信息 → 安全选项里生成),地址必须是 /dav/ 下的目录。": "Jianguoyun では「サードパーティアプリのパスワード」(アカウント情報 → セキュリティで生成)が必要で、URL は /dav/ 配下のディレクトリを指定してください。", "填「IP 或域名:端口」。协议可写 http:// 或 https://,不写默认 http;http 不写端口默认 3065,https 默认 443。地址里的 /m、/v1 会自动去掉。": "「IP またはドメイン:ポート」を入力してください。プロトコルは http:// または https:// が使えます(省略時は http)。ポートを省略すると http は 3065、https は 443 になります。アドレス内の /m、/v1 は自動的に除去されます。", "处理方式": "処理方式", "处理示意": "処理の流れ", "备份中…": "バックアップ中…", "备份包含账号凭证、网关 Key、GitHub 令牌与云同步凭据的恢复密钥,整个文件受备份密码保护。请分开保管文件与密码;忘记密码无法恢复。": "アカウント認証情報、ゲートウェイ Key、GitHub トークン、クラウド同期認証情報の復元鍵を含み、ファイル全体がバックアップのパスワードで保護されます。ファイルとパスワードは別々に保管してください。パスワードを忘れると復元できません。", "备份密码": "バックアップのパスワード", "备份密码不能超过 1024 字节": "バックアップのパスワードは 1024 バイト以内にしてください", "备份密码至少需要 12 位,建议使用较长且不重复的密码": "12 文字以上の長く使い回していないパスワードを推奨します", "备份整库": "データベースをバックアップ", "备份文件内含全部账号凭证、网关 API Key 与面板管理员凭据,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "バックアップファイルには全アカウントの認証情報・ゲートウェイ API キー・管理パネルの管理者認証情報が入っており、そのままログインに使えます。厳重に保管し、外部に漏らしたり公開場所へアップロードしたりしないでください。", "备选模型": "バックアップモデル", "复制全部信息": "すべての情報をコピー", "复制给客户端": "クライアント用にコピー", "复用相同图片的识读结果": "同じ画像の読み取り結果を再利用", "外观": "外観", "外观 · 接入 · 关于": "外観 · 接続 · 情報", "多个客户端标识冲突": "複数のクライアント識別情報が競合", "天": "日", "天数": "日数", "失败 {n} 个": "失敗 {n} 件", "失败 {n} 个:{detail}": "失敗 {n} 件:{detail}", "失败后最多再换几个账号试(填 N = 最多换 N 个,首发那个不算)。换到同一家名下另一个账号、或换到另一家,都各算一次;换满仍失败就返回错误。可填 0–10,0 表示失败立即报错。": "失敗後に最大であと何個のアカウントに切り替えて試すか(N を入力 = 最大 N 個まで切替。初回のアカウントは含みません)。同じプロバイダー配下の別のアカウントへの切替も、別のプロバイダーへの切替もそれぞれ 1 回と数えます。使い切ってもなお失敗する場合はエラーを返します。0–10 を入力でき、0 は失敗時に即座にエラーを返すことを意味します。", "存储桶(Bucket)": "バケット(Bucket)", "存储概况已刷新": "ストレージ概要を更新しました", "安全": "セキュリティ", "安装到主屏幕": "ホーム画面に追加", "安装到桌面": "アプリとしてインストール", "安装包形态": "インストーラの種類", "完全相同": "完全一致", "官方原文只有一句:声明自己是 ZCode。": "公式原文は 1 文だけです:自分が ZCode であることを宣言します。", "实际处理:": "実際の処理:", "客户端 system 原样出站。": "クライアントの system をそのまま送信します。", "客户端 system 原样出站(只靠指纹脱敏改写模板句)。": "クライアントの system をそのまま送信します(テンプレート文の書き換えはフィンガープリントのマスキングのみ)。", "客户端专用请求头": "クライアント専用ヘッダー", "客户端名称": "クライアント名", "客户端名称不能为空,最长 80 个字符": "クライアント名は必須です。80文字以内で入力してください", "客户端名称重复或与内置名称冲突": "クライアント名が重複しているか、内蔵名と競合しています", "客户端标识无效或重复": "クライアント識別情報が無効または重複", "客户端识别": "クライアント識別", "客户端识别入口尚未就绪,请刷新页面后重试": "クライアント識別の準備ができていません。ページを更新して再試行してください。", "客户端识别设置读取失败": "クライアント識別設定を読み込めませんでした", "客户端(Claude Code / Codex 等 CLI)会在 system 提示词里注入几十句固定模板,上游按逐字匹配审核,命中就整单拦截(HTTP 400)。指纹脱敏能改写实测命中过的那几句,但换一个客户端版本就可能冒出新的。这里可以把 system 整段换成网关自己那份:①「透传」= 不动客户端 system(默认,行为与之前完全一致);②「替换」= 删掉客户端所有 system / developer 消息,换成网关的提示词(客户端项目规范随之消失);③「追加」= 在开头连续 system 块之后插入一条网关提示词,既有消息逐字不动(客户端规范与网关提示词并用)。那份提示词有两个来源:提示词文件(留空用内置默认),或直接在界面上编辑正文 —— 编辑过就以那份正文为准(优先于文件),清空则回到文件 / 内置默认。另外,透传 / 追加模式下撞了内容拦截(多半是指纹误报)时,网关会自动换一段最小中性提示词重试一次,并把「降级期」开到次日 00:00 —— 期间所有请求直接带中性提示词出门,不再先撞一次 400;这里能看见并提前解除它。上面几项是**默认值**:想给某个提供商单独配,用下面的「按提供商」加一行(带「网关自带」的家默认就列在那里)—— 不同的上游对这些内容的接受程度不一样。": "クライアント(Claude Code / Codex などの CLI)は system プロンプトに数十文の固定テンプレートを注入し、アップストリームは逐語一致で審査するため、ヒットするとリクエスト全体がブロックされます(HTTP 400)。フィンガープリントのマスキングは実測でヒットした数文を書き換えられますが、クライアントのバージョンが変わると新しい文が現れる可能性があります。ここでは system 全体をゲートウェイ自身のものに差し替えられます:①「パススルー」= クライアントの system に手を加えない(デフォルト。挙動は従来と完全に同じ);②「置換」= クライアントのすべての system / developer メッセージを削除し、ゲートウェイのシステムプロンプトに差し替える(クライアントのプロジェクト規約も同時に消えます);③「追加」= 先頭に連続する system ブロックの後ろにゲートウェイのシステムプロンプトを 1 件挿入し、既存のメッセージは逐語のまま(クライアントの規約とゲートウェイのシステムプロンプトを併用)。そのシステムプロンプトには 2 つのソースがあります:システムプロンプトファイル(空欄なら内蔵デフォルトを使用)、または画面上で本文を直接編集 —— 編集した場合はその本文が優先され(ファイルより優先)、クリアするとファイル / 内蔵デフォルトに戻ります。また、パススルー / 追加モードでコンテンツブロックに当たった場合(多くはフィンガープリントの誤検知)、ゲートウェイは自動的に最小限の中立システムプロンプトに切り替えて 1 回リトライし、「フォールバック期間」を翌日 00:00 まで設定します —— 期間中はすべてのリクエストが中立プロンプトを直接携えて送信され、400 に当たることはなくなります。ここでその状態を確認し、前倒しで解除できます。上記の項目は**デフォルト値**です:特定のプロバイダーに個別設定したい場合は、下の「プロバイダー別設定」で行を追加してください(「ゲートウェイ内蔵」があるプロバイダーはデフォルトでそこに表示されます)—— アップストリームによってこれらの内容の受け入れ具合は異なります。", "家之间仍按优先级,只有同一家内部轮流用各账号 —— 想优先用某几家、又不愿把某一家的某个账号焊死时用它。": "プロバイダー間は優先度どおり、同じプロバイダー内だけでアカウントを順送りします —— いくつかのプロバイダーを優先しつつ、特定アカウントに固定したくないときに。", "家内轮询": "プロバイダー内ローテーション", "容器内更新": "コンテナ内更新", "密码、文件或密钥校验失败时不会替换主库;替换阶段失败会自动尝试还原,实际结果以上方错误说明为准。": "パスワード、ファイル、鍵の検証に失敗した場合、メインデータベースは変更されません。置換に失敗した場合は自動で元に戻す処理を試みます。実際の結果は上のエラー表示を確認してください。", "密码加密 · 包含恢复密钥": "パスワード暗号化 · 復元鍵を含む", "密码至少 8 位": "パスワードは 8 文字以上", "对话里内嵌的 base64 大图(截图、照片)既撑大请求体,也拉高按像素折算的上游计费。开启后,网关在转发前把超过阈值的图等比缩到长边上限、重新存成 JPEG —— 只改发给上游的副本,请求日志里保存的仍是你发来的原图。同一张原图在多轮对话里重复出现时复用上一次的压缩结果,不会每轮重算。http 链接图片、GIF 动图、SVG 一律不动;压完反而更大的图也保留原图。只作用在对话场景,生图与图片编辑不受影响。默认开启;不想要的话把开关关掉即可。": "会話に埋め込まれた大きな base64 画像(スクリーンショットや写真)はリクエストボディを膨らませ、ピクセル数に応じて課金される上流のコストも押し上げます。有効にすると、転送前にしきい値を超える画像を長辺上限まで縮小し JPEG で再エンコードします。変更されるのは上流へ送るコピーだけで、リクエストログには送信元の原画像が保存されます。同じ原画像が複数ターンで再送される場合は、前回の圧縮結果を再利用し毎回計算し直しません。http リンクの画像、アニメーション GIF、SVG は一切変更しません。再エンコードで逆に大きくなる画像も原画像のままです。チャットのみに作用し、画像生成と画像編集には影響しません。既定では有効です。不要ならスイッチを切ってください。", "导入前会把本机的 account.key 改名备份(account.key.bak-时间戳),不会直接删除。": "インポート前にローカルの account.key を account.key.bak-<タイムスタンプ> に改名して退避します(削除はしません)。", "导入完成:{summary}": "インポート完了:{summary}", "导入密钥失败:{message}": "キーのインポートに失敗しました:{message}", "导入密钥并继续": "キーをインポートして続行", "导入账号": "アカウントをインポート", "导出中…": "エクスポート中…", "导出会把全部账号与自定义提供商定义写入一个 JSON 文件,可以拷到另一台机器上导入后继续使用。导入采用合并策略:同提供商下按业务身份(UID / userId / apiKey 等)去重 —— 已存在的账号只更新凭证,保留本机原有的优先级顺序;新账号追加到转发顺序末尾,不会抢占当前正在使用的账号;自定义提供商定义按 id 合并,本机缺失时自动补建。": "エクスポートはすべてのアカウントとカスタムプロバイダー定義を 1 つの JSON ファイルに書き出し、別のマシンにコピーしてインポートすればそのまま使い続けられます。インポートはマージ方式を採用します:同じプロバイダー配下では業務上の身元(UID / userId / apiKey など)で重複を排除 —— 既存のアカウントは認証情報のみ更新し、本機の優先順はそのまま維持します。新しいアカウントは転送順の末尾に追加され、現在使用中のアカウントを奪いません。カスタムプロバイダー定義は id 単位でマージし、本機にない場合は自動的に作成します。", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义": "エクスポートファイルには accessToken / refreshToken / apiKey などの認証情報とカスタムプロバイダー定義が含まれます", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "エクスポートファイルには accessToken / refreshToken / apiKey などの認証情報とカスタムプロバイダー定義が含まれ、そのままログインに使用できます。厳重に保管し、第三者に渡したり公共の場所へアップロードしたりしないでください。", "导出账号": "アカウントをエクスポート", "将数据库和恢复凭证所需的密钥一起保存为密码加密的 .a2ab 备份,可在 Windows、macOS 或 Linux 上恢复,无需手工复制密钥。恢复时整体替换账号、配置、日志与桌面设置,并使用目标机器的密钥重新加密凭证,不覆盖本机已有钥匙。可取消包含日志以减小文件;旧 .sql 备份仍可导入。恢复前自动保留安全备份,完成后需要重新登录管理面板。": "データベースと復元鍵をパスワードで暗号化した .a2ab にまとめ、Windows、macOS、Linux で鍵を手動コピーせず復元できます。アカウント、設定、ログ、デスクトップ設定を全体置換し、移行先の鍵で認証情報を再暗号化します。既存の鍵は上書きしません。ログを除外して容量を減らせます。旧 .sql も読み込めます。事前に安全バックアップを作成し、完了後は再ログインが必要です。", "尚未注册管理员。开启「网关 → 网络访问 → 允许其他设备访问网关」时会引导注册,也可以从登录页注册。": "管理者はまだ登録されていません。「ゲートウェイ → ネットワークアクセス → 他の端末からゲートウェイへのアクセスを許可」を有効にすると登録に進みます。ログインページからも登録できます。", "尚未注册管理员:管理接口不需要登录。开启「允许局域网访问」时会引导注册,也可以从登录页注册。": "管理者が未登録です:管理 API にログインは不要です。「LAN アクセスを許可」を有効にすると登録へ案内されます。ログインページから登録することもできます。", "尚未配置视觉分析模型": "視覚分析モデルが未設定です", "局域网开放后,管理接口要求登录。请设置管理员账号与密码,注册完成会直接继续开启流程。": "LAN に公開すると、管理インターフェースはログインを要求します。管理者アカウントとパスワードを設定してください。登録が完了すると、そのまま有効化の処理を続行します。", "局域网访问": "LAN アクセス", "工具用法与环境说明那一大段。": "ツールの使い方と環境説明の大きなかたまりです。", "已为「{label}」单独配置提示词": "「{label}」にシステムプロンプトを個別設定しました", "已作为独立应用运行": "独立アプリとして実行中", "已使用本机密钥重新加密 {n} 项凭证,原有密钥未被覆盖。": "{n} 件の認証情報をこの端末の鍵で再暗号化しました。既存の鍵は上書きしていません。", "已保存 {count} / {limit} 条报文(超出后丢弃最旧的)。": "{count} / {limit} 件のメッセージを保存済み(超過分は古いものから破棄)。", "已保存的值不符合当前插件规则,请修改或恢复默认值。": "保存済みの値が現在のプラグインの規則に合いません。変更するか既定値に戻してください。", "已保存,留空则不修改": "保存済み。空欄なら変更しません", "已保存,留空沿用": "保存済み(空欄ならそのまま使用)", "已关闭": "オフ", "已关闭 models.dev 联网刷新": "models.dev のオンライン更新をオフにしました", "已关闭。{note}": "オフです。{note}", "已关闭「{label}」的网关自带提示词:能否通过上游校验取决于上游当前口径": "「{label}」のゲートウェイ内蔵システムプロンプトをオフにしました:アップストリームの検証を通過できるかはアップストリームの現在の基準次第です", "已关闭会话图片压缩": "画像圧縮を無効にしました", "已关闭出站指纹脱敏": "フィンガープリントのマスキングをオフにしました", "已关闭开发者角色兼容": "developer ロール互換を無効にしました", "已关闭第三方模型回答完自动折叠过程": "サードパーティモデルの回答後の工程の自動折りたたみを無効にしました", "已关闭网关跨域访问": "ゲートウェイの CORS アクセスをオフにしました", "已关闭:不额外补阶段标记,由客户端决定过程展示。": "無効:フェーズマーカーを追加せず、作業の表示はクライアントに任せます。", "已删除分组「{name}」": "グループ「{name}」を削除しました", "已取消「{label}」的单独配置": "「{label}」の個別設定を解除しました", "已取消安装": "インストールをキャンセルしました", "已取消导入": "インポートをキャンセルしました", "已取消导出": "エクスポートをキャンセルしました", "已取消恢复": "復元をキャンセルしました", "已启用 {count} 条规则,应用于{scope}。": "{count} 件のルールが有効です。適用先:{scope}。", "已启用登录": "ログイン有効", "已复制全部版本信息": "バージョン情報をすべてコピーしました", "已应用": "適用済み", "已开启": "オン", "已开启:为正常完成的 Codex 回答补阶段标记。": "有効:正常に完了した Codex の回答にフェーズマーカーを補います。", "已开启:其他设备把 API 地址指向 {url}{panel}。": "オン:他のデバイスが API アドレスを {url} に向ければ一緒に使えます{panel}。", "已开启:监听 0.0.0.0,允许其他设备访问。": "有効:0.0.0.0 で待ち受け、他の端末からのアクセスを許可しています。", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "既定のグループに戻しました:概要 / 転送経路 / 診断 / システム", "已截断": "切り詰め済み", "已指定出口": "出口を指定", "已接管": "引き継ぎ済み", "已改回内置默认提示词": "内蔵のデフォルトシステムプロンプトに戻しました", "已新建分组「{name}」,点组头的 + 把菜单移进来": "グループ「{name}」を作成しました。見出しの + でメニューを移動できます", "已清掉「{label}」界面编辑的正文": "「{label}」の画面で編集した本文をクリアしました", "已清掉界面编辑的提示词(回落文件 / 内置默认)": "画面で編集したシステムプロンプトをクリアしました(ファイル / 内蔵デフォルトにフォールバック)", "已清除本机保存的 API Key": "このブラウザに保存された API Key を削除しました", "已生效": "有効", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。": "最小限の中立的なプロンプトへ自動切替しました(アップストリームのコンテンツブロックに当たったもので、多くは system 指紋の誤検知です)。{until} に自動解除されます。", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "最小限の中立システムプロンプトに自動的に切り替えました(アップストリームのコンテンツブロックに当たりました。多くは system のフィンガープリントの誤検知です)。{until} に自動解除されます。期間中は本モード自身のシステムプロンプトは送信されません。システムプロンプトを修正すればすぐに解除できます。", "已自定义": "カスタマイズ済み", "已运行": "稼働時間", "已退出登录": "ログアウトしました", "已隐藏": "非表示", "巴西葡萄牙语": "ブラジルポルトガル語", "希望接入新的提供商或模型": "新しいプロバイダーやモデルへの対応を希望", "库中 schema": "DB 内 schema", "库主文件的大小(不含运行期间的 WAL 临时文件,退出时已自动并回)。": "データベース本体ファイルのサイズ(実行中の WAL 一時ファイルは含みません。終了時に自動でマージし直されます)。", "库存目标": "在庫目標", "应用提供商": "適用するプロバイダー", "应用版本:{version}": "アプリのバージョン:{version}", "应用状态": "アプリの状態", "应用窗口": "アプリウィンドウ", "建立上游 TCP/TLS 连接或代理隧道的最大等待时间(秒),默认 30 秒,范围 1~3600。": "アップストリームへの TCP/TLS 接続またはプロキシトンネルを確立する最大待機時間(秒)。デフォルト 30 秒、範囲 1~3600。", "开发构建": "開発ビルド", "开发者角色兼容": "developer ロール互換", "开发者角色兼容设置已刷新": "developer ロール互換の設定を更新しました", "开启前需要注册面板管理员,已注册会跳过此步骤。管理接口需要管理员会话或网关 Key;API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。": "有効化する前にパネル管理者の登録が必要です。登録済みの場合はこの手順をスキップします。管理 API には管理者セッションまたはゲートウェイキーが必要です。API 呼び出しには有効なゲートウェイキーが必要で、存在しない場合はデフォルトキーが自動作成されます。", "开启后新发生的请求才会被记录(已经过去的请求补不回来)。报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "オン以降に発生したリクエストだけが記録されます(過去の分は遡って取得できません)。ペイロードはローカルデータベースに保存され、直近 500 件のみ保持(超過分は古いものから破棄)。件数は左の「データ → データ保存」の「デバッグペイロード」に表示されます。", "开启后新发生的请求才会被记录(已经过去的请求补不回来),请求日志的「预览对话」也随之开始保存原始正文。上游报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "オンにした後に発生したリクエストのみ記録されます(過去のリクエストは遡って記録できません)。リクエストログの「会話プレビュー」もこれを機に原文の保存を開始します。アップストリームのメッセージはローカルデータベースにまとめて保存され、直近 500 件のみ保持します(超過分は古いものから破棄)。件数は左側の「データ → データストレージ」の「デバッグメッセージ」で確認できます。", "开启后监听所有 IPv4 网卡(0.0.0.0),并不局限于局域网,也不会自动开放到公网;实际访问范围取决于网络与防火墙设置。修改后需要重启应用。": "有効にすると、すべての IPv4 インターフェース(0.0.0.0)で待ち受けます。LAN 限定ではありませんが、自動でインターネットに公開されるわけではありません。実際のアクセス範囲はネットワークとファイアウォールの設定で決まります。変更にはアプリの再起動が必要です。", "开启后网关将监听所有 IPv4 网卡(0.0.0.0),访问范围不再限于本机,也不局限于局域网。是否能从公网访问取决于网络与防火墙设置。": "ゲートウェイはすべての IPv4 インターフェース(0.0.0.0)で待ち受けます。アクセス範囲は本機や LAN に限定されません。インターネットからアクセスできるかどうかは、ネットワークとファイアウォールの設定で決まります。", "开启后网关将监听所有网卡,同一局域网内的设备即可把 API 地址指向本机 IP 一起使用;管理接口从此要求管理员会话或网关 Key,转发接口在没有一把启用的 Key 时也会拒绝服务(届时会自动创建一把名为「默认」的 Key)。": "オンにするとゲートウェイはすべてのネットワークアダプターで待ち受け、同じ LAN 内のデバイスから API アドレスを本機の IP に向けて一緒に利用できるようになります。管理インターフェースは管理者セッションまたはゲートウェイキーを要求するようになり、転送インターフェースは有効なキーが 1 つもない場合もサービスを拒否します(その際は「デフォルト」という名前のキーが自動作成されます)。", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 套餐池(Start Plan)」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "有効にすると、ウィンドウを閉じるのは隠すだけでなく UI ウィンドウ全体を破棄します:常駐する 6 つの WebView2 プロセス(約 200MB のメモリ)が終了し、ゲートウェイ転送・定時チェックイン・残高照会はバックグラウンドプロセスで影響なく継続します;UI が必要になったらトレイアイコンをクリックして開き直します(WebView のコールドスタートは約 1 秒)。注意:UI が破棄されている間、ZCode「プランプール(Start Plan)」経路の CAPTCHA トークンは UI が生成するため補充できず、その経路のリクエストは理由付きで 503 としてリクエストログに記録されます。UI を開き直すと自動的に復旧します。このスイッチは「閉じるときにトレイへ最小化」が有効なときにのみ意味があり、最小化したウィンドウには影響しません。", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 活动套餐」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "オンにすると、ウィンドウを閉じるのは単なる非表示ではなく、UI ウィンドウ全体を破棄します:基盤の WebView2 の常駐プロセス 6 つ(約 200MB のメモリ)も終了し、ゲートウェイの転送、定期チェックイン、残高照会はバックグラウンドプロセスで引き続き動作し、影響を受けません。UI が必要なときはトレイアイコンをクリックして開き直します(WebView のコールドスタートは約 1 秒)。注意:UI 破棄中は「ZCode アクティブプラン」チャネルの認証コードトークンが UI によって生成されるため補給できません —— このチャネルを通るリクエストは 503 となって理由とともにリクエストログに記録され、UI を開き直すと自動的に復旧します。このスイッチは「ウィンドウを閉じたときはトレイに最小化」がオンのときのみ意味を持ち、ウィンドウの最小化は影響を受けません。", "开启后,关闭窗口会销毁界面并释放 WebView 进程,网关转发、定时签到、余额查询仍在后台继续。ZCode 模型请求免验证时不受影响;上游要求人机验证时,需要重新打开界面,在账号的「套餐明细」中主动完成验证。此开关只在「关闭窗口时最小化到托盘」开启时有意义。": "有効にすると、ウィンドウを閉じる際に画面を破棄し WebView プロセスを解放します。転送、定時チェックイン、残高照会は継続します。認証不要の ZCode リクエストは影響を受けません。認証が必要な場合は画面を開き直して「プラン詳細」で認証してください。トレイへの最小化が有効な場合のみ適用されます。", "开启后,新发生的请求会保存上游调试报文与下游正文,历史请求无法补录。上游调试报文只保留最近 500 条;两侧条数可在「数据 → 数据存储」查看。关闭开关不会删除已保存的报文,可在请求日志中选择「仅清空报文原文」一起清理。": "有効にすると、新しいリクエストのアップストリームのデバッグペイロードとダウンストリーム本文を保存します。過去のリクエストは補完できません。アップストリームのデバッグペイロードは最新 500 件のみ保持します。両側の件数は「データ → データ保存」で確認できます。無効にしても保存済みのペイロードは削除されません。リクエストログの「原文のみクリア」で両側をまとめて削除できます。", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。": "オンにすると、ログインページはブラウザーのバックグラウンドで自動的に検証を完了します(人間には気づかれません)が、スクリプトは試行のたびにまず問題を 1 問解く必要があります —— ブルートフォース攻撃と大量登録のコストが大幅に上がります。影響するのはパネルのログイン / 登録のみで、API クライアントの API Key とは無関係です。", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。桌面端与网页端各自独立:桌面端主要服务本机与局域网,网页端(Docker / 服务端)直接暴露在网络上的登录页风险更高,建议保持开启。": "有効にすると、ログインページはバックグラウンドで認証を完了します(人間には意識されません)が、スクリプトによる試行は毎回 1 問解く必要があり、総当たりやアカウントの先取りのコストが大幅に上がります。影響するのはパネルのログイン / 登録のみで、API クライアントの API Key とは無関係です。デスクトップと Web は独立しています。デスクトップは主に本機と LAN 向け、Web(Docker / サーバー)はネットワークに露出するため有効のままを推奨します。", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "オンにすると、ゲートウェイは転送ごとに**アップストリームへ送ったリクエスト**(ヘッダー + ボディ)と**アップストリームからの応答**(ステータスコード + ヘッダー + ボディ)をローカルに丸ごと保存し、リクエストログページの「詳細」で確認できます。リクエストヘッダーの Authorization・Cookie・API キーなどの認証フィールドはすべて [redacted] に置き換わり、平文では保存されません。リクエスト / レスポンスのボディはそのまま保存されます(あなたの対話内容が含まれる場合があります)。ペイロードは直近 500 件のみ保持し、超過分は古いものから破棄します。トラブルシュート用の一時スイッチなので、不要なときはオフを推奨します。", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看;请求日志详情的「预览对话」也依赖本开关 —— 它保存的是客户端发来的请求体与网关下发的响应体(两侧各截断到 128 KiB),不开这个开关时预览对话没有数据可看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。上游报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "オンにすると、ゲートウェイは転送のたびに**アップストリームへ送るリクエスト**(リクエストヘッダー + リクエストボディ)と**アップストリームが返すレスポンス**(ステータスコード + レスポンスヘッダー + レスポンスボディ)を完全にローカルへ保存し、リクエストログページの「詳細」で確認できるようにします。リクエスト詳細の「会話プレビュー」もこのスイッチに依存します —— 保存するのはクライアントから届いたリクエストボディとゲートウェイが返したレスポンスボディ(いずれも 128 KiB で切り詰め)で、スイッチがオフのときはプレビューできるデータがありません。リクエストヘッダー内の Authorization、Cookie、API Key などの認証情報フィールドは一律 [redacted] に置き換えられ、平文でディスクに残りません。リクエストボディとレスポンスボディはそのまま保存されます(会話内容が含まれる場合があります)。アップストリームのメッセージは直近 500 件のみ保持し、超過分は古いものから破棄します。これはトラブルシューティング用の一時的なスイッチですので、不要なときはオフにすることをおすすめします。", "开启后,能连接到网关的设备可通过浏览器访问网页管理面板,需使用管理员账号登录。访问范围与网关相同,并不局限于局域网。": "有効にすると、ゲートウェイに接続できる端末からブラウザーで Web 管理パネルを開き、管理者アカウントでログインできます。アクセス範囲はゲートウェイと同じで、LAN に限定されません。", "开启后,调用方可以用专用请求头声明已登记的客户端名称。这不是身份认证,只用于日志和统计,不会获得额外权限。": "有効にすると、呼び出し元は専用ヘッダーで登録済みクライアント名を申告できます。これは認証ではなく、ログと統計にのみ使用され、追加の権限は付与されません。", "开启局域网访问": "LAN アクセスをオンにする", "开启来源声明": "呼び出し元の申告を有効にする", "开启网络访问": "ネットワークアクセスを有効化", "开放后,局域网内其他设备的浏览器打开本机 IP 即可进入管理面板(需管理员账号登录)。": "公開後は、LAN 内の他のデバイスのブラウザーで本機の IP を開くだけで管理パネルに入れます(管理者アカウントでのログインが必要)。", "开机自动启动": "自動起動", "开源许可": "オープンソースライセンス", "开(最多 {n} 轮)": "オン(最大 {n} ラウンド)", "归属客户端": "分類先クライアント", "当前三段都是官方原文。": "現在、3 つの段はすべて公式原文です。", "当前不可用": "現在利用できません", "当前后端不支持词表编辑与提供商范围,请更新后端后重试。": "現在のバックエンドはルール編集とプロバイダー範囲に対応していません。バックエンドを更新してください。", "当前固定为浅色模式,不随系统变化。": "現在はライトモードに固定されており、システムには連動しません。", "当前固定为深色模式,不随系统变化。": "現在はダークモードに固定されており、システムには連動しません。", "当前密码": "現在のパスワード", "当前已改过:{edited}。": "現在の変更箇所:{edited}。", "当前形态": "実行形態", "当前按 100% 显示(默认比例)。": "現在は 100% で表示中(デフォルト比率)。", "当前按 k / M 缩写显示(如 1.20M / 8.4k)。": "現在は k / M 略記で表示中(例:1.20M / 8.4k)。", "当前按 {n}% 显示。": "現在は {n}% で表示中。", "当前按「万 / 亿」式本地量级词显示(如 1.2亿 / 8400万)。": "現在は「万 / 億」式のローカル量級語で表示中(例:1.2億 / 8400万)。", "当前是透传模式:存下来也不会发出,切成「替换 / 追加」之后才生效。": "現在はパススルーモードです:保存しても送信されず、「置換 / 追加」に切り替えてから有効になります。", "当前显示为「1.20M / 8.4k / 1.2B」这类英文缩写。": "現在は「1.20M / 8.4k / 1.2B」のような英語略記で表示しています。", "当前显示为「1.2亿 / 8400万」这类中文量级。": "現在は「1.2億 / 8400万」のような中国語の桁表記で表示されています。", "当前样本结果:{name}": "現在のサンプル結果:{name}", "当前正在使用": "現在使用中", "当前浏览器以管理员身份登录着本面板。「退出登录」会撤销这台设备的登录会话(30 天内的自动续期一并失效),需要重新输入账号密码;其他已登录的设备不受影响。": "現在のブラウザーは管理者としてこのパネルにログインしています。「ログアウト」はこのデバイスのログインセッションを取り消し(30 日以内の自動更新も無効になります)、アカウントとパスワードの再入力が必要です。他のログイン済みデバイスは影響を受けません。", "当前版本不支持品牌设置": "このバージョンはブランド設定に対応していません", "当前环境不支持局域网访问设置": "現在の環境は LAN アクセス設定に対応していません", "当前环境不支持整库备份": "この環境ではデータベース全体のバックアップは使えません", "当前环境不支持整库备份(仅桌面端可用)": "この環境ではデータベース全体のバックアップは使えません(デスクトップ版のみ)", "当前环境不支持整库恢复": "この環境ではデータベース全体の復元は使えません", "当前环境不支持整库恢复(仅桌面端可用)": "この環境ではデータベース全体の復元は使えません(デスクトップ版のみ)", "当前环境不支持网络访问设置": "現在の環境ではネットワークアクセス設定を利用できません", "当前环境不支持读取版本信息(桥接方法缺失)": "この環境ではバージョン情報を取得できません(ブリッジメソッドが見つかりません)", "当前生效值:{value}": "現在の有効値:{value}", "当前生效的正文来自{source}{file}。保存后这一份会盖过提示词文件与内置默认{note}。": "現在有効な本文の出所は{source}です{file}。保存するとこの本文がシステムプロンプトファイルと内蔵デフォルトより優先されます{note}。", "当前界面": "現在の画面", "当前管理员:{name}": "現在の管理者:{name}", "当前设置已保存": "現在の設定は保存済みです", "当前跟随操作系统的深浅色设置,系统切换时界面会自动跟上。": "現在は OS のライト / ダーク設定に連動しており、システムの切替時に UI も自動的に追従します。", "当前路由内的可用视觉模型": "現在のルート内で利用可能な視覚モデル", "待迁移旧数据": "移行待ちの旧データ", "待配置": "未設定", "忘记密码时无法在界面里找回:需要停掉程序后,从数据库删除管理员记录(kv 表的 panelAdmin 键),重启后按首次使用重新注册。具体命令与各形态的库文件路径见 docs 目录下的「重置管理员」文档。": "パスワードを忘れた場合、画面から復旧することはできません。プログラムを停止し、データベースから管理者レコード(kv テーブルの panelAdmin キー)を削除してから再起動し、初回と同様に登録し直してください。具体的なコマンドと形態別のデータベースパスは docs の「管理者のリセット」を参照してください。", "思考等级、图片能力未知、等待上限": "思考レベル、画像対応が不明な場合、待ち時間の上限", "恢复中…": "復元中…", "恢复失败:{message}": "復元に失敗:{message}", "恢复官方原文": "公式原文に戻す", "恢复插件默认值": "プラグインの既定値に戻す", "恢复整库": "データベースを復元", "恢复整库备份": "全体バックアップを復元", "恢复默认": "デフォルトに戻す", "恢复默认 Logo": "標準のロゴに戻す", "恢复默认侧边栏": "サイドバーを既定に戻す", "恢复默认品牌": "標準のブランドに戻す", "恢复默认词表": "デフォルトのルールに戻す", "想回到原来那份,把这里清空再保存即可(不会删掉你配的文件路径)。": "元のものに戻したい場合は、ここを空にして保存するだけです(設定したファイルパスは削除されません)。", "想要的新功能或改进想法": "実現したい新機能や改善のアイデア", "所有未单独配置的提供商都用这一份": "個別設定していないすべてのプロバイダーがこれを使用します", "所有菜单都已在这一组": "すべてのメニューがこのグループにあります", "手机端可管理所连接网关的账号、签到与插件,并使用提供商声明的动态登录入口;其余既有添加入口、编辑凭证和改写客户端配置仍需桌面面板。": "モバイル版は接続先ゲートウェイのアカウント、チェックイン、プラグインを管理し、プロバイダーが宣言した動的ログイン方式を利用できます。その他の既存の追加機能、認証情報の編集、クライアント設定の変更にはデスクトップパネルが必要です。", "托管网页界面": "Web UI を配信", "把地址里的 your-server 与 USERNAME 换成你自己的;目录不存在时会自动创建。": "URL 内の your-server と USERNAME を自分の環境に置き換えてください。ディレクトリが無い場合は自動で作成します。", "把整份数据库(账号、网关配置、事件日志、请求统计、调试报文与桌面设置)导出成一个 SQL 文件,恢复时整体替换本机全部数据 —— 与上面「账号导入 / 导出」的逐条合并是两种语义:恢复会连配置、日志与当前启用状态一起换成备份那台机器的状态。导出默认包含日志与调试报文(文件可能很大),不需要时可以取消勾选只备业务数据。恢复前会自动把当前数据备份到配置目录的 backups/ 下,恢复后需要重新登录管理面板。": "データベース全体(アカウント・ゲートウェイ設定・イベントログ・リクエスト統計・デバッグペイロード・デスクトップ設定)を 1 つの SQL ファイルに書き出し、復元時はこのマシンの全データをまるごと置き換えます —— 上の「アカウントのインポート / エクスポート」とは意味が別で、あちらは 1 件ずつのマージ、復元は設定・ログ・有効状態までバックアップしたマシンの状態にそっくり入れ替わります。書き出しは既定でログとデバッグペイロードを含みます(ファイルは大きくなりがち)。不要ならチェックを外して業務データだけにできます。復元の直前には現在のデータを設定フォルダの backups/ へ自動バックアップし、復元後は管理パネルへ再ログインが必要です。", "把整次请求交给视觉模型,由它直接回答,不再回到原模型。": "リクエスト全体を視覚モデルに渡し、元のモデルに戻らず直接回答します。", "把菜单移入 {name}": "メニューを {name} へ移動", "把菜单移入「{name}」": "メニューを「{name}」へ移動", "把账号、网关配置、自定义提供商、Agent 配置、代理池 / 订阅、签到与余额记录同步到 WebDAV 或 S3 兼容存储,换台机器后一键取回。事件日志、请求明细、调试报文与面板登录态不在同步范围内(它们是本机的运行痕迹)。上传的账号凭证仍是加密形态,解密用的账号密钥由「同步密码」单独加密后一并上传 —— 同步密码不会保存到云端,换机下载时需要重新输入。": "アカウント、ゲートウェイ設定、カスタムプロバイダー、Agent 設定、プロキシプール / サブスクリプション、チェックインと残高の記録を WebDAV または S3 互換ストレージに同期し、別のマシンでワンクリックで復元できます。イベントログ、リクエスト明細、デバッグ通信記録、パネルのログイン状態は対象外です(これらは本機の実行履歴です)。アップロードされるアカウント認証情報は暗号化されたままで、復号に使うアカウントキーは「同期パスワード」で別途暗号化して一緒にアップロードします。同期パスワードはクラウドに保存されないため、別のマシンで復元する際に再入力が必要です。", "把路径里的主目录显示成 ~,截图分享时不暴露用户名": "パス内のホームディレクトリを ~ と表示し、スクリーンショットでユーザー名が漏れないようにします", "把路径里的主目录(如 C:\\Users\\你的用户名)显示成 ~,截图分享时不暴露用户名。只影响本页显示与复制,不改任何文件。": "パス内のホームディレクトリ(例: C:\\Users\\ユーザー名)を ~ と表示し、スクリーンショットでユーザー名が漏れないようにします。このページの表示とコピーだけに影響し、ファイルは変更しません。", "报表天数": "レポートの日数", "报表页的热力图与按天趋势,默认 99999 天(近似全量保留),可填 1–99999 天。": "レポートページのヒートマップと日次トレンド。既定は 99999 日(ほぼ全量保持)で、1〜99999 日を指定できます。", "拖动分组 {name}": "グループ {name} をドラッグ", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "左側の ⠿ をドラッグして順序を変更(メニューはグループをまたげます)。スイッチで表示/非表示、グループ名をクリックで名前変更、グループ見出しの + で他のメニューを移動、目のボタンでグループごと非表示。変更は即座に反映され保存されます(左のサイドバーが結果です)。キーボード操作:ハンドルにフォーカスして Alt+↑ / ↓。", "拖动菜单 {name}": "メニュー {name} をドラッグ", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "ドラッグでグループの順序を変更(Alt+↑ / ↓ でも可)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "ドラッグで順序を変更、グループをまたげます(Alt+↑ / ↓ でも可)", "指定备选仍受当前请求权限和路由范围限制,路由组请求不会跳到组外。不会转为辅助识图继续。": "指定した代替モデルにも現在の権限とルート範囲が適用されます。ルートグループ外には転送せず、補助画像読み取りに切り替えて続行することもありません。", "指定提供商": "指定したプロバイダー", "指定角色": "指定したロール", "指定错误码直接换号": "指定エラーコードで直接アカウント切替", "指纹脱敏": "フィンガープリント除去", "指纹脱敏会在转发前按词表顺序改写请求消息中的文本,包括对话内容、思考内容和工具调用参数。默认词表包含客户端模板句与计费表头的精确替换、正则删除规则,可以新增、编辑、删除、启停和调整顺序;替换内容留空表示删除匹配内容。默认应用全部提供商,也可指定多家。改动只作用于发给上游的副本,响应内容不变。编辑后点击「保存设置」,下一次请求生效;清空词表表示不做任何指纹改写,恢复默认只重置词表。": "転送前にルールの順序でメッセージのテキストを変更します。会話、思考内容、ツール呼び出し引数が対象です。デフォルトにはクライアントの定型文と課金ヘッダーを対象にした完全一致の置換と正規表現の削除が含まれます。ルールの追加、編集、削除、有効・無効の切り替え、並べ替えが可能です。置換内容が空なら一致部分を削除します。デフォルトですべてのプロバイダーに適用し、複数の指定も可能です。アップストリームに送るコピーのみを変更し、応答は変更しません。「設定を保存」を押すと次のリクエストから有効です。空の一覧では何も変更せず、デフォルト復元はルールだけをリセットします。", "指纹脱敏设置仅本次运行生效,写入数据库失败,请检查配置目录": "設定は今回の実行中のみ有効です。データベースへの書き込みに失敗しました。設定ディレクトリを確認してください。", "指纹脱敏设置已刷新": "フィンガープリントのマスキング設定を更新しました", "按下面两块设置处理图片;关闭后设置全部保留。": "下の 2 つのブロックの設定で画像を処理します。オフにしても設定はすべて残ります。", "按列表自上而下匹配,位于来源声明之后、内置规则之前;可用于给难认的标识钉规则。": "リストの上から順に照合し、発信元宣言の後・内蔵ルールの前に適用します。識別しにくいクライアントの固定に使えます。", "按原文精确匹配,区分大小写;不会自动去掉首尾空白。": "大文字・小文字を区別して原文と完全一致で比較します。前後の空白は削除しません。", "按天聚合保留天数": "日次集計の保持日数", "按指定备选顺序尝试": "指定した代替モデルを順番に試す", "按提供商查看和调整专属选项": "プロバイダー固有の設定を確認・変更", "按提供商筛选设置": "プロバイダーで設定を絞り込む", "按提供商管理专属选项,作用于当前网关中该提供商的所有账号。": "プロバイダー固有の設定を管理します。変更は現在のゲートウェイにある、そのプロバイダーのすべてのアカウントに適用されます。", "按提供商配置": "プロバイダー別設定", "按每条请求的软件标识识别客户端,不依赖 API Key。规则修改只影响新请求,内置规则随软件更新,自定义规则参与备份与云同步。": "各リクエストのソフトウェア識別情報を使用し、API Keyには依存しません。ルール変更は新しいリクエストにのみ適用されます。内蔵ルールはアプリ更新に追従し、カスタムルールはバックアップとクラウド同期の対象です。", "换一台服务器": "別のサーバーに切り替える", "排队等待": "キューイング待機", "排队等待次数": "キューイングの待機回数", "排队等待秒数": "キューイングの待機秒数", "排队等待设置已刷新": "キューイング待機設定を更新しました", "接入": "接続", "接受调用方来源声明": "呼び出し元の申告を受け付ける", "接管回答的模型": "回答を引き継ぐモデル", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "サイドバーに表示するメニュー、その順序、グループ分けを設定します。非表示はナビゲーションの表示だけに影響し、アクセス権は失われません。非表示にしたページも URL から直接開けます。", "控制报表与请求日志里 Token 读数的写法:开启后按「万 / 亿」式的本地量级词显示(简体为万 / 亿,繁体为萬 / 億,日文为万 / 億,韩文为만 / 억),关闭则用 k / M 缩写(与上游文档、接口字段的写法一致)。英文 / 葡语的本地量级词就是 k / M,这项对它们没有区别。只影响显示口径,不改变任何统计与存储的数值。": "レポートとリクエストログにおける Token の数値表記を制御します:オンにすると「万 / 億」式のローカル量級語で表示し(簡体字は万 / 亿、繁体字は萬 / 億、日本語は万 / 億、韓国語は만 / 억)、オフにすると k / M 略記を使用します(アップストリームのドキュメントやインターフェースのフィールド表記と一致)。英語 / ポルトガル語ではローカル量級語がそのまま k / M なので、この項目による違いはありません。影響するのは表示の形式のみで、統計や保存される数値は変わりません。", "控制报表与请求日志里 Token 读数的写法:开启后按中文量级显示(1.2亿 / 8400万),关闭则用 k / M / B 缩写(与上游文档、接口字段的写法一致)。这只影响显示口径,不改变任何统计与存储的数值。": "レポートとリクエストログの Token 表記を切り替えます。オンでは中国語の数量単位(1.2億 / 8400万)、オフでは k / M / B の略記(上流のドキュメントや API フィールドと同じ書き方)で表示します。表示だけが変わり、統計値や保存値は変わりません。", "控制界面的深浅色,与左侧边栏底部的三个主题按钮是同一个设置(改哪一处,另一处立刻跟上)。「跟随系统」会随操作系统当前的浅色 / 深色自动切换,并在系统主题变化时即时跟上;选「浅色」或「深色」则把界面固定在该模式,不再随系统变化。窗口标题栏的深浅色会一并同步,不会出现深色界面配一条浅色标题栏的情况。": "UI のライト / ダークを制御します。左サイドバー下部の 3 つのテーマボタンと同じ設定です(どちらを変更しても、もう一方にすぐ反映されます)。「システム」は OS の現在のライト / ダークに自動で切り替わり、システムテーマの変化にも即座に追従します。「ライト」または「ダーク」を選ぶと UI はそのモードに固定され、システムには連動しなくなります。ウィンドウタイトルバーのライト / ダークも一緒に同期され、ダークの UI にライトのタイトルバーが付くようなことはありません。", "提供商与模型": "プロバイダーとモデル", "提供商专属设置": "プロバイダー固有の設定", "提供商当前不可用,未保存的修改已保留;恢复插件后可继续编辑。": "現在このプロバイダーを利用できません。未保存の編集は保持されています。プラグインが復旧すると編集を続けられます。", "提供商设置已保存": "プロバイダー設定を保存しました", "提供商设置返回格式无效,请刷新后重试": "プロバイダー設定の応答形式が無効です。更新してから再試行してください。", "提建议": "提案する", "提示词文件": "システムプロンプトファイル", "提示词文件已更新": "システムプロンプトファイルを更新しました", "提示词正文": "システムプロンプト本文", "提示词正文已更新": "システムプロンプト本文を更新しました", "插件或设置已变化,请放弃修改并刷新后重新编辑。": "プラグインまたは設定が変更されました。変更を破棄して更新し、再度編集してください。", "操作系统": "オペレーティングシステム", "支持 .a2ab 加密备份和旧 .sql 文件;旧 SQL 不包含恢复密钥,跨机器导入仍需原机密钥。": "暗号化された .a2ab と旧 .sql に対応しています。旧 SQL には復元鍵が含まれないため、別端末への移行には元の端末の鍵が必要です。", "支持 PNG、JPG、WebP,最大 2 MiB、4096 × 4096 像素;自动缩小至 512 像素以内,建议使用正方形图片。": "PNG、JPG、WebP に対応。最大 2 MiB、4096 × 4096 ピクセルです。512 ピクセル以内に自動縮小します。正方形の画像を推奨します。", "改动仍保存在本机,修复网络或凭据后下一次改动会自动重试,也可以手动点「上传到云端」。": "変更は本機に保存されています。ネットワークや認証情報を修正すれば次回の変更で自動的に再試行されます。手動で「クラウドへアップロード」を押すこともできます。", "改动仍保存在本机,系统会延长等待并自动重试;修复网络或凭据后,也可以手动点「上传到云端」。": "変更はこの端末に保存されています。待機時間を延ばして自動再試行します。ネットワークや認証情報を修正した後、「クラウドにアップロード」を手動で選ぶこともできます。", "改完立即生效,不用重启(下一个请求就用新模式)。降级是自动的临时状态,解除后本模式自己的提示词立刻恢复。": "変更後は即時有効で再起動は不要です(次のリクエストから新しいモードが適用されます)。フォールバックは自動的な一時状態で、解除されると本モード自身のシステムプロンプトがすぐに復帰します。", "放大或缩小整个界面(文字与控件一起变),效果与浏览器 Ctrl +/- 相同:共 11 档,立即生效并记住。": "UI 全体を拡大または縮小します(文字とコントロールが一緒に変化)。効果はブラウザーの Ctrl +/- と同じ:全 11 段階で、即時有効かつ記憶されます。", "放弃修改并刷新": "変更を破棄して更新", "数据": "データ", "数据保留": "データ保持", "数据保留设置已刷新": "データ保持設定を更新しました", "数据存储": "データストレージ", "数据库 schema": "データベース schema", "数据库不可用": "データベース利用不可", "数据库与恢复密钥一起加密保存。密码不会保存在应用或备份中,忘记后无法恢复,请妥善保管。": "データベースと復元鍵を一緒に暗号化します。パスワードはアプリにもバックアップにも保存されません。忘れると復元できないため、大切に保管してください。", "数据库主文件与 WAL 文件的总占用,与请求日志清理弹窗采用同一口径;清理后可压缩数据库回收空闲空间。": "データベースのメインファイルと WAL ファイルの合計サイズです。リクエストログのクリア画面と同じ計算方法です。クリア後はデータベースを圧縮して未使用領域を回収できます。", "数据库文件": "データベースファイル", "数据目录": "データディレクトリ", "数据统一保存在配置目录下的 agent2api.db;如需更换位置,请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "データは設定ディレクトリ配下の agent2api.db にまとめて保存されます。場所を変更する場合は、環境変数 AGENT2API_PROXY_HOME を設定してからプログラムを再起動してください。", "整体替换": "まるごと置き換え", "整库备份 / 恢复": "データベース全体のバックアップ / 復元", "整次请求交给 {model} 直接回答,不再回到原模型。": "リクエスト全体を {model} に渡し、元のモデルに戻らず直接回答します。", "新分组名": "新しいグループ名", "新增 {added} 个、更新 {updated} 个{suffix}{note}": "新規 {added} 件、更新 {updated} 件{suffix}{note}", "新增脱敏规则": "マスキングルールを追加", "新增规则": "ルールを追加", "新安装和升级后默认关闭。先配置再开启,关闭后保留配置。": "新規インストール時とアップグレード後はデフォルトで無効です。設定してから有効にしてください。無効にしても設定は保持されます。", "新密码": "新しいパスワード", "新密码不能与当前密码相同": "新しいパスワードは現在のものと異なる必要があります", "新密码至少 8 位": "パスワードは 8 文字以上にしてください", "新建分组": "グループを追加", "新建客户端分类": "クライアント分類を新規作成", "无效或重复的标识请求头:{headers}": "無効または重複した識別ヘッダー:{headers}", "无法读取品牌设置": "ブランド設定を読み取れません", "无法读取图片,请重新选择": "画像を読み取れません。選び直してください", "日志与请求日志同时受保留天数和数量上限限制。日志默认 30 天、10000 条,各级别按比例保留;调试详情最多保留 3 天。请求日志默认 99999 天、1000000 条(100 万),超出后从最旧的记录开始清理,并同步删除对应原始正文。按天聚合默认 99999 天,只按天数保留,不受请求日志数量清理影响。天数可填 1–99999,数量可填 1–100000000。调小任一设置并确认后立即清理,且不可恢复。": "ログとリクエストログには保存日数と件数上限の両方が適用されます。ログの既定は 30 日・10000 件で、レベルごとに比例配分して保持します。デバッグ詳細は最大 3 日です。リクエストログの既定は 99999 日・1000000 件(100 万件)で、超過分は古い記録から対応する元の本文とともに削除します。日次集計の既定は 99999 日で、日数のみで保持し、リクエストログの件数による削除には影響されません。日数は 1–99999、件数は 1–100000000 を指定できます。設定を減らして確認すると直ちに削除され、元に戻すことはできません。", "日志保留数量上限": "ログの保存件数上限", "日志文件": "ログファイル", "日语": "日本語", "显示 {name}": "{name} を表示", "显示分组 {name}": "グループ {name} を表示", "显示名称": "表示名", "显示名称最多 64 个字符": "表示名は最大 64 文字です", "显示模式": "表示モード", "显示这一组": "このグループを表示", "暂无可编辑的提供商设置": "編集可能なプロバイダー設定はありません", "暂无自定义规则,正在使用内置识别。也可以从请求详情直接添加规则。": "カスタムルールはありません。内蔵識別を使用中です。リクエスト詳細からもルールを追加できます。", "暂未获取到本机访问地址,请使用其他设备能连接到的本机 IP 与网关端口。": "この端末のアクセスアドレスをまだ取得できていません。他の端末から到達できる本機の IP とゲートウェイのポートを使用してください。", "更新": "更新", "更新出网线路": "更新の出口経路", "更新通道": "更新チャネル", "替换": "置換", "替换 = 客户端 system / developer 消息全部删掉,换成网关的提示词;追加 = 保留客户端内容,只在开头 system 块之后多插一条。两者都只改发给上游的副本,客户端看到的响应不变。": "置換 = クライアントの system / developer メッセージをすべて削除し、ゲートウェイのシステムプロンプトに差し替えます。追加 = クライアントの内容を保持し、先頭の system ブロックの後ろに 1 件挿入するだけ。どちらもアップストリームへ送るコピーのみを変更し、クライアントが見るレスポンスは変わりません。", "替换为网关提示词": "ゲートウェイのシステムプロンプトに置換", "替换内容": "置換内容", "替换内容最多 {max} 个字符": "置換内容は {max} 文字以内で入力してください", "替换前会自动把当前数据备份到配置目录的 backups/ 文件夹。": "置き換えの直前、現在のデータを設定フォルダの backups/ へ自動バックアップします。", "替换并恢复": "置き換えて復元", "最多 64 个字符,留空恢复为 Agent2API。": "最大 64 文字。空欄にすると Agent2API に戻ります。", "最小自动上传间隔": "自動アップロードの最小間隔", "最近 {window} 条请求中,{scanned} 条有识别依据,{matched} 条符合条件,{applied} 条会采用本规则。": "直近{window}件のうち、{scanned}件に識別根拠があり、{matched}件が条件に一致し、{applied}件にこのルールが適用されます。", "有未保存的修改": "未保存の変更があります", "有未保存的改动:保存后才能同步(测试连接不受影响)。": "未保存の変更があります。同期するには先に保存してください(接続テストは可能です)。", "有近期套餐池请求时读取库存状态的间隔,默认 2500 毫秒,可填 1000–30000。没有近期请求时降低读取频率,轮询不会发起验证码。": "最近の Start Plan リクエストがある場合の在庫取得間隔です。既定は 2500 ミリ秒、範囲は 1000~30000 です。リクエストがない場合は頻度を下げ、ポーリングで認証を開始しません。", "服务商": "プロバイダー", "服务器地址": "サーバーアドレス", "服务端密钥加密保存,不会返回浏览器;切回 ALTCHA 后会保留,方便再次启用。": "シークレットキーは暗号化して保存され、ブラウザーには返されません。ALTCHA に戻しても保持されるため、後から再び有効にできます。", "服务端密钥(Secret Key)": "シークレットキー(Secret Key)", "期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "このモードの間、独自のプロンプトは送信されません。プロンプトを修正できたらすぐ解除できます。", "未保存": "未保存", "未匹配已知客户端": "既知のクライアントに一致しません", "未单独配置:模式、提示词文件与正文都跟随上面的全局配置(当前「{mode}」)。": "個別設定なし:モード、システムプロンプトファイル、本文はいずれも上記のグローバル設定に従います(現在は「{mode}」)。", "未启用": "無効", "未开启轻量模式:关窗仅隐藏窗口,界面进程常驻内存,随时打开不等待": "軽量モードはオフ:ウィンドウを閉じても非表示になるだけで、UI プロセスはメモリに常駐し、いつでも待ち時間なく開けます", "未开启,developer 角色消息会原样发往上游,不认识该角色的上游会报错(400)。": "無効:developer ロールのメッセージはそのままアップストリームへ送られ、このロールを認識しないアップストリームはエラー(400)を返します。", "未开启,客户端 system 模板会原样发往上游,可能被内容审核误拦(400)。": "オフの場合、クライアントの system テンプレートはそのままアップストリームへ送られ、コンテンツ審査で誤ってブロックされる(400)可能性があります。", "未开启,浏览器跨域无法直连网关。": "オフの場合、ブラウザーから CORS でゲートウェイに直接接続できません。", "未开启,转发时不保存任何原始报文。": "オフの場合、転送時に生のメッセージは一切保存されません。", "未开启:网关只监听 127.0.0.1,仅本机可以访问。": "オフ:ゲートウェイは 127.0.0.1 のみで待ち受け、本機からのみアクセスできます。", "未注册": "未登録", "未注册闸门": "未登録ゲート", "未知原因": "不明な原因", "未知来源": "不明な出典", "未知设备": "不明なデバイス", "未知账号": "不明なアカウント", "未能读取 Cline 伪装头设置,请稍后重试": "Cline 偽装ヘッダー設定を読み込めませんでした。しばらくしてから再試行してください", "未能读取 models.dev 元数据状态,请稍后重试": "models.dev メタデータの状態を取得できませんでした。しばらくして再試行してください。", "未能读取云同步设置,请稍后重试。": "クラウド同期の設定を読み取れませんでした。しばらくしてから再試行してください。", "未能读取保存后的指纹脱敏设置": "保存後のマスキング設定を読み取れませんでした", "未能读取开发者角色兼容设置,请稍后重试": "developer ロール互換の設定を読み取れませんでした。しばらくしてから再試行してください", "未能读取指纹脱敏设置,请稍后重试": "フィンガープリントのマスキング設定を読み込めませんでした。しばらくしてから再試行してください", "未能读取机器人校验设置": "ボット対策の設定を読み取れませんでした", "未能读取第三方模型回答完自动折叠过程设置,请稍后重试": "サードパーティモデルの回答後の工程の自動折りたたみ設定を読み取れませんでした。しばらくしてから再試行してください", "未能读取系统提示词设置,请稍后重试": "システムプロンプト設定を読み込めませんでした。しばらくしてから再試行してください", "未能读取网关跨域访问设置,请稍后重试": "ゲートウェイの CORS アクセス設定を読み込めませんでした。しばらくしてから再試行してください", "未能读取网络访问设置,请稍后重试": "ネットワークアクセス設定を読み込めませんでした。しばらくしてから再試行してください。", "未能读取调试模式设置,请稍后重试": "デバッグモード設定を読み込めませんでした。しばらくしてから再試行してください", "未能读取账户信息,请稍后重试": "アカウント情報を取得できませんでした。しばらくしてから再試行してください", "未采用本规则,请检查开关、来源声明或规则顺序": "このルールは適用されません。スイッチ、呼び出し元の申告、ルール順序を確認してください。", "本地账号、配置、签到与余额记录变化后自动上传(合并 1 秒内的连续改动,最长 10 秒传一次;内容没变时不发请求)。": "ローカルのアカウント・設定・チェックイン・残高記録の変更後に自動アップロードします(1 秒以内の連続変更はまとめ、最大 10 秒に 1 回。内容が変わっていなければリクエストしません)。", "本机 API 地址": "この端末の API アドレス", "本机 APK 版本": "この端末の APK バージョン", "本机全部数据会被备份整体替换,恢复前自动保留安全备份,完成后需要重新登录管理面板。本机已有密钥不会被覆盖。": "この端末のデータベース内の全データが置き換わります。事前に安全バックアップを保存し、完了後は再ログインが必要です。既存の鍵は上書きしません。", "本机应用版本": "この端末のアプリバージョン", "本机界面版本": "この端末の UI バージョン", "本机的业务数据(账号、配置、Agent 配置、代理池 / 订阅、签到与余额记录)将上传并": "本機の業務データ(アカウント・設定・Agent 設定・プロキシプール / サブスクリプション・チェックインと残高の記録)をアップロードし、", "本机的全部数据(账号、网关配置、日志统计与桌面设置)将被所选备份文件": "このマシンの全データ(アカウント・ゲートウェイ設定・ログ統計・デスクトップ設定)は、選択したバックアップファイルで", "本机的账号、网关配置、Agent 配置、代理池 / 订阅、签到与余额记录将被远端快照": "本機のアカウント・ゲートウェイ設定・Agent 設定・プロキシプール / サブスクリプション・チェックインと残高の記録は、リモートのスナップショットで", "本次无需刷新": "今回は更新の必要がありません", "本软件不提供任何担保,可按 AGPL-3.0 修改与分发;通过网络提供修改版服务时须向用户提供对应源码。": "本ソフトウェアは無保証で、AGPL-3.0 に従い改変・配布できます。改変版をネットワークサービスとして提供する場合は、利用者に対応するソースを提供してください。", "本项目的 AGPL-3.0 许可不替代这些第三方许可。名称与标识的商标权归各自权利人所有。": "本プロジェクトの AGPL-3.0 ライセンスは、これらのサードパーティライセンスに代わるものではありません。名称とロゴの商標権は、それぞれの権利者に帰属します。", "机器人校验": "ロボット検証", "机器人校验设置已保存": "ボット対策の設定を保存しました", "条数": "件数", "来源声明当前关闭,这条规则不会生效。请先在客户端识别设置中开启。": "呼び出し元の申告は無効なため、このルールは適用されません。先にクライアント識別設定で有効にしてください。", "来源声明无效或未登记,本次已忽略。": "申告が無効または未登録のため無視しました。", "来源声明未启用,本次已忽略。": "呼び出し元の申告は無効のため無視しました。", "来源版本": "出典のリビジョン", "来源设备:{device}": "取得元デバイス:{device}", "来自 {device},生成于 {time}": "{device} から、{time} に作成", "架构": "アーキテクチャ", "查看内置客户端({n})": "内蔵クライアントを表示({n})", "查询管理员状态失败:{message}": "管理者状態の照会に失敗しました:{message}", "校验身份:这三段必须各自成块排在最前(实测:三段并成一段会被回 405 / 3012)。因此这里按段编辑,不能合成一段。改过的段以你的文本为准,没改的段继续用官方原文;清空某一段 = 那一段恢复官方原文。": "で身元を検証します:この 3 つの段はそれぞれ独立したブロックとして先頭に並ぶ必要があります(実測:3 段をまとめて 1 段にすると 405 / 3012 が返ります)。そのためここでは段ごとに編集し、1 段にまとめることはできません。変更した段はあなたのテキストが優先され、変更していない段は引き続き公式原文を使用します。ある段を空にする = その段は公式原文に戻ります。", "桌面端": "デスクトップ版", "桌面端登录 / 注册验证": "デスクトップ版のログイン / 登録時の認証", "桌面端:登录 / 注册需要 ALTCHA 人机验证": "デスクトップ:ログイン / 登録に ALTCHA の認証が必要", "桌面端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "デスクトップ:ログイン / 登録に ALTCHA の認証が必要(現在使用中)", "桌面运行时不可用,暂时无法保存": "デスクトップランタイムが利用できないため、保存できません", "档案": "プロファイル", "检测中…": "確認中…", "概览": "概要", "模型不能直接看图时,按你选择的方式处理。原生支持图片的请求直接转发,不增加识图调用。": "モデルが画像を直接認識できない場合に、選択した方式で処理します。画像に対応するモデルへのリクエストは追加の読み取りを行わず、そのまま転送します。", "模型单独配置": "モデル別設定", "模型目录没写明是否支持图片时按这里处理。": "モデル一覧に画像対応の記載がない場合の扱いです。", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。下面两块分别选好「哪些模型」和「用哪只模型」即可;没配到的模型、以及本来就能看图的模型,一律原样放行。这里的改动立即生效,不需要保存。": "画像を読めないモデルへの対処は 2 通りだけです。別のモデルに読ませるか、リクエスト全体を画像を読めるモデルに渡すかです。下の 2 つのブロックで「対象のモデル」と「使うモデル」を選んでください。ここに含まれないモデルと、もともと画像を読めるモデルはそのまま通します。ここの変更はすぐ反映され、保存は不要です。", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。没配到的模型、以及本来就能看图的模型,一律原样放行;每个请求只用其中一种方式,不会两种串着做,处理失败也不会改走另一种。改动立即生效,不需要保存。": "画像を読めないモデルへの対処は 2 通りだけです。別のモデルに読ませるか、リクエスト全体を画像を読めるモデルに渡すかです。ここに含まれないモデルと、もともと画像を読めるモデルはそのまま通します。1 つのリクエストで使う方式は 1 つだけで、2 つを続けて実行することはなく、失敗してももう一方には切り替えません。ここの変更はすぐ反映され、保存は不要です。", "模型请求是否需要验证码由 ZCode 上游配置决定,领取验证与模型请求免验证分别处理。后台只检查配置和库存,不自动运行验证码或弹出拼图;需要验证时,在账号的「套餐明细」中点击「开始验证」。验证令牌一次性使用,短时间内过期,失败或取消后不会自动重试。": "モデルリクエストの認証要否は ZCode の上流設定で決まり、プラン受け取りの認証とは別に扱います。バックグラウンドは設定と在庫のみを確認し、認証やパズルを自動表示しません。必要な場合は「プラン詳細」で「認証を開始」を押してください。トークンは一度のみ使用でき短時間で失効し、失敗やキャンセル後は自動再試行しません。", "模式": "モード", "模式改为「{mode}」": "モードを「{mode}」に変更しました", "次": "回", "次日 00:00": "翌日 00:00", "正则表达式": "正規表現", "正在保存上游原始报文:": "アップストリームの生メッセージを保存中:", "正在修改…": "変更中…", "正在剥离出站请求里的审核指纹:表头键值整段删除,模板句最小改写。": "送信リクエスト内の審査フィンガープリントを除去しています:ヘッダーのキーと値は丸ごと削除し、テンプレート文は最小限に書き換えます。", "正在安装…": "インストール中…", "正在应答跨源请求:浏览器跨域请求可直连 /v1/*。": "クロスオリジンリクエストに応答中:ブラウザーからの CORS リクエストは /v1/* に直接接続できます。", "正在归一角色:developer 角色消息转发前改写为 system。": "ロールを正規化中:developer ロールのメッセージは転送前に system に書き換えられます。", "正在注册…": "登録中…", "正在联网更新": "オンラインで更新中", "正在读取提供商设置…": "プロバイダー設定を読み込み中…", "正式版": "正式版", "每个请求只会用到其中一种方式,不会两种串着做;处理失败也不会改走另一种。配了哪只视觉模型,那次请求的图片就会交给它。": "1 つのリクエストで使う方式は 1 つだけです。2 つを続けて実行することはなく、失敗してももう一方には切り替えません。設定した視覚モデルに、そのリクエストの画像が渡されます。", "每条请求轮换到下一个可用账号;新会话交给当前最闲的那位。适合想把手里的号摊开用、不让某一个一直扛。": "リクエストごとに次の利用可能なアカウントへ順送りし、新しいセッションはいちばん暇なアカウントに任せます。手持ちのアカウントをまんべんなく使いたいときに。", "每条请求都重新按策略选路 —— 行为与「关闭」一致,仅保留会话识别的记录。": "リクエストごとに戦略に従って選び直します —— 動作は「オフ」と同じで、セッションの記録だけが残ります。", "每次等待的时长,默认 0 = 跟随上游建议(实测 9~30 秒,上游没给建议时用 15 秒)。可填 0–120 秒强制一个固定时长。": "1 回の待機時間。デフォルト 0 = アップストリームの推奨に従う(実測 9~30 秒、アップストリームが推奨を示さない場合は 15 秒)。0–120 秒を入力して固定の待機時間を強制することもできます。", "每行一个域名,不填协议、端口或路径;与 Cloudflare 中的配置一致,服务端按完整域名匹配。手机 App 使用所连接网关的域名。": "1 行に 1 つのホスト名を入力し、プロトコル・ポート・パスは含めないでください。Cloudflare の設定と一致させてください。サーバーはホスト名を完全一致で確認します。モバイルアプリは接続先ゲートウェイのホスト名を使用します。", "毫秒": "ミリ秒", "沟通方式 / 上下文管理 + Environment 段。": "コミュニケーション方針 / コンテキスト管理 + Environment の段です。", "没有可导出的账号": "エクスポートできるアカウントがありません", "没有可用视觉模型时": "利用可能な視覚モデルがない場合", "没有已确认支持图片的模型,请先在模型管理中确认。": "画像対応が確認済みのモデルがありません。先にモデル管理で確認してください。", "没能读到「{label}」的当前值,改为 {count} 条可能会删除超出的历史数据。": "「{label}」の現在値を読み取れませんでした。{count} 件に変更すると、超過した履歴データが削除される可能性があります。", "没能读到「{label}」的当前值,改为 {days} 天可能会删除超出的历史数据。": "「{label}」の現在値を読み取れませんでした。{days} 日に変更すると超過した履歴データが削除される可能性があります。", "沿用对应方式的视觉模型配置,不额外维护一份模型列表。": "該当する方式の視覚モデル設定を利用します。別のモデル一覧は不要です。", "沿用工具服务的视觉分析模型": "ツールサービスの視覚分析モデルを利用", "沿用工具服务的视觉分析模型(未配置)": "ツールサービスの視覚モデルを使う(未設定)", "注册并开启": "登録してオンにする", "注册管理员账号": "管理者アカウントを登録", "注意:这一家的「网关自带」开关现在是关的,改过的正文要等开关打开才生效。": "注意:このプロバイダーの「ゲートウェイ内蔵」スイッチは現在オフです。変更した本文はスイッチをオンにするまで有効になりません。", "流式响应相邻数据之间允许的最大空闲时间(秒),收到新数据后重新计时,默认 300 秒,范围 1~3600。": "ストリーミング応答の隣接するデータ間に許される最大アイドル時間(秒)。新しいデータを受信すると計時がリセットされます。デフォルト 300 秒、範囲 1~3600。", "流式响应空闲超时": "ストリーミング応答アイドルタイムアウト", "测试连接": "接続テスト", "浏览器 / PWA": "ブラウザ / PWA", "浏览器只在 https 或 localhost 下提供离线缓存;局域网 http 访问不影响正常使用": "ブラウザは https または localhost でのみオフラインキャッシュを提供します。LAN の http アクセスでも通常どおり使えます。", "浏览器在本地完成计算,不需要第三方密钥,也不依赖外部验证服务。": "ブラウザー内で計算を行います。外部サービスのキーや認証サービスは不要です。", "浏览器标签页": "ブラウザのタブ", "浏览器面板": "ブラウザパネル", "消息角色": "メッセージのロール", "添加备选模型": "代替モデルを追加", "添加提供商": "プロバイダーを追加", "添加提供商…": "プロバイダーを追加…", "添加自定义头": "カスタムヘッダーを追加", "添加要单独配置的提供商": "個別設定するプロバイダーを追加", "清除本机凭证": "この端末の認証情報を削除", "清除这里的正文": "ここの本文をクリア", "源代码": "ソースコード", "点下面的入口会用系统默认浏览器打开 GitHub 的对应表单(需要 GitHub 账号,模板已预设好,填完直接提交即可)。": "下のリンクをクリックすると、システムのデフォルトブラウザーで GitHub の該当フォームが開きます(GitHub アカウントが必要。テンプレートは用意済みなので、記入してそのまま送信するだけです)。", "点击重命名": "クリックで名前を変更", "点此添加或切换服务器": "タップしてサーバーを追加・切り替え", "点此添加服务器": "タップしてサーバーを追加", "版本": "バージョン", "版本信息": "バージョン情報", "版本信息 · 所连网关环境": "バージョン情報 · 接続中のゲートウェイ", "版权声明": "著作権表示", "状态码 {code} 已在名单里": "ステータスコード {code} はすでにリストにあります", "状态码必须是 {min}–{max} 的整数(收到: {text})": "ステータスコードは {min}–{max} の整数でなければなりません(受信値:{text})", "环境": "環境", "生成时间:{time}": "作成日時:{time}", "生效顺序:有效的来源声明优先,然后按顺序匹配自定义规则,最后使用内置规则。中转丢失原始标识时,无法自动推断背后的软件。": "適用順序:有効な申告、カスタムルールの順序、内蔵ルール。中継で元の識別情報が失われた場合、元のソフトウェアを自動推定することはできません。", "用 models.dev 补齐上游没声明的模型能力与思考档位(联网刷新,内嵌快照始终生效)": "上流が宣言していないモデル能力と推論レベルを models.dev で補完する(オンライン更新。同梱スナップショットは常に有効)", "用于加密上云的账号密钥。请自己记牢 —— 它不保存到云端,换机下载时必须输入同一个密码,否则账号数据无法解密。": "クラウドに送るアカウントキーの暗号化に使います。忘れないでください —— クラウドには保存されず、別のマシンで復元する際に同じパスワードを入力しないとアカウントデータを復号できません。", "用哪只模型识图": "画像を読むモデル", "用浏览器菜单里的「添加到主屏幕」把这一页装成 App:全屏打开、没有地址栏,和原生应用一样。": "ブラウザメニューの「ホーム画面に追加」でこのページをアプリとして入れられます。全画面・アドレスバーなしで、ネイティブアプリと同じ感覚です。", "由 Cloudflare 提供验证,需要浏览器与网关均能连接 Cloudflare。验证失败或服务不可用时不会自动放行。": "Cloudflare が認証を提供します。ブラウザーとゲートウェイの両方から Cloudflare に接続できる必要があります。認証失敗やサービス停止時にアクセスを許可することはありません。", "由 {source} 覆盖,手动设置暂不生效": "{source} が優先され、手動設定は現在適用されていません", "界面缩放": "UI ズーム", "界面缩放比例": "UI ズーム比率", "界面语言": "表示言語", "界面语言。可选简体中文、繁體中文、English、日本語、한국어、Português (Brasil),或「跟随系统」(按浏览器 / 系统的语言列表自动选)。切换后整页立即刷新;该偏好只存在本机(localStorage),不影响账号、密钥与转发。": "表示言語。簡体字中国語、繁體中文、English、日本語、한국어、Português (Brasil)、または「システム」(ブラウザー / システムの言語リストに従って自動選択)から選べます。切り替えるとページ全体が即座に再読み込みされます。この設定は本機(localStorage)にのみ保存され、アカウント、キー、転送には影響しません。", "界面语言只保存在本机(localStorage)。切换后整页立即刷新,不影响账号、密钥与转发。": "表示言語は本機(localStorage)にのみ保存されます。切り替えるとページ全体が即座に再読み込みされ、アカウント、キー、転送には影響しません。", "界面里编辑的正文": "画面で編集した本文", "留空 = 用内置默认提示词": "空欄 = 内蔵のデフォルトシステムプロンプトを使用", "留空使用 AWS 官方地址": "空欄なら AWS 公式アドレスを使用", "留空使用默认": "空欄なら既定値を使用", "留空表示删除匹配内容;替换内容按原文写入,$ 不作为捕获组引用。": "空欄なら一致部分を削除します。置換内容はそのまま書き込み、$ をキャプチャグループ参照として扱いません。", "登录 / 注册需要通过 ALTCHA 人机验证(工作量证明)": "ログイン / 登録には ALTCHA の人間検証(プルーフ・オブ・ワーク)が必要です", "登录 / 账号切换 / 429 切换等系统事件,可填 1–3650 天。": "ログイン / アカウント切替 / 429 切替などのシステムイベント。1–3650 日の範囲で入力できます。", "登录 / 账号切换 / 429 切换等系统事件,可填 1–99999 天。": "ログイン / アカウント切り替え / 429 切り替えなどのシステムイベント。1〜99999 日で指定できます。", "登录 Agent2API": "Agent2API にログイン", "登录 {name}": "{name} にログイン", "登录人机验证": "ログイン CAPTCHA", "百分比类读数(如 OpenCode Go、Antigravity)不能相加,组头显示的是组内最低剩余比例。": "パーセント表示の読み取り値(OpenCode Go、Antigravity など)は合算できないため、帯にはグループ内で最も低い残り割合を表示します。", "监听地址": "待受アドレス", "目前展示仓库已登记的图标来源许可,不代表完整的第三方依赖清单。": "現在表示しているのは、リポジトリに登録済みのアイコン出典のライセンスです。サードパーティ依存関係の完全な一覧ではありません。", "目标路径:{path}": "保存先パス:{path}", "直接按上面的设置兼容": "上の設定でそのまま互換処理する", "直接按当前方式兼容": "選択した方式で直接処理", "知道了": "了解", "确定": "確定", "确定后加入当前草稿,点击「保存设置」才会生效。": "確定すると下書きに追加します。「設定を保存」を押すと有効になります。", "确定继续?": "続行しますか?", "确认上传": "アップロードを確認", "确认图片处理授权": "画像処理の許可を確認", "确认备份密码": "バックアップのパスワードを確認", "确认并保存": "確認して保存", "确认新密码": "新しいパスワード(確認)", "确认缩减数据保留": "データ保持の縮小を確認", "确认缩短保留天数": "保存日数の短縮を確認", "社区与支持": "コミュニティとサポート", "离线缓存未启用": "オフラインキャッシュは無効です", "积分合计只统计当前筛选出来的账号": "ポイント合計を現在の絞り込み結果のみで計算する", "移入「{name}」": "「{name}」へ移動", "程序路径": "実行ファイルのパス", "空 = 不要这一份,回落提示词文件 / 内置默认提示词。": "空 = この本文を使用せず、システムプロンプトファイル / 内蔵デフォルトにフォールバックします。", "空分组 · 点组头的 + 把菜单移进来": "空のグループ · 見出しの + でメニューを移動できます", "立即解除": "今すぐ解除", "站点密钥(Site Key)": "サイトキー(Site Key)", "第一段": "第 1 段", "第一段(身份句)": "第 1 段(アイデンティティ文)", "第三方应用密码": "サードパーティアプリのパスワード", "第三方开源许可": "サードパーティのオープンソースライセンス", "第三方模型回答完自动折叠过程": "サードパーティモデルの回答後の工程を自動で折りたたむ", "第三方模型回答完自动折叠过程设置已刷新": "サードパーティモデルの回答後の工程の自動折りたたみ設定を更新しました", "第三段": "第 3 段", "第三段(动态段)": "第 3 段(動的段)", "第二段": "第 2 段", "第二段(稳定段)": "第 2 段(安定段)", "等待响应超时": "応答待ちタイムアウト", "等待期间请求日志的状态列会显示「排队中」阶段,详情弹窗的「内部重试」里能逐次看到等待时长;等待用尽后返回 HTTP 503(不是 401/429:既不会刷新凭证,也不会把账号标成限额)。": "待機中はリクエストログのステータス列に「キューイング中」の段階が表示され、詳細ダイアログの「内部リトライ」で待機時間を 1 回ずつ確認できます。待機を使い切ると HTTP 503 を返します(401/429 ではありません:認証情報の更新も、アカウントをレート制限としてマークすることも行いません)。", "等比放大或缩小整个界面(文字、控件、间距一起变),效果与浏览器按 Ctrl +/- 相同:80%–130%、5% 一档。窗口本身不缩放,变的是页面内容的显示比例,设置立即生效并记住,下次启动直接按这个比例打开。放得越大可视范围越小,窗口较窄或表格较宽时不建议调得太大。": "UI 全体を等比で拡大または縮小します(文字、コントロール、余白が一緒に変化)。効果はブラウザーで Ctrl +/- を押した場合と同じ:80%–130%、5% 刻み。ウィンドウ自体は拡大縮小されず、変わるのはページ内容の表示比率です。設定は即時有効かつ記憶され、次回起動時はその比率で直接開きます。大きくするほど表示できる範囲は狭くなるため、ウィンドウが狭い場合やテーブルが広い場合はあまり大きくしすぎないことをおすすめします。", "简体中文": "簡体字中国語", "管理员已注册": "管理者登録済み", "管理员账号": "管理者アカウント", "管理插件": "プラグインを管理", "精确文本": "完全一致テキスト", "系统提示词模式": "システムプロンプトモード", "系统提示词设置已刷新": "システムプロンプト設定を更新しました", "累计请求": "累計リクエスト", "繁体中文": "繁体字中国語", "约 {n} 字符": "約 {n} 文字", "结构": "構造", "给 Codex 的响应补阶段标记,回答完后像官方模型一样把推理与命令过程折叠起来": "Codex へのレスポンスにフェーズマーカーを補い、回答後に公式モデルと同様に推論とコマンドの工程を折りたたむ", "继续并清理": "続行して削除", "编辑提示词正文 · {label}": "システムプロンプト本文を編集 · {label}", "编辑提示词正文 · 全局": "システムプロンプト本文を編集 · グローバル", "编辑正文": "本文を編集", "编辑网关自带提示词 · {label}": "ゲートウェイ内蔵システムプロンプトを編集 · {label}", "编辑脱敏规则": "マスキングルールを編集", "编辑识别规则": "識別ルールを編集", "缩放后重新存成 JPEG 时用的质量。默认 80,可填 40–95;数值越小体积越小、画质越差。": "縮小後の画像を JPEG で保存し直すときの品質です。既定 80、40〜95 で指定できます。小さいほど容量は減りますが画質が落ちます。", "缩放比例": "ズーム比率", "网关": "ゲートウェイ", "网关 Key 数量": "ゲートウェイキー数", "网关尚未就绪": "ゲートウェイの準備ができていません", "网关自带": "ゲートウェイ内蔵", "网关跨域访问已开启": "ゲートウェイの CORS アクセスをオンにしました", "网关跨域访问设置已刷新": "ゲートウェイの CORS アクセス設定を更新しました", "网关跨域访问(CORS)": "ゲートウェイの CORS アクセス(クロスオリジン)", "网关面(/v1/*)默认不应答浏览器跨源请求:页面直连会被预检拦下,只报「无法连接 API」。注意来源是 * —— 未配「网关 Key」时任何网页都能借本机网关打上游,故默认关闭;只给自己用的话,让页面与网关同源(本地反代 /v1)更稳妥。面板接口(/api/*)不受影响。": "ゲートウェイ側(/v1/*)はデフォルトでブラウザーのクロスオリジンリクエストに応答しません:ページから直接接続するとプリフライトで拒否され、「API に接続できません」としか表示されません。許可オリジンが * である点に注意 —— 「ゲートウェイキー」を設定していない場合、どんな Web ページでも本機のゲートウェイ経由でアップストリームへアクセスできてしまうため、デフォルトではオフです。自分の利用だけであれば、ページとゲートウェイを同一オリジンにする(ローカルで /v1 をリバースプロキシする)ほうが安全です。パネルのインターフェース(/api/*)は影響を受けません。", "网络访问": "ネットワークアクセス", "网页端": "Web", "网页端登录 / 注册验证": "Web 版のログイン / 登録時の認証", "网页端的界面缩放由浏览器自己控制(Ctrl + / Ctrl -,或浏览器菜单里的缩放),此项不可调。": "Web 版の UI ズームはブラウザー側で制御します(Ctrl + / Ctrl -、またはブラウザーメニューのズーム)。この項目は調整できません。", "网页端:登录 / 注册需要 ALTCHA 人机验证": "Web:ログイン / 登録に ALTCHA の認証が必要", "网页端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "Web:ログイン / 登録に ALTCHA の認証が必要(現在使用中)", "网页管理地址": "Web 管理アドレス", "群晖 NAS": "Synology NAS", "群晖需在「控制面板 → 应用程序门户 → WebDAV」里启用服务,端口默认 5005(HTTP)/ 5006(HTTPS)。": "Synology では「コントロールパネル → アプリケーションポータル → WebDAV」でサービスを有効にしてください。既定のポートは 5005(HTTP)/ 5006(HTTPS)です。", "脱敏词表": "マスキングルール", "腾讯云 COS": "Tencent Cloud COS", "自动同步": "自動同期", "自动同步上次失败": "前回の自動同期に失敗しました", "自动续写": "自動継続生成", "自定义 User-Agent": "カスタム User-Agent", "自定义 · {name}": "カスタム · {name}", "自定义头匹配规则": "カスタムヘッダールール", "自定义客户端分类": "カスタムクライアント分類", "自定义客户端数量已达上限": "カスタムクライアント数が上限に達しました", "自定义提供商 {id}": "カスタムプロバイダー {id}", "自定义网站和应用界面中显示的名称与 Logo。": "Web サイトとアプリの画面に表示する名前とロゴを変更します。", "自定义识别规则": "カスタム識別ルール", "自愈保护": "自動回復ガード", "至少 12 位": "12 文字以上", "至少 8 位,换机下载时需要": "8 文字以上。別のマシンでの復元時に必要", "至少要保留一个分组": "グループは最低 1 つ必要です", "英语": "英語", "范围 5–120 秒,并受原请求时限约束。": "範囲は 5~120 秒で、元のリクエストの制限時間にも従います。", "范围为 5–120 秒,并受原请求时限约束。图片过大、格式错误或下载失败不会被当作模型不支持图片。": "5~120秒の範囲で指定し、元のリクエストの制限時間も適用されます。画像サイズ超過、形式エラー、ダウンロード失敗は画像非対応として扱いません。", "被更高优先级覆盖": "優先度の高い設定で上書き", "装上{size}的官方身份提示词": "{size}の公式アイデンティティプロンプトを適用", "装成 App 后从桌面图标直接进入:全屏打开、没有地址栏。": "アプリとして入れるとホーム画面のアイコンから直接開けます。全画面・アドレスバーなし。", "覆盖": "上書き", "规则 / 匹配方式": "ルール / 一致方式", "规则可以增删改、启停和调整顺序;替换内容留空表示删除匹配内容。恢复默认只重置词表,不改开关和提供商范围。": "ルールの追加、編集、削除、有効化、無効化、並べ替えが可能です。置換内容が空なら一致部分を削除します。デフォルト復元はルールのみをリセットし、スイッチとプロバイダー範囲は変更しません。", "规则名称": "ルール名", "规则名称不能为空,且最多 {max} 个字符": "ルール名は必須です。{max} 文字以内で入力してください", "规则已保存,对后续请求生效;当前历史记录未修改。": "ルールを保存しました。以後のリクエストに適用され、現在の過去記録は変更されていません。", "规则忽略大小写,只影响新请求的日志与统计,不改变模型选择或权限。": "ルールは大文字・小文字を区別せず、新しいリクエストのログと統計にのみ適用されます。モデル選択や権限は変わりません。", "规则编号:{id}": "ルールID:{id}", "视觉模型": "視覚モデル", "视觉模型先识读图片,再由原模型分析和回答。": "視覚モデルが画像を読み取った後、元のモデルが分析して回答します。", "视觉模型来源": "視覚モデルの指定方法", "视觉模型的思考等级": "視覚モデルの思考レベル", "视觉模型直接回答": "視覚モデルが直接回答", "视觉模型识读图片": "視覚モデルが画像を読み取り", "解码后小于这个体积的图片保持原样。默认 512KB,可填 0–10240;填 0 表示所有内嵌图片都过一遍。": "デコード後のサイズがこの値を下回る画像はそのまま送ります。既定 512KB、0〜10240 で指定できます。0 にするとすべてのインライン画像を処理します。", "解除失败:{message}": "解除に失敗しました:{message}", "触发阈值": "適用しきい値", "计数": "カウント", "计量单位": "表記単位", "让 Codex 在收到最终答案后收起中间过程。仅为严格识别的 Codex Responses 请求补阶段标记,报表归类和来源声明不影响此判断。正常结束且没有工具调用的非空回答才补 final_answer,工具调用前的说明补 commentary;错误、截断、缺少结束信号或未知结束原因不补最终答案标记。默认关闭,不改变回答文字,也不减少模型思考或用量。": "Codex が最終回答を受け取った後、中間の作業を折りたためるようにします。厳密に識別した Codex の Responses リクエストにのみフェーズを補い、レポートの分類やクライアントの自己申告には左右されません。正常終了し、ツール呼び出しのない空でない回答にだけ final_answer を付け、ツール呼び出し前の説明には commentary を付けます。エラー、切り詰め、完了通知の欠落、不明な終了理由には最終回答マーカーを付けません。既定はオフで、回答本文、モデルの推論、使用量は変わりません。", "许可原文": "ライセンス原文", "许可原文已随软件内置,无需联网即可查看;打开项目来源链接需要联网。": "ライセンス原文はアプリに同梱されており、オフラインで閲覧できます。プロジェクトの出典リンクを開くにはインターネット接続が必要です。", "许可核对版本": "ライセンス確認に使用したリビジョン", "设置不可隐藏(隐藏了只能清缓存找回来)": "「設定」は非表示にできません(戻すにはデータの削除が必要になります)", "设置备份密码": "バックアップのパスワードを設定", "设置识别规则": "識別ルールを設定", "访问时请使用目标设备能连接到的地址;这里显示的本机地址不代表公网可达。": "接続元の端末から到達できるアドレスを使用してください。ここに表示されるアドレスは、インターネットからの到達を保証するものではありません。", "识别依据": "識別根拠", "识别规则数量已达上限": "識別ルール数が上限に達しました", "词表为空,不会改写任何指纹。可以新增规则或恢复默认词表。": "ルールが空のためフィンガープリントを変更しません。ルールを追加するかデフォルトに戻してください。", "该提供商暂无可编辑的专属设置": "このプロバイダーには編集可能な固有設定がありません", "详细日志": "詳細ログ", "语言设置": "言語設定", "请先保存设置再同步": "同期する前に設定を保存してください", "请先在 Cloudflare 创建 Turnstile 组件,建议选择 Managed 模式,并添加面板实际使用的域名。": "まず Cloudflare で Turnstile ウィジェットを作成してください。Managed モードを推奨します。パネルで実際に使用するドメインを追加してください。", "请填一个分组名": "グループ名を入力してください", "请填写管理员账号(64 字符以内)": "管理者アカウントを入力してください(64 文字以内)", "请求发出后等待上游响应头的最大时间(秒),默认 300 秒,范围 1~3600。": "リクエスト送出後、アップストリームのレスポンスヘッダーを待つ最大時間(秒)。デフォルト 300 秒、範囲 1~3600。", "请求带有不同软件的标识,未自动归类;可用自定义规则明确归属。": "異なるソフトウェアの識別情報が含まれるため、自動分類しませんでした。カスタムルールで分類先を指定できます。", "请求提供商 / 模型支持": "プロバイダー / モデルの対応をリクエスト", "请求日志保留天数": "リクエストログ保持日数", "请求日志保留数量上限": "リクエストログの保存件数上限", "请求记录": "リクエスト記録", "请求超时": "リクエストタイムアウト", "请求转发到上游失败时(服务器瞬时错误、连接失败,以及 WorkBuddy 的 11-128 敏感词拦截),网关会等一段间隔后再发一次。次数分两档,管的是两件事:①「同一账号重试次数」在同一账号上原地重发几次 —— 一般是提示词被上游拦截、或链路瞬时抖动,等一会儿重发往往就好了;②「切换账号重试次数」这份请求最多再换几个账号试 —— 首发的那个账号不算,每换一个扣一次,不分是不是同一家(换到同一家的下一个账号也算一次),换满还失败就把错误返回给客户端。两项都设为 0 表示失败不重试、直接报错。注意账号级限额(429)不占这里的换号次数 —— 那类失败走「冷却该账号并换下一个账号」的降级,与这里的重试是两条路。另有「指定错误码直接换号」名单(默认 402):命中名单的上游状态码不在同一账号重发,直接按队列换下一个账号继续试(换号也占「切换账号重试次数」),换满仍失败才把错误返回给客户端。": "アップストリームへの転送が失敗した場合(サーバーの一時的なエラー、接続失敗、および WorkBuddy の 11-128 センシティブワードブロック)、ゲートウェイは一定の間隔を置いてからもう一度送信します。回数は 2 系統に分かれ、それぞれ別のことを司ります:①「同一アカウントのリトライ回数」は同じアカウントでそのまま何回再送するか —— 多くはシステムプロンプトがアップストリームでブロックされた、または経路の一時的な揺らぎで、しばらく待って再送すれば直ることがよくあります;②「アカウント切替のリトライ回数」はこのリクエストであと最大何個のアカウントに切り替えて試すか —— 初回のアカウントは含まず、切り替えるたびに 1 回消費し、同じプロバイダーかどうかは問いません(同じプロバイダーの次のアカウントへの切替も 1 回と数えます)。使い切ってもなお失敗する場合はエラーをクライアントへ返します。両方とも 0 にすると、失敗時にリトライせず直接エラーを返します。注意:アカウント単位のレート制限(429)はここの切替回数を消費しません —— その種の失敗は「そのアカウントを冷却して次のアカウントへ」というフォールバックを通り、ここのリトライとは別ルートです。また「指定エラーコードで直接アカウント切替」リスト(デフォルト 402)があります:リストに該当するアップストリームのステータスコードは同一アカウントでの再送を行わず、キューの次のアカウントへ直接切り替えて試行を続けます(切替は「アカウント切替のリトライ回数」を消費します)。使い切ってもなお失敗する場合にのみ、エラーがクライアントへ返されます。", "请求重试": "リクエストリトライ", "请至少选择一个提供商": "プロバイダーを1つ以上選択してください", "请输入同步密码": "同期パスワードを入力してください", "请输入当前密码": "現在のパスワードを入力してください", "请输入服务端密钥": "シークレットキーを入力してください", "请选择可用的标识请求头": "使用可能な識別ヘッダーを選択してください", "请选择归属客户端": "分類先のクライアントを選択してください", "读取云同步设置失败:{message}": "クラウド同期の設定を読み取れませんでした:{message}", "读取失败:{message}": "読み込みに失敗しました: {message}", "读取完整非流式响应体允许的最大时间(秒),默认 300 秒,范围 1~3600。": "非ストリーミングレスポンスボディ全体を読み切るために許される最大時間(秒)。デフォルト 300 秒、範囲 1~3600。", "读取网关信息失败:{message}": "ゲートウェイ情報の読み込みに失敗しました: {message}", "读取远端…": "リモートを読み取り中…", "读取远端信息失败:{message}": "リモート情報の取得に失敗しました:{message}", "调用方声明": "呼び出し元の申告", "调试报文": "デバッグメッセージ", "调试模式": "デバッグモード", "调试模式设置已刷新": "デバッグモード設定を更新しました", "负载均衡": "負荷分散", "账号列表": "アカウント一覧", "账号导入 / 导出": "アカウントのインポート / エクスポート", "账号路由": "アカウントルーティング", "账号页表格的两项显示偏好,只存在本机(localStorage),不影响账号数据与转发。「积分合计只统计当前筛选出来的账号」:账号页每一家的分组带右侧有一枚「可用合计」,默认按整组求和 —— 不受筛选、搜索影响,被筛掉的账号也计入(余额是资产,禁用也只表示不参与转发,额度仍在账上)。打开这一项后改为只累加当前可见的行:例如筛出 1 个 100 积分的账号,合计就是 100,而不是同组两个账号之和 1,000。分页不参与这个口径 —— 翻页看的是同一份结果的不同屏,合计不随页码变化。「隐藏账号名」与表头「账号」旁边那颗眼睛是同一个开关:打开后账号列的名字整体显示成星号,适合截图分享时遮挡账号。": "アカウント一覧表の表示設定です。本機のみ(localStorage)に保存され、アカウントデータや転送には影響しません。「ポイント合計を現在の絞り込み結果のみで計算する」:アカウントページの各プロバイダ帯の右側に「利用可能合計」があります。既定ではグループ全体を合算し、絞り込みや検索の影響を受けず、除外されたアカウントも含まれます(残高は資産であり、無効化は転送に参加しないだけで、ポイントは残ります)。この項目をオンにすると、現在表示中の行だけを合算します。たとえば 100 ポイントのアカウント 1 件に絞り込むと合計は 100 になり、同じグループの 2 件の合計 1,000 にはなりません。ページ送りはこの計算に含まれません。ページは同じ結果を別の画面で見ているだけなので、ページを変えても合計は変わりません。「アカウント名を隠す」は表の「アカウント」列の横にある目のアイコンと同じスイッチです。オンにするとアカウント列の名前がアスタリスクで表示され、スクリーンショットの共有時に隠せます。", "账户": "アカウント", "超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件。把天数改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。可填范围为 1–3650 天。请求日志 / 按天聚合 / 签到记录已全量保留、不再自动删除,要清历史请到对应页面手动清空。": "保存期間を超えた部分は削除されます:イベントログはログイン、アカウント切替、429 切替といったシステムイベントです。日数を小さくして(例:30 日→7 日)保存すると、超えた履歴データは即座に削除され、元に戻せません。大きくするか変更しない場合は何も削除されません。設定できる範囲は 1〜3650 日です。リクエストログ / 日次集計 / チェックイン記録は全量保持となり自動削除されません。履歴を消すには、それぞれのページで手動でクリアしてください。", "超出的历史数据会被立即删除,且不可恢复。": "超過した履歴データはすぐに削除され、元に戻せません。", "超时": "タイムアウト", "超时设置已刷新": "タイムアウト設定を更新しました", "跟随模型配置": "モデル設定に従う", "跟随系统 · 浅色 · 深色": "システム · ライト · ダーク", "跟随默认": "デフォルトに従う", "跨域访问": "CORS", "路由": "ルーティング", "路由组只使用组内成员;普通路由只使用参与范围内的账号和模型。": "ルートグループはグループ内のメンバーのみを使用し、通常のルートは参加範囲内のアカウントとモデルのみを使用します。", "路由设置已刷新": "ルーティング設定を再読み込みしました", "跳过 {n} 个": "スキップ {n} 件", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;负载均衡是每条请求换下一位,把负载摊到各个账号上。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时)、被 429 的账号垫底排到队尾 30 分钟、余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 前两层可以在下面按需开关,限制器由账号的「限制器」设置管。": "リクエストの転送時にアカウントをどんな順で選ぶか:①「ルーティング戦略」が並びの規則を決めます —— 順序優先は 1 番手が答えられなくなる(レート制限 / 障害 / 枠切れ)まで全リクエストを受け持ち、そこで次に回ります。負荷分散はリクエストごとに次のアカウントへ回し、負荷を各アカウントに分散します。②「セッション粘着」は同じセッション(同じモデル + 同じ冒頭メッセージ)をできるだけ同じアカウントにひも付けます —— 連続対話ではアップストリームのコンテキストキャッシュを再利用でき、アカウントの切り替えも浪費も減ります。自動は 5 分、セッション単位は 6 時間粘着し、毎ターンとオフは粘着しません。アカウントの並び順(アカウント表の 1 列目)はどの戦略でも土台で、戦略はその上に重なります。さらにルーティングには 3 つの自動回復ガードがあります:転送に失敗したアカウントはしばらく退避し(15 分から始まり失敗のたびに倍増、上限 1 時間)、枠が残ったまま 429 を受けたアカウントは 30 分間最後尾へ回り、枠切れ / 期間トークン上限に達したアカウントはリミッターに止められます —— 前の 2 つは下で必要に応じてオン / オフでき、リミッターは各アカウントの「リミッター」設定に従います。", "转发前压缩对话里内嵌的大图(只改发给上游的副本,生图与图片编辑不受影响)": "転送前に会話へ埋め込まれた大きな画像を圧縮(変更されるのは上流へ送るコピーだけ。画像生成と画像編集には影響しません)", "转发前将 developer 角色消息转换为 system,兼容不支持 developer 角色的 OpenAI 兼容上游": "転送前に developer ロールのメッセージを system に変換し、developer ロール非対応の OpenAI 互換アップストリームにも対応", "转发失败的账号休息一会儿再回来:15 分钟起步,连续失败翻倍,封顶 1 小时;成功一次立即恢复。目的是「让这次失败先凉一会儿」,免得一条条地反复撞同一个坏账号。": "転送に失敗したアカウントはしばらく休んでから戻ります:初回 15 分、連続失敗で倍増、上限 1 時間。1 回成功すれば即復帰。「いったん失敗を冷ます」ためのもので、同じ不調アカウントにリクエストを連打しないための仕組みです。", "转发链路": "転送経路", "轮询间隔": "ポーリング間隔", "软件标识超过 1 KB,已截断保存;匹配仅使用保留部分。": "ソフトウェア識別情報が1 KBを超えたため切り詰めて保存しました。一致判定には保存部分のみを使用します。", "软件版本": "ソフトウェアバージョン", "轻量模式": "軽量モード", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 套餐池(Start Plan)通道不可用,相关请求会在请求日志里注明原因": "軽量モードが有効です:ウィンドウを閉じると UI プロセスを破棄し(約 200MB のメモリを解放)、ゲートウェイはバックグラウンドで継続します。UI が破棄されている間、ZCode プランプール(Start Plan)経路は利用できず、該当リクエストはリクエストログに理由が記録されます", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 活动套餐通道不可用,相关请求会在请求日志里注明原因": "軽量モードがオン:ウィンドウを閉じると UI プロセスを破棄し(約 200MB のメモリを解放)、ゲートウェイはバックグラウンドで継続します。UI 破棄期間中は ZCode アクティブプランチャネルは利用できず、該当するリクエストは理由がリクエストログに記録されます", "轻量模式(关窗释放界面内存)": "軽量モード(閉じると UI のメモリを解放)", "辅助识图": "補助画像読み取り", "辅助识图 · 原模型回答": "補助読み取り · 元のモデルが回答", "辅助识图保留原模型回答;切换视觉模型会让视觉模型直接回答。本次授权也包含已设置的模型单独配置。": "補助読み取りでは元のモデルが回答し、モデル切り替えでは視覚モデルが直接回答します。この許可には設定済みのモデル別設定も含まれます。", "辅助识图或切换视觉模型,默认关闭": "補助画像読み取り・視覚モデル切り替え(デフォルト無効)", "辅助识图配置": "補助画像読み取り設定", "输入同步密码": "同期パスワードを入力", "输入当前登录用的密码": "現在のログインパスワードを入力", "输入状态码,回车添加": "ステータスコードを入力し、Enter で追加", "运行形态": "実行形態", "近期没有命中样本,不代表未来请求不会命中。": "最近の一致サンプルはありませんが、今後のリクエストが一致する可能性はあります。", "还原": "元に戻す", "还有额度时被 429 的账号排到队尾,30 分钟后自动回到队列(成功转发一次也会立即回来)。它标记的是「疑似共享池被别人抢」,不是「这个账号本身有问题」。⚠️ 注意它与路由策略的配合:在「家内轮询」下,队尾意味着这一家整体被往后排 —— 如果某个提供商的账号被批量限流,它们会集体沉到队尾,那个家可能长时间轮不到。这时可以关掉本项,让 429 过的账号只受冷却约束(冷却到点自动回来)。": "枠が残っているのに 429 を食らったアカウントは最後尾に回り、30 分後に自動復帰します(1 回でも転送が成功すればすぐ戻る)。これは「共有プールを他の人に取られている疑い」を示すもので、「このアカウント自体の問題」ではありません。⚠️ ルーティング戦略との組み合わせに注意:「プロバイダー内ローテーション」では最後尾 = プロバイダーごと後ろへ回ることを意味します —— あるプロバイダーのアカウントがまとめてレート制限されると全員が最後尾に沈み、そのプロバイダーが長く回ってこない可能性があります。その場合は本項をオフにして、429 済みアカウントをクールダウンだけに任せるとよいでしょう(時間が来れば自動で戻ります)。", "还没有可用的视觉模型。": "利用できる視覚モデルがまだありません。", "还没有同步过。": "まだ同期していません。", "还没有添加服务器。点右上角「添加」,填入网关所在机器的 IP 或域名与端口。": "サーバーがまだありません。右上の「追加」から、ゲートウェイが動作するマシンの IP またはドメインとポートを入力してください。", "还没有装载任何数据。": "まだデータが読み込まれていません。", "还没有读到版本信息": "バージョン情報をまだ読み込んでいません", "还没有选择模型,这块设置暂时不起作用。": "モデルが未選択のため、このブロックは今のところ何も行いません。", "这一份就是「替换 / 追加」模式下网关要发的 system 正文。": "これが「置換 / 追加」モードでゲートウェイが送信する system の本文です。", "这一项已隐藏": "この項目は非表示です", "这一项正在显示": "この項目は表示中です", "这些模型的请求交给当前路由内可用的视觉模型回答,不再回到原模型。": "これらのモデルへのリクエストは、現在のルート内で使える視覚モデルが元のモデルの代わりに回答します。", "这些模型看到图片时,先把图片交给 {model} 读一遍,再由它们自己结合读到的内容回答。": "これらのモデルが画像を受け取ると、まず {model} に読ませ、読み取った内容を踏まえて元のモデルが回答します。", "这些模型看到图片时,先把图片交给「沿用工具服务的视觉分析模型」读一遍,再由它们自己结合读到的内容回答。": "これらのモデルが画像を受け取ると、まずツールサービス側の視覚モデルに読ませ、読み取った内容を踏まえて元のモデルが回答します。", "这只模型只负责看图,最终仍由原模型回答。": "このモデルは画像を読むだけで、最終的な回答は元のモデルが行います。", "这只模型直接接收图片与对话,完成本次回答。": "このモデルが画像と会話を直接受け取り、今回の回答を行います。", "这台网关未启用机器人校验": "このゲートウェイではボット確認が無効です", "这台网关没有管理员,用一把已启用的 API Key 访问。": "このゲートウェイには管理者がいません。有効な API Key でアクセスしてください。", "这条历史请求没有保存识别依据,不能据此自动创建规则。": "この過去のリクエストには識別根拠が保存されていないため、自動でルールを作成できません。", "这条规则已被删除,请关闭编辑后重新添加。": "このルールは削除されました。編集画面を閉じて追加し直してください。", "这里只列出已保存的提供商配置;未配置的提供商沿用全局设置,可从下拉框手动添加。用户保存的模式、文件和正文优先于全局设置,「跟随默认」只取消该提供商的模式、文件和正文覆盖。ZCode 套餐池默认由插件按三块装配,客户端系统正文合入第三块,不会自动创建替换规则;手动修改的网关提示词段或关闭开关仍以用户配置为准,能否被接受取决于上游规则。": "保存済みのプロバイダー設定だけを表示します。未設定のプロバイダーは全体設定に従い、ドロップダウンから手動で追加できます。保存したモード・ファイル・本文は全体設定より優先されます。「デフォルトに従う」は、そのプロバイダーのモード・ファイル・本文の上書きだけを解除します。ZCode の Start Plan は既定でプラグインが 3 ブロックを組み立て、クライアントの system 本文を第 3 ブロックにまとめます。置換ルールは自動作成しません。手動で編集したゲートウェイのプロンプト段や組み立てスイッチのオフ設定はそのまま優先され、受け付けられるかは上流のルール次第です。", "进程 PID": "プロセス PID", "远程根目录": "リモートのルートディレクトリ", "远端同一路径下的旧快照。事件日志、请求明细与调试报文不会上传。": "同じリモートパスにある古いスナップショットを上書きします。イベントログ・リクエスト明細・デバッグ通信記録はアップロードされません。", "远端已有一份快照,将被覆盖": "リモートに既存のスナップショットがあり、上書きされます", "远端快照使用了另一把账号密钥,但没有携带密钥文件,无法在本机解密。请在原来那台机器上重新上传一次。": "リモートのスナップショットは別のアカウントキーを使用していますが、キーファイルが含まれていないため本機では復号できません。元のマシンからもう一度アップロードしてください。", "远端快照使用的账号密钥与本机不同。请输入上传那台机器设置的同步密码,用它解出密钥装到本机后再继续下载。": "リモートのスナップショットは本機と異なるアカウントキーを使用しています。アップロードしたマシンで設定した同期パスワードを入力し、キーを復号して本機に導入してからダウンロードを続けてください。", "远端数据与当前版本不兼容": "リモートのデータは現在のバージョンと互換性がありません", "远端该路径下还没有快照,本次是首次上传。": "そのリモートパスにはまだスナップショットがありません。今回が初回のアップロードです。", "远端路径:{path}": "リモートパス:{path}", "远端还没有可下载的同步数据": "リモートにダウンロード可能な同期データがありません", "连不上这台网关。确认地址与端口正确、网关已启动,且已开启「局域网访问」;用 https 时还要确认证书有效": "このゲートウェイに接続できません。アドレスとポートが正しいこと、ゲートウェイが起動していること、「LAN アクセス」が有効なことを確認してください。https の場合は証明書が有効かも確認してください。", "连不上这台网关。请确认地址、端口与防火墙设置,网关需已启动;桌面端请在「设置 → 网关 → 网络访问」开启「允许其他设备访问网关」。使用 HTTPS 时还需确认证书有效。": "このゲートウェイに接続できません。アドレス、ポート、ファイアウォールの設定とゲートウェイの起動状態を確認してください。デスクトップ版では「設定 → ゲートウェイ → ネットワークアクセス」で「他の端末からゲートウェイへのアクセスを許可」を有効にしてください。HTTPS を使う場合は証明書の有効性も確認してください。", "连接中超时": "接続タイムアウト", "连接失败:{message}": "接続に失敗しました:{message}", "连续失败到阈值后把这个账号整个打开(默认关)。与失败退避的分工:退避管「单次失败先凉一会儿」,惩罚轻、自动恢复;熔断管「这个账号现在整体不对劲,别再一条条地试」,要连续成功若干次才关。打开期间该账号被跳过,除非全场只剩它 —— 那时仍放行试一次。": "連続失敗がしきい値に達したらアカウント全体を切り離します(既定はオフ)。失敗バックオフとの役割分担:バックオフは「1 回の失敗をいったん冷ます」軽い罰で自動復帰、サーキットブレーカーは「このアカウントは全体としておかしい、1 件ずつ試すのはやめよう」で、連続成功が数回続かないと閉じません。開いている間そのアカウントはスキップされますが、他に使えるものがなければ 1 回だけ試します。", "追加": "追加", "追加网关提示词": "ゲートウェイのシステムプロンプトを追加", "退出失败:{message}": "ログアウトに失敗しました:{message}", "退出登录": "ログアウト", "退出这台服务器的登录,不影响其他服务器": "このサーバーのみログアウトします。他への影響はありません", "选好接管回答的视觉模型后这块设置才会生效。": "回答を引き継ぐ視覚モデルを選ぶとこのブロックが有効になります。", "选好视觉模型后这块设置才会生效。": "視覚モデルを選ぶとこのブロックが有効になります。", "选定提供商": "選択したプロバイダー", "选择一个或多个模型": "1 つ以上のモデルを選択", "选择位置并加密备份": "保存先を選択して暗号化バックアップ", "选择备份文件并恢复": "バックアップファイルを選んで復元", "选择提供商(可多选)": "プロバイダーを選択(複数可)", "选路规则": "選択ルール", "选项与默认值由已启用插件提供;你保存的覆盖值不会被插件更新替换。": "有効なプラグインが項目と既定値を提供します。プラグインの更新で保存済みの設定が上書きされることはありません。", "选项与默认值由插件提供,你保存的修改不会被插件更新覆盖。切换提供商不会丢失未保存的修改。": "設定項目と既定値はプラグインが提供します。保存した変更はプラグイン更新で上書きされません。プロバイダーを切り替えても未保存の編集は保持されます。", "透传": "パススルー", "透传客户端 system": "クライアントの system をパススルー", "透传客户端 system(默认)": "クライアントの system をパススルー(デフォルト)", "通常是网络问题,点右侧重试": "多くはネットワークの問題です。右の再試行を押してください", "通用": "一般", "遇到 Bug、报错或异常行为": "Bug、エラー、異常動作が発生した場合", "配置目录下的 agent2api.db(账号、日志、请求记录、调试报文与设置都在里面)。": "設定ディレクトリ配下の agent2api.db(アカウント、ログ、リクエスト記録、デバッグメッセージ、設定がすべて入っています)。", "采用本规则": "このルールを適用", "重启后生效,不影响当前操作": "再起動で反映されます。作業中の内容には影響しません", "重命名": "名前を変更", "重命名只更新分类显示名,不拆分历史用量,也不重新归类历史请求。": "名前の変更は分類の表示名のみを更新します。過去の使用量を分割したり、リクエストを再分類したりしません。", "重命名客户端分类": "クライアント分類の名前を変更", "重复清理": "繰り返し削除", "重复清理直到不再变化(仅正则删除)": "変化がなくなるまで繰り返す(正規表現の削除のみ)", "重新读取会替换当前未保存的草稿。": "再読み込みすると、現在の未保存の下書きが置き換えられます。", "重新读取设置": "設定を再読み込み", "重编码质量": "再エンコード品質", "重置会清空管理员账号与密码,面板将回到「未注册」状态。": "リセットすると管理者アカウントとパスワードが消去され、パネルは「未登録」状態に戻ります。", "重置管理员": "管理者のリセット", "重试设置已刷新": "リトライ設定を更新しました", "重试间隔": "リトライ間隔", "铸造守卫每隔多久看一次库存(毫秒)。只影响发现缺货的反应速度 —— 库存够用时轮询不会铸造任何令牌。默认 2500 毫秒,可填 1000–30000。": "発行ガードが在庫を何ミリ秒ごとに確認するか。品切れの検知速度にだけ影響します —— 在庫が足りているときはポーリングしても何も発行しません。既定 2500 ミリ秒、1000–30000 を指定可。", "长边像素上限": "長辺の上限(ピクセル)", "问题反馈": "問題のフィードバック", "阿里云 OSS": "Alibaba Cloud OSS", "限流中账号": "レート制限中のアカウント", "随包内嵌的快照(发版时的那份)": "アプリ同梱のスナップショット(リリース時のもの)", "隐藏 {name}": "{name} を非表示", "隐藏分组 {name}": "グループ {name} を非表示", "隐藏用户名": "ユーザー名を隠す", "隐藏账号名(显示成星号)": "アカウント名を隠す(アスタリスク表示)", "隐藏这一组": "このグループを非表示", "非流式响应超时": "非ストリーミング応答タイムアウト", "面板登录": "パネルログイン", "面板端口": "パネルポート", "面板管理员账号": "パネル管理者アカウント", "韩语": "韓国語", "项目来源": "プロジェクトの出典", "预览不发送模型请求,也不修改历史记录。": "プレビューはモデルを呼び出さず、過去の記録も変更しません。", "预览中…": "プレビュー中…", "预览匹配": "一致結果をプレビュー", "预设": "プリセット", "首选不可用时再依次尝试备选。": "第一候補が使えないときは、バックアップを順に試します。", "首选不可用时再依次尝试;留空则停止并说明原因。": "第一候補が使えないときに順に試します。空にすると停止して理由を説明します。", "验证方式": "認証方式", "验证码令牌池": "CAPTCHA トークンプール", "验证码令牌池设置已刷新": "CAPTCHA トークンプール設定を再読み込みしました", "验证码库存的参考目标,默认 3 个,可填 1–10。只影响库存状态展示,不会因为低于目标自动生成令牌或弹出验证码。": "在庫表示の目安です。既定は 3、範囲は 1~10 です。表示のみに影響し、目標未満でもトークンを自動生成したり認証画面を開いたりしません。", "高级设置": "詳細設定", "默认 10000 条,按日志级别分配保留容量,超出后清理最旧的记录;同时受保留天数限制。": "既定は 10000 件です。ログレベルごとに容量を配分し、超過分は古い記録から削除します。保存日数の制限も適用されます。", "默认 1000000 条(100 万),超出后清理最旧的请求记录及其原始正文,不影响按天聚合报表;同时受保留天数限制。": "既定は 1000000 件(100 万件)です。超過分は古いリクエスト記録と元の本文から削除し、日次集計レポートには影響しません。保存日数の制限も適用されます。", "默认 5 分钟。间隔内的变化合并为最新快照,到期后上传;手动上传不受限制。失败后会延长等待并自动重试。": "既定は 5 分です。待機中の変更は最新のスナップショットにまとめ、間隔が経過してからアップロードします。手動アップロードは制限されません。失敗時は待機時間を延ばして自動再試行します。", "默认仅本机可访问(127.0.0.1)。开启后监听所有 IPv4 网卡(0.0.0.0),访问范围由网络与防火墙决定,不限于局域网,也不会自动开放到公网。开启前必须注册面板管理员;管理接口需要管理员会话或网关 Key,API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。「同时开放网页管理面板」默认关闭,开启后可从其他设备的浏览器登录管理;关闭它不影响 API 转发和本机桌面管理。修改任一开关都需要重启应用。": "既定では本機のみからアクセスできます(127.0.0.1)。有効にするとすべての IPv4 インターフェース(0.0.0.0)で待ち受け、アクセス範囲はネットワークとファイアウォールで決まります。LAN 限定ではなく、インターネットへの自動公開もしません。事前にパネル管理者の登録が必要です。管理 API には管理者セッションまたはゲートウェイキー、API 呼び出しには有効なゲートウェイキーが必要で、なければデフォルトキーを自動作成します。Web 管理パネルは既定で無効です。有効にすると他の端末のブラウザーからログインして管理できます。無効にしても API 転送と本機での管理には影響しません。どちらのスイッチも変更にはアプリの再起動が必要です。", "默认值通常够用,出问题时才需要调": "既定値でたいてい足ります。問題が出たときだけ調整してください", "默认关闭。开启后下一次 Codex 请求立即生效,不用重启;只对 Codex 来源的 /v1/responses 请求补阶段标记,其它客户端与 /v1/chat/completions 不受影响。": "デフォルトはオフ。有効にすると次回の Codex リクエストから再起動なしで反映されます。フェーズマーカーは Codex 由来の /v1/responses リクエストにのみ補われ、その他のクライアントと /v1/chat/completions は影響を受けません。", "默认关闭。改动立即生效,不用重启;关闭期间的跨源请求会被预检拦下。": "デフォルトはオフ。変更は即時有効で再起動は不要です。オフの間のクロスオリジンリクエストはプリフライトで拒否されます。", "默认关闭窗口不会退出程序,而是把窗口缩到系统托盘,转发继续在后台运行(OpenAI 客户端不受影响);要彻底退出程序,请在托盘图标上右键选「退出」。关掉这个开关后,点关闭按钮即退出程序、转发随之中断。「开机自动启动」开启后,登录系统时会自动启动本程序(通常直接驻留托盘),不需要手动打开。": "デフォルトでは、ウィンドウを閉じてもプログラムは終了せず、ウィンドウがシステムトレイに縮小され、転送はバックグラウンドで継続します(OpenAI クライアントは影響を受けません)。プログラムを完全に終了するには、トレイアイコンを右クリックして「終了」を選んでください。このスイッチをオフにすると、閉じるボタンを押した時点でプログラムが終了し、転送も中断されます。「自動起動」をオンにすると、システムへのログイン時に本プログラムが自動起動します(通常はそのままトレイに常駐します)。手動で開く必要はありません。", "默认应用全部提供商(包含之后新增的插件与自定义提供商)。指定范围后,未选中的提供商不做指纹脱敏;清空选择自动回到全部提供商。": "デフォルトでは今後追加するプラグインとカスタムプロバイダーを含むすべてに適用します。範囲を指定すると未選択のプロバイダーは処理しません。選択を空にするとすべてに戻ります。", "默认开启。只改 role 字段本身,消息内容与顺序都不动;本项只改发给上游的副本,客户端看到的响应内容不变。": "デフォルトは有効。role フィールドだけを書き換え、メッセージの内容と順序はそのまま。送信する副本だけが対象で、クライアントが見る応答は変わりません。", "默认开启。只改发给上游的副本,客户端看到的响应与原图都不变;请求日志里保存的是客户端发来的原图,不是压缩后的版本。只作用在对话链路,生图 / 图片编辑不经过这里。改完对下一个请求立即生效,不用重启。": "既定では有効です。変更されるのは上流へ送るコピーだけで、クライアントが見る応答と原画像は変わりません。リクエストログに保存されるのはクライアントが送った原画像で、圧縮後のものではありません。チャット経路のみに作用し、画像生成と画像編集はここを通りません。変更は次のリクエストから有効で、再起動は不要です。", "默认开启。命中明细会记进请求日志的「敏」标签(悬停可看命中了哪几条规则)。本项只改发给上游的副本,客户端看到的响应内容不变。": "デフォルトはオン。ヒットした明細はリクエストログの「敏」タグに記録されます(ホバーするとどのルールにヒットしたか確認できます)。本項目はアップストリームへ送るコピーのみを変更し、クライアントが見るレスポンス内容は変わりません。", "默认开启并应用全部提供商。编辑词表或应用范围后点击「保存设置」,下一次请求立即生效,不用重启。命中明细仍记进请求日志的「敏」标签。": "デフォルトで有効、すべてのプロバイダーに適用します。ルールや適用範囲を編集して「設定を保存」を押すと再起動なしで次のリクエストから有効です。一致情報は引き続きリクエストログのマスキングタグに記録します。", "默认网关只监听 127.0.0.1,只有本机能访问。开启后网关改听所有网卡,同一局域网内的设备可以把 API 地址指向本机 IP 一起使用。出于安全考虑,开启前必须先注册一个面板管理员:管理接口从此要求管理员会话或网关 Key,模型额度不会对局域网裸奔;一把启用的网关 Key 都没有时,转发接口也会拒绝服务,直到创建第一把。改动需要重启应用生效。「同时开放网页管理面板」把管理界面也出给局域网(其他设备的浏览器打开本机 IP 即可管理),默认关闭 —— 桌面端的面板仍只由本程序自己出。": "デフォルトでは、ゲートウェイは 127.0.0.1 のみで待ち受け、本機からのみアクセスできます。オンにするとゲートウェイはすべてのネットワークアダプターで待ち受けるようになり、同じ LAN 内のデバイスは API アドレスを本機の IP に向けて一緒に利用できます。セキュリティ上の理由から、オンにする前にまずパネル管理者を登録する必要があります:管理インターフェースは管理者セッションまたはゲートウェイキーを要求するようになり、モデルのクォータが LAN に無防備に晒されることはありません。有効なゲートウェイキーが 1 つもない場合、最初の 1 つを作成するまで転送インターフェースもサービスを拒否します。変更の反映にはアプリの再起動が必要です。「Web 管理パネルも同時に公開」は管理画面も LAN に公開します(他のデバイスのブラウザーで本機の IP を開けば管理できます)。デフォルトはオフ —— デスクトップ版のパネルは引き続き本プログラム自身のみが提供します。", "({n} 个整组隐藏)": "({n} グループを非表示)", "({n} 行)": "({n} 行)", "({n} 项被覆盖)": "({n} 項目を上書き)", "(全部为默认值)": "(すべてデフォルト値)", "(官方原文)": "(公式原文)", "(已存一份正文,{n} 行;切成「替换 / 追加」后生效)": "(本文を保存済み、{n} 行。「置換 / 追加」に切り替えると有効になります)", "(已改)": "(変更済み)", "(已注册过会跳过这一步,直接生效)。": "を登録する必要があります(登録済みの場合はこの手順をスキップし、そのまま有効になります)。", "(当前生效的就是这一份,{n} 行)": "(現在有効なのはこの本文、{n} 行)", "(文件:{path})": "(ファイル:{path})", "(未生效)": "(未適用)", ",{items}": "、{items}", ",{time}": "、{time}", ",以及代理池 / 订阅里可能存在的代理凭据。请使用只有你能访问的私有存储;账号密钥由同步密码单独加密,泄露存储本身不等于泄露账号。": "、およびプロキシプール / サブスクリプションに存在しうるプロキシ認証情報が含まれます。自分だけがアクセスできるプライベートなストレージを使用してください。アカウントキーは同期パスワードで別途暗号化されているため、ストレージが漏れてもアカウントが漏れるわけではありません。", ",包括恢复后需要重新登录管理面板。": "まるごと置き換えられます。復元後は管理パネルへの再ログインが必要です。", ",可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "、そのままログインに使用できます。厳重に保管し、第三者に渡したり公共の場所へアップロードしたりしないでください。", ",文件里后续的改动在清空这里之前不再生效": "。ファイル側の以降の変更はここをクリアするまで有効になりません", ",替换前的数据已备份为 {name}": "、置き換え前のデータは {name} としてバックアップ済みです", ",自定义提供商新增 {added} 个、更新 {updated} 个": "、カスタムプロバイダーは新規 {added} 件、更新 {updated} 件", ";开关关闭时词表不执行": ";無効時はルールを実行しません", ";网页管理面板已一并开放(浏览器打开同一地址)": ";Web 管理パネルも併せて公開されています(ブラウザーで同じアドレスを開いてください)", "AI 调整后的 JSON({n} 字符)": "AI が調整した JSON({n} 文字)", "CodeArts 的账号余额还剩多少?": "CodeArts のアカウント残高はあといくら?", "JSON 文件会以文本发送给当前对话模型,其中的凭证也会保存在这条会话里。": "JSON ファイルはテキストとして現在の対話モデルに送信され、含まれる認証情報もこの会話に保存されます。", "[已省略 {n} 字符的 JSON]": "[{n} 文字の JSON を省略]", "attachment 与 content 只能给一个": "attachment と content はどちらか一方だけ指定してください", "section 只能是 models / mappings / both": "section は models / mappings / both のいずれかです", "{n} 个候选,{m} 个跳过": "候補 {n} 件、スキップ {m} 件", "{n} 条映射": "{n} 件のマッピング", "{n} 条请求日志": "リクエストログ {n} 件", "{n} 条运行日志": "実行ログ {n} 件", "{requests} 次请求,{tokens} Token": "リクエスト {requests} 回、{tokens} Token", "「{name}」是空文件。": "「{name}」は空のファイルです。", "「{name}」看起来是二进制文件,助手只接收 JSON 文本。": "「{name}」はバイナリファイルのようです。アシスタントは JSON テキストのみ受け付けます。", "「{name}」超过 {n} MB,请换一个小一点的 JSON 文件。": "「{name}」は {n} MB を超えています。より小さい JSON ファイルを選択してください。", "「{name}」超过 {n} MB,请换一个小一点的 JSON 文件,或去添加账号页导入。": "「{name}」は {n} MB を超えています。より小さい JSON ファイルを選択するか、アカウント追加ページからインポートしてください。", "一次最多 {n} 个文件。": "一度に最大 {n} 個のファイルまでです。", "一次最多 {n} 个文件,多出的没有添加。": "一度に最大 {n} 個のファイルまでです。超過分は追加されませんでした。", "一次最多 {n} 张图片。": "一度に最大 {n} 枚です。", "一次最多 {n} 张图片,多出的没有添加。": "一度に最大 {n} 枚です。超過分は追加されませんでした。", "下载图片": "画像をダウンロード", "今天用了多少 Token?": "今日は何 Token 使いましたか?", "会话响应不完整": "セッションの応答が不完全です", "保存位置": "保存先", "保存图片失败:{message}": "画像の保存に失敗しました:{message}", "保存思考等级失败:{message}": "思考レベルの保存に失敗しました:{message}", "修改上传或已生成的图片,支持多张参考图。": "複数の参照画像を使用して、アップロード済みまたは生成済みの画像を編集します。", "修改文件": "ファイルを変更", "修改模型能力": "モデル能力を変更", "凭证会保存到网关;同一提供商下同一身份的账号会更新原凭证。文件若是整库导出的 accounts 数组,会按文件里的账号批量导入。": "認証情報はゲートウェイに保存されます。同じプロバイダーで同一身分のアカウントは元の認証情報が更新されます。ファイルが accounts 配列を含む完全エクスポートの場合、ファイル内のアカウントを一括インポートします。", "分叉": "分岐", "分叉会话失败:{message}": "会話の分岐に失敗しました:{message}", "分支": "分岐", "删除会话失败:{message}": "セッションの削除に失敗しました:{message}", "删除消息": "メッセージを削除", "删除这条对话": "この会話を削除", "删除这条对话?": "この会話を削除しますか?", "删除这条消息?模型消息关联的工具结果也会一并删除。": "このメッセージを削除しますか?モデルのメッセージに関連するツール結果も削除されます。", "助手设置没读出来,暂时存不了对话模型 —— 看输入框下方的提示。": "アシスタント設定を読み込めなかったため、対話モデルをまだ保存できません。入力欄の下のヒントをご確認ください。", "助手设置没读出来,暂时存不了思考等级 —— 看输入框下方的提示。": "アシスタント設定を読み込めないため、思考レベルを保存できません —— 入力欄の下のヒントを確認してください。", "助手设置没读出来,现在还不能发消息 —— 看输入框下方的提示。": "アシスタント設定を読み込めなかったため、まだメッセージを送信できません。入力欄の下のヒントをご確認ください。", "单张参考图不能超过 10 MiB": "参照画像 1 枚の上限は 10 MiB です", "历史会话": "セッション履歴", "历史对话": "会話履歴", "原始 ID 的默认绑定不能删除,请关闭它的开关": "元の ID の既定バインドは削除できません。スイッチをオフにしてください", "原始报文或对话正文已省略": "元の通信データまたは会話本文は省略されました", "参数 {name} 只能是:{values}": "パラメーター {name} は次のいずれかである必要があります:{values}", "参数 {name} 必须是不小于 {min} 的整数": "パラメーター {name} は {min} 以上の整数である必要があります", "参数 {name} 必须是不超过 {max} 个字符的字符串": "パラメーター {name} は {max} 文字以内の文字列である必要があります", "参数 {name} 必须是布尔值": "パラメーター {name} は真偽値である必要があります", "参数 {name} 必须是有效日期(YYYY-MM-DD)": "パラメーター {name} は有効な日付(YYYY-MM-DD)である必要があります", "参数 {name} 必须是毫秒时间戳": "パラメーター {name} はミリ秒のタイムスタンプである必要があります", "参数不完整(需要 provider / id / alias / action)": "パラメーターが不足しています(provider / id / alias / action が必要です)", "参考图仅支持 PNG、JPEG、WebP": "参照画像は PNG、JPEG、WebP に対応しています", "参考图会交给图片编辑工具,当前对话模型不会读取图片。": "参照画像は画像編集ツールに渡されます。現在の対話モデルは画像を読み取りません。", "参考图片列表不能为空": "参照画像のリストは空にできません", "参考图片编号不存在": "参照画像の番号が存在しません", "参考图片请使用附件编号、已生成图片 ID 或 HTTP(S) 链接": "参照画像には添付番号、生成済み画像 ID、または HTTP(S) リンクを指定してください", "发消息或做任务…(Enter 发送,Shift+Enter 换行,可粘贴图片或 JSON 文件)": "メッセージまたはタスクを入力…(Enter で送信、Shift+Enter で改行、画像や JSON ファイルを貼り付け可能)", "发起模型测试": "モデルテストを実行", "受限": "制限あり", "变更前确认": "変更前に確認", "只支持图片和 JSON 凭证文件(.json / .info)": "画像と JSON 認証ファイル(.json / .info)のみ対応しています", "只支持图片和 JSON 凭证文件(.json / .info);「{name}」已跳过。": "画像と JSON 認証ファイル(.json / .info)のみ対応しています。「{name}」はスキップしました。", "各账号余额还剩多少?": "各アカウントの残高はいくらですか?", "启用 / 禁用模型": "モデルの有効化 / 無効化", "启用 / 禁用账号": "アカウントの有効化 / 無効化", "命令": "コマンド", "哪些模型在多家重复了?": "複数のプロバイダに重複しているモデルは?", "图片 {n}": "画像 {n}", "图片工具包含不支持的参数:{name}": "画像ツールに未対応のパラメーターがあります:{name}", "图片工具没有返回可显示的图片": "画像ツールから表示可能な画像が返されませんでした", "图片工具缺少当前会话": "画像ツールに現在のセッションがありません", "图片工具需要提示词和图片模型": "画像ツールにはプロンプトと画像モデルが必要です", "完全访问": "フルアクセス", "实时余额查询会请求上游,并可能触发已配置的自动禁用规则。": "リアルタイムの残高照会は上流にリクエストを送り、設定済みの自動無効化ルールが適用される場合があります。", "对指定模型发一次真实请求,回报连通性与耗时。": "指定したモデルに実際のリクエストを 1 回送り、到達性と所要時間を報告します。", "对话由网关转发到上游模型,用量计入请求日志": "会話はゲートウェイが上流モデルへ転送します。使用量はリクエストログに記録されます", "导入账号文件": "アカウントファイルをインポート", "将导入一个账号:": "アカウントを 1 件インポートします:", "就绪": "準備完了", "工具「{name}」未获授权,未执行。": "ツール「{name}」は許可されていないため、実行されませんでした。", "工具调用已达本轮上限,已停止继续执行。": "このターンのツール呼び出し上限に達したため、以降の実行を停止しました。", "已从这条消息分叉为新对话": "このメッセージから新しい会話を分岐しました", "已停止": "停止済み", "已停止生成": "生成を停止しました", "已完成 {n} 项改动": "{n} 件の変更が完了しました", "已完成 {n} 项,剩余 {m} 项未执行": "{n} 件が完了し、残り {m} 件は実行されませんでした", "已导入账号「{name}」": "アカウント「{name}」をインポートしました", "已生成 {n} 张图片": "画像を {n} 枚生成しました", "已调用": "呼び出し", "开关模型的对外可用性,不改其它属性。": "モデルの対外的な可用性だけを切り替え、他の属性は変更しません。", "开始日期不能晚于结束日期": "開始日は終了日より後にできません", "开始时间必须早于结束时间": "開始時刻は終了時刻より前である必要があります", "当前安装包未包含原生图片保存能力,请更新应用。": "このアプリにはネイティブ画像保存機能が含まれていません。アプリを更新してください。", "当前客户端缺少读取接口:{name}": "このクライアントには読み取りインターフェースがありません:{name}", "当前对话没有可读取的文本附件:请先把 JSON 文件发给助手": "この会話には読み取れるテキスト添付がありません。先に JSON ファイルをアシスタントに送ってください", "思考过程": "思考過程", "思考:跟随模型": "思考:モデルに従う", "成功率": "成功率", "打开会话失败:{message}": "セッションを開けませんでした:{message}", "执行中": "実行中", "执行结果": "実行結果", "批量导入:新增 {added}、更新 {updated}、失败 {failed}": "一括インポート:追加 {added}、更新 {updated}、失敗 {failed}", "把凭证文件交给对应提供商解析并落库;同身份账号会更新凭证。": "認証ファイルを対応プロバイダーに解析させて保存します。同一身分のアカウントは認証情報が更新されます。", "把重复的模型加上家名前缀区分开": "重複しているモデルにプロバイダー名の接頭辞を付けて区別する", "拒绝": "拒否", "按提供商名称查询模型、能力、来源与映射,支持自定义提供商。": "プロバイダー名でモデル、能力、情報源、マッピングを照会します。カスタムプロバイダーにも対応します。", "按提示词生成图片。": "プロンプトから画像を生成します。", "按提示词编辑参考图片。": "プロンプトに従って参照画像を編集します。", "按文件内容判断": "ファイル内容から判断", "按文本生成图片,结果直接显示在对话中。": "テキストから画像を生成し、会話内に表示します。", "提供商 id「{provider}」格式不正确": "プロバイダー id「{provider}」の形式が正しくありません", "提供商「{name}」匹配到多家,请使用提供商 ID:{list}": "プロバイダー「{name}」に複数の項目が一致します。プロバイダー ID を指定してください:{list}", "改上下文窗口 / 最大输出 Token / 工具调用等能力位。": "コンテキストウィンドウ / 最大出力トークン / ツール呼び出しなどの能力フラグを変更します。", "改某一家的整组顺位(先试哪一家)。": "あるプロバイダーのグループ全体の順位を変更します(どちらを先に試すか)。", "改账号在全局队列里的名次,决定主备与切换顺序。": "グローバルキュー内のアカウント順位を変更し、主系 / 予備と切り替え順を決めます。", "文件内容是空的": "ファイル内容が空です", "文件过大({n} 字符):请先用 read_attachment 分段查看,或改用添加账号页导入": "ファイルが大きすぎます({n} 文字)。先に read_attachment で分割して確認するか、アカウント追加ページからインポートしてください", "新增 / 删除映射名,支持批量加前缀与同名合并到多家。": "マッピング名の追加 / 削除。一括での接頭辞付与や、同名を複数プロバイダーへ統合できます。", "新建会话": "新しいセッション", "无法判断这些凭证属于哪家提供商。请先问用户,或用 provider 指定(常见 id:{list})": "これらの認証情報がどのプロバイダーのものか判断できません。ユーザーに確認するか、provider で指定してください(一般的な id:{list})", "无法读取图片": "画像を読み取れません", "最高": "最大", "有什么可以帮你?可以问配置、查余额、让我改模型设置。": "何をお手伝いしましょうか。設定の質問、残高確認、モデル設定の変更ができます。", "未命名对话": "無題の会話", "未知的工具:{name}": "不明なツール: {name}", "权限模式": "権限モード", "极低": "最小", "查看 API Key 详情必须指定 API Key 身份": "API Key の詳細を表示するには Key の識別情報を指定してください", "查看图片": "画像を表示", "查看模型候选账号、跳过原因和当前路由策略。": "モデルの候補アカウント、スキップ理由、現在のルーティング方式を確認します。", "查询凭证、插件和定时任务等运行事件的脱敏摘要。": "認証情報、プラグイン、定期タスクなどの実行イベントを、機密情報を除いた要約で確認します。", "查询生产请求的 Token 用量、成功率、排行和趋势。": "本番リクエストの Token 使用量、成功率、ランキング、推移を読み取ります。", "查询用量报表": "使用量レポートを取得", "查询请求日志": "リクエストログを取得", "查询请求状态、耗时、账号、错误与重试,不读取对话正文。": "会話本文を読まずに、リクエストの状態、所要時間、アカウント、エラー、再試行を確認します。", "查询账号余额": "アカウント残高を照会", "查询路由队列": "ルーティングキューを確認", "查询运行日志": "実行ログを取得", "标题总结失败:{message}": "タイトル生成に失敗しました:{message}", "标题总结提示词": "タイトル生成プロンプト", "标题总结模型": "タイトル生成モデル", "标题总结设置已保存": "タイトル生成設定を保存しました", "模型「{model}」当前不在可用列表中,请重新选择;也可到「模型管理」或「插件」页检查是否已启用。": "モデル「{model}」は現在の利用可能リストにありません。選び直してください。「モデル管理」または「プラグイン」ページで有効になっているかもご確認ください。", "模型名称": "モデル名", "模型响应未完整结束,请重试;未执行其中的工具调用。": "モデルの応答が最後まで完了しませんでした。再試行してください。応答内のツール呼び出しは実行されていません。", "模型对话": "モデルチャット", "模型没有返回内容": "モデルから内容が返されませんでした", "正在思考…": "考え中…", "正在执行": "作業中", "正在生成,点右侧按钮可停止": "生成中 — 右のボタンで停止できます", "正在读取可用模型…": "利用可能なモデルを読み込み中…", "正在读取图片…": "画像を読み込み中…", "没有可用的模型": "利用可能なモデルがありません", "没有已启用的模型,请先在「模型管理」里启用": "有効なモデルがありません。先に「モデル管理」で有効にしてください", "没有找到提供商「{name}」,请先不填 provider 查询,或用 keyword 搜索": "プロバイダー「{name}」が見つかりません。まず provider を指定せずに照会するか、keyword で検索してください", "没有找到附件「{ref}」:编号从 1 开始,也可以用文件名": "添付「{ref}」が見つかりません。番号は 1 から始まります。ファイル名でも指定できます", "没有提供要修改的项目": "変更する項目が指定されていません", "测一下当前最快的模型通不通": "現在いちばん速いモデルが通るか試す", "浏览": "参照", "消息操作": "メッセージ操作", "深度推理": "深い推論", "添加图片": "画像を追加", "添加图片或 JSON 文件(也可粘贴或拖入)": "画像または JSON ファイルを追加(貼り付け・ドロップも可)", "添加图片或文件": "画像またはファイルを追加", "清空全部": "すべて消去", "清空历史失败:{message}": "履歴の消去に失敗しました:{message}", "现在有哪些账号被限流?": "現在レート制限中のアカウントは?", "生成图片": "画像を生成", "生成的图片": "生成した画像", "用户目录": "ホームフォルダー", "看看哪些模型在多家重复了": "複数のプロバイダーで重複しているモデルを見る", "禁用会把账号移出转发队列,线路可能因此断供。": "無効化するとアカウントは転送キューから外れ、その経路が供給停止になる可能性があります。", "移除图片 {n}": "画像 {n} を削除", "移除文件「{name}」": "ファイル「{name}」を削除", "终端": "ターミナル", "编辑图片": "画像を編集", "编辑消息": "メッセージを編集", "聊天附件 {ref}": "チャット添付 {ref}", "自定义提供商模块未就绪(请刷新界面后重试)": "カスタムプロバイダーモジュールが準備できていません(画面を再読み込みしてから再試行してください)", "获取模型列表": "モデル一覧を取得", "获取账号列表": "アカウント一覧を取得", "获取账号详情": "アカウント詳細を取得", "计划": "計画", "设置模型映射 ID": "モデルマッピング ID を設定", "请先上传参考图片,或先生成一张图片": "先に参照画像をアップロードするか、画像を生成してください", "请提供 attachment 或 content": "attachment または content を指定してください", "读取 {name}": "{name} を読み取る", "读取 {name}({from}-{to} 字符)": "{name} を読み取る({from}-{to} 文字)", "读取凭证状态、限流、并发、代理和限制器的本地快照。": "認証情報、レート制限、接続数、プロキシ、制限ルールのローカル状態を読み取ります。", "读取历史会话失败:{message}": "会話履歴の読み込みに失敗しました:{message}", "读取响应不完整:{name}": "応答が不完全です:{name}", "读取图片失败": "画像の読み込みに失敗しました", "读取图片失败:{message}": "画像の読み込みに失敗しました:{message}", "读取文件失败:{message}": "ファイルの読み取りに失敗しました:{message}", "读取模型清单失败": "モデル一覧の取得に失敗しました", "读取聊天里上传的 JSON / .info 文件,支持分页。": "チャットにアップロードされた JSON / .info ファイルをページ単位で読み取ります。", "读取账号、启用状态、优先级与隐藏原因,支持筛选和分页。": "アカウント、有効状態、優先順位、非表示の理由を読み取ります。絞り込みとページ分割に対応します。", "读取附件": "添付を読み取る", "读各提供商的模型清单、映射名与启用状态。": "各プロバイダーのモデル一覧・マッピング名・有効状態を読み取ります。", "读各账号的额度 / 剩余用量。": "各アカウントの枠 / 残量を読み取ります。", "调整提供商顺位": "プロバイダーの順位を調整", "调整账号优先级": "アカウントの優先度を調整", "账号「{name}」匹配到多条记录,请使用账号 ID:{ids}": "アカウント「{name}」に複数の記録が一致します。アカウント ID を指定してください:{ids}", "账号额度": "アカウントの使用枠", "跟随对话模型": "対話モデルに従う", "跟随模型(不指定)": "モデルに従う(指定なし)", "跟随网关设置": "ゲートウェイ設定に従う", "返回": "戻る", "还没有历史对话": "会話履歴はまだありません", "还没有配置默认模型": "既定モデルが未設定です", "这一版网关还没有 AI 助手接口(HTTP 404),请升级网关后重试。": "このバージョンのゲートウェイには AI アシスタント API がありません(HTTP 404)。ゲートウェイを更新して再試行してください。", "这一版网关还没有 AI 助手接口(HTTP 404):后端还是旧的,重新编译 / 重启客户端后再试。{message}": "このバージョンのゲートウェイには AI アシスタント API がまだありません(HTTP 404):バックエンドが古いため、再ビルド / クライアント再起動後にお試しください。{message}", "这一轮来回已达 {n} 次上限,我先停下等你指示(可以换个说法,或拆成几步让我做)。": "このターンは往復 {n} 回の上限に達したため、指示を待って停止しました(言い換えるか、いくつかの手順に分けてください)。", "这条会话没能存进历史:{message}": "この会話を履歴に保存できませんでした:{message}", "这次工具调用没有保存完成结果,历史回放不会重新执行。": "このツール呼び出しの完了結果は保存されていません。履歴の表示時に再実行することはありません。", "这里只改本次会话用的模型,不会改网关里保存的默认值。": "ここでの変更はこの会話にのみ適用され、ゲートウェイに保存された既定値は変わりません。", "连接网关失败({base}):{message}": "ゲートウェイへの接続に失敗({base}):{message}", "选择 API Key": "API Key を選択", "选择 API Key…": "API Key を選択…", "选择对话模型": "会話モデルを選択", "配置响应不完整": "設定レスポンスが不完全です", "问点什么…": "何か聞いてください…", "项目": "プロジェクト", "额度窗口": "使用枠の期間", "首轮回答完成后自动总结;这会调用所选模型并消耗额度。": "最初の回答が完了するとタイトルを生成します。選択したモデルを呼び出し、クォータを消費します。", " · 检查于 {time}": " · {time} に確認", " 已发布(当前 {current}),更新日志如下:": " が公開されました(現在 {current})。更新履歴は以下のとおりです:", "Agent2API 一直在更新,是因为有人在背后持续投入。如果它帮到了你,欢迎请作者喝杯咖啡。": "Agent2API が更新され続けるのは、誰かが陰で時間を注ぎ続けているからです。お役に立ったなら、作者にコーヒーを一杯おごってあげてください。", "GitHub Token 未填写": "GitHub トークン未入力", "GitHub 令牌": "GitHub トークン", "GitHub 加速前缀": "GitHub 高速化プレフィックス", "GitHub 接口限流中,请在 {seconds} 秒后重试": "GitHub API のレート制限に達しています。{seconds} 秒後に再試行してください。", "GitHub 接口限流中,请在「插件设置」的「GitHub 令牌」中填写凭证,以提高请求限额。": "GitHub API のレート制限に達しています。リクエスト上限を引き上げるには、「プラグイン設定」の「GitHub トークン」に認証情報を入力してください。", "GitHub 接口限流中,请在「更新设置」的「GitHub 令牌」中填写凭证,以提高请求限额。": "GitHub API のレート制限に達しています。リクエスト上限を引き上げるには、「更新設定」の「GitHub トークン」に認証情報を入力してください。", "GitHub 接口限流中,请稍后重试": "GitHub API のレート制限に達しています。しばらくしてから再試行してください。", "GitHub 源「{source}」限流,{seconds} 秒后可重试(上游未提供恢复时间)": "GitHub ソース「{source}」がレート制限中です。{seconds} 秒後に再試行できます(解除時刻の通知なし)。", "GitHub 源「{source}」限流,请在 {seconds} 秒后重试": "GitHub ソース「{source}」がレート制限中です。{seconds} 秒後に再試行してください。", "GitHub 访问方式": "GitHub アクセス方式", "GitHub 访问设置已保存": "GitHub アクセス設定を保存しました", "QQ 群": "QQ グループ", "QQ 群 / Telegram 都在这里": "QQ グループ・Telegram はこちら", "QQ 群 {n}": "QQ グループ {n}", "Telegram 群": "Telegram グループ", "Windows 服务一键更新会核验官方更新包,再由独立升级进程停止服务、备份替换并重新启动。账号与配置保留,确认新版运行后页面自动刷新。": "Windows サービス更新は公式パッケージを検証し、独立した更新プロセスがサービスの停止、バックアップ、置換、再起動を行います。アカウントと設定は保持され、新版の動作確認後にページを再読み込みします。", "Windows 服务升级权限或目录保护不符合要求。请以管理员身份重跑新版 install-service.ps1;自定义服务账号或外部托管环境请按原方式升级。": "Windows サービスの権限またはディレクトリ保護が更新要件を満たしていません。管理者として新版の install-service.ps1 を再実行してください。カスタムサービスアカウントや外部管理環境では従来の手順で更新してください。", "Windows 服务部署需要手动升级。请解压新版服务端包,以管理员身份运行 install-service.ps1;账号与配置会保留。": "Windows サービスは手動更新が必要です。新版サーバーパッケージを展開し、管理者として install-service.ps1 を実行してください。アカウントと設定は保持されます。", "beta 版可能不稳定。两项同时开启时,按版本号选择最高版本,不会降级;安装到正式版或 beta 版后仍保留关注选择。": "beta 版は不安定な場合があります。両方を有効にすると、バージョン番号が最も高いものを選び、ダウングレードはしません。正式版または beta 版をインストールしても、選択したチャンネルは維持されます。", "systemd 一键更新由受限升级程序完成:下载、核验官方校验值、备份替换、重启并确认版本。网关保持普通账号运行,账号与配置不变。": "systemd 更新は権限を制限したプログラムがダウンロード、公式チェックサム検証、バックアップ、置換、再起動とバージョン確認を行います。ゲートウェイは一般ユーザーのままで、アカウントと設定は保持されます。", "{message};其他线路可重新检查": "{message} 他の経路は再確認できます。", "{ms} 毫秒": "{ms} ミリ秒", "{seconds} 秒后可重试": "{seconds} 秒後に再試行可能", "{version} 已就位,服务正在重启,页面会在恢复后自动刷新…({seconds}s)": "{version} を適用しました。サービスを再起動しています。復旧後にページは自動で再読み込みされます…({seconds} 秒)", "{version}(预发布)": "{version}(プレリリース)", "✅ GitHub 令牌已保存(加密存储,界面不再显示)": "✅ GitHub トークンを保存しました(暗号化して保存され、画面には表示されません)", "✅ 已加入 beta 版,之后的检查会包含 beta 版": "✅ ベータ版に参加しました。以降の更新確認にはベータ版が含まれます", "✅ 已清除界面保存的 GitHub 令牌(环境变量若配置过则继续生效)": "✅ 画面に保存された GitHub トークンを削除しました(環境変数を設定済みの場合は引き続き有効です)", "✅ 已退出 beta 版,之后的检查只看正式版": "✅ ベータ版から退出しました。以降の更新確認は正式版のみを対象にします", "✅ 数据升级完成({n} 项)": "✅ データアップグレードが完了しました({n} 件)", "✅ 更新出网已切换为 {label}": "✅ 更新の送信経路を {label} に切り替えました", "✅ 更新出网已切换为直连": "✅ 更新の送信経路を直接接続に切り替えました", "✅ 自动检查更新已保存": "✅ 更新の自動確認を保存しました", "一键更新": "ワンクリック更新", "一键更新入口不可用,请刷新页面后重试。": "ワンクリック更新が利用できません。ページを再読み込みして再試行してください。", "一键更新服务端?": "サーバーを更新しますか?", "一键更新组件不可用或权限配置不正确。请使用新版安装包执行 sudo bash install.sh --upgrade 修复。": "更新コンポーネントが利用できないか権限が不正です。新版パッケージで sudo bash install.sh --upgrade を実行して修復してください。", "上次 GitHub 限流的等待时间已结束,可重新检查": "前回の GitHub レート制限の待機時間が終了しました。再確認できます。", "上次结果:{state}": "前回の結果:{state}", "上游未提供恢复时间,按 GitHub 建议短暂等待": "解除時刻の通知がないため、GitHub の推奨に従い短時間待機", "下载中": "ダウンロード中", "下载失败": "ダウンロード失敗", "下载失败:{error}": "ダウンロードに失敗しました:{error}", "下载已取消,可重新点击「下载并安装」。": "ダウンロードをキャンセルしました。「ダウンロードしてインストール」を再度クリックできます。", "下载已取消,可重新点击「下载并更新」。": "ダウンロードをキャンセルしました。「ダウンロードして更新」を再度クリックできます。", "下载并安装": "ダウンロードしてインストール", "下载并更新": "ダウンロードして更新", "下载服务端包": "サーバーパッケージを取得", "不支持此类请求": "このリクエストは非対応", "与 gh-proxy.com 属于同一服务的备用线路。": "gh-proxy.com と同じサービスの予備経路です。", "与网关的软件更新和插件共用设置;APK 下载由手机联网,GitHub 令牌不会发送给加速站。": "ゲートウェイの更新とプラグインで設定を共有します。APK はスマートフォンがダウンロードし、GitHub トークンを高速化サイトには送りません。", "与软件更新共用出网代理和 GitHub 凭证,修改任意一处都会同步生效。": "ソフトウェア更新と外向きプロキシおよび GitHub 認証情報を共有します。どちらで変更しても両方に反映されます。", "个人开发并开源维护,免费使用,也不会收集你的账号数据。如果它帮到了你,欢迎到项目仓库点个 Star 支持一下。": "が個人で開発し、オープンソースとして保守しています。無料で使えて、あなたのアカウントデータを収集することもありません。役に立ったなら、プロジェクトリポジトリで Star を付けて応援していただけると嬉しいです。", "仅 beta 版": "beta 版のみ", "仅官方源": "公式ソースのみ", "仅插件索引和文件下载,不支持版本查询": "プラグイン索引とファイル取得のみ。バージョン照会は非対応", "仅正式版": "正式版のみ", "仓库暂无发布版本。{at}": "リポジトリにはまだリリース版がありません。{at}", "代理列表读取失败": "プロキシ一覧の読み込みに失敗しました", "令牌已生效,但写入磁盘失败(重启后会丢失)": "トークンは有効になりましたが、ディスクへの書き込みに失敗しました(再起動すると失われます)", "以上状态来自网关;APK 下载会由手机按本机网络重新选择通道。": "上記はゲートウェイ側の状態です。APK はスマートフォンのネットワークで経路を選び直します。", "优先使用加速源,访问失败后回退官方源;不会绕过 GitHub 限流冷却。": "高速化ソースを優先し、失敗時は公式ソースに戻ります。GitHub のレート制限の待機時間は守られます。", "优先加速源": "優先する高速化ソース", "优先访问官方源,连接失败后尝试加速源;短期记住成功的源,定期恢复官方优先。": "公式ソースを優先し、接続に失敗すると高速化ソースを試します。成功したソースを短時間記憶し、定期的に公式優先に戻します。", "允许本机自动检查": "この端末での自動確認を許可", "先使用指定加速源,失败后尝试其他已启用的加速源,最后回退官方源。": "指定ソースを最初に試し、失敗したら有効な他の高速化ソース、最後に公式ソースを使用します。", "关于作者": "作者について", "关注 beta 版更新": "beta 版の更新を受け取る", "关注正式版更新": "正式版の更新を受け取る", "出网线路与 GitHub 令牌设置": "送信経路と GitHub トークンの設定", "出网线路已切换,但写入磁盘失败(重启后会恢复原线路)": "送信経路を切り替えましたが、ディスクへの書き込みに失敗しました(再起動すると元の経路に戻ります)", "分别探测版本查询、插件索引和文件下载,选择最快返回有效内容的源;成功线路短期复用,失败自动切换。": "バージョン照会、プラグイン索引、ダウンロードを個別に確認します。最初に有効な内容を返したソースを短時間再利用し、失敗時は切り替えます。", "分钟({min} ~ {max})": "分({min} ~ {max})", "到 GitHub 发布页下载": "GitHub のリリースページからダウンロード", "到点自动向 GitHub 查询新版本,查到就走「检测到更新」弹窗;关闭后「检查更新」按钮仍可手动触发": "時間になると自動で GitHub に新バージョンを問い合わせ、見つかると「更新を検出」ダイアログを表示します。閉じた後も「更新を確認」ボタンから手動で実行できます", "加入 beta 版": "ベータ版に参加", "加入交流群": "コミュニティに参加", "加速源优先": "高速化ソース優先", "单独设置": "個別に設定", "即将满员": "まもなく満員", "即将满员,请优先加3群、4群": "まもなく満員 — グループ 3 または 4 への参加をおすすめします", "去更新": "更新へ移動", "发布页上没有 {wanted} 这个文件": "リリースページに {wanted} というファイルがありません", "发布页上没有对应本机架构的服务端更新包": "リリースページに本機のアーキテクチャ向けのサーバー更新パッケージがありません", "发布页上的文件被更新源的访问方式过滤掉了,请检查「更新设置」里的 GitHub 访问方式": "リリースページのファイルが更新元のアクセス方式で除外されました。「更新設定」の GitHub アクセス方式を確認してください。", "发现新版本 {latest}(当前 {current})。{at}": "新バージョン {latest} が見つかりました(現在 {current})。{at}", "发现新版本 {latest}(当前 {current})。{reason}{at}": "新バージョン {latest} があります(現在 {current})。{reason}{at}", "发现新版本 {latest}(当前 {current}),但该版本没有提供容器内更新包({reason});请在宿主机执行 docker compose pull && docker compose up -d 升级。{at}": "新しいバージョン {latest} があります(現在 {current})が、このバージョンにはコンテナ内更新パッケージがありません({reason})。ホスト側で docker compose pull && docker compose up -d を実行して更新してください。{at}", "发现新版本 {latest}(当前 {current}),但这一版没有提供本机安装包({reason});可到 GitHub 发布页手动下载。{at}": "新しいバージョン {latest} があります(現在 {current})が、このバージョンには本機用のインストーラーがありません({reason})。GitHub のリリースページから手動でダウンロードできます。{at}", "取消下载": "ダウンロードをキャンセル", "取消失败:{error}": "キャンセルに失敗しました:{error}", "只访问 GitHub 官方源,仍使用所选出网代理。": "選択した外向きプロキシを使用し、GitHub の公式ソースのみにアクセスします。", "可安装": "インストール可能", "启动失败": "起動失敗", "启动安装程序失败:{error}": "インストーラーの起動に失敗しました:{error}", "启用加速源 {source}": "高速化ソース {source} を有効化", "在 GitHub 查看完整说明": "GitHub で完全な説明を見る", "在 QQ 里搜索群号即可加入。": "QQ でグループ番号を検索すると参加できます。", "在宿主机执行 docker compose pull && docker compose up -d 即可升级。": "ホスト側で docker compose pull && docker compose up -d を実行すると更新できます。", "在浏览器中打开": "ブラウザで開く", "在浏览器中打开 GitHub 发布页": "GitHub のリリースページをブラウザで開く", "在浏览器中打开项目仓库,点 Star 支持作者": "ブラウザでプロジェクトリポジトリを開き、Star で作者を応援", "在默认浏览器中打开 GitHub 的令牌创建页(备注已预设,无需勾选任何权限,直接点 Generate token)": "既定のブラウザで GitHub のトークン作成ページを開きます(メモは入力済み。権限のチェックは不要で、そのまま Generate token をクリック)", "填写后检查限额 60 → 5000 次/小时(创建令牌无需勾选任何权限)": "入力すると確認の上限が 60 → 5000 回/時間に上がります(トークンの作成に権限のチェックは不要)", "填写支持 Raw、Release 和 GitHub API 的 HTTPS 加速站前缀,留空恢复默认。": "Raw、Release、GitHub API に対応する HTTPS 高速化サイトのプレフィックスを入力してください。空欄で既定値に戻ります。", "复制群号 {group}": "グループ番号 {group} をコピー", "安装中": "インストール中", "安装包": "インストーラー", "安装包已下载完成,正在启动安装程序(需要管理员权限,会弹出 UAC 确认框)…": "インストーラーのダウンロードが完了しました。インストーラーを起動しています(管理者権限が必要で、UAC の確認ダイアログが表示されます)…", "安装包已下载完成,正在启动新的 AppImage…": "インストーラーのダウンロードが完了しました。新しい AppImage を起動しています…", "安装包已下载完成,正在打开系统安装器…": "インストーラーのダウンロードが完了しました。システムのインストーラーを開いています…", "安装包已下载完成,正在挂载磁盘映像…": "インストーラーのダウンロードが完了しました。ディスクイメージをマウントしています…", "安装包已就绪:{name}。点击「安装并重启」后会启动新的 AppImage;把它移动到你的应用目录并替换旧文件即完成升级(本程序会先退出以释放文件占用)。": "インストーラーの準備ができました: {name}。「インストールして再起動」で新しい AppImage が起動します。アプリ用フォルダーに移動して旧ファイルと置き換えれば更新完了です(本アプリはファイルを解放するため先に終了します)。", "安装包已就绪:{name}。点击「安装并重启」后需要管理员权限,会弹出 UAC 确认框。": "インストーラーの準備ができました:{name}。「インストールして再起動」をクリックすると管理者権限が必要で、UAC の確認ダイアログが表示されます。", "安装包已就绪:{name}。点击「打开安装包」后会交给系统安装器,按提示输入密码即可完成安装(本程序无需退出)。": "インストーラーの準備ができました: {name}。「インストーラーを開く」でシステムのインストーラーに渡されます。案内に従ってパスワードを入力してください(本アプリの終了は不要です)。", "安装包已就绪:{name}。点击「打开安装包」后会挂载磁盘映像,把应用拖进「应用程序」即可完成安装。": "インストーラーの準備ができました:{name}。「インストーラーを開く」をクリックするとディスクイメージがマウントされ、アプリを「アプリケーション」にドラッグすればインストールが完了します。", "安装包已挂载,请在弹出的窗口里把应用拖进「应用程序」完成安装。安装完成后重新打开本程序即可。": "インストーラーをマウントしました。表示されたウィンドウでアプリを「アプリケーション」にドラッグし、インストールを完了してください。インストール後は本アプリを開き直せば完了です。", "安装失败": "インストール失敗", "安装失败:{error}": "インストールに失敗しました:{error}", "安装并重启": "インストールして再起動", "安装程序已启动,本程序将退出以便完成覆盖安装。安装程序需要管理员权限,会弹出 UAC 确认框,请选择「是」。": "インストーラーを起動しました。上書きインストールを完了するため、本アプリは終了します。インストーラーには管理者権限が必要で、UAC の確認ダイアログが表示されるので「はい」を選択してください。", "官方源": "公式ソース", "容器内更新:更新包从 GitHub 发布页下载,校验 sha256 后由面板替换容器内的程序与界面文件,再重启服务(容器由 restart 策略拉起,页面会自动刷新)。更新的是容器里的文件,compose 里的镜像标签不变 —— 之后执行 docker compose pull && up -d 会使用镜像里的版本。检查更新与下载的出网线路、GitHub 令牌都在「更新设置」里。": "コンテナ内更新:更新パッケージは GitHub のリリースページからダウンロードし、sha256 を検証したうえでパネルがコンテナ内のプログラムと UI ファイルを置き換え、その後サービスを再起動します(コンテナは restart ポリシーで起動され、ページは自動で再読み込みされます)。更新されるのはコンテナ内のファイルで、compose のイメージタグは変わりません —— 後で docker compose pull && up -d を実行するとイメージ内のバージョンを使用します。更新の確認とダウンロードの送信経路、GitHub トークンは「更新設定」にあります。", "将更新至 {version}。下载和校验完成后会短暂停止服务、替换程序并自动重启;账号与配置会保留。确认后无需再次点击安装。": "{version} に更新します。ダウンロードと検証後、サービスを短時間停止してファイルを置き換え、自動で再起動します。アカウントと設定は保持されます。追加のインストール操作は不要です。", "已加密存储在本地,不显示具体值;粘贴新令牌可覆盖": "ローカルに暗号化して保存され、値は表示されません。新しいトークンを貼り付けると上書きできます", "已取消": "キャンセル済み", "已填写": "入力済み", "已填写(粘贴新令牌可覆盖)": "入力済み(新しいトークンを貼り付けると上書き)", "已打开系统安装器,请在它弹出的窗口里完成安装。安装完成后重新打开本程序即可。": "システムのインストーラーを開きました。表示されたウィンドウでインストールを完了し、その後このアプリを開き直してください。", "已是最新": "最新です", "已更新至 {version},服务已恢复。": "{version} に更新され、サービスが復旧しました。", "已替换为 {version},正在重启服务…": "{version} に置き換えました。サービスを再起動しています…", "已配置 GITHUB_TOKEN 环境变量,界面保存的令牌优先于它": "GITHUB_TOKEN 環境変数が設定されています。画面で保存したトークンが優先されます", "开启后只更新到 beta 版(预发布),取版本最高的一个;beta 版可能不稳定。开启期间不会因为正式版发布而自动切回正式版 —— 想切回请关闭本开关。关闭后只更新到正式版,且不会降级到版本号更低的版本。": "オンにすると beta 版(プレリリース)のみを対象に、最も高いバージョンへ更新します。beta 版は不安定な可能性があります。オンにしている間は、正式版がリリースされても自動で正式版に戻ることはありません —— 戻すにはこのスイッチをオフにしてください。オフにすると正式版のみを対象に更新し、より低いバージョンへダウングレードされることはありません。", "开始更新": "更新を開始", "当前 Windows 服务尚未接入一键更新。请解压新版服务端包,以管理员身份运行一次 install-service.ps1,原有账号、目录、端口和配置会保留。": "この Windows サービスにはワンクリック更新がまだ設定されていません。新版サーバーパッケージを展開し、管理者として install-service.ps1 を一度実行してください。既存のアカウント、ディレクトリ、ポート、設定は保持されます。", "当前下载通道:{source}": "ダウンロード元:{source}", "当前为直接运行的服务端,请停止程序后替换服务端包,再重新启动。": "サーバーはサービス管理なしで動作しています。停止してサーバーファイルを置き換え、再起動してください。", "当前关注:{channels}": "現在の対象:{channels}", "当前安装尚未接入一键更新。请下载新版服务端包,执行一次 sudo bash install.sh --upgrade;之后即可在面板更新。": "ワンクリック更新はまだ導入されていません。新版サーバーパッケージを取得し、一度 sudo bash install.sh --upgrade を実行してください。その後はパネルから更新できます。", "当前已是最新版本({current})。{at}": "現在のバージョンが最新です({current})。{at}", "当前版本": "現在のバージョン", "当前系统或架构暂不支持面板自动安装,请查看发布页。": "このシステムまたはアーキテクチャでは自動インストールに対応していません。リリースページを確認してください。", "当前线路不可用:{error};请重新选择代理或切回直连": "現在の経路は使用できません:{error}。プロキシを選び直すか、直接接続に戻してください", "当前网关仍使用旧版单源设置,升级网关后可管理多个加速源。": "このゲートウェイは旧版の単一ソース設定です。更新後に複数の高速化ソースを管理できます。", "当前需要手动升级": "手動更新が必要です", "当前:自动检查关闭": "現在:自動確認は無効", "当前:自动检查开启,每 {n} 分钟": "現在:自動確認は有効、{n} 分ごと", "待重启": "再起動待ち", "待重新检查": "再確認が必要", "微信赞赏": "WeChat", "微信赞赏码": "WeChat の寄付コード", "打开 GitHub 令牌页面": "GitHub トークンページを開く", "打开安装包": "インストーラーを開く", "打开链接失败:{error}": "リンクを開けませんでした:{error}", "指定代理": "指定プロキシ", "指定加速源优先": "指定した高速化ソースを優先", "按上游返回时间": "接続先が通知した解除時刻を使用", "插件索引": "プラグイン索引", "插件默认跟随这里的更新通道、自动检查和间隔;可在插件设置中单独设置。": "プラグインは既定で、この更新チャンネル・自動確認・間隔に従います。プラグイン設定で個別に設定できます。", "支付宝": "Alipay", "支付宝收款码": "Alipay の支払い用 QR コード", "支持作者": "作者を応援", "支持版本查询": "バージョン照会に対応", "收藏项目": "Star を付ける", "数据升级失败:{error}(旧数据仍在原处,下次启动会自动重试)": "データアップグレードに失敗しました:{error}(旧データはそのまま残っています。次回起動時に自動で再試行します)", "数据升级未全部完成(已导入 {n} 项,仍有数据待导入,下次启动会自动重试)": "データアップグレードが完了しませんでした({n} 件をインポート済み。未インポートのデータが残っており、次回起動時に自動で再試行します)", "数据升级:没有需要导入的旧数据": "データアップグレード:インポートが必要な旧データはありません", "文件下载": "ファイル取得", "新版本 ": "新バージョン ", "无法开始更新:{error}": "更新を開始できません:{error}", "无法比较": "比較できません", "无法解密": "復号できません", "无法读取更新信息": "更新情報を読み取れません", "显示的是当前网络下的响应耗时,不代表长期稳定性或完整下载速度。未探测的源会在实际更新时检查。": "表示時間は現在のネットワークでの応答時間であり、長期的な安定性や全体のダウンロード速度ではありません。未確認のソースは更新時に確認します。", "暂未确认服务恢复,请检查服务器状态后刷新页面;不会自动重复安装。": "サービスの復旧を確認できません。サーバーの状態を確認してページを再読み込みしてください。自動で再インストールはしません。", "更新任务已结束,但当前运行版本与目标不一致,请检查服务日志。": "更新は終了しましたが、実行中のバージョンが対象と一致しません。サービスログを確認してください。", "更新出网代理": "更新の送信プロキシ", "更新包从 GitHub Release 获取。自动模式按实际请求选择可用通道,失败后换源;镜像安装包必须匹配官方校验值,取不到时仅使用原始源。加速源、代理和令牌在「更新设置」中配置,指定代理失效不会静默直连。": "更新は GitHub Release から取得します。自動モードは実際の応答で経路を選び、失敗時に切り替えます。ミラーのインストーラーは公式チェックサムとの一致が必須で、取得できない場合は元のソースのみを使用します。高速化ソース、プロキシ、トークンは「更新設定」で設定します。指定プロキシの障害時に直接接続へ黙って切り替えることはありません。", "更新包从 GitHub Release 获取,下载后交给本平台安装器。GitHub 访问方式、加速前缀、出网代理和令牌在「更新设置」中配置。默认官方优先,连接失败后尝试加速源;镜像安装包必须匹配官方校验值,取不到时仅使用原始源。指定代理失效会明确报错,不会静默改走直连。": "更新パッケージは GitHub Release から取得し、ダウンロード後は各プラットフォームのインストーラーで開きます。GitHub アクセス方式、高速化プレフィックス、外向きプロキシ、トークンは「更新設定」で設定できます。既定では公式を優先し、接続失敗時に高速化ソースを試します。ミラーのインストーラーは公式のチェックサムと一致する必要があり、取得できない場合は元のソースのみを使います。指定プロキシが無効な場合はエラーを表示し、直接接続に黙って切り替えません。", "更新包从 GitHub 发布页下载,下载完成后可直接启动安装程序并自动重启本程序。安装包会先校验来源域名与文件完整性。检查更新与下载安装包的出网线路、GitHub 令牌都在「更新设置」里:线路默认直连(直连失败时自动借 Clash Verge 的混合端口重试一次),选定指定出口后只走该出口;填写 GitHub 令牌可把检查限额从 60 次/小时提高到 5000 次/小时。": "更新パッケージは GitHub のリリースページからダウンロードし、完了後はそのままインストーラーを起動して本アプリを自動的に再起動できます。インストーラーはダウンロード元のドメインとファイルの完全性を先に検証します。更新の確認とインストーラーのダウンロードの送信経路、GitHub トークンは、いずれも「更新設定」にあります。経路は既定で直接接続(直接接続に失敗すると Clash Verge の混合ポートを借りて一度だけ再試行)で、指定の出口を選ぶとその出口だけを使用します。GitHub トークンを入力すると、確認の上限を 60 回/時間から 5000 回/時間に引き上げられます。", "更新包已就绪:{name}。点「安装并重启」后,面板会校验并替换容器内的程序与界面文件,然后重启服务(页面会自动刷新)。": "更新パッケージの準備ができました:{name}。「インストールして再起動」をクリックすると、パネルがコンテナ内のプログラムと UI ファイルを検証して置き換え、その後サービスを再起動します(ページは自動で再読み込みされます)。", "更新失败": "更新失敗", "更新失败:{error}": "更新失敗:{error}", "更新完成": "更新完了", "更新已应用到容器内,重启服务后生效。{at}": "更新はコンテナ内に適用されました。サービスを再起動すると有効になります。{at}", "更新已应用到容器内,重启服务后生效。{at}(本次检查失败:{error})": "コンテナ内に更新が適用されました。サービスを再起動すると有効になります。{at}(今回の確認は失敗しました:{error})", "更新日志": "更新履歴", "更新设置": "更新設定", "更新进行中": "更新中", "更新通道已保存": "更新チャンネルを保存しました", "更新通道已改变,请重新检查更新。": "更新チャンネルが変わりました。もう一度更新を確認してください。", "替换完成,正在重启服务…": "置き換えが完了しました。サービスを再起動しています…", "最多保留 6 个 HTTPS 加速源;自定义源可关闭版本查询支持。": "HTTPS 高速化ソースは最大 6 件です。カスタムソースではバージョン照会を無効にできます。", "最新发布版本为 {latest},但当前版本号「{current}」无法解析,未做新旧判断。{at}": "最新リリースは {latest} ですが、現在のバージョン番号「{current}」を解析できないため、新旧の判定は行いませんでした。{at}", "最新版本": "最新バージョン", "最近采用": "直近の使用先", "有新版本": "新バージョンあり", "服务正在重启,页面会在恢复后自动刷新…({seconds}s)": "サービスを再起動しています。復旧後にページは自動で再読み込みされます…({seconds} 秒)", "服务端压缩包": "サーバーアーカイブ", "未找到适用的更新包": "対応する更新パッケージなし", "未找到适用的更新包。需要:{wanted};发布页包含的文件类型:{seen}。": "対応する更新パッケージが見つかりません。必要:{wanted}。公開されているファイル形式:{seen}。", "未探测": "未確認", "未检查": "未確認", "本工具由": "本ツールは", "查看发布页": "リリースページを見る", "校验中": "検証中", "检查中": "確認中", "检查中…": "確認中…", "检查失败": "確認失敗", "检查更新": "更新を確認", "检查更新与下载安装包使用所选线路;未选择代理时先直连,失败后尝试 Clash Verge 混合端口;指定代理不可用时不会自动改走直连。": "更新確認とインストーラーのダウンロードは選択した経路を使用します。未選択の場合は直接接続し、失敗すると Clash Verge の混合ポートを試します。指定したプロキシが使えない場合、直接接続には自動で切り替えません。", "检查更新与下载安装包使用所选线路;未选择代理时直连,指定代理不可用时不会自动改走直连。": "更新確認とインストーラーのダウンロードは選択した経路を使用します。未選択なら直接接続し、指定プロキシが利用できない場合は自動で直接接続に戻りません。", "检查更新与下载安装包走哪条线路(当前:{current});选择即保存。选项来自「网络代理」页;直连失败时会自动借 Clash 混合端口重试一次,选定指定代理后只走它": "更新の確認とインストーラーのダウンロードがどの経路を通るか(現在:{current})。選択すると保存されます。選択肢は「ネットワークプロキシ」ページのものです。直接接続に失敗した場合は Clash の混合ポートを借りて一度だけ再試行し、指定プロキシを選ぶとそのプロキシだけを使用します", "检查更新失败:{error}": "更新の確認に失敗しました:{error}", "检查更新失败:{error}(以下版本与更新日志来自上次成功检查,检查于 {time})": "更新の確認に失敗しました:{error}(以下のバージョンと更新履歴は前回の確認成功時({time})のものです)", "检查计划": "確認スケジュール", "检查间隔必须是 {min} ~ {max} 分钟": "確認間隔は {min} ~ {max} 分にしてください", "检查间隔(分钟)": "確認間隔(分)", "检测到更新": "更新を検出", "检测到自定义程序或界面路径,一键更新不会覆盖这些位置。请按原部署方式升级。": "プログラムまたは画面にカスタムパスを検出しました。ワンクリック更新では上書きしません。従来のデプロイ手順で更新してください。", "正在下载 {name}:{percent}%({received} / {total} MB)": "{name} をダウンロード中:{percent}%({received} / {total} MB)", "正在下载 {version} 的服务端更新包…": "{version} のサーバー更新をダウンロード中…", "正在下载安装包…(下载完成后会交给系统安装器,按提示输入密码即可完成安装)": "インストーラーをダウンロード中…(完了後はシステムのインストーラーに渡されます。案内に従ってパスワードを入力してください)", "正在下载安装包…(下载完成后会启动新的 AppImage;把它替换掉旧文件即完成升级)": "インストーラーをダウンロード中…(完了後は新しい AppImage が起動します。旧ファイルと置き換えれば更新完了です)", "正在下载安装包…(下载完成后会挂载磁盘映像,把应用拖进「应用程序」即可完成安装)": "インストーラーをダウンロード中…(ダウンロード完了後にディスクイメージをマウントし、アプリを「アプリケーション」にドラッグすればインストールが完了します)", "正在下载安装包…(下载完成后启动安装程序需要管理员权限,会弹出 UAC 确认框)": "インストーラーをダウンロード中…(ダウンロード完了後に起動するインストーラーには管理者権限が必要で、UAC の確認ダイアログが表示されます)", "正在下载服务端更新包…(下载完成后由面板完成替换,重启容器内的服务后生效)": "サーバー更新パッケージをダウンロードしています…(ダウンロード完了後にパネルがファイルを置き換え、コンテナ内のサービスを再起動すると有効になります)", "正在取消下载…": "ダウンロードをキャンセルしています…", "正在备份并替换服务端程序与界面,请勿关闭服务器…": "サーバーと画面をバックアップして置き換えています。サーバーの電源を切らないでください…", "正在把旧数据导入 SQLite 数据库(旧文件会保留,不会删除)…": "旧データを SQLite データベースにインポートしています(旧ファイルは残され、削除されません)…", "正在查询 GitHub 上的最新发布版本…": "GitHub 上の最新リリースを問い合わせています…", "正在校验并替换容器内的程序与界面文件…": "コンテナ内のプログラムと UI ファイルを検証して置き換えています…", "正在独立核验官方更新包,校验通过前不会修改现有程序…": "公式パッケージを独立して検証中です。検証が完了するまで既存ファイルは変更しません…", "正在选择下载通道…": "ダウンロード経路を選択中…", "正在重启服务并确认新版本,页面恢复后会自动刷新…": "サービスを再起動し、新バージョンを確認しています。復旧後にページを再読み込みします…", "正式版与 beta 版": "正式版と beta 版", "没有可下载的安装包": "ダウンロードできるインストーラーがありません", "没有可下载的安装包:{reason}": "ダウンロードできるインストーラーがありません:{reason}", "没有启用的加速源,将只使用官方源。": "有効な高速化ソースがないため、公式ソースのみを使用します。", "沿用已记录的恢复时间": "記録済みの解除時刻を使用", "点击「检查更新」后,这里会显示最新版本的更新说明。": "「更新を確認」をクリックすると、ここに最新バージョンの更新内容が表示されます。", "点击「检查更新」查询 GitHub 上的最新发布版本。": "「更新を確認」をクリックして GitHub 上の最新リリースを確認します。", "点击「检查更新」查询最新发布版本。": "「更新を確認」をクリックして最新リリースを確認します。", "点击在浏览器中打开": "クリックでブラウザが開きます", "点击复制群号": "クリックでグループ番号をコピー", "版本 {version} · 按 GitHub 访问设置下载安装包": "バージョン {version} · GitHub アクセス設定でインストーラーをダウンロード", "版本查询": "バージョン照会", "版本查询、插件索引、文件下载": "バージョン照会・プラグイン索引・ファイル取得", "状态来自最近一次实际请求,并非实时测速。过期后标为待重新检查;限流只暂停对应线路,其他线路仍可使用。": "直近の実際のリクエスト結果であり、リアルタイムの速度測定ではありません。期限切れは再確認が必要と表示します。レート制限は該当経路のみを停止し、他の経路は引き続き使用できます。", "环境变量": "環境変数", "立即重启": "今すぐ再起動", "等待恢复": "復旧待ち", "管理员已关闭面板一键更新,请使用手动升级方式。": "管理者がワンクリック更新を無効にしています。手動で更新してください。", "粘贴 GitHub 令牌(ghp_… / github_pat_…)": "GitHub トークンを貼り付け(ghp_… / github_pat_…)", "网关已关闭自动检查,此处只做手动检查": "ゲートウェイの自動確認は無効です。ここでは手動確認のみ利用できます。", "群号": "グループ番号", "群号:{group}": "グループ番号:{group}", "自动检查更新": "更新の自動確認", "自动选择最快可用源": "利用可能な最速ソースを自動選択", "自动(官方优先)": "自動(公式優先)", "自定义加速前缀": "カスタム高速化プレフィックス", "至少需要关注正式版或 beta 版中的一个通道": "正式版または beta 版の少なくとも一方を選択してください。", "补充内置备用源": "未登録の内蔵ソースを追加", "记录于 {time}": "記録時刻:{time}", "请先粘贴 GitHub 令牌": "先に GitHub トークンを貼り付けてください", "请检查服务日志": "サービスログを確認してください", "读取下载进度失败:{error}": "ダウンロード進捗の読み取りに失敗しました:{error}", "读取中": "読み込み中", "赞赏完全自愿,不解锁任何功能,也不影响正常使用。": "寄付は完全に任意です。機能の解放や通常の利用には一切影響しません。", "赞赏方式": "寄付方法", "跟随软件": "ソフトウェアに従う", "跳过此次更新": "今回の更新をスキップ", "软件更新": "ソフトウェア更新", "软件更新与插件共用此设置;GitHub 令牌仅发送给官方 API。镜像安装包需要官方校验值,镜像插件包需要可信签名。": "ソフトウェア更新とプラグインで共有します。GitHub トークンは公式 API にのみ送信します。ミラーのインストーラーには公式のチェックサム、プラグインには信頼できる署名が必要です。", "软件版本检查设置不可用": "ソフトウェア更新の確認設定を取得できません。", "返回内容异常": "応答内容が不正", "这一版只有 {seen},没有本机需要的 {wanted}": "このバージョンには {seen} しかなく、本機に必要な {wanted} がありません", "这一版没有为当前平台提供安装包": "このバージョンには現在のプラットフォーム用のインストーラーがありません", "这一版没有发布本机需要的安装包({wanted})": "このバージョンには本機に必要なインストーラー({wanted})が公開されていません", "这一版没有提供容器内更新包": "このバージョンにはコンテナ内更新パッケージがありません", "这一版没有提供容器内更新包:{reason}": "このバージョンにはコンテナ内更新パッケージがありません:{reason}", "这一版没有提供本机安装包": "このバージョンには本機用のインストーラーがありません", "这一版还没有上传任何文件(构建可能失败,或仍在打包上传)": "このバージョンにはまだファイルが 1 つもアップロードされていません(ビルドに失敗したか、まだアップロード中です)", "这个版本没有填写发布说明。": "このバージョンのリリースノートは登録されていません。", "连接超时": "接続タイムアウト", "通道已切换,但写入磁盘失败(重启后会回到原设置)": "チャンネルを切り替えましたが、ディスクへの書き込みに失敗しました(再起動すると元の設定に戻ります)", "遇到问题或有使用心得,欢迎到群里交流。": "ご質問や使用感の共有は各グループへどうぞ。", "重启中": "再起動中", "重新粘贴保存一次即可自愈": "もう一度貼り付けて保存すれば復旧します", "重试下载": "ダウンロードを再試行", "链接地址不受支持": "リンクのアドレスはサポートされていません", "限流冷却中": "レート制限の解除待ち", "面板自动安装": "パネルから自動インストール", "预发布": "プレリリース", "默认开启;即使当前使用 beta 版,也可收到版本号更高的正式版更新。": "既定で有効です。beta 版を使用中でも、バージョン番号がより高い正式版を受け取れます。", "默认跟随软件的正式版和 beta 关注选择;单独设置只影响插件。始终按版本号选择更新,不会降级。": "既定でソフトウェアの正式版・beta 版の選択に従います。個別設定はプラグインのみに適用されます。更新は常にバージョン番号で選び、ダウングレードはしません。", "默认跟随软件的自动检查和间隔。关闭自动检查也会暂停插件自动更新和自动下载;手动检查与安装不受影响。": "既定でソフトウェアの自動確認と間隔に従います。自動確認を無効にすると、プラグインの自動更新・自動ダウンロードも一時停止します。手動確認とインストールは利用できます。", "(检查于 {time})": "({time} に確認)", "API Key 列表": "API Key 一覧", "Key 已停用": "Key を無効化しました", "Key 已删除": "Key を削除しました", "Key 已启用": "Key を有効化しました", "Key 至少需要 8 个字符": "Key は 8 文字以上必要です", "✅ Key 已创建,记得复制给客户端": "✅ Key を作成しました。クライアントへのコピーをお忘れなく", "✅ 可用范围已保存": "✅ 利用範囲を保存しました", "不限制": "制限なし", "与": "と", "例如 Cursor / 公司电脑": "例:Cursor / 会社の PC", "保存失败:{reason}": "保存に失敗しました:{reason}", "保存范围": "範囲を保存", "创建": "作成", "创建时间": "作成日時", "删除网关 Key": "ゲートウェイキーを削除", "助手图片工具": "アシスタント画像ツール", "助手标题总结": "アシスタントのタイトル要約", "可用提供商": "利用可能なプロバイダー", "可用提供商:{names}": "利用可能なプロバイダー:{names}", "可用模型": "利用可能なモデル", "可用模型:{names}": "利用可能なモデル:{names}", "可用范围": "利用範囲", "可用范围 · {name}": "利用範囲 · {name}", "启用「{name}」": "「{name}」を有効化", "复制 Key": "Key をコピー", "客户端请求需带 ": "クライアントのリクエストには ", "已删除": "削除済み", "已启用鉴权 · {n} 把 Key 生效": "認証が有効 · {n} 本の Key が有効", "当前不限制:这把 Key 可以用全部提供商与全部对外模型": "現在は制限なし:この Key はすべてのプロバイダーとすべての外部公開モデルを利用できます", "所选 API Key 已不可用": "選択した API Key は利用できません", "所选 API Key 已不可用,请重新选择": "選択した API Key は利用できません。別の Key を選択してください。", "提供商:{names}": "プロバイダー:{names}", "搜索模型…": "モデルを検索…", "操作失败:{reason}": "操作に失敗しました:{reason}", "新建 API Key": "新規 API Key", "日活保活": "日次アクティビティ維持", "显示": "表示", "未启用鉴权": "認証は未有効", "未命名": "名称未設定", "未提供客户端标识": "クライアント識別情報なし", "未知客户端": "不明なクライアント", "模型调用使用所选 Key 的权限,日志记录 Key 名称,不保存密钥值。": "モデル呼び出しには選択した Key の権限が適用されます。ログには Key 名のみを記録し、秘密鍵の値は保存しません。", "模型:{names}": "モデル:{names}", "正在读取 API Key…": "API Key を読み込み中…", "没有匹配的选项": "一致するオプションがありません", "没有可用的 API Key,请先在「网关 Key」页创建并启用": "利用可能な API Key がありません。「ゲートウェイ Key」ページで作成して有効化してください。", "留空 = 不限制": "空欄 = 制限なし", "留空自动生成;手填至少 8 个字符": "空欄なら自動生成;手動入力は 8 文字以上", "留空表示不限制;同时设置时请求需同时满足两个条件(模型在白名单内且路由到允许的提供商)。 「可用模型」的候选跟着上面勾选的提供商走:没勾提供商时它是空的(还没有约束范围), 勾了几家就列出这几家能收的全部对外名。": "空欄なら制限なし;両方を設定した場合、リクエストは 2 つの条件を同時に満たす必要があります(モデルがホワイトリスト内にあり、かつ許可されたプロバイダーにルーティングされる)。「利用可能なモデル」の候補は上で選択したプロバイダーに連動します:プロバイダーを選んでいないときは空です(まだ範囲を制約していないため)、数社を選ぶと、それらのプロバイダーが受け入れられるすべての外部公開名が表示されます。", "确定删除 Key「{name}」?使用它的客户端会立刻无法访问。": "Key「{name}」を削除しますか?使用中のクライアントは直ちにアクセスできなくなります。", "网关 Key 表": "ゲートウェイキーテーブル", "自动记住本次选择,下次打开继续使用;Key 被停用或删除后需重新选择。": "今回の選択は記憶され、次回も使用されます。Key が無効化または削除された場合は選び直してください。", "请先在上面选择可用提供商": "先に上で利用可能なプロバイダーを選択してください", "读取 Key 列表失败:{reason}": "Key 一覧の読み込みに失敗しました:{reason}", "还没有 Key,当前不鉴权": "Key がまだありません。現在は認証を行いません", "这几家当前没有可用模型(账号未登录或清单为空)": "これらのプロバイダーには現在利用可能なモデルがありません(アカウントが未ログイン、またはリストが空です)", "这把 Key 不限制提供商与模型(可用全部上游与全部对外模型)": "この Key はプロバイダーとモデルを制限しません(すべてのアップストリームとすべての外部公開モデルを利用可能)", "限制:{text}": "制限:{text}", "隐藏": "非表示", "(模型候选需先选提供商;不选则沿用当前这几项,保存后仍按模型白名单生效)": "(モデルの候補には先にプロバイダーの選択が必要です;選択しない場合は現在の項目をそのまま使用し、保存後もモデルのホワイトリストとして有効です)", "(行内「可用范围」):留空 = 不限制,两个都设时 按交集生效 —— 被限制的模型对这把 Key 表现为「不存在」(拉 /v1/models 也看不到它), 提供它的家不在可用列表里时请求同样被拒。": "(行内の「利用範囲」):空欄 = 制限なし。両方を設定した場合は積集合で適用されます —— 制限されたモデルはこの Key からは「存在しない」ものとして扱われ(/v1/models を取得しても表示されません)、それを提供するプロバイダーが利用可能リストにない場合もリクエストは同様に拒否されます。", "+ 新建 Key": "+ 新規 Key", "; 修改后立即生效,本程序自身会自动使用第一把启用的 Key。每把 Key 可单独限制": "; 変更はすぐに反映され、本アプリ自身は最初に有効な Key を自動的に使用します。各 Key で個別に制限できる項目は、", ";修改后立即生效。模型测试、助手和日活保活必须选择 Key,受限 Key 不能访问管理接口。每把 Key 可单独限制": "。変更はすぐ反映されます。モデルテスト、アシスタント、日次活動維持には Key の選択が必要です。制限付き Key は管理 API にアクセスできません。各 Key で個別に制限できる項目は、", ";当前必须带 Key。": "。有効な Key が必要です。", " AI 账号专用静态住宅 IP:Scamalytics 低欺诈评分,不限流量,首单 75 折(AGENT2API25)": " AI アカウント専用のネイティブ静的住宅用 IP:Scamalytics の不正スコアが低く、通信量無制限、初回購入 25% オフ(AGENT2API25)", " 提供 AI 账号专用的原生静态住宅 IP(Static Residential ISP):IP 来自真实家庭宽带运营商,Scamalytics 低欺诈评分,每个 IP 独享,不限流量,$3.90 起。": " は AI アカウント専用のネイティブ静的住宅用 IP(Static Residential ISP)を提供しています。実在の家庭向けブロードバンド事業者の IP を使い、Scamalytics の不正スコアが低く、IP は 1 つずつ専有、通信量は無制限、$3.90 から。", " 那一类由「同步 Clash Verge」 镜像进来(进入本页时会自动同步一次):名称、端口、启用都跟随 Clash, 在 Clash 里改或删,这里跟着变 —— 所以它们只读,改请到 Clash Verge 里改。": " この種のエントリは「Clash Verge を同期」でまとめてミラー取り込みされます(このページを開くと自動で 1 回同期します):名前・ポート・有効状態はすべて Clash に従い、Clash 側で変更または削除すると、こちらも追随して変わります —— つまり読み取り専用なので、変更は Clash Verge 側で行ってください。", "Clash Verge": "Clash Verge", "SOCKS5 用户名和密码不能超过 255 字节": "SOCKS5 のユーザー名とパスワードは 255 バイト以内で入力してください", "YAML 文件": "YAML ファイル", "{names} 等 {n} 条": "{names} ほか {n} 件", "{n} 个出口": "エンドポイント {n} 件", "{n} 个账号在用": "{n} 件のアカウントが使用中", "{n} 条订阅": "{n} 件のサブスク", "{percent}%({received} / {total} MB)": "{percent}%({received} / {total} MB)", "✅ {ip}": "✅ {ip}", "✅ 「{name}」出口可用{ip}{took}": "✅ 「{name}」のエンドポイントは利用可能{ip}{took}", "✅ 内核下载完成,正在启动…": "✅ カーネルのダウンロードが完了、起動しています…", "✅ 内核已手动导入到 {dir}": "✅ カーネルを {dir} に手動インポートしました", "✅ 已同步 Clash Verge 出口({n} 项变更)": "✅ Clash Verge のエンドポイントを同期しました({n} 件の変更)", "✅ 连接成功": "✅ 接続成功", "✅ 连通性测试设置已保存": "✅ 接続テスト設定を保存しました", "❌ 「{name}」{error}": "❌ 「{name}」{error}", "❌ 连接失败": "❌ 接続失敗", "「测试」与「批量测试」访问的目标;留空用默认(打 WorkBuddy 上游)。判据是能否拿到 HTTP 响应,不用考虑该网址返回什么内容。": "「テスト」「一括テスト」がアクセスする先です。空欄なら既定(WorkBuddy 上流)を使用します。判定基準は HTTP レスポンスが取得できるかどうかで、URL が何を返すかは問いません。", "上传本地文件": "ローカルファイルをアップロード", "上次下载失败:{reason}": "前回のダウンロードは失敗しました:{reason}", "上次下载已停止,未下载完的临时文件已删除": "前回のダウンロードは停止され、未完了の一時ファイルは削除されました", "上次同步": "前回の同期", "上次测试": "前回のテスト", "下载": "ダウンロード", "下载中…": "ダウンロード中…", "下载内核": "カーネルをダウンロード", "下载已经完成,停止没赶上(内核已安装)": "停止が間に合わずダウンロードは完了しました(カーネルはインストール済み)", "下载线路": "ダウンロード経路", "下载线路 / 存放目录没能写进配置(本次下载已按新设置走,重启后会恢复原值)": "経路 / 保存先を設定に書き込めませんでした(今回のダウンロードは新しい設定で実行され、再起動後に元に戻ります)", "不再提供": "提供終了", "不再提醒": "今後表示しない", "为降低维护成本、资源占用及合规风险,Agent2API 已停止提供代理订阅与内置代理内核相关功能。": "保守コスト、リソース使用量、コンプライアンス上のリスクを軽減するため、Agent2API はプロキシのサブスクリプションと内蔵プロキシカーネル関連機能の提供を終了しました。", "之前使用订阅节点?": "サブスクリプションのノードを使用していましたか?", "也可以把二维码截图直接粘贴到弹窗里(Ctrl+V)": "QR コードのスクリーンショットをダイアログに直接貼り付けることもできます(Ctrl+V)", "二维码里没有订阅链接": "QR コードにサブスク URL がありません", "从图片识别二维码": "画像から QR コードを読み取る", "代理主机只能填写域名或 IP 地址,不能包含协议、端口或路径": "ドメイン名または IP アドレスのみ入力してください。プロトコル、ポート、パスは含めないでください", "代理主机地址无效": "プロキシのホストが無効です", "代理修改已保存": "プロキシの変更を保存しました", "代理内核": "プロキシカーネル", "代理内核未安装(下载内核后,被账号或服务线路引用的节点会自动开监听端口)": "プロキシカーネルが未インストールです。ダウンロード後、アカウントまたはサービス経路から参照されるノードにリスニングポートが自動で割り当てられます。", "代理内核未安装(在「订阅管理」里下载内核后,被账号引用的节点会自动开监听端口)": "プロキシカーネルが未インストールです(「サブスク管理」でカーネルをダウンロードすると、アカウントから参照されているノードに自動でリスンポートが割り当てられます)", "代理列表": "プロキシ一覧", "代理列表加载失败:{reason}": "プロキシ一覧の読み込みに失敗しました:{reason}", "代理列表响应异常": "プロキシ一覧の応答が異常です", "代理协议只支持 HTTP 或 SOCKS5": "HTTP または SOCKS5 プロキシのみ対応しています", "代理名称": "プロキシ名", "代理名称不能超过 60 个字符": "プロキシ名は 60 文字以内で入力してください", "代理已添加": "プロキシを追加しました", "代理格式无效,请按示例填写": "プロキシの形式が無効です。入力例に従ってください", "代理池": "プロキシプール", "代理池表": "プロキシプール表", "代理订阅功能已下线": "プロキシのサブスクリプション機能は終了しました", "代理设置": "プロキシ設定", "代理设置响应异常": "プロキシ設定の応答が異常です", "代理账号和密码不能超过 200 个字符": "プロキシのユーザー名とパスワードは 200 文字以内で入力してください", "代理账号或密码的 URL 编码无效": "プロキシのユーザー名またはパスワードの URL エンコードが無効です", "以下行未能识别,已留在输入框中;修正后可再次解析。": "以下の行を解析できなかったため、入力欄に残しています。修正後に再度解析してください。", "使用情况": "使用状況", "例如:我的机场": "例:マイ空港", "例如:香港 HTTP 出口": "例:香港 HTTP エンドポイント", "保存代理": "プロキシを保存", "保存已有的代理地址,供账号与服务线路按需使用。": "既存のプロキシアドレスを保存し、アカウントやサービス経路で必要に応じて使用できます。", "保持原文件": "現在のファイルを維持", "停止下载": "ダウンロードを停止", "停止下载失败:{reason}": "ダウンロードの停止に失敗しました:{reason}", "停止请求已发出,但下载还没收手,稍后再看一次进度": "停止を要求しましたが、ダウンロードはまだ止まっていません。少し後で進捗を確認してください", "先把下载的内核放到网关机器的目录,再填写文件或目录的绝对路径。目录内会查找官方包或 mihomo 二进制;远程面板不能读取浏览器电脑的路径。": "ダウンロードしたカーネルをゲートウェイ上のフォルダーに置き、その絶対パスを入力してください。フォルダー内の公式アーカイブまたは mihomo バイナリを検索します。リモートパネルからブラウザー端末上のパスは読み取れません。", "先经过系统代理,再连接到此代理": "システムプロキシを経由してからこのプロキシに接続します", "全选当前筛选出的出口": "現在の絞り込み結果をすべて選択", "全选所有代理": "すべてのプロキシを全選択", "全选({n} 个)": "全選択({n} 件)", "全部协议": "すべてのプロトコル", "全部提供方": "すべての提供元", "全部订阅": "すべてのサブスク", "关掉这个窗口不会中断下载(它在后台继续跑)—— 要停下就点下面的「停止下载」,未下载完的临时文件会被删除。": "このウィンドウを閉じてもダウンロードは中断されません(バックグラウンドで続行します)。止めるには下の「ダウンロードを停止」を押してください。未完了の一時ファイルは削除されます。", "关闭代理后,引用它的账号回退直连。连通性以最近一次检测结果为准。": "プロキシを無効にすると、参照しているアカウントは直接接続に戻ります。接続状態は直近のテスト結果です。", "关闭内核": "カーネルを停止", "关闭内核失败:{reason}": "カーネルの停止に失敗しました: {reason}", "其中 {n} 条正被账号使用 —— 删除后那些账号会回退直连。": "うち {n} 件はアカウントが使用中です —— 削除するとそれらのアカウントは直接接続にフォールバックします。", "其中 {n} 条正被账号使用 —— 删除后需重新设置相关账号的代理,不会自动直连。": "選択したプロキシのうち {n} 件が使用中です。削除後は関連アカウントのプロキシを再設定してください。直接接続へ自動的には切り替えません。", "其中 {n} 条是同步来的只读条目(Clash / 订阅):可参与批量测试,删除会跳过": "うち {n} 件は同期された読み取り専用エントリ(Clash / サブスク)です:一括テストには含まれますが、削除ではスキップされます", "其中 {n} 条来自 Clash 同步:可参与批量测试,删除会跳过": "うち {n} 件は Clash 同期由来:一括テストには参加できますが、削除時はスキップされます", "内核 {version}": "カーネル {version}", "内核 {version}({asset})": "カーネル {version}({asset})", "内核下载": "カーネルのダウンロード", "内核下载失败:{reason}": "カーネルのダウンロードに失敗:{reason}", "内核二进制 / 配置 / 端口映射都会放在这里,默认 {dir};目录不存在会在下载开始时自动创建。": "カーネルのバイナリ / 設定 / ポート対応表はここに置かれます。既定は {dir}。存在しないフォルダはダウンロード開始時に自動で作成されます。", "内核启动失败:{reason}": "カーネルの起動に失敗:{reason}", "内核导入仍在后台执行,请刷新状态查看结果": "インポートはバックグラウンドで実行中です。状態を更新して結果を確認してください。", "内核导入任务排队中…": "カーネルのインポートは待機中です…", "内核导入失败": "カーネルのインポートに失敗しました", "内核导入状态已变化,请刷新后确认": "インポート状態が変更されました。更新して結果を確認してください。", "内核已停止": "カーネル停止中", "内核已停止,点「启动内核」拉起": "カーネルは停止中です。「カーネルを起動」で立ち上げてください", "内核已关闭(订阅与端口注册表保留,「启动内核」后原位恢复)": "カーネルを停止しました(購読とポート登録は保持され、「カーネルを起動」で元のポートに復元されます)", "内核已导入,但启动失败:{reason}": "カーネルはインポートされましたが、起動に失敗しました:{reason}", "内核已导入,但存放目录未能保存,重启网关后会恢复原位置": "カーネルはインポートされましたが、保存先を記録できませんでした。ゲートウェイ再起動後は元の場所に戻ります。", "内核已手动关闭": "カーネルは手動停止中", "内核已手动关闭(点「启动内核」拉起)": "カーネルは手動停止中です。「カーネルを起動」で立ち上げてください", "内核文件必须非空且不超过 {max} MiB": "カーネルファイルは空ではなく、{max} MiB 以下である必要があります", "内核未安装": "カーネル未インストール", "内核正在启动…": "カーネルを起動しています…", "内核正在执行操作,请稍后重试": "カーネルの操作が進行中です。しばらくしてから再試行してください。", "内核没有在超时内停下来": "タイムアウト内にカーネルが停止しませんでした", "内核目录没能删掉(可能仍被进程占用),稍后重试一次": "カーネルのフォルダーを削除できませんでした(プロセスがまだ使用している可能性があります)。しばらくしてからもう一度お試しください。", "内核运行中": "カーネル稼働中", "出口 IP {ip}": "出口 IP {ip}", "出口可用": "プロキシ利用可能", "出口测试网址": "接続テスト URL", "删除代理": "プロキシを削除", "删除内核": "カーネルを削除", "删除内核失败:{reason}": "カーネルの削除に失敗:{reason}", "删除订阅": "サブスクを削除", "刷新中…": "更新中…", "刷新失败:{reason}": "更新に失敗:{reason}", "功能调整通知": "機能変更のお知らせ", "勾选「{name}」": "「{name}」をチェック", "单个添加": "個別追加", "去获取": "取得する", "另有 {n} 条是同步来的只读条目(Clash / 订阅),将跳过。": "別に {n} 件は同期された読み取り専用エントリ(Clash / サブスク)のためスキップします。", "另有 {n} 条来自 Clash Verge 同步,将跳过(请到 Clash Verge 里删)。": "ほかに {n} 件が Clash Verge 同期由来のためスキップされます(Clash Verge 側で削除してください)。", "只读:在 Clash Verge 里改": "読み取り専用:Clash Verge で変更してください", "只读:在「订阅管理」里改": "読み取り専用:「サブスク管理」で変更してください", "同步 Clash Verge": "Clash Verge を同期", "同步中…": "同期中…", "同步失败:{reason}": "同期に失敗しました:{reason}", "名字与端口在 Clash Verge 里改;启用可在本页关闭": "名前とポートは Clash Verge 側で変更してください。有効/無効はこのページで切り替えられます", "名字与端口跟随订阅与内核;启用可在本页关闭": "名前とポートは購読とカーネルに従います。有効/無効はこのページで切り替えられます", "后台继续": "バックグラウンドで続行", "启动内核": "カーネルを起動", "启用订阅「{name}」": "サブスク「{name}」を有効化", "启用这条代理": "このプロキシを有効化", "启用这条订阅": "このサブスクを有効化", "启用(禁用后,使用此代理的账号请求将失败;仍可测试)": "有効(無効にすると、このプロキシを使うアカウントのリクエストは失敗します。テストは可能です)", "启用(禁用的条目不会被账号使用,被引用时账号回退直连;仍可测试)": "有効化(無効なエントリはアカウントに使用されず、参照されている場合はアカウントが直接接続にフォールバックしますが、テストは可能です)", "启用(禁用的订阅不参与内核同步,它的节点会从代理池移除)": "有効(無効なサブスクはカーネル同期の対象外で、そのノードはプロキシプールから削除されます)", "图片读取失败": "画像の読み込みに失敗", "地址": "アドレス", "地址不完整": "アドレスが不完全", "地址由网关所在设备访问;本机代理需运行在该设备上。": "このアドレスにはゲートウェイ端末から接続します。ローカルプロキシはその端末上で実行してください。", "复制下载链接": "ダウンロードリンクをコピー", "失败 {n} 个({reason})": "失敗 {n} 件({reason})", "存放位置": "保存先", "存放位置 {dir}": "保存先 {dir}", "存放位置要填绝对路径,例如 D:\\proxy-kernel": "保存先は絶対パスで入力してください(例:D:\\proxy-kernel)", "家庭宽带": "家庭向けブロードバンド", "导入内核": "カーネルをインポート", "导入并替换": "インポートして置換", "导入来源": "インポート元", "将替换现有代理内核,运行中的连接会短暂中断。订阅、账号引用与端口映射会保留。是否继续?": "既存のプロキシカーネルを置き換えるため、接続が一時的に中断されます。サブスクリプション、アカウントの参照、ポートマッピングは保持されます。続行しますか?", "展开其余 {n} 个 ▾": "残り {n} 件を表示 ▾", "已下载?手动导入": "ダウンロード済み?手動でインポート", "已保存。重启内核后,新分配的节点端口才会按新范围来。": "保存しました。カーネル再起動後、新しく割り当てられるノードポートが新しい範囲に従います。", "已保存「{name}」": "「{name}」を保存しました", "已停止下载内核(未下载完的临时文件已删除)": "カーネルのダウンロードを停止しました(未完了の一時ファイルは削除済み)", "已删除 {n} 个代理": "プロキシを {n} 件削除しました", "已删除「{name}」": "「{name}」を削除しました", "已删除内核(订阅与账号引用保留,重新下载后会重新分配端口)": "カーネルを削除しました(サブスクとアカウントの参照は保持され、再ダウンロード後にポートが再割り当てされます)", "已删除内核(订阅与账号引用保留;有文件仍被占用,将在下次启动时清理)": "カーネルを削除しました(サブスクリプションとアカウントの参照は保持されます。使用中のファイルがあり、次回起動時にクリーンアップされます)", "已刷新「{name}」,正在同步节点…": "「{name}」を更新しました。ノードを同期しています…", "已启用 {n} 个": "{n} 件有効", "已启用「{name}」": "「{name}」を有効化しました", "已启用「{name}」,正在补建监听端口(内核重建中)": "「{name}」を有効にしました。リスニングポートを再作成しています(カーネル再起動中)", "已在本页禁用(打开开关即恢复)": "このページで無効化しています(スイッチをオンにすると元に戻ります)", "已新增「{name}」": "「{name}」を追加しました", "已新增订阅「{name}」,内核正在同步节点…": "サブスク「{name}」を追加しました。カーネルがノードを同期しています…", "已是最新,没有需要同步的变更": "すでに最新です。同期が必要な変更はありません", "已有手动配置不受此次调整影响。你仍可添加 HTTP / SOCKS5 地址,并使用连通性测试。": "既存の手動設定には影響しません。HTTP / SOCKS5 アドレスの追加と接続テストは引き続き利用できます。", "已有手动配置和 Clash Verge 端点引用不受影响。仍可添加 HTTP / SOCKS5 地址、同步 Clash Verge 端点并测试连通性;Clash Verge 由你自行安装和运行。": "既存の手動設定と Clash Verge エンドポイントへの参照には影響しません。HTTP / SOCKS5 アドレスの追加、Clash Verge の同期、接続テストは引き続き利用できます。Clash Verge は別途インストールして実行してください。", "已有账号引用它,但内核还没把监听端口补建出来 —— 稍等片刻,或重新启用这条节点": "アカウントからは参照されていますが、カーネルがまだリスンポートを作成していません — しばらく待つか、このノードを再度有効にしてください", "已有账号或服务线路引用它,监听端口尚未就绪;请稍等,或检查内核状态": "アカウントまたはサービス経路がこのノードを参照していますが、リスニングポートはまだ準備できていません。しばらく待つか、カーネルの状態を確認してください。", "已禁用「{name}」": "「{name}」を無効化しました", "已禁用「{name}」,监听端口正在关闭(内核重建中)": "「{name}」を無効にしました。リスニングポートを閉じています(カーネル再起動中)", "已禁用(未开监听端口)": "無効(リスニングポートなし)", "已移除的订阅": "削除済みのサブスク", "已识别 {n} 条 · 已勾选 {selected} 条": "解析済み {n} 件 · 選択済み {selected} 件", "已识别 {n} 条代理,跳过 {duplicates} 条重复地址": "{n} 件を解析し、重複する {duplicates} 件をスキップしました", "已识别订阅链接": "サブスク URL を認識しました", "已选择「{name}」,保存后导入": "「{name}」を選択しました。保存時に取り込まれます", "已配置认证": "認証設定済み", "当前客户端不支持手动导入内核,请更新或刷新页面": "このクライアントはカーネルの手動インポートに対応していません。更新またはページの再読み込みを行ってください。", "当前没有正在进行的下载": "進行中のダウンロードはありません", "当前环境不支持代理池(桥接方法缺失)": "現在の環境ではプロキシプールをサポートしていません(ブリッジメソッドがありません)", "当前环境不支持代理测试(桥接方法缺失)": "現在の環境ではプロキシテストをサポートしていません(ブリッジメソッドがありません)", "当前环境不支持代理设置(桥接方法缺失)": "この環境はプロキシ設定に対応していません(ブリッジメソッドがありません)", "当前环境不支持同步(桥接方法缺失)": "現在の環境では同期をサポートしていません(ブリッジメソッドがありません)", "当前环境不支持启停(桥接方法缺失)": "この環境では有効/無効の切り替えに対応していません(ブリッジメソッドが見つかりません)", "当前环境不支持订阅(桥接方法缺失)": "現在の環境ではサブスクを利用できません(ブリッジメソッドが見つかりません)", "当前环境不支持选择文件夹,直接填写绝对路径即可": "この環境ではフォルダ選択を開けません。絶対パスを直接入力してください", "当前线路不可用:{error};重新选一条或切回直连": "現在の経路は使用できません:{error}。別の経路を選ぶか直結に戻してください", "我知道了": "確認しました", "所属订阅已删除,这条节点不会再分配端口 —— 可以删除它": "所属サブスクが削除されたため、このノードにポートが割り当てられることはありません — 削除して構いません", "手动下载官方内核": "公式カーネルを手動ダウンロード", "手动代理与 Clash Verge 同步仍然保留": "手動プロキシと Clash Verge 同期は引き続き利用できます", "手动代理仍然保留": "手動プロキシは引き続き利用できます", "手动填写的地址与端口": "手動入力のアドレスとポート", "手动导入内核": "カーネルを手動インポート", "打开文件夹选择框失败:{reason}": "フォルダ選択を開けませんでした:{reason}", "批量删除": "一括削除", "批量删除代理": "プロキシを一括削除", "批量测试": "一括テスト", "批量测试完成:{ok} 个可用、{failed} 个失败(共 {total} 个)": "一括テスト完了:{ok} 件利用可能、{failed} 件失敗(全 {total} 件)", "批量测试完成:{ok} 个可用(共 {total} 个)": "一括テスト完了:{ok} 件利用可能(全 {total} 件)", "批量测试({n})": "一括テスト({n})", "批量添加": "一括追加", "批量添加响应异常,请刷新代理列表确认后再试": "一括追加の応答が異常です。一覧を更新し、保存状況を確認してから再試行してください", "批量添加完成:新增 {added} 条,重复 {duplicates} 条,失败 {failed} 条": "一括追加完了:追加 {added} 件、重複 {duplicates} 件、失敗 {failed} 件", "批量添加({n})": "一括追加({n})", "按协议筛选": "プロトコルで絞り込み", "按提供方筛选": "提供元で絞り込む", "按来源筛选": "来源で絞り込み", "按需下载(约 20-40MB)": "オンデマンドでダウンロード(約 20-40MB)", "控制端口 {port} · {n} 个节点监听器": "制御ポート {port} · ノードリスナー {n} 個", "搜索代理": "プロキシを検索", "搜索名称 / 地址 / 端口": "名前 / アドレス / ポートを検索", "搜索节点": "ノードを検索", "支持官方压缩包和解压后的内核二进制;只接受当前版本,SHA-256 校验不通过时不会替换现有内核。": "公式アーカイブと展開済みのバイナリに対応しています。現在のバージョンのみ受け付け、SHA-256 検証に失敗した場合は既存のカーネルを変更しません。", "支持手动地址与 Clash Verge 端点同步,不接管代理服务的安装与运行。": "手動入力のアドレスと Clash Verge のエンドポイント同期に対応しています。プロキシサービスのインストールや実行は管理しません。", "文件或目录路径": "ファイルまたはフォルダーのパス", "文件读取失败": "ファイルの読み取りに失敗しました", "新增代理": "プロキシを追加", "新增方式": "追加方法", "新增订阅": "サブスクを追加", "新解析的代理默认使用非直连": "新しく解析するプロキシはシステムプロキシ経由にする", "显示 {n} / 共 {total} 个出口": "{n} / 全 {total} 件の出口を表示", "暂未使用": "未使用", "更新中…": "更新中…", "更新出网线路已保存,正在准备监听端口": "更新経路を保存しました。リスニングポートを準備しています。", "替换代理内核": "プロキシカーネルを置換", "最近检测": "直近のテスト", "有 {n} 个账号正在使用它({names})—— 删除后这些账号会回退直连。": "{n} 件のアカウントがこれを使用中です({names})—— 削除するとこれらのアカウントは直接接続にフォールバックします。", "有 {n} 个账号正在使用它({names})—— 删除后需重新设置这些账号的代理,不会自动直连。": "{n} 件のアカウントが使用中です({names})。削除後はプロキシの再設定が必要です。直接接続へ自動的には切り替えません。", "有 {n} 个账号正在使用它,删除后这些账号会回退直连。": "{n} 件のアカウントが使用中です。削除すると、それらのアカウントは直接接続に戻ります。", "有 {n} 个账号正在使用它,删除后需重新设置这些账号的代理,不会自动直连。": "{n} 件のアカウントが使用中です。削除後はプロキシの再設定が必要です。直接接続へ自動的には切り替えません。", "未检测": "未テスト", "未检测到 Clash Verge:{reason}": "Clash Verge が検出されません:{reason}", "未测试": "未テスト", "未选择文件": "ファイルが未選択です", "本地 YAML 文件": "ローカル YAML ファイル", "本地文件": "ローカルファイル", "本地文件不会自动更新:要更新节点,重新选择文件后保存;不重选则内容保持不变。": "ローカルファイルは自動更新されません:ノードを更新するにはファイルを選び直して保存してください。選び直さない場合は内容が変わらず維持されます。", "本地文件订阅无需更新(要换内容请编辑后重新选择文件)": "ローカルファイルのサブスクは更新不要です(内容を変えるには編集でファイルを選び直してください)", "本地文件订阅的内容在导入时固定:节点会由内核起成本地监听器并镜像进代理池,节点数稍等几秒由轮询刷新。": "ローカルファイルのサブスクの内容は取り込み時に固定されます:ノードはカーネルがローカルリスナーとして起動し、プロキシプールへミラーされます。ノード数は数秒後にポーリングで更新されます。", "本页可编辑、可删除": "このページで編集・削除できます", "来自 Clash Verge 同步(名称、端口跟随 Clash),请到 Clash Verge 中修改;启用可在本页关闭": "Clash Verge からの同期(名前とポートは Clash に従います)。変更は Clash Verge で行ってください。有効/無効はこのページで切り替えられます", "正在下载内核": "カーネルをダウンロード中", "正在停止…": "停止中…", "正在安装内核…": "カーネルをインストール中…", "正在导入…": "インポート中…", "正在开始…": "開始中…", "正在校验内核…": "カーネルを検証中…", "正在读取并上传文件…": "ファイルを読み込み、アップロード中…", "正在连接 GitHub…": "GitHub に接続中…", "此代理用于{services};删除后这些线路将不可用,不会自动回退直连。": "このプロキシは{services}に使用されています。削除するとこれらの経路が使えなくなり、直接接続には自動でフォールバックしません。", "此代理用于软件 / 插件更新;删除后这些线路将不可用,不会自动回退直连。": "このプロキシはソフトウェア / プラグイン更新に使用されています。削除すると、それらの経路は利用できなくなり、直接接続には自動で戻りません。", "每次最多添加 {n} 条代理": "一度に追加できるプロキシは {n} 件までです", "每行一条,解析后可修改名称、设置非直连并测试,最后保存勾选的代理。": "1 行に 1 件入力してください。解析後に名前やシステムプロキシ経由の設定を変更してテストし、選択したプロキシを保存できます。", "没有匹配「{kw}」的出口": "「{kw}」に一致する出口はありません", "没有匹配当前筛选的出口": "現在の絞り込みに一致する出口はありません", "没有可全选的代理": "選択できるプロキシがありません", "没有可删除的条目": "削除できるエントリがありません", "没能同步:{reason}": "同期できませんでした:{reason}", "测试中 {done}/{total}": "テスト中 {done}/{total}", "测试失败:{reason}": "テストに失敗しました:{reason}", "测试目标网址": "テスト先 URL", "测试结果没能记下:{reason}": "テスト結果を記録できませんでした:{reason}", "测试网址要以 http:// 或 https:// 开头": "テスト URL は http:// または https:// で始まる必要があります", "测试设置": "テスト設定", "添加一个 HTTP 或 SOCKS5 地址,之后可以在账号或服务线路中选择使用。": "HTTP または SOCKS5 アドレスを追加すると、アカウントやサービス経路で選択できます。", "添加单个": "1 件追加", "添加手动 HTTP / SOCKS5 地址,或同步 Clash Verge 的端点,供账号与服务线路使用。": "HTTP / SOCKS5 アドレスを手動で追加するか、Clash Verge のエンドポイントを同期して、アカウントやサービス経路で使用できます。", "添加第一个代理": "最初のプロキシを追加", "清空已识别": "解析済み一覧をクリア", "清空筛选": "絞り込みを解除", "确定删除「{name}」?{used}": "「{name}」を削除しますか?{used}", "确定删除「{name}」?它在代理池里的节点会一并移除,引用这些节点的账号会回退直连。": "「{name}」を削除しますか?プロキシプール内の該当ノードも削除され、それらを参照しているアカウントは直接接続にフォールバックします。", "确定删除「{name}」?": "「{name}」を削除しますか?", "确定删除已下载的内核{version}?内核文件与端口映射会被移除,订阅节点会失去监听端口(地址列显示「端口准备中」),引用它们的账号会暂时回退直连;订阅本身保留,重新下载内核后会重新分配端口。": "ダウンロード済みのカーネル{version}を削除しますか?カーネルのファイルとポートマッピングが削除され、サブスクのノードはリスンポートを失います(アドレス列は「ポート準備中」と表示されます)。それらを参照しているアカウントは一時的に直接接続にフォールバックします。サブスク自体は保持され、カーネルを再ダウンロードするとポートが再割り当てされます。", "确定删除选中的 {n} 个代理?": "選択した {n} 件のプロキシを削除しますか?", "禁用后本端不再用它(引用它的账号回退直连),并会关掉它的本地监听端口": "無効にするとこの端末では使用しなくなり(参照しているアカウントは直接接続に戻ります)、ローカルのリスニングポートも閉じます", "禁用后本端不再用它(引用它的账号回退直连);端口在 Clash Verge 侧,不受影响": "無効にするとこの端末では使用しなくなり(参照しているアカウントは直接接続に戻ります)。ポートは Clash Verge 側のままで、影響はありません", "立即更新": "今すぐ更新", "端口范围必须是 1-65535 的整数": "ポート範囲は 1〜65535 の整数である必要があります", "第 {line} 行:{error}": "{line} 行目:{error}", "类型": "タイプ", "粘贴代理列表后点击「解析」": "プロキシ一覧を貼り付けて「解析」を押してください", "编辑代理": "プロキシを編集", "编辑订阅": "サブスクを編集", "网关已切换,请重新打开代理弹窗": "ゲートウェイが切り替わりました。プロキシのダイアログを開き直してください", "网关未返回内核导入任务,请刷新状态后确认": "ゲートウェイからインポートタスクが返されませんでした。状態を更新して結果を確認してください。", "网关机器上的文件或目录": "ゲートウェイ上のファイルまたはフォルダー", "节点": "ノード", "节点由内核起成本地监听器,镜像进代理池": "ノードはカーネルがローカルリスナーとして起動し、プロキシプールにミラーされます", "节点端口范围 {base}–{end}": "ノードポート範囲 {base}–{end}", "节点端口范围(结束)": "ノードポート範囲(終了)", "节点端口范围(起始)": "ノードポート範囲(開始)", "解析": "解析", "订阅": "サブスク", "订阅与 Clash 的出口自动镜像进来": "サブスクと Clash の出口は自動的にミラーされます", "订阅内容由内核定时刷新(每 24 小时);节点数与同步状态在保存后由轮询刷新,稍等几秒。": "サブスクの内容はカーネルが定期的(24 時間ごと)に更新します。保存後はポーリングでノード数と同期状態が更新されるまで数秒お待ちください。", "订阅导入与更新、订阅节点管理,以及代理内核的下载、安装和运行。": "サブスクリプションのインポート・更新、ノード管理、およびプロキシカーネルのダウンロード・インストール・実行。", "订阅来源": "サブスクのソース", "订阅管理": "サブスク管理", "订阅管理({n})": "サブスク管理({n})", "订阅节点会在本机各占一个监听端口,从该范围里挑空闲的分配;节点多的大订阅把默认范围({base}-{end})用尽时会报「没有可用的节点端口」,这时把范围调大再重启内核。已分配出去的端口不会因改范围而失效。": "サブスクリプションのノードはローカルのリスナーポートを 1 つずつ占有し、この範囲の空きポートから割り当てられます。ノード数の多い大きなサブスクリプションで既定の範囲({base}-{end})を使い切ると「利用可能なノードポートがありません」と表示されます。その場合は範囲を広げてカーネルを再起動してください。割り当て済みのポートは範囲を変更しても無効になりません。", "订阅里的节点会自动同步进代理池,账号即可引用。": "サブスクのノードは自動的にプロキシプールへ同期され、アカウントから参照できます。", "订阅里的节点会被内核起成本地监听器,镜像到代理池(账号按 id 引用,与本页其它出口同一用法)。内核只在用到订阅时按需下载(约 20-40MB),不随安装包分发。": "サブスクのノードはカーネルがローカルリスナーとして起動し、プロキシプールにミラーされます(アカウントは id で参照、このページの他の出口と同じ扱いです)。カーネルはサブスク利用時にのみオンデマンドでダウンロードされ(約 20-40MB)、インストーラーには同梱されません。", "订阅链接": "サブスク URL", "识别中…": "読み取り中…", "该节点所属订阅已删除,不会再被同步更新,可手动删除清理": "このノードが属するサブスクは削除済みで、今後同期されません。手動で削除できます", "该节点来自订阅(名称、端口跟随订阅与内核),请在「订阅管理」里修改;启用可在本页关闭": "このノードは購読由来です(名前とポートは購読とカーネルに従います)。変更は「購読の管理」で行ってください。有効/無効はこのページで切り替えられます", "请下载与网关平台一致的官方内核,不是浏览器所在设备的平台。": "ブラウザー端末ではなく、ゲートウェイのプラットフォームに合った公式カーネルをダウンロードしてください。", "请填写代理名称": "プロキシ名を入力してください", "请填写已有代理服务的 HTTP / SOCKS5 地址,或自行运行 Clash Verge 后同步端点,并重新为相关账号和服务线路选择代理。": "既存のプロキシサービスの HTTP / SOCKS5 アドレスを入力するか、Clash Verge を別途実行してエンドポイントを同期し、関連するアカウントとサービス経路のプロキシを選び直してください。", "请填写网关机器上的绝对文件或目录路径": "ゲートウェイ上のファイルまたはフォルダーの絶対パスを入力してください", "请改为填写已有代理服务的 HTTP / SOCKS5 地址,并重新为相关账号和服务线路选择代理。": "既存のプロキシサービスの HTTP / SOCKS5 アドレスを入力し、関連するアカウントとサービス経路のプロキシを選び直してください。", "请选择要导入的 YAML 文件": "取り込む YAML ファイルを選択してください", "请选择要导入的内核文件": "インポートするカーネルファイルを選択してください", "读取失败:{reason}": "読み込みに失敗しました:{reason}", "起始端口不能大于结束端口": "開始ポートは終了ポートより大きくできません", "跳过 {n} 个(Clash 同步)": "{n} 件をスキップ(Clash 同期)", "跳过 {n} 个(同步只读条目)": "{n} 件をスキップ(同期された読み取り専用エントリ)", "软件 / 插件更新": "ソフトウェア / プラグイン更新", "还没有代理。点右上角「+ 新增代理」手填一个,或在「订阅管理」里导入订阅节点、同步 Clash Verge 的出口。": "まだプロキシがありません。右上の「+ プロキシを追加」で手入力するか、「サブスク管理」でサブスクのノードを取り込む / Clash Verge の出口を同期してください。", "还没有代理。点右上角「+ 新增代理」手填一个,或点「同步 Clash Verge」把 Clash 的出口导进来。": "プロキシがまだありません。右上の「+ プロキシを追加」から手動で追加するか、「Clash Verge を同期」をクリックして Clash のエンドポイントを取り込んでください。", "还没有订阅:粘贴订阅链接、导入本地 YAML 文件,或从图片识别二维码。": "まだサブスクがありません:サブスク URL を貼り付けるか、ローカル YAML ファイルを取り込むか、画像から QR コードを読み取ってください。", "还没有账号使用它(端口只在被账号引用时才分配 —— 在账号里选它并保存后,内核会自动开端口)": "まだどのアカウントも使用していません(ポートはアカウントから参照されたときだけ割り当てられます — アカウントでこのノードを選んで保存すると、カーネルが自動でポートを開きます)", "还没有账号或服务线路使用它;在账号或更新设置中选中并保存后,内核会自动开端口": "まだアカウントやサービス経路で使われていません。アカウント設定または更新設定で選択して保存すると、カーネルが自動でポートを開きます。", "这是网关机器上的安装目录,留空使用默认位置。导入会复制文件并建立版本目录,不删除原下载文件。": "ゲートウェイ上のインストール先です。空欄なら既定の場所を使用します。ファイルをバージョン別フォルダーへコピーし、元のダウンロードファイルは削除しません。", "这条在 Clash Verge 里是停用的,本页启用不生效 —— 到 Clash Verge 里打开它": "この項目は Clash Verge 側で無効になっています。このページで有効にしても反映されません —— Clash Verge でオンにしてください", "这里只连接你提供的代理地址,不接管代理服务的安装与运行。": "指定されたプロキシアドレスへの接続のみ行い、プロキシサービスのインストールや実行は管理しません。", "连接成功": "接続成功", "连通性": "接続性", "连通性测试设置": "接続テスト設定", "选中的 {n} 条都是同步来的只读条目(Clash / 订阅),不能删除": "選択した {n} 件はすべて同期された読み取り専用エントリ(Clash / サブスク)で、削除できません", "选中的 {n} 条都来自 Clash Verge 同步,不能删除(请到 Clash Verge 里删)": "選択した {n} 件はすべて Clash Verge 同期由来のため削除できません(Clash Verge 側で削除してください)", "选中的代理用于{services};删除后这些线路将不可用,不会自动回退直连。": "選択したプロキシは{services}に使用されています。削除するとこれらの経路が使えなくなり、直接接続には自動でフォールバックしません。", "选择 YAML 文件…": "YAML ファイルを選択…", "选择内核文件…": "カーネルファイルを選択…", "选择目录…": "フォルダを選択…", "选项来自「网络代理」页(Clash Verge 同步的出口在这里可用;订阅节点要等内核起来才有端口)。选「直连」时连不上会自动借 Clash 混合端口重试一次;选定某条线路后只走它。": "選択肢は「ネットワークプロキシ」ページの内容です(Clash Verge から同期した出口はここで使えます。サブスクのノードはカーネル起動後にポートが付きます)。「直結」は接続に失敗すると Clash の混合ポートで一度だけ再試行し、経路を明示的に選ぶとそれのみを使用します。", "通过代理访问该网址,检查是否能收到 HTTP 响应。留空沿用网关默认值。": "プロキシ経由でこの URL にアクセスし、HTTP 応答を確認します。空欄の場合はゲートウェイの既定値を使用します。", "部分测试结果没能记下:{reason}": "一部のテスト結果を記録できませんでした:{reason}", "重启内核": "カーネルを再起動", "重新选择文件…": "ファイルを選び直す…", "需要干净的出口?": "きれいな出口が必要ですか?", "需要用户名和密码(可选)": "ユーザー名とパスワードが必要(任意)", "非直连": "システムプロキシ経由", "非直连代理": "システムプロキシを経由する", "非直连会先经过网关所在设备的系统代理,再连接到此代理;系统代理不可用时不会改走直连。": "ゲートウェイ端末のシステムプロキシを経由してから、このプロキシに接続します。システムプロキシが利用できない場合、直接接続には切り替えません。", "首次购买使用优惠码 AGENT2API25 享 75 折。": "初回購入はコード AGENT2API25 で 25% オフ。", "+ 新增代理": "+ プロキシを追加", "+ 新增订阅": "+ サブスクを追加", ",": "、", " 或 ": " または ", "Anthropic SDK 会自动携带版本头;手写 Messages 请求可使用 2023-06-01。/v1/models 收到该头或 x-api-key 时返回 Anthropic 列表形态。": "Anthropic SDK はバージョンヘッダーを自動付与します。手動の Messages リクエストは 2023-06-01 を指定できます。/v1/models はこのヘッダーまたは x-api-key があると Anthropic 形式の一覧を返します。", "Anthropic 业务错误结构示例": "Anthropic 業務エラー構造の例", "Anthropic 官方 SDK / Claude Code 使用的根地址:": "公式 Anthropic SDK / Claude Code 用のルートアドレス:", "Anthropic 标准要求显式填写正整数。网关对缺失或无效值补 8192,但上游模型的实际预算仍可能更低。": "Anthropic 標準では正整数の明示が必要です。ゲートウェイは省略・無効値を 8192 に補完しますが、上流モデルの予算はそれより低い場合があります。", "Antigravity 支持宽高比 1:1、2:3、3:2、3:4、4:3、4:5、5:4、9:16、16:9、21:9,尺寸会映射到原生 1K / 2K / 4K 档。请求最长边 ≤1792 为 1K,1793–3072 为 2K,3073–4096 为 4K;超过 4096 会被该提供商拒绝。": "Antigravity の比率は 1:1、2:3、3:2、3:4、4:3、4:5、5:4、9:16、16:9、21:9。サイズは原生 1K / 2K / 4K へ変換します。最長辺 ≤1792 は 1K、1793–3072 は 2K、3073–4096 は 4K、4096 超はこのプロバイダーが拒否します。", "Antigravity 的 size=auto 生成使用 1:1、1K;参考图编辑使用 1K 且不强制正方形。模型版本可能有更严格的输出限制;宽高比需接近支持值,不能任意指定像素尺寸。": "Antigravity の size=auto は生成時に 1:1・1K、参照編集時に正方形を強制せず 1K です。モデル版による追加制限があり、比率は対応値に近い必要があり、任意の画素数指定はできません。", "Base URL 填进客户端的「API 地址 / Base URL」栏;对话协议按客户端支持的类型三选一(Chat Completions / Responses / Anthropic Messages),三者共用同一套模型与账号池,可随时切换;鉴权用「网关 Key」页里任一启用 Key。": "Base URL はクライアントの「API アドレス / Base URL」欄に記入します。対話プロトコルはクライアントが対応している種類を三つ(Chat Completions / Responses / Anthropic Messages)の中から一つ選んでください。三者は同じモデルとアカウントプールを共有し、いつでも切り替えられます。認証には「ゲートウェイキー」ページで有効な Key をいずれか一つ使用します。", "Chat 流式成功通常以 data: [DONE] 收尾。需要同时处理 delta.content、思考字段和 delta.tool_calls;工具参数可能跨多个增量拼接。": "Chat の正常なストリームは通常 data: [DONE] で終了します。delta.content、推論フィールド、delta.tool_calls を処理し、複数デルタに分割されたツール引数を連結してください。", "Chat、Responses 和图片接口通常返回 error 对象,其中 message 是可读说明,type 是错误类别,code 与 upstream_code 按情况附带。Anthropic 业务错误使用 type=error 的信封;鉴权中间件、无效 JSON 或网关层错误也可能返回通用 error 形态。": "Chat、Responses、画像 API は通常 error オブジェクトを返します。message は説明、type は分類、code と upstream_code は任意です。Anthropic 業務エラーは type=error の形式ですが、認証、無効 JSON、ゲートウェイ層のエラーは汎用 error 形式の場合もあります。", "Claude Code / Anthropic SDK(token 计数:/v1/messages/count_tokens)": "Claude Code / Anthropic SDK(token カウント:/v1/messages/count_tokens)", "Claude Code / Anthropic SDK;模型与账号池和 OpenAI 入口共用。": "Claude Code / Anthropic SDK。OpenAI エンドポイントとモデル・アカウントプールを共有します。", "Codex / 新版 OpenAI SDK;无状态转发,历史由客户端携带。": "Codex / 新しい OpenAI SDK。ステートレス転送のため履歴はクライアントが送信します。", "GET /health 返回 status=ok 或 degraded。公网安全模式只返回简化探活信息;HTTP 200 或 status=ok 不代表所有提供商在线、账号有额度或图片模型可调用。": "GET /health は status=ok または degraded を返します。公開ネットワークの安全モードでは簡略な生存確認のみです。HTTP 200 や status=ok は、全プロバイダーの接続、残りクォータ、画像モデルの呼び出しを保証しません。", "GET /health、GET /v1/models 和网关临时图片下载不强制检查 Key。模型清单可在配 Key 前读取,但这不能证明 Key 正确;应以携带该 Key 的实际业务请求为准。": "GET /health、GET /v1/models、ゲートウェイの一時画像ダウンロードはキー必須ではありません。キー設定前にモデル一覧を読めても、そのキーが正しいことの証明にはなりません。実際の保護対象リクエストで確認してください。", "HTTP(S) 参考图由网关服务器下载,不携带网关 Key 或提供商凭证。外链必须能被网关无额外请求头访问;本机、内网、带用户名密码或不安全重定向地址会被拒绝。受保护图片建议直接上传文件。": "HTTP(S) 参照はゲートウェイがキー・プロバイダー認証情報なしで取得します。追加ヘッダーなしで取得可能な外部 URL が必要です。ローカル、内部ネットワーク、ユーザー名・パスワード付き、危険なリダイレクトは拒否します。保護画像は直接アップロードしてください。", "JSON 图片引用编辑请求": "JSON 画像参照の編集リクエスト", "JSON 图片生成请求": "JSON 画像生成リクエスト", "JSON 的 images 是对象数组,每项只能包含 image_url。接受完整 HTTP(S) URL、data:image/...;base64,...,或先前响应返回的完整网关临时图片链接;不接受裸 base64、相对路径、file_id 或本地文件路径。": "JSON の images は image_url のみを持つオブジェクト配列です。完全な HTTP(S) URL、data:image/...;base64,...、以前返された完全な一時画像 URL を受理します。裸の base64、相対パス、file_id、ローカルパスは非対応です。", "JSON 请求使用 application/json。图片编辑上传文件时使用 multipart/form-data;curl -F 会自动生成 boundary,不要手动覆盖此请求头。": "JSON は application/json、画像編集のファイル送信は multipart/form-data を使用します。curl -F は boundary を自動生成するので、このヘッダーを手動で上書きしないでください。", "Key 缺失、无效、停用,或上游认证失败。网关未收到 Key 时返回 model_api_key_required,无效 Key 返回 invalid_api_key;请检查请求头与「网关 Key」页。": "Key の不足・無効・無効化、または上流認証エラーです。Key 未指定は model_api_key_required、無効な Key は invalid_api_key を返します。リクエストヘッダーと「ゲートウェイキー」ページを確認してください。", "Key 缺失、无效、停用,或上游认证失败。网关鉴权失败通常为 invalid_api_key;检查请求头与「网关 Key」页,而不是仅重拉模型列表。": "キーの不足・無効・無効化、または上流認証エラーです。ゲートウェイ認証失敗は通常 invalid_api_key。モデル一覧の再取得だけでなく、ヘッダーと「ゲートウェイキー」ページを確認してください。", "LLM 请求": "LLM リクエスト", "Messages 响应结构": "Messages のレスポンス構造", "Messages 请求": "Messages リクエスト", "ModelScope 不支持 style、mask 与 input_fidelity;quality 仅接受省略、auto 或 standard,background 仅接受省略、auto 或 opaque,moderation 仅接受省略或 auto。风格与修改目标请写入 prompt。": "ModelScope は style、mask、input_fidelity に非対応です。quality は省略・auto・standard、background は省略・auto・opaque、moderation は省略・auto のみです。スタイルや変更目標は prompt に記述してください。", "ModelScope 使用官方异步任务接口,创建后只查询同一任务,不会为了等待结果重新提交。单次 n=1;size 可省略、设为 auto,或指定边长 64–2048 的 WIDTHxHEIGHT,具体型号可能进一步限制。": "ModelScope は公式の非同期タスク API を使用し、作成後は同じタスクを照会して再送信しません。n=1、size は省略・auto・辺長 64–2048 の WIDTHxHEIGHT が指定できます。モデルによる追加制限があります。", "OpenAI Python SDK 图片示例": "OpenAI Python SDK の画像例", "OpenAI SDK 的 base_url 填「接口地址」章节中以 /v1 结尾的 Base URL,不要填完整的 /chat/completions。Anthropic 官方 SDK 与 Claude Code 的 ANTHROPIC_BASE_URL 填网关根地址,不带 /v1;它们会自行追加 /v1/messages。其他客户端是否自动追加 /v1,以其地址栏说明为准。": "OpenAI SDK の base_url には「エンドポイントアドレス」の章にある /v1 で終わる Base URL を設定し、完全な /chat/completions URL は指定しません。公式 Anthropic SDK と Claude Code の ANTHROPIC_BASE_URL には /v1 を含まないゲートウェイのルートを指定します。SDK が /v1/messages を追加します。他のクライアントはアドレス欄の説明に従ってください。", "OpenAI SDK 的 base_url 填上方以 /v1 结尾的 Base URL,不要填完整的 /chat/completions。Anthropic 官方 SDK 与 Claude Code 的 ANTHROPIC_BASE_URL 填网关根地址,不带 /v1;它们会自行追加 /v1/messages。其他客户端是否自动追加 /v1,以其地址栏说明为准。": "OpenAI SDK の base_url には上記の /v1 で終わる Base URL を設定し、完全な /chat/completions URL は指定しません。公式 Anthropic SDK と Claude Code の ANTHROPIC_BASE_URL には /v1 を含まないゲートウェイのルートを指定します。SDK が /v1/messages を追加します。他のクライアントはアドレス欄の説明に従ってください。", "OpenAI 兼容客户端使用此地址;Anthropic 官方 SDK 使用下方说明中的网关根地址。": "OpenAI 互換クライアントにはこのアドレスを使用します。公式 Anthropic SDK には下記のゲートウェイルートアドレスを使用します。", "OpenAI 新协议(Codex、新版 SDK)": "OpenAI の新しいプロトコル(Codex、新版 SDK)", "Python:生成、编辑并保存图片": "Python:画像を生成・編集・保存", "Responses 使用 function_call / function_call_output 配对,Anthropic 使用 tool_use / tool_result 配对。协议转换会处理这些格式,但不会替客户端执行自定义函数。上游原生搜索等服务端工具是否可用取决于提供商,不能当成网关统一能力。": "Responses は function_call / function_call_output、Anthropic は tool_use / tool_result を対応付けます。形式は変換されますが、独自関数をゲートウェイが代わりに実行することはありません。上流の検索などのネイティブツールはプロバイダー依存で、統一機能ではありません。", "Responses 响应结构": "Responses のレスポンス構造", "Responses 请求": "Responses リクエスト", "SDK 示例使用的环境变量": "SDK 例で使用する環境変数", "Token 估算响应": "トークン推定レスポンス", "Token 数量估算": "トークン数の推定", "Token 自动续期": "トークン自動更新", "WorkBuddy 走官方图片接口:size 省略或设为 auto 时按 1024x1024 请求;该通道不接受 quality、style、background 与 moderation,请把风格与质量要求写进 prompt。参考图以 data URL 内联在 JSON 请求里发送(不是 multipart),模型 id 由上游目录下发,换版本时以 /v1/models 为准。": "WorkBuddy は公式の画像 API を使用します。size を省略または auto にした場合は 1024x1024 で要求します。この経路は quality、style、background、moderation を受け付けないため、スタイルと品質の指定は prompt に書いてください。参照画像は data URL として JSON リクエストにインラインで送信され(multipart ではありません)、モデル id は上流のカタログから配信されます。バージョンが変わったら /v1/models を確認してください。", "base64 图片响应结构": "base64 画像レスポンス構造", "chat 用于三种对话入口;image 用于 /v1/images/generations 和 /v1/images/edits。不要把图片模型提交给对话入口。": "chat は 3 種類の対話 API、image は /v1/images/generations と /v1/images/edits 用です。画像モデルを対話 API に送信しないでください。", "count_tokens 在本地估算,不调用上游 tokenizer;返回 input_tokens 和 estimated=true。数值用于上下文预算,不用于精确计费,尤其不应当作图片的真实 Token 用量。": "count_tokens は上流 tokenizer を呼ばずにローカル推定し、input_tokens と estimated=true を返します。コンテキスト予算用で、正確な課金計算、特に画像の実トークン数には使用しないでください。", "curl -F 自动生成 multipart boundary。不要额外设置 Content-Type: application/json 或手写无 boundary 的 multipart/form-data;prompt 使用 --form-string 可避免特殊字符被当作文件上传。": "curl -F が boundary を自動生成します。Content-Type: application/json や boundary なしの multipart/form-data を追加しないでください。prompt は --form-string を使うと特殊文字をファイル指定と誤認しません。", "response_format=b64_json 时返回不带 data URL 前缀的标准 base64。解码为二进制后保存;网页展示时自行加对应 MIME 类型前缀。": "response_format=b64_json は data URL 接頭辞なしの標準 base64 を返します。バイナリーにデコードして保存し、Web 表示時は対応 MIME 接頭辞を付けてください。", "response_format=url 不保证永久地址;网关临时链接与 AI 助手会话中的图片存储是两套机制,不能混用接口或有效期。": "response_format=url は永久アドレスを保証しません。一時ゲートウェイ URL とアシスタント会話画像の保存は別機構で、API や有効期間を混用できません。", "response_format=url 时返回。可能是提供商签名链接,也可能是网关临时下载链接;应直接使用返回值,不要自行拼下载 id。": "response_format=url 時に返します。プロバイダー署名 URL または一時ゲートウェイ URL です。返された値を使用し、ダウンロード id を自作しないでください。", "stream 默认 false;true 返回 Anthropic 事件流。stop_sequences 映射为停止序列,是否支持取决于上游。": "stream の既定は false、true は Anthropic イベントを返します。stop_sequences は停止シーケンスへマッピングされ、対応は上流次第です。", "usage 的 prompt_tokens、completion_tokens、total_tokens 表示用量,不等于统一货币价格。上游未提供时可能缺失或为 0。": "usage の prompt_tokens、completion_tokens、total_tokens は用量で、共通の通貨価格ではありません。上流が提供しない場合は省略または 0 になることがあります。", "✓ 支持 · ✗ 不支持 · — 无此概念 · ? 未声明": "✓ 対応 · ✗ 非対応 · — 対象外 · ? 未申告", "。一把启用的 Key 都没有时不鉴权(默认网关只监听 127.0.0.1;在设置页开启「局域网访问」后监听所有网卡,鉴权与安全闸门随之启用)。": "。有効な Key が一つもない場合は認証を行いません(既定ではゲートウェイは 127.0.0.1 のみをリッスンします。設定ページで「LAN アクセス」を有効にするとすべてのネットワークインターフェースをリッスンし、認証とセキュリティゲートも有効になります)。", "三种对话协议的流式错误需要检查事件内容与正常结束标记;HTTP 200 本身不足以证明成功。图片接口仅返回非流式 JSON。": "3 種類の対話ストリームではイベントと正常終了の標識を確認してください。HTTP 200 だけでは成功を証明できません。画像 API は非ストリーミング JSON のみです。", "上一章": "前の章", "上传一张或多张参考图,并用提示词描述保留内容与修改目标。": "1 枚以上の参照画像をアップロードし、保持する内容と変更目標を指示します。", "上传一张本地参考图": "ローカル参照画像を 1 枚アップロード", "上传多张参考图": "複数の参照画像をアップロード", "上传本地文件推荐 multipart/form-data;已经有图片 URL 或 base64 时可发送 application/json。除参考图字段外,参数与图片生成相同。": "ローカルファイルは multipart/form-data、画像 URL や base64 がある場合は application/json を使用できます。参照フィールド以外は画像生成と同じです。", "下一章": "次の章", "下表是网关接受的参数范围,不是所有提供商都支持的范围。生成与编辑共用这些字段,具体上游可能进一步拒绝数量、质量、风格、背景或尺寸。": "表はゲートウェイが受理する範囲で、全プロバイダー共通の対応範囲ではありません。生成と編集はこれらのフィールドを共有しますが、上流は数、品質、スタイル、背景、サイズをさらに制限する場合があります。", "下载并保存网关临时图片": "一時画像をダウンロードして保存", "下载返回原始图片二进制及 image/png、image/jpeg 或 image/webp Content-Type,不是 JSON。不存在或过期返回 404,响应使用 private, no-store 与 nosniff。": "JSON ではなく画像バイナリーと image/png、image/jpeg、image/webp の Content-Type を返します。不存在・期限切れは 404、private, no-store と nosniff を使用します。", "不强制鉴权;仅用于确认网关可访问,不保证模型或额度可用。": "認証は必須ではありません。ゲートウェイへの到達確認用で、モデルやクォータの利用可能性は保証しません。", "不强制鉴权;携带有效 Key 可查看该 Key 获准使用的模型。": "認証は必須ではありません。有効なキーを付けると、そのキーで利用可能なモデルに絞り込まれます。", "不携带 Anthropic 相关头时,模型接口返回 OpenAI 风格的 object=list、data 数组和 meta 摘要;携带 anthropic-version 或 x-api-key 时,返回 data、has_more、first_id、last_id,并保留能力扩展字段。": "Anthropic 関連ヘッダーがない場合、object=list、data 配列、meta を持つ OpenAI 形式です。anthropic-version または x-api-key がある場合は data、has_more、first_id、last_id を返し、機能拡張フィールドも保持します。", "不支持依赖服务端状态的 previous_response_id、conversation、托管提示词 prompt,以及 background=true;请由客户端保存并回传历史,不要调用未实现的 Responses 查询或删除接口。": "サーバー状態が必要な previous_response_id、conversation、管理された prompt、background=true は非対応です。履歴はクライアントで保存して再送信し、未実装の Responses 取得・削除 API を呼ばないでください。", "不要把 base64 图片塞回对话文本或日志,也不要将“请求超时”理解为“没有扣费”。如需连续编辑,保存结果文件后再作为下一次 image 上传。": "画像 base64 を対話本文やログに入れず、タイムアウトを未課金と解釈しないでください。連続編集では結果を保存して次回 image としてアップロードします。", "业务请求的 model 值。owned_by 表示目录条目的归属,不保证每次请求都由该提供商承载;同名模型与映射可能有多个路由。": "業務リクエストの model 値です。owned_by は一覧項目の所属を示し、各リクエストの処理担当を保証しません。同名モデルやマッピングには複数のルートがあり得ます。", "临时图片下载": "一時画像のダウンロード", "也可使用 x-api-key: YOUR_GATEWAY_KEY,常用于 Anthropic 客户端。两种鉴权头任选一种即可,不要填提供商账号令牌或面板登录令牌。": "Anthropic クライアントなどでは x-api-key: YOUR_GATEWAY_KEY も利用できます。認証ヘッダーはいずれか一方で構いません。プロバイダーのアカウントトークンや管理画面のログイントークンを使用しないでください。", "仅可省略或设为 stream=false、partial_images=0。当前不支持图片事件流、渐进图片或流式部分结果。未知参数会被拒绝,不会静默忽略。": "省略または stream=false、partial_images=0 のみです。画像イベント、漸進画像、ストリーム部分結果は非対応です。不明なパラメーターは黙って無視せず拒否します。", "仅在上游返回修改后的提示词时保留,不保证每个模型都有。": "上流が修正済みプロンプトを返した場合のみ保持し、全モデルで存在するとは限りません。", "仅在显式指定 output_format=jpeg 时支持,网关按 JPEG 质量参数编码。PNG、WebP 当前不支持此参数。": "output_format=jpeg を明示した場合のみ対応し、JPEG 品質設定でエンコードします。PNG と WebP はこのパラメーターに非対応です。", "仅用于响应返回的网关临时链接;{id} 必须替换为实际下载令牌。": "レスポンス内のゲートウェイ一時 URL 専用。{id} を実際のダウンロードトークンに置き換えてください。", "仍从当前网关目录选择对话模型,不要求模型名称一定以 claude 开头。具体能力以实际承载模型为准。": "現在のゲートウェイ一覧から対話モデルを選びます。モデル名が claude で始まる必要はなく、実際の処理モデルの能力に依存します。", "估算输入 Token 数量": "入力トークン数を推定", "使用 supports_image_editing=true 的图片模型。该接口是参考图编辑、重绘或合成,不是精确遮罩修补;当前不支持 mask 与 input_fidelity,也不支持 file_id。": "supports_image_editing=true の画像モデルを使用します。参照画像の編集、描き直し、合成用で、精密なマスク修復ではありません。mask、input_fidelity、file_id は非対応です。", "使用与 Chat 相同的对话模型 id 和 Key 授权规则。": "Chat と同じ対話モデル id とキーの許可規則を使用します。", "使用同一客户端生成与编辑,并将返回的 base64 保存为图片文件。": "同じクライアントで生成・編集し、返された base64 を画像ファイルに保存します。", "使用支持工具调用的模型。函数声明、调用结果配对与多模态请求示例见「看图与工具调用」章节。": "ツール対応モデルを使用します。関数宣言、呼び出しと結果の対応付け、マルチモーダルのリクエスト例は「画像理解とツール呼び出し」の章を参照してください。", "使用支持工具调用的模型。函数声明、调用结果配对与多模态请求示例见下一节。": "ツール対応モデルを使用します。関数宣言、呼び出しと結果の対応付け、マルチモーダルの例は次の節を参照してください。", "使用说明与兼容边界": "使用上の注意と互換性", "健康检查": "ヘルスチェック", "先前网关返回的 /v1/images/files/{id} 完整链接可在未过期时作为 JSON 参考图。不要把 AI 助手内部的 assistant-image:ID 当成对外接口图片 URL。": "以前ゲートウェイが返した完全な /v1/images/files/{id} URL は有効期限内なら JSON 参照に使用できます。アシスタント内部の assistant-image:ID を公開 API の画像 URL として使用しないでください。", "先确定网关地址、Key 和模型,再选择客户端支持的协议。": "ゲートウェイのアドレス、キー、モデルを確認してから、クライアントが対応するプロトコルを選択します。", "兼容 Anthropic 消息块与 SSE 事件,支持本地 Token 预算估算。": "Anthropic 内容ブロックと SSE イベントに対応し、ローカルでトークン予算を推定します。", "兼容 Responses 请求与事件格式,适合 Codex 等客户端;不是服务端会话存储。": "Codex など向けの Responses リクエスト・イベント互換。サーバー側の会話保存機能ではありません。", "内置 AI 助手已有 generate_images 与 edit_images 工具,可在助手设置中启用并按确认模式执行。外部 API 客户端不会自动获得这些工具;需要由客户端声明并实际调用图片接口。": "内蔵 AI アシスタントには generate_images と edit_images があります。アシスタント設定で有効にし、確認モードに従って実行します。外部 API クライアントに自動提供されるわけではなく、クライアント側でツールを宣言し画像 API を呼び出す必要があります。", "函数工具使用 Responses 的声明格式;工具结果以 function_call_output 携带相同 call_id。实际工具能力仍依赖模型与提供商。": "Responses 形式で関数を宣言し、結果は同じ call_id の function_call_output で返します。実際の対応はモデル・プロバイダーに依存します。", "函数工具声明包含 name、description、input_schema;结果在后续 user 消息的 tool_result 块中携带对应 tool_use_id。": "関数宣言は name、description、input_schema を含みます。後続 user メッセージの tool_result に対応する tool_use_id と結果を指定します。", "分别可能表示请求中断或请求过大。参考图过大时需缩小图片或减少数量,原样重试不会解决;中断的图片任务可能已经消耗额度。": "それぞれ中断・リクエスト過大などを示します。参照画像のサイズや数を減らしてください。同じ内容の再送信では解決せず、中断された画像処理でもクォータ消費済みの場合があります。", "分别控制输出上限与是否流式。stream 默认 false;true 返回 Responses 命名事件。": "出力上限とストリーミングを制御します。stream の既定は false、true は名前付き Responses イベントを返します。", "分别表示工具调用与思考能力。是否生效仍取决于实际承载模型、提供商和相关设置。": "それぞれツール呼び出し・推論への対応です。実際の動作は処理モデル、プロバイダー、設定にも依存します。", "分别请求思考档位与结构化输出;能力和可用取值依赖模型。不要因字段被接受就假定上游已经执行。": "それぞれ推論強度・構造化出力を要求します。機能と値はモデルに依存し、フィールドが受理されても上流で適用されたとは限りません。", "协议兼容不保证工具、思考、结构化输出、透明背景或每个尺寸都被所有提供商支持。先查看当前模型能力和插件版本,再核对请求日志的承载提供商与错误摘要。": "互換性はすべてのプロバイダーのツール、推論、構造化出力、透過背景、全サイズへの対応を保証しません。モデル能力とプラグイン版を確認し、ログ内の処理プロバイダーとエラー要約を確認してください。", "单图可用 image=@reference.png,多图重复提交 image[]。也兼容 images、images[] 与 image[0] 这类数字索引字段;普通参数不能重复提交。": "単一画像は image=@reference.png、複数は image[] を繰り返します。images、images[]、image[0] などの数値添字にも対応します。通常のパラメーターは重複不可です。", "单轮可以是字符串;多轮使用消息与工具项数组,客户端应携带必要历史。文本块使用 input_text,图片块使用 input_image。": "単一ターンは文字列、複数ターンは必要な履歴を含むメッセージ・ツール項目の配列です。テキストは input_text、画像は input_image を使用します。", "参考图编辑": "参照画像の編集", "参考图编辑;支持 multipart 文件上传或 JSON 图片引用。": "参照画像の編集。multipart ファイルアップロードまたは JSON 画像参照に対応。", "只支持这三种可解码图片格式,校验实际文件内容而不是仅看扩展名;单张最多 10 MiB,边长最多 8192。": "この 3 種のデコード可能画像のみです。拡張子だけでなく実際の内容を検証し、1 枚最大 10 MiB、辺長最大 8192 です。", "可用值为 auto、standard、hd、low、medium、high、xhigh、max。小浣熊与 Antigravity 仅接受省略、auto 或 standard;其他值是否有效取决于 Loomy 的具体模型。": "auto、standard、hd、low、medium、high、xhigh、max を受理します。Raccoon と Antigravity は省略、auto、standard のみで、他の値は Loomy のモデル次第です。", "可省略,或使用 auto、WIDTHxHEIGHT,例如 1024x1024。网关校验边长 1–8192,提供商可能进一步限制宽高比与分辨率,不保证精确像素输出。": "省略、auto、WIDTHxHEIGHT(例 1024x1024)を使用できます。辺長 1–8192 を検証しますが、プロバイダーは比率や解像度をさらに制限し、厳密な画素数は保証しません。", "可能是网关内部错误、上游异常、插件未接入、暂无可用账号、图片下载或编码失败。": "ゲートウェイ内部エラー、上流異常、プラグイン機能未連携、利用可能なアカウント不在、画像のダウンロード・エンコード失敗などです。", "可能是网关内部错误、上游异常、插件未接入、暂无可用账号、图片下载或编码失败。公网模式的 api_key_not_configured 表示必须先配置网关 Key。": "ゲートウェイ内部、上流異常、プラグイン能力不足、アカウント不在、画像ダウンロード・エンコード失敗などです。公開モードの api_key_not_configured は最初にゲートウェイキーを設定する必要があることを示します。", "可能附带实际输出编码、用量或点数。usage 与 points_consumed 取决于上游,缺失不代表免费;若未要求固定编码,不要默认所有图片都是 PNG。": "実エンコード、用量、ポイントなどを含む場合があります。usage と points_consumed がないことは無料を意味しません。形式を指定しなければすべて PNG とは限りません。", "可选的调用方用户标识,不是网关鉴权 Key,也不能用于指定账号或绕过 Key 的授权范围。是否传递与处理取决于提供商。": "任意の呼び出し元ユーザー識別子です。ゲートウェイキーではなく、アカウント指定やキー制限の回避には使えません。転送・処理はプロバイダーに依存します。", "启用": "有効", "图片响应与下载": "画像レスポンスとダウンロード", "图片响应创建时间,Unix 秒。不要与错误限额恢复字段 reset_at 的毫秒单位混用。": "レスポンス作成時刻、Unix 秒です。エラー復帰時刻 reset_at のミリ秒と混同しないでください。", "图片生成与共用参数": "画像生成と共通パラメーター", "图片生成与编辑": "画像生成と編集", "图片输入是理解图片,工具调用是由客户端执行动作;二者都需要模型能力支持。": "画像入力は画像の理解、ツール呼び出しはクライアントによる操作実行です。どちらもモデルの対応が必要です。", "在线模型列表": "オンラインモデル一覧", "在线模型列表指自动拉取上游目录;仅有静态模型清单不算在线支持。": "オンラインモデル一覧は上流のカタログを自動取得できることを指します。固定リストのみの場合はオンライン対応に含みません。", "地址速查与请求示例使用当前网关地址。从其他设备访问时,127.0.0.1 指向那台设备自身,必须换成实际可达的网关地址。": "アドレス一覧とリクエスト例は現在のゲートウェイアドレスを使用します。別の端末からアクセスする場合、127.0.0.1 はその端末自身を指すため、実際にゲートウェイへ到達できるアドレスに変更してください。", "填进客户端的「API 地址 / Base URL」": "クライアントの「API アドレス / Base URL」に記入", "声明函数工具的请求体": "関数ツールを宣言するリクエスト本文", "复制地址": "アドレスをコピー", "复制示例": "例をコピー", "多图有顺序意义:在 prompt 中明确“第 1 张是主体,第 2 张是风格参考”等关系。编辑不保证逐像素保真,要求保留的主体、文字或布局应明确描述。": "画像の順序には意味があります。prompt に「1 枚目が主体、2 枚目がスタイル」などを記述します。画素単位の保存は保証されず、保持する主体、文字、レイアウトは明示してください。", "多数 OpenAI 兼容客户端的默认协议": "多くの OpenAI 互換クライアントの既定プロトコル", "字段 / 状态": "フィールド / ステータス", "字段与限制": "フィールドと制限", "安装并使用支持 Images 参数的 OpenAI Python SDK。先按接入章节设置 GATEWAY_KEY 与 IMAGE_MODEL_ID,编辑前确认该模型支持参考图,并准备本地 reference.png。": "Images パラメーター対応の OpenAI Python SDK を使用します。接続節に従い GATEWAY_KEY と IMAGE_MODEL_ID を設定し、編集対応を確認してローカル reference.png を準備してください。", "客户端自动拉取可用模型;不受鉴权限制,配 Key 之前就能拉": "クライアントが利用可能なモデルを自動で取得します。認証の制限を受けないため、Key を設定する前でも取得できます", "对话协议": "対話プロトコル", "对话协议与上下文预算": "対話プロトコルとコンテキスト予算", "对话协议(按客户端支持的类型选一行)": "対話プロトコル(クライアントが対応する種類の行を一つ選択)", "对话模型看图请求": "対話モデルで画像を理解するリクエスト", "小浣熊与 Antigravity 不支持此字段,请在 prompt 中描述风格;Loomy 转交上游,由模型决定是否支持。": "Raccoon と Antigravity は非対応です。スタイルは prompt に書いてください。Loomy は上流へ渡し、対応はモデル次第です。", "小浣熊与 Antigravity 仅接受省略、auto 或 opaque;不保证所有模型都能生成透明背景。文件转码不会自动抠图。": "Raccoon と Antigravity は省略、auto、opaque のみです。全モデルが透過背景に対応するわけではなく、ファイル変換は背景を除去しません。", "小浣熊与 Antigravity 仅接受省略或 auto。该字段不保证上游降低审核强度,内容政策拒绝不会自动重试。": "Raccoon と Antigravity は省略または auto のみです。上流の審査緩和は保証せず、コンテンツポリシー拒否は自動再試行しません。", "小浣熊使用 raccoon-image;Loomy 使用目录中的 kind=image 模型;Antigravity 使用目录中的 gemini-*-image 模型;ModelScope 使用已确认支持的 Qwen-Image、Z-Image 或 Qwen-Image-Edit 型号;WorkBuddy 使用目录中带 text-to-image 或 image-to-image 标签的模型,例如 hunyuan-image-alpha 与 hunyuan-image-alpha-edit。实际 model 值以当前 /v1/models 为准,不要直接复制官方 API 的默认模型名。": "Raccoon は raccoon-image を使用します。Loomy はカタログの kind=image モデル、Antigravity はカタログの gemini-*-image モデル、ModelScope は対応が確認されている Qwen-Image、Z-Image、Qwen-Image-Edit モデルを使用します。WorkBuddy はカタログで text-to-image または image-to-image タグが付いたモデル(例: hunyuan-image-alpha、hunyuan-image-alpha-edit)を使用します。実際の model 値は現在の /v1/models を正とし、各社 API の既定モデル名をそのまま使わないでください。", "展开目录": "目次を開く", "工具服务 API": "ツールサービス API", "工具服务 API 文档": "ツールサービス API ドキュメント", "工具服务 API 是网关对外的固定接口,路径以 /api/web-search 开头;不属于 /v1 对话协议,也不是管理面板的管理接口,鉴权同样使用网关 Key。": "ツールサービス API はゲートウェイが外部公開する固定インターフェースで、パスは /api/web-search で始まります。/v1 の対話プロトコルではなく、管理パネルの管理 API でもありません。認証には同じくゲートウェイ Key を使用します。", "已实现,待实测": "実装済み・実測待ち", "已实现,待实测:仅表示代码已接入,尚未通过真实账号验证。": "実装済み・実測待ち:コードの連携のみを示し、実アカウントでは未検証です。", "建议显式填写图片模型 id。省略时从当前 Key 可用目录中选择支持本次操作的图片模型,不使用对话默认模型;没有对应能力模型时返回 503。": "画像モデル id を明示してください。省略時はキーの利用可能一覧から今回の操作に対応するモデルを選択し、対話既定モデルは使用しません。対応モデルがない場合は 503 です。", "待实测": "実測待ち", "必填。使用 user / assistant 角色;content 可为字符串或 text、image、tool_use、tool_result 等内容块。": "必須。user / assistant 役割を使用します。content は文字列または text、image、tool_use、tool_result などのブロックです。", "必填。包含 role 与 content;常见角色为 system、user、assistant,工具结果使用 tool。文本可直接使用字符串,多模态使用内容块数组。": "必須。role と content を含みます。通常は system、user、assistant、ツール結果は tool です。テキストは文字列、マルチモーダルは内容ブロック配列を使用します。", "必填且不能为空,最多 32000 个字符。描述主体、构图、风格和修改目标;当前不支持 mask,编辑范围也应在提示词中说明。": "必須かつ空不可、最大 32000 文字。主体、構図、スタイル、変更内容を記述します。mask は非対応のため編集範囲も指示内で説明してください。", "执行工具后回传结果的请求体": "実行したツール結果を返すリクエスト本文", "找到 {count} 个章节": "{count} 件の章が見つかりました", "排错与限制": "トラブルシューティングと制限", "接入与鉴权": "接続と認証", "接入指南": "接続ガイド", "接入指南与接口参考": "接続ガイドと API リファレンス", "接口参考目录": "API リファレンス目次", "接口地址": "エンドポイントアドレス", "推荐使用 Authorization: Bearer YOUR_GATEWAY_KEY;Key 来自「网关 Key」页,并且必须处于启用状态。": "Authorization: Bearer YOUR_GATEWAY_KEY を推奨します。「ゲートウェイキー」ページから有効なキーを取得してください。", "推荐显式指定当前目录中的对话模型 id。省略时尝试网关默认模型;默认选择也受该 Key 的授权范围限制。": "現在の一覧の対話モデル id を明示することを推奨します。省略時はゲートウェイの既定モデルを試しますが、キーの許可範囲に従います。", "描述输入与输出模态,例如 text、image、video。字段缺失不表示自动支持其他文件、音频或服务端上传接口。": "text、image、video などの入出力モダリティです。フィールドがないことは、他のファイル、音声、サーバーアップロード API への対応を意味しません。", "提供商能力": "プロバイダー機能", "提供商能力适配表": "プロバイダー機能対応表", "搜索文档": "ドキュメントを検索", "搜索文档、参数或接口…": "文書、パラメーター、API を検索…", "收起全部": "すべて折りたたむ", "收起目录": "目次を閉じる", "文本生成图片;JSON 请求,非流式返回 base64 或下载链接。": "テキストから画像を生成。JSON を送信し、非ストリーミングの base64 またはダウンロード URL を受け取ります。", "文档内容": "ドキュメント", "文档目录": "ドキュメント目次", "无此概念": "対象外", "映射为思考档位与结构化输出请求;支持范围以目标模型为准。": "推論強度・構造化出力へマッピングします。対応範囲は対象モデルに依存します。", "未声明表示插件没有提供明确结论,不等于不支持。": "未申告はプラグインが明確な結論を提供していないことを意味し、非対応とは限りません。", "未声明表示网关本体或插件没有提供明确结论,不等于不支持。": "未宣言はゲートウェイ本体やプラグインが明確な結論を提供していないことを意味し、非対応とは限りません。", "本体订阅": "本体のサブスクリプション", "本地上下文预算估算,返回 estimated=true;不是上游精确分词。": "ローカルでコンテキスト予算を推定し estimated=true を返します。上流の正確なトークン分割ではありません。", "本机免鉴权模式没有启用 Key 时可调用;启用任意 Key 后,受保护接口都要携带有效 Key。公网安全模式没有配置 Key 时会拒绝受保护的 /v1 请求,并返回 503 api_key_not_configured。": "ローカルの認証なしモードでは有効なキーがない場合に呼び出せます。キーを有効にすると保護対象 API に有効なキーが必要です。公開ネットワークの安全モードでキーが未設定の場合、保護対象の /v1 リクエストは 503 api_key_not_configured で拒否されます。", "本页只说明实际提供的接口,不等于完整复刻 OpenAI / Anthropic 服务。未列出的 Files、Batch、图片 variations、服务端会话存储等端点不要假定可用。": "このページは実装済み API の説明で、OpenAI / Anthropic サービス全体の再現ではありません。記載のない Files、Batch、画像 variations、サーバー会話保存 API が利用できると仮定しないでください。", "本页说明对外的 /v1 接口,不是管理面板的 /api 接口。三种对话协议共用模型目录、模型映射、账号池和网关 Key,但请求与响应格式不同。": "このページは公開 /v1 API の説明です。管理画面の /api API ではありません。3 種類の対話プロトコルはモデル一覧、モデルマッピング、アカウントプール、ゲートウェイキーを共有しますが、リクエストとレスポンス形式は異なります。", "查看当前网关的客户端地址和各接口路径,一键复制后即可使用。": "現在のゲートウェイのクライアント用アドレスと各 API パスを確認し、コピーして使用できます。", "根据文字提示生成图片。请求使用 JSON,生成与编辑均只支持非流式响应。": "テキスト指示から画像を生成します。JSON を使用し、生成・編集ともに非ストリーミングのみです。", "检查网关是否可访问": "ゲートウェイへの到達確認", "模型不存在、已关闭或不在 Key 授权范围,常附 model_not_found;也可能是路径错误,或临时图片下载链接已过期。": "モデルが存在しない、無効、キーの許可範囲外などで、通常 model_not_found が付きます。誤ったパスや一時画像 URL の期限切れの場合もあります。", "模型列表": "モデル一覧", "模型发现与健康检查": "モデル検出とヘルスチェック", "模型清单": "モデルリスト", "模型清单与健康检查": "モデル一覧とヘルスチェック", "模型清单反映当前账号、模型启停与映射配置。不带 Key 时可读取公开清单;携带 Key 时必须有效,返回内容按该 Key 的授权范围过滤,无效 Key 返回 401。": "モデル一覧には現在のアカウント、モデルの有効状態、マッピングが反映されます。Key なしでは公開一覧を取得できます。Key を付ける場合は有効なものが必要で、許可範囲に絞り込まれます。無効な Key は 401 を返します。", "模型清单反映当前账号、模型启停与映射配置;携带有效网关 Key 时进一步按该 Key 的授权范围过滤。不带 Key 或 Key 无效时仍可读取未按该 Key 收窄的清单。": "モデル一覧には現在のアカウント、モデルの有効・無効、マッピングが反映されます。有効なキーがあればさらにその許可範囲で絞り込みます。キーなし・無効なキーの場合、そのキーによる絞り込みは行いません。", "模型清单结构示例": "モデル一覧の構造例", "模型调用始终需要启用且可用的网关 API Key,即使只在本机使用也不能免鉴权。管理员登录会话只用于管理面板,不能代替模型调用的 Key。": "モデル呼び出しには常に有効で利用可能なゲートウェイ API Key が必要です。ローカル利用でも認証は省略できません。管理者セッションは管理画面専用で、モデル呼び出しの Key を代替できません。", "每把 Key 的可用模型、可用提供商限制同样适用于生图和编辑图。模型名称使用 /v1/models 中的 id 或已配置的映射名,不要直接使用展示名称。": "キーごとのモデル・プロバイダー制限は画像生成と編集にも適用されます。model には /v1/models の id または設定済みマッピング名を使用し、表示名を直接使用しないでください。", "没有找到匹配的文档": "一致するドキュメントがありません", "流式以 message_start 开始,经 content_block_start / content_block_delta / content_block_stop,最终 message_delta 与 message_stop 收尾;不要按 Chat 的 [DONE] 规则解析。": "message_start から開始し、content_block_start / content_block_delta / content_block_stop を経て message_delta と message_stop で終了します。Chat の [DONE] 規則で解析しないでください。", "流式包含 response.created、response.output_text.delta 和最终 response.completed 等事件;错误可能以 response.failed 结束。输出预算不足时检查 incomplete 状态与 incomplete_details。": "ストリームには response.created、response.output_text.delta、最終 response.completed などがあります。エラーは response.failed で終わる場合があります。出力予算不足時は incomplete と incomplete_details を確認してください。", "流式对话请求": "ストリーミング対話リクエスト", "流式开始后 HTTP 状态码无法再改;即使已经收到 200,也要检查流内错误、结束原因及是否正常收尾,不能把断流视为成功。": "ストリーム開始後は HTTP ステータスを変更できません。200 を受信してもストリーム内エラー、終了理由、正常な終了を確認し、切断を成功扱いしないでください。", "流式用量可请求 include_usage=true;最终是否返回用量取决于上游,不应假设每个增量都有 usage。": "include_usage=true でストリーミング用量を要求できます。最終用量の有無は上流次第で、各デルタに usage があるとは限りません。", "清除搜索": "検索をクリア", "点击章节展开参数、示例和兼容边界;示例只供复制,不会在本页发起模型请求或消耗额度。": "節を開くとパラメーター、例、互換性の境界を確認できます。例はコピー専用で、このページからモデルを呼び出したりクォータを消費したりしません。", "生图可能消耗账号额度。先使用 n=1 和较小尺寸确认能力,内容政策拒绝或结果不确定时不要自动重复提交。": "画像生成はクォータを消費する場合があります。まず n=1 と小さなサイズで確認し、ポリシー拒否や結果不明時に自動再送信しないでください。", "生成、编辑与对话接口共用网关 Key;完整鉴权规则、模型能力和请求示例见下方章节。": "画像生成・編集・対話 API はゲートウェイキーを共有します。詳しい認証規則、モデル能力、リクエスト例は下記の節を参照してください。", "生成、编辑与对话接口共用网关 Key;鉴权规则、模型能力和请求示例可从文档目录查阅。": "画像生成・編集・対話 API はゲートウェイキーを共有します。認証規則、モデル能力、リクエスト例はドキュメント目次から参照してください。", "生成与编辑返回同一结构;base64 适合直接保存,URL 适合短期获取。": "生成と編集は同じ構造を返します。base64 は直接保存、URL は短期取得に適しています。", "用于请求思考配置或档位,由网关映射到目标模型;不保证所有 Anthropic 原生特性在跨协议转发时完全等价。": "推論設定や強度を対象モデルへマッピングします。プロトコルをまたぐ転送ですべての Anthropic ネイティブ機能が完全に等価になるとは限りません。", "的 Key:请求带 ": "な Key をいずれか一つ認証に使用:リクエストに ", "目前小浣熊、Loomy、Antigravity、ModelScope、WorkBuddy 已接入图片生成;Loomy、Antigravity、ModelScope 与 WorkBuddy 同时接入参考图编辑,小浣熊暂不支持编辑。需要当前提供商插件包含对应能力,并且账号、模型和 Key 授权可用。": "現在、Raccoon、Loomy、Antigravity、ModelScope、WorkBuddy が画像生成に対応しています。Loomy、Antigravity、ModelScope、WorkBuddy は参照画像の編集にも対応していますが、Raccoon は編集に未対応です。プロバイダープラグインが該当機能を含み、アカウント・モデル・ゲートウェイ Key の認可が利用可能である必要があります。", "目录声明的上下文与最大输出预算,可能省略。预算和余额不是同一概念,也不能替代上游的实际限制。": "一覧が宣言するコンテキスト・最大出力予算で、省略される場合があります。トークン予算は残高ではなく、上流の実際の制限を上書きしません。", "看图与工具调用": "画像理解とツール呼び出し", "看图请求使用对话模型,并确认 supports_images=true。Chat 使用 text 与 image_url 内容块,图片值可为上游支持的 HTTP(S) URL 或 data URL;可用格式与大小取决于目标模型。「参考图编辑」章节的上传限制不应直接套用到所有对话模型。": "画像理解には supports_images=true の対話モデルを使用します。Chat は text と image_url ブロックを使い、上流が対応する HTTP(S) URL または data URL を指定します。形式とサイズは対象モデル次第です。「参照画像の編集」の章にあるアップロード制限がすべての対話モデルに適用されるわけではありません。", "看图请求使用对话模型,并确认 supports_images=true。Chat 使用 text 与 image_url 内容块,图片值可为上游支持的 HTTP(S) URL 或 data URL;可用格式与大小取决于目标模型。下方编辑图的上传限制不应直接套用到所有对话模型。": "画像理解には supports_images=true の対話モデルを使用します。Chat は text と image_url ブロックを使い、上流が対応する HTTP(S) URL または data URL を指定します。形式とサイズは対象モデル次第で、下記の編集アップロード制限がすべての対話モデルに適用されるわけではありません。", "示例仅供复制,不会在本页发起请求或消耗额度。": "例はコピー専用です。このページからリクエストを送信したり、クォータを消費したりしません。", "示例显式设置 max_retries=0,避免 SDK 对超时或 5xx 自动重新提交收费任务;timeout=300.0 仅是客户端等待示例,不会改变网关或上游的超时配置。": "例は max_retries=0 を明示し、タイムアウト・5xx 時の SDK の有料タスク自動再送を防ぎます。timeout=300.0 は待機時間の例だけで、ゲートウェイや上流の設定は変更しません。", "章节导航": "章のナビゲーション", "类型 / 范围": "型 / 範囲", "系统说明是顶层字段,不要放进 messages 的 system 角色;支持文本或 text 块数组。": "システム指示はトップレベルのこのフィールドに指定し、messages の system 役割には入れません。文字列または text ブロック配列に対応します。", "系统说明,对应 Chat 的 system 消息;需要时每次请求重新携带。": "Chat の system メッセージに対応するシステム指示です。必要なら毎回送信してください。", "结合 HTTP 状态、错误内容与请求日志判断问题;不要盲目重试收费请求。": "HTTP ステータス、エラー内容、リクエストログで原因を判断し、有料リクエストを無条件に再試行しないでください。", "编辑请求上传总大小最多 16 MiB。参考图转为 data URL 后,内联图片与最终 JSON 请求还受 14 MiB 上限;base64 约增加三分之一体积,因此多张各小于 10 MiB 也可能超限。": "編集アップロード全体は最大 16 MiB。data URL 化後の内蔵画像と最終 JSON は 14 MiB 制限も受けます。base64 は約 3 分の 1 増えるため、各画像が 10 MiB 未満でも合計超過する場合があります。", "网关临时 URL 响应结构": "ゲートウェイ一時 URL レスポンス構造", "网关临时下载不要求 Authorization,链接中的随机令牌就是访问凭据,任何拿到链接的人都能下载。请将链接视为敏感信息,重要结果及时保存,不要当作长期文件存储。": "一時ダウンロードは Authorization 不要です。URL 内のランダムトークンが認証情報で、リンクを知る人はダウンロードできます。機密として扱い、重要な結果はすぐ保存し長期保存先にしないでください。", "网关临时图片仅保存在内存,生成后 1 小时过期,网关重启后立即失效。缓存总容量 128 MiB;缓存满时会返回错误并建议改用 b64_json。上游签名链接的有效期由提供商决定。": "一時画像はメモリー内のみで 1 時間後に期限切れとなり、再起動ですぐ消えます。総容量 128 MiB で、満杯なら b64_json の利用を案内するエラーを返します。上流署名 URL の有効期間はプロバイダーが決めます。", "网关内置的安全重试与客户端 SDK 的重试是两层独立行为。图片客户端建议关闭自动重试;即使网关已停止重试,SDK 仍可能重新提交整条请求。": "ゲートウェイの安全再試行と SDK の再試行は独立しています。画像クライアントは自動再試行を無効にしてください。ゲートウェイが再試行を停止しても SDK が全リクエストを再送する場合があります。", "网关可将实际图片转换为指定文件编码。省略时保留上游图片格式;需要固定扩展名时建议显式填写。JPEG 无法保留透明通道。": "実際の画像を指定エンコードへ変換できます。省略時は上流形式を保持し、固定拡張子が必要なら明示してください。JPEG は透過を保持できません。", "网关始终无状态,响应中的 store=false。即使请求 store=true,也不会保存可供后续检索的 Responses 对象。": "ゲートウェイは常にステートレスで store=false を返します。store=true を送信しても、後で取得できる Responses オブジェクトは保存されません。", "网关接受 1–10,默认 1;Antigravity 与 ModelScope 仅支持 n=1。上游返回数量不足时网关报错,不会为了凑数再次调用图片生成。": "ゲートウェイは 1–10、既定 1。Antigravity と ModelScope は n=1 のみです。上流の返却数が不足した場合はエラーとし、枚数を満たすための再生成はしません。", "网关接受 1–10,默认 1;Antigravity 仅支持 n=1。上游返回数量不足时网关报错,不会为了凑数再次调用图片生成。": "ゲートウェイは 1–10、既定 1。Antigravity は n=1 のみです。上流の返却数が足りない場合はエラーとなり、枚数を満たすために再生成しません。", "网关最多接受 16 张参考图。Antigravity 的 gemini-2.5-* 模型最多 3 张,其他当前接入的 Antigravity 图片模型最多 14 张;Loomy 还可能受上游模型限制。": "最大 16 枚です。Antigravity gemini-2.5-* は 3 枚、それ以外の現在対応する Antigravity 画像モデルは 14 枚までです。Loomy は上流モデルの追加制限もあり得ます。", "网关最多接受 16 张参考图。Antigravity 的 gemini-2.5-* 模型最多 3 张,其他当前接入的 Antigravity 图片模型最多 14 张;ModelScope 接受 1–3 张参考图;Loomy 还可能受上游模型限制。": "参照画像は最大 16 枚です。Antigravity の gemini-2.5-* は 3 枚、他の対応済み画像モデルは 14 枚まで。ModelScope は 1–3 枚、Loomy は上流モデルの追加制限があり得ます。", "网关需要下载或转换输出时,单张图片最多 32 MiB、边长最多 8192,并使用有界解码。请求 output_format 会按实际图片转码,而不是只修改文件扩展名。": "出力を取得・変換する場合、1 枚最大 32 MiB、辺長最大 8192 で、制限付きデコードを使用します。output_format は拡張子だけでなく実際の画像を変換します。", "网络搜索与网页抓取的 REST 接口,使用网关 Key 鉴权;不属于 /v1 对话协议。": "ウェブ検索とウェブページ取得の REST インターフェース。ゲートウェイ Key で認証し、/v1 の対話プロトコルには含まれません。", "能力由当前插件版本申报,表示适配支持情况,不代表账号额度或当前可用性。": "機能はインストール済みのプラグインが申告します。連携の対応状況を示し、アカウントのクォータや現在の利用可否を示すものではありません。", "能力由当前网关本体或插件版本申报,表示适配支持情况,不代表账号额度或当前可用性。": "機能は現在のゲートウェイ本体またはプラグインが申告します。連携の対応状況を示し、アカウントのクォータや現在の利用可否を示すものではありません。", "自定义函数工具通过 tools 声明。模型返回 tool_calls 后,客户端校验参数、执行函数,再把 assistant 工具调用和 role=tool 结果一起放入下一次 messages;tool_call_id 必须对应,不能遗漏并行调用的结果。": "tools で独自関数を宣言します。tool_calls が返ったらクライアントが引数を検証して実行し、assistant の呼び出しと role=tool の結果を次回 messages に含めます。tool_call_id を一致させ、並列呼び出しの結果を省略しないでください。", "表示当前目录与插件声明支持参考图编辑。编辑前检查此字段,不要仅凭模型名称包含 image 判断。": "現在の一覧とプラグインが参照画像編集への対応を宣言していることを示します。編集前に確認し、モデル名に image があることだけで判断しないでください。", "表示支持图片输入,不等于支持生成图片。对话模型可用于看图;编辑模型也可能声明此字段。": "画像入力への対応であり、画像生成への対応ではありません。対話モデルは画像理解に使用でき、編集モデルもこのフィールドを宣言する場合があります。", "表示目录条目属于生图模型。调用还需要当前插件已接入生成能力,且存在获准使用的可用账号。": "画像生成モデルの一覧項目であることを示します。呼び出しには、現在のプラグインの生成対応と、許可された利用可能なアカウントが必要です。", "试试接口路径、参数名或其他关键词。": "API パス、パラメーター名、別のキーワードで検索してください。", "详细接口参考": "詳細 API リファレンス", "请求与响应示例": "リクエストとレスポンスの例", "请求参数、模型能力或协议形态不支持。图片相关 code 可能为 invalid_image_input、image_generation_not_supported 或 image_editing_not_supported;修改请求后再发。": "パラメーター、モデル能力、プロトコル形式が非対応です。画像関連 code は invalid_image_input、image_generation_not_supported、image_editing_not_supported などです。修正してから再送信してください。", "请求示例适用于 Bash / Git Bash。YOUR_GATEWAY_KEY、CHAT_MODEL_ID、IMAGE_MODEL_ID 和图片占位地址都需要替换;返回示例仅展示结构,能力位、Token 数量和时间戳不是当前网关的实测值。": "リクエスト例は Bash / Git Bash 用です。YOUR_GATEWAY_KEY、CHAT_MODEL_ID、IMAGE_MODEL_ID と画像の仮 URL を置き換えてください。レスポンス例は構造の例示であり、機能フラグ、トークン数、時刻は現在のゲートウェイの実測値ではありません。", "读取提供商能力表失败:{error}": "プロバイダー機能の読み込みに失敗しました:{error}", "读取插件能力表失败:{error}": "プラグイン機能の読み込みに失敗しました:{error}", "读取获准使用的模型": "許可されたモデルを取得", "输出 Token 上限,具体支持字段和预算以模型为准。不要同时设置冲突的上限;达到上限时 finish_reason 可能为 length。": "最大出力トークン数。対応フィールドと予算はモデルに依存します。矛盾する上限を同時に指定しないでください。上限到達時は finish_reason が length になる場合があります。", "通用对话入口,适合大多数 OpenAI 兼容客户端。": "多くの OpenAI 互換クライアント向けの汎用対話 API。", "通用错误结构示例": "汎用エラー構造の例", "通过能力字段选择正确模型;健康检查只说明网关可访问。": "機能フィールドから適切なモデルを選択します。ヘルスチェックは到達可能性のみを確認します。", "遇到“图片请求可能已消耗额度,未自动重试”或“上游已生成”等提示,先核对请求日志与上游结果。客户端超时、断线或取消不代表上游撤销任务;自动重发可能再次扣费。": "画像でクォータ消費の可能性があり自動再試行しなかった、または上流で生成済みという警告があれば、先にログと上流結果を確認してください。タイムアウト・切断・取消は上流処理の撤回を意味せず、再送信で再課金される場合があります。", "采样参数,是否支持和有效范围由提供商与模型决定。协议兼容不代表每家上游都支持全部调参项。": "サンプリング設定。対応状況と範囲はプロバイダー・モデルに依存します。プロトコル互換はすべての調整項目への対応を保証しません。", "鉴权用「网关 Key」页里任一": "「ゲートウェイキー」ページで", "错误、限额与兼容边界": "エラー・制限・互換性の境界", "限流、额度不足或当前无可用账号窗口。能确定恢复时间时可能返回 Retry-After(秒)、reset_at(Unix 毫秒)与 reset_at_text;这些字段不是每次都有。": "レート制限、クォータ不足、利用可能なアカウント枠がない状態です。復帰時刻が分かる場合は Retry-After(秒)、reset_at(Unix ミリ秒)、reset_at_text が返る場合がありますが、常にあるわけではありません。", "非流式响应读取 choices[].message;流式响应读取 choices[].delta。每次请求由客户端携带 messages 历史,网关不会根据上一条响应 id 自动恢复对话。": "非ストリーミングは choices[].message、ストリーミングは choices[].delta を読みます。毎回 messages の履歴を送信してください。前のレスポンス id から会話を自動復元することはありません。", "非流式对话响应": "非ストリーミング対話レスポンス", "非流式对话请求": "非ストリーミング対話リクエスト", "非流式返回 object=response、status、output 数组与 output_text。output 也可能包含 reasoning 或 function_call,不能只读取数组第一项。": "非ストリーミングは object=response、status、output 配列、output_text を返します。output は reasoning や function_call も含むため、最初の要素だけを読まないでください。", "非流式返回 type=message、content 块数组、stop_reason 与 usage。content 可能同时包含文本、思考与工具调用,应该按 type 遍历。": "非ストリーミングは type=message、content ブロック、stop_reason、usage を返します。テキスト・推論・ツール呼び出しが混在するため type ごとに処理してください。", "领取类": "報酬の取得", "默认 b64_json,返回可直接解码的图片 base64;url 返回上游签名链接或网关临时下载链接。不是图片文件编码。": "既定の b64_json はデコード可能な base64、url は上流署名 URL またはゲートウェイ一時 URL を返します。画像ファイルのエンコード形式ではありません。", "默认 false,返回完整 JSON;true 返回 text/event-stream。curl 查看流式输出时添加 -N,客户端应按完整 SSE 事件解析而不是按网络分块解析。": "既定は false で完全な JSON を返し、true は text/event-stream を返します。curl は -N を指定し、ネットワーク分割単位ではなく完全な SSE イベントを解析してください。", "24 小时总用量": "24時間の総使用量", "24 小时整体命中率": "24時間全体のヒット率", "24 小时请求数": "24時間のリクエスト数", "30 天": "30 日間", "7 天": "7 日間", "API Key 分布": "API Key 別内訳", "Token": "Token", "Top 提供商": "Top プロバイダー", "Top 模型": "Top モデル", "Top 账号": "Top アカウント", "{date} · {tokens} tokens · {n} 次请求": "{date} · {tokens} tokens · リクエスト {n} 件", "{date} · 无请求": "{date} · リクエストなし", "{model}:{tokens} tokens": "{model}:{tokens} tokens", "{m}月": "{m}月", "{m}月{d}日 周{wd}": "{m}月{d}日({wd})", "{name} · {tokens} tokens · {n} 次请求 · {pct}": "{name} · {tokens} tokens · リクエスト {n} 件 · {pct}", "{name}:{tokens} tokens · 占 {pct}%": "{name}:{tokens} tokens · 占有率 {pct}%", "{n} 家提供商": "プロバイダー {n} 件", "{n} 次请求": "リクエスト {n} 件", "{n} 项": "{n} 項目", "{n} 项低于 {threshold}%,已合并为“其他”": "{threshold}% 未満の {n} 項目を「その他」にまとめています", "{title}显示数量": "{title}の表示件数", "{tokens} tokens · 占 {pct}": "{tokens} tokens · 占有率 {pct}", "…还有 {n} 个模型": "…ほか {n} 件のモデル", "…还有 {n} 项": "…ほか {n} 項目", "一": "月", "三": "水", "二": "火", "五": "金", "仅在饼图合并,右侧列表完整保留每个项目": "円グラフ内だけで集約し、右の一覧にはすべての項目を表示します", "仅调整两个饼图,右侧列表始终完整显示": "2つの円グラフだけを変更し、右の一覧は常にすべて表示します", "仅调整这两张图的展示,所有用量仍计入总 Token,占比保持不变": "この2つのグラフの表示のみを変更します。すべての使用量は総 Token に含まれ、割合は変わりません", "今天": "今日", "全部用量": "すべての使用量", "六": "土", "其他 {pct} · {n} 项,仅在饼图合并": "その他 {pct} · {n} 項目、円グラフ内だけで集約", "其他({n} 项)": "その他({n} 項目)", "其余 {n} 项": "残り {n} 項目", "前 {n} 名": "上位 {n} 件", "前 {n} 名占全部用量 {pct}": "上位 {n} 件が総使用量の {pct}", "区间共 {n} 天": "全 {n} 日間", "占比低于": "割合が", "占输入 Token 的 {rate}": "入力 Token の {rate}", "历史明细不完整": "過去の明細が不完全です", "另 {n} 项": "ほか {n} 項目", "右轴": "右軸", "合并只作用于饼图。低于阈值的扇区归入“其他”,右侧列表完整保留每个项目,总量和占比不变。": "集約は円グラフだけに適用します。しきい値未満の扇形を「その他」にまとめ、右の一覧にはすべての項目を表示します。合計と割合は変わりません。", "合并小项": "小さい項目をまとめる", "合计": "合計", "含今天在内往前数": "本日を含めて遡ってカウント", "命中 {hit} / 输入 {input}": "ヒット {hit} / 入力 {input}", "命中率": "ヒット率", "命中率 = 缓存读取 Token / 输入 Token(promptTokens)。窗口越短越贴近「此刻」:上游把缓存读取与输入分开上报时,该比值合法地可能超过 100%,此处不夹取值、如实展示。": "ヒット率 = キャッシュ読み取り Token / 入力 Token(promptTokens)。ウィンドウが短いほど「現在」に近づきます。アップストリームがキャッシュ読み取りと入力を分けて報告する場合、この比率は 100% を超えることが正当にあり得ますが、ここでは値を切り詰めず、ありのままに表示します。", "命中率 {rate}(命中 {hit} / 输入 {input})": "ヒット率 {rate}(ヒット {hit} / 入力 {input})", "四": "木", "图表显示": "グラフ表示", "图表类型": "グラフの種類", "在右侧展开“其他”查看明细": "凡例の「その他」を展開すると明細を確認できます", "天有调用": "日間の利用", "小项合并阈值": "小さい項目をまとめるしきい値", "展开其他明细": "その他の明細を展開", "左轴": "左軸", "开启“合并小项”后,低于阈值的项目合并为灰色“其他”,可在右侧展开明细。合并只影响展示,总 Token 和占比不变。": "「小さい項目をまとめる」を有効にすると、しきい値未満の項目を灰色の「その他」にまとめます。凡例で展開すると明細を確認できます。表示のみの変更で、総 Token と割合は変わりません。", "开始日期": "開始日", "当前连续天数": "現在の連続日数", "总 Token": "総 Token", "总 Token:{tokens}": "合計 Token:{tokens}", "总 Token:{tokens}({n} 次请求)": "合計 Token:{tokens}({n} リクエスト)", "总请求数": "総リクエスト数", "总量不变": "合計は変更なし", "悬停查看完整读数与分项": "ホバーすると詳細な数値と内訳を表示", "成功率 {rate}": "成功率 {rate}", "成功率 {rate} · 失败 {n} 次": "成功率 {rate} · 失敗 {n} 件", "成功请求数": "成功リクエスト数", "所选范围内暂无请求": "選択期間内にリクエストがありません", "所选范围内每个提供商各消耗了多少 Token,按 Token 用量从多到少排。同一个模型名可能有多家都能提供,网关按设置页「转发路由」的优先级依次尝试,所以占比也反映了实际落到谁身上。百分比按本区间的总 Token 数算(这一块只看用量,请求次数与成功率在概览卡片里)。「未知」是指那批请求没记下承载它的提供商 —— 主要是记录提供商这个功能上线之前的旧明细,其次是请求在选定上游之前就失败了(请求体非法、模型不存在、没有可用账号)。这一维与账号那一维不同:旧明细里根本没有「哪家承载」的信息(早期版本只有单一上游,但那是配置事实而非逐条记录),所以无法回算,旧数据会一直留在「未知」里;此后新产生的请求都会记上具体的提供商。": "選択期間内で各プロバイダーがどれだけ Token を消費したかを、Token 使用量の多い順に並べたものです。同じモデル名を複数のプロバイダーが提供できることがあり、ゲートウェイは設定ページの「転送ルーティング」の優先度に沿って順に試すため、割合は実際にどのプロバイダーが処理したかも反映しています。パーセントはこの期間の総 Token 数に対して計算します(このセクションは使用量のみを見ており、リクエスト数と成功率は概要カードにあります)。「不明」とは、それらのリクエストに処理を担ったプロバイダーが記録されていない場合です —— 主にプロバイダーの記録機能が実装される前の古い明細で、次に、アップストリームを選択する前にリクエストが失敗した場合(リクエストボディが不正、モデルが存在しない、利用可能なアカウントがない)です。この次元はアカウントの次元とは異なります。古い明細には「どのプロバイダーが処理したか」の情報がそもそもありません(初期バージョンは単一アップストリームのみでしたが、それは設定上の事実であり、リクエストごとの記録ではありません)。そのため再計算できず、古いデータは「不明」に残り続けます。それ以降に新しく生成されたリクエストには、具体的なプロバイダーが記録されます。", "所选范围内每个提供商各消耗了多少 Token,按用量从多到少排,扇区角度即占比。同一个模型名可能有多家都能提供,网关按设置页「转发路由」的优先级依次尝试,所以占比也反映了实际落到谁身上。中心是这一维的合计(等于概览里的总 Token),右侧每行给出该提供商的 Token 用量与百分比。「未知」是指那批请求没记下承载它的提供商 —— 主要是记录提供商这个功能上线之前的旧明细,其次是请求在选定上游之前就失败了。": "選択期間内で各プロバイダーがどれだけ Token を消費したかを使用量の多い順に並べたもので、扇形の角度が割合を表します。同じモデル名を複数のプロバイダーが提供できることがあり、ゲートウェイは設定ページの「転送ルーティング」の優先度に沿って順に試すため、割合は実際にどのプロバイダーが処理したかも反映しています。中心はこの次元の合計(概要の総 Token と同じ)で、右側の各行にそのプロバイダーの Token 使用量とパーセントを表示します。「不明」とは、それらのリクエストに処理を担ったプロバイダーが記録されていない場合です —— 主にプロバイダーの記録機能が実装される前の古い明細で、次に、アップストリームを選択する前にリクエストが失敗した場合です。", "所选范围内每个模型各消耗了多少 Token,按用量从多到少排,扇区角度即占比。中心是这一维的合计(等于概览里的总 Token),右侧每行给出该模型的 Token 用量与百分比。扇区内的百分比只在 ≥3% 时标出,更小的会挤成一团 —— 完整读数在右侧列表与悬停气泡里。颜色按用量排名分配:最大的那段是红色,依次往后;同一份报表里换个维度看,配色口径不变。": "選択期間内で各モデルがどれだけ Token を消費したかを使用量の多い順に並べたもので、扇形の角度が割合を表します。中心はこの次元の合計(概要の総 Token と同じ)で、右側の各行にそのモデルの Token 使用量とパーセントを表示します。扇形内のパーセントは 3% 以上の場合にのみ表示し、それより小さいものは重なってしまうため —— 完全な値は右側のリストとホバー時のツールチップにあります。色は使用量の順位に応じて割り当てます。最も大きい区画が赤で、以降も順に続きます。同じレポートで別の次元を見ても、配色の基準は変わりません。", "所选范围内每个账号各消耗了多少 Token,按 Token 用量从多到少排。账号是比提供商更细的一维:同一家可以挂多个账号,转发时按优先级在候选链上依次尝试,所以这里反映的是「具体哪个登录态在出力」。百分比按本区间的总 Token 数算(这一块只看用量,请求次数与成功率在概览卡片里)。「未知账号」是指那批请求没有账号身份:走默认登录态转发(未配置账号列表)时会这样;这一维上线前写出的旧聚合行也没有账号明细,但它们会在升级导入旧数据时按明细自动补算回来 —— 只有明细已被手动清理掉的那几天补不回来,仍留在「未知账号」里,那是确实无从恢复的部分。": "選択期間内で各アカウントがどれだけ Token を消費したかを、Token 使用量の多い順に並べたものです。アカウントはプロバイダーより細かい次元です。同じプロバイダーに複数のアカウントを登録でき、転送時は優先度に沿って候補チェーンを順に試すため、ここには「具体的にどのログイン状態が処理を担っているか」が反映されます。パーセントはこの期間の総 Token 数に対して計算します(このセクションは使用量のみを見ており、リクエスト数と成功率は概要カードにあります)。「不明なアカウント」とは、それらのリクエストにアカウントの身元がない場合です。既定のログイン状態で転送する場合(アカウント一覧が未設定)にこうなります。この次元が実装される前に書き出された古い集計行にもアカウント明細はありませんが、それらは旧データのアップグレード取り込み時に明細から自動で再計算されます —— 明細が手動でクリアされた日ぶんだけは再計算できず、「不明なアカウント」に残り続けます。それは本当に復元しようのない部分です。", "所选范围内还没有提供商用量": "選択期間内にプロバイダー使用量がまだありません", "所选范围内还没有模型用量": "選択期間内にモデル使用量がまだありません", "所选范围内还没有请求记录": "選択期間内にリクエスト記録がまだありません", "所选范围内还没有账号用量": "選択期間内にアカウント使用量がまだありません", "折线": "折れ線", "报表时间范围": "レポートの期間", "按 Token 用量从多到少排列,扇区角度表示占比。占比不低于 3% 的扇区显示百分比,所有项目的完整读数保留在右侧列表与悬停提示中。": "Token 使用量の多い順に並び、扇形の角度が割合を表します。3%以上の扇形には割合を表示し、すべての項目の詳細な数値は右の一覧とホバー表示で確認できます。", "按 Token 统计": "Token 基準", "按天 Token 趋势": "日別 Token トレンド", "按日统计": "日別集計", "按本地整点统计": "ローカル時刻の毎正時単位", "按本地整点,无请求的整点不标注": "ローカル時刻の毎正時単位。リクエストがない正時はラベルを表示しません", "按每条请求的软件标识和识别规则统计,不依赖 API Key,也不代表设备或用户数。待确认的软件统一计入“其它”;规则修改不重新归类历史请求。": "統計は各リクエストのソフトウェア識別情報とルールに基づき、API Keyには依存しません。端末数やユーザー数ではありません。未確認のソフトウェアは「その他」に集計され、ルール変更で過去のリクエストを再分類することはありません。", "提供商用": "プロバイダー使用量", "提供商用占比": "プロバイダー使用量の割合", "提供商用量": "プロバイダー使用量", "提供商用量占比": "プロバイダー使用量の割合", "提供商:{text}": "プロバイダー:{text}", "收起其他明细": "その他の明細を折りたたむ", "方格为本地自然日,无请求显示为空槽": "マスはローカルの暦日で、リクエストがない日は空のマスとして表示", "无请求的整点按 0% 计,但不写读数": "リクエストがない正時は 0% として扱いますが、値は表示しません", "日": "日", "日均": "1日平均", "日均 {value}": "1日平均 {value}", "时间范围。「今天」是本地自然日今天 0 点到现在;「昨天」是昨天一整天(0 点到 24 点);「近 7 天 / 近 30 天」含今天在内往前数,即今天与之前的 6 / 29 天,不是「不含今天的 7 / 30 天」。": "期間。「今日」はローカル日付の今日 0 時から現在まで、「昨日」は昨日の丸一日(0 時から 24 時まで)。「直近 7 日 / 直近 30 日」は今日を含めて遡った日数で、今日とその前 6 / 29 日を指します(今日を除く 7 / 30 日ではありません)。", "昨天": "昨日", "暂无热力图数据": "ヒートマップのデータがありません", "暂无缓存趋势数据": "キャッシュトレンドのデータがありません", "暂无趋势数据": "トレンドのデータがありません", "最近整点命中率": "直近1時間枠のヒット率", "最近请求": "最近のリクエスト", "未知模型": "不明なモデル", "本月": "今月", "查看用量、调用来源与缓存表现": "使用量、リクエスト元、キャッシュの状況を確認", "柱状": "棒グラフ", "模型与提供商共用此设置": "モデルとプロバイダーのグラフに共通の設定", "模型用量": "モデル使用量", "模型用量占比": "モデル使用量の割合", "每天的总 Token 用量(输入 + 输出)。柱顶标出当天的读数;区间很长、柱子挤到放不下时只标最高的那几天,其余悬停柱子即可读到。": "日ごとの総 Token 使用量(入力 + 出力)。棒の上にその日の値を表示します。期間が長く棒が密集して収まらない場合は最も高い数日だけを表示し、残りは棒にホバーすると確認できます。", "活跃天数": "アクティブ日数", "活跃热力图": "アクティビティヒートマップ", "用量分布": "使用量の内訳", "用量趋势": "使用量の推移", "的项目合并为“其他”": "未満の項目を「その他」にまとめる", "筛选统计项目": "集計項目を絞り込み", "累计": "累計", "累计请求 {n} 条": "累計リクエスト {n} 件", "结束日期": "終了日", "结束日期(含当天)": "終了日(当日を含む)", "统计报表": "使用状況レポート", "统计概览": "統計概要", "缓存命中率": "キャッシュヒット率", "缓存读取属于输入读数,不额外计入总 Token": "キャッシュ読み取りは入力の一部であり、総 Token に重複加算しません", "缓存读取属于输入,不重复计入总 Token": "キャッシュ読み取りは入力の一部で、総 Token に重複加算しません", "自定义区间": "カスタム期間", "请求日志只展示仍保留的明细;清理明细不会减少日报中的历史用量。": "リクエストログには保存されている明細だけを表示します。明細を削除しても日次レポートの過去の使用量は減りません。", "读取 {hit} ÷ 输入 {input}": "キャッシュ読み取り {hit} ÷ 入力 {input}", "读取报表失败:{error}": "レポートの読み込みに失敗しました:{error}", "起始日期(含当天)": "開始日(当日を含む)", "输入": "入力", "输入 + 输出": "入力 + 出力", "输入 Token": "入力 Token", "输出": "出力", "输出 Token": "出力 Token", "运行中": "実行中", "近 1 小时": "直近 1 時間", "近 10 分钟": "直近 10 分", "近 24 小时": "直近 24 時間", "近 24 小时缓存命中率与总 Token 趋势": "直近 24 時間のキャッシュヒット率と総 Token のトレンド", "近 24 小时缓存命中率趋势": "直近 24 時間のキャッシュヒット率トレンド", "近 30 天": "直近 30 日", "近 365 天 · 不随上方日期筛选变化": "直近365日 · 上の日付フィルターとは独立", "近 365 天活跃热力图": "直近 365 日のアクティビティヒートマップ", "近 365 天,按天 Token 用量着色(档位按本窗口峰值自动定)": "直近 365 日を日別 Token 使用量で色分け(段階はこのウィンドウのピークに応じて自動決定)", "近 7 天": "直近 7 日", "饼图不合并小项": "すべての扇形を表示", "饼图小于 {threshold}% 归入其他": "{threshold}% 未満をその他に集約", "饼图显示": "円グラフ表示", " · ": " · ", " · {n} 个账号今日重试已用完": " · {n} 件は本日の再試行回数を使い切りました", " · 补签在主签到区间结束后执行": " · メイン時間帯の終了後に補完します", "AgentArts 服务声明": "AgentArts サービス声明", "MiniMax Code 国内版每日签到 · 同地区签名账号接口读取七日面板并领取今日积分;已领取不重复领,奖励以官方返回为准": "MiniMax Code 中国版の毎日チェックイン · 同地域の署名付きアカウント API で 7 日間のパネルを読み、今日のポイントを受け取ります。受け取り済みは再取得せず、報酬は公式の応答に従います。", "MiniMax Code 国际版每日签到 · 同地区签名账号接口读取七日面板并领取今日积分;已领取不重复领,奖励以官方返回为准": "MiniMax Code 国際版の毎日チェックイン · 同地域の署名付きアカウント API で 7 日間のパネルを読み、今日のポイントを受け取ります。受け取り済みは再取得せず、報酬は公式の応答に従います。", "QuWork 每日奖励:先查询领取状态,再领取并回查;结果不明时不重复提交。": "QuWork 日次報酬:受け取り前に状態を確認し、その後に結果を確認します。不明な結果は再送信しません。", "SOLO 的 checkin_credits 领取 · 按自然日 0 点刷新": "SOLO の checkin_credits 受け取り · 自然日 0 時に更新", "Sonus 等限时活动 · 资格、额度和有效期以官方返回为准": "Sonus などの期間限定キャンペーン · 対象条件、クレジット数、有効期間は公式の応答に準じます", "UMID 组件安装失败:{error}": "UMID コンポーネントのインストールに失敗しました:{error}", "UMID 组件已安装,可重新签到。": "UMID コンポーネントをインストールしました。再度チェックインできます。", "UMID 组件管理接口不可用,请刷新页面或更新网关。": "UMID コンポーネント管理 API を利用できません。ページを再読み込みするか、ゲートウェイを更新してください。", "WorkBuddy 国内版 · 查询任务树后一键点亮 / 领奖 · 含开学季与猫猫旅行 · 点击行展开明细": "WorkBuddy 中国版 · タスクツリーを照会してワンクリックで点灯/受け取り · 新学期イベントとねこ旅行を含む · 行をクリックで詳細", "WorkBuddy 国际版保活模型,按顺序回退": "WorkBuddy 国際版のキープアライブ用モデル(順番にフォールバック)", "WorkBuddy 国际版日活任务的免费模型 · 全局一份,与条目无关": "WorkBuddy国際版のデイリーアクティビティ用の無料モデル · 全体で1つの設定、スケジュールとは無関係", "ZCode 自动领取验证": "ZCode 自動受け取りの認証", "{date}(每天 {time})": "{date}(毎日 {time})", "{done} / {total} 个账号已签": "{total} 件中 {done} 件がチェックイン済み", "{done}/{total} 已签": "{done}/{total} チェックイン済み", "{label} ×{count}({reason})": "{label} ×{count}({reason})", "{name}定时补签开关": "{name}の定期補完スイッチ", "{name}签到时间": "{name}のチェックイン時刻", "{n} 个平台": "{n} プラットフォーム", "{n} 个平台 · {groups} 组签到时间": "{n} プラットフォーム · {groups} 組の時刻", "{n} 个计划 · 北京时间 UTC+8": "{n} 件のスケジュール · 北京時間 UTC+8", "{n} 个账号今天的重试次数已用完": "{n} 件のアカウントは本日の再試行回数を使い切りました", "{n} 个账号等待窗口或活动": "{n} アカウントが受付時間またはイベントを待機中", "{n} 积分": "{n} ポイント", "{n} 项可完成": "完了可能 {n} 件", "{n} 项待领": "{n} 件受け取り待ち", "{points} 积分": "{points} ポイント", "{total} 账号 · {done} 已签": "{total} アカウント · {done} チェックイン済み", "{total} 项任务 · {pending} 项可完成": "タスク {total} 件 · 完了可能 {pending} 件", "✅ UMID 组件已安装,下轮签到即可领取国际版积分": "✅ UMID コンポーネントをインストールしました。次回のチェックインで国際版の積分を受け取れます", "✅ {message}": "✅ {message}", "✅ 定时签到已开启": "✅ 定期チェックインを有効にしました", "✅ 开学季任务执行完成": "✅ 新学期タスクの実行が完了しました", "✅ 成长任务执行完成:积分 +{credit} 能量 +{energy}": "✅ 成長タスク完了:クレジット +{credit} エネルギー +{energy}", "✅ 新手福利领取完成": "✅ 初心者ボーナスの受け取りが完了しました", "✅ 新手福利领取完成,累计 {n} 积分": "✅ 初心者ボーナスの受け取りが完了しました。累計 {n} 積分", "✅ 签到完成:{succeeded}/{total} 个账号成功领取{active}": "✅ チェックイン完了:{succeeded}/{total} 件のアカウントが受け取りに成功{active}", "「保活模型链」是 WorkBuddy 国际版领日活时用来保活的免费模型,按顺序逐个尝试、 第一个成功即止;清空提交恢复缺省({defaults})。 当天去重 + 幂等领取:重复执行只会拿到「已领取」,不会重复加分。": "「キープアライブモデルチェーン」は、WorkBuddy国際版のデイリーアクティビティでアカウントを活性化し続けるための無料モデルです。順に試し、最初の成功で止まります。空で送信すると既定({defaults})に戻します。当日の重複排除+冪等な受け取り:再実行しても「受取済み」が返るだけで、ポイントが二重に加算されることはありません。", "「保活模型链」是 WorkBuddy 国际版领日活时用来保活的免费模型,按顺序逐个尝试、 第一个成功即止;清空清单并保存 = 恢复缺省链(当前缺省:{defaults})。 当天去重 + 幂等领取:重复执行只会拿到「已领取」,不会重复加分。": "「キープアライブモデルチェーン」は、WorkBuddy国際版のデイリーアクティビティでアカウントを活性化し続けるための無料モデルです。順に試し、最初の成功で止まります。リストを空にして保存すると既定のチェーン(現在の既定:{defaults})に戻ります。当日の重複排除+冪等な受け取り:再実行しても「受取済み」が返るだけで、ポイントが二重に加算されることはありません。", "「免费领积分」的每日任务 · 逐个领取": "「無料積分受け取り」のデイリータスク · 1 つずつ受け取る", "一次性福利 · 已领取状态保存在网关,领完无需重复查询 · 点击行展开任务清单": "一度きりの特典 · 受け取り状態はゲートウェイに保存され、受け取り後の再照会は不要です · 行をクリックしてタスク一覧を展開", "一次性福利 · 签到后自动查询并领取,领完记在本机不再查上游 · 点击行展开任务清单": "一度きりの特典 · チェックイン後に自動で照会して受け取り、受け取り済みは本機に記録し以降はアップストリームに問い合わせません · 行をクリックしてタスク一覧を展開", "一次性福利已全部结清": "一回限りの特典はすべて受け取り済みです", "一次性福利已结清": "一回限りの特典は受け取り済みです", "一次性福利已结清,无需重复查询": "一度きりの特典は受け取り済みです。再照会は不要です", "一次领当天全部奖励(每日签到 + 新人礼) · 幂等由上游保证": "その日の報酬を一度にまとめて受け取ります(毎日チェックイン+新規特典) · 冪等性はアップストリームが保証", "一键安装组件": "ワンクリックでインストール", "一键完成": "一括完了", "一键领取({n})": "一括受け取り({n})", "上一轮({time}):{n} 个动作,+{credit} 积分": "前回({time}):{n} 件のアクション、+{credit} クレジット", "上次执行:{line}": "前回実行:{line}", "上次签到时间": "前回のチェックイン時刻", "上次领取 {time} · 领取需通过滑块验证码": "前回の受け取り {time} · 受け取りにはスライダー認証が必要", "下一账号:{time}": "次のアカウント:{time}", "下次 {date}": "次回 {date}", "下次 {date} · 点此管理条目": "次回 {date} · クリックしてスケジュールを管理", "下次检查:{time}": "次回確認:{time}", "下次自动执行": "次回の自動実行", "不参与每日签到:{list}。CodeArts 的一次性奖励在下方「新手福利」,它与 ZCode 的每日/套餐福利领取见「活动福利」。": "デイリーチェックインの対象外:{list}。CodeArts の一度きりの特典は下の「初心者ボーナス」に、CodeArts と ZCode の日次/プラン特典の受け取りは「アクティビティ特典」にあります。", "不参与每日签到:{list}。CodeArts 的一次性奖励在下方「新手福利」,它的每日福利就在上方「每日签到」里;ZCode 的套餐领取见「活动福利」。": "デイリーチェックインの対象外:{list}。CodeArts の一度きりの特典は下の「初心者ボーナス」、CodeArts のデイリー特典はすぐ上の「デイリーチェックイン」にあります。ZCode のプラン受け取りは「アクティビティ特典」です。", "不参与签到": "チェックイン対象外", "不可领": "受け取り不可", "不自动重试等待中的活动": "待機中のイベントを自動再試行しません", "不适用": "対象外", "与国内版同一套任务接口 · 站点不同": "中国版と同じタスク API · サイトが異なる", "与国内版同一套链路 · 站点不同、令牌不通用": "中国版と同じ経路 · サイトが異なりトークンは相互利用不可", "与定时补签不同,仅处理窗口未开或活动暂未下发。": "定期補完とは異なり、受付開始前または未配信のイベントのみを処理します。", "与新人积分独立,不购买付费套餐、不自动续费": "新規ユーザーポイントとは独立しています。有料プランの購入や自動更新は行いません。", "专属或自定义时间作为区间起点,沿用默认区间长度;每天重新随机,重启不改变当天安排。": "専用またはカスタム時刻を開始時刻とし、既定の時間帯の長さを使います。毎日ランダムに割り当て、再起動しても当日の予定は変わりません。", "个账号不参与": "アカウントは対象外", "主签到区间结束后等待 {n} 分钟": "メイン時間帯の終了後 {n} 分待機", "主签到后等待 {n} 分钟": "メインチェックイン後 {n} 分待機", "主签到后等待(分钟)": "メインチェックイン後の待機(分)", "主签到已执行": "メインチェックイン実行済み", "主签到已执行不等于每个账号都已领取成功;账号结果请查看签到记录。": "メイン実行済みでも全アカウントの受け取り成功を意味しません。結果はチェックイン記録をご確認ください。", "仅处理窗口未开或活动暂未下发的账号,不对所有错误反复执行。": "受付開始またはイベント配信を待つアカウントのみ再試行し、すべてのエラーを繰り返しません。", "仅开通官方报价为 0 元的个人体验套餐,固定关闭自动续费;奖励另行领取": "公式価格が 0 元の個人体験プランのみを、自動更新を無効にして有効化します。報酬は別途受け取ります。", "仅提交你填写的权益,不购买套餐;兑换码激活可能需要原客户端的设备标识。": "入力した特典のみを引き換え、プランは購入しません。コードの有効化に元のクライアントのデバイス識別情報が必要な場合があります。", "今天 · 北京时间自然日": "今日 · 北京時間の暦日", "今天不再自动重试,明天自动重置。要现在再试一次,用签到计划里的「立即执行」。": "これらのアカウントは本日これ以上自動再試行しません。カウンターは明日リセットされます。今すぐもう一度試すには、チェックイン計画の「今すぐ実行」を使ってください。", "今天已执行:{list}": "本日の実行済み:{list}", "今天已领 {n} 份": "本日 {n} 件受け取り済み", "今天未领": "本日は未受取", "今天(北京时间 {day})已领取 · 官方确认到账 {n} 项 · 明天可再领": "本日(北京時間 {day})受け取り済み · 公式に {n} 件の到着を確認 · 明日また受け取れます", "今日主签到": "本日のメインチェックイン", "今日已执行": "本日実行済み", "今日已派出": "本日は出発済み", "今日已签": "本日チェックイン済み", "今日已领取": "本日受け取り済み", "今日已领取豆包工作签到奖励,已由官方确认": "豆包工作の本日のチェックイン報酬は受け取り済みで、公式サービスによる確認も完了しています。", "今日签到": "本日のチェックイン", "今日签到任务尚未满足领取条件": "本日のチェックインタスクは、まだ報酬の受け取り条件を満たしていません。", "今日签到进度": "本日のチェックイン進捗", "从清单里移除": "リストから削除", "例如:每日自动签到": "例:毎日の自動チェックイン", "保存计划": "スケジュールを保存", "保活": "キープアライブ", "保活 API Key 已保存": "キープアライブ用 API Key を保存しました", "保活 {n}": "キープアライブ {n}", "保活+领取": "キープアライブ+受け取り", "保活中…": "キープアライブ中…", "保活模型链": "キープアライブモデルチェーン", "保活模型链为全局配置,猫猫旅行有独立的开关与时刻。": "キープアライブモデルチェーンは全体設定です。ねこ旅行のスイッチと時刻は独立しています。", "先创建签到计划,再为它设置定时补签。": "先にチェックインスケジュールを作成し、その定期補完を設定してください。", "先查询活动,再选择要领取的奖励;不会购买或订阅套餐": "キャンペーンを照会してから、受け取る報酬を選んでください。プランの購入や契約は行いません。", "免费体验套餐": "無料体験プラン", "免费套餐已开通并确认生效": "無料プランを有効化し、適用を確認しました", "兑换中…": "引き換え中…", "兑换权益": "特典を引き換え", "兑换结果待确认,请到官方客户端核对;不会重复提交": "引き換え結果は確認待ちです。公式クライアントで確認してください。重複送信はしません。", "兑换请求未得到确认,请到官方客户端核对;不要重复提交": "引き換え要求を確認できませんでした。公式クライアントで確認し、再送信しないでください。", "全选": "すべて選択", "全部 {n} 家": "全 {n} 社", "全部完成": "すべて完了", "全部查询": "一括クエリ", "全部签到": "一括チェックイン", "全部类型": "すべての種類", "全部结果": "すべての結果", "全部账号均可签到": "すべてのアカウントがチェックイン可能", "全部领取": "すべて受け取る", "关着:不自动巡检(仍可手动巡检)": "オフ:自動巡回しません(手動巡回は可能)", "关着:所有条目都不执行": "オフ:どのスケジュールも実行されません", "关闭活动窗口重试不会关闭定时补签。插件提供下次重试时刻时,以插件返回的时间为准。": "受付時間の再試行を無効にしても定期補完は無効になりません。プラグインが次回時刻を返した場合はその時刻を使います。", "其他自动任务": "その他の自動タスク", "凭证不可用": "認証情報を利用できません", "凭证需刷新": "認証情報の更新が必要", "切换任务后,左侧只保留有账号的提供商": "タスクを切り替えると、左側にはアカウントのあるプロバイダーだけが表示されます", "删除失败:{error}": "削除に失敗しました:{error}", "删除定时条目": "スケジュールを削除", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活并在网页通道建会话点亮日活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;CodeArts 领当日的运营福利(领取 → 确认 → 回读核实,自动执行受每天 6 次 / 间隔 10 分钟的写请求限流);OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "時刻になると、チェックを入れたプロバイダーの利用可能なアカウントを自動でチェックインします(WorkBuddy 国内版は毎日チェックイン API、国際版はデイリーアクティブクエスト:イベントを探し、デイリーアクティブ報酬を受け取り、無料モデルでキープアライブし、Web チャネルでセッションを張って日次アクティブを点灯。小浣熊はデスクトップの日次ポイント経路。AutoClaw は公式クライアントの毎日チェックインタスク。Qoder 中国版はイベント受領で、イベントを付与されていないアカウントは中立的な通知を受け取ります。Qoder 国際版はデバイスのリスク管理 ID(ローカル Qoder クライアント / qodercli の UMID コンポーネントが生成)を持たないと「毎日 100 Credits」イベントが表示されず、コンポーネントがなければエラーではなく明確な説明が返ります。Trae は SOLO の毎日チェックインポイントを受け取り(0 時リセット)、上流がイベントを用意していない、または認証情報にデバイス ID がない場合は「未受領 + 理由」が返ります。Loomy は毎日 1 回初回ログインポイントを付け、KukuAI は「無料ポイント」の日次タスクを受け取り、CodeArts は当日の運営特典を受け取ります(受領 → 確認 → 再読で検証。自動実行は 1 日 6 回 / 10 分間隔の書き込みレート制限内)。OfficeAce はその日の特典を一括で受け取ります(毎日チェックイン + 新規特典))。時刻を逃しても起動時に自動で追補するため、電源が入っていなくても取りこぼしません。各社のチェックイン API は冪等で、繰り返しても二重受け取りにはなりません。", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;CodeArts 领当日的运营福利(领取 → 确认 → 回读核实,自动执行受每天 6 次 / 间隔 10 分钟的写请求限流);OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "時刻になると、チェックしたプロバイダーの利用可能なアカウントを自動でチェックインします(WorkBuddy 中国版はデイリーチェックイン API、国際版はデイリーアクティブタスク:イベントを検出して日活報酬を受け取り、無料モデルでキープアライブ。小浣熊はデスクトップ版のデイリー積分経路。AutoClaw は公式クライアントのデイリーチェックインタスク。Qoder 中国版はイベント受け取りで、イベントが配信されていないアカウントには中立的な案内が出ます。Qoder 国際版はデバイスリスク制御 ID(本機の Qoder クライアント / qodercli の UMID コンポーネントで生成)を付けて初めて「毎日 100 Credits」イベントが見えるようになり、コンポーネントが欠けている場合はエラーではなく明確な説明が出ます。Trae は SOLO のデイリーチェックイン積分を受け取り(自然日 0 時にリセット)、アップストリームがそのアカウントにイベントを開いていない場合や認証情報にデバイス ID がない場合は、エラーではなく「未受け取り + 具体的な理由」が返ります。Loomy は毎日アカウントの初回ログイン積分を 1 回付与します。KukuAI は「無料積分受け取り」のデイリータスクを消化します;CodeArts はその日の運営特典を受け取ります(受け取り → 確認 → 読み戻し検証。自動実行は 1 日 6 回・間隔 10 分の書き込み制限を受けます);OfficeAce はその日の報酬を一度の操作でまとめて受け取ります(毎日チェックイン+新規特典))。時刻を逃しても、起動後に自動で補完チェックインされ、当時電源が入っていなかったことを理由に漏れることはありません。各社のチェックイン API はすべて冪等なので、繰り返し実行しても二重に受け取ることはありません。", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "時刻になると、チェックしたプロバイダーの利用可能なアカウントを自動でチェックインします(WorkBuddy 中国版はデイリーチェックイン API、国際版はデイリーアクティブタスク:イベントを検出して日活報酬を受け取り、無料モデルでキープアライブ。小浣熊はデスクトップ版のデイリー積分経路。AutoClaw は公式クライアントのデイリーチェックインタスク。Qoder 中国版はイベント受け取りで、イベントが配信されていないアカウントには中立的な案内が出ます。Qoder 国際版はデバイスリスク制御 ID(本機の Qoder クライアント / qodercli の UMID コンポーネントで生成)を付けて初めて「毎日 100 Credits」イベントが見えるようになり、コンポーネントが欠けている場合はエラーではなく明確な説明が出ます。Trae は SOLO のデイリーチェックイン積分を受け取り(自然日 0 時にリセット)、アップストリームがそのアカウントにイベントを開いていない場合や認証情報にデバイス ID がない場合は、エラーではなく「未受け取り + 具体的な理由」が返ります。Loomy は毎日アカウントの初回ログイン積分を 1 回付与します。KukuAI は「無料積分受け取り」のデイリータスクを消化します;OfficeAce はその日の報酬を一度の操作でまとめて受け取ります(毎日チェックイン+新規特典))。時刻を逃しても、起動後に自動で補完チェックインされ、当時電源が入っていなかったことを理由に漏れることはありません。各社のチェックイン API はすべて冪等なので、繰り返し実行しても二重に受け取ることはありません。", "到点待执行": "時刻到達・実行待ち", "到点时逐个签到,已勾 {n} / {total} 家": "定刻に 1 社ずつチェックインします。選択 {n} / {total} 社", "北京时间 · 已启用 {n} 个签到计划": "北京時間 · {n} 件のチェックインが有効", "北京时间 · 每天重复 · 随设置更新": "北京時間 · 毎日繰り返し · 設定に合わせて更新", "北京时间 · 逗号分隔 · 最多 6 条 · 到点后最多晚 30 秒执行;错过时点开机后会补跑一轮。": "北京時間 · カンマ区切り · 最大6件 · 定刻から最大30秒遅れて実行。時刻を逃した場合は起動後に1回だけ追い実行します。", "北京时间 · 错过区间会补跑未执行账号,重启保留当天安排;任务在网关执行,关闭手机不影响排程。": "北京時間 · 時間帯を逃した場合は未実行のアカウントを補完し、再起動しても当日の予定を保持します。タスクはゲートウェイで実行され、モバイルアプリを閉じても予定に影響しません。", "北京时间 · 错过时点开机后会自动补签": "北京時間 · 起動時に自動で補完します", "区间内陆续签到": "時間帯内で順次チェックイン", "区间结束后等待(分钟)": "時間帯終了後の待機(分)", "单账号签到不受范围限制": "アカウント単体のチェックインは対象範囲に制限されません", "原套餐已到期或冻结,请在官方客户端处理;这里不会续费或变更套餐": "既存のプランは期限切れまたは凍結中です。公式クライアントで管理してください。ここでは更新やプラン変更は行いません。", "去插件页安装签到能力": "プラグインページでチェックイン機能をインストール", "去领取": "受け取りへ", "发放中": "付与中", "发放失败": "付与失敗", "取消验证": "認証をキャンセル", "另有 {n} 个账号不参与": "他に {n} 件のアカウントは対象外です", "另有 {n} 个账号不参与每日签到": "ほかにデイリーチェックインの対象外のアカウントが {n} 件", "只列当前任务里有账号的提供商。": "現在のタスクにアカウントがあるプロバイダーのみ表示します。", "只重试这些账号,不会重签整个计划。具体原因见签到记录。": "これらのアカウントのみ再試行します。全体は再実行しません。理由は記録をご確認ください。", "只领取已完成任务的奖励(幂等,重复点不会重复入账)": "完了済みタスクの報酬のみ受け取り(冪等・連打しても二重加算されません)", "可使用管理员凭据调用:": "管理者の認証情報を使って次の API を呼び出せます:", "可完成": "完了可能", "可派出": "出発可能", "可选 · 缺省显示时刻": "任意 · 未指定では時刻を表示", "可领": "受け取り可能", "可领奖": "受け取り可能", "各家区间起点": "各プロバイダーの開始時刻", "同时控制定时签到、定时补签和活动窗口重试;猫猫旅行独立运行。": "定期チェックイン・定期補完・受付時間の再試行をまとめて制御します。ねこ旅行は独立しています。", "后端未返回 UMID 组件安装结果": "バックエンドが UMID コンポーネントのインストール結果を返しませんでした", "后端未返回 UMID 组件状态": "バックエンドが UMID コンポーネントの状態を返しませんでした", "后端未返回定时签到数据": "バックエンドがスケジュールデータを返しませんでした", "后端未返回巡检结果": "バックエンドが巡回結果を返しませんでした", "后端未返回新手福利数据": "バックエンドが初心者ボーナスのデータを返しませんでした", "后端未返回有效的套餐状态": "ゲートウェイから有効なプラン状態が返されませんでした", "后端未返回权益兑换结果": "ゲートウェイから引き換え結果が返されませんでした", "后端未返回活动福利数据": "ゲートウェイからキャンペーン特典データが返されませんでした", "后端未返回签到中心数据": "バックエンドがチェックインセンターのデータを返しませんでした", "启用的计划在各自区间内随机签到": "有効なスケジュールは各時間帯内でランダムに実行します", "启用签到计划 {name}": "チェックインスケジュール {name} を有効化", "国际版签到需要 UMID 组件生成设备风控身份(本机未检测到)。": "国際版のチェックインには、UMID コンポーネントで生成するデバイスリスク制御 ID が必要です(本機では検出されませんでした)。", "在桌面端设置": "デスクトップ版で設定", "在途": "旅行中", "基本设置": "基本設定", "填入缺省链": "既定のチェーンを入力", "填写你已有的兑换码或订单号": "お持ちのコードまたは注文番号を入力", "填好时刻与签到范围后点「保存」;名称可以留空(界面显示时刻)": "時刻と範囲を決めて「保存」を押してください。名前は空欄でも構いません(空欄なら時刻を表示)", "失败 {n}": "失敗 {n}", "奖励与权益 · 资格、额度和有效期以官方返回为准": "報酬と特典 · 対象条件、クォータ、有効期間は公式の応答に従います", "套餐已冻结": "プラン凍結中", "套餐已到期": "プラン期限切れ", "套餐已开通,无需重复操作": "プランはすでに有効です。再操作は不要です。", "套餐明细": "プラン明細", "套餐查询凭证已过期,请先到账号页刷新凭证;此查询不会自动续期": "プラン照会の認証情報が期限切れです。先にアカウントページで更新してください。この照会では認証情報を自動更新しません。", "套餐领取": "プラン受け取り", "安装 Qoder 客户端或 qodercli 后即可(无需重启网关)。": "Qoder クライアントまたは qodercli をインストールすれば利用できます(ゲートウェイの再起動は不要)。", "安装中…": "インストール中…", "安装后仍未检测到 UMID 组件,请重新检查。": "インストール後も UMID コンポーネントを検出できません。再確認してください。", "官方客户端的每日签到任务": "公式クライアントのデイリーチェックインタスク", "官方拒绝套餐查询,请检查账号授权;这不一定表示 Token 已过期": "公式サービスがプラン照会を拒否しました。アカウントの認可を確認してください。必ずしもトークンの期限切れではありません。", "官方显示自动续费已开启,请到官方客户端检查": "公式サービスでは自動更新が有効と表示されています。公式クライアントで確認してください。", "官方未返回明确的套餐状态,暂不能开通": "公式サービスから明確なプラン状態が返されなかったため、現在は有効化できません。", "定时签到": "定期チェックイン", "定时签到和定时补签分开管理。补签沿用对应签到计划的平台范围,不重复领取已完成的账号。": "定期チェックインと補完は別々に管理します。補完は対応するスケジュールの対象を使い、完了済みアカウントは再受領しません。", "定时签到已关闭": "定期チェックインを無効にしました", "定时补签": "定期補完", "实际发放:{time}": "付与日時:{time}", "实际时间由网关计算,晚窗口的平台会顺延补签;只处理当天未签到账号。": "実際の時刻はゲートウェイが計算します。受付が遅い場合は補完も後になり、本日未チェックインのアカウントのみ処理します。", "实际签到安排": "実際のチェックイン予定", "实际补签": "実際の補完", "实际补签取「主签到时间加等待间隔」与「补签不早于」中较晚的时刻。": "補完は「メイン時刻+待機間隔」と「補完の開始下限」の遅い方に実行します。", "对应主签到:{times}": "対応メインチェックイン:{times}", "对应签到计划 · 沿用 {n} 个平台范围,只补未签到账号": "対応スケジュール · 同じ {n} 対象、本日未完了のみ", "对应签到计划:{name}": "対応チェックインスケジュール:{name}", "尚未开始": "未開始", "尚未开通套餐,可开通免费体验套餐": "プランはまだ有効ではありません。無料体験プランを有効にできます。", "尚未执行": "未実行", "尚未查询": "未照会", "尚未查询任务状态": "タスク状態は未クエリ", "尝试领取": "受け取りを試す", "展开": "展開", "巡检一次": "1 回実行", "巡检中…": "巡回中…", "巡检失败:{reason}": "巡回に失敗しました:{reason}", "已保存:{label}": "保存しました:{label}", "已保存:保活模型链": "保存しました:キープアライブモデルチェーン", "已保存:定时条目": "保存しました:スケジュール", "已保存:猫猫旅行排程": "保存しました:猫猫旅行スケジュール", "已全部领取": "すべて受け取り済み", "已删除定时条目": "スケジュールを削除しました", "已发放": "付与済み", "已完成活跃上报(连登已点亮),但活动未开启(本次没有可领的奖励)": "アクティビティを報告しました(連続ログイン達成)が、キャンペーンは未実施です(今回の報酬はなし)", "已就绪": "準備完了", "已开始批量签到": "一括チェックインを開始しました", "已开通": "有効", "已得 {earned} / {total} 积分": "{earned} / {total} ポイント獲得", "已执行 {n} / {total} 个平台": "{n} / {total} 対象を実行済み", "已执行 {n} / {total} 个账号": "{n} / {total} アカウント実行済み", "已抽 {n} 次": "{n} 回抽選しました", "已提交「{label}」的签到": "「{label}」のチェックインを送信しました", "已暂停": "一時停止中", "已有结果 {checked} / 共 {total} 个账号": "結果あり {checked} / 全 {total} アカウント", "已查 {checked} / {total} 个账号": "{total} 件中 {checked} 件を確認済み", "已确认不自动续费": "自動更新が無効であることを確認済み", "已确认领取": "受取確認済み", "已签": "チェックイン済み", "已签到自动跳过": "チェックイン済みは自動スキップ", "已结束": "終了", "已选 {n} / {total} 个平台": "{n} / {total} 対象を選択", "已领 {claimed}/{total} · 累计 {earned} 积分": "受け取り済み {claimed}/{total} · 累計 {earned} 積分", "已领 {done} / {total} 份套餐": "プラン {done} / {total} 件受け取り済み", "已领养": "飼い主になりました", "已领取": "受け取り済み", "已领取「{name}」": "「{name}」を受け取りました", "带设备风控身份领取「每日 100 Credits」 · 需要 UMID 组件": "デバイスリスク制御 ID を付けて「毎日 100 Credits」を受け取り · UMID コンポーネントが必要", "平台与签到时间": "プラットフォームと時刻", "平台与随机签到区间": "プラットフォームとランダム実行の時間帯", "平台专属": "専用", "平台专属时间": "プラットフォーム専用時刻", "平台专属时间由网关提供。自定义时间会覆盖专属时间,提前执行可能遇到窗口未开。": "専用時刻はゲートウェイから取得します。カスタム時刻が優先され、早すぎると受付開始前になる場合があります。", "平台批次": "対象グループ", "开关": "スイッチ", "开启定时补签": "定期補完を有効化", "开启活动窗口重试": "受付時間の再試行を有効化", "开始 {time}": "開始 {time}", "开学季执行失败:{error}": "新学期の実行に失敗:{error}", "开学季执行完成:{message}": "新学期の実行が完了:{message}", "开学季活动": "新学期イベント", "开着:启用的条目按各自时刻执行": "オン:有効なスケジュールがそれぞれの時刻に実行されます", "开着:按下面的时刻自动巡检": "オン:以下の時刻に自動巡回します", "开通中…": "有効化中…", "开通免费套餐": "無料プランを有効化", "开通未得到确认,请重新查询套餐状态;不会自动重试开通": "有効化を確認できませんでした。プランの状態を再確認してください。有効化は自動で再試行しません。", "开通结果待确认": "有効化の確認待ち", "开通请求仍在处理或结果待确认,请稍后查询,不要重复提交": "有効化を処理中、または結果を確認中です。後で再照会し、重複送信はしないでください。", "当前没有可领取的套餐": "現在受け取れるプランはありません", "当前没有等待窗口或活动下发的账号。": "受付開始やイベント配信を待つアカウントはありません。", "当前活动未提供每日签到任务": "現在のキャンペーンには毎日のチェックインタスクがありません。", "当前网关中,补签等待间隔与活动重试间隔共用;修改间隔会同步影响两者,开关与重试次数仍分别设置。": "現在のゲートウェイでは補完待機とイベント再試行の間隔を共用します。変更は両方に反映されますが、スイッチと回数は別設定です。", "当前账号暂不符合该活动的领取条件": "このアカウントは現在、この特典の受け取り条件を満たしていません", "当前账号未下发豆包工作签到活动,无需反复领取": "このアカウントには豆包工作のチェックインキャンペーンが提供されていません。受け取りを繰り返す必要はありません。", "待发放": "付与待ち", "待执行": "実行待ち", "待签": "未チェックイン", "待领取": "受け取り待ち", "待领新手福利": "受け取り待ちの初心者ボーナス", "总开关": "マスタースイッチ", "总开关已关闭": "全体スイッチはオフです", "总开关已关闭 · 在「定时签到」页打开": "マスタースイッチがオフです · 「定期チェックイン」タブで有効化してください", "成功 {n}": "成功 {n}", "成长任务": "成長タスク", "成长任务完成({done} 项成功、{failed} 项失败),积分 +{credit} 能量 +{energy}": "成長タスク完了(成功 {done} 件・失敗 {failed} 件):クレジット +{credit} エネルギー +{energy}", "成长任务执行失败:{error}": "成長タスクの実行に失敗:{error}", "我已阅读并同意以下服务声明,仅授权开通零元体验套餐,不自动续费": "以下のサービス声明を読み、同意します。0 元の体験プランの有効化のみを許可し、自動更新は行いません。", "所有时间按北京时间计算。每个账号每天随机安排一次,重启保留当天安排;错过区间时会补跑未执行账号。": "時刻はすべて北京時間です。各アカウントに毎日一つのランダムな時刻を割り当て、再起動しても保持します。時間帯を逃した場合は未実行のアカウントを補完します。", "所有时间按北京时间计算。网关启动后会补跑当天已到点、尚未执行的签到,不会提前执行未来时点。": "時刻はすべて北京時間です。起動後は本日到達済みの未実行分を補完し、未来の予定は早めに実行しません。", "手动签到": "手動チェックイン", "执行失败:{error}": "実行に失敗しました:{error}", "执行并抽奖": "実行して抽選", "执行开学季任务并抽空抽奖机会(分享 / 对话 / 专家事件)": "新学期タスクを実行し、抽選回数を使い切る(シェア/会話/エキスパートイベント)", "执行规则": "実行ルール", "把缺省链填进清单,再点「保存」生效": "既定のチェーンを一覧に入れます。「保存」で反映されます", "抽奖机会 {n} 次": "抽選チャンス {n} 回", "按住拖动调整顺序": "押したままドラッグで並べ替え", "按住拖动,调整这个模型在链里的顺序": "押したままドラッグして、チェーン内でのこのモデルの順序を変更します", "按序逐个尝试,共 {n} 个": "順番に試行、計 {n} 件", "按结果筛选": "結果で絞り込み", "授权被拒绝": "認可が拒否されました", "探测 + 领取 + 保活 · 与定时签到同一套组合": "検出 + 受け取り + キープアライブ · 定期チェックインと同じ組み合わせ", "探测活动并领取日活奖励 · 不做保活": "イベントを検出して日活報酬を受け取り · キープアライブは行わない", "接单 + 点亮 + 领奖(只处理已实测沉淀的任务)": "受注+点灯+受け取り(実測で検証済みのタスクのみ処理)", "插件未就绪,范围仍保留": "プラグイン未準備・対象は保持", "搜索平台": "プラットフォームを検索", "搜索签到平台": "チェックイン対象を検索", "搜账号 / 收益 / 错误 / 触发原因": "アカウント / 収益 / エラー / トリガー理由を検索", "收起": "折りたたむ", "收起平台": "対象を閉じる", "收起新建": "新規入力を閉じる", "新建定时条目": "新しい定時エントリ", "新建签到计划": "チェックインスケジュールを作成", "新手任务": "初心者タスク", "新手福利": "初心者ボーナス", "新手福利与活动": "初心者ボーナスとキャンペーン", "新手福利是一次性任务:领完就没了,重复点不会重复加分。": "初心者ボーナスは一回限りのタスクです。受け取ると終了し、何度押してもポイントは重複加算されません。", "新手福利有 {n} 项领取失败,可重试": "初心者ボーナスで {n} 件の受け取りに失敗しました。再試行できます", "新手福利领取失败 {n} 项": "初心者ボーナス {n} 件の受け取りに失敗しました", "新用户积分": "新規ユーザーポイント", "新计划默认开启补签和活动窗口重试;保存后可到「定时补签」页单独调整。": "新規スケジュールでは補完と再試行が既定で有効です。保存後に「定期補完」で別々に調整できます。", "无": "なし", "无独立签到接口 · 每天替账号打一次登录信息(即当日魔粒)": "専用のチェックイン API なし · 毎日アカウントのログイン情報を 1 回取得(当日の魔粒が付与される)", "无独立签到接口 · 每天替账号打一次首次登录积分": "専用のチェックイン API なし · 毎日アカウントの初回ログイン積分を 1 回付与", "无账号": "アカウントなし", "时刻": "時刻", "暂不可领": "受け取り不可", "暂不可领(未满足条件)": "まだ受け取れません(条件未達成)", "暂不支持": "未対応", "暂无可领取福利": "現在受け取れる特典はありません", "暂无启用的条目": "有効なエントリはありません", "暂无启用的条目 · 点此添加": "有効なスケジュールがありません · クリックして追加", "暂无月度赠送记录": "月次特典の記録はありません", "暂无活动": "開催中のキャンペーンなし", "最近执行:{time}": "最近の実行:{time}", "最近结果:成功 {n} · 保活 {active} · 失败 {failed}": "最近の結果:成功 {n} · 活性維持 {active} · 失敗 {failed}", "月度赠送": "月次特典", "有平台到点待执行": "時刻到達の実行待ちあり", "有未保存的改动": "未保存の変更があります", "未勾选提供商": "プロバイダー未選択", "未完成,请查看签到记录": "完了していません。チェックイン記録をご確認ください。", "未开启": "未有効", "未开通": "未有効化", "未执行开通,请查询套餐状态查看原因": "有効化は実行されませんでした。プランの状態を照会して理由を確認してください。", "未解锁": "未解禁", "未领养(领养需先完成当日对话量)": "未飼育(飼育には当日の会話量の達成が先に必要)", "未领取": "未受け取り", "本地台账里今天还没领过;活动期内每天发一份新套餐": "ローカルの記録では本日まだ受け取っていません。キャンペーン期間中は毎日新しいプランが 1 件配布されます", "本地台账里今天(北京时间)领过的套餐:{plans}": "ローカル記録で本日(北京時間)受け取ったプラン:{plans}", "本次签到结果的记录时间:{time}(本机时区)": "今回のチェックイン結果の記録時刻:{time}(ローカルタイムゾーン)", "本次自动领取未完成验证,请在套餐明细中手动领取": "今回の自動受け取りの認証が完了しませんでした。プラン詳細から手動で受け取ってください。", "本轮已跳过:{reason}": "今回の実行はスキップされました:{reason}", "权益兑换成功,重新查询可查看最新记录": "特典を引き換えました。再照会すると最新の記録を確認できます。", "权益兑换未成功": "特典の引き換えに失敗しました", "权益兑换码 / 订单号": "引き換えコード / 注文番号", "条启用": "件有効", "来源说明中的时刻是定时条目的名称或基准时刻,不是本次执行时间": "実行元の説明にある時刻はスケジュール名または基準時刻であり、今回の実行時刻ではありません", "果办免费体验套餐": "OfficeAce 無料体験プラン", "果办套餐接口不可用,请更新主程序和提供商插件": "OfficeAce のプラン API を利用できません。アプリ本体とプロバイダープラグインを更新してください。", "果办服务声明": "OfficeAce サービス声明", "查看平台": "対象を見る", "查看签到记录": "チェックイン記録を見る", "查询于 {time}": "{time} にクエリ", "查询任务": "タスクをクエリ", "查询任务树并一键点亮 / 领奖(含开学季与猫猫旅行)": "タスクツリーを照会してワンクリックで点灯/受け取り(新学期・ねこ旅行を含む)", "查询只读取套餐状态,点击开通后才会执行": "照会ではプランの状態のみ読み取ります。有効化ボタンを押した場合のみ実行します。", "查询失败:{error}": "クエリに失敗しました:{error}", "查询套餐": "プランを照会", "查询活动": "キャンペーンを照会", "查询结果": "結果を確認", "桌面端每日积分链路": "デスクトップ版のデイリー積分経路", "次数按账号每天单独计算:重试到上限的账号今天不再重试,明天自动重置。": "回数はアカウントごと・1日ごとに数えます。上限に達したアカウントは本日は再試行せず、明日リセットされます。", "正在为本次领取验证;若出现滑块,请手动完成": "今回の受け取りを認証しています。スライダーが表示された場合は、手動で操作してください。", "正在读取 UMID 组件状态…": "UMID コンポーネントの状態を読み込み中…", "正在读取定时签到数据…": "定期チェックインデータを読み込み中…", "正在读取签到数据…": "チェックインデータを読み込み中…", "每个签到计划对应一组补签设置": "各スケジュールに補完設定が対応", "每个账号每天在区间内随机执行一次;开始与结束相同则按固定时刻执行。": "各アカウントは毎日、時間帯内のランダムな時刻に一度実行されます。開始と終了が同じ場合は固定時刻に実行します。", "每天 {time}": "毎日 {time}", "每天 {time} · {scope}": "毎日 {time} · {scope}", "每天定点巡检 · 一趟推进一步 · 与签到排程互相独立": "毎日定時に巡回 · 1回で1ステップ · チェックインスケジュールとは独立", "每天执行": "毎日実行", "每天按这里的时刻自动巡检一遍 WorkBuddy 国内版账号:没有猫就领养、在家就派出、到站就领奖。一趟只推进一步,所以建议留两个时刻(早上派出、晚上领奖)。企业版与国际版账号自动跳过。": "ここで指定した時刻に WorkBuddy 中国版アカウントを自動巡回します:猫がいなければ里親登録、待機中なら出発、到着済みなら報酬を受け取ります。1回につき1ステップだけ進むため、2つの時刻(朝に出発・夜に受取)を推奨します。エンタープライズ版と国際版のアカウントは自動的にスキップされます。", "每天时刻": "毎日の時刻", "每天自动执行": "毎日自動で実行", "每天补查一次": "毎日一度補完確認", "每天补查一轮,只处理今天未签到的账号。": "毎日一度、本日未チェックインのアカウントのみ確認します。", "每执行一次签到 · 每个账号一条明细 · 结果与收益以后端落账为准": "チェックイン1回ごとに · アカウントごとに1行 · 結果と収益はバックエンドの記録が正", "每日活动签到(+100 积分,已领则中性提示)": "毎日のアクティビティ签到(+100 クレジット、受領済みなら中立の案内)", "每日活跃任务 · 网页会话保活点亮日活,领取才加积分 · 两者可分开执行": "毎日のアクティブタスク · Webチャネルの会話で日活を達成、ポイントは受け取りで加算 · 両方は別々に実行可能", "每日登录积分 · 顺带领取会员活动 · 访客账号无积分体系(跳过)": "毎日ログインポイント · あわせて会員アクティビティを受け取り · ゲストアカウントはポイント体系なし(スキップ)", "每日福利 · 领取 → 确认 → 回读核实 · 按北京时间自然日重置": "デイリー特典 · 受け取り → 確認 → 読み戻し検証 · 北京時間の自然日でリセット", "每日签到": "デイリーチェックイン", "每日签到积分": "毎日チェックインポイント", "每条条目各有时刻与范围 · 各自当天去重 · 错过时点开机自动补签": "スケジュールごとに時刻と範囲 · 当日はそれぞれ重複排除 · 起動時に自動補完", "每账号一条明细": "アカウントごとに 1 件", "每账号一条明细 · 点此查看「签到记录」": "アカウントごとに1行 · 「チェックイン記録」を開く", "每账号每天最多重试(次)": "各アカウントの一日最大再試行回数", "没有专属时间的平台跟随默认时间;已有专属或自定义时间的平台不会被覆盖。": "専用時刻がない対象は既定に従います。専用・カスタム時刻は上書きしません。", "没有匹配的平台": "一致する対象なし", "没有可执行账号": "実行できるアカウントなし", "没有可签到的账号": "チェックインできるアカウントがありません", "没有可领套餐的账号(ZCode 未添加)。": "受け取れるプランのあるアカウントがありません(ZCode 未追加)。", "没有可领福利的账号(CodeArts / ZCode 未添加)。": "受け取れる特典のあるアカウントがありません(CodeArts / ZCode が未追加)。", "没有支持成长任务的账号(需要 WorkBuddy 国内版)。": "成長タスクに対応するアカウントがありません(WorkBuddy 中国版が必要)。", "没有支持新手福利的账号": "初心者ボーナスに対応するアカウントがありません", "没有支持新手福利的账号 —— 目前有 Loomy、小浣熊、CodeArts 三家。": "初心者ボーナスに対応するアカウントがありません —— 現在は Loomy、小浣熊、CodeArts の 3 社です。", "没有支持活动福利的账号,请添加账号并更新提供商插件。": "キャンペーン特典に対応するアカウントがありません。アカウントを追加し、プロバイダープラグインを更新してください。", "没有符合条件的账号。": "条件に一致するアカウントはありません。", "没有符合筛选条件的签到记录": "絞り込み条件に一致するチェックイン記録がありません", "没有需要执行的任务": "実行するタスクはありません", "活动奖励领取成功": "キャンペーン報酬を受け取りました", "活动尚未开始(上游接口未部署)": "キャンペーンは未開始です(上流のエンドポイントが未デプロイ)", "活动开始:{time}": "キャンペーン開始:{time}", "活动按自然日发新套餐,每天可领一次": "キャンペーンは暦日ごとに新しいプランを配布します。受け取りは 1 日 1 回までです", "活动未开放或已结束,请重新查询": "キャンペーンは未開始または終了しています。再照会してください。", "活动福利": "イベント特典", "活动福利接口不可用,请更新网关后重试": "キャンペーン特典 API を利用できません。ゲートウェイを更新して再試行してください。", "活动窗口重试": "受付時間の再試行", "活动窗口重试已关闭,等待窗口或活动下发的账号不会自动再试。": "受付時間の再試行はオフです。受付時間やイベントの配信を待っているアカウントは自動再試行されません。", "活动领取未成功,请重新查询后再试": "特典を受け取れませんでした。再照会してからやり直してください。", "活动(campaign)领取 · 每天 10:00 刷新": "イベント(campaign)の受け取り · 毎日 10:00 に更新", "活跃上报与保活均未成功,且活动未开启": "アクティビティの報告とキープアライブの両方に失敗し、キャンペーンも未実施です", "活跃上报完成,但保活未成功且活动未开启": "アクティビティの報告は完了しましたが、キープアライブに失敗し、キャンペーンも未実施です", "活跃上报完成,但活动未开启": "アクティビティを報告しましたが、キャンペーンは未実施です", "活跃上报成功": "アクティビティの報告に成功しました", "活跃保活失败": "アクティブのキープアライブに失敗しました", "活跃保活完成": "アクティブのキープアライブが完了しました", "活跃保活完成,但活动未开启": "アクティブのキープアライブは完了しましたが、イベントが有効ではありません", "活跃保活完成,但活跃上报失败且活动未开启": "キープアライブは完了しましたが、アクティビティの報告に失敗し、キャンペーンも未実施です", "添加条目": "スケジュールを追加", "添加模型": "モデルを追加", "清单为空 —— 保存后恢复缺省链": "リストが空です — 保存すると既定のチェーンに戻ります", "清单里已经有「{name}」": "リストに「{name}」はすでにあります", "清空失败:{error}": "クリアに失敗しました:{error}", "清空签到记录": "チェックイン記録をクリア", "滚动 24 小时签到;按插件返回的时间等待下一次领取,不以自然日重复领取": "前回から 24 時間のチェックイン。日付の切替で繰り返さず、プラグインが返す次回時刻まで待ちます。", "点「套餐明细」看领到了哪几份、什么时候生效;活动期内每天可再领": "「プラン明細」で受け取ったプランと有効になる時期を確認できます。キャンペーン期間中は毎日また受け取れます", "点击行展开账号明细 · 单账号签到不受范围限制": "行をクリックしてアカウントの詳細を展開 · 単一アカウントのチェックインは範囲の制限を受けません", "点进去查看任务并领取": "タップしてタスクを確認し受け取る", "状态未确认": "状態未確認", "独立链路 · 只提供手动入口 · 不进自动签到": "独立した経路 · 手動入口のみ · 自動チェックインには含まれない", "猫猫旅行": "ねこ旅行", "猫猫旅行失败:{error}": "ねこ旅行に失敗:{error}", "猫猫旅行失败:{message}": "ねこ旅行に失敗:{message}", "猫猫旅行定时排程": "猫猫旅行スケジュール", "猫猫旅行:{message}": "ねこ旅行:{message}", "猫猫旅行:{n} 个动作,+{credit} 积分": "猫猫旅行:{n} 件のアクション、+{credit} クレジット", "猫猫旅行:{n} 个动作,+{credit} 积分,{failed} 个失败": "猫猫旅行:{n} 件のアクション、+{credit} クレジット、{failed} 件失敗", "用免费模型与网页会话维持账号活跃 · 不领取奖励": "無料モデルとWebチャネルの会話でアカウントのアクティブ状態を維持 · 報酬は受け取らない", "由官方按期自动发放,这里只展示记录,不重复领取。": "公式サービスが予定日に自動付与します。ここでは記録の閲覧のみで、重複取得はしません。", "确定删除「{name}」?删除后到点不再执行。": "「{name}」を削除しますか?削除後は予定時刻に実行されません。", "确定删除「{name}」?对应的定时补签与活动重试也会一并移除,签到记录保留。": "「{name}」を削除しますか?対応する補完と再試行も削除します。記録は残ります。", "确定清空全部签到记录?清空后无法恢复。": "すべてのチェックイン記録をクリアしますか?クリア後は復元できません。", "确定清空当前筛选出的签到记录?清空后无法恢复。": "現在の絞り込みに一致するチェックイン記録をクリアしますか?クリア後は復元できません。", "确认兑换": "引き換えを確定", "确认把这份权益兑换到当前账号?兑换后可能无法撤销。": "この特典を現在のアカウントで引き換えますか?取り消せない場合があります。", "移除 {name}": "{name} を削除", "立即全部签到": "今すぐ一括チェックイン", "立即巡检全部": "今すぐ全件巡回", "立即执行「{name}」会手动签到整个计划范围,不等待平台时点。窗口未开的平台可能仍无法领取。": "「{name}」を今すぐ実行すると対象全体を時刻待ちせず手動チェックインします。受付開始前は受け取れない場合があります。", "等待时点": "時刻待ち", "等待签到区间": "チェックイン時間帯待ち", "等待签到时间": "チェックイン時刻待ち", "签到": "チェックイン", "签到与补签计划已暂停,配置仍保留;手动执行不受总开关影响。": "チェックインと補完は停止中です。設定は保持され、手動実行はマスタースイッチの影響を受けません。", "签到中…": "チェックイン中…", "签到中心分区": "チェックインセンターのセクション", "签到功能分类": "チェックイン機能の分類", "签到区间": "チェックイン時間帯", "签到失败:{error}": "チェックインに失敗しました:{error}", "签到完成:{succeeded}/{total} 成功{active},{failed} 个失败": "チェックイン完了:{succeeded}/{total} 成功{active}、{failed} 件失敗", "签到完成:{success}/{total} 成功,保活 {active},失败 {failed}": "チェックイン完了:{success}/{total} 成功、{active} 件のアクティブ維持、{failed} 件失敗", "签到成功": "チェックインに成功しました", "签到提供商": "チェックインプロバイダー", "签到日期按北京时间计算": "チェックインの日付は北京時間で計算されます", "签到时间": "チェックイン時刻", "签到类型": "チェックインの種類", "签到范围": "チェックイン範囲", "签到触发时刻": "チェックイン実行時刻", "签到计划": "チェックインスケジュール", "签到记录": "チェックイン記録", "签到记录时间范围": "チェックイン記録の時間範囲", "签到记录表": "チェックイン記録テーブル", "管理定时签到": "定期チェックインを管理", "累计签到记录": "累計チェックイン記録", "结束时间不能早于开始时间,暂不支持跨天区间。": "終了は開始より前にできません。日をまたぐ時間帯にはまだ対応していません。", "结算于 {time}": "{time} に確定", "编辑签到计划": "チェックインスケジュールを編集", "缺少套餐开通凭证,请通过果办网页登录补齐授权": "プラン有効化の認証情報が不足しています。OfficeAce の Web ログインで認可を補ってください。", "缺少开通凭证": "有効化の認証情報が不足", "网关设备组件": "ゲートウェイのデバイスコンポーネント", "能量 {n}": "エネルギー {n}", "腾讯每日签到接口 · 仅国内版": "Tencent のデイリーチェックイン API · 中国版のみ", "自动巡检已暂停:{reason}": "自動巡回は一時停止中です:{reason}", "自动执行已开启": "自動実行有効", "自动执行已暂停": "自動実行停止中", "自动执行总开关": "自動実行マスタースイッチ", "自定义时间": "カスタム時刻", "至少勾一家才能保存(不勾等于这条条目不签到)": "保存するには 1 社以上選択してください(未選択=このエントリは何もチェックインしません)", "补签不早于": "補完の開始下限", "补签不早于 {time}": "補完は {time} 以降", "补签单独设置,只检查今天还没有签到的账号。": "補完は別設定で、本日未チェックインのアカウントのみ確認します。", "补签取「主签到区间结束加等待间隔」与「补签不早于」中较晚的时刻,不会提前补签尚未轮到的账号。": "補完は「メイン時間帯の終了+待機間隔」と「補完の開始下限」の遅い方に実行します。順番待ちのアカウントを早めに処理しません。", "补签在主签到区间结束后执行,只补未签到账号。": "補完はメイン時間帯の終了後、未チェックインのアカウントのみ処理します。", "补签已关闭": "補完無効", "补签已关闭,不影响主签到;开启后会自动生成各平台的补签安排。": "補完は無効ですがメイン実行には影響しません。有効にすると各対象の補完時刻を生成します。", "补签已开启": "補完有効", "补签检查": "補完確認", "补签计划": "補完スケジュール", "触发会话活跃并观测积分变化;未观测到新发放时不会标为已签到": "セッションをアクティブにしてポイントの変化を確認します。新しい付与が確認できない場合、チェックイン済みにはしません。", "计划名称": "スケジュール名", "订单 {order} · 第 {period} 期": "注文 {order} · 第 {period} 期", "设备校验未就绪,部分活动可能不显示:{reason}": "デバイス認証が利用できないため、一部のキャンペーンが表示されない場合があります:{reason}", "设置各平台每天的签到时间,按窗口分批执行。": "各対象の毎日時刻を設定し、受付時間ごとに実行します。", "设置定时补签": "定期補完を設定", "设置每天的签到区间,各账号在区间内随机错峰执行。": "毎日のチェックイン時間帯を設定します。各アカウントを時間帯内でランダムに分散して実行します。", "设置活动窗口重试": "受付時間の再試行を設定", "设置补签": "補完を設定", "该权益已兑换,无需重复提交": "この特典は引き換え済みです。再送信は不要です。", "该活动已领取,无需重复领取": "この特典は受け取り済みです。再度受け取る必要はありません。", "该账号当前没有可领取的限时活动": "このアカウントで現在受け取れる期間限定特典はありません", "请填写合法区间,结束不早于开始,并至少选择一家提供商。": "終了が開始より前にならない有効な時間帯を入力し、プロバイダーを一つ以上選択してください。", "请检查时间、间隔和次数是否在允许范围内。": "時刻・間隔・回数が許容範囲内か確認してください。", "请至少选择一个签到平台": "チェックイン対象を一つ以上選択してください", "读取定时签到数据失败:{error}": "定期チェックインデータの読み込みに失敗しました:{error}", "读取签到数据失败:{error}": "チェックインデータの読み込みに失敗しました:{error}", "读取签到记录失败:{error}": "チェックイン記録の読み込みに失敗しました:{error}", "调整重试": "再試行を調整", "豆包工作今日领取仍未确认,请前往官方客户端查看;再次点击仅查询结果,不会重复领取": "豆包工作の本日の受け取りは未確認です。公式アプリで確認してください。再度クリックしても結果のみを照会し、重複して受け取りません。", "豆包工作签到奖励已领取,已回查确认": "豆包工作のチェックイン報酬を受け取り、再照会で確認しました。", "豆包工作领取结果待确认,稍后只查询结果,不会重复提交领取": "豆包工作の受け取り結果を確認中です。以後は結果のみを照会し、受け取りを重複送信しません。", "账号未使用官方果办网关地址,无法在此开通免费套餐": "このアカウントは OfficeAce 公式ゲートウェイを使用していないため、ここでは無料プランを有効にできません。", "跟随默认时间": "既定時刻に従う", "跳过 {n}": "スキップ {n}", "运营活动交付(领取 → 确认 → 回读核实)· 领的是套餐赠送积分": "運営イベントの受け渡し(受け取り → 確認 → 読み戻しで検証)· 受け取るのはプラン特典積分", "还有 {n} 个平台未执行": "未実行の対象が {n} 件", "还没执行过": "まだ実行されていません", "还没有可签到的提供商。签到能力随提供商插件包提供,装好并添加账号后这里就会出现。": "チェックインできるプロバイダーはまだありません。チェックイン機能はプロバイダープラグインパックに含まれています。パックをインストールしてアカウントを追加するとここに表示されます。", "还没有定时条目 —— 点「添加条目」建一条,或到「签到中心」手动签到。": "スケジュールがまだありません —— 「スケジュールを追加」で作成するか、「チェックインセンター」で手動チェックインしてください。", "还没有签到计划,先选择平台和默认时间。": "スケジュールがありません。対象と既定時刻を選択してください。", "还没有签到记录 —— 手动签到或等定时条目执行后,明细会出现在这里。": "チェックイン記録はまだありません —— 手動チェックインまたは定期実行の後に、明細がここに表示されます。", "还没有记录": "記録はまだありません", "这个账号没有新手任务": "このアカウントに初心者タスクはありません", "这里只修改定时签到;补签和活动重试配置保持原样,在「定时补签」页单独设置。": "ここでは定期チェックインのみ変更します。補完と再試行の設定は保持され、「定期補完」で別に設定します。", "这里只管理签到时间;补签与活动窗口重试在独立页设置。": "ここではチェックイン時刻のみ管理します。補完と再試行は別ページで設定します。", "连登 {n} 天": "連続ログイン {n} 日", "选填": "任意", "选择 {name}": "{name} を選択", "选择平台后显示实际签到时间": "対象を選ぶと実際の時刻を表示", "部分": "一部", "重新查询": "再確認", "重新检查": "再確認", "重签": "再チェックイン", "重试": "再試行", "重试关闭": "再試行無効", "重试已暂停": "再試行停止中", "重试开启": "再試行有効", "重试间隔(分钟)": "再試行間隔(分)", "间隔 {gap} 分钟 · 每账号每天最多重试 {limit} 次": "間隔 {gap} 分 · 各アカウント一日最大 {limit} 回", "间隔填 0 会关闭活动窗口重试;定时补签仍至少等待 1 分钟,不会一起关闭。": "間隔 0 はイベント再試行を無効化します。定期補完は一分以上待機し、同時には無効になりません。", "限时体验套餐 · 领取需滑块验证码 · 逐份查看与领取": "期間限定お試しプラン · 受け取りにはスライダー認証が必要 · 1 件ずつ確認して受け取り", "限时体验套餐(start-plan),活动期内每天一份 · 领取需滑块验证码": "期間限定体験プラン(start-plan)。開催期間中は毎日 1 件 · 受け取りにはスライダー認証が必要", "限时活动与体验套餐 · 查询后逐项领取 · 不影响每日签到": "期間限定特典と体験プラン · 照会後に個別に受け取り · 毎日のチェックインとは独立", "随机签到开始": "ランダムチェックイン開始", "随机签到结束": "ランダムチェックイン終了", "随签到计划暂停": "チェックインスケジュールに連動して停止", "需人工处理": "手動での対応が必要", "需真实操作": "実際の操作が必要", "需要人工验证": "手動認証が必要", "非活动期": "イベント期間外", "项": "件", "预计发放:{time}": "付与予定:{time}", "领取": "受け取る", "领取中": "受け取り中", "领取中…": "受け取り中…", "领取免费 CodingPlan(按需:套餐有效时只回读额度)": "無料 CodingPlan を取得(オンデマンド:プラン有効時はクォータを読むだけ)", "领取后 {days} 天有效": "受け取り後 {days} 日間有効", "领取失败": "受け取りに失敗", "领取失败:{error}": "受け取りに失敗しました:{error}", "领取奖励": "報酬を受け取る", "领取截止:{time}": "受け取り期限:{time}", "领取时间:{time}": "受け取り日時:{time}", "领取结果待确认": "受け取り結果を確認中", "领取结果待确认,请稍后查询;不会重复提交领取": "受け取り結果を確認中です。後で再照会してください。受け取りを重複送信しません。", "领取被拒绝": "受取拒否", "领取通常需要过一次滑块验证;活动套餐多为当天稍晚生效,领取后可在桌面端「账号」里看套餐明细。": "受け取りには通常スライダー認証が必要です。キャンペーンのプランは当日の遅い時間に有効になることが多く、受け取り後はデスクトップ版「アカウント」でプラン明細を確認できます。", "领取验证任务已结束,请到套餐明细查看结果": "この認証タスクは終了しました。プラン詳細で結果を確認してください。", "额度到期:{time}": "クレジット有効期限:{time}", "验证凭据正在提交,领取结果请查看签到记录": "認証情報を送信しています。受け取り結果はチェックイン履歴で確認してください。", "验证提交结果未确认,请查看签到记录,勿重复领取": "認証の送信結果が未確認です。チェックイン履歴を確認し、受け取りを繰り返さないでください。", "默认 {time} · {n} 个平台 · {groups} 组签到时间": "既定 {time} · {n} 対象 · {groups} 組の時刻", "默认使用第一把可用 API Key,想换就在上面选一把": "既定では最初の利用可能な API Key を使います。変更する場合は上で選択してください。", "默认签到时间": "既定チェックイン時刻", "(共 {n} 个账号)": "(全 {n} アカウント)", "(能量 / 连登读数本次未取到)": "(エネルギー/連続ログインの数値は今回取得できませんでした)", ",日活保活 {n} 个": "、日活キープアライブ {n} 件", " 字段": " フィールド", " 的 ": " の ", "{enabled} / {total} 个已开启": "{enabled} / {total} 件有効", "{name}开关": "{name}のスイッチ", "{name}间隔": "{name}の間隔", "{name}间隔必须是 {min}–{max} 分钟的整数": "{name}の間隔は {min}~{max} 分の整数で指定してください", "{n} 秒后": "{n} 秒後", "✅ {task}:{summary}": "✅ {task}:{summary}", "✅ 已更新「{label}」": "✅ 「{label}」を更新しました", "上次执行 {time}": "前回の実行 {time}", "上次执行 {time}({result})": "前回の実行 {time}({result})", "上次执行中断,没有完整结果;请核对账号状态": "前回の実行が中断され、完全な結果がありません。アカウントの状態を確認してください。", "下次执行 {time}": "次回の実行:{time}", "下次执行 {time}({relative})": "次回の実行 {time}({relative})", "仅维护过期或即将过期的凭证": "期限切れまたは期限間近の認証情報のみを更新します", "仅记录状态与结果,不展示密钥或令牌。": "状態と結果のみを記録し、キーやトークンは表示しません。", "仅重试失败项": "失敗した項目のみ再試行", "仅重试这一项": "この項目のみ再試行", "任务正在执行中,请稍候": "タスクは実行中です。しばらくお待ちください。", "任务清单": "タスク一覧", "任务配置保存在 ": "タスク設定の保存先は ", "停留在「报表」页时按此间隔重新拉取统计数据;页面不可见时不请求。": "「レポート」ページを開いている間、この間隔で統計データを再取得します;ページが非表示のときはリクエストしません。", "停留在「日志」页时按此间隔重新拉取系统事件;页面不可见时不请求。": "「ログ」ページを開いている間、この間隔でシステムイベントを再取得します;ページが非表示のときはリクエストしません。", "停留在「请求日志」页时按此间隔重新拉取请求日志;页面不可见时不请求。": "「リクエストログ」ページを開いている間、この間隔でリクエストログを再取得します;ページが非表示のときはリクエストしません。", "全部触发方式": "すべての実行元", "全部跳过": "すべてスキップ", "共 {n} 次执行": "計 {n} 回の実行", "关闭自动维护不影响手动执行,也不影响对话请求所需的按需续期。": "自動メンテナンスをオフにしても、手動実行やチャットリクエスト時に必要な認証情報の更新には影響しません。", "冷却中,{relative}重试": "クールダウン中、{relative}後に再試行", "冷却至 {time}": "{time} までクールダウン", "凭证变化": "認証情報の変更", "凭证已更新": "認証情報を更新しました", "凭证未过期或临期": "認証情報は期限切れでも期限間近でもありません", "凭证维护": "認証情報のメンテナンス", "凭证自动维护": "認証情報の自動メンテナンス", "分钟执行一次": "分ごとに実行", "刚刚已执行,请稍后重试": "このタスクは直前に実行されました。少し待ってから再試行してください。", "刷新前有效期": "更新前の有効期限", "刷新后有效期": "更新後の有効期限", "刷新记录": "記録を再読み込み", "即将执行": "まもなく実行", "原因 / 说明": "理由・説明", "去账号页处理": "アカウントを開く", "只刷新过期或即将过期的账号凭证": "期限切れまたは期限間近のアカウント認証情報のみを更新します", "可填 {min}–{max}": "入力範囲:{min}~{max}", "可填 {min}–{max} {unit}(默认 {def} {unit})": "{min}–{max} {unit} を入力可能(既定 {def} {unit})", "固定模型清单": "固定モデル一覧", "失败重试": "失敗項目の再試行", "定时任务已刷新": "定期タスクを更新しました", "定期向 GitHub 查询最新发布版本,默认每 20 分钟一次。检查结果、排期和限流冷却跨重启保留;手动检查也会合并重复请求并遵守冷却。开关与间隔在「软件更新」面板的「更新设置」弹窗里配置(定时任务页不再渲染这一条)。": "GitHub に最新のリリースバージョンを定期的に問い合わせます(既定は 20 分ごと)。チェック結果・スケジュール・レート制限のクールダウンは再起動をまたいで保持されます;手動チェックも重複リクエストをまとめ、クールダウンに従います。スイッチと間隔は「ソフトウェア更新」パネルの「更新設定」ダイアログで設定します(定期タスクページにはこの行を表示しません)。", "定期拉取最新模型清单,重启沿用排期与缓存。客户端读取模型列表的后台刷新也遵守本任务开关、间隔和失败冷却;手动获取模型可提前刷新。": "最新のモデルリストを定期的に取得します。再起動後もスケジュールとキャッシュを引き継ぎます。クライアントがモデル一覧を読み取る際のバックグラウンド更新も、このタスクのスイッチ・間隔・失敗時のクールダウンに従います;手動でのモデル取得なら前倒しで更新できます。", "定期拉取最新模型清单,重启沿用排期与缓存。客户端读取模型列表的后台刷新也遵守本任务开关、间隔和失败冷却;手动获取模型可提前刷新。同一轮顺带刷新 models.dev 模型元数据(能力位与思考档位,可在设置页单独关闭)。": "最新のモデルリストを定期的に取得します。再起動後もスケジュールとキャッシュを引き継ぎます。クライアントがモデル一覧を読み取る際のバックグラウンド更新も、このタスクのスイッチ・間隔・失敗時のクールダウンに従います;手動でのモデル取得なら前倒しで更新できます。同じラウンドで models.dev のモデルメタデータ(能力フラグと思考ティア、設定ページで個別にオフにできます)も更新します。", "定期获取各提供商的最新模型清单": "各プロバイダーの最新モデル一覧を定期的に取得します", "定期遍历账号,只刷新已过期或临期的凭证。重启后沿用上次排期,失败账号在冷却后重试;转发需要的按需续期不受此开关影响。": "アカウントを定期的に走査し、期限切れまたは期限間近の認証情報だけを更新します。再起動後も前回のスケジュールを引き継ぎ、失敗したアカウントはクールダウン後に再試行します;転送時に必要なオンデマンド更新はこのスイッチの影響を受けません。", "客户端触发": "クライアントから実行", "尚未执行维护": "まだ実行されていません", "尚未执行维护,自动或手动执行后会显示结果": "メンテナンスはまだ実行されていません。自動または手動実行後に結果が表示されます。", "已在设置里关闭 models.dev 模型元数据": "設定で models.dev のモデルメタデータが無効になっています", "已执行": "実行しました", "已更新 {n} 条": "{n} 件を更新しました", "已续期并确认凭证更新": "認証情報を更新し、変更を確認しました", "已获取最新模型目录": "最新のモデルカタログを取得しました", "建议重试时间": "推奨の再試行時刻", "当前没有可用的目录账号": "カタログ取得に利用できるアカウントがありません", "成功提供商": "更新済みプロバイダー", "成功账号": "更新済みアカウント", "手动触发": "手動実行", "执行中断": "実行中断", "执行中断,结果可能已部分生效,请先核对账号状态": "実行が中断されました。一部の変更は反映済みの可能性があるため、先にアカウントの状態を確認してください。", "执行失败:{reason}": "実行に失敗しました:{reason}", "执行时的结果快照,不随账号后续变化而改变": "実行時点の結果です。その後のアカウント変更は反映されません", "执行时间": "実行日時", "执行明细": "実行の詳細", "执行汇总": "実行サマリー", "执行间隔(分钟)": "実行間隔(分)", "报表自动刷新": "レポートの自動更新", "指定账号不属于该提供商、未启用或没有可用凭证": "指定アカウントは別のプロバイダーに属しているか、無効か、有効な認証情報がありません", "提供商当前不可用,未执行目录更新": "プロバイダーを利用できないため、カタログを更新しませんでした", "搜索账号或提供商": "アカウントまたはプロバイダーを検索", "收起明细": "詳細を閉じる", "改动立即生效,不需要重启程序": "変更はすぐに反映され、アプリの再起動は不要です", "无失败项": "失敗なし", "日志页自动刷新": "ログページの自動更新", "明细状态筛选": "項目の状態で絞り込み", "暂无维护记录,首次执行后会自动保存": "メンテナンス記録はまだありません。初回実行後に自動保存されます。", "暂无记录": "記録なし", "最近一次": "前回の実行", "有失败项": "失敗あり", "有效期已延长": "有効期限を延長しました", "未使用账号": "アカウント未使用", "未变更": "変更なし", "未注册的提供商": "未登録のプロバイダー", "未返回失败原因": "失敗の理由が返されませんでした", "本次无需更新,沿用现有状态": "今回は更新不要のため、現在の状態を維持します", "本轮共 {n} 项": "今回の実行:計 {n} 項目", "本轮没有符合条件的项目": "今回の実行に条件に一致する項目はありません", "查看凭证与模型目录的每次维护结果,失败和跳过都有原因": "認証情報とモデルカタログの各メンテナンス結果を確認できます。失敗やスキップの理由も表示します", "查看原因": "理由を見る", "查看明细": "明細を見る", "查看详情": "詳細を見る", "模型基础信息": "モデルの基本情報", "模型目录": "モデルカタログ", "模型目录刷新": "モデルカタログ更新", "模型目录更新": "モデルカタログ更新", "正在加载定时任务…": "定期タスクを読み込み中…", "正在读取维护记录…": "メンテナンス記録を読み込み中…", "此前仅有汇总,尚无逐项记录": "以前はサマリーのみを記録していたため、項目別の明細はありません", "每 {n} 分钟": "{n} 分ごと", "没有可显示的定时任务。后端未返回任务清单,请确认网关正在运行。": "表示できる定期タスクがありません。バックエンドがタスク一覧を返しませんでした。ゲートウェイが稼働しているか確認してください。", "没有符合筛选条件的维护记录": "絞り込み条件に一致するメンテナンス記録はありません", "沿用缓存或当前没有可用的目录来源": "キャッシュを使用中、または利用可能なカタログ取得元がありません", "沿用缓存,尚未到刷新时间": "更新時刻前のため、キャッシュを使用します", "状态每 20 秒自动同步": "状態は 20 秒ごとに自動同期", "由页面按间隔自动刷新": "ページが間隔に従って自動更新", "登录授权已失效,需要重新登录该账号": "ログイン認証が失効しています。このアカウントに再ログインしてください。", "目录最近更新时间": "カタログの最終更新日時", "立即执行": "今すぐ実行", "立即检查": "今すぐ確認", "维护已完成,结果已保存": "メンテナンスが完了し、結果を保存しました", "维护已开始,结果会自动更新,可离开此页": "メンテナンスを開始しました。結果は自動更新されます。このページを離れても実行は続きます。", "维护已执行,但完整结果未能保存;请先核对账号状态,不要反复执行": "メンテナンスは実行されましたが、完全な結果を保存できませんでした。繰り返し実行せず、先にアカウントの状態を確認してください。", "维护已结束,有失败项,请查看明细": "メンテナンスが終了しましたが、一部の項目が失敗しました。明細を確認してください。", "维护接口不可用,请更新网关并重新打开页面": "メンテナンス機能を利用できません。ゲートウェイを更新してページを開き直してください。", "维护正在执行,完成后会显示逐项结果": "メンテナンスを実行中です。完了後に項目別の結果が表示されます。", "维护类型": "メンテナンスの種類", "维护记录保留 {days} 天,最多 {count} 次;仅保存结果,不保存密钥或令牌。": "メンテナンス記録は {days} 日間、最大 {count} 回分を保持します。結果のみを保存し、キーやトークンは保存しません。", "维护设置": "メンテナンス設定", "维护设置未能保存到数据库,请检查磁盘空间和权限": "メンテナンス設定をデータベースに保存できませんでした。ディスクの空き容量と権限を確認してください。", "自动和手动维护,统一在这里查看": "自動・手動メンテナンスをまとめて確認", "自动维护与手动执行共用同一份结果记录": "自動実行と手動実行の結果は同じ履歴に記録されます", "自动维护已关闭": "自動メンテナンスはオフです", "自动触发": "自動実行", "触发方式": "実行元", "该提供商不支持主动刷新凭证(没有续期手段)": "このプロバイダーは認証情報の更新に対応していません", "该提供商使用固定模型清单": "このプロバイダーは固定のモデル一覧を使用します", "该次执行未完成,没有完整明细": "この実行は完了していないため、完全な明細はありません", "请求日志页自动刷新": "リクエストログページの自動更新", "账号已不存在,未执行维护": "アカウントが存在しないため、メンテナンスを実行しませんでした", "软件版本检查": "ソフトウェア更新確認", "还没有执行记录": "実行記録はまだありません", "逐个提供商更新模型目录,模型基础信息单独列出结果": "プロバイダーごとにカタログを更新し、モデル基本情報の結果は別に表示します", "部分失败": "一部失敗", "部分设置可能已保存,请核对后重试:{reason}": "一部の設定は保存済みの可能性があります。確認してから再試行してください:{reason}", "重新加载": "再読み込み", "重试生成新记录,不覆盖本次结果": "再試行は新しい記録を作成し、今回の結果は上書きしません", "间隔不能为空(可填 {min}–{max} {unit})": "間隔を空にはできません({min}–{max} {unit} を入力可能)", "间隔必须在 {min}–{max} {unit} 之间(当前填的是 {value})": "間隔は {min}–{max} {unit} の範囲で指定してください(現在の入力値は {value})", "间隔必须是整数": "間隔は整数で入力してください", "页面自动刷新": "ページの自動更新", "debug 及以上": "debug 以上", "info 及以上": "info 以上", "warn 及以上": "warn 以上", "{matched} / {total} 条": "{matched} / {total} 件", "{minutes} 分 {seconds} 秒": "{minutes} 分 {seconds} 秒", "{n} 个启动失败": "{n} 個が起動失敗", "{n} 个已就绪": "{n} 個が準備完了", "{n} 个等待恢复": "{n} 個が復旧待ち", "{n} 条": "{n} 件", "{n} 毫秒": "{n} ミリ秒", "✅ 已导出 {count} 条日志到 {file}": "✅ {count} 件のログを {file} にエクスポートしました", "上游": "上流", "上游接口请求": "上流 API リクエスト", "事件摘要": "イベント概要", "事件日志时间范围": "イベントログの時間範囲", "事件详情": "イベント詳細", "仅 error": "error のみ", "仅显示调试记录,供排查问题使用。": "問題の調査に使用するデバッグ記録のみを表示します。", "仅错误": "エラーのみ", "余额查询失败": "残高照会に失敗しました", "余额查询完成": "残高照会が完了しました", "余额查询未配置": "残高照会が未設定です", "信息": "情報", "信息及以上": "情報以上", "全部事件": "すべてのイベント", "全部分类": "すべてのカテゴリ", "全部级别": "すべてのレベル", "共享运行环境尚未就绪,不代表这个插件本身损坏。请在插件页查看加载诊断。": "共有実行環境の準備ができていません。プラグイン自体の破損を意味するものではありません。プラグインページで読み込み診断をご確認ください。", "关联标识": "関連 ID", "出站参数归一": "送信パラメータの正規化", "分类": "カテゴリ", "分页按折叠后的组数计算": "ページ数は折りたたみ後のグループ数に基づきます", "加载插件": "プラグインの読み込み", "原始消息": "元のメッセージ", "原始记录": "元の記録", "原始记录 {n} 条": "元の記録 {n} 件", "发生时间": "発生時刻", "各阶段耗时": "各段階の所要時間", "启动结果": "起動結果", "启动超时": "起動タイムアウト", "启动进程": "プロセスの起動", "处理建议": "推奨される対処", "复制原始记录": "元の記録をコピー", "复制失败": "コピーに失敗しました", "复制当前筛选结果": "絞り込み結果をコピー", "复制本页原始记录": "このページの元の記録をコピー", "导出": "エクスポート", "导出当前筛选": "絞り込み結果をエクスポート", "已复制 {n} 条日志": "ログ {n} 件をコピーしました", "已暂停刷新": "更新を一時停止中", "恢复刷新": "更新を再開", "折叠重复日志": "重複ログを折りたたむ", "按分类筛选": "カテゴリで絞り込み", "按最低级别筛选": "最低レベルで絞り込み", "插件名称": "プラグイン名", "插件启动失败": "プラグインの起動に失敗しました", "插件启动存在异常": "一部のプラグインを起動できませんでした", "插件启动完成,{n} 个已就绪": "プラグインの起動完了:{n} 個が準備完了", "插件启动超时": "プラグインの起動がタイムアウトしました", "插件已就绪": "プラグインの準備完了", "插件已恢复运行": "プラグインが復旧しました", "插件暂不可用,等待运行环境恢复": "実行環境の復旧待ちのため、プラグインは一時的に利用できません", "插件暂时无法使用": "プラグインは一時的に利用できません", "插件未能就绪": "プラグインの準備が完了しませんでした", "插件未能正常停止": "プラグインを正常に停止できませんでした", "插件编号": "プラグイン ID", "插件进程已退出": "プラグインのプロセスが終了しました", "搜索关键字": "キーワードを検索", "搜索插件、消息、提供商或账号": "プラグイン、メッセージ、プロバイダー、アカウントを検索", "搜索插件、消息、提供商或账号…": "プラグイン、メッセージ、プロバイダー、アカウントを検索…", "搜索消息、提供商或账号": "メッセージ、プロバイダー、アカウントを検索", "搜索消息、提供商或账号…": "メッセージ、プロバイダー、アカウントを検索…", "搜索消息关键词": "メッセージのキーワードを検索", "搜索消息关键词…": "メッセージのキーワードを検索…", "操作失败:{error}": "操作に失敗しました:{error}", "日志视图": "ログ表示", "日志详情": "ログ詳細", "日志详情视图": "ログ詳細の表示", "显示 {groups} 组 · 原始记录 {entries} 条": "{groups} グループ · 元の記録 {entries} 件", "显示启动汇总和需要关注的事件;单个插件的正常启动记录在“全部事件”中。": "起動の概要と注意が必要なイベントを表示します。各プラグインの正常な起動記録は「すべてのイベント」で確認できます。", "显示所有已保留的事件;技术信息可在详情中查看。": "保存済みのすべてのイベントを表示します。技術情報は詳細で確認できます。", "暂停刷新": "更新を一時停止", "暂无日志": "ログがありません", "暂无日志可导出": "エクスポートできるログがありません", "有 {n} 条新日志": "新しいログが {n} 件あります", "服务": "サービス", "未记录插件名称": "プラグイン名の記録なし", "本次启动超过等待时限。请在插件页查看加载诊断,确认后重新加载。": "起動の待機時間を超えました。プラグインページで読み込み診断を確認してから、再読み込みしてください。", "查看日志详情:{message}": "ログ詳細を表示:{message}", "查看最新": "最新を表示", "模型 {model}": "モデル {model}", "次数": "回数", "正在加载日志…": "ログを読み込んでいます…", "没有符合条件的日志": "条件に一致するログがありません", "没有符合筛选条件的日志": "絞り込み条件に一致するログがありません", "清空中…": "クリア中…", "清空当前筛选": "絞り込み結果をクリア", "清空运行日志": "実行ログをクリア", "状态码": "ステータスコード", "用时 {duration}": "所要時間 {duration}", "登记提供商": "プロバイダーの登録", "相关功能暂不可用,原因见详情": "関連機能は一時的に利用できません。原因は詳細をご確認ください", "确定清空全部运行日志?清空后无法恢复。": "実行ログをすべてクリアしますか?クリアすると元に戻せません。", "确定清空当前筛选出的 {count} 条日志?清空后无法恢复。": "現在の絞り込みで抽出された {count} 件のログをクリアしますか?クリアすると元に戻せません。", "系统事件": "システムイベント", "级别": "レベル", "结束阅读": "閲覧を終了", "结果未确认": "結果未確認", "脱敏": "マスキング", "自动刷新": "自動更新", "自动刷新已关闭": "自動更新はオフです", "自动签到": "自動チェックイン", "补充系统消息": "システムメッセージを追加", "警告": "警告", "警告 {n}": "警告 {n} 件", "警告及以上": "警告とエラー", "计费接口请求": "課金 API リクエスト", "详细信息": "詳細情報", "请在插件页查看加载诊断,确认原因后重新加载。": "プラグインページで読み込み診断を開き、原因を確認してから再読み込みしてください。", "读取日志失败": "ログの読み込みに失敗しました", "调试": "デバッグ", "调试 {n}": "デバッグ {n} 件", "调试详情": "デバッグ詳細", "调试采集未开启,仅显示已保留的记录。可在设置中开启调试模式。": "デバッグ収集はオフです。保存済みの記録のみ表示します。新しい記録を収集するには、設定でデバッグモードを有効にしてください。", "运行日志已清空": "実行ログをクリアしました", "部分插件暂不可用。请在插件页查看异常插件的加载诊断。": "一部のプラグインは一時的に利用できません。プラグインページで該当プラグインの読み込み診断をご確認ください。", "重要事件": "重要イベント", "错误": "エラー", "错误 {n}": "エラー {n} 件", "阅读模式": "閲覧モード", "阅读模式,列表保持不动": "閲覧モード:リストを固定しています", "附加数据": "追加データ", " · {n} 进行中": " · 処理中 {n} 件", " · 会话粘住": " · セッション粘着", "

    无响应原文
    ": "
    レスポンス原文がありません
    ", "
    无法解析响应内容
    ": "
    レスポンスの内容を解析できません
    ", "
    无法解析请求体(不是含 messages 数组的 JSON)
    ": "
    リクエストボディを解析できません(messages 配列を含む JSON ではありません)
    ", "
    无请求原文
    ": "
    リクエスト原文がありません
    ", "
    调用工具 {name}
    ": "
    ツール呼び出し {name}
    ", "响应原文": "レスポンス原文", "思考过程": "思考プロセス", "请求原文": "リクエスト原文", "HTTP {status},但响应体阶段出错": "HTTP {status} ですが、レスポンスボディ段階でエラー", "HTTP {status},但响应体阶段出错:见错误列": "HTTP {status} ですが、レスポンスボディ段階でエラー:エラー列を参照", "{duration} / 首帧 {first}": "{duration} / 初回応答 {first}", "{m}分{s}秒": "{m}分{s}秒", "{n}秒": "{n}秒", "{s}秒{ms}ms": "{s}秒{ms}ms", "↻ {n} 次": "↻ {n} 回", "↻ 重试 {n} 次": "↻ リトライ {n} 回", "✅ 压缩完成": "✅ 圧縮が完了しました", "「仅看进行中」开启时,状态固定为进行中": "「処理中のみ表示」が有効な間、ステータスは処理中に固定されます", "上游模型繁忙,请求已排进上游队列;网关正按上游建议的时长等待后重发(不是登录态或额度问题)": "アップストリームのモデルが混雑しているため、リクエストはアップストリームのキューに入りました。ゲートウェイはアップストリームが推奨した時間だけ待ってから再送信します(ログイン状態やクォータの問題ではありません)", "上游没有返回积分消耗": "アップストリームがポイント消費を返していません", "上游状态码: {status}": "アップストリームのステータスコード:{status}", "上游请求已发出,正在等第一个字节到达(模型的思考时间也在这段)": "アップストリームへのリクエストは送信済みで、最初のバイトの到着を待っています(モデルの思考時間もこの段階に含まれます)", "上游返回错误": "アップストリームがエラーを返しました", "下游请求的模型:{model}": "ダウンストリームが要求したモデル:{model}", "仅清空报文原文": "原文のみクリア", "仅看进行中": "処理中のみ表示", "令牌": "トークン", "体积": "サイズ", "供应商": "プロバイダー", "供应商归属规则": "プロバイダー帰属ルール", "保存中…": "保存中…", "保存归属规则": "帰属ルールを保存", "保留 {count} 条请求记录 · 将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "リクエスト記録 {count} 件を保持 · アップストリーム {upstream} 件、ダウンストリーム本文 {downstream} 件を削除 · DB サイズ {db}", "保留 {count} 条请求记录;将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。用量统计与报表不变。": "リクエスト記録 {count} 件を保持し、アップストリームのデバッグペイロード {upstream} 件とダウンストリーム本文 {downstream} 件を削除します。使用量統計とレポートは変わりません。", "保留统计行与报表,只抹掉请求 / 响应正文。清理后详情弹窗的「预览对话」将无原文可看,统计数字分毫不动。": "統計行とレポートはそのままに、リクエスト / レスポンス本文だけを消去します。クリア後は詳細ダイアログの「会話プレビュー」で原文を確認できなくなりますが、統計数値は一切変わりません。", "保留草稿并读取最新设置": "下書きを保持して最新設定を読み込む", "保留请求记录、用量统计与报表,同时清理上游调试报文和下游请求 / 响应正文。清理后「预览对话」与「原始报文」不再保留原文。有筛选时只清理命中请求的报文;无筛选时清空两侧全部报文。此操作无法恢复。": "リクエスト記録、使用量統計、レポートを保持したまま、アップストリームのデバッグペイロードとダウンストリームのリクエスト / レスポンス本文を削除します。「会話プレビュー」と「生ペイロード」に原文は残りません。絞り込み中は一致するリクエストのペイロードのみ、絞り込みがない場合は両側のすべてのペイロードを削除します。この操作は元に戻せません。", "全部删除": "すべて削除", "全部提供商": "すべてのプロバイダー", "全部模型": "すべてのモデル", "全部状态": "すべてのステータス", "全部请求数据": "すべてのリクエストデータ", "共 {images} 张图片,复用 {cached} 张识读结果": "画像 {images} 枚、読み取り結果 {cached} 件を再利用", "共 {n} 次尝试": "計 {n} 回の試行", "共 {n} 次尝试,最终由 {provider} 承载": "計 {n} 回の試行、最終的に {provider} が処理しました", "其它": "その他", "内容按原样保存,请求头中的凭据字段已替换为 [redacted]": "内容はそのまま保存され、リクエストヘッダー内の認証情報フィールドは [redacted] に置き換えられています", "内部重试": "内部リトライ", "切换视觉模型": "視覚モデルへ切替", "切换路径:": "切替経路:", "列表数据已刷新,请重试(关闭后重新打开这条详情)": "リストのデータが更新されました。もう一度お試しください(閉じてからこの詳細を開き直してください)", "删除归属规则": "帰属ルールを削除", "删除日志记录本身。当前有筛选时只删命中的条目,按天聚合报表不受影响;无筛选时清空全部并重置报表。此方式无法恢复。": "ログレコード自体を削除します。フィルター適用中はヒットした項目だけを削除し、日別集計レポートには影響しません。フィルターなしの場合はすべてをクリアしてレポートをリセットします。この方法では元に戻せません。", "删除请求记录,并同步清理对应的上游调试报文与下游正文。有筛选时只删除命中的记录,按天聚合报表不受影响;无筛选时清空全部并重置报表。此操作无法恢复。": "リクエスト記録と、それに対応するアップストリームのデバッグペイロードおよびダウンストリーム本文を削除します。絞り込み中は一致する記録のみ削除し、日別レポートは保持します。絞り込みがない場合はすべて削除し、レポートもリセットします。この操作は元に戻せません。", "压缩中…": "圧縮中…", "压缩失败:{message}": "圧縮に失敗しました:{message}", "压缩已在后台开始,完成后会自动提示": "圧縮はバックグラウンドで開始されました。完了すると自動で通知されます", "压缩已在进行中": "圧縮はすでに実行中です", "压缩已在进行中,接上它的进度等待完成": "圧縮はすでに実行中です。既存の進捗を引き継いで完了を待ちます", "压缩数据库": "データベース圧縮", "压缩正在后台执行,完成后自动恢复": "圧縮はバックグラウンドで実行中です。完了すると自動的に復帰します", "原始报文": "生ペイロード", "原模型": "元のモデル", "取消": "キャンセル", "另有 {missing} 次尝试未记录明细(只保留最早的 {kept} 条)": "ほかに {missing} 回の試行は明細が記録されていません(古い方から {kept} 件のみ保持)", "另有 {n} 个词命中": "ほかに {n} 語がヒット", "只显示正在转发中的请求(状态列按阶段显示:连接中 / 等待响应 / 响应中 / 重试中,用时列显示已用时)": "転送中のリクエストのみ表示します(ステータス列は段階ごとに表示:接続中 / 応答待ち / 応答中 / リトライ中、所要時間列は経過時間を表示)", "只看失败": "失敗のみ", "只看成功": "成功のみ", "只看进行中": "処理中のみ", "命中了敏感词": "センシティブワードにヒット", "命中依据:{header} · {pattern}": "識別根拠:{header} · {pattern}", "命中的敏感词": "ヒットしたセンシティブワード", "命中规则:{provider} → {client}": "適用ルール:{provider} → {client}", "响应中": "応答中", "响应体": "レスポンスボディ", "响应头": "レスポンスヘッダー", "回收已删除数据占用的磁盘空间(checkpoint + VACUUM,后台执行)": "削除済みデータが占有していたディスク領域を回収します(checkpoint + VACUUM、バックグラウンドで実行)", "图片处理用时:{n} 秒": "画像処理時間:{n} 秒", "在设置 → 通用里开启「调试模式」后,新发生的请求才会保存报文": "設定 → 一般で「デバッグモード」を有効にすると、以降の新しいリクエストでのみペイロードが保存されます", "在路由页查看": "ルーティングページで表示", "处理中": "処理中", "失败": "失敗", "失败请求不记录用量": "失敗したリクエストは使用量を記録しません", "失败({status}):{error}": "失敗({status}):{error}", "失败:{error}": "失敗:{error}", "实际发给上游 {bytes} 字节": "実際にアップストリームへ送信した {bytes} バイト", "客户端": "クライアント", "将删除 {count} 条日志 · 其中 {raw} 条仍带报文原文 · 数据库占用 {db}": "{count} 件のログを削除 · うち {raw} 件はペイロード原文あり · DB サイズ {db}", "将删除 {count} 条请求记录 · 同步清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "リクエスト記録 {count} 件を削除 · アップストリーム {upstream} 件、ダウンストリーム本文 {downstream} 件も削除 · DB サイズ {db}", "将删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "リクエスト記録 {count} 件と、アップストリームのデバッグペイロード {upstream} 件、ダウンストリーム本文 {downstream} 件を削除します。", "尝试 {n} ·": "試行 {n} ·", "尝试明细": "試行明細", "尝试次数": "試行回数", "工具结果": "ツール結果", "工具结果 · {id}": "ツール結果 · {id}", "工具结果图片": "ツール結果の画像", "已删除 {count} 条": "{count} 件を削除しました", "已删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "リクエスト記録 {count} 件と、アップストリームのデバッグペイロード {upstream} 件、ダウンストリーム本文 {downstream} 件を削除しました。", "已受理终止:上游连接已断开,列表稍后刷新为「请求已被手动终止」": "中断を受け付けました:アップストリーム接続は切断されました。リストはまもなく「リクエストは手動で中断されました」に更新されます", "已完成": "完了", "已抹掉 {count} 条报文原文": "{count} 件のペイロード原文を消去しました", "已清理上游调试报文 {upstream} 条、下游正文 {downstream} 条;请求记录与报表已保留。": "アップストリームのデバッグペイロード {upstream} 件とダウンストリーム本文 {downstream} 件を削除しました。リクエスト記録とレポートは保持されています。", "已用时(请求仍在转发中)": "経過時間(リクエストは転送中)", "开启调试模式后仅记录新请求,历史对话无法补录;关闭不会删除已有记录。": "デバッグモードでは有効化後の新しいリクエストのみ記録され、過去の会話は復元できません。無効にしても既存の記録は削除されません。", "归属客户端": "クライアント", "当前筛选范围": "現在の絞り込み範囲", "当前网关未提供上游 / 下游清理统计,请更新网关后再清理。": "現在のゲートウェイはアップストリーム / ダウンストリームのクリア件数を提供していません。ゲートウェイを更新してからクリアしてください。", "成功": "成功", "成功({status})": "成功({status})", "所属请求": "元のリクエスト", "执行清理": "クリアを実行", "报文超过单条上限,请求体 / 响应体已按上限截断": "ペイロードが 1 件あたりの上限を超えたため、リクエストボディ / レスポンスボディは上限で切り詰められています", "抹掉原文": "原文を消去", "按提供商筛选": "プロバイダーで絞り込み", "按提供商筛选(只列日志里出现过的)": "プロバイダーで絞り込み(ログに出現したもののみ表示)", "按时间倒序,全量保留": "時系列の新しい順、全量保持", "按模型筛选": "モデルで絞り込み", "按模型筛选(只列日志里出现过的;精确匹配模型名)": "モデルで絞り込み(ログに出現したもののみ表示;モデル名は完全一致)", "按请求结果筛选": "リクエスト結果で絞り込み", "排队中": "キュー中", "提供商 / 账号": "プロバイダー / アカウント", "提供商: {provider}": "プロバイダー:{provider}", "提示": "備考", "搜索供应商": "プロバイダーを検索", "搜索客户端": "クライアントを検索", "敏": "敏", "敏感词": "センシティブワード", "数据库占用包含主文件与 WAL 文件;清理后可点击「压缩数据库」回收空闲空间。": "DB サイズにはメインファイルと WAL ファイルを含みます。クリア後は「データベース圧縮」で未使用領域を回収できます。", "断开上游连接,明细记为「请求已被手动终止」": "アップストリーム接続を切断します。明細には「リクエストは手動で中断されました」と記録されます", "无报文原文(未开启「调试模式」,或已被清理)": "原文ペイロードがありません(デバッグモードが無効だったか、クリア済みです)", "无结果记录": "結果の記録なし", "旧版本保存的正文可能已截断,无法恢复缺失内容": "旧バージョンで保存された本文は切り詰められている可能性があり、欠落した内容は復元できません", "时间": "時刻", "暂无请求日志,网关还没有转发过请求": "リクエストログはまだありません。ゲートウェイはまだリクエストを転送したことがありません", "最终归属(记账时的客户端)": "最終的な帰属(記録時に使用するクライアント)", "最终承载:{picked}": "最終的に処理:{picked}", "未改写,保留识别结果": "書き換えなし、識別結果を保持", "本次请求消耗 {credit} 积分": "このリクエストのポイント消費:{credit}", "本轮尝试失败,正在退避等待或切换到下一个账号": "今回の試行は失敗し、バックオフ待機中または次のアカウントへの切り替え中です", "来源客户端:{client}": "接続元クライアント:{client}", "查看该请求的上游原始报文": "このリクエストのアップストリーム生ペイロードを表示", "模型": "モデル", "模型测试": "モデルテスト", "模型管理页操作列那颗「测试」发起的请求:与真实请求同一条转发链路,但不计入报表统计": "モデル管理ページの操作列にある「テスト」から発行されたリクエスト:実際のリクエストと同じ転送経路を通りますが、レポート統計には含まれません", "正在加载请求日志…": "リクエストログを読み込んでいます…", "正在统计…": "統計中…", "正文超过单条上限,可能已被截断": "本文が 1 件あたりの上限を超えているため、切り詰められている可能性があります", "没有符合筛选条件的请求": "絞り込み条件に一致するリクエストがありません", "添加自定义头匹配规则…": "カスタムヘッダールールを追加…", "清理": "クリア", "清理中…": "クリア中…", "清理失败:{message}": "クリアに失敗しました:{message}", "清理方式": "クリア方法", "清理请求已返回,但结果数据不完整,请刷新后确认。": "クリア要求の結果データが不完全です。更新して結果を確認してください。", "清理请求日志": "リクエストログをクリア", "清理预览数据不完整": "クリアのプレビューデータが不完全です", "清空两侧原文": "両側の原文を削除", "生产请求": "本番リクエスト", "生成速度:输出 token ÷ 流式段用时(总用时 − 首响);流式段不足总用时一半时按总用时计": "生成速度:出力トークン ÷ ストリーミング時間(所要時間 − 初回応答)。ストリーミング時間が所要時間の半分未満の場合は所要時間で計算", "用时": "所要時間", "用量": "使用量", "确定对{scope}执行「{label}」?
    {summary}
    此操作无法恢复。": "{scope}に対して「{label}」を実行しますか?
    {summary}
    この操作は元に戻せません。", "确定对全部请求日志执行「{label}」?将处理 {count} 条,此操作无法恢复。": "すべてのリクエストログに対して「{label}」を実行しますか?{count} 件を処理します。この操作は元に戻せません。", "确定按当前筛选执行「{label}」?将处理 {count} 条,此操作无法恢复。": "現在の絞り込み条件で「{label}」を実行しますか?{count} 件を処理します。この操作は元に戻せません。", "确定终止这条正在转发的请求?
    上游连接会立即断开,明细将记为「请求已被手动终止」。": "この転送中のリクエストを中断しますか?
    アップストリーム接続はすぐに切断され、明細には「リクエストは手動で中断されました」と記録されます。", "等待响应": "応答待ち", "策略 {strategy} · 会话粘性 {sticky}{hit}": "戦略 {strategy} · セッション粘着 {sticky}{hit}", "终止": "中断", "终止失败:{error}": "中断に失敗しました:{error}", "终止请求": "リクエストを中断", "结果": "結果", "缓存读取: - / 命中率: -": "キャッシュ読み取り:- / ヒット率:-", "缓存读取: {cache} / 命中率: {rate}": "キャッシュ読み取り:{cache} / ヒット率:{rate}", "编辑这条头匹配规则…": "このヘッダールールを編集…", "耗时": "所要時間", "自定义 · {name}": "カスタム · {name}", "被跳过:": "スキップ:", "设置识别规则": "識別ルールを設定", "识别到 User-Agent,但不属于已知的客户端类型:{ua}": "User-Agent はありますが、既知のクライアント種別ではありません:{ua}", "识别结果(请求头识别出的真实客户端)": "識別結果(ヘッダーから識別された実際のクライアント)", "识图用量按实际视觉账号单独记录,不混入原模型的回答用量。": "画像読み取りの使用量は実際の視覚アカウントに個別記録され、元のモデルの回答使用量には混在しません。", "该供应商已有归属规则,保存将覆盖它": "このプロバイダーには既に帰属ルールがあり、保存すると上書きされます", "详情": "詳細", "详情内容": "詳細の内容", "请求体": "リクエストボディ", "请求图片": "リクエストの画像", "请求在任何账号接手之前就失败了": "リクエストはどのアカウントが引き継ぐ前に失敗しました", "请求头": "リクエストヘッダー", "请求头识别为 {identified},已改写归属为 {client}": "リクエストヘッダーでは {identified} と識別され、帰属先は {client} に書き換えられました", "请求已受理,正在选路、取凭证、建立上游连接": "リクエストを受け付けました。経路の選択、認証情報の取得、アップストリーム接続の確立を進めています", "请求日志列表": "リクエストログ一覧", "请求日志时间范围": "リクエストログの時間範囲", "请求日志表": "リクエストログテーブル", "请求正在转发中,用时列显示的是已用时": "リクエストは転送中です。所要時間列には経過時間が表示されます", "请求筛选": "リクエストの絞り込み", "请求详情": "リクエスト詳細", "请选择供应商": "プロバイダーを選択してください", "请选择归属客户端": "クライアントを選択してください", "读取请求日志失败,详见控制台": "リクエストログの読み込みに失敗しました。詳細はコンソールを確認してください", "路由回放": "ルーティングリプレイ", "转发到上游的模型:{model}": "アップストリームへ転送するモデル:{model}", "轮次": "回目", "辅助识图": "補助画像認識", "辅助识图调用": "補助画像読み取り呼び出し", "输入 {input} · 输出 {output} · 总计 {total} · 缓存读 {cache}": "入力 {input} · 出力 {output} · 合計 {total} · キャッシュ読み取り {cache}", "这条报文由旧版本截断保存,缺失内容无法恢复": "このペイロードは旧バージョンで切り詰めて保存されたため、欠落した内容は復元できません", "这条明细是一次模型测试(人工发起):走的是真实转发链路,但不计入报表统计": "この明細はモデルテスト(手動実行)です:実際の転送経路を通りますが、レポート統計には含まれません", "这条明细没有记录提供商(旧数据或请求未走到转发)": "この明細にはプロバイダーが記録されていません(旧データか、リクエストが転送まで到達しなかったため)", "这条明细没有记录来源客户端(旧数据、模型测试,或请求未带 User-Agent)": "この記録には接続元クライアントがありません(旧データ、モデルテスト、または User-Agent なしのリクエスト)", "这条记录命中了敏感词,但没有留下命中明细": "この記録はセンシティブワードにヒットしましたが、ヒット明細が残っていません", "这条记录的尝试明细未采集(该字段上线前的旧数据,或请求在转发前就失败)": "この記録の試行明細は収集されていません(このフィールドの実装前の旧データか、リクエストが転送前に失敗したため)", "这条请求没有保存这一段报文": "このリクエストではこの区間のペイロードが保存されていません", "这条请求没有记录供应商(旧数据或未走到转发),不能从这里改归属": "このリクエストにはプロバイダーの記録がなく(旧データまたは転送未遂)、ここでは帰属を変更できません", "进入「{phase}」阶段已持续 {time}": "「{phase}」段階に入ってから {time} 経過", "进行中": "処理中", "进行中…": "処理中…", "连接中": "接続中", "选择供应商": "プロバイダーを選択", "选择归属客户端": "クライアントを選択", "速度": "速度", "重试 {n}": "リトライ {n}", "重试中": "リトライ中", "重试次数": "リトライ回数", "面板内发起的模型调用,消耗额度并记录 Key,不计入生产报表": "パネルから開始したモデル呼び出しです。クォータを消費し、API Key を記録しますが、本番レポートには含めません", "预览对话": "会話プレビュー", "预览读取失败": "プレビューの読み込みに失敗しました", "预览读取失败:{error}": "プレビューの読み込みに失敗しました:{error}", "额外识图用量:{n} Token": "追加の画像読み取り使用量:{n} トークン", "首响 {time}": "初回応答 {time}", "首响:上游首帧到达的耗时": "初回応答:アップストリームの初回フレーム到達までの所要時間", "首响:上游首帧到达的耗时(请求仍在转发中)": "初回応答:アップストリームの初回フレーム到達までの所要時間(リクエストは転送中)", "首帧已到,上游内容正在下发": "初回フレームが到着し、アップストリームの内容を受信しています", "默认归属客户端": "既定の帰属クライアント", "(请求仍在转发中)": "(リクエストは転送中)", "(账号:{account})": "(アカウント:{account})", ",{n}毫秒后重试": "、{n}ミリ秒後にリトライ", ",{n}秒后重试": "、{n}秒後にリトライ", "{name}的列设置": "{name} の列設定", "「{label}」列的对齐": "「{label}」列の揃え", "中": "中央", "共 0 条": "全 0 件", "共 {total} 条 · 当前第 {start}–{end} 条": "全 {total} 件 · {start}–{end} 件目を表示", "共 {total} 条(全部显示)": "全 {total} 件(すべて表示)", "列": "列", "列设置": "列設定", "右": "右", "对齐": "揃え", "左": "左", "当前只有一页": "現在は 1 ページのみ", "拖动 ⋮⋮ 调整顺序": "⋮⋮ をドラッグして順序を調整", "按住拖动调整列顺序": "長押ししてドラッグすると列の順序を調整できます", "显示「{label}」列": "「{label}」列を表示", "条": "件", "每页": "1 ページあたり", "每页条数": "1 ページあたりの件数", "调整「{name}」的列:显示 / 隐藏、顺序、对齐": "「{name}」の列を調整:表示 / 非表示、順序、揃え", "跳至": "移動", "跳转到指定页": "指定したページへ移動", "跳转到第 1–{pageCount} 页": "1–{pageCount} ページ目へ移動", "这一列已隐藏": "この列は非表示", "这一列正在显示": "この列は表示中", "页": "ページ", "PID:{pid}": "PID:{pid}", "{label} · {port}": "{label} · {port}", "。已经把这个地址填进其它工具(Claude Code、Cherry Studio 等)的,需要一并改成新地址,否则那些工具会连不上。": "。すでにこのアドレスを他のツール(Claude Code、Cherry Studio など)に入力している場合は、あわせて新しいアドレスに変更してください。変更しないと、それらのツールは接続できなくなります。", "与当前端口相同,无需重启": "現在のポートと同じため、再起動は不要です", "例如 3066": "例:3066", "即将结束以下进程:": "以下のプロセスを終了します:", "已结束进程 {name}(PID {pid}),端口已释放": "プロセス {name}(PID {pid})を終了しました。ポートが解放されました", "当前状态": "現在の状態", "当前端口 {port},网关运行正常。": "現在のポートは {port} で、ゲートウェイは正常に動作しています。", "换端口后要改的地方": "ポート変更後に変更が必要な箇所", "新端口": "新しいポート", "更换端口": "ポートを変更", "更换网关端口": "ゲートウェイポートを変更", "本地网关正在监听 {url},可直接调用 OpenAI 兼容接口": "ローカルゲートウェイは {url} でリッスンしています。OpenAI 互換 API を直接呼び出せます", "校验中…": "検証中…", "正在检查… · {port}": "確認中… · {port}", "正在确认网关是否已就绪": "ゲートウェイの準備ができたか確認しています", "正在重启…": "再起動中…", "端口 {port} 上没有查到监听进程,请改用「更换端口」": "ポート {port} でリッスンしているプロセスが見つかりません。「ポートを変更」を使用してください", "端口号": "ポート番号", "端口已改为 {port},正在重启…": "ポートを {port} に変更しました。再起動中…", "端口已释放。现在重启程序让网关用这个端口启动?": "ポートが解放されました。今すぐアプリを再起動して、このポートでゲートウェイを起動しますか?", "端口需在 1024-65535 之间": "ポートは 1024-65535 の範囲で指定してください", "端口需在 1024-65535 之间。1023 及以下是系统保留范围,普通程序无法监听。": "ポートは 1024-65535 の範囲で指定してください。1023 以下はシステム予約範囲で、通常のプログラムはリッスンできません。", "结束中…": "終了中…", "结束占用端口的进程": "ポートを占有しているプロセスを終了", "结束占用进程": "ポート占有プロセスを終了", "结束失败:{reason}": "終了に失敗しました:{reason}", "结束它会强制退出该程序未保存的数据。确认继续?": "終了すると、そのプログラムの未保存データは強制的に破棄されます。続行してもよろしいですか?", "结束进程": "プロセスを終了", "网关启动中… · {port}": "ゲートウェイ起動中… · {port}", "网关启动失败": "ゲートウェイの起動に失敗", "网关地址会变成 ": "ゲートウェイのアドレスは ", "网关运行中 · {port}": "ゲートウェイ稼働中 · {port}", "该端口不可用": "このポートは使用できません", "路径:{path}": "パス:{path}", "进程名:{name}": "プロセス名:{name}", "进程已结束,但端口仍被占用,建议改用「更换端口」": "プロセスは終了しましたが、ポートはまだ使用中です。「ポートを変更」の使用をおすすめします", "重启": "再起動", "重启中…": "再起動中…", "重启失败:{reason}": "再起動に失敗しました:{reason}", "重启程序": "アプリを再起動", "(未知)": "(不明)" }); diff --git a/desktop-tauri/ui/i18n/combined/ko.js b/desktop-tauri/ui/i18n/combined/ko.js index 364f8245..76f626ef 100644 --- a/desktop-tauri/ui/i18n/combined/ko.js +++ b/desktop-tauri/ui/i18n/combined/ko.js @@ -1,2 +1,2 @@ /* Agent2API 词典构建产物:ko/combined —— 由 desktop-tauri/i18n/build.mjs 生成,请勿手改;源头是 i18n-src/*.json */ -window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { "无可用账号:{reason}": "사용 가능한 계정 없음: {reason}", "AI 助手": "AI 어시스턴트", "API Key 用量详情": "API Key 사용량 상세", "API Key 统计": "API Key 통계", "API Key(可选)": "API Key(선택)", "API 凭证": "API 인증 정보", "API 方法提交给插件的账号规范化入口;不会用该密钥发起 OAuth 登录。": "API 방식은 플러그인의 계정 정규화 진입점으로 제출됩니다. 해당 키로 OAuth 로그인을 시작하지 않습니다.", "Agent2API · 多提供商本地网关": "Agent2API · 다중 제공자 로컬 게이트웨이", "Agent2API 社区": "Agent2API 커뮤니티", "Codar(科搭)": "Codar", "JSON 格式不正确": "JSON 형식이 올바르지 않습니다", "JoyCode(京东)": "JoyCode (JD)", "Linux (amd64)": "Linux (amd64)", "Linux (arm64)": "Linux (arm64)", "Magpie 官方": "Magpie 공식", "Magpie 官方与社区插件,共用一个按需下载的运行时": "Magpie 공식 및 커뮤니티 플러그인은 필요할 때 다운로드하는 런타임을 공유합니다", "Magpie 官方名单": "Magpie 공식 목록", "Magpie 官方和社区插件均通过兼容方式接入 Agent2API,不保证 100% 可用。": "Magpie 공식 및 커뮤니티 플러그인은 모두 호환 방식으로 Agent2API에 연결되며, 100% 동작을 보장하지 않습니다.", "Magpie 推荐": "Magpie 추천", "Magpie 插件": "Magpie 플러그인", "Magpie 插件安装须知": "Magpie 플러그인 설치 안내", "Magpie 社区": "Magpie 커뮤니티", "Magpie 社区分发源": "Magpie 커뮤니티 배포 소스", "Magpie 脚本插件": "Magpie 스크립트 플러그인", "MiniMax Code 国内/国际": "MiniMax Code 중국/글로벌", "MiniMax Code 的设备码登录、对话、模型目录、余额与每日签到;国内版与国际版可分别启停。": "MiniMax Code의 기기 코드 로그인, 대화, 모델 목록, 잔액 조회 및 매일 체크인. 중국판과 글로벌판을 각각 활성화할 수 있습니다.", "OAuth 登录": "OAuth 로그인", "QQ 群号": "QQ 그룹 번호", "Star 数暂未读取": "Star 수를 아직 불러오지 못했습니다", "Star 更新于 {time}": "Star 수 업데이트: {time}", "Token 用量": "Token 사용량", "WPS 灵犀": "WPS Lingxi", "Windows (ARM64)": "Windows (ARM64)", "Windows (x64)": "Windows (x64)", "macOS (Apple Silicon)": "macOS (Apple Silicon)", "macOS (Intel)": "macOS (Intel)", "npm 包名": "npm 패키지 이름", "npm 包名、GitHub 地址或 magpie:包名": "npm 패키지, GitHub 주소 또는 magpie:패키지명", "npm 包名或 GitHub 地址": "npm 패키지 이름 또는 GitHub 주소", "npm 未发布的包会尝试 Magpie 社区分发源;不会绕过完整性校验或执行安装脚本。": "npm에 없는 패키지는 Magpie 커뮤니티 배포 소스에서 찾습니다. 무결성 검증을 건너뛰거나 설치 스크립트를 실행하지 않습니다.", "{count} 个 Star": "Star {count}개", "{count} 个插件": "플러그인 {count}개", "{count} 家": "공급자 {count}곳", "{count} 家提供商": "공급자 {count}곳", "{count} 家提供商 · 安装于 {time}": "공급자 {count}곳 · {time} 설치", "{key} 需要 true / false / null": "{key}은(는) true / false / null 중 하나여야 합니다", "{key} 需要数字": "{key}은(는) 숫자여야 합니다", "{label}(API)": "{label}(API)", "{label}(OAuth)": "{label}(OAuth)", "{n} 个启用": "{n}개 활성", "{n} 个已限流": "{n}개 속도 제한됨", "{n} 个请求正在转发中,点开「请求日志」查看": "{n}개 요청 포워딩 중, 「요청 로그」에서 확인하세요", "{n} 个账号可用": "{n}개 계정 사용 가능", "{n} 个账号启用": "{n}개 계정 활성", "{n} 条失败请求未读,点开「请求日志」查看": "읽지 않은 실패 요청 {n}건, 「요청 로그」에서 확인하세요", "{n} 条错误日志未读,点开「日志」查看": "읽지 않은 오류 로그 {n}건, 「로그」에서 확인하세요", "{n} 项 · {shown} 显示": "{n}개 · {shown}개 표시", "{size} · 下载后可直接安装,无需跳转浏览器": "{size} · 다운로드 후 바로 설치할 수 있습니다(브라우저로 이동하지 않음)", "{size} · 点击下载后可直接安装,无需跳转浏览器": "{size} · 다운로드 후 바로 설치할 수 있습니다(브라우저로 이동하지 않음)", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "메뉴 {total}개 · 표시 {shown} · 숨김 {hidden} · 그룹 {groups}개", "· 不会改动任何配置": "· 설정을 변경하지 않습니다", "· 每次执行前列改动清单,等你确认": "· 실행 전에 변경 목록을 보여주고 확인을 기다립니다", "—": "—", "“本机”指运行网关的机器,不是打开面板的电脑。远程浏览器也可以发起,但网关本机可能需要安装客户端并已登录;是否可用由网关返回结果决定。": "“로컬”은 패널을 여는 컴퓨터가 아니라 게이트웨이가 실행되는 컴퓨터를 뜻합니다. 원격 브라우저에서도 시작할 수 있지만 게이트웨이 컴퓨터에 클라이언트가 설치되어 있고 로그인되어 있어야 할 수 있습니다. 사용 가능 여부는 게이트웨이 응답으로 결정됩니다.", "✅ GitHub 令牌已保存(加密存储,界面不再显示)": "✅ GitHub 토큰이 저장되었습니다 (암호화되어 저장되며 다시 표시되지 않습니다)", "✅ Token 已刷新": "✅ Token을 갱신했습니다", "✅ 已将账号优先级调整到全局第一位": "✅ 계정 우선순위를 전역 1위로 조정했습니다", "✅ 已清除界面保存的 GitHub 令牌(环境变量若配置过则继续生效)": "✅ 저장된 GitHub 토큰을 삭제했습니다 (환경 변수가 설정되어 있으면 계속 적용됩니다)", "「{name}」匹配到多个账号:{list},请用完整账号名重试": "\"{name}\"이(가) 여러 계정과 일치합니다: {list}. 전체 계정 이름으로 다시 시도하세요.", "「工具全不勾选 → 不注入系统提示词」:想当纯聊天用时,不必再去关上面的开关。": "\"도구를 모두 해제 → 시스템 프롬프트 미주입\": 순수 채팅으로 쓰려면 위 스위치를 끌 필요가 없습니다.", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "\"설정\"은 고정 항목이라 그 그룹을 통째로 숨길 수 없습니다. 다른 메뉴는 개별로 숨길 수 있습니다", "上一页": "이전 페이지", "上次加载记录(非本次故障)": "이전 로드 기록(현재 오류가 아님)", "下一页": "다음 페이지", "下拉刷新": "당겨서 새로고침", "下次自动重试:{time}": "다음 자동 재시도: {time}", "下载与当前平台对应的插件包(zip),点右上角「安装插件包」选中它即可。": "이 플랫폼에 맞는 플러그인 팩(zip)을 내려받은 뒤 오른쪽 위 \"플러그인 팩 설치\"를 눌러 선택하세요.", "不填写(可选)": "입력하지 않음(선택)", "与电脑端一致:每 {n} 分钟": "데스크톱과 동일: {n}분마다", "为 Agent2API 扩展网页提供商,支持智谱清言的模型调用、访客与登录账号、凭证续期、模型目录、积分查询、签到和任务领取。": "Agent2API에 웹 제공업체를 추가하며 Zhipu Qingyan의 모델 호출, 게스트 및 로그인 계정, 인증 정보 갱신, 모델 목록, 포인트 조회, 체크인과 작업 보상 수령을 지원합니다.", "为网关扩展多家 AI 提供商,支持账号登录与导入、模型调用、凭证续期、模型目录、余额查询和签到。具体能力以各提供商的支持情况为准。": "게이트웨이에 여러 AI 공급자를 추가하고 계정 로그인·가져오기, 모델 호출, 자격 증명 갱신, 모델 목록, 잔액 조회와 출석을 제공합니다. 실제 기능은 공급자별 지원 상황에 따릅니다.", "主导航": "기본 탐색", "也可输入 file: 加网关电脑上的插件目录或 tgz 文件绝对路径;本地插件会复制安装,不修改源目录。": "file: 뒤에 게이트웨이 컴퓨터의 플러그인 디렉터리 또는 tgz 파일의 절대 경로를 입력할 수도 있습니다. 로컬 플러그인은 복사하여 설치하며 원본 디렉터리는 변경하지 않습니다.", "书生·端砚": "Intern InkStone", "了解并安装": "이해했습니다, 설치", "仅在该 API 方法需要额外密钥时填写": "이 API 방식에 추가 키가 필요한 경우에만 입력하세요.", "仅安装你信任的 npm 包、GitHub 仓库或 Magpie 社区分发包;完整性校验不等于安全审计。": "신뢰하는 npm 패키지, GitHub 저장소 또는 Magpie 커뮤니티 패키지만 설치하세요. 무결성 검증은 보안 감사가 아닙니다.", "仅安装你信任的 npm 包或 GitHub 仓库;版本与完整性检查不能保证脚本安全。": "신뢰하는 npm 패키지나 GitHub 저장소만 설치하세요. 버전 및 무결성 확인은 스크립트의 안전성을 보장하지 않습니다.", "仅安装你信任的 npm 包;下载校验只能确认文件完整,不能保证脚本安全。": "신뢰하는 npm 패키지만 설치하세요. 다운로드 검증은 파일 무결성만 확인하며 스크립트의 안전성을 보장하지 않습니다.", "仅影响插件更新通道,与主程序独立。开启后可安装 beta 版;已使用 beta 时保持该通道,关闭后只看正式版且不会降级。": "본체와 독립적인 플러그인 업데이트 채널입니다. 켜면 beta 버전을 설치할 수 있습니다. beta 사용 중에는 채널을 유지하며 끄면 정식 버전만 확인하고 다운그레이드하지 않습니다.", "仅自动更新已安装、已启用且通过可信签名校验的社区插件。新插件需手动安装,卸载后不会自动重新安装;未签名插件需手动更新。": "설치되어 활성화되어 있고 신뢰할 수 있는 서명 검증을 통과한 커뮤니티 플러그인만 자동 업데이트합니다. 새 플러그인은 직접 설치해야 하며 삭제한 플러그인은 자동으로 다시 설치되지 않습니다. 서명되지 않은 플러그인은 직접 업데이트해야 합니다.", "从 GitHub 官方源下载固定提交。仓库根目录须有可直接运行的插件入口;不会执行构建脚本或安装依赖。": "GitHub 공식 소스에서 고정된 커밋을 다운로드합니다. 저장소 루트에 바로 실행할 수 있는 플러그인 진입점이 있어야 합니다. 빌드 스크립트를 실행하거나 의존성을 설치하지 않습니다.", "从 GitHub 官方源下载固定提交。仓库须包含可运行的提供商入口;安装运行依赖,但不执行构建和安装脚本。": "지정된 커밋을 GitHub에서 직접 다운로드합니다. 저장소에 실행 가능한 제공자 진입점이 있어야 합니다. 런타임 의존성은 설치하지만 빌드 및 설치 스크립트는 실행하지 않습니다.", "从 Magpie 社区官方分发目录下载,核验 SHA-512;更新与重装继续使用此来源。": "Magpie 커뮤니티 공식 배포 경로에서 다운로드하고 SHA-512를 검증합니다. 업데이트와 재설치에도 이 소스를 사용합니다.", "从 npm / GitHub / Magpie 安装": "npm / GitHub / Magpie에서 설치", "从 npm / GitHub 安装": "npm / GitHub에서 설치", "从 npm 安装": "npm에서 설치", "从文件安装…": "파일에서 설치…", "从网关本机客户端导入": "게이트웨이 컴퓨터의 클라이언트에서 가져오기", "仓库没有已提交的可加载入口,请等待作者发布构建产物": "저장소에 불러올 수 있는 진입점이 없습니다. 작성자가 빌드를 게시할 때까지 기다려 주세요.", "代价": "비용", "令牌已生效,但写入磁盘失败(重启后会丢失)": "토큰은 적용되었지만 디스크에 저장하지 못했습니다 (재시작하면 사라집니다)", "以下设置属于所连接网关,不是手机本地设置。": "다음 설정은 연결된 게이트웨이의 설정이며 휴대폰의 로컬 설정이 아닙니다.", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "그룹·순서·표시 설정을 기본값으로 되돌립니다. 직접 만든 그룹은 삭제됩니다(메뉴는 유지됩니다).", "会话内": "세션 내", "会话已过期。重新登录后会自动回到手机端。": "세션이 만료되었습니다. 다시 로그인하면 모바일 화면으로 자동 복귀합니다.", "会话粘性": "세션 고정", "作为 system 消息注入给助手": "system 메시지로 어시스턴트에 주입", "作者尚未提供插件介绍。": "작성자가 플러그인 설명을 제공하지 않았습니다.", "使用 Cloudflare 账号 ID 与 API Token,接入 Workers AI 对话和在线模型目录。": "Cloudflare 계정 ID와 API Token으로 Workers AI 채팅 및 온라인 모델 목록에 연결합니다.", "使用 Warp 终端的登录态,接入账号可用模型并查询 AI 请求额度。": "Warp 터미널 로그인 정보로 계정에서 사용할 수 있는 모델에 연결하고 AI 요청 한도를 확인합니다.", "使用你在网关电脑上安装并登录的 agy CLI,通过 ACP 协议接入模型、工具调用和额度查询;与依赖 Antigravity IDE 的 Antigravity ACP 插件不同。": "게이트웨이 컴퓨터에 설치하고 로그인한 agy CLI를 사용해 ACP로 모델, 도구 호출, 할당량 조회에 연결합니다. Antigravity IDE에 의존하는 Antigravity ACP 플러그인과는 다릅니다.", "使用网关本机 gcloud / ADC 登录,接入 Vertex AI 模型并查询 Google Cloud 促销赠金。": "게이트웨이 컴퓨터의 gcloud / ADC 인증 정보로 Vertex AI 모델에 연결하고 Google Cloud 프로모션 크레딧을 조회합니다.", "例如:家里、公司": "예: 집, 회사", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "사이드바 레이아웃 모듈이 로드되지 않았습니다(ui/sidebar-layout.js는 app.js보다 먼저 포함되어야 합니다).", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "사이드바에 표시되는 메뉴가 없습니다. 설정 → 표시 → 사이드바 메뉴에서 필요한 항목을 켜세요.", "侧边栏菜单": "사이드바 메뉴", "保存失败:{error}": "저장 실패: {error}", "保存对话模型失败:{message}": "대화 모델 저장 실패: {message}", "保存并继续": "저장하고 계속", "修改高级参数会等待在途任务结束后重新加载插件;专属开关实时生效。": "고급 설정을 변경하면 진행 중인 작업이 끝난 후 플러그인을 다시 불러옵니다. 제공자별 스위치는 즉시 적용됩니다.", "候选队列": "후보 큐", "停止": "중지", "停用": "비활성", "允许的操作": "허용되는 작업", "允许签到及附带任务": "체크인 및 부가 작업 허용", "先添加一台网关": "먼저 게이트웨이를 추가하세요", "先选择插件声明的账号登录方式,再填写必需字段。OAuth 由共享登录桥负责等待、取消和错误;API 凭证通过账号规范化入口添加。": "플러그인이 선언한 계정 로그인 방식을 선택한 뒤 필수 필드를 입력하세요. OAuth 대기, 취소 및 오류는 공용 로그인 브리지가 처리하며 API 인증 정보는 계정 정규화 진입점을 통해 추가됩니다.", "免鉴权调用": "인증 없는 호출", "全不选": "모두 선택 해제", "全部 API Key": "모든 API Key", "全部客户端": "모든 클라이언트", "全部更新": "전체 업데이트", "共 {n} 条记录": "총 {n}건", "共享登录桥不可用,请重新打开面板": "공용 로그인 브리지를 사용할 수 없습니다. 패널을 다시 여세요.", "共享运行环境尚未就绪,本插件没有明确的加载失败结果。": "공유 실행 환경이 아직 준비되지 않았습니다. 이 플러그인 자체의 로드 실패는 확인되지 않았습니다.", "关": "끄기", "关闭菜单": "메뉴 닫기", "兼容 OpenCode v1 / Magpie 提供商插件及其运行依赖;不加载界面、独立工具或 Pi 扩展。": "OpenCode v1 / Magpie 제공자 플러그인과 런타임 의존성을 지원합니다. UI, 독립 도구 또는 Pi 확장은 불러오지 않습니다.", "准备运行环境": "실행 환경 준비 중", "凭证 JSON 含有不允许的字段:{key}": "인증 정보 JSON에 허용되지 않는 필드가 있습니다: {key}", "凭证 JSON 嵌套过深,请只粘贴该插件要求的凭证对象": "인증 정보 JSON의 중첩이 너무 깊습니다. 이 플러그인이 요구하는 인증 정보 객체만 붙여넣으세요.", "凭证 JSON 必须是非空对象,不能是数组或字符串": "인증 정보 JSON은 비어 있지 않은 객체여야 하며 배열이나 문자열일 수 없습니다.", "凭证 JSON 格式不正确,请检查括号和引号": "인증 정보 JSON 형식이 올바르지 않습니다. 괄호와 따옴표를 확인하세요.", "凭证 JSON(必填)": "인증 정보 JSON(필수)", "凭证只在提交时发送到网关;备注名和代理请使用下面的字段,解析错误不会回显凭证内容。": "인증 정보는 제출할 때만 게이트웨이로 전송됩니다. 표시 이름과 프록시는 아래 필드에 입력하세요. 파싱 오류에 인증 정보 내용이 표시되지 않습니다.", "分布来自保留的日报来源明细;无法恢复的历史不反推客户端或模型。": "분포는 보관된 일별 출처 집계에서 가져오며 복구할 수 없는 기록의 클라이언트나 모델은 추정하지 않습니다.", "分支、标签或提交(留空使用默认分支)": "브랜치, 태그 또는 커밋(비워 두면 기본 브랜치)", "分组名": "그룹 이름", "分组名,例如「常用」": "그룹 이름, 예: \"즐겨찾기\"", "切换菜单": "메뉴 전환", "列表 = 模型管理页里所有已启用的模型。助手走本地网关发起对话,消耗所选账号的额度。": "목록은 \"모델 관리\" 페이지에서 활성화된 모든 모델입니다. 어시스턴트는 로컬 게이트웨이를 통해 대화하며 선택한 계정의 할당량을 소모합니다.", "创建并进入": "생성 후 시작", "创建管理员账号": "관리자 계정 만들기", "初始化已完成,正在等待校验和登记。": "초기화가 완료되어 검증 및 등록을 기다리고 있습니다.", "初始化超时": "초기화 시간 초과", "删除 {n} 条": "{n}건 삭제", "删除分组": "그룹 삭제", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "그룹 \"{name}\"을(를) 삭제할까요? 메뉴 {n}개는 \"{target}\"(으)로 이동하며 사라지지 않습니다.", "删除空分组「{name}」?": "빈 그룹 \"{name}\"을(를) 삭제할까요?", "删除这个分组(组内菜单移到第一组)": "이 그룹 삭제(메뉴는 첫 그룹으로 이동)", "刷新清单": "목록 새로고침", "刷新状态": "상태 새로고침", "加入插件 beta 版": "플러그인 beta 참여", "加载中": "불러오는 중", "加载助手设置失败:{message}": "어시스턴트 설정 불러오기 실패: {message}", "加载失败": "로드 실패", "加载失败:{error}": "불러오기 실패: {error}", "加载更多": "더 불러오기", "加载更早的记录": "이전 기록 불러오기", "加载状态": "로드 상태", "加载诊断": "로드 진단", "助手": "어시스턴트", "助手自己用哪个模型生成回复": "어시스턴트가 응답 생성에 사용할 모델", "助手设置读取失败,工具可能已过时。": "어시스턴트 설정 읽기에 실패했습니다. 도구 목록이 오래되었을 수 있습니다.", "助手走本地网关,消耗所选账号的额度": "어시스턴트는 로컬 게이트웨이를 거치며 선택한 계정의 할당량을 소모합니다", "勾选即注入该工具;不勾选 = 助手看不到它": "체크하면 해당 도구가 주입됩니다. 체크 해제 시 어시스턴트가 볼 수 없습니다", "十几 MB": "십여 MB", "升级会重新下载并校验插件包(约 {size}),装完立即生效,账号数据不受影响。": "업그레이드하면 플러그인 팩을 다시 내려받아 검증합니다(약 {size}). 설치 즉시 적용되며 계정 데이터는 영향받지 않습니다.", "协议版本": "프로토콜 버전", "单签": "개별", "占比": "비율", "即将就绪": "곧 준비 완료", "卸载": "제거", "卸载插件": "플러그인 제거", "卸载插件包": "플러그인 팩 제거", "历史数据整理中": "기록 데이터 정리 중", "历史明细不完整,输入、输出与缓存读数无法恢复": "이전 상세 기록이 불완전하여 입력, 출력 및 캐시 수치를 복구할 수 없습니다.", "历史未记录 Key": "이전 Key 미기록", "原生插件包,来自项目插件仓库": "프로젝트 플러그인 저장소의 네이티브 패키지", "原生辅助授权": "네이티브 도우미 권한", "原生辅助授权已失效或暂不可用,请重新选择并确认。": "네이티브 도우미 권한이 더 이상 유효하지 않거나 일시적으로 사용할 수 없습니다. 다시 선택하고 확인하세요.", "原生辅助程序不受 Wasm 沙箱限制,只授权你信任的已安装插件。辅助程序更新后需要重新确认。": "네이티브 도우미에는 Wasm 샌드박스 제한이 적용되지 않습니다. 신뢰하는 설치된 플러그인만 허용하세요. 도우미 업데이트 후 다시 확인해야 합니다.", "去下载": "다운로드", "去登录": "로그인", "参数不完整(需要 account / enabled)": "매개변수가 불완전합니다 (account / enabled 필요)", "参数不完整(需要 account / position)": "매개변수가 불완전합니다 (account / position 필요)", "参数不完整(需要 provider / id / alias)": "매개변수가 불완전합니다 (provider / id / alias 필요)", "参数不完整(需要 provider / id / capabilities)": "매개변수가 불완전합니다 (provider / id / capabilities 필요)", "参数不完整(需要 provider / id / enabled)": "매개변수가 불완전합니다 (provider / id / enabled 필요)", "参数不完整(需要 provider / position)": "매개변수가 불완전합니다 (provider / position 필요)", "发现新版本 {latest}(当前 {current}),点开「设置 - 软件更新」可查看更新日志并下载": "새 버전 {latest} 발견 (현재 {current}), 「설정 - 소프트웨어 업데이트」에서 업데이트 노트를 보고 다운로드할 수 있습니다", "发现新版本 {version}": "새 버전 {version}이(가) 있습니다", "发送": "전송", "取消日期筛选": "날짜 필터 해제", "受影响的来源将在 {time} 后自动重试": "영향을 받은 소스는 {time} 이후 자동으로 재시도합니다", "只改映射名,不动上游模型 ID;映射立即生效(新对话即可用)。": "매핑 이름만 바뀌고 업스트림 모델 ID는 그대로입니다. 매핑은 즉시 적용됩니다(새 대화에서 바로 사용 가능).", "只注入工具定义": "도구 정의만 주입", "只统计已结束的生产请求;失败请求仍计入请求数,Token 用量沿用现有成功请求口径。": "종료된 실제 요청만 집계합니다. 실패 요청도 요청 수에 포함하며 Token 사용량은 기존 성공 요청 기준을 따릅니다.", "只读": "읽기 전용", "只读工具": "읽기 전용 도구", "可以点击「刷新」读取插件仓库,或从本地 zip 安装插件。": "새로고침으로 플러그인 목록을 읽거나 로컬 zip을 설치할 수 있습니다.", "可填 {min}–{max} 秒,关闭后保留间隔": "{min}–{max}초로 설정하세요. 꺼도 간격은 유지됩니다", "可更新": "업데이트 있음", "可更新 v{version}": "v{version} 업데이트 가능", "可更新到 v{version}": "v{version} 업데이트 가능", "可用": "개 사용 가능", "可选,留空使用账号昵称": "선택 사항. 비워 두면 계정 닉네임 사용", "各家提供商的转发与账号实现都在插件包里,不随本软件发布。装好插件后,模型转发、添加账号、签到与余额查询才会生效。": "각 제공자(provider)의 포워딩과 계정 처리는 플러그인 팩에 들어 있으며 본 앱에는 포함되지 않습니다. 플러그인을 설치해야 모델 포워딩, 계정 추가, 출석 체크, 잔액 조회가 동작합니다.", "后台只读取状态,不会自动弹出验证码;验证结果一次性使用,短时间内过期。": "백그라운드에서는 상태만 읽으며 인증 창을 자동으로 띄우지 않습니다. 인증 토큰은 한 번만 사용할 수 있으며 짧은 시간 후 만료됩니다.", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "고정 항목 \"설정\"이 있어 그룹 전체를 숨길 수 없습니다(다른 메뉴는 개별로 숨길 수 있습니다)", "启动较慢,仍在加载;尚未收到失败结果。": "시작이 지연되고 있지만 아직 로드 중입니다. 실패 결과는 보고되지 않았습니다.", "四种组合的实际效果": "네 가지 조합의 실제 효과", "回复由 {model} 生成 · 走本地网关": "응답 생성: {model} · 로컬 게이트웨이 경유", "固定": "고정", "在 GitHub 上创建令牌(无需勾选任何权限)": "GitHub에서 토큰 만들기 (권한 선택 불필요)", "填写账号登录所需信息并发起授权;等待、取消与失败原因由共享登录桥处理,设备码和操作指引会显示在上方。": "계정 로그인에 필요한 정보를 입력하고 인증을 시작하세요. 대기, 취소 및 실패 사유는 공용 로그인 브리지가 처리하며 기기 코드와 안내는 위에 표시됩니다.", "备注名(可选)": "표시 이름 (선택)", "复制失败,请手动选择复制": "복사에 실패했습니다. 직접 선택해 복사하세요", "复制订阅链接": "구독 링크 복사", "失败 · {status}": "실패 · {status}", "失败退避": "실패 백오프", "奖励 {bonus}": "보너스 {bonus}", "套餐 {plan}": "플랜 {plan}", "套餐池人机验证": "Start Plan 사람 인증", "套餐池请求需要验证,请主动开始验证后重试请求": "Start Plan 요청에 인증이 필요합니다. 직접 인증을 시작한 후 요청을 다시 시도하세요.", "安装": "설치", "安装 {name}": "{name} 설치", "安装与更新插件时访问 GitHub 用。与「设置 → 更新 → 更新设置」里的同一项互通,填一次即可。不填也能用,只是匿名请求限额较低(60 次/小时)。": "플러그인을 설치하고 업데이트할 때 GitHub에 접근하는 데 사용됩니다. \"설정 → 업데이트 → 업데이트 설정\"과 같은 항목이므로 한 번만 입력하면 됩니다. 입력하지 않아도 사용할 수 있지만 익명 요청 한도가 낮습니다(시간당 60회).", "安装于 {time}": "{time}에 설치", "安装包已就绪,点「安装」即可完成更新": "설치 패키지가 준비되었습니다. 「설치」를 누르면 업데이트가 완료됩니다", "安装插件包": "플러그인 팩 설치", "安装时间": "설치 시각", "安装脚本插件": "스크립트 플러그인 설치", "完成时间:{time}": "완료 시간: {time}", "官方": "공식", "官方与推荐来自 Magpie 官方名单;第三方来自 GitHub 的 magpie-plugin 标签,不代表官方推荐。": "공식 및 추천 플러그인은 Magpie 공식 목록을 따릅니다. 서드파티는 GitHub의 magpie-plugin 주제로 검색되며 공식 추천을 의미하지 않습니다.", "官方签名:包内容与发布者签的完全一致,未被改过": "공식 서명: 팩 내용이 게시자가 서명한 것과 완전히 일치하며 변조되지 않았습니다", "定时": "예약", "定时任务": "예약 작업", "实际注入": "실제 주입 내용", "客户端分布": "클라이언트별 분포", "客户端统计": "클라이언트 통계", "宿主错误": "호스트 오류", "对话": "대화", "对话模型": "대화 모델", "对话模型已切换": "대화 모델이 전환되었습니다", "将修改 {model} 的 {n} 项能力:": "{model}의 기능 {n}개를 변경합니다:", "将修改 {n} 个模型的启停状态:": "모델 {n}개의 활성화 상태를 변경합니다:", "将修改 {n} 个账号的启用状态(其中禁用 {k} 个):": "계정 {n}개의 활성화 상태를 변경합니다 (그중 {k}개 비활성화):", "将对 {model} 发起一次真实请求:": "{model}에 실제 요청을 한 번 보냅니다:", "将执行 {label}。": "{label}을(를) 실행합니다.", "将把「{provider}」整组移到第 {position} 顺位:": "\"{provider}\" 그룹 전체를 {position}번째 순위로 이동합니다:", "将把账号「{account}」移到第 {position} 顺位:": "계정 \"{account}\"을(를) {position}번째 순위로 이동합니다:", "将改动 {n} 条映射({parts}):": "매핑 {n}건을 변경합니다 ({parts}):", "小米 MiMo": "Xiaomi MiMo", "尚未取得插件清单": "플러그인 목록을 아직 불러오지 않았습니다", "尚未检查更新": "아직 업데이트를 확인하지 않음", "尚未登录": "아직 로그인하지 않음", "已下载": "다운로드됨", "已下载,待安装": "다운로드 완료, 설치 대기 중", "已修改 {n} 个模型": "모델 {n}개를 변경했습니다", "已修改 {n} 个账号": "계정 {n}개를 변경했습니다", "已修改 {n} 项能力": "기능 {n}개를 변경했습니다", "已停止这次回答。": "이 답변을 중지했습니다.", "已全部取消勾选": "모두 선택 해제했습니다", "已关闭自动检查": "자동 확인을 껐습니다", "已删除分组「{name}」": "그룹 \"{name}\"을(를) 삭제했습니다", "已加载": "로드됨", "已勾选 {n} / {total}": "{n} / {total} 선택됨", "已勾选「{label}」": "\"{label}\" 선택됨", "已勾选工具": "도구 선택됨", "已取消「{label}」": "\"{label}\" 선택 해제됨", "已启动安装器": "설치 프로그램을 실행했습니다", "已填写(粘贴新令牌可覆盖)": "입력됨 (새 토큰을 붙여넣으면 덮어씁니다)", "已复制:{text}": "복사됨: {text}", "已开启自动检查": "자동 확인을 켰습니다", "已恢复推荐勾选": "권장 선택으로 복원했습니다", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "기본 그룹으로 복원했습니다: 개요 / 전달 경로 / 진단 / 시스템", "已改动 {n} 条映射": "매핑 {n}건을 변경했습니다", "已新建分组「{name}」,点组头的 + 把菜单移进来": "그룹 \"{name}\"을(를) 만들었습니다. 머리의 +로 메뉴를 가져오세요", "已是最新版本": "최신 버전입니다", "已显示 {shown} / {total} 个提供商插件": "제공자 플러그인 {total}개 중 {shown}개 표시", "已更新 {count} 个插件": "플러그인 {count}개를 업데이트했습니다", "已更新 {done} 个插件,{failed} 个失败:{error}": "플러그인 {done}개를 업데이트했고 {failed}개가 실패했습니다: {error}", "已注入 {n} / {total} 个工具 · 系统提示词:{state}": "도구 {n} / {total}개 주입 · 시스템 프롬프트: {state}", "已添加的服务器": "추가된 서버", "已由其他插件接管,请到对应插件中管理。": "이 공급자는 다른 플러그인에서 관리합니다. 해당 플러그인의 설정에서 관리하세요.", "已登录": "로그인됨", "已离线 · 显示的是缓存内容": "오프라인 — 캐시된 내용을 표시 중", "已移到第 {n} 顺位": "{n}번째 순위로 이동했습니다", "已签名": "서명됨", "开": "켜기", "开关和选项即时保存;输入项请点击对应的「保存」按钮。": "스위치와 선택 항목은 즉시 저장됩니다. 입력 항목은 해당 저장 버튼을 눌러 주세요.", "开始时间:{time}": "시작 시간: {time}", "开始验证": "인증 시작", "当前": "현재", "当前一个工具都没勾选,助手只能纯聊天。去「设置 → AI 助手 → 工具」里勾上需要的工具。": "선택된 도구가 없어 어시스턴트는 순수 채팅만 가능합니다. \"설정 → AI 어시스턴트 → 도구\"에서 필요한 도구를 선택하세요.", "当前兼容无运行时 npm 依赖的提供商插件;不加载 Magpie 界面、Matrix 工具或 Pi 扩展。": "현재 런타임 npm 의존성이 없는 제공자 플러그인을 지원합니다. Magpie 화면, Matrix 도구 및 Pi 확장은 불러오지 않습니다.", "当前平台": "현재 플랫폼", "当前平台暂无包": "이 플랫폼용 패키지가 없습니다", "当前插件未申请原生辅助能力": "네이티브 도우미를 요청한 플러그인이 없습니다", "当前暂不可安装": "현재 설치할 수 없습니다", "当前模型请求免人机验证": "현재 모델 요청에는 사람 인증이 필요하지 않습니다.", "当前版本 {current},最低可用版本 {minimum}。": "현재 버전은 {current}이며 최소 지원 버전은 {minimum}입니다.", "当前版本 {version}": "현재 버전 {version}", "当前网关要求插件版本不低于 v{version},补齐前暂不加载。": "이 게이트웨이에는 플러그인 v{version} 이상이 필요합니다. 업데이트 전에는 로드하지 않습니다.", "当前:已关闭(助手不收到任何系统提示词,工具定义照发)": "현재: 꺼짐 (어시스턴트는 시스템 프롬프트를 받지 않지만 도구 정의는 전송됩니다)", "当前:已开启 · 使用内置默认提示词(还没自定义)": "현재: 켜짐 · 내장 기본 프롬프트 사용 중 (아직 사용자 지정 안 함)", "当前:已开启 · 自定义内容 {n} 字": "현재: 켜짐 · 사용자 지정 내용 {n}자", "影响转发": "포워딩 영향", "待就绪": "준비 대기", "待确认": "확인 대기", "总剩余 {total}": "총 잔여 {total}", "恢复上游原值": "업스트림 원래 값으로 복원", "恢复推荐": "권장 복원", "恢复默认侧边栏": "사이드바 기본값 복원", "成功 / 失败": "성공 / 실패", "成功领取": "수령 완료", "我会在动手前把改动列给你确认。": "변경 사항은 실행 전에 목록으로 보여드리고 확인을 받습니다.", "我信任所选辅助程序并允许它执行声明的本机操作": "선택한 도우미를 신뢰하며 선언된 로컬 작업을 허용합니다", "我信任此插件来源,并允许它在网关电脑上运行。": "이 플러그인 출처를 신뢰하며 게이트웨이 컴퓨터에서 실행하도록 허용합니다.", "所有菜单都已在这一组": "모든 메뉴가 이미 이 그룹에 있습니다", "手动凭证 JSON": "인증 정보 JSON 수동 입력", "手动凭证 JSON(兼容入口)": "인증 정보 JSON 수동 입력(호환용)", "执行": "실행", "执行时刻": "실행 시각", "把菜单移入 {name}": "메뉴를 {name}(으)로 이동", "把菜单移入「{name}」": "메뉴를 \"{name}\"(으)로 이동", "报表": "리포트", "拖动分组 {name}": "그룹 {name} 끌기", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "왼쪽 ⠿를 끌어 순서를 바꾸세요(메뉴는 그룹 간 이동 가능). 스위치로 표시/숨김, 그룹 이름을 클릭해 이름 변경, 그룹 머리의 +로 다른 메뉴를 가져오기, 눈 버튼으로 그룹 전체 숨기기. 변경은 즉시 적용·저장되며 왼쪽 사이드바가 결과입니다. 키보드: 핸들에 포커스 후 Alt+↑ / ↓.", "拖动菜单 {name}": "메뉴 {name} 끌기", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "끌어서 그룹 순서 변경(Alt+↑ / ↓ 도 가능)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "끌어서 순서 변경, 그룹 간 이동 가능(Alt+↑ / ↓ 도 가능)", "按 API Key 筛选": "API Key로 필터링", "按 Token": "Token 순", "按天请求趋势": "일별 요청 추이", "按客户端筛选": "클라이언트로 필터링", "按访问网关的 API Key 统计生产请求,不包含助手对话和模型测试。停用、删除 Key 不会删除历史用量;密钥值不会进入报表。历史没有记录身份的请求单列,不能追溯到某把 Key。": "게이트웨이 API Key별로 실제 요청을 집계하며 어시스턴트 대화와 모델 테스트는 제외합니다. Key를 비활성화하거나 삭제해도 이전 사용량은 유지됩니다. 비밀키 값은 보고서에 포함하지 않습니다. Key가 기록되지 않은 이전 요청은 별도로 표시하며 특정 Key로 추정하지 않습니다.", "按请求 User-Agent 识别的客户端类型统计,不代表设备或用户数。“其它”表示有 User-Agent 但未匹配已知类型;“未记录客户端”表示旧数据或请求未带 User-Agent。": "요청 User-Agent에서 식별한 클라이언트 유형별로 집계하며 기기 수나 사용자 수가 아닙니다. 기타는 User-Agent가 있지만 알려진 유형과 일치하지 않는 경우이고, 클라이언트 미기록은 이전 데이터 또는 User-Agent가 없는 경우입니다.", "按请求数": "요청 수순", "按间隔检查插件版本,在对应卡片显示更新;关闭后仍可手动检查。自动更新或自动下载开启时也使用此间隔。": "이 간격으로 플러그인 버전을 확인하고 카드에 업데이트를 표시합니다. 꺼도 수동 확인은 가능합니다. 자동 업데이트와 다운로드도 이 간격을 사용합니다.", "按需下载": "필요할 때 다운로드", "按需安装插件,为 AI 路由网关扩展提供商能力。插件独立于主程序更新,下载完成后自动校验并安装。": "필요한 플러그인을 설치해 AI 라우팅 게이트웨이를 확장하세요. 본체와 별도로 업데이트되며 다운로드 후 자동으로 검증하고 설치합니다.", "换一组筛选条件,或把来源和状态都切回「全部」。": "필터 조건을 바꾸거나 소스와 상태를 모두 「전체」로 되돌리세요.", "授权": "허용", "排序已保存,但列表刷新失败:{message}": "순서는 저장되었지만 목록을 새로고침하지 못했습니다: {message}", "排序未保存:{message}": "순서를 저장하지 못했습니다: {message}", "排序设置迁移失败:{message}": "정렬 설정을 이전하지 못했습니다: {message}", "排第 1 的接走所有请求,直到它不能答(限流 / 故障 / 额度尽)才轮到下一位 —— 就是「从上往下」的现状行为。": "1 번째 계정이 응답하지 못하게 될 때(레이트 리밋 / 장애 / 잔여량 소진)까지 모든 요청을 처리하고 그다음 순서로 넘어갑니다 — 기존의 \"위에서 아래로\" 방식 그대로입니다.", "接入 Agnes AI 国际版:浏览器登录、在线模型目录、套餐用量与美元余额;与 Agnes Code 桌面版独立。": "Agnes AI 글로벌 버전 연결: 브라우저 로그인, 온라인 모델 목록, 요금제 사용량 및 미국 달러 잔액. Agnes Code 데스크톱 제품과는 별개입니다.", "接入 Agnes Code:本机登录态或 accessToken、模型目录、积分与登录奖励观测。": "Agnes Code 연결: 로컬 로그인 또는 accessToken, 모델 목록, 포인트 및 로그인 보상 확인.", "接入 Codar(科搭):本机凭据、模型目录、积分与滚动窗口签到。": "Codar 연결: 로컬 인증 정보, 모델 목록, 포인트 및 이동 시간대 출석.", "接入 DeepAI Code:网页登录、本机凭据、模型目录、额度查询与签到。": "DeepAI Code 연결: 웹 로그인, 로컬 인증 정보, 모델 목록, 할당량 조회 및 출석.", "接入 JoyCode(京东):网页登录、企业租户、模型目录与额度明细。": "JoyCode (JD) 연결: 웹 로그인, 기업 테넌트, 모델 목록 및 할당량 상세.", "接入 WPS 灵犀:网页登录、客户端导入、Cookie、模型目录与智点;签到及附带任务默认允许。": "WPS Lingxi 연결: 웹 로그인, 클라이언트 가져오기, Cookie, 모델 목록 및 포인트. 체크인 및 부가 작업은 기본적으로 허용됩니다.", "接入中国移动云 MClaw:浏览器登录、在线模型目录、aitokens 额度与凭证续期。": "China Mobile Cloud MClaw 연결: 브라우저 로그인, 온라인 모델 목록, aitokens 한도 및 인증 정보 갱신.", "接入书生·端砚墨点计划:浏览器登录、API Key、模型目录与墨点额度窗口。": "Intern InkStone 포인트 요금제 연결: 브라우저 로그인, API Key, 모델 목록 및 기간별 포인트 한도.", "接口不兼容": "인터페이스 호환 불가", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "사이드바에 표시할 메뉴, 순서, 그룹을 설정합니다. 숨김은 탐색 표시에만 영향을 주며 접근 권한을 회수하지 않습니다. 숨긴 페이지도 주소로 직접 열 수 있습니다.", "提供商启停": "공급자 활성화 설정", "提供商增强": "공급자 확장", "提供商设置": "제공자 설정", "提示词": "프롬프트", "提示词开关": "프롬프트 스위치", "插件": "플러그인", "插件与当前网关的公共接口不兼容,暂未加载。": "플러그인이 현재 게이트웨이의 공개 인터페이스와 호환되지 않아 로드되지 않았습니다.", "插件仓库": "플러그인 저장소", "插件任务": "플러그인 작업", "插件包与主程序分开安装、分开升级。卸载插件后账号数据仍然保留,重新装回即可继续使用;仅该包提供的转发与添加账号需要插件,本体订阅不受影响。": "플러그인 팩은 앱과 별도로 설치하고 업데이트합니다. 제거해도 계정 데이터는 유지되며 다시 설치하면 계속 사용할 수 있습니다. 해당 팩이 제공하는 전달 및 계정 추가 기능만 플러그인이 필요하며 본체 구독에는 영향이 없습니다.", "插件包与主程序分开安装、分开升级。卸载插件后账号数据仍然保留,重新装回即可继续使用;但转发与添加账号需要插件在位。": "플러그인 팩은 앱과 별도로 설치·업그레이드됩니다. 제거해도 계정 데이터는 남아 있으며 다시 설치하면 그대로 사용할 수 있습니다. 다만 포워딩과 계정 추가에는 플러그인이 필요합니다.", "插件包大小不能超过 {n} MiB": "플러그인 패키지 크기는 {n} MiB를 초과할 수 없습니다.", "插件包已卸载": "플러그인 팩을 제거했습니다", "插件包已安装": "플러그인 팩을 설치했습니다", "插件包已安装到 v{version}": "플러그인 v{version} 설치 완료", "插件包已更新到 v{version}": "플러그인 팩을 v{version}(으)로 업데이트했습니다", "插件包的可执行文件不在磁盘上(可能被手工删除或移动),请重新安装。": "플러그인 팩 실행 파일이 디스크에 없습니다(직접 삭제하거나 옮겼을 수 있습니다). 다시 설치하세요.", "插件参数必须是 JSON 对象": "플러그인 설정은 JSON 객체여야 합니다", "插件发布信息读取失败,请稍后刷新": "플러그인 릴리스 정보를 불러오지 못했습니다. 나중에 새로고침해 주세요.", "插件只声明了短信登录,但没有下发可用的动态表单;此界面不会猜测短信接口": "플러그인이 SMS 로그인만 선언하고 사용 가능한 동적 양식을 제공하지 않았습니다. 이 화면은 SMS API를 추측하지 않습니다.", "插件尚未声明有效版本,暂时无法安装": "플러그인에 유효한 버전이 지정되지 않아 아직 설치할 수 없습니다.", "插件尚未提供可下载的发布包": "이 플러그인은 아직 다운로드할 수 있는 릴리스를 제공하지 않습니다.", "插件已就绪,账号列表将自动同步。": "플러그인이 준비되었습니다. 계정 목록이 자동으로 동기화됩니다.", "插件更新未完成": "플러그인 업데이트가 완료되지 않았습니다", "插件未启用或已不再申请此权限;已有授权仍可撤销。": "플러그인이 비활성화되었거나 이 권한을 더 이상 요청하지 않습니다. 기존 권한은 취소할 수 있습니다.", "插件未实现 auth.methods(501),且没有可用的旧版登录声明;仅保留需要插件确认的手动凭证 JSON 入口": "플러그인이 auth.methods를 구현하지 않았고(501) 사용 가능한 이전 버전 로그인 선언도 없습니다. 플러그인 확인이 필요한 인증 정보 JSON 수동 입력 항목만 유지됩니다.", "插件未实现 auth.methods(501);以下入口仅依据旧版登录声明显示": "플러그인이 auth.methods를 구현하지 않았습니다(501). 아래 항목은 이전 버전 로그인 선언만을 바탕으로 표시됩니다.", "插件没有声明可用的账号登录方式,请更新插件或联系插件作者": "플러그인이 사용 가능한 계정 로그인 방식을 선언하지 않았습니다. 플러그인을 업데이트하거나 작성자에게 문의하세요.", "插件清单暂未完整读取": "플러그인 목록을 완전히 불러오지 못했습니다", "插件版本(留空使用 latest)": "플러그인 버전 (비워 두면 latest)", "插件状态已变更,但账号列表同步失败。请回到账号页点击「刷新」重试。": "플러그인 상태는 변경되었지만 계정 목록을 동기화하지 못했습니다. 계정 페이지에서 \"새로고침\"을 눌러 다시 시도하세요.", "插件独立安装与更新。卸载后账号数据仍会保留;脚本插件共用一个按需下载的运行时。": "플러그인은 개별적으로 설치하고 업데이트합니다. 제거해도 계정 데이터는 유지되며, 스크립트 플러그인은 필요할 때 다운로드하는 런타임을 공유합니다.", "插件登录指引": "플러그인 로그인 안내", "插件登录方式包含重复的输入字段": "플러그인 로그인 방식에 중복된 입력 필드가 있습니다.", "插件登录选择字段包含无效或重复的选项": "플러그인 로그인 선택 필드에 잘못되거나 중복된 옵션이 있습니다.", "插件登录选择字段缺少选项列表": "플러그인 로그인 선택 필드에 옵션 목록이 없습니다.", "插件目录": "플러그인 디렉터리", "插件设置": "플러그인 설정", "插件设置已保存": "플러그인 설정 저장됨", "插件返回了无效的登录字段,请更新插件或联系作者": "플러그인이 잘못된 로그인 필드를 반환했습니다. 플러그인을 업데이트하거나 작성자에게 문의하세요.", "插件返回了无效的登录方式,请更新插件或联系作者": "플러그인이 잘못된 로그인 방식을 반환했습니다. 플러그인을 업데이트하거나 작성자에게 문의하세요.", "插件选项": "플러그인 옵션", "搜索…": "검색…", "搜索插件": "플러그인 검색", "撤销授权": "권한 취소", "支持自动授权、设备码、手动授权码和插件声明的凭据表单;本机读取作用于网关电脑。": "자동 인증, 기기 코드, 수동 인증 코드 및 플러그인 인증 양식을 지원합니다. 로컬 가져오기는 게이트웨이 컴퓨터에서 읽습니다.", "改动立即生效;禁用后指向它的请求会落到下一个候选。": "변경은 즉시 적용됩니다. 비활성화하면 해당 모델로 가는 요청은 다음 후보로 넘어갑니다.", "改动类工具": "변경 도구", "改成": "변경 값", "文件缺失": "파일 없음", "文档": "문서", "新": "신규", "新分组名": "새 그룹 이름", "新增 {n} 条": "{n}건 추가", "新对话": "새 대화", "新建分组": "그룹 추가", "无凭证": "자격 증명 없음", "无法解密": "복호화할 수 없음", "无法读取插件更新进度,请刷新后查看结果。": "플러그인 업데이트 진행 상황을 읽을 수 없습니다. 새로고침하여 결과를 확인하세요.", "无法读取登录方式": "로그인 방식을 불러올 수 없음", "日志": "로그", "旧版本保存的正文可能已截断,无法恢复缺失内容": "이전 버전에서 저장한 본문이 잘렸을 수 있으며 누락된 내용은 복구할 수 없습니다", "旧版浏览器登录暂不接收备注名和登录代理,请添加后在账号设置中调整。": "이전 버전 브라우저 로그인은 현재 표시 이름과 로그인 프록시를 받지 않습니다. 계정을 추가한 뒤 계정 설정에서 조정하세요.", "旧版登录方式": "이전 버전 로그인 방식", "映射名": "매핑 이름", "显示 {name}": "{name} 표시", "显示分组 {name}": "그룹 {name} 표시", "显示这一组": "이 그룹 표시", "智能": "AI", "暂不可安装": "설치 불가", "暂无可安装的插件": "설치 가능한 플러그인이 없습니다", "暂无可用的原生辅助程序,请先安装并启用所需插件。": "사용 가능한 네이티브 도우미가 없습니다. 필요한 플러그인을 먼저 설치하고 활성화하세요.", "暂时无法获取插件状态,显示上次结果;这不代表插件启动失败。": "플러그인 상태를 일시적으로 가져올 수 없어 이전 결과를 표시합니다. 플러그인 시작 실패를 의미하지 않습니다.", "暂未发布": "아직 게시되지 않음", "暂未取得明确的加载结果,不能据此判断启动失败。": "확정된 로드 결과가 아직 없습니다. 이를 시작 실패로 판단할 수는 없습니다.", "更多": "더보기", "更新": "업데이트", "更新到 v{version}": "v{version}으로 업데이트", "更新前无法继续调用模型;账号、配置和历史记录不会被删除。": "업데이트하기 전에는 모델을 호출할 수 없습니다. 계정, 설정 및 기록은 삭제되지 않습니다.", "更新或启停会等待共享宿主内的请求结束;账号数据始终由网关统一保存。": "업데이트 및 활성화 전환은 공유 호스트의 요청이 끝날 때까지 기다립니다. 계정 데이터는 항상 게이트웨이가 통합 관리합니다.", "更新/重装": "업데이트/재설치", "最大化": "최대화", "最小化": "최소화", "最近调用": "최근 호출", "有": "있음", "有 {count} 个插件可更新": "업데이트할 수 있는 플러그인 {count}개", "有插件包的协议版本与当前网关不一致({versions}),请下载对应版本的插件包。": "프로토콜 버전이 현재 게이트웨이와 다른 플러그인 팩이 있습니다({versions}). 해당 버전의 팩을 내려받으세요.", "有新版本,重启后生效": "새 버전이 있습니다. 재시작하면 적용됩니다", "有新版本:v{current} → v{latest}": "새 버전이 있습니다: v{current} → v{latest}", "有更新": "업데이트 있음", "服务器": "서버", "服务器已切换,请重新加载页面": "서버가 변경되었습니다. 페이지를 다시 불러오세요", "未加载": "로드 안 됨", "未同步": "미동기화", "未就绪": "준비 안 됨", "未授权": "허용되지 않음", "未登录": "미로그인", "未知工具「{name}」:它在设置里可能刚被取消勾选,或这一版助手还不认识它。": "알 수 없는 도구 \"{name}\": 설정에서 방금 선택 해제되었거나, 이 버전의 어시스턴트가 아직 인식하지 못하는 도구일 수 있습니다.", "未签名": "서명 안 됨", "未签名包不会自动覆盖;点击「补齐插件」将安装官方签名包。": "미서명 패키지는 자동으로 교체하지 않습니다. 필수 플러그인 업데이트를 누르면 공식 서명 패키지를 설치합니다.", "未签名:可以正常使用,但无法证明这个包出自官方;升级时同样只做格式校验": "서명 없음: 정상적으로 사용할 수 있지만 이 팩이 공식 배포본임을 증명할 수 없습니다. 업그레이드 시에도 형식 검사만 합니다", "未能保存自动刷新设置": "자동 새로고침 설정을 저장하지 못했습니다", "未能读取自动刷新设置": "자동 새로고침 설정을 불러오지 못했습니다", "未记录": "미기록", "未记录客户端": "클라이언트 미기록", "未运行": "실행 중 아님", "未选择服务器": "선택된 서버 없음", "本地网关监听状态": "로컬 게이트웨이 리스닝 상태", "本次初始化超过等待时限,已停止;可查看诊断后重试。": "초기화가 제한 시간을 초과하여 중지되었습니다. 진단을 확인한 후 다시 시도할 수 있습니다.", "本次加载未完成,请查看诊断。": "이번 로드가 완료되지 않았습니다. 진단을 확인하세요.", "本次用时 {n} 秒": "이번 소요 시간: {n}초", "权限": "권한", "来自 Magpie 社区的插件,共用一个按需下载的运行时": "Magpie 커뮤니티 플러그인은 필요할 때 다운로드하는 런타임을 공유합니다", "来自环境变量": "환경 변수에서", "来自环境变量 GITHUB_TOKEN": "GITHUB_TOKEN 환경 변수에서 가져옴", "松开刷新": "놓아서 새로고침", "查看 GitHub 仓库:{repository}": "GitHub 저장소 보기: {repository}", "查看全部": "모두 보기", "查看参数": "매개변수 보기", "查看发布说明": "릴리스 노트 보기", "查看发布页面": "릴리스 페이지 보기", "查看提供商插件": "제공자 플러그인 보기", "查看更新日志": "변경 내역 보기", "查看结果": "결과 보기", "查看进度": "진행 상황 보기", "标题总结设置": "제목 생성 설정", "桌面桥不可用(本页需要在 Agent2API 客户端里打开)": "데스크톱 브리지를 사용할 수 없습니다 (이 페이지는 Agent2API 클라이언트에서 열어야 합니다)", "检查更新失败": "업데이트 확인 실패", "检测到更新后自动下载、校验并安装已启用的官方签名插件。": "업데이트를 감지하면 활성화된 공식 서명 플러그인을 자동으로 다운로드, 검증 및 설치합니다.", "检测到更新后自动下载、校验并安装已启用的官方签名插件。未签名或第三方插件仍需手动更新。": "활성화된 공식 서명 플러그인의 업데이트를 자동 다운로드·검증·설치합니다. 미서명 또는 타사 플러그인은 수동 업데이트해야 합니다.", "模型分布": "모델별 분포", "模型管理": "모델 관리", "正在下载 Bun 运行时": "Bun 런타임 다운로드 중", "正在下载…": "다운로드 중…", "正在下载脚本插件": "스크립트 플러그인 다운로드 중", "正在初始化插件,尚未收到失败结果。": "플러그인을 초기화하고 있습니다. 실패 결과는 보고되지 않았습니다.", "正在加载": "로드 중", "正在加载 · {n} 家提供商的账号暂未显示,就绪后自动恢复。": "로드 중 · {n}개 제공업체의 계정이 일시적으로 숨겨져 있으며 준비가 완료되면 자동으로 다시 표시됩니다.", "正在加载新插件…": "새 플러그인을 불러오는 중…", "正在加载脚本插件": "스크립트 플러그인 불러오는 중", "正在启动": "시작 중", "正在启动插件,账号将在就绪后自动恢复。": "플러그인을 시작하고 있습니다. 준비가 완료되면 계정이 자동으로 다시 표시됩니다.", "正在完成人机验证…": "인증을 완료하는 중…", "正在恢复原有脚本插件": "이전 스크립트 플러그인 복원 중", "正在恢复旧版本插件…": "이전 플러그인 버전을 복원하는 중…", "正在更新第 {index}/{total} 个…": "{total}개 중 {index}번째 업데이트 중…", "正在校验包内容…": "패키지 검증 중…", "正在检查…": "확인 중…", "正在检查或准备脚本运行环境。": "스크립트 실행 환경을 확인하거나 준비하고 있습니다.", "正在自动补齐官方插件,不受日常更新开关和通道限制。": "일반 업데이트 설정과 채널에 관계없이 공식 플러그인을 필요한 버전으로 자동 업데이트하고 있습니다.", "正在补齐插件…": "필수 플러그인 업데이트 중…", "正在识别二维码…": "QR 코드 인식 중…", "正在读取、校验并安装插件包…": "플러그인을 읽고 검증·설치하는 중…", "正在读取插件信息 {done}/{total}": "플러그인 정보 불러오는 중 {done}/{total}", "正在读取插件列表…": "플러그인 목록 로드 중…", "正在读取插件清单…": "플러그인 목록 불러오는 중…", "正在读取插件登录方式…": "플러그인 로그인 방식을 불러오는 중…", "正在连接…": "연결 중…", "正在重试…": "재시도 중…", "正在验证…": "인증 중…", "此 OAuth 方法未声明备注名字段,账号名由插件获取;添加后可在账号设置中修改。": "이 OAuth 방식은 표시 이름 필드를 선언하지 않았습니다. 계정 이름은 플러그인이 가져오며 계정을 추가한 뒤 계정 설정에서 변경할 수 있습니다.", "此插件不是提供商插件,当前无法安装": "제공자 플러그인이 아니므로 여기에서 설치할 수 없습니다.", "此方式可能需要手动提交授权回调。完成官方登录后,按共享登录桥的提示粘贴完整回调地址;不要把回调地址当作 API Key 或 Token。": "이 방식은 인증 콜백을 직접 제출해야 할 수 있습니다. 공식 로그인을 완료한 뒤 공용 로그인 브리지의 안내에 따라 전체 콜백 URL을 붙여넣으세요. 콜백 URL을 API Key나 Token으로 사용하지 마세요.", "此旧版登录声明无法安全映射到动态表单,请联系插件作者": "이전 버전 로그인 선언을 동적 양식에 안전하게 매핑할 수 없습니다. 플러그인 작성자에게 문의하세요.", "此登录方式需要由共享登录桥发起": "이 로그인 방식은 공용 로그인 브리지에서 시작해야 합니다.", "每台服务器的登录状态各自独立保存,切换后不用重新登录。地址改掉后需要重新登录。": "로그인 상태는 서버마다 따로 저장되므로 다시 전환해도 재로그인이 필요 없습니다. 주소를 바꾸면 다시 로그인해야 합니다.", "每日签到及一次性任务;可能消耗智点、发送对话并创建及解散群聊": "매일 체크인 및 일회성 작업. 크레딧 소비, 대화 전송, 그룹 채팅 생성 및 해산이 발생할 수 있습니다", "每轮": "매 턴", "没有可恢复的维度明细": "복구 가능한 상세 내역이 없습니다", "没有可更新的版本": "업데이트할 버전이 없습니다", "没有找到提供商「{provider}」的账号": "제공자 \"{provider}\"의 계정을 찾지 못했습니다", "没有找到账号「{name}」": "계정 \"{name}\"을(를) 찾지 못했습니다", "没有符合筛选条件的插件": "필터 조건에 맞는 플러그인이 없습니다", "没有说明": "설명 없음", "没有近期套餐池请求,不生成验证码令牌": "최근 Start Plan 요청이 없어 인증 토큰을 생성하지 않습니다.", "没给账号名": "계정 이름이 지정되지 않았습니다", "注入系统提示词": "시스템 프롬프트 주입", "活动": "이벤트", "浅色": "라이트", "消耗该账号额度": "이 계정의 할당량을 소모합니다", "消耗额度": "할당량 소모", "深色": "다크", "添加": "추가", "添加失败": "추가 실패", "添加服务器": "서버 추가", "清单更新于 {time}": "목록 업데이트: {time}", "清空 = 回到内置默认(与「恢复默认」等价)。": "비우면 내장 기본값으로 돌아갑니다 (\"기본값으로 복원\"과 동일).", "清除失败:{error}": "삭제 실패: {error}", "点「编辑」弹窗改内容;开关关掉就整段不发。": "\"편집\"을 눌러 대화상자에서 내용을 수정하세요. 스위치를 끄면 전체가 전송되지 않습니다.", "点击重命名": "클릭하여 이름 변경", "熔断": "서킷 브레이커", "熔断时长(秒)": "차단 시간(초)", "版本 {version} · 从 GitHub 直接下载安装包": "버전 {version} · GitHub에서 직접 다운로드합니다", "版本 {version} · 从网关下载安装包": "버전 {version} · 게이트웨이에서 패키지를 다운로드합니다", "版本 {version} · 更新包需从 Release 页面获取": "버전 {version} · 업데이트 패키지는 Release 페이지에서 받으세요", "环境变量 Key": "환경 변수 Key", "用一句话让我查或改本机的模型转发配置。": "한 문장으로 요청하세요. 이 PC의 모델 포워딩 설정을 조회하거나 변경합니다.", "用量详情": "사용량 상세", "由其他插件接管": "다른 플러그인에서 관리", "电脑端已关闭「软件版本检查」,此处只做手动检查": "데스크톱에서 「소프트웨어 버전 확인」이 꺼져 있어 여기서는 수동 확인만 합니다", "登录、模型调用、模型列表、余额查询和签到等功能,可能因插件实现或上游变化而不可用。": "로그인, 모델 호출, 모델 목록, 잔액 조회, 출석 체크 등의 기능은 플러그인 구현이나 업스트림 변경에 따라 사용할 수 없게 될 수 있습니다.", "登录指引 / 设备码授权": "로그인 안내 / 기기 코드 인증", "登录支持自动完成的 OAuth/设备码和 API Key;要求手动回调的插件暂不支持。": "자동으로 완료되는 OAuth/기기 코드 로그인과 API Key를 지원합니다. 수동 콜백이 필요한 플러그인은 아직 지원하지 않습니다.", "登录方式说明": "로그인 방식 안내", "登录桥未确认账号添加完成": "로그인 브리지가 계정 추가 완료를 확인하지 않았습니다.", "登录面板": "로그인", "监听 127.0.0.1": "127.0.0.1 리스닝 중", "直接加载兼容的 Magpie / OpenCode v1 提供商包,多个插件共用一个 Bun 进程。": "호환되는 Magpie / OpenCode v1 제공자 패키지를 직접 불러옵니다. 여러 플러그인이 하나의 Bun 프로세스를 공유합니다.", "直接说要改什么 / 查什么…(Enter 发送,Shift+Enter 换行)": "바꿀 것 / 확인할 것을 바로 입력하세요… (Enter 전송, Shift+Enter 줄바꿈)", "确定删除账号「{name}」?{note}": "계정「{name}」을(를) 삭제할까요? {note}", "确定卸载「{name}」吗?卸载后这个包里的提供商将无法转发,也无法添加账号。账号数据本身不会被删除,重新安装后可以继续使用。": "\"{name}\"을(를) 제거할까요? 제거하면 이 팩의 제공자는 포워딩과 계정 추가를 할 수 없습니다. 계정 데이터 자체는 삭제되지 않으며 다시 설치하면 사용할 수 있습니다.", "确定卸载「{name}」吗?对应提供商将停止转发,账号数据仍然保留,重新安装后恢复。": "“{name}”을(를) 제거할까요? 해당 제공자의 전달이 중지됩니다. 계정 데이터는 유지되며 다시 설치하면 사용할 수 있습니다.", "确认后立即生效": "확인 후 즉시 적용됩니다", "确认并安装": "확인 후 설치", "确认授权": "권한 승인", "社区": "커뮤니티", "社区插件": "커뮤니티 플러그인", "禁用会把账号移出转发队列;若这条线路没有别的可用账号,请求会直接失败。": "비활성화하면 계정이 포워딩 큐에서 빠집니다. 이 경로에 다른 사용 가능한 계정이 없으면 요청이 그대로 실패합니다.", "移入「{name}」": "\"{name}\"(으)로 이동", "稍后": "나중에", "空分组 · 点组头的 + 把菜单移进来": "빈 그룹 · 머리의 +로 메뉴를 가져오세요", "立即刷新": "지금 새로고침", "立即升级": "지금 업그레이드", "第 {current} / {total} 页": "{current} / {total} 페이지", "第三方": "서드파티", "等待前面的插件完成,不代表加载失败。": "앞선 플러그인이 완료되기를 기다리고 있습니다. 로드 실패가 아닙니다.", "等待加载": "로드 대기 중", "等待当前任务结束,插件继续服务…": "진행 중인 작업이 끝나기를 기다리는 중이며 플러그인은 계속 서비스합니다…", "等待窗口": "수령 시간 대기", "等待脚本插件的在途请求和登录完成": "진행 중인 스크립트 요청과 로그인 완료 대기 중", "等待账号登录完成…": "계정 로그인 완료를 기다리는 중…", "等待运行环境恢复": "실행 환경 복구 대기 중", "等这一轮跑完…": "이번 턴이 끝날 때까지 기다리는 중…", "签到中心": "출석 체크 센터", "签到及插件附带任务;可能消耗额度,具体行为由插件决定": "체크인 및 플러그인 부가 작업. 크레딧을 소비할 수 있으며 구체적인 동작은 플러그인이 결정합니다", "签到及附带任务默认允许,实际执行遵循签到中心的开关和计划。": "출석 체크 및 부가 작업은 기본적으로 허용되며, 실제 실행은 출석 체크 센터의 스위치와 계획을 따릅니다.", "粘贴 GitHub 令牌(ghp_… / github_pat_…)": "GitHub 토큰 붙여넣기 (ghp_… / github_pat_…)", "粘贴插件要求的 JSON 对象,不要包含 provider、name、proxy 或登录流程控制字段": "플러그인이 요구하는 JSON 객체를 붙여넣으세요. provider, name, proxy 또는 로그인 흐름 제어 필드는 포함하지 마세요.", "系统提示词 + 工具定义": "시스템 프롬프트 + 도구 정의", "系统提示词已保存": "시스템 프롬프트가 저장되었습니다", "系统提示词已关闭": "시스템 프롬프트를 껐습니다", "系统提示词已开启": "시스템 프롬프트를 켰습니다", "统计排序": "통계 정렬", "继续安装": "설치 계속하기", "缓存读取": "캐시 읽기", "编辑服务器": "서버 편집", "编辑系统提示词": "시스템 프롬프트 편집", "网关 Key": "게이트웨이 키", "网关没有返回有效的登录方式列表,无法确认该插件的登录能力": "게이트웨이가 유효한 로그인 방식 목록을 반환하지 않아 이 플러그인의 로그인 기능을 확인할 수 없습니다.", "网关运行中": "게이트웨이 실행 중", "网络代理": "네트워크 프록시", "网页提供商": "웹 제공업체", "网页登录(旧版声明)": "웹 로그인(이전 버전 선언)", "能力位决定下游看到的声明(能不能贴图、能塞多少上下文),不改上游的真实行为。": "기능 플래그는 하위에 보이는 선언(이미지 입력 가능 여부, 컨텍스트 크기)을 결정하며 업스트림의 실제 동작은 바꾸지 않습니다.", "脚本不是安全沙箱,可以访问网关所在电脑的文件和网络。不要安装来历不明的插件。": "스크립트는 샌드박스가 아니며 게이트웨이 컴퓨터의 파일과 네트워크에 접근할 수 있습니다. 출처가 불분명한 플러그인은 설치하지 마세요.", "脚本插件共用运行环境;重试会等待当前任务结束,不会删除账号或重新安装插件。": "스크립트 플러그인은 실행 환경을 공유합니다. 재시도는 현재 작업이 끝날 때까지 기다리며 계정을 삭제하거나 플러그인을 재설치하지 않습니다.", "脚本签到可能包含额外任务并消耗额度。WPS 灵犀还可能发送对话、创建及解散群聊;授权后会接入现有自动签到计划。": "스크립트 체크인은 추가 작업을 실행하고 크레딧을 소비할 수 있습니다. WPS Lingxi는 대화를 전송하거나 그룹 채팅을 생성하고 해산할 수도 있습니다. 허용하면 기존 자동 체크인 일정에 포함됩니다.", "自动": "자동", "自动刷新间隔(秒)": "자동 새로고침 간격(초)", "自动安装": "자동 설치", "自动更新插件": "플러그인 자동 업데이트", "自动检查插件更新": "플러그인 업데이트 자동 확인", "自动维护": "자동 관리", "至少要保留一个分组": "그룹은 최소 하나 남아야 합니다", "补签": "보충", "补齐插件": "필수 플러그인 업데이트", "订阅链接必须是 http:// 或 https:// 开头": "구독 링크는 http:// 또는 https:// 로 시작해야 합니다", "设备授权码:{code}": "기기 인증 코드: {code}", "设备码授权时,请按网关给出的指引在官方页面确认设备授权码。没有授权地址不等于失败,可能需要在网关本机客户端完成操作;请以共享登录桥返回的状态为准。": "기기 코드 인증 시 게이트웨이 안내에 따라 공식 페이지에서 기기 인증 코드를 확인하세요. 인증 URL이 없다고 실패한 것은 아니며 게이트웨이 컴퓨터의 클라이언트에서 작업을 완료해야 할 수 있습니다. 공용 로그인 브리지가 반환하는 상태를 기준으로 판단하세요.", "设置": "설정", "设置不可隐藏(隐藏了只能清缓存找回来)": "\"설정\"은 숨길 수 없습니다(숨기면 저장소를 지워야 되돌릴 수 있습니다)", "设置已生效,但写入磁盘失败(重启后会恢复原设置)": "설정이 적용됐지만 저장에 실패했습니다(재시작 후 원래 설정으로 복구)", "设置未同步": "설정 동기화 안 됨", "诊断": "진단", "诊断信息": "진단 정보", "该提供商已不在运行时目录中,请返回列表重新选择": "이 제공자가 더 이상 런타임 목록에 없습니다. 목록으로 돌아가 다시 선택하세요.", "该登录方式没有可选项,无法提交;请更新插件或联系作者": "이 로그인 방식에는 선택할 수 있는 옵션이 없어 제출할 수 없습니다. 플러그인을 업데이트하거나 작성자에게 문의하세요.", "请允许安装未知来源应用后重试": "알 수 없는 출처의 앱 설치를 허용한 후 다시 시도하세요", "请先在插件页授权签到及附带任务": "먼저 플러그인 페이지에서 체크인 및 부가 작업을 허용하세요", "请先粘贴 GitHub 令牌": "먼저 GitHub 토큰을 붙여넣으세요", "请先选择有效的 OAuth 登录方式": "먼저 유효한 OAuth 로그인 방식을 선택하세요.", "请在 Release 页面下载后通过 TestFlight 或 App Store 安装": "Release 페이지에서 내려받은 뒤 TestFlight 또는 App Store를 통해 설치하세요", "请填一个分组名": "그룹 이름을 입력하세요", "请填写订阅名称": "구독 이름을 입력하세요", "请填写非空的凭证 JSON 对象,且不超过 256 KiB": "256 KiB를 넘지 않는 비어 있지 않은 인증 정보 JSON 객체를 입력하세요.", "请查看上方原因,稍后刷新重试。": "위의 원인을 확인한 후 나중에 새로고침해 주세요.", "请根据不兼容原因更新插件或网关;不会要求两者版本号一致。": "호환성 오류에 따라 플러그인 또는 게이트웨이를 업데이트하세요. 두 버전 번호가 같을 필요는 없습니다.", "请求失败": "요청 실패", "请求失败:{message}": "요청 실패: {message}", "请求数": "요청 수", "请求日志": "요청 로그", "请确认": "확인해 주세요", "请稍候": "잠시 기다려 주세요", "请输入 {min}–{max} 之间的整数秒数": "초 단위로 {min}–{max} 사이의 정수를 입력하세요", "请选择 {label} 的有效选项": "{label}의 유효한 옵션을 선택하세요.", "读取完成的插件会陆续显示,无需停留在此页面等待。": "정보를 불러온 플러그인부터 표시됩니다. 이 페이지를 떠나도 계속 불러옵니다.", "读取插件状态失败:{error}": "플러그인 상태를 읽지 못했습니다: {error}", "读取文件失败": "파일을 읽지 못했습니다", "读取消耗排序失败:{message}": "소비 순서를 불러오지 못했습니다: {message}", "读取设置失败:{error}": "설정 읽기 실패: {error}", "账号 / 登录出网代理": "계정 / 로그인 아웃바운드 프록시", "账号不在当前队列里": "계정이 현재 큐에 없습니다", "账号列表响应异常": "계정 목록 응답이 올바르지 않습니다", "账号已删除": "계정을 삭제했습니다", "账号已在全局队列第一位": "계정이 이미 전역 큐 1위입니다", "账号排序接口不可用,请确认网关与界面已更新": "계정 정렬 API를 사용할 수 없습니다. 게이트웨이와 화면이 모두 업데이트되었는지 확인하세요.", "账号登录方式": "계정 로그인 방식", "趋势统计指标": "추이 통계 지표", "趋势统计维度": "추이 통계 차원", "跟随系统": "시스템 설정 사용", "路由策略": "라우팅 전략", "转发能力": "전달 기능", "软件版本检查设置不可用": "소프트웨어 업데이트 확인 설정을 사용할 수 없습니다.", "输入 / 输出": "입력 / 출력", "输入这台网关的管理员账号与密码。": "이 게이트웨이의 관리자 계정과 비밀번호를 입력하세요.", "运行时不内置于安装包,首次安装脚本插件时自动下载并校验。": "런타임은 설치 파일에 포함되지 않습니다. 스크립트 플러그인을 처음 설치할 때 자동으로 다운로드하고 검증합니다.", "运行正常 · {url}": "정상 작동 중 · {url}", "运行状态": "실행 상태", "还没有安装任何提供商插件包": "아직 설치된 제공자 플러그인 팩이 없습니다", "还没有签到记录": "아직 체크인 기록이 없습니다", "还没有选择对话模型:先在下方选一个(或去「设置 → AI 助手」里选)。": "대화 모델을 아직 선택하지 않았습니다: 아래에서 선택하세요 (\"설정 → AI 어시스턴트\"에서도 선택할 수 있습니다).", "这一版没有提供 Android 安装包:{reason}": "이 버전에는 Android 설치 패키지가 없습니다: {reason}", "这一项已隐藏": "이 항목은 숨겨져 있습니다", "这一项正在显示": "이 항목은 표시 중입니다", "这个包提供的提供商(可单独停用某一家)": "이 팩이 제공하는 제공자(개별로 끌 수 있습니다)", "这个面板没有管理员,用一把已启用的 API Key 访问(在桌面端「网关 Key」页创建)。": "이 패널에는 관리자가 없습니다. 활성화된 API Key로 접속하세요 (데스크톱 「게이트웨이 키」에서 생성).", "这会真实发起上游请求并消耗额度": "실제 업스트림 요청을 보내고 할당량을 소모합니다", "这台网关没有管理员,用一把已启用的 API Key 访问(在桌面端「网关 Key」页创建)。": "이 게이트웨이에는 관리자가 없습니다. 활성화된 API Key로 접근하세요 (데스크톱의 \"게이트웨이 Key\" 페이지에서 생성).", "这台网关还没有管理员。设置一个账号密码,之后用它登录。": "이 게이트웨이에는 아직 관리자가 없습니다. 계정과 비밀번호를 설정한 뒤 그것으로 로그인하세요.", "这是旧插件的手动兼容入口,不代表支持任意凭证或登录方式。请仅粘贴该插件明确接受的凭证 JSON;网关会交给 account.normalize 校验,不会自动推断 Token、Cookie 或 OAuth。": "이전 플러그인을 위한 수동 호환 입력이며 임의의 인증 정보나 로그인 방식을 지원한다는 뜻이 아닙니다. 플러그인이 명시적으로 허용하는 인증 정보 JSON만 붙여넣으세요. 게이트웨이는 account.normalize로 검증하며 Token, Cookie 또는 OAuth를 자동으로 추론하지 않습니다.", "这是真实的上游请求,与生产走同一条链路(会记账,报表排除)。": "실제 업스트림 요청으로 프로덕션과 같은 경로를 사용합니다(과금되지만 보고서에서는 제외).", "这段文本作为 system 消息排在对话最前面。工具的定义与当前配置概览由网关自动附加,不用写在这里。": "이 텍스트는 system 메시지로 대화 맨 앞에 배치됩니다. 도구 정의와 현재 구성 개요는 게이트웨이가 자동으로 덧붙이므로 여기에 쓸 필요가 없습니다.", "连不上插件仓库,请检查网络或代理后重试": "플러그인 저장소에 연결할 수 없습니다. 네트워크 또는 프록시를 확인한 후 다시 시도하세요.", "连接已有 SAP AI Core 部署:从网关本机导入凭据文件,按资源组获取模型;不创建部署或查询额度。": "기존 SAP AI Core 배포에 연결: 게이트웨이 컴퓨터에서 인증 정보 파일을 가져오고 리소스 그룹별로 모델을 조회합니다. 배포 생성이나 할당량 조회는 하지 않습니다.", "连接并保存": "연결 후 저장", "连续崩溃": "연속 충돌", "连通 · {ms}ms": "연결됨 · {ms}ms", "选择模型…": "모델 선택…", "通过 API Key 接入 River 对话与在线模型目录;插件不提供余额数值。": "API Key로 River 채팅 및 온라인 모델 목록에 연결합니다. 플러그인은 잔액 수치를 제공하지 않습니다.", "通过 Magpie 原插件接入设备码登录、对话、模型目录、余额和每日签到。": "Magpie 원본 플러그인으로 기기 코드 로그인, 대화, 모델 목록, 잔액 및 일일 출석을 연결합니다.", "通过社区插件接入 {providers},可在设置中管理提供商,签到计划在签到中心管理。": "커뮤니티 플러그인으로 {providers}에 연결합니다. 공급자는 설정에서, 체크인 일정은 체크인 센터에서 관리할 수 있습니다.", "部分信息未能更新,已读取的插件仍可查看。": "일부 정보를 업데이트하지 못했습니다. 이미 불러온 플러그인은 계속 볼 수 있습니다.", "部分插件的附带任务可能消耗额度、发送对话或创建及解散群聊。": "일부 플러그인의 부가 작업은 할당량을 소모하거나 대화를 전송하거나 그룹 채팅을 만들고 해산할 수 있습니다.", "都不注入": "둘 다 주입 안 함", "都不注入(助手退化为纯聊天)": "둘 다 주입 안 함 (어시스턴트가 순수 채팅으로)", "重启更新": "재시작 후 업데이트", "重新读取登录方式": "로그인 방식 다시 불러오기", "队列是一次性整表提交(后端按新顺序重编优先级),移动会连带调整其它组的相对次序。": "큐는 전체 표를 한 번에 제출합니다(백엔드가 새 순서로 우선순위를 다시 매깁니다). 이동하면 다른 그룹의 상대 순서도 함께 바뀝니다.", "队列是一次性整表提交;位置越靠前,路由时越先被选中。": "큐는 전체 표를 한 번에 제출합니다. 위치가 앞일수록 라우팅 시 먼저 선택됩니다.", "限流垫底": "레이트 리밋 후순위", "隐藏 {name}": "{name} 숨기기", "隐藏分组 {name}": "그룹 {name} 숨기기", "隐藏这一组": "이 그룹 숨기기", "需要强制更新": "필수 업데이트", "需要网关 API Key": "게이트웨이 API Key가 필요합니다", "需要网关本机环境": "게이트웨이 컴퓨터의 로컬 환경 필요", "需要补齐插件": "플러그인 업데이트 필요", "顺序优先": "순서 우선", "首页": "홈", "高危": "고위험", "高级参数(JSON)": "고급 설정(JSON)", "默认分支": "기본 브랜치", "默认跟随软件的正式版和 beta 关注选择;单独设置只影响日常更新,最低版本补齐按当前软件版本选择配套包。": "업데이트 채널은 기본적으로 앱 설정을 따릅니다. 별도 설정은 일반 업데이트에만 적용되며 필수 업데이트는 현재 앱 버전에 맞는 패키지를 선택합니다.", "默认跟随软件的自动检查和间隔。关闭自动检查后暂停插件自动更新;手动检查、安装和更新不受影响。": "자동 확인과 간격은 기본적으로 앱 설정을 따릅니다. 자동 확인을 끄면 플러그인 자동 업데이트가 중지되지만 수동 확인, 설치 및 업데이트는 계속 사용할 수 있습니다.", "({n} 个整组隐藏)": " (그룹 {n}개 전체 숨김)", "(不会影响客户端登录态)": "(클라이언트 로그인 상태에는 영향을 주지 않습니다)", "(仅显示前 20 条,共 {n} 条)": "(앞의 20건만 표시, 전체 {n}건)", "(可选)": " (선택)", "(未指定)": "(지정 안 됨)", "(请下载与该平台对应的插件包)": "(이 플랫폼용 팩을 내려받으세요)", "(默认问候)": "(기본 인사말)", "Agent2API · 登录": "Agent2API · 로그인", "OpenAI 兼容网关 · 管理面板": "OpenAI 호환 게이트웨이 · 관리 패널", "Turnstile 加载或验证失败,请检查网络、浏览器拦截和域名配置后重试。": "Turnstile 로드 또는 인증에 실패했습니다. 네트워크, 브라우저 차단 및 도메인 설정을 확인한 후 다시 시도하세요.", "Turnstile 验证超时,请重试。": "Turnstile 인증 시간이 초과되었습니다. 다시 시도하세요.", "创建账号并进入面板": "계정을 만들고 패널로 이동", "密码": "비밀번호", "当前浏览器不支持 Turnstile,请更新浏览器后重试。": "현재 브라우저는 Turnstile을 지원하지 않습니다. 브라우저를 업데이트한 후 다시 시도하세요.", "我不是机器人": "로봇이 아닙니다", "无法读取登录验证设置,请刷新页面重试": "로그인 인증 설정을 읽을 수 없습니다. 페이지를 새로 고친 후 다시 시도하세요", "无法连接网关": "게이트웨이에 연결할 수 없습니다", "无法连接网关,请确认服务已启动": "게이트웨이에 연결할 수 없습니다. 서비스가 실행 중인지 확인하세요", "机器人校验配置已变更或不完整,请刷新页面或联系管理员。": "봇 인증 설정이 변경되었거나 불완전합니다. 페이지를 새로 고치거나 관리자에게 문의하세요.", "登录": "로그인", "登录后可在「网关 Key」页为 API 客户端创建密钥": "로그인 후 「게이트웨이 키」 페이지에서 API 클라이언트용 키를 만들 수 있습니다", "管理员账号": "관리자 계정", "继续": "계속", "至少 8 位": "8자리 이상", "设置密码(至少 8 位)": "비밀번호 설정 (8자리 이상)", "请先勾选「我不是机器人」完成验证": "먼저 「로봇이 아닙니다」를 체크하여 인증을 완료하세요", "请填写账号与密码": "계정과 비밀번호를 입력하세요", "请完成人机验证后重试": "사람 인증을 완료한 후 다시 시도하세요", "请求失败,请重试": "요청에 실패했습니다. 다시 시도하세요", "请输入管理员账号与密码": "관리자 계정과 비밀번호를 입력하세요", "重新验证": "다시 인증", "首次使用:创建一个管理员账号,用于登录此面板": "처음 사용하는 경우: 이 패널에 로그인할 관리자 계정을 만드세요", "验证中…": "확인 중…", "验证失败,请重试": "확인에 실패했습니다. 다시 시도하세요", "验证成功": "확인 완료", " · 今日 {used} / {quota}": " · 오늘 {used} / {quota}", " · 当前 {n}": " · 현재 {n}", " · 本周期 {used} / {quota}": " · 이번 주기 {used} / {quota}", " · 限流 {n}": " · 레이트 리밋 {n}", " 等": " 등", "0 = 不限": "0 = 제한 없음", "0 = 按本家默认 {default}": "0 = 자체 기본값 {default} 적용", "30 秒 ~ 24 小时;手动查询会顺延下一轮": "30초 ~ 24시간, 수동 조회 시 다음 회차로 순연됩니다", "7 天内到期": "7일 이내 만료", "7 天内到期 {amount}({count} 份)": "7일 내 만료: {amount} ({count}개)", "7天 {count}份": "7일 내 {count}개", "7天 {n}": "7일 내 {n}", "API Key": "API Key", "Accio 国内版": "Accio 중국판", "Base URL": "Base URL", "Clash Verge 里还没有配置混合监听器或节点端口": "Clash Verge에 혼합 리스너나 노드 포트가 아직 구성되어 있지 않습니다", "Clash 出口:": "Clash 아웃바운드: ", "Copilot 额度单位": "Copilot 할당량 단위", "NewAPI 个人访问令牌": "NewAPI 개인 액세스 토큰", "NewAPI 用户 ID": "NewAPI 사용자 ID", "OpenAI 兼容": "OpenAI 호환", "OpenAI 兼容填到 /v1;Anthropic 填根地址": "OpenAI 호환은 /v1까지, Anthropic은 루트 주소를 입력하세요", "Qoder 中国版": "Qoder 중국판", "Qoder 国际版": "Qoder 국제판", "Token 刷新接口不可用,请重新打开页面": "Token 갱신 기능을 사용할 수 없습니다. 페이지를 다시 여세요.", "Token 刷新结果未确认,请刷新后核对账号状态": "Token 갱신 결과를 확인하지 못했습니다. 목록을 새로고침한 후 계정 상태를 확인하세요.", "Token 单位": "Token 단위", "Token 时": "Token 이상일 때", "Token 消耗": "Token 소비", "Token 规则按每个账号已有的窗口消耗判定,保存不会清零;停用或清空规则不会自动启用账号。": "Token 규칙은 각 계정의 기존 구간 사용량으로 판정합니다. 저장해도 사용량은 초기화되지 않으며 규칙 중지나 비우기로 계정이 활성화되지 않습니다.", "Token 限制阈值必须是大于 0 的安全整数": "Token 임계값은 0보다 큰 안전한 정수여야 합니다", "Token 限额": "Token 한도", "Token 限额 · 已禁用": "Token 한도 · 비활성", "Token 限额 · 已跳过": "Token 한도 · 건너뜀", "WorkBuddy 国内版": "WorkBuddy 중국판", "WorkBuddy 国际版": "WorkBuddy 국제판", "ZCode 国内版": "ZCode 중국판", "ZCode 国际版": "ZCode 국제판", "ZCode 套餐明细 — {name}": "ZCode 플랜 상세 — {name}", "bigmodel_token_production 的值": "bigmodel_token_production 의 값", "{action}{who}": "{action} {who}", "{amount},另 {count} 份余量未知": "{amount}, 추가 {count}개는 잔여량 알 수 없음", "{body}({period})": "{body}({period})", "{cond} 时 → {action}": "{cond}일 때 → {action}", "{count} 份": "{count}건", "{count} 份仅提供比例": "비율만 제공되는 패키지 {count}개", "{count} 份单位未知": "단위를 알 수 없는 패키지 {count}개", "{count} 次": "{count}회", "{days} 天后到期": "{days}일 후 만료", "{error}(不会自动改为直连)": "{error} (직접 연결로 자동 전환하지 않음)", "{error}(转发时会回退直连)": "{error} (포워딩 시 직접 연결로 폴백)", "{groups} 家 · 显示 {rows} 行": "{groups} 곳 · {rows}행 표시", "{hours} 小时后到期": "{hours}시간 후 만료", "{label} ×{count}": "{label} ×{count}", "{label}({count})": "{label} ({count})", "{message}(去该账号的「设置」里填上查询凭证即可)": "{message} (해당 계정의 「설정」에서 조회 자격 증명을 입력하면 됩니다)", "{minutes} 分钟后到期": "{minutes}분 후 만료", "{month}月{day}日 {clock}": "{month}월 {day}일 {clock}", "{name} · 分组设置": "{name} · 그룹 설정", "{name} 移到 {group} 组内第 {rank} 位": "{name}을(를) {group} 그룹 내 {rank}번째로 이동했습니다", "{name} 移到第 {rank} 顺位": "{name}을(를) 전체 {rank}순위로 이동했습니다", "{name}的方向": "{name} 방향", "{name}({parts})": "{name} ({parts})", "{name}({time} 起生效)": "{name}({time}부터 적용)", "{n} 个已计入": "{n}개 합산", "{n} 个查询失败": "{n}개 조회 실패", "{n} 个模型 ▾": "모델 {n}개 ▾", "{n} 个模型限流中 · 记录来自上游 429 / 限额码,到恢复时间自动解除": "모델 {n}개 속도 제한 중 · 업스트림 429 / 한도 코드에서 온 기록, 리셋 시간에 자동 해제", "{n} 个请求正在使用该账号(含还在下发内容的流式请求)": "이 계정을 사용 중인 요청 {n}개 (콘텐츠를 계속 내려보내는 스트리밍 요청 포함)", "{n} 个读数只读到一半(读数可信但不完整)": "{n}개는 일부만 조회됨(값은 신뢰할 수 있으나 불완전)", "{n} 个读数没有绝对数(只给比例或无额度),未计入": "{n}개는 절대값이 없어(비율만 제공 또는 한도 없음) 합산에서 제외", "{n} 个读数里没有可用比例,未计入": "{n}개 읽기에 사용 가능한 비율이 없어 집계하지 않았습니다", "{n} 个账号 · {e} 启用 · {l} 限流": "{n}개 계정 · {e} 활성 · {l} 제한", "{n} 个账号 · 启用 {e}": "{n}개 계정 · {e} 활성", "{n} 个还没查到(未查询或正在查询)": "{n}개는 아직 조회되지 않음(미조회 또는 조회 중)", "{n} 个还没查询": "{n}개는 아직 조회하지 않음", "{n} 分钟": "{n}분", "{n} 分钟前更新": "{n}분 전에 업데이트됨", "{n} 分钟后": "{n}분 후", "{n} 天前更新": "{n}일 전에 업데이트됨", "{n} 天后": "{n}일 후", "{n} 小时": "{n}시간", "{n} 小时前更新": "{n}시간 전에 업데이트됨", "{n} 小时后": "{n}시간 후", "{n} 秒": "{n}초", "{n} 秒前更新": "{n}초 전에 업데이트됨", "{period}窗口": "{period} 구간", "{plan}({time} 领取)": "{plan}({time} 수령)", "{providers} 家提供商、共 {total} 个账号。数据仍在,只是当前没有可用的插件来执行它们。": "공급자 {providers}곳, 계정 {total}개. 데이터는 그대로 있으며 지금 실행할 플러그인이 없을 뿐입니다.", "{reason}。该账号的登录态已被上游注销,自动刷新不会再成功,请重新登录该账号": "{reason}. 이 계정의 로그인 상태가 업스트림에서 취소되었습니다. 자동 갱신은 더 이상 성공하지 않으므로 이 계정으로 다시 로그인하세요.", "{scope} {used} / {quota} Token,{countdown}重置": "{scope} {used} / {quota} Token, 초기화까지 {countdown}", "{text}过期": "{text} 만료", "{text}过期({full})": "{text} 만료 ({full})", "{time} 到期": "{time} 만료", "{time} 恢复": "{time} 리셋", "{time} 生效": "{time} 적용", "{time} 领取": "{time} 수령", "{total} 个账号 · 启用 {enabled} · 禁用 {disabled}{limited}": "계정 {total}개 · 활성화 {enabled} · 비활성화 {disabled}{limited}", "{tried}探测并领取官方每日登录赠送的套餐积分(到账进套餐积分,不增加福利模型 token 池)": "{tried}공식 매일 로그인 보너스 플랜 포인트를 조회해 수령합니다 (적립분은 플랜 포인트로 들어가며, 혜택 모델 token 풀은 늘지 않습니다)", "{unit}余量未知({count} 份)": "{unit} 잔여량 알 수 없음 ({count}개)", "{verb}完成:成功 {ok} 个,失败 {fail} 个({detail}{more})": "{verb} 완료: 성공 {ok}개, 실패 {fail}개 ({detail}{more})", "{verb}完成:成功 {ok} 个,未变更 {unchanged} 个,跳过 {skip} 个,失败 {fail} 个": "{verb} 완료: 변경 {ok}개, 변경 없음 {unchanged}개, 건너뜀 {skip}개, 실패 {fail}개", "✅ {ok}/{total} 个出口可用": "✅ {ok}/{total}개 아웃바운드 사용 가능", "✅ {verb}完成:共 {count} 个账号": "✅ {verb} 완료: 총 {count}개 계정", "✅ 优先级已改为 {n}": "✅ 우선순위가 제 {n}위로 변경되었습니다", "✅ 出口可用": "✅ 아웃바운드 사용 가능", "✅ 已保存:{note}": "✅ 저장됨: {note}", "✅ 已启用": "✅ 활성화됨", "✅ 已启用 {n} 个账号": "✅ 계정 {n}개를 활성화했습니다", "✅ 已导出 {count} 个账号文件": "✅ 계정 파일 {count}개를 내보냈습니다", "✅ 已更新 {n} 个账号的余额{suffix}": "✅ {n}개 계정의 잔액을 갱신했습니다{suffix}", "✅ 已更新余额": "✅ 잔액이 갱신되었습니다", "✅ 已清除 API Key(该账号现在没有凭证,转发会被跳过)": "✅ API Key를 지웠습니다 (이 계정에는 이제 자격 증명이 없어 포워딩에서 건너뜁니다)", "✅ 已清除 {model} 的限流标记": "✅ {model}의 속도 제한 플래그를 지웠습니다", "✅ 已清除余额查询凭证": "✅ 잔액 조회 자격 증명을 지웠습니다", "✅ 已清除查询凭证": "✅ 조회 자격 증명을 지웠습니다", "✅ 已清除该账号全部限流标记": "✅ 이 계정의 모든 속도 제한 플래그를 지웠습니다", "✅ 已禁用": "✅ 비활성화됨", "✅ 已禁用 {n} 个账号": "✅ 계정 {n}개를 비활성화했습니다", "✅ 已重新读取 Clash Verge 配置": "✅ Clash Verge 구성을 다시 읽었습니다", "✅ 账号设置已保存": "✅ 계정 설정이 저장되었습니다", "✅ 顺序已保存": "✅ 순서가 저장되었습니다", " 出口 IP {ip}": " 아웃바운드 IP {ip}", "、": ", ", "、补官方会话头、请求体补两个占位工具(上游免费档的三道校验)。": ", 공식 세션 헤더 추가, 요청 본문에 자리 표시 도구 2개 추가 (업스트림 무료 등급의 3중 검증).", "「{name}」已在「网络代理」页禁用,请先启用它或换一条": "\"{name}\"은(는) \"네트워크 프록시\" 페이지에서 비활성화되어 있습니다. 먼저 활성화하거나 다른 항목을 선택하세요.", "「{name}」开着排序规则:先关掉规则,才能手动调整组内顺序": "「{name}」의 정렬 규칙이 켜져 있습니다. 그룹 내 순서를 수동으로 조정하려면 먼저 규칙을 끄세요", "「{name}」本身": "「{name}」 자체", "「已保存的代理」": "「저장된 프록시」", "「网络代理」页还没有出口 —— 去那里新增,或在「订阅管理」里点「同步 Clash Verge」把 Clash 的出口导进来": "「네트워크 프록시」 페이지에 아직 아웃바운드가 없습니다 — 거기서 추가하거나 「구독 관리」에서 「Clash Verge 동기화」를 눌러 Clash의 아웃바운드를 가져오세요", "「网络代理」页还没有出口 —— 去那里添加一个 HTTP 或 SOCKS5 地址": "네트워크 프록시 페이지에서 HTTP 또는 SOCKS5 주소를 추가하세요.", "「网络代理」页还没有出口 —— 去那里添加手动地址或同步 Clash Verge 的端点": "저장된 프록시가 없습니다. 「네트워크 프록시」 페이지에서 수동 주소를 추가하거나 Clash Verge 엔드포인트를 동기화하세요.", "「网络代理」页里每个启用的出口轮流使用;之后新加的出口自动加入": "「네트워크 프록시」페이지에서 활성화된 아웃바운드를 차례로 사용합니다. 나중에 추가한 아웃바운드도 자동으로 포함됩니다", "一般不用填": "보통 입력하지 않아도 됩니다", "万": "만", "上一条规则相同时才比较下一条;想优先按余额消耗,请把可用余额移到第一位。": "앞선 규칙의 결과가 같을 때만 다음 규칙을 비교합니다. 잔액에 따라 우선 소모하려면 사용 가능 잔액을 맨 위로 이동하세요.", "上次成功查询:{time}": "마지막 조회 성공: {time}", "上游拒绝了本次余额查询": "상위 서비스가 잔액 조회를 거부했습니다", "上游提供了补充说明;未显示原始正文": "상위 서비스가 추가 설명을 제공했습니다. 원문 본문은 표시하지 않습니다", "上游暂时限制余额查询,请稍后重试": "상위 서비스가 잔액 조회를 일시적으로 제한하고 있습니다. 나중에 다시 시도하세요.", "上游未给总量,画不出剩余比例": "업스트림이 총량을 주지 않아 잔여 비율을 표시할 수 없습니다", "上游未返回可识别额度窗口": "상위 서비스가 인식 가능한 할당량 기간을 반환하지 않았습니다", "上游本来不要凭证时(本地 Ollama、OpenCode Zen 的免费档)勾上这一项:账号会被正常选路;只把 Key 留空": "업스트림이 원래 자격 증명을 요구하지 않을 때 (로컬 Ollama, OpenCode Zen의 무료 등급) 이 항목을 체크하세요: 계정이 정상적으로 라우팅됩니다. Key만 비워 두고 ", "上游没有提供此额度的分桶用量,当前使用本地估算保护;在其他客户端产生的消耗不会计入。": "업스트림이 이 할당량 버킷의 사용량을 제공하지 않아 로컬 추정치로 보호합니다. 다른 클라이언트의 사용량은 포함되지 않습니다.", "上游的 API Key。留空 = 不修改(改凭证不会换账号 id);要清掉已配的凭证用右边的「清除」": "업스트림의 API Key입니다. 비워 두면 변경하지 않습니다 (자격 증명을 바꿔도 계정 id는 바뀌지 않음). 설정된 자격 증명을 지우려면 오른쪽 「지우기」를 사용하세요", "上游的余额读数里没有这个套餐的额度桶,剩余量读不到;余额列显示的是套餐发放的权益额度,不是剩余量": "업스트림 잔액 판독값에 이 플랜의 할당량 버킷이 없어 남은 양은 읽을 수 없습니다. 잔액 열에 표시되는 것은 플랜의 지급 권익이며 남은 양이 아닙니다", "上游返回 {status}": "업스트림이 {status} 반환", "上游限制 · 已禁用": "업스트림 제한 · 비활성화됨", "上游额度无上限": "업스트림 할당량은 무제한입니다", "上面所有规则都相同时,保持你拖出来的顺序": "위의 모든 규칙이 같으면 직접 끌어 놓은 순서를 유지합니다", "不到 1 分钟": "1분 미만", "不到 1 分钟到期": "1분 이내 만료", "不可用:{error}": "사용 불가: {error}", "不足 {n}": "{n} 미만", "不限": "제한 없음", "与队列里的上一个账号交换优先级(可能是另一家的账号)": "대기열의 이전 계정과 우선순위 교환 (다른 제공자의 계정일 수 있음)", "与队列里的下一个账号交换优先级(可能是另一家的账号)": "대기열의 다음 계정과 우선순위 교환 (다른 제공자의 계정일 수 있음)", "严格按消耗顺序使用账号需选择「顺序优先」;轮询、会话粘性及账号保护仍按原设置生效。": "소모 순서대로 계정을 사용하려면 순서 우선을 선택하세요. 순환, 세션 고정 및 계정 보호는 기존 설정을 따릅니다.", "个": "개", "个 · 共": "개 · 총", "个人": "개인", "主凭证没有固定到期时刻,到期由网关自动续期或本来就不会过期": "기본 자격 증명에는 고정된 만료 시각이 없습니다. 만료 시 게이트웨이가 자동 갱신하거나, 애초에 만료되지 않습니다", "主机": "호스트", "亿": "억", "仅将优先级调整到全局第一位,不改变启用状态": "우선순위만 전역 1위로 조정하며 활성 상태는 바꾸지 않습니다", "仅按手动顺序": "수동 순서만", "仅统一修改现有规则的开关,保留阈值、动作和重置方式;不改变账号的启用状态。": "기존 규칙의 스위치만 변경하며 임계값, 동작, 초기화 방식 및 계정 활성 상태는 유지합니다.", "仅账号管理": "계정 관리 전용", "仅跳过命中条件的模型,其他模型仍可转发;点击查看限制器": "조건에 해당하는 모델만 건너뛰며 다른 모델은 계속 전달할 수 있습니다. 클릭하여 제한기를 확인하세요.", "今天 {clock}": "오늘 {clock}", "今天 {time}": "오늘 {time}", "今天到期 {amount}({count} 份)": "오늘 만료: {amount} ({count}개)", "今天还没有领过:上面「可领取的套餐」里逐份点「领取」即可": "오늘은 아직 받은 것이 없습니다. 위의 \"받을 수 있는 플랜\"에서 각 플랜의 \"받기\"를 누르면 됩니다.", "今天(北京时间 {day})已由官方确认到账 {n} 项;领到的是套餐赠送积分,不增加福利模型的 token 池;按自然日重置,明天可再领": "오늘(베이징 시간 {day}) 공식 확인으로 {n}건이 적립되었습니다. 받은 것은 플랜 보너스 포인트이며 혜택 모델의 token 풀은 늘지 않습니다. 자연일 기준으로 초기화되며 내일 다시 받을 수 있습니다", "今天(北京时间 {day})已试过 {n} 次但官方尚未确认到账,": "오늘(베이징 시간 {day}) {n}회 시도했지만 아직 공식 적립 확인이 되지 않았습니다, ", "今天(北京时间)已领取 {n} 份:{plans}": "오늘(베이징 시간) {n}건 받음: {plans}", "今天(本地 0 点重置)": "오늘 (로컬 0시 초기화)", "今日剩 {n} 分钟": "오늘 {n}분 남음", "今日剩 {n} 小时": "오늘 {n}시간 남음", "今日发放": "오늘 지급", "今日已用": "오늘 사용", "今日已领": "오늘 받음", "代理": "프록시", "代理不可用:{error}": "프록시 사용 불가: {error}", "代理不可用:{error}(不会自动改为直连);选「自定义代理…」去修改": "프록시 사용 불가: {error} (직접 연결로 자동 전환하지 않음). 「사용자 지정 프록시…」에서 수정하세요", "代理不可用:{error}(转发时会回退直连);选「自定义代理…」去修改": "프록시 사용 불가: {error} (포워딩 시 직접 연결로 폴백); 「사용자 지정 프록시…」를 선택해 수정하세요", "代理列表响应异常({type})": "프록시 목록 응답 이상 ({type})", "代理列表读取失败(重试中)": "프록시 목록 읽기 실패 (재시도 중)", "代理已更新": "프록시가 업데이트되었습니다", "代理异常": "프록시 이상", "代理方式": "프록시 방식", "代理池响应异常({type})": "프록시 풀 응답 이상 ({type})", "代理端口必须是 1-65535 的整数": "프록시 포트는 1-65535 사이의 정수여야 합니다", "以下 {count} 个账号不支持余额查询,本次会跳过:{names}": "다음 {count}개 계정은 잔액 조회를 지원하지 않아 건너뜁니다: {names}", "企业": "기업", "优先级": "우선순위", "优先级 {priority} 已被同一提供商的「{name}」占用,请换一个数值": "우선순위 {priority}은(는) 같은 제공자의 「{name}」이(가) 사용 중입니다. 다른 값을 입력하세요", "优先级必须是数字": "우선순위는 숫자여야 합니다", "优先级未保存:{message}": "우선순위가 저장되지 않았습니다: {message}", "会员共享额度": "공유 회원 할당량", "会员共享额度不是本账号独立额度,不与其他窗口相加;未证实团队独立额度": "공유 회원 할당량은 이 계정의 독립 할당량이 아니며 다른 기간과 합산하지 않습니다. 별도 팀 할당량은 확인되지 않았습니다.", "会被当成「未配置凭证」而跳过。": "「자격 증명 미설정」으로 간주되어 건너뜁니다.", "伪装 OpenCode 官方客户端": "OpenCode 공식 클라이언트로 위장", "伪装 OpenCode 官方客户端(OpenCode Zen 免费档要它才放行)": "OpenCode 공식 클라이언트로 위장 (OpenCode Zen 무료 등급은 이 옵션이 있어야 통과됩니다)", "余量 {value}": "잔여량 {value}", "余额": "잔액", "余额 < {threshold}": "잔액 < {threshold}", "余额不足": "잔액 부족", "余额不足 · 已跳过": "잔액 부족 · 건너뜀", "余额低于": "잔액이", "余额低于阈值时的提示": "잔액이 기준값 아래로 떨어지면 알림", "余额低于阈值,转发时会跳过该账号(余额回升自动恢复)": "잔액이 임계값보다 낮아 포워딩 시 이 계정을 건너뜁니다 (잔액 회복 시 자동 리셋)", "余额低于限制器的阈值,转发时会跳过该账号(余额回升自动恢复)": "잔액이 리미터 임계값보다 낮아 포워딩 시 이 계정을 건너뜁니다 (잔액 회복 시 자동 리셋)", "余额列读数的自动刷新;也是「限制器」余额规则的数据来源。": "잔액 열 수치의 자동 갱신이며, 「리미터」 잔액 규칙의 데이터 소스입니다.", "余额响应为空": "잔액 응답이 비어 있습니다", "余额大优先": "잔액 많은 순", "余额小优先": "잔액 적은 순", "余额已更新": "잔액을 갱신했습니다", "余额查询凭证": "잔액 조회 자격 증명", "余额查询凭证已失效,请刷新查询登录态": "잔액 조회 인증 정보가 만료되었습니다. 조회 로그인 상태를 갱신하세요.", "余额查询失败:{message}": "잔액 조회 실패: {message}", "余额查询接口不可用,请更新网关后重试": "잔액 조회를 사용할 수 없습니다. 게이트웨이를 업데이트한 후 다시 시도하세요.", "余额查询接口返回异常": "잔액 조회 응답이 올바르지 않습니다.", "余额查询方案:{label}": "잔액 조회 방식: {label}", "余额沿用现有口径;Token 按重置方式内的累计消耗判定(切换类型会清空阈值)": "잔액은 기존 기준을 따르며, Token은 초기화 방식에 따른 누적 소비로 판정합니다 (유형을 바꾸면 임계값이 비워집니다)", "余额详情": "잔액 상세", "使用套餐": "사용 플랜", "使用最近一次成功查询的总余额,随余额刷新调整;查询失败保留上次读数,不额外增加查询频率。": "마지막으로 성공한 조회의 총잔액을 사용하고 잔액 갱신에 따라 순서를 조정합니다. 조회 실패 시 이전 값을 유지하며 조회 빈도를 늘리지 않습니다.", "保存失败:{error}": "저장 실패: {error}", "保存条件": "조건 저장", "保存规则": "규칙 저장", "保留 {n} 个账号": "계정 {n}개 보관", "保留各账号原有规则,只追加下面的规则;完全相同的规则不会重复添加。": "각 계정의 기존 규칙을 유지하고 아래 규칙만 추가합니다. 완전히 같은 규칙은 중복 추가하지 않습니다.", "修改代理": "프록시 변경", "停止旧查询,按当前配置重新查询余额": "이전 조회를 중지하고 현재 설정으로 잔액을 다시 조회합니다", "停用全部规则": "모든 규칙 중지", "免费版": "무료 버전", "全局一条队列:数值越小越先用,不分提供商": "전역 대기열 하나: 숫자가 작을수록 먼저 사용되며 제공자를 가리지 않습니다", "全局唯一:所有提供商的账号都不能重号,数值越小越先用": "전역에서 유일: 모든 제공자의 계정이 같은 숫자를 쓸 수 없으며, 숫자가 작을수록 먼저 사용됩니다", "全局队列": "전역 대기열", "全局队列第 {position} 位,共 {total} 位": "전역 대기열 제 {position}위, 총 {total}위", "全选 / 取消全选当前筛选结果(与批量栏同一个选择)": "현재 필터 결과 전체 선택 / 전체 해제 (일괄 작업 표시줄과 같은 선택)", "全选当前筛选结果({n} 个)": "현재 필터 결과 전체 선택 ({n}개)", "全部代理节点(推荐)": "모든 프록시 노드(권장)", "全部启用中的账号将被{what}": "활성 상태인 모든 계정이 {what}됩니다", "全部启用({n})": "모두 활성화 ({n})", "全部清除": "모두 지우기", "全部禁用({n})": "모두 비활성화 ({n})", "全部({n})": "전체 ({n})", "共有 {n} 个账号暂未显示": "계정 {n}개가 표시되지 않습니다", "关闭则不参与转发(余额查询照常,见「查询设置」)": "끄면 포워딩에 참여하지 않습니다 (잔액 조회는 그대로 동작하며, 「조회 설정」 참고)", "关闭后,该账号转发失败时返回本次错误,不再顺延其他账号。禁用、无凭证和限制器等保护仍生效。": "끄면 이 계정에서 전달이 실패할 때 오류를 반환하며 다른 계정으로 전환하지 않습니다. 비활성 계정, 자격 증명 누락 및 제한기 등의 보호는 계속 적용됩니다.", "关闭自动查询后,余额限制器只能使用上次读数;手动查询仍可用。": "자동 조회를 끄면 잔액 제한은 마지막 수치를 사용합니다. 수동 조회는 계속 사용할 수 있습니다.", "内消耗 ≥": "내 소비 ≥", "再领一次": "한 번 더 받기", "冻结余额": "동결 잔액", "凭证与套餐": "자격 증명과 플랜", "凭证已过期,转发时会先刷新": "자격 증명이 만료되었습니다. 포워딩 시 먼저 갱신합니다", "凭证已过期;能否续期取决于登录方式,本机引用需由原客户端处理": "인증 정보가 만료되었습니다. 갱신 가능 여부는 로그인 방식에 따라 다릅니다. 로컬 참조는 원래 클라이언트에서 관리하세요", "出口": "아웃바운드", "出网代理": "아웃바운드 프록시", "分窗口额度": "기간별 할당량", "分组设置": "그룹 설정", "分钟": "분", "刚刚更新": "방금 업데이트됨", "删除各账号的全部限制规则,执行前会再次确认。": "각 계정의 모든 제한 규칙을 삭제합니다. 실행 전에 다시 확인합니다.", "删除提供商": "제공자 삭제", "删除组": "그룹 삭제", "删除账号": "계정 삭제", "删除这条账号记录(不会影响客户端自己的登录态;之后可再点「导入桌面端登录态」加回来)": "이 계정 기록을 삭제합니다 (클라이언트 자체의 로그인 상태에는 영향을 주지 않습니다. 나중에 「데스크톱 로그인 상태 가져오기」를 다시 눌러 되돌릴 수 있습니다)", "删除选中的账号": "선택한 계정 삭제", "到恢复时间后自动解除,无需手动操作": "리셋 시간이 되면 자동 해제되며 수동 조작이 필요 없습니다", "到期 {date}": "만료 {date}", "到期 {time}": "{time} 만료", "到期 近→远": "만료 가까운→먼", "到期 远→近": "만료 먼→가까운", "到期时间": "만료 시각", "刷新 Token": "Token 갱신", "刷新 Token 完成:成功 {ok} 个,跳过 {skip} 个,失败 {fail} 个": "Token 갱신 완료: 성공 {ok}개, 건너뜀 {skip}개, 실패 {fail}개", "刷新 Token:已处理 {completed}/{total} 个,当前账号:{name}": "Token 갱신 중: {completed}/{total}개 처리됨, 현재 계정: {name}", "刷新列表": "목록 새로고침", "刷新套餐与额度": "플랜 및 할당량 새로고침", "刷新账号列表失败,当前仍显示上一次成功读取的数据:{message}": "계정 목록 새로고침에 실패했습니다. 마지막으로 읽은 데이터를 계속 표시합니다: {message}", "刷新账号列表失败:{message}": "계정 목록 새로고침 실패: {message}", "剩 {left} / {total}{unit}": "{total}{unit} 중 {left} 남음", "剩 {n} 分钟": "{n}분 남음", "剩 {remaining}": "잔여 {remaining}", "剩 {remaining} / {total}": "잔여 {remaining} / {total}", "剩不到 1 分钟": "1분 미만 남음", "剩余 {percent}%": "잔여 {percent}%", "剩余比例": "남은 비율", "剩余额度": "남은 할당량", "加载异常": "로드 실패", "北京时间(UTC+8)": "베이징 시간(UTC+8)", "协议": "프로토콜", "即将到期 {count} 份": "곧 만료 {count}개", "即将过期 {n}": "만료 임박 {n}", "历史余额,尚未按新配置验证": "이전 잔액이며 새 설정으로 아직 확인되지 않았습니다", "原代理来源已下线,请选择已保存的代理、自定义地址或直连": "기존 프록시 소스가 종료되었습니다. 저장된 프록시, 사용자 지정 주소 또는 직접 연결을 선택하세요.", "去「插件」页": "플러그인 열기", "去「插件」页启用": "\"플러그인\"에서 활성화", "去「插件」页安装": "\"플러그인\"에서 설치", "去启用": "사용", "去安装": "설치", "又不勾": "체크도 하지 않으면 ", "取消余额查询": "잔액 조회 취소", "取消查询": "조회 취소", "取消查询失败:{message}": "조회 취소 실패: {message}", "取消选择": "선택 해제", "另有 {n} 个已勾选账号被当前筛选隐藏,仍会参与操作": "현재 필터에서 숨겨진 선택 계정 {n}개도 작업에 포함됩니다", "另有 {n} 个账号因提供商插件未就绪,暂未显示": "제공자 플러그인이 준비되지 않아 계정 {n}개가 추가로 숨겨져 있습니다", "只修改本次选择的设置,不影响备注、凭证、转发顺序或其他设置。": "이번에 선택한 설정만 변경하며 메모, 자격 증명, 전달 순서 및 다른 설정은 유지합니다.", "只比较同一家、同单位的数值余额;未知、比例和无限额度不作为零余额,有明确余额的账号优先。": "같은 공급자와 같은 단위의 수치 잔액만 비교합니다. 알 수 없음, 비율, 무제한 할당량은 잔액 0으로 처리하지 않으며 잔액이 확인된 계정을 우선합니다.", "只重试临时故障;次数与整轮时间上限任一用尽即停止,凭证错误不重试。": "일시적인 오류만 재시도합니다. 재시도 횟수나 전체 제한 시간에 도달하면 중지하며, 인증 정보 오류는 재시도하지 않습니다.", "可添加多条;同类规则也允许并存(例如一条按余额、两条不同重置方式的 Token)": "여러 개를 추가할 수 있으며 같은 종류의 규칙도 함께 둘 수 있습니다 (예: 잔액 기준 1개, 초기화 방식이 다른 Token 규칙 2개)", "可用 {total}": "사용 가능 {total}", "可用 {value}": "사용 가능 {value}", "可用 {value} {unit}": "사용 가능 {value} {unit}", "可用余额": "사용 가능 잔액", "可用合计": "사용 가능 합계", "可用最低": "최저 사용 가능", "可留空:新版请求头只认令牌;旧版会把用户 ID 放进 New-Api-User 头": "비워 둘 수 있음: 새 버전 헤더는 토큰만 인식하며, 구버전은 사용자 ID를 New-Api-User 헤더에 넣습니다", "可领取的套餐": "받을 수 있는 플랜", "各窗口独立限制请求,不相加为总余额。": "각 기간은 요청을 독립적으로 제한하므로 총잔액으로 합산하지 않습니다.", "同提供商内暂无其他账号占用优先级": "같은 제공자 내에 우선순위를 점유한 다른 계정이 없습니다", "同提供商已占用:{names}": "같은 제공자에서 사용 중: {names}", "名称": "이름", "后续加入": "추후 추가", "含 {n} 个不限额度账号,合计记为 ∞": "무제한 계정 {n}개 포함, 합계는 ∞로 표시", "启动中…": "시작 중…", "启用全部规则": "모든 규칙 활성화", "启用插件包后自动回来": "플러그인 팩을 활성화하면 자동으로 돌아옵니다", "启用状态": "활성 상태", "启用该规则": "이 규칙 활성화", "启用该账号": "이 계정 활성화", "启用这一组里的全部账号(含被筛选隐藏的)": "이 그룹의 모든 계정을 활성화합니다 (필터로 숨겨진 것 포함)", "启用这家提供商后自动回来": "이 제공자를 활성화하면 자동으로 돌아옵니다", "周期": "주기", "周期 Token": "주기 Token", "周期单位": "주기 단위", "命中条件的模型": "조건에 해당하는 모델", "商汤日日新控制台的登录密码": "SenseNova 콘솔 로그인 비밀번호", "商汤日日新控制台的登录账号": "SenseNova 콘솔 로그인 계정", "固定兜底,不受开关影响": "고정 대체 순서, 스위치의 영향을 받지 않습니다", "固定周期": "고정 주기", "在 NewAPI 站点「个人设置」里生成的访问令牌": "NewAPI 사이트 \"개인 설정\"에서 발급한 액세스 토큰", "在列表里拖:拖分组带调整整组顺位,拖行首把手调整组内先后(顺序由拖拽表达,不再填数字)": "목록에서 드래그: 그룹 바를 드래그해 그룹 전체 순위를, 행 머리 손잡이를 드래그해 그룹 내 순서를 조정합니다 (순서는 드래그로 표현, 숫자 입력은 폐지)", "在账号设置的「基本」分组里设置该账号同时最多处理的请求数": "계정 설정의 「기본」 그룹에서 이 계정이 동시에 처리할 최대 요청 수를 설정합니다", "地址与端口由「网络代理」页管理:那边改一次、测一次,所有引用它的账号一起生效": "주소와 포트는 「네트워크 프록시」 페이지에서 관리합니다: 거기서 한 번 수정하고 한 번 테스트하면 이를 참조하는 모든 계정에 함께 적용됩니다", "基本": "기본", "填入系统代理": "시스템 프록시 가져오기", "备注名 / 启用 / 代理": "라벨명 / 활성 / 프록시", "备注名 {name}": "라벨명 {name}", "备注名不能为空": "라벨명은 비울 수 없습니다", "备注名已更新": "라벨명을 갱신했습니다", "复制当前设置": "현재 설정 복사", "复制自账号": "복사할 계정", "失败 {count} 个:": "실패 {count}개: ", "失败后允许换号": "실패 후 계정 전환 허용", "失败重试次数": "실패 시 재시도 횟수", "失败重试次数必须是 0~{max} 的整数": "재시도 횟수는 0~{max}의 정수여야 합니다", "套餐 {name}": "플랜 {name}", "套餐实例不能跨账号复制,请改用通用额度或本地保护条件": "플랜 인스턴스는 다른 계정으로 복사할 수 없습니다. 공통 할당량 또는 로컬 보호 조건을 사용하세요.", "套餐尚未生效或已经到期": "플랜이 아직 시작되지 않았거나 만료되었습니다", "套餐池": "플랜 풀", "套餐池的推理端点要求每条请求带一个阿里云验证码令牌;令牌由本应用在后台静默铸造,界面关闭时无法铸造": "플랜 풀 추론 엔드포인트는 요청마다 Aliyun 캡차 토큰이 필요합니다; 토큰은 본 앱이 백그라운드에서 조용히 생성하며, UI가 닫혀 있으면 생성할 수 없습니다", "套餐池(Start Plan)": "플랜 풀 (Start Plan)", "套餐池(Start Plan)— 走 zcode.z.ai 端点,消耗 ZCode 套餐池的额度(新用户体验额度 / 活动领取)": "플랜 풀 (Start Plan) — zcode.z.ai 엔드포인트를 사용하며, ZCode 플랜 풀의 할당량(신규 사용자 체험 할당량 / 이벤트 수령분)을 씁니다", "套餐积分的重置日期": "플랜 포인트 초기화 날짜", "存在延迟计量信息,无法据此推算当前余额": "지연된 사용량 정보로 현재 잔액을 추정할 수 없습니다", "它会改写请求体": "요청 본문을 재작성합니다", "官方限时活动": "공식 기간 한정 이벤트", "实际阈值:{value} Token": "실제 임계값: {value} Token", "对话 token": "대화 token", "对话请求": "대화 요청", "导出文件包含登录凭证,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "내보낸 파일에는 로그인에 사용할 수 있는 인증 정보가 포함됩니다. 안전하게 보관하고 외부에 공유하거나 공개된 위치에 업로드하지 마세요.", "导出未返回结果": "내보내기 결과가 반환되지 않았습니다.", "导出本组全部账号,每个账号一个 JSON 文件(含被筛选隐藏的)": "이 그룹의 모든 계정을 개별 JSON 파일로 내보냅니다(필터로 숨겨진 계정 포함)", "导出本组账号": "이 그룹 계정 내보내기", "将作用于以下账号": "다음 계정에 적용됩니다", "将用草稿中的 {rules} 条规则替换 {count} 个账号的全部限制规则,原有规则不会保留。确定继续?": "{count}개 계정의 모든 제한 규칙을 초안의 {rules}개 규칙으로 교체합니다. 기존 규칙은 유지되지 않습니다. 계속할까요?", "将这个账号及其登录凭证保存为单独的 JSON 文件": "이 계정과 로그인 인증 정보를 개별 JSON 파일로 저장합니다", "小时": "시간", "小浣熊": "小浣熊", "尚未查询该账号的余额": "이 계정의 잔액을 아직 조회하지 않았습니다", "尝试领取": "수령 시도", "展开": "펼치기", "展开全部": "모두 펼치기", "展开全部分组": "모든 그룹 펼치기", "展开或收起(默认收起)": "펼치기 또는 접기(기본은 접힘)", "展开这一组": "이 그룹 펼치기", "已保存的代理": "저장된 프록시", "已停用": "사용 중지", "已发起 {count} 个账号文件的下载,请在浏览器下载列表确认": "계정 파일 {count}개의 다운로드를 시작했습니다. 브라우저 다운로드 목록에서 확인해 주세요.", "已取消查询": "조회가 취소되었습니다", "已启用 {name}": "{name} 활성화됨", "已启用自动排序,组内拖动已锁定;关闭全部规则可恢复原手动顺序。": "자동 정렬이 켜져 그룹 내 드래그가 잠겼습니다. 모든 규칙을 끄면 기존 수동 순서로 돌아갑니다.", "已启用,点击禁用(不参与转发)": "활성, 클릭하면 비활성화 (포워딩에 참여하지 않음)", "已在全局队列第一位": "이미 전역 대기열 1위입니다", "已复制到草稿,执行后才会应用到所选账号": "초안에 복사했습니다. 실행해야 선택한 계정에 적용됩니다", "已导出 {count} 个账号文件,{failed} 个未导出:{reason}": "계정 파일 {count}개를 내보냈으며 {failed}개는 내보내지 못했습니다: {reason}", "已是首选": "이미 최우선입니다", "已暂停验证,需要时请手动重试": "인증이 일시 중지되었습니다. 필요할 때 수동으로 다시 시도하세요.", "已更新 {ok}/{total} 个账号,{failed} 个失败": "계정 {ok}/{total}개 갱신, {failed}개 실패", "已查询": "조회됨", "已用 {used}": "사용 {used}", "已用 {used} / 共 {total}": "사용 {used} / 전체 {total}", "已用完 / 已过期": "소진 / 만료", "已用比例": "사용한 비율", "已用额度": "사용한 할당량", "已禁用": "비활성", "已禁用 {name}": "{name} 비활성화됨", "已禁用,点击启用": "비활성, 클릭하면 활성화", "已筛选 {n} 项": "{n}개 표시 중", "已被「{name}」占用": "「{name}」이(가) 사용 중", "已触发": "트리거됨", "已触发 · 账号已禁用": "발동됨 · 계정 비활성화됨", "已设为首选": "최우선으로 설정했습니다", "已设置": "설정됨", "已跳过{current}": "건너뜀{current}", "已跳过{usage}{countdown}": "건너뜀{usage}{countdown}", "已达上限{usage}": "상한 도달{usage}", "已过期": "만료됨", "已过期({time})": "만료됨 ({time})", "已选": "선택", "已配置,留空则不修改": "설정됨, 비워 두면 변경하지 않음", "已限流": "속도 제한됨", "已领到、还没到生效时间的套餐(生效后余额列会按它显示):\n{lines}": "받았지만 아직 적용되지 않은 플랜(적용되면 잔액 열에 표시됩니다):\n{lines}", "并发上限": "동시 접속 상한", "并发上限 0~{max};CodeArts 等有默认值的家填 0 即按本家默认;达到上限的账号会被跳过、请求转给其他账号": "동시 접속 상한 0~{max}; 기본값이 있는 제공자(예: CodeArts)는 0을 입력하면 해당 기본값이 적용됩니다; 상한에 도달한 계정은 건너뛰고 요청은 다른 계정으로 전달됩니다", "并发上限 0~{max};达到上限的账号会被跳过、请求转给其他账号": "동시 접속 상한 0~{max}; 상한에 도달한 계정은 건너뛰고 요청은 다른 계정으로 전달됩니다", "并发上限 0~{max};达到上限的账号跳过、请求转给其他账号(原列表 ⋯ 菜单的「并发上限」入口已并入这里)": "동시 접속 상한 0~{max}; 상한에 도달한 계정은 건너뛰고 요청은 다른 계정으로 전달됩니다 (기존 목록 ⋯ 메뉴의 「동시 접속 상한」 항목은 여기로 통합되었습니다)", "并发上限 填 0 即按本家默认 {default};填 1 或 2 就按填的算,更大的数会被本家上限截断(原列表 ⋯ 菜单的「并发上限」入口已并入这里)": "0을 입력하면 이 제공자의 기본값({default})이 적용됩니다; 1이나 2는 입력한 값 그대로 적용되고, 더 큰 값은 제공자 상한으로 잘립니다 (기존 목록 ⋯ 메뉴의 「동시 접속 상한」 항목은 여기로 통합되었습니다)", "并发上限必须是 0~{max} 的整数": "동시 접속 상한은 0~{max}의 정수여야 합니다", "并发上限:{value}": "동시 접속 상한: {value}", "开启后,网关按 OpenCode 官方 CLI 的形状发请求:没填 Key 的账号用匿名凭证": "켜면 게이트웨이가 OpenCode 공식 CLI와 같은 형태로 요청을 보냅니다: Key를 입력하지 않은 계정은 익명 자격 증명", "开始 {time}": "시작 {time}", "当": "조건", "当前不符合资格": "현재 수령 대상 아님", "当前不需要验证码令牌": "현재 캡차 토큰이 필요하지 않습니다", "当前代理不可用,请重新选择": "현재 프록시를 사용할 수 없습니다. 다시 선택하세요.", "当前代理不可用:{error}(不会自动改为直连)": "현재 프록시 사용 불가: {error} (직접 연결로 자동 전환하지 않음)", "当前代理不可用:{error}(转发时会回退直连)": "현재 프록시 사용 불가: {error} (포워딩 시 직접 연결로 폴백)", "当前余额 {n};与余额列同一数字口径,严格小于才触发(等于阈值仍可用)": "현재 잔액 {n}; 잔액 열과 같은 수치 기준이며 임계값보다 엄격히 작을 때만 발동합니다 (임계값과 같으면 사용 가능)", "当前可手动调整组内顺序。": "현재 그룹 내 순서를 수동으로 조정할 수 있습니다.", "当前可用 ∞(不参与余额不足判定)": "현재 사용 가능 ∞ (잔액 부족 판정에 참여하지 않음)", "当前客户端不支持逐账号导出,请更新客户端": "현재 클라이언트는 계정별 내보내기를 지원하지 않습니다. 클라이언트를 업데이트해 주세요.", "当前已经是默认规则": "이미 기본 규칙입니다", "当前排序规则:{rules}。点击调整": "현재 정렬 규칙: {rules}. 클릭하여 조정", "当前未发现本期活动,不代表账号不符合资格": "현재 이벤트를 찾지 못했습니다. 계정에 수령 자격이 없다는 뜻은 아닙니다.", "当前没有任何模型处于限流中": "현재 속도 제한 중인 모델이 없습니다", "当前没有可领取的套餐(活动期内每天发一份,明天可再领)": "지금 받을 수 있는 플랜이 없습니다(이벤트 기간에는 매일 한 건씩 지급되며, 내일 다시 받을 수 있습니다)", "当前没有限流中的模型。": "현재 속도 제한 중인 모델이 없습니다.", "当前筛选下 {n} 个账号的百分比读数不能相加,取最低的剩余比例(随筛选、搜索变化,不受分页影响)": "현재 필터의 {n}개 계정 백분율은 합산할 수 없어 가장 낮은 잔여 비율을 표시합니다(필터·검색에 따라 변동, 페이지 영향 없음)", "当前筛选下 {n} 个账号的额度概览(随筛选、搜索变化,不受分页影响)": "현재 필터에 해당하는 계정 {n}개의 할당량 개요(필터와 검색에 따라 변경되며 페이지 이동의 영향을 받지 않음)", "当前筛选下没有账号": "현재 필터에 맞는 계정이 없습니다", "当前筛选条件下没有账号": "현재 필터 조건에 맞는 계정이 없습니다", "当前网关不支持余额排序,请先更新网关": "현재 게이트웨이는 잔액 정렬을 지원하지 않습니다. 먼저 게이트웨이를 업데이트하세요.", "当前规则:{rules}。": "현재 규칙: {rules}.", "当前规则:{rules}。自动排序生效时,组内拖动把手会锁定;关掉全部规则即回到手动顺序。": "현재 규칙: {rules}. 자동 정렬이 켜져 있는 동안 그룹 내 드래그 핸들이 잠깁니다. 모든 규칙을 끄면 수동 순서로 돌아갑니다.", "当前视图不能调整组顺位:{reason} 之后再拖动": "현재 화면에서는 그룹 순서를 변경할 수 없습니다: {reason}로 돌린 뒤 드래그하세요", "当前钩子仅提供套餐与周期,未提供余额数值": "현재 hook는 플랜과 기간 정보만 제공하며 잔액 수치는 없습니다", "当前:{label}(Clash Verge 直接引用);可在「网络代理」页同步端点后改选": "현재: {label}(Clash Verge 직접 참조). 「네트워크 프록시」 페이지에서 엔드포인트를 동기화한 후 변경할 수 있습니다.", "当前:{label}(未经过代理池 —— 可在「网络代理」页把出口同步进池后来这里改选)": "현재: {label} (프록시 풀을 거치지 않음 — 「네트워크 프록시」 페이지에서 아웃바운드를 풀에 동기화한 뒤 여기서 다시 선택할 수 있습니다)", "当前:{label}(未经过代理池 —— 可在「网络代理」页添加相同地址后来这里改选)": "현재: {label}(프록시 풀 미사용. 네트워크 프록시 페이지에 같은 주소를 추가한 뒤 여기에서 선택하세요)", "当前:{label}(每条请求换一个出口);「自定义代理…」打开完整设置": "현재: {label}(요청마다 아웃바운드가 바뀝니다); 「사용자 지정 프록시…」에서 전체 설정을 엽니다", "当前:{label};选项来自「网络代理」页;「自定义代理…」打开完整设置": "현재: {label}; 항목은 「네트워크 프록시」 페이지에서 가져오며, 「사용자 지정 프록시…」를 누르면 전체 설정이 열립니다", "当前:{value}": "현재: {value}", "待定": "미정", "待生效": "적용 대기", "待生效 {n} 份": "적용 대기 {n}건", "待生效 {time}": "{time}부터 적용", "必填": "필수", "必填;留空 = 不修改,清除用右边的按钮": "필수. 비워 두면 변경 없음, 지우기는 오른쪽 버튼으로", "总剩余 {total} · 套餐 {plan} · 奖励 {bonus}": "총 잔여 {total} · 플랜 {plan} · 보너스 {bonus}", "总积分": "총 가용 포인트", "总积分是当前可用积分的汇总,与余额列一致;不重复累加汇总行,不包含 Token、次数或其他单位的额度。": "현재 사용 가능한 포인트의 합계이며 잔액 열과 같은 값입니다. 합계 행은 중복 계산하지 않고 Token, 요청 횟수 및 다른 단위의 할당량은 포함하지 않습니다.", "总量 {value}": "총량 {value}", "恢复时间未知": "리셋 시간 미정", "恢复默认:仅开启最快到期优先": "기본값 복원: 만료가 빠른 순만 켜기", "恢复默认:仅按手动顺序": "기본값 복원: 수동 순서만", "恢复默认:最快到期优先,账号添加时间关闭": "기본값 복원: 만료가 빠른 순, 추가 시간 정렬 끔", "我的套餐": "내 플랜", "或": "또는", "所有提供商都有这个字段": "모든 제공자에 이 필드가 있습니다", "所选账号的各周期:{list}": "선택한 계정의 기간별 수치: {list}", "手动添加": "수동 추가", "打开批量操作弹窗,并预选这一组的账号(改代理等动作在弹窗里挑参数)": "일괄 작업 대화상자를 열고 이 그룹의 계정을 미리 선택합니다 (프록시 변경 등의 매개변수는 대화상자에서 고릅니다)", "执行中…": "실행 중…", "执行({action})": "실행 ({action})", "批量动作": "일괄 동작", "批量操作 · 已选 {count} 个账号": "일괄 작업 · 계정 {count}개 선택됨", "批量操作失败:{error}": "일괄 작업 실패: {error}", "批量操作已保存,但列表刷新失败:{error}": "일괄 변경은 저장되었지만 목록 새로고침에 실패했습니다: {error}", "批量操作接口不可用,请重新打开页面": "일괄 작업 인터페이스를 사용할 수 없습니다. 페이지를 다시 여세요", "批量操作未返回结果,请刷新后确认状态": "일괄 작업 결과가 반환되지 않았습니다. 새로고침 후 상태를 확인하세요", "批量操作本组": "이 그룹 일괄 작업", "批量操作结果不完整,请刷新后核对所选账号": "일괄 작업 결과가 불완전합니다. 새로고침 후 선택한 계정을 확인해 주세요.", "批量操作结果未确认,请刷新后核对设置": "일괄 업데이트 결과를 확인하지 못했습니다. 새로고침 후 설정을 확인해 주세요.", "批量规则按每个账号分别判定,不合并余额或 Token 用量。": "일괄 규칙은 계정별로 판정하며 잔액이나 Token 사용량을 합산하지 않습니다.", "把每页调回「全部」": "페이지 크기를 \"전체\"로 되돌리기", "折叠": "접기", "折叠全部": "모두 접기", "折叠全部分组(只留组头)": "모든 그룹 접기 (그룹 헤더만 남김)", "折叠这一组": "이 그룹 접기", "拖动调整列宽(双击还原)": "드래그하여 열 너비 조정 (더블클릭하면 복원)", "拖动调整整组顺序": "드래그로 그룹 전체 순서 조정", "拖动调整组内顺序": "드래그로 그룹 내 순서 조정", "按上游额度查询的读数判定;模型共用同一个额度池时,选择模型不会拆分该池余额。": "업스트림 할당량 조회 값으로 판정합니다. 모델이 같은 할당량 풀을 공유하면 모델을 선택해도 풀 잔액은 분리되지 않습니다.", "按优先级从上到下比较,勾选的项才参与": "위에서 아래로 우선순위를 비교하며, 체크한 항목만 참여합니다", "按住拖动,调整这一家的组顺位(整组一起动)": "눌러서 드래그하면 이 제공자의 그룹 순위가 조정됩니다 (그룹 전체가 함께 이동)", "按住拖动,调整这个账号在本组内的顺序": "눌러서 드래그하면 이 계정의 그룹 내 순서가 조정됩니다", "按总积分设置限制": "총 포인트로 제한", "按提供商筛选账号": "제공자별 계정 필터", "按最低剩余比例选择账号,所有周期均来自同一账号": "남은 비율이 가장 낮은 계정을 선택하며, 모든 기간은 같은 계정의 수치를 표시합니다", "按未显示原因筛选": "표시되지 않은 이유로 필터", "按模型": "모델별", "按每日或短周期实际可用额度最低的账号展示,所有周期均来自同一账号": "일일 또는 단기 실제 사용 가능 할당량이 가장 적은 계정을 선택하며, 모든 기간은 같은 계정의 수치를 표시합니다", "按规则限制该账号参与转发:没有规则(或全部停用)= 不限制;跳过档自动恢复,禁用档需手动启用。": "규칙에 따라 이 계정의 포워딩 참여를 제한합니다: 규칙이 없거나 모두 중지된 경우 = 제한 없음. 건너뛰기 옵션은 자동 리셋되고, 비활성화 옵션은 수동으로 활성화해야 합니다.", "按账号总可用余额比较,不重复累加积分明细": "계정의 총 사용 가능 잔액을 비교하며 포인트 상세 내역을 중복 합산하지 않습니다", "按账号最早到期、且还有剩余的积分包比较": "잔액이 남아 있고 만료되지 않은 크레딧 팩 중 가장 이른 만료 시각으로 비교합니다", "排序": "정렬", "提供商已停用": "제공자 비활성화됨", "提供商显示名,1~{max} 个字符": "제공자 표시 이름, 1~{max}자", "提供商:{name}": "제공자: {name}", "提高优先级": "우선순위 올리기", "插件包已停用": "플러그인 팩 비활성화됨", "插件已启用但加载失败": "플러그인은 활성화되어 있지만 로드에 실패했습니다", "插件未加载": "플러그인 로드 안 됨", "插件未安装": "플러그인 미설치", "搜索": "검색", "搜索账号": "계정 검색", "搜索账号 / 邮箱 / 备注": "계정 / 이메일 / 메모 검색", "操作失败:{message}": "작업 실패: {message}", "收起": "접기", "改动即时生效": "변경 사항은 즉시 적용됩니다", "改协议 / Base URL 会改变它们的转发方式,正在进行的请求可能失败;模型清单与映射在「模型管理」页。": "프로토콜 / Base URL을 바꾸면 포워딩 방식이 달라져 진행 중인 요청이 실패할 수 있습니다. 모델 목록과 매핑은 「모델 관리」 페이지에 있습니다.", "数值越小越先用;": "숫자가 작을수록 먼저 사용됩니다. ", "数值越小越先用;{hint}": "숫자가 작을수록 먼저 사용됩니다. {hint}", "整个账号": "전체 계정", "整轮查询时限": "전체 조회 제한 시간", "整轮查询时限必须是 15~180 秒的整数": "전체 조회 제한 시간은 15~180초 사이의 정수여야 합니다.", "新账号落到组首 / 组尾": "새 계정을 맨 위 / 맨 아래에 추가", "旗舰": "플래그십", "无上限 · 已用 {used}": "상한 없음 · 사용 {used}", "无上限按日计(上游到达上限后仍继续计数,超额如实显示)": "상한 없음은 일 단위로 계산됩니다 (업스트림이 상한에 도달해도 계속 집계하며, 초과분은 그대로 표시됩니다)", "无代理(直连)": "프록시 없음 (직접 연결)", "无数据": "데이터 없음", "无法拖动:已启用自动消耗规则({rules})。请先在「消耗顺序」中关闭这些规则,再手动调整。": "자동 소모 규칙({rules})이 켜져 있어 드래그할 수 없습니다. 소모 순서에서 해당 규칙을 끈 뒤 수동으로 조정하세요.", "无法拖动:当前已按积分到期时间和账号添加时间自动排序。请先在「消耗顺序」中关闭这两项规则,再手动调整。": "드래그할 수 없습니다. 현재 크레딧 만료일과 계정 추가 시간으로 자동 정렬 중입니다. 수동으로 순서를 바꾸려면 먼저 「소비 순서」에서 두 규칙을 모두 끄세요.", "无法拖动:当前已按积分到期时间自动排序。请先在「消耗顺序」中关闭该规则,再手动调整。": "드래그할 수 없습니다. 현재 크레딧 만료일로 자동 정렬 중입니다. 수동으로 순서를 바꾸려면 먼저 「소비 순서」에서 이 규칙을 끄세요.", "无法拖动:当前已按账号添加时间自动排序。请先在「消耗顺序」中关闭该规则,再手动调整。": "드래그할 수 없습니다. 현재 계정 추가 시간으로 자동 정렬 중입니다. 수동으로 순서를 바꾸려면 먼저 「소비 순서」에서 이 규칙을 끄세요.", "无福利额度": "혜택 할당량 없음", "既有 Clash Verge 直接引用继续可用;也可在「网络代理」页同步端点,再改选「已保存的代理」。": "기존 Clash Verge 직접 참조는 계속 사용할 수 있습니다. 「네트워크 프록시」 페이지에서 엔드포인트를 동기화한 후 「저장된 프록시」로 변경할 수도 있습니다.", "旧数据导入": "기존 데이터 가져오기", "旧版 / 定制站点才需要,新版可留空": "구버전 / 커스텀 사이트에만 필요하며, 새 버전은 비워 둘 수 있습니다", "时": "미만일 때", "明天 {clock}": "내일 {clock}", "明天 {time}": "내일 {time}", "明天到期": "내일 만료", "明细": "상세", "昵称 {name}": "닉네임 {name}", "显示账号名": "계정 이름 표시", "暂无可查询余额的账号": "잔액을 조회할 수 있는 계정이 없습니다", "暂无可比较余额;查到同单位的数值后自动生效,比例与无限额度不参与": "비교 가능한 잔액이 없습니다. 같은 단위의 수치가 조회되면 자동 적용됩니다. 비율과 무제한 할당량은 제외됩니다", "暂无可用积分信息": "현재 확인할 수 있는 크레딧 정보가 없습니다", "暂无数据:先查询一次余额,之后会自动按到期排序": "데이터 없음: 잔액을 한 번 조회하면 이후 만료일 기준으로 자동 정렬됩니다", "暂无数据:先查询一次余额,可按需启用到期排序": "데이터 없음: 잔액을 한 번 조회한 뒤 필요하면 만료일 정렬을 켜세요", "暂无读数": "조회 값 없음", "暂无账号,请点击右上角「添加账号」": "계정이 없습니다. 오른쪽 위 「계정 추가」를 클릭하세요", "暂无额度信息": "한도 정보 없음", "更多操作": "더 많은 작업", "更多设置": "추가 설정", "更新于 {time}": "{time} 업데이트", "更新失败": "업데이트 실패", "替换全部规则": "모든 규칙 교체", "替换选中账号的限制规则": "선택한 계정의 제한 규칙 교체", "最快到期优先": "만료가 빠른 순", "最新添加优先": "최근 추가 순", "最早 {soonest} 恢复": "가장 빠른 리셋: {soonest}", "最早恢复": "가장 빠른 리셋 시간", "最早添加优先": "오래된 추가 순", "最晚到期优先": "만료가 늦은 순", "有 {n} 个账号因提供商插件未就绪,暂未显示": "제공자 플러그인이 준비되지 않아 계정 {n}개가 숨겨져 있습니다", "有效期": "유효 기간", "有的账号过了 0 点额度就回来 —— 选「自然日」": "0시가 지나면 할당량이 돌아오는 계정도 있습니다 — 「자연일」을 선택하세요", "服务器本地时区": "서버 로컬 시간대", "未使用": "미사용", "未启用套餐池账号,不生成验证码令牌": "활성화된 Start Plan 계정이 없어 인증 토큰을 생성하지 않습니다.", "未命名账号": "이름 없는 계정", "未声明可手动续期;本机引用请在原客户端处理登录态。": "수동 갱신 기능이 선언되지 않았습니다. 로컬 참조 로그인 상태는 원래 클라이언트에서 관리하세요.", "未接入查询": "조회 미연동", "未显示的账号": "숨겨진 계정", "未显示账号": "숨겨진 계정", "未查询": "미조회", "未检测到 Clash Verge": "Clash Verge를 찾을 수 없습니다", "未检测到 Clash Verge 配置": "Clash Verge 구성을 찾을 수 없습니다", "未被使用": "사용되지 않음", "未触发": "트리거되지 않음", "未触发{current}": "미발동{current}", "未触发{usage}{countdown}": "미발동{usage}{countdown}", "未设备注名": "라벨명 없음", "未返回余额数据": "잔액 데이터가 반환되지 않았습니다", "未返回可确认的余额数值": "확인 가능한 잔액 수치가 반환되지 않았습니다", "未返回可识别的余额数据": "인식할 수 있는 잔액 데이터가 반환되지 않았습니다", "未返回重置时间": "초기화 시간 없음", "未配置": "미설정", "未配置凭证": "자격 증명 미설정", "本周期 Token 消耗达到限制器的上限,账号已被自动禁用(窗口重置也不恢复,需手动启用)": "이번 주기 Token 소비가 리미터 상한에 도달해 계정이 자동 비활성화되었습니다 (구간이 초기화돼도 리셋되지 않으며, 수동으로 활성화해야 합니다)", "本周期 Token 消耗达到限制器的上限,转发时会跳过该账号(窗口重置自动恢复)": "이번 주기 Token 소비가 리미터 상한에 도달해 포워딩 시 이 계정을 건너뜁니다 (구간 초기화 시 자동 리셋)", "本周期已用": "이번 주기 사용", "本地 Token 消耗": "로컬 토큰 사용량", "本地台账里今天还领过这些,但上面的读数里还没有:{plans}(读数刷新可能有延迟)": "로컬 기록상 오늘 더 받은 항목이 있지만 위의 판독값에는 아직 없습니다: {plans}(판독값 갱신에 시간이 걸릴 수 있습니다)", "本地消耗上限必须是大于 0 的安全整数": "로컬 사용량 한도는 0보다 큰 안전한 정수여야 합니다", "本地用量保护": "로컬 사용량 보호", "本地统计只包含经过本网关的请求,不等于上游账单;清理请求日志不会清零。套餐选择用于限定保护范围,不会强制上游扣指定套餐。": "로컬 통계는 이 게이트웨이를 통과한 요청만 포함하며 업스트림 청구 내역과 다릅니다. 요청 로그를 삭제해도 초기화되지 않습니다. 플랜 선택은 보호 범위만 지정하며 업스트림에 특정 플랜 차감을 강제하지 않습니다.", "本地请求次数": "로컬 요청 횟수", "本地领取于 {time}": "로컬에서 {time}에 받음", "本提供商不支持积分到期排序,默认保持手动顺序;可按需启用账号添加时间排序。": "이 제공자는 크레딧 만료일 정렬을 지원하지 않아 기본적으로 수동 순서를 유지합니다. 필요하면 추가 시간 정렬을 켤 수 있습니다.", "本提供商默认启用最快到期优先,账号添加时间默认关闭;关闭全部规则可恢复手动顺序。": "이 제공자는 기본적으로 만료가 빠른 순으로 정렬하며 추가 시간 정렬은 꺼져 있습니다. 모든 규칙을 끄면 수동 순서로 돌아갑니다.", "本期活动": "현재 이벤트", "本期活动按套餐分别展示,领取资格以上游返回为准": "현재 이벤트를 플랜별로 표시합니다. 수령 자격은 업스트림 응답을 기준으로 합니다.", "本组 {n} 个账号的可用余额之和,按整组统计(不受筛选、搜索影响)": "이 그룹 {n}개 계정의 사용 가능 잔액 합계(그룹 전체 기준, 필터·검색의 영향을 받지 않음)", "本组 {n} 个账号的百分比读数不能相加,取组内最低的剩余比例(按整组统计,不受筛选、搜索影响)": "이 그룹 {n}개 계정의 백분율은 합산할 수 없어 그룹 내 가장 낮은 잔여 비율을 표시합니다(그룹 전체 기준, 필터·검색 영향 없음)", "本组 {n} 个账号的额度概览(按整组统计,不受筛选、搜索影响)": "이 그룹의 계정 {n}개에 대한 할당량 개요(전체 그룹 기준, 필터와 검색의 영향을 받지 않음)", "本组代理": "이 그룹의 프록시", "本组操作": "그룹 작업", "本组每个账号会分别保存为一个 JSON 文件,包含被筛选隐藏的账号。": "이 그룹의 각 계정을 개별 JSON 파일로 저장합니다. 필터로 숨겨진 계정도 포함됩니다.", "权益 {value}": "권익 {value}", "权益 {value} {unit}": "권익 {value} {unit}", "条件即时生效,关掉面板就能看到结果。": "조건은 즉시 적용됩니다. 패널을 닫으면 결과가 보입니다.", "条件组 {n}": "조건 그룹 {n}", "来源 {source}": "출처 {source}", "查看": "보기", "查看因插件未就绪而暂未显示的账号": "플러그인이 준비되지 않아 표시되지 않은 계정", "查看插件状态": "플러그인 상태 확인", "查询中…": "조회 중…", "查询余额": "잔액 조회", "查询全部账号的余额(含已禁用账号 —— 禁用只表示不参与转发)": "모든 계정의 잔액 조회 (비활성 계정 포함 — 비활성은 포워딩에 참여하지 않는다는 뜻일 뿐입니다)", "查询凭证还没配齐:填好后余额列才有读数,在此之前会显示「未配置」。": "조회 자격 증명이 아직 완비되지 않았습니다: 채워 넣어야 잔액 열에 수치가 표시되며, 그 전에는 \"미설정\"으로 보입니다.", "查询失败": "조회 실패", "查询失败:{message}": "조회 실패: {message}", "查询已成功,但上游未提供额度数据,不代表余额为零。": "조회는 성공했지만 공급자가 한도 데이터를 반환하지 않았습니다. 잔액이 0이라는 뜻은 아닙니다.", "查询设置": "조회 설정", "查询该账号剩余余额(读数显示在余额列)": "이 계정의 남은 잔액 조회 (수치는 잔액 열에 표시)", "查询超时,可重新查询": "조회 시간이 초과되었습니다. 다시 조회할 수 있습니다.", "查询间隔": "조회 간격", "查询间隔必须是 {min} 秒 ~ 24 小时": "조회 간격은 {min}초 ~ 24시간이어야 합니다", "桌面端实时登录态请在原客户端更新": "실시간 데스크톱 로그인 상태는 원래 클라이언트에서 갱신하세요", "桌面端实时登录态(凭证每次从客户端登录态文件读取)": "데스크톱 실시간 로그인 상태 (자격 증명은 매번 클라이언트 로그인 상태 파일에서 읽음)", "模型范围": "모델 범위", "正在加载…": "로딩 중…", "正在探测可领取的套餐…": "받을 수 있는 플랜을 확인하는 중…", "正在查询": "조회 중", "正在查询本期活动…": "현재 이벤트를 확인하는 중…", "正在补铸验证码令牌": "캡차 토큰 생성 중", "正在读取 Clash Verge 配置…": "Clash Verge 구성을 읽는 중…", "正在读取…": "읽는 중…", "正在读取代理列表…": "프록시 목록을 읽는 중…", "正在连接上游…": "업스트림에 연결하는 중…", "正常": "정상", "此刻正在使用这个账号的请求数(含还在下发内容的流式请求);为 0 时不显示": "지금 이 계정을 사용 중인 요청 수 (콘텐츠를 계속 내려보내는 스트리밍 요청 포함). 0이면 표시하지 않습니다", "此额度不属于账号当前使用的通道": "이 할당량은 계정의 현재 채널에 속하지 않습니다", "此额度不属于账号当前使用的通道,切换到对应通道后才参与判定。": "이 할당량은 계정의 현재 채널에 속하지 않습니다. 해당 채널로 전환해야 판정에 사용됩니다.", "每": "매", "每 {period}消耗 ≥ {count} Token": "매 {period}마다 소비 ≥ {count} Token", "每周或每月额度已耗尽,短周期实际可用额度按 0% 计算;账号明细保留原始读数": "주간 또는 월간 할당량을 모두 사용하여 단기 실제 사용 가능 할당량을 0%로 계산합니다. 계정 상세에는 원래 수치를 유지합니다", "每日消耗 ≥": "일일 소비 ≥", "每日消耗 ≥ {count} Token(每天 0 点重置)": "일일 소비 ≥ {count} Token (매일 0시 초기화)", "每日重置": "매일 초기화", "每日重置(额度按周期回满,不是作废)": "매일 초기화(할당량은 주기마다 다시 채워지며 소멸되지 않습니다)", "每条请求换一个出口(按顺序轮流),上游看到的 IP 因此是变化的;出口的地址与端口由「网络代理」页管理": "요청마다 다음 아웃바운드로 차례로 바뀌므로 업스트림이 보는 IP가 달라집니다. 아웃바운드의 주소와 포트는 「네트워크 프록시」페이지에서 관리합니다", "每组共用一个触发动作;第二条条件起可选择「与/或」。与优先于或,下面会显示明确分组。各条件组独立生效。": "그룹마다 하나의 동작을 공유합니다. 두 번째 조건부터 AND/OR를 선택할 수 있습니다. AND가 OR보다 우선하며 아래에 그룹을 명확히 표시합니다. 각 그룹은 독립적으로 적용됩니다.", "没有匹配「{kw}」的账号": "「{kw}」와 일치하는 계정이 없습니다", "没有可全选的账号": "전체 선택할 계정이 없습니다", "没有可用出口": "사용 가능한 아웃바운드가 없습니다", "没有适用于本次操作的账号": "이번 작업을 적용할 계정이 없습니다", "没有选中的账号": "선택된 계정이 없습니다", "活动套餐": "이벤트 플랜", "活动套餐的推理端点要求每条请求带一个阿里云验证码令牌;令牌由本应用在后台静默铸造,界面关闭时无法铸造": "이벤트 플랜의 추론 엔드포인트는 모든 요청에 알리바바 클라우드 캡차 토큰을 요구합니다. 토큰은 이 앱이 백그라운드에서 조용히 생성하며, 창을 닫으면 생성할 수 없습니다", "活动套餐(Start Plan)": "이벤트 플랜 (Start Plan)", "活动套餐(Start Plan)— 走官方活动端点,用活动里领到的额度": "이벤트 플랜 (Start Plan) — 공식 이벤트 엔드포인트를 사용하며, 이벤트에서 받은 할당량을 씁니다", "活动时间:{time}": "이벤트 기간: {time}", "活动期内每天发一份新套餐;同一份当天重复领取会提示「已领取过」,次日可再领。领取要走一次人机验证(滑块)。": "이벤트 기간에는 매일 새 플랜이 한 건씩 지급됩니다. 같은 플랜을 같은 날 다시 받으면 \"이미 받음\"이 표시되며, 다음 날 다시 받을 수 있습니다. 받을 때는 사람 인증(슬라이더)을 한 번 거칩니다.", "活动期内每天发一份新套餐;已领的套餐不重复提交,次日可领新套餐。只有主动领取时才会进行人机验证。": "이벤트 기간에는 매일 새 플랜이 제공됩니다. 이미 수령한 플랜은 다시 제출하지 않으며 다음 날 새 플랜을 받을 수 있습니다. 직접 수령할 때만 사람 인증을 진행합니다.", "活动目录合并账号预览、营销活动与匿名探测。已领取仅依据领取记录或账号名下套餐;状态待确认时可尝试领取,资格以上游返回为准。": "이벤트 목록은 계정 미리보기, 마케팅 이벤트 및 익명 조회 결과를 합칩니다. 수령 완료는 수령 기록 또는 계정 소유 플랜으로만 확인합니다. 상태가 미확인인 경우 수령을 시도할 수 있으며, 자격은 업스트림 응답을 기준으로 합니다.", "测试中…": "테스트 중…", "测试出口": "아웃바운드 테스트", "消耗顺序": "소비 순서", "添加 新→旧": "추가 최신→오래된", "添加 旧→新": "추가 오래된→최신", "添加规则": "규칙 추가", "添加限制": "제한 추가", "清掉本机的限流标记,立刻重新尝试该模型(上游若仍在限流会再次被标记)": "이 기기의 속도 제한 플래그를 지우고 해당 모델을 즉시 다시 시도합니다 (업스트림이 여전히 속도 제한 중이면 다시 표시됩니다)", "清掉该账号全部模型的限流标记": "이 계정의 모든 모델에 걸린 속도 제한 플래그를 지웁니다", "清空全部规则": "모든 규칙 비우기", "清空搜索与三个筛选档位,回到全部账号": "검색과 세 가지 필터를 지우고 모든 계정으로 되돌립니다", "清空选中账号的限制规则": "선택한 계정의 제한 규칙 비우기", "清除": "지우기", "清除失败:{error}": "지우기 실패: {error}", "清除失败:{message}": "지우기 실패: {message}", "清除已配置的 API Key(转发时会因缺少凭证被跳过)": "설정된 API Key 지우기 (포워딩 시 자격 증명이 없어 건너뜁니다)", "清除已配置的 {label}": "설정된 {label} 지우기", "清除已配置的余额查询凭证": "설정된 잔액 조회 자격 증명 지우기", "清除标记": "플래그 지우기", "清除筛选": "필터 지우기", "清除该账号的冷却与全部模型限流标记": "이 계정의 대기 시간과 모든 모델의 요청 제한 표시 지우기", "滚动窗口": "롤링 구간", "点击{action}各模型的限流明细": "클릭하여 모델별 속도 제한 상세 {action}", "点击查看账号冷却与模型限流明细": "클릭하여 계정 대기 시간과 모델 요청 제한 상세 보기", "状态": "상태", "状态 {status}": "상태 {status}", "状态待确认": "수령 상태 미확인", "状态未知": "상태 알 수 없음", "生效 {time}": "적용 {time}", "生效中": "적용 중", "生效至到期累计(不自动回满)": "시작부터 만료까지 누적(자동 충전 없음)", "用 NewAPI 站点的个人访问令牌查询账户余额(不是这条账号的上游 API Key)。令牌在站点的「个人设置」里生成,只有旧版 / 定制站点才需要额外填用户 ID。": "NewAPI 사이트의 개인 액세스 토큰으로 잔액을 조회합니다 (이 계정의 업스트림 API 키가 아님). 토큰은 사이트의 \"개인 설정\"에서 발급하며, 사용자 ID 추가 입력이 필요한 것은 구버전 / 커스텀 사이트뿐입니다.", "用 bigmodel.cn 控制台的访问令牌查询账户余额(人民币元)。令牌是登录后浏览器 Cookie `bigmodel_token_production` 的值:开发者工具 → 应用(Application)→ Cookie 里复制。": "bigmodel.cn 콘솔의 액세스 토큰으로 잔액을 조회합니다 (위안화). 토큰은 로그인 후 브라우저 Cookie `bigmodel_token_production` 의 값입니다: 개발자 도구 → 애플리케이션 → Cookie 에서 복사하세요.", "用下面的规则统一替换各账号的全部规则,执行前会再次确认。": "각 계정의 모든 규칙을 아래 규칙으로 교체합니다. 실행 전에 다시 확인합니다.", "用商汤日日新控制台的账号密码查询(与推理用的 API Key 不是同一套)。网关会自动换取登录票并缓存,过期后自动重登,不需要手动维护。": "SenseNova 콘솔의 계정과 비밀번호로 조회합니다 (추론용 API 키와는 다른 세트). 게이트웨이가 로그인 티켓을 자동으로 교환해 캐시하고, 만료되면 자동으로 다시 로그인하므로 수동 관리가 필요 없습니다.", "用户名": "사용자 이름", "用这条账号的 API Key 查询订阅用量,不需要额外配置;读数展开成 5 小时 / 每周 / 每月三个窗口。": "이 계정의 API 키로 구독 사용량을 조회합니다. 추가 설정이 필요 없으며 수치는 5 시간 / 주간 / 월간 3 개 창으로 펼쳐집니다.", "用这条账号的 API Key 查询,不需要额外配置。": "이 계정의 API 키로 조회합니다. 추가 설정이 필요 없습니다.", "用这条账号的 API Key 生成签名后查询账户余额(美元),不需要额外配置。要求 API Key 是 z.ai 的「id.secret」形态(控制台生成的 Key 就是)。": "이 계정의 API 키로 서명을 만들어 잔액을 조회합니다 (달러). 추가 설정이 필요 없습니다. API 키는 z.ai 의 \"id.secret\" 형태여야 합니다 (콘솔에서 발급되는 키가 바로 그것입니다).", "留空 = 不修改,清除用右边的按钮": "비워 두면 변경 없음, 지우기는 오른쪽 버튼으로", "登录 / 导入一个新账号": "로그인 / 새 계정 가져오기", "登录授权已失效,请重新登录;自动续期无法恢复已过期或已撤销的刷新令牌。": "로그인 승인이 만료되거나 취소되었습니다. 다시 로그인하세요. 자동 갱신으로 만료되거나 취소된 갱신 토큰을 복구할 수 없습니다.", "登录授权截止:{time};自动续期不会延长此时间,届时需重新网页登录。": "로그인 승인 만료: {time}. 자동 갱신은 이 기한을 연장하지 않습니다. 만료되면 브라우저에서 다시 로그인하세요.", "百分比阈值必须在 0~100 之间": "백분율 임계값은 0~100이어야 합니다", "直连": "직접 연결", "确定删除选中的 {count} 个账号?此操作不可恢复,账号的登录态会一并移除。": "선택한 계정 {count}개를 삭제하시겠습니까? 이 작업은 되돌릴 수 없으며, 계정의 로그인 상태도 함께 제거됩니다.", "确定清空 {count} 个账号的全部限制规则?余额与 Token 将不再设限;已禁用的账号不会自动启用。": "{count}개 계정의 모든 제한 규칙을 비울까요? 잔액과 Token 제한이 없어지지만 비활성 계정은 자동 활성화되지 않습니다.", "确定清除全部模型的限流标记?": "모든 모델의 레이트 리밋 표시를 지울까요?", "确定清除模型「{model}」的限流标记?": "모델 \"{model}\"의 레이트 리밋 표시를 지울까요?", "确定清除该账号的冷却与全部模型限流标记?": "이 계정의 대기 시간과 모든 모델의 요청 제한 표시를 지울까요?", "禁用": "비활성화", "禁用整个账号(手动恢复)": "전체 계정 비활성화(수동 복구)", "禁用该账号(需手动重新启用)": "이 계정 비활성화 (수동으로 다시 활성화해야 함)", "禁用这一组里的全部账号(含被筛选隐藏的)": "이 그룹의 모든 계정을 비활성화합니다 (필터로 숨겨진 것 포함)", "福利按限时活动下发,不是每个账号都有 —— 正常状态,不是查询失败": "혜택은 기간 한정 이벤트로 지급되어 모든 계정에 있는 것은 아닙니다 — 정상 상태이며 조회 실패가 아닙니다", "福利日额度": "혜택 일일 할당량", "福利网关未读到:{error}": "혜택 게이트웨이를 읽지 못했습니다: {error}", "秒": "초", "秒;默认 60 秒,包含重试等待,多步骤查询可适当延长。": "초. 기본값은 60초이며 재시도 대기 시간을 포함합니다. 여러 단계의 조회는 필요에 따라 늘릴 수 있습니다.", "积分": "포인트", "积分到期时间": "크레딧 만료 시간", "积分包": "포인트 패키지", "积分明细": "포인트 상세", "积分查询已复用转发用的登录凭证,这里通常留空即可。只有旧版本填过、或从旧代理导入过凭证时才有值": "포인트 조회는 포워딩에 쓰는 로그인 자격 증명을 재사용하므로 보통 비워 두면 됩니다. 구버전에서 입력했거나 예전 프록시에서 자격 증명을 가져온 경우에만 값이 있습니다", "稍后由后台判定自动禁用": "잠시 후 백그라운드 판정으로 자동 비활성화됩니다", "窗口 = 今天 0 点起(本地时区),0 点重置即清零恢复;按账号在 requests 表聚合": "구간 = 오늘 0시부터 (로컬 시간대), 0시 초기화 시 0으로 돌아가 리셋됩니다. 계정별로 requests 테이블에서 집계합니다", "窗口内已用 {used} / {limit} Token,转发时会跳过该账号(重置后自动恢复)": "구간 내 사용 {used} / {limit} Token, 포워딩 시 이 계정을 건너뜁니다 (초기화 후 자동 리셋)", "窗口对齐自然时间(整点 / 整 N 分钟一轮回),重置即清零恢复;按账号在 requests 表聚合": "구간은 자연 시간에 맞춰집니다 (정시 / 정확히 N분 단위로 순환하며), 초기화 시 0으로 돌아가 리셋됩니다. 계정별로 requests 테이블에서 집계합니다", "窗口数量超过展示上限,仅展示部分读数": "기간 수가 표시 한도를 초과하여 일부 수치만 표시합니다", "窗口重置时间": "기간별 초기화 시간", "窗口长度": "구간 길이", "窗口额度与时间": "시간대별 할당량 및 시각", "端口": "포트", "端口准备中": "포트 준비 중", "第 {rank} 顺位": "전체 {rank}순위", "等待当前验证码流程结束": "현재 인증이 끝나기를 기다리는 중", "筛选": "필터", "筛选 / 搜索 / 分页生效时组顺位不可拖动(别家的组整组不可见,落点没法定位)": "필터 / 검색 / 페이지 설정 중에는 그룹 순서를 드래그할 수 없습니다(다른 그룹 전체가 숨겨져 놓을 위치를 정할 수 없음)", "系统代理信息无效,请手动填写。": "시스템 프록시 정보가 올바르지 않습니다. 직접 입력하세요.", "系统代理协议暂不支持自动填入,请手动配置 HTTP 或 SOCKS5 代理": "이 시스템 프록시 프로토콜은 자동 입력을 지원하지 않습니다. HTTP 또는 SOCKS5 프록시를 직접 설정하세요.", "系统代理地址无效,请手动填写": "시스템 프록시 주소가 올바르지 않습니다. 직접 입력하세요.", "系统代理认证信息无法读取,请手动填写": "시스템 프록시 인증 정보를 읽을 수 없습니다. 직접 입력하세요.", "累计起点": "집계 시작 시각", "级联删除名下全部账号,不可恢复": "소속된 모든 계정이 함께 삭제되며 되돌릴 수 없습니다", "组内先后:按住左边的把手上下拖动即可调整;整组的先后拖分组带的把手": "그룹 내 순서: 왼쪽 손잡이를 누른 채 위아래로 드래그해 조정하고, 그룹 전체 순서는 그룹 바의 손잡이를 드래그하세요", "组内并发上限": "그룹 동시 실행 한도", "组内手动顺序": "그룹 내 수동 순서", "组内第 {rank} 位": "그룹 내 {rank}번째", "组顺位已锁定": "그룹 순서 잠김", "组顺位:越小越先用(拖动分组带调整)": "그룹 순위: 작을수록 먼저 사용됩니다 (그룹 바를 드래그해 조정)", "统一设置自动查询的开关、间隔和失败重试次数;不会复制或覆盖余额查询凭证。": "자동 조회 스위치, 간격 및 실패 시 재시도 횟수를 통일합니다. 잔액 조회 인증 정보는 복사하거나 덮어쓰지 않습니다.", "统计周期": "집계 주기", "统计周期尚未开始或已经结束": "집계 기간이 아직 시작되지 않았거나 종료되었습니다", "统计窗口必须是 1 分钟~31 天": "집계 구간은 1분~31일이어야 합니다", "统计结束时间必须晚于开始时间": "집계 종료 시각은 시작 시각보다 늦어야 합니다", "缓存用量未知,不按零计量,也不用于推算余额": "캐시 사용량을 알 수 없습니다. 0으로 계산하거나 잔액 추정에 사용하지 않습니다", "编码套餐(Coding Plan)": "코딩 플랜 (Coding Plan)", "编码套餐(Coding Plan)— 走开放平台端点,消耗开放平台的额度(订阅套餐 / 资源包 / 充值余额)": "코딩 플랜 (Coding Plan) — 오픈 플랫폼 엔드포인트를 사용하며, 오픈 플랫폼의 할당량(구독 플랜 / 리소스 패키지 / 충전 잔액)을 씁니다", "编码套餐(Coding Plan)— 走开放平台端点,用自己订阅的额度": "코딩 플랜 (Coding Plan) — 오픈 플랫폼 엔드포인트를 사용하며, 직접 구독한 할당량을 씁니다", "编辑": "편집", "编辑限制": "제한 편집", "编辑限制条件": "제한 조건 편집", "网关电脑未检测到可导入的系统代理;请手动填写,或选择已保存的代理。": "게이트웨이 컴퓨터에서 가져올 수 있는 시스템 프록시를 찾지 못했습니다. 직접 입력하거나 저장된 프록시를 선택하세요.", "网络": "네트워크", "网页端会逐个下载文件;浏览器提示时请允许本网站下载多个文件。": "웹에서는 파일을 하나씩 다운로드합니다. 브라우저에서 요청하면 이 사이트의 여러 파일 다운로드를 허용해 주세요.", "自动查询余额": "잔액 자동 조회", "自动查询余额(按下面的间隔自动刷新余额列的读数)": "잔액 자동 조회 (아래 간격에 따라 잔액 열 수치를 자동 갱신)", "自定义代理": "사용자 지정 프록시", "自定义代理…": "사용자 지정 프록시…", "自定义:": "사용자 지정: ", "自然周": "달력 주", "自然日": "달력 일", "自然日(每天 0 点)": "자연일 (매일 0시)", "自然月": "달력 월", "补全请求": "자동 완성 요청", "补铸失败:{error}": "토큰 생성 실패: {error}", "规则操作": "규칙 작업", "解析失败": "파싱 실패", "触发动作": "발동 동작", "触发后": "발동 후", "触发条件": "발동 조건", "计入 {counted}/{total}": "합산 {counted}/{total}", "订阅已移除": "구독 삭제됨", "订阅统计未读到:{error}": "구독 통계를 읽지 못했습니다: {error}", "记录里没有过期时间": "기록에 만료 시간이 없습니다", "设为首选": "최우선으로 설정", "设置并发上限": "동시 접속 상한 설정", "访客账号没有积分体系,因此不查询余额(登录账号可以查)": "게스트 계정에는 포인트 제도가 없으므로 잔액을 조회하지 않습니다 (로그인 계정은 조회할 수 있습니다)", "访问令牌": "액세스 토큰", "试用版": "체험판", "该上游无需鉴权": "이 업스트림은 인증이 필요하지 않음", "该上游无需鉴权(转发与拉取模型都不发送鉴权头)": "이 업스트림은 인증이 필요하지 않음 (포워딩과 모델 조회 모두 인증 헤더를 보내지 않음)", "该提供商尚未接入余额查询": "이 제공업체의 잔액 조회는 아직 연동되지 않았습니다", "该提供商没有余额查询": "이 제공자는 잔액 조회 기능이 없습니다", "该提供商没有余额查询;可按 Token 消耗设置限制。": "이 제공자는 잔액 조회를 지원하지 않습니다. Token 사용량으로 제한할 수 있습니다.", "该提供商的推理转发尚未接入,账号不参与转发": "이 제공자의 추론 포워딩은 아직 연동되지 않아 계정이 포워딩에 참여하지 않습니다", "该账号不支持刷新 Token 或未提供刷新凭证": "이 계정은 Token 갱신을 지원하지 않거나 갱신 자격 증명이 없습니다", "该账号出网走的代理(Clash 出口 / 自定义 / 直连);点击可修改": "이 계정의 아웃바운드 프록시 (Clash 아웃바운드 / 사용자 지정 / 직접 연결); 클릭하여 수정", "该账号出网走的代理(已保存的代理 / 自定义 / 直连);点击可修改": "이 계정의 프록시(저장된 프록시 / 사용자 지정 / 직접 연결)입니다. 클릭하여 변경하세요.", "该账号当前限流中的模型;点徽章看明细": "이 계정에서 현재 속도 제한 중인 모델; 배지를 클릭하면 상세를 볼 수 있습니다", "该账号没有套餐登录态(jwt),套餐池通道会失败:请重新登录该账号": "이 계정에는 플랜 로그인 상태(jwt)가 없어 플랜 풀 채널이 실패합니다: 이 계정으로 다시 로그인하세요", "该账号没有套餐登录态(jwt),活动套餐会失败:请重新登录该账号": "이 계정에는 플랜 로그인 상태(jwt)가 없어 이벤트 플랜이 실패합니다: 이 계정으로 다시 로그인하세요", "该账号没有福利模型额度(福利按活动下发,不是每个账号都有)": "이 계정에는 혜택 모델 할당량이 없습니다 (혜택은 이벤트로 지급되며 모든 계정에 있는 것은 아닙니다)", "该账号没有积分类读数(额度只有福利 token 池)": "이 계정에는 포인트 계열 수치가 없습니다 (할당량은 혜택 token 풀뿐입니다)", "该账号的额度只有福利 token 池(见余额格那两行),订阅统计没有积分类计量表": "이 계정의 할당량은 혜택 token 풀뿐이며 (잔액 칸의 두 줄 참고), 구독 통계에는 포인트 계열 측정표가 없습니다", "该额度中的全部模型": "이 할당량의 모든 모델", "请先勾选要操作的账号": "먼저 작업할 계정을 선택하세요", "请先选择 Clash Verge 出口": "먼저 Clash Verge 아웃바운드를 선택하세요", "请先选择已保存的代理": "먼저 저장된 프록시를 선택하세요", "请填写代理主机地址": "프록시 호스트 주소를 입력하세요", "请填写提供商名称": "제공자 이름을 입력하세요", "请填写提供商的 Base URL": "제공자의 Base URL을 입력하세요", "请填写查询间隔": "조회 간격을 입력하세요", "请填写重置周期": "초기화 주기를 입력하세요", "请至少添加一条限制规则;清空请使用清空操作": "제한 규칙을 하나 이상 추가하세요. 모두 비우려면 비우기 작업을 사용하세요", "请选择代理": "프록시를 선택하세요", "请选择出口": "아웃바운드를 선택하세요", "读取中…": "불러오는 중…", "读取失败:{error}": "읽기 실패: {error}", "读取系统代理失败": "시스템 프록시 읽기 실패", "读取网关电脑当前的 HTTPS 系统代理,填入自定义地址;后续系统设置变化不会自动同步。": "게이트웨이 컴퓨터의 현재 HTTPS 시스템 프록시를 사용자 지정 항목에 입력합니다. 이후 시스템 설정 변경은 자동으로 동기화되지 않습니다.", "读取自 {dir};端口由 Clash Verge 管理,这里实时同步": "{dir}에서 읽음; 포트는 Clash Verge가 관리하며 여기서 실시간 동기화됩니다", "读数来自自动余额查询;与余额列同一数字口径,严格小于才触发(等于阈值仍可用)": "수치는 자동 잔액 조회에서 오며 잔액 열과 같은 수치 기준입니다. 임계값보다 엄격히 작을 때만 발동합니다 (임계값과 같으면 사용 가능)", "读数里没有套餐清单(免费账号、或套餐的上游状态还没刷新;可点右上角「查询余额」重读)": "이 판독값에 플랜 목록이 없습니다(무료 계정이거나 업스트림 플랜 상태가 아직 갱신되지 않음). 오른쪽 위 \"잔액 조회\"로 다시 읽을 수 있습니다", "读数里没有额度桶,这里按套餐权益里的已用 / 总量显示(上游给的数)": "판독값에 할당량 버킷이 없어 플랜 권익의 사용량 / 총량(업스트림 수치)을 표시합니다", "调整到全局队列第一位": "전역 큐의 맨 앞으로 이동합니다", "调整顺序失败:{message}": "순서 조정 실패: {message}", "账号": "계정", "账号不存在,请刷新后重试": "계정이 존재하지 않습니다. 새로 고침 후 다시 시도하세요", "账号不存在,请刷新后重试。": "계정이 존재하지 않습니다. 새로 고침 후 다시 시도하세요.", "账号主额度": "계정 기본 할당량", "账号余额单位不一致,暂不按余额排序,继续比较其他规则": "계정 잔액의 단위가 달라 잔액 정렬을 건너뛰고 다른 규칙을 적용합니다", "账号全部模型暂时停止转发 · 到恢复时间自动解除": "이 계정의 모든 모델로 전달이 일시 중지됨 · 복구 시각에 자동 해제", "账号冷却": "계정 대기 시간", "账号列表刷新不可用,请重新打开页面": "계정 목록을 새로고침할 수 없습니다. 페이지를 다시 여세요", "账号列表刷新失败": "계정 목록을 새로고침하지 못했습니다.", "账号列表刷新接口不可用,请重新打开页面": "계정 목록 새로고침을 사용할 수 없습니다. 페이지를 다시 열어 주세요.", "账号列表加载失败,请点击「刷新」重试": "계정 목록을 불러오지 못했습니다. \"새로고침\"을 눌러 다시 시도하세요", "账号列表加载失败,请点击「刷新」重试:{message}": "계정 목록을 불러오지 못했습니다. \"새로고침\"을 눌러 다시 시도하세요: {message}", "账号列表已刷新": "계정 목록을 새로고침했습니다", "账号名 / 邮箱 / 备注": "계정 이름 / 이메일 / 메모", "账号套餐到期:{time}": "계정 플랜 만료: {time}", "账号导出失败:{reason}": "계정 내보내기 실패: {reason}", "账号已保存,但列表刷新失败:{error}": "계정은 저장되었지만 목록 새로고침에 실패했습니다: {error}", "账号已保存,但提供商未更新:{error}": "계정은 저장되었지만 제공자가 업데이트되지 않았습니다: {error}", "账号数据仍然保留,无需重新添加。安装或启用对应插件并成功加载后,账号会自动恢复显示。": "계정 데이터는 보존되어 있으므로 다시 추가할 필요가 없습니다. 해당 플러그인을 설치하거나 활성화하고 정상적으로 로드되면 계정이 자동으로 다시 표시됩니다.", "账号显示名称": "계정 표시 이름", "账号更新接口不可用,请重新打开页面": "계정 업데이트를 사용할 수 없습니다. 페이지를 다시 열어 주세요.", "账号更新结果未确认,请刷新后核对设置": "계정 업데이트 결과를 확인하지 못했습니다. 새로고침 후 설정을 확인해 주세요.", "账号正在导出,请稍候": "계정을 내보내는 중입니다. 잠시 기다려 주세요.", "账号添加时间": "계정 추가 시간", "账号级条件组已触发;点击查看限制器": "계정 전체 조건 그룹이 트리거되었습니다. 클릭하여 제한기를 확인하세요.", "账号表": "계정 표", "账号设置": "계정 설정", "账号设置 · {name}": "계정 설정 · {name}", "账号设置分组": "계정 설정 그룹", "账号邮箱": "계정 이메일", "账号页与全局路由共用此消耗顺序,网关按最新余额数据选路,不需要保持页面打开。模型独立顺序会覆盖全局。": "계정 페이지와 전역 라우팅이 이 소비 순서를 공유합니다. 게이트웨이는 최신 잔액 데이터로 경로를 선택하므로 페이지를 열어 둘 필요가 없습니다. 모델의 독립 순서가 전역 순서보다 우선합니다.", "跨账号批量配置仅支持通用条件;套餐实例不能直接复制到其他账号。": "계정 간 일괄 설정은 공통 조건만 지원합니다. 플랜 인스턴스는 다른 계정으로 직접 복사할 수 없습니다.", "跳过 {count} 个:": "{count}개 건너뜀: ", "跳过该账号(余额回升自动恢复)": "이 계정 건너뛰기 (잔액 회복 시 자동 리셋)", "跳过该账号(自动恢复)": "이 계정 건너뛰기 (자동 리셋)", "跳过该账号(重置后自动恢复)": "이 계정 건너뛰기 (초기화 후 자동 리셋)", "跳过(自动恢复)": "건너뛰기(자동 복구)", "转发优先级": "포워딩 우선순위", "转发走套餐池(Start Plan)通道(zcode.z.ai 的 Anthropic 端点,用账号里的体验额度 / 活动领取额度);在账号设置里可切回编码套餐": "포워딩은 플랜 풀 (Start Plan) 채널을 사용합니다 (zcode.z.ai의 Anthropic 엔드포인트, 계정의 체험 할당량 / 이벤트 수령분 사용); 계정 설정에서 코딩 플랜으로 다시 전환할 수 있습니다", "转发走活动套餐通道(zcode.z.ai 的 Anthropic 端点,用账号里领到的额度);在账号设置里可切回编码套餐": "포워딩은 이벤트 플랜 채널을 사용합니다 (zcode.z.ai의 Anthropic 엔드포인트, 계정에서 받은 할당량 사용); 계정 설정에서 코딩 플랜으로 다시 전환할 수 있습니다", "转发顺序": "포워딩 순서", "轮询全部代理节点": "모든 프록시 노드 순환", "轮询的代理": "순환할 프록시", "轮询至少要选择一条代理(或改选「全部」)": "순환하려면 프록시를 하나 이상 선택하세요(「전체」로 되돌릴 수도 있습니다)", "轮询(换 IP)": "순환 (IP 전환)", "还没有代理(去「网络代理」页添加)": "아직 프록시가 없습니다 (「네트워크 프록시」 페이지에서 추가하세요)", "还没有余额读数(已自动查询一次,稍候;也可以点右上角「查询余额」重读)": "아직 잔액 판독값이 없습니다(자동으로 한 번 조회했습니다. 잠시 기다리거나 오른쪽 위 \"잔액 조회\"를 누르세요)", "还没有保存的代理": "저장된 프록시가 없습니다", "还没有批量规则,请先添加限制或从所选账号复制。": "일괄 규칙이 없습니다. 제한을 추가하거나 선택한 계정에서 복사하세요.", "还没有条件组:账号照常参与转发,不设置额度保护。": "아직 조건 그룹이 없습니다. 계정은 할당량 보호 없이 정상적으로 요청을 전달합니다.", "还没有账号,去桌面端添加": "계정이 없습니다. 데스크톱에서 추가하세요.", "还没有账号,请点击「添加账号」": "아직 계정이 없습니다. ‘계정 추가’를 클릭하세요.", "还没有限制规则:账号照常参与转发,余额与 Token 消耗都不设上限。": "아직 제한 규칙이 없습니다: 계정이 평소처럼 포워딩에 참여하며, 잔액과 Token 소비 모두 상한을 두지 않습니다.", "这一份今天已经领过了(重复领取上游会回「已领取过」)": "이 플랜은 오늘 이미 받았습니다(다시 받으면 업스트림이 \"이미 받음\"을 반환합니다)", "这一家查不到积分到期时间": "이 제공자는 크레딧 만료 시간을 읽을 수 없습니다", "这一家没有可用余额查询": "이 공급자는 사용 가능 잔액 조회를 지원하지 않습니다", "这一栏改的是": "여기서 변경하는 대상은 ", "这一段按提供商出现:有什么配什么。": "이 섹션은 제공자에 따라 표시되며, 설정한 항목만 나옵니다.", "这一类现在没有账号": "이 분류에 계정이 없습니다", "这一组开着排序规则:关掉规则后才能手动拖": "이 그룹은 정렬 규칙이 켜져 있습니다. 수동으로 끌려면 규칙을 꺼야 합니다", "这个账号的余额走窗口限额通道(只配了编码套餐 API Key):只有每 N 小时的剩余比例,读不到套餐清单": "이 계정의 잔액은 창 제한 채널로 읽습니다(코딩 플랜 API Key만 설정됨). N시간마다의 남은 비율만 있고 플랜 목록은 없습니다", "这会{what}所有启用中的账号,转发将不可用。确定继续?": "활성 상태인 모든 계정을 {what}합니다. 포워딩을 사용할 수 없게 됩니다. 계속하시겠습니까?", "这是既有配置(直接引用 Clash 出口,不经过代理池)。推荐改用上面的": "기존 구성입니다 (Clash 아웃바운드를 직접 참조하며, 프록시 풀을 거치지 않습니다). 권장 방식은 위의 ", "这条自定义账号既没有 API Key,也没有勾选「无需鉴权」:转发时会被跳过,该提供商下的模型也不会出现在模型列表里。去账号「设置」里补上 Key,或勾选「该上游无需鉴权」": "이 사용자 지정 계정에는 API Key도 없고 「인증 불필요」도 체크되지 않았습니다: 포워딩 시 건너뛰며, 이 제공자의 모델도 모델 목록에 나타나지 않습니다. 계정 「설정」에서 Key를 입력하거나 「이 업스트림은 인증이 필요하지 않음」을 체크하세요", "这条账号是谁、排第几、能不能接请求。": "이 계정이 무엇인지, 몇 번째인지, 요청을 받을 수 있는지 나타냅니다.", "这条账号访问上游走哪条线路。": "이 계정이 업스트림에 접속할 때 어느 회선을 쓰는지 나타냅니다.", "这里只影响「显示」:卸载或停用插件不会删除账号;重新安装、启用并成功加载后,这些账号会自动回到列表。": "표시에만 영향을 줍니다. 플러그인을 삭제하거나 사용 중지해도 계정은 삭제되지 않습니다. 다시 설치해 사용하고 정상 로드되면 자동으로 돌아옵니다.", "连接失败": "연결 실패", "连接数": "연결 수", "追加规则(保留原有)": "규칙 추가 (기존 유지)", "追加限制规则": "제한 규칙 추가", "选中多个模型时,每个模型单独累计、单独比较阈值;不合并用量。": "여러 모델을 선택하면 모델별로 사용량을 누적하고 임계값을 비교합니다. 사용량을 합산하지 않습니다.", "选择": "선택", "选择所选账号作为模板(可选)": "선택한 계정을 템플릿으로 사용 (선택 사항)", "选择要轮询的代理(可多选)": "순환할 프록시 선택(복수 선택 가능)", "逐个刷新所选账号的 Token,未到期也会尝试刷新;不改变启用状态、代理或转发顺序。": "선택한 계정의 Token을 만료 전이라도 하나씩 갱신합니다. 활성 상태, 프록시 및 전달 순서는 변경하지 않습니다.", "逐窗口最低:{list}": "창별 최저: {list}", "逐请求轮换出口(换 IP):OpenCode Zen 免费档按 IP 限流,单个 IP 的额度用完会对它一律 429": "요청마다 아웃바운드를 바꿉니다(IP 전환): OpenCode Zen 무료 등급은 IP 기준으로 제한되며, 한 IP의 할당량을 다 쓰면 그 IP의 요청은 모두 429가 됩니다", "通用额度/本地保护": "공통 할당량 / 로컬 보호", "邮箱 {email}": "이메일 {email}", "部分余额信息暂未获取;未显示上游原始诊断": "일부 잔액 정보를 가져오지 못했습니다. 상위 서비스의 원본 진단 정보는 표시하지 않습니다", "部分来源查询失败,已保留其他结果:{message}": "일부 출처를 조회하지 못했습니다. 다른 결과는 유지합니다: {message}", "部分来源查询失败,暂不能确认本期活动或领取状态": "일부 출처를 조회하지 못해 현재 이벤트 또는 수령 상태를 아직 확인할 수 없습니다.", "部分窗口偏低": "일부 기간 잔여량 부족", "部分窗口未返回可识别读数": "일부 기간에 인식 가능한 수치가 반환되지 않았습니다", "部分读数未知": "일부 잔여량 알 수 없음", "部分额度读数暂不可用。": "일부 할당량 수치를 일시적으로 가져올 수 없습니다.", "配置已变更,请重新查询": "설정이 변경되었습니다. 다시 조회하세요.", "重新安装这个插件后自动回来": "이 플러그인을 다시 설치하면 자동으로 돌아옵니다", "重新读取": "다시 읽기", "重新读取该账号的余额与套餐(走余额查询那条链)": "이 계정의 잔액과 플랜을 다시 읽기(잔액 조회 경로 사용)", "重新读取账号列表和插件状态,不刷新 Token 或查询余额": "Token 갱신이나 잔액 조회 없이 계정 목록과 플러그인 상태를 다시 읽습니다", "重查": "재조회", "重置": "초기화", "重置 {date}": "{date} 초기화", "重置也不恢复,需手动启用": "초기화해도 리셋되지 않으며 수동으로 활성화해야 합니다", "重置周期必须是 30 分钟 ~ 24 小时": "초기화 주기는 30분 ~ 24시간이어야 합니다", "重置方式": "초기화 방식", "重置时区": "초기화 시간대", "重置详情": "초기화 상세", "长期有效": "장기 유효", "间隔单位": "간격 단위", "阈值": "임계값", "降低优先级": "우선순위 내리기", "限制器": "리미터", "限制器 · {n} 个模型": "제한기 · 모델 {n}개", "限制器 · 账号已跳过": "제한기 · 계정 건너뜀", "限制器:{window}已用 {used} / {threshold} Token": "리미터: {window} 사용 {used} / {threshold} Token", "限制指标": "제한 지표", "限制类型": "제한 유형", "限制阈值必须是大于 0 的数字": "제한 임계값은 0보다 큰 숫자여야 합니다", "限制阈值必须是非负有限数字": "임계값은 음수가 아닌 유한한 숫자여야 합니다", "限流": "속도 제한", "限流中": "속도 제한 중", "限流已清除": "레이트 리밋을 지웠습니다", "限额": "한도", "限额状态": "한도 상태", "隐藏账号名(名字显示为星号)": "계정 이름 숨기기 (이름이 별표로 표시됨)", "需要人机验证时,在该账号的「套餐明细」中主动开始验证。": "사람 인증이 필요하면 해당 계정의 「플랜 상세」에서 직접 인증을 시작하세요.", "需要重新登录": "재로그인 필요", "需要验证码时由打开着的主窗口或浏览器面板补铸;库存、补铸状态和失败原因分别显示": "인증이 필요하면 열린 기본 창이나 브라우저 패널에서 토큰을 생성합니다. 재고, 생성 상태 및 실패 이유는 따로 표시됩니다", "需重登": "재로그인", "顺序": "순서", "顺序未保存:{message}": "순서가 저장되지 않았습니다: {message}", "领取 {time}": "수령 {time}", "额度": "할당량", "额度充足": "사용 가능", "额度来源": "할당량 출처", "额度查询暂不可用。": "할당량 조회를 일시적으로 사용할 수 없습니다.", "额度查询未完成,未显示上游原始诊断。": "할당량 조회가 완료되지 않았습니다. 상위 서비스의 원본 진단 정보는 표시하지 않습니다.", "额度窗口读数来自开放平台监控通道(套餐 JWT 那条通道没有额度桶):读的是每 N 小时 / 每周窗口的剩余比例": "할당량 창 판독값은 오픈 플랫폼 모니터링 채널에서 가져옵니다(코딩 플랜 JWT 채널에는 버킷이 없습니다). N시간마다 / 주간 창의 남은 비율을 읽습니다", "额度详情": "할당량 상세", "首次失败后额外重试的次数;默认 3 次,0 = 不重试。手动和自动查询均生效,全部失败后才显示失败并记录日志。": "첫 실패 후 추가로 시도할 횟수입니다. 기본값은 3회이며 0은 재시도하지 않습니다. 수동 및 자동 조회에 모두 적용되며, 모든 시도가 실패한 경우에만 실패를 표시하고 로그를 기록합니다.", "验证失败:{error}": "인증 실패: {error}", "验证码令牌池接口不可用": "캡차 토큰 풀 인터페이스를 사용할 수 없습니다", "验证码令牌:{counts}": "캡차 토큰: {counts}", "高级请求": "프리미엄 요청", "魔粒": "Magicubes", "默认仅开启最快到期优先;可用余额和账号添加时间默认关闭。": "기본값은 만료가 빠른 순만 켜짐입니다. 사용 가능 잔액과 계정 추가 시간 정렬은 꺼져 있습니다.", "默认保持手动顺序,可按需开启支持的自动排序规则。": "기본적으로 수동 순서를 유지합니다. 필요에 따라 지원되는 자동 정렬 규칙을 켤 수 있습니다.", "默认展开 / 收起": "기본 펼침 / 접힘", "({n} 个未配置查询凭证)": " ({n}개는 조회 자격 증명 미설정)", "(不可用)": " (사용 불가)", "(其他订阅,可能未生效)": " (다른 구독, 적용되지 않았을 수 있음)", "(只测了前 {limit} 个,还有 {rest} 个未测)": "(앞의 {limit}개만 테스트했고 {rest}개는 미테스트)", "(名下 {count} 个账号共用)": " (이 제공자 아래 계정 {count}개가 공유) ", "(已在 Clash 中禁用)": " (Clash에서 비활성화됨)", "(库存为空,等待补铸;请保持主窗口或浏览器面板打开)": " (재고 없음, 보충 대기 중. 기본 창이나 브라우저 패널을 열어 두세요)", "(未启用套餐池账号,暂不补铸)": " (활성 Start Plan 계정이 없어 생성 일시 중지)", "(激活事件补报失败,可能影响领取资格:{message})": "(활성화 이벤트 재보고에 실패했습니다. 수령 자격에 영향을 줄 수 있습니다: {message})", "+ 添加条件": "+ 조건 추가", "+ 添加限制": "+ 제한 추가", ",{countdown}重置": ", 초기화까지 {countdown}", ",只对 OpenCode Zen 这类上游有意义,别的家请关掉。": ", OpenCode Zen 같은 업스트림에만 유용하므로 다른 제공자에서는 꺼 두세요.", ",已达到上限": ", 상한에 도달했습니다", ":到「网络代理」页的「订阅管理」里点「同步 Clash Verge」把出口导进池后即可选 —— 那样能集中测试、也能被多个账号共用。": " 사용입니다 — 「네트워크 프록시」 페이지의 「구독 관리」에서 「Clash Verge 동기화」를 눌러 아웃바운드를 풀에 가져오면 선택할 수 있으며, 한곳에서 테스트하고 여러 계정이 공유할 수 있습니다.", ";": "; ", "{count} 个分区有未保存的更改": "{count}개 섹션에 저장하지 않은 변경 사항이 있습니다", "{count} 个账号共用": "계정 {count}개에서 공유", "{count} 个账号共用提供商的连接配置。": "계정 {count}개가 이 제공업체의 연결 설정을 공유합니다.", "{count} 个账号共用连接配置": "계정 {count}개가 연결 설정을 공유합니다", "✅ 已改回跟随提供商的 Base URL": "✅ 제공업체의 Base URL을 다시 따르도록 변경했습니다", "「{name}」名下 {count} 个账号共用这些连接设置。修改协议或 Base URL 可能中断正在进行的请求。": "이 연결 설정은 {name}의 계정 {count}개가 공유합니다. 프로토콜이나 Base URL을 변경하면 진행 중인 요청이 중단될 수 있습니다.", "「{name}」名下 {count} 个账号共用;修改协议或地址可能中断正在进行的请求。": "{name}의 계정 {count}개가 공유합니다. 프로토콜이나 주소를 변경하면 진행 중인 요청이 중단될 수 있습니다.", "仅当前账号": "현재 계정만", "仅用于 OpenCode Zen 这类上游,普通提供商请保持关闭。": "OpenCode Zen 같은 업스트림 서비스에만 사용합니다. 일반 제공업체에서는 꺼 두세요.", "代理只作用于当前账号,不改变其他账号的出网方式。": "프록시는 현재 계정에만 적용되며 다른 계정의 연결 방식은 변경하지 않습니다.", "余额读数也是限制器余额规则的数据来源。": "잔액 값은 제한기의 잔액 규칙에도 사용됩니다.", "使用密钥访问上游": "키로 업스트림에 연결", "保存后将移除密钥,转发与拉取模型都不发送鉴权头。请确认上游确实无需凭证。": "저장하면 키가 제거되고 요청 전달과 모델 조회 시 인증 헤더를 보내지 않습니다. 업스트림에 인증 정보가 필요 없는지 확인하세요.", "保存提供商共用配置?": "제공업체 공유 설정을 저장할까요?", "保存更改": "변경 사항 저장", "共用": "공유", "关闭后不参与转发,余额查询不受影响。": "끄면 요청 전달에 사용되지 않습니다. 잔액 조회는 영향을 받지 않습니다.", "凭证设置": "인증 정보 설정", "出网方式": "연결 방식", "前往模型管理": "모델 관리로 이동", "前往模型管理会关闭账号设置,尚未保存的修改不会生效。": "모델 관리로 이동하면 계정 설정이 닫히며 저장하지 않은 변경 사항은 적용되지 않습니다.", "包含提供商共用配置,将影响 {count} 个账号": "계정 {count}개에 영향을 주는 제공업체 공유 설정 포함", "原密钥不会回显;更换密钥不会改变账号 ID。": "기존 키는 표시되지 않습니다. 키를 교체해도 계정 ID는 바뀌지 않습니다.", "各分区的更改将统一保存": "모든 섹션의 변경 사항을 함께 저장합니다", "启用账号": "계정 활성화", "在账号列表中拖动分组或行首把手,调整转发顺序。": "계정 목록에서 그룹이나 행 앞의 핸들을 드래그하여 전달 순서를 변경하세요.", "基本信息": "기본 정보", "填写接口基址,无需追加 {path}。": "API 기본 URL을 입력하세요. {path}를 덧붙일 필요는 없습니다.", "将同时删除名下 {count} 个账号,无法恢复。": "이 제공업체의 계정 {count}개도 함께 삭제됩니다. 복구할 수 없습니다.", "开启后会改写请求体,补齐会话头与占位工具;未填密钥时使用匿名凭证 public。": "켜면 요청 본문을 수정하여 세션 헤더와 자리표시자 도구를 추가합니다. 키가 없으면 익명 인증 정보 public을 사용합니다.", "当前没有凭证,转发时会跳过此账号。请填写密钥或选择「无需鉴权」。": "인증 정보가 없어 요청 전달 시 이 계정을 건너뜁니다. 키를 입력하거나 '인증 불필요'를 선택하세요.", "当前账号": "현재 계정", "所有分区中尚未保存的修改都会被放弃。已确认的独立清除操作不受影响。": "모든 섹션의 저장하지 않은 변경 사항을 버립니다. 이미 확인한 개별 삭제 작업은 영향을 받지 않습니다.", "提供商名称": "제공업체 이름", "改回跟随": "제공업체 따르기", "改回跟随提供商": "제공업체 따르기", "改回跟随提供商?": "제공업체 설정을 다시 따를까요?", "新密钥待保存": "새 키 저장 대기", "无需鉴权": "인증 불필요", "显示新输入的密钥": "새로 입력한 키 표시", "本地服务或无需凭证的上游": "로컬 서비스 또는 인증이 필요 없는 업스트림", "查询凭证": "조회 인증 정보", "模型清单与映射在「模型管理」中维护。": "모델 목록과 매핑은 '모델 관리'에서 관리합니다.", "模拟 OpenCode 官方客户端": "OpenCode 공식 클라이언트 에뮬레이션", "正在保存…": "저장 중…", "正在编辑提供商共用配置": "제공업체 공유 설정 편집 중", "没有未保存的更改": "저장하지 않은 변경 사항이 없습니다", "没有规则或全部停用时不限制;跳过后自动恢复,禁用后需手动启用。": "규칙이 없거나 모두 꺼져 있으면 제한하지 않습니다. 건너뛴 계정은 자동 복구되며 비활성화한 계정은 수동으로 활성화해야 합니다.", "清除余额查询凭证?": "잔액 조회 인증 정보를 삭제할까요?", "清除已存 API Key?": "저장된 API Key를 삭제할까요?", "清除已存密钥": "저장된 키 삭제", "清除查询凭证?": "조회 인증 정보를 삭제할까요?", "用于当前账号的对话、余额查询、模型拉取、模型测试、签到及凭证刷新等上游请求。留空使用提供商默认值;可选预置或直接填写。": "현재 계정의 대화, 잔액 조회, 모델 가져오기 및 테스트, 출석 체크, 인증 정보 갱신 등 업스트림 요청에 적용됩니다. 비워 두면 제공업체 기본값을 사용합니다. 프리셋을 선택하거나 직접 입력할 수 있습니다.", "用明确的规则保护当前账号的额度。": "명확한 규칙으로 현재 계정의 할당량을 보호합니다.", "留空不修改,替换后点击「保存更改」生效。": "비워 두면 변경하지 않습니다. 키를 교체한 뒤 '변경 사항 저장'을 눌러 적용하세요.", "留空保留当前密钥,输入新密钥以替换": "비워 두면 기존 키 유지, 새 키를 입력하면 교체", "确认保存": "저장 확인", "确认后立即生效,不受底部保存按钮控制。没有凭证且未开启「无需鉴权」时,此账号将被转发跳过。": "확인 후 즉시 적용되며 하단 저장 버튼과는 별개입니다. 인증 정보가 없고 '인증 불필요'도 꺼져 있으면 요청 전달 시 이 계정을 건너뜁니다.", "确认后立即生效,不受底部保存按钮控制。通常可继续复用转发用的登录凭证。": "확인 후 즉시 적용되며 하단 저장 버튼과는 별개입니다. 일반적으로 요청 전달에 사용하는 로그인 인증 정보를 계속 재사용할 수 있습니다.", "确认后立即生效,余额查询可能显示「未配置」。取消账号设置不会恢复已清除的凭证。": "확인 후 즉시 적용되며 잔액 조회에 '미설정'이 표시될 수 있습니다. 계정 설정을 취소해도 삭제한 인증 정보는 복구되지 않습니다.", "确认弹窗不可用,请重新打开页面": "확인 대화상자를 사용할 수 없습니다. 페이지를 다시 여세요.", "管理当前账号的凭证与可用套餐。": "현재 계정의 인증 정보와 사용 가능한 요금제를 관리합니다.", "统一管理提供商的协议、地址与兼容选项。": "제공업체의 프로토콜, 주소 및 호환성 옵션을 한곳에서 관리합니다.", "自定义 API": "사용자 정의 API", "要修改连接地址或协议?": "연결 주소나 프로토콜을 변경할까요?", "设置当前账号访问上游的出网方式。": "현재 계정이 업스트림에 연결하는 방식을 설정합니다.", "设置账号名称、启用状态与转发行为。": "계정 이름, 활성화 상태 및 전달 동작을 설정합니다.", "请填写有效的 HTTP 或 HTTPS 地址": "올바른 HTTP 또는 HTTPS 주소를 입력하세요", "请求标识": "요청 식별", "请求端点": "요청 엔드포인트", "账号凭证": "계정 인증 정보", "转发行为": "전달 동작", "达到上限后,将请求交给其他账号。": "한도에 도달하면 요청을 다른 계정에 전달합니다.", "这个账号单独存了一份地址:{url},转发时优先用它。上面改的是提供商共用地址,不会覆盖它。": "이 계정에는 별도의 주소({url})가 저장되어 있으며 전달할 때 이 주소가 우선합니다. 위에서 변경하는 값은 제공업체 공용 주소이며 이 값은 덮어쓰지 않습니다.", "这个账号将改用提供商当前保存的 Base URL:{url}。确认后立即生效,不受底部保存按钮控制。": "이 계정은 제공업체에 현재 저장된 Base URL({url})을 사용하게 됩니다. 확인하면 즉시 적용되며 하단 저장 버튼의 영향을 받지 않습니다.", "连接参数": "연결 매개변수", "连接设置": "연결 설정", "配置余额查询凭证、自动刷新间隔与失败重试。": "잔액 조회 인증 정보, 자동 새로 고침 간격 및 실패 시 재시도를 설정합니다.", "鉴权方式": "인증 방식", "隐藏新输入的密钥": "새로 입력한 키 숨기기", "高级兼容": "고급 호환성", "默认关闭": "기본값: 꺼짐", " · 模型 {head}{rest}": " · 모델 {head}{rest}", " 等 {n} 个": " 등 {n}개", "1// 开头的 Google refresh token(也可直接粘贴 refresh_token=… 整行)": "1//로 시작하는 Google refresh token (refresh_token=… 줄 전체를 붙여넣어도 됨)", "11 位大陆手机号": "11자리 중국 본토 휴대폰 번호", "1~64 个字符,账号列表里按它分组显示": "1~64자, 계정 목록에서 이 값을 기준으로 그룹화되어 표시됩니다", "6 位数字": "6자리 숫자", "
  • 没有可自动领的活动
  • ": "
  • 자동으로 수령할 수 있는 이벤트가 없습니다
  • ", "

    领到的是套餐赠送积分,不会增加福利模型的 token 池;": "

    수령하는 것은 플랜 증정 포인트이며, 혜택 모델의 token 풀은 늘지 않습니다;", "ACP 代理配置无效,请重新选择代理。": "ACP 프록시 설정이 올바르지 않습니다. 프록시를 다시 선택하세요.", "ACP 会话失败时不自动重发,也不切换到其他接入方式。": "ACP 세션이 실패해도 자동으로 재전송하거나 다른 연결 방식으로 전환하지 않습니다.", "ACP 使用网关电脑上的官方 agy CLI,不是当前手机或浏览器所在设备。请先安装 agy 1.5.0 或更新版本:https://antigravity.google/docs/cli。程序不在默认位置时,可在网关启动环境设置 AGY_PATH。": "ACP는 현재 휴대폰이나 브라우저 기기가 아닌 게이트웨이 컴퓨터의 공식 agy CLI를 사용합니다. 먼저 agy 1.5.0 이상을 설치하세요: https://antigravity.google/docs/cli. 기본 위치가 아니라면 게이트웨이 시작 환경에 AGY_PATH를 설정할 수 있습니다.", "ACP 尚未返回可用的会话模型目录,请检查官方 CLI 登录状态后重试。": "ACP에서 사용 가능한 세션 모델 목록을 반환하지 않았습니다. 공식 CLI 로그인 상태를 확인한 후 다시 시도하세요.", "ACP 的本机进程仍使用原来的代理。请先在插件页停用再启用 ACP 插件,再使用新的代理。": "로컬 ACP 프로세스가 기존 프록시를 사용하고 있습니다. 새 프록시를 사용하기 전에 플러그인 페이지에서 ACP 플러그인을 껐다가 다시 켜세요.", "API Key + 控制台令牌(模型调用 + 墨点额度)": "API Key + 콘솔 토큰(모델 호출 + 먹점 잔액)", "API 凭证添加暂不能解析代理池引用;请使用自定义代理地址,添加后再在账号设置中调整。": "API 인증 정보 추가 시 아직 프록시 풀 참조를 확인할 수 없습니다. 사용자 지정 프록시 주소를 사용한 뒤 계정 설정에서 조정하세요.", "API 模板": "API 템플릿", "AWS Builder ID(直接授权,减少一次回填)": "AWS Builder ID(직접 인증, 콜백 붙여넣기 1회 감소)", "AWS 地区(账号目录所在地区)": "AWS 리전(계정 디렉터리가 있는 리전)", "AiHubMix 的 OpenAI 兼容端点,使用 AiHubMix 的 API Key;模型 ID 以平台清单为准": "AiHubMix의 OpenAI 호환 엔드포인트입니다. AiHubMix API Key를 사용하고 모델 ID는 플랫폼 목록을 따르세요", "Anthropic 兼容端点在 https://api.deepseek.com/anthropic(协议换 anthropic 时填它)": "Anthropic 호환 엔드포인트는 https://api.deepseek.com/anthropic입니다 (프로토콜을 anthropic으로 바꿀 때 입력합니다)", "Anthropic 协议填根地址,不要带 /v1": "Anthropic 프로토콜은 루트 주소를 입력하고 /v1은 붙이지 마세요", "Antigravity": "Antigravity", "Antigravity 账号的添加方式": "Antigravity 계정 추가 방식", "AtomCode": "AtomCode", "AutoClaw 国内版": "AutoClaw 중국판", "AutoClaw 国际版": "AutoClaw 국제판", "BDUSS 必填;请粘贴**完整 Cookie**(Cookie 编辑器一键导出即可)—— 其中 **PTOKEN 必须保留**,网关要用它向百度换发 KukuAI 业务会话令牌,缺了它模型刷新会报「未登录」。支持整段 Cookie 头、Cookie 编辑器导出的 JSON 数组,或 {BDUSS, STOKEN} 对象。KukuAI 没有刷新机制,登录态过期后重新粘贴即可。": "BDUSS는 필수입니다; **전체 Cookie**를 붙여넣으세요 (Cookie 편집기에서 원클릭 내보내기 가능) — 이 중 **PTOKEN은 반드시 남겨 두세요**. 게이트웨이가 이것을 사용해 Baidu에서 KukuAI 비즈니스 세션 토큰을 교환 발급받으며, 없으면 모델 갱신 시 「미로그인」 오류가 발생합니다. 전체 Cookie 헤더, Cookie 편집기에서 내보낸 JSON 배열, 또는 {BDUSS, STOKEN} 객체를 지원합니다. KukuAI에는 갱신 메커니즘이 없으므로 로그인 상태가 만료되면 다시 붙여넣으면 됩니다.", "BDUSS=…; STOKEN=…(或 Cookie 编辑器导出的 JSON)": "BDUSS=…; STOKEN=… (또는 Cookie 편집기에서 내보낸 JSON)", "CatPaw 的 X-Passport-Token(登录态 Cookie)": "CatPaw의 X-Passport-Token (로그인 상태 Cookie)", "ChatGPT / Codex": "ChatGPT / Codex", "ChatGPT API": "ChatGPT API", "ChatGPT API 订阅": "ChatGPT API 구독", "Claude Code 本机订阅": "Claude Code 로컬 구독", "Claude 订阅": "Claude 구독", "Cline Pass 的 API Key 在 app.cline.bot 获取(订阅制);端点为 OpenAI 兼容,模型清单以 Cline 控制台为准,模型名在模型管理里按裸名添加(如 glm-5.2 / kimi-k2.7-code / deepseek-v4-pro);上游按客户端形态校验,所需的客户端请求头已随卡预置": "Cline Pass의 API Key는 app.cline.bot에서 발급받습니다(구독제). 엔드포인트는 OpenAI 호환이며, 모델 목록은 Cline 콘솔을 기준으로 하고, 모델 이름은 모델 관리에서 접두사 없는 이름 그대로 추가합니다(예: glm-5.2 / kimi-k2.7-code / deepseek-v4-pro). 업스트림이 클라이언트 형태를 검증하므로 필요한 클라이언트 요청 헤더는 이 카드에 미리 설정되어 있습니다", "Cloud project 必填;不会借用其他 Google 提供商的凭证或额度。": "Cloud project는 필수입니다. 다른 Google 제공업체의 인증 정보나 할당량을 사용하지 않습니다.", "Cloud-IDE-JWT(三段点分)": "Cloud-IDE-JWT (3단 점 구분)", "Cloudflare Account ID(32 位十六进制)": "Cloudflare 계정 ID (16진수 32자리)", "Codex 订阅": "Codex 구독", "Command Code": "Command Code", "Cursor dashboard API key;loader 按需重新 exchange 模型 token,不提供手动令牌刷新。": "Cursor dashboard API key입니다. loader가 필요에 따라 모델 token을 교환하며 수동 토큰 갱신은 제공하지 않습니다.", "DeepSeek 网页": "DeepSeek 웹", "Gemini CLI / Code Assist": "Gemini CLI / Code Assist", "Gemini CLI 凭证文件绝对路径(只读,不复制或写回 refresh token)": "Gemini CLI 인증 정보 파일의 절대 경로(읽기 전용, refresh token 복사 또는 다시 쓰기 없음)", "GitHub Copilot": "GitHub Copilot", "GitHub 官方设备码登录": "GitHub 공식 기기 코드 로그인", "GitHub 登录域名(留空使用 github.com)": "GitHub 로그인 도메인(비워 두면 github.com)", "Google Cloud Project ID(必填,Standard / Enterprise 资格由上游判定)": "Google Cloud Project ID(필수, Standard / Enterprise 자격은 상위 서비스에서 판단)", "Google Cloud Project ID(必填,Standard / Enterprise 资格由上游判定);默认候选来自 {variable},请明确确认": "Google Cloud Project ID(필수, Standard / Enterprise 자격은 상위 서비스에서 판단). 기본 후보는 {variable}에서 가져왔습니다. 명시적으로 확인하세요.", "Google OAuth(Code Assist + Cloud project)": "Google OAuth(Code Assist + Cloud project)", "Google 授权(ACP)": "Google 인증(ACP)", "Groq 的 OpenAI 兼容端点,使用 GroqCloud 的 API Key": "Groq의 OpenAI 호환 엔드포인트입니다. GroqCloud의 API Key를 사용하세요", "IAM Identity Center(企业账号,直接授权)": "IAM Identity Center(조직 계정, 직접 인증)", "JWT(三段点分;也可直接粘贴 Bearer 整行或 data.bin 内容)": "JWT(점 3개 구분. Bearer 전체 줄 또는 data.bin 내용을 붙여넣어도 됨)", "JWT(三段点分;也可直接粘贴 chatglm_token=… 整行)": "JWT(점 3개로 구분된 형식. chatglm_token=… 줄을 그대로 붙여도 됩니다)", "Kimi / Moonshot 国内版": "Kimi / Moonshot 중국판", "Kimi / Moonshot 国内站 API Key,使用 moonshot.cn 按量接口;不是 Kimi Code 会员入口": "Kimi / Moonshot 중국 사이트의 API Key로 moonshot.cn 종량제 API를 사용합니다. Kimi Code 멤버십용 엔드포인트가 아닙니다", "Kimi / Moonshot 国际版": "Kimi / Moonshot 국제판", "Kimi / Moonshot 国际站 API Key,使用 moonshot.ai 按量接口;不是 Kimi Code 会员入口": "Kimi / Moonshot 국제 사이트의 API Key로 moonshot.ai 종량제 API를 사용합니다. Kimi Code 멤버십용 엔드포인트가 아닙니다", "Kiro API key(ksk_…)。": "Kiro API key(ksk_…)입니다.", "Kiro 登录页(Google / GitHub 等)": "Kiro 로그인 페이지(Google / GitHub 등)", "Kiro 网页登录": "Kiro 웹 로그인", "LM Studio(本地)": "LM Studio(로컬)", "LobsterAI": "LobsterAI", "LongCat 的 OpenAI 兼容端点,使用 LongCat 平台的 API Key": "LongCat의 OpenAI 호환 엔드포인트입니다. LongCat 플랫폼의 API Key를 사용하세요", "MClaw 由插件在网关电脑上启动专用 Chrome 窗口,独立登录环境也用于自动续期,不使用系统默认浏览器或应用内嵌窗口。": "MClaw 플러그인은 게이트웨이 컴퓨터에서 전용 Chrome 창을 실행합니다. 독립된 로그인 환경은 자동 갱신에도 사용되며 시스템 기본 브라우저나 앱 내장 창은 사용하지 않습니다.", "MiniMax Code 国内版": "MiniMax Code 중국판", "MiniMax Code 国际版": "MiniMax Code 국제판", "Mistral 的 OpenAI 兼容端点,使用 Mistral 控制台的 API Key": "Mistral의 OpenAI 호환 엔드포인트입니다. Mistral 콘솔의 API Key를 사용하세요", "ModelScope 国内版": "ModelScope 중국판", "ModelScope 国际版": "ModelScope 국제판", "MonkeyCode": "MonkeyCode", "MonkeyCode 国际版": "MonkeyCode 국제판", "MonkeyCode 自动网页登录仅限桌面端;浏览器面板请登录对应官网后粘贴 session。": "MonkeyCode 자동 웹 로그인은 데스크톱 앱에서만 지원됩니다. 브라우저 관리 화면에서는 해당 공식 사이트에 로그인한 뒤 session을 붙여넣으세요.", "NVIDIA NIM 托管端点,Key 在 integrate.api.nvidia.com 申请": "NVIDIA NIM 관리형 엔드포인트, Key는 integrate.api.nvidia.com에서 신청합니다", "Nous Portal 的按量 API,使用 Portal 的 API Key;不是旧的订阅登录方式": "Nous Portal의 종량제 API입니다. 이전 구독 로그인 방식이 아닌 Portal API Key를 사용하세요", "OfficeAce 果办": "OfficeAce", "QuWork 凭证": "QuWork 인증 정보", "QuWork 原设备标识": "QuWork 원래 장치 식별 정보", "QwenWork 千问办公": "QwenWork 공용판", "QwenWork 千问办公企业版": "QwenWork 기업판", "StepFun 国内版(按量)": "StepFun 중국판(종량제)", "StepFun 国内站按量 API;请使用按量 API Key,不要填 Step Plan 套餐 Key": "StepFun 중국 사이트의 종량제 API입니다. Step Plan 구독 Key가 아닌 종량제 API Key를 입력하세요", "StepFun 国际版(按量)": "StepFun 국제판(종량제)", "StepFun 国际站按量 API;请使用按量 API Key,不要填 Step Plan 套餐 Key": "StepFun 국제 사이트의 종량제 API입니다. Step Plan 구독 Key가 아닌 종량제 API Key를 입력하세요", "Tabbit 国内版": "Tabbit 중국판", "Tabbit 国际版": "Tabbit 국제판", "TokenPlan API Key(控制台 → 科研模型 → API Key)": "TokenPlan API Key(콘솔 → 科研模型 → API Key)", "User-Agent(可选)": "User-Agent(선택 사항)", "accessToken 是 Accio 的登录凭证(一长串不透明 token,不是 JWT);refreshToken 可选,填了之后到期能自动续期。请填写 {label}账号的凭证 —— {siteNote}(最容易拿到的办法:直接用上方的「网页登录」,不需要手工找 token。)": "accessToken은 Accio의 로그인 자격 증명입니다 (길고 불투명한 token 문자열이며 JWT가 아닙니다); refreshToken은 선택이며, 입력하면 만료 시 자동 갱신됩니다. {label} 계정의 자격 증명을 입력하세요 — {siteNote} (가장 쉽게 얻는 방법: 위의 「웹 로그인」을 바로 사용하세요. token을 직접 찾을 필요가 없습니다.)", "accessToken 是 Trae 的 Cloud-IDE-JWT(三段点分),refreshToken 用于到期自动续期(本家 refreshToken 一次一换:换发一次旧的即作废,所以两份程序别同时刷同一个账号)。
    手工粘贴时请连 machineId / deviceId 一起填:上游把它们与登录时上传的设备公钥绑在一起判设备,凭空换一对会撞 2xxxx 那族设备绑定拒绝。
    没有这三样时的正路是用上方的「网页登录」;容器 / 远程部署形态按提示粘贴地址栏回调地址即可。": "accessToken은 Trae의 Cloud-IDE-JWT이며(3단 점 구분), refreshToken은 만료 시 자동 갱신에 사용됩니다 (이 제공자는 refreshToken이 교환할 때마다 바뀝니다: 한 번 교환하면 이전 것은 무효가 되므로 두 프로그램에서 같은 계정을 동시에 갱신하지 마세요).
    수동으로 붙여넣을 때는 machineId / deviceId도 함께 입력하세요: 업스트림은 이를 로그인 시 업로드한 기기 공개 키와 묶어 기기를 판별하므로, 갑자기 새로운 값을 넣으면 2xxxx 계열 기기 바인딩 거부가 발생합니다.
    이 세 가지가 없을 때의 올바른 방법은 위의 「웹 로그인」이며, 컨테이너 / 원격 배포 환경에서는 안내에 따라 주소 표시줄의 콜백 주소를 붙여넣으면 됩니다.", "chat.deepseek.com 的 userToken.value,不是收费 API Key": "chat.deepseek.com의 userToken.value이며 유료 API Key가 아닙니다", "github-copilot/apps.json 或 opencode/auth.json": "github-copilot/apps.json 또는 opencode/auth.json", "github.com 或 company.ghe.com": "github.com 또는 company.ghe.com", "github.com:Iv1.b507a08c87ecfe98 或 github-copilot": "github.com:Iv1.b507a08c87ecfe98 또는 github-copilot", "monkeycode_ai_session 的值(也可直接粘贴整段 Cookie)": "monkeycode_ai_session의 값 (전체 Cookie를 붙여넣어도 됨)", "ms- 开头的 API 令牌": "ms- 로 시작하는 API 토큰", "project 必填;只读引用文件,模块的 OAuth 续期不写回客户端。": "project는 필수입니다. 파일을 읽기 전용으로 참조하며 모듈 OAuth 갱신은 클라이언트에 쓰지 않습니다.", "refreshToken 可选,填了到期可自动续期;两者都能从小浣熊客户端登录态文件里取到。": "refreshToken은 선택이며, 입력하면 만료 시 자동 갱신됩니다; 둘 다 小浣熊 클라이언트 로그인 상태 파일에서 얻을 수 있습니다.", "refreshToken 可选,填了可自动续期;两者都能从客户端登录态文件取到。同一个 Cline 账号两个池都能用,这里归入 {label}。": "refreshToken은 선택이며, 입력하면 자동 갱신됩니다; 둘 다 클라이언트 로그인 상태 파일에서 얻을 수 있습니다. 같은 Cline 계정은 두 풀 모두에서 사용할 수 있으며, 여기서는 {label}로 분류됩니다.", "token 支持 enc: 前缀(Windows 上自动解密)。未填 refreshToken 无法自动续期。": "token은 enc: 접두사를 지원합니다 (Windows에서는 자동 복호화). refreshToken을 입력하지 않으면 자동 갱신할 수 없습니다.", "token 是登录态 Cookie;CatPaw 没有刷新机制,过期后需在客户端重新登录。": "token은 로그인 상태 Cookie입니다; CatPaw에는 갱신 메커니즘이 없어 만료 후 클라이언트에서 다시 로그인해야 합니다.", "token=…; user_id=…(也可粘贴 Copy as cURL 整段)": "token=…; user_id=… (Copy as cURL 전체를 붙여넣어도 됩니다)", "user_ 开头的 API Key(也可直接粘贴 Authorization: Bearer … 整行)": "user_로 시작하는 API Key (Authorization: Bearer … 줄 전체를 붙여넣어도 됨)", "xAI 的 OpenAI 兼容端点,使用 xAI 控制台的 API Key;不是 Grok 网页订阅": "xAI의 OpenAI 호환 엔드포인트입니다. Grok 웹 구독이 아닌 xAI 콘솔의 API Key를 사용하세요", "your-company.vpc.qwenwork.cn 或 https://your-company.vpc.qwenwork.cn": "your-company.vpc.qwenwork.cn 또는 https://your-company.vpc.qwenwork.cn", "{label} 网页登录的打开方式": "{label} 웹 로그인을 여는 방식", "{label} 账号地区": "{label} 계정 지역", "{label} 账号的添加方式": "{label} 계정 추가 방식", "{label}账号已添加": "{label} 계정을 추가했습니다", "{label}(只读本机)": "{label}(로컬 읽기 전용)", "{message}:请在打开的页面完成滑块,完成后回到这里点「已完成验证,继续发送」": "{message}: 열린 페이지에서 슬라이더 인증을 완료한 뒤 돌아와 「인증 완료, 다시 보내기」를 클릭하세요", "{message}:请手动打开验证页面 {url},完成后回到这里点「已完成验证,继续发送」": "{message}: 인증 페이지 {url}을(를) 직접 연 뒤 완료하고 돌아와 「인증 완료, 다시 보내기」를 클릭하세요", "{name} 不是合法 JSON:{reason}": "{name}은(는) 올바른 JSON이 아닙니다: {reason}", "{name}要粘一个 JSON 对象(形如 {sample})": "{name}에는 JSON 객체를 붙여넣어야 합니다 (예: {sample})", "{n} 个账号": "계정 {n}개", "{n} 个账号,点击添加": "계정 {n}개, 클릭하여 추가", "{seconds}s 后重发": "{seconds}초 후 재발송", "✅ {label}账号已添加": "✅ {label} 계정을 추가했습니다", "✅ {label}账号已添加{name}": "✅ {label} 계정을 추가했습니다{name}", "✅ 已从 cc-switch 导入 {n} 个供应商": "✅ cc-switch에서 제공자 {n}개를 가져왔습니다", "✅ 已创建自定义提供商「{name}」并添加账号": "✅ 커스텀 제공자 「{name}」을(를) 만들고 계정을 추가했습니다", "✅ 已删除自定义提供商「{name}」{accounts}{keys}": "✅ 커스텀 제공자 「{name}」을(를) 삭제했습니다{accounts}{keys}", "✅ 已更新已有账号{name}(同一把 API Key 只保留一条,重复添加会合并)": "✅ 기존 계정{name}을(를) 업데이트했습니다(동일한 API Key는 하나만 유지되며 다시 추가하면 병합됩니다)", "✅ 已更新已有账号{name}(同一提供商内,同一把 API Key 只保留一条)": "✅ 기존 계정{name}을 업데이트했습니다 (같은 제공업체 내에서 API Key당 계정 하나만 유지)", "✅ 登录成功,{edition}账号已加入列表": "✅ 로그인 성공, {edition} 계정을 목록에 추가했습니다", "✅ 领取成功:{planId}{period}": "✅ 수령 성공: {planId}{period}", " 同一家可以放多把 key,按优先级轮换。": " 같은 제공자에 key를 여러 개 둘 수 있으며, 우선순위에 따라 로테이션됩니다.", "「{name}」的账号添加功能还在开发中,敬请期待。": "「{name}」의 계정 추가 기능은 아직 개발 중입니다. 기대해 주세요.", "一个 Key 用遍多家模型,模型名用「厂商/模型」全称(如 deepseek/deepseek-chat)": "하나의 Key로 여러 제공자의 모델을 사용할 수 있으며, 모델 이름은 「벤더/모델」 전체 이름을 씁니다 (예: deepseek/deepseek-chat)", "上游不要鉴权时留空,并勾选下面一项(留空又不勾会被当成未配置凭证)": "업스트림이 인증을 요구하지 않으면 비워 두고 아래 항목을 체크하세요 (비워 두고 체크하지 않으면 자격 증명 미설정으로 간주됩니다)", "上游信息": "업스트림 정보", "上游没有给出验证页面地址": "업스트림이 인증 페이지 주소를 반환하지 않았습니다", "上游要求人机验证,但没有给出验证页面地址,请稍后重试": "업스트림이 사람 인증을 요구하지만 인증 페이지 주소를 반환하지 않았습니다. 잠시 후 다시 시도하세요", "不使用预置": "프리셋 사용 안 함", "不可领({status})": "수령 불가 ({status})", "不授权": "허용하지 않음", "不支持导入": "가져오기 미지원", "不是有效的凭证文件:内容要是一个 JSON 对象": "유효한 자격 증명 파일이 아닙니다. 내용은 JSON 객체여야 합니다", "不是有效的凭证文件:需要包含 accessToken 与 uid": "유효한 자격 증명 파일이 아닙니다. accessToken과 uid가 필요합니다", "不是自定义提供商": "커스텀 제공자가 아닙니다", "不需要 Key:转发与拉取模型都不发送鉴权头": "Key 불필요: 포워딩과 모델 조회 모두 인증 헤더를 보내지 않습니다", "不需要登录:点下面的按钮,网关会直接在智谱清言换发一份访客凭证并加入账号列表(也可以先填个备注名)。访客凭证可以直接用来对话,免费额度由上游按设备发放。

    注意:访客账号没有积分体系 —— 它与「会员积分」「每日登录积分」「活动领取」相关的接口一律需要登录,因此那些能力对访客会如实跳过(账号页的积分、签到中心都不显示读数)。想要积分就用「填写凭证」粘一个已登录账号的令牌,或「导入桌面端登录态」。": "로그인이 필요 없습니다. 아래 버튼을 누르면 게이트웨이가 智谱清言에서 게스트 자격 증명을 직접 발급받아 계정 목록에 추가합니다(먼저 메모 이름을 입력해도 됩니다). 게스트 자격 증명은 바로 대화에 쓸 수 있고, 무료 할당량은 업스트림이 기기 단위로 발급합니다.

    주의: 게스트 계정에는 포인트 체계가 없습니다. 회원 포인트, 매일 로그인 포인트, 활동 수령 관련 인터페이스는 모두 로그인이 필요하므로 이러한 기능은 게스트에서 건너뜁니다(계정 페이지의 포인트와 签到 센터에 수치가 표시되지 않습니다). 포인트가 필요하면 \"자격 증명 입력\"으로 로그인된 계정 토큰을 붙여넣거나 \"데스크톱 로그인 상태 가져오기\"를 사용하세요.", "两版账号可同时保存,各自一份模型清单(国内版与国际版是两家提供商,可分别启用与映射)。": "두 판의 계정을 동시에 저장할 수 있으며 각각 별도의 모델 목록을 가집니다 (중국판과 국제판은 서로 다른 두 제공자로, 각각 활성화하고 매핑할 수 있습니다).", "中国版": "중국판", "也支持本软件导出的单账号 JSON 文件,保留账号凭证与附加信息。": "이 앱에서 내보낸 단일 계정 JSON 파일도 지원하며 인증 정보와 추가 계정 데이터를 유지합니다.", "仅 API Key(模型调用,不含墨点额度)": "API Key만 사용(모델 호출, 먹점 잔액 제외)", "仅填写自己的 GitHub 令牌": "본인의 GitHub 토큰만 입력", "仅支持仍有有效 Gemini Code Assist Standard / Enterprise 资格并绑定 Cloud project 的账号。个人免费版及 Google AI Pro / Ultra 已于 2026-06-18 停止支持;Standard / Enterprise 新订阅已于 2026-10-09 停售。不会切换到其他 Google 产品或额度池。": "유효한 기존 Gemini Code Assist Standard / Enterprise 자격과 연결된 Cloud project가 있는 계정만 지원합니다. 개인 무료 등급 및 Google AI Pro / Ultra 지원은 2026-06-18에 종료되었고 Standard / Enterprise 신규 구독 판매는 2026-10-09에 중단되었습니다. 다른 Google 제품이나 할당량 풀로 전환하지 않습니다.", "仅读取本机 Claude Code 的当前订阅登录。若未登录,请先在自己的终端登录;本地凭证仍由 CLI 管理。": "현재 로컬 Claude Code 구독 로그인만 읽습니다. 로그아웃 상태라면 자신의 터미널에서 먼저 로그인하세요. 로컬 인증 정보는 계속 CLI가 관리합니다.", "今天没有需要领的活动(都已到账)": "오늘 수령할 이벤트가 없습니다 (모두 적립됨)", "今天(北京时间 {day})已试 {attempts} 次,还能试 {left} 次{next}
    ": "오늘(베이징 시간 {day}) {attempts}회 시도했고, {left}회 더 시도할 수 있습니다{next}
    ", "从 Google 官方源下载并核验 SHA-512;下载使用网关默认出口。更新失败保留旧版,进行中的对话不受替换影响。": "게이트웨이의 기본 네트워크 연결로 Google 공식 소스에서 다운로드하고 SHA-512를 검증합니다. 업데이트 실패 시 이전 버전을 유지하며 진행 중인 대화는 중단하지 않습니다.", "从别的机器(或 OfficeAce 桌面端 models.json)取三项贴进来:模型网关基址(baseUrl,形如 https://modelgw-…/v2)与 modelAppKey / modelAppSecret。这三项就能转发(网关凭据不过期);控制面临时凭据(accessKeyId 等)可选,留空则额度/自动续期不可用,但不影响转发。": "다른 컴퓨터(또는 OfficeAce 데스크톱 앱의 models.json)에서 다음 세 항목을 가져와 붙여넣으세요: 모델 게이트웨이 기본 주소(baseUrl, https://modelgw-…/v2 형태)와 modelAppKey / modelAppSecret. 이 세 항목만 있으면 전달할 수 있습니다(게이트웨이 자격 증명은 만료되지 않음). 제어 영역 임시 자격 증명(accessKeyId 등)은 선택이며, 비워 두면 잔액 조회와 자동 갱신을 쓸 수 없지만 전달에는 영향이 없습니다.", "从本机导入桌面端登录态": "이 컴퓨터에서 데스크톱 로그인 상태 가져오기", "任务镜像 id": "작업 이미지 id", "余额查询": "잔액 조회", "你企业的千问办公旗舰版域名(企业管理后台地址栏的域名,如 your-company.vpc.qwenwork.cn)": "회사의 QwenWork Enterprise 플래그십 도메인(기업 관리 페이지 주소창의 도메인, 예: your-company.vpc.qwenwork.cn)", "使用 Google 账号登录": "Google 계정으로 로그인", "使用 Zai 账号登录": "Zai 계정으로 로그인", "使用 {name} 模板新建提供商": "{name} 템플릿으로 제공업체 만들기", "使用个人访问令牌(PAT)": "개인 액세스 토큰(PAT) 사용", "使用本机 Claude Code 登录": "로컬 Claude Code 로그인 사용", "使用本机 Kimi Work 登录": "로컬 Kimi Work 로그인 사용", "使用模板新建提供商": "이 템플릿으로 제공업체 만들기", "使用网页令牌,不是收费 API Key。": "유료 API Key가 아닌 웹 토큰을 사용하세요.", "使用自己的 GitHub 账号授权;模型条款须在官方客户端手动确认。": "본인의 GitHub 계정으로 승인하세요. 모델 약관은 공식 클라이언트에서 직접 확인해야 합니다.", "先在网关所在机器启动 LM Studio 服务;localhost 指向网关所在机器,远程或容器部署请改为网关可访问的地址。默认无需鉴权;启用认证后请取消「该上游无需鉴权」并填写真实 API Key": "먼저 게이트웨이가 실행되는 컴퓨터에서 LM Studio 서버를 시작하세요. localhost는 게이트웨이가 실행되는 컴퓨터를 가리킵니다. 원격 또는 컨테이너 배포에서는 게이트웨이에서 접근할 수 있는 주소로 변경하세요. 기본적으로 인증이 필요하지 않습니다. 인증을 활성화했다면 「이 업스트림은 인증이 필요하지 않음」을 해제하고 실제 API Key를 입력하세요", "免费模型不用填 Key(默认勾上「该上游无需鉴权」,网关自动用匿名凭证);付费模型则填 Zen 的 API Key。免费档上游只认官方客户端形态,已默认开启「伪装 OpenCode 官方客户端」": "무료 모델은 Key를 입력하지 않아도 됩니다 (기본적으로 「이 업스트림은 인증이 필요하지 않음」이 체크되어 있고, 게이트웨이가 자동으로 익명 자격 증명을 사용합니다); 유료 모델은 Zen의 API Key를 입력하세요. 무료 등급 업스트림은 공식 클라이언트 형태만 허용하므로 「OpenCode 공식 클라이언트로 위장」이 기본으로 켜져 있습니다", "关联用户指定的本地 Copilot 凭证(只读)": "사용자가 선택한 로컬 Copilot 인증 정보 연결(읽기 전용)", "内嵌窗口": "내장 창", "内嵌窗口打开;关窗即取消等待(Google 账号被拒时改用系统浏览器)": "내장 창으로 엽니다; 창을 닫으면 대기가 취소됩니다 (Google 계정이 거부되면 시스템 브라우저를 사용하세요)", "内嵌窗口打开;完成后自动加入列表,关窗即取消等待": "내장 창으로 엽니다; 완료하면 자동으로 목록에 추가되고, 창을 닫으면 대기가 취소됩니다", "内嵌窗口打开;扫码完成后自动加入列表,关窗即取消等待": "내장 창으로 열립니다. 스캔이 끝나면 자동으로 목록에 추가되며, 창을 닫으면 대기가 취소됩니다", "内嵌窗口用全新环境,多账号互不影响;关窗即取消等待": "내장 창은 새 환경을 사용하므로 여러 계정이 서로 영향을 주지 않습니다; 창을 닫으면 대기가 취소됩니다", "内嵌窗口登录": "앱 내장 창에서 로그인", "内嵌窗口(推荐)": "내장 창(권장)", "准备验证…": "인증 준비 중…", "凭据 JSON": "자격 증명 JSON", "凭证 JSON 或模型凭证": "인증 JSON 또는 모델 인증 정보", "凭证仅发送至当前网关": "인증 정보는 현재 게이트웨이에만 전송됩니다", "凭证文件在哪?": "자격 증명 파일 위치는?", "凭证文件类型": "인증 정보 파일 유형", "创建并添加账号": "생성하고 계정 추가", "创建这个提供商,并同时建立它的第一个账号。": "이 제공자를 만들고 동시에 첫 계정을 생성합니다.", "删除功能不可用(脚本未就绪)": "삭제 기능을 사용할 수 없습니다 (스크립트가 준비되지 않음)", "删除失败:{reason}": "삭제 실패: {reason}", "删除此提供商": "이 제공자 삭제", "千问办公 国内版": "QwenWork(중국판)", "千问办公 国际版": "QwenWork(국제판)", "千问办公{label}暂时无法登录:上游只接受它自己的官方回调地址,不论证码到本机。": "QwenWork {label}은(는) 현재 로그인할 수 없습니다. 업스트림이 자체 공식 콜백 주소만 허용하므로 인가 코드가 이 기기로 전달되지 않습니다.", "原样提交本次流程的完整回调 URL。": "이 흐름의 전체 콜백 URL을 원문 그대로 제출하세요.", "去安装提供商插件包": "제공자 플러그인 팩 설치하기", "及 {n} 个账号": " 및 계정 {n}개", "发送中…": "전송 중…", "发送失败:{message}": "전송 실패: {message}", "发送未确认:登录窗口已弹出,请在弹出的窗口中手动完成登录": "전송 미확인: 로그인 창이 열렸습니다. 열린 창에서 직접 로그인을 완료하세요", "取消失败:{message}": "취소 실패: {message}", "取消安装": "설치 취소", "取消等待": "대기 취소", "只使用此路线签发的 OAuth 凭证;direct SIWC 与 Codex 客户端身份不同。": "이 경로에서 발급된 OAuth 인증 정보만 사용합니다. direct SIWC와 Codex는 클라이언트 ID가 다릅니다.", "只关联真实 CLI 2.1.259+ 的当前订阅;不代登录、不复制或续期客户端凭证。": "정식 CLI 2.1.259+의 현재 구독만 연결합니다. 대신 로그인하거나 클라이언트 인증 정보를 복사 또는 갱신하지 않습니다.", "只拿到 JWT 时填这里;Cookie 里有 token 可留空": "JWT만 있는 경우 여기에 입력하세요. Cookie에 token이 있으면 비워 두세요", "只有「内嵌窗口」能恢复第三方入口:系统浏览器里我们无法改动登录页": "「내장 창」에서만 제3자 로그인 항목을 복원할 수 있습니다: 시스템 브라우저에서는 로그인 페이지를 수정할 수 없습니다", "只看这一类": "이 분류만", "只读引用 Grok Build home/scope/account;每次读取当前登录态,不复制 token,不回退退出前快照,不主动续期;源有效期未知时不作长期有效承诺。": "Grok Build home/scope/account를 읽기 전용으로 참조합니다. 매번 현재 로그인 상태를 읽고 토큰 복사, 로그아웃 전 스냅샷 복원, 갱신을 하지 않습니다. 원본 만료일을 알 수 없으면 장기 유효를 보장하지 않습니다.", "只读引用本机 Kiro CLI/IDE;每次读取校验同一邮箱,不复制 token、不主动续期或回写,失效后由原客户端重登或同步。": "로컬 Kiro CLI/IDE를 읽기 전용으로 참조합니다. 읽을 때마다 동일 이메일을 검증하고 토큰 복사, 갱신, 다시 쓰기를 하지 않습니다. 만료 후에는 원래 클라이언트에서 다시 로그인하거나 동기화하세요.", "只读所选标准文件与账号条目并验证 GitHub/Copilot 身份;只保存引用,不保存令牌副本,不扫描目录、读取 keychain 或运行 CLI。": "선택한 표준 파일과 계정 항목만 읽고 GitHub/Copilot 계정을 검증합니다. 참조만 저장하며 토큰 복사본 저장, 디렉터리 검색, keychain 읽기 또는 CLI 실행을 하지 않습니다.", "只读校验明确选择的本机凭证文件;仅保存引用与稳定身份,不复制或续期原客户端令牌。": "명시적으로 선택한 로컬 인증 정보 파일만 읽기 전용으로 검증합니다. 참조와 안정적인 계정 식별 정보만 저장하며 원래 클라이언트의 토큰을 복사하거나 갱신하지 않습니다.", "只读用户明确指定的文件和账号条目,不自动扫描。": "명시적으로 선택한 파일과 계정 항목만 읽으며 자동 검색하지 않습니다.", "只读验证所选 Gemini CLI 登录态和指定 project 的 Code Assist Standard / Enterprise 资格;不会启动 CLI、续期或复制令牌。": "선택한 Gemini CLI 로그인과 지정한 project의 Code Assist Standard / Enterprise 이용 자격을 읽기 전용으로 검증합니다. CLI를 시작하거나 토큰을 갱신 또는 복사하지 않습니다.", "只读验证本机 Claude Code 当前订阅登录;凭证仍由原 CLI 管理。": "현재 로컬 Claude Code 구독 로그인을 읽기 전용으로 검증합니다. 인증 정보는 계속 원래 CLI가 관리합니다.", "只读验证本机 Kimi 桌面版已有的 Work 登录,不复制令牌;账号可能没有可用模型。": "기존 로컬 Kimi 데스크톱 Work 로그인을 읽기 전용으로 검증하며 토큰을 복사하지 않습니다. 계정에 사용 가능한 모델이 없을 수 있습니다.", "可选": "선택", "可选(cloudaicompanionProject):留空由网关自动发现": "선택 (cloudaicompanionProject): 비워 두면 게이트웨이가 자동으로 찾습니다", "可选,仅远程兑换码激活需要;从官方客户端读取": "선택 사항. 원격 코드 활성화에만 필요하며 공식 클라이언트에서 읽어오세요.", "可选,展示用": "선택, 표시용", "可选,没有则无法自动续期": "선택, 없으면 자동 갱신 불가", "可选,用于生成账号标识": "선택 사항이며 계정 식별자 생성에 사용", "可选,留空使用凭据里的 user_name": "선택, 비워 두면 자격 증명의 user_name 사용", "可选,留空使用账号名或邮箱": "선택 사항. 비워 두면 계정 이름 또는 이메일을 사용합니다", "可选,留空使用账号姓名、邮箱或令牌指纹": "선택, 비워 두면 계정 이름, 이메일 또는 토큰 지문 사용", "可选,留空使用账号昵称或邮箱": "선택, 비워 두면 계정 닉네임 또는 이메일 사용", "可选,留空则用 key 尾号": "선택, 비워 두면 key 끝자리 사용", "可选,留空则用 userId": "선택, 비워 두면 userId 사용", "可选,留空则用上游账号昵称": "선택 사항, 비워 두면 업스트림 계정 닉네임 사용", "可选,留空则用上游返回的账号名或账号 id": "선택, 비워 두면 업스트림이 반환한 계정 이름 또는 계정 id 사용", "可选,留空则用凭证里的账号名": "선택, 비워 두면 자격 증명의 계정 이름 사용", "可选,留空则用文件里的昵称": "선택 사항, 비워 두면 파일의 닉네임 사용", "可选,留空则用登录名或 uid": "선택, 비워 두면 로그인 이름 또는 uid 사용", "可选,留空则用脱敏手机号": "선택, 비워 두면 마스킹된 휴대폰 번호 사용", "可选,留空则用脱敏手机号或 userId": "선택, 비워 두면 마스킹된 휴대폰 번호 또는 userId 사용", "可选,留空则用账号 uk": "선택, 비워 두면 계정 uk 사용", "可选,留空则用账号昵称": "선택 사항. 비워 두면 계정 닉네임을 사용합니다", "可选,留空则用账号昵称或 userId": "선택 사항. 비워 두면 계정 닉네임 또는 userId 사용", "可选,留空则用邮箱或令牌尾号": "선택, 비워 두면 이메일 또는 토큰 끝자리 사용", "可选,留空用「AtomCode」": "선택 사항이며 비워 두면 “AtomCode”", "可选,留空用「OfficeAce 果办」": "선택, 비워 두면 「OfficeAce」 사용", "可选,留空自动生成": "선택, 비워 두면 자동 생성", "可选,留空自动用昵称": "선택, 비워 두면 닉네임 자동 사용", "可选,给这个访客账号起个备注名": "선택 사항. 이 게스트 계정의 메모 이름", "可选,续期时带上": "선택, 갱신 시 함께 전송", "可选,讯飞侧 userid": "선택, iFlytek 측 userid", "可选:发起对话必需,留空则由网关从该账号已有任务里自动发现,发现不到时之后手动补": "선택; 대화 시작에 필요합니다. 비워 두면 게이트웨이가 이 계정의 기존 작업에서 자동으로 찾습니다. 찾지 못하면 나중에 직접 입력하면 됩니다.", "可选:账号邮箱,用于展示与身份识别(换新令牌也能认回同一账号)": "선택; 계정 이메일로, 표시와 신원 식별에 사용됩니다 (새 토큰으로 바꿔도 같은 계정으로 인식됩니다)", "可选;UUID 形态,与凭据同生共死": "선택; UUID 형식이며 자격 증명과 함께 생성되고 함께 사라집니다", "可选;填了才能到期自动续期": "선택; 입력해야 만료 시 자동 갱신할 수 있습니다", "可选;用于去重与展示名(留空时网关会问一次上游)": "선택; 중복 제거와 표시 이름에 사용됩니다 (비워 두면 게이트웨이가 업스트림에 한 번 물어봅니다)", "可选;用于生成账号 id 与展示名": "선택; 계정 id와 표시 이름 생성에 사용됩니다", "可选;纯数字串(上游只收 8–24 位数字)": "선택; 숫자만 입력 (업스트림은 8–24자리 숫자만 허용)", "可领取": "수령 가능", "同一家可以混着放:有 Key 的账号与无鉴权账号各按各的规则走;无需鉴权的账号也能并存多条(各自可配不同的出网代理)": "한 제공사에 API Key 있는 계정과 인증 불필요 계정을 섞어 둘 수 있으며 각각의 규칙으로 라우팅됩니다. 인증 불필요 계정도 여러 개 둘 수 있고 각각 다른 아웃바운드 프록시를 설정할 수 있습니다", "同地址换 anthropic 协议即走它的 Claude 兼容端点。转发必须填 OpenCode Go 的 API Key(订阅制;获取模型清单不需要 Key,但发请求上游会回 401「Missing API key」)": "같은 주소에서 anthropic 프로토콜로 바꾸면 해당 Claude 호환 엔드포인트를 사용합니다. 포워딩에는 OpenCode Go의 API Key가 반드시 필요합니다 (구독제; 모델 목록 조회에는 Key가 필요 없지만, 요청을 보내면 업스트림이 401 「Missing API key」를 반환합니다)", "响应为空": "응답이 비어 있습니다", "商汤日日新的 OpenAI 兼容端点;余额查询走控制台账号密码(见下方「余额查询」一段)": "SenseNova 의 OpenAI 호환 엔드포인트. 잔액 조회는 콘솔 계정 / 비밀번호를 사용합니다 (아래 \"잔액 조회\" 단락 참조)", "回调已提交,仍需等待网关确认账号登录完成。": "콜백을 제출했습니다. 게이트웨이의 계정 로그인 완료 확인을 기다리세요.", "回调未被接受,请重新复制本次登录的完整回调地址": "콜백이 수락되지 않았습니다. 이번 로그인에 대한 전체 콜백 URL을 다시 복사하세요.", "国内版": "중국판", "国内版与**国际版是两套独立的账号与套餐**,凭证与领取的套餐都不通用。": "중국판과 **국제판은 서로 독립된 두 세트의 계정과 플랜**입니다. 자격 증명과 수령한 플랜은 서로 호환되지 않습니다.", "国内版登录页没有 Google / GitHub 入口(它用微信 / 手机号 / 邮箱登录)": "중국판 로그인 페이지에는 Google / GitHub 항목이 없습니다 (WeChat / 휴대폰 번호 / 이메일로 로그인합니다)", "国内版的登录站点是 www.accio-ai.com,与国际版不是同一站。": "중국판의 로그인 사이트는 www.accio-ai.com이며, 국제판과 같은 사이트가 아닙니다.", "国内版(WorkBuddy)": "중국판 (WorkBuddy)", "国内站为 https://api.siliconflow.cn/v1": "중국 사이트는 https://api.siliconflow.cn/v1입니다", "国内站(minimaxi.com);OpenAI 兼容地址为 https://api.minimaxi.com/v1": "중국 사이트 (minimaxi.com); OpenAI 호환 주소는 https://api.minimaxi.com/v1입니다", "国际版": "국제판", "国际版 z.ai 的 Coding 套餐;OpenAI 兼容地址为 https://api.z.ai/api/coding/paas/v4": "국제판 z.ai의 Coding 플랜; OpenAI 호환 주소는 https://api.z.ai/api/coding/paas/v4입니다", "国际版与国内版是**两套独立的账号**(同一账号体系的两个站点),凭证不通用。": "국제판과 중국판은 **서로 독립된 두 세트의 계정**입니다 (같은 계정 체계의 두 사이트). 자격 증명은 호환되지 않습니다.", "国际版与国内版账号体系独立,请填国际版的凭证。未填 refreshToken 无法自动续期。": "국제판과 중국판은 계정 체계가 독립적입니다. 국제판의 자격 증명을 입력하세요. refreshToken을 입력하지 않으면 자동 갱신할 수 없습니다.", "国际版登录页默认只显示邮箱登录,勾选后恢复 Google / GitHub / X 入口": "국제판 로그인 페이지는 기본적으로 이메일 로그인만 표시하며, 체크하면 Google / GitHub / X 항목이 복원됩니다", "国际版的推理站点是 api.z.ai,与国内版不是同一站;套餐也各自独立。": "국제판의 추론 사이트는 api.z.ai이며 중국판과 다른 사이트입니다; 플랜도 각각 독립적입니다.", "国际版(WorkBuddy AI)": "국제판 (WorkBuddy AI)", "国际站 Coding 套餐;OpenAI 兼容地址为 https://api.minimax.io/v1": "국제 사이트 Coding 플랜; OpenAI 호환 주소는 https://api.minimax.io/v1입니다", "在 AtomGit 的 AtomCode 页面登出后取得两项贴进来:accessToken 与 refreshToken。续期令牌建议填写——本家令牌不是 JWT(约 7 天到期,读不到过期时间),没有它账号无法自动续期,到期只能重新登录。": "AtomGit의 AtomCode 페이지에서 accessToken과 refreshToken 두 값을 가져와 붙여넣으세요. 리프레시 토큰 입력을 권장합니다 —— 이 제공자의 토큰은 JWT가 아니며(약 7일 후 만료되고 만료 시각을 읽을 수 없습니다), 없으면 자동 갱신이 불가능해 만료 후 다시 로그인해야 합니다.", "在 DeepSeek 官网完成登录,自动加入账号列表。": "DeepSeek 공식 웹사이트에서 로그인하면 계정이 자동으로 추가됩니다.", "在 GitHub 输入设备码 {code},核对账号与授权权限。设备码过期后需要重新发起登录。": "GitHub에 기기 코드 {code}를 입력하고 계정 및 요청 권한을 확인하세요. 기기 코드가 만료되면 로그인을 다시 시작해야 합니다.", "在 cc-switch 里找到": "cc-switch에서 찾은", "在 chat.deepseek.com 登录本人账号后,从浏览器开发者工具的 Application → Local Storage 复制 userToken 的 value。Cookie 可选,需补充时粘贴该站点请求里的完整 Cookie;登录态失效或要求人机验证时,请回官方网页手动登录后更新。这里不接受收费 API Key。": "chat.deepseek.com에서 본인 계정에 로그인한 후 브라우저 개발자 도구의 Application → Local Storage에서 userToken의 value를 복사하세요. Cookie는 선택 사항입니다. 필요한 경우 해당 사이트 요청의 전체 Cookie 헤더를 붙여넣으세요. 세션이 만료되거나 사람 확인이 필요한 경우 공식 웹사이트에서 직접 로그인한 후 인증 정보를 갱신하세요. 유료 API Key는 사용할 수 없습니다.", "在 web.tabbit.ai 登录后,从开发者工具 Application → Cookies 复制 token 与 user_id,或直接粘贴该站点请求的 Copy as cURL 整段。国际站没有可复刻的网页授权回调,手机号登录也处在上游灰度里,所以只能导入已有登录态。登录态有效期约 7 天,过期后重新导入。Cookie 与 JWT 至少填一项。": "web.tabbit.ai에 로그인한 뒤 개발자 도구의 Application → Cookies에서 token과 user_id를 복사하거나 해당 사이트 요청의 Copy as cURL 전체를 붙여넣으세요. 국제 사이트는 재현 가능한 웹 인증 콜백이 없고 휴대폰 로그인도 업스트림 점진 배포 중이라 기존 로그인 상태만 가져올 수 있습니다. 로그인 상태는 약 7일간 유효하며 만료 후 다시 가져와야 합니다. Cookie와 JWT 중 하나 이상을 입력하세요.", "在 web.tabbit.com 登录后,从开发者工具 Application → Cookies 复制 token 与 user_id,或直接粘贴该站点请求的 Copy as cURL 整段。登录态有效期约 7 天,上游没有续期接口,过期后重新导入即可。Cookie 与 JWT 至少填一项。": "web.tabbit.com에 로그인한 뒤 개발자 도구의 Application → Cookies에서 token과 user_id를 복사하거나 해당 사이트 요청의 Copy as cURL 전체를 붙여넣으세요. 로그인 상태는 약 7일간 유효하며 업스트림에 갱신 엔드포인트가 없습니다. 만료 후 다시 가져오면 됩니다. Cookie와 JWT 중 하나 이상을 입력하세요.", "在内嵌窗口里完成官方登录,成功后自动加入账号列表。": "내장 창에서 공식 로그인을 완료하면 성공 시 자동으로 계정 목록에 추가됩니다.", "在{label}的 Qoder 账号设置 → Integrations 生成 PAT(别填 Google / GitHub 的令牌)。两个地区的账号与凭证不通用。": "{label}의 Qoder 계정 설정 → Integrations에서 PAT를 생성하세요 (Google / GitHub 토큰을 입력하지 마세요). 두 지역의 계정과 자격 증명은 호환되지 않습니다.", "在应用内嵌窗口完成 WPS 登录,登录凭据仅交给原插件校验并保存到当前网关。": "앱 내장 창에서 WPS에 로그인합니다. 인증 정보는 원본 플러그인에만 전달하여 검증한 뒤 현재 게이트웨이에 저장합니다.", "在所选站点的 MonkeyCode 官方页面完成登录和验证码,成功后自动读取登录态并加入账号列表,无需手动复制 Cookie。": "선택한 지역의 MonkeyCode 공식 페이지에서 로그인과 인증을 완료하세요. 로그인 세션을 자동으로 가져와 계정 목록에 추가하므로 Cookie를 직접 복사할 필요가 없습니다.", "在打开的官方授权页里用微信扫码登录(页面会直接显示二维码)。扫码成功后自动加入账号列表。": "열린 공식 인증 페이지에서 위챗 QR 코드를 스캔하여 로그인하세요(페이지에 QR 코드가 바로 표시됩니다). 스캔에 성공하면 계정이 자동으로 목록에 추가됩니다.", "在打开的官方登录页里完成登录,成功后自动加入账号列表。": "열린 공식 로그인 페이지에서 로그인하면 성공 후 자동으로 계정 목록에 추가됩니다.", "在打开的登录页里用百度账号登录 KukuAI 主站(手机验证码 / 扫码均可),登录成功后自动加入账号列表。网关会向百度换发 KukuAI 业务会话令牌(依赖本机已安装库库AI 客户端)。": "열린 로그인 페이지에서 Baidu 계정으로 KukuAI 본사이트에 로그인하세요(휴대폰 인증번호 / QR 스캔 모두 가능). 성공하면 자동으로 계정 목록에 추가됩니다. 게이트웨이가 Baidu와 KukuAI 업무 세션 토큰을 교환합니다(이 PC에 KukuAI 클라이언트가 설치되어 있어야 함).", "在打开的登录页里登录 Google 账号(Antigravity 的授权页),授权完成后自动加入账号列表。": "열린 로그인 페이지(Antigravity 인증 페이지)에서 Google 계정으로 로그인하면 인증 완료 후 자동으로 계정 목록에 추가됩니다.", "在打开的窗口里用百度账号登录 KukuAI 主站(手机验证码 / 扫码均可),登录成功后自动加入账号列表。网关会向百度换发 KukuAI 业务会话令牌(依赖本机已安装库库AI 客户端)。": "열린 창에서 Baidu 계정으로 KukuAI 메인 사이트에 로그인하세요 (SMS 인증 코드 / QR 스캔 모두 가능). 로그인에 성공하면 자동으로 계정 목록에 추가됩니다. 게이트웨이는 Baidu에서 KukuAI 비즈니스 세션 토큰을 교환 발급받습니다 (이 컴퓨터에 KukuAI 클라이언트가 설치되어 있어야 합니다).", "在打开的窗口里登录 Google 账号(Antigravity 的授权页),授权完成后自动加入账号列表。": "열린 창에서 Google 계정으로 로그인하세요(Antigravity의 인가 페이지). 인가가 완료되면 자동으로 계정 목록에 추가됩니다.", "在打开的页面里登录千问办公{label}({site})的账号,登录完成后会自动加入列表。两版的账号与凭证不通用。": "열린 페이지에서 QwenWork {label}({site}) 계정으로 로그인하세요. 완료하면 자동으로 목록에 추가됩니다. 두 에디션의 계정과 자격 증명은 공용되지 않습니다.", "在浏览器中打开登录页": "브라우저에서 로그인 페이지 열기", "在系统浏览器授权指定 project 的 Code Assist Standard / Enterprise;账号与 project 仍须通过真实预检。": "시스템 브라우저에서 지정한 project의 Code Assist Standard / Enterprise를 승인합니다. 계정과 project는 실제 사전 검증을 통과해야 합니다.", "在豆包官方页面完成登录,窗口会自动读取完整 Cookie 并加入账号列表;不需要安装豆包工作客户端。": "공식 Doubao 페이지에서 로그인하면 창이 전체 Cookie를 읽어 계정을 추가합니다. Doubao Work 클라이언트는 설치하지 않아도 됩니다.", "地区": "지역", "填写信息后发起授权,进度与失败原因会显示在这里。": "필요한 정보를 입력하고 인증을 시작하세요. 진행 상황과 실패 사유는 여기에 표시됩니다.", "填写具体站点名称;模板类型不会作为站点身份": "이 사이트의 이름을 입력하세요. 템플릿 유형은 사이트를 식별하는 데 사용되지 않습니다", "填写凭证": "자격 증명 입력", "填写凭证添加": "자격 증명 입력 후 추가", "备注名": "라벨명", "套餐": "플랜", "如何获取": "발급 방법", "如官方页面跳回的是网关本机地址,请在桌面面板完成回调;手机端不会猜测未声明的回调输入。": "공식 페이지가 게이트웨이의 로컬 주소로 돌아오면 데스크톱 패널에서 콜백을 완료하세요. 모바일 앱은 선언되지 않은 콜백 입력을 추측하지 않습니다.", "如官方页面跳回的是网关本机地址,请粘贴完整回调;没有授权页的本机方式仍需等待网关确认。": "공식 페이지가 게이트웨이의 로컬 주소로 돌아오면 전체 콜백 URL을 붙여넣으세요. 인증 페이지가 없는 로컬 방식도 게이트웨이의 확인을 기다려야 합니다.", "如:公司中转站、个人备用站": "예: 회사 게이트웨이, 개인 백업", "如:智谱 GLM": "예: Zhipu GLM", "安装在运行网关的机器,不是当前手机或浏览器所在设备。由 Agent2API 独立管理,不覆盖原有安装;仅点击按钮后下载。": "현재 휴대폰이나 브라우저 기기가 아닌 게이트웨이 실행 컴퓨터에 설치합니다. Agent2API가 별도로 관리하며 기존 설치를 덮어쓰지 않습니다. 버튼을 눌러야 다운로드합니다.", "安装已取消,原有版本未更改。": "설치가 취소되었습니다. 기존 버전은 변경되지 않았습니다.", "安装操作未得到有效确认,请重新检查状态;不会自动重复安装。": "설치 요청이 확인되지 않았습니다. 상태를 다시 확인하세요. 설치를 자동으로 반복하지 않습니다.", "完成官方登录后粘贴包含 state 的完整 loopback 回调地址。": "공식 로그인을 완료한 뒤 state가 포함된 전체 loopback 콜백 URL을 붙여넣으세요.", "完成登录后自动加入账号列表,昵称取自上游。": "로그인을 완료하면 자동으로 계정 목록에 추가되며, 닉네임은 업스트림에서 가져옵니다.", "完整 JSON 已包含时无需填写": "전체 JSON에 포함되어 있으면 입력 불필요", "完整回调地址(原样提交)": "전체 콜백 URL(원문 그대로 제출)", "官方 PKCE 登录;浏览器登录态有有效期,失效后需重登,不提供维护续期。": "공식 PKCE 로그인입니다. 브라우저 로그인 상태는 만료되며 만료 후 다시 로그인해야 합니다. 유지 관리 갱신은 제공하지 않습니다.", "官方客户端凭证目录:Windows 是 C:\\Users\\<你的用户名>\\AppData\\Local\\CodeBuddyExtension\\Data\\Public\\auth,macOS 是 ~/Library/Application Support/CodeBuddyExtension/Data/Public/auth": "공식 클라이언트 자격 증명 디렉터리: Windows는 C:\\Users\\<사용자명>\\AppData\\Local\\CodeBuddyExtension\\Data\\Public\\auth, macOS는 ~/Library/Application Support/CodeBuddyExtension/Data/Public/auth", "官方已确认到账": "공식 적립 확인 완료", "官方浏览器登录": "공식 브라우저 로그인", "官方浏览器登录(粘贴完整回调)": "공식 브라우저 로그인(전체 콜백 붙여넣기)", "官方网页正常登录后的 Cookie;风控时请手动更新": "공식 웹사이트에 정상 로그인한 후의 Cookie이며 보안 확인이 필요하면 직접 갱신하세요", "客户端版本": "클라이언트 버전", "宿主已持久保存的稳定 hostId(urn:uuid,不能每次生成)": "호스트가 이미 영구 저장한 안정적인 hostId(urn:uuid, 매번 새로 생성하면 안 됨)", "导入": "가져오기", "导入 QuWork 本机登录态": "로컬 QuWork 로그인 가져오기", "导入 kiro-cli / Kiro IDE 登录态": "kiro-cli / Kiro IDE 로그인 상태 가져오기", "导入中…": "가져오는 중…", "导入凭证文件": "자격 증명 파일 가져오기", "导入失败": "가져오기 실패", "导入失败:{reason}": "가져오기 실패: {reason}", "导入所选": "선택 항목 가져오기", "导入所选({n})": "선택 항목 가져오기({n})", "导入桌面端登录态": "데스크톱 로그인 상태 가져오기", "导入用户指定的本地 Copilot 凭证": "사용자가 선택한 로컬 Copilot 인증 정보 가져오기", "将在新标签页中打开授权页;完成后自动加入账号列表。": "새 탭에서 인증 페이지를 엽니다. 완료하면 자동으로 계정 목록에 추가됩니다.", "将在新标签页中打开授权页;完成后自动加入账号列表。若页面跳回本机地址后账号没有出现,按提示把地址栏里的完整回调地址粘贴回来即可。": "새 탭에서 인증 페이지를 엽니다. 완료하면 자동으로 계정 목록에 추가됩니다. 로컬 주소로 돌아온 뒤에도 계정이 나타나지 않으면 안내에 따라 주소창의 전체 콜백 URL을 붙여넣으세요.", "将打开内嵌窗口;授权完成后自动加入账号列表。关掉窗口即取消等待。授权页最后可能提示无法打开 zcode:// 链接,这是正常的 —— 结果已由服务端记下": "내장 창이 열립니다; 인가가 완료되면 자동으로 계정 목록에 추가됩니다. 창을 닫으면 대기가 취소됩니다. 인가 페이지 마지막에 zcode:// 링크를 열 수 없다는 안내가 나올 수 있는데, 정상입니다 — 결과는 이미 서버 측에 기록되었습니다", "将打开内嵌窗口;授权完成后自动加入账号列表。远程面板可粘贴回调地址。关掉窗口即取消等待。链接 5 分钟内有效,超时或未点就会作废(可重新发起)": "내장 창이 열립니다; 인가가 완료되면 자동으로 계정 목록에 추가됩니다. 원격 패널에서는 콜백 주소를 붙여넣을 수 있습니다. 창을 닫으면 대기가 취소됩니다. 링크는 5분간 유효하며, 시간이 초과되거나 클릭하지 않으면 무효가 됩니다 (다시 시작할 수 있습니다)", "将打开内嵌窗口;登录完成后自动加入账号列表。关掉窗口即取消等待": "내장 창이 열립니다; 로그인이 완료되면 자동으로 계정 목록에 추가됩니다. 창을 닫으면 대기가 취소됩니다", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的 Trae 账号);同机完成后自动加入,Docker / 远程面板按提示粘贴地址栏回调地址。": "시스템 기본 브라우저로 인가 페이지를 엽니다 (브라우저에 로그인된 Trae 계정을 재사용합니다); 같은 컴퓨터에서는 완료 시 자동으로 추가되며, Docker / 원격 패널에서는 안내에 따라 주소 표시줄의 콜백 주소를 붙여넣으세요.", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的 ZCode 账号);授权完成后自动加入账号列表。页面最后可能提示无法打开 zcode:// 链接,属正常现象": "시스템 기본 브라우저로 인가 페이지를 엽니다 (브라우저에 로그인된 ZCode 계정을 재사용합니다); 인가가 완료되면 자동으로 계정 목록에 추가됩니다. 페이지 마지막에 zcode:// 링크를 열 수 없다는 안내가 나올 수 있는데 정상입니다", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的华为云账号);授权码由网关轮询云端取回,与浏览器跑在哪台机器无关,完成后自动加入账号列表": "시스템 기본 브라우저로 인가 페이지를 엽니다 (브라우저에 로그인된 Huawei Cloud 계정을 재사용합니다); 인가 코드는 게이트웨이가 클라우드를 폴링해 가져오므로 브라우저가 어느 컴퓨터에서 실행되는지는 상관없습니다. 완료하면 자동으로 계정 목록에 추가됩니다", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的华为云账号);浏览器与网关不在同一台机器时,按上方说明把最终回调地址粘贴回面板": "시스템 기본 브라우저로 인가 페이지를 엽니다 (브라우저에 로그인된 Huawei Cloud 계정을 재사용합니다); 브라우저와 게이트웨이가 같은 컴퓨터에 있지 않다면 위 설명대로 최종 콜백 주소를 패널에 다시 붙여넣으세요", "将用系统默认浏览器打开登录页(会复用浏览器里已登录的 Accio 账号);完成登录后自动加入账号列表,关掉弹窗即取消等待": "시스템 기본 브라우저로 로그인 페이지를 엽니다 (브라우저에 로그인된 Accio 계정을 재사용합니다); 로그인을 완료하면 자동으로 계정 목록에 추가되며, 팝업을 닫으면 대기가 취소됩니다", "将用系统默认浏览器打开登录页(会复用浏览器里已登录的 LobsterAI 账号);完成登录后自动加入账号列表,关掉弹窗即取消等待": "시스템 기본 브라우저로 로그인 페이지를 엽니다 (브라우저에 로그인된 LobsterAI 계정을 재사용합니다); 로그인을 완료하면 자동으로 계정 목록에 추가되며, 팝업을 닫으면 대기가 취소됩니다", "小米 MiMo Token Plan 套餐(新加坡站)": "小米 MiMo Token Plan 플랜 (싱가포르 사이트)", "小米 MiMo 按量 API;使用按量 API Key,不要混用 Token Plan 套餐 Key": "Xiaomi MiMo 종량제 API입니다. Token Plan 구독 Key와 혼용하지 말고 종량제 API Key를 사용하세요", "小米 MiMo(按量)": "Xiaomi MiMo(종량제)", "已到账": "적립 완료", "已取消登录等待": "로그인 대기를 취소했습니다", "已取消领取": "수령을 취소했습니다", "已取消验证码": "인증 코드를 취소했습니다", "已填写手机号,正在发送验证码…": "휴대폰 번호 입력 완료, 인증 코드 전송 중…", "已声明无需鉴权:账号会被正常选路,出网时不带任何鉴权头": "인증 필요 없음으로 선언됨: 계정이 정상적으로 라우팅되며, 외부로 나갈 때 인증 헤더를 전혀 보내지 않습니다", "已完成验证,继续发送": "인증 완료, 다시 보내기", "已导入 {ok} 个,失败 {fail} 个(失败项已标注在列表里)": "가져오기 성공 {ok}개, 실패 {fail}개 (실패 항목은 목록에 표시해 두었습니다)", "已建 API": "설정된 API", "已建过 · {n} 个账号,点击继续添加": "이미 생성됨 · 계정 {n}개, 클릭하여 추가", "已建过,点击继续添加账号": "이미 생성됨, 클릭하여 계정 추가", "已打开官方登录页,请在窗口中完成登录…": "공식 로그인 페이지를 열었습니다. 창에서 로그인을 완료하세요…", "已收到授权回调,正在完成登录…": "인증 콜백을 받았습니다. 로그인을 완료하는 중…", "已收到浏览器授权,正在获取账号凭据…": "브라우저 인증을 받았습니다. 계정 인증 정보를 가져오는 중…", "已有 API Key(留空则在浏览器登录后自动创建)": "기존 API Key(비워 두면 브라우저 로그인 후 자동 생성)", "已有验证码流程正在进行,请先完成或取消": "진행 중인 인증이 있습니다. 먼저 완료하거나 취소하세요.", "已检测到本机客户端": "로컬 클라이언트 감지됨", "已点发送,等待短信…": "전송을 눌렀습니다. SMS 대기 중…", "已用系统默认浏览器打开登录页,请在浏览器中完成登录…": "시스템 기본 브라우저로 로그인 페이지를 열었습니다. 브라우저에서 로그인을 완료하세요…", "已读取 QuWork 本机登录态,正在添加账号。": "QuWork 로컬 로그인을 읽었습니다. 계정을 추가하는 중입니다.", "已领取,等官方确认": "수령 완료, 공식 확인 대기 중", "引用本机 Gemini CLI oauth_creds.json(只读)": "로컬 Gemini CLI oauth_creds.json 참조(읽기 전용)", "当前分类里没有「{keyword}」,其它分类有 {n} 个匹配": "「{keyword}」는 이 분류에 없지만 다른 분류에 {n}개 있습니다", "当前壳版本不支持 AutoClaw 网页登录,请更新应用": "현재 앱 버전에서는 AutoClaw 웹 로그인을 지원하지 않습니다. 앱을 업데이트하세요", "当前没有可领取的套餐(活动尚未开始)": "현재 수령 가능한 플랜이 없습니다 (이벤트가 아직 시작되지 않았습니다)", "当前版本:{version}": "현재 버전: {version}", "当前环境不支持领取(桥接方法缺失)": "현재 환경에서는 수령을 지원하지 않습니다 (브리지 메서드 없음)", "必填,CatPaw 账号标识": "필수, CatPaw 계정 식별자", "恢复 Google / GitHub 入口": "Google / GitHub 항목 복원", "所选代理会保存到账号设置,后续请求继续使用。": "선택한 프록시는 계정 설정에 저장되며 이후 요청에도 사용됩니다.", "手动代理": "수동 프록시", "手动导入 GitHub OAuth / GitHub 令牌": "GitHub OAuth / GitHub 토큰 수동 입력", "手机号": "휴대폰 번호", "手机验证码登录": "SMS 인증 코드 로그인", "打开 LobsterAI(有道龙虾)的官方登录页(lobsterai.youdao.com)并用你的 LobsterAI 账号登录:登录成功后官方页面会跳回本机并自动加入账号列表 —— 回调落在网关自己的端口上,所以浏览器要与网关在同一台机器上;授权码只在本机传给网关,界面不显示明文 token。": "공식 LobsterAI 로그인 페이지(lobsterai.youdao.com)를 열고 LobsterAI 계정으로 로그인하세요: 로그인이 완료되면 공식 페이지가 이 컴퓨터로 되돌아오고 계정이 자동으로 목록에 추가됩니다 —— 콜백은 게이트웨이 자체 포트로 들어오므로 브라우저는 게이트웨이와 같은 컴퓨터에서 열어야 합니다. 인증 코드는 이 컴퓨터에서만 게이트웨이로 전달되며 화면에 평문 토큰은 표시되지 않습니다.", "打开 Trae 的官方授权页(trae.cn)并用你的 Trae 账号登录:授权完成后官方页面会跳回本机的一个临时端口;同机部署自动接收,Docker / 远程面板请按提示复制地址栏回调地址。": "Trae의 공식 인가 페이지(trae.cn)를 열고 Trae 계정으로 로그인하세요: 인가가 완료되면 공식 페이지가 이 컴퓨터의 임시 포트로 되돌아옵니다; 같은 컴퓨터 배포에서는 자동으로 수신하며, Docker / 원격 패널에서는 안내에 따라 주소 표시줄의 콜백 주소를 복사하세요.", "打开 Accio {label}的官方登录页({site})并用你的 Accio 账号登录:登录成功后官方页面会跳回本机;同机自动完成,Docker / 远程面板按提示粘贴回调地址即可(授权码只在本机传给网关,界面不显示明文 token)。": "Accio {label}의 공식 로그인 페이지({site})를 열고 Accio 계정으로 로그인하세요: 로그인에 성공하면 공식 페이지가 이 컴퓨터로 되돌아옵니다; 같은 컴퓨터에서는 자동으로 완료되며, Docker / 원격 패널에서는 안내에 따라 콜백 주소를 붙여넣으면 됩니다 (인가 코드는 이 컴퓨터에서만 게이트웨이에 전달되며, 화면에 평문 token이 표시되지 않습니다).", "打开 Accio {label}登录页": "Accio {label} 로그인 페이지 열기", "打开 Antigravity 网页登录": "Antigravity 웹 로그인 열기", "打开 AtomGit 授权页登录:登录完成后网关会自动轮询代理取回令牌并加入账号列表(授权回调由代理终结,不回到本机,因此无需手工回填回调地址)。": "AtomGit 승인 페이지를 열고 로그인하세요. 완료되면 게이트웨이가 자동으로 브로커를 폴링해 토큰을 가져오고 계정을 추가합니다(콜백은 브로커에서 종료되며 이 기기로 돌아오지 않으므로 콜백 URL을 직접 입력할 필요가 없습니다).", "打开 CatPaw 网页登录": "CatPaw 웹 로그인 열기", "打开 Cline 授权页": "Cline 인가 페이지 열기", "打开 CodeArts 授权页": "CodeArts 인가 페이지 열기", "打开 LobsterAI 登录页": "LobsterAI 로그인 페이지 열기", "打开 Qoder 网页登录": "Qoder 웹 로그인 열기", "打开 Trae 授权页": "Trae 인가 페이지 열기", "打开 ZCode {label}的官方授权页并用你的账号登录。授权结果由 ZCode 服务端记录,网关在后台自动取回凭证并加入账号列表。": "ZCode {label}의 공식 인가 페이지를 열고 계정으로 로그인하세요. 인가 결과는 ZCode 서버에 기록되며, 게이트웨이가 백그라운드에서 자격 증명을 자동으로 가져와 계정 목록에 추가합니다.", "打开 ZCode {label}授权页": "ZCode {label} 인가 페이지 열기", "打开下一步授权页": "다음 인증 페이지 열기", "打开人机验证": "사람 인증 열기", "打开千问办公网页登录": "QwenWork 웹 로그인 열기", "打开华为云 CodeArts 的官方授权页登录:登录完成后官方页面会把浏览器带回网关自己的 /oauth/callback,网关用一次性授权码换取临时凭据并加入账号列表。
    网关跑在另一台机器上时,网页端会提示把地址栏中的最终回调地址直接粘贴回面板。": "Huawei Cloud CodeArts의 공식 인가 페이지를 열어 로그인하세요: 로그인이 완료되면 공식 페이지가 브라우저를 게이트웨이 자체의 /oauth/callback으로 되돌립니다. 게이트웨이는 일회성 인가 코드를 임시 자격 증명으로 교환하고 계정 목록에 추가합니다.
    게이트웨이가 다른 컴퓨터에서 실행 중이면 웹 UI에서 주소 표시줄의 최종 콜백 주소를 패널에 그대로 붙여넣으라는 안내가 표시됩니다.", "打开华为云授权页登录:登录完成后网关会自动轮询云端取回授权码并加入账号列表(不需要装 OfficeAce 桌面端,也无需手工回填回调地址)。": "Huawei Cloud 인가 페이지를 열고 로그인하세요: 완료되면 게이트웨이가 클라우드를 폴링해 인가 코드를 가져와 계정 목록에 추가합니다 (OfficeAce 데스크톱 앱이 필요 없고, 콜백 URL을 수동으로 다시 붙여넣을 필요도 없습니다).", "打开官方授权页": "공식 인증 페이지 열기", "打开官方授权页完成设备码授权,登录的是{label}({site})的账号。": "공식 인가 페이지를 열어 기기 코드 인가를 완료하세요. 로그인되는 계정은 {label} ({site}) 계정입니다.", "打开授权页": "인가 페이지 열기", "打开授权页完成确认,账号自动加入 {label}{note}": "인가 페이지를 열어 확인을 완료하면 계정이 {label}에 자동으로 추가됩니다{note}", "打开方式": "여는 방식", "打开网页登录": "웹 로그인 열기", "按已验证邮箱只读引用 cursor-agent 当前登录态;每次操作重读 keychain/auth.json,不复制 token、不主动运行 CLI 续期,退出或失效后需在原客户端重登。": "검증된 이메일에 고정하여 현재 cursor-agent 로그인을 읽기 전용으로 참조합니다. 작업마다 keychain/auth.json을 다시 읽고 토큰 복사나 CLI 갱신을 실행하지 않습니다. 로그아웃 또는 만료 후에는 원래 클라이언트에서 다시 로그인하세요.", "授权只读引用,不复制、不修改、不续期本机凭证": "로컬 인증 정보를 복사, 수정 또는 갱신하지 않는 읽기 전용 참조 허용", "授权回调提交失败;请检查输入并重试,登录仍在等待。": "인증 콜백 제출에 실패했습니다. 입력을 확인하고 다시 시도하세요. 로그인은 계속 대기 중입니다.", "授权每次请求只读所选文件,固定当前账号与工作区?": "현재 계정과 작업 공간에 고정하여 각 요청에서 선택한 파일의 읽기 전용 참조를 허용할까요?", "授权码或令牌(原样提交)": "인증 코드 또는 토큰(원문 그대로 제출)", "授权读取所选条目": "선택한 항목 읽기 허용", "授权页、换证与取账号信息都走这条线路。无头服务器上没有系统代理,这里不选就走直连(多数网络里到不了 Google)。": "인증 페이지, 코드 교환, 계정 정보 조회가 모두 이 경로를 사용합니다. 헤드리스 서버에는 시스템 프록시가 없으므로 선택하지 않으면 직접 연결됩니다(대부분의 네트워크에서는 Google에 도달할 수 없습니다).", "探测失败:{message}": "탐지 실패: {message}", "接入一个兼容上游": "호환 업스트림 연결", "控制台 uaa-token(粘贴令牌值或完整的 uaa-token=… Cookie 项)": "콘솔 uaa-token(토큰 값 또는 전체 uaa-token=… Cookie 항목 붙여넣기)", "推荐": "권장", "提交中…": "제출 중…", "提交授权回调": "인증 콜백 제출", "提供商仅在已启用且加载后出现。登录与本机引用均作用在所连接网关,不是手机。": "제공업체는 활성화 및 로드 후에만 표시됩니다. 로그인과 로컬 참조는 휴대폰이 아닌 연결된 게이트웨이에 적용됩니다.", "插件专用 Chrome 登录(自动读取凭据)": "플러그인 전용 Chrome 로그인(인증 정보 자동 수집)", "插件会在网关电脑上启动独立浏览器并读取登录结果,不使用系统默认浏览器。": "플러그인이 게이트웨이 컴퓨터에서 별도 브라우저를 열고 로그인 결과를 읽습니다. 시스템 기본 브라우저는 사용하지 않습니다.", "搜索提供商": "제공자 검색", "搜索提供商…": "제공자 검색…", "整份粘贴官方插件 / CLIProxyAPI 落盘的凭据 JSON(形如 {\"codearts_provider_credential\":{…}},铺平的也行)。
    必填:access_key_id、secret_access_key、security_token。要能自动续期,必须连 refresh_token 与 oauth_context 一起粘 —— 临时凭据约一小时到期,缺这半块就续不回来,只能重新登录。": "공식 플러그인 / CLIProxyAPI가 디스크에 기록한 자격 증명 JSON을 통째로 붙여넣으세요 (형식: {\"codearts_provider_credential\":{…}}, 평탄화된 형태도 가능).
    필수: access_key_id, secret_access_key, security_token.자동 갱신을 원하면 refresh_token과 oauth_context도 함께 붙여넣어야 합니다 — 임시 자격 증명은 약 1시간 후 만료되며, 이 부분이 없으면 갱신할 수 없어 다시 로그인해야 합니다.", "文件是{edition}凭证,已按该版本导入": "파일은 {edition} 자격 증명이며 해당 버전으로 가져왔습니다", "新增独立登录": "새 독립 로그인", "新建自定义提供商": "커스텀 제공자 새로 만들기", "新网关确认代理同次保存后不再重复提交;旧网关使用兼容保存并提示核查,失败不会撤销已添加的账号。": "새 게이트웨이가 계정과 프록시의 동시 저장을 확인하면 다시 제출하지 않습니다. 이전 게이트웨이는 호환 저장과 확인 경고를 사용하며 실패해도 추가된 계정을 삭제하지 않습니다.", "方案:{label}": "방식: {label}", "无需手动复制令牌,验证码在官方页面完成。": "토큰을 직접 복사할 필요가 없습니다. 인증 코드는 공식 페이지에서 입력하세요.", "旧网关未确认代理同次保存,已使用兼容接口保存;请在账号设置中确认代理选择。": "이전 게이트웨이가 프록시 동시 저장을 확인하지 않아 호환 API로 저장했습니다. 계정 설정에서 프록시 선택을 확인하세요.", "明文 JWT 或 auth.json 里的 enc: 加密值(自动解密)": "평문 JWT 또는 auth.json의 enc: 암호화 값 (자동 복호화)", "明文 JWT(国际版账号的 access token)": "평문 JWT (국제판 계정의 access token)", "明确选择文件与只读授权;不修改或续期原客户端登录态。": "파일과 읽기 전용 권한을 명시적으로 선택하세요. 원래 클라이언트 로그인 상태는 수정하거나 갱신하지 않습니다.", "明确选择文件内的账号条目键名": "파일 내 정확한 계정 항목 키 이름 선택", "明确选择标准凭证文件的完整绝对路径": "표준 인증 정보 파일의 전체 절대 경로 선택", "是否授权只读取此文件和所选账号凭证?": "이 파일과 선택한 계정 인증 정보의 읽기 전용 접근을 허용할까요?", "显示凭证": "인증 정보 표시", "智谱 bigmodel.cn 的 Coding 套餐,Key 在 open.bigmodel.cn/usercenter/apikeys": "Zhipu bigmodel.cn의 Coding 플랜, Key는 open.bigmodel.cn/usercenter/apikeys에서 발급합니다", "暂不支持自动安装": "자동 설치 미지원", "暂时无法检查官方最新版;已安装且满足最低要求的客户端仍可使用。": "현재 공식 최신 버전을 확인할 수 없습니다. 설치된 클라이언트가 최소 요구 사항을 충족하면 계속 사용할 수 있습니다.", "暂时无法登录": "지금은 로그인할 수 없음", "有可用更新": "업데이트 가능", "未开启客户端调试端口时,请使用网页登录或粘贴 Cookie。": "클라이언트 디버깅 포트를 열지 않았다면 웹 로그인 또는 Cookie 붙여넣기를 사용하세요.", "未知错误": "알 수 없는 오류", "未能获取授权地址,请重试": "인가 주소를 가져오지 못했습니다. 다시 시도하세요", "未能读取 cc-switch 数据": "cc-switch 데이터를 읽지 못했습니다", "未领取成功": "수령하지 못했습니다", "本体订阅未返回动态登录方式(501);不会猜测导入接口或显示插件手动凭证入口。请更新网关后重试。": "본체 구독이 동적 로그인 방식을 반환하지 않았습니다(501). 가져오기 API를 추측하거나 플러그인용 수동 인증 정보 입력을 표시하지 않습니다. 게이트웨이를 업데이트한 후 다시 시도하세요.", "本地 Ollama、OpenCode Zen 免费档这类上游要勾上,否则账号不可用": "로컬 Ollama, OpenCode Zen 무료 등급 같은 업스트림에는 체크해야 하며, 그렇지 않으면 계정을 사용할 수 없습니다", "本家有两个**互不替代**的凭证,按你要用的功能填,至少填一个:编码套餐 API Key 用于转发推理(打 {site})与查询窗口限额(每 N 小时 / 每周的剩余比例);jwt 用于领取套餐与查询余额(打 zcode.z.ai 的 billing 网关,官方叫 Coding Plan JWT,是一串三段点分的字符串)。余额两把都能查、但读到的东西不同:jwt 读到余额桶与套餐到期,API Key 读到窗口限额;而领取只认 jwt、转发只认 API Key。请填写 {label}账号的凭证 —— {plan}(最容易拿到的办法:直接用上方的「网页登录」—— 它会替你把这个 API Key 换好,两个凭证一起拿到。)": "이 제공자에는 **서로 대체할 수 없는** 자격 증명이 두 개 있습니다. 사용할 기능에 따라 입력하고 최소 하나는 입력하세요: 코딩 플랜 API Key는 추론 포워딩({site} 호출)과 윈도우 할당량 조회(N시간마다 / 주간 잔여 비율)에 사용하고, jwt는 플랜 수령과 잔액 조회에 사용합니다(zcode.z.ai의 billing 게이트웨이 호출, 공식 명칭 Coding Plan JWT, 3단 점 구분 문자열). 잔액은 둘 다 조회할 수 있지만 읽어 오는 내용이 다릅니다: jwt는 잔액 버킷과 플랜 만료를, API Key는 윈도우 할당량을 읽습니다. 수령은 jwt만, 포워딩은 API Key만 인정합니다. {label} 계정의 자격 증명을 입력하세요 — {plan} (가장 쉽게 얻는 방법: 위의 「웹 로그인」을 바로 사용하세요 — 이 API Key를 대신 교환해 두 자격 증명을 함께 받아 줍니다.)", "本机 Ollama 的 OpenAI 兼容端点,无需 API Key(默认已勾上「该上游无需鉴权」,鉴权头一个都不发)": "이 컴퓨터의 Ollama OpenAI 호환 엔드포인트, API Key 불필요 (기본적으로 「이 업스트림은 인증이 필요하지 않음」이 체크되어 있고, 인증 헤더를 전혀 보내지 않습니다)", "本机 auth.json(只读引用)": "로컬 auth.json(읽기 전용 참조)", "本机凭证已校验。宿主仅保存文件引用与稳定身份,每次请求重新读取。": "로컬 인증 정보를 검증했습니다. 호스트는 파일 참조와 안정적인 계정 식별 정보만 저장하고 요청마다 다시 읽습니다.", "本机部署会自动完成登录;服务器或 Docker 部署时,若授权后跳到无法访问的 localhost 或 127.0.0.1 页面,请把地址栏中的完整回调地址粘贴回来。AWS 登录如需继续授权,请打开下一步授权页,完成后再次回填。请勿修改地址或把回调链接发给他人。": "로컬 배포에서는 로그인이 자동으로 완료됩니다. 서버 또는 Docker 배포에서 인증 후 localhost나 127.0.0.1 페이지가 열리지 않으면 주소창의 전체 콜백 URL을 여기에 붙여넣으세요. AWS에서 추가 인증이 필요하면 다음 인증 페이지를 열고 완료 후 새 URL을 붙여넣으세요. 주소를 수정하거나 다른 사람과 공유하지 마세요.", "本次未确认到账": "이번에는 적립이 확인되지 않았습니다", "条可导入": "건을 가져올 수 있습니다", "条配置,其中": "건의 설정 중", "桌面运行时不可用(Tauri 未初始化)": "데스크톱 런타임을 사용할 수 없습니다 (Tauri 미초기화)", "检测失败": "확인 실패", "模型网关基址": "모델 게이트웨이 기본 주소", "正在准备 AWS 授权…": "AWS 인증 준비 중…", "正在准备安装…": "설치 준비 중…", "正在取消安装…": "설치 취소 중…", "正在启用新版本…": "새 버전 활성화 중…", "正在打开百度登录页…": "Baidu 로그인 페이지를 여는 중…", "正在扫描本机 cc-switch…": "이 컴퓨터의 cc-switch를 스캔하는 중…", "正在换发访客凭证…": "게스트 자격 증명을 발급하는 중…", "正在校验官方安装包…": "공식 설치 파일 검증 중…", "正在检查安装状态…": "설치 상태 확인 중…", "正在检查客户端版本…": "클라이언트 버전 확인 중…", "正在添加…": "추가하는 중…", "正在等待{name}登录完成;完成或取消后才能发起新的登录": "{name} 로그인 완료를 기다리는 중입니다; 완료하거나 취소한 후에 새로운 로그인을 시작할 수 있습니다", "此 Copilot 手动令牌方式未声明回调输入契约,暂不发起;请改用设备码登录或只读本机引用。": "이 Copilot 수동 토큰 방식은 콜백 입력 규약을 선언하지 않아 시작하지 않습니다. 기기 코드 로그인 또는 로컬 읽기 전용 참조를 사용하세요.", "此提供商已有登录任务,请先完成或取消。": "이 제공업체의 로그인이 이미 진행 중입니다. 먼저 완료하거나 취소하세요.", "此提供商未声明动态登录方式,请在网关桌面面板使用其既有入口;手机端不会猜测凭证字段。": "이 제공업체는 동적 로그인 방식을 선언하지 않았습니다. 게이트웨이 데스크톱 패널의 기존 기능을 사용하세요. 모바일 앱은 인증 정보 필드를 추측하지 않습니다.", "此方式需要原样提交授权码或令牌;输入会隐藏,不会当作 URL 或 API 凭证解析。提交后仍需等待网关确认。": "이 방식은 인증 코드 또는 토큰을 원문 그대로 제출해야 합니다. 입력은 숨겨지며 URL이나 API 인증 정보로 해석하지 않습니다. 제출 후에도 게이트웨이의 확인을 기다립니다.", "此方式需要完整回调地址;请原样粘贴,不拆分参数或重建地址。提交后仍需等待网关确认。": "이 방식은 전체 콜백 URL이 필요합니다. 매개변수를 나누거나 주소를 재구성하지 말고 그대로 붙여넣으세요. 제출 후에도 게이트웨이 확인을 기다립니다.", "每个账号使用独立的官方登录目录。终端登录沿用该终端的网络环境;这里选择的代理用于添加后的模型请求。": "각 계정은 별도의 공식 로그인 디렉터리를 사용합니다. 터미널 로그인은 해당 터미널의 네트워크 설정을 사용하며 여기서 선택한 프록시는 계정 추가 후 모델 요청에 적용됩니다.", "每周": "매주", "每日": "매일", "每月": "매월", "没有则无法自动续期": "없으면 자동 갱신할 수 없습니다", "没有匹配「{keyword}」的提供商": "「{keyword}」와 일치하는 제공자가 없습니다", "浏览器拦截了弹窗": "브라우저가 팝업을 차단했습니다", "浏览器授权已收到,但网关直连 DeepAI 失败。请在登录代理中填入系统代理或选择可用代理后重新登录。": "브라우저 인증은 받았지만 게이트웨이가 DeepAI에 직접 연결하지 못했습니다. 로그인 프록시에 시스템 프록시를 가져오거나 사용 가능한 프록시를 선택한 후 다시 로그인하세요.", "浏览器授权已收到,但通过所选代理获取账号凭据失败。请检查该代理后重新登录。": "브라우저 인증은 받았지만 선택한 프록시를 통해 계정 인증 정보를 가져오지 못했습니다. 프록시를 확인한 후 다시 로그인하세요.", "浏览器显示登录完成后,网关还需联网获取账号凭据。若浏览器或 Magpie 使用系统代理,请先在下方点击「填入系统代理」;选择直连不会跟随系统代理。": "브라우저에 로그인 완료가 표시된 후에도 게이트웨이는 네트워크를 통해 계정 인증 정보를 가져와야 합니다. 브라우저나 Magpie가 시스템 프록시를 사용한다면 먼저 아래의 「시스템 프록시 가져오기」를 누르세요. 직접 연결은 시스템 프록시를 사용하지 않습니다.", "浏览器登录(墨点额度 + 自动创建 API Key)": "브라우저 로그인(먹점 잔액 + API Key 자동 생성)", "浏览器登录(复用已有 API Key)": "브라우저 로그인(기존 API Key 재사용)", "浏览器面板无法读取其他站点的登录态,请使用本人网页账号的令牌。": "브라우저 패널은 다른 사이트의 로그인 상태를 읽을 수 없습니다. 본인 웹 계정의 토큰을 사용하세요.", "浏览器面板无法读取其它站点的 Cookie,请登录 www.doubao.com 后,使用「填写凭证」粘贴完整 Cookie。": "브라우저 패널은 다른 사이트의 Cookie를 읽을 수 없습니다. www.doubao.com에 로그인한 뒤 인증 정보 입력에서 전체 Cookie를 붙여넣으세요.", "添加 DeepSeek 账号": "DeepSeek 계정 추가", "添加 {name} 账号": "{name} 계정 추가", "添加中…": "추가 중…", "添加到 ": "추가 대상: ", "添加到此提供商": "이 제공업체에 추가", "添加失败:{reason}": "추가 실패: {reason}", "添加小浣熊账号": "小浣熊 계정 추가", "添加方式": "추가 방식", "添加时要用它出网校验凭证(例如 Antigravity 要打一次 Google 的 token 端点)。无头服务器上没有系统代理,这里不选就走直连。": "추가할 때 자격 증명을 검증하는 통신에 사용합니다(예: Antigravity는 Google 토큰 엔드포인트를 호출합니다). 헤드리스 서버에는 시스템 프록시가 없으므로 선택하지 않으면 직접 연결됩니다.", "添加访客账号": "게스트 계정 추가", "添加账号": "계정 추가", "火山引擎 Coding 套餐;通用推理接入点为 https://ark.cn-beijing.volces.com/api/v3": "Volcano Engine Coding 플랜; 범용 추론 엔드포인트는 https://ark.cn-beijing.volces.com/api/v3입니다", "点击添加账号": "클릭하여 계정 추가", "点击登录后,在 Google 页面授权,再原样粘贴授权码或完整页面地址;已登录的 agy 会直接连接。Google 凭证由官方客户端保管,Agent2API 只保存本机连接标记。同一网关仅使用 agy 当前登录的一个账号,不支持复制为多个独立账号。": "로그인을 누르고 Google 페이지에서 승인한 뒤 인증 코드 또는 전체 페이지 주소를 그대로 붙여넣으세요. agy가 이미 로그인되어 있으면 바로 연결됩니다. Google 인증 정보는 공식 클라이언트가 보관하며 Agent2API는 로컬 연결 표시만 저장합니다. 각 게이트웨이는 agy의 현재 계정 하나만 사용하며 여러 독립 계정으로 복제할 수 없습니다.", "点开即预填,填 Key 接入": "열면 값이 미리 채워져 있으며, Key를 입력하면 연결됩니다", "点按钮后先过一次滑块验证(官方风控),随后打开登录页,登录完成即自动添加账号。
    这是国际版官方唯一的登录方式;已在客户端登录过的,用「导入桌面端登录态」更快。": "버튼을 누르면 먼저 슬라이더 인증을 한 번 통과하고(공식 리스크 관리), 이어서 로그인 페이지가 열리며 로그인이 완료되면 계정이 자동으로 추가됩니다.
    이것이 국제판의 공식 유일한 로그인 방식입니다; 이미 클라이언트에 로그인한 적이 있다면 「데스크톱 로그인 상태 가져오기」가 더 빠릅니다.", "独立 Kiro OAuth 支持续期;保留原登录验证,不接受任意 bearer token。": "독립 Kiro OAuth는 갱신을 지원합니다. 기존 로그인 검증을 유지하며 임의의 bearer token은 받지 않습니다.", "用 AutoClaw 账号绑定的手机号登录:点击「获取验证码」,收到短信后填入下方并登录。验证码由本机直接提交给官方接口,界面不显示 token。": "AutoClaw 계정에 연결된 휴대폰 번호로 로그인합니다: 「코드 받기」를 클릭하고 SMS를 받은 뒤 아래에 입력하여 로그인하세요. 인증 코드는 이 컴퓨터에서 공식 API로 직접 제출되며, 화면에 token이 표시되지 않습니다.", "用 CatPaw 账号完成登录(美团 passport),成功后自动加入账号列表。": "CatPaw 계정으로 로그인합니다 (Meituan passport), 성공하면 자동으로 계정 목록에 추가됩니다.", "用 Loomy 账号绑定的手机号登录:点「获取验证码」后填入即可。这是本家最省事的入口。": "Loomy 계정에 연결된 휴대폰 번호로 로그인합니다: 「코드 받기」를 클릭한 뒤 입력하면 됩니다. 이 제공자에서 가장 간편한 방법입니다.", "用于转发;形如 apiKey.secret 两段点分(不填则这个账号不能转发)": "포워딩에 사용합니다; apiKey.secret 형태의 2단 점 구분 (입력하지 않으면 이 계정은 포워딩할 수 없습니다)", "用于领取套餐与查询余额;不填则这个账号不能领取与查余额": "플랜 수령과 잔액 조회에 사용합니다; 입력하지 않으면 이 계정은 수령과 잔액 조회를 할 수 없습니다", "用户 ID": "사용자 ID", "用绑定的手机号登录:点「获取验证码」后填入即可。这是国内版官方唯一的登录方式。": "연결된 휴대폰 번호로 로그인합니다: 「코드 받기」를 클릭한 뒤 입력하면 됩니다. 이것이 중국판의 공식 유일한 로그인 방식입니다.", "用绑定的手机号登录:点「获取验证码」,收到短信后填入下方并点「登录并添加」。这是国内站官方唯一的登录方式。": "본인 휴대폰 번호로 로그인합니다. '인증 코드 받기'를 누르고 문자로 받은 코드를 아래에 입력한 뒤 '로그인 및 추가'를 클릭하세요. 중국 사이트의 유일한 공식 로그인 방법입니다.", "由插件打开浏览器登录": "플러그인 브라우저로 로그인", "由本机 Grok Build CLI 执行官方设备授权;仅保存 home/scope/account 引用,不镜像 token,后续操作只读,不提供维护续期。": "로컬 Grok Build CLI가 공식 기기 인증을 수행합니다. home/scope/account 참조만 저장하고 토큰을 복제하지 않습니다. 이후 작업은 읽기 전용이며 유지 관리 갱신은 제공하지 않습니다.", "留空使用 1.17.16(10117016)": "비워 두면 1.17.16(10117016) 사용", "留空使用该提供商默认值": "비워 두면 공급자의 기본값 사용", "留空使用账号默认名称": "비워 두면 계정 기본 이름 사용", "留空使用默认的 User-Agent;可从预置里选一个内置客户端,也可以直接填写。": "비워 두면 기본 User-Agent를 사용합니다. 프리셋에서 내장 클라이언트를 선택하거나 직접 입력할 수 있습니다.", "留空则用提供商名称": "비워 두면 제공자 이름 사용", "留空自动查找;也可填写网关本机 agy 可执行文件的绝对路径": "비워 두면 자동으로 찾습니다. 게이트웨이 컴퓨터에 있는 agy의 절대 경로를 입력할 수도 있습니다", "登录 / 添加 {name} 账号": "로그인 / {name} 계정 추가", "登录 JWT": "로그인 JWT", "登录 chat.deepseek.com 后,打开开发者工具 → Application → Local Storage,复制 userToken 的 value。": "chat.deepseek.com에 로그인한 후 개발자 도구 → Application → Local Storage를 열고 userToken의 value를 복사하세요.", "登录 session(一长串)": "로그인 session (긴 문자열)", "登录中…": "로그인 중…", "登录代理不支持轮询出网,请选择一条已保存的代理": "로그인은 순환 프록시를 지원하지 않습니다. 저장된 프록시 하나를 선택하세요.", "登录凭证 accessToken": "로그인 인증 정보 accessToken", "登录出网代理": "로그인 아웃바운드 프록시", "登录取消未确认,请刷新状态后重试。": "로그인 취소가 확인되지 않았습니다. 상태를 새로고침한 후 다시 시도하세요.", "登录失败:{message}": "로그인 실패: {message}", "登录尚未完成,请继续通过共享登录桥等待结果": "로그인이 아직 완료되지 않았습니다. 공용 로그인 브리지에서 계속 결과를 기다리세요.", "登录已结束": "로그인이 종료되었습니다", "登录并添加": "로그인 후 추가", "登录态文件路径:~/.box-agent/config/auth.json(Windows:C:\\Users\\<你的用户名>\\.box-agent\\config\\auth.json)": "로그인 상태 파일 경로: ~/.box-agent/config/auth.json (Windows: C:\\Users\\<사용자 이름>\\.box-agent\\config\\auth.json)", "登录授权地址无效,已取消本次等待。": "로그인 인증 URL이 유효하지 않아 대기를 취소했습니다.", "登录桥未返回已完成的账号或会话,请重试": "로그인 브리지가 완료된 계정이나 세션을 반환하지 않았습니다. 다시 시도하세요.", "登录桥返回了空会话,无法确认账号已添加": "로그인 브리지가 빈 세션을 반환하여 계정 추가 여부를 확인할 수 없습니다.", "相同协议和地址的提供商已经存在。可以继续新建独立提供商,或明确选择已有提供商添加账号。": "같은 프로토콜과 주소를 사용하는 제공업체가 이미 있습니다. 별도의 제공업체를 만들거나 기존 제공업체를 선택해 계정을 추가하세요.", "看全部匹配": "모든 일치 항목 보기", "确定删除自定义提供商「{name}」?将同时删除该提供商下 {count} 个账号,删除后无法恢复。": "커스텀 제공자 「{name}」을(를) 삭제할까요? 이 제공자 아래의 계정 {count}개도 함께 삭제되며, 삭제 후에는 복구할 수 없습니다.", "站点名称": "사이트 이름", "端砚由插件在网关电脑上启动独立的 Edge、Chrome 或 Chromium 窗口,不使用系统默认浏览器或应用内嵌窗口。": "InkStone 플러그인은 게이트웨이 컴퓨터에서 별도의 Edge, Chrome 또는 Chromium 창을 실행합니다. 시스템 기본 브라우저나 앱 내장 창은 사용하지 않습니다.", "等待 Accio {label}登录完成…": "Accio {label} 로그인 대기 중…", "等待 AtomCode 登录完成…": "AtomCode 로그인 완료 대기 중…", "等待 CatPaw 登录完成…": "CatPaw 로그인 대기 중…", "等待 Cline 授权确认…": "Cline 인가 확인 대기 중…", "等待 CodeArts 登录完成…": "CodeArts 로그인 대기 중…", "等待 Google 授权完成…": "Google 인가 대기 중…", "等待 KukuAI 登录完成…": "KukuAI 로그인 대기 중…", "等待 LobsterAI 登录完成…": "LobsterAI 로그인 대기 중…", "等待 MonkeyCode 登录完成…": "MonkeyCode 로그인 완료 대기 중…", "等待 OfficeAce 登录完成…": "OfficeAce 로그인 대기 중…", "等待 OrcaTerm 登录完成…": "OrcaTerm 로그인 대기 중…", "等待 Qoder 授权完成…": "Qoder 인가 대기 중…", "等待 Trae 授权完成…": "Trae 인가 대기 중…", "等待 ZCode {label}授权完成…": "ZCode {label} 인가 대기 중…", "等待你在官方页面完成登录,成功后自动添加账号。": "공식 페이지에서 로그인을 완료하기를 기다리는 중입니다. 성공하면 계정이 자동으로 추가됩니다.", "等待千问办公登录完成…": "QwenWork 로그인 완료를 기다리는 중…", "等待小浣熊登录完成…": "小浣熊 로그인 대기 중…", "等待插件完成登录": "플러그인 로그인 완료 대기 중", "等待浏览器完成登录": "브라우저 로그인 완료 대기 중", "等待浏览器授权;若本机回调页面无法打开,请复制地址栏中的完整地址回填。": "브라우저 인증을 기다리는 중입니다. 로컬 콜백 페이지가 열리지 않으면 주소창의 전체 주소를 복사해 붙여넣으세요.", "等待登录完成…": "로그인 완료 대기 중…", "等待网页登录…": "웹 로그인 대기 중…", "等待豆包工作登录完成…": "Doubao Work 로그인 완료를 기다리는 중…", "粘贴 API Key": "API Key 붙여넣기", "粘贴 API 令牌": "API 토큰 붙여넣기", "粘贴 Accio 的 accessToken": "Accio의 accessToken 붙여넣기", "粘贴 Antigravity 的 Google refresh token(以 1// 开头;直接粘贴含 refresh_token= 的整行也行)。
    这是网页登录之外的手工入口(例如从已登录的官方 IDE 里导出)。refresh token 不会过期,access token 到期由网关自动续期;令牌丢了只能重新走 Google 授权,请妥善保存。": "Antigravity의 Google refresh token을 붙여넣으세요 (1//로 시작; refresh_token=이 포함된 줄 전체를 붙여넣어도 됨).
    웹 로그인 외의 수동 입구입니다(예: 로그인된 공식 IDE에서 내보내기). refresh token은 만료되지 않으며, access token 만료 시 게이트웨이가 자동으로 갱신합니다; 토큰을 잃어버리면 Google 인가를 다시 받아야 하므로 잘 보관하세요.", "粘贴 Command Code 的 API Key(user_ 开头;从官方 CLI 的 ~/.commandcode/auth.json 或网页 studio 获取)。整行 / 带引号 / 带 Bearer 前缀地粘都行,网关会自己剥成裸 key。key 不过期、也没有续期接口,失效后重新获取即可;添加时网关会做一次轻量探活,失败不影响添加。": "Command Code의 API Key를 붙여넣으세요 (user_로 시작; 공식 CLI의 ~/.commandcode/auth.json 또는 웹 studio에서 획득). 줄 전체 / 따옴표 포함 / Bearer 접두사 포함 그대로 붙여넣어도 됩니다. 게이트웨이가 알아서 순수한 key만 추출합니다. key는 만료되지 않고 갱신 인터페이스도 없으므로, 무효가 되면 다시 받으면 됩니다; 추가 시 게이트웨이가 가벼운 활성 확인을 한 번 수행하며, 실패해도 추가에는 영향을 주지 않습니다.", "粘贴 Cookie": "Cookie 붙여넣기", "粘贴 Google refresh token": "Google refresh token 붙여넣기", "粘贴 ModelScope 的 API 令牌(ms- 开头,在 {site} 的「访问令牌」页获取)。
    {siteNote}
    这枚令牌两用:网关既用它调推理,也用它读账号身份、魔粒余额与每日签到。令牌长期有效、没有续期接口,失效后重新获取再粘一次即可。": "ModelScope API 토큰(ms- 로 시작)을 붙여넣으세요({site} 의 '액세스 토큰' 페이지에서 발급).
    {siteNote}
    이 토큰은 두 가지 용도로 쓰입니다: 게이트웨이가 추론 호출에도, 계정 신원·마립 잔액·매일 출석 조회에도 사용합니다. 토큰은 장기 유효하며 갱신 API 가 없으므로, 사용할 수 없게 되면 다시 발급받아 붙여넣으면 됩니다.", "粘贴 OrcaTerm 的 OAuth accessToken(JWT,三段点分;从桌面客户端 data.bin 或 Web 版 Cookie ot_session 获取)。直接粘贴含 Bearer / ot_session= 的整行也行,网关会自己剥成裸 token。添加后由网关自动续期(上游有续期接口),无需跟随 2 小时时效手动更换。": "OrcaTerm의 OAuth accessToken(점 3개로 구분된 JWT. 데스크톱 클라이언트의 data.bin 또는 웹 버전 Cookie ot_session에서 확인)을 붙여넣으세요. Bearer / ot_session=이 포함된 줄을 그대로 붙여넣어도 되며, 게이트웨이가 토큰만 추출합니다. 추가 후에는 게이트웨이가 자동으로 갱신하므로(업스트림에 갱신 API가 있음) 2시간 만료를 직접 따라갈 필요가 없습니다.", "粘贴 Qoder 个人访问令牌(pt-…)": "Qoder 개인 액세스 토큰(pt-…) 붙여넣기", "粘贴 accessToken": "accessToken 붙여넣기", "粘贴 access_token(一长串 JWT)": "access_token 붙여넣기 (긴 JWT)", "粘贴 session cookie": "session cookie 붙여넣기", "粘贴 token / refreshToken": "token / refreshToken 붙여넣기", "粘贴 userToken.value": "userToken.value 붙여넣기", "粘贴 workos:… 开头的令牌(不带前缀也会自动补上)": "workos:…로 시작하는 토큰 붙여넣기 (접두사가 없어도 자동으로 붙습니다)", "粘贴 www.doubao.com 的完整 Cookie(必须含 sessionid),也支持 Cookie JSON 数组或对象。复用豆包工作账号的额度;Cookie 失效后需重新登录,没有自动续期。": "sessionid가 포함된 www.doubao.com의 전체 Cookie를 붙여넣으세요. Cookie JSON 배열이나 객체도 지원합니다. Doubao Work 계정의 할당량을 사용하며 Cookie가 만료되면 다시 로그인해야 합니다. 자동 갱신은 없습니다.", "粘贴令牌": "토큰 붙여넣기", "粘贴令牌对": "토큰 쌍 붙여넣기", "粘贴你本人已授权的 GitHub OAuth 令牌(不是设备码或 Copilot 短令牌)。令牌仍需由 GitHub 验证并交换;CLI 专用令牌可能不支持编辑器令牌交换。": "본인이 승인한 GitHub OAuth 토큰을 붙여 넣으세요. 기기 코드나 단기 Copilot 토큰이 아닙니다. GitHub의 검증 및 교환이 필요하며 CLI 전용 토큰은 편집기 토큰 교환을 지원하지 않을 수 있습니다.", "粘贴完整登录凭证 JSON,或只填模型凭证 llmToken。仅模型凭证可对话;积分、续期和奖励需要登录凭证 accessToken。": "전체 로그인 JSON 또는 모델 인증 정보 llmToken을 붙여 넣으세요. 모델 인증 정보만 있으면 채팅할 수 있으며 포인트·갱신·보상에는 accessToken이 필요합니다.", "粘贴智谱清言的访问令牌(JWT,三段点分)。获取方式:浏览器打开 chatglm.cn 并登录后,在开发者工具的 Application → Cookies 里复制 chatglm_token 的值(也可以直接粘 chatglm_token=…; 整行)。粘贴后会先向上游校验一次,校验通过才落账号;登录账号的积分、签到能力都能用,之后由网关自动续期(上游有续期接口)。": "智谱清言 액세스 토큰(점 3개로 구분된 JWT)을 붙여넣으세요. 발급 방법: 브라우저에서 chatglm.cn을 열고 로그인한 뒤 개발자 도구의 Application → Cookies에서 chatglm_token 값을 복사합니다(chatglm_token=…; 줄을 그대로 붙여도 됩니다). 붙여넣은 뒤 업스트림에 한 번 검증하며, 통과한 경우에만 계정을 저장합니다. 로그인된 계정은 포인트와 签到 기능을 쓸 수 있고, 이후 게이트웨이가 자동으로 갱신합니다(업스트림에 갱신 인터페이스가 있습니다).", "粘贴登录凭据": "로그인 자격 증명 붙여넣기", "粘贴的是登录 session(同时是模型网关的 token)。Loomy 没有续期接口,session 有效期约 14 天,过期后重新登录即可。": "붙여넣는 것은 로그인 session입니다 (동시에 모델 게이트웨이의 token입니다). Loomy에는 갱신 인터페이스가 없으며 session 유효 기간은 약 14일이므로, 만료되면 다시 로그인하면 됩니다.", "粘贴网关凭据": "게이트웨이 자격 증명 붙여넣기", "粘贴网页登录凭证": "웹 로그인 자격 증명 붙여넣기", "粘贴网页登录态 cookie monkeycode_ai_session 的值(在浏览器里复制整段 Cookie 直接粘贴也行,网关会自己剥出值)。
    {siteNote}
    MonkeyCode 没有续期接口:session 有效期约 30 天(硬限制),过期后重新登录网页、再粘贴一次即可。": "웹 로그인 상태 cookie monkeycode_ai_session의 값을 붙여넣으세요 (브라우저에서 전체 Cookie를 복사해 그대로 붙여넣어도 됩니다. 게이트웨이가 값을 알아서 추출합니다).
    {siteNote}
    MonkeyCode에는 갱신 인터페이스가 없습니다: session 유효 기간은 약 30일(하드 제한)이며, 만료되면 웹에 다시 로그인해 한 번 더 붙여넣으면 됩니다.", "粘贴网页访问令牌": "웹 액세스 토큰 붙여넣기", "粘贴访问令牌": "액세스 토큰 붙여넣기", "系统浏览器": "시스템 브라우저", "系统浏览器可复用已有登录态(国际版推荐);内嵌窗口更干净。": "시스템 브라우저는 기존 로그인 상태를 재사용할 수 있습니다 (국제판 권장); 내장 창이 더 깔끔합니다.", "系统浏览器打开(复用已登录的 Cline 账号);完成后自动加入列表": "시스템 브라우저로 엽니다 (로그인된 Cline 계정 재사용); 완료하면 자동으로 목록에 추가됩니다", "系统浏览器打开(复用已登录的 Google 账号);完成后自动加入列表": "시스템 브라우저로 엽니다(로그인된 Google 계정 재사용); 완료하면 자동으로 목록에 추가됩니다", "系统浏览器打开(复用已登录的 Zai / Google 账号);完成后自动加入列表": "시스템 브라우저로 엽니다 (로그인된 Zai / Google 계정 재사용); 완료하면 자동으로 목록에 추가됩니다", "系统浏览器打开(复用已登录的美团账号);完成后自动加入列表": "시스템 브라우저로 엽니다 (로그인된 Meituan 계정 재사용); 완료하면 자동으로 목록에 추가됩니다", "系统浏览器打开(复用已登录账号);完成后自动加入列表": "시스템 브라우저로 엽니다 (로그인된 계정 재사용); 완료하면 자동으로 목록에 추가됩니다", "系统默认浏览器": "시스템 기본 브라우저", "组织登录地址(Start URL)": "조직 로그인 주소(Start URL)", "继续新建独立提供商": "별도의 제공업체 만들기", "续期令牌": "리프레시 토큰", "编码套餐 API Key": "코딩 플랜 API Key", "网关 Secret": "게이트웨이 시크릿", "网关未返回有效的手动回调输入契约;请更新网关后重新发起。": "게이트웨이가 유효한 수동 콜백 입력 규약을 반환하지 않았습니다. 게이트웨이를 업데이트하고 다시 시작하세요.", "网页 Cookie": "웹 Cookie", "网页登录": "웹 로그인", "网页登录 / 填写凭证": "웹 로그인 / 인증 정보 입력", "网页登录的打开方式": "웹 로그인을 여는 방식", "网页登录(Zai / Google)": "웹 로그인 (Zai / Google)", "网页访问令牌": "웹 액세스 토큰", "腾讯 TokenHub 国内版(按量)": "Tencent TokenHub 중국판(종량제)", "腾讯 TokenHub 国内站按量 API;使用 TokenHub API Key,不是 Token Plan 套餐或 WorkBuddy 凭证": "Tencent TokenHub 중국 사이트의 종량제 API입니다. Token Plan 또는 WorkBuddy 인증 정보가 아닌 TokenHub API Key를 사용하세요", "腾讯 TokenHub 国际版(按量)": "Tencent TokenHub 국제판(종량제)", "腾讯 TokenHub 国际站按量 API;使用 TokenHub API Key,不是 Token Plan 套餐或 WorkBuddy 凭证": "Tencent TokenHub 국제 사이트의 종량제 API입니다. Token Plan 또는 WorkBuddy 인증 정보가 아닌 TokenHub API Key를 사용하세요", "自定义": "커스텀", "自建聚合面板:填你自己的站点地址。余额查询用该账号的 API Key 打 {base}/v1/usage,不需要额外配置": "자체 구축 어그리게이션 패널: 자신의 사이트 주소를 입력하세요. 잔액 조회는 이 계정의 API 키로 {base}/v1/usage 를 호출하며 추가 설정이 필요 없습니다", "自建聚合面板:填你自己的站点地址;余额查询要另填 NewAPI 的个人访问令牌(见下方「余额查询」一段)": "자체 구축 어그리게이션 패널: 자신의 사이트 주소를 입력하세요. 잔액 조회에는 별도로 NewAPI 개인 액세스 토큰이 필요합니다 (아래 \"잔액 조회\" 단락 참조)", "获取风控配置失败,将直接尝试领取:{message}": "리스크 관리 구성을 가져오지 못했습니다. 바로 수령을 시도합니다: {message}", "获取风控配置失败:{message}": "인증 설정을 가져오지 못했습니다: {message}", "获取验证码": "코드 받기", "要添加到其他站点,请返回「已建 API」重新选择": "다른 사이트에 추가하려면 「설정된 API」로 돌아가 다시 선택하세요", "解锁 Premium": "Premium 잠금 해제", "访客模式": "게스트 모드", "访客模式(免登录)": "게스트 모드(로그인 불필요)", "访问令牌": "액세스 토큰", "该上游无需鉴权(不发送鉴权头)": "이 업스트림은 인증이 필요하지 않음 (인증 헤더를 보내지 않음)", "该地址已有提供商": "이 주소를 사용하는 제공업체가 이미 있습니다", "该提供商": "이 제공자", "该提供商已不存在或地址已变更,请重新选择": "이 제공업체가 더 이상 존재하지 않거나 주소가 변경되었습니다. 다시 선택하세요", "该提供商已不存在(可能已被删除),请刷新后重试": "이 제공업체가 더 이상 존재하지 않습니다 (삭제되었을 수 있습니다). 새로고침 후 다시 시도하세요", "该提供商账号添加功能即将上线": "이 제공자의 계정 추가 기능이 곧 출시됩니다", "该登录需要继续跳转,请在网关桌面面板重新发起。": "이 로그인에는 추가 리디렉션이 필요합니다. 게이트웨이 데스크톱 패널에서 다시 시작하세요.", "该自定义提供商已不存在(可能已被删除),请刷新后重试": "이 커스텀 제공자가 더 이상 존재하지 않습니다(삭제되었을 수 있습니다). 새로 고친 후 다시 시도하세요", "请使用网页访问令牌,不要填写 sk- 开头的 API Key。": "웹 액세스 토큰을 사용하고 sk-로 시작하는 API Key는 입력하지 마세요.", "请先选择一个自定义提供商": "먼저 커스텀 제공자를 선택하세요", "请在弹出的滑块中完成验证(官方要求的风控步骤)": "표시된 슬라이더에서 인증을 완료하세요 (공식에서 요구하는 리스크 관리 단계)", "请在插件打开的专用 Chrome 窗口中登录移动云(yun.139.com)。登录成功后会自动读取并验证凭据,随后继续添加账号。": "플러그인이 연 전용 Chrome 창에서 차이나 모바일 클라우드(yun.139.com)에 로그인하세요. 로그인 후 인증 정보를 자동으로 읽고 검증한 다음 계정 추가를 계속합니다.", "请在插件打开的端砚控制台窗口中登录(支持密码、短信或扫码)。插件会自动读取登录结果并关闭窗口,无需手动关闭;随后按所选方式创建或复用 API Key。新建密钥的明文只显示一次,由插件保存。": "플러그인이 연 InkStone 콘솔 창에서 비밀번호, SMS 또는 QR 코드로 로그인하세요. 플러그인이 로그인 결과를 읽고 창을 자동으로 닫은 뒤 선택한 방식에 따라 API Key를 생성하거나 재사용합니다. 새 키의 원문은 한 번만 표시되며 플러그인이 저장합니다.", "请在插件打开的端砚控制台窗口中登录(支持密码、短信或扫码),然后退出该浏览器:macOS 请按 Cmd+Q(只关闭窗口不够),Linux 请关闭最后一个窗口。插件读取登录结果后会继续处理,并按所选方式创建或复用 API Key。新建密钥的明文只显示一次,由插件保存。": "플러그인이 연 InkStone 콘솔 창에서 비밀번호, SMS 또는 QR 코드로 로그인한 후 해당 브라우저를 종료하세요. macOS에서는 Cmd+Q를 누르고(창만 닫으면 안 됨), Linux에서는 마지막 창을 닫으세요. 플러그인이 결과를 읽고 선택한 방식에 따라 API Key를 생성하거나 재사용합니다. 새 키의 원문은 한 번만 표시되며 플러그인이 저장합니다.", "请在系统浏览器完成官方登录。": "시스템 브라우저에서 공식 로그인을 완료하세요.", "请在运行网关的机器上打开 PowerShell,执行下面的专用登录命令,并按官方提示完成授权。面板会自动检测登录结果,不需要粘贴凭证。": "게이트웨이 컴퓨터에서 PowerShell을 열고 아래 전용 로그인 명령을 실행한 뒤 공식 안내에 따라 인증을 완료하세요. 패널이 완료를 자동으로 감지하므로 인증 정보를 붙여넣을 필요가 없습니다.", "请在运行网关的机器上打开终端,执行下面的专用登录命令,并按官方提示完成授权。面板会自动检测登录结果,不需要粘贴凭证。": "게이트웨이 컴퓨터에서 터미널을 열고 아래 전용 로그인 명령을 실행한 뒤 공식 안내에 따라 인증을 완료하세요. 패널이 완료를 자동으로 감지하므로 인증 정보를 붙여넣을 필요가 없습니다.", "请填写 11 位大陆手机号": "11자리 중국 본토 휴대폰 번호를 입력하세요", "请填写 6 位数字验证码": "6자리 숫자 인증 코드를 입력하세요", "请填写 Base URL": "Base URL을 입력하세요", "请填写 {label}": "{label}을(를) 입력하세요", "请填写名称": "이름을 입력하세요", "请安装并启用对应的提供商插件;列表为空时请刷新后重试。": "해당 제공업체 플러그인을 설치하고 활성화하세요. 목록이 비어 있으면 새로고침한 후 다시 시도하세요.", "请完成验证…": "인증을 완료하세요…", "请选择客户端凭证文件,或本软件导出的单账号 JSON 文件": "클라이언트 인증 파일 또는 이 앱에서 내보낸 단일 계정 JSON 파일을 선택해 주세요.", "读取 %APPDATA%/AutoClaw/auth.json 并解密,仅 Windows": "%APPDATA%/AutoClaw/auth.json을 읽어 복호화합니다. Windows 전용", "读取 ~/.cline/data/settings/providers.json,需已在 Cline 客户端登录": "~/.cline/data/settings/providers.json을 읽습니다. Cline 클라이언트에 로그인되어 있어야 합니다", "读取 ~/.meituan-catpaw/auth.json,需已在 CatPaw 客户端登录": "~/.meituan-catpaw/auth.json을 읽습니다. CatPaw 클라이언트에 로그인되어 있어야 합니다", "读取本机 KukuAI 客户端登录态(%APPDATA%\\baidugenflowpro\\Network\\Cookies),需已在 KukuAI 客户端登录": "이 컴퓨터의 KukuAI 클라이언트 로그인 상태를 읽습니다 (%APPDATA%\\baidugenflowpro\\Network\\Cookies). KukuAI 클라이언트에 로그인되어 있어야 합니다", "读取本机 OrcaTerm 客户端登录态(%APPDATA%\\com.orcaterm-desktop.app\\data.bin),需已在 OrcaTerm 客户端登录": "로컬 OrcaTerm 클라이언트 로그인 상태(%APPDATA%\\com.orcaterm-desktop.app\\data.bin)를 읽습니다. OrcaTerm 클라이언트에 로그인되어 있어야 합니다", "读取本机已登录豆包工作客户端的 Cookie,每次请求实时读取;客户端需使用 --remote-debugging-port=9342 启动。本软件不修改、关闭或重启客户端。": "요청할 때마다 로그인된 로컬 Doubao Work 클라이언트의 Cookie를 읽습니다. --remote-debugging-port=9342로 클라이언트를 시작하세요. 이 앱은 클라이언트를 수정하거나 종료 또는 재시작하지 않습니다.", "读取本机智谱清言客户端登录态(%APPDATA%\\chatglm\\Network\\Cookies),需已在客户端登录": "이 PC의 智谱清言 클라이언트 로그인 상태를 읽습니다(%APPDATA%\\chatglm\\Network\\Cookies). 클라이언트에 로그인되어 있어야 합니다", "读取的是网关电脑上已登录的客户端,不是打开面板的电脑;也可改用粘贴凭据。": "패널을 연 컴퓨터가 아닌 게이트웨이 컴퓨터의 로그인된 클라이언트를 읽습니다. 인증 정보 붙여넣기도 사용할 수 있습니다.", "读取网关所在机器上 kiro-cli 或 Kiro IDE 的登录态,不是当前浏览器所在电脑的账号;续期后会写回原处。": "현재 브라우저를 실행하는 컴퓨터가 아닌 게이트웨이 컴퓨터의 kiro-cli 또는 Kiro IDE 로그인 상태를 읽습니다. 갱신한 인증 정보는 원래 위치에 저장됩니다.", "读取运行网关的电脑上已登录的 QuWork,只保存本机引用,不修改官方客户端文件;切换账号后需重新导入。": "게이트웨이 컴퓨터에서 로그인한 QuWork를 읽어 로컬 참조만 저장하며 공식 파일은 변경하지 않습니다. 계정 전환 후 다시 가져오세요.", "读本机官方客户端(Tencent WorkBuddy / WorkBuddy AI)当前登录的账号:自动定位其凭证目录里最新的登录态文件(需已在本机官方客户端登录)。导入后由网关自动续期,无需跟随 2 小时时效手动换令牌。": "이 컴퓨터의 공식 클라이언트(Tencent WorkBuddy / WorkBuddy AI)에 현재 로그인된 계정을 읽습니다. 자격 증명 디렉터리에서 최신 로그인 상태 파일을 자동으로 찾습니다(이 컴퓨터의 공식 클라이언트에 로그인되어 있어야 함). 가져온 후에는 게이트웨이가 자동 갱신하므로 2시간 유효 기간에 맞춰 토큰을 수동으로 교체할 필요가 없습니다.", "读本机客户端当前登录态(明文 Cookie,无需解密)。客户端运行时 Cookies 文件被独占占用,导入前请先关闭 KukuAI 客户端。": "이 컴퓨터 클라이언트의 현재 로그인 상태를 읽습니다 (평문 Cookie, 복호화 불필요). 클라이언트 실행 중에는 Cookies 파일이 독점 점유되므로, 가져오기 전에 KukuAI 클라이언트를 먼저 종료하세요.", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。": "이 컴퓨터 클라이언트의 현재 로그인 상태를 매번 실시간으로 읽습니다 (이 기록을 삭제해도 클라이언트 로그인 상태에는 영향을 주지 않습니다).", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。客户端重新登录后点「刷新 Token」同步。": "이 컴퓨터 클라이언트의 현재 로그인 상태를 매번 실시간으로 읽습니다 (이 기록을 삭제해도 클라이언트 로그인 상태에는 영향을 주지 않습니다). 클라이언트에서 다시 로그인한 후 「Token 갱신」을 눌러 동기화하세요.", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。客户端重新登录后重新导入即可。": "이 컴퓨터 클라이언트의 현재 로그인 상태를 매번 실시간으로 읽습니다 (이 기록을 삭제해도 클라이언트 로그인 상태에는 영향을 주지 않습니다). 클라이언트에서 다시 로그인한 후 다시 가져오면 됩니다.", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。用 Zai / Google 登录客户端的用户走这一条。": "이 컴퓨터 클라이언트의 현재 로그인 상태를 매번 실시간으로 읽습니다 (이 기록을 삭제해도 클라이언트 로그인 상태에는 영향을 주지 않습니다). Zai / Google로 클라이언트에 로그인하는 사용자는 이 항목을 사용하세요.", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。这一条归入 {label}。": "이 컴퓨터 클라이언트의 현재 로그인 상태를 매번 실시간으로 읽습니다 (이 기록을 삭제해도 클라이언트 로그인 상태에는 영향을 주지 않습니다). 이 항목은 {label}로 분류됩니다.", "读本机客户端当前登录的 OAuth 令牌(明文 JSON,无需解密)。导入后由网关自动续期,无需跟随客户端的 2 小时时效手动换令牌。": "로컬 클라이언트가 현재 로그인한 OAuth 토큰을 읽습니다(평문 JSON, 복호화 불필요). 가져온 뒤에는 게이트웨이가 자동으로 갱신하므로 클라이언트의 2시간 만료에 맞춰 수동으로 교체할 필요가 없습니다.", "读本机客户端当前的登录态。客户端的 Cookies 是 DPAPI 加密的(Chromium os_crypt),因此仅 Windows 可用;客户端正在运行时可能读不到该文件,先退出客户端再试即可(也可改用「填写凭证」粘贴令牌)。": "이 PC 클라이언트의 현재 로그인 상태를 읽습니다. 클라이언트의 Cookies는 DPAPI로 암호화되어 있어(Chromium os_crypt) Windows에서만 사용할 수 있습니다. 클라이언트가 실행 중이면 이 파일을 읽지 못할 수 있으니 클라이언트를 종료한 뒤 다시 시도하세요(\"자격 증명 입력\"으로 토큰을 붙여넣어도 됩니다).", "豆包工作": "Doubao Work", "账号信息": "계정 정보", "账号信息不完整,请刷新后重试": "계정 정보가 불완전합니다. 새로 고친 후 다시 시도하세요", "账号名由插件自动获取,添加后可修改。": "계정 이름은 플러그인이 자동으로 가져옵니다. 추가 후 변경할 수 있습니다.", "账号已添加,但代理选择未确认保存;请在账号设置中重新检查。": "계정은 추가되었지만 프록시 선택 저장은 확인되지 않았습니다. 계정 설정에서 확인하세요.", "账号已添加,但未返回账号 ID,无法保存登录代理选择。": "계정은 추가되었지만 계정 ID가 반환되지 않아 로그인 프록시 선택을 저장할 수 없습니다.", "账号已添加,但请留意:{warning}": "계정은 추가되었지만 확인해 주세요: {warning}", "账号已添加,但账号列表同步失败,请刷新重试。": "계정은 추가되었지만 계정 목록 동기화에 실패했습니다. 새로고침한 후 다시 시도하세요.", "账号文件的提供商与当前选择不一致,请选择对应的提供商后再导入": "계정 파일의 제공업체가 현재 선택과 다릅니다. 해당 제공업체를 선택한 후 가져와 주세요.", "账号版本": "계정 버전", "账号类型": "계정 유형", "账号:{name}
    ": "계정: {name}
    ", "走 Inference Providers 路由,Key 在 hf.co/settings/tokens 创建": "Inference Providers 라우팅을 사용하며, Key는 hf.co/settings/tokens에서 만듭니다", "返回提供商列表": "제공업체 목록으로 돌아가기", "还没有可用的提供商。各家提供商的转发与账号实现都在插件包里,装好之后这里就会出现。": "아직 사용할 수 있는 제공자가 없습니다. 각 제공자의 포워딩과 계정 처리는 플러그인 팩에 들어 있으며, 팩을 설치하면 여기에 나타납니다.", "还没有账号": "아직 계정이 없습니다", "还需完成 AWS 授权:请打开下一步授权页,完成后回填新的完整回调地址。": "AWS 인증이 아직 필요합니다. 다음 인증 페이지를 열어 완료한 뒤 새 전체 콜백 URL을 붙여넣으세요.", "还需继续授权,请打开下一步授权页,完成后回填新的完整回调地址。": "추가 인증이 필요합니다. 다음 인증 페이지를 열어 완료한 뒤 새 전체 콜백 URL을 붙여넣으세요.", "这一家当前不支持网页登录,请改用填写凭证": "이 제공자는 현재 웹 로그인을 지원하지 않습니다. 대신 자격 증명 입력을 사용하세요", "这个账号当前没有可自动领的活动(只自动领每日登录赠送积分)": "이 계정에는 현재 자동으로 수령할 수 있는 이벤트가 없습니다 (매일 로그인 보너스 포인트만 자동 수령합니다)", "这份额度走「活动套餐」通道:若转发时提示编码套餐已到期,": "이 할당량은 「이벤트 플랜」 채널을 사용합니다: 포워딩 시 코딩 플랜이 만료되었다는 안내가 나오면, ", "这里填国内站(modelscope.cn)的账号:请粘贴国内站的令牌。国际站(modelscope.ai)是另一家 provider、另一套账号,两边的令牌不通用。": "여기에는 중국판 사이트(modelscope.cn) 계정을 입력합니다. 중국판 사이트의 토큰을 붙여넣으세요. 국제판 사이트(modelscope.ai)는 다른 공급자·다른 계정 체계이며 토큰은 서로 호환되지 않습니다.", "这里填国内站(monkeycode-ai.com)的账号:请粘贴国内站的 session。国际站(monkeycode-ai.net)是另一家 provider、另一套账号,两边的凭证不通用。": "여기에는 중국 사이트(monkeycode-ai.com)의 계정을 입력합니다: 중국 사이트의 session을 붙여넣으세요. 국제 사이트(monkeycode-ai.net)는 다른 제공자이며 별도의 계정입니다. 양쪽 자격 증명은 호환되지 않습니다.", "这里填国际站(modelscope.ai)的账号:请粘贴国际站的令牌。国内站(modelscope.cn)是另一家 provider、另一套账号,两边的令牌不通用。": "여기에는 국제판 사이트(modelscope.ai) 계정을 입력합니다. 국제판 사이트의 토큰을 붙여넣으세요. 중국판 사이트(modelscope.cn)는 다른 공급자·다른 계정 체계이며 토큰은 서로 호환되지 않습니다.", "这里填国际站(monkeycode-ai.net)的账号:请粘贴国际站的 session。国内站(monkeycode-ai.com)是另一家 provider、另一套账号,两边的凭证不通用。": "여기에는 국제 사이트(monkeycode-ai.net)의 계정을 입력합니다: 국제 사이트의 session을 붙여넣으세요. 중국 사이트(monkeycode-ai.com)는 다른 제공자이며 별도의 계정입니다. 양쪽 자격 증명은 호환되지 않습니다.", "选择 CatPaw 客户端的登录态文件 auth.json(Windows:C:\\Users\\<你的用户名>\\.meituan-catpaw\\auth.json;macOS / Linux:~/.meituan-catpaw/auth.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端。": "CatPaw 클라이언트의 로그인 상태 파일 auth.json을 선택하세요 (Windows: C:\\Users\\<사용자 이름>\\.meituan-catpaw\\auth.json, macOS / Linux: ~/.meituan-catpaw/auth.json). 가져오기 후에는 자격 증명이 게이트웨이에 저장되어 독립적으로 전달할 수 있습니다 — 더 이상 이 컴퓨터의 클라이언트에 의존하지 않습니다.", "选择 Cline 客户端的登录态文件 providers.json(Windows:C:\\Users\\<你的用户名>\\.cline\\data\\settings\\providers.json;macOS / Linux:~/.cline/data/settings/providers.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端;这一条归入 {label}。": "Cline 클라이언트의 로그인 상태 파일 providers.json을 선택하세요 (Windows: C:\\Users\\<사용자 이름>\\.cline\\data\\settings\\providers.json, macOS / Linux: ~/.cline/data/settings/providers.json). 가져오기 후에는 자격 증명이 게이트웨이에 저장되어 독립적으로 전달할 수 있습니다 — 더 이상 이 컴퓨터의 클라이언트에 의존하지 않습니다. 이 항목은 {label}에 등록됩니다.", "选择 KukuAI 客户端的 Cookies 文件(%APPDATA%\\baidugenflowpro\\Network\\Cookies):它是**二进制** SQLite 数据库(无扩展名,不是 JSON)。导入时读的是你选中文件的副本、不和运行中的客户端抢占用,因此**无需先关闭客户端**。导入后凭证直接落在网关、可独立转发。": "KukuAI 클라이언트의 Cookies 파일을 선택하세요 (%APPDATA%\\baidugenflowpro\\Network\\Cookies): **바이너리** SQLite 데이터베이스입니다 (확장자 없음, JSON 아님). 가져오기는 선택한 파일의 복사본을 읽어 실행 중인 클라이언트와 점유를 다투지 않으므로 **클라이언트를 먼저 종료할 필요가 없습니다**. 가져오기 후에는 자격 증명이 게이트웨이에 저장되어 독립적으로 전달할 수 있습니다.", "选择 OAuth auth.json 的绝对路径(不扫描其他目录)": "OAuth auth.json의 절대 경로 선택(다른 디렉터리는 검색하지 않음)", "选择凭证文件导入": "자격 증명 파일에서 가져오기", "选择包含 Cookie 的 JSON 对象,或本软件导出的单账号 JSON 文件。导入后可独立使用,不需要持续运行豆包工作客户端。": "Cookie가 포함된 JSON 객체 또는 이 앱에서 내보낸 단일 계정 JSON 파일을 선택하세요. 가져온 계정은 Doubao Work 클라이언트를 계속 실행하지 않아도 독립적으로 사용할 수 있습니다.", "选择包含 Tabbit Cookie / JWT 的 JSON 或文本文件;也可以直接粘贴到上方表单。": "Tabbit Cookie / JWT가 포함된 JSON 또는 텍스트 파일을 선택하세요. 위 양식에 직접 붙여넣어도 됩니다.", "选择包含该提供商凭证的 JSON 文件,或本软件导出的单账号 JSON 文件。导入后凭证保存在网关,可独立使用。": "이 제공업체의 인증 정보가 포함된 JSON 파일 또는 이 앱에서 내보낸 단일 계정 JSON 파일을 선택하세요. 가져온 인증 정보는 게이트웨이에 저장되며 독립적으로 사용할 수 있습니다.", "选择官方客户端的登录态凭证文件(workbuddy-desktop.info / workbuddy-desktop-ai.info)或 wb2api 导出的账号 JSON(嵌套 / 扁平形均可)。": "공식 클라이언트의 로그인 자격 증명 파일(workbuddy-desktop.info / workbuddy-desktop-ai.info) 또는 wb2api에서 내보낸 계정 JSON(중첩/평면 형식 모두 가능)을 선택하세요.", "选择小浣熊客户端的登录态文件 auth.json(Windows:C:\\Users\\<你的用户名>\\.box-agent\\config\\auth.json;macOS / Linux:~/.box-agent/config/auth.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端。": "小浣熊 클라이언트의 로그인 상태 파일 auth.json을 선택하세요 (Windows: C:\\Users\\<사용자 이름>\\.box-agent\\config\\auth.json, macOS / Linux: ~/.box-agent/config/auth.json). 가져오기 후에는 자격 증명이 게이트웨이에 저장되어 독립적으로 전달할 수 있습니다 — 더 이상 이 컴퓨터의 클라이언트에 의존하지 않습니다.", "选择提供商": "제공자 선택", "选择新增账号或重新授权当前注册": "새 계정 추가 또는 현재 등록 재인증 선택", "选择的文件不是合法 JSON": "선택한 파일이 유효한 JSON이 아닙니다", "选择要添加账号的提供商": "계정을 추가할 제공자 선택", "选择预置客户端": "프리셋 클라이언트 선택", "重新扫描": "다시 스캔", "重新授权所选账号(固定原身份和 clientId)": "선택한 계정 재인증(기존 계정과 clientId 유지)", "重新读取提供商": "제공업체 다시 불러오기", "鉴权": "인증", "阿里云 Token Plan 套餐(国际站)": "Alibaba Cloud Token Plan (국제 사이트)", "阿里云百炼 Coding 套餐(国内站)": "Alibaba Cloud Model Studio Coding 플랜 (중국 사이트)", "阿里云百炼 Coding 套餐(国际站)": "Alibaba Cloud Model Studio Coding 플랜 (국제 사이트)", "阿里云百炼模型服务(国际站,OpenAI 兼容模式)": "Alibaba Cloud Model Studio 모델 서비스 (국제 사이트, OpenAI 호환 모드)", "隐藏凭证": "인증 정보 숨기기", "需要图形验证码:登录窗口已弹出,请填写后继续": "그래픽 캡차가 필요합니다: 로그인 창이 열렸으니 입력한 후 계속하세요", "需要手动提交授权回调": "인증 콜백 수동 제출 필요", "需要时填写完整 Cookie": "필요한 경우 전체 Cookie 입력", "需要进行人机验证": "사람 인증이 필요합니다", "预置 API": "프리셋 API", "领取 CodeArts 每日福利": "CodeArts 일일 혜택 수령", "领取失败:{message}": "수령 실패: {message}", "领取并让官方确认": "수령하고 공식 확인 받기", "风控验证配置不完整,请稍后重试": "리스크 관리 인증 구성이 불완전합니다. 잠시 후 다시 시도하세요", "验证码": "인증 코드", "验证码业务请求超时,请刷新状态后重试": "인증 후 작업 요청 시간이 초과되었습니다. 상태를 새로고침한 후 다시 시도하세요.", "验证码令牌入池接口不可用": "인증 토큰 제출 API를 사용할 수 없습니다.", "验证码令牌未全部入池": "인증 토큰이 풀에 정상적으로 등록되지 않았습니다.", "验证码令牌池未返回状态": "인증 토큰 풀이 상태를 반환하지 않았습니다.", "验证码已使用,请重新验证": "이미 사용된 인증 토큰입니다. 다시 인증하세요.", "验证码已发送。收到后填入下方并点「登录并添加」": "인증 코드를 전송했습니다. 받은 후 아래에 입력하고 「로그인 후 추가」를 클릭하세요", "验证码已发送,请查看手机短信": "인증 코드를 전송했습니다. 휴대폰 SMS를 확인하세요", "验证码已发送,请查看手机短信。填入下方并点「登录并添加」即完成登录": "인증 코드를 전송했습니다. 휴대폰 SMS를 확인하세요. 아래에 입력하고 「로그인 후 추가」를 클릭하면 로그인이 완료됩니다", "验证码已发送,请查看短信": "인증 코드를 전송했습니다. 문자 메시지를 확인하세요", "验证码校验失败,请重试": "인증 코드 확인에 실패했습니다. 다시 시도하세요", "验证码校验超时,请重试": "인증 코드 확인 시간이 초과되었습니다. 다시 시도하세요", "验证码组件不可用,请重试": "캡차 컴포넌트를 사용할 수 없습니다. 다시 시도하세요", "验证码组件初始化超时,请重试": "캡차 컴포넌트 초기화 시간이 초과되었습니다. 다시 시도하세요", "验证码组件加载失败,请检查网络后重试": "캡차 컴포넌트 로드에 실패했습니다. 네트워크를 확인한 후 다시 시도하세요", "验证码组件加载异常,请重试": "캡차 컴포넌트 로드 중 오류가 발생했습니다. 다시 시도하세요", "验证码组件加载超时,请检查网络后重试": "캡차 컴포넌트 로드 시간이 초과되었습니다. 네트워크를 확인한 후 다시 시도하세요", "验证码组件未加载,请重启应用后重试": "캡차 컴포넌트가 로드되지 않았습니다. 앱을 다시 시작한 후 다시 시도하세요", "验证码组件返回的验证串不完整(请重试)": "인증 구성 요소가 불완전한 토큰을 반환했습니다. 다시 시도하세요.", "验证被上游风控拒绝,请稍后重试": "업스트림 보안 서비스가 인증을 거부했습니다. 잠시 후 다시 시도하세요.", "验证请求过于频繁,请稍后重试": "인증 요청이 너무 잦습니다. 잠시 후 다시 시도하세요.", "默认开启;填 0 关闭(发送「已设为默认浏览器」标记)": "기본으로 켜짐. 0을 입력하면 끔 (\"기본 브라우저로 설정됨\" 표시 전송)", "(免费额度池,模型名带 cline-free/ 前缀)。": " (무료 할당량 풀, 모델 이름에 cline-free/ 접두사 포함).", "(其中 {n} 把恢复为不限制)": " (이 중 {n}개는 제한 없음으로 복원)", "(必填)": " (필수)", "(有效期 {window})": "(유효 기간 {window})", "(订阅池,模型名带 cline-pass/ 前缀,需要账号有对应订阅)。": " (구독 풀, 모델 이름에 cline-pass/ 접두사 포함, 계정에 해당 구독이 있어야 합니다).", ",下一次最快 {minutes} 分钟后": ", 다음 시도는 최소 {minutes}분 후", ",并从 {n} 把 Key 的可用提供商里移除": ", Key {n}개의 사용 가능한 제공자 목록에서 이 제공자를 제거했습니다", " · 思考等级 ": " · 추론 레벨 ", " · 思考等级 {level}": " · 추론 레벨 {level}", " · 有映射 ": " · 매핑 있음 ", " · 限额中": " · 할당량 제한 중", " → 转发": " → 전달", " 上登记上游模型": "에 업스트림 모델 등록", " 与 ": " 와 ", " 个": "개", " 个模型 · 已启用 ": "개 모델 · 활성화됨 ", " 个账号": "개 계정", " 会广告它、请求它也会被转发到这家。 支持字母、数字与 ": "는 이 모델을 광고하고, 이 모델로 들어온 요청도 이 제공자로 전달됩니다. 영문, 숫자 및 ", " 失败": " 실패", " 已发出,等待上游首帧…": " 전송됨, 업스트림 첫 프레임 대기 중…", " 成功 ·": " 성공 ·", " 这类符号,但不能含空格或换行,且不超过 128 个字符。同一提供商内,同名绑定最多启用一条;已有启用绑定时不能新增,启用备用绑定会自动关闭其他同名绑定。不同提供商可各启用一条同名绑定,用于主备切换。": " 같은 기호를 사용할 수 있지만 공백이나 줄바꿈은 넣을 수 없고 128자 이하여야 합니다. 제공자별로 같은 이름의 바인딩은 하나만 활성화할 수 있습니다. 새 바인딩을 추가하기 전에 기존 활성 바인딩을 비활성화하세요. 대기 바인딩을 활성화하면 같은 이름의 다른 바인딩은 자동으로 비활성화됩니다. 장애 조치를 위해 서로 다른 제공자는 같은 이름의 바인딩을 각각 하나씩 활성화할 수 있습니다.", " 里的 ": "의 ", "(全局)": "(전역)", "(未选)": "(선택 안 함)", "0 家": "0곳", "<上游模型 ID>": "<업스트림 모델 ID>", "<上游模型>": "<업스트림 모델>", "<对外名>": "<외부 노출명>", "models.dev 补齐:对下游声明 {value}": "models.dev가 채움: 다운스트림에 {value}로 선언", "{action}映射 {alias}": "매핑 {alias} {action}", "{id}({name})": "{id}({name})", "{label}要填 1 ~ 1 亿之间的整数(留空 = {inherit})": "{label}에는 1 ~ 1억 사이의 정수를 입력해야 합니다(비워 두기 = {inherit})", "{label}:{value}(对下游声明的精确值){origin}{suffix}": "{label}: {value}(다운스트림에 선언하는 정확한 값){origin}{suffix}", "{label}:{value}(对下游声明的精确值){suffix}": "{label}: {value}(다운스트림에 선언되는 정확한 값){suffix}", "{label}:上游未声明{suffix}": "{label}: 업스트림 미선언{suffix}", "{label}:上游未声明(下游会按不支持处理){suffix}": "{label}: 업스트림 미선언(다운스트림은 미지원으로 처리){suffix}", "{label}:不支持{origin}{suffix}": "{label}: 미지원{origin}{suffix}", "{label}:不支持{suffix}": "{label}: 미지원{suffix}", "{label}:支持{origin}{suffix}": "{label}: 지원{origin}{suffix}", "{label}:支持{suffix}": "{label}: 지원{suffix}", "{level}(本次指定)": "{level}(이번에 지정)", "{name}({id})": "{name}({id})", "{name}(不在该家当前清单里)": "{name}(이 제공자의 현재 카탈로그에 없음)", "{n} 个": "{n}개", "{n} 个映射": "{n}개 매핑", "{n} 个模型": "{n}개 모델", "{n} 字节": "{n}바이트", "{provider}:模型清单为空,等待获取": "{provider}: 모델 목록이 비어 있어 가져오기를 기다리는 중", "{status}:模型获取失败": "{status}: 모델 가져오기 실패", "{total} 家 · 成功 {done}": "{total}곳 · 성공 {done}", "{total} 家 · 成功 {done} · 失败 {failed}": "{total}곳 · 성공 {done} · 실패 {failed}", "✅ 已保存 {id} 的能力位({provider})": "✅ {id}의 기능 플래그를 저장했습니다({provider})", "✅ 已导入 {added} 个模型({skipped} 个已存在,跳过)": "✅ 모델 {added}개를 가져왔습니다(이미 존재하는 {skipped}개는 건너뜀)", "✅ 已更新 {name} 的思考等级": "✅ {name}의 추론 레벨을 업데이트했습니다", "✅ 已添加映射 {name} → {target}({label}){suffix}": "✅ 매핑을 추가했습니다: {name} → {target}({label}){suffix}", "✅ 已登记 {name}({label}),但该提供商还没有可用账号,这一行要加上账号后才会显示": "✅ {name}({label})을 등록했습니다. 다만 이 제공자에는 아직 사용 가능한 계정이 없어 이 행은 계정을 추가한 뒤에야 표시됩니다", "✅ 已登记模型 {name}({label})": "✅ 모델 {name}({label})을 등록했습니다", "✅ 已登记自定义模型 {name}({label})": "✅ 커스텀 모델 {name}({label})을 등록했습니다", "✅ 批量{action}完成:共 {n} 个模型": "✅ 일괄 {action} 완료: 총 {n}개 모델", "✅ 批量{action}完成:共 {n} 个模型(跳过不可删除的 {skipped} 个)": "✅ 일괄 {action} 완료: 총 {n}개 모델(삭제할 수 없는 {skipped}개는 건너뜀)", "。": ".", "。上游清单给的值不准时,在这里改;": ". 업스트림 카탈로그 값이 정확하지 않으면 여기서 수정합니다; ", "。同一对外名可在多个提供商各添加一条: 下游用同一个名字请求,网关按账号优先级主备切换,失败自动落到下一个提供商。": ". 동일한 외부 노출명을 여러 제공자에 각각 추가할 수 있습니다: 다운스트림이 같은 이름으로 요청하면 게이트웨이가 계정 우선순위에 따라 주/대기로 전환하고, 실패하면 자동으로 다음 제공자로 넘어갑니다.", "「恢复继承」会把这一项交还给上游清单的值。": "'상속 복원'을 누르면 이 항목이 업스트림 카탈로그 값으로 돌아갑니다.", "「来源」列会标成": "'소스' 열이 ", "上下文 / 输出": "컨텍스트 / 출력", "上下文窗口": "컨텍스트 윈도우", "上下文窗口 {input} / 最大输出 Token {output} —— 点击修改模型能力": "컨텍스트 윈도우 {input} / 최대 출력 Token {output} —— 클릭하여 모델 기능 수정", "上游 {model}": "업스트림 {model}", "上游不认识这个模型名:先点「获取模型」刷新清单,或核对默认绑定指向的上游模型。": "업스트림이 이 모델 이름을 인식하지 못합니다: 먼저 '모델 가져오기'를 눌러 카탈로그를 새로 고치거나, 기본 바인딩이 가리키는 업스트림 모델을 확인하세요.", "上游原始响应": "업스트림 원본 응답", "上游可用档位:{levels}": "업스트림 지원 레벨: {levels}", "上游固定为 {level},绑定其他等级也无法调高。": "업스트림이 {level}로 고정되어 있어 다른 레벨을 바인딩해도 높일 수 없습니다.", "上游已经不再提供这个模型(可能已下线或改了 ID)": "업스트림이 더 이상 이 모델을 제공하지 않습니다(서비스 종료 또는 ID 변경 가능성).", "上游拒绝了这条登录态:重新登录一次,或把这条账号删掉。": "업스트림이 이 로그인 세션을 거부했습니다: 다시 로그인하거나 이 계정을 삭제하세요.", "上游未声明": "업스트림 미선언", "上游未声明(下游会按不支持处理)": "업스트림 미선언(다운스트림은 미지원으로 처리)", "上游未部署": "업스트림 미배포", "上游模型": "업스트림 모델", "上游模型 ID": "업스트림 모델 ID", "上游没在预算内给完回答。可以只勾一个账号再测一次,看是普遍慢还是某一个账号慢。": "업스트림이 시간 예산 안에 응답을 끝마치지 못했습니다. 계정 하나만 체크해 다시 테스트하면 전체가 느린지 특정 계정만 느린지 알 수 있습니다.", "上游没有给出可读的错误说明": "업스트림이 읽을 수 있는 오류 설명을 제공하지 않았습니다", "上游没有返回任何模型": "업스트림이 어떤 모델도 반환하지 않았습니다", "上游目录列出了这个模型,但推理端尚未识别;保留在清单中,后续探测成功后自动清除标记": "업스트림 카탈로그에 이 모델이 있지만 추론 백엔드가 아직 인식하지 못합니다. 목록에 유지되며 이후 연결 확인에 성공하면 표시가 자동으로 제거됩니다.", "上游目录尚未拉到,用的是内置静态清单;点「刷新模型清单」可重试": "업스트림 디렉터리를 아직 가져오지 못해 내장 정적 카탈로그를 사용 중입니다; '모델 카탈로그 새로 고침'을 누르면 다시 시도할 수 있습니다", "上游能列出这个模型,但官方客户端不展示它;本仓已默认关闭它的默认绑定(点这一行的开关可以手动打开)": "업스트림은 이 모델을 반환하지만 공식 클라이언트는 표시하지 않습니다. 게이트웨이가 기본 바인딩을 비활성화했습니다(행 스위치로 수동 활성화 가능)", "下游客户端": "다운스트림 클라이언트", "下游请求 ": "다운스트림 요청 ", "不展示": "표시 안 함", "不影响网关的转发与路由": "게이트웨이의 전달과 라우팅에는 영향을 주지 않습니다", "不支持": "미지원", "不覆盖": "덮어쓰지 않음", "两边原因不一样时各自处理。如果": "양쪽 원인이 다르면 각각 처리합니다. 만약 ", "中止测试": "테스트 중단", "仅支持已识别压缩格式的 ZCode;客户端修改压缩格式后可能需要更新适配。": "확인된 ZCode 압축 형식만 지원합니다. 클라이언트가 압축 형식을 변경하면 지원 업데이트가 필요할 수 있습니다.", "仅本次测试临时生效,不修改账号保存的代理配置。可选「网络代理」页里的节点或强制直连。": "이번 테스트에만 일시적으로 적용되며 계정에 저장된 프록시 설정은 변경되지 않습니다. '네트워크 프록시' 페이지의 노드를 선택하거나 직접 연결을 강제할 수 있습니다.", "从这一家的上游拉一份模型清单,勾选要哪些再导入(已添加的不会重复导入)": "이 제공자의 업스트림에서 모델 카탈로그를 받아 필요한 항목을 체크한 뒤 가져옵니다(이미 추가된 항목은 중복으로 가져오지 않습니다)", "代理池响应异常": "프록시 풀 응답 오류", "以模型本名直发": "모델 본래 이름으로 직접 전송", "以这个上游模型发一次最小请求,走真实转发链路": "이 업스트림 모델로 최소 요청을 한 번 보내 실제 전달 경로를 거칩니다", "例如 gpt-4o": "예: gpt-4o", "例如 gpt-5.5-preview": "예: gpt-5.5-preview", "保存": "저장", "保存中…": "저장 중…", "保存失败:{message}": "저장 실패: {message}", "保存映射": "매핑 저장", "保存等级": "레벨 저장", "倍率": "배율", "倍率升序": "배율 오름차순", "倍率升序,点击切换为降序": "배율 오름차순, 클릭하여 내림차순으로 전환", "倍率降序": "배율 내림차순", "倍率降序,点击切换为升序": "배율 내림차순, 클릭하여 오름차순으로 전환", "全选当前筛选出的模型(跨分页);再点取消": "현재 필터된 모델 모두 선택(페이지 전체); 다시 누르면 해제", "全选当前筛选结果": "현재 필터 결과 모두 선택", "全选未添加": "미추가 항목 모두 선택", "全选({n})": "모두 선택({n})", "全部": "전체", "全部删除": "모두 삭제", "全部映射": "모든 매핑", "全部自定义提供商": "커스텀 제공자 전체", "全部({n} 家)": "전체({n}곳)", "共 {n} 家 · 点「获取模型」开始": "총 {n}곳 · '모델 가져오기'를 눌러 시작", "关闭": "닫기", "关闭即中止": "닫으면 중단됨", "关闭后保留规则,所有请求按原模型处理。": "비활성화해도 규칙은 유지되며 모든 요청은 원래 모델로 처리됩니다.", "其余 {n} 个会被跳过。": "나머지 {n}개는 건너뜁니다.", "内置": "내장", "内置提供商": "내장 제공자", "内置清单": "내장 카탈로그", "再测一次": "다시 테스트", "删除": "삭제", "删除中…": "삭제 중…", "删除入口未就绪,请重试或重启应用": "삭제 기능이 준비되지 않았습니다. 다시 시도하거나 앱을 재시작하세요", "删除全部未挂载映射": "연결되지 않은 매핑 모두 삭제", "删除映射": "매핑 삭제", "删除映射 {alias}": "매핑 {alias} 삭제", "删除未挂载的映射": "연결되지 않은 매핑 삭제", "删除自定义提供商": "커스텀 제공자 삭제", "删除规则 {n}": "규칙 {n} 삭제", "删除这个自定义提供商(连同名下账号)": "이 커스텀 제공자 삭제(소속 계정 포함)", "删除这条映射": "이 매핑 삭제", "删除选中的模型": "선택한 모델 삭제", "刷新全部家(逐家打上游)": "모든 제공자 새로 고침(제공자마다 업스트림 1회)", "刷新完成,但没有得到任何结果": "새로 고침은 완료되었지만 결과가 없습니다", "刷新模型管理页里各提供商的远程模型目录,逐家结果列在弹窗里": "모델 관리 페이지에서 각 제공자의 원격 모델 디렉터리를 새로 고치고, 제공자별 결과를 대화상자에 표시합니다", "刷新清单": "목록 새로 고침", "加载中…": "로드 중…", "勾上它,导入后即进入这家的清单": "체크하면 가져온 뒤 이 제공자의 카탈로그에 들어갑니다", "勾几个就并行测几次;默认选队列里最靠前的一个。": "체크한 수만큼 병렬로 테스트합니다; 기본값은 대기열에서 가장 앞선 하나입니다.", "勾选后可批量操作": "체크하면 일괄 작업을 할 수 있습니다", "压缩模型": "압축 모델", "压缩路由": "압축 라우팅", "压缩路由入口尚未就绪,请刷新页面后重试": "압축 라우팅이 아직 준비되지 않았습니다. 페이지를 새로고침한 후 다시 시도하세요.", "压缩路由已保存,下次压缩请求生效": "압축 라우팅을 저장했습니다. 다음 압축 요청부터 적용됩니다.", "压缩路由接口返回了不完整的数据": "압축 라우팅 API가 불완전한 데이터를 반환했습니다.", "原始 ID 已作为默认绑定,请直接使用该绑定的开关或等级按钮": "원본 ID가 기본 바인딩으로 설정되어 있으니 해당 바인딩의 스위치나 레벨 버튼을 직접 사용하세요", "原始 ID 的默认绑定不能删除,请关闭它的开关": "원래 ID의 기본 바인딩은 삭제할 수 없습니다. 스위치를 비활성화하세요.", "取消": "취소", "另有 {n} 个非手动登记的模型将被跳过。": "수동 등록이 아닌 모델 {n}개는 건너뜁니다.", "另有 {n} 条别名映射({aliases}),别名不参与本次": "별칭 매핑 {n}개({aliases})는 이번에 포함되지 않습니다", "只刷新这一家的模型清单": "이 제공자의 모델 목록만 새로 고침", "只在识别到 ZCode 上下文压缩请求时切换模型,普通对话仍使用原模型。": "ZCode 컨텍스트 압축 요청으로 식별된 경우에만 모델을 전환합니다. 일반 대화는 원래 모델을 계속 사용합니다.", "只属于这一家": "이 제공자에만 속함", "可删除 {n} 个(手动登记 / 自定义家);": "삭제 가능 {n}개(수동 등록 / 커스텀 제공자); ", "可见": "표시됨", "可见性": "표시 상태", "可配思考档位": "설정 가능한 추론 레벨", "同一客户端的来源模型不能重复:{model}": "같은 클라이언트에서 원본 모델을 중복 지정할 수 없습니다: {model}", "同一条错误出现在所有账号上": "동일한 오류가 모든 계정에서 나타난다면", "后端桥不可用": "백엔드 브리지를 사용할 수 없습니다", "启用压缩路由": "압축 라우팅 활성화", "启用后将自动关闭该提供商的其他同名绑定:{bindings}": "활성화하면 이 제공자의 같은 이름을 가진 다른 바인딩이 자동으로 비활성화됩니다: {bindings}", "启用规则 {n}": "규칙 {n} 활성화", "回复": "응답", "固定思考档位": "고정 추론 레벨", "固定思考档位:{level}": "고정 추론 레벨: {level}", "图片": "이미지", "图片生成": "이미지 생성", "图片生成模型请通过 /v1/images/generations 调用,暂不支持对话测试": "이미지 모델은 /v1/images/generations로 호출하세요. 대화 테스트는 아직 지원하지 않습니다", "图片编辑": "이미지 편집", "图片识别": "이미지 인식", "圆点带内侧描边 = 由 models.dev 补齐;右上角小点 = 你手动覆盖过;虚线圈 = 未声明。悬停某一枚可看逐项出处。": "점 안쪽 테두리 = models.dev가 채움; 오른쪽 위 작은 점 = 직접 덮어씀; 점선 원 = 미선언. 점에 마우스를 올리면 항목별 출처를 볼 수 있습니다.", "在 ": "등록 대상: ", "填上游真正认识的那个模型 ID(不是给下游用的名字)。登记后它会进入该家的模型清单: 表格里出现这一行、": "업스트림이 실제로 인식하는 모델 ID를 입력하세요(다운스트림에 쓰는 이름이 아닙니다). 등록하면 이 제공자의 모델 카탈로그에 들어가 표에 이 행이 나타나고, ", "复制": "복사", "多半是上游自己的问题,过一会儿再试。同一个错误出现在所有账号上时,先查模型目录与映射。": "대부분 업스트림 자체의 문제이니 잠시 후 다시 시도하세요. 동일한 오류가 모든 계정에서 나타나면 모델 카탈로그와 매핑을 먼저 확인하세요.", "失败": "실패", "失败 {n} 个 · 首个失败:{error}": "{n}개 실패 · 첫 실패: {error}", "如果 ZCode 已设置压缩路由,网关看到的是它改写后的模型。建议同一套规则只在一处配置。": "ZCode에 이미 압축 라우팅이 설정되어 있으면 게이트웨이는 변경된 모델을 받습니다. 같은 규칙은 한 곳에서만 설정하는 것을 권장합니다.", "完成": "완료", "官方客户端会展示这个模型": "공식 클라이언트가 이 모델을 표시합니다", "对下游声明的能力(工具调用 / 图片识别 / 视频识别 / 支持思考)—— 点击修改": "다운스트림에 선언한 기능(도구 호출 / 이미지 인식 / 비디오 인식 / 추론 지원) —— 클릭하여 수정", "对外名可以是中文、字母、数字与 ": "공개 이름에는 중국어, 영문, 숫자 및 ", "对外名可自由命名,允许与上游模型 ID 同名(同名时该上游的原生路由优先,映射作兜底); 支持字母、数字与 ": "외부 노출명은 자유롭게 지정할 수 있고 업스트림 모델 ID와 같은 이름도 허용됩니다(이름이 같으면 해당 업스트림의 네이티브 라우팅이 우선하고 매핑이 폴백으로 동작합니다); 영문, 숫자 및 ", "对外映射名(下游请求时用)": "외부 매핑명(다운스트림 요청 시 사용)", "对话协议": "대화 프로토콜", "对话协议的说明": "대화 프로토콜 설명", "对选中的 {n} 个模型执行批量操作": "선택한 {n}개 모델에 일괄 작업 실행", "导入失败:{message}": "가져오기 실패: {message}", "导入选中的 {n} 个模型": "선택한 {n}개 모델 가져오기", "将作用于以下模型": "다음 모델에 적용됩니다", "尚未获取": "아직 가져오지 않음", "尚未配置压缩规则,默认使用原模型。": "압축 규칙이 없습니다. 기본적으로 원래 모델을 사용합니다.", "尝试 {n} 次": "시도 {n}회", "展开其余 {n} 个模型 ▾": "나머지 모델 {n}개 펼치기 ▾", "工具": "도구", "工具调用": "도구 호출", "已中止在途测试({n} 个账号)": "진행 중이던 테스트를 중단했습니다({n}개 계정)", "已删除 {n} 条未挂载映射": "연결되지 않은 매핑 {n}개를 삭제했습니다", "已刷新": "새로 고침됨", "已启用": "활성화됨", "已启用 {name},其他同名绑定已自动关闭": "{name}이(가) 활성화되었습니다. 같은 이름의 다른 바인딩은 자동으로 비활성화되었습니다.", "已填写:对下游声明 {value}": "입력됨: 다운스트림에 {value} 선언", "已添加": "추가됨", "已等待 {seconds}s": "{seconds}s 대기 중", "已覆盖上游值": "업스트림 값을 덮어씀", "已覆盖:对下游声明 {value}": "덮어씀: 다운스트림에 {value} 선언", "已选 ": "선택 ", "已选 {picked} 个 · 上游共 {upstream} 个 · 清单已有 {managed} 个": "선택 {picked}개 · 업스트림 총 {upstream}개 · 카탈로그 기존 {managed}개", "开始测试": "테스트 시작", "当前环境不支持代理池": "현재 환경은 프록시 풀을 지원하지 않습니다", "当前环境不支持读取 API Key": "현재 환경에서는 API Key를 불러올 수 없습니다", "当前通道未声明可用档位,映射等级不会注入;请先获取模型目录。": "현재 경로가 지원 레벨을 선언하지 않았습니다. 매핑 레벨은 주입하지 않으므로 먼저 모델 목록을 가져오세요.", "待获取": "가져오기 대기", "思考": "추론", "思考等级": "추론 레벨", "思考等级 {level}": "추론 레벨 {level}", "思考等级 {level}(点击修改)": "추론 레벨 {level}(클릭하여 수정)", "思考等级的注入规则": "추론 레벨 주입 규칙", "思考过程({n} 字)": "추론 과정({n}자)", "恢复继承": "상속 복원", "成功 {ok} 个,失败 {failed} 个": "성공 {ok}개, 실패 {failed}개", "所选 API Key 无权调用此模型或提供商": "선택한 API Key는 이 모델 또는 제공자에 접근할 수 없습니다", "所选模型含同一提供商的同名绑定「{id}」,请分别启用,避免相互关闭": "선택한 모델에 같은 제공자의 동일한 이름 ‘{id}’ 바인딩이 있습니다. 서로 비활성화하지 않도록 개별적으로 활성화하세요.", "所选模型没有共同可用档位,请分别设置或清除绑定。": "선택한 모델에 공통 지원 레벨이 없습니다. 각각 설정하거나 바인딩을 지우세요.", "手动": "수동", "手动登记": "수동 등록", "手动登记的上游模型;移除它会直接删掉这条登记": "수동으로 등록한 업스트림 모델; 제거하면 이 등록이 바로 삭제됩니다", "执行{action}": "{action} 실행", "批量{action}完成:成功 {ok} 个,失败 {failed} 个": "일괄 {action} 완료: 성공 {ok}개, 실패 {failed}개", "批量操作": "일괄 작업", "批量操作 · 已选 {n} 个模型": "일괄 작업 · {n}개 모델 선택됨", "按倍率升序排列": "배율 오름차순으로 정렬", "按倍率排序": "배율로 정렬", "按可见性筛选": "표시 상태로 필터", "按客户端发送的模型 ID 匹配,支持模型别名和对话路由组;每次只映射一次。": "클라이언트가 보낸 모델 ID로 일치 여부를 확인합니다. 모델 별칭과 대화 라우팅 그룹을 지원하며 요청당 한 번만 매핑합니다.", "按所选网关对话协议组装请求并校验响应转换(Chat Completions / Responses / Anthropic Messages)。": "선택한 게이트웨이 대화 프로토콜로 요청을 구성하고 응답 변환을 검증합니다(Chat Completions / Responses / Anthropic Messages).", "按提供商分组排序,已启用模型优先;未知倍率排在末尾": "제공자 그룹 내에서 정렬하며 활성화된 모델 우선; 배율을 알 수 없는 모델은 마지막에 표시", "按提供商选择": "제공자별 선택", "按状态筛选": "상태별 필터", "提供商": "제공자", "搜索模型": "모델 검색", "搜索模型 ID / 名称 / 映射名…": "모델 ID / 이름 / 매핑명 검색…", "搜索模型 ID / 提供商": "모델 ID / 제공자 검색", "搜索模型 ID…": "모델 ID 검색…", "搜索账号…": "계정 검색…", "操作": "작업", "支持": "지원", "支持思考": "추론 지원", "收起 ▴": "접기 ▴", "放弃尚未保存的压缩路由修改?": "저장하지 않은 압축 라우팅 변경 사항을 버릴까요?", "数字带虚线底 = 由 models.dev 补齐;右上角小点 = 你手动覆盖过;— = 未声明。点任意一格可改。": "숫자에 점선 밑줄 = models.dev가 채움; 오른쪽 위 작은 점 = 직접 덮어씀; — = 미선언. 아무 셀이나 클릭해 수정할 수 있습니다.", "新建一个自定义提供商(同时创建它的第一个账号)": "커스텀 제공자 새로 만들기(첫 계정도 함께 생성)", "映射、思考等级、上下文窗口与工具调用能力在桌面端「模型管理」里改;手机端只做启停。": "매핑, 추론 수준, 컨텍스트 창, 도구 호출 기능은 데스크톱 「모델 관리」에서 변경합니다. 모바일에서는 켜기/끄기만 지원합니다.", "映射「{alias} → {target}」不存在": "매핑 '{alias} → {target}'이(가) 존재하지 않습니다", "映射上未绑定思考等级,「跟随映射」等于这次不注入": "매핑에 추론 레벨이 바인딩되지 않아 '매핑 따르기'는 이번에 주입하지 않습니다", "映射已关闭": "매핑 비활성화됨", "映射已关闭,点击启用": "매핑 비활성화됨, 클릭하여 활성화", "映射已删除": "매핑이 삭제되었습니다", "映射已启用": "매핑 활성화됨", "映射已启用,其他同名绑定已自动关闭": "매핑이 활성화되었습니다. 같은 이름의 다른 바인딩은 자동으로 비활성화되었습니다.", "映射已启用,点击关闭": "매핑 활성화됨, 클릭하여 비활성화", "映射已绑定思考等级 {level},可用时会优先覆盖本次指定的等级": "이 매핑에는 추론 레벨 {level}이 바인딩되어 있으며, 지원되는 경우 이번 테스트에서 지정한 레벨을 덮어씁니다", "暂无模型(请先添加账号)": "모델 없음(먼저 계정을 추가하세요)", "更新日期": "업데이트 날짜", "最多可添加 {n} 条压缩规则": "압축 규칙은 최대 {n}개까지 추가할 수 있습니다.", "最大输出 Token": "최대 출력 Token", "有映射": "매핑 있음", "未填写": "미입력", "未填写(下游按未声明处理)": "미입력(다운스트림은 미선언으로 처리)", "未声明": "미선언", "未挂载映射:已删除 {removed} 条,失败 {failed} 条。首个失败:{error}": "연결되지 않은 매핑: {removed}개 삭제, {failed}개 실패. 첫 번째 오류: {error}", "未挂载的模型映射": "연결되지 않은 모델 매핑", "未接入": "미연결", "未添加": "미추가", "未知": "알 수 없음", "本机网关没有返回结论": "로컬 게이트웨이가 결과를 반환하지 않았습니다", "本次没有取到新内容": "이번에는 새 내용을 가져오지 못했습니다", "本次测试的发送口径": "이번 테스트의 전송 기준", "来源": "소스", "来源未知": "소스 알 수 없음", "来源模型": "원본 모델", "来源模型和压缩模型不能相同": "원본 모델과 압축 모델은 서로 달라야 합니다.", "来自上游目录接口,清单拉取于 {at};刷新失败时保留上一份成功结果": "업스트림 디렉터리 API에서 가져왔으며, 카탈로그는 {at}에 수집했습니다; 새로 고침 실패 시 마지막 성공 결과를 유지합니다", "来自上游目录接口;刷新失败时保留上一份成功结果": "업스트림 디렉터리 API에서 가져왔습니다; 새로 고침 실패 시 마지막 성공 결과를 유지합니다", "桥接调用返回空(本机网关没有响应这次测试)": "브리지 호출이 빈 응답을 반환했습니다(로컬 게이트웨이가 이번 테스트에 응답하지 않았습니다)", "模型 ID「{id}」在该提供商已有启用绑定,请先关闭它再添加": "이 제공자에는 모델 ID ‘{id}’의 활성 바인딩이 이미 있습니다. 먼저 비활성화한 후 추가하세요.", "模型 ID「{id}」已存在,请使用已有模型": "모델 ID ‘{id}’가 이미 존재합니다. 기존 모델을 사용하세요.", "模型 ID「{id}」已绑定到此上游模型,请直接使用已有绑定": "모델 ID ‘{id}’가 이 업스트림 모델에 이미 바인딩되어 있습니다. 기존 바인딩을 사용하세요.", "模型「{name}」已存在(忽略大小写判重)": "모델 '{name}'이(가) 이미 존재합니다(대소문자 무시 중복 검사)", "模型已移除": "모델이 제거되었습니다", "模型数": "모델 수", "模型映射": "모델 매핑", "模型来源": "모델 소스", "模型清单为空:已有可用账号,请点「获取模型」拉取目录": "모델 목록이 비어 있습니다. 사용 가능한 계정이 있으므로 ‘모델 가져오기’를 클릭해 목록을 가져오세요.", "模型清单已刷新": "모델 목록을 새로 고쳤습니다", "模型目录刷新不可用,请重新打开面板": "모델 목록 새로고침을 사용할 수 없습니다. 패널을 다시 여세요.", "模型目录刷新结果": "모델 목록 새로고침 결과", "模型管理表": "모델 관리 표", "模型能力": "모델 기능", "模型获取失败": "모델 가져오기 실패", "正在刷新…": "새로 고치는 중…", "正在测 ": "테스트 중 ", "正在获取…": "가져오는 중…", "正在读取压缩路由…": "압축 라우팅 불러오는 중…", "每条映射 = 对外名 → 上游模型;原始 ID 与别名有独立开关,默认绑定永远存在(没有映射时是合成的那条)。": "각 매핑 = 외부 노출명 → 업스트림 모델; 원본 ID와 별칭에는 각각 독립된 스위치가 있고, 기본 바인딩은 항상 존재합니다(매핑이 없을 때는 합성된 한 건).", "没有匹配「{keyword}」的模型": "'{keyword}'와 일치하는 모델이 없습니다", "没有匹配当前筛选的模型": "현재 필터와 일치하는 모델이 없습니다", "没有匹配的模型": "일치하는 모델이 없습니다", "没有可选的对话模型,请先启用模型和对应账号。": "선택할 수 있는 대화 모델이 없습니다. 먼저 모델과 해당 계정을 활성화하세요.", "没有选中任何模型": "선택된 모델이 없습니다", "没有选中的模型": "선택된 모델이 없습니다", "流式请求": "스트리밍 요청", "流式请求的说明": "스트리밍 요청 안내", "测试": "테스트", "测试未通过": "테스트 미통과", "测试模型": "모델 테스트", "测试结果": "테스트 결과", "测试节点": "테스트 노드", "测试节点的说明": "테스트 노드 설명", "测试账号": "테스트 계정", "测试账号的说明": "테스트 계정 안내", "添加模型映射": "모델 매핑 추가", "添加自定义模型": "커스텀 모델 추가", "清空": "비우기", "清除覆盖,回到上游声明值": "덮어쓰기를 지우고 업스트림 선언 값으로 복귀", "清除这一项(回到未声明)": "이 항목 지우기(미선언으로 복귀)", "清除(不覆盖)": "지우기(덮어쓰지 않음)", "点击复制:{name}": "클릭하여 복사: {name}", "点右侧「获取模型」从上游拉取这家的模型清单": "오른쪽 '모델 가져오기'를 눌러 업스트림에서 이 제공자의 모델 카탈로그를 가져오세요", "用哪个账号去拉这家的模型清单": "이 제공자의 모델 카탈로그를 가져올 계정", "用户提示词": "사용자 프롬프트", "用户登记的自定义模型;整份清单只属于这一家": "사용자가 등록한 커스텀 모델. 목록 전체가 이 제공자 전용입니다", "用时 {time}": "소요 시간 {time}", "用时 {time} · 首字 {ttfb}": "소요 시간 {time} · 첫 토큰 {ttfb}", "留空则不携带;设置页的提示词模式照常生效": "비워 두면 전송하지 않습니다; 설정 페이지의 프롬프트 모드는 그대로 적용됩니다", "留空用默认问候「你好」": "비워 두면 기본 인사말 '你好'를 사용합니다", "的模型合集:每家的清单互相独立,别名也只在自己那家内生效;要改名称 / 协议 / Base URL,到账号页该家账号的「设置」→ 提供商一栏。": " 의 모델 모음입니다: 각 제공자의 목록은 서로 독립적이고 별칭도 자기 제공자 안에서만 유효합니다. 이름 / 프로토콜 / Base URL 변경은 계정 페이지의 해당 계정 \"설정\" → 제공자 항목에서 합니다.", "目录模块未就绪": "디렉터리 모듈이 준비되지 않았습니다", "目标使用自身的思考设置或默认值,仍受网关 Key 权限限制;不可用时明确报错,不自动退回原模型。": "대상 모델 자체의 추론 설정이나 기본값을 사용하며 게이트웨이 키 권한 제한도 적용됩니다. 사용할 수 없으면 오류를 반환하고 원래 모델로 자동 복귀하지 않습니다.", "目标已下线": "대상 종료됨", "直接移除": "즉시 제거", "直连(不使用代理)": "직접 연결(프록시 사용 안 함)", "看的能力声明(": "가 보는 기능 선언입니다(", "真实链路 · 消耗少量额度 · 日志带「测试」标记,不计报表": "실제 경로 · 소량의 할당량 소모 · 로그에 '테스트' 표시, 리포트 미집계", "确定删除映射「{alias} → {target}」?": "매핑 '{alias} → {target}'을 삭제하시겠습니까?", "确定删除映射「{alias} → {target}」?它指向的上游模型已不在清单里。": "매핑 “{alias} → {target}”을(를) 삭제할까요? 가리키는 업스트림 모델이 목록에 없습니다.", "确定删除映射「{alias} → {target}」?它指向的上游模型已不在清单里。": "매핑 “{alias} → {target}”을(를) 삭제할까요? 가리키는 업스트림 모델이 목록에 없습니다.", "确定删除此区域列出的全部 {n} 条未挂载映射?此操作不可撤销,不会删除正常挂载的映射或模型。": "이 영역에 표시된 연결되지 않은 매핑 {n}개를 모두 삭제할까요? 이 작업은 되돌릴 수 없습니다. 정상적으로 연결된 매핑이나 모델은 삭제되지 않습니다.", "确定删除选中的 {count} 个模型登记?删除后 /v1/models 不再广告它们、请求也会被拒。": "선택한 {count}개 모델 등록을 삭제하시겠습니까? 삭제하면 /v1/models에서 더 이상 공지되지 않고 요청도 거부됩니다.", "确定移除自定义模型「{id}」?这条登记会被直接移除,之后 /v1/models 不再广告它、请求它也会被拒。": "커스텀 모델 '{id}'를 제거하시겠습니까? 이 등록은 즉시 제거되며, 이후 /v1/models에서 더 이상 공지되지 않고 이 모델로의 요청도 거부됩니다.", "确认桌面端还在运行,再重试一次。": "데스크톱 앱이 실행 중인지 확인한 뒤 다시 시도하세요.", "确认选择": "선택 확인", "社区参考档位,不代表当前上游通道支持;实际以该通道目录为准。": "커뮤니티 참고 레벨은 현재 업스트림 경로의 지원을 보장하지 않습니다. 해당 경로의 목록이 우선합니다.", "社区参考档位:{levels}": "커뮤니티 참고 레벨: {levels}", "移除": "제거", "移除自定义模型": "커스텀 모델 제거", "系统提示词": "시스템 프롬프트", "绑定 {requested},按当前通道将发送 {effective}。": "{requested}로 바인딩되어 있으며 현재 경로는 {effective}를 보냅니다.", "绑定在「对外名 → 上游模型」这一条映射上的思考等级(列表照抄 OmniProxy 的手动绑定),选「不覆盖」表示不给这条映射指定等级。它会跟着这条映射注入转发,由承载的那家翻译成自己的档位字段(CatPaw 归并成 low/high/max,Qoder 按模型声明的档位归一)。以下几种情况故意不注入:① off / none(关闭思考)—— 本项目没有安全的表达方式;② 表外的自定义等级(各家能力范围不同,无法判断上游收不收);③ 客户端请求体里已经自己指定了档位(那是更明确的意图,绑定不覆盖);④ 这家上游不认识档位字段(如 WorkBuddy / 小浣熊 / AutoClaw / Cline)。注入与跳过都会写进详细日志。": "'외부 노출명 → 업스트림 모델' 매핑에 바인딩된 추론 레벨입니다(목록은 OmniProxy의 수동 바인딩을 그대로 따릅니다). '덮어쓰지 않음'을 선택하면 이 매핑에 레벨을 지정하지 않습니다. 이 값은 해당 매핑을 따라 전달에 주입되며, 이를 담당하는 제공자가 자체 레벨 필드로 변환합니다(CatPaw는 low/high/max로 병합하고, Qoder는 모델이 선언한 레벨로 정규화합니다). 다음 경우에는 의도적으로 주입하지 않습니다: ① off / none(추론 끄기) — 이 프로젝트에는 안전한 표현 방식이 없습니다; ② 목록에 없는 커스텀 레벨(제공자마다 지원 범위가 달라 업스트림이 받는지 판단할 수 없습니다); ③ 클라이언트 요청 본문에 이미 레벨이 지정된 경우(더 명확한 의도이므로 바인딩으로 덮어쓰지 않습니다); ④ 이 업스트림이 레벨 필드를 인식하지 못하는 경우(예: WorkBuddy / 小浣熊 / AutoClaw / Cline). 주입과 건너뛰기는 모두 상세 로그에 기록됩니다.", "继承上游": "업스트림 상속", "继承上游 {value}": "업스트림 상속 {value}", "继承上游:{value}": "업스트림 상속: {value}", "网关未返回保存后的提供商记录": "게이트웨이가 저장된 제공자 레코드를 반환하지 않았습니다.", "网关未返回逐家模型目录刷新结果": "게이트웨이가 제공업체별 모델 목록 새로고침 결과를 반환하지 않았습니다", "能力": "기능", "自定义 · 全部": "커스텀 · 전체", "自定义家": "커스텀 제공자", "自定义提供商": "커스텀 제공자", "自定义提供商的清单": "커스텀 제공자의 카탈로그", "自定义提供商还没有模型:先在左栏选一家,点「添加模型」登记,或「获取上游模型」从上游拉取": "이 커스텀 제공자에는 아직 모델이 없습니다: 왼쪽 목록에서 제공자를 고르고 \"모델 추가\"로 등록하거나 \"업스트림 모델 가져오기\"로 받아오세요", "自定义模型已移除": "커스텀 모델이 제거되었습니다", "自定义等级": "커스텀 레벨", "自定义等级…": "커스텀 레벨…", "自定义等级(例如 custom-high)": "커스텀 레벨(예: custom-high)", "至少选一个测试账号": "테스트 계정을 최소 하나 선택하세요", "节点 {proxy}": "노드 {proxy}", "获取": "가져오기", "获取中…": "가져오는 중…", "获取失败:{message}": "가져오기 실패: {message}", "获取模型": "모델 가져오기", "获取模型 — {name}": "모델 가져오기 — {name}", "规则 {n}": "규칙 {n}", "规则不绑定提供商,压缩模型由其路由配置决定使用哪家提供商。": "규칙은 특정 제공자에 연결되지 않습니다. 사용할 제공자는 압축 모델의 라우팅 설정에 따라 결정됩니다.", "视频": "비디오", "视频识别": "비디오 인식", "设置 / 清除会应用到选中模型的": "설정 / 지우기는 선택한 모델의 ", "设置思考等级": "추론 레벨 설정", "设置思考等级后,会覆盖下游请求中的等级;选择“不覆盖”则保留下游参数。实际档位以提供商支持范围为准,无法注入时保留原请求并记录原因。off / none 仍不由映射注入。": "추론 레벨을 설정하면 다운스트림 요청에서 지정한 레벨을 덮어씁니다. ‘덮어쓰지 않음’을 선택하면 다운스트림 매개변수를 유지합니다. 실제 레벨은 제공자의 지원 범위에 따르며, 적용할 수 없으면 원래 요청을 유지하고 이유를 로그에 기록합니다. 매핑은 계속해서 off / none을 주입하지 않습니다.", "设置思考等级(当前未绑定)": "추론 레벨 설정(현재 미바인딩)", "该提供商已不存在(可能已被删除),请刷新列表": "이 제공자가 더 이상 존재하지 않습니다(삭제되었을 수 있습니다). 목록을 새로 고치세요", "该提供商当前没有可选的上游模型": "이 제공자에 현재 선택할 수 있는 업스트림 모델이 없습니다", "该提供商没有可用账号(要在账号页启用一个、且凭证完整),一行都发不出去": "이 제공자에는 사용 가능한 계정이 없어(계정 페이지에서 하나를 활성화하고 자격 증명을 완성해야 합니다) 한 행도 전송할 수 없습니다", "该提供商的清单里没有模型「{name}」": "이 제공자의 카탈로그에 모델 '{name}'이(가) 없습니다", "该等级无法注入,请选择上游可用档位或清除绑定。": "이 레벨은 주입할 수 없습니다. 업스트림 지원 레벨을 선택하거나 바인딩을 지우세요.", "该行当前未启用:测试照常按本名直发(「先测通、再决定要不要启用」正是这颗按钮的用法),但本行的思考等级绑定不参与本次,生产路由也要等绑定打开后才会放行": "이 행은 현재 미활성 상태입니다: 테스트는 평소처럼 본래 이름으로 바로 전송됩니다('먼저 테스트로 통과시킨 뒤 활성화 여부를 정한다'가 바로 이 버튼의 용도입니다). 다만 이 행의 추론 레벨 바인딩은 이번에 적용되지 않으며, 프로덕션 라우팅도 바인딩을 켠 뒤에야 허용됩니다", "该账号对这个模型正在限额冷却,等一会儿自己会好;也可以先测别的账号。": "이 계정은 이 모델에 대해 할당량 쿨다운 중이라 잠시 기다리면 해제됩니다; 다른 계정을 먼저 테스트해도 됩니다.", "说明": "설명", "请先选择一把 API Key": "먼저 API Key를 선택하세요", "请填写上游模型 ID": "업스트림 모델 ID를 입력하세요", "请填写对外映射名": "외부 매핑명을 입력하세요", "请填写模型 ID": "모델 ID를 입력하세요", "请填写自定义思考等级,或改选候选档 / 「清除」": "커스텀 추론 레벨을 입력하거나 후보 레벨 / '지우기'를 다시 선택하세요", "请完整选择来源模型和压缩模型": "원본 모델과 압축 모델을 모두 선택하세요.", "请选择受支持的客户端": "지원되는 클라이언트를 선택하세요.", "请选择提供商": "제공자를 선택하세요", "读取模型清单失败:{message}": "모델 카탈로그 읽기 실패: {message}", "账号 ": "계정 ", "跟随映射(当前 {level})": "매핑 따르기(현재 {level})", "跟随映射(未绑定等级)": "매핑 따르기(레벨 미바인딩)", "跟随映射(该行未启用,本次不注入)": "매핑 따르기(이 행은 미활성, 이번에는 주입하지 않음)", "跟随账号配置": "계정 설정 따르기", "跳过": "건너뜀", "转发到上游模型": "업스트림 모델로 전달", "还没有可刷新的提供商:先在账号页添加一个账号": "새로 고칠 수 있는 제공자가 없습니다: 먼저 계정 페이지에서 계정을 추가하세요", "还没有自定义提供商": "아직 커스텀 제공자가 없습니다", "这一行已不在当前清单里(模型被移除、或目录刷新后上游不再提供它)。关闭后刷新列表再试。": "이 행은 더 이상 현재 카탈로그에 없습니다(모델이 제거되었거나 디렉터리 새로 고침 후 업스트림이 더 이상 제공하지 않습니다). 닫은 뒤 목록을 새로 고치고 다시 시도하세요.", "这个模型仍在承载它的提供商清单里,但那一家的模型行当前没有出现(例如该家没有可用账号)": "이 모델은 제공하는 제공자의 목록에는 아직 있지만, 그 제공자의 행이 지금 표시되지 않습니다(예: 사용 가능한 계정 없음).", "这个模型在官方客户端里是否会被展列;不展示的那些默认已关闭(含默认绑定)": "이 모델이 공식 클라이언트에 표시되는지 여부. 표시되지 않는 항목은 기본적으로 비활성화됩니다(기본 바인딩 포함)", "这个模型已经在这家的清单里,不重复导入": "이 모델은 이미 이 제공자의 카탈로그에 있어 중복으로 가져오지 않습니다", "这个模型的图片能力(图片生成 / 图片编辑)—— 点击修改": "이 모델의 이미지 기능(이미지 생성 / 이미지 편집) — 클릭하여 수정", "这些映射指向的上游模型已不在当前清单里,挂不到任何模型行上:它们不会出现在 /v1/models,用对应别名发请求也会失败。删除后该对外名即可重新使用。": "이 매핑이 가리키는 업스트림 모델이 현재 목록에 없어 어떤 모델 행에도 연결되지 않습니다. /v1/models에 나타나지 않으며, 해당 별칭으로 보낸 요청도 실패합니다. 삭제하면 그 공개 이름을 다시 사용할 수 있습니다.", "这些映射指向的上游模型已不在当前清单里,用对应别名发请求会失败。可以在这里删除,删掉后该对外名即可重新使用。": "이 매핑이 가리키는 업스트림 모델이 현재 목록에 없어 해당 별칭으로 보낸 요청은 실패합니다. 여기서 삭제하면 그 공개 이름을 다시 사용할 수 있습니다.", "这几项是给": "이 항목들은 ", "这家提供商没有可见性判据(目前只有 Antigravity / Qoder / 小浣熊 / CodeArts 有)": "이 제공업체에는 표시 상태 판정 규칙이 없습니다(현재 Antigravity / Qoder / Raccoon / CodeArts만 해당)", "这家有可见性判据,但这一条上游没有表态 —— 按可见处理": "이 제공업체에는 표시 상태 판정 규칙이 있지만 이 항목에 대해서는 업스트림이 밝히지 않았습니다 — 표시로 처리합니다", "这家没有可用账号(要在账号页启用一个、且凭证完整)": "이 제공자에는 사용 가능한 계정이 없습니다(계정 페이지에서 하나를 활성화하고 자격 증명을 완성해야 합니다)", "这家用固定模型清单,无可刷新": "이 제공자는 고정 모델 카탈로그를 사용해 새로 고칠 수 없습니다", "这家的模型清单是全局的,不跟账号走": "이 제공자의 모델 카탈로그는 전역이며 계정을 따라가지 않습니다", "这家的清单是你自己登记的,不填的项下游按未声明处理。": "이 제공자의 카탈로그는 직접 등록한 것이며, 비워 둔 항목은 다운스트림에서 미선언으로 처리합니다.", "这家还没有可用账号,刷新会使用默认登录态": "이 제공자에는 아직 사용 가능한 계정이 없어 새로 고침 시 기본 로그인 세션을 사용합니다", "这家还没有模型:点「添加模型」登记,或「获取上游模型」从上游拉取": "이 제공자에는 아직 모델이 없습니다: '모델 추가'를 눌러 등록하거나 '업스트림 모델 가져오기'로 업스트림에서 가져오세요", "这是模型自己能配的档位(来自上游目录),只读;要改某一档请到映射弹窗里选。": "이것은 모델 자체가 설정할 수 있는 레벨(업스트림 디렉터리에서 제공)이며 읽기 전용입니다; 특정 레벨을 바꾸려면 매핑 대화상자에서 선택하세요.", "这条登记(不像内置模型那样只是隐藏),因为它的存在完全由这次登记决定。": "하는 것입니다(내장 모델처럼 단순히 숨기는 것이 아닙니다). 이 등록의 존재 여부가 전적으로 이 등록에 달려 있기 때문입니다.", "这里是": "여기는 ", "远程": "원격", "远程目录": "원격 디렉터리", "远程目录已更新,「来源」列会显示为「远程」": "원격 디렉터리가 업데이트되었습니다. '소스' 열이 '원격'으로 표시됩니다", "适用客户端": "적용 클라이언트", "选一个账号(至少一个)": "계정 선택(최소 하나)", "选中的模型都不是手动登记,无法删除(开关映射才是它们的手段)": "선택한 모델이 모두 수동 등록이 아니어서 삭제할 수 없습니다(이들에게는 매핑 켜기/끄기가 수단입니다)", "选中的都不是手动登记的模型,删除不可用(上游目录带回来的行由清单决定存在性)": "선택한 항목이 모두 수동 등록 모델이 아니어서 삭제를 사용할 수 없습니다(업스트림 디렉터리가 가져온 행은 카탈로그가 존재 여부를 결정합니다)", "重新获取": "다시 가져오기", "重新读取会丢弃当前草稿,确定继续?": "다시 불러오면 현재 초안이 삭제됩니다. 계속할까요?", "重试": "다시 시도", "错误详情": "오류 상세", "默认": "기본", "默认开,与真实请求一致:可同时验证 SSE 链路与首字延迟。": "기본 켜짐이며 실제 요청과 동일합니다: SSE 경로와 첫 토큰 지연을 함께 검증할 수 있습니다.", "默认档位:{level}": "기본 레벨: {level}", "默认绑定": "기본 바인딩", "({label})": "({label})", "({provider})": "({provider})", "(上游这一次返回了空正文)": "(업스트림이 이번에는 빈 본문을 반환했습니다)", "(中间共尝试 {n} 次)": "(중간에 총 {n}회 시도)", "(已禁用)": "(비활성)", "(已被手动覆盖,弹窗里可恢复继承)": "(수동으로 덮어쓴 값, 대화상자에서 상속 복원 가능)", "(手动设定)": " (직접 설정)", "(由 models.dev 补齐)": " (models.dev가 채움)", "(登记后即可用这个名字请求)": "(등록 후 이 이름으로 요청할 수 있습니다)", "(续)": "(계속) ", "(默认 ": "(기본 ", "(默认绑定与别名 chips);「清除」= 不给这些映射指定等级(选「不覆盖」的口径与映射弹窗一致)": "(기본 바인딩 및 별칭 칩); '지우기' = 이 매핑들에 레벨을 지정하지 않음(매핑 대화상자의 '덮어쓰지 않음'과 같은 기준)", ")": ")", "),下游按它们决定发不发图片、按多大的窗口堆历史。": "), 다운스트림은 이를 기준으로 이미지를 보낼지, 얼마나 큰 컨텍스트 윈도우로 히스토리를 쌓을지 결정합니다.", "+ 新建自定义提供商": "+ 커스텀 제공자 새로 만들기", "+ 映射": "+ 매핑", "+ 添加压缩规则": "+ 압축 규칙 추가", "+ 添加模型": "+ 모델 추가", "+等级": "+레벨", ",与远程目录 / 内置清单区分开。删除自定义模型是": "으로 표시되어 원격 디렉터리 / 내장 카탈로그와 구분됩니다. 커스텀 모델 삭제는 ", ",已完成 ": ", 완료 ", ",跳过 {n} 个": ", {n}개 건너뜀", ",通常就不是账号问题了:先确认这个模型还在上游目录里(「获取模型」刷一次),再看默认绑定指向的上游模型对不对。": ", 보통은 계정 문제가 아닙니다: 먼저 이 모델이 아직 업스트림 디렉터리에 있는지 확인하고('모델 가져오기'로 한 번 새로 고치기), 기본 바인딩이 가리키는 업스트림 모델이 맞는지 확인하세요.", ":": ":", ":这里的模型不会出现在其他家,别名也只在这一家内生效。改名称 / 协议 / Base URL 在账号页该家账号的「设置」→ 提供商一栏;整家不要了,鼠标移到左栏这家上点 × 删除(连同名下账号)。": ": 여기의 모델은 다른 제공자에 나타나지 않으며 별칭도 이 제공자 안에서만 유효합니다. 이름 / 프로토콜 / Base URL 변경은 계정 페이지에서 이 제공자 계정의 '설정' → 제공자 항목에서 합니다; 제공자 전체가 필요 없으면 왼쪽 레일에서 이 제공자에 마우스를 올리고 × 를 눌러 삭제하세요(소속 계정 포함).", ";其中 {keys} 由 models.dev 补齐": "; {keys} 항목은 models.dev가 채움", ";首个失败:{error}": "; 첫 실패: {error}", "{account} · 账号设置": "{account} · 계정 설정", "{account} 参与本路由": "이 경로에 {account} 포함", "{account} 尝试失败后切换到此账号": "{account}에서 시도가 실패하여 이 계정으로 전환했습니다", "{available} 可用 · {blocked} 跳过": "사용 가능 {available} · 건너뜀 {blocked}", "{clients} 的标题请求": "{clients}의 제목 요청", "{client} 的压缩请求": "{client}의 컨텍스트 압축 요청", "{models} 看不了图时": "{models}이(가) 이미지를 볼 수 없을 때", "{model} 参与本路由": "이 경로에 {model} 포함", "{model} 有独立配置": "{model}에 독립 설정이 있습니다", "{name} · 提供商路由设置": "{name} · 공급자 라우팅 설정", "{name} 已{state}": "{name}: {state}", "{name} 的账号顺序已调整": "{name} 계정 순서 변경됨", "{n} 个候选": "후보 {n}개", "{n} 个参与账号": "참여 계정 {n}개", "{n} 个启用且参与的账号": "활성 상태로 참여 중인 계정 {n}개", "{n} 个提供商": "{n}개 제공자", "{n} 个模型限流": "모델 {n}개 요청 제한 중", "{n} 个请求": "요청 {n}개", "{n} 个账号 · {on} 启用 · {off} 禁用": "{n}개 계정 · 사용 {on} · 중지 {off}", "{n} 个账号已折叠": "계정 {n}개 접힘", "{n} 个跳过": "건너뜀 {n}개", "{n} 在途": "{n}개 처리 중", "{n} 处未保存": "{n}개 저장 안 됨", "{n} 已完成": "{n}개 완료", "{n} 条": "{n}건", "{n} 条活跃绑定": "활성 바인딩 {n}개", "{n} 条请求没有会话标识,未计入会话数量。": "요청 {n}개는 세션 식별자가 없어 세션 수에 포함되지 않습니다.", "{n} 条账号路径": "계정 경로 {n}개", "{n} 次": "{n}회", "{n} 项参与": "{n}개 참여 중", "{paths} 条路径 · {sessions} 个会话": "경로 {paths}개 · 세션 {sessions}개", "{providers} 个提供商 / {accounts} 个账号": "{providers}개 제공자 / {accounts}개 계정", "{providers} 个提供商 · {accounts} 个参与账号": "{providers}개 제공자 · {accounts}개 참여 계정", "{provider} 参与本路由": "이 경로에 {provider} 포함", "{selected} / {total} 个账号参与": "{selected} / {total}개 계정 참여", "{selected} / {total} 个账号启用": "{selected} / {total}개 계정 활성화", "{time} 后恢复": "{time} 후 복구", "一个路由组最多允许 {n} 个成员": "경로 그룹에는 최대 {n}개의 멤버를 추가할 수 있습니다", "一条历史路径": "과거 경로 1개", "上游已响应": "업스트림 응답 도착", "上游请求已发出": "업스트림 요청 전송됨", "上游调用": "업스트림 호출", "下一条请求": "다음 요청", "下一条请求将走": "다음 요청은 다음으로 이동합니다", "不参与": "미참여", "不按余额排序": "잔액으로 정렬 안 함", "不按到期排序": "만료일로 정렬하지 않음", "与账号页共用全局消耗规则": "계정 페이지와 전역 소비 규칙 공유", "与账号页共用:{rules}。积分到期等规则直接影响网关实际选路。": "계정 페이지와 공유: {rules}. 크레딧 만료 등의 규칙이 게이트웨이의 실제 라우팅에 반영됩니다.", "为什么没有调用": "호출하지 않은 이유", "为什么选择它": "선택한 이유", "为压缩请求指定模型": "압축 요청에 사용할 모델 지정", "五分钟没有往来即释放;客户端会话标识优先,内容哈希兜底。": "5분 동안 통신이 없으면 해제됩니다. 클라이언트 세션 식별자를 우선 사용하고, 없으면 콘텐츠 해시를 사용합니다.", "仅保留最后承载信息,尝试明细未记录": "최종 처리 계정 정보만 남아 있으며 시도 상세는 기록되지 않았습니다", "仅允许指定提供商": "지정한 공급자만 허용", "仅列出真实目录中的对话模型,不自动更改模型映射。": "실제 목록의 대화 모델만 표시합니다. 모델 매핑은 변경하지 않습니다.", "仅加入的参与": "추가한 항목만 참여", "仅勾选的参与": "선택한 항목만 참여", "仅历史": "기록만", "仅在途": "처리 중만", "仅展示已发生的请求,不表示当前可选": "기록된 요청을 표시하며 현재 선택 가능하다는 뜻은 아닙니다", "仅影响此路由的后续请求": "이 경로의 이후 요청에만 적용", "仅看选中路径": "선택한 경로만", "仅筛选右侧账号列表,不改变路由配置。": "오른쪽 계정 목록만 필터링하며 라우팅 설정은 변경하지 않습니다.", "仍保留配置,账号可继续用于其他路由。": "설정은 유지되며 계정은 다른 경로에서 계속 사용할 수 있습니다.", "仍然保存": "그래도 저장", "从上到下就是选路顺序": "위에서 아래가 라우팅 순서입니다", "从当前视图移除": "현재 보기에서 제거", "从现有模型中创建独立配置,自动列出提供它的全部提供商;之后的修改只跟随这个模型。": "기존 모델에 독립 설정을 만듭니다. 해당 모델을 제공하는 모든 공급자가 자동으로 표시되며, 이후 변경은 이 모델에만 적용됩니다.", "以下 {n} 个账号原本被全局路由排除。确认后会将它们设为禁用,所有路由都不能再选用;原有独立路由的参与名单保留。": "아래 {n}개 계정은 전역 라우팅에서 제외되어 있었습니다. 변환을 확인하면 비활성화되어 모든 경로에서 선택할 수 없게 됩니다. 기존 독립 경로의 참여 목록은 유지됩니다.", "优先使用队首账号,不可用时顺延。": "대기열 첫 계정을 우선 사용하고, 사용할 수 없으면 다음 계정으로 넘어갑니다.", "优先尝试": "우선 시도", "优先级:{rules};前一项相同才比较后一项。": "우선순위: {rules}. 앞선 항목이 같을 때만 다음 항목을 비교합니다.", "会话": "세션", "会话最长保持六小时无往来;可以随时在会话粘滞中解除。": "통신이 없는 상태로 최대 6시간 유지됩니다. 세션 바인딩에서 언제든 해제할 수 있습니다.", "会话来源": "세션 출처", "会话标识": "세션 식별자", "会话标识 {id} · 来源 {source}": "세션 {id} · 출처 {source}", "会话标识未记录,不将此请求推断为独立会话。": "세션 식별자가 기록되지 않아 이 요청을 별도 세션으로 추정하지 않습니다.", "会话活动": "세션 활동", "会话粘住": "세션 바인딩 적중", "会话粘滞": "세션 바인딩", "会话粘滞 {mode}": "세션 고정 {mode}", "会话粘滞改为{value}": "세션 고정을 {value}(으)로 변경", "位置 = 顺位": "위치 = 우선순위", "作用范围": "적용 범위", "例如:日常省钱": "예: 일상 비용 절약", "供继承全局的模型使用": "전역 설정을 상속하는 모델에 적용", "保存": "저장", "保存中…": "저장 중…", "保存仅影响后续选路,历史快照与在途请求不改写。": "저장은 이후 라우팅에만 적용되며 과거 스냅샷과 처리 중 요청은 변경하지 않습니다.", "保存全局路由": "전역 라우팅 저장", "保存后仅用于后续请求,不改变历史快照或在途请求。": "저장 내용은 이후 요청에만 적용되며 과거 스냅샷이나 처리 중인 요청은 변경하지 않습니다.", "保存后只影响后续请求": "저장 후 이후 요청에만 적용", "保存后才会影响真实请求": "저장 후 실제 요청에 적용됩니다", "保存响应不完整,请刷新当前配置确认结果": "저장 응답이 불완전합니다. 현재 설정을 새로 읽어 결과를 확인하세요.", "保存当前配置": "현재 설정 저장", "保存模型路由": "모델 라우팅 저장", "保存的尝试明细中没有这次调用": "저장된 시도 상세에 이 호출이 없습니다", "保存空路由": "빈 경로 저장", "保存规则": "규칙 저장", "保存路由": "경로 저장", "保存路由后,在客户端填写此模型 ID。密钥使用你自己的网关 Key。": "저장 후 클라이언트에 이 모델 ID와 본인의 게이트웨이 키를 입력하세요.", "保护设置由所有模型共用;模型独立配置可覆盖参与范围、顺序、策略与粘滞。": "보호 설정은 모든 모델이 공유합니다. 모델별 독립 설정에서 참여 범위, 순서, 전략 및 세션 고정을 재정의할 수 있습니다.", "修改后影响继承全局的模型": "변경 사항은 전역 설정을 상속하는 모델에 적용됩니다", "修改范围以「编辑范围」为准": "변경은 선택한 편집 범위에 적용됩니다", "候选": "후보", "候选 {n}": "후보 {n}", "候选 · {name}": "후보 · {name}", "候选与跳过": "후보 및 건너뛴 항목", "候选与跳过清单各最多保存十二项;这里只回放当时保存的快照,不用当前队列重算。": "후보와 건너뛴 항목은 각각 최대 12개까지 저장됩니다. 여기서는 저장된 스냅샷만 재생하며 현재 큐로 다시 계산하지 않습니다.", "候选与跳过清单各最多保存十二项;重试和跨账号切换见尝试明细。": "후보 및 건너뛴 계정 목록은 각각 최대 12개 항목을 저장합니다. 재시도와 계정 전환은 시도 상세에서 확인하세요.", "候选和跳过清单各最多保存十二项,超出部分不绘制。": "후보와 건너뛴 계정 목록은 각각 최대 12개 항목을 저장하며 초과 항목은 표시하지 않습니다.", "候选快照中有此账号,但保存的尝试明细未显示它被调用": "후보 스냅샷에 이 계정이 있지만 저장된 시도 상세에는 호출 기록이 없습니다", "候选快照仅保存部分记录,未保存的账号无法回放": "후보 스냅샷의 일부만 저장되었습니다. 기록이 없는 계정은 재생할 수 없습니다", "候选筛选": "후보 필터", "候选规模": "후보 규모", "候选账号": "후보 계정", "候选顺序": "후보 순서", "停用后保留卡片与账号,方便随时恢复;不会全局禁用提供商。": "비활성화해도 카드와 계정은 유지되어 언제든 복원할 수 있습니다. 공급자를 전역으로 비활성화하지는 않습니다.", "停用后保留卡片与账号;自动参与不会重新启用明确停用的提供商。": "비활성화해도 카드와 계정은 유지됩니다. 자동 참여가 명시적으로 비활성화한 공급자를 다시 활성화하지는 않습니다.", "停用此提供商": "이 공급자 비활성화", "停用路由提供商": "라우팅 공급자 비활성화", "允许参与的提供商": "참여 허용 공급자", "先处理凭证、限额或参与范围。": "먼저 자격 증명, 한도 또는 참여 범위를 확인하세요.", "先尝试当前路由内的视觉模型,不可用时再按顺序尝试指定模型;指定模型可跨路由池。": "현재 라우트의 비전 모델을 먼저 시도하고, 사용할 수 없으면 지정한 모델을 순서대로 시도합니다. 지정한 모델은 다른 라우팅 풀을 사용할 수 있습니다.", "先读图再交回": "이미지를 먼저 읽고 다음으로 되돌림", "全局": "전역", "全局保护设置": "전역 보호 설정", "全局修改影响继承它的模型;独立模型配置不变。": "전역 변경은 해당 설정을 상속하는 모델에 적용되며 독립 모델 설정은 유지됩니다.", "全局修改影响继承的设置;模型已独立设置的项目保持不变。": "전역 변경은 상속된 설정에 적용되며 모델별로 따로 설정한 항목은 유지됩니다.", "全局参与范围": "전역 참여 범위", "全局顺序与账号页联动,修改即时保存。": "전역 순서는 계정 페이지와 연동되며 변경은 즉시 저장됩니다.", "全局默认": "전역 기본값", "全局默认供继承的模型使用;给某个模型单独配置后,它就不再跟随全局。": "전역 기본값은 이를 상속하는 모델이 사용합니다. 모델 전용 설정을 만들면 그 모델은 더 이상 전역을 따르지 않습니다.", "全部候选": "모든 후보", "全部模型(窗口内没有请求)": "모든 모델(기간 내 요청 없음)", "全部禁用": "모든 계정 비활성화됨", "全部移出": "모두 제외", "全部移出本路由": "이 경로에서 모두 제외", "全部自动参与": "전체 자동 참여", "全部解除": "모두 해제", "全部请求": "모든 요청", "全部路径": "모든 경로", "共 {n} 个可添加的模型": "추가할 수 있는 모델 {n}개", "共 {n} 条路由回放": "라우팅 재생 {n}건", "共尝试 {total} 次,保存了 {saved} 条明细": "총 {total}회 시도, 상세 기록 {saved}개 저장", "关联与在途优先": "선택된 경로와 처리 중 우선", "关联请求路径": "관련 요청 경로", "关闭": "닫기", "其他候选": "다른 후보", "其他客户端": "기타 클라이언트", "其他账号已完成请求,没有继续调用这个候选": "다른 계정이 요청을 완료하여 이 후보는 호출하지 않았습니다", "内容哈希": "콘텐츠 해시", "内容哈希(推断)": "콘텐츠 해시(추정)", "内部重试不会增加账号切换节点。": "내부 재시도는 계정 전환 노드를 추가하지 않습니다.", "决定后续请求用谁、按什么顺序,以及是否沿用会话账号。": "이후 요청에 사용할 계정과 순서, 세션 계정을 계속 사용할지 설정합니다.", "冷却中": "대기 중", "切换 {n} 次": "{n}회 전환", "切换后,原本不在名单内的可用提供商也会参与转发。明确停用的提供商和排除的账号不会恢复。": "전환하면 이전 목록에 없던 사용 가능한 공급자도 전달에 참여합니다. 명시적으로 비활성화한 공급자와 제외한 계정은 복원되지 않습니다.", "切换模型后,右侧只展示该模型的提供商与账号路由。": "모델을 전환하면 오른쪽에 해당 모델의 공급자 및 계정 라우팅만 표시됩니다.", "列表内容": "목록 내용", "创建独立配置": "독립 설정 만들기", "创建草稿": "초안 만들기", "删除后此入口将不再接受请求。不会删除成员模型、提供商或账号。": "삭제하면 이 진입점은 요청을 받지 않습니다. 구성 모델, 공급자 및 계정은 삭제되지 않습니다.", "删除后这个模型会重新跟随全局配置,已保存的独立设置和当前未保存修改都会被移除。": "삭제하면 이 모델은 다시 전역 설정을 따릅니다. 저장된 독립 설정과 저장하지 않은 변경 사항도 제거됩니다.", "删除独立路由": "독립 라우팅 삭제", "删除独立配置": "독립 설정 삭제", "删除规则": "규칙 삭제", "删除路由组": "경로 그룹 삭제", "刷新请求记录": "요청 기록 새로고침", "刷新路由": "라우팅 새로고침", "刷新预演": "미리보기 새로고침", "加入": "추가됨", "加入路由": "경로에 추가", "历史只读,不影响当前配置": "기록은 읽기 전용이며 현재 설정에 영향을 주지 않습니다", "历史只读,当前配置的修改不会改变这条请求的快照。": "기록은 읽기 전용입니다. 현재 설정을 변경해도 이 요청의 스냅샷은 바뀌지 않습니다.", "历史快照保留了 {shown} / {total} 个候选明细,其余未记录。": "과거 스냅샷에 후보 {total}개 중 {shown}개의 상세 정보가 저장되었습니다. 나머지는 기록되지 않았습니다.", "历史承载账号当前不可用": "과거 처리 계정을 현재 사용할 수 없음", "历史日期": "기록 날짜", "历史记录": "이전 기록", "压缩上下文": "컨텍스트 압축", "压缩模型": "압축 모델", "原因": "이유", "原始报文在请求详情里,这里只看选路过程。": "원본 페이로드는 요청 상세에 있습니다. 여기서는 라우팅 과정만 봅니다.", "原模型": "원래 모델", "去账号页添加": "계정 페이지에서 추가", "参与": "참여", "参与当前视图转发": "현재 보기의 전달에 참여", "参与方式": "참여 방식", "参与方式改为{value}": "참여 방식을 {value}(으)로 변경", "参与本路由": "이 경로에 참여", "参与范围": "참여 범위", "参与范围与顺序独立保存;策略和粘滞可分别继承全局。": "참여 범위와 순서는 독립적으로 저장되며 전략과 세션 고정은 각각 전역 설정을 상속할 수 있습니다.", "参与账号": "참여 계정", "参与路由": "라우팅 참여", "参与路由的账号": "라우팅 참여 계정", "参与转发": "전달에 참여", "参与顺序": "참여 순서", "发生切换": "계정 전환 발생", "取消": "취소", "取消勾选只排除当前范围,不会在账号页全局禁用账号。": "선택을 해제하면 현재 범위에서만 제외되며 계정 페이지에서 전역으로 비활성화하지 않습니다.", "取消选中": "선택 해제", "只从当前路由移出,保留模型和账号配置;不会改变其他路由。": "현재 경로에서만 제외하며 모델과 계정 설정은 유지합니다. 다른 경로는 변경하지 않습니다.", "只从当前路由视图移除,不删除提供商或账号,也不改变其他模型的独立配置。": "현재 라우팅 보기에서만 제거합니다. 공급자나 계정을 삭제하지 않고 다른 모델의 독립 설정도 변경하지 않습니다.", "只修改全局参与范围,不改变账号排序、模型开关或模型独立路由;网关 Key 权限与限流仍然生效。": "전역 참여 범위만 변경합니다. 계정 순서, 모델 활성화 및 모델별 독립 라우팅은 변경하지 않으며 게이트웨이 Key 권한과 요청 제한도 유지됩니다.", "只列出当前模型已有启用绑定的提供商;这里只设置路由,不新建模型绑定。": "현재 모델에 활성 연결이 있는 공급자만 표시됩니다. 여기서는 라우팅만 설정하며 모델 연결을 새로 만들지 않습니다.", "只影响这个路由成员,不改变账号启用状态,也不影响其他模型。新增账号需要手动加入。": "이 구성원에만 적용되며 계정 활성 상태나 다른 모델에는 영향을 주지 않습니다. 새 계정은 수동으로 추가해야 합니다.", "只改写被识别为标题生成的小请求,普通对话不受影响。": "제목 생성으로 인식된 작은 요청만 다시 씁니다. 일반 대화는 영향을 받지 않습니다.", "只有加入的提供商参与,新增提供商需要手动加入。": "추가된 공급자만 참여합니다. 새 공급자는 수동으로 추가해야 합니다.", "只有勾选的提供商参与;以后新增的提供商需要在这里勾选。": "체크한 제공자만 참여합니다. 새 제공자는 여기서 체크해야 합니다.", "只有名单内的提供商可以参与;新增提供商不会自动加入。": "목록에 있는 공급자만 참여할 수 있습니다. 새 공급자는 자동으로 추가되지 않습니다.", "只看用过这个模型的客户端与账号。点一条看它当时是怎么选的。": "이 모델을 사용한 클라이언트와 계정만 표시합니다. 하나 열면 당시 선택 과정을 볼 수 있습니다.", "只看这个客户端经过的模型与账号。点一条看它当时是怎么选的。": "이 클라이언트가 거친 모델과 계정만 표시합니다. 하나 열면 당시 선택 과정을 볼 수 있습니다.", "只看这个提供商下参与路由的账号。点一条看它当时是怎么选的。": "이 제공자에서 참여 중인 계정만 표시합니다. 하나 열면 당시 선택 과정을 볼 수 있습니다.", "只看这个账号承接的请求。点一条看完整的选路过程。": "이 계정이 처리한 요청만 표시합니다. 하나 열면 전체 라우팅 과정을 볼 수 있습니다.", "只看这条路径上的请求。点一条看完整的选路过程。": "이 경로의 요청만 표시합니다. 하나 열면 전체 라우팅 과정을 볼 수 있습니다.", "只移出本路由,账号状态和其他路由不变;保存后此入口将没有可用路由。": "이 경로에서만 제외합니다. 계정 상태와 다른 경로는 유지됩니다. 저장 후 이 진입점에는 사용 가능한 경로가 없습니다.", "只读预演,不会推进轮转;保存后才会影响真实请求。": "읽기 전용 미리보기이며 로테이션을 진행하지 않습니다. 저장해야 실제 요청에 반영됩니다.", "可以保存空路由,但请求会明确失败,不会回退全局。": "빈 경로를 저장할 수 있지만 요청은 명시적으로 실패하며 전역 경로로 대체하지 않습니다.", "可以跨提供商、跨模型多选。同一提供商也可以加入不同模型。": "공급자와 모델을 넘나들며 여러 항목을 선택할 수 있습니다. 같은 공급자의 다른 모델도 추가할 수 있습니다.", "可用候选": "사용 가능한 후보", "可用待命": "사용 가능, 대기 중", "可用账号按请求轮换;开启会话粘性时同一会话优先留在原账号。": "사용 가능한 계정을 요청마다 순환합니다. 세션 고정이 켜져 있으면 같은 세션은 기존 계정을 우선 사용합니다.", "右侧面板内容": "오른쪽 패널 내용", "同一会话优先保持模型与账号,不可用时才顺延。": "같은 세션에서는 모델과 계정을 우선 유지하고 사용할 수 없을 때 다음으로 넘어갑니다.", "同一模型,选择不同提供商": "같은 모델, 다른 공급자 선택", "同号重试 {n} 次": "동일 계정으로 {n}회 재시도", "同账号内部重试": "동일 계정 내부 재시도", "后备账号": "예비 계정", "后过期": "후 만료", "否": "아니요", "启用": "사용", "启用 {provider} 的账号": "{provider} 계정 활성화", "启用全部账号": "모든 계정 활성화", "启用当前列表账号": "현재 목록의 계정 활성화", "启用提供商中的第 {rank} 顺位;当前可用候选第 {effective} 顺位。": "활성 공급자 중 우선순위 {rank}. 현재 사용 가능한 후보 중 우선순위는 {effective}입니다.", "启用提供商中的第 {rank} 顺位;当前没有可用候选账号。": "활성 공급자 중 우선순위 {rank}. 현재 사용 가능한 후보 계정이 없습니다.", "启用规则": "규칙 활성화", "启用账号 {account}": "계정 {account} 활성화", "命中 {n} 次": "{n}회 적중", "命中下面规则的上下文压缩请求,会改用指定的模型压缩一次;账号仍按新模型自己的路由挑。": "아래 규칙에 해당하는 컨텍스트 압축 요청만 지정한 모델로 한 번 압축합니다. 계정은 새 모델 자체의 라우트로 선택됩니다.", "命中会话粘性,沿用原账号完成请求": "세션 바인딩이 적중하여 기존 계정으로 요청을 완료했습니다", "命中会话粘滞": "세션 바인딩 적중", "命中这条规则的压缩请求会改用「压缩模型」重发一次;改写之后按新模型自己的路由挑账号。": "이 규칙에 해당하는 압축 요청은 「압축 모델」로 한 번 다시 보냅니다. 계정은 새 모델 자체의 라우트로 선택됩니다.", "命中配置": "적용된 설정", "响应到达": "응답 도착", "响应到达后": "응답 도착 후", "响应完成": "응답 완료", "回放中": "재생 중", "回放保持不变": "재생 내용 유지", "回放步骤": "재생 단계", "固定这条请求": "이 요청 고정", "在工作台查看": "작업 공간에서 보기", "在途 + 近期": "처리 중 + 최근", "在途 {n} / {limit}": "처리 중 {n} / {limit}", "在途时长": "처리 중 경과 시간", "在途请求 / 并发上限": "처리 중 요청 / 동시 처리 한도", "备选按顺序尝试;一个都不加时,当前路由内找不到视觉模型就停止并说明原因。": "대체 모델은 순서대로 시도합니다. 하나도 추가하지 않으면 현재 라우트에서 비전 모델을 찾지 못할 때 이유를 알리고 중단합니다.", "复制失败,请手动选择并复制": "복사하지 못했습니다. 직접 선택하여 복사하세요.", "复制网关地址": "게이트웨이 URL 복사", "失败原因未记录": "실패 이유가 기록되지 않았습니다", "失败后备选": "실패 시 대안", "失败时直接报错": "실패 시 오류 반환", "失败时退回原模型": "실패 시 원본 모델로 되돌림", "失败阈值": "실패 임계값", "完整详情": "전체 상세", "完整请求详情": "전체 요청 상세", "完整过程": "전체 과정", "实时状态暂未更新,当前显示上次读取的结果:{error}": "실시간 상태를 새로 고치지 못했습니다. 마지막으로 불러온 결과를 표시합니다: {error}", "实际尝试失败": "실제 시도 실패", "实际模型": "실제 모델", "实际请求路径": "실제 요청 경로", "实际账号尝试": "실제 계정 시도", "客户端已取消请求": "클라이언트가 요청을 취소했습니다", "客户端模型 {client} → 实际模型 {model}": "클라이언트 모델 {client} → 실제 모델 {model}", "客户端请求": "클라이언트 요청", "对外模型 ID": "공개 모델 ID", "对外模型 ID 已被占用,请换一个名称": "이미 사용 중인 공개 모델 ID입니다. 다른 이름을 입력하세요.", "对外模型 ID 格式不正确": "공개 모델 ID 형식이 올바르지 않습니다", "将禁用当前所选的 {n} 个账号,所有路由都不能再选用它们。此操作立即保存,不会删除账号。": "선택한 {n}개 계정을 비활성화하여 모든 경로에서 선택할 수 없게 합니다. 즉시 저장되며 계정은 삭제하지 않습니다.", "尚未记录承载账号": "처리 계정이 아직 기록되지 않았습니다", "尚未读取到有效的积分到期时间": "유효한 크레딧 만료 시간을 아직 불러오지 못했습니다", "尝试 {n}": "시도 {n}", "尝试 {n} · 最终承载": "시도 {n} · 최종 처리", "尝试中": "시도 중", "尝试失败": "시도 실패", "尝试明细已截断或未记录,画布只展示保存下来的信息。": "시도 상세가 잘렸거나 기록되지 않았습니다. 캔버스에는 저장된 정보만 표시합니다.", "尝试结果": "시도 결과", "尝试记录": "시도 기록", "展开其余 {n} 个候选": "나머지 후보 {n}개 펼치기", "展开完整原因": "전체 사유 펼치기", "工具服务的视觉模型": "도구 서비스 비전 모델", "左侧修改的是全局默认,不会影响它。": "왼쪽의 변경은 전역 기본값에 대한 것이며 이 모델에는 영향을 주지 않습니다.", "已保存": "저장됨", "已保存 {n} 个候选": "후보 {n}개 저장됨", "已保存明细": "저장된 상세", "已停用": "사용 중지", "已停用提供商 · {n}": "비활성 공급자 · {n}", "已关闭": "꺼짐", "已删除独立配置,改为跟随全局": "독립 설정을 삭제하고 전역 설정을 따르도록 변경했습니다", "已启用": "활성화됨", "已启用模拟条件": "시뮬레이션 조건 사용 중", "已固定这条请求,新请求不会打断当前查看": "이 요청은 고정되어 새 요청이 현재 보기를 바꾸지 않습니다", "已完成记录": "완료 기록", "已完成请求时间范围": "완료 요청 시간 범위", "已尝试": "이미 시도함", "已尝试 · 失败": "시도함 · 실패", "已用时": "경과 시간", "已禁用账号": "비활성 계정", "已禁用账号 · {n}": "비활성 계정 · {n}", "已解除 {n} 条会话粘滞": "세션 바인딩 {n}개 해제됨", "已记录 {n} 次尝试": "{n}회 시도 기록됨", "已跳过": "건너뜀", "已转换为账号启停,独立路由参与名单保持不变": "계정 활성화·비활성화 관리로 변환했습니다. 독립 경로의 참여 목록은 유지됩니다.", "平均耗时": "평균 소요 시간", "并发已满": "동시 처리 한도 도달", "序号表示先后,不是提供商之间互相转发": "번호는 시도 순서를 나타내며 공급자 간 전달을 의미하지 않습니다", "应用到草稿": "초안에 적용", "开始 {start} · 响应 {response} · 结束 {finish}": "시작 {start} · 응답 {response} · 종료 {finish}", "开始于 +{time}": "+{time}에 시작", "开始时间": "시작 시간", "当前全局路由使用固定参与名单,新增提供商不会自动加入。": "현재 전역 라우팅은 고정 참여 목록을 사용합니다. 새 공급자는 자동으로 추가되지 않습니다.", "当前可用队首": "현재 사용 가능한 첫 후보", "当前承载": "현재 처리 계정", "当前有效顺位以路由预演为准,不改变保存的配置优先级。": "현재 유효 순서는 라우팅 미리보기를 따르며 저장된 설정 우선순위는 변경하지 않습니다.", "当前档位不保留跨请求粘滞,因此没有活跃绑定。": "현재 모드는 요청 간 바인딩을 유지하지 않으므로 활성 바인딩이 없습니다.", "当前模型": "현재 모델", "当前模型使用独立顺序,不受全局自动消耗排序影响。删除独立路由后会重新跟随账号页。": "이 모델은 독립 순서를 사용하며 전역 자동 소비 정렬의 영향을 받지 않습니다. 독립 라우팅을 삭제하면 계정 페이지의 순서를 다시 따릅니다.", "当前模型使用独立顺序,不受全局自动消耗排序影响。恢复继承后会重新跟随账号页。": "이 모델은 독립 순서를 사용하며 전역 자동 소비 정렬의 영향을 받지 않습니다. 상속을 복원하면 계정 페이지의 순서를 다시 따릅니다.", "当前模型没有对应的账号,请先添加账号或检查模型绑定。": "이 모델에 해당하는 계정이 없습니다. 계정을 추가하거나 모델 연결을 확인하세요.", "当前模型配置独立保存,不影响全局和其他模型。": "현재 모델 설정은 독립적으로 저장되며 전역 설정이나 다른 모델에 영향을 주지 않습니다.", "当前没有参与账号,保存后这个范围可能无法承载新请求。": "현재 참여 계정이 없습니다. 저장하면 이 범위에서 새 요청을 처리하지 못할 수 있습니다.", "当前没有可沿用的粘滞绑定": "현재 재사용할 수 있는 세션 바인딩 없음", "当前空闲": "현재 유휴", "当前绑定:{account},剩余 {time}": "현재 바인딩: {account}, 남은 시간 {time}", "当前继承全局。改成模型独立配置后,改动只影响这个模型。": "현재 전역 설정을 상속합니다. 모델 전용 설정으로 바꾸면 이 모델에만 적용됩니다.", "当前继承全局固定名单;新增提供商需手动添加或在全局配置中改为自动参与。": "현재 전역 고정 목록을 상속합니다. 새 공급자를 수동으로 추가하거나 전역 설정에서 자동 참여로 전환하세요.", "当前继承全局,修改前先切到独立配置": "전역을 상속 중입니다. 수정하려면 독립 설정으로 바꾸세요", "当前继承全局,切换到独立配置后只修改本模型。": "현재 전역 설정을 상속합니다. 독립 설정으로 전환하면 이 모델만 수정합니다.", "当前网关尚不支持全局账号启停,请更新网关后重新读取。": "현재 게이트웨이는 전역 계정 관리를 지원하지 않습니다. 게이트웨이를 업데이트한 후 다시 읽으세요.", "当前范围内没有请求": "현재 범위에 요청이 없음", "当前范围的提供商都没有账号,先在账号页添加": "이 범위의 제공자에 아직 계정이 없습니다. 계정 페이지에서 추가하세요.", "当前视图没有活跃会话粘滞": "현재 보기에 활성 세션 바인딩이 없습니다", "当前视图没有路由回放记录": "현재 보기에 라우팅 재생 기록이 없습니다", "当前视图的请求入口": "현재 보기의 요청 진입점", "当前请求": "처리 중 요청", "当前路由位置": "현재 라우팅 위치", "当前路由内的视觉模型": "현재 라우트의 비전 모델", "当前配置": "현재 설정", "当前配置已排除": "현재 설정에서 제외됨", "当时": "요청 당시", "当时可用,当前请求尚未轮到这个账号": "당시 사용 가능했으나 현재 요청에서 아직 이 계정의 차례가 되지 않았습니다", "当时可选的账号 · {n}": "당시 선택 가능한 계정 · {n}", "当时状态": "당시 상태", "当时的候选说明": "당시 후보 설명", "当时的成员模型": "요청 당시 멤버 모델", "当时的选路原因未记录": "당시 라우팅 선택 이유가 기록되지 않았습니다", "当时被候选过滤规则跳过": "당시 후보 필터 규칙에 의해 건너뛰었습니다", "当时配置": "요청 당시 설정", "当时配置与当前配置": "당시 설정과 현재 설정", "影响继承全局的模型": "전역 설정을 상속하는 모델에 적용", "怎么选账号": "계정 선택 방식", "思考等级 {value}": "추론 수준 {value}", "总耗时": "총 소요 시간", "总计 {n} tokens": "총 {n} 토큰", "恢复": "복원", "恢复全局继承": "전역 설정 상속 복원", "恢复按账号页面的全局优先级选路,解除全局视图的提供商和账号范围限制。模型独立配置不会改变。": "계정 페이지의 전역 우선순위에 따른 라우팅을 복원하고 전역 보기의 공급자 및 계정 범위 제한을 해제합니다. 모델별 독립 설정은 변경되지 않습니다.", "恢复提供商": "공급자 복원", "恢复路由提供商": "라우팅 공급자 복원", "恢复阈值": "복구 임계값", "恢复默认路由": "기본 라우팅 복원", "成功承载": "처리 성공", "成员内轮询": "구성원 내 순환", "成员模型": "구성 모델", "所有可用提供商自动参与,新增账号或插件后无需再加路由;明确停用的保持不变。": "사용 가능한 모든 제공자가 자동으로 참여합니다. 계정이나 플러그인을 추가해도 라우트를 더할 필요가 없습니다(명시적으로 끈 항목은 유지).", "所有可用提供商自动参与,新增账号或插件后无需再添加路由。已停用的提供商和已排除的账号保持不变。": "사용 가능한 모든 공급자가 자동으로 참여합니다. 계정이나 플러그인을 추가한 후 별도로 라우팅을 추가할 필요가 없습니다. 비활성 공급자와 제외된 계정은 그대로 유지됩니다.", "所有可用提供商都已在当前路由中": "사용 가능한 모든 공급자가 현재 라우팅에 추가되어 있습니다", "所有模型共用": "모든 모델이 공유", "所有模型共用路由策略与保护设置;全局顺序和消耗规则与账号页联动,模型独立配置可明确覆盖顺序。": "모든 모델이 라우팅 전략과 보호 설정을 공유합니다. 전역 순서와 소비 규칙은 계정 페이지와 연동되며 모델 독립 설정으로 순서를 명시적으로 재정의할 수 있습니다.", "打开完整请求详情": "전체 요청 상세 열기", "打开该模型配置": "이 모델 설정 열기", "执行耗时": "실행 시간", "执行记录": "실행 기록", "执行路径": "실행 경로", "执行路径按当时快照保留": "실행 경로는 당시 스냅샷 유지", "批量禁用账号": "계정 일괄 비활성화", "承载账号": "처리 계정", "把不同提供商、不同模型组合成一个入口。客户端使用对外模型 ID 发起请求。": "다양한 공급자와 모델을 하나의 진입점으로 묶습니다. 클라이언트는 공개 모델 ID로 요청합니다.", "把全局配置复制成这个模型的独立配置": "전역 설정을 이 모델 전용 설정으로 복사", "拖动卡片改顺位,勾选决定参与;这里的位置就是实际选路顺序。": "카드를 끌어 순서를 바꾸고 체크로 참여를 정합니다. 여기 순서가 실제 라우팅 순서입니다.", "拖动或按 Alt + 方向键调整顺序": "끌거나 Alt + 방향키로 순서 변경", "拖动把手或按 Alt + 方向键调整顺序,更多操作在右侧菜单。": "손잡이를 끌거나 Alt + 방향키로 순서를 바꾸세요. 추가 작업은 오른쪽 메뉴에 있습니다.", "拖动把手调整顺序,也可以使用右侧上下按钮。": "손잡이를 끌거나 오른쪽 위아래 버튼으로 순서를 변경하세요.", "拖动提供商与账号调整顺序,修改即时保存。": "공급자와 계정을 드래그하여 순서를 변경하세요. 변경 사항은 즉시 저장됩니다.", "拖动改顺位、勾选决定参与;这里的位置就是实际选路顺序。": "끌어서 순서를 바꾸고 체크로 참여를 정합니다. 여기 순서가 실제 라우팅 순서입니다.", "拖动调整提供商顺序": "드래그하여 공급자 순서 변경", "拖动调整账号顺序": "드래그하여 계정 순서 변경", "按客户端类型聚合": "클라이언트 유형별 집계", "按已保存配置": "저장된 설정 기준", "按当前草稿预演,不发送请求,不消耗额度。": "현재 초안을 미리 봅니다. 요청을 보내거나 할당량을 사용하지 않습니다.", "按当前视图的顺序参与选路": "현재 보기의 순서로 라우팅에 참여", "按此范围查看配置": "이 범위 설정 열기", "按步骤回放,不重新发送请求": "요청을 다시 보내지 않고 단계별로 재생합니다", "按请求开始时的顺位": "요청 시작 시점의 순위", "按请求模型选择": "요청 모델에 따라 선택", "按路径聚合,会话在列表中展开,不在画布逐条连线。": "경로별로 집계합니다. 세션은 목록에 표시하며 캔버스에 개별 선을 그리지 않습니다.", "排除": "제외됨", "提供商与账号": "공급자 및 계정", "提供商保持优先顺序,同一提供商的账号轮流承接。": "공급자의 우선순위를 유지하며 같은 공급자 내 계정을 순환합니다.", "提供商参与": "제공자 참여", "提供商参与方式": "공급자 참여 방식", "提供商参与方式改为{value}": "제공자 참여 방식을 {value}(으)로 변경", "提供商参与范围": "공급자 참여 범위", "提供商未参与": "제공자 미참여", "提供商未记录": "공급자 미기록", "提供商范围": "공급자 범위", "提供商路由设置": "공급자 라우팅 설정", "搜索会话或账号": "세션 또는 계정 검색", "搜索客户端、模型或账号": "클라이언트, 모델 또는 계정 검색", "搜索提供商或模型": "공급자 또는 모델 검색", "搜索提供商或账号": "공급자 또는 계정 검색", "搜索本页会话或账号": "현재 페이지의 세션 또는 계정 검색", "搜索模型": "모델 검색", "搜索模型、账号或会话来源": "모델, 계정 또는 세션 출처 검색", "搜索模型或请求 ID": "모델 또는 요청 ID 검색", "搜索请求、模型或账号": "요청, 모델 또는 계정 검색", "搜索路由配置": "라우팅 설정 검색", "撤销修改": "변경 취소", "撤销草稿": "초안 취소", "收起其他候选": "다른 후보 접기", "改为独立配置": "독립 설정으로 변경", "改为自动参与": "자동 참여로 전환", "改用": "변경 대상", "放到第 {n} 位": "{n}번째 위치에 놓기", "放大画布": "확대", "整次请求改交": "요청 전체를 다음에 넘김", "文本对话": "텍스트 대화", "新增可用提供商会自动参与;这里只需恢复曾明确停用的提供商。": "새로 추가된 사용 가능한 공급자는 자동으로 참여합니다. 여기서는 명시적으로 비활성화한 공급자만 복원하면 됩니다.", "新增提供商自动参与;移出本路由的不会自动加回。": "새 공급자는 자동 참여합니다. 이 경로에서 제외한 공급자는 자동으로 다시 추가되지 않습니다.", "新增模型": "모델 추가", "新增模型独立路由": "모델 독립 라우팅 추가", "新增模型独立配置": "모델 전용 설정 추가", "新增路由配置": "라우팅 설정 추가", "新建路由组": "새 경로 그룹", "新配置 · 保存后生效": "새 설정 · 저장 후 적용", "无可用账号": "사용 가능한 계정 없음", "无有效绑定": "유효한 바인딩 없음", "时间相对请求开始;历史只读,修改当前配置不会改变这条记录。": "시간은 요청 시작 기준입니다. 기록은 읽기 전용이며 현재 설정을 변경해도 이 기록은 바뀌지 않습니다.", "时间相对请求开始;未记录的旧数据不补算。历史只读,修改当前配置不会改变这条记录。": "시간은 요청 시작 기준입니다. 기록되지 않은 예전 데이터는 보정하지 않습니다. 기록은 읽기 전용이며 현재 설정을 바꿔도 이 기록은 바뀌지 않습니다.", "时间相对请求开始;未记录的旧数据不补算。响应到达不等于流式请求结束。": "시간은 요청 시작 기준입니다. 기록되지 않은 과거 데이터는 추정하지 않습니다. 응답 도착이 스트리밍 요청 종료를 의미하지는 않습니다.", "是": "예", "显示全部": "전체 표시", "显示其他候选": "다른 후보 표시", "显示无账号 ({n})": "계정 없는 항목 표시 ({n})", "暂停": "일시 정지", "暂无可用账号": "사용 가능한 계정 없음", "曾被限流的账号暂时排到队尾,三十分钟后或转发成功后恢复。": "요청 제한을 받은 계정은 일시적으로 대기열 끝으로 이동하며, 30분 후 또는 전달 성공 후 복원됩니다.", "最早到期的剩余积分包:{time}": "잔액이 있는 크레딧 팩 중 가장 빠른 만료 시간: {time}", "最终承载": "최종 처리 계정", "最终由 {account} 承接": "최종적으로 {account} 처리", "最近 {n} 分钟": "최근 {n}분", "最近 {n} 条": "최근 {n}건", "最近使用:{time}": "최근 사용: {time}", "最近完成": "최근 완료", "最近没有命中记录": "최근 해당 기록 없음", "最近请求已完成": "최근 요청 완료", "有在途": "처리 중 있음", "有未保存修改,预演仍按已保存配置。": "저장하지 않은 변경이 있습니다. 미리보기는 저장된 설정을 사용합니다.", "有未保存的修改": "저장되지 않은 변경 사항이 있습니다", "未保存完整尝试明细,仅显示请求记录中的承载信息。": "전체 시도 내역이 저장되지 않았습니다. 요청 기록에 있는 처리 정보만 표시합니다.", "未保存草稿": "저장되지 않은 초안", "未切换": "전환 없음", "未参与": "참여 안 함", "未参与提供商 · {n}": "참여하지 않는 공급자 · {n}", "未参与提供商默认收起;选中历史路径时仍会显示。": "참여하지 않는 공급자는 기본적으로 접혀 있지만 관련 과거 경로를 선택하면 표시됩니다.", "未参与本范围": "이 범위에 미참여", "未参与本路由": "이 경로에 미참여", "未发生切换": "전환 없음", "未记录上游调用": "업스트림 호출 미기록", "未识别客户端": "미식별 클라이언트", "未调用": "호출 안 함", "未调用不画请求线;模型限流与当前配置分别展示。": "호출되지 않은 요청 선은 그리지 않습니다. 모델 요청 제한과 현재 설정은 별도로 표시합니다.", "未调用的候选": "호출하지 않은 후보", "未轮到": "차례가 오지 않음", "未选择客户端": "클라이언트 미선택", "未选择模型": "모델 미선택", "未配置模型的默认路由": "미설정 모델의 기본 라우팅", "本地网关": "로컬 게이트웨이", "本次尝试失败": "이번 시도 실패", "本次执行": "이번 실행", "本次状态": "이번 요청 상태", "本次用时": "시도 시간", "本次结果": "요청 결과", "本次耗时": "이번 소요 시간", "本次请求": "이번 요청", "本次请求已完成": "이번 요청 완료", "本窗口未调用": "이 시간 범위에서 호출되지 않음", "本轮选路预演": "현재 라우팅 미리보기", "来源未记录": "출처 기록 없음", "查看上游错误": "업스트림 오류 보기", "查看上游错误摘要": "업스트림 오류 요약 보기", "查看其他 {n} 个候选": "다른 후보 {n}개 보기", "查看实际请求的选路、尝试与结果": "실제 요청의 라우팅, 시도 및 결과 보기", "查看当前配置": "현재 설정 보기", "查看最后一次尝试": "마지막 시도 보기", "查看详情内容": "상세 내용 선택", "查看配置": "설정 보기", "查看配置详情": "설정 상세 보기", "标题生成": "제목 생성", "标题生成路由入口尚未就绪,请刷新页面后重试": "제목 생성 라우팅 진입점이 아직 준비되지 않았습니다. 페이지를 새로 고친 후 다시 시도하세요.", "检测到旧版全局参与设置,请先确认转换,再管理账号启停。": "이전 버전의 전역 참여 설정이 있습니다. 먼저 변환을 확인한 후 계정 활성 상태를 관리하세요.", "模型、网关、提供商与账号的可视化选路": "모델, 게이트웨이, 공급자 및 계정의 시각적 라우팅", "模型未记录": "모델 미기록", "模型独立路由": "모델별 독립 경로", "模型独立配置": "모델 독립 설정", "模型看不了图片时,按下面的规则交给视觉模型;没配到的模型、以及本来就能看图的,一律原样放行。": "모델이 이미지를 볼 수 없을 때 아래 규칙에 따라 비전 모델에 넘깁니다. 여기 설정하지 않은 모델과 원래 이미지를 볼 수 있는 모델은 그대로 통과합니다.", "模型绑定不可用": "모델 연결 사용 불가", "模型路由": "모델 라우팅", "模拟首选失败": "첫 후보 실패 시뮬레이션", "正在处理": "처리 중", "正在由 {account} 处理": "{account}에서 처리 중", "正在编辑": "편집 중", "正在读取会话绑定…": "세션 바인딩을 불러오는 중…", "正在读取当前配置": "현재 설정을 불러오는 중", "正在读取路由…": "라우팅을 불러오는 중…", "正在选路,尚未记录上游尝试": "라우팅 중이며 아직 업스트림 시도가 기록되지 않았습니다", "正在预览 {model}": "{model} 미리보기 중", "此为配置顺位,当前没有可用候选账号。": "설정된 우선순위입니다. 현재 사용 가능한 후보 계정이 없습니다.", "此入口没有参与路由的提供商,保存后请求将明确失败。": "이 진입점에는 참여 공급자가 없습니다. 저장 후 요청은 명시적으로 실패합니다.", "此入口没有参与路由的账号。保存后请求将明确失败,不会回退全局或自动恢复参与名单。": "이 진입점에는 참여 계정이 없습니다. 저장 후 요청은 명시적으로 실패하며 전역 경로로 대체하거나 참여 목록을 자동 복원하지 않습니다.", "此刻队列": "현재 큐", "此提供商当前没有可用的模型绑定,配置已保留;在模型管理中恢复绑定后会自动回来。": "이 공급자에는 현재 사용 가능한 모델 연결이 없습니다. 설정은 유지되며 모델 관리에서 연결을 복원하면 자동으로 다시 표시됩니다.", "此模型限流": "이 모델 요청 제한 중", "每轮重新选路,不保留跨请求的账号绑定。": "매 턴마다 라우팅을 다시 선택하며 요청 간 계정 바인딩은 유지하지 않습니다.", "没有保存其他候选信息": "다른 후보 정보가 저장되지 않았습니다", "没有保存调用明细": "저장된 호출 내역이 없습니다", "没有其他候选账号": "다른 후보 계정이 없습니다", "没有匹配的会话": "일치하는 세션이 없습니다", "没有匹配的候选": "일치하는 후보가 없습니다", "没有匹配的提供商或账号": "일치하는 공급자나 계정이 없습니다", "没有匹配的记录": "일치하는 기록이 없음", "没有匹配的请求": "일치하는 요청이 없습니다", "没有匹配的路由配置": "일치하는 라우팅 설정이 없습니다", "没有参与路由的账号": "라우팅 참여 계정이 없습니다", "没有可添加的模型": "추가할 수 있는 모델이 없습니다", "没有可用提供商,请先添加账号或安装插件。": "사용 가능한 공급자가 없습니다. 먼저 계정을 추가하거나 플러그인을 설치하세요.", "没有可用模型": "사용 가능한 모델이 없습니다", "没有可用账号": "사용 가능한 계정이 없습니다", "没有可选的对话模型,请先启用模型和对应账号。": "선택할 수 있는 대화 모델이 없습니다. 먼저 모델과 해당 계정을 활성화하세요.", "没有独立配置的模型沿用全局路由。": "독립 설정이 없는 모델은 전역 라우팅을 사용합니다.", "没有请求也能配置路由": "요청이 없어도 라우팅 설정 가능", "没有跳过": "건너뛴 항목 없음", "没有需要恢复的提供商": "복원할 공급자가 없습니다", "沿用工具服务的视觉模型": "도구 서비스 비전 모델 사용", "流动:有请求在途": "움직임: 처리 중 요청 있음", "消耗规则": "소비 규칙", "消耗规则已保存,但路由列表刷新失败:{error}": "소비 규칙은 저장되었지만 라우팅 목록을 새로 고치지 못했습니다: {error}", "添加到全局路由,新请求将按这里的顺序选择账号。": "전역 라우팅에 추가합니다. 새 요청은 여기서 설정한 순서대로 계정을 선택합니다.", "添加到固定参与名单;以后新增的提供商仍需手动加入。": "고정 참여 목록에 추가합니다. 이후 새 공급자도 수동으로 추가해야 합니다.", "添加参与模型": "참여 모델 추가", "添加规则": "규칙 추가", "添加路由提供商": "라우팅 공급자 추가", "清空选择": "선택 해제", "清除会话粘滞": "세션 바인딩 해제", "灰线:历史流量": "회색: 과거 트래픽", "点击查看这次尝试的结果与原因": "클릭하여 이번 시도의 결과와 이유 보기", "点击节点查看请求,点击齿轮编辑路由配置。": "노드를 클릭하면 요청을 보고 톱니바퀴를 클릭하면 라우팅을 설정합니다.", "点击节点筛选,点击齿轮进入配置": "노드를 클릭해 필터, 톱니바퀴로 설정", "点击节点,切换到对应请求详情": "노드를 클릭하여 해당 요청 상세로 전환", "点客户端看它用过的模型": "클라이언트를 클릭하면 사용 모델 표시", "点模型看它的请求": "모델을 클릭하면 요청 표시", "点节点筛选,再点一次取消;点齿轮进入配置": "노드를 클릭해 필터, 다시 클릭하면 해제. 톱니바퀴는 설정", "熔断保护": "회로 차단기", "特殊请求路由": "특수 요청 라우팅", "特殊请求路由 · 只改写模型,不改选账号规则": "특수 요청 라우팅 · 모델만 다시 쓰고 계정 선택 규칙은 변경하지 않습니다", "独立": "독립", "独立账号顺序": "독립 계정 순서", "独立路由": "독립 라우팅", "独立路由的账号顺序不受全局消耗规则影响": "독립 경로의 계정 순서는 전역 소비 규칙의 영향을 받지 않습니다", "独立配置": "독립 설정", "画布位置不改变选路优先级": "캔버스 위치는 라우팅 우선순위를 바꾸지 않습니다", "真实请求还会考虑当时的会话绑定、并发与限额状态。": "실제 요청은 당시의 세션 바인딩, 동시 요청 및 할당량 상태도 고려합니다.", "确定删除「{model}」的独立路由配置?删除后该模型将使用全局路由。不会删除模型、账号或请求记录。": "“{model}”의 독립 라우팅 설정을 삭제하시겠습니까? 삭제 후 이 모델은 전역 라우팅을 사용합니다. 모델, 계정 및 요청 기록은 삭제하지 않습니다.", "确认转换": "변환 확인", "禁用全部账号": "모든 계정 비활성화", "禁用当前列表账号": "현재 목록의 계정 비활성화", "禁用账号": "계정 비활성화", "积分到期:暂无数据": "크레딧 만료: 데이터 없음", "积分:{time}": "크레딧: {time}", "移出": "제거됨", "移出本路由": "이 경로에서 제외", "移除此模型的独立路由配置,之后重新继承全局路由。不会删除模型、账号或请求记录。": "이 모델의 독립 라우팅 설정을 제거하고 전역 라우팅을 다시 상속합니다. 모델, 계정 및 요청 기록은 삭제하지 않습니다.", "移除路由提供商": "라우팅 공급자 제거", "窗口内无请求": "기간 내 요청 없음", "第 {n} 位": "{n}번째", "第 {n} 次尝试 · {name}": "{n}번째 시도 · {name}", "第 {n} 顺位": "우선순위 {n}", "等待回放": "재생 대기", "等待首帧": "첫 바이트 대기", "策略": "전략", "筛选模型": "모델별 필터", "粘性命中": "바인딩 적중", "粘性:{mode}": "세션 고정: {mode}", "粘滞": "세션 고정", "粘滞 {mode}": "고정 {mode}", "粘滞命中": "바인딩 적중", "粘滞标记": "바인딩 표시", "组名": "그룹 이름", "组名方便识别,对外模型 ID 给客户端使用。": "그룹 이름은 식별용이며 클라이언트는 공개 모델 ID를 사용합니다.", "经过 {n} 次切换后成功,最终承载:{account}": "{n}회 전환 후 성공했습니다. 최종 처리 계정: {account}", "绑定:{account}": "바인딩: {account}", "结束时间": "종료 시간", "结果未记录": "결과 미기록", "统一路由设置": "공통 라우팅 설정", "统一路由设置已保存": "공통 라우팅 설정이 저장되었습니다", "继承": "상속", "继承全局": "전역 설정 상속", "继承全局配置": "전역 설정 상속", "继承全局:{value}": "전역 상속: {value}", "继承时不能改这里的值;切到独立配置后才会写入这个模型。": "상속 중에는 값을 바꿀 수 없습니다. 독립 설정으로 바꾸면 이 모델에 저장됩니다.", "编辑全局默认": "전역 기본값 편집", "编辑范围": "편집 범위", "编辑规则": "규칙 편집", "编辑路由组": "경로 그룹 편집", "缩小画布": "축소", "网关继续尝试下一个账号": "게이트웨이가 다음 계정을 시도합니다", "耗时未记录": "소요 시간 미기록", "自动参与": "자동 참여", "自动参与模式下将明确停用此提供商,之后新增账号也不会自动恢复;不会删除提供商或账号。": "자동 참여 모드에서 이 공급자를 명시적으로 비활성화합니다. 이후 계정을 추가해도 자동으로 복원되지 않습니다. 공급자나 계정은 삭제하지 않습니다.", "自动参与(推荐)": "자동 참여(권장)", "自动消耗排序已启用,请先关闭规则再手动调整": "자동 소비 정렬이 켜져 있습니다. 수동으로 순서를 바꾸려면 먼저 규칙을 끄세요", "自动:空闲五分钟释放;会话内:空闲六小时释放;每轮或关闭:不保留跨请求绑定。": "자동: 5분 유휴 후 해제. 세션 내: 6시간 유휴 후 해제. 매 턴 또는 끄기: 요청 간 바인딩 없음.", "自动:空闲五分钟释放;会话内:空闲六小时;每轮或关闭:不跨请求绑定。": "자동: 5분 유휴 시 해제, 세션 내: 6시간 유휴까지, 매 턴 또는 끔: 요청 간 바인딩 없음.", "自定义路由组": "사용자 지정 경로 그룹", "草稿预演": "초안 미리보기", "被跳过": "건너뜀", "被跳过的账号": "건너뛴 계정", "规则": "규칙", "规则全局生效,不受原路由池限制;指定模型按自己的路由选账号,网关 Key 权限仍然生效。": "규칙은 전역으로 적용되며 원래 라우팅 풀에 제한되지 않습니다. 지정한 모델의 자체 라우팅으로 계정을 선택하며, 게이트웨이 키 권한은 계속 적용됩니다.", "规则最多 {n} 条。": "규칙은 최대 {n}개입니다.", "视频输入": "동영상 입력", "解除": "해제", "解除全局路由的参与范围限制,继续使用与账号页共用的手动顺序和自动消耗规则;模型独立配置保持不变。": "전역 라우팅 참여 범위 제한을 해제하되 계정 페이지와 공유하는 수동 순서와 자동 소비 규칙은 유지합니다. 모델 독립 설정은 변경되지 않습니다.", "解除全部粘滞": "모든 바인딩 해제", "解除只清除网关的账号绑定,不删除聊天历史、不关闭粘性设置。后续成功请求仍可建立新的绑定;重启网关会清空这些进程本地记录。": "해제는 게이트웨이의 계정 바인딩만 지웁니다. 채팅 기록을 삭제하거나 세션 고정을 끄지 않습니다. 이후 성공한 요청은 새 바인딩을 만들 수 있으며, 게이트웨이를 다시 시작하면 이 프로세스 내 기록이 지워집니다.", "解除当前模型全部粘滞": "현재 모델의 모든 바인딩 해제", "解除所有模型的全部会话粘滞。不会终止在途请求,之后的请求会重新选路。": "모든 모델의 세션 바인딩을 해제합니다. 처리 중 요청은 종료하지 않으며 이후 요청은 라우팅을 다시 선택합니다.", "解除这个模型的全部会话粘滞。不会终止在途请求,之后的请求会重新选路。": "이 모델의 모든 세션 바인딩을 해제합니다. 처리 중 요청은 종료하지 않으며 이후 요청은 라우팅을 다시 선택합니다.", "解除这条会话": "이 세션 해제", "触发客户端": "트리거 클라이언트", "计算中…": "계산 중…", "记录所有经过网关的请求,不要求绑定客户端。": "클라이언트 바인딩 없이 게이트웨이를 통과하는 모든 요청을 기록합니다.", "记录时间": "기록 시각", "设置参与范围": "참여 범위 설정", "识别客户端": "인식할 클라이언트", "该提供商在当前视图中已停用": "이 공급자는 현재 보기에서 비활성화되어 있습니다", "该提供商没有账号,请先到账号页添加。": "이 공급자에 계정이 없습니다. 먼저 계정 페이지에서 추가하세요.", "请填写组名和对外模型 ID": "그룹 이름과 공개 모델 ID를 입력하세요", "请检查熔断参数:失败阈值 1~20,时长 10~600 秒,恢复阈值 1~10。": "회로 차단기 설정을 확인하세요. 실패 임계값은 1~20, 시간은 10~600초, 복구 임계값은 1~10입니다.", "请求": "요청", "请求 ID 未记录": "요청 ID 미기록", "请求仍在处理中,当前阶段:{phase}": "요청이 아직 처리 중입니다. 현재 단계: {phase}", "请求仍在进行": "요청 처리 중", "请求会去哪里": "요청이 어디로 가나요?", "请求回放": "요청 재생", "请求在途": "요청 처리 중", "请求完成不代表会话关闭;粘滞有效期不是在线状态。": "요청 완료가 세션 종료를 의미하지는 않습니다. 바인딩 유효 기간은 온라인 상태가 아닙니다.", "请求已取消": "요청이 취소되었습니다", "请求当时的配置": "요청 당시 설정", "请求成功完成,未发生账号切换": "계정 전환 없이 요청을 성공적으로 완료했습니다", "请求成功完成,未记录承载账号": "요청은 성공했지만 처리한 계정은 기록되지 않았습니다", "请求执行": "요청 실행", "请求执行回放": "요청 실행 재생", "请求日志 →": "요청 로그 →", "请求未成功完成": "요청이 성공적으로 완료되지 않았습니다", "请求模型": "요청 모델", "请求活动范围": "요청 활동 범위", "请求状态": "요청 상태", "请求结论": "요청 결과", "请求范围": "요청 범위", "请求记录数据库不可用": "요청 기록 데이터베이스를 사용할 수 없습니다", "请求跟踪": "요청 추적", "请求跟踪内容": "요청 추적 내용", "请求进入": "요청 수신", "请求进入网关": "요청이 게이트웨이에 도착", "请求需要": "요청 요구사항", "请选择模型": "모델을 선택하세요", "读取中…": "불러오는 중…", "谁参与及先后顺序": "참여 대상과 우선순위", "调整全局消耗规则": "전역 소비 규칙 변경", "调整到期时间、可用余额及其他消耗规则的优先级": "만료 시간, 사용 가능 잔액 및 기타 소모 규칙의 우선순위 조정", "调整后续请求的配置": "이후 요청 설정 변경", "调整模型顺序": "모델 순서 변경", "调整积分到期远近及其他消耗规则": "크레딧 만료 순서 및 기타 소비 규칙 조정", "调用示例": "호출 예시", "账号 {name} 已{state}": "계정 {name}: {state}", "账号全部禁用": "모든 계정 중지됨", "账号启停与账号页同步,立即影响所有路由;策略与排序需保存。": "계정 활성 상태는 계정 페이지와 동기화되어 모든 경로에 즉시 적용됩니다. 전략과 순서는 저장해야 합니다.", "账号启停与默认规则": "계정 활성 상태 및 기본 규칙", "账号启停操作": "계정 활성화·비활성화 작업", "账号启停立即生效;路由配置保存后生效": "계정 상태는 즉시 적용되며 라우팅 설정은 저장 후 적용됩니다", "账号启停部分完成:成功 {ok} 个,失败 {fail} 个,跳过 {skip} 个。{details}": "계정 상태가 일부 업데이트되었습니다. 성공 {ok}개, 실패 {fail}개, 건너뜀 {skip}개. {details}", "账号尝试": "계정 시도", "账号已禁用": "비활성 계정", "账号已移除": "삭제된 계정", "账号操作": "계정 작업", "账号未记录": "계정 미기록", "账号组": "계정 그룹", "账号组操作": "계정 그룹 작업", "账号设置与全局保护另行保存,不属于本页路由草稿。": "계정 설정과 전역 보호는 별도로 저장되며 이 라우팅 초안에 포함되지 않습니다.", "账号设置与所有路由共用,不改变当前路由的参与名单。": "계정 설정은 모든 경로에 공통으로 적용되며 현재 경로의 참여 목록은 변경하지 않습니다.", "账号路由设置": "계정 라우팅 설정", "起点是请求本身,不依赖客户端绑定。": "요청 자체가 시작점이며 클라이언트 바인딩에 의존하지 않습니다.", "跟随列表中的最新请求": "목록의 최신 요청을 따라가는 중", "跨模型组合": "교차 모델 조합", "路径": "경로", "路径过多,画布仅展示前 300 条;统计覆盖完整窗口,请筛选模型缩小范围。": "경로가 많아 캔버스에는 처음 300개만 표시합니다. 통계는 전체 시간 범위를 포함합니다. 모델로 범위를 좁히세요.", "路由入口": "경로 진입점", "路由参与操作": "경로 참여 작업", "路由工作台": "라우팅 작업 공간", "路由工作台不可用": "라우팅 작업 공간을 사용할 수 없습니다", "路由快照未记录": "라우팅 스냅샷 미기록", "路由成员操作": "경로 구성원 작업", "路由接口不可用,请确认网关与界面已更新": "라우팅 API를 사용할 수 없습니다. 게이트웨이와 화면이 모두 업데이트되었는지 확인하세요.", "路由接口返回了不完整的数据": "라우팅 API가 불완전한 데이터를 반환했습니다", "路由数据正在更新,请稍后重试": "라우팅 데이터를 업데이트하는 중입니다. 잠시 후 다시 시도하세요.", "路由模式": "라우팅 모드", "路由画布": "라우팅 캔버스", "路由策略改为{value}": "라우팅 정책을 {value}(으)로 변경", "路由类型": "경로 유형", "路由组": "경로 그룹", "路由组已删除": "라우팅 그룹이 삭제됨", "路由视图": "라우팅 보기", "路由设置": "라우팅 설정", "路由配置": "라우팅 설정", "路由配置列表": "라우팅 설정 목록", "路由配置尚未读取": "라우팅 설정을 아직 불러오지 않았습니다", "路由配置已保存": "라우팅 설정이 저장되었습니다", "路由配置已保存,仅影响后续选路": "라우팅 설정이 저장되었으며 이후 라우팅에만 적용됩니다", "路由配置操作": "라우팅 설정 작업", "路由配置版本不可用,请更新网关后重试": "설정 버전을 사용할 수 없습니다. 게이트웨이를 업데이트한 후 다시 시도하세요.", "跳过候选": "건너뛴 후보", "转发前就失败、或旧记录未落库时,只能看到请求本身与配置快照。": "전달 전에 실패했거나 예전 기록이 저장되지 않았다면 요청 자체와 설정 스냅샷만 볼 수 있습니다.", "转发失败的账号暂时休息,避免连续请求反复撞到同一故障。": "전달에 실패한 계정을 일시적으로 쉬게 하여 같은 장애에 연속으로 요청하는 것을 방지합니다.", "转换只处理当前账号;之后新增账号按账号页的启用状态使用。不会启用任何已禁用的账号。": "기존 계정만 변환합니다. 이후 추가되는 계정은 계정 페이지의 활성 상태를 따릅니다. 비활성 계정은 활성화하지 않습니다.", "转换旧版全局参与设置": "이전 전역 참여 설정 변환", "转换旧版设置": "이전 설정 변환", "转换结果未确认,请重新读取全局配置": "변환 결과를 확인할 수 없습니다. 전역 설정을 다시 읽으세요.", "输出 {n} tokens": "출력 {n} tokens", "过程提示": "과정 안내", "运行视图": "실행 뷰", "近期 {n} 次请求": "최근 요청 {n}개", "返回全部流向": "전체 흐름으로 돌아가기", "返回列表": "목록으로 돌아가기", "返回实时": "실시간으로 돌아가기", "返回画布": "캔버스로 돌아가기", "还有 {n} 处": "{n}개 더", "还没有参与模型": "아직 참여 모델이 없습니다", "还没有参与路由的提供商": "아직 라우팅에 참여하는 공급자가 없습니다", "还没有可用模型,先在账号页添加账号": "아직 사용 가능한 모델이 없습니다. 먼저 계정 페이지에서 계정을 추가하세요.", "还没有可用的模型,请先启用模型和对应账号。": "사용할 수 있는 모델이 없습니다. 먼저 모델과 해당 계정을 활성화하세요.", "还没有规则。压缩请求会按原模型照常转发。": "규칙이 아직 없습니다. 압축 요청은 원본 모델로 그대로 전달됩니다.", "还没有规则。图片会照常交给原模型,看不了的就会报错。": "규칙이 아직 없습니다. 이미지는 원본 모델로 그대로 전달되며, 볼 수 없는 경우 오류가 납니다.", "还没有规则。标题请求会照常交给原模型。": "규칙이 아직 없습니다. 제목 요청은 원본 모델로 그대로 전달됩니다.", "还没有账号,先在账号页添加;有账号的提供商才会出现在这里": "아직 계정이 없습니다. 계정 페이지에서 추가하세요. 계정이 있는 제공자만 여기에 표시됩니다.", "还没选压缩模型": "압축 모델 미선택", "还没选原模型": "원본 모델 미선택", "还没选标题模型": "제목 모델 미선택", "还没选视觉模型": "비전 모델 미선택", "这一页改的只作用于当前范围": "이 페이지의 변경은 이 범위에만 적용됩니다", "这个范围内最近的请求。点一条看它当时是怎么选的账号。": "이 범위의 최근 요청입니다. 하나 열면 당시 계정 선택 과정을 볼 수 있습니다.", "这个范围怎么选账号": "이 범위의 계정 선택 방식", "这些设置由所有模型共用;提供商与账号的参与范围和顺序在各自视图中独立配置。": "이 설정은 모든 모델이 공유합니다. 공급자 및 계정의 참여 범위와 순서는 각 보기에서 독립적으로 설정합니다.", "这份记录来自实际请求,不使用当前账号队列重新推演。": "이 기록은 실제 요청에서 가져온 것으로 현재 계정 대기열을 사용한 재시뮬레이션이 아닙니다.", "这是请求当时保存的选路快照,修改当前路由不会改变这份记录。": "요청 당시 저장된 라우팅 스냅샷입니다. 현재 라우팅을 변경해도 이 기록은 바뀌지 않습니다.", "这条会话已解除或过期,不再有活跃绑定。": "이 세션은 해제되었거나 만료되어 활성 바인딩이 없습니다.", "这条规则只改写被识别为标题生成的小请求,普通对话不受影响。": "이 규칙은 제목 생성으로 인식된 작은 요청만 바꿉니다. 일반 대화에는 영향을 주지 않습니다.", "这条规则里的模型收到图片时按选定的方式处理;没被任何规则选中的模型一律原样放行。": "이 규칙의 모델에 이미지가 오면 선택한 방식으로 처리합니다. 어떤 규칙에도 선택되지 않은 모델은 그대로 통과합니다.", "这条请求使用的路由组已删除,当时的快照仍可查看": "이 요청에서 사용한 라우팅 그룹은 삭제되었지만 당시 스냅샷은 계속 볼 수 있습니다", "这条请求对应的会话当前仍绑定到「{account}」。": "이 요청의 세션은 현재 “{account}”에 바인딩되어 있습니다.", "这条请求没有保存上游尝试明细": "이 요청의 업스트림 시도 상세가 저장되지 않았습니다", "这条请求没有保存路由决策": "이 요청에는 저장된 라우팅 결정이 없습니다", "这条请求没有保存路由快照,仍可查看已有的请求和尝试信息。": "이 요청의 라우팅 스냅샷은 저장되지 않았지만 기존 요청 및 시도 정보는 볼 수 있습니다.", "这次尝试的结果": "이번 시도의 결과", "这里只决定是否参与本路由,不改变账号启用状态。": "이 경로의 참여 여부만 결정하며 계정 활성 상태는 변경하지 않습니다.", "这里的参与范围只影响当前视图;账号启停、并发和限制器属于账号本身,所有模型共用。": "여기의 참여 범위는 현재 보기에만 영향을 줍니다. 계정 활성화, 동시 처리 및 제한기는 계정 자체의 설정으로 모든 모델이 공유합니다.", "这里的顺序决定实际选路;画布只为查看请求调整位置。": "여기의 순서는 실제 라우팅에 적용되며 캔버스는 요청을 보기 쉽게 위치만 조정합니다.", "这里调整的是账号组的全局消耗规则;当前独立路由的账号顺序保持不变。": "여기서는 계정 그룹의 전역 소비 규칙을 조정합니다. 현재 독립 경로의 계정 순서는 유지됩니다.", "连线表示参与本路由": "연결선은 이 경로의 참여 관계를 나타냅니다", "连线表示账号组中有已启用账号": "연결선은 활성 계정이 있는 그룹을 나타냅니다", "连续失败达到阈值时暂时让位,恢复后再重新参与。": "연속 실패가 임계값에 도달하면 일시적으로 빠지고, 복구 후 다시 참여합니다.", "退避 {time}": "백오프 {time}", "选中": "선택됨", "选中流量详情": "선택한 트래픽 상세", "选中路径": "선택한 경로", "选择一个或多个客户端": "클라이언트를 하나 이상 선택", "选择一条请求查看执行过程": "요청을 선택하여 실행 과정 보기", "选择一条请求查看选路过程": "요청을 선택하여 라우팅 과정 보기", "选择作用范围后配置路由": "적용 범위를 선택하여 라우팅 설정", "选择左侧请求查看选路过程": "왼쪽 요청을 선택하면 라우팅 과정을 볼 수 있습니다.", "选择模型": "모델 선택", "选择请求模型后查看具体限流状态": "요청 모델을 선택하여 구체적인 요청 제한 상태 확인", "选择账号": "계정 선택", "选择路由入口": "경로 진입점 선택", "选择预览模型后查看队列": "미리보기 모델을 선택하면 큐를 볼 수 있습니다", "选路原因未记录": "라우팅 선택 이유가 기록되지 않았습니다", "选路情况": "라우팅 현황", "选路方式": "라우팅 방식", "选路预演": "라우팅 미리보기", "逐步回放": "단계별 재생", "配置作用范围": "설정 적용 범위", "配置第 {rank} 顺位;当前可用候选第 {effective} 顺位。": "설정 우선순위 {rank}, 현재 사용 가능한 후보 우선순위 {effective}입니다.", "配置范围": "설정 범위", "配置该模型": "이 모델 설정", "配置请求的参与范围与优先顺序": "요청의 라우팅 참여 범위와 우선순위 설정", "配置项": "설정 항목", "配置顺位 {n}": "설정 순위 {n}", "重新读取": "다시 읽기", "重新读取会丢弃当前范围的未保存草稿,其他范围的草稿保留。": "다시 읽으면 현재 범위의 저장되지 않은 초안을 버립니다. 다른 범위의 초안은 유지됩니다.", "重新读取配置": "설정 다시 읽기", "队列为无会话预演;实际粘性命中和重试顺延以回放为准。": "대기열은 세션 바인딩을 고려하지 않은 미리보기입니다. 실제 바인딩 적중과 재시도 전환은 재생 기록을 확인하세요.", "队首": "대기열 첫 번째", "阶段 {phase} · 已进行 {time}": "단계 {phase} · 경과 {time}", "限制器跳过": "제한기에 의해 건너뜀", "隐藏无账号 ({n})": "계정 없는 항목 숨기기 ({n})", "静止蓝线:选中历史路径": "정지된 파란 선: 선택한 과거 경로", "顺位": "순위", "顺序修改即时保存,仅作用于当前视图。": "순서 변경은 즉시 저장되며 현재 보기에만 적용됩니다.", "顺序调整不会解除限流;有效粘滞优先于普通账号顺序。": "순서 변경은 요청 제한을 해제하지 않습니다. 유효한 바인딩은 일반 계정 순서보다 우선합니다.", "预演首选": "미리보기 첫 후보", "预览模型": "미리보기 모델", "首帧": "첫 응답", "首帧 {time}": "첫 응답 {time}", "首帧耗时": "첫 프레임 소요 시간", "首帧:{time}": "첫 프레임: {time}", "首选账号": "우선 계정", "默认自动参与;新增可用提供商无需再添加路由,明确停用项保持不变。": "기본적으로 자동 참여합니다. 새로 추가된 사용 가능한 공급자는 별도 라우팅 추가가 필요 없으며 명시적으로 비활성화한 항목은 유지됩니다.", "默认规则": "기본 규칙", "默认路由": "기본 라우팅", "Agent 配置": "Agent 설정", "Claude Code 按 Opus / Sonnet / Haiku / 子 Agent 分档请求模型;这里把每档指向网关目录里的模型,留空表示不改写该档。": "Claude Code는 Opus / Sonnet / Haiku / 서브에이전트 등급별로 모델을 요청합니다. 여기서 각 등급을 게이트웨이 카탈로그의 모델로 지정하세요. 비워 두면 해당 항목은 수정하지 않습니다.", "Claude Code 支持多模型菜单和逐模型思考等级;上下文及输入能力由客户端识别,不把自动压缩阈值冒充上下文窗口。": "Claude Code는 여러 모델 메뉴와 모델별 추론 수준을 지원합니다. 컨텍스트와 입력 기능은 클라이언트가 인식하며, 자동 압축 기준을 컨텍스트 창으로 취급하지 않습니다.", "Claude Code 的 Opus / Sonnet / Haiku / 子 Agent 四档默认都指向上面选的模型;要让某一档用别的模型,在这里单独改。": "Claude Code의 Opus / Sonnet / Haiku / 서브에이전트 네 등급은 기본적으로 위에서 고른 모델을 가리킵니다. 특정 등급만 다른 모델로 쓰려면 여기서 변경하세요.", "Codex 的模型目录支持逐模型上下文、图片和思考档位,不提供可写的逐模型输出上限。": "Codex 모델 카탈로그는 모델별 컨텍스트, 이미지 입력 및 추론 수준을 지원하지만 모델별 출력 한도를 기록하는 설정은 없습니다.", "Crush 需要明确填写输出上限、图片与思考能力": "Crush는 출력 한도, 이미지 및 추론 지원을 명시해야 합니다", "DSH 配置目标": "DSH 설정 대상", "Kimi Code 只能追加能力声明,不能关闭内置识别的能力。输出上限仅新版 Anthropic 协议生效;旧版不写入思考档位。": "Kimi Code는 기능 선언을 추가할 수 있지만 내장된 기능 인식을 끌 수는 없습니다. 출력 한도는 신버전의 Anthropic 프로토콜에서만 적용되며, 구버전에는 추론 수준을 기록하지 않습니다.", "MCP 服务名称": "MCP 서버 이름", "Skill 目录名": "Skill 폴더 이름", "Token 上限必须是 1 到 1 亿之间的整数": "토큰 한도는 1에서 1억 사이의 정수여야 합니다", "Zed 的 API Key 仍需在客户端提供商设置中填写;本页不修改系统凭证。": "Zed의 제공자 설정에서 API Key를 입력해야 합니다. 이 페이지는 시스템 자격 증명을 변경하지 않습니다.", "{id}(不在网关目录)": "{id}(게이트웨이 카탈로그에 없음)", "· 走网关": "· 게이트웨이 경유", "一键把本机 AI 客户端接到本地网关:改写它自己的配置文件,保留其它设置": "로컬 AI 클라이언트를 로컬 게이트웨이에 연결합니다. 각 클라이언트의 설정 파일을 고쳐 쓰고 나머지 설정은 그대로 둡니다", "一键接入": "간편 연결", "一键设置": "일괄 설정", "上下文": "컨텍스트", "上次应用未完整结束,请先查看恢复预览。": "마지막 적용이 완료되지 않았습니다. 먼저 복원 미리보기를 확인하세요.", "上游模型 id,例如 raccoon-coder-pro": "업스트림 모델 ID (예: raccoon-coder-pro)", "下面是这个客户端文件里现有的配置(只读)。点「从客户端导入」把它收进我的配置,之后就能编辑和切换。": "아래는 이 클라이언트 설정 파일에 있는 기존 설정입니다 (읽기 전용). 「클라이언트에서 가져오기」를 누르면 내 설정으로 가져와 편집하고 전환할 수 있습니다.", "不写入": "기록 안 함", "不要添加 /v1/messages;客户端会自行追加请求路径。": "/v1/messages를 붙이지 마세요. 클라이언트가 요청 경로를 추가합니다.", "与客户端一致": "클라이언트와 일치", "个 · 已安装": "개 · 설치됨", "中转": "중계", "仅修改所选 MCP 条目,保留其它配置和注释;保存不会启动服务。": "선택한 MCP 항목만 변경하며 다른 설정과 주석은 유지합니다. 저장해도 서버는 시작되지 않습니다.", "仅可读取": "읽기 전용", "从客户端导入": "클라이언트에서 가져오기", "从网关目录选择": "게이트웨이 목록에서 선택", "从网关目录选择模型": "게이트웨이 목록에서 모델 선택", "会用最近一次备份覆盖它的配置文件。这一步不会改动你在本页存的配置列表。": "가장 최근 백업으로 설정 파일을 덮어씁니다. 이 페이지에 저장한 설정 목록은 변경되지 않습니다.", "低": "낮음", "使用中": "사용 중", "使用此配置": "이 설정 사용", "使用此配置时设为默认,其他模型仍可在客户端选择。": "이 설정을 사용하면 기본 모델로 지정됩니다. 다른 모델도 클라이언트에서 선택할 수 있습니다.", "使用真实模型 ID,不要填写模型展示名。": "표시 이름이 아닌 실제 모델 ID를 사용하세요.", "使用网关 Key": "게이트웨이 키 사용", "保存会直接修改客户端配置;确认前展示差异,写入前自动备份。": "저장하면 클라이언트 설정이 직접 변경됩니다. 확인 전에 차이를 표시하고 기록 전에 자동 백업합니다.", "保存修改": "변경 저장", "保存只记录方案,不修改客户端。应用时会另外展示文件差异并请求确认。": "저장은 프로필만 기록하고 클라이언트를 변경하지 않습니다. 적용 시 파일 차이를 보여 주고 별도로 확인을 요청합니다.", "保存后可在配置列表中切换,不影响当前使用的配置。": "저장 후 설정 목록에서 전환할 수 있습니다. 현재 사용 중인 설정에는 영향을 주지 않습니다.", "保存后同步更新客户端;写入前可查看改动,并自动备份。": "저장하면 클라이언트도 업데이트됩니다. 기록 전에 변경 사항을 확인할 수 있으며 자동으로 백업합니다.", "保存方案": "프로필 저장", "保存方案不会切换客户端;应用后改变实际默认模型。": "저장만으로 클라이언트가 전환되지 않습니다. 적용하면 실제 기본 모델이 변경됩니다.", "保存方案不会切换客户端;选择“应用并设为默认”才改变实际默认模型。": "저장만으로 클라이언트가 전환되지 않습니다. 실제 기본 모델을 변경하려면 ‘적용하고 기본으로 설정’을 선택하세요.", "保存时自动写入完整的 /chat/completions 路径。": "전체 /chat/completions 경로가 자동으로 기록됩니다.", "保存路径": "경로 저장", "保留导入的认证": "가져온 인증 유지", "保留现有认证": "기존 인증 유지", "修改后点击「使用此配置」才会更新客户端。": "편집 후 ‘이 설정 사용’을 선택해야 클라이언트가 업데이트됩니다.", "停用后将从客户端可选项中关闭此配置,其他配置不受影响。": "클라이언트 선택 목록에서 이 설정을 비활성화합니다. 다른 설정에는 영향을 주지 않습니다.", "停用配置": "설정 비활성화", "全选搜索结果": "검색 결과 모두 선택", "全部配置(全局覆盖)": "모든 프로필(전역 덮어쓰기)", "共": "합계", "关闭后丢弃本次修改,不会保存配置或改动客户端。": "닫으면 변경 사항을 버립니다. 설정을 저장하거나 클라이언트를 변경하지 않습니다.", "关闭后丢弃本次草稿,不会保存空方案,也不会修改客户端。": "닫으면 이 초안이 삭제됩니다. 빈 프로필이 저장되거나 클라이언트가 변경되지 않습니다.", "内容已经一致,无需写入": "내용이 이미 일치하여 기록할 필요가 없습니다", "写入中…": "쓰는 중…", "写入后需要重开会话才生效": "쓴 뒤에는 세션을 다시 열어야 적용됩니다", "写入失败:{reason}": "쓰기 실패: {reason}", "写入客户端": "클라이언트에 쓰기", "写入文件": "설정 파일", "写入预览": "쓰기 미리보기", "删除 MCP": "MCP 삭제", "删除 Skill": "Skill 삭제", "删除只移除 SKILL.md,辅助文件保留在原目录;不会执行其中的脚本。": "삭제 시 SKILL.md만 제거합니다. 보조 파일은 원래 폴더에 남으며 스크립트는 실행하지 않습니다.", "删除客户端配置": "클라이언트 설정 삭제", "删除已保存方案?": "저장된 프로필을 삭제할까요?", "删除新建文件": "새로 만든 파일 삭제", "删除方案": "프로필 삭제", "删除配置": "설정 삭제", "删除配置?": "설정을 삭제할까요?", "动态表达式、独立作用域或全局覆盖的 MCP 为只读,请在 DSH 中编辑。": "동적 표현식, 독립 범위 또는 전역 덮어쓰기가 있는 MCP는 읽기 전용입니다. DSH에서 편집하세요.", "单配置": "단일 설정", "另一项配置操作尚未完成": "다른 설정 작업이 아직 진행 중입니다", "只保存变量引用,不修改系统环境;请在启动客户端的环境里设置变量值。": "변수 참조만 저장하고 시스템 환경은 변경하지 않습니다. 클라이언트를 시작하는 환경에서 변수 값을 설정하세요.", "只删除 Agent2API 中的方案,不修改客户端当前配置。": "Agent2API의 프로필만 삭제합니다. 클라이언트의 현재 설정은 변경되지 않습니다.", "只改 enabled 与默认项,其余条目原样保留": "enabled 와 기본 항목만 바꾸고 나머지 항목은 그대로 둡니다", "只改属于我们的那几个键,其它设置原样保留": "저희 키만 바꾸고 나머지 설정은 그대로 둡니다", "可先新增配置,安装后再使用": "먼저 설정을 추가하고 설치 후 사용할 수 있습니다", "可同时启用多条;切换只改 enabled 与默认项": "여러 개를 동시에 켤 수 있습니다. 전환은 enabled 와 기본 항목만 바꿉니다", "可搜索并多选模型;上下文、输出上限和能力分别从网关目录自动填入。": "모델을 검색하고 여러 개 선택할 수 있습니다. 각 모델의 컨텍스트 크기, 출력 한도와 기능은 게이트웨이 목록에서 자동으로 입력됩니다.", "可选模型": "선택 가능한 모델", "同一时刻只有一套生效;写入 = 把这一套整段写进客户端文件": "한 번에 하나만 적용됩니다. 쓰기 = 이 설정을 클라이언트 파일에 통째로 기록합니다", "启用 {name}": "{name} 사용", "启用此配置": "이 설정 활성화", "启用配置": "설정 활성화", "图形化管理客户端原生配置;保存方案与应用配置分开。": "클라이언트 기본 설정을 화면에서 관리합니다. 프로필 저장과 설정 적용은 별개입니다.", "图片输入": "이미지 입력", "在客户端管理认证": "클라이언트에서 인증 관리", "填写服务根地址,不要附加 /v1beta 或 generateContent 路径。": "서비스 루트 주소를 입력하세요. /v1beta 또는 generateContent 경로를 붙이지 마세요.", "处理中…": "처리 중…", "备注": "메모", "多套配置": "여러 설정", "多配置 · 已启用 {n}": "다중 설정 · {n}개 사용 중", "子 Agent": "서브에이전트", "安装或初始化后可重新检测;自定义安装位置可指定配置路径。": "설치 또는 초기화 후 다시 감지할 수 있습니다. 사용자 지정 위치는 설정 경로를 지정하세요.", "完整配置文件路径": "설정 파일 전체 경로", "官方直连": "공식 직결", "客户端列表加载失败:{reason}": "클라이언트 목록을 불러오지 못했습니다: {reason}", "客户端列表响应无效": "클라이언트 목록 응답이 잘못되었습니다", "客户端协议": "클라이언트 프로토콜", "客户端原生 MCP 配置(JSON)": "클라이언트 기본 MCP 설정(JSON)", "客户端原生配置": "클라이언트 기본 설정", "客户端官方配置说明": "클라이언트 공식 설정 안내", "客户端实际配置": "클라이언트 실제 설정", "客户端必须实际使用同一个配置文件;本页不改变客户端启动参数。": "클라이언트가 실제로 같은 설정 파일을 사용해야 합니다. 이 페이지는 시작 인수를 변경하지 않습니다.", "客户端文件已有外部修改,自动恢复会拒绝覆盖。": "클라이언트 파일에 외부 변경이 있습니다. 자동 복원은 덮어쓰기를 거부합니다.", "客户端条目启用状态": "클라이언트 항목 활성화 상태", "客户端清单": "클라이언트 목록", "客户端管理分类": "클라이언트 관리 분류", "客户端自己的设置优先;这里写的是写入时带进去的初值": "클라이언트 자체 설정이 우선입니다. 여기 쓰는 값은 기록 시 넣는 초기값입니다", "客户端资源已保存并校验": "클라이언트 리소스를 저장하고 검증했습니다", "客户端选项": "클라이언트 옵션", "客户端配置写入后未通过校验": "기록 후 클라이언트 설정 검증에 실패했습니다", "客户端配置已经一致,无需写入": "클라이언트 설정이 이미 일치하여 기록할 필요가 없습니다", "客户端默认地址": "클라이언트 기본 주소", "密钥在 Agent2API 中加密保存;使用时按客户端要求写入。": "키는 Agent2API에 암호화하여 저장되며 사용 시 클라이언트가 요구하는 형식으로 기록됩니다.", "密钥已隐藏;绿色为新增,红色为删除。所有实际写入文件都列在这里。": "키는 숨겨집니다. 초록색은 추가, 빨간색은 삭제를 나타냅니다. 실제로 기록할 모든 파일이 여기에 표시됩니다.", "导入模型及客户端未知字段会保留;本页删除方案不会删除客户端条目。": "가져온 모델과 알 수 없는 클라이언트 필드는 유지됩니다. 여기서 프로필을 삭제해도 클라이언트 항목은 삭제되지 않습니다.", "将删除此配置及客户端中的对应条目,其他配置不受影响。": "이 설정과 해당 클라이언트 항목을 삭제합니다. 다른 설정에는 영향을 주지 않습니다.", "尚未初始化": "초기화되지 않음", "尚未支持这个客户端的资源管理": "이 클라이언트의 리소스 관리는 아직 지원하지 않습니다", "展开可调整能力;— 表示客户端未声明": "펼쳐서 능력을 조정할 수 있습니다. — 는 클라이언트가 선언하지 않음", "已保存": "저장됨", "已保存方案": "저장된 프로필", "已保存,未应用": "저장됨, 적용되지 않음", "已写入 {name}": "{name}에 기록했습니다", "已写入 {name};这个客户端只在启动时读配置,重开一个会话才生效": "{name}에 기록했습니다. 이 클라이언트는 시작할 때만 설정을 읽으므로 세션을 다시 열어야 적용됩니다", "已删除保存方案,客户端配置未改动": "저장된 프로필을 삭제했습니다. 클라이언트 설정은 변경되지 않았습니다", "已安装": "설치됨", "已导入 {n} 套方案": "프로필 {n}개를 가져왔습니다", "已按备份还原 {name}": "{name}을(를) 백업에서 복원했습니다", "已收进我的配置:{n} 条": "내 설정으로 가져왔습니다: {n}개", "已检测到": "감지됨", "已选择": "선택됨", "已选模型": "선택한 모델", "已配置": "설정됨", "已预填网关地址、协议、Key 与模型;确认后直接写入客户端,不需要先保存方案。": "게이트웨이 주소, 프로토콜, Key와 모델이 미리 입력되어 있습니다. 프로필을 먼저 저장하지 않고 확인 후 클라이언트에 직접 기록합니다.", "应用": "적용", "应用中…": "적용 중…", "应用到客户端": "클라이언트에 적용", "应用并设为默认": "적용하고 기본으로 설정", "应用时使用当前启用的真实 Key;预览会隐藏密钥。": "적용 시 현재 활성화된 실제 키를 사용합니다. 미리보기에서는 키를 숨깁니다.", "当前环境不支持保存": "이 환경에서는 저장할 수 없습니다", "当前环境不支持保存(桥接方法缺失)": "이 환경에서는 저장할 수 없습니다 (브리지 메서드 없음)", "当前环境不支持写入(桥接方法缺失)": "이 환경에서는 쓸 수 없습니다 (브리지 메서드 없음)", "当前环境不支持客户端接管(桥接方法缺失)": "이 환경에서는 클라이언트 연결을 쓸 수 없습니다 (브리지 메서드 없음)", "当前环境不支持客户端配置": "이 환경에서는 클라이언트 설정을 사용할 수 없습니다", "当前环境不支持导入": "이 환경에서는 가져올 수 없습니다", "当前环境不支持导入(桥接方法缺失)": "이 환경에서는 가져올 수 없습니다 (브리지 메서드 없음)", "当前环境不支持应用": "이 환경에서는 적용할 수 없습니다", "当前环境不支持恢复": "이 환경에서는 복원할 수 없습니다", "当前环境不支持还原(桥接方法缺失)": "이 환경에서는 복원할 수 없습니다 (브리지 메서드 없음)", "当前环境不支持预览": "이 환경에서는 미리보기를 사용할 수 없습니다", "当前环境无法读取网关模型目录": "이 환경에서는 게이트웨이 모델 목록을 읽을 수 없습니다", "当前网关未启用 API Key 鉴权;占位值只用于客户端要求非空密钥的场景。": "현재 게이트웨이는 API 키 인증을 사용하지 않습니다. 클라이언트가 비어 있지 않은 키를 요구할 때만 임시 값을 사용합니다.", "当前默认": "현재 기본값", "思考能力": "추론 지원", "恢复作用在网关所在机器;密钥已隐藏,不会覆盖应用后的外部修改。": "복원은 게이트웨이가 실행되는 컴퓨터에 적용됩니다. 키는 숨겨지며 적용 후 외부 변경은 덮어쓰지 않습니다.", "恢复自动检测": "자동 감지로 복원", "所有操作作用在网关所在机器。": "모든 작업은 게이트웨이가 실행되는 컴퓨터에 적용됩니다.", "所选 Key 下没有可用的对话模型,请先启用模型或手动填写。": "선택한 Key로 사용할 수 있는 대화 모델이 없습니다. 모델을 활성화하거나 직접 입력하세요.", "所选 Key 下没有可用的对话模型,请先启用模型或更换 Key。": "선택한 Key로 사용할 수 있는 대화 모델이 없습니다. 모델을 활성화하거나 다른 Key를 선택하세요.", "所选 Key 无权使用当前模型,请重新选择": "선택한 Key에는 현재 모델을 사용할 권한이 없습니다. 다시 선택하세요.", "手动添加模型": "모델 직접 추가", "手机端可查看客户端实际配置并撤销上次应用;编辑方案请使用桌面端。": "모바일에서는 클라이언트 실제 설정을 확인하고 마지막 적용을 취소할 수 있습니다. 프로필 편집은 데스크톱에서 하세요.", "手机端可查看模型配置、撤销上次应用,并管理提示词、Skill 与 MCP。": "모바일에서 모델 설정을 확인하고 마지막 적용을 취소하며 프롬프트, Skill과 MCP를 관리할 수 있습니다.", "指定配置路径": "설정 경로 지정", "按备份还原": "백업에서 복원", "按备份还原 {name}?": "{name}을(를) 백업에서 복원할까요?", "换 Key 后会按新 Key 的授权重新核对已选模型": "키를 바꾸면 새 키의 권한으로 선택한 모델을 다시 확인합니다.", "接入后使用此默认模型,其它已选模型仍可在客户端切换。": "연결 후 이 모델이 기본으로 사용됩니다. 다른 선택한 모델도 클라이언트에서 전환할 수 있습니다.", "接入客户端": "클라이언트 연결", "接入本网关": "이 게이트웨이에 연결됨", "接入状态来自客户端配置文件。恢复前显示差异;文件被其他程序修改时拒绝覆盖。": "연결 상태는 클라이언트 설정 파일에서 읽습니다. 복원 전에 차이를 표시하며 다른 프로그램이 변경한 파일은 덮어쓰지 않습니다.", "接入端点": "연결 엔드포인트", "接口基址": "API 기본 URL", "搜索客户端": "클라이언트 검색", "搜索客户端 / 配置文件…": "클라이언트 / 설정 파일 검색…", "搜索已选模型": "선택한 모델 검색", "搜索模型 ID / 展示名…": "모델 ID / 표시 이름 검색…", "撤销上次应用": "마지막 적용 취소", "操作目标:网关所在机器": "작업 대상: 게이트웨이 컴퓨터", "收起更多配置": "추가 설정 접기", "收起模型选择": "모델 선택 접기", "改写网关所在机器上的客户端配置": "게이트웨이 컴퓨터의 클라이언트 설정 관리", "改动": "변경", "放弃修改": "변경 버리기", "放弃未保存的修改?": "저장하지 않은 변경을 버릴까요?", "新增": "추가", "新增 MCP": "MCP 추가", "新增配置": "설정 추가", "新建 Skill": "새 Skill", "新建文件": "새 파일", "新建方案或导入当前配置;保存后再决定是否应用。": "프로필을 만들거나 현재 설정을 가져오세요. 저장한 뒤 적용 여부를 결정할 수 있습니다.", "新建配置": "새 설정", "新建配置方案": "새 설정 프로필", "新版网页版和桌面版分别保存模型配置;旧版模型设置共享,MCP 始终只写入所选运行方式。": "신버전의 웹과 데스크톱 앱은 모델 설정을 따로 저장합니다. 구버전 모델 설정은 공유되지만 MCP는 항상 선택한 프로필에만 기록됩니다.", "新配置": "새 설정", "方案中的密钥加密保存;客户端原生配置可能要求明文。": "프로필의 키는 암호화하여 저장됩니다. 클라이언트 기본 설정에는 평문이 필요할 수 있습니다.", "方案名称": "프로필 이름", "方案已保存,尚未应用到客户端": "프로필이 저장되었지만 클라이언트에는 아직 적용되지 않았습니다", "无改动": "변경 없음", "无配置": "설정 없음", "无需认证": "인증 불필요", "旧版共享设置": "구버전 공유 설정", "暂无预览": "미리보기가 없습니다", "更多配置": "추가 설정", "最多选择 {n} 个模型": "모델을 최대 {n}개까지 선택할 수 있습니다", "最近检测:{time}": "최근 감지: {time}", "有改动": "변경 있음", "未声明 / 保留": "미지정 / 유지", "未安装": "설치 안 됨", "未找到客户端程序或配置文件": "클라이언트 프로그램 또는 설정 파일을 찾지 못했습니다", "未接入本网关": "이 게이트웨이에 연결되지 않음", "未接管": "연결되지 않음", "未检测到": "감지되지 않음", "未检测到安装": "설치가 감지되지 않음", "未读取到可识别的客户端配置": "인식할 수 있는 클라이언트 설정을 찾지 못했습니다", "未走网关": "게이트웨이 미경유", "本机": "이 기기", "本机服务": "로컬 서비스", "本机没有找到 {name}": "이 컴퓨터에서 {name}을(를) 찾지 못했습니다", "本机网关": "로컬 게이트웨이", "本网关": "이 게이트웨이", "来自客户端文件,只读": "클라이언트 설정 파일에서 읽음 (읽기 전용)", "查看文件改动": "파일 변경 보기", "桌面版": "데스크톱 버전", "模型 ID": "모델 ID", "模型 ID 不能为空或重复": "모델 ID는 비어 있거나 중복될 수 없습니다", "模型 id": "모델 ID", "模型 {n}": "모델 {n}", "模型展示名": "모델 표시 이름", "模型思考等级": "모델 추론 수준", "模型或客户端不支持所选思考等级": "모델 또는 클라이언트가 선택한 추론 수준을 지원하지 않습니다", "模型未声明思考档位,保留客户端默认,不显示猜测选项。": "모델이 추론 수준을 선언하지 않았습니다. 클라이언트 기본값을 유지하며 추측한 옵션은 표시하지 않습니다.", "模型目录响应无效": "모델 목록 응답이 잘못되었습니다", "模型目录读取失败,可手动填写真实模型 ID。": "모델 목록을 읽지 못했습니다. 실제 모델 ID를 직접 입력할 수 있습니다.", "模型配置": "모델 설정", "模型默认": "모델 기본값", "正在检测客户端…": "클라이언트 감지 중…", "正在生成准确预览…": "정확한 미리보기 생성 중…", "正在生成预览…": "미리보기 생성 중…", "正在读取本机客户端…": "로컬 클라이언트 읽는 중…", "正在读取网关模型并填入配置…": "게이트웨이 모델을 불러와 설정을 입력하는 중…", "此处来自磁盘文件,不代表正在运行的旧会话已经重载。": "여기에는 디스크 파일에서 읽은 내용이 표시됩니다. 실행 중인 기존 세션이 설정을 다시 읽었다는 뜻은 아닙니다.", "此配置未在客户端中使用,删除不会改变当前使用的配置。": "이 설정은 클라이언트에서 사용 중이 아닙니다. 삭제해도 현재 설정은 바뀌지 않습니다.", "每个客户端可以有": "각 클라이언트는", "每个模型独立保存能力;展开可调整,未声明的数据不会猜测填写。": "기능은 모델별로 저장됩니다. 펼쳐서 조정할 수 있으며 미지정 값은 추측하여 채우지 않습니다.", "没有匹配的客户端": "일치하는 클라이언트가 없습니다", "没有可导入的新条目(可能还没配过,或已经在我的配置里)": "가져올 새 항목이 없습니다 (아직 설정하지 않았거나 이미 내 설정에 있음)", "没有新的条目可收(都已在我的配置里)": "가져올 새 항목이 없습니다 (모두 내 설정에 있음)", "没有新的配置可以导入": "가져올 새 설정이 없습니다", "没有检测到可接管的客户端": "관리 가능한 클라이언트가 감지되지 않았습니다", "没有选中配置": "선택한 설정이 없습니다", "没有选中配置方案": "선택된 설정 프로필이 없습니다", "添加到客户端": "클라이언트에 추가", "点击右上角「新增配置」,添加网关或其他服务": "오른쪽 위의 ‘설정 추가’에서 게이트웨이나 다른 서비스를 추가하세요", "点击模型展开详细配置;搜索只筛选显示,不会移除模型。": "모델을 클릭하면 상세 설정이 펼쳐집니다. 검색은 표시 목록만 필터링하며 모델을 제거하지 않습니다.", "版本未识别": "버전 확인 불가", "状态来自配置文件,已打开的会话可能需要重新加载": "상태는 설정 파일 기준입니다. 기존 세션은 다시 불러와야 할 수 있습니다", "环境变量名": "환경 변수 이름", "生成中…": "생성 중…", "留空保留 / 未声明": "빈 값: 유지 / 미지정", "留空保留已保存密钥": "비워 두면 저장된 키 유지", "留空的分档会以 Claude Code 内置模型名请求网关;网关没有同名模型时该档会失败,建议点「一键设置」。": "비어 있는 등급은 Claude Code 기본 모델 이름으로 게이트웨이에 요청합니다. 같은 이름의 모델이 없으면 해당 등급은 실패하므로 \"일괄 설정\"을 권장합니다.", "留空表示不写入": "비워 두면 기록하지 않음", "确认": "확인", "确认使用": "사용 확인", "确认停用": "비활성화 확인", "确认写入": "기록 확인", "确认写入后会同步修改客户端开关;取消不会生效。": "기록을 확인하면 클라이언트 항목의 활성화 상태도 변경됩니다. 취소하면 적용되지 않습니다.", "确认写入后更新客户端默认模型;取消不会生效。": "기록을 확인하면 클라이언트 기본 모델이 변경됩니다. 취소하면 적용되지 않습니다.", "确认写入客户端资源": "클라이언트 리소스 기록 확인", "确认删除": "삭제 확인", "确认删除客户端资源": "클라이언트 리소스 삭제 확인", "确认后将切换到此配置,原配置会保留在列表中。": "확인하면 이 설정으로 전환합니다. 이전 설정은 목록에 유지됩니다.", "确认后将更新 {name} 的配置文件,原配置会自动备份。": "확인하면 {name}의 설정 파일을 업데이트합니다. 원본 파일은 자동으로 백업합니다.", "确认后将此配置加入客户端,已有配置会保留。": "확인하면 이 설정을 클라이언트에 추가합니다. 기존 설정은 유지됩니다.", "确认应用": "적용 확인", "确认恢复": "복원 확인", "确认接入": "연결 확인", "移除模型会写入客户端配置;其它条目和未知字段保留,确认前可查看差异。": "모델을 제거하면 클라이언트 설정에 기록됩니다. 다른 항목과 알 수 없는 필드는 유지되며 확인 전에 차이를 볼 수 있습니다.", "移除模型:{name}": "모델 제거: {name}", "第一把启用的 Key": "첫 번째 활성 키", "第三方中转": "서드파티 중계", "编辑 MCP": "MCP 편집", "编辑 Skill": "Skill 편집", "编辑客户端配置": "클라이언트 설정 편집", "编辑配置": "설정 편집", "编辑配置方案": "설정 프로필 편집", "编辑:{name}": "편집: {name}", "网关目录共 {n} 个": "게이트웨이 카탈로그 {n}개", "网页版": "웹 버전", "自定义路径": "사용자 지정 경로", "行号由后端逐行比对给出": "줄 번호는 백엔드의 줄 단위 비교 결과입니다", "装好后回到这一页点「重新检测」,它会出现在上面的列表里。": "설치한 뒤 이 페이지로 돌아와 「다시 감지」를 누르면 위 목록에 나타납니다.", "视频输入": "동영상 입력", "解除接入本网关": "이 게이트웨이 연결 해제", "认证方式": "인증 방식", "设为默认": "기본으로 설정", "请先在「网关 Key」页创建并启用一把 Key": "먼저 게이트웨이 Key 페이지에서 Key를 생성하고 활성화하세요.", "请在 Zed 提供商设置中保存 API Key;本页不修改系统凭证存储。": "Zed의 제공자 설정에서 API 키를 저장하세요. 이 페이지는 시스템 자격 증명 저장소를 변경하지 않습니다.", "请填写 API Key": "API 키를 입력하세요", "请填写方案名称": "프로필 이름을 입력하세요", "请填写有效的 http 或 https 地址": "올바른 http 또는 https 주소를 입력하세요", "请填写有效的环境变量名": "올바른 환경 변수 이름을 입력하세요", "请填写配置名称": "설정 이름을 입력하세요", "请至少添加一个模型": "모델을 하나 이상 추가하세요", "请补全配置后使用": "설정을 완성한 후 사용하세요", "请输入密钥": "키를 입력하세요", "请选择": "선택하세요", "请选择模型": "모델을 선택하세요", "读取失败": "읽기 실패", "读取客户端配置失败:{reason}": "클라이언트 설정을 읽지 못했습니다: {reason}", "走网关": "게이트웨이 경유", "路径属于网关所在机器,不是浏览器所在设备。只改变检测目标,不修改客户端文件。": "경로는 브라우저 기기가 아닌 게이트웨이 컴퓨터의 경로입니다. 감지 대상만 변경하며 클라이언트 파일은 수정하지 않습니다.", "输出上限": "최대 출력", "返回编辑": "편집으로 돌아가기", "还原中…": "복원 중…", "还原失败:{reason}": "복원 실패: {reason}", "还没有配置": "설정이 아직 없습니다", "还没有配置。点「新建配置」建一套指向本机网关的,再写入客户端。": "설정이 아직 없습니다. 「새 설정」으로 로컬 게이트웨이를 가리키는 설정을 만든 뒤 클라이언트에 쓰세요.", "还没有预览。选一套配置后这里会显示写入客户端之后的样子。": "미리보기가 없습니다. 설정을 고르면 클라이언트에 쓴 뒤의 모습이 여기에 표시됩니다.", "这个客户端不从网关目录选模型,用右侧的「添加模型」逐个填写。": "이 클라이언트는 게이트웨이 카탈로그에서 모델을 선택하지 않습니다. 오른쪽에서 하나씩 추가하세요.", "这个客户端不支持所选协议": "이 클라이언트는 선택한 프로토콜을 지원하지 않습니다", "这个客户端不能接入本网关": "이 클라이언트는 이 게이트웨이에 연결할 수 없습니다", "这个客户端会自己重读配置,写入后开新会话即生效。": "이 클라이언트는 설정을 스스로 다시 읽습니다. 쓴 뒤 새 세션을 열면 적용됩니다.", "这个客户端只在启动时读配置:写入后重开一个会话才生效。": "이 클라이언트는 시작할 때만 설정을 읽습니다. 쓴 뒤 세션을 다시 열어야 적용됩니다.", "这个客户端的配置里没有读出地址(可能还没配过,或形状不认识)": "이 클라이언트 설정에서 주소를 읽지 못했습니다 (아직 설정하지 않았거나 형식을 알 수 없음)", "这个客户端自己支持多套配置并存": "이 클라이언트는 여러 설정을 함께 둘 수 있습니다", "这个客户端自己管理多套配置,可同时启用多条;切换只改 enabled 与默认项,不动它的模型清单。": "이 클라이언트는 여러 설정을 스스로 관리하며 여러 개를 동시에 켤 수 있습니다. 전환은 enabled 와 기본 항목만 바꾸고 모델 목록은 건드리지 않습니다.", "这个客户端还没有 MCP": "이 클라이언트에는 아직 MCP 서버가 없습니다", "这个客户端还没有 Skill": "이 클라이언트에는 아직 Skill이 없습니다", "这个客户端需要填写模型上下文窗口": "이 클라이언트는 모델의 컨텍스트 크기가 필요합니다", "这套配置是干什么用的(只显示在本页)": "이 설정의 용도 (이 페이지에만 표시)", "这是待应用状态;保存不会立即改变客户端开关。": "이는 적용 예정 상태입니다. 저장만으로 클라이언트 항목이 즉시 전환되지 않습니다.", "这里只调整此模型,不影响其它模型。": "여기서 변경한 내용은 이 모델에만 적용됩니다.", "这里只选择客户端实际支持的协议,不改变上游提供商协议。": "여기서는 클라이언트가 실제로 지원하는 프로토콜만 선택합니다. 업스트림 제공자 프로토콜은 변경되지 않습니다.", "连接方式": "연결 방식", "连接配置": "연결 설정", "选一个客户端开始": "클라이언트를 선택해 시작", "选择 MCP": "MCP 선택", "选择 Skill": "Skill 선택", "选择模型": "모델 선택", "选择网关 Key": "게이트웨이 Key 선택", "选择要接入的模型;确认前展示文件改动,写入前自动备份。": "연결할 모델을 선택하세요. 확인 전에 파일 변경을 표시하며 기록 전에 자동으로 백업합니다.", "选择配置目标": "설정 대상 선택", "通常以 /v1 结尾,不要附加具体请求路径。": "일반적으로 /v1로 끝납니다. 구체적인 요청 경로를 붙이지 마세요.", "部分已选模型已不可用或所选 Key 无权使用,请移除或更换 Key。": "일부 선택한 모델은 사용할 수 없거나 이 Key에 권한이 없습니다. 해당 모델을 제거하거나 다른 Key를 선택하세요.", "配置": "설정", "配置位置与说明": "설정 위치 및 설명", "配置列表": "설정 목록", "配置列表格式不匹配,请重启网关后刷新页面": "설정 목록 형식이 일치하지 않습니다. 게이트웨이를 다시 시작한 후 페이지를 새로 고치세요.", "配置可读写": "설정 읽기 및 쓰기 가능", "配置名称": "설정 이름", "配置差异": "설정 차이", "配置已保存,可在列表中点击使用": "설정이 저장되었습니다. 목록에서 선택하여 사용할 수 있습니다.", "配置已删除": "설정이 삭제되었습니다", "配置已删除,客户端文件已同步更新": "설정을 삭제하고 클라이언트 파일을 업데이트했습니다", "配置已应用并读回校验;请重开客户端或会话": "설정을 적용하고 다시 읽어 검증했습니다. 클라이언트 또는 세션을 다시 시작하세요", "配置已恢复并校验": "설정을 복원하고 검증했습니다", "配置操作": "설정 작업", "配置文件已写入并校验;尚未验证 DSH 是否加载,请在所选客户端新建会话确认。": "설정 파일을 기록하고 검증했습니다. DSH가 불러왔는지는 확인하지 않았습니다. 선택한 클라이언트에서 새 대화를 열어 확인하세요.", "配置来源": "설정 종류", "重新填入目录能力": "목록에서 기능 다시 입력", "重新检测": "다시 감지", "重新生成预览": "미리보기 다시 생성", "需要重新编辑:": "다시 편집 필요:", "需重开会话生效": "세션을 다시 열어야 적용됩니다", "预览并保存": "미리보기 및 저장", "预览草稿改动": "초안 변경 미리보기", "高": "높음", "高级选项": "고급 옵션", "默认模型": "기본 모델", "默认模型必须来自模型列表": "기본 모델은 모델 목록에 있어야 합니다", "默认模型思考等级": "기본 모델 추론 수준", "(本机网关 / 官方直连 / 第三方中转 / 本机服务),随时切换。单配置客户端切换 = 整段覆写并备份原文件;多配置客户端(如 ZCode)只改 enabled 与默认项,它自己的条目一律不动。": "(로컬 게이트웨이 / 공식 직결 / 서드파티 중계 / 로컬 서비스)를 언제든 전환할 수 있습니다. 단일 설정 클라이언트는 설정 전체를 덮어쓰고 원본 파일을 백업합니다. ZCode 같은 다중 설정 클라이언트는 enabled 와 기본 항목만 바꾸고 자체 항목은 건드리지 않습니다.", "API Key 无效或无权限": "API Key가 유효하지 않거나 권한이 없습니다", "API 接口文档": "API 문서", "DSH 使用 Agent 页当前选择的配置目标。写入后请在 DSH 中确认工具是否出现,必要时重启对应客户端。": "DSH는 Agent 페이지에서 선택한 설정 대상을 사용합니다. 기록 후 DSH에 도구가 나타나는지 확인하고 필요한 경우 해당 클라이언트를 다시 시작하세요.", "Key 明文只会写入所选客户端的本机配置文件。": "평문 Key는 선택한 클라이언트의 로컬 설정 파일에만 기록됩니다.", "MCP & Skills": "MCP & Skills", "MCP 接入信息": "MCP 연결 정보", "Node.js 无需额外依赖,推荐使用;Python 需要本机有 python。": "Node.js는 추가 의존성이 없어 권장됩니다. Python은 이 컴퓨터에 python이 필요합니다.", "{name} 接入客户端": "{name} 클라이언트 연결", "上游提供商": "업스트림 제공자", "上游提供商配置": "업스트림 제공자 설정", "上游提供商配置由各接入协议共享,改动后所有协议同时生效。": "업스트림 제공자 설정은 모든 접속 프로토콜이 공유하며, 변경 사항은 모든 프로토콜에 동시에 적용됩니다.", "上游没有返回结果": "업스트림이 결과를 반환하지 않았습니다", "上游请求超时": "업스트림 요청 시간이 초과되었습니다", "下载图片 {index}": "이미지 {index} 다운로드", "不指定": "지정 안 함", "中文": "중국어", "仅搜索": "검색 전용", "仅支持单选,默认为 Tavily。": "단일 선택만 지원하며 기본값은 Tavily입니다.", "仅显示已启用且至少有一个可用模型的提供商。": "활성화되어 있고 사용 가능한 모델이 하나 이상 있는 제공자만 표시됩니다.", "仅显示该提供商下已启用的模型。": "이 제공자에서 활성화된 모델만 표시됩니다.", "任务编号或原提交编号,至少提供一项": "작업 ID 또는 원래 제출 ID를 입력하세요", "作为远程 MCP 服务,在支持 MCP 的客户端配置里填写地址即可接入。": "원격 MCP 서비스로 제공되며, MCP 지원 클라이언트 설정에 주소를 입력하면 연결됩니다.", "使用已有账号生成或编辑图片,支持任务查询与本机文件保存。": "기존 계정으로 이미지를 생성·편집하고 작업을 조회하거나 로컬에 저장합니다.", "保存能力配置": "기능 설정 저장", "保留至 {time}": "{time}까지 보관", "共 {count} 项能力": "총 {count}개 기능", "内部请求本站网关时使用的网关 Key;额度、限流与请求日志记在该 Key 上。": "내부에서 이 게이트웨이를 호출할 때 사용하는 게이트웨이 Key입니다. 할당량, 속도 제한, 요청 로그가 이 Key에 기록됩니다.", "内部调用 API Key": "내부 호출 API Key", "写入失败": "쓰기 실패", "写入配置": "설정 쓰기", "单次图片上限": "요청당 이미지 상한", "卸载失败": "제거 실패", "参考图允许读取的目录": "참조 이미지 읽기 허용 폴더", "参考图链接或已生成图片 ID;本地桥接还可传文件路径": "참조 URL 또는 생성된 이미지 ID. 로컬 브리지는 파일 경로도 허용합니다", "取消全选": "모두 해제", "只保存新文件,不覆盖已有不同内容。目录权限写入客户端配置,更新配置时需要重新确认。": "새 파일만 저장하며 내용이 다른 기존 파일은 덮어쓰지 않습니다. 폴더 권한은 클라이언트 설정에 기록되며 업데이트 시 다시 확인해야 합니다.", "可选。留空时不传,由模型映射的「思考覆盖」决定。": "선택 사항입니다. 비워 두면 전송하지 않고 모델 매핑의 \"추론 재정의\"를 따릅니다.", "可选,每行一个已有绝对目录。输出目录默认允许读取;其他位置的文件不会读取或上传。": "선택 사항: 기존 폴더의 절대 경로를 한 줄에 하나씩 입력하세요. 출력 폴더는 기본으로 읽기를 허용하며 다른 위치의 파일은 읽거나 업로드하지 않습니다.", "启用 / 停用此服务": "이 서비스 활성화 / 비활성화", "图片分析": "이미지 분석", "图片占用 {used} MiB,生成中预留 {reserved} MiB。": "이미지 사용량 {used} MiB, 생성 중 예약 공간 {reserved} MiB.", "图片生成配置": "이미지 생성 설정", "图片生成配置已保存": "이미지 생성 설정을 저장했습니다", "图片输出目录": "이미지 출력 폴더", "在支持远程 MCP 的客户端中填写该地址,并使用网关 Key 作为 Bearer 令牌。": "원격 MCP를 지원하는 클라이언트에 이 주소를 입력하고 게이트웨이 Key를 Bearer 토큰으로 사용하세요.", "复制失败,请手动选择后复制": "복사 실패. 직접 선택하여 복사하세요", "复制文档": "문서 복사", "复用「账号」页的登录态,不需要额外填写搜索密钥。账号停用或删除后不会自动换号。": "'계정' 페이지의 로그인 상태를 사용하므로 검색용 키를 추가로 입력할 필요가 없습니다. 계정이 비활성화되거나 삭제되어도 자동으로 다른 계정으로 바뀌지 않습니다.", "复用已有账号生图,不改变 Agent 的对话模型。实际调用遵守接入 Key 的模型和提供商权限。": "기존 계정으로 이미지를 생성하며 Agent의 대화 모델은 바꾸지 않습니다. 호출은 연결 Key의 모델 및 제공자 권한을 따릅니다.", "存储上限(MiB)": "저장 상한(MiB)", "安装目标": "설치 대상", "完整的图片要求": "전체 이미지 요구 사항", "客户端环境": "클라이언트 환경", "客户端调用超时设为 120 秒;后台生成超时由服务配置控制,未完成时通过任务编号查询。": "클라이언트 호출 제한 시간은 120초입니다. 백그라운드 생성 제한 시간은 서비스 설정을 따르며 미완료 작업은 ID로 조회합니다.", "客户端配置示例": "클라이언트 설정 예시", "密钥已清除": "키가 삭제되었습니다", "密钥或账号登录态无效": "API 키 또는 계정 로그인 상태가 유효하지 않습니다", "密钥提示": "키 힌트", "将按服务的工具执行超时({seconds} 秒)同步写入客户端配置。": "서비스의 도구 실행 타임아웃({seconds}초)이 클라이언트 설정에 기록됩니다.", "将搜索、视觉等能力通过 MCP 或 Skills 接入客户端。": "MCP 또는 Skills를 통해 검색, 비전 등의 기능을 클라이언트에 연결합니다.", "尚未配置图片生成,请先选择可用的生图模型并保存。": "이미지 생성이 설정되지 않았습니다. 사용 가능한 이미지 모델을 선택하고 저장하세요.", "尚未配置视觉模型,配置前调用方会收到“未配置”错误。": "비전 모델이 아직 설정되지 않았습니다. 설정 전에는 호출자에게 \"미설정\" 오류가 반환됩니다.", "工具执行超时": "도구 실행 타임아웃", "工具执行超时已保存": "도구 실행 타임아웃이 저장되었습니다", "工具服务": "도구 서비스", "已写入 {count} 个客户端配置": "{count}개 클라이언트 설정에 기록했습니다", "已处理 {count} 个目标": "{count}개 대상 처리 완료", "已复制": "복사됨", "已失效": "유효하지 않음", "已安装到 {count} 个客户端": "{count}개 클라이언트에 설치했습니다", "已完成": "완료", "已完成 {count} 个目标": "{count}개 대상 완료", "已接入 {count} 个目标": "{count}개 대상 연결됨", "已有账号": "기존 계정", "已有账号搜索只支持搜索,不支持网页抓取;请求会使用绑定账号的额度与出网设置。": "기존 계정 소스는 검색만 지원하며 페이지 가져오기는 지원하지 않습니다. 요청에는 연결된 계정의 할당량과 외부 연결 설정이 사용됩니다.", "已检查保存的配置,未发起生图;账号实际额度与上游可用性以调用结果为准。": "저장된 설정을 확인했으며 이미지는 생성하지 않았습니다. 실제 계정 할당량과 업스트림 가용성은 호출 결과로 확인됩니다.", "已绑定的搜索账号不存在,请重新选择": "연결된 검색 계정이 존재하지 않습니다. 다시 선택하세요", "已绑定的搜索账号已停用": "연결된 검색 계정이 비활성화되었습니다", "已绑定账号不可用,请重新选择": "연결된 계정을 사용할 수 없습니다. 다시 선택하세요", "已过期或清理": "만료 또는 정리됨", "已选择 {count} / {total} 个": "{count} / {total}개 선택됨", "已配置的 API Key 已失效(被删除或禁用),请重新选择并保存。": "설정된 API Key가 유효하지 않습니다(삭제 또는 비활성화). 다시 선택하고 저장하세요.", "当前提供商插件不支持账号搜索,请更新插件": "현재 제공자 플러그인은 계정 기반 검색을 지원하지 않습니다. 플러그인을 업데이트하세요", "当前模型:{provider} / {model}": "현재 모델: {provider} / {model}", "当前没有可用的安装目标": "사용 가능한 설치 대상이 없습니다", "当前没有已安装/已配置的目标": "설치되었거나 설정된 대상이 없습니다", "当前网关 Key 无权使用所选账号搜索来源": "이 게이트웨이 Key에는 선택한 계정 기반 검색 소스를 사용할 권한이 없습니다", "打包为 Agent Skill,由 Agent2API 面板安装到本机客户端目录。": "Agent Skill로 패키징되어 Agent2API 패널에서 로컬 클라이언트 디렉터리에 설치됩니다.", "批量抓取 1~10 个 URL,使用后台选中的单个抓取提供商。": "서버에서 선택한 단일 가져오기 제공자로 URL 1~10개를 일괄 가져옵니다.", "批量搜索 1~10 条查询,并发调用后台选中的提供商后合并重复来源。": "서버에서 선택한 제공자로 쿼리 1~10개를 병렬 검색하고 중복 출처를 병합합니다.", "批量网页抓取": "일괄 페이지 가져오기", "批量网页抓取提供商": "일괄 페이지 가져오기 제공자", "批量网页搜索": "일괄 웹 검색", "批量网页搜索不可用:所选提供商均未启用或未配置密钥。": "일괄 웹 검색을 사용할 수 없습니다: 선택한 제공자 중 활성화되고 키가 설정된 제공자가 없습니다.", "批量网页搜索不可用:请启用来源并配置密钥或绑定可用账号。": "일괄 웹 검색을 사용할 수 없습니다. 소스를 활성화하고 API 키를 설정하거나 사용 가능한 계정을 연결하세요.", "批量网页搜索可用:将使用 {ready},未配置的 {missing} 会自动跳过。": "일괄 웹 검색을 사용할 수 있습니다: {ready} 사용, 설정되지 않은 {missing}은(는) 자동으로 건너뜁니다.", "批量网页搜索可用:所选提供商均已启用并配置密钥。": "일괄 웹 검색을 사용할 수 있습니다. 선택한 제공자가 모두 활성화되고 키가 설정되었습니다.", "批量网页搜索可用:所选来源均已启用并配置完成。": "일괄 웹 검색을 사용할 수 있습니다. 선택한 소스가 모두 활성화되고 설정되었습니다.", "批量网页搜索提供商": "일괄 웹 검색 제공자", "批量网页搜索至少选择一个提供商": "일괄 웹 검색에는 제공자를 하나 이상 선택하세요", "把 1~10 张图片与提示词交给后台配置的视觉模型,返回模型回复文本。": "이미지 1~10장과 프롬프트를 서버에 설정된 비전 모델에 전달하고 모델 응답 텍스트를 반환합니다.", "把下面这段合并到客户端配置的 mcpServers 里,并把 Key 换成你自己的。": "아래 스니펫을 클라이언트 설정의 mcpServers에 병합하고 Key를 본인의 것으로 바꾸세요.", "把图片与提示词交给后台配置的视觉模型分析,并把模型回复返回给调用方的大模型。": "이미지와 프롬프트를 서버에 설정된 비전 모델에 전달해 분석하고, 모델 응답을 호출한 모델에 반환합니다.", "抓取:{name}": "가져오기: {name}", "按参考图修改,仅在配置了可用编辑模型时提供。": "참조 이미지를 편집하며 사용 가능한 편집 모델이 설정된 경우에만 제공됩니다.", "按描述使用已配置的模型生图,默认一张,会消耗账号额度。": "설정된 모델로 설명에 따라 이미지를 생성합니다. 기본 한 장이며 계정 크레딧을 소모합니다.", "接入协议": "접속 프로토콜", "接入方式": "연결 방식", "提供 REST API,任何能发 HTTP 请求的程序都可以携带网关 Key 直接调用。": "REST API를 제공합니다. HTTP 요청을 보낼 수 있는 프로그램이면 게이트웨이 Key를 붙여 바로 호출할 수 있습니다.", "提供商尚未配置密钥": "제공자에 API 키가 설정되지 않았습니다", "提供商尚未配置有效密钥": "제공자에 유효한 API 키가 설정되지 않았습니다", "提供商插件暂不可用": "제공자 플러그인을 일시적으로 사용할 수 없습니다", "提供商插件未安装或未启用": "제공자 플러그인이 설치되지 않았거나 비활성화되어 있습니다", "提供商暂不可用或配置有误": "제공자를 일시적으로 사용할 수 없거나 설정이 잘못되었습니다", "提供商选择": "제공자 선택", "提示词,描述要让模型在图片中查看的内容": "모델이 이미지에서 확인해야 할 내용을 설명하는 프롬프트", "插件搜索能力声明不完整,请更新插件": "플러그인의 검색 기능 정보가 불완전합니다. 플러그인을 업데이트하세요", "插件返回的搜索来源格式不正确": "플러그인이 반환한 검색 소스 형식이 올바르지 않습니다", "搜索、视觉与生图共用网关配置。本机客户端的 MCP 安装在桌面端完成。": "검색, 비전, 이미지 생성은 게이트웨이 설정을 사용합니다. 로컬 클라이언트의 MCP 설치는 데스크톱에서 완료합니다.", "搜索参数不符合该来源的要求": "검색 매개변수가 이 소스의 요구 사항에 맞지 않습니다", "搜索提供商没有返回来源": "검색 제공자가 출처를 반환하지 않았습니다", "搜索服务拒绝了该账号,请检查账号权限": "검색 서비스가 이 계정을 거부했습니다. 계정 권한을 확인하세요", "搜索来源配置不完整": "검색 소스 설정이 완료되지 않았습니다", "搜索请求超时": "검색 요청 시간이 초과되었습니다", "搜索账号不属于该提供商,请重新选择": "검색 계정이 다른 제공자에 속해 있습니다. 다시 선택하세요", "搜索账号登录态已失效,请重新登录": "검색 계정의 로그인이 만료되었습니다. 다시 로그인하세요", "搜索额度已用完或触发限流": "검색 할당량을 모두 사용했거나 속도 제한에 도달했습니다", "支持多选。每次搜索会并发调用所选提供商并合并重复来源。": "다중 선택을 지원합니다. 검색할 때마다 선택한 제공자를 병렬로 호출하고 중복 출처를 병합합니다.", "无法确认插件搜索能力,请更新或重启提供商插件": "검색 지원 여부를 확인할 수 없습니다. 제공자 플러그인을 업데이트하거나 다시 시작하세요", "暂无生图记录,连接 MCP 后即可让 Agent 生成图片。": "이미지 생성 기록이 없습니다. MCP를 연결하면 Agent로 이미지를 생성할 수 있습니다.", "暴露的工具": "노출된 도구", "更新时间": "업데이트 시간", "最大生成并发": "최대 동시 생성 수", "最近生成记录": "최근 생성 기록", "服务与协议": "서비스 및 프로토콜", "服务入口": "서비스 엔드포인트", "服务名称": "서비스 이름", "服务地址": "서비스 주소", "服务状态已更新": "서비스 상태가 업데이트되었습니다", "服务端强制单次工具执行的超时上限(同一服务的 Skill / MCP / API 共用)。安装 MCP 时会按此值写入客户端配置;修改后需在客户端重新「更新」配置并重进会话才会生效。": "서버가 강제하는 단일 도구 실행 타임아웃 상한입니다(같은 서비스의 Skill / MCP / API가 공유). MCP 설치 시 이 값이 클라이언트 설정에 기록됩니다. 변경 후에는 클라이언트에서 \"업데이트\"를 다시 실행하고 세션에 다시 들어가야 적용됩니다.", "服务端强制单次工具执行的超时上限(同一服务的 Skill / MCP 共用)。安装 MCP 时会按此值写入客户端配置;修改后需在客户端重新「更新」配置并重进会话才会生效。": "서버가 강제하는 단일 도구 실행 타임아웃 상한(같은 서비스의 Skill / MCP가 공유). MCP를 설치할 때 이 값을 클라이언트 설정에 기록합니다. 변경 후에는 클라이언트에서 '업데이트'를 다시 실행하고 세션을 다시 열어야 적용됩니다.", "服务能力": "서비스 기능", "服务配置": "서비스 설정", "未选择账号": "선택한 계정 없음", "本地桥接": "로컬 브리지", "本地桥接会在本机运行一个 node 脚本,支持直接传本地图片路径,推荐在桌面端使用。": "로컬 브리지는 이 컴퓨터에서 Node 스크립트를 실행하며 로컬 이미지 경로를 그대로 전달할 수 있습니다. 데스크톱에서 사용을 권장합니다.", "本地桥接需要 Node.js 18 或更新版本,自动读取授权目录的参考图并保存生成结果;HTTP 接入只返回下载地址。": "로컬 브리지는 Node.js 18 이상이 필요합니다. 허용된 폴더의 참조 이미지를 읽고 생성 결과를 저장합니다. HTTP 연결은 다운로드 URL만 반환합니다.", "本机接入": "로컬 연결", "本次提交的唯一编号,断线重试使用原编号": "고유 제출 ID. 연결이 끊긴 후 재시도할 때 같은 ID를 사용하세요", "查询原任务并取回图片,不再次生图或扣费。": "원래 작업을 조회해 이미지를 가져오며 다시 생성하거나 과금하지 않습니다.", "查询生成结果": "생성 결과 조회", "检查配置": "설정 확인", "正在加载安装目标…": "설치 대상을 불러오는 중…", "正在加载工具服务…": "도구 서비스를 불러오는 중…", "正在加载工具服务配置…": "도구 서비스 설정을 불러오는 중…", "每条搜索词最多 {count} 字": "검색어당 최대 {count}자", "没有匹配的工具服务": "일치하는 도구 서비스가 없습니다", "没有可用的工具服务": "사용 가능한 도구 서비스가 없습니다", "没有可用的生图模型,请先添加账号、启用对应插件并更新模型目录。": "사용 가능한 이미지 모델이 없습니다. 계정을 추가하고 해당 플러그인을 활성화한 뒤 모델 목록을 업데이트하세요.", "没有可用的网关 Key": "사용 가능한 게이트웨이 Key가 없습니다", "没有可绑定的启用账号,请先到「账号」页添加或启用。": "연결할 수 있는 활성 계정이 없습니다. 먼저 '계정' 페이지에서 추가하거나 활성화하세요.", "没有可配置的提供商": "설정할 제공자가 없습니다", "清理这次生成的临时图片?已保存到本机的文件不会被删除,原提交编号也不会重新生图。": "이 작업의 임시 이미지를 정리할까요? 로컬에 저장한 파일은 삭제되지 않으며 원래 제출 ID로 다시 생성하지 않습니다.", "清除密钥": "키 삭제", "清除配置": "설정 삭제", "点击「复制文档」可复制整份 Markdown 文档,直接发给对接方即可。": "\"문서 복사\"를 누르면 Markdown 전체를 복사해 연동 담당자에게 바로 보낼 수 있습니다.", "生图模型": "이미지 생성 모델", "生图账号": "이미지 생성 계정", "生成中": "생성 중", "生成较慢时先返回任务编号。断线后查询原任务,不自动重画;超时不代表没有扣费。": "생성이 느리면 먼저 작업 ID를 반환합니다. 재연결 후 원래 작업을 조회하며 자동으로 다시 생성하지 않습니다. 시간 초과가 미과금을 의미하지는 않습니다.", "确定清除提供商 {name} 的 API Key?清除后该提供商将不可用,直到重新保存新密钥。": "{name}의 API Key를 삭제할까요? 새 키를 저장할 때까지 이 제공자를 사용할 수 없습니다.", "移除 {name} 配置": "{name} 설정 제거", "空白的 API Key 不会覆盖已保存的密钥。": "빈 API Key는 저장된 키를 덮어쓰지 않습니다.", "管理可供客户端安装和运行的工具服务,并配置上游提供商与能力。": "클라이언트가 설치하고 실행할 수 있는 도구 서비스를 관리하고 업스트림 제공자와 기능을 설정합니다.", "结果不确定": "결과 불확실", "结果保留(小时)": "결과 보관 시간", "编辑 {name}": "{name} 편집", "编辑可使用不同模型;未配置可用编辑模型时,不向 Agent 提供编辑工具。": "편집은 다른 모델을 사용할 수 있습니다. 사용 가능한 편집 모델이 없으면 Agent에 편집 도구를 제공하지 않습니다.", "编辑提供商 {name}": "제공자 {name} 편집", "编辑模型": "편집 모델", "网络搜索": "웹 검색", "网络搜索与视觉分析:网关侧配置,改完立即生效。本机客户端的安装在桌面端完成。": "웹 검색과 비전 분석은 게이트웨이 측 설정이며 변경 즉시 적용됩니다. 로컬 클라이언트 설치는 데스크톱에서 수행합니다.", "聚合 Tavily、Querit、Firecrawl、Ollama Web Search,提供批量网页搜索与网页抓取能力。": "Tavily, Querit, Firecrawl, Ollama Web Search를 통합해 일괄 웹 검색과 페이지 가져오기를 제공합니다.", "聚合标准搜索服务及已有 WorkBuddy、Kiro 账号的搜索能力;网页抓取仍使用标准服务。": "표준 검색 서비스와 기존 WorkBuddy 및 Kiro 계정의 검색 기능을 통합합니다. 페이지 가져오기는 계속 표준 서비스를 사용합니다.", "能力提供商配置已保存": "기능 제공자 설정이 저장되었습니다", "能力数量": "기능 수", "自动选择仅在所选提供商内遵守现有路由;固定账号仍受停用、冷却与额度限制,不会自动换号。": "자동 선택은 선택한 제공자 안에서 기존 라우팅을 따릅니다. 고정 계정도 비활성화, 쿨다운, 할당량 제한을 따르며 자동으로 다른 계정으로 바꾸지 않습니다.", "自动选择账号": "계정 자동 선택", "至少选择一个搜索提供商": "검색 제공자를 하나 이상 선택하세요", "获取 API Key": "API Key 받기", "要分析的图片(1~10 张),每张为 http(s) URL 或图片 data URI": "분석할 이미지(1~10장). 각 항목은 http(s) URL 또는 이미지 data URI", "要抓取并提取正文的网页 URL(1~10 个)": "가져와 본문을 추출할 페이지 URL(1~10개)", "要搜索的查询,每条并发执行(1~10 条)": "검색할 쿼리. 각 쿼리는 병렬로 실행됩니다(1~10개)", "视觉分析": "비전 분석", "视觉服务配置已保存": "비전 서비스 설정이 저장되었습니다", "视觉服务配置已清除": "비전 서비스 설정이 삭제되었습니다", "视觉模型配置": "비전 모델 설정", "视觉链路测试失败": "비전 파이프라인 테스트 실패", "视觉链路连通:耗时 {duration}ms": "비전 파이프라인 연결됨: {duration}ms", "触发上游限流": "업스트림 속도 제한에 걸렸습니다", "该协议已停用,已接入的客户端会收到服务停用错误。": "이 프로토콜이 비활성화되어 연결된 클라이언트에는 서비스 비활성화 오류가 반환됩니다.", "该协议通过 Agent2API 面板安装到本机客户端目录。": "이 프로토콜은 Agent2API 패널에서 로컬 클라이언트 디렉터리에 설치됩니다.", "该提供商不支持网页抓取": "이 제공자는 페이지 가져오기를 지원하지 않습니다", "该搜索来源使用 API Key,不接受账号绑定": "이 검색 소스는 API Key를 사용하므로 계정을 연결할 수 없습니다", "该搜索来源使用已有账号,不接受 API Key": "이 검색 소스는 기존 계정을 사용하므로 API Key를 받지 않습니다", "请先选择 API Key": "먼저 API Key를 선택하세요", "请先选择提供商": "먼저 제공자를 선택하세요", "请先选择搜索使用的账号": "먼저 검색에 사용할 계정을 선택하세요", "请求参数无效": "요청 매개변수가 유효하지 않습니다", "请至少选择一个目标": "대상을 하나 이상 선택하세요", "请选择 API Key": "API Key를 선택하세요", "请选择内部调用 API Key": "내부 호출 API Key를 선택하세요", "请选择图片输出目录": "이미지 출력 폴더를 선택하세요", "请选择提供商与上游模型": "제공자와 업스트림 모델을 선택하세요", "调用用的 API Key": "호출용 API Key", "账号搜索暂不可用,请检查账号及插件状态": "계정 기반 검색을 일시적으로 사용할 수 없습니다. 계정과 플러그인 상태를 확인하세요", "账号搜索配置不完整,请重新选择账号或更新插件": "계정 기반 검색 설정이 완료되지 않았습니다. 계정을 다시 선택하거나 플러그인을 업데이트하세요", "超时 {seconds}s": "타임아웃 {seconds}s", "输入新密钥;留空保持不变": "새 키를 입력하세요. 비워 두면 변경되지 않습니다", "运行时": "런타임", "还没有可用的提供商,请先在「账号」页添加账号并在「模型管理」页确认有已启用的模型。": "사용 가능한 제공자가 없습니다. 먼저 \"계정\" 페이지에서 계정을 추가하고 \"모델 관리\" 페이지에서 활성화된 모델이 있는지 확인하세요.", "还没有可用的提供商,请先在桌面端添加账号并确认有已启用的模型。": "사용 가능한 제공자가 없습니다. 데스크톱에서 계정을 추가하고 활성화된 모델이 있는지 확인하세요.", "这是后台生成任务的时间上限。单次 MCP 调用最多等待 20 秒,未完成时返回任务编号;查询不会重新生图。": "백그라운드 생성 작업의 제한 시간입니다. MCP 호출은 최대 20초 대기하며 미완료 시 작업 ID를 반환합니다. 조회로 다시 생성하지 않습니다.", "这里管理的是「客户端能用什么」:服务是否对外提供、上游提供商与密钥、视觉分析用哪个模型。": "이 페이지에서는 클라이언트가 무엇을 사용할 수 있는지 관리합니다. 서비스 공개 여부, 업스트림 제공자와 키, 비전 분석에 사용할 모델입니다.", "远程 HTTP": "원격 HTTP", "远程 HTTP 只接受图片 URL 或 data URI,不需要本机安装 node。": "원격 HTTP는 이미지 URL 또는 data URI만 허용하며 이 컴퓨터에 Node.js가 필요하지 않습니다.", "连接成功:{count} 条结果,耗时 {duration}ms": "연결 성공: {count}건, {duration}ms", "连接测试失败": "연결 테스트 실패", "选择处理图片的上游提供商与模型。调用时会用内部 Key 经本站网关请求该模型,协议转换、重试与故障转移全部复用网关。": "이미지를 처리할 업스트림 제공자와 모델을 선택하세요. 호출 시 내부 Key로 이 게이트웨이를 거쳐 모델에 요청하며, 프로토콜 변환·재시도·장애 전환은 모두 게이트웨이를 재사용합니다.", "选择安装目标、运行时与调用用的 API Key。Skill 包与密钥只写入所选客户端的本机目录。": "설치 대상, 런타임, 호출용 API Key를 선택하세요. Skill 패키지와 키는 선택한 클라이언트의 로컬 디렉터리에만 기록됩니다.", "选择已有目录,图片只会写入此目录及其子目录": "기존 폴더를 선택하세요. 이미지가 이 폴더와 하위 폴더에만 저장됩니다", "选择目录": "폴더 선택", "选择要从中移除的客户端,未勾选的客户端保持不变。": "제거할 클라이언트를 선택하세요. 선택하지 않은 클라이언트는 변경되지 않습니다.", "选择要写入 MCP 配置的客户端。配置只动本服务那一项,客户端原有的其它 MCP 服务保持不变。": "MCP 설정을 기록할 클라이언트를 선택하세요. 이 서비스 항목만 변경되며 기존 다른 MCP 서버는 그대로 유지됩니다.", "配置搜索与抓取所使用的上游提供商。调用方不再传递 provider,运行时始终使用这里保存的设置。": "검색과 가져오기에 사용할 업스트림 제공자를 설정하세요. 호출자는 더 이상 provider를 전달하지 않으며, 실행 시 항상 여기 저장된 설정을 사용합니다.", "默认只生成一张。空间不足时先拒绝请求,不消耗生图额度;只清理过期结果,已保存到本机目录的文件不受影响。": "기본 한 장을 생성합니다. 공간이 부족하면 크레딧 소모 전에 요청을 거부합니다. 만료된 결과만 정리하며 로컬에 저장한 파일은 영향을 받지 않습니다.", " 到 {file}": " → {file}", " 正文已改:{edited}(其余段用官方原文)。": " 본문 수정됨: {edited}(나머지 단락은 공식 원문 사용).", "(无 id)": "(id 없음)", "/v1 拒绝无 Key 请求": "/v1은 키 없는 요청 거부", "0 B": "0 B", "100%(默认)": "100%(기본값)", "<本机IP>": "<로컬 IP>", "ALTCHA(本地验证)": "ALTCHA(로컬 인증)", "Access Key ID": "Access Key ID", "Agent2API 手机端": "Agent2API 모바일", "Android 应用(APK)": "Android 앱(APK)", "Cline 上游按请求头判定「调用方是不是 Cline 自家产品」:X-CLIENT-TYPE: cline-sdk 是硬门槛(缺了它免费池模型一律 403),版本号与平台标识让请求更贴近官方客户端的形态。这里列出的是网关默认会发的头:改某一行的值 = 覆盖默认值(也可以新增默认清单之外的自定义头);把值清空保存 = 这个头不发送;在界面删掉被改过的行 = 回落默认值。改完点「保存」,下一个 Cline 请求立即生效。不懂某一行的含义就不要动它 —— 伪装头的价值在「与官方客户端逐字一致」。": "Cline 업스트림은 요청 헤더로 「호출자가 Cline 자사 제품인지」를 판별합니다. X-CLIENT-TYPE: cline-sdk는 필수 조건이며(이게 없으면 무료 풀 모델은 모두 403), 버전 번호와 플랫폼 식별자는 요청을 공식 클라이언트의 형태에 더 가깝게 만듭니다. 여기에 나열된 것은 게이트웨이가 기본으로 보내는 헤더입니다. 특정 행의 값을 바꾸면 기본값을 덮어쓰고(기본 목록에 없는 사용자 지정 헤더도 추가할 수 있습니다), 값을 비워 저장하면 그 헤더를 보내지 않으며, 화면에서 수정된 행을 삭제하면 기본값으로 돌아갑니다. 수정 후 「저장」을 누르면 다음 Cline 요청부터 즉시 적용됩니다. 의미를 모르는 행은 건드리지 마세요. 위장 헤더의 가치는 「공식 클라이언트와 글자 하나까지 동일」한 데 있습니다.", "Cline 伪装头": "Cline 위장 헤더", "Cline 伪装头已刷新": "Cline 위장 헤더를 새로 고쳤습니다", "Docker 容器": "Docker 컨테이너", "Endpoint": "Endpoint", "Endpoint 填 https://<账户ID>.r2.cloudflarestorage.com,Region 固定填 auto。": "Endpoint에 https://<계정 ID>.r2.cloudflarestorage.com 을, Region에는 auto를 입력하세요.", "Endpoint 填 https://cos.ap-guangzhou.myqcloud.com,Region 填 ap-guangzhou(按实际地域改)。": "Endpoint에 https://cos.ap-guangzhou.myqcloud.com 을, Region에는 ap-guangzhou를 입력하세요(실제 리전에 맞게 변경).", "Endpoint 填 https://obs.cn-north-4.myhuaweicloud.com,Region 填 cn-north-4(按实际地域改)。": "Endpoint에 https://obs.cn-north-4.myhuaweicloud.com 을, Region에는 cn-north-4를 입력하세요(실제 리전에 맞게 변경).", "Endpoint 填 https://oss-cn-hangzhou.aliyuncs.com,Region 填 cn-hangzhou(按实际地域改)。": "Endpoint에 https://oss-cn-hangzhou.aliyuncs.com 을, Region에는 cn-hangzhou를 입력하세요(실제 리전에 맞게 변경).", "Endpoint 形如 http://192.168.1.10:9000(自建通常用 http);Region 一般填 us-east-1。": "Endpoint는 http://192.168.1.10:9000 형식이며(자체 호스팅은 보통 http), Region은 일반적으로 us-east-1입니다.", "Endpoint 留空即走 AWS 官方地址;Region 必须与桶所在区域一致。": "Endpoint를 비워 두면 AWS 공식 주소를 사용합니다. Region은 버킷의 리전과 일치해야 합니다.", "KB": "KB", "Linux 安装包(deb)": "Linux 패키지(deb)", "Logo 不能超过 2 MiB": "로고는 2 MiB를 초과할 수 없습니다", "Logo 仅支持 PNG、JPG、WebP 图片": "로고는 PNG, JPG, WebP 이미지만 지원합니다", "Nextcloud": "Nextcloud", "OpenAI 新版 API 用 developer 角色取代 system 承载指令,新版 OpenAI SDK 与部分客户端发的对话里会出现 role 为 developer 的消息;不少 OpenAI 兼容上游(尤其是自定义提供商的透传路径)不认识这个角色,收到就报 400。开启本项后,网关在每次转发前把 developer 角色的消息改写为 system —— 两类角色在 OpenAI 语义上等价(OpenAI 自己的迁移指南也是这么映射的),改写不影响对话内容与语义;对本来就只认 system 的各家内置上游同样无害。默认开启;关掉后 developer 消息会原样发往上游,不认识它的上游会报「角色不存在」一类的错误。": "새 버전 OpenAI API는 system 대신 developer 역할로 지시를 전달하므로, 최신 OpenAI SDK와 일부 클라이언트가 보내는 대화에 role이 developer인 메시지가 포함됩니다. 많은 OpenAI 호환 업스트림(특히 커스텀 제공자의 투과 경로)은 이 역할을 인식하지 못해 받자마자 400을 반환합니다. 이 항목을 켜면 게이트웨이가 매 전달 전에 developer 역할 메시지를 system으로 수정합니다 — 두 역할은 OpenAI 의미론에서 동등하고(OpenAI 자체 마이그레이션 가이드도 같은 매핑을 사용), 수정은 대화 내용과 의미에 영향을 주지 않으며, 애초에 system만 받는 내장 업스트림에도 무해합니다. 기본값은 켜짐. 끄면 developer 메시지가 그대로 업스트림으로 전송되며, 이 역할을 모르는 업스트림은 \"역할이 존재하지 않는다\"류의 오류를 반환합니다.", "QQ 群 · Telegram": "QQ 그룹 · Telegram", "S3 兼容存储": "S3 호환 스토리지", "Safari 没有安装按钮:点底部的「分享」,选「添加到主屏幕」,再点「添加」。": "Safari에는 설치 버튼이 없습니다. 하단의 「공유」 → 「홈 화면에 추가」 → 「추가」 순서로 누르세요.", "Secret Access Key": "Secret Access Key", "Token 读数量级": "Token 수치 표기", "UTF-8 文本文件路径,留空用内置默认提示词(通用编码助手提示词,不含任何会被上游拦截的模板句)。只在「替换 / 追加」模式下生效,透传模式不读它。": "UTF-8 텍스트 파일 경로입니다. 비워 두면 내장 기본 시스템 프롬프트를 사용합니다(범용 코딩 어시스턴트 프롬프트로, 업스트림에 차단될 만한 템플릿 문구가 없습니다). 「교체 / 추가」 모드에서만 적용되며, 패스스루 모드에서는 읽지 않습니다.", "WebView / 浏览器内核": "WebView / 브라우저 엔진", "Windows 安装包(NSIS)": "Windows 설치 프로그램(NSIS)", "Windows 服务": "Windows 서비스", "ZCode 套餐池(Start Plan)通道每条请求都要消耗一个当次铸造的人机验证令牌(一次性,2 分钟过期),库存低于该值时界面自动补铸到它。默认 3 个。调大能吸收突发并发,但用不掉的令牌 2 分钟就过期作废,烧的是上游风控配额。可填 1–10。": "ZCode 플랜 풀 (Start Plan) 채널의 각 요청은 그때그때 생성된 캡차 토큰(1회용, 2분 후 만료)을 하나 소비하며, 재고가 이 값 아래로 내려가면 UI가 이 값까지 자동으로 보충합니다. 기본값 3. 크게 잡으면 갑작스러운 동시 요청을 흡수하지만, 쓰지 못한 토큰은 2분 만에 만료되어 상류의 리스크 관리 쿼터를 태웁니다. 1–10을 입력할 수 있습니다.", "ZCode「套餐池(Start Plan)」通道的每条推理请求都要附一个当次铸造的阿里云无痕验证令牌(一次性、约 2 分钟过期):令牌由界面里的铸造守卫静默铸好、推给网关入池,转发时逐条取用。这里的三个值管的是补货节奏:①「库存目标」= 库存低于它守卫才补铸、补到它为止,默认 3 个;②「轮询间隔」= 守卫多久看一次库存,默认 2500 毫秒,只影响反应速度(库存够用时不会多铸);③「单轮铸造上限」= 发现缺货时一轮最多铸几个,默认 1 个(连铸之间固定隔 500 毫秒)。请求密集、请求日志里连续出现「需要人机验证令牌」的 503 时,把目标与单轮上限适当调大、轮询调快,能让池子跟得上消耗 —— 代价是上游(阿里云)对铸造频率有风控,铸得越多越快越容易触发限流,且用不掉的令牌 2 分钟即过期作废、等于白烧配额,所以建议小步调。保存后对下一轮补货立即生效,不用重启。": "ZCode \"플랜 풀 (Start Plan)\" 채널의 모든 추론 요청에는 그때그때 생성된 Aliyun 인비저블 캡차 토큰(1회용, 약 2분 후 만료)을 붙여야 합니다: 토큰은 UI 안의 민트 가드가 조용히 생성해 게이트웨이 풀에 밀어넣고, 포워딩은 요청마다 하나씩 꺼내 씁니다. 여기의 세 값은 보충 리듬을 관리합니다: ① \"재고 목표\" = 재고가 이 값 아래로 내려갈 때만 이 값까지 보충(기본 3); ② \"폴링 간격\" = 가드가 재고를 확인하는 주기, 기본 2500ms(반응 속도에만 영향 — 재고가 충분하면 굳이 더 만들지 않음); ③ \"1회 생성 한도\" = 재고 부족 발견 시 한 라운드에 최대 몇 개까지 만들지, 기본 1(연속 생성 사이는 고정 500ms). 요청이 많고 요청 로그에 \"캡차 토큰 필요\" 503이 계속 나온다면 목표와 1회 한도를 적당히 올리고 폴링을 빠르게 하면 풀이 소비를 따라갑니다 — 대가로 상류(Aliyun)는 생성 빈도에 리스크 관리를 두어 많이 빠르게 만들수록 제한에 걸리기 쉽고, 쓰지 못한 토큰은 어차피 2분 만에 만료되어 쿼터를 낭비하므로 조금씩 조정을 권장합니다. 저장하면 다음 보충 라운드부터 즉시 적용되며 재시작이 필요 없습니다.", "beta 版": "beta 버전", "iOS 应用": "iOS 앱", "models.dev 元数据": "models.dev 메타데이터", "models.dev 元数据已更新({count} 条)": "models.dev 메타데이터를 갱신했습니다({count}건)", "models.dev 是一个开源的模型资料库(社区维护),这里用它补齐「上游没告诉我们」的模型能力:上下文窗口、最大输出、工具调用、图片、视频、是否支持思考,以及这个模型认识哪些思考档位。优先级是:你在「模型能力」里手工改的值 > 上游清单自己声明的值 > models.dev 的值 —— 它只填上游没声明的空位,从不推翻上游已声明的。网关随包内嵌了一份快照,所以离线、首次启动、访问不通时也有数据;开启时会按「模型目录刷新」任务的间隔联网更新(同一轮里一并刷新,也可在这里立即刷新)。关闭只停联网刷新,已经拿到的数据继续用。": "models.dev는 커뮤니티가 유지하는 오픈소스 모델 데이터베이스입니다. 업스트림이 알려주지 않은 정보(컨텍스트 창, 최대 출력, 도구 호출, 이미지, 동영상, 추론 지원 여부, 그리고 이 모델이 실제로 받는 추론 레벨)를 여기서 채웁니다. 우선순위는 「모델 능력」에서 직접 수정한 값 > 업스트림 카탈로그의 선언값 > models.dev 값이며, 업스트림이 선언한 값을 뒤집지 않고 빈 자리만 채웁니다. 스냅샷이 앱에 내장되어 있어 오프라인·최초 실행·통신 불가 상황에서도 데이터가 있습니다. 켜져 있으면 「모델 카탈로그 새로고침」 주기에 맞춰 온라인으로 갱신합니다(같은 회차에 함께, 또는 여기서 즉시). 끄면 온라인 갱신만 멈추고 이미 받은 데이터는 계속 사용됩니다.", "models.dev 模型元数据": "models.dev 모델 메타데이터", "systemd 服务": "systemd 서비스", "{count} 条": "{count}건", "{count} 条 · 来自{origin}{at} · {mode}": "{count}건 · 출처: {origin}{at} · {mode}", "{count} 条规则,按列表顺序执行": "규칙 {count}개, 목록 순서대로 실행", "{d} 天 {h} 小时": "{d}일 {h}시간", "{h} 小时 {m} 分钟": "{h}시간 {m}분", "{label} 提示词文件": "{label} 시스템 프롬프트 파일", "{label} 的提示词模式": "{label}의 시스템 프롬프트 모드", "{label}({message})": "{label}({message})", "{lines} 行、{chars} 字符(按当前草稿计)": "{lines}행, {chars}자(현재 초안 기준)", "{minutes} 分钟": "{minutes}분", "{models} 同时出现在两块设置里,会按「辅助识图」处理。想改的话,把其中一个从这边的模型名单里去掉。": "{models}이(가) 두 블록에 모두 있습니다. 이 경우 \"보조 이미지 읽기\"로 처리됩니다. 바꾸려면 한쪽 모델 목록에서 빼세요.", "{mode}生效:上游收到的 system 来自{source}{lines}。": "{mode} 적용: 업스트림이 받는 system은 {source}에서 가져옵니다{lines}.", "{m} 分钟": "{m}분", "{noun}不能为空(可填 {min}–{max})": "{noun} 값은 비워 둘 수 없습니다({min}–{max} 입력 가능)", "{noun}必须在 {min}–{max} 之间(当前填的是 {text})": "{noun} 값은 {min}–{max} 사이여야 합니다(현재 입력: {text})", "{noun}必须是整数": "{noun} 값은 정수여야 합니다", "{n} B": "{n} B", "{n} GB": "{n} GB", "{n} KB": "{n} KB", "{n} MB": "{n} MB", "{n} 个头将随每个 Cline 请求发送": "헤더 {n}개가 모든 Cline 요청과 함께 전송됩니다", "{n} 台可选 · 点此切换": "{n}대 · 눌러서 전환", "{n} 项 · {shown} 显示": "{n}개 · {shown}개 표시", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "메뉴 {total}개 · 표시 {shown} · 숨김 {hidden} · 그룹 {groups}개", "{way}的适用模型": "{way}의 대상 모델", "⚠️ 密钥警告": "⚠️ 키 경고", "⚠️ 已关闭「{label}」的机器人校验": "⚠️ \"{label}\"의 봇 확인을 껐습니다", "⚠️ 机器人校验已关闭": "⚠️ 로봇 검증이 꺼져 있습니다", "✅ Cline 伪装头已保存": "✅ Cline 위장 헤더가 저장되었습니다", "✅ models.dev 模型元数据已开启": "✅ models.dev 모델 메타데이터를 켰습니다", "✅ 云同步设置已保存": "✅ 클라우드 동기화 설정이 저장되었습니다", "✅ 会话图片压缩已开启": "✅ 이미지 압축을 켰습니다", "✅ 出站指纹脱敏已开启": "✅ 아웃바운드 핑거프린트 마스킹이 켜졌습니다", "✅ 密码已修改,其他设备的登录已失效": "✅ 비밀번호를 변경했습니다. 다른 기기의 로그인은 해제되었습니다", "✅ 导入完成:{summary}": "✅ 가져오기 완료: {summary}", "✅ 已上传到云端({size})": "✅ 클라우드에 업로드했습니다({size})", "✅ 已为「{label}」装上网关自带提示词": "✅ 「{label}」에 게이트웨이 내장 시스템 프롬프트를 설치했습니다", "✅ 已从云端恢复{note}": "✅ 클라우드에서 복원했습니다{note}", "✅ 已保存:{label}": "✅ 저장됨: {label}", "✅ 已保存:{label} {value}": "✅ 저장됨: {label} {value}", "✅ 已保存:指定错误码直接换号": "✅ 저장됨: 지정 오류 코드 즉시 계정 전환", "✅ 已保留 {days} 天": "✅ {days}일 보관합니다", "✅ 已保留 {days} 天,超出部分已清理": "✅ {days}일 보관하며, 초과분은 정리했습니다", "✅ 已加密备份 {n} 张表({size}),包含恢复密钥:{file}": "✅ 테이블 {n}개 암호화 백업 완료({size}), 복원 키 포함: {file}", "✅ 已备份 {n} 张表({size})到 {file}": "✅ 테이블 {n}개({size})를 {file}(으)로 백업했습니다", "✅ 已导入账号密钥,请继续下载": "✅ 계정 키를 가져왔습니다. 계속 다운로드하세요", "✅ 已导出 {count} 个账号{note}{file}": "✅ 계정 {count}개를 내보냈습니다{note}{file}", "✅ 已开启「{label}」的机器人校验": "✅ \"{label}\"의 봇 확인을 켰습니다", "✅ 已恢复 {n} 张表{note}": "✅ 테이블 {n}개를 복원했습니다{note}", "✅ 已改用 k / M / B 缩写": "✅ k / M / B 약어로 변경했습니다", "✅ 已改用本地量级词(万 / 亿式)": "✅ 로컬 규모 단어(만 / 억 단위)로 전환했습니다", "✅ 已自动创建网关 Key「默认」(可在「网关 Key」页查看)": "✅ 게이트웨이 키 「기본」을 자동으로 만들었습니다(「게이트웨이 키」 페이지에서 확인할 수 있습니다)", "✅ 已解除内容拦截降级": "✅ 콘텐츠 차단 폴백을 해제했습니다", "✅ 开发者角色兼容已开启": "✅ 개발자 역할 호환이 켜졌습니다", "✅ 指纹脱敏设置已保存": "✅ 지문 마스킹 설정을 저장했습니다", "✅ 数量上限已设为 {count} 条": "✅ 건수 상한을 {count}건으로 설정했습니다", "✅ 数量上限已设为 {count} 条,超出部分已清理": "✅ 건수 상한을 {count}건으로 설정하고 초과분을 삭제했습니다", "✅ 机器人校验已开启": "✅ 로봇 검증이 켜졌습니다", "✅ 第三方模型回答完自动折叠过程已开启": "✅ 타사 모델의 답변 후 과정 자동 접기를 켰습니다", "✅ 设置已保存,应用正在重启…": "✅ 설정이 저장되었습니다. 앱을 다시 시작하는 중…", "✅ 调试模式已关闭": "✅ 디버그 모드가 꺼졌습니다", "✅ 调试模式已开启": "✅ 디버그 모드가 켜졌습니다", "✅ 路由设置已保存": "라우팅 설정이 저장되었습니다", "✅ 连接成功:{path}": "✅ 연결 성공: {path}", "、{n} 个自定义提供商": ", 커스텀 제공자 {n}개", "。事件日志、请求明细、调试报文与面板登录态保持不变。替换前会自动把当前业务数据备份到配置目录的 backups/ 下。": ". 이벤트 로그, 요청 상세, 디버그 패킷, 패널 로그인 상태는 그대로 유지됩니다. 교체 전에 현재 업무 데이터를 설정 디렉터리의 backups/ 에 자동으로 백업합니다.", "「{label}」将从 {previous} 天改为 {days} 天。": "「{label}」이(가) {previous}일에서 {days}일로 변경됩니다.", "「{label}」将从 {previous} 条改为 {count} 条。": "「{label}」을(를) {previous}건에서 {count}건으로 변경합니다.", "「{label}」改用内置默认提示词": "「{label}」이(가) 내장 기본 시스템 프롬프트로 전환되었습니다", "「{label}」的提示词文件已更新": "「{label}」의 시스템 프롬프트 파일이 업데이트되었습니다", "「{label}」的提示词正文已更新": "「{label}」의 시스템 프롬프트 본문이 업데이트되었습니다", "「{label}」的模式改为「{mode}」": "「{label}」의 모드가 「{mode}」(으)로 변경되었습니다", "「{label}」的网关自带提示词已改回官方原文": "「{label}」의 게이트웨이 내장 시스템 프롬프트를 공식 원문으로 되돌렸습니다", "「{label}」的网关自带提示词正文已更新": "「{label}」의 게이트웨이 내장 시스템 프롬프트 본문이 업데이트되었습니다", "「模型管理」里每个能力的来源标记(上游 / models.dev / 已覆盖)读的就是这份数据;映射弹窗的思考档位下拉也按这里的数据只列该模型真实认识的档位。": "「모델 관리」의 각 능력 출처 표시(업스트림 / models.dev / 직접 설정)가 이 데이터를 읽습니다. 매핑 대화상자의 추론 레벨 목록도 이 데이터를 기준으로 해당 모델이 실제로 받는 레벨만 표시합니다.", "「用哪份提示词」本来是按上游分别决定的事,所以每家可以有自己的模式、提示词文件与正文:不在这里列出的提供商一律沿用上面那份默认设置,「跟随默认」把这一家取消、回到默认。带「网关自带」那一行的家(目前是 ZCode 两家)默认就列在这里 —— 那一段是网关自己装上去的文本,不来自客户端也不来自提示词文件,默认开启、可以关掉,也可以改它的正文(改过的那一段以你的文本为准);关掉后还能不能通过上游校验,取决于上游当下的口径,行内说明了实测依据。「模式 / 提示词文件 / 正文」管的是客户端自己的 system 怎么处理,与那个开关是两件事。": "「어느 프롬프트를 쓸지」는 원래 업스트림별로 결정하는 일이므로, 제공자마다 자체 모드와 시스템 프롬프트 파일, 본문을 가질 수 있습니다. 여기에 나열되지 않은 제공자는 모두 위의 기본 설정을 따르며, 「기본값 따르기」를 선택하면 해당 제공자의 개별 설정이 취소되고 기본값으로 돌아갑니다. 「게이트웨이 내장」 항목이 있는 제공자(현재 ZCode 두 곳)는 기본적으로 여기에 나열됩니다. 그 단락은 게이트웨이가 직접 설치한 텍스트로, 클라이언트에서도 시스템 프롬프트 파일에서도 온 것이 아닙니다. 기본적으로 켜져 있으며 끌 수 있고 본문도 수정할 수 있습니다(수정한 단락은 입력한 텍스트가 우선). 끈 뒤에도 업스트림 검증을 통과할 수 있는지는 업스트림의 현재 기준에 달려 있으며, 실측 근거는 행 안에 설명되어 있습니다. 「모드 / 시스템 프롬프트 파일 / 본문」은 클라이언트 자체의 system을 어떻게 처리할지를 다루며, 그 스위치와는 별개의 일입니다.", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "\"설정\"은 고정 항목이라 그 그룹을 통째로 숨길 수 없습니다. 다른 메뉴는 개별로 숨길 수 있습니다", "「请求日志」页的逐条请求记录,默认 99999 天(近似全量保留),可填 1–99999 天。": "「요청 로그」페이지의 요청별 기록. 기본 99999일(거의 전체 보관)이며 1~99999일까지 입력할 수 있습니다.", "「请求日志」页的逐条请求记录,默认 99999 天,可填 1–99999 天;同时受数量上限限制。": "「요청 로그」페이지의 요청별 기록입니다. 기본값은 99999일이며 1–99999일을 입력할 수 있습니다. 건수 상한도 적용됩니다.", "一个 .a2ab 文件即可跨机器恢复,账号、网关 Key、GitHub 令牌与云同步凭据无需另行复制密钥。插件程序与库外文件不在整库备份范围。": ".a2ab 파일 하나로 다른 기기에 복원할 수 있으며 계정, 게이트웨이 Key, GitHub 토큰 및 클라우드 동기화 자격 증명의 키를 별도로 복사할 필요가 없습니다. 플러그인 프로그램과 데이터베이스 외부 파일은 포함되지 않습니다.", "一段内置装配": "내장 기본 구성", "三档数据各自独立计时,超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件;请求日志是网关每次转发到上游的逐条记录;按天聚合供报表页的热力图与按天趋势使用。请求日志与按天聚合默认 99999 天(约 274 年,效果上等于全量保留),事件日志默认 30 天。把某一档改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。三档的可填范围均为 1–99999 天。": "세 가지 데이터는 각각 독립적으로 계산되며, 보관 일수를 초과한 부분은 삭제됩니다: 이벤트 로그는 로그인, 계정 전환, 429 전환 같은 시스템 이벤트이고, 요청 로그는 게이트웨이가 업스트림으로 전달할 때마다 남기는 기록이며, 일별 집계는 리포트 페이지의 히트맵과 일별 추세에 사용됩니다. 요청 로그와 일별 집계의 기본값은 99999일(약 274년, 사실상 전량 보관)이고 이벤트 로그의 기본값은 30일입니다. 어느 하나를 줄여(예: 30일 → 7일) 저장하면 초과된 과거 데이터가 즉시 삭제되며 되돌릴 수 없습니다. 늘리거나 그대로 두면 아무것도 삭제되지 않습니다. 세 항목 모두 입력 범위는 1~99999일입니다.", "三段各自成块,所以分开编辑": "세 단락이 각각 별도 블록이라 따로 편집합니다", "上传": "업로드", "上传 Logo": "로고 업로드", "上传中…": "업로드 중…", "上传内容含加密后的账号凭证与网关配置": "업로드 내용에는 암호화된 계정 자격 증명과 게이트웨이 설정이 포함됩니다", "上传到云端": "클라우드로 업로드", "上传失败:{message}": "업로드 실패: {message}", "上次同步:{time}({action})": "마지막 동기화: {time} ({action})", "上次成功刷新的结果(存在本机数据库里)": "마지막으로 성공한 새로고침 결과(로컬 데이터베이스에 저장)", "上游 CLI 版本": "업스트림 CLI 버전", "上游客户端版本": "업스트림 클라이언트 버전", "上游按": "업스트림이 ", "上游按「结构」校验身份:三段必须各自成块,所以这里分开编辑三段(不能合成一段)。动态段里的运行值写成占位符,发请求时才替换:{cwd} 工作目录、{platform} 平台、{shell} shell、{os_version} 系统版本、{git} 是否 git 仓库、{provider} 提供方标识、{model} 模型名。清空某一段 = 那一段恢复官方原文。第三段发出时前面会自带一个空行(官方形状)。": "업스트림은 「구조」로 신원을 검증합니다. 세 단락이 각각 별도 블록이어야 하므로 여기서는 세 단락을 따로 편집합니다(하나로 합칠 수 없습니다). 동적 단락의 런타임 값은 플레이스홀더로 작성하며 요청을 보낼 때 치환됩니다: {cwd} 작업 디렉터리, {platform} 플랫폼, {shell} shell, {os_version} OS 버전, {git} git 저장소 여부, {provider} 제공자 식별자, {model} 모델 이름. 단락을 비우면 그 단락은 공식 원문으로 복원됩니다. 세 번째 단락은 전송 시 앞에 빈 줄이 하나 자동으로 붙습니다(공식 형태).", "上游未配置": "업스트림 미설정", "上游模型繁忙时会先排队(回一句「建议 N 秒后再来」):网关等一会儿再发同一请求,最多等几次。默认 2 次,可填 0–10;填 0 表示不等待,排队直接返回 503 并说明「不是登录态或额度问题」。": "업스트림 모델이 바쁘면 먼저 큐잉합니다(「N초 후에 다시 오세요」라고 응답하며). 게이트웨이는 잠시 기다렸다가 같은 요청을 다시 보내며, 최대 몇 번까지 기다립니다. 기본값 2회, 0–10 입력 가능하며, 0은 기다리지 않고 큐잉을 곧바로 503으로 반환하면서 「로그인 상태나 할당량 문제가 아닙니다」라고 설명합니다.", "上游用「逐字精确匹配」的方式审核请求体(不是语义审核):客户端注入的固定模板句、计费头字段名、以及某些裸错误码出现在报文里就会整单拦截,返回 400。开启本项后,网关在每次转发前改写这些指纹 —— 表头键值整段删除,承载语义的模板句只换一个词(如 official CLI for Claude → official CLI tool for Claude),对话内容与语义都不受影响。规则集是内置的,不需要也无法维护词表。关掉本项后客户端模板会原样发往上游,可能重新出现模板句被误拦的报错。": "업스트림은 요청 본문을 「글자 단위 정확 일치」 방식으로 검사합니다(의미 검사가 아닙니다). 클라이언트가 주입한 고정 템플릿 문구, 과금 헤더 필드 이름, 일부 날것의 오류 코드가 메시지에 나타나면 요청 전체가 차단되어 400을 반환합니다. 이 항목을 켜면 게이트웨이가 전달 전에 이런 핑거프린트를 매번 다시 씁니다. 헤더 키-값은 통째로 삭제하고, 의미를 담은 템플릿 문구는 단어 하나만 바꿉니다(예: official CLI for Claude → official CLI tool for Claude). 대화 내용과 의미는 영향을 받지 않습니다. 규칙 집합은 내장되어 있어 단어 목록을 유지할 필요도, 할 수도 없습니다. 이 항목을 끄면 클라이언트 템플릿이 그대로 업스트림으로 전송되어 템플릿 문구가 잘못 차단되는 오류가 다시 나타날 수 있습니다.", "上游请求四个阶段各自的等待上限(秒,1~3600):①「连接中超时」= 建立 TCP/TLS 连接或代理隧道的最大等待,默认 30 秒;②「等待响应超时」= 请求发出后等上游响应头的最大时间,默认 300 秒 —— 网关请求上游恒带 stream,响应头在 SSE 建立时就到达,与模型思考多久无关;③「流式响应空闲超时」= 流式响应相邻两块数据之间允许的最大空闲,收到新数据即重新计时,默认 300 秒 —— 上游长时间不吐数据即判定连接僵死并断开;④「非流式响应超时」= 读完整份非流式响应体的总预算(一次性计时、不重置),默认 300 秒。四项都是「等待上限」,只要数据还在来,正常的流式回答就一直往下传。保存后对下一个请求立即生效,不用重启。": "업스트림 요청의 네 단계별 대기 상한(초, 1~3600)입니다. ①「연결 타임아웃」= TCP/TLS 연결 또는 프록시 터널을 설정할 때 기다리는 최대 시간, 기본 30초. ②「응답 대기 타임아웃」= 요청을 보낸 뒤 업스트림 응답 헤더를 기다리는 최대 시간, 기본 300초. 게이트웨이는 업스트림에 항상 stream으로 요청하므로 응답 헤더는 SSE가 연결될 때 도착하며 모델이 얼마나 오래 생각하는지와는 무관합니다. ③「스트리밍 응답 유휴 타임아웃」= 스트리밍 응답의 인접한 두 데이터 블록 사이에 허용되는 최대 유휴 시간으로, 새 데이터를 받으면 다시 시간을 재며, 기본 300초입니다. 업스트림이 오랫동안 데이터를 내보내지 않으면 연결이 멈춘 것으로 판단해 끊습니다. ④「비스트리밍 응답 타임아웃」= 비스트리밍 응답 본문 전체를 읽는 총 예산(한 번만 시간을 재고 재설정하지 않음), 기본 300초. 네 항목 모두 「대기 상한」이며, 데이터가 계속 오는 한 정상적인 스트리밍 응답은 계속 전달됩니다. 저장 후 다음 요청부터 즉시 적용되며 재시작이 필요 없습니다.", "上游调试报文": "업스트림 디버그 페이로드", "上移": "위로", "上移规则": "규칙 위로 이동", "下次自动重试:{time}": "다음 자동 재시도: {time}", "下游正文": "다운스트림 본문", "下移": "아래로", "下移规则": "규칙 아래로 이동", "下载失败:{message}": "다운로드 실패: {message}", "不一致": "불일치", "不做会话识别,每条请求都重新按策略选路。": "세션을 식별하지 않고 요청마다 전략에 따라 다시 선택합니다.", "不做图片兼容": "이미지 호환 처리 안 함", "不可用": "사용 불가", "与网关同源的面板;完整管理功能在桌面端": "게이트웨이와 같은 출처의 패널입니다. 전체 관리는 데스크톱에서 하세요", "两张开关分别管桌面端(应用内窗口,也包含开启局域网访问后从其他设备访问的那份面板)与网页端(Docker / 服务端自托管的浏览器面板)。默认都开启;桌面端只在本机使用、嫌验证耗时可以关掉,网页端暴露在网络上,建议保持开启。": "두 스위치는 데스크톱 쪽(앱 내 창, LAN 액세스가 켜졌을 때 다른 기기에서 여는 패널 포함)과 웹 쪽(Docker / 서버가 호스팅하는 브라우저 패널)을 따로 제어합니다. 기본값은 둘 다 켜짐입니다. 로컬에서만 쓰고 인증 대기 시간이 부담되면 데스크톱 쪽을 꺼도 되지만, 네트워크에 노출되는 웹 쪽은 켜 두는 것을 권장합니다.", "两次输入的备份密码不一致": "두 번 입력한 백업 비밀번호가 일치하지 않습니다", "两次输入的新密码不一致": "새 비밀번호가 일치하지 않습니다", "两次重试之间的等待时间,两项共用,可填 0–300 秒。": "두 재시도 사이의 대기 시간이며 두 항목이 공유합니다. 0–300초를 입력할 수 있습니다.", "两种方式不会互相自动切换。": "두 방식 사이에서 자동으로 전환하지 않습니다.", "两组设置分别用于桌面端托管的网页管理面板与网页端(Docker / 服务端)的浏览器面板。是否可被其他设备访问取决于网络访问与防火墙设置,不限于局域网。两端默认都开启人机验证,建议保持开启。": "두 설정 그룹은 데스크톱 앱이 제공하는 웹 관리 패널과 Docker / 서버가 제공하는 브라우저 패널에 각각 적용됩니다. 다른 기기의 접근 가능 여부는 네트워크 접근과 방화벽 설정에 따라 달라지며 LAN으로 제한되지 않습니다. 두 환경 모두 사람 확인이 기본으로 켜져 있으며, 계속 켜 두는 것을 권장합니다.", "为了安全,开启前需要先注册一个": "보안을 위해, 켜기 전에 다음을 먼저 등록해야 합니다: ", "主进程未返回启动设置,请更新桌面端后重试": "메인 프로세스가 시작 설정을 반환하지 않았습니다. 데스크톱 앱을 업데이트한 후 다시 시도하세요", "主进程桥不可用": "메인 프로세스 브리지를 사용할 수 없습니다", "主题": "테마", "事件日志": "이벤트 로그", "事件日志保留天数": "이벤트 로그 보관 일수", "云同步": "클라우드 동기화", "产品名": "제품 이름", "产品名不能包含斜杠或版本号,请改用前缀匹配": "제품 이름에 슬래시나 버전을 포함할 수 없습니다. 접두사 일치를 사용하세요.", "人机验证": "사람 확인", "人机验证失败": "사람 확인 실패", "人机验证已完成": "사람 확인 완료", "人机验证还在计算,请稍候": "사람 확인을 계산 중입니다. 잠시 기다려 주세요", "仅在同一会话、同一问题和相同权限范围内复用;追问新细节会重新识读。缓存只存在本机内存。": "동일한 대화, 질문 및 권한 범위에서만 결과를 재사용합니다. 새로운 세부 사항을 질문하면 다시 읽습니다. 캐시는 로컬 메모리에만 보관됩니다.", "仅在账号、配置、签到或余额等实质内容变化时上传;导出时间或查询时间单独变化不会触发上传。": "계정, 설정, 체크인 결과, 잔액 등 실제 내용이 변경된 경우에만 업로드합니다. 내보내기 시각이나 조회 시각만 변경되면 업로드하지 않습니다.", "仅处理本次转发副本,不修改客户端选择,也不删除当前或历史图片。": "이번 전달 사본만 처리합니다. 클라이언트의 선택을 변경하거나 현재 또는 이전 이미지를 삭제하지 않습니다.", "仅影响面板登录与注册,不影响 API Key 调用。保存后生效,已登录会话不会退出。": "패널 로그인과 가입에만 적용되며 API 키 호출에는 영향을 주지 않습니다. 저장하면 적용되고 기존 로그인 세션은 유지됩니다.", "仅本机": "이 기기만", "仅用现有数据、不联网刷新": "보유 데이터만 사용, 온라인 갱신 안 함", "从云端恢复": "클라우드에서 복원", "从桌面图标启动,全屏、无地址栏。想卸载:长按图标删除,或清除浏览器站点数据。": "홈 화면 아이콘으로 실행합니다. 전체 화면, 주소 표시줄 없음. 삭제하려면 아이콘을 길게 눌러 제거하거나 브라우저 사이트 데이터를 지우세요.", "优先使用当前路由内的视觉模型": "현재 라우트의 비전 모델 우선 사용", "优先在当前路由内找可用的视觉模型,找不到就用 {model} 直接回答,不再回到原模型。": "현재 라우트 안에서 쓸 수 있는 비전 모델을 우선 사용하고, 없으면 {model}이(가) 원래 모델 대신 바로 답합니다.", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "그룹·순서·표시 설정을 기본값으로 되돌립니다. 직접 만든 그룹은 삭제됩니다(메뉴는 유지됩니다).", "会话图片压缩设置已刷新": "이미지 압축 설정을 새로 고쳤습니다", "位置": "위치", "位置与端口": "위치 및 포트", "使用 Rust 正则语法,保存时由后端校验;不支持环视和反向引用。": "Rust 정규식 문법을 사용하며 저장 시 백엔드에서 검증합니다. 전후방 탐색과 역참조는 지원하지 않습니다.", "使用中文单位(亿 / 万)": "중국어 단위 사용 (억 / 만)", "使用本地量级词(万 / 亿式)": "로컬 규모 단어 사용(만 / 억 단위)", "使用默认值": "기본값 사용 중", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "사이드바 레이아웃 모듈이 로드되지 않았습니다(ui/sidebar-layout.js는 app.js보다 먼저 포함되어야 합니다).", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "사이드바에 표시되는 메뉴가 없습니다. 설정 → 표시 → 사이드바 메뉴에서 필요한 항목을 켜세요.", "侧边栏菜单": "사이드바 메뉴", "保存上游原始报文(请求头、请求体、响应头、响应体)": "업스트림 원본 메시지 저장(요청 헤더, 요청 본문, 응답 헤더, 응답 본문)", "保存单独配置": "모델별 설정 저장", "保存后以这里的文本为准": "저장하면 여기의 텍스트가 우선합니다", "保存后对下一轮补货立即生效,不用重启。守卫跑在应用界面里:轻量模式关窗销毁界面期间无法铸造,走套餐池(Start Plan)通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。": "저장하면 다음 보충 라운드부터 즉시 적용되며 재시작은 필요 없습니다. 가드는 앱 UI 안에서 동작합니다: 경량 모드로 창을 닫아 UI가 파괴된 동안에는 토큰을 생성할 수 없으며, 플랜 풀 (Start Plan) 채널의 요청은 사유와 함께 503으로 요청 로그에 기록됩니다. UI를 다시 열면 자동으로 복구됩니다.", "保存后应用将重启以生效。": "저장 후 적용을 위해 앱이 다시 시작됩니다.", "保存后状态读取立即生效。后台不会自动生成令牌;需要人机验证时,在账号的「套餐明细」中主动开始验证。模型请求免验证时无需保持界面打开。": "저장 후 상태 조회 설정이 즉시 적용됩니다. 토큰은 자동으로 생성하지 않습니다. 인증이 필요하면 계정의 「플랜 상세」에서 직접 시작하세요. 모델 요청에 인증이 필요 없으면 화면을 열어 둘 필요가 없습니다.", "保存后立即生效,不用重启:策略与粘性作用于**下一次**转发的选路,进行中的请求不受影响。": "저장 즉시 적용, 재시작 불필요: 전략과 고정은 **다음** 전송의 선택부터 적용되며 진행 중인 요청에는 영향이 없습니다.", "保存后立即生效,不用重启;次数用尽仍失败时,错误原样返回给客户端。": "저장 후 재시작 없이 즉시 적용됩니다. 횟수를 다 써도 실패하면 오류가 그대로 클라이언트에 반환됩니다.", "保存后立即生效,不用重启;超时按上游失败处理(计入请求日志的「错误」列,并按「请求重试」的设置决定是否重试)。": "저장 후 재시작 없이 즉시 적용됩니다. 타임아웃은 업스트림 실패로 처리됩니다(요청 로그의 「오류」 열에 집계되며, 「요청 재시도」 설정에 따라 재시도 여부가 결정됩니다).", "保存后立即生效:保留天数和数量上限同时生效,调小任一项会立即清理超出的历史数据,且不可恢复。": "저장 즉시 적용됩니다. 보관 일수와 건수 상한이 함께 적용되며 어느 하나를 줄이면 초과한 과거 데이터가 즉시 삭제됩니다. 복구할 수 없습니다.", "保存后立即生效:改小保留天数会立刻删除超出的历史数据,且不可恢复。": "저장 후 즉시 적용됩니다. 보관 일수를 줄이면 초과된 과거 데이터가 즉시 삭제되며 복구할 수 없습니다.", "保存在当前网关,登录页也会公开显示。不会更改安装包、快捷方式、系统托盘图标或软件版本信息。": "현재 게이트웨이에 저장되며 로그인 페이지에도 공개 표시됩니다. 설치 파일, 바로가기, 시스템 트레이 아이콘 또는 소프트웨어 버전 정보는 변경하지 않습니다.", "保存并重启": "저장 후 재시작", "保存设置": "설정 저장", "保持当前路由范围,不跳到其他路由组。": "현재 라우트 범위를 유지하며 다른 라우트 그룹으로 넘어가지 않습니다.", "保活换行丢弃": "keepalive 개행 제거", "保留原图和对话,由视觉模型直接回答本次请求。": "원본 이미지와 대화를 유지하고 비전 모델이 이번 요청에 직접 답변합니다.", "保留原图,选择视觉模型": "원본 이미지를 유지하고 비전 모델 선택", "保留图片中的文字、代码、数字、布局与状态。识读失败就停止,不删图后继续回答。": "이미지의 텍스트, 코드, 숫자, 배치 및 상태를 보존합니다. 읽기에 실패하면 중지하며 이미지를 삭제한 채 답변을 계속하지 않습니다.", "保留天数已刷新": "보관 일수를 새로 고쳤습니다", "保留旧版配置兼容,当前不会自动连铸。每次点击「开始验证」只取得一枚令牌,失败或取消后停止。": "이전 설정과의 호환성을 위해 유지합니다. 토큰을 자동으로 연속 생성하지 않습니다. 「인증 시작」을 누를 때마다 토큰 하나만 가져오며 실패하거나 취소하면 중지합니다.", "保留草稿并读取最新设置": "초안을 유지하고 최신 설정 불러오기", "修改密码": "비밀번호 변경", "修改密码需要输入当前密码;修改成功后,其他设备 / 浏览器上的登录会立即失效,当前这条会话保留。": "비밀번호 변경에는 현재 비밀번호가 필요합니다. 성공하면 다른 기기·브라우저의 로그인은 즉시 해제되고 현재 세션만 유지됩니다.", "值": "값", "值与默认值相同的行不占覆盖(存的是「改过的键」,不是全量配置);值留空保存表示这个头不发送,删除改过的行表示回落默认值。改完立即生效,不用重启。": "기본값과 같은 값의 행은 덮어쓰기에 포함되지 않습니다(저장되는 것은 「수정된 키」이며 전체 설정이 아닙니다). 값을 비워 저장하면 해당 헤더를 전송하지 않고, 수정한 행을 삭제하면 기본값으로 돌아갑니다. 수정 후 재시작 없이 즉시 적용됩니다.", "值(留空 = 不发送)": "값(비우면 = 전송 안 함)", "停止并说明原因": "중지하고 이유 표시", "像素": "px", "允许其他设备访问前,需要设置面板管理员账号与密码。注册完成后会继续开启流程并重启应用。": "다른 기기의 접근을 허용하기 전에 패널 관리자 계정과 비밀번호를 설정하세요. 등록이 완료되면 네트워크 접근을 켜고 앱을 다시 시작합니다.", "允许其他设备访问网关": "다른 기기의 게이트웨이 접근 허용", "允许局域网内的设备访问网关": "LAN 내 기기의 게이트웨이 접근 허용", "允许无 Key 裸跑": "키 없이 실행 허용", "允许浏览器里的页面跨来源调用网关(/v1/*)": "브라우저 페이지가 교차 출처로 게이트웨이를 호출하도록 허용(/v1/*)", "允许的域名": "허용된 호스트 이름", "先发送原图,明确拒图后补救": "원본 이미지를 먼저 보내고 명시적으로 거부된 경우에만 호환 처리", "先把图片交给视觉模型读一遍,再让原模型结合读到的内容回答。": "먼저 비전 모델이 이미지를 읽고, 원래 모델이 읽은 내용을 바탕으로 답합니다.", "全局配置": "전역 설정", "全部已配置": "모두 설정됨", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 中,加密密钥单独保存在库外。跨机器备份请使用「整库备份 / 恢复」,不要只复制数据库。更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "계정, 로그, 요청 기록, 디버그 데이터 및 설정은 agent2api.db에 저장되며 암호화 키는 별도로 보관됩니다. 기기 간 이동에는 데이터베이스만 복사하지 말고 전체 백업 / 복원을 사용하세요. 저장 위치를 변경하려면 AGENT2API_PROXY_HOME을 설정한 후 앱을 다시 시작하세요.", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 这一个 SQLite 数据库里。备份时只需拷贝这个文件;更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "모든 데이터(계정, 이벤트 로그, 요청 기록, 디버그 메시지, 설정)는 구성 디렉터리의 agent2api.db라는 하나의 SQLite 데이터베이스에 통합 저장됩니다. 백업할 때는 이 파일만 복사하면 됩니다. 저장 위치를 바꾸려면 환경 변수 AGENT2API_PROXY_HOME을 설정한 후 프로그램을 다시 시작하세요.", "全部角色": "모든 역할", "全部角色沿用原有行为,包含思考内容和工具参数;指定角色时只改消息正文,未选角色及思考内容、工具参数保持原样。": "모든 역할은 추론 내용과 도구 인수를 포함하는 기존 동작을 유지합니다. 역할을 지정하면 메시지 본문만 수정하며 선택하지 않은 역할, 추론 내용과 도구 인수는 그대로 유지합니다.", "共享视觉模型已变更,请重新确认并保存,避免把图片交给未经确认的模型。": "공유 비전 모델이 변경되었습니다. 확인하지 않은 모델에 이미지를 보내지 않도록 다시 확인하고 저장하세요.", "共用设置:{providers}": "공유 설정: {providers}", "关闭后不再提供网页管理面板,本机桌面程序仍可正常管理;已开启的 API 转发不受影响。": "끄면 웹 관리 패널 제공을 중단합니다. 이 기기의 데스크톱 앱에서는 계속 관리할 수 있으며, API 전달에는 영향이 없습니다.", "关闭后手动上传 / 下载也会被拒绝。": "끄면 수동 업로드/다운로드도 거부됩니다.", "关闭后网关只监听 127.0.0.1,其他设备将无法直接连接,网页管理面板也会一并关闭。已配置的网关 Key 与账号不受影响。": "끄면 게이트웨이가 127.0.0.1에서만 수신하므로 다른 기기에서 직접 연결할 수 없으며, 웹 관리 패널도 함께 꺼집니다. 기존 게이트웨이 키와 계정에는 영향이 없습니다.", "关闭后网关回到只监听 127.0.0.1,局域网内的设备将无法继续访问;已配置的网关 Key 与账号都不受影响。": "끄면 게이트웨이가 다시 127.0.0.1만 수신하며 LAN 내 기기는 더 이상 접근할 수 없습니다. 이미 설정한 게이트웨이 키와 계정은 영향을 받지 않습니다.", "关闭后,管理界面不再从局域网提供,只有本机的桌面程序可以管理;已开启的 API 转发不受影响。": "끄면 관리 화면이 더 이상 LAN에 제공되지 않고 로컬 데스크톱 앱에서만 관리할 수 있습니다. 이미 켜 둔 API 포워딩은 영향을 받지 않습니다.", "关闭局域网访问": "LAN 접근 끄기", "关闭并重启": "닫고 재시작", "关闭思考": "추론 비활성화", "关闭窗口即退出程序,后台转发随之中断": "창을 닫으면 프로그램이 종료되고 백그라운드 포워딩도 중단됩니다", "关闭窗口时最小化到托盘": "창을 닫을 때 트레이로 최소화", "关闭窗口时程序不退出,转发继续在后台运行;退出请用托盘菜单": "창을 닫아도 프로그램이 종료되지 않고 포워딩이 백그라운드에서 계속 실행됩니다. 종료하려면 트레이 메뉴를 사용하세요", "关闭网络访问": "네트워크 접근 끄기", "兼容处理最长等待": "호환 처리 최대 대기", "兼容处理最长等待(秒)": "호환 처리 최대 대기 시간(초)", "内容拦截降级": "콘텐츠 차단 폴백", "内置识别、自定义规则与来源声明": "내장 식별, 사용자 규칙 및 출처 선언", "内置软件标识规则": "내장 소프트웨어 식별 규칙", "内置默认": "내장 기본값", "内置默认提示词": "내장 기본 시스템 프롬프트", "再输入一次新密码": "새 비밀번호를 한 번 더 입력하세요", "凭据类请求头已脱敏。": "자격 증명 계열 요청 헤더는 마스킹되었습니다.", "凭证只保存在这台手机上,按服务器分别存放": "자격 증명은 이 기기에만 저장되며 서버별로 따로 보관됩니다", "出问题时把这一页截图,或点「复制全部信息」把文本贴进反馈,一般就能定位到大致原因。": "문제가 생기면 이 페이지를 캡처하거나 \"모든 정보 복사\"로 텍스트를 복사해 제보에 붙여 주세요. 대개 그것만으로 원인을 좁힐 수 있습니다.", "分享图标在 Safari 底部工具栏中间": "공유 아이콘은 Safari 하단 도구 막대 가운데에 있습니다", "分组名": "그룹 이름", "分组名,例如「常用」": "그룹 이름, 예: \"즐겨찾기\"", "切换视觉模型": "비전 모델로 전환", "切换视觉模型 · 视觉模型回答": "모델 전환 · 비전 모델이 답변", "切换视觉模型配置": "비전 모델 전환 설정", "切换账号重试次数": "계정 전환 재시도 횟수", "刚刚从 models.dev 拉到的最新数据": "models.dev에서 방금 가져온 최신 데이터", "删除 {code}": "{code} 삭제", "删除分组": "그룹 삭제", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "그룹 \"{name}\"을(를) 삭제할까요? 메뉴 {n}개는 \"{target}\"(으)로 이동하며 사라지지 않습니다.", "删除匹配内容": "일치한 내용 삭제", "删除后不再接受这个分类的来源声明,历史记录保留原来的名称和用量。": "삭제 후 이 분류의 출처 선언은 허용되지 않습니다. 과거 기록은 원래 이름과 사용량을 유지합니다.", "删除后,新请求不再使用这条规则;历史记录保持不变。": "삭제 후 새 요청에는 이 규칙이 사용되지 않습니다. 과거 기록은 유지됩니다.", "删除客户端分类": "클라이언트 분류 삭제", "删除状态码 {code}": "상태 코드 {code} 삭제", "删除空分组「{name}」?": "빈 그룹 \"{name}\"을(를) 삭제할까요?", "删除识别规则": "식별 규칙 삭제", "删除这个分组(组内菜单移到第一组)": "이 그룹 삭제(메뉴는 첫 그룹으로 이동)", "刷新": "새로고침", "刷新失败:{message}": "새로고침 실패: {message}", "前台运行": "포그라운드 실행", "前缀": "접두사", "剥离上游审核黑名单指纹(改写请求体里的模板句与表头)": "업스트림 검열 블랙리스트 핑거프린트 제거(요청 본문의 템플릿 문구와 헤더 재작성)", "功能建议": "기능 제안", "加入备选": "대체 모델로 추가", "加密备份必填,旧 SQL 可留空": "암호화 백업은 필수, 기존 SQL은 비워도 됩니다", "包含": "포함", "包含日志与调试报文": "로그와 디버그 페이로드 포함", "包含:{items}": "포함: {items}", "匹配内容": "일치 패턴", "匹配内容不能为空,且最多 {max} 个字符": "일치 패턴은 필수이며 최대 {max}자까지 입력할 수 있습니다", "匹配内容不能为空,最长 256 个字符": "일치 조건을 256자 이내로 입력하세요", "匹配原文含零宽空格,词表预览用 \\u{200b} 标出;编辑时保留该字符。": "패턴에 너비가 없는 공백이 포함되어 있습니다. 미리보기에서는 \\u{200b}로 표시하며 편집 시 해당 문자를 유지하세요.", "匹配方式": "일치 방식", "区域(Region)": "리전(Region)", "华为云 OBS": "화웨이 클라우드 OBS", "单独指定视觉模型": "비전 모델 별도 지정", "单轮铸造上限": "회당 발행 한도", "占用大小": "사용 용량", "历史未记录识别依据": "과거 식별 근거가 기록되지 않음", "原来的「全局方式 + 模型单独配置」已按相同意思自动填成下面的模型名单,可以照用也可以重新调整;改动一处之后就会按新形式存下来。": "이전의 \"전역 방식 + 모델별 개별 설정\"을 같은 의미로 아래 모델 목록에 채워 넣었습니다. 그대로 쓰거나 다시 조정해도 됩니다. 한 곳이라도 바꾸면 새 형식으로 저장됩니다.", "原模型不能直接看图": "원래 모델이 이미지를 직접 읽을 수 없음", "原模型根据识读内容回答": "원래 모델이 이미지 설명을 바탕으로 답변", "去反馈": "신고하기", "去申请": "신청하기", "反馈与需求": "피드백 및 요청", "发现缺货时一轮最多铸几个(连铸之间固定隔 500 毫秒)。默认 1 个:SDK 同一实例连铸容易互相干扰。调大补货更快,但单轮连铸越多越容易触发上游风控。可填 1–5。": "부족 발견 시 한 번에 최대 몇 개까지 발행할지 정합니다(연속 발행 사이는 고정 500 밀리초). 기본값은 1: 같은 SDK 인스턴스에서 연속 발행하면 서로 간섭하기 쉽기 때문입니다. 크게 하면 보충이 빨라지지만 한 번에 많이 발행할수록 업스트림 리스크 관리에 걸리기 쉽습니다. 1–5 입력 가능.", "取消勾选后只备份业务数据(账号、配置与余额记录),文件显著变小;事件日志、请求统计与调试报文不会进备份文件。": "체크를 해제하면 업무 데이터(계정, 설정, 잔액 기록)만 백업되어 파일이 훨씬 작아집니다. 이벤트 로그, 요청 통계, 디버그 페이로드는 백업에 포함되지 않습니다.", "变更网页管理面板": "웹 관리 패널 변경", "只列单独配置过的家,其余沿用上面的全局配置": "개별 설정한 제공자만 표시되며, 나머지는 위의 전역 설정을 따릅니다", "只对「排队制」的上游生效:模型繁忙时上游不报错,只回一句「建议 N 秒后再来」,网关按建议时长等一会儿再发同一请求,等满次数仍排不上才把「排队中」作为错误返回(HTTP 503,文案会说明这不是登录态或额度问题)。等待发生在首个字节之前,吃的是「等待响应超时」那份预算 —— 两项设置一起决定一次请求最多卡多久;排队不会标记账号限额、也不会换账号(换谁都一样在排队)。保存后对下一个请求立即生效,不用重启。": "「큐잉 방식」 업스트림에만 적용됩니다. 모델이 바쁠 때 업스트림은 오류를 내지 않고 「N초 후에 다시 오세요」라고만 응답합니다. 게이트웨이는 안내된 시간만큼 기다렸다가 같은 요청을 다시 보내며, 횟수를 다 채울 때까지 큐에 들어가지 못하면 「큐잉 중」을 오류로 반환합니다(HTTP 503, 이는 로그인 상태나 할당량 문제가 아니라는 설명이 함께 표시됩니다). 대기는 첫 바이트 이전에 발생하며 「응답 대기 타임아웃」 예산을 소모합니다. 두 설정이 함께 요청 하나가 최대 얼마나 지연될 수 있는지를 결정합니다. 큐잉은 계정에 할당량 초과를 표시하지 않고 계정도 바꾸지 않습니다(누구든 마찬가지로 큐에 대기합니다). 저장 후 다음 요청부터 즉시 적용되며 재시작이 필요 없습니다.", "只影响读图那一步的思考深度;两块设置统一用这个选择。": "이미지를 읽는 단계의 사고 깊이에만 영향을 줍니다. 두 블록이 이 선택을 함께 사용합니다.", "只有已安装、启用并声明了设置项的提供商会出现在这里。可前往插件页检查安装与启用状态。": "설치 및 활성화된 플러그인이 설정 항목을 제공하는 경우에만 여기에 표시됩니다. 플러그인 페이지에서 설치 및 활성화 상태를 확인하세요.", "只沿用模型与思考等级,不借用视觉服务的内部 Key;仍受当前请求权限限制。": "모델과 추론 수준만 재사용하고 비전 서비스의 내부 Key는 사용하지 않습니다. 현재 요청의 권한 제한이 그대로 적용됩니다.", "只清掉这个浏览器存的 Key,不影响网关": "이 브라우저에 저장된 Key만 삭제합니다. 게이트웨이는 영향 없음", "只覆盖指定提供商的指定模型,其余跟随全局。": "지정한 제공업체의 지정 모델에만 적용하며 나머지는 전역 설정을 따릅니다.", "可跨提供商多选;只处理这些模型看不了的图片。": "제공자를 넘어 여러 개 선택할 수 있습니다. 이 모델들이 읽지 못하는 이미지만 처리합니다.", "可跨提供商多选;这些模型的请求会整体改交视觉模型。": "제공자를 넘어 여러 개 선택할 수 있습니다. 이 모델들의 요청은 통째로 비전 모델에 넘깁니다.", "可选。部分服务(如中国科技云数据胶囊)会按 User-Agent 校验凭据绑定的客户端类型,此时填写包含该类型名的字符串(例如 rclone/v1.67.0)。留空则维持默认。": "선택 사항. 일부 서비스(예: 중국과학기술망 데이터 캡슐)는 User-Agent로 자격 증명에 연결된 클라이언트 유형을 검증합니다. 이 경우 유형 이름이 포함된 문자열(예: rclone/v1.67.0)을 입력하세요. 비워 두면 기본값이 유지됩니다.", "合计只累加当前筛选后可见的账号,筛选、搜索一改数字就跟着变。": "합계는 현재 필터에서 보이는 계정만 더합니다. 필터나 검색을 바꾸면 숫자도 함께 바뀝니다.", "合计按整组统计(默认):不受筛选、搜索影响,被筛掉与已禁用的账号也计入。": "합계는 전체 그룹 기준입니다(기본값). 필터와 검색의 영향을 받지 않으며, 필터에서 제외된 계정과 비활성 계정도 포함됩니다.", "同一会话、同一问题、相同权限范围内复用;追问新细节会重新识读。": "같은 세션, 같은 질문, 같은 권한 범위 안에서 재사용합니다. 새로운 세부를 물으면 다시 읽습니다.", "同一会话在 5 分钟内尽量跟住同一个账号;停了 5 分钟再发就算新会话。多数场景用它 —— 多轮对话少换号,也不至于把账号焊死。": "같은 세션은 5 분 안에 가능한 한 같은 계정을 유지하고, 5 분 이상 비면 새 세션으로 간주합니다. 대부분의 상황에 권장 — 여러 턴의 대화에서 계정이 자주 바뀌지 않으면서 특정 계정에 고정되지도 않습니다.", "同一会话在 6 小时内跟住同一个账号;适合一坐几个小时的长会话,上游的上下文缓存能吃到更多。": "같은 세션은 최대 6 시간 동안 같은 계정을 유지합니다. 몇 시간씩 이어지는 긴 세션에 적합하며, 업스트림 컨텍스트 캐시를 훨씬 더 활용할 수 있습니다.", "同一提供商的同一模型不能重复配置": "동일한 제공업체의 동일한 모델을 중복 설정할 수 없습니다", "同一账号重试次数": "동일 계정 재시도 횟수", "同时开放网页管理面板": "웹 관리 패널도 함께 공개", "同步密码": "동기화 비밀번호", "名单最多 {max} 个状态码": "목록에는 상태 코드를 최대 {max}개까지 넣을 수 있습니다", "后端没有返回版本信息": "백엔드가 버전 정보를 반환하지 않았습니다", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "고정 항목 \"설정\"이 있어 그룹 전체를 숨길 수 없습니다(다른 메뉴는 개별로 숨길 수 있습니다)", "启动与托盘": "시작 및 트레이", "启动时间": "시작 시각", "启用云同步": "클라우드 동기화 사용", "启用图片兼容": "이미지 호환 처리 활성화", "启用规则": "규칙 활성화", "启用规则:{name}": "규칙 활성화: {name}", "命中依据:{header} · {pattern}": "일치 근거: {header} · {pattern}", "命中这些上游状态码的失败不在同一账号重发,直接换下一个账号继续试(换号占用「切换账号重试次数」,换满仍失败才把错误原样返回给客户端)。输入 100–599 的状态码后回车添加,点 × 或退格删除;默认 402(积分不足)。清空全部表示任何错误都照常重试。": "이 업스트림 상태 코드에 해당하는 실패는 같은 계정에서 다시 보내지 않고 바로 다음 계정으로 넘어가 계속 시도합니다(계정 전환은 「계정 전환 재시도 횟수」를 소모하며, 횟수를 다 써도 실패하면 오류가 그대로 클라이언트에 반환됩니다). 100–599 사이의 상태 코드를 입력하고 Enter를 누르면 추가되고, ×를 누르거나 백스페이스로 삭제합니다. 기본값은 402(크레딧 부족)입니다. 모두 비우면 모든 오류를 평소처럼 재시도합니다.", "品牌 Logo": "브랜드 로고", "品牌设置": "브랜드 설정", "品牌设置已保存": "브랜드 설정을 저장했습니다", "品牌预览": "브랜드 미리 보기", "哪些模型用这种方式": "이 방식을 쓸 모델", "固定": "고정", "图标经 Magpie 引入,未单独记录 Lobe Icons 的图标版本;以上版本仅用于核对许可。": "아이콘은 Magpie를 통해 도입되었습니다. Lobe Icons 아이콘 자체의 리비전은 별도로 기록되지 않았으며, 위 리비전은 라이선스 확인에만 사용되었습니다.", "图片与相关对话将交给配置的视觉模型处理,可能增加等待时间和费用。请确认这些服务可以接收你的图片。": "이미지와 관련 대화가 설정된 비전 모델로 전송되며 대기 시간과 비용이 늘어날 수 있습니다. 해당 서비스에 이미지를 보내도 되는지 확인하세요.", "图片兼容": "이미지 호환 처리", "图片兼容当前是关闭的:下面两块设置照样能改、会被保留,但不会对任何请求生效。": "이미지 호환이 현재 꺼져 있습니다. 아래 두 블록은 그대로 수정할 수 있고 유지되지만 어떤 요청에도 적용되지 않습니다.", "图片兼容设置已保存,仅对新请求生效。": "이미지 호환 설정을 저장했습니다. 새 요청에만 적용됩니다.", "图片兼容设置读取失败": "이미지 호환 설정을 불러오지 못했습니다", "图片压缩": "이미지 압축", "图片最长边超过这个值就等比缩小(只缩不放)。默认 2048,可填 256–8192 —— 多数视觉模型在这个量级已经够用,调小更省流量、但细节会丢。": "이미지의 긴 변이 이 값을 넘으면 비율을 유지해 축소합니다(확대하지 않음). 기본 2048, 256~8192까지 지정할 수 있습니다. 대부분의 비전 모델에는 이 크기면 충분하며, 작게 잡으면 트래픽은 줄지만 세부 묘사가 사라집니다.", "图片能力未知时": "이미지 지원 여부를 알 수 없을 때", "图片过大、格式错误或下载失败不会被当作模型不支持图片。": "이미지가 너무 크거나 형식이 잘못되었거나 내려받기에 실패한 경우는 모델이 이미지를 지원하지 않는 것으로 보지 않습니다.", "在同一个账号上原地重发几次(不含首发;整条请求共用一份,用完后换来的账号只发一次就继续换)。可填 0–10,0 表示失败立即换号。": "같은 계정에서 제자리로 재전송하는 횟수입니다(최초 전송은 제외. 요청 전체가 이 횟수를 공유하며, 소진 후 전환된 계정은 한 번만 보내고 다시 전환합니다). 0–10 입력 가능하며, 0이면 실패 시 즉시 계정을 전환합니다.", "在这里直接编辑提示词正文:保存后以这份文本为准(优先于上面的提示词文件),清空则回到文件 / 内置默认。改一个字不必再去编辑器里开文件。": "여기서 시스템 프롬프트 본문을 직접 편집합니다. 저장하면 이 텍스트가 우선하며(위의 시스템 프롬프트 파일보다 우선), 비우면 파일 / 내장 기본값으로 돌아갑니다. 한 글자만 고치려고 편집기에서 파일을 열 필요가 없습니다.", "在途请求": "처리 중 요청", "地址格式不对。填「IP 或域名:端口」,可带 http:// 或 https://,例如 192.168.1.23:3065": "주소 형식이 올바르지 않습니다. \"IP 또는 도메인:포트\"로 입력하세요 (http:// 또는 https:// 사용 가능). 예: 192.168.1.23:3065", "坚果云": "Jianguoyun(Nutstore)", "坚果云需使用「第三方应用密码」(账户信息 → 安全选项里生成),地址必须是 /dav/ 下的目录。": "Jianguoyun은 '타사 앱 비밀번호'(계정 정보 → 보안에서 생성)를 사용해야 하며, 주소는 /dav/ 아래 디렉터리여야 합니다.", "填「IP 或域名:端口」。协议可写 http:// 或 https://,不写默认 http;http 不写端口默认 3065,https 默认 443。地址里的 /m、/v1 会自动去掉。": "\"IP 또는 도메인:포트\"를 입력하세요. 프로토콜은 http:// 또는 https://를 쓸 수 있으며(생략 시 http), 포트를 생략하면 http는 3065, https는 443이 됩니다. 주소의 /m, /v1은 자동으로 제거됩니다.", "处理方式": "처리 방식", "处理示意": "처리 흐름", "备份中…": "백업 중…", "备份包含账号凭证、网关 Key、GitHub 令牌与云同步凭据的恢复密钥,整个文件受备份密码保护。请分开保管文件与密码;忘记密码无法恢复。": "백업에는 계정 자격 증명, 게이트웨이 Key, GitHub 토큰 및 클라우드 동기화 자격 증명의 복원 키가 포함되며 파일 전체가 백업 비밀번호로 보호됩니다. 파일과 비밀번호를 따로 보관하세요. 비밀번호를 잊으면 복원할 수 없습니다.", "备份密码": "백업 비밀번호", "备份密码不能超过 1024 字节": "백업 비밀번호는 1024바이트를 초과할 수 없습니다", "备份密码至少需要 12 位,建议使用较长且不重复的密码": "12자 이상이 필요하며 길고 재사용하지 않는 비밀번호를 권장합니다", "备份整库": "데이터베이스 백업", "备份文件内含全部账号凭证、网关 API Key 与面板管理员凭据,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "백업 파일에는 모든 계정 자격 증명, 게이트웨이 API 키, 패널 관리자 자격 증명이 들어 있어 그대로 로그인에 사용할 수 있습니다. 안전하게 보관하고 외부로 유출하거나 공개된 곳에 업로드하지 마세요.", "备选模型": "대체 모델", "复制全部信息": "모든 정보 복사", "复制给客户端": "클라이언트용으로 복사", "复用相同图片的识读结果": "동일한 이미지의 읽기 결과 재사용", "外观": "화면", "外观 · 接入 · 关于": "화면 · 연결 · 정보", "多个客户端标识冲突": "여러 클라이언트 식별 정보 충돌", "天": "일", "天数": "일수", "失败 {n} 个": "실패 {n}개", "失败 {n} 个:{detail}": "실패 {n}개: {detail}", "失败后最多再换几个账号试(填 N = 最多换 N 个,首发那个不算)。换到同一家名下另一个账号、或换到另一家,都各算一次;换满仍失败就返回错误。可填 0–10,0 表示失败立即报错。": "실패 후 최대 몇 개의 계정으로 더 시도할지 정합니다(N 입력 = 최대 N개 전환, 최초 계정은 제외). 같은 제공자의 다른 계정으로 바꾸거나 다른 제공자로 바꾸는 것 모두 1회로 계산하며, 횟수를 다 써도 실패하면 오류를 반환합니다. 0–10 입력 가능하며, 0이면 실패 시 즉시 오류를 반환합니다.", "存储桶(Bucket)": "버킷(Bucket)", "存储概况已刷新": "저장소 개요를 새로 고쳤습니다", "安全": "보안", "安装到主屏幕": "홈 화면에 추가", "安装到桌面": "앱으로 설치", "安装包形态": "설치 프로그램 종류", "完全相同": "완전 일치", "官方原文只有一句:声明自己是 ZCode。": "공식 원문은 한 문장뿐입니다: 자신이 ZCode임을 선언합니다.", "实际处理:": "실제 처리: ", "客户端 system 原样出站。": "클라이언트 system을 그대로 전송합니다.", "客户端 system 原样出站(只靠指纹脱敏改写模板句)。": "클라이언트 system을 그대로 전송합니다(핑거프린트 마스킹으로 템플릿 문구만 재작성).", "客户端专用请求头": "클라이언트 전용 헤더", "客户端名称": "클라이언트 이름", "客户端名称不能为空,最长 80 个字符": "클라이언트 이름을 80자 이내로 입력하세요", "客户端名称重复或与内置名称冲突": "클라이언트 이름이 중복되거나 내장 이름과 충돌함", "客户端标识无效或重复": "클라이언트 식별 정보가 잘못되었거나 중복됨", "客户端识别": "클라이언트 식별", "客户端识别入口尚未就绪,请刷新页面后重试": "클라이언트 식별 기능이 준비되지 않았습니다. 페이지를 새로고침한 뒤 다시 시도하세요.", "客户端识别设置读取失败": "클라이언트 식별 설정을 불러오지 못했습니다", "客户端(Claude Code / Codex 等 CLI)会在 system 提示词里注入几十句固定模板,上游按逐字匹配审核,命中就整单拦截(HTTP 400)。指纹脱敏能改写实测命中过的那几句,但换一个客户端版本就可能冒出新的。这里可以把 system 整段换成网关自己那份:①「透传」= 不动客户端 system(默认,行为与之前完全一致);②「替换」= 删掉客户端所有 system / developer 消息,换成网关的提示词(客户端项目规范随之消失);③「追加」= 在开头连续 system 块之后插入一条网关提示词,既有消息逐字不动(客户端规范与网关提示词并用)。那份提示词有两个来源:提示词文件(留空用内置默认),或直接在界面上编辑正文 —— 编辑过就以那份正文为准(优先于文件),清空则回到文件 / 内置默认。另外,透传 / 追加模式下撞了内容拦截(多半是指纹误报)时,网关会自动换一段最小中性提示词重试一次,并把「降级期」开到次日 00:00 —— 期间所有请求直接带中性提示词出门,不再先撞一次 400;这里能看见并提前解除它。上面几项是**默认值**:想给某个提供商单独配,用下面的「按提供商」加一行(带「网关自带」的家默认就列在那里)—— 不同的上游对这些内容的接受程度不一样。": "클라이언트(Claude Code / Codex 등 CLI)는 system 프롬프트에 수십 개의 고정 템플릿 문구를 주입하며, 업스트림은 글자 단위 일치로 검사해 걸리면 요청 전체를 차단합니다(HTTP 400). 핑거프린트 마스킹은 실측으로 걸렸던 몇 문장을 재작성할 수 있지만, 클라이언트 버전이 바뀌면 새로운 문구가 나타날 수 있습니다. 여기서는 system 전체를 게이트웨이의 것으로 바꿀 수 있습니다. ①「패스스루」= 클라이언트 system을 건드리지 않습니다(기본값, 이전과 동일한 동작). ②「교체」= 클라이언트의 모든 system / developer 메시지를 삭제하고 게이트웨이 시스템 프롬프트로 바꿉니다(클라이언트 프로젝트 규칙도 함께 사라집니다). ③「추가」= 맨 앞의 연속된 system 블록 뒤에 게이트웨이 시스템 프롬프트 한 건을 삽입하고 기존 메시지는 그대로 둡니다(클라이언트 규칙과 게이트웨이 시스템 프롬프트를 함께 사용). 이 시스템 프롬프트에는 두 가지 출처가 있습니다. 시스템 프롬프트 파일(비워 두면 내장 기본값 사용) 또는 화면에서 직접 본문 편집 — 편집한 경우 그 본문이 우선하며(파일보다 우선) 비우면 파일 / 내장 기본값으로 돌아갑니다. 또한 패스스루 / 추가 모드에서 콘텐츠 차단(대부분 핑거프린트 오탐)에 걸리면 게이트웨이가 자동으로 최소한의 중립 시스템 프롬프트로 한 번 재시도하고 「폴백 기간」을 다음 날 00:00까지 켭니다. 기간 중에는 모든 요청이 중립 시스템 프롬프트를 달고 나가며 400에 먼저 부딪히지 않습니다. 여기서 이 상태를 확인하고 미리 해제할 수 있습니다. 위 항목들은 **기본값**입니다. 특정 제공자에 따로 설정하려면 아래 「제공자별 설정」에서 행을 추가하세요(「게이트웨이 내장」이 있는 제공자는 기본으로 거기에 나열됩니다). 업스트림마다 이런 내용을 받아들이는 정도가 다릅니다.", "家之间仍按优先级,只有同一家内部轮流用各账号 —— 想优先用某几家、又不愿把某一家的某个账号焊死时用它。": "제공자 간에는 우선순위를 따르고, 같은 제공자 내에서만 계정이 순환합니다 — 몇몇 제공자를 우선하되 특정 계정에 고정하고 싶지 않을 때 사용합니다.", "家内轮询": "제공자 내 순환", "容器内更新": "컨테이너 내 업데이트", "密码、文件或密钥校验失败时不会替换主库;替换阶段失败会自动尝试还原,实际结果以上方错误说明为准。": "비밀번호, 파일 또는 키 검증에 실패하면 원본 데이터베이스는 변경되지 않습니다. 교체 단계에서 실패하면 자동 복구를 시도하며 실제 결과는 위 오류 설명에 표시됩니다.", "密码加密 · 包含恢复密钥": "비밀번호 암호화 · 복원 키 포함", "密码至少 8 位": "비밀번호는 8자리 이상", "对话里内嵌的 base64 大图(截图、照片)既撑大请求体,也拉高按像素折算的上游计费。开启后,网关在转发前把超过阈值的图等比缩到长边上限、重新存成 JPEG —— 只改发给上游的副本,请求日志里保存的仍是你发来的原图。同一张原图在多轮对话里重复出现时复用上一次的压缩结果,不会每轮重算。http 链接图片、GIF 动图、SVG 一律不动;压完反而更大的图也保留原图。只作用在对话场景,生图与图片编辑不受影响。默认开启;不想要的话把开关关掉即可。": "대화에 포함된 큰 base64 이미지(스크린샷, 사진)는 요청 본문을 키울 뿐 아니라 픽셀 기준으로 과금되는 상류 비용도 높입니다. 켜면 포워딩 전에 임계값을 넘는 이미지를 긴 변 한도까지 축소하고 JPEG으로 다시 인코딩합니다. 바뀌는 것은 상류로 보내는 사본뿐이며, 요청 로그에는 보낸 원본 이미지가 그대로 저장됩니다. 같은 원본 이미지가 여러 턴에 걸쳐 다시 실리면 이전 압축 결과를 재사용하고 매번 다시 계산하지 않습니다. http 링크 이미지, 애니메이션 GIF, SVG는 전혀 건드리지 않고, 다시 인코딩하면 오히려 커지는 이미지도 원본 그대로 둡니다. 대화에만 적용되며 이미지 생성과 편집에는 영향을 주지 않습니다. 기본값은 켜짐이며, 원하지 않으면 스위치를 끄면 됩니다.", "导入前会把本机的 account.key 改名备份(account.key.bak-时间戳),不会直接删除。": "가져오기 전에 로컬 account.key를 account.key.bak-<타임스탬프>로 이름을 바꿔 백업하며, 삭제하지는 않습니다.", "导入完成:{summary}": "가져오기 완료: {summary}", "导入密钥失败:{message}": "키 가져오기 실패: {message}", "导入密钥并继续": "키 가져오고 계속", "导入账号": "계정 가져오기", "导出中…": "내보내는 중…", "导出会把全部账号与自定义提供商定义写入一个 JSON 文件,可以拷到另一台机器上导入后继续使用。导入采用合并策略:同提供商下按业务身份(UID / userId / apiKey 等)去重 —— 已存在的账号只更新凭证,保留本机原有的优先级顺序;新账号追加到转发顺序末尾,不会抢占当前正在使用的账号;自定义提供商定义按 id 合并,本机缺失时自动补建。": "내보내기는 모든 계정과 커스텀 제공자 정의를 하나의 JSON 파일에 기록하며, 다른 컴퓨터로 복사해 가져온 뒤 계속 사용할 수 있습니다. 가져오기는 병합 방식을 사용합니다. 같은 제공자 아래에서는 비즈니스 신원(UID / userId / apiKey 등)으로 중복을 제거합니다. 이미 있는 계정은 자격 증명만 업데이트하고 이 컴퓨터의 기존 우선순위 순서를 유지하며, 새 계정은 포워딩 순서 끝에 추가되어 현재 사용 중인 계정을 밀어내지 않습니다. 커스텀 제공자 정의는 id 기준으로 병합하고, 이 컴퓨터에 없으면 자동으로 생성합니다.", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义": "내보내기 파일에 accessToken / refreshToken / apiKey 등 자격 증명과 커스텀 제공자 정의가 포함됩니다", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "내보내기 파일에는 accessToken / refreshToken / apiKey 등 자격 증명과 커스텀 제공자 정의가 포함되어 있으며, 바로 로그인에 사용할 수 있습니다. 안전하게 보관하고 외부에 전달하거나 공공장소에 업로드하지 마세요.", "导出账号": "계정 내보내기", "将数据库和恢复凭证所需的密钥一起保存为密码加密的 .a2ab 备份,可在 Windows、macOS 或 Linux 上恢复,无需手工复制密钥。恢复时整体替换账号、配置、日志与桌面设置,并使用目标机器的密钥重新加密凭证,不覆盖本机已有钥匙。可取消包含日志以减小文件;旧 .sql 备份仍可导入。恢复前自动保留安全备份,完成后需要重新登录管理面板。": "데이터베이스와 복원 키를 비밀번호로 암호화한 .a2ab 백업에 저장해 Windows, macOS 또는 Linux에서 키를 수동 복사하지 않고 복원합니다. 계정, 구성, 로그와 데스크톱 설정을 전체 교체하고 대상 기기의 키로 자격 증명을 다시 암호화합니다. 기존 키는 덮어쓰지 않습니다. 로그를 제외해 용량을 줄일 수 있으며 기존 .sql 가져오기도 지원합니다. 교체 전 안전 백업을 보관하고 완료 후 다시 로그인해야 합니다.", "尚未注册管理员。开启「网关 → 网络访问 → 允许其他设备访问网关」时会引导注册,也可以从登录页注册。": "아직 관리자가 등록되지 않았습니다. 「게이트웨이 → 네트워크 접근 → 다른 기기의 게이트웨이 접근 허용」을 켜면 등록 안내가 표시됩니다. 로그인 페이지에서도 등록할 수 있습니다.", "尚未注册管理员:管理接口不需要登录。开启「允许局域网访问」时会引导注册,也可以从登录页注册。": "관리자가 등록되지 않았습니다: 관리 API에는 로그인이 필요하지 않습니다. \"LAN 액세스 허용\"을 켜면 등록으로 안내되며, 로그인 페이지에서도 등록할 수 있습니다.", "尚未配置视觉分析模型": "시각 분석 모델이 설정되지 않았습니다", "局域网开放后,管理接口要求登录。请设置管理员账号与密码,注册完成会直接继续开启流程。": "LAN에 공개하면 관리 인터페이스가 로그인을 요구합니다. 관리자 계정과 비밀번호를 설정하세요. 등록이 완료되면 바로 이어서 활성화 절차가 진행됩니다.", "局域网访问": "LAN 접근", "工具用法与环境说明那一大段。": "도구 사용법과 환경 설명에 해당하는 긴 단락입니다.", "已为「{label}」单独配置提示词": "「{label}」에 시스템 프롬프트를 개별 설정했습니다", "已作为独立应用运行": "독립 앱으로 실행 중", "已使用本机密钥重新加密 {n} 项凭证,原有密钥未被覆盖。": "자격 증명 {n}개를 로컬 키로 다시 암호화했습니다. 기존 키는 덮어쓰지 않았습니다.", "已保存 {count} / {limit} 条报文(超出后丢弃最旧的)。": "메시지 {count} / {limit}건을 저장했습니다(초과분은 오래된 것부터 버립니다).", "已保存的值不符合当前插件规则,请修改或恢复默认值。": "저장된 값이 현재 플러그인 규칙에 맞지 않습니다. 수정하거나 기본값을 복원하세요.", "已保存,留空则不修改": "저장됨. 비워 두면 변경하지 않습니다", "已保存,留空沿用": "저장됨, 비워 두면 유지", "已关闭": "꺼짐", "已关闭 models.dev 联网刷新": "models.dev 온라인 갱신을 껐습니다", "已关闭。{note}": "꺼짐. {note}", "已关闭「{label}」的网关自带提示词:能否通过上游校验取决于上游当前口径": "「{label}」의 게이트웨이 내장 시스템 프롬프트를 껐습니다: 업스트림 검증 통과 여부는 업스트림의 현재 기준에 따라 달라집니다", "已关闭会话图片压缩": "이미지 압축을 껐습니다", "已关闭出站指纹脱敏": "아웃바운드 핑거프린트 마스킹을 껐습니다", "已关闭开发者角色兼容": "개발자 역할 호환이 꺼졌습니다", "已关闭第三方模型回答完自动折叠过程": "타사 모델의 답변 후 과정 자동 접기를 껐습니다", "已关闭网关跨域访问": "게이트웨이 CORS 접근을 껐습니다", "已关闭:不额外补阶段标记,由客户端决定过程展示。": "꺼짐: 단계 표시를 추가하지 않으며 과정 표시는 클라이언트가 결정합니다.", "已删除分组「{name}」": "그룹 \"{name}\"을(를) 삭제했습니다", "已取消「{label}」的单独配置": "「{label}」의 개별 설정을 취소했습니다", "已取消安装": "설치를 취소했습니다", "已取消导入": "가져오기를 취소했습니다", "已取消导出": "내보내기를 취소했습니다", "已取消恢复": "복원이 취소되었습니다", "已启用 {count} 条规则,应用于{scope}。": "규칙 {count}개 활성화, 적용 대상: {scope}.", "已启用登录": "로그인 사용 중", "已复制全部版本信息": "모든 버전 정보를 복사했습니다", "已应用": "반영됨", "已开启": "켜짐", "已开启:为正常完成的 Codex 回答补阶段标记。": "켜짐: 정상 완료된 Codex 답변에 단계 표시를 추가합니다.", "已开启:其他设备把 API 地址指向 {url}{panel}。": "켜짐: 다른 기기에서 API 주소를 {url}(으)로 지정하면 됩니다{panel}.", "已开启:监听 0.0.0.0,允许其他设备访问。": "켜짐: 0.0.0.0에서 수신하여 다른 기기의 접근을 허용합니다.", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "기본 그룹으로 복원했습니다: 개요 / 전달 경로 / 진단 / 시스템", "已截断": "잘림", "已指定出口": "출구 지정됨", "已接管": "인계됨", "已改回内置默认提示词": "내장 기본 시스템 프롬프트로 되돌렸습니다", "已新建分组「{name}」,点组头的 + 把菜单移进来": "그룹 \"{name}\"을(를) 만들었습니다. 머리의 +로 메뉴를 가져오세요", "已清掉「{label}」界面编辑的正文": "「{label}」의 화면 편집 본문을 삭제했습니다", "已清掉界面编辑的提示词(回落文件 / 内置默认)": "화면에서 편집한 시스템 프롬프트를 삭제했습니다(파일 / 내장 기본값으로 폴백)", "已清除本机保存的 API Key": "이 브라우저에 저장된 API Key를 삭제했습니다", "已生效": "적용됨", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。": "최소 중립 프롬프트로 자동 전환했습니다(업스트림 콘텐츠 차단에 걸린 것으로, 대부분 system 지문 오탐입니다). {until} 에 자동 해제됩니다.", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "최소 중립 시스템 프롬프트로 자동 전환했습니다(업스트림 콘텐츠 차단에 걸렸으며 대부분 system 핑거프린트 오탐입니다). {until}에 자동 해제됩니다. 기간 중에는 이 모드의 시스템 프롬프트가 전송되지 않습니다. 시스템 프롬프트를 수정한 뒤 즉시 해제할 수 있습니다.", "已自定义": "사용자 지정됨", "已运行": "가동 시간", "已退出登录": "로그아웃했습니다", "已隐藏": "숨김", "巴西葡萄牙语": "브라질 포르투갈어", "希望接入新的提供商或模型": "새 제공자나 모델 연동을 원함", "库中 schema": "DB 내 schema", "库主文件的大小(不含运行期间的 WAL 临时文件,退出时已自动并回)。": "DB 본체 파일의 크기입니다(실행 중의 WAL 임시 파일은 포함하지 않으며, 종료 시 자동으로 병합됩니다).", "库存目标": "재고 목표", "应用提供商": "적용 제공자", "应用版本:{version}": "앱 버전: {version}", "应用状态": "앱 상태", "应用窗口": "앱 창", "建立上游 TCP/TLS 连接或代理隧道的最大等待时间(秒),默认 30 秒,范围 1~3600。": "업스트림 TCP/TLS 연결 또는 프록시 터널을 설정할 때 기다리는 최대 시간(초). 기본 30초, 범위 1~3600.", "开发构建": "개발 빌드", "开发者角色兼容": "developer 역할 호환", "开发者角色兼容设置已刷新": "개발자 역할 호환 설정이 새로 고쳐졌습니다", "开启前需要注册面板管理员,已注册会跳过此步骤。管理接口需要管理员会话或网关 Key;API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。": "켜기 전에 패널 관리자를 등록해야 하며, 이미 등록된 경우 이 단계를 건너뜁니다. 관리 API에는 관리자 세션 또는 게이트웨이 키가 필요합니다. API 호출에는 활성화된 게이트웨이 키가 필요하며, 없으면 기본 키를 자동으로 생성합니다.", "开启后新发生的请求才会被记录(已经过去的请求补不回来)。报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "켠 이후에 발생한 요청만 기록됩니다(과거 요청은 소급되지 않음). 페이로드는 로컬 데이터베이스에 저장되며 최근 500 건만 유지합니다(초과분은 오래된 것부터 버림). 건수는 왼쪽 \"데이터 → 데이터 저장\"의 \"디버그 페이로드\"에서 볼 수 있습니다.", "开启后新发生的请求才会被记录(已经过去的请求补不回来),请求日志的「预览对话」也随之开始保存原始正文。上游报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "켜면 이후 새로 발생하는 요청만 기록됩니다(이미 지나간 요청은 소급 기록되지 않습니다). 요청 로그의 「대화 미리보기」도 이때부터 원문을 저장하기 시작합니다. 업스트림 메시지는 로컬 데이터베이스에 통합 저장되며 최근 500건만 보관합니다(초과분은 오래된 것부터 버립니다). 건수는 왼쪽 「데이터 → 데이터 저장」의 「디버그 메시지」에서 확인할 수 있습니다.", "开启后监听所有 IPv4 网卡(0.0.0.0),并不局限于局域网,也不会自动开放到公网;实际访问范围取决于网络与防火墙设置。修改后需要重启应用。": "켜면 모든 IPv4 인터페이스(0.0.0.0)에서 수신합니다. 접근 범위는 LAN으로 제한되지 않지만 인터넷에 자동으로 공개되지는 않습니다. 실제 접근 범위는 네트워크와 방화벽 설정에 따라 달라집니다. 변경 후 앱을 다시 시작해야 합니다.", "开启后网关将监听所有 IPv4 网卡(0.0.0.0),访问范围不再限于本机,也不局限于局域网。是否能从公网访问取决于网络与防火墙设置。": "게이트웨이가 모든 IPv4 인터페이스(0.0.0.0)에서 수신합니다. 접근 범위는 이 기기나 LAN으로 제한되지 않습니다. 인터넷에서 접근할 수 있는지는 네트워크와 방화벽 설정에 따라 달라집니다.", "开启后网关将监听所有网卡,同一局域网内的设备即可把 API 地址指向本机 IP 一起使用;管理接口从此要求管理员会话或网关 Key,转发接口在没有一把启用的 Key 时也会拒绝服务(届时会自动创建一把名为「默认」的 Key)。": "켜면 게이트웨이가 모든 네트워크 인터페이스를 수신하며, 같은 LAN의 기기에서 API 주소를 로컬 IP로 지정해 함께 사용할 수 있습니다. 관리 인터페이스는 이때부터 관리자 세션 또는 게이트웨이 키를 요구하고, 포워딩 인터페이스도 활성화된 키가 하나도 없으면 서비스를 거부합니다(이때 「기본」이라는 키가 자동 생성됩니다).", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 套餐池(Start Plan)」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "켜면 창을 닫는 것이 단순히 숨기는 것이 아니라 UI 창 전체를 파괴합니다: 상주하는 6개의 WebView2 프로세스(약 200MB 메모리)가 종료되고, 게이트웨이 포워딩·예정된 체크인·잔액 조회는 백그라운드 프로세스에서 영향 없이 계속됩니다; UI가 필요하면 트레이 아이콘을 클릭해 다시 엽니다(WebView 콜드 스타트 약 1초). 주의: UI가 파괴된 동안 ZCode \"플랜 풀 (Start Plan)\" 채널의 캡차 토큰은 UI가 생성하므로 보충할 수 없으며, 해당 채널의 요청은 사유와 함께 503으로 요청 로그에 기록됩니다. UI를 다시 열면 자동으로 복구됩니다. 이 스위치는 \"닫을 때 트레이로 최소화\"가 켜져 있을 때만 의미가 있으며, 최소화된 창에는 영향이 없습니다.", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 活动套餐」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "켜면 창을 닫을 때 단순히 숨기는 것이 아니라 인터페이스 창을 통째로 파괴합니다. 기반이 되는 WebView2 상주 프로세스 6개(약 200MB 메모리)도 함께 종료되며, 게이트웨이 포워딩, 예약 출석 체크, 잔액 조회는 백그라운드 프로세스에서 계속 실행되어 영향을 받지 않습니다. 인터페이스가 필요하면 트레이 아이콘을 클릭해 다시 열면 됩니다(WebView 콜드 스타트 약 1초). 주의: 인터페이스가 파괴된 동안 「ZCode 활동 요금제」 채널의 인증 코드 토큰은 인터페이스가 발급하므로 보충할 수 없습니다. 이 채널을 사용하는 요청은 503으로 요청 로그에 기록되며(사유 표시), 인터페이스를 다시 열면 자동으로 복구됩니다. 이 스위치는 「창을 닫을 때 트레이로 최소화」가 켜져 있을 때만 의미가 있으며, 창 최소화는 영향을 받지 않습니다.", "开启后,关闭窗口会销毁界面并释放 WebView 进程,网关转发、定时签到、余额查询仍在后台继续。ZCode 模型请求免验证时不受影响;上游要求人机验证时,需要重新打开界面,在账号的「套餐明细」中主动完成验证。此开关只在「关闭窗口时最小化到托盘」开启时有意义。": "활성화하면 창을 닫을 때 화면과 WebView 프로세스를 해제합니다. 요청 전달, 예약 출석 및 잔액 조회는 백그라운드에서 계속됩니다. 인증이 필요 없는 ZCode 요청에는 영향이 없습니다. 인증이 필요하면 화면을 다시 열고 계정의 「플랜 상세」에서 완료하세요. 창을 닫을 때 트레이로 최소화하는 설정이 켜져 있을 때만 적용됩니다.", "开启后,新发生的请求会保存上游调试报文与下游正文,历史请求无法补录。上游调试报文只保留最近 500 条;两侧条数可在「数据 → 数据存储」查看。关闭开关不会删除已保存的报文,可在请求日志中选择「仅清空报文原文」一起清理。": "켜면 새 요청의 업스트림 디버그 페이로드와 다운스트림 본문을 저장합니다. 이전 요청은 복원할 수 없습니다. 업스트림 디버그 페이로드는 최근 500건만 보관합니다. 양쪽 건수는 데이터 → 데이터 저장소에서 확인할 수 있습니다. 끄더라도 저장된 페이로드는 삭제되지 않습니다. 요청 로그에서 원문만 비우기를 선택하면 양쪽을 함께 정리할 수 있습니다.", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。": "켜면 로그인 페이지가 브라우저 백그라운드에서 자동으로 검증을 완료합니다(실제 사람은 느낄 수 없음). 반면 스크립트는 시도할 때마다 문제를 풀어야 하므로 무차별 대입 공격과 선점 등록의 비용이 크게 올라갑니다. 패널의 로그인 / 가입에만 영향을 주며 API 클라이언트의 API Key와는 무관합니다.", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。桌面端与网页端各自独立:桌面端主要服务本机与局域网,网页端(Docker / 服务端)直接暴露在网络上的登录页风险更高,建议保持开启。": "켜면 로그인 페이지가 백그라운드에서 인증을 마칩니다(사람에게는 보이지 않음). 반면 스크립트 시도는 매번 문제를 하나 풀어야 하므로 무차별 대입과 계정 선점 비용이 크게 올라갑니다. 패널의 로그인 / 등록에만 영향을 주며 API 클라이언트의 API Key와는 무관합니다. 데스크톱과 웹은 서로 독립적입니다. 데스크톱은 주로 이 컴퓨터와 LAN을 대상으로 하고, 웹(Docker / 서버)은 네트워크에 노출되므로 켜 두는 것을 권장합니다.", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "켜면 게이트웨이가 전송마다 **업스트림으로 보낸 요청**(헤더 + 본문)과 **업스트림이 돌려준 응답**(상태 코드 + 헤더 + 본문)을 로컬에 통째로 저장해 요청 로그 페이지의 \"상세\"에서 볼 수 있게 합니다. 요청 헤더의 Authorization, Cookie, API 키 등 자격 증명 필드는 모두 [redacted] 로 대체되어 평문으로 저장되지 않으며, 요청 / 응답 본문은 원본 그대로 저장됩니다(대화 내용이 포함될 수 있음). 페이로드는 최근 500 건만 유지하고 초과분은 오래된 것부터 버립니다. 문제 해결용 임시 스위치이므로 필요 없을 때는 끄는 것을 권장합니다.", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看;请求日志详情的「预览对话」也依赖本开关 —— 它保存的是客户端发来的请求体与网关下发的响应体(两侧各截断到 128 KiB),不开这个开关时预览对话没有数据可看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。上游报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "켜면 게이트웨이가 각 전달 시 **업스트림으로 보낸 요청**(요청 헤더 + 요청 본문)과 **업스트림이 반환한 응답**(상태 코드 + 응답 헤더 + 응답 본문)을 로컬에 그대로 저장하여 요청 로그 페이지의 「상세」에서 볼 수 있게 합니다. 요청 상세의 「대화 미리보기」도 이 스위치에 의존합니다 —— 저장되는 것은 클라이언트가 보낸 요청 본문과 게이트웨이가 내려보낸 응답 본문(각각 128 KiB로 잘림)이며, 스위치가 꺼져 있으면 미리 볼 데이터가 없습니다. 요청 헤더의 Authorization, Cookie, API Key 등 자격 증명 필드는 모두 [redacted]로 치환되어 평문으로 디스크에 기록되지 않습니다. 요청 본문과 응답 본문은 원본 그대로 저장됩니다(대화 내용이 포함될 수 있습니다). 업스트림 메시지는 최근 500건만 보관하며 초과분은 오래된 것부터 버립니다. 장애 진단용 임시 스위치이므로 필요 없으면 끄는 것을 권장합니다.", "开启后,能连接到网关的设备可通过浏览器访问网页管理面板,需使用管理员账号登录。访问范围与网关相同,并不局限于局域网。": "켜면 게이트웨이에 연결할 수 있는 기기에서 브라우저로 웹 관리 패널에 접근하고 관리자 계정으로 로그인할 수 있습니다. 접근 범위는 게이트웨이와 같으며 LAN으로 제한되지 않습니다.", "开启后,调用方可以用专用请求头声明已登记的客户端名称。这不是身份认证,只用于日志和统计,不会获得额外权限。": "켜면 호출자가 전용 헤더로 등록된 클라이언트 이름을 선언할 수 있습니다. 인증 기능이 아니며 로그와 통계에만 사용되고 추가 권한을 부여하지 않습니다.", "开启局域网访问": "LAN 접근 켜기", "开启来源声明": "출처 선언 켜기", "开启网络访问": "네트워크 접근 켜기", "开放后,局域网内其他设备的浏览器打开本机 IP 即可进入管理面板(需管理员账号登录)。": "공개하면 LAN 내 다른 기기의 브라우저에서 로컬 IP를 열면 관리 패널에 들어갈 수 있습니다(관리자 계정 로그인 필요).", "开机自动启动": "자동 시작", "开源许可": "오픈 소스 라이선스", "开(最多 {n} 轮)": "켜짐(최대 {n}회)", "归属客户端": "분류할 클라이언트", "当前三段都是官方原文。": "현재 세 단락 모두 공식 원문입니다.", "当前不可用": "현재 사용할 수 없음", "当前后端不支持词表编辑与提供商范围,请更新后端后重试。": "현재 백엔드는 규칙 편집과 제공자 범위를 지원하지 않습니다. 백엔드를 업데이트한 후 다시 시도하세요.", "当前固定为浅色模式,不随系统变化。": "현재 라이트 모드로 고정되어 있으며 시스템 설정을 따르지 않습니다.", "当前固定为深色模式,不随系统变化。": "현재 다크 모드로 고정되어 있으며 시스템 설정을 따르지 않습니다.", "当前密码": "현재 비밀번호", "当前已改过:{edited}。": "현재 수정된 단락: {edited}.", "当前形态": "실행 형태", "当前按 100% 显示(默认比例)。": "현재 100%로 표시됩니다(기본 비율).", "当前按 k / M 缩写显示(如 1.20M / 8.4k)。": "현재 k / M 축약으로 표시됩니다(예: 1.20M / 8.4k).", "当前按 {n}% 显示。": "현재 {n}%로 표시됩니다.", "当前按「万 / 亿」式本地量级词显示(如 1.2亿 / 8400万)。": "현재 「만 / 억」 단위의 로컬 규모 단어로 표시됩니다(예: 1.2억 / 8400만).", "当前是透传模式:存下来也不会发出,切成「替换 / 追加」之后才生效。": "현재 패스스루 모드입니다. 저장해도 전송되지 않으며, 「교체 / 추가」로 전환한 후에 적용됩니다.", "当前显示为「1.20M / 8.4k / 1.2B」这类英文缩写。": "현재 \"1.20M / 8.4k / 1.2B\" 같은 영문 약어로 표시 중입니다.", "当前显示为「1.2亿 / 8400万」这类中文量级。": "현재는 \"1.2억 / 8400만\" 같은 중국어 단위 표기로 표시됩니다.", "当前样本结果:{name}": "현재 샘플 결과: {name}", "当前正在使用": "현재 사용 중", "当前浏览器以管理员身份登录着本面板。「退出登录」会撤销这台设备的登录会话(30 天内的自动续期一并失效),需要重新输入账号密码;其他已登录的设备不受影响。": "현재 브라우저가 관리자로 이 패널에 로그인되어 있습니다. 「로그아웃」은 이 기기의 로그인 세션을 해제하며(30일 이내의 자동 갱신도 함께 무효화), 계정과 비밀번호를 다시 입력해야 합니다. 이미 로그인한 다른 기기는 영향을 받지 않습니다.", "当前版本不支持品牌设置": "현재 버전은 브랜드 설정을 지원하지 않습니다", "当前环境不支持局域网访问设置": "현재 환경에서는 LAN 접근 설정을 지원하지 않습니다", "当前环境不支持整库备份": "이 환경에서는 전체 DB 백업을 지원하지 않습니다", "当前环境不支持整库备份(仅桌面端可用)": "이 환경에서는 전체 DB 백업을 지원하지 않습니다(데스크톱 전용)", "当前环境不支持整库恢复": "이 환경에서는 전체 DB 복원을 지원하지 않습니다", "当前环境不支持整库恢复(仅桌面端可用)": "이 환경에서는 전체 DB 복원을 지원하지 않습니다(데스크톱 전용)", "当前环境不支持网络访问设置": "현재 환경에서는 네트워크 접근 설정을 지원하지 않습니다", "当前环境不支持读取版本信息(桥接方法缺失)": "이 환경에서는 버전 정보를 읽을 수 없습니다(브리지 메서드 없음)", "当前生效值:{value}": "현재 적용 값: {value}", "当前生效的正文来自{source}{file}。保存后这一份会盖过提示词文件与内置默认{note}。": "현재 적용 중인 본문은 {source}에서 가져옵니다{file}. 저장하면 이 본문이 시스템 프롬프트 파일과 내장 기본값을 덮어씁니다{note}.", "当前界面": "현재 화면", "当前管理员:{name}": "현재 관리자: {name}", "当前设置已保存": "현재 설정이 저장되었습니다", "当前跟随操作系统的深浅色设置,系统切换时界面会自动跟上。": "현재 운영 체제의 라이트/다크 설정을 따르며, 시스템이 전환되면 인터페이스도 자동으로 따라갑니다.", "当前路由内的可用视觉模型": "현재 라우트에서 사용 가능한 비전 모델", "待迁移旧数据": "이전 대기 중인 레거시 데이터", "待配置": "미설정", "忘记密码时无法在界面里找回:需要停掉程序后,从数据库删除管理员记录(kv 表的 panelAdmin 键),重启后按首次使用重新注册。具体命令与各形态的库文件路径见 docs 目录下的「重置管理员」文档。": "비밀번호를 잊으면 화면에서 복구할 수 없습니다. 프로그램을 중지한 뒤 데이터베이스에서 관리자 레코드(kv 테이블의 panelAdmin 키)를 삭제하고, 재시작 후 최초 사용처럼 다시 등록하세요. 구체적인 명령과 형태별 데이터베이스 경로는 docs의 \"관리자 재설정\" 문서를 참고하세요.", "思考等级、图片能力未知、等待上限": "사고 수준, 이미지 지원 불명, 대기 상한", "恢复中…": "복원 중…", "恢复失败:{message}": "복원 실패: {message}", "恢复官方原文": "공식 원문으로 복원", "恢复插件默认值": "플러그인 기본값 복원", "恢复整库": "데이터베이스 복원", "恢复整库备份": "전체 백업 복원", "恢复默认": "기본값으로 복원", "恢复默认 Logo": "기본 로고로 복원", "恢复默认侧边栏": "사이드바 기본값 복원", "恢复默认品牌": "기본 브랜드로 복원", "恢复默认词表": "기본 규칙 복원", "想回到原来那份,把这里清空再保存即可(不会删掉你配的文件路径)。": "원래 본문으로 돌아가려면 여기를 비우고 저장하면 됩니다(설정한 파일 경로는 삭제되지 않습니다).", "想要的新功能或改进想法": "원하는 새 기능이나 개선 아이디어", "所有未单独配置的提供商都用这一份": "개별 설정하지 않은 모든 제공자가 이 설정을 사용합니다", "所有菜单都已在这一组": "모든 메뉴가 이미 이 그룹에 있습니다", "手机端可管理所连接网关的账号、签到与插件,并使用提供商声明的动态登录入口;其余既有添加入口、编辑凭证和改写客户端配置仍需桌面面板。": "모바일 앱에서 연결된 게이트웨이의 계정, 출석, 플러그인을 관리하고 제공업체가 선언한 동적 로그인 방식을 사용할 수 있습니다. 그 밖의 기존 계정 추가 기능, 인증 정보 편집, 클라이언트 설정 변경은 데스크톱 패널이 필요합니다.", "托管网页界面": "웹 UI 제공", "把地址里的 your-server 与 USERNAME 换成你自己的;目录不存在时会自动创建。": "주소의 your-server와 USERNAME을 자신의 값으로 바꾸세요. 디렉터리가 없으면 자동으로 만듭니다.", "把整份数据库(账号、网关配置、事件日志、请求统计、调试报文与桌面设置)导出成一个 SQL 文件,恢复时整体替换本机全部数据 —— 与上面「账号导入 / 导出」的逐条合并是两种语义:恢复会连配置、日志与当前启用状态一起换成备份那台机器的状态。导出默认包含日志与调试报文(文件可能很大),不需要时可以取消勾选只备业务数据。恢复前会自动把当前数据备份到配置目录的 backups/ 下,恢复后需要重新登录管理面板。": "데이터베이스 전체(계정, 게이트웨이 설정, 이벤트 로그, 요청 통계, 디버그 페이로드, 데스크톱 설정)를 SQL 파일 하나로 내보내고, 복원 시 이 PC의 모든 데이터를 통째로 교체합니다 — 위의 \"계정 가져오기 / 내보내기\"의 건별 병합과는 다른 의미입니다. 복원은 설정, 로그, 활성화 상태까지 백업한 그 PC의 상태로 바꿔치기합니다. 내보내기는 기본적으로 로그와 디버그 페이로드를 포함하며(파일이 커질 수 있음), 필요 없으면 체크를 해제해 업무 데이터만 백업할 수 있습니다. 복원 직전에 현재 데이터를 설정 디렉터리의 backups/ 에 자동 백업하며, 복원 후에는 패널에 다시 로그인해야 합니다.", "把整次请求交给视觉模型,由它直接回答,不再回到原模型。": "요청 전체를 비전 모델에 넘겨 원래 모델로 돌아가지 않고 바로 답합니다.", "把菜单移入 {name}": "메뉴를 {name}(으)로 이동", "把菜单移入「{name}」": "메뉴를 \"{name}\"(으)로 이동", "把账号、网关配置、自定义提供商、Agent 配置、代理池 / 订阅、签到与余额记录同步到 WebDAV 或 S3 兼容存储,换台机器后一键取回。事件日志、请求明细、调试报文与面板登录态不在同步范围内(它们是本机的运行痕迹)。上传的账号凭证仍是加密形态,解密用的账号密钥由「同步密码」单独加密后一并上传 —— 同步密码不会保存到云端,换机下载时需要重新输入。": "계정, 게이트웨이 설정, 사용자 지정 공급자, Agent 설정, 프록시 풀/구독, 체크인 및 잔액 기록을 WebDAV 또는 S3 호환 스토리지에 동기화하고 다른 컴퓨터에서 한 번에 복원합니다. 이벤트 로그, 요청 상세, 디버그 패킷, 패널 로그인 상태는 대상이 아닙니다(이 컴퓨터의 실행 기록입니다). 업로드되는 계정 자격 증명은 암호화된 상태로 유지되며, 이를 복호화하는 계정 키는 '동기화 비밀번호'로 별도 암호화해 함께 업로드합니다. 동기화 비밀번호는 클라우드에 저장되지 않으므로 다른 컴퓨터에서 복원할 때 다시 입력해야 합니다.", "把路径里的主目录显示成 ~,截图分享时不暴露用户名": "경로의 홈 디렉터리를 ~ 로 표시해 캡처를 공유할 때 사용자 이름이 드러나지 않게 합니다", "把路径里的主目录(如 C:\\Users\\你的用户名)显示成 ~,截图分享时不暴露用户名。只影响本页显示与复制,不改任何文件。": "경로의 홈 디렉터리(예: C:\\Users\\사용자이름)를 ~ 로 표시해 캡처를 공유할 때 사용자 이름이 드러나지 않게 합니다. 이 페이지 표시와 복사에만 영향을 주며 파일은 변경하지 않습니다.", "报表天数": "리포트 일수", "报表页的热力图与按天趋势,默认 99999 天(近似全量保留),可填 1–99999 天。": "리포트 페이지의 히트맵과 일별 추세. 기본 99999일(거의 전체 보관)이며 1~99999일까지 입력할 수 있습니다.", "拖动分组 {name}": "그룹 {name} 끌기", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "왼쪽 ⠿를 끌어 순서를 바꾸세요(메뉴는 그룹 간 이동 가능). 스위치로 표시/숨김, 그룹 이름을 클릭해 이름 변경, 그룹 머리의 +로 다른 메뉴를 가져오기, 눈 버튼으로 그룹 전체 숨기기. 변경은 즉시 적용·저장되며 왼쪽 사이드바가 결과입니다. 키보드: 핸들에 포커스 후 Alt+↑ / ↓.", "拖动菜单 {name}": "메뉴 {name} 끌기", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "끌어서 그룹 순서 변경(Alt+↑ / ↓ 도 가능)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "끌어서 순서 변경, 그룹 간 이동 가능(Alt+↑ / ↓ 도 가능)", "指定备选仍受当前请求权限和路由范围限制,路由组请求不会跳到组外。不会转为辅助识图继续。": "지정한 예비 모델에도 현재 권한과 라우트 범위 제한이 적용됩니다. 라우트 그룹 밖으로 나가지 않으며 보조 이미지 읽기로 전환하지 않습니다.", "指定提供商": "선택한 제공자", "指定角色": "선택한 역할", "指定错误码直接换号": "지정 오류 코드 즉시 계정 전환", "指纹脱敏": "지문 마스킹", "指纹脱敏会在转发前按词表顺序改写请求消息中的文本,包括对话内容、思考内容和工具调用参数。默认词表包含客户端模板句与计费表头的精确替换、正则删除规则,可以新增、编辑、删除、启停和调整顺序;替换内容留空表示删除匹配内容。默认应用全部提供商,也可指定多家。改动只作用于发给上游的副本,响应内容不变。编辑后点击「保存设置」,下一次请求生效;清空词表表示不做任何指纹改写,恢复默认只重置词表。": "전달 전에 규칙 순서대로 요청 메시지의 텍스트를 수정합니다. 대화 내용, 추론 내용, 도구 호출 인수가 대상입니다. 기본 규칙은 클라이언트 템플릿 문장과 과금 헤더의 정확한 텍스트 치환 및 정규식 삭제를 포함합니다. 규칙을 추가, 편집, 삭제, 활성화, 비활성화하거나 순서를 변경할 수 있습니다. 치환 내용을 비우면 일치 부분을 삭제합니다. 기본적으로 모든 제공자에 적용하며 여러 제공자를 지정할 수도 있습니다. 업스트림으로 보내는 사본만 수정하고 응답은 변경하지 않습니다. 설정 저장을 누르면 다음 요청부터 적용됩니다. 빈 규칙 목록은 아무 내용도 수정하지 않으며 기본값 복원은 규칙만 초기화합니다.", "指纹脱敏设置仅本次运行生效,写入数据库失败,请检查配置目录": "설정은 이번 실행 중에만 적용됩니다. 데이터베이스 기록에 실패했습니다. 설정 디렉터리를 확인하세요.", "指纹脱敏设置已刷新": "핑거프린트 마스킹 설정을 새로 고쳤습니다", "按下面两块设置处理图片;关闭后设置全部保留。": "아래 두 블록의 설정으로 이미지를 처리합니다. 끄더라도 설정은 모두 남습니다.", "按原文精确匹配,区分大小写;不会自动去掉首尾空白。": "대소문자를 구분하여 원문과 정확하게 일치시킵니다. 앞뒤 공백은 제거하지 않습니다.", "按天聚合保留天数": "일일 집계 보존 일수", "按指定备选顺序尝试": "지정한 예비 모델을 순서대로 시도", "按提供商查看和调整专属选项": "제공자별 전용 옵션 확인 및 조정", "按提供商筛选设置": "제공자별 설정 필터", "按提供商管理专属选项,作用于当前网关中该提供商的所有账号。": "제공자별 전용 옵션을 관리합니다. 변경 사항은 현재 게이트웨이에 있는 해당 제공자의 모든 계정에 적용됩니다.", "按提供商配置": "제공자별 설정", "按每条请求的软件标识识别客户端,不依赖 API Key。规则修改只影响新请求,内置规则随软件更新,自定义规则参与备份与云同步。": "API Key와 무관하게 각 요청의 소프트웨어 식별 정보로 구분합니다. 규칙 변경은 새 요청에만 적용됩니다. 내장 규칙은 앱과 함께 업데이트되고 사용자 규칙은 백업 및 클라우드 동기화에 포함됩니다.", "换一台服务器": "다른 서버로 전환", "排队等待": "큐잉 대기", "排队等待次数": "큐잉 대기 횟수", "排队等待秒数": "큐잉 대기 시간(초)", "排队等待设置已刷新": "큐잉 대기 설정을 새로 고쳤습니다", "接入": "연결", "接受调用方来源声明": "호출자의 출처 선언 허용", "接管回答的模型": "답변을 이어받을 모델", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "사이드바에 표시할 메뉴, 순서, 그룹을 설정합니다. 숨김은 탐색 표시에만 영향을 주며 접근 권한을 회수하지 않습니다. 숨긴 페이지도 주소로 직접 열 수 있습니다.", "控制报表与请求日志里 Token 读数的写法:开启后按「万 / 亿」式的本地量级词显示(简体为万 / 亿,繁体为萬 / 億,日文为万 / 億,韩文为만 / 억),关闭则用 k / M 缩写(与上游文档、接口字段的写法一致)。英文 / 葡语的本地量级词就是 k / M,这项对它们没有区别。只影响显示口径,不改变任何统计与存储的数值。": "리포트와 요청 로그에서 Token 수치를 쓰는 방식을 제어합니다. 켜면 「만 / 억」 단위의 로컬 규모 단어로 표시하고(중국어 간체는 万 / 亿, 중국어 번체는 萬 / 億, 일본어는 万 / 億, 한국어는 만 / 억), 끄면 k / M 축약을 사용합니다(업스트림 문서와 인터페이스 필드의 표기와 동일). 영어 / 포르투갈어의 로컬 규모 단어는 k / M이므로 이 항목은 이들 언어에 차이가 없습니다. 표시 방식에만 영향을 주며 통계와 저장된 수치는 바뀌지 않습니다.", "控制报表与请求日志里 Token 读数的写法:开启后按中文量级显示(1.2亿 / 8400万),关闭则用 k / M / B 缩写(与上游文档、接口字段的写法一致)。这只影响显示口径,不改变任何统计与存储的数值。": "보고서와 요청 로그의 Token 표기 방식을 바꿉니다. 켜면 중국어 단위(1.2억 / 8400만), 끄면 k / M / B 약어(업스트림 문서와 API 필드와 같은 표기)로 표시합니다. 표시 방식만 바뀌며 통계와 저장 값은 달라지지 않습니다.", "控制界面的深浅色,与左侧边栏底部的三个主题按钮是同一个设置(改哪一处,另一处立刻跟上)。「跟随系统」会随操作系统当前的浅色 / 深色自动切换,并在系统主题变化时即时跟上;选「浅色」或「深色」则把界面固定在该模式,不再随系统变化。窗口标题栏的深浅色会一并同步,不会出现深色界面配一条浅色标题栏的情况。": "인터페이스의 라이트/다크를 제어하며, 왼쪽 사이드바 하단의 테마 버튼 세 개와 같은 설정입니다(어느 쪽을 바꾸든 다른 쪽이 즉시 따라갑니다). 「시스템」은 운영 체제의 현재 라이트 / 다크 설정에 따라 자동으로 전환되고 시스템 테마가 바뀌면 즉시 따라갑니다. 「라이트」나 「다크」를 선택하면 인터페이스가 해당 모드로 고정되어 시스템 설정을 따르지 않습니다. 창 제목 표시줄의 색상도 함께 동기화되어, 다크 인터페이스에 라이트 제목 표시줄이 붙는 일은 없습니다.", "提供商与模型": "제공업체 및 모델", "提供商专属设置": "제공자별 설정", "提供商当前不可用,未保存的修改已保留;恢复插件后可继续编辑。": "현재 제공자를 사용할 수 없습니다. 저장하지 않은 수정 내용은 유지되며, 플러그인이 복구되면 계속 편집할 수 있습니다.", "提供商设置已保存": "제공자 설정을 저장했습니다", "提供商设置返回格式无效,请刷新后重试": "제공자 설정 응답 형식이 올바르지 않습니다. 새로 고친 후 다시 시도하세요.", "提建议": "제안하기", "提示词文件": "시스템 프롬프트 파일", "提示词文件已更新": "시스템 프롬프트 파일이 업데이트되었습니다", "提示词正文": "시스템 프롬프트 본문", "提示词正文已更新": "시스템 프롬프트 본문이 업데이트되었습니다", "插件或设置已变化,请放弃修改并刷新后重新编辑。": "플러그인 또는 설정이 변경되었습니다. 변경을 취소하고 새로 고친 뒤 다시 편집하세요.", "操作系统": "운영 체제", "支持 .a2ab 加密备份和旧 .sql 文件;旧 SQL 不包含恢复密钥,跨机器导入仍需原机密钥。": "암호화된 .a2ab 백업과 기존 .sql을 지원합니다. 기존 SQL에는 복원 키가 없어 다른 기기로 가져올 때 원래 키가 필요합니다.", "支持 PNG、JPG、WebP,最大 2 MiB、4096 × 4096 像素;自动缩小至 512 像素以内,建议使用正方形图片。": "PNG, JPG, WebP를 지원하며 최대 2 MiB, 4096 × 4096 픽셀입니다. 512 픽셀 이내로 자동 축소합니다. 정사각형 이미지를 권장합니다.", "改动仍保存在本机,修复网络或凭据后下一次改动会自动重试,也可以手动点「上传到云端」。": "변경 사항은 로컬에 저장되어 있습니다. 네트워크나 자격 증명을 고치면 다음 변경 시 자동으로 다시 시도하며, '클라우드로 업로드'를 직접 눌러도 됩니다.", "改动仍保存在本机,系统会延长等待并自动重试;修复网络或凭据后,也可以手动点「上传到云端」。": "변경 사항은 이 기기에 저장되어 있습니다. 대기 시간을 늘려 자동으로 재시도합니다. 네트워크나 인증 정보를 수정한 뒤 「클라우드에 업로드」를 수동으로 선택할 수도 있습니다.", "改完立即生效,不用重启(下一个请求就用新模式)。降级是自动的临时状态,解除后本模式自己的提示词立刻恢复。": "수정 후 재시작 없이 즉시 적용됩니다(다음 요청부터 새 모드가 사용됩니다). 폴백은 자동으로 생기는 임시 상태이며, 해제하면 이 모드의 시스템 프롬프트가 즉시 복구됩니다.", "放大或缩小整个界面(文字与控件一起变),效果与浏览器 Ctrl +/- 相同:共 11 档,立即生效并记住。": "인터페이스 전체를 확대하거나 축소합니다(텍스트와 컨트롤이 함께 바뀜). 효과는 브라우저의 Ctrl +/-와 동일합니다. 총 11단계이며 즉시 적용되고 기억됩니다.", "放弃修改并刷新": "변경 취소 후 새로 고침", "数据": "데이터", "数据保留": "데이터 보관", "数据保留设置已刷新": "데이터 보관 설정을 새로 고쳤습니다", "数据存储": "데이터 저장", "数据库 schema": "데이터베이스 schema", "数据库不可用": "데이터베이스 사용 불가", "数据库与恢复密钥一起加密保存。密码不会保存在应用或备份中,忘记后无法恢复,请妥善保管。": "데이터베이스와 복원 키를 함께 암호화합니다. 비밀번호는 앱이나 백업에 저장되지 않습니다. 잊으면 복원할 수 없으니 안전하게 보관하세요.", "数据库主文件与 WAL 文件的总占用,与请求日志清理弹窗采用同一口径;清理后可压缩数据库回收空闲空间。": "데이터베이스 주 파일과 WAL 파일의 총 크기로, 요청 로그 정리 화면과 같은 계산 기준을 사용합니다. 정리 후 데이터베이스를 압축하여 사용하지 않는 공간을 회수할 수 있습니다.", "数据库文件": "데이터베이스 파일", "数据目录": "데이터 디렉터리", "数据统一保存在配置目录下的 agent2api.db;如需更换位置,请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "데이터는 구성 디렉터리의 agent2api.db에 통합 저장됩니다. 위치를 바꾸려면 환경 변수 AGENT2API_PROXY_HOME을 설정한 후 프로그램을 다시 시작하세요.", "整体替换": "통째로 교체", "整库备份 / 恢复": "전체 DB 백업 / 복원", "整次请求交给 {model} 直接回答,不再回到原模型。": "요청 전체를 {model}에 넘겨 원래 모델로 돌아가지 않고 바로 답합니다.", "新分组名": "새 그룹 이름", "新增 {added} 个、更新 {updated} 个{suffix}{note}": "{added}개 추가, {updated}개 업데이트{suffix}{note}", "新增脱敏规则": "마스킹 규칙 추가", "新增规则": "규칙 추가", "新安装和升级后默认关闭。先配置再开启,关闭后保留配置。": "신규 설치 및 업그레이드 후에는 기본적으로 꺼져 있습니다. 먼저 설정한 뒤 켜세요. 꺼도 설정은 유지됩니다.", "新密码": "새 비밀번호", "新密码不能与当前密码相同": "새 비밀번호는 현재 비밀번호와 달라야 합니다", "新密码至少 8 位": "비밀번호는 8자 이상이어야 합니다", "新建分组": "그룹 추가", "新建客户端分类": "새 클라이언트 분류", "无效或重复的标识请求头:{headers}": "잘못되었거나 중복된 식별 헤더: {headers}", "无法读取品牌设置": "브랜드 설정을 읽을 수 없습니다", "无法读取图片,请重新选择": "이미지를 읽을 수 없습니다. 다시 선택하세요", "日志与请求日志同时受保留天数和数量上限限制。日志默认 30 天、10000 条,各级别按比例保留;调试详情最多保留 3 天。请求日志默认 99999 天、1000000 条(100 万),超出后从最旧的记录开始清理,并同步删除对应原始正文。按天聚合默认 99999 天,只按天数保留,不受请求日志数量清理影响。天数可填 1–99999,数量可填 1–100000000。调小任一设置并确认后立即清理,且不可恢复。": "로그와 요청 로그에는 보관 일수와 건수 상한이 함께 적용됩니다. 로그의 기본값은 30일, 10000건이며 수준별로 비례 배분하여 보관합니다. 디버그 상세는 최대 3일 보관합니다. 요청 로그의 기본값은 99999일, 1000000건(100만 건)이며 초과분은 가장 오래된 기록부터 해당 원문과 함께 삭제합니다. 일별 집계의 기본값은 99999일로 일수만 적용되며 요청 로그 건수에 따른 삭제의 영향을 받지 않습니다. 일수는 1–99999, 건수는 1–100000000을 입력할 수 있습니다. 설정을 줄이고 확인하면 즉시 삭제되며 복구할 수 없습니다.", "日志保留数量上限": "로그 보관 건수 상한", "日志文件": "로그 파일", "日语": "일본어", "显示 {name}": "{name} 표시", "显示分组 {name}": "그룹 {name} 표시", "显示名称": "표시 이름", "显示名称最多 64 个字符": "표시 이름은 최대 64자입니다", "显示模式": "테마", "显示这一组": "이 그룹 표시", "暂无可编辑的提供商设置": "편집할 수 있는 제공자 설정이 없습니다", "暂无自定义规则,正在使用内置识别。也可以从请求详情直接添加规则。": "사용자 규칙이 없어 내장 식별을 사용 중입니다. 요청 상세에서도 규칙을 추가할 수 있습니다.", "暂未获取到本机访问地址,请使用其他设备能连接到的本机 IP 与网关端口。": "아직 이 기기의 접속 주소를 가져오지 못했습니다. 다른 기기에서 연결할 수 있는 이 기기의 IP와 게이트웨이 포트를 사용하세요.", "更新": "업데이트", "更新出网线路": "업데이트 출구 경로", "更新通道": "업데이트 채널", "替换": "교체", "替换 = 客户端 system / developer 消息全部删掉,换成网关的提示词;追加 = 保留客户端内容,只在开头 system 块之后多插一条。两者都只改发给上游的副本,客户端看到的响应不变。": "교체 = 클라이언트의 system / developer 메시지를 모두 삭제하고 게이트웨이 시스템 프롬프트로 바꿉니다. 추가 = 클라이언트 내용을 유지하고 맨 앞 system 블록 뒤에 한 건만 더 삽입합니다. 둘 다 업스트림으로 보내는 사본만 바꾸며 클라이언트가 받는 응답은 달라지지 않습니다.", "替换为网关提示词": "게이트웨이 시스템 프롬프트로 교체", "替换内容": "치환 내용", "替换内容最多 {max} 个字符": "치환 내용은 최대 {max}자까지 입력할 수 있습니다", "替换前会自动把当前数据备份到配置目录的 backups/ 文件夹。": "교체 직전에 현재 데이터를 설정 디렉터리의 backups/ 폴더에 자동 백업합니다.", "替换并恢复": "교체하고 복원", "最多 64 个字符,留空恢复为 Agent2API。": "최대 64자입니다. 비워 두면 Agent2API로 복원됩니다.", "最小自动上传间隔": "최소 자동 업로드 간격", "最近 {window} 条请求中,{scanned} 条有识别依据,{matched} 条符合条件,{applied} 条会采用本规则。": "최근 요청 {window}개 중 {scanned}개에 식별 근거가 있고, {matched}개가 조건과 일치하며, {applied}개에 이 규칙이 적용됩니다.", "有未保存的修改": "저장되지 않은 변경 사항이 있습니다", "有未保存的改动:保存后才能同步(测试连接不受影响)。": "저장되지 않은 변경 사항이 있습니다. 동기화하려면 먼저 저장하세요(연결 테스트는 가능).", "有近期套餐池请求时读取库存状态的间隔,默认 2500 毫秒,可填 1000–30000。没有近期请求时降低读取频率,轮询不会发起验证码。": "최근 Start Plan 요청이 있을 때 재고 상태 조회 간격입니다. 기본값은 2500밀리초이며 1000–30000 범위입니다. 최근 요청이 없으면 조회 빈도를 낮추며 폴링으로 인증을 시작하지 않습니다.", "服务商": "공급자", "服务器地址": "서버 주소", "服务端密钥加密保存,不会返回浏览器;切回 ALTCHA 后会保留,方便再次启用。": "비밀 키는 암호화하여 저장하며 브라우저로 반환하지 않습니다. ALTCHA로 전환해도 보관되므로 나중에 다시 활성화할 수 있습니다.", "服务端密钥(Secret Key)": "비밀 키(Secret Key)", "期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "이 모드 동안 자체 프롬프트는 전송되지 않습니다. 프롬프트를 고친 뒤 즉시 해제할 수 있습니다.", "未保存": "저장되지 않음", "未匹配已知客户端": "알려진 클라이언트와 일치하지 않음", "未单独配置:模式、提示词文件与正文都跟随上面的全局配置(当前「{mode}」)。": "개별 설정 없음: 모드, 시스템 프롬프트 파일과 본문 모두 위의 전역 설정을 따릅니다(현재 「{mode}」).", "未启用": "사용 안 함", "未开启轻量模式:关窗仅隐藏窗口,界面进程常驻内存,随时打开不等待": "경량 모드 꺼짐: 창을 닫아도 창만 숨겨지고 인터페이스 프로세스가 메모리에 상주하여 언제든 기다림 없이 열립니다", "未开启,developer 角色消息会原样发往上游,不认识该角色的上游会报错(400)。": "꺼짐: developer 역할 메시지가 그대로 업스트림으로 전송되며, 이 역할을 모르는 업스트림은 오류(400)를 반환합니다.", "未开启,客户端 system 模板会原样发往上游,可能被内容审核误拦(400)。": "꺼져 있어 클라이언트 system 템플릿이 그대로 업스트림으로 전송되어 콘텐츠 검열에 오탐으로 차단될 수 있습니다(400).", "未开启,浏览器跨域无法直连网关。": "꺼져 있어 브라우저에서 CORS로 게이트웨이에 직접 연결할 수 없습니다.", "未开启,转发时不保存任何原始报文。": "꺼져 있어 전달 시 원본 메시지를 일절 저장하지 않습니다.", "未开启:网关只监听 127.0.0.1,仅本机可以访问。": "꺼짐: 게이트웨이가 127.0.0.1만 수신하여 로컬에서만 접근할 수 있습니다.", "未注册": "미등록", "未注册闸门": "미등록 게이트", "未知原因": "알 수 없는 사유", "未知来源": "알 수 없는 출처", "未知设备": "알 수 없는 기기", "未知账号": "알 수 없는 계정", "未能读取 Cline 伪装头设置,请稍后重试": "Cline 위장 헤더 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요", "未能读取 models.dev 元数据状态,请稍后重试": "models.dev 메타데이터 상태를 읽지 못했습니다. 잠시 후 다시 시도하세요.", "未能读取云同步设置,请稍后重试。": "클라우드 동기화 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요.", "未能读取保存后的指纹脱敏设置": "저장된 지문 마스킹 설정을 읽지 못했습니다", "未能读取开发者角色兼容设置,请稍后重试": "개발자 역할 호환 설정을 읽지 못했습니다. 잠시 후 다시 시도해 주세요", "未能读取指纹脱敏设置,请稍后重试": "핑거프린트 마스킹 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요", "未能读取机器人校验设置": "봇 인증 설정을 읽지 못했습니다", "未能读取第三方模型回答完自动折叠过程设置,请稍后重试": "타사 모델의 답변 후 과정 자동 접기 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요", "未能读取系统提示词设置,请稍后重试": "시스템 프롬프트 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요", "未能读取网关跨域访问设置,请稍后重试": "게이트웨이 CORS 접근 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요", "未能读取网络访问设置,请稍后重试": "네트워크 접근 설정을 불러오지 못했습니다. 잠시 후 다시 시도하세요.", "未能读取调试模式设置,请稍后重试": "디버그 모드 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요", "未能读取账户信息,请稍后重试": "계정 정보를 읽지 못했습니다. 잠시 후 다시 시도하세요", "未采用本规则,请检查开关、来源声明或规则顺序": "이 규칙이 적용되지 않았습니다. 스위치, 출처 선언 또는 규칙 순서를 확인하세요.", "本地账号、配置、签到与余额记录变化后自动上传(合并 1 秒内的连续改动,最长 10 秒传一次;内容没变时不发请求)。": "로컬 계정, 설정, 체크인, 잔액 기록이 변경되면 자동 업로드합니다(1초 이내 연속 변경은 병합, 최대 10초에 한 번. 내용이 그대로면 요청을 보내지 않습니다).", "本机 API 地址": "이 기기의 API 주소", "本机 APK 版本": "이 기기 APK 버전", "本机全部数据会被备份整体替换,恢复前自动保留安全备份,完成后需要重新登录管理面板。本机已有密钥不会被覆盖。": "로컬 데이터베이스의 모든 데이터가 백업으로 교체됩니다. 먼저 안전 백업을 보관하고 완료 후 다시 로그인해야 합니다. 기존 로컬 키는 덮어쓰지 않습니다.", "本机应用版本": "이 기기의 앱 버전", "本机界面版本": "이 기기 UI 버전", "本机的业务数据(账号、配置、Agent 配置、代理池 / 订阅、签到与余额记录)将上传并": "이 컴퓨터의 업무 데이터(계정, 설정, Agent 설정, 프록시 풀/구독, 체크인 및 잔액 기록)를 업로드하여", "本机的全部数据(账号、网关配置、日志统计与桌面设置)将被所选备份文件": "이 PC의 모든 데이터(계정, 게이트웨이 설정, 로그 통계, 데스크톱 설정)는 선택한 백업 파일로", "本机的账号、网关配置、Agent 配置、代理池 / 订阅、签到与余额记录将被远端快照": "이 컴퓨터의 계정, 게이트웨이 설정, Agent 설정, 프록시 풀/구독, 체크인 및 잔액 기록이 원격 스냅샷으로", "本次无需刷新": "이번에는 새로고침이 필요하지 않습니다", "本软件不提供任何担保,可按 AGPL-3.0 修改与分发;通过网络提供修改版服务时须向用户提供对应源码。": "이 소프트웨어는 보증 없이 제공되며 AGPL-3.0에 따라 수정·배포할 수 있습니다. 수정된 네트워크 서비스는 사용자에게 대응 소스를 제공해야 합니다.", "本项目的 AGPL-3.0 许可不替代这些第三方许可。名称与标识的商标权归各自权利人所有。": "이 프로젝트의 AGPL-3.0 라이선스는 이러한 타사 라이선스를 대체하지 않습니다. 이름과 로고의 상표권은 각 권리자에게 있습니다.", "机器人校验": "로봇 검증", "机器人校验设置已保存": "봇 인증 설정을 저장했습니다", "条数": "건수", "来源声明当前关闭,这条规则不会生效。请先在客户端识别设置中开启。": "출처 선언이 꺼져 있어 이 규칙은 적용되지 않습니다. 클라이언트 식별 설정에서 먼저 켜세요.", "来源声明无效或未登记,本次已忽略。": "출처 선언이 잘못되었거나 등록되지 않아 무시했습니다.", "来源声明未启用,本次已忽略。": "출처 선언이 꺼져 있어 무시했습니다.", "来源版本": "출처 리비전", "来源设备:{device}": "원본 기기: {device}", "来自 {device},生成于 {time}": "{device}에서 {time}에 생성", "架构": "아키텍처", "查看内置客户端({n})": "내장 클라이언트 보기 ({n})", "查询管理员状态失败:{message}": "관리자 상태 조회 실패: {message}", "校验身份:这三段必须各自成块排在最前(实测:三段并成一段会被回 405 / 3012)。因此这里按段编辑,不能合成一段。改过的段以你的文本为准,没改的段继续用官方原文;清空某一段 = 那一段恢复官方原文。": "를 기준으로 신원을 검증합니다: 이 세 단락은 각각 별도 블록으로 맨 앞에 있어야 합니다(실측: 세 단락을 하나로 합치면 405 / 3012가 반환됩니다). 따라서 단락별로 편집하며 하나로 합칠 수 없습니다. 수정한 단락은 입력한 텍스트가 우선하고, 수정하지 않은 단락은 계속 공식 원문을 사용합니다. 단락을 비우면 그 단락은 공식 원문으로 복원됩니다.", "桌面端": "데스크톱 앱", "桌面端登录 / 注册验证": "데스크톱 로그인 / 가입 인증", "桌面端:登录 / 注册需要 ALTCHA 人机验证": "데스크톱: 로그인 / 등록에 ALTCHA 인증 필요", "桌面端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "데스크톱: 로그인 / 등록에 ALTCHA 인증 필요(현재 사용 중)", "桌面运行时不可用,暂时无法保存": "데스크톱 런타임을 사용할 수 없어 지금은 저장할 수 없습니다", "档案": "프로필", "检测中…": "확인 중…", "概览": "개요", "模型不能直接看图时,按你选择的方式处理。原生支持图片的请求直接转发,不增加识图调用。": "모델이 이미지를 직접 읽을 수 없을 때 선택한 방식으로 처리합니다. 이미지 지원 모델의 요청은 추가 호출 없이 그대로 전달됩니다.", "模型单独配置": "모델별 설정", "模型目录没写明是否支持图片时按这里处理。": "모델 목록에 이미지 지원 여부가 없을 때 여기 설정을 따릅니다.", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。下面两块分别选好「哪些模型」和「用哪只模型」即可;没配到的模型、以及本来就能看图的模型,一律原样放行。这里的改动立即生效,不需要保存。": "이미지를 읽지 못하는 모델을 다루는 방법은 두 가지뿐입니다. 다른 모델이 대신 읽게 하거나, 요청 전체를 이미지를 읽을 수 있는 모델에 넘기는 것입니다. 아래 두 블록에서 \"어떤 모델\"과 \"어느 모델로\"를 고르면 됩니다. 여기에 포함되지 않은 모델과 원래 이미지를 읽을 수 있는 모델은 그대로 통과합니다. 여기서의 변경은 즉시 적용되며 저장이 필요 없습니다.", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。没配到的模型、以及本来就能看图的模型,一律原样放行;每个请求只用其中一种方式,不会两种串着做,处理失败也不会改走另一种。改动立即生效,不需要保存。": "이미지를 읽지 못하는 모델을 다루는 방법은 두 가지뿐입니다. 다른 모델이 대신 읽게 하거나, 요청 전체를 이미지를 읽을 수 있는 모델에 넘기는 것입니다. 여기에 포함되지 않은 모델과 원래 이미지를 읽을 수 있는 모델은 그대로 통과합니다. 요청마다 두 방식 중 하나만 사용하며, 두 방식을 이어서 실행하지 않고 실패해도 다른 방식으로 넘어가지 않습니다. 여기서의 변경은 즉시 적용되며 저장이 필요 없습니다.", "模型请求是否需要验证码由 ZCode 上游配置决定,领取验证与模型请求免验证分别处理。后台只检查配置和库存,不自动运行验证码或弹出拼图;需要验证时,在账号的「套餐明细」中点击「开始验证」。验证令牌一次性使用,短时间内过期,失败或取消后不会自动重试。": "모델 요청의 인증 필요 여부는 ZCode 업스트림 설정으로 결정하며 플랜 수령 인증과 별도로 처리합니다. 백그라운드는 설정과 재고만 확인하며 인증을 실행하거나 퍼즐을 자동으로 띄우지 않습니다. 필요하면 계정의 「플랜 상세」에서 「인증 시작」을 누르세요. 토큰은 한 번만 사용되며 짧은 시간 후 만료되고 실패나 취소 후 자동 재시도하지 않습니다.", "模式": "모드", "模式改为「{mode}」": "모드를 「{mode}」(으)로 변경", "次": "회", "次日 00:00": "다음 날 00:00", "正则表达式": "정규식", "正在保存上游原始报文:": "업스트림 원본 메시지를 저장하는 중: ", "正在修改…": "변경 중…", "正在剥离出站请求里的审核指纹:表头键值整段删除,模板句最小改写。": "아웃바운드 요청의 검열 핑거프린트를 제거하는 중: 헤더 키-값은 통째로 삭제하고 템플릿 문구는 최소한으로 재작성합니다.", "正在安装…": "설치 중…", "正在应答跨源请求:浏览器跨域请求可直连 /v1/*。": "교차 출처 요청에 응답 중: 브라우저의 CORS 요청이 /v1/*에 직접 연결될 수 있습니다.", "正在归一角色:developer 角色消息转发前改写为 system。": "역할 정규화 중: developer 역할 메시지는 전달 전에 system으로 수정됩니다.", "正在注册…": "등록 중…", "正在联网更新": "온라인으로 갱신 중", "正在读取提供商设置…": "제공자 설정을 불러오는 중…", "正式版": "정식 버전", "每个请求只会用到其中一种方式,不会两种串着做;处理失败也不会改走另一种。配了哪只视觉模型,那次请求的图片就会交给它。": "요청마다 두 방식 중 하나만 사용합니다. 두 방식을 이어서 실행하지 않고, 실패해도 다른 방식으로 넘어가지 않습니다. 설정한 비전 모델에 해당 요청의 이미지가 전달됩니다.", "每条请求轮换到下一个可用账号;新会话交给当前最闲的那位。适合想把手里的号摊开用、不让某一个一直扛。": "요청마다 다음 사용 가능한 계정으로 순환하고, 새 세션은 현재 한가한 계정에 맡깁니다. 보유 계정을 고르게 쓰고 특정 계정에 부하가 몰리지 않게 하고 싶을 때 적합합니다.", "每条请求都重新按策略选路 —— 行为与「关闭」一致,仅保留会话识别的记录。": "요청마다 전략에 따라 다시 선택합니다 — 동작은 \"끄기\"와 같으며 세션 기록만 유지됩니다.", "每次等待的时长,默认 0 = 跟随上游建议(实测 9~30 秒,上游没给建议时用 15 秒)。可填 0–120 秒强制一个固定时长。": "대기 1회의 길이입니다. 기본값 0 = 업스트림 권장 시간을 따릅니다(실측 9~30초, 업스트림이 권장 시간을 주지 않으면 15초 사용). 0–120초를 입력하면 고정 시간으로 강제할 수 있습니다.", "每行一个域名,不填协议、端口或路径;与 Cloudflare 中的配置一致,服务端按完整域名匹配。手机 App 使用所连接网关的域名。": "프로토콜, 포트, 경로 없이 한 줄에 호스트 이름 하나씩 입력하세요. Cloudflare 설정과 일치해야 하며 서버는 전체 호스트 이름이 정확히 일치하는지 확인합니다. 모바일 앱은 연결된 게이트웨이의 호스트 이름을 사용합니다.", "毫秒": "밀리초", "沟通方式 / 上下文管理 + Environment 段。": "커뮤니케이션 방식 / 컨텍스트 관리 + Environment 단락.", "没有可导出的账号": "내보낼 계정이 없습니다", "没有可用视觉模型时": "사용 가능한 비전 모델이 없을 때", "没有已确认支持图片的模型,请先在模型管理中确认。": "이미지 지원이 확인된 모델이 없습니다. 먼저 모델 관리에서 확인하세요.", "没能读到「{label}」的当前值,改为 {count} 条可能会删除超出的历史数据。": "「{label}」의 현재 값을 읽지 못했습니다. {count}건으로 변경하면 초과한 과거 데이터가 삭제될 수 있습니다.", "没能读到「{label}」的当前值,改为 {days} 天可能会删除超出的历史数据。": "「{label}」의 현재 값을 읽지 못했습니다. {days}일로 변경하면 초과된 과거 데이터가 삭제될 수 있습니다.", "沿用对应方式的视觉模型配置,不额外维护一份模型列表。": "해당 방식의 비전 모델 설정을 사용하며 별도의 모델 목록은 관리하지 않습니다.", "沿用工具服务的视觉分析模型": "도구 서비스의 시각 분석 모델 재사용", "沿用工具服务的视觉分析模型(未配置)": "도구 서비스의 비전 모델 사용(미설정)", "注册并开启": "등록하고 켜기", "注册管理员账号": "관리자 계정 등록", "注意:这一家的「网关自带」开关现在是关的,改过的正文要等开关打开才生效。": "주의: 이 제공자의 「게이트웨이 내장」 스위치가 현재 꺼져 있습니다. 수정한 본문은 스위치를 켠 후에야 적용됩니다.", "流式响应相邻数据之间允许的最大空闲时间(秒),收到新数据后重新计时,默认 300 秒,范围 1~3600。": "스트리밍 응답에서 인접한 데이터 사이에 허용되는 최대 유휴 시간(초). 새 데이터가 오면 다시 시간을 재며, 기본 300초, 범위 1~3600.", "流式响应空闲超时": "스트리밍 응답 유휴 타임아웃", "测试连接": "연결 테스트", "浏览器 / PWA": "브라우저 / PWA", "浏览器只在 https 或 localhost 下提供离线缓存;局域网 http 访问不影响正常使用": "브라우저는 https 또는 localhost에서만 오프라인 캐시를 제공합니다. LAN의 http 접속에서도 평소대로 사용할 수 있습니다.", "浏览器在本地完成计算,不需要第三方密钥,也不依赖外部验证服务。": "브라우저에서 로컬로 계산합니다. 타사 키나 외부 인증 서비스가 필요하지 않습니다.", "浏览器标签页": "브라우저 탭", "浏览器面板": "브라우저 패널", "消息角色": "메시지 역할", "添加备选模型": "예비 모델 추가", "添加提供商": "제공자 추가", "添加提供商…": "제공자 추가…", "添加自定义头": "사용자 지정 헤더 추가", "添加要单独配置的提供商": "개별 설정할 제공자 추가", "清除本机凭证": "이 기기의 자격 증명 삭제", "清除这里的正文": "여기의 본문 지우기", "源代码": "소스 코드", "点下面的入口会用系统默认浏览器打开 GitHub 的对应表单(需要 GitHub 账号,模板已预设好,填完直接提交即可)。": "아래 항목을 클릭하면 시스템 기본 브라우저에서 GitHub의 해당 양식이 열립니다(GitHub 계정 필요, 템플릿이 미리 채워져 있으므로 작성 후 바로 제출하면 됩니다).", "点击重命名": "클릭하여 이름 변경", "点此添加或切换服务器": "눌러서 서버 추가 또는 전환", "点此添加服务器": "눌러서 서버 추가", "版本": "버전", "版本信息": "버전 정보", "版本信息 · 所连网关环境": "버전 정보 · 연결된 게이트웨이", "版权声明": "저작권 고지", "状态码 {code} 已在名单里": "상태 코드 {code}는 이미 목록에 있습니다", "状态码必须是 {min}–{max} 的整数(收到: {text})": "상태 코드는 {min}–{max} 범위의 정수여야 합니다(입력값: {text})", "环境": "환경", "生成时间:{time}": "생성 시간: {time}", "生效顺序:有效的来源声明优先,然后按顺序匹配自定义规则,最后使用内置规则。中转丢失原始标识时,无法自动推断背后的软件。": "우선순위는 유효한 출처 선언, 사용자 규칙 순서, 내장 규칙 순입니다. 중계 과정에서 원래 식별 정보가 사라지면 원래 소프트웨어를 자동으로 추론할 수 없습니다.", "用 models.dev 补齐上游没声明的模型能力与思考档位(联网刷新,内嵌快照始终生效)": "업스트림이 선언하지 않은 모델 능력과 추론 레벨을 models.dev로 채웁니다(온라인 새로고침, 내장 스냅샷은 항상 적용)", "用于加密上云的账号密钥。请自己记牢 —— 它不保存到云端,换机下载时必须输入同一个密码,否则账号数据无法解密。": "클라우드로 보내는 계정 키를 암호화하는 데 사용합니다. 반드시 기억하세요 — 클라우드에 저장되지 않으며, 다른 컴퓨터에서 복원할 때 같은 비밀번호를 입력해야 계정 데이터를 복호화할 수 있습니다.", "用哪只模型识图": "이미지를 읽을 모델", "用浏览器菜单里的「添加到主屏幕」把这一页装成 App:全屏打开、没有地址栏,和原生应用一样。": "브라우저 메뉴의 「홈 화면에 추가」로 이 페이지를 앱처럼 설치할 수 있습니다. 전체 화면, 주소 표시줄 없이 네이티브 앱과 같습니다.", "由 Cloudflare 提供验证,需要浏览器与网关均能连接 Cloudflare。验证失败或服务不可用时不会自动放行。": "Cloudflare에서 인증을 제공합니다. 브라우저와 게이트웨이 모두 Cloudflare에 연결할 수 있어야 합니다. 인증 실패나 서비스 장애 시 자동으로 접근을 허용하지 않습니다.", "由 {source} 覆盖,手动设置暂不生效": "{source}가 우선 적용되어 수동 설정은 현재 적용되지 않습니다", "界面缩放": "인터페이스 줌", "界面缩放比例": "인터페이스 줌 비율", "界面语言": "인터페이스 언어", "界面语言。可选简体中文、繁體中文、English、日本語、한국어、Português (Brasil),或「跟随系统」(按浏览器 / 系统的语言列表自动选)。切换后整页立即刷新;该偏好只存在本机(localStorage),不影响账号、密钥与转发。": "인터페이스 언어입니다. 중국어 간체, 중국어 번체, English, 日本語, 한국어, Português (Brasil) 또는 「시스템」(브라우저 / 시스템 언어 목록에 따라 자동 선택)을 선택할 수 있습니다. 전환하면 페이지 전체가 즉시 새로 고침됩니다. 이 설정은 이 컴퓨터에만 저장되며(localStorage) 계정, 키, 포워딩에는 영향을 주지 않습니다.", "界面语言只保存在本机(localStorage)。切换后整页立即刷新,不影响账号、密钥与转发。": "인터페이스 언어는 이 컴퓨터에만 저장됩니다(localStorage). 전환하면 페이지 전체가 즉시 새로 고침되며 계정, 키, 포워딩에는 영향을 주지 않습니다.", "界面里编辑的正文": "화면에서 편집한 본문", "留空 = 用内置默认提示词": "비워 두면 = 내장 기본 시스템 프롬프트 사용", "留空使用 AWS 官方地址": "비워 두면 AWS 공식 주소 사용", "留空使用默认": "비워 두면 기본값 사용", "留空表示删除匹配内容;替换内容按原文写入,$ 不作为捕获组引用。": "비우면 일치한 내용을 삭제합니다. 치환 내용은 그대로 삽입하며 $를 캡처 그룹 참조로 처리하지 않습니다.", "登录 / 注册需要通过 ALTCHA 人机验证(工作量证明)": "로그인 / 가입에는 ALTCHA 인간 검증(작업 증명)이 필요합니다", "登录 / 账号切换 / 429 切换等系统事件,可填 1–3650 天。": "로그인 / 계정 전환 / 429 전환 등 시스템 이벤트이며, 1–3650일을 입력할 수 있습니다.", "登录 / 账号切换 / 429 切换等系统事件,可填 1–99999 天。": "로그인 / 계정 전환 / 429 전환 등 시스템 이벤트. 1~99999일까지 입력할 수 있습니다.", "登录 Agent2API": "Agent2API 로그인", "登录 {name}": "{name}에 로그인", "登录人机验证": "로그인 CAPTCHA", "百分比类读数(如 OpenCode Go、Antigravity)不能相加,组头显示的是组内最低剩余比例。": "백분율 읽기(예: OpenCode Go, Antigravity)는 합산할 수 없으므로 그룹 띠에는 그룹 내 가장 낮은 잔여 비율이 표시됩니다.", "监听地址": "수신 주소", "目前展示仓库已登记的图标来源许可,不代表完整的第三方依赖清单。": "현재 목록에는 저장소에 등록된 아이콘 출처의 라이선스만 표시됩니다. 전체 타사 의존성 목록은 아닙니다.", "目标路径:{path}": "대상 경로: {path}", "直接按上面的设置兼容": "위 설정대로 바로 호환 처리", "直接按当前方式兼容": "현재 방식으로 바로 호환 처리", "知道了": "확인", "确定": "확인", "确定后加入当前草稿,点击「保存设置」才会生效。": "확인하면 현재 초안에 추가합니다. 설정 저장을 눌러야 적용됩니다.", "确定继续?": "계속할까요?", "确认上传": "업로드 확인", "确认图片处理授权": "이미지 처리 권한 확인", "确认备份密码": "백업 비밀번호 확인", "确认并保存": "확인 후 저장", "确认新密码": "새 비밀번호 확인", "确认缩减数据保留": "데이터 보관 축소 확인", "确认缩短保留天数": "보관 일수 단축 확인", "社区与支持": "커뮤니티 및 지원", "离线缓存未启用": "오프라인 캐시가 꺼져 있습니다", "积分合计只统计当前筛选出来的账号": "포인트 합계를 현재 필터에 표시된 계정만으로 계산", "移入「{name}」": "\"{name}\"(으)로 이동", "程序路径": "실행 파일 경로", "空 = 不要这一份,回落提示词文件 / 内置默认提示词。": "비우면 = 이 본문을 사용하지 않고 시스템 프롬프트 파일 / 내장 기본 시스템 프롬프트로 폴백합니다.", "空分组 · 点组头的 + 把菜单移进来": "빈 그룹 · 머리의 +로 메뉴를 가져오세요", "立即解除": "즉시 해제", "站点密钥(Site Key)": "사이트 키(Site Key)", "第一段": "첫 번째 단락", "第一段(身份句)": "첫 번째 단락(아이덴티티 문장)", "第三方应用密码": "타사 앱 비밀번호", "第三方开源许可": "타사 오픈 소스 라이선스", "第三方模型回答完自动折叠过程": "타사 모델의 답변 후 과정 자동 접기", "第三方模型回答完自动折叠过程设置已刷新": "타사 모델의 답변 후 과정 자동 접기 설정을 새로 고쳤습니다", "第三段": "세 번째 단락", "第三段(动态段)": "세 번째 단락(동적 단락)", "第二段": "두 번째 단락", "第二段(稳定段)": "두 번째 단락(고정 단락)", "等待响应超时": "응답 대기 타임아웃", "等待期间请求日志的状态列会显示「排队中」阶段,详情弹窗的「内部重试」里能逐次看到等待时长;等待用尽后返回 HTTP 503(不是 401/429:既不会刷新凭证,也不会把账号标成限额)。": "대기 중에는 요청 로그의 상태 열에 「큐잉 중」 단계가 표시되고, 상세 팝업의 「내부 재시도」에서 회차별 대기 시간을 볼 수 있습니다. 대기가 소진되면 HTTP 503을 반환합니다(401/429가 아닙니다: 자격 증명을 갱신하지도, 계정을 할당량 초과로 표시하지도 않습니다).", "等比放大或缩小整个界面(文字、控件、间距一起变),效果与浏览器按 Ctrl +/- 相同:80%–130%、5% 一档。窗口本身不缩放,变的是页面内容的显示比例,设置立即生效并记住,下次启动直接按这个比例打开。放得越大可视范围越小,窗口较窄或表格较宽时不建议调得太大。": "인터페이스 전체를 비율에 맞춰 확대하거나 축소합니다(텍스트, 컨트롤, 간격이 함께 바뀜). 효과는 브라우저에서 Ctrl +/-를 누른 것과 같습니다: 80%–130%, 5% 단위. 창 자체는 확대되지 않고 페이지 내용의 표시 비율만 바뀝니다. 설정은 즉시 적용되고 기억되어 다음 시작 시 이 비율로 열립니다. 크게 할수록 보이는 범위가 좁아지므로 창이 좁거나 표가 넓을 때는 너무 크게 하지 않는 것이 좋습니다.", "简体中文": "중국어 간체", "管理员已注册": "관리자 등록됨", "管理员账号": "관리자 계정", "管理插件": "플러그인 관리", "精确文本": "정확한 텍스트", "系统提示词模式": "시스템 프롬프트 모드", "系统提示词设置已刷新": "시스템 프롬프트 설정을 새로 고쳤습니다", "累计请求": "누적 요청", "繁体中文": "중국어 번체", "约 {n} 字符": "약 {n}자", "结构": "구조", "给 Codex 的响应补阶段标记,回答完后像官方模型一样把推理与命令过程折叠起来": "Codex 응답에 단계 표시를 보강해 답변 후 공식 모델처럼 추론과 명령 과정을 접기", "继续并清理": "계속하고 정리", "编辑提示词正文 · {label}": "시스템 프롬프트 본문 편집 · {label}", "编辑提示词正文 · 全局": "시스템 프롬프트 본문 편집 · 전역", "编辑正文": "본문 편집", "编辑网关自带提示词 · {label}": "게이트웨이 내장 시스템 프롬프트 편집 · {label}", "编辑脱敏规则": "마스킹 규칙 편집", "编辑识别规则": "식별 규칙 편집", "缩放后重新存成 JPEG 时用的质量。默认 80,可填 40–95;数值越小体积越小、画质越差。": "축소한 이미지를 JPEG로 다시 저장할 때 쓰는 품질입니다. 기본 80, 40~95까지 지정할 수 있으며, 낮을수록 용량은 줄지만 화질이 떨어집니다.", "缩放比例": "줌 비율", "网关": "게이트웨이", "网关 Key 数量": "게이트웨이 키 수", "网关尚未就绪": "게이트웨이가 아직 준비되지 않았습니다", "网关自带": "게이트웨이 내장", "网关跨域访问已开启": "게이트웨이 CORS 접근이 켜졌습니다", "网关跨域访问设置已刷新": "게이트웨이 CORS 접근 설정을 새로 고쳤습니다", "网关跨域访问(CORS)": "게이트웨이 CORS 접근", "网关面(/v1/*)默认不应答浏览器跨源请求:页面直连会被预检拦下,只报「无法连接 API」。注意来源是 * —— 未配「网关 Key」时任何网页都能借本机网关打上游,故默认关闭;只给自己用的话,让页面与网关同源(本地反代 /v1)更稳妥。面板接口(/api/*)不受影响。": "게이트웨이 API(/v1/*)는 기본적으로 브라우저의 교차 출처 요청에 응답하지 않습니다. 페이지에서 직접 연결하면 프리플라이트에 막히고 「API에 연결할 수 없음」만 표시됩니다. 출처가 *이므로 「게이트웨이 키」를 설정하지 않으면 어떤 웹 페이지든 로컬 게이트웨이를 거쳐 업스트림을 호출할 수 있기에 기본적으로 꺼져 있습니다. 혼자만 사용한다면 페이지와 게이트웨이를 같은 출처로 두는 편(로컬 리버스 프록시 /v1)이 더 안전합니다. 패널 인터페이스(/api/*)는 영향을 받지 않습니다.", "网络访问": "네트워크 접근", "网页端": "웹", "网页端登录 / 注册验证": "웹 로그인 / 가입 인증", "网页端的界面缩放由浏览器自己控制(Ctrl + / Ctrl -,或浏览器菜单里的缩放),此项不可调。": "웹 버전의 인터페이스 줌은 브라우저가 직접 제어하며(Ctrl + / Ctrl -, 또는 브라우저 메뉴의 줌), 이 항목은 조정할 수 없습니다.", "网页端:登录 / 注册需要 ALTCHA 人机验证": "웹: 로그인 / 등록에 ALTCHA 인증 필요", "网页端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "웹: 로그인 / 등록에 ALTCHA 인증 필요(현재 사용 중)", "网页管理地址": "웹 관리 주소", "群晖 NAS": "Synology NAS", "群晖需在「控制面板 → 应用程序门户 → WebDAV」里启用服务,端口默认 5005(HTTP)/ 5006(HTTPS)。": "Synology는 '제어판 → 응용 프로그램 포털 → WebDAV'에서 서비스를 활성화하세요. 기본 포트는 5005(HTTP)/5006(HTTPS)입니다.", "脱敏词表": "마스킹 규칙", "腾讯云 COS": "텐센트 클라우드 COS", "自动同步": "자동 동기화", "自动同步上次失败": "마지막 자동 동기화 실패", "自动续写": "자동 이어쓰기", "自定义 User-Agent": "사용자 정의 User-Agent", "自定义客户端分类": "사용자 지정 클라이언트 분류", "自定义客户端数量已达上限": "사용자 지정 클라이언트 수가 한도에 도달함", "自定义提供商 {id}": "커스텀 제공자 {id}", "自定义网站和应用界面中显示的名称与 Logo。": "웹사이트와 앱 화면에 표시할 이름과 로고를 변경합니다.", "自定义识别规则": "사용자 지정 식별 규칙", "自愈保护": "자가 복구 보호", "至少 12 位": "12자 이상", "至少 8 位,换机下载时需要": "8자 이상, 다른 컴퓨터에서 복원할 때 필요", "至少要保留一个分组": "그룹은 최소 하나 남아야 합니다", "英语": "영어", "范围 5–120 秒,并受原请求时限约束。": "범위 5–120초이며 원래 요청 제한 시간에도 묶입니다.", "范围为 5–120 秒,并受原请求时限约束。图片过大、格式错误或下载失败不会被当作模型不支持图片。": "5~120초 범위이며 원래 요청의 제한 시간도 적용됩니다. 이미지 크기 초과, 형식 오류 또는 다운로드 실패를 이미지 미지원으로 판단하지 않습니다.", "被更高优先级覆盖": "더 높은 우선순위가 적용됨", "装上{size}的官方身份提示词": "공식 아이덴티티 프롬프트 설치({size})", "装成 App 后从桌面图标直接进入:全屏打开、没有地址栏。": "앱으로 설치하면 홈 화면 아이콘에서 바로 열립니다. 전체 화면, 주소 표시줄 없음.", "覆盖": "덮어쓰기", "规则 / 匹配方式": "규칙 / 일치 방식", "规则可以增删改、启停和调整顺序;替换内容留空表示删除匹配内容。恢复默认只重置词表,不改开关和提供商范围。": "규칙 추가, 편집, 삭제, 활성화, 비활성화 및 순서 변경이 가능합니다. 치환 내용을 비우면 일치 부분을 삭제합니다. 기본값 복원은 규칙만 초기화하고 스위치와 제공자 범위는 변경하지 않습니다.", "规则名称": "규칙 이름", "规则名称不能为空,且最多 {max} 个字符": "규칙 이름은 필수이며 최대 {max}자까지 입력할 수 있습니다", "规则已保存,对后续请求生效;当前历史记录未修改。": "규칙이 저장되어 이후 요청에 적용됩니다. 현재 과거 기록은 변경되지 않았습니다.", "规则忽略大小写,只影响新请求的日志与统计,不改变模型选择或权限。": "규칙은 대소문자를 구분하지 않으며 새 요청의 로그와 통계에만 적용됩니다. 모델 선택이나 권한은 바뀌지 않습니다.", "规则编号:{id}": "규칙 ID: {id}", "视觉模型": "비전 모델", "视觉模型先识读图片,再由原模型分析和回答。": "비전 모델이 먼저 이미지를 읽고 원래 모델이 분석하여 답변합니다.", "视觉模型来源": "비전 모델 출처", "视觉模型的思考等级": "비전 모델의 사고 수준", "视觉模型直接回答": "비전 모델이 직접 답변", "视觉模型识读图片": "비전 모델이 이미지를 읽음", "解码后小于这个体积的图片保持原样。默认 512KB,可填 0–10240;填 0 表示所有内嵌图片都过一遍。": "디코딩 후 크기가 이 값보다 작은 이미지는 그대로 둡니다. 기본 512KB, 0~10240까지 지정할 수 있으며, 0이면 모든 인라인 이미지를 처리합니다.", "解除失败:{message}": "해제 실패: {message}", "触发阈值": "적용 임계값", "计数": "집계", "计量单位": "표기 단위", "让 Codex 在收到最终答案后收起中间过程。仅为严格识别的 Codex Responses 请求补阶段标记,报表归类和来源声明不影响此判断。正常结束且没有工具调用的非空回答才补 final_answer,工具调用前的说明补 commentary;错误、截断、缺少结束信号或未知结束原因不补最终答案标记。默认关闭,不改变回答文字,也不减少模型思考或用量。": "Codex가 최종 답변을 받은 뒤 중간 과정을 접을 수 있게 합니다. 엄격하게 식별된 Codex Responses 요청에만 단계 표시를 추가하며, 보고서 분류나 클라이언트의 출처 선언에는 영향을 받지 않습니다. 정상 종료되고 도구 호출이 없는 비어 있지 않은 답변에만 final_answer를, 도구 호출 전 설명에는 commentary를 붙입니다. 오류, 잘림, 종료 신호 누락 또는 알 수 없는 종료 사유에는 최종 답변 표시를 붙이지 않습니다. 기본값은 꺼짐이며 답변 내용, 모델의 추론과 사용량은 바뀌지 않습니다.", "许可原文": "라이선스 원문", "许可原文已随软件内置,无需联网即可查看;打开项目来源链接需要联网。": "라이선스 원문은 앱에 포함되어 있어 오프라인으로 볼 수 있습니다. 프로젝트 출처 링크를 열려면 인터넷 연결이 필요합니다.", "许可核对版本": "라이선스 확인에 사용한 리비전", "设置不可隐藏(隐藏了只能清缓存找回来)": "\"설정\"은 숨길 수 없습니다(숨기면 저장소를 지워야 되돌릴 수 있습니다)", "设置备份密码": "백업 비밀번호 설정", "设置识别规则": "식별 규칙 설정", "访问时请使用目标设备能连接到的地址;这里显示的本机地址不代表公网可达。": "접속하는 기기에서 연결할 수 있는 주소를 사용하세요. 여기에 표시된 주소가 인터넷에서 접근 가능함을 의미하지는 않습니다.", "识别依据": "식별 근거", "识别规则数量已达上限": "식별 규칙 수가 한도에 도달함", "词表为空,不会改写任何指纹。可以新增规则或恢复默认词表。": "규칙 목록이 비어 있어 지문을 수정하지 않습니다. 규칙을 추가하거나 기본 규칙을 복원하세요.", "该提供商暂无可编辑的专属设置": "이 제공자에는 편집할 수 있는 전용 설정이 없습니다", "详细日志": "상세 로그", "语言设置": "언어 설정", "请先保存设置再同步": "동기화하기 전에 설정을 저장하세요", "请先在 Cloudflare 创建 Turnstile 组件,建议选择 Managed 模式,并添加面板实际使用的域名。": "먼저 Cloudflare에서 Turnstile 위젯을 만드세요. Managed 모드를 권장하며 패널에서 실제로 사용하는 도메인을 추가하세요.", "请填一个分组名": "그룹 이름을 입력하세요", "请填写管理员账号(64 字符以内)": "관리자 계정을 입력하세요(64자 이내)", "请求发出后等待上游响应头的最大时间(秒),默认 300 秒,范围 1~3600。": "요청을 보낸 뒤 업스트림 응답 헤더를 기다리는 최대 시간(초). 기본 300초, 범위 1~3600.", "请求带有不同软件的标识,未自动归类;可用自定义规则明确归属。": "요청에 서로 다른 소프트웨어 식별 정보가 있어 자동 분류하지 않았습니다. 사용자 규칙으로 분류를 지정할 수 있습니다.", "请求提供商 / 模型支持": "제공자 / 모델 지원 요청", "请求日志保留天数": "요청 로그 보존 일수", "请求日志保留数量上限": "요청 로그 보관 건수 상한", "请求记录": "요청 기록", "请求超时": "요청 타임아웃", "请求转发到上游失败时(服务器瞬时错误、连接失败,以及 WorkBuddy 的 11-128 敏感词拦截),网关会等一段间隔后再发一次。次数分两档,管的是两件事:①「同一账号重试次数」在同一账号上原地重发几次 —— 一般是提示词被上游拦截、或链路瞬时抖动,等一会儿重发往往就好了;②「切换账号重试次数」这份请求最多再换几个账号试 —— 首发的那个账号不算,每换一个扣一次,不分是不是同一家(换到同一家的下一个账号也算一次),换满还失败就把错误返回给客户端。两项都设为 0 表示失败不重试、直接报错。注意账号级限额(429)不占这里的换号次数 —— 那类失败走「冷却该账号并换下一个账号」的降级,与这里的重试是两条路。另有「指定错误码直接换号」名单(默认 402):命中名单的上游状态码不在同一账号重发,直接按队列换下一个账号继续试(换号也占「切换账号重试次数」),换满仍失败才把错误返回给客户端。": "업스트림으로 전달이 실패하면(서버의 일시적 오류, 연결 실패, WorkBuddy의 11-128 금칙어 차단) 게이트웨이가 일정 간격을 기다린 뒤 한 번 더 보냅니다. 횟수는 두 가지로 나뉘며 서로 다른 일을 담당합니다. ①「동일 계정 재시도 횟수」는 같은 계정에서 제자리로 몇 번 재전송할지를 정합니다. 보통 시스템 프롬프트가 업스트림에 차단되었거나 경로가 순간적으로 흔들린 경우로, 잠시 후 다시 보내면 대개 해결됩니다. ②「계정 전환 재시도 횟수」는 이 요청이 최대 몇 개의 계정으로 더 시도할지를 정합니다. 최초 전송 계정은 제외하고 계정을 바꿀 때마다 1회씩 차감되며, 같은 제공자인지 여부는 따지지 않습니다(같은 제공자의 다음 계정으로 바꿔도 1회로 계산). 횟수를 다 써도 실패하면 오류를 클라이언트에 반환합니다. 두 항목을 모두 0으로 설정하면 실패 시 재시도하지 않고 바로 오류를 반환합니다. 계정 단위 할당량 초과(429)는 여기의 계정 전환 횟수를 소모하지 않습니다. 그런 실패는 「해당 계정을 쿨다운하고 다음 계정으로 전환」하는 폴백 경로를 타며, 여기의 재시도와는 별개입니다. 또한 「지정 오류 코드 즉시 계정 전환」 목록(기본 402)이 있습니다. 목록에 해당하는 업스트림 상태 코드는 같은 계정에서 재전송하지 않고 바로 큐의 다음 계정으로 넘어가 계속 시도하며(계정 전환도 「계정 전환 재시도 횟수」를 소모), 횟수를 다 써도 실패하면 오류를 클라이언트에 반환합니다.", "请求重试": "요청 재시도", "请至少选择一个提供商": "제공자를 하나 이상 선택하세요", "请输入同步密码": "동기화 비밀번호를 입력하세요", "请输入当前密码": "현재 비밀번호를 입력하세요", "请输入服务端密钥": "비밀 키를 입력하세요", "请选择可用的标识请求头": "사용 가능한 식별 헤더를 선택하세요", "请选择归属客户端": "분류할 클라이언트를 선택하세요", "读取云同步设置失败:{message}": "클라우드 동기화 설정을 읽지 못했습니다: {message}", "读取失败:{message}": "읽기 실패: {message}", "读取完整非流式响应体允许的最大时间(秒),默认 300 秒,范围 1~3600。": "비스트리밍 응답 본문 전체를 읽는 데 허용되는 최대 시간(초). 기본 300초, 범위 1~3600.", "读取网关信息失败:{message}": "게이트웨이 정보 읽기 실패: {message}", "读取远端…": "원격 읽는 중…", "读取远端信息失败:{message}": "원격 정보를 읽지 못했습니다: {message}", "调用方声明": "호출자 선언", "调试报文": "디버그 메시지", "调试模式": "디버그 모드", "调试模式设置已刷新": "디버그 모드 설정을 새로 고쳤습니다", "负载均衡": "부하 분산", "账号列表": "계정 목록", "账号导入 / 导出": "계정 가져오기 / 내보내기", "账号路由": "계정 라우팅", "账号页表格的两项显示偏好,只存在本机(localStorage),不影响账号数据与转发。「积分合计只统计当前筛选出来的账号」:账号页每一家的分组带右侧有一枚「可用合计」,默认按整组求和 —— 不受筛选、搜索影响,被筛掉的账号也计入(余额是资产,禁用也只表示不参与转发,额度仍在账上)。打开这一项后改为只累加当前可见的行:例如筛出 1 个 100 积分的账号,合计就是 100,而不是同组两个账号之和 1,000。分页不参与这个口径 —— 翻页看的是同一份结果的不同屏,合计不随页码变化。「隐藏账号名」与表头「账号」旁边那颗眼睛是同一个开关:打开后账号列的名字整体显示成星号,适合截图分享时遮挡账号。": "계정 표의 표시 설정 두 가지입니다. 이 컴퓨터에만 저장되며(localStorage) 계정 데이터나 포워딩에는 영향을 주지 않습니다. \"포인트 합계를 현재 필터에 표시된 계정만으로 계산\": 계정 페이지의 각 제공자 그룹 띠 오른쪽에 \"사용 가능 합계\"가 있습니다. 기본값은 그룹 전체를 합산하며 필터와 검색의 영향을 받지 않고, 필터에서 제외된 계정도 포함됩니다(잔액은 자산이며, 비활성화는 포워딩에 참여하지 않는다는 뜻일 뿐 포인트는 그대로 남습니다). 이 항목을 켜면 현재 보이는 행만 더합니다. 예를 들어 100포인트 계정 하나로 필터링하면 합계는 100이며, 같은 그룹 두 계정의 합인 1,000이 아닙니다. 페이지 나누기는 이 계산에 포함되지 않습니다. 페이지는 같은 결과를 다른 화면에서 보는 것일 뿐이므로 페이지를 넘겨도 합계는 바뀌지 않습니다. \"계정 이름 숨기기\"는 표의 \"계정\" 열 옆 눈 아이콘과 같은 스위치입니다. 켜면 계정 열의 이름이 별표로 표시되어 스크린샷 공유 시 가릴 수 있습니다.", "账户": "계정", "超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件。把天数改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。可填范围为 1–3650 天。请求日志 / 按天聚合 / 签到记录已全量保留、不再自动删除,要清历史请到对应页面手动清空。": "보존 기간을 초과한 부분은 삭제됩니다: 이벤트 로그는 로그인, 계정 전환, 429 전환 같은 시스템 이벤트입니다. 일수를 줄여(예: 30일 → 7일) 저장하면 초과된 기록이 즉시 삭제되며 되돌릴 수 없습니다. 늘리거나 그대로 두면 아무것도 삭제되지 않습니다. 입력 범위는 1–3650일입니다. 요청 로그 / 일별 집계 / 출석 기록은 전량 보존되어 자동 삭제되지 않습니다. 기록을 지우려면 해당 페이지에서 직접 비워 주세요.", "超出的历史数据会被立即删除,且不可恢复。": "초과된 과거 데이터는 즉시 삭제되며 복구할 수 없습니다.", "超时": "타임아웃", "超时设置已刷新": "타임아웃 설정을 새로 고쳤습니다", "跟随模型配置": "모델 설정 따르기", "跟随系统 · 浅色 · 深色": "시스템 · 라이트 · 다크", "跟随默认": "기본값 따르기", "跨域访问": "CORS", "路由": "라우팅", "路由组只使用组内成员;普通路由只使用参与范围内的账号和模型。": "라우트 그룹은 그룹 내 구성원만 사용하고 일반 라우트는 참여 범위 내 계정과 모델만 사용합니다.", "路由设置已刷新": "라우팅 설정을 새로고침했습니다", "跳过 {n} 个": "{n}개 건너뜀", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;负载均衡是每条请求换下一位,把负载摊到各个账号上。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时)、被 429 的账号垫底排到队尾 30 分钟、余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 前两层可以在下面按需开关,限制器由账号的「限制器」设置管。": "요청 전송 시 계정을 어떤 순서로 고르는지: ① \"라우팅 전략\"이 대기 규칙을 정합니다 — 순서 우선은 1 번째 계정이 응답하지 못하게 될 때(레이트 리밋 / 장애 / 잔여량 소진)까지 모든 요청을 처리하고 그다음으로 넘어갑니다. 부하 분산은 요청마다 다음 계정으로 돌려 부하를 여러 계정에 나눕니다. ② \"세션 고정\"은 같은 세션(같은 모델 + 같은 첫 메시지)을 가능한 한 같은 계정에 묶어 둡니다 — 여러 턴 대화에서 업스트림 컨텍스트 캐시를 재사용해 계정 교체와 낭비가 줄어듭니다. 자동은 5 분, 세션 내는 6 시간 고정하며, 매 턴과 끄기는 고정하지 않습니다. 계정의 대기 순번(계정 표의 1 열)은 모든 전략의 기반이고 전략은 그 위에서 작동합니다. 라우팅에는 자가 복구 보호가 3 겹 있습니다: 전송 실패한 계정은 잠시 물러나고(15 분부터 시작해 실패마다 2 배, 최대 1 시간), 잔여량이 있는데 429 를 받은 계정은 30 분간 맨 뒤로 가며, 잔여량 소진 / 기간 토큰 한도 도달 계정은 리미터가 가로막습니다 — 앞의 2 가지는 아래에서 필요에 따라 켜고 끌 수 있고, 리미터는 각 계정의 \"리미터\" 설정이 관할합니다.", "转发前压缩对话里内嵌的大图(只改发给上游的副本,生图与图片编辑不受影响)": "포워딩 전에 대화에 포함된 큰 이미지를 압축합니다(상류로 보내는 사본만 변경되며, 이미지 생성과 편집에는 영향 없음)", "转发前将 developer 角色消息转换为 system,兼容不支持 developer 角色的 OpenAI 兼容上游": "전달 전에 developer 역할 메시지를 system으로 변환하여 developer 역할을 지원하지 않는 OpenAI 호환 업스트림과 호환", "转发失败的账号休息一会儿再回来:15 分钟起步,连续失败翻倍,封顶 1 小时;成功一次立即恢复。目的是「让这次失败先凉一会儿」,免得一条条地反复撞同一个坏账号。": "전송에 실패한 계정은 잠시 쉬고 돌아옵니다: 15 분부터 시작해 연속 실패마다 2 배, 최대 1 시간. 한 번 성공하면 즉시 복구됩니다. \"실패를 잠시 식히는\" 것이 목적으로, 같은 불량 계정을 요청마다 반복해서 두드리지 않게 합니다.", "转发链路": "전달 경로", "轮询间隔": "폴링 간격", "软件标识超过 1 KB,已截断保存;匹配仅使用保留部分。": "소프트웨어 식별 정보가 1 KB를 초과하여 잘라 저장했습니다. 일치 판정에는 저장된 부분만 사용합니다.", "软件版本": "소프트웨어 버전", "轻量模式": "경량 모드", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 套餐池(Start Plan)通道不可用,相关请求会在请求日志里注明原因": "경량 모드가 켜져 있습니다: 창을 닫으면 UI 프로세스가 파괴되고(약 200MB 메모리 해제) 게이트웨이는 백그라운드에서 계속됩니다. UI가 파괴된 동안 ZCode 플랜 풀 (Start Plan) 채널을 사용할 수 없으며, 해당 요청은 요청 로그에 사유가 기록됩니다", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 活动套餐通道不可用,相关请求会在请求日志里注明原因": "경량 모드 켜짐: 창을 닫으면 인터페이스 프로세스가 파괴되고(약 200MB 메모리 해제) 게이트웨이는 백그라운드에서 계속됩니다. 인터페이스가 파괴된 동안에는 ZCode 활동 요금제 채널을 사용할 수 없으며, 관련 요청은 요청 로그에 사유가 기록됩니다", "轻量模式(关窗释放界面内存)": "경량 모드(창을 닫아 인터페이스 메모리 해제)", "辅助识图": "보조 이미지 읽기", "辅助识图 · 原模型回答": "보조 읽기 · 원래 모델이 답변", "辅助识图保留原模型回答;切换视觉模型会让视觉模型直接回答。本次授权也包含已设置的模型单独配置。": "보조 읽기는 원래 모델이 답변하며 모델 전환은 비전 모델이 직접 답변합니다. 이번 권한 확인에는 모델별 설정도 포함됩니다.", "辅助识图或切换视觉模型,默认关闭": "보조 이미지 읽기 또는 비전 모델 전환, 기본 꺼짐", "辅助识图配置": "보조 이미지 읽기 설정", "输入同步密码": "동기화 비밀번호 입력", "输入当前登录用的密码": "현재 로그인 비밀번호를 입력하세요", "输入状态码,回车添加": "상태 코드를 입력하고 Enter로 추가", "运行形态": "실행 형태", "近期没有命中样本,不代表未来请求不会命中。": "최근 일치하는 샘플이 없어도 이후 요청은 일치할 수 있습니다.", "还原": "되돌리기", "还有额度时被 429 的账号排到队尾,30 分钟后自动回到队列(成功转发一次也会立即回来)。它标记的是「疑似共享池被别人抢」,不是「这个账号本身有问题」。⚠️ 注意它与路由策略的配合:在「家内轮询」下,队尾意味着这一家整体被往后排 —— 如果某个提供商的账号被批量限流,它们会集体沉到队尾,那个家可能长时间轮不到。这时可以关掉本项,让 429 过的账号只受冷却约束(冷却到点自动回来)。": "잔여량이 남아 있는데 429 응답을 받은 계정은 맨 뒤로 밀렸다가 30 분 후 자동으로 복귀합니다(전송 한 번 성공 시 즉시 복귀). 이는 \"공유 풀을 남이 가져가고 있는 것으로 의심\"을 표시하는 것이지 \"이 계정 자체의 문제\"가 아닙니다. ⚠️ 라우팅 전략과의 조합에 주의: \"제공자 내 순환\"에서는 맨 뒤 = 제공자 전체가 뒤로 밀린다는 뜻 — 한 제공자의 계정들이 일괄 레이트 리밋을 당하면 전부 맨 뒤로 가라앉아 그 제공자가 오랫동안 순서가 오지 않을 수 있습니다. 이럴 때는 이 항목을 꺼서 429 를 받은 계정이 쿨다운 규칙만 따르도록 하면 좋습니다(쿨다운이 끝나면 자동 복귀).", "还没有可用的视觉模型。": "아직 사용할 수 있는 비전 모델이 없습니다.", "还没有同步过。": "아직 동기화한 적이 없습니다.", "还没有添加服务器。点右上角「添加」,填入网关所在机器的 IP 或域名与端口。": "서버가 없습니다. 오른쪽 위 \"추가\"를 눌러 게이트웨이가 실행 중인 기기의 IP 또는 도메인과 포트를 입력하세요.", "还没有装载任何数据。": "아직 로드된 데이터가 없습니다.", "还没有读到版本信息": "버전 정보를 아직 읽지 못했습니다", "还没有选择模型,这块设置暂时不起作用。": "모델을 아직 선택하지 않아 이 블록은 지금 아무 동작도 하지 않습니다.", "这一份就是「替换 / 追加」模式下网关要发的 system 正文。": "이 본문이 「교체 / 추가」 모드에서 게이트웨이가 보낼 system 본문입니다.", "这一项已隐藏": "이 항목은 숨겨져 있습니다", "这一项正在显示": "이 항목은 표시 중입니다", "这些模型的请求交给当前路由内可用的视觉模型回答,不再回到原模型。": "이 모델들의 요청은 현재 라우트에서 쓸 수 있는 비전 모델이 원래 모델 대신 답합니다.", "这些模型看到图片时,先把图片交给 {model} 读一遍,再由它们自己结合读到的内容回答。": "이 모델들이 이미지를 받으면 먼저 {model}이(가) 읽고, 읽은 내용을 바탕으로 원래 모델이 답합니다.", "这些模型看到图片时,先把图片交给「沿用工具服务的视觉分析模型」读一遍,再由它们自己结合读到的内容回答。": "이 모델들이 이미지를 받으면 먼저 도구 서비스의 비전 모델이 읽고, 읽은 내용을 바탕으로 원래 모델이 답합니다.", "这只模型只负责看图,最终仍由原模型回答。": "이 모델은 이미지만 읽고 최종 답변은 원래 모델이 합니다.", "这只模型直接接收图片与对话,完成本次回答。": "이 모델이 이미지와 대화를 직접 받아 이번 답변을 완성합니다.", "这台网关未启用机器人校验": "이 게이트웨이는 봇 확인을 사용하지 않습니다", "这台网关没有管理员,用一把已启用的 API Key 访问。": "이 게이트웨이에는 관리자가 없습니다. 활성화된 API Key로 접속하세요.", "这条历史请求没有保存识别依据,不能据此自动创建规则。": "이 과거 요청에는 식별 근거가 저장되지 않아 이를 바탕으로 규칙을 자동 생성할 수 없습니다.", "这条规则已被删除,请关闭编辑后重新添加。": "이 규칙이 삭제되었습니다. 편집기를 닫고 다시 추가하세요.", "这里只列出已保存的提供商配置;未配置的提供商沿用全局设置,可从下拉框手动添加。用户保存的模式、文件和正文优先于全局设置,「跟随默认」只取消该提供商的模式、文件和正文覆盖。ZCode 套餐池默认由插件按三块装配,客户端系统正文合入第三块,不会自动创建替换规则;手动修改的网关提示词段或关闭开关仍以用户配置为准,能否被接受取决于上游规则。": "저장된 제공자 설정만 표시합니다. 설정하지 않은 제공자는 전역 설정을 따르며 드롭다운에서 수동으로 추가할 수 있습니다. 저장한 모드, 파일, 본문은 전역 설정보다 우선합니다. 「기본값 따르기」는 해당 제공자의 모드, 파일, 본문 재정의만 해제합니다. ZCode Start Plan은 기본적으로 플러그인이 세 블록을 구성하고 클라이언트의 system 본문을 세 번째 블록에 합칩니다. 대체 규칙은 자동으로 만들지 않습니다. 수동으로 수정한 게이트웨이 프롬프트 블록이나 구성 스위치를 끈 설정은 그대로 우선 적용되며, 허용 여부는 업스트림 규칙에 따라 달라집니다.", "进程 PID": "프로세스 PID", "远程根目录": "원격 루트 디렉터리", "远端同一路径下的旧快照。事件日志、请求明细与调试报文不会上传。": "같은 원격 경로의 이전 스냅샷을 덮어씁니다. 이벤트 로그, 요청 상세, 디버그 패킷은 업로드되지 않습니다.", "远端已有一份快照,将被覆盖": "원격에 이미 스냅샷이 있으며 덮어씁니다", "远端快照使用了另一把账号密钥,但没有携带密钥文件,无法在本机解密。请在原来那台机器上重新上传一次。": "원격 스냅샷이 다른 계정 키를 사용하지만 키 파일이 포함되어 있지 않아 이 컴퓨터에서 복호화할 수 없습니다. 원래 컴퓨터에서 다시 업로드하세요.", "远端快照使用的账号密钥与本机不同。请输入上传那台机器设置的同步密码,用它解出密钥装到本机后再继续下载。": "원격 스냅샷은 이 컴퓨터와 다른 계정 키를 사용합니다. 업로드한 컴퓨터에서 설정한 동기화 비밀번호를 입력해 키를 복호화하고 이 컴퓨터에 설치한 뒤 다운로드를 계속하세요.", "远端数据与当前版本不兼容": "원격 데이터가 현재 버전과 호환되지 않습니다", "远端该路径下还没有快照,本次是首次上传。": "해당 원격 경로에 아직 스냅샷이 없습니다. 이번이 첫 업로드입니다.", "远端路径:{path}": "원격 경로: {path}", "远端还没有可下载的同步数据": "원격에 다운로드할 동기화 데이터가 없습니다", "连不上这台网关。确认地址与端口正确、网关已启动,且已开启「局域网访问」;用 https 时还要确认证书有效": "이 게이트웨이에 연결할 수 없습니다. 주소와 포트가 올바른지, 게이트웨이가 실행 중인지, \"LAN 접근\"이 켜져 있는지 확인하세요. https를 쓰는 경우 인증서가 유효한지도 확인하세요.", "连不上这台网关。请确认地址、端口与防火墙设置,网关需已启动;桌面端请在「设置 → 网关 → 网络访问」开启「允许其他设备访问网关」。使用 HTTPS 时还需确认证书有效。": "이 게이트웨이에 연결할 수 없습니다. 주소, 포트, 방화벽 설정을 확인하고 게이트웨이가 실행 중인지 확인하세요. 데스크톱 앱에서는 「설정 → 게이트웨이 → 네트워크 접근」에서 「다른 기기의 게이트웨이 접근 허용」을 켜세요. HTTPS를 사용하는 경우 인증서가 유효한지도 확인하세요.", "连接中超时": "연결 타임아웃", "连接失败:{message}": "연결 실패: {message}", "连续失败到阈值后把这个账号整个打开(默认关)。与失败退避的分工:退避管「单次失败先凉一会儿」,惩罚轻、自动恢复;熔断管「这个账号现在整体不对劲,别再一条条地试」,要连续成功若干次才关。打开期间该账号被跳过,除非全场只剩它 —— 那时仍放行试一次。": "연속 실패가 임계값에 도달하면 이 계정 전체를 차단합니다(기본값 꺼짐). 실패 백오프와의 역할 분담: 백오프는 \"단일 실패를 잠시 식히는\" 가벼운 처벌로 자동 복구되고, 서킷 브레이커는 \"이 계정이 전반적으로 이상하니 하나씩 시도하지 말 것\"으로, 연속 성공이 여러 번 이어져야 닫힙니다. 차단 중에는 해당 계정이 건너뛰어지지만, 남은 것이 이것뿐이면 한 번은 시도해 봅니다.", "追加": "추가", "追加网关提示词": "게이트웨이 시스템 프롬프트 추가", "退出失败:{message}": "로그아웃 실패: {message}", "退出登录": "로그아웃", "退出这台服务器的登录,不影响其他服务器": "이 서버에서만 로그아웃합니다. 다른 서버는 영향 없음", "选好接管回答的视觉模型后这块设置才会生效。": "답변을 이어받을 비전 모델을 고르면 이 블록이 적용됩니다.", "选好视觉模型后这块设置才会生效。": "비전 모델을 고르면 이 블록이 적용됩니다.", "选定提供商": "선택한 제공자", "选择一个或多个模型": "모델을 하나 이상 선택", "选择位置并加密备份": "저장 위치 선택 및 암호화 백업", "选择备份文件并恢复": "백업 파일을 선택해 복원", "选择提供商(可多选)": "제공자 선택(복수 선택 가능)", "选路规则": "선택 규칙", "选项与默认值由已启用插件提供;你保存的覆盖值不会被插件更新替换。": "활성화된 플러그인이 옵션과 기본값을 제공합니다. 플러그인을 업데이트해도 저장한 사용자 설정은 바뀌지 않습니다.", "选项与默认值由插件提供,你保存的修改不会被插件更新覆盖。切换提供商不会丢失未保存的修改。": "옵션과 기본값은 플러그인이 제공합니다. 플러그인 업데이트는 저장한 변경 사항을 덮어쓰지 않습니다. 제공자를 전환해도 저장하지 않은 수정 내용은 유지됩니다.", "透传": "패스스루", "透传客户端 system": "클라이언트 system 패스스루", "透传客户端 system(默认)": "클라이언트 system 패스스루(기본값)", "通常是网络问题,点右侧重试": "대개 네트워크 문제입니다. 오른쪽 재시도를 누르세요", "通用": "일반", "遇到 Bug、报错或异常行为": "버그, 오류 또는 비정상 동작 발생 시", "配置目录下的 agent2api.db(账号、日志、请求记录、调试报文与设置都在里面)。": "구성 디렉터리의 agent2api.db입니다(계정, 로그, 요청 기록, 디버그 메시지와 설정이 모두 들어 있습니다).", "采用本规则": "이 규칙 적용", "重启后生效,不影响当前操作": "재시작하면 적용됩니다. 하던 작업은 중단되지 않습니다", "重命名": "이름 변경", "重命名只更新分类显示名,不拆分历史用量,也不重新归类历史请求。": "이름 변경은 분류 표시명만 바꾸며 과거 사용량을 분리하거나 요청을 재분류하지 않습니다.", "重命名客户端分类": "클라이언트 분류 이름 변경", "重复清理": "반복 삭제", "重复清理直到不再变化(仅正则删除)": "변화가 없을 때까지 반복(정규식 삭제만 가능)", "重新读取会替换当前未保存的草稿。": "다시 불러오면 현재 저장하지 않은 초안이 바뀝니다.", "重新读取设置": "설정 다시 불러오기", "重编码质量": "재인코딩 품질", "重置会清空管理员账号与密码,面板将回到「未注册」状态。": "재설정하면 관리자 계정과 비밀번호가 지워지고 패널이 \"미등록\" 상태로 돌아갑니다.", "重置管理员": "관리자 재설정", "重试设置已刷新": "재시도 설정을 새로 고쳤습니다", "重试间隔": "재시도 간격", "铸造守卫每隔多久看一次库存(毫秒)。只影响发现缺货的反应速度 —— 库存够用时轮询不会铸造任何令牌。默认 2500 毫秒,可填 1000–30000。": "발행 가드가 재고를 몇 밀리초마다 확인할지 정합니다. 부족 발견 반응 속도에만 영향을 주며 — 재고가 충분하면 폴링해도 아무 토큰도 발행하지 않습니다. 기본값 2500 밀리초, 1000–30000 입력 가능.", "长边像素上限": "긴 변 최대 픽셀", "问题反馈": "문제 신고", "阿里云 OSS": "알리바바 클라우드 OSS", "限流中账号": "속도 제한 중 계정", "随包内嵌的快照(发版时的那份)": "앱에 내장된 스냅샷(릴리스 시점 기준)", "隐藏 {name}": "{name} 숨기기", "隐藏分组 {name}": "그룹 {name} 숨기기", "隐藏用户名": "사용자 이름 숨기기", "隐藏账号名(显示成星号)": "계정 이름 숨기기(별표로 표시)", "隐藏这一组": "이 그룹 숨기기", "非流式响应超时": "비스트리밍 응답 타임아웃", "面板登录": "패널 로그인", "面板端口": "패널 포트", "面板管理员账号": "패널 관리자 계정", "韩语": "한국어", "项目来源": "프로젝트 출처", "预览不发送模型请求,也不修改历史记录。": "미리보기는 모델을 호출하거나 과거 기록을 변경하지 않습니다.", "预览中…": "미리 보는 중…", "预览匹配": "일치 결과 미리보기", "预设": "프리셋", "首选不可用时再依次尝试备选。": "첫 선택을 쓸 수 없으면 대체 모델을 차례로 시도합니다.", "首选不可用时再依次尝试;留空则停止并说明原因。": "첫 선택을 쓸 수 없을 때 차례로 시도합니다. 비워 두면 중단하고 이유를 설명합니다.", "验证方式": "인증 방식", "验证码令牌池": "캡차 토큰 풀", "验证码令牌池设置已刷新": "캡차 토큰 풀 설정을 새로고침했습니다", "验证码库存的参考目标,默认 3 个,可填 1–10。只影响库存状态展示,不会因为低于目标自动生成令牌或弹出验证码。": "재고 표시 기준 목표입니다. 기본값은 3개이며 1–10 범위입니다. 상태 표시에만 영향을 주며 목표보다 적어도 토큰을 자동으로 생성하거나 인증 창을 띄우지 않습니다.", "高级设置": "고급 설정", "默认 10000 条,按日志级别分配保留容量,超出后清理最旧的记录;同时受保留天数限制。": "기본값은 10000건이며 로그 수준별로 보관 용량을 배분합니다. 초과분은 가장 오래된 기록부터 삭제하며 보관 일수 제한도 적용됩니다.", "默认 1000000 条(100 万),超出后清理最旧的请求记录及其原始正文,不影响按天聚合报表;同时受保留天数限制。": "기본값은 1000000건(100만 건)입니다. 초과하면 가장 오래된 요청 기록과 원문을 삭제하며 일별 집계 보고서에는 영향을 주지 않습니다. 보관 일수 제한도 적용됩니다.", "默认 5 分钟。间隔内的变化合并为最新快照,到期后上传;手动上传不受限制。失败后会延长等待并自动重试。": "기본값은 5분입니다. 대기 중 변경 사항은 최신 스냅샷으로 합쳐 간격이 지난 뒤 업로드합니다. 수동 업로드에는 제한이 없습니다. 실패하면 대기 시간을 늘려 자동으로 재시도합니다.", "默认仅本机可访问(127.0.0.1)。开启后监听所有 IPv4 网卡(0.0.0.0),访问范围由网络与防火墙决定,不限于局域网,也不会自动开放到公网。开启前必须注册面板管理员;管理接口需要管理员会话或网关 Key,API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。「同时开放网页管理面板」默认关闭,开启后可从其他设备的浏览器登录管理;关闭它不影响 API 转发和本机桌面管理。修改任一开关都需要重启应用。": "기본적으로 이 기기에서만 접근할 수 있습니다(127.0.0.1). 켜면 모든 IPv4 인터페이스(0.0.0.0)에서 수신하며 접근 범위는 네트워크와 방화벽 설정으로 결정됩니다. LAN으로 제한되지 않으며 인터넷에 자동 공개되지도 않습니다. 먼저 패널 관리자를 등록해야 합니다. 관리 API에는 관리자 세션 또는 게이트웨이 키가, API 호출에는 활성화된 게이트웨이 키가 필요합니다. 키가 없으면 기본 키를 자동 생성합니다. 웹 관리 패널은 기본적으로 꺼져 있으며, 켜면 다른 기기의 브라우저에서 로그인하여 관리할 수 있습니다. 꺼도 API 전달과 로컬 데스크톱 관리에는 영향이 없습니다. 어느 스위치든 변경 후 앱을 다시 시작해야 합니다.", "默认值通常够用,出问题时才需要调": "기본값으로 대부분 충분하며, 문제가 생겼을 때만 조정하세요", "默认关闭。开启后下一次 Codex 请求立即生效,不用重启;只对 Codex 来源的 /v1/responses 请求补阶段标记,其它客户端与 /v1/chat/completions 不受影响。": "기본값은 꺼짐입니다. 켜면 다음 Codex 요청부터 재시작 없이 적용되며, 단계 표시는 Codex 출처 /v1/responses 요청에만 보강되고 다른 클라이언트와 /v1/chat/completions는 영향을 받지 않습니다.", "默认关闭。改动立即生效,不用重启;关闭期间的跨源请求会被预检拦下。": "기본적으로 꺼져 있습니다. 변경 사항은 재시작 없이 즉시 적용되며, 꺼져 있는 동안의 교차 출처 요청은 프리플라이트에 걸립니다.", "默认关闭窗口不会退出程序,而是把窗口缩到系统托盘,转发继续在后台运行(OpenAI 客户端不受影响);要彻底退出程序,请在托盘图标上右键选「退出」。关掉这个开关后,点关闭按钮即退出程序、转发随之中断。「开机自动启动」开启后,登录系统时会自动启动本程序(通常直接驻留托盘),不需要手动打开。": "기본적으로 창을 닫아도 프로그램이 종료되지 않고 창이 시스템 트레이로 최소화되며 포워딩은 백그라운드에서 계속 실행됩니다(OpenAI 클라이언트는 영향을 받지 않습니다). 프로그램을 완전히 종료하려면 트레이 아이콘을 마우스 오른쪽 버튼으로 클릭하고 「종료」를 선택하세요. 이 스위치를 끄면 닫기 버튼을 누르는 즉시 프로그램이 종료되고 포워딩도 중단됩니다. 「자동 시작」을 켜면 시스템 로그인 시 이 프로그램이 자동으로 실행되며(보통 바로 트레이에 상주), 수동으로 열 필요가 없습니다.", "默认应用全部提供商(包含之后新增的插件与自定义提供商)。指定范围后,未选中的提供商不做指纹脱敏;清空选择自动回到全部提供商。": "기본적으로 이후 추가한 플러그인 및 사용자 지정 제공자를 포함한 모든 제공자에 적용합니다. 범위를 지정하면 선택하지 않은 제공자는 마스킹하지 않습니다. 선택을 비우면 전체 제공자로 돌아갑니다.", "默认开启。只改 role 字段本身,消息内容与顺序都不动;本项只改发给上游的副本,客户端看到的响应内容不变。": "기본값은 켜짐. role 필드만 수정하며 메시지 내용과 순서는 그대로입니다. 업스트림으로 보내는 사본에만 적용되고 클라이언트가 보는 응답은 변하지 않습니다.", "默认开启。只改发给上游的副本,客户端看到的响应与原图都不变;请求日志里保存的是客户端发来的原图,不是压缩后的版本。只作用在对话链路,生图 / 图片编辑不经过这里。改完对下一个请求立即生效,不用重启。": "기본값은 켜짐입니다. 바뀌는 것은 상류로 보내는 사본뿐이며, 클라이언트가 보는 응답과 원본 이미지는 그대로입니다. 요청 로그에는 압축본이 아니라 클라이언트가 보낸 원본 이미지가 저장됩니다. 대화 경로에만 적용되며 이미지 생성과 편집은 여기를 거치지 않습니다. 변경은 다음 요청부터 적용되며 재시작이 필요 없습니다.", "默认开启。命中明细会记进请求日志的「敏」标签(悬停可看命中了哪几条规则)。本项只改发给上游的副本,客户端看到的响应内容不变。": "기본적으로 켜져 있습니다. 적중 내역은 요청 로그의 「민감」 태그에 기록됩니다(마우스를 올리면 어떤 규칙에 걸렸는지 볼 수 있습니다). 이 항목은 업스트림으로 보내는 사본만 바꾸며 클라이언트가 받는 응답 내용은 달라지지 않습니다.", "默认开启并应用全部提供商。编辑词表或应用范围后点击「保存设置」,下一次请求立即生效,不用重启。命中明细仍记进请求日志的「敏」标签。": "기본적으로 활성화되어 모든 제공자에 적용됩니다. 규칙이나 범위를 편집한 후 설정 저장을 누르면 재시작 없이 다음 요청부터 적용됩니다. 일치 내역은 요청 로그의 마스킹 태그에 계속 기록됩니다.", "默认网关只监听 127.0.0.1,只有本机能访问。开启后网关改听所有网卡,同一局域网内的设备可以把 API 地址指向本机 IP 一起使用。出于安全考虑,开启前必须先注册一个面板管理员:管理接口从此要求管理员会话或网关 Key,模型额度不会对局域网裸奔;一把启用的网关 Key 都没有时,转发接口也会拒绝服务,直到创建第一把。改动需要重启应用生效。「同时开放网页管理面板」把管理界面也出给局域网(其他设备的浏览器打开本机 IP 即可管理),默认关闭 —— 桌面端的面板仍只由本程序自己出。": "기본적으로 게이트웨이는 127.0.0.1만 수신하며 로컬에서만 접근할 수 있습니다. 켜면 게이트웨이가 모든 네트워크 인터페이스를 수신하고, 같은 LAN의 기기에서 API 주소를 로컬 IP로 지정해 함께 사용할 수 있습니다. 보안을 위해 켜기 전에 패널 관리자를 먼저 등록해야 합니다. 관리 인터페이스는 이때부터 관리자 세션 또는 게이트웨이 키를 요구하므로 모델 할당량이 LAN에 무방비로 노출되지 않습니다. 활성화된 게이트웨이 키가 하나도 없으면 첫 키를 만들 때까지 포워딩 인터페이스도 서비스를 거부합니다. 변경 사항은 앱을 다시 시작해야 적용됩니다. 「웹 관리 패널도 함께 공개」는 관리 화면까지 LAN에 공개하며(다른 기기의 브라우저에서 로컬 IP를 열면 관리 가능), 기본적으로 꺼져 있습니다. 데스크톱 패널은 계속 이 프로그램에서만 제공됩니다.", "({n} 个整组隐藏)": " (그룹 {n}개 전체 숨김)", "({n} 行)": "({n}행)", "({n} 项被覆盖)": "({n}개 덮어씀)", "(全部为默认值)": "(모두 기본값)", "(官方原文)": "(공식 원문)", "(已存一份正文,{n} 行;切成「替换 / 追加」后生效)": "(저장된 본문 있음, {n}행; 「교체 / 추가」로 전환하면 적용)", "(已改)": "(수정됨)", "(已注册过会跳过这一步,直接生效)。": "(이미 등록한 경우 이 단계를 건너뛰고 바로 적용됩니다).", "(当前生效的就是这一份,{n} 行)": "(현재 적용 중인 본문, {n}행)", "(文件:{path})": "(파일: {path})", "(未生效)": "(미적용)", ",{items}": ", {items}", ",{time}": ", {time}", ",以及代理池 / 订阅里可能存在的代理凭据。请使用只有你能访问的私有存储;账号密钥由同步密码单独加密,泄露存储本身不等于泄露账号。": ", 그리고 프록시 풀/구독에 있을 수 있는 프록시 자격 증명이 포함됩니다. 본인만 접근할 수 있는 전용 스토리지를 사용하세요. 계정 키는 동기화 비밀번호로 별도 암호화되므로 스토리지가 유출되어도 계정이 유출되지는 않습니다.", ",包括恢复后需要重新登录管理面板。": " 통째로 교체됩니다. 복원 후에는 패널에 다시 로그인해야 합니다.", ",可直接用于登录。请妥善保管,不要外传或上传到公共位置。": ", 바로 로그인에 사용할 수 있습니다. 안전하게 보관하고 외부에 전달하거나 공공장소에 업로드하지 마세요.", ",文件里后续的改动在清空这里之前不再生效": ", 파일의 이후 변경 사항은 여기를 비우기 전까지 적용되지 않습니다", ",替换前的数据已备份为 {name}": ", 교체 전 데이터는 {name}(으)로 백업되어 있습니다", ",自定义提供商新增 {added} 个、更新 {updated} 个": ", 커스텀 제공자 {added}개 추가, {updated}개 업데이트", ";开关关闭时词表不执行": "; 스위치가 꺼져 있으면 규칙을 실행하지 않습니다", ";网页管理面板已一并开放(浏览器打开同一地址)": "; 웹 관리 패널도 함께 공개되었습니다(브라우저에서 같은 주소를 여세요)", "AI 调整后的 JSON({n} 字符)": "AI가 수정한 JSON({n}자)", "CodeArts 的账号余额还剩多少?": "CodeArts 계정 잔액이 얼마나 남았나요?", "JSON 文件会以文本发送给当前对话模型,其中的凭证也会保存在这条会话里。": "JSON 파일은 텍스트로 현재 대화 모델에 전송되며, 포함된 자격 증명도 이 대화에 저장됩니다.", "[已省略 {n} 字符的 JSON]": "[{n}자의 JSON 생략]", "attachment 与 content 只能给一个": "attachment와 content 중 하나만 지정하세요", "section 只能是 models / mappings / both": "section 은 models / mappings / both 중 하나여야 합니다", "{n} 个候选,{m} 个跳过": "후보 {n}개, 건너뜀 {m}개", "{n} 条映射": "{n}개 매핑", "{n} 条请求日志": "요청 로그 {n}개", "{n} 条运行日志": "실행 로그 {n}개", "{requests} 次请求,{tokens} Token": "요청 {requests}회, {tokens} Token", "「{name}」是空文件。": "「{name}」 파일이 비어 있습니다.", "「{name}」看起来是二进制文件,助手只接收 JSON 文本。": "「{name}」은(는) 바이너리 파일로 보입니다. 어시스턴트는 JSON 텍스트만 받습니다.", "「{name}」超过 {n} MB,请换一个小一点的 JSON 文件。": "「{name}」이(가) {n} MB를 초과합니다. 더 작은 JSON 파일을 선택하세요.", "「{name}」超过 {n} MB,请换一个小一点的 JSON 文件,或去添加账号页导入。": "「{name}」이(가) {n} MB를 초과합니다. 더 작은 JSON 파일을 선택하거나 계정 추가 페이지에서 가져오세요.", "一次最多 {n} 个文件。": "한 번에 최대 {n}개 파일까지 가능합니다.", "一次最多 {n} 个文件,多出的没有添加。": "한 번에 최대 {n}개 파일까지 가능합니다. 초과분은 추가되지 않았습니다.", "一次最多 {n} 张图片。": "한 번에 최대 {n}개 이미지입니다.", "一次最多 {n} 张图片,多出的没有添加。": "한 번에 최대 {n}개 이미지입니다. 초과 이미지는 추가하지 않았습니다.", "下载图片": "이미지 다운로드", "今天用了多少 Token?": "오늘 Token을 얼마나 사용했나요?", "会话响应不完整": "세션 응답이 불완전합니다", "保存位置": "저장 위치", "保存图片失败:{message}": "이미지 저장 실패: {message}", "保存思考等级失败:{message}": "사고 수준 저장 실패: {message}", "修改上传或已生成的图片,支持多张参考图。": "여러 참조 이미지로 업로드하거나 생성한 이미지를 편집합니다.", "修改文件": "파일 수정", "修改模型能力": "모델 기능 수정", "凭证会保存到网关;同一提供商下同一身份的账号会更新原凭证。文件若是整库导出的 accounts 数组,会按文件里的账号批量导入。": "자격 증명은 게이트웨이에 저장됩니다. 같은 공급자에서 동일 신원의 계정은 기존 자격 증명이 업데이트됩니다. 파일이 accounts 배열을 포함한 전체 내보내기라면 파일의 계정을 일괄 가져옵니다.", "分叉": "분기", "分叉会话失败:{message}": "대화 분기 실패: {message}", "分支": "분기", "删除会话失败:{message}": "세션 삭제 실패: {message}", "删除消息": "메시지 삭제", "删除这条对话": "이 대화 삭제", "删除这条对话?": "이 대화를 삭제할까요?", "删除这条消息?模型消息关联的工具结果也会一并删除。": "이 메시지를 삭제할까요? 모델 메시지에 연결된 도구 결과도 함께 삭제됩니다.", "助手设置没读出来,暂时存不了对话模型 —— 看输入框下方的提示。": "어시스턴트 설정을 읽지 못해 대화 모델을 아직 저장할 수 없습니다. 입력창 아래의 안내를 확인하세요.", "助手设置没读出来,暂时存不了思考等级 —— 看输入框下方的提示。": "어시스턴트 설정을 읽을 수 없어 사고 수준을 저장할 수 없습니다 — 입력창 아래 안내를 확인하세요.", "助手设置没读出来,现在还不能发消息 —— 看输入框下方的提示。": "어시스턴트 설정을 읽지 못해 아직 메시지를 보낼 수 없습니다. 입력창 아래의 안내를 확인하세요.", "单张参考图不能超过 10 MiB": "참조 이미지 한 개는 10 MiB를 초과할 수 없습니다", "历史会话": "세션 기록", "历史对话": "대화 기록", "原始 ID 的默认绑定不能删除,请关闭它的开关": "원본 ID의 기본 바인딩은 삭제할 수 없습니다. 스위치를 꺼 주세요", "原始报文或对话正文已省略": "원본 통신 데이터 또는 대화 본문이 생략되었습니다", "参数 {name} 只能是:{values}": "매개변수 {name}은(는) 다음 중 하나여야 합니다: {values}", "参数 {name} 必须是不小于 {min} 的整数": "매개변수 {name}은(는) {min} 이상의 정수여야 합니다", "参数 {name} 必须是不超过 {max} 个字符的字符串": "매개변수 {name}은(는) {max}자 이하의 문자열이어야 합니다", "参数 {name} 必须是布尔值": "매개변수 {name}은(는) 불리언 값이어야 합니다", "参数 {name} 必须是有效日期(YYYY-MM-DD)": "매개변수 {name}은(는) 유효한 날짜(YYYY-MM-DD)여야 합니다", "参数 {name} 必须是毫秒时间戳": "매개변수 {name}은(는) 밀리초 타임스탬프여야 합니다", "参数不完整(需要 provider / id / alias / action)": "매개변수가 부족합니다(provider / id / alias / action 필요)", "参考图仅支持 PNG、JPEG、WebP": "참조 이미지는 PNG, JPEG, WebP만 지원합니다", "参考图会交给图片编辑工具,当前对话模型不会读取图片。": "참조 이미지는 이미지 편집 도구로 전달되며 현재 대화 모델은 이미지를 읽지 않습니다.", "参考图片列表不能为空": "참조 이미지 목록은 비워 둘 수 없습니다", "参考图片编号不存在": "참조 이미지 번호가 존재하지 않습니다", "参考图片请使用附件编号、已生成图片 ID 或 HTTP(S) 链接": "참조 이미지에는 첨부 번호, 생성한 이미지 ID 또는 HTTP(S) 링크를 사용하세요", "发消息或做任务…(Enter 发送,Shift+Enter 换行,可粘贴图片或 JSON 文件)": "메시지나 작업을 입력하세요… (Enter 전송, Shift+Enter 줄바꿈, 이미지 또는 JSON 파일 붙여넣기 가능)", "发起模型测试": "모델 테스트 실행", "受限": "제한됨", "变更前确认": "변경 전 확인", "只支持图片和 JSON 凭证文件(.json / .info)": "이미지와 JSON 자격 증명 파일(.json / .info)만 지원합니다", "只支持图片和 JSON 凭证文件(.json / .info);「{name}」已跳过。": "이미지와 JSON 자격 증명 파일(.json / .info)만 지원합니다. 「{name}」은(는) 건너뛰었습니다.", "各账号余额还剩多少?": "각 계정의 잔액이 얼마나 남았나요?", "启用 / 禁用模型": "모델 활성화 / 비활성화", "启用 / 禁用账号": "계정 활성화 / 비활성화", "命令": "명령", "哪些模型在多家重复了?": "여러 제공업체에 중복된 모델은 무엇인가요?", "图片 {n}": "이미지 {n}", "图片工具包含不支持的参数:{name}": "이미지 도구에 지원하지 않는 매개변수가 있습니다: {name}", "图片工具没有返回可显示的图片": "이미지 도구가 표시 가능한 이미지를 반환하지 않았습니다", "图片工具缺少当前会话": "이미지 도구에 현재 세션이 없습니다", "图片工具需要提示词和图片模型": "이미지 도구에는 프롬프트와 이미지 모델이 필요합니다", "完全访问": "전체 액세스", "实时余额查询会请求上游,并可能触发已配置的自动禁用规则。": "실시간 잔액 조회는 업스트림에 요청을 보내며, 설정된 자동 비활성화 규칙이 적용될 수 있습니다.", "对指定模型发一次真实请求,回报连通性与耗时。": "지정한 모델에 실제 요청을 한 번 보내 연결성과 소요 시간을 보고합니다.", "对话由网关转发到上游模型,用量计入请求日志": "대화는 게이트웨이가 업스트림 모델로 전달하며, 사용량은 요청 로그에 기록됩니다", "导入账号文件": "계정 파일 가져오기", "将导入一个账号:": "계정 하나를 가져옵니다:", "就绪": "준비됨", "工具「{name}」未获授权,未执行。": "도구 \"{name}\"은(는) 허가되지 않아 실행되지 않았습니다.", "工具调用已达本轮上限,已停止继续执行。": "이번 턴의 도구 호출 한도에 도달하여 추가 실행을 중지했습니다.", "已从这条消息分叉为新对话": "이 메시지에서 새 대화를 분기했습니다", "已停止": "중지됨", "已停止生成": "생성을 중지했습니다", "已完成 {n} 项改动": "변경 {n}개를 완료했습니다", "已完成 {n} 项,剩余 {m} 项未执行": "{n}개를 완료했고, 나머지 {m}개는 실행되지 않았습니다", "已导入账号「{name}」": "계정 「{name}」을(를) 가져왔습니다", "已生成 {n} 张图片": "이미지 {n}개를 생성했습니다", "已调用": "호출함", "开关模型的对外可用性,不改其它属性。": "모델의 외부 가용성만 전환하고 다른 속성은 변경하지 않습니다.", "开始日期不能晚于结束日期": "시작 날짜는 종료 날짜보다 늦을 수 없습니다", "开始时间必须早于结束时间": "시작 시간은 종료 시간보다 빨라야 합니다", "当前安装包未包含原生图片保存能力,请更新应用。": "현재 앱 패키지에 기본 이미지 저장 기능이 없습니다. 앱을 업데이트하세요.", "当前客户端缺少读取接口:{name}": "이 클라이언트에 읽기 인터페이스가 없습니다: {name}", "当前对话没有可读取的文本附件:请先把 JSON 文件发给助手": "이 대화에는 읽을 수 있는 텍스트 첨부가 없습니다. 먼저 JSON 파일을 어시스턴트에게 보내세요", "思考过程": "사고 과정", "思考:跟随模型": "사고: 모델 따르기", "成功率": "성공률", "打开会话失败:{message}": "세션 열기 실패: {message}", "执行中": "실행 중", "执行结果": "실행 결과", "批量导入:新增 {added}、更新 {updated}、失败 {failed}": "일괄 가져오기: 추가 {added}, 업데이트 {updated}, 실패 {failed}", "把凭证文件交给对应提供商解析并落库;同身份账号会更新凭证。": "자격 증명 파일을 해당 공급자가 분석해 저장합니다. 동일 신원 계정은 자격 증명이 업데이트됩니다.", "把重复的模型加上家名前缀区分开": "중복된 모델에 제공자 이름 접두사를 붙여 구분하기", "拒绝": "거부", "按提供商名称查询模型、能力、来源与映射,支持自定义提供商。": "공급자 이름으로 모델, 기능, 정보 출처와 매핑을 조회합니다. 사용자 지정 공급자도 지원합니다.", "按提示词生成图片。": "프롬프트로 이미지를 생성합니다.", "按提示词编辑参考图片。": "프롬프트에 따라 참조 이미지를 편집합니다.", "按文件内容判断": "파일 내용으로 판단", "按文本生成图片,结果直接显示在对话中。": "텍스트로 이미지를 생성하여 대화에 표시합니다.", "提供商 id「{provider}」格式不正确": "공급자 id 「{provider}」 형식이 올바르지 않습니다", "提供商「{name}」匹配到多家,请使用提供商 ID:{list}": "공급자 \"{name}\"에 여러 항목이 일치합니다. 공급자 ID를 사용하세요: {list}", "改上下文窗口 / 最大输出 Token / 工具调用等能力位。": "컨텍스트 창 / 최대 출력 토큰 / 도구 호출 등의 기능 플래그를 수정합니다.", "改某一家的整组顺位(先试哪一家)。": "특정 제공자의 그룹 전체 순위를 변경합니다(어느 제공자를 먼저 시도할지).", "改账号在全局队列里的名次,决定主备与切换顺序。": "전역 큐에서 계정 순위를 변경해 주/예비와 전환 순서를 결정합니다.", "文件内容是空的": "파일 내용이 비어 있습니다", "文件过大({n} 字符):请先用 read_attachment 分段查看,或改用添加账号页导入": "파일이 너무 큽니다({n}자). 먼저 read_attachment로 나눠 확인하거나 계정 추가 페이지에서 가져오세요", "新增 / 删除映射名,支持批量加前缀与同名合并到多家。": "매핑 이름 추가 / 삭제. 일괄 접두사 추가와 같은 이름을 여러 제공자에 통합하는 것을 지원합니다.", "新建会话": "새 세션", "无法判断这些凭证属于哪家提供商。请先问用户,或用 provider 指定(常见 id:{list})": "이 자격 증명이 어느 공급자의 것인지 판단할 수 없습니다. 사용자에게 묻거나 provider로 지정하세요(일반 id: {list})", "无法读取图片": "이미지를 읽을 수 없습니다", "最高": "최대", "有什么可以帮你?可以问配置、查余额、让我改模型设置。": "무엇을 도와드릴까요? 설정 질문, 잔액 확인, 모델 설정 변경이 가능합니다.", "未命名对话": "제목 없는 대화", "未知的工具:{name}": "알 수 없는 도구: {name}", "权限模式": "권한 모드", "极低": "최소", "查看 API Key 详情必须指定 API Key 身份": "API Key 상세를 보려면 Key 식별 정보를 지정하세요", "查看图片": "이미지 보기", "查看模型候选账号、跳过原因和当前路由策略。": "모델의 후보 계정, 건너뛴 이유와 현재 라우팅 전략을 확인합니다.", "查询凭证、插件和定时任务等运行事件的脱敏摘要。": "인증 정보, 플러그인과 예약 작업 등의 실행 이벤트를 민감 정보를 가린 요약으로 조회합니다.", "查询生产请求的 Token 用量、成功率、排行和趋势。": "실제 운영 요청의 Token 사용량, 성공률, 순위와 추세를 조회합니다.", "查询用量报表": "사용량 보고서 조회", "查询请求日志": "요청 로그 조회", "查询请求状态、耗时、账号、错误与重试,不读取对话正文。": "대화 본문을 읽지 않고 요청 상태, 소요 시간, 계정, 오류와 재시도를 조회합니다.", "查询账号余额": "계정 잔액 조회", "查询路由队列": "라우팅 큐 확인", "查询运行日志": "실행 로그 조회", "标题总结失败:{message}": "제목 생성 실패: {message}", "标题总结提示词": "제목 생성 프롬프트", "标题总结模型": "제목 생성 모델", "标题总结设置已保存": "제목 생성 설정을 저장했습니다", "模型「{model}」当前不在可用列表中,请重新选择;也可到「模型管理」或「插件」页检查是否已启用。": "모델 \"{model}\"이(가) 현재 사용 가능한 목록에 없습니다. 다시 선택하세요. 「모델 관리」 또는 「플러그인」 페이지에서 활성화되어 있는지도 확인하세요.", "模型名称": "모델 이름", "模型响应未完整结束,请重试;未执行其中的工具调用。": "모델 응답이 완전히 끝나지 않았습니다. 다시 시도하세요. 응답에 포함된 도구 호출은 실행되지 않았습니다.", "模型对话": "모델 대화", "模型没有返回内容": "모델이 내용을 반환하지 않았습니다", "正在思考…": "생각 중…", "正在执行": "실행 중", "正在生成,点右侧按钮可停止": "생성 중 — 오른쪽 버튼을 누르면 중지됩니다", "正在读取可用模型…": "사용 가능한 모델을 불러오는 중…", "正在读取图片…": "이미지 불러오는 중…", "没有可用的模型": "사용 가능한 모델이 없습니다", "没有已启用的模型,请先在「模型管理」里启用": "활성화된 모델이 없습니다. 먼저 「모델 관리」에서 활성화하세요", "没有找到提供商「{name}」,请先不填 provider 查询,或用 keyword 搜索": "공급자 \"{name}\"을(를) 찾을 수 없습니다. 먼저 provider 없이 조회하거나 keyword로 검색하세요", "没有找到附件「{ref}」:编号从 1 开始,也可以用文件名": "첨부 파일 「{ref}」을(를) 찾을 수 없습니다. 번호는 1부터 시작하며 파일 이름으로도 지정할 수 있습니다", "没有提供要修改的项目": "수정할 항목이 지정되지 않았습니다", "测一下当前最快的模型通不通": "현재 가장 빠른 모델이 연결되는지 테스트하기", "浏览": "찾아보기", "消息操作": "메시지 작업", "深度推理": "심층 추론", "添加图片": "이미지 추가", "添加图片或 JSON 文件(也可粘贴或拖入)": "이미지 또는 JSON 파일 추가(붙여넣기·드래그 가능)", "添加图片或文件": "이미지 또는 파일 추가", "清空全部": "모두 지우기", "清空历史失败:{message}": "기록 지우기 실패: {message}", "现在有哪些账号被限流?": "지금 어떤 계정이 속도 제한 중인가요?", "生成图片": "이미지 생성", "生成的图片": "생성한 이미지", "用户目录": "사용자 폴더", "看看哪些模型在多家重复了": "여러 제공자에서 중복된 모델 확인하기", "禁用会把账号移出转发队列,线路可能因此断供。": "비활성화하면 계정이 포워딩 큐에서 빠지며, 이 경로가 끊길 수 있습니다.", "移除图片 {n}": "이미지 {n} 제거", "移除文件「{name}」": "파일 「{name}」 제거", "终端": "터미널", "编辑图片": "이미지 편집", "编辑消息": "메시지 편집", "聊天附件 {ref}": "채팅 첨부 {ref}", "自定义提供商模块未就绪(请刷新界面后重试)": "사용자 지정 공급자 모듈이 준비되지 않았습니다(인터페이스를 새로 고친 후 다시 시도하세요)", "获取模型列表": "모델 목록 조회", "获取账号列表": "계정 목록 조회", "获取账号详情": "계정 상세 조회", "计划": "계획", "设置模型映射 ID": "모델 매핑 ID 설정", "请先上传参考图片,或先生成一张图片": "먼저 참조 이미지를 업로드하거나 이미지를 생성하세요", "请提供 attachment 或 content": "attachment 또는 content를 지정하세요", "读取 {name}": "{name} 읽기", "读取 {name}({from}-{to} 字符)": "{name} 읽기({from}-{to}자)", "读取凭证状态、限流、并发、代理和限制器的本地快照。": "인증 정보, 속도 제한, 연결 수, 프록시와 제한 규칙의 로컬 상태를 읽습니다.", "读取历史会话失败:{message}": "대화 기록 읽기 실패: {message}", "读取响应不完整:{name}": "응답이 불완전합니다: {name}", "读取图片失败": "이미지를 읽지 못했습니다", "读取图片失败:{message}": "이미지를 읽지 못했습니다: {message}", "读取文件失败:{message}": "파일 읽기 실패: {message}", "读取模型清单失败": "모델 목록을 불러오지 못했습니다", "读取聊天里上传的 JSON / .info 文件,支持分页。": "채팅에 업로드된 JSON / .info 파일을 페이지 단위로 읽습니다.", "读取账号、启用状态、优先级与隐藏原因,支持筛选和分页。": "계정, 활성화 상태, 우선순위와 숨겨진 이유를 읽습니다. 필터링과 페이지 나누기를 지원합니다.", "读取附件": "첨부 읽기", "读各提供商的模型清单、映射名与启用状态。": "각 제공자의 모델 목록, 매핑 이름, 활성화 상태를 읽습니다.", "读各账号的额度 / 剩余用量。": "각 계정의 할당량 / 남은 사용량을 읽습니다.", "调整提供商顺位": "제공자 순위 조정", "调整账号优先级": "계정 우선순위 조정", "账号「{name}」匹配到多条记录,请使用账号 ID:{ids}": "계정 \"{name}\"에 여러 기록이 일치합니다. 계정 ID를 사용하세요: {ids}", "账号额度": "계정 할당량", "跟随对话模型": "대화 모델 따르기", "跟随模型(不指定)": "모델 따르기(지정 안 함)", "跟随网关设置": "게이트웨이 설정 따르기", "返回": "뒤로", "还没有历史对话": "대화 기록이 없습니다", "还没有配置默认模型": "기본 모델이 아직 설정되지 않았습니다", "这一版网关还没有 AI 助手接口(HTTP 404),请升级网关后重试。": "이 버전의 게이트웨이에는 AI 어시스턴트 API가 없습니다(HTTP 404). 게이트웨이를 업데이트한 후 다시 시도하세요.", "这一版网关还没有 AI 助手接口(HTTP 404):后端还是旧的,重新编译 / 重启客户端后再试。{message}": "이 버전의 게이트웨이에는 AI 어시스턴트 API가 아직 없습니다 (HTTP 404): 백엔드가 오래되었습니다. 다시 빌드하거나 클라이언트를 재시작한 후 시도하세요. {message}", "这一轮来回已达 {n} 次上限,我先停下等你指示(可以换个说法,或拆成几步让我做)。": "이번 턴이 왕복 {n}회 한도에 도달해 지시를 기다리며 멈췄습니다(다르게 표현하거나 몇 단계로 나눠 주세요).", "这条会话没能存进历史:{message}": "이 세션을 기록에 저장하지 못했습니다: {message}", "这次工具调用没有保存完成结果,历史回放不会重新执行。": "이 도구 호출의 완료 결과가 저장되지 않았습니다. 기록을 다시 표시해도 재실행하지 않습니다.", "这里只改本次会话用的模型,不会改网关里保存的默认值。": "여기서는 이번 세션에 쓸 모델만 바뀌며, 게이트웨이에 저장된 기본값은 그대로입니다.", "连接网关失败({base}):{message}": "게이트웨이 연결 실패 ({base}): {message}", "选择 API Key": "API Key 선택", "选择 API Key…": "API Key 선택…", "选择对话模型": "대화 모델 선택", "配置响应不完整": "구성 응답이 불완전합니다", "问点什么…": "무엇이든 물어보세요…", "项目": "프로젝트", "额度窗口": "할당량 기간", "首轮回答完成后自动总结;这会调用所选模型并消耗额度。": "첫 답변이 완료되면 제목을 생성합니다. 선택한 모델을 호출하고 할당량을 사용합니다.", " · 检查于 {time}": " · 확인 시각 {time}", " 已发布(当前 {current}),更新日志如下:": "이(가) 출시되었습니다(현재 {current}). 업데이트 노트는 다음과 같습니다:", "Agent2API 一直在更新,是因为有人在背后持续投入。如果它帮到了你,欢迎请作者喝杯咖啡。": "Agent2API가 계속 업데이트되는 것은 누군가 뒤에서 꾸준히 시간을 쏟고 있기 때문입니다. 도움이 되었다면 제작자에게 커피 한 잔을 사 주세요.", "GitHub Token 未填写": "GitHub 토큰 미입력", "GitHub 令牌": "GitHub 토큰", "GitHub 加速前缀": "GitHub 가속 접두사", "GitHub 接口限流中,请在 {seconds} 秒后重试": "GitHub API 요청 한도에 도달했습니다. {seconds}초 후에 다시 시도하세요.", "GitHub 接口限流中,请在「插件设置」的「GitHub 令牌」中填写凭证,以提高请求限额。": "GitHub API 요청 한도에 도달했습니다. 요청 한도를 높이려면 「플러그인 설정」의 「GitHub 토큰」에 자격 증명을 입력하세요.", "GitHub 接口限流中,请在「更新设置」的「GitHub 令牌」中填写凭证,以提高请求限额。": "GitHub API 요청 한도에 도달했습니다. 요청 한도를 높이려면 「업데이트 설정」의 「GitHub 토큰」에 자격 증명을 입력하세요.", "GitHub 接口限流中,请稍后重试": "GitHub API 요청 한도에 도달했습니다. 나중에 다시 시도하세요.", "GitHub 源「{source}」限流,{seconds} 秒后可重试(上游未提供恢复时间)": "GitHub 소스 ‘{source}’의 요청이 제한되었습니다. {seconds}초 후에 재시도할 수 있습니다(복구 시간 미제공).", "GitHub 源「{source}」限流,请在 {seconds} 秒后重试": "GitHub 소스 ‘{source}’의 요청이 제한되었습니다. {seconds}초 후에 다시 시도하세요.", "GitHub 访问方式": "GitHub 접속 방식", "GitHub 访问设置已保存": "GitHub 접속 설정을 저장했습니다", "QQ 群": "QQ 그룹", "QQ 群 / Telegram 都在这里": "QQ 그룹과 Telegram이 모두 여기에 있습니다", "QQ 群 {n}": "QQ 그룹 {n}", "Telegram 群": "Telegram 그룹", "Windows 服务一键更新会核验官方更新包,再由独立升级进程停止服务、备份替换并重新启动。账号与配置保留,确认新版运行后页面自动刷新。": "Windows 서비스 업데이트는 공식 패키지를 검증한 후 별도 업데이트 프로세스가 서비스를 중지하고 파일을 백업·교체한 뒤 다시 시작합니다. 계정과 설정은 유지되며 새 버전 실행이 확인되면 페이지를 새로 고칩니다.", "Windows 服务升级权限或目录保护不符合要求。请以管理员身份重跑新版 install-service.ps1;自定义服务账号或外部托管环境请按原方式升级。": "Windows 서비스 권한 또는 디렉터리 보호가 업데이트 요구 사항을 충족하지 않습니다. 관리자 권한으로 새 install-service.ps1을 다시 실행하세요. 사용자 지정 서비스 계정이나 외부 관리 환경에서는 기존 방식으로 업그레이드하세요.", "Windows 服务部署需要手动升级。请解压新版服务端包,以管理员身份运行 install-service.ps1;账号与配置会保留。": "Windows 서비스는 수동 업그레이드가 필요합니다. 새 서버 패키지를 풀고 관리자 권한으로 install-service.ps1을 실행하세요. 계정과 설정은 유지됩니다.", "beta 版可能不稳定。两项同时开启时,按版本号选择最高版本,不会降级;安装到正式版或 beta 版后仍保留关注选择。": "beta 버전은 불안정할 수 있습니다. 두 채널을 모두 켜면 가장 높은 버전을 선택하며 다운그레이드하지 않습니다. 정식 버전이나 beta 버전을 설치한 후에도 채널 선택은 유지됩니다.", "systemd 一键更新由受限升级程序完成:下载、核验官方校验值、备份替换、重启并确认版本。网关保持普通账号运行,账号与配置不变。": "제한된 업데이트 프로그램이 systemd 다운로드, 공식 체크섬 검증, 백업, 교체, 재시작 및 버전 확인을 처리합니다. 게이트웨이는 일반 계정으로 계속 실행되며 계정과 설정은 유지됩니다.", "{message};其他线路可重新检查": "{message} 다른 경로는 다시 확인할 수 있습니다.", "{ms} 毫秒": "{ms}ms", "{seconds} 秒后可重试": "{seconds}초 후 재시도 가능", "{version} 已就位,服务正在重启,页面会在恢复后自动刷新…({seconds}s)": "{version} 적용이 완료되었습니다. 서비스를 재시작하는 중이며, 복구되면 페이지가 자동으로 새로 고쳐집니다…({seconds}초)", "{version}(预发布)": "{version}(프리릴리스)", "✅ GitHub 令牌已保存(加密存储,界面不再显示)": "✅ GitHub 토큰이 저장되었습니다(암호화되어 저장되며 화면에 다시 표시되지 않습니다)", "✅ 已加入 beta 版,之后的检查会包含 beta 版": "✅ 베타 버전에 참여했습니다. 이후 확인에는 베타 버전이 포함됩니다", "✅ 已清除界面保存的 GitHub 令牌(环境变量若配置过则继续生效)": "✅ 화면에 저장된 GitHub 토큰을 삭제했습니다(환경 변수가 설정되어 있으면 계속 적용됩니다)", "✅ 已退出 beta 版,之后的检查只看正式版": "✅ 베타 버전에서 나왔습니다. 이후 확인은 정식 버전만 봅니다", "✅ 数据升级完成({n} 项)": "✅ 데이터 업그레이드 완료({n}건)", "✅ 更新出网已切换为 {label}": "✅ 업데이트 아웃바운드를 {label}(으)로 전환했습니다", "✅ 更新出网已切换为直连": "✅ 업데이트 아웃바운드를 직접 연결로 전환했습니다", "✅ 自动检查更新已保存": "✅ 자동 업데이트 확인이 저장되었습니다", "一键更新": "원클릭 업데이트", "一键更新入口不可用,请刷新页面后重试。": "원클릭 업데이트를 사용할 수 없습니다. 페이지를 새로 고친 뒤 다시 시도하세요.", "一键更新服务端?": "서버를 업데이트할까요?", "一键更新组件不可用或权限配置不正确。请使用新版安装包执行 sudo bash install.sh --upgrade 修复。": "업데이트 구성 요소를 사용할 수 없거나 권한이 잘못되었습니다. 새 패키지에서 sudo bash install.sh --upgrade를 실행해 복구하세요.", "上次 GitHub 限流的等待时间已结束,可重新检查": "이전 GitHub 요청 제한 대기 시간이 끝났습니다. 다시 확인할 수 있습니다.", "上次结果:{state}": "이전 결과: {state}", "上游未提供恢复时间,按 GitHub 建议短暂等待": "복구 시간이 제공되지 않아 GitHub 권장에 따라 잠시 대기", "下载中": "다운로드 중", "下载失败": "다운로드 실패", "下载失败:{error}": "다운로드 실패: {error}", "下载已取消,可重新点击「下载并安装」。": "다운로드가 취소되었습니다. 「다운로드 후 설치」를 다시 클릭할 수 있습니다.", "下载已取消,可重新点击「下载并更新」。": "다운로드가 취소되었습니다. 「다운로드 후 업데이트」를 다시 클릭할 수 있습니다.", "下载并安装": "다운로드 후 설치", "下载并更新": "다운로드 후 업데이트", "下载服务端包": "서버 패키지 다운로드", "不支持此类请求": "지원하지 않는 요청 유형", "与 gh-proxy.com 属于同一服务的备用线路。": "gh-proxy.com과 동일한 서비스의 대체 경로입니다.", "与网关的软件更新和插件共用设置;APK 下载由手机联网,GitHub 令牌不会发送给加速站。": "게이트웨이 업데이트 및 플러그인과 설정을 공유합니다. APK는 휴대폰이 다운로드하며 GitHub 토큰은 가속 사이트로 전송되지 않습니다.", "与软件更新共用出网代理和 GitHub 凭证,修改任意一处都会同步生效。": "소프트웨어 업데이트와 아웃바운드 프록시 및 GitHub 자격 증명을 공유합니다. 어느 곳에서 변경해도 함께 적용됩니다.", "个人开发并开源维护,免费使用,也不会收集你的账号数据。如果它帮到了你,欢迎到项目仓库点个 Star 支持一下。": "개발자가 개인적으로 개발하고 오픈소스로 유지·관리하는 프로젝트입니다. 무료로 사용할 수 있고, 계정 데이터를 수집하지 않습니다. 도움이 되셨다면 프로젝트 저장소에서 Star를 눌러 응원해 주세요.", "仅 beta 版": "beta 버전만", "仅官方源": "공식 소스만", "仅插件索引和文件下载,不支持版本查询": "플러그인 목록과 다운로드만 지원하며 버전 조회는 지원하지 않음", "仅正式版": "정식 버전만", "仓库暂无发布版本。{at}": "저장소에 아직 릴리스 버전이 없습니다.{at}", "代理列表读取失败": "프록시 목록을 불러오지 못했습니다", "令牌已生效,但写入磁盘失败(重启后会丢失)": "토큰은 적용되었지만 디스크에 저장하지 못했습니다(재시작하면 사라집니다)", "以上状态来自网关;APK 下载会由手机按本机网络重新选择通道。": "위 상태는 게이트웨이에서 측정했습니다. APK는 휴대폰 자체 네트워크에서 경로를 다시 선택합니다.", "优先使用加速源,访问失败后回退官方源;不会绕过 GitHub 限流冷却。": "가속 소스를 먼저 사용하고 실패하면 공식 소스로 전환합니다. GitHub 요청 제한 대기 시간을 준수합니다.", "优先加速源": "우선 가속 소스", "优先访问官方源,连接失败后尝试加速源;短期记住成功的源,定期恢复官方优先。": "공식 소스를 먼저 시도하고 연결에 실패하면 가속 소스를 사용합니다. 성공한 소스를 잠시 기억하고 주기적으로 공식 소스를 다시 시도합니다.", "允许本机自动检查": "이 기기에서 자동 확인 허용", "先使用指定加速源,失败后尝试其他已启用的加速源,最后回退官方源。": "지정한 소스를 먼저 사용하고 실패하면 다른 활성 가속 소스, 마지막으로 공식 소스를 시도합니다.", "关于作者": "제작자 소개", "关注 beta 版更新": "beta 버전 업데이트 받기", "关注正式版更新": "정식 버전 업데이트 받기", "出网线路与 GitHub 令牌设置": "아웃바운드 경로 및 GitHub 토큰 설정", "出网线路已切换,但写入磁盘失败(重启后会恢复原线路)": "아웃바운드 경로가 전환되었지만 디스크에 저장하지 못했습니다(재시작하면 원래 경로로 돌아갑니다)", "分别探测版本查询、插件索引和文件下载,选择最快返回有效内容的源;成功线路短期复用,失败自动切换。": "버전 조회, 플러그인 목록 및 다운로드를 각각 확인합니다. 유효한 내용을 가장 먼저 반환한 소스를 잠시 재사용하고 실패하면 전환합니다.", "分钟({min} ~ {max})": "분({min} ~ {max})", "到 GitHub 发布页下载": "GitHub 릴리스 페이지에서 다운로드", "到点自动向 GitHub 查询新版本,查到就走「检测到更新」弹窗;关闭后「检查更新」按钮仍可手动触发": "지정한 시각이 되면 GitHub에 새 버전을 자동으로 조회하고, 찾으면 「업데이트 감지」 팝업을 띄웁니다. 팝업을 닫아도 「업데이트 확인」 버튼으로 수동 확인할 수 있습니다", "加入 beta 版": "베타 버전 참여", "加入交流群": "커뮤니티 참여", "加速源优先": "가속 소스 우선", "单独设置": "별도로 설정", "即将满员": "곧 정원 마감", "即将满员,请优先加3群、4群": "곧 정원 마감 — 그룹 3 또는 4에 우선 참여해 주세요", "去更新": "지금 업데이트", "发布页上没有 {wanted} 这个文件": "릴리스 페이지에 {wanted} 파일이 없습니다", "发布页上没有对应本机架构的服务端更新包": "릴리스 페이지에 이 기기의 아키텍처용 서버 업데이트 패키지가 없습니다", "发布页上的文件被更新源的访问方式过滤掉了,请检查「更新设置」里的 GitHub 访问方式": "릴리스 페이지의 파일이 업데이트 소스 접근 방식으로 걸러졌습니다. 「업데이트 설정」의 GitHub 접근 방식을 확인하세요.", "发现新版本 {latest}(当前 {current})。{at}": "새 버전 감지: {latest} (현재 {current}).{at}", "发现新版本 {latest}(当前 {current})。{reason}{at}": "새 버전 {latest}(현재 {current})이 있습니다. {reason}{at}", "发现新版本 {latest}(当前 {current}),但该版本没有提供容器内更新包({reason});请在宿主机执行 docker compose pull && docker compose up -d 升级。{at}": "새 버전 {latest}(현재 {current})이 있지만 이 버전에는 컨테이너 내 업데이트 패키지가 없습니다({reason}). 호스트에서 docker compose pull && docker compose up -d 로 업그레이드하세요.{at}", "发现新版本 {latest}(当前 {current}),但这一版没有提供本机安装包({reason});可到 GitHub 发布页手动下载。{at}": "새 버전 {latest}(현재 {current})이 있지만 이 버전에는 이 기기용 설치 패키지가 없습니다({reason}). GitHub 릴리스 페이지에서 직접 내려받을 수 있습니다.{at}", "取消下载": "다운로드 취소", "取消失败:{error}": "취소 실패: {error}", "只访问 GitHub 官方源,仍使用所选出网代理。": "선택한 아웃바운드 프록시를 통해 GitHub 공식 소스에만 접속합니다.", "可安装": "설치 가능", "启动失败": "시작 실패", "启动安装程序失败:{error}": "설치 프로그램 실행 실패: {error}", "启用加速源 {source}": "가속 소스 {source} 활성화", "在 GitHub 查看完整说明": "GitHub에서 전체 안내 보기", "在 QQ 里搜索群号即可加入。": "QQ에서 그룹 번호를 검색하면 참여할 수 있습니다.", "在宿主机执行 docker compose pull && docker compose up -d 即可升级。": "호스트에서 docker compose pull && docker compose up -d 를 실행하면 업그레이드됩니다.", "在浏览器中打开": "브라우저에서 열기", "在浏览器中打开 GitHub 发布页": "브라우저에서 GitHub 릴리스 페이지 열기", "在浏览器中打开项目仓库,点 Star 支持作者": "브라우저에서 프로젝트 저장소를 열고 Star를 눌러 제작자를 응원하세요", "在默认浏览器中打开 GitHub 的令牌创建页(备注已预设,无需勾选任何权限,直接点 Generate token)": "기본 브라우저에서 GitHub 토큰 생성 페이지를 엽니다(메모는 미리 채워져 있고, 어떤 권한도 선택할 필요 없이 Generate token을 바로 누르면 됩니다)", "填写后检查限额 60 → 5000 次/小时(创建令牌无需勾选任何权限)": "입력하면 확인 한도가 시간당 60 → 5000회로 올라갑니다(토큰 생성 시 어떤 권한도 선택할 필요가 없습니다)", "填写支持 Raw、Release 和 GitHub API 的 HTTPS 加速站前缀,留空恢复默认。": "Raw, Release 및 GitHub API를 지원하는 HTTPS 가속 사이트 접두사를 입력하세요. 비워 두면 기본값으로 복원됩니다.", "复制群号 {group}": "그룹 번호 {group} 복사", "安装中": "설치 중", "安装包": "설치 패키지", "安装包已下载完成,正在启动安装程序(需要管理员权限,会弹出 UAC 确认框)…": "설치 패키지 다운로드가 완료되어 설치 프로그램을 실행하는 중입니다(관리자 권한이 필요하며 UAC 확인 창이 표시됩니다)…", "安装包已下载完成,正在启动新的 AppImage…": "설치 프로그램 다운로드 완료. 새 AppImage를 실행하는 중…", "安装包已下载完成,正在打开系统安装器…": "설치 프로그램 다운로드 완료. 시스템 설치 프로그램을 여는 중…", "安装包已下载完成,正在挂载磁盘映像…": "설치 패키지 다운로드가 완료되어 디스크 이미지를 마운트하는 중입니다…", "安装包已就绪:{name}。点击「安装并重启」后会启动新的 AppImage;把它移动到你的应用目录并替换旧文件即完成升级(本程序会先退出以释放文件占用)。": "설치 프로그램 준비 완료: {name}. \"설치 후 재시작\"을 누르면 새 AppImage가 실행됩니다. 앱 폴더로 옮겨 이전 파일을 바꿔 놓으면 업그레이드가 끝납니다(파일 점유를 풀기 위해 이 앱이 먼저 종료됩니다).", "安装包已就绪:{name}。点击「安装并重启」后需要管理员权限,会弹出 UAC 确认框。": "설치 패키지가 준비되었습니다: {name}. 「설치 후 재시작」을 클릭하면 관리자 권한이 필요하며 UAC 확인 창이 표시됩니다.", "安装包已就绪:{name}。点击「打开安装包」后会交给系统安装器,按提示输入密码即可完成安装(本程序无需退出)。": "설치 프로그램 준비 완료: {name}. \"설치 프로그램 열기\"를 누르면 시스템 설치 프로그램으로 넘어갑니다. 안내에 따라 비밀번호를 입력하세요(이 앱은 종료할 필요가 없습니다).", "安装包已就绪:{name}。点击「打开安装包」后会挂载磁盘映像,把应用拖进「应用程序」即可完成安装。": "설치 패키지가 준비되었습니다: {name}. 「설치 패키지 열기」를 클릭하면 디스크 이미지가 마운트되며, 앱을 「응용 프로그램」 폴더로 끌어다 놓으면 설치가 완료됩니다.", "安装包已挂载,请在弹出的窗口里把应用拖进「应用程序」完成安装。安装完成后重新打开本程序即可。": "설치 패키지가 마운트되었습니다. 열린 창에서 앱을 「응용 프로그램」 폴더로 끌어다 놓으면 설치가 완료됩니다. 설치 후 이 프로그램을 다시 열면 됩니다.", "安装失败": "설치 실패", "安装失败:{error}": "설치 실패: {error}", "安装并重启": "설치 후 재시작", "安装程序已启动,本程序将退出以便完成覆盖安装。安装程序需要管理员权限,会弹出 UAC 确认框,请选择「是」。": "설치 프로그램이 시작되었습니다. 덮어쓰기 설치를 완료하기 위해 이 프로그램은 종료됩니다. 설치 프로그램에는 관리자 권한이 필요하며 UAC 확인 창이 표시되니 「예」를 선택하세요.", "官方源": "공식 소스", "容器内更新:更新包从 GitHub 发布页下载,校验 sha256 后由面板替换容器内的程序与界面文件,再重启服务(容器由 restart 策略拉起,页面会自动刷新)。更新的是容器里的文件,compose 里的镜像标签不变 —— 之后执行 docker compose pull && up -d 会使用镜像里的版本。检查更新与下载的出网线路、GitHub 令牌都在「更新设置」里。": "컨테이너 내 업데이트: 업데이트 패키지는 GitHub 릴리스 페이지에서 다운로드하고, sha256을 검증한 뒤 패널이 컨테이너 내부의 프로그램과 UI 파일을 교체하고 서비스를 재시작합니다(컨테이너는 restart 정책으로 다시 올라오며 페이지는 자동으로 새로 고쳐집니다). 교체되는 것은 컨테이너 내부 파일이고 compose의 이미지 태그는 그대로입니다 —— 이후 docker compose pull && up -d 를 실행하면 이미지 안의 버전을 사용합니다. 업데이트 확인과 다운로드의 아웃바운드 경로, GitHub 토큰은 「업데이트 설정」에 있습니다.", "将更新至 {version}。下载和校验完成后会短暂停止服务、替换程序并自动重启;账号与配置会保留。确认后无需再次点击安装。": "{version}(으)로 업데이트합니다. 다운로드와 검증 후 서비스를 잠시 중지하고 파일을 교체한 뒤 자동으로 다시 시작합니다. 계정과 설정은 유지되며 추가 설치 클릭은 필요하지 않습니다.", "已加密存储在本地,不显示具体值;粘贴新令牌可覆盖": "로컬에 암호화되어 저장되며 값을 표시하지 않습니다. 새 토큰을 붙여넣으면 덮어씁니다", "已取消": "취소됨", "已填写": "입력됨", "已填写(粘贴新令牌可覆盖)": "입력됨(새 토큰을 붙여넣으면 덮어쓰기)", "已打开系统安装器,请在它弹出的窗口里完成安装。安装完成后重新打开本程序即可。": "시스템 설치 프로그램을 열었습니다. 표시된 창에서 설치를 마친 뒤 이 앱을 다시 여세요.", "已是最新": "최신 버전입니다", "已更新至 {version},服务已恢复。": "{version}(으)로 업데이트되었으며 서비스가 복구되었습니다.", "已替换为 {version},正在重启服务…": "{version}(으)로 교체했습니다. 서비스를 재시작하는 중…", "已配置 GITHUB_TOKEN 环境变量,界面保存的令牌优先于它": "GITHUB_TOKEN 환경 변수가 설정되어 있으며, 화면에 저장된 토큰이 우선 적용됩니다", "开启后只更新到 beta 版(预发布),取版本最高的一个;beta 版可能不稳定。开启期间不会因为正式版发布而自动切回正式版 —— 想切回请关闭本开关。关闭后只更新到正式版,且不会降级到版本号更低的版本。": "켜면 beta(프리릴리스) 버전만 대상으로 가장 높은 버전으로 업데이트합니다. beta 버전은 불안정할 수 있습니다. 켜 둔 동안에는 정식 버전이 나와도 자동으로 정식 버전으로 돌아가지 않습니다 — 돌아가려면 이 스위치를 끄세요. 끄면 정식 버전만 대상으로 업데이트하며, 더 낮은 버전으로 다운그레이드되지 않습니다.", "开始更新": "업데이트 시작", "当前 Windows 服务尚未接入一键更新。请解压新版服务端包,以管理员身份运行一次 install-service.ps1,原有账号、目录、端口和配置会保留。": "이 Windows 서비스에는 원클릭 업데이트가 아직 설정되지 않았습니다. 새 서버 패키지를 풀고 관리자 권한으로 install-service.ps1을 한 번 실행하세요. 기존 계정, 디렉터리, 포트 및 설정은 유지됩니다.", "当前下载通道:{source}": "다운로드 소스: {source}", "当前为直接运行的服务端,请停止程序后替换服务端包,再重新启动。": "서버가 서비스 관리자 없이 실행 중입니다. 프로그램을 중지하고 서버 파일을 교체한 뒤 다시 시작하세요.", "当前关注:{channels}": "현재 선택: {channels}", "当前安装尚未接入一键更新。请下载新版服务端包,执行一次 sudo bash install.sh --upgrade;之后即可在面板更新。": "원클릭 업데이트가 아직 설치되지 않았습니다. 새 서버 패키지를 다운로드하고 sudo bash install.sh --upgrade를 한 번 실행하세요. 이후에는 패널에서 업데이트할 수 있습니다.", "当前已是最新版本({current})。{at}": "현재 최신 버전입니다({current}).{at}", "当前版本": "현재 버전", "当前系统或架构暂不支持面板自动安装,请查看发布页。": "현재 시스템 또는 아키텍처에서는 자동 설치를 지원하지 않습니다. 릴리스 페이지를 확인하세요.", "当前线路不可用:{error};请重新选择代理或切回直连": "현재 경로를 사용할 수 없습니다: {error}. 프록시를 다시 선택하거나 직접 연결로 전환하세요", "当前网关仍使用旧版单源设置,升级网关后可管理多个加速源。": "현재 게이트웨이는 이전 단일 소스 설정을 사용합니다. 업그레이드 후 여러 가속 소스를 관리할 수 있습니다.", "当前需要手动升级": "수동 업그레이드 필요", "当前:自动检查关闭": "현재: 자동 확인 꺼짐", "当前:自动检查开启,每 {n} 分钟": "현재: 자동 확인 켜짐, {n}분마다", "待重启": "재시작 대기", "待重新检查": "재확인 필요", "微信赞赏": "WeChat", "微信赞赏码": "WeChat 후원 코드", "打开 GitHub 令牌页面": "GitHub 토큰 페이지 열기", "打开安装包": "설치 패키지 열기", "打开链接失败:{error}": "링크 열기 실패: {error}", "指定代理": "지정 프록시", "指定加速源优先": "지정한 가속 소스 우선", "按上游返回时间": "서버가 반환한 복구 시간 사용", "插件索引": "플러그인 목록", "插件默认跟随这里的更新通道、自动检查和间隔;可在插件设置中单独设置。": "플러그인은 기본적으로 여기의 업데이트 채널, 자동 확인 및 간격을 따릅니다. 플러그인 설정에서 별도로 설정할 수 있습니다.", "支付宝": "Alipay", "支付宝收款码": "Alipay 결제 QR 코드", "支持作者": "제작자 후원", "支持版本查询": "버전 조회 지원", "收藏项目": "프로젝트 즐겨찾기", "数据升级失败:{error}(旧数据仍在原处,下次启动会自动重试)": "데이터 업그레이드 실패: {error}(기존 데이터는 그대로 있으며, 다음 시작 시 자동으로 다시 시도합니다)", "数据升级未全部完成(已导入 {n} 项,仍有数据待导入,下次启动会自动重试)": "데이터 업그레이드가 완료되지 않았습니다({n}건을 가져왔으며 아직 가져올 데이터가 남아 있습니다. 다음 시작 시 자동으로 다시 시도합니다)", "数据升级:没有需要导入的旧数据": "데이터 업그레이드: 가져올 기존 데이터가 없습니다", "文件下载": "파일 다운로드", "新版本 ": "새 버전 ", "无法开始更新:{error}": "업데이트를 시작할 수 없습니다: {error}", "无法比较": "비교할 수 없음", "无法解密": "복호화할 수 없음", "无法读取更新信息": "업데이트 정보를 읽을 수 없습니다", "显示的是当前网络下的响应耗时,不代表长期稳定性或完整下载速度。未探测的源会在实际更新时检查。": "표시된 시간은 현재 네트워크의 응답 시간이며 장기 안정성이나 전체 다운로드 속도를 의미하지 않습니다. 미확인 소스는 실제 업데이트 때 확인합니다.", "暂未确认服务恢复,请检查服务器状态后刷新页面;不会自动重复安装。": "서비스 복구가 확인되지 않았습니다. 서버 상태를 확인한 뒤 페이지를 새로 고치세요. 설치는 자동 반복되지 않습니다.", "更新任务已结束,但当前运行版本与目标不一致,请检查服务日志。": "업데이트 작업은 끝났지만 실행 버전이 대상과 다릅니다. 서비스 로그를 확인하세요.", "更新出网代理": "업데이트 아웃바운드 프록시", "更新包从 GitHub Release 获取。自动模式按实际请求选择可用通道,失败后换源;镜像安装包必须匹配官方校验值,取不到时仅使用原始源。加速源、代理和令牌在「更新设置」中配置,指定代理失效不会静默直连。": "업데이트는 GitHub Release에서 가져옵니다. 자동 모드는 실제 응답으로 경로를 선택하고 실패 시 전환합니다. 미러 설치 파일은 공식 체크섬과 일치해야 하며 체크섬이 없으면 원본 소스만 사용합니다. 가속 소스, 프록시 및 토큰은 업데이트 설정에서 지정합니다. 지정 프록시가 실패해도 직접 연결로 몰래 전환하지 않습니다.", "更新包从 GitHub Release 获取,下载后交给本平台安装器。GitHub 访问方式、加速前缀、出网代理和令牌在「更新设置」中配置。默认官方优先,连接失败后尝试加速源;镜像安装包必须匹配官方校验值,取不到时仅使用原始源。指定代理失效会明确报错,不会静默改走直连。": "업데이트 패키지는 GitHub Release에서 가져오며 다운로드 후 플랫폼 설치 프로그램으로 엽니다. GitHub 접속 방식, 가속 접두사, 아웃바운드 프록시 및 토큰은 업데이트 설정에서 지정합니다. 기본적으로 공식 소스를 먼저 시도하고 연결 실패 시 가속 소스를 사용합니다. 미러 설치 파일은 공식 체크섬과 일치해야 하며 체크섬을 가져올 수 없으면 원본 소스만 사용합니다. 지정 프록시가 작동하지 않으면 오류를 표시하고 직접 연결로 몰래 전환하지 않습니다.", "更新包从 GitHub 发布页下载,下载完成后可直接启动安装程序并自动重启本程序。安装包会先校验来源域名与文件完整性。检查更新与下载安装包的出网线路、GitHub 令牌都在「更新设置」里:线路默认直连(直连失败时自动借 Clash Verge 的混合端口重试一次),选定指定出口后只走该出口;填写 GitHub 令牌可把检查限额从 60 次/小时提高到 5000 次/小时。": "업데이트 패키지는 GitHub 릴리스 페이지에서 다운로드하며, 다운로드가 끝나면 바로 설치 프로그램을 실행하고 이 프로그램을 자동으로 재시작할 수 있습니다. 설치 패키지는 먼저 출처 도메인과 파일 무결성을 검증합니다. 업데이트 확인과 설치 패키지 다운로드의 아웃바운드 경로, GitHub 토큰은 모두 「업데이트 설정」에 있습니다. 경로는 기본적으로 직접 연결이며(직접 연결 실패 시 Clash Verge의 혼합 포트를 빌려 한 번 재시도), 지정 프록시를 선택하면 해당 경로만 사용합니다. GitHub 토큰을 입력하면 확인 한도를 시간당 60회에서 5000회로 높일 수 있습니다.", "更新包已就绪:{name}。点「安装并重启」后,面板会校验并替换容器内的程序与界面文件,然后重启服务(页面会自动刷新)。": "업데이트 패키지가 준비되었습니다: {name}. 「설치 후 재시작」을 클릭하면 패널이 컨테이너 내부의 프로그램과 UI 파일을 검증해 교체한 뒤 서비스를 재시작합니다(페이지는 자동으로 새로 고쳐집니다).", "更新失败": "업데이트 실패", "更新失败:{error}": "업데이트 실패: {error}", "更新完成": "업데이트 완료", "更新已应用到容器内,重启服务后生效。{at}": "업데이트가 컨테이너 내부에 적용되었습니다. 서비스를 재시작하면 적용됩니다.{at}", "更新已应用到容器内,重启服务后生效。{at}(本次检查失败:{error})": "컨테이너 내부에 업데이트가 적용되었습니다. 서비스를 다시 시작하면 적용됩니다.{at}(이번 확인 실패: {error})", "更新日志": "업데이트 노트", "更新设置": "업데이트 설정", "更新进行中": "업데이트 진행 중", "更新通道已保存": "업데이트 채널을 저장했습니다", "更新通道已改变,请重新检查更新。": "업데이트 채널이 변경되었습니다. 업데이트를 다시 확인하세요.", "替换完成,正在重启服务…": "교체가 완료되었습니다. 서비스를 재시작하는 중…", "最多保留 6 个 HTTPS 加速源;自定义源可关闭版本查询支持。": "HTTPS 가속 소스는 최대 6개입니다. 사용자 지정 소스의 버전 조회를 끌 수 있습니다.", "最新发布版本为 {latest},但当前版本号「{current}」无法解析,未做新旧判断。{at}": "최신 릴리스 버전은 {latest}입니다. 다만 현재 버전 번호 「{current}」를 해석할 수 없어 신구 비교는 하지 않았습니다.{at}", "最新版本": "최신 버전", "最近采用": "최근 사용", "有新版本": "새 버전 있음", "服务正在重启,页面会在恢复后自动刷新…({seconds}s)": "서비스를 재시작하는 중이며, 복구되면 페이지가 자동으로 새로 고쳐집니다…({seconds}초)", "服务端压缩包": "서버 압축 패키지", "未找到适用的更新包": "적합한 업데이트 패키지 없음", "未找到适用的更新包。需要:{wanted};发布页包含的文件类型:{seen}。": "적합한 업데이트 패키지를 찾지 못했습니다. 필요: {wanted}. 릴리스 페이지의 파일 형식: {seen}.", "未探测": "미확인", "未检查": "확인 전", "本工具由": "본 도구는", "查看发布页": "릴리스 페이지 보기", "校验中": "검증 중", "检查中": "확인 중", "检查中…": "확인 중…", "检查失败": "확인 실패", "检查更新": "업데이트 확인", "检查更新与下载安装包使用所选线路;未选择代理时先直连,失败后尝试 Clash Verge 混合端口;指定代理不可用时不会自动改走直连。": "업데이트 확인과 설치 파일 다운로드는 선택한 경로를 사용합니다. 프록시를 선택하지 않으면 직접 연결을 먼저 시도하고, 실패하면 Clash Verge 혼합 포트를 시도합니다. 지정한 프록시를 사용할 수 없으면 직접 연결로 자동 전환하지 않습니다.", "检查更新与下载安装包使用所选线路;未选择代理时直连,指定代理不可用时不会自动改走直连。": "업데이트 확인과 설치 파일 다운로드는 선택한 경로를 사용합니다. 프록시를 선택하지 않으면 직접 연결하며, 지정한 프록시를 사용할 수 없어도 직접 연결로 자동 전환하지 않습니다.", "检查更新与下载安装包走哪条线路(当前:{current});选择即保存。选项来自「网络代理」页;直连失败时会自动借 Clash 混合端口重试一次,选定指定代理后只走它": "업데이트 확인과 설치 패키지 다운로드가 어느 경로를 사용할지 지정합니다(현재: {current}). 선택하면 바로 저장됩니다. 옵션은 「네트워크 프록시」 페이지에서 가져옵니다. 직접 연결 실패 시 Clash 혼합 포트를 빌려 한 번 재시도하며, 지정 프록시를 선택하면 해당 프록시만 사용합니다", "检查更新失败:{error}": "업데이트 확인 실패: {error}", "检查更新失败:{error}(以下版本与更新日志来自上次成功检查,检查于 {time})": "업데이트 확인 실패: {error} (아래 버전과 업데이트 내역은 마지막으로 성공한 확인 시점({time})의 것입니다)", "检查计划": "확인 일정", "检查间隔必须是 {min} ~ {max} 分钟": "확인 간격은 {min} ~ {max}분이어야 합니다", "检查间隔(分钟)": "확인 간격(분)", "检测到更新": "업데이트 감지", "检测到自定义程序或界面路径,一键更新不会覆盖这些位置。请按原部署方式升级。": "프로그램 또는 패널의 사용자 지정 경로가 감지되었습니다. 원클릭 업데이트는 이를 덮어쓰지 않습니다. 기존 배포 절차로 업그레이드하세요.", "正在下载 {name}:{percent}%({received} / {total} MB)": "{name} 다운로드 중: {percent}%({received} / {total} MB)", "正在下载 {version} 的服务端更新包…": "{version} 서버 업데이트를 다운로드하는 중…", "正在下载安装包…(下载完成后会交给系统安装器,按提示输入密码即可完成安装)": "설치 프로그램을 내려받는 중…(완료되면 시스템 설치 프로그램으로 넘어갑니다. 안내에 따라 비밀번호를 입력하세요)", "正在下载安装包…(下载完成后会启动新的 AppImage;把它替换掉旧文件即完成升级)": "설치 프로그램을 내려받는 중…(완료되면 새 AppImage가 실행됩니다. 이전 파일을 바꿔 놓으면 업그레이드가 끝납니다)", "正在下载安装包…(下载完成后会挂载磁盘映像,把应用拖进「应用程序」即可完成安装)": "설치 패키지 다운로드 중…(다운로드가 끝나면 디스크 이미지를 마운트합니다. 앱을 「응용 프로그램」 폴더로 끌어다 놓으면 설치가 완료됩니다)", "正在下载安装包…(下载完成后启动安装程序需要管理员权限,会弹出 UAC 确认框)": "설치 패키지 다운로드 중…(다운로드가 끝나면 설치 프로그램을 실행하며 관리자 권한이 필요하고 UAC 확인 창이 표시됩니다)", "正在下载服务端更新包…(下载完成后由面板完成替换,重启容器内的服务后生效)": "서버 업데이트 패키지를 다운로드하는 중…(다운로드가 끝나면 패널이 파일을 교체하고, 컨테이너 내부 서비스를 재시작하면 적용됩니다)", "正在取消下载…": "다운로드 취소 중…", "正在备份并替换服务端程序与界面,请勿关闭服务器…": "서버와 패널 파일을 백업하고 교체하는 중입니다. 서버를 끄지 마세요…", "正在把旧数据导入 SQLite 数据库(旧文件会保留,不会删除)…": "기존 데이터를 SQLite 데이터베이스로 가져오는 중입니다(기존 파일은 보존되며 삭제되지 않습니다)…", "正在查询 GitHub 上的最新发布版本…": "GitHub에서 최신 릴리스 버전을 조회하는 중입니다…", "正在校验并替换容器内的程序与界面文件…": "컨테이너 내부의 프로그램과 UI 파일을 검증해 교체하는 중…", "正在独立核验官方更新包,校验通过前不会修改现有程序…": "공식 패키지를 독립적으로 검증 중입니다. 검증이 끝나기 전에는 기존 파일을 변경하지 않습니다…", "正在选择下载通道…": "다운로드 경로 선택 중…", "正在重启服务并确认新版本,页面恢复后会自动刷新…": "서비스를 다시 시작하고 새 버전을 확인하는 중입니다. 복구되면 페이지를 새로 고칩니다…", "正式版与 beta 版": "정식 버전 및 beta 버전", "没有可下载的安装包": "다운로드할 수 있는 설치 패키지가 없습니다", "没有可下载的安装包:{reason}": "다운로드할 수 있는 설치 패키지가 없습니다: {reason}", "没有启用的加速源,将只使用官方源。": "활성화된 가속 소스가 없어 공식 소스만 사용합니다.", "沿用已记录的恢复时间": "기록된 복구 시간 사용", "点击「检查更新」后,这里会显示最新版本的更新说明。": "「업데이트 확인」을 클릭하면 여기에 최신 버전의 업데이트 노트가 표시됩니다.", "点击「检查更新」查询 GitHub 上的最新发布版本。": "「업데이트 확인」을 클릭하면 GitHub의 최신 릴리스 버전을 조회합니다.", "点击「检查更新」查询最新发布版本。": "「업데이트 확인」을 클릭하면 최신 릴리스 버전을 조회합니다.", "点击在浏览器中打开": "클릭하면 브라우저에서 열립니다", "点击复制群号": "클릭하면 그룹 번호가 복사됩니다", "版本 {version} · 按 GitHub 访问设置下载安装包": "버전 {version} · GitHub 접속 설정에 따라 설치 파일 다운로드", "版本查询": "버전 조회", "版本查询、插件索引、文件下载": "버전 조회, 플러그인 목록, 파일 다운로드", "状态来自最近一次实际请求,并非实时测速。过期后标为待重新检查;限流只暂停对应线路,其他线路仍可使用。": "최근 실제 요청의 결과이며 실시간 속도 측정이 아닙니다. 만료되면 재확인 필요로 표시합니다. 요청 제한은 해당 경로만 일시 중지하며 다른 경로는 계속 사용할 수 있습니다.", "环境变量": "환경 변수", "立即重启": "지금 재시작", "等待恢复": "복구 대기 중", "管理员已关闭面板一键更新,请使用手动升级方式。": "관리자가 원클릭 업데이트를 껐습니다. 수동으로 업그레이드하세요.", "粘贴 GitHub 令牌(ghp_… / github_pat_…)": "GitHub 토큰 붙여넣기(ghp_… / github_pat_…)", "网关已关闭自动检查,此处只做手动检查": "게이트웨이에서 자동 확인을 껐습니다. 여기에서는 수동 확인만 가능합니다.", "群号": "그룹 번호", "群号:{group}": "그룹 번호: {group}", "自动检查更新": "자동 업데이트 확인", "自动选择最快可用源": "사용 가능한 가장 빠른 소스 자동 선택", "自动(官方优先)": "자동(공식 우선)", "自定义加速前缀": "사용자 지정 가속 접두사", "至少需要关注正式版或 beta 版中的一个通道": "정식 버전 또는 beta 버전 채널을 하나 이상 선택해야 합니다.", "补充内置备用源": "누락된 기본 소스 추가", "记录于 {time}": "기록 시각: {time}", "请先粘贴 GitHub 令牌": "먼저 GitHub 토큰을 붙여넣으세요", "请检查服务日志": "서비스 로그를 확인하세요", "读取下载进度失败:{error}": "다운로드 진행률을 읽지 못했습니다: {error}", "读取中": "읽는 중", "赞赏完全自愿,不解锁任何功能,也不影响正常使用。": "후원은 전적으로 자율입니다. 후원 여부는 기능 잠금 해제나 정상적인 이용에 영향을 주지 않습니다.", "赞赏方式": "후원 방법", "跟随软件": "소프트웨어 설정 따르기", "跳过此次更新": "이번 업데이트 건너뛰기", "软件更新": "소프트웨어 업데이트", "软件更新与插件共用此设置;GitHub 令牌仅发送给官方 API。镜像安装包需要官方校验值,镜像插件包需要可信签名。": "소프트웨어 업데이트와 플러그인이 이 설정을 공유합니다. GitHub 토큰은 공식 API에만 전송됩니다. 미러 설치 파일은 공식 체크섬이, 미러 플러그인은 신뢰할 수 있는 서명이 필요합니다.", "软件版本检查设置不可用": "소프트웨어 업데이트 확인 설정을 사용할 수 없습니다.", "返回内容异常": "잘못된 응답 내용", "这一版只有 {seen},没有本机需要的 {wanted}": "이 버전에는 {seen}만 있고 이 기기에 필요한 {wanted}가 없습니다", "这一版没有为当前平台提供安装包": "이 버전에는 현재 플랫폼용 설치 패키지가 없습니다", "这一版没有发布本机需要的安装包({wanted})": "이 버전에는 이 기기에 필요한 설치 패키지({wanted})가 게시되지 않았습니다", "这一版没有提供容器内更新包": "이 버전에는 컨테이너 내 업데이트 패키지가 없습니다", "这一版没有提供容器内更新包:{reason}": "이 버전에는 컨테이너 내 업데이트 패키지가 없습니다: {reason}", "这一版没有提供本机安装包": "이 버전에는 이 기기용 설치 패키지가 없습니다", "这一版还没有上传任何文件(构建可能失败,或仍在打包上传)": "이 버전에는 아직 아무 파일도 업로드되지 않았습니다(빌드가 실패했거나 아직 업로드 중입니다)", "这个版本没有填写发布说明。": "이 버전에는 릴리스 노트가 없습니다.", "连接超时": "연결 시간 초과", "通道已切换,但写入磁盘失败(重启后会回到原设置)": "채널이 전환되었지만 디스크에 저장하지 못했습니다(재시작하면 원래 설정으로 돌아갑니다)", "遇到问题或有使用心得,欢迎到群里交流。": "질문이나 사용 팁은 각 그룹에서 나눠 주세요.", "重启中": "재시작 중", "重新粘贴保存一次即可自愈": "토큰을 다시 붙여넣고 저장하면 해결됩니다", "重试下载": "다운로드 다시 시도", "链接地址不受支持": "지원하지 않는 링크 주소입니다", "限流冷却中": "요청 제한 해제 대기 중", "面板自动安装": "패널 자동 설치", "预发布": "프리릴리스", "默认开启;即使当前使用 beta 版,也可收到版本号更高的正式版更新。": "기본적으로 켜져 있습니다. beta 버전을 사용 중이어도 버전 번호가 더 높은 정식 버전 업데이트를 받을 수 있습니다.", "默认跟随软件的正式版和 beta 关注选择;单独设置只影响插件。始终按版本号选择更新,不会降级。": "기본적으로 소프트웨어의 정식 및 beta 채널 선택을 따릅니다. 별도 설정은 플러그인에만 적용됩니다. 항상 버전 번호로 업데이트를 선택하며 다운그레이드하지 않습니다.", "默认跟随软件的自动检查和间隔。关闭自动检查也会暂停插件自动更新和自动下载;手动检查与安装不受影响。": "기본적으로 소프트웨어의 자동 확인 및 간격을 따릅니다. 자동 확인을 끄면 플러그인 자동 업데이트와 자동 다운로드도 일시 중지됩니다. 수동 확인 및 설치에는 영향이 없습니다.", "(检查于 {time})": " (확인 시각 {time})", "API Key 列表": "API Key 목록", "Key 已停用": "Key를 비활성화했습니다", "Key 已删除": "Key를 삭제했습니다", "Key 已启用": "Key를 활성화했습니다", "Key 至少需要 8 个字符": "Key는 8자 이상이어야 합니다", "✅ Key 已创建,记得复制给客户端": "✅ Key를 생성했습니다. 클라이언트에 복사해 두세요", "✅ 可用范围已保存": "✅ 이용 범위를 저장했습니다", "不限制": "제한 없음", "与": "및", "例如 Cursor / 公司电脑": "예: Cursor / 회사 PC", "保存失败:{reason}": "저장 실패: {reason}", "保存范围": "범위 저장", "创建": "생성", "创建时间": "생성 시간", "删除网关 Key": "게이트웨이 키 삭제", "助手图片工具": "어시스턴트 이미지 도구", "助手标题总结": "어시스턴트 제목 요약", "可用提供商": "사용 가능한 제공자", "可用提供商:{names}": "사용 가능한 제공자: {names}", "可用模型": "사용 가능한 모델", "可用模型:{names}": "사용 가능한 모델: {names}", "可用范围": "이용 범위", "可用范围 · {name}": "이용 범위 · {name}", "启用「{name}」": "「{name}」 활성화", "复制 Key": "Key 복사", "客户端请求需带 ": "클라이언트 요청에는 ", "已删除": "삭제됨", "已启用鉴权 · {n} 把 Key 生效": "인증 활성 · Key {n}개 적용 중", "当前不限制:这把 Key 可以用全部提供商与全部对外模型": "현재 제한 없음: 이 Key는 모든 제공자와 모든 외부 공개 모델을 사용할 수 있습니다", "所选 API Key 已不可用": "선택한 API Key를 사용할 수 없습니다", "所选 API Key 已不可用,请重新选择": "선택한 API Key를 사용할 수 없습니다. 다른 Key를 선택하세요.", "提供商:{names}": "제공자: {names}", "搜索模型…": "모델 검색…", "操作失败:{reason}": "작업 실패: {reason}", "新建 API Key": "새 API Key", "日活保活": "일일 활동 유지", "显示": "표시", "未启用鉴权": "인증 비활성", "未命名": "이름 없음", "未提供客户端标识": "클라이언트 식별 정보 없음", "未知客户端": "알 수 없는 클라이언트", "模型调用使用所选 Key 的权限,日志记录 Key 名称,不保存密钥值。": "모델 호출에는 선택한 Key의 권한이 적용됩니다. 로그에는 Key 이름만 기록하며 비밀 값은 저장하지 않습니다.", "模型:{names}": "모델: {names}", "正在读取 API Key…": "API Key 불러오는 중…", "没有匹配的选项": "일치하는 항목이 없습니다", "没有可用的 API Key,请先在「网关 Key」页创建并启用": "사용 가능한 API Key가 없습니다. 게이트웨이 Key 페이지에서 생성하고 활성화하세요.", "留空 = 不限制": "비워 두면 제한 없음", "留空自动生成;手填至少 8 个字符": "비워 두면 자동 생성, 직접 입력 시 8자 이상", "留空表示不限制;同时设置时请求需同时满足两个条件(模型在白名单内且路由到允许的提供商)。 「可用模型」的候选跟着上面勾选的提供商走:没勾提供商时它是空的(还没有约束范围), 勾了几家就列出这几家能收的全部对外名。": "비워 두면 제한 없음. 둘 다 설정한 경우 요청은 두 조건을 모두 충족해야 합니다 (모델이 화이트리스트에 있고 허용된 제공자로 라우팅되어야 함). 「사용 가능한 모델」 후보는 위에서 선택한 제공자를 따릅니다: 제공자를 선택하지 않으면 비어 있고(아직 범위를 제약하지 않음), 몇 곳을 선택하면 그 제공자들이 처리할 수 있는 모든 외부 공개 이름을 나열합니다.", "确定删除 Key「{name}」?使用它的客户端会立刻无法访问。": "Key「{name}」을(를) 삭제할까요? 이 Key를 사용하는 클라이언트는 즉시 접근할 수 없게 됩니다.", "网关 Key 表": "게이트웨이 키 표", "自动记住本次选择,下次打开继续使用;Key 被停用或删除后需重新选择。": "선택한 Key를 기억하여 다음에도 사용합니다. Key가 비활성화되거나 삭제되면 다시 선택하세요.", "请先在上面选择可用提供商": "먼저 위에서 사용 가능한 제공자를 선택하세요", "读取 Key 列表失败:{reason}": "Key 목록 불러오기 실패: {reason}", "还没有 Key,当前不鉴权": "Key가 없습니다. 현재 인증하지 않음", "这几家当前没有可用模型(账号未登录或清单为空)": "이 제공자들은 현재 사용 가능한 모델이 없습니다 (계정 미로그인 또는 목록이 비어 있음)", "这把 Key 不限制提供商与模型(可用全部上游与全部对外模型)": "이 Key는 제공자와 모델을 제한하지 않습니다 (모든 업스트림과 모든 외부 공개 모델 사용 가능)", "限制:{text}": "제한: {text}", "隐藏": "숨기기", "(模型候选需先选提供商;不选则沿用当前这几项,保存后仍按模型白名单生效)": "(모델 후보는 제공자를 먼저 선택해야 합니다. 선택하지 않으면 현재 항목을 유지하며, 저장 후에도 모델 화이트리스트대로 적용됩니다)", "(行内「可用范围」):留空 = 不限制,两个都设时 按交集生效 —— 被限制的模型对这把 Key 表现为「不存在」(拉 /v1/models 也看不到它), 提供它的家不在可用列表里时请求同样被拒。": "(행의 「이용 범위」): 비워 두면 제한 없음, 둘 다 설정하면 교집합으로 적용됩니다 — 제한된 모델은 이 Key에 대해 「존재하지 않는」 것으로 취급되며(/v1/models로 조회해도 보이지 않음), 이를 제공하는 제공자가 사용 가능 목록에 없으면 요청도 거부됩니다.", "+ 新建 Key": "+ 새 Key", "; 修改后立即生效,本程序自身会自动使用第一把启用的 Key。每把 Key 可单独限制": "; 수정 후 즉시 적용되며, 이 프로그램 자체는 첫 번째 활성화된 Key를 자동으로 사용합니다. 각 Key는 개별적으로 제한할 수 있습니다", ";修改后立即生效。模型测试、助手和日活保活必须选择 Key,受限 Key 不能访问管理接口。每把 Key 可单独限制": "; 변경 사항은 즉시 적용됩니다. 모델 테스트, 어시스턴트 및 일일 활동 유지에는 Key 선택이 필요합니다. 제한된 Key는 관리 API에 접근할 수 없습니다. 각 Key에서 개별적으로 제한할 수 있는 항목은 ", ";当前必须带 Key。": "; 활성화된 Key가 필요합니다.", " AI 账号专用静态住宅 IP:Scamalytics 低欺诈评分,不限流量,首单 75 折(AGENT2API25)": " AI 계정 전용 네이티브 정적 주거용 IP: Scamalytics 사기 점수가 낮고, 트래픽 무제한, 첫 구매 25% 할인(AGENT2API25)", " 提供 AI 账号专用的原生静态住宅 IP(Static Residential ISP):IP 来自真实家庭宽带运营商,Scamalytics 低欺诈评分,每个 IP 独享,不限流量,$3.90 起。": "는 AI 계정 전용 네이티브 정적 주거용 IP(Static Residential ISP)를 제공합니다. 실제 가정용 브로드밴드 사업자의 IP를 사용하며 Scamalytics 사기 점수가 낮고, IP는 1개씩 전용, 트래픽 무제한, $3.90부터.", " 那一类由「同步 Clash Verge」 镜像进来(进入本页时会自动同步一次):名称、端口、启用都跟随 Clash, 在 Clash 里改或删,这里跟着变 —— 所以它们只读,改请到 Clash Verge 里改。": " 항목은 「Clash Verge 동기화」로 미러링됩니다 (이 페이지에 들어오면 자동으로 한 번 동기화): 이름, 포트, 활성 여부가 모두 Clash를 따르고, Clash에서 수정하거나 삭제하면 여기도 함께 바뀝니다 — 따라서 읽기 전용이며, 수정은 Clash Verge에서 하세요.", "Clash Verge": "Clash Verge", "SOCKS5 用户名和密码不能超过 255 字节": "SOCKS5 사용자 이름과 비밀번호는 255바이트를 넘을 수 없습니다", "YAML 文件": "YAML 파일", "{names} 等 {n} 条": "{names} 외 {n}건", "{n} 个出口": "엔드포인트 {n}개", "{n} 个账号在用": "사용 중인 계정 {n}개", "{n} 条订阅": "구독 {n}개", "{percent}%({received} / {total} MB)": "{percent}% ({received} / {total} MB)", "✅ {ip}": "✅ {ip}", "✅ 「{name}」出口可用{ip}{took}": "✅ 「{name}」 엔드포인트 사용 가능{ip}{took}", "✅ 内核下载完成,正在启动…": "✅ 커널 다운로드 완료, 시작 중…", "✅ 内核已手动导入到 {dir}": "✅ 커널을 {dir}에 수동으로 가져왔습니다", "✅ 已同步 Clash Verge 出口({n} 项变更)": "✅ Clash Verge 엔드포인트를 동기화했습니다 ({n}건 변경)", "✅ 连接成功": "✅ 연결 성공", "✅ 连通性测试设置已保存": "✅ 연결 테스트 설정을 저장했습니다", "❌ 「{name}」{error}": "❌ 「{name}」 {error}", "❌ 连接失败": "❌ 연결 실패", "「测试」与「批量测试」访问的目标;留空用默认(打 WorkBuddy 上游)。判据是能否拿到 HTTP 响应,不用考虑该网址返回什么内容。": "\"테스트\"와 \"선택 테스트\"가 접속하는 대상입니다. 비워 두면 기본값(WorkBuddy 업스트림)을 사용합니다. 판정 기준은 HTTP 응답을 받을 수 있는지이며, URL이 무엇을 반환하는지는 중요하지 않습니다.", "上传本地文件": "로컬 파일 업로드", "上次下载失败:{reason}": "지난 다운로드 실패: {reason}", "上次下载已停止,未下载完的临时文件已删除": "지난 다운로드가 중지되었고 미완성 임시 파일은 삭제되었습니다", "上次同步": "마지막 동기화", "上次测试": "최근 테스트", "下载": "다운로드", "下载中…": "다운로드 중…", "下载内核": "커널 다운로드", "下载已经完成,停止没赶上(内核已安装)": "중지가 미처 적용되지 못하고 다운로드가 완료되었습니다(커널 설치됨)", "下载线路": "다운로드 경로", "下载线路 / 存放目录没能写进配置(本次下载已按新设置走,重启后会恢复原值)": "경로 / 저장 폴더를 설정에 저장하지 못했습니다(이번 다운로드는 새 설정으로 진행되며 재시작 후 원래 값으로 돌아갑니다)", "不再提供": "제공 종료", "不再提醒": "다시 표시하지 않기", "为降低维护成本、资源占用及合规风险,Agent2API 已停止提供代理订阅与内置代理内核相关功能。": "유지 관리 비용, 리소스 사용량 및 규정 준수 위험을 줄이기 위해 Agent2API는 프록시 구독 및 내장 프록시 커널 기능 제공을 종료했습니다.", "之前使用订阅节点?": "구독 노드를 사용하고 있었나요?", "也可以把二维码截图直接粘贴到弹窗里(Ctrl+V)": "QR 코드 스크린샷을 대화상자에 바로 붙여넣을 수도 있습니다 (Ctrl+V)", "二维码里没有订阅链接": "QR 코드에 구독 링크가 없습니다", "从图片识别二维码": "이미지에서 QR 코드 인식", "代理主机只能填写域名或 IP 地址,不能包含协议、端口或路径": "프로토콜, 포트, 경로를 제외한 도메인 또는 IP 주소만 입력하세요", "代理主机地址无效": "프록시 호스트가 올바르지 않습니다", "代理修改已保存": "프록시 변경 사항을 저장했습니다", "代理内核": "프록시 커널", "代理内核未安装(下载内核后,被账号或服务线路引用的节点会自动开监听端口)": "프록시 커널이 설치되지 않았습니다. 다운로드하면 계정 또는 서비스 경로에서 참조하는 노드에 수신 포트가 자동으로 할당됩니다.", "代理内核未安装(在「订阅管理」里下载内核后,被账号引用的节点会自动开监听端口)": "프록시 커널이 설치되지 않았습니다 (「구독 관리」에서 커널을 다운로드하면 계정이 참조하는 노드에 자동으로 수신 포트가 할당됩니다)", "代理列表": "프록시 목록", "代理列表加载失败:{reason}": "프록시 목록 불러오기 실패: {reason}", "代理列表响应异常": "프록시 목록 응답이 비정상입니다", "代理协议只支持 HTTP 或 SOCKS5": "HTTP 또는 SOCKS5 프록시만 지원합니다", "代理名称": "프록시 이름", "代理名称不能超过 60 个字符": "프록시 이름은 60자를 넘을 수 없습니다", "代理已添加": "프록시를 추가했습니다", "代理格式无效,请按示例填写": "프록시 형식이 잘못되었습니다. 예시에 따라 입력하세요", "代理池": "프록시 풀", "代理池表": "프록시 풀 표", "代理订阅功能已下线": "프록시 구독 기능이 종료되었습니다", "代理设置": "프록시 설정", "代理设置响应异常": "프록시 설정 응답이 비정상입니다", "代理账号和密码不能超过 200 个字符": "프록시 사용자 이름과 비밀번호는 200자를 넘을 수 없습니다", "代理账号或密码的 URL 编码无效": "프록시 사용자 이름 또는 비밀번호의 URL 인코딩이 잘못되었습니다", "以下行未能识别,已留在输入框中;修正后可再次解析。": "다음 줄을 분석하지 못해 입력란에 남겨 두었습니다. 수정한 후 다시 분석하세요.", "使用情况": "사용 현황", "例如:我的机场": "예: 내 공항", "例如:香港 HTTP 出口": "예: 홍콩 HTTP 엔드포인트", "保存代理": "프록시 저장", "保存已有的代理地址,供账号与服务线路按需使用。": "기존 프록시 주소를 저장하여 계정과 서비스 경로에서 필요할 때 사용하세요.", "保持原文件": "기존 파일 유지", "停止下载": "다운로드 중지", "停止下载失败:{reason}": "다운로드 중지 실패: {reason}", "停止请求已发出,但下载还没收手,稍后再看一次进度": "중지를 요청했지만 아직 멈추지 않았습니다. 잠시 후 진행 상황을 다시 확인하세요", "先把下载的内核放到网关机器的目录,再填写文件或目录的绝对路径。目录内会查找官方包或 mihomo 二进制;远程面板不能读取浏览器电脑的路径。": "다운로드한 커널을 게이트웨이의 폴더에 넣고 절대 경로를 입력하세요. 폴더에서 공식 압축 파일이나 mihomo 바이너리를 찾습니다. 원격 패널은 브라우저 컴퓨터의 경로를 읽을 수 없습니다.", "先经过系统代理,再连接到此代理": "시스템 프록시를 먼저 거쳐 이 프록시에 연결합니다", "全选当前筛选出的出口": "현재 필터된 항목 모두 선택", "全选所有代理": "모든 프록시 전체 선택", "全选({n} 个)": "전체 선택({n}개)", "全部协议": "모든 프로토콜", "全部提供方": "모든 제공자", "全部订阅": "모든 구독", "关掉这个窗口不会中断下载(它在后台继续跑)—— 要停下就点下面的「停止下载」,未下载完的临时文件会被删除。": "이 창을 닫아도 다운로드는 중단되지 않습니다(백그라운드에서 계속 실행). 멈추려면 아래의 \"다운로드 중지\"를 누르세요. 미완성 임시 파일은 삭제됩니다.", "关闭代理后,引用它的账号回退直连。连通性以最近一次检测结果为准。": "프록시를 비활성화하면 참조하는 계정은 직접 연결로 전환됩니다. 연결 상태는 최근 테스트 결과를 기준으로 합니다.", "关闭内核": "커널 중지", "关闭内核失败:{reason}": "커널 중지 실패: {reason}", "其中 {n} 条正被账号使用 —— 删除后那些账号会回退直连。": "그중 {n}건은 계정이 사용 중입니다 — 삭제하면 해당 계정들은 직접 연결로 폴백합니다.", "其中 {n} 条正被账号使用 —— 删除后需重新设置相关账号的代理,不会自动直连。": "선택한 프록시 중 {n}개를 계정이 사용 중입니다. 삭제 후 관련 계정의 프록시를 다시 설정해야 하며 직접 연결로 자동 전환하지 않습니다.", "其中 {n} 条是同步来的只读条目(Clash / 订阅):可参与批量测试,删除会跳过": "그중 {n}개는 동기화된 읽기 전용 항목(Clash / 구독)입니다: 일괄 테스트에는 포함되고 삭제에서는 건너뜁니다", "其中 {n} 条来自 Clash 同步:可参与批量测试,删除会跳过": "그중 {n}건은 Clash 동기화 항목입니다: 일괄 테스트에는 참여하고, 삭제 시에는 건너뜁니다", "内核 {version}": "커널 {version}", "内核 {version}({asset})": "커널 {version}({asset})", "内核下载": "커널 다운로드", "内核下载失败:{reason}": "커널 다운로드 실패: {reason}", "内核二进制 / 配置 / 端口映射都会放在这里,默认 {dir};目录不存在会在下载开始时自动创建。": "커널 바이너리 / 설정 / 포트 매핑이 모두 이곳에 저장됩니다. 기본값 {dir}. 없는 폴더는 다운로드 시작 시 자동으로 생성됩니다.", "内核启动失败:{reason}": "커널 시작 실패: {reason}", "内核导入仍在后台执行,请刷新状态查看结果": "커널 가져오기가 백그라운드에서 계속 실행 중입니다. 상태를 새로 고쳐 결과를 확인하세요.", "内核导入任务排队中…": "커널 가져오기 작업 대기 중…", "内核导入失败": "커널 가져오기 실패", "内核导入状态已变化,请刷新后确认": "커널 가져오기 상태가 변경되었습니다. 새로 고쳐 확인하세요.", "内核已停止": "커널 중지됨", "内核已停止,点「启动内核」拉起": "커널이 중지되어 있습니다. 「커널 시작」을 눌러 실행하세요", "内核已关闭(订阅与端口注册表保留,「启动内核」后原位恢复)": "커널을 중지했습니다(구독과 포트 등록이 유지되며 \"커널 시작\" 후 원래 포트로 복원됩니다)", "内核已导入,但启动失败:{reason}": "커널을 가져왔지만 시작하지 못했습니다: {reason}", "内核已导入,但存放目录未能保存,重启网关后会恢复原位置": "커널을 가져왔지만 저장 폴더를 기록하지 못했습니다. 게이트웨이를 다시 시작하면 이전 위치로 돌아갑니다.", "内核已手动关闭": "커널 수동 중지됨", "内核已手动关闭(点「启动内核」拉起)": "커널이 수동으로 중지되어 있습니다. 「커널 시작」을 눌러 실행하세요", "内核文件必须非空且不超过 {max} MiB": "커널 파일은 비어 있지 않아야 하며 {max} MiB를 넘을 수 없습니다", "内核未安装": "커널 미설치", "内核正在启动…": "커널 시작 중…", "内核正在执行操作,请稍后重试": "커널 작업이 진행 중입니다. 잠시 후 다시 시도하세요.", "内核没有在超时内停下来": "제한 시간 안에 커널이 멈추지 않았습니다", "内核目录没能删掉(可能仍被进程占用),稍后重试一次": "커널 폴더를 삭제하지 못했습니다(프로세스가 아직 사용 중일 수 있습니다). 잠시 후 다시 시도하세요.", "内核运行中": "커널 실행 중", "出口 IP {ip}": "출구 IP {ip}", "出口可用": "프록시 사용 가능", "出口测试网址": "연결 테스트 URL", "删除代理": "프록시 삭제", "删除内核": "커널 삭제", "删除内核失败:{reason}": "커널 삭제 실패: {reason}", "删除订阅": "구독 삭제", "刷新中…": "새로 고치는 중…", "刷新失败:{reason}": "새로 고침 실패: {reason}", "功能调整通知": "기능 변경 안내", "勾选「{name}」": "「{name}」 선택", "单个添加": "개별 추가", "去获取": "받으러 가기", "另有 {n} 条是同步来的只读条目(Clash / 订阅),将跳过。": "추가로 {n}개는 동기화된 읽기 전용 항목(Clash / 구독)이라 건너뜁니다.", "另有 {n} 条来自 Clash Verge 同步,将跳过(请到 Clash Verge 里删)。": "그 외 {n}건은 Clash Verge 동기화 항목이라 건너뜁니다 (Clash Verge에서 삭제하세요).", "只读:在 Clash Verge 里改": "읽기 전용: Clash Verge에서 수정하세요", "只读:在「订阅管理」里改": "읽기 전용: 「구독 관리」에서 수정하세요", "同步 Clash Verge": "Clash Verge 동기화", "同步中…": "동기화 중…", "同步失败:{reason}": "동기화 실패: {reason}", "名字与端口在 Clash Verge 里改;启用可在本页关闭": "이름과 포트는 Clash Verge에서 변경하세요. 사용 여부는 이 페이지에서 끌 수 있습니다", "名字与端口跟随订阅与内核;启用可在本页关闭": "이름과 포트는 구독과 커널을 따릅니다. 사용 여부는 이 페이지에서 끌 수 있습니다", "后台继续": "백그라운드에서 계속", "启动内核": "커널 시작", "启用订阅「{name}」": "구독 「{name}」 사용", "启用这条代理": "이 프록시 활성화", "启用这条订阅": "이 구독 사용", "启用(禁用后,使用此代理的账号请求将失败;仍可测试)": "활성화 (비활성화하면 이 프록시를 사용하는 계정의 요청이 실패합니다. 테스트는 가능)", "启用(禁用的条目不会被账号使用,被引用时账号回退直连;仍可测试)": "활성 (비활성 항목은 계정이 사용하지 않으며, 참조 중이면 계정은 직접 연결로 폴백합니다. 테스트는 계속 가능)", "启用(禁用的订阅不参与内核同步,它的节点会从代理池移除)": "사용 (사용하지 않는 구독은 커널 동기화에 포함되지 않으며, 해당 노드는 프록시 풀에서 제거됩니다)", "图片读取失败": "이미지 읽기 실패", "地址": "주소", "地址不完整": "주소 불완전", "地址由网关所在设备访问;本机代理需运行在该设备上。": "이 주소는 게이트웨이가 있는 기기에서 접근합니다. 로컬 프록시는 해당 기기에서 실행되어야 합니다.", "复制下载链接": "다운로드 링크 복사", "失败 {n} 个({reason})": "실패 {n}개 ({reason})", "存放位置": "저장 위치", "存放位置 {dir}": "저장 위치 {dir}", "存放位置要填绝对路径,例如 D:\\proxy-kernel": "저장 위치는 절대 경로여야 합니다(예: D:\\proxy-kernel)", "家庭宽带": "가정용 브로드밴드", "导入内核": "커널 가져오기", "导入并替换": "가져와서 교체", "导入来源": "가져오기 소스", "将替换现有代理内核,运行中的连接会短暂中断。订阅、账号引用与端口映射会保留。是否继续?": "기존 프록시 커널을 교체하면 현재 연결이 잠시 중단됩니다. 구독, 계정 참조 및 포트 매핑은 유지됩니다. 계속할까요?", "展开其余 {n} 个 ▾": "나머지 {n}개 펼치기 ▾", "已下载?手动导入": "이미 다운로드했나요? 수동 가져오기", "已保存。重启内核后,新分配的节点端口才会按新范围来。": "저장되었습니다. 커널을 재시작하면 새로 할당되는 노드 포트가 새 범위를 따릅니다.", "已保存「{name}」": "「{name}」을(를) 저장했습니다", "已停止下载内核(未下载完的临时文件已删除)": "커널 다운로드를 중지했습니다(미완성 임시 파일 삭제됨)", "已删除 {n} 个代理": "프록시 {n}개를 삭제했습니다", "已删除「{name}」": "「{name}」을(를) 삭제했습니다", "已删除内核(订阅与账号引用保留,重新下载后会重新分配端口)": "커널을 삭제했습니다(구독과 계정 참조는 유지되며, 다시 다운로드하면 포트가 재할당됩니다)", "已删除内核(订阅与账号引用保留;有文件仍被占用,将在下次启动时清理)": "커널을 삭제했습니다(구독과 계정 참조는 유지됩니다. 사용 중인 파일이 있어 다음 실행 시 정리됩니다)", "已刷新「{name}」,正在同步节点…": "「{name}」을(를) 새로 고쳤습니다. 노드 동기화 중…", "已启用 {n} 个": "{n}개 활성화", "已启用「{name}」": "「{name}」을(를) 활성화했습니다", "已启用「{name}」,正在补建监听端口(内核重建中)": "\"{name}\"을(를) 사용하도록 설정했습니다. 수신 포트를 다시 만드는 중입니다(커널 재시작 중)", "已在本页禁用(打开开关即恢复)": "이 페이지에서 사용 중지했습니다(스위치를 켜면 되돌아갑니다)", "已新增「{name}」": "「{name}」을(를) 추가했습니다", "已新增订阅「{name}」,内核正在同步节点…": "구독 「{name}」을(를) 추가했습니다. 커널이 노드를 동기화하는 중…", "已是最新,没有需要同步的变更": "이미 최신 상태이며 동기화할 변경 사항이 없습니다", "已有手动配置不受此次调整影响。你仍可添加 HTTP / SOCKS5 地址,并使用连通性测试。": "기존 수동 설정은 영향을 받지 않습니다. HTTP / SOCKS5 주소 추가와 연결 테스트는 계속 사용할 수 있습니다.", "已有手动配置和 Clash Verge 端点引用不受影响。仍可添加 HTTP / SOCKS5 地址、同步 Clash Verge 端点并测试连通性;Clash Verge 由你自行安装和运行。": "기존 수동 설정과 Clash Verge 엔드포인트 참조는 영향을 받지 않습니다. HTTP / SOCKS5 주소 추가, Clash Verge 동기화 및 연결 테스트는 계속 사용할 수 있습니다. Clash Verge는 별도로 설치하고 실행하세요.", "已有账号引用它,但内核还没把监听端口补建出来 —— 稍等片刻,或重新启用这条节点": "계정이 이미 이 노드를 참조하고 있지만 커널이 아직 수신 포트를 만들지 않았습니다 — 잠시 기다리거나 이 노드를 다시 활성화하세요", "已有账号或服务线路引用它,监听端口尚未就绪;请稍等,或检查内核状态": "계정 또는 서비스 경로가 이 노드를 참조하고 있지만 수신 포트가 아직 준비되지 않았습니다. 잠시 기다리거나 커널 상태를 확인하세요.", "已禁用「{name}」": "「{name}」을(를) 비활성화했습니다", "已禁用「{name}」,监听端口正在关闭(内核重建中)": "\"{name}\"을(를) 사용 중지했습니다. 수신 포트를 닫는 중입니다(커널 재시작 중)", "已禁用(未开监听端口)": "사용 중지됨(수신 포트 없음)", "已移除的订阅": "제거된 구독", "已识别 {n} 条 · 已勾选 {selected} 条": "분석됨 {n}개 · 선택됨 {selected}개", "已识别 {n} 条代理,跳过 {duplicates} 条重复地址": "프록시 {n}개를 분석하고 중복 주소 {duplicates}개를 건너뛰었습니다", "已识别订阅链接": "구독 링크를 인식했습니다", "已选择「{name}」,保存后导入": "\"{name}\" 선택됨 - 저장 시 가져옵니다", "已配置认证": "인증 설정됨", "当前客户端不支持手动导入内核,请更新或刷新页面": "이 클라이언트는 커널 수동 가져오기를 지원하지 않습니다. 업데이트하거나 페이지를 새로 고치세요.", "当前没有正在进行的下载": "진행 중인 다운로드가 없습니다", "当前环境不支持代理池(桥接方法缺失)": "현재 환경에서는 프록시 풀을 지원하지 않습니다 (브리지 메서드 누락)", "当前环境不支持代理测试(桥接方法缺失)": "현재 환경에서는 프록시 테스트를 지원하지 않습니다 (브리지 메서드 누락)", "当前环境不支持代理设置(桥接方法缺失)": "이 환경은 프록시 설정을 지원하지 않습니다(브리지 메서드 없음)", "当前环境不支持同步(桥接方法缺失)": "현재 환경에서는 동기화를 지원하지 않습니다 (브리지 메서드 누락)", "当前环境不支持启停(桥接方法缺失)": "이 환경에서는 사용/중지 전환을 지원하지 않습니다(브리지 메서드 없음)", "当前环境不支持订阅(桥接方法缺失)": "현재 환경에서는 구독을 지원하지 않습니다 (브리지 메서드 없음)", "当前环境不支持选择文件夹,直接填写绝对路径即可": "이 환경에서는 폴더 선택을 열 수 없습니다. 절대 경로를 직접 입력하세요", "当前线路不可用:{error};重新选一条或切回直连": "현재 경로를 사용할 수 없습니다: {error}. 다른 경로를 선택하거나 직접 연결로 되돌리세요", "我知道了": "확인", "所属订阅已删除,这条节点不会再分配端口 —— 可以删除它": "소속 구독이 삭제되어 이 노드에는 더 이상 포트가 할당되지 않습니다 — 삭제해도 됩니다", "手动下载官方内核": "공식 커널 수동 다운로드", "手动代理与 Clash Verge 同步仍然保留": "수동 프록시와 Clash Verge 동기화는 계속 사용 가능", "手动代理仍然保留": "수동 프록시는 계속 사용 가능", "手动填写的地址与端口": "직접 입력한 주소와 포트", "手动导入内核": "커널 수동 가져오기", "打开文件夹选择框失败:{reason}": "폴더 선택 창을 열지 못했습니다: {reason}", "批量删除": "일괄 삭제", "批量删除代理": "프록시 일괄 삭제", "批量测试": "일괄 테스트", "批量测试完成:{ok} 个可用、{failed} 个失败(共 {total} 个)": "일괄 테스트 완료: {ok}개 사용 가능, {failed}개 실패 (총 {total}개)", "批量测试完成:{ok} 个可用(共 {total} 个)": "일괄 테스트 완료: {ok}개 사용 가능 (총 {total}개)", "批量测试({n})": "일괄 테스트 ({n})", "批量添加": "일괄 추가", "批量添加响应异常,请刷新代理列表确认后再试": "일괄 추가 응답이 비정상입니다. 프록시 목록을 새로 고쳐 저장 결과를 확인한 후 다시 시도하세요", "批量添加完成:新增 {added} 条,重复 {duplicates} 条,失败 {failed} 条": "일괄 추가 완료: 추가 {added}개, 중복 {duplicates}개, 실패 {failed}개", "批量添加({n})": "일괄 추가 ({n})", "按协议筛选": "프로토콜별 필터", "按提供方筛选": "제공자별 필터", "按来源筛选": "출처로 필터", "按需下载(约 20-40MB)": "필요할 때 다운로드 (약 20-40MB)", "控制端口 {port} · {n} 个节点监听器": "제어 포트 {port} · 노드 리스너 {n}개", "搜索代理": "프록시 검색", "搜索名称 / 地址 / 端口": "이름 / 주소 / 포트 검색", "搜索节点": "노드 검색", "支持官方压缩包和解压后的内核二进制;只接受当前版本,SHA-256 校验不通过时不会替换现有内核。": "공식 압축 파일과 압축을 푼 커널 바이너리를 지원합니다. 현재 버전만 허용하며 SHA-256 확인에 실패하면 기존 커널을 교체하지 않습니다.", "支持手动地址与 Clash Verge 端点同步,不接管代理服务的安装与运行。": "수동 주소와 Clash Verge 엔드포인트 동기화를 지원하며, 프록시 서비스의 설치 및 실행은 관리하지 않습니다.", "文件或目录路径": "파일 또는 폴더 경로", "文件读取失败": "파일을 읽지 못했습니다", "新增代理": "프록시 추가", "新增方式": "추가 방식", "新增订阅": "구독 추가", "新解析的代理默认使用非直连": "새로 분석한 프록시는 기본적으로 시스템 프록시 경유", "显示 {n} / 共 {total} 个出口": "{n} / 전체 {total}개 표시", "暂未使用": "사용 중 아님", "更新中…": "업데이트 중…", "更新出网线路已保存,正在准备监听端口": "업데이트 경로를 저장했습니다. 수신 포트를 준비하는 중입니다.", "替换代理内核": "프록시 커널 교체", "最近检测": "최근 테스트", "有 {n} 个账号正在使用它({names})—— 删除后这些账号会回退直连。": "이 프록시를 사용 중인 계정이 {n}개 있습니다 ({names}) — 삭제하면 해당 계정들은 직접 연결로 폴백합니다.", "有 {n} 个账号正在使用它({names})—— 删除后需重新设置这些账号的代理,不会自动直连。": "{n}개 계정이 사용 중입니다({names}). 삭제 후 해당 계정의 프록시를 다시 설정해야 하며 직접 연결로 자동 전환하지 않습니다.", "有 {n} 个账号正在使用它,删除后这些账号会回退直连。": "{n}개 계정이 사용 중입니다. 삭제하면 해당 계정은 직접 연결로 전환됩니다.", "有 {n} 个账号正在使用它,删除后需重新设置这些账号的代理,不会自动直连。": "{n}개 계정이 사용 중입니다. 삭제 후 해당 계정의 프록시를 다시 설정해야 하며 직접 연결로 자동 전환하지 않습니다.", "未检测": "테스트 전", "未检测到 Clash Verge:{reason}": "Clash Verge를 감지하지 못했습니다: {reason}", "未测试": "테스트 전", "未选择文件": "파일이 선택되지 않았습니다", "本地 YAML 文件": "로컬 YAML 파일", "本地文件": "로컬 파일", "本地文件不会自动更新:要更新节点,重新选择文件后保存;不重选则内容保持不变。": "로컬 파일은 자동 갱신되지 않습니다: 노드를 업데이트하려면 파일을 다시 선택해 저장하세요. 다시 선택하지 않으면 내용이 그대로 유지됩니다.", "本地文件订阅无需更新(要换内容请编辑后重新选择文件)": "로컬 파일 구독은 업데이트가 필요 없습니다(내용을 바꾸려면 편집에서 파일을 다시 선택하세요)", "本地文件订阅的内容在导入时固定:节点会由内核起成本地监听器并镜像进代理池,节点数稍等几秒由轮询刷新。": "로컬 파일 구독의 내용은 가져올 때 고정됩니다: 노드는 커널이 로컬 리스너로 실행해 프록시 풀로 미러링되며, 노드 수는 몇 초 후 폴링으로 갱신됩니다.", "本页可编辑、可删除": "이 페이지에서 편집 및 삭제 가능", "来自 Clash Verge 同步(名称、端口跟随 Clash),请到 Clash Verge 中修改;启用可在本页关闭": "Clash Verge에서 동기화됨(이름과 포트는 Clash를 따름). 변경은 Clash Verge에서 하세요. 사용 여부는 이 페이지에서 끌 수 있습니다", "正在下载内核": "커널 다운로드 중", "正在停止…": "중지 중…", "正在安装内核…": "커널 설치 중…", "正在导入…": "가져오는 중…", "正在开始…": "시작 중…", "正在校验内核…": "커널 확인 중…", "正在读取并上传文件…": "파일을 읽고 업로드하는 중…", "正在连接 GitHub…": "GitHub에 연결 중…", "此代理用于{services};删除后这些线路将不可用,不会自动回退直连。": "이 프록시는 {services}에 사용됩니다. 삭제하면 해당 경로를 사용할 수 없으며 직접 연결로 자동 폴백하지 않습니다.", "此代理用于软件 / 插件更新;删除后这些线路将不可用,不会自动回退直连。": "이 프록시는 소프트웨어 / 플러그인 업데이트에 사용됩니다. 삭제하면 해당 경로를 사용할 수 없으며 직접 연결로 자동 전환되지 않습니다.", "每次最多添加 {n} 条代理": "한 번에 최대 {n}개의 프록시를 추가할 수 있습니다", "每行一条,解析后可修改名称、设置非直连并测试,最后保存勾选的代理。": "한 줄에 하나씩 입력하세요. 분석 후 이름과 시스템 프록시 경유 설정을 변경하고 테스트한 다음 선택한 프록시를 저장할 수 있습니다.", "没有匹配「{kw}」的出口": "「{kw}」와 일치하는 항목이 없습니다", "没有匹配当前筛选的出口": "현재 필터에 맞는 항목이 없습니다", "没有可全选的代理": "전체 선택할 프록시가 없습니다", "没有可删除的条目": "삭제할 항목이 없습니다", "没能同步:{reason}": "동기화하지 못했습니다: {reason}", "测试中 {done}/{total}": "테스트 중 {done}/{total}", "测试失败:{reason}": "테스트 실패: {reason}", "测试目标网址": "테스트 대상 URL", "测试结果没能记下:{reason}": "테스트 결과를 기록하지 못했습니다: {reason}", "测试网址要以 http:// 或 https:// 开头": "테스트 URL은 http:// 또는 https:// 로 시작해야 합니다", "测试设置": "테스트 설정", "添加一个 HTTP 或 SOCKS5 地址,之后可以在账号或服务线路中选择使用。": "HTTP 또는 SOCKS5 주소를 추가하면 계정이나 서비스 경로에서 선택할 수 있습니다.", "添加单个": "프록시 하나 추가", "添加手动 HTTP / SOCKS5 地址,或同步 Clash Verge 的端点,供账号与服务线路使用。": "HTTP / SOCKS5 주소를 직접 추가하거나 Clash Verge 엔드포인트를 동기화하여 계정과 서비스 경로에서 사용하세요.", "添加第一个代理": "첫 프록시 추가", "清空已识别": "분석한 목록 비우기", "清空筛选": "필터 초기화", "确定删除「{name}」?{used}": "「{name}」을(를) 삭제할까요? {used}", "确定删除「{name}」?它在代理池里的节点会一并移除,引用这些节点的账号会回退直连。": "「{name}」을(를) 삭제하시겠습니까? 프록시 풀의 해당 노드도 함께 제거되며, 이를 참조하는 계정은 직접 연결로 되돌아갑니다.", "确定删除「{name}」?": "\"{name}\"을(를) 삭제할까요?", "确定删除已下载的内核{version}?内核文件与端口映射会被移除,订阅节点会失去监听端口(地址列显示「端口准备中」),引用它们的账号会暂时回退直连;订阅本身保留,重新下载内核后会重新分配端口。": "다운로드한 커널{version}을(를) 삭제하시겠습니까? 커널 파일과 포트 매핑이 제거되어 구독 노드는 수신 포트를 잃습니다(주소 열에「포트 준비 중」이 표시됩니다). 이를 참조하는 계정은 일시적으로 직접 연결로 폴백합니다. 구독 자체는 유지되며, 커널을 다시 다운로드하면 포트가 재할당됩니다.", "确定删除选中的 {n} 个代理?": "선택한 프록시 {n}개를 삭제할까요?", "禁用后本端不再用它(引用它的账号回退直连),并会关掉它的本地监听端口": "사용을 중지하면 이 기기에서는 더 이상 쓰지 않고(참조하는 계정은 직접 연결로 돌아갑니다) 로컬 수신 포트도 닫습니다", "禁用后本端不再用它(引用它的账号回退直连);端口在 Clash Verge 侧,不受影响": "사용을 중지하면 이 기기에서는 더 이상 쓰지 않습니다(참조하는 계정은 직접 연결로 돌아갑니다). 포트는 Clash Verge 쪽에 그대로 있으며 영향을 받지 않습니다", "立即更新": "즉시 업데이트", "端口范围必须是 1-65535 的整数": "포트 범위는 1~65535 사이의 정수여야 합니다", "第 {line} 行:{error}": "{line}번째 줄: {error}", "类型": "유형", "粘贴代理列表后点击「解析」": "프록시 목록을 붙여넣고 '분석'을 누르세요", "编辑代理": "프록시 편집", "编辑订阅": "구독 편집", "网关已切换,请重新打开代理弹窗": "게이트웨이가 변경되었습니다. 프록시 창을 다시 여세요", "网关未返回内核导入任务,请刷新状态后确认": "게이트웨이가 커널 가져오기 작업을 반환하지 않았습니다. 상태를 새로 고쳐 결과를 확인하세요.", "网关机器上的文件或目录": "게이트웨이의 파일 또는 폴더", "节点": "노드", "节点由内核起成本地监听器,镜像进代理池": "노드는 커널이 로컬 리스너로 실행하고 프록시 풀에 미러링합니다", "节点端口范围 {base}–{end}": "노드 포트 범위 {base}–{end}", "节点端口范围(结束)": "노드 포트 범위(끝)", "节点端口范围(起始)": "노드 포트 범위(시작)", "解析": "분석", "订阅": "구독", "订阅与 Clash 的出口自动镜像进来": "구독과 Clash 항목이 자동으로 미러링됩니다", "订阅内容由内核定时刷新(每 24 小时);节点数与同步状态在保存后由轮询刷新,稍等几秒。": "구독 내용은 커널이 주기적(24시간마다)으로 새로 고칩니다. 저장 후 노드 수와 동기화 상태는 폴링으로 갱신되니 몇 초만 기다려 주세요.", "订阅导入与更新、订阅节点管理,以及代理内核的下载、安装和运行。": "구독 가져오기 및 업데이트, 구독 노드 관리, 프록시 커널 다운로드, 설치 및 실행.", "订阅来源": "구독 소스", "订阅管理": "구독 관리", "订阅管理({n})": "구독 관리 ({n})", "订阅节点会在本机各占一个监听端口,从该范围里挑空闲的分配;节点多的大订阅把默认范围({base}-{end})用尽时会报「没有可用的节点端口」,这时把范围调大再重启内核。已分配出去的端口不会因改范围而失效。": "구독 노드는 로컬 리스너 포트를 하나씩 차지하며 이 범위의 비어 있는 포트에서 할당됩니다. 노드가 많은 대형 구독이 기본 범위({base}-{end})를 모두 사용하면 \"사용 가능한 노드 포트가 없습니다\"라고 표시되며, 이때 범위를 넓히고 커널을 재시작하세요. 이미 할당된 포트는 범위를 변경해도 유효합니다.", "订阅里的节点会自动同步进代理池,账号即可引用。": "구독의 노드는 자동으로 프록시 풀에 동기화되어 계정에서 참조할 수 있습니다.", "订阅里的节点会被内核起成本地监听器,镜像到代理池(账号按 id 引用,与本页其它出口同一用法)。内核只在用到订阅时按需下载(约 20-40MB),不随安装包分发。": "구독의 노드는 커널이 로컬 리스너로 실행하고 프록시 풀에 미러링합니다 (계정은 id로 참조하며, 이 페이지의 다른 항목과 동일합니다). 커널은 구독을 사용할 때만 필요할 때 다운로드되며(약 20-40MB) 설치 패키지에 포함되지 않습니다.", "订阅链接": "구독 링크", "识别中…": "인식 중…", "该节点所属订阅已删除,不会再被同步更新,可手动删除清理": "이 노드가 속한 구독이 삭제되어 더 이상 동기화되지 않습니다. 수동으로 삭제할 수 있습니다", "该节点来自订阅(名称、端口跟随订阅与内核),请在「订阅管理」里修改;启用可在本页关闭": "이 노드는 구독에서 왔습니다(이름과 포트는 구독과 커널을 따릅니다). 변경은 \"구독 관리\"에서 하세요. 사용 여부는 이 페이지에서 끌 수 있습니다", "请下载与网关平台一致的官方内核,不是浏览器所在设备的平台。": "브라우저가 실행되는 기기가 아니라 게이트웨이 플랫폼에 맞는 공식 커널을 다운로드하세요.", "请填写代理名称": "프록시 이름을 입력하세요", "请填写已有代理服务的 HTTP / SOCKS5 地址,或自行运行 Clash Verge 后同步端点,并重新为相关账号和服务线路选择代理。": "기존 프록시 서비스의 HTTP / SOCKS5 주소를 입력하거나 Clash Verge를 별도로 실행한 후 엔드포인트를 동기화하고, 관련 계정과 서비스 경로의 프록시를 다시 선택하세요.", "请填写网关机器上的绝对文件或目录路径": "게이트웨이에 있는 파일 또는 폴더의 절대 경로를 입력하세요", "请改为填写已有代理服务的 HTTP / SOCKS5 地址,并重新为相关账号和服务线路选择代理。": "기존 프록시 서비스의 HTTP / SOCKS5 주소를 입력하고 관련 계정과 서비스 경로의 프록시를 다시 선택하세요.", "请选择要导入的 YAML 文件": "가져올 YAML 파일을 먼저 선택하세요", "请选择要导入的内核文件": "가져올 커널 파일을 선택하세요", "读取失败:{reason}": "읽기 실패: {reason}", "起始端口不能大于结束端口": "시작 포트는 끝 포트보다 클 수 없습니다", "跳过 {n} 个(Clash 同步)": "건너뜀 {n}개 (Clash 동기화)", "跳过 {n} 个(同步只读条目)": "{n}개 건너뜀 (동기화된 읽기 전용 항목)", "软件 / 插件更新": "소프트웨어 / 플러그인 업데이트", "还没有代理。点右上角「+ 新增代理」手填一个,或在「订阅管理」里导入订阅节点、同步 Clash Verge 的出口。": "아직 프록시가 없습니다. 오른쪽 위 「+ 프록시 추가」로 직접 입력하거나, 「구독 관리」에서 구독 노드를 가져오거나 Clash Verge 항목을 동기화하세요.", "还没有代理。点右上角「+ 新增代理」手填一个,或点「同步 Clash Verge」把 Clash 的出口导进来。": "아직 프록시가 없습니다. 오른쪽 위 「+ 프록시 추가」로 직접 입력하거나, 「Clash Verge 동기화」를 눌러 Clash의 엔드포인트를 가져오세요.", "还没有订阅:粘贴订阅链接、导入本地 YAML 文件,或从图片识别二维码。": "아직 구독이 없습니다: 구독 링크를 붙여넣거나, 로컬 YAML 파일을 가져오거나, 이미지에서 QR 코드를 인식하세요.", "还没有账号使用它(端口只在被账号引用时才分配 —— 在账号里选它并保存后,内核会自动开端口)": "아직 이 노드를 사용하는 계정이 없습니다 (포트는 계정이 참조할 때만 할당됩니다 — 계정에서 이 노드를 선택하고 저장하면 커널이 자동으로 포트를 엽니다)", "还没有账号或服务线路使用它;在账号或更新设置中选中并保存后,内核会自动开端口": "아직 계정이나 서비스 경로에서 사용하지 않습니다. 계정 또는 업데이트 설정에서 선택하고 저장하면 커널이 자동으로 포트를 엽니다.", "这是网关机器上的安装目录,留空使用默认位置。导入会复制文件并建立版本目录,不删除原下载文件。": "게이트웨이의 설치 폴더입니다. 비워 두면 기본 위치를 사용합니다. 파일을 복사하고 버전별 폴더를 만들며 원본 다운로드 파일은 삭제하지 않습니다.", "这条在 Clash Verge 里是停用的,本页启用不生效 —— 到 Clash Verge 里打开它": "이 항목은 Clash Verge에서 사용 중지되어 있어 이 페이지에서 켜도 효과가 없습니다 — Clash Verge에서 켜세요", "这里只连接你提供的代理地址,不接管代理服务的安装与运行。": "제공한 프록시 주소에만 연결하며 프록시 서비스 설치 및 실행은 관리하지 않습니다.", "连接成功": "연결 성공", "连通性": "연결 상태", "连通性测试设置": "연결 테스트 설정", "选中的 {n} 条都是同步来的只读条目(Clash / 订阅),不能删除": "선택한 {n}개는 모두 동기화된 읽기 전용 항목(Clash / 구독)이라 삭제할 수 없습니다", "选中的 {n} 条都来自 Clash Verge 同步,不能删除(请到 Clash Verge 里删)": "선택한 {n}건은 모두 Clash Verge 동기화 항목이라 삭제할 수 없습니다 (Clash Verge에서 삭제하세요)", "选中的代理用于{services};删除后这些线路将不可用,不会自动回退直连。": "선택한 프록시는 {services}에 사용됩니다. 삭제하면 해당 경로를 사용할 수 없으며 직접 연결로 자동 폴백하지 않습니다.", "选择 YAML 文件…": "YAML 파일 선택…", "选择内核文件…": "커널 파일 선택…", "选择目录…": "폴더 선택…", "选项来自「网络代理」页(Clash Verge 同步的出口在这里可用;订阅节点要等内核起来才有端口)。选「直连」时连不上会自动借 Clash 混合端口重试一次;选定某条线路后只走它。": "옵션은 \"네트워크 프록시\" 페이지에서 가져옵니다(Clash Verge 동기화 아웃바운드는 여기서 사용 가능하고, 구독 노드는 커널이 실행된 뒤에야 포트가 생깁니다). \"직접 연결\"은 연결 실패 시 Clash 혼합 포트로 한 번 재시도하며, 경로를 지정하면 그 경로만 사용합니다.", "通过代理访问该网址,检查是否能收到 HTTP 响应。留空沿用网关默认值。": "프록시를 통해 이 URL에 접근하여 HTTP 응답을 받을 수 있는지 확인합니다. 비워 두면 게이트웨이 기본값을 사용합니다.", "部分测试结果没能记下:{reason}": "일부 테스트 결과를 기록하지 못했습니다: {reason}", "重启内核": "커널 재시작", "重新选择文件…": "파일 다시 선택…", "需要干净的出口?": "깨끗한 아웃바운드가 필요하신가요?", "需要用户名和密码(可选)": "사용자 이름과 비밀번호 필요(선택)", "非直连": "시스템 프록시 경유", "非直连代理": "시스템 프록시 경유 연결", "非直连会先经过网关所在设备的系统代理,再连接到此代理;系统代理不可用时不会改走直连。": "게이트웨이 기기의 시스템 프록시를 먼저 거쳐 이 프록시에 연결합니다. 시스템 프록시를 사용할 수 없으면 직접 연결로 전환하지 않습니다.", "首次购买使用优惠码 AGENT2API25 享 75 折。": "첫 구매 시 코드 AGENT2API25로 25% 할인됩니다.", "+ 新增代理": "+ 프록시 추가", "+ 新增订阅": "+ 구독 추가", ",": ", ", " 或 ": " 또는 ", "Anthropic SDK 会自动携带版本头;手写 Messages 请求可使用 2023-06-01。/v1/models 收到该头或 x-api-key 时返回 Anthropic 列表形态。": "Anthropic SDK는 버전 헤더를 자동 추가합니다. 직접 작성한 Messages 요청은 2023-06-01을 사용할 수 있습니다. /v1/models는 이 헤더나 x-api-key가 있으면 Anthropic 목록 형식을 반환합니다.", "Anthropic 业务错误结构示例": "Anthropic 업무 오류 구조 예시", "Anthropic 官方 SDK / Claude Code 使用的根地址:": "공식 Anthropic SDK / Claude Code용 루트 주소: ", "Anthropic 标准要求显式填写正整数。网关对缺失或无效值补 8192,但上游模型的实际预算仍可能更低。": "Anthropic 표준은 양의 정수를 명시해야 합니다. 게이트웨이는 누락 또는 무효 값을 8192로 보완하지만 실제 상위 모델 예산은 더 낮을 수 있습니다.", "Antigravity 支持宽高比 1:1、2:3、3:2、3:4、4:3、4:5、5:4、9:16、16:9、21:9,尺寸会映射到原生 1K / 2K / 4K 档。请求最长边 ≤1792 为 1K,1793–3072 为 2K,3073–4096 为 4K;超过 4096 会被该提供商拒绝。": "Antigravity 비율은 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9이며 크기를 기본 1K / 2K / 4K 단계로 매핑합니다. 긴 변 ≤1792는 1K, 1793–3072는 2K, 3073–4096은 4K이며 4096 초과는 해당 제공업체가 거부합니다.", "Antigravity 的 size=auto 生成使用 1:1、1K;参考图编辑使用 1K 且不强制正方形。模型版本可能有更严格的输出限制;宽高比需接近支持值,不能任意指定像素尺寸。": "Antigravity size=auto 생성은 1:1, 1K이며 참조 편집은 정사각형을 강제하지 않는 1K입니다. 모델 버전에 따라 더 엄격한 제한이 있으며 비율이 지원 값에 가까워야 하고 임의 픽셀 크기는 지정할 수 없습니다.", "Base URL 填进客户端的「API 地址 / Base URL」栏;对话协议按客户端支持的类型三选一(Chat Completions / Responses / Anthropic Messages),三者共用同一套模型与账号池,可随时切换;鉴权用「网关 Key」页里任一启用 Key。": "Base URL은 클라이언트의 「API 주소 / Base URL」란에 입력하고, 대화 프로토콜은 클라이언트가 지원하는 유형에 따라 세 가지(Chat Completions / Responses / Anthropic Messages) 중 하나를 고르면 됩니다. 세 가지 모두 동일한 모델과 계정 풀을 공유하므로 언제든 전환할 수 있습니다. 인증에는 「게이트웨이 키」 페이지의 활성화된 Key를 아무거나 사용하세요.", "Chat 流式成功通常以 data: [DONE] 收尾。需要同时处理 delta.content、思考字段和 delta.tool_calls;工具参数可能跨多个增量拼接。": "정상 Chat 스트림은 보통 data: [DONE]으로 끝납니다. delta.content, 추론 필드, delta.tool_calls를 처리하고 여러 델타에 나뉜 도구 인수를 조립해야 합니다.", "Chat、Responses 和图片接口通常返回 error 对象,其中 message 是可读说明,type 是错误类别,code 与 upstream_code 按情况附带。Anthropic 业务错误使用 type=error 的信封;鉴权中间件、无效 JSON 或网关层错误也可能返回通用 error 形态。": "Chat, Responses, 이미지 API는 보통 error 객체를 반환합니다. message는 설명, type은 분류, code와 upstream_code는 선택 항목입니다. Anthropic 업무 오류는 type=error 형식이지만 인증 미들웨어, 잘못된 JSON 또는 게이트웨이 오류는 일반 error 형식일 수도 있습니다.", "Claude Code / Anthropic SDK(token 计数:/v1/messages/count_tokens)": "Claude Code / Anthropic SDK(token 카운트: /v1/messages/count_tokens)", "Claude Code / Anthropic SDK;模型与账号池和 OpenAI 入口共用。": "Claude Code / Anthropic SDK. OpenAI 엔드포인트와 모델 및 계정 풀을 공유합니다.", "Codex / 新版 OpenAI SDK;无状态转发,历史由客户端携带。": "Codex / 최신 OpenAI SDK. 상태를 저장하지 않으므로 클라이언트가 이력을 전송합니다.", "GET /health 返回 status=ok 或 degraded。公网安全模式只返回简化探活信息;HTTP 200 或 status=ok 不代表所有提供商在线、账号有额度或图片模型可调用。": "GET /health는 status=ok 또는 degraded를 반환합니다. 공용 네트워크 보안 모드는 간단한 생존 정보만 노출합니다. HTTP 200이나 status=ok는 모든 제공업체 연결, 계정 할당량 또는 이미지 모델 호출 가능성을 보장하지 않습니다.", "GET /health、GET /v1/models 和网关临时图片下载不强制检查 Key。模型清单可在配 Key 前读取,但这不能证明 Key 正确;应以携带该 Key 的实际业务请求为准。": "GET /health, GET /v1/models 및 게이트웨이 임시 이미지 다운로드는 Key를 필수로 검사하지 않습니다. Key 설정 전 모델 목록을 읽을 수 있어도 Key가 올바른 것은 아닙니다. 해당 Key를 사용한 실제 보호 요청으로 확인하세요.", "HTTP(S) 参考图由网关服务器下载,不携带网关 Key 或提供商凭证。外链必须能被网关无额外请求头访问;本机、内网、带用户名密码或不安全重定向地址会被拒绝。受保护图片建议直接上传文件。": "HTTP(S) 참조는 게이트웨이가 Key나 제공업체 자격 증명 없이 다운로드합니다. 외부 링크는 추가 헤더 없이 접근 가능해야 합니다. 로컬, 내부망, 사용자명·암호 포함 또는 안전하지 않은 리디렉션은 거부됩니다. 보호 이미지는 파일로 직접 업로드하세요.", "JSON 图片引用编辑请求": "JSON 이미지 참조 편집 요청", "JSON 图片生成请求": "JSON 이미지 생성 요청", "JSON 的 images 是对象数组,每项只能包含 image_url。接受完整 HTTP(S) URL、data:image/...;base64,...,或先前响应返回的完整网关临时图片链接;不接受裸 base64、相对路径、file_id 或本地文件路径。": "JSON images는 image_url만 포함하는 객체 배열입니다. 완전한 HTTP(S) URL, data:image/...;base64,... 또는 이전 응답의 완전한 게이트웨이 임시 URL을 받습니다. 순수 base64, 상대 경로, file_id, 로컬 경로는 받지 않습니다.", "JSON 请求使用 application/json。图片编辑上传文件时使用 multipart/form-data;curl -F 会自动生成 boundary,不要手动覆盖此请求头。": "JSON은 application/json, 이미지 편집 파일 업로드는 multipart/form-data를 사용합니다. curl -F가 boundary를 자동 생성하므로 이 헤더를 수동으로 덮어쓰지 마세요.", "Key 缺失、无效、停用,或上游认证失败。网关未收到 Key 时返回 model_api_key_required,无效 Key 返回 invalid_api_key;请检查请求头与「网关 Key」页。": "Key 누락, 무효, 비활성화 또는 상위 인증 실패입니다. 게이트웨이는 Key가 없으면 model_api_key_required, 무효하면 invalid_api_key를 반환합니다. 요청 헤더와 「게이트웨이 키」 페이지를 확인하세요.", "Key 缺失、无效、停用,或上游认证失败。网关鉴权失败通常为 invalid_api_key;检查请求头与「网关 Key」页,而不是仅重拉模型列表。": "Key 누락, 무효, 비활성화 또는 상위 인증 실패입니다. 게이트웨이 인증 실패는 보통 invalid_api_key입니다. 모델 목록 갱신뿐 아니라 요청 헤더와 「게이트웨이 키」 페이지를 확인하세요.", "LLM 请求": "LLM 요청", "Messages 响应结构": "Messages 응답 구조", "Messages 请求": "Messages 요청", "ModelScope 不支持 style、mask 与 input_fidelity;quality 仅接受省略、auto 或 standard,background 仅接受省略、auto 或 opaque,moderation 仅接受省略或 auto。风格与修改目标请写入 prompt。": "ModelScope는 style, mask, input_fidelity를 지원하지 않습니다. quality는 생략, auto, standard만, background는 생략, auto, opaque만, moderation은 생략 또는 auto만 허용합니다. 스타일과 편집 목표는 prompt에 작성하세요.", "ModelScope 使用官方异步任务接口,创建后只查询同一任务,不会为了等待结果重新提交。单次 n=1;size 可省略、设为 auto,或指定边长 64–2048 的 WIDTHxHEIGHT,具体型号可能进一步限制。": "ModelScope는 공식 비동기 작업 API를 사용합니다. 생성 후 같은 작업만 조회하고 다시 제출하지 않습니다. n=1이며 size는 생략, auto 또는 변 길이 64–2048의 WIDTHxHEIGHT를 사용할 수 있습니다. 모델별 추가 제한이 있을 수 있습니다.", "OpenAI Python SDK 图片示例": "OpenAI Python SDK 이미지 예시", "OpenAI SDK 的 base_url 填「接口地址」章节中以 /v1 结尾的 Base URL,不要填完整的 /chat/completions。Anthropic 官方 SDK 与 Claude Code 的 ANTHROPIC_BASE_URL 填网关根地址,不带 /v1;它们会自行追加 /v1/messages。其他客户端是否自动追加 /v1,以其地址栏说明为准。": "OpenAI SDK의 base_url은 「인터페이스 주소」 장의 /v1로 끝나는 Base URL로 설정하고 전체 /chat/completions URL을 넣지 마세요. 공식 Anthropic SDK와 Claude Code의 ANTHROPIC_BASE_URL은 /v1 없는 게이트웨이 루트로 설정합니다. 이들은 /v1/messages를 자동 추가합니다. 다른 클라이언트는 주소 입력란 설명에 따라 /v1 추가 여부를 확인하세요.", "OpenAI SDK 的 base_url 填上方以 /v1 结尾的 Base URL,不要填完整的 /chat/completions。Anthropic 官方 SDK 与 Claude Code 的 ANTHROPIC_BASE_URL 填网关根地址,不带 /v1;它们会自行追加 /v1/messages。其他客户端是否自动追加 /v1,以其地址栏说明为准。": "OpenAI SDK의 base_url은 위의 /v1로 끝나는 Base URL로 설정하고 전체 /chat/completions URL을 넣지 마세요. 공식 Anthropic SDK와 Claude Code의 ANTHROPIC_BASE_URL은 /v1 없는 게이트웨이 루트로 설정합니다. 이들은 /v1/messages를 자동 추가합니다. 다른 클라이언트는 주소 입력란 설명에 따라 /v1 추가 여부를 확인하세요.", "OpenAI 兼容客户端使用此地址;Anthropic 官方 SDK 使用下方说明中的网关根地址。": "OpenAI 호환 클라이언트는 이 주소를 사용합니다. 공식 Anthropic SDK는 아래에 설명된 게이트웨이 루트 주소를 사용합니다.", "OpenAI 新协议(Codex、新版 SDK)": "OpenAI 신규 프로토콜(Codex, 최신 SDK)", "Python:生成、编辑并保存图片": "Python: 이미지 생성, 편집 및 저장", "Responses 使用 function_call / function_call_output 配对,Anthropic 使用 tool_use / tool_result 配对。协议转换会处理这些格式,但不会替客户端执行自定义函数。上游原生搜索等服务端工具是否可用取决于提供商,不能当成网关统一能力。": "Responses는 function_call / function_call_output, Anthropic은 tool_use / tool_result를 매칭합니다. 형식은 변환되지만 게이트웨이가 사용자 정의 함수를 대신 실행하지는 않습니다. 검색 같은 상위 서비스 기본 도구는 제공업체별 지원이며 게이트웨이 공통 기능이 아닙니다.", "Responses 响应结构": "Responses 응답 구조", "Responses 请求": "Responses 요청", "SDK 示例使用的环境变量": "SDK 예시용 환경 변수", "Token 估算响应": "토큰 추정 응답", "Token 数量估算": "토큰 수 추정", "Token 自动续期": "토큰 자동 갱신", "WorkBuddy 走官方图片接口:size 省略或设为 auto 时按 1024x1024 请求;该通道不接受 quality、style、background 与 moderation,请把风格与质量要求写进 prompt。参考图以 data URL 内联在 JSON 请求里发送(不是 multipart),模型 id 由上游目录下发,换版本时以 /v1/models 为准。": "WorkBuddy는 공식 이미지 API를 사용합니다. size를 생략하거나 auto로 지정하면 1024x1024로 요청합니다. 이 경로는 quality, style, background, moderation을 받지 않으므로 스타일과 품질 요구는 prompt에 적어 주세요. 참조 이미지는 data URL로 JSON 요청에 인라인으로 전송되며(multipart가 아님), 모델 id는 상류 카탈로그에서 내려옵니다. 버전이 바뀌면 /v1/models를 확인하세요.", "base64 图片响应结构": "base64 이미지 응답 구조", "chat 用于三种对话入口;image 用于 /v1/images/generations 和 /v1/images/edits。不要把图片模型提交给对话入口。": "chat은 세 대화 API, image는 /v1/images/generations 및 /v1/images/edits용입니다. 이미지 모델을 대화 API에 보내지 마세요.", "count_tokens 在本地估算,不调用上游 tokenizer;返回 input_tokens 和 estimated=true。数值用于上下文预算,不用于精确计费,尤其不应当作图片的真实 Token 用量。": "count_tokens는 상위 tokenizer를 호출하지 않고 로컬에서 추정하며 input_tokens와 estimated=true를 반환합니다. 컨텍스트 예산용이며 정확한 과금, 특히 이미지의 실제 토큰 사용량에 쓰지 마세요.", "curl -F 自动生成 multipart boundary。不要额外设置 Content-Type: application/json 或手写无 boundary 的 multipart/form-data;prompt 使用 --form-string 可避免特殊字符被当作文件上传。": "curl -F가 multipart boundary를 자동 생성합니다. Content-Type: application/json이나 boundary 없는 multipart/form-data를 따로 설정하지 마세요. prompt는 --form-string으로 보내면 특수 문자를 파일 업로드로 오인하지 않습니다.", "response_format=b64_json 时返回不带 data URL 前缀的标准 base64。解码为二进制后保存;网页展示时自行加对应 MIME 类型前缀。": "response_format=b64_json은 data URL 접두사 없는 표준 base64를 반환합니다. 바이너리로 디코딩해 저장하고 웹 표시 시 알맞은 MIME 접두사를 붙이세요.", "response_format=url 不保证永久地址;网关临时链接与 AI 助手会话中的图片存储是两套机制,不能混用接口或有效期。": "response_format=url은 영구 주소를 보장하지 않습니다. 게이트웨이 임시 링크와 어시스턴트 세션 이미지 저장은 별도이므로 API나 수명을 섞어 쓰지 마세요.", "response_format=url 时返回。可能是提供商签名链接,也可能是网关临时下载链接;应直接使用返回值,不要自行拼下载 id。": "response_format=url에서 반환됩니다. 제공업체 서명 URL 또는 게이트웨이 임시 링크일 수 있습니다. 반환값을 그대로 쓰고 다운로드 id를 직접 만들지 마세요.", "stream 默认 false;true 返回 Anthropic 事件流。stop_sequences 映射为停止序列,是否支持取决于上游。": "stream 기본값은 false, true는 Anthropic 이벤트를 반환합니다. stop_sequences는 중지 시퀀스로 매핑되며 지원은 상위 서비스가 결정합니다.", "usage 的 prompt_tokens、completion_tokens、total_tokens 表示用量,不等于统一货币价格。上游未提供时可能缺失或为 0。": "usage의 prompt_tokens, completion_tokens, total_tokens는 사용량이며 공통 화폐 가격이 아닙니다. 상위 서비스가 제공하지 않으면 생략되거나 0일 수 있습니다.", "✓ 支持 · ✗ 不支持 · — 无此概念 · ? 未声明": "✓ 지원 · ✗ 미지원 · — 해당 없음 · ? 미선언", "。一把启用的 Key 都没有时不鉴权(默认网关只监听 127.0.0.1;在设置页开启「局域网访问」后监听所有网卡,鉴权与安全闸门随之启用)。": "를 담아 보내면 됩니다. 활성화된 Key가 하나도 없으면 인증하지 않습니다(기본 게이트웨이는 127.0.0.1만 수신하며, 설정 페이지에서 「LAN 접근」을 켜면 모든 네트워크 인터페이스를 수신하고 인증과 보안 게이트도 함께 활성화됩니다).", "三种对话协议的流式错误需要检查事件内容与正常结束标记;HTTP 200 本身不足以证明成功。图片接口仅返回非流式 JSON。": "세 대화 프로토콜 모두 스트림 이벤트와 정상 종료 표시를 확인해야 합니다. HTTP 200만으로 성공을 판단할 수 없습니다. 이미지 API는 비스트리밍 JSON만 반환합니다.", "上一章": "이전 장", "上传一张或多张参考图,并用提示词描述保留内容与修改目标。": "하나 이상의 참조 이미지를 올리고 보존할 내용 및 수정 목표를 프롬프트에 설명하세요.", "上传一张本地参考图": "로컬 참조 이미지 하나 업로드", "上传多张参考图": "여러 참조 이미지 업로드", "上传本地文件推荐 multipart/form-data;已经有图片 URL 或 base64 时可发送 application/json。除参考图字段外,参数与图片生成相同。": "로컬 파일은 multipart/form-data, 이미지 URL이나 base64가 있으면 application/json을 사용합니다. 참조 필드 외 매개변수는 이미지 생성과 같습니다.", "下一章": "다음 장", "下表是网关接受的参数范围,不是所有提供商都支持的范围。生成与编辑共用这些字段,具体上游可能进一步拒绝数量、质量、风格、背景或尺寸。": "표는 게이트웨이가 받는 매개변수 범위이며 모든 제공업체의 공통 지원 범위가 아닙니다. 생성과 편집은 필드를 공유하지만 상위 서비스가 수, 품질, 스타일, 배경, 크기를 더 제한할 수 있습니다.", "下载并保存网关临时图片": "게이트웨이 임시 이미지 다운로드 및 저장", "下载返回原始图片二进制及 image/png、image/jpeg 或 image/webp Content-Type,不是 JSON。不存在或过期返回 404,响应使用 private, no-store 与 nosniff。": "JSON이 아닌 이미지 바이너리와 image/png, image/jpeg 또는 image/webp Content-Type을 반환합니다. 없거나 만료되면 404이며 응답은 private, no-store 및 nosniff를 사용합니다.", "不强制鉴权;仅用于确认网关可访问,不保证模型或额度可用。": "인증은 필수가 아닙니다. 게이트웨이 연결만 확인하며 모델이나 할당량 가용성은 보장하지 않습니다.", "不强制鉴权;携带有效 Key 可查看该 Key 获准使用的模型。": "인증은 필수가 아닙니다. 유효한 Key를 보내면 해당 Key에 허용된 모델로 필터링됩니다.", "不携带 Anthropic 相关头时,模型接口返回 OpenAI 风格的 object=list、data 数组和 meta 摘要;携带 anthropic-version 或 x-api-key 时,返回 data、has_more、first_id、last_id,并保留能力扩展字段。": "Anthropic 관련 헤더가 없으면 OpenAI 형식의 object=list, data 배열, meta 요약을 반환합니다. anthropic-version 또는 x-api-key가 있으면 data, has_more, first_id, last_id를 반환하면서 기능 확장 필드를 유지합니다.", "不支持依赖服务端状态的 previous_response_id、conversation、托管提示词 prompt,以及 background=true;请由客户端保存并回传历史,不要调用未实现的 Responses 查询或删除接口。": "서버 상태가 필요한 previous_response_id, conversation, 호스팅 prompt 및 background=true는 지원하지 않습니다. 클라이언트에서 이력을 저장하고 다시 보내며 미구현 Responses 조회 또는 삭제 API를 호출하지 마세요.", "不要把 base64 图片塞回对话文本或日志,也不要将“请求超时”理解为“没有扣费”。如需连续编辑,保存结果文件后再作为下一次 image 上传。": "이미지 base64를 대화 텍스트나 로그에 넣지 말고 시간 초과를 미과금으로 해석하지 마세요. 연속 편집은 결과를 저장한 뒤 다음 image로 다시 업로드합니다.", "业务请求的 model 值。owned_by 表示目录条目的归属,不保证每次请求都由该提供商承载;同名模型与映射可能有多个路由。": "업무 요청의 model 값입니다. owned_by는 목록 항목의 소유 제공업체이며 실제 요청 처리 제공업체를 보장하지 않습니다. 같은 모델 이름이나 매핑에는 여러 경로가 있을 수 있습니다.", "临时图片下载": "임시 이미지 다운로드", "也可使用 x-api-key: YOUR_GATEWAY_KEY,常用于 Anthropic 客户端。两种鉴权头任选一种即可,不要填提供商账号令牌或面板登录令牌。": "Anthropic 클라이언트에서 주로 쓰는 x-api-key: YOUR_GATEWAY_KEY도 가능합니다. 인증 헤더는 하나만 사용해도 됩니다. 제공업체 계정 토큰이나 패널 로그인 토큰을 넣지 마세요.", "仅可省略或设为 stream=false、partial_images=0。当前不支持图片事件流、渐进图片或流式部分结果。未知参数会被拒绝,不会静默忽略。": "생략하거나 stream=false, partial_images=0만 가능합니다. 이미지 이벤트 스트림, 점진 이미지 및 스트리밍 부분 결과는 미지원입니다. 모르는 매개변수는 조용히 무시하지 않고 거부합니다.", "仅在上游返回修改后的提示词时保留,不保证每个模型都有。": "상위 서비스가 수정 프롬프트를 반환할 때만 유지하며 모든 모델에 있는 것은 아닙니다.", "仅在显式指定 output_format=jpeg 时支持,网关按 JPEG 质量参数编码。PNG、WebP 当前不支持此参数。": "output_format=jpeg를 명시한 경우만 지원하며 JPEG 품질값으로 인코딩합니다. PNG 및 WebP는 현재 이 매개변수를 지원하지 않습니다.", "仅用于响应返回的网关临时链接;{id} 必须替换为实际下载令牌。": "응답에 반환된 게이트웨이 임시 링크용입니다. {id}를 실제 다운로드 토큰으로 바꾸세요.", "仍从当前网关目录选择对话模型,不要求模型名称一定以 claude 开头。具体能力以实际承载模型为准。": "현재 게이트웨이 목록의 대화 모델을 선택합니다. 이름이 claude로 시작할 필요는 없으며 기능은 실제 처리 모델에 따라 다릅니다.", "估算输入 Token 数量": "입력 토큰 수 추정", "使用 supports_image_editing=true 的图片模型。该接口是参考图编辑、重绘或合成,不是精确遮罩修补;当前不支持 mask 与 input_fidelity,也不支持 file_id。": "supports_image_editing=true인 이미지 모델을 사용합니다. 참조 이미지 편집, 다시 그리기, 합성용이며 정밀 마스크 복원은 아닙니다. 현재 mask, input_fidelity, file_id는 지원하지 않습니다.", "使用与 Chat 相同的对话模型 id 和 Key 授权规则。": "Chat과 같은 대화 모델 id 및 Key 권한 규칙을 사용합니다.", "使用同一客户端生成与编辑,并将返回的 base64 保存为图片文件。": "같은 클라이언트로 생성 및 편집하고 반환 base64를 이미지 파일로 저장합니다.", "使用支持工具调用的模型。函数声明、调用结果配对与多模态请求示例见「看图与工具调用」章节。": "도구 호출 지원 모델을 사용하세요. 함수 선언, 호출 및 결과 매칭, 멀티모달 요청 예시는 「이미지 이해 및 도구 호출」 장을 참조하세요.", "使用支持工具调用的模型。函数声明、调用结果配对与多模态请求示例见下一节。": "도구 호출 지원 모델을 사용하세요. 함수 선언, 호출 및 결과 매칭, 멀티모달 예시는 다음 절을 참조하세요.", "使用说明与兼容边界": "사용 안내 및 호환 범위", "健康检查": "상태 확인", "先前网关返回的 /v1/images/files/{id} 完整链接可在未过期时作为 JSON 参考图。不要把 AI 助手内部的 assistant-image:ID 当成对外接口图片 URL。": "이전 게이트웨이 응답의 완전한 /v1/images/files/{id} URL은 만료 전 JSON 참조로 쓸 수 있습니다. 어시스턴트 내부 assistant-image:ID를 외부 API 이미지 URL로 사용하지 마세요.", "先确定网关地址、Key 和模型,再选择客户端支持的协议。": "게이트웨이 주소, Key, 모델을 확인한 뒤 클라이언트가 지원하는 프로토콜을 선택하세요.", "兼容 Anthropic 消息块与 SSE 事件,支持本地 Token 预算估算。": "Anthropic 콘텐츠 블록과 SSE 이벤트를 지원하고 로컬 토큰 예산을 추정합니다.", "兼容 Responses 请求与事件格式,适合 Codex 等客户端;不是服务端会话存储。": "Codex 등을 위한 Responses 요청 및 이벤트 호환 기능이며 서버 대화 저장은 아닙니다.", "内置 AI 助手已有 generate_images 与 edit_images 工具,可在助手设置中启用并按确认模式执行。外部 API 客户端不会自动获得这些工具;需要由客户端声明并实际调用图片接口。": "내장 AI 어시스턴트에는 generate_images와 edit_images가 있습니다. 어시스턴트 설정에서 켜고 확인 모드에 따라 실행합니다. 외부 API 클라이언트는 이를 자동 제공받지 않으며 직접 도구를 선언하고 이미지 API를 호출해야 합니다.", "函数工具使用 Responses 的声明格式;工具结果以 function_call_output 携带相同 call_id。实际工具能力仍依赖模型与提供商。": "Responses 형식으로 함수를 선언하고 같은 call_id의 function_call_output으로 결과를 보냅니다. 실제 도구 지원은 모델 및 제공업체에 따라 다릅니다.", "函数工具声明包含 name、description、input_schema;结果在后续 user 消息的 tool_result 块中携带对应 tool_use_id。": "함수 선언에는 name, description, input_schema가 있습니다. 후속 user 메시지의 tool_result 블록에 같은 tool_use_id와 결과를 넣습니다.", "分别可能表示请求中断或请求过大。参考图过大时需缩小图片或减少数量,原样重试不会解决;中断的图片任务可能已经消耗额度。": "각각 요청 중단 또는 크기 초과 등을 나타냅니다. 참조 이미지 크기나 수를 줄이세요. 그대로 재전송해도 해결되지 않고 중단된 이미지 작업도 할당량을 이미 썼을 수 있습니다.", "分别控制输出上限与是否流式。stream 默认 false;true 返回 Responses 命名事件。": "출력 상한과 스트리밍을 제어합니다. stream 기본값은 false이며 true는 이름이 있는 Responses 이벤트를 반환합니다.", "分别表示工具调用与思考能力。是否生效仍取决于实际承载模型、提供商和相关设置。": "각각 도구 호출 및 추론 지원입니다. 실제 작동은 처리 모델, 제공업체 및 설정에도 의존합니다.", "分别请求思考档位与结构化输出;能力和可用取值依赖模型。不要因字段被接受就假定上游已经执行。": "각각 추론 수준과 구조화 출력을 요청합니다. 지원 및 값은 모델에 따라 다르며 필드 수락만으로 상위 서비스 적용을 단정하지 마세요.", "协议兼容不保证工具、思考、结构化输出、透明背景或每个尺寸都被所有提供商支持。先查看当前模型能力和插件版本,再核对请求日志的承载提供商与错误摘要。": "프로토콜 호환성이 모든 제공업체의 도구, 추론, 구조화 출력, 투명 배경 또는 모든 크기 지원을 보장하지 않습니다. 모델 기능과 플러그인 버전을 확인한 뒤 로그의 처리 제공업체와 오류 요약을 확인하세요.", "单图可用 image=@reference.png,多图重复提交 image[]。也兼容 images、images[] 与 image[0] 这类数字索引字段;普通参数不能重复提交。": "한 이미지는 image=@reference.png, 여러 이미지는 image[]를 반복합니다. images, images[], image[0] 같은 숫자 인덱스도 지원합니다. 일반 매개변수는 중복 제출할 수 없습니다.", "单轮可以是字符串;多轮使用消息与工具项数组,客户端应携带必要历史。文本块使用 input_text,图片块使用 input_image。": "한 턴은 문자열, 여러 턴은 필요한 이력을 포함한 메시지 및 도구 항목 배열입니다. 텍스트 블록은 input_text, 이미지 블록은 input_image를 사용합니다.", "参考图编辑": "참조 이미지 편집", "参考图编辑;支持 multipart 文件上传或 JSON 图片引用。": "참조 이미지 편집. multipart 파일 업로드 또는 JSON 이미지 참조를 지원합니다.", "只支持这三种可解码图片格式,校验实际文件内容而不是仅看扩展名;单张最多 10 MiB,边长最多 8192。": "디코딩 가능한 세 형식만 지원하며 확장자뿐 아니라 실제 내용을 확인합니다. 한 이미지 최대 10 MiB, 변 길이 최대 8192입니다.", "可用值为 auto、standard、hd、low、medium、high、xhigh、max。小浣熊与 Antigravity 仅接受省略、auto 或 standard;其他值是否有效取决于 Loomy 的具体模型。": "auto, standard, hd, low, medium, high, xhigh, max를 허용합니다. Raccoon과 Antigravity는 생략, auto, standard만 받으며 다른 값은 Loomy 모델에 따라 다릅니다.", "可省略,或使用 auto、WIDTHxHEIGHT,例如 1024x1024。网关校验边长 1–8192,提供商可能进一步限制宽高比与分辨率,不保证精确像素输出。": "생략하거나 auto, WIDTHxHEIGHT(예: 1024x1024)를 사용합니다. 게이트웨이는 변 길이 1–8192를 검사하며 제공업체가 비율과 해상도를 더 제한할 수 있습니다. 정확한 출력 픽셀은 보장하지 않습니다.", "可能是网关内部错误、上游异常、插件未接入、暂无可用账号、图片下载或编码失败。": "게이트웨이 내부 오류, 상위 서비스 이상, 플러그인 기능 미연동, 사용 가능한 계정 없음 또는 이미지 다운로드·인코딩 실패일 수 있습니다.", "可能是网关内部错误、上游异常、插件未接入、暂无可用账号、图片下载或编码失败。公网模式的 api_key_not_configured 表示必须先配置网关 Key。": "게이트웨이 내부 오류, 상위 이상, 플러그인 기능 미연동, 계정 없음 또는 이미지 다운로드·인코딩 실패일 수 있습니다. 공용 모드의 api_key_not_configured는 먼저 게이트웨이 Key를 설정해야 한다는 뜻입니다.", "可能附带实际输出编码、用量或点数。usage 与 points_consumed 取决于上游,缺失不代表免费;若未要求固定编码,不要默认所有图片都是 PNG。": "실제 인코딩, 사용량 또는 포인트가 포함될 수 있습니다. usage 및 points_consumed는 상위 서비스에 따라 다르며 없다고 무료는 아닙니다. 인코딩을 지정하지 않았다면 모두 PNG라고 가정하지 마세요.", "可选的调用方用户标识,不是网关鉴权 Key,也不能用于指定账号或绕过 Key 的授权范围。是否传递与处理取决于提供商。": "선택적인 호출자 사용자 식별자이며 게이트웨이 인증 Key가 아닙니다. 계정 지정이나 Key 권한 우회에 사용할 수 없습니다. 전달 및 처리는 제공업체에 따라 다릅니다.", "启用": "사용", "图片响应与下载": "이미지 응답 및 다운로드", "图片响应创建时间,Unix 秒。不要与错误限额恢复字段 reset_at 的毫秒单位混用。": "이미지 응답 생성 시간이며 Unix 초입니다. 오류 복구 필드 reset_at의 밀리초와 혼동하지 마세요.", "图片生成与共用参数": "이미지 생성 및 공통 매개변수", "图片生成与编辑": "이미지 생성 및 편집", "图片输入是理解图片,工具调用是由客户端执行动作;二者都需要模型能力支持。": "이미지 입력은 이미지를 이해하고 도구 호출은 클라이언트가 작업을 실행합니다. 둘 다 모델 지원이 필요합니다.", "在线模型列表": "온라인 모델 목록", "在线模型列表指自动拉取上游目录;仅有静态模型清单不算在线支持。": "온라인 모델 목록은 상위 서비스의 목록을 자동으로 가져오는 것을 뜻합니다. 정적 목록만 있는 경우 온라인 지원으로 간주하지 않습니다.", "地址速查与请求示例使用当前网关地址。从其他设备访问时,127.0.0.1 指向那台设备自身,必须换成实际可达的网关地址。": "주소 목록과 요청 예시는 현재 게이트웨이 주소를 사용합니다. 다른 기기에서 127.0.0.1은 그 기기 자체를 가리키므로 실제 게이트웨이에 연결되는 주소로 바꿔야 합니다.", "填进客户端的「API 地址 / Base URL」": "클라이언트의 「API 주소 / Base URL」란에 입력", "声明函数工具的请求体": "함수 도구 선언 요청 본문", "复制地址": "주소 복사", "复制示例": "예시 복사", "多图有顺序意义:在 prompt 中明确“第 1 张是主体,第 2 张是风格参考”等关系。编辑不保证逐像素保真,要求保留的主体、文字或布局应明确描述。": "이미지 순서는 의미가 있습니다. prompt에 '1번은 대상, 2번은 스타일 참조' 등을 명시하세요. 픽셀 단위 보존은 보장하지 않으므로 유지할 대상, 텍스트, 레이아웃을 정확히 설명합니다.", "多数 OpenAI 兼容客户端的默认协议": "대부분의 OpenAI 호환 클라이언트 기본 프로토콜", "字段 / 状态": "필드 / 상태", "字段与限制": "필드 및 제한", "安装并使用支持 Images 参数的 OpenAI Python SDK。先按接入章节设置 GATEWAY_KEY 与 IMAGE_MODEL_ID,编辑前确认该模型支持参考图,并准备本地 reference.png。": "Images 매개변수를 지원하는 OpenAI Python SDK를 사용하세요. 연결 절에 따라 GATEWAY_KEY와 IMAGE_MODEL_ID를 설정하고 편집 지원을 확인한 뒤 로컬 reference.png를 준비합니다.", "客户端自动拉取可用模型;不受鉴权限制,配 Key 之前就能拉": "클라이언트가 사용 가능한 모델을 자동으로 가져옵니다. 인증 제한을 받지 않으므로 Key를 설정하기 전에도 가져올 수 있습니다", "对话协议": "대화 프로토콜", "对话协议与上下文预算": "대화 프로토콜과 컨텍스트 예산", "对话协议(按客户端支持的类型选一行)": "대화 프로토콜(클라이언트가 지원하는 유형에 맞는 줄을 하나 선택)", "对话模型看图请求": "대화 모델 이미지 이해 요청", "小浣熊与 Antigravity 不支持此字段,请在 prompt 中描述风格;Loomy 转交上游,由模型决定是否支持。": "Raccoon과 Antigravity는 미지원이므로 스타일은 prompt에 설명하세요. Loomy는 상위로 전달하며 지원은 모델이 결정합니다.", "小浣熊与 Antigravity 仅接受省略、auto 或 opaque;不保证所有模型都能生成透明背景。文件转码不会自动抠图。": "Raccoon과 Antigravity는 생략, auto, opaque만 허용합니다. 모든 모델이 투명 배경을 지원하지는 않으며 파일 변환으로 자동 배경 제거하지 않습니다.", "小浣熊与 Antigravity 仅接受省略或 auto。该字段不保证上游降低审核强度,内容政策拒绝不会自动重试。": "Raccoon과 Antigravity는 생략 또는 auto만 허용합니다. 상위 검토 강도를 낮춘다는 보장은 없으며 콘텐츠 정책 거부는 자동 재시도하지 않습니다.", "小浣熊使用 raccoon-image;Loomy 使用目录中的 kind=image 模型;Antigravity 使用目录中的 gemini-*-image 模型;ModelScope 使用已确认支持的 Qwen-Image、Z-Image 或 Qwen-Image-Edit 型号;WorkBuddy 使用目录中带 text-to-image 或 image-to-image 标签的模型,例如 hunyuan-image-alpha 与 hunyuan-image-alpha-edit。实际 model 值以当前 /v1/models 为准,不要直接复制官方 API 的默认模型名。": "Raccoon은 raccoon-image를 사용합니다. Loomy는 카탈로그의 kind=image 모델, Antigravity는 카탈로그의 gemini-*-image 모델, ModelScope는 지원이 확인된 Qwen-Image, Z-Image, Qwen-Image-Edit 모델을 사용합니다. WorkBuddy는 카탈로그에서 text-to-image 또는 image-to-image 태그가 붙은 모델(예: hunyuan-image-alpha, hunyuan-image-alpha-edit)을 사용합니다. 실제 model 값은 현재 /v1/models를 기준으로 하며, 각 사 API의 기본 모델명을 그대로 쓰지 마세요.", "展开目录": "목차 펼치기", "工具服务 API": "도구 서비스 API", "工具服务 API 文档": "도구 서비스 API 문서", "工具服务 API 是网关对外的固定接口,路径以 /api/web-search 开头;不属于 /v1 对话协议,也不是管理面板的管理接口,鉴权同样使用网关 Key。": "도구 서비스 API는 게이트웨이가 외부에 제공하는 고정 인터페이스이며 경로가 /api/web-search로 시작합니다. /v1 대화 프로토콜이나 관리 패널의 관리 API가 아니며, 인증에도 게이트웨이 Key를 사용합니다.", "已实现,待实测": "구현 완료, 실측 대기", "已实现,待实测:仅表示代码已接入,尚未通过真实账号验证。": "구현 완료, 실측 대기: 코드가 연동되었다는 뜻이며 실제 계정으로는 아직 검증하지 않았습니다.", "建议显式填写图片模型 id。省略时从当前 Key 可用目录中选择支持本次操作的图片模型,不使用对话默认模型;没有对应能力模型时返回 503。": "이미지 모델 id를 명시하는 것이 좋습니다. 생략하면 Key의 사용 가능한 목록에서 이번 작업 지원 모델을 고르며 기본 대화 모델은 사용하지 않습니다. 해당 기능 모델이 없으면 503입니다.", "待实测": "실측 대기", "必填。使用 user / assistant 角色;content 可为字符串或 text、image、tool_use、tool_result 等内容块。": "필수입니다. user / assistant 역할을 사용하고 content는 문자열 또는 text, image, tool_use, tool_result 등의 블록입니다.", "必填。包含 role 与 content;常见角色为 system、user、assistant,工具结果使用 tool。文本可直接使用字符串,多模态使用内容块数组。": "필수입니다. role과 content를 포함하며 일반 역할은 system, user, assistant, 도구 결과는 tool입니다. 텍스트는 문자열, 멀티모달은 콘텐츠 블록 배열을 사용할 수 있습니다.", "必填且不能为空,最多 32000 个字符。描述主体、构图、风格和修改目标;当前不支持 mask,编辑范围也应在提示词中说明。": "필수이며 비어 있으면 안 되고 최대 32000자입니다. 대상, 구도, 스타일 및 수정 목표를 설명하세요. mask는 미지원이므로 수정 범위도 프롬프트로 설명합니다.", "执行工具后回传结果的请求体": "실행한 도구 결과를 회신하는 요청 본문", "找到 {count} 个章节": "{count}개 장을 찾았습니다", "排错与限制": "문제 해결 및 제한", "接入与鉴权": "연결 및 인증", "接入指南": "연결 가이드", "接入指南与接口参考": "연결 가이드 및 API 참고", "接口参考目录": "API 참고 목차", "接口地址": "인터페이스 주소", "推荐使用 Authorization: Bearer YOUR_GATEWAY_KEY;Key 来自「网关 Key」页,并且必须处于启用状态。": "Authorization: Bearer YOUR_GATEWAY_KEY를 권장합니다. 「게이트웨이 키」 페이지에서 활성화된 Key를 사용하세요.", "推荐显式指定当前目录中的对话模型 id。省略时尝试网关默认模型;默认选择也受该 Key 的授权范围限制。": "현재 목록의 대화 모델 id를 명시하는 것이 좋습니다. 생략하면 게이트웨이 기본 모델을 시도하되 Key 권한 범위를 따릅니다.", "描述输入与输出模态,例如 text、image、video。字段缺失不表示自动支持其他文件、音频或服务端上传接口。": "text, image, video 등의 입력 및 출력 모달리티입니다. 필드가 없다고 다른 파일, 오디오 또는 서버 업로드 API를 자동 지원하는 것은 아닙니다.", "提供商能力": "제공업체 기능", "提供商能力适配表": "제공업체 기능 지원표", "搜索文档": "문서 검색", "搜索文档、参数或接口…": "문서, 매개변수 또는 API 검색…", "收起全部": "모두 접기", "收起目录": "목차 접기", "文本生成图片;JSON 请求,非流式返回 base64 或下载链接。": "텍스트로 이미지를 생성합니다. JSON 요청에 비스트리밍 base64 또는 다운로드 URL을 반환합니다.", "文档内容": "문서", "文档目录": "문서 목차", "无此概念": "해당 없음", "映射为思考档位与结构化输出请求;支持范围以目标模型为准。": "추론 수준 및 구조화 출력 요청으로 매핑되며 지원 범위는 대상 모델에 따라 다릅니다.", "未声明表示插件没有提供明确结论,不等于不支持。": "미선언은 플러그인이 명확한 결론을 제공하지 않았다는 뜻이며 미지원을 의미하지 않습니다.", "未声明表示网关本体或插件没有提供明确结论,不等于不支持。": "미선언은 게이트웨이 본체나 플러그인이 명확한 결론을 제공하지 않았다는 뜻이며 미지원을 의미하지 않습니다.", "本体订阅": "본체 구독", "本地上下文预算估算,返回 estimated=true;不是上游精确分词。": "로컬 컨텍스트 예산을 추정하며 estimated=true를 반환합니다. 상위 서비스의 정확한 토큰 계산이 아닙니다.", "本机免鉴权模式没有启用 Key 时可调用;启用任意 Key 后,受保护接口都要携带有效 Key。公网安全模式没有配置 Key 时会拒绝受保护的 /v1 请求,并返回 503 api_key_not_configured。": "로컬 무인증 모드에서는 활성 Key가 없을 때 호출할 수 있습니다. Key를 하나라도 활성화하면 보호된 API는 유효한 Key를 요구합니다. 공용 네트워크 보안 모드에서 Key를 설정하지 않으면 보호된 /v1 요청을 503 api_key_not_configured로 거부합니다.", "本页只说明实际提供的接口,不等于完整复刻 OpenAI / Anthropic 服务。未列出的 Files、Batch、图片 variations、服务端会话存储等端点不要假定可用。": "이 페이지는 구현된 API 설명이며 OpenAI / Anthropic 전체 서비스를 복제한 것이 아닙니다. 나열되지 않은 Files, Batch, 이미지 variations, 서버 대화 저장 API를 지원한다고 가정하지 마세요.", "本页说明对外的 /v1 接口,不是管理面板的 /api 接口。三种对话协议共用模型目录、模型映射、账号池和网关 Key,但请求与响应格式不同。": "이 페이지는 외부 /v1 API를 설명하며 관리 패널의 /api API가 아닙니다. 세 대화 프로토콜은 모델 목록, 모델 매핑, 계정 풀, 게이트웨이 Key를 공유하지만 요청 및 응답 형식은 다릅니다.", "查看当前网关的客户端地址和各接口路径,一键复制后即可使用。": "현재 게이트웨이의 클라이언트 주소와 API 경로를 확인하고 복사해 사용할 수 있습니다.", "根据文字提示生成图片。请求使用 JSON,生成与编辑均只支持非流式响应。": "텍스트 프롬프트로 이미지를 생성합니다. JSON 요청이며 생성과 편집 모두 비스트리밍만 지원합니다.", "检查网关是否可访问": "게이트웨이 연결 확인", "模型不存在、已关闭或不在 Key 授权范围,常附 model_not_found;也可能是路径错误,或临时图片下载链接已过期。": "모델 없음, 비활성화 또는 Key 권한 범위 밖이며 보통 model_not_found가 붙습니다. 경로 오류나 임시 이미지 링크 만료일 수도 있습니다.", "模型列表": "모델 목록", "模型发现与健康检查": "모델 검색 및 상태 확인", "模型清单": "모델 목록", "模型清单与健康检查": "모델 목록과 상태 확인", "模型清单反映当前账号、模型启停与映射配置。不带 Key 时可读取公开清单;携带 Key 时必须有效,返回内容按该 Key 的授权范围过滤,无效 Key 返回 401。": "모델 목록은 현재 계정, 모델 활성 상태 및 매핑을 반영합니다. Key 없이 공개 목록을 읽을 수 있습니다. Key를 보내면 유효해야 하며 권한 범위로 필터링됩니다. 무효한 Key는 401을 반환합니다.", "模型清单反映当前账号、模型启停与映射配置;携带有效网关 Key 时进一步按该 Key 的授权范围过滤。不带 Key 或 Key 无效时仍可读取未按该 Key 收窄的清单。": "모델 목록은 현재 계정, 모델 활성 상태 및 매핑을 반영합니다. 유효한 게이트웨이 Key가 있으면 해당 권한 범위로 더 필터링됩니다. Key가 없거나 무효면 그 Key에 따른 제한은 적용되지 않습니다.", "模型清单结构示例": "모델 목록 구조 예시", "模型调用始终需要启用且可用的网关 API Key,即使只在本机使用也不能免鉴权。管理员登录会话只用于管理面板,不能代替模型调用的 Key。": "모델 호출에는 항상 활성화되고 사용 가능한 게이트웨이 API Key가 필요하며 로컬 사용도 인증을 생략할 수 없습니다. 관리자 로그인 세션은 패널 관리용이며 모델 호출의 Key를 대신할 수 없습니다.", "每把 Key 的可用模型、可用提供商限制同样适用于生图和编辑图。模型名称使用 /v1/models 中的 id 或已配置的映射名,不要直接使用展示名称。": "Key별 모델 및 제공업체 제한은 이미지 생성과 편집에도 적용됩니다. 모델 이름에는 /v1/models의 id 또는 설정된 매핑 이름을 사용하고 표시 이름을 직접 쓰지 마세요.", "没有找到匹配的文档": "일치하는 문서가 없습니다", "流式以 message_start 开始,经 content_block_start / content_block_delta / content_block_stop,最终 message_delta 与 message_stop 收尾;不要按 Chat 的 [DONE] 规则解析。": "message_start로 시작하여 content_block_start / content_block_delta / content_block_stop을 거치고 message_delta 및 message_stop으로 끝납니다. Chat의 [DONE] 규칙으로 파싱하지 마세요.", "流式包含 response.created、response.output_text.delta 和最终 response.completed 等事件;错误可能以 response.failed 结束。输出预算不足时检查 incomplete 状态与 incomplete_details。": "스트림에는 response.created, response.output_text.delta 및 최종 response.completed 등이 있습니다. 오류는 response.failed로 끝날 수 있습니다. 출력 예산이 부족하면 incomplete 및 incomplete_details를 확인하세요.", "流式对话请求": "스트리밍 대화 요청", "流式开始后 HTTP 状态码无法再改;即使已经收到 200,也要检查流内错误、结束原因及是否正常收尾,不能把断流视为成功。": "스트리밍 시작 후에는 HTTP 상태를 바꿀 수 없습니다. 200을 받아도 스트림 내부 오류, 종료 이유 및 정상 종료를 확인하세요. 연결 끊김을 성공으로 보지 마세요.", "流式用量可请求 include_usage=true;最终是否返回用量取决于上游,不应假设每个增量都有 usage。": "include_usage=true로 스트리밍 사용량을 요청할 수 있습니다. 최종 반환 여부는 상위 서비스에 따라 다르며 모든 델타에 usage가 있는 것은 아닙니다.", "清除搜索": "검색 지우기", "点击章节展开参数、示例和兼容边界;示例只供复制,不会在本页发起模型请求或消耗额度。": "절을 펼치면 매개변수, 예시 및 호환 범위를 볼 수 있습니다. 예시는 복사 전용이며 이 페이지는 모델 요청을 보내거나 할당량을 사용하지 않습니다.", "生图可能消耗账号额度。先使用 n=1 和较小尺寸确认能力,内容政策拒绝或结果不确定时不要自动重复提交。": "이미지 생성은 계정 할당량을 사용할 수 있습니다. 먼저 n=1과 작은 크기로 확인하고 정책 거부 또는 불확실한 결과일 때 자동 재전송하지 마세요.", "生成、编辑与对话接口共用网关 Key;完整鉴权规则、模型能力和请求示例见下方章节。": "생성, 편집 및 대화 API는 게이트웨이 Key를 공유합니다. 자세한 인증 규칙, 모델 기능 및 요청 예시는 아래 절을 참조하세요.", "生成、编辑与对话接口共用网关 Key;鉴权规则、模型能力和请求示例可从文档目录查阅。": "생성, 편집 및 대화 API는 게이트웨이 Key를 공유합니다. 인증 규칙, 모델 기능 및 요청 예시는 문서 목차에서 확인하세요.", "生成与编辑返回同一结构;base64 适合直接保存,URL 适合短期获取。": "생성과 편집은 같은 구조를 반환합니다. base64는 직접 저장, URL은 단기 다운로드에 적합합니다.", "用于请求思考配置或档位,由网关映射到目标模型;不保证所有 Anthropic 原生特性在跨协议转发时完全等价。": "추론 설정 또는 수준을 요청하여 대상 모델로 매핑합니다. 프로토콜 간 변환에서 모든 Anthropic 기본 기능이 완전히 같다고 보장하지 않습니다.", "的 Key:请求带 ": " Key 중 아무거나 사용하세요: 요청에 ", "目前小浣熊、Loomy、Antigravity、ModelScope、WorkBuddy 已接入图片生成;Loomy、Antigravity、ModelScope 与 WorkBuddy 同时接入参考图编辑,小浣熊暂不支持编辑。需要当前提供商插件包含对应能力,并且账号、模型和 Key 授权可用。": "현재 Raccoon, Loomy, Antigravity, ModelScope, WorkBuddy가 이미지 생성을 지원합니다. Loomy, Antigravity, ModelScope, WorkBuddy는 참조 이미지 편집도 지원하며 Raccoon은 편집을 지원하지 않습니다. 제공자 플러그인에 해당 기능이 포함되어 있고 계정, 모델, 게이트웨이 Key 권한이 유효해야 합니다.", "目录声明的上下文与最大输出预算,可能省略。预算和余额不是同一概念,也不能替代上游的实际限制。": "목록에 선언된 컨텍스트 및 최대 출력 예산이며 생략될 수 있습니다. 토큰 예산은 계정 잔액과 다르고 상위 서비스의 실제 제한을 대체하지 않습니다.", "看图与工具调用": "이미지 이해 및 도구 호출", "看图请求使用对话模型,并确认 supports_images=true。Chat 使用 text 与 image_url 内容块,图片值可为上游支持的 HTTP(S) URL 或 data URL;可用格式与大小取决于目标模型。「参考图编辑」章节的上传限制不应直接套用到所有对话模型。": "이미지 이해에는 supports_images=true인 대화 모델을 사용하세요. Chat은 text 및 image_url 블록을 사용하며 상위 서비스가 지원하는 HTTP(S) URL 또는 data URL을 지정합니다. 형식과 크기는 대상 모델에 따라 다릅니다. 「참조 이미지 편집」 장의 업로드 제한이 모든 대화 모델에 그대로 적용되지는 않습니다.", "看图请求使用对话模型,并确认 supports_images=true。Chat 使用 text 与 image_url 内容块,图片值可为上游支持的 HTTP(S) URL 或 data URL;可用格式与大小取决于目标模型。下方编辑图的上传限制不应直接套用到所有对话模型。": "이미지 이해에는 supports_images=true인 대화 모델을 사용하세요. Chat은 text 및 image_url 블록을 사용합니다. 상위 서비스가 지원하는 HTTP(S) URL 또는 data URL을 지정하며 형식과 크기는 대상 모델에 따라 다릅니다. 아래 편집 업로드 제한이 모든 대화 모델에 그대로 적용되지는 않습니다.", "示例仅供复制,不会在本页发起请求或消耗额度。": "예시는 복사 전용입니다. 이 페이지는 요청을 보내거나 할당량을 사용하지 않습니다.", "示例显式设置 max_retries=0,避免 SDK 对超时或 5xx 自动重新提交收费任务;timeout=300.0 仅是客户端等待示例,不会改变网关或上游的超时配置。": "예시는 max_retries=0으로 시간 초과 또는 5xx 시 유료 작업을 SDK가 자동 재전송하지 않게 합니다. timeout=300.0은 클라이언트 대기 예시이며 게이트웨이나 상위 시간 제한을 바꾸지 않습니다.", "章节导航": "장 탐색", "类型 / 范围": "유형 / 범위", "系统说明是顶层字段,不要放进 messages 的 system 角色;支持文本或 text 块数组。": "시스템 지시는 최상위 필드입니다. messages의 system 역할에 넣지 마세요. 텍스트 또는 text 블록 배열을 지원합니다.", "系统说明,对应 Chat 的 system 消息;需要时每次请求重新携带。": "Chat의 system 메시지에 해당하는 시스템 지시입니다. 필요한 경우 매 요청에 다시 포함하세요.", "结合 HTTP 状态、错误内容与请求日志判断问题;不要盲目重试收费请求。": "HTTP 상태, 오류 내용, 요청 로그로 원인을 판단하세요. 유료 요청을 무조건 재시도하지 마세요.", "编辑请求上传总大小最多 16 MiB。参考图转为 data URL 后,内联图片与最终 JSON 请求还受 14 MiB 上限;base64 约增加三分之一体积,因此多张各小于 10 MiB 也可能超限。": "편집 업로드 총량은 최대 16 MiB입니다. data URL 변환 후 인라인 이미지 및 최종 JSON도 14 MiB 제한을 받습니다. base64는 약 3분의 1 커지므로 각 이미지가 10 MiB 미만이어도 합계가 초과할 수 있습니다.", "网关临时 URL 响应结构": "게이트웨이 임시 URL 응답 구조", "网关临时下载不要求 Authorization,链接中的随机令牌就是访问凭据,任何拿到链接的人都能下载。请将链接视为敏感信息,重要结果及时保存,不要当作长期文件存储。": "임시 다운로드는 Authorization이 필요 없습니다. 링크의 무작위 토큰 자체가 접근 자격이며 링크를 아는 누구나 다운로드할 수 있습니다. 민감 정보로 취급하고 중요한 결과는 즉시 저장하며 장기 저장소로 쓰지 마세요.", "网关临时图片仅保存在内存,生成后 1 小时过期,网关重启后立即失效。缓存总容量 128 MiB;缓存满时会返回错误并建议改用 b64_json。上游签名链接的有效期由提供商决定。": "임시 이미지는 메모리에만 저장되어 1시간 후 만료되고 게이트웨이 재시작 시 즉시 사라집니다. 캐시 총량은 128 MiB이며 가득 차면 b64_json을 권하는 오류를 반환합니다. 상위 서명 URL 수명은 제공업체가 결정합니다.", "网关内置的安全重试与客户端 SDK 的重试是两层独立行为。图片客户端建议关闭自动重试;即使网关已停止重试,SDK 仍可能重新提交整条请求。": "게이트웨이 안전 재시도와 SDK 재시도는 독립적입니다. 이미지 클라이언트는 자동 재시도를 끄는 것이 좋습니다. 게이트웨이가 멈춰도 SDK가 전체 요청을 재전송할 수 있습니다.", "网关可将实际图片转换为指定文件编码。省略时保留上游图片格式;需要固定扩展名时建议显式填写。JPEG 无法保留透明通道。": "게이트웨이가 실제 이미지를 지정 인코딩으로 변환할 수 있습니다. 생략하면 상위 형식을 유지합니다. 고정 확장자가 필요하면 명시하세요. JPEG는 투명도를 유지할 수 없습니다.", "网关始终无状态,响应中的 store=false。即使请求 store=true,也不会保存可供后续检索的 Responses 对象。": "게이트웨이는 항상 무상태이며 store=false를 반환합니다. store=true를 보내도 나중에 조회할 Responses 객체를 저장하지 않습니다.", "网关接受 1–10,默认 1;Antigravity 与 ModelScope 仅支持 n=1。上游返回数量不足时网关报错,不会为了凑数再次调用图片生成。": "게이트웨이는 1–10, 기본 1을 받으며 Antigravity와 ModelScope는 n=1만 지원합니다. 반환 이미지 수가 부족하면 오류를 보고하고 개수를 채우기 위해 다시 생성하지 않습니다.", "网关接受 1–10,默认 1;Antigravity 仅支持 n=1。上游返回数量不足时网关报错,不会为了凑数再次调用图片生成。": "게이트웨이는 1–10, 기본 1을 허용하며 Antigravity는 n=1만 지원합니다. 상위 반환 수가 부족하면 오류를 내고 수를 채우려고 다시 생성하지 않습니다.", "网关最多接受 16 张参考图。Antigravity 的 gemini-2.5-* 模型最多 3 张,其他当前接入的 Antigravity 图片模型最多 14 张;Loomy 还可能受上游模型限制。": "최대 16개 참조 이미지를 받습니다. Antigravity gemini-2.5-*는 최대 3개, 그 외 현재 연동된 Antigravity 이미지 모델은 14개까지입니다. Loomy는 추가 상위 모델 제한이 있을 수 있습니다.", "网关最多接受 16 张参考图。Antigravity 的 gemini-2.5-* 模型最多 3 张,其他当前接入的 Antigravity 图片模型最多 14 张;ModelScope 接受 1–3 张参考图;Loomy 还可能受上游模型限制。": "참조 이미지는 최대 16장입니다. Antigravity gemini-2.5-*는 최대 3장, 다른 연동 이미지 모델은 최대 14장입니다. ModelScope는 1–3장을 받으며 Loomy는 상위 모델의 추가 제한이 있을 수 있습니다.", "网关需要下载或转换输出时,单张图片最多 32 MiB、边长最多 8192,并使用有界解码。请求 output_format 会按实际图片转码,而不是只修改文件扩展名。": "게이트웨이가 출력을 다운로드 또는 변환할 때는 한 이미지 최대 32 MiB, 변 최대 8192이며 제한 디코딩을 사용합니다. output_format은 확장자만 바꾸는 것이 아니라 실제 이미지를 변환합니다.", "网络搜索与网页抓取的 REST 接口,使用网关 Key 鉴权;不属于 /v1 对话协议。": "웹 검색 및 웹 페이지 가져오기를 위한 REST 인터페이스입니다. 게이트웨이 Key로 인증하며 /v1 대화 프로토콜에 속하지 않습니다.", "能力由当前插件版本申报,表示适配支持情况,不代表账号额度或当前可用性。": "기능은 설치된 플러그인 버전이 선언합니다. 연동 지원 여부를 나타내며 계정 할당량이나 현재 사용 가능 여부를 뜻하지 않습니다.", "能力由当前网关本体或插件版本申报,表示适配支持情况,不代表账号额度或当前可用性。": "기능은 현재 게이트웨이 본체 또는 플러그인 버전이 선언합니다. 연동 지원 상태를 나타내며 계정 할당량이나 현재 사용 가능 여부를 뜻하지 않습니다.", "自定义函数工具通过 tools 声明。模型返回 tool_calls 后,客户端校验参数、执行函数,再把 assistant 工具调用和 role=tool 结果一起放入下一次 messages;tool_call_id 必须对应,不能遗漏并行调用的结果。": "tools로 사용자 정의 함수를 선언합니다. tool_calls가 반환되면 클라이언트가 인수를 검증해 실행하고 assistant 호출 및 role=tool 결과를 다음 messages에 함께 보냅니다. tool_call_id를 맞추고 병렬 호출의 결과를 빠뜨리지 마세요.", "表示当前目录与插件声明支持参考图编辑。编辑前检查此字段,不要仅凭模型名称包含 image 判断。": "현재 목록과 플러그인이 참조 이미지 편집을 지원한다고 선언했음을 나타냅니다. 편집 전에 확인하고 모델 이름의 image만 보고 판단하지 마세요.", "表示支持图片输入,不等于支持生成图片。对话模型可用于看图;编辑模型也可能声明此字段。": "이미지 입력 지원을 나타내며 이미지 생성 지원과 다릅니다. 대화 모델은 이미지 이해에 쓰이고 편집 모델도 이 필드를 선언할 수 있습니다.", "表示目录条目属于生图模型。调用还需要当前插件已接入生成能力,且存在获准使用的可用账号。": "이미지 생성 모델 목록 항목을 나타냅니다. 호출하려면 현재 플러그인의 생성 지원 및 권한이 있는 사용 가능한 계정도 필요합니다.", "试试接口路径、参数名或其他关键词。": "API 경로, 매개변수 이름 또는 다른 키워드로 검색하세요.", "详细接口参考": "상세 API 참고", "请求与响应示例": "요청 및 응답 예시", "请求参数、模型能力或协议形态不支持。图片相关 code 可能为 invalid_image_input、image_generation_not_supported 或 image_editing_not_supported;修改请求后再发。": "매개변수, 모델 기능 또는 프로토콜 형식 미지원입니다. 이미지 code는 invalid_image_input, image_generation_not_supported, image_editing_not_supported 등이 될 수 있습니다. 요청을 수정한 뒤 다시 보내세요.", "请求示例适用于 Bash / Git Bash。YOUR_GATEWAY_KEY、CHAT_MODEL_ID、IMAGE_MODEL_ID 和图片占位地址都需要替换;返回示例仅展示结构,能力位、Token 数量和时间戳不是当前网关的实测值。": "요청 예시는 Bash / Git Bash 문법입니다. YOUR_GATEWAY_KEY, CHAT_MODEL_ID, IMAGE_MODEL_ID 및 이미지 임시 주소를 교체하세요. 응답 예시는 구조만 보여 주며 기능 값, 토큰 수, 타임스탬프는 현재 게이트웨이 측정값이 아닙니다.", "读取提供商能力表失败:{error}": "제공업체 기능을 불러오지 못했습니다: {error}", "读取插件能力表失败:{error}": "플러그인 기능을 불러오지 못했습니다: {error}", "读取获准使用的模型": "허용된 모델 조회", "输出 Token 上限,具体支持字段和预算以模型为准。不要同时设置冲突的上限;达到上限时 finish_reason 可能为 length。": "최대 출력 토큰입니다. 지원 필드와 예산은 모델에 따라 다릅니다. 충돌하는 상한을 동시에 설정하지 마세요. 상한 도달 시 finish_reason은 length일 수 있습니다.", "通用对话入口,适合大多数 OpenAI 兼容客户端。": "대부분의 OpenAI 호환 클라이언트를 위한 일반 대화 API입니다.", "通用错误结构示例": "일반 오류 구조 예시", "通过能力字段选择正确模型;健康检查只说明网关可访问。": "기능 필드로 올바른 모델을 선택하세요. 상태 확인은 게이트웨이 연결만 확인합니다.", "遇到“图片请求可能已消耗额度,未自动重试”或“上游已生成”等提示,先核对请求日志与上游结果。客户端超时、断线或取消不代表上游撤销任务;自动重发可能再次扣费。": "이미지 요청이 할당량을 썼을 수 있어 재시도하지 않았거나 상위에서 생성 완료했다는 경고가 나오면 로그와 상위 결과를 먼저 확인하세요. 클라이언트 시간 초과, 연결 끊김, 취소는 상위 작업 취소를 뜻하지 않으며 재전송 시 다시 과금될 수 있습니다.", "采样参数,是否支持和有效范围由提供商与模型决定。协议兼容不代表每家上游都支持全部调参项。": "샘플링 매개변수입니다. 지원 여부와 범위는 제공업체 및 모델이 결정하며 프로토콜 호환성이 모든 설정 지원을 보장하지 않습니다.", "鉴权用「网关 Key」页里任一": "인증에는 「게이트웨이 키」 페이지에서 ", "错误、限额与兼容边界": "오류, 제한 및 호환 범위", "限流、额度不足或当前无可用账号窗口。能确定恢复时间时可能返回 Retry-After(秒)、reset_at(Unix 毫秒)与 reset_at_text;这些字段不是每次都有。": "요청 제한, 할당량 부족 또는 사용 가능한 계정 시간창이 없는 상태입니다. 복구 시간을 알면 Retry-After(초), reset_at(Unix 밀리초), reset_at_text를 반환할 수 있지만 항상 있는 것은 아닙니다.", "非流式响应读取 choices[].message;流式响应读取 choices[].delta。每次请求由客户端携带 messages 历史,网关不会根据上一条响应 id 自动恢复对话。": "비스트리밍은 choices[].message, 스트리밍은 choices[].delta를 읽습니다. 매 요청에 messages 이력을 보내세요. 이전 응답 id로 대화를 자동 복원하지 않습니다.", "非流式对话响应": "비스트리밍 대화 응답", "非流式对话请求": "비스트리밍 대화 요청", "非流式返回 object=response、status、output 数组与 output_text。output 也可能包含 reasoning 或 function_call,不能只读取数组第一项。": "비스트리밍은 object=response, status, output 배열 및 output_text를 반환합니다. output에 reasoning이나 function_call도 있으므로 첫 항목만 읽지 마세요.", "非流式返回 type=message、content 块数组、stop_reason 与 usage。content 可能同时包含文本、思考与工具调用,应该按 type 遍历。": "비스트리밍은 type=message, content 블록 배열, stop_reason, usage를 반환합니다. 텍스트, 추론, 도구 호출이 섞일 수 있으므로 type별로 순회하세요.", "领取类": "보상 수령", "默认 b64_json,返回可直接解码的图片 base64;url 返回上游签名链接或网关临时下载链接。不是图片文件编码。": "기본 b64_json은 디코딩 가능한 이미지 base64, url은 상위 서명 URL 또는 게이트웨이 임시 다운로드 링크입니다. 이미지 파일 인코딩과 다릅니다.", "默认 false,返回完整 JSON;true 返回 text/event-stream。curl 查看流式输出时添加 -N,客户端应按完整 SSE 事件解析而不是按网络分块解析。": "기본 false는 전체 JSON, true는 text/event-stream을 반환합니다. curl에 -N을 추가하세요. 네트워크 청크가 아닌 완전한 SSE 이벤트 단위로 파싱해야 합니다.", "24 小时总用量": "24시간 총사용량", "24 小时整体命中率": "24시간 전체 적중률", "24 小时请求数": "24시간 요청 수", "30 天": "30일", "7 天": "7일", "API Key 分布": "API Key별 내역", "Token": "Token", "Top 提供商": "Top 제공자", "Top 模型": "Top 모델", "Top 账号": "Top 계정", "{date} · {tokens} tokens · {n} 次请求": "{date} · {tokens} tokens · 요청 {n}건", "{date} · 无请求": "{date} · 요청 없음", "{model}:{tokens} tokens": "{model}: {tokens} tokens", "{m}月": "{m}월", "{m}月{d}日 周{wd}": "{m}월 {d}일 ({wd})", "{name} · {tokens} tokens · {n} 次请求 · {pct}": "{name} · {tokens} tokens · 요청 {n}건 · {pct}", "{name}:{tokens} tokens · 占 {pct}%": "{name}: {tokens} tokens · 비중 {pct}%", "{n} 家提供商": "제공자 {n}개", "{n} 次请求": "요청 {n}건", "{n} 项": "{n}개 항목", "{n} 项低于 {threshold}%,已合并为“其他”": "{threshold}% 미만인 항목 {n}개를 기타로 묶었습니다", "{title}显示数量": "{title} 표시 개수", "{tokens} tokens · 占 {pct}": "{tokens} tokens · 비중 {pct}", "…还有 {n} 个模型": "…외 {n}개 모델", "…还有 {n} 项": "…외 {n}개 항목", "一": "월", "三": "수", "二": "화", "五": "금", "仅在饼图合并,右侧列表完整保留每个项目": "원형 차트에서만 묶으며 오른쪽 목록에는 모든 항목을 표시합니다", "仅调整两个饼图,右侧列表始终完整显示": "두 원형 차트만 변경하며 오른쪽 목록은 항상 전체를 표시합니다", "仅调整这两张图的展示,所有用量仍计入总 Token,占比保持不变": "이 두 차트의 표시만 변경합니다. 모든 사용량은 총 Token에 포함되며 비중은 바뀌지 않습니다", "今天": "오늘", "全部用量": "전체 사용량", "六": "토", "其他 {pct} · {n} 项,仅在饼图合并": "기타 {pct} · {n}개 항목, 차트에서만 묶음", "其他({n} 项)": "기타 ({n}개 항목)", "其余 {n} 项": "나머지 {n}개 항목", "前 {n} 名": "상위 {n}개", "前 {n} 名占全部用量 {pct}": "상위 {n}개가 전체 사용량의 {pct}", "区间共 {n} 天": "기간 총 {n}일", "占比低于": "비중이", "占输入 Token 的 {rate}": "입력 Token의 {rate}", "历史明细不完整": "과거 상세 기록이 불완전합니다", "另 {n} 项": "외 {n}개", "右轴": "오른쪽 축", "合并只作用于饼图。低于阈值的扇区归入“其他”,右侧列表完整保留每个项目,总量和占比不变。": "묶기는 원형 차트에만 적용됩니다. 기준 미만인 조각은 기타로 묶고 오른쪽 목록에는 모든 항목을 유지합니다. 총량과 비중은 변하지 않습니다.", "合并小项": "작은 항목 묶기", "合计": "합계", "含今天在内往前数": "오늘 포함 거슬러 계산", "命中 {hit} / 输入 {input}": "적중 {hit} / 입력 {input}", "命中率": "적중률", "命中率 = 缓存读取 Token / 输入 Token(promptTokens)。窗口越短越贴近「此刻」:上游把缓存读取与输入分开上报时,该比值合法地可能超过 100%,此处不夹取值、如实展示。": "적중률 = 캐시 읽기 Token / 입력 Token(promptTokens). 창이 짧을수록 「지금」에 가깝습니다. 업스트림이 캐시 읽기와 입력을 따로 보고하면 이 비율은 정당하게 100%를 넘을 수 있으며, 여기서는 값을 제한하지 않고 그대로 표시합니다.", "命中率 {rate}(命中 {hit} / 输入 {input})": "적중률 {rate} (적중 {hit} / 입력 {input})", "四": "목", "图表显示": "차트 표시", "图表类型": "차트 종류", "在右侧展开“其他”查看明细": "범례에서 기타를 펼치면 상세 내역을 볼 수 있습니다", "天有调用": "일 사용", "小项合并阈值": "작은 항목 묶기 기준", "展开其他明细": "기타 상세 펼치기", "左轴": "왼쪽 축", "开启“合并小项”后,低于阈值的项目合并为灰色“其他”,可在右侧展开明细。合并只影响展示,总 Token 和占比不变。": "작은 항목 묶기를 켜면 기준 미만인 항목을 회색 기타 영역으로 묶습니다. 범례에서 펼치면 상세 내역을 볼 수 있습니다. 표시만 바뀌며 총 Token과 비중은 그대로 유지됩니다.", "开始日期": "시작 날짜", "当前连续天数": "현재 연속 일수", "总 Token": "총 Token", "总 Token:{tokens}": "총 Token: {tokens}", "总 Token:{tokens}({n} 次请求)": "총 Token: {tokens} ({n}회 요청)", "总请求数": "총 요청 수", "总量不变": "총량 변경 없음", "悬停查看完整读数与分项": "마우스를 올리면 전체 수치와 항목별 내역 표시", "成功率 {rate}": "성공률 {rate}", "成功率 {rate} · 失败 {n} 次": "성공률 {rate} · 실패 {n}건", "成功请求数": "성공 요청 수", "所选范围内暂无请求": "선택한 범위에 요청이 없습니다", "所选范围内每个提供商各消耗了多少 Token,按 Token 用量从多到少排。同一个模型名可能有多家都能提供,网关按设置页「转发路由」的优先级依次尝试,所以占比也反映了实际落到谁身上。百分比按本区间的总 Token 数算(这一块只看用量,请求次数与成功率在概览卡片里)。「未知」是指那批请求没记下承载它的提供商 —— 主要是记录提供商这个功能上线之前的旧明细,其次是请求在选定上游之前就失败了(请求体非法、模型不存在、没有可用账号)。这一维与账号那一维不同:旧明细里根本没有「哪家承载」的信息(早期版本只有单一上游,但那是配置事实而非逐条记录),所以无法回算,旧数据会一直留在「未知」里;此后新产生的请求都会记上具体的提供商。": "선택한 범위에서 각 제공자가 소비한 Token 양을 Token 사용량이 많은 순서대로 나열합니다. 같은 모델 이름을 여러 제공자가 제공할 수 있어, 게이트웨이는 설정 페이지의 「포워딩 라우팅」 우선순위에 따라 차례로 시도하므로 이 비중은 실제로 어느 제공자에게 전달되었는지도 반영합니다. 백분율은 이 기간의 총 Token 수를 기준으로 계산합니다(이 영역은 사용량만 보며, 요청 수와 성공률은 개요 카드에 있습니다). 「알 수 없음」은 해당 요청에 이를 처리한 제공자가 기록되지 않은 경우입니다. 주로 제공자 기록 기능이 출시되기 전의 오래된 상세 내역이며, 그다음으로 업스트림이 정해지기 전에 요청이 실패한 경우(요청 본문이 잘못됨, 모델이 존재하지 않음, 사용 가능한 계정 없음)입니다. 이 차원은 계정 차원과 다릅니다. 오래된 상세 내역에는 「어느 제공자가 처리했는지」 정보 자체가 없으므로(초기 버전은 업스트림이 하나뿐이었지만, 그것은 설정상의 사실일 뿐 개별 기록이 아닙니다) 다시 계산할 수 없어 오래된 데이터는 계속 「알 수 없음」에 남습니다. 이후 새로 발생하는 요청에는 구체적인 제공자가 기록됩니다.", "所选范围内每个提供商各消耗了多少 Token,按用量从多到少排,扇区角度即占比。同一个模型名可能有多家都能提供,网关按设置页「转发路由」的优先级依次尝试,所以占比也反映了实际落到谁身上。中心是这一维的合计(等于概览里的总 Token),右侧每行给出该提供商的 Token 用量与百分比。「未知」是指那批请求没记下承载它的提供商 —— 主要是记录提供商这个功能上线之前的旧明细,其次是请求在选定上游之前就失败了。": "선택한 범위에서 각 제공자가 소비한 Token 양을 사용량이 많은 순서대로 나열하며, 부채꼴 각도가 곧 비중입니다. 같은 모델 이름을 여러 제공자가 제공할 수 있어, 게이트웨이는 설정 페이지의 「포워딩 라우팅」 우선순위에 따라 차례로 시도하므로 이 비중은 실제로 어느 제공자에게 전달되었는지도 반영합니다. 중앙은 이 차원의 합계(개요의 총 Token과 동일)이고, 오른쪽 각 행에는 해당 제공자의 Token 사용량과 백분율이 표시됩니다. 「알 수 없음」은 해당 요청에 이를 처리한 제공자가 기록되지 않은 경우로, 주로 제공자 기록 기능이 출시되기 전의 오래된 상세 내역이며, 그다음으로 업스트림이 정해지기 전에 요청이 실패한 경우입니다.", "所选范围内每个模型各消耗了多少 Token,按用量从多到少排,扇区角度即占比。中心是这一维的合计(等于概览里的总 Token),右侧每行给出该模型的 Token 用量与百分比。扇区内的百分比只在 ≥3% 时标出,更小的会挤成一团 —— 完整读数在右侧列表与悬停气泡里。颜色按用量排名分配:最大的那段是红色,依次往后;同一份报表里换个维度看,配色口径不变。": "선택한 범위에서 각 모델이 소비한 Token 양을 사용량이 많은 순서대로 나열하며, 부채꼴 각도가 곧 비중입니다. 중앙은 이 차원의 합계(개요의 총 Token과 동일)이고, 오른쪽 각 행에는 해당 모델의 Token 사용량과 백분율이 표시됩니다. 부채꼴 안의 백분율은 ≥3%일 때만 표시하며, 그보다 작으면 서로 겹치기 때문입니다. 전체 수치는 오른쪽 목록과 호버 툴팁에서 볼 수 있습니다. 색상은 사용량 순위에 따라 배정됩니다. 가장 큰 조각이 빨간색이고 그다음 순서대로 이어지며, 같은 리포트에서 차원을 바꿔 봐도 색상 기준은 동일합니다.", "所选范围内每个账号各消耗了多少 Token,按 Token 用量从多到少排。账号是比提供商更细的一维:同一家可以挂多个账号,转发时按优先级在候选链上依次尝试,所以这里反映的是「具体哪个登录态在出力」。百分比按本区间的总 Token 数算(这一块只看用量,请求次数与成功率在概览卡片里)。「未知账号」是指那批请求没有账号身份:走默认登录态转发(未配置账号列表)时会这样;这一维上线前写出的旧聚合行也没有账号明细,但它们会在升级导入旧数据时按明细自动补算回来 —— 只有明细已被手动清理掉的那几天补不回来,仍留在「未知账号」里,那是确实无从恢复的部分。": "선택한 범위에서 각 계정이 소비한 Token 양을 Token 사용량이 많은 순서대로 나열합니다. 계정은 제공자보다 더 세분화된 차원입니다. 같은 제공자에 여러 계정을 연결할 수 있고, 포워딩 시 우선순위에 따라 후보 체인에서 차례로 시도하므로 여기에는 「구체적으로 어떤 로그인 상태가 처리했는지」가 반영됩니다. 백분율은 이 기간의 총 Token 수를 기준으로 계산합니다(이 영역은 사용량만 보며, 요청 수와 성공률은 개요 카드에 있습니다). 「알 수 없는 계정」은 해당 요청에 계정 신원이 없는 경우입니다. 기본 로그인 상태로 포워딩할 때(계정 목록을 구성하지 않았을 때) 이렇게 되며, 이 차원이 출시되기 전에 작성된 오래된 집계 행에도 계정 상세가 없지만 구버전 데이터를 업그레이드로 가져올 때 상세 내역을 기준으로 자동으로 다시 계산되어 복원됩니다. 다만 상세 내역이 수동으로 정리된 날짜는 복원할 수 없어 계속 「알 수 없는 계정」에 남으며, 이는 실제로 복구할 방법이 없는 부분입니다.", "所选范围内还没有提供商用量": "선택한 범위에 아직 제공자 사용량이 없습니다", "所选范围内还没有模型用量": "선택한 범위에 아직 모델 사용량이 없습니다", "所选范围内还没有请求记录": "선택한 범위에 아직 요청 기록이 없습니다", "所选范围内还没有账号用量": "선택한 범위에 아직 계정 사용량이 없습니다", "折线": "꺾은선", "报表时间范围": "리포트 시간 범위", "按 Token 用量从多到少排列,扇区角度表示占比。占比不低于 3% 的扇区显示百分比,所有项目的完整读数保留在右侧列表与悬停提示中。": "Token 사용량이 많은 순서로 정렬되며 조각의 각도는 비중을 나타냅니다. 3% 이상인 조각에는 백분율을 표시하고 모든 항목의 전체 수치는 오른쪽 목록과 마우스 오버 정보에 유지됩니다.", "按 Token 统计": "Token 기준", "按天 Token 趋势": "일별 Token 추이", "按日统计": "일별 집계", "按本地整点统计": "현지 정시 단위 집계", "按本地整点,无请求的整点不标注": "로컬 정시 기준, 요청이 없는 정시는 표시하지 않음", "按每条请求的软件标识和识别规则统计,不依赖 API Key,也不代表设备或用户数。待确认的软件统一计入“其它”;规则修改不重新归类历史请求。": "각 요청의 소프트웨어 식별 정보와 규칙으로 집계하며 API Key와 무관하고 기기 수나 사용자 수를 뜻하지 않습니다. 미확인 소프트웨어는 기타로 집계되며 규칙 변경은 과거 요청을 재분류하지 않습니다.", "提供商用": "제공자 사용량", "提供商用占比": "제공자 사용량 비중", "提供商用量": "제공자 사용량", "提供商用量占比": "제공자 사용량 비중", "提供商:{text}": "제공자: {text}", "收起其他明细": "기타 상세 접기", "方格为本地自然日,无请求显示为空槽": "칸은 로컬 기준 날짜이며, 요청이 없으면 빈 칸으로 표시됩니다", "无请求的整点按 0% 计,但不写读数": "요청이 없는 정시는 0%로 계산하되 수치는 표시하지 않습니다", "日": "일", "日均": "일평균", "日均 {value}": "일평균 {value}", "时间范围。「今天」是本地自然日今天 0 点到现在;「昨天」是昨天一整天(0 点到 24 点);「近 7 天 / 近 30 天」含今天在内往前数,即今天与之前的 6 / 29 天,不是「不含今天的 7 / 30 天」。": "기간. \"오늘\"은 현지 날짜 기준 오늘 0시부터 현재까지이고, \"어제\"는 어제 하루 종일(0시~24시)입니다. \"최근 7일 / 최근 30일\"은 오늘을 포함해 거슬러 올라간 일수로, 오늘과 그 이전 6 / 29일을 뜻합니다(오늘을 제외한 7 / 30일이 아닙니다).", "昨天": "어제", "暂无热力图数据": "히트맵 데이터가 없습니다", "暂无缓存趋势数据": "캐시 추이 데이터가 없습니다", "暂无趋势数据": "추이 데이터가 없습니다", "最近整点命中率": "최근 시간대 적중률", "最近请求": "최근 요청", "未知模型": "알 수 없는 모델", "本月": "이번 달", "查看用量、调用来源与缓存表现": "사용량, 요청 출처 및 캐시 성능 확인", "柱状": "막대", "模型与提供商共用此设置": "모델과 제공자 차트에 공통으로 적용", "模型用量": "모델 사용량", "模型用量占比": "모델 사용량 비중", "每天的总 Token 用量(输入 + 输出)。柱顶标出当天的读数;区间很长、柱子挤到放不下时只标最高的那几天,其余悬停柱子即可读到。": "일별 총 Token 사용량(입력 + 출력)입니다. 막대 위에 해당 날짜의 수치를 표시하며, 기간이 길어 막대가 빽빽할 때는 가장 높은 며칠만 표시하고 나머지는 막대에 마우스를 올리면 확인할 수 있습니다.", "活跃天数": "활동 일수", "活跃热力图": "활동 히트맵", "用量分布": "사용량 구성", "用量趋势": "사용량 추이", "的项目合并为“其他”": "미만인 항목을 기타로 묶기", "筛选统计项目": "통계 항목 필터", "累计": "누적", "累计请求 {n} 条": "누적 요청 {n}건", "结束日期": "종료 날짜", "结束日期(含当天)": "종료 날짜(당일 포함)", "统计报表": "사용량 보고서", "统计概览": "통계 개요", "缓存命中率": "캐시 적중률", "缓存读取属于输入读数,不额外计入总 Token": "캐시 읽기는 입력에 포함되며 총 Token에 중복 합산하지 않습니다", "缓存读取属于输入,不重复计入总 Token": "캐시 읽기는 입력에 포함되며 총 Token에 중복 합산하지 않습니다", "自定义区间": "사용자 지정 기간", "请求日志只展示仍保留的明细;清理明细不会减少日报中的历史用量。": "요청 로그는 보관된 상세 기록만 표시합니다. 상세 기록을 삭제해도 일별 보고서의 이전 사용량은 줄어들지 않습니다.", "读取 {hit} ÷ 输入 {input}": "캐시 읽기 {hit} ÷ 입력 {input}", "读取报表失败:{error}": "리포트를 불러오지 못했습니다: {error}", "起始日期(含当天)": "시작 날짜(당일 포함)", "输入": "입력", "输入 + 输出": "입력 + 출력", "输入 Token": "입력 Token", "输出": "출력", "输出 Token": "출력 Token", "运行中": "실행 중", "近 1 小时": "최근 1시간", "近 10 分钟": "최근 10분", "近 24 小时": "최근 24시간", "近 24 小时缓存命中率与总 Token 趋势": "최근 24시간 캐시 적중률 및 총 Token 추이", "近 24 小时缓存命中率趋势": "최근 24시간 캐시 적중률 추이", "近 30 天": "최근 30일", "近 365 天 · 不随上方日期筛选变化": "최근 365일 · 위 날짜 필터와 무관", "近 365 天活跃热力图": "최근 365일 활동 히트맵", "近 365 天,按天 Token 用量着色(档位按本窗口峰值自动定)": "최근 365일, 일별 Token 사용량으로 색상 지정(단계는 이 창의 최댓값 기준으로 자동 결정)", "近 7 天": "최근 7일", "饼图不合并小项": "모든 조각 표시", "饼图小于 {threshold}% 归入其他": "{threshold}% 미만 조각을 기타로 묶기", "饼图显示": "원형 차트 표시", " · ": " · ", " · {n} 个账号今日重试已用完": " · {n}개 계정이 오늘 재시도 횟수를 모두 사용", " · 补签在主签到区间结束后执行": " · 주 출석 시간대 종료 후 보충 출석", "AgentArts 服务声明": "AgentArts 서비스 약관", "MiniMax Code 国内版每日签到 · 同地区签名账号接口读取七日面板并领取今日积分;已领取不重复领,奖励以官方返回为准": "MiniMax Code 중국판 일일 출석 · 해당 지역의 서명된 계정 API로 7일 패널을 읽고 오늘의 포인트를 수령합니다. 이미 수령한 보상은 다시 받지 않으며 공식 응답을 따릅니다.", "MiniMax Code 国际版每日签到 · 同地区签名账号接口读取七日面板并领取今日积分;已领取不重复领,奖励以官方返回为准": "MiniMax Code 국제판 일일 출석 · 해당 지역의 서명된 계정 API로 7일 패널을 읽고 오늘의 포인트를 수령합니다. 이미 수령한 보상은 다시 받지 않으며 공식 응답을 따릅니다.", "QuWork 每日奖励:先查询领取状态,再领取并回查;结果不明时不重复提交。": "QuWork 일일 보상: 수령 전에 상태를 확인하고 이후 결과를 조회합니다. 결과가 불확실하면 다시 제출하지 않습니다.", "SOLO 的 checkin_credits 领取 · 按自然日 0 点刷新": "SOLO의 checkin_credits 수령 · 자연일 0시 기준 새로고침", "Sonus 等限时活动 · 资格、额度和有效期以官方返回为准": "Sonus 등 기간 한정 이벤트 · 대상 조건, 크레딧 및 유효 기간은 공식 응답을 따릅니다", "UMID 组件安装失败:{error}": "UMID 컴포넌트 설치 실패: {error}", "UMID 组件已安装,可重新签到。": "UMID 컴포넌트가 설치되었습니다. 다시 출석할 수 있습니다.", "UMID 组件管理接口不可用,请刷新页面或更新网关。": "UMID 컴포넌트 관리 API를 사용할 수 없습니다. 페이지를 새로고침하거나 게이트웨이를 업데이트하세요.", "WorkBuddy 国内版 · 查询任务树后一键点亮 / 领奖 · 含开学季与猫猫旅行 · 点击行展开明细": "WorkBuddy 중국판 · 작업 트리를 조회한 뒤 한 번에 점등/수령 · 개학 시즌 이벤트와 고양이 여행 포함 · 행을 클릭하면 상세", "WorkBuddy 国际版保活模型,按顺序回退": "WorkBuddy 국제판 키핑 모델, 순서대로 폴백", "WorkBuddy 国际版日活任务的免费模型 · 全局一份,与条目无关": "WorkBuddy 국제판 일일 활동용 무료 모델 · 전역 단일 설정, 항목과 무관", "ZCode 自动领取验证": "ZCode 자동 수령 인증", "{date}(每天 {time})": "{date} (매일 {time})", "{done} / {total} 个账号已签": "계정 {total}개 중 {done}개 체크인 완료", "{done}/{total} 已签": "{done}/{total} 출석 완료", "{label} ×{count}({reason})": "{label} ×{count}({reason})", "{name}定时补签开关": "{name} 예약 보충 출석 스위치", "{name}签到时间": "{name} 출석 시각", "{n} 个平台": "플랫폼 {n}개", "{n} 个平台 · {groups} 组签到时间": "플랫폼 {n}개 · 시간 그룹 {groups}개", "{n} 个计划 · 北京时间 UTC+8": "계획 {n}개 · 베이징 시간 UTC+8", "{n} 个账号今天的重试次数已用完": "{n}개 계정이 오늘의 재시도 횟수를 모두 사용했습니다", "{n} 个账号等待窗口或活动": "계정 {n}개가 수령 시간 또는 이벤트 대기 중", "{n} 积分": "{n} 포인트", "{n} 项可完成": "{n}개 완료 가능", "{n} 项待领": "수령 대기 {n}건", "{points} 积分": "{points} 포인트", "{total} 账号 · {done} 已签": "계정 {total}개 · 출석 완료 {done}개", "{total} 项任务 · {pending} 项可完成": "작업 {total}개 · 완료 가능 {pending}개", "✅ UMID 组件已安装,下轮签到即可领取国际版积分": "✅ UMID 컴포넌트를 설치했습니다. 다음 출석부터 국제판 포인트를 수령할 수 있습니다", "✅ {message}": "✅ {message}", "✅ 定时签到已开启": "✅ 예약 출석이 켜졌습니다", "✅ 开学季任务执行完成": "✅ 개학 시즌 작업 실행 완료", "✅ 成长任务执行完成:积分 +{credit} 能量 +{energy}": "✅ 성장 과제 완료: 크레딧 +{credit} 에너지 +{energy}", "✅ 新手福利领取完成": "✅ 입문 혜택 수령 완료", "✅ 新手福利领取完成,累计 {n} 积分": "✅ 입문 혜택 수령 완료, 누적 {n} 포인트", "✅ 签到完成:{succeeded}/{total} 个账号成功领取{active}": "✅ 출석 완료: {succeeded}/{total}개 계정 수령 성공{active}", "「保活模型链」是 WorkBuddy 国际版领日活时用来保活的免费模型,按顺序逐个尝试、 第一个成功即止;清空提交恢复缺省({defaults})。 当天去重 + 幂等领取:重复执行只会拿到「已领取」,不会重复加分。": "\"키핑 모델 체인\"은 WorkBuddy 국제판 일일 활동에서 계정을 활성 상태로 유지하는 무료 모델입니다. 순서대로 시도하며 첫 성공에서 멈춥니다. 비운 채로 제출하면 기본값({defaults})으로 복원됩니다. 당일 중복 제거 + 멱등한 수령: 반복 실행해도 \"이미 수령됨\"만 반환되며 포인트가 이중으로 적립되지 않습니다.", "「保活模型链」是 WorkBuddy 国际版领日活时用来保活的免费模型,按顺序逐个尝试、 第一个成功即止;清空清单并保存 = 恢复缺省链(当前缺省:{defaults})。 当天去重 + 幂等领取:重复执行只会拿到「已领取」,不会重复加分。": "\"키핑 모델 체인\"은 WorkBuddy 국제판 일일 활동에서 계정을 활성 상태로 유지하는 무료 모델입니다. 순서대로 시도하며 첫 성공에서 멈춥니다. 목록을 비우고 저장하면 기본 체인(현재 기본값: {defaults})으로 복원됩니다. 당일 중복 제거 + 멱등한 수령: 반복 실행해도 \"이미 수령됨\"만 반환되며 포인트가 이중으로 적립되지 않습니다.", "「免费领积分」的每日任务 · 逐个领取": "「무료 포인트 받기」 일일 작업 · 하나씩 수령", "一次性福利 · 已领取状态保存在网关,领完无需重复查询 · 点击行展开任务清单": "일회성 혜택 · 수령 상태가 게이트웨이에 저장되어 수령 후 재조회가 필요 없습니다 · 행을 클릭해 작업 목록 펼치기", "一次性福利 · 签到后自动查询并领取,领完记在本机不再查上游 · 点击行展开任务清单": "일회성 혜택 · 출석 후 자동으로 조회하고 수령하며, 수령을 마치면 로컬에 기록해 업스트림을 더 조회하지 않음 · 행을 클릭해 작업 목록 펼치기", "一次性福利已全部结清": "일회성 혜택이 모두 정산되었습니다", "一次性福利已结清": "일회성 혜택이 정산되었습니다", "一次性福利已结清,无需重复查询": "일회성 혜택을 모두 수령했으므로 다시 조회할 필요가 없습니다", "一次领当天全部奖励(每日签到 + 新人礼) · 幂等由上游保证": "그날의 보상을 한 번에 일괄 수령합니다(매일 출석 + 신규 혜택) · 멱등성은 업스트림이 보장", "一键安装组件": "컴포넌트 한 번에 설치", "一键完成": "한 번에 완료", "一键领取({n})": "전체 수령({n})", "上一轮({time}):{n} 个动作,+{credit} 积分": "지난 회차({time}): {n}개 동작, +{credit} 크레딧", "上次执行:{line}": "마지막 실행: {line}", "上次签到时间": "최근 출석 시간", "上次领取 {time} · 领取需通过滑块验证码": "최근 수령 {time} · 수령 시 슬라이더 캡차 필요", "下一账号:{time}": "다음 계정: {time}", "下次 {date}": "다음 {date}", "下次 {date} · 点此管理条目": "다음 {date} · 클릭하여 항목 관리", "下次检查:{time}": "다음 확인: {time}", "下次自动执行": "다음 자동 실행", "不参与每日签到:{list}。CodeArts 的一次性奖励在下方「新手福利」,它与 ZCode 的每日/套餐福利领取见「活动福利」。": "일일 출석 제외: {list}. CodeArts의 일회성 보상은 아래 \"입문 혜택\"에 있으며, CodeArts와 ZCode의 일일/플랜 혜택 수령은 \"활동 혜택\"에서 볼 수 있습니다.", "不参与每日签到:{list}。CodeArts 的一次性奖励在下方「新手福利」,它的每日福利就在上方「每日签到」里;ZCode 的套餐领取见「活动福利」。": "일일 출석 제외: {list}. CodeArts의 일회성 보상은 아래 \"입문 혜택\"에, CodeArts의 일일 혜택은 바로 위 \"일일 출석\"에 있습니다. ZCode의 플랜 수령은 \"활동 혜택\"에서 볼 수 있습니다.", "不参与签到": "출석 대상 아님", "不可领": "수령 불가", "不自动重试等待中的活动": "대기 중인 이벤트를 자동 재시도하지 않음", "不适用": "해당 없음", "与国内版同一套任务接口 · 站点不同": "중국판과 동일한 작업 인터페이스 · 사이트만 다름", "与国内版同一套链路 · 站点不同、令牌不通用": "중국판과 동일한 경로 · 사이트가 다르고 토큰은 호환되지 않음", "与定时补签不同,仅处理窗口未开或活动暂未下发。": "예약 보충 출석과 달리 수령 시간이 열리지 않았거나 이벤트가 아직 배포되지 않은 경우만 처리합니다.", "与新人积分独立,不购买付费套餐、不自动续费": "신규 사용자 포인트와 별도이며 유료 요금제를 구매하거나 자동 갱신하지 않습니다.", "专属或自定义时间作为区间起点,沿用默认区间长度;每天重新随机,重启不改变当天安排。": "전용 또는 사용자 지정 시각을 시작 시각으로 사용하며 기본 시간대 길이를 따릅니다. 매일 무작위로 배정하고 재시작해도 당일 일정은 유지됩니다.", "个账号不参与": "개 계정 제외", "主签到区间结束后等待 {n} 分钟": "주 출석 시간대 종료 후 {n}분 대기", "主签到后等待 {n} 分钟": "주 출석 후 {n}분 대기", "主签到后等待(分钟)": "주 출석 후 대기(분)", "主签到已执行": "주 출석 실행됨", "主签到已执行不等于每个账号都已领取成功;账号结果请查看签到记录。": "주 출석이 실행되었다고 모든 계정의 수령이 성공한 것은 아닙니다. 계정별 결과는 출석 기록을 확인하세요.", "仅处理窗口未开或活动暂未下发的账号,不对所有错误反复执行。": "수령 시간이나 이벤트 배포를 기다리는 계정만 재시도하며 모든 오류를 반복하지 않습니다.", "仅开通官方报价为 0 元的个人体验套餐,固定关闭自动续费;奖励另行领取": "공식 가격이 0위안인 개인 체험 요금제만 자동 갱신을 끈 상태로 활성화합니다. 보상은 별도로 수령합니다.", "仅提交你填写的权益,不购买套餐;兑换码激活可能需要原客户端的设备标识。": "입력한 혜택만 교환하며 요금제를 구매하지 않습니다. 코드 활성화에 원래 클라이언트의 장치 식별 정보가 필요할 수 있습니다.", "今天 · 北京时间自然日": "오늘 · 베이징 시간 기준 날짜", "今天不再自动重试,明天自动重置。要现在再试一次,用签到计划里的「立即执行」。": "이 계정들은 오늘 더 이상 자동으로 재시도하지 않으며 내일 자동으로 초기화됩니다. 지금 다시 시도하려면 체크인 계획의 ‘지금 실행’을 사용하세요.", "今天已执行:{list}": "오늘 실행됨: {list}", "今天已领 {n} 份": "오늘 {n}건 받음", "今天未领": "오늘 미수령", "今天(北京时间 {day})已领取 · 官方确认到账 {n} 项 · 明天可再领": "오늘(베이징 시간 {day}) 수령 완료 · 공식 확인 반영 {n}건 · 내일 다시 수령 가능", "今日主签到": "오늘 주 출석", "今日已执行": "오늘 실행됨", "今日已派出": "오늘 이미 출발", "今日已签": "오늘 출석 완료", "今日已领取": "오늘 수령 완료", "今日已领取豆包工作签到奖励,已由官方确认": "오늘의 Doubao Work 출석 보상은 이미 수령했으며 공식 서비스에서 확인되었습니다.", "今日签到": "오늘 출석", "今日签到任务尚未满足领取条件": "오늘의 출석 과제가 아직 보상 수령 조건을 충족하지 않았습니다.", "今日签到进度": "오늘 출석 진행률", "从清单里移除": "목록에서 제거", "例如:每日自动签到": "예: 매일 자동 출석", "保存计划": "계획 저장", "保活": "키핑", "保活 API Key 已保存": "활동 유지 API Key를 저장했습니다", "保活 {n}": "키핑 {n}", "保活+领取": "키핑+수령", "保活中…": "키핑 중…", "保活模型链": "키핑 모델 체인", "保活模型链为全局配置,猫猫旅行有独立的开关与时刻。": "활동 유지 모델 체인은 전역 설정이며 고양이 여행은 별도 스위치와 시각을 사용합니다.", "先创建签到计划,再为它设置定时补签。": "먼저 출석 계획을 만든 뒤 예약 보충 출석을 설정하세요.", "先查询活动,再选择要领取的奖励;不会购买或订阅套餐": "이벤트를 조회한 후 받을 보상을 선택하세요. 요금제를 구매하거나 구독하지 않습니다.", "免费体验套餐": "무료 체험 요금제", "免费套餐已开通并确认生效": "무료 요금제를 활성화하고 적용을 확인했습니다", "兑换中…": "교환 중…", "兑换权益": "혜택 교환", "兑换结果待确认,请到官方客户端核对;不会重复提交": "교환 결과 확인 대기 중입니다. 공식 클라이언트에서 확인하세요. 중복 요청은 보내지 않습니다.", "兑换请求未得到确认,请到官方客户端核对;不要重复提交": "교환 요청을 확인하지 못했습니다. 공식 클라이언트에서 확인하고 다시 제출하지 마세요.", "全选": "전체 선택", "全部 {n} 家": "전체 {n}곳", "全部完成": "모두 완료", "全部查询": "전체 조회", "全部签到": "전체 출석", "全部类型": "모든 유형", "全部结果": "모든 결과", "全部账号均可签到": "모든 계정이 출석할 수 있습니다", "全部领取": "모두 받기", "关着:不自动巡检(仍可手动巡检)": "꺼짐: 자동 순회하지 않습니다(수동 순회는 가능)", "关着:所有条目都不执行": "꺼짐: 어떤 항목도 실행되지 않습니다", "关闭活动窗口重试不会关闭定时补签。插件提供下次重试时刻时,以插件返回的时间为准。": "이벤트 재시도를 꺼도 예약 보충 출석은 꺼지지 않습니다. 플러그인이 다음 재시도 시각을 제공하면 그 시각이 우선합니다.", "其他自动任务": "기타 자동 작업", "凭证不可用": "인증 정보 사용 불가", "凭证需刷新": "인증 정보 갱신 필요", "切换任务后,左侧只保留有账号的提供商": "작업을 전환하면 왼쪽에는 해당 작업에 계정이 있는 제공자만 표시됩니다", "删除失败:{error}": "삭제 실패: {error}", "删除定时条目": "예약 항목 삭제", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活并在网页通道建会话点亮日活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;CodeArts 领当日的运营福利(领取 → 确认 → 回读核实,自动执行受每天 6 次 / 间隔 10 分钟的写请求限流);OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "예정 시각에 체크한 제공자의 사용 가능한 계정을 자동으로 출석 체크합니다 (WorkBuddy 국내판은 매일 출석 API, 국제판은 데일리 액티비티 퀘스트: 이벤트 탐색 → 데일리 액티브 보상 수령 → 무료 모델로 킵얼라이브하고 웹 채널로 세션을 열어 일일 활성 점등. 소浣熊(샤오환슝)은 데스크톱 일일 포인트 경로, AutoClaw 는 공식 클라이언트의 매일 출석 작업. Qoder 중국판은 이벤트 수령 방식이며 이벤트를 배정받지 못한 계정은 중립적 안내를 받습니다. Qoder 국제판은 기기 리스크 관리 신원(로컬 Qoder 클라이언트 / qodercli 의 UMID 컴포넌트가 생성)을 먼저 갖춰야 \"매일 100 Credits\" 이벤트가 보이며, 컴포넌트가 없으면 오류 대신 명확한 설명을 받습니다. Trae 는 SOLO 의 매일 출석 포인트를 수령하고(자정 리셋), 업스트림이 이벤트를 열지 않았거나 자격 증명에 기기 번호가 없으면 오류 대신 \"미수령 + 사유\"를 받습니다. Loomy 는 매일 계정별 첫 로그인 포인트를 한 번 채우고, KukuAI 는 \"무료 포인트\" 일일 작업을 수령하며, CodeArts 는 당일 운영 혜택을 수령합니다(수령 → 확인 → 재조회 검증. 자동 실행은 하루 6 회 / 10 분 간격 쓰기 요청 제한 내). OfficeAce 는 당일 모든 보상을 한 번에 수령합니다 (매일 출석 + 신규 혜택)). 예정 시각을 놓쳐도 부팅 후 자동으로 보충하므로 전원이 꺼져 있어도 누락되지 않습니다. 각사 출석 API 는 멱등하여 반복 실행해도 중복 수령되지 않습니다.", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;CodeArts 领当日的运营福利(领取 → 确认 → 回读核实,自动执行受每天 6 次 / 间隔 10 分钟的写请求限流);OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "정해진 시각이 되면 선택한 제공자의 사용 가능한 계정으로 자동 출석합니다 (WorkBuddy 중국판은 매일 출석 체크 인터페이스, 국제판은 일일 활성 작업으로 진행합니다: 이벤트 탐지, 일일 활성 보상 수령, 무료 모델로 키핑; 小浣熊은 데스크톱 앱 일일 포인트 경로를 사용하고; AutoClaw는 공식 클라이언트의 매일 출석 작업을 사용합니다; Qoder 중국판은 이벤트 수령으로 진행하며, 이벤트가 배정되지 않은 계정은 중립적인 안내를 받습니다; Qoder 국제판은 기기 리스크 관리 신원(로컬 Qoder 클라이언트 / qodercli의 UMID 컴포넌트로 생성)을 먼저 갖춰야 「매일 100 Credits」 이벤트가 보이며, 컴포넌트가 없으면 오류 대신 명확한 설명이 표시됩니다; Trae는 SOLO의 매일 출석 포인트를 수령하며(자연일 0시 기준 초기화), 업스트림이 해당 계정에 이벤트를 열지 않았거나 자격 증명에 기기 번호가 없으면 오류 대신 「미수령 + 구체적 사유」가 표시됩니다; Loomy는 매일 계정당 최초 로그인 포인트를 한 번 적립합니다; KukuAI는 「무료 포인트 받기」 일일 작업을 수령합니다; CodeArts는 당일 운영 혜택을 수령합니다(수령 → 확인 → 재조회 검증, 자동 실행은 하루 6회 / 간격 10분의 쓰기 요청 제한이 적용됩니다); OfficeAce 는 그날의 보상을 한 번의 동작으로 일괄 수령합니다(매일 출석 + 신규 혜택)). 시각을 놓치면 부팅 후 자동으로 보충 출석하며, 당시 컴퓨터가 꺼져 있었다고 해서 빠지지 않습니다. 각 사의 출석 인터페이스는 멱등이므로 반복 실행해도 중복 수령되지 않습니다.", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "정해진 시각이 되면 선택한 제공자의 사용 가능한 계정으로 자동 출석합니다 (WorkBuddy 중국판은 매일 출석 체크 인터페이스, 국제판은 일일 활성 작업으로 진행합니다: 이벤트 탐지, 일일 활성 보상 수령, 무료 모델로 키핑; 小浣熊은 데스크톱 앱 일일 포인트 경로를 사용하고; AutoClaw는 공식 클라이언트의 매일 출석 작업을 사용합니다; Qoder 중국판은 이벤트 수령으로 진행하며, 이벤트가 배정되지 않은 계정은 중립적인 안내를 받습니다; Qoder 국제판은 기기 리스크 관리 신원(로컬 Qoder 클라이언트 / qodercli의 UMID 컴포넌트로 생성)을 먼저 갖춰야 「매일 100 Credits」 이벤트가 보이며, 컴포넌트가 없으면 오류 대신 명확한 설명이 표시됩니다; Trae는 SOLO의 매일 출석 포인트를 수령하며(자연일 0시 기준 초기화), 업스트림이 해당 계정에 이벤트를 열지 않았거나 자격 증명에 기기 번호가 없으면 오류 대신 「미수령 + 구체적 사유」가 표시됩니다; Loomy는 매일 계정당 최초 로그인 포인트를 한 번 적립합니다; KukuAI는 「무료 포인트 받기」 일일 작업을 수령합니다; OfficeAce 는 그날의 보상을 한 번의 동작으로 일괄 수령합니다(매일 출석 + 신규 혜택)). 시각을 놓치면 부팅 후 자동으로 보충 출석하며, 당시 컴퓨터가 꺼져 있었다고 해서 빠지지 않습니다. 각 사의 출석 인터페이스는 멱등이므로 반복 실행해도 중복 수령되지 않습니다.", "到点待执行": "시각 도달, 실행 대기", "到点时逐个签到,已勾 {n} / {total} 家": "정해진 시각에 하나씩 출석합니다. 선택 {n} / {total}개", "北京时间 · 已启用 {n} 个签到计划": "베이징 시간 · 출석 계획 {n}개 활성화", "北京时间 · 每天重复 · 随设置更新": "베이징 시간 · 매일 반복 · 설정에 따라 갱신", "北京时间 · 逗号分隔 · 最多 6 条 · 到点后最多晚 30 秒执行;错过时点开机后会补跑一轮。": "베이징 시간 · 쉼표 구분 · 최대 6개 · 정시에서 최대 30초 늦게 실행. 시각을 놓치면 부팅 후 한 번 따라 실행합니다.", "北京时间 · 错过区间会补跑未执行账号,重启保留当天安排;任务在网关执行,关闭手机不影响排程。": "베이징 시간 · 시간대를 놓치면 미실행 계정을 보충하고 재시작해도 당일 일정을 유지합니다. 작업은 게이트웨이에서 실행되므로 모바일 앱을 닫아도 일정에 영향이 없습니다.", "北京时间 · 错过时点开机后会自动补签": "베이징 시간 · 시간을 놓쳐도 시작 후 자동으로 보완됩니다", "区间内陆续签到": "시간대 내 순차 출석", "区间结束后等待(分钟)": "시간대 종료 후 대기(분)", "单账号签到不受范围限制": "개별 계정 체크인은 범위 제한을 받지 않습니다", "原套餐已到期或冻结,请在官方客户端处理;这里不会续费或变更套餐": "기존 요금제가 만료되었거나 동결되었습니다. 공식 클라이언트에서 관리하세요. 여기서는 요금제를 갱신하거나 변경하지 않습니다.", "去插件页安装签到能力": "플러그인 페이지에서 출석 기능 설치", "去领取": "수령하러 가기", "发放中": "지급 중", "发放失败": "지급 실패", "取消验证": "인증 취소", "另有 {n} 个账号不参与": "추가로 {n}개 계정은 대상이 아닙니다", "另有 {n} 个账号不参与每日签到": "그 외 {n}개 계정은 매일 출석 체크에 참여하지 않습니다", "只列当前任务里有账号的提供商。": "현재 작업에 계정이 있는 제공자만 표시합니다.", "只重试这些账号,不会重签整个计划。具体原因见签到记录。": "해당 계정만 재시도하며 전체 계획을 다시 출석하지 않습니다. 자세한 이유는 출석 기록을 확인하세요.", "只领取已完成任务的奖励(幂等,重复点不会重复入账)": "완료된 작업의 보상만 수령(멱등, 반복 클릭해도 중복 적립되지 않음)", "可使用管理员凭据调用:": "관리자 자격 증명으로 다음 API를 호출할 수 있습니다:", "可完成": "완료 가능", "可派出": "출발 가능", "可选 · 缺省显示时刻": "선택 · 기본값은 시간 표시", "可领": "수령 가능", "可领奖": "수령 가능", "各家区间起点": "제공자별 시작 시각", "同时控制定时签到、定时补签和活动窗口重试;猫猫旅行独立运行。": "예약 출석, 보충 출석, 이벤트 재시도를 함께 제어합니다. 고양이 여행은 독립적으로 실행됩니다.", "后端未返回 UMID 组件安装结果": "백엔드가 UMID 컴포넌트 설치 결과를 반환하지 않았습니다", "后端未返回 UMID 组件状态": "백엔드가 UMID 컴포넌트 상태를 반환하지 않았습니다", "后端未返回定时签到数据": "백엔드가 예약 데이터를 반환하지 않았습니다", "后端未返回巡检结果": "백엔드가 점검 결과를 반환하지 않았습니다", "后端未返回新手福利数据": "백엔드가 입문 혜택 데이터를 반환하지 않았습니다", "后端未返回有效的套餐状态": "게이트웨이가 유효한 요금제 상태를 반환하지 않았습니다", "后端未返回权益兑换结果": "게이트웨이가 교환 결과를 반환하지 않았습니다", "后端未返回活动福利数据": "게이트웨이에서 이벤트 혜택 데이터를 반환하지 않았습니다", "后端未返回签到中心数据": "백엔드가 출석 체크 센터 데이터를 반환하지 않았습니다", "启用的计划在各自区间内随机签到": "활성화된 계획은 각 시간대 내에서 무작위로 출석합니다", "启用签到计划 {name}": "출석 계획 {name} 활성화", "国际版签到需要 UMID 组件生成设备风控身份(本机未检测到)。": "국제판 출석에는 기기 리스크 관리 신원을 생성할 UMID 컴포넌트가 필요합니다 (이 기기에서 감지되지 않음).", "在桌面端设置": "데스크톱에서 설정", "在途": "여행 중", "基本设置": "기본 설정", "填入缺省链": "기본 체인 채우기", "填写你已有的兑换码或订单号": "보유한 코드 또는 주문 번호 입력", "填好时刻与签到范围后点「保存」;名称可以留空(界面显示时刻)": "시각과 출석 범위를 정한 뒤 「저장」을 누르세요. 이름은 비워도 됩니다(비우면 시각이 표시됩니다)", "失败 {n}": "실패 {n}", "奖励与权益 · 资格、额度和有效期以官方返回为准": "보상과 혜택 · 자격, 할당량 및 유효 기간은 공식 응답을 따릅니다", "套餐已冻结": "요금제 동결", "套餐已到期": "요금제 만료", "套餐已开通,无需重复操作": "요금제가 이미 활성화되어 있습니다. 다시 실행할 필요가 없습니다.", "套餐明细": "플랜 상세", "套餐查询凭证已过期,请先到账号页刷新凭证;此查询不会自动续期": "요금제 조회 인증 정보가 만료되었습니다. 먼저 계정 페이지에서 갱신하세요. 이 조회는 인증 정보를 자동 갱신하지 않습니다.", "套餐领取": "플랜 수령", "安装 Qoder 客户端或 qodercli 后即可(无需重启网关)。": "Qoder 클라이언트 또는 qodercli를 설치하면 됩니다 (게이트웨이 재시작 불필요).", "安装中…": "설치 중…", "安装后仍未检测到 UMID 组件,请重新检查。": "설치 후에도 UMID 컴포넌트가 감지되지 않습니다. 다시 확인하세요.", "官方客户端的每日签到任务": "공식 클라이언트의 매일 출석 작업", "官方拒绝套餐查询,请检查账号授权;这不一定表示 Token 已过期": "공식 서비스가 요금제 조회를 거부했습니다. 계정 권한을 확인하세요. 반드시 토큰이 만료되었다는 뜻은 아닙니다.", "官方显示自动续费已开启,请到官方客户端检查": "공식 서비스에서 자동 갱신이 켜져 있다고 표시합니다. 공식 클라이언트에서 확인하세요.", "官方未返回明确的套餐状态,暂不能开通": "공식 서비스가 명확한 요금제 상태를 반환하지 않아 현재 활성화할 수 없습니다.", "定时签到": "예약 출석", "定时签到和定时补签分开管理。补签沿用对应签到计划的平台范围,不重复领取已完成的账号。": "예약 출석과 보충 출석은 따로 관리합니다. 보충 출석은 연결된 계획의 플랫폼 범위를 사용하며 완료한 계정은 다시 수령하지 않습니다.", "定时签到已关闭": "예약 출석이 꺼졌습니다", "定时补签": "예약 보충 출석", "实际发放:{time}": "실제 지급: {time}", "实际时间由网关计算,晚窗口的平台会顺延补签;只处理当天未签到账号。": "실제 시각은 게이트웨이가 계산합니다. 늦은 수령 시간은 보충 출석도 늦어지며 오늘 미출석 계정만 처리합니다.", "实际签到安排": "실제 출석 일정", "实际补签": "실제 보충 출석", "实际补签取「主签到时间加等待间隔」与「补签不早于」中较晚的时刻。": "보충 출석은 '주 출석 시각 + 대기 간격'과 '보충 출석 시작 하한' 중 늦은 시각에 실행됩니다.", "对应主签到:{times}": "연결된 주 출석: {times}", "对应签到计划 · 沿用 {n} 个平台范围,只补未签到账号": "연결된 계획 · 같은 플랫폼 {n}개, 미출석 계정만 보충", "对应签到计划:{name}": "연결된 출석 계획: {name}", "尚未开始": "시작 전", "尚未开通套餐,可开通免费体验套餐": "아직 활성화된 요금제가 없습니다. 무료 체험 요금제를 활성화할 수 있습니다.", "尚未执行": "아직 실행 안 됨", "尚未查询": "아직 조회하지 않음", "尚未查询任务状态": "작업 상태를 아직 조회하지 않았습니다", "尝试领取": "수령 시도", "展开": "펼치기", "巡检一次": "한 번 점검", "巡检中…": "순회 중…", "巡检失败:{reason}": "점검 실패: {reason}", "已保存:{label}": "저장됨: {label}", "已保存:保活模型链": "저장됨: 키핑 모델 체인", "已保存:定时条目": "저장됨: 예약 항목", "已保存:猫猫旅行排程": "저장됨: 고양이 여행 스케줄", "已全部领取": "모두 수령 완료", "已删除定时条目": "예약 항목이 삭제되었습니다", "已发放": "지급 완료", "已完成活跃上报(连登已点亮),但活动未开启(本次没有可领的奖励)": "활동 보고 완료(연속 출석 점등), but 캠페인이 진행 중이 아닙니다(이번에 받을 보상 없음)", "已就绪": "준비 완료", "已开始批量签到": "일괄 출석을 시작했습니다", "已开通": "활성화됨", "已得 {earned} / {total} 积分": "{earned} / {total} 포인트 획득", "已执行 {n} / {total} 个平台": "플랫폼 {n} / {total}개 실행됨", "已执行 {n} / {total} 个账号": "계정 {n} / {total}개 실행됨", "已抽 {n} 次": "{n}회 추첨함", "已提交「{label}」的签到": "「{label}」 출석을 제출했습니다", "已暂停": "일시 중지됨", "已有结果 {checked} / 共 {total} 个账号": "결과 있음 {checked} / 전체 {total}개 계정", "已查 {checked} / {total} 个账号": "계정 {total}개 중 {checked}개 확인됨", "已确认不自动续费": "자동 갱신 꺼짐 확인 완료", "已确认领取": "수령 확인됨", "已签": "출석 완료", "已签到自动跳过": "출석 완료 계정 자동 건너뛰기", "已结束": "종료됨", "已选 {n} / {total} 个平台": "플랫폼 {n} / {total}개 선택됨", "已领 {claimed}/{total} · 累计 {earned} 积分": "수령 {claimed}/{total} · 누적 {earned} 포인트", "已领 {done} / {total} 份套餐": "플랜 {done} / {total}개 수령 완료", "已领养": "입양 완료", "已领取": "수령 완료", "已领取「{name}」": "「{name}」을(를) 수령했습니다", "带设备风控身份领取「每日 100 Credits」 · 需要 UMID 组件": "기기 리스크 관리 신원을 갖춰 「매일 100 Credits」 수령 · UMID 컴포넌트 필요", "平台与签到时间": "플랫폼과 출석 시각", "平台与随机签到区间": "플랫폼과 무작위 출석 시간대", "平台专属": "플랫폼 전용", "平台专属时间": "플랫폼 전용 시각", "平台专属时间由网关提供。自定义时间会覆盖专属时间,提前执行可能遇到窗口未开。": "플랫폼 전용 시각은 게이트웨이가 제공합니다. 사용자 지정 시각이 우선하며 너무 이르면 수령 시간이 아직 열리지 않을 수 있습니다.", "平台批次": "플랫폼 그룹", "开关": "스위치", "开启定时补签": "예약 보충 출석 활성화", "开启活动窗口重试": "이벤트 시간 재시도 활성화", "开始 {time}": "시작 {time}", "开学季执行失败:{error}": "개학 시즌 실행 실패: {error}", "开学季执行完成:{message}": "개학 시즌 실행 완료: {message}", "开学季活动": "개학 시즌 이벤트", "开着:启用的条目按各自时刻执行": "켜짐: 활성화된 항목이 각자의 시간에 실행됩니다", "开着:按下面的时刻自动巡检": "켜짐: 아래 시각에 자동 순회합니다", "开通中…": "활성화 중…", "开通免费套餐": "무료 요금제 활성화", "开通未得到确认,请重新查询套餐状态;不会自动重试开通": "활성화가 확인되지 않았습니다. 요금제 상태를 다시 조회하세요. 활성화는 자동으로 재시도하지 않습니다.", "开通结果待确认": "활성화 확인 대기", "开通请求仍在处理或结果待确认,请稍后查询,不要重复提交": "활성화 요청이 처리 중이거나 확인 대기 중입니다. 나중에 다시 조회하고 중복 제출하지 마세요.", "当前没有可领取的套餐": "지금 수령할 수 있는 플랜이 없습니다", "当前没有等待窗口或活动下发的账号。": "현재 수령 시간이나 이벤트 배포를 기다리는 계정이 없습니다.", "当前活动未提供每日签到任务": "현재 이벤트에는 일일 출석 과제가 없습니다.", "当前网关中,补签等待间隔与活动重试间隔共用;修改间隔会同步影响两者,开关与重试次数仍分别设置。": "현재 게이트웨이는 보충 대기와 이벤트 재시도 간격을 공유합니다. 변경하면 양쪽에 적용되지만 스위치와 횟수는 따로 설정합니다.", "当前账号暂不符合该活动的领取条件": "이 계정은 현재 이 보상의 수령 조건을 충족하지 않습니다", "当前账号未下发豆包工作签到活动,无需反复领取": "이 계정에는 Doubao Work 출석 이벤트가 제공되지 않았습니다. 수령을 반복할 필요가 없습니다.", "待发放": "지급 대기", "待执行": "실행 대기", "待签": "출석 대기", "待领取": "수령 대기", "待领新手福利": "수령 대기 입문 혜택", "总开关": "메인 스위치", "总开关已关闭": "전체 스위치가 꺼져 있습니다", "总开关已关闭 · 在「定时签到」页打开": "메인 스위치가 꺼져 있습니다 · \"예약 출석\" 탭에서 켜세요", "成功 {n}": "성공 {n}", "成长任务": "성장 과제", "成长任务完成({done} 项成功、{failed} 项失败),积分 +{credit} 能量 +{energy}": "성장 과제 완료(성공 {done}개, 실패 {failed}개): 크레딧 +{credit} 에너지 +{energy}", "成长任务执行失败:{error}": "성장 과제 실행 실패: {error}", "我已阅读并同意以下服务声明,仅授权开通零元体验套餐,不自动续费": "아래 서비스 약관을 읽고 동의하며, 자동 갱신 없이 0위안 체험 요금제 활성화만 승인합니다.", "所有时间按北京时间计算。每个账号每天随机安排一次,重启保留当天安排;错过区间时会补跑未执行账号。": "모든 시각은 베이징 시간입니다. 계정마다 매일 한 번 무작위 시각을 배정하고 재시작 후에도 유지합니다. 시간대를 놓치면 미실행 계정을 보충합니다.", "所有时间按北京时间计算。网关启动后会补跑当天已到点、尚未执行的签到,不会提前执行未来时点。": "모든 시각은 베이징 시간입니다. 시작 시 오늘 시간이 지난 미실행 출석을 보충하며 미래 시각을 미리 실행하지 않습니다.", "手动签到": "수동 체크인", "执行失败:{error}": "실행 실패: {error}", "执行并抽奖": "실행 및 추첨", "执行开学季任务并抽空抽奖机会(分享 / 对话 / 专家事件)": "개학 시즌 작업을 실행하고 추첨 기회를 모두 사용(공유/대화/전문가 이벤트)", "执行规则": "실행 규칙", "把缺省链填进清单,再点「保存」生效": "기본 체인을 목록에 채웁니다. 「저장」을 눌러야 반영됩니다", "抽奖机会 {n} 次": "추첨 기회 {n}회", "按住拖动调整顺序": "길게 눌러 드래그해 순서 변경", "按住拖动,调整这个模型在链里的顺序": "길게 눌러 드래그해 체인에서 이 모델의 순서를 조정합니다", "按序逐个尝试,共 {n} 个": "순서대로 시도, 총 {n}개", "按结果筛选": "결과로 필터", "授权被拒绝": "권한 승인 거부", "探测 + 领取 + 保活 · 与定时签到同一套组合": "탐지 + 수령 + 키핑 · 예약 출석과 동일한 조합", "探测活动并领取日活奖励 · 不做保活": "이벤트를 탐지해 일일 활성 보상을 수령 · 키핑은 하지 않음", "接单 + 点亮 + 领奖(只处理已实测沉淀的任务)": "수락 + 점등 + 수령(실측으로 검증된 작업만 처리)", "插件未就绪,范围仍保留": "플러그인 준비 안 됨, 범위 유지", "搜索平台": "플랫폼 검색", "搜索签到平台": "출석 플랫폼 검색", "搜账号 / 收益 / 错误 / 触发原因": "계정 / 수익 / 오류 / 트리거 사유 검색", "收起": "접기", "收起平台": "플랫폼 접기", "收起新建": "새 항목 닫기", "新建定时条目": "새 예약 항목", "新建签到计划": "새 출석 계획", "新手任务": "입문 과제", "新手福利": "입문 혜택", "新手福利与活动": "입문 혜택 및 이벤트", "新手福利是一次性任务:领完就没了,重复点不会重复加分。": "입문 혜택은 일회성 과제입니다. 수령하면 끝나며, 반복해서 눌러도 포인트가 중복 지급되지 않습니다.", "新手福利有 {n} 项领取失败,可重试": "입문 혜택 {n}건의 수령에 실패했습니다. 재시도할 수 있습니다", "新手福利领取失败 {n} 项": "입문 혜택 {n}건 수령 실패", "新用户积分": "신규 사용자 포인트", "新计划默认开启补签和活动窗口重试;保存后可到「定时补签」页单独调整。": "새 계획은 기본적으로 보충 출석과 이벤트 재시도를 활성화합니다. 저장 후 '예약 보충 출석'에서 따로 조정하세요.", "无": "없음", "无独立签到接口 · 每天替账号打一次登录信息(即当日魔粒)": "독립 출석 인터페이스 없음 · 매일 계정당 로그인 정보를 한 번 조회(당일 마립 지급)", "无独立签到接口 · 每天替账号打一次首次登录积分": "독립 출석 인터페이스 없음 · 매일 계정당 최초 로그인 포인트를 한 번 적립", "无账号": "계정 없음", "时刻": "시각", "暂不可领": "지금은 수령 불가", "暂不可领(未满足条件)": "아직 수령할 수 없습니다 (조건 미충족)", "暂不支持": "아직 미지원", "暂无可领取福利": "현재 수령할 수 있는 혜택이 없습니다", "暂无启用的条目": "활성화된 항목이 없습니다", "暂无启用的条目 · 点此添加": "활성화된 항목이 없습니다 · 클릭하여 추가", "暂无月度赠送记录": "월별 지급 기록 없음", "暂无活动": "진행 중인 이벤트 없음", "最近执行:{time}": "최근 실행: {time}", "最近结果:成功 {n} · 保活 {active} · 失败 {failed}": "최근 결과: 성공 {n} · 활동 유지 {active} · 실패 {failed}", "月度赠送": "월별 지급", "有平台到点待执行": "시각이 지난 플랫폼이 실행 대기 중", "有未保存的改动": "저장되지 않은 변경 사항이 있습니다", "未勾选提供商": "공급자 미선택", "未完成,请查看签到记录": "완료되지 않았습니다. 출석 기록을 확인하세요.", "未开启": "꺼짐", "未开通": "미활성화", "未执行开通,请查询套餐状态查看原因": "활성화를 실행하지 않았습니다. 요금제 상태를 조회해 이유를 확인하세요.", "未解锁": "잠김", "未领养(领养需先完成当日对话量)": "미입양(입양하려면 먼저 당일 대화량을 채워야 함)", "未领取": "미수령", "本地台账里今天还没领过;活动期内每天发一份新套餐": "로컬 기록상 오늘은 아직 받지 않았습니다. 이벤트 기간에는 매일 새 플랜이 한 건씩 지급됩니다", "本地台账里今天(北京时间)领过的套餐:{plans}": "로컬 기록상 오늘(베이징 시간) 받은 플랜: {plans}", "本次签到结果的记录时间:{time}(本机时区)": "이번 출석 결과의 기록 시각: {time}(로컬 시간대)", "本次自动领取未完成验证,请在套餐明细中手动领取": "이번 자동 수령 인증이 완료되지 않았습니다. 요금제 상세에서 직접 수령하세요.", "本轮已跳过:{reason}": "이번 실행은 건너뛰었습니다: {reason}", "权益兑换成功,重新查询可查看最新记录": "혜택을 교환했습니다. 다시 조회하면 최신 기록을 확인할 수 있습니다.", "权益兑换未成功": "혜택 교환에 실패했습니다", "权益兑换码 / 订单号": "교환 코드 / 주문 번호", "条启用": "개 활성화", "来源说明中的时刻是定时条目的名称或基准时刻,不是本次执行时间": "실행 출처 설명의 시각은 예약 항목의 이름 또는 기준 시각이며, 이번 실행 시각이 아닙니다", "果办免费体验套餐": "OfficeAce 무료 체험 요금제", "果办套餐接口不可用,请更新主程序和提供商插件": "OfficeAce 요금제 API를 사용할 수 없습니다. 앱 본체와 제공업체 플러그인을 업데이트하세요.", "果办服务声明": "OfficeAce 서비스 약관", "查看平台": "플랫폼 보기", "查看签到记录": "출석 기록 보기", "查询于 {time}": "조회 시각 {time}", "查询任务": "작업 조회", "查询任务树并一键点亮 / 领奖(含开学季与猫猫旅行)": "작업 트리를 조회하고 한 번에 점등/수령(개학 시즌과 고양이 여행 포함)", "查询只读取套餐状态,点击开通后才会执行": "조회는 요금제 상태만 읽습니다. 활성화 버튼을 눌러야 실행됩니다.", "查询失败:{error}": "조회 실패: {error}", "查询套餐": "요금제 조회", "查询活动": "이벤트 조회", "查询结果": "결과 확인", "桌面端每日积分链路": "데스크톱 앱 일일 포인트 경로", "次数按账号每天单独计算:重试到上限的账号今天不再重试,明天自动重置。": "횟수는 계정별·일별로 계산합니다. 상한에 도달한 계정은 오늘 다시 시도하지 않고 내일 초기화됩니다.", "正在为本次领取验证;若出现滑块,请手动完成": "이번 수령을 인증하고 있습니다. 슬라이더가 나타나면 직접 완료해 주세요.", "正在读取 UMID 组件状态…": "UMID 컴포넌트 상태를 읽는 중…", "正在读取定时签到数据…": "예약 출석 데이터를 읽는 중…", "正在读取签到数据…": "출석 데이터를 읽는 중…", "每个签到计划对应一组补签设置": "출석 계획마다 보충 설정 연결", "每个账号每天在区间内随机执行一次;开始与结束相同则按固定时刻执行。": "계정마다 매일 시간대 내 무작위 시각에 한 번 실행합니다. 시작과 종료가 같으면 고정 시각에 실행합니다.", "每天 {time}": "매일 {time}", "每天 {time} · {scope}": "매일 {time} · {scope}", "每天定点巡检 · 一趟推进一步 · 与签到排程互相独立": "매일 정시 순회 · 1회당 1단계 · 체크인 스케줄과 독립", "每天执行": "매일 실행", "每天按这里的时刻自动巡检一遍 WorkBuddy 国内版账号:没有猫就领养、在家就派出、到站就领奖。一趟只推进一步,所以建议留两个时刻(早上派出、晚上领奖)。企业版与国际版账号自动跳过。": "여기 지정한 시각에 WorkBuddy 중국판 계정을 자동 순회합니다: 고양이가 없으면 입양, 대기 중이면 출발, 도착했으면 보상을 수령합니다. 1회당 1단계만 진행되므로 두 개의 시각(아침 출발, 저녁 수령)을 권장합니다. 엔터프라이즈 및 국제판 계정은 자동으로 건너뜁니다.", "每天时刻": "매일 시각", "每天自动执行": "매일 자동 실행", "每天补查一次": "매일 한 번 보충 확인", "每天补查一轮,只处理今天未签到的账号。": "매일 한 번, 오늘 미출석 계정만 확인합니다.", "每执行一次签到 · 每个账号一条明细 · 结果与收益以后端落账为准": "출석 실행마다 · 계정별 한 행 · 결과와 수익은 백엔드 기록 기준", "每日活动签到(+100 积分,已领则中性提示)": "일일 활동 체크인(+100 크레딧, 이미 받았으면 중립 안내)", "每日活跃任务 · 网页会话保活点亮日活,领取才加积分 · 两者可分开执行": "매일 활성 작업 · 웹 채널 세션으로 일일 활성 달성, 포인트는 수령 시 적립 · 두 가지는 따로 실행 가능", "每日登录积分 · 顺带领取会员活动 · 访客账号无积分体系(跳过)": "매일 로그인 포인트 · 회원 활동 함께 수령 · 게스트 계정은 포인트 체계 없음(건너뜀)", "每日福利 · 领取 → 确认 → 回读核实 · 按北京时间自然日重置": "일일 혜택 · 수령 → 확인 → 재조회 검증 · 베이징 시간 자연일 기준 초기화", "每日签到": "매일 출석 체크", "每日签到积分": "일일 출석 포인트", "每条条目各有时刻与范围 · 各自当天去重 · 错过时点开机自动补签": "항목별 시간과 범위 · 항목별 당일 중복 제거 · 시작 시 자동 보완", "每账号一条明细": "계정당 1개 항목", "每账号一条明细 · 点此查看「签到记录」": "계정별 한 행 · \"출석 기록\" 열기", "每账号每天最多重试(次)": "계정별 일일 최대 재시도(회)", "没有专属时间的平台跟随默认时间;已有专属或自定义时间的平台不会被覆盖。": "전용 시각이 없는 플랫폼은 기본 시각을 따릅니다. 전용 또는 사용자 지정 시각은 유지됩니다.", "没有匹配的平台": "일치하는 플랫폼 없음", "没有可执行账号": "실행 가능한 계정 없음", "没有可签到的账号": "출석할 수 있는 계정이 없습니다", "没有可领套餐的账号(ZCode 未添加)。": "수령할 플랜이 있는 계정이 없습니다 (ZCode 미추가).", "没有可领福利的账号(CodeArts / ZCode 未添加)。": "혜택을 수령할 수 있는 계정이 없습니다 (CodeArts / ZCode 미추가).", "没有支持成长任务的账号(需要 WorkBuddy 国内版)。": "성장 과제를 지원하는 계정이 없습니다(WorkBuddy 중국판 필요).", "没有支持新手福利的账号": "입문 혜택을 지원하는 계정이 없습니다", "没有支持新手福利的账号 —— 目前有 Loomy、小浣熊、CodeArts 三家。": "입문 혜택을 지원하는 계정이 없습니다 — 현재 Loomy, 小浣熊, CodeArts 세 곳입니다.", "没有支持活动福利的账号,请添加账号并更新提供商插件。": "이벤트 혜택을 지원하는 계정이 없습니다. 계정을 추가하고 제공업체 플러그인을 업데이트하세요.", "没有符合条件的账号。": "조건에 맞는 계정이 없습니다.", "没有符合筛选条件的签到记录": "필터 조건에 맞는 출석 기록이 없습니다", "没有需要执行的任务": "실행할 작업이 없습니다", "活动奖励领取成功": "이벤트 보상을 수령했습니다", "活动尚未开始(上游接口未部署)": "이벤트가 아직 시작되지 않았습니다 (업스트림 엔드포인트 미배포)", "活动开始:{time}": "이벤트 시작: {time}", "活动按自然日发新套餐,每天可领一次": "이벤트는 날짜마다 새 플랜을 지급하며, 하루에 한 번 수령할 수 있습니다", "活动未开放或已结束,请重新查询": "이벤트가 아직 시작되지 않았거나 종료되었습니다. 다시 조회하세요.", "活动福利": "이벤트 혜택", "活动福利接口不可用,请更新网关后重试": "이벤트 혜택 API를 사용할 수 없습니다. 게이트웨이를 업데이트한 후 다시 시도하세요.", "活动窗口重试": "이벤트 시간 재시도", "活动窗口重试已关闭,等待窗口或活动下发的账号不会自动再试。": "수령 시간 재시도가 꺼져 있습니다. 수령 시간이나 이벤트 배포를 기다리는 계정은 자동으로 재시도되지 않습니다.", "活动领取未成功,请重新查询后再试": "보상을 수령하지 못했습니다. 다시 조회한 후 재시도하세요.", "活动(campaign)领取 · 每天 10:00 刷新": "캠페인(campaign) 수령 · 매일 10:00 새로고침", "活跃上报与保活均未成功,且活动未开启": "활동 보고와 keep-alive 모두 실패했고 캠페인도 진행 중이 아닙니다", "活跃上报完成,但保活未成功且活动未开启": "활동 보고는 완료되었지만 keep-alive에 실패했고 캠페인도 진행 중이 아닙니다", "活跃上报完成,但活动未开启": "활동 보고 완료, but 캠페인이 진행 중이 아닙니다", "活跃上报成功": "활동 보고 성공", "活跃保活失败": "활성 키핑 실패", "活跃保活完成": "활성 키핑 완료", "活跃保活完成,但活动未开启": "활성 키핑 완료, 다만 이벤트는 열리지 않았습니다", "活跃保活完成,但活跃上报失败且活动未开启": "keep-alive는 완료되었지만 활동 보고에 실패했고 캠페인도 진행 중이 아닙니다", "添加条目": "항목 추가", "添加模型": "모델 추가", "清单为空 —— 保存后恢复缺省链": "목록이 비어 있습니다 — 저장하면 기본 체인으로 복원됩니다", "清单里已经有「{name}」": "목록에 \"{name}\"이(가) 이미 있습니다", "清空失败:{error}": "비우기 실패: {error}", "清空签到记录": "출석 기록 비우기", "滚动 24 小时签到;按插件返回的时间等待下一次领取,不以自然日重复领取": "이전 수령부터 24시간 기준 출석입니다. 자정에 다시 수령하지 않고 플러그인이 알려 준 다음 시각까지 기다립니다.", "点「套餐明细」看领到了哪几份、什么时候生效;活动期内每天可再领": "\"플랜 상세\"에서 어떤 플랜을 받았고 언제 적용되는지 확인하세요. 이벤트 기간에는 매일 다시 받을 수 있습니다", "点击行展开账号明细 · 单账号签到不受范围限制": "행을 클릭해 계정 상세 펼치기 · 개별 계정 출석은 범위 제한을 받지 않습니다", "点进去查看任务并领取": "눌러서 과제를 확인하고 수령하세요", "状态未确认": "상태 미확인", "独立链路 · 只提供手动入口 · 不进自动签到": "독립 경로 · 수동 진입점만 제공 · 자동 출석에는 포함되지 않음", "猫猫旅行": "고양이 여행", "猫猫旅行失败:{error}": "고양이 여행 실패: {error}", "猫猫旅行失败:{message}": "고양이 여행 실패: {message}", "猫猫旅行定时排程": "고양이 여행 스케줄", "猫猫旅行:{message}": "고양이 여행: {message}", "猫猫旅行:{n} 个动作,+{credit} 积分": "고양이 여행: {n}개 동작, +{credit} 크레딧", "猫猫旅行:{n} 个动作,+{credit} 积分,{failed} 个失败": "고양이 여행: {n}개 동작, +{credit} 크레딧, {failed}개 실패", "用免费模型与网页会话维持账号活跃 · 不领取奖励": "무료 모델과 웹 채널 세션으로 계정 활성 유지 · 보상은 수령하지 않음", "由官方按期自动发放,这里只展示记录,不重复领取。": "공식 서비스가 일정에 따라 자동 지급합니다. 여기서는 기록만 표시하며 중복 수령하지 않습니다.", "确定删除「{name}」?删除后到点不再执行。": "\"{name}\"을(를) 삭제할까요? 삭제 후 예약 시간에 실행되지 않습니다.", "确定删除「{name}」?对应的定时补签与活动重试也会一并移除,签到记录保留。": "'{name}'을 삭제할까요? 연결된 보충 출석과 이벤트 재시도도 삭제되며 출석 기록은 유지됩니다.", "确定清空全部签到记录?清空后无法恢复。": "모든 출석 기록을 비울까요? 비운 후에는 복구할 수 없습니다.", "确定清空当前筛选出的签到记录?清空后无法恢复。": "현재 필터된 출석 기록을 비울까요? 비운 후에는 복구할 수 없습니다.", "确认兑换": "교환 확인", "确认把这份权益兑换到当前账号?兑换后可能无法撤销。": "현재 계정에 이 혜택을 교환할까요? 교환 후에는 취소할 수 없을 수 있습니다.", "移除 {name}": "{name} 제거", "立即全部签到": "지금 전체 출석", "立即巡检全部": "지금 전체 순회", "立即执行「{name}」会手动签到整个计划范围,不等待平台时点。窗口未开的平台可能仍无法领取。": "'{name}'을 지금 실행하면 플랫폼 시각을 기다리지 않고 전체 범위에 수동 출석합니다. 수령 시간이 열리지 않았다면 보상을 받지 못할 수 있습니다.", "等待时点": "시각 대기", "等待签到区间": "출석 시간대 대기", "等待签到时间": "출석 시각 대기", "签到": "출석", "签到与补签计划已暂停,配置仍保留;手动执行不受总开关影响。": "출석과 보충 계획은 중지되지만 설정은 유지됩니다. 수동 실행은 전체 스위치의 영향을 받지 않습니다.", "签到中…": "출석 중…", "签到中心分区": "출석 센터 구역", "签到功能分类": "출석 기능 분류", "签到区间": "출석 시간대", "签到失败:{error}": "출석 실패: {error}", "签到完成:{succeeded}/{total} 成功{active},{failed} 个失败": "출석 완료: {succeeded}/{total} 성공{active}, {failed}개 실패", "签到完成:{success}/{total} 成功,保活 {active},失败 {failed}": "출석 완료: {success}/{total} 성공, {active}개 활성 유지, {failed}개 실패", "签到成功": "출석 성공", "签到提供商": "출석 제공자", "签到日期按北京时间计算": "출석 날짜는 베이징 시간을 기준으로 계산됩니다", "签到时间": "출석 시각", "签到类型": "체크인 유형", "签到范围": "출석 범위", "签到触发时刻": "출석 실행 시각", "签到计划": "출석 계획", "签到记录": "출석 기록", "签到记录时间范围": "출석 기록 시간 범위", "签到记录表": "출석 기록 표", "管理定时签到": "예약 출석 관리", "累计签到记录": "누적 출석 기록", "结束时间不能早于开始时间,暂不支持跨天区间。": "종료 시각은 시작보다 이를 수 없습니다. 자정을 넘는 시간대는 아직 지원하지 않습니다.", "结算于 {time}": "결산 시각 {time}", "编辑签到计划": "출석 계획 편집", "缺少套餐开通凭证,请通过果办网页登录补齐授权": "요금제 활성화 인증 정보가 없습니다. OfficeAce 웹 로그인으로 권한 승인을 완료하세요.", "缺少开通凭证": "활성화 인증 정보 없음", "网关设备组件": "게이트웨이 기기 컴포넌트", "能量 {n}": "에너지 {n}", "腾讯每日签到接口 · 仅国内版": "텐센트 매일 출석 인터페이스 · 중국판 전용", "自动巡检已暂停:{reason}": "자동 점검이 일시 중지되었습니다: {reason}", "自动执行已开启": "자동 실행 활성화됨", "自动执行已暂停": "자동 실행 중지됨", "自动执行总开关": "자동 실행 전체 스위치", "自定义时间": "사용자 지정 시각", "至少勾一家才能保存(不勾等于这条条目不签到)": "저장하려면 최소 한 곳을 선택하세요(선택하지 않으면 이 항목은 아무것도 출석하지 않습니다)", "补签不早于": "보충 출석 시작 하한", "补签不早于 {time}": "{time} 이후 보충 출석", "补签单独设置,只检查今天还没有签到的账号。": "보충 출석을 따로 설정하며 오늘 미출석 계정만 확인합니다.", "补签取「主签到区间结束加等待间隔」与「补签不早于」中较晚的时刻,不会提前补签尚未轮到的账号。": "보충 출석은 주 시간대 종료에 대기 간격을 더한 시각과 보충 출석 시작 하한 중 늦은 시각에 실행합니다. 차례를 기다리는 계정을 미리 처리하지 않습니다.", "补签在主签到区间结束后执行,只补未签到账号。": "보충 출석은 주 시간대 종료 후 미출석 계정만 처리합니다.", "补签已关闭": "보충 출석 꺼짐", "补签已关闭,不影响主签到;开启后会自动生成各平台的补签安排。": "보충 출석이 꺼져도 주 출석은 영향을 받지 않습니다. 켜면 플랫폼별 보충 일정이 생성됩니다.", "补签已开启": "보충 출석 켜짐", "补签检查": "보충 출석 확인", "补签计划": "보충 출석 계획", "触发会话活跃并观测积分变化;未观测到新发放时不会标为已签到": "세션을 활성화하고 포인트 변화를 확인합니다. 새 지급이 확인되지 않으면 출석 완료로 표시하지 않습니다.", "计划名称": "계획 이름", "订单 {order} · 第 {period} 期": "주문 {order} · {period}회차", "设备校验未就绪,部分活动可能不显示:{reason}": "기기 인증을 사용할 수 없어 일부 이벤트가 표시되지 않을 수 있습니다: {reason}", "设置各平台每天的签到时间,按窗口分批执行。": "플랫폼별 매일 출석 시각을 설정하고 수령 시간에 따라 나누어 실행합니다.", "设置定时补签": "예약 보충 출석 설정", "设置每天的签到区间,各账号在区间内随机错峰执行。": "매일 출석 시간대를 설정합니다. 각 계정은 시간대 내 무작위 시각에 분산 실행됩니다.", "设置活动窗口重试": "이벤트 시간 재시도 설정", "设置补签": "보충 출석 설정", "该权益已兑换,无需重复提交": "이미 교환한 혜택입니다. 다시 제출하지 마세요.", "该活动已领取,无需重复领取": "이미 수령한 보상입니다. 다시 수령할 필요가 없습니다.", "该账号当前没有可领取的限时活动": "이 계정에서 현재 수령할 수 있는 기간 한정 보상이 없습니다", "请填写合法区间,结束不早于开始,并至少选择一家提供商。": "종료가 시작보다 이르지 않은 유효한 시간대를 입력하고 제공자를 하나 이상 선택하세요.", "请检查时间、间隔和次数是否在允许范围内。": "시각, 간격, 횟수가 허용 범위 안에 있는지 확인하세요.", "请至少选择一个签到平台": "출석 플랫폼을 하나 이상 선택하세요", "读取定时签到数据失败:{error}": "예약 출석 데이터 로드 실패: {error}", "读取签到数据失败:{error}": "출석 데이터 읽기 실패: {error}", "读取签到记录失败:{error}": "출석 기록 로드 실패: {error}", "调整重试": "재시도 조정", "豆包工作今日领取仍未确认,请前往官方客户端查看;再次点击仅查询结果,不会重复领取": "Doubao Work의 오늘 수령 결과가 아직 확인되지 않았습니다. 공식 앱에서 확인하세요. 다시 클릭해도 결과만 조회하며 중복 수령하지 않습니다.", "豆包工作签到奖励已领取,已回查确认": "Doubao Work 출석 보상을 수령했으며 재조회로 확인했습니다.", "豆包工作领取结果待确认,稍后只查询结果,不会重复提交领取": "Doubao Work 수령 결과를 확인 중입니다. 이후에는 결과만 조회하며 수령 요청을 중복 전송하지 않습니다.", "账号未使用官方果办网关地址,无法在此开通免费套餐": "이 계정은 공식 OfficeAce 게이트웨이 주소를 사용하지 않아 여기서 무료 요금제를 활성화할 수 없습니다.", "跟随默认时间": "기본 시각 따름", "跳过 {n}": "건너뜀 {n}", "运营活动交付(领取 → 确认 → 回读核实)· 领的是套餐赠送积分": "운영 이벤트 전달 (수령 → 확인 → 재조회 검증) · 플랜 증정 포인트를 수령합니다", "还有 {n} 个平台未执行": "플랫폼 {n}개 아직 미실행", "还没执行过": "아직 실행된 적 없음", "还没有可签到的提供商。签到能力随提供商插件包提供,装好并添加账号后这里就会出现。": "아직 체크인할 수 있는 제공자가 없습니다. 체크인 기능은 제공자 플러그인 팩과 함께 제공되며, 팩을 설치하고 계정을 추가하면 여기에 나타납니다.", "还没有定时条目 —— 点「添加条目」建一条,或到「签到中心」手动签到。": "예약 항목이 아직 없습니다 — \"항목 추가\"로 만들거나 \"출석 센터\"에서 수동으로 출석하세요.", "还没有签到计划,先选择平台和默认时间。": "출석 계획이 없습니다. 먼저 플랫폼과 기본 시각을 선택하세요.", "还没有签到记录 —— 手动签到或等定时条目执行后,明细会出现在这里。": "출석 기록이 아직 없습니다 — 수동 출석 또는 예약 실행 후 여기에 상세 내역이 표시됩니다.", "还没有记录": "기록이 없습니다", "这个账号没有新手任务": "이 계정에는 입문 과제가 없습니다", "这里只修改定时签到;补签和活动重试配置保持原样,在「定时补签」页单独设置。": "여기서는 예약 출석만 수정합니다. 보충과 이벤트 재시도 설정은 유지되며 '예약 보충 출석'에서 따로 설정합니다.", "这里只管理签到时间;补签与活动窗口重试在独立页设置。": "여기서는 출석 시각만 관리합니다. 보충과 이벤트 재시도는 별도 페이지에서 설정합니다.", "连登 {n} 天": "연속 로그인 {n}일", "选填": "선택 사항", "选择 {name}": "{name} 선택", "选择平台后显示实际签到时间": "플랫폼을 선택하면 실제 출석 시각 표시", "部分": "일부", "重新查询": "다시 조회", "重新检查": "다시 확인", "重签": "재출석", "重试": "다시 시도", "重试关闭": "재시도 꺼짐", "重试已暂停": "재시도 중지됨", "重试开启": "재시도 켜짐", "重试间隔(分钟)": "재시도 간격(분)", "间隔 {gap} 分钟 · 每账号每天最多重试 {limit} 次": "간격 {gap}분 · 계정별 하루 최대 {limit}회 재시도", "间隔填 0 会关闭活动窗口重试;定时补签仍至少等待 1 分钟,不会一起关闭。": "간격 0은 이벤트 재시도를 끕니다. 예약 보충 출석은 최소 1분 대기하며 함께 꺼지지 않습니다.", "限时体验套餐 · 领取需滑块验证码 · 逐份查看与领取": "기간 한정 체험 플랜 · 수령 시 슬라이더 인증 필요 · 항목별로 확인하고 수령", "限时体验套餐(start-plan),活动期内每天一份 · 领取需滑块验证码": "기간 한정 체험 플랜(start-plan), 이벤트 기간 내 매일 1회 · 수령 시 슬라이더 캡차 필요", "限时活动与体验套餐 · 查询后逐项领取 · 不影响每日签到": "기간 한정 보상 및 체험 요금제 · 조회 후 개별 수령 · 일일 출석과 별도", "随机签到开始": "무작위 출석 시작", "随机签到结束": "무작위 출석 종료", "随签到计划暂停": "출석 계획과 함께 중지", "需人工处理": "수동 처리 필요", "需真实操作": "실제 조작 필요", "需要人工验证": "사용자 인증 필요", "非活动期": "이벤트 기간 아님", "项": "건", "预计发放:{time}": "예정 지급: {time}", "领取": "수령", "领取中": "수령 중", "领取中…": "수령 중…", "领取免费 CodingPlan(按需:套餐有效时只回读额度)": "무료 CodingPlan 받기(필요 시에만: 플랜이 유효하면 할당량만 조회)", "领取后 {days} 天有效": "수령 후 {days}일간 유효", "领取失败": "수령 실패", "领取失败:{error}": "수령 실패: {error}", "领取奖励": "보상 수령", "领取截止:{time}": "수령 마감: {time}", "领取时间:{time}": "수령 시각: {time}", "领取结果待确认": "수령 결과 확인 대기", "领取结果待确认,请稍后查询;不会重复提交领取": "수령 결과를 확인 중입니다. 나중에 다시 조회하세요. 수령 요청을 중복 전송하지 않습니다.", "领取被拒绝": "수령 거부됨", "领取通常需要过一次滑块验证;活动套餐多为当天稍晚生效,领取后可在桌面端「账号」里看套餐明细。": "수령하려면 보통 슬라이더 인증을 통과해야 합니다. 이벤트 플랜은 대개 당일 늦게 적용되며, 수령 후 데스크톱 「계정」에서 플랜 상세를 확인할 수 있습니다.", "领取验证任务已结束,请到套餐明细查看结果": "이 인증 작업은 종료되었습니다. 요금제 상세에서 결과를 확인하세요.", "额度到期:{time}": "크레딧 만료: {time}", "验证凭据正在提交,领取结果请查看签到记录": "인증 정보를 제출하고 있습니다. 수령 결과는 출석 기록에서 확인하세요.", "验证提交结果未确认,请查看签到记录,勿重复领取": "인증 제출 결과가 확인되지 않았습니다. 출석 기록을 확인하고 수령을 반복하지 마세요.", "默认 {time} · {n} 个平台 · {groups} 组签到时间": "기본 {time} · 플랫폼 {n}개 · 시간 그룹 {groups}개", "默认使用第一把可用 API Key,想换就在上面选一把": "기본적으로 첫 번째 사용 가능한 API Key를 사용합니다. 바꾸려면 위에서 선택하세요.", "默认签到时间": "기본 출석 시각", "(共 {n} 个账号)": "(전체 {n}개 계정)", "(能量 / 连登读数本次未取到)": "(에너지/연속 로그인 수치는 이번에 가져오지 못했습니다)", ",日活保活 {n} 个": ", 일일 활성 키핑 {n}개", " 字段": " 필드에 저장됩니다", " 的 ": "의 ", "{enabled} / {total} 个已开启": "{enabled} / {total}개 활성화됨", "{name}开关": "{name} 스위치", "{name}间隔": "{name} 간격", "{name}间隔必须是 {min}–{max} 分钟的整数": "{name} 간격은 {min}~{max}분 사이의 정수여야 합니다", "{n} 秒后": "{n}초 후", "✅ {task}:{summary}": "✅ {task}: {summary}", "✅ 已更新「{label}」": "✅ 「{label}」을(를) 업데이트했습니다", "上次执行 {time}": "최근 실행 {time}", "上次执行 {time}({result})": "최근 실행 {time}({result})", "上次执行中断,没有完整结果;请核对账号状态": "이전 실행이 중단되어 전체 결과가 없습니다. 계정 상태를 확인하세요.", "下次执行 {time}": "다음 실행: {time}", "下次执行 {time}({relative})": "다음 실행 {time}({relative})", "仅维护过期或即将过期的凭证": "만료되었거나 곧 만료될 자격 증명만 관리합니다", "仅记录状态与结果,不展示密钥或令牌。": "상태와 결과만 기록하며 키나 토큰은 표시하지 않습니다.", "仅重试失败项": "실패한 항목만 재시도", "仅重试这一项": "이 항목만 재시도", "任务正在执行中,请稍候": "작업이 이미 실행 중입니다. 잠시 기다려 주세요.", "任务清单": "작업 목록", "任务配置保存在 ": "작업 설정은 ", "停留在「报表」页时按此间隔重新拉取统计数据;页面不可见时不请求。": "「리포트」 페이지에 머무는 동안 이 간격으로 통계 데이터를 다시 가져옵니다. 페이지가 보이지 않으면 요청하지 않습니다.", "停留在「日志」页时按此间隔重新拉取系统事件;页面不可见时不请求。": "「로그」 페이지에 머무는 동안 이 간격으로 시스템 이벤트를 다시 가져옵니다. 페이지가 보이지 않으면 요청하지 않습니다.", "停留在「请求日志」页时按此间隔重新拉取请求日志;页面不可见时不请求。": "「요청 로그」 페이지에 머무는 동안 이 간격으로 요청 로그를 다시 가져옵니다. 페이지가 보이지 않으면 요청하지 않습니다.", "全部触发方式": "모든 실행 방식", "全部跳过": "모두 건너뜀", "共 {n} 次执行": "총 {n}회 실행", "关闭自动维护不影响手动执行,也不影响对话请求所需的按需续期。": "자동 관리를 꺼도 수동 실행이나 대화 요청에 필요한 자격 증명 갱신에는 영향을 주지 않습니다.", "冷却中,{relative}重试": "쿨다운 중, {relative} 재시도", "冷却至 {time}": "{time}까지 대기", "凭证变化": "자격 증명 변경", "凭证已更新": "자격 증명 갱신됨", "凭证未过期或临期": "자격 증명이 만료되지 않았으며 만료가 임박하지도 않았습니다", "凭证维护": "자격 증명 관리", "凭证自动维护": "자격 증명 자동 관리", "分钟执行一次": "분마다 실행", "刚刚已执行,请稍后重试": "방금 실행한 작업입니다. 잠시 후 다시 시도하세요.", "刷新前有效期": "갱신 전 만료 시각", "刷新后有效期": "갱신 후 만료 시각", "刷新记录": "기록 새로고침", "即将执行": "곧 실행", "原因 / 说明": "이유 / 설명", "去账号页处理": "계정 페이지로 이동", "只刷新过期或即将过期的账号凭证": "만료되었거나 곧 만료될 계정 자격 증명만 갱신합니다", "可填 {min}–{max}": "입력 범위: {min}~{max}", "可填 {min}–{max} {unit}(默认 {def} {unit})": "{min}–{max} {unit} 입력 가능 (기본 {def} {unit})", "固定模型清单": "고정 모델 목록", "失败重试": "실패 항목 재시도", "定时任务已刷新": "예약 작업을 새로고침했습니다", "定时查询积分": "정기 포인트 조회", "定期向 GitHub 查询最新发布版本,默认每 20 分钟一次。检查结果、排期和限流冷却跨重启保留;手动检查也会合并重复请求并遵守冷却。开关与间隔在「软件更新」面板的「更新设置」弹窗里配置(定时任务页不再渲染这一条)。": "정기적으로 GitHub에서 최신 릴리스 버전을 조회하며, 기본 20분에 한 번입니다. 확인 결과, 예약 주기, 속도 제한 쿨다운은 재시작 후에도 유지됩니다. 수동 확인도 중복 요청을 병합하고 쿨다운을 따릅니다. 스위치와 간격은 「소프트웨어 업데이트」 패널의 「업데이트 설정」 팝업에서 구성합니다 (예약 작업 페이지에는 이 항목이 더 이상 표시되지 않습니다).", "定期拉取最新模型清单,重启沿用排期与缓存。客户端读取模型列表的后台刷新也遵守本任务开关、间隔和失败冷却;手动获取模型可提前刷新。": "정기적으로 최신 모델 목록을 가져오며, 재시작 후에도 예약 주기와 캐시를 유지합니다. 클라이언트가 모델 목록을 읽을 때의 백그라운드 새로고침도 이 작업의 스위치, 간격, 실패 쿨다운을 따릅니다. 모델을 수동으로 가져오면 더 일찍 새로고침할 수 있습니다.", "定期拉取最新模型清单,重启沿用排期与缓存。客户端读取模型列表的后台刷新也遵守本任务开关、间隔和失败冷却;手动获取模型可提前刷新。同一轮顺带刷新 models.dev 模型元数据(能力位与思考档位,可在设置页单独关闭)。": "정기적으로 최신 모델 목록을 가져오며, 재시작 후에도 예약 주기와 캐시를 유지합니다. 클라이언트가 모델 목록을 읽을 때의 백그라운드 새로고침도 이 작업의 스위치, 간격, 실패 쿨다운을 따릅니다. 모델을 수동으로 가져오면 더 일찍 새로고침할 수 있습니다。 같은 라운드에서 models.dev 모델 메타데이터(능력 플래그와 사고 등급, 설정 페이지에서 별도로 끌 수 있습니다)도 함께 새로고침합니다.", "定期获取各提供商的最新模型清单": "각 제공업체의 최신 모델 목록을 정기적으로 가져옵니다", "定期遍历账号,只刷新已过期或临期的凭证。重启后沿用上次排期,失败账号在冷却后重试;转发需要的按需续期不受此开关影响。": "정기적으로 계정을 순회하며 만료되었거나 만료가 임박한 자격 증명만 갱신합니다. 재시작 후에도 마지막 예약 주기를 유지하고, 실패한 계정은 쿨다운 후 다시 시도합니다. 포워딩에 필요한 온디맨드 갱신은 이 스위치의 영향을 받지 않습니다.", "客户端触发": "클라이언트 요청", "尚未执行维护": "아직 실행되지 않음", "尚未执行维护,自动或手动执行后会显示结果": "아직 관리 작업을 실행하지 않았습니다. 자동 또는 수동 실행 후 결과가 표시됩니다.", "已在设置里关闭 models.dev 模型元数据": "설정에서 models.dev 모델 메타데이터를 껐습니다", "已执行": "실행됨", "已更新 {n} 条": "{n}개 항목 업데이트됨", "已续期并确认凭证更新": "자격 증명을 갱신하고 변경을 확인했습니다", "已获取最新模型目录": "최신 모델 카탈로그를 가져왔습니다", "建议重试时间": "권장 재시도 시각", "当前没有可用的目录账号": "카탈로그를 가져올 수 있는 계정이 없습니다", "成功提供商": "성공한 제공업체", "成功账号": "성공한 계정", "手动触发": "수동 실행", "执行中断": "실행 중단됨", "执行中断,结果可能已部分生效,请先核对账号状态": "실행이 중단되었습니다. 일부 변경이 적용되었을 수 있으니 계정 상태를 먼저 확인하세요.", "执行失败:{reason}": "실행 실패: {reason}", "执行时的结果快照,不随账号后续变化而改变": "실행 당시의 결과이며 이후 계정이 변경되어도 달라지지 않습니다", "执行时间": "실행 시각", "执行明细": "실행 상세", "执行汇总": "실행 요약", "执行间隔(分钟)": "실행 간격(분)", "报表自动刷新": "리포트 자동 새로고침", "指定账号不属于该提供商、未启用或没有可用凭证": "지정 계정이 다른 제공업체에 속하거나 비활성화되었거나 사용 가능한 자격 증명이 없습니다", "提供商当前不可用,未执行目录更新": "제공업체를 현재 사용할 수 없어 카탈로그를 업데이트하지 않았습니다", "搜索账号或提供商": "계정 또는 제공업체 검색", "收起明细": "내역 접기", "改动立即生效,不需要重启程序": "변경 사항은 즉시 적용되며 프로그램을 재시작할 필요가 없습니다", "无失败项": "실패 없음", "日志页自动刷新": "로그 페이지 자동 새로고침", "明细状态筛选": "항목 상태 필터", "暂无维护记录,首次执行后会自动保存": "아직 관리 기록이 없습니다. 첫 실행 후 자동으로 저장됩니다.", "暂无记录": "기록 없음", "最近一次": "마지막 실행", "有失败项": "실패 있음", "有效期已延长": "유효 기간 연장됨", "未使用账号": "계정 사용 안 함", "未变更": "변경 없음", "未注册的提供商": "등록되지 않은 제공업체", "未返回失败原因": "실패 이유가 반환되지 않았습니다", "本次无需更新,沿用现有状态": "업데이트가 필요하지 않아 현재 상태를 유지합니다", "本轮共 {n} 项": "이번 실행 총 {n}개 항목", "本轮没有符合条件的项目": "이번 실행에 조건과 일치하는 항목이 없습니다", "查看凭证与模型目录的每次维护结果,失败和跳过都有原因": "자격 증명과 모델 카탈로그의 모든 관리 결과를 확인하고 실패 및 건너뛴 이유를 볼 수 있습니다", "查看原因": "이유 보기", "查看明细": "내역 보기", "查看详情": "상세 정보 보기", "模型基础信息": "모델 기본 정보", "模型目录": "모델 카탈로그", "模型目录刷新": "모델 카탈로그 새로고침", "模型目录更新": "모델 카탈로그 업데이트", "正在加载定时任务…": "예약 작업을 불러오는 중…", "正在读取维护记录…": "관리 기록을 불러오는 중…", "此前仅有汇总,尚无逐项记录": "이전에는 요약만 저장되어 항목별 내역이 없습니다", "每 {n} 分钟": "{n}분마다", "没有可显示的定时任务。后端未返回任务清单,请确认网关正在运行。": "표시할 예약 작업이 없습니다. 백엔드가 작업 목록을 반환하지 않았습니다. 게이트웨이가 실행 중인지 확인하세요.", "没有符合筛选条件的维护记录": "필터 조건과 일치하는 관리 기록이 없습니다", "沿用缓存或当前没有可用的目录来源": "캐시를 사용 중이거나 현재 사용할 수 있는 카탈로그 출처가 없습니다", "沿用缓存,尚未到刷新时间": "아직 업데이트 시간이 되지 않아 캐시를 사용합니다", "状态每 20 秒自动同步": "상태는 20초마다 자동 동기화", "由页面按间隔自动刷新": "페이지가 간격에 따라 자동 새로고침", "登录授权已失效,需要重新登录该账号": "로그인 인증이 만료되었습니다. 해당 계정에 다시 로그인하세요.", "目录最近更新时间": "카탈로그 최근 업데이트", "立即执行": "지금 실행", "立即检查": "지금 확인", "维护已完成,结果已保存": "관리 작업이 완료되어 결과를 저장했습니다", "维护已开始,结果会自动更新,可离开此页": "관리 작업을 시작했습니다. 결과는 자동으로 갱신되며 이 페이지를 떠나도 됩니다.", "维护已执行,但完整结果未能保存;请先核对账号状态,不要反复执行": "관리 작업은 실행되었으나 전체 결과를 저장하지 못했습니다. 반복 실행하지 말고 계정 상태를 먼저 확인하세요.", "维护已结束,有失败项,请查看明细": "관리 작업이 끝났지만 실패한 항목이 있습니다. 내역을 확인하세요.", "维护接口不可用,请更新网关并重新打开页面": "관리 기능을 사용할 수 없습니다. 게이트웨이를 업데이트한 뒤 페이지를 다시 여세요.", "维护正在执行,完成后会显示逐项结果": "관리 작업을 실행 중입니다. 완료 후 항목별 결과가 표시됩니다.", "维护类型": "관리 유형", "维护记录保留 {days} 天,最多 {count} 次;仅保存结果,不保存密钥或令牌。": "관리 기록은 {days}일 동안 최대 {count}회까지 보관합니다. 결과만 저장하며 키나 토큰은 저장하지 않습니다.", "维护设置": "관리 설정", "维护设置未能保存到数据库,请检查磁盘空间和权限": "관리 설정을 데이터베이스에 저장하지 못했습니다. 디스크 공간과 권한을 확인하세요.", "自动和手动维护,统一在这里查看": "자동 및 수동 관리 결과를 한곳에서 확인", "自动维护与手动执行共用同一份结果记录": "자동 및 수동 실행 결과를 같은 기록에 저장합니다", "自动维护已关闭": "자동 관리 꺼짐", "自动触发": "자동 실행", "触发方式": "실행 방식", "该提供商不支持主动刷新凭证(没有续期手段)": "이 제공업체는 자격 증명 갱신을 지원하지 않습니다", "该提供商使用固定模型清单": "이 제공업체는 고정 모델 목록을 사용합니다", "该次执行未完成,没有完整明细": "실행이 완료되지 않아 전체 내역이 없습니다", "请求日志页自动刷新": "요청 로그 페이지 자동 새로고침", "账号已不存在,未执行维护": "계정이 더 이상 존재하지 않아 관리 작업을 실행하지 않았습니다", "软件版本检查": "소프트웨어 업데이트 확인", "还没有执行记录": "실행 기록이 없습니다", "逐个提供商更新模型目录,模型基础信息单独列出结果": "제공업체별 모델 카탈로그를 업데이트하며 모델 기본 정보 결과는 별도로 표시합니다", "部分失败": "일부 실패", "部分设置可能已保存,请核对后重试:{reason}": "일부 설정이 이미 저장되었을 수 있습니다. 확인 후 다시 시도하세요: {reason}", "重新加载": "다시 불러오기", "重试生成新记录,不覆盖本次结果": "재시도는 새 기록을 만들며 현재 결과를 덮어쓰지 않습니다", "间隔不能为空(可填 {min}–{max} {unit})": "간격은 비울 수 없습니다 ({min}–{max} {unit} 입력 가능)", "间隔必须在 {min}–{max} {unit} 之间(当前填的是 {value})": "간격은 {min}–{max} {unit} 사이여야 합니다 (현재 입력: {value})", "间隔必须是整数": "간격은 정수여야 합니다", "页面自动刷新": "페이지 자동 새로고침", "debug 及以上": "debug 이상", "info 及以上": "info 이상", "warn 及以上": "warn 이상", "{matched} / {total} 条": "{matched} / {total}건", "{minutes} 分 {seconds} 秒": "{minutes}분 {seconds}초", "{n} 个启动失败": "{n}개 시작 실패", "{n} 个已就绪": "{n}개 준비됨", "{n} 个等待恢复": "{n}개 복구 대기 중", "{n} 条": "{n}건", "{n} 毫秒": "{n}밀리초", "✅ 已导出 {count} 条日志到 {file}": "✅ 로그 {count}건을 내보냈습니다: {file}", "上游": "업스트림", "上游接口请求": "업스트림 API 요청", "事件摘要": "이벤트 요약", "事件日志时间范围": "이벤트 로그 시간 범위", "事件详情": "이벤트 상세", "仅 error": "error만", "仅显示调试记录,供排查问题使用。": "문제 해결에 사용하는 디버그 기록만 표시합니다.", "仅错误": "오류만", "余额查询失败": "잔액 조회 실패", "余额查询完成": "잔액 조회 완료", "余额查询未配置": "잔액 조회 미설정", "信息": "정보", "信息及以上": "정보 이상", "全部事件": "전체 이벤트", "全部分类": "전체 분류", "全部级别": "전체 레벨", "共享运行环境尚未就绪,不代表这个插件本身损坏。请在插件页查看加载诊断。": "공유 실행 환경이 아직 준비되지 않았으며, 플러그인 자체가 손상되었다는 뜻은 아닙니다. 플러그인 페이지에서 로딩 진단을 확인하세요.", "关联标识": "연관 ID", "出站参数归一": "발신 매개변수 정규화", "分类": "분류", "分页按折叠后的组数计算": "페이지는 접힌 그룹 수를 기준으로 계산합니다", "加载插件": "플러그인 불러오기", "原始消息": "원본 메시지", "原始记录": "원본 기록", "原始记录 {n} 条": "원본 기록 {n}건", "发生时间": "발생 시간", "各阶段耗时": "단계별 소요 시간", "启动结果": "시작 결과", "启动超时": "시작 시간 초과", "启动进程": "프로세스 시작", "处理建议": "권장 조치", "复制原始记录": "원본 기록 복사", "复制失败": "복사 실패", "复制当前筛选结果": "필터 결과 복사", "复制本页原始记录": "이 페이지의 원본 기록 복사", "导出": "내보내기", "导出当前筛选": "필터 결과 내보내기", "已复制 {n} 条日志": "로그 {n}건을 복사했습니다", "已暂停刷新": "새로고침 일시 중지됨", "恢复刷新": "새로고침 재개", "折叠重复日志": "반복 로그 접기", "按分类筛选": "분류로 필터링", "按最低级别筛选": "최소 레벨로 필터링", "插件名称": "플러그인 이름", "插件启动失败": "플러그인 시작 실패", "插件启动存在异常": "일부 플러그인을 시작하지 못했습니다", "插件启动完成,{n} 个已就绪": "플러그인 시작 완료: {n}개 준비됨", "插件启动超时": "플러그인 시작 시간 초과", "插件已就绪": "플러그인 준비 완료", "插件已恢复运行": "플러그인이 복구되었습니다", "插件暂不可用,等待运行环境恢复": "실행 환경 복구를 기다리는 동안 플러그인을 사용할 수 없습니다", "插件暂时无法使用": "플러그인을 일시적으로 사용할 수 없습니다", "插件未能就绪": "플러그인이 준비되지 못했습니다", "插件未能正常停止": "플러그인이 정상적으로 중지되지 않았습니다", "插件编号": "플러그인 ID", "插件进程已退出": "플러그인 프로세스가 종료되었습니다", "搜索关键字": "키워드 검색", "搜索插件、消息、提供商或账号": "플러그인, 메시지, 제공자 또는 계정 검색", "搜索插件、消息、提供商或账号…": "플러그인, 메시지, 제공자 또는 계정 검색…", "搜索消息、提供商或账号": "메시지, 제공자 또는 계정 검색", "搜索消息、提供商或账号…": "메시지, 제공자 또는 계정 검색…", "搜索消息关键词": "메시지 키워드 검색", "搜索消息关键词…": "메시지 키워드 검색…", "操作失败:{error}": "작업 실패: {error}", "日志视图": "로그 보기", "日志详情": "로그 상세", "日志详情视图": "로그 상세 보기", "显示 {groups} 组 · 原始记录 {entries} 条": "{groups}개 그룹 · 원본 기록 {entries}건", "显示启动汇总和需要关注的事件;单个插件的正常启动记录在“全部事件”中。": "시작 요약과 주의가 필요한 이벤트를 표시합니다. 개별 플러그인의 정상 시작 기록은 '전체 이벤트'에서 볼 수 있습니다.", "显示所有已保留的事件;技术信息可在详情中查看。": "보관된 모든 이벤트를 표시합니다. 기술 정보는 상세 정보에서 확인할 수 있습니다.", "暂停刷新": "새로고침 일시 중지", "暂无日志": "로그가 없습니다", "暂无日志可导出": "내보낼 로그가 없습니다", "有 {n} 条新日志": "새 로그 {n}건", "服务": "서비스", "未记录插件名称": "플러그인 이름이 기록되지 않음", "本次启动超过等待时限。请在插件页查看加载诊断,确认后重新加载。": "시작 대기 시간이 초과되었습니다. 플러그인 페이지에서 로딩 진단을 확인한 후 다시 불러오세요.", "查看日志详情:{message}": "로그 상세 보기: {message}", "查看最新": "최신 로그 보기", "模型 {model}": "모델 {model}", "次数": "횟수", "正在加载日志…": "로그 불러오는 중…", "没有符合条件的日志": "조건에 맞는 로그가 없습니다", "没有符合筛选条件的日志": "필터 조건에 맞는 로그가 없습니다", "清空中…": "비우는 중…", "清空当前筛选": "필터 결과 비우기", "清空运行日志": "실행 로그 비우기", "状态码": "상태 코드", "用时 {duration}": "소요 시간 {duration}", "登记提供商": "제공자 등록", "相关功能暂不可用,原因见详情": "관련 기능을 일시적으로 사용할 수 없습니다. 원인은 상세 정보에서 확인하세요", "确定清空全部运行日志?清空后无法恢复。": "전체 실행 로그를 비울까요? 비운 후에는 복구할 수 없습니다.", "确定清空当前筛选出的 {count} 条日志?清空后无法恢复。": "현재 필터링된 {count}건의 로그를 비울까요? 비운 후에는 복구할 수 없습니다.", "系统事件": "시스템 이벤트", "级别": "레벨", "结束阅读": "읽기 종료", "结果未确认": "결과 미확인", "脱敏": "민감 정보 마스킹", "自动刷新": "자동 새로고침", "自动刷新已关闭": "자동 새로고침 꺼짐", "自动签到": "자동 체크인", "补充系统消息": "시스템 메시지 추가", "警告": "경고", "警告 {n}": "경고 {n}건", "警告及以上": "경고 및 오류", "计费接口请求": "과금 API 요청", "详细信息": "상세 정보", "请在插件页查看加载诊断,确认原因后重新加载。": "플러그인 페이지에서 로딩 진단으로 원인을 확인한 후 다시 불러오세요.", "读取日志失败": "로그를 불러오지 못했습니다", "调试": "디버그", "调试 {n}": "디버그 {n}건", "调试详情": "디버그 상세", "调试采集未开启,仅显示已保留的记录。可在设置中开启调试模式。": "디버그 수집이 꺼져 있어 보관된 기록만 표시합니다. 새 기록을 수집하려면 설정에서 디버그 모드를 켜세요.", "运行日志已清空": "실행 로그를 비웠습니다", "部分插件暂不可用。请在插件页查看异常插件的加载诊断。": "일부 플러그인을 일시적으로 사용할 수 없습니다. 플러그인 페이지에서 해당 플러그인의 로딩 진단을 확인하세요.", "重要事件": "중요 이벤트", "错误": "오류", "错误 {n}": "오류 {n}건", "阅读模式": "읽기 모드", "阅读模式,列表保持不动": "읽기 모드: 목록 위치 유지", "附加数据": "추가 데이터", " · {n} 进行中": " · {n} 처리 중", " · 会话粘住": " · 세션 고정", "

    无响应原文
    ": "
    응답 원문 없음
    ", "
    无法解析响应内容
    ": "
    응답 내용을 파싱할 수 없음
    ", "
    无法解析请求体(不是含 messages 数组的 JSON)
    ": "
    요청 본문을 파싱할 수 없음(messages 배열을 포함한 JSON이 아님)
    ", "
    无请求原文
    ": "
    요청 원문 없음
    ", "
    调用工具 {name}
    ": "
    도구 호출 {name}
    ", "响应原文": "응답 원문", "思考过程": "사고 과정", "请求原文": "요청 원문", "HTTP {status},但响应体阶段出错": "HTTP {status}이지만 응답 본문 단계에서 오류 발생", "HTTP {status},但响应体阶段出错:见错误列": "HTTP {status}이지만 응답 본문 단계에서 오류 발생: 오류 열 참조", "{duration} / 首帧 {first}": "{duration} / 첫 프레임 {first}", "{m}分{s}秒": "{m}분 {s}초", "{n}秒": "{n}초", "{s}秒{ms}ms": "{s}초{ms}ms", "↻ {n} 次": "↻ {n}회", "↻ 重试 {n} 次": "↻ 재시도 {n}회", "✅ 压缩完成": "✅ 압축 완료", "「仅看进行中」开启时,状态固定为进行中": "「처리 중만 보기」가 켜져 있으면 상태는 처리 중으로 고정됩니다", "上游模型繁忙,请求已排进上游队列;网关正按上游建议的时长等待后重发(不是登录态或额度问题)": "업스트림 모델이 혼잡하여 요청이 업스트림 대기열에 들어갔습니다. 게이트웨이는 업스트림이 권장한 시간만큼 기다린 뒤 다시 전송합니다(로그인 상태나 할당량 문제가 아닙니다)", "上游没有返回积分消耗": "업스트림이 포인트 사용량을 반환하지 않았습니다", "上游状态码: {status}": "업스트림 상태 코드: {status}", "上游请求已发出,正在等第一个字节到达(模型的思考时间也在这段)": "업스트림 요청을 보냈고 첫 바이트가 도착하기를 기다리는 중입니다(모델의 사고 시간도 이 구간에 포함됩니다)", "上游返回错误": "업스트림이 오류를 반환했습니다", "下游请求的模型:{model}": "다운스트림 요청 모델: {model}", "仅清空报文原文": "원문만 비우기", "仅看进行中": "처리 중만 보기", "令牌": "Token", "体积": "크기", "保留 {count} 条请求记录 · 将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "요청 기록 {count}건 유지 · 업스트림 {upstream}건, 다운스트림 본문 {downstream}건 삭제 · DB 크기 {db}", "保留 {count} 条请求记录;将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。用量统计与报表不变。": "요청 기록 {count}건을 유지하고 업스트림 디버그 페이로드 {upstream}건과 다운스트림 본문 {downstream}건을 삭제합니다. 사용량 통계와 보고서는 변경되지 않습니다.", "保留统计行与报表,只抹掉请求 / 响应正文。清理后详情弹窗的「预览对话」将无原文可看,统计数字分毫不动。": "통계 행과 리포트는 유지하고 요청 / 응답 본문만 지웁니다. 정리 후 상세 대화상자의 「대화 미리보기」에서는 볼 원문이 없어지고, 통계 수치는 전혀 변하지 않습니다.", "保留请求记录、用量统计与报表,同时清理上游调试报文和下游请求 / 响应正文。清理后「预览对话」与「原始报文」不再保留原文。有筛选时只清理命中请求的报文;无筛选时清空两侧全部报文。此操作无法恢复。": "요청 기록, 사용량 통계 및 보고서를 유지하면서 업스트림 디버그 페이로드와 다운스트림 요청 / 응답 본문을 삭제합니다. 정리 후 대화 미리보기와 원시 페이로드에 원문이 남지 않습니다. 필터가 있으면 일치하는 요청의 페이로드만, 필터가 없으면 양쪽의 모든 페이로드를 삭제합니다. 이 작업은 되돌릴 수 없습니다.", "全部删除": "모두 삭제", "全部提供商": "모든 제공자", "全部模型": "모든 모델", "全部状态": "모든 상태", "全部请求数据": "전체 요청 데이터", "共 {images} 张图片,复用 {cached} 张识读结果": "이미지 {images}개, 읽기 결과 {cached}개 재사용", "共 {n} 次尝试": "총 {n}회 시도", "共 {n} 次尝试,最终由 {provider} 承载": "총 {n}회 시도, 최종적으로 {provider}에서 처리됨", "其它": "기타", "内容按原样保存,请求头中的凭据字段已替换为 [redacted]": "내용은 원본 그대로 저장되며, 요청 헤더의 자격 증명 필드는 [redacted]로 대체되었습니다", "内部重试": "내부 재시도", "切换路径:": "전환 경로: ", "列表数据已刷新,请重试(关闭后重新打开这条详情)": "목록 데이터가 갱신되었습니다. 다시 시도하세요(닫은 후 이 상세를 다시 열어 주세요)", "删除日志记录本身。当前有筛选时只删命中的条目,按天聚合报表不受影响;无筛选时清空全部并重置报表。此方式无法恢复。": "로그 레코드 자체를 삭제합니다. 현재 필터가 있으면 적중한 항목만 삭제하며 일별 집계 리포트는 영향을 받지 않습니다. 필터가 없으면 전부 비우고 리포트를 초기화합니다. 이 방식은 복구할 수 없습니다.", "删除请求记录,并同步清理对应的上游调试报文与下游正文。有筛选时只删除命中的记录,按天聚合报表不受影响;无筛选时清空全部并重置报表。此操作无法恢复。": "요청 기록과 해당 업스트림 디버그 페이로드 및 다운스트림 본문을 함께 삭제합니다. 필터가 있으면 일치하는 기록만 삭제하고 일별 보고서는 유지합니다. 필터가 없으면 모두 삭제하고 보고서를 초기화합니다. 이 작업은 되돌릴 수 없습니다.", "压缩中…": "압축 중…", "压缩失败:{message}": "압축 실패: {message}", "压缩已在后台开始,完成后会自动提示": "압축이 백그라운드에서 시작되었습니다. 완료되면 자동으로 알려드립니다", "压缩已在进行中": "압축이 이미 진행 중입니다", "压缩已在进行中,接上它的进度等待完成": "압축이 이미 진행 중입니다. 기존 진행 상황에 이어 완료를 기다립니다", "压缩数据库": "DB 압축", "压缩正在后台执行,完成后自动恢复": "압축이 백그라운드에서 실행 중입니다. 완료되면 자동으로 복원됩니다", "原始报文": "원시 페이로드", "原模型": "원래 모델", "另有 {missing} 次尝试未记录明细(只保留最早的 {kept} 条)": "그 외 {missing}회 시도는 상세가 기록되지 않았습니다(가장 이른 {kept}건만 보관)", "另有 {n} 个词命中": "그 외 {n}개 단어 적중", "只显示正在转发中的请求(状态列按阶段显示:连接中 / 等待响应 / 响应中 / 重试中,用时列显示已用时)": "포워딩 중인 요청만 표시합니다(상태 열은 단계별로 표시: 연결 중 / 응답 대기 / 응답 중 / 재시도 중, 소요 시간 열은 경과 시간 표시)", "只看失败": "실패만 보기", "只看成功": "성공만 보기", "只看进行中": "처리 중만 보기", "命中了敏感词": "민감 단어 적중", "命中的敏感词": "적중한 민감 단어", "响应中": "응답 중", "响应体": "응답 본문", "响应头": "응답 헤더", "回收已删除数据占用的磁盘空间(checkpoint + VACUUM,后台执行)": "삭제된 데이터가 차지한 디스크 공간 회수(checkpoint + VACUUM, 백그라운드 실행)", "图片处理用时:{n} 秒": "이미지 처리 시간: {n}초", "在设置 → 通用里开启「调试模式」后,新发生的请求才会保存报文": "설정 → 일반에서 「디버그 모드」를 켜야 새로 발생하는 요청부터 페이로드가 저장됩니다", "在路由页查看": "라우팅 페이지에서 보기", "处理中": "처리 중", "失败请求不记录用量": "실패한 요청은 사용량을 기록하지 않음", "失败({status}):{error}": "실패({status}): {error}", "失败:{error}": "실패: {error}", "实际发给上游 {bytes} 字节": "업스트림에 실제 전송한 {bytes} 바이트", "客户端": "클라이언트", "将删除 {count} 条日志 · 其中 {raw} 条仍带报文原文 · 数据库占用 {db}": "{count}건의 로그를 삭제합니다 · 그중 {raw}건은 페이로드 원문이 남아 있음 · DB 크기 {db}", "将删除 {count} 条请求记录 · 同步清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "요청 기록 {count}건 삭제 · 업스트림 {upstream}건, 다운스트림 본문 {downstream}건 함께 삭제 · DB 크기 {db}", "将删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "요청 기록 {count}건과 업스트림 디버그 페이로드 {upstream}건, 다운스트림 본문 {downstream}건을 삭제합니다.", "尝试 {n} ·": "시도 {n} ·", "尝试明细": "시도 상세", "尝试次数": "시도 횟수", "工具结果": "도구 결과", "工具结果 · {id}": "도구 결과 · {id}", "工具结果图片": "도구 결과 이미지", "已删除 {count} 条": "{count}건 삭제됨", "已删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "요청 기록 {count}건과 업스트림 디버그 페이로드 {upstream}건, 다운스트림 본문 {downstream}건을 삭제했습니다.", "已受理终止:上游连接已断开,列表稍后刷新为「请求已被手动终止」": "중단 요청 접수됨: 업스트림 연결이 끊어졌으며, 목록은 잠시 후 「요청이 수동으로 중단됨」으로 갱신됩니다", "已抹掉 {count} 条报文原文": "{count}건의 페이로드 원문을 지웠습니다", "已清理上游调试报文 {upstream} 条、下游正文 {downstream} 条;请求记录与报表已保留。": "업스트림 디버그 페이로드 {upstream}건과 다운스트림 본문 {downstream}건을 삭제했습니다. 요청 기록과 보고서는 유지되었습니다.", "已用时(请求仍在转发中)": "경과 시간(요청이 아직 포워딩 중)", "开启调试模式后仅记录新请求,历史对话无法补录;关闭不会删除已有记录。": "디버그 모드를 켠 뒤의 새 요청만 기록되며, 이전 대화는 복구할 수 없습니다. 꺼도 기존 기록은 삭제되지 않습니다.", "当前筛选范围": "현재 필터 범위", "当前网关未提供上游 / 下游清理统计,请更新网关后再清理。": "현재 게이트웨이는 업스트림 / 다운스트림 정리 건수를 제공하지 않습니다. 게이트웨이를 업데이트한 뒤 정리하세요.", "成功": "성공", "成功({status})": "성공({status})", "所属请求": "상위 요청", "执行清理": "정리 실행", "报文超过单条上限,请求体 / 响应体已按上限截断": "페이로드가 단일 항목 상한을 초과하여 요청 본문 / 응답 본문이 상한에 맞춰 잘렸습니다", "抹掉原文": "원문 지우기", "按提供商筛选": "제공자별 필터", "按提供商筛选(只列日志里出现过的)": "제공자별 필터(로그에 나타난 제공자만 표시)", "按时间倒序,全量保留": "최신순 정렬, 전량 보존", "按模型筛选": "모델별 필터", "按模型筛选(只列日志里出现过的;精确匹配模型名)": "모델별 필터(로그에 나타난 모델만 표시; 모델 이름 정확히 일치)", "按请求结果筛选": "요청 결과별 필터", "排队中": "대기 중", "提供商 / 账号": "제공자 / 계정", "提供商: {provider}": "제공자: {provider}", "提示": "비고", "敏": "민", "敏感词": "민감 단어", "数据库占用包含主文件与 WAL 文件;清理后可点击「压缩数据库」回收空闲空间。": "DB 크기에는 주 파일과 WAL 파일이 포함됩니다. 정리 후 DB 압축을 실행하여 사용하지 않는 공간을 회수할 수 있습니다.", "断开上游连接,明细记为「请求已被手动终止」": "업스트림 연결을 끊고 상세에 「요청이 수동으로 중단됨」으로 기록됩니다", "无报文原文(未开启「调试模式」,或已被清理)": "원문 페이로드 없음(디버그 모드가 꺼져 있었거나 정리되었음)", "无结果记录": "결과 미기록", "旧版本保存的正文可能已截断,无法恢复缺失内容": "이전 버전에서 저장한 본문이 잘렸을 수 있으며 누락된 내용은 복구할 수 없습니다", "时间": "시각", "暂无请求日志,网关还没有转发过请求": "아직 요청 로그가 없습니다. 게이트웨이가 아직 요청을 포워딩한 적이 없습니다", "最终承载:{picked}": "최종 처리: {picked}", "本次请求消耗 {credit} 积分": "이 요청의 포인트 사용량: {credit}", "本轮尝试失败,正在退避等待或切换到下一个账号": "이번 시도가 실패하여 백오프 대기 중이거나 다음 계정으로 전환 중입니다", "来源客户端:{client}": "요청 클라이언트: {client}", "查看该请求的上游原始报文": "이 요청의 업스트림 원시 페이로드 보기", "模型": "모델", "模型测试": "모델 테스트", "模型管理页操作列那颗「测试」发起的请求:与真实请求同一条转发链路,但不计入报表统计": "모델 관리 페이지 작업 열의 「테스트」로 시작된 요청: 실제 요청과 같은 포워딩 경로를 사용하지만 리포트 통계에는 포함되지 않습니다", "正在加载请求日志…": "요청 로그 불러오는 중…", "正在统计…": "집계 중…", "正文超过单条上限,可能已被截断": "본문이 단일 항목 상한을 초과하여 잘렸을 수 있습니다", "没有符合筛选条件的请求": "필터 조건에 맞는 요청이 없습니다", "清理": "정리", "清理中…": "정리 중…", "清理失败:{message}": "정리 실패: {message}", "清理方式": "정리 방식", "清理请求已返回,但结果数据不完整,请刷新后确认。": "정리 요청의 결과 데이터가 불완전합니다. 새로 고침하여 결과를 확인하세요.", "清理请求日志": "요청 로그 정리", "清理预览数据不完整": "정리 미리보기 데이터가 불완전합니다", "清空两侧原文": "양쪽 원문 삭제", "生产请求": "실제 요청", "生成速度:输出 token ÷ 流式段用时(总用时 − 首响);流式段不足总用时一半时按总用时计": "생성 속도: 출력 토큰 ÷ 스트리밍 시간(소요 시간 − 첫 응답). 스트리밍 시간이 소요 시간의 절반 미만이면 소요 시간으로 계산", "用时": "소요 시간", "用量": "사용량", "确定对{scope}执行「{label}」?
    {summary}
    此操作无法恢复。": "{scope}에 {label} 작업을 실행할까요?
    {summary}
    이 작업은 되돌릴 수 없습니다.", "确定对全部请求日志执行「{label}」?将处理 {count} 条,此操作无法恢复。": "전체 요청 로그에 「{label}」 작업을 실행할까요? {count}건을 처리하며, 이 작업은 복구할 수 없습니다.", "确定按当前筛选执行「{label}」?将处理 {count} 条,此操作无法恢复。": "현재 필터 기준으로 「{label}」 작업을 실행할까요? {count}건을 처리하며, 이 작업은 복구할 수 없습니다.", "确定终止这条正在转发的请求?
    上游连接会立即断开,明细将记为「请求已被手动终止」。": "포워딩 중인 이 요청을 중단할까요?
    업스트림 연결이 즉시 끊어지며, 상세에 「요청이 수동으로 중단됨」으로 기록됩니다.", "等待响应": "응답 대기", "策略 {strategy} · 会话粘性 {sticky}{hit}": "전략 {strategy} · 세션 고정 {sticky}{hit}", "终止": "중단", "终止失败:{error}": "중단 실패: {error}", "终止请求": "요청 중단", "结果": "결과", "缓存读取: - / 命中率: -": "캐시 읽기: - / 적중률: -", "缓存读取: {cache} / 命中率: {rate}": "캐시 읽기: {cache} / 적중률: {rate}", "耗时": "소요 시간", "被跳过:": "건너뜀: ", "识别到 User-Agent,但不属于已知的客户端类型:{ua}": "User-Agent가 있지만 알려진 클라이언트 유형이 아닙니다: {ua}", "识图用量按实际视觉账号单独记录,不混入原模型的回答用量。": "이미지 읽기 사용량은 실제 비전 계정에 별도로 기록하며 원래 모델의 답변 사용량에 합산하지 않습니다.", "详情": "상세", "详情内容": "상세 내용", "请求体": "요청 본문", "请求图片": "요청 이미지", "请求在任何账号接手之前就失败了": "요청이 어떤 계정도 넘겨받기 전에 실패했습니다", "请求头": "요청 헤더", "请求已受理,正在选路、取凭证、建立上游连接": "요청이 접수되었습니다. 경로를 선택하고 자격 증명을 가져와 업스트림 연결을 수립하는 중입니다", "请求日志列表": "요청 로그 목록", "请求日志时间范围": "요청 로그 시간 범위", "请求日志表": "요청 로그 표", "请求正在转发中,用时列显示的是已用时": "요청이 포워딩 중이며, 소요 시간 열에는 경과 시간이 표시됩니다", "请求筛选": "요청 필터", "请求详情": "요청 상세", "读取请求日志失败,详见控制台": "요청 로그를 읽지 못했습니다. 자세한 내용은 콘솔을 확인하세요", "路由回放": "라우팅 리플레이", "转发到上游的模型:{model}": "업스트림으로 포워딩된 모델: {model}", "轮次": "회차", "辅助识图调用": "보조 이미지 읽기 호출", "输入 {input} · 输出 {output} · 总计 {total} · 缓存读 {cache}": "입력 {input} · 출력 {output} · 합계 {total} · 캐시 읽기 {cache}", "这条报文由旧版本截断保存,缺失内容无法恢复": "이 페이로드는 이전 버전에서 잘린 상태로 저장되어 누락된 내용을 복구할 수 없습니다", "这条明细是一次模型测试(人工发起):走的是真实转发链路,但不计入报表统计": "이 상세는 모델 테스트(수동 실행)입니다: 실제 포워딩 경로를 사용하지만 리포트 통계에는 포함되지 않습니다", "这条明细没有记录提供商(旧数据或请求未走到转发)": "이 상세에는 제공자가 기록되지 않았습니다(오래된 데이터이거나 요청이 포워딩 단계까지 가지 못함)", "这条明细没有记录来源客户端(旧数据、模型测试,或请求未带 User-Agent)": "이 기록에는 요청 클라이언트가 없습니다(이전 데이터, 모델 테스트 또는 User-Agent 없는 요청)", "这条记录命中了敏感词,但没有留下命中明细": "이 레코드는 민감 단어에 적중했지만 적중 상세가 남아 있지 않습니다", "这条记录的尝试明细未采集(该字段上线前的旧数据,或请求在转发前就失败)": "이 레코드의 시도 상세가 수집되지 않았습니다(이 필드 도입 전의 오래된 데이터이거나 요청이 포워딩 전에 실패함)", "这条请求没有保存这一段报文": "이 요청은 이 구간의 페이로드를 저장하지 않았습니다", "进入「{phase}」阶段已持续 {time}": "「{phase}」 단계에 진입한 뒤 {time} 경과", "进行中": "처리 중", "进行中…": "처리 중…", "连接中": "연결 중", "速度": "속도", "重试 {n}": "재시도 {n}", "重试中": "재시도 중", "重试次数": "재시도 횟수", "面板内发起的模型调用,消耗额度并记录 Key,不计入生产报表": "패널에서 시작한 모델 호출입니다. 할당량을 사용하고 API Key를 기록하지만 프로덕션 보고서에는 포함하지 않습니다", "预览对话": "대화 미리보기", "预览读取失败": "미리보기 읽기 실패", "预览读取失败:{error}": "미리보기 읽기 실패: {error}", "额外识图用量:{n} Token": "추가 이미지 읽기 사용량: {n} 토큰", "首响 {time}": "첫 응답 {time}", "首响:上游首帧到达的耗时": "첫 응답: 업스트림 첫 프레임 도착까지 걸린 시간", "首响:上游首帧到达的耗时(请求仍在转发中)": "첫 응답: 업스트림 첫 프레임 도착까지 걸린 시간(요청이 아직 포워딩 중)", "首帧已到,上游内容正在下发": "첫 프레임이 도착하여 업스트림 콘텐츠를 내려보내는 중입니다", "(请求仍在转发中)": "(요청이 아직 포워딩 중)", "(账号:{account})": "(계정: {account})", ",{n}毫秒后重试": ", {n}밀리초 후 재시도", ",{n}秒后重试": ", {n}초 후 재시도", "{name}的列设置": "{name} 열 설정", "「{label}」列的对齐": "「{label}」 열 정렬", "中": "가운데", "共 0 条": "총 0건", "共 {total} 条 · 当前第 {start}–{end} 条": "총 {total}건 · 현재 {start}–{end}번째", "共 {total} 条(全部显示)": "총 {total}건(전체 표시)", "列": "열", "列设置": "열 설정", "右": "오른쪽", "对齐": "정렬", "左": "왼쪽", "当前只有一页": "현재 페이지가 한 개뿐입니다", "拖动 ⋮⋮ 调整顺序": "⋮⋮ 드래그로 순서 조정", "按住拖动调整列顺序": "길게 눌러 드래그하면 열 순서를 조정합니다", "显示「{label}」列": "「{label}」 열 표시", "条": "건", "每页": "페이지당", "每页条数": "페이지당 항목 수", "调整「{name}」的列:显示 / 隐藏、顺序、对齐": "「{name}」 열 설정: 표시 / 숨김, 순서, 정렬", "跳至": "이동", "跳转到指定页": "지정한 페이지로 이동", "跳转到第 1–{pageCount} 页": "1–{pageCount}페이지로 이동", "这一列已隐藏": "이 열은 숨겨져 있습니다", "这一列正在显示": "이 열은 표시 중입니다", "页": "페이지", "PID:{pid}": "PID: {pid}", "{label} · {port}": "{label} · {port}", "。已经把这个地址填进其它工具(Claude Code、Cherry Studio 等)的,需要一并改成新地址,否则那些工具会连不上。": ". 이 주소를 다른 도구(Claude Code, Cherry Studio 등)에 이미 입력해 두었다면 새 주소로 함께 변경해야 합니다. 그렇게 하지 않으면 해당 도구들이 연결되지 않습니다.", "与当前端口相同,无需重启": "현재 포트와 같으므로 재시작이 필요 없습니다", "例如 3066": "예: 3066", "即将结束以下进程:": "다음 프로세스를 종료합니다:", "已结束进程 {name}(PID {pid}),端口已释放": "프로세스 {name}(PID {pid}) 종료 완료, 포트가 해제되었습니다", "当前状态": "현재 상태", "当前端口 {port},网关运行正常。": "현재 포트 {port}, 게이트웨이가 정상 작동 중입니다.", "换端口后要改的地方": "포트 변경 후 수정할 곳", "新端口": "새 포트", "更换端口": "포트 변경", "更换网关端口": "게이트웨이 포트 변경", "本地网关正在监听 {url},可直接调用 OpenAI 兼容接口": "로컬 게이트웨이가 {url}에서 대기 중이며, OpenAI 호환 인터페이스를 바로 호출할 수 있습니다", "校验中…": "확인 중…", "正在检查… · {port}": "확인 중… · {port}", "正在确认网关是否已就绪": "게이트웨이가 준비되었는지 확인하는 중", "正在重启…": "재시작 중…", "端口 {port} 上没有查到监听进程,请改用「更换端口」": "포트 {port}에서 수신 중인 프로세스를 찾지 못했습니다. 「포트 변경」을 사용하세요", "端口号": "포트 번호", "端口已改为 {port},正在重启…": "포트를 {port}(으)로 변경했습니다. 재시작 중…", "端口已释放。现在重启程序让网关用这个端口启动?": "포트가 해제되었습니다. 지금 프로그램을 재시작해서 게이트웨이가 이 포트로 시작하도록 할까요?", "端口需在 1024-65535 之间": "포트는 1024-65535 범위여야 합니다", "端口需在 1024-65535 之间。1023 及以下是系统保留范围,普通程序无法监听。": "포트는 1024-65535 범위여야 합니다. 1023 이하는 시스템 예약 범위이므로 일반 프로그램이 수신할 수 없습니다.", "结束中…": "종료 중…", "结束占用端口的进程": "포트를 점유한 프로세스 종료", "结束占用进程": "점유 프로세스 종료", "结束失败:{reason}": "종료 실패: {reason}", "结束它会强制退出该程序未保存的数据。确认继续?": "종료하면 해당 프로그램의 저장되지 않은 데이터가 강제로 사라집니다. 계속할까요?", "结束进程": "프로세스 종료", "网关启动中… · {port}": "게이트웨이 시작 중… · {port}", "网关启动失败": "게이트웨이 시작 실패", "网关地址会变成 ": "게이트웨이 주소가 다음과 같이 바뀝니다: ", "网关运行中 · {port}": "게이트웨이 실행 중 · {port}", "该端口不可用": "이 포트는 사용할 수 없습니다", "路径:{path}": "경로: {path}", "进程名:{name}": "프로세스 이름: {name}", "进程已结束,但端口仍被占用,建议改用「更换端口」": "프로세스는 종료되었지만 포트가 아직 점유 중입니다. 「포트 변경」을 사용하세요", "重启": "재시작", "重启中…": "재시작 중…", "重启失败:{reason}": "재시작 실패: {reason}", "重启程序": "프로그램 재시작", "(未知)": "(알 수 없음)" }); +window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { "无可用账号:{reason}": "사용 가능한 계정 없음: {reason}", "AI 助手": "AI 어시스턴트", "API Key 用量详情": "API Key 사용량 상세", "API Key 统计": "API Key 통계", "API Key(可选)": "API Key(선택)", "API 凭证": "API 인증 정보", "API 方法提交给插件的账号规范化入口;不会用该密钥发起 OAuth 登录。": "API 방식은 플러그인의 계정 정규화 진입점으로 제출됩니다. 해당 키로 OAuth 로그인을 시작하지 않습니다.", "Agent2API · 多提供商本地网关": "Agent2API · 다중 제공자 로컬 게이트웨이", "Agent2API 社区": "Agent2API 커뮤니티", "Codar(科搭)": "Codar", "JSON 格式不正确": "JSON 형식이 올바르지 않습니다", "JoyCode(京东)": "JoyCode (JD)", "Linux (amd64)": "Linux (amd64)", "Linux (arm64)": "Linux (arm64)", "Magpie 官方": "Magpie 공식", "Magpie 官方与社区插件,共用一个按需下载的运行时": "Magpie 공식 및 커뮤니티 플러그인은 필요할 때 다운로드하는 런타임을 공유합니다", "Magpie 官方名单": "Magpie 공식 목록", "Magpie 官方和社区插件均通过兼容方式接入 Agent2API,不保证 100% 可用。": "Magpie 공식 및 커뮤니티 플러그인은 모두 호환 방식으로 Agent2API에 연결되며, 100% 동작을 보장하지 않습니다.", "Magpie 推荐": "Magpie 추천", "Magpie 插件": "Magpie 플러그인", "Magpie 插件安装须知": "Magpie 플러그인 설치 안내", "Magpie 社区": "Magpie 커뮤니티", "Magpie 社区分发源": "Magpie 커뮤니티 배포 소스", "Magpie 脚本插件": "Magpie 스크립트 플러그인", "MiniMax Code 国内/国际": "MiniMax Code 중국/글로벌", "MiniMax Code 的设备码登录、对话、模型目录、余额与每日签到;国内版与国际版可分别启停。": "MiniMax Code의 기기 코드 로그인, 대화, 모델 목록, 잔액 조회 및 매일 체크인. 중국판과 글로벌판을 각각 활성화할 수 있습니다.", "OAuth 登录": "OAuth 로그인", "QQ 群号": "QQ 그룹 번호", "Star 数暂未读取": "Star 수를 아직 불러오지 못했습니다", "Star 更新于 {time}": "Star 수 업데이트: {time}", "Token 用量": "Token 사용량", "WPS 灵犀": "WPS Lingxi", "Windows (ARM64)": "Windows (ARM64)", "Windows (x64)": "Windows (x64)", "macOS (Apple Silicon)": "macOS (Apple Silicon)", "macOS (Intel)": "macOS (Intel)", "npm 包名": "npm 패키지 이름", "npm 包名、GitHub 地址或 magpie:包名": "npm 패키지, GitHub 주소 또는 magpie:패키지명", "npm 包名或 GitHub 地址": "npm 패키지 이름 또는 GitHub 주소", "npm 未发布的包会尝试 Magpie 社区分发源;不会绕过完整性校验或执行安装脚本。": "npm에 없는 패키지는 Magpie 커뮤니티 배포 소스에서 찾습니다. 무결성 검증을 건너뛰거나 설치 스크립트를 실행하지 않습니다.", "{count} 个 Star": "Star {count}개", "{count} 个插件": "플러그인 {count}개", "{count} 家": "공급자 {count}곳", "{count} 家提供商": "공급자 {count}곳", "{count} 家提供商 · 安装于 {time}": "공급자 {count}곳 · {time} 설치", "{key} 需要 true / false / null": "{key}은(는) true / false / null 중 하나여야 합니다", "{key} 需要数字": "{key}은(는) 숫자여야 합니다", "{label}(API)": "{label}(API)", "{label}(OAuth)": "{label}(OAuth)", "{n} 个启用": "{n}개 활성", "{n} 个已限流": "{n}개 속도 제한됨", "{n} 个请求正在转发中,点开「请求日志」查看": "{n}개 요청 포워딩 중, 「요청 로그」에서 확인하세요", "{n} 个账号可用": "{n}개 계정 사용 가능", "{n} 个账号启用": "{n}개 계정 활성", "{n} 条失败请求未读,点开「请求日志」查看": "읽지 않은 실패 요청 {n}건, 「요청 로그」에서 확인하세요", "{n} 条错误日志未读,点开「日志」查看": "읽지 않은 오류 로그 {n}건, 「로그」에서 확인하세요", "{n} 项 · {shown} 显示": "{n}개 · {shown}개 표시", "{size} · 下载后可直接安装,无需跳转浏览器": "{size} · 다운로드 후 바로 설치할 수 있습니다(브라우저로 이동하지 않음)", "{size} · 点击下载后可直接安装,无需跳转浏览器": "{size} · 다운로드 후 바로 설치할 수 있습니다(브라우저로 이동하지 않음)", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "메뉴 {total}개 · 표시 {shown} · 숨김 {hidden} · 그룹 {groups}개", "· 不会改动任何配置": "· 설정을 변경하지 않습니다", "· 每次执行前列改动清单,等你确认": "· 실행 전에 변경 목록을 보여주고 확인을 기다립니다", "—": "—", "“本机”指运行网关的机器,不是打开面板的电脑。远程浏览器也可以发起,但网关本机可能需要安装客户端并已登录;是否可用由网关返回结果决定。": "“로컬”은 패널을 여는 컴퓨터가 아니라 게이트웨이가 실행되는 컴퓨터를 뜻합니다. 원격 브라우저에서도 시작할 수 있지만 게이트웨이 컴퓨터에 클라이언트가 설치되어 있고 로그인되어 있어야 할 수 있습니다. 사용 가능 여부는 게이트웨이 응답으로 결정됩니다.", "✅ GitHub 令牌已保存(加密存储,界面不再显示)": "✅ GitHub 토큰이 저장되었습니다 (암호화되어 저장되며 다시 표시되지 않습니다)", "✅ Token 已刷新": "✅ Token을 갱신했습니다", "✅ 已将账号优先级调整到全局第一位": "✅ 계정 우선순위를 전역 1위로 조정했습니다", "✅ 已清除界面保存的 GitHub 令牌(环境变量若配置过则继续生效)": "✅ 저장된 GitHub 토큰을 삭제했습니다 (환경 변수가 설정되어 있으면 계속 적용됩니다)", "「{name}」匹配到多个账号:{list},请用完整账号名重试": "\"{name}\"이(가) 여러 계정과 일치합니다: {list}. 전체 계정 이름으로 다시 시도하세요.", "「工具全不勾选 → 不注入系统提示词」:想当纯聊天用时,不必再去关上面的开关。": "\"도구를 모두 해제 → 시스템 프롬프트 미주입\": 순수 채팅으로 쓰려면 위 스위치를 끌 필요가 없습니다.", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "\"설정\"은 고정 항목이라 그 그룹을 통째로 숨길 수 없습니다. 다른 메뉴는 개별로 숨길 수 있습니다", "上一页": "이전 페이지", "上次加载记录(非本次故障)": "이전 로드 기록(현재 오류가 아님)", "下一页": "다음 페이지", "下拉刷新": "당겨서 새로고침", "下次自动重试:{time}": "다음 자동 재시도: {time}", "下载与当前平台对应的插件包(zip),点右上角「安装插件包」选中它即可。": "이 플랫폼에 맞는 플러그인 팩(zip)을 내려받은 뒤 오른쪽 위 \"플러그인 팩 설치\"를 눌러 선택하세요.", "不填写(可选)": "입력하지 않음(선택)", "与电脑端一致:每 {n} 分钟": "데스크톱과 동일: {n}분마다", "为 Agent2API 扩展网页提供商,支持智谱清言的模型调用、访客与登录账号、凭证续期、模型目录、积分查询、签到和任务领取。": "Agent2API에 웹 제공업체를 추가하며 Zhipu Qingyan의 모델 호출, 게스트 및 로그인 계정, 인증 정보 갱신, 모델 목록, 포인트 조회, 체크인과 작업 보상 수령을 지원합니다.", "为网关扩展多家 AI 提供商,支持账号登录与导入、模型调用、凭证续期、模型目录、余额查询和签到。具体能力以各提供商的支持情况为准。": "게이트웨이에 여러 AI 공급자를 추가하고 계정 로그인·가져오기, 모델 호출, 자격 증명 갱신, 모델 목록, 잔액 조회와 출석을 제공합니다. 실제 기능은 공급자별 지원 상황에 따릅니다.", "主导航": "기본 탐색", "也可输入 file: 加网关电脑上的插件目录或 tgz 文件绝对路径;本地插件会复制安装,不修改源目录。": "file: 뒤에 게이트웨이 컴퓨터의 플러그인 디렉터리 또는 tgz 파일의 절대 경로를 입력할 수도 있습니다. 로컬 플러그인은 복사하여 설치하며 원본 디렉터리는 변경하지 않습니다.", "书生·端砚": "Intern InkStone", "了解并安装": "이해했습니다, 설치", "仅在该 API 方法需要额外密钥时填写": "이 API 방식에 추가 키가 필요한 경우에만 입력하세요.", "仅安装你信任的 npm 包、GitHub 仓库或 Magpie 社区分发包;完整性校验不等于安全审计。": "신뢰하는 npm 패키지, GitHub 저장소 또는 Magpie 커뮤니티 패키지만 설치하세요. 무결성 검증은 보안 감사가 아닙니다.", "仅安装你信任的 npm 包或 GitHub 仓库;版本与完整性检查不能保证脚本安全。": "신뢰하는 npm 패키지나 GitHub 저장소만 설치하세요. 버전 및 무결성 확인은 스크립트의 안전성을 보장하지 않습니다.", "仅安装你信任的 npm 包;下载校验只能确认文件完整,不能保证脚本安全。": "신뢰하는 npm 패키지만 설치하세요. 다운로드 검증은 파일 무결성만 확인하며 스크립트의 안전성을 보장하지 않습니다.", "仅影响插件更新通道,与主程序独立。开启后可安装 beta 版;已使用 beta 时保持该通道,关闭后只看正式版且不会降级。": "본체와 독립적인 플러그인 업데이트 채널입니다. 켜면 beta 버전을 설치할 수 있습니다. beta 사용 중에는 채널을 유지하며 끄면 정식 버전만 확인하고 다운그레이드하지 않습니다.", "仅自动更新已安装、已启用且通过可信签名校验的社区插件。新插件需手动安装,卸载后不会自动重新安装;未签名插件需手动更新。": "설치되어 활성화되어 있고 신뢰할 수 있는 서명 검증을 통과한 커뮤니티 플러그인만 자동 업데이트합니다. 새 플러그인은 직접 설치해야 하며 삭제한 플러그인은 자동으로 다시 설치되지 않습니다. 서명되지 않은 플러그인은 직접 업데이트해야 합니다.", "从 GitHub 官方源下载固定提交。仓库根目录须有可直接运行的插件入口;不会执行构建脚本或安装依赖。": "GitHub 공식 소스에서 고정된 커밋을 다운로드합니다. 저장소 루트에 바로 실행할 수 있는 플러그인 진입점이 있어야 합니다. 빌드 스크립트를 실행하거나 의존성을 설치하지 않습니다.", "从 GitHub 官方源下载固定提交。仓库须包含可运行的提供商入口;安装运行依赖,但不执行构建和安装脚本。": "지정된 커밋을 GitHub에서 직접 다운로드합니다. 저장소에 실행 가능한 제공자 진입점이 있어야 합니다. 런타임 의존성은 설치하지만 빌드 및 설치 스크립트는 실행하지 않습니다.", "从 Magpie 社区官方分发目录下载,核验 SHA-512;更新与重装继续使用此来源。": "Magpie 커뮤니티 공식 배포 경로에서 다운로드하고 SHA-512를 검증합니다. 업데이트와 재설치에도 이 소스를 사용합니다.", "从 npm / GitHub / Magpie 安装": "npm / GitHub / Magpie에서 설치", "从 npm / GitHub 安装": "npm / GitHub에서 설치", "从 npm 安装": "npm에서 설치", "从文件安装…": "파일에서 설치…", "从网关本机客户端导入": "게이트웨이 컴퓨터의 클라이언트에서 가져오기", "仓库没有已提交的可加载入口,请等待作者发布构建产物": "저장소에 불러올 수 있는 진입점이 없습니다. 작성자가 빌드를 게시할 때까지 기다려 주세요.", "代价": "비용", "令牌已生效,但写入磁盘失败(重启后会丢失)": "토큰은 적용되었지만 디스크에 저장하지 못했습니다 (재시작하면 사라집니다)", "以下设置属于所连接网关,不是手机本地设置。": "다음 설정은 연결된 게이트웨이의 설정이며 휴대폰의 로컬 설정이 아닙니다.", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "그룹·순서·표시 설정을 기본값으로 되돌립니다. 직접 만든 그룹은 삭제됩니다(메뉴는 유지됩니다).", "会话内": "세션 내", "会话已过期。重新登录后会自动回到手机端。": "세션이 만료되었습니다. 다시 로그인하면 모바일 화면으로 자동 복귀합니다.", "会话粘性": "세션 고정", "作为 system 消息注入给助手": "system 메시지로 어시스턴트에 주입", "作者尚未提供插件介绍。": "작성자가 플러그인 설명을 제공하지 않았습니다.", "使用 Cloudflare 账号 ID 与 API Token,接入 Workers AI 对话和在线模型目录。": "Cloudflare 계정 ID와 API Token으로 Workers AI 채팅 및 온라인 모델 목록에 연결합니다.", "使用 Warp 终端的登录态,接入账号可用模型并查询 AI 请求额度。": "Warp 터미널 로그인 정보로 계정에서 사용할 수 있는 모델에 연결하고 AI 요청 한도를 확인합니다.", "使用你在网关电脑上安装并登录的 agy CLI,通过 ACP 协议接入模型、工具调用和额度查询;与依赖 Antigravity IDE 的 Antigravity ACP 插件不同。": "게이트웨이 컴퓨터에 설치하고 로그인한 agy CLI를 사용해 ACP로 모델, 도구 호출, 할당량 조회에 연결합니다. Antigravity IDE에 의존하는 Antigravity ACP 플러그인과는 다릅니다.", "使用网关本机 gcloud / ADC 登录,接入 Vertex AI 模型并查询 Google Cloud 促销赠金。": "게이트웨이 컴퓨터의 gcloud / ADC 인증 정보로 Vertex AI 모델에 연결하고 Google Cloud 프로모션 크레딧을 조회합니다.", "例如:家里、公司": "예: 집, 회사", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "사이드바 레이아웃 모듈이 로드되지 않았습니다(ui/sidebar-layout.js는 app.js보다 먼저 포함되어야 합니다).", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "사이드바에 표시되는 메뉴가 없습니다. 설정 → 표시 → 사이드바 메뉴에서 필요한 항목을 켜세요.", "侧边栏菜单": "사이드바 메뉴", "保存失败:{error}": "저장 실패: {error}", "保存对话模型失败:{message}": "대화 모델 저장 실패: {message}", "保存并继续": "저장하고 계속", "修改高级参数会等待在途任务结束后重新加载插件;专属开关实时生效。": "고급 설정을 변경하면 진행 중인 작업이 끝난 후 플러그인을 다시 불러옵니다. 제공자별 스위치는 즉시 적용됩니다.", "候选队列": "후보 큐", "停止": "중지", "停用": "비활성", "允许的操作": "허용되는 작업", "允许签到及附带任务": "체크인 및 부가 작업 허용", "先添加一台网关": "먼저 게이트웨이를 추가하세요", "先选择插件声明的账号登录方式,再填写必需字段。OAuth 由共享登录桥负责等待、取消和错误;API 凭证通过账号规范化入口添加。": "플러그인이 선언한 계정 로그인 방식을 선택한 뒤 필수 필드를 입력하세요. OAuth 대기, 취소 및 오류는 공용 로그인 브리지가 처리하며 API 인증 정보는 계정 정규화 진입점을 통해 추가됩니다.", "免鉴权调用": "인증 없는 호출", "全不选": "모두 선택 해제", "全部 API Key": "모든 API Key", "全部客户端": "모든 클라이언트", "全部更新": "전체 업데이트", "共 {n} 条记录": "총 {n}건", "共享登录桥不可用,请重新打开面板": "공용 로그인 브리지를 사용할 수 없습니다. 패널을 다시 여세요.", "共享运行环境尚未就绪,本插件没有明确的加载失败结果。": "공유 실행 환경이 아직 준비되지 않았습니다. 이 플러그인 자체의 로드 실패는 확인되지 않았습니다.", "关": "끄기", "关闭菜单": "메뉴 닫기", "兼容 OpenCode v1 / Magpie 提供商插件及其运行依赖;不加载界面、独立工具或 Pi 扩展。": "OpenCode v1 / Magpie 제공자 플러그인과 런타임 의존성을 지원합니다. UI, 독립 도구 또는 Pi 확장은 불러오지 않습니다.", "准备运行环境": "실행 환경 준비 중", "凭证 JSON 含有不允许的字段:{key}": "인증 정보 JSON에 허용되지 않는 필드가 있습니다: {key}", "凭证 JSON 嵌套过深,请只粘贴该插件要求的凭证对象": "인증 정보 JSON의 중첩이 너무 깊습니다. 이 플러그인이 요구하는 인증 정보 객체만 붙여넣으세요.", "凭证 JSON 必须是非空对象,不能是数组或字符串": "인증 정보 JSON은 비어 있지 않은 객체여야 하며 배열이나 문자열일 수 없습니다.", "凭证 JSON 格式不正确,请检查括号和引号": "인증 정보 JSON 형식이 올바르지 않습니다. 괄호와 따옴표를 확인하세요.", "凭证 JSON(必填)": "인증 정보 JSON(필수)", "凭证只在提交时发送到网关;备注名和代理请使用下面的字段,解析错误不会回显凭证内容。": "인증 정보는 제출할 때만 게이트웨이로 전송됩니다. 표시 이름과 프록시는 아래 필드에 입력하세요. 파싱 오류에 인증 정보 내용이 표시되지 않습니다.", "分布来自保留的日报来源明细;无法恢复的历史不反推客户端或模型。": "분포는 보관된 일별 출처 집계에서 가져오며 복구할 수 없는 기록의 클라이언트나 모델은 추정하지 않습니다.", "分支、标签或提交(留空使用默认分支)": "브랜치, 태그 또는 커밋(비워 두면 기본 브랜치)", "分组名": "그룹 이름", "分组名,例如「常用」": "그룹 이름, 예: \"즐겨찾기\"", "切换菜单": "메뉴 전환", "列表 = 模型管理页里所有已启用的模型。助手走本地网关发起对话,消耗所选账号的额度。": "목록은 \"모델 관리\" 페이지에서 활성화된 모든 모델입니다. 어시스턴트는 로컬 게이트웨이를 통해 대화하며 선택한 계정의 할당량을 소모합니다.", "创建并进入": "생성 후 시작", "创建管理员账号": "관리자 계정 만들기", "初始化已完成,正在等待校验和登记。": "초기화가 완료되어 검증 및 등록을 기다리고 있습니다.", "初始化超时": "초기화 시간 초과", "删除 {n} 条": "{n}건 삭제", "删除分组": "그룹 삭제", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "그룹 \"{name}\"을(를) 삭제할까요? 메뉴 {n}개는 \"{target}\"(으)로 이동하며 사라지지 않습니다.", "删除空分组「{name}」?": "빈 그룹 \"{name}\"을(를) 삭제할까요?", "删除这个分组(组内菜单移到第一组)": "이 그룹 삭제(메뉴는 첫 그룹으로 이동)", "刷新清单": "목록 새로고침", "刷新状态": "상태 새로고침", "加入插件 beta 版": "플러그인 beta 참여", "加载中": "불러오는 중", "加载助手设置失败:{message}": "어시스턴트 설정 불러오기 실패: {message}", "加载失败": "로드 실패", "加载失败:{error}": "불러오기 실패: {error}", "加载更多": "더 불러오기", "加载更早的记录": "이전 기록 불러오기", "加载状态": "로드 상태", "加载诊断": "로드 진단", "助手": "어시스턴트", "助手自己用哪个模型生成回复": "어시스턴트가 응답 생성에 사용할 모델", "助手设置读取失败,工具可能已过时。": "어시스턴트 설정 읽기에 실패했습니다. 도구 목록이 오래되었을 수 있습니다.", "助手走本地网关,消耗所选账号的额度": "어시스턴트는 로컬 게이트웨이를 거치며 선택한 계정의 할당량을 소모합니다", "勾选即注入该工具;不勾选 = 助手看不到它": "체크하면 해당 도구가 주입됩니다. 체크 해제 시 어시스턴트가 볼 수 없습니다", "十几 MB": "십여 MB", "升级会重新下载并校验插件包(约 {size}),装完立即生效,账号数据不受影响。": "업그레이드하면 플러그인 팩을 다시 내려받아 검증합니다(약 {size}). 설치 즉시 적용되며 계정 데이터는 영향받지 않습니다.", "协议版本": "프로토콜 버전", "单签": "개별", "占比": "비율", "即将就绪": "곧 준비 완료", "卸载": "제거", "卸载插件": "플러그인 제거", "卸载插件包": "플러그인 팩 제거", "历史数据整理中": "기록 데이터 정리 중", "历史明细不完整,输入、输出与缓存读数无法恢复": "이전 상세 기록이 불완전하여 입력, 출력 및 캐시 수치를 복구할 수 없습니다.", "历史未记录 Key": "이전 Key 미기록", "原生插件包,来自项目插件仓库": "프로젝트 플러그인 저장소의 네이티브 패키지", "原生辅助授权": "네이티브 도우미 권한", "原生辅助授权已失效或暂不可用,请重新选择并确认。": "네이티브 도우미 권한이 더 이상 유효하지 않거나 일시적으로 사용할 수 없습니다. 다시 선택하고 확인하세요.", "原生辅助程序不受 Wasm 沙箱限制,只授权你信任的已安装插件。辅助程序更新后需要重新确认。": "네이티브 도우미에는 Wasm 샌드박스 제한이 적용되지 않습니다. 신뢰하는 설치된 플러그인만 허용하세요. 도우미 업데이트 후 다시 확인해야 합니다.", "去下载": "다운로드", "去登录": "로그인", "参数不完整(需要 account / enabled)": "매개변수가 불완전합니다 (account / enabled 필요)", "参数不完整(需要 account / position)": "매개변수가 불완전합니다 (account / position 필요)", "参数不完整(需要 provider / id / alias)": "매개변수가 불완전합니다 (provider / id / alias 필요)", "参数不完整(需要 provider / id / capabilities)": "매개변수가 불완전합니다 (provider / id / capabilities 필요)", "参数不完整(需要 provider / id / enabled)": "매개변수가 불완전합니다 (provider / id / enabled 필요)", "参数不完整(需要 provider / position)": "매개변수가 불완전합니다 (provider / position 필요)", "发现新版本 {latest}(当前 {current}),点开「设置 - 软件更新」可查看更新日志并下载": "새 버전 {latest} 발견 (현재 {current}), 「설정 - 소프트웨어 업데이트」에서 업데이트 노트를 보고 다운로드할 수 있습니다", "发现新版本 {version}": "새 버전 {version}이(가) 있습니다", "发送": "전송", "取消日期筛选": "날짜 필터 해제", "受影响的来源将在 {time} 后自动重试": "영향을 받은 소스는 {time} 이후 자동으로 재시도합니다", "只改映射名,不动上游模型 ID;映射立即生效(新对话即可用)。": "매핑 이름만 바뀌고 업스트림 모델 ID는 그대로입니다. 매핑은 즉시 적용됩니다(새 대화에서 바로 사용 가능).", "只注入工具定义": "도구 정의만 주입", "只统计已结束的生产请求;失败请求仍计入请求数,Token 用量沿用现有成功请求口径。": "종료된 실제 요청만 집계합니다. 실패 요청도 요청 수에 포함하며 Token 사용량은 기존 성공 요청 기준을 따릅니다.", "只读": "읽기 전용", "只读工具": "읽기 전용 도구", "可以点击「刷新」读取插件仓库,或从本地 zip 安装插件。": "새로고침으로 플러그인 목록을 읽거나 로컬 zip을 설치할 수 있습니다.", "可填 {min}–{max} 秒,关闭后保留间隔": "{min}–{max}초로 설정하세요. 꺼도 간격은 유지됩니다", "可更新": "업데이트 있음", "可更新 v{version}": "v{version} 업데이트 가능", "可更新到 v{version}": "v{version} 업데이트 가능", "可用": "개 사용 가능", "可选,留空使用账号昵称": "선택 사항. 비워 두면 계정 닉네임 사용", "各家提供商的转发与账号实现都在插件包里,不随本软件发布。装好插件后,模型转发、添加账号、签到与余额查询才会生效。": "각 제공자(provider)의 포워딩과 계정 처리는 플러그인 팩에 들어 있으며 본 앱에는 포함되지 않습니다. 플러그인을 설치해야 모델 포워딩, 계정 추가, 출석 체크, 잔액 조회가 동작합니다.", "后台只读取状态,不会自动弹出验证码;验证结果一次性使用,短时间内过期。": "백그라운드에서는 상태만 읽으며 인증 창을 자동으로 띄우지 않습니다. 인증 토큰은 한 번만 사용할 수 있으며 짧은 시간 후 만료됩니다.", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "고정 항목 \"설정\"이 있어 그룹 전체를 숨길 수 없습니다(다른 메뉴는 개별로 숨길 수 있습니다)", "启动较慢,仍在加载;尚未收到失败结果。": "시작이 지연되고 있지만 아직 로드 중입니다. 실패 결과는 보고되지 않았습니다.", "四种组合的实际效果": "네 가지 조합의 실제 효과", "回复由 {model} 生成 · 走本地网关": "응답 생성: {model} · 로컬 게이트웨이 경유", "固定": "고정", "在 GitHub 上创建令牌(无需勾选任何权限)": "GitHub에서 토큰 만들기 (권한 선택 불필요)", "填写账号登录所需信息并发起授权;等待、取消与失败原因由共享登录桥处理,设备码和操作指引会显示在上方。": "계정 로그인에 필요한 정보를 입력하고 인증을 시작하세요. 대기, 취소 및 실패 사유는 공용 로그인 브리지가 처리하며 기기 코드와 안내는 위에 표시됩니다.", "备注名(可选)": "표시 이름 (선택)", "复制失败,请手动选择复制": "복사에 실패했습니다. 직접 선택해 복사하세요", "复制订阅链接": "구독 링크 복사", "失败 · {status}": "실패 · {status}", "失败退避": "실패 백오프", "奖励 {bonus}": "보너스 {bonus}", "套餐 {plan}": "플랜 {plan}", "套餐池人机验证": "Start Plan 사람 인증", "套餐池请求需要验证,请主动开始验证后重试请求": "Start Plan 요청에 인증이 필요합니다. 직접 인증을 시작한 후 요청을 다시 시도하세요.", "安装": "설치", "安装 {name}": "{name} 설치", "安装与更新插件时访问 GitHub 用。与「设置 → 更新 → 更新设置」里的同一项互通,填一次即可。不填也能用,只是匿名请求限额较低(60 次/小时)。": "플러그인을 설치하고 업데이트할 때 GitHub에 접근하는 데 사용됩니다. \"설정 → 업데이트 → 업데이트 설정\"과 같은 항목이므로 한 번만 입력하면 됩니다. 입력하지 않아도 사용할 수 있지만 익명 요청 한도가 낮습니다(시간당 60회).", "安装于 {time}": "{time}에 설치", "安装包已就绪,点「安装」即可完成更新": "설치 패키지가 준비되었습니다. 「설치」를 누르면 업데이트가 완료됩니다", "安装插件包": "플러그인 팩 설치", "安装时间": "설치 시각", "安装脚本插件": "스크립트 플러그인 설치", "完成时间:{time}": "완료 시간: {time}", "官方": "공식", "官方与推荐来自 Magpie 官方名单;第三方来自 GitHub 的 magpie-plugin 标签,不代表官方推荐。": "공식 및 추천 플러그인은 Magpie 공식 목록을 따릅니다. 서드파티는 GitHub의 magpie-plugin 주제로 검색되며 공식 추천을 의미하지 않습니다.", "官方签名:包内容与发布者签的完全一致,未被改过": "공식 서명: 팩 내용이 게시자가 서명한 것과 완전히 일치하며 변조되지 않았습니다", "定时": "예약", "定时任务": "예약 작업", "实际注入": "실제 주입 내용", "客户端分布": "클라이언트별 분포", "客户端统计": "클라이언트 통계", "宿主错误": "호스트 오류", "对话": "대화", "对话模型": "대화 모델", "对话模型已切换": "대화 모델이 전환되었습니다", "将修改 {model} 的 {n} 项能力:": "{model}의 기능 {n}개를 변경합니다:", "将修改 {n} 个模型的启停状态:": "모델 {n}개의 활성화 상태를 변경합니다:", "将修改 {n} 个账号的启用状态(其中禁用 {k} 个):": "계정 {n}개의 활성화 상태를 변경합니다 (그중 {k}개 비활성화):", "将对 {model} 发起一次真实请求:": "{model}에 실제 요청을 한 번 보냅니다:", "将执行 {label}。": "{label}을(를) 실행합니다.", "将把「{provider}」整组移到第 {position} 顺位:": "\"{provider}\" 그룹 전체를 {position}번째 순위로 이동합니다:", "将把账号「{account}」移到第 {position} 顺位:": "계정 \"{account}\"을(를) {position}번째 순위로 이동합니다:", "将改动 {n} 条映射({parts}):": "매핑 {n}건을 변경합니다 ({parts}):", "小米 MiMo": "Xiaomi MiMo", "尚未取得插件清单": "플러그인 목록을 아직 불러오지 않았습니다", "尚未检查更新": "아직 업데이트를 확인하지 않음", "尚未登录": "아직 로그인하지 않음", "已下载": "다운로드됨", "已下载,待安装": "다운로드 완료, 설치 대기 중", "已修改 {n} 个模型": "모델 {n}개를 변경했습니다", "已修改 {n} 个账号": "계정 {n}개를 변경했습니다", "已修改 {n} 项能力": "기능 {n}개를 변경했습니다", "已停止这次回答。": "이 답변을 중지했습니다.", "已全部取消勾选": "모두 선택 해제했습니다", "已关闭自动检查": "자동 확인을 껐습니다", "已删除分组「{name}」": "그룹 \"{name}\"을(를) 삭제했습니다", "已加载": "로드됨", "已勾选 {n} / {total}": "{n} / {total} 선택됨", "已勾选「{label}」": "\"{label}\" 선택됨", "已勾选工具": "도구 선택됨", "已取消「{label}」": "\"{label}\" 선택 해제됨", "已启动安装器": "설치 프로그램을 실행했습니다", "已填写(粘贴新令牌可覆盖)": "입력됨 (새 토큰을 붙여넣으면 덮어씁니다)", "已复制:{text}": "복사됨: {text}", "已开启自动检查": "자동 확인을 켰습니다", "已恢复推荐勾选": "권장 선택으로 복원했습니다", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "기본 그룹으로 복원했습니다: 개요 / 전달 경로 / 진단 / 시스템", "已改动 {n} 条映射": "매핑 {n}건을 변경했습니다", "已新建分组「{name}」,点组头的 + 把菜单移进来": "그룹 \"{name}\"을(를) 만들었습니다. 머리의 +로 메뉴를 가져오세요", "已是最新版本": "최신 버전입니다", "已显示 {shown} / {total} 个提供商插件": "제공자 플러그인 {total}개 중 {shown}개 표시", "已更新 {count} 个插件": "플러그인 {count}개를 업데이트했습니다", "已更新 {done} 个插件,{failed} 个失败:{error}": "플러그인 {done}개를 업데이트했고 {failed}개가 실패했습니다: {error}", "已注入 {n} / {total} 个工具 · 系统提示词:{state}": "도구 {n} / {total}개 주입 · 시스템 프롬프트: {state}", "已添加的服务器": "추가된 서버", "已由其他插件接管,请到对应插件中管理。": "이 공급자는 다른 플러그인에서 관리합니다. 해당 플러그인의 설정에서 관리하세요.", "已登录": "로그인됨", "已离线 · 显示的是缓存内容": "오프라인 — 캐시된 내용을 표시 중", "已移到第 {n} 顺位": "{n}번째 순위로 이동했습니다", "已签名": "서명됨", "开": "켜기", "开关和选项即时保存;输入项请点击对应的「保存」按钮。": "스위치와 선택 항목은 즉시 저장됩니다. 입력 항목은 해당 저장 버튼을 눌러 주세요.", "开始时间:{time}": "시작 시간: {time}", "开始验证": "인증 시작", "当前": "현재", "当前一个工具都没勾选,助手只能纯聊天。去「设置 → AI 助手 → 工具」里勾上需要的工具。": "선택된 도구가 없어 어시스턴트는 순수 채팅만 가능합니다. \"설정 → AI 어시스턴트 → 도구\"에서 필요한 도구를 선택하세요.", "当前兼容无运行时 npm 依赖的提供商插件;不加载 Magpie 界面、Matrix 工具或 Pi 扩展。": "현재 런타임 npm 의존성이 없는 제공자 플러그인을 지원합니다. Magpie 화면, Matrix 도구 및 Pi 확장은 불러오지 않습니다.", "当前平台": "현재 플랫폼", "当前平台暂无包": "이 플랫폼용 패키지가 없습니다", "当前插件未申请原生辅助能力": "네이티브 도우미를 요청한 플러그인이 없습니다", "当前暂不可安装": "현재 설치할 수 없습니다", "当前模型请求免人机验证": "현재 모델 요청에는 사람 인증이 필요하지 않습니다.", "当前版本 {current},最低可用版本 {minimum}。": "현재 버전은 {current}이며 최소 지원 버전은 {minimum}입니다.", "当前版本 {version}": "현재 버전 {version}", "当前网关要求插件版本不低于 v{version},补齐前暂不加载。": "이 게이트웨이에는 플러그인 v{version} 이상이 필요합니다. 업데이트 전에는 로드하지 않습니다.", "当前:已关闭(助手不收到任何系统提示词,工具定义照发)": "현재: 꺼짐 (어시스턴트는 시스템 프롬프트를 받지 않지만 도구 정의는 전송됩니다)", "当前:已开启 · 使用内置默认提示词(还没自定义)": "현재: 켜짐 · 내장 기본 프롬프트 사용 중 (아직 사용자 지정 안 함)", "当前:已开启 · 自定义内容 {n} 字": "현재: 켜짐 · 사용자 지정 내용 {n}자", "影响转发": "포워딩 영향", "待就绪": "준비 대기", "待确认": "확인 대기", "总剩余 {total}": "총 잔여 {total}", "恢复上游原值": "업스트림 원래 값으로 복원", "恢复推荐": "권장 복원", "恢复默认侧边栏": "사이드바 기본값 복원", "成功 / 失败": "성공 / 실패", "成功领取": "수령 완료", "我会在动手前把改动列给你确认。": "변경 사항은 실행 전에 목록으로 보여드리고 확인을 받습니다.", "我信任所选辅助程序并允许它执行声明的本机操作": "선택한 도우미를 신뢰하며 선언된 로컬 작업을 허용합니다", "我信任此插件来源,并允许它在网关电脑上运行。": "이 플러그인 출처를 신뢰하며 게이트웨이 컴퓨터에서 실행하도록 허용합니다.", "所有菜单都已在这一组": "모든 메뉴가 이미 이 그룹에 있습니다", "手动凭证 JSON": "인증 정보 JSON 수동 입력", "手动凭证 JSON(兼容入口)": "인증 정보 JSON 수동 입력(호환용)", "执行": "실행", "执行时刻": "실행 시각", "把菜单移入 {name}": "메뉴를 {name}(으)로 이동", "把菜单移入「{name}」": "메뉴를 \"{name}\"(으)로 이동", "报表": "리포트", "拖动分组 {name}": "그룹 {name} 끌기", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "왼쪽 ⠿를 끌어 순서를 바꾸세요(메뉴는 그룹 간 이동 가능). 스위치로 표시/숨김, 그룹 이름을 클릭해 이름 변경, 그룹 머리의 +로 다른 메뉴를 가져오기, 눈 버튼으로 그룹 전체 숨기기. 변경은 즉시 적용·저장되며 왼쪽 사이드바가 결과입니다. 키보드: 핸들에 포커스 후 Alt+↑ / ↓.", "拖动菜单 {name}": "메뉴 {name} 끌기", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "끌어서 그룹 순서 변경(Alt+↑ / ↓ 도 가능)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "끌어서 순서 변경, 그룹 간 이동 가능(Alt+↑ / ↓ 도 가능)", "按 API Key 筛选": "API Key로 필터링", "按 Token": "Token 순", "按天请求趋势": "일별 요청 추이", "按客户端筛选": "클라이언트로 필터링", "按访问网关的 API Key 统计生产请求,不包含助手对话和模型测试。停用、删除 Key 不会删除历史用量;密钥值不会进入报表。历史没有记录身份的请求单列,不能追溯到某把 Key。": "게이트웨이 API Key별로 실제 요청을 집계하며 어시스턴트 대화와 모델 테스트는 제외합니다. Key를 비활성화하거나 삭제해도 이전 사용량은 유지됩니다. 비밀키 값은 보고서에 포함하지 않습니다. Key가 기록되지 않은 이전 요청은 별도로 표시하며 특정 Key로 추정하지 않습니다.", "按请求 User-Agent 识别的客户端类型统计,不代表设备或用户数。“其它”表示有 User-Agent 但未匹配已知类型;“未记录客户端”表示旧数据或请求未带 User-Agent。": "요청 User-Agent에서 식별한 클라이언트 유형별로 집계하며 기기 수나 사용자 수가 아닙니다. 기타는 User-Agent가 있지만 알려진 유형과 일치하지 않는 경우이고, 클라이언트 미기록은 이전 데이터 또는 User-Agent가 없는 경우입니다.", "按请求数": "요청 수순", "按间隔检查插件版本,在对应卡片显示更新;关闭后仍可手动检查。自动更新或自动下载开启时也使用此间隔。": "이 간격으로 플러그인 버전을 확인하고 카드에 업데이트를 표시합니다. 꺼도 수동 확인은 가능합니다. 자동 업데이트와 다운로드도 이 간격을 사용합니다.", "按需下载": "필요할 때 다운로드", "按需安装插件,为 AI 路由网关扩展提供商能力。插件独立于主程序更新,下载完成后自动校验并安装。": "필요한 플러그인을 설치해 AI 라우팅 게이트웨이를 확장하세요. 본체와 별도로 업데이트되며 다운로드 후 자동으로 검증하고 설치합니다.", "换一组筛选条件,或把来源和状态都切回「全部」。": "필터 조건을 바꾸거나 소스와 상태를 모두 「전체」로 되돌리세요.", "授权": "허용", "排序已保存,但列表刷新失败:{message}": "순서는 저장되었지만 목록을 새로고침하지 못했습니다: {message}", "排序未保存:{message}": "순서를 저장하지 못했습니다: {message}", "排序设置迁移失败:{message}": "정렬 설정을 이전하지 못했습니다: {message}", "排第 1 的接走所有请求,直到它不能答(限流 / 故障 / 额度尽)才轮到下一位 —— 就是「从上往下」的现状行为。": "1 번째 계정이 응답하지 못하게 될 때(레이트 리밋 / 장애 / 잔여량 소진)까지 모든 요청을 처리하고 그다음 순서로 넘어갑니다 — 기존의 \"위에서 아래로\" 방식 그대로입니다.", "接入 Agnes AI 国际版:浏览器登录、在线模型目录、套餐用量与美元余额;与 Agnes Code 桌面版独立。": "Agnes AI 글로벌 버전 연결: 브라우저 로그인, 온라인 모델 목록, 요금제 사용량 및 미국 달러 잔액. Agnes Code 데스크톱 제품과는 별개입니다.", "接入 Agnes Code:本机登录态或 accessToken、模型目录、积分与登录奖励观测。": "Agnes Code 연결: 로컬 로그인 또는 accessToken, 모델 목록, 포인트 및 로그인 보상 확인.", "接入 Codar(科搭):本机凭据、模型目录、积分与滚动窗口签到。": "Codar 연결: 로컬 인증 정보, 모델 목록, 포인트 및 이동 시간대 출석.", "接入 DeepAI Code:网页登录、本机凭据、模型目录、额度查询与签到。": "DeepAI Code 연결: 웹 로그인, 로컬 인증 정보, 모델 목록, 할당량 조회 및 출석.", "接入 JoyCode(京东):网页登录、企业租户、模型目录与额度明细。": "JoyCode (JD) 연결: 웹 로그인, 기업 테넌트, 모델 목록 및 할당량 상세.", "接入 WPS 灵犀:网页登录、客户端导入、Cookie、模型目录与智点;签到及附带任务默认允许。": "WPS Lingxi 연결: 웹 로그인, 클라이언트 가져오기, Cookie, 모델 목록 및 포인트. 체크인 및 부가 작업은 기본적으로 허용됩니다.", "接入中国移动云 MClaw:浏览器登录、在线模型目录、aitokens 额度与凭证续期。": "China Mobile Cloud MClaw 연결: 브라우저 로그인, 온라인 모델 목록, aitokens 한도 및 인증 정보 갱신.", "接入书生·端砚墨点计划:浏览器登录、API Key、模型目录与墨点额度窗口。": "Intern InkStone 포인트 요금제 연결: 브라우저 로그인, API Key, 모델 목록 및 기간별 포인트 한도.", "接口不兼容": "인터페이스 호환 불가", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "사이드바에 표시할 메뉴, 순서, 그룹을 설정합니다. 숨김은 탐색 표시에만 영향을 주며 접근 권한을 회수하지 않습니다. 숨긴 페이지도 주소로 직접 열 수 있습니다.", "提供商启停": "공급자 활성화 설정", "提供商增强": "공급자 확장", "提供商设置": "제공자 설정", "提示词": "프롬프트", "提示词开关": "프롬프트 스위치", "插件": "플러그인", "插件与当前网关的公共接口不兼容,暂未加载。": "플러그인이 현재 게이트웨이의 공개 인터페이스와 호환되지 않아 로드되지 않았습니다.", "插件仓库": "플러그인 저장소", "插件任务": "플러그인 작업", "插件包与主程序分开安装、分开升级。卸载插件后账号数据仍然保留,重新装回即可继续使用;仅该包提供的转发与添加账号需要插件,本体订阅不受影响。": "플러그인 팩은 앱과 별도로 설치하고 업데이트합니다. 제거해도 계정 데이터는 유지되며 다시 설치하면 계속 사용할 수 있습니다. 해당 팩이 제공하는 전달 및 계정 추가 기능만 플러그인이 필요하며 본체 구독에는 영향이 없습니다.", "插件包与主程序分开安装、分开升级。卸载插件后账号数据仍然保留,重新装回即可继续使用;但转发与添加账号需要插件在位。": "플러그인 팩은 앱과 별도로 설치·업그레이드됩니다. 제거해도 계정 데이터는 남아 있으며 다시 설치하면 그대로 사용할 수 있습니다. 다만 포워딩과 계정 추가에는 플러그인이 필요합니다.", "插件包大小不能超过 {n} MiB": "플러그인 패키지 크기는 {n} MiB를 초과할 수 없습니다.", "插件包已卸载": "플러그인 팩을 제거했습니다", "插件包已安装": "플러그인 팩을 설치했습니다", "插件包已安装到 v{version}": "플러그인 v{version} 설치 완료", "插件包已更新到 v{version}": "플러그인 팩을 v{version}(으)로 업데이트했습니다", "插件包的可执行文件不在磁盘上(可能被手工删除或移动),请重新安装。": "플러그인 팩 실행 파일이 디스크에 없습니다(직접 삭제하거나 옮겼을 수 있습니다). 다시 설치하세요.", "插件参数必须是 JSON 对象": "플러그인 설정은 JSON 객체여야 합니다", "插件发布信息读取失败,请稍后刷新": "플러그인 릴리스 정보를 불러오지 못했습니다. 나중에 새로고침해 주세요.", "插件只声明了短信登录,但没有下发可用的动态表单;此界面不会猜测短信接口": "플러그인이 SMS 로그인만 선언하고 사용 가능한 동적 양식을 제공하지 않았습니다. 이 화면은 SMS API를 추측하지 않습니다.", "插件尚未声明有效版本,暂时无法安装": "플러그인에 유효한 버전이 지정되지 않아 아직 설치할 수 없습니다.", "插件尚未提供可下载的发布包": "이 플러그인은 아직 다운로드할 수 있는 릴리스를 제공하지 않습니다.", "插件已就绪,账号列表将自动同步。": "플러그인이 준비되었습니다. 계정 목록이 자동으로 동기화됩니다.", "插件更新未完成": "플러그인 업데이트가 완료되지 않았습니다", "插件未启用或已不再申请此权限;已有授权仍可撤销。": "플러그인이 비활성화되었거나 이 권한을 더 이상 요청하지 않습니다. 기존 권한은 취소할 수 있습니다.", "插件未实现 auth.methods(501),且没有可用的旧版登录声明;仅保留需要插件确认的手动凭证 JSON 入口": "플러그인이 auth.methods를 구현하지 않았고(501) 사용 가능한 이전 버전 로그인 선언도 없습니다. 플러그인 확인이 필요한 인증 정보 JSON 수동 입력 항목만 유지됩니다.", "插件未实现 auth.methods(501);以下入口仅依据旧版登录声明显示": "플러그인이 auth.methods를 구현하지 않았습니다(501). 아래 항목은 이전 버전 로그인 선언만을 바탕으로 표시됩니다.", "插件没有声明可用的账号登录方式,请更新插件或联系插件作者": "플러그인이 사용 가능한 계정 로그인 방식을 선언하지 않았습니다. 플러그인을 업데이트하거나 작성자에게 문의하세요.", "插件清单暂未完整读取": "플러그인 목록을 완전히 불러오지 못했습니다", "插件版本(留空使用 latest)": "플러그인 버전 (비워 두면 latest)", "插件状态已变更,但账号列表同步失败。请回到账号页点击「刷新」重试。": "플러그인 상태는 변경되었지만 계정 목록을 동기화하지 못했습니다. 계정 페이지에서 \"새로고침\"을 눌러 다시 시도하세요.", "插件独立安装与更新。卸载后账号数据仍会保留;脚本插件共用一个按需下载的运行时。": "플러그인은 개별적으로 설치하고 업데이트합니다. 제거해도 계정 데이터는 유지되며, 스크립트 플러그인은 필요할 때 다운로드하는 런타임을 공유합니다.", "插件登录指引": "플러그인 로그인 안내", "插件登录方式包含重复的输入字段": "플러그인 로그인 방식에 중복된 입력 필드가 있습니다.", "插件登录选择字段包含无效或重复的选项": "플러그인 로그인 선택 필드에 잘못되거나 중복된 옵션이 있습니다.", "插件登录选择字段缺少选项列表": "플러그인 로그인 선택 필드에 옵션 목록이 없습니다.", "插件目录": "플러그인 디렉터리", "插件设置": "플러그인 설정", "插件设置已保存": "플러그인 설정 저장됨", "插件返回了无效的登录字段,请更新插件或联系作者": "플러그인이 잘못된 로그인 필드를 반환했습니다. 플러그인을 업데이트하거나 작성자에게 문의하세요.", "插件返回了无效的登录方式,请更新插件或联系作者": "플러그인이 잘못된 로그인 방식을 반환했습니다. 플러그인을 업데이트하거나 작성자에게 문의하세요.", "插件选项": "플러그인 옵션", "搜索…": "검색…", "搜索插件": "플러그인 검색", "撤销授权": "권한 취소", "支持自动授权、设备码、手动授权码和插件声明的凭据表单;本机读取作用于网关电脑。": "자동 인증, 기기 코드, 수동 인증 코드 및 플러그인 인증 양식을 지원합니다. 로컬 가져오기는 게이트웨이 컴퓨터에서 읽습니다.", "改动立即生效;禁用后指向它的请求会落到下一个候选。": "변경은 즉시 적용됩니다. 비활성화하면 해당 모델로 가는 요청은 다음 후보로 넘어갑니다.", "改动类工具": "변경 도구", "改成": "변경 값", "文件缺失": "파일 없음", "文档": "문서", "新": "신규", "新分组名": "새 그룹 이름", "新增 {n} 条": "{n}건 추가", "新对话": "새 대화", "新建分组": "그룹 추가", "无凭证": "자격 증명 없음", "无法解密": "복호화할 수 없음", "无法读取插件更新进度,请刷新后查看结果。": "플러그인 업데이트 진행 상황을 읽을 수 없습니다. 새로고침하여 결과를 확인하세요.", "无法读取登录方式": "로그인 방식을 불러올 수 없음", "日志": "로그", "旧版本保存的正文可能已截断,无法恢复缺失内容": "이전 버전에서 저장한 본문이 잘렸을 수 있으며 누락된 내용은 복구할 수 없습니다", "旧版浏览器登录暂不接收备注名和登录代理,请添加后在账号设置中调整。": "이전 버전 브라우저 로그인은 현재 표시 이름과 로그인 프록시를 받지 않습니다. 계정을 추가한 뒤 계정 설정에서 조정하세요.", "旧版登录方式": "이전 버전 로그인 방식", "映射名": "매핑 이름", "显示 {name}": "{name} 표시", "显示分组 {name}": "그룹 {name} 표시", "显示这一组": "이 그룹 표시", "智能": "AI", "暂不可安装": "설치 불가", "暂无可安装的插件": "설치 가능한 플러그인이 없습니다", "暂无可用的原生辅助程序,请先安装并启用所需插件。": "사용 가능한 네이티브 도우미가 없습니다. 필요한 플러그인을 먼저 설치하고 활성화하세요.", "暂时无法获取插件状态,显示上次结果;这不代表插件启动失败。": "플러그인 상태를 일시적으로 가져올 수 없어 이전 결과를 표시합니다. 플러그인 시작 실패를 의미하지 않습니다.", "暂未发布": "아직 게시되지 않음", "暂未取得明确的加载结果,不能据此判断启动失败。": "확정된 로드 결과가 아직 없습니다. 이를 시작 실패로 판단할 수는 없습니다.", "更多": "더보기", "更新": "업데이트", "更新到 v{version}": "v{version}으로 업데이트", "更新前无法继续调用模型;账号、配置和历史记录不会被删除。": "업데이트하기 전에는 모델을 호출할 수 없습니다. 계정, 설정 및 기록은 삭제되지 않습니다.", "更新或启停会等待共享宿主内的请求结束;账号数据始终由网关统一保存。": "업데이트 및 활성화 전환은 공유 호스트의 요청이 끝날 때까지 기다립니다. 계정 데이터는 항상 게이트웨이가 통합 관리합니다.", "更新/重装": "업데이트/재설치", "最大化": "최대화", "最小化": "최소화", "最近调用": "최근 호출", "有": "있음", "有 {count} 个插件可更新": "업데이트할 수 있는 플러그인 {count}개", "有插件包的协议版本与当前网关不一致({versions}),请下载对应版本的插件包。": "프로토콜 버전이 현재 게이트웨이와 다른 플러그인 팩이 있습니다({versions}). 해당 버전의 팩을 내려받으세요.", "有新版本,重启后生效": "새 버전이 있습니다. 재시작하면 적용됩니다", "有新版本:v{current} → v{latest}": "새 버전이 있습니다: v{current} → v{latest}", "有更新": "업데이트 있음", "服务器": "서버", "服务器已切换,请重新加载页面": "서버가 변경되었습니다. 페이지를 다시 불러오세요", "未加载": "로드 안 됨", "未同步": "미동기화", "未就绪": "준비 안 됨", "未授权": "허용되지 않음", "未登录": "미로그인", "未知工具「{name}」:它在设置里可能刚被取消勾选,或这一版助手还不认识它。": "알 수 없는 도구 \"{name}\": 설정에서 방금 선택 해제되었거나, 이 버전의 어시스턴트가 아직 인식하지 못하는 도구일 수 있습니다.", "未签名": "서명 안 됨", "未签名包不会自动覆盖;点击「补齐插件」将安装官方签名包。": "미서명 패키지는 자동으로 교체하지 않습니다. 필수 플러그인 업데이트를 누르면 공식 서명 패키지를 설치합니다.", "未签名:可以正常使用,但无法证明这个包出自官方;升级时同样只做格式校验": "서명 없음: 정상적으로 사용할 수 있지만 이 팩이 공식 배포본임을 증명할 수 없습니다. 업그레이드 시에도 형식 검사만 합니다", "未能保存自动刷新设置": "자동 새로고침 설정을 저장하지 못했습니다", "未能读取自动刷新设置": "자동 새로고침 설정을 불러오지 못했습니다", "未记录": "미기록", "未记录客户端": "클라이언트 미기록", "未运行": "실행 중 아님", "未选择服务器": "선택된 서버 없음", "本地网关监听状态": "로컬 게이트웨이 리스닝 상태", "本次初始化超过等待时限,已停止;可查看诊断后重试。": "초기화가 제한 시간을 초과하여 중지되었습니다. 진단을 확인한 후 다시 시도할 수 있습니다.", "本次加载未完成,请查看诊断。": "이번 로드가 완료되지 않았습니다. 진단을 확인하세요.", "本次用时 {n} 秒": "이번 소요 시간: {n}초", "权限": "권한", "来自 Magpie 社区的插件,共用一个按需下载的运行时": "Magpie 커뮤니티 플러그인은 필요할 때 다운로드하는 런타임을 공유합니다", "来自环境变量": "환경 변수에서", "来自环境变量 GITHUB_TOKEN": "GITHUB_TOKEN 환경 변수에서 가져옴", "松开刷新": "놓아서 새로고침", "查看 GitHub 仓库:{repository}": "GitHub 저장소 보기: {repository}", "查看全部": "모두 보기", "查看参数": "매개변수 보기", "查看发布说明": "릴리스 노트 보기", "查看发布页面": "릴리스 페이지 보기", "查看提供商插件": "제공자 플러그인 보기", "查看更新日志": "변경 내역 보기", "查看结果": "결과 보기", "查看进度": "진행 상황 보기", "标题总结设置": "제목 생성 설정", "桌面桥不可用(本页需要在 Agent2API 客户端里打开)": "데스크톱 브리지를 사용할 수 없습니다 (이 페이지는 Agent2API 클라이언트에서 열어야 합니다)", "检查更新失败": "업데이트 확인 실패", "检测到更新后自动下载、校验并安装已启用的官方签名插件。": "업데이트를 감지하면 활성화된 공식 서명 플러그인을 자동으로 다운로드, 검증 및 설치합니다.", "检测到更新后自动下载、校验并安装已启用的官方签名插件。未签名或第三方插件仍需手动更新。": "활성화된 공식 서명 플러그인의 업데이트를 자동 다운로드·검증·설치합니다. 미서명 또는 타사 플러그인은 수동 업데이트해야 합니다.", "模型分布": "모델별 분포", "模型管理": "모델 관리", "正在下载 Bun 运行时": "Bun 런타임 다운로드 중", "正在下载…": "다운로드 중…", "正在下载脚本插件": "스크립트 플러그인 다운로드 중", "正在初始化插件,尚未收到失败结果。": "플러그인을 초기화하고 있습니다. 실패 결과는 보고되지 않았습니다.", "正在加载": "로드 중", "正在加载 · {n} 家提供商的账号暂未显示,就绪后自动恢复。": "로드 중 · {n}개 제공업체의 계정이 일시적으로 숨겨져 있으며 준비가 완료되면 자동으로 다시 표시됩니다.", "正在加载新插件…": "새 플러그인을 불러오는 중…", "正在加载脚本插件": "스크립트 플러그인 불러오는 중", "正在启动": "시작 중", "正在启动插件,账号将在就绪后自动恢复。": "플러그인을 시작하고 있습니다. 준비가 완료되면 계정이 자동으로 다시 표시됩니다.", "正在完成人机验证…": "인증을 완료하는 중…", "正在恢复原有脚本插件": "이전 스크립트 플러그인 복원 중", "正在恢复旧版本插件…": "이전 플러그인 버전을 복원하는 중…", "正在更新第 {index}/{total} 个…": "{total}개 중 {index}번째 업데이트 중…", "正在校验包内容…": "패키지 검증 중…", "正在检查…": "확인 중…", "正在检查或准备脚本运行环境。": "스크립트 실행 환경을 확인하거나 준비하고 있습니다.", "正在自动补齐官方插件,不受日常更新开关和通道限制。": "일반 업데이트 설정과 채널에 관계없이 공식 플러그인을 필요한 버전으로 자동 업데이트하고 있습니다.", "正在补齐插件…": "필수 플러그인 업데이트 중…", "正在识别二维码…": "QR 코드 인식 중…", "正在读取、校验并安装插件包…": "플러그인을 읽고 검증·설치하는 중…", "正在读取插件信息 {done}/{total}": "플러그인 정보 불러오는 중 {done}/{total}", "正在读取插件列表…": "플러그인 목록 로드 중…", "正在读取插件清单…": "플러그인 목록 불러오는 중…", "正在读取插件登录方式…": "플러그인 로그인 방식을 불러오는 중…", "正在连接…": "연결 중…", "正在重试…": "재시도 중…", "正在验证…": "인증 중…", "此 OAuth 方法未声明备注名字段,账号名由插件获取;添加后可在账号设置中修改。": "이 OAuth 방식은 표시 이름 필드를 선언하지 않았습니다. 계정 이름은 플러그인이 가져오며 계정을 추가한 뒤 계정 설정에서 변경할 수 있습니다.", "此插件不是提供商插件,当前无法安装": "제공자 플러그인이 아니므로 여기에서 설치할 수 없습니다.", "此方式可能需要手动提交授权回调。完成官方登录后,按共享登录桥的提示粘贴完整回调地址;不要把回调地址当作 API Key 或 Token。": "이 방식은 인증 콜백을 직접 제출해야 할 수 있습니다. 공식 로그인을 완료한 뒤 공용 로그인 브리지의 안내에 따라 전체 콜백 URL을 붙여넣으세요. 콜백 URL을 API Key나 Token으로 사용하지 마세요.", "此旧版登录声明无法安全映射到动态表单,请联系插件作者": "이전 버전 로그인 선언을 동적 양식에 안전하게 매핑할 수 없습니다. 플러그인 작성자에게 문의하세요.", "此登录方式需要由共享登录桥发起": "이 로그인 방식은 공용 로그인 브리지에서 시작해야 합니다.", "每台服务器的登录状态各自独立保存,切换后不用重新登录。地址改掉后需要重新登录。": "로그인 상태는 서버마다 따로 저장되므로 다시 전환해도 재로그인이 필요 없습니다. 주소를 바꾸면 다시 로그인해야 합니다.", "每日签到及一次性任务;可能消耗智点、发送对话并创建及解散群聊": "매일 체크인 및 일회성 작업. 크레딧 소비, 대화 전송, 그룹 채팅 생성 및 해산이 발생할 수 있습니다", "每轮": "매 턴", "没有可恢复的维度明细": "복구 가능한 상세 내역이 없습니다", "没有可更新的版本": "업데이트할 버전이 없습니다", "没有找到提供商「{provider}」的账号": "제공자 \"{provider}\"의 계정을 찾지 못했습니다", "没有找到账号「{name}」": "계정 \"{name}\"을(를) 찾지 못했습니다", "没有符合筛选条件的插件": "필터 조건에 맞는 플러그인이 없습니다", "没有说明": "설명 없음", "没有近期套餐池请求,不生成验证码令牌": "최근 Start Plan 요청이 없어 인증 토큰을 생성하지 않습니다.", "没给账号名": "계정 이름이 지정되지 않았습니다", "注入系统提示词": "시스템 프롬프트 주입", "活动": "이벤트", "浅色": "라이트", "消耗该账号额度": "이 계정의 할당량을 소모합니다", "消耗额度": "할당량 소모", "深色": "다크", "添加": "추가", "添加失败": "추가 실패", "添加服务器": "서버 추가", "清单更新于 {time}": "목록 업데이트: {time}", "清空 = 回到内置默认(与「恢复默认」等价)。": "비우면 내장 기본값으로 돌아갑니다 (\"기본값으로 복원\"과 동일).", "清除失败:{error}": "삭제 실패: {error}", "点「编辑」弹窗改内容;开关关掉就整段不发。": "\"편집\"을 눌러 대화상자에서 내용을 수정하세요. 스위치를 끄면 전체가 전송되지 않습니다.", "点击重命名": "클릭하여 이름 변경", "熔断": "서킷 브레이커", "熔断时长(秒)": "차단 시간(초)", "版本 {version} · 从 GitHub 直接下载安装包": "버전 {version} · GitHub에서 직접 다운로드합니다", "版本 {version} · 从网关下载安装包": "버전 {version} · 게이트웨이에서 패키지를 다운로드합니다", "版本 {version} · 更新包需从 Release 页面获取": "버전 {version} · 업데이트 패키지는 Release 페이지에서 받으세요", "环境变量 Key": "환경 변수 Key", "用一句话让我查或改本机的模型转发配置。": "한 문장으로 요청하세요. 이 PC의 모델 포워딩 설정을 조회하거나 변경합니다.", "用量详情": "사용량 상세", "由其他插件接管": "다른 플러그인에서 관리", "电脑端已关闭「软件版本检查」,此处只做手动检查": "데스크톱에서 「소프트웨어 버전 확인」이 꺼져 있어 여기서는 수동 확인만 합니다", "登录、模型调用、模型列表、余额查询和签到等功能,可能因插件实现或上游变化而不可用。": "로그인, 모델 호출, 모델 목록, 잔액 조회, 출석 체크 등의 기능은 플러그인 구현이나 업스트림 변경에 따라 사용할 수 없게 될 수 있습니다.", "登录指引 / 设备码授权": "로그인 안내 / 기기 코드 인증", "登录支持自动完成的 OAuth/设备码和 API Key;要求手动回调的插件暂不支持。": "자동으로 완료되는 OAuth/기기 코드 로그인과 API Key를 지원합니다. 수동 콜백이 필요한 플러그인은 아직 지원하지 않습니다.", "登录方式说明": "로그인 방식 안내", "登录桥未确认账号添加完成": "로그인 브리지가 계정 추가 완료를 확인하지 않았습니다.", "登录面板": "로그인", "监听 127.0.0.1": "127.0.0.1 리스닝 중", "直接加载兼容的 Magpie / OpenCode v1 提供商包,多个插件共用一个 Bun 进程。": "호환되는 Magpie / OpenCode v1 제공자 패키지를 직접 불러옵니다. 여러 플러그인이 하나의 Bun 프로세스를 공유합니다.", "直接说要改什么 / 查什么…(Enter 发送,Shift+Enter 换行)": "바꿀 것 / 확인할 것을 바로 입력하세요… (Enter 전송, Shift+Enter 줄바꿈)", "确定删除账号「{name}」?{note}": "계정「{name}」을(를) 삭제할까요? {note}", "确定卸载「{name}」吗?卸载后这个包里的提供商将无法转发,也无法添加账号。账号数据本身不会被删除,重新安装后可以继续使用。": "\"{name}\"을(를) 제거할까요? 제거하면 이 팩의 제공자는 포워딩과 계정 추가를 할 수 없습니다. 계정 데이터 자체는 삭제되지 않으며 다시 설치하면 사용할 수 있습니다.", "确定卸载「{name}」吗?对应提供商将停止转发,账号数据仍然保留,重新安装后恢复。": "“{name}”을(를) 제거할까요? 해당 제공자의 전달이 중지됩니다. 계정 데이터는 유지되며 다시 설치하면 사용할 수 있습니다.", "确认后立即生效": "확인 후 즉시 적용됩니다", "确认并安装": "확인 후 설치", "确认授权": "권한 승인", "社区": "커뮤니티", "社区插件": "커뮤니티 플러그인", "禁用会把账号移出转发队列;若这条线路没有别的可用账号,请求会直接失败。": "비활성화하면 계정이 포워딩 큐에서 빠집니다. 이 경로에 다른 사용 가능한 계정이 없으면 요청이 그대로 실패합니다.", "移入「{name}」": "\"{name}\"(으)로 이동", "稍后": "나중에", "空分组 · 点组头的 + 把菜单移进来": "빈 그룹 · 머리의 +로 메뉴를 가져오세요", "立即刷新": "지금 새로고침", "立即升级": "지금 업그레이드", "第 {current} / {total} 页": "{current} / {total} 페이지", "第三方": "서드파티", "等待前面的插件完成,不代表加载失败。": "앞선 플러그인이 완료되기를 기다리고 있습니다. 로드 실패가 아닙니다.", "等待加载": "로드 대기 중", "等待当前任务结束,插件继续服务…": "진행 중인 작업이 끝나기를 기다리는 중이며 플러그인은 계속 서비스합니다…", "等待窗口": "수령 시간 대기", "等待脚本插件的在途请求和登录完成": "진행 중인 스크립트 요청과 로그인 완료 대기 중", "等待账号登录完成…": "계정 로그인 완료를 기다리는 중…", "等待运行环境恢复": "실행 환경 복구 대기 중", "等这一轮跑完…": "이번 턴이 끝날 때까지 기다리는 중…", "签到中心": "출석 체크 센터", "签到及插件附带任务;可能消耗额度,具体行为由插件决定": "체크인 및 플러그인 부가 작업. 크레딧을 소비할 수 있으며 구체적인 동작은 플러그인이 결정합니다", "签到及附带任务默认允许,实际执行遵循签到中心的开关和计划。": "출석 체크 및 부가 작업은 기본적으로 허용되며, 실제 실행은 출석 체크 센터의 스위치와 계획을 따릅니다.", "粘贴 GitHub 令牌(ghp_… / github_pat_…)": "GitHub 토큰 붙여넣기 (ghp_… / github_pat_…)", "粘贴插件要求的 JSON 对象,不要包含 provider、name、proxy 或登录流程控制字段": "플러그인이 요구하는 JSON 객체를 붙여넣으세요. provider, name, proxy 또는 로그인 흐름 제어 필드는 포함하지 마세요.", "系统提示词 + 工具定义": "시스템 프롬프트 + 도구 정의", "系统提示词已保存": "시스템 프롬프트가 저장되었습니다", "系统提示词已关闭": "시스템 프롬프트를 껐습니다", "系统提示词已开启": "시스템 프롬프트를 켰습니다", "统计排序": "통계 정렬", "继续安装": "설치 계속하기", "缓存读取": "캐시 읽기", "编辑服务器": "서버 편집", "编辑系统提示词": "시스템 프롬프트 편집", "网关 Key": "게이트웨이 키", "网关没有返回有效的登录方式列表,无法确认该插件的登录能力": "게이트웨이가 유효한 로그인 방식 목록을 반환하지 않아 이 플러그인의 로그인 기능을 확인할 수 없습니다.", "网关运行中": "게이트웨이 실행 중", "网络代理": "네트워크 프록시", "网页提供商": "웹 제공업체", "网页登录(旧版声明)": "웹 로그인(이전 버전 선언)", "能力位决定下游看到的声明(能不能贴图、能塞多少上下文),不改上游的真实行为。": "기능 플래그는 하위에 보이는 선언(이미지 입력 가능 여부, 컨텍스트 크기)을 결정하며 업스트림의 실제 동작은 바꾸지 않습니다.", "脚本不是安全沙箱,可以访问网关所在电脑的文件和网络。不要安装来历不明的插件。": "스크립트는 샌드박스가 아니며 게이트웨이 컴퓨터의 파일과 네트워크에 접근할 수 있습니다. 출처가 불분명한 플러그인은 설치하지 마세요.", "脚本插件共用运行环境;重试会等待当前任务结束,不会删除账号或重新安装插件。": "스크립트 플러그인은 실행 환경을 공유합니다. 재시도는 현재 작업이 끝날 때까지 기다리며 계정을 삭제하거나 플러그인을 재설치하지 않습니다.", "脚本签到可能包含额外任务并消耗额度。WPS 灵犀还可能发送对话、创建及解散群聊;授权后会接入现有自动签到计划。": "스크립트 체크인은 추가 작업을 실행하고 크레딧을 소비할 수 있습니다. WPS Lingxi는 대화를 전송하거나 그룹 채팅을 생성하고 해산할 수도 있습니다. 허용하면 기존 자동 체크인 일정에 포함됩니다.", "自动": "자동", "自动刷新间隔(秒)": "자동 새로고침 간격(초)", "自动安装": "자동 설치", "自动更新插件": "플러그인 자동 업데이트", "自动检查插件更新": "플러그인 업데이트 자동 확인", "自动维护": "자동 관리", "至少要保留一个分组": "그룹은 최소 하나 남아야 합니다", "补签": "보충", "补齐插件": "필수 플러그인 업데이트", "订阅链接必须是 http:// 或 https:// 开头": "구독 링크는 http:// 또는 https:// 로 시작해야 합니다", "设备授权码:{code}": "기기 인증 코드: {code}", "设备码授权时,请按网关给出的指引在官方页面确认设备授权码。没有授权地址不等于失败,可能需要在网关本机客户端完成操作;请以共享登录桥返回的状态为准。": "기기 코드 인증 시 게이트웨이 안내에 따라 공식 페이지에서 기기 인증 코드를 확인하세요. 인증 URL이 없다고 실패한 것은 아니며 게이트웨이 컴퓨터의 클라이언트에서 작업을 완료해야 할 수 있습니다. 공용 로그인 브리지가 반환하는 상태를 기준으로 판단하세요.", "设置": "설정", "设置不可隐藏(隐藏了只能清缓存找回来)": "\"설정\"은 숨길 수 없습니다(숨기면 저장소를 지워야 되돌릴 수 있습니다)", "设置已生效,但写入磁盘失败(重启后会恢复原设置)": "설정이 적용됐지만 저장에 실패했습니다(재시작 후 원래 설정으로 복구)", "设置未同步": "설정 동기화 안 됨", "诊断": "진단", "诊断信息": "진단 정보", "该提供商已不在运行时目录中,请返回列表重新选择": "이 제공자가 더 이상 런타임 목록에 없습니다. 목록으로 돌아가 다시 선택하세요.", "该登录方式没有可选项,无法提交;请更新插件或联系作者": "이 로그인 방식에는 선택할 수 있는 옵션이 없어 제출할 수 없습니다. 플러그인을 업데이트하거나 작성자에게 문의하세요.", "请允许安装未知来源应用后重试": "알 수 없는 출처의 앱 설치를 허용한 후 다시 시도하세요", "请先在插件页授权签到及附带任务": "먼저 플러그인 페이지에서 체크인 및 부가 작업을 허용하세요", "请先粘贴 GitHub 令牌": "먼저 GitHub 토큰을 붙여넣으세요", "请先选择有效的 OAuth 登录方式": "먼저 유효한 OAuth 로그인 방식을 선택하세요.", "请在 Release 页面下载后通过 TestFlight 或 App Store 安装": "Release 페이지에서 내려받은 뒤 TestFlight 또는 App Store를 통해 설치하세요", "请填一个分组名": "그룹 이름을 입력하세요", "请填写订阅名称": "구독 이름을 입력하세요", "请填写非空的凭证 JSON 对象,且不超过 256 KiB": "256 KiB를 넘지 않는 비어 있지 않은 인증 정보 JSON 객체를 입력하세요.", "请查看上方原因,稍后刷新重试。": "위의 원인을 확인한 후 나중에 새로고침해 주세요.", "请根据不兼容原因更新插件或网关;不会要求两者版本号一致。": "호환성 오류에 따라 플러그인 또는 게이트웨이를 업데이트하세요. 두 버전 번호가 같을 필요는 없습니다.", "请求失败": "요청 실패", "请求失败:{message}": "요청 실패: {message}", "请求数": "요청 수", "请求日志": "요청 로그", "请确认": "확인해 주세요", "请稍候": "잠시 기다려 주세요", "请输入 {min}–{max} 之间的整数秒数": "초 단위로 {min}–{max} 사이의 정수를 입력하세요", "请选择 {label} 的有效选项": "{label}의 유효한 옵션을 선택하세요.", "读取完成的插件会陆续显示,无需停留在此页面等待。": "정보를 불러온 플러그인부터 표시됩니다. 이 페이지를 떠나도 계속 불러옵니다.", "读取插件状态失败:{error}": "플러그인 상태를 읽지 못했습니다: {error}", "读取文件失败": "파일을 읽지 못했습니다", "读取消耗排序失败:{message}": "소비 순서를 불러오지 못했습니다: {message}", "读取设置失败:{error}": "설정 읽기 실패: {error}", "账号 / 登录出网代理": "계정 / 로그인 아웃바운드 프록시", "账号不在当前队列里": "계정이 현재 큐에 없습니다", "账号列表响应异常": "계정 목록 응답이 올바르지 않습니다", "账号已删除": "계정을 삭제했습니다", "账号已在全局队列第一位": "계정이 이미 전역 큐 1위입니다", "账号排序接口不可用,请确认网关与界面已更新": "계정 정렬 API를 사용할 수 없습니다. 게이트웨이와 화면이 모두 업데이트되었는지 확인하세요.", "账号登录方式": "계정 로그인 방식", "趋势统计指标": "추이 통계 지표", "趋势统计维度": "추이 통계 차원", "跟随系统": "시스템 설정 사용", "路由策略": "라우팅 전략", "转发能力": "전달 기능", "软件版本检查设置不可用": "소프트웨어 업데이트 확인 설정을 사용할 수 없습니다.", "输入 / 输出": "입력 / 출력", "输入这台网关的管理员账号与密码。": "이 게이트웨이의 관리자 계정과 비밀번호를 입력하세요.", "运行时不内置于安装包,首次安装脚本插件时自动下载并校验。": "런타임은 설치 파일에 포함되지 않습니다. 스크립트 플러그인을 처음 설치할 때 자동으로 다운로드하고 검증합니다.", "运行正常 · {url}": "정상 작동 중 · {url}", "运行状态": "실행 상태", "还没有安装任何提供商插件包": "아직 설치된 제공자 플러그인 팩이 없습니다", "还没有签到记录": "아직 체크인 기록이 없습니다", "还没有选择对话模型:先在下方选一个(或去「设置 → AI 助手」里选)。": "대화 모델을 아직 선택하지 않았습니다: 아래에서 선택하세요 (\"설정 → AI 어시스턴트\"에서도 선택할 수 있습니다).", "这一版没有提供 Android 安装包:{reason}": "이 버전에는 Android 설치 패키지가 없습니다: {reason}", "这一项已隐藏": "이 항목은 숨겨져 있습니다", "这一项正在显示": "이 항목은 표시 중입니다", "这个包提供的提供商(可单独停用某一家)": "이 팩이 제공하는 제공자(개별로 끌 수 있습니다)", "这个面板没有管理员,用一把已启用的 API Key 访问(在桌面端「网关 Key」页创建)。": "이 패널에는 관리자가 없습니다. 활성화된 API Key로 접속하세요 (데스크톱 「게이트웨이 키」에서 생성).", "这会真实发起上游请求并消耗额度": "실제 업스트림 요청을 보내고 할당량을 소모합니다", "这台网关没有管理员,用一把已启用的 API Key 访问(在桌面端「网关 Key」页创建)。": "이 게이트웨이에는 관리자가 없습니다. 활성화된 API Key로 접근하세요 (데스크톱의 \"게이트웨이 Key\" 페이지에서 생성).", "这台网关还没有管理员。设置一个账号密码,之后用它登录。": "이 게이트웨이에는 아직 관리자가 없습니다. 계정과 비밀번호를 설정한 뒤 그것으로 로그인하세요.", "这是旧插件的手动兼容入口,不代表支持任意凭证或登录方式。请仅粘贴该插件明确接受的凭证 JSON;网关会交给 account.normalize 校验,不会自动推断 Token、Cookie 或 OAuth。": "이전 플러그인을 위한 수동 호환 입력이며 임의의 인증 정보나 로그인 방식을 지원한다는 뜻이 아닙니다. 플러그인이 명시적으로 허용하는 인증 정보 JSON만 붙여넣으세요. 게이트웨이는 account.normalize로 검증하며 Token, Cookie 또는 OAuth를 자동으로 추론하지 않습니다.", "这是真实的上游请求,与生产走同一条链路(会记账,报表排除)。": "실제 업스트림 요청으로 프로덕션과 같은 경로를 사용합니다(과금되지만 보고서에서는 제외).", "这段文本作为 system 消息排在对话最前面。工具的定义与当前配置概览由网关自动附加,不用写在这里。": "이 텍스트는 system 메시지로 대화 맨 앞에 배치됩니다. 도구 정의와 현재 구성 개요는 게이트웨이가 자동으로 덧붙이므로 여기에 쓸 필요가 없습니다.", "连不上插件仓库,请检查网络或代理后重试": "플러그인 저장소에 연결할 수 없습니다. 네트워크 또는 프록시를 확인한 후 다시 시도하세요.", "连接已有 SAP AI Core 部署:从网关本机导入凭据文件,按资源组获取模型;不创建部署或查询额度。": "기존 SAP AI Core 배포에 연결: 게이트웨이 컴퓨터에서 인증 정보 파일을 가져오고 리소스 그룹별로 모델을 조회합니다. 배포 생성이나 할당량 조회는 하지 않습니다.", "连接并保存": "연결 후 저장", "连续崩溃": "연속 충돌", "连通 · {ms}ms": "연결됨 · {ms}ms", "选择模型…": "모델 선택…", "通过 API Key 接入 River 对话与在线模型目录;插件不提供余额数值。": "API Key로 River 채팅 및 온라인 모델 목록에 연결합니다. 플러그인은 잔액 수치를 제공하지 않습니다.", "通过 Magpie 原插件接入设备码登录、对话、模型目录、余额和每日签到。": "Magpie 원본 플러그인으로 기기 코드 로그인, 대화, 모델 목록, 잔액 및 일일 출석을 연결합니다.", "通过社区插件接入 {providers},可在设置中管理提供商,签到计划在签到中心管理。": "커뮤니티 플러그인으로 {providers}에 연결합니다. 공급자는 설정에서, 체크인 일정은 체크인 센터에서 관리할 수 있습니다.", "部分信息未能更新,已读取的插件仍可查看。": "일부 정보를 업데이트하지 못했습니다. 이미 불러온 플러그인은 계속 볼 수 있습니다.", "部分插件的附带任务可能消耗额度、发送对话或创建及解散群聊。": "일부 플러그인의 부가 작업은 할당량을 소모하거나 대화를 전송하거나 그룹 채팅을 만들고 해산할 수 있습니다.", "都不注入": "둘 다 주입 안 함", "都不注入(助手退化为纯聊天)": "둘 다 주입 안 함 (어시스턴트가 순수 채팅으로)", "重启更新": "재시작 후 업데이트", "重新读取登录方式": "로그인 방식 다시 불러오기", "队列是一次性整表提交(后端按新顺序重编优先级),移动会连带调整其它组的相对次序。": "큐는 전체 표를 한 번에 제출합니다(백엔드가 새 순서로 우선순위를 다시 매깁니다). 이동하면 다른 그룹의 상대 순서도 함께 바뀝니다.", "队列是一次性整表提交;位置越靠前,路由时越先被选中。": "큐는 전체 표를 한 번에 제출합니다. 위치가 앞일수록 라우팅 시 먼저 선택됩니다.", "限流垫底": "레이트 리밋 후순위", "隐藏 {name}": "{name} 숨기기", "隐藏分组 {name}": "그룹 {name} 숨기기", "隐藏这一组": "이 그룹 숨기기", "需要强制更新": "필수 업데이트", "需要网关 API Key": "게이트웨이 API Key가 필요합니다", "需要网关本机环境": "게이트웨이 컴퓨터의 로컬 환경 필요", "需要补齐插件": "플러그인 업데이트 필요", "顺序优先": "순서 우선", "首页": "홈", "高危": "고위험", "高级参数(JSON)": "고급 설정(JSON)", "默认分支": "기본 브랜치", "默认跟随软件的正式版和 beta 关注选择;单独设置只影响日常更新,最低版本补齐按当前软件版本选择配套包。": "업데이트 채널은 기본적으로 앱 설정을 따릅니다. 별도 설정은 일반 업데이트에만 적용되며 필수 업데이트는 현재 앱 버전에 맞는 패키지를 선택합니다.", "默认跟随软件的自动检查和间隔。关闭自动检查后暂停插件自动更新;手动检查、安装和更新不受影响。": "자동 확인과 간격은 기본적으로 앱 설정을 따릅니다. 자동 확인을 끄면 플러그인 자동 업데이트가 중지되지만 수동 확인, 설치 및 업데이트는 계속 사용할 수 있습니다.", "({n} 个整组隐藏)": " (그룹 {n}개 전체 숨김)", "(不会影响客户端登录态)": "(클라이언트 로그인 상태에는 영향을 주지 않습니다)", "(仅显示前 20 条,共 {n} 条)": "(앞의 20건만 표시, 전체 {n}건)", "(可选)": " (선택)", "(未指定)": "(지정 안 됨)", "(请下载与该平台对应的插件包)": "(이 플랫폼용 팩을 내려받으세요)", "(默认问候)": "(기본 인사말)", "Agent2API · 登录": "Agent2API · 로그인", "OpenAI 兼容网关 · 管理面板": "OpenAI 호환 게이트웨이 · 관리 패널", "Turnstile 加载或验证失败,请检查网络、浏览器拦截和域名配置后重试。": "Turnstile 로드 또는 인증에 실패했습니다. 네트워크, 브라우저 차단 및 도메인 설정을 확인한 후 다시 시도하세요.", "Turnstile 验证超时,请重试。": "Turnstile 인증 시간이 초과되었습니다. 다시 시도하세요.", "创建账号并进入面板": "계정을 만들고 패널로 이동", "密码": "비밀번호", "当前浏览器不支持 Turnstile,请更新浏览器后重试。": "현재 브라우저는 Turnstile을 지원하지 않습니다. 브라우저를 업데이트한 후 다시 시도하세요.", "我不是机器人": "로봇이 아닙니다", "无法读取登录验证设置,请刷新页面重试": "로그인 인증 설정을 읽을 수 없습니다. 페이지를 새로 고친 후 다시 시도하세요", "无法连接网关": "게이트웨이에 연결할 수 없습니다", "无法连接网关,请确认服务已启动": "게이트웨이에 연결할 수 없습니다. 서비스가 실행 중인지 확인하세요", "机器人校验配置已变更或不完整,请刷新页面或联系管理员。": "봇 인증 설정이 변경되었거나 불완전합니다. 페이지를 새로 고치거나 관리자에게 문의하세요.", "登录": "로그인", "登录后可在「网关 Key」页为 API 客户端创建密钥": "로그인 후 「게이트웨이 키」 페이지에서 API 클라이언트용 키를 만들 수 있습니다", "管理员账号": "관리자 계정", "继续": "계속", "至少 8 位": "8자리 이상", "设置密码(至少 8 位)": "비밀번호 설정 (8자리 이상)", "请先勾选「我不是机器人」完成验证": "먼저 「로봇이 아닙니다」를 체크하여 인증을 완료하세요", "请填写账号与密码": "계정과 비밀번호를 입력하세요", "请完成人机验证后重试": "사람 인증을 완료한 후 다시 시도하세요", "请求失败,请重试": "요청에 실패했습니다. 다시 시도하세요", "请输入管理员账号与密码": "관리자 계정과 비밀번호를 입력하세요", "重新验证": "다시 인증", "首次使用:创建一个管理员账号,用于登录此面板": "처음 사용하는 경우: 이 패널에 로그인할 관리자 계정을 만드세요", "验证中…": "확인 중…", "验证失败,请重试": "확인에 실패했습니다. 다시 시도하세요", "验证成功": "확인 완료", " · 今日 {used} / {quota}": " · 오늘 {used} / {quota}", " · 当前 {n}": " · 현재 {n}", " · 本周期 {used} / {quota}": " · 이번 주기 {used} / {quota}", " · 限流 {n}": " · 레이트 리밋 {n}", " 等": " 등", "0 = 不限": "0 = 제한 없음", "0 = 按本家默认 {default}": "0 = 자체 기본값 {default} 적용", "30 秒 ~ 24 小时;手动查询会顺延下一轮": "30초 ~ 24시간, 수동 조회 시 다음 회차로 순연됩니다", "7 天内到期": "7일 이내 만료", "7 天内到期 {amount}({count} 份)": "7일 내 만료: {amount} ({count}개)", "7天 {count}份": "7일 내 {count}개", "7天 {n}": "7일 내 {n}", "API Key": "API Key", "Accio 国内版": "Accio 중국판", "Base URL": "Base URL", "Clash Verge 里还没有配置混合监听器或节点端口": "Clash Verge에 혼합 리스너나 노드 포트가 아직 구성되어 있지 않습니다", "Clash 出口:": "Clash 아웃바운드: ", "Copilot 额度单位": "Copilot 할당량 단위", "NewAPI 个人访问令牌": "NewAPI 개인 액세스 토큰", "NewAPI 用户 ID": "NewAPI 사용자 ID", "OpenAI 兼容": "OpenAI 호환", "OpenAI 兼容填到 /v1;Anthropic 填根地址": "OpenAI 호환은 /v1까지, Anthropic은 루트 주소를 입력하세요", "Qoder 中国版": "Qoder 중국판", "Qoder 国际版": "Qoder 국제판", "Token 刷新接口不可用,请重新打开页面": "Token 갱신 기능을 사용할 수 없습니다. 페이지를 다시 여세요.", "Token 刷新结果未确认,请刷新后核对账号状态": "Token 갱신 결과를 확인하지 못했습니다. 목록을 새로고침한 후 계정 상태를 확인하세요.", "Token 单位": "Token 단위", "Token 时": "Token 이상일 때", "Token 消耗": "Token 소비", "Token 规则按每个账号已有的窗口消耗判定,保存不会清零;停用或清空规则不会自动启用账号。": "Token 규칙은 각 계정의 기존 구간 사용량으로 판정합니다. 저장해도 사용량은 초기화되지 않으며 규칙 중지나 비우기로 계정이 활성화되지 않습니다.", "Token 限制阈值必须是大于 0 的安全整数": "Token 임계값은 0보다 큰 안전한 정수여야 합니다", "Token 限额": "Token 한도", "Token 限额 · 已禁用": "Token 한도 · 비활성", "Token 限额 · 已跳过": "Token 한도 · 건너뜀", "WorkBuddy 国内版": "WorkBuddy 중국판", "WorkBuddy 国际版": "WorkBuddy 국제판", "ZCode 国内版": "ZCode 중국판", "ZCode 国际版": "ZCode 국제판", "ZCode 套餐明细 — {name}": "ZCode 플랜 상세 — {name}", "bigmodel_token_production 的值": "bigmodel_token_production 의 값", "{action}{who}": "{action} {who}", "{amount},另 {count} 份余量未知": "{amount}, 추가 {count}개는 잔여량 알 수 없음", "{body}({period})": "{body}({period})", "{cond} 时 → {action}": "{cond}일 때 → {action}", "{count} 份": "{count}건", "{count} 份仅提供比例": "비율만 제공되는 패키지 {count}개", "{count} 份单位未知": "단위를 알 수 없는 패키지 {count}개", "{count} 次": "{count}회", "{days} 天后到期": "{days}일 후 만료", "{error}(不会自动改为直连)": "{error} (직접 연결로 자동 전환하지 않음)", "{error}(转发时会回退直连)": "{error} (포워딩 시 직접 연결로 폴백)", "{groups} 家 · 显示 {rows} 行": "{groups} 곳 · {rows}행 표시", "{hours} 小时后到期": "{hours}시간 후 만료", "{label} ×{count}": "{label} ×{count}", "{label}({count})": "{label} ({count})", "{message}(去该账号的「设置」里填上查询凭证即可)": "{message} (해당 계정의 「설정」에서 조회 자격 증명을 입력하면 됩니다)", "{minutes} 分钟后到期": "{minutes}분 후 만료", "{month}月{day}日 {clock}": "{month}월 {day}일 {clock}", "{name} · 分组设置": "{name} · 그룹 설정", "{name} 移到 {group} 组内第 {rank} 位": "{name}을(를) {group} 그룹 내 {rank}번째로 이동했습니다", "{name} 移到第 {rank} 顺位": "{name}을(를) 전체 {rank}순위로 이동했습니다", "{name}的方向": "{name} 방향", "{name}({parts})": "{name} ({parts})", "{name}({time} 起生效)": "{name}({time}부터 적용)", "{n} 个已计入": "{n}개 합산", "{n} 个查询失败": "{n}개 조회 실패", "{n} 个模型 ▾": "모델 {n}개 ▾", "{n} 个模型限流中 · 记录来自上游 429 / 限额码,到恢复时间自动解除": "모델 {n}개 속도 제한 중 · 업스트림 429 / 한도 코드에서 온 기록, 리셋 시간에 자동 해제", "{n} 个请求正在使用该账号(含还在下发内容的流式请求)": "이 계정을 사용 중인 요청 {n}개 (콘텐츠를 계속 내려보내는 스트리밍 요청 포함)", "{n} 个读数只读到一半(读数可信但不完整)": "{n}개는 일부만 조회됨(값은 신뢰할 수 있으나 불완전)", "{n} 个读数没有绝对数(只给比例或无额度),未计入": "{n}개는 절대값이 없어(비율만 제공 또는 한도 없음) 합산에서 제외", "{n} 个读数里没有可用比例,未计入": "{n}개 읽기에 사용 가능한 비율이 없어 집계하지 않았습니다", "{n} 个账号 · {e} 启用 · {l} 限流": "{n}개 계정 · {e} 활성 · {l} 제한", "{n} 个账号 · 启用 {e}": "{n}개 계정 · {e} 활성", "{n} 个还没查到(未查询或正在查询)": "{n}개는 아직 조회되지 않음(미조회 또는 조회 중)", "{n} 个还没查询": "{n}개는 아직 조회하지 않음", "{n} 分钟": "{n}분", "{n} 分钟前更新": "{n}분 전에 업데이트됨", "{n} 分钟后": "{n}분 후", "{n} 天前更新": "{n}일 전에 업데이트됨", "{n} 天后": "{n}일 후", "{n} 小时": "{n}시간", "{n} 小时前更新": "{n}시간 전에 업데이트됨", "{n} 小时后": "{n}시간 후", "{n} 秒": "{n}초", "{n} 秒前更新": "{n}초 전에 업데이트됨", "{period}窗口": "{period} 구간", "{plan}({time} 领取)": "{plan}({time} 수령)", "{providers} 家提供商、共 {total} 个账号。数据仍在,只是当前没有可用的插件来执行它们。": "공급자 {providers}곳, 계정 {total}개. 데이터는 그대로 있으며 지금 실행할 플러그인이 없을 뿐입니다.", "{reason}。该账号的登录态已被上游注销,自动刷新不会再成功,请重新登录该账号": "{reason}. 이 계정의 로그인 상태가 업스트림에서 취소되었습니다. 자동 갱신은 더 이상 성공하지 않으므로 이 계정으로 다시 로그인하세요.", "{scope} {used} / {quota} Token,{countdown}重置": "{scope} {used} / {quota} Token, 초기화까지 {countdown}", "{text}过期": "{text} 만료", "{text}过期({full})": "{text} 만료 ({full})", "{time} 到期": "{time} 만료", "{time} 恢复": "{time} 리셋", "{time} 生效": "{time} 적용", "{time} 领取": "{time} 수령", "{total} 个账号 · 启用 {enabled} · 禁用 {disabled}{limited}": "계정 {total}개 · 활성화 {enabled} · 비활성화 {disabled}{limited}", "{tried}探测并领取官方每日登录赠送的套餐积分(到账进套餐积分,不增加福利模型 token 池)": "{tried}공식 매일 로그인 보너스 플랜 포인트를 조회해 수령합니다 (적립분은 플랜 포인트로 들어가며, 혜택 모델 token 풀은 늘지 않습니다)", "{unit}余量未知({count} 份)": "{unit} 잔여량 알 수 없음 ({count}개)", "{verb}完成:成功 {ok} 个,失败 {fail} 个({detail}{more})": "{verb} 완료: 성공 {ok}개, 실패 {fail}개 ({detail}{more})", "{verb}完成:成功 {ok} 个,未变更 {unchanged} 个,跳过 {skip} 个,失败 {fail} 个": "{verb} 완료: 변경 {ok}개, 변경 없음 {unchanged}개, 건너뜀 {skip}개, 실패 {fail}개", "✅ {ok}/{total} 个出口可用": "✅ {ok}/{total}개 아웃바운드 사용 가능", "✅ {verb}完成:共 {count} 个账号": "✅ {verb} 완료: 총 {count}개 계정", "✅ 优先级已改为 {n}": "✅ 우선순위가 제 {n}위로 변경되었습니다", "✅ 出口可用": "✅ 아웃바운드 사용 가능", "✅ 已保存:{note}": "✅ 저장됨: {note}", "✅ 已启用": "✅ 활성화됨", "✅ 已启用 {n} 个账号": "✅ 계정 {n}개를 활성화했습니다", "✅ 已导出 {count} 个账号文件": "✅ 계정 파일 {count}개를 내보냈습니다", "✅ 已更新 {n} 个账号的余额{suffix}": "✅ {n}개 계정의 잔액을 갱신했습니다{suffix}", "✅ 已更新余额": "✅ 잔액이 갱신되었습니다", "✅ 已清除 API Key(该账号现在没有凭证,转发会被跳过)": "✅ API Key를 지웠습니다 (이 계정에는 이제 자격 증명이 없어 포워딩에서 건너뜁니다)", "✅ 已清除 {model} 的限流标记": "✅ {model}의 속도 제한 플래그를 지웠습니다", "✅ 已清除余额查询凭证": "✅ 잔액 조회 자격 증명을 지웠습니다", "✅ 已清除查询凭证": "✅ 조회 자격 증명을 지웠습니다", "✅ 已清除该账号全部限流标记": "✅ 이 계정의 모든 속도 제한 플래그를 지웠습니다", "✅ 已禁用": "✅ 비활성화됨", "✅ 已禁用 {n} 个账号": "✅ 계정 {n}개를 비활성화했습니다", "✅ 已重新读取 Clash Verge 配置": "✅ Clash Verge 구성을 다시 읽었습니다", "✅ 账号设置已保存": "✅ 계정 설정이 저장되었습니다", "✅ 顺序已保存": "✅ 순서가 저장되었습니다", " 出口 IP {ip}": " 아웃바운드 IP {ip}", "、": ", ", "、补官方会话头、请求体补两个占位工具(上游免费档的三道校验)。": ", 공식 세션 헤더 추가, 요청 본문에 자리 표시 도구 2개 추가 (업스트림 무료 등급의 3중 검증).", "「{name}」已在「网络代理」页禁用,请先启用它或换一条": "\"{name}\"은(는) \"네트워크 프록시\" 페이지에서 비활성화되어 있습니다. 먼저 활성화하거나 다른 항목을 선택하세요.", "「{name}」开着排序规则:先关掉规则,才能手动调整组内顺序": "「{name}」의 정렬 규칙이 켜져 있습니다. 그룹 내 순서를 수동으로 조정하려면 먼저 규칙을 끄세요", "「{name}」本身": "「{name}」 자체", "「已保存的代理」": "「저장된 프록시」", "「网络代理」页还没有出口 —— 去那里新增,或在「订阅管理」里点「同步 Clash Verge」把 Clash 的出口导进来": "「네트워크 프록시」 페이지에 아직 아웃바운드가 없습니다 — 거기서 추가하거나 「구독 관리」에서 「Clash Verge 동기화」를 눌러 Clash의 아웃바운드를 가져오세요", "「网络代理」页还没有出口 —— 去那里添加一个 HTTP 或 SOCKS5 地址": "네트워크 프록시 페이지에서 HTTP 또는 SOCKS5 주소를 추가하세요.", "「网络代理」页还没有出口 —— 去那里添加手动地址或同步 Clash Verge 的端点": "저장된 프록시가 없습니다. 「네트워크 프록시」 페이지에서 수동 주소를 추가하거나 Clash Verge 엔드포인트를 동기화하세요.", "「网络代理」页里每个启用的出口轮流使用;之后新加的出口自动加入": "「네트워크 프록시」페이지에서 활성화된 아웃바운드를 차례로 사용합니다. 나중에 추가한 아웃바운드도 자동으로 포함됩니다", "一般不用填": "보통 입력하지 않아도 됩니다", "万": "만", "上一条规则相同时才比较下一条;想优先按余额消耗,请把可用余额移到第一位。": "앞선 규칙의 결과가 같을 때만 다음 규칙을 비교합니다. 잔액에 따라 우선 소모하려면 사용 가능 잔액을 맨 위로 이동하세요.", "上次成功查询:{time}": "마지막 조회 성공: {time}", "上游拒绝了本次余额查询": "상위 서비스가 잔액 조회를 거부했습니다", "上游提供了补充说明;未显示原始正文": "상위 서비스가 추가 설명을 제공했습니다. 원문 본문은 표시하지 않습니다", "上游暂时限制余额查询,请稍后重试": "상위 서비스가 잔액 조회를 일시적으로 제한하고 있습니다. 나중에 다시 시도하세요.", "上游未给总量,画不出剩余比例": "업스트림이 총량을 주지 않아 잔여 비율을 표시할 수 없습니다", "上游未返回可识别额度窗口": "상위 서비스가 인식 가능한 할당량 기간을 반환하지 않았습니다", "上游本来不要凭证时(本地 Ollama、OpenCode Zen 的免费档)勾上这一项:账号会被正常选路;只把 Key 留空": "업스트림이 원래 자격 증명을 요구하지 않을 때 (로컬 Ollama, OpenCode Zen의 무료 등급) 이 항목을 체크하세요: 계정이 정상적으로 라우팅됩니다. Key만 비워 두고 ", "上游没有提供此额度的分桶用量,当前使用本地估算保护;在其他客户端产生的消耗不会计入。": "업스트림이 이 할당량 버킷의 사용량을 제공하지 않아 로컬 추정치로 보호합니다. 다른 클라이언트의 사용량은 포함되지 않습니다.", "上游的 API Key。留空 = 不修改(改凭证不会换账号 id);要清掉已配的凭证用右边的「清除」": "업스트림의 API Key입니다. 비워 두면 변경하지 않습니다 (자격 증명을 바꿔도 계정 id는 바뀌지 않음). 설정된 자격 증명을 지우려면 오른쪽 「지우기」를 사용하세요", "上游的余额读数里没有这个套餐的额度桶,剩余量读不到;余额列显示的是套餐发放的权益额度,不是剩余量": "업스트림 잔액 판독값에 이 플랜의 할당량 버킷이 없어 남은 양은 읽을 수 없습니다. 잔액 열에 표시되는 것은 플랜의 지급 권익이며 남은 양이 아닙니다", "上游返回 {status}": "업스트림이 {status} 반환", "上游限制 · 已禁用": "업스트림 제한 · 비활성화됨", "上游额度无上限": "업스트림 할당량은 무제한입니다", "上面所有规则都相同时,保持你拖出来的顺序": "위의 모든 규칙이 같으면 직접 끌어 놓은 순서를 유지합니다", "不到 1 分钟": "1분 미만", "不到 1 分钟到期": "1분 이내 만료", "不可用:{error}": "사용 불가: {error}", "不足 {n}": "{n} 미만", "不限": "제한 없음", "与队列里的上一个账号交换优先级(可能是另一家的账号)": "대기열의 이전 계정과 우선순위 교환 (다른 제공자의 계정일 수 있음)", "与队列里的下一个账号交换优先级(可能是另一家的账号)": "대기열의 다음 계정과 우선순위 교환 (다른 제공자의 계정일 수 있음)", "严格按消耗顺序使用账号需选择「顺序优先」;轮询、会话粘性及账号保护仍按原设置生效。": "소모 순서대로 계정을 사용하려면 순서 우선을 선택하세요. 순환, 세션 고정 및 계정 보호는 기존 설정을 따릅니다.", "个": "개", "个 · 共": "개 · 총", "个人": "개인", "主凭证没有固定到期时刻,到期由网关自动续期或本来就不会过期": "기본 자격 증명에는 고정된 만료 시각이 없습니다. 만료 시 게이트웨이가 자동 갱신하거나, 애초에 만료되지 않습니다", "主机": "호스트", "亿": "억", "仅将优先级调整到全局第一位,不改变启用状态": "우선순위만 전역 1위로 조정하며 활성 상태는 바꾸지 않습니다", "仅按手动顺序": "수동 순서만", "仅统一修改现有规则的开关,保留阈值、动作和重置方式;不改变账号的启用状态。": "기존 규칙의 스위치만 변경하며 임계값, 동작, 초기화 방식 및 계정 활성 상태는 유지합니다.", "仅账号管理": "계정 관리 전용", "仅跳过命中条件的模型,其他模型仍可转发;点击查看限制器": "조건에 해당하는 모델만 건너뛰며 다른 모델은 계속 전달할 수 있습니다. 클릭하여 제한기를 확인하세요.", "今天 {clock}": "오늘 {clock}", "今天 {time}": "오늘 {time}", "今天到期 {amount}({count} 份)": "오늘 만료: {amount} ({count}개)", "今天还没有领过:上面「可领取的套餐」里逐份点「领取」即可": "오늘은 아직 받은 것이 없습니다. 위의 \"받을 수 있는 플랜\"에서 각 플랜의 \"받기\"를 누르면 됩니다.", "今天(北京时间 {day})已由官方确认到账 {n} 项;领到的是套餐赠送积分,不增加福利模型的 token 池;按自然日重置,明天可再领": "오늘(베이징 시간 {day}) 공식 확인으로 {n}건이 적립되었습니다. 받은 것은 플랜 보너스 포인트이며 혜택 모델의 token 풀은 늘지 않습니다. 자연일 기준으로 초기화되며 내일 다시 받을 수 있습니다", "今天(北京时间 {day})已试过 {n} 次但官方尚未确认到账,": "오늘(베이징 시간 {day}) {n}회 시도했지만 아직 공식 적립 확인이 되지 않았습니다, ", "今天(北京时间)已领取 {n} 份:{plans}": "오늘(베이징 시간) {n}건 받음: {plans}", "今天(本地 0 点重置)": "오늘 (로컬 0시 초기화)", "今日剩 {n} 分钟": "오늘 {n}분 남음", "今日剩 {n} 小时": "오늘 {n}시간 남음", "今日发放": "오늘 지급", "今日已用": "오늘 사용", "今日已领": "오늘 받음", "代理": "프록시", "代理不可用:{error}": "프록시 사용 불가: {error}", "代理不可用:{error}(不会自动改为直连);选「自定义代理…」去修改": "프록시 사용 불가: {error} (직접 연결로 자동 전환하지 않음). 「사용자 지정 프록시…」에서 수정하세요", "代理不可用:{error}(转发时会回退直连);选「自定义代理…」去修改": "프록시 사용 불가: {error} (포워딩 시 직접 연결로 폴백); 「사용자 지정 프록시…」를 선택해 수정하세요", "代理列表响应异常({type})": "프록시 목록 응답 이상 ({type})", "代理列表读取失败(重试中)": "프록시 목록 읽기 실패 (재시도 중)", "代理已更新": "프록시가 업데이트되었습니다", "代理异常": "프록시 이상", "代理方式": "프록시 방식", "代理池响应异常({type})": "프록시 풀 응답 이상 ({type})", "代理端口必须是 1-65535 的整数": "프록시 포트는 1-65535 사이의 정수여야 합니다", "以下 {count} 个账号不支持余额查询,本次会跳过:{names}": "다음 {count}개 계정은 잔액 조회를 지원하지 않아 건너뜁니다: {names}", "企业": "기업", "优先级": "우선순위", "优先级 {priority} 已被同一提供商的「{name}」占用,请换一个数值": "우선순위 {priority}은(는) 같은 제공자의 「{name}」이(가) 사용 중입니다. 다른 값을 입력하세요", "优先级必须是数字": "우선순위는 숫자여야 합니다", "优先级未保存:{message}": "우선순위가 저장되지 않았습니다: {message}", "会员共享额度": "공유 회원 할당량", "会员共享额度不是本账号独立额度,不与其他窗口相加;未证实团队独立额度": "공유 회원 할당량은 이 계정의 독립 할당량이 아니며 다른 기간과 합산하지 않습니다. 별도 팀 할당량은 확인되지 않았습니다.", "会被当成「未配置凭证」而跳过。": "「자격 증명 미설정」으로 간주되어 건너뜁니다.", "伪装 OpenCode 官方客户端": "OpenCode 공식 클라이언트로 위장", "伪装 OpenCode 官方客户端(OpenCode Zen 免费档要它才放行)": "OpenCode 공식 클라이언트로 위장 (OpenCode Zen 무료 등급은 이 옵션이 있어야 통과됩니다)", "余量 {value}": "잔여량 {value}", "余额": "잔액", "余额 < {threshold}": "잔액 < {threshold}", "余额不足": "잔액 부족", "余额不足 · 已跳过": "잔액 부족 · 건너뜀", "余额低于": "잔액이", "余额低于阈值时的提示": "잔액이 기준값 아래로 떨어지면 알림", "余额低于阈值,转发时会跳过该账号(余额回升自动恢复)": "잔액이 임계값보다 낮아 포워딩 시 이 계정을 건너뜁니다 (잔액 회복 시 자동 리셋)", "余额低于限制器的阈值,转发时会跳过该账号(余额回升自动恢复)": "잔액이 리미터 임계값보다 낮아 포워딩 시 이 계정을 건너뜁니다 (잔액 회복 시 자동 리셋)", "余额列读数的自动刷新;也是「限制器」余额规则的数据来源。": "잔액 열 수치의 자동 갱신이며, 「리미터」 잔액 규칙의 데이터 소스입니다.", "余额响应为空": "잔액 응답이 비어 있습니다", "余额大优先": "잔액 많은 순", "余额小优先": "잔액 적은 순", "余额已更新": "잔액을 갱신했습니다", "余额查询凭证": "잔액 조회 자격 증명", "余额查询凭证已失效,请刷新查询登录态": "잔액 조회 인증 정보가 만료되었습니다. 조회 로그인 상태를 갱신하세요.", "余额查询失败:{message}": "잔액 조회 실패: {message}", "余额查询接口不可用,请更新网关后重试": "잔액 조회를 사용할 수 없습니다. 게이트웨이를 업데이트한 후 다시 시도하세요.", "余额查询接口返回异常": "잔액 조회 응답이 올바르지 않습니다.", "余额查询方案:{label}": "잔액 조회 방식: {label}", "余额沿用现有口径;Token 按重置方式内的累计消耗判定(切换类型会清空阈值)": "잔액은 기존 기준을 따르며, Token은 초기화 방식에 따른 누적 소비로 판정합니다 (유형을 바꾸면 임계값이 비워집니다)", "余额详情": "잔액 상세", "使用套餐": "사용 플랜", "使用最近一次成功查询的总余额,随余额刷新调整;查询失败保留上次读数,不额外增加查询频率。": "마지막으로 성공한 조회의 총잔액을 사용하고 잔액 갱신에 따라 순서를 조정합니다. 조회 실패 시 이전 값을 유지하며 조회 빈도를 늘리지 않습니다.", "保存失败:{error}": "저장 실패: {error}", "保存条件": "조건 저장", "保存规则": "규칙 저장", "保留 {n} 个账号": "계정 {n}개 보관", "保留各账号原有规则,只追加下面的规则;完全相同的规则不会重复添加。": "각 계정의 기존 규칙을 유지하고 아래 규칙만 추가합니다. 완전히 같은 규칙은 중복 추가하지 않습니다.", "修改代理": "프록시 변경", "停止旧查询,按当前配置重新查询余额": "이전 조회를 중지하고 현재 설정으로 잔액을 다시 조회합니다", "停用全部规则": "모든 규칙 중지", "免费版": "무료 버전", "全局一条队列:数值越小越先用,不分提供商": "전역 대기열 하나: 숫자가 작을수록 먼저 사용되며 제공자를 가리지 않습니다", "全局唯一:所有提供商的账号都不能重号,数值越小越先用": "전역에서 유일: 모든 제공자의 계정이 같은 숫자를 쓸 수 없으며, 숫자가 작을수록 먼저 사용됩니다", "全局队列": "전역 대기열", "全局队列第 {position} 位,共 {total} 位": "전역 대기열 제 {position}위, 총 {total}위", "全选 / 取消全选当前筛选结果(与批量栏同一个选择)": "현재 필터 결과 전체 선택 / 전체 해제 (일괄 작업 표시줄과 같은 선택)", "全选当前筛选结果({n} 个)": "현재 필터 결과 전체 선택 ({n}개)", "全部代理节点(推荐)": "모든 프록시 노드(권장)", "全部启用中的账号将被{what}": "활성 상태인 모든 계정이 {what}됩니다", "全部启用({n})": "모두 활성화 ({n})", "全部清除": "모두 지우기", "全部禁用({n})": "모두 비활성화 ({n})", "全部({n})": "전체 ({n})", "共有 {n} 个账号暂未显示": "계정 {n}개가 표시되지 않습니다", "关闭则不参与转发(余额查询照常,见「查询设置」)": "끄면 포워딩에 참여하지 않습니다 (잔액 조회는 그대로 동작하며, 「조회 설정」 참고)", "关闭后,该账号转发失败时返回本次错误,不再顺延其他账号。禁用、无凭证和限制器等保护仍生效。": "끄면 이 계정에서 전달이 실패할 때 오류를 반환하며 다른 계정으로 전환하지 않습니다. 비활성 계정, 자격 증명 누락 및 제한기 등의 보호는 계속 적용됩니다.", "关闭自动查询后,余额限制器只能使用上次读数;手动查询仍可用。": "자동 조회를 끄면 잔액 제한은 마지막 수치를 사용합니다. 수동 조회는 계속 사용할 수 있습니다.", "内消耗 ≥": "내 소비 ≥", "再领一次": "한 번 더 받기", "冻结余额": "동결 잔액", "凭证与套餐": "자격 증명과 플랜", "凭证已过期,转发时会先刷新": "자격 증명이 만료되었습니다. 포워딩 시 먼저 갱신합니다", "凭证已过期;能否续期取决于登录方式,本机引用需由原客户端处理": "인증 정보가 만료되었습니다. 갱신 가능 여부는 로그인 방식에 따라 다릅니다. 로컬 참조는 원래 클라이언트에서 관리하세요", "出口": "아웃바운드", "出网代理": "아웃바운드 프록시", "分窗口额度": "기간별 할당량", "分组设置": "그룹 설정", "分钟": "분", "刚刚更新": "방금 업데이트됨", "删除各账号的全部限制规则,执行前会再次确认。": "각 계정의 모든 제한 규칙을 삭제합니다. 실행 전에 다시 확인합니다.", "删除提供商": "제공자 삭제", "删除组": "그룹 삭제", "删除账号": "계정 삭제", "删除这条账号记录(不会影响客户端自己的登录态;之后可再点「导入桌面端登录态」加回来)": "이 계정 기록을 삭제합니다 (클라이언트 자체의 로그인 상태에는 영향을 주지 않습니다. 나중에 「데스크톱 로그인 상태 가져오기」를 다시 눌러 되돌릴 수 있습니다)", "删除选中的账号": "선택한 계정 삭제", "到恢复时间后自动解除,无需手动操作": "리셋 시간이 되면 자동 해제되며 수동 조작이 필요 없습니다", "到期 {date}": "만료 {date}", "到期 {time}": "{time} 만료", "到期 近→远": "만료 가까운→먼", "到期 远→近": "만료 먼→가까운", "到期时间": "만료 시각", "刷新 Token": "Token 갱신", "刷新 Token 完成:成功 {ok} 个,跳过 {skip} 个,失败 {fail} 个": "Token 갱신 완료: 성공 {ok}개, 건너뜀 {skip}개, 실패 {fail}개", "刷新 Token:已处理 {completed}/{total} 个,当前账号:{name}": "Token 갱신 중: {completed}/{total}개 처리됨, 현재 계정: {name}", "刷新列表": "목록 새로고침", "刷新套餐与额度": "플랜 및 할당량 새로고침", "刷新账号列表失败,当前仍显示上一次成功读取的数据:{message}": "계정 목록 새로고침에 실패했습니다. 마지막으로 읽은 데이터를 계속 표시합니다: {message}", "刷新账号列表失败:{message}": "계정 목록 새로고침 실패: {message}", "剩 {left} / {total}{unit}": "{total}{unit} 중 {left} 남음", "剩 {n} 分钟": "{n}분 남음", "剩 {remaining}": "잔여 {remaining}", "剩 {remaining} / {total}": "잔여 {remaining} / {total}", "剩不到 1 分钟": "1분 미만 남음", "剩余 {percent}%": "잔여 {percent}%", "剩余比例": "남은 비율", "剩余额度": "남은 할당량", "加载异常": "로드 실패", "北京时间(UTC+8)": "베이징 시간(UTC+8)", "协议": "프로토콜", "即将到期 {count} 份": "곧 만료 {count}개", "即将过期 {n}": "만료 임박 {n}", "历史余额,尚未按新配置验证": "이전 잔액이며 새 설정으로 아직 확인되지 않았습니다", "原代理来源已下线,请选择已保存的代理、自定义地址或直连": "기존 프록시 소스가 종료되었습니다. 저장된 프록시, 사용자 지정 주소 또는 직접 연결을 선택하세요.", "去「插件」页": "플러그인 열기", "去「插件」页启用": "\"플러그인\"에서 활성화", "去「插件」页安装": "\"플러그인\"에서 설치", "去启用": "사용", "去安装": "설치", "又不勾": "체크도 하지 않으면 ", "取消余额查询": "잔액 조회 취소", "取消查询": "조회 취소", "取消查询失败:{message}": "조회 취소 실패: {message}", "取消选择": "선택 해제", "另有 {n} 个已勾选账号被当前筛选隐藏,仍会参与操作": "현재 필터에서 숨겨진 선택 계정 {n}개도 작업에 포함됩니다", "另有 {n} 个账号因提供商插件未就绪,暂未显示": "제공자 플러그인이 준비되지 않아 계정 {n}개가 추가로 숨겨져 있습니다", "只修改本次选择的设置,不影响备注、凭证、转发顺序或其他设置。": "이번에 선택한 설정만 변경하며 메모, 자격 증명, 전달 순서 및 다른 설정은 유지합니다.", "只比较同一家、同单位的数值余额;未知、比例和无限额度不作为零余额,有明确余额的账号优先。": "같은 공급자와 같은 단위의 수치 잔액만 비교합니다. 알 수 없음, 비율, 무제한 할당량은 잔액 0으로 처리하지 않으며 잔액이 확인된 계정을 우선합니다.", "只重试临时故障;次数与整轮时间上限任一用尽即停止,凭证错误不重试。": "일시적인 오류만 재시도합니다. 재시도 횟수나 전체 제한 시간에 도달하면 중지하며, 인증 정보 오류는 재시도하지 않습니다.", "可添加多条;同类规则也允许并存(例如一条按余额、两条不同重置方式的 Token)": "여러 개를 추가할 수 있으며 같은 종류의 규칙도 함께 둘 수 있습니다 (예: 잔액 기준 1개, 초기화 방식이 다른 Token 규칙 2개)", "可用 {total}": "사용 가능 {total}", "可用 {value}": "사용 가능 {value}", "可用 {value} {unit}": "사용 가능 {value} {unit}", "可用余额": "사용 가능 잔액", "可用合计": "사용 가능 합계", "可用最低": "최저 사용 가능", "可留空:新版请求头只认令牌;旧版会把用户 ID 放进 New-Api-User 头": "비워 둘 수 있음: 새 버전 헤더는 토큰만 인식하며, 구버전은 사용자 ID를 New-Api-User 헤더에 넣습니다", "可领取的套餐": "받을 수 있는 플랜", "各窗口独立限制请求,不相加为总余额。": "각 기간은 요청을 독립적으로 제한하므로 총잔액으로 합산하지 않습니다.", "同提供商内暂无其他账号占用优先级": "같은 제공자 내에 우선순위를 점유한 다른 계정이 없습니다", "同提供商已占用:{names}": "같은 제공자에서 사용 중: {names}", "名称": "이름", "后续加入": "추후 추가", "含 {n} 个不限额度账号,合计记为 ∞": "무제한 계정 {n}개 포함, 합계는 ∞로 표시", "启动中…": "시작 중…", "启用全部规则": "모든 규칙 활성화", "启用插件包后自动回来": "플러그인 팩을 활성화하면 자동으로 돌아옵니다", "启用状态": "활성 상태", "启用该规则": "이 규칙 활성화", "启用该账号": "이 계정 활성화", "启用这一组里的全部账号(含被筛选隐藏的)": "이 그룹의 모든 계정을 활성화합니다 (필터로 숨겨진 것 포함)", "启用这家提供商后自动回来": "이 제공자를 활성화하면 자동으로 돌아옵니다", "周期": "주기", "周期 Token": "주기 Token", "周期单位": "주기 단위", "命中条件的模型": "조건에 해당하는 모델", "商汤日日新控制台的登录密码": "SenseNova 콘솔 로그인 비밀번호", "商汤日日新控制台的登录账号": "SenseNova 콘솔 로그인 계정", "固定兜底,不受开关影响": "고정 대체 순서, 스위치의 영향을 받지 않습니다", "固定周期": "고정 주기", "在 NewAPI 站点「个人设置」里生成的访问令牌": "NewAPI 사이트 \"개인 설정\"에서 발급한 액세스 토큰", "在列表里拖:拖分组带调整整组顺位,拖行首把手调整组内先后(顺序由拖拽表达,不再填数字)": "목록에서 드래그: 그룹 바를 드래그해 그룹 전체 순위를, 행 머리 손잡이를 드래그해 그룹 내 순서를 조정합니다 (순서는 드래그로 표현, 숫자 입력은 폐지)", "在账号设置的「基本」分组里设置该账号同时最多处理的请求数": "계정 설정의 「기본」 그룹에서 이 계정이 동시에 처리할 최대 요청 수를 설정합니다", "地址与端口由「网络代理」页管理:那边改一次、测一次,所有引用它的账号一起生效": "주소와 포트는 「네트워크 프록시」 페이지에서 관리합니다: 거기서 한 번 수정하고 한 번 테스트하면 이를 참조하는 모든 계정에 함께 적용됩니다", "基本": "기본", "填入系统代理": "시스템 프록시 가져오기", "备注名 / 启用 / 代理": "라벨명 / 활성 / 프록시", "备注名 {name}": "라벨명 {name}", "备注名不能为空": "라벨명은 비울 수 없습니다", "备注名已更新": "라벨명을 갱신했습니다", "复制当前设置": "현재 설정 복사", "复制自账号": "복사할 계정", "失败 {count} 个:": "실패 {count}개: ", "失败后允许换号": "실패 후 계정 전환 허용", "失败重试次数": "실패 시 재시도 횟수", "失败重试次数必须是 0~{max} 的整数": "재시도 횟수는 0~{max}의 정수여야 합니다", "套餐 {name}": "플랜 {name}", "套餐实例不能跨账号复制,请改用通用额度或本地保护条件": "플랜 인스턴스는 다른 계정으로 복사할 수 없습니다. 공통 할당량 또는 로컬 보호 조건을 사용하세요.", "套餐尚未生效或已经到期": "플랜이 아직 시작되지 않았거나 만료되었습니다", "套餐池": "플랜 풀", "套餐池的推理端点要求每条请求带一个阿里云验证码令牌;令牌由本应用在后台静默铸造,界面关闭时无法铸造": "플랜 풀 추론 엔드포인트는 요청마다 Aliyun 캡차 토큰이 필요합니다; 토큰은 본 앱이 백그라운드에서 조용히 생성하며, UI가 닫혀 있으면 생성할 수 없습니다", "套餐池(Start Plan)": "플랜 풀 (Start Plan)", "套餐池(Start Plan)— 走 zcode.z.ai 端点,消耗 ZCode 套餐池的额度(新用户体验额度 / 活动领取)": "플랜 풀 (Start Plan) — zcode.z.ai 엔드포인트를 사용하며, ZCode 플랜 풀의 할당량(신규 사용자 체험 할당량 / 이벤트 수령분)을 씁니다", "套餐积分的重置日期": "플랜 포인트 초기화 날짜", "存在延迟计量信息,无法据此推算当前余额": "지연된 사용량 정보로 현재 잔액을 추정할 수 없습니다", "它会改写请求体": "요청 본문을 재작성합니다", "官方限时活动": "공식 기간 한정 이벤트", "实际阈值:{value} Token": "실제 임계값: {value} Token", "对话 token": "대화 token", "对话请求": "대화 요청", "导出文件包含登录凭证,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "내보낸 파일에는 로그인에 사용할 수 있는 인증 정보가 포함됩니다. 안전하게 보관하고 외부에 공유하거나 공개된 위치에 업로드하지 마세요.", "导出未返回结果": "내보내기 결과가 반환되지 않았습니다.", "导出本组全部账号,每个账号一个 JSON 文件(含被筛选隐藏的)": "이 그룹의 모든 계정을 개별 JSON 파일로 내보냅니다(필터로 숨겨진 계정 포함)", "导出本组账号": "이 그룹 계정 내보내기", "将作用于以下账号": "다음 계정에 적용됩니다", "将用草稿中的 {rules} 条规则替换 {count} 个账号的全部限制规则,原有规则不会保留。确定继续?": "{count}개 계정의 모든 제한 규칙을 초안의 {rules}개 규칙으로 교체합니다. 기존 규칙은 유지되지 않습니다. 계속할까요?", "将这个账号及其登录凭证保存为单独的 JSON 文件": "이 계정과 로그인 인증 정보를 개별 JSON 파일로 저장합니다", "小时": "시간", "小浣熊": "小浣熊", "尚未查询该账号的余额": "이 계정의 잔액을 아직 조회하지 않았습니다", "尝试领取": "수령 시도", "展开": "펼치기", "展开全部": "모두 펼치기", "展开全部分组": "모든 그룹 펼치기", "展开或收起(默认收起)": "펼치기 또는 접기(기본은 접힘)", "展开这一组": "이 그룹 펼치기", "已保存的代理": "저장된 프록시", "已停用": "사용 중지", "已发起 {count} 个账号文件的下载,请在浏览器下载列表确认": "계정 파일 {count}개의 다운로드를 시작했습니다. 브라우저 다운로드 목록에서 확인해 주세요.", "已取消查询": "조회가 취소되었습니다", "已启用 {name}": "{name} 활성화됨", "已启用自动排序,组内拖动已锁定;关闭全部规则可恢复原手动顺序。": "자동 정렬이 켜져 그룹 내 드래그가 잠겼습니다. 모든 규칙을 끄면 기존 수동 순서로 돌아갑니다.", "已启用,点击禁用(不参与转发)": "활성, 클릭하면 비활성화 (포워딩에 참여하지 않음)", "已在全局队列第一位": "이미 전역 대기열 1위입니다", "已复制到草稿,执行后才会应用到所选账号": "초안에 복사했습니다. 실행해야 선택한 계정에 적용됩니다", "已导出 {count} 个账号文件,{failed} 个未导出:{reason}": "계정 파일 {count}개를 내보냈으며 {failed}개는 내보내지 못했습니다: {reason}", "已是首选": "이미 최우선입니다", "已暂停验证,需要时请手动重试": "인증이 일시 중지되었습니다. 필요할 때 수동으로 다시 시도하세요.", "已更新 {ok}/{total} 个账号,{failed} 个失败": "계정 {ok}/{total}개 갱신, {failed}개 실패", "已查询": "조회됨", "已用 {used}": "사용 {used}", "已用 {used} / 共 {total}": "사용 {used} / 전체 {total}", "已用完 / 已过期": "소진 / 만료", "已用比例": "사용한 비율", "已用额度": "사용한 할당량", "已禁用": "비활성", "已禁用 {name}": "{name} 비활성화됨", "已禁用,点击启用": "비활성, 클릭하면 활성화", "已筛选 {n} 项": "{n}개 표시 중", "已被「{name}」占用": "「{name}」이(가) 사용 중", "已触发": "트리거됨", "已触发 · 账号已禁用": "발동됨 · 계정 비활성화됨", "已设为首选": "최우선으로 설정했습니다", "已设置": "설정됨", "已跳过{current}": "건너뜀{current}", "已跳过{usage}{countdown}": "건너뜀{usage}{countdown}", "已达上限{usage}": "상한 도달{usage}", "已过期": "만료됨", "已过期({time})": "만료됨 ({time})", "已选": "선택", "已配置,留空则不修改": "설정됨, 비워 두면 변경하지 않음", "已限流": "속도 제한됨", "已领到、还没到生效时间的套餐(生效后余额列会按它显示):\n{lines}": "받았지만 아직 적용되지 않은 플랜(적용되면 잔액 열에 표시됩니다):\n{lines}", "并发上限": "동시 접속 상한", "并发上限 0~{max};CodeArts 等有默认值的家填 0 即按本家默认;达到上限的账号会被跳过、请求转给其他账号": "동시 접속 상한 0~{max}; 기본값이 있는 제공자(예: CodeArts)는 0을 입력하면 해당 기본값이 적용됩니다; 상한에 도달한 계정은 건너뛰고 요청은 다른 계정으로 전달됩니다", "并发上限 0~{max};达到上限的账号会被跳过、请求转给其他账号": "동시 접속 상한 0~{max}; 상한에 도달한 계정은 건너뛰고 요청은 다른 계정으로 전달됩니다", "并发上限 0~{max};达到上限的账号跳过、请求转给其他账号(原列表 ⋯ 菜单的「并发上限」入口已并入这里)": "동시 접속 상한 0~{max}; 상한에 도달한 계정은 건너뛰고 요청은 다른 계정으로 전달됩니다 (기존 목록 ⋯ 메뉴의 「동시 접속 상한」 항목은 여기로 통합되었습니다)", "并发上限 填 0 即按本家默认 {default};填 1 或 2 就按填的算,更大的数会被本家上限截断(原列表 ⋯ 菜单的「并发上限」入口已并入这里)": "0을 입력하면 이 제공자의 기본값({default})이 적용됩니다; 1이나 2는 입력한 값 그대로 적용되고, 더 큰 값은 제공자 상한으로 잘립니다 (기존 목록 ⋯ 메뉴의 「동시 접속 상한」 항목은 여기로 통합되었습니다)", "并发上限必须是 0~{max} 的整数": "동시 접속 상한은 0~{max}의 정수여야 합니다", "并发上限:{value}": "동시 접속 상한: {value}", "开启后,网关按 OpenCode 官方 CLI 的形状发请求:没填 Key 的账号用匿名凭证": "켜면 게이트웨이가 OpenCode 공식 CLI와 같은 형태로 요청을 보냅니다: Key를 입력하지 않은 계정은 익명 자격 증명", "开始 {time}": "시작 {time}", "当": "조건", "当前不符合资格": "현재 수령 대상 아님", "当前不需要验证码令牌": "현재 캡차 토큰이 필요하지 않습니다", "当前代理不可用,请重新选择": "현재 프록시를 사용할 수 없습니다. 다시 선택하세요.", "当前代理不可用:{error}(不会自动改为直连)": "현재 프록시 사용 불가: {error} (직접 연결로 자동 전환하지 않음)", "当前代理不可用:{error}(转发时会回退直连)": "현재 프록시 사용 불가: {error} (포워딩 시 직접 연결로 폴백)", "当前余额 {n};与余额列同一数字口径,严格小于才触发(等于阈值仍可用)": "현재 잔액 {n}; 잔액 열과 같은 수치 기준이며 임계값보다 엄격히 작을 때만 발동합니다 (임계값과 같으면 사용 가능)", "当前可手动调整组内顺序。": "현재 그룹 내 순서를 수동으로 조정할 수 있습니다.", "当前可用 ∞(不参与余额不足判定)": "현재 사용 가능 ∞ (잔액 부족 판정에 참여하지 않음)", "当前客户端不支持逐账号导出,请更新客户端": "현재 클라이언트는 계정별 내보내기를 지원하지 않습니다. 클라이언트를 업데이트해 주세요.", "当前已经是默认规则": "이미 기본 규칙입니다", "当前排序规则:{rules}。点击调整": "현재 정렬 규칙: {rules}. 클릭하여 조정", "当前未发现本期活动,不代表账号不符合资格": "현재 이벤트를 찾지 못했습니다. 계정에 수령 자격이 없다는 뜻은 아닙니다.", "当前没有任何模型处于限流中": "현재 속도 제한 중인 모델이 없습니다", "当前没有可领取的套餐(活动期内每天发一份,明天可再领)": "지금 받을 수 있는 플랜이 없습니다(이벤트 기간에는 매일 한 건씩 지급되며, 내일 다시 받을 수 있습니다)", "当前没有限流中的模型。": "현재 속도 제한 중인 모델이 없습니다.", "当前筛选下 {n} 个账号的百分比读数不能相加,取最低的剩余比例(随筛选、搜索变化,不受分页影响)": "현재 필터의 {n}개 계정 백분율은 합산할 수 없어 가장 낮은 잔여 비율을 표시합니다(필터·검색에 따라 변동, 페이지 영향 없음)", "当前筛选下 {n} 个账号的额度概览(随筛选、搜索变化,不受分页影响)": "현재 필터에 해당하는 계정 {n}개의 할당량 개요(필터와 검색에 따라 변경되며 페이지 이동의 영향을 받지 않음)", "当前筛选下没有账号": "현재 필터에 맞는 계정이 없습니다", "当前筛选条件下没有账号": "현재 필터 조건에 맞는 계정이 없습니다", "当前网关不支持余额排序,请先更新网关": "현재 게이트웨이는 잔액 정렬을 지원하지 않습니다. 먼저 게이트웨이를 업데이트하세요.", "当前规则:{rules}。": "현재 규칙: {rules}.", "当前规则:{rules}。自动排序生效时,组内拖动把手会锁定;关掉全部规则即回到手动顺序。": "현재 규칙: {rules}. 자동 정렬이 켜져 있는 동안 그룹 내 드래그 핸들이 잠깁니다. 모든 규칙을 끄면 수동 순서로 돌아갑니다.", "当前视图不能调整组顺位:{reason} 之后再拖动": "현재 화면에서는 그룹 순서를 변경할 수 없습니다: {reason}로 돌린 뒤 드래그하세요", "当前钩子仅提供套餐与周期,未提供余额数值": "현재 hook는 플랜과 기간 정보만 제공하며 잔액 수치는 없습니다", "当前:{label}(Clash Verge 直接引用);可在「网络代理」页同步端点后改选": "현재: {label}(Clash Verge 직접 참조). 「네트워크 프록시」 페이지에서 엔드포인트를 동기화한 후 변경할 수 있습니다.", "当前:{label}(未经过代理池 —— 可在「网络代理」页把出口同步进池后来这里改选)": "현재: {label} (프록시 풀을 거치지 않음 — 「네트워크 프록시」 페이지에서 아웃바운드를 풀에 동기화한 뒤 여기서 다시 선택할 수 있습니다)", "当前:{label}(未经过代理池 —— 可在「网络代理」页添加相同地址后来这里改选)": "현재: {label}(프록시 풀 미사용. 네트워크 프록시 페이지에 같은 주소를 추가한 뒤 여기에서 선택하세요)", "当前:{label}(每条请求换一个出口);「自定义代理…」打开完整设置": "현재: {label}(요청마다 아웃바운드가 바뀝니다); 「사용자 지정 프록시…」에서 전체 설정을 엽니다", "当前:{label};选项来自「网络代理」页;「自定义代理…」打开完整设置": "현재: {label}; 항목은 「네트워크 프록시」 페이지에서 가져오며, 「사용자 지정 프록시…」를 누르면 전체 설정이 열립니다", "当前:{value}": "현재: {value}", "待定": "미정", "待生效": "적용 대기", "待生效 {n} 份": "적용 대기 {n}건", "待生效 {time}": "{time}부터 적용", "必填": "필수", "必填;留空 = 不修改,清除用右边的按钮": "필수. 비워 두면 변경 없음, 지우기는 오른쪽 버튼으로", "总剩余 {total} · 套餐 {plan} · 奖励 {bonus}": "총 잔여 {total} · 플랜 {plan} · 보너스 {bonus}", "总积分": "총 가용 포인트", "总积分是当前可用积分的汇总,与余额列一致;不重复累加汇总行,不包含 Token、次数或其他单位的额度。": "현재 사용 가능한 포인트의 합계이며 잔액 열과 같은 값입니다. 합계 행은 중복 계산하지 않고 Token, 요청 횟수 및 다른 단위의 할당량은 포함하지 않습니다.", "总量 {value}": "총량 {value}", "恢复时间未知": "리셋 시간 미정", "恢复默认:仅开启最快到期优先": "기본값 복원: 만료가 빠른 순만 켜기", "恢复默认:仅按手动顺序": "기본값 복원: 수동 순서만", "恢复默认:最快到期优先,账号添加时间关闭": "기본값 복원: 만료가 빠른 순, 추가 시간 정렬 끔", "我的套餐": "내 플랜", "或": "또는", "所有提供商都有这个字段": "모든 제공자에 이 필드가 있습니다", "所选账号的各周期:{list}": "선택한 계정의 기간별 수치: {list}", "手动添加": "수동 추가", "打开批量操作弹窗,并预选这一组的账号(改代理等动作在弹窗里挑参数)": "일괄 작업 대화상자를 열고 이 그룹의 계정을 미리 선택합니다 (프록시 변경 등의 매개변수는 대화상자에서 고릅니다)", "执行中…": "실행 중…", "执行({action})": "실행 ({action})", "批量动作": "일괄 동작", "批量操作 · 已选 {count} 个账号": "일괄 작업 · 계정 {count}개 선택됨", "批量操作失败:{error}": "일괄 작업 실패: {error}", "批量操作已保存,但列表刷新失败:{error}": "일괄 변경은 저장되었지만 목록 새로고침에 실패했습니다: {error}", "批量操作接口不可用,请重新打开页面": "일괄 작업 인터페이스를 사용할 수 없습니다. 페이지를 다시 여세요", "批量操作未返回结果,请刷新后确认状态": "일괄 작업 결과가 반환되지 않았습니다. 새로고침 후 상태를 확인하세요", "批量操作本组": "이 그룹 일괄 작업", "批量操作结果不完整,请刷新后核对所选账号": "일괄 작업 결과가 불완전합니다. 새로고침 후 선택한 계정을 확인해 주세요.", "批量操作结果未确认,请刷新后核对设置": "일괄 업데이트 결과를 확인하지 못했습니다. 새로고침 후 설정을 확인해 주세요.", "批量规则按每个账号分别判定,不合并余额或 Token 用量。": "일괄 규칙은 계정별로 판정하며 잔액이나 Token 사용량을 합산하지 않습니다.", "把每页调回「全部」": "페이지 크기를 \"전체\"로 되돌리기", "折叠": "접기", "折叠全部": "모두 접기", "折叠全部分组(只留组头)": "모든 그룹 접기 (그룹 헤더만 남김)", "折叠这一组": "이 그룹 접기", "拖动调整列宽(双击还原)": "드래그하여 열 너비 조정 (더블클릭하면 복원)", "拖动调整整组顺序": "드래그로 그룹 전체 순서 조정", "拖动调整组内顺序": "드래그로 그룹 내 순서 조정", "按上游额度查询的读数判定;模型共用同一个额度池时,选择模型不会拆分该池余额。": "업스트림 할당량 조회 값으로 판정합니다. 모델이 같은 할당량 풀을 공유하면 모델을 선택해도 풀 잔액은 분리되지 않습니다.", "按优先级从上到下比较,勾选的项才参与": "위에서 아래로 우선순위를 비교하며, 체크한 항목만 참여합니다", "按住拖动,调整这一家的组顺位(整组一起动)": "눌러서 드래그하면 이 제공자의 그룹 순위가 조정됩니다 (그룹 전체가 함께 이동)", "按住拖动,调整这个账号在本组内的顺序": "눌러서 드래그하면 이 계정의 그룹 내 순서가 조정됩니다", "按总积分设置限制": "총 포인트로 제한", "按提供商筛选账号": "제공자별 계정 필터", "按最低剩余比例选择账号,所有周期均来自同一账号": "남은 비율이 가장 낮은 계정을 선택하며, 모든 기간은 같은 계정의 수치를 표시합니다", "按未显示原因筛选": "표시되지 않은 이유로 필터", "按模型": "모델별", "按每日或短周期实际可用额度最低的账号展示,所有周期均来自同一账号": "일일 또는 단기 실제 사용 가능 할당량이 가장 적은 계정을 선택하며, 모든 기간은 같은 계정의 수치를 표시합니다", "按规则限制该账号参与转发:没有规则(或全部停用)= 不限制;跳过档自动恢复,禁用档需手动启用。": "규칙에 따라 이 계정의 포워딩 참여를 제한합니다: 규칙이 없거나 모두 중지된 경우 = 제한 없음. 건너뛰기 옵션은 자동 리셋되고, 비활성화 옵션은 수동으로 활성화해야 합니다.", "按账号总可用余额比较,不重复累加积分明细": "계정의 총 사용 가능 잔액을 비교하며 포인트 상세 내역을 중복 합산하지 않습니다", "按账号最早到期、且还有剩余的积分包比较": "잔액이 남아 있고 만료되지 않은 크레딧 팩 중 가장 이른 만료 시각으로 비교합니다", "排序": "정렬", "提供商已停用": "제공자 비활성화됨", "提供商显示名,1~{max} 个字符": "제공자 표시 이름, 1~{max}자", "提供商:{name}": "제공자: {name}", "提高优先级": "우선순위 올리기", "插件包已停用": "플러그인 팩 비활성화됨", "插件已启用但加载失败": "플러그인은 활성화되어 있지만 로드에 실패했습니다", "插件未加载": "플러그인 로드 안 됨", "插件未安装": "플러그인 미설치", "搜索": "검색", "搜索账号": "계정 검색", "搜索账号 / 邮箱 / 备注": "계정 / 이메일 / 메모 검색", "操作失败:{message}": "작업 실패: {message}", "收起": "접기", "改动即时生效": "변경 사항은 즉시 적용됩니다", "改协议 / Base URL 会改变它们的转发方式,正在进行的请求可能失败;模型清单与映射在「模型管理」页。": "프로토콜 / Base URL을 바꾸면 포워딩 방식이 달라져 진행 중인 요청이 실패할 수 있습니다. 모델 목록과 매핑은 「모델 관리」 페이지에 있습니다.", "数值越小越先用;": "숫자가 작을수록 먼저 사용됩니다. ", "数值越小越先用;{hint}": "숫자가 작을수록 먼저 사용됩니다. {hint}", "整个账号": "전체 계정", "整轮查询时限": "전체 조회 제한 시간", "整轮查询时限必须是 15~180 秒的整数": "전체 조회 제한 시간은 15~180초 사이의 정수여야 합니다.", "新账号落到组首 / 组尾": "새 계정을 맨 위 / 맨 아래에 추가", "旗舰": "플래그십", "无上限 · 已用 {used}": "상한 없음 · 사용 {used}", "无上限按日计(上游到达上限后仍继续计数,超额如实显示)": "상한 없음은 일 단위로 계산됩니다 (업스트림이 상한에 도달해도 계속 집계하며, 초과분은 그대로 표시됩니다)", "无代理(直连)": "프록시 없음 (직접 연결)", "无数据": "데이터 없음", "无法拖动:已启用自动消耗规则({rules})。请先在「消耗顺序」中关闭这些规则,再手动调整。": "자동 소모 규칙({rules})이 켜져 있어 드래그할 수 없습니다. 소모 순서에서 해당 규칙을 끈 뒤 수동으로 조정하세요.", "无法拖动:当前已按积分到期时间和账号添加时间自动排序。请先在「消耗顺序」中关闭这两项规则,再手动调整。": "드래그할 수 없습니다. 현재 크레딧 만료일과 계정 추가 시간으로 자동 정렬 중입니다. 수동으로 순서를 바꾸려면 먼저 「소비 순서」에서 두 규칙을 모두 끄세요.", "无法拖动:当前已按积分到期时间自动排序。请先在「消耗顺序」中关闭该规则,再手动调整。": "드래그할 수 없습니다. 현재 크레딧 만료일로 자동 정렬 중입니다. 수동으로 순서를 바꾸려면 먼저 「소비 순서」에서 이 규칙을 끄세요.", "无法拖动:当前已按账号添加时间自动排序。请先在「消耗顺序」中关闭该规则,再手动调整。": "드래그할 수 없습니다. 현재 계정 추가 시간으로 자동 정렬 중입니다. 수동으로 순서를 바꾸려면 먼저 「소비 순서」에서 이 규칙을 끄세요.", "无福利额度": "혜택 할당량 없음", "既有 Clash Verge 直接引用继续可用;也可在「网络代理」页同步端点,再改选「已保存的代理」。": "기존 Clash Verge 직접 참조는 계속 사용할 수 있습니다. 「네트워크 프록시」 페이지에서 엔드포인트를 동기화한 후 「저장된 프록시」로 변경할 수도 있습니다.", "旧数据导入": "기존 데이터 가져오기", "旧版 / 定制站点才需要,新版可留空": "구버전 / 커스텀 사이트에만 필요하며, 새 버전은 비워 둘 수 있습니다", "时": "미만일 때", "明天 {clock}": "내일 {clock}", "明天 {time}": "내일 {time}", "明天到期": "내일 만료", "明细": "상세", "昵称 {name}": "닉네임 {name}", "显示账号名": "계정 이름 표시", "暂无可查询余额的账号": "잔액을 조회할 수 있는 계정이 없습니다", "暂无可比较余额;查到同单位的数值后自动生效,比例与无限额度不参与": "비교 가능한 잔액이 없습니다. 같은 단위의 수치가 조회되면 자동 적용됩니다. 비율과 무제한 할당량은 제외됩니다", "暂无可用积分信息": "현재 확인할 수 있는 크레딧 정보가 없습니다", "暂无数据:先查询一次余额,之后会自动按到期排序": "데이터 없음: 잔액을 한 번 조회하면 이후 만료일 기준으로 자동 정렬됩니다", "暂无数据:先查询一次余额,可按需启用到期排序": "데이터 없음: 잔액을 한 번 조회한 뒤 필요하면 만료일 정렬을 켜세요", "暂无读数": "조회 값 없음", "暂无账号,请点击右上角「添加账号」": "계정이 없습니다. 오른쪽 위 「계정 추가」를 클릭하세요", "暂无额度信息": "한도 정보 없음", "更多操作": "더 많은 작업", "更多设置": "추가 설정", "更新于 {time}": "{time} 업데이트", "更新失败": "업데이트 실패", "替换全部规则": "모든 규칙 교체", "替换选中账号的限制规则": "선택한 계정의 제한 규칙 교체", "最快到期优先": "만료가 빠른 순", "最新添加优先": "최근 추가 순", "最早 {soonest} 恢复": "가장 빠른 리셋: {soonest}", "最早恢复": "가장 빠른 리셋 시간", "最早添加优先": "오래된 추가 순", "最晚到期优先": "만료가 늦은 순", "有 {n} 个账号因提供商插件未就绪,暂未显示": "제공자 플러그인이 준비되지 않아 계정 {n}개가 숨겨져 있습니다", "有效期": "유효 기간", "有的账号过了 0 点额度就回来 —— 选「自然日」": "0시가 지나면 할당량이 돌아오는 계정도 있습니다 — 「자연일」을 선택하세요", "服务器本地时区": "서버 로컬 시간대", "未使用": "미사용", "未启用套餐池账号,不生成验证码令牌": "활성화된 Start Plan 계정이 없어 인증 토큰을 생성하지 않습니다.", "未命名账号": "이름 없는 계정", "未声明可手动续期;本机引用请在原客户端处理登录态。": "수동 갱신 기능이 선언되지 않았습니다. 로컬 참조 로그인 상태는 원래 클라이언트에서 관리하세요.", "未接入查询": "조회 미연동", "未显示的账号": "숨겨진 계정", "未显示账号": "숨겨진 계정", "未查询": "미조회", "未检测到 Clash Verge": "Clash Verge를 찾을 수 없습니다", "未检测到 Clash Verge 配置": "Clash Verge 구성을 찾을 수 없습니다", "未被使用": "사용되지 않음", "未触发": "트리거되지 않음", "未触发{current}": "미발동{current}", "未触发{usage}{countdown}": "미발동{usage}{countdown}", "未设备注名": "라벨명 없음", "未返回余额数据": "잔액 데이터가 반환되지 않았습니다", "未返回可确认的余额数值": "확인 가능한 잔액 수치가 반환되지 않았습니다", "未返回可识别的余额数据": "인식할 수 있는 잔액 데이터가 반환되지 않았습니다", "未返回重置时间": "초기화 시간 없음", "未配置": "미설정", "未配置凭证": "자격 증명 미설정", "本周期 Token 消耗达到限制器的上限,账号已被自动禁用(窗口重置也不恢复,需手动启用)": "이번 주기 Token 소비가 리미터 상한에 도달해 계정이 자동 비활성화되었습니다 (구간이 초기화돼도 리셋되지 않으며, 수동으로 활성화해야 합니다)", "本周期 Token 消耗达到限制器的上限,转发时会跳过该账号(窗口重置自动恢复)": "이번 주기 Token 소비가 리미터 상한에 도달해 포워딩 시 이 계정을 건너뜁니다 (구간 초기화 시 자동 리셋)", "本周期已用": "이번 주기 사용", "本地 Token 消耗": "로컬 토큰 사용량", "本地台账里今天还领过这些,但上面的读数里还没有:{plans}(读数刷新可能有延迟)": "로컬 기록상 오늘 더 받은 항목이 있지만 위의 판독값에는 아직 없습니다: {plans}(판독값 갱신에 시간이 걸릴 수 있습니다)", "本地消耗上限必须是大于 0 的安全整数": "로컬 사용량 한도는 0보다 큰 안전한 정수여야 합니다", "本地用量保护": "로컬 사용량 보호", "本地统计只包含经过本网关的请求,不等于上游账单;清理请求日志不会清零。套餐选择用于限定保护范围,不会强制上游扣指定套餐。": "로컬 통계는 이 게이트웨이를 통과한 요청만 포함하며 업스트림 청구 내역과 다릅니다. 요청 로그를 삭제해도 초기화되지 않습니다. 플랜 선택은 보호 범위만 지정하며 업스트림에 특정 플랜 차감을 강제하지 않습니다.", "本地请求次数": "로컬 요청 횟수", "本地领取于 {time}": "로컬에서 {time}에 받음", "本提供商不支持积分到期排序,默认保持手动顺序;可按需启用账号添加时间排序。": "이 제공자는 크레딧 만료일 정렬을 지원하지 않아 기본적으로 수동 순서를 유지합니다. 필요하면 추가 시간 정렬을 켤 수 있습니다.", "本提供商默认启用最快到期优先,账号添加时间默认关闭;关闭全部规则可恢复手动顺序。": "이 제공자는 기본적으로 만료가 빠른 순으로 정렬하며 추가 시간 정렬은 꺼져 있습니다. 모든 규칙을 끄면 수동 순서로 돌아갑니다.", "本期活动": "현재 이벤트", "本期活动按套餐分别展示,领取资格以上游返回为准": "현재 이벤트를 플랜별로 표시합니다. 수령 자격은 업스트림 응답을 기준으로 합니다.", "本组 {n} 个账号的可用余额之和,按整组统计(不受筛选、搜索影响)": "이 그룹 {n}개 계정의 사용 가능 잔액 합계(그룹 전체 기준, 필터·검색의 영향을 받지 않음)", "本组 {n} 个账号的百分比读数不能相加,取组内最低的剩余比例(按整组统计,不受筛选、搜索影响)": "이 그룹 {n}개 계정의 백분율은 합산할 수 없어 그룹 내 가장 낮은 잔여 비율을 표시합니다(그룹 전체 기준, 필터·검색 영향 없음)", "本组 {n} 个账号的额度概览(按整组统计,不受筛选、搜索影响)": "이 그룹의 계정 {n}개에 대한 할당량 개요(전체 그룹 기준, 필터와 검색의 영향을 받지 않음)", "本组代理": "이 그룹의 프록시", "本组操作": "그룹 작업", "本组每个账号会分别保存为一个 JSON 文件,包含被筛选隐藏的账号。": "이 그룹의 각 계정을 개별 JSON 파일로 저장합니다. 필터로 숨겨진 계정도 포함됩니다.", "权益 {value}": "권익 {value}", "权益 {value} {unit}": "권익 {value} {unit}", "条件即时生效,关掉面板就能看到结果。": "조건은 즉시 적용됩니다. 패널을 닫으면 결과가 보입니다.", "条件组 {n}": "조건 그룹 {n}", "来源 {source}": "출처 {source}", "查看": "보기", "查看因插件未就绪而暂未显示的账号": "플러그인이 준비되지 않아 표시되지 않은 계정", "查看插件状态": "플러그인 상태 확인", "查询中…": "조회 중…", "查询余额": "잔액 조회", "查询全部账号的余额(含已禁用账号 —— 禁用只表示不参与转发)": "모든 계정의 잔액 조회 (비활성 계정 포함 — 비활성은 포워딩에 참여하지 않는다는 뜻일 뿐입니다)", "查询凭证还没配齐:填好后余额列才有读数,在此之前会显示「未配置」。": "조회 자격 증명이 아직 완비되지 않았습니다: 채워 넣어야 잔액 열에 수치가 표시되며, 그 전에는 \"미설정\"으로 보입니다.", "查询失败": "조회 실패", "查询失败:{message}": "조회 실패: {message}", "查询已成功,但上游未提供额度数据,不代表余额为零。": "조회는 성공했지만 공급자가 한도 데이터를 반환하지 않았습니다. 잔액이 0이라는 뜻은 아닙니다.", "查询设置": "조회 설정", "查询该账号剩余余额(读数显示在余额列)": "이 계정의 남은 잔액 조회 (수치는 잔액 열에 표시)", "查询超时,可重新查询": "조회 시간이 초과되었습니다. 다시 조회할 수 있습니다.", "查询间隔": "조회 간격", "查询间隔必须是 {min} 秒 ~ 24 小时": "조회 간격은 {min}초 ~ 24시간이어야 합니다", "桌面端实时登录态请在原客户端更新": "실시간 데스크톱 로그인 상태는 원래 클라이언트에서 갱신하세요", "桌面端实时登录态(凭证每次从客户端登录态文件读取)": "데스크톱 실시간 로그인 상태 (자격 증명은 매번 클라이언트 로그인 상태 파일에서 읽음)", "模型范围": "모델 범위", "正在加载…": "로딩 중…", "正在探测可领取的套餐…": "받을 수 있는 플랜을 확인하는 중…", "正在查询": "조회 중", "正在查询本期活动…": "현재 이벤트를 확인하는 중…", "正在补铸验证码令牌": "캡차 토큰 생성 중", "正在读取 Clash Verge 配置…": "Clash Verge 구성을 읽는 중…", "正在读取…": "읽는 중…", "正在读取代理列表…": "프록시 목록을 읽는 중…", "正在连接上游…": "업스트림에 연결하는 중…", "正常": "정상", "此刻正在使用这个账号的请求数(含还在下发内容的流式请求);为 0 时不显示": "지금 이 계정을 사용 중인 요청 수 (콘텐츠를 계속 내려보내는 스트리밍 요청 포함). 0이면 표시하지 않습니다", "此额度不属于账号当前使用的通道": "이 할당량은 계정의 현재 채널에 속하지 않습니다", "此额度不属于账号当前使用的通道,切换到对应通道后才参与判定。": "이 할당량은 계정의 현재 채널에 속하지 않습니다. 해당 채널로 전환해야 판정에 사용됩니다.", "每": "매", "每 {period}消耗 ≥ {count} Token": "매 {period}마다 소비 ≥ {count} Token", "每周或每月额度已耗尽,短周期实际可用额度按 0% 计算;账号明细保留原始读数": "주간 또는 월간 할당량을 모두 사용하여 단기 실제 사용 가능 할당량을 0%로 계산합니다. 계정 상세에는 원래 수치를 유지합니다", "每日消耗 ≥": "일일 소비 ≥", "每日消耗 ≥ {count} Token(每天 0 点重置)": "일일 소비 ≥ {count} Token (매일 0시 초기화)", "每日重置": "매일 초기화", "每日重置(额度按周期回满,不是作废)": "매일 초기화(할당량은 주기마다 다시 채워지며 소멸되지 않습니다)", "每条请求换一个出口(按顺序轮流),上游看到的 IP 因此是变化的;出口的地址与端口由「网络代理」页管理": "요청마다 다음 아웃바운드로 차례로 바뀌므로 업스트림이 보는 IP가 달라집니다. 아웃바운드의 주소와 포트는 「네트워크 프록시」페이지에서 관리합니다", "每组共用一个触发动作;第二条条件起可选择「与/或」。与优先于或,下面会显示明确分组。各条件组独立生效。": "그룹마다 하나의 동작을 공유합니다. 두 번째 조건부터 AND/OR를 선택할 수 있습니다. AND가 OR보다 우선하며 아래에 그룹을 명확히 표시합니다. 각 그룹은 독립적으로 적용됩니다.", "没有匹配「{kw}」的账号": "「{kw}」와 일치하는 계정이 없습니다", "没有可全选的账号": "전체 선택할 계정이 없습니다", "没有可用出口": "사용 가능한 아웃바운드가 없습니다", "没有适用于本次操作的账号": "이번 작업을 적용할 계정이 없습니다", "没有选中的账号": "선택된 계정이 없습니다", "活动套餐": "이벤트 플랜", "活动套餐的推理端点要求每条请求带一个阿里云验证码令牌;令牌由本应用在后台静默铸造,界面关闭时无法铸造": "이벤트 플랜의 추론 엔드포인트는 모든 요청에 알리바바 클라우드 캡차 토큰을 요구합니다. 토큰은 이 앱이 백그라운드에서 조용히 생성하며, 창을 닫으면 생성할 수 없습니다", "活动套餐(Start Plan)": "이벤트 플랜 (Start Plan)", "活动套餐(Start Plan)— 走官方活动端点,用活动里领到的额度": "이벤트 플랜 (Start Plan) — 공식 이벤트 엔드포인트를 사용하며, 이벤트에서 받은 할당량을 씁니다", "活动时间:{time}": "이벤트 기간: {time}", "活动期内每天发一份新套餐;同一份当天重复领取会提示「已领取过」,次日可再领。领取要走一次人机验证(滑块)。": "이벤트 기간에는 매일 새 플랜이 한 건씩 지급됩니다. 같은 플랜을 같은 날 다시 받으면 \"이미 받음\"이 표시되며, 다음 날 다시 받을 수 있습니다. 받을 때는 사람 인증(슬라이더)을 한 번 거칩니다.", "活动期内每天发一份新套餐;已领的套餐不重复提交,次日可领新套餐。只有主动领取时才会进行人机验证。": "이벤트 기간에는 매일 새 플랜이 제공됩니다. 이미 수령한 플랜은 다시 제출하지 않으며 다음 날 새 플랜을 받을 수 있습니다. 직접 수령할 때만 사람 인증을 진행합니다.", "活动目录合并账号预览、营销活动与匿名探测。已领取仅依据领取记录或账号名下套餐;状态待确认时可尝试领取,资格以上游返回为准。": "이벤트 목록은 계정 미리보기, 마케팅 이벤트 및 익명 조회 결과를 합칩니다. 수령 완료는 수령 기록 또는 계정 소유 플랜으로만 확인합니다. 상태가 미확인인 경우 수령을 시도할 수 있으며, 자격은 업스트림 응답을 기준으로 합니다.", "测试中…": "테스트 중…", "测试出口": "아웃바운드 테스트", "消耗顺序": "소비 순서", "添加 新→旧": "추가 최신→오래된", "添加 旧→新": "추가 오래된→최신", "添加规则": "규칙 추가", "添加限制": "제한 추가", "清掉本机的限流标记,立刻重新尝试该模型(上游若仍在限流会再次被标记)": "이 기기의 속도 제한 플래그를 지우고 해당 모델을 즉시 다시 시도합니다 (업스트림이 여전히 속도 제한 중이면 다시 표시됩니다)", "清掉该账号全部模型的限流标记": "이 계정의 모든 모델에 걸린 속도 제한 플래그를 지웁니다", "清空全部规则": "모든 규칙 비우기", "清空搜索与三个筛选档位,回到全部账号": "검색과 세 가지 필터를 지우고 모든 계정으로 되돌립니다", "清空选中账号的限制规则": "선택한 계정의 제한 규칙 비우기", "清除": "지우기", "清除失败:{error}": "지우기 실패: {error}", "清除失败:{message}": "지우기 실패: {message}", "清除已配置的 API Key(转发时会因缺少凭证被跳过)": "설정된 API Key 지우기 (포워딩 시 자격 증명이 없어 건너뜁니다)", "清除已配置的 {label}": "설정된 {label} 지우기", "清除已配置的余额查询凭证": "설정된 잔액 조회 자격 증명 지우기", "清除标记": "플래그 지우기", "清除筛选": "필터 지우기", "清除该账号的冷却与全部模型限流标记": "이 계정의 대기 시간과 모든 모델의 요청 제한 표시 지우기", "滚动窗口": "롤링 구간", "点击{action}各模型的限流明细": "클릭하여 모델별 속도 제한 상세 {action}", "点击查看账号冷却与模型限流明细": "클릭하여 계정 대기 시간과 모델 요청 제한 상세 보기", "状态": "상태", "状态 {status}": "상태 {status}", "状态待确认": "수령 상태 미확인", "状态未知": "상태 알 수 없음", "生效 {time}": "적용 {time}", "生效中": "적용 중", "生效至到期累计(不自动回满)": "시작부터 만료까지 누적(자동 충전 없음)", "用 NewAPI 站点的个人访问令牌查询账户余额(不是这条账号的上游 API Key)。令牌在站点的「个人设置」里生成,只有旧版 / 定制站点才需要额外填用户 ID。": "NewAPI 사이트의 개인 액세스 토큰으로 잔액을 조회합니다 (이 계정의 업스트림 API 키가 아님). 토큰은 사이트의 \"개인 설정\"에서 발급하며, 사용자 ID 추가 입력이 필요한 것은 구버전 / 커스텀 사이트뿐입니다.", "用 bigmodel.cn 控制台的访问令牌查询账户余额(人民币元)。令牌是登录后浏览器 Cookie `bigmodel_token_production` 的值:开发者工具 → 应用(Application)→ Cookie 里复制。": "bigmodel.cn 콘솔의 액세스 토큰으로 잔액을 조회합니다 (위안화). 토큰은 로그인 후 브라우저 Cookie `bigmodel_token_production` 의 값입니다: 개발자 도구 → 애플리케이션 → Cookie 에서 복사하세요.", "用下面的规则统一替换各账号的全部规则,执行前会再次确认。": "각 계정의 모든 규칙을 아래 규칙으로 교체합니다. 실행 전에 다시 확인합니다.", "用商汤日日新控制台的账号密码查询(与推理用的 API Key 不是同一套)。网关会自动换取登录票并缓存,过期后自动重登,不需要手动维护。": "SenseNova 콘솔의 계정과 비밀번호로 조회합니다 (추론용 API 키와는 다른 세트). 게이트웨이가 로그인 티켓을 자동으로 교환해 캐시하고, 만료되면 자동으로 다시 로그인하므로 수동 관리가 필요 없습니다.", "用户名": "사용자 이름", "用这条账号的 API Key 查询订阅用量,不需要额外配置;读数展开成 5 小时 / 每周 / 每月三个窗口。": "이 계정의 API 키로 구독 사용량을 조회합니다. 추가 설정이 필요 없으며 수치는 5 시간 / 주간 / 월간 3 개 창으로 펼쳐집니다.", "用这条账号的 API Key 查询,不需要额外配置。": "이 계정의 API 키로 조회합니다. 추가 설정이 필요 없습니다.", "用这条账号的 API Key 生成签名后查询账户余额(美元),不需要额外配置。要求 API Key 是 z.ai 的「id.secret」形态(控制台生成的 Key 就是)。": "이 계정의 API 키로 서명을 만들어 잔액을 조회합니다 (달러). 추가 설정이 필요 없습니다. API 키는 z.ai 의 \"id.secret\" 형태여야 합니다 (콘솔에서 발급되는 키가 바로 그것입니다).", "留空 = 不修改,清除用右边的按钮": "비워 두면 변경 없음, 지우기는 오른쪽 버튼으로", "登录 / 导入一个新账号": "로그인 / 새 계정 가져오기", "登录授权已失效,请重新登录;自动续期无法恢复已过期或已撤销的刷新令牌。": "로그인 승인이 만료되거나 취소되었습니다. 다시 로그인하세요. 자동 갱신으로 만료되거나 취소된 갱신 토큰을 복구할 수 없습니다.", "登录授权截止:{time};自动续期不会延长此时间,届时需重新网页登录。": "로그인 승인 만료: {time}. 자동 갱신은 이 기한을 연장하지 않습니다. 만료되면 브라우저에서 다시 로그인하세요.", "百分比阈值必须在 0~100 之间": "백분율 임계값은 0~100이어야 합니다", "直连": "직접 연결", "确定删除选中的 {count} 个账号?此操作不可恢复,账号的登录态会一并移除。": "선택한 계정 {count}개를 삭제하시겠습니까? 이 작업은 되돌릴 수 없으며, 계정의 로그인 상태도 함께 제거됩니다.", "确定清空 {count} 个账号的全部限制规则?余额与 Token 将不再设限;已禁用的账号不会自动启用。": "{count}개 계정의 모든 제한 규칙을 비울까요? 잔액과 Token 제한이 없어지지만 비활성 계정은 자동 활성화되지 않습니다.", "确定清除全部模型的限流标记?": "모든 모델의 레이트 리밋 표시를 지울까요?", "确定清除模型「{model}」的限流标记?": "모델 \"{model}\"의 레이트 리밋 표시를 지울까요?", "确定清除该账号的冷却与全部模型限流标记?": "이 계정의 대기 시간과 모든 모델의 요청 제한 표시를 지울까요?", "禁用": "비활성화", "禁用整个账号(手动恢复)": "전체 계정 비활성화(수동 복구)", "禁用该账号(需手动重新启用)": "이 계정 비활성화 (수동으로 다시 활성화해야 함)", "禁用这一组里的全部账号(含被筛选隐藏的)": "이 그룹의 모든 계정을 비활성화합니다 (필터로 숨겨진 것 포함)", "福利按限时活动下发,不是每个账号都有 —— 正常状态,不是查询失败": "혜택은 기간 한정 이벤트로 지급되어 모든 계정에 있는 것은 아닙니다 — 정상 상태이며 조회 실패가 아닙니다", "福利日额度": "혜택 일일 할당량", "福利网关未读到:{error}": "혜택 게이트웨이를 읽지 못했습니다: {error}", "秒": "초", "秒;默认 60 秒,包含重试等待,多步骤查询可适当延长。": "초. 기본값은 60초이며 재시도 대기 시간을 포함합니다. 여러 단계의 조회는 필요에 따라 늘릴 수 있습니다.", "积分": "포인트", "积分到期时间": "크레딧 만료 시간", "积分包": "포인트 패키지", "积分明细": "포인트 상세", "积分查询已复用转发用的登录凭证,这里通常留空即可。只有旧版本填过、或从旧代理导入过凭证时才有值": "포인트 조회는 포워딩에 쓰는 로그인 자격 증명을 재사용하므로 보통 비워 두면 됩니다. 구버전에서 입력했거나 예전 프록시에서 자격 증명을 가져온 경우에만 값이 있습니다", "稍后由后台判定自动禁用": "잠시 후 백그라운드 판정으로 자동 비활성화됩니다", "窗口 = 今天 0 点起(本地时区),0 点重置即清零恢复;按账号在 requests 表聚合": "구간 = 오늘 0시부터 (로컬 시간대), 0시 초기화 시 0으로 돌아가 리셋됩니다. 계정별로 requests 테이블에서 집계합니다", "窗口内已用 {used} / {limit} Token,转发时会跳过该账号(重置后自动恢复)": "구간 내 사용 {used} / {limit} Token, 포워딩 시 이 계정을 건너뜁니다 (초기화 후 자동 리셋)", "窗口对齐自然时间(整点 / 整 N 分钟一轮回),重置即清零恢复;按账号在 requests 表聚合": "구간은 자연 시간에 맞춰집니다 (정시 / 정확히 N분 단위로 순환하며), 초기화 시 0으로 돌아가 리셋됩니다. 계정별로 requests 테이블에서 집계합니다", "窗口数量超过展示上限,仅展示部分读数": "기간 수가 표시 한도를 초과하여 일부 수치만 표시합니다", "窗口重置时间": "기간별 초기화 시간", "窗口长度": "구간 길이", "窗口额度与时间": "시간대별 할당량 및 시각", "端口": "포트", "端口准备中": "포트 준비 중", "第 {rank} 顺位": "전체 {rank}순위", "等待当前验证码流程结束": "현재 인증이 끝나기를 기다리는 중", "筛选": "필터", "筛选 / 搜索 / 分页生效时组顺位不可拖动(别家的组整组不可见,落点没法定位)": "필터 / 검색 / 페이지 설정 중에는 그룹 순서를 드래그할 수 없습니다(다른 그룹 전체가 숨겨져 놓을 위치를 정할 수 없음)", "系统代理信息无效,请手动填写。": "시스템 프록시 정보가 올바르지 않습니다. 직접 입력하세요.", "系统代理协议暂不支持自动填入,请手动配置 HTTP 或 SOCKS5 代理": "이 시스템 프록시 프로토콜은 자동 입력을 지원하지 않습니다. HTTP 또는 SOCKS5 프록시를 직접 설정하세요.", "系统代理地址无效,请手动填写": "시스템 프록시 주소가 올바르지 않습니다. 직접 입력하세요.", "系统代理认证信息无法读取,请手动填写": "시스템 프록시 인증 정보를 읽을 수 없습니다. 직접 입력하세요.", "累计起点": "집계 시작 시각", "级联删除名下全部账号,不可恢复": "소속된 모든 계정이 함께 삭제되며 되돌릴 수 없습니다", "组内先后:按住左边的把手上下拖动即可调整;整组的先后拖分组带的把手": "그룹 내 순서: 왼쪽 손잡이를 누른 채 위아래로 드래그해 조정하고, 그룹 전체 순서는 그룹 바의 손잡이를 드래그하세요", "组内并发上限": "그룹 동시 실행 한도", "组内手动顺序": "그룹 내 수동 순서", "组内第 {rank} 位": "그룹 내 {rank}번째", "组顺位已锁定": "그룹 순서 잠김", "组顺位:越小越先用(拖动分组带调整)": "그룹 순위: 작을수록 먼저 사용됩니다 (그룹 바를 드래그해 조정)", "统一设置自动查询的开关、间隔和失败重试次数;不会复制或覆盖余额查询凭证。": "자동 조회 스위치, 간격 및 실패 시 재시도 횟수를 통일합니다. 잔액 조회 인증 정보는 복사하거나 덮어쓰지 않습니다.", "统计周期": "집계 주기", "统计周期尚未开始或已经结束": "집계 기간이 아직 시작되지 않았거나 종료되었습니다", "统计窗口必须是 1 分钟~31 天": "집계 구간은 1분~31일이어야 합니다", "统计结束时间必须晚于开始时间": "집계 종료 시각은 시작 시각보다 늦어야 합니다", "缓存用量未知,不按零计量,也不用于推算余额": "캐시 사용량을 알 수 없습니다. 0으로 계산하거나 잔액 추정에 사용하지 않습니다", "编码套餐(Coding Plan)": "코딩 플랜 (Coding Plan)", "编码套餐(Coding Plan)— 走开放平台端点,消耗开放平台的额度(订阅套餐 / 资源包 / 充值余额)": "코딩 플랜 (Coding Plan) — 오픈 플랫폼 엔드포인트를 사용하며, 오픈 플랫폼의 할당량(구독 플랜 / 리소스 패키지 / 충전 잔액)을 씁니다", "编码套餐(Coding Plan)— 走开放平台端点,用自己订阅的额度": "코딩 플랜 (Coding Plan) — 오픈 플랫폼 엔드포인트를 사용하며, 직접 구독한 할당량을 씁니다", "编辑": "편집", "编辑限制": "제한 편집", "编辑限制条件": "제한 조건 편집", "网关电脑未检测到可导入的系统代理;请手动填写,或选择已保存的代理。": "게이트웨이 컴퓨터에서 가져올 수 있는 시스템 프록시를 찾지 못했습니다. 직접 입력하거나 저장된 프록시를 선택하세요.", "网络": "네트워크", "网页端会逐个下载文件;浏览器提示时请允许本网站下载多个文件。": "웹에서는 파일을 하나씩 다운로드합니다. 브라우저에서 요청하면 이 사이트의 여러 파일 다운로드를 허용해 주세요.", "自动查询余额": "잔액 자동 조회", "自动查询余额(按下面的间隔自动刷新余额列的读数)": "잔액 자동 조회 (아래 간격에 따라 잔액 열 수치를 자동 갱신)", "自定义代理": "사용자 지정 프록시", "自定义代理…": "사용자 지정 프록시…", "自定义:": "사용자 지정: ", "自然周": "달력 주", "自然日": "달력 일", "自然日(每天 0 点)": "자연일 (매일 0시)", "自然月": "달력 월", "补全请求": "자동 완성 요청", "补铸失败:{error}": "토큰 생성 실패: {error}", "规则操作": "규칙 작업", "解析失败": "파싱 실패", "触发动作": "발동 동작", "触发后": "발동 후", "触发条件": "발동 조건", "计入 {counted}/{total}": "합산 {counted}/{total}", "订阅已移除": "구독 삭제됨", "订阅统计未读到:{error}": "구독 통계를 읽지 못했습니다: {error}", "记录里没有过期时间": "기록에 만료 시간이 없습니다", "设为首选": "최우선으로 설정", "设置并发上限": "동시 접속 상한 설정", "访客账号没有积分体系,因此不查询余额(登录账号可以查)": "게스트 계정에는 포인트 제도가 없으므로 잔액을 조회하지 않습니다 (로그인 계정은 조회할 수 있습니다)", "访问令牌": "액세스 토큰", "试用版": "체험판", "该上游无需鉴权": "이 업스트림은 인증이 필요하지 않음", "该上游无需鉴权(转发与拉取模型都不发送鉴权头)": "이 업스트림은 인증이 필요하지 않음 (포워딩과 모델 조회 모두 인증 헤더를 보내지 않음)", "该提供商尚未接入余额查询": "이 제공업체의 잔액 조회는 아직 연동되지 않았습니다", "该提供商没有余额查询": "이 제공자는 잔액 조회 기능이 없습니다", "该提供商没有余额查询;可按 Token 消耗设置限制。": "이 제공자는 잔액 조회를 지원하지 않습니다. Token 사용량으로 제한할 수 있습니다.", "该提供商的推理转发尚未接入,账号不参与转发": "이 제공자의 추론 포워딩은 아직 연동되지 않아 계정이 포워딩에 참여하지 않습니다", "该账号不支持刷新 Token 或未提供刷新凭证": "이 계정은 Token 갱신을 지원하지 않거나 갱신 자격 증명이 없습니다", "该账号出网走的代理(Clash 出口 / 自定义 / 直连);点击可修改": "이 계정의 아웃바운드 프록시 (Clash 아웃바운드 / 사용자 지정 / 직접 연결); 클릭하여 수정", "该账号出网走的代理(已保存的代理 / 自定义 / 直连);点击可修改": "이 계정의 프록시(저장된 프록시 / 사용자 지정 / 직접 연결)입니다. 클릭하여 변경하세요.", "该账号当前限流中的模型;点徽章看明细": "이 계정에서 현재 속도 제한 중인 모델; 배지를 클릭하면 상세를 볼 수 있습니다", "该账号没有套餐登录态(jwt),套餐池通道会失败:请重新登录该账号": "이 계정에는 플랜 로그인 상태(jwt)가 없어 플랜 풀 채널이 실패합니다: 이 계정으로 다시 로그인하세요", "该账号没有套餐登录态(jwt),活动套餐会失败:请重新登录该账号": "이 계정에는 플랜 로그인 상태(jwt)가 없어 이벤트 플랜이 실패합니다: 이 계정으로 다시 로그인하세요", "该账号没有福利模型额度(福利按活动下发,不是每个账号都有)": "이 계정에는 혜택 모델 할당량이 없습니다 (혜택은 이벤트로 지급되며 모든 계정에 있는 것은 아닙니다)", "该账号没有积分类读数(额度只有福利 token 池)": "이 계정에는 포인트 계열 수치가 없습니다 (할당량은 혜택 token 풀뿐입니다)", "该账号的额度只有福利 token 池(见余额格那两行),订阅统计没有积分类计量表": "이 계정의 할당량은 혜택 token 풀뿐이며 (잔액 칸의 두 줄 참고), 구독 통계에는 포인트 계열 측정표가 없습니다", "该额度中的全部模型": "이 할당량의 모든 모델", "请先勾选要操作的账号": "먼저 작업할 계정을 선택하세요", "请先选择 Clash Verge 出口": "먼저 Clash Verge 아웃바운드를 선택하세요", "请先选择已保存的代理": "먼저 저장된 프록시를 선택하세요", "请填写代理主机地址": "프록시 호스트 주소를 입력하세요", "请填写提供商名称": "제공자 이름을 입력하세요", "请填写提供商的 Base URL": "제공자의 Base URL을 입력하세요", "请填写查询间隔": "조회 간격을 입력하세요", "请填写重置周期": "초기화 주기를 입력하세요", "请至少添加一条限制规则;清空请使用清空操作": "제한 규칙을 하나 이상 추가하세요. 모두 비우려면 비우기 작업을 사용하세요", "请选择代理": "프록시를 선택하세요", "请选择出口": "아웃바운드를 선택하세요", "读取中…": "불러오는 중…", "读取失败:{error}": "읽기 실패: {error}", "读取系统代理失败": "시스템 프록시 읽기 실패", "读取网关电脑当前的 HTTPS 系统代理,填入自定义地址;后续系统设置变化不会自动同步。": "게이트웨이 컴퓨터의 현재 HTTPS 시스템 프록시를 사용자 지정 항목에 입력합니다. 이후 시스템 설정 변경은 자동으로 동기화되지 않습니다.", "读取自 {dir};端口由 Clash Verge 管理,这里实时同步": "{dir}에서 읽음; 포트는 Clash Verge가 관리하며 여기서 실시간 동기화됩니다", "读数来自自动余额查询;与余额列同一数字口径,严格小于才触发(等于阈值仍可用)": "수치는 자동 잔액 조회에서 오며 잔액 열과 같은 수치 기준입니다. 임계값보다 엄격히 작을 때만 발동합니다 (임계값과 같으면 사용 가능)", "读数里没有套餐清单(免费账号、或套餐的上游状态还没刷新;可点右上角「查询余额」重读)": "이 판독값에 플랜 목록이 없습니다(무료 계정이거나 업스트림 플랜 상태가 아직 갱신되지 않음). 오른쪽 위 \"잔액 조회\"로 다시 읽을 수 있습니다", "读数里没有额度桶,这里按套餐权益里的已用 / 总量显示(上游给的数)": "판독값에 할당량 버킷이 없어 플랜 권익의 사용량 / 총량(업스트림 수치)을 표시합니다", "调整到全局队列第一位": "전역 큐의 맨 앞으로 이동합니다", "调整顺序失败:{message}": "순서 조정 실패: {message}", "账号": "계정", "账号不存在,请刷新后重试": "계정이 존재하지 않습니다. 새로 고침 후 다시 시도하세요", "账号不存在,请刷新后重试。": "계정이 존재하지 않습니다. 새로 고침 후 다시 시도하세요.", "账号主额度": "계정 기본 할당량", "账号余额单位不一致,暂不按余额排序,继续比较其他规则": "계정 잔액의 단위가 달라 잔액 정렬을 건너뛰고 다른 규칙을 적용합니다", "账号全部模型暂时停止转发 · 到恢复时间自动解除": "이 계정의 모든 모델로 전달이 일시 중지됨 · 복구 시각에 자동 해제", "账号冷却": "계정 대기 시간", "账号列表刷新不可用,请重新打开页面": "계정 목록을 새로고침할 수 없습니다. 페이지를 다시 여세요", "账号列表刷新失败": "계정 목록을 새로고침하지 못했습니다.", "账号列表刷新接口不可用,请重新打开页面": "계정 목록 새로고침을 사용할 수 없습니다. 페이지를 다시 열어 주세요.", "账号列表加载失败,请点击「刷新」重试": "계정 목록을 불러오지 못했습니다. \"새로고침\"을 눌러 다시 시도하세요", "账号列表加载失败,请点击「刷新」重试:{message}": "계정 목록을 불러오지 못했습니다. \"새로고침\"을 눌러 다시 시도하세요: {message}", "账号列表已刷新": "계정 목록을 새로고침했습니다", "账号名 / 邮箱 / 备注": "계정 이름 / 이메일 / 메모", "账号套餐到期:{time}": "계정 플랜 만료: {time}", "账号导出失败:{reason}": "계정 내보내기 실패: {reason}", "账号已保存,但列表刷新失败:{error}": "계정은 저장되었지만 목록 새로고침에 실패했습니다: {error}", "账号已保存,但提供商未更新:{error}": "계정은 저장되었지만 제공자가 업데이트되지 않았습니다: {error}", "账号数据仍然保留,无需重新添加。安装或启用对应插件并成功加载后,账号会自动恢复显示。": "계정 데이터는 보존되어 있으므로 다시 추가할 필요가 없습니다. 해당 플러그인을 설치하거나 활성화하고 정상적으로 로드되면 계정이 자동으로 다시 표시됩니다.", "账号显示名称": "계정 표시 이름", "账号更新接口不可用,请重新打开页面": "계정 업데이트를 사용할 수 없습니다. 페이지를 다시 열어 주세요.", "账号更新结果未确认,请刷新后核对设置": "계정 업데이트 결과를 확인하지 못했습니다. 새로고침 후 설정을 확인해 주세요.", "账号正在导出,请稍候": "계정을 내보내는 중입니다. 잠시 기다려 주세요.", "账号添加时间": "계정 추가 시간", "账号级条件组已触发;点击查看限制器": "계정 전체 조건 그룹이 트리거되었습니다. 클릭하여 제한기를 확인하세요.", "账号表": "계정 표", "账号设置": "계정 설정", "账号设置 · {name}": "계정 설정 · {name}", "账号设置分组": "계정 설정 그룹", "账号邮箱": "계정 이메일", "账号页与全局路由共用此消耗顺序,网关按最新余额数据选路,不需要保持页面打开。模型独立顺序会覆盖全局。": "계정 페이지와 전역 라우팅이 이 소비 순서를 공유합니다. 게이트웨이는 최신 잔액 데이터로 경로를 선택하므로 페이지를 열어 둘 필요가 없습니다. 모델의 독립 순서가 전역 순서보다 우선합니다.", "跨账号批量配置仅支持通用条件;套餐实例不能直接复制到其他账号。": "계정 간 일괄 설정은 공통 조건만 지원합니다. 플랜 인스턴스는 다른 계정으로 직접 복사할 수 없습니다.", "跳过 {count} 个:": "{count}개 건너뜀: ", "跳过该账号(余额回升自动恢复)": "이 계정 건너뛰기 (잔액 회복 시 자동 리셋)", "跳过该账号(自动恢复)": "이 계정 건너뛰기 (자동 리셋)", "跳过该账号(重置后自动恢复)": "이 계정 건너뛰기 (초기화 후 자동 리셋)", "跳过(自动恢复)": "건너뛰기(자동 복구)", "转发优先级": "포워딩 우선순위", "转发走套餐池(Start Plan)通道(zcode.z.ai 的 Anthropic 端点,用账号里的体验额度 / 活动领取额度);在账号设置里可切回编码套餐": "포워딩은 플랜 풀 (Start Plan) 채널을 사용합니다 (zcode.z.ai의 Anthropic 엔드포인트, 계정의 체험 할당량 / 이벤트 수령분 사용); 계정 설정에서 코딩 플랜으로 다시 전환할 수 있습니다", "转发走活动套餐通道(zcode.z.ai 的 Anthropic 端点,用账号里领到的额度);在账号设置里可切回编码套餐": "포워딩은 이벤트 플랜 채널을 사용합니다 (zcode.z.ai의 Anthropic 엔드포인트, 계정에서 받은 할당량 사용); 계정 설정에서 코딩 플랜으로 다시 전환할 수 있습니다", "转发顺序": "포워딩 순서", "轮询全部代理节点": "모든 프록시 노드 순환", "轮询的代理": "순환할 프록시", "轮询至少要选择一条代理(或改选「全部」)": "순환하려면 프록시를 하나 이상 선택하세요(「전체」로 되돌릴 수도 있습니다)", "轮询(换 IP)": "순환 (IP 전환)", "还没有代理(去「网络代理」页添加)": "아직 프록시가 없습니다 (「네트워크 프록시」 페이지에서 추가하세요)", "还没有余额读数(已自动查询一次,稍候;也可以点右上角「查询余额」重读)": "아직 잔액 판독값이 없습니다(자동으로 한 번 조회했습니다. 잠시 기다리거나 오른쪽 위 \"잔액 조회\"를 누르세요)", "还没有保存的代理": "저장된 프록시가 없습니다", "还没有批量规则,请先添加限制或从所选账号复制。": "일괄 규칙이 없습니다. 제한을 추가하거나 선택한 계정에서 복사하세요.", "还没有条件组:账号照常参与转发,不设置额度保护。": "아직 조건 그룹이 없습니다. 계정은 할당량 보호 없이 정상적으로 요청을 전달합니다.", "还没有账号,去桌面端添加": "계정이 없습니다. 데스크톱에서 추가하세요.", "还没有账号,请点击「添加账号」": "아직 계정이 없습니다. ‘계정 추가’를 클릭하세요.", "还没有限制规则:账号照常参与转发,余额与 Token 消耗都不设上限。": "아직 제한 규칙이 없습니다: 계정이 평소처럼 포워딩에 참여하며, 잔액과 Token 소비 모두 상한을 두지 않습니다.", "这一份今天已经领过了(重复领取上游会回「已领取过」)": "이 플랜은 오늘 이미 받았습니다(다시 받으면 업스트림이 \"이미 받음\"을 반환합니다)", "这一家查不到积分到期时间": "이 제공자는 크레딧 만료 시간을 읽을 수 없습니다", "这一家没有可用余额查询": "이 공급자는 사용 가능 잔액 조회를 지원하지 않습니다", "这一栏改的是": "여기서 변경하는 대상은 ", "这一段按提供商出现:有什么配什么。": "이 섹션은 제공자에 따라 표시되며, 설정한 항목만 나옵니다.", "这一类现在没有账号": "이 분류에 계정이 없습니다", "这一组开着排序规则:关掉规则后才能手动拖": "이 그룹은 정렬 규칙이 켜져 있습니다. 수동으로 끌려면 규칙을 꺼야 합니다", "这个账号的余额走窗口限额通道(只配了编码套餐 API Key):只有每 N 小时的剩余比例,读不到套餐清单": "이 계정의 잔액은 창 제한 채널로 읽습니다(코딩 플랜 API Key만 설정됨). N시간마다의 남은 비율만 있고 플랜 목록은 없습니다", "这会{what}所有启用中的账号,转发将不可用。确定继续?": "활성 상태인 모든 계정을 {what}합니다. 포워딩을 사용할 수 없게 됩니다. 계속하시겠습니까?", "这是既有配置(直接引用 Clash 出口,不经过代理池)。推荐改用上面的": "기존 구성입니다 (Clash 아웃바운드를 직접 참조하며, 프록시 풀을 거치지 않습니다). 권장 방식은 위의 ", "这条自定义账号既没有 API Key,也没有勾选「无需鉴权」:转发时会被跳过,该提供商下的模型也不会出现在模型列表里。去账号「设置」里补上 Key,或勾选「该上游无需鉴权」": "이 사용자 지정 계정에는 API Key도 없고 「인증 불필요」도 체크되지 않았습니다: 포워딩 시 건너뛰며, 이 제공자의 모델도 모델 목록에 나타나지 않습니다. 계정 「설정」에서 Key를 입력하거나 「이 업스트림은 인증이 필요하지 않음」을 체크하세요", "这条账号是谁、排第几、能不能接请求。": "이 계정이 무엇인지, 몇 번째인지, 요청을 받을 수 있는지 나타냅니다.", "这条账号访问上游走哪条线路。": "이 계정이 업스트림에 접속할 때 어느 회선을 쓰는지 나타냅니다.", "这里只影响「显示」:卸载或停用插件不会删除账号;重新安装、启用并成功加载后,这些账号会自动回到列表。": "표시에만 영향을 줍니다. 플러그인을 삭제하거나 사용 중지해도 계정은 삭제되지 않습니다. 다시 설치해 사용하고 정상 로드되면 자동으로 돌아옵니다.", "连接失败": "연결 실패", "连接数": "연결 수", "追加规则(保留原有)": "규칙 추가 (기존 유지)", "追加限制规则": "제한 규칙 추가", "选中多个模型时,每个模型单独累计、单独比较阈值;不合并用量。": "여러 모델을 선택하면 모델별로 사용량을 누적하고 임계값을 비교합니다. 사용량을 합산하지 않습니다.", "选择": "선택", "选择所选账号作为模板(可选)": "선택한 계정을 템플릿으로 사용 (선택 사항)", "选择要轮询的代理(可多选)": "순환할 프록시 선택(복수 선택 가능)", "逐个刷新所选账号的 Token,未到期也会尝试刷新;不改变启用状态、代理或转发顺序。": "선택한 계정의 Token을 만료 전이라도 하나씩 갱신합니다. 활성 상태, 프록시 및 전달 순서는 변경하지 않습니다.", "逐窗口最低:{list}": "창별 최저: {list}", "逐请求轮换出口(换 IP):OpenCode Zen 免费档按 IP 限流,单个 IP 的额度用完会对它一律 429": "요청마다 아웃바운드를 바꿉니다(IP 전환): OpenCode Zen 무료 등급은 IP 기준으로 제한되며, 한 IP의 할당량을 다 쓰면 그 IP의 요청은 모두 429가 됩니다", "通用额度/本地保护": "공통 할당량 / 로컬 보호", "邮箱 {email}": "이메일 {email}", "部分余额信息暂未获取;未显示上游原始诊断": "일부 잔액 정보를 가져오지 못했습니다. 상위 서비스의 원본 진단 정보는 표시하지 않습니다", "部分来源查询失败,已保留其他结果:{message}": "일부 출처를 조회하지 못했습니다. 다른 결과는 유지합니다: {message}", "部分来源查询失败,暂不能确认本期活动或领取状态": "일부 출처를 조회하지 못해 현재 이벤트 또는 수령 상태를 아직 확인할 수 없습니다.", "部分窗口偏低": "일부 기간 잔여량 부족", "部分窗口未返回可识别读数": "일부 기간에 인식 가능한 수치가 반환되지 않았습니다", "部分读数未知": "일부 잔여량 알 수 없음", "部分额度读数暂不可用。": "일부 할당량 수치를 일시적으로 가져올 수 없습니다.", "配置已变更,请重新查询": "설정이 변경되었습니다. 다시 조회하세요.", "重新安装这个插件后自动回来": "이 플러그인을 다시 설치하면 자동으로 돌아옵니다", "重新读取": "다시 읽기", "重新读取该账号的余额与套餐(走余额查询那条链)": "이 계정의 잔액과 플랜을 다시 읽기(잔액 조회 경로 사용)", "重新读取账号列表和插件状态,不刷新 Token 或查询余额": "Token 갱신이나 잔액 조회 없이 계정 목록과 플러그인 상태를 다시 읽습니다", "重查": "재조회", "重置": "초기화", "重置 {date}": "{date} 초기화", "重置也不恢复,需手动启用": "초기화해도 리셋되지 않으며 수동으로 활성화해야 합니다", "重置周期必须是 30 分钟 ~ 24 小时": "초기화 주기는 30분 ~ 24시간이어야 합니다", "重置方式": "초기화 방식", "重置时区": "초기화 시간대", "重置详情": "초기화 상세", "长期有效": "장기 유효", "间隔单位": "간격 단위", "阈值": "임계값", "降低优先级": "우선순위 내리기", "限制器": "리미터", "限制器 · {n} 个模型": "제한기 · 모델 {n}개", "限制器 · 账号已跳过": "제한기 · 계정 건너뜀", "限制器:{window}已用 {used} / {threshold} Token": "리미터: {window} 사용 {used} / {threshold} Token", "限制指标": "제한 지표", "限制类型": "제한 유형", "限制阈值必须是大于 0 的数字": "제한 임계값은 0보다 큰 숫자여야 합니다", "限制阈值必须是非负有限数字": "임계값은 음수가 아닌 유한한 숫자여야 합니다", "限流": "속도 제한", "限流中": "속도 제한 중", "限流已清除": "레이트 리밋을 지웠습니다", "限额": "한도", "限额状态": "한도 상태", "隐藏账号名(名字显示为星号)": "계정 이름 숨기기 (이름이 별표로 표시됨)", "需要人机验证时,在该账号的「套餐明细」中主动开始验证。": "사람 인증이 필요하면 해당 계정의 「플랜 상세」에서 직접 인증을 시작하세요.", "需要重新登录": "재로그인 필요", "需要验证码时由打开着的主窗口或浏览器面板补铸;库存、补铸状态和失败原因分别显示": "인증이 필요하면 열린 기본 창이나 브라우저 패널에서 토큰을 생성합니다. 재고, 생성 상태 및 실패 이유는 따로 표시됩니다", "需重登": "재로그인", "顺序": "순서", "顺序未保存:{message}": "순서가 저장되지 않았습니다: {message}", "领取 {time}": "수령 {time}", "额度": "할당량", "额度充足": "사용 가능", "额度来源": "할당량 출처", "额度查询暂不可用。": "할당량 조회를 일시적으로 사용할 수 없습니다.", "额度查询未完成,未显示上游原始诊断。": "할당량 조회가 완료되지 않았습니다. 상위 서비스의 원본 진단 정보는 표시하지 않습니다.", "额度窗口读数来自开放平台监控通道(套餐 JWT 那条通道没有额度桶):读的是每 N 小时 / 每周窗口的剩余比例": "할당량 창 판독값은 오픈 플랫폼 모니터링 채널에서 가져옵니다(코딩 플랜 JWT 채널에는 버킷이 없습니다). N시간마다 / 주간 창의 남은 비율을 읽습니다", "额度详情": "할당량 상세", "首次失败后额外重试的次数;默认 3 次,0 = 不重试。手动和自动查询均生效,全部失败后才显示失败并记录日志。": "첫 실패 후 추가로 시도할 횟수입니다. 기본값은 3회이며 0은 재시도하지 않습니다. 수동 및 자동 조회에 모두 적용되며, 모든 시도가 실패한 경우에만 실패를 표시하고 로그를 기록합니다.", "验证失败:{error}": "인증 실패: {error}", "验证码令牌池接口不可用": "캡차 토큰 풀 인터페이스를 사용할 수 없습니다", "验证码令牌:{counts}": "캡차 토큰: {counts}", "高级请求": "프리미엄 요청", "魔粒": "Magicubes", "默认仅开启最快到期优先;可用余额和账号添加时间默认关闭。": "기본값은 만료가 빠른 순만 켜짐입니다. 사용 가능 잔액과 계정 추가 시간 정렬은 꺼져 있습니다.", "默认保持手动顺序,可按需开启支持的自动排序规则。": "기본적으로 수동 순서를 유지합니다. 필요에 따라 지원되는 자동 정렬 규칙을 켤 수 있습니다.", "默认展开 / 收起": "기본 펼침 / 접힘", "({n} 个未配置查询凭证)": " ({n}개는 조회 자격 증명 미설정)", "(不可用)": " (사용 불가)", "(其他订阅,可能未生效)": " (다른 구독, 적용되지 않았을 수 있음)", "(只测了前 {limit} 个,还有 {rest} 个未测)": "(앞의 {limit}개만 테스트했고 {rest}개는 미테스트)", "(名下 {count} 个账号共用)": " (이 제공자 아래 계정 {count}개가 공유) ", "(已在 Clash 中禁用)": " (Clash에서 비활성화됨)", "(库存为空,等待补铸;请保持主窗口或浏览器面板打开)": " (재고 없음, 보충 대기 중. 기본 창이나 브라우저 패널을 열어 두세요)", "(未启用套餐池账号,暂不补铸)": " (활성 Start Plan 계정이 없어 생성 일시 중지)", "(激活事件补报失败,可能影响领取资格:{message})": "(활성화 이벤트 재보고에 실패했습니다. 수령 자격에 영향을 줄 수 있습니다: {message})", "+ 添加条件": "+ 조건 추가", "+ 添加限制": "+ 제한 추가", ",{countdown}重置": ", 초기화까지 {countdown}", ",只对 OpenCode Zen 这类上游有意义,别的家请关掉。": ", OpenCode Zen 같은 업스트림에만 유용하므로 다른 제공자에서는 꺼 두세요.", ",已达到上限": ", 상한에 도달했습니다", ":到「网络代理」页的「订阅管理」里点「同步 Clash Verge」把出口导进池后即可选 —— 那样能集中测试、也能被多个账号共用。": " 사용입니다 — 「네트워크 프록시」 페이지의 「구독 관리」에서 「Clash Verge 동기화」를 눌러 아웃바운드를 풀에 가져오면 선택할 수 있으며, 한곳에서 테스트하고 여러 계정이 공유할 수 있습니다.", ";": "; ", "{count} 个分区有未保存的更改": "{count}개 섹션에 저장하지 않은 변경 사항이 있습니다", "{count} 个账号共用": "계정 {count}개에서 공유", "{count} 个账号共用提供商的连接配置。": "계정 {count}개가 이 제공업체의 연결 설정을 공유합니다.", "{count} 个账号共用连接配置": "계정 {count}개가 연결 설정을 공유합니다", "✅ 已改回跟随提供商的 Base URL": "✅ 제공업체의 Base URL을 다시 따르도록 변경했습니다", "「{name}」名下 {count} 个账号共用这些连接设置。修改协议或 Base URL 可能中断正在进行的请求。": "이 연결 설정은 {name}의 계정 {count}개가 공유합니다. 프로토콜이나 Base URL을 변경하면 진행 중인 요청이 중단될 수 있습니다.", "「{name}」名下 {count} 个账号共用;修改协议或地址可能中断正在进行的请求。": "{name}의 계정 {count}개가 공유합니다. 프로토콜이나 주소를 변경하면 진행 중인 요청이 중단될 수 있습니다.", "仅当前账号": "현재 계정만", "仅用于 OpenCode Zen 这类上游,普通提供商请保持关闭。": "OpenCode Zen 같은 업스트림 서비스에만 사용합니다. 일반 제공업체에서는 꺼 두세요.", "代理只作用于当前账号,不改变其他账号的出网方式。": "프록시는 현재 계정에만 적용되며 다른 계정의 연결 방식은 변경하지 않습니다.", "余额读数也是限制器余额规则的数据来源。": "잔액 값은 제한기의 잔액 규칙에도 사용됩니다.", "使用密钥访问上游": "키로 업스트림에 연결", "保存后将移除密钥,转发与拉取模型都不发送鉴权头。请确认上游确实无需凭证。": "저장하면 키가 제거되고 요청 전달과 모델 조회 시 인증 헤더를 보내지 않습니다. 업스트림에 인증 정보가 필요 없는지 확인하세요.", "保存提供商共用配置?": "제공업체 공유 설정을 저장할까요?", "保存更改": "변경 사항 저장", "共用": "공유", "关闭后不参与转发,余额查询不受影响。": "끄면 요청 전달에 사용되지 않습니다. 잔액 조회는 영향을 받지 않습니다.", "凭证设置": "인증 정보 설정", "出网方式": "연결 방식", "前往模型管理": "모델 관리로 이동", "前往模型管理会关闭账号设置,尚未保存的修改不会生效。": "모델 관리로 이동하면 계정 설정이 닫히며 저장하지 않은 변경 사항은 적용되지 않습니다.", "包含提供商共用配置,将影响 {count} 个账号": "계정 {count}개에 영향을 주는 제공업체 공유 설정 포함", "原密钥不会回显;更换密钥不会改变账号 ID。": "기존 키는 표시되지 않습니다. 키를 교체해도 계정 ID는 바뀌지 않습니다.", "各分区的更改将统一保存": "모든 섹션의 변경 사항을 함께 저장합니다", "启用账号": "계정 활성화", "在账号列表中拖动分组或行首把手,调整转发顺序。": "계정 목록에서 그룹이나 행 앞의 핸들을 드래그하여 전달 순서를 변경하세요.", "基本信息": "기본 정보", "填写接口基址,无需追加 {path}。": "API 기본 URL을 입력하세요. {path}를 덧붙일 필요는 없습니다.", "将同时删除名下 {count} 个账号,无法恢复。": "이 제공업체의 계정 {count}개도 함께 삭제됩니다. 복구할 수 없습니다.", "开启后会改写请求体,补齐会话头与占位工具;未填密钥时使用匿名凭证 public。": "켜면 요청 본문을 수정하여 세션 헤더와 자리표시자 도구를 추가합니다. 키가 없으면 익명 인증 정보 public을 사용합니다.", "当前没有凭证,转发时会跳过此账号。请填写密钥或选择「无需鉴权」。": "인증 정보가 없어 요청 전달 시 이 계정을 건너뜁니다. 키를 입력하거나 '인증 불필요'를 선택하세요.", "当前账号": "현재 계정", "所有分区中尚未保存的修改都会被放弃。已确认的独立清除操作不受影响。": "모든 섹션의 저장하지 않은 변경 사항을 버립니다. 이미 확인한 개별 삭제 작업은 영향을 받지 않습니다.", "提供商名称": "제공업체 이름", "改回跟随": "제공업체 따르기", "改回跟随提供商": "제공업체 따르기", "改回跟随提供商?": "제공업체 설정을 다시 따를까요?", "新密钥待保存": "새 키 저장 대기", "无需鉴权": "인증 불필요", "显示新输入的密钥": "새로 입력한 키 표시", "本地服务或无需凭证的上游": "로컬 서비스 또는 인증이 필요 없는 업스트림", "查询凭证": "조회 인증 정보", "模型清单与映射在「模型管理」中维护。": "모델 목록과 매핑은 '모델 관리'에서 관리합니다.", "模拟 OpenCode 官方客户端": "OpenCode 공식 클라이언트 에뮬레이션", "正在保存…": "저장 중…", "正在编辑提供商共用配置": "제공업체 공유 설정 편집 중", "没有未保存的更改": "저장하지 않은 변경 사항이 없습니다", "没有规则或全部停用时不限制;跳过后自动恢复,禁用后需手动启用。": "규칙이 없거나 모두 꺼져 있으면 제한하지 않습니다. 건너뛴 계정은 자동 복구되며 비활성화한 계정은 수동으로 활성화해야 합니다.", "清除余额查询凭证?": "잔액 조회 인증 정보를 삭제할까요?", "清除已存 API Key?": "저장된 API Key를 삭제할까요?", "清除已存密钥": "저장된 키 삭제", "清除查询凭证?": "조회 인증 정보를 삭제할까요?", "用于当前账号的对话、余额查询、模型拉取、模型测试、签到及凭证刷新等上游请求。留空使用提供商默认值;可选预置或直接填写。": "현재 계정의 대화, 잔액 조회, 모델 가져오기 및 테스트, 출석 체크, 인증 정보 갱신 등 업스트림 요청에 적용됩니다. 비워 두면 제공업체 기본값을 사용합니다. 프리셋을 선택하거나 직접 입력할 수 있습니다.", "用明确的规则保护当前账号的额度。": "명확한 규칙으로 현재 계정의 할당량을 보호합니다.", "留空不修改,替换后点击「保存更改」生效。": "비워 두면 변경하지 않습니다. 키를 교체한 뒤 '변경 사항 저장'을 눌러 적용하세요.", "留空保留当前密钥,输入新密钥以替换": "비워 두면 기존 키 유지, 새 키를 입력하면 교체", "确认保存": "저장 확인", "确认后立即生效,不受底部保存按钮控制。没有凭证且未开启「无需鉴权」时,此账号将被转发跳过。": "확인 후 즉시 적용되며 하단 저장 버튼과는 별개입니다. 인증 정보가 없고 '인증 불필요'도 꺼져 있으면 요청 전달 시 이 계정을 건너뜁니다.", "确认后立即生效,不受底部保存按钮控制。通常可继续复用转发用的登录凭证。": "확인 후 즉시 적용되며 하단 저장 버튼과는 별개입니다. 일반적으로 요청 전달에 사용하는 로그인 인증 정보를 계속 재사용할 수 있습니다.", "确认后立即生效,余额查询可能显示「未配置」。取消账号设置不会恢复已清除的凭证。": "확인 후 즉시 적용되며 잔액 조회에 '미설정'이 표시될 수 있습니다. 계정 설정을 취소해도 삭제한 인증 정보는 복구되지 않습니다.", "确认弹窗不可用,请重新打开页面": "확인 대화상자를 사용할 수 없습니다. 페이지를 다시 여세요.", "管理当前账号的凭证与可用套餐。": "현재 계정의 인증 정보와 사용 가능한 요금제를 관리합니다.", "统一管理提供商的协议、地址与兼容选项。": "제공업체의 프로토콜, 주소 및 호환성 옵션을 한곳에서 관리합니다.", "自定义 API": "사용자 정의 API", "要修改连接地址或协议?": "연결 주소나 프로토콜을 변경할까요?", "设置当前账号访问上游的出网方式。": "현재 계정이 업스트림에 연결하는 방식을 설정합니다.", "设置账号名称、启用状态与转发行为。": "계정 이름, 활성화 상태 및 전달 동작을 설정합니다.", "请填写有效的 HTTP 或 HTTPS 地址": "올바른 HTTP 또는 HTTPS 주소를 입력하세요", "请求标识": "요청 식별", "请求端点": "요청 엔드포인트", "账号凭证": "계정 인증 정보", "转发行为": "전달 동작", "达到上限后,将请求交给其他账号。": "한도에 도달하면 요청을 다른 계정에 전달합니다.", "这个账号单独存了一份地址:{url},转发时优先用它。上面改的是提供商共用地址,不会覆盖它。": "이 계정에는 별도의 주소({url})가 저장되어 있으며 전달할 때 이 주소가 우선합니다. 위에서 변경하는 값은 제공업체 공용 주소이며 이 값은 덮어쓰지 않습니다.", "这个账号将改用提供商当前保存的 Base URL:{url}。确认后立即生效,不受底部保存按钮控制。": "이 계정은 제공업체에 현재 저장된 Base URL({url})을 사용하게 됩니다. 확인하면 즉시 적용되며 하단 저장 버튼의 영향을 받지 않습니다.", "连接参数": "연결 매개변수", "连接设置": "연결 설정", "配置余额查询凭证、自动刷新间隔与失败重试。": "잔액 조회 인증 정보, 자동 새로 고침 간격 및 실패 시 재시도를 설정합니다.", "鉴权方式": "인증 방식", "隐藏新输入的密钥": "새로 입력한 키 숨기기", "高级兼容": "고급 호환성", "默认关闭": "기본값: 꺼짐", " · 模型 {head}{rest}": " · 모델 {head}{rest}", " 等 {n} 个": " 등 {n}개", "1// 开头的 Google refresh token(也可直接粘贴 refresh_token=… 整行)": "1//로 시작하는 Google refresh token (refresh_token=… 줄 전체를 붙여넣어도 됨)", "11 位大陆手机号": "11자리 중국 본토 휴대폰 번호", "1~64 个字符,账号列表里按它分组显示": "1~64자, 계정 목록에서 이 값을 기준으로 그룹화되어 표시됩니다", "6 位数字": "6자리 숫자", "
  • 没有可自动领的活动
  • ": "
  • 자동으로 수령할 수 있는 이벤트가 없습니다
  • ", "

    领到的是套餐赠送积分,不会增加福利模型的 token 池;": "

    수령하는 것은 플랜 증정 포인트이며, 혜택 모델의 token 풀은 늘지 않습니다;", "ACP 代理配置无效,请重新选择代理。": "ACP 프록시 설정이 올바르지 않습니다. 프록시를 다시 선택하세요.", "ACP 会话失败时不自动重发,也不切换到其他接入方式。": "ACP 세션이 실패해도 자동으로 재전송하거나 다른 연결 방식으로 전환하지 않습니다.", "ACP 使用网关电脑上的官方 agy CLI,不是当前手机或浏览器所在设备。请先安装 agy 1.5.0 或更新版本:https://antigravity.google/docs/cli。程序不在默认位置时,可在网关启动环境设置 AGY_PATH。": "ACP는 현재 휴대폰이나 브라우저 기기가 아닌 게이트웨이 컴퓨터의 공식 agy CLI를 사용합니다. 먼저 agy 1.5.0 이상을 설치하세요: https://antigravity.google/docs/cli. 기본 위치가 아니라면 게이트웨이 시작 환경에 AGY_PATH를 설정할 수 있습니다.", "ACP 尚未返回可用的会话模型目录,请检查官方 CLI 登录状态后重试。": "ACP에서 사용 가능한 세션 모델 목록을 반환하지 않았습니다. 공식 CLI 로그인 상태를 확인한 후 다시 시도하세요.", "ACP 的本机进程仍使用原来的代理。请先在插件页停用再启用 ACP 插件,再使用新的代理。": "로컬 ACP 프로세스가 기존 프록시를 사용하고 있습니다. 새 프록시를 사용하기 전에 플러그인 페이지에서 ACP 플러그인을 껐다가 다시 켜세요.", "API Key + 控制台令牌(模型调用 + 墨点额度)": "API Key + 콘솔 토큰(모델 호출 + 먹점 잔액)", "API 凭证添加暂不能解析代理池引用;请使用自定义代理地址,添加后再在账号设置中调整。": "API 인증 정보 추가 시 아직 프록시 풀 참조를 확인할 수 없습니다. 사용자 지정 프록시 주소를 사용한 뒤 계정 설정에서 조정하세요.", "API 模板": "API 템플릿", "AWS Builder ID(直接授权,减少一次回填)": "AWS Builder ID(직접 인증, 콜백 붙여넣기 1회 감소)", "AWS 地区(账号目录所在地区)": "AWS 리전(계정 디렉터리가 있는 리전)", "AiHubMix 的 OpenAI 兼容端点,使用 AiHubMix 的 API Key;模型 ID 以平台清单为准": "AiHubMix의 OpenAI 호환 엔드포인트입니다. AiHubMix API Key를 사용하고 모델 ID는 플랫폼 목록을 따르세요", "Anthropic 兼容端点在 https://api.deepseek.com/anthropic(协议换 anthropic 时填它)": "Anthropic 호환 엔드포인트는 https://api.deepseek.com/anthropic입니다 (프로토콜을 anthropic으로 바꿀 때 입력합니다)", "Anthropic 协议填根地址,不要带 /v1": "Anthropic 프로토콜은 루트 주소를 입력하고 /v1은 붙이지 마세요", "Antigravity": "Antigravity", "Antigravity 账号的添加方式": "Antigravity 계정 추가 방식", "AtomCode": "AtomCode", "AutoClaw 国内版": "AutoClaw 중국판", "AutoClaw 国际版": "AutoClaw 국제판", "BDUSS 必填;请粘贴**完整 Cookie**(Cookie 编辑器一键导出即可)—— 其中 **PTOKEN 必须保留**,网关要用它向百度换发 KukuAI 业务会话令牌,缺了它模型刷新会报「未登录」。支持整段 Cookie 头、Cookie 编辑器导出的 JSON 数组,或 {BDUSS, STOKEN} 对象。KukuAI 没有刷新机制,登录态过期后重新粘贴即可。": "BDUSS는 필수입니다; **전체 Cookie**를 붙여넣으세요 (Cookie 편집기에서 원클릭 내보내기 가능) — 이 중 **PTOKEN은 반드시 남겨 두세요**. 게이트웨이가 이것을 사용해 Baidu에서 KukuAI 비즈니스 세션 토큰을 교환 발급받으며, 없으면 모델 갱신 시 「미로그인」 오류가 발생합니다. 전체 Cookie 헤더, Cookie 편집기에서 내보낸 JSON 배열, 또는 {BDUSS, STOKEN} 객체를 지원합니다. KukuAI에는 갱신 메커니즘이 없으므로 로그인 상태가 만료되면 다시 붙여넣으면 됩니다.", "BDUSS=…; STOKEN=…(或 Cookie 编辑器导出的 JSON)": "BDUSS=…; STOKEN=… (또는 Cookie 편집기에서 내보낸 JSON)", "CatPaw 的 X-Passport-Token(登录态 Cookie)": "CatPaw의 X-Passport-Token (로그인 상태 Cookie)", "ChatGPT / Codex": "ChatGPT / Codex", "ChatGPT API": "ChatGPT API", "ChatGPT API 订阅": "ChatGPT API 구독", "Claude Code 本机订阅": "Claude Code 로컬 구독", "Claude 订阅": "Claude 구독", "Cline Pass 的 API Key 在 app.cline.bot 获取(订阅制);端点为 OpenAI 兼容,模型清单以 Cline 控制台为准,模型名在模型管理里按裸名添加(如 glm-5.2 / kimi-k2.7-code / deepseek-v4-pro);上游按客户端形态校验,所需的客户端请求头已随卡预置": "Cline Pass의 API Key는 app.cline.bot에서 발급받습니다(구독제). 엔드포인트는 OpenAI 호환이며, 모델 목록은 Cline 콘솔을 기준으로 하고, 모델 이름은 모델 관리에서 접두사 없는 이름 그대로 추가합니다(예: glm-5.2 / kimi-k2.7-code / deepseek-v4-pro). 업스트림이 클라이언트 형태를 검증하므로 필요한 클라이언트 요청 헤더는 이 카드에 미리 설정되어 있습니다", "Cloud project 必填;不会借用其他 Google 提供商的凭证或额度。": "Cloud project는 필수입니다. 다른 Google 제공업체의 인증 정보나 할당량을 사용하지 않습니다.", "Cloud-IDE-JWT(三段点分)": "Cloud-IDE-JWT (3단 점 구분)", "Cloudflare Account ID(32 位十六进制)": "Cloudflare 계정 ID (16진수 32자리)", "Codex 订阅": "Codex 구독", "Command Code": "Command Code", "Cursor dashboard API key;loader 按需重新 exchange 模型 token,不提供手动令牌刷新。": "Cursor dashboard API key입니다. loader가 필요에 따라 모델 token을 교환하며 수동 토큰 갱신은 제공하지 않습니다.", "DeepSeek 网页": "DeepSeek 웹", "Gemini CLI / Code Assist": "Gemini CLI / Code Assist", "Gemini CLI 凭证文件绝对路径(只读,不复制或写回 refresh token)": "Gemini CLI 인증 정보 파일의 절대 경로(읽기 전용, refresh token 복사 또는 다시 쓰기 없음)", "GitHub Copilot": "GitHub Copilot", "GitHub 官方设备码登录": "GitHub 공식 기기 코드 로그인", "GitHub 登录域名(留空使用 github.com)": "GitHub 로그인 도메인(비워 두면 github.com)", "Google Cloud Project ID(必填,Standard / Enterprise 资格由上游判定)": "Google Cloud Project ID(필수, Standard / Enterprise 자격은 상위 서비스에서 판단)", "Google Cloud Project ID(必填,Standard / Enterprise 资格由上游判定);默认候选来自 {variable},请明确确认": "Google Cloud Project ID(필수, Standard / Enterprise 자격은 상위 서비스에서 판단). 기본 후보는 {variable}에서 가져왔습니다. 명시적으로 확인하세요.", "Google OAuth(Code Assist + Cloud project)": "Google OAuth(Code Assist + Cloud project)", "Google 授权(ACP)": "Google 인증(ACP)", "Groq 的 OpenAI 兼容端点,使用 GroqCloud 的 API Key": "Groq의 OpenAI 호환 엔드포인트입니다. GroqCloud의 API Key를 사용하세요", "IAM Identity Center(企业账号,直接授权)": "IAM Identity Center(조직 계정, 직접 인증)", "JWT(三段点分;也可直接粘贴 Bearer 整行或 data.bin 内容)": "JWT(점 3개 구분. Bearer 전체 줄 또는 data.bin 내용을 붙여넣어도 됨)", "JWT(三段点分;也可直接粘贴 chatglm_token=… 整行)": "JWT(점 3개로 구분된 형식. chatglm_token=… 줄을 그대로 붙여도 됩니다)", "Kimi / Moonshot 国内版": "Kimi / Moonshot 중국판", "Kimi / Moonshot 国内站 API Key,使用 moonshot.cn 按量接口;不是 Kimi Code 会员入口": "Kimi / Moonshot 중국 사이트의 API Key로 moonshot.cn 종량제 API를 사용합니다. Kimi Code 멤버십용 엔드포인트가 아닙니다", "Kimi / Moonshot 国际版": "Kimi / Moonshot 국제판", "Kimi / Moonshot 国际站 API Key,使用 moonshot.ai 按量接口;不是 Kimi Code 会员入口": "Kimi / Moonshot 국제 사이트의 API Key로 moonshot.ai 종량제 API를 사용합니다. Kimi Code 멤버십용 엔드포인트가 아닙니다", "Kiro API key(ksk_…)。": "Kiro API key(ksk_…)입니다.", "Kiro 登录页(Google / GitHub 等)": "Kiro 로그인 페이지(Google / GitHub 등)", "Kiro 网页登录": "Kiro 웹 로그인", "LM Studio(本地)": "LM Studio(로컬)", "LobsterAI": "LobsterAI", "LongCat 的 OpenAI 兼容端点,使用 LongCat 平台的 API Key": "LongCat의 OpenAI 호환 엔드포인트입니다. LongCat 플랫폼의 API Key를 사용하세요", "MClaw 由插件在网关电脑上启动专用 Chrome 窗口,独立登录环境也用于自动续期,不使用系统默认浏览器或应用内嵌窗口。": "MClaw 플러그인은 게이트웨이 컴퓨터에서 전용 Chrome 창을 실행합니다. 독립된 로그인 환경은 자동 갱신에도 사용되며 시스템 기본 브라우저나 앱 내장 창은 사용하지 않습니다.", "MiniMax Code 国内版": "MiniMax Code 중국판", "MiniMax Code 国际版": "MiniMax Code 국제판", "Mistral 的 OpenAI 兼容端点,使用 Mistral 控制台的 API Key": "Mistral의 OpenAI 호환 엔드포인트입니다. Mistral 콘솔의 API Key를 사용하세요", "ModelScope 国内版": "ModelScope 중국판", "ModelScope 国际版": "ModelScope 국제판", "MonkeyCode": "MonkeyCode", "MonkeyCode 国际版": "MonkeyCode 국제판", "MonkeyCode 自动网页登录仅限桌面端;浏览器面板请登录对应官网后粘贴 session。": "MonkeyCode 자동 웹 로그인은 데스크톱 앱에서만 지원됩니다. 브라우저 관리 화면에서는 해당 공식 사이트에 로그인한 뒤 session을 붙여넣으세요.", "NVIDIA NIM 托管端点,Key 在 integrate.api.nvidia.com 申请": "NVIDIA NIM 관리형 엔드포인트, Key는 integrate.api.nvidia.com에서 신청합니다", "Nous Portal 的按量 API,使用 Portal 的 API Key;不是旧的订阅登录方式": "Nous Portal의 종량제 API입니다. 이전 구독 로그인 방식이 아닌 Portal API Key를 사용하세요", "OfficeAce 果办": "OfficeAce", "QuWork 凭证": "QuWork 인증 정보", "QuWork 原设备标识": "QuWork 원래 장치 식별 정보", "QwenWork 千问办公": "QwenWork 공용판", "QwenWork 千问办公企业版": "QwenWork 기업판", "StepFun 国内版(按量)": "StepFun 중국판(종량제)", "StepFun 国内站按量 API;请使用按量 API Key,不要填 Step Plan 套餐 Key": "StepFun 중국 사이트의 종량제 API입니다. Step Plan 구독 Key가 아닌 종량제 API Key를 입력하세요", "StepFun 国际版(按量)": "StepFun 국제판(종량제)", "StepFun 国际站按量 API;请使用按量 API Key,不要填 Step Plan 套餐 Key": "StepFun 국제 사이트의 종량제 API입니다. Step Plan 구독 Key가 아닌 종량제 API Key를 입력하세요", "Tabbit 国内版": "Tabbit 중국판", "Tabbit 国际版": "Tabbit 국제판", "TokenPlan API Key(控制台 → 科研模型 → API Key)": "TokenPlan API Key(콘솔 → 科研模型 → API Key)", "User-Agent(可选)": "User-Agent(선택 사항)", "accessToken 是 Accio 的登录凭证(一长串不透明 token,不是 JWT);refreshToken 可选,填了之后到期能自动续期。请填写 {label}账号的凭证 —— {siteNote}(最容易拿到的办法:直接用上方的「网页登录」,不需要手工找 token。)": "accessToken은 Accio의 로그인 자격 증명입니다 (길고 불투명한 token 문자열이며 JWT가 아닙니다); refreshToken은 선택이며, 입력하면 만료 시 자동 갱신됩니다. {label} 계정의 자격 증명을 입력하세요 — {siteNote} (가장 쉽게 얻는 방법: 위의 「웹 로그인」을 바로 사용하세요. token을 직접 찾을 필요가 없습니다.)", "accessToken 是 Trae 的 Cloud-IDE-JWT(三段点分),refreshToken 用于到期自动续期(本家 refreshToken 一次一换:换发一次旧的即作废,所以两份程序别同时刷同一个账号)。
    手工粘贴时请连 machineId / deviceId 一起填:上游把它们与登录时上传的设备公钥绑在一起判设备,凭空换一对会撞 2xxxx 那族设备绑定拒绝。
    没有这三样时的正路是用上方的「网页登录」;容器 / 远程部署形态按提示粘贴地址栏回调地址即可。": "accessToken은 Trae의 Cloud-IDE-JWT이며(3단 점 구분), refreshToken은 만료 시 자동 갱신에 사용됩니다 (이 제공자는 refreshToken이 교환할 때마다 바뀝니다: 한 번 교환하면 이전 것은 무효가 되므로 두 프로그램에서 같은 계정을 동시에 갱신하지 마세요).
    수동으로 붙여넣을 때는 machineId / deviceId도 함께 입력하세요: 업스트림은 이를 로그인 시 업로드한 기기 공개 키와 묶어 기기를 판별하므로, 갑자기 새로운 값을 넣으면 2xxxx 계열 기기 바인딩 거부가 발생합니다.
    이 세 가지가 없을 때의 올바른 방법은 위의 「웹 로그인」이며, 컨테이너 / 원격 배포 환경에서는 안내에 따라 주소 표시줄의 콜백 주소를 붙여넣으면 됩니다.", "chat.deepseek.com 的 userToken.value,不是收费 API Key": "chat.deepseek.com의 userToken.value이며 유료 API Key가 아닙니다", "github-copilot/apps.json 或 opencode/auth.json": "github-copilot/apps.json 또는 opencode/auth.json", "github.com 或 company.ghe.com": "github.com 또는 company.ghe.com", "github.com:Iv1.b507a08c87ecfe98 或 github-copilot": "github.com:Iv1.b507a08c87ecfe98 또는 github-copilot", "monkeycode_ai_session 的值(也可直接粘贴整段 Cookie)": "monkeycode_ai_session의 값 (전체 Cookie를 붙여넣어도 됨)", "ms- 开头的 API 令牌": "ms- 로 시작하는 API 토큰", "project 必填;只读引用文件,模块的 OAuth 续期不写回客户端。": "project는 필수입니다. 파일을 읽기 전용으로 참조하며 모듈 OAuth 갱신은 클라이언트에 쓰지 않습니다.", "refreshToken 可选,填了到期可自动续期;两者都能从小浣熊客户端登录态文件里取到。": "refreshToken은 선택이며, 입력하면 만료 시 자동 갱신됩니다; 둘 다 小浣熊 클라이언트 로그인 상태 파일에서 얻을 수 있습니다.", "refreshToken 可选,填了可自动续期;两者都能从客户端登录态文件取到。同一个 Cline 账号两个池都能用,这里归入 {label}。": "refreshToken은 선택이며, 입력하면 자동 갱신됩니다; 둘 다 클라이언트 로그인 상태 파일에서 얻을 수 있습니다. 같은 Cline 계정은 두 풀 모두에서 사용할 수 있으며, 여기서는 {label}로 분류됩니다.", "token 支持 enc: 前缀(Windows 上自动解密)。未填 refreshToken 无法自动续期。": "token은 enc: 접두사를 지원합니다 (Windows에서는 자동 복호화). refreshToken을 입력하지 않으면 자동 갱신할 수 없습니다.", "token 是登录态 Cookie;CatPaw 没有刷新机制,过期后需在客户端重新登录。": "token은 로그인 상태 Cookie입니다; CatPaw에는 갱신 메커니즘이 없어 만료 후 클라이언트에서 다시 로그인해야 합니다.", "token=…; user_id=…(也可粘贴 Copy as cURL 整段)": "token=…; user_id=… (Copy as cURL 전체를 붙여넣어도 됩니다)", "user_ 开头的 API Key(也可直接粘贴 Authorization: Bearer … 整行)": "user_로 시작하는 API Key (Authorization: Bearer … 줄 전체를 붙여넣어도 됨)", "xAI 的 OpenAI 兼容端点,使用 xAI 控制台的 API Key;不是 Grok 网页订阅": "xAI의 OpenAI 호환 엔드포인트입니다. Grok 웹 구독이 아닌 xAI 콘솔의 API Key를 사용하세요", "your-company.vpc.qwenwork.cn 或 https://your-company.vpc.qwenwork.cn": "your-company.vpc.qwenwork.cn 또는 https://your-company.vpc.qwenwork.cn", "{label} 网页登录的打开方式": "{label} 웹 로그인을 여는 방식", "{label} 账号地区": "{label} 계정 지역", "{label} 账号的添加方式": "{label} 계정 추가 방식", "{label}账号已添加": "{label} 계정을 추가했습니다", "{label}(只读本机)": "{label}(로컬 읽기 전용)", "{message}:请在打开的页面完成滑块,完成后回到这里点「已完成验证,继续发送」": "{message}: 열린 페이지에서 슬라이더 인증을 완료한 뒤 돌아와 「인증 완료, 다시 보내기」를 클릭하세요", "{message}:请手动打开验证页面 {url},完成后回到这里点「已完成验证,继续发送」": "{message}: 인증 페이지 {url}을(를) 직접 연 뒤 완료하고 돌아와 「인증 완료, 다시 보내기」를 클릭하세요", "{name} 不是合法 JSON:{reason}": "{name}은(는) 올바른 JSON이 아닙니다: {reason}", "{name}要粘一个 JSON 对象(形如 {sample})": "{name}에는 JSON 객체를 붙여넣어야 합니다 (예: {sample})", "{n} 个账号": "계정 {n}개", "{n} 个账号,点击添加": "계정 {n}개, 클릭하여 추가", "{seconds}s 后重发": "{seconds}초 후 재발송", "✅ {label}账号已添加": "✅ {label} 계정을 추가했습니다", "✅ {label}账号已添加{name}": "✅ {label} 계정을 추가했습니다{name}", "✅ 已从 cc-switch 导入 {n} 个供应商": "✅ cc-switch에서 제공자 {n}개를 가져왔습니다", "✅ 已创建自定义提供商「{name}」并添加账号": "✅ 커스텀 제공자 「{name}」을(를) 만들고 계정을 추가했습니다", "✅ 已删除自定义提供商「{name}」{accounts}{keys}": "✅ 커스텀 제공자 「{name}」을(를) 삭제했습니다{accounts}{keys}", "✅ 已更新已有账号{name}(同一把 API Key 只保留一条,重复添加会合并)": "✅ 기존 계정{name}을(를) 업데이트했습니다(동일한 API Key는 하나만 유지되며 다시 추가하면 병합됩니다)", "✅ 已更新已有账号{name}(同一提供商内,同一把 API Key 只保留一条)": "✅ 기존 계정{name}을 업데이트했습니다 (같은 제공업체 내에서 API Key당 계정 하나만 유지)", "✅ 登录成功,{edition}账号已加入列表": "✅ 로그인 성공, {edition} 계정을 목록에 추가했습니다", "✅ 领取成功:{planId}{period}": "✅ 수령 성공: {planId}{period}", " 同一家可以放多把 key,按优先级轮换。": " 같은 제공자에 key를 여러 개 둘 수 있으며, 우선순위에 따라 로테이션됩니다.", "「{name}」的账号添加功能还在开发中,敬请期待。": "「{name}」의 계정 추가 기능은 아직 개발 중입니다. 기대해 주세요.", "一个 Key 用遍多家模型,模型名用「厂商/模型」全称(如 deepseek/deepseek-chat)": "하나의 Key로 여러 제공자의 모델을 사용할 수 있으며, 모델 이름은 「벤더/모델」 전체 이름을 씁니다 (예: deepseek/deepseek-chat)", "上游不要鉴权时留空,并勾选下面一项(留空又不勾会被当成未配置凭证)": "업스트림이 인증을 요구하지 않으면 비워 두고 아래 항목을 체크하세요 (비워 두고 체크하지 않으면 자격 증명 미설정으로 간주됩니다)", "上游信息": "업스트림 정보", "上游没有给出验证页面地址": "업스트림이 인증 페이지 주소를 반환하지 않았습니다", "上游要求人机验证,但没有给出验证页面地址,请稍后重试": "업스트림이 사람 인증을 요구하지만 인증 페이지 주소를 반환하지 않았습니다. 잠시 후 다시 시도하세요", "不使用预置": "프리셋 사용 안 함", "不可领({status})": "수령 불가 ({status})", "不授权": "허용하지 않음", "不支持导入": "가져오기 미지원", "不是有效的凭证文件:内容要是一个 JSON 对象": "유효한 자격 증명 파일이 아닙니다. 내용은 JSON 객체여야 합니다", "不是有效的凭证文件:需要包含 accessToken 与 uid": "유효한 자격 증명 파일이 아닙니다. accessToken과 uid가 필요합니다", "不是自定义提供商": "커스텀 제공자가 아닙니다", "不需要 Key:转发与拉取模型都不发送鉴权头": "Key 불필요: 포워딩과 모델 조회 모두 인증 헤더를 보내지 않습니다", "不需要登录:点下面的按钮,网关会直接在智谱清言换发一份访客凭证并加入账号列表(也可以先填个备注名)。访客凭证可以直接用来对话,免费额度由上游按设备发放。

    注意:访客账号没有积分体系 —— 它与「会员积分」「每日登录积分」「活动领取」相关的接口一律需要登录,因此那些能力对访客会如实跳过(账号页的积分、签到中心都不显示读数)。想要积分就用「填写凭证」粘一个已登录账号的令牌,或「导入桌面端登录态」。": "로그인이 필요 없습니다. 아래 버튼을 누르면 게이트웨이가 智谱清言에서 게스트 자격 증명을 직접 발급받아 계정 목록에 추가합니다(먼저 메모 이름을 입력해도 됩니다). 게스트 자격 증명은 바로 대화에 쓸 수 있고, 무료 할당량은 업스트림이 기기 단위로 발급합니다.

    주의: 게스트 계정에는 포인트 체계가 없습니다. 회원 포인트, 매일 로그인 포인트, 활동 수령 관련 인터페이스는 모두 로그인이 필요하므로 이러한 기능은 게스트에서 건너뜁니다(계정 페이지의 포인트와 签到 센터에 수치가 표시되지 않습니다). 포인트가 필요하면 \"자격 증명 입력\"으로 로그인된 계정 토큰을 붙여넣거나 \"데스크톱 로그인 상태 가져오기\"를 사용하세요.", "两版账号可同时保存,各自一份模型清单(国内版与国际版是两家提供商,可分别启用与映射)。": "두 판의 계정을 동시에 저장할 수 있으며 각각 별도의 모델 목록을 가집니다 (중국판과 국제판은 서로 다른 두 제공자로, 각각 활성화하고 매핑할 수 있습니다).", "中国版": "중국판", "也支持本软件导出的单账号 JSON 文件,保留账号凭证与附加信息。": "이 앱에서 내보낸 단일 계정 JSON 파일도 지원하며 인증 정보와 추가 계정 데이터를 유지합니다.", "仅 API Key(模型调用,不含墨点额度)": "API Key만 사용(모델 호출, 먹점 잔액 제외)", "仅填写自己的 GitHub 令牌": "본인의 GitHub 토큰만 입력", "仅支持仍有有效 Gemini Code Assist Standard / Enterprise 资格并绑定 Cloud project 的账号。个人免费版及 Google AI Pro / Ultra 已于 2026-06-18 停止支持;Standard / Enterprise 新订阅已于 2026-10-09 停售。不会切换到其他 Google 产品或额度池。": "유효한 기존 Gemini Code Assist Standard / Enterprise 자격과 연결된 Cloud project가 있는 계정만 지원합니다. 개인 무료 등급 및 Google AI Pro / Ultra 지원은 2026-06-18에 종료되었고 Standard / Enterprise 신규 구독 판매는 2026-10-09에 중단되었습니다. 다른 Google 제품이나 할당량 풀로 전환하지 않습니다.", "仅读取本机 Claude Code 的当前订阅登录。若未登录,请先在自己的终端登录;本地凭证仍由 CLI 管理。": "현재 로컬 Claude Code 구독 로그인만 읽습니다. 로그아웃 상태라면 자신의 터미널에서 먼저 로그인하세요. 로컬 인증 정보는 계속 CLI가 관리합니다.", "今天没有需要领的活动(都已到账)": "오늘 수령할 이벤트가 없습니다 (모두 적립됨)", "今天(北京时间 {day})已试 {attempts} 次,还能试 {left} 次{next}
    ": "오늘(베이징 시간 {day}) {attempts}회 시도했고, {left}회 더 시도할 수 있습니다{next}
    ", "从 Google 官方源下载并核验 SHA-512;下载使用网关默认出口。更新失败保留旧版,进行中的对话不受替换影响。": "게이트웨이의 기본 네트워크 연결로 Google 공식 소스에서 다운로드하고 SHA-512를 검증합니다. 업데이트 실패 시 이전 버전을 유지하며 진행 중인 대화는 중단하지 않습니다.", "从别的机器(或 OfficeAce 桌面端 models.json)取三项贴进来:模型网关基址(baseUrl,形如 https://modelgw-…/v2)与 modelAppKey / modelAppSecret。这三项就能转发(网关凭据不过期);控制面临时凭据(accessKeyId 等)可选,留空则额度/自动续期不可用,但不影响转发。": "다른 컴퓨터(또는 OfficeAce 데스크톱 앱의 models.json)에서 다음 세 항목을 가져와 붙여넣으세요: 모델 게이트웨이 기본 주소(baseUrl, https://modelgw-…/v2 형태)와 modelAppKey / modelAppSecret. 이 세 항목만 있으면 전달할 수 있습니다(게이트웨이 자격 증명은 만료되지 않음). 제어 영역 임시 자격 증명(accessKeyId 등)은 선택이며, 비워 두면 잔액 조회와 자동 갱신을 쓸 수 없지만 전달에는 영향이 없습니다.", "从本机导入桌面端登录态": "이 컴퓨터에서 데스크톱 로그인 상태 가져오기", "任务镜像 id": "작업 이미지 id", "余额查询": "잔액 조회", "你企业的千问办公旗舰版域名(企业管理后台地址栏的域名,如 your-company.vpc.qwenwork.cn)": "회사의 QwenWork Enterprise 플래그십 도메인(기업 관리 페이지 주소창의 도메인, 예: your-company.vpc.qwenwork.cn)", "使用 Google 账号登录": "Google 계정으로 로그인", "使用 Zai 账号登录": "Zai 계정으로 로그인", "使用 {name} 模板新建提供商": "{name} 템플릿으로 제공업체 만들기", "使用个人访问令牌(PAT)": "개인 액세스 토큰(PAT) 사용", "使用本机 Claude Code 登录": "로컬 Claude Code 로그인 사용", "使用本机 Kimi Work 登录": "로컬 Kimi Work 로그인 사용", "使用模板新建提供商": "이 템플릿으로 제공업체 만들기", "使用网页令牌,不是收费 API Key。": "유료 API Key가 아닌 웹 토큰을 사용하세요.", "使用自己的 GitHub 账号授权;模型条款须在官方客户端手动确认。": "본인의 GitHub 계정으로 승인하세요. 모델 약관은 공식 클라이언트에서 직접 확인해야 합니다.", "先在网关所在机器启动 LM Studio 服务;localhost 指向网关所在机器,远程或容器部署请改为网关可访问的地址。默认无需鉴权;启用认证后请取消「该上游无需鉴权」并填写真实 API Key": "먼저 게이트웨이가 실행되는 컴퓨터에서 LM Studio 서버를 시작하세요. localhost는 게이트웨이가 실행되는 컴퓨터를 가리킵니다. 원격 또는 컨테이너 배포에서는 게이트웨이에서 접근할 수 있는 주소로 변경하세요. 기본적으로 인증이 필요하지 않습니다. 인증을 활성화했다면 「이 업스트림은 인증이 필요하지 않음」을 해제하고 실제 API Key를 입력하세요", "免费模型不用填 Key(默认勾上「该上游无需鉴权」,网关自动用匿名凭证);付费模型则填 Zen 的 API Key。免费档上游只认官方客户端形态,已默认开启「伪装 OpenCode 官方客户端」": "무료 모델은 Key를 입력하지 않아도 됩니다 (기본적으로 「이 업스트림은 인증이 필요하지 않음」이 체크되어 있고, 게이트웨이가 자동으로 익명 자격 증명을 사용합니다); 유료 모델은 Zen의 API Key를 입력하세요. 무료 등급 업스트림은 공식 클라이언트 형태만 허용하므로 「OpenCode 공식 클라이언트로 위장」이 기본으로 켜져 있습니다", "关联用户指定的本地 Copilot 凭证(只读)": "사용자가 선택한 로컬 Copilot 인증 정보 연결(읽기 전용)", "内嵌窗口": "내장 창", "内嵌窗口打开;关窗即取消等待(Google 账号被拒时改用系统浏览器)": "내장 창으로 엽니다; 창을 닫으면 대기가 취소됩니다 (Google 계정이 거부되면 시스템 브라우저를 사용하세요)", "内嵌窗口打开;完成后自动加入列表,关窗即取消等待": "내장 창으로 엽니다; 완료하면 자동으로 목록에 추가되고, 창을 닫으면 대기가 취소됩니다", "内嵌窗口打开;扫码完成后自动加入列表,关窗即取消等待": "내장 창으로 열립니다. 스캔이 끝나면 자동으로 목록에 추가되며, 창을 닫으면 대기가 취소됩니다", "内嵌窗口用全新环境,多账号互不影响;关窗即取消等待": "내장 창은 새 환경을 사용하므로 여러 계정이 서로 영향을 주지 않습니다; 창을 닫으면 대기가 취소됩니다", "内嵌窗口登录": "앱 내장 창에서 로그인", "内嵌窗口(推荐)": "내장 창(권장)", "准备验证…": "인증 준비 중…", "凭据 JSON": "자격 증명 JSON", "凭证 JSON 或模型凭证": "인증 JSON 또는 모델 인증 정보", "凭证仅发送至当前网关": "인증 정보는 현재 게이트웨이에만 전송됩니다", "凭证文件在哪?": "자격 증명 파일 위치는?", "凭证文件类型": "인증 정보 파일 유형", "创建并添加账号": "생성하고 계정 추가", "创建这个提供商,并同时建立它的第一个账号。": "이 제공자를 만들고 동시에 첫 계정을 생성합니다.", "删除功能不可用(脚本未就绪)": "삭제 기능을 사용할 수 없습니다 (스크립트가 준비되지 않음)", "删除失败:{reason}": "삭제 실패: {reason}", "删除此提供商": "이 제공자 삭제", "千问办公 国内版": "QwenWork(중국판)", "千问办公 国际版": "QwenWork(국제판)", "千问办公{label}暂时无法登录:上游只接受它自己的官方回调地址,不论证码到本机。": "QwenWork {label}은(는) 현재 로그인할 수 없습니다. 업스트림이 자체 공식 콜백 주소만 허용하므로 인가 코드가 이 기기로 전달되지 않습니다.", "原样提交本次流程的完整回调 URL。": "이 흐름의 전체 콜백 URL을 원문 그대로 제출하세요.", "去安装提供商插件包": "제공자 플러그인 팩 설치하기", "及 {n} 个账号": " 및 계정 {n}개", "发送中…": "전송 중…", "发送失败:{message}": "전송 실패: {message}", "发送未确认:登录窗口已弹出,请在弹出的窗口中手动完成登录": "전송 미확인: 로그인 창이 열렸습니다. 열린 창에서 직접 로그인을 완료하세요", "取消失败:{message}": "취소 실패: {message}", "取消安装": "설치 취소", "取消等待": "대기 취소", "只使用此路线签发的 OAuth 凭证;direct SIWC 与 Codex 客户端身份不同。": "이 경로에서 발급된 OAuth 인증 정보만 사용합니다. direct SIWC와 Codex는 클라이언트 ID가 다릅니다.", "只关联真实 CLI 2.1.259+ 的当前订阅;不代登录、不复制或续期客户端凭证。": "정식 CLI 2.1.259+의 현재 구독만 연결합니다. 대신 로그인하거나 클라이언트 인증 정보를 복사 또는 갱신하지 않습니다.", "只拿到 JWT 时填这里;Cookie 里有 token 可留空": "JWT만 있는 경우 여기에 입력하세요. Cookie에 token이 있으면 비워 두세요", "只有「内嵌窗口」能恢复第三方入口:系统浏览器里我们无法改动登录页": "「내장 창」에서만 제3자 로그인 항목을 복원할 수 있습니다: 시스템 브라우저에서는 로그인 페이지를 수정할 수 없습니다", "只看这一类": "이 분류만", "只读引用 Grok Build home/scope/account;每次读取当前登录态,不复制 token,不回退退出前快照,不主动续期;源有效期未知时不作长期有效承诺。": "Grok Build home/scope/account를 읽기 전용으로 참조합니다. 매번 현재 로그인 상태를 읽고 토큰 복사, 로그아웃 전 스냅샷 복원, 갱신을 하지 않습니다. 원본 만료일을 알 수 없으면 장기 유효를 보장하지 않습니다.", "只读引用本机 Kiro CLI/IDE;每次读取校验同一邮箱,不复制 token、不主动续期或回写,失效后由原客户端重登或同步。": "로컬 Kiro CLI/IDE를 읽기 전용으로 참조합니다. 읽을 때마다 동일 이메일을 검증하고 토큰 복사, 갱신, 다시 쓰기를 하지 않습니다. 만료 후에는 원래 클라이언트에서 다시 로그인하거나 동기화하세요.", "只读所选标准文件与账号条目并验证 GitHub/Copilot 身份;只保存引用,不保存令牌副本,不扫描目录、读取 keychain 或运行 CLI。": "선택한 표준 파일과 계정 항목만 읽고 GitHub/Copilot 계정을 검증합니다. 참조만 저장하며 토큰 복사본 저장, 디렉터리 검색, keychain 읽기 또는 CLI 실행을 하지 않습니다.", "只读校验明确选择的本机凭证文件;仅保存引用与稳定身份,不复制或续期原客户端令牌。": "명시적으로 선택한 로컬 인증 정보 파일만 읽기 전용으로 검증합니다. 참조와 안정적인 계정 식별 정보만 저장하며 원래 클라이언트의 토큰을 복사하거나 갱신하지 않습니다.", "只读用户明确指定的文件和账号条目,不自动扫描。": "명시적으로 선택한 파일과 계정 항목만 읽으며 자동 검색하지 않습니다.", "只读验证所选 Gemini CLI 登录态和指定 project 的 Code Assist Standard / Enterprise 资格;不会启动 CLI、续期或复制令牌。": "선택한 Gemini CLI 로그인과 지정한 project의 Code Assist Standard / Enterprise 이용 자격을 읽기 전용으로 검증합니다. CLI를 시작하거나 토큰을 갱신 또는 복사하지 않습니다.", "只读验证本机 Claude Code 当前订阅登录;凭证仍由原 CLI 管理。": "현재 로컬 Claude Code 구독 로그인을 읽기 전용으로 검증합니다. 인증 정보는 계속 원래 CLI가 관리합니다.", "只读验证本机 Kimi 桌面版已有的 Work 登录,不复制令牌;账号可能没有可用模型。": "기존 로컬 Kimi 데스크톱 Work 로그인을 읽기 전용으로 검증하며 토큰을 복사하지 않습니다. 계정에 사용 가능한 모델이 없을 수 있습니다.", "可选": "선택", "可选(cloudaicompanionProject):留空由网关自动发现": "선택 (cloudaicompanionProject): 비워 두면 게이트웨이가 자동으로 찾습니다", "可选,仅远程兑换码激活需要;从官方客户端读取": "선택 사항. 원격 코드 활성화에만 필요하며 공식 클라이언트에서 읽어오세요.", "可选,展示用": "선택, 표시용", "可选,没有则无法自动续期": "선택, 없으면 자동 갱신 불가", "可选,用于生成账号标识": "선택 사항이며 계정 식별자 생성에 사용", "可选,留空使用凭据里的 user_name": "선택, 비워 두면 자격 증명의 user_name 사용", "可选,留空使用账号名或邮箱": "선택 사항. 비워 두면 계정 이름 또는 이메일을 사용합니다", "可选,留空使用账号姓名、邮箱或令牌指纹": "선택, 비워 두면 계정 이름, 이메일 또는 토큰 지문 사용", "可选,留空使用账号昵称或邮箱": "선택, 비워 두면 계정 닉네임 또는 이메일 사용", "可选,留空则用 key 尾号": "선택, 비워 두면 key 끝자리 사용", "可选,留空则用 userId": "선택, 비워 두면 userId 사용", "可选,留空则用上游账号昵称": "선택 사항, 비워 두면 업스트림 계정 닉네임 사용", "可选,留空则用上游返回的账号名或账号 id": "선택, 비워 두면 업스트림이 반환한 계정 이름 또는 계정 id 사용", "可选,留空则用凭证里的账号名": "선택, 비워 두면 자격 증명의 계정 이름 사용", "可选,留空则用文件里的昵称": "선택 사항, 비워 두면 파일의 닉네임 사용", "可选,留空则用登录名或 uid": "선택, 비워 두면 로그인 이름 또는 uid 사용", "可选,留空则用脱敏手机号": "선택, 비워 두면 마스킹된 휴대폰 번호 사용", "可选,留空则用脱敏手机号或 userId": "선택, 비워 두면 마스킹된 휴대폰 번호 또는 userId 사용", "可选,留空则用账号 uk": "선택, 비워 두면 계정 uk 사용", "可选,留空则用账号昵称": "선택 사항. 비워 두면 계정 닉네임을 사용합니다", "可选,留空则用账号昵称或 userId": "선택 사항. 비워 두면 계정 닉네임 또는 userId 사용", "可选,留空则用邮箱或令牌尾号": "선택, 비워 두면 이메일 또는 토큰 끝자리 사용", "可选,留空用「AtomCode」": "선택 사항이며 비워 두면 “AtomCode”", "可选,留空用「OfficeAce 果办」": "선택, 비워 두면 「OfficeAce」 사용", "可选,留空自动生成": "선택, 비워 두면 자동 생성", "可选,留空自动用昵称": "선택, 비워 두면 닉네임 자동 사용", "可选,给这个访客账号起个备注名": "선택 사항. 이 게스트 계정의 메모 이름", "可选,续期时带上": "선택, 갱신 시 함께 전송", "可选,讯飞侧 userid": "선택, iFlytek 측 userid", "可选:发起对话必需,留空则由网关从该账号已有任务里自动发现,发现不到时之后手动补": "선택; 대화 시작에 필요합니다. 비워 두면 게이트웨이가 이 계정의 기존 작업에서 자동으로 찾습니다. 찾지 못하면 나중에 직접 입력하면 됩니다.", "可选:账号邮箱,用于展示与身份识别(换新令牌也能认回同一账号)": "선택; 계정 이메일로, 표시와 신원 식별에 사용됩니다 (새 토큰으로 바꿔도 같은 계정으로 인식됩니다)", "可选;UUID 形态,与凭据同生共死": "선택; UUID 형식이며 자격 증명과 함께 생성되고 함께 사라집니다", "可选;填了才能到期自动续期": "선택; 입력해야 만료 시 자동 갱신할 수 있습니다", "可选;用于去重与展示名(留空时网关会问一次上游)": "선택; 중복 제거와 표시 이름에 사용됩니다 (비워 두면 게이트웨이가 업스트림에 한 번 물어봅니다)", "可选;用于生成账号 id 与展示名": "선택; 계정 id와 표시 이름 생성에 사용됩니다", "可选;纯数字串(上游只收 8–24 位数字)": "선택; 숫자만 입력 (업스트림은 8–24자리 숫자만 허용)", "可领取": "수령 가능", "同一家可以混着放:有 Key 的账号与无鉴权账号各按各的规则走;无需鉴权的账号也能并存多条(各自可配不同的出网代理)": "한 제공사에 API Key 있는 계정과 인증 불필요 계정을 섞어 둘 수 있으며 각각의 규칙으로 라우팅됩니다. 인증 불필요 계정도 여러 개 둘 수 있고 각각 다른 아웃바운드 프록시를 설정할 수 있습니다", "同地址换 anthropic 协议即走它的 Claude 兼容端点。转发必须填 OpenCode Go 的 API Key(订阅制;获取模型清单不需要 Key,但发请求上游会回 401「Missing API key」)": "같은 주소에서 anthropic 프로토콜로 바꾸면 해당 Claude 호환 엔드포인트를 사용합니다. 포워딩에는 OpenCode Go의 API Key가 반드시 필요합니다 (구독제; 모델 목록 조회에는 Key가 필요 없지만, 요청을 보내면 업스트림이 401 「Missing API key」를 반환합니다)", "响应为空": "응답이 비어 있습니다", "商汤日日新的 OpenAI 兼容端点;余额查询走控制台账号密码(见下方「余额查询」一段)": "SenseNova 의 OpenAI 호환 엔드포인트. 잔액 조회는 콘솔 계정 / 비밀번호를 사용합니다 (아래 \"잔액 조회\" 단락 참조)", "回调已提交,仍需等待网关确认账号登录完成。": "콜백을 제출했습니다. 게이트웨이의 계정 로그인 완료 확인을 기다리세요.", "回调未被接受,请重新复制本次登录的完整回调地址": "콜백이 수락되지 않았습니다. 이번 로그인에 대한 전체 콜백 URL을 다시 복사하세요.", "国内版": "중국판", "国内版与**国际版是两套独立的账号与套餐**,凭证与领取的套餐都不通用。": "중국판과 **국제판은 서로 독립된 두 세트의 계정과 플랜**입니다. 자격 증명과 수령한 플랜은 서로 호환되지 않습니다.", "国内版登录页没有 Google / GitHub 入口(它用微信 / 手机号 / 邮箱登录)": "중국판 로그인 페이지에는 Google / GitHub 항목이 없습니다 (WeChat / 휴대폰 번호 / 이메일로 로그인합니다)", "国内版的登录站点是 www.accio-ai.com,与国际版不是同一站。": "중국판의 로그인 사이트는 www.accio-ai.com이며, 국제판과 같은 사이트가 아닙니다.", "国内版(WorkBuddy)": "중국판 (WorkBuddy)", "国内站为 https://api.siliconflow.cn/v1": "중국 사이트는 https://api.siliconflow.cn/v1입니다", "国内站(minimaxi.com);OpenAI 兼容地址为 https://api.minimaxi.com/v1": "중국 사이트 (minimaxi.com); OpenAI 호환 주소는 https://api.minimaxi.com/v1입니다", "国际版": "국제판", "国际版 z.ai 的 Coding 套餐;OpenAI 兼容地址为 https://api.z.ai/api/coding/paas/v4": "국제판 z.ai의 Coding 플랜; OpenAI 호환 주소는 https://api.z.ai/api/coding/paas/v4입니다", "国际版与国内版是**两套独立的账号**(同一账号体系的两个站点),凭证不通用。": "국제판과 중국판은 **서로 독립된 두 세트의 계정**입니다 (같은 계정 체계의 두 사이트). 자격 증명은 호환되지 않습니다.", "国际版与国内版账号体系独立,请填国际版的凭证。未填 refreshToken 无法自动续期。": "국제판과 중국판은 계정 체계가 독립적입니다. 국제판의 자격 증명을 입력하세요. refreshToken을 입력하지 않으면 자동 갱신할 수 없습니다.", "国际版登录页默认只显示邮箱登录,勾选后恢复 Google / GitHub / X 入口": "국제판 로그인 페이지는 기본적으로 이메일 로그인만 표시하며, 체크하면 Google / GitHub / X 항목이 복원됩니다", "国际版的推理站点是 api.z.ai,与国内版不是同一站;套餐也各自独立。": "국제판의 추론 사이트는 api.z.ai이며 중국판과 다른 사이트입니다; 플랜도 각각 독립적입니다.", "国际版(WorkBuddy AI)": "국제판 (WorkBuddy AI)", "国际站 Coding 套餐;OpenAI 兼容地址为 https://api.minimax.io/v1": "국제 사이트 Coding 플랜; OpenAI 호환 주소는 https://api.minimax.io/v1입니다", "在 AtomGit 的 AtomCode 页面登出后取得两项贴进来:accessToken 与 refreshToken。续期令牌建议填写——本家令牌不是 JWT(约 7 天到期,读不到过期时间),没有它账号无法自动续期,到期只能重新登录。": "AtomGit의 AtomCode 페이지에서 accessToken과 refreshToken 두 값을 가져와 붙여넣으세요. 리프레시 토큰 입력을 권장합니다 —— 이 제공자의 토큰은 JWT가 아니며(약 7일 후 만료되고 만료 시각을 읽을 수 없습니다), 없으면 자동 갱신이 불가능해 만료 후 다시 로그인해야 합니다.", "在 DeepSeek 官网完成登录,自动加入账号列表。": "DeepSeek 공식 웹사이트에서 로그인하면 계정이 자동으로 추가됩니다.", "在 GitHub 输入设备码 {code},核对账号与授权权限。设备码过期后需要重新发起登录。": "GitHub에 기기 코드 {code}를 입력하고 계정 및 요청 권한을 확인하세요. 기기 코드가 만료되면 로그인을 다시 시작해야 합니다.", "在 cc-switch 里找到": "cc-switch에서 찾은", "在 chat.deepseek.com 登录本人账号后,从浏览器开发者工具的 Application → Local Storage 复制 userToken 的 value。Cookie 可选,需补充时粘贴该站点请求里的完整 Cookie;登录态失效或要求人机验证时,请回官方网页手动登录后更新。这里不接受收费 API Key。": "chat.deepseek.com에서 본인 계정에 로그인한 후 브라우저 개발자 도구의 Application → Local Storage에서 userToken의 value를 복사하세요. Cookie는 선택 사항입니다. 필요한 경우 해당 사이트 요청의 전체 Cookie 헤더를 붙여넣으세요. 세션이 만료되거나 사람 확인이 필요한 경우 공식 웹사이트에서 직접 로그인한 후 인증 정보를 갱신하세요. 유료 API Key는 사용할 수 없습니다.", "在 web.tabbit.ai 登录后,从开发者工具 Application → Cookies 复制 token 与 user_id,或直接粘贴该站点请求的 Copy as cURL 整段。国际站没有可复刻的网页授权回调,手机号登录也处在上游灰度里,所以只能导入已有登录态。登录态有效期约 7 天,过期后重新导入。Cookie 与 JWT 至少填一项。": "web.tabbit.ai에 로그인한 뒤 개발자 도구의 Application → Cookies에서 token과 user_id를 복사하거나 해당 사이트 요청의 Copy as cURL 전체를 붙여넣으세요. 국제 사이트는 재현 가능한 웹 인증 콜백이 없고 휴대폰 로그인도 업스트림 점진 배포 중이라 기존 로그인 상태만 가져올 수 있습니다. 로그인 상태는 약 7일간 유효하며 만료 후 다시 가져와야 합니다. Cookie와 JWT 중 하나 이상을 입력하세요.", "在 web.tabbit.com 登录后,从开发者工具 Application → Cookies 复制 token 与 user_id,或直接粘贴该站点请求的 Copy as cURL 整段。登录态有效期约 7 天,上游没有续期接口,过期后重新导入即可。Cookie 与 JWT 至少填一项。": "web.tabbit.com에 로그인한 뒤 개발자 도구의 Application → Cookies에서 token과 user_id를 복사하거나 해당 사이트 요청의 Copy as cURL 전체를 붙여넣으세요. 로그인 상태는 약 7일간 유효하며 업스트림에 갱신 엔드포인트가 없습니다. 만료 후 다시 가져오면 됩니다. Cookie와 JWT 중 하나 이상을 입력하세요.", "在内嵌窗口里完成官方登录,成功后自动加入账号列表。": "내장 창에서 공식 로그인을 완료하면 성공 시 자동으로 계정 목록에 추가됩니다.", "在{label}的 Qoder 账号设置 → Integrations 生成 PAT(别填 Google / GitHub 的令牌)。两个地区的账号与凭证不通用。": "{label}의 Qoder 계정 설정 → Integrations에서 PAT를 생성하세요 (Google / GitHub 토큰을 입력하지 마세요). 두 지역의 계정과 자격 증명은 호환되지 않습니다.", "在应用内嵌窗口完成 WPS 登录,登录凭据仅交给原插件校验并保存到当前网关。": "앱 내장 창에서 WPS에 로그인합니다. 인증 정보는 원본 플러그인에만 전달하여 검증한 뒤 현재 게이트웨이에 저장합니다.", "在所选站点的 MonkeyCode 官方页面完成登录和验证码,成功后自动读取登录态并加入账号列表,无需手动复制 Cookie。": "선택한 지역의 MonkeyCode 공식 페이지에서 로그인과 인증을 완료하세요. 로그인 세션을 자동으로 가져와 계정 목록에 추가하므로 Cookie를 직접 복사할 필요가 없습니다.", "在打开的官方授权页里用微信扫码登录(页面会直接显示二维码)。扫码成功后自动加入账号列表。": "열린 공식 인증 페이지에서 위챗 QR 코드를 스캔하여 로그인하세요(페이지에 QR 코드가 바로 표시됩니다). 스캔에 성공하면 계정이 자동으로 목록에 추가됩니다.", "在打开的官方登录页里完成登录,成功后自动加入账号列表。": "열린 공식 로그인 페이지에서 로그인하면 성공 후 자동으로 계정 목록에 추가됩니다.", "在打开的登录页里用百度账号登录 KukuAI 主站(手机验证码 / 扫码均可),登录成功后自动加入账号列表。网关会向百度换发 KukuAI 业务会话令牌(依赖本机已安装库库AI 客户端)。": "열린 로그인 페이지에서 Baidu 계정으로 KukuAI 본사이트에 로그인하세요(휴대폰 인증번호 / QR 스캔 모두 가능). 성공하면 자동으로 계정 목록에 추가됩니다. 게이트웨이가 Baidu와 KukuAI 업무 세션 토큰을 교환합니다(이 PC에 KukuAI 클라이언트가 설치되어 있어야 함).", "在打开的登录页里登录 Google 账号(Antigravity 的授权页),授权完成后自动加入账号列表。": "열린 로그인 페이지(Antigravity 인증 페이지)에서 Google 계정으로 로그인하면 인증 완료 후 자동으로 계정 목록에 추가됩니다.", "在打开的窗口里用百度账号登录 KukuAI 主站(手机验证码 / 扫码均可),登录成功后自动加入账号列表。网关会向百度换发 KukuAI 业务会话令牌(依赖本机已安装库库AI 客户端)。": "열린 창에서 Baidu 계정으로 KukuAI 메인 사이트에 로그인하세요 (SMS 인증 코드 / QR 스캔 모두 가능). 로그인에 성공하면 자동으로 계정 목록에 추가됩니다. 게이트웨이는 Baidu에서 KukuAI 비즈니스 세션 토큰을 교환 발급받습니다 (이 컴퓨터에 KukuAI 클라이언트가 설치되어 있어야 합니다).", "在打开的窗口里登录 Google 账号(Antigravity 的授权页),授权完成后自动加入账号列表。": "열린 창에서 Google 계정으로 로그인하세요(Antigravity의 인가 페이지). 인가가 완료되면 자동으로 계정 목록에 추가됩니다.", "在打开的页面里登录千问办公{label}({site})的账号,登录完成后会自动加入列表。两版的账号与凭证不通用。": "열린 페이지에서 QwenWork {label}({site}) 계정으로 로그인하세요. 완료하면 자동으로 목록에 추가됩니다. 두 에디션의 계정과 자격 증명은 공용되지 않습니다.", "在浏览器中打开登录页": "브라우저에서 로그인 페이지 열기", "在系统浏览器授权指定 project 的 Code Assist Standard / Enterprise;账号与 project 仍须通过真实预检。": "시스템 브라우저에서 지정한 project의 Code Assist Standard / Enterprise를 승인합니다. 계정과 project는 실제 사전 검증을 통과해야 합니다.", "在豆包官方页面完成登录,窗口会自动读取完整 Cookie 并加入账号列表;不需要安装豆包工作客户端。": "공식 Doubao 페이지에서 로그인하면 창이 전체 Cookie를 읽어 계정을 추가합니다. Doubao Work 클라이언트는 설치하지 않아도 됩니다.", "地区": "지역", "填写信息后发起授权,进度与失败原因会显示在这里。": "필요한 정보를 입력하고 인증을 시작하세요. 진행 상황과 실패 사유는 여기에 표시됩니다.", "填写具体站点名称;模板类型不会作为站点身份": "이 사이트의 이름을 입력하세요. 템플릿 유형은 사이트를 식별하는 데 사용되지 않습니다", "填写凭证": "자격 증명 입력", "填写凭证添加": "자격 증명 입력 후 추가", "备注名": "라벨명", "套餐": "플랜", "如何获取": "발급 방법", "如官方页面跳回的是网关本机地址,请在桌面面板完成回调;手机端不会猜测未声明的回调输入。": "공식 페이지가 게이트웨이의 로컬 주소로 돌아오면 데스크톱 패널에서 콜백을 완료하세요. 모바일 앱은 선언되지 않은 콜백 입력을 추측하지 않습니다.", "如官方页面跳回的是网关本机地址,请粘贴完整回调;没有授权页的本机方式仍需等待网关确认。": "공식 페이지가 게이트웨이의 로컬 주소로 돌아오면 전체 콜백 URL을 붙여넣으세요. 인증 페이지가 없는 로컬 방식도 게이트웨이의 확인을 기다려야 합니다.", "如:公司中转站、个人备用站": "예: 회사 게이트웨이, 개인 백업", "如:智谱 GLM": "예: Zhipu GLM", "安装在运行网关的机器,不是当前手机或浏览器所在设备。由 Agent2API 独立管理,不覆盖原有安装;仅点击按钮后下载。": "현재 휴대폰이나 브라우저 기기가 아닌 게이트웨이 실행 컴퓨터에 설치합니다. Agent2API가 별도로 관리하며 기존 설치를 덮어쓰지 않습니다. 버튼을 눌러야 다운로드합니다.", "安装已取消,原有版本未更改。": "설치가 취소되었습니다. 기존 버전은 변경되지 않았습니다.", "安装操作未得到有效确认,请重新检查状态;不会自动重复安装。": "설치 요청이 확인되지 않았습니다. 상태를 다시 확인하세요. 설치를 자동으로 반복하지 않습니다.", "完成官方登录后粘贴包含 state 的完整 loopback 回调地址。": "공식 로그인을 완료한 뒤 state가 포함된 전체 loopback 콜백 URL을 붙여넣으세요.", "完成登录后自动加入账号列表,昵称取自上游。": "로그인을 완료하면 자동으로 계정 목록에 추가되며, 닉네임은 업스트림에서 가져옵니다.", "完整 JSON 已包含时无需填写": "전체 JSON에 포함되어 있으면 입력 불필요", "完整回调地址(原样提交)": "전체 콜백 URL(원문 그대로 제출)", "官方 PKCE 登录;浏览器登录态有有效期,失效后需重登,不提供维护续期。": "공식 PKCE 로그인입니다. 브라우저 로그인 상태는 만료되며 만료 후 다시 로그인해야 합니다. 유지 관리 갱신은 제공하지 않습니다.", "官方客户端凭证目录:Windows 是 C:\\Users\\<你的用户名>\\AppData\\Local\\CodeBuddyExtension\\Data\\Public\\auth,macOS 是 ~/Library/Application Support/CodeBuddyExtension/Data/Public/auth": "공식 클라이언트 자격 증명 디렉터리: Windows는 C:\\Users\\<사용자명>\\AppData\\Local\\CodeBuddyExtension\\Data\\Public\\auth, macOS는 ~/Library/Application Support/CodeBuddyExtension/Data/Public/auth", "官方已确认到账": "공식 적립 확인 완료", "官方浏览器登录": "공식 브라우저 로그인", "官方浏览器登录(粘贴完整回调)": "공식 브라우저 로그인(전체 콜백 붙여넣기)", "官方网页正常登录后的 Cookie;风控时请手动更新": "공식 웹사이트에 정상 로그인한 후의 Cookie이며 보안 확인이 필요하면 직접 갱신하세요", "客户端版本": "클라이언트 버전", "宿主已持久保存的稳定 hostId(urn:uuid,不能每次生成)": "호스트가 이미 영구 저장한 안정적인 hostId(urn:uuid, 매번 새로 생성하면 안 됨)", "导入": "가져오기", "导入 QuWork 本机登录态": "로컬 QuWork 로그인 가져오기", "导入 kiro-cli / Kiro IDE 登录态": "kiro-cli / Kiro IDE 로그인 상태 가져오기", "导入中…": "가져오는 중…", "导入凭证文件": "자격 증명 파일 가져오기", "导入失败": "가져오기 실패", "导入失败:{reason}": "가져오기 실패: {reason}", "导入所选": "선택 항목 가져오기", "导入所选({n})": "선택 항목 가져오기({n})", "导入桌面端登录态": "데스크톱 로그인 상태 가져오기", "导入用户指定的本地 Copilot 凭证": "사용자가 선택한 로컬 Copilot 인증 정보 가져오기", "将在新标签页中打开授权页;完成后自动加入账号列表。": "새 탭에서 인증 페이지를 엽니다. 완료하면 자동으로 계정 목록에 추가됩니다.", "将在新标签页中打开授权页;完成后自动加入账号列表。若页面跳回本机地址后账号没有出现,按提示把地址栏里的完整回调地址粘贴回来即可。": "새 탭에서 인증 페이지를 엽니다. 완료하면 자동으로 계정 목록에 추가됩니다. 로컬 주소로 돌아온 뒤에도 계정이 나타나지 않으면 안내에 따라 주소창의 전체 콜백 URL을 붙여넣으세요.", "将打开内嵌窗口;授权完成后自动加入账号列表。关掉窗口即取消等待。授权页最后可能提示无法打开 zcode:// 链接,这是正常的 —— 结果已由服务端记下": "내장 창이 열립니다; 인가가 완료되면 자동으로 계정 목록에 추가됩니다. 창을 닫으면 대기가 취소됩니다. 인가 페이지 마지막에 zcode:// 링크를 열 수 없다는 안내가 나올 수 있는데, 정상입니다 — 결과는 이미 서버 측에 기록되었습니다", "将打开内嵌窗口;授权完成后自动加入账号列表。远程面板可粘贴回调地址。关掉窗口即取消等待。链接 5 分钟内有效,超时或未点就会作废(可重新发起)": "내장 창이 열립니다; 인가가 완료되면 자동으로 계정 목록에 추가됩니다. 원격 패널에서는 콜백 주소를 붙여넣을 수 있습니다. 창을 닫으면 대기가 취소됩니다. 링크는 5분간 유효하며, 시간이 초과되거나 클릭하지 않으면 무효가 됩니다 (다시 시작할 수 있습니다)", "将打开内嵌窗口;登录完成后自动加入账号列表。关掉窗口即取消等待": "내장 창이 열립니다; 로그인이 완료되면 자동으로 계정 목록에 추가됩니다. 창을 닫으면 대기가 취소됩니다", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的 Trae 账号);同机完成后自动加入,Docker / 远程面板按提示粘贴地址栏回调地址。": "시스템 기본 브라우저로 인가 페이지를 엽니다 (브라우저에 로그인된 Trae 계정을 재사용합니다); 같은 컴퓨터에서는 완료 시 자동으로 추가되며, Docker / 원격 패널에서는 안내에 따라 주소 표시줄의 콜백 주소를 붙여넣으세요.", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的 ZCode 账号);授权完成后自动加入账号列表。页面最后可能提示无法打开 zcode:// 链接,属正常现象": "시스템 기본 브라우저로 인가 페이지를 엽니다 (브라우저에 로그인된 ZCode 계정을 재사용합니다); 인가가 완료되면 자동으로 계정 목록에 추가됩니다. 페이지 마지막에 zcode:// 링크를 열 수 없다는 안내가 나올 수 있는데 정상입니다", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的华为云账号);授权码由网关轮询云端取回,与浏览器跑在哪台机器无关,完成后自动加入账号列表": "시스템 기본 브라우저로 인가 페이지를 엽니다 (브라우저에 로그인된 Huawei Cloud 계정을 재사용합니다); 인가 코드는 게이트웨이가 클라우드를 폴링해 가져오므로 브라우저가 어느 컴퓨터에서 실행되는지는 상관없습니다. 완료하면 자동으로 계정 목록에 추가됩니다", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的华为云账号);浏览器与网关不在同一台机器时,按上方说明把最终回调地址粘贴回面板": "시스템 기본 브라우저로 인가 페이지를 엽니다 (브라우저에 로그인된 Huawei Cloud 계정을 재사용합니다); 브라우저와 게이트웨이가 같은 컴퓨터에 있지 않다면 위 설명대로 최종 콜백 주소를 패널에 다시 붙여넣으세요", "将用系统默认浏览器打开登录页(会复用浏览器里已登录的 Accio 账号);完成登录后自动加入账号列表,关掉弹窗即取消等待": "시스템 기본 브라우저로 로그인 페이지를 엽니다 (브라우저에 로그인된 Accio 계정을 재사용합니다); 로그인을 완료하면 자동으로 계정 목록에 추가되며, 팝업을 닫으면 대기가 취소됩니다", "将用系统默认浏览器打开登录页(会复用浏览器里已登录的 LobsterAI 账号);完成登录后自动加入账号列表,关掉弹窗即取消等待": "시스템 기본 브라우저로 로그인 페이지를 엽니다 (브라우저에 로그인된 LobsterAI 계정을 재사용합니다); 로그인을 완료하면 자동으로 계정 목록에 추가되며, 팝업을 닫으면 대기가 취소됩니다", "小米 MiMo Token Plan 套餐(新加坡站)": "小米 MiMo Token Plan 플랜 (싱가포르 사이트)", "小米 MiMo 按量 API;使用按量 API Key,不要混用 Token Plan 套餐 Key": "Xiaomi MiMo 종량제 API입니다. Token Plan 구독 Key와 혼용하지 말고 종량제 API Key를 사용하세요", "小米 MiMo(按量)": "Xiaomi MiMo(종량제)", "已到账": "적립 완료", "已取消登录等待": "로그인 대기를 취소했습니다", "已取消领取": "수령을 취소했습니다", "已取消验证码": "인증 코드를 취소했습니다", "已填写手机号,正在发送验证码…": "휴대폰 번호 입력 완료, 인증 코드 전송 중…", "已声明无需鉴权:账号会被正常选路,出网时不带任何鉴权头": "인증 필요 없음으로 선언됨: 계정이 정상적으로 라우팅되며, 외부로 나갈 때 인증 헤더를 전혀 보내지 않습니다", "已完成验证,继续发送": "인증 완료, 다시 보내기", "已导入 {ok} 个,失败 {fail} 个(失败项已标注在列表里)": "가져오기 성공 {ok}개, 실패 {fail}개 (실패 항목은 목록에 표시해 두었습니다)", "已建 API": "설정된 API", "已建过 · {n} 个账号,点击继续添加": "이미 생성됨 · 계정 {n}개, 클릭하여 추가", "已建过,点击继续添加账号": "이미 생성됨, 클릭하여 계정 추가", "已打开官方登录页,请在窗口中完成登录…": "공식 로그인 페이지를 열었습니다. 창에서 로그인을 완료하세요…", "已收到授权回调,正在完成登录…": "인증 콜백을 받았습니다. 로그인을 완료하는 중…", "已收到浏览器授权,正在获取账号凭据…": "브라우저 인증을 받았습니다. 계정 인증 정보를 가져오는 중…", "已有 API Key(留空则在浏览器登录后自动创建)": "기존 API Key(비워 두면 브라우저 로그인 후 자동 생성)", "已有验证码流程正在进行,请先完成或取消": "진행 중인 인증이 있습니다. 먼저 완료하거나 취소하세요.", "已检测到本机客户端": "로컬 클라이언트 감지됨", "已点发送,等待短信…": "전송을 눌렀습니다. SMS 대기 중…", "已用系统默认浏览器打开登录页,请在浏览器中完成登录…": "시스템 기본 브라우저로 로그인 페이지를 열었습니다. 브라우저에서 로그인을 완료하세요…", "已读取 QuWork 本机登录态,正在添加账号。": "QuWork 로컬 로그인을 읽었습니다. 계정을 추가하는 중입니다.", "已领取,等官方确认": "수령 완료, 공식 확인 대기 중", "引用本机 Gemini CLI oauth_creds.json(只读)": "로컬 Gemini CLI oauth_creds.json 참조(읽기 전용)", "当前分类里没有「{keyword}」,其它分类有 {n} 个匹配": "「{keyword}」는 이 분류에 없지만 다른 분류에 {n}개 있습니다", "当前壳版本不支持 AutoClaw 网页登录,请更新应用": "현재 앱 버전에서는 AutoClaw 웹 로그인을 지원하지 않습니다. 앱을 업데이트하세요", "当前没有可领取的套餐(活动尚未开始)": "현재 수령 가능한 플랜이 없습니다 (이벤트가 아직 시작되지 않았습니다)", "当前版本:{version}": "현재 버전: {version}", "当前环境不支持领取(桥接方法缺失)": "현재 환경에서는 수령을 지원하지 않습니다 (브리지 메서드 없음)", "必填,CatPaw 账号标识": "필수, CatPaw 계정 식별자", "恢复 Google / GitHub 入口": "Google / GitHub 항목 복원", "所选代理会保存到账号设置,后续请求继续使用。": "선택한 프록시는 계정 설정에 저장되며 이후 요청에도 사용됩니다.", "手动代理": "수동 프록시", "手动导入 GitHub OAuth / GitHub 令牌": "GitHub OAuth / GitHub 토큰 수동 입력", "手机号": "휴대폰 번호", "手机验证码登录": "SMS 인증 코드 로그인", "打开 LobsterAI(有道龙虾)的官方登录页(lobsterai.youdao.com)并用你的 LobsterAI 账号登录:登录成功后官方页面会跳回本机并自动加入账号列表 —— 回调落在网关自己的端口上,所以浏览器要与网关在同一台机器上;授权码只在本机传给网关,界面不显示明文 token。": "공식 LobsterAI 로그인 페이지(lobsterai.youdao.com)를 열고 LobsterAI 계정으로 로그인하세요: 로그인이 완료되면 공식 페이지가 이 컴퓨터로 되돌아오고 계정이 자동으로 목록에 추가됩니다 —— 콜백은 게이트웨이 자체 포트로 들어오므로 브라우저는 게이트웨이와 같은 컴퓨터에서 열어야 합니다. 인증 코드는 이 컴퓨터에서만 게이트웨이로 전달되며 화면에 평문 토큰은 표시되지 않습니다.", "打开 Trae 的官方授权页(trae.cn)并用你的 Trae 账号登录:授权完成后官方页面会跳回本机的一个临时端口;同机部署自动接收,Docker / 远程面板请按提示复制地址栏回调地址。": "Trae의 공식 인가 페이지(trae.cn)를 열고 Trae 계정으로 로그인하세요: 인가가 완료되면 공식 페이지가 이 컴퓨터의 임시 포트로 되돌아옵니다; 같은 컴퓨터 배포에서는 자동으로 수신하며, Docker / 원격 패널에서는 안내에 따라 주소 표시줄의 콜백 주소를 복사하세요.", "打开 Accio {label}的官方登录页({site})并用你的 Accio 账号登录:登录成功后官方页面会跳回本机;同机自动完成,Docker / 远程面板按提示粘贴回调地址即可(授权码只在本机传给网关,界面不显示明文 token)。": "Accio {label}의 공식 로그인 페이지({site})를 열고 Accio 계정으로 로그인하세요: 로그인에 성공하면 공식 페이지가 이 컴퓨터로 되돌아옵니다; 같은 컴퓨터에서는 자동으로 완료되며, Docker / 원격 패널에서는 안내에 따라 콜백 주소를 붙여넣으면 됩니다 (인가 코드는 이 컴퓨터에서만 게이트웨이에 전달되며, 화면에 평문 token이 표시되지 않습니다).", "打开 Accio {label}登录页": "Accio {label} 로그인 페이지 열기", "打开 Antigravity 网页登录": "Antigravity 웹 로그인 열기", "打开 AtomGit 授权页登录:登录完成后网关会自动轮询代理取回令牌并加入账号列表(授权回调由代理终结,不回到本机,因此无需手工回填回调地址)。": "AtomGit 승인 페이지를 열고 로그인하세요. 완료되면 게이트웨이가 자동으로 브로커를 폴링해 토큰을 가져오고 계정을 추가합니다(콜백은 브로커에서 종료되며 이 기기로 돌아오지 않으므로 콜백 URL을 직접 입력할 필요가 없습니다).", "打开 CatPaw 网页登录": "CatPaw 웹 로그인 열기", "打开 Cline 授权页": "Cline 인가 페이지 열기", "打开 CodeArts 授权页": "CodeArts 인가 페이지 열기", "打开 LobsterAI 登录页": "LobsterAI 로그인 페이지 열기", "打开 Qoder 网页登录": "Qoder 웹 로그인 열기", "打开 Trae 授权页": "Trae 인가 페이지 열기", "打开 ZCode {label}的官方授权页并用你的账号登录。授权结果由 ZCode 服务端记录,网关在后台自动取回凭证并加入账号列表。": "ZCode {label}의 공식 인가 페이지를 열고 계정으로 로그인하세요. 인가 결과는 ZCode 서버에 기록되며, 게이트웨이가 백그라운드에서 자격 증명을 자동으로 가져와 계정 목록에 추가합니다.", "打开 ZCode {label}授权页": "ZCode {label} 인가 페이지 열기", "打开下一步授权页": "다음 인증 페이지 열기", "打开人机验证": "사람 인증 열기", "打开千问办公网页登录": "QwenWork 웹 로그인 열기", "打开华为云 CodeArts 的官方授权页登录:登录完成后官方页面会把浏览器带回网关自己的 /oauth/callback,网关用一次性授权码换取临时凭据并加入账号列表。
    网关跑在另一台机器上时,网页端会提示把地址栏中的最终回调地址直接粘贴回面板。": "Huawei Cloud CodeArts의 공식 인가 페이지를 열어 로그인하세요: 로그인이 완료되면 공식 페이지가 브라우저를 게이트웨이 자체의 /oauth/callback으로 되돌립니다. 게이트웨이는 일회성 인가 코드를 임시 자격 증명으로 교환하고 계정 목록에 추가합니다.
    게이트웨이가 다른 컴퓨터에서 실행 중이면 웹 UI에서 주소 표시줄의 최종 콜백 주소를 패널에 그대로 붙여넣으라는 안내가 표시됩니다.", "打开华为云授权页登录:登录完成后网关会自动轮询云端取回授权码并加入账号列表(不需要装 OfficeAce 桌面端,也无需手工回填回调地址)。": "Huawei Cloud 인가 페이지를 열고 로그인하세요: 완료되면 게이트웨이가 클라우드를 폴링해 인가 코드를 가져와 계정 목록에 추가합니다 (OfficeAce 데스크톱 앱이 필요 없고, 콜백 URL을 수동으로 다시 붙여넣을 필요도 없습니다).", "打开官方授权页": "공식 인증 페이지 열기", "打开官方授权页完成设备码授权,登录的是{label}({site})的账号。": "공식 인가 페이지를 열어 기기 코드 인가를 완료하세요. 로그인되는 계정은 {label} ({site}) 계정입니다.", "打开授权页": "인가 페이지 열기", "打开授权页完成确认,账号自动加入 {label}{note}": "인가 페이지를 열어 확인을 완료하면 계정이 {label}에 자동으로 추가됩니다{note}", "打开方式": "여는 방식", "打开网页登录": "웹 로그인 열기", "按已验证邮箱只读引用 cursor-agent 当前登录态;每次操作重读 keychain/auth.json,不复制 token、不主动运行 CLI 续期,退出或失效后需在原客户端重登。": "검증된 이메일에 고정하여 현재 cursor-agent 로그인을 읽기 전용으로 참조합니다. 작업마다 keychain/auth.json을 다시 읽고 토큰 복사나 CLI 갱신을 실행하지 않습니다. 로그아웃 또는 만료 후에는 원래 클라이언트에서 다시 로그인하세요.", "授权只读引用,不复制、不修改、不续期本机凭证": "로컬 인증 정보를 복사, 수정 또는 갱신하지 않는 읽기 전용 참조 허용", "授权回调提交失败;请检查输入并重试,登录仍在等待。": "인증 콜백 제출에 실패했습니다. 입력을 확인하고 다시 시도하세요. 로그인은 계속 대기 중입니다.", "授权每次请求只读所选文件,固定当前账号与工作区?": "현재 계정과 작업 공간에 고정하여 각 요청에서 선택한 파일의 읽기 전용 참조를 허용할까요?", "授权码或令牌(原样提交)": "인증 코드 또는 토큰(원문 그대로 제출)", "授权读取所选条目": "선택한 항목 읽기 허용", "授权页、换证与取账号信息都走这条线路。无头服务器上没有系统代理,这里不选就走直连(多数网络里到不了 Google)。": "인증 페이지, 코드 교환, 계정 정보 조회가 모두 이 경로를 사용합니다. 헤드리스 서버에는 시스템 프록시가 없으므로 선택하지 않으면 직접 연결됩니다(대부분의 네트워크에서는 Google에 도달할 수 없습니다).", "探测失败:{message}": "탐지 실패: {message}", "接入一个兼容上游": "호환 업스트림 연결", "控制台 uaa-token(粘贴令牌值或完整的 uaa-token=… Cookie 项)": "콘솔 uaa-token(토큰 값 또는 전체 uaa-token=… Cookie 항목 붙여넣기)", "推荐": "권장", "提交中…": "제출 중…", "提交授权回调": "인증 콜백 제출", "提供商仅在已启用且加载后出现。登录与本机引用均作用在所连接网关,不是手机。": "제공업체는 활성화 및 로드 후에만 표시됩니다. 로그인과 로컬 참조는 휴대폰이 아닌 연결된 게이트웨이에 적용됩니다.", "插件专用 Chrome 登录(自动读取凭据)": "플러그인 전용 Chrome 로그인(인증 정보 자동 수집)", "插件会在网关电脑上启动独立浏览器并读取登录结果,不使用系统默认浏览器。": "플러그인이 게이트웨이 컴퓨터에서 별도 브라우저를 열고 로그인 결과를 읽습니다. 시스템 기본 브라우저는 사용하지 않습니다.", "搜索提供商": "제공자 검색", "搜索提供商…": "제공자 검색…", "整份粘贴官方插件 / CLIProxyAPI 落盘的凭据 JSON(形如 {\"codearts_provider_credential\":{…}},铺平的也行)。
    必填:access_key_id、secret_access_key、security_token。要能自动续期,必须连 refresh_token 与 oauth_context 一起粘 —— 临时凭据约一小时到期,缺这半块就续不回来,只能重新登录。": "공식 플러그인 / CLIProxyAPI가 디스크에 기록한 자격 증명 JSON을 통째로 붙여넣으세요 (형식: {\"codearts_provider_credential\":{…}}, 평탄화된 형태도 가능).
    필수: access_key_id, secret_access_key, security_token.자동 갱신을 원하면 refresh_token과 oauth_context도 함께 붙여넣어야 합니다 — 임시 자격 증명은 약 1시간 후 만료되며, 이 부분이 없으면 갱신할 수 없어 다시 로그인해야 합니다.", "文件是{edition}凭证,已按该版本导入": "파일은 {edition} 자격 증명이며 해당 버전으로 가져왔습니다", "新增独立登录": "새 독립 로그인", "新建自定义提供商": "커스텀 제공자 새로 만들기", "新网关确认代理同次保存后不再重复提交;旧网关使用兼容保存并提示核查,失败不会撤销已添加的账号。": "새 게이트웨이가 계정과 프록시의 동시 저장을 확인하면 다시 제출하지 않습니다. 이전 게이트웨이는 호환 저장과 확인 경고를 사용하며 실패해도 추가된 계정을 삭제하지 않습니다.", "方案:{label}": "방식: {label}", "无需手动复制令牌,验证码在官方页面完成。": "토큰을 직접 복사할 필요가 없습니다. 인증 코드는 공식 페이지에서 입력하세요.", "旧网关未确认代理同次保存,已使用兼容接口保存;请在账号设置中确认代理选择。": "이전 게이트웨이가 프록시 동시 저장을 확인하지 않아 호환 API로 저장했습니다. 계정 설정에서 프록시 선택을 확인하세요.", "明文 JWT 或 auth.json 里的 enc: 加密值(自动解密)": "평문 JWT 또는 auth.json의 enc: 암호화 값 (자동 복호화)", "明文 JWT(国际版账号的 access token)": "평문 JWT (국제판 계정의 access token)", "明确选择文件与只读授权;不修改或续期原客户端登录态。": "파일과 읽기 전용 권한을 명시적으로 선택하세요. 원래 클라이언트 로그인 상태는 수정하거나 갱신하지 않습니다.", "明确选择文件内的账号条目键名": "파일 내 정확한 계정 항목 키 이름 선택", "明确选择标准凭证文件的完整绝对路径": "표준 인증 정보 파일의 전체 절대 경로 선택", "是否授权只读取此文件和所选账号凭证?": "이 파일과 선택한 계정 인증 정보의 읽기 전용 접근을 허용할까요?", "显示凭证": "인증 정보 표시", "智谱 bigmodel.cn 的 Coding 套餐,Key 在 open.bigmodel.cn/usercenter/apikeys": "Zhipu bigmodel.cn의 Coding 플랜, Key는 open.bigmodel.cn/usercenter/apikeys에서 발급합니다", "暂不支持自动安装": "자동 설치 미지원", "暂时无法检查官方最新版;已安装且满足最低要求的客户端仍可使用。": "현재 공식 최신 버전을 확인할 수 없습니다. 설치된 클라이언트가 최소 요구 사항을 충족하면 계속 사용할 수 있습니다.", "暂时无法登录": "지금은 로그인할 수 없음", "有可用更新": "업데이트 가능", "未开启客户端调试端口时,请使用网页登录或粘贴 Cookie。": "클라이언트 디버깅 포트를 열지 않았다면 웹 로그인 또는 Cookie 붙여넣기를 사용하세요.", "未知错误": "알 수 없는 오류", "未能获取授权地址,请重试": "인가 주소를 가져오지 못했습니다. 다시 시도하세요", "未能读取 cc-switch 数据": "cc-switch 데이터를 읽지 못했습니다", "未领取成功": "수령하지 못했습니다", "本体订阅未返回动态登录方式(501);不会猜测导入接口或显示插件手动凭证入口。请更新网关后重试。": "본체 구독이 동적 로그인 방식을 반환하지 않았습니다(501). 가져오기 API를 추측하거나 플러그인용 수동 인증 정보 입력을 표시하지 않습니다. 게이트웨이를 업데이트한 후 다시 시도하세요.", "本地 Ollama、OpenCode Zen 免费档这类上游要勾上,否则账号不可用": "로컬 Ollama, OpenCode Zen 무료 등급 같은 업스트림에는 체크해야 하며, 그렇지 않으면 계정을 사용할 수 없습니다", "本家有两个**互不替代**的凭证,按你要用的功能填,至少填一个:编码套餐 API Key 用于转发推理(打 {site})与查询窗口限额(每 N 小时 / 每周的剩余比例);jwt 用于领取套餐与查询余额(打 zcode.z.ai 的 billing 网关,官方叫 Coding Plan JWT,是一串三段点分的字符串)。余额两把都能查、但读到的东西不同:jwt 读到余额桶与套餐到期,API Key 读到窗口限额;而领取只认 jwt、转发只认 API Key。请填写 {label}账号的凭证 —— {plan}(最容易拿到的办法:直接用上方的「网页登录」—— 它会替你把这个 API Key 换好,两个凭证一起拿到。)": "이 제공자에는 **서로 대체할 수 없는** 자격 증명이 두 개 있습니다. 사용할 기능에 따라 입력하고 최소 하나는 입력하세요: 코딩 플랜 API Key는 추론 포워딩({site} 호출)과 윈도우 할당량 조회(N시간마다 / 주간 잔여 비율)에 사용하고, jwt는 플랜 수령과 잔액 조회에 사용합니다(zcode.z.ai의 billing 게이트웨이 호출, 공식 명칭 Coding Plan JWT, 3단 점 구분 문자열). 잔액은 둘 다 조회할 수 있지만 읽어 오는 내용이 다릅니다: jwt는 잔액 버킷과 플랜 만료를, API Key는 윈도우 할당량을 읽습니다. 수령은 jwt만, 포워딩은 API Key만 인정합니다. {label} 계정의 자격 증명을 입력하세요 — {plan} (가장 쉽게 얻는 방법: 위의 「웹 로그인」을 바로 사용하세요 — 이 API Key를 대신 교환해 두 자격 증명을 함께 받아 줍니다.)", "本机 Ollama 的 OpenAI 兼容端点,无需 API Key(默认已勾上「该上游无需鉴权」,鉴权头一个都不发)": "이 컴퓨터의 Ollama OpenAI 호환 엔드포인트, API Key 불필요 (기본적으로 「이 업스트림은 인증이 필요하지 않음」이 체크되어 있고, 인증 헤더를 전혀 보내지 않습니다)", "本机 auth.json(只读引用)": "로컬 auth.json(읽기 전용 참조)", "本机凭证已校验。宿主仅保存文件引用与稳定身份,每次请求重新读取。": "로컬 인증 정보를 검증했습니다. 호스트는 파일 참조와 안정적인 계정 식별 정보만 저장하고 요청마다 다시 읽습니다.", "本机部署会自动完成登录;服务器或 Docker 部署时,若授权后跳到无法访问的 localhost 或 127.0.0.1 页面,请把地址栏中的完整回调地址粘贴回来。AWS 登录如需继续授权,请打开下一步授权页,完成后再次回填。请勿修改地址或把回调链接发给他人。": "로컬 배포에서는 로그인이 자동으로 완료됩니다. 서버 또는 Docker 배포에서 인증 후 localhost나 127.0.0.1 페이지가 열리지 않으면 주소창의 전체 콜백 URL을 여기에 붙여넣으세요. AWS에서 추가 인증이 필요하면 다음 인증 페이지를 열고 완료 후 새 URL을 붙여넣으세요. 주소를 수정하거나 다른 사람과 공유하지 마세요.", "本次未确认到账": "이번에는 적립이 확인되지 않았습니다", "条可导入": "건을 가져올 수 있습니다", "条配置,其中": "건의 설정 중", "桌面运行时不可用(Tauri 未初始化)": "데스크톱 런타임을 사용할 수 없습니다 (Tauri 미초기화)", "检测失败": "확인 실패", "模型网关基址": "모델 게이트웨이 기본 주소", "正在准备 AWS 授权…": "AWS 인증 준비 중…", "正在准备安装…": "설치 준비 중…", "正在取消安装…": "설치 취소 중…", "正在启用新版本…": "새 버전 활성화 중…", "正在打开百度登录页…": "Baidu 로그인 페이지를 여는 중…", "正在扫描本机 cc-switch…": "이 컴퓨터의 cc-switch를 스캔하는 중…", "正在换发访客凭证…": "게스트 자격 증명을 발급하는 중…", "正在校验官方安装包…": "공식 설치 파일 검증 중…", "正在检查安装状态…": "설치 상태 확인 중…", "正在检查客户端版本…": "클라이언트 버전 확인 중…", "正在添加…": "추가하는 중…", "正在等待{name}登录完成;完成或取消后才能发起新的登录": "{name} 로그인 완료를 기다리는 중입니다; 완료하거나 취소한 후에 새로운 로그인을 시작할 수 있습니다", "此 Copilot 手动令牌方式未声明回调输入契约,暂不发起;请改用设备码登录或只读本机引用。": "이 Copilot 수동 토큰 방식은 콜백 입력 규약을 선언하지 않아 시작하지 않습니다. 기기 코드 로그인 또는 로컬 읽기 전용 참조를 사용하세요.", "此提供商已有登录任务,请先完成或取消。": "이 제공업체의 로그인이 이미 진행 중입니다. 먼저 완료하거나 취소하세요.", "此提供商未声明动态登录方式,请在网关桌面面板使用其既有入口;手机端不会猜测凭证字段。": "이 제공업체는 동적 로그인 방식을 선언하지 않았습니다. 게이트웨이 데스크톱 패널의 기존 기능을 사용하세요. 모바일 앱은 인증 정보 필드를 추측하지 않습니다.", "此方式需要原样提交授权码或令牌;输入会隐藏,不会当作 URL 或 API 凭证解析。提交后仍需等待网关确认。": "이 방식은 인증 코드 또는 토큰을 원문 그대로 제출해야 합니다. 입력은 숨겨지며 URL이나 API 인증 정보로 해석하지 않습니다. 제출 후에도 게이트웨이의 확인을 기다립니다.", "此方式需要完整回调地址;请原样粘贴,不拆分参数或重建地址。提交后仍需等待网关确认。": "이 방식은 전체 콜백 URL이 필요합니다. 매개변수를 나누거나 주소를 재구성하지 말고 그대로 붙여넣으세요. 제출 후에도 게이트웨이 확인을 기다립니다.", "每个账号使用独立的官方登录目录。终端登录沿用该终端的网络环境;这里选择的代理用于添加后的模型请求。": "각 계정은 별도의 공식 로그인 디렉터리를 사용합니다. 터미널 로그인은 해당 터미널의 네트워크 설정을 사용하며 여기서 선택한 프록시는 계정 추가 후 모델 요청에 적용됩니다.", "每周": "매주", "每日": "매일", "每月": "매월", "没有则无法自动续期": "없으면 자동 갱신할 수 없습니다", "没有匹配「{keyword}」的提供商": "「{keyword}」와 일치하는 제공자가 없습니다", "浏览器拦截了弹窗": "브라우저가 팝업을 차단했습니다", "浏览器授权已收到,但网关直连 DeepAI 失败。请在登录代理中填入系统代理或选择可用代理后重新登录。": "브라우저 인증은 받았지만 게이트웨이가 DeepAI에 직접 연결하지 못했습니다. 로그인 프록시에 시스템 프록시를 가져오거나 사용 가능한 프록시를 선택한 후 다시 로그인하세요.", "浏览器授权已收到,但通过所选代理获取账号凭据失败。请检查该代理后重新登录。": "브라우저 인증은 받았지만 선택한 프록시를 통해 계정 인증 정보를 가져오지 못했습니다. 프록시를 확인한 후 다시 로그인하세요.", "浏览器显示登录完成后,网关还需联网获取账号凭据。若浏览器或 Magpie 使用系统代理,请先在下方点击「填入系统代理」;选择直连不会跟随系统代理。": "브라우저에 로그인 완료가 표시된 후에도 게이트웨이는 네트워크를 통해 계정 인증 정보를 가져와야 합니다. 브라우저나 Magpie가 시스템 프록시를 사용한다면 먼저 아래의 「시스템 프록시 가져오기」를 누르세요. 직접 연결은 시스템 프록시를 사용하지 않습니다.", "浏览器登录(墨点额度 + 自动创建 API Key)": "브라우저 로그인(먹점 잔액 + API Key 자동 생성)", "浏览器登录(复用已有 API Key)": "브라우저 로그인(기존 API Key 재사용)", "浏览器面板无法读取其他站点的登录态,请使用本人网页账号的令牌。": "브라우저 패널은 다른 사이트의 로그인 상태를 읽을 수 없습니다. 본인 웹 계정의 토큰을 사용하세요.", "浏览器面板无法读取其它站点的 Cookie,请登录 www.doubao.com 后,使用「填写凭证」粘贴完整 Cookie。": "브라우저 패널은 다른 사이트의 Cookie를 읽을 수 없습니다. www.doubao.com에 로그인한 뒤 인증 정보 입력에서 전체 Cookie를 붙여넣으세요.", "添加 DeepSeek 账号": "DeepSeek 계정 추가", "添加 {name} 账号": "{name} 계정 추가", "添加中…": "추가 중…", "添加到 ": "추가 대상: ", "添加到此提供商": "이 제공업체에 추가", "添加失败:{reason}": "추가 실패: {reason}", "添加小浣熊账号": "小浣熊 계정 추가", "添加方式": "추가 방식", "添加时要用它出网校验凭证(例如 Antigravity 要打一次 Google 的 token 端点)。无头服务器上没有系统代理,这里不选就走直连。": "추가할 때 자격 증명을 검증하는 통신에 사용합니다(예: Antigravity는 Google 토큰 엔드포인트를 호출합니다). 헤드리스 서버에는 시스템 프록시가 없으므로 선택하지 않으면 직접 연결됩니다.", "添加访客账号": "게스트 계정 추가", "添加账号": "계정 추가", "火山引擎 Coding 套餐;通用推理接入点为 https://ark.cn-beijing.volces.com/api/v3": "Volcano Engine Coding 플랜; 범용 추론 엔드포인트는 https://ark.cn-beijing.volces.com/api/v3입니다", "点击添加账号": "클릭하여 계정 추가", "点击登录后,在 Google 页面授权,再原样粘贴授权码或完整页面地址;已登录的 agy 会直接连接。Google 凭证由官方客户端保管,Agent2API 只保存本机连接标记。同一网关仅使用 agy 当前登录的一个账号,不支持复制为多个独立账号。": "로그인을 누르고 Google 페이지에서 승인한 뒤 인증 코드 또는 전체 페이지 주소를 그대로 붙여넣으세요. agy가 이미 로그인되어 있으면 바로 연결됩니다. Google 인증 정보는 공식 클라이언트가 보관하며 Agent2API는 로컬 연결 표시만 저장합니다. 각 게이트웨이는 agy의 현재 계정 하나만 사용하며 여러 독립 계정으로 복제할 수 없습니다.", "点开即预填,填 Key 接入": "열면 값이 미리 채워져 있으며, Key를 입력하면 연결됩니다", "点按钮后先过一次滑块验证(官方风控),随后打开登录页,登录完成即自动添加账号。
    这是国际版官方唯一的登录方式;已在客户端登录过的,用「导入桌面端登录态」更快。": "버튼을 누르면 먼저 슬라이더 인증을 한 번 통과하고(공식 리스크 관리), 이어서 로그인 페이지가 열리며 로그인이 완료되면 계정이 자동으로 추가됩니다.
    이것이 국제판의 공식 유일한 로그인 방식입니다; 이미 클라이언트에 로그인한 적이 있다면 「데스크톱 로그인 상태 가져오기」가 더 빠릅니다.", "独立 Kiro OAuth 支持续期;保留原登录验证,不接受任意 bearer token。": "독립 Kiro OAuth는 갱신을 지원합니다. 기존 로그인 검증을 유지하며 임의의 bearer token은 받지 않습니다.", "用 AutoClaw 账号绑定的手机号登录:点击「获取验证码」,收到短信后填入下方并登录。验证码由本机直接提交给官方接口,界面不显示 token。": "AutoClaw 계정에 연결된 휴대폰 번호로 로그인합니다: 「코드 받기」를 클릭하고 SMS를 받은 뒤 아래에 입력하여 로그인하세요. 인증 코드는 이 컴퓨터에서 공식 API로 직접 제출되며, 화면에 token이 표시되지 않습니다.", "用 CatPaw 账号完成登录(美团 passport),成功后自动加入账号列表。": "CatPaw 계정으로 로그인합니다 (Meituan passport), 성공하면 자동으로 계정 목록에 추가됩니다.", "用 Loomy 账号绑定的手机号登录:点「获取验证码」后填入即可。这是本家最省事的入口。": "Loomy 계정에 연결된 휴대폰 번호로 로그인합니다: 「코드 받기」를 클릭한 뒤 입력하면 됩니다. 이 제공자에서 가장 간편한 방법입니다.", "用于转发;形如 apiKey.secret 两段点分(不填则这个账号不能转发)": "포워딩에 사용합니다; apiKey.secret 형태의 2단 점 구분 (입력하지 않으면 이 계정은 포워딩할 수 없습니다)", "用于领取套餐与查询余额;不填则这个账号不能领取与查余额": "플랜 수령과 잔액 조회에 사용합니다; 입력하지 않으면 이 계정은 수령과 잔액 조회를 할 수 없습니다", "用户 ID": "사용자 ID", "用绑定的手机号登录:点「获取验证码」后填入即可。这是国内版官方唯一的登录方式。": "연결된 휴대폰 번호로 로그인합니다: 「코드 받기」를 클릭한 뒤 입력하면 됩니다. 이것이 중국판의 공식 유일한 로그인 방식입니다.", "用绑定的手机号登录:点「获取验证码」,收到短信后填入下方并点「登录并添加」。这是国内站官方唯一的登录方式。": "본인 휴대폰 번호로 로그인합니다. '인증 코드 받기'를 누르고 문자로 받은 코드를 아래에 입력한 뒤 '로그인 및 추가'를 클릭하세요. 중국 사이트의 유일한 공식 로그인 방법입니다.", "由插件打开浏览器登录": "플러그인 브라우저로 로그인", "由本机 Grok Build CLI 执行官方设备授权;仅保存 home/scope/account 引用,不镜像 token,后续操作只读,不提供维护续期。": "로컬 Grok Build CLI가 공식 기기 인증을 수행합니다. home/scope/account 참조만 저장하고 토큰을 복제하지 않습니다. 이후 작업은 읽기 전용이며 유지 관리 갱신은 제공하지 않습니다.", "留空使用 1.17.16(10117016)": "비워 두면 1.17.16(10117016) 사용", "留空使用该提供商默认值": "비워 두면 공급자의 기본값 사용", "留空使用账号默认名称": "비워 두면 계정 기본 이름 사용", "留空使用默认的 User-Agent;可从预置里选一个内置客户端,也可以直接填写。": "비워 두면 기본 User-Agent를 사용합니다. 프리셋에서 내장 클라이언트를 선택하거나 직접 입력할 수 있습니다.", "留空则用提供商名称": "비워 두면 제공자 이름 사용", "留空自动查找;也可填写网关本机 agy 可执行文件的绝对路径": "비워 두면 자동으로 찾습니다. 게이트웨이 컴퓨터에 있는 agy의 절대 경로를 입력할 수도 있습니다", "登录 / 添加 {name} 账号": "로그인 / {name} 계정 추가", "登录 JWT": "로그인 JWT", "登录 chat.deepseek.com 后,打开开发者工具 → Application → Local Storage,复制 userToken 的 value。": "chat.deepseek.com에 로그인한 후 개발자 도구 → Application → Local Storage를 열고 userToken의 value를 복사하세요.", "登录 session(一长串)": "로그인 session (긴 문자열)", "登录中…": "로그인 중…", "登录代理不支持轮询出网,请选择一条已保存的代理": "로그인은 순환 프록시를 지원하지 않습니다. 저장된 프록시 하나를 선택하세요.", "登录凭证 accessToken": "로그인 인증 정보 accessToken", "登录出网代理": "로그인 아웃바운드 프록시", "登录取消未确认,请刷新状态后重试。": "로그인 취소가 확인되지 않았습니다. 상태를 새로고침한 후 다시 시도하세요.", "登录失败:{message}": "로그인 실패: {message}", "登录尚未完成,请继续通过共享登录桥等待结果": "로그인이 아직 완료되지 않았습니다. 공용 로그인 브리지에서 계속 결과를 기다리세요.", "登录已结束": "로그인이 종료되었습니다", "登录并添加": "로그인 후 추가", "登录态文件路径:~/.box-agent/config/auth.json(Windows:C:\\Users\\<你的用户名>\\.box-agent\\config\\auth.json)": "로그인 상태 파일 경로: ~/.box-agent/config/auth.json (Windows: C:\\Users\\<사용자 이름>\\.box-agent\\config\\auth.json)", "登录授权地址无效,已取消本次等待。": "로그인 인증 URL이 유효하지 않아 대기를 취소했습니다.", "登录桥未返回已完成的账号或会话,请重试": "로그인 브리지가 완료된 계정이나 세션을 반환하지 않았습니다. 다시 시도하세요.", "登录桥返回了空会话,无法确认账号已添加": "로그인 브리지가 빈 세션을 반환하여 계정 추가 여부를 확인할 수 없습니다.", "相同协议和地址的提供商已经存在。可以继续新建独立提供商,或明确选择已有提供商添加账号。": "같은 프로토콜과 주소를 사용하는 제공업체가 이미 있습니다. 별도의 제공업체를 만들거나 기존 제공업체를 선택해 계정을 추가하세요.", "看全部匹配": "모든 일치 항목 보기", "确定删除自定义提供商「{name}」?将同时删除该提供商下 {count} 个账号,删除后无法恢复。": "커스텀 제공자 「{name}」을(를) 삭제할까요? 이 제공자 아래의 계정 {count}개도 함께 삭제되며, 삭제 후에는 복구할 수 없습니다.", "站点名称": "사이트 이름", "端砚由插件在网关电脑上启动独立的 Edge、Chrome 或 Chromium 窗口,不使用系统默认浏览器或应用内嵌窗口。": "InkStone 플러그인은 게이트웨이 컴퓨터에서 별도의 Edge, Chrome 또는 Chromium 창을 실행합니다. 시스템 기본 브라우저나 앱 내장 창은 사용하지 않습니다.", "等待 Accio {label}登录完成…": "Accio {label} 로그인 대기 중…", "等待 AtomCode 登录完成…": "AtomCode 로그인 완료 대기 중…", "等待 CatPaw 登录完成…": "CatPaw 로그인 대기 중…", "等待 Cline 授权确认…": "Cline 인가 확인 대기 중…", "等待 CodeArts 登录完成…": "CodeArts 로그인 대기 중…", "等待 Google 授权完成…": "Google 인가 대기 중…", "等待 KukuAI 登录完成…": "KukuAI 로그인 대기 중…", "等待 LobsterAI 登录完成…": "LobsterAI 로그인 대기 중…", "等待 MonkeyCode 登录完成…": "MonkeyCode 로그인 완료 대기 중…", "等待 OfficeAce 登录完成…": "OfficeAce 로그인 대기 중…", "等待 OrcaTerm 登录完成…": "OrcaTerm 로그인 대기 중…", "等待 Qoder 授权完成…": "Qoder 인가 대기 중…", "等待 Trae 授权完成…": "Trae 인가 대기 중…", "等待 ZCode {label}授权完成…": "ZCode {label} 인가 대기 중…", "等待你在官方页面完成登录,成功后自动添加账号。": "공식 페이지에서 로그인을 완료하기를 기다리는 중입니다. 성공하면 계정이 자동으로 추가됩니다.", "等待千问办公登录完成…": "QwenWork 로그인 완료를 기다리는 중…", "等待小浣熊登录完成…": "小浣熊 로그인 대기 중…", "等待插件完成登录": "플러그인 로그인 완료 대기 중", "等待浏览器完成登录": "브라우저 로그인 완료 대기 중", "等待浏览器授权;若本机回调页面无法打开,请复制地址栏中的完整地址回填。": "브라우저 인증을 기다리는 중입니다. 로컬 콜백 페이지가 열리지 않으면 주소창의 전체 주소를 복사해 붙여넣으세요.", "等待登录完成…": "로그인 완료 대기 중…", "等待网页登录…": "웹 로그인 대기 중…", "等待豆包工作登录完成…": "Doubao Work 로그인 완료를 기다리는 중…", "粘贴 API Key": "API Key 붙여넣기", "粘贴 API 令牌": "API 토큰 붙여넣기", "粘贴 Accio 的 accessToken": "Accio의 accessToken 붙여넣기", "粘贴 Antigravity 的 Google refresh token(以 1// 开头;直接粘贴含 refresh_token= 的整行也行)。
    这是网页登录之外的手工入口(例如从已登录的官方 IDE 里导出)。refresh token 不会过期,access token 到期由网关自动续期;令牌丢了只能重新走 Google 授权,请妥善保存。": "Antigravity의 Google refresh token을 붙여넣으세요 (1//로 시작; refresh_token=이 포함된 줄 전체를 붙여넣어도 됨).
    웹 로그인 외의 수동 입구입니다(예: 로그인된 공식 IDE에서 내보내기). refresh token은 만료되지 않으며, access token 만료 시 게이트웨이가 자동으로 갱신합니다; 토큰을 잃어버리면 Google 인가를 다시 받아야 하므로 잘 보관하세요.", "粘贴 Command Code 的 API Key(user_ 开头;从官方 CLI 的 ~/.commandcode/auth.json 或网页 studio 获取)。整行 / 带引号 / 带 Bearer 前缀地粘都行,网关会自己剥成裸 key。key 不过期、也没有续期接口,失效后重新获取即可;添加时网关会做一次轻量探活,失败不影响添加。": "Command Code의 API Key를 붙여넣으세요 (user_로 시작; 공식 CLI의 ~/.commandcode/auth.json 또는 웹 studio에서 획득). 줄 전체 / 따옴표 포함 / Bearer 접두사 포함 그대로 붙여넣어도 됩니다. 게이트웨이가 알아서 순수한 key만 추출합니다. key는 만료되지 않고 갱신 인터페이스도 없으므로, 무효가 되면 다시 받으면 됩니다; 추가 시 게이트웨이가 가벼운 활성 확인을 한 번 수행하며, 실패해도 추가에는 영향을 주지 않습니다.", "粘贴 Cookie": "Cookie 붙여넣기", "粘贴 Google refresh token": "Google refresh token 붙여넣기", "粘贴 ModelScope 的 API 令牌(ms- 开头,在 {site} 的「访问令牌」页获取)。
    {siteNote}
    这枚令牌两用:网关既用它调推理,也用它读账号身份、魔粒余额与每日签到。令牌长期有效、没有续期接口,失效后重新获取再粘一次即可。": "ModelScope API 토큰(ms- 로 시작)을 붙여넣으세요({site} 의 '액세스 토큰' 페이지에서 발급).
    {siteNote}
    이 토큰은 두 가지 용도로 쓰입니다: 게이트웨이가 추론 호출에도, 계정 신원·마립 잔액·매일 출석 조회에도 사용합니다. 토큰은 장기 유효하며 갱신 API 가 없으므로, 사용할 수 없게 되면 다시 발급받아 붙여넣으면 됩니다.", "粘贴 OrcaTerm 的 OAuth accessToken(JWT,三段点分;从桌面客户端 data.bin 或 Web 版 Cookie ot_session 获取)。直接粘贴含 Bearer / ot_session= 的整行也行,网关会自己剥成裸 token。添加后由网关自动续期(上游有续期接口),无需跟随 2 小时时效手动更换。": "OrcaTerm의 OAuth accessToken(점 3개로 구분된 JWT. 데스크톱 클라이언트의 data.bin 또는 웹 버전 Cookie ot_session에서 확인)을 붙여넣으세요. Bearer / ot_session=이 포함된 줄을 그대로 붙여넣어도 되며, 게이트웨이가 토큰만 추출합니다. 추가 후에는 게이트웨이가 자동으로 갱신하므로(업스트림에 갱신 API가 있음) 2시간 만료를 직접 따라갈 필요가 없습니다.", "粘贴 Qoder 个人访问令牌(pt-…)": "Qoder 개인 액세스 토큰(pt-…) 붙여넣기", "粘贴 accessToken": "accessToken 붙여넣기", "粘贴 access_token(一长串 JWT)": "access_token 붙여넣기 (긴 JWT)", "粘贴 session cookie": "session cookie 붙여넣기", "粘贴 token / refreshToken": "token / refreshToken 붙여넣기", "粘贴 userToken.value": "userToken.value 붙여넣기", "粘贴 workos:… 开头的令牌(不带前缀也会自动补上)": "workos:…로 시작하는 토큰 붙여넣기 (접두사가 없어도 자동으로 붙습니다)", "粘贴 www.doubao.com 的完整 Cookie(必须含 sessionid),也支持 Cookie JSON 数组或对象。复用豆包工作账号的额度;Cookie 失效后需重新登录,没有自动续期。": "sessionid가 포함된 www.doubao.com의 전체 Cookie를 붙여넣으세요. Cookie JSON 배열이나 객체도 지원합니다. Doubao Work 계정의 할당량을 사용하며 Cookie가 만료되면 다시 로그인해야 합니다. 자동 갱신은 없습니다.", "粘贴令牌": "토큰 붙여넣기", "粘贴令牌对": "토큰 쌍 붙여넣기", "粘贴你本人已授权的 GitHub OAuth 令牌(不是设备码或 Copilot 短令牌)。令牌仍需由 GitHub 验证并交换;CLI 专用令牌可能不支持编辑器令牌交换。": "본인이 승인한 GitHub OAuth 토큰을 붙여 넣으세요. 기기 코드나 단기 Copilot 토큰이 아닙니다. GitHub의 검증 및 교환이 필요하며 CLI 전용 토큰은 편집기 토큰 교환을 지원하지 않을 수 있습니다.", "粘贴完整登录凭证 JSON,或只填模型凭证 llmToken。仅模型凭证可对话;积分、续期和奖励需要登录凭证 accessToken。": "전체 로그인 JSON 또는 모델 인증 정보 llmToken을 붙여 넣으세요. 모델 인증 정보만 있으면 채팅할 수 있으며 포인트·갱신·보상에는 accessToken이 필요합니다.", "粘贴智谱清言的访问令牌(JWT,三段点分)。获取方式:浏览器打开 chatglm.cn 并登录后,在开发者工具的 Application → Cookies 里复制 chatglm_token 的值(也可以直接粘 chatglm_token=…; 整行)。粘贴后会先向上游校验一次,校验通过才落账号;登录账号的积分、签到能力都能用,之后由网关自动续期(上游有续期接口)。": "智谱清言 액세스 토큰(점 3개로 구분된 JWT)을 붙여넣으세요. 발급 방법: 브라우저에서 chatglm.cn을 열고 로그인한 뒤 개발자 도구의 Application → Cookies에서 chatglm_token 값을 복사합니다(chatglm_token=…; 줄을 그대로 붙여도 됩니다). 붙여넣은 뒤 업스트림에 한 번 검증하며, 통과한 경우에만 계정을 저장합니다. 로그인된 계정은 포인트와 签到 기능을 쓸 수 있고, 이후 게이트웨이가 자동으로 갱신합니다(업스트림에 갱신 인터페이스가 있습니다).", "粘贴登录凭据": "로그인 자격 증명 붙여넣기", "粘贴的是登录 session(同时是模型网关的 token)。Loomy 没有续期接口,session 有效期约 14 天,过期后重新登录即可。": "붙여넣는 것은 로그인 session입니다 (동시에 모델 게이트웨이의 token입니다). Loomy에는 갱신 인터페이스가 없으며 session 유효 기간은 약 14일이므로, 만료되면 다시 로그인하면 됩니다.", "粘贴网关凭据": "게이트웨이 자격 증명 붙여넣기", "粘贴网页登录凭证": "웹 로그인 자격 증명 붙여넣기", "粘贴网页登录态 cookie monkeycode_ai_session 的值(在浏览器里复制整段 Cookie 直接粘贴也行,网关会自己剥出值)。
    {siteNote}
    MonkeyCode 没有续期接口:session 有效期约 30 天(硬限制),过期后重新登录网页、再粘贴一次即可。": "웹 로그인 상태 cookie monkeycode_ai_session의 값을 붙여넣으세요 (브라우저에서 전체 Cookie를 복사해 그대로 붙여넣어도 됩니다. 게이트웨이가 값을 알아서 추출합니다).
    {siteNote}
    MonkeyCode에는 갱신 인터페이스가 없습니다: session 유효 기간은 약 30일(하드 제한)이며, 만료되면 웹에 다시 로그인해 한 번 더 붙여넣으면 됩니다.", "粘贴网页访问令牌": "웹 액세스 토큰 붙여넣기", "粘贴访问令牌": "액세스 토큰 붙여넣기", "系统浏览器": "시스템 브라우저", "系统浏览器可复用已有登录态(国际版推荐);内嵌窗口更干净。": "시스템 브라우저는 기존 로그인 상태를 재사용할 수 있습니다 (국제판 권장); 내장 창이 더 깔끔합니다.", "系统浏览器打开(复用已登录的 Cline 账号);完成后自动加入列表": "시스템 브라우저로 엽니다 (로그인된 Cline 계정 재사용); 완료하면 자동으로 목록에 추가됩니다", "系统浏览器打开(复用已登录的 Google 账号);完成后自动加入列表": "시스템 브라우저로 엽니다(로그인된 Google 계정 재사용); 완료하면 자동으로 목록에 추가됩니다", "系统浏览器打开(复用已登录的 Zai / Google 账号);完成后自动加入列表": "시스템 브라우저로 엽니다 (로그인된 Zai / Google 계정 재사용); 완료하면 자동으로 목록에 추가됩니다", "系统浏览器打开(复用已登录的美团账号);完成后自动加入列表": "시스템 브라우저로 엽니다 (로그인된 Meituan 계정 재사용); 완료하면 자동으로 목록에 추가됩니다", "系统浏览器打开(复用已登录账号);完成后自动加入列表": "시스템 브라우저로 엽니다 (로그인된 계정 재사용); 완료하면 자동으로 목록에 추가됩니다", "系统默认浏览器": "시스템 기본 브라우저", "组织登录地址(Start URL)": "조직 로그인 주소(Start URL)", "继续新建独立提供商": "별도의 제공업체 만들기", "续期令牌": "리프레시 토큰", "编码套餐 API Key": "코딩 플랜 API Key", "网关 Secret": "게이트웨이 시크릿", "网关未返回有效的手动回调输入契约;请更新网关后重新发起。": "게이트웨이가 유효한 수동 콜백 입력 규약을 반환하지 않았습니다. 게이트웨이를 업데이트하고 다시 시작하세요.", "网页 Cookie": "웹 Cookie", "网页登录": "웹 로그인", "网页登录 / 填写凭证": "웹 로그인 / 인증 정보 입력", "网页登录的打开方式": "웹 로그인을 여는 방식", "网页登录(Zai / Google)": "웹 로그인 (Zai / Google)", "网页访问令牌": "웹 액세스 토큰", "腾讯 TokenHub 国内版(按量)": "Tencent TokenHub 중국판(종량제)", "腾讯 TokenHub 国内站按量 API;使用 TokenHub API Key,不是 Token Plan 套餐或 WorkBuddy 凭证": "Tencent TokenHub 중국 사이트의 종량제 API입니다. Token Plan 또는 WorkBuddy 인증 정보가 아닌 TokenHub API Key를 사용하세요", "腾讯 TokenHub 国际版(按量)": "Tencent TokenHub 국제판(종량제)", "腾讯 TokenHub 国际站按量 API;使用 TokenHub API Key,不是 Token Plan 套餐或 WorkBuddy 凭证": "Tencent TokenHub 국제 사이트의 종량제 API입니다. Token Plan 또는 WorkBuddy 인증 정보가 아닌 TokenHub API Key를 사용하세요", "自定义": "커스텀", "自建聚合面板:填你自己的站点地址。余额查询用该账号的 API Key 打 {base}/v1/usage,不需要额外配置": "자체 구축 어그리게이션 패널: 자신의 사이트 주소를 입력하세요. 잔액 조회는 이 계정의 API 키로 {base}/v1/usage 를 호출하며 추가 설정이 필요 없습니다", "自建聚合面板:填你自己的站点地址;余额查询要另填 NewAPI 的个人访问令牌(见下方「余额查询」一段)": "자체 구축 어그리게이션 패널: 자신의 사이트 주소를 입력하세요. 잔액 조회에는 별도로 NewAPI 개인 액세스 토큰이 필요합니다 (아래 \"잔액 조회\" 단락 참조)", "获取风控配置失败,将直接尝试领取:{message}": "리스크 관리 구성을 가져오지 못했습니다. 바로 수령을 시도합니다: {message}", "获取风控配置失败:{message}": "인증 설정을 가져오지 못했습니다: {message}", "获取验证码": "코드 받기", "要添加到其他站点,请返回「已建 API」重新选择": "다른 사이트에 추가하려면 「설정된 API」로 돌아가 다시 선택하세요", "解锁 Premium": "Premium 잠금 해제", "访客模式": "게스트 모드", "访客模式(免登录)": "게스트 모드(로그인 불필요)", "访问令牌": "액세스 토큰", "该上游无需鉴权(不发送鉴权头)": "이 업스트림은 인증이 필요하지 않음 (인증 헤더를 보내지 않음)", "该地址已有提供商": "이 주소를 사용하는 제공업체가 이미 있습니다", "该提供商": "이 제공자", "该提供商已不存在或地址已变更,请重新选择": "이 제공업체가 더 이상 존재하지 않거나 주소가 변경되었습니다. 다시 선택하세요", "该提供商已不存在(可能已被删除),请刷新后重试": "이 제공업체가 더 이상 존재하지 않습니다 (삭제되었을 수 있습니다). 새로고침 후 다시 시도하세요", "该提供商账号添加功能即将上线": "이 제공자의 계정 추가 기능이 곧 출시됩니다", "该登录需要继续跳转,请在网关桌面面板重新发起。": "이 로그인에는 추가 리디렉션이 필요합니다. 게이트웨이 데스크톱 패널에서 다시 시작하세요.", "该自定义提供商已不存在(可能已被删除),请刷新后重试": "이 커스텀 제공자가 더 이상 존재하지 않습니다(삭제되었을 수 있습니다). 새로 고친 후 다시 시도하세요", "请使用网页访问令牌,不要填写 sk- 开头的 API Key。": "웹 액세스 토큰을 사용하고 sk-로 시작하는 API Key는 입력하지 마세요.", "请先选择一个自定义提供商": "먼저 커스텀 제공자를 선택하세요", "请在弹出的滑块中完成验证(官方要求的风控步骤)": "표시된 슬라이더에서 인증을 완료하세요 (공식에서 요구하는 리스크 관리 단계)", "请在插件打开的专用 Chrome 窗口中登录移动云(yun.139.com)。登录成功后会自动读取并验证凭据,随后继续添加账号。": "플러그인이 연 전용 Chrome 창에서 차이나 모바일 클라우드(yun.139.com)에 로그인하세요. 로그인 후 인증 정보를 자동으로 읽고 검증한 다음 계정 추가를 계속합니다.", "请在插件打开的端砚控制台窗口中登录(支持密码、短信或扫码)。插件会自动读取登录结果并关闭窗口,无需手动关闭;随后按所选方式创建或复用 API Key。新建密钥的明文只显示一次,由插件保存。": "플러그인이 연 InkStone 콘솔 창에서 비밀번호, SMS 또는 QR 코드로 로그인하세요. 플러그인이 로그인 결과를 읽고 창을 자동으로 닫은 뒤 선택한 방식에 따라 API Key를 생성하거나 재사용합니다. 새 키의 원문은 한 번만 표시되며 플러그인이 저장합니다.", "请在插件打开的端砚控制台窗口中登录(支持密码、短信或扫码),然后退出该浏览器:macOS 请按 Cmd+Q(只关闭窗口不够),Linux 请关闭最后一个窗口。插件读取登录结果后会继续处理,并按所选方式创建或复用 API Key。新建密钥的明文只显示一次,由插件保存。": "플러그인이 연 InkStone 콘솔 창에서 비밀번호, SMS 또는 QR 코드로 로그인한 후 해당 브라우저를 종료하세요. macOS에서는 Cmd+Q를 누르고(창만 닫으면 안 됨), Linux에서는 마지막 창을 닫으세요. 플러그인이 결과를 읽고 선택한 방식에 따라 API Key를 생성하거나 재사용합니다. 새 키의 원문은 한 번만 표시되며 플러그인이 저장합니다.", "请在系统浏览器完成官方登录。": "시스템 브라우저에서 공식 로그인을 완료하세요.", "请在运行网关的机器上打开 PowerShell,执行下面的专用登录命令,并按官方提示完成授权。面板会自动检测登录结果,不需要粘贴凭证。": "게이트웨이 컴퓨터에서 PowerShell을 열고 아래 전용 로그인 명령을 실행한 뒤 공식 안내에 따라 인증을 완료하세요. 패널이 완료를 자동으로 감지하므로 인증 정보를 붙여넣을 필요가 없습니다.", "请在运行网关的机器上打开终端,执行下面的专用登录命令,并按官方提示完成授权。面板会自动检测登录结果,不需要粘贴凭证。": "게이트웨이 컴퓨터에서 터미널을 열고 아래 전용 로그인 명령을 실행한 뒤 공식 안내에 따라 인증을 완료하세요. 패널이 완료를 자동으로 감지하므로 인증 정보를 붙여넣을 필요가 없습니다.", "请填写 11 位大陆手机号": "11자리 중국 본토 휴대폰 번호를 입력하세요", "请填写 6 位数字验证码": "6자리 숫자 인증 코드를 입력하세요", "请填写 Base URL": "Base URL을 입력하세요", "请填写 {label}": "{label}을(를) 입력하세요", "请填写名称": "이름을 입력하세요", "请安装并启用对应的提供商插件;列表为空时请刷新后重试。": "해당 제공업체 플러그인을 설치하고 활성화하세요. 목록이 비어 있으면 새로고침한 후 다시 시도하세요.", "请完成验证…": "인증을 완료하세요…", "请选择客户端凭证文件,或本软件导出的单账号 JSON 文件": "클라이언트 인증 파일 또는 이 앱에서 내보낸 단일 계정 JSON 파일을 선택해 주세요.", "读取 %APPDATA%/AutoClaw/auth.json 并解密,仅 Windows": "%APPDATA%/AutoClaw/auth.json을 읽어 복호화합니다. Windows 전용", "读取 ~/.cline/data/settings/providers.json,需已在 Cline 客户端登录": "~/.cline/data/settings/providers.json을 읽습니다. Cline 클라이언트에 로그인되어 있어야 합니다", "读取 ~/.meituan-catpaw/auth.json,需已在 CatPaw 客户端登录": "~/.meituan-catpaw/auth.json을 읽습니다. CatPaw 클라이언트에 로그인되어 있어야 합니다", "读取本机 KukuAI 客户端登录态(%APPDATA%\\baidugenflowpro\\Network\\Cookies),需已在 KukuAI 客户端登录": "이 컴퓨터의 KukuAI 클라이언트 로그인 상태를 읽습니다 (%APPDATA%\\baidugenflowpro\\Network\\Cookies). KukuAI 클라이언트에 로그인되어 있어야 합니다", "读取本机 OrcaTerm 客户端登录态(%APPDATA%\\com.orcaterm-desktop.app\\data.bin),需已在 OrcaTerm 客户端登录": "로컬 OrcaTerm 클라이언트 로그인 상태(%APPDATA%\\com.orcaterm-desktop.app\\data.bin)를 읽습니다. OrcaTerm 클라이언트에 로그인되어 있어야 합니다", "读取本机已登录豆包工作客户端的 Cookie,每次请求实时读取;客户端需使用 --remote-debugging-port=9342 启动。本软件不修改、关闭或重启客户端。": "요청할 때마다 로그인된 로컬 Doubao Work 클라이언트의 Cookie를 읽습니다. --remote-debugging-port=9342로 클라이언트를 시작하세요. 이 앱은 클라이언트를 수정하거나 종료 또는 재시작하지 않습니다.", "读取本机智谱清言客户端登录态(%APPDATA%\\chatglm\\Network\\Cookies),需已在客户端登录": "이 PC의 智谱清言 클라이언트 로그인 상태를 읽습니다(%APPDATA%\\chatglm\\Network\\Cookies). 클라이언트에 로그인되어 있어야 합니다", "读取的是网关电脑上已登录的客户端,不是打开面板的电脑;也可改用粘贴凭据。": "패널을 연 컴퓨터가 아닌 게이트웨이 컴퓨터의 로그인된 클라이언트를 읽습니다. 인증 정보 붙여넣기도 사용할 수 있습니다.", "读取网关所在机器上 kiro-cli 或 Kiro IDE 的登录态,不是当前浏览器所在电脑的账号;续期后会写回原处。": "현재 브라우저를 실행하는 컴퓨터가 아닌 게이트웨이 컴퓨터의 kiro-cli 또는 Kiro IDE 로그인 상태를 읽습니다. 갱신한 인증 정보는 원래 위치에 저장됩니다.", "读取运行网关的电脑上已登录的 QuWork,只保存本机引用,不修改官方客户端文件;切换账号后需重新导入。": "게이트웨이 컴퓨터에서 로그인한 QuWork를 읽어 로컬 참조만 저장하며 공식 파일은 변경하지 않습니다. 계정 전환 후 다시 가져오세요.", "读本机官方客户端(Tencent WorkBuddy / WorkBuddy AI)当前登录的账号:自动定位其凭证目录里最新的登录态文件(需已在本机官方客户端登录)。导入后由网关自动续期,无需跟随 2 小时时效手动换令牌。": "이 컴퓨터의 공식 클라이언트(Tencent WorkBuddy / WorkBuddy AI)에 현재 로그인된 계정을 읽습니다. 자격 증명 디렉터리에서 최신 로그인 상태 파일을 자동으로 찾습니다(이 컴퓨터의 공식 클라이언트에 로그인되어 있어야 함). 가져온 후에는 게이트웨이가 자동 갱신하므로 2시간 유효 기간에 맞춰 토큰을 수동으로 교체할 필요가 없습니다.", "读本机客户端当前登录态(明文 Cookie,无需解密)。客户端运行时 Cookies 文件被独占占用,导入前请先关闭 KukuAI 客户端。": "이 컴퓨터 클라이언트의 현재 로그인 상태를 읽습니다 (평문 Cookie, 복호화 불필요). 클라이언트 실행 중에는 Cookies 파일이 독점 점유되므로, 가져오기 전에 KukuAI 클라이언트를 먼저 종료하세요.", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。": "이 컴퓨터 클라이언트의 현재 로그인 상태를 매번 실시간으로 읽습니다 (이 기록을 삭제해도 클라이언트 로그인 상태에는 영향을 주지 않습니다).", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。客户端重新登录后点「刷新 Token」同步。": "이 컴퓨터 클라이언트의 현재 로그인 상태를 매번 실시간으로 읽습니다 (이 기록을 삭제해도 클라이언트 로그인 상태에는 영향을 주지 않습니다). 클라이언트에서 다시 로그인한 후 「Token 갱신」을 눌러 동기화하세요.", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。客户端重新登录后重新导入即可。": "이 컴퓨터 클라이언트의 현재 로그인 상태를 매번 실시간으로 읽습니다 (이 기록을 삭제해도 클라이언트 로그인 상태에는 영향을 주지 않습니다). 클라이언트에서 다시 로그인한 후 다시 가져오면 됩니다.", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。用 Zai / Google 登录客户端的用户走这一条。": "이 컴퓨터 클라이언트의 현재 로그인 상태를 매번 실시간으로 읽습니다 (이 기록을 삭제해도 클라이언트 로그인 상태에는 영향을 주지 않습니다). Zai / Google로 클라이언트에 로그인하는 사용자는 이 항목을 사용하세요.", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。这一条归入 {label}。": "이 컴퓨터 클라이언트의 현재 로그인 상태를 매번 실시간으로 읽습니다 (이 기록을 삭제해도 클라이언트 로그인 상태에는 영향을 주지 않습니다). 이 항목은 {label}로 분류됩니다.", "读本机客户端当前登录的 OAuth 令牌(明文 JSON,无需解密)。导入后由网关自动续期,无需跟随客户端的 2 小时时效手动换令牌。": "로컬 클라이언트가 현재 로그인한 OAuth 토큰을 읽습니다(평문 JSON, 복호화 불필요). 가져온 뒤에는 게이트웨이가 자동으로 갱신하므로 클라이언트의 2시간 만료에 맞춰 수동으로 교체할 필요가 없습니다.", "读本机客户端当前的登录态。客户端的 Cookies 是 DPAPI 加密的(Chromium os_crypt),因此仅 Windows 可用;客户端正在运行时可能读不到该文件,先退出客户端再试即可(也可改用「填写凭证」粘贴令牌)。": "이 PC 클라이언트의 현재 로그인 상태를 읽습니다. 클라이언트의 Cookies는 DPAPI로 암호화되어 있어(Chromium os_crypt) Windows에서만 사용할 수 있습니다. 클라이언트가 실행 중이면 이 파일을 읽지 못할 수 있으니 클라이언트를 종료한 뒤 다시 시도하세요(\"자격 증명 입력\"으로 토큰을 붙여넣어도 됩니다).", "豆包工作": "Doubao Work", "账号信息": "계정 정보", "账号信息不完整,请刷新后重试": "계정 정보가 불완전합니다. 새로 고친 후 다시 시도하세요", "账号名由插件自动获取,添加后可修改。": "계정 이름은 플러그인이 자동으로 가져옵니다. 추가 후 변경할 수 있습니다.", "账号已添加,但代理选择未确认保存;请在账号设置中重新检查。": "계정은 추가되었지만 프록시 선택 저장은 확인되지 않았습니다. 계정 설정에서 확인하세요.", "账号已添加,但未返回账号 ID,无法保存登录代理选择。": "계정은 추가되었지만 계정 ID가 반환되지 않아 로그인 프록시 선택을 저장할 수 없습니다.", "账号已添加,但请留意:{warning}": "계정은 추가되었지만 확인해 주세요: {warning}", "账号已添加,但账号列表同步失败,请刷新重试。": "계정은 추가되었지만 계정 목록 동기화에 실패했습니다. 새로고침한 후 다시 시도하세요.", "账号文件的提供商与当前选择不一致,请选择对应的提供商后再导入": "계정 파일의 제공업체가 현재 선택과 다릅니다. 해당 제공업체를 선택한 후 가져와 주세요.", "账号版本": "계정 버전", "账号类型": "계정 유형", "账号:{name}
    ": "계정: {name}
    ", "走 Inference Providers 路由,Key 在 hf.co/settings/tokens 创建": "Inference Providers 라우팅을 사용하며, Key는 hf.co/settings/tokens에서 만듭니다", "返回提供商列表": "제공업체 목록으로 돌아가기", "还没有可用的提供商。各家提供商的转发与账号实现都在插件包里,装好之后这里就会出现。": "아직 사용할 수 있는 제공자가 없습니다. 각 제공자의 포워딩과 계정 처리는 플러그인 팩에 들어 있으며, 팩을 설치하면 여기에 나타납니다.", "还没有账号": "아직 계정이 없습니다", "还需完成 AWS 授权:请打开下一步授权页,完成后回填新的完整回调地址。": "AWS 인증이 아직 필요합니다. 다음 인증 페이지를 열어 완료한 뒤 새 전체 콜백 URL을 붙여넣으세요.", "还需继续授权,请打开下一步授权页,完成后回填新的完整回调地址。": "추가 인증이 필요합니다. 다음 인증 페이지를 열어 완료한 뒤 새 전체 콜백 URL을 붙여넣으세요.", "这一家当前不支持网页登录,请改用填写凭证": "이 제공자는 현재 웹 로그인을 지원하지 않습니다. 대신 자격 증명 입력을 사용하세요", "这个账号当前没有可自动领的活动(只自动领每日登录赠送积分)": "이 계정에는 현재 자동으로 수령할 수 있는 이벤트가 없습니다 (매일 로그인 보너스 포인트만 자동 수령합니다)", "这份额度走「活动套餐」通道:若转发时提示编码套餐已到期,": "이 할당량은 「이벤트 플랜」 채널을 사용합니다: 포워딩 시 코딩 플랜이 만료되었다는 안내가 나오면, ", "这里填国内站(modelscope.cn)的账号:请粘贴国内站的令牌。国际站(modelscope.ai)是另一家 provider、另一套账号,两边的令牌不通用。": "여기에는 중국판 사이트(modelscope.cn) 계정을 입력합니다. 중국판 사이트의 토큰을 붙여넣으세요. 국제판 사이트(modelscope.ai)는 다른 공급자·다른 계정 체계이며 토큰은 서로 호환되지 않습니다.", "这里填国内站(monkeycode-ai.com)的账号:请粘贴国内站的 session。国际站(monkeycode-ai.net)是另一家 provider、另一套账号,两边的凭证不通用。": "여기에는 중국 사이트(monkeycode-ai.com)의 계정을 입력합니다: 중국 사이트의 session을 붙여넣으세요. 국제 사이트(monkeycode-ai.net)는 다른 제공자이며 별도의 계정입니다. 양쪽 자격 증명은 호환되지 않습니다.", "这里填国际站(modelscope.ai)的账号:请粘贴国际站的令牌。国内站(modelscope.cn)是另一家 provider、另一套账号,两边的令牌不通用。": "여기에는 국제판 사이트(modelscope.ai) 계정을 입력합니다. 국제판 사이트의 토큰을 붙여넣으세요. 중국판 사이트(modelscope.cn)는 다른 공급자·다른 계정 체계이며 토큰은 서로 호환되지 않습니다.", "这里填国际站(monkeycode-ai.net)的账号:请粘贴国际站的 session。国内站(monkeycode-ai.com)是另一家 provider、另一套账号,两边的凭证不通用。": "여기에는 국제 사이트(monkeycode-ai.net)의 계정을 입력합니다: 국제 사이트의 session을 붙여넣으세요. 중국 사이트(monkeycode-ai.com)는 다른 제공자이며 별도의 계정입니다. 양쪽 자격 증명은 호환되지 않습니다.", "选择 CatPaw 客户端的登录态文件 auth.json(Windows:C:\\Users\\<你的用户名>\\.meituan-catpaw\\auth.json;macOS / Linux:~/.meituan-catpaw/auth.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端。": "CatPaw 클라이언트의 로그인 상태 파일 auth.json을 선택하세요 (Windows: C:\\Users\\<사용자 이름>\\.meituan-catpaw\\auth.json, macOS / Linux: ~/.meituan-catpaw/auth.json). 가져오기 후에는 자격 증명이 게이트웨이에 저장되어 독립적으로 전달할 수 있습니다 — 더 이상 이 컴퓨터의 클라이언트에 의존하지 않습니다.", "选择 Cline 客户端的登录态文件 providers.json(Windows:C:\\Users\\<你的用户名>\\.cline\\data\\settings\\providers.json;macOS / Linux:~/.cline/data/settings/providers.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端;这一条归入 {label}。": "Cline 클라이언트의 로그인 상태 파일 providers.json을 선택하세요 (Windows: C:\\Users\\<사용자 이름>\\.cline\\data\\settings\\providers.json, macOS / Linux: ~/.cline/data/settings/providers.json). 가져오기 후에는 자격 증명이 게이트웨이에 저장되어 독립적으로 전달할 수 있습니다 — 더 이상 이 컴퓨터의 클라이언트에 의존하지 않습니다. 이 항목은 {label}에 등록됩니다.", "选择 KukuAI 客户端的 Cookies 文件(%APPDATA%\\baidugenflowpro\\Network\\Cookies):它是**二进制** SQLite 数据库(无扩展名,不是 JSON)。导入时读的是你选中文件的副本、不和运行中的客户端抢占用,因此**无需先关闭客户端**。导入后凭证直接落在网关、可独立转发。": "KukuAI 클라이언트의 Cookies 파일을 선택하세요 (%APPDATA%\\baidugenflowpro\\Network\\Cookies): **바이너리** SQLite 데이터베이스입니다 (확장자 없음, JSON 아님). 가져오기는 선택한 파일의 복사본을 읽어 실행 중인 클라이언트와 점유를 다투지 않으므로 **클라이언트를 먼저 종료할 필요가 없습니다**. 가져오기 후에는 자격 증명이 게이트웨이에 저장되어 독립적으로 전달할 수 있습니다.", "选择 OAuth auth.json 的绝对路径(不扫描其他目录)": "OAuth auth.json의 절대 경로 선택(다른 디렉터리는 검색하지 않음)", "选择凭证文件导入": "자격 증명 파일에서 가져오기", "选择包含 Cookie 的 JSON 对象,或本软件导出的单账号 JSON 文件。导入后可独立使用,不需要持续运行豆包工作客户端。": "Cookie가 포함된 JSON 객체 또는 이 앱에서 내보낸 단일 계정 JSON 파일을 선택하세요. 가져온 계정은 Doubao Work 클라이언트를 계속 실행하지 않아도 독립적으로 사용할 수 있습니다.", "选择包含 Tabbit Cookie / JWT 的 JSON 或文本文件;也可以直接粘贴到上方表单。": "Tabbit Cookie / JWT가 포함된 JSON 또는 텍스트 파일을 선택하세요. 위 양식에 직접 붙여넣어도 됩니다.", "选择包含该提供商凭证的 JSON 文件,或本软件导出的单账号 JSON 文件。导入后凭证保存在网关,可独立使用。": "이 제공업체의 인증 정보가 포함된 JSON 파일 또는 이 앱에서 내보낸 단일 계정 JSON 파일을 선택하세요. 가져온 인증 정보는 게이트웨이에 저장되며 독립적으로 사용할 수 있습니다.", "选择官方客户端的登录态凭证文件(workbuddy-desktop.info / workbuddy-desktop-ai.info)或 wb2api 导出的账号 JSON(嵌套 / 扁平形均可)。": "공식 클라이언트의 로그인 자격 증명 파일(workbuddy-desktop.info / workbuddy-desktop-ai.info) 또는 wb2api에서 내보낸 계정 JSON(중첩/평면 형식 모두 가능)을 선택하세요.", "选择小浣熊客户端的登录态文件 auth.json(Windows:C:\\Users\\<你的用户名>\\.box-agent\\config\\auth.json;macOS / Linux:~/.box-agent/config/auth.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端。": "小浣熊 클라이언트의 로그인 상태 파일 auth.json을 선택하세요 (Windows: C:\\Users\\<사용자 이름>\\.box-agent\\config\\auth.json, macOS / Linux: ~/.box-agent/config/auth.json). 가져오기 후에는 자격 증명이 게이트웨이에 저장되어 독립적으로 전달할 수 있습니다 — 더 이상 이 컴퓨터의 클라이언트에 의존하지 않습니다.", "选择提供商": "제공자 선택", "选择新增账号或重新授权当前注册": "새 계정 추가 또는 현재 등록 재인증 선택", "选择的文件不是合法 JSON": "선택한 파일이 유효한 JSON이 아닙니다", "选择要添加账号的提供商": "계정을 추가할 제공자 선택", "选择预置客户端": "프리셋 클라이언트 선택", "重新扫描": "다시 스캔", "重新授权所选账号(固定原身份和 clientId)": "선택한 계정 재인증(기존 계정과 clientId 유지)", "重新读取提供商": "제공업체 다시 불러오기", "鉴权": "인증", "阿里云 Token Plan 套餐(国际站)": "Alibaba Cloud Token Plan (국제 사이트)", "阿里云百炼 Coding 套餐(国内站)": "Alibaba Cloud Model Studio Coding 플랜 (중국 사이트)", "阿里云百炼 Coding 套餐(国际站)": "Alibaba Cloud Model Studio Coding 플랜 (국제 사이트)", "阿里云百炼模型服务(国际站,OpenAI 兼容模式)": "Alibaba Cloud Model Studio 모델 서비스 (국제 사이트, OpenAI 호환 모드)", "隐藏凭证": "인증 정보 숨기기", "需要图形验证码:登录窗口已弹出,请填写后继续": "그래픽 캡차가 필요합니다: 로그인 창이 열렸으니 입력한 후 계속하세요", "需要手动提交授权回调": "인증 콜백 수동 제출 필요", "需要时填写完整 Cookie": "필요한 경우 전체 Cookie 입력", "需要进行人机验证": "사람 인증이 필요합니다", "预置 API": "프리셋 API", "领取 CodeArts 每日福利": "CodeArts 일일 혜택 수령", "领取失败:{message}": "수령 실패: {message}", "领取并让官方确认": "수령하고 공식 확인 받기", "风控验证配置不完整,请稍后重试": "리스크 관리 인증 구성이 불완전합니다. 잠시 후 다시 시도하세요", "验证码": "인증 코드", "验证码业务请求超时,请刷新状态后重试": "인증 후 작업 요청 시간이 초과되었습니다. 상태를 새로고침한 후 다시 시도하세요.", "验证码令牌入池接口不可用": "인증 토큰 제출 API를 사용할 수 없습니다.", "验证码令牌未全部入池": "인증 토큰이 풀에 정상적으로 등록되지 않았습니다.", "验证码令牌池未返回状态": "인증 토큰 풀이 상태를 반환하지 않았습니다.", "验证码已使用,请重新验证": "이미 사용된 인증 토큰입니다. 다시 인증하세요.", "验证码已发送。收到后填入下方并点「登录并添加」": "인증 코드를 전송했습니다. 받은 후 아래에 입력하고 「로그인 후 추가」를 클릭하세요", "验证码已发送,请查看手机短信": "인증 코드를 전송했습니다. 휴대폰 SMS를 확인하세요", "验证码已发送,请查看手机短信。填入下方并点「登录并添加」即完成登录": "인증 코드를 전송했습니다. 휴대폰 SMS를 확인하세요. 아래에 입력하고 「로그인 후 추가」를 클릭하면 로그인이 완료됩니다", "验证码已发送,请查看短信": "인증 코드를 전송했습니다. 문자 메시지를 확인하세요", "验证码校验失败,请重试": "인증 코드 확인에 실패했습니다. 다시 시도하세요", "验证码校验超时,请重试": "인증 코드 확인 시간이 초과되었습니다. 다시 시도하세요", "验证码组件不可用,请重试": "캡차 컴포넌트를 사용할 수 없습니다. 다시 시도하세요", "验证码组件初始化超时,请重试": "캡차 컴포넌트 초기화 시간이 초과되었습니다. 다시 시도하세요", "验证码组件加载失败,请检查网络后重试": "캡차 컴포넌트 로드에 실패했습니다. 네트워크를 확인한 후 다시 시도하세요", "验证码组件加载异常,请重试": "캡차 컴포넌트 로드 중 오류가 발생했습니다. 다시 시도하세요", "验证码组件加载超时,请检查网络后重试": "캡차 컴포넌트 로드 시간이 초과되었습니다. 네트워크를 확인한 후 다시 시도하세요", "验证码组件未加载,请重启应用后重试": "캡차 컴포넌트가 로드되지 않았습니다. 앱을 다시 시작한 후 다시 시도하세요", "验证码组件返回的验证串不完整(请重试)": "인증 구성 요소가 불완전한 토큰을 반환했습니다. 다시 시도하세요.", "验证被上游风控拒绝,请稍后重试": "업스트림 보안 서비스가 인증을 거부했습니다. 잠시 후 다시 시도하세요.", "验证请求过于频繁,请稍后重试": "인증 요청이 너무 잦습니다. 잠시 후 다시 시도하세요.", "默认开启;填 0 关闭(发送「已设为默认浏览器」标记)": "기본으로 켜짐. 0을 입력하면 끔 (\"기본 브라우저로 설정됨\" 표시 전송)", "(免费额度池,模型名带 cline-free/ 前缀)。": " (무료 할당량 풀, 모델 이름에 cline-free/ 접두사 포함).", "(其中 {n} 把恢复为不限制)": " (이 중 {n}개는 제한 없음으로 복원)", "(必填)": " (필수)", "(有效期 {window})": "(유효 기간 {window})", "(订阅池,模型名带 cline-pass/ 前缀,需要账号有对应订阅)。": " (구독 풀, 모델 이름에 cline-pass/ 접두사 포함, 계정에 해당 구독이 있어야 합니다).", ",下一次最快 {minutes} 分钟后": ", 다음 시도는 최소 {minutes}분 후", ",并从 {n} 把 Key 的可用提供商里移除": ", Key {n}개의 사용 가능한 제공자 목록에서 이 제공자를 제거했습니다", " · 思考等级 ": " · 추론 레벨 ", " · 思考等级 {level}": " · 추론 레벨 {level}", " · 有映射 ": " · 매핑 있음 ", " · 限额中": " · 할당량 제한 중", " → 转发": " → 전달", " 上登记上游模型": "에 업스트림 모델 등록", " 与 ": " 와 ", " 个": "개", " 个模型 · 已启用 ": "개 모델 · 활성화됨 ", " 个账号": "개 계정", " 会广告它、请求它也会被转发到这家。 支持字母、数字与 ": "는 이 모델을 광고하고, 이 모델로 들어온 요청도 이 제공자로 전달됩니다. 영문, 숫자 및 ", " 失败": " 실패", " 已发出,等待上游首帧…": " 전송됨, 업스트림 첫 프레임 대기 중…", " 成功 ·": " 성공 ·", " 这类符号,但不能含空格或换行,且不超过 128 个字符。同一提供商内,同名绑定最多启用一条;已有启用绑定时不能新增,启用备用绑定会自动关闭其他同名绑定。不同提供商可各启用一条同名绑定,用于主备切换。": " 같은 기호를 사용할 수 있지만 공백이나 줄바꿈은 넣을 수 없고 128자 이하여야 합니다. 제공자별로 같은 이름의 바인딩은 하나만 활성화할 수 있습니다. 새 바인딩을 추가하기 전에 기존 활성 바인딩을 비활성화하세요. 대기 바인딩을 활성화하면 같은 이름의 다른 바인딩은 자동으로 비활성화됩니다. 장애 조치를 위해 서로 다른 제공자는 같은 이름의 바인딩을 각각 하나씩 활성화할 수 있습니다.", " 里的 ": "의 ", "(全局)": "(전역)", "(未选)": "(선택 안 함)", "0 家": "0곳", "<上游模型 ID>": "<업스트림 모델 ID>", "<上游模型>": "<업스트림 모델>", "<对外名>": "<외부 노출명>", "models.dev 补齐:对下游声明 {value}": "models.dev가 채움: 다운스트림에 {value}로 선언", "{action}映射 {alias}": "매핑 {alias} {action}", "{id}({name})": "{id}({name})", "{label}要填 1 ~ 1 亿之间的整数(留空 = {inherit})": "{label}에는 1 ~ 1억 사이의 정수를 입력해야 합니다(비워 두기 = {inherit})", "{label}:{value}(对下游声明的精确值){origin}{suffix}": "{label}: {value}(다운스트림에 선언하는 정확한 값){origin}{suffix}", "{label}:{value}(对下游声明的精确值){suffix}": "{label}: {value}(다운스트림에 선언되는 정확한 값){suffix}", "{label}:上游未声明{suffix}": "{label}: 업스트림 미선언{suffix}", "{label}:上游未声明(下游会按不支持处理){suffix}": "{label}: 업스트림 미선언(다운스트림은 미지원으로 처리){suffix}", "{label}:不支持{origin}{suffix}": "{label}: 미지원{origin}{suffix}", "{label}:不支持{suffix}": "{label}: 미지원{suffix}", "{label}:支持{origin}{suffix}": "{label}: 지원{origin}{suffix}", "{label}:支持{suffix}": "{label}: 지원{suffix}", "{level}(本次指定)": "{level}(이번에 지정)", "{name}({id})": "{name}({id})", "{name}(不在该家当前清单里)": "{name}(이 제공자의 현재 카탈로그에 없음)", "{n} 个": "{n}개", "{n} 个映射": "{n}개 매핑", "{n} 个模型": "{n}개 모델", "{n} 字节": "{n}바이트", "{provider}:模型清单为空,等待获取": "{provider}: 모델 목록이 비어 있어 가져오기를 기다리는 중", "{status}:模型获取失败": "{status}: 모델 가져오기 실패", "{total} 家 · 成功 {done}": "{total}곳 · 성공 {done}", "{total} 家 · 成功 {done} · 失败 {failed}": "{total}곳 · 성공 {done} · 실패 {failed}", "✅ 已保存 {id} 的能力位({provider})": "✅ {id}의 기능 플래그를 저장했습니다({provider})", "✅ 已导入 {added} 个模型({skipped} 个已存在,跳过)": "✅ 모델 {added}개를 가져왔습니다(이미 존재하는 {skipped}개는 건너뜀)", "✅ 已更新 {name} 的思考等级": "✅ {name}의 추론 레벨을 업데이트했습니다", "✅ 已添加映射 {name} → {target}({label}){suffix}": "✅ 매핑을 추가했습니다: {name} → {target}({label}){suffix}", "✅ 已登记 {name}({label}),但该提供商还没有可用账号,这一行要加上账号后才会显示": "✅ {name}({label})을 등록했습니다. 다만 이 제공자에는 아직 사용 가능한 계정이 없어 이 행은 계정을 추가한 뒤에야 표시됩니다", "✅ 已登记模型 {name}({label})": "✅ 모델 {name}({label})을 등록했습니다", "✅ 已登记自定义模型 {name}({label})": "✅ 커스텀 모델 {name}({label})을 등록했습니다", "✅ 批量{action}完成:共 {n} 个模型": "✅ 일괄 {action} 완료: 총 {n}개 모델", "✅ 批量{action}完成:共 {n} 个模型(跳过不可删除的 {skipped} 个)": "✅ 일괄 {action} 완료: 총 {n}개 모델(삭제할 수 없는 {skipped}개는 건너뜀)", "。": ".", "。上游清单给的值不准时,在这里改;": ". 업스트림 카탈로그 값이 정확하지 않으면 여기서 수정합니다; ", "。同一对外名可在多个提供商各添加一条: 下游用同一个名字请求,网关按账号优先级主备切换,失败自动落到下一个提供商。": ". 동일한 외부 노출명을 여러 제공자에 각각 추가할 수 있습니다: 다운스트림이 같은 이름으로 요청하면 게이트웨이가 계정 우선순위에 따라 주/대기로 전환하고, 실패하면 자동으로 다음 제공자로 넘어갑니다.", "「恢复继承」会把这一项交还给上游清单的值。": "'상속 복원'을 누르면 이 항목이 업스트림 카탈로그 값으로 돌아갑니다.", "「来源」列会标成": "'소스' 열이 ", "上下文 / 输出": "컨텍스트 / 출력", "上下文窗口": "컨텍스트 윈도우", "上下文窗口 {input} / 最大输出 Token {output} —— 点击修改模型能力": "컨텍스트 윈도우 {input} / 최대 출력 Token {output} —— 클릭하여 모델 기능 수정", "上游 {model}": "업스트림 {model}", "上游不认识这个模型名:先点「获取模型」刷新清单,或核对默认绑定指向的上游模型。": "업스트림이 이 모델 이름을 인식하지 못합니다: 먼저 '모델 가져오기'를 눌러 카탈로그를 새로 고치거나, 기본 바인딩이 가리키는 업스트림 모델을 확인하세요.", "上游原始响应": "업스트림 원본 응답", "上游可用档位:{levels}": "업스트림 지원 레벨: {levels}", "上游固定为 {level},绑定其他等级也无法调高。": "업스트림이 {level}로 고정되어 있어 다른 레벨을 바인딩해도 높일 수 없습니다.", "上游已经不再提供这个模型(可能已下线或改了 ID)": "업스트림이 더 이상 이 모델을 제공하지 않습니다(서비스 종료 또는 ID 변경 가능성).", "上游拒绝了这条登录态:重新登录一次,或把这条账号删掉。": "업스트림이 이 로그인 세션을 거부했습니다: 다시 로그인하거나 이 계정을 삭제하세요.", "上游未声明": "업스트림 미선언", "上游未声明(下游会按不支持处理)": "업스트림 미선언(다운스트림은 미지원으로 처리)", "上游未部署": "업스트림 미배포", "上游模型": "업스트림 모델", "上游模型 ID": "업스트림 모델 ID", "上游没在预算内给完回答。可以只勾一个账号再测一次,看是普遍慢还是某一个账号慢。": "업스트림이 시간 예산 안에 응답을 끝마치지 못했습니다. 계정 하나만 체크해 다시 테스트하면 전체가 느린지 특정 계정만 느린지 알 수 있습니다.", "上游没有给出可读的错误说明": "업스트림이 읽을 수 있는 오류 설명을 제공하지 않았습니다", "上游没有返回任何模型": "업스트림이 어떤 모델도 반환하지 않았습니다", "上游目录列出了这个模型,但推理端尚未识别;保留在清单中,后续探测成功后自动清除标记": "업스트림 카탈로그에 이 모델이 있지만 추론 백엔드가 아직 인식하지 못합니다. 목록에 유지되며 이후 연결 확인에 성공하면 표시가 자동으로 제거됩니다.", "上游目录尚未拉到,用的是内置静态清单;点「刷新模型清单」可重试": "업스트림 디렉터리를 아직 가져오지 못해 내장 정적 카탈로그를 사용 중입니다; '모델 카탈로그 새로 고침'을 누르면 다시 시도할 수 있습니다", "上游能列出这个模型,但官方客户端不展示它;本仓已默认关闭它的默认绑定(点这一行的开关可以手动打开)": "업스트림은 이 모델을 반환하지만 공식 클라이언트는 표시하지 않습니다. 게이트웨이가 기본 바인딩을 비활성화했습니다(행 스위치로 수동 활성화 가능)", "下游客户端": "다운스트림 클라이언트", "下游请求 ": "다운스트림 요청 ", "不展示": "표시 안 함", "不影响网关的转发与路由": "게이트웨이의 전달과 라우팅에는 영향을 주지 않습니다", "不支持": "미지원", "不覆盖": "덮어쓰지 않음", "两边原因不一样时各自处理。如果": "양쪽 원인이 다르면 각각 처리합니다. 만약 ", "中止测试": "테스트 중단", "仅支持已识别压缩格式的 ZCode;客户端修改压缩格式后可能需要更新适配。": "확인된 ZCode 압축 형식만 지원합니다. 클라이언트가 압축 형식을 변경하면 지원 업데이트가 필요할 수 있습니다.", "仅本次测试临时生效,不修改账号保存的代理配置。可选「网络代理」页里的节点或强制直连。": "이번 테스트에만 일시적으로 적용되며 계정에 저장된 프록시 설정은 변경되지 않습니다. '네트워크 프록시' 페이지의 노드를 선택하거나 직접 연결을 강제할 수 있습니다.", "从这一家的上游拉一份模型清单,勾选要哪些再导入(已添加的不会重复导入)": "이 제공자의 업스트림에서 모델 카탈로그를 받아 필요한 항목을 체크한 뒤 가져옵니다(이미 추가된 항목은 중복으로 가져오지 않습니다)", "代理池响应异常": "프록시 풀 응답 오류", "以模型本名直发": "모델 본래 이름으로 직접 전송", "以这个上游模型发一次最小请求,走真实转发链路": "이 업스트림 모델로 최소 요청을 한 번 보내 실제 전달 경로를 거칩니다", "例如 gpt-4o": "예: gpt-4o", "例如 gpt-5.5-preview": "예: gpt-5.5-preview", "保存": "저장", "保存中…": "저장 중…", "保存失败:{message}": "저장 실패: {message}", "保存映射": "매핑 저장", "保存等级": "레벨 저장", "倍率": "배율", "倍率升序": "배율 오름차순", "倍率升序,点击切换为降序": "배율 오름차순, 클릭하여 내림차순으로 전환", "倍率降序": "배율 내림차순", "倍率降序,点击切换为升序": "배율 내림차순, 클릭하여 오름차순으로 전환", "全选当前筛选出的模型(跨分页);再点取消": "현재 필터된 모델 모두 선택(페이지 전체); 다시 누르면 해제", "全选当前筛选结果": "현재 필터 결과 모두 선택", "全选未添加": "미추가 항목 모두 선택", "全选({n})": "모두 선택({n})", "全部": "전체", "全部删除": "모두 삭제", "全部映射": "모든 매핑", "全部自定义提供商": "커스텀 제공자 전체", "全部({n} 家)": "전체({n}곳)", "共 {n} 家 · 点「获取模型」开始": "총 {n}곳 · '모델 가져오기'를 눌러 시작", "关闭": "닫기", "关闭即中止": "닫으면 중단됨", "关闭后保留规则,所有请求按原模型处理。": "비활성화해도 규칙은 유지되며 모든 요청은 원래 모델로 처리됩니다.", "其余 {n} 个会被跳过。": "나머지 {n}개는 건너뜁니다.", "内置": "내장", "内置提供商": "내장 제공자", "内置清单": "내장 카탈로그", "再测一次": "다시 테스트", "删除": "삭제", "删除中…": "삭제 중…", "删除入口未就绪,请重试或重启应用": "삭제 기능이 준비되지 않았습니다. 다시 시도하거나 앱을 재시작하세요", "删除全部未挂载映射": "연결되지 않은 매핑 모두 삭제", "删除映射": "매핑 삭제", "删除映射 {alias}": "매핑 {alias} 삭제", "删除未挂载的映射": "연결되지 않은 매핑 삭제", "删除自定义提供商": "커스텀 제공자 삭제", "删除规则 {n}": "규칙 {n} 삭제", "删除这个自定义提供商(连同名下账号)": "이 커스텀 제공자 삭제(소속 계정 포함)", "删除这条映射": "이 매핑 삭제", "删除选中的模型": "선택한 모델 삭제", "刷新全部家(逐家打上游)": "모든 제공자 새로 고침(제공자마다 업스트림 1회)", "刷新完成,但没有得到任何结果": "새로 고침은 완료되었지만 결과가 없습니다", "刷新模型管理页里各提供商的远程模型目录,逐家结果列在弹窗里": "모델 관리 페이지에서 각 제공자의 원격 모델 디렉터리를 새로 고치고, 제공자별 결과를 대화상자에 표시합니다", "刷新清单": "목록 새로 고침", "加载中…": "로드 중…", "勾上它,导入后即进入这家的清单": "체크하면 가져온 뒤 이 제공자의 카탈로그에 들어갑니다", "勾几个就并行测几次;默认选队列里最靠前的一个。": "체크한 수만큼 병렬로 테스트합니다; 기본값은 대기열에서 가장 앞선 하나입니다.", "勾选后可批量操作": "체크하면 일괄 작업을 할 수 있습니다", "压缩模型": "압축 모델", "压缩路由": "압축 라우팅", "压缩路由入口尚未就绪,请刷新页面后重试": "압축 라우팅이 아직 준비되지 않았습니다. 페이지를 새로고침한 후 다시 시도하세요.", "压缩路由已保存,下次压缩请求生效": "압축 라우팅을 저장했습니다. 다음 압축 요청부터 적용됩니다.", "压缩路由接口返回了不完整的数据": "압축 라우팅 API가 불완전한 데이터를 반환했습니다.", "原始 ID 已作为默认绑定,请直接使用该绑定的开关或等级按钮": "원본 ID가 기본 바인딩으로 설정되어 있으니 해당 바인딩의 스위치나 레벨 버튼을 직접 사용하세요", "原始 ID 的默认绑定不能删除,请关闭它的开关": "원래 ID의 기본 바인딩은 삭제할 수 없습니다. 스위치를 비활성화하세요.", "取消": "취소", "另有 {n} 个非手动登记的模型将被跳过。": "수동 등록이 아닌 모델 {n}개는 건너뜁니다.", "另有 {n} 条别名映射({aliases}),别名不参与本次": "별칭 매핑 {n}개({aliases})는 이번에 포함되지 않습니다", "只刷新这一家的模型清单": "이 제공자의 모델 목록만 새로 고침", "只在识别到 ZCode 上下文压缩请求时切换模型,普通对话仍使用原模型。": "ZCode 컨텍스트 압축 요청으로 식별된 경우에만 모델을 전환합니다. 일반 대화는 원래 모델을 계속 사용합니다.", "只属于这一家": "이 제공자에만 속함", "可删除 {n} 个(手动登记 / 自定义家);": "삭제 가능 {n}개(수동 등록 / 커스텀 제공자); ", "可见": "표시됨", "可见性": "표시 상태", "可配思考档位": "설정 가능한 추론 레벨", "同一客户端的来源模型不能重复:{model}": "같은 클라이언트에서 원본 모델을 중복 지정할 수 없습니다: {model}", "同一条错误出现在所有账号上": "동일한 오류가 모든 계정에서 나타난다면", "后端桥不可用": "백엔드 브리지를 사용할 수 없습니다", "启用压缩路由": "압축 라우팅 활성화", "启用后将自动关闭该提供商的其他同名绑定:{bindings}": "활성화하면 이 제공자의 같은 이름을 가진 다른 바인딩이 자동으로 비활성화됩니다: {bindings}", "启用规则 {n}": "규칙 {n} 활성화", "回复": "응답", "固定思考档位": "고정 추론 레벨", "固定思考档位:{level}": "고정 추론 레벨: {level}", "图片": "이미지", "图片生成": "이미지 생성", "图片生成模型请通过 /v1/images/generations 调用,暂不支持对话测试": "이미지 모델은 /v1/images/generations로 호출하세요. 대화 테스트는 아직 지원하지 않습니다", "图片编辑": "이미지 편집", "图片识别": "이미지 인식", "圆点带内侧描边 = 由 models.dev 补齐;右上角小点 = 你手动覆盖过;虚线圈 = 未声明。悬停某一枚可看逐项出处。": "점 안쪽 테두리 = models.dev가 채움; 오른쪽 위 작은 점 = 직접 덮어씀; 점선 원 = 미선언. 점에 마우스를 올리면 항목별 출처를 볼 수 있습니다.", "在 ": "등록 대상: ", "填上游真正认识的那个模型 ID(不是给下游用的名字)。登记后它会进入该家的模型清单: 表格里出现这一行、": "업스트림이 실제로 인식하는 모델 ID를 입력하세요(다운스트림에 쓰는 이름이 아닙니다). 등록하면 이 제공자의 모델 카탈로그에 들어가 표에 이 행이 나타나고, ", "复制": "복사", "多半是上游自己的问题,过一会儿再试。同一个错误出现在所有账号上时,先查模型目录与映射。": "대부분 업스트림 자체의 문제이니 잠시 후 다시 시도하세요. 동일한 오류가 모든 계정에서 나타나면 모델 카탈로그와 매핑을 먼저 확인하세요.", "失败": "실패", "失败 {n} 个 · 首个失败:{error}": "{n}개 실패 · 첫 실패: {error}", "如果 ZCode 已设置压缩路由,网关看到的是它改写后的模型。建议同一套规则只在一处配置。": "ZCode에 이미 압축 라우팅이 설정되어 있으면 게이트웨이는 변경된 모델을 받습니다. 같은 규칙은 한 곳에서만 설정하는 것을 권장합니다.", "完成": "완료", "官方客户端会展示这个模型": "공식 클라이언트가 이 모델을 표시합니다", "对下游声明的能力(工具调用 / 图片识别 / 视频识别 / 支持思考)—— 点击修改": "다운스트림에 선언한 기능(도구 호출 / 이미지 인식 / 비디오 인식 / 추론 지원) —— 클릭하여 수정", "对外名可以是中文、字母、数字与 ": "공개 이름에는 중국어, 영문, 숫자 및 ", "对外名可自由命名,允许与上游模型 ID 同名(同名时该上游的原生路由优先,映射作兜底); 支持字母、数字与 ": "외부 노출명은 자유롭게 지정할 수 있고 업스트림 모델 ID와 같은 이름도 허용됩니다(이름이 같으면 해당 업스트림의 네이티브 라우팅이 우선하고 매핑이 폴백으로 동작합니다); 영문, 숫자 및 ", "对外映射名(下游请求时用)": "외부 매핑명(다운스트림 요청 시 사용)", "对话协议": "대화 프로토콜", "对话协议的说明": "대화 프로토콜 설명", "对选中的 {n} 个模型执行批量操作": "선택한 {n}개 모델에 일괄 작업 실행", "导入失败:{message}": "가져오기 실패: {message}", "导入选中的 {n} 个模型": "선택한 {n}개 모델 가져오기", "将作用于以下模型": "다음 모델에 적용됩니다", "尚未获取": "아직 가져오지 않음", "尚未配置压缩规则,默认使用原模型。": "압축 규칙이 없습니다. 기본적으로 원래 모델을 사용합니다.", "尝试 {n} 次": "시도 {n}회", "展开其余 {n} 个模型 ▾": "나머지 모델 {n}개 펼치기 ▾", "工具": "도구", "工具调用": "도구 호출", "已中止在途测试({n} 个账号)": "진행 중이던 테스트를 중단했습니다({n}개 계정)", "已删除 {n} 条未挂载映射": "연결되지 않은 매핑 {n}개를 삭제했습니다", "已刷新": "새로 고침됨", "已启用": "활성화됨", "已启用 {name},其他同名绑定已自动关闭": "{name}이(가) 활성화되었습니다. 같은 이름의 다른 바인딩은 자동으로 비활성화되었습니다.", "已填写:对下游声明 {value}": "입력됨: 다운스트림에 {value} 선언", "已添加": "추가됨", "已等待 {seconds}s": "{seconds}s 대기 중", "已覆盖上游值": "업스트림 값을 덮어씀", "已覆盖:对下游声明 {value}": "덮어씀: 다운스트림에 {value} 선언", "已选 ": "선택 ", "已选 {picked} 个 · 上游共 {upstream} 个 · 清单已有 {managed} 个": "선택 {picked}개 · 업스트림 총 {upstream}개 · 카탈로그 기존 {managed}개", "开始测试": "테스트 시작", "当前环境不支持代理池": "현재 환경은 프록시 풀을 지원하지 않습니다", "当前环境不支持读取 API Key": "현재 환경에서는 API Key를 불러올 수 없습니다", "当前通道未声明可用档位,映射等级不会注入;请先获取模型目录。": "현재 경로가 지원 레벨을 선언하지 않았습니다. 매핑 레벨은 주입하지 않으므로 먼저 모델 목록을 가져오세요.", "待获取": "가져오기 대기", "思考": "추론", "思考等级": "추론 레벨", "思考等级 {level}": "추론 레벨 {level}", "思考等级 {level}(点击修改)": "추론 레벨 {level}(클릭하여 수정)", "思考等级的注入规则": "추론 레벨 주입 규칙", "思考过程({n} 字)": "추론 과정({n}자)", "恢复继承": "상속 복원", "成功 {ok} 个,失败 {failed} 个": "성공 {ok}개, 실패 {failed}개", "所选 API Key 无权调用此模型或提供商": "선택한 API Key는 이 모델 또는 제공자에 접근할 수 없습니다", "所选模型含同一提供商的同名绑定「{id}」,请分别启用,避免相互关闭": "선택한 모델에 같은 제공자의 동일한 이름 ‘{id}’ 바인딩이 있습니다. 서로 비활성화하지 않도록 개별적으로 활성화하세요.", "所选模型没有共同可用档位,请分别设置或清除绑定。": "선택한 모델에 공통 지원 레벨이 없습니다. 각각 설정하거나 바인딩을 지우세요.", "手动": "수동", "手动登记": "수동 등록", "手动登记的上游模型;移除它会直接删掉这条登记": "수동으로 등록한 업스트림 모델; 제거하면 이 등록이 바로 삭제됩니다", "执行{action}": "{action} 실행", "批量{action}完成:成功 {ok} 个,失败 {failed} 个": "일괄 {action} 완료: 성공 {ok}개, 실패 {failed}개", "批量操作": "일괄 작업", "批量操作 · 已选 {n} 个模型": "일괄 작업 · {n}개 모델 선택됨", "按倍率升序排列": "배율 오름차순으로 정렬", "按倍率排序": "배율로 정렬", "按可见性筛选": "표시 상태로 필터", "按客户端发送的模型 ID 匹配,支持模型别名和对话路由组;每次只映射一次。": "클라이언트가 보낸 모델 ID로 일치 여부를 확인합니다. 모델 별칭과 대화 라우팅 그룹을 지원하며 요청당 한 번만 매핑합니다.", "按所选网关对话协议组装请求并校验响应转换(Chat Completions / Responses / Anthropic Messages)。": "선택한 게이트웨이 대화 프로토콜로 요청을 구성하고 응답 변환을 검증합니다(Chat Completions / Responses / Anthropic Messages).", "按提供商分组排序,已启用模型优先;未知倍率排在末尾": "제공자 그룹 내에서 정렬하며 활성화된 모델 우선; 배율을 알 수 없는 모델은 마지막에 표시", "按提供商选择": "제공자별 선택", "按状态筛选": "상태별 필터", "提供商": "제공자", "搜索模型": "모델 검색", "搜索模型 ID / 名称 / 映射名…": "모델 ID / 이름 / 매핑명 검색…", "搜索模型 ID / 提供商": "모델 ID / 제공자 검색", "搜索模型 ID…": "모델 ID 검색…", "搜索账号…": "계정 검색…", "操作": "작업", "支持": "지원", "支持思考": "추론 지원", "收起 ▴": "접기 ▴", "放弃尚未保存的压缩路由修改?": "저장하지 않은 압축 라우팅 변경 사항을 버릴까요?", "数字带虚线底 = 由 models.dev 补齐;右上角小点 = 你手动覆盖过;— = 未声明。点任意一格可改。": "숫자에 점선 밑줄 = models.dev가 채움; 오른쪽 위 작은 점 = 직접 덮어씀; — = 미선언. 아무 셀이나 클릭해 수정할 수 있습니다.", "新建一个自定义提供商(同时创建它的第一个账号)": "커스텀 제공자 새로 만들기(첫 계정도 함께 생성)", "映射、思考等级、上下文窗口与工具调用能力在桌面端「模型管理」里改;手机端只做启停。": "매핑, 추론 수준, 컨텍스트 창, 도구 호출 기능은 데스크톱 「모델 관리」에서 변경합니다. 모바일에서는 켜기/끄기만 지원합니다.", "映射「{alias} → {target}」不存在": "매핑 '{alias} → {target}'이(가) 존재하지 않습니다", "映射上未绑定思考等级,「跟随映射」等于这次不注入": "매핑에 추론 레벨이 바인딩되지 않아 '매핑 따르기'는 이번에 주입하지 않습니다", "映射已关闭": "매핑 비활성화됨", "映射已关闭,点击启用": "매핑 비활성화됨, 클릭하여 활성화", "映射已删除": "매핑이 삭제되었습니다", "映射已启用": "매핑 활성화됨", "映射已启用,其他同名绑定已自动关闭": "매핑이 활성화되었습니다. 같은 이름의 다른 바인딩은 자동으로 비활성화되었습니다.", "映射已启用,点击关闭": "매핑 활성화됨, 클릭하여 비활성화", "映射已绑定思考等级 {level},可用时会优先覆盖本次指定的等级": "이 매핑에는 추론 레벨 {level}이 바인딩되어 있으며, 지원되는 경우 이번 테스트에서 지정한 레벨을 덮어씁니다", "暂无模型(请先添加账号)": "모델 없음(먼저 계정을 추가하세요)", "更新日期": "업데이트 날짜", "最多可添加 {n} 条压缩规则": "압축 규칙은 최대 {n}개까지 추가할 수 있습니다.", "最大输出 Token": "최대 출력 Token", "有映射": "매핑 있음", "未填写": "미입력", "未填写(下游按未声明处理)": "미입력(다운스트림은 미선언으로 처리)", "未声明": "미선언", "未挂载映射:已删除 {removed} 条,失败 {failed} 条。首个失败:{error}": "연결되지 않은 매핑: {removed}개 삭제, {failed}개 실패. 첫 번째 오류: {error}", "未挂载的模型映射": "연결되지 않은 모델 매핑", "未接入": "미연결", "未添加": "미추가", "未知": "알 수 없음", "本机网关没有返回结论": "로컬 게이트웨이가 결과를 반환하지 않았습니다", "本次没有取到新内容": "이번에는 새 내용을 가져오지 못했습니다", "本次测试的发送口径": "이번 테스트의 전송 기준", "来源": "소스", "来源未知": "소스 알 수 없음", "来源模型": "원본 모델", "来源模型和压缩模型不能相同": "원본 모델과 압축 모델은 서로 달라야 합니다.", "来自上游目录接口,清单拉取于 {at};刷新失败时保留上一份成功结果": "업스트림 디렉터리 API에서 가져왔으며, 카탈로그는 {at}에 수집했습니다; 새로 고침 실패 시 마지막 성공 결과를 유지합니다", "来自上游目录接口;刷新失败时保留上一份成功结果": "업스트림 디렉터리 API에서 가져왔습니다; 새로 고침 실패 시 마지막 성공 결과를 유지합니다", "桥接调用返回空(本机网关没有响应这次测试)": "브리지 호출이 빈 응답을 반환했습니다(로컬 게이트웨이가 이번 테스트에 응답하지 않았습니다)", "模型 ID「{id}」在该提供商已有启用绑定,请先关闭它再添加": "이 제공자에는 모델 ID ‘{id}’의 활성 바인딩이 이미 있습니다. 먼저 비활성화한 후 추가하세요.", "模型 ID「{id}」已存在,请使用已有模型": "모델 ID ‘{id}’가 이미 존재합니다. 기존 모델을 사용하세요.", "模型 ID「{id}」已绑定到此上游模型,请直接使用已有绑定": "모델 ID ‘{id}’가 이 업스트림 모델에 이미 바인딩되어 있습니다. 기존 바인딩을 사용하세요.", "模型「{name}」已存在(忽略大小写判重)": "모델 '{name}'이(가) 이미 존재합니다(대소문자 무시 중복 검사)", "模型已移除": "모델이 제거되었습니다", "模型数": "모델 수", "模型映射": "모델 매핑", "模型来源": "모델 소스", "模型清单为空:已有可用账号,请点「获取模型」拉取目录": "모델 목록이 비어 있습니다. 사용 가능한 계정이 있으므로 ‘모델 가져오기’를 클릭해 목록을 가져오세요.", "模型清单已刷新": "모델 목록을 새로 고쳤습니다", "模型目录刷新不可用,请重新打开面板": "모델 목록 새로고침을 사용할 수 없습니다. 패널을 다시 여세요.", "模型目录刷新结果": "모델 목록 새로고침 결과", "模型管理表": "모델 관리 표", "模型能力": "모델 기능", "模型获取失败": "모델 가져오기 실패", "正在刷新…": "새로 고치는 중…", "正在测 ": "테스트 중 ", "正在获取…": "가져오는 중…", "正在读取压缩路由…": "압축 라우팅 불러오는 중…", "每条映射 = 对外名 → 上游模型;原始 ID 与别名有独立开关,默认绑定永远存在(没有映射时是合成的那条)。": "각 매핑 = 외부 노출명 → 업스트림 모델; 원본 ID와 별칭에는 각각 독립된 스위치가 있고, 기본 바인딩은 항상 존재합니다(매핑이 없을 때는 합성된 한 건).", "没有匹配「{keyword}」的模型": "'{keyword}'와 일치하는 모델이 없습니다", "没有匹配当前筛选的模型": "현재 필터와 일치하는 모델이 없습니다", "没有匹配的模型": "일치하는 모델이 없습니다", "没有可选的对话模型,请先启用模型和对应账号。": "선택할 수 있는 대화 모델이 없습니다. 먼저 모델과 해당 계정을 활성화하세요.", "没有选中任何模型": "선택된 모델이 없습니다", "没有选中的模型": "선택된 모델이 없습니다", "流式请求": "스트리밍 요청", "流式请求的说明": "스트리밍 요청 안내", "测试": "테스트", "测试未通过": "테스트 미통과", "测试模型": "모델 테스트", "测试结果": "테스트 결과", "测试节点": "테스트 노드", "测试节点的说明": "테스트 노드 설명", "测试账号": "테스트 계정", "测试账号的说明": "테스트 계정 안내", "添加模型映射": "모델 매핑 추가", "添加自定义模型": "커스텀 모델 추가", "清空": "비우기", "清除覆盖,回到上游声明值": "덮어쓰기를 지우고 업스트림 선언 값으로 복귀", "清除这一项(回到未声明)": "이 항목 지우기(미선언으로 복귀)", "清除(不覆盖)": "지우기(덮어쓰지 않음)", "点击复制:{name}": "클릭하여 복사: {name}", "点右侧「获取模型」从上游拉取这家的模型清单": "오른쪽 '모델 가져오기'를 눌러 업스트림에서 이 제공자의 모델 카탈로그를 가져오세요", "用哪个账号去拉这家的模型清单": "이 제공자의 모델 카탈로그를 가져올 계정", "用户提示词": "사용자 프롬프트", "用户登记的自定义模型;整份清单只属于这一家": "사용자가 등록한 커스텀 모델. 목록 전체가 이 제공자 전용입니다", "用时 {time}": "소요 시간 {time}", "用时 {time} · 首字 {ttfb}": "소요 시간 {time} · 첫 토큰 {ttfb}", "留空则不携带;设置页的提示词模式照常生效": "비워 두면 전송하지 않습니다; 설정 페이지의 프롬프트 모드는 그대로 적용됩니다", "留空用默认问候「你好」": "비워 두면 기본 인사말 '你好'를 사용합니다", "的模型合集:每家的清单互相独立,别名也只在自己那家内生效;要改名称 / 协议 / Base URL,到账号页该家账号的「设置」→ 提供商一栏。": " 의 모델 모음입니다: 각 제공자의 목록은 서로 독립적이고 별칭도 자기 제공자 안에서만 유효합니다. 이름 / 프로토콜 / Base URL 변경은 계정 페이지의 해당 계정 \"설정\" → 제공자 항목에서 합니다.", "目录模块未就绪": "디렉터리 모듈이 준비되지 않았습니다", "目标使用自身的思考设置或默认值,仍受网关 Key 权限限制;不可用时明确报错,不自动退回原模型。": "대상 모델 자체의 추론 설정이나 기본값을 사용하며 게이트웨이 키 권한 제한도 적용됩니다. 사용할 수 없으면 오류를 반환하고 원래 모델로 자동 복귀하지 않습니다.", "目标已下线": "대상 종료됨", "直接移除": "즉시 제거", "直连(不使用代理)": "직접 연결(프록시 사용 안 함)", "看的能力声明(": "가 보는 기능 선언입니다(", "真实链路 · 消耗少量额度 · 日志带「测试」标记,不计报表": "실제 경로 · 소량의 할당량 소모 · 로그에 '테스트' 표시, 리포트 미집계", "确定删除映射「{alias} → {target}」?": "매핑 '{alias} → {target}'을 삭제하시겠습니까?", "确定删除映射「{alias} → {target}」?它指向的上游模型已不在清单里。": "매핑 “{alias} → {target}”을(를) 삭제할까요? 가리키는 업스트림 모델이 목록에 없습니다.", "确定删除映射「{alias} → {target}」?它指向的上游模型已不在清单里。": "매핑 “{alias} → {target}”을(를) 삭제할까요? 가리키는 업스트림 모델이 목록에 없습니다.", "确定删除此区域列出的全部 {n} 条未挂载映射?此操作不可撤销,不会删除正常挂载的映射或模型。": "이 영역에 표시된 연결되지 않은 매핑 {n}개를 모두 삭제할까요? 이 작업은 되돌릴 수 없습니다. 정상적으로 연결된 매핑이나 모델은 삭제되지 않습니다.", "确定删除选中的 {count} 个模型登记?删除后 /v1/models 不再广告它们、请求也会被拒。": "선택한 {count}개 모델 등록을 삭제하시겠습니까? 삭제하면 /v1/models에서 더 이상 공지되지 않고 요청도 거부됩니다.", "确定移除自定义模型「{id}」?这条登记会被直接移除,之后 /v1/models 不再广告它、请求它也会被拒。": "커스텀 모델 '{id}'를 제거하시겠습니까? 이 등록은 즉시 제거되며, 이후 /v1/models에서 더 이상 공지되지 않고 이 모델로의 요청도 거부됩니다.", "确认桌面端还在运行,再重试一次。": "데스크톱 앱이 실행 중인지 확인한 뒤 다시 시도하세요.", "确认选择": "선택 확인", "社区参考档位,不代表当前上游通道支持;实际以该通道目录为准。": "커뮤니티 참고 레벨은 현재 업스트림 경로의 지원을 보장하지 않습니다. 해당 경로의 목록이 우선합니다.", "社区参考档位:{levels}": "커뮤니티 참고 레벨: {levels}", "移除": "제거", "移除自定义模型": "커스텀 모델 제거", "系统提示词": "시스템 프롬프트", "绑定 {requested},按当前通道将发送 {effective}。": "{requested}로 바인딩되어 있으며 현재 경로는 {effective}를 보냅니다.", "绑定在「对外名 → 上游模型」这一条映射上的思考等级(列表照抄 OmniProxy 的手动绑定),选「不覆盖」表示不给这条映射指定等级。它会跟着这条映射注入转发,由承载的那家翻译成自己的档位字段(CatPaw 归并成 low/high/max,Qoder 按模型声明的档位归一)。以下几种情况故意不注入:① off / none(关闭思考)—— 本项目没有安全的表达方式;② 表外的自定义等级(各家能力范围不同,无法判断上游收不收);③ 客户端请求体里已经自己指定了档位(那是更明确的意图,绑定不覆盖);④ 这家上游不认识档位字段(如 WorkBuddy / 小浣熊 / AutoClaw / Cline)。注入与跳过都会写进详细日志。": "'외부 노출명 → 업스트림 모델' 매핑에 바인딩된 추론 레벨입니다(목록은 OmniProxy의 수동 바인딩을 그대로 따릅니다). '덮어쓰지 않음'을 선택하면 이 매핑에 레벨을 지정하지 않습니다. 이 값은 해당 매핑을 따라 전달에 주입되며, 이를 담당하는 제공자가 자체 레벨 필드로 변환합니다(CatPaw는 low/high/max로 병합하고, Qoder는 모델이 선언한 레벨로 정규화합니다). 다음 경우에는 의도적으로 주입하지 않습니다: ① off / none(추론 끄기) — 이 프로젝트에는 안전한 표현 방식이 없습니다; ② 목록에 없는 커스텀 레벨(제공자마다 지원 범위가 달라 업스트림이 받는지 판단할 수 없습니다); ③ 클라이언트 요청 본문에 이미 레벨이 지정된 경우(더 명확한 의도이므로 바인딩으로 덮어쓰지 않습니다); ④ 이 업스트림이 레벨 필드를 인식하지 못하는 경우(예: WorkBuddy / 小浣熊 / AutoClaw / Cline). 주입과 건너뛰기는 모두 상세 로그에 기록됩니다.", "继承上游": "업스트림 상속", "继承上游 {value}": "업스트림 상속 {value}", "继承上游:{value}": "업스트림 상속: {value}", "网关未返回保存后的提供商记录": "게이트웨이가 저장된 제공자 레코드를 반환하지 않았습니다.", "网关未返回逐家模型目录刷新结果": "게이트웨이가 제공업체별 모델 목록 새로고침 결과를 반환하지 않았습니다", "能力": "기능", "自定义 · 全部": "커스텀 · 전체", "自定义家": "커스텀 제공자", "自定义提供商": "커스텀 제공자", "自定义提供商的清单": "커스텀 제공자의 카탈로그", "自定义提供商还没有模型:先在左栏选一家,点「添加模型」登记,或「获取上游模型」从上游拉取": "이 커스텀 제공자에는 아직 모델이 없습니다: 왼쪽 목록에서 제공자를 고르고 \"모델 추가\"로 등록하거나 \"업스트림 모델 가져오기\"로 받아오세요", "自定义模型已移除": "커스텀 모델이 제거되었습니다", "自定义等级": "커스텀 레벨", "自定义等级…": "커스텀 레벨…", "自定义等级(例如 custom-high)": "커스텀 레벨(예: custom-high)", "至少选一个测试账号": "테스트 계정을 최소 하나 선택하세요", "节点 {proxy}": "노드 {proxy}", "获取": "가져오기", "获取中…": "가져오는 중…", "获取失败:{message}": "가져오기 실패: {message}", "获取模型": "모델 가져오기", "获取模型 — {name}": "모델 가져오기 — {name}", "规则 {n}": "규칙 {n}", "规则不绑定提供商,压缩模型由其路由配置决定使用哪家提供商。": "규칙은 특정 제공자에 연결되지 않습니다. 사용할 제공자는 압축 모델의 라우팅 설정에 따라 결정됩니다.", "视频": "비디오", "视频识别": "비디오 인식", "设置 / 清除会应用到选中模型的": "설정 / 지우기는 선택한 모델의 ", "设置思考等级": "추론 레벨 설정", "设置思考等级后,会覆盖下游请求中的等级;选择“不覆盖”则保留下游参数。实际档位以提供商支持范围为准,无法注入时保留原请求并记录原因。off / none 仍不由映射注入。": "추론 레벨을 설정하면 다운스트림 요청에서 지정한 레벨을 덮어씁니다. ‘덮어쓰지 않음’을 선택하면 다운스트림 매개변수를 유지합니다. 실제 레벨은 제공자의 지원 범위에 따르며, 적용할 수 없으면 원래 요청을 유지하고 이유를 로그에 기록합니다. 매핑은 계속해서 off / none을 주입하지 않습니다.", "设置思考等级(当前未绑定)": "추론 레벨 설정(현재 미바인딩)", "该提供商已不存在(可能已被删除),请刷新列表": "이 제공자가 더 이상 존재하지 않습니다(삭제되었을 수 있습니다). 목록을 새로 고치세요", "该提供商当前没有可选的上游模型": "이 제공자에 현재 선택할 수 있는 업스트림 모델이 없습니다", "该提供商没有可用账号(要在账号页启用一个、且凭证完整),一行都发不出去": "이 제공자에는 사용 가능한 계정이 없어(계정 페이지에서 하나를 활성화하고 자격 증명을 완성해야 합니다) 한 행도 전송할 수 없습니다", "该提供商的清单里没有模型「{name}」": "이 제공자의 카탈로그에 모델 '{name}'이(가) 없습니다", "该等级无法注入,请选择上游可用档位或清除绑定。": "이 레벨은 주입할 수 없습니다. 업스트림 지원 레벨을 선택하거나 바인딩을 지우세요.", "该行当前未启用:测试照常按本名直发(「先测通、再决定要不要启用」正是这颗按钮的用法),但本行的思考等级绑定不参与本次,生产路由也要等绑定打开后才会放行": "이 행은 현재 미활성 상태입니다: 테스트는 평소처럼 본래 이름으로 바로 전송됩니다('먼저 테스트로 통과시킨 뒤 활성화 여부를 정한다'가 바로 이 버튼의 용도입니다). 다만 이 행의 추론 레벨 바인딩은 이번에 적용되지 않으며, 프로덕션 라우팅도 바인딩을 켠 뒤에야 허용됩니다", "该账号对这个模型正在限额冷却,等一会儿自己会好;也可以先测别的账号。": "이 계정은 이 모델에 대해 할당량 쿨다운 중이라 잠시 기다리면 해제됩니다; 다른 계정을 먼저 테스트해도 됩니다.", "说明": "설명", "请先选择一把 API Key": "먼저 API Key를 선택하세요", "请填写上游模型 ID": "업스트림 모델 ID를 입력하세요", "请填写对外映射名": "외부 매핑명을 입력하세요", "请填写模型 ID": "모델 ID를 입력하세요", "请填写自定义思考等级,或改选候选档 / 「清除」": "커스텀 추론 레벨을 입력하거나 후보 레벨 / '지우기'를 다시 선택하세요", "请完整选择来源模型和压缩模型": "원본 모델과 압축 모델을 모두 선택하세요.", "请选择受支持的客户端": "지원되는 클라이언트를 선택하세요.", "请选择提供商": "제공자를 선택하세요", "读取模型清单失败:{message}": "모델 카탈로그 읽기 실패: {message}", "账号 ": "계정 ", "跟随映射(当前 {level})": "매핑 따르기(현재 {level})", "跟随映射(未绑定等级)": "매핑 따르기(레벨 미바인딩)", "跟随映射(该行未启用,本次不注入)": "매핑 따르기(이 행은 미활성, 이번에는 주입하지 않음)", "跟随账号配置": "계정 설정 따르기", "跳过": "건너뜀", "转发到上游模型": "업스트림 모델로 전달", "还没有可刷新的提供商:先在账号页添加一个账号": "새로 고칠 수 있는 제공자가 없습니다: 먼저 계정 페이지에서 계정을 추가하세요", "还没有自定义提供商": "아직 커스텀 제공자가 없습니다", "这一行已不在当前清单里(模型被移除、或目录刷新后上游不再提供它)。关闭后刷新列表再试。": "이 행은 더 이상 현재 카탈로그에 없습니다(모델이 제거되었거나 디렉터리 새로 고침 후 업스트림이 더 이상 제공하지 않습니다). 닫은 뒤 목록을 새로 고치고 다시 시도하세요.", "这个模型仍在承载它的提供商清单里,但那一家的模型行当前没有出现(例如该家没有可用账号)": "이 모델은 제공하는 제공자의 목록에는 아직 있지만, 그 제공자의 행이 지금 표시되지 않습니다(예: 사용 가능한 계정 없음).", "这个模型在官方客户端里是否会被展列;不展示的那些默认已关闭(含默认绑定)": "이 모델이 공식 클라이언트에 표시되는지 여부. 표시되지 않는 항목은 기본적으로 비활성화됩니다(기본 바인딩 포함)", "这个模型已经在这家的清单里,不重复导入": "이 모델은 이미 이 제공자의 카탈로그에 있어 중복으로 가져오지 않습니다", "这个模型的图片能力(图片生成 / 图片编辑)—— 点击修改": "이 모델의 이미지 기능(이미지 생성 / 이미지 편집) — 클릭하여 수정", "这些映射指向的上游模型已不在当前清单里,挂不到任何模型行上:它们不会出现在 /v1/models,用对应别名发请求也会失败。删除后该对外名即可重新使用。": "이 매핑이 가리키는 업스트림 모델이 현재 목록에 없어 어떤 모델 행에도 연결되지 않습니다. /v1/models에 나타나지 않으며, 해당 별칭으로 보낸 요청도 실패합니다. 삭제하면 그 공개 이름을 다시 사용할 수 있습니다.", "这些映射指向的上游模型已不在当前清单里,用对应别名发请求会失败。可以在这里删除,删掉后该对外名即可重新使用。": "이 매핑이 가리키는 업스트림 모델이 현재 목록에 없어 해당 별칭으로 보낸 요청은 실패합니다. 여기서 삭제하면 그 공개 이름을 다시 사용할 수 있습니다.", "这几项是给": "이 항목들은 ", "这家提供商没有可见性判据(目前只有 Antigravity / Qoder / 小浣熊 / CodeArts 有)": "이 제공업체에는 표시 상태 판정 규칙이 없습니다(현재 Antigravity / Qoder / Raccoon / CodeArts만 해당)", "这家有可见性判据,但这一条上游没有表态 —— 按可见处理": "이 제공업체에는 표시 상태 판정 규칙이 있지만 이 항목에 대해서는 업스트림이 밝히지 않았습니다 — 표시로 처리합니다", "这家没有可用账号(要在账号页启用一个、且凭证完整)": "이 제공자에는 사용 가능한 계정이 없습니다(계정 페이지에서 하나를 활성화하고 자격 증명을 완성해야 합니다)", "这家用固定模型清单,无可刷新": "이 제공자는 고정 모델 카탈로그를 사용해 새로 고칠 수 없습니다", "这家的模型清单是全局的,不跟账号走": "이 제공자의 모델 카탈로그는 전역이며 계정을 따라가지 않습니다", "这家的清单是你自己登记的,不填的项下游按未声明处理。": "이 제공자의 카탈로그는 직접 등록한 것이며, 비워 둔 항목은 다운스트림에서 미선언으로 처리합니다.", "这家还没有可用账号,刷新会使用默认登录态": "이 제공자에는 아직 사용 가능한 계정이 없어 새로 고침 시 기본 로그인 세션을 사용합니다", "这家还没有模型:点「添加模型」登记,或「获取上游模型」从上游拉取": "이 제공자에는 아직 모델이 없습니다: '모델 추가'를 눌러 등록하거나 '업스트림 모델 가져오기'로 업스트림에서 가져오세요", "这是模型自己能配的档位(来自上游目录),只读;要改某一档请到映射弹窗里选。": "이것은 모델 자체가 설정할 수 있는 레벨(업스트림 디렉터리에서 제공)이며 읽기 전용입니다; 특정 레벨을 바꾸려면 매핑 대화상자에서 선택하세요.", "这条登记(不像内置模型那样只是隐藏),因为它的存在完全由这次登记决定。": "하는 것입니다(내장 모델처럼 단순히 숨기는 것이 아닙니다). 이 등록의 존재 여부가 전적으로 이 등록에 달려 있기 때문입니다.", "这里是": "여기는 ", "远程": "원격", "远程目录": "원격 디렉터리", "远程目录已更新,「来源」列会显示为「远程」": "원격 디렉터리가 업데이트되었습니다. '소스' 열이 '원격'으로 표시됩니다", "适用客户端": "적용 클라이언트", "选一个账号(至少一个)": "계정 선택(최소 하나)", "选中的模型都不是手动登记,无法删除(开关映射才是它们的手段)": "선택한 모델이 모두 수동 등록이 아니어서 삭제할 수 없습니다(이들에게는 매핑 켜기/끄기가 수단입니다)", "选中的都不是手动登记的模型,删除不可用(上游目录带回来的行由清单决定存在性)": "선택한 항목이 모두 수동 등록 모델이 아니어서 삭제를 사용할 수 없습니다(업스트림 디렉터리가 가져온 행은 카탈로그가 존재 여부를 결정합니다)", "重新获取": "다시 가져오기", "重新读取会丢弃当前草稿,确定继续?": "다시 불러오면 현재 초안이 삭제됩니다. 계속할까요?", "重试": "다시 시도", "错误详情": "오류 상세", "默认": "기본", "默认开,与真实请求一致:可同时验证 SSE 链路与首字延迟。": "기본 켜짐이며 실제 요청과 동일합니다: SSE 경로와 첫 토큰 지연을 함께 검증할 수 있습니다.", "默认档位:{level}": "기본 레벨: {level}", "默认绑定": "기본 바인딩", "({label})": "({label})", "({provider})": "({provider})", "(上游这一次返回了空正文)": "(업스트림이 이번에는 빈 본문을 반환했습니다)", "(中间共尝试 {n} 次)": "(중간에 총 {n}회 시도)", "(已禁用)": "(비활성)", "(已被手动覆盖,弹窗里可恢复继承)": "(수동으로 덮어쓴 값, 대화상자에서 상속 복원 가능)", "(手动设定)": " (직접 설정)", "(由 models.dev 补齐)": " (models.dev가 채움)", "(登记后即可用这个名字请求)": "(등록 후 이 이름으로 요청할 수 있습니다)", "(续)": "(계속) ", "(默认 ": "(기본 ", "(默认绑定与别名 chips);「清除」= 不给这些映射指定等级(选「不覆盖」的口径与映射弹窗一致)": "(기본 바인딩 및 별칭 칩); '지우기' = 이 매핑들에 레벨을 지정하지 않음(매핑 대화상자의 '덮어쓰지 않음'과 같은 기준)", ")": ")", "),下游按它们决定发不发图片、按多大的窗口堆历史。": "), 다운스트림은 이를 기준으로 이미지를 보낼지, 얼마나 큰 컨텍스트 윈도우로 히스토리를 쌓을지 결정합니다.", "+ 新建自定义提供商": "+ 커스텀 제공자 새로 만들기", "+ 映射": "+ 매핑", "+ 添加压缩规则": "+ 압축 규칙 추가", "+ 添加模型": "+ 모델 추가", "+等级": "+레벨", ",与远程目录 / 内置清单区分开。删除自定义模型是": "으로 표시되어 원격 디렉터리 / 내장 카탈로그와 구분됩니다. 커스텀 모델 삭제는 ", ",已完成 ": ", 완료 ", ",跳过 {n} 个": ", {n}개 건너뜀", ",通常就不是账号问题了:先确认这个模型还在上游目录里(「获取模型」刷一次),再看默认绑定指向的上游模型对不对。": ", 보통은 계정 문제가 아닙니다: 먼저 이 모델이 아직 업스트림 디렉터리에 있는지 확인하고('모델 가져오기'로 한 번 새로 고치기), 기본 바인딩이 가리키는 업스트림 모델이 맞는지 확인하세요.", ":": ":", ":这里的模型不会出现在其他家,别名也只在这一家内生效。改名称 / 协议 / Base URL 在账号页该家账号的「设置」→ 提供商一栏;整家不要了,鼠标移到左栏这家上点 × 删除(连同名下账号)。": ": 여기의 모델은 다른 제공자에 나타나지 않으며 별칭도 이 제공자 안에서만 유효합니다. 이름 / 프로토콜 / Base URL 변경은 계정 페이지에서 이 제공자 계정의 '설정' → 제공자 항목에서 합니다; 제공자 전체가 필요 없으면 왼쪽 레일에서 이 제공자에 마우스를 올리고 × 를 눌러 삭제하세요(소속 계정 포함).", ";其中 {keys} 由 models.dev 补齐": "; {keys} 항목은 models.dev가 채움", ";首个失败:{error}": "; 첫 실패: {error}", "{account} · 账号设置": "{account} · 계정 설정", "{account} 参与本路由": "이 경로에 {account} 포함", "{account} 尝试失败后切换到此账号": "{account}에서 시도가 실패하여 이 계정으로 전환했습니다", "{available} 可用 · {blocked} 跳过": "사용 가능 {available} · 건너뜀 {blocked}", "{clients} 的标题请求": "{clients}의 제목 요청", "{client} 的压缩请求": "{client}의 컨텍스트 압축 요청", "{models} 看不了图时": "{models}이(가) 이미지를 볼 수 없을 때", "{model} 参与本路由": "이 경로에 {model} 포함", "{model} 有独立配置": "{model}에 독립 설정이 있습니다", "{name} · 提供商路由设置": "{name} · 공급자 라우팅 설정", "{name} 已{state}": "{name}: {state}", "{name} 的账号顺序已调整": "{name} 계정 순서 변경됨", "{n} 个候选": "후보 {n}개", "{n} 个参与账号": "참여 계정 {n}개", "{n} 个启用且参与的账号": "활성 상태로 참여 중인 계정 {n}개", "{n} 个提供商": "{n}개 제공자", "{n} 个模型限流": "모델 {n}개 요청 제한 중", "{n} 个请求": "요청 {n}개", "{n} 个账号 · {on} 启用 · {off} 禁用": "{n}개 계정 · 사용 {on} · 중지 {off}", "{n} 个账号已折叠": "계정 {n}개 접힘", "{n} 个跳过": "건너뜀 {n}개", "{n} 在途": "{n}개 처리 중", "{n} 处未保存": "{n}개 저장 안 됨", "{n} 已完成": "{n}개 완료", "{n} 条": "{n}건", "{n} 条活跃绑定": "활성 바인딩 {n}개", "{n} 条请求没有会话标识,未计入会话数量。": "요청 {n}개는 세션 식별자가 없어 세션 수에 포함되지 않습니다.", "{n} 条账号路径": "계정 경로 {n}개", "{n} 次": "{n}회", "{n} 项参与": "{n}개 참여 중", "{paths} 条路径 · {sessions} 个会话": "경로 {paths}개 · 세션 {sessions}개", "{providers} 个提供商 / {accounts} 个账号": "{providers}개 제공자 / {accounts}개 계정", "{providers} 个提供商 · {accounts} 个参与账号": "{providers}개 제공자 · {accounts}개 참여 계정", "{provider} 参与本路由": "이 경로에 {provider} 포함", "{selected} / {total} 个账号参与": "{selected} / {total}개 계정 참여", "{selected} / {total} 个账号启用": "{selected} / {total}개 계정 활성화", "{time} 后恢复": "{time} 후 복구", "一个路由组最多允许 {n} 个成员": "경로 그룹에는 최대 {n}개의 멤버를 추가할 수 있습니다", "一条历史路径": "과거 경로 1개", "上游已响应": "업스트림 응답 도착", "上游请求已发出": "업스트림 요청 전송됨", "上游调用": "업스트림 호출", "下一条请求": "다음 요청", "下一条请求将走": "다음 요청은 다음으로 이동합니다", "不参与": "미참여", "不按余额排序": "잔액으로 정렬 안 함", "不按到期排序": "만료일로 정렬하지 않음", "与账号页共用全局消耗规则": "계정 페이지와 전역 소비 규칙 공유", "与账号页共用:{rules}。积分到期等规则直接影响网关实际选路。": "계정 페이지와 공유: {rules}. 크레딧 만료 등의 규칙이 게이트웨이의 실제 라우팅에 반영됩니다.", "为什么没有调用": "호출하지 않은 이유", "为什么选择它": "선택한 이유", "为压缩请求指定模型": "압축 요청에 사용할 모델 지정", "五分钟没有往来即释放;客户端会话标识优先,内容哈希兜底。": "5분 동안 통신이 없으면 해제됩니다. 클라이언트 세션 식별자를 우선 사용하고, 없으면 콘텐츠 해시를 사용합니다.", "仅保留最后承载信息,尝试明细未记录": "최종 처리 계정 정보만 남아 있으며 시도 상세는 기록되지 않았습니다", "仅允许指定提供商": "지정한 공급자만 허용", "仅列出真实目录中的对话模型,不自动更改模型映射。": "실제 목록의 대화 모델만 표시합니다. 모델 매핑은 변경하지 않습니다.", "仅加入的参与": "추가한 항목만 참여", "仅勾选的参与": "선택한 항목만 참여", "仅历史": "기록만", "仅在途": "처리 중만", "仅展示已发生的请求,不表示当前可选": "기록된 요청을 표시하며 현재 선택 가능하다는 뜻은 아닙니다", "仅影响此路由的后续请求": "이 경로의 이후 요청에만 적용", "仅看选中路径": "선택한 경로만", "仅筛选右侧账号列表,不改变路由配置。": "오른쪽 계정 목록만 필터링하며 라우팅 설정은 변경하지 않습니다.", "仍保留配置,账号可继续用于其他路由。": "설정은 유지되며 계정은 다른 경로에서 계속 사용할 수 있습니다.", "仍然保存": "그래도 저장", "从上到下就是选路顺序": "위에서 아래가 라우팅 순서입니다", "从当前视图移除": "현재 보기에서 제거", "从现有模型中创建独立配置,自动列出提供它的全部提供商;之后的修改只跟随这个模型。": "기존 모델에 독립 설정을 만듭니다. 해당 모델을 제공하는 모든 공급자가 자동으로 표시되며, 이후 변경은 이 모델에만 적용됩니다.", "以下 {n} 个账号原本被全局路由排除。确认后会将它们设为禁用,所有路由都不能再选用;原有独立路由的参与名单保留。": "아래 {n}개 계정은 전역 라우팅에서 제외되어 있었습니다. 변환을 확인하면 비활성화되어 모든 경로에서 선택할 수 없게 됩니다. 기존 독립 경로의 참여 목록은 유지됩니다.", "优先使用队首账号,不可用时顺延。": "대기열 첫 계정을 우선 사용하고, 사용할 수 없으면 다음 계정으로 넘어갑니다.", "优先尝试": "우선 시도", "优先级:{rules};前一项相同才比较后一项。": "우선순위: {rules}. 앞선 항목이 같을 때만 다음 항목을 비교합니다.", "会话": "세션", "会话最长保持六小时无往来;可以随时在会话粘滞中解除。": "통신이 없는 상태로 최대 6시간 유지됩니다. 세션 바인딩에서 언제든 해제할 수 있습니다.", "会话来源": "세션 출처", "会话标识": "세션 식별자", "会话标识 {id} · 来源 {source}": "세션 {id} · 출처 {source}", "会话标识未记录,不将此请求推断为独立会话。": "세션 식별자가 기록되지 않아 이 요청을 별도 세션으로 추정하지 않습니다.", "会话活动": "세션 활동", "会话粘住": "세션 바인딩 적중", "会话粘滞": "세션 바인딩", "会话粘滞 {mode}": "세션 고정 {mode}", "会话粘滞改为{value}": "세션 고정을 {value}(으)로 변경", "位置 = 顺位": "위치 = 우선순위", "作用范围": "적용 범위", "例如:日常省钱": "예: 일상 비용 절약", "供继承全局的模型使用": "전역 설정을 상속하는 모델에 적용", "保存": "저장", "保存中…": "저장 중…", "保存仅影响后续选路,历史快照与在途请求不改写。": "저장은 이후 라우팅에만 적용되며 과거 스냅샷과 처리 중 요청은 변경하지 않습니다.", "保存全局路由": "전역 라우팅 저장", "保存后仅用于后续请求,不改变历史快照或在途请求。": "저장 내용은 이후 요청에만 적용되며 과거 스냅샷이나 처리 중인 요청은 변경하지 않습니다.", "保存后只影响后续请求": "저장 후 이후 요청에만 적용", "保存后才会影响真实请求": "저장 후 실제 요청에 적용됩니다", "保存响应不完整,请刷新当前配置确认结果": "저장 응답이 불완전합니다. 현재 설정을 새로 읽어 결과를 확인하세요.", "保存当前配置": "현재 설정 저장", "保存模型路由": "모델 라우팅 저장", "保存的尝试明细中没有这次调用": "저장된 시도 상세에 이 호출이 없습니다", "保存空路由": "빈 경로 저장", "保存规则": "규칙 저장", "保存路由": "경로 저장", "保存路由后,在客户端填写此模型 ID。密钥使用你自己的网关 Key。": "저장 후 클라이언트에 이 모델 ID와 본인의 게이트웨이 키를 입력하세요.", "保护设置由所有模型共用;模型独立配置可覆盖参与范围、顺序、策略与粘滞。": "보호 설정은 모든 모델이 공유합니다. 모델별 독립 설정에서 참여 범위, 순서, 전략 및 세션 고정을 재정의할 수 있습니다.", "修改后影响继承全局的模型": "변경 사항은 전역 설정을 상속하는 모델에 적용됩니다", "修改范围以「编辑范围」为准": "변경은 선택한 편집 범위에 적용됩니다", "候选": "후보", "候选 {n}": "후보 {n}", "候选 · {name}": "후보 · {name}", "候选与跳过": "후보 및 건너뛴 항목", "候选与跳过清单各最多保存十二项;这里只回放当时保存的快照,不用当前队列重算。": "후보와 건너뛴 항목은 각각 최대 12개까지 저장됩니다. 여기서는 저장된 스냅샷만 재생하며 현재 큐로 다시 계산하지 않습니다.", "候选与跳过清单各最多保存十二项;重试和跨账号切换见尝试明细。": "후보 및 건너뛴 계정 목록은 각각 최대 12개 항목을 저장합니다. 재시도와 계정 전환은 시도 상세에서 확인하세요.", "候选和跳过清单各最多保存十二项,超出部分不绘制。": "후보와 건너뛴 계정 목록은 각각 최대 12개 항목을 저장하며 초과 항목은 표시하지 않습니다.", "候选快照中有此账号,但保存的尝试明细未显示它被调用": "후보 스냅샷에 이 계정이 있지만 저장된 시도 상세에는 호출 기록이 없습니다", "候选快照仅保存部分记录,未保存的账号无法回放": "후보 스냅샷의 일부만 저장되었습니다. 기록이 없는 계정은 재생할 수 없습니다", "候选筛选": "후보 필터", "候选规模": "후보 규모", "候选账号": "후보 계정", "候选顺序": "후보 순서", "停用后保留卡片与账号,方便随时恢复;不会全局禁用提供商。": "비활성화해도 카드와 계정은 유지되어 언제든 복원할 수 있습니다. 공급자를 전역으로 비활성화하지는 않습니다.", "停用后保留卡片与账号;自动参与不会重新启用明确停用的提供商。": "비활성화해도 카드와 계정은 유지됩니다. 자동 참여가 명시적으로 비활성화한 공급자를 다시 활성화하지는 않습니다.", "停用此提供商": "이 공급자 비활성화", "停用路由提供商": "라우팅 공급자 비활성화", "允许参与的提供商": "참여 허용 공급자", "先处理凭证、限额或参与范围。": "먼저 자격 증명, 한도 또는 참여 범위를 확인하세요.", "先尝试当前路由内的视觉模型,不可用时再按顺序尝试指定模型;指定模型可跨路由池。": "현재 라우트의 비전 모델을 먼저 시도하고, 사용할 수 없으면 지정한 모델을 순서대로 시도합니다. 지정한 모델은 다른 라우팅 풀을 사용할 수 있습니다.", "先读图再交回": "이미지를 먼저 읽고 다음으로 되돌림", "全局": "전역", "全局保护设置": "전역 보호 설정", "全局修改影响继承它的模型;独立模型配置不变。": "전역 변경은 해당 설정을 상속하는 모델에 적용되며 독립 모델 설정은 유지됩니다.", "全局修改影响继承的设置;模型已独立设置的项目保持不变。": "전역 변경은 상속된 설정에 적용되며 모델별로 따로 설정한 항목은 유지됩니다.", "全局参与范围": "전역 참여 범위", "全局顺序与账号页联动,修改即时保存。": "전역 순서는 계정 페이지와 연동되며 변경은 즉시 저장됩니다.", "全局默认": "전역 기본값", "全局默认供继承的模型使用;给某个模型单独配置后,它就不再跟随全局。": "전역 기본값은 이를 상속하는 모델이 사용합니다. 모델 전용 설정을 만들면 그 모델은 더 이상 전역을 따르지 않습니다.", "全部候选": "모든 후보", "全部模型(窗口内没有请求)": "모든 모델(기간 내 요청 없음)", "全部禁用": "모든 계정 비활성화됨", "全部移出": "모두 제외", "全部移出本路由": "이 경로에서 모두 제외", "全部自动参与": "전체 자동 참여", "全部解除": "모두 해제", "全部请求": "모든 요청", "全部路径": "모든 경로", "共 {n} 个可添加的模型": "추가할 수 있는 모델 {n}개", "共 {n} 条路由回放": "라우팅 재생 {n}건", "共尝试 {total} 次,保存了 {saved} 条明细": "총 {total}회 시도, 상세 기록 {saved}개 저장", "关联与在途优先": "선택된 경로와 처리 중 우선", "关联请求路径": "관련 요청 경로", "关闭": "닫기", "其他候选": "다른 후보", "其他客户端": "기타 클라이언트", "其他账号已完成请求,没有继续调用这个候选": "다른 계정이 요청을 완료하여 이 후보는 호출하지 않았습니다", "内容哈希": "콘텐츠 해시", "内容哈希(推断)": "콘텐츠 해시(추정)", "内部重试不会增加账号切换节点。": "내부 재시도는 계정 전환 노드를 추가하지 않습니다.", "决定后续请求用谁、按什么顺序,以及是否沿用会话账号。": "이후 요청에 사용할 계정과 순서, 세션 계정을 계속 사용할지 설정합니다.", "冷却中": "대기 중", "切换 {n} 次": "{n}회 전환", "切换后,原本不在名单内的可用提供商也会参与转发。明确停用的提供商和排除的账号不会恢复。": "전환하면 이전 목록에 없던 사용 가능한 공급자도 전달에 참여합니다. 명시적으로 비활성화한 공급자와 제외한 계정은 복원되지 않습니다.", "切换模型后,右侧只展示该模型的提供商与账号路由。": "모델을 전환하면 오른쪽에 해당 모델의 공급자 및 계정 라우팅만 표시됩니다.", "列表内容": "목록 내용", "创建独立配置": "독립 설정 만들기", "创建草稿": "초안 만들기", "删除后此入口将不再接受请求。不会删除成员模型、提供商或账号。": "삭제하면 이 진입점은 요청을 받지 않습니다. 구성 모델, 공급자 및 계정은 삭제되지 않습니다.", "删除后这个模型会重新跟随全局配置,已保存的独立设置和当前未保存修改都会被移除。": "삭제하면 이 모델은 다시 전역 설정을 따릅니다. 저장된 독립 설정과 저장하지 않은 변경 사항도 제거됩니다.", "删除独立路由": "독립 라우팅 삭제", "删除独立配置": "독립 설정 삭제", "删除规则": "규칙 삭제", "删除路由组": "경로 그룹 삭제", "刷新请求记录": "요청 기록 새로고침", "刷新路由": "라우팅 새로고침", "刷新预演": "미리보기 새로고침", "加入": "추가됨", "加入路由": "경로에 추가", "历史只读,不影响当前配置": "기록은 읽기 전용이며 현재 설정에 영향을 주지 않습니다", "历史只读,当前配置的修改不会改变这条请求的快照。": "기록은 읽기 전용입니다. 현재 설정을 변경해도 이 요청의 스냅샷은 바뀌지 않습니다.", "历史快照保留了 {shown} / {total} 个候选明细,其余未记录。": "과거 스냅샷에 후보 {total}개 중 {shown}개의 상세 정보가 저장되었습니다. 나머지는 기록되지 않았습니다.", "历史承载账号当前不可用": "과거 처리 계정을 현재 사용할 수 없음", "历史日期": "기록 날짜", "历史记录": "이전 기록", "压缩上下文": "컨텍스트 압축", "压缩模型": "압축 모델", "原因": "이유", "原始报文在请求详情里,这里只看选路过程。": "원본 페이로드는 요청 상세에 있습니다. 여기서는 라우팅 과정만 봅니다.", "原模型": "원래 모델", "去账号页添加": "계정 페이지에서 추가", "参与": "참여", "参与当前视图转发": "현재 보기의 전달에 참여", "参与方式": "참여 방식", "参与方式改为{value}": "참여 방식을 {value}(으)로 변경", "参与本路由": "이 경로에 참여", "参与范围": "참여 범위", "参与范围与顺序独立保存;策略和粘滞可分别继承全局。": "참여 범위와 순서는 독립적으로 저장되며 전략과 세션 고정은 각각 전역 설정을 상속할 수 있습니다.", "参与账号": "참여 계정", "参与路由": "라우팅 참여", "参与路由的账号": "라우팅 참여 계정", "参与转发": "전달에 참여", "参与顺序": "참여 순서", "发生切换": "계정 전환 발생", "取消": "취소", "取消勾选只排除当前范围,不会在账号页全局禁用账号。": "선택을 해제하면 현재 범위에서만 제외되며 계정 페이지에서 전역으로 비활성화하지 않습니다.", "取消选中": "선택 해제", "只从当前路由移出,保留模型和账号配置;不会改变其他路由。": "현재 경로에서만 제외하며 모델과 계정 설정은 유지합니다. 다른 경로는 변경하지 않습니다.", "只从当前路由视图移除,不删除提供商或账号,也不改变其他模型的独立配置。": "현재 라우팅 보기에서만 제거합니다. 공급자나 계정을 삭제하지 않고 다른 모델의 독립 설정도 변경하지 않습니다.", "只修改全局参与范围,不改变账号排序、模型开关或模型独立路由;网关 Key 权限与限流仍然生效。": "전역 참여 범위만 변경합니다. 계정 순서, 모델 활성화 및 모델별 독립 라우팅은 변경하지 않으며 게이트웨이 Key 권한과 요청 제한도 유지됩니다.", "只列出当前模型已有启用绑定的提供商;这里只设置路由,不新建模型绑定。": "현재 모델에 활성 연결이 있는 공급자만 표시됩니다. 여기서는 라우팅만 설정하며 모델 연결을 새로 만들지 않습니다.", "只影响这个路由成员,不改变账号启用状态,也不影响其他模型。新增账号需要手动加入。": "이 구성원에만 적용되며 계정 활성 상태나 다른 모델에는 영향을 주지 않습니다. 새 계정은 수동으로 추가해야 합니다.", "只改写被识别为标题生成的小请求,普通对话不受影响。": "제목 생성으로 인식된 작은 요청만 다시 씁니다. 일반 대화는 영향을 받지 않습니다.", "只有加入的提供商参与,新增提供商需要手动加入。": "추가된 공급자만 참여합니다. 새 공급자는 수동으로 추가해야 합니다.", "只有勾选的提供商参与;以后新增的提供商需要在这里勾选。": "체크한 제공자만 참여합니다. 새 제공자는 여기서 체크해야 합니다.", "只有名单内的提供商可以参与;新增提供商不会自动加入。": "목록에 있는 공급자만 참여할 수 있습니다. 새 공급자는 자동으로 추가되지 않습니다.", "只看用过这个模型的客户端与账号。点一条看它当时是怎么选的。": "이 모델을 사용한 클라이언트와 계정만 표시합니다. 하나 열면 당시 선택 과정을 볼 수 있습니다.", "只看这个客户端经过的模型与账号。点一条看它当时是怎么选的。": "이 클라이언트가 거친 모델과 계정만 표시합니다. 하나 열면 당시 선택 과정을 볼 수 있습니다.", "只看这个提供商下参与路由的账号。点一条看它当时是怎么选的。": "이 제공자에서 참여 중인 계정만 표시합니다. 하나 열면 당시 선택 과정을 볼 수 있습니다.", "只看这个账号承接的请求。点一条看完整的选路过程。": "이 계정이 처리한 요청만 표시합니다. 하나 열면 전체 라우팅 과정을 볼 수 있습니다.", "只看这条路径上的请求。点一条看完整的选路过程。": "이 경로의 요청만 표시합니다. 하나 열면 전체 라우팅 과정을 볼 수 있습니다.", "只移出本路由,账号状态和其他路由不变;保存后此入口将没有可用路由。": "이 경로에서만 제외합니다. 계정 상태와 다른 경로는 유지됩니다. 저장 후 이 진입점에는 사용 가능한 경로가 없습니다.", "只读预演,不会推进轮转;保存后才会影响真实请求。": "읽기 전용 미리보기이며 로테이션을 진행하지 않습니다. 저장해야 실제 요청에 반영됩니다.", "可以保存空路由,但请求会明确失败,不会回退全局。": "빈 경로를 저장할 수 있지만 요청은 명시적으로 실패하며 전역 경로로 대체하지 않습니다.", "可以跨提供商、跨模型多选。同一提供商也可以加入不同模型。": "공급자와 모델을 넘나들며 여러 항목을 선택할 수 있습니다. 같은 공급자의 다른 모델도 추가할 수 있습니다.", "可用候选": "사용 가능한 후보", "可用待命": "사용 가능, 대기 중", "可用账号按请求轮换;开启会话粘性时同一会话优先留在原账号。": "사용 가능한 계정을 요청마다 순환합니다. 세션 고정이 켜져 있으면 같은 세션은 기존 계정을 우선 사용합니다.", "右侧面板内容": "오른쪽 패널 내용", "同一会话优先保持模型与账号,不可用时才顺延。": "같은 세션에서는 모델과 계정을 우선 유지하고 사용할 수 없을 때 다음으로 넘어갑니다.", "同一模型,选择不同提供商": "같은 모델, 다른 공급자 선택", "同号重试 {n} 次": "동일 계정으로 {n}회 재시도", "同账号内部重试": "동일 계정 내부 재시도", "后备账号": "예비 계정", "后过期": "후 만료", "否": "아니요", "启用": "사용", "启用 {provider} 的账号": "{provider} 계정 활성화", "启用全部账号": "모든 계정 활성화", "启用当前列表账号": "현재 목록의 계정 활성화", "启用提供商中的第 {rank} 顺位;当前可用候选第 {effective} 顺位。": "활성 공급자 중 우선순위 {rank}. 현재 사용 가능한 후보 중 우선순위는 {effective}입니다.", "启用提供商中的第 {rank} 顺位;当前没有可用候选账号。": "활성 공급자 중 우선순위 {rank}. 현재 사용 가능한 후보 계정이 없습니다.", "启用规则": "규칙 활성화", "启用账号 {account}": "계정 {account} 활성화", "命中 {n} 次": "{n}회 적중", "命中下面规则的上下文压缩请求,会改用指定的模型压缩一次;账号仍按新模型自己的路由挑。": "아래 규칙에 해당하는 컨텍스트 압축 요청만 지정한 모델로 한 번 압축합니다. 계정은 새 모델 자체의 라우트로 선택됩니다.", "命中会话粘性,沿用原账号完成请求": "세션 바인딩이 적중하여 기존 계정으로 요청을 완료했습니다", "命中会话粘滞": "세션 바인딩 적중", "命中这条规则的压缩请求会改用「压缩模型」重发一次;改写之后按新模型自己的路由挑账号。": "이 규칙에 해당하는 압축 요청은 「압축 모델」로 한 번 다시 보냅니다. 계정은 새 모델 자체의 라우트로 선택됩니다.", "命中配置": "적용된 설정", "响应到达": "응답 도착", "响应到达后": "응답 도착 후", "响应完成": "응답 완료", "回放中": "재생 중", "回放保持不变": "재생 내용 유지", "回放步骤": "재생 단계", "固定这条请求": "이 요청 고정", "在工作台查看": "작업 공간에서 보기", "在途 + 近期": "처리 중 + 최근", "在途 {n} / {limit}": "처리 중 {n} / {limit}", "在途时长": "처리 중 경과 시간", "在途请求 / 并发上限": "처리 중 요청 / 동시 처리 한도", "备选按顺序尝试;一个都不加时,当前路由内找不到视觉模型就停止并说明原因。": "대체 모델은 순서대로 시도합니다. 하나도 추가하지 않으면 현재 라우트에서 비전 모델을 찾지 못할 때 이유를 알리고 중단합니다.", "复制失败,请手动选择并复制": "복사하지 못했습니다. 직접 선택하여 복사하세요.", "复制网关地址": "게이트웨이 URL 복사", "失败原因未记录": "실패 이유가 기록되지 않았습니다", "失败后备选": "실패 시 대안", "失败时直接报错": "실패 시 오류 반환", "失败时退回原模型": "실패 시 원본 모델로 되돌림", "失败阈值": "실패 임계값", "完整详情": "전체 상세", "完整请求详情": "전체 요청 상세", "完整过程": "전체 과정", "实时状态暂未更新,当前显示上次读取的结果:{error}": "실시간 상태를 새로 고치지 못했습니다. 마지막으로 불러온 결과를 표시합니다: {error}", "实际尝试失败": "실제 시도 실패", "实际模型": "실제 모델", "实际请求路径": "실제 요청 경로", "实际账号尝试": "실제 계정 시도", "客户端已取消请求": "클라이언트가 요청을 취소했습니다", "客户端模型 {client} → 实际模型 {model}": "클라이언트 모델 {client} → 실제 모델 {model}", "客户端请求": "클라이언트 요청", "对外模型 ID": "공개 모델 ID", "对外模型 ID 已被占用,请换一个名称": "이미 사용 중인 공개 모델 ID입니다. 다른 이름을 입력하세요.", "对外模型 ID 格式不正确": "공개 모델 ID 형식이 올바르지 않습니다", "将禁用当前所选的 {n} 个账号,所有路由都不能再选用它们。此操作立即保存,不会删除账号。": "선택한 {n}개 계정을 비활성화하여 모든 경로에서 선택할 수 없게 합니다. 즉시 저장되며 계정은 삭제하지 않습니다.", "尚未记录承载账号": "처리 계정이 아직 기록되지 않았습니다", "尚未读取到有效的积分到期时间": "유효한 크레딧 만료 시간을 아직 불러오지 못했습니다", "尝试 {n}": "시도 {n}", "尝试 {n} · 最终承载": "시도 {n} · 최종 처리", "尝试中": "시도 중", "尝试失败": "시도 실패", "尝试明细已截断或未记录,画布只展示保存下来的信息。": "시도 상세가 잘렸거나 기록되지 않았습니다. 캔버스에는 저장된 정보만 표시합니다.", "尝试结果": "시도 결과", "尝试记录": "시도 기록", "展开其余 {n} 个候选": "나머지 후보 {n}개 펼치기", "展开完整原因": "전체 사유 펼치기", "工具服务的视觉模型": "도구 서비스 비전 모델", "左侧修改的是全局默认,不会影响它。": "왼쪽의 변경은 전역 기본값에 대한 것이며 이 모델에는 영향을 주지 않습니다.", "已保存": "저장됨", "已保存 {n} 个候选": "후보 {n}개 저장됨", "已保存明细": "저장된 상세", "已停用": "사용 중지", "已停用提供商 · {n}": "비활성 공급자 · {n}", "已关闭": "꺼짐", "已删除独立配置,改为跟随全局": "독립 설정을 삭제하고 전역 설정을 따르도록 변경했습니다", "已启用": "활성화됨", "已启用模拟条件": "시뮬레이션 조건 사용 중", "已固定这条请求,新请求不会打断当前查看": "이 요청은 고정되어 새 요청이 현재 보기를 바꾸지 않습니다", "已完成记录": "완료 기록", "已完成请求时间范围": "완료 요청 시간 범위", "已尝试": "이미 시도함", "已尝试 · 失败": "시도함 · 실패", "已用时": "경과 시간", "已禁用账号": "비활성 계정", "已禁用账号 · {n}": "비활성 계정 · {n}", "已解除 {n} 条会话粘滞": "세션 바인딩 {n}개 해제됨", "已记录 {n} 次尝试": "{n}회 시도 기록됨", "已跳过": "건너뜀", "已转换为账号启停,独立路由参与名单保持不变": "계정 활성화·비활성화 관리로 변환했습니다. 독립 경로의 참여 목록은 유지됩니다.", "平均耗时": "평균 소요 시간", "并发已满": "동시 처리 한도 도달", "序号表示先后,不是提供商之间互相转发": "번호는 시도 순서를 나타내며 공급자 간 전달을 의미하지 않습니다", "应用到草稿": "초안에 적용", "开始 {start} · 响应 {response} · 结束 {finish}": "시작 {start} · 응답 {response} · 종료 {finish}", "开始于 +{time}": "+{time}에 시작", "开始时间": "시작 시간", "当前全局路由使用固定参与名单,新增提供商不会自动加入。": "현재 전역 라우팅은 고정 참여 목록을 사용합니다. 새 공급자는 자동으로 추가되지 않습니다.", "当前可用队首": "현재 사용 가능한 첫 후보", "当前承载": "현재 처리 계정", "当前有效顺位以路由预演为准,不改变保存的配置优先级。": "현재 유효 순서는 라우팅 미리보기를 따르며 저장된 설정 우선순위는 변경하지 않습니다.", "当前档位不保留跨请求粘滞,因此没有活跃绑定。": "현재 모드는 요청 간 바인딩을 유지하지 않으므로 활성 바인딩이 없습니다.", "当前模型": "현재 모델", "当前模型使用独立顺序,不受全局自动消耗排序影响。删除独立路由后会重新跟随账号页。": "이 모델은 독립 순서를 사용하며 전역 자동 소비 정렬의 영향을 받지 않습니다. 독립 라우팅을 삭제하면 계정 페이지의 순서를 다시 따릅니다.", "当前模型使用独立顺序,不受全局自动消耗排序影响。恢复继承后会重新跟随账号页。": "이 모델은 독립 순서를 사용하며 전역 자동 소비 정렬의 영향을 받지 않습니다. 상속을 복원하면 계정 페이지의 순서를 다시 따릅니다.", "当前模型没有对应的账号,请先添加账号或检查模型绑定。": "이 모델에 해당하는 계정이 없습니다. 계정을 추가하거나 모델 연결을 확인하세요.", "当前模型配置独立保存,不影响全局和其他模型。": "현재 모델 설정은 독립적으로 저장되며 전역 설정이나 다른 모델에 영향을 주지 않습니다.", "当前没有参与账号,保存后这个范围可能无法承载新请求。": "현재 참여 계정이 없습니다. 저장하면 이 범위에서 새 요청을 처리하지 못할 수 있습니다.", "当前没有可沿用的粘滞绑定": "현재 재사용할 수 있는 세션 바인딩 없음", "当前空闲": "현재 유휴", "当前绑定:{account},剩余 {time}": "현재 바인딩: {account}, 남은 시간 {time}", "当前继承全局。改成模型独立配置后,改动只影响这个模型。": "현재 전역 설정을 상속합니다. 모델 전용 설정으로 바꾸면 이 모델에만 적용됩니다.", "当前继承全局固定名单;新增提供商需手动添加或在全局配置中改为自动参与。": "현재 전역 고정 목록을 상속합니다. 새 공급자를 수동으로 추가하거나 전역 설정에서 자동 참여로 전환하세요.", "当前继承全局,修改前先切到独立配置": "전역을 상속 중입니다. 수정하려면 독립 설정으로 바꾸세요", "当前继承全局,切换到独立配置后只修改本模型。": "현재 전역 설정을 상속합니다. 독립 설정으로 전환하면 이 모델만 수정합니다.", "当前网关尚不支持全局账号启停,请更新网关后重新读取。": "현재 게이트웨이는 전역 계정 관리를 지원하지 않습니다. 게이트웨이를 업데이트한 후 다시 읽으세요.", "当前范围内没有请求": "현재 범위에 요청이 없음", "当前范围的提供商都没有账号,先在账号页添加": "이 범위의 제공자에 아직 계정이 없습니다. 계정 페이지에서 추가하세요.", "当前视图没有活跃会话粘滞": "현재 보기에 활성 세션 바인딩이 없습니다", "当前视图没有路由回放记录": "현재 보기에 라우팅 재생 기록이 없습니다", "当前视图的请求入口": "현재 보기의 요청 진입점", "当前请求": "처리 중 요청", "当前路由位置": "현재 라우팅 위치", "当前路由内的视觉模型": "현재 라우트의 비전 모델", "当前配置": "현재 설정", "当前配置已排除": "현재 설정에서 제외됨", "当时": "요청 당시", "当时可用,当前请求尚未轮到这个账号": "당시 사용 가능했으나 현재 요청에서 아직 이 계정의 차례가 되지 않았습니다", "当时可选的账号 · {n}": "당시 선택 가능한 계정 · {n}", "当时状态": "당시 상태", "当时的候选说明": "당시 후보 설명", "当时的成员模型": "요청 당시 멤버 모델", "当时的选路原因未记录": "당시 라우팅 선택 이유가 기록되지 않았습니다", "当时被候选过滤规则跳过": "당시 후보 필터 규칙에 의해 건너뛰었습니다", "当时配置": "요청 당시 설정", "当时配置与当前配置": "당시 설정과 현재 설정", "影响继承全局的模型": "전역 설정을 상속하는 모델에 적용", "怎么选账号": "계정 선택 방식", "思考等级 {value}": "추론 수준 {value}", "总耗时": "총 소요 시간", "总计 {n} tokens": "총 {n} 토큰", "恢复": "복원", "恢复全局继承": "전역 설정 상속 복원", "恢复按账号页面的全局优先级选路,解除全局视图的提供商和账号范围限制。模型独立配置不会改变。": "계정 페이지의 전역 우선순위에 따른 라우팅을 복원하고 전역 보기의 공급자 및 계정 범위 제한을 해제합니다. 모델별 독립 설정은 변경되지 않습니다.", "恢复提供商": "공급자 복원", "恢复路由提供商": "라우팅 공급자 복원", "恢复阈值": "복구 임계값", "恢复默认路由": "기본 라우팅 복원", "成功承载": "처리 성공", "成员内轮询": "구성원 내 순환", "成员模型": "구성 모델", "所有可用提供商自动参与,新增账号或插件后无需再加路由;明确停用的保持不变。": "사용 가능한 모든 제공자가 자동으로 참여합니다. 계정이나 플러그인을 추가해도 라우트를 더할 필요가 없습니다(명시적으로 끈 항목은 유지).", "所有可用提供商自动参与,新增账号或插件后无需再添加路由。已停用的提供商和已排除的账号保持不变。": "사용 가능한 모든 공급자가 자동으로 참여합니다. 계정이나 플러그인을 추가한 후 별도로 라우팅을 추가할 필요가 없습니다. 비활성 공급자와 제외된 계정은 그대로 유지됩니다.", "所有可用提供商都已在当前路由中": "사용 가능한 모든 공급자가 현재 라우팅에 추가되어 있습니다", "所有模型共用": "모든 모델이 공유", "所有模型共用路由策略与保护设置;全局顺序和消耗规则与账号页联动,模型独立配置可明确覆盖顺序。": "모든 모델이 라우팅 전략과 보호 설정을 공유합니다. 전역 순서와 소비 규칙은 계정 페이지와 연동되며 모델 독립 설정으로 순서를 명시적으로 재정의할 수 있습니다.", "打开完整请求详情": "전체 요청 상세 열기", "打开该模型配置": "이 모델 설정 열기", "执行耗时": "실행 시간", "执行记录": "실행 기록", "执行路径": "실행 경로", "执行路径按当时快照保留": "실행 경로는 당시 스냅샷 유지", "批量禁用账号": "계정 일괄 비활성화", "承载账号": "처리 계정", "把不同提供商、不同模型组合成一个入口。客户端使用对外模型 ID 发起请求。": "다양한 공급자와 모델을 하나의 진입점으로 묶습니다. 클라이언트는 공개 모델 ID로 요청합니다.", "把全局配置复制成这个模型的独立配置": "전역 설정을 이 모델 전용 설정으로 복사", "拖动卡片改顺位,勾选决定参与;这里的位置就是实际选路顺序。": "카드를 끌어 순서를 바꾸고 체크로 참여를 정합니다. 여기 순서가 실제 라우팅 순서입니다.", "拖动或按 Alt + 方向键调整顺序": "끌거나 Alt + 방향키로 순서 변경", "拖动把手或按 Alt + 方向键调整顺序,更多操作在右侧菜单。": "손잡이를 끌거나 Alt + 방향키로 순서를 바꾸세요. 추가 작업은 오른쪽 메뉴에 있습니다.", "拖动把手调整顺序,也可以使用右侧上下按钮。": "손잡이를 끌거나 오른쪽 위아래 버튼으로 순서를 변경하세요.", "拖动提供商与账号调整顺序,修改即时保存。": "공급자와 계정을 드래그하여 순서를 변경하세요. 변경 사항은 즉시 저장됩니다.", "拖动改顺位、勾选决定参与;这里的位置就是实际选路顺序。": "끌어서 순서를 바꾸고 체크로 참여를 정합니다. 여기 순서가 실제 라우팅 순서입니다.", "拖动调整提供商顺序": "드래그하여 공급자 순서 변경", "拖动调整账号顺序": "드래그하여 계정 순서 변경", "按客户端类型聚合": "클라이언트 유형별 집계", "按已保存配置": "저장된 설정 기준", "按当前草稿预演,不发送请求,不消耗额度。": "현재 초안을 미리 봅니다. 요청을 보내거나 할당량을 사용하지 않습니다.", "按当前视图的顺序参与选路": "현재 보기의 순서로 라우팅에 참여", "按此范围查看配置": "이 범위 설정 열기", "按步骤回放,不重新发送请求": "요청을 다시 보내지 않고 단계별로 재생합니다", "按请求开始时的顺位": "요청 시작 시점의 순위", "按请求模型选择": "요청 모델에 따라 선택", "按路径聚合,会话在列表中展开,不在画布逐条连线。": "경로별로 집계합니다. 세션은 목록에 표시하며 캔버스에 개별 선을 그리지 않습니다.", "排除": "제외됨", "提供商与账号": "공급자 및 계정", "提供商保持优先顺序,同一提供商的账号轮流承接。": "공급자의 우선순위를 유지하며 같은 공급자 내 계정을 순환합니다.", "提供商参与": "제공자 참여", "提供商参与方式": "공급자 참여 방식", "提供商参与方式改为{value}": "제공자 참여 방식을 {value}(으)로 변경", "提供商参与范围": "공급자 참여 범위", "提供商未参与": "제공자 미참여", "提供商未记录": "공급자 미기록", "提供商范围": "공급자 범위", "提供商路由设置": "공급자 라우팅 설정", "搜索会话或账号": "세션 또는 계정 검색", "搜索客户端、模型或账号": "클라이언트, 모델 또는 계정 검색", "搜索提供商或模型": "공급자 또는 모델 검색", "搜索提供商或账号": "공급자 또는 계정 검색", "搜索本页会话或账号": "현재 페이지의 세션 또는 계정 검색", "搜索模型": "모델 검색", "搜索模型、账号或会话来源": "모델, 계정 또는 세션 출처 검색", "搜索模型或请求 ID": "모델 또는 요청 ID 검색", "搜索请求、模型或账号": "요청, 모델 또는 계정 검색", "搜索路由配置": "라우팅 설정 검색", "撤销修改": "변경 취소", "撤销草稿": "초안 취소", "收起其他候选": "다른 후보 접기", "改为独立配置": "독립 설정으로 변경", "改为自动参与": "자동 참여로 전환", "改用": "변경 대상", "放到第 {n} 位": "{n}번째 위치에 놓기", "放大画布": "확대", "整次请求改交": "요청 전체를 다음에 넘김", "文本对话": "텍스트 대화", "新增可用提供商会自动参与;这里只需恢复曾明确停用的提供商。": "새로 추가된 사용 가능한 공급자는 자동으로 참여합니다. 여기서는 명시적으로 비활성화한 공급자만 복원하면 됩니다.", "新增提供商自动参与;移出本路由的不会自动加回。": "새 공급자는 자동 참여합니다. 이 경로에서 제외한 공급자는 자동으로 다시 추가되지 않습니다.", "新增模型": "모델 추가", "新增模型独立路由": "모델 독립 라우팅 추가", "新增模型独立配置": "모델 전용 설정 추가", "新增路由配置": "라우팅 설정 추가", "新建路由组": "새 경로 그룹", "新配置 · 保存后生效": "새 설정 · 저장 후 적용", "无可用账号": "사용 가능한 계정 없음", "无有效绑定": "유효한 바인딩 없음", "时间相对请求开始;历史只读,修改当前配置不会改变这条记录。": "시간은 요청 시작 기준입니다. 기록은 읽기 전용이며 현재 설정을 변경해도 이 기록은 바뀌지 않습니다.", "时间相对请求开始;未记录的旧数据不补算。历史只读,修改当前配置不会改变这条记录。": "시간은 요청 시작 기준입니다. 기록되지 않은 예전 데이터는 보정하지 않습니다. 기록은 읽기 전용이며 현재 설정을 바꿔도 이 기록은 바뀌지 않습니다.", "时间相对请求开始;未记录的旧数据不补算。响应到达不等于流式请求结束。": "시간은 요청 시작 기준입니다. 기록되지 않은 과거 데이터는 추정하지 않습니다. 응답 도착이 스트리밍 요청 종료를 의미하지는 않습니다.", "是": "예", "显示全部": "전체 표시", "显示其他候选": "다른 후보 표시", "显示无账号 ({n})": "계정 없는 항목 표시 ({n})", "暂停": "일시 정지", "暂无可用账号": "사용 가능한 계정 없음", "曾被限流的账号暂时排到队尾,三十分钟后或转发成功后恢复。": "요청 제한을 받은 계정은 일시적으로 대기열 끝으로 이동하며, 30분 후 또는 전달 성공 후 복원됩니다.", "最早到期的剩余积分包:{time}": "잔액이 있는 크레딧 팩 중 가장 빠른 만료 시간: {time}", "最终承载": "최종 처리 계정", "最终由 {account} 承接": "최종적으로 {account} 처리", "最近 {n} 分钟": "최근 {n}분", "最近 {n} 条": "최근 {n}건", "最近使用:{time}": "최근 사용: {time}", "最近完成": "최근 완료", "最近没有命中记录": "최근 해당 기록 없음", "最近请求已完成": "최근 요청 완료", "有在途": "처리 중 있음", "有未保存修改,预演仍按已保存配置。": "저장하지 않은 변경이 있습니다. 미리보기는 저장된 설정을 사용합니다.", "有未保存的修改": "저장되지 않은 변경 사항이 있습니다", "未保存完整尝试明细,仅显示请求记录中的承载信息。": "전체 시도 내역이 저장되지 않았습니다. 요청 기록에 있는 처리 정보만 표시합니다.", "未保存草稿": "저장되지 않은 초안", "未切换": "전환 없음", "未参与": "참여 안 함", "未参与提供商 · {n}": "참여하지 않는 공급자 · {n}", "未参与提供商默认收起;选中历史路径时仍会显示。": "참여하지 않는 공급자는 기본적으로 접혀 있지만 관련 과거 경로를 선택하면 표시됩니다.", "未参与本范围": "이 범위에 미참여", "未参与本路由": "이 경로에 미참여", "未发生切换": "전환 없음", "未记录上游调用": "업스트림 호출 미기록", "未识别客户端": "미식별 클라이언트", "未调用": "호출 안 함", "未调用不画请求线;模型限流与当前配置分别展示。": "호출되지 않은 요청 선은 그리지 않습니다. 모델 요청 제한과 현재 설정은 별도로 표시합니다.", "未调用的候选": "호출하지 않은 후보", "未轮到": "차례가 오지 않음", "未选择客户端": "클라이언트 미선택", "未选择模型": "모델 미선택", "未配置模型的默认路由": "미설정 모델의 기본 라우팅", "本地网关": "로컬 게이트웨이", "本次尝试失败": "이번 시도 실패", "本次执行": "이번 실행", "本次状态": "이번 요청 상태", "本次用时": "시도 시간", "本次结果": "요청 결과", "本次耗时": "이번 소요 시간", "本次请求": "이번 요청", "本次请求已完成": "이번 요청 완료", "本窗口未调用": "이 시간 범위에서 호출되지 않음", "本轮选路预演": "현재 라우팅 미리보기", "来源未记录": "출처 기록 없음", "查看上游错误": "업스트림 오류 보기", "查看上游错误摘要": "업스트림 오류 요약 보기", "查看其他 {n} 个候选": "다른 후보 {n}개 보기", "查看实际请求的选路、尝试与结果": "실제 요청의 라우팅, 시도 및 결과 보기", "查看当前配置": "현재 설정 보기", "查看最后一次尝试": "마지막 시도 보기", "查看详情内容": "상세 내용 선택", "查看配置": "설정 보기", "查看配置详情": "설정 상세 보기", "标题生成": "제목 생성", "标题生成路由入口尚未就绪,请刷新页面后重试": "제목 생성 라우팅 진입점이 아직 준비되지 않았습니다. 페이지를 새로 고친 후 다시 시도하세요.", "检测到旧版全局参与设置,请先确认转换,再管理账号启停。": "이전 버전의 전역 참여 설정이 있습니다. 먼저 변환을 확인한 후 계정 활성 상태를 관리하세요.", "模型、网关、提供商与账号的可视化选路": "모델, 게이트웨이, 공급자 및 계정의 시각적 라우팅", "模型未记录": "모델 미기록", "模型独立路由": "모델별 독립 경로", "模型独立配置": "모델 독립 설정", "模型看不了图片时,按下面的规则交给视觉模型;没配到的模型、以及本来就能看图的,一律原样放行。": "모델이 이미지를 볼 수 없을 때 아래 규칙에 따라 비전 모델에 넘깁니다. 여기 설정하지 않은 모델과 원래 이미지를 볼 수 있는 모델은 그대로 통과합니다.", "模型绑定不可用": "모델 연결 사용 불가", "模型路由": "모델 라우팅", "模拟首选失败": "첫 후보 실패 시뮬레이션", "正在处理": "처리 중", "正在由 {account} 处理": "{account}에서 처리 중", "正在编辑": "편집 중", "正在读取会话绑定…": "세션 바인딩을 불러오는 중…", "正在读取当前配置": "현재 설정을 불러오는 중", "正在读取路由…": "라우팅을 불러오는 중…", "正在选路,尚未记录上游尝试": "라우팅 중이며 아직 업스트림 시도가 기록되지 않았습니다", "正在预览 {model}": "{model} 미리보기 중", "此为配置顺位,当前没有可用候选账号。": "설정된 우선순위입니다. 현재 사용 가능한 후보 계정이 없습니다.", "此入口没有参与路由的提供商,保存后请求将明确失败。": "이 진입점에는 참여 공급자가 없습니다. 저장 후 요청은 명시적으로 실패합니다.", "此入口没有参与路由的账号。保存后请求将明确失败,不会回退全局或自动恢复参与名单。": "이 진입점에는 참여 계정이 없습니다. 저장 후 요청은 명시적으로 실패하며 전역 경로로 대체하거나 참여 목록을 자동 복원하지 않습니다.", "此刻队列": "현재 큐", "此提供商当前没有可用的模型绑定,配置已保留;在模型管理中恢复绑定后会自动回来。": "이 공급자에는 현재 사용 가능한 모델 연결이 없습니다. 설정은 유지되며 모델 관리에서 연결을 복원하면 자동으로 다시 표시됩니다.", "此模型限流": "이 모델 요청 제한 중", "每轮重新选路,不保留跨请求的账号绑定。": "매 턴마다 라우팅을 다시 선택하며 요청 간 계정 바인딩은 유지하지 않습니다.", "没有保存其他候选信息": "다른 후보 정보가 저장되지 않았습니다", "没有保存调用明细": "저장된 호출 내역이 없습니다", "没有其他候选账号": "다른 후보 계정이 없습니다", "没有匹配的会话": "일치하는 세션이 없습니다", "没有匹配的候选": "일치하는 후보가 없습니다", "没有匹配的提供商或账号": "일치하는 공급자나 계정이 없습니다", "没有匹配的记录": "일치하는 기록이 없음", "没有匹配的请求": "일치하는 요청이 없습니다", "没有匹配的路由配置": "일치하는 라우팅 설정이 없습니다", "没有参与路由的账号": "라우팅 참여 계정이 없습니다", "没有可添加的模型": "추가할 수 있는 모델이 없습니다", "没有可用提供商,请先添加账号或安装插件。": "사용 가능한 공급자가 없습니다. 먼저 계정을 추가하거나 플러그인을 설치하세요.", "没有可用模型": "사용 가능한 모델이 없습니다", "没有可用账号": "사용 가능한 계정이 없습니다", "没有可选的对话模型,请先启用模型和对应账号。": "선택할 수 있는 대화 모델이 없습니다. 먼저 모델과 해당 계정을 활성화하세요.", "没有独立配置的模型沿用全局路由。": "독립 설정이 없는 모델은 전역 라우팅을 사용합니다.", "没有请求也能配置路由": "요청이 없어도 라우팅 설정 가능", "没有跳过": "건너뛴 항목 없음", "没有需要恢复的提供商": "복원할 공급자가 없습니다", "沿用工具服务的视觉模型": "도구 서비스 비전 모델 사용", "流动:有请求在途": "움직임: 처리 중 요청 있음", "消耗规则": "소비 규칙", "消耗规则已保存,但路由列表刷新失败:{error}": "소비 규칙은 저장되었지만 라우팅 목록을 새로 고치지 못했습니다: {error}", "添加到全局路由,新请求将按这里的顺序选择账号。": "전역 라우팅에 추가합니다. 새 요청은 여기서 설정한 순서대로 계정을 선택합니다.", "添加到固定参与名单;以后新增的提供商仍需手动加入。": "고정 참여 목록에 추가합니다. 이후 새 공급자도 수동으로 추가해야 합니다.", "添加参与模型": "참여 모델 추가", "添加规则": "규칙 추가", "添加路由提供商": "라우팅 공급자 추가", "清空选择": "선택 해제", "清除会话粘滞": "세션 바인딩 해제", "灰线:历史流量": "회색: 과거 트래픽", "点击查看这次尝试的结果与原因": "클릭하여 이번 시도의 결과와 이유 보기", "点击节点查看请求,点击齿轮编辑路由配置。": "노드를 클릭하면 요청을 보고 톱니바퀴를 클릭하면 라우팅을 설정합니다.", "点击节点筛选,点击齿轮进入配置": "노드를 클릭해 필터, 톱니바퀴로 설정", "点击节点,切换到对应请求详情": "노드를 클릭하여 해당 요청 상세로 전환", "点客户端看它用过的模型": "클라이언트를 클릭하면 사용 모델 표시", "点模型看它的请求": "모델을 클릭하면 요청 표시", "点节点筛选,再点一次取消;点齿轮进入配置": "노드를 클릭해 필터, 다시 클릭하면 해제. 톱니바퀴는 설정", "熔断保护": "회로 차단기", "特殊请求路由": "특수 요청 라우팅", "特殊请求路由 · 只改写模型,不改选账号规则": "특수 요청 라우팅 · 모델만 다시 쓰고 계정 선택 규칙은 변경하지 않습니다", "独立": "독립", "独立账号顺序": "독립 계정 순서", "独立路由": "독립 라우팅", "独立路由的账号顺序不受全局消耗规则影响": "독립 경로의 계정 순서는 전역 소비 규칙의 영향을 받지 않습니다", "独立配置": "독립 설정", "画布位置不改变选路优先级": "캔버스 위치는 라우팅 우선순위를 바꾸지 않습니다", "真实请求还会考虑当时的会话绑定、并发与限额状态。": "실제 요청은 당시의 세션 바인딩, 동시 요청 및 할당량 상태도 고려합니다.", "确定删除「{model}」的独立路由配置?删除后该模型将使用全局路由。不会删除模型、账号或请求记录。": "“{model}”의 독립 라우팅 설정을 삭제하시겠습니까? 삭제 후 이 모델은 전역 라우팅을 사용합니다. 모델, 계정 및 요청 기록은 삭제하지 않습니다.", "确认转换": "변환 확인", "禁用全部账号": "모든 계정 비활성화", "禁用当前列表账号": "현재 목록의 계정 비활성화", "禁用账号": "계정 비활성화", "积分到期:暂无数据": "크레딧 만료: 데이터 없음", "积分:{time}": "크레딧: {time}", "移出": "제거됨", "移出本路由": "이 경로에서 제외", "移除此模型的独立路由配置,之后重新继承全局路由。不会删除模型、账号或请求记录。": "이 모델의 독립 라우팅 설정을 제거하고 전역 라우팅을 다시 상속합니다. 모델, 계정 및 요청 기록은 삭제하지 않습니다.", "移除路由提供商": "라우팅 공급자 제거", "窗口内无请求": "기간 내 요청 없음", "第 {n} 位": "{n}번째", "第 {n} 次尝试 · {name}": "{n}번째 시도 · {name}", "第 {n} 顺位": "우선순위 {n}", "等待回放": "재생 대기", "等待首帧": "첫 바이트 대기", "策略": "전략", "筛选模型": "모델별 필터", "粘性命中": "바인딩 적중", "粘性:{mode}": "세션 고정: {mode}", "粘滞": "세션 고정", "粘滞 {mode}": "고정 {mode}", "粘滞命中": "바인딩 적중", "粘滞标记": "바인딩 표시", "组名": "그룹 이름", "组名方便识别,对外模型 ID 给客户端使用。": "그룹 이름은 식별용이며 클라이언트는 공개 모델 ID를 사용합니다.", "经过 {n} 次切换后成功,最终承载:{account}": "{n}회 전환 후 성공했습니다. 최종 처리 계정: {account}", "绑定:{account}": "바인딩: {account}", "结束时间": "종료 시간", "结果未记录": "결과 미기록", "统一路由设置": "공통 라우팅 설정", "统一路由设置已保存": "공통 라우팅 설정이 저장되었습니다", "继承": "상속", "继承全局": "전역 설정 상속", "继承全局配置": "전역 설정 상속", "继承全局:{value}": "전역 상속: {value}", "继承时不能改这里的值;切到独立配置后才会写入这个模型。": "상속 중에는 값을 바꿀 수 없습니다. 독립 설정으로 바꾸면 이 모델에 저장됩니다.", "编辑全局默认": "전역 기본값 편집", "编辑范围": "편집 범위", "编辑规则": "규칙 편집", "编辑路由组": "경로 그룹 편집", "缩小画布": "축소", "网关继续尝试下一个账号": "게이트웨이가 다음 계정을 시도합니다", "耗时未记录": "소요 시간 미기록", "自动参与": "자동 참여", "自动参与模式下将明确停用此提供商,之后新增账号也不会自动恢复;不会删除提供商或账号。": "자동 참여 모드에서 이 공급자를 명시적으로 비활성화합니다. 이후 계정을 추가해도 자동으로 복원되지 않습니다. 공급자나 계정은 삭제하지 않습니다.", "自动参与(推荐)": "자동 참여(권장)", "自动消耗排序已启用,请先关闭规则再手动调整": "자동 소비 정렬이 켜져 있습니다. 수동으로 순서를 바꾸려면 먼저 규칙을 끄세요", "自动:空闲五分钟释放;会话内:空闲六小时释放;每轮或关闭:不保留跨请求绑定。": "자동: 5분 유휴 후 해제. 세션 내: 6시간 유휴 후 해제. 매 턴 또는 끄기: 요청 간 바인딩 없음.", "自动:空闲五分钟释放;会话内:空闲六小时;每轮或关闭:不跨请求绑定。": "자동: 5분 유휴 시 해제, 세션 내: 6시간 유휴까지, 매 턴 또는 끔: 요청 간 바인딩 없음.", "自定义路由组": "사용자 지정 경로 그룹", "草稿预演": "초안 미리보기", "被跳过": "건너뜀", "被跳过的账号": "건너뛴 계정", "规则": "규칙", "规则全局生效,不受原路由池限制;指定模型按自己的路由选账号,网关 Key 权限仍然生效。": "규칙은 전역으로 적용되며 원래 라우팅 풀에 제한되지 않습니다. 지정한 모델의 자체 라우팅으로 계정을 선택하며, 게이트웨이 키 권한은 계속 적용됩니다.", "规则最多 {n} 条。": "규칙은 최대 {n}개입니다.", "视频输入": "동영상 입력", "解除": "해제", "解除全局路由的参与范围限制,继续使用与账号页共用的手动顺序和自动消耗规则;模型独立配置保持不变。": "전역 라우팅 참여 범위 제한을 해제하되 계정 페이지와 공유하는 수동 순서와 자동 소비 규칙은 유지합니다. 모델 독립 설정은 변경되지 않습니다.", "解除全部粘滞": "모든 바인딩 해제", "解除只清除网关的账号绑定,不删除聊天历史、不关闭粘性设置。后续成功请求仍可建立新的绑定;重启网关会清空这些进程本地记录。": "해제는 게이트웨이의 계정 바인딩만 지웁니다. 채팅 기록을 삭제하거나 세션 고정을 끄지 않습니다. 이후 성공한 요청은 새 바인딩을 만들 수 있으며, 게이트웨이를 다시 시작하면 이 프로세스 내 기록이 지워집니다.", "解除当前模型全部粘滞": "현재 모델의 모든 바인딩 해제", "解除所有模型的全部会话粘滞。不会终止在途请求,之后的请求会重新选路。": "모든 모델의 세션 바인딩을 해제합니다. 처리 중 요청은 종료하지 않으며 이후 요청은 라우팅을 다시 선택합니다.", "解除这个模型的全部会话粘滞。不会终止在途请求,之后的请求会重新选路。": "이 모델의 모든 세션 바인딩을 해제합니다. 처리 중 요청은 종료하지 않으며 이후 요청은 라우팅을 다시 선택합니다.", "解除这条会话": "이 세션 해제", "触发客户端": "트리거 클라이언트", "计算中…": "계산 중…", "记录所有经过网关的请求,不要求绑定客户端。": "클라이언트 바인딩 없이 게이트웨이를 통과하는 모든 요청을 기록합니다.", "记录时间": "기록 시각", "设置参与范围": "참여 범위 설정", "识别客户端": "인식할 클라이언트", "该提供商在当前视图中已停用": "이 공급자는 현재 보기에서 비활성화되어 있습니다", "该提供商没有账号,请先到账号页添加。": "이 공급자에 계정이 없습니다. 먼저 계정 페이지에서 추가하세요.", "请填写组名和对外模型 ID": "그룹 이름과 공개 모델 ID를 입력하세요", "请检查熔断参数:失败阈值 1~20,时长 10~600 秒,恢复阈值 1~10。": "회로 차단기 설정을 확인하세요. 실패 임계값은 1~20, 시간은 10~600초, 복구 임계값은 1~10입니다.", "请求": "요청", "请求 ID 未记录": "요청 ID 미기록", "请求仍在处理中,当前阶段:{phase}": "요청이 아직 처리 중입니다. 현재 단계: {phase}", "请求仍在进行": "요청 처리 중", "请求会去哪里": "요청이 어디로 가나요?", "请求回放": "요청 재생", "请求在途": "요청 처리 중", "请求完成不代表会话关闭;粘滞有效期不是在线状态。": "요청 완료가 세션 종료를 의미하지는 않습니다. 바인딩 유효 기간은 온라인 상태가 아닙니다.", "请求已取消": "요청이 취소되었습니다", "请求当时的配置": "요청 당시 설정", "请求成功完成,未发生账号切换": "계정 전환 없이 요청을 성공적으로 완료했습니다", "请求成功完成,未记录承载账号": "요청은 성공했지만 처리한 계정은 기록되지 않았습니다", "请求执行": "요청 실행", "请求执行回放": "요청 실행 재생", "请求日志 →": "요청 로그 →", "请求未成功完成": "요청이 성공적으로 완료되지 않았습니다", "请求模型": "요청 모델", "请求活动范围": "요청 활동 범위", "请求状态": "요청 상태", "请求结论": "요청 결과", "请求范围": "요청 범위", "请求记录数据库不可用": "요청 기록 데이터베이스를 사용할 수 없습니다", "请求跟踪": "요청 추적", "请求跟踪内容": "요청 추적 내용", "请求进入": "요청 수신", "请求进入网关": "요청이 게이트웨이에 도착", "请求需要": "요청 요구사항", "请选择模型": "모델을 선택하세요", "读取中…": "불러오는 중…", "谁参与及先后顺序": "참여 대상과 우선순위", "调整全局消耗规则": "전역 소비 규칙 변경", "调整到期时间、可用余额及其他消耗规则的优先级": "만료 시간, 사용 가능 잔액 및 기타 소모 규칙의 우선순위 조정", "调整后续请求的配置": "이후 요청 설정 변경", "调整模型顺序": "모델 순서 변경", "调整积分到期远近及其他消耗规则": "크레딧 만료 순서 및 기타 소비 규칙 조정", "调用示例": "호출 예시", "账号 {name} 已{state}": "계정 {name}: {state}", "账号全部禁用": "모든 계정 중지됨", "账号启停与账号页同步,立即影响所有路由;策略与排序需保存。": "계정 활성 상태는 계정 페이지와 동기화되어 모든 경로에 즉시 적용됩니다. 전략과 순서는 저장해야 합니다.", "账号启停与默认规则": "계정 활성 상태 및 기본 규칙", "账号启停操作": "계정 활성화·비활성화 작업", "账号启停立即生效;路由配置保存后生效": "계정 상태는 즉시 적용되며 라우팅 설정은 저장 후 적용됩니다", "账号启停部分完成:成功 {ok} 个,失败 {fail} 个,跳过 {skip} 个。{details}": "계정 상태가 일부 업데이트되었습니다. 성공 {ok}개, 실패 {fail}개, 건너뜀 {skip}개. {details}", "账号尝试": "계정 시도", "账号已禁用": "비활성 계정", "账号已移除": "삭제된 계정", "账号操作": "계정 작업", "账号未记录": "계정 미기록", "账号组": "계정 그룹", "账号组操作": "계정 그룹 작업", "账号设置与全局保护另行保存,不属于本页路由草稿。": "계정 설정과 전역 보호는 별도로 저장되며 이 라우팅 초안에 포함되지 않습니다.", "账号设置与所有路由共用,不改变当前路由的参与名单。": "계정 설정은 모든 경로에 공통으로 적용되며 현재 경로의 참여 목록은 변경하지 않습니다.", "账号路由设置": "계정 라우팅 설정", "起点是请求本身,不依赖客户端绑定。": "요청 자체가 시작점이며 클라이언트 바인딩에 의존하지 않습니다.", "跟随列表中的最新请求": "목록의 최신 요청을 따라가는 중", "跨模型组合": "교차 모델 조합", "路径": "경로", "路径过多,画布仅展示前 300 条;统计覆盖完整窗口,请筛选模型缩小范围。": "경로가 많아 캔버스에는 처음 300개만 표시합니다. 통계는 전체 시간 범위를 포함합니다. 모델로 범위를 좁히세요.", "路由入口": "경로 진입점", "路由参与操作": "경로 참여 작업", "路由工作台": "라우팅 작업 공간", "路由工作台不可用": "라우팅 작업 공간을 사용할 수 없습니다", "路由快照未记录": "라우팅 스냅샷 미기록", "路由成员操作": "경로 구성원 작업", "路由接口不可用,请确认网关与界面已更新": "라우팅 API를 사용할 수 없습니다. 게이트웨이와 화면이 모두 업데이트되었는지 확인하세요.", "路由接口返回了不完整的数据": "라우팅 API가 불완전한 데이터를 반환했습니다", "路由数据正在更新,请稍后重试": "라우팅 데이터를 업데이트하는 중입니다. 잠시 후 다시 시도하세요.", "路由模式": "라우팅 모드", "路由画布": "라우팅 캔버스", "路由策略改为{value}": "라우팅 정책을 {value}(으)로 변경", "路由类型": "경로 유형", "路由组": "경로 그룹", "路由组已删除": "라우팅 그룹이 삭제됨", "路由视图": "라우팅 보기", "路由设置": "라우팅 설정", "路由配置": "라우팅 설정", "路由配置列表": "라우팅 설정 목록", "路由配置尚未读取": "라우팅 설정을 아직 불러오지 않았습니다", "路由配置已保存": "라우팅 설정이 저장되었습니다", "路由配置已保存,仅影响后续选路": "라우팅 설정이 저장되었으며 이후 라우팅에만 적용됩니다", "路由配置操作": "라우팅 설정 작업", "路由配置版本不可用,请更新网关后重试": "설정 버전을 사용할 수 없습니다. 게이트웨이를 업데이트한 후 다시 시도하세요.", "跳过候选": "건너뛴 후보", "转发前就失败、或旧记录未落库时,只能看到请求本身与配置快照。": "전달 전에 실패했거나 예전 기록이 저장되지 않았다면 요청 자체와 설정 스냅샷만 볼 수 있습니다.", "转发失败的账号暂时休息,避免连续请求反复撞到同一故障。": "전달에 실패한 계정을 일시적으로 쉬게 하여 같은 장애에 연속으로 요청하는 것을 방지합니다.", "转换只处理当前账号;之后新增账号按账号页的启用状态使用。不会启用任何已禁用的账号。": "기존 계정만 변환합니다. 이후 추가되는 계정은 계정 페이지의 활성 상태를 따릅니다. 비활성 계정은 활성화하지 않습니다.", "转换旧版全局参与设置": "이전 전역 참여 설정 변환", "转换旧版设置": "이전 설정 변환", "转换结果未确认,请重新读取全局配置": "변환 결과를 확인할 수 없습니다. 전역 설정을 다시 읽으세요.", "输出 {n} tokens": "출력 {n} tokens", "过程提示": "과정 안내", "运行视图": "실행 뷰", "近期 {n} 次请求": "최근 요청 {n}개", "返回全部流向": "전체 흐름으로 돌아가기", "返回列表": "목록으로 돌아가기", "返回实时": "실시간으로 돌아가기", "返回画布": "캔버스로 돌아가기", "还有 {n} 处": "{n}개 더", "还没有参与模型": "아직 참여 모델이 없습니다", "还没有参与路由的提供商": "아직 라우팅에 참여하는 공급자가 없습니다", "还没有可用模型,先在账号页添加账号": "아직 사용 가능한 모델이 없습니다. 먼저 계정 페이지에서 계정을 추가하세요.", "还没有可用的模型,请先启用模型和对应账号。": "사용할 수 있는 모델이 없습니다. 먼저 모델과 해당 계정을 활성화하세요.", "还没有规则。压缩请求会按原模型照常转发。": "규칙이 아직 없습니다. 압축 요청은 원본 모델로 그대로 전달됩니다.", "还没有规则。图片会照常交给原模型,看不了的就会报错。": "규칙이 아직 없습니다. 이미지는 원본 모델로 그대로 전달되며, 볼 수 없는 경우 오류가 납니다.", "还没有规则。标题请求会照常交给原模型。": "규칙이 아직 없습니다. 제목 요청은 원본 모델로 그대로 전달됩니다.", "还没有账号,先在账号页添加;有账号的提供商才会出现在这里": "아직 계정이 없습니다. 계정 페이지에서 추가하세요. 계정이 있는 제공자만 여기에 표시됩니다.", "还没选压缩模型": "압축 모델 미선택", "还没选原模型": "원본 모델 미선택", "还没选标题模型": "제목 모델 미선택", "还没选视觉模型": "비전 모델 미선택", "这一页改的只作用于当前范围": "이 페이지의 변경은 이 범위에만 적용됩니다", "这个范围内最近的请求。点一条看它当时是怎么选的账号。": "이 범위의 최근 요청입니다. 하나 열면 당시 계정 선택 과정을 볼 수 있습니다.", "这个范围怎么选账号": "이 범위의 계정 선택 방식", "这些设置由所有模型共用;提供商与账号的参与范围和顺序在各自视图中独立配置。": "이 설정은 모든 모델이 공유합니다. 공급자 및 계정의 참여 범위와 순서는 각 보기에서 독립적으로 설정합니다.", "这份记录来自实际请求,不使用当前账号队列重新推演。": "이 기록은 실제 요청에서 가져온 것으로 현재 계정 대기열을 사용한 재시뮬레이션이 아닙니다.", "这是请求当时保存的选路快照,修改当前路由不会改变这份记录。": "요청 당시 저장된 라우팅 스냅샷입니다. 현재 라우팅을 변경해도 이 기록은 바뀌지 않습니다.", "这条会话已解除或过期,不再有活跃绑定。": "이 세션은 해제되었거나 만료되어 활성 바인딩이 없습니다.", "这条规则只改写被识别为标题生成的小请求,普通对话不受影响。": "이 규칙은 제목 생성으로 인식된 작은 요청만 바꿉니다. 일반 대화에는 영향을 주지 않습니다.", "这条规则里的模型收到图片时按选定的方式处理;没被任何规则选中的模型一律原样放行。": "이 규칙의 모델에 이미지가 오면 선택한 방식으로 처리합니다. 어떤 규칙에도 선택되지 않은 모델은 그대로 통과합니다.", "这条请求使用的路由组已删除,当时的快照仍可查看": "이 요청에서 사용한 라우팅 그룹은 삭제되었지만 당시 스냅샷은 계속 볼 수 있습니다", "这条请求对应的会话当前仍绑定到「{account}」。": "이 요청의 세션은 현재 “{account}”에 바인딩되어 있습니다.", "这条请求没有保存上游尝试明细": "이 요청의 업스트림 시도 상세가 저장되지 않았습니다", "这条请求没有保存路由决策": "이 요청에는 저장된 라우팅 결정이 없습니다", "这条请求没有保存路由快照,仍可查看已有的请求和尝试信息。": "이 요청의 라우팅 스냅샷은 저장되지 않았지만 기존 요청 및 시도 정보는 볼 수 있습니다.", "这次尝试的结果": "이번 시도의 결과", "这里只决定是否参与本路由,不改变账号启用状态。": "이 경로의 참여 여부만 결정하며 계정 활성 상태는 변경하지 않습니다.", "这里的参与范围只影响当前视图;账号启停、并发和限制器属于账号本身,所有模型共用。": "여기의 참여 범위는 현재 보기에만 영향을 줍니다. 계정 활성화, 동시 처리 및 제한기는 계정 자체의 설정으로 모든 모델이 공유합니다.", "这里的顺序决定实际选路;画布只为查看请求调整位置。": "여기의 순서는 실제 라우팅에 적용되며 캔버스는 요청을 보기 쉽게 위치만 조정합니다.", "这里调整的是账号组的全局消耗规则;当前独立路由的账号顺序保持不变。": "여기서는 계정 그룹의 전역 소비 규칙을 조정합니다. 현재 독립 경로의 계정 순서는 유지됩니다.", "连线表示参与本路由": "연결선은 이 경로의 참여 관계를 나타냅니다", "连线表示账号组中有已启用账号": "연결선은 활성 계정이 있는 그룹을 나타냅니다", "连续失败达到阈值时暂时让位,恢复后再重新参与。": "연속 실패가 임계값에 도달하면 일시적으로 빠지고, 복구 후 다시 참여합니다.", "退避 {time}": "백오프 {time}", "选中": "선택됨", "选中流量详情": "선택한 트래픽 상세", "选中路径": "선택한 경로", "选择一个或多个客户端": "클라이언트를 하나 이상 선택", "选择一条请求查看执行过程": "요청을 선택하여 실행 과정 보기", "选择一条请求查看选路过程": "요청을 선택하여 라우팅 과정 보기", "选择作用范围后配置路由": "적용 범위를 선택하여 라우팅 설정", "选择左侧请求查看选路过程": "왼쪽 요청을 선택하면 라우팅 과정을 볼 수 있습니다.", "选择模型": "모델 선택", "选择请求模型后查看具体限流状态": "요청 모델을 선택하여 구체적인 요청 제한 상태 확인", "选择账号": "계정 선택", "选择路由入口": "경로 진입점 선택", "选择预览模型后查看队列": "미리보기 모델을 선택하면 큐를 볼 수 있습니다", "选路原因未记录": "라우팅 선택 이유가 기록되지 않았습니다", "选路情况": "라우팅 현황", "选路方式": "라우팅 방식", "选路预演": "라우팅 미리보기", "逐步回放": "단계별 재생", "配置作用范围": "설정 적용 범위", "配置第 {rank} 顺位;当前可用候选第 {effective} 顺位。": "설정 우선순위 {rank}, 현재 사용 가능한 후보 우선순위 {effective}입니다.", "配置范围": "설정 범위", "配置该模型": "이 모델 설정", "配置请求的参与范围与优先顺序": "요청의 라우팅 참여 범위와 우선순위 설정", "配置项": "설정 항목", "配置顺位 {n}": "설정 순위 {n}", "重新读取": "다시 읽기", "重新读取会丢弃当前范围的未保存草稿,其他范围的草稿保留。": "다시 읽으면 현재 범위의 저장되지 않은 초안을 버립니다. 다른 범위의 초안은 유지됩니다.", "重新读取配置": "설정 다시 읽기", "队列为无会话预演;实际粘性命中和重试顺延以回放为准。": "대기열은 세션 바인딩을 고려하지 않은 미리보기입니다. 실제 바인딩 적중과 재시도 전환은 재생 기록을 확인하세요.", "队首": "대기열 첫 번째", "阶段 {phase} · 已进行 {time}": "단계 {phase} · 경과 {time}", "限制器跳过": "제한기에 의해 건너뜀", "隐藏无账号 ({n})": "계정 없는 항목 숨기기 ({n})", "静止蓝线:选中历史路径": "정지된 파란 선: 선택한 과거 경로", "顺位": "순위", "顺序修改即时保存,仅作用于当前视图。": "순서 변경은 즉시 저장되며 현재 보기에만 적용됩니다.", "顺序调整不会解除限流;有效粘滞优先于普通账号顺序。": "순서 변경은 요청 제한을 해제하지 않습니다. 유효한 바인딩은 일반 계정 순서보다 우선합니다.", "预演首选": "미리보기 첫 후보", "预览模型": "미리보기 모델", "首帧": "첫 응답", "首帧 {time}": "첫 응답 {time}", "首帧耗时": "첫 프레임 소요 시간", "首帧:{time}": "첫 프레임: {time}", "首选账号": "우선 계정", "默认自动参与;新增可用提供商无需再添加路由,明确停用项保持不变。": "기본적으로 자동 참여합니다. 새로 추가된 사용 가능한 공급자는 별도 라우팅 추가가 필요 없으며 명시적으로 비활성화한 항목은 유지됩니다.", "默认规则": "기본 규칙", "默认路由": "기본 라우팅", "Agent 配置": "Agent 설정", "Claude Code 按 Opus / Sonnet / Haiku / 子 Agent 分档请求模型;这里把每档指向网关目录里的模型,留空表示不改写该档。": "Claude Code는 Opus / Sonnet / Haiku / 서브에이전트 등급별로 모델을 요청합니다. 여기서 각 등급을 게이트웨이 카탈로그의 모델로 지정하세요. 비워 두면 해당 항목은 수정하지 않습니다.", "Claude Code 支持多模型菜单和逐模型思考等级;上下文及输入能力由客户端识别,不把自动压缩阈值冒充上下文窗口。": "Claude Code는 여러 모델 메뉴와 모델별 추론 수준을 지원합니다. 컨텍스트와 입력 기능은 클라이언트가 인식하며, 자동 압축 기준을 컨텍스트 창으로 취급하지 않습니다.", "Claude Code 的 Opus / Sonnet / Haiku / 子 Agent 四档默认都指向上面选的模型;要让某一档用别的模型,在这里单独改。": "Claude Code의 Opus / Sonnet / Haiku / 서브에이전트 네 등급은 기본적으로 위에서 고른 모델을 가리킵니다. 특정 등급만 다른 모델로 쓰려면 여기서 변경하세요.", "Codex 的模型目录支持逐模型上下文、图片和思考档位,不提供可写的逐模型输出上限。": "Codex 모델 카탈로그는 모델별 컨텍스트, 이미지 입력 및 추론 수준을 지원하지만 모델별 출력 한도를 기록하는 설정은 없습니다.", "Crush 需要明确填写输出上限、图片与思考能力": "Crush는 출력 한도, 이미지 및 추론 지원을 명시해야 합니다", "DSH 配置目标": "DSH 설정 대상", "Kimi Code 只能追加能力声明,不能关闭内置识别的能力。输出上限仅新版 Anthropic 协议生效;旧版不写入思考档位。": "Kimi Code는 기능 선언을 추가할 수 있지만 내장된 기능 인식을 끌 수는 없습니다. 출력 한도는 신버전의 Anthropic 프로토콜에서만 적용되며, 구버전에는 추론 수준을 기록하지 않습니다.", "MCP 服务名称": "MCP 서버 이름", "Skill 目录名": "Skill 폴더 이름", "Token 上限必须是 1 到 1 亿之间的整数": "토큰 한도는 1에서 1억 사이의 정수여야 합니다", "Zed 的 API Key 仍需在客户端提供商设置中填写;本页不修改系统凭证。": "Zed의 제공자 설정에서 API Key를 입력해야 합니다. 이 페이지는 시스템 자격 증명을 변경하지 않습니다.", "{id}(不在网关目录)": "{id}(게이트웨이 카탈로그에 없음)", "· 走网关": "· 게이트웨이 경유", "一键把本机 AI 客户端接到本地网关:改写它自己的配置文件,保留其它设置": "로컬 AI 클라이언트를 로컬 게이트웨이에 연결합니다. 각 클라이언트의 설정 파일을 고쳐 쓰고 나머지 설정은 그대로 둡니다", "一键接入": "간편 연결", "一键设置": "일괄 설정", "上下文": "컨텍스트", "上次应用未完整结束,请先查看恢复预览。": "마지막 적용이 완료되지 않았습니다. 먼저 복원 미리보기를 확인하세요.", "上游模型 id,例如 raccoon-coder-pro": "업스트림 모델 ID (예: raccoon-coder-pro)", "下面是这个客户端文件里现有的配置(只读)。点「从客户端导入」把它收进我的配置,之后就能编辑和切换。": "아래는 이 클라이언트 설정 파일에 있는 기존 설정입니다 (읽기 전용). 「클라이언트에서 가져오기」를 누르면 내 설정으로 가져와 편집하고 전환할 수 있습니다.", "不写入": "기록 안 함", "不要添加 /v1/messages;客户端会自行追加请求路径。": "/v1/messages를 붙이지 마세요. 클라이언트가 요청 경로를 추가합니다.", "与客户端一致": "클라이언트와 일치", "个 · 已安装": "개 · 설치됨", "中转": "중계", "仅修改所选 MCP 条目,保留其它配置和注释;保存不会启动服务。": "선택한 MCP 항목만 변경하며 다른 설정과 주석은 유지합니다. 저장해도 서버는 시작되지 않습니다.", "仅可读取": "읽기 전용", "从客户端导入": "클라이언트에서 가져오기", "从网关目录选择": "게이트웨이 목록에서 선택", "从网关目录选择模型": "게이트웨이 목록에서 모델 선택", "会用最近一次备份覆盖它的配置文件。这一步不会改动你在本页存的配置列表。": "가장 최근 백업으로 설정 파일을 덮어씁니다. 이 페이지에 저장한 설정 목록은 변경되지 않습니다.", "低": "낮음", "使用中": "사용 중", "使用此配置": "이 설정 사용", "使用此配置时设为默认,其他模型仍可在客户端选择。": "이 설정을 사용하면 기본 모델로 지정됩니다. 다른 모델도 클라이언트에서 선택할 수 있습니다.", "使用真实模型 ID,不要填写模型展示名。": "표시 이름이 아닌 실제 모델 ID를 사용하세요.", "使用网关 Key": "게이트웨이 키 사용", "保存会直接修改客户端配置;确认前展示差异,写入前自动备份。": "저장하면 클라이언트 설정이 직접 변경됩니다. 확인 전에 차이를 표시하고 기록 전에 자동 백업합니다.", "保存修改": "변경 저장", "保存只记录方案,不修改客户端。应用时会另外展示文件差异并请求确认。": "저장은 프로필만 기록하고 클라이언트를 변경하지 않습니다. 적용 시 파일 차이를 보여 주고 별도로 확인을 요청합니다.", "保存后可在配置列表中切换,不影响当前使用的配置。": "저장 후 설정 목록에서 전환할 수 있습니다. 현재 사용 중인 설정에는 영향을 주지 않습니다.", "保存后同步更新客户端;写入前可查看改动,并自动备份。": "저장하면 클라이언트도 업데이트됩니다. 기록 전에 변경 사항을 확인할 수 있으며 자동으로 백업합니다.", "保存方案": "프로필 저장", "保存方案不会切换客户端;应用后改变实际默认模型。": "저장만으로 클라이언트가 전환되지 않습니다. 적용하면 실제 기본 모델이 변경됩니다.", "保存方案不会切换客户端;选择“应用并设为默认”才改变实际默认模型。": "저장만으로 클라이언트가 전환되지 않습니다. 실제 기본 모델을 변경하려면 ‘적용하고 기본으로 설정’을 선택하세요.", "保存时自动写入完整的 /chat/completions 路径。": "전체 /chat/completions 경로가 자동으로 기록됩니다.", "保存路径": "경로 저장", "保留导入的认证": "가져온 인증 유지", "保留现有认证": "기존 인증 유지", "修改后点击「使用此配置」才会更新客户端。": "편집 후 ‘이 설정 사용’을 선택해야 클라이언트가 업데이트됩니다.", "停用后将从客户端可选项中关闭此配置,其他配置不受影响。": "클라이언트 선택 목록에서 이 설정을 비활성화합니다. 다른 설정에는 영향을 주지 않습니다.", "停用配置": "설정 비활성화", "全选搜索结果": "검색 결과 모두 선택", "全部配置(全局覆盖)": "모든 프로필(전역 덮어쓰기)", "共": "합계", "关闭后丢弃本次修改,不会保存配置或改动客户端。": "닫으면 변경 사항을 버립니다. 설정을 저장하거나 클라이언트를 변경하지 않습니다.", "关闭后丢弃本次草稿,不会保存空方案,也不会修改客户端。": "닫으면 이 초안이 삭제됩니다. 빈 프로필이 저장되거나 클라이언트가 변경되지 않습니다.", "内容已经一致,无需写入": "내용이 이미 일치하여 기록할 필요가 없습니다", "写入中…": "쓰는 중…", "写入后需要重开会话才生效": "쓴 뒤에는 세션을 다시 열어야 적용됩니다", "写入失败:{reason}": "쓰기 실패: {reason}", "写入客户端": "클라이언트에 쓰기", "写入文件": "설정 파일", "写入预览": "쓰기 미리보기", "删除 MCP": "MCP 삭제", "删除 Skill": "Skill 삭제", "删除只移除 SKILL.md,辅助文件保留在原目录;不会执行其中的脚本。": "삭제 시 SKILL.md만 제거합니다. 보조 파일은 원래 폴더에 남으며 스크립트는 실행하지 않습니다.", "删除客户端配置": "클라이언트 설정 삭제", "删除已保存方案?": "저장된 프로필을 삭제할까요?", "删除新建文件": "새로 만든 파일 삭제", "删除方案": "프로필 삭제", "删除配置": "설정 삭제", "删除配置?": "설정을 삭제할까요?", "动态表达式、独立作用域或全局覆盖的 MCP 为只读,请在 DSH 中编辑。": "동적 표현식, 독립 범위 또는 전역 덮어쓰기가 있는 MCP는 읽기 전용입니다. DSH에서 편집하세요.", "单配置": "단일 설정", "另一项配置操作尚未完成": "다른 설정 작업이 아직 진행 중입니다", "只保存变量引用,不修改系统环境;请在启动客户端的环境里设置变量值。": "변수 참조만 저장하고 시스템 환경은 변경하지 않습니다. 클라이언트를 시작하는 환경에서 변수 값을 설정하세요.", "只删除 Agent2API 中的方案,不修改客户端当前配置。": "Agent2API의 프로필만 삭제합니다. 클라이언트의 현재 설정은 변경되지 않습니다.", "只改 enabled 与默认项,其余条目原样保留": "enabled 와 기본 항목만 바꾸고 나머지 항목은 그대로 둡니다", "只改属于我们的那几个键,其它设置原样保留": "저희 키만 바꾸고 나머지 설정은 그대로 둡니다", "可先新增配置,安装后再使用": "먼저 설정을 추가하고 설치 후 사용할 수 있습니다", "可同时启用多条;切换只改 enabled 与默认项": "여러 개를 동시에 켤 수 있습니다. 전환은 enabled 와 기본 항목만 바꿉니다", "可搜索并多选模型;上下文、输出上限和能力分别从网关目录自动填入。": "모델을 검색하고 여러 개 선택할 수 있습니다. 각 모델의 컨텍스트 크기, 출력 한도와 기능은 게이트웨이 목록에서 자동으로 입력됩니다.", "可选模型": "선택 가능한 모델", "同一时刻只有一套生效;写入 = 把这一套整段写进客户端文件": "한 번에 하나만 적용됩니다. 쓰기 = 이 설정을 클라이언트 파일에 통째로 기록합니다", "启用 {name}": "{name} 사용", "启用此配置": "이 설정 활성화", "启用配置": "설정 활성화", "图形化管理客户端原生配置;保存方案与应用配置分开。": "클라이언트 기본 설정을 화면에서 관리합니다. 프로필 저장과 설정 적용은 별개입니다.", "图片输入": "이미지 입력", "在客户端管理认证": "클라이언트에서 인증 관리", "填写服务根地址,不要附加 /v1beta 或 generateContent 路径。": "서비스 루트 주소를 입력하세요. /v1beta 또는 generateContent 경로를 붙이지 마세요.", "处理中…": "처리 중…", "备注": "메모", "多套配置": "여러 설정", "多配置 · 已启用 {n}": "다중 설정 · {n}개 사용 중", "子 Agent": "서브에이전트", "安装或初始化后可重新检测;自定义安装位置可指定配置路径。": "설치 또는 초기화 후 다시 감지할 수 있습니다. 사용자 지정 위치는 설정 경로를 지정하세요.", "完整配置文件路径": "설정 파일 전체 경로", "官方直连": "공식 직결", "客户端列表加载失败:{reason}": "클라이언트 목록을 불러오지 못했습니다: {reason}", "客户端列表响应无效": "클라이언트 목록 응답이 잘못되었습니다", "客户端协议": "클라이언트 프로토콜", "客户端原生 MCP 配置(JSON)": "클라이언트 기본 MCP 설정(JSON)", "客户端原生配置": "클라이언트 기본 설정", "客户端官方配置说明": "클라이언트 공식 설정 안내", "客户端实际配置": "클라이언트 실제 설정", "客户端必须实际使用同一个配置文件;本页不改变客户端启动参数。": "클라이언트가 실제로 같은 설정 파일을 사용해야 합니다. 이 페이지는 시작 인수를 변경하지 않습니다.", "客户端文件已有外部修改,自动恢复会拒绝覆盖。": "클라이언트 파일에 외부 변경이 있습니다. 자동 복원은 덮어쓰기를 거부합니다.", "客户端条目启用状态": "클라이언트 항목 활성화 상태", "客户端清单": "클라이언트 목록", "客户端管理分类": "클라이언트 관리 분류", "客户端自己的设置优先;这里写的是写入时带进去的初值": "클라이언트 자체 설정이 우선입니다. 여기 쓰는 값은 기록 시 넣는 초기값입니다", "客户端资源已保存并校验": "클라이언트 리소스를 저장하고 검증했습니다", "客户端选项": "클라이언트 옵션", "客户端配置写入后未通过校验": "기록 후 클라이언트 설정 검증에 실패했습니다", "客户端配置已经一致,无需写入": "클라이언트 설정이 이미 일치하여 기록할 필요가 없습니다", "客户端默认地址": "클라이언트 기본 주소", "密钥在 Agent2API 中加密保存;使用时按客户端要求写入。": "키는 Agent2API에 암호화하여 저장되며 사용 시 클라이언트가 요구하는 형식으로 기록됩니다.", "密钥已隐藏;绿色为新增,红色为删除。所有实际写入文件都列在这里。": "키는 숨겨집니다. 초록색은 추가, 빨간색은 삭제를 나타냅니다. 실제로 기록할 모든 파일이 여기에 표시됩니다.", "导入模型及客户端未知字段会保留;本页删除方案不会删除客户端条目。": "가져온 모델과 알 수 없는 클라이언트 필드는 유지됩니다. 여기서 프로필을 삭제해도 클라이언트 항목은 삭제되지 않습니다.", "将删除此配置及客户端中的对应条目,其他配置不受影响。": "이 설정과 해당 클라이언트 항목을 삭제합니다. 다른 설정에는 영향을 주지 않습니다.", "尚未初始化": "초기화되지 않음", "尚未支持这个客户端的资源管理": "이 클라이언트의 리소스 관리는 아직 지원하지 않습니다", "展开可调整能力;— 表示客户端未声明": "펼쳐서 능력을 조정할 수 있습니다. — 는 클라이언트가 선언하지 않음", "已保存": "저장됨", "已保存方案": "저장된 프로필", "已保存,未应用": "저장됨, 적용되지 않음", "已写入 {name}": "{name}에 기록했습니다", "已写入 {name};这个客户端只在启动时读配置,重开一个会话才生效": "{name}에 기록했습니다. 이 클라이언트는 시작할 때만 설정을 읽으므로 세션을 다시 열어야 적용됩니다", "已删除保存方案,客户端配置未改动": "저장된 프로필을 삭제했습니다. 클라이언트 설정은 변경되지 않았습니다", "已安装": "설치됨", "已导入 {n} 套方案": "프로필 {n}개를 가져왔습니다", "已按备份还原 {name}": "{name}을(를) 백업에서 복원했습니다", "已收进我的配置:{n} 条": "내 설정으로 가져왔습니다: {n}개", "已检测到": "감지됨", "已选择": "선택됨", "已选模型": "선택한 모델", "已配置": "설정됨", "已预填网关地址、协议、Key 与模型;确认后直接写入客户端,不需要先保存方案。": "게이트웨이 주소, 프로토콜, Key와 모델이 미리 입력되어 있습니다. 프로필을 먼저 저장하지 않고 확인 후 클라이언트에 직접 기록합니다.", "应用": "적용", "应用中…": "적용 중…", "应用到客户端": "클라이언트에 적용", "应用并设为默认": "적용하고 기본으로 설정", "应用时使用当前启用的真实 Key;预览会隐藏密钥。": "적용 시 현재 활성화된 실제 키를 사용합니다. 미리보기에서는 키를 숨깁니다.", "当前环境不支持保存": "이 환경에서는 저장할 수 없습니다", "当前环境不支持保存(桥接方法缺失)": "이 환경에서는 저장할 수 없습니다 (브리지 메서드 없음)", "当前环境不支持写入(桥接方法缺失)": "이 환경에서는 쓸 수 없습니다 (브리지 메서드 없음)", "当前环境不支持客户端接管(桥接方法缺失)": "이 환경에서는 클라이언트 연결을 쓸 수 없습니다 (브리지 메서드 없음)", "当前环境不支持客户端配置": "이 환경에서는 클라이언트 설정을 사용할 수 없습니다", "当前环境不支持导入": "이 환경에서는 가져올 수 없습니다", "当前环境不支持导入(桥接方法缺失)": "이 환경에서는 가져올 수 없습니다 (브리지 메서드 없음)", "当前环境不支持应用": "이 환경에서는 적용할 수 없습니다", "当前环境不支持恢复": "이 환경에서는 복원할 수 없습니다", "当前环境不支持还原(桥接方法缺失)": "이 환경에서는 복원할 수 없습니다 (브리지 메서드 없음)", "当前环境不支持预览": "이 환경에서는 미리보기를 사용할 수 없습니다", "当前环境无法读取网关模型目录": "이 환경에서는 게이트웨이 모델 목록을 읽을 수 없습니다", "当前网关未启用 API Key 鉴权;占位值只用于客户端要求非空密钥的场景。": "현재 게이트웨이는 API 키 인증을 사용하지 않습니다. 클라이언트가 비어 있지 않은 키를 요구할 때만 임시 값을 사용합니다.", "当前默认": "현재 기본값", "思考能力": "추론 지원", "恢复作用在网关所在机器;密钥已隐藏,不会覆盖应用后的外部修改。": "복원은 게이트웨이가 실행되는 컴퓨터에 적용됩니다. 키는 숨겨지며 적용 후 외부 변경은 덮어쓰지 않습니다.", "恢复自动检测": "자동 감지로 복원", "所有操作作用在网关所在机器。": "모든 작업은 게이트웨이가 실행되는 컴퓨터에 적용됩니다.", "所选 Key 下没有可用的对话模型,请先启用模型或手动填写。": "선택한 Key로 사용할 수 있는 대화 모델이 없습니다. 모델을 활성화하거나 직접 입력하세요.", "所选 Key 下没有可用的对话模型,请先启用模型或更换 Key。": "선택한 Key로 사용할 수 있는 대화 모델이 없습니다. 모델을 활성화하거나 다른 Key를 선택하세요.", "所选 Key 无权使用当前模型,请重新选择": "선택한 Key에는 현재 모델을 사용할 권한이 없습니다. 다시 선택하세요.", "手动添加模型": "모델 직접 추가", "手机端可查看客户端实际配置并撤销上次应用;编辑方案请使用桌面端。": "모바일에서는 클라이언트 실제 설정을 확인하고 마지막 적용을 취소할 수 있습니다. 프로필 편집은 데스크톱에서 하세요.", "手机端可查看模型配置、撤销上次应用,并管理提示词、Skill 与 MCP。": "모바일에서 모델 설정을 확인하고 마지막 적용을 취소하며 프롬프트, Skill과 MCP를 관리할 수 있습니다.", "指定配置路径": "설정 경로 지정", "按备份还原": "백업에서 복원", "按备份还原 {name}?": "{name}을(를) 백업에서 복원할까요?", "换 Key 后会按新 Key 的授权重新核对已选模型": "키를 바꾸면 새 키의 권한으로 선택한 모델을 다시 확인합니다.", "接入后使用此默认模型,其它已选模型仍可在客户端切换。": "연결 후 이 모델이 기본으로 사용됩니다. 다른 선택한 모델도 클라이언트에서 전환할 수 있습니다.", "接入客户端": "클라이언트 연결", "接入本网关": "이 게이트웨이에 연결됨", "接入状态来自客户端配置文件。恢复前显示差异;文件被其他程序修改时拒绝覆盖。": "연결 상태는 클라이언트 설정 파일에서 읽습니다. 복원 전에 차이를 표시하며 다른 프로그램이 변경한 파일은 덮어쓰지 않습니다.", "接入端点": "연결 엔드포인트", "接口基址": "API 기본 URL", "搜索客户端": "클라이언트 검색", "搜索客户端 / 配置文件…": "클라이언트 / 설정 파일 검색…", "搜索已选模型": "선택한 모델 검색", "搜索模型 ID / 展示名…": "모델 ID / 표시 이름 검색…", "撤销上次应用": "마지막 적용 취소", "操作目标:网关所在机器": "작업 대상: 게이트웨이 컴퓨터", "收起更多配置": "추가 설정 접기", "收起模型选择": "모델 선택 접기", "改写网关所在机器上的客户端配置": "게이트웨이 컴퓨터의 클라이언트 설정 관리", "改动": "변경", "放弃修改": "변경 버리기", "放弃未保存的修改?": "저장하지 않은 변경을 버릴까요?", "新增": "추가", "新增 MCP": "MCP 추가", "新增配置": "설정 추가", "新建 Skill": "새 Skill", "新建文件": "새 파일", "新建方案或导入当前配置;保存后再决定是否应用。": "프로필을 만들거나 현재 설정을 가져오세요. 저장한 뒤 적용 여부를 결정할 수 있습니다.", "新建配置": "새 설정", "新建配置方案": "새 설정 프로필", "新版网页版和桌面版分别保存模型配置;旧版模型设置共享,MCP 始终只写入所选运行方式。": "신버전의 웹과 데스크톱 앱은 모델 설정을 따로 저장합니다. 구버전 모델 설정은 공유되지만 MCP는 항상 선택한 프로필에만 기록됩니다.", "新配置": "새 설정", "方案中的密钥加密保存;客户端原生配置可能要求明文。": "프로필의 키는 암호화하여 저장됩니다. 클라이언트 기본 설정에는 평문이 필요할 수 있습니다.", "方案名称": "프로필 이름", "方案已保存,尚未应用到客户端": "프로필이 저장되었지만 클라이언트에는 아직 적용되지 않았습니다", "无改动": "변경 없음", "无配置": "설정 없음", "无需认证": "인증 불필요", "旧版共享设置": "구버전 공유 설정", "暂无预览": "미리보기가 없습니다", "更多配置": "추가 설정", "最多选择 {n} 个模型": "모델을 최대 {n}개까지 선택할 수 있습니다", "最近检测:{time}": "최근 감지: {time}", "有改动": "변경 있음", "未声明 / 保留": "미지정 / 유지", "未安装": "설치 안 됨", "未找到客户端程序或配置文件": "클라이언트 프로그램 또는 설정 파일을 찾지 못했습니다", "未接入本网关": "이 게이트웨이에 연결되지 않음", "未接管": "연결되지 않음", "未检测到": "감지되지 않음", "未检测到安装": "설치가 감지되지 않음", "未读取到可识别的客户端配置": "인식할 수 있는 클라이언트 설정을 찾지 못했습니다", "未走网关": "게이트웨이 미경유", "本机": "이 기기", "本机服务": "로컬 서비스", "本机没有找到 {name}": "이 컴퓨터에서 {name}을(를) 찾지 못했습니다", "本机网关": "로컬 게이트웨이", "本网关": "이 게이트웨이", "来自客户端文件,只读": "클라이언트 설정 파일에서 읽음 (읽기 전용)", "查看文件改动": "파일 변경 보기", "桌面版": "데스크톱 버전", "模型 ID": "모델 ID", "模型 ID 不能为空或重复": "모델 ID는 비어 있거나 중복될 수 없습니다", "模型 id": "모델 ID", "模型 {n}": "모델 {n}", "模型展示名": "모델 표시 이름", "模型思考等级": "모델 추론 수준", "模型或客户端不支持所选思考等级": "모델 또는 클라이언트가 선택한 추론 수준을 지원하지 않습니다", "模型未声明思考档位,保留客户端默认,不显示猜测选项。": "모델이 추론 수준을 선언하지 않았습니다. 클라이언트 기본값을 유지하며 추측한 옵션은 표시하지 않습니다.", "模型目录响应无效": "모델 목록 응답이 잘못되었습니다", "模型目录读取失败,可手动填写真实模型 ID。": "모델 목록을 읽지 못했습니다. 실제 모델 ID를 직접 입력할 수 있습니다.", "模型配置": "모델 설정", "模型默认": "모델 기본값", "正在检测客户端…": "클라이언트 감지 중…", "正在生成准确预览…": "정확한 미리보기 생성 중…", "正在生成预览…": "미리보기 생성 중…", "正在读取本机客户端…": "로컬 클라이언트 읽는 중…", "正在读取网关模型并填入配置…": "게이트웨이 모델을 불러와 설정을 입력하는 중…", "此处来自磁盘文件,不代表正在运行的旧会话已经重载。": "여기에는 디스크 파일에서 읽은 내용이 표시됩니다. 실행 중인 기존 세션이 설정을 다시 읽었다는 뜻은 아닙니다.", "此配置未在客户端中使用,删除不会改变当前使用的配置。": "이 설정은 클라이언트에서 사용 중이 아닙니다. 삭제해도 현재 설정은 바뀌지 않습니다.", "每个客户端可以有": "각 클라이언트는", "每个模型独立保存能力;展开可调整,未声明的数据不会猜测填写。": "기능은 모델별로 저장됩니다. 펼쳐서 조정할 수 있으며 미지정 값은 추측하여 채우지 않습니다.", "没有匹配的客户端": "일치하는 클라이언트가 없습니다", "没有可导入的新条目(可能还没配过,或已经在我的配置里)": "가져올 새 항목이 없습니다 (아직 설정하지 않았거나 이미 내 설정에 있음)", "没有新的条目可收(都已在我的配置里)": "가져올 새 항목이 없습니다 (모두 내 설정에 있음)", "没有新的配置可以导入": "가져올 새 설정이 없습니다", "没有检测到可接管的客户端": "관리 가능한 클라이언트가 감지되지 않았습니다", "没有选中配置": "선택한 설정이 없습니다", "没有选中配置方案": "선택된 설정 프로필이 없습니다", "添加到客户端": "클라이언트에 추가", "点击右上角「新增配置」,添加网关或其他服务": "오른쪽 위의 ‘설정 추가’에서 게이트웨이나 다른 서비스를 추가하세요", "点击模型展开详细配置;搜索只筛选显示,不会移除模型。": "모델을 클릭하면 상세 설정이 펼쳐집니다. 검색은 표시 목록만 필터링하며 모델을 제거하지 않습니다.", "版本未识别": "버전 확인 불가", "状态来自配置文件,已打开的会话可能需要重新加载": "상태는 설정 파일 기준입니다. 기존 세션은 다시 불러와야 할 수 있습니다", "环境变量名": "환경 변수 이름", "生成中…": "생성 중…", "留空保留 / 未声明": "빈 값: 유지 / 미지정", "留空保留已保存密钥": "비워 두면 저장된 키 유지", "留空的分档会以 Claude Code 内置模型名请求网关;网关没有同名模型时该档会失败,建议点「一键设置」。": "비어 있는 등급은 Claude Code 기본 모델 이름으로 게이트웨이에 요청합니다. 같은 이름의 모델이 없으면 해당 등급은 실패하므로 \"일괄 설정\"을 권장합니다.", "留空表示不写入": "비워 두면 기록하지 않음", "确认": "확인", "确认使用": "사용 확인", "确认停用": "비활성화 확인", "确认写入": "기록 확인", "确认写入后会同步修改客户端开关;取消不会生效。": "기록을 확인하면 클라이언트 항목의 활성화 상태도 변경됩니다. 취소하면 적용되지 않습니다.", "确认写入后更新客户端默认模型;取消不会生效。": "기록을 확인하면 클라이언트 기본 모델이 변경됩니다. 취소하면 적용되지 않습니다.", "确认写入客户端资源": "클라이언트 리소스 기록 확인", "确认删除": "삭제 확인", "确认删除客户端资源": "클라이언트 리소스 삭제 확인", "确认后将切换到此配置,原配置会保留在列表中。": "확인하면 이 설정으로 전환합니다. 이전 설정은 목록에 유지됩니다.", "确认后将更新 {name} 的配置文件,原配置会自动备份。": "확인하면 {name}의 설정 파일을 업데이트합니다. 원본 파일은 자동으로 백업합니다.", "确认后将此配置加入客户端,已有配置会保留。": "확인하면 이 설정을 클라이언트에 추가합니다. 기존 설정은 유지됩니다.", "确认应用": "적용 확인", "确认恢复": "복원 확인", "确认接入": "연결 확인", "移除模型会写入客户端配置;其它条目和未知字段保留,确认前可查看差异。": "모델을 제거하면 클라이언트 설정에 기록됩니다. 다른 항목과 알 수 없는 필드는 유지되며 확인 전에 차이를 볼 수 있습니다.", "移除模型:{name}": "모델 제거: {name}", "第一把启用的 Key": "첫 번째 활성 키", "第三方中转": "서드파티 중계", "编辑 MCP": "MCP 편집", "编辑 Skill": "Skill 편집", "编辑客户端配置": "클라이언트 설정 편집", "编辑配置": "설정 편집", "编辑配置方案": "설정 프로필 편집", "编辑:{name}": "편집: {name}", "网关目录共 {n} 个": "게이트웨이 카탈로그 {n}개", "网页版": "웹 버전", "自定义路径": "사용자 지정 경로", "行号由后端逐行比对给出": "줄 번호는 백엔드의 줄 단위 비교 결과입니다", "装好后回到这一页点「重新检测」,它会出现在上面的列表里。": "설치한 뒤 이 페이지로 돌아와 「다시 감지」를 누르면 위 목록에 나타납니다.", "视频输入": "동영상 입력", "解除接入本网关": "이 게이트웨이 연결 해제", "认证方式": "인증 방식", "设为默认": "기본으로 설정", "请先在「网关 Key」页创建并启用一把 Key": "먼저 게이트웨이 Key 페이지에서 Key를 생성하고 활성화하세요.", "请在 Zed 提供商设置中保存 API Key;本页不修改系统凭证存储。": "Zed의 제공자 설정에서 API 키를 저장하세요. 이 페이지는 시스템 자격 증명 저장소를 변경하지 않습니다.", "请填写 API Key": "API 키를 입력하세요", "请填写方案名称": "프로필 이름을 입력하세요", "请填写有效的 http 或 https 地址": "올바른 http 또는 https 주소를 입력하세요", "请填写有效的环境变量名": "올바른 환경 변수 이름을 입력하세요", "请填写配置名称": "설정 이름을 입력하세요", "请至少添加一个模型": "모델을 하나 이상 추가하세요", "请补全配置后使用": "설정을 완성한 후 사용하세요", "请输入密钥": "키를 입력하세요", "请选择": "선택하세요", "请选择模型": "모델을 선택하세요", "读取失败": "읽기 실패", "读取客户端配置失败:{reason}": "클라이언트 설정을 읽지 못했습니다: {reason}", "走网关": "게이트웨이 경유", "路径属于网关所在机器,不是浏览器所在设备。只改变检测目标,不修改客户端文件。": "경로는 브라우저 기기가 아닌 게이트웨이 컴퓨터의 경로입니다. 감지 대상만 변경하며 클라이언트 파일은 수정하지 않습니다.", "输出上限": "최대 출력", "返回编辑": "편집으로 돌아가기", "还原中…": "복원 중…", "还原失败:{reason}": "복원 실패: {reason}", "还没有配置": "설정이 아직 없습니다", "还没有配置。点「新建配置」建一套指向本机网关的,再写入客户端。": "설정이 아직 없습니다. 「새 설정」으로 로컬 게이트웨이를 가리키는 설정을 만든 뒤 클라이언트에 쓰세요.", "还没有预览。选一套配置后这里会显示写入客户端之后的样子。": "미리보기가 없습니다. 설정을 고르면 클라이언트에 쓴 뒤의 모습이 여기에 표시됩니다.", "这个客户端不从网关目录选模型,用右侧的「添加模型」逐个填写。": "이 클라이언트는 게이트웨이 카탈로그에서 모델을 선택하지 않습니다. 오른쪽에서 하나씩 추가하세요.", "这个客户端不支持所选协议": "이 클라이언트는 선택한 프로토콜을 지원하지 않습니다", "这个客户端不能接入本网关": "이 클라이언트는 이 게이트웨이에 연결할 수 없습니다", "这个客户端会自己重读配置,写入后开新会话即生效。": "이 클라이언트는 설정을 스스로 다시 읽습니다. 쓴 뒤 새 세션을 열면 적용됩니다.", "这个客户端只在启动时读配置:写入后重开一个会话才生效。": "이 클라이언트는 시작할 때만 설정을 읽습니다. 쓴 뒤 세션을 다시 열어야 적용됩니다.", "这个客户端的配置里没有读出地址(可能还没配过,或形状不认识)": "이 클라이언트 설정에서 주소를 읽지 못했습니다 (아직 설정하지 않았거나 형식을 알 수 없음)", "这个客户端自己支持多套配置并存": "이 클라이언트는 여러 설정을 함께 둘 수 있습니다", "这个客户端自己管理多套配置,可同时启用多条;切换只改 enabled 与默认项,不动它的模型清单。": "이 클라이언트는 여러 설정을 스스로 관리하며 여러 개를 동시에 켤 수 있습니다. 전환은 enabled 와 기본 항목만 바꾸고 모델 목록은 건드리지 않습니다.", "这个客户端还没有 MCP": "이 클라이언트에는 아직 MCP 서버가 없습니다", "这个客户端还没有 Skill": "이 클라이언트에는 아직 Skill이 없습니다", "这个客户端需要填写模型上下文窗口": "이 클라이언트는 모델의 컨텍스트 크기가 필요합니다", "这套配置是干什么用的(只显示在本页)": "이 설정의 용도 (이 페이지에만 표시)", "这是待应用状态;保存不会立即改变客户端开关。": "이는 적용 예정 상태입니다. 저장만으로 클라이언트 항목이 즉시 전환되지 않습니다.", "这里只调整此模型,不影响其它模型。": "여기서 변경한 내용은 이 모델에만 적용됩니다.", "这里只选择客户端实际支持的协议,不改变上游提供商协议。": "여기서는 클라이언트가 실제로 지원하는 프로토콜만 선택합니다. 업스트림 제공자 프로토콜은 변경되지 않습니다.", "连接方式": "연결 방식", "连接配置": "연결 설정", "选一个客户端开始": "클라이언트를 선택해 시작", "选择 MCP": "MCP 선택", "选择 Skill": "Skill 선택", "选择模型": "모델 선택", "选择网关 Key": "게이트웨이 Key 선택", "选择要接入的模型;确认前展示文件改动,写入前自动备份。": "연결할 모델을 선택하세요. 확인 전에 파일 변경을 표시하며 기록 전에 자동으로 백업합니다.", "选择配置目标": "설정 대상 선택", "通常以 /v1 结尾,不要附加具体请求路径。": "일반적으로 /v1로 끝납니다. 구체적인 요청 경로를 붙이지 마세요.", "部分已选模型已不可用或所选 Key 无权使用,请移除或更换 Key。": "일부 선택한 모델은 사용할 수 없거나 이 Key에 권한이 없습니다. 해당 모델을 제거하거나 다른 Key를 선택하세요.", "配置": "설정", "配置位置与说明": "설정 위치 및 설명", "配置列表": "설정 목록", "配置列表格式不匹配,请重启网关后刷新页面": "설정 목록 형식이 일치하지 않습니다. 게이트웨이를 다시 시작한 후 페이지를 새로 고치세요.", "配置可读写": "설정 읽기 및 쓰기 가능", "配置名称": "설정 이름", "配置差异": "설정 차이", "配置已保存,可在列表中点击使用": "설정이 저장되었습니다. 목록에서 선택하여 사용할 수 있습니다.", "配置已删除": "설정이 삭제되었습니다", "配置已删除,客户端文件已同步更新": "설정을 삭제하고 클라이언트 파일을 업데이트했습니다", "配置已应用并读回校验;请重开客户端或会话": "설정을 적용하고 다시 읽어 검증했습니다. 클라이언트 또는 세션을 다시 시작하세요", "配置已恢复并校验": "설정을 복원하고 검증했습니다", "配置操作": "설정 작업", "配置文件已写入并校验;尚未验证 DSH 是否加载,请在所选客户端新建会话确认。": "설정 파일을 기록하고 검증했습니다. DSH가 불러왔는지는 확인하지 않았습니다. 선택한 클라이언트에서 새 대화를 열어 확인하세요.", "配置来源": "설정 종류", "重新填入目录能力": "목록에서 기능 다시 입력", "重新检测": "다시 감지", "重新生成预览": "미리보기 다시 생성", "需要重新编辑:": "다시 편집 필요:", "需重开会话生效": "세션을 다시 열어야 적용됩니다", "预览并保存": "미리보기 및 저장", "预览草稿改动": "초안 변경 미리보기", "高": "높음", "高级选项": "고급 옵션", "默认模型": "기본 모델", "默认模型必须来自模型列表": "기본 모델은 모델 목록에 있어야 합니다", "默认模型思考等级": "기본 모델 추론 수준", "(本机网关 / 官方直连 / 第三方中转 / 本机服务),随时切换。单配置客户端切换 = 整段覆写并备份原文件;多配置客户端(如 ZCode)只改 enabled 与默认项,它自己的条目一律不动。": "(로컬 게이트웨이 / 공식 직결 / 서드파티 중계 / 로컬 서비스)를 언제든 전환할 수 있습니다. 단일 설정 클라이언트는 설정 전체를 덮어쓰고 원본 파일을 백업합니다. ZCode 같은 다중 설정 클라이언트는 enabled 와 기본 항목만 바꾸고 자체 항목은 건드리지 않습니다.", "API Key 无效或无权限": "API Key가 유효하지 않거나 권한이 없습니다", "API 接口文档": "API 문서", "DSH 使用 Agent 页当前选择的配置目标。写入后请在 DSH 中确认工具是否出现,必要时重启对应客户端。": "DSH는 Agent 페이지에서 선택한 설정 대상을 사용합니다. 기록 후 DSH에 도구가 나타나는지 확인하고 필요한 경우 해당 클라이언트를 다시 시작하세요.", "Key 明文只会写入所选客户端的本机配置文件。": "평문 Key는 선택한 클라이언트의 로컬 설정 파일에만 기록됩니다.", "MCP & Skills": "MCP & Skills", "MCP 接入信息": "MCP 연결 정보", "Node.js 无需额外依赖,推荐使用;Python 需要本机有 python。": "Node.js는 추가 의존성이 없어 권장됩니다. Python은 이 컴퓨터에 python이 필요합니다.", "{name} 接入客户端": "{name} 클라이언트 연결", "上游提供商": "업스트림 제공자", "上游提供商配置": "업스트림 제공자 설정", "上游提供商配置由各接入协议共享,改动后所有协议同时生效。": "업스트림 제공자 설정은 모든 접속 프로토콜이 공유하며, 변경 사항은 모든 프로토콜에 동시에 적용됩니다.", "上游没有返回结果": "업스트림이 결과를 반환하지 않았습니다", "上游请求超时": "업스트림 요청 시간이 초과되었습니다", "下载图片 {index}": "이미지 {index} 다운로드", "不指定": "지정 안 함", "中文": "중국어", "仅搜索": "검색 전용", "仅支持单选,默认为 Tavily。": "단일 선택만 지원하며 기본값은 Tavily입니다.", "仅显示已启用且至少有一个可用模型的提供商。": "활성화되어 있고 사용 가능한 모델이 하나 이상 있는 제공자만 표시됩니다.", "仅显示该提供商下已启用的模型。": "이 제공자에서 활성화된 모델만 표시됩니다.", "任务编号或原提交编号,至少提供一项": "작업 ID 또는 원래 제출 ID를 입력하세요", "作为远程 MCP 服务,在支持 MCP 的客户端配置里填写地址即可接入。": "원격 MCP 서비스로 제공되며, MCP 지원 클라이언트 설정에 주소를 입력하면 연결됩니다.", "使用已有账号生成或编辑图片,支持任务查询与本机文件保存。": "기존 계정으로 이미지를 생성·편집하고 작업을 조회하거나 로컬에 저장합니다.", "保存能力配置": "기능 설정 저장", "保留至 {time}": "{time}까지 보관", "共 {count} 项能力": "총 {count}개 기능", "内部请求本站网关时使用的网关 Key;额度、限流与请求日志记在该 Key 上。": "내부에서 이 게이트웨이를 호출할 때 사용하는 게이트웨이 Key입니다. 할당량, 속도 제한, 요청 로그가 이 Key에 기록됩니다.", "内部调用 API Key": "내부 호출 API Key", "写入失败": "쓰기 실패", "写入配置": "설정 쓰기", "单次图片上限": "요청당 이미지 상한", "卸载失败": "제거 실패", "参考图允许读取的目录": "참조 이미지 읽기 허용 폴더", "参考图链接或已生成图片 ID;本地桥接还可传文件路径": "참조 URL 또는 생성된 이미지 ID. 로컬 브리지는 파일 경로도 허용합니다", "取消全选": "모두 해제", "只保存新文件,不覆盖已有不同内容。目录权限写入客户端配置,更新配置时需要重新确认。": "새 파일만 저장하며 내용이 다른 기존 파일은 덮어쓰지 않습니다. 폴더 권한은 클라이언트 설정에 기록되며 업데이트 시 다시 확인해야 합니다.", "可选。留空时不传,由模型映射的「思考覆盖」决定。": "선택 사항입니다. 비워 두면 전송하지 않고 모델 매핑의 \"추론 재정의\"를 따릅니다.", "可选,每行一个已有绝对目录。输出目录默认允许读取;其他位置的文件不会读取或上传。": "선택 사항: 기존 폴더의 절대 경로를 한 줄에 하나씩 입력하세요. 출력 폴더는 기본으로 읽기를 허용하며 다른 위치의 파일은 읽거나 업로드하지 않습니다.", "启用 / 停用此服务": "이 서비스 활성화 / 비활성화", "图片分析": "이미지 분석", "图片占用 {used} MiB,生成中预留 {reserved} MiB。": "이미지 사용량 {used} MiB, 생성 중 예약 공간 {reserved} MiB.", "图片生成配置": "이미지 생성 설정", "图片生成配置已保存": "이미지 생성 설정을 저장했습니다", "图片输出目录": "이미지 출력 폴더", "在支持远程 MCP 的客户端中填写该地址,并使用网关 Key 作为 Bearer 令牌。": "원격 MCP를 지원하는 클라이언트에 이 주소를 입력하고 게이트웨이 Key를 Bearer 토큰으로 사용하세요.", "复制失败,请手动选择后复制": "복사 실패. 직접 선택하여 복사하세요", "复制文档": "문서 복사", "复用「账号」页的登录态,不需要额外填写搜索密钥。账号停用或删除后不会自动换号。": "'계정' 페이지의 로그인 상태를 사용하므로 검색용 키를 추가로 입력할 필요가 없습니다. 계정이 비활성화되거나 삭제되어도 자동으로 다른 계정으로 바뀌지 않습니다.", "复用已有账号生图,不改变 Agent 的对话模型。实际调用遵守接入 Key 的模型和提供商权限。": "기존 계정으로 이미지를 생성하며 Agent의 대화 모델은 바꾸지 않습니다. 호출은 연결 Key의 모델 및 제공자 권한을 따릅니다.", "存储上限(MiB)": "저장 상한(MiB)", "安装目标": "설치 대상", "完整的图片要求": "전체 이미지 요구 사항", "客户端环境": "클라이언트 환경", "客户端调用超时设为 120 秒;后台生成超时由服务配置控制,未完成时通过任务编号查询。": "클라이언트 호출 제한 시간은 120초입니다. 백그라운드 생성 제한 시간은 서비스 설정을 따르며 미완료 작업은 ID로 조회합니다.", "客户端配置示例": "클라이언트 설정 예시", "密钥已清除": "키가 삭제되었습니다", "密钥或账号登录态无效": "API 키 또는 계정 로그인 상태가 유효하지 않습니다", "密钥提示": "키 힌트", "将按服务的工具执行超时({seconds} 秒)同步写入客户端配置。": "서비스의 도구 실행 타임아웃({seconds}초)이 클라이언트 설정에 기록됩니다.", "将搜索、视觉等能力通过 MCP 或 Skills 接入客户端。": "MCP 또는 Skills를 통해 검색, 비전 등의 기능을 클라이언트에 연결합니다.", "尚未配置图片生成,请先选择可用的生图模型并保存。": "이미지 생성이 설정되지 않았습니다. 사용 가능한 이미지 모델을 선택하고 저장하세요.", "尚未配置视觉模型,配置前调用方会收到“未配置”错误。": "비전 모델이 아직 설정되지 않았습니다. 설정 전에는 호출자에게 \"미설정\" 오류가 반환됩니다.", "工具执行超时": "도구 실행 타임아웃", "工具执行超时已保存": "도구 실행 타임아웃이 저장되었습니다", "工具服务": "도구 서비스", "已写入 {count} 个客户端配置": "{count}개 클라이언트 설정에 기록했습니다", "已处理 {count} 个目标": "{count}개 대상 처리 완료", "已复制": "복사됨", "已失效": "유효하지 않음", "已安装到 {count} 个客户端": "{count}개 클라이언트에 설치했습니다", "已完成": "완료", "已完成 {count} 个目标": "{count}개 대상 완료", "已接入 {count} 个目标": "{count}개 대상 연결됨", "已有账号": "기존 계정", "已有账号搜索只支持搜索,不支持网页抓取;请求会使用绑定账号的额度与出网设置。": "기존 계정 소스는 검색만 지원하며 페이지 가져오기는 지원하지 않습니다. 요청에는 연결된 계정의 할당량과 외부 연결 설정이 사용됩니다.", "已检查保存的配置,未发起生图;账号实际额度与上游可用性以调用结果为准。": "저장된 설정을 확인했으며 이미지는 생성하지 않았습니다. 실제 계정 할당량과 업스트림 가용성은 호출 결과로 확인됩니다.", "已绑定的搜索账号不存在,请重新选择": "연결된 검색 계정이 존재하지 않습니다. 다시 선택하세요", "已绑定的搜索账号已停用": "연결된 검색 계정이 비활성화되었습니다", "已绑定账号不可用,请重新选择": "연결된 계정을 사용할 수 없습니다. 다시 선택하세요", "已过期或清理": "만료 또는 정리됨", "已选择 {count} / {total} 个": "{count} / {total}개 선택됨", "已配置的 API Key 已失效(被删除或禁用),请重新选择并保存。": "설정된 API Key가 유효하지 않습니다(삭제 또는 비활성화). 다시 선택하고 저장하세요.", "当前提供商插件不支持账号搜索,请更新插件": "현재 제공자 플러그인은 계정 기반 검색을 지원하지 않습니다. 플러그인을 업데이트하세요", "当前模型:{provider} / {model}": "현재 모델: {provider} / {model}", "当前没有可用的安装目标": "사용 가능한 설치 대상이 없습니다", "当前没有已安装/已配置的目标": "설치되었거나 설정된 대상이 없습니다", "当前网关 Key 无权使用所选账号搜索来源": "이 게이트웨이 Key에는 선택한 계정 기반 검색 소스를 사용할 권한이 없습니다", "打包为 Agent Skill,由 Agent2API 面板安装到本机客户端目录。": "Agent Skill로 패키징되어 Agent2API 패널에서 로컬 클라이언트 디렉터리에 설치됩니다.", "批量抓取 1~10 个 URL,使用后台选中的单个抓取提供商。": "서버에서 선택한 단일 가져오기 제공자로 URL 1~10개를 일괄 가져옵니다.", "批量搜索 1~10 条查询,并发调用后台选中的提供商后合并重复来源。": "서버에서 선택한 제공자로 쿼리 1~10개를 병렬 검색하고 중복 출처를 병합합니다.", "批量网页抓取": "일괄 페이지 가져오기", "批量网页抓取提供商": "일괄 페이지 가져오기 제공자", "批量网页搜索": "일괄 웹 검색", "批量网页搜索不可用:所选提供商均未启用或未配置密钥。": "일괄 웹 검색을 사용할 수 없습니다: 선택한 제공자 중 활성화되고 키가 설정된 제공자가 없습니다.", "批量网页搜索不可用:请启用来源并配置密钥或绑定可用账号。": "일괄 웹 검색을 사용할 수 없습니다. 소스를 활성화하고 API 키를 설정하거나 사용 가능한 계정을 연결하세요.", "批量网页搜索可用:将使用 {ready},未配置的 {missing} 会自动跳过。": "일괄 웹 검색을 사용할 수 있습니다: {ready} 사용, 설정되지 않은 {missing}은(는) 자동으로 건너뜁니다.", "批量网页搜索可用:所选提供商均已启用并配置密钥。": "일괄 웹 검색을 사용할 수 있습니다. 선택한 제공자가 모두 활성화되고 키가 설정되었습니다.", "批量网页搜索可用:所选来源均已启用并配置完成。": "일괄 웹 검색을 사용할 수 있습니다. 선택한 소스가 모두 활성화되고 설정되었습니다.", "批量网页搜索提供商": "일괄 웹 검색 제공자", "批量网页搜索至少选择一个提供商": "일괄 웹 검색에는 제공자를 하나 이상 선택하세요", "把 1~10 张图片与提示词交给后台配置的视觉模型,返回模型回复文本。": "이미지 1~10장과 프롬프트를 서버에 설정된 비전 모델에 전달하고 모델 응답 텍스트를 반환합니다.", "把下面这段合并到客户端配置的 mcpServers 里,并把 Key 换成你自己的。": "아래 스니펫을 클라이언트 설정의 mcpServers에 병합하고 Key를 본인의 것으로 바꾸세요.", "把图片与提示词交给后台配置的视觉模型分析,并把模型回复返回给调用方的大模型。": "이미지와 프롬프트를 서버에 설정된 비전 모델에 전달해 분석하고, 모델 응답을 호출한 모델에 반환합니다.", "抓取:{name}": "가져오기: {name}", "按参考图修改,仅在配置了可用编辑模型时提供。": "참조 이미지를 편집하며 사용 가능한 편집 모델이 설정된 경우에만 제공됩니다.", "按描述使用已配置的模型生图,默认一张,会消耗账号额度。": "설정된 모델로 설명에 따라 이미지를 생성합니다. 기본 한 장이며 계정 크레딧을 소모합니다.", "接入协议": "접속 프로토콜", "接入方式": "연결 방식", "提供 REST API,任何能发 HTTP 请求的程序都可以携带网关 Key 直接调用。": "REST API를 제공합니다. HTTP 요청을 보낼 수 있는 프로그램이면 게이트웨이 Key를 붙여 바로 호출할 수 있습니다.", "提供商尚未配置密钥": "제공자에 API 키가 설정되지 않았습니다", "提供商尚未配置有效密钥": "제공자에 유효한 API 키가 설정되지 않았습니다", "提供商插件暂不可用": "제공자 플러그인을 일시적으로 사용할 수 없습니다", "提供商插件未安装或未启用": "제공자 플러그인이 설치되지 않았거나 비활성화되어 있습니다", "提供商暂不可用或配置有误": "제공자를 일시적으로 사용할 수 없거나 설정이 잘못되었습니다", "提供商选择": "제공자 선택", "提示词,描述要让模型在图片中查看的内容": "모델이 이미지에서 확인해야 할 내용을 설명하는 프롬프트", "插件搜索能力声明不完整,请更新插件": "플러그인의 검색 기능 정보가 불완전합니다. 플러그인을 업데이트하세요", "插件返回的搜索来源格式不正确": "플러그인이 반환한 검색 소스 형식이 올바르지 않습니다", "搜索、视觉与生图共用网关配置。本机客户端的 MCP 安装在桌面端完成。": "검색, 비전, 이미지 생성은 게이트웨이 설정을 사용합니다. 로컬 클라이언트의 MCP 설치는 데스크톱에서 완료합니다.", "搜索参数不符合该来源的要求": "검색 매개변수가 이 소스의 요구 사항에 맞지 않습니다", "搜索提供商没有返回来源": "검색 제공자가 출처를 반환하지 않았습니다", "搜索服务拒绝了该账号,请检查账号权限": "검색 서비스가 이 계정을 거부했습니다. 계정 권한을 확인하세요", "搜索来源配置不完整": "검색 소스 설정이 완료되지 않았습니다", "搜索请求超时": "검색 요청 시간이 초과되었습니다", "搜索账号不属于该提供商,请重新选择": "검색 계정이 다른 제공자에 속해 있습니다. 다시 선택하세요", "搜索账号登录态已失效,请重新登录": "검색 계정의 로그인이 만료되었습니다. 다시 로그인하세요", "搜索额度已用完或触发限流": "검색 할당량을 모두 사용했거나 속도 제한에 도달했습니다", "支持多选。每次搜索会并发调用所选提供商并合并重复来源。": "다중 선택을 지원합니다. 검색할 때마다 선택한 제공자를 병렬로 호출하고 중복 출처를 병합합니다.", "无法确认插件搜索能力,请更新或重启提供商插件": "검색 지원 여부를 확인할 수 없습니다. 제공자 플러그인을 업데이트하거나 다시 시작하세요", "暂无生图记录,连接 MCP 后即可让 Agent 生成图片。": "이미지 생성 기록이 없습니다. MCP를 연결하면 Agent로 이미지를 생성할 수 있습니다.", "暴露的工具": "노출된 도구", "更新时间": "업데이트 시간", "最大生成并发": "최대 동시 생성 수", "最近生成记录": "최근 생성 기록", "服务与协议": "서비스 및 프로토콜", "服务入口": "서비스 엔드포인트", "服务名称": "서비스 이름", "服务地址": "서비스 주소", "服务状态已更新": "서비스 상태가 업데이트되었습니다", "服务端强制单次工具执行的超时上限(同一服务的 Skill / MCP / API 共用)。安装 MCP 时会按此值写入客户端配置;修改后需在客户端重新「更新」配置并重进会话才会生效。": "서버가 강제하는 단일 도구 실행 타임아웃 상한입니다(같은 서비스의 Skill / MCP / API가 공유). MCP 설치 시 이 값이 클라이언트 설정에 기록됩니다. 변경 후에는 클라이언트에서 \"업데이트\"를 다시 실행하고 세션에 다시 들어가야 적용됩니다.", "服务端强制单次工具执行的超时上限(同一服务的 Skill / MCP 共用)。安装 MCP 时会按此值写入客户端配置;修改后需在客户端重新「更新」配置并重进会话才会生效。": "서버가 강제하는 단일 도구 실행 타임아웃 상한(같은 서비스의 Skill / MCP가 공유). MCP를 설치할 때 이 값을 클라이언트 설정에 기록합니다. 변경 후에는 클라이언트에서 '업데이트'를 다시 실행하고 세션을 다시 열어야 적용됩니다.", "服务能力": "서비스 기능", "服务配置": "서비스 설정", "未选择账号": "선택한 계정 없음", "本地桥接": "로컬 브리지", "本地桥接会在本机运行一个 node 脚本,支持直接传本地图片路径,推荐在桌面端使用。": "로컬 브리지는 이 컴퓨터에서 Node 스크립트를 실행하며 로컬 이미지 경로를 그대로 전달할 수 있습니다. 데스크톱에서 사용을 권장합니다.", "本地桥接需要 Node.js 18 或更新版本,自动读取授权目录的参考图并保存生成结果;HTTP 接入只返回下载地址。": "로컬 브리지는 Node.js 18 이상이 필요합니다. 허용된 폴더의 참조 이미지를 읽고 생성 결과를 저장합니다. HTTP 연결은 다운로드 URL만 반환합니다.", "本机接入": "로컬 연결", "本次提交的唯一编号,断线重试使用原编号": "고유 제출 ID. 연결이 끊긴 후 재시도할 때 같은 ID를 사용하세요", "查询原任务并取回图片,不再次生图或扣费。": "원래 작업을 조회해 이미지를 가져오며 다시 생성하거나 과금하지 않습니다.", "查询生成结果": "생성 결과 조회", "检查配置": "설정 확인", "正在加载安装目标…": "설치 대상을 불러오는 중…", "正在加载工具服务…": "도구 서비스를 불러오는 중…", "正在加载工具服务配置…": "도구 서비스 설정을 불러오는 중…", "每条搜索词最多 {count} 字": "검색어당 최대 {count}자", "没有匹配的工具服务": "일치하는 도구 서비스가 없습니다", "没有可用的工具服务": "사용 가능한 도구 서비스가 없습니다", "没有可用的生图模型,请先添加账号、启用对应插件并更新模型目录。": "사용 가능한 이미지 모델이 없습니다. 계정을 추가하고 해당 플러그인을 활성화한 뒤 모델 목록을 업데이트하세요.", "没有可用的网关 Key": "사용 가능한 게이트웨이 Key가 없습니다", "没有可绑定的启用账号,请先到「账号」页添加或启用。": "연결할 수 있는 활성 계정이 없습니다. 먼저 '계정' 페이지에서 추가하거나 활성화하세요.", "没有可配置的提供商": "설정할 제공자가 없습니다", "清理这次生成的临时图片?已保存到本机的文件不会被删除,原提交编号也不会重新生图。": "이 작업의 임시 이미지를 정리할까요? 로컬에 저장한 파일은 삭제되지 않으며 원래 제출 ID로 다시 생성하지 않습니다.", "清除密钥": "키 삭제", "清除配置": "설정 삭제", "点击「复制文档」可复制整份 Markdown 文档,直接发给对接方即可。": "\"문서 복사\"를 누르면 Markdown 전체를 복사해 연동 담당자에게 바로 보낼 수 있습니다.", "生图模型": "이미지 생성 모델", "生图账号": "이미지 생성 계정", "生成中": "생성 중", "生成较慢时先返回任务编号。断线后查询原任务,不自动重画;超时不代表没有扣费。": "생성이 느리면 먼저 작업 ID를 반환합니다. 재연결 후 원래 작업을 조회하며 자동으로 다시 생성하지 않습니다. 시간 초과가 미과금을 의미하지는 않습니다.", "确定清除提供商 {name} 的 API Key?清除后该提供商将不可用,直到重新保存新密钥。": "{name}의 API Key를 삭제할까요? 새 키를 저장할 때까지 이 제공자를 사용할 수 없습니다.", "移除 {name} 配置": "{name} 설정 제거", "空白的 API Key 不会覆盖已保存的密钥。": "빈 API Key는 저장된 키를 덮어쓰지 않습니다.", "管理可供客户端安装和运行的工具服务,并配置上游提供商与能力。": "클라이언트가 설치하고 실행할 수 있는 도구 서비스를 관리하고 업스트림 제공자와 기능을 설정합니다.", "结果不确定": "결과 불확실", "结果保留(小时)": "결과 보관 시간", "编辑 {name}": "{name} 편집", "编辑可使用不同模型;未配置可用编辑模型时,不向 Agent 提供编辑工具。": "편집은 다른 모델을 사용할 수 있습니다. 사용 가능한 편집 모델이 없으면 Agent에 편집 도구를 제공하지 않습니다.", "编辑提供商 {name}": "제공자 {name} 편집", "编辑模型": "편집 모델", "网络搜索": "웹 검색", "网络搜索与视觉分析:网关侧配置,改完立即生效。本机客户端的安装在桌面端完成。": "웹 검색과 비전 분석은 게이트웨이 측 설정이며 변경 즉시 적용됩니다. 로컬 클라이언트 설치는 데스크톱에서 수행합니다.", "聚合 Tavily、Querit、Firecrawl、Ollama Web Search,提供批量网页搜索与网页抓取能力。": "Tavily, Querit, Firecrawl, Ollama Web Search를 통합해 일괄 웹 검색과 페이지 가져오기를 제공합니다.", "聚合标准搜索服务及已有 WorkBuddy、Kiro 账号的搜索能力;网页抓取仍使用标准服务。": "표준 검색 서비스와 기존 WorkBuddy 및 Kiro 계정의 검색 기능을 통합합니다. 페이지 가져오기는 계속 표준 서비스를 사용합니다.", "能力提供商配置已保存": "기능 제공자 설정이 저장되었습니다", "能力数量": "기능 수", "自动选择仅在所选提供商内遵守现有路由;固定账号仍受停用、冷却与额度限制,不会自动换号。": "자동 선택은 선택한 제공자 안에서 기존 라우팅을 따릅니다. 고정 계정도 비활성화, 쿨다운, 할당량 제한을 따르며 자동으로 다른 계정으로 바꾸지 않습니다.", "自动选择账号": "계정 자동 선택", "至少选择一个搜索提供商": "검색 제공자를 하나 이상 선택하세요", "获取 API Key": "API Key 받기", "要分析的图片(1~10 张),每张为 http(s) URL 或图片 data URI": "분석할 이미지(1~10장). 각 항목은 http(s) URL 또는 이미지 data URI", "要抓取并提取正文的网页 URL(1~10 个)": "가져와 본문을 추출할 페이지 URL(1~10개)", "要搜索的查询,每条并发执行(1~10 条)": "검색할 쿼리. 각 쿼리는 병렬로 실행됩니다(1~10개)", "视觉分析": "비전 분석", "视觉服务配置已保存": "비전 서비스 설정이 저장되었습니다", "视觉服务配置已清除": "비전 서비스 설정이 삭제되었습니다", "视觉模型配置": "비전 모델 설정", "视觉链路测试失败": "비전 파이프라인 테스트 실패", "视觉链路连通:耗时 {duration}ms": "비전 파이프라인 연결됨: {duration}ms", "触发上游限流": "업스트림 속도 제한에 걸렸습니다", "该协议已停用,已接入的客户端会收到服务停用错误。": "이 프로토콜이 비활성화되어 연결된 클라이언트에는 서비스 비활성화 오류가 반환됩니다.", "该协议通过 Agent2API 面板安装到本机客户端目录。": "이 프로토콜은 Agent2API 패널에서 로컬 클라이언트 디렉터리에 설치됩니다.", "该提供商不支持网页抓取": "이 제공자는 페이지 가져오기를 지원하지 않습니다", "该搜索来源使用 API Key,不接受账号绑定": "이 검색 소스는 API Key를 사용하므로 계정을 연결할 수 없습니다", "该搜索来源使用已有账号,不接受 API Key": "이 검색 소스는 기존 계정을 사용하므로 API Key를 받지 않습니다", "请先选择 API Key": "먼저 API Key를 선택하세요", "请先选择提供商": "먼저 제공자를 선택하세요", "请先选择搜索使用的账号": "먼저 검색에 사용할 계정을 선택하세요", "请求参数无效": "요청 매개변수가 유효하지 않습니다", "请至少选择一个目标": "대상을 하나 이상 선택하세요", "请选择 API Key": "API Key를 선택하세요", "请选择内部调用 API Key": "내부 호출 API Key를 선택하세요", "请选择图片输出目录": "이미지 출력 폴더를 선택하세요", "请选择提供商与上游模型": "제공자와 업스트림 모델을 선택하세요", "调用用的 API Key": "호출용 API Key", "账号搜索暂不可用,请检查账号及插件状态": "계정 기반 검색을 일시적으로 사용할 수 없습니다. 계정과 플러그인 상태를 확인하세요", "账号搜索配置不完整,请重新选择账号或更新插件": "계정 기반 검색 설정이 완료되지 않았습니다. 계정을 다시 선택하거나 플러그인을 업데이트하세요", "超时 {seconds}s": "타임아웃 {seconds}s", "输入新密钥;留空保持不变": "새 키를 입력하세요. 비워 두면 변경되지 않습니다", "运行时": "런타임", "还没有可用的提供商,请先在「账号」页添加账号并在「模型管理」页确认有已启用的模型。": "사용 가능한 제공자가 없습니다. 먼저 \"계정\" 페이지에서 계정을 추가하고 \"모델 관리\" 페이지에서 활성화된 모델이 있는지 확인하세요.", "还没有可用的提供商,请先在桌面端添加账号并确认有已启用的模型。": "사용 가능한 제공자가 없습니다. 데스크톱에서 계정을 추가하고 활성화된 모델이 있는지 확인하세요.", "这是后台生成任务的时间上限。单次 MCP 调用最多等待 20 秒,未完成时返回任务编号;查询不会重新生图。": "백그라운드 생성 작업의 제한 시간입니다. MCP 호출은 최대 20초 대기하며 미완료 시 작업 ID를 반환합니다. 조회로 다시 생성하지 않습니다.", "这里管理的是「客户端能用什么」:服务是否对外提供、上游提供商与密钥、视觉分析用哪个模型。": "이 페이지에서는 클라이언트가 무엇을 사용할 수 있는지 관리합니다. 서비스 공개 여부, 업스트림 제공자와 키, 비전 분석에 사용할 모델입니다.", "远程 HTTP": "원격 HTTP", "远程 HTTP 只接受图片 URL 或 data URI,不需要本机安装 node。": "원격 HTTP는 이미지 URL 또는 data URI만 허용하며 이 컴퓨터에 Node.js가 필요하지 않습니다.", "连接成功:{count} 条结果,耗时 {duration}ms": "연결 성공: {count}건, {duration}ms", "连接测试失败": "연결 테스트 실패", "选择处理图片的上游提供商与模型。调用时会用内部 Key 经本站网关请求该模型,协议转换、重试与故障转移全部复用网关。": "이미지를 처리할 업스트림 제공자와 모델을 선택하세요. 호출 시 내부 Key로 이 게이트웨이를 거쳐 모델에 요청하며, 프로토콜 변환·재시도·장애 전환은 모두 게이트웨이를 재사용합니다.", "选择安装目标、运行时与调用用的 API Key。Skill 包与密钥只写入所选客户端的本机目录。": "설치 대상, 런타임, 호출용 API Key를 선택하세요. Skill 패키지와 키는 선택한 클라이언트의 로컬 디렉터리에만 기록됩니다.", "选择已有目录,图片只会写入此目录及其子目录": "기존 폴더를 선택하세요. 이미지가 이 폴더와 하위 폴더에만 저장됩니다", "选择目录": "폴더 선택", "选择要从中移除的客户端,未勾选的客户端保持不变。": "제거할 클라이언트를 선택하세요. 선택하지 않은 클라이언트는 변경되지 않습니다.", "选择要写入 MCP 配置的客户端。配置只动本服务那一项,客户端原有的其它 MCP 服务保持不变。": "MCP 설정을 기록할 클라이언트를 선택하세요. 이 서비스 항목만 변경되며 기존 다른 MCP 서버는 그대로 유지됩니다.", "配置搜索与抓取所使用的上游提供商。调用方不再传递 provider,运行时始终使用这里保存的设置。": "검색과 가져오기에 사용할 업스트림 제공자를 설정하세요. 호출자는 더 이상 provider를 전달하지 않으며, 실행 시 항상 여기 저장된 설정을 사용합니다.", "默认只生成一张。空间不足时先拒绝请求,不消耗生图额度;只清理过期结果,已保存到本机目录的文件不受影响。": "기본 한 장을 생성합니다. 공간이 부족하면 크레딧 소모 전에 요청을 거부합니다. 만료된 결과만 정리하며 로컬에 저장한 파일은 영향을 받지 않습니다.", " 到 {file}": " → {file}", " 正文已改:{edited}(其余段用官方原文)。": " 본문 수정됨: {edited}(나머지 단락은 공식 원문 사용).", "(无 id)": "(id 없음)", "/v1 拒绝无 Key 请求": "/v1은 키 없는 요청 거부", "0 B": "0 B", "100%(默认)": "100%(기본값)", "<本机IP>": "<로컬 IP>", "ALTCHA(本地验证)": "ALTCHA(로컬 인증)", "Access Key ID": "Access Key ID", "Agent2API 手机端": "Agent2API 모바일", "Android 应用(APK)": "Android 앱(APK)", "Cline 上游按请求头判定「调用方是不是 Cline 自家产品」:X-CLIENT-TYPE: cline-sdk 是硬门槛(缺了它免费池模型一律 403),版本号与平台标识让请求更贴近官方客户端的形态。这里列出的是网关默认会发的头:改某一行的值 = 覆盖默认值(也可以新增默认清单之外的自定义头);把值清空保存 = 这个头不发送;在界面删掉被改过的行 = 回落默认值。改完点「保存」,下一个 Cline 请求立即生效。不懂某一行的含义就不要动它 —— 伪装头的价值在「与官方客户端逐字一致」。": "Cline 업스트림은 요청 헤더로 「호출자가 Cline 자사 제품인지」를 판별합니다. X-CLIENT-TYPE: cline-sdk는 필수 조건이며(이게 없으면 무료 풀 모델은 모두 403), 버전 번호와 플랫폼 식별자는 요청을 공식 클라이언트의 형태에 더 가깝게 만듭니다. 여기에 나열된 것은 게이트웨이가 기본으로 보내는 헤더입니다. 특정 행의 값을 바꾸면 기본값을 덮어쓰고(기본 목록에 없는 사용자 지정 헤더도 추가할 수 있습니다), 값을 비워 저장하면 그 헤더를 보내지 않으며, 화면에서 수정된 행을 삭제하면 기본값으로 돌아갑니다. 수정 후 「저장」을 누르면 다음 Cline 요청부터 즉시 적용됩니다. 의미를 모르는 행은 건드리지 마세요. 위장 헤더의 가치는 「공식 클라이언트와 글자 하나까지 동일」한 데 있습니다.", "Cline 伪装头": "Cline 위장 헤더", "Cline 伪装头已刷新": "Cline 위장 헤더를 새로 고쳤습니다", "Docker 容器": "Docker 컨테이너", "Endpoint": "Endpoint", "Endpoint 填 https://<账户ID>.r2.cloudflarestorage.com,Region 固定填 auto。": "Endpoint에 https://<계정 ID>.r2.cloudflarestorage.com 을, Region에는 auto를 입력하세요.", "Endpoint 填 https://cos.ap-guangzhou.myqcloud.com,Region 填 ap-guangzhou(按实际地域改)。": "Endpoint에 https://cos.ap-guangzhou.myqcloud.com 을, Region에는 ap-guangzhou를 입력하세요(실제 리전에 맞게 변경).", "Endpoint 填 https://obs.cn-north-4.myhuaweicloud.com,Region 填 cn-north-4(按实际地域改)。": "Endpoint에 https://obs.cn-north-4.myhuaweicloud.com 을, Region에는 cn-north-4를 입력하세요(실제 리전에 맞게 변경).", "Endpoint 填 https://oss-cn-hangzhou.aliyuncs.com,Region 填 cn-hangzhou(按实际地域改)。": "Endpoint에 https://oss-cn-hangzhou.aliyuncs.com 을, Region에는 cn-hangzhou를 입력하세요(실제 리전에 맞게 변경).", "Endpoint 形如 http://192.168.1.10:9000(自建通常用 http);Region 一般填 us-east-1。": "Endpoint는 http://192.168.1.10:9000 형식이며(자체 호스팅은 보통 http), Region은 일반적으로 us-east-1입니다.", "Endpoint 留空即走 AWS 官方地址;Region 必须与桶所在区域一致。": "Endpoint를 비워 두면 AWS 공식 주소를 사용합니다. Region은 버킷의 리전과 일치해야 합니다.", "KB": "KB", "Linux 安装包(deb)": "Linux 패키지(deb)", "Logo 不能超过 2 MiB": "로고는 2 MiB를 초과할 수 없습니다", "Logo 仅支持 PNG、JPG、WebP 图片": "로고는 PNG, JPG, WebP 이미지만 지원합니다", "Nextcloud": "Nextcloud", "OpenAI 新版 API 用 developer 角色取代 system 承载指令,新版 OpenAI SDK 与部分客户端发的对话里会出现 role 为 developer 的消息;不少 OpenAI 兼容上游(尤其是自定义提供商的透传路径)不认识这个角色,收到就报 400。开启本项后,网关在每次转发前把 developer 角色的消息改写为 system —— 两类角色在 OpenAI 语义上等价(OpenAI 自己的迁移指南也是这么映射的),改写不影响对话内容与语义;对本来就只认 system 的各家内置上游同样无害。默认开启;关掉后 developer 消息会原样发往上游,不认识它的上游会报「角色不存在」一类的错误。": "새 버전 OpenAI API는 system 대신 developer 역할로 지시를 전달하므로, 최신 OpenAI SDK와 일부 클라이언트가 보내는 대화에 role이 developer인 메시지가 포함됩니다. 많은 OpenAI 호환 업스트림(특히 커스텀 제공자의 투과 경로)은 이 역할을 인식하지 못해 받자마자 400을 반환합니다. 이 항목을 켜면 게이트웨이가 매 전달 전에 developer 역할 메시지를 system으로 수정합니다 — 두 역할은 OpenAI 의미론에서 동등하고(OpenAI 자체 마이그레이션 가이드도 같은 매핑을 사용), 수정은 대화 내용과 의미에 영향을 주지 않으며, 애초에 system만 받는 내장 업스트림에도 무해합니다. 기본값은 켜짐. 끄면 developer 메시지가 그대로 업스트림으로 전송되며, 이 역할을 모르는 업스트림은 \"역할이 존재하지 않는다\"류의 오류를 반환합니다.", "QQ 群 · Telegram": "QQ 그룹 · Telegram", "S3 兼容存储": "S3 호환 스토리지", "Safari 没有安装按钮:点底部的「分享」,选「添加到主屏幕」,再点「添加」。": "Safari에는 설치 버튼이 없습니다. 하단의 「공유」 → 「홈 화면에 추가」 → 「추가」 순서로 누르세요.", "Secret Access Key": "Secret Access Key", "Token 读数量级": "Token 수치 표기", "UTF-8 文本文件路径,留空用内置默认提示词(通用编码助手提示词,不含任何会被上游拦截的模板句)。只在「替换 / 追加」模式下生效,透传模式不读它。": "UTF-8 텍스트 파일 경로입니다. 비워 두면 내장 기본 시스템 프롬프트를 사용합니다(범용 코딩 어시스턴트 프롬프트로, 업스트림에 차단될 만한 템플릿 문구가 없습니다). 「교체 / 추가」 모드에서만 적용되며, 패스스루 모드에서는 읽지 않습니다.", "WebView / 浏览器内核": "WebView / 브라우저 엔진", "Windows 安装包(NSIS)": "Windows 설치 프로그램(NSIS)", "Windows 服务": "Windows 서비스", "ZCode 套餐池(Start Plan)通道每条请求都要消耗一个当次铸造的人机验证令牌(一次性,2 分钟过期),库存低于该值时界面自动补铸到它。默认 3 个。调大能吸收突发并发,但用不掉的令牌 2 分钟就过期作废,烧的是上游风控配额。可填 1–10。": "ZCode 플랜 풀 (Start Plan) 채널의 각 요청은 그때그때 생성된 캡차 토큰(1회용, 2분 후 만료)을 하나 소비하며, 재고가 이 값 아래로 내려가면 UI가 이 값까지 자동으로 보충합니다. 기본값 3. 크게 잡으면 갑작스러운 동시 요청을 흡수하지만, 쓰지 못한 토큰은 2분 만에 만료되어 상류의 리스크 관리 쿼터를 태웁니다. 1–10을 입력할 수 있습니다.", "ZCode「套餐池(Start Plan)」通道的每条推理请求都要附一个当次铸造的阿里云无痕验证令牌(一次性、约 2 分钟过期):令牌由界面里的铸造守卫静默铸好、推给网关入池,转发时逐条取用。这里的三个值管的是补货节奏:①「库存目标」= 库存低于它守卫才补铸、补到它为止,默认 3 个;②「轮询间隔」= 守卫多久看一次库存,默认 2500 毫秒,只影响反应速度(库存够用时不会多铸);③「单轮铸造上限」= 发现缺货时一轮最多铸几个,默认 1 个(连铸之间固定隔 500 毫秒)。请求密集、请求日志里连续出现「需要人机验证令牌」的 503 时,把目标与单轮上限适当调大、轮询调快,能让池子跟得上消耗 —— 代价是上游(阿里云)对铸造频率有风控,铸得越多越快越容易触发限流,且用不掉的令牌 2 分钟即过期作废、等于白烧配额,所以建议小步调。保存后对下一轮补货立即生效,不用重启。": "ZCode \"플랜 풀 (Start Plan)\" 채널의 모든 추론 요청에는 그때그때 생성된 Aliyun 인비저블 캡차 토큰(1회용, 약 2분 후 만료)을 붙여야 합니다: 토큰은 UI 안의 민트 가드가 조용히 생성해 게이트웨이 풀에 밀어넣고, 포워딩은 요청마다 하나씩 꺼내 씁니다. 여기의 세 값은 보충 리듬을 관리합니다: ① \"재고 목표\" = 재고가 이 값 아래로 내려갈 때만 이 값까지 보충(기본 3); ② \"폴링 간격\" = 가드가 재고를 확인하는 주기, 기본 2500ms(반응 속도에만 영향 — 재고가 충분하면 굳이 더 만들지 않음); ③ \"1회 생성 한도\" = 재고 부족 발견 시 한 라운드에 최대 몇 개까지 만들지, 기본 1(연속 생성 사이는 고정 500ms). 요청이 많고 요청 로그에 \"캡차 토큰 필요\" 503이 계속 나온다면 목표와 1회 한도를 적당히 올리고 폴링을 빠르게 하면 풀이 소비를 따라갑니다 — 대가로 상류(Aliyun)는 생성 빈도에 리스크 관리를 두어 많이 빠르게 만들수록 제한에 걸리기 쉽고, 쓰지 못한 토큰은 어차피 2분 만에 만료되어 쿼터를 낭비하므로 조금씩 조정을 권장합니다. 저장하면 다음 보충 라운드부터 즉시 적용되며 재시작이 필요 없습니다.", "beta 版": "beta 버전", "iOS 应用": "iOS 앱", "models.dev 元数据": "models.dev 메타데이터", "models.dev 元数据已更新({count} 条)": "models.dev 메타데이터를 갱신했습니다({count}건)", "models.dev 是一个开源的模型资料库(社区维护),这里用它补齐「上游没告诉我们」的模型能力:上下文窗口、最大输出、工具调用、图片、视频、是否支持思考,以及这个模型认识哪些思考档位。优先级是:你在「模型能力」里手工改的值 > 上游清单自己声明的值 > models.dev 的值 —— 它只填上游没声明的空位,从不推翻上游已声明的。网关随包内嵌了一份快照,所以离线、首次启动、访问不通时也有数据;开启时会按「模型目录刷新」任务的间隔联网更新(同一轮里一并刷新,也可在这里立即刷新)。关闭只停联网刷新,已经拿到的数据继续用。": "models.dev는 커뮤니티가 유지하는 오픈소스 모델 데이터베이스입니다. 업스트림이 알려주지 않은 정보(컨텍스트 창, 최대 출력, 도구 호출, 이미지, 동영상, 추론 지원 여부, 그리고 이 모델이 실제로 받는 추론 레벨)를 여기서 채웁니다. 우선순위는 「모델 능력」에서 직접 수정한 값 > 업스트림 카탈로그의 선언값 > models.dev 값이며, 업스트림이 선언한 값을 뒤집지 않고 빈 자리만 채웁니다. 스냅샷이 앱에 내장되어 있어 오프라인·최초 실행·통신 불가 상황에서도 데이터가 있습니다. 켜져 있으면 「모델 카탈로그 새로고침」 주기에 맞춰 온라인으로 갱신합니다(같은 회차에 함께, 또는 여기서 즉시). 끄면 온라인 갱신만 멈추고 이미 받은 데이터는 계속 사용됩니다.", "models.dev 模型元数据": "models.dev 모델 메타데이터", "systemd 服务": "systemd 서비스", "{count} 条": "{count}건", "{count} 条 · 来自{origin}{at} · {mode}": "{count}건 · 출처: {origin}{at} · {mode}", "{count} 条规则,按列表顺序执行": "규칙 {count}개, 목록 순서대로 실행", "{d} 天 {h} 小时": "{d}일 {h}시간", "{h} 小时 {m} 分钟": "{h}시간 {m}분", "{label} 提示词文件": "{label} 시스템 프롬프트 파일", "{label} 的提示词模式": "{label}의 시스템 프롬프트 모드", "{label}({message})": "{label}({message})", "{lines} 行、{chars} 字符(按当前草稿计)": "{lines}행, {chars}자(현재 초안 기준)", "{minutes} 分钟": "{minutes}분", "{models} 同时出现在两块设置里,会按「辅助识图」处理。想改的话,把其中一个从这边的模型名单里去掉。": "{models}이(가) 두 블록에 모두 있습니다. 이 경우 \"보조 이미지 읽기\"로 처리됩니다. 바꾸려면 한쪽 모델 목록에서 빼세요.", "{mode}生效:上游收到的 system 来自{source}{lines}。": "{mode} 적용: 업스트림이 받는 system은 {source}에서 가져옵니다{lines}.", "{m} 分钟": "{m}분", "{noun}不能为空(可填 {min}–{max})": "{noun} 값은 비워 둘 수 없습니다({min}–{max} 입력 가능)", "{noun}必须在 {min}–{max} 之间(当前填的是 {text})": "{noun} 값은 {min}–{max} 사이여야 합니다(현재 입력: {text})", "{noun}必须是整数": "{noun} 값은 정수여야 합니다", "{n} B": "{n} B", "{n} GB": "{n} GB", "{n} KB": "{n} KB", "{n} MB": "{n} MB", "{n} 个头将随每个 Cline 请求发送": "헤더 {n}개가 모든 Cline 요청과 함께 전송됩니다", "{n} 台可选 · 点此切换": "{n}대 · 눌러서 전환", "{n} 项 · {shown} 显示": "{n}개 · {shown}개 표시", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "메뉴 {total}개 · 표시 {shown} · 숨김 {hidden} · 그룹 {groups}개", "{way}的适用模型": "{way}의 대상 모델", "⚠️ 密钥警告": "⚠️ 키 경고", "⚠️ 已关闭「{label}」的机器人校验": "⚠️ \"{label}\"의 봇 확인을 껐습니다", "⚠️ 机器人校验已关闭": "⚠️ 로봇 검증이 꺼져 있습니다", "✅ Cline 伪装头已保存": "✅ Cline 위장 헤더가 저장되었습니다", "✅ models.dev 模型元数据已开启": "✅ models.dev 모델 메타데이터를 켰습니다", "✅ 云同步设置已保存": "✅ 클라우드 동기화 설정이 저장되었습니다", "✅ 会话图片压缩已开启": "✅ 이미지 압축을 켰습니다", "✅ 出站指纹脱敏已开启": "✅ 아웃바운드 핑거프린트 마스킹이 켜졌습니다", "✅ 密码已修改,其他设备的登录已失效": "✅ 비밀번호를 변경했습니다. 다른 기기의 로그인은 해제되었습니다", "✅ 导入完成:{summary}": "✅ 가져오기 완료: {summary}", "✅ 已上传到云端({size})": "✅ 클라우드에 업로드했습니다({size})", "✅ 已为「{label}」装上网关自带提示词": "✅ 「{label}」에 게이트웨이 내장 시스템 프롬프트를 설치했습니다", "✅ 已从云端恢复{note}": "✅ 클라우드에서 복원했습니다{note}", "✅ 已保存:{label}": "✅ 저장됨: {label}", "✅ 已保存:{label} {value}": "✅ 저장됨: {label} {value}", "✅ 已保存:指定错误码直接换号": "✅ 저장됨: 지정 오류 코드 즉시 계정 전환", "✅ 已保留 {days} 天": "✅ {days}일 보관합니다", "✅ 已保留 {days} 天,超出部分已清理": "✅ {days}일 보관하며, 초과분은 정리했습니다", "✅ 已加密备份 {n} 张表({size}),包含恢复密钥:{file}": "✅ 테이블 {n}개 암호화 백업 완료({size}), 복원 키 포함: {file}", "✅ 已备份 {n} 张表({size})到 {file}": "✅ 테이블 {n}개({size})를 {file}(으)로 백업했습니다", "✅ 已导入账号密钥,请继续下载": "✅ 계정 키를 가져왔습니다. 계속 다운로드하세요", "✅ 已导出 {count} 个账号{note}{file}": "✅ 계정 {count}개를 내보냈습니다{note}{file}", "✅ 已开启「{label}」的机器人校验": "✅ \"{label}\"의 봇 확인을 켰습니다", "✅ 已恢复 {n} 张表{note}": "✅ 테이블 {n}개를 복원했습니다{note}", "✅ 已改用 k / M / B 缩写": "✅ k / M / B 약어로 변경했습니다", "✅ 已改用本地量级词(万 / 亿式)": "✅ 로컬 규모 단어(만 / 억 단위)로 전환했습니다", "✅ 已自动创建网关 Key「默认」(可在「网关 Key」页查看)": "✅ 게이트웨이 키 「기본」을 자동으로 만들었습니다(「게이트웨이 키」 페이지에서 확인할 수 있습니다)", "✅ 已解除内容拦截降级": "✅ 콘텐츠 차단 폴백을 해제했습니다", "✅ 开发者角色兼容已开启": "✅ 개발자 역할 호환이 켜졌습니다", "✅ 指纹脱敏设置已保存": "✅ 지문 마스킹 설정을 저장했습니다", "✅ 数量上限已设为 {count} 条": "✅ 건수 상한을 {count}건으로 설정했습니다", "✅ 数量上限已设为 {count} 条,超出部分已清理": "✅ 건수 상한을 {count}건으로 설정하고 초과분을 삭제했습니다", "✅ 机器人校验已开启": "✅ 로봇 검증이 켜졌습니다", "✅ 第三方模型回答完自动折叠过程已开启": "✅ 타사 모델의 답변 후 과정 자동 접기를 켰습니다", "✅ 设置已保存,应用正在重启…": "✅ 설정이 저장되었습니다. 앱을 다시 시작하는 중…", "✅ 调试模式已关闭": "✅ 디버그 모드가 꺼졌습니다", "✅ 调试模式已开启": "✅ 디버그 모드가 켜졌습니다", "✅ 路由设置已保存": "라우팅 설정이 저장되었습니다", "✅ 连接成功:{path}": "✅ 연결 성공: {path}", "、{n} 个自定义提供商": ", 커스텀 제공자 {n}개", "。事件日志、请求明细、调试报文与面板登录态保持不变。替换前会自动把当前业务数据备份到配置目录的 backups/ 下。": ". 이벤트 로그, 요청 상세, 디버그 패킷, 패널 로그인 상태는 그대로 유지됩니다. 교체 전에 현재 업무 데이터를 설정 디렉터리의 backups/ 에 자동으로 백업합니다.", "「{label}」将从 {previous} 天改为 {days} 天。": "「{label}」이(가) {previous}일에서 {days}일로 변경됩니다.", "「{label}」将从 {previous} 条改为 {count} 条。": "「{label}」을(를) {previous}건에서 {count}건으로 변경합니다.", "「{label}」改用内置默认提示词": "「{label}」이(가) 내장 기본 시스템 프롬프트로 전환되었습니다", "「{label}」的提示词文件已更新": "「{label}」의 시스템 프롬프트 파일이 업데이트되었습니다", "「{label}」的提示词正文已更新": "「{label}」의 시스템 프롬프트 본문이 업데이트되었습니다", "「{label}」的模式改为「{mode}」": "「{label}」의 모드가 「{mode}」(으)로 변경되었습니다", "「{label}」的网关自带提示词已改回官方原文": "「{label}」의 게이트웨이 내장 시스템 프롬프트를 공식 원문으로 되돌렸습니다", "「{label}」的网关自带提示词正文已更新": "「{label}」의 게이트웨이 내장 시스템 프롬프트 본문이 업데이트되었습니다", "「模型管理」里每个能力的来源标记(上游 / models.dev / 已覆盖)读的就是这份数据;映射弹窗的思考档位下拉也按这里的数据只列该模型真实认识的档位。": "「모델 관리」의 각 능력 출처 표시(업스트림 / models.dev / 직접 설정)가 이 데이터를 읽습니다. 매핑 대화상자의 추론 레벨 목록도 이 데이터를 기준으로 해당 모델이 실제로 받는 레벨만 표시합니다.", "「用哪份提示词」本来是按上游分别决定的事,所以每家可以有自己的模式、提示词文件与正文:不在这里列出的提供商一律沿用上面那份默认设置,「跟随默认」把这一家取消、回到默认。带「网关自带」那一行的家(目前是 ZCode 两家)默认就列在这里 —— 那一段是网关自己装上去的文本,不来自客户端也不来自提示词文件,默认开启、可以关掉,也可以改它的正文(改过的那一段以你的文本为准);关掉后还能不能通过上游校验,取决于上游当下的口径,行内说明了实测依据。「模式 / 提示词文件 / 正文」管的是客户端自己的 system 怎么处理,与那个开关是两件事。": "「어느 프롬프트를 쓸지」는 원래 업스트림별로 결정하는 일이므로, 제공자마다 자체 모드와 시스템 프롬프트 파일, 본문을 가질 수 있습니다. 여기에 나열되지 않은 제공자는 모두 위의 기본 설정을 따르며, 「기본값 따르기」를 선택하면 해당 제공자의 개별 설정이 취소되고 기본값으로 돌아갑니다. 「게이트웨이 내장」 항목이 있는 제공자(현재 ZCode 두 곳)는 기본적으로 여기에 나열됩니다. 그 단락은 게이트웨이가 직접 설치한 텍스트로, 클라이언트에서도 시스템 프롬프트 파일에서도 온 것이 아닙니다. 기본적으로 켜져 있으며 끌 수 있고 본문도 수정할 수 있습니다(수정한 단락은 입력한 텍스트가 우선). 끈 뒤에도 업스트림 검증을 통과할 수 있는지는 업스트림의 현재 기준에 달려 있으며, 실측 근거는 행 안에 설명되어 있습니다. 「모드 / 시스템 프롬프트 파일 / 본문」은 클라이언트 자체의 system을 어떻게 처리할지를 다루며, 그 스위치와는 별개의 일입니다.", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "\"설정\"은 고정 항목이라 그 그룹을 통째로 숨길 수 없습니다. 다른 메뉴는 개별로 숨길 수 있습니다", "「请求日志」页的逐条请求记录,默认 99999 天(近似全量保留),可填 1–99999 天。": "「요청 로그」페이지의 요청별 기록. 기본 99999일(거의 전체 보관)이며 1~99999일까지 입력할 수 있습니다.", "「请求日志」页的逐条请求记录,默认 99999 天,可填 1–99999 天;同时受数量上限限制。": "「요청 로그」페이지의 요청별 기록입니다. 기본값은 99999일이며 1–99999일을 입력할 수 있습니다. 건수 상한도 적용됩니다.", "一个 .a2ab 文件即可跨机器恢复,账号、网关 Key、GitHub 令牌与云同步凭据无需另行复制密钥。插件程序与库外文件不在整库备份范围。": ".a2ab 파일 하나로 다른 기기에 복원할 수 있으며 계정, 게이트웨이 Key, GitHub 토큰 및 클라우드 동기화 자격 증명의 키를 별도로 복사할 필요가 없습니다. 플러그인 프로그램과 데이터베이스 외부 파일은 포함되지 않습니다.", "一段内置装配": "내장 기본 구성", "三档数据各自独立计时,超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件;请求日志是网关每次转发到上游的逐条记录;按天聚合供报表页的热力图与按天趋势使用。请求日志与按天聚合默认 99999 天(约 274 年,效果上等于全量保留),事件日志默认 30 天。把某一档改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。三档的可填范围均为 1–99999 天。": "세 가지 데이터는 각각 독립적으로 계산되며, 보관 일수를 초과한 부분은 삭제됩니다: 이벤트 로그는 로그인, 계정 전환, 429 전환 같은 시스템 이벤트이고, 요청 로그는 게이트웨이가 업스트림으로 전달할 때마다 남기는 기록이며, 일별 집계는 리포트 페이지의 히트맵과 일별 추세에 사용됩니다. 요청 로그와 일별 집계의 기본값은 99999일(약 274년, 사실상 전량 보관)이고 이벤트 로그의 기본값은 30일입니다. 어느 하나를 줄여(예: 30일 → 7일) 저장하면 초과된 과거 데이터가 즉시 삭제되며 되돌릴 수 없습니다. 늘리거나 그대로 두면 아무것도 삭제되지 않습니다. 세 항목 모두 입력 범위는 1~99999일입니다.", "三段各自成块,所以分开编辑": "세 단락이 각각 별도 블록이라 따로 편집합니다", "上传": "업로드", "上传 Logo": "로고 업로드", "上传中…": "업로드 중…", "上传内容含加密后的账号凭证与网关配置": "업로드 내용에는 암호화된 계정 자격 증명과 게이트웨이 설정이 포함됩니다", "上传到云端": "클라우드로 업로드", "上传失败:{message}": "업로드 실패: {message}", "上次同步:{time}({action})": "마지막 동기화: {time} ({action})", "上次成功刷新的结果(存在本机数据库里)": "마지막으로 성공한 새로고침 결과(로컬 데이터베이스에 저장)", "上游 CLI 版本": "업스트림 CLI 버전", "上游客户端版本": "업스트림 클라이언트 버전", "上游按": "업스트림이 ", "上游按「结构」校验身份:三段必须各自成块,所以这里分开编辑三段(不能合成一段)。动态段里的运行值写成占位符,发请求时才替换:{cwd} 工作目录、{platform} 平台、{shell} shell、{os_version} 系统版本、{git} 是否 git 仓库、{provider} 提供方标识、{model} 模型名。清空某一段 = 那一段恢复官方原文。第三段发出时前面会自带一个空行(官方形状)。": "업스트림은 「구조」로 신원을 검증합니다. 세 단락이 각각 별도 블록이어야 하므로 여기서는 세 단락을 따로 편집합니다(하나로 합칠 수 없습니다). 동적 단락의 런타임 값은 플레이스홀더로 작성하며 요청을 보낼 때 치환됩니다: {cwd} 작업 디렉터리, {platform} 플랫폼, {shell} shell, {os_version} OS 버전, {git} git 저장소 여부, {provider} 제공자 식별자, {model} 모델 이름. 단락을 비우면 그 단락은 공식 원문으로 복원됩니다. 세 번째 단락은 전송 시 앞에 빈 줄이 하나 자동으로 붙습니다(공식 형태).", "上游未配置": "업스트림 미설정", "上游模型繁忙时会先排队(回一句「建议 N 秒后再来」):网关等一会儿再发同一请求,最多等几次。默认 2 次,可填 0–10;填 0 表示不等待,排队直接返回 503 并说明「不是登录态或额度问题」。": "업스트림 모델이 바쁘면 먼저 큐잉합니다(「N초 후에 다시 오세요」라고 응답하며). 게이트웨이는 잠시 기다렸다가 같은 요청을 다시 보내며, 최대 몇 번까지 기다립니다. 기본값 2회, 0–10 입력 가능하며, 0은 기다리지 않고 큐잉을 곧바로 503으로 반환하면서 「로그인 상태나 할당량 문제가 아닙니다」라고 설명합니다.", "上游用「逐字精确匹配」的方式审核请求体(不是语义审核):客户端注入的固定模板句、计费头字段名、以及某些裸错误码出现在报文里就会整单拦截,返回 400。开启本项后,网关在每次转发前改写这些指纹 —— 表头键值整段删除,承载语义的模板句只换一个词(如 official CLI for Claude → official CLI tool for Claude),对话内容与语义都不受影响。规则集是内置的,不需要也无法维护词表。关掉本项后客户端模板会原样发往上游,可能重新出现模板句被误拦的报错。": "업스트림은 요청 본문을 「글자 단위 정확 일치」 방식으로 검사합니다(의미 검사가 아닙니다). 클라이언트가 주입한 고정 템플릿 문구, 과금 헤더 필드 이름, 일부 날것의 오류 코드가 메시지에 나타나면 요청 전체가 차단되어 400을 반환합니다. 이 항목을 켜면 게이트웨이가 전달 전에 이런 핑거프린트를 매번 다시 씁니다. 헤더 키-값은 통째로 삭제하고, 의미를 담은 템플릿 문구는 단어 하나만 바꿉니다(예: official CLI for Claude → official CLI tool for Claude). 대화 내용과 의미는 영향을 받지 않습니다. 규칙 집합은 내장되어 있어 단어 목록을 유지할 필요도, 할 수도 없습니다. 이 항목을 끄면 클라이언트 템플릿이 그대로 업스트림으로 전송되어 템플릿 문구가 잘못 차단되는 오류가 다시 나타날 수 있습니다.", "上游请求四个阶段各自的等待上限(秒,1~3600):①「连接中超时」= 建立 TCP/TLS 连接或代理隧道的最大等待,默认 30 秒;②「等待响应超时」= 请求发出后等上游响应头的最大时间,默认 300 秒 —— 网关请求上游恒带 stream,响应头在 SSE 建立时就到达,与模型思考多久无关;③「流式响应空闲超时」= 流式响应相邻两块数据之间允许的最大空闲,收到新数据即重新计时,默认 300 秒 —— 上游长时间不吐数据即判定连接僵死并断开;④「非流式响应超时」= 读完整份非流式响应体的总预算(一次性计时、不重置),默认 300 秒。四项都是「等待上限」,只要数据还在来,正常的流式回答就一直往下传。保存后对下一个请求立即生效,不用重启。": "업스트림 요청의 네 단계별 대기 상한(초, 1~3600)입니다. ①「연결 타임아웃」= TCP/TLS 연결 또는 프록시 터널을 설정할 때 기다리는 최대 시간, 기본 30초. ②「응답 대기 타임아웃」= 요청을 보낸 뒤 업스트림 응답 헤더를 기다리는 최대 시간, 기본 300초. 게이트웨이는 업스트림에 항상 stream으로 요청하므로 응답 헤더는 SSE가 연결될 때 도착하며 모델이 얼마나 오래 생각하는지와는 무관합니다. ③「스트리밍 응답 유휴 타임아웃」= 스트리밍 응답의 인접한 두 데이터 블록 사이에 허용되는 최대 유휴 시간으로, 새 데이터를 받으면 다시 시간을 재며, 기본 300초입니다. 업스트림이 오랫동안 데이터를 내보내지 않으면 연결이 멈춘 것으로 판단해 끊습니다. ④「비스트리밍 응답 타임아웃」= 비스트리밍 응답 본문 전체를 읽는 총 예산(한 번만 시간을 재고 재설정하지 않음), 기본 300초. 네 항목 모두 「대기 상한」이며, 데이터가 계속 오는 한 정상적인 스트리밍 응답은 계속 전달됩니다. 저장 후 다음 요청부터 즉시 적용되며 재시작이 필요 없습니다.", "上游调试报文": "업스트림 디버그 페이로드", "上移": "위로", "上移规则": "규칙 위로 이동", "下次自动重试:{time}": "다음 자동 재시도: {time}", "下游正文": "다운스트림 본문", "下移": "아래로", "下移规则": "규칙 아래로 이동", "下载失败:{message}": "다운로드 실패: {message}", "不一致": "불일치", "不做会话识别,每条请求都重新按策略选路。": "세션을 식별하지 않고 요청마다 전략에 따라 다시 선택합니다.", "不做图片兼容": "이미지 호환 처리 안 함", "不可用": "사용 불가", "与网关同源的面板;完整管理功能在桌面端": "게이트웨이와 같은 출처의 패널입니다. 전체 관리는 데스크톱에서 하세요", "两张开关分别管桌面端(应用内窗口,也包含开启局域网访问后从其他设备访问的那份面板)与网页端(Docker / 服务端自托管的浏览器面板)。默认都开启;桌面端只在本机使用、嫌验证耗时可以关掉,网页端暴露在网络上,建议保持开启。": "두 스위치는 데스크톱 쪽(앱 내 창, LAN 액세스가 켜졌을 때 다른 기기에서 여는 패널 포함)과 웹 쪽(Docker / 서버가 호스팅하는 브라우저 패널)을 따로 제어합니다. 기본값은 둘 다 켜짐입니다. 로컬에서만 쓰고 인증 대기 시간이 부담되면 데스크톱 쪽을 꺼도 되지만, 네트워크에 노출되는 웹 쪽은 켜 두는 것을 권장합니다.", "两次输入的备份密码不一致": "두 번 입력한 백업 비밀번호가 일치하지 않습니다", "两次输入的新密码不一致": "새 비밀번호가 일치하지 않습니다", "两次重试之间的等待时间,两项共用,可填 0–300 秒。": "두 재시도 사이의 대기 시간이며 두 항목이 공유합니다. 0–300초를 입력할 수 있습니다.", "两种方式不会互相自动切换。": "두 방식 사이에서 자동으로 전환하지 않습니다.", "两组设置分别用于桌面端托管的网页管理面板与网页端(Docker / 服务端)的浏览器面板。是否可被其他设备访问取决于网络访问与防火墙设置,不限于局域网。两端默认都开启人机验证,建议保持开启。": "두 설정 그룹은 데스크톱 앱이 제공하는 웹 관리 패널과 Docker / 서버가 제공하는 브라우저 패널에 각각 적용됩니다. 다른 기기의 접근 가능 여부는 네트워크 접근과 방화벽 설정에 따라 달라지며 LAN으로 제한되지 않습니다. 두 환경 모두 사람 확인이 기본으로 켜져 있으며, 계속 켜 두는 것을 권장합니다.", "为了安全,开启前需要先注册一个": "보안을 위해, 켜기 전에 다음을 먼저 등록해야 합니다: ", "主进程未返回启动设置,请更新桌面端后重试": "메인 프로세스가 시작 설정을 반환하지 않았습니다. 데스크톱 앱을 업데이트한 후 다시 시도하세요", "主进程桥不可用": "메인 프로세스 브리지를 사용할 수 없습니다", "主题": "테마", "事件日志": "이벤트 로그", "事件日志保留天数": "이벤트 로그 보관 일수", "云同步": "클라우드 동기화", "产品名": "제품 이름", "产品名不能包含斜杠或版本号,请改用前缀匹配": "제품 이름에 슬래시나 버전을 포함할 수 없습니다. 접두사 일치를 사용하세요.", "人机验证": "사람 확인", "人机验证失败": "사람 확인 실패", "人机验证已完成": "사람 확인 완료", "人机验证还在计算,请稍候": "사람 확인을 계산 중입니다. 잠시 기다려 주세요", "仅在同一会话、同一问题和相同权限范围内复用;追问新细节会重新识读。缓存只存在本机内存。": "동일한 대화, 질문 및 권한 범위에서만 결과를 재사용합니다. 새로운 세부 사항을 질문하면 다시 읽습니다. 캐시는 로컬 메모리에만 보관됩니다.", "仅在账号、配置、签到或余额等实质内容变化时上传;导出时间或查询时间单独变化不会触发上传。": "계정, 설정, 체크인 결과, 잔액 등 실제 내용이 변경된 경우에만 업로드합니다. 내보내기 시각이나 조회 시각만 변경되면 업로드하지 않습니다.", "仅处理本次转发副本,不修改客户端选择,也不删除当前或历史图片。": "이번 전달 사본만 처리합니다. 클라이언트의 선택을 변경하거나 현재 또는 이전 이미지를 삭제하지 않습니다.", "仅影响面板登录与注册,不影响 API Key 调用。保存后生效,已登录会话不会退出。": "패널 로그인과 가입에만 적용되며 API 키 호출에는 영향을 주지 않습니다. 저장하면 적용되고 기존 로그인 세션은 유지됩니다.", "仅本机": "이 기기만", "仅用现有数据、不联网刷新": "보유 데이터만 사용, 온라인 갱신 안 함", "从云端恢复": "클라우드에서 복원", "从桌面图标启动,全屏、无地址栏。想卸载:长按图标删除,或清除浏览器站点数据。": "홈 화면 아이콘으로 실행합니다. 전체 화면, 주소 표시줄 없음. 삭제하려면 아이콘을 길게 눌러 제거하거나 브라우저 사이트 데이터를 지우세요.", "优先使用当前路由内的视觉模型": "현재 라우트의 비전 모델 우선 사용", "优先在当前路由内找可用的视觉模型,找不到就用 {model} 直接回答,不再回到原模型。": "현재 라우트 안에서 쓸 수 있는 비전 모델을 우선 사용하고, 없으면 {model}이(가) 원래 모델 대신 바로 답합니다.", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "그룹·순서·표시 설정을 기본값으로 되돌립니다. 직접 만든 그룹은 삭제됩니다(메뉴는 유지됩니다).", "会话图片压缩设置已刷新": "이미지 압축 설정을 새로 고쳤습니다", "位置": "위치", "位置与端口": "위치 및 포트", "使用 Rust 正则语法,保存时由后端校验;不支持环视和反向引用。": "Rust 정규식 문법을 사용하며 저장 시 백엔드에서 검증합니다. 전후방 탐색과 역참조는 지원하지 않습니다.", "使用中文单位(亿 / 万)": "중국어 단위 사용 (억 / 만)", "使用本地量级词(万 / 亿式)": "로컬 규모 단어 사용(만 / 억 단위)", "使用默认值": "기본값 사용 중", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "사이드바 레이아웃 모듈이 로드되지 않았습니다(ui/sidebar-layout.js는 app.js보다 먼저 포함되어야 합니다).", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "사이드바에 표시되는 메뉴가 없습니다. 설정 → 표시 → 사이드바 메뉴에서 필요한 항목을 켜세요.", "侧边栏菜单": "사이드바 메뉴", "保存上游原始报文(请求头、请求体、响应头、响应体)": "업스트림 원본 메시지 저장(요청 헤더, 요청 본문, 응답 헤더, 응답 본문)", "保存单独配置": "모델별 설정 저장", "保存后以这里的文本为准": "저장하면 여기의 텍스트가 우선합니다", "保存后对下一轮补货立即生效,不用重启。守卫跑在应用界面里:轻量模式关窗销毁界面期间无法铸造,走套餐池(Start Plan)通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。": "저장하면 다음 보충 라운드부터 즉시 적용되며 재시작은 필요 없습니다. 가드는 앱 UI 안에서 동작합니다: 경량 모드로 창을 닫아 UI가 파괴된 동안에는 토큰을 생성할 수 없으며, 플랜 풀 (Start Plan) 채널의 요청은 사유와 함께 503으로 요청 로그에 기록됩니다. UI를 다시 열면 자동으로 복구됩니다.", "保存后应用将重启以生效。": "저장 후 적용을 위해 앱이 다시 시작됩니다.", "保存后状态读取立即生效。后台不会自动生成令牌;需要人机验证时,在账号的「套餐明细」中主动开始验证。模型请求免验证时无需保持界面打开。": "저장 후 상태 조회 설정이 즉시 적용됩니다. 토큰은 자동으로 생성하지 않습니다. 인증이 필요하면 계정의 「플랜 상세」에서 직접 시작하세요. 모델 요청에 인증이 필요 없으면 화면을 열어 둘 필요가 없습니다.", "保存后立即生效,不用重启:策略与粘性作用于**下一次**转发的选路,进行中的请求不受影响。": "저장 즉시 적용, 재시작 불필요: 전략과 고정은 **다음** 전송의 선택부터 적용되며 진행 중인 요청에는 영향이 없습니다.", "保存后立即生效,不用重启;次数用尽仍失败时,错误原样返回给客户端。": "저장 후 재시작 없이 즉시 적용됩니다. 횟수를 다 써도 실패하면 오류가 그대로 클라이언트에 반환됩니다.", "保存后立即生效,不用重启;超时按上游失败处理(计入请求日志的「错误」列,并按「请求重试」的设置决定是否重试)。": "저장 후 재시작 없이 즉시 적용됩니다. 타임아웃은 업스트림 실패로 처리됩니다(요청 로그의 「오류」 열에 집계되며, 「요청 재시도」 설정에 따라 재시도 여부가 결정됩니다).", "保存后立即生效:保留天数和数量上限同时生效,调小任一项会立即清理超出的历史数据,且不可恢复。": "저장 즉시 적용됩니다. 보관 일수와 건수 상한이 함께 적용되며 어느 하나를 줄이면 초과한 과거 데이터가 즉시 삭제됩니다. 복구할 수 없습니다.", "保存后立即生效:改小保留天数会立刻删除超出的历史数据,且不可恢复。": "저장 후 즉시 적용됩니다. 보관 일수를 줄이면 초과된 과거 데이터가 즉시 삭제되며 복구할 수 없습니다.", "保存在当前网关,登录页也会公开显示。不会更改安装包、快捷方式、系统托盘图标或软件版本信息。": "현재 게이트웨이에 저장되며 로그인 페이지에도 공개 표시됩니다. 설치 파일, 바로가기, 시스템 트레이 아이콘 또는 소프트웨어 버전 정보는 변경하지 않습니다.", "保存并重启": "저장 후 재시작", "保存设置": "설정 저장", "保持当前路由范围,不跳到其他路由组。": "현재 라우트 범위를 유지하며 다른 라우트 그룹으로 넘어가지 않습니다.", "保活换行丢弃": "keepalive 개행 제거", "保留原图和对话,由视觉模型直接回答本次请求。": "원본 이미지와 대화를 유지하고 비전 모델이 이번 요청에 직접 답변합니다.", "保留原图,选择视觉模型": "원본 이미지를 유지하고 비전 모델 선택", "保留图片中的文字、代码、数字、布局与状态。识读失败就停止,不删图后继续回答。": "이미지의 텍스트, 코드, 숫자, 배치 및 상태를 보존합니다. 읽기에 실패하면 중지하며 이미지를 삭제한 채 답변을 계속하지 않습니다.", "保留天数已刷新": "보관 일수를 새로 고쳤습니다", "保留旧版配置兼容,当前不会自动连铸。每次点击「开始验证」只取得一枚令牌,失败或取消后停止。": "이전 설정과의 호환성을 위해 유지합니다. 토큰을 자동으로 연속 생성하지 않습니다. 「인증 시작」을 누를 때마다 토큰 하나만 가져오며 실패하거나 취소하면 중지합니다.", "保留草稿并读取最新设置": "초안을 유지하고 최신 설정 불러오기", "修改密码": "비밀번호 변경", "修改密码需要输入当前密码;修改成功后,其他设备 / 浏览器上的登录会立即失效,当前这条会话保留。": "비밀번호 변경에는 현재 비밀번호가 필요합니다. 성공하면 다른 기기·브라우저의 로그인은 즉시 해제되고 현재 세션만 유지됩니다.", "值": "값", "值与默认值相同的行不占覆盖(存的是「改过的键」,不是全量配置);值留空保存表示这个头不发送,删除改过的行表示回落默认值。改完立即生效,不用重启。": "기본값과 같은 값의 행은 덮어쓰기에 포함되지 않습니다(저장되는 것은 「수정된 키」이며 전체 설정이 아닙니다). 값을 비워 저장하면 해당 헤더를 전송하지 않고, 수정한 행을 삭제하면 기본값으로 돌아갑니다. 수정 후 재시작 없이 즉시 적용됩니다.", "值(留空 = 不发送)": "값(비우면 = 전송 안 함)", "停止并说明原因": "중지하고 이유 표시", "像素": "px", "允许其他设备访问前,需要设置面板管理员账号与密码。注册完成后会继续开启流程并重启应用。": "다른 기기의 접근을 허용하기 전에 패널 관리자 계정과 비밀번호를 설정하세요. 등록이 완료되면 네트워크 접근을 켜고 앱을 다시 시작합니다.", "允许其他设备访问网关": "다른 기기의 게이트웨이 접근 허용", "允许局域网内的设备访问网关": "LAN 내 기기의 게이트웨이 접근 허용", "允许无 Key 裸跑": "키 없이 실행 허용", "允许浏览器里的页面跨来源调用网关(/v1/*)": "브라우저 페이지가 교차 출처로 게이트웨이를 호출하도록 허용(/v1/*)", "允许的域名": "허용된 호스트 이름", "先发送原图,明确拒图后补救": "원본 이미지를 먼저 보내고 명시적으로 거부된 경우에만 호환 처리", "先把图片交给视觉模型读一遍,再让原模型结合读到的内容回答。": "먼저 비전 모델이 이미지를 읽고, 원래 모델이 읽은 내용을 바탕으로 답합니다.", "全局配置": "전역 설정", "全部已配置": "모두 설정됨", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 中,加密密钥单独保存在库外。跨机器备份请使用「整库备份 / 恢复」,不要只复制数据库。更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "계정, 로그, 요청 기록, 디버그 데이터 및 설정은 agent2api.db에 저장되며 암호화 키는 별도로 보관됩니다. 기기 간 이동에는 데이터베이스만 복사하지 말고 전체 백업 / 복원을 사용하세요. 저장 위치를 변경하려면 AGENT2API_PROXY_HOME을 설정한 후 앱을 다시 시작하세요.", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 这一个 SQLite 数据库里。备份时只需拷贝这个文件;更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "모든 데이터(계정, 이벤트 로그, 요청 기록, 디버그 메시지, 설정)는 구성 디렉터리의 agent2api.db라는 하나의 SQLite 데이터베이스에 통합 저장됩니다. 백업할 때는 이 파일만 복사하면 됩니다. 저장 위치를 바꾸려면 환경 변수 AGENT2API_PROXY_HOME을 설정한 후 프로그램을 다시 시작하세요.", "全部角色": "모든 역할", "全部角色沿用原有行为,包含思考内容和工具参数;指定角色时只改消息正文,未选角色及思考内容、工具参数保持原样。": "모든 역할은 추론 내용과 도구 인수를 포함하는 기존 동작을 유지합니다. 역할을 지정하면 메시지 본문만 수정하며 선택하지 않은 역할, 추론 내용과 도구 인수는 그대로 유지합니다.", "共享视觉模型已变更,请重新确认并保存,避免把图片交给未经确认的模型。": "공유 비전 모델이 변경되었습니다. 확인하지 않은 모델에 이미지를 보내지 않도록 다시 확인하고 저장하세요.", "共用设置:{providers}": "공유 설정: {providers}", "关闭后不再提供网页管理面板,本机桌面程序仍可正常管理;已开启的 API 转发不受影响。": "끄면 웹 관리 패널 제공을 중단합니다. 이 기기의 데스크톱 앱에서는 계속 관리할 수 있으며, API 전달에는 영향이 없습니다.", "关闭后手动上传 / 下载也会被拒绝。": "끄면 수동 업로드/다운로드도 거부됩니다.", "关闭后网关只监听 127.0.0.1,其他设备将无法直接连接,网页管理面板也会一并关闭。已配置的网关 Key 与账号不受影响。": "끄면 게이트웨이가 127.0.0.1에서만 수신하므로 다른 기기에서 직접 연결할 수 없으며, 웹 관리 패널도 함께 꺼집니다. 기존 게이트웨이 키와 계정에는 영향이 없습니다.", "关闭后网关回到只监听 127.0.0.1,局域网内的设备将无法继续访问;已配置的网关 Key 与账号都不受影响。": "끄면 게이트웨이가 다시 127.0.0.1만 수신하며 LAN 내 기기는 더 이상 접근할 수 없습니다. 이미 설정한 게이트웨이 키와 계정은 영향을 받지 않습니다.", "关闭后,管理界面不再从局域网提供,只有本机的桌面程序可以管理;已开启的 API 转发不受影响。": "끄면 관리 화면이 더 이상 LAN에 제공되지 않고 로컬 데스크톱 앱에서만 관리할 수 있습니다. 이미 켜 둔 API 포워딩은 영향을 받지 않습니다.", "关闭局域网访问": "LAN 접근 끄기", "关闭并重启": "닫고 재시작", "关闭思考": "추론 비활성화", "关闭窗口即退出程序,后台转发随之中断": "창을 닫으면 프로그램이 종료되고 백그라운드 포워딩도 중단됩니다", "关闭窗口时最小化到托盘": "창을 닫을 때 트레이로 최소화", "关闭窗口时程序不退出,转发继续在后台运行;退出请用托盘菜单": "창을 닫아도 프로그램이 종료되지 않고 포워딩이 백그라운드에서 계속 실행됩니다. 종료하려면 트레이 메뉴를 사용하세요", "关闭网络访问": "네트워크 접근 끄기", "兼容处理最长等待": "호환 처리 최대 대기", "兼容处理最长等待(秒)": "호환 처리 최대 대기 시간(초)", "内容拦截降级": "콘텐츠 차단 폴백", "内置识别、自定义规则与来源声明": "내장 식별, 사용자 규칙 및 출처 선언", "内置软件标识规则": "내장 소프트웨어 식별 규칙", "内置默认": "내장 기본값", "内置默认提示词": "내장 기본 시스템 프롬프트", "再输入一次新密码": "새 비밀번호를 한 번 더 입력하세요", "凭据类请求头已脱敏。": "자격 증명 계열 요청 헤더는 마스킹되었습니다.", "凭证只保存在这台手机上,按服务器分别存放": "자격 증명은 이 기기에만 저장되며 서버별로 따로 보관됩니다", "出问题时把这一页截图,或点「复制全部信息」把文本贴进反馈,一般就能定位到大致原因。": "문제가 생기면 이 페이지를 캡처하거나 \"모든 정보 복사\"로 텍스트를 복사해 제보에 붙여 주세요. 대개 그것만으로 원인을 좁힐 수 있습니다.", "分享图标在 Safari 底部工具栏中间": "공유 아이콘은 Safari 하단 도구 막대 가운데에 있습니다", "分组名": "그룹 이름", "分组名,例如「常用」": "그룹 이름, 예: \"즐겨찾기\"", "切换视觉模型": "비전 모델로 전환", "切换视觉模型 · 视觉模型回答": "모델 전환 · 비전 모델이 답변", "切换视觉模型配置": "비전 모델 전환 설정", "切换账号重试次数": "계정 전환 재시도 횟수", "刚刚从 models.dev 拉到的最新数据": "models.dev에서 방금 가져온 최신 데이터", "删除 {code}": "{code} 삭제", "删除分组": "그룹 삭제", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "그룹 \"{name}\"을(를) 삭제할까요? 메뉴 {n}개는 \"{target}\"(으)로 이동하며 사라지지 않습니다.", "删除匹配内容": "일치한 내용 삭제", "删除后不再接受这个分类的来源声明,历史记录保留原来的名称和用量。": "삭제 후 이 분류의 출처 선언은 허용되지 않습니다. 과거 기록은 원래 이름과 사용량을 유지합니다.", "删除后,新请求不再使用这条规则;历史记录保持不变。": "삭제 후 새 요청에는 이 규칙이 사용되지 않습니다. 과거 기록은 유지됩니다.", "删除客户端分类": "클라이언트 분류 삭제", "删除状态码 {code}": "상태 코드 {code} 삭제", "删除空分组「{name}」?": "빈 그룹 \"{name}\"을(를) 삭제할까요?", "删除识别规则": "식별 규칙 삭제", "删除这个分组(组内菜单移到第一组)": "이 그룹 삭제(메뉴는 첫 그룹으로 이동)", "刷新": "새로고침", "刷新失败:{message}": "새로고침 실패: {message}", "前台运行": "포그라운드 실행", "前缀": "접두사", "剥离上游审核黑名单指纹(改写请求体里的模板句与表头)": "업스트림 검열 블랙리스트 핑거프린트 제거(요청 본문의 템플릿 문구와 헤더 재작성)", "功能建议": "기능 제안", "加入备选": "대체 모델로 추가", "加密备份必填,旧 SQL 可留空": "암호화 백업은 필수, 기존 SQL은 비워도 됩니다", "包含": "포함", "包含日志与调试报文": "로그와 디버그 페이로드 포함", "包含:{items}": "포함: {items}", "匹配内容": "일치 패턴", "匹配内容不能为空,且最多 {max} 个字符": "일치 패턴은 필수이며 최대 {max}자까지 입력할 수 있습니다", "匹配内容不能为空,最长 256 个字符": "일치 조건을 256자 이내로 입력하세요", "匹配原文含零宽空格,词表预览用 \\u{200b} 标出;编辑时保留该字符。": "패턴에 너비가 없는 공백이 포함되어 있습니다. 미리보기에서는 \\u{200b}로 표시하며 편집 시 해당 문자를 유지하세요.", "匹配方式": "일치 방식", "区域(Region)": "리전(Region)", "华为云 OBS": "화웨이 클라우드 OBS", "单独指定视觉模型": "비전 모델 별도 지정", "单轮铸造上限": "회당 발행 한도", "占用大小": "사용 용량", "历史未记录识别依据": "과거 식별 근거가 기록되지 않음", "原来的「全局方式 + 模型单独配置」已按相同意思自动填成下面的模型名单,可以照用也可以重新调整;改动一处之后就会按新形式存下来。": "이전의 \"전역 방식 + 모델별 개별 설정\"을 같은 의미로 아래 모델 목록에 채워 넣었습니다. 그대로 쓰거나 다시 조정해도 됩니다. 한 곳이라도 바꾸면 새 형식으로 저장됩니다.", "原模型不能直接看图": "원래 모델이 이미지를 직접 읽을 수 없음", "原模型根据识读内容回答": "원래 모델이 이미지 설명을 바탕으로 답변", "去反馈": "신고하기", "去申请": "신청하기", "反馈与需求": "피드백 및 요청", "发现缺货时一轮最多铸几个(连铸之间固定隔 500 毫秒)。默认 1 个:SDK 同一实例连铸容易互相干扰。调大补货更快,但单轮连铸越多越容易触发上游风控。可填 1–5。": "부족 발견 시 한 번에 최대 몇 개까지 발행할지 정합니다(연속 발행 사이는 고정 500 밀리초). 기본값은 1: 같은 SDK 인스턴스에서 연속 발행하면 서로 간섭하기 쉽기 때문입니다. 크게 하면 보충이 빨라지지만 한 번에 많이 발행할수록 업스트림 리스크 관리에 걸리기 쉽습니다. 1–5 입력 가능.", "取消勾选后只备份业务数据(账号、配置与余额记录),文件显著变小;事件日志、请求统计与调试报文不会进备份文件。": "체크를 해제하면 업무 데이터(계정, 설정, 잔액 기록)만 백업되어 파일이 훨씬 작아집니다. 이벤트 로그, 요청 통계, 디버그 페이로드는 백업에 포함되지 않습니다.", "变更网页管理面板": "웹 관리 패널 변경", "只列单独配置过的家,其余沿用上面的全局配置": "개별 설정한 제공자만 표시되며, 나머지는 위의 전역 설정을 따릅니다", "只对「排队制」的上游生效:模型繁忙时上游不报错,只回一句「建议 N 秒后再来」,网关按建议时长等一会儿再发同一请求,等满次数仍排不上才把「排队中」作为错误返回(HTTP 503,文案会说明这不是登录态或额度问题)。等待发生在首个字节之前,吃的是「等待响应超时」那份预算 —— 两项设置一起决定一次请求最多卡多久;排队不会标记账号限额、也不会换账号(换谁都一样在排队)。保存后对下一个请求立即生效,不用重启。": "「큐잉 방식」 업스트림에만 적용됩니다. 모델이 바쁠 때 업스트림은 오류를 내지 않고 「N초 후에 다시 오세요」라고만 응답합니다. 게이트웨이는 안내된 시간만큼 기다렸다가 같은 요청을 다시 보내며, 횟수를 다 채울 때까지 큐에 들어가지 못하면 「큐잉 중」을 오류로 반환합니다(HTTP 503, 이는 로그인 상태나 할당량 문제가 아니라는 설명이 함께 표시됩니다). 대기는 첫 바이트 이전에 발생하며 「응답 대기 타임아웃」 예산을 소모합니다. 두 설정이 함께 요청 하나가 최대 얼마나 지연될 수 있는지를 결정합니다. 큐잉은 계정에 할당량 초과를 표시하지 않고 계정도 바꾸지 않습니다(누구든 마찬가지로 큐에 대기합니다). 저장 후 다음 요청부터 즉시 적용되며 재시작이 필요 없습니다.", "只影响读图那一步的思考深度;两块设置统一用这个选择。": "이미지를 읽는 단계의 사고 깊이에만 영향을 줍니다. 두 블록이 이 선택을 함께 사용합니다.", "只有已安装、启用并声明了设置项的提供商会出现在这里。可前往插件页检查安装与启用状态。": "설치 및 활성화된 플러그인이 설정 항목을 제공하는 경우에만 여기에 표시됩니다. 플러그인 페이지에서 설치 및 활성화 상태를 확인하세요.", "只沿用模型与思考等级,不借用视觉服务的内部 Key;仍受当前请求权限限制。": "모델과 추론 수준만 재사용하고 비전 서비스의 내부 Key는 사용하지 않습니다. 현재 요청의 권한 제한이 그대로 적용됩니다.", "只清掉这个浏览器存的 Key,不影响网关": "이 브라우저에 저장된 Key만 삭제합니다. 게이트웨이는 영향 없음", "只覆盖指定提供商的指定模型,其余跟随全局。": "지정한 제공업체의 지정 모델에만 적용하며 나머지는 전역 설정을 따릅니다.", "可跨提供商多选;只处理这些模型看不了的图片。": "제공자를 넘어 여러 개 선택할 수 있습니다. 이 모델들이 읽지 못하는 이미지만 처리합니다.", "可跨提供商多选;这些模型的请求会整体改交视觉模型。": "제공자를 넘어 여러 개 선택할 수 있습니다. 이 모델들의 요청은 통째로 비전 모델에 넘깁니다.", "可选。部分服务(如中国科技云数据胶囊)会按 User-Agent 校验凭据绑定的客户端类型,此时填写包含该类型名的字符串(例如 rclone/v1.67.0)。留空则维持默认。": "선택 사항. 일부 서비스(예: 중국과학기술망 데이터 캡슐)는 User-Agent로 자격 증명에 연결된 클라이언트 유형을 검증합니다. 이 경우 유형 이름이 포함된 문자열(예: rclone/v1.67.0)을 입력하세요. 비워 두면 기본값이 유지됩니다.", "合计只累加当前筛选后可见的账号,筛选、搜索一改数字就跟着变。": "합계는 현재 필터에서 보이는 계정만 더합니다. 필터나 검색을 바꾸면 숫자도 함께 바뀝니다.", "合计按整组统计(默认):不受筛选、搜索影响,被筛掉与已禁用的账号也计入。": "합계는 전체 그룹 기준입니다(기본값). 필터와 검색의 영향을 받지 않으며, 필터에서 제외된 계정과 비활성 계정도 포함됩니다.", "同一会话、同一问题、相同权限范围内复用;追问新细节会重新识读。": "같은 세션, 같은 질문, 같은 권한 범위 안에서 재사용합니다. 새로운 세부를 물으면 다시 읽습니다.", "同一会话在 5 分钟内尽量跟住同一个账号;停了 5 分钟再发就算新会话。多数场景用它 —— 多轮对话少换号,也不至于把账号焊死。": "같은 세션은 5 분 안에 가능한 한 같은 계정을 유지하고, 5 분 이상 비면 새 세션으로 간주합니다. 대부분의 상황에 권장 — 여러 턴의 대화에서 계정이 자주 바뀌지 않으면서 특정 계정에 고정되지도 않습니다.", "同一会话在 6 小时内跟住同一个账号;适合一坐几个小时的长会话,上游的上下文缓存能吃到更多。": "같은 세션은 최대 6 시간 동안 같은 계정을 유지합니다. 몇 시간씩 이어지는 긴 세션에 적합하며, 업스트림 컨텍스트 캐시를 훨씬 더 활용할 수 있습니다.", "同一提供商的同一模型不能重复配置": "동일한 제공업체의 동일한 모델을 중복 설정할 수 없습니다", "同一账号重试次数": "동일 계정 재시도 횟수", "同时开放网页管理面板": "웹 관리 패널도 함께 공개", "同步密码": "동기화 비밀번호", "名单最多 {max} 个状态码": "목록에는 상태 코드를 최대 {max}개까지 넣을 수 있습니다", "后端没有返回版本信息": "백엔드가 버전 정보를 반환하지 않았습니다", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "고정 항목 \"설정\"이 있어 그룹 전체를 숨길 수 없습니다(다른 메뉴는 개별로 숨길 수 있습니다)", "启动与托盘": "시작 및 트레이", "启动时间": "시작 시각", "启用云同步": "클라우드 동기화 사용", "启用图片兼容": "이미지 호환 처리 활성화", "启用规则": "규칙 활성화", "启用规则:{name}": "규칙 활성화: {name}", "命中依据:{header} · {pattern}": "일치 근거: {header} · {pattern}", "命中这些上游状态码的失败不在同一账号重发,直接换下一个账号继续试(换号占用「切换账号重试次数」,换满仍失败才把错误原样返回给客户端)。输入 100–599 的状态码后回车添加,点 × 或退格删除;默认 402(积分不足)。清空全部表示任何错误都照常重试。": "이 업스트림 상태 코드에 해당하는 실패는 같은 계정에서 다시 보내지 않고 바로 다음 계정으로 넘어가 계속 시도합니다(계정 전환은 「계정 전환 재시도 횟수」를 소모하며, 횟수를 다 써도 실패하면 오류가 그대로 클라이언트에 반환됩니다). 100–599 사이의 상태 코드를 입력하고 Enter를 누르면 추가되고, ×를 누르거나 백스페이스로 삭제합니다. 기본값은 402(크레딧 부족)입니다. 모두 비우면 모든 오류를 평소처럼 재시도합니다.", "品牌 Logo": "브랜드 로고", "品牌设置": "브랜드 설정", "品牌设置已保存": "브랜드 설정을 저장했습니다", "品牌预览": "브랜드 미리 보기", "哪些模型用这种方式": "이 방식을 쓸 모델", "固定": "고정", "图标经 Magpie 引入,未单独记录 Lobe Icons 的图标版本;以上版本仅用于核对许可。": "아이콘은 Magpie를 통해 도입되었습니다. Lobe Icons 아이콘 자체의 리비전은 별도로 기록되지 않았으며, 위 리비전은 라이선스 확인에만 사용되었습니다.", "图片与相关对话将交给配置的视觉模型处理,可能增加等待时间和费用。请确认这些服务可以接收你的图片。": "이미지와 관련 대화가 설정된 비전 모델로 전송되며 대기 시간과 비용이 늘어날 수 있습니다. 해당 서비스에 이미지를 보내도 되는지 확인하세요.", "图片兼容": "이미지 호환 처리", "图片兼容当前是关闭的:下面两块设置照样能改、会被保留,但不会对任何请求生效。": "이미지 호환이 현재 꺼져 있습니다. 아래 두 블록은 그대로 수정할 수 있고 유지되지만 어떤 요청에도 적용되지 않습니다.", "图片兼容设置已保存,仅对新请求生效。": "이미지 호환 설정을 저장했습니다. 새 요청에만 적용됩니다.", "图片兼容设置读取失败": "이미지 호환 설정을 불러오지 못했습니다", "图片压缩": "이미지 압축", "图片最长边超过这个值就等比缩小(只缩不放)。默认 2048,可填 256–8192 —— 多数视觉模型在这个量级已经够用,调小更省流量、但细节会丢。": "이미지의 긴 변이 이 값을 넘으면 비율을 유지해 축소합니다(확대하지 않음). 기본 2048, 256~8192까지 지정할 수 있습니다. 대부분의 비전 모델에는 이 크기면 충분하며, 작게 잡으면 트래픽은 줄지만 세부 묘사가 사라집니다.", "图片能力未知时": "이미지 지원 여부를 알 수 없을 때", "图片过大、格式错误或下载失败不会被当作模型不支持图片。": "이미지가 너무 크거나 형식이 잘못되었거나 내려받기에 실패한 경우는 모델이 이미지를 지원하지 않는 것으로 보지 않습니다.", "在同一个账号上原地重发几次(不含首发;整条请求共用一份,用完后换来的账号只发一次就继续换)。可填 0–10,0 表示失败立即换号。": "같은 계정에서 제자리로 재전송하는 횟수입니다(최초 전송은 제외. 요청 전체가 이 횟수를 공유하며, 소진 후 전환된 계정은 한 번만 보내고 다시 전환합니다). 0–10 입력 가능하며, 0이면 실패 시 즉시 계정을 전환합니다.", "在这里直接编辑提示词正文:保存后以这份文本为准(优先于上面的提示词文件),清空则回到文件 / 内置默认。改一个字不必再去编辑器里开文件。": "여기서 시스템 프롬프트 본문을 직접 편집합니다. 저장하면 이 텍스트가 우선하며(위의 시스템 프롬프트 파일보다 우선), 비우면 파일 / 내장 기본값으로 돌아갑니다. 한 글자만 고치려고 편집기에서 파일을 열 필요가 없습니다.", "在途请求": "처리 중 요청", "地址格式不对。填「IP 或域名:端口」,可带 http:// 或 https://,例如 192.168.1.23:3065": "주소 형식이 올바르지 않습니다. \"IP 또는 도메인:포트\"로 입력하세요 (http:// 또는 https:// 사용 가능). 예: 192.168.1.23:3065", "坚果云": "Jianguoyun(Nutstore)", "坚果云需使用「第三方应用密码」(账户信息 → 安全选项里生成),地址必须是 /dav/ 下的目录。": "Jianguoyun은 '타사 앱 비밀번호'(계정 정보 → 보안에서 생성)를 사용해야 하며, 주소는 /dav/ 아래 디렉터리여야 합니다.", "填「IP 或域名:端口」。协议可写 http:// 或 https://,不写默认 http;http 不写端口默认 3065,https 默认 443。地址里的 /m、/v1 会自动去掉。": "\"IP 또는 도메인:포트\"를 입력하세요. 프로토콜은 http:// 또는 https://를 쓸 수 있으며(생략 시 http), 포트를 생략하면 http는 3065, https는 443이 됩니다. 주소의 /m, /v1은 자동으로 제거됩니다.", "处理方式": "처리 방식", "处理示意": "처리 흐름", "备份中…": "백업 중…", "备份包含账号凭证、网关 Key、GitHub 令牌与云同步凭据的恢复密钥,整个文件受备份密码保护。请分开保管文件与密码;忘记密码无法恢复。": "백업에는 계정 자격 증명, 게이트웨이 Key, GitHub 토큰 및 클라우드 동기화 자격 증명의 복원 키가 포함되며 파일 전체가 백업 비밀번호로 보호됩니다. 파일과 비밀번호를 따로 보관하세요. 비밀번호를 잊으면 복원할 수 없습니다.", "备份密码": "백업 비밀번호", "备份密码不能超过 1024 字节": "백업 비밀번호는 1024바이트를 초과할 수 없습니다", "备份密码至少需要 12 位,建议使用较长且不重复的密码": "12자 이상이 필요하며 길고 재사용하지 않는 비밀번호를 권장합니다", "备份整库": "데이터베이스 백업", "备份文件内含全部账号凭证、网关 API Key 与面板管理员凭据,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "백업 파일에는 모든 계정 자격 증명, 게이트웨이 API 키, 패널 관리자 자격 증명이 들어 있어 그대로 로그인에 사용할 수 있습니다. 안전하게 보관하고 외부로 유출하거나 공개된 곳에 업로드하지 마세요.", "备选模型": "대체 모델", "复制全部信息": "모든 정보 복사", "复制给客户端": "클라이언트용으로 복사", "复用相同图片的识读结果": "동일한 이미지의 읽기 결과 재사용", "外观": "화면", "外观 · 接入 · 关于": "화면 · 연결 · 정보", "多个客户端标识冲突": "여러 클라이언트 식별 정보 충돌", "天": "일", "天数": "일수", "失败 {n} 个": "실패 {n}개", "失败 {n} 个:{detail}": "실패 {n}개: {detail}", "失败后最多再换几个账号试(填 N = 最多换 N 个,首发那个不算)。换到同一家名下另一个账号、或换到另一家,都各算一次;换满仍失败就返回错误。可填 0–10,0 表示失败立即报错。": "실패 후 최대 몇 개의 계정으로 더 시도할지 정합니다(N 입력 = 최대 N개 전환, 최초 계정은 제외). 같은 제공자의 다른 계정으로 바꾸거나 다른 제공자로 바꾸는 것 모두 1회로 계산하며, 횟수를 다 써도 실패하면 오류를 반환합니다. 0–10 입력 가능하며, 0이면 실패 시 즉시 오류를 반환합니다.", "存储桶(Bucket)": "버킷(Bucket)", "存储概况已刷新": "저장소 개요를 새로 고쳤습니다", "安全": "보안", "安装到主屏幕": "홈 화면에 추가", "安装到桌面": "앱으로 설치", "安装包形态": "설치 프로그램 종류", "完全相同": "완전 일치", "官方原文只有一句:声明自己是 ZCode。": "공식 원문은 한 문장뿐입니다: 자신이 ZCode임을 선언합니다.", "实际处理:": "실제 처리: ", "客户端 system 原样出站。": "클라이언트 system을 그대로 전송합니다.", "客户端 system 原样出站(只靠指纹脱敏改写模板句)。": "클라이언트 system을 그대로 전송합니다(핑거프린트 마스킹으로 템플릿 문구만 재작성).", "客户端专用请求头": "클라이언트 전용 헤더", "客户端名称": "클라이언트 이름", "客户端名称不能为空,最长 80 个字符": "클라이언트 이름을 80자 이내로 입력하세요", "客户端名称重复或与内置名称冲突": "클라이언트 이름이 중복되거나 내장 이름과 충돌함", "客户端标识无效或重复": "클라이언트 식별 정보가 잘못되었거나 중복됨", "客户端识别": "클라이언트 식별", "客户端识别入口尚未就绪,请刷新页面后重试": "클라이언트 식별 기능이 준비되지 않았습니다. 페이지를 새로고침한 뒤 다시 시도하세요.", "客户端识别设置读取失败": "클라이언트 식별 설정을 불러오지 못했습니다", "客户端(Claude Code / Codex 等 CLI)会在 system 提示词里注入几十句固定模板,上游按逐字匹配审核,命中就整单拦截(HTTP 400)。指纹脱敏能改写实测命中过的那几句,但换一个客户端版本就可能冒出新的。这里可以把 system 整段换成网关自己那份:①「透传」= 不动客户端 system(默认,行为与之前完全一致);②「替换」= 删掉客户端所有 system / developer 消息,换成网关的提示词(客户端项目规范随之消失);③「追加」= 在开头连续 system 块之后插入一条网关提示词,既有消息逐字不动(客户端规范与网关提示词并用)。那份提示词有两个来源:提示词文件(留空用内置默认),或直接在界面上编辑正文 —— 编辑过就以那份正文为准(优先于文件),清空则回到文件 / 内置默认。另外,透传 / 追加模式下撞了内容拦截(多半是指纹误报)时,网关会自动换一段最小中性提示词重试一次,并把「降级期」开到次日 00:00 —— 期间所有请求直接带中性提示词出门,不再先撞一次 400;这里能看见并提前解除它。上面几项是**默认值**:想给某个提供商单独配,用下面的「按提供商」加一行(带「网关自带」的家默认就列在那里)—— 不同的上游对这些内容的接受程度不一样。": "클라이언트(Claude Code / Codex 등 CLI)는 system 프롬프트에 수십 개의 고정 템플릿 문구를 주입하며, 업스트림은 글자 단위 일치로 검사해 걸리면 요청 전체를 차단합니다(HTTP 400). 핑거프린트 마스킹은 실측으로 걸렸던 몇 문장을 재작성할 수 있지만, 클라이언트 버전이 바뀌면 새로운 문구가 나타날 수 있습니다. 여기서는 system 전체를 게이트웨이의 것으로 바꿀 수 있습니다. ①「패스스루」= 클라이언트 system을 건드리지 않습니다(기본값, 이전과 동일한 동작). ②「교체」= 클라이언트의 모든 system / developer 메시지를 삭제하고 게이트웨이 시스템 프롬프트로 바꿉니다(클라이언트 프로젝트 규칙도 함께 사라집니다). ③「추가」= 맨 앞의 연속된 system 블록 뒤에 게이트웨이 시스템 프롬프트 한 건을 삽입하고 기존 메시지는 그대로 둡니다(클라이언트 규칙과 게이트웨이 시스템 프롬프트를 함께 사용). 이 시스템 프롬프트에는 두 가지 출처가 있습니다. 시스템 프롬프트 파일(비워 두면 내장 기본값 사용) 또는 화면에서 직접 본문 편집 — 편집한 경우 그 본문이 우선하며(파일보다 우선) 비우면 파일 / 내장 기본값으로 돌아갑니다. 또한 패스스루 / 추가 모드에서 콘텐츠 차단(대부분 핑거프린트 오탐)에 걸리면 게이트웨이가 자동으로 최소한의 중립 시스템 프롬프트로 한 번 재시도하고 「폴백 기간」을 다음 날 00:00까지 켭니다. 기간 중에는 모든 요청이 중립 시스템 프롬프트를 달고 나가며 400에 먼저 부딪히지 않습니다. 여기서 이 상태를 확인하고 미리 해제할 수 있습니다. 위 항목들은 **기본값**입니다. 특정 제공자에 따로 설정하려면 아래 「제공자별 설정」에서 행을 추가하세요(「게이트웨이 내장」이 있는 제공자는 기본으로 거기에 나열됩니다). 업스트림마다 이런 내용을 받아들이는 정도가 다릅니다.", "家之间仍按优先级,只有同一家内部轮流用各账号 —— 想优先用某几家、又不愿把某一家的某个账号焊死时用它。": "제공자 간에는 우선순위를 따르고, 같은 제공자 내에서만 계정이 순환합니다 — 몇몇 제공자를 우선하되 특정 계정에 고정하고 싶지 않을 때 사용합니다.", "家内轮询": "제공자 내 순환", "容器内更新": "컨테이너 내 업데이트", "密码、文件或密钥校验失败时不会替换主库;替换阶段失败会自动尝试还原,实际结果以上方错误说明为准。": "비밀번호, 파일 또는 키 검증에 실패하면 원본 데이터베이스는 변경되지 않습니다. 교체 단계에서 실패하면 자동 복구를 시도하며 실제 결과는 위 오류 설명에 표시됩니다.", "密码加密 · 包含恢复密钥": "비밀번호 암호화 · 복원 키 포함", "密码至少 8 位": "비밀번호는 8자리 이상", "对话里内嵌的 base64 大图(截图、照片)既撑大请求体,也拉高按像素折算的上游计费。开启后,网关在转发前把超过阈值的图等比缩到长边上限、重新存成 JPEG —— 只改发给上游的副本,请求日志里保存的仍是你发来的原图。同一张原图在多轮对话里重复出现时复用上一次的压缩结果,不会每轮重算。http 链接图片、GIF 动图、SVG 一律不动;压完反而更大的图也保留原图。只作用在对话场景,生图与图片编辑不受影响。默认开启;不想要的话把开关关掉即可。": "대화에 포함된 큰 base64 이미지(스크린샷, 사진)는 요청 본문을 키울 뿐 아니라 픽셀 기준으로 과금되는 상류 비용도 높입니다. 켜면 포워딩 전에 임계값을 넘는 이미지를 긴 변 한도까지 축소하고 JPEG으로 다시 인코딩합니다. 바뀌는 것은 상류로 보내는 사본뿐이며, 요청 로그에는 보낸 원본 이미지가 그대로 저장됩니다. 같은 원본 이미지가 여러 턴에 걸쳐 다시 실리면 이전 압축 결과를 재사용하고 매번 다시 계산하지 않습니다. http 링크 이미지, 애니메이션 GIF, SVG는 전혀 건드리지 않고, 다시 인코딩하면 오히려 커지는 이미지도 원본 그대로 둡니다. 대화에만 적용되며 이미지 생성과 편집에는 영향을 주지 않습니다. 기본값은 켜짐이며, 원하지 않으면 스위치를 끄면 됩니다.", "导入前会把本机的 account.key 改名备份(account.key.bak-时间戳),不会直接删除。": "가져오기 전에 로컬 account.key를 account.key.bak-<타임스탬프>로 이름을 바꿔 백업하며, 삭제하지는 않습니다.", "导入完成:{summary}": "가져오기 완료: {summary}", "导入密钥失败:{message}": "키 가져오기 실패: {message}", "导入密钥并继续": "키 가져오고 계속", "导入账号": "계정 가져오기", "导出中…": "내보내는 중…", "导出会把全部账号与自定义提供商定义写入一个 JSON 文件,可以拷到另一台机器上导入后继续使用。导入采用合并策略:同提供商下按业务身份(UID / userId / apiKey 等)去重 —— 已存在的账号只更新凭证,保留本机原有的优先级顺序;新账号追加到转发顺序末尾,不会抢占当前正在使用的账号;自定义提供商定义按 id 合并,本机缺失时自动补建。": "내보내기는 모든 계정과 커스텀 제공자 정의를 하나의 JSON 파일에 기록하며, 다른 컴퓨터로 복사해 가져온 뒤 계속 사용할 수 있습니다. 가져오기는 병합 방식을 사용합니다. 같은 제공자 아래에서는 비즈니스 신원(UID / userId / apiKey 등)으로 중복을 제거합니다. 이미 있는 계정은 자격 증명만 업데이트하고 이 컴퓨터의 기존 우선순위 순서를 유지하며, 새 계정은 포워딩 순서 끝에 추가되어 현재 사용 중인 계정을 밀어내지 않습니다. 커스텀 제공자 정의는 id 기준으로 병합하고, 이 컴퓨터에 없으면 자동으로 생성합니다.", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义": "내보내기 파일에 accessToken / refreshToken / apiKey 등 자격 증명과 커스텀 제공자 정의가 포함됩니다", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "내보내기 파일에는 accessToken / refreshToken / apiKey 등 자격 증명과 커스텀 제공자 정의가 포함되어 있으며, 바로 로그인에 사용할 수 있습니다. 안전하게 보관하고 외부에 전달하거나 공공장소에 업로드하지 마세요.", "导出账号": "계정 내보내기", "将数据库和恢复凭证所需的密钥一起保存为密码加密的 .a2ab 备份,可在 Windows、macOS 或 Linux 上恢复,无需手工复制密钥。恢复时整体替换账号、配置、日志与桌面设置,并使用目标机器的密钥重新加密凭证,不覆盖本机已有钥匙。可取消包含日志以减小文件;旧 .sql 备份仍可导入。恢复前自动保留安全备份,完成后需要重新登录管理面板。": "데이터베이스와 복원 키를 비밀번호로 암호화한 .a2ab 백업에 저장해 Windows, macOS 또는 Linux에서 키를 수동 복사하지 않고 복원합니다. 계정, 구성, 로그와 데스크톱 설정을 전체 교체하고 대상 기기의 키로 자격 증명을 다시 암호화합니다. 기존 키는 덮어쓰지 않습니다. 로그를 제외해 용량을 줄일 수 있으며 기존 .sql 가져오기도 지원합니다. 교체 전 안전 백업을 보관하고 완료 후 다시 로그인해야 합니다.", "尚未注册管理员。开启「网关 → 网络访问 → 允许其他设备访问网关」时会引导注册,也可以从登录页注册。": "아직 관리자가 등록되지 않았습니다. 「게이트웨이 → 네트워크 접근 → 다른 기기의 게이트웨이 접근 허용」을 켜면 등록 안내가 표시됩니다. 로그인 페이지에서도 등록할 수 있습니다.", "尚未注册管理员:管理接口不需要登录。开启「允许局域网访问」时会引导注册,也可以从登录页注册。": "관리자가 등록되지 않았습니다: 관리 API에는 로그인이 필요하지 않습니다. \"LAN 액세스 허용\"을 켜면 등록으로 안내되며, 로그인 페이지에서도 등록할 수 있습니다.", "尚未配置视觉分析模型": "시각 분석 모델이 설정되지 않았습니다", "局域网开放后,管理接口要求登录。请设置管理员账号与密码,注册完成会直接继续开启流程。": "LAN에 공개하면 관리 인터페이스가 로그인을 요구합니다. 관리자 계정과 비밀번호를 설정하세요. 등록이 완료되면 바로 이어서 활성화 절차가 진행됩니다.", "局域网访问": "LAN 접근", "工具用法与环境说明那一大段。": "도구 사용법과 환경 설명에 해당하는 긴 단락입니다.", "已为「{label}」单独配置提示词": "「{label}」에 시스템 프롬프트를 개별 설정했습니다", "已作为独立应用运行": "독립 앱으로 실행 중", "已使用本机密钥重新加密 {n} 项凭证,原有密钥未被覆盖。": "자격 증명 {n}개를 로컬 키로 다시 암호화했습니다. 기존 키는 덮어쓰지 않았습니다.", "已保存 {count} / {limit} 条报文(超出后丢弃最旧的)。": "메시지 {count} / {limit}건을 저장했습니다(초과분은 오래된 것부터 버립니다).", "已保存的值不符合当前插件规则,请修改或恢复默认值。": "저장된 값이 현재 플러그인 규칙에 맞지 않습니다. 수정하거나 기본값을 복원하세요.", "已保存,留空则不修改": "저장됨. 비워 두면 변경하지 않습니다", "已保存,留空沿用": "저장됨, 비워 두면 유지", "已关闭": "꺼짐", "已关闭 models.dev 联网刷新": "models.dev 온라인 갱신을 껐습니다", "已关闭。{note}": "꺼짐. {note}", "已关闭「{label}」的网关自带提示词:能否通过上游校验取决于上游当前口径": "「{label}」의 게이트웨이 내장 시스템 프롬프트를 껐습니다: 업스트림 검증 통과 여부는 업스트림의 현재 기준에 따라 달라집니다", "已关闭会话图片压缩": "이미지 압축을 껐습니다", "已关闭出站指纹脱敏": "아웃바운드 핑거프린트 마스킹을 껐습니다", "已关闭开发者角色兼容": "개발자 역할 호환이 꺼졌습니다", "已关闭第三方模型回答完自动折叠过程": "타사 모델의 답변 후 과정 자동 접기를 껐습니다", "已关闭网关跨域访问": "게이트웨이 CORS 접근을 껐습니다", "已关闭:不额外补阶段标记,由客户端决定过程展示。": "꺼짐: 단계 표시를 추가하지 않으며 과정 표시는 클라이언트가 결정합니다.", "已删除分组「{name}」": "그룹 \"{name}\"을(를) 삭제했습니다", "已取消「{label}」的单独配置": "「{label}」의 개별 설정을 취소했습니다", "已取消安装": "설치를 취소했습니다", "已取消导入": "가져오기를 취소했습니다", "已取消导出": "내보내기를 취소했습니다", "已取消恢复": "복원이 취소되었습니다", "已启用 {count} 条规则,应用于{scope}。": "규칙 {count}개 활성화, 적용 대상: {scope}.", "已启用登录": "로그인 사용 중", "已复制全部版本信息": "모든 버전 정보를 복사했습니다", "已应用": "반영됨", "已开启": "켜짐", "已开启:为正常完成的 Codex 回答补阶段标记。": "켜짐: 정상 완료된 Codex 답변에 단계 표시를 추가합니다.", "已开启:其他设备把 API 地址指向 {url}{panel}。": "켜짐: 다른 기기에서 API 주소를 {url}(으)로 지정하면 됩니다{panel}.", "已开启:监听 0.0.0.0,允许其他设备访问。": "켜짐: 0.0.0.0에서 수신하여 다른 기기의 접근을 허용합니다.", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "기본 그룹으로 복원했습니다: 개요 / 전달 경로 / 진단 / 시스템", "已截断": "잘림", "已指定出口": "출구 지정됨", "已接管": "인계됨", "已改回内置默认提示词": "내장 기본 시스템 프롬프트로 되돌렸습니다", "已新建分组「{name}」,点组头的 + 把菜单移进来": "그룹 \"{name}\"을(를) 만들었습니다. 머리의 +로 메뉴를 가져오세요", "已清掉「{label}」界面编辑的正文": "「{label}」의 화면 편집 본문을 삭제했습니다", "已清掉界面编辑的提示词(回落文件 / 内置默认)": "화면에서 편집한 시스템 프롬프트를 삭제했습니다(파일 / 내장 기본값으로 폴백)", "已清除本机保存的 API Key": "이 브라우저에 저장된 API Key를 삭제했습니다", "已生效": "적용됨", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。": "최소 중립 프롬프트로 자동 전환했습니다(업스트림 콘텐츠 차단에 걸린 것으로, 대부분 system 지문 오탐입니다). {until} 에 자동 해제됩니다.", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "최소 중립 시스템 프롬프트로 자동 전환했습니다(업스트림 콘텐츠 차단에 걸렸으며 대부분 system 핑거프린트 오탐입니다). {until}에 자동 해제됩니다. 기간 중에는 이 모드의 시스템 프롬프트가 전송되지 않습니다. 시스템 프롬프트를 수정한 뒤 즉시 해제할 수 있습니다.", "已自定义": "사용자 지정됨", "已运行": "가동 시간", "已退出登录": "로그아웃했습니다", "已隐藏": "숨김", "巴西葡萄牙语": "브라질 포르투갈어", "希望接入新的提供商或模型": "새 제공자나 모델 연동을 원함", "库中 schema": "DB 내 schema", "库主文件的大小(不含运行期间的 WAL 临时文件,退出时已自动并回)。": "DB 본체 파일의 크기입니다(실행 중의 WAL 임시 파일은 포함하지 않으며, 종료 시 자동으로 병합됩니다).", "库存目标": "재고 목표", "应用提供商": "적용 제공자", "应用版本:{version}": "앱 버전: {version}", "应用状态": "앱 상태", "应用窗口": "앱 창", "建立上游 TCP/TLS 连接或代理隧道的最大等待时间(秒),默认 30 秒,范围 1~3600。": "업스트림 TCP/TLS 연결 또는 프록시 터널을 설정할 때 기다리는 최대 시간(초). 기본 30초, 범위 1~3600.", "开发构建": "개발 빌드", "开发者角色兼容": "developer 역할 호환", "开发者角色兼容设置已刷新": "개발자 역할 호환 설정이 새로 고쳐졌습니다", "开启前需要注册面板管理员,已注册会跳过此步骤。管理接口需要管理员会话或网关 Key;API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。": "켜기 전에 패널 관리자를 등록해야 하며, 이미 등록된 경우 이 단계를 건너뜁니다. 관리 API에는 관리자 세션 또는 게이트웨이 키가 필요합니다. API 호출에는 활성화된 게이트웨이 키가 필요하며, 없으면 기본 키를 자동으로 생성합니다.", "开启后新发生的请求才会被记录(已经过去的请求补不回来)。报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "켠 이후에 발생한 요청만 기록됩니다(과거 요청은 소급되지 않음). 페이로드는 로컬 데이터베이스에 저장되며 최근 500 건만 유지합니다(초과분은 오래된 것부터 버림). 건수는 왼쪽 \"데이터 → 데이터 저장\"의 \"디버그 페이로드\"에서 볼 수 있습니다.", "开启后新发生的请求才会被记录(已经过去的请求补不回来),请求日志的「预览对话」也随之开始保存原始正文。上游报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "켜면 이후 새로 발생하는 요청만 기록됩니다(이미 지나간 요청은 소급 기록되지 않습니다). 요청 로그의 「대화 미리보기」도 이때부터 원문을 저장하기 시작합니다. 업스트림 메시지는 로컬 데이터베이스에 통합 저장되며 최근 500건만 보관합니다(초과분은 오래된 것부터 버립니다). 건수는 왼쪽 「데이터 → 데이터 저장」의 「디버그 메시지」에서 확인할 수 있습니다.", "开启后监听所有 IPv4 网卡(0.0.0.0),并不局限于局域网,也不会自动开放到公网;实际访问范围取决于网络与防火墙设置。修改后需要重启应用。": "켜면 모든 IPv4 인터페이스(0.0.0.0)에서 수신합니다. 접근 범위는 LAN으로 제한되지 않지만 인터넷에 자동으로 공개되지는 않습니다. 실제 접근 범위는 네트워크와 방화벽 설정에 따라 달라집니다. 변경 후 앱을 다시 시작해야 합니다.", "开启后网关将监听所有 IPv4 网卡(0.0.0.0),访问范围不再限于本机,也不局限于局域网。是否能从公网访问取决于网络与防火墙设置。": "게이트웨이가 모든 IPv4 인터페이스(0.0.0.0)에서 수신합니다. 접근 범위는 이 기기나 LAN으로 제한되지 않습니다. 인터넷에서 접근할 수 있는지는 네트워크와 방화벽 설정에 따라 달라집니다.", "开启后网关将监听所有网卡,同一局域网内的设备即可把 API 地址指向本机 IP 一起使用;管理接口从此要求管理员会话或网关 Key,转发接口在没有一把启用的 Key 时也会拒绝服务(届时会自动创建一把名为「默认」的 Key)。": "켜면 게이트웨이가 모든 네트워크 인터페이스를 수신하며, 같은 LAN의 기기에서 API 주소를 로컬 IP로 지정해 함께 사용할 수 있습니다. 관리 인터페이스는 이때부터 관리자 세션 또는 게이트웨이 키를 요구하고, 포워딩 인터페이스도 활성화된 키가 하나도 없으면 서비스를 거부합니다(이때 「기본」이라는 키가 자동 생성됩니다).", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 套餐池(Start Plan)」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "켜면 창을 닫는 것이 단순히 숨기는 것이 아니라 UI 창 전체를 파괴합니다: 상주하는 6개의 WebView2 프로세스(약 200MB 메모리)가 종료되고, 게이트웨이 포워딩·예정된 체크인·잔액 조회는 백그라운드 프로세스에서 영향 없이 계속됩니다; UI가 필요하면 트레이 아이콘을 클릭해 다시 엽니다(WebView 콜드 스타트 약 1초). 주의: UI가 파괴된 동안 ZCode \"플랜 풀 (Start Plan)\" 채널의 캡차 토큰은 UI가 생성하므로 보충할 수 없으며, 해당 채널의 요청은 사유와 함께 503으로 요청 로그에 기록됩니다. UI를 다시 열면 자동으로 복구됩니다. 이 스위치는 \"닫을 때 트레이로 최소화\"가 켜져 있을 때만 의미가 있으며, 최소화된 창에는 영향이 없습니다.", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 活动套餐」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "켜면 창을 닫을 때 단순히 숨기는 것이 아니라 인터페이스 창을 통째로 파괴합니다. 기반이 되는 WebView2 상주 프로세스 6개(약 200MB 메모리)도 함께 종료되며, 게이트웨이 포워딩, 예약 출석 체크, 잔액 조회는 백그라운드 프로세스에서 계속 실행되어 영향을 받지 않습니다. 인터페이스가 필요하면 트레이 아이콘을 클릭해 다시 열면 됩니다(WebView 콜드 스타트 약 1초). 주의: 인터페이스가 파괴된 동안 「ZCode 활동 요금제」 채널의 인증 코드 토큰은 인터페이스가 발급하므로 보충할 수 없습니다. 이 채널을 사용하는 요청은 503으로 요청 로그에 기록되며(사유 표시), 인터페이스를 다시 열면 자동으로 복구됩니다. 이 스위치는 「창을 닫을 때 트레이로 최소화」가 켜져 있을 때만 의미가 있으며, 창 최소화는 영향을 받지 않습니다.", "开启后,关闭窗口会销毁界面并释放 WebView 进程,网关转发、定时签到、余额查询仍在后台继续。ZCode 模型请求免验证时不受影响;上游要求人机验证时,需要重新打开界面,在账号的「套餐明细」中主动完成验证。此开关只在「关闭窗口时最小化到托盘」开启时有意义。": "활성화하면 창을 닫을 때 화면과 WebView 프로세스를 해제합니다. 요청 전달, 예약 출석 및 잔액 조회는 백그라운드에서 계속됩니다. 인증이 필요 없는 ZCode 요청에는 영향이 없습니다. 인증이 필요하면 화면을 다시 열고 계정의 「플랜 상세」에서 완료하세요. 창을 닫을 때 트레이로 최소화하는 설정이 켜져 있을 때만 적용됩니다.", "开启后,新发生的请求会保存上游调试报文与下游正文,历史请求无法补录。上游调试报文只保留最近 500 条;两侧条数可在「数据 → 数据存储」查看。关闭开关不会删除已保存的报文,可在请求日志中选择「仅清空报文原文」一起清理。": "켜면 새 요청의 업스트림 디버그 페이로드와 다운스트림 본문을 저장합니다. 이전 요청은 복원할 수 없습니다. 업스트림 디버그 페이로드는 최근 500건만 보관합니다. 양쪽 건수는 데이터 → 데이터 저장소에서 확인할 수 있습니다. 끄더라도 저장된 페이로드는 삭제되지 않습니다. 요청 로그에서 원문만 비우기를 선택하면 양쪽을 함께 정리할 수 있습니다.", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。": "켜면 로그인 페이지가 브라우저 백그라운드에서 자동으로 검증을 완료합니다(실제 사람은 느낄 수 없음). 반면 스크립트는 시도할 때마다 문제를 풀어야 하므로 무차별 대입 공격과 선점 등록의 비용이 크게 올라갑니다. 패널의 로그인 / 가입에만 영향을 주며 API 클라이언트의 API Key와는 무관합니다.", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。桌面端与网页端各自独立:桌面端主要服务本机与局域网,网页端(Docker / 服务端)直接暴露在网络上的登录页风险更高,建议保持开启。": "켜면 로그인 페이지가 백그라운드에서 인증을 마칩니다(사람에게는 보이지 않음). 반면 스크립트 시도는 매번 문제를 하나 풀어야 하므로 무차별 대입과 계정 선점 비용이 크게 올라갑니다. 패널의 로그인 / 등록에만 영향을 주며 API 클라이언트의 API Key와는 무관합니다. 데스크톱과 웹은 서로 독립적입니다. 데스크톱은 주로 이 컴퓨터와 LAN을 대상으로 하고, 웹(Docker / 서버)은 네트워크에 노출되므로 켜 두는 것을 권장합니다.", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "켜면 게이트웨이가 전송마다 **업스트림으로 보낸 요청**(헤더 + 본문)과 **업스트림이 돌려준 응답**(상태 코드 + 헤더 + 본문)을 로컬에 통째로 저장해 요청 로그 페이지의 \"상세\"에서 볼 수 있게 합니다. 요청 헤더의 Authorization, Cookie, API 키 등 자격 증명 필드는 모두 [redacted] 로 대체되어 평문으로 저장되지 않으며, 요청 / 응답 본문은 원본 그대로 저장됩니다(대화 내용이 포함될 수 있음). 페이로드는 최근 500 건만 유지하고 초과분은 오래된 것부터 버립니다. 문제 해결용 임시 스위치이므로 필요 없을 때는 끄는 것을 권장합니다.", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看;请求日志详情的「预览对话」也依赖本开关 —— 它保存的是客户端发来的请求体与网关下发的响应体(两侧各截断到 128 KiB),不开这个开关时预览对话没有数据可看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。上游报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "켜면 게이트웨이가 각 전달 시 **업스트림으로 보낸 요청**(요청 헤더 + 요청 본문)과 **업스트림이 반환한 응답**(상태 코드 + 응답 헤더 + 응답 본문)을 로컬에 그대로 저장하여 요청 로그 페이지의 「상세」에서 볼 수 있게 합니다. 요청 상세의 「대화 미리보기」도 이 스위치에 의존합니다 —— 저장되는 것은 클라이언트가 보낸 요청 본문과 게이트웨이가 내려보낸 응답 본문(각각 128 KiB로 잘림)이며, 스위치가 꺼져 있으면 미리 볼 데이터가 없습니다. 요청 헤더의 Authorization, Cookie, API Key 등 자격 증명 필드는 모두 [redacted]로 치환되어 평문으로 디스크에 기록되지 않습니다. 요청 본문과 응답 본문은 원본 그대로 저장됩니다(대화 내용이 포함될 수 있습니다). 업스트림 메시지는 최근 500건만 보관하며 초과분은 오래된 것부터 버립니다. 장애 진단용 임시 스위치이므로 필요 없으면 끄는 것을 권장합니다.", "开启后,能连接到网关的设备可通过浏览器访问网页管理面板,需使用管理员账号登录。访问范围与网关相同,并不局限于局域网。": "켜면 게이트웨이에 연결할 수 있는 기기에서 브라우저로 웹 관리 패널에 접근하고 관리자 계정으로 로그인할 수 있습니다. 접근 범위는 게이트웨이와 같으며 LAN으로 제한되지 않습니다.", "开启后,调用方可以用专用请求头声明已登记的客户端名称。这不是身份认证,只用于日志和统计,不会获得额外权限。": "켜면 호출자가 전용 헤더로 등록된 클라이언트 이름을 선언할 수 있습니다. 인증 기능이 아니며 로그와 통계에만 사용되고 추가 권한을 부여하지 않습니다.", "开启局域网访问": "LAN 접근 켜기", "开启来源声明": "출처 선언 켜기", "开启网络访问": "네트워크 접근 켜기", "开放后,局域网内其他设备的浏览器打开本机 IP 即可进入管理面板(需管理员账号登录)。": "공개하면 LAN 내 다른 기기의 브라우저에서 로컬 IP를 열면 관리 패널에 들어갈 수 있습니다(관리자 계정 로그인 필요).", "开机自动启动": "자동 시작", "开源许可": "오픈 소스 라이선스", "开(最多 {n} 轮)": "켜짐(최대 {n}회)", "归属客户端": "분류할 클라이언트", "当前三段都是官方原文。": "현재 세 단락 모두 공식 원문입니다.", "当前不可用": "현재 사용할 수 없음", "当前后端不支持词表编辑与提供商范围,请更新后端后重试。": "현재 백엔드는 규칙 편집과 제공자 범위를 지원하지 않습니다. 백엔드를 업데이트한 후 다시 시도하세요.", "当前固定为浅色模式,不随系统变化。": "현재 라이트 모드로 고정되어 있으며 시스템 설정을 따르지 않습니다.", "当前固定为深色模式,不随系统变化。": "현재 다크 모드로 고정되어 있으며 시스템 설정을 따르지 않습니다.", "当前密码": "현재 비밀번호", "当前已改过:{edited}。": "현재 수정된 단락: {edited}.", "当前形态": "실행 형태", "当前按 100% 显示(默认比例)。": "현재 100%로 표시됩니다(기본 비율).", "当前按 k / M 缩写显示(如 1.20M / 8.4k)。": "현재 k / M 축약으로 표시됩니다(예: 1.20M / 8.4k).", "当前按 {n}% 显示。": "현재 {n}%로 표시됩니다.", "当前按「万 / 亿」式本地量级词显示(如 1.2亿 / 8400万)。": "현재 「만 / 억」 단위의 로컬 규모 단어로 표시됩니다(예: 1.2억 / 8400만).", "当前是透传模式:存下来也不会发出,切成「替换 / 追加」之后才生效。": "현재 패스스루 모드입니다. 저장해도 전송되지 않으며, 「교체 / 추가」로 전환한 후에 적용됩니다.", "当前显示为「1.20M / 8.4k / 1.2B」这类英文缩写。": "현재 \"1.20M / 8.4k / 1.2B\" 같은 영문 약어로 표시 중입니다.", "当前显示为「1.2亿 / 8400万」这类中文量级。": "현재는 \"1.2억 / 8400만\" 같은 중국어 단위 표기로 표시됩니다.", "当前样本结果:{name}": "현재 샘플 결과: {name}", "当前正在使用": "현재 사용 중", "当前浏览器以管理员身份登录着本面板。「退出登录」会撤销这台设备的登录会话(30 天内的自动续期一并失效),需要重新输入账号密码;其他已登录的设备不受影响。": "현재 브라우저가 관리자로 이 패널에 로그인되어 있습니다. 「로그아웃」은 이 기기의 로그인 세션을 해제하며(30일 이내의 자동 갱신도 함께 무효화), 계정과 비밀번호를 다시 입력해야 합니다. 이미 로그인한 다른 기기는 영향을 받지 않습니다.", "当前版本不支持品牌设置": "현재 버전은 브랜드 설정을 지원하지 않습니다", "当前环境不支持局域网访问设置": "현재 환경에서는 LAN 접근 설정을 지원하지 않습니다", "当前环境不支持整库备份": "이 환경에서는 전체 DB 백업을 지원하지 않습니다", "当前环境不支持整库备份(仅桌面端可用)": "이 환경에서는 전체 DB 백업을 지원하지 않습니다(데스크톱 전용)", "当前环境不支持整库恢复": "이 환경에서는 전체 DB 복원을 지원하지 않습니다", "当前环境不支持整库恢复(仅桌面端可用)": "이 환경에서는 전체 DB 복원을 지원하지 않습니다(데스크톱 전용)", "当前环境不支持网络访问设置": "현재 환경에서는 네트워크 접근 설정을 지원하지 않습니다", "当前环境不支持读取版本信息(桥接方法缺失)": "이 환경에서는 버전 정보를 읽을 수 없습니다(브리지 메서드 없음)", "当前生效值:{value}": "현재 적용 값: {value}", "当前生效的正文来自{source}{file}。保存后这一份会盖过提示词文件与内置默认{note}。": "현재 적용 중인 본문은 {source}에서 가져옵니다{file}. 저장하면 이 본문이 시스템 프롬프트 파일과 내장 기본값을 덮어씁니다{note}.", "当前界面": "현재 화면", "当前管理员:{name}": "현재 관리자: {name}", "当前设置已保存": "현재 설정이 저장되었습니다", "当前跟随操作系统的深浅色设置,系统切换时界面会自动跟上。": "현재 운영 체제의 라이트/다크 설정을 따르며, 시스템이 전환되면 인터페이스도 자동으로 따라갑니다.", "当前路由内的可用视觉模型": "현재 라우트에서 사용 가능한 비전 모델", "待迁移旧数据": "이전 대기 중인 레거시 데이터", "待配置": "미설정", "忘记密码时无法在界面里找回:需要停掉程序后,从数据库删除管理员记录(kv 表的 panelAdmin 键),重启后按首次使用重新注册。具体命令与各形态的库文件路径见 docs 目录下的「重置管理员」文档。": "비밀번호를 잊으면 화면에서 복구할 수 없습니다. 프로그램을 중지한 뒤 데이터베이스에서 관리자 레코드(kv 테이블의 panelAdmin 키)를 삭제하고, 재시작 후 최초 사용처럼 다시 등록하세요. 구체적인 명령과 형태별 데이터베이스 경로는 docs의 \"관리자 재설정\" 문서를 참고하세요.", "思考等级、图片能力未知、等待上限": "사고 수준, 이미지 지원 불명, 대기 상한", "恢复中…": "복원 중…", "恢复失败:{message}": "복원 실패: {message}", "恢复官方原文": "공식 원문으로 복원", "恢复插件默认值": "플러그인 기본값 복원", "恢复整库": "데이터베이스 복원", "恢复整库备份": "전체 백업 복원", "恢复默认": "기본값으로 복원", "恢复默认 Logo": "기본 로고로 복원", "恢复默认侧边栏": "사이드바 기본값 복원", "恢复默认品牌": "기본 브랜드로 복원", "恢复默认词表": "기본 규칙 복원", "想回到原来那份,把这里清空再保存即可(不会删掉你配的文件路径)。": "원래 본문으로 돌아가려면 여기를 비우고 저장하면 됩니다(설정한 파일 경로는 삭제되지 않습니다).", "想要的新功能或改进想法": "원하는 새 기능이나 개선 아이디어", "所有未单独配置的提供商都用这一份": "개별 설정하지 않은 모든 제공자가 이 설정을 사용합니다", "所有菜单都已在这一组": "모든 메뉴가 이미 이 그룹에 있습니다", "手机端可管理所连接网关的账号、签到与插件,并使用提供商声明的动态登录入口;其余既有添加入口、编辑凭证和改写客户端配置仍需桌面面板。": "모바일 앱에서 연결된 게이트웨이의 계정, 출석, 플러그인을 관리하고 제공업체가 선언한 동적 로그인 방식을 사용할 수 있습니다. 그 밖의 기존 계정 추가 기능, 인증 정보 편집, 클라이언트 설정 변경은 데스크톱 패널이 필요합니다.", "托管网页界面": "웹 UI 제공", "把地址里的 your-server 与 USERNAME 换成你自己的;目录不存在时会自动创建。": "주소의 your-server와 USERNAME을 자신의 값으로 바꾸세요. 디렉터리가 없으면 자동으로 만듭니다.", "把整份数据库(账号、网关配置、事件日志、请求统计、调试报文与桌面设置)导出成一个 SQL 文件,恢复时整体替换本机全部数据 —— 与上面「账号导入 / 导出」的逐条合并是两种语义:恢复会连配置、日志与当前启用状态一起换成备份那台机器的状态。导出默认包含日志与调试报文(文件可能很大),不需要时可以取消勾选只备业务数据。恢复前会自动把当前数据备份到配置目录的 backups/ 下,恢复后需要重新登录管理面板。": "데이터베이스 전체(계정, 게이트웨이 설정, 이벤트 로그, 요청 통계, 디버그 페이로드, 데스크톱 설정)를 SQL 파일 하나로 내보내고, 복원 시 이 PC의 모든 데이터를 통째로 교체합니다 — 위의 \"계정 가져오기 / 내보내기\"의 건별 병합과는 다른 의미입니다. 복원은 설정, 로그, 활성화 상태까지 백업한 그 PC의 상태로 바꿔치기합니다. 내보내기는 기본적으로 로그와 디버그 페이로드를 포함하며(파일이 커질 수 있음), 필요 없으면 체크를 해제해 업무 데이터만 백업할 수 있습니다. 복원 직전에 현재 데이터를 설정 디렉터리의 backups/ 에 자동 백업하며, 복원 후에는 패널에 다시 로그인해야 합니다.", "把整次请求交给视觉模型,由它直接回答,不再回到原模型。": "요청 전체를 비전 모델에 넘겨 원래 모델로 돌아가지 않고 바로 답합니다.", "把菜单移入 {name}": "메뉴를 {name}(으)로 이동", "把菜单移入「{name}」": "메뉴를 \"{name}\"(으)로 이동", "把账号、网关配置、自定义提供商、Agent 配置、代理池 / 订阅、签到与余额记录同步到 WebDAV 或 S3 兼容存储,换台机器后一键取回。事件日志、请求明细、调试报文与面板登录态不在同步范围内(它们是本机的运行痕迹)。上传的账号凭证仍是加密形态,解密用的账号密钥由「同步密码」单独加密后一并上传 —— 同步密码不会保存到云端,换机下载时需要重新输入。": "계정, 게이트웨이 설정, 사용자 지정 공급자, Agent 설정, 프록시 풀/구독, 체크인 및 잔액 기록을 WebDAV 또는 S3 호환 스토리지에 동기화하고 다른 컴퓨터에서 한 번에 복원합니다. 이벤트 로그, 요청 상세, 디버그 패킷, 패널 로그인 상태는 대상이 아닙니다(이 컴퓨터의 실행 기록입니다). 업로드되는 계정 자격 증명은 암호화된 상태로 유지되며, 이를 복호화하는 계정 키는 '동기화 비밀번호'로 별도 암호화해 함께 업로드합니다. 동기화 비밀번호는 클라우드에 저장되지 않으므로 다른 컴퓨터에서 복원할 때 다시 입력해야 합니다.", "把路径里的主目录显示成 ~,截图分享时不暴露用户名": "경로의 홈 디렉터리를 ~ 로 표시해 캡처를 공유할 때 사용자 이름이 드러나지 않게 합니다", "把路径里的主目录(如 C:\\Users\\你的用户名)显示成 ~,截图分享时不暴露用户名。只影响本页显示与复制,不改任何文件。": "경로의 홈 디렉터리(예: C:\\Users\\사용자이름)를 ~ 로 표시해 캡처를 공유할 때 사용자 이름이 드러나지 않게 합니다. 이 페이지 표시와 복사에만 영향을 주며 파일은 변경하지 않습니다.", "报表天数": "리포트 일수", "报表页的热力图与按天趋势,默认 99999 天(近似全量保留),可填 1–99999 天。": "리포트 페이지의 히트맵과 일별 추세. 기본 99999일(거의 전체 보관)이며 1~99999일까지 입력할 수 있습니다.", "拖动分组 {name}": "그룹 {name} 끌기", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "왼쪽 ⠿를 끌어 순서를 바꾸세요(메뉴는 그룹 간 이동 가능). 스위치로 표시/숨김, 그룹 이름을 클릭해 이름 변경, 그룹 머리의 +로 다른 메뉴를 가져오기, 눈 버튼으로 그룹 전체 숨기기. 변경은 즉시 적용·저장되며 왼쪽 사이드바가 결과입니다. 키보드: 핸들에 포커스 후 Alt+↑ / ↓.", "拖动菜单 {name}": "메뉴 {name} 끌기", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "끌어서 그룹 순서 변경(Alt+↑ / ↓ 도 가능)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "끌어서 순서 변경, 그룹 간 이동 가능(Alt+↑ / ↓ 도 가능)", "指定备选仍受当前请求权限和路由范围限制,路由组请求不会跳到组外。不会转为辅助识图继续。": "지정한 예비 모델에도 현재 권한과 라우트 범위 제한이 적용됩니다. 라우트 그룹 밖으로 나가지 않으며 보조 이미지 읽기로 전환하지 않습니다.", "指定提供商": "선택한 제공자", "指定角色": "선택한 역할", "指定错误码直接换号": "지정 오류 코드 즉시 계정 전환", "指纹脱敏": "지문 마스킹", "指纹脱敏会在转发前按词表顺序改写请求消息中的文本,包括对话内容、思考内容和工具调用参数。默认词表包含客户端模板句与计费表头的精确替换、正则删除规则,可以新增、编辑、删除、启停和调整顺序;替换内容留空表示删除匹配内容。默认应用全部提供商,也可指定多家。改动只作用于发给上游的副本,响应内容不变。编辑后点击「保存设置」,下一次请求生效;清空词表表示不做任何指纹改写,恢复默认只重置词表。": "전달 전에 규칙 순서대로 요청 메시지의 텍스트를 수정합니다. 대화 내용, 추론 내용, 도구 호출 인수가 대상입니다. 기본 규칙은 클라이언트 템플릿 문장과 과금 헤더의 정확한 텍스트 치환 및 정규식 삭제를 포함합니다. 규칙을 추가, 편집, 삭제, 활성화, 비활성화하거나 순서를 변경할 수 있습니다. 치환 내용을 비우면 일치 부분을 삭제합니다. 기본적으로 모든 제공자에 적용하며 여러 제공자를 지정할 수도 있습니다. 업스트림으로 보내는 사본만 수정하고 응답은 변경하지 않습니다. 설정 저장을 누르면 다음 요청부터 적용됩니다. 빈 규칙 목록은 아무 내용도 수정하지 않으며 기본값 복원은 규칙만 초기화합니다.", "指纹脱敏设置仅本次运行生效,写入数据库失败,请检查配置目录": "설정은 이번 실행 중에만 적용됩니다. 데이터베이스 기록에 실패했습니다. 설정 디렉터리를 확인하세요.", "指纹脱敏设置已刷新": "핑거프린트 마스킹 설정을 새로 고쳤습니다", "按下面两块设置处理图片;关闭后设置全部保留。": "아래 두 블록의 설정으로 이미지를 처리합니다. 끄더라도 설정은 모두 남습니다.", "按列表自上而下匹配,位于来源声明之后、内置规则之前;可用于给难认的标识钉规则。": "목록 위에서 아래로 순서대로 매칭되며, 발신 선언 뒤·내장 규칙 앞에 적용됩니다. 식별하기 어려운 클라이언트를 고정하는 데 사용합니다.", "按原文精确匹配,区分大小写;不会自动去掉首尾空白。": "대소문자를 구분하여 원문과 정확하게 일치시킵니다. 앞뒤 공백은 제거하지 않습니다.", "按天聚合保留天数": "일일 집계 보존 일수", "按指定备选顺序尝试": "지정한 예비 모델을 순서대로 시도", "按提供商查看和调整专属选项": "제공자별 전용 옵션 확인 및 조정", "按提供商筛选设置": "제공자별 설정 필터", "按提供商管理专属选项,作用于当前网关中该提供商的所有账号。": "제공자별 전용 옵션을 관리합니다. 변경 사항은 현재 게이트웨이에 있는 해당 제공자의 모든 계정에 적용됩니다.", "按提供商配置": "제공자별 설정", "按每条请求的软件标识识别客户端,不依赖 API Key。规则修改只影响新请求,内置规则随软件更新,自定义规则参与备份与云同步。": "API Key와 무관하게 각 요청의 소프트웨어 식별 정보로 구분합니다. 규칙 변경은 새 요청에만 적용됩니다. 내장 규칙은 앱과 함께 업데이트되고 사용자 규칙은 백업 및 클라우드 동기화에 포함됩니다.", "换一台服务器": "다른 서버로 전환", "排队等待": "큐잉 대기", "排队等待次数": "큐잉 대기 횟수", "排队等待秒数": "큐잉 대기 시간(초)", "排队等待设置已刷新": "큐잉 대기 설정을 새로 고쳤습니다", "接入": "연결", "接受调用方来源声明": "호출자의 출처 선언 허용", "接管回答的模型": "답변을 이어받을 모델", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "사이드바에 표시할 메뉴, 순서, 그룹을 설정합니다. 숨김은 탐색 표시에만 영향을 주며 접근 권한을 회수하지 않습니다. 숨긴 페이지도 주소로 직접 열 수 있습니다.", "控制报表与请求日志里 Token 读数的写法:开启后按「万 / 亿」式的本地量级词显示(简体为万 / 亿,繁体为萬 / 億,日文为万 / 億,韩文为만 / 억),关闭则用 k / M 缩写(与上游文档、接口字段的写法一致)。英文 / 葡语的本地量级词就是 k / M,这项对它们没有区别。只影响显示口径,不改变任何统计与存储的数值。": "리포트와 요청 로그에서 Token 수치를 쓰는 방식을 제어합니다. 켜면 「만 / 억」 단위의 로컬 규모 단어로 표시하고(중국어 간체는 万 / 亿, 중국어 번체는 萬 / 億, 일본어는 万 / 億, 한국어는 만 / 억), 끄면 k / M 축약을 사용합니다(업스트림 문서와 인터페이스 필드의 표기와 동일). 영어 / 포르투갈어의 로컬 규모 단어는 k / M이므로 이 항목은 이들 언어에 차이가 없습니다. 표시 방식에만 영향을 주며 통계와 저장된 수치는 바뀌지 않습니다.", "控制报表与请求日志里 Token 读数的写法:开启后按中文量级显示(1.2亿 / 8400万),关闭则用 k / M / B 缩写(与上游文档、接口字段的写法一致)。这只影响显示口径,不改变任何统计与存储的数值。": "보고서와 요청 로그의 Token 표기 방식을 바꿉니다. 켜면 중국어 단위(1.2억 / 8400만), 끄면 k / M / B 약어(업스트림 문서와 API 필드와 같은 표기)로 표시합니다. 표시 방식만 바뀌며 통계와 저장 값은 달라지지 않습니다.", "控制界面的深浅色,与左侧边栏底部的三个主题按钮是同一个设置(改哪一处,另一处立刻跟上)。「跟随系统」会随操作系统当前的浅色 / 深色自动切换,并在系统主题变化时即时跟上;选「浅色」或「深色」则把界面固定在该模式,不再随系统变化。窗口标题栏的深浅色会一并同步,不会出现深色界面配一条浅色标题栏的情况。": "인터페이스의 라이트/다크를 제어하며, 왼쪽 사이드바 하단의 테마 버튼 세 개와 같은 설정입니다(어느 쪽을 바꾸든 다른 쪽이 즉시 따라갑니다). 「시스템」은 운영 체제의 현재 라이트 / 다크 설정에 따라 자동으로 전환되고 시스템 테마가 바뀌면 즉시 따라갑니다. 「라이트」나 「다크」를 선택하면 인터페이스가 해당 모드로 고정되어 시스템 설정을 따르지 않습니다. 창 제목 표시줄의 색상도 함께 동기화되어, 다크 인터페이스에 라이트 제목 표시줄이 붙는 일은 없습니다.", "提供商与模型": "제공업체 및 모델", "提供商专属设置": "제공자별 설정", "提供商当前不可用,未保存的修改已保留;恢复插件后可继续编辑。": "현재 제공자를 사용할 수 없습니다. 저장하지 않은 수정 내용은 유지되며, 플러그인이 복구되면 계속 편집할 수 있습니다.", "提供商设置已保存": "제공자 설정을 저장했습니다", "提供商设置返回格式无效,请刷新后重试": "제공자 설정 응답 형식이 올바르지 않습니다. 새로 고친 후 다시 시도하세요.", "提建议": "제안하기", "提示词文件": "시스템 프롬프트 파일", "提示词文件已更新": "시스템 프롬프트 파일이 업데이트되었습니다", "提示词正文": "시스템 프롬프트 본문", "提示词正文已更新": "시스템 프롬프트 본문이 업데이트되었습니다", "插件或设置已变化,请放弃修改并刷新后重新编辑。": "플러그인 또는 설정이 변경되었습니다. 변경을 취소하고 새로 고친 뒤 다시 편집하세요.", "操作系统": "운영 체제", "支持 .a2ab 加密备份和旧 .sql 文件;旧 SQL 不包含恢复密钥,跨机器导入仍需原机密钥。": "암호화된 .a2ab 백업과 기존 .sql을 지원합니다. 기존 SQL에는 복원 키가 없어 다른 기기로 가져올 때 원래 키가 필요합니다.", "支持 PNG、JPG、WebP,最大 2 MiB、4096 × 4096 像素;自动缩小至 512 像素以内,建议使用正方形图片。": "PNG, JPG, WebP를 지원하며 최대 2 MiB, 4096 × 4096 픽셀입니다. 512 픽셀 이내로 자동 축소합니다. 정사각형 이미지를 권장합니다.", "改动仍保存在本机,修复网络或凭据后下一次改动会自动重试,也可以手动点「上传到云端」。": "변경 사항은 로컬에 저장되어 있습니다. 네트워크나 자격 증명을 고치면 다음 변경 시 자동으로 다시 시도하며, '클라우드로 업로드'를 직접 눌러도 됩니다.", "改动仍保存在本机,系统会延长等待并自动重试;修复网络或凭据后,也可以手动点「上传到云端」。": "변경 사항은 이 기기에 저장되어 있습니다. 대기 시간을 늘려 자동으로 재시도합니다. 네트워크나 인증 정보를 수정한 뒤 「클라우드에 업로드」를 수동으로 선택할 수도 있습니다.", "改完立即生效,不用重启(下一个请求就用新模式)。降级是自动的临时状态,解除后本模式自己的提示词立刻恢复。": "수정 후 재시작 없이 즉시 적용됩니다(다음 요청부터 새 모드가 사용됩니다). 폴백은 자동으로 생기는 임시 상태이며, 해제하면 이 모드의 시스템 프롬프트가 즉시 복구됩니다.", "放大或缩小整个界面(文字与控件一起变),效果与浏览器 Ctrl +/- 相同:共 11 档,立即生效并记住。": "인터페이스 전체를 확대하거나 축소합니다(텍스트와 컨트롤이 함께 바뀜). 효과는 브라우저의 Ctrl +/-와 동일합니다. 총 11단계이며 즉시 적용되고 기억됩니다.", "放弃修改并刷新": "변경 취소 후 새로 고침", "数据": "데이터", "数据保留": "데이터 보관", "数据保留设置已刷新": "데이터 보관 설정을 새로 고쳤습니다", "数据存储": "데이터 저장", "数据库 schema": "데이터베이스 schema", "数据库不可用": "데이터베이스 사용 불가", "数据库与恢复密钥一起加密保存。密码不会保存在应用或备份中,忘记后无法恢复,请妥善保管。": "데이터베이스와 복원 키를 함께 암호화합니다. 비밀번호는 앱이나 백업에 저장되지 않습니다. 잊으면 복원할 수 없으니 안전하게 보관하세요.", "数据库主文件与 WAL 文件的总占用,与请求日志清理弹窗采用同一口径;清理后可压缩数据库回收空闲空间。": "데이터베이스 주 파일과 WAL 파일의 총 크기로, 요청 로그 정리 화면과 같은 계산 기준을 사용합니다. 정리 후 데이터베이스를 압축하여 사용하지 않는 공간을 회수할 수 있습니다.", "数据库文件": "데이터베이스 파일", "数据目录": "데이터 디렉터리", "数据统一保存在配置目录下的 agent2api.db;如需更换位置,请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "데이터는 구성 디렉터리의 agent2api.db에 통합 저장됩니다. 위치를 바꾸려면 환경 변수 AGENT2API_PROXY_HOME을 설정한 후 프로그램을 다시 시작하세요.", "整体替换": "통째로 교체", "整库备份 / 恢复": "전체 DB 백업 / 복원", "整次请求交给 {model} 直接回答,不再回到原模型。": "요청 전체를 {model}에 넘겨 원래 모델로 돌아가지 않고 바로 답합니다.", "新分组名": "새 그룹 이름", "新增 {added} 个、更新 {updated} 个{suffix}{note}": "{added}개 추가, {updated}개 업데이트{suffix}{note}", "新增脱敏规则": "마스킹 규칙 추가", "新增规则": "규칙 추가", "新安装和升级后默认关闭。先配置再开启,关闭后保留配置。": "신규 설치 및 업그레이드 후에는 기본적으로 꺼져 있습니다. 먼저 설정한 뒤 켜세요. 꺼도 설정은 유지됩니다.", "新密码": "새 비밀번호", "新密码不能与当前密码相同": "새 비밀번호는 현재 비밀번호와 달라야 합니다", "新密码至少 8 位": "비밀번호는 8자 이상이어야 합니다", "新建分组": "그룹 추가", "新建客户端分类": "새 클라이언트 분류", "无效或重复的标识请求头:{headers}": "잘못되었거나 중복된 식별 헤더: {headers}", "无法读取品牌设置": "브랜드 설정을 읽을 수 없습니다", "无法读取图片,请重新选择": "이미지를 읽을 수 없습니다. 다시 선택하세요", "日志与请求日志同时受保留天数和数量上限限制。日志默认 30 天、10000 条,各级别按比例保留;调试详情最多保留 3 天。请求日志默认 99999 天、1000000 条(100 万),超出后从最旧的记录开始清理,并同步删除对应原始正文。按天聚合默认 99999 天,只按天数保留,不受请求日志数量清理影响。天数可填 1–99999,数量可填 1–100000000。调小任一设置并确认后立即清理,且不可恢复。": "로그와 요청 로그에는 보관 일수와 건수 상한이 함께 적용됩니다. 로그의 기본값은 30일, 10000건이며 수준별로 비례 배분하여 보관합니다. 디버그 상세는 최대 3일 보관합니다. 요청 로그의 기본값은 99999일, 1000000건(100만 건)이며 초과분은 가장 오래된 기록부터 해당 원문과 함께 삭제합니다. 일별 집계의 기본값은 99999일로 일수만 적용되며 요청 로그 건수에 따른 삭제의 영향을 받지 않습니다. 일수는 1–99999, 건수는 1–100000000을 입력할 수 있습니다. 설정을 줄이고 확인하면 즉시 삭제되며 복구할 수 없습니다.", "日志保留数量上限": "로그 보관 건수 상한", "日志文件": "로그 파일", "日语": "일본어", "显示 {name}": "{name} 표시", "显示分组 {name}": "그룹 {name} 표시", "显示名称": "표시 이름", "显示名称最多 64 个字符": "표시 이름은 최대 64자입니다", "显示模式": "테마", "显示这一组": "이 그룹 표시", "暂无可编辑的提供商设置": "편집할 수 있는 제공자 설정이 없습니다", "暂无自定义规则,正在使用内置识别。也可以从请求详情直接添加规则。": "사용자 규칙이 없어 내장 식별을 사용 중입니다. 요청 상세에서도 규칙을 추가할 수 있습니다.", "暂未获取到本机访问地址,请使用其他设备能连接到的本机 IP 与网关端口。": "아직 이 기기의 접속 주소를 가져오지 못했습니다. 다른 기기에서 연결할 수 있는 이 기기의 IP와 게이트웨이 포트를 사용하세요.", "更新": "업데이트", "更新出网线路": "업데이트 출구 경로", "更新通道": "업데이트 채널", "替换": "교체", "替换 = 客户端 system / developer 消息全部删掉,换成网关的提示词;追加 = 保留客户端内容,只在开头 system 块之后多插一条。两者都只改发给上游的副本,客户端看到的响应不变。": "교체 = 클라이언트의 system / developer 메시지를 모두 삭제하고 게이트웨이 시스템 프롬프트로 바꿉니다. 추가 = 클라이언트 내용을 유지하고 맨 앞 system 블록 뒤에 한 건만 더 삽입합니다. 둘 다 업스트림으로 보내는 사본만 바꾸며 클라이언트가 받는 응답은 달라지지 않습니다.", "替换为网关提示词": "게이트웨이 시스템 프롬프트로 교체", "替换内容": "치환 내용", "替换内容最多 {max} 个字符": "치환 내용은 최대 {max}자까지 입력할 수 있습니다", "替换前会自动把当前数据备份到配置目录的 backups/ 文件夹。": "교체 직전에 현재 데이터를 설정 디렉터리의 backups/ 폴더에 자동 백업합니다.", "替换并恢复": "교체하고 복원", "最多 64 个字符,留空恢复为 Agent2API。": "최대 64자입니다. 비워 두면 Agent2API로 복원됩니다.", "最小自动上传间隔": "최소 자동 업로드 간격", "最近 {window} 条请求中,{scanned} 条有识别依据,{matched} 条符合条件,{applied} 条会采用本规则。": "최근 요청 {window}개 중 {scanned}개에 식별 근거가 있고, {matched}개가 조건과 일치하며, {applied}개에 이 규칙이 적용됩니다.", "有未保存的修改": "저장되지 않은 변경 사항이 있습니다", "有未保存的改动:保存后才能同步(测试连接不受影响)。": "저장되지 않은 변경 사항이 있습니다. 동기화하려면 먼저 저장하세요(연결 테스트는 가능).", "有近期套餐池请求时读取库存状态的间隔,默认 2500 毫秒,可填 1000–30000。没有近期请求时降低读取频率,轮询不会发起验证码。": "최근 Start Plan 요청이 있을 때 재고 상태 조회 간격입니다. 기본값은 2500밀리초이며 1000–30000 범위입니다. 최근 요청이 없으면 조회 빈도를 낮추며 폴링으로 인증을 시작하지 않습니다.", "服务商": "공급자", "服务器地址": "서버 주소", "服务端密钥加密保存,不会返回浏览器;切回 ALTCHA 后会保留,方便再次启用。": "비밀 키는 암호화하여 저장하며 브라우저로 반환하지 않습니다. ALTCHA로 전환해도 보관되므로 나중에 다시 활성화할 수 있습니다.", "服务端密钥(Secret Key)": "비밀 키(Secret Key)", "期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "이 모드 동안 자체 프롬프트는 전송되지 않습니다. 프롬프트를 고친 뒤 즉시 해제할 수 있습니다.", "未保存": "저장되지 않음", "未匹配已知客户端": "알려진 클라이언트와 일치하지 않음", "未单独配置:模式、提示词文件与正文都跟随上面的全局配置(当前「{mode}」)。": "개별 설정 없음: 모드, 시스템 프롬프트 파일과 본문 모두 위의 전역 설정을 따릅니다(현재 「{mode}」).", "未启用": "사용 안 함", "未开启轻量模式:关窗仅隐藏窗口,界面进程常驻内存,随时打开不等待": "경량 모드 꺼짐: 창을 닫아도 창만 숨겨지고 인터페이스 프로세스가 메모리에 상주하여 언제든 기다림 없이 열립니다", "未开启,developer 角色消息会原样发往上游,不认识该角色的上游会报错(400)。": "꺼짐: developer 역할 메시지가 그대로 업스트림으로 전송되며, 이 역할을 모르는 업스트림은 오류(400)를 반환합니다.", "未开启,客户端 system 模板会原样发往上游,可能被内容审核误拦(400)。": "꺼져 있어 클라이언트 system 템플릿이 그대로 업스트림으로 전송되어 콘텐츠 검열에 오탐으로 차단될 수 있습니다(400).", "未开启,浏览器跨域无法直连网关。": "꺼져 있어 브라우저에서 CORS로 게이트웨이에 직접 연결할 수 없습니다.", "未开启,转发时不保存任何原始报文。": "꺼져 있어 전달 시 원본 메시지를 일절 저장하지 않습니다.", "未开启:网关只监听 127.0.0.1,仅本机可以访问。": "꺼짐: 게이트웨이가 127.0.0.1만 수신하여 로컬에서만 접근할 수 있습니다.", "未注册": "미등록", "未注册闸门": "미등록 게이트", "未知原因": "알 수 없는 사유", "未知来源": "알 수 없는 출처", "未知设备": "알 수 없는 기기", "未知账号": "알 수 없는 계정", "未能读取 Cline 伪装头设置,请稍后重试": "Cline 위장 헤더 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요", "未能读取 models.dev 元数据状态,请稍后重试": "models.dev 메타데이터 상태를 읽지 못했습니다. 잠시 후 다시 시도하세요.", "未能读取云同步设置,请稍后重试。": "클라우드 동기화 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요.", "未能读取保存后的指纹脱敏设置": "저장된 지문 마스킹 설정을 읽지 못했습니다", "未能读取开发者角色兼容设置,请稍后重试": "개발자 역할 호환 설정을 읽지 못했습니다. 잠시 후 다시 시도해 주세요", "未能读取指纹脱敏设置,请稍后重试": "핑거프린트 마스킹 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요", "未能读取机器人校验设置": "봇 인증 설정을 읽지 못했습니다", "未能读取第三方模型回答完自动折叠过程设置,请稍后重试": "타사 모델의 답변 후 과정 자동 접기 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요", "未能读取系统提示词设置,请稍后重试": "시스템 프롬프트 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요", "未能读取网关跨域访问设置,请稍后重试": "게이트웨이 CORS 접근 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요", "未能读取网络访问设置,请稍后重试": "네트워크 접근 설정을 불러오지 못했습니다. 잠시 후 다시 시도하세요.", "未能读取调试模式设置,请稍后重试": "디버그 모드 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요", "未能读取账户信息,请稍后重试": "계정 정보를 읽지 못했습니다. 잠시 후 다시 시도하세요", "未采用本规则,请检查开关、来源声明或规则顺序": "이 규칙이 적용되지 않았습니다. 스위치, 출처 선언 또는 규칙 순서를 확인하세요.", "本地账号、配置、签到与余额记录变化后自动上传(合并 1 秒内的连续改动,最长 10 秒传一次;内容没变时不发请求)。": "로컬 계정, 설정, 체크인, 잔액 기록이 변경되면 자동 업로드합니다(1초 이내 연속 변경은 병합, 최대 10초에 한 번. 내용이 그대로면 요청을 보내지 않습니다).", "本机 API 地址": "이 기기의 API 주소", "本机 APK 版本": "이 기기 APK 버전", "本机全部数据会被备份整体替换,恢复前自动保留安全备份,完成后需要重新登录管理面板。本机已有密钥不会被覆盖。": "로컬 데이터베이스의 모든 데이터가 백업으로 교체됩니다. 먼저 안전 백업을 보관하고 완료 후 다시 로그인해야 합니다. 기존 로컬 키는 덮어쓰지 않습니다.", "本机应用版本": "이 기기의 앱 버전", "本机界面版本": "이 기기 UI 버전", "本机的业务数据(账号、配置、Agent 配置、代理池 / 订阅、签到与余额记录)将上传并": "이 컴퓨터의 업무 데이터(계정, 설정, Agent 설정, 프록시 풀/구독, 체크인 및 잔액 기록)를 업로드하여", "本机的全部数据(账号、网关配置、日志统计与桌面设置)将被所选备份文件": "이 PC의 모든 데이터(계정, 게이트웨이 설정, 로그 통계, 데스크톱 설정)는 선택한 백업 파일로", "本机的账号、网关配置、Agent 配置、代理池 / 订阅、签到与余额记录将被远端快照": "이 컴퓨터의 계정, 게이트웨이 설정, Agent 설정, 프록시 풀/구독, 체크인 및 잔액 기록이 원격 스냅샷으로", "本次无需刷新": "이번에는 새로고침이 필요하지 않습니다", "本软件不提供任何担保,可按 AGPL-3.0 修改与分发;通过网络提供修改版服务时须向用户提供对应源码。": "이 소프트웨어는 보증 없이 제공되며 AGPL-3.0에 따라 수정·배포할 수 있습니다. 수정된 네트워크 서비스는 사용자에게 대응 소스를 제공해야 합니다.", "本项目的 AGPL-3.0 许可不替代这些第三方许可。名称与标识的商标权归各自权利人所有。": "이 프로젝트의 AGPL-3.0 라이선스는 이러한 타사 라이선스를 대체하지 않습니다. 이름과 로고의 상표권은 각 권리자에게 있습니다.", "机器人校验": "로봇 검증", "机器人校验设置已保存": "봇 인증 설정을 저장했습니다", "条数": "건수", "来源声明当前关闭,这条规则不会生效。请先在客户端识别设置中开启。": "출처 선언이 꺼져 있어 이 규칙은 적용되지 않습니다. 클라이언트 식별 설정에서 먼저 켜세요.", "来源声明无效或未登记,本次已忽略。": "출처 선언이 잘못되었거나 등록되지 않아 무시했습니다.", "来源声明未启用,本次已忽略。": "출처 선언이 꺼져 있어 무시했습니다.", "来源版本": "출처 리비전", "来源设备:{device}": "원본 기기: {device}", "来自 {device},生成于 {time}": "{device}에서 {time}에 생성", "架构": "아키텍처", "查看内置客户端({n})": "내장 클라이언트 보기 ({n})", "查询管理员状态失败:{message}": "관리자 상태 조회 실패: {message}", "校验身份:这三段必须各自成块排在最前(实测:三段并成一段会被回 405 / 3012)。因此这里按段编辑,不能合成一段。改过的段以你的文本为准,没改的段继续用官方原文;清空某一段 = 那一段恢复官方原文。": "를 기준으로 신원을 검증합니다: 이 세 단락은 각각 별도 블록으로 맨 앞에 있어야 합니다(실측: 세 단락을 하나로 합치면 405 / 3012가 반환됩니다). 따라서 단락별로 편집하며 하나로 합칠 수 없습니다. 수정한 단락은 입력한 텍스트가 우선하고, 수정하지 않은 단락은 계속 공식 원문을 사용합니다. 단락을 비우면 그 단락은 공식 원문으로 복원됩니다.", "桌面端": "데스크톱 앱", "桌面端登录 / 注册验证": "데스크톱 로그인 / 가입 인증", "桌面端:登录 / 注册需要 ALTCHA 人机验证": "데스크톱: 로그인 / 등록에 ALTCHA 인증 필요", "桌面端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "데스크톱: 로그인 / 등록에 ALTCHA 인증 필요(현재 사용 중)", "桌面运行时不可用,暂时无法保存": "데스크톱 런타임을 사용할 수 없어 지금은 저장할 수 없습니다", "档案": "프로필", "检测中…": "확인 중…", "概览": "개요", "模型不能直接看图时,按你选择的方式处理。原生支持图片的请求直接转发,不增加识图调用。": "모델이 이미지를 직접 읽을 수 없을 때 선택한 방식으로 처리합니다. 이미지 지원 모델의 요청은 추가 호출 없이 그대로 전달됩니다.", "模型单独配置": "모델별 설정", "模型目录没写明是否支持图片时按这里处理。": "모델 목록에 이미지 지원 여부가 없을 때 여기 설정을 따릅니다.", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。下面两块分别选好「哪些模型」和「用哪只模型」即可;没配到的模型、以及本来就能看图的模型,一律原样放行。这里的改动立即生效,不需要保存。": "이미지를 읽지 못하는 모델을 다루는 방법은 두 가지뿐입니다. 다른 모델이 대신 읽게 하거나, 요청 전체를 이미지를 읽을 수 있는 모델에 넘기는 것입니다. 아래 두 블록에서 \"어떤 모델\"과 \"어느 모델로\"를 고르면 됩니다. 여기에 포함되지 않은 모델과 원래 이미지를 읽을 수 있는 모델은 그대로 통과합니다. 여기서의 변경은 즉시 적용되며 저장이 필요 없습니다.", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。没配到的模型、以及本来就能看图的模型,一律原样放行;每个请求只用其中一种方式,不会两种串着做,处理失败也不会改走另一种。改动立即生效,不需要保存。": "이미지를 읽지 못하는 모델을 다루는 방법은 두 가지뿐입니다. 다른 모델이 대신 읽게 하거나, 요청 전체를 이미지를 읽을 수 있는 모델에 넘기는 것입니다. 여기에 포함되지 않은 모델과 원래 이미지를 읽을 수 있는 모델은 그대로 통과합니다. 요청마다 두 방식 중 하나만 사용하며, 두 방식을 이어서 실행하지 않고 실패해도 다른 방식으로 넘어가지 않습니다. 여기서의 변경은 즉시 적용되며 저장이 필요 없습니다.", "模型请求是否需要验证码由 ZCode 上游配置决定,领取验证与模型请求免验证分别处理。后台只检查配置和库存,不自动运行验证码或弹出拼图;需要验证时,在账号的「套餐明细」中点击「开始验证」。验证令牌一次性使用,短时间内过期,失败或取消后不会自动重试。": "모델 요청의 인증 필요 여부는 ZCode 업스트림 설정으로 결정하며 플랜 수령 인증과 별도로 처리합니다. 백그라운드는 설정과 재고만 확인하며 인증을 실행하거나 퍼즐을 자동으로 띄우지 않습니다. 필요하면 계정의 「플랜 상세」에서 「인증 시작」을 누르세요. 토큰은 한 번만 사용되며 짧은 시간 후 만료되고 실패나 취소 후 자동 재시도하지 않습니다.", "模式": "모드", "模式改为「{mode}」": "모드를 「{mode}」(으)로 변경", "次": "회", "次日 00:00": "다음 날 00:00", "正则表达式": "정규식", "正在保存上游原始报文:": "업스트림 원본 메시지를 저장하는 중: ", "正在修改…": "변경 중…", "正在剥离出站请求里的审核指纹:表头键值整段删除,模板句最小改写。": "아웃바운드 요청의 검열 핑거프린트를 제거하는 중: 헤더 키-값은 통째로 삭제하고 템플릿 문구는 최소한으로 재작성합니다.", "正在安装…": "설치 중…", "正在应答跨源请求:浏览器跨域请求可直连 /v1/*。": "교차 출처 요청에 응답 중: 브라우저의 CORS 요청이 /v1/*에 직접 연결될 수 있습니다.", "正在归一角色:developer 角色消息转发前改写为 system。": "역할 정규화 중: developer 역할 메시지는 전달 전에 system으로 수정됩니다.", "正在注册…": "등록 중…", "正在联网更新": "온라인으로 갱신 중", "正在读取提供商设置…": "제공자 설정을 불러오는 중…", "正式版": "정식 버전", "每个请求只会用到其中一种方式,不会两种串着做;处理失败也不会改走另一种。配了哪只视觉模型,那次请求的图片就会交给它。": "요청마다 두 방식 중 하나만 사용합니다. 두 방식을 이어서 실행하지 않고, 실패해도 다른 방식으로 넘어가지 않습니다. 설정한 비전 모델에 해당 요청의 이미지가 전달됩니다.", "每条请求轮换到下一个可用账号;新会话交给当前最闲的那位。适合想把手里的号摊开用、不让某一个一直扛。": "요청마다 다음 사용 가능한 계정으로 순환하고, 새 세션은 현재 한가한 계정에 맡깁니다. 보유 계정을 고르게 쓰고 특정 계정에 부하가 몰리지 않게 하고 싶을 때 적합합니다.", "每条请求都重新按策略选路 —— 行为与「关闭」一致,仅保留会话识别的记录。": "요청마다 전략에 따라 다시 선택합니다 — 동작은 \"끄기\"와 같으며 세션 기록만 유지됩니다.", "每次等待的时长,默认 0 = 跟随上游建议(实测 9~30 秒,上游没给建议时用 15 秒)。可填 0–120 秒强制一个固定时长。": "대기 1회의 길이입니다. 기본값 0 = 업스트림 권장 시간을 따릅니다(실측 9~30초, 업스트림이 권장 시간을 주지 않으면 15초 사용). 0–120초를 입력하면 고정 시간으로 강제할 수 있습니다.", "每行一个域名,不填协议、端口或路径;与 Cloudflare 中的配置一致,服务端按完整域名匹配。手机 App 使用所连接网关的域名。": "프로토콜, 포트, 경로 없이 한 줄에 호스트 이름 하나씩 입력하세요. Cloudflare 설정과 일치해야 하며 서버는 전체 호스트 이름이 정확히 일치하는지 확인합니다. 모바일 앱은 연결된 게이트웨이의 호스트 이름을 사용합니다.", "毫秒": "밀리초", "沟通方式 / 上下文管理 + Environment 段。": "커뮤니케이션 방식 / 컨텍스트 관리 + Environment 단락.", "没有可导出的账号": "내보낼 계정이 없습니다", "没有可用视觉模型时": "사용 가능한 비전 모델이 없을 때", "没有已确认支持图片的模型,请先在模型管理中确认。": "이미지 지원이 확인된 모델이 없습니다. 먼저 모델 관리에서 확인하세요.", "没能读到「{label}」的当前值,改为 {count} 条可能会删除超出的历史数据。": "「{label}」의 현재 값을 읽지 못했습니다. {count}건으로 변경하면 초과한 과거 데이터가 삭제될 수 있습니다.", "没能读到「{label}」的当前值,改为 {days} 天可能会删除超出的历史数据。": "「{label}」의 현재 값을 읽지 못했습니다. {days}일로 변경하면 초과된 과거 데이터가 삭제될 수 있습니다.", "沿用对应方式的视觉模型配置,不额外维护一份模型列表。": "해당 방식의 비전 모델 설정을 사용하며 별도의 모델 목록은 관리하지 않습니다.", "沿用工具服务的视觉分析模型": "도구 서비스의 시각 분석 모델 재사용", "沿用工具服务的视觉分析模型(未配置)": "도구 서비스의 비전 모델 사용(미설정)", "注册并开启": "등록하고 켜기", "注册管理员账号": "관리자 계정 등록", "注意:这一家的「网关自带」开关现在是关的,改过的正文要等开关打开才生效。": "주의: 이 제공자의 「게이트웨이 내장」 스위치가 현재 꺼져 있습니다. 수정한 본문은 스위치를 켠 후에야 적용됩니다.", "流式响应相邻数据之间允许的最大空闲时间(秒),收到新数据后重新计时,默认 300 秒,范围 1~3600。": "스트리밍 응답에서 인접한 데이터 사이에 허용되는 최대 유휴 시간(초). 새 데이터가 오면 다시 시간을 재며, 기본 300초, 범위 1~3600.", "流式响应空闲超时": "스트리밍 응답 유휴 타임아웃", "测试连接": "연결 테스트", "浏览器 / PWA": "브라우저 / PWA", "浏览器只在 https 或 localhost 下提供离线缓存;局域网 http 访问不影响正常使用": "브라우저는 https 또는 localhost에서만 오프라인 캐시를 제공합니다. LAN의 http 접속에서도 평소대로 사용할 수 있습니다.", "浏览器在本地完成计算,不需要第三方密钥,也不依赖外部验证服务。": "브라우저에서 로컬로 계산합니다. 타사 키나 외부 인증 서비스가 필요하지 않습니다.", "浏览器标签页": "브라우저 탭", "浏览器面板": "브라우저 패널", "消息角色": "메시지 역할", "添加备选模型": "예비 모델 추가", "添加提供商": "제공자 추가", "添加提供商…": "제공자 추가…", "添加自定义头": "사용자 지정 헤더 추가", "添加要单独配置的提供商": "개별 설정할 제공자 추가", "清除本机凭证": "이 기기의 자격 증명 삭제", "清除这里的正文": "여기의 본문 지우기", "源代码": "소스 코드", "点下面的入口会用系统默认浏览器打开 GitHub 的对应表单(需要 GitHub 账号,模板已预设好,填完直接提交即可)。": "아래 항목을 클릭하면 시스템 기본 브라우저에서 GitHub의 해당 양식이 열립니다(GitHub 계정 필요, 템플릿이 미리 채워져 있으므로 작성 후 바로 제출하면 됩니다).", "点击重命名": "클릭하여 이름 변경", "点此添加或切换服务器": "눌러서 서버 추가 또는 전환", "点此添加服务器": "눌러서 서버 추가", "版本": "버전", "版本信息": "버전 정보", "版本信息 · 所连网关环境": "버전 정보 · 연결된 게이트웨이", "版权声明": "저작권 고지", "状态码 {code} 已在名单里": "상태 코드 {code}는 이미 목록에 있습니다", "状态码必须是 {min}–{max} 的整数(收到: {text})": "상태 코드는 {min}–{max} 범위의 정수여야 합니다(입력값: {text})", "环境": "환경", "生成时间:{time}": "생성 시간: {time}", "生效顺序:有效的来源声明优先,然后按顺序匹配自定义规则,最后使用内置规则。中转丢失原始标识时,无法自动推断背后的软件。": "우선순위는 유효한 출처 선언, 사용자 규칙 순서, 내장 규칙 순입니다. 중계 과정에서 원래 식별 정보가 사라지면 원래 소프트웨어를 자동으로 추론할 수 없습니다.", "用 models.dev 补齐上游没声明的模型能力与思考档位(联网刷新,内嵌快照始终生效)": "업스트림이 선언하지 않은 모델 능력과 추론 레벨을 models.dev로 채웁니다(온라인 새로고침, 내장 스냅샷은 항상 적용)", "用于加密上云的账号密钥。请自己记牢 —— 它不保存到云端,换机下载时必须输入同一个密码,否则账号数据无法解密。": "클라우드로 보내는 계정 키를 암호화하는 데 사용합니다. 반드시 기억하세요 — 클라우드에 저장되지 않으며, 다른 컴퓨터에서 복원할 때 같은 비밀번호를 입력해야 계정 데이터를 복호화할 수 있습니다.", "用哪只模型识图": "이미지를 읽을 모델", "用浏览器菜单里的「添加到主屏幕」把这一页装成 App:全屏打开、没有地址栏,和原生应用一样。": "브라우저 메뉴의 「홈 화면에 추가」로 이 페이지를 앱처럼 설치할 수 있습니다. 전체 화면, 주소 표시줄 없이 네이티브 앱과 같습니다.", "由 Cloudflare 提供验证,需要浏览器与网关均能连接 Cloudflare。验证失败或服务不可用时不会自动放行。": "Cloudflare에서 인증을 제공합니다. 브라우저와 게이트웨이 모두 Cloudflare에 연결할 수 있어야 합니다. 인증 실패나 서비스 장애 시 자동으로 접근을 허용하지 않습니다.", "由 {source} 覆盖,手动设置暂不生效": "{source}가 우선 적용되어 수동 설정은 현재 적용되지 않습니다", "界面缩放": "인터페이스 줌", "界面缩放比例": "인터페이스 줌 비율", "界面语言": "인터페이스 언어", "界面语言。可选简体中文、繁體中文、English、日本語、한국어、Português (Brasil),或「跟随系统」(按浏览器 / 系统的语言列表自动选)。切换后整页立即刷新;该偏好只存在本机(localStorage),不影响账号、密钥与转发。": "인터페이스 언어입니다. 중국어 간체, 중국어 번체, English, 日本語, 한국어, Português (Brasil) 또는 「시스템」(브라우저 / 시스템 언어 목록에 따라 자동 선택)을 선택할 수 있습니다. 전환하면 페이지 전체가 즉시 새로 고침됩니다. 이 설정은 이 컴퓨터에만 저장되며(localStorage) 계정, 키, 포워딩에는 영향을 주지 않습니다.", "界面语言只保存在本机(localStorage)。切换后整页立即刷新,不影响账号、密钥与转发。": "인터페이스 언어는 이 컴퓨터에만 저장됩니다(localStorage). 전환하면 페이지 전체가 즉시 새로 고침되며 계정, 키, 포워딩에는 영향을 주지 않습니다.", "界面里编辑的正文": "화면에서 편집한 본문", "留空 = 用内置默认提示词": "비워 두면 = 내장 기본 시스템 프롬프트 사용", "留空使用 AWS 官方地址": "비워 두면 AWS 공식 주소 사용", "留空使用默认": "비워 두면 기본값 사용", "留空表示删除匹配内容;替换内容按原文写入,$ 不作为捕获组引用。": "비우면 일치한 내용을 삭제합니다. 치환 내용은 그대로 삽입하며 $를 캡처 그룹 참조로 처리하지 않습니다.", "登录 / 注册需要通过 ALTCHA 人机验证(工作量证明)": "로그인 / 가입에는 ALTCHA 인간 검증(작업 증명)이 필요합니다", "登录 / 账号切换 / 429 切换等系统事件,可填 1–3650 天。": "로그인 / 계정 전환 / 429 전환 등 시스템 이벤트이며, 1–3650일을 입력할 수 있습니다.", "登录 / 账号切换 / 429 切换等系统事件,可填 1–99999 天。": "로그인 / 계정 전환 / 429 전환 등 시스템 이벤트. 1~99999일까지 입력할 수 있습니다.", "登录 Agent2API": "Agent2API 로그인", "登录 {name}": "{name}에 로그인", "登录人机验证": "로그인 CAPTCHA", "百分比类读数(如 OpenCode Go、Antigravity)不能相加,组头显示的是组内最低剩余比例。": "백분율 읽기(예: OpenCode Go, Antigravity)는 합산할 수 없으므로 그룹 띠에는 그룹 내 가장 낮은 잔여 비율이 표시됩니다.", "监听地址": "수신 주소", "目前展示仓库已登记的图标来源许可,不代表完整的第三方依赖清单。": "현재 목록에는 저장소에 등록된 아이콘 출처의 라이선스만 표시됩니다. 전체 타사 의존성 목록은 아닙니다.", "目标路径:{path}": "대상 경로: {path}", "直接按上面的设置兼容": "위 설정대로 바로 호환 처리", "直接按当前方式兼容": "현재 방식으로 바로 호환 처리", "知道了": "확인", "确定": "확인", "确定后加入当前草稿,点击「保存设置」才会生效。": "확인하면 현재 초안에 추가합니다. 설정 저장을 눌러야 적용됩니다.", "确定继续?": "계속할까요?", "确认上传": "업로드 확인", "确认图片处理授权": "이미지 처리 권한 확인", "确认备份密码": "백업 비밀번호 확인", "确认并保存": "확인 후 저장", "确认新密码": "새 비밀번호 확인", "确认缩减数据保留": "데이터 보관 축소 확인", "确认缩短保留天数": "보관 일수 단축 확인", "社区与支持": "커뮤니티 및 지원", "离线缓存未启用": "오프라인 캐시가 꺼져 있습니다", "积分合计只统计当前筛选出来的账号": "포인트 합계를 현재 필터에 표시된 계정만으로 계산", "移入「{name}」": "\"{name}\"(으)로 이동", "程序路径": "실행 파일 경로", "空 = 不要这一份,回落提示词文件 / 内置默认提示词。": "비우면 = 이 본문을 사용하지 않고 시스템 프롬프트 파일 / 내장 기본 시스템 프롬프트로 폴백합니다.", "空分组 · 点组头的 + 把菜单移进来": "빈 그룹 · 머리의 +로 메뉴를 가져오세요", "立即解除": "즉시 해제", "站点密钥(Site Key)": "사이트 키(Site Key)", "第一段": "첫 번째 단락", "第一段(身份句)": "첫 번째 단락(아이덴티티 문장)", "第三方应用密码": "타사 앱 비밀번호", "第三方开源许可": "타사 오픈 소스 라이선스", "第三方模型回答完自动折叠过程": "타사 모델의 답변 후 과정 자동 접기", "第三方模型回答完自动折叠过程设置已刷新": "타사 모델의 답변 후 과정 자동 접기 설정을 새로 고쳤습니다", "第三段": "세 번째 단락", "第三段(动态段)": "세 번째 단락(동적 단락)", "第二段": "두 번째 단락", "第二段(稳定段)": "두 번째 단락(고정 단락)", "等待响应超时": "응답 대기 타임아웃", "等待期间请求日志的状态列会显示「排队中」阶段,详情弹窗的「内部重试」里能逐次看到等待时长;等待用尽后返回 HTTP 503(不是 401/429:既不会刷新凭证,也不会把账号标成限额)。": "대기 중에는 요청 로그의 상태 열에 「큐잉 중」 단계가 표시되고, 상세 팝업의 「내부 재시도」에서 회차별 대기 시간을 볼 수 있습니다. 대기가 소진되면 HTTP 503을 반환합니다(401/429가 아닙니다: 자격 증명을 갱신하지도, 계정을 할당량 초과로 표시하지도 않습니다).", "等比放大或缩小整个界面(文字、控件、间距一起变),效果与浏览器按 Ctrl +/- 相同:80%–130%、5% 一档。窗口本身不缩放,变的是页面内容的显示比例,设置立即生效并记住,下次启动直接按这个比例打开。放得越大可视范围越小,窗口较窄或表格较宽时不建议调得太大。": "인터페이스 전체를 비율에 맞춰 확대하거나 축소합니다(텍스트, 컨트롤, 간격이 함께 바뀜). 효과는 브라우저에서 Ctrl +/-를 누른 것과 같습니다: 80%–130%, 5% 단위. 창 자체는 확대되지 않고 페이지 내용의 표시 비율만 바뀝니다. 설정은 즉시 적용되고 기억되어 다음 시작 시 이 비율로 열립니다. 크게 할수록 보이는 범위가 좁아지므로 창이 좁거나 표가 넓을 때는 너무 크게 하지 않는 것이 좋습니다.", "简体中文": "중국어 간체", "管理员已注册": "관리자 등록됨", "管理员账号": "관리자 계정", "管理插件": "플러그인 관리", "精确文本": "정확한 텍스트", "系统提示词模式": "시스템 프롬프트 모드", "系统提示词设置已刷新": "시스템 프롬프트 설정을 새로 고쳤습니다", "累计请求": "누적 요청", "繁体中文": "중국어 번체", "约 {n} 字符": "약 {n}자", "结构": "구조", "给 Codex 的响应补阶段标记,回答完后像官方模型一样把推理与命令过程折叠起来": "Codex 응답에 단계 표시를 보강해 답변 후 공식 모델처럼 추론과 명령 과정을 접기", "继续并清理": "계속하고 정리", "编辑提示词正文 · {label}": "시스템 프롬프트 본문 편집 · {label}", "编辑提示词正文 · 全局": "시스템 프롬프트 본문 편집 · 전역", "编辑正文": "본문 편집", "编辑网关自带提示词 · {label}": "게이트웨이 내장 시스템 프롬프트 편집 · {label}", "编辑脱敏规则": "마스킹 규칙 편집", "编辑识别规则": "식별 규칙 편집", "缩放后重新存成 JPEG 时用的质量。默认 80,可填 40–95;数值越小体积越小、画质越差。": "축소한 이미지를 JPEG로 다시 저장할 때 쓰는 품질입니다. 기본 80, 40~95까지 지정할 수 있으며, 낮을수록 용량은 줄지만 화질이 떨어집니다.", "缩放比例": "줌 비율", "网关": "게이트웨이", "网关 Key 数量": "게이트웨이 키 수", "网关尚未就绪": "게이트웨이가 아직 준비되지 않았습니다", "网关自带": "게이트웨이 내장", "网关跨域访问已开启": "게이트웨이 CORS 접근이 켜졌습니다", "网关跨域访问设置已刷新": "게이트웨이 CORS 접근 설정을 새로 고쳤습니다", "网关跨域访问(CORS)": "게이트웨이 CORS 접근", "网关面(/v1/*)默认不应答浏览器跨源请求:页面直连会被预检拦下,只报「无法连接 API」。注意来源是 * —— 未配「网关 Key」时任何网页都能借本机网关打上游,故默认关闭;只给自己用的话,让页面与网关同源(本地反代 /v1)更稳妥。面板接口(/api/*)不受影响。": "게이트웨이 API(/v1/*)는 기본적으로 브라우저의 교차 출처 요청에 응답하지 않습니다. 페이지에서 직접 연결하면 프리플라이트에 막히고 「API에 연결할 수 없음」만 표시됩니다. 출처가 *이므로 「게이트웨이 키」를 설정하지 않으면 어떤 웹 페이지든 로컬 게이트웨이를 거쳐 업스트림을 호출할 수 있기에 기본적으로 꺼져 있습니다. 혼자만 사용한다면 페이지와 게이트웨이를 같은 출처로 두는 편(로컬 리버스 프록시 /v1)이 더 안전합니다. 패널 인터페이스(/api/*)는 영향을 받지 않습니다.", "网络访问": "네트워크 접근", "网页端": "웹", "网页端登录 / 注册验证": "웹 로그인 / 가입 인증", "网页端的界面缩放由浏览器自己控制(Ctrl + / Ctrl -,或浏览器菜单里的缩放),此项不可调。": "웹 버전의 인터페이스 줌은 브라우저가 직접 제어하며(Ctrl + / Ctrl -, 또는 브라우저 메뉴의 줌), 이 항목은 조정할 수 없습니다.", "网页端:登录 / 注册需要 ALTCHA 人机验证": "웹: 로그인 / 등록에 ALTCHA 인증 필요", "网页端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "웹: 로그인 / 등록에 ALTCHA 인증 필요(현재 사용 중)", "网页管理地址": "웹 관리 주소", "群晖 NAS": "Synology NAS", "群晖需在「控制面板 → 应用程序门户 → WebDAV」里启用服务,端口默认 5005(HTTP)/ 5006(HTTPS)。": "Synology는 '제어판 → 응용 프로그램 포털 → WebDAV'에서 서비스를 활성화하세요. 기본 포트는 5005(HTTP)/5006(HTTPS)입니다.", "脱敏词表": "마스킹 규칙", "腾讯云 COS": "텐센트 클라우드 COS", "自动同步": "자동 동기화", "自动同步上次失败": "마지막 자동 동기화 실패", "自动续写": "자동 이어쓰기", "自定义 User-Agent": "사용자 정의 User-Agent", "自定义 · {name}": "사용자 지정 · {name}", "自定义头匹配规则": "사용자 지정 헤더 규칙", "自定义客户端分类": "사용자 지정 클라이언트 분류", "自定义客户端数量已达上限": "사용자 지정 클라이언트 수가 한도에 도달함", "自定义提供商 {id}": "커스텀 제공자 {id}", "自定义网站和应用界面中显示的名称与 Logo。": "웹사이트와 앱 화면에 표시할 이름과 로고를 변경합니다.", "自定义识别规则": "사용자 지정 식별 규칙", "自愈保护": "자가 복구 보호", "至少 12 位": "12자 이상", "至少 8 位,换机下载时需要": "8자 이상, 다른 컴퓨터에서 복원할 때 필요", "至少要保留一个分组": "그룹은 최소 하나 남아야 합니다", "英语": "영어", "范围 5–120 秒,并受原请求时限约束。": "범위 5–120초이며 원래 요청 제한 시간에도 묶입니다.", "范围为 5–120 秒,并受原请求时限约束。图片过大、格式错误或下载失败不会被当作模型不支持图片。": "5~120초 범위이며 원래 요청의 제한 시간도 적용됩니다. 이미지 크기 초과, 형식 오류 또는 다운로드 실패를 이미지 미지원으로 판단하지 않습니다.", "被更高优先级覆盖": "더 높은 우선순위가 적용됨", "装上{size}的官方身份提示词": "공식 아이덴티티 프롬프트 설치({size})", "装成 App 后从桌面图标直接进入:全屏打开、没有地址栏。": "앱으로 설치하면 홈 화면 아이콘에서 바로 열립니다. 전체 화면, 주소 표시줄 없음.", "覆盖": "덮어쓰기", "规则 / 匹配方式": "규칙 / 일치 방식", "规则可以增删改、启停和调整顺序;替换内容留空表示删除匹配内容。恢复默认只重置词表,不改开关和提供商范围。": "규칙 추가, 편집, 삭제, 활성화, 비활성화 및 순서 변경이 가능합니다. 치환 내용을 비우면 일치 부분을 삭제합니다. 기본값 복원은 규칙만 초기화하고 스위치와 제공자 범위는 변경하지 않습니다.", "规则名称": "규칙 이름", "规则名称不能为空,且最多 {max} 个字符": "규칙 이름은 필수이며 최대 {max}자까지 입력할 수 있습니다", "规则已保存,对后续请求生效;当前历史记录未修改。": "규칙이 저장되어 이후 요청에 적용됩니다. 현재 과거 기록은 변경되지 않았습니다.", "规则忽略大小写,只影响新请求的日志与统计,不改变模型选择或权限。": "규칙은 대소문자를 구분하지 않으며 새 요청의 로그와 통계에만 적용됩니다. 모델 선택이나 권한은 바뀌지 않습니다.", "规则编号:{id}": "규칙 ID: {id}", "视觉模型": "비전 모델", "视觉模型先识读图片,再由原模型分析和回答。": "비전 모델이 먼저 이미지를 읽고 원래 모델이 분석하여 답변합니다.", "视觉模型来源": "비전 모델 출처", "视觉模型的思考等级": "비전 모델의 사고 수준", "视觉模型直接回答": "비전 모델이 직접 답변", "视觉模型识读图片": "비전 모델이 이미지를 읽음", "解码后小于这个体积的图片保持原样。默认 512KB,可填 0–10240;填 0 表示所有内嵌图片都过一遍。": "디코딩 후 크기가 이 값보다 작은 이미지는 그대로 둡니다. 기본 512KB, 0~10240까지 지정할 수 있으며, 0이면 모든 인라인 이미지를 처리합니다.", "解除失败:{message}": "해제 실패: {message}", "触发阈值": "적용 임계값", "计数": "집계", "计量单位": "표기 단위", "让 Codex 在收到最终答案后收起中间过程。仅为严格识别的 Codex Responses 请求补阶段标记,报表归类和来源声明不影响此判断。正常结束且没有工具调用的非空回答才补 final_answer,工具调用前的说明补 commentary;错误、截断、缺少结束信号或未知结束原因不补最终答案标记。默认关闭,不改变回答文字,也不减少模型思考或用量。": "Codex가 최종 답변을 받은 뒤 중간 과정을 접을 수 있게 합니다. 엄격하게 식별된 Codex Responses 요청에만 단계 표시를 추가하며, 보고서 분류나 클라이언트의 출처 선언에는 영향을 받지 않습니다. 정상 종료되고 도구 호출이 없는 비어 있지 않은 답변에만 final_answer를, 도구 호출 전 설명에는 commentary를 붙입니다. 오류, 잘림, 종료 신호 누락 또는 알 수 없는 종료 사유에는 최종 답변 표시를 붙이지 않습니다. 기본값은 꺼짐이며 답변 내용, 모델의 추론과 사용량은 바뀌지 않습니다.", "许可原文": "라이선스 원문", "许可原文已随软件内置,无需联网即可查看;打开项目来源链接需要联网。": "라이선스 원문은 앱에 포함되어 있어 오프라인으로 볼 수 있습니다. 프로젝트 출처 링크를 열려면 인터넷 연결이 필요합니다.", "许可核对版本": "라이선스 확인에 사용한 리비전", "设置不可隐藏(隐藏了只能清缓存找回来)": "\"설정\"은 숨길 수 없습니다(숨기면 저장소를 지워야 되돌릴 수 있습니다)", "设置备份密码": "백업 비밀번호 설정", "设置识别规则": "식별 규칙 설정", "访问时请使用目标设备能连接到的地址;这里显示的本机地址不代表公网可达。": "접속하는 기기에서 연결할 수 있는 주소를 사용하세요. 여기에 표시된 주소가 인터넷에서 접근 가능함을 의미하지는 않습니다.", "识别依据": "식별 근거", "识别规则数量已达上限": "식별 규칙 수가 한도에 도달함", "词表为空,不会改写任何指纹。可以新增规则或恢复默认词表。": "규칙 목록이 비어 있어 지문을 수정하지 않습니다. 규칙을 추가하거나 기본 규칙을 복원하세요.", "该提供商暂无可编辑的专属设置": "이 제공자에는 편집할 수 있는 전용 설정이 없습니다", "详细日志": "상세 로그", "语言设置": "언어 설정", "请先保存设置再同步": "동기화하기 전에 설정을 저장하세요", "请先在 Cloudflare 创建 Turnstile 组件,建议选择 Managed 模式,并添加面板实际使用的域名。": "먼저 Cloudflare에서 Turnstile 위젯을 만드세요. Managed 모드를 권장하며 패널에서 실제로 사용하는 도메인을 추가하세요.", "请填一个分组名": "그룹 이름을 입력하세요", "请填写管理员账号(64 字符以内)": "관리자 계정을 입력하세요(64자 이내)", "请求发出后等待上游响应头的最大时间(秒),默认 300 秒,范围 1~3600。": "요청을 보낸 뒤 업스트림 응답 헤더를 기다리는 최대 시간(초). 기본 300초, 범위 1~3600.", "请求带有不同软件的标识,未自动归类;可用自定义规则明确归属。": "요청에 서로 다른 소프트웨어 식별 정보가 있어 자동 분류하지 않았습니다. 사용자 규칙으로 분류를 지정할 수 있습니다.", "请求提供商 / 模型支持": "제공자 / 모델 지원 요청", "请求日志保留天数": "요청 로그 보존 일수", "请求日志保留数量上限": "요청 로그 보관 건수 상한", "请求记录": "요청 기록", "请求超时": "요청 타임아웃", "请求转发到上游失败时(服务器瞬时错误、连接失败,以及 WorkBuddy 的 11-128 敏感词拦截),网关会等一段间隔后再发一次。次数分两档,管的是两件事:①「同一账号重试次数」在同一账号上原地重发几次 —— 一般是提示词被上游拦截、或链路瞬时抖动,等一会儿重发往往就好了;②「切换账号重试次数」这份请求最多再换几个账号试 —— 首发的那个账号不算,每换一个扣一次,不分是不是同一家(换到同一家的下一个账号也算一次),换满还失败就把错误返回给客户端。两项都设为 0 表示失败不重试、直接报错。注意账号级限额(429)不占这里的换号次数 —— 那类失败走「冷却该账号并换下一个账号」的降级,与这里的重试是两条路。另有「指定错误码直接换号」名单(默认 402):命中名单的上游状态码不在同一账号重发,直接按队列换下一个账号继续试(换号也占「切换账号重试次数」),换满仍失败才把错误返回给客户端。": "업스트림으로 전달이 실패하면(서버의 일시적 오류, 연결 실패, WorkBuddy의 11-128 금칙어 차단) 게이트웨이가 일정 간격을 기다린 뒤 한 번 더 보냅니다. 횟수는 두 가지로 나뉘며 서로 다른 일을 담당합니다. ①「동일 계정 재시도 횟수」는 같은 계정에서 제자리로 몇 번 재전송할지를 정합니다. 보통 시스템 프롬프트가 업스트림에 차단되었거나 경로가 순간적으로 흔들린 경우로, 잠시 후 다시 보내면 대개 해결됩니다. ②「계정 전환 재시도 횟수」는 이 요청이 최대 몇 개의 계정으로 더 시도할지를 정합니다. 최초 전송 계정은 제외하고 계정을 바꿀 때마다 1회씩 차감되며, 같은 제공자인지 여부는 따지지 않습니다(같은 제공자의 다음 계정으로 바꿔도 1회로 계산). 횟수를 다 써도 실패하면 오류를 클라이언트에 반환합니다. 두 항목을 모두 0으로 설정하면 실패 시 재시도하지 않고 바로 오류를 반환합니다. 계정 단위 할당량 초과(429)는 여기의 계정 전환 횟수를 소모하지 않습니다. 그런 실패는 「해당 계정을 쿨다운하고 다음 계정으로 전환」하는 폴백 경로를 타며, 여기의 재시도와는 별개입니다. 또한 「지정 오류 코드 즉시 계정 전환」 목록(기본 402)이 있습니다. 목록에 해당하는 업스트림 상태 코드는 같은 계정에서 재전송하지 않고 바로 큐의 다음 계정으로 넘어가 계속 시도하며(계정 전환도 「계정 전환 재시도 횟수」를 소모), 횟수를 다 써도 실패하면 오류를 클라이언트에 반환합니다.", "请求重试": "요청 재시도", "请至少选择一个提供商": "제공자를 하나 이상 선택하세요", "请输入同步密码": "동기화 비밀번호를 입력하세요", "请输入当前密码": "현재 비밀번호를 입력하세요", "请输入服务端密钥": "비밀 키를 입력하세요", "请选择可用的标识请求头": "사용 가능한 식별 헤더를 선택하세요", "请选择归属客户端": "분류할 클라이언트를 선택하세요", "读取云同步设置失败:{message}": "클라우드 동기화 설정을 읽지 못했습니다: {message}", "读取失败:{message}": "읽기 실패: {message}", "读取完整非流式响应体允许的最大时间(秒),默认 300 秒,范围 1~3600。": "비스트리밍 응답 본문 전체를 읽는 데 허용되는 최대 시간(초). 기본 300초, 범위 1~3600.", "读取网关信息失败:{message}": "게이트웨이 정보 읽기 실패: {message}", "读取远端…": "원격 읽는 중…", "读取远端信息失败:{message}": "원격 정보를 읽지 못했습니다: {message}", "调用方声明": "호출자 선언", "调试报文": "디버그 메시지", "调试模式": "디버그 모드", "调试模式设置已刷新": "디버그 모드 설정을 새로 고쳤습니다", "负载均衡": "부하 분산", "账号列表": "계정 목록", "账号导入 / 导出": "계정 가져오기 / 내보내기", "账号路由": "계정 라우팅", "账号页表格的两项显示偏好,只存在本机(localStorage),不影响账号数据与转发。「积分合计只统计当前筛选出来的账号」:账号页每一家的分组带右侧有一枚「可用合计」,默认按整组求和 —— 不受筛选、搜索影响,被筛掉的账号也计入(余额是资产,禁用也只表示不参与转发,额度仍在账上)。打开这一项后改为只累加当前可见的行:例如筛出 1 个 100 积分的账号,合计就是 100,而不是同组两个账号之和 1,000。分页不参与这个口径 —— 翻页看的是同一份结果的不同屏,合计不随页码变化。「隐藏账号名」与表头「账号」旁边那颗眼睛是同一个开关:打开后账号列的名字整体显示成星号,适合截图分享时遮挡账号。": "계정 표의 표시 설정 두 가지입니다. 이 컴퓨터에만 저장되며(localStorage) 계정 데이터나 포워딩에는 영향을 주지 않습니다. \"포인트 합계를 현재 필터에 표시된 계정만으로 계산\": 계정 페이지의 각 제공자 그룹 띠 오른쪽에 \"사용 가능 합계\"가 있습니다. 기본값은 그룹 전체를 합산하며 필터와 검색의 영향을 받지 않고, 필터에서 제외된 계정도 포함됩니다(잔액은 자산이며, 비활성화는 포워딩에 참여하지 않는다는 뜻일 뿐 포인트는 그대로 남습니다). 이 항목을 켜면 현재 보이는 행만 더합니다. 예를 들어 100포인트 계정 하나로 필터링하면 합계는 100이며, 같은 그룹 두 계정의 합인 1,000이 아닙니다. 페이지 나누기는 이 계산에 포함되지 않습니다. 페이지는 같은 결과를 다른 화면에서 보는 것일 뿐이므로 페이지를 넘겨도 합계는 바뀌지 않습니다. \"계정 이름 숨기기\"는 표의 \"계정\" 열 옆 눈 아이콘과 같은 스위치입니다. 켜면 계정 열의 이름이 별표로 표시되어 스크린샷 공유 시 가릴 수 있습니다.", "账户": "계정", "超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件。把天数改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。可填范围为 1–3650 天。请求日志 / 按天聚合 / 签到记录已全量保留、不再自动删除,要清历史请到对应页面手动清空。": "보존 기간을 초과한 부분은 삭제됩니다: 이벤트 로그는 로그인, 계정 전환, 429 전환 같은 시스템 이벤트입니다. 일수를 줄여(예: 30일 → 7일) 저장하면 초과된 기록이 즉시 삭제되며 되돌릴 수 없습니다. 늘리거나 그대로 두면 아무것도 삭제되지 않습니다. 입력 범위는 1–3650일입니다. 요청 로그 / 일별 집계 / 출석 기록은 전량 보존되어 자동 삭제되지 않습니다. 기록을 지우려면 해당 페이지에서 직접 비워 주세요.", "超出的历史数据会被立即删除,且不可恢复。": "초과된 과거 데이터는 즉시 삭제되며 복구할 수 없습니다.", "超时": "타임아웃", "超时设置已刷新": "타임아웃 설정을 새로 고쳤습니다", "跟随模型配置": "모델 설정 따르기", "跟随系统 · 浅色 · 深色": "시스템 · 라이트 · 다크", "跟随默认": "기본값 따르기", "跨域访问": "CORS", "路由": "라우팅", "路由组只使用组内成员;普通路由只使用参与范围内的账号和模型。": "라우트 그룹은 그룹 내 구성원만 사용하고 일반 라우트는 참여 범위 내 계정과 모델만 사용합니다.", "路由设置已刷新": "라우팅 설정을 새로고침했습니다", "跳过 {n} 个": "{n}개 건너뜀", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;负载均衡是每条请求换下一位,把负载摊到各个账号上。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时)、被 429 的账号垫底排到队尾 30 分钟、余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 前两层可以在下面按需开关,限制器由账号的「限制器」设置管。": "요청 전송 시 계정을 어떤 순서로 고르는지: ① \"라우팅 전략\"이 대기 규칙을 정합니다 — 순서 우선은 1 번째 계정이 응답하지 못하게 될 때(레이트 리밋 / 장애 / 잔여량 소진)까지 모든 요청을 처리하고 그다음으로 넘어갑니다. 부하 분산은 요청마다 다음 계정으로 돌려 부하를 여러 계정에 나눕니다. ② \"세션 고정\"은 같은 세션(같은 모델 + 같은 첫 메시지)을 가능한 한 같은 계정에 묶어 둡니다 — 여러 턴 대화에서 업스트림 컨텍스트 캐시를 재사용해 계정 교체와 낭비가 줄어듭니다. 자동은 5 분, 세션 내는 6 시간 고정하며, 매 턴과 끄기는 고정하지 않습니다. 계정의 대기 순번(계정 표의 1 열)은 모든 전략의 기반이고 전략은 그 위에서 작동합니다. 라우팅에는 자가 복구 보호가 3 겹 있습니다: 전송 실패한 계정은 잠시 물러나고(15 분부터 시작해 실패마다 2 배, 최대 1 시간), 잔여량이 있는데 429 를 받은 계정은 30 분간 맨 뒤로 가며, 잔여량 소진 / 기간 토큰 한도 도달 계정은 리미터가 가로막습니다 — 앞의 2 가지는 아래에서 필요에 따라 켜고 끌 수 있고, 리미터는 각 계정의 \"리미터\" 설정이 관할합니다.", "转发前压缩对话里内嵌的大图(只改发给上游的副本,生图与图片编辑不受影响)": "포워딩 전에 대화에 포함된 큰 이미지를 압축합니다(상류로 보내는 사본만 변경되며, 이미지 생성과 편집에는 영향 없음)", "转发前将 developer 角色消息转换为 system,兼容不支持 developer 角色的 OpenAI 兼容上游": "전달 전에 developer 역할 메시지를 system으로 변환하여 developer 역할을 지원하지 않는 OpenAI 호환 업스트림과 호환", "转发失败的账号休息一会儿再回来:15 分钟起步,连续失败翻倍,封顶 1 小时;成功一次立即恢复。目的是「让这次失败先凉一会儿」,免得一条条地反复撞同一个坏账号。": "전송에 실패한 계정은 잠시 쉬고 돌아옵니다: 15 분부터 시작해 연속 실패마다 2 배, 최대 1 시간. 한 번 성공하면 즉시 복구됩니다. \"실패를 잠시 식히는\" 것이 목적으로, 같은 불량 계정을 요청마다 반복해서 두드리지 않게 합니다.", "转发链路": "전달 경로", "轮询间隔": "폴링 간격", "软件标识超过 1 KB,已截断保存;匹配仅使用保留部分。": "소프트웨어 식별 정보가 1 KB를 초과하여 잘라 저장했습니다. 일치 판정에는 저장된 부분만 사용합니다.", "软件版本": "소프트웨어 버전", "轻量模式": "경량 모드", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 套餐池(Start Plan)通道不可用,相关请求会在请求日志里注明原因": "경량 모드가 켜져 있습니다: 창을 닫으면 UI 프로세스가 파괴되고(약 200MB 메모리 해제) 게이트웨이는 백그라운드에서 계속됩니다. UI가 파괴된 동안 ZCode 플랜 풀 (Start Plan) 채널을 사용할 수 없으며, 해당 요청은 요청 로그에 사유가 기록됩니다", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 活动套餐通道不可用,相关请求会在请求日志里注明原因": "경량 모드 켜짐: 창을 닫으면 인터페이스 프로세스가 파괴되고(약 200MB 메모리 해제) 게이트웨이는 백그라운드에서 계속됩니다. 인터페이스가 파괴된 동안에는 ZCode 활동 요금제 채널을 사용할 수 없으며, 관련 요청은 요청 로그에 사유가 기록됩니다", "轻量模式(关窗释放界面内存)": "경량 모드(창을 닫아 인터페이스 메모리 해제)", "辅助识图": "보조 이미지 읽기", "辅助识图 · 原模型回答": "보조 읽기 · 원래 모델이 답변", "辅助识图保留原模型回答;切换视觉模型会让视觉模型直接回答。本次授权也包含已设置的模型单独配置。": "보조 읽기는 원래 모델이 답변하며 모델 전환은 비전 모델이 직접 답변합니다. 이번 권한 확인에는 모델별 설정도 포함됩니다.", "辅助识图或切换视觉模型,默认关闭": "보조 이미지 읽기 또는 비전 모델 전환, 기본 꺼짐", "辅助识图配置": "보조 이미지 읽기 설정", "输入同步密码": "동기화 비밀번호 입력", "输入当前登录用的密码": "현재 로그인 비밀번호를 입력하세요", "输入状态码,回车添加": "상태 코드를 입력하고 Enter로 추가", "运行形态": "실행 형태", "近期没有命中样本,不代表未来请求不会命中。": "최근 일치하는 샘플이 없어도 이후 요청은 일치할 수 있습니다.", "还原": "되돌리기", "还有额度时被 429 的账号排到队尾,30 分钟后自动回到队列(成功转发一次也会立即回来)。它标记的是「疑似共享池被别人抢」,不是「这个账号本身有问题」。⚠️ 注意它与路由策略的配合:在「家内轮询」下,队尾意味着这一家整体被往后排 —— 如果某个提供商的账号被批量限流,它们会集体沉到队尾,那个家可能长时间轮不到。这时可以关掉本项,让 429 过的账号只受冷却约束(冷却到点自动回来)。": "잔여량이 남아 있는데 429 응답을 받은 계정은 맨 뒤로 밀렸다가 30 분 후 자동으로 복귀합니다(전송 한 번 성공 시 즉시 복귀). 이는 \"공유 풀을 남이 가져가고 있는 것으로 의심\"을 표시하는 것이지 \"이 계정 자체의 문제\"가 아닙니다. ⚠️ 라우팅 전략과의 조합에 주의: \"제공자 내 순환\"에서는 맨 뒤 = 제공자 전체가 뒤로 밀린다는 뜻 — 한 제공자의 계정들이 일괄 레이트 리밋을 당하면 전부 맨 뒤로 가라앉아 그 제공자가 오랫동안 순서가 오지 않을 수 있습니다. 이럴 때는 이 항목을 꺼서 429 를 받은 계정이 쿨다운 규칙만 따르도록 하면 좋습니다(쿨다운이 끝나면 자동 복귀).", "还没有可用的视觉模型。": "아직 사용할 수 있는 비전 모델이 없습니다.", "还没有同步过。": "아직 동기화한 적이 없습니다.", "还没有添加服务器。点右上角「添加」,填入网关所在机器的 IP 或域名与端口。": "서버가 없습니다. 오른쪽 위 \"추가\"를 눌러 게이트웨이가 실행 중인 기기의 IP 또는 도메인과 포트를 입력하세요.", "还没有装载任何数据。": "아직 로드된 데이터가 없습니다.", "还没有读到版本信息": "버전 정보를 아직 읽지 못했습니다", "还没有选择模型,这块设置暂时不起作用。": "모델을 아직 선택하지 않아 이 블록은 지금 아무 동작도 하지 않습니다.", "这一份就是「替换 / 追加」模式下网关要发的 system 正文。": "이 본문이 「교체 / 추가」 모드에서 게이트웨이가 보낼 system 본문입니다.", "这一项已隐藏": "이 항목은 숨겨져 있습니다", "这一项正在显示": "이 항목은 표시 중입니다", "这些模型的请求交给当前路由内可用的视觉模型回答,不再回到原模型。": "이 모델들의 요청은 현재 라우트에서 쓸 수 있는 비전 모델이 원래 모델 대신 답합니다.", "这些模型看到图片时,先把图片交给 {model} 读一遍,再由它们自己结合读到的内容回答。": "이 모델들이 이미지를 받으면 먼저 {model}이(가) 읽고, 읽은 내용을 바탕으로 원래 모델이 답합니다.", "这些模型看到图片时,先把图片交给「沿用工具服务的视觉分析模型」读一遍,再由它们自己结合读到的内容回答。": "이 모델들이 이미지를 받으면 먼저 도구 서비스의 비전 모델이 읽고, 읽은 내용을 바탕으로 원래 모델이 답합니다.", "这只模型只负责看图,最终仍由原模型回答。": "이 모델은 이미지만 읽고 최종 답변은 원래 모델이 합니다.", "这只模型直接接收图片与对话,完成本次回答。": "이 모델이 이미지와 대화를 직접 받아 이번 답변을 완성합니다.", "这台网关未启用机器人校验": "이 게이트웨이는 봇 확인을 사용하지 않습니다", "这台网关没有管理员,用一把已启用的 API Key 访问。": "이 게이트웨이에는 관리자가 없습니다. 활성화된 API Key로 접속하세요.", "这条历史请求没有保存识别依据,不能据此自动创建规则。": "이 과거 요청에는 식별 근거가 저장되지 않아 이를 바탕으로 규칙을 자동 생성할 수 없습니다.", "这条规则已被删除,请关闭编辑后重新添加。": "이 규칙이 삭제되었습니다. 편집기를 닫고 다시 추가하세요.", "这里只列出已保存的提供商配置;未配置的提供商沿用全局设置,可从下拉框手动添加。用户保存的模式、文件和正文优先于全局设置,「跟随默认」只取消该提供商的模式、文件和正文覆盖。ZCode 套餐池默认由插件按三块装配,客户端系统正文合入第三块,不会自动创建替换规则;手动修改的网关提示词段或关闭开关仍以用户配置为准,能否被接受取决于上游规则。": "저장된 제공자 설정만 표시합니다. 설정하지 않은 제공자는 전역 설정을 따르며 드롭다운에서 수동으로 추가할 수 있습니다. 저장한 모드, 파일, 본문은 전역 설정보다 우선합니다. 「기본값 따르기」는 해당 제공자의 모드, 파일, 본문 재정의만 해제합니다. ZCode Start Plan은 기본적으로 플러그인이 세 블록을 구성하고 클라이언트의 system 본문을 세 번째 블록에 합칩니다. 대체 규칙은 자동으로 만들지 않습니다. 수동으로 수정한 게이트웨이 프롬프트 블록이나 구성 스위치를 끈 설정은 그대로 우선 적용되며, 허용 여부는 업스트림 규칙에 따라 달라집니다.", "进程 PID": "프로세스 PID", "远程根目录": "원격 루트 디렉터리", "远端同一路径下的旧快照。事件日志、请求明细与调试报文不会上传。": "같은 원격 경로의 이전 스냅샷을 덮어씁니다. 이벤트 로그, 요청 상세, 디버그 패킷은 업로드되지 않습니다.", "远端已有一份快照,将被覆盖": "원격에 이미 스냅샷이 있으며 덮어씁니다", "远端快照使用了另一把账号密钥,但没有携带密钥文件,无法在本机解密。请在原来那台机器上重新上传一次。": "원격 스냅샷이 다른 계정 키를 사용하지만 키 파일이 포함되어 있지 않아 이 컴퓨터에서 복호화할 수 없습니다. 원래 컴퓨터에서 다시 업로드하세요.", "远端快照使用的账号密钥与本机不同。请输入上传那台机器设置的同步密码,用它解出密钥装到本机后再继续下载。": "원격 스냅샷은 이 컴퓨터와 다른 계정 키를 사용합니다. 업로드한 컴퓨터에서 설정한 동기화 비밀번호를 입력해 키를 복호화하고 이 컴퓨터에 설치한 뒤 다운로드를 계속하세요.", "远端数据与当前版本不兼容": "원격 데이터가 현재 버전과 호환되지 않습니다", "远端该路径下还没有快照,本次是首次上传。": "해당 원격 경로에 아직 스냅샷이 없습니다. 이번이 첫 업로드입니다.", "远端路径:{path}": "원격 경로: {path}", "远端还没有可下载的同步数据": "원격에 다운로드할 동기화 데이터가 없습니다", "连不上这台网关。确认地址与端口正确、网关已启动,且已开启「局域网访问」;用 https 时还要确认证书有效": "이 게이트웨이에 연결할 수 없습니다. 주소와 포트가 올바른지, 게이트웨이가 실행 중인지, \"LAN 접근\"이 켜져 있는지 확인하세요. https를 쓰는 경우 인증서가 유효한지도 확인하세요.", "连不上这台网关。请确认地址、端口与防火墙设置,网关需已启动;桌面端请在「设置 → 网关 → 网络访问」开启「允许其他设备访问网关」。使用 HTTPS 时还需确认证书有效。": "이 게이트웨이에 연결할 수 없습니다. 주소, 포트, 방화벽 설정을 확인하고 게이트웨이가 실행 중인지 확인하세요. 데스크톱 앱에서는 「설정 → 게이트웨이 → 네트워크 접근」에서 「다른 기기의 게이트웨이 접근 허용」을 켜세요. HTTPS를 사용하는 경우 인증서가 유효한지도 확인하세요.", "连接中超时": "연결 타임아웃", "连接失败:{message}": "연결 실패: {message}", "连续失败到阈值后把这个账号整个打开(默认关)。与失败退避的分工:退避管「单次失败先凉一会儿」,惩罚轻、自动恢复;熔断管「这个账号现在整体不对劲,别再一条条地试」,要连续成功若干次才关。打开期间该账号被跳过,除非全场只剩它 —— 那时仍放行试一次。": "연속 실패가 임계값에 도달하면 이 계정 전체를 차단합니다(기본값 꺼짐). 실패 백오프와의 역할 분담: 백오프는 \"단일 실패를 잠시 식히는\" 가벼운 처벌로 자동 복구되고, 서킷 브레이커는 \"이 계정이 전반적으로 이상하니 하나씩 시도하지 말 것\"으로, 연속 성공이 여러 번 이어져야 닫힙니다. 차단 중에는 해당 계정이 건너뛰어지지만, 남은 것이 이것뿐이면 한 번은 시도해 봅니다.", "追加": "추가", "追加网关提示词": "게이트웨이 시스템 프롬프트 추가", "退出失败:{message}": "로그아웃 실패: {message}", "退出登录": "로그아웃", "退出这台服务器的登录,不影响其他服务器": "이 서버에서만 로그아웃합니다. 다른 서버는 영향 없음", "选好接管回答的视觉模型后这块设置才会生效。": "답변을 이어받을 비전 모델을 고르면 이 블록이 적용됩니다.", "选好视觉模型后这块设置才会生效。": "비전 모델을 고르면 이 블록이 적용됩니다.", "选定提供商": "선택한 제공자", "选择一个或多个模型": "모델을 하나 이상 선택", "选择位置并加密备份": "저장 위치 선택 및 암호화 백업", "选择备份文件并恢复": "백업 파일을 선택해 복원", "选择提供商(可多选)": "제공자 선택(복수 선택 가능)", "选路规则": "선택 규칙", "选项与默认值由已启用插件提供;你保存的覆盖值不会被插件更新替换。": "활성화된 플러그인이 옵션과 기본값을 제공합니다. 플러그인을 업데이트해도 저장한 사용자 설정은 바뀌지 않습니다.", "选项与默认值由插件提供,你保存的修改不会被插件更新覆盖。切换提供商不会丢失未保存的修改。": "옵션과 기본값은 플러그인이 제공합니다. 플러그인 업데이트는 저장한 변경 사항을 덮어쓰지 않습니다. 제공자를 전환해도 저장하지 않은 수정 내용은 유지됩니다.", "透传": "패스스루", "透传客户端 system": "클라이언트 system 패스스루", "透传客户端 system(默认)": "클라이언트 system 패스스루(기본값)", "通常是网络问题,点右侧重试": "대개 네트워크 문제입니다. 오른쪽 재시도를 누르세요", "通用": "일반", "遇到 Bug、报错或异常行为": "버그, 오류 또는 비정상 동작 발생 시", "配置目录下的 agent2api.db(账号、日志、请求记录、调试报文与设置都在里面)。": "구성 디렉터리의 agent2api.db입니다(계정, 로그, 요청 기록, 디버그 메시지와 설정이 모두 들어 있습니다).", "采用本规则": "이 규칙 적용", "重启后生效,不影响当前操作": "재시작하면 적용됩니다. 하던 작업은 중단되지 않습니다", "重命名": "이름 변경", "重命名只更新分类显示名,不拆分历史用量,也不重新归类历史请求。": "이름 변경은 분류 표시명만 바꾸며 과거 사용량을 분리하거나 요청을 재분류하지 않습니다.", "重命名客户端分类": "클라이언트 분류 이름 변경", "重复清理": "반복 삭제", "重复清理直到不再变化(仅正则删除)": "변화가 없을 때까지 반복(정규식 삭제만 가능)", "重新读取会替换当前未保存的草稿。": "다시 불러오면 현재 저장하지 않은 초안이 바뀝니다.", "重新读取设置": "설정 다시 불러오기", "重编码质量": "재인코딩 품질", "重置会清空管理员账号与密码,面板将回到「未注册」状态。": "재설정하면 관리자 계정과 비밀번호가 지워지고 패널이 \"미등록\" 상태로 돌아갑니다.", "重置管理员": "관리자 재설정", "重试设置已刷新": "재시도 설정을 새로 고쳤습니다", "重试间隔": "재시도 간격", "铸造守卫每隔多久看一次库存(毫秒)。只影响发现缺货的反应速度 —— 库存够用时轮询不会铸造任何令牌。默认 2500 毫秒,可填 1000–30000。": "발행 가드가 재고를 몇 밀리초마다 확인할지 정합니다. 부족 발견 반응 속도에만 영향을 주며 — 재고가 충분하면 폴링해도 아무 토큰도 발행하지 않습니다. 기본값 2500 밀리초, 1000–30000 입력 가능.", "长边像素上限": "긴 변 최대 픽셀", "问题反馈": "문제 신고", "阿里云 OSS": "알리바바 클라우드 OSS", "限流中账号": "속도 제한 중 계정", "随包内嵌的快照(发版时的那份)": "앱에 내장된 스냅샷(릴리스 시점 기준)", "隐藏 {name}": "{name} 숨기기", "隐藏分组 {name}": "그룹 {name} 숨기기", "隐藏用户名": "사용자 이름 숨기기", "隐藏账号名(显示成星号)": "계정 이름 숨기기(별표로 표시)", "隐藏这一组": "이 그룹 숨기기", "非流式响应超时": "비스트리밍 응답 타임아웃", "面板登录": "패널 로그인", "面板端口": "패널 포트", "面板管理员账号": "패널 관리자 계정", "韩语": "한국어", "项目来源": "프로젝트 출처", "预览不发送模型请求,也不修改历史记录。": "미리보기는 모델을 호출하거나 과거 기록을 변경하지 않습니다.", "预览中…": "미리 보는 중…", "预览匹配": "일치 결과 미리보기", "预设": "프리셋", "首选不可用时再依次尝试备选。": "첫 선택을 쓸 수 없으면 대체 모델을 차례로 시도합니다.", "首选不可用时再依次尝试;留空则停止并说明原因。": "첫 선택을 쓸 수 없을 때 차례로 시도합니다. 비워 두면 중단하고 이유를 설명합니다.", "验证方式": "인증 방식", "验证码令牌池": "캡차 토큰 풀", "验证码令牌池设置已刷新": "캡차 토큰 풀 설정을 새로고침했습니다", "验证码库存的参考目标,默认 3 个,可填 1–10。只影响库存状态展示,不会因为低于目标自动生成令牌或弹出验证码。": "재고 표시 기준 목표입니다. 기본값은 3개이며 1–10 범위입니다. 상태 표시에만 영향을 주며 목표보다 적어도 토큰을 자동으로 생성하거나 인증 창을 띄우지 않습니다.", "高级设置": "고급 설정", "默认 10000 条,按日志级别分配保留容量,超出后清理最旧的记录;同时受保留天数限制。": "기본값은 10000건이며 로그 수준별로 보관 용량을 배분합니다. 초과분은 가장 오래된 기록부터 삭제하며 보관 일수 제한도 적용됩니다.", "默认 1000000 条(100 万),超出后清理最旧的请求记录及其原始正文,不影响按天聚合报表;同时受保留天数限制。": "기본값은 1000000건(100만 건)입니다. 초과하면 가장 오래된 요청 기록과 원문을 삭제하며 일별 집계 보고서에는 영향을 주지 않습니다. 보관 일수 제한도 적용됩니다.", "默认 5 分钟。间隔内的变化合并为最新快照,到期后上传;手动上传不受限制。失败后会延长等待并自动重试。": "기본값은 5분입니다. 대기 중 변경 사항은 최신 스냅샷으로 합쳐 간격이 지난 뒤 업로드합니다. 수동 업로드에는 제한이 없습니다. 실패하면 대기 시간을 늘려 자동으로 재시도합니다.", "默认仅本机可访问(127.0.0.1)。开启后监听所有 IPv4 网卡(0.0.0.0),访问范围由网络与防火墙决定,不限于局域网,也不会自动开放到公网。开启前必须注册面板管理员;管理接口需要管理员会话或网关 Key,API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。「同时开放网页管理面板」默认关闭,开启后可从其他设备的浏览器登录管理;关闭它不影响 API 转发和本机桌面管理。修改任一开关都需要重启应用。": "기본적으로 이 기기에서만 접근할 수 있습니다(127.0.0.1). 켜면 모든 IPv4 인터페이스(0.0.0.0)에서 수신하며 접근 범위는 네트워크와 방화벽 설정으로 결정됩니다. LAN으로 제한되지 않으며 인터넷에 자동 공개되지도 않습니다. 먼저 패널 관리자를 등록해야 합니다. 관리 API에는 관리자 세션 또는 게이트웨이 키가, API 호출에는 활성화된 게이트웨이 키가 필요합니다. 키가 없으면 기본 키를 자동 생성합니다. 웹 관리 패널은 기본적으로 꺼져 있으며, 켜면 다른 기기의 브라우저에서 로그인하여 관리할 수 있습니다. 꺼도 API 전달과 로컬 데스크톱 관리에는 영향이 없습니다. 어느 스위치든 변경 후 앱을 다시 시작해야 합니다.", "默认值通常够用,出问题时才需要调": "기본값으로 대부분 충분하며, 문제가 생겼을 때만 조정하세요", "默认关闭。开启后下一次 Codex 请求立即生效,不用重启;只对 Codex 来源的 /v1/responses 请求补阶段标记,其它客户端与 /v1/chat/completions 不受影响。": "기본값은 꺼짐입니다. 켜면 다음 Codex 요청부터 재시작 없이 적용되며, 단계 표시는 Codex 출처 /v1/responses 요청에만 보강되고 다른 클라이언트와 /v1/chat/completions는 영향을 받지 않습니다.", "默认关闭。改动立即生效,不用重启;关闭期间的跨源请求会被预检拦下。": "기본적으로 꺼져 있습니다. 변경 사항은 재시작 없이 즉시 적용되며, 꺼져 있는 동안의 교차 출처 요청은 프리플라이트에 걸립니다.", "默认关闭窗口不会退出程序,而是把窗口缩到系统托盘,转发继续在后台运行(OpenAI 客户端不受影响);要彻底退出程序,请在托盘图标上右键选「退出」。关掉这个开关后,点关闭按钮即退出程序、转发随之中断。「开机自动启动」开启后,登录系统时会自动启动本程序(通常直接驻留托盘),不需要手动打开。": "기본적으로 창을 닫아도 프로그램이 종료되지 않고 창이 시스템 트레이로 최소화되며 포워딩은 백그라운드에서 계속 실행됩니다(OpenAI 클라이언트는 영향을 받지 않습니다). 프로그램을 완전히 종료하려면 트레이 아이콘을 마우스 오른쪽 버튼으로 클릭하고 「종료」를 선택하세요. 이 스위치를 끄면 닫기 버튼을 누르는 즉시 프로그램이 종료되고 포워딩도 중단됩니다. 「자동 시작」을 켜면 시스템 로그인 시 이 프로그램이 자동으로 실행되며(보통 바로 트레이에 상주), 수동으로 열 필요가 없습니다.", "默认应用全部提供商(包含之后新增的插件与自定义提供商)。指定范围后,未选中的提供商不做指纹脱敏;清空选择自动回到全部提供商。": "기본적으로 이후 추가한 플러그인 및 사용자 지정 제공자를 포함한 모든 제공자에 적용합니다. 범위를 지정하면 선택하지 않은 제공자는 마스킹하지 않습니다. 선택을 비우면 전체 제공자로 돌아갑니다.", "默认开启。只改 role 字段本身,消息内容与顺序都不动;本项只改发给上游的副本,客户端看到的响应内容不变。": "기본값은 켜짐. role 필드만 수정하며 메시지 내용과 순서는 그대로입니다. 업스트림으로 보내는 사본에만 적용되고 클라이언트가 보는 응답은 변하지 않습니다.", "默认开启。只改发给上游的副本,客户端看到的响应与原图都不变;请求日志里保存的是客户端发来的原图,不是压缩后的版本。只作用在对话链路,生图 / 图片编辑不经过这里。改完对下一个请求立即生效,不用重启。": "기본값은 켜짐입니다. 바뀌는 것은 상류로 보내는 사본뿐이며, 클라이언트가 보는 응답과 원본 이미지는 그대로입니다. 요청 로그에는 압축본이 아니라 클라이언트가 보낸 원본 이미지가 저장됩니다. 대화 경로에만 적용되며 이미지 생성과 편집은 여기를 거치지 않습니다. 변경은 다음 요청부터 적용되며 재시작이 필요 없습니다.", "默认开启。命中明细会记进请求日志的「敏」标签(悬停可看命中了哪几条规则)。本项只改发给上游的副本,客户端看到的响应内容不变。": "기본적으로 켜져 있습니다. 적중 내역은 요청 로그의 「민감」 태그에 기록됩니다(마우스를 올리면 어떤 규칙에 걸렸는지 볼 수 있습니다). 이 항목은 업스트림으로 보내는 사본만 바꾸며 클라이언트가 받는 응답 내용은 달라지지 않습니다.", "默认开启并应用全部提供商。编辑词表或应用范围后点击「保存设置」,下一次请求立即生效,不用重启。命中明细仍记进请求日志的「敏」标签。": "기본적으로 활성화되어 모든 제공자에 적용됩니다. 규칙이나 범위를 편집한 후 설정 저장을 누르면 재시작 없이 다음 요청부터 적용됩니다. 일치 내역은 요청 로그의 마스킹 태그에 계속 기록됩니다.", "默认网关只监听 127.0.0.1,只有本机能访问。开启后网关改听所有网卡,同一局域网内的设备可以把 API 地址指向本机 IP 一起使用。出于安全考虑,开启前必须先注册一个面板管理员:管理接口从此要求管理员会话或网关 Key,模型额度不会对局域网裸奔;一把启用的网关 Key 都没有时,转发接口也会拒绝服务,直到创建第一把。改动需要重启应用生效。「同时开放网页管理面板」把管理界面也出给局域网(其他设备的浏览器打开本机 IP 即可管理),默认关闭 —— 桌面端的面板仍只由本程序自己出。": "기본적으로 게이트웨이는 127.0.0.1만 수신하며 로컬에서만 접근할 수 있습니다. 켜면 게이트웨이가 모든 네트워크 인터페이스를 수신하고, 같은 LAN의 기기에서 API 주소를 로컬 IP로 지정해 함께 사용할 수 있습니다. 보안을 위해 켜기 전에 패널 관리자를 먼저 등록해야 합니다. 관리 인터페이스는 이때부터 관리자 세션 또는 게이트웨이 키를 요구하므로 모델 할당량이 LAN에 무방비로 노출되지 않습니다. 활성화된 게이트웨이 키가 하나도 없으면 첫 키를 만들 때까지 포워딩 인터페이스도 서비스를 거부합니다. 변경 사항은 앱을 다시 시작해야 적용됩니다. 「웹 관리 패널도 함께 공개」는 관리 화면까지 LAN에 공개하며(다른 기기의 브라우저에서 로컬 IP를 열면 관리 가능), 기본적으로 꺼져 있습니다. 데스크톱 패널은 계속 이 프로그램에서만 제공됩니다.", "({n} 个整组隐藏)": " (그룹 {n}개 전체 숨김)", "({n} 行)": "({n}행)", "({n} 项被覆盖)": "({n}개 덮어씀)", "(全部为默认值)": "(모두 기본값)", "(官方原文)": "(공식 원문)", "(已存一份正文,{n} 行;切成「替换 / 追加」后生效)": "(저장된 본문 있음, {n}행; 「교체 / 추가」로 전환하면 적용)", "(已改)": "(수정됨)", "(已注册过会跳过这一步,直接生效)。": "(이미 등록한 경우 이 단계를 건너뛰고 바로 적용됩니다).", "(当前生效的就是这一份,{n} 行)": "(현재 적용 중인 본문, {n}행)", "(文件:{path})": "(파일: {path})", "(未生效)": "(미적용)", ",{items}": ", {items}", ",{time}": ", {time}", ",以及代理池 / 订阅里可能存在的代理凭据。请使用只有你能访问的私有存储;账号密钥由同步密码单独加密,泄露存储本身不等于泄露账号。": ", 그리고 프록시 풀/구독에 있을 수 있는 프록시 자격 증명이 포함됩니다. 본인만 접근할 수 있는 전용 스토리지를 사용하세요. 계정 키는 동기화 비밀번호로 별도 암호화되므로 스토리지가 유출되어도 계정이 유출되지는 않습니다.", ",包括恢复后需要重新登录管理面板。": " 통째로 교체됩니다. 복원 후에는 패널에 다시 로그인해야 합니다.", ",可直接用于登录。请妥善保管,不要外传或上传到公共位置。": ", 바로 로그인에 사용할 수 있습니다. 안전하게 보관하고 외부에 전달하거나 공공장소에 업로드하지 마세요.", ",文件里后续的改动在清空这里之前不再生效": ", 파일의 이후 변경 사항은 여기를 비우기 전까지 적용되지 않습니다", ",替换前的数据已备份为 {name}": ", 교체 전 데이터는 {name}(으)로 백업되어 있습니다", ",自定义提供商新增 {added} 个、更新 {updated} 个": ", 커스텀 제공자 {added}개 추가, {updated}개 업데이트", ";开关关闭时词表不执行": "; 스위치가 꺼져 있으면 규칙을 실행하지 않습니다", ";网页管理面板已一并开放(浏览器打开同一地址)": "; 웹 관리 패널도 함께 공개되었습니다(브라우저에서 같은 주소를 여세요)", "AI 调整后的 JSON({n} 字符)": "AI가 수정한 JSON({n}자)", "CodeArts 的账号余额还剩多少?": "CodeArts 계정 잔액이 얼마나 남았나요?", "JSON 文件会以文本发送给当前对话模型,其中的凭证也会保存在这条会话里。": "JSON 파일은 텍스트로 현재 대화 모델에 전송되며, 포함된 자격 증명도 이 대화에 저장됩니다.", "[已省略 {n} 字符的 JSON]": "[{n}자의 JSON 생략]", "attachment 与 content 只能给一个": "attachment와 content 중 하나만 지정하세요", "section 只能是 models / mappings / both": "section 은 models / mappings / both 중 하나여야 합니다", "{n} 个候选,{m} 个跳过": "후보 {n}개, 건너뜀 {m}개", "{n} 条映射": "{n}개 매핑", "{n} 条请求日志": "요청 로그 {n}개", "{n} 条运行日志": "실행 로그 {n}개", "{requests} 次请求,{tokens} Token": "요청 {requests}회, {tokens} Token", "「{name}」是空文件。": "「{name}」 파일이 비어 있습니다.", "「{name}」看起来是二进制文件,助手只接收 JSON 文本。": "「{name}」은(는) 바이너리 파일로 보입니다. 어시스턴트는 JSON 텍스트만 받습니다.", "「{name}」超过 {n} MB,请换一个小一点的 JSON 文件。": "「{name}」이(가) {n} MB를 초과합니다. 더 작은 JSON 파일을 선택하세요.", "「{name}」超过 {n} MB,请换一个小一点的 JSON 文件,或去添加账号页导入。": "「{name}」이(가) {n} MB를 초과합니다. 더 작은 JSON 파일을 선택하거나 계정 추가 페이지에서 가져오세요.", "一次最多 {n} 个文件。": "한 번에 최대 {n}개 파일까지 가능합니다.", "一次最多 {n} 个文件,多出的没有添加。": "한 번에 최대 {n}개 파일까지 가능합니다. 초과분은 추가되지 않았습니다.", "一次最多 {n} 张图片。": "한 번에 최대 {n}개 이미지입니다.", "一次最多 {n} 张图片,多出的没有添加。": "한 번에 최대 {n}개 이미지입니다. 초과 이미지는 추가하지 않았습니다.", "下载图片": "이미지 다운로드", "今天用了多少 Token?": "오늘 Token을 얼마나 사용했나요?", "会话响应不完整": "세션 응답이 불완전합니다", "保存位置": "저장 위치", "保存图片失败:{message}": "이미지 저장 실패: {message}", "保存思考等级失败:{message}": "사고 수준 저장 실패: {message}", "修改上传或已生成的图片,支持多张参考图。": "여러 참조 이미지로 업로드하거나 생성한 이미지를 편집합니다.", "修改文件": "파일 수정", "修改模型能力": "모델 기능 수정", "凭证会保存到网关;同一提供商下同一身份的账号会更新原凭证。文件若是整库导出的 accounts 数组,会按文件里的账号批量导入。": "자격 증명은 게이트웨이에 저장됩니다. 같은 공급자에서 동일 신원의 계정은 기존 자격 증명이 업데이트됩니다. 파일이 accounts 배열을 포함한 전체 내보내기라면 파일의 계정을 일괄 가져옵니다.", "分叉": "분기", "分叉会话失败:{message}": "대화 분기 실패: {message}", "分支": "분기", "删除会话失败:{message}": "세션 삭제 실패: {message}", "删除消息": "메시지 삭제", "删除这条对话": "이 대화 삭제", "删除这条对话?": "이 대화를 삭제할까요?", "删除这条消息?模型消息关联的工具结果也会一并删除。": "이 메시지를 삭제할까요? 모델 메시지에 연결된 도구 결과도 함께 삭제됩니다.", "助手设置没读出来,暂时存不了对话模型 —— 看输入框下方的提示。": "어시스턴트 설정을 읽지 못해 대화 모델을 아직 저장할 수 없습니다. 입력창 아래의 안내를 확인하세요.", "助手设置没读出来,暂时存不了思考等级 —— 看输入框下方的提示。": "어시스턴트 설정을 읽을 수 없어 사고 수준을 저장할 수 없습니다 — 입력창 아래 안내를 확인하세요.", "助手设置没读出来,现在还不能发消息 —— 看输入框下方的提示。": "어시스턴트 설정을 읽지 못해 아직 메시지를 보낼 수 없습니다. 입력창 아래의 안내를 확인하세요.", "单张参考图不能超过 10 MiB": "참조 이미지 한 개는 10 MiB를 초과할 수 없습니다", "历史会话": "세션 기록", "历史对话": "대화 기록", "原始 ID 的默认绑定不能删除,请关闭它的开关": "원본 ID의 기본 바인딩은 삭제할 수 없습니다. 스위치를 꺼 주세요", "原始报文或对话正文已省略": "원본 통신 데이터 또는 대화 본문이 생략되었습니다", "参数 {name} 只能是:{values}": "매개변수 {name}은(는) 다음 중 하나여야 합니다: {values}", "参数 {name} 必须是不小于 {min} 的整数": "매개변수 {name}은(는) {min} 이상의 정수여야 합니다", "参数 {name} 必须是不超过 {max} 个字符的字符串": "매개변수 {name}은(는) {max}자 이하의 문자열이어야 합니다", "参数 {name} 必须是布尔值": "매개변수 {name}은(는) 불리언 값이어야 합니다", "参数 {name} 必须是有效日期(YYYY-MM-DD)": "매개변수 {name}은(는) 유효한 날짜(YYYY-MM-DD)여야 합니다", "参数 {name} 必须是毫秒时间戳": "매개변수 {name}은(는) 밀리초 타임스탬프여야 합니다", "参数不完整(需要 provider / id / alias / action)": "매개변수가 부족합니다(provider / id / alias / action 필요)", "参考图仅支持 PNG、JPEG、WebP": "참조 이미지는 PNG, JPEG, WebP만 지원합니다", "参考图会交给图片编辑工具,当前对话模型不会读取图片。": "참조 이미지는 이미지 편집 도구로 전달되며 현재 대화 모델은 이미지를 읽지 않습니다.", "参考图片列表不能为空": "참조 이미지 목록은 비워 둘 수 없습니다", "参考图片编号不存在": "참조 이미지 번호가 존재하지 않습니다", "参考图片请使用附件编号、已生成图片 ID 或 HTTP(S) 链接": "참조 이미지에는 첨부 번호, 생성한 이미지 ID 또는 HTTP(S) 링크를 사용하세요", "发消息或做任务…(Enter 发送,Shift+Enter 换行,可粘贴图片或 JSON 文件)": "메시지나 작업을 입력하세요… (Enter 전송, Shift+Enter 줄바꿈, 이미지 또는 JSON 파일 붙여넣기 가능)", "发起模型测试": "모델 테스트 실행", "受限": "제한됨", "变更前确认": "변경 전 확인", "只支持图片和 JSON 凭证文件(.json / .info)": "이미지와 JSON 자격 증명 파일(.json / .info)만 지원합니다", "只支持图片和 JSON 凭证文件(.json / .info);「{name}」已跳过。": "이미지와 JSON 자격 증명 파일(.json / .info)만 지원합니다. 「{name}」은(는) 건너뛰었습니다.", "各账号余额还剩多少?": "각 계정의 잔액이 얼마나 남았나요?", "启用 / 禁用模型": "모델 활성화 / 비활성화", "启用 / 禁用账号": "계정 활성화 / 비활성화", "命令": "명령", "哪些模型在多家重复了?": "여러 제공업체에 중복된 모델은 무엇인가요?", "图片 {n}": "이미지 {n}", "图片工具包含不支持的参数:{name}": "이미지 도구에 지원하지 않는 매개변수가 있습니다: {name}", "图片工具没有返回可显示的图片": "이미지 도구가 표시 가능한 이미지를 반환하지 않았습니다", "图片工具缺少当前会话": "이미지 도구에 현재 세션이 없습니다", "图片工具需要提示词和图片模型": "이미지 도구에는 프롬프트와 이미지 모델이 필요합니다", "完全访问": "전체 액세스", "实时余额查询会请求上游,并可能触发已配置的自动禁用规则。": "실시간 잔액 조회는 업스트림에 요청을 보내며, 설정된 자동 비활성화 규칙이 적용될 수 있습니다.", "对指定模型发一次真实请求,回报连通性与耗时。": "지정한 모델에 실제 요청을 한 번 보내 연결성과 소요 시간을 보고합니다.", "对话由网关转发到上游模型,用量计入请求日志": "대화는 게이트웨이가 업스트림 모델로 전달하며, 사용량은 요청 로그에 기록됩니다", "导入账号文件": "계정 파일 가져오기", "将导入一个账号:": "계정 하나를 가져옵니다:", "就绪": "준비됨", "工具「{name}」未获授权,未执行。": "도구 \"{name}\"은(는) 허가되지 않아 실행되지 않았습니다.", "工具调用已达本轮上限,已停止继续执行。": "이번 턴의 도구 호출 한도에 도달하여 추가 실행을 중지했습니다.", "已从这条消息分叉为新对话": "이 메시지에서 새 대화를 분기했습니다", "已停止": "중지됨", "已停止生成": "생성을 중지했습니다", "已完成 {n} 项改动": "변경 {n}개를 완료했습니다", "已完成 {n} 项,剩余 {m} 项未执行": "{n}개를 완료했고, 나머지 {m}개는 실행되지 않았습니다", "已导入账号「{name}」": "계정 「{name}」을(를) 가져왔습니다", "已生成 {n} 张图片": "이미지 {n}개를 생성했습니다", "已调用": "호출함", "开关模型的对外可用性,不改其它属性。": "모델의 외부 가용성만 전환하고 다른 속성은 변경하지 않습니다.", "开始日期不能晚于结束日期": "시작 날짜는 종료 날짜보다 늦을 수 없습니다", "开始时间必须早于结束时间": "시작 시간은 종료 시간보다 빨라야 합니다", "当前安装包未包含原生图片保存能力,请更新应用。": "현재 앱 패키지에 기본 이미지 저장 기능이 없습니다. 앱을 업데이트하세요.", "当前客户端缺少读取接口:{name}": "이 클라이언트에 읽기 인터페이스가 없습니다: {name}", "当前对话没有可读取的文本附件:请先把 JSON 文件发给助手": "이 대화에는 읽을 수 있는 텍스트 첨부가 없습니다. 먼저 JSON 파일을 어시스턴트에게 보내세요", "思考过程": "사고 과정", "思考:跟随模型": "사고: 모델 따르기", "成功率": "성공률", "打开会话失败:{message}": "세션 열기 실패: {message}", "执行中": "실행 중", "执行结果": "실행 결과", "批量导入:新增 {added}、更新 {updated}、失败 {failed}": "일괄 가져오기: 추가 {added}, 업데이트 {updated}, 실패 {failed}", "把凭证文件交给对应提供商解析并落库;同身份账号会更新凭证。": "자격 증명 파일을 해당 공급자가 분석해 저장합니다. 동일 신원 계정은 자격 증명이 업데이트됩니다.", "把重复的模型加上家名前缀区分开": "중복된 모델에 제공자 이름 접두사를 붙여 구분하기", "拒绝": "거부", "按提供商名称查询模型、能力、来源与映射,支持自定义提供商。": "공급자 이름으로 모델, 기능, 정보 출처와 매핑을 조회합니다. 사용자 지정 공급자도 지원합니다.", "按提示词生成图片。": "프롬프트로 이미지를 생성합니다.", "按提示词编辑参考图片。": "프롬프트에 따라 참조 이미지를 편집합니다.", "按文件内容判断": "파일 내용으로 판단", "按文本生成图片,结果直接显示在对话中。": "텍스트로 이미지를 생성하여 대화에 표시합니다.", "提供商 id「{provider}」格式不正确": "공급자 id 「{provider}」 형식이 올바르지 않습니다", "提供商「{name}」匹配到多家,请使用提供商 ID:{list}": "공급자 \"{name}\"에 여러 항목이 일치합니다. 공급자 ID를 사용하세요: {list}", "改上下文窗口 / 最大输出 Token / 工具调用等能力位。": "컨텍스트 창 / 최대 출력 토큰 / 도구 호출 등의 기능 플래그를 수정합니다.", "改某一家的整组顺位(先试哪一家)。": "특정 제공자의 그룹 전체 순위를 변경합니다(어느 제공자를 먼저 시도할지).", "改账号在全局队列里的名次,决定主备与切换顺序。": "전역 큐에서 계정 순위를 변경해 주/예비와 전환 순서를 결정합니다.", "文件内容是空的": "파일 내용이 비어 있습니다", "文件过大({n} 字符):请先用 read_attachment 分段查看,或改用添加账号页导入": "파일이 너무 큽니다({n}자). 먼저 read_attachment로 나눠 확인하거나 계정 추가 페이지에서 가져오세요", "新增 / 删除映射名,支持批量加前缀与同名合并到多家。": "매핑 이름 추가 / 삭제. 일괄 접두사 추가와 같은 이름을 여러 제공자에 통합하는 것을 지원합니다.", "新建会话": "새 세션", "无法判断这些凭证属于哪家提供商。请先问用户,或用 provider 指定(常见 id:{list})": "이 자격 증명이 어느 공급자의 것인지 판단할 수 없습니다. 사용자에게 묻거나 provider로 지정하세요(일반 id: {list})", "无法读取图片": "이미지를 읽을 수 없습니다", "最高": "최대", "有什么可以帮你?可以问配置、查余额、让我改模型设置。": "무엇을 도와드릴까요? 설정 질문, 잔액 확인, 모델 설정 변경이 가능합니다.", "未命名对话": "제목 없는 대화", "未知的工具:{name}": "알 수 없는 도구: {name}", "权限模式": "권한 모드", "极低": "최소", "查看 API Key 详情必须指定 API Key 身份": "API Key 상세를 보려면 Key 식별 정보를 지정하세요", "查看图片": "이미지 보기", "查看模型候选账号、跳过原因和当前路由策略。": "모델의 후보 계정, 건너뛴 이유와 현재 라우팅 전략을 확인합니다.", "查询凭证、插件和定时任务等运行事件的脱敏摘要。": "인증 정보, 플러그인과 예약 작업 등의 실행 이벤트를 민감 정보를 가린 요약으로 조회합니다.", "查询生产请求的 Token 用量、成功率、排行和趋势。": "실제 운영 요청의 Token 사용량, 성공률, 순위와 추세를 조회합니다.", "查询用量报表": "사용량 보고서 조회", "查询请求日志": "요청 로그 조회", "查询请求状态、耗时、账号、错误与重试,不读取对话正文。": "대화 본문을 읽지 않고 요청 상태, 소요 시간, 계정, 오류와 재시도를 조회합니다.", "查询账号余额": "계정 잔액 조회", "查询路由队列": "라우팅 큐 확인", "查询运行日志": "실행 로그 조회", "标题总结失败:{message}": "제목 생성 실패: {message}", "标题总结提示词": "제목 생성 프롬프트", "标题总结模型": "제목 생성 모델", "标题总结设置已保存": "제목 생성 설정을 저장했습니다", "模型「{model}」当前不在可用列表中,请重新选择;也可到「模型管理」或「插件」页检查是否已启用。": "모델 \"{model}\"이(가) 현재 사용 가능한 목록에 없습니다. 다시 선택하세요. 「모델 관리」 또는 「플러그인」 페이지에서 활성화되어 있는지도 확인하세요.", "模型名称": "모델 이름", "模型响应未完整结束,请重试;未执行其中的工具调用。": "모델 응답이 완전히 끝나지 않았습니다. 다시 시도하세요. 응답에 포함된 도구 호출은 실행되지 않았습니다.", "模型对话": "모델 대화", "模型没有返回内容": "모델이 내용을 반환하지 않았습니다", "正在思考…": "생각 중…", "正在执行": "실행 중", "正在生成,点右侧按钮可停止": "생성 중 — 오른쪽 버튼을 누르면 중지됩니다", "正在读取可用模型…": "사용 가능한 모델을 불러오는 중…", "正在读取图片…": "이미지 불러오는 중…", "没有可用的模型": "사용 가능한 모델이 없습니다", "没有已启用的模型,请先在「模型管理」里启用": "활성화된 모델이 없습니다. 먼저 「모델 관리」에서 활성화하세요", "没有找到提供商「{name}」,请先不填 provider 查询,或用 keyword 搜索": "공급자 \"{name}\"을(를) 찾을 수 없습니다. 먼저 provider 없이 조회하거나 keyword로 검색하세요", "没有找到附件「{ref}」:编号从 1 开始,也可以用文件名": "첨부 파일 「{ref}」을(를) 찾을 수 없습니다. 번호는 1부터 시작하며 파일 이름으로도 지정할 수 있습니다", "没有提供要修改的项目": "수정할 항목이 지정되지 않았습니다", "测一下当前最快的模型通不通": "현재 가장 빠른 모델이 연결되는지 테스트하기", "浏览": "찾아보기", "消息操作": "메시지 작업", "深度推理": "심층 추론", "添加图片": "이미지 추가", "添加图片或 JSON 文件(也可粘贴或拖入)": "이미지 또는 JSON 파일 추가(붙여넣기·드래그 가능)", "添加图片或文件": "이미지 또는 파일 추가", "清空全部": "모두 지우기", "清空历史失败:{message}": "기록 지우기 실패: {message}", "现在有哪些账号被限流?": "지금 어떤 계정이 속도 제한 중인가요?", "生成图片": "이미지 생성", "生成的图片": "생성한 이미지", "用户目录": "사용자 폴더", "看看哪些模型在多家重复了": "여러 제공자에서 중복된 모델 확인하기", "禁用会把账号移出转发队列,线路可能因此断供。": "비활성화하면 계정이 포워딩 큐에서 빠지며, 이 경로가 끊길 수 있습니다.", "移除图片 {n}": "이미지 {n} 제거", "移除文件「{name}」": "파일 「{name}」 제거", "终端": "터미널", "编辑图片": "이미지 편집", "编辑消息": "메시지 편집", "聊天附件 {ref}": "채팅 첨부 {ref}", "自定义提供商模块未就绪(请刷新界面后重试)": "사용자 지정 공급자 모듈이 준비되지 않았습니다(인터페이스를 새로 고친 후 다시 시도하세요)", "获取模型列表": "모델 목록 조회", "获取账号列表": "계정 목록 조회", "获取账号详情": "계정 상세 조회", "计划": "계획", "设置模型映射 ID": "모델 매핑 ID 설정", "请先上传参考图片,或先生成一张图片": "먼저 참조 이미지를 업로드하거나 이미지를 생성하세요", "请提供 attachment 或 content": "attachment 또는 content를 지정하세요", "读取 {name}": "{name} 읽기", "读取 {name}({from}-{to} 字符)": "{name} 읽기({from}-{to}자)", "读取凭证状态、限流、并发、代理和限制器的本地快照。": "인증 정보, 속도 제한, 연결 수, 프록시와 제한 규칙의 로컬 상태를 읽습니다.", "读取历史会话失败:{message}": "대화 기록 읽기 실패: {message}", "读取响应不完整:{name}": "응답이 불완전합니다: {name}", "读取图片失败": "이미지를 읽지 못했습니다", "读取图片失败:{message}": "이미지를 읽지 못했습니다: {message}", "读取文件失败:{message}": "파일 읽기 실패: {message}", "读取模型清单失败": "모델 목록을 불러오지 못했습니다", "读取聊天里上传的 JSON / .info 文件,支持分页。": "채팅에 업로드된 JSON / .info 파일을 페이지 단위로 읽습니다.", "读取账号、启用状态、优先级与隐藏原因,支持筛选和分页。": "계정, 활성화 상태, 우선순위와 숨겨진 이유를 읽습니다. 필터링과 페이지 나누기를 지원합니다.", "读取附件": "첨부 읽기", "读各提供商的模型清单、映射名与启用状态。": "각 제공자의 모델 목록, 매핑 이름, 활성화 상태를 읽습니다.", "读各账号的额度 / 剩余用量。": "각 계정의 할당량 / 남은 사용량을 읽습니다.", "调整提供商顺位": "제공자 순위 조정", "调整账号优先级": "계정 우선순위 조정", "账号「{name}」匹配到多条记录,请使用账号 ID:{ids}": "계정 \"{name}\"에 여러 기록이 일치합니다. 계정 ID를 사용하세요: {ids}", "账号额度": "계정 할당량", "跟随对话模型": "대화 모델 따르기", "跟随模型(不指定)": "모델 따르기(지정 안 함)", "跟随网关设置": "게이트웨이 설정 따르기", "返回": "뒤로", "还没有历史对话": "대화 기록이 없습니다", "还没有配置默认模型": "기본 모델이 아직 설정되지 않았습니다", "这一版网关还没有 AI 助手接口(HTTP 404),请升级网关后重试。": "이 버전의 게이트웨이에는 AI 어시스턴트 API가 없습니다(HTTP 404). 게이트웨이를 업데이트한 후 다시 시도하세요.", "这一版网关还没有 AI 助手接口(HTTP 404):后端还是旧的,重新编译 / 重启客户端后再试。{message}": "이 버전의 게이트웨이에는 AI 어시스턴트 API가 아직 없습니다 (HTTP 404): 백엔드가 오래되었습니다. 다시 빌드하거나 클라이언트를 재시작한 후 시도하세요. {message}", "这一轮来回已达 {n} 次上限,我先停下等你指示(可以换个说法,或拆成几步让我做)。": "이번 턴이 왕복 {n}회 한도에 도달해 지시를 기다리며 멈췄습니다(다르게 표현하거나 몇 단계로 나눠 주세요).", "这条会话没能存进历史:{message}": "이 세션을 기록에 저장하지 못했습니다: {message}", "这次工具调用没有保存完成结果,历史回放不会重新执行。": "이 도구 호출의 완료 결과가 저장되지 않았습니다. 기록을 다시 표시해도 재실행하지 않습니다.", "这里只改本次会话用的模型,不会改网关里保存的默认值。": "여기서는 이번 세션에 쓸 모델만 바뀌며, 게이트웨이에 저장된 기본값은 그대로입니다.", "连接网关失败({base}):{message}": "게이트웨이 연결 실패 ({base}): {message}", "选择 API Key": "API Key 선택", "选择 API Key…": "API Key 선택…", "选择对话模型": "대화 모델 선택", "配置响应不完整": "구성 응답이 불완전합니다", "问点什么…": "무엇이든 물어보세요…", "项目": "프로젝트", "额度窗口": "할당량 기간", "首轮回答完成后自动总结;这会调用所选模型并消耗额度。": "첫 답변이 완료되면 제목을 생성합니다. 선택한 모델을 호출하고 할당량을 사용합니다.", " · 检查于 {time}": " · 확인 시각 {time}", " 已发布(当前 {current}),更新日志如下:": "이(가) 출시되었습니다(현재 {current}). 업데이트 노트는 다음과 같습니다:", "Agent2API 一直在更新,是因为有人在背后持续投入。如果它帮到了你,欢迎请作者喝杯咖啡。": "Agent2API가 계속 업데이트되는 것은 누군가 뒤에서 꾸준히 시간을 쏟고 있기 때문입니다. 도움이 되었다면 제작자에게 커피 한 잔을 사 주세요.", "GitHub Token 未填写": "GitHub 토큰 미입력", "GitHub 令牌": "GitHub 토큰", "GitHub 加速前缀": "GitHub 가속 접두사", "GitHub 接口限流中,请在 {seconds} 秒后重试": "GitHub API 요청 한도에 도달했습니다. {seconds}초 후에 다시 시도하세요.", "GitHub 接口限流中,请在「插件设置」的「GitHub 令牌」中填写凭证,以提高请求限额。": "GitHub API 요청 한도에 도달했습니다. 요청 한도를 높이려면 「플러그인 설정」의 「GitHub 토큰」에 자격 증명을 입력하세요.", "GitHub 接口限流中,请在「更新设置」的「GitHub 令牌」中填写凭证,以提高请求限额。": "GitHub API 요청 한도에 도달했습니다. 요청 한도를 높이려면 「업데이트 설정」의 「GitHub 토큰」에 자격 증명을 입력하세요.", "GitHub 接口限流中,请稍后重试": "GitHub API 요청 한도에 도달했습니다. 나중에 다시 시도하세요.", "GitHub 源「{source}」限流,{seconds} 秒后可重试(上游未提供恢复时间)": "GitHub 소스 ‘{source}’의 요청이 제한되었습니다. {seconds}초 후에 재시도할 수 있습니다(복구 시간 미제공).", "GitHub 源「{source}」限流,请在 {seconds} 秒后重试": "GitHub 소스 ‘{source}’의 요청이 제한되었습니다. {seconds}초 후에 다시 시도하세요.", "GitHub 访问方式": "GitHub 접속 방식", "GitHub 访问设置已保存": "GitHub 접속 설정을 저장했습니다", "QQ 群": "QQ 그룹", "QQ 群 / Telegram 都在这里": "QQ 그룹과 Telegram이 모두 여기에 있습니다", "QQ 群 {n}": "QQ 그룹 {n}", "Telegram 群": "Telegram 그룹", "Windows 服务一键更新会核验官方更新包,再由独立升级进程停止服务、备份替换并重新启动。账号与配置保留,确认新版运行后页面自动刷新。": "Windows 서비스 업데이트는 공식 패키지를 검증한 후 별도 업데이트 프로세스가 서비스를 중지하고 파일을 백업·교체한 뒤 다시 시작합니다. 계정과 설정은 유지되며 새 버전 실행이 확인되면 페이지를 새로 고칩니다.", "Windows 服务升级权限或目录保护不符合要求。请以管理员身份重跑新版 install-service.ps1;自定义服务账号或外部托管环境请按原方式升级。": "Windows 서비스 권한 또는 디렉터리 보호가 업데이트 요구 사항을 충족하지 않습니다. 관리자 권한으로 새 install-service.ps1을 다시 실행하세요. 사용자 지정 서비스 계정이나 외부 관리 환경에서는 기존 방식으로 업그레이드하세요.", "Windows 服务部署需要手动升级。请解压新版服务端包,以管理员身份运行 install-service.ps1;账号与配置会保留。": "Windows 서비스는 수동 업그레이드가 필요합니다. 새 서버 패키지를 풀고 관리자 권한으로 install-service.ps1을 실행하세요. 계정과 설정은 유지됩니다.", "beta 版可能不稳定。两项同时开启时,按版本号选择最高版本,不会降级;安装到正式版或 beta 版后仍保留关注选择。": "beta 버전은 불안정할 수 있습니다. 두 채널을 모두 켜면 가장 높은 버전을 선택하며 다운그레이드하지 않습니다. 정식 버전이나 beta 버전을 설치한 후에도 채널 선택은 유지됩니다.", "systemd 一键更新由受限升级程序完成:下载、核验官方校验值、备份替换、重启并确认版本。网关保持普通账号运行,账号与配置不变。": "제한된 업데이트 프로그램이 systemd 다운로드, 공식 체크섬 검증, 백업, 교체, 재시작 및 버전 확인을 처리합니다. 게이트웨이는 일반 계정으로 계속 실행되며 계정과 설정은 유지됩니다.", "{message};其他线路可重新检查": "{message} 다른 경로는 다시 확인할 수 있습니다.", "{ms} 毫秒": "{ms}ms", "{seconds} 秒后可重试": "{seconds}초 후 재시도 가능", "{version} 已就位,服务正在重启,页面会在恢复后自动刷新…({seconds}s)": "{version} 적용이 완료되었습니다. 서비스를 재시작하는 중이며, 복구되면 페이지가 자동으로 새로 고쳐집니다…({seconds}초)", "{version}(预发布)": "{version}(프리릴리스)", "✅ GitHub 令牌已保存(加密存储,界面不再显示)": "✅ GitHub 토큰이 저장되었습니다(암호화되어 저장되며 화면에 다시 표시되지 않습니다)", "✅ 已加入 beta 版,之后的检查会包含 beta 版": "✅ 베타 버전에 참여했습니다. 이후 확인에는 베타 버전이 포함됩니다", "✅ 已清除界面保存的 GitHub 令牌(环境变量若配置过则继续生效)": "✅ 화면에 저장된 GitHub 토큰을 삭제했습니다(환경 변수가 설정되어 있으면 계속 적용됩니다)", "✅ 已退出 beta 版,之后的检查只看正式版": "✅ 베타 버전에서 나왔습니다. 이후 확인은 정식 버전만 봅니다", "✅ 数据升级完成({n} 项)": "✅ 데이터 업그레이드 완료({n}건)", "✅ 更新出网已切换为 {label}": "✅ 업데이트 아웃바운드를 {label}(으)로 전환했습니다", "✅ 更新出网已切换为直连": "✅ 업데이트 아웃바운드를 직접 연결로 전환했습니다", "✅ 自动检查更新已保存": "✅ 자동 업데이트 확인이 저장되었습니다", "一键更新": "원클릭 업데이트", "一键更新入口不可用,请刷新页面后重试。": "원클릭 업데이트를 사용할 수 없습니다. 페이지를 새로 고친 뒤 다시 시도하세요.", "一键更新服务端?": "서버를 업데이트할까요?", "一键更新组件不可用或权限配置不正确。请使用新版安装包执行 sudo bash install.sh --upgrade 修复。": "업데이트 구성 요소를 사용할 수 없거나 권한이 잘못되었습니다. 새 패키지에서 sudo bash install.sh --upgrade를 실행해 복구하세요.", "上次 GitHub 限流的等待时间已结束,可重新检查": "이전 GitHub 요청 제한 대기 시간이 끝났습니다. 다시 확인할 수 있습니다.", "上次结果:{state}": "이전 결과: {state}", "上游未提供恢复时间,按 GitHub 建议短暂等待": "복구 시간이 제공되지 않아 GitHub 권장에 따라 잠시 대기", "下载中": "다운로드 중", "下载失败": "다운로드 실패", "下载失败:{error}": "다운로드 실패: {error}", "下载已取消,可重新点击「下载并安装」。": "다운로드가 취소되었습니다. 「다운로드 후 설치」를 다시 클릭할 수 있습니다.", "下载已取消,可重新点击「下载并更新」。": "다운로드가 취소되었습니다. 「다운로드 후 업데이트」를 다시 클릭할 수 있습니다.", "下载并安装": "다운로드 후 설치", "下载并更新": "다운로드 후 업데이트", "下载服务端包": "서버 패키지 다운로드", "不支持此类请求": "지원하지 않는 요청 유형", "与 gh-proxy.com 属于同一服务的备用线路。": "gh-proxy.com과 동일한 서비스의 대체 경로입니다.", "与网关的软件更新和插件共用设置;APK 下载由手机联网,GitHub 令牌不会发送给加速站。": "게이트웨이 업데이트 및 플러그인과 설정을 공유합니다. APK는 휴대폰이 다운로드하며 GitHub 토큰은 가속 사이트로 전송되지 않습니다.", "与软件更新共用出网代理和 GitHub 凭证,修改任意一处都会同步生效。": "소프트웨어 업데이트와 아웃바운드 프록시 및 GitHub 자격 증명을 공유합니다. 어느 곳에서 변경해도 함께 적용됩니다.", "个人开发并开源维护,免费使用,也不会收集你的账号数据。如果它帮到了你,欢迎到项目仓库点个 Star 支持一下。": "개발자가 개인적으로 개발하고 오픈소스로 유지·관리하는 프로젝트입니다. 무료로 사용할 수 있고, 계정 데이터를 수집하지 않습니다. 도움이 되셨다면 프로젝트 저장소에서 Star를 눌러 응원해 주세요.", "仅 beta 版": "beta 버전만", "仅官方源": "공식 소스만", "仅插件索引和文件下载,不支持版本查询": "플러그인 목록과 다운로드만 지원하며 버전 조회는 지원하지 않음", "仅正式版": "정식 버전만", "仓库暂无发布版本。{at}": "저장소에 아직 릴리스 버전이 없습니다.{at}", "代理列表读取失败": "프록시 목록을 불러오지 못했습니다", "令牌已生效,但写入磁盘失败(重启后会丢失)": "토큰은 적용되었지만 디스크에 저장하지 못했습니다(재시작하면 사라집니다)", "以上状态来自网关;APK 下载会由手机按本机网络重新选择通道。": "위 상태는 게이트웨이에서 측정했습니다. APK는 휴대폰 자체 네트워크에서 경로를 다시 선택합니다.", "优先使用加速源,访问失败后回退官方源;不会绕过 GitHub 限流冷却。": "가속 소스를 먼저 사용하고 실패하면 공식 소스로 전환합니다. GitHub 요청 제한 대기 시간을 준수합니다.", "优先加速源": "우선 가속 소스", "优先访问官方源,连接失败后尝试加速源;短期记住成功的源,定期恢复官方优先。": "공식 소스를 먼저 시도하고 연결에 실패하면 가속 소스를 사용합니다. 성공한 소스를 잠시 기억하고 주기적으로 공식 소스를 다시 시도합니다.", "允许本机自动检查": "이 기기에서 자동 확인 허용", "先使用指定加速源,失败后尝试其他已启用的加速源,最后回退官方源。": "지정한 소스를 먼저 사용하고 실패하면 다른 활성 가속 소스, 마지막으로 공식 소스를 시도합니다.", "关于作者": "제작자 소개", "关注 beta 版更新": "beta 버전 업데이트 받기", "关注正式版更新": "정식 버전 업데이트 받기", "出网线路与 GitHub 令牌设置": "아웃바운드 경로 및 GitHub 토큰 설정", "出网线路已切换,但写入磁盘失败(重启后会恢复原线路)": "아웃바운드 경로가 전환되었지만 디스크에 저장하지 못했습니다(재시작하면 원래 경로로 돌아갑니다)", "分别探测版本查询、插件索引和文件下载,选择最快返回有效内容的源;成功线路短期复用,失败自动切换。": "버전 조회, 플러그인 목록 및 다운로드를 각각 확인합니다. 유효한 내용을 가장 먼저 반환한 소스를 잠시 재사용하고 실패하면 전환합니다.", "分钟({min} ~ {max})": "분({min} ~ {max})", "到 GitHub 发布页下载": "GitHub 릴리스 페이지에서 다운로드", "到点自动向 GitHub 查询新版本,查到就走「检测到更新」弹窗;关闭后「检查更新」按钮仍可手动触发": "지정한 시각이 되면 GitHub에 새 버전을 자동으로 조회하고, 찾으면 「업데이트 감지」 팝업을 띄웁니다. 팝업을 닫아도 「업데이트 확인」 버튼으로 수동 확인할 수 있습니다", "加入 beta 版": "베타 버전 참여", "加入交流群": "커뮤니티 참여", "加速源优先": "가속 소스 우선", "单独设置": "별도로 설정", "即将满员": "곧 정원 마감", "即将满员,请优先加3群、4群": "곧 정원 마감 — 그룹 3 또는 4에 우선 참여해 주세요", "去更新": "지금 업데이트", "发布页上没有 {wanted} 这个文件": "릴리스 페이지에 {wanted} 파일이 없습니다", "发布页上没有对应本机架构的服务端更新包": "릴리스 페이지에 이 기기의 아키텍처용 서버 업데이트 패키지가 없습니다", "发布页上的文件被更新源的访问方式过滤掉了,请检查「更新设置」里的 GitHub 访问方式": "릴리스 페이지의 파일이 업데이트 소스 접근 방식으로 걸러졌습니다. 「업데이트 설정」의 GitHub 접근 방식을 확인하세요.", "发现新版本 {latest}(当前 {current})。{at}": "새 버전 감지: {latest} (현재 {current}).{at}", "发现新版本 {latest}(当前 {current})。{reason}{at}": "새 버전 {latest}(현재 {current})이 있습니다. {reason}{at}", "发现新版本 {latest}(当前 {current}),但该版本没有提供容器内更新包({reason});请在宿主机执行 docker compose pull && docker compose up -d 升级。{at}": "새 버전 {latest}(현재 {current})이 있지만 이 버전에는 컨테이너 내 업데이트 패키지가 없습니다({reason}). 호스트에서 docker compose pull && docker compose up -d 로 업그레이드하세요.{at}", "发现新版本 {latest}(当前 {current}),但这一版没有提供本机安装包({reason});可到 GitHub 发布页手动下载。{at}": "새 버전 {latest}(현재 {current})이 있지만 이 버전에는 이 기기용 설치 패키지가 없습니다({reason}). GitHub 릴리스 페이지에서 직접 내려받을 수 있습니다.{at}", "取消下载": "다운로드 취소", "取消失败:{error}": "취소 실패: {error}", "只访问 GitHub 官方源,仍使用所选出网代理。": "선택한 아웃바운드 프록시를 통해 GitHub 공식 소스에만 접속합니다.", "可安装": "설치 가능", "启动失败": "시작 실패", "启动安装程序失败:{error}": "설치 프로그램 실행 실패: {error}", "启用加速源 {source}": "가속 소스 {source} 활성화", "在 GitHub 查看完整说明": "GitHub에서 전체 안내 보기", "在 QQ 里搜索群号即可加入。": "QQ에서 그룹 번호를 검색하면 참여할 수 있습니다.", "在宿主机执行 docker compose pull && docker compose up -d 即可升级。": "호스트에서 docker compose pull && docker compose up -d 를 실행하면 업그레이드됩니다.", "在浏览器中打开": "브라우저에서 열기", "在浏览器中打开 GitHub 发布页": "브라우저에서 GitHub 릴리스 페이지 열기", "在浏览器中打开项目仓库,点 Star 支持作者": "브라우저에서 프로젝트 저장소를 열고 Star를 눌러 제작자를 응원하세요", "在默认浏览器中打开 GitHub 的令牌创建页(备注已预设,无需勾选任何权限,直接点 Generate token)": "기본 브라우저에서 GitHub 토큰 생성 페이지를 엽니다(메모는 미리 채워져 있고, 어떤 권한도 선택할 필요 없이 Generate token을 바로 누르면 됩니다)", "填写后检查限额 60 → 5000 次/小时(创建令牌无需勾选任何权限)": "입력하면 확인 한도가 시간당 60 → 5000회로 올라갑니다(토큰 생성 시 어떤 권한도 선택할 필요가 없습니다)", "填写支持 Raw、Release 和 GitHub API 的 HTTPS 加速站前缀,留空恢复默认。": "Raw, Release 및 GitHub API를 지원하는 HTTPS 가속 사이트 접두사를 입력하세요. 비워 두면 기본값으로 복원됩니다.", "复制群号 {group}": "그룹 번호 {group} 복사", "安装中": "설치 중", "安装包": "설치 패키지", "安装包已下载完成,正在启动安装程序(需要管理员权限,会弹出 UAC 确认框)…": "설치 패키지 다운로드가 완료되어 설치 프로그램을 실행하는 중입니다(관리자 권한이 필요하며 UAC 확인 창이 표시됩니다)…", "安装包已下载完成,正在启动新的 AppImage…": "설치 프로그램 다운로드 완료. 새 AppImage를 실행하는 중…", "安装包已下载完成,正在打开系统安装器…": "설치 프로그램 다운로드 완료. 시스템 설치 프로그램을 여는 중…", "安装包已下载完成,正在挂载磁盘映像…": "설치 패키지 다운로드가 완료되어 디스크 이미지를 마운트하는 중입니다…", "安装包已就绪:{name}。点击「安装并重启」后会启动新的 AppImage;把它移动到你的应用目录并替换旧文件即完成升级(本程序会先退出以释放文件占用)。": "설치 프로그램 준비 완료: {name}. \"설치 후 재시작\"을 누르면 새 AppImage가 실행됩니다. 앱 폴더로 옮겨 이전 파일을 바꿔 놓으면 업그레이드가 끝납니다(파일 점유를 풀기 위해 이 앱이 먼저 종료됩니다).", "安装包已就绪:{name}。点击「安装并重启」后需要管理员权限,会弹出 UAC 确认框。": "설치 패키지가 준비되었습니다: {name}. 「설치 후 재시작」을 클릭하면 관리자 권한이 필요하며 UAC 확인 창이 표시됩니다.", "安装包已就绪:{name}。点击「打开安装包」后会交给系统安装器,按提示输入密码即可完成安装(本程序无需退出)。": "설치 프로그램 준비 완료: {name}. \"설치 프로그램 열기\"를 누르면 시스템 설치 프로그램으로 넘어갑니다. 안내에 따라 비밀번호를 입력하세요(이 앱은 종료할 필요가 없습니다).", "安装包已就绪:{name}。点击「打开安装包」后会挂载磁盘映像,把应用拖进「应用程序」即可完成安装。": "설치 패키지가 준비되었습니다: {name}. 「설치 패키지 열기」를 클릭하면 디스크 이미지가 마운트되며, 앱을 「응용 프로그램」 폴더로 끌어다 놓으면 설치가 완료됩니다.", "安装包已挂载,请在弹出的窗口里把应用拖进「应用程序」完成安装。安装完成后重新打开本程序即可。": "설치 패키지가 마운트되었습니다. 열린 창에서 앱을 「응용 프로그램」 폴더로 끌어다 놓으면 설치가 완료됩니다. 설치 후 이 프로그램을 다시 열면 됩니다.", "安装失败": "설치 실패", "安装失败:{error}": "설치 실패: {error}", "安装并重启": "설치 후 재시작", "安装程序已启动,本程序将退出以便完成覆盖安装。安装程序需要管理员权限,会弹出 UAC 确认框,请选择「是」。": "설치 프로그램이 시작되었습니다. 덮어쓰기 설치를 완료하기 위해 이 프로그램은 종료됩니다. 설치 프로그램에는 관리자 권한이 필요하며 UAC 확인 창이 표시되니 「예」를 선택하세요.", "官方源": "공식 소스", "容器内更新:更新包从 GitHub 发布页下载,校验 sha256 后由面板替换容器内的程序与界面文件,再重启服务(容器由 restart 策略拉起,页面会自动刷新)。更新的是容器里的文件,compose 里的镜像标签不变 —— 之后执行 docker compose pull && up -d 会使用镜像里的版本。检查更新与下载的出网线路、GitHub 令牌都在「更新设置」里。": "컨테이너 내 업데이트: 업데이트 패키지는 GitHub 릴리스 페이지에서 다운로드하고, sha256을 검증한 뒤 패널이 컨테이너 내부의 프로그램과 UI 파일을 교체하고 서비스를 재시작합니다(컨테이너는 restart 정책으로 다시 올라오며 페이지는 자동으로 새로 고쳐집니다). 교체되는 것은 컨테이너 내부 파일이고 compose의 이미지 태그는 그대로입니다 —— 이후 docker compose pull && up -d 를 실행하면 이미지 안의 버전을 사용합니다. 업데이트 확인과 다운로드의 아웃바운드 경로, GitHub 토큰은 「업데이트 설정」에 있습니다.", "将更新至 {version}。下载和校验完成后会短暂停止服务、替换程序并自动重启;账号与配置会保留。确认后无需再次点击安装。": "{version}(으)로 업데이트합니다. 다운로드와 검증 후 서비스를 잠시 중지하고 파일을 교체한 뒤 자동으로 다시 시작합니다. 계정과 설정은 유지되며 추가 설치 클릭은 필요하지 않습니다.", "已加密存储在本地,不显示具体值;粘贴新令牌可覆盖": "로컬에 암호화되어 저장되며 값을 표시하지 않습니다. 새 토큰을 붙여넣으면 덮어씁니다", "已取消": "취소됨", "已填写": "입력됨", "已填写(粘贴新令牌可覆盖)": "입력됨(새 토큰을 붙여넣으면 덮어쓰기)", "已打开系统安装器,请在它弹出的窗口里完成安装。安装完成后重新打开本程序即可。": "시스템 설치 프로그램을 열었습니다. 표시된 창에서 설치를 마친 뒤 이 앱을 다시 여세요.", "已是最新": "최신 버전입니다", "已更新至 {version},服务已恢复。": "{version}(으)로 업데이트되었으며 서비스가 복구되었습니다.", "已替换为 {version},正在重启服务…": "{version}(으)로 교체했습니다. 서비스를 재시작하는 중…", "已配置 GITHUB_TOKEN 环境变量,界面保存的令牌优先于它": "GITHUB_TOKEN 환경 변수가 설정되어 있으며, 화면에 저장된 토큰이 우선 적용됩니다", "开启后只更新到 beta 版(预发布),取版本最高的一个;beta 版可能不稳定。开启期间不会因为正式版发布而自动切回正式版 —— 想切回请关闭本开关。关闭后只更新到正式版,且不会降级到版本号更低的版本。": "켜면 beta(프리릴리스) 버전만 대상으로 가장 높은 버전으로 업데이트합니다. beta 버전은 불안정할 수 있습니다. 켜 둔 동안에는 정식 버전이 나와도 자동으로 정식 버전으로 돌아가지 않습니다 — 돌아가려면 이 스위치를 끄세요. 끄면 정식 버전만 대상으로 업데이트하며, 더 낮은 버전으로 다운그레이드되지 않습니다.", "开始更新": "업데이트 시작", "当前 Windows 服务尚未接入一键更新。请解压新版服务端包,以管理员身份运行一次 install-service.ps1,原有账号、目录、端口和配置会保留。": "이 Windows 서비스에는 원클릭 업데이트가 아직 설정되지 않았습니다. 새 서버 패키지를 풀고 관리자 권한으로 install-service.ps1을 한 번 실행하세요. 기존 계정, 디렉터리, 포트 및 설정은 유지됩니다.", "当前下载通道:{source}": "다운로드 소스: {source}", "当前为直接运行的服务端,请停止程序后替换服务端包,再重新启动。": "서버가 서비스 관리자 없이 실행 중입니다. 프로그램을 중지하고 서버 파일을 교체한 뒤 다시 시작하세요.", "当前关注:{channels}": "현재 선택: {channels}", "当前安装尚未接入一键更新。请下载新版服务端包,执行一次 sudo bash install.sh --upgrade;之后即可在面板更新。": "원클릭 업데이트가 아직 설치되지 않았습니다. 새 서버 패키지를 다운로드하고 sudo bash install.sh --upgrade를 한 번 실행하세요. 이후에는 패널에서 업데이트할 수 있습니다.", "当前已是最新版本({current})。{at}": "현재 최신 버전입니다({current}).{at}", "当前版本": "현재 버전", "当前系统或架构暂不支持面板自动安装,请查看发布页。": "현재 시스템 또는 아키텍처에서는 자동 설치를 지원하지 않습니다. 릴리스 페이지를 확인하세요.", "当前线路不可用:{error};请重新选择代理或切回直连": "현재 경로를 사용할 수 없습니다: {error}. 프록시를 다시 선택하거나 직접 연결로 전환하세요", "当前网关仍使用旧版单源设置,升级网关后可管理多个加速源。": "현재 게이트웨이는 이전 단일 소스 설정을 사용합니다. 업그레이드 후 여러 가속 소스를 관리할 수 있습니다.", "当前需要手动升级": "수동 업그레이드 필요", "当前:自动检查关闭": "현재: 자동 확인 꺼짐", "当前:自动检查开启,每 {n} 分钟": "현재: 자동 확인 켜짐, {n}분마다", "待重启": "재시작 대기", "待重新检查": "재확인 필요", "微信赞赏": "WeChat", "微信赞赏码": "WeChat 후원 코드", "打开 GitHub 令牌页面": "GitHub 토큰 페이지 열기", "打开安装包": "설치 패키지 열기", "打开链接失败:{error}": "링크 열기 실패: {error}", "指定代理": "지정 프록시", "指定加速源优先": "지정한 가속 소스 우선", "按上游返回时间": "서버가 반환한 복구 시간 사용", "插件索引": "플러그인 목록", "插件默认跟随这里的更新通道、自动检查和间隔;可在插件设置中单独设置。": "플러그인은 기본적으로 여기의 업데이트 채널, 자동 확인 및 간격을 따릅니다. 플러그인 설정에서 별도로 설정할 수 있습니다.", "支付宝": "Alipay", "支付宝收款码": "Alipay 결제 QR 코드", "支持作者": "제작자 후원", "支持版本查询": "버전 조회 지원", "收藏项目": "프로젝트 즐겨찾기", "数据升级失败:{error}(旧数据仍在原处,下次启动会自动重试)": "데이터 업그레이드 실패: {error}(기존 데이터는 그대로 있으며, 다음 시작 시 자동으로 다시 시도합니다)", "数据升级未全部完成(已导入 {n} 项,仍有数据待导入,下次启动会自动重试)": "데이터 업그레이드가 완료되지 않았습니다({n}건을 가져왔으며 아직 가져올 데이터가 남아 있습니다. 다음 시작 시 자동으로 다시 시도합니다)", "数据升级:没有需要导入的旧数据": "데이터 업그레이드: 가져올 기존 데이터가 없습니다", "文件下载": "파일 다운로드", "新版本 ": "새 버전 ", "无法开始更新:{error}": "업데이트를 시작할 수 없습니다: {error}", "无法比较": "비교할 수 없음", "无法解密": "복호화할 수 없음", "无法读取更新信息": "업데이트 정보를 읽을 수 없습니다", "显示的是当前网络下的响应耗时,不代表长期稳定性或完整下载速度。未探测的源会在实际更新时检查。": "표시된 시간은 현재 네트워크의 응답 시간이며 장기 안정성이나 전체 다운로드 속도를 의미하지 않습니다. 미확인 소스는 실제 업데이트 때 확인합니다.", "暂未确认服务恢复,请检查服务器状态后刷新页面;不会自动重复安装。": "서비스 복구가 확인되지 않았습니다. 서버 상태를 확인한 뒤 페이지를 새로 고치세요. 설치는 자동 반복되지 않습니다.", "更新任务已结束,但当前运行版本与目标不一致,请检查服务日志。": "업데이트 작업은 끝났지만 실행 버전이 대상과 다릅니다. 서비스 로그를 확인하세요.", "更新出网代理": "업데이트 아웃바운드 프록시", "更新包从 GitHub Release 获取。自动模式按实际请求选择可用通道,失败后换源;镜像安装包必须匹配官方校验值,取不到时仅使用原始源。加速源、代理和令牌在「更新设置」中配置,指定代理失效不会静默直连。": "업데이트는 GitHub Release에서 가져옵니다. 자동 모드는 실제 응답으로 경로를 선택하고 실패 시 전환합니다. 미러 설치 파일은 공식 체크섬과 일치해야 하며 체크섬이 없으면 원본 소스만 사용합니다. 가속 소스, 프록시 및 토큰은 업데이트 설정에서 지정합니다. 지정 프록시가 실패해도 직접 연결로 몰래 전환하지 않습니다.", "更新包从 GitHub Release 获取,下载后交给本平台安装器。GitHub 访问方式、加速前缀、出网代理和令牌在「更新设置」中配置。默认官方优先,连接失败后尝试加速源;镜像安装包必须匹配官方校验值,取不到时仅使用原始源。指定代理失效会明确报错,不会静默改走直连。": "업데이트 패키지는 GitHub Release에서 가져오며 다운로드 후 플랫폼 설치 프로그램으로 엽니다. GitHub 접속 방식, 가속 접두사, 아웃바운드 프록시 및 토큰은 업데이트 설정에서 지정합니다. 기본적으로 공식 소스를 먼저 시도하고 연결 실패 시 가속 소스를 사용합니다. 미러 설치 파일은 공식 체크섬과 일치해야 하며 체크섬을 가져올 수 없으면 원본 소스만 사용합니다. 지정 프록시가 작동하지 않으면 오류를 표시하고 직접 연결로 몰래 전환하지 않습니다.", "更新包从 GitHub 发布页下载,下载完成后可直接启动安装程序并自动重启本程序。安装包会先校验来源域名与文件完整性。检查更新与下载安装包的出网线路、GitHub 令牌都在「更新设置」里:线路默认直连(直连失败时自动借 Clash Verge 的混合端口重试一次),选定指定出口后只走该出口;填写 GitHub 令牌可把检查限额从 60 次/小时提高到 5000 次/小时。": "업데이트 패키지는 GitHub 릴리스 페이지에서 다운로드하며, 다운로드가 끝나면 바로 설치 프로그램을 실행하고 이 프로그램을 자동으로 재시작할 수 있습니다. 설치 패키지는 먼저 출처 도메인과 파일 무결성을 검증합니다. 업데이트 확인과 설치 패키지 다운로드의 아웃바운드 경로, GitHub 토큰은 모두 「업데이트 설정」에 있습니다. 경로는 기본적으로 직접 연결이며(직접 연결 실패 시 Clash Verge의 혼합 포트를 빌려 한 번 재시도), 지정 프록시를 선택하면 해당 경로만 사용합니다. GitHub 토큰을 입력하면 확인 한도를 시간당 60회에서 5000회로 높일 수 있습니다.", "更新包已就绪:{name}。点「安装并重启」后,面板会校验并替换容器内的程序与界面文件,然后重启服务(页面会自动刷新)。": "업데이트 패키지가 준비되었습니다: {name}. 「설치 후 재시작」을 클릭하면 패널이 컨테이너 내부의 프로그램과 UI 파일을 검증해 교체한 뒤 서비스를 재시작합니다(페이지는 자동으로 새로 고쳐집니다).", "更新失败": "업데이트 실패", "更新失败:{error}": "업데이트 실패: {error}", "更新完成": "업데이트 완료", "更新已应用到容器内,重启服务后生效。{at}": "업데이트가 컨테이너 내부에 적용되었습니다. 서비스를 재시작하면 적용됩니다.{at}", "更新已应用到容器内,重启服务后生效。{at}(本次检查失败:{error})": "컨테이너 내부에 업데이트가 적용되었습니다. 서비스를 다시 시작하면 적용됩니다.{at}(이번 확인 실패: {error})", "更新日志": "업데이트 노트", "更新设置": "업데이트 설정", "更新进行中": "업데이트 진행 중", "更新通道已保存": "업데이트 채널을 저장했습니다", "更新通道已改变,请重新检查更新。": "업데이트 채널이 변경되었습니다. 업데이트를 다시 확인하세요.", "替换完成,正在重启服务…": "교체가 완료되었습니다. 서비스를 재시작하는 중…", "最多保留 6 个 HTTPS 加速源;自定义源可关闭版本查询支持。": "HTTPS 가속 소스는 최대 6개입니다. 사용자 지정 소스의 버전 조회를 끌 수 있습니다.", "最新发布版本为 {latest},但当前版本号「{current}」无法解析,未做新旧判断。{at}": "최신 릴리스 버전은 {latest}입니다. 다만 현재 버전 번호 「{current}」를 해석할 수 없어 신구 비교는 하지 않았습니다.{at}", "最新版本": "최신 버전", "最近采用": "최근 사용", "有新版本": "새 버전 있음", "服务正在重启,页面会在恢复后自动刷新…({seconds}s)": "서비스를 재시작하는 중이며, 복구되면 페이지가 자동으로 새로 고쳐집니다…({seconds}초)", "服务端压缩包": "서버 압축 패키지", "未找到适用的更新包": "적합한 업데이트 패키지 없음", "未找到适用的更新包。需要:{wanted};发布页包含的文件类型:{seen}。": "적합한 업데이트 패키지를 찾지 못했습니다. 필요: {wanted}. 릴리스 페이지의 파일 형식: {seen}.", "未探测": "미확인", "未检查": "확인 전", "本工具由": "본 도구는", "查看发布页": "릴리스 페이지 보기", "校验中": "검증 중", "检查中": "확인 중", "检查中…": "확인 중…", "检查失败": "확인 실패", "检查更新": "업데이트 확인", "检查更新与下载安装包使用所选线路;未选择代理时先直连,失败后尝试 Clash Verge 混合端口;指定代理不可用时不会自动改走直连。": "업데이트 확인과 설치 파일 다운로드는 선택한 경로를 사용합니다. 프록시를 선택하지 않으면 직접 연결을 먼저 시도하고, 실패하면 Clash Verge 혼합 포트를 시도합니다. 지정한 프록시를 사용할 수 없으면 직접 연결로 자동 전환하지 않습니다.", "检查更新与下载安装包使用所选线路;未选择代理时直连,指定代理不可用时不会自动改走直连。": "업데이트 확인과 설치 파일 다운로드는 선택한 경로를 사용합니다. 프록시를 선택하지 않으면 직접 연결하며, 지정한 프록시를 사용할 수 없어도 직접 연결로 자동 전환하지 않습니다.", "检查更新与下载安装包走哪条线路(当前:{current});选择即保存。选项来自「网络代理」页;直连失败时会自动借 Clash 混合端口重试一次,选定指定代理后只走它": "업데이트 확인과 설치 패키지 다운로드가 어느 경로를 사용할지 지정합니다(현재: {current}). 선택하면 바로 저장됩니다. 옵션은 「네트워크 프록시」 페이지에서 가져옵니다. 직접 연결 실패 시 Clash 혼합 포트를 빌려 한 번 재시도하며, 지정 프록시를 선택하면 해당 프록시만 사용합니다", "检查更新失败:{error}": "업데이트 확인 실패: {error}", "检查更新失败:{error}(以下版本与更新日志来自上次成功检查,检查于 {time})": "업데이트 확인 실패: {error} (아래 버전과 업데이트 내역은 마지막으로 성공한 확인 시점({time})의 것입니다)", "检查计划": "확인 일정", "检查间隔必须是 {min} ~ {max} 分钟": "확인 간격은 {min} ~ {max}분이어야 합니다", "检查间隔(分钟)": "확인 간격(분)", "检测到更新": "업데이트 감지", "检测到自定义程序或界面路径,一键更新不会覆盖这些位置。请按原部署方式升级。": "프로그램 또는 패널의 사용자 지정 경로가 감지되었습니다. 원클릭 업데이트는 이를 덮어쓰지 않습니다. 기존 배포 절차로 업그레이드하세요.", "正在下载 {name}:{percent}%({received} / {total} MB)": "{name} 다운로드 중: {percent}%({received} / {total} MB)", "正在下载 {version} 的服务端更新包…": "{version} 서버 업데이트를 다운로드하는 중…", "正在下载安装包…(下载完成后会交给系统安装器,按提示输入密码即可完成安装)": "설치 프로그램을 내려받는 중…(완료되면 시스템 설치 프로그램으로 넘어갑니다. 안내에 따라 비밀번호를 입력하세요)", "正在下载安装包…(下载完成后会启动新的 AppImage;把它替换掉旧文件即完成升级)": "설치 프로그램을 내려받는 중…(완료되면 새 AppImage가 실행됩니다. 이전 파일을 바꿔 놓으면 업그레이드가 끝납니다)", "正在下载安装包…(下载完成后会挂载磁盘映像,把应用拖进「应用程序」即可完成安装)": "설치 패키지 다운로드 중…(다운로드가 끝나면 디스크 이미지를 마운트합니다. 앱을 「응용 프로그램」 폴더로 끌어다 놓으면 설치가 완료됩니다)", "正在下载安装包…(下载完成后启动安装程序需要管理员权限,会弹出 UAC 确认框)": "설치 패키지 다운로드 중…(다운로드가 끝나면 설치 프로그램을 실행하며 관리자 권한이 필요하고 UAC 확인 창이 표시됩니다)", "正在下载服务端更新包…(下载完成后由面板完成替换,重启容器内的服务后生效)": "서버 업데이트 패키지를 다운로드하는 중…(다운로드가 끝나면 패널이 파일을 교체하고, 컨테이너 내부 서비스를 재시작하면 적용됩니다)", "正在取消下载…": "다운로드 취소 중…", "正在备份并替换服务端程序与界面,请勿关闭服务器…": "서버와 패널 파일을 백업하고 교체하는 중입니다. 서버를 끄지 마세요…", "正在把旧数据导入 SQLite 数据库(旧文件会保留,不会删除)…": "기존 데이터를 SQLite 데이터베이스로 가져오는 중입니다(기존 파일은 보존되며 삭제되지 않습니다)…", "正在查询 GitHub 上的最新发布版本…": "GitHub에서 최신 릴리스 버전을 조회하는 중입니다…", "正在校验并替换容器内的程序与界面文件…": "컨테이너 내부의 프로그램과 UI 파일을 검증해 교체하는 중…", "正在独立核验官方更新包,校验通过前不会修改现有程序…": "공식 패키지를 독립적으로 검증 중입니다. 검증이 끝나기 전에는 기존 파일을 변경하지 않습니다…", "正在选择下载通道…": "다운로드 경로 선택 중…", "正在重启服务并确认新版本,页面恢复后会自动刷新…": "서비스를 다시 시작하고 새 버전을 확인하는 중입니다. 복구되면 페이지를 새로 고칩니다…", "正式版与 beta 版": "정식 버전 및 beta 버전", "没有可下载的安装包": "다운로드할 수 있는 설치 패키지가 없습니다", "没有可下载的安装包:{reason}": "다운로드할 수 있는 설치 패키지가 없습니다: {reason}", "没有启用的加速源,将只使用官方源。": "활성화된 가속 소스가 없어 공식 소스만 사용합니다.", "沿用已记录的恢复时间": "기록된 복구 시간 사용", "点击「检查更新」后,这里会显示最新版本的更新说明。": "「업데이트 확인」을 클릭하면 여기에 최신 버전의 업데이트 노트가 표시됩니다.", "点击「检查更新」查询 GitHub 上的最新发布版本。": "「업데이트 확인」을 클릭하면 GitHub의 최신 릴리스 버전을 조회합니다.", "点击「检查更新」查询最新发布版本。": "「업데이트 확인」을 클릭하면 최신 릴리스 버전을 조회합니다.", "点击在浏览器中打开": "클릭하면 브라우저에서 열립니다", "点击复制群号": "클릭하면 그룹 번호가 복사됩니다", "版本 {version} · 按 GitHub 访问设置下载安装包": "버전 {version} · GitHub 접속 설정에 따라 설치 파일 다운로드", "版本查询": "버전 조회", "版本查询、插件索引、文件下载": "버전 조회, 플러그인 목록, 파일 다운로드", "状态来自最近一次实际请求,并非实时测速。过期后标为待重新检查;限流只暂停对应线路,其他线路仍可使用。": "최근 실제 요청의 결과이며 실시간 속도 측정이 아닙니다. 만료되면 재확인 필요로 표시합니다. 요청 제한은 해당 경로만 일시 중지하며 다른 경로는 계속 사용할 수 있습니다.", "环境变量": "환경 변수", "立即重启": "지금 재시작", "等待恢复": "복구 대기 중", "管理员已关闭面板一键更新,请使用手动升级方式。": "관리자가 원클릭 업데이트를 껐습니다. 수동으로 업그레이드하세요.", "粘贴 GitHub 令牌(ghp_… / github_pat_…)": "GitHub 토큰 붙여넣기(ghp_… / github_pat_…)", "网关已关闭自动检查,此处只做手动检查": "게이트웨이에서 자동 확인을 껐습니다. 여기에서는 수동 확인만 가능합니다.", "群号": "그룹 번호", "群号:{group}": "그룹 번호: {group}", "自动检查更新": "자동 업데이트 확인", "自动选择最快可用源": "사용 가능한 가장 빠른 소스 자동 선택", "自动(官方优先)": "자동(공식 우선)", "自定义加速前缀": "사용자 지정 가속 접두사", "至少需要关注正式版或 beta 版中的一个通道": "정식 버전 또는 beta 버전 채널을 하나 이상 선택해야 합니다.", "补充内置备用源": "누락된 기본 소스 추가", "记录于 {time}": "기록 시각: {time}", "请先粘贴 GitHub 令牌": "먼저 GitHub 토큰을 붙여넣으세요", "请检查服务日志": "서비스 로그를 확인하세요", "读取下载进度失败:{error}": "다운로드 진행률을 읽지 못했습니다: {error}", "读取中": "읽는 중", "赞赏完全自愿,不解锁任何功能,也不影响正常使用。": "후원은 전적으로 자율입니다. 후원 여부는 기능 잠금 해제나 정상적인 이용에 영향을 주지 않습니다.", "赞赏方式": "후원 방법", "跟随软件": "소프트웨어 설정 따르기", "跳过此次更新": "이번 업데이트 건너뛰기", "软件更新": "소프트웨어 업데이트", "软件更新与插件共用此设置;GitHub 令牌仅发送给官方 API。镜像安装包需要官方校验值,镜像插件包需要可信签名。": "소프트웨어 업데이트와 플러그인이 이 설정을 공유합니다. GitHub 토큰은 공식 API에만 전송됩니다. 미러 설치 파일은 공식 체크섬이, 미러 플러그인은 신뢰할 수 있는 서명이 필요합니다.", "软件版本检查设置不可用": "소프트웨어 업데이트 확인 설정을 사용할 수 없습니다.", "返回内容异常": "잘못된 응답 내용", "这一版只有 {seen},没有本机需要的 {wanted}": "이 버전에는 {seen}만 있고 이 기기에 필요한 {wanted}가 없습니다", "这一版没有为当前平台提供安装包": "이 버전에는 현재 플랫폼용 설치 패키지가 없습니다", "这一版没有发布本机需要的安装包({wanted})": "이 버전에는 이 기기에 필요한 설치 패키지({wanted})가 게시되지 않았습니다", "这一版没有提供容器内更新包": "이 버전에는 컨테이너 내 업데이트 패키지가 없습니다", "这一版没有提供容器内更新包:{reason}": "이 버전에는 컨테이너 내 업데이트 패키지가 없습니다: {reason}", "这一版没有提供本机安装包": "이 버전에는 이 기기용 설치 패키지가 없습니다", "这一版还没有上传任何文件(构建可能失败,或仍在打包上传)": "이 버전에는 아직 아무 파일도 업로드되지 않았습니다(빌드가 실패했거나 아직 업로드 중입니다)", "这个版本没有填写发布说明。": "이 버전에는 릴리스 노트가 없습니다.", "连接超时": "연결 시간 초과", "通道已切换,但写入磁盘失败(重启后会回到原设置)": "채널이 전환되었지만 디스크에 저장하지 못했습니다(재시작하면 원래 설정으로 돌아갑니다)", "遇到问题或有使用心得,欢迎到群里交流。": "질문이나 사용 팁은 각 그룹에서 나눠 주세요.", "重启中": "재시작 중", "重新粘贴保存一次即可自愈": "토큰을 다시 붙여넣고 저장하면 해결됩니다", "重试下载": "다운로드 다시 시도", "链接地址不受支持": "지원하지 않는 링크 주소입니다", "限流冷却中": "요청 제한 해제 대기 중", "面板自动安装": "패널 자동 설치", "预发布": "프리릴리스", "默认开启;即使当前使用 beta 版,也可收到版本号更高的正式版更新。": "기본적으로 켜져 있습니다. beta 버전을 사용 중이어도 버전 번호가 더 높은 정식 버전 업데이트를 받을 수 있습니다.", "默认跟随软件的正式版和 beta 关注选择;单独设置只影响插件。始终按版本号选择更新,不会降级。": "기본적으로 소프트웨어의 정식 및 beta 채널 선택을 따릅니다. 별도 설정은 플러그인에만 적용됩니다. 항상 버전 번호로 업데이트를 선택하며 다운그레이드하지 않습니다.", "默认跟随软件的自动检查和间隔。关闭自动检查也会暂停插件自动更新和自动下载;手动检查与安装不受影响。": "기본적으로 소프트웨어의 자동 확인 및 간격을 따릅니다. 자동 확인을 끄면 플러그인 자동 업데이트와 자동 다운로드도 일시 중지됩니다. 수동 확인 및 설치에는 영향이 없습니다.", "(检查于 {time})": " (확인 시각 {time})", "API Key 列表": "API Key 목록", "Key 已停用": "Key를 비활성화했습니다", "Key 已删除": "Key를 삭제했습니다", "Key 已启用": "Key를 활성화했습니다", "Key 至少需要 8 个字符": "Key는 8자 이상이어야 합니다", "✅ Key 已创建,记得复制给客户端": "✅ Key를 생성했습니다. 클라이언트에 복사해 두세요", "✅ 可用范围已保存": "✅ 이용 범위를 저장했습니다", "不限制": "제한 없음", "与": "및", "例如 Cursor / 公司电脑": "예: Cursor / 회사 PC", "保存失败:{reason}": "저장 실패: {reason}", "保存范围": "범위 저장", "创建": "생성", "创建时间": "생성 시간", "删除网关 Key": "게이트웨이 키 삭제", "助手图片工具": "어시스턴트 이미지 도구", "助手标题总结": "어시스턴트 제목 요약", "可用提供商": "사용 가능한 제공자", "可用提供商:{names}": "사용 가능한 제공자: {names}", "可用模型": "사용 가능한 모델", "可用模型:{names}": "사용 가능한 모델: {names}", "可用范围": "이용 범위", "可用范围 · {name}": "이용 범위 · {name}", "启用「{name}」": "「{name}」 활성화", "复制 Key": "Key 복사", "客户端请求需带 ": "클라이언트 요청에는 ", "已删除": "삭제됨", "已启用鉴权 · {n} 把 Key 生效": "인증 활성 · Key {n}개 적용 중", "当前不限制:这把 Key 可以用全部提供商与全部对外模型": "현재 제한 없음: 이 Key는 모든 제공자와 모든 외부 공개 모델을 사용할 수 있습니다", "所选 API Key 已不可用": "선택한 API Key를 사용할 수 없습니다", "所选 API Key 已不可用,请重新选择": "선택한 API Key를 사용할 수 없습니다. 다른 Key를 선택하세요.", "提供商:{names}": "제공자: {names}", "搜索模型…": "모델 검색…", "操作失败:{reason}": "작업 실패: {reason}", "新建 API Key": "새 API Key", "日活保活": "일일 활동 유지", "显示": "표시", "未启用鉴权": "인증 비활성", "未命名": "이름 없음", "未提供客户端标识": "클라이언트 식별 정보 없음", "未知客户端": "알 수 없는 클라이언트", "模型调用使用所选 Key 的权限,日志记录 Key 名称,不保存密钥值。": "모델 호출에는 선택한 Key의 권한이 적용됩니다. 로그에는 Key 이름만 기록하며 비밀 값은 저장하지 않습니다.", "模型:{names}": "모델: {names}", "正在读取 API Key…": "API Key 불러오는 중…", "没有匹配的选项": "일치하는 항목이 없습니다", "没有可用的 API Key,请先在「网关 Key」页创建并启用": "사용 가능한 API Key가 없습니다. 게이트웨이 Key 페이지에서 생성하고 활성화하세요.", "留空 = 不限制": "비워 두면 제한 없음", "留空自动生成;手填至少 8 个字符": "비워 두면 자동 생성, 직접 입력 시 8자 이상", "留空表示不限制;同时设置时请求需同时满足两个条件(模型在白名单内且路由到允许的提供商)。 「可用模型」的候选跟着上面勾选的提供商走:没勾提供商时它是空的(还没有约束范围), 勾了几家就列出这几家能收的全部对外名。": "비워 두면 제한 없음. 둘 다 설정한 경우 요청은 두 조건을 모두 충족해야 합니다 (모델이 화이트리스트에 있고 허용된 제공자로 라우팅되어야 함). 「사용 가능한 모델」 후보는 위에서 선택한 제공자를 따릅니다: 제공자를 선택하지 않으면 비어 있고(아직 범위를 제약하지 않음), 몇 곳을 선택하면 그 제공자들이 처리할 수 있는 모든 외부 공개 이름을 나열합니다.", "确定删除 Key「{name}」?使用它的客户端会立刻无法访问。": "Key「{name}」을(를) 삭제할까요? 이 Key를 사용하는 클라이언트는 즉시 접근할 수 없게 됩니다.", "网关 Key 表": "게이트웨이 키 표", "自动记住本次选择,下次打开继续使用;Key 被停用或删除后需重新选择。": "선택한 Key를 기억하여 다음에도 사용합니다. Key가 비활성화되거나 삭제되면 다시 선택하세요.", "请先在上面选择可用提供商": "먼저 위에서 사용 가능한 제공자를 선택하세요", "读取 Key 列表失败:{reason}": "Key 목록 불러오기 실패: {reason}", "还没有 Key,当前不鉴权": "Key가 없습니다. 현재 인증하지 않음", "这几家当前没有可用模型(账号未登录或清单为空)": "이 제공자들은 현재 사용 가능한 모델이 없습니다 (계정 미로그인 또는 목록이 비어 있음)", "这把 Key 不限制提供商与模型(可用全部上游与全部对外模型)": "이 Key는 제공자와 모델을 제한하지 않습니다 (모든 업스트림과 모든 외부 공개 모델 사용 가능)", "限制:{text}": "제한: {text}", "隐藏": "숨기기", "(模型候选需先选提供商;不选则沿用当前这几项,保存后仍按模型白名单生效)": "(모델 후보는 제공자를 먼저 선택해야 합니다. 선택하지 않으면 현재 항목을 유지하며, 저장 후에도 모델 화이트리스트대로 적용됩니다)", "(行内「可用范围」):留空 = 不限制,两个都设时 按交集生效 —— 被限制的模型对这把 Key 表现为「不存在」(拉 /v1/models 也看不到它), 提供它的家不在可用列表里时请求同样被拒。": "(행의 「이용 범위」): 비워 두면 제한 없음, 둘 다 설정하면 교집합으로 적용됩니다 — 제한된 모델은 이 Key에 대해 「존재하지 않는」 것으로 취급되며(/v1/models로 조회해도 보이지 않음), 이를 제공하는 제공자가 사용 가능 목록에 없으면 요청도 거부됩니다.", "+ 新建 Key": "+ 새 Key", "; 修改后立即生效,本程序自身会自动使用第一把启用的 Key。每把 Key 可单独限制": "; 수정 후 즉시 적용되며, 이 프로그램 자체는 첫 번째 활성화된 Key를 자동으로 사용합니다. 각 Key는 개별적으로 제한할 수 있습니다", ";修改后立即生效。模型测试、助手和日活保活必须选择 Key,受限 Key 不能访问管理接口。每把 Key 可单独限制": "; 변경 사항은 즉시 적용됩니다. 모델 테스트, 어시스턴트 및 일일 활동 유지에는 Key 선택이 필요합니다. 제한된 Key는 관리 API에 접근할 수 없습니다. 각 Key에서 개별적으로 제한할 수 있는 항목은 ", ";当前必须带 Key。": "; 활성화된 Key가 필요합니다.", " AI 账号专用静态住宅 IP:Scamalytics 低欺诈评分,不限流量,首单 75 折(AGENT2API25)": " AI 계정 전용 네이티브 정적 주거용 IP: Scamalytics 사기 점수가 낮고, 트래픽 무제한, 첫 구매 25% 할인(AGENT2API25)", " 提供 AI 账号专用的原生静态住宅 IP(Static Residential ISP):IP 来自真实家庭宽带运营商,Scamalytics 低欺诈评分,每个 IP 独享,不限流量,$3.90 起。": "는 AI 계정 전용 네이티브 정적 주거용 IP(Static Residential ISP)를 제공합니다. 실제 가정용 브로드밴드 사업자의 IP를 사용하며 Scamalytics 사기 점수가 낮고, IP는 1개씩 전용, 트래픽 무제한, $3.90부터.", " 那一类由「同步 Clash Verge」 镜像进来(进入本页时会自动同步一次):名称、端口、启用都跟随 Clash, 在 Clash 里改或删,这里跟着变 —— 所以它们只读,改请到 Clash Verge 里改。": " 항목은 「Clash Verge 동기화」로 미러링됩니다 (이 페이지에 들어오면 자동으로 한 번 동기화): 이름, 포트, 활성 여부가 모두 Clash를 따르고, Clash에서 수정하거나 삭제하면 여기도 함께 바뀝니다 — 따라서 읽기 전용이며, 수정은 Clash Verge에서 하세요.", "Clash Verge": "Clash Verge", "SOCKS5 用户名和密码不能超过 255 字节": "SOCKS5 사용자 이름과 비밀번호는 255바이트를 넘을 수 없습니다", "YAML 文件": "YAML 파일", "{names} 等 {n} 条": "{names} 외 {n}건", "{n} 个出口": "엔드포인트 {n}개", "{n} 个账号在用": "사용 중인 계정 {n}개", "{n} 条订阅": "구독 {n}개", "{percent}%({received} / {total} MB)": "{percent}% ({received} / {total} MB)", "✅ {ip}": "✅ {ip}", "✅ 「{name}」出口可用{ip}{took}": "✅ 「{name}」 엔드포인트 사용 가능{ip}{took}", "✅ 内核下载完成,正在启动…": "✅ 커널 다운로드 완료, 시작 중…", "✅ 内核已手动导入到 {dir}": "✅ 커널을 {dir}에 수동으로 가져왔습니다", "✅ 已同步 Clash Verge 出口({n} 项变更)": "✅ Clash Verge 엔드포인트를 동기화했습니다 ({n}건 변경)", "✅ 连接成功": "✅ 연결 성공", "✅ 连通性测试设置已保存": "✅ 연결 테스트 설정을 저장했습니다", "❌ 「{name}」{error}": "❌ 「{name}」 {error}", "❌ 连接失败": "❌ 연결 실패", "「测试」与「批量测试」访问的目标;留空用默认(打 WorkBuddy 上游)。判据是能否拿到 HTTP 响应,不用考虑该网址返回什么内容。": "\"테스트\"와 \"선택 테스트\"가 접속하는 대상입니다. 비워 두면 기본값(WorkBuddy 업스트림)을 사용합니다. 판정 기준은 HTTP 응답을 받을 수 있는지이며, URL이 무엇을 반환하는지는 중요하지 않습니다.", "上传本地文件": "로컬 파일 업로드", "上次下载失败:{reason}": "지난 다운로드 실패: {reason}", "上次下载已停止,未下载完的临时文件已删除": "지난 다운로드가 중지되었고 미완성 임시 파일은 삭제되었습니다", "上次同步": "마지막 동기화", "上次测试": "최근 테스트", "下载": "다운로드", "下载中…": "다운로드 중…", "下载内核": "커널 다운로드", "下载已经完成,停止没赶上(内核已安装)": "중지가 미처 적용되지 못하고 다운로드가 완료되었습니다(커널 설치됨)", "下载线路": "다운로드 경로", "下载线路 / 存放目录没能写进配置(本次下载已按新设置走,重启后会恢复原值)": "경로 / 저장 폴더를 설정에 저장하지 못했습니다(이번 다운로드는 새 설정으로 진행되며 재시작 후 원래 값으로 돌아갑니다)", "不再提供": "제공 종료", "不再提醒": "다시 표시하지 않기", "为降低维护成本、资源占用及合规风险,Agent2API 已停止提供代理订阅与内置代理内核相关功能。": "유지 관리 비용, 리소스 사용량 및 규정 준수 위험을 줄이기 위해 Agent2API는 프록시 구독 및 내장 프록시 커널 기능 제공을 종료했습니다.", "之前使用订阅节点?": "구독 노드를 사용하고 있었나요?", "也可以把二维码截图直接粘贴到弹窗里(Ctrl+V)": "QR 코드 스크린샷을 대화상자에 바로 붙여넣을 수도 있습니다 (Ctrl+V)", "二维码里没有订阅链接": "QR 코드에 구독 링크가 없습니다", "从图片识别二维码": "이미지에서 QR 코드 인식", "代理主机只能填写域名或 IP 地址,不能包含协议、端口或路径": "프로토콜, 포트, 경로를 제외한 도메인 또는 IP 주소만 입력하세요", "代理主机地址无效": "프록시 호스트가 올바르지 않습니다", "代理修改已保存": "프록시 변경 사항을 저장했습니다", "代理内核": "프록시 커널", "代理内核未安装(下载内核后,被账号或服务线路引用的节点会自动开监听端口)": "프록시 커널이 설치되지 않았습니다. 다운로드하면 계정 또는 서비스 경로에서 참조하는 노드에 수신 포트가 자동으로 할당됩니다.", "代理内核未安装(在「订阅管理」里下载内核后,被账号引用的节点会自动开监听端口)": "프록시 커널이 설치되지 않았습니다 (「구독 관리」에서 커널을 다운로드하면 계정이 참조하는 노드에 자동으로 수신 포트가 할당됩니다)", "代理列表": "프록시 목록", "代理列表加载失败:{reason}": "프록시 목록 불러오기 실패: {reason}", "代理列表响应异常": "프록시 목록 응답이 비정상입니다", "代理协议只支持 HTTP 或 SOCKS5": "HTTP 또는 SOCKS5 프록시만 지원합니다", "代理名称": "프록시 이름", "代理名称不能超过 60 个字符": "프록시 이름은 60자를 넘을 수 없습니다", "代理已添加": "프록시를 추가했습니다", "代理格式无效,请按示例填写": "프록시 형식이 잘못되었습니다. 예시에 따라 입력하세요", "代理池": "프록시 풀", "代理池表": "프록시 풀 표", "代理订阅功能已下线": "프록시 구독 기능이 종료되었습니다", "代理设置": "프록시 설정", "代理设置响应异常": "프록시 설정 응답이 비정상입니다", "代理账号和密码不能超过 200 个字符": "프록시 사용자 이름과 비밀번호는 200자를 넘을 수 없습니다", "代理账号或密码的 URL 编码无效": "프록시 사용자 이름 또는 비밀번호의 URL 인코딩이 잘못되었습니다", "以下行未能识别,已留在输入框中;修正后可再次解析。": "다음 줄을 분석하지 못해 입력란에 남겨 두었습니다. 수정한 후 다시 분석하세요.", "使用情况": "사용 현황", "例如:我的机场": "예: 내 공항", "例如:香港 HTTP 出口": "예: 홍콩 HTTP 엔드포인트", "保存代理": "프록시 저장", "保存已有的代理地址,供账号与服务线路按需使用。": "기존 프록시 주소를 저장하여 계정과 서비스 경로에서 필요할 때 사용하세요.", "保持原文件": "기존 파일 유지", "停止下载": "다운로드 중지", "停止下载失败:{reason}": "다운로드 중지 실패: {reason}", "停止请求已发出,但下载还没收手,稍后再看一次进度": "중지를 요청했지만 아직 멈추지 않았습니다. 잠시 후 진행 상황을 다시 확인하세요", "先把下载的内核放到网关机器的目录,再填写文件或目录的绝对路径。目录内会查找官方包或 mihomo 二进制;远程面板不能读取浏览器电脑的路径。": "다운로드한 커널을 게이트웨이의 폴더에 넣고 절대 경로를 입력하세요. 폴더에서 공식 압축 파일이나 mihomo 바이너리를 찾습니다. 원격 패널은 브라우저 컴퓨터의 경로를 읽을 수 없습니다.", "先经过系统代理,再连接到此代理": "시스템 프록시를 먼저 거쳐 이 프록시에 연결합니다", "全选当前筛选出的出口": "현재 필터된 항목 모두 선택", "全选所有代理": "모든 프록시 전체 선택", "全选({n} 个)": "전체 선택({n}개)", "全部协议": "모든 프로토콜", "全部提供方": "모든 제공자", "全部订阅": "모든 구독", "关掉这个窗口不会中断下载(它在后台继续跑)—— 要停下就点下面的「停止下载」,未下载完的临时文件会被删除。": "이 창을 닫아도 다운로드는 중단되지 않습니다(백그라운드에서 계속 실행). 멈추려면 아래의 \"다운로드 중지\"를 누르세요. 미완성 임시 파일은 삭제됩니다.", "关闭代理后,引用它的账号回退直连。连通性以最近一次检测结果为准。": "프록시를 비활성화하면 참조하는 계정은 직접 연결로 전환됩니다. 연결 상태는 최근 테스트 결과를 기준으로 합니다.", "关闭内核": "커널 중지", "关闭内核失败:{reason}": "커널 중지 실패: {reason}", "其中 {n} 条正被账号使用 —— 删除后那些账号会回退直连。": "그중 {n}건은 계정이 사용 중입니다 — 삭제하면 해당 계정들은 직접 연결로 폴백합니다.", "其中 {n} 条正被账号使用 —— 删除后需重新设置相关账号的代理,不会自动直连。": "선택한 프록시 중 {n}개를 계정이 사용 중입니다. 삭제 후 관련 계정의 프록시를 다시 설정해야 하며 직접 연결로 자동 전환하지 않습니다.", "其中 {n} 条是同步来的只读条目(Clash / 订阅):可参与批量测试,删除会跳过": "그중 {n}개는 동기화된 읽기 전용 항목(Clash / 구독)입니다: 일괄 테스트에는 포함되고 삭제에서는 건너뜁니다", "其中 {n} 条来自 Clash 同步:可参与批量测试,删除会跳过": "그중 {n}건은 Clash 동기화 항목입니다: 일괄 테스트에는 참여하고, 삭제 시에는 건너뜁니다", "内核 {version}": "커널 {version}", "内核 {version}({asset})": "커널 {version}({asset})", "内核下载": "커널 다운로드", "内核下载失败:{reason}": "커널 다운로드 실패: {reason}", "内核二进制 / 配置 / 端口映射都会放在这里,默认 {dir};目录不存在会在下载开始时自动创建。": "커널 바이너리 / 설정 / 포트 매핑이 모두 이곳에 저장됩니다. 기본값 {dir}. 없는 폴더는 다운로드 시작 시 자동으로 생성됩니다.", "内核启动失败:{reason}": "커널 시작 실패: {reason}", "内核导入仍在后台执行,请刷新状态查看结果": "커널 가져오기가 백그라운드에서 계속 실행 중입니다. 상태를 새로 고쳐 결과를 확인하세요.", "内核导入任务排队中…": "커널 가져오기 작업 대기 중…", "内核导入失败": "커널 가져오기 실패", "内核导入状态已变化,请刷新后确认": "커널 가져오기 상태가 변경되었습니다. 새로 고쳐 확인하세요.", "内核已停止": "커널 중지됨", "内核已停止,点「启动内核」拉起": "커널이 중지되어 있습니다. 「커널 시작」을 눌러 실행하세요", "内核已关闭(订阅与端口注册表保留,「启动内核」后原位恢复)": "커널을 중지했습니다(구독과 포트 등록이 유지되며 \"커널 시작\" 후 원래 포트로 복원됩니다)", "内核已导入,但启动失败:{reason}": "커널을 가져왔지만 시작하지 못했습니다: {reason}", "内核已导入,但存放目录未能保存,重启网关后会恢复原位置": "커널을 가져왔지만 저장 폴더를 기록하지 못했습니다. 게이트웨이를 다시 시작하면 이전 위치로 돌아갑니다.", "内核已手动关闭": "커널 수동 중지됨", "内核已手动关闭(点「启动内核」拉起)": "커널이 수동으로 중지되어 있습니다. 「커널 시작」을 눌러 실행하세요", "内核文件必须非空且不超过 {max} MiB": "커널 파일은 비어 있지 않아야 하며 {max} MiB를 넘을 수 없습니다", "内核未安装": "커널 미설치", "内核正在启动…": "커널 시작 중…", "内核正在执行操作,请稍后重试": "커널 작업이 진행 중입니다. 잠시 후 다시 시도하세요.", "内核没有在超时内停下来": "제한 시간 안에 커널이 멈추지 않았습니다", "内核目录没能删掉(可能仍被进程占用),稍后重试一次": "커널 폴더를 삭제하지 못했습니다(프로세스가 아직 사용 중일 수 있습니다). 잠시 후 다시 시도하세요.", "内核运行中": "커널 실행 중", "出口 IP {ip}": "출구 IP {ip}", "出口可用": "프록시 사용 가능", "出口测试网址": "연결 테스트 URL", "删除代理": "프록시 삭제", "删除内核": "커널 삭제", "删除内核失败:{reason}": "커널 삭제 실패: {reason}", "删除订阅": "구독 삭제", "刷新中…": "새로 고치는 중…", "刷新失败:{reason}": "새로 고침 실패: {reason}", "功能调整通知": "기능 변경 안내", "勾选「{name}」": "「{name}」 선택", "单个添加": "개별 추가", "去获取": "받으러 가기", "另有 {n} 条是同步来的只读条目(Clash / 订阅),将跳过。": "추가로 {n}개는 동기화된 읽기 전용 항목(Clash / 구독)이라 건너뜁니다.", "另有 {n} 条来自 Clash Verge 同步,将跳过(请到 Clash Verge 里删)。": "그 외 {n}건은 Clash Verge 동기화 항목이라 건너뜁니다 (Clash Verge에서 삭제하세요).", "只读:在 Clash Verge 里改": "읽기 전용: Clash Verge에서 수정하세요", "只读:在「订阅管理」里改": "읽기 전용: 「구독 관리」에서 수정하세요", "同步 Clash Verge": "Clash Verge 동기화", "同步中…": "동기화 중…", "同步失败:{reason}": "동기화 실패: {reason}", "名字与端口在 Clash Verge 里改;启用可在本页关闭": "이름과 포트는 Clash Verge에서 변경하세요. 사용 여부는 이 페이지에서 끌 수 있습니다", "名字与端口跟随订阅与内核;启用可在本页关闭": "이름과 포트는 구독과 커널을 따릅니다. 사용 여부는 이 페이지에서 끌 수 있습니다", "后台继续": "백그라운드에서 계속", "启动内核": "커널 시작", "启用订阅「{name}」": "구독 「{name}」 사용", "启用这条代理": "이 프록시 활성화", "启用这条订阅": "이 구독 사용", "启用(禁用后,使用此代理的账号请求将失败;仍可测试)": "활성화 (비활성화하면 이 프록시를 사용하는 계정의 요청이 실패합니다. 테스트는 가능)", "启用(禁用的条目不会被账号使用,被引用时账号回退直连;仍可测试)": "활성 (비활성 항목은 계정이 사용하지 않으며, 참조 중이면 계정은 직접 연결로 폴백합니다. 테스트는 계속 가능)", "启用(禁用的订阅不参与内核同步,它的节点会从代理池移除)": "사용 (사용하지 않는 구독은 커널 동기화에 포함되지 않으며, 해당 노드는 프록시 풀에서 제거됩니다)", "图片读取失败": "이미지 읽기 실패", "地址": "주소", "地址不完整": "주소 불완전", "地址由网关所在设备访问;本机代理需运行在该设备上。": "이 주소는 게이트웨이가 있는 기기에서 접근합니다. 로컬 프록시는 해당 기기에서 실행되어야 합니다.", "复制下载链接": "다운로드 링크 복사", "失败 {n} 个({reason})": "실패 {n}개 ({reason})", "存放位置": "저장 위치", "存放位置 {dir}": "저장 위치 {dir}", "存放位置要填绝对路径,例如 D:\\proxy-kernel": "저장 위치는 절대 경로여야 합니다(예: D:\\proxy-kernel)", "家庭宽带": "가정용 브로드밴드", "导入内核": "커널 가져오기", "导入并替换": "가져와서 교체", "导入来源": "가져오기 소스", "将替换现有代理内核,运行中的连接会短暂中断。订阅、账号引用与端口映射会保留。是否继续?": "기존 프록시 커널을 교체하면 현재 연결이 잠시 중단됩니다. 구독, 계정 참조 및 포트 매핑은 유지됩니다. 계속할까요?", "展开其余 {n} 个 ▾": "나머지 {n}개 펼치기 ▾", "已下载?手动导入": "이미 다운로드했나요? 수동 가져오기", "已保存。重启内核后,新分配的节点端口才会按新范围来。": "저장되었습니다. 커널을 재시작하면 새로 할당되는 노드 포트가 새 범위를 따릅니다.", "已保存「{name}」": "「{name}」을(를) 저장했습니다", "已停止下载内核(未下载完的临时文件已删除)": "커널 다운로드를 중지했습니다(미완성 임시 파일 삭제됨)", "已删除 {n} 个代理": "프록시 {n}개를 삭제했습니다", "已删除「{name}」": "「{name}」을(를) 삭제했습니다", "已删除内核(订阅与账号引用保留,重新下载后会重新分配端口)": "커널을 삭제했습니다(구독과 계정 참조는 유지되며, 다시 다운로드하면 포트가 재할당됩니다)", "已删除内核(订阅与账号引用保留;有文件仍被占用,将在下次启动时清理)": "커널을 삭제했습니다(구독과 계정 참조는 유지됩니다. 사용 중인 파일이 있어 다음 실행 시 정리됩니다)", "已刷新「{name}」,正在同步节点…": "「{name}」을(를) 새로 고쳤습니다. 노드 동기화 중…", "已启用 {n} 个": "{n}개 활성화", "已启用「{name}」": "「{name}」을(를) 활성화했습니다", "已启用「{name}」,正在补建监听端口(内核重建中)": "\"{name}\"을(를) 사용하도록 설정했습니다. 수신 포트를 다시 만드는 중입니다(커널 재시작 중)", "已在本页禁用(打开开关即恢复)": "이 페이지에서 사용 중지했습니다(스위치를 켜면 되돌아갑니다)", "已新增「{name}」": "「{name}」을(를) 추가했습니다", "已新增订阅「{name}」,内核正在同步节点…": "구독 「{name}」을(를) 추가했습니다. 커널이 노드를 동기화하는 중…", "已是最新,没有需要同步的变更": "이미 최신 상태이며 동기화할 변경 사항이 없습니다", "已有手动配置不受此次调整影响。你仍可添加 HTTP / SOCKS5 地址,并使用连通性测试。": "기존 수동 설정은 영향을 받지 않습니다. HTTP / SOCKS5 주소 추가와 연결 테스트는 계속 사용할 수 있습니다.", "已有手动配置和 Clash Verge 端点引用不受影响。仍可添加 HTTP / SOCKS5 地址、同步 Clash Verge 端点并测试连通性;Clash Verge 由你自行安装和运行。": "기존 수동 설정과 Clash Verge 엔드포인트 참조는 영향을 받지 않습니다. HTTP / SOCKS5 주소 추가, Clash Verge 동기화 및 연결 테스트는 계속 사용할 수 있습니다. Clash Verge는 별도로 설치하고 실행하세요.", "已有账号引用它,但内核还没把监听端口补建出来 —— 稍等片刻,或重新启用这条节点": "계정이 이미 이 노드를 참조하고 있지만 커널이 아직 수신 포트를 만들지 않았습니다 — 잠시 기다리거나 이 노드를 다시 활성화하세요", "已有账号或服务线路引用它,监听端口尚未就绪;请稍等,或检查内核状态": "계정 또는 서비스 경로가 이 노드를 참조하고 있지만 수신 포트가 아직 준비되지 않았습니다. 잠시 기다리거나 커널 상태를 확인하세요.", "已禁用「{name}」": "「{name}」을(를) 비활성화했습니다", "已禁用「{name}」,监听端口正在关闭(内核重建中)": "\"{name}\"을(를) 사용 중지했습니다. 수신 포트를 닫는 중입니다(커널 재시작 중)", "已禁用(未开监听端口)": "사용 중지됨(수신 포트 없음)", "已移除的订阅": "제거된 구독", "已识别 {n} 条 · 已勾选 {selected} 条": "분석됨 {n}개 · 선택됨 {selected}개", "已识别 {n} 条代理,跳过 {duplicates} 条重复地址": "프록시 {n}개를 분석하고 중복 주소 {duplicates}개를 건너뛰었습니다", "已识别订阅链接": "구독 링크를 인식했습니다", "已选择「{name}」,保存后导入": "\"{name}\" 선택됨 - 저장 시 가져옵니다", "已配置认证": "인증 설정됨", "当前客户端不支持手动导入内核,请更新或刷新页面": "이 클라이언트는 커널 수동 가져오기를 지원하지 않습니다. 업데이트하거나 페이지를 새로 고치세요.", "当前没有正在进行的下载": "진행 중인 다운로드가 없습니다", "当前环境不支持代理池(桥接方法缺失)": "현재 환경에서는 프록시 풀을 지원하지 않습니다 (브리지 메서드 누락)", "当前环境不支持代理测试(桥接方法缺失)": "현재 환경에서는 프록시 테스트를 지원하지 않습니다 (브리지 메서드 누락)", "当前环境不支持代理设置(桥接方法缺失)": "이 환경은 프록시 설정을 지원하지 않습니다(브리지 메서드 없음)", "当前环境不支持同步(桥接方法缺失)": "현재 환경에서는 동기화를 지원하지 않습니다 (브리지 메서드 누락)", "当前环境不支持启停(桥接方法缺失)": "이 환경에서는 사용/중지 전환을 지원하지 않습니다(브리지 메서드 없음)", "当前环境不支持订阅(桥接方法缺失)": "현재 환경에서는 구독을 지원하지 않습니다 (브리지 메서드 없음)", "当前环境不支持选择文件夹,直接填写绝对路径即可": "이 환경에서는 폴더 선택을 열 수 없습니다. 절대 경로를 직접 입력하세요", "当前线路不可用:{error};重新选一条或切回直连": "현재 경로를 사용할 수 없습니다: {error}. 다른 경로를 선택하거나 직접 연결로 되돌리세요", "我知道了": "확인", "所属订阅已删除,这条节点不会再分配端口 —— 可以删除它": "소속 구독이 삭제되어 이 노드에는 더 이상 포트가 할당되지 않습니다 — 삭제해도 됩니다", "手动下载官方内核": "공식 커널 수동 다운로드", "手动代理与 Clash Verge 同步仍然保留": "수동 프록시와 Clash Verge 동기화는 계속 사용 가능", "手动代理仍然保留": "수동 프록시는 계속 사용 가능", "手动填写的地址与端口": "직접 입력한 주소와 포트", "手动导入内核": "커널 수동 가져오기", "打开文件夹选择框失败:{reason}": "폴더 선택 창을 열지 못했습니다: {reason}", "批量删除": "일괄 삭제", "批量删除代理": "프록시 일괄 삭제", "批量测试": "일괄 테스트", "批量测试完成:{ok} 个可用、{failed} 个失败(共 {total} 个)": "일괄 테스트 완료: {ok}개 사용 가능, {failed}개 실패 (총 {total}개)", "批量测试完成:{ok} 个可用(共 {total} 个)": "일괄 테스트 완료: {ok}개 사용 가능 (총 {total}개)", "批量测试({n})": "일괄 테스트 ({n})", "批量添加": "일괄 추가", "批量添加响应异常,请刷新代理列表确认后再试": "일괄 추가 응답이 비정상입니다. 프록시 목록을 새로 고쳐 저장 결과를 확인한 후 다시 시도하세요", "批量添加完成:新增 {added} 条,重复 {duplicates} 条,失败 {failed} 条": "일괄 추가 완료: 추가 {added}개, 중복 {duplicates}개, 실패 {failed}개", "批量添加({n})": "일괄 추가 ({n})", "按协议筛选": "프로토콜별 필터", "按提供方筛选": "제공자별 필터", "按来源筛选": "출처로 필터", "按需下载(约 20-40MB)": "필요할 때 다운로드 (약 20-40MB)", "控制端口 {port} · {n} 个节点监听器": "제어 포트 {port} · 노드 리스너 {n}개", "搜索代理": "프록시 검색", "搜索名称 / 地址 / 端口": "이름 / 주소 / 포트 검색", "搜索节点": "노드 검색", "支持官方压缩包和解压后的内核二进制;只接受当前版本,SHA-256 校验不通过时不会替换现有内核。": "공식 압축 파일과 압축을 푼 커널 바이너리를 지원합니다. 현재 버전만 허용하며 SHA-256 확인에 실패하면 기존 커널을 교체하지 않습니다.", "支持手动地址与 Clash Verge 端点同步,不接管代理服务的安装与运行。": "수동 주소와 Clash Verge 엔드포인트 동기화를 지원하며, 프록시 서비스의 설치 및 실행은 관리하지 않습니다.", "文件或目录路径": "파일 또는 폴더 경로", "文件读取失败": "파일을 읽지 못했습니다", "新增代理": "프록시 추가", "新增方式": "추가 방식", "新增订阅": "구독 추가", "新解析的代理默认使用非直连": "새로 분석한 프록시는 기본적으로 시스템 프록시 경유", "显示 {n} / 共 {total} 个出口": "{n} / 전체 {total}개 표시", "暂未使用": "사용 중 아님", "更新中…": "업데이트 중…", "更新出网线路已保存,正在准备监听端口": "업데이트 경로를 저장했습니다. 수신 포트를 준비하는 중입니다.", "替换代理内核": "프록시 커널 교체", "最近检测": "최근 테스트", "有 {n} 个账号正在使用它({names})—— 删除后这些账号会回退直连。": "이 프록시를 사용 중인 계정이 {n}개 있습니다 ({names}) — 삭제하면 해당 계정들은 직접 연결로 폴백합니다.", "有 {n} 个账号正在使用它({names})—— 删除后需重新设置这些账号的代理,不会自动直连。": "{n}개 계정이 사용 중입니다({names}). 삭제 후 해당 계정의 프록시를 다시 설정해야 하며 직접 연결로 자동 전환하지 않습니다.", "有 {n} 个账号正在使用它,删除后这些账号会回退直连。": "{n}개 계정이 사용 중입니다. 삭제하면 해당 계정은 직접 연결로 전환됩니다.", "有 {n} 个账号正在使用它,删除后需重新设置这些账号的代理,不会自动直连。": "{n}개 계정이 사용 중입니다. 삭제 후 해당 계정의 프록시를 다시 설정해야 하며 직접 연결로 자동 전환하지 않습니다.", "未检测": "테스트 전", "未检测到 Clash Verge:{reason}": "Clash Verge를 감지하지 못했습니다: {reason}", "未测试": "테스트 전", "未选择文件": "파일이 선택되지 않았습니다", "本地 YAML 文件": "로컬 YAML 파일", "本地文件": "로컬 파일", "本地文件不会自动更新:要更新节点,重新选择文件后保存;不重选则内容保持不变。": "로컬 파일은 자동 갱신되지 않습니다: 노드를 업데이트하려면 파일을 다시 선택해 저장하세요. 다시 선택하지 않으면 내용이 그대로 유지됩니다.", "本地文件订阅无需更新(要换内容请编辑后重新选择文件)": "로컬 파일 구독은 업데이트가 필요 없습니다(내용을 바꾸려면 편집에서 파일을 다시 선택하세요)", "本地文件订阅的内容在导入时固定:节点会由内核起成本地监听器并镜像进代理池,节点数稍等几秒由轮询刷新。": "로컬 파일 구독의 내용은 가져올 때 고정됩니다: 노드는 커널이 로컬 리스너로 실행해 프록시 풀로 미러링되며, 노드 수는 몇 초 후 폴링으로 갱신됩니다.", "本页可编辑、可删除": "이 페이지에서 편집 및 삭제 가능", "来自 Clash Verge 同步(名称、端口跟随 Clash),请到 Clash Verge 中修改;启用可在本页关闭": "Clash Verge에서 동기화됨(이름과 포트는 Clash를 따름). 변경은 Clash Verge에서 하세요. 사용 여부는 이 페이지에서 끌 수 있습니다", "正在下载内核": "커널 다운로드 중", "正在停止…": "중지 중…", "正在安装内核…": "커널 설치 중…", "正在导入…": "가져오는 중…", "正在开始…": "시작 중…", "正在校验内核…": "커널 확인 중…", "正在读取并上传文件…": "파일을 읽고 업로드하는 중…", "正在连接 GitHub…": "GitHub에 연결 중…", "此代理用于{services};删除后这些线路将不可用,不会自动回退直连。": "이 프록시는 {services}에 사용됩니다. 삭제하면 해당 경로를 사용할 수 없으며 직접 연결로 자동 폴백하지 않습니다.", "此代理用于软件 / 插件更新;删除后这些线路将不可用,不会自动回退直连。": "이 프록시는 소프트웨어 / 플러그인 업데이트에 사용됩니다. 삭제하면 해당 경로를 사용할 수 없으며 직접 연결로 자동 전환되지 않습니다.", "每次最多添加 {n} 条代理": "한 번에 최대 {n}개의 프록시를 추가할 수 있습니다", "每行一条,解析后可修改名称、设置非直连并测试,最后保存勾选的代理。": "한 줄에 하나씩 입력하세요. 분석 후 이름과 시스템 프록시 경유 설정을 변경하고 테스트한 다음 선택한 프록시를 저장할 수 있습니다.", "没有匹配「{kw}」的出口": "「{kw}」와 일치하는 항목이 없습니다", "没有匹配当前筛选的出口": "현재 필터에 맞는 항목이 없습니다", "没有可全选的代理": "전체 선택할 프록시가 없습니다", "没有可删除的条目": "삭제할 항목이 없습니다", "没能同步:{reason}": "동기화하지 못했습니다: {reason}", "测试中 {done}/{total}": "테스트 중 {done}/{total}", "测试失败:{reason}": "테스트 실패: {reason}", "测试目标网址": "테스트 대상 URL", "测试结果没能记下:{reason}": "테스트 결과를 기록하지 못했습니다: {reason}", "测试网址要以 http:// 或 https:// 开头": "테스트 URL은 http:// 또는 https:// 로 시작해야 합니다", "测试设置": "테스트 설정", "添加一个 HTTP 或 SOCKS5 地址,之后可以在账号或服务线路中选择使用。": "HTTP 또는 SOCKS5 주소를 추가하면 계정이나 서비스 경로에서 선택할 수 있습니다.", "添加单个": "프록시 하나 추가", "添加手动 HTTP / SOCKS5 地址,或同步 Clash Verge 的端点,供账号与服务线路使用。": "HTTP / SOCKS5 주소를 직접 추가하거나 Clash Verge 엔드포인트를 동기화하여 계정과 서비스 경로에서 사용하세요.", "添加第一个代理": "첫 프록시 추가", "清空已识别": "분석한 목록 비우기", "清空筛选": "필터 초기화", "确定删除「{name}」?{used}": "「{name}」을(를) 삭제할까요? {used}", "确定删除「{name}」?它在代理池里的节点会一并移除,引用这些节点的账号会回退直连。": "「{name}」을(를) 삭제하시겠습니까? 프록시 풀의 해당 노드도 함께 제거되며, 이를 참조하는 계정은 직접 연결로 되돌아갑니다.", "确定删除「{name}」?": "\"{name}\"을(를) 삭제할까요?", "确定删除已下载的内核{version}?内核文件与端口映射会被移除,订阅节点会失去监听端口(地址列显示「端口准备中」),引用它们的账号会暂时回退直连;订阅本身保留,重新下载内核后会重新分配端口。": "다운로드한 커널{version}을(를) 삭제하시겠습니까? 커널 파일과 포트 매핑이 제거되어 구독 노드는 수신 포트를 잃습니다(주소 열에「포트 준비 중」이 표시됩니다). 이를 참조하는 계정은 일시적으로 직접 연결로 폴백합니다. 구독 자체는 유지되며, 커널을 다시 다운로드하면 포트가 재할당됩니다.", "确定删除选中的 {n} 个代理?": "선택한 프록시 {n}개를 삭제할까요?", "禁用后本端不再用它(引用它的账号回退直连),并会关掉它的本地监听端口": "사용을 중지하면 이 기기에서는 더 이상 쓰지 않고(참조하는 계정은 직접 연결로 돌아갑니다) 로컬 수신 포트도 닫습니다", "禁用后本端不再用它(引用它的账号回退直连);端口在 Clash Verge 侧,不受影响": "사용을 중지하면 이 기기에서는 더 이상 쓰지 않습니다(참조하는 계정은 직접 연결로 돌아갑니다). 포트는 Clash Verge 쪽에 그대로 있으며 영향을 받지 않습니다", "立即更新": "즉시 업데이트", "端口范围必须是 1-65535 的整数": "포트 범위는 1~65535 사이의 정수여야 합니다", "第 {line} 行:{error}": "{line}번째 줄: {error}", "类型": "유형", "粘贴代理列表后点击「解析」": "프록시 목록을 붙여넣고 '분석'을 누르세요", "编辑代理": "프록시 편집", "编辑订阅": "구독 편집", "网关已切换,请重新打开代理弹窗": "게이트웨이가 변경되었습니다. 프록시 창을 다시 여세요", "网关未返回内核导入任务,请刷新状态后确认": "게이트웨이가 커널 가져오기 작업을 반환하지 않았습니다. 상태를 새로 고쳐 결과를 확인하세요.", "网关机器上的文件或目录": "게이트웨이의 파일 또는 폴더", "节点": "노드", "节点由内核起成本地监听器,镜像进代理池": "노드는 커널이 로컬 리스너로 실행하고 프록시 풀에 미러링합니다", "节点端口范围 {base}–{end}": "노드 포트 범위 {base}–{end}", "节点端口范围(结束)": "노드 포트 범위(끝)", "节点端口范围(起始)": "노드 포트 범위(시작)", "解析": "분석", "订阅": "구독", "订阅与 Clash 的出口自动镜像进来": "구독과 Clash 항목이 자동으로 미러링됩니다", "订阅内容由内核定时刷新(每 24 小时);节点数与同步状态在保存后由轮询刷新,稍等几秒。": "구독 내용은 커널이 주기적(24시간마다)으로 새로 고칩니다. 저장 후 노드 수와 동기화 상태는 폴링으로 갱신되니 몇 초만 기다려 주세요.", "订阅导入与更新、订阅节点管理,以及代理内核的下载、安装和运行。": "구독 가져오기 및 업데이트, 구독 노드 관리, 프록시 커널 다운로드, 설치 및 실행.", "订阅来源": "구독 소스", "订阅管理": "구독 관리", "订阅管理({n})": "구독 관리 ({n})", "订阅节点会在本机各占一个监听端口,从该范围里挑空闲的分配;节点多的大订阅把默认范围({base}-{end})用尽时会报「没有可用的节点端口」,这时把范围调大再重启内核。已分配出去的端口不会因改范围而失效。": "구독 노드는 로컬 리스너 포트를 하나씩 차지하며 이 범위의 비어 있는 포트에서 할당됩니다. 노드가 많은 대형 구독이 기본 범위({base}-{end})를 모두 사용하면 \"사용 가능한 노드 포트가 없습니다\"라고 표시되며, 이때 범위를 넓히고 커널을 재시작하세요. 이미 할당된 포트는 범위를 변경해도 유효합니다.", "订阅里的节点会自动同步进代理池,账号即可引用。": "구독의 노드는 자동으로 프록시 풀에 동기화되어 계정에서 참조할 수 있습니다.", "订阅里的节点会被内核起成本地监听器,镜像到代理池(账号按 id 引用,与本页其它出口同一用法)。内核只在用到订阅时按需下载(约 20-40MB),不随安装包分发。": "구독의 노드는 커널이 로컬 리스너로 실행하고 프록시 풀에 미러링합니다 (계정은 id로 참조하며, 이 페이지의 다른 항목과 동일합니다). 커널은 구독을 사용할 때만 필요할 때 다운로드되며(약 20-40MB) 설치 패키지에 포함되지 않습니다.", "订阅链接": "구독 링크", "识别中…": "인식 중…", "该节点所属订阅已删除,不会再被同步更新,可手动删除清理": "이 노드가 속한 구독이 삭제되어 더 이상 동기화되지 않습니다. 수동으로 삭제할 수 있습니다", "该节点来自订阅(名称、端口跟随订阅与内核),请在「订阅管理」里修改;启用可在本页关闭": "이 노드는 구독에서 왔습니다(이름과 포트는 구독과 커널을 따릅니다). 변경은 \"구독 관리\"에서 하세요. 사용 여부는 이 페이지에서 끌 수 있습니다", "请下载与网关平台一致的官方内核,不是浏览器所在设备的平台。": "브라우저가 실행되는 기기가 아니라 게이트웨이 플랫폼에 맞는 공식 커널을 다운로드하세요.", "请填写代理名称": "프록시 이름을 입력하세요", "请填写已有代理服务的 HTTP / SOCKS5 地址,或自行运行 Clash Verge 后同步端点,并重新为相关账号和服务线路选择代理。": "기존 프록시 서비스의 HTTP / SOCKS5 주소를 입력하거나 Clash Verge를 별도로 실행한 후 엔드포인트를 동기화하고, 관련 계정과 서비스 경로의 프록시를 다시 선택하세요.", "请填写网关机器上的绝对文件或目录路径": "게이트웨이에 있는 파일 또는 폴더의 절대 경로를 입력하세요", "请改为填写已有代理服务的 HTTP / SOCKS5 地址,并重新为相关账号和服务线路选择代理。": "기존 프록시 서비스의 HTTP / SOCKS5 주소를 입력하고 관련 계정과 서비스 경로의 프록시를 다시 선택하세요.", "请选择要导入的 YAML 文件": "가져올 YAML 파일을 먼저 선택하세요", "请选择要导入的内核文件": "가져올 커널 파일을 선택하세요", "读取失败:{reason}": "읽기 실패: {reason}", "起始端口不能大于结束端口": "시작 포트는 끝 포트보다 클 수 없습니다", "跳过 {n} 个(Clash 同步)": "건너뜀 {n}개 (Clash 동기화)", "跳过 {n} 个(同步只读条目)": "{n}개 건너뜀 (동기화된 읽기 전용 항목)", "软件 / 插件更新": "소프트웨어 / 플러그인 업데이트", "还没有代理。点右上角「+ 新增代理」手填一个,或在「订阅管理」里导入订阅节点、同步 Clash Verge 的出口。": "아직 프록시가 없습니다. 오른쪽 위 「+ 프록시 추가」로 직접 입력하거나, 「구독 관리」에서 구독 노드를 가져오거나 Clash Verge 항목을 동기화하세요.", "还没有代理。点右上角「+ 新增代理」手填一个,或点「同步 Clash Verge」把 Clash 的出口导进来。": "아직 프록시가 없습니다. 오른쪽 위 「+ 프록시 추가」로 직접 입력하거나, 「Clash Verge 동기화」를 눌러 Clash의 엔드포인트를 가져오세요.", "还没有订阅:粘贴订阅链接、导入本地 YAML 文件,或从图片识别二维码。": "아직 구독이 없습니다: 구독 링크를 붙여넣거나, 로컬 YAML 파일을 가져오거나, 이미지에서 QR 코드를 인식하세요.", "还没有账号使用它(端口只在被账号引用时才分配 —— 在账号里选它并保存后,内核会自动开端口)": "아직 이 노드를 사용하는 계정이 없습니다 (포트는 계정이 참조할 때만 할당됩니다 — 계정에서 이 노드를 선택하고 저장하면 커널이 자동으로 포트를 엽니다)", "还没有账号或服务线路使用它;在账号或更新设置中选中并保存后,内核会自动开端口": "아직 계정이나 서비스 경로에서 사용하지 않습니다. 계정 또는 업데이트 설정에서 선택하고 저장하면 커널이 자동으로 포트를 엽니다.", "这是网关机器上的安装目录,留空使用默认位置。导入会复制文件并建立版本目录,不删除原下载文件。": "게이트웨이의 설치 폴더입니다. 비워 두면 기본 위치를 사용합니다. 파일을 복사하고 버전별 폴더를 만들며 원본 다운로드 파일은 삭제하지 않습니다.", "这条在 Clash Verge 里是停用的,本页启用不生效 —— 到 Clash Verge 里打开它": "이 항목은 Clash Verge에서 사용 중지되어 있어 이 페이지에서 켜도 효과가 없습니다 — Clash Verge에서 켜세요", "这里只连接你提供的代理地址,不接管代理服务的安装与运行。": "제공한 프록시 주소에만 연결하며 프록시 서비스 설치 및 실행은 관리하지 않습니다.", "连接成功": "연결 성공", "连通性": "연결 상태", "连通性测试设置": "연결 테스트 설정", "选中的 {n} 条都是同步来的只读条目(Clash / 订阅),不能删除": "선택한 {n}개는 모두 동기화된 읽기 전용 항목(Clash / 구독)이라 삭제할 수 없습니다", "选中的 {n} 条都来自 Clash Verge 同步,不能删除(请到 Clash Verge 里删)": "선택한 {n}건은 모두 Clash Verge 동기화 항목이라 삭제할 수 없습니다 (Clash Verge에서 삭제하세요)", "选中的代理用于{services};删除后这些线路将不可用,不会自动回退直连。": "선택한 프록시는 {services}에 사용됩니다. 삭제하면 해당 경로를 사용할 수 없으며 직접 연결로 자동 폴백하지 않습니다.", "选择 YAML 文件…": "YAML 파일 선택…", "选择内核文件…": "커널 파일 선택…", "选择目录…": "폴더 선택…", "选项来自「网络代理」页(Clash Verge 同步的出口在这里可用;订阅节点要等内核起来才有端口)。选「直连」时连不上会自动借 Clash 混合端口重试一次;选定某条线路后只走它。": "옵션은 \"네트워크 프록시\" 페이지에서 가져옵니다(Clash Verge 동기화 아웃바운드는 여기서 사용 가능하고, 구독 노드는 커널이 실행된 뒤에야 포트가 생깁니다). \"직접 연결\"은 연결 실패 시 Clash 혼합 포트로 한 번 재시도하며, 경로를 지정하면 그 경로만 사용합니다.", "通过代理访问该网址,检查是否能收到 HTTP 响应。留空沿用网关默认值。": "프록시를 통해 이 URL에 접근하여 HTTP 응답을 받을 수 있는지 확인합니다. 비워 두면 게이트웨이 기본값을 사용합니다.", "部分测试结果没能记下:{reason}": "일부 테스트 결과를 기록하지 못했습니다: {reason}", "重启内核": "커널 재시작", "重新选择文件…": "파일 다시 선택…", "需要干净的出口?": "깨끗한 아웃바운드가 필요하신가요?", "需要用户名和密码(可选)": "사용자 이름과 비밀번호 필요(선택)", "非直连": "시스템 프록시 경유", "非直连代理": "시스템 프록시 경유 연결", "非直连会先经过网关所在设备的系统代理,再连接到此代理;系统代理不可用时不会改走直连。": "게이트웨이 기기의 시스템 프록시를 먼저 거쳐 이 프록시에 연결합니다. 시스템 프록시를 사용할 수 없으면 직접 연결로 전환하지 않습니다.", "首次购买使用优惠码 AGENT2API25 享 75 折。": "첫 구매 시 코드 AGENT2API25로 25% 할인됩니다.", "+ 新增代理": "+ 프록시 추가", "+ 新增订阅": "+ 구독 추가", ",": ", ", " 或 ": " 또는 ", "Anthropic SDK 会自动携带版本头;手写 Messages 请求可使用 2023-06-01。/v1/models 收到该头或 x-api-key 时返回 Anthropic 列表形态。": "Anthropic SDK는 버전 헤더를 자동 추가합니다. 직접 작성한 Messages 요청은 2023-06-01을 사용할 수 있습니다. /v1/models는 이 헤더나 x-api-key가 있으면 Anthropic 목록 형식을 반환합니다.", "Anthropic 业务错误结构示例": "Anthropic 업무 오류 구조 예시", "Anthropic 官方 SDK / Claude Code 使用的根地址:": "공식 Anthropic SDK / Claude Code용 루트 주소: ", "Anthropic 标准要求显式填写正整数。网关对缺失或无效值补 8192,但上游模型的实际预算仍可能更低。": "Anthropic 표준은 양의 정수를 명시해야 합니다. 게이트웨이는 누락 또는 무효 값을 8192로 보완하지만 실제 상위 모델 예산은 더 낮을 수 있습니다.", "Antigravity 支持宽高比 1:1、2:3、3:2、3:4、4:3、4:5、5:4、9:16、16:9、21:9,尺寸会映射到原生 1K / 2K / 4K 档。请求最长边 ≤1792 为 1K,1793–3072 为 2K,3073–4096 为 4K;超过 4096 会被该提供商拒绝。": "Antigravity 비율은 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9이며 크기를 기본 1K / 2K / 4K 단계로 매핑합니다. 긴 변 ≤1792는 1K, 1793–3072는 2K, 3073–4096은 4K이며 4096 초과는 해당 제공업체가 거부합니다.", "Antigravity 的 size=auto 生成使用 1:1、1K;参考图编辑使用 1K 且不强制正方形。模型版本可能有更严格的输出限制;宽高比需接近支持值,不能任意指定像素尺寸。": "Antigravity size=auto 생성은 1:1, 1K이며 참조 편집은 정사각형을 강제하지 않는 1K입니다. 모델 버전에 따라 더 엄격한 제한이 있으며 비율이 지원 값에 가까워야 하고 임의 픽셀 크기는 지정할 수 없습니다.", "Base URL 填进客户端的「API 地址 / Base URL」栏;对话协议按客户端支持的类型三选一(Chat Completions / Responses / Anthropic Messages),三者共用同一套模型与账号池,可随时切换;鉴权用「网关 Key」页里任一启用 Key。": "Base URL은 클라이언트의 「API 주소 / Base URL」란에 입력하고, 대화 프로토콜은 클라이언트가 지원하는 유형에 따라 세 가지(Chat Completions / Responses / Anthropic Messages) 중 하나를 고르면 됩니다. 세 가지 모두 동일한 모델과 계정 풀을 공유하므로 언제든 전환할 수 있습니다. 인증에는 「게이트웨이 키」 페이지의 활성화된 Key를 아무거나 사용하세요.", "Chat 流式成功通常以 data: [DONE] 收尾。需要同时处理 delta.content、思考字段和 delta.tool_calls;工具参数可能跨多个增量拼接。": "정상 Chat 스트림은 보통 data: [DONE]으로 끝납니다. delta.content, 추론 필드, delta.tool_calls를 처리하고 여러 델타에 나뉜 도구 인수를 조립해야 합니다.", "Chat、Responses 和图片接口通常返回 error 对象,其中 message 是可读说明,type 是错误类别,code 与 upstream_code 按情况附带。Anthropic 业务错误使用 type=error 的信封;鉴权中间件、无效 JSON 或网关层错误也可能返回通用 error 形态。": "Chat, Responses, 이미지 API는 보통 error 객체를 반환합니다. message는 설명, type은 분류, code와 upstream_code는 선택 항목입니다. Anthropic 업무 오류는 type=error 형식이지만 인증 미들웨어, 잘못된 JSON 또는 게이트웨이 오류는 일반 error 형식일 수도 있습니다.", "Claude Code / Anthropic SDK(token 计数:/v1/messages/count_tokens)": "Claude Code / Anthropic SDK(token 카운트: /v1/messages/count_tokens)", "Claude Code / Anthropic SDK;模型与账号池和 OpenAI 入口共用。": "Claude Code / Anthropic SDK. OpenAI 엔드포인트와 모델 및 계정 풀을 공유합니다.", "Codex / 新版 OpenAI SDK;无状态转发,历史由客户端携带。": "Codex / 최신 OpenAI SDK. 상태를 저장하지 않으므로 클라이언트가 이력을 전송합니다.", "GET /health 返回 status=ok 或 degraded。公网安全模式只返回简化探活信息;HTTP 200 或 status=ok 不代表所有提供商在线、账号有额度或图片模型可调用。": "GET /health는 status=ok 또는 degraded를 반환합니다. 공용 네트워크 보안 모드는 간단한 생존 정보만 노출합니다. HTTP 200이나 status=ok는 모든 제공업체 연결, 계정 할당량 또는 이미지 모델 호출 가능성을 보장하지 않습니다.", "GET /health、GET /v1/models 和网关临时图片下载不强制检查 Key。模型清单可在配 Key 前读取,但这不能证明 Key 正确;应以携带该 Key 的实际业务请求为准。": "GET /health, GET /v1/models 및 게이트웨이 임시 이미지 다운로드는 Key를 필수로 검사하지 않습니다. Key 설정 전 모델 목록을 읽을 수 있어도 Key가 올바른 것은 아닙니다. 해당 Key를 사용한 실제 보호 요청으로 확인하세요.", "HTTP(S) 参考图由网关服务器下载,不携带网关 Key 或提供商凭证。外链必须能被网关无额外请求头访问;本机、内网、带用户名密码或不安全重定向地址会被拒绝。受保护图片建议直接上传文件。": "HTTP(S) 참조는 게이트웨이가 Key나 제공업체 자격 증명 없이 다운로드합니다. 외부 링크는 추가 헤더 없이 접근 가능해야 합니다. 로컬, 내부망, 사용자명·암호 포함 또는 안전하지 않은 리디렉션은 거부됩니다. 보호 이미지는 파일로 직접 업로드하세요.", "JSON 图片引用编辑请求": "JSON 이미지 참조 편집 요청", "JSON 图片生成请求": "JSON 이미지 생성 요청", "JSON 的 images 是对象数组,每项只能包含 image_url。接受完整 HTTP(S) URL、data:image/...;base64,...,或先前响应返回的完整网关临时图片链接;不接受裸 base64、相对路径、file_id 或本地文件路径。": "JSON images는 image_url만 포함하는 객체 배열입니다. 완전한 HTTP(S) URL, data:image/...;base64,... 또는 이전 응답의 완전한 게이트웨이 임시 URL을 받습니다. 순수 base64, 상대 경로, file_id, 로컬 경로는 받지 않습니다.", "JSON 请求使用 application/json。图片编辑上传文件时使用 multipart/form-data;curl -F 会自动生成 boundary,不要手动覆盖此请求头。": "JSON은 application/json, 이미지 편집 파일 업로드는 multipart/form-data를 사용합니다. curl -F가 boundary를 자동 생성하므로 이 헤더를 수동으로 덮어쓰지 마세요.", "Key 缺失、无效、停用,或上游认证失败。网关未收到 Key 时返回 model_api_key_required,无效 Key 返回 invalid_api_key;请检查请求头与「网关 Key」页。": "Key 누락, 무효, 비활성화 또는 상위 인증 실패입니다. 게이트웨이는 Key가 없으면 model_api_key_required, 무효하면 invalid_api_key를 반환합니다. 요청 헤더와 「게이트웨이 키」 페이지를 확인하세요.", "Key 缺失、无效、停用,或上游认证失败。网关鉴权失败通常为 invalid_api_key;检查请求头与「网关 Key」页,而不是仅重拉模型列表。": "Key 누락, 무효, 비활성화 또는 상위 인증 실패입니다. 게이트웨이 인증 실패는 보통 invalid_api_key입니다. 모델 목록 갱신뿐 아니라 요청 헤더와 「게이트웨이 키」 페이지를 확인하세요.", "LLM 请求": "LLM 요청", "Messages 响应结构": "Messages 응답 구조", "Messages 请求": "Messages 요청", "ModelScope 不支持 style、mask 与 input_fidelity;quality 仅接受省略、auto 或 standard,background 仅接受省略、auto 或 opaque,moderation 仅接受省略或 auto。风格与修改目标请写入 prompt。": "ModelScope는 style, mask, input_fidelity를 지원하지 않습니다. quality는 생략, auto, standard만, background는 생략, auto, opaque만, moderation은 생략 또는 auto만 허용합니다. 스타일과 편집 목표는 prompt에 작성하세요.", "ModelScope 使用官方异步任务接口,创建后只查询同一任务,不会为了等待结果重新提交。单次 n=1;size 可省略、设为 auto,或指定边长 64–2048 的 WIDTHxHEIGHT,具体型号可能进一步限制。": "ModelScope는 공식 비동기 작업 API를 사용합니다. 생성 후 같은 작업만 조회하고 다시 제출하지 않습니다. n=1이며 size는 생략, auto 또는 변 길이 64–2048의 WIDTHxHEIGHT를 사용할 수 있습니다. 모델별 추가 제한이 있을 수 있습니다.", "OpenAI Python SDK 图片示例": "OpenAI Python SDK 이미지 예시", "OpenAI SDK 的 base_url 填「接口地址」章节中以 /v1 结尾的 Base URL,不要填完整的 /chat/completions。Anthropic 官方 SDK 与 Claude Code 的 ANTHROPIC_BASE_URL 填网关根地址,不带 /v1;它们会自行追加 /v1/messages。其他客户端是否自动追加 /v1,以其地址栏说明为准。": "OpenAI SDK의 base_url은 「인터페이스 주소」 장의 /v1로 끝나는 Base URL로 설정하고 전체 /chat/completions URL을 넣지 마세요. 공식 Anthropic SDK와 Claude Code의 ANTHROPIC_BASE_URL은 /v1 없는 게이트웨이 루트로 설정합니다. 이들은 /v1/messages를 자동 추가합니다. 다른 클라이언트는 주소 입력란 설명에 따라 /v1 추가 여부를 확인하세요.", "OpenAI SDK 的 base_url 填上方以 /v1 结尾的 Base URL,不要填完整的 /chat/completions。Anthropic 官方 SDK 与 Claude Code 的 ANTHROPIC_BASE_URL 填网关根地址,不带 /v1;它们会自行追加 /v1/messages。其他客户端是否自动追加 /v1,以其地址栏说明为准。": "OpenAI SDK의 base_url은 위의 /v1로 끝나는 Base URL로 설정하고 전체 /chat/completions URL을 넣지 마세요. 공식 Anthropic SDK와 Claude Code의 ANTHROPIC_BASE_URL은 /v1 없는 게이트웨이 루트로 설정합니다. 이들은 /v1/messages를 자동 추가합니다. 다른 클라이언트는 주소 입력란 설명에 따라 /v1 추가 여부를 확인하세요.", "OpenAI 兼容客户端使用此地址;Anthropic 官方 SDK 使用下方说明中的网关根地址。": "OpenAI 호환 클라이언트는 이 주소를 사용합니다. 공식 Anthropic SDK는 아래에 설명된 게이트웨이 루트 주소를 사용합니다.", "OpenAI 新协议(Codex、新版 SDK)": "OpenAI 신규 프로토콜(Codex, 최신 SDK)", "Python:生成、编辑并保存图片": "Python: 이미지 생성, 편집 및 저장", "Responses 使用 function_call / function_call_output 配对,Anthropic 使用 tool_use / tool_result 配对。协议转换会处理这些格式,但不会替客户端执行自定义函数。上游原生搜索等服务端工具是否可用取决于提供商,不能当成网关统一能力。": "Responses는 function_call / function_call_output, Anthropic은 tool_use / tool_result를 매칭합니다. 형식은 변환되지만 게이트웨이가 사용자 정의 함수를 대신 실행하지는 않습니다. 검색 같은 상위 서비스 기본 도구는 제공업체별 지원이며 게이트웨이 공통 기능이 아닙니다.", "Responses 响应结构": "Responses 응답 구조", "Responses 请求": "Responses 요청", "SDK 示例使用的环境变量": "SDK 예시용 환경 변수", "Token 估算响应": "토큰 추정 응답", "Token 数量估算": "토큰 수 추정", "Token 自动续期": "토큰 자동 갱신", "WorkBuddy 走官方图片接口:size 省略或设为 auto 时按 1024x1024 请求;该通道不接受 quality、style、background 与 moderation,请把风格与质量要求写进 prompt。参考图以 data URL 内联在 JSON 请求里发送(不是 multipart),模型 id 由上游目录下发,换版本时以 /v1/models 为准。": "WorkBuddy는 공식 이미지 API를 사용합니다. size를 생략하거나 auto로 지정하면 1024x1024로 요청합니다. 이 경로는 quality, style, background, moderation을 받지 않으므로 스타일과 품질 요구는 prompt에 적어 주세요. 참조 이미지는 data URL로 JSON 요청에 인라인으로 전송되며(multipart가 아님), 모델 id는 상류 카탈로그에서 내려옵니다. 버전이 바뀌면 /v1/models를 확인하세요.", "base64 图片响应结构": "base64 이미지 응답 구조", "chat 用于三种对话入口;image 用于 /v1/images/generations 和 /v1/images/edits。不要把图片模型提交给对话入口。": "chat은 세 대화 API, image는 /v1/images/generations 및 /v1/images/edits용입니다. 이미지 모델을 대화 API에 보내지 마세요.", "count_tokens 在本地估算,不调用上游 tokenizer;返回 input_tokens 和 estimated=true。数值用于上下文预算,不用于精确计费,尤其不应当作图片的真实 Token 用量。": "count_tokens는 상위 tokenizer를 호출하지 않고 로컬에서 추정하며 input_tokens와 estimated=true를 반환합니다. 컨텍스트 예산용이며 정확한 과금, 특히 이미지의 실제 토큰 사용량에 쓰지 마세요.", "curl -F 自动生成 multipart boundary。不要额外设置 Content-Type: application/json 或手写无 boundary 的 multipart/form-data;prompt 使用 --form-string 可避免特殊字符被当作文件上传。": "curl -F가 multipart boundary를 자동 생성합니다. Content-Type: application/json이나 boundary 없는 multipart/form-data를 따로 설정하지 마세요. prompt는 --form-string으로 보내면 특수 문자를 파일 업로드로 오인하지 않습니다.", "response_format=b64_json 时返回不带 data URL 前缀的标准 base64。解码为二进制后保存;网页展示时自行加对应 MIME 类型前缀。": "response_format=b64_json은 data URL 접두사 없는 표준 base64를 반환합니다. 바이너리로 디코딩해 저장하고 웹 표시 시 알맞은 MIME 접두사를 붙이세요.", "response_format=url 不保证永久地址;网关临时链接与 AI 助手会话中的图片存储是两套机制,不能混用接口或有效期。": "response_format=url은 영구 주소를 보장하지 않습니다. 게이트웨이 임시 링크와 어시스턴트 세션 이미지 저장은 별도이므로 API나 수명을 섞어 쓰지 마세요.", "response_format=url 时返回。可能是提供商签名链接,也可能是网关临时下载链接;应直接使用返回值,不要自行拼下载 id。": "response_format=url에서 반환됩니다. 제공업체 서명 URL 또는 게이트웨이 임시 링크일 수 있습니다. 반환값을 그대로 쓰고 다운로드 id를 직접 만들지 마세요.", "stream 默认 false;true 返回 Anthropic 事件流。stop_sequences 映射为停止序列,是否支持取决于上游。": "stream 기본값은 false, true는 Anthropic 이벤트를 반환합니다. stop_sequences는 중지 시퀀스로 매핑되며 지원은 상위 서비스가 결정합니다.", "usage 的 prompt_tokens、completion_tokens、total_tokens 表示用量,不等于统一货币价格。上游未提供时可能缺失或为 0。": "usage의 prompt_tokens, completion_tokens, total_tokens는 사용량이며 공통 화폐 가격이 아닙니다. 상위 서비스가 제공하지 않으면 생략되거나 0일 수 있습니다.", "✓ 支持 · ✗ 不支持 · — 无此概念 · ? 未声明": "✓ 지원 · ✗ 미지원 · — 해당 없음 · ? 미선언", "。一把启用的 Key 都没有时不鉴权(默认网关只监听 127.0.0.1;在设置页开启「局域网访问」后监听所有网卡,鉴权与安全闸门随之启用)。": "를 담아 보내면 됩니다. 활성화된 Key가 하나도 없으면 인증하지 않습니다(기본 게이트웨이는 127.0.0.1만 수신하며, 설정 페이지에서 「LAN 접근」을 켜면 모든 네트워크 인터페이스를 수신하고 인증과 보안 게이트도 함께 활성화됩니다).", "三种对话协议的流式错误需要检查事件内容与正常结束标记;HTTP 200 本身不足以证明成功。图片接口仅返回非流式 JSON。": "세 대화 프로토콜 모두 스트림 이벤트와 정상 종료 표시를 확인해야 합니다. HTTP 200만으로 성공을 판단할 수 없습니다. 이미지 API는 비스트리밍 JSON만 반환합니다.", "上一章": "이전 장", "上传一张或多张参考图,并用提示词描述保留内容与修改目标。": "하나 이상의 참조 이미지를 올리고 보존할 내용 및 수정 목표를 프롬프트에 설명하세요.", "上传一张本地参考图": "로컬 참조 이미지 하나 업로드", "上传多张参考图": "여러 참조 이미지 업로드", "上传本地文件推荐 multipart/form-data;已经有图片 URL 或 base64 时可发送 application/json。除参考图字段外,参数与图片生成相同。": "로컬 파일은 multipart/form-data, 이미지 URL이나 base64가 있으면 application/json을 사용합니다. 참조 필드 외 매개변수는 이미지 생성과 같습니다.", "下一章": "다음 장", "下表是网关接受的参数范围,不是所有提供商都支持的范围。生成与编辑共用这些字段,具体上游可能进一步拒绝数量、质量、风格、背景或尺寸。": "표는 게이트웨이가 받는 매개변수 범위이며 모든 제공업체의 공통 지원 범위가 아닙니다. 생성과 편집은 필드를 공유하지만 상위 서비스가 수, 품질, 스타일, 배경, 크기를 더 제한할 수 있습니다.", "下载并保存网关临时图片": "게이트웨이 임시 이미지 다운로드 및 저장", "下载返回原始图片二进制及 image/png、image/jpeg 或 image/webp Content-Type,不是 JSON。不存在或过期返回 404,响应使用 private, no-store 与 nosniff。": "JSON이 아닌 이미지 바이너리와 image/png, image/jpeg 또는 image/webp Content-Type을 반환합니다. 없거나 만료되면 404이며 응답은 private, no-store 및 nosniff를 사용합니다.", "不强制鉴权;仅用于确认网关可访问,不保证模型或额度可用。": "인증은 필수가 아닙니다. 게이트웨이 연결만 확인하며 모델이나 할당량 가용성은 보장하지 않습니다.", "不强制鉴权;携带有效 Key 可查看该 Key 获准使用的模型。": "인증은 필수가 아닙니다. 유효한 Key를 보내면 해당 Key에 허용된 모델로 필터링됩니다.", "不携带 Anthropic 相关头时,模型接口返回 OpenAI 风格的 object=list、data 数组和 meta 摘要;携带 anthropic-version 或 x-api-key 时,返回 data、has_more、first_id、last_id,并保留能力扩展字段。": "Anthropic 관련 헤더가 없으면 OpenAI 형식의 object=list, data 배열, meta 요약을 반환합니다. anthropic-version 또는 x-api-key가 있으면 data, has_more, first_id, last_id를 반환하면서 기능 확장 필드를 유지합니다.", "不支持依赖服务端状态的 previous_response_id、conversation、托管提示词 prompt,以及 background=true;请由客户端保存并回传历史,不要调用未实现的 Responses 查询或删除接口。": "서버 상태가 필요한 previous_response_id, conversation, 호스팅 prompt 및 background=true는 지원하지 않습니다. 클라이언트에서 이력을 저장하고 다시 보내며 미구현 Responses 조회 또는 삭제 API를 호출하지 마세요.", "不要把 base64 图片塞回对话文本或日志,也不要将“请求超时”理解为“没有扣费”。如需连续编辑,保存结果文件后再作为下一次 image 上传。": "이미지 base64를 대화 텍스트나 로그에 넣지 말고 시간 초과를 미과금으로 해석하지 마세요. 연속 편집은 결과를 저장한 뒤 다음 image로 다시 업로드합니다.", "业务请求的 model 值。owned_by 表示目录条目的归属,不保证每次请求都由该提供商承载;同名模型与映射可能有多个路由。": "업무 요청의 model 값입니다. owned_by는 목록 항목의 소유 제공업체이며 실제 요청 처리 제공업체를 보장하지 않습니다. 같은 모델 이름이나 매핑에는 여러 경로가 있을 수 있습니다.", "临时图片下载": "임시 이미지 다운로드", "也可使用 x-api-key: YOUR_GATEWAY_KEY,常用于 Anthropic 客户端。两种鉴权头任选一种即可,不要填提供商账号令牌或面板登录令牌。": "Anthropic 클라이언트에서 주로 쓰는 x-api-key: YOUR_GATEWAY_KEY도 가능합니다. 인증 헤더는 하나만 사용해도 됩니다. 제공업체 계정 토큰이나 패널 로그인 토큰을 넣지 마세요.", "仅可省略或设为 stream=false、partial_images=0。当前不支持图片事件流、渐进图片或流式部分结果。未知参数会被拒绝,不会静默忽略。": "생략하거나 stream=false, partial_images=0만 가능합니다. 이미지 이벤트 스트림, 점진 이미지 및 스트리밍 부분 결과는 미지원입니다. 모르는 매개변수는 조용히 무시하지 않고 거부합니다.", "仅在上游返回修改后的提示词时保留,不保证每个模型都有。": "상위 서비스가 수정 프롬프트를 반환할 때만 유지하며 모든 모델에 있는 것은 아닙니다.", "仅在显式指定 output_format=jpeg 时支持,网关按 JPEG 质量参数编码。PNG、WebP 当前不支持此参数。": "output_format=jpeg를 명시한 경우만 지원하며 JPEG 품질값으로 인코딩합니다. PNG 및 WebP는 현재 이 매개변수를 지원하지 않습니다.", "仅用于响应返回的网关临时链接;{id} 必须替换为实际下载令牌。": "응답에 반환된 게이트웨이 임시 링크용입니다. {id}를 실제 다운로드 토큰으로 바꾸세요.", "仍从当前网关目录选择对话模型,不要求模型名称一定以 claude 开头。具体能力以实际承载模型为准。": "현재 게이트웨이 목록의 대화 모델을 선택합니다. 이름이 claude로 시작할 필요는 없으며 기능은 실제 처리 모델에 따라 다릅니다.", "估算输入 Token 数量": "입력 토큰 수 추정", "使用 supports_image_editing=true 的图片模型。该接口是参考图编辑、重绘或合成,不是精确遮罩修补;当前不支持 mask 与 input_fidelity,也不支持 file_id。": "supports_image_editing=true인 이미지 모델을 사용합니다. 참조 이미지 편집, 다시 그리기, 합성용이며 정밀 마스크 복원은 아닙니다. 현재 mask, input_fidelity, file_id는 지원하지 않습니다.", "使用与 Chat 相同的对话模型 id 和 Key 授权规则。": "Chat과 같은 대화 모델 id 및 Key 권한 규칙을 사용합니다.", "使用同一客户端生成与编辑,并将返回的 base64 保存为图片文件。": "같은 클라이언트로 생성 및 편집하고 반환 base64를 이미지 파일로 저장합니다.", "使用支持工具调用的模型。函数声明、调用结果配对与多模态请求示例见「看图与工具调用」章节。": "도구 호출 지원 모델을 사용하세요. 함수 선언, 호출 및 결과 매칭, 멀티모달 요청 예시는 「이미지 이해 및 도구 호출」 장을 참조하세요.", "使用支持工具调用的模型。函数声明、调用结果配对与多模态请求示例见下一节。": "도구 호출 지원 모델을 사용하세요. 함수 선언, 호출 및 결과 매칭, 멀티모달 예시는 다음 절을 참조하세요.", "使用说明与兼容边界": "사용 안내 및 호환 범위", "健康检查": "상태 확인", "先前网关返回的 /v1/images/files/{id} 完整链接可在未过期时作为 JSON 参考图。不要把 AI 助手内部的 assistant-image:ID 当成对外接口图片 URL。": "이전 게이트웨이 응답의 완전한 /v1/images/files/{id} URL은 만료 전 JSON 참조로 쓸 수 있습니다. 어시스턴트 내부 assistant-image:ID를 외부 API 이미지 URL로 사용하지 마세요.", "先确定网关地址、Key 和模型,再选择客户端支持的协议。": "게이트웨이 주소, Key, 모델을 확인한 뒤 클라이언트가 지원하는 프로토콜을 선택하세요.", "兼容 Anthropic 消息块与 SSE 事件,支持本地 Token 预算估算。": "Anthropic 콘텐츠 블록과 SSE 이벤트를 지원하고 로컬 토큰 예산을 추정합니다.", "兼容 Responses 请求与事件格式,适合 Codex 等客户端;不是服务端会话存储。": "Codex 등을 위한 Responses 요청 및 이벤트 호환 기능이며 서버 대화 저장은 아닙니다.", "内置 AI 助手已有 generate_images 与 edit_images 工具,可在助手设置中启用并按确认模式执行。外部 API 客户端不会自动获得这些工具;需要由客户端声明并实际调用图片接口。": "내장 AI 어시스턴트에는 generate_images와 edit_images가 있습니다. 어시스턴트 설정에서 켜고 확인 모드에 따라 실행합니다. 외부 API 클라이언트는 이를 자동 제공받지 않으며 직접 도구를 선언하고 이미지 API를 호출해야 합니다.", "函数工具使用 Responses 的声明格式;工具结果以 function_call_output 携带相同 call_id。实际工具能力仍依赖模型与提供商。": "Responses 형식으로 함수를 선언하고 같은 call_id의 function_call_output으로 결과를 보냅니다. 실제 도구 지원은 모델 및 제공업체에 따라 다릅니다.", "函数工具声明包含 name、description、input_schema;结果在后续 user 消息的 tool_result 块中携带对应 tool_use_id。": "함수 선언에는 name, description, input_schema가 있습니다. 후속 user 메시지의 tool_result 블록에 같은 tool_use_id와 결과를 넣습니다.", "分别可能表示请求中断或请求过大。参考图过大时需缩小图片或减少数量,原样重试不会解决;中断的图片任务可能已经消耗额度。": "각각 요청 중단 또는 크기 초과 등을 나타냅니다. 참조 이미지 크기나 수를 줄이세요. 그대로 재전송해도 해결되지 않고 중단된 이미지 작업도 할당량을 이미 썼을 수 있습니다.", "分别控制输出上限与是否流式。stream 默认 false;true 返回 Responses 命名事件。": "출력 상한과 스트리밍을 제어합니다. stream 기본값은 false이며 true는 이름이 있는 Responses 이벤트를 반환합니다.", "分别表示工具调用与思考能力。是否生效仍取决于实际承载模型、提供商和相关设置。": "각각 도구 호출 및 추론 지원입니다. 실제 작동은 처리 모델, 제공업체 및 설정에도 의존합니다.", "分别请求思考档位与结构化输出;能力和可用取值依赖模型。不要因字段被接受就假定上游已经执行。": "각각 추론 수준과 구조화 출력을 요청합니다. 지원 및 값은 모델에 따라 다르며 필드 수락만으로 상위 서비스 적용을 단정하지 마세요.", "协议兼容不保证工具、思考、结构化输出、透明背景或每个尺寸都被所有提供商支持。先查看当前模型能力和插件版本,再核对请求日志的承载提供商与错误摘要。": "프로토콜 호환성이 모든 제공업체의 도구, 추론, 구조화 출력, 투명 배경 또는 모든 크기 지원을 보장하지 않습니다. 모델 기능과 플러그인 버전을 확인한 뒤 로그의 처리 제공업체와 오류 요약을 확인하세요.", "单图可用 image=@reference.png,多图重复提交 image[]。也兼容 images、images[] 与 image[0] 这类数字索引字段;普通参数不能重复提交。": "한 이미지는 image=@reference.png, 여러 이미지는 image[]를 반복합니다. images, images[], image[0] 같은 숫자 인덱스도 지원합니다. 일반 매개변수는 중복 제출할 수 없습니다.", "单轮可以是字符串;多轮使用消息与工具项数组,客户端应携带必要历史。文本块使用 input_text,图片块使用 input_image。": "한 턴은 문자열, 여러 턴은 필요한 이력을 포함한 메시지 및 도구 항목 배열입니다. 텍스트 블록은 input_text, 이미지 블록은 input_image를 사용합니다.", "参考图编辑": "참조 이미지 편집", "参考图编辑;支持 multipart 文件上传或 JSON 图片引用。": "참조 이미지 편집. multipart 파일 업로드 또는 JSON 이미지 참조를 지원합니다.", "只支持这三种可解码图片格式,校验实际文件内容而不是仅看扩展名;单张最多 10 MiB,边长最多 8192。": "디코딩 가능한 세 형식만 지원하며 확장자뿐 아니라 실제 내용을 확인합니다. 한 이미지 최대 10 MiB, 변 길이 최대 8192입니다.", "可用值为 auto、standard、hd、low、medium、high、xhigh、max。小浣熊与 Antigravity 仅接受省略、auto 或 standard;其他值是否有效取决于 Loomy 的具体模型。": "auto, standard, hd, low, medium, high, xhigh, max를 허용합니다. Raccoon과 Antigravity는 생략, auto, standard만 받으며 다른 값은 Loomy 모델에 따라 다릅니다.", "可省略,或使用 auto、WIDTHxHEIGHT,例如 1024x1024。网关校验边长 1–8192,提供商可能进一步限制宽高比与分辨率,不保证精确像素输出。": "생략하거나 auto, WIDTHxHEIGHT(예: 1024x1024)를 사용합니다. 게이트웨이는 변 길이 1–8192를 검사하며 제공업체가 비율과 해상도를 더 제한할 수 있습니다. 정확한 출력 픽셀은 보장하지 않습니다.", "可能是网关内部错误、上游异常、插件未接入、暂无可用账号、图片下载或编码失败。": "게이트웨이 내부 오류, 상위 서비스 이상, 플러그인 기능 미연동, 사용 가능한 계정 없음 또는 이미지 다운로드·인코딩 실패일 수 있습니다.", "可能是网关内部错误、上游异常、插件未接入、暂无可用账号、图片下载或编码失败。公网模式的 api_key_not_configured 表示必须先配置网关 Key。": "게이트웨이 내부 오류, 상위 이상, 플러그인 기능 미연동, 계정 없음 또는 이미지 다운로드·인코딩 실패일 수 있습니다. 공용 모드의 api_key_not_configured는 먼저 게이트웨이 Key를 설정해야 한다는 뜻입니다.", "可能附带实际输出编码、用量或点数。usage 与 points_consumed 取决于上游,缺失不代表免费;若未要求固定编码,不要默认所有图片都是 PNG。": "실제 인코딩, 사용량 또는 포인트가 포함될 수 있습니다. usage 및 points_consumed는 상위 서비스에 따라 다르며 없다고 무료는 아닙니다. 인코딩을 지정하지 않았다면 모두 PNG라고 가정하지 마세요.", "可选的调用方用户标识,不是网关鉴权 Key,也不能用于指定账号或绕过 Key 的授权范围。是否传递与处理取决于提供商。": "선택적인 호출자 사용자 식별자이며 게이트웨이 인증 Key가 아닙니다. 계정 지정이나 Key 권한 우회에 사용할 수 없습니다. 전달 및 처리는 제공업체에 따라 다릅니다.", "启用": "사용", "图片响应与下载": "이미지 응답 및 다운로드", "图片响应创建时间,Unix 秒。不要与错误限额恢复字段 reset_at 的毫秒单位混用。": "이미지 응답 생성 시간이며 Unix 초입니다. 오류 복구 필드 reset_at의 밀리초와 혼동하지 마세요.", "图片生成与共用参数": "이미지 생성 및 공통 매개변수", "图片生成与编辑": "이미지 생성 및 편집", "图片输入是理解图片,工具调用是由客户端执行动作;二者都需要模型能力支持。": "이미지 입력은 이미지를 이해하고 도구 호출은 클라이언트가 작업을 실행합니다. 둘 다 모델 지원이 필요합니다.", "在线模型列表": "온라인 모델 목록", "在线模型列表指自动拉取上游目录;仅有静态模型清单不算在线支持。": "온라인 모델 목록은 상위 서비스의 목록을 자동으로 가져오는 것을 뜻합니다. 정적 목록만 있는 경우 온라인 지원으로 간주하지 않습니다.", "地址速查与请求示例使用当前网关地址。从其他设备访问时,127.0.0.1 指向那台设备自身,必须换成实际可达的网关地址。": "주소 목록과 요청 예시는 현재 게이트웨이 주소를 사용합니다. 다른 기기에서 127.0.0.1은 그 기기 자체를 가리키므로 실제 게이트웨이에 연결되는 주소로 바꿔야 합니다.", "填进客户端的「API 地址 / Base URL」": "클라이언트의 「API 주소 / Base URL」란에 입력", "声明函数工具的请求体": "함수 도구 선언 요청 본문", "复制地址": "주소 복사", "复制示例": "예시 복사", "多图有顺序意义:在 prompt 中明确“第 1 张是主体,第 2 张是风格参考”等关系。编辑不保证逐像素保真,要求保留的主体、文字或布局应明确描述。": "이미지 순서는 의미가 있습니다. prompt에 '1번은 대상, 2번은 스타일 참조' 등을 명시하세요. 픽셀 단위 보존은 보장하지 않으므로 유지할 대상, 텍스트, 레이아웃을 정확히 설명합니다.", "多数 OpenAI 兼容客户端的默认协议": "대부분의 OpenAI 호환 클라이언트 기본 프로토콜", "字段 / 状态": "필드 / 상태", "字段与限制": "필드 및 제한", "安装并使用支持 Images 参数的 OpenAI Python SDK。先按接入章节设置 GATEWAY_KEY 与 IMAGE_MODEL_ID,编辑前确认该模型支持参考图,并准备本地 reference.png。": "Images 매개변수를 지원하는 OpenAI Python SDK를 사용하세요. 연결 절에 따라 GATEWAY_KEY와 IMAGE_MODEL_ID를 설정하고 편집 지원을 확인한 뒤 로컬 reference.png를 준비합니다.", "客户端自动拉取可用模型;不受鉴权限制,配 Key 之前就能拉": "클라이언트가 사용 가능한 모델을 자동으로 가져옵니다. 인증 제한을 받지 않으므로 Key를 설정하기 전에도 가져올 수 있습니다", "对话协议": "대화 프로토콜", "对话协议与上下文预算": "대화 프로토콜과 컨텍스트 예산", "对话协议(按客户端支持的类型选一行)": "대화 프로토콜(클라이언트가 지원하는 유형에 맞는 줄을 하나 선택)", "对话模型看图请求": "대화 모델 이미지 이해 요청", "小浣熊与 Antigravity 不支持此字段,请在 prompt 中描述风格;Loomy 转交上游,由模型决定是否支持。": "Raccoon과 Antigravity는 미지원이므로 스타일은 prompt에 설명하세요. Loomy는 상위로 전달하며 지원은 모델이 결정합니다.", "小浣熊与 Antigravity 仅接受省略、auto 或 opaque;不保证所有模型都能生成透明背景。文件转码不会自动抠图。": "Raccoon과 Antigravity는 생략, auto, opaque만 허용합니다. 모든 모델이 투명 배경을 지원하지는 않으며 파일 변환으로 자동 배경 제거하지 않습니다.", "小浣熊与 Antigravity 仅接受省略或 auto。该字段不保证上游降低审核强度,内容政策拒绝不会自动重试。": "Raccoon과 Antigravity는 생략 또는 auto만 허용합니다. 상위 검토 강도를 낮춘다는 보장은 없으며 콘텐츠 정책 거부는 자동 재시도하지 않습니다.", "小浣熊使用 raccoon-image;Loomy 使用目录中的 kind=image 模型;Antigravity 使用目录中的 gemini-*-image 模型;ModelScope 使用已确认支持的 Qwen-Image、Z-Image 或 Qwen-Image-Edit 型号;WorkBuddy 使用目录中带 text-to-image 或 image-to-image 标签的模型,例如 hunyuan-image-alpha 与 hunyuan-image-alpha-edit。实际 model 值以当前 /v1/models 为准,不要直接复制官方 API 的默认模型名。": "Raccoon은 raccoon-image를 사용합니다. Loomy는 카탈로그의 kind=image 모델, Antigravity는 카탈로그의 gemini-*-image 모델, ModelScope는 지원이 확인된 Qwen-Image, Z-Image, Qwen-Image-Edit 모델을 사용합니다. WorkBuddy는 카탈로그에서 text-to-image 또는 image-to-image 태그가 붙은 모델(예: hunyuan-image-alpha, hunyuan-image-alpha-edit)을 사용합니다. 실제 model 값은 현재 /v1/models를 기준으로 하며, 각 사 API의 기본 모델명을 그대로 쓰지 마세요.", "展开目录": "목차 펼치기", "工具服务 API": "도구 서비스 API", "工具服务 API 文档": "도구 서비스 API 문서", "工具服务 API 是网关对外的固定接口,路径以 /api/web-search 开头;不属于 /v1 对话协议,也不是管理面板的管理接口,鉴权同样使用网关 Key。": "도구 서비스 API는 게이트웨이가 외부에 제공하는 고정 인터페이스이며 경로가 /api/web-search로 시작합니다. /v1 대화 프로토콜이나 관리 패널의 관리 API가 아니며, 인증에도 게이트웨이 Key를 사용합니다.", "已实现,待实测": "구현 완료, 실측 대기", "已实现,待实测:仅表示代码已接入,尚未通过真实账号验证。": "구현 완료, 실측 대기: 코드가 연동되었다는 뜻이며 실제 계정으로는 아직 검증하지 않았습니다.", "建议显式填写图片模型 id。省略时从当前 Key 可用目录中选择支持本次操作的图片模型,不使用对话默认模型;没有对应能力模型时返回 503。": "이미지 모델 id를 명시하는 것이 좋습니다. 생략하면 Key의 사용 가능한 목록에서 이번 작업 지원 모델을 고르며 기본 대화 모델은 사용하지 않습니다. 해당 기능 모델이 없으면 503입니다.", "待实测": "실측 대기", "必填。使用 user / assistant 角色;content 可为字符串或 text、image、tool_use、tool_result 等内容块。": "필수입니다. user / assistant 역할을 사용하고 content는 문자열 또는 text, image, tool_use, tool_result 등의 블록입니다.", "必填。包含 role 与 content;常见角色为 system、user、assistant,工具结果使用 tool。文本可直接使用字符串,多模态使用内容块数组。": "필수입니다. role과 content를 포함하며 일반 역할은 system, user, assistant, 도구 결과는 tool입니다. 텍스트는 문자열, 멀티모달은 콘텐츠 블록 배열을 사용할 수 있습니다.", "必填且不能为空,最多 32000 个字符。描述主体、构图、风格和修改目标;当前不支持 mask,编辑范围也应在提示词中说明。": "필수이며 비어 있으면 안 되고 최대 32000자입니다. 대상, 구도, 스타일 및 수정 목표를 설명하세요. mask는 미지원이므로 수정 범위도 프롬프트로 설명합니다.", "执行工具后回传结果的请求体": "실행한 도구 결과를 회신하는 요청 본문", "找到 {count} 个章节": "{count}개 장을 찾았습니다", "排错与限制": "문제 해결 및 제한", "接入与鉴权": "연결 및 인증", "接入指南": "연결 가이드", "接入指南与接口参考": "연결 가이드 및 API 참고", "接口参考目录": "API 참고 목차", "接口地址": "인터페이스 주소", "推荐使用 Authorization: Bearer YOUR_GATEWAY_KEY;Key 来自「网关 Key」页,并且必须处于启用状态。": "Authorization: Bearer YOUR_GATEWAY_KEY를 권장합니다. 「게이트웨이 키」 페이지에서 활성화된 Key를 사용하세요.", "推荐显式指定当前目录中的对话模型 id。省略时尝试网关默认模型;默认选择也受该 Key 的授权范围限制。": "현재 목록의 대화 모델 id를 명시하는 것이 좋습니다. 생략하면 게이트웨이 기본 모델을 시도하되 Key 권한 범위를 따릅니다.", "描述输入与输出模态,例如 text、image、video。字段缺失不表示自动支持其他文件、音频或服务端上传接口。": "text, image, video 등의 입력 및 출력 모달리티입니다. 필드가 없다고 다른 파일, 오디오 또는 서버 업로드 API를 자동 지원하는 것은 아닙니다.", "提供商能力": "제공업체 기능", "提供商能力适配表": "제공업체 기능 지원표", "搜索文档": "문서 검색", "搜索文档、参数或接口…": "문서, 매개변수 또는 API 검색…", "收起全部": "모두 접기", "收起目录": "목차 접기", "文本生成图片;JSON 请求,非流式返回 base64 或下载链接。": "텍스트로 이미지를 생성합니다. JSON 요청에 비스트리밍 base64 또는 다운로드 URL을 반환합니다.", "文档内容": "문서", "文档目录": "문서 목차", "无此概念": "해당 없음", "映射为思考档位与结构化输出请求;支持范围以目标模型为准。": "추론 수준 및 구조화 출력 요청으로 매핑되며 지원 범위는 대상 모델에 따라 다릅니다.", "未声明表示插件没有提供明确结论,不等于不支持。": "미선언은 플러그인이 명확한 결론을 제공하지 않았다는 뜻이며 미지원을 의미하지 않습니다.", "未声明表示网关本体或插件没有提供明确结论,不等于不支持。": "미선언은 게이트웨이 본체나 플러그인이 명확한 결론을 제공하지 않았다는 뜻이며 미지원을 의미하지 않습니다.", "本体订阅": "본체 구독", "本地上下文预算估算,返回 estimated=true;不是上游精确分词。": "로컬 컨텍스트 예산을 추정하며 estimated=true를 반환합니다. 상위 서비스의 정확한 토큰 계산이 아닙니다.", "本机免鉴权模式没有启用 Key 时可调用;启用任意 Key 后,受保护接口都要携带有效 Key。公网安全模式没有配置 Key 时会拒绝受保护的 /v1 请求,并返回 503 api_key_not_configured。": "로컬 무인증 모드에서는 활성 Key가 없을 때 호출할 수 있습니다. Key를 하나라도 활성화하면 보호된 API는 유효한 Key를 요구합니다. 공용 네트워크 보안 모드에서 Key를 설정하지 않으면 보호된 /v1 요청을 503 api_key_not_configured로 거부합니다.", "本页只说明实际提供的接口,不等于完整复刻 OpenAI / Anthropic 服务。未列出的 Files、Batch、图片 variations、服务端会话存储等端点不要假定可用。": "이 페이지는 구현된 API 설명이며 OpenAI / Anthropic 전체 서비스를 복제한 것이 아닙니다. 나열되지 않은 Files, Batch, 이미지 variations, 서버 대화 저장 API를 지원한다고 가정하지 마세요.", "本页说明对外的 /v1 接口,不是管理面板的 /api 接口。三种对话协议共用模型目录、模型映射、账号池和网关 Key,但请求与响应格式不同。": "이 페이지는 외부 /v1 API를 설명하며 관리 패널의 /api API가 아닙니다. 세 대화 프로토콜은 모델 목록, 모델 매핑, 계정 풀, 게이트웨이 Key를 공유하지만 요청 및 응답 형식은 다릅니다.", "查看当前网关的客户端地址和各接口路径,一键复制后即可使用。": "현재 게이트웨이의 클라이언트 주소와 API 경로를 확인하고 복사해 사용할 수 있습니다.", "根据文字提示生成图片。请求使用 JSON,生成与编辑均只支持非流式响应。": "텍스트 프롬프트로 이미지를 생성합니다. JSON 요청이며 생성과 편집 모두 비스트리밍만 지원합니다.", "检查网关是否可访问": "게이트웨이 연결 확인", "模型不存在、已关闭或不在 Key 授权范围,常附 model_not_found;也可能是路径错误,或临时图片下载链接已过期。": "모델 없음, 비활성화 또는 Key 권한 범위 밖이며 보통 model_not_found가 붙습니다. 경로 오류나 임시 이미지 링크 만료일 수도 있습니다.", "模型列表": "모델 목록", "模型发现与健康检查": "모델 검색 및 상태 확인", "模型清单": "모델 목록", "模型清单与健康检查": "모델 목록과 상태 확인", "模型清单反映当前账号、模型启停与映射配置。不带 Key 时可读取公开清单;携带 Key 时必须有效,返回内容按该 Key 的授权范围过滤,无效 Key 返回 401。": "모델 목록은 현재 계정, 모델 활성 상태 및 매핑을 반영합니다. Key 없이 공개 목록을 읽을 수 있습니다. Key를 보내면 유효해야 하며 권한 범위로 필터링됩니다. 무효한 Key는 401을 반환합니다.", "模型清单反映当前账号、模型启停与映射配置;携带有效网关 Key 时进一步按该 Key 的授权范围过滤。不带 Key 或 Key 无效时仍可读取未按该 Key 收窄的清单。": "모델 목록은 현재 계정, 모델 활성 상태 및 매핑을 반영합니다. 유효한 게이트웨이 Key가 있으면 해당 권한 범위로 더 필터링됩니다. Key가 없거나 무효면 그 Key에 따른 제한은 적용되지 않습니다.", "模型清单结构示例": "모델 목록 구조 예시", "模型调用始终需要启用且可用的网关 API Key,即使只在本机使用也不能免鉴权。管理员登录会话只用于管理面板,不能代替模型调用的 Key。": "모델 호출에는 항상 활성화되고 사용 가능한 게이트웨이 API Key가 필요하며 로컬 사용도 인증을 생략할 수 없습니다. 관리자 로그인 세션은 패널 관리용이며 모델 호출의 Key를 대신할 수 없습니다.", "每把 Key 的可用模型、可用提供商限制同样适用于生图和编辑图。模型名称使用 /v1/models 中的 id 或已配置的映射名,不要直接使用展示名称。": "Key별 모델 및 제공업체 제한은 이미지 생성과 편집에도 적용됩니다. 모델 이름에는 /v1/models의 id 또는 설정된 매핑 이름을 사용하고 표시 이름을 직접 쓰지 마세요.", "没有找到匹配的文档": "일치하는 문서가 없습니다", "流式以 message_start 开始,经 content_block_start / content_block_delta / content_block_stop,最终 message_delta 与 message_stop 收尾;不要按 Chat 的 [DONE] 规则解析。": "message_start로 시작하여 content_block_start / content_block_delta / content_block_stop을 거치고 message_delta 및 message_stop으로 끝납니다. Chat의 [DONE] 규칙으로 파싱하지 마세요.", "流式包含 response.created、response.output_text.delta 和最终 response.completed 等事件;错误可能以 response.failed 结束。输出预算不足时检查 incomplete 状态与 incomplete_details。": "스트림에는 response.created, response.output_text.delta 및 최종 response.completed 등이 있습니다. 오류는 response.failed로 끝날 수 있습니다. 출력 예산이 부족하면 incomplete 및 incomplete_details를 확인하세요.", "流式对话请求": "스트리밍 대화 요청", "流式开始后 HTTP 状态码无法再改;即使已经收到 200,也要检查流内错误、结束原因及是否正常收尾,不能把断流视为成功。": "스트리밍 시작 후에는 HTTP 상태를 바꿀 수 없습니다. 200을 받아도 스트림 내부 오류, 종료 이유 및 정상 종료를 확인하세요. 연결 끊김을 성공으로 보지 마세요.", "流式用量可请求 include_usage=true;最终是否返回用量取决于上游,不应假设每个增量都有 usage。": "include_usage=true로 스트리밍 사용량을 요청할 수 있습니다. 최종 반환 여부는 상위 서비스에 따라 다르며 모든 델타에 usage가 있는 것은 아닙니다.", "清除搜索": "검색 지우기", "点击章节展开参数、示例和兼容边界;示例只供复制,不会在本页发起模型请求或消耗额度。": "절을 펼치면 매개변수, 예시 및 호환 범위를 볼 수 있습니다. 예시는 복사 전용이며 이 페이지는 모델 요청을 보내거나 할당량을 사용하지 않습니다.", "生图可能消耗账号额度。先使用 n=1 和较小尺寸确认能力,内容政策拒绝或结果不确定时不要自动重复提交。": "이미지 생성은 계정 할당량을 사용할 수 있습니다. 먼저 n=1과 작은 크기로 확인하고 정책 거부 또는 불확실한 결과일 때 자동 재전송하지 마세요.", "生成、编辑与对话接口共用网关 Key;完整鉴权规则、模型能力和请求示例见下方章节。": "생성, 편집 및 대화 API는 게이트웨이 Key를 공유합니다. 자세한 인증 규칙, 모델 기능 및 요청 예시는 아래 절을 참조하세요.", "生成、编辑与对话接口共用网关 Key;鉴权规则、模型能力和请求示例可从文档目录查阅。": "생성, 편집 및 대화 API는 게이트웨이 Key를 공유합니다. 인증 규칙, 모델 기능 및 요청 예시는 문서 목차에서 확인하세요.", "生成与编辑返回同一结构;base64 适合直接保存,URL 适合短期获取。": "생성과 편집은 같은 구조를 반환합니다. base64는 직접 저장, URL은 단기 다운로드에 적합합니다.", "用于请求思考配置或档位,由网关映射到目标模型;不保证所有 Anthropic 原生特性在跨协议转发时完全等价。": "추론 설정 또는 수준을 요청하여 대상 모델로 매핑합니다. 프로토콜 간 변환에서 모든 Anthropic 기본 기능이 완전히 같다고 보장하지 않습니다.", "的 Key:请求带 ": " Key 중 아무거나 사용하세요: 요청에 ", "目前小浣熊、Loomy、Antigravity、ModelScope、WorkBuddy 已接入图片生成;Loomy、Antigravity、ModelScope 与 WorkBuddy 同时接入参考图编辑,小浣熊暂不支持编辑。需要当前提供商插件包含对应能力,并且账号、模型和 Key 授权可用。": "현재 Raccoon, Loomy, Antigravity, ModelScope, WorkBuddy가 이미지 생성을 지원합니다. Loomy, Antigravity, ModelScope, WorkBuddy는 참조 이미지 편집도 지원하며 Raccoon은 편집을 지원하지 않습니다. 제공자 플러그인에 해당 기능이 포함되어 있고 계정, 모델, 게이트웨이 Key 권한이 유효해야 합니다.", "目录声明的上下文与最大输出预算,可能省略。预算和余额不是同一概念,也不能替代上游的实际限制。": "목록에 선언된 컨텍스트 및 최대 출력 예산이며 생략될 수 있습니다. 토큰 예산은 계정 잔액과 다르고 상위 서비스의 실제 제한을 대체하지 않습니다.", "看图与工具调用": "이미지 이해 및 도구 호출", "看图请求使用对话模型,并确认 supports_images=true。Chat 使用 text 与 image_url 内容块,图片值可为上游支持的 HTTP(S) URL 或 data URL;可用格式与大小取决于目标模型。「参考图编辑」章节的上传限制不应直接套用到所有对话模型。": "이미지 이해에는 supports_images=true인 대화 모델을 사용하세요. Chat은 text 및 image_url 블록을 사용하며 상위 서비스가 지원하는 HTTP(S) URL 또는 data URL을 지정합니다. 형식과 크기는 대상 모델에 따라 다릅니다. 「참조 이미지 편집」 장의 업로드 제한이 모든 대화 모델에 그대로 적용되지는 않습니다.", "看图请求使用对话模型,并确认 supports_images=true。Chat 使用 text 与 image_url 内容块,图片值可为上游支持的 HTTP(S) URL 或 data URL;可用格式与大小取决于目标模型。下方编辑图的上传限制不应直接套用到所有对话模型。": "이미지 이해에는 supports_images=true인 대화 모델을 사용하세요. Chat은 text 및 image_url 블록을 사용합니다. 상위 서비스가 지원하는 HTTP(S) URL 또는 data URL을 지정하며 형식과 크기는 대상 모델에 따라 다릅니다. 아래 편집 업로드 제한이 모든 대화 모델에 그대로 적용되지는 않습니다.", "示例仅供复制,不会在本页发起请求或消耗额度。": "예시는 복사 전용입니다. 이 페이지는 요청을 보내거나 할당량을 사용하지 않습니다.", "示例显式设置 max_retries=0,避免 SDK 对超时或 5xx 自动重新提交收费任务;timeout=300.0 仅是客户端等待示例,不会改变网关或上游的超时配置。": "예시는 max_retries=0으로 시간 초과 또는 5xx 시 유료 작업을 SDK가 자동 재전송하지 않게 합니다. timeout=300.0은 클라이언트 대기 예시이며 게이트웨이나 상위 시간 제한을 바꾸지 않습니다.", "章节导航": "장 탐색", "类型 / 范围": "유형 / 범위", "系统说明是顶层字段,不要放进 messages 的 system 角色;支持文本或 text 块数组。": "시스템 지시는 최상위 필드입니다. messages의 system 역할에 넣지 마세요. 텍스트 또는 text 블록 배열을 지원합니다.", "系统说明,对应 Chat 的 system 消息;需要时每次请求重新携带。": "Chat의 system 메시지에 해당하는 시스템 지시입니다. 필요한 경우 매 요청에 다시 포함하세요.", "结合 HTTP 状态、错误内容与请求日志判断问题;不要盲目重试收费请求。": "HTTP 상태, 오류 내용, 요청 로그로 원인을 판단하세요. 유료 요청을 무조건 재시도하지 마세요.", "编辑请求上传总大小最多 16 MiB。参考图转为 data URL 后,内联图片与最终 JSON 请求还受 14 MiB 上限;base64 约增加三分之一体积,因此多张各小于 10 MiB 也可能超限。": "편집 업로드 총량은 최대 16 MiB입니다. data URL 변환 후 인라인 이미지 및 최종 JSON도 14 MiB 제한을 받습니다. base64는 약 3분의 1 커지므로 각 이미지가 10 MiB 미만이어도 합계가 초과할 수 있습니다.", "网关临时 URL 响应结构": "게이트웨이 임시 URL 응답 구조", "网关临时下载不要求 Authorization,链接中的随机令牌就是访问凭据,任何拿到链接的人都能下载。请将链接视为敏感信息,重要结果及时保存,不要当作长期文件存储。": "임시 다운로드는 Authorization이 필요 없습니다. 링크의 무작위 토큰 자체가 접근 자격이며 링크를 아는 누구나 다운로드할 수 있습니다. 민감 정보로 취급하고 중요한 결과는 즉시 저장하며 장기 저장소로 쓰지 마세요.", "网关临时图片仅保存在内存,生成后 1 小时过期,网关重启后立即失效。缓存总容量 128 MiB;缓存满时会返回错误并建议改用 b64_json。上游签名链接的有效期由提供商决定。": "임시 이미지는 메모리에만 저장되어 1시간 후 만료되고 게이트웨이 재시작 시 즉시 사라집니다. 캐시 총량은 128 MiB이며 가득 차면 b64_json을 권하는 오류를 반환합니다. 상위 서명 URL 수명은 제공업체가 결정합니다.", "网关内置的安全重试与客户端 SDK 的重试是两层独立行为。图片客户端建议关闭自动重试;即使网关已停止重试,SDK 仍可能重新提交整条请求。": "게이트웨이 안전 재시도와 SDK 재시도는 독립적입니다. 이미지 클라이언트는 자동 재시도를 끄는 것이 좋습니다. 게이트웨이가 멈춰도 SDK가 전체 요청을 재전송할 수 있습니다.", "网关可将实际图片转换为指定文件编码。省略时保留上游图片格式;需要固定扩展名时建议显式填写。JPEG 无法保留透明通道。": "게이트웨이가 실제 이미지를 지정 인코딩으로 변환할 수 있습니다. 생략하면 상위 형식을 유지합니다. 고정 확장자가 필요하면 명시하세요. JPEG는 투명도를 유지할 수 없습니다.", "网关始终无状态,响应中的 store=false。即使请求 store=true,也不会保存可供后续检索的 Responses 对象。": "게이트웨이는 항상 무상태이며 store=false를 반환합니다. store=true를 보내도 나중에 조회할 Responses 객체를 저장하지 않습니다.", "网关接受 1–10,默认 1;Antigravity 与 ModelScope 仅支持 n=1。上游返回数量不足时网关报错,不会为了凑数再次调用图片生成。": "게이트웨이는 1–10, 기본 1을 받으며 Antigravity와 ModelScope는 n=1만 지원합니다. 반환 이미지 수가 부족하면 오류를 보고하고 개수를 채우기 위해 다시 생성하지 않습니다.", "网关接受 1–10,默认 1;Antigravity 仅支持 n=1。上游返回数量不足时网关报错,不会为了凑数再次调用图片生成。": "게이트웨이는 1–10, 기본 1을 허용하며 Antigravity는 n=1만 지원합니다. 상위 반환 수가 부족하면 오류를 내고 수를 채우려고 다시 생성하지 않습니다.", "网关最多接受 16 张参考图。Antigravity 的 gemini-2.5-* 模型最多 3 张,其他当前接入的 Antigravity 图片模型最多 14 张;Loomy 还可能受上游模型限制。": "최대 16개 참조 이미지를 받습니다. Antigravity gemini-2.5-*는 최대 3개, 그 외 현재 연동된 Antigravity 이미지 모델은 14개까지입니다. Loomy는 추가 상위 모델 제한이 있을 수 있습니다.", "网关最多接受 16 张参考图。Antigravity 的 gemini-2.5-* 模型最多 3 张,其他当前接入的 Antigravity 图片模型最多 14 张;ModelScope 接受 1–3 张参考图;Loomy 还可能受上游模型限制。": "참조 이미지는 최대 16장입니다. Antigravity gemini-2.5-*는 최대 3장, 다른 연동 이미지 모델은 최대 14장입니다. ModelScope는 1–3장을 받으며 Loomy는 상위 모델의 추가 제한이 있을 수 있습니다.", "网关需要下载或转换输出时,单张图片最多 32 MiB、边长最多 8192,并使用有界解码。请求 output_format 会按实际图片转码,而不是只修改文件扩展名。": "게이트웨이가 출력을 다운로드 또는 변환할 때는 한 이미지 최대 32 MiB, 변 최대 8192이며 제한 디코딩을 사용합니다. output_format은 확장자만 바꾸는 것이 아니라 실제 이미지를 변환합니다.", "网络搜索与网页抓取的 REST 接口,使用网关 Key 鉴权;不属于 /v1 对话协议。": "웹 검색 및 웹 페이지 가져오기를 위한 REST 인터페이스입니다. 게이트웨이 Key로 인증하며 /v1 대화 프로토콜에 속하지 않습니다.", "能力由当前插件版本申报,表示适配支持情况,不代表账号额度或当前可用性。": "기능은 설치된 플러그인 버전이 선언합니다. 연동 지원 여부를 나타내며 계정 할당량이나 현재 사용 가능 여부를 뜻하지 않습니다.", "能力由当前网关本体或插件版本申报,表示适配支持情况,不代表账号额度或当前可用性。": "기능은 현재 게이트웨이 본체 또는 플러그인 버전이 선언합니다. 연동 지원 상태를 나타내며 계정 할당량이나 현재 사용 가능 여부를 뜻하지 않습니다.", "自定义函数工具通过 tools 声明。模型返回 tool_calls 后,客户端校验参数、执行函数,再把 assistant 工具调用和 role=tool 结果一起放入下一次 messages;tool_call_id 必须对应,不能遗漏并行调用的结果。": "tools로 사용자 정의 함수를 선언합니다. tool_calls가 반환되면 클라이언트가 인수를 검증해 실행하고 assistant 호출 및 role=tool 결과를 다음 messages에 함께 보냅니다. tool_call_id를 맞추고 병렬 호출의 결과를 빠뜨리지 마세요.", "表示当前目录与插件声明支持参考图编辑。编辑前检查此字段,不要仅凭模型名称包含 image 判断。": "현재 목록과 플러그인이 참조 이미지 편집을 지원한다고 선언했음을 나타냅니다. 편집 전에 확인하고 모델 이름의 image만 보고 판단하지 마세요.", "表示支持图片输入,不等于支持生成图片。对话模型可用于看图;编辑模型也可能声明此字段。": "이미지 입력 지원을 나타내며 이미지 생성 지원과 다릅니다. 대화 모델은 이미지 이해에 쓰이고 편집 모델도 이 필드를 선언할 수 있습니다.", "表示目录条目属于生图模型。调用还需要当前插件已接入生成能力,且存在获准使用的可用账号。": "이미지 생성 모델 목록 항목을 나타냅니다. 호출하려면 현재 플러그인의 생성 지원 및 권한이 있는 사용 가능한 계정도 필요합니다.", "试试接口路径、参数名或其他关键词。": "API 경로, 매개변수 이름 또는 다른 키워드로 검색하세요.", "详细接口参考": "상세 API 참고", "请求与响应示例": "요청 및 응답 예시", "请求参数、模型能力或协议形态不支持。图片相关 code 可能为 invalid_image_input、image_generation_not_supported 或 image_editing_not_supported;修改请求后再发。": "매개변수, 모델 기능 또는 프로토콜 형식 미지원입니다. 이미지 code는 invalid_image_input, image_generation_not_supported, image_editing_not_supported 등이 될 수 있습니다. 요청을 수정한 뒤 다시 보내세요.", "请求示例适用于 Bash / Git Bash。YOUR_GATEWAY_KEY、CHAT_MODEL_ID、IMAGE_MODEL_ID 和图片占位地址都需要替换;返回示例仅展示结构,能力位、Token 数量和时间戳不是当前网关的实测值。": "요청 예시는 Bash / Git Bash 문법입니다. YOUR_GATEWAY_KEY, CHAT_MODEL_ID, IMAGE_MODEL_ID 및 이미지 임시 주소를 교체하세요. 응답 예시는 구조만 보여 주며 기능 값, 토큰 수, 타임스탬프는 현재 게이트웨이 측정값이 아닙니다.", "读取提供商能力表失败:{error}": "제공업체 기능을 불러오지 못했습니다: {error}", "读取插件能力表失败:{error}": "플러그인 기능을 불러오지 못했습니다: {error}", "读取获准使用的模型": "허용된 모델 조회", "输出 Token 上限,具体支持字段和预算以模型为准。不要同时设置冲突的上限;达到上限时 finish_reason 可能为 length。": "최대 출력 토큰입니다. 지원 필드와 예산은 모델에 따라 다릅니다. 충돌하는 상한을 동시에 설정하지 마세요. 상한 도달 시 finish_reason은 length일 수 있습니다.", "通用对话入口,适合大多数 OpenAI 兼容客户端。": "대부분의 OpenAI 호환 클라이언트를 위한 일반 대화 API입니다.", "通用错误结构示例": "일반 오류 구조 예시", "通过能力字段选择正确模型;健康检查只说明网关可访问。": "기능 필드로 올바른 모델을 선택하세요. 상태 확인은 게이트웨이 연결만 확인합니다.", "遇到“图片请求可能已消耗额度,未自动重试”或“上游已生成”等提示,先核对请求日志与上游结果。客户端超时、断线或取消不代表上游撤销任务;自动重发可能再次扣费。": "이미지 요청이 할당량을 썼을 수 있어 재시도하지 않았거나 상위에서 생성 완료했다는 경고가 나오면 로그와 상위 결과를 먼저 확인하세요. 클라이언트 시간 초과, 연결 끊김, 취소는 상위 작업 취소를 뜻하지 않으며 재전송 시 다시 과금될 수 있습니다.", "采样参数,是否支持和有效范围由提供商与模型决定。协议兼容不代表每家上游都支持全部调参项。": "샘플링 매개변수입니다. 지원 여부와 범위는 제공업체 및 모델이 결정하며 프로토콜 호환성이 모든 설정 지원을 보장하지 않습니다.", "鉴权用「网关 Key」页里任一": "인증에는 「게이트웨이 키」 페이지에서 ", "错误、限额与兼容边界": "오류, 제한 및 호환 범위", "限流、额度不足或当前无可用账号窗口。能确定恢复时间时可能返回 Retry-After(秒)、reset_at(Unix 毫秒)与 reset_at_text;这些字段不是每次都有。": "요청 제한, 할당량 부족 또는 사용 가능한 계정 시간창이 없는 상태입니다. 복구 시간을 알면 Retry-After(초), reset_at(Unix 밀리초), reset_at_text를 반환할 수 있지만 항상 있는 것은 아닙니다.", "非流式响应读取 choices[].message;流式响应读取 choices[].delta。每次请求由客户端携带 messages 历史,网关不会根据上一条响应 id 自动恢复对话。": "비스트리밍은 choices[].message, 스트리밍은 choices[].delta를 읽습니다. 매 요청에 messages 이력을 보내세요. 이전 응답 id로 대화를 자동 복원하지 않습니다.", "非流式对话响应": "비스트리밍 대화 응답", "非流式对话请求": "비스트리밍 대화 요청", "非流式返回 object=response、status、output 数组与 output_text。output 也可能包含 reasoning 或 function_call,不能只读取数组第一项。": "비스트리밍은 object=response, status, output 배열 및 output_text를 반환합니다. output에 reasoning이나 function_call도 있으므로 첫 항목만 읽지 마세요.", "非流式返回 type=message、content 块数组、stop_reason 与 usage。content 可能同时包含文本、思考与工具调用,应该按 type 遍历。": "비스트리밍은 type=message, content 블록 배열, stop_reason, usage를 반환합니다. 텍스트, 추론, 도구 호출이 섞일 수 있으므로 type별로 순회하세요.", "领取类": "보상 수령", "默认 b64_json,返回可直接解码的图片 base64;url 返回上游签名链接或网关临时下载链接。不是图片文件编码。": "기본 b64_json은 디코딩 가능한 이미지 base64, url은 상위 서명 URL 또는 게이트웨이 임시 다운로드 링크입니다. 이미지 파일 인코딩과 다릅니다.", "默认 false,返回完整 JSON;true 返回 text/event-stream。curl 查看流式输出时添加 -N,客户端应按完整 SSE 事件解析而不是按网络分块解析。": "기본 false는 전체 JSON, true는 text/event-stream을 반환합니다. curl에 -N을 추가하세요. 네트워크 청크가 아닌 완전한 SSE 이벤트 단위로 파싱해야 합니다.", "24 小时总用量": "24시간 총사용량", "24 小时整体命中率": "24시간 전체 적중률", "24 小时请求数": "24시간 요청 수", "30 天": "30일", "7 天": "7일", "API Key 分布": "API Key별 내역", "Token": "Token", "Top 提供商": "Top 제공자", "Top 模型": "Top 모델", "Top 账号": "Top 계정", "{date} · {tokens} tokens · {n} 次请求": "{date} · {tokens} tokens · 요청 {n}건", "{date} · 无请求": "{date} · 요청 없음", "{model}:{tokens} tokens": "{model}: {tokens} tokens", "{m}月": "{m}월", "{m}月{d}日 周{wd}": "{m}월 {d}일 ({wd})", "{name} · {tokens} tokens · {n} 次请求 · {pct}": "{name} · {tokens} tokens · 요청 {n}건 · {pct}", "{name}:{tokens} tokens · 占 {pct}%": "{name}: {tokens} tokens · 비중 {pct}%", "{n} 家提供商": "제공자 {n}개", "{n} 次请求": "요청 {n}건", "{n} 项": "{n}개 항목", "{n} 项低于 {threshold}%,已合并为“其他”": "{threshold}% 미만인 항목 {n}개를 기타로 묶었습니다", "{title}显示数量": "{title} 표시 개수", "{tokens} tokens · 占 {pct}": "{tokens} tokens · 비중 {pct}", "…还有 {n} 个模型": "…외 {n}개 모델", "…还有 {n} 项": "…외 {n}개 항목", "一": "월", "三": "수", "二": "화", "五": "금", "仅在饼图合并,右侧列表完整保留每个项目": "원형 차트에서만 묶으며 오른쪽 목록에는 모든 항목을 표시합니다", "仅调整两个饼图,右侧列表始终完整显示": "두 원형 차트만 변경하며 오른쪽 목록은 항상 전체를 표시합니다", "仅调整这两张图的展示,所有用量仍计入总 Token,占比保持不变": "이 두 차트의 표시만 변경합니다. 모든 사용량은 총 Token에 포함되며 비중은 바뀌지 않습니다", "今天": "오늘", "全部用量": "전체 사용량", "六": "토", "其他 {pct} · {n} 项,仅在饼图合并": "기타 {pct} · {n}개 항목, 차트에서만 묶음", "其他({n} 项)": "기타 ({n}개 항목)", "其余 {n} 项": "나머지 {n}개 항목", "前 {n} 名": "상위 {n}개", "前 {n} 名占全部用量 {pct}": "상위 {n}개가 전체 사용량의 {pct}", "区间共 {n} 天": "기간 총 {n}일", "占比低于": "비중이", "占输入 Token 的 {rate}": "입력 Token의 {rate}", "历史明细不完整": "과거 상세 기록이 불완전합니다", "另 {n} 项": "외 {n}개", "右轴": "오른쪽 축", "合并只作用于饼图。低于阈值的扇区归入“其他”,右侧列表完整保留每个项目,总量和占比不变。": "묶기는 원형 차트에만 적용됩니다. 기준 미만인 조각은 기타로 묶고 오른쪽 목록에는 모든 항목을 유지합니다. 총량과 비중은 변하지 않습니다.", "合并小项": "작은 항목 묶기", "合计": "합계", "含今天在内往前数": "오늘 포함 거슬러 계산", "命中 {hit} / 输入 {input}": "적중 {hit} / 입력 {input}", "命中率": "적중률", "命中率 = 缓存读取 Token / 输入 Token(promptTokens)。窗口越短越贴近「此刻」:上游把缓存读取与输入分开上报时,该比值合法地可能超过 100%,此处不夹取值、如实展示。": "적중률 = 캐시 읽기 Token / 입력 Token(promptTokens). 창이 짧을수록 「지금」에 가깝습니다. 업스트림이 캐시 읽기와 입력을 따로 보고하면 이 비율은 정당하게 100%를 넘을 수 있으며, 여기서는 값을 제한하지 않고 그대로 표시합니다.", "命中率 {rate}(命中 {hit} / 输入 {input})": "적중률 {rate} (적중 {hit} / 입력 {input})", "四": "목", "图表显示": "차트 표시", "图表类型": "차트 종류", "在右侧展开“其他”查看明细": "범례에서 기타를 펼치면 상세 내역을 볼 수 있습니다", "天有调用": "일 사용", "小项合并阈值": "작은 항목 묶기 기준", "展开其他明细": "기타 상세 펼치기", "左轴": "왼쪽 축", "开启“合并小项”后,低于阈值的项目合并为灰色“其他”,可在右侧展开明细。合并只影响展示,总 Token 和占比不变。": "작은 항목 묶기를 켜면 기준 미만인 항목을 회색 기타 영역으로 묶습니다. 범례에서 펼치면 상세 내역을 볼 수 있습니다. 표시만 바뀌며 총 Token과 비중은 그대로 유지됩니다.", "开始日期": "시작 날짜", "当前连续天数": "현재 연속 일수", "总 Token": "총 Token", "总 Token:{tokens}": "총 Token: {tokens}", "总 Token:{tokens}({n} 次请求)": "총 Token: {tokens} ({n}회 요청)", "总请求数": "총 요청 수", "总量不变": "총량 변경 없음", "悬停查看完整读数与分项": "마우스를 올리면 전체 수치와 항목별 내역 표시", "成功率 {rate}": "성공률 {rate}", "成功率 {rate} · 失败 {n} 次": "성공률 {rate} · 실패 {n}건", "成功请求数": "성공 요청 수", "所选范围内暂无请求": "선택한 범위에 요청이 없습니다", "所选范围内每个提供商各消耗了多少 Token,按 Token 用量从多到少排。同一个模型名可能有多家都能提供,网关按设置页「转发路由」的优先级依次尝试,所以占比也反映了实际落到谁身上。百分比按本区间的总 Token 数算(这一块只看用量,请求次数与成功率在概览卡片里)。「未知」是指那批请求没记下承载它的提供商 —— 主要是记录提供商这个功能上线之前的旧明细,其次是请求在选定上游之前就失败了(请求体非法、模型不存在、没有可用账号)。这一维与账号那一维不同:旧明细里根本没有「哪家承载」的信息(早期版本只有单一上游,但那是配置事实而非逐条记录),所以无法回算,旧数据会一直留在「未知」里;此后新产生的请求都会记上具体的提供商。": "선택한 범위에서 각 제공자가 소비한 Token 양을 Token 사용량이 많은 순서대로 나열합니다. 같은 모델 이름을 여러 제공자가 제공할 수 있어, 게이트웨이는 설정 페이지의 「포워딩 라우팅」 우선순위에 따라 차례로 시도하므로 이 비중은 실제로 어느 제공자에게 전달되었는지도 반영합니다. 백분율은 이 기간의 총 Token 수를 기준으로 계산합니다(이 영역은 사용량만 보며, 요청 수와 성공률은 개요 카드에 있습니다). 「알 수 없음」은 해당 요청에 이를 처리한 제공자가 기록되지 않은 경우입니다. 주로 제공자 기록 기능이 출시되기 전의 오래된 상세 내역이며, 그다음으로 업스트림이 정해지기 전에 요청이 실패한 경우(요청 본문이 잘못됨, 모델이 존재하지 않음, 사용 가능한 계정 없음)입니다. 이 차원은 계정 차원과 다릅니다. 오래된 상세 내역에는 「어느 제공자가 처리했는지」 정보 자체가 없으므로(초기 버전은 업스트림이 하나뿐이었지만, 그것은 설정상의 사실일 뿐 개별 기록이 아닙니다) 다시 계산할 수 없어 오래된 데이터는 계속 「알 수 없음」에 남습니다. 이후 새로 발생하는 요청에는 구체적인 제공자가 기록됩니다.", "所选范围内每个提供商各消耗了多少 Token,按用量从多到少排,扇区角度即占比。同一个模型名可能有多家都能提供,网关按设置页「转发路由」的优先级依次尝试,所以占比也反映了实际落到谁身上。中心是这一维的合计(等于概览里的总 Token),右侧每行给出该提供商的 Token 用量与百分比。「未知」是指那批请求没记下承载它的提供商 —— 主要是记录提供商这个功能上线之前的旧明细,其次是请求在选定上游之前就失败了。": "선택한 범위에서 각 제공자가 소비한 Token 양을 사용량이 많은 순서대로 나열하며, 부채꼴 각도가 곧 비중입니다. 같은 모델 이름을 여러 제공자가 제공할 수 있어, 게이트웨이는 설정 페이지의 「포워딩 라우팅」 우선순위에 따라 차례로 시도하므로 이 비중은 실제로 어느 제공자에게 전달되었는지도 반영합니다. 중앙은 이 차원의 합계(개요의 총 Token과 동일)이고, 오른쪽 각 행에는 해당 제공자의 Token 사용량과 백분율이 표시됩니다. 「알 수 없음」은 해당 요청에 이를 처리한 제공자가 기록되지 않은 경우로, 주로 제공자 기록 기능이 출시되기 전의 오래된 상세 내역이며, 그다음으로 업스트림이 정해지기 전에 요청이 실패한 경우입니다.", "所选范围内每个模型各消耗了多少 Token,按用量从多到少排,扇区角度即占比。中心是这一维的合计(等于概览里的总 Token),右侧每行给出该模型的 Token 用量与百分比。扇区内的百分比只在 ≥3% 时标出,更小的会挤成一团 —— 完整读数在右侧列表与悬停气泡里。颜色按用量排名分配:最大的那段是红色,依次往后;同一份报表里换个维度看,配色口径不变。": "선택한 범위에서 각 모델이 소비한 Token 양을 사용량이 많은 순서대로 나열하며, 부채꼴 각도가 곧 비중입니다. 중앙은 이 차원의 합계(개요의 총 Token과 동일)이고, 오른쪽 각 행에는 해당 모델의 Token 사용량과 백분율이 표시됩니다. 부채꼴 안의 백분율은 ≥3%일 때만 표시하며, 그보다 작으면 서로 겹치기 때문입니다. 전체 수치는 오른쪽 목록과 호버 툴팁에서 볼 수 있습니다. 색상은 사용량 순위에 따라 배정됩니다. 가장 큰 조각이 빨간색이고 그다음 순서대로 이어지며, 같은 리포트에서 차원을 바꿔 봐도 색상 기준은 동일합니다.", "所选范围内每个账号各消耗了多少 Token,按 Token 用量从多到少排。账号是比提供商更细的一维:同一家可以挂多个账号,转发时按优先级在候选链上依次尝试,所以这里反映的是「具体哪个登录态在出力」。百分比按本区间的总 Token 数算(这一块只看用量,请求次数与成功率在概览卡片里)。「未知账号」是指那批请求没有账号身份:走默认登录态转发(未配置账号列表)时会这样;这一维上线前写出的旧聚合行也没有账号明细,但它们会在升级导入旧数据时按明细自动补算回来 —— 只有明细已被手动清理掉的那几天补不回来,仍留在「未知账号」里,那是确实无从恢复的部分。": "선택한 범위에서 각 계정이 소비한 Token 양을 Token 사용량이 많은 순서대로 나열합니다. 계정은 제공자보다 더 세분화된 차원입니다. 같은 제공자에 여러 계정을 연결할 수 있고, 포워딩 시 우선순위에 따라 후보 체인에서 차례로 시도하므로 여기에는 「구체적으로 어떤 로그인 상태가 처리했는지」가 반영됩니다. 백분율은 이 기간의 총 Token 수를 기준으로 계산합니다(이 영역은 사용량만 보며, 요청 수와 성공률은 개요 카드에 있습니다). 「알 수 없는 계정」은 해당 요청에 계정 신원이 없는 경우입니다. 기본 로그인 상태로 포워딩할 때(계정 목록을 구성하지 않았을 때) 이렇게 되며, 이 차원이 출시되기 전에 작성된 오래된 집계 행에도 계정 상세가 없지만 구버전 데이터를 업그레이드로 가져올 때 상세 내역을 기준으로 자동으로 다시 계산되어 복원됩니다. 다만 상세 내역이 수동으로 정리된 날짜는 복원할 수 없어 계속 「알 수 없는 계정」에 남으며, 이는 실제로 복구할 방법이 없는 부분입니다.", "所选范围内还没有提供商用量": "선택한 범위에 아직 제공자 사용량이 없습니다", "所选范围内还没有模型用量": "선택한 범위에 아직 모델 사용량이 없습니다", "所选范围内还没有请求记录": "선택한 범위에 아직 요청 기록이 없습니다", "所选范围内还没有账号用量": "선택한 범위에 아직 계정 사용량이 없습니다", "折线": "꺾은선", "报表时间范围": "리포트 시간 범위", "按 Token 用量从多到少排列,扇区角度表示占比。占比不低于 3% 的扇区显示百分比,所有项目的完整读数保留在右侧列表与悬停提示中。": "Token 사용량이 많은 순서로 정렬되며 조각의 각도는 비중을 나타냅니다. 3% 이상인 조각에는 백분율을 표시하고 모든 항목의 전체 수치는 오른쪽 목록과 마우스 오버 정보에 유지됩니다.", "按 Token 统计": "Token 기준", "按天 Token 趋势": "일별 Token 추이", "按日统计": "일별 집계", "按本地整点统计": "현지 정시 단위 집계", "按本地整点,无请求的整点不标注": "로컬 정시 기준, 요청이 없는 정시는 표시하지 않음", "按每条请求的软件标识和识别规则统计,不依赖 API Key,也不代表设备或用户数。待确认的软件统一计入“其它”;规则修改不重新归类历史请求。": "각 요청의 소프트웨어 식별 정보와 규칙으로 집계하며 API Key와 무관하고 기기 수나 사용자 수를 뜻하지 않습니다. 미확인 소프트웨어는 기타로 집계되며 규칙 변경은 과거 요청을 재분류하지 않습니다.", "提供商用": "제공자 사용량", "提供商用占比": "제공자 사용량 비중", "提供商用量": "제공자 사용량", "提供商用量占比": "제공자 사용량 비중", "提供商:{text}": "제공자: {text}", "收起其他明细": "기타 상세 접기", "方格为本地自然日,无请求显示为空槽": "칸은 로컬 기준 날짜이며, 요청이 없으면 빈 칸으로 표시됩니다", "无请求的整点按 0% 计,但不写读数": "요청이 없는 정시는 0%로 계산하되 수치는 표시하지 않습니다", "日": "일", "日均": "일평균", "日均 {value}": "일평균 {value}", "时间范围。「今天」是本地自然日今天 0 点到现在;「昨天」是昨天一整天(0 点到 24 点);「近 7 天 / 近 30 天」含今天在内往前数,即今天与之前的 6 / 29 天,不是「不含今天的 7 / 30 天」。": "기간. \"오늘\"은 현지 날짜 기준 오늘 0시부터 현재까지이고, \"어제\"는 어제 하루 종일(0시~24시)입니다. \"최근 7일 / 최근 30일\"은 오늘을 포함해 거슬러 올라간 일수로, 오늘과 그 이전 6 / 29일을 뜻합니다(오늘을 제외한 7 / 30일이 아닙니다).", "昨天": "어제", "暂无热力图数据": "히트맵 데이터가 없습니다", "暂无缓存趋势数据": "캐시 추이 데이터가 없습니다", "暂无趋势数据": "추이 데이터가 없습니다", "最近整点命中率": "최근 시간대 적중률", "最近请求": "최근 요청", "未知模型": "알 수 없는 모델", "本月": "이번 달", "查看用量、调用来源与缓存表现": "사용량, 요청 출처 및 캐시 성능 확인", "柱状": "막대", "模型与提供商共用此设置": "모델과 제공자 차트에 공통으로 적용", "模型用量": "모델 사용량", "模型用量占比": "모델 사용량 비중", "每天的总 Token 用量(输入 + 输出)。柱顶标出当天的读数;区间很长、柱子挤到放不下时只标最高的那几天,其余悬停柱子即可读到。": "일별 총 Token 사용량(입력 + 출력)입니다. 막대 위에 해당 날짜의 수치를 표시하며, 기간이 길어 막대가 빽빽할 때는 가장 높은 며칠만 표시하고 나머지는 막대에 마우스를 올리면 확인할 수 있습니다.", "活跃天数": "활동 일수", "活跃热力图": "활동 히트맵", "用量分布": "사용량 구성", "用量趋势": "사용량 추이", "的项目合并为“其他”": "미만인 항목을 기타로 묶기", "筛选统计项目": "통계 항목 필터", "累计": "누적", "累计请求 {n} 条": "누적 요청 {n}건", "结束日期": "종료 날짜", "结束日期(含当天)": "종료 날짜(당일 포함)", "统计报表": "사용량 보고서", "统计概览": "통계 개요", "缓存命中率": "캐시 적중률", "缓存读取属于输入读数,不额外计入总 Token": "캐시 읽기는 입력에 포함되며 총 Token에 중복 합산하지 않습니다", "缓存读取属于输入,不重复计入总 Token": "캐시 읽기는 입력에 포함되며 총 Token에 중복 합산하지 않습니다", "自定义区间": "사용자 지정 기간", "请求日志只展示仍保留的明细;清理明细不会减少日报中的历史用量。": "요청 로그는 보관된 상세 기록만 표시합니다. 상세 기록을 삭제해도 일별 보고서의 이전 사용량은 줄어들지 않습니다.", "读取 {hit} ÷ 输入 {input}": "캐시 읽기 {hit} ÷ 입력 {input}", "读取报表失败:{error}": "리포트를 불러오지 못했습니다: {error}", "起始日期(含当天)": "시작 날짜(당일 포함)", "输入": "입력", "输入 + 输出": "입력 + 출력", "输入 Token": "입력 Token", "输出": "출력", "输出 Token": "출력 Token", "运行中": "실행 중", "近 1 小时": "최근 1시간", "近 10 分钟": "최근 10분", "近 24 小时": "최근 24시간", "近 24 小时缓存命中率与总 Token 趋势": "최근 24시간 캐시 적중률 및 총 Token 추이", "近 24 小时缓存命中率趋势": "최근 24시간 캐시 적중률 추이", "近 30 天": "최근 30일", "近 365 天 · 不随上方日期筛选变化": "최근 365일 · 위 날짜 필터와 무관", "近 365 天活跃热力图": "최근 365일 활동 히트맵", "近 365 天,按天 Token 用量着色(档位按本窗口峰值自动定)": "최근 365일, 일별 Token 사용량으로 색상 지정(단계는 이 창의 최댓값 기준으로 자동 결정)", "近 7 天": "최근 7일", "饼图不合并小项": "모든 조각 표시", "饼图小于 {threshold}% 归入其他": "{threshold}% 미만 조각을 기타로 묶기", "饼图显示": "원형 차트 표시", " · ": " · ", " · {n} 个账号今日重试已用完": " · {n}개 계정이 오늘 재시도 횟수를 모두 사용", " · 补签在主签到区间结束后执行": " · 주 출석 시간대 종료 후 보충 출석", "AgentArts 服务声明": "AgentArts 서비스 약관", "MiniMax Code 国内版每日签到 · 同地区签名账号接口读取七日面板并领取今日积分;已领取不重复领,奖励以官方返回为准": "MiniMax Code 중국판 일일 출석 · 해당 지역의 서명된 계정 API로 7일 패널을 읽고 오늘의 포인트를 수령합니다. 이미 수령한 보상은 다시 받지 않으며 공식 응답을 따릅니다.", "MiniMax Code 国际版每日签到 · 同地区签名账号接口读取七日面板并领取今日积分;已领取不重复领,奖励以官方返回为准": "MiniMax Code 국제판 일일 출석 · 해당 지역의 서명된 계정 API로 7일 패널을 읽고 오늘의 포인트를 수령합니다. 이미 수령한 보상은 다시 받지 않으며 공식 응답을 따릅니다.", "QuWork 每日奖励:先查询领取状态,再领取并回查;结果不明时不重复提交。": "QuWork 일일 보상: 수령 전에 상태를 확인하고 이후 결과를 조회합니다. 결과가 불확실하면 다시 제출하지 않습니다.", "SOLO 的 checkin_credits 领取 · 按自然日 0 点刷新": "SOLO의 checkin_credits 수령 · 자연일 0시 기준 새로고침", "Sonus 等限时活动 · 资格、额度和有效期以官方返回为准": "Sonus 등 기간 한정 이벤트 · 대상 조건, 크레딧 및 유효 기간은 공식 응답을 따릅니다", "UMID 组件安装失败:{error}": "UMID 컴포넌트 설치 실패: {error}", "UMID 组件已安装,可重新签到。": "UMID 컴포넌트가 설치되었습니다. 다시 출석할 수 있습니다.", "UMID 组件管理接口不可用,请刷新页面或更新网关。": "UMID 컴포넌트 관리 API를 사용할 수 없습니다. 페이지를 새로고침하거나 게이트웨이를 업데이트하세요.", "WorkBuddy 国内版 · 查询任务树后一键点亮 / 领奖 · 含开学季与猫猫旅行 · 点击行展开明细": "WorkBuddy 중국판 · 작업 트리를 조회한 뒤 한 번에 점등/수령 · 개학 시즌 이벤트와 고양이 여행 포함 · 행을 클릭하면 상세", "WorkBuddy 国际版保活模型,按顺序回退": "WorkBuddy 국제판 키핑 모델, 순서대로 폴백", "WorkBuddy 国际版日活任务的免费模型 · 全局一份,与条目无关": "WorkBuddy 국제판 일일 활동용 무료 모델 · 전역 단일 설정, 항목과 무관", "ZCode 自动领取验证": "ZCode 자동 수령 인증", "{date}(每天 {time})": "{date} (매일 {time})", "{done} / {total} 个账号已签": "계정 {total}개 중 {done}개 체크인 완료", "{done}/{total} 已签": "{done}/{total} 출석 완료", "{label} ×{count}({reason})": "{label} ×{count}({reason})", "{name}定时补签开关": "{name} 예약 보충 출석 스위치", "{name}签到时间": "{name} 출석 시각", "{n} 个平台": "플랫폼 {n}개", "{n} 个平台 · {groups} 组签到时间": "플랫폼 {n}개 · 시간 그룹 {groups}개", "{n} 个计划 · 北京时间 UTC+8": "계획 {n}개 · 베이징 시간 UTC+8", "{n} 个账号今天的重试次数已用完": "{n}개 계정이 오늘의 재시도 횟수를 모두 사용했습니다", "{n} 个账号等待窗口或活动": "계정 {n}개가 수령 시간 또는 이벤트 대기 중", "{n} 积分": "{n} 포인트", "{n} 项可完成": "{n}개 완료 가능", "{n} 项待领": "수령 대기 {n}건", "{points} 积分": "{points} 포인트", "{total} 账号 · {done} 已签": "계정 {total}개 · 출석 완료 {done}개", "{total} 项任务 · {pending} 项可完成": "작업 {total}개 · 완료 가능 {pending}개", "✅ UMID 组件已安装,下轮签到即可领取国际版积分": "✅ UMID 컴포넌트를 설치했습니다. 다음 출석부터 국제판 포인트를 수령할 수 있습니다", "✅ {message}": "✅ {message}", "✅ 定时签到已开启": "✅ 예약 출석이 켜졌습니다", "✅ 开学季任务执行完成": "✅ 개학 시즌 작업 실행 완료", "✅ 成长任务执行完成:积分 +{credit} 能量 +{energy}": "✅ 성장 과제 완료: 크레딧 +{credit} 에너지 +{energy}", "✅ 新手福利领取完成": "✅ 입문 혜택 수령 완료", "✅ 新手福利领取完成,累计 {n} 积分": "✅ 입문 혜택 수령 완료, 누적 {n} 포인트", "✅ 签到完成:{succeeded}/{total} 个账号成功领取{active}": "✅ 출석 완료: {succeeded}/{total}개 계정 수령 성공{active}", "「保活模型链」是 WorkBuddy 国际版领日活时用来保活的免费模型,按顺序逐个尝试、 第一个成功即止;清空提交恢复缺省({defaults})。 当天去重 + 幂等领取:重复执行只会拿到「已领取」,不会重复加分。": "\"키핑 모델 체인\"은 WorkBuddy 국제판 일일 활동에서 계정을 활성 상태로 유지하는 무료 모델입니다. 순서대로 시도하며 첫 성공에서 멈춥니다. 비운 채로 제출하면 기본값({defaults})으로 복원됩니다. 당일 중복 제거 + 멱등한 수령: 반복 실행해도 \"이미 수령됨\"만 반환되며 포인트가 이중으로 적립되지 않습니다.", "「保活模型链」是 WorkBuddy 国际版领日活时用来保活的免费模型,按顺序逐个尝试、 第一个成功即止;清空清单并保存 = 恢复缺省链(当前缺省:{defaults})。 当天去重 + 幂等领取:重复执行只会拿到「已领取」,不会重复加分。": "\"키핑 모델 체인\"은 WorkBuddy 국제판 일일 활동에서 계정을 활성 상태로 유지하는 무료 모델입니다. 순서대로 시도하며 첫 성공에서 멈춥니다. 목록을 비우고 저장하면 기본 체인(현재 기본값: {defaults})으로 복원됩니다. 당일 중복 제거 + 멱등한 수령: 반복 실행해도 \"이미 수령됨\"만 반환되며 포인트가 이중으로 적립되지 않습니다.", "「免费领积分」的每日任务 · 逐个领取": "「무료 포인트 받기」 일일 작업 · 하나씩 수령", "一次性福利 · 已领取状态保存在网关,领完无需重复查询 · 点击行展开任务清单": "일회성 혜택 · 수령 상태가 게이트웨이에 저장되어 수령 후 재조회가 필요 없습니다 · 행을 클릭해 작업 목록 펼치기", "一次性福利 · 签到后自动查询并领取,领完记在本机不再查上游 · 点击行展开任务清单": "일회성 혜택 · 출석 후 자동으로 조회하고 수령하며, 수령을 마치면 로컬에 기록해 업스트림을 더 조회하지 않음 · 행을 클릭해 작업 목록 펼치기", "一次性福利已全部结清": "일회성 혜택이 모두 정산되었습니다", "一次性福利已结清": "일회성 혜택이 정산되었습니다", "一次性福利已结清,无需重复查询": "일회성 혜택을 모두 수령했으므로 다시 조회할 필요가 없습니다", "一次领当天全部奖励(每日签到 + 新人礼) · 幂等由上游保证": "그날의 보상을 한 번에 일괄 수령합니다(매일 출석 + 신규 혜택) · 멱등성은 업스트림이 보장", "一键安装组件": "컴포넌트 한 번에 설치", "一键完成": "한 번에 완료", "一键领取({n})": "전체 수령({n})", "上一轮({time}):{n} 个动作,+{credit} 积分": "지난 회차({time}): {n}개 동작, +{credit} 크레딧", "上次执行:{line}": "마지막 실행: {line}", "上次签到时间": "최근 출석 시간", "上次领取 {time} · 领取需通过滑块验证码": "최근 수령 {time} · 수령 시 슬라이더 캡차 필요", "下一账号:{time}": "다음 계정: {time}", "下次 {date}": "다음 {date}", "下次 {date} · 点此管理条目": "다음 {date} · 클릭하여 항목 관리", "下次检查:{time}": "다음 확인: {time}", "下次自动执行": "다음 자동 실행", "不参与每日签到:{list}。CodeArts 的一次性奖励在下方「新手福利」,它与 ZCode 的每日/套餐福利领取见「活动福利」。": "일일 출석 제외: {list}. CodeArts의 일회성 보상은 아래 \"입문 혜택\"에 있으며, CodeArts와 ZCode의 일일/플랜 혜택 수령은 \"활동 혜택\"에서 볼 수 있습니다.", "不参与每日签到:{list}。CodeArts 的一次性奖励在下方「新手福利」,它的每日福利就在上方「每日签到」里;ZCode 的套餐领取见「活动福利」。": "일일 출석 제외: {list}. CodeArts의 일회성 보상은 아래 \"입문 혜택\"에, CodeArts의 일일 혜택은 바로 위 \"일일 출석\"에 있습니다. ZCode의 플랜 수령은 \"활동 혜택\"에서 볼 수 있습니다.", "不参与签到": "출석 대상 아님", "不可领": "수령 불가", "不自动重试等待中的活动": "대기 중인 이벤트를 자동 재시도하지 않음", "不适用": "해당 없음", "与国内版同一套任务接口 · 站点不同": "중국판과 동일한 작업 인터페이스 · 사이트만 다름", "与国内版同一套链路 · 站点不同、令牌不通用": "중국판과 동일한 경로 · 사이트가 다르고 토큰은 호환되지 않음", "与定时补签不同,仅处理窗口未开或活动暂未下发。": "예약 보충 출석과 달리 수령 시간이 열리지 않았거나 이벤트가 아직 배포되지 않은 경우만 처리합니다.", "与新人积分独立,不购买付费套餐、不自动续费": "신규 사용자 포인트와 별도이며 유료 요금제를 구매하거나 자동 갱신하지 않습니다.", "专属或自定义时间作为区间起点,沿用默认区间长度;每天重新随机,重启不改变当天安排。": "전용 또는 사용자 지정 시각을 시작 시각으로 사용하며 기본 시간대 길이를 따릅니다. 매일 무작위로 배정하고 재시작해도 당일 일정은 유지됩니다.", "个账号不参与": "개 계정 제외", "主签到区间结束后等待 {n} 分钟": "주 출석 시간대 종료 후 {n}분 대기", "主签到后等待 {n} 分钟": "주 출석 후 {n}분 대기", "主签到后等待(分钟)": "주 출석 후 대기(분)", "主签到已执行": "주 출석 실행됨", "主签到已执行不等于每个账号都已领取成功;账号结果请查看签到记录。": "주 출석이 실행되었다고 모든 계정의 수령이 성공한 것은 아닙니다. 계정별 결과는 출석 기록을 확인하세요.", "仅处理窗口未开或活动暂未下发的账号,不对所有错误反复执行。": "수령 시간이나 이벤트 배포를 기다리는 계정만 재시도하며 모든 오류를 반복하지 않습니다.", "仅开通官方报价为 0 元的个人体验套餐,固定关闭自动续费;奖励另行领取": "공식 가격이 0위안인 개인 체험 요금제만 자동 갱신을 끈 상태로 활성화합니다. 보상은 별도로 수령합니다.", "仅提交你填写的权益,不购买套餐;兑换码激活可能需要原客户端的设备标识。": "입력한 혜택만 교환하며 요금제를 구매하지 않습니다. 코드 활성화에 원래 클라이언트의 장치 식별 정보가 필요할 수 있습니다.", "今天 · 北京时间自然日": "오늘 · 베이징 시간 기준 날짜", "今天不再自动重试,明天自动重置。要现在再试一次,用签到计划里的「立即执行」。": "이 계정들은 오늘 더 이상 자동으로 재시도하지 않으며 내일 자동으로 초기화됩니다. 지금 다시 시도하려면 체크인 계획의 ‘지금 실행’을 사용하세요.", "今天已执行:{list}": "오늘 실행됨: {list}", "今天已领 {n} 份": "오늘 {n}건 받음", "今天未领": "오늘 미수령", "今天(北京时间 {day})已领取 · 官方确认到账 {n} 项 · 明天可再领": "오늘(베이징 시간 {day}) 수령 완료 · 공식 확인 반영 {n}건 · 내일 다시 수령 가능", "今日主签到": "오늘 주 출석", "今日已执行": "오늘 실행됨", "今日已派出": "오늘 이미 출발", "今日已签": "오늘 출석 완료", "今日已领取": "오늘 수령 완료", "今日已领取豆包工作签到奖励,已由官方确认": "오늘의 Doubao Work 출석 보상은 이미 수령했으며 공식 서비스에서 확인되었습니다.", "今日签到": "오늘 출석", "今日签到任务尚未满足领取条件": "오늘의 출석 과제가 아직 보상 수령 조건을 충족하지 않았습니다.", "今日签到进度": "오늘 출석 진행률", "从清单里移除": "목록에서 제거", "例如:每日自动签到": "예: 매일 자동 출석", "保存计划": "계획 저장", "保活": "키핑", "保活 API Key 已保存": "활동 유지 API Key를 저장했습니다", "保活 {n}": "키핑 {n}", "保活+领取": "키핑+수령", "保活中…": "키핑 중…", "保活模型链": "키핑 모델 체인", "保活模型链为全局配置,猫猫旅行有独立的开关与时刻。": "활동 유지 모델 체인은 전역 설정이며 고양이 여행은 별도 스위치와 시각을 사용합니다.", "先创建签到计划,再为它设置定时补签。": "먼저 출석 계획을 만든 뒤 예약 보충 출석을 설정하세요.", "先查询活动,再选择要领取的奖励;不会购买或订阅套餐": "이벤트를 조회한 후 받을 보상을 선택하세요. 요금제를 구매하거나 구독하지 않습니다.", "免费体验套餐": "무료 체험 요금제", "免费套餐已开通并确认生效": "무료 요금제를 활성화하고 적용을 확인했습니다", "兑换中…": "교환 중…", "兑换权益": "혜택 교환", "兑换结果待确认,请到官方客户端核对;不会重复提交": "교환 결과 확인 대기 중입니다. 공식 클라이언트에서 확인하세요. 중복 요청은 보내지 않습니다.", "兑换请求未得到确认,请到官方客户端核对;不要重复提交": "교환 요청을 확인하지 못했습니다. 공식 클라이언트에서 확인하고 다시 제출하지 마세요.", "全选": "전체 선택", "全部 {n} 家": "전체 {n}곳", "全部完成": "모두 완료", "全部查询": "전체 조회", "全部签到": "전체 출석", "全部类型": "모든 유형", "全部结果": "모든 결과", "全部账号均可签到": "모든 계정이 출석할 수 있습니다", "全部领取": "모두 받기", "关着:不自动巡检(仍可手动巡检)": "꺼짐: 자동 순회하지 않습니다(수동 순회는 가능)", "关着:所有条目都不执行": "꺼짐: 어떤 항목도 실행되지 않습니다", "关闭活动窗口重试不会关闭定时补签。插件提供下次重试时刻时,以插件返回的时间为准。": "이벤트 재시도를 꺼도 예약 보충 출석은 꺼지지 않습니다. 플러그인이 다음 재시도 시각을 제공하면 그 시각이 우선합니다.", "其他自动任务": "기타 자동 작업", "凭证不可用": "인증 정보 사용 불가", "凭证需刷新": "인증 정보 갱신 필요", "切换任务后,左侧只保留有账号的提供商": "작업을 전환하면 왼쪽에는 해당 작업에 계정이 있는 제공자만 표시됩니다", "删除失败:{error}": "삭제 실패: {error}", "删除定时条目": "예약 항목 삭제", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活并在网页通道建会话点亮日活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;CodeArts 领当日的运营福利(领取 → 确认 → 回读核实,自动执行受每天 6 次 / 间隔 10 分钟的写请求限流);OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "예정 시각에 체크한 제공자의 사용 가능한 계정을 자동으로 출석 체크합니다 (WorkBuddy 국내판은 매일 출석 API, 국제판은 데일리 액티비티 퀘스트: 이벤트 탐색 → 데일리 액티브 보상 수령 → 무료 모델로 킵얼라이브하고 웹 채널로 세션을 열어 일일 활성 점등. 소浣熊(샤오환슝)은 데스크톱 일일 포인트 경로, AutoClaw 는 공식 클라이언트의 매일 출석 작업. Qoder 중국판은 이벤트 수령 방식이며 이벤트를 배정받지 못한 계정은 중립적 안내를 받습니다. Qoder 국제판은 기기 리스크 관리 신원(로컬 Qoder 클라이언트 / qodercli 의 UMID 컴포넌트가 생성)을 먼저 갖춰야 \"매일 100 Credits\" 이벤트가 보이며, 컴포넌트가 없으면 오류 대신 명확한 설명을 받습니다. Trae 는 SOLO 의 매일 출석 포인트를 수령하고(자정 리셋), 업스트림이 이벤트를 열지 않았거나 자격 증명에 기기 번호가 없으면 오류 대신 \"미수령 + 사유\"를 받습니다. Loomy 는 매일 계정별 첫 로그인 포인트를 한 번 채우고, KukuAI 는 \"무료 포인트\" 일일 작업을 수령하며, CodeArts 는 당일 운영 혜택을 수령합니다(수령 → 확인 → 재조회 검증. 자동 실행은 하루 6 회 / 10 분 간격 쓰기 요청 제한 내). OfficeAce 는 당일 모든 보상을 한 번에 수령합니다 (매일 출석 + 신규 혜택)). 예정 시각을 놓쳐도 부팅 후 자동으로 보충하므로 전원이 꺼져 있어도 누락되지 않습니다. 각사 출석 API 는 멱등하여 반복 실행해도 중복 수령되지 않습니다.", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;CodeArts 领当日的运营福利(领取 → 确认 → 回读核实,自动执行受每天 6 次 / 间隔 10 分钟的写请求限流);OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "정해진 시각이 되면 선택한 제공자의 사용 가능한 계정으로 자동 출석합니다 (WorkBuddy 중국판은 매일 출석 체크 인터페이스, 국제판은 일일 활성 작업으로 진행합니다: 이벤트 탐지, 일일 활성 보상 수령, 무료 모델로 키핑; 小浣熊은 데스크톱 앱 일일 포인트 경로를 사용하고; AutoClaw는 공식 클라이언트의 매일 출석 작업을 사용합니다; Qoder 중국판은 이벤트 수령으로 진행하며, 이벤트가 배정되지 않은 계정은 중립적인 안내를 받습니다; Qoder 국제판은 기기 리스크 관리 신원(로컬 Qoder 클라이언트 / qodercli의 UMID 컴포넌트로 생성)을 먼저 갖춰야 「매일 100 Credits」 이벤트가 보이며, 컴포넌트가 없으면 오류 대신 명확한 설명이 표시됩니다; Trae는 SOLO의 매일 출석 포인트를 수령하며(자연일 0시 기준 초기화), 업스트림이 해당 계정에 이벤트를 열지 않았거나 자격 증명에 기기 번호가 없으면 오류 대신 「미수령 + 구체적 사유」가 표시됩니다; Loomy는 매일 계정당 최초 로그인 포인트를 한 번 적립합니다; KukuAI는 「무료 포인트 받기」 일일 작업을 수령합니다; CodeArts는 당일 운영 혜택을 수령합니다(수령 → 확인 → 재조회 검증, 자동 실행은 하루 6회 / 간격 10분의 쓰기 요청 제한이 적용됩니다); OfficeAce 는 그날의 보상을 한 번의 동작으로 일괄 수령합니다(매일 출석 + 신규 혜택)). 시각을 놓치면 부팅 후 자동으로 보충 출석하며, 당시 컴퓨터가 꺼져 있었다고 해서 빠지지 않습니다. 각 사의 출석 인터페이스는 멱등이므로 반복 실행해도 중복 수령되지 않습니다.", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "정해진 시각이 되면 선택한 제공자의 사용 가능한 계정으로 자동 출석합니다 (WorkBuddy 중국판은 매일 출석 체크 인터페이스, 국제판은 일일 활성 작업으로 진행합니다: 이벤트 탐지, 일일 활성 보상 수령, 무료 모델로 키핑; 小浣熊은 데스크톱 앱 일일 포인트 경로를 사용하고; AutoClaw는 공식 클라이언트의 매일 출석 작업을 사용합니다; Qoder 중국판은 이벤트 수령으로 진행하며, 이벤트가 배정되지 않은 계정은 중립적인 안내를 받습니다; Qoder 국제판은 기기 리스크 관리 신원(로컬 Qoder 클라이언트 / qodercli의 UMID 컴포넌트로 생성)을 먼저 갖춰야 「매일 100 Credits」 이벤트가 보이며, 컴포넌트가 없으면 오류 대신 명확한 설명이 표시됩니다; Trae는 SOLO의 매일 출석 포인트를 수령하며(자연일 0시 기준 초기화), 업스트림이 해당 계정에 이벤트를 열지 않았거나 자격 증명에 기기 번호가 없으면 오류 대신 「미수령 + 구체적 사유」가 표시됩니다; Loomy는 매일 계정당 최초 로그인 포인트를 한 번 적립합니다; KukuAI는 「무료 포인트 받기」 일일 작업을 수령합니다; OfficeAce 는 그날의 보상을 한 번의 동작으로 일괄 수령합니다(매일 출석 + 신규 혜택)). 시각을 놓치면 부팅 후 자동으로 보충 출석하며, 당시 컴퓨터가 꺼져 있었다고 해서 빠지지 않습니다. 각 사의 출석 인터페이스는 멱등이므로 반복 실행해도 중복 수령되지 않습니다.", "到点待执行": "시각 도달, 실행 대기", "到点时逐个签到,已勾 {n} / {total} 家": "정해진 시각에 하나씩 출석합니다. 선택 {n} / {total}개", "北京时间 · 已启用 {n} 个签到计划": "베이징 시간 · 출석 계획 {n}개 활성화", "北京时间 · 每天重复 · 随设置更新": "베이징 시간 · 매일 반복 · 설정에 따라 갱신", "北京时间 · 逗号分隔 · 最多 6 条 · 到点后最多晚 30 秒执行;错过时点开机后会补跑一轮。": "베이징 시간 · 쉼표 구분 · 최대 6개 · 정시에서 최대 30초 늦게 실행. 시각을 놓치면 부팅 후 한 번 따라 실행합니다.", "北京时间 · 错过区间会补跑未执行账号,重启保留当天安排;任务在网关执行,关闭手机不影响排程。": "베이징 시간 · 시간대를 놓치면 미실행 계정을 보충하고 재시작해도 당일 일정을 유지합니다. 작업은 게이트웨이에서 실행되므로 모바일 앱을 닫아도 일정에 영향이 없습니다.", "北京时间 · 错过时点开机后会自动补签": "베이징 시간 · 시간을 놓쳐도 시작 후 자동으로 보완됩니다", "区间内陆续签到": "시간대 내 순차 출석", "区间结束后等待(分钟)": "시간대 종료 후 대기(분)", "单账号签到不受范围限制": "개별 계정 체크인은 범위 제한을 받지 않습니다", "原套餐已到期或冻结,请在官方客户端处理;这里不会续费或变更套餐": "기존 요금제가 만료되었거나 동결되었습니다. 공식 클라이언트에서 관리하세요. 여기서는 요금제를 갱신하거나 변경하지 않습니다.", "去插件页安装签到能力": "플러그인 페이지에서 출석 기능 설치", "去领取": "수령하러 가기", "发放中": "지급 중", "发放失败": "지급 실패", "取消验证": "인증 취소", "另有 {n} 个账号不参与": "추가로 {n}개 계정은 대상이 아닙니다", "另有 {n} 个账号不参与每日签到": "그 외 {n}개 계정은 매일 출석 체크에 참여하지 않습니다", "只列当前任务里有账号的提供商。": "현재 작업에 계정이 있는 제공자만 표시합니다.", "只重试这些账号,不会重签整个计划。具体原因见签到记录。": "해당 계정만 재시도하며 전체 계획을 다시 출석하지 않습니다. 자세한 이유는 출석 기록을 확인하세요.", "只领取已完成任务的奖励(幂等,重复点不会重复入账)": "완료된 작업의 보상만 수령(멱등, 반복 클릭해도 중복 적립되지 않음)", "可使用管理员凭据调用:": "관리자 자격 증명으로 다음 API를 호출할 수 있습니다:", "可完成": "완료 가능", "可派出": "출발 가능", "可选 · 缺省显示时刻": "선택 · 기본값은 시간 표시", "可领": "수령 가능", "可领奖": "수령 가능", "各家区间起点": "제공자별 시작 시각", "同时控制定时签到、定时补签和活动窗口重试;猫猫旅行独立运行。": "예약 출석, 보충 출석, 이벤트 재시도를 함께 제어합니다. 고양이 여행은 독립적으로 실행됩니다.", "后端未返回 UMID 组件安装结果": "백엔드가 UMID 컴포넌트 설치 결과를 반환하지 않았습니다", "后端未返回 UMID 组件状态": "백엔드가 UMID 컴포넌트 상태를 반환하지 않았습니다", "后端未返回定时签到数据": "백엔드가 예약 데이터를 반환하지 않았습니다", "后端未返回巡检结果": "백엔드가 점검 결과를 반환하지 않았습니다", "后端未返回新手福利数据": "백엔드가 입문 혜택 데이터를 반환하지 않았습니다", "后端未返回有效的套餐状态": "게이트웨이가 유효한 요금제 상태를 반환하지 않았습니다", "后端未返回权益兑换结果": "게이트웨이가 교환 결과를 반환하지 않았습니다", "后端未返回活动福利数据": "게이트웨이에서 이벤트 혜택 데이터를 반환하지 않았습니다", "后端未返回签到中心数据": "백엔드가 출석 체크 센터 데이터를 반환하지 않았습니다", "启用的计划在各自区间内随机签到": "활성화된 계획은 각 시간대 내에서 무작위로 출석합니다", "启用签到计划 {name}": "출석 계획 {name} 활성화", "国际版签到需要 UMID 组件生成设备风控身份(本机未检测到)。": "국제판 출석에는 기기 리스크 관리 신원을 생성할 UMID 컴포넌트가 필요합니다 (이 기기에서 감지되지 않음).", "在桌面端设置": "데스크톱에서 설정", "在途": "여행 중", "基本设置": "기본 설정", "填入缺省链": "기본 체인 채우기", "填写你已有的兑换码或订单号": "보유한 코드 또는 주문 번호 입력", "填好时刻与签到范围后点「保存」;名称可以留空(界面显示时刻)": "시각과 출석 범위를 정한 뒤 「저장」을 누르세요. 이름은 비워도 됩니다(비우면 시각이 표시됩니다)", "失败 {n}": "실패 {n}", "奖励与权益 · 资格、额度和有效期以官方返回为准": "보상과 혜택 · 자격, 할당량 및 유효 기간은 공식 응답을 따릅니다", "套餐已冻结": "요금제 동결", "套餐已到期": "요금제 만료", "套餐已开通,无需重复操作": "요금제가 이미 활성화되어 있습니다. 다시 실행할 필요가 없습니다.", "套餐明细": "플랜 상세", "套餐查询凭证已过期,请先到账号页刷新凭证;此查询不会自动续期": "요금제 조회 인증 정보가 만료되었습니다. 먼저 계정 페이지에서 갱신하세요. 이 조회는 인증 정보를 자동 갱신하지 않습니다.", "套餐领取": "플랜 수령", "安装 Qoder 客户端或 qodercli 后即可(无需重启网关)。": "Qoder 클라이언트 또는 qodercli를 설치하면 됩니다 (게이트웨이 재시작 불필요).", "安装中…": "설치 중…", "安装后仍未检测到 UMID 组件,请重新检查。": "설치 후에도 UMID 컴포넌트가 감지되지 않습니다. 다시 확인하세요.", "官方客户端的每日签到任务": "공식 클라이언트의 매일 출석 작업", "官方拒绝套餐查询,请检查账号授权;这不一定表示 Token 已过期": "공식 서비스가 요금제 조회를 거부했습니다. 계정 권한을 확인하세요. 반드시 토큰이 만료되었다는 뜻은 아닙니다.", "官方显示自动续费已开启,请到官方客户端检查": "공식 서비스에서 자동 갱신이 켜져 있다고 표시합니다. 공식 클라이언트에서 확인하세요.", "官方未返回明确的套餐状态,暂不能开通": "공식 서비스가 명확한 요금제 상태를 반환하지 않아 현재 활성화할 수 없습니다.", "定时签到": "예약 출석", "定时签到和定时补签分开管理。补签沿用对应签到计划的平台范围,不重复领取已完成的账号。": "예약 출석과 보충 출석은 따로 관리합니다. 보충 출석은 연결된 계획의 플랫폼 범위를 사용하며 완료한 계정은 다시 수령하지 않습니다.", "定时签到已关闭": "예약 출석이 꺼졌습니다", "定时补签": "예약 보충 출석", "实际发放:{time}": "실제 지급: {time}", "实际时间由网关计算,晚窗口的平台会顺延补签;只处理当天未签到账号。": "실제 시각은 게이트웨이가 계산합니다. 늦은 수령 시간은 보충 출석도 늦어지며 오늘 미출석 계정만 처리합니다.", "实际签到安排": "실제 출석 일정", "实际补签": "실제 보충 출석", "实际补签取「主签到时间加等待间隔」与「补签不早于」中较晚的时刻。": "보충 출석은 '주 출석 시각 + 대기 간격'과 '보충 출석 시작 하한' 중 늦은 시각에 실행됩니다.", "对应主签到:{times}": "연결된 주 출석: {times}", "对应签到计划 · 沿用 {n} 个平台范围,只补未签到账号": "연결된 계획 · 같은 플랫폼 {n}개, 미출석 계정만 보충", "对应签到计划:{name}": "연결된 출석 계획: {name}", "尚未开始": "시작 전", "尚未开通套餐,可开通免费体验套餐": "아직 활성화된 요금제가 없습니다. 무료 체험 요금제를 활성화할 수 있습니다.", "尚未执行": "아직 실행 안 됨", "尚未查询": "아직 조회하지 않음", "尚未查询任务状态": "작업 상태를 아직 조회하지 않았습니다", "尝试领取": "수령 시도", "展开": "펼치기", "巡检一次": "한 번 점검", "巡检中…": "순회 중…", "巡检失败:{reason}": "점검 실패: {reason}", "已保存:{label}": "저장됨: {label}", "已保存:保活模型链": "저장됨: 키핑 모델 체인", "已保存:定时条目": "저장됨: 예약 항목", "已保存:猫猫旅行排程": "저장됨: 고양이 여행 스케줄", "已全部领取": "모두 수령 완료", "已删除定时条目": "예약 항목이 삭제되었습니다", "已发放": "지급 완료", "已完成活跃上报(连登已点亮),但活动未开启(本次没有可领的奖励)": "활동 보고 완료(연속 출석 점등), but 캠페인이 진행 중이 아닙니다(이번에 받을 보상 없음)", "已就绪": "준비 완료", "已开始批量签到": "일괄 출석을 시작했습니다", "已开通": "활성화됨", "已得 {earned} / {total} 积分": "{earned} / {total} 포인트 획득", "已执行 {n} / {total} 个平台": "플랫폼 {n} / {total}개 실행됨", "已执行 {n} / {total} 个账号": "계정 {n} / {total}개 실행됨", "已抽 {n} 次": "{n}회 추첨함", "已提交「{label}」的签到": "「{label}」 출석을 제출했습니다", "已暂停": "일시 중지됨", "已有结果 {checked} / 共 {total} 个账号": "결과 있음 {checked} / 전체 {total}개 계정", "已查 {checked} / {total} 个账号": "계정 {total}개 중 {checked}개 확인됨", "已确认不自动续费": "자동 갱신 꺼짐 확인 완료", "已确认领取": "수령 확인됨", "已签": "출석 완료", "已签到自动跳过": "출석 완료 계정 자동 건너뛰기", "已结束": "종료됨", "已选 {n} / {total} 个平台": "플랫폼 {n} / {total}개 선택됨", "已领 {claimed}/{total} · 累计 {earned} 积分": "수령 {claimed}/{total} · 누적 {earned} 포인트", "已领 {done} / {total} 份套餐": "플랜 {done} / {total}개 수령 완료", "已领养": "입양 완료", "已领取": "수령 완료", "已领取「{name}」": "「{name}」을(를) 수령했습니다", "带设备风控身份领取「每日 100 Credits」 · 需要 UMID 组件": "기기 리스크 관리 신원을 갖춰 「매일 100 Credits」 수령 · UMID 컴포넌트 필요", "平台与签到时间": "플랫폼과 출석 시각", "平台与随机签到区间": "플랫폼과 무작위 출석 시간대", "平台专属": "플랫폼 전용", "平台专属时间": "플랫폼 전용 시각", "平台专属时间由网关提供。自定义时间会覆盖专属时间,提前执行可能遇到窗口未开。": "플랫폼 전용 시각은 게이트웨이가 제공합니다. 사용자 지정 시각이 우선하며 너무 이르면 수령 시간이 아직 열리지 않을 수 있습니다.", "平台批次": "플랫폼 그룹", "开关": "스위치", "开启定时补签": "예약 보충 출석 활성화", "开启活动窗口重试": "이벤트 시간 재시도 활성화", "开始 {time}": "시작 {time}", "开学季执行失败:{error}": "개학 시즌 실행 실패: {error}", "开学季执行完成:{message}": "개학 시즌 실행 완료: {message}", "开学季活动": "개학 시즌 이벤트", "开着:启用的条目按各自时刻执行": "켜짐: 활성화된 항목이 각자의 시간에 실행됩니다", "开着:按下面的时刻自动巡检": "켜짐: 아래 시각에 자동 순회합니다", "开通中…": "활성화 중…", "开通免费套餐": "무료 요금제 활성화", "开通未得到确认,请重新查询套餐状态;不会自动重试开通": "활성화가 확인되지 않았습니다. 요금제 상태를 다시 조회하세요. 활성화는 자동으로 재시도하지 않습니다.", "开通结果待确认": "활성화 확인 대기", "开通请求仍在处理或结果待确认,请稍后查询,不要重复提交": "활성화 요청이 처리 중이거나 확인 대기 중입니다. 나중에 다시 조회하고 중복 제출하지 마세요.", "当前没有可领取的套餐": "지금 수령할 수 있는 플랜이 없습니다", "当前没有等待窗口或活动下发的账号。": "현재 수령 시간이나 이벤트 배포를 기다리는 계정이 없습니다.", "当前活动未提供每日签到任务": "현재 이벤트에는 일일 출석 과제가 없습니다.", "当前网关中,补签等待间隔与活动重试间隔共用;修改间隔会同步影响两者,开关与重试次数仍分别设置。": "현재 게이트웨이는 보충 대기와 이벤트 재시도 간격을 공유합니다. 변경하면 양쪽에 적용되지만 스위치와 횟수는 따로 설정합니다.", "当前账号暂不符合该活动的领取条件": "이 계정은 현재 이 보상의 수령 조건을 충족하지 않습니다", "当前账号未下发豆包工作签到活动,无需反复领取": "이 계정에는 Doubao Work 출석 이벤트가 제공되지 않았습니다. 수령을 반복할 필요가 없습니다.", "待发放": "지급 대기", "待执行": "실행 대기", "待签": "출석 대기", "待领取": "수령 대기", "待领新手福利": "수령 대기 입문 혜택", "总开关": "메인 스위치", "总开关已关闭": "전체 스위치가 꺼져 있습니다", "总开关已关闭 · 在「定时签到」页打开": "메인 스위치가 꺼져 있습니다 · \"예약 출석\" 탭에서 켜세요", "成功 {n}": "성공 {n}", "成长任务": "성장 과제", "成长任务完成({done} 项成功、{failed} 项失败),积分 +{credit} 能量 +{energy}": "성장 과제 완료(성공 {done}개, 실패 {failed}개): 크레딧 +{credit} 에너지 +{energy}", "成长任务执行失败:{error}": "성장 과제 실행 실패: {error}", "我已阅读并同意以下服务声明,仅授权开通零元体验套餐,不自动续费": "아래 서비스 약관을 읽고 동의하며, 자동 갱신 없이 0위안 체험 요금제 활성화만 승인합니다.", "所有时间按北京时间计算。每个账号每天随机安排一次,重启保留当天安排;错过区间时会补跑未执行账号。": "모든 시각은 베이징 시간입니다. 계정마다 매일 한 번 무작위 시각을 배정하고 재시작 후에도 유지합니다. 시간대를 놓치면 미실행 계정을 보충합니다.", "所有时间按北京时间计算。网关启动后会补跑当天已到点、尚未执行的签到,不会提前执行未来时点。": "모든 시각은 베이징 시간입니다. 시작 시 오늘 시간이 지난 미실행 출석을 보충하며 미래 시각을 미리 실행하지 않습니다.", "手动签到": "수동 체크인", "执行失败:{error}": "실행 실패: {error}", "执行并抽奖": "실행 및 추첨", "执行开学季任务并抽空抽奖机会(分享 / 对话 / 专家事件)": "개학 시즌 작업을 실행하고 추첨 기회를 모두 사용(공유/대화/전문가 이벤트)", "执行规则": "실행 규칙", "把缺省链填进清单,再点「保存」生效": "기본 체인을 목록에 채웁니다. 「저장」을 눌러야 반영됩니다", "抽奖机会 {n} 次": "추첨 기회 {n}회", "按住拖动调整顺序": "길게 눌러 드래그해 순서 변경", "按住拖动,调整这个模型在链里的顺序": "길게 눌러 드래그해 체인에서 이 모델의 순서를 조정합니다", "按序逐个尝试,共 {n} 个": "순서대로 시도, 총 {n}개", "按结果筛选": "결과로 필터", "授权被拒绝": "권한 승인 거부", "探测 + 领取 + 保活 · 与定时签到同一套组合": "탐지 + 수령 + 키핑 · 예약 출석과 동일한 조합", "探测活动并领取日活奖励 · 不做保活": "이벤트를 탐지해 일일 활성 보상을 수령 · 키핑은 하지 않음", "接单 + 点亮 + 领奖(只处理已实测沉淀的任务)": "수락 + 점등 + 수령(실측으로 검증된 작업만 처리)", "插件未就绪,范围仍保留": "플러그인 준비 안 됨, 범위 유지", "搜索平台": "플랫폼 검색", "搜索签到平台": "출석 플랫폼 검색", "搜账号 / 收益 / 错误 / 触发原因": "계정 / 수익 / 오류 / 트리거 사유 검색", "收起": "접기", "收起平台": "플랫폼 접기", "收起新建": "새 항목 닫기", "新建定时条目": "새 예약 항목", "新建签到计划": "새 출석 계획", "新手任务": "입문 과제", "新手福利": "입문 혜택", "新手福利与活动": "입문 혜택 및 이벤트", "新手福利是一次性任务:领完就没了,重复点不会重复加分。": "입문 혜택은 일회성 과제입니다. 수령하면 끝나며, 반복해서 눌러도 포인트가 중복 지급되지 않습니다.", "新手福利有 {n} 项领取失败,可重试": "입문 혜택 {n}건의 수령에 실패했습니다. 재시도할 수 있습니다", "新手福利领取失败 {n} 项": "입문 혜택 {n}건 수령 실패", "新用户积分": "신규 사용자 포인트", "新计划默认开启补签和活动窗口重试;保存后可到「定时补签」页单独调整。": "새 계획은 기본적으로 보충 출석과 이벤트 재시도를 활성화합니다. 저장 후 '예약 보충 출석'에서 따로 조정하세요.", "无": "없음", "无独立签到接口 · 每天替账号打一次登录信息(即当日魔粒)": "독립 출석 인터페이스 없음 · 매일 계정당 로그인 정보를 한 번 조회(당일 마립 지급)", "无独立签到接口 · 每天替账号打一次首次登录积分": "독립 출석 인터페이스 없음 · 매일 계정당 최초 로그인 포인트를 한 번 적립", "无账号": "계정 없음", "时刻": "시각", "暂不可领": "지금은 수령 불가", "暂不可领(未满足条件)": "아직 수령할 수 없습니다 (조건 미충족)", "暂不支持": "아직 미지원", "暂无可领取福利": "현재 수령할 수 있는 혜택이 없습니다", "暂无启用的条目": "활성화된 항목이 없습니다", "暂无启用的条目 · 点此添加": "활성화된 항목이 없습니다 · 클릭하여 추가", "暂无月度赠送记录": "월별 지급 기록 없음", "暂无活动": "진행 중인 이벤트 없음", "最近执行:{time}": "최근 실행: {time}", "最近结果:成功 {n} · 保活 {active} · 失败 {failed}": "최근 결과: 성공 {n} · 활동 유지 {active} · 실패 {failed}", "月度赠送": "월별 지급", "有平台到点待执行": "시각이 지난 플랫폼이 실행 대기 중", "有未保存的改动": "저장되지 않은 변경 사항이 있습니다", "未勾选提供商": "공급자 미선택", "未完成,请查看签到记录": "완료되지 않았습니다. 출석 기록을 확인하세요.", "未开启": "꺼짐", "未开通": "미활성화", "未执行开通,请查询套餐状态查看原因": "활성화를 실행하지 않았습니다. 요금제 상태를 조회해 이유를 확인하세요.", "未解锁": "잠김", "未领养(领养需先完成当日对话量)": "미입양(입양하려면 먼저 당일 대화량을 채워야 함)", "未领取": "미수령", "本地台账里今天还没领过;活动期内每天发一份新套餐": "로컬 기록상 오늘은 아직 받지 않았습니다. 이벤트 기간에는 매일 새 플랜이 한 건씩 지급됩니다", "本地台账里今天(北京时间)领过的套餐:{plans}": "로컬 기록상 오늘(베이징 시간) 받은 플랜: {plans}", "本次签到结果的记录时间:{time}(本机时区)": "이번 출석 결과의 기록 시각: {time}(로컬 시간대)", "本次自动领取未完成验证,请在套餐明细中手动领取": "이번 자동 수령 인증이 완료되지 않았습니다. 요금제 상세에서 직접 수령하세요.", "本轮已跳过:{reason}": "이번 실행은 건너뛰었습니다: {reason}", "权益兑换成功,重新查询可查看最新记录": "혜택을 교환했습니다. 다시 조회하면 최신 기록을 확인할 수 있습니다.", "权益兑换未成功": "혜택 교환에 실패했습니다", "权益兑换码 / 订单号": "교환 코드 / 주문 번호", "条启用": "개 활성화", "来源说明中的时刻是定时条目的名称或基准时刻,不是本次执行时间": "실행 출처 설명의 시각은 예약 항목의 이름 또는 기준 시각이며, 이번 실행 시각이 아닙니다", "果办免费体验套餐": "OfficeAce 무료 체험 요금제", "果办套餐接口不可用,请更新主程序和提供商插件": "OfficeAce 요금제 API를 사용할 수 없습니다. 앱 본체와 제공업체 플러그인을 업데이트하세요.", "果办服务声明": "OfficeAce 서비스 약관", "查看平台": "플랫폼 보기", "查看签到记录": "출석 기록 보기", "查询于 {time}": "조회 시각 {time}", "查询任务": "작업 조회", "查询任务树并一键点亮 / 领奖(含开学季与猫猫旅行)": "작업 트리를 조회하고 한 번에 점등/수령(개학 시즌과 고양이 여행 포함)", "查询只读取套餐状态,点击开通后才会执行": "조회는 요금제 상태만 읽습니다. 활성화 버튼을 눌러야 실행됩니다.", "查询失败:{error}": "조회 실패: {error}", "查询套餐": "요금제 조회", "查询活动": "이벤트 조회", "查询结果": "결과 확인", "桌面端每日积分链路": "데스크톱 앱 일일 포인트 경로", "次数按账号每天单独计算:重试到上限的账号今天不再重试,明天自动重置。": "횟수는 계정별·일별로 계산합니다. 상한에 도달한 계정은 오늘 다시 시도하지 않고 내일 초기화됩니다.", "正在为本次领取验证;若出现滑块,请手动完成": "이번 수령을 인증하고 있습니다. 슬라이더가 나타나면 직접 완료해 주세요.", "正在读取 UMID 组件状态…": "UMID 컴포넌트 상태를 읽는 중…", "正在读取定时签到数据…": "예약 출석 데이터를 읽는 중…", "正在读取签到数据…": "출석 데이터를 읽는 중…", "每个签到计划对应一组补签设置": "출석 계획마다 보충 설정 연결", "每个账号每天在区间内随机执行一次;开始与结束相同则按固定时刻执行。": "계정마다 매일 시간대 내 무작위 시각에 한 번 실행합니다. 시작과 종료가 같으면 고정 시각에 실행합니다.", "每天 {time}": "매일 {time}", "每天 {time} · {scope}": "매일 {time} · {scope}", "每天定点巡检 · 一趟推进一步 · 与签到排程互相独立": "매일 정시 순회 · 1회당 1단계 · 체크인 스케줄과 독립", "每天执行": "매일 실행", "每天按这里的时刻自动巡检一遍 WorkBuddy 国内版账号:没有猫就领养、在家就派出、到站就领奖。一趟只推进一步,所以建议留两个时刻(早上派出、晚上领奖)。企业版与国际版账号自动跳过。": "여기 지정한 시각에 WorkBuddy 중국판 계정을 자동 순회합니다: 고양이가 없으면 입양, 대기 중이면 출발, 도착했으면 보상을 수령합니다. 1회당 1단계만 진행되므로 두 개의 시각(아침 출발, 저녁 수령)을 권장합니다. 엔터프라이즈 및 국제판 계정은 자동으로 건너뜁니다.", "每天时刻": "매일 시각", "每天自动执行": "매일 자동 실행", "每天补查一次": "매일 한 번 보충 확인", "每天补查一轮,只处理今天未签到的账号。": "매일 한 번, 오늘 미출석 계정만 확인합니다.", "每执行一次签到 · 每个账号一条明细 · 结果与收益以后端落账为准": "출석 실행마다 · 계정별 한 행 · 결과와 수익은 백엔드 기록 기준", "每日活动签到(+100 积分,已领则中性提示)": "일일 활동 체크인(+100 크레딧, 이미 받았으면 중립 안내)", "每日活跃任务 · 网页会话保活点亮日活,领取才加积分 · 两者可分开执行": "매일 활성 작업 · 웹 채널 세션으로 일일 활성 달성, 포인트는 수령 시 적립 · 두 가지는 따로 실행 가능", "每日登录积分 · 顺带领取会员活动 · 访客账号无积分体系(跳过)": "매일 로그인 포인트 · 회원 활동 함께 수령 · 게스트 계정은 포인트 체계 없음(건너뜀)", "每日福利 · 领取 → 确认 → 回读核实 · 按北京时间自然日重置": "일일 혜택 · 수령 → 확인 → 재조회 검증 · 베이징 시간 자연일 기준 초기화", "每日签到": "매일 출석 체크", "每日签到积分": "일일 출석 포인트", "每条条目各有时刻与范围 · 各自当天去重 · 错过时点开机自动补签": "항목별 시간과 범위 · 항목별 당일 중복 제거 · 시작 시 자동 보완", "每账号一条明细": "계정당 1개 항목", "每账号一条明细 · 点此查看「签到记录」": "계정별 한 행 · \"출석 기록\" 열기", "每账号每天最多重试(次)": "계정별 일일 최대 재시도(회)", "没有专属时间的平台跟随默认时间;已有专属或自定义时间的平台不会被覆盖。": "전용 시각이 없는 플랫폼은 기본 시각을 따릅니다. 전용 또는 사용자 지정 시각은 유지됩니다.", "没有匹配的平台": "일치하는 플랫폼 없음", "没有可执行账号": "실행 가능한 계정 없음", "没有可签到的账号": "출석할 수 있는 계정이 없습니다", "没有可领套餐的账号(ZCode 未添加)。": "수령할 플랜이 있는 계정이 없습니다 (ZCode 미추가).", "没有可领福利的账号(CodeArts / ZCode 未添加)。": "혜택을 수령할 수 있는 계정이 없습니다 (CodeArts / ZCode 미추가).", "没有支持成长任务的账号(需要 WorkBuddy 国内版)。": "성장 과제를 지원하는 계정이 없습니다(WorkBuddy 중국판 필요).", "没有支持新手福利的账号": "입문 혜택을 지원하는 계정이 없습니다", "没有支持新手福利的账号 —— 目前有 Loomy、小浣熊、CodeArts 三家。": "입문 혜택을 지원하는 계정이 없습니다 — 현재 Loomy, 小浣熊, CodeArts 세 곳입니다.", "没有支持活动福利的账号,请添加账号并更新提供商插件。": "이벤트 혜택을 지원하는 계정이 없습니다. 계정을 추가하고 제공업체 플러그인을 업데이트하세요.", "没有符合条件的账号。": "조건에 맞는 계정이 없습니다.", "没有符合筛选条件的签到记录": "필터 조건에 맞는 출석 기록이 없습니다", "没有需要执行的任务": "실행할 작업이 없습니다", "活动奖励领取成功": "이벤트 보상을 수령했습니다", "活动尚未开始(上游接口未部署)": "이벤트가 아직 시작되지 않았습니다 (업스트림 엔드포인트 미배포)", "活动开始:{time}": "이벤트 시작: {time}", "活动按自然日发新套餐,每天可领一次": "이벤트는 날짜마다 새 플랜을 지급하며, 하루에 한 번 수령할 수 있습니다", "活动未开放或已结束,请重新查询": "이벤트가 아직 시작되지 않았거나 종료되었습니다. 다시 조회하세요.", "活动福利": "이벤트 혜택", "活动福利接口不可用,请更新网关后重试": "이벤트 혜택 API를 사용할 수 없습니다. 게이트웨이를 업데이트한 후 다시 시도하세요.", "活动窗口重试": "이벤트 시간 재시도", "活动窗口重试已关闭,等待窗口或活动下发的账号不会自动再试。": "수령 시간 재시도가 꺼져 있습니다. 수령 시간이나 이벤트 배포를 기다리는 계정은 자동으로 재시도되지 않습니다.", "活动领取未成功,请重新查询后再试": "보상을 수령하지 못했습니다. 다시 조회한 후 재시도하세요.", "活动(campaign)领取 · 每天 10:00 刷新": "캠페인(campaign) 수령 · 매일 10:00 새로고침", "活跃上报与保活均未成功,且活动未开启": "활동 보고와 keep-alive 모두 실패했고 캠페인도 진행 중이 아닙니다", "活跃上报完成,但保活未成功且活动未开启": "활동 보고는 완료되었지만 keep-alive에 실패했고 캠페인도 진행 중이 아닙니다", "活跃上报完成,但活动未开启": "활동 보고 완료, but 캠페인이 진행 중이 아닙니다", "活跃上报成功": "활동 보고 성공", "活跃保活失败": "활성 키핑 실패", "活跃保活完成": "활성 키핑 완료", "活跃保活完成,但活动未开启": "활성 키핑 완료, 다만 이벤트는 열리지 않았습니다", "活跃保活完成,但活跃上报失败且活动未开启": "keep-alive는 완료되었지만 활동 보고에 실패했고 캠페인도 진행 중이 아닙니다", "添加条目": "항목 추가", "添加模型": "모델 추가", "清单为空 —— 保存后恢复缺省链": "목록이 비어 있습니다 — 저장하면 기본 체인으로 복원됩니다", "清单里已经有「{name}」": "목록에 \"{name}\"이(가) 이미 있습니다", "清空失败:{error}": "비우기 실패: {error}", "清空签到记录": "출석 기록 비우기", "滚动 24 小时签到;按插件返回的时间等待下一次领取,不以自然日重复领取": "이전 수령부터 24시간 기준 출석입니다. 자정에 다시 수령하지 않고 플러그인이 알려 준 다음 시각까지 기다립니다.", "点「套餐明细」看领到了哪几份、什么时候生效;活动期内每天可再领": "\"플랜 상세\"에서 어떤 플랜을 받았고 언제 적용되는지 확인하세요. 이벤트 기간에는 매일 다시 받을 수 있습니다", "点击行展开账号明细 · 单账号签到不受范围限制": "행을 클릭해 계정 상세 펼치기 · 개별 계정 출석은 범위 제한을 받지 않습니다", "点进去查看任务并领取": "눌러서 과제를 확인하고 수령하세요", "状态未确认": "상태 미확인", "独立链路 · 只提供手动入口 · 不进自动签到": "독립 경로 · 수동 진입점만 제공 · 자동 출석에는 포함되지 않음", "猫猫旅行": "고양이 여행", "猫猫旅行失败:{error}": "고양이 여행 실패: {error}", "猫猫旅行失败:{message}": "고양이 여행 실패: {message}", "猫猫旅行定时排程": "고양이 여행 스케줄", "猫猫旅行:{message}": "고양이 여행: {message}", "猫猫旅行:{n} 个动作,+{credit} 积分": "고양이 여행: {n}개 동작, +{credit} 크레딧", "猫猫旅行:{n} 个动作,+{credit} 积分,{failed} 个失败": "고양이 여행: {n}개 동작, +{credit} 크레딧, {failed}개 실패", "用免费模型与网页会话维持账号活跃 · 不领取奖励": "무료 모델과 웹 채널 세션으로 계정 활성 유지 · 보상은 수령하지 않음", "由官方按期自动发放,这里只展示记录,不重复领取。": "공식 서비스가 일정에 따라 자동 지급합니다. 여기서는 기록만 표시하며 중복 수령하지 않습니다.", "确定删除「{name}」?删除后到点不再执行。": "\"{name}\"을(를) 삭제할까요? 삭제 후 예약 시간에 실행되지 않습니다.", "确定删除「{name}」?对应的定时补签与活动重试也会一并移除,签到记录保留。": "'{name}'을 삭제할까요? 연결된 보충 출석과 이벤트 재시도도 삭제되며 출석 기록은 유지됩니다.", "确定清空全部签到记录?清空后无法恢复。": "모든 출석 기록을 비울까요? 비운 후에는 복구할 수 없습니다.", "确定清空当前筛选出的签到记录?清空后无法恢复。": "현재 필터된 출석 기록을 비울까요? 비운 후에는 복구할 수 없습니다.", "确认兑换": "교환 확인", "确认把这份权益兑换到当前账号?兑换后可能无法撤销。": "현재 계정에 이 혜택을 교환할까요? 교환 후에는 취소할 수 없을 수 있습니다.", "移除 {name}": "{name} 제거", "立即全部签到": "지금 전체 출석", "立即巡检全部": "지금 전체 순회", "立即执行「{name}」会手动签到整个计划范围,不等待平台时点。窗口未开的平台可能仍无法领取。": "'{name}'을 지금 실행하면 플랫폼 시각을 기다리지 않고 전체 범위에 수동 출석합니다. 수령 시간이 열리지 않았다면 보상을 받지 못할 수 있습니다.", "等待时点": "시각 대기", "等待签到区间": "출석 시간대 대기", "等待签到时间": "출석 시각 대기", "签到": "출석", "签到与补签计划已暂停,配置仍保留;手动执行不受总开关影响。": "출석과 보충 계획은 중지되지만 설정은 유지됩니다. 수동 실행은 전체 스위치의 영향을 받지 않습니다.", "签到中…": "출석 중…", "签到中心分区": "출석 센터 구역", "签到功能分类": "출석 기능 분류", "签到区间": "출석 시간대", "签到失败:{error}": "출석 실패: {error}", "签到完成:{succeeded}/{total} 成功{active},{failed} 个失败": "출석 완료: {succeeded}/{total} 성공{active}, {failed}개 실패", "签到完成:{success}/{total} 成功,保活 {active},失败 {failed}": "출석 완료: {success}/{total} 성공, {active}개 활성 유지, {failed}개 실패", "签到成功": "출석 성공", "签到提供商": "출석 제공자", "签到日期按北京时间计算": "출석 날짜는 베이징 시간을 기준으로 계산됩니다", "签到时间": "출석 시각", "签到类型": "체크인 유형", "签到范围": "출석 범위", "签到触发时刻": "출석 실행 시각", "签到计划": "출석 계획", "签到记录": "출석 기록", "签到记录时间范围": "출석 기록 시간 범위", "签到记录表": "출석 기록 표", "管理定时签到": "예약 출석 관리", "累计签到记录": "누적 출석 기록", "结束时间不能早于开始时间,暂不支持跨天区间。": "종료 시각은 시작보다 이를 수 없습니다. 자정을 넘는 시간대는 아직 지원하지 않습니다.", "结算于 {time}": "결산 시각 {time}", "编辑签到计划": "출석 계획 편집", "缺少套餐开通凭证,请通过果办网页登录补齐授权": "요금제 활성화 인증 정보가 없습니다. OfficeAce 웹 로그인으로 권한 승인을 완료하세요.", "缺少开通凭证": "활성화 인증 정보 없음", "网关设备组件": "게이트웨이 기기 컴포넌트", "能量 {n}": "에너지 {n}", "腾讯每日签到接口 · 仅国内版": "텐센트 매일 출석 인터페이스 · 중국판 전용", "自动巡检已暂停:{reason}": "자동 점검이 일시 중지되었습니다: {reason}", "自动执行已开启": "자동 실행 활성화됨", "自动执行已暂停": "자동 실행 중지됨", "自动执行总开关": "자동 실행 전체 스위치", "自定义时间": "사용자 지정 시각", "至少勾一家才能保存(不勾等于这条条目不签到)": "저장하려면 최소 한 곳을 선택하세요(선택하지 않으면 이 항목은 아무것도 출석하지 않습니다)", "补签不早于": "보충 출석 시작 하한", "补签不早于 {time}": "{time} 이후 보충 출석", "补签单独设置,只检查今天还没有签到的账号。": "보충 출석을 따로 설정하며 오늘 미출석 계정만 확인합니다.", "补签取「主签到区间结束加等待间隔」与「补签不早于」中较晚的时刻,不会提前补签尚未轮到的账号。": "보충 출석은 주 시간대 종료에 대기 간격을 더한 시각과 보충 출석 시작 하한 중 늦은 시각에 실행합니다. 차례를 기다리는 계정을 미리 처리하지 않습니다.", "补签在主签到区间结束后执行,只补未签到账号。": "보충 출석은 주 시간대 종료 후 미출석 계정만 처리합니다.", "补签已关闭": "보충 출석 꺼짐", "补签已关闭,不影响主签到;开启后会自动生成各平台的补签安排。": "보충 출석이 꺼져도 주 출석은 영향을 받지 않습니다. 켜면 플랫폼별 보충 일정이 생성됩니다.", "补签已开启": "보충 출석 켜짐", "补签检查": "보충 출석 확인", "补签计划": "보충 출석 계획", "触发会话活跃并观测积分变化;未观测到新发放时不会标为已签到": "세션을 활성화하고 포인트 변화를 확인합니다. 새 지급이 확인되지 않으면 출석 완료로 표시하지 않습니다.", "计划名称": "계획 이름", "订单 {order} · 第 {period} 期": "주문 {order} · {period}회차", "设备校验未就绪,部分活动可能不显示:{reason}": "기기 인증을 사용할 수 없어 일부 이벤트가 표시되지 않을 수 있습니다: {reason}", "设置各平台每天的签到时间,按窗口分批执行。": "플랫폼별 매일 출석 시각을 설정하고 수령 시간에 따라 나누어 실행합니다.", "设置定时补签": "예약 보충 출석 설정", "设置每天的签到区间,各账号在区间内随机错峰执行。": "매일 출석 시간대를 설정합니다. 각 계정은 시간대 내 무작위 시각에 분산 실행됩니다.", "设置活动窗口重试": "이벤트 시간 재시도 설정", "设置补签": "보충 출석 설정", "该权益已兑换,无需重复提交": "이미 교환한 혜택입니다. 다시 제출하지 마세요.", "该活动已领取,无需重复领取": "이미 수령한 보상입니다. 다시 수령할 필요가 없습니다.", "该账号当前没有可领取的限时活动": "이 계정에서 현재 수령할 수 있는 기간 한정 보상이 없습니다", "请填写合法区间,结束不早于开始,并至少选择一家提供商。": "종료가 시작보다 이르지 않은 유효한 시간대를 입력하고 제공자를 하나 이상 선택하세요.", "请检查时间、间隔和次数是否在允许范围内。": "시각, 간격, 횟수가 허용 범위 안에 있는지 확인하세요.", "请至少选择一个签到平台": "출석 플랫폼을 하나 이상 선택하세요", "读取定时签到数据失败:{error}": "예약 출석 데이터 로드 실패: {error}", "读取签到数据失败:{error}": "출석 데이터 읽기 실패: {error}", "读取签到记录失败:{error}": "출석 기록 로드 실패: {error}", "调整重试": "재시도 조정", "豆包工作今日领取仍未确认,请前往官方客户端查看;再次点击仅查询结果,不会重复领取": "Doubao Work의 오늘 수령 결과가 아직 확인되지 않았습니다. 공식 앱에서 확인하세요. 다시 클릭해도 결과만 조회하며 중복 수령하지 않습니다.", "豆包工作签到奖励已领取,已回查确认": "Doubao Work 출석 보상을 수령했으며 재조회로 확인했습니다.", "豆包工作领取结果待确认,稍后只查询结果,不会重复提交领取": "Doubao Work 수령 결과를 확인 중입니다. 이후에는 결과만 조회하며 수령 요청을 중복 전송하지 않습니다.", "账号未使用官方果办网关地址,无法在此开通免费套餐": "이 계정은 공식 OfficeAce 게이트웨이 주소를 사용하지 않아 여기서 무료 요금제를 활성화할 수 없습니다.", "跟随默认时间": "기본 시각 따름", "跳过 {n}": "건너뜀 {n}", "运营活动交付(领取 → 确认 → 回读核实)· 领的是套餐赠送积分": "운영 이벤트 전달 (수령 → 확인 → 재조회 검증) · 플랜 증정 포인트를 수령합니다", "还有 {n} 个平台未执行": "플랫폼 {n}개 아직 미실행", "还没执行过": "아직 실행된 적 없음", "还没有可签到的提供商。签到能力随提供商插件包提供,装好并添加账号后这里就会出现。": "아직 체크인할 수 있는 제공자가 없습니다. 체크인 기능은 제공자 플러그인 팩과 함께 제공되며, 팩을 설치하고 계정을 추가하면 여기에 나타납니다.", "还没有定时条目 —— 点「添加条目」建一条,或到「签到中心」手动签到。": "예약 항목이 아직 없습니다 — \"항목 추가\"로 만들거나 \"출석 센터\"에서 수동으로 출석하세요.", "还没有签到计划,先选择平台和默认时间。": "출석 계획이 없습니다. 먼저 플랫폼과 기본 시각을 선택하세요.", "还没有签到记录 —— 手动签到或等定时条目执行后,明细会出现在这里。": "출석 기록이 아직 없습니다 — 수동 출석 또는 예약 실행 후 여기에 상세 내역이 표시됩니다.", "还没有记录": "기록이 없습니다", "这个账号没有新手任务": "이 계정에는 입문 과제가 없습니다", "这里只修改定时签到;补签和活动重试配置保持原样,在「定时补签」页单独设置。": "여기서는 예약 출석만 수정합니다. 보충과 이벤트 재시도 설정은 유지되며 '예약 보충 출석'에서 따로 설정합니다.", "这里只管理签到时间;补签与活动窗口重试在独立页设置。": "여기서는 출석 시각만 관리합니다. 보충과 이벤트 재시도는 별도 페이지에서 설정합니다.", "连登 {n} 天": "연속 로그인 {n}일", "选填": "선택 사항", "选择 {name}": "{name} 선택", "选择平台后显示实际签到时间": "플랫폼을 선택하면 실제 출석 시각 표시", "部分": "일부", "重新查询": "다시 조회", "重新检查": "다시 확인", "重签": "재출석", "重试": "다시 시도", "重试关闭": "재시도 꺼짐", "重试已暂停": "재시도 중지됨", "重试开启": "재시도 켜짐", "重试间隔(分钟)": "재시도 간격(분)", "间隔 {gap} 分钟 · 每账号每天最多重试 {limit} 次": "간격 {gap}분 · 계정별 하루 최대 {limit}회 재시도", "间隔填 0 会关闭活动窗口重试;定时补签仍至少等待 1 分钟,不会一起关闭。": "간격 0은 이벤트 재시도를 끕니다. 예약 보충 출석은 최소 1분 대기하며 함께 꺼지지 않습니다.", "限时体验套餐 · 领取需滑块验证码 · 逐份查看与领取": "기간 한정 체험 플랜 · 수령 시 슬라이더 인증 필요 · 항목별로 확인하고 수령", "限时体验套餐(start-plan),活动期内每天一份 · 领取需滑块验证码": "기간 한정 체험 플랜(start-plan), 이벤트 기간 내 매일 1회 · 수령 시 슬라이더 캡차 필요", "限时活动与体验套餐 · 查询后逐项领取 · 不影响每日签到": "기간 한정 보상 및 체험 요금제 · 조회 후 개별 수령 · 일일 출석과 별도", "随机签到开始": "무작위 출석 시작", "随机签到结束": "무작위 출석 종료", "随签到计划暂停": "출석 계획과 함께 중지", "需人工处理": "수동 처리 필요", "需真实操作": "실제 조작 필요", "需要人工验证": "사용자 인증 필요", "非活动期": "이벤트 기간 아님", "项": "건", "预计发放:{time}": "예정 지급: {time}", "领取": "수령", "领取中": "수령 중", "领取中…": "수령 중…", "领取免费 CodingPlan(按需:套餐有效时只回读额度)": "무료 CodingPlan 받기(필요 시에만: 플랜이 유효하면 할당량만 조회)", "领取后 {days} 天有效": "수령 후 {days}일간 유효", "领取失败": "수령 실패", "领取失败:{error}": "수령 실패: {error}", "领取奖励": "보상 수령", "领取截止:{time}": "수령 마감: {time}", "领取时间:{time}": "수령 시각: {time}", "领取结果待确认": "수령 결과 확인 대기", "领取结果待确认,请稍后查询;不会重复提交领取": "수령 결과를 확인 중입니다. 나중에 다시 조회하세요. 수령 요청을 중복 전송하지 않습니다.", "领取被拒绝": "수령 거부됨", "领取通常需要过一次滑块验证;活动套餐多为当天稍晚生效,领取后可在桌面端「账号」里看套餐明细。": "수령하려면 보통 슬라이더 인증을 통과해야 합니다. 이벤트 플랜은 대개 당일 늦게 적용되며, 수령 후 데스크톱 「계정」에서 플랜 상세를 확인할 수 있습니다.", "领取验证任务已结束,请到套餐明细查看结果": "이 인증 작업은 종료되었습니다. 요금제 상세에서 결과를 확인하세요.", "额度到期:{time}": "크레딧 만료: {time}", "验证凭据正在提交,领取结果请查看签到记录": "인증 정보를 제출하고 있습니다. 수령 결과는 출석 기록에서 확인하세요.", "验证提交结果未确认,请查看签到记录,勿重复领取": "인증 제출 결과가 확인되지 않았습니다. 출석 기록을 확인하고 수령을 반복하지 마세요.", "默认 {time} · {n} 个平台 · {groups} 组签到时间": "기본 {time} · 플랫폼 {n}개 · 시간 그룹 {groups}개", "默认使用第一把可用 API Key,想换就在上面选一把": "기본적으로 첫 번째 사용 가능한 API Key를 사용합니다. 바꾸려면 위에서 선택하세요.", "默认签到时间": "기본 출석 시각", "(共 {n} 个账号)": "(전체 {n}개 계정)", "(能量 / 连登读数本次未取到)": "(에너지/연속 로그인 수치는 이번에 가져오지 못했습니다)", ",日活保活 {n} 个": ", 일일 활성 키핑 {n}개", " 字段": " 필드에 저장됩니다", " 的 ": "의 ", "{enabled} / {total} 个已开启": "{enabled} / {total}개 활성화됨", "{name}开关": "{name} 스위치", "{name}间隔": "{name} 간격", "{name}间隔必须是 {min}–{max} 分钟的整数": "{name} 간격은 {min}~{max}분 사이의 정수여야 합니다", "{n} 秒后": "{n}초 후", "✅ {task}:{summary}": "✅ {task}: {summary}", "✅ 已更新「{label}」": "✅ 「{label}」을(를) 업데이트했습니다", "上次执行 {time}": "최근 실행 {time}", "上次执行 {time}({result})": "최근 실행 {time}({result})", "上次执行中断,没有完整结果;请核对账号状态": "이전 실행이 중단되어 전체 결과가 없습니다. 계정 상태를 확인하세요.", "下次执行 {time}": "다음 실행: {time}", "下次执行 {time}({relative})": "다음 실행 {time}({relative})", "仅维护过期或即将过期的凭证": "만료되었거나 곧 만료될 자격 증명만 관리합니다", "仅记录状态与结果,不展示密钥或令牌。": "상태와 결과만 기록하며 키나 토큰은 표시하지 않습니다.", "仅重试失败项": "실패한 항목만 재시도", "仅重试这一项": "이 항목만 재시도", "任务正在执行中,请稍候": "작업이 이미 실행 중입니다. 잠시 기다려 주세요.", "任务清单": "작업 목록", "任务配置保存在 ": "작업 설정은 ", "停留在「报表」页时按此间隔重新拉取统计数据;页面不可见时不请求。": "「리포트」 페이지에 머무는 동안 이 간격으로 통계 데이터를 다시 가져옵니다. 페이지가 보이지 않으면 요청하지 않습니다.", "停留在「日志」页时按此间隔重新拉取系统事件;页面不可见时不请求。": "「로그」 페이지에 머무는 동안 이 간격으로 시스템 이벤트를 다시 가져옵니다. 페이지가 보이지 않으면 요청하지 않습니다.", "停留在「请求日志」页时按此间隔重新拉取请求日志;页面不可见时不请求。": "「요청 로그」 페이지에 머무는 동안 이 간격으로 요청 로그를 다시 가져옵니다. 페이지가 보이지 않으면 요청하지 않습니다.", "全部触发方式": "모든 실행 방식", "全部跳过": "모두 건너뜀", "共 {n} 次执行": "총 {n}회 실행", "关闭自动维护不影响手动执行,也不影响对话请求所需的按需续期。": "자동 관리를 꺼도 수동 실행이나 대화 요청에 필요한 자격 증명 갱신에는 영향을 주지 않습니다.", "冷却中,{relative}重试": "쿨다운 중, {relative} 재시도", "冷却至 {time}": "{time}까지 대기", "凭证变化": "자격 증명 변경", "凭证已更新": "자격 증명 갱신됨", "凭证未过期或临期": "자격 증명이 만료되지 않았으며 만료가 임박하지도 않았습니다", "凭证维护": "자격 증명 관리", "凭证自动维护": "자격 증명 자동 관리", "分钟执行一次": "분마다 실행", "刚刚已执行,请稍后重试": "방금 실행한 작업입니다. 잠시 후 다시 시도하세요.", "刷新前有效期": "갱신 전 만료 시각", "刷新后有效期": "갱신 후 만료 시각", "刷新记录": "기록 새로고침", "即将执行": "곧 실행", "原因 / 说明": "이유 / 설명", "去账号页处理": "계정 페이지로 이동", "只刷新过期或即将过期的账号凭证": "만료되었거나 곧 만료될 계정 자격 증명만 갱신합니다", "可填 {min}–{max}": "입력 범위: {min}~{max}", "可填 {min}–{max} {unit}(默认 {def} {unit})": "{min}–{max} {unit} 입력 가능 (기본 {def} {unit})", "固定模型清单": "고정 모델 목록", "失败重试": "실패 항목 재시도", "定时任务已刷新": "예약 작업을 새로고침했습니다", "定时查询积分": "정기 포인트 조회", "定期向 GitHub 查询最新发布版本,默认每 20 分钟一次。检查结果、排期和限流冷却跨重启保留;手动检查也会合并重复请求并遵守冷却。开关与间隔在「软件更新」面板的「更新设置」弹窗里配置(定时任务页不再渲染这一条)。": "정기적으로 GitHub에서 최신 릴리스 버전을 조회하며, 기본 20분에 한 번입니다. 확인 결과, 예약 주기, 속도 제한 쿨다운은 재시작 후에도 유지됩니다. 수동 확인도 중복 요청을 병합하고 쿨다운을 따릅니다. 스위치와 간격은 「소프트웨어 업데이트」 패널의 「업데이트 설정」 팝업에서 구성합니다 (예약 작업 페이지에는 이 항목이 더 이상 표시되지 않습니다).", "定期拉取最新模型清单,重启沿用排期与缓存。客户端读取模型列表的后台刷新也遵守本任务开关、间隔和失败冷却;手动获取模型可提前刷新。": "정기적으로 최신 모델 목록을 가져오며, 재시작 후에도 예약 주기와 캐시를 유지합니다. 클라이언트가 모델 목록을 읽을 때의 백그라운드 새로고침도 이 작업의 스위치, 간격, 실패 쿨다운을 따릅니다. 모델을 수동으로 가져오면 더 일찍 새로고침할 수 있습니다.", "定期拉取最新模型清单,重启沿用排期与缓存。客户端读取模型列表的后台刷新也遵守本任务开关、间隔和失败冷却;手动获取模型可提前刷新。同一轮顺带刷新 models.dev 模型元数据(能力位与思考档位,可在设置页单独关闭)。": "정기적으로 최신 모델 목록을 가져오며, 재시작 후에도 예약 주기와 캐시를 유지합니다. 클라이언트가 모델 목록을 읽을 때의 백그라운드 새로고침도 이 작업의 스위치, 간격, 실패 쿨다운을 따릅니다. 모델을 수동으로 가져오면 더 일찍 새로고침할 수 있습니다。 같은 라운드에서 models.dev 모델 메타데이터(능력 플래그와 사고 등급, 설정 페이지에서 별도로 끌 수 있습니다)도 함께 새로고침합니다.", "定期获取各提供商的最新模型清单": "각 제공업체의 최신 모델 목록을 정기적으로 가져옵니다", "定期遍历账号,只刷新已过期或临期的凭证。重启后沿用上次排期,失败账号在冷却后重试;转发需要的按需续期不受此开关影响。": "정기적으로 계정을 순회하며 만료되었거나 만료가 임박한 자격 증명만 갱신합니다. 재시작 후에도 마지막 예약 주기를 유지하고, 실패한 계정은 쿨다운 후 다시 시도합니다. 포워딩에 필요한 온디맨드 갱신은 이 스위치의 영향을 받지 않습니다.", "客户端触发": "클라이언트 요청", "尚未执行维护": "아직 실행되지 않음", "尚未执行维护,自动或手动执行后会显示结果": "아직 관리 작업을 실행하지 않았습니다. 자동 또는 수동 실행 후 결과가 표시됩니다.", "已在设置里关闭 models.dev 模型元数据": "설정에서 models.dev 모델 메타데이터를 껐습니다", "已执行": "실행됨", "已更新 {n} 条": "{n}개 항목 업데이트됨", "已续期并确认凭证更新": "자격 증명을 갱신하고 변경을 확인했습니다", "已获取最新模型目录": "최신 모델 카탈로그를 가져왔습니다", "建议重试时间": "권장 재시도 시각", "当前没有可用的目录账号": "카탈로그를 가져올 수 있는 계정이 없습니다", "成功提供商": "성공한 제공업체", "成功账号": "성공한 계정", "手动触发": "수동 실행", "执行中断": "실행 중단됨", "执行中断,结果可能已部分生效,请先核对账号状态": "실행이 중단되었습니다. 일부 변경이 적용되었을 수 있으니 계정 상태를 먼저 확인하세요.", "执行失败:{reason}": "실행 실패: {reason}", "执行时的结果快照,不随账号后续变化而改变": "실행 당시의 결과이며 이후 계정이 변경되어도 달라지지 않습니다", "执行时间": "실행 시각", "执行明细": "실행 상세", "执行汇总": "실행 요약", "执行间隔(分钟)": "실행 간격(분)", "报表自动刷新": "리포트 자동 새로고침", "指定账号不属于该提供商、未启用或没有可用凭证": "지정 계정이 다른 제공업체에 속하거나 비활성화되었거나 사용 가능한 자격 증명이 없습니다", "提供商当前不可用,未执行目录更新": "제공업체를 현재 사용할 수 없어 카탈로그를 업데이트하지 않았습니다", "搜索账号或提供商": "계정 또는 제공업체 검색", "收起明细": "내역 접기", "改动立即生效,不需要重启程序": "변경 사항은 즉시 적용되며 프로그램을 재시작할 필요가 없습니다", "无失败项": "실패 없음", "日志页自动刷新": "로그 페이지 자동 새로고침", "明细状态筛选": "항목 상태 필터", "暂无维护记录,首次执行后会自动保存": "아직 관리 기록이 없습니다. 첫 실행 후 자동으로 저장됩니다.", "暂无记录": "기록 없음", "最近一次": "마지막 실행", "有失败项": "실패 있음", "有效期已延长": "유효 기간 연장됨", "未使用账号": "계정 사용 안 함", "未变更": "변경 없음", "未注册的提供商": "등록되지 않은 제공업체", "未返回失败原因": "실패 이유가 반환되지 않았습니다", "本次无需更新,沿用现有状态": "업데이트가 필요하지 않아 현재 상태를 유지합니다", "本轮共 {n} 项": "이번 실행 총 {n}개 항목", "本轮没有符合条件的项目": "이번 실행에 조건과 일치하는 항목이 없습니다", "查看凭证与模型目录的每次维护结果,失败和跳过都有原因": "자격 증명과 모델 카탈로그의 모든 관리 결과를 확인하고 실패 및 건너뛴 이유를 볼 수 있습니다", "查看原因": "이유 보기", "查看明细": "내역 보기", "查看详情": "상세 정보 보기", "模型基础信息": "모델 기본 정보", "模型目录": "모델 카탈로그", "模型目录刷新": "모델 카탈로그 새로고침", "模型目录更新": "모델 카탈로그 업데이트", "正在加载定时任务…": "예약 작업을 불러오는 중…", "正在读取维护记录…": "관리 기록을 불러오는 중…", "此前仅有汇总,尚无逐项记录": "이전에는 요약만 저장되어 항목별 내역이 없습니다", "每 {n} 分钟": "{n}분마다", "没有可显示的定时任务。后端未返回任务清单,请确认网关正在运行。": "표시할 예약 작업이 없습니다. 백엔드가 작업 목록을 반환하지 않았습니다. 게이트웨이가 실행 중인지 확인하세요.", "没有符合筛选条件的维护记录": "필터 조건과 일치하는 관리 기록이 없습니다", "沿用缓存或当前没有可用的目录来源": "캐시를 사용 중이거나 현재 사용할 수 있는 카탈로그 출처가 없습니다", "沿用缓存,尚未到刷新时间": "아직 업데이트 시간이 되지 않아 캐시를 사용합니다", "状态每 20 秒自动同步": "상태는 20초마다 자동 동기화", "由页面按间隔自动刷新": "페이지가 간격에 따라 자동 새로고침", "登录授权已失效,需要重新登录该账号": "로그인 인증이 만료되었습니다. 해당 계정에 다시 로그인하세요.", "目录最近更新时间": "카탈로그 최근 업데이트", "立即执行": "지금 실행", "立即检查": "지금 확인", "维护已完成,结果已保存": "관리 작업이 완료되어 결과를 저장했습니다", "维护已开始,结果会自动更新,可离开此页": "관리 작업을 시작했습니다. 결과는 자동으로 갱신되며 이 페이지를 떠나도 됩니다.", "维护已执行,但完整结果未能保存;请先核对账号状态,不要反复执行": "관리 작업은 실행되었으나 전체 결과를 저장하지 못했습니다. 반복 실행하지 말고 계정 상태를 먼저 확인하세요.", "维护已结束,有失败项,请查看明细": "관리 작업이 끝났지만 실패한 항목이 있습니다. 내역을 확인하세요.", "维护接口不可用,请更新网关并重新打开页面": "관리 기능을 사용할 수 없습니다. 게이트웨이를 업데이트한 뒤 페이지를 다시 여세요.", "维护正在执行,完成后会显示逐项结果": "관리 작업을 실행 중입니다. 완료 후 항목별 결과가 표시됩니다.", "维护类型": "관리 유형", "维护记录保留 {days} 天,最多 {count} 次;仅保存结果,不保存密钥或令牌。": "관리 기록은 {days}일 동안 최대 {count}회까지 보관합니다. 결과만 저장하며 키나 토큰은 저장하지 않습니다.", "维护设置": "관리 설정", "维护设置未能保存到数据库,请检查磁盘空间和权限": "관리 설정을 데이터베이스에 저장하지 못했습니다. 디스크 공간과 권한을 확인하세요.", "自动和手动维护,统一在这里查看": "자동 및 수동 관리 결과를 한곳에서 확인", "自动维护与手动执行共用同一份结果记录": "자동 및 수동 실행 결과를 같은 기록에 저장합니다", "自动维护已关闭": "자동 관리 꺼짐", "自动触发": "자동 실행", "触发方式": "실행 방식", "该提供商不支持主动刷新凭证(没有续期手段)": "이 제공업체는 자격 증명 갱신을 지원하지 않습니다", "该提供商使用固定模型清单": "이 제공업체는 고정 모델 목록을 사용합니다", "该次执行未完成,没有完整明细": "실행이 완료되지 않아 전체 내역이 없습니다", "请求日志页自动刷新": "요청 로그 페이지 자동 새로고침", "账号已不存在,未执行维护": "계정이 더 이상 존재하지 않아 관리 작업을 실행하지 않았습니다", "软件版本检查": "소프트웨어 업데이트 확인", "还没有执行记录": "실행 기록이 없습니다", "逐个提供商更新模型目录,模型基础信息单独列出结果": "제공업체별 모델 카탈로그를 업데이트하며 모델 기본 정보 결과는 별도로 표시합니다", "部分失败": "일부 실패", "部分设置可能已保存,请核对后重试:{reason}": "일부 설정이 이미 저장되었을 수 있습니다. 확인 후 다시 시도하세요: {reason}", "重新加载": "다시 불러오기", "重试生成新记录,不覆盖本次结果": "재시도는 새 기록을 만들며 현재 결과를 덮어쓰지 않습니다", "间隔不能为空(可填 {min}–{max} {unit})": "간격은 비울 수 없습니다 ({min}–{max} {unit} 입력 가능)", "间隔必须在 {min}–{max} {unit} 之间(当前填的是 {value})": "간격은 {min}–{max} {unit} 사이여야 합니다 (현재 입력: {value})", "间隔必须是整数": "간격은 정수여야 합니다", "页面自动刷新": "페이지 자동 새로고침", "debug 及以上": "debug 이상", "info 及以上": "info 이상", "warn 及以上": "warn 이상", "{matched} / {total} 条": "{matched} / {total}건", "{minutes} 分 {seconds} 秒": "{minutes}분 {seconds}초", "{n} 个启动失败": "{n}개 시작 실패", "{n} 个已就绪": "{n}개 준비됨", "{n} 个等待恢复": "{n}개 복구 대기 중", "{n} 条": "{n}건", "{n} 毫秒": "{n}밀리초", "✅ 已导出 {count} 条日志到 {file}": "✅ 로그 {count}건을 내보냈습니다: {file}", "上游": "업스트림", "上游接口请求": "업스트림 API 요청", "事件摘要": "이벤트 요약", "事件日志时间范围": "이벤트 로그 시간 범위", "事件详情": "이벤트 상세", "仅 error": "error만", "仅显示调试记录,供排查问题使用。": "문제 해결에 사용하는 디버그 기록만 표시합니다.", "仅错误": "오류만", "余额查询失败": "잔액 조회 실패", "余额查询完成": "잔액 조회 완료", "余额查询未配置": "잔액 조회 미설정", "信息": "정보", "信息及以上": "정보 이상", "全部事件": "전체 이벤트", "全部分类": "전체 분류", "全部级别": "전체 레벨", "共享运行环境尚未就绪,不代表这个插件本身损坏。请在插件页查看加载诊断。": "공유 실행 환경이 아직 준비되지 않았으며, 플러그인 자체가 손상되었다는 뜻은 아닙니다. 플러그인 페이지에서 로딩 진단을 확인하세요.", "关联标识": "연관 ID", "出站参数归一": "발신 매개변수 정규화", "分类": "분류", "分页按折叠后的组数计算": "페이지는 접힌 그룹 수를 기준으로 계산합니다", "加载插件": "플러그인 불러오기", "原始消息": "원본 메시지", "原始记录": "원본 기록", "原始记录 {n} 条": "원본 기록 {n}건", "发生时间": "발생 시간", "各阶段耗时": "단계별 소요 시간", "启动结果": "시작 결과", "启动超时": "시작 시간 초과", "启动进程": "프로세스 시작", "处理建议": "권장 조치", "复制原始记录": "원본 기록 복사", "复制失败": "복사 실패", "复制当前筛选结果": "필터 결과 복사", "复制本页原始记录": "이 페이지의 원본 기록 복사", "导出": "내보내기", "导出当前筛选": "필터 결과 내보내기", "已复制 {n} 条日志": "로그 {n}건을 복사했습니다", "已暂停刷新": "새로고침 일시 중지됨", "恢复刷新": "새로고침 재개", "折叠重复日志": "반복 로그 접기", "按分类筛选": "분류로 필터링", "按最低级别筛选": "최소 레벨로 필터링", "插件名称": "플러그인 이름", "插件启动失败": "플러그인 시작 실패", "插件启动存在异常": "일부 플러그인을 시작하지 못했습니다", "插件启动完成,{n} 个已就绪": "플러그인 시작 완료: {n}개 준비됨", "插件启动超时": "플러그인 시작 시간 초과", "插件已就绪": "플러그인 준비 완료", "插件已恢复运行": "플러그인이 복구되었습니다", "插件暂不可用,等待运行环境恢复": "실행 환경 복구를 기다리는 동안 플러그인을 사용할 수 없습니다", "插件暂时无法使用": "플러그인을 일시적으로 사용할 수 없습니다", "插件未能就绪": "플러그인이 준비되지 못했습니다", "插件未能正常停止": "플러그인이 정상적으로 중지되지 않았습니다", "插件编号": "플러그인 ID", "插件进程已退出": "플러그인 프로세스가 종료되었습니다", "搜索关键字": "키워드 검색", "搜索插件、消息、提供商或账号": "플러그인, 메시지, 제공자 또는 계정 검색", "搜索插件、消息、提供商或账号…": "플러그인, 메시지, 제공자 또는 계정 검색…", "搜索消息、提供商或账号": "메시지, 제공자 또는 계정 검색", "搜索消息、提供商或账号…": "메시지, 제공자 또는 계정 검색…", "搜索消息关键词": "메시지 키워드 검색", "搜索消息关键词…": "메시지 키워드 검색…", "操作失败:{error}": "작업 실패: {error}", "日志视图": "로그 보기", "日志详情": "로그 상세", "日志详情视图": "로그 상세 보기", "显示 {groups} 组 · 原始记录 {entries} 条": "{groups}개 그룹 · 원본 기록 {entries}건", "显示启动汇总和需要关注的事件;单个插件的正常启动记录在“全部事件”中。": "시작 요약과 주의가 필요한 이벤트를 표시합니다. 개별 플러그인의 정상 시작 기록은 '전체 이벤트'에서 볼 수 있습니다.", "显示所有已保留的事件;技术信息可在详情中查看。": "보관된 모든 이벤트를 표시합니다. 기술 정보는 상세 정보에서 확인할 수 있습니다.", "暂停刷新": "새로고침 일시 중지", "暂无日志": "로그가 없습니다", "暂无日志可导出": "내보낼 로그가 없습니다", "有 {n} 条新日志": "새 로그 {n}건", "服务": "서비스", "未记录插件名称": "플러그인 이름이 기록되지 않음", "本次启动超过等待时限。请在插件页查看加载诊断,确认后重新加载。": "시작 대기 시간이 초과되었습니다. 플러그인 페이지에서 로딩 진단을 확인한 후 다시 불러오세요.", "查看日志详情:{message}": "로그 상세 보기: {message}", "查看最新": "최신 로그 보기", "模型 {model}": "모델 {model}", "次数": "횟수", "正在加载日志…": "로그 불러오는 중…", "没有符合条件的日志": "조건에 맞는 로그가 없습니다", "没有符合筛选条件的日志": "필터 조건에 맞는 로그가 없습니다", "清空中…": "비우는 중…", "清空当前筛选": "필터 결과 비우기", "清空运行日志": "실행 로그 비우기", "状态码": "상태 코드", "用时 {duration}": "소요 시간 {duration}", "登记提供商": "제공자 등록", "相关功能暂不可用,原因见详情": "관련 기능을 일시적으로 사용할 수 없습니다. 원인은 상세 정보에서 확인하세요", "确定清空全部运行日志?清空后无法恢复。": "전체 실행 로그를 비울까요? 비운 후에는 복구할 수 없습니다.", "确定清空当前筛选出的 {count} 条日志?清空后无法恢复。": "현재 필터링된 {count}건의 로그를 비울까요? 비운 후에는 복구할 수 없습니다.", "系统事件": "시스템 이벤트", "级别": "레벨", "结束阅读": "읽기 종료", "结果未确认": "결과 미확인", "脱敏": "민감 정보 마스킹", "自动刷新": "자동 새로고침", "自动刷新已关闭": "자동 새로고침 꺼짐", "自动签到": "자동 체크인", "补充系统消息": "시스템 메시지 추가", "警告": "경고", "警告 {n}": "경고 {n}건", "警告及以上": "경고 및 오류", "计费接口请求": "과금 API 요청", "详细信息": "상세 정보", "请在插件页查看加载诊断,确认原因后重新加载。": "플러그인 페이지에서 로딩 진단으로 원인을 확인한 후 다시 불러오세요.", "读取日志失败": "로그를 불러오지 못했습니다", "调试": "디버그", "调试 {n}": "디버그 {n}건", "调试详情": "디버그 상세", "调试采集未开启,仅显示已保留的记录。可在设置中开启调试模式。": "디버그 수집이 꺼져 있어 보관된 기록만 표시합니다. 새 기록을 수집하려면 설정에서 디버그 모드를 켜세요.", "运行日志已清空": "실행 로그를 비웠습니다", "部分插件暂不可用。请在插件页查看异常插件的加载诊断。": "일부 플러그인을 일시적으로 사용할 수 없습니다. 플러그인 페이지에서 해당 플러그인의 로딩 진단을 확인하세요.", "重要事件": "중요 이벤트", "错误": "오류", "错误 {n}": "오류 {n}건", "阅读模式": "읽기 모드", "阅读模式,列表保持不动": "읽기 모드: 목록 위치 유지", "附加数据": "추가 데이터", " · {n} 进行中": " · {n} 처리 중", " · 会话粘住": " · 세션 고정", "

    无响应原文
    ": "
    응답 원문 없음
    ", "
    无法解析响应内容
    ": "
    응답 내용을 파싱할 수 없음
    ", "
    无法解析请求体(不是含 messages 数组的 JSON)
    ": "
    요청 본문을 파싱할 수 없음(messages 배열을 포함한 JSON이 아님)
    ", "
    无请求原文
    ": "
    요청 원문 없음
    ", "
    调用工具 {name}
    ": "
    도구 호출 {name}
    ", "响应原文": "응답 원문", "思考过程": "사고 과정", "请求原文": "요청 원문", "HTTP {status},但响应体阶段出错": "HTTP {status}이지만 응답 본문 단계에서 오류 발생", "HTTP {status},但响应体阶段出错:见错误列": "HTTP {status}이지만 응답 본문 단계에서 오류 발생: 오류 열 참조", "{duration} / 首帧 {first}": "{duration} / 첫 프레임 {first}", "{m}分{s}秒": "{m}분 {s}초", "{n}秒": "{n}초", "{s}秒{ms}ms": "{s}초{ms}ms", "↻ {n} 次": "↻ {n}회", "↻ 重试 {n} 次": "↻ 재시도 {n}회", "✅ 压缩完成": "✅ 압축 완료", "「仅看进行中」开启时,状态固定为进行中": "「처리 중만 보기」가 켜져 있으면 상태는 처리 중으로 고정됩니다", "上游模型繁忙,请求已排进上游队列;网关正按上游建议的时长等待后重发(不是登录态或额度问题)": "업스트림 모델이 혼잡하여 요청이 업스트림 대기열에 들어갔습니다. 게이트웨이는 업스트림이 권장한 시간만큼 기다린 뒤 다시 전송합니다(로그인 상태나 할당량 문제가 아닙니다)", "上游没有返回积分消耗": "업스트림이 포인트 사용량을 반환하지 않았습니다", "上游状态码: {status}": "업스트림 상태 코드: {status}", "上游请求已发出,正在等第一个字节到达(模型的思考时间也在这段)": "업스트림 요청을 보냈고 첫 바이트가 도착하기를 기다리는 중입니다(모델의 사고 시간도 이 구간에 포함됩니다)", "上游返回错误": "업스트림이 오류를 반환했습니다", "下游请求的模型:{model}": "다운스트림 요청 모델: {model}", "仅清空报文原文": "원문만 비우기", "仅看进行中": "처리 중만 보기", "令牌": "Token", "体积": "크기", "供应商": "공급자", "供应商归属规则": "공급자 귀속 규칙", "保存中…": "저장 중…", "保存归属规则": "귀속 규칙 저장", "保留 {count} 条请求记录 · 将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "요청 기록 {count}건 유지 · 업스트림 {upstream}건, 다운스트림 본문 {downstream}건 삭제 · DB 크기 {db}", "保留 {count} 条请求记录;将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。用量统计与报表不变。": "요청 기록 {count}건을 유지하고 업스트림 디버그 페이로드 {upstream}건과 다운스트림 본문 {downstream}건을 삭제합니다. 사용량 통계와 보고서는 변경되지 않습니다.", "保留统计行与报表,只抹掉请求 / 响应正文。清理后详情弹窗的「预览对话」将无原文可看,统计数字分毫不动。": "통계 행과 리포트는 유지하고 요청 / 응답 본문만 지웁니다. 정리 후 상세 대화상자의 「대화 미리보기」에서는 볼 원문이 없어지고, 통계 수치는 전혀 변하지 않습니다.", "保留草稿并读取最新设置": "임시 보관 후 최신 설정 다시 읽기", "保留请求记录、用量统计与报表,同时清理上游调试报文和下游请求 / 响应正文。清理后「预览对话」与「原始报文」不再保留原文。有筛选时只清理命中请求的报文;无筛选时清空两侧全部报文。此操作无法恢复。": "요청 기록, 사용량 통계 및 보고서를 유지하면서 업스트림 디버그 페이로드와 다운스트림 요청 / 응답 본문을 삭제합니다. 정리 후 대화 미리보기와 원시 페이로드에 원문이 남지 않습니다. 필터가 있으면 일치하는 요청의 페이로드만, 필터가 없으면 양쪽의 모든 페이로드를 삭제합니다. 이 작업은 되돌릴 수 없습니다.", "全部删除": "모두 삭제", "全部提供商": "모든 제공자", "全部模型": "모든 모델", "全部状态": "모든 상태", "全部请求数据": "전체 요청 데이터", "共 {images} 张图片,复用 {cached} 张识读结果": "이미지 {images}개, 읽기 결과 {cached}개 재사용", "共 {n} 次尝试": "총 {n}회 시도", "共 {n} 次尝试,最终由 {provider} 承载": "총 {n}회 시도, 최종적으로 {provider}에서 처리됨", "其它": "기타", "内容按原样保存,请求头中的凭据字段已替换为 [redacted]": "내용은 원본 그대로 저장되며, 요청 헤더의 자격 증명 필드는 [redacted]로 대체되었습니다", "内部重试": "내부 재시도", "切换视觉模型": "비전 모델 전환", "切换路径:": "전환 경로: ", "列表数据已刷新,请重试(关闭后重新打开这条详情)": "목록 데이터가 갱신되었습니다. 다시 시도하세요(닫은 후 이 상세를 다시 열어 주세요)", "删除归属规则": "귀속 규칙 삭제", "删除日志记录本身。当前有筛选时只删命中的条目,按天聚合报表不受影响;无筛选时清空全部并重置报表。此方式无法恢复。": "로그 레코드 자체를 삭제합니다. 현재 필터가 있으면 적중한 항목만 삭제하며 일별 집계 리포트는 영향을 받지 않습니다. 필터가 없으면 전부 비우고 리포트를 초기화합니다. 이 방식은 복구할 수 없습니다.", "删除请求记录,并同步清理对应的上游调试报文与下游正文。有筛选时只删除命中的记录,按天聚合报表不受影响;无筛选时清空全部并重置报表。此操作无法恢复。": "요청 기록과 해당 업스트림 디버그 페이로드 및 다운스트림 본문을 함께 삭제합니다. 필터가 있으면 일치하는 기록만 삭제하고 일별 보고서는 유지합니다. 필터가 없으면 모두 삭제하고 보고서를 초기화합니다. 이 작업은 되돌릴 수 없습니다.", "压缩中…": "압축 중…", "压缩失败:{message}": "압축 실패: {message}", "压缩已在后台开始,完成后会自动提示": "압축이 백그라운드에서 시작되었습니다. 완료되면 자동으로 알려드립니다", "压缩已在进行中": "압축이 이미 진행 중입니다", "压缩已在进行中,接上它的进度等待完成": "압축이 이미 진행 중입니다. 기존 진행 상황에 이어 완료를 기다립니다", "压缩数据库": "DB 압축", "压缩正在后台执行,完成后自动恢复": "압축이 백그라운드에서 실행 중입니다. 완료되면 자동으로 복원됩니다", "原始报文": "원시 페이로드", "原模型": "원래 모델", "取消": "취소", "另有 {missing} 次尝试未记录明细(只保留最早的 {kept} 条)": "그 외 {missing}회 시도는 상세가 기록되지 않았습니다(가장 이른 {kept}건만 보관)", "另有 {n} 个词命中": "그 외 {n}개 단어 적중", "只显示正在转发中的请求(状态列按阶段显示:连接中 / 等待响应 / 响应中 / 重试中,用时列显示已用时)": "포워딩 중인 요청만 표시합니다(상태 열은 단계별로 표시: 연결 중 / 응답 대기 / 응답 중 / 재시도 중, 소요 시간 열은 경과 시간 표시)", "只看失败": "실패만 보기", "只看成功": "성공만 보기", "只看进行中": "처리 중만 보기", "命中了敏感词": "민감 단어 적중", "命中依据:{header} · {pattern}": "판정 근거: {header} · {pattern}", "命中的敏感词": "적중한 민감 단어", "命中规则:{provider} → {client}": "적용 규칙: {provider} → {client}", "响应中": "응답 중", "响应体": "응답 본문", "响应头": "응답 헤더", "回收已删除数据占用的磁盘空间(checkpoint + VACUUM,后台执行)": "삭제된 데이터가 차지한 디스크 공간 회수(checkpoint + VACUUM, 백그라운드 실행)", "图片处理用时:{n} 秒": "이미지 처리 시간: {n}초", "在设置 → 通用里开启「调试模式」后,新发生的请求才会保存报文": "설정 → 일반에서 「디버그 모드」를 켜야 새로 발생하는 요청부터 페이로드가 저장됩니다", "在路由页查看": "라우팅 페이지에서 보기", "处理中": "처리 중", "失败": "실패", "失败请求不记录用量": "실패한 요청은 사용량을 기록하지 않음", "失败({status}):{error}": "실패({status}): {error}", "失败:{error}": "실패: {error}", "实际发给上游 {bytes} 字节": "업스트림에 실제 전송한 {bytes} 바이트", "客户端": "클라이언트", "将删除 {count} 条日志 · 其中 {raw} 条仍带报文原文 · 数据库占用 {db}": "{count}건의 로그를 삭제합니다 · 그중 {raw}건은 페이로드 원문이 남아 있음 · DB 크기 {db}", "将删除 {count} 条请求记录 · 同步清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "요청 기록 {count}건 삭제 · 업스트림 {upstream}건, 다운스트림 본문 {downstream}건 함께 삭제 · DB 크기 {db}", "将删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "요청 기록 {count}건과 업스트림 디버그 페이로드 {upstream}건, 다운스트림 본문 {downstream}건을 삭제합니다.", "尝试 {n} ·": "시도 {n} ·", "尝试明细": "시도 상세", "尝试次数": "시도 횟수", "工具结果": "도구 결과", "工具结果 · {id}": "도구 결과 · {id}", "工具结果图片": "도구 결과 이미지", "已删除 {count} 条": "{count}건 삭제됨", "已删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "요청 기록 {count}건과 업스트림 디버그 페이로드 {upstream}건, 다운스트림 본문 {downstream}건을 삭제했습니다.", "已受理终止:上游连接已断开,列表稍后刷新为「请求已被手动终止」": "중단 요청 접수됨: 업스트림 연결이 끊어졌으며, 목록은 잠시 후 「요청이 수동으로 중단됨」으로 갱신됩니다", "已完成": "완료", "已抹掉 {count} 条报文原文": "{count}건의 페이로드 원문을 지웠습니다", "已清理上游调试报文 {upstream} 条、下游正文 {downstream} 条;请求记录与报表已保留。": "업스트림 디버그 페이로드 {upstream}건과 다운스트림 본문 {downstream}건을 삭제했습니다. 요청 기록과 보고서는 유지되었습니다.", "已用时(请求仍在转发中)": "경과 시간(요청이 아직 포워딩 중)", "开启调试模式后仅记录新请求,历史对话无法补录;关闭不会删除已有记录。": "디버그 모드를 켠 뒤의 새 요청만 기록되며, 이전 대화는 복구할 수 없습니다. 꺼도 기존 기록은 삭제되지 않습니다.", "归属客户端": "클라이언트", "当前筛选范围": "현재 필터 범위", "当前网关未提供上游 / 下游清理统计,请更新网关后再清理。": "현재 게이트웨이는 업스트림 / 다운스트림 정리 건수를 제공하지 않습니다. 게이트웨이를 업데이트한 뒤 정리하세요.", "成功": "성공", "成功({status})": "성공({status})", "所属请求": "상위 요청", "执行清理": "정리 실행", "报文超过单条上限,请求体 / 响应体已按上限截断": "페이로드가 단일 항목 상한을 초과하여 요청 본문 / 응답 본문이 상한에 맞춰 잘렸습니다", "抹掉原文": "원문 지우기", "按提供商筛选": "제공자별 필터", "按提供商筛选(只列日志里出现过的)": "제공자별 필터(로그에 나타난 제공자만 표시)", "按时间倒序,全量保留": "최신순 정렬, 전량 보존", "按模型筛选": "모델별 필터", "按模型筛选(只列日志里出现过的;精确匹配模型名)": "모델별 필터(로그에 나타난 모델만 표시; 모델 이름 정확히 일치)", "按请求结果筛选": "요청 결과별 필터", "排队中": "대기 중", "提供商 / 账号": "제공자 / 계정", "提供商: {provider}": "제공자: {provider}", "提示": "비고", "搜索供应商": "공급자 검색", "搜索客户端": "클라이언트 검색", "敏": "민", "敏感词": "민감 단어", "数据库占用包含主文件与 WAL 文件;清理后可点击「压缩数据库」回收空闲空间。": "DB 크기에는 주 파일과 WAL 파일이 포함됩니다. 정리 후 DB 압축을 실행하여 사용하지 않는 공간을 회수할 수 있습니다.", "断开上游连接,明细记为「请求已被手动终止」": "업스트림 연결을 끊고 상세에 「요청이 수동으로 중단됨」으로 기록됩니다", "无报文原文(未开启「调试模式」,或已被清理)": "원문 페이로드 없음(디버그 모드가 꺼져 있었거나 정리되었음)", "无结果记录": "결과 미기록", "旧版本保存的正文可能已截断,无法恢复缺失内容": "이전 버전에서 저장한 본문이 잘렸을 수 있으며 누락된 내용은 복구할 수 없습니다", "时间": "시각", "暂无请求日志,网关还没有转发过请求": "아직 요청 로그가 없습니다. 게이트웨이가 아직 요청을 포워딩한 적이 없습니다", "最终归属(记账时的客户端)": "최종 귀속(기록 시 클라이언트)", "最终承载:{picked}": "최종 처리: {picked}", "未改写,保留识别结果": "변경 없음, 식별 결과 유지", "本次请求消耗 {credit} 积分": "이 요청의 포인트 사용량: {credit}", "本轮尝试失败,正在退避等待或切换到下一个账号": "이번 시도가 실패하여 백오프 대기 중이거나 다음 계정으로 전환 중입니다", "来源客户端:{client}": "요청 클라이언트: {client}", "查看该请求的上游原始报文": "이 요청의 업스트림 원시 페이로드 보기", "模型": "모델", "模型测试": "모델 테스트", "模型管理页操作列那颗「测试」发起的请求:与真实请求同一条转发链路,但不计入报表统计": "모델 관리 페이지 작업 열의 「테스트」로 시작된 요청: 실제 요청과 같은 포워딩 경로를 사용하지만 리포트 통계에는 포함되지 않습니다", "正在加载请求日志…": "요청 로그 불러오는 중…", "正在统计…": "집계 중…", "正文超过单条上限,可能已被截断": "본문이 단일 항목 상한을 초과하여 잘렸을 수 있습니다", "没有符合筛选条件的请求": "필터 조건에 맞는 요청이 없습니다", "添加自定义头匹配规则…": "사용자 지정 헤더 규칙 추가…", "清理": "정리", "清理中…": "정리 중…", "清理失败:{message}": "정리 실패: {message}", "清理方式": "정리 방식", "清理请求已返回,但结果数据不完整,请刷新后确认。": "정리 요청의 결과 데이터가 불완전합니다. 새로 고침하여 결과를 확인하세요.", "清理请求日志": "요청 로그 정리", "清理预览数据不完整": "정리 미리보기 데이터가 불완전합니다", "清空两侧原文": "양쪽 원문 삭제", "生产请求": "실제 요청", "生成速度:输出 token ÷ 流式段用时(总用时 − 首响);流式段不足总用时一半时按总用时计": "생성 속도: 출력 토큰 ÷ 스트리밍 시간(소요 시간 − 첫 응답). 스트리밍 시간이 소요 시간의 절반 미만이면 소요 시간으로 계산", "用时": "소요 시간", "用量": "사용량", "确定对{scope}执行「{label}」?
    {summary}
    此操作无法恢复。": "{scope}에 {label} 작업을 실행할까요?
    {summary}
    이 작업은 되돌릴 수 없습니다.", "确定对全部请求日志执行「{label}」?将处理 {count} 条,此操作无法恢复。": "전체 요청 로그에 「{label}」 작업을 실행할까요? {count}건을 처리하며, 이 작업은 복구할 수 없습니다.", "确定按当前筛选执行「{label}」?将处理 {count} 条,此操作无法恢复。": "현재 필터 기준으로 「{label}」 작업을 실행할까요? {count}건을 처리하며, 이 작업은 복구할 수 없습니다.", "确定终止这条正在转发的请求?
    上游连接会立即断开,明细将记为「请求已被手动终止」。": "포워딩 중인 이 요청을 중단할까요?
    업스트림 연결이 즉시 끊어지며, 상세에 「요청이 수동으로 중단됨」으로 기록됩니다.", "等待响应": "응답 대기", "策略 {strategy} · 会话粘性 {sticky}{hit}": "전략 {strategy} · 세션 고정 {sticky}{hit}", "终止": "중단", "终止失败:{error}": "중단 실패: {error}", "终止请求": "요청 중단", "结果": "결과", "缓存读取: - / 命中率: -": "캐시 읽기: - / 적중률: -", "缓存读取: {cache} / 命中率: {rate}": "캐시 읽기: {cache} / 적중률: {rate}", "编辑这条头匹配规则…": "이 헤더 규칙 편집…", "耗时": "소요 시간", "自定义 · {name}": "사용자 지정 · {name}", "被跳过:": "건너뜀: ", "设置识别规则": "식별 규칙 설정", "识别到 User-Agent,但不属于已知的客户端类型:{ua}": "User-Agent가 있지만 알려진 클라이언트 유형이 아닙니다: {ua}", "识别结果(请求头识别出的真实客户端)": "식별 결과(헤더에서 식별된 실제 클라이언트)", "识图用量按实际视觉账号单独记录,不混入原模型的回答用量。": "이미지 읽기 사용량은 실제 비전 계정에 별도로 기록하며 원래 모델의 답변 사용량에 합산하지 않습니다.", "该供应商已有归属规则,保存将覆盖它": "이 공급자에는 이미 귀속 규칙이 있으며 저장 시 덮어씁니다", "详情": "상세", "详情内容": "상세 내용", "请求体": "요청 본문", "请求图片": "요청 이미지", "请求在任何账号接手之前就失败了": "요청이 어떤 계정도 넘겨받기 전에 실패했습니다", "请求头": "요청 헤더", "请求头识别为 {identified},已改写归属为 {client}": "요청 헤더에서는 {identified}로 식별되었으며 귀속은 {client}로 변경되었습니다", "请求已受理,正在选路、取凭证、建立上游连接": "요청이 접수되었습니다. 경로를 선택하고 자격 증명을 가져와 업스트림 연결을 수립하는 중입니다", "请求日志列表": "요청 로그 목록", "请求日志时间范围": "요청 로그 시간 범위", "请求日志表": "요청 로그 표", "请求正在转发中,用时列显示的是已用时": "요청이 포워딩 중이며, 소요 시간 열에는 경과 시간이 표시됩니다", "请求筛选": "요청 필터", "请求详情": "요청 상세", "请选择供应商": "공급자를 선택하세요", "请选择归属客户端": "클라이언트를 선택하세요", "读取请求日志失败,详见控制台": "요청 로그를 읽지 못했습니다. 자세한 내용은 콘솔을 확인하세요", "路由回放": "라우팅 리플레이", "转发到上游的模型:{model}": "업스트림으로 포워딩된 모델: {model}", "轮次": "회차", "辅助识图": "보조 이미지 인식", "辅助识图调用": "보조 이미지 읽기 호출", "输入 {input} · 输出 {output} · 总计 {total} · 缓存读 {cache}": "입력 {input} · 출력 {output} · 합계 {total} · 캐시 읽기 {cache}", "这条报文由旧版本截断保存,缺失内容无法恢复": "이 페이로드는 이전 버전에서 잘린 상태로 저장되어 누락된 내용을 복구할 수 없습니다", "这条明细是一次模型测试(人工发起):走的是真实转发链路,但不计入报表统计": "이 상세는 모델 테스트(수동 실행)입니다: 실제 포워딩 경로를 사용하지만 리포트 통계에는 포함되지 않습니다", "这条明细没有记录提供商(旧数据或请求未走到转发)": "이 상세에는 제공자가 기록되지 않았습니다(오래된 데이터이거나 요청이 포워딩 단계까지 가지 못함)", "这条明细没有记录来源客户端(旧数据、模型测试,或请求未带 User-Agent)": "이 기록에는 요청 클라이언트가 없습니다(이전 데이터, 모델 테스트 또는 User-Agent 없는 요청)", "这条记录命中了敏感词,但没有留下命中明细": "이 레코드는 민감 단어에 적중했지만 적중 상세가 남아 있지 않습니다", "这条记录的尝试明细未采集(该字段上线前的旧数据,或请求在转发前就失败)": "이 레코드의 시도 상세가 수집되지 않았습니다(이 필드 도입 전의 오래된 데이터이거나 요청이 포워딩 전에 실패함)", "这条请求没有保存这一段报文": "이 요청은 이 구간의 페이로드를 저장하지 않았습니다", "这条请求没有记录供应商(旧数据或未走到转发),不能从这里改归属": "이 요청에는 공급자 기록이 없어(구 데이터 또는 전달 미도달) 여기서 귀속을 변경할 수 없습니다", "进入「{phase}」阶段已持续 {time}": "「{phase}」 단계에 진입한 뒤 {time} 경과", "进行中": "처리 중", "进行中…": "처리 중…", "连接中": "연결 중", "选择供应商": "공급자 선택", "选择归属客户端": "클라이언트 선택", "速度": "속도", "重试 {n}": "재시도 {n}", "重试中": "재시도 중", "重试次数": "재시도 횟수", "面板内发起的模型调用,消耗额度并记录 Key,不计入生产报表": "패널에서 시작한 모델 호출입니다. 할당량을 사용하고 API Key를 기록하지만 프로덕션 보고서에는 포함하지 않습니다", "预览对话": "대화 미리보기", "预览读取失败": "미리보기 읽기 실패", "预览读取失败:{error}": "미리보기 읽기 실패: {error}", "额外识图用量:{n} Token": "추가 이미지 읽기 사용량: {n} 토큰", "首响 {time}": "첫 응답 {time}", "首响:上游首帧到达的耗时": "첫 응답: 업스트림 첫 프레임 도착까지 걸린 시간", "首响:上游首帧到达的耗时(请求仍在转发中)": "첫 응답: 업스트림 첫 프레임 도착까지 걸린 시간(요청이 아직 포워딩 중)", "首帧已到,上游内容正在下发": "첫 프레임이 도착하여 업스트림 콘텐츠를 내려보내는 중입니다", "默认归属客户端": "기본 귀속 클라이언트", "(请求仍在转发中)": "(요청이 아직 포워딩 중)", "(账号:{account})": "(계정: {account})", ",{n}毫秒后重试": ", {n}밀리초 후 재시도", ",{n}秒后重试": ", {n}초 후 재시도", "{name}的列设置": "{name} 열 설정", "「{label}」列的对齐": "「{label}」 열 정렬", "中": "가운데", "共 0 条": "총 0건", "共 {total} 条 · 当前第 {start}–{end} 条": "총 {total}건 · 현재 {start}–{end}번째", "共 {total} 条(全部显示)": "총 {total}건(전체 표시)", "列": "열", "列设置": "열 설정", "右": "오른쪽", "对齐": "정렬", "左": "왼쪽", "当前只有一页": "현재 페이지가 한 개뿐입니다", "拖动 ⋮⋮ 调整顺序": "⋮⋮ 드래그로 순서 조정", "按住拖动调整列顺序": "길게 눌러 드래그하면 열 순서를 조정합니다", "显示「{label}」列": "「{label}」 열 표시", "条": "건", "每页": "페이지당", "每页条数": "페이지당 항목 수", "调整「{name}」的列:显示 / 隐藏、顺序、对齐": "「{name}」 열 설정: 표시 / 숨김, 순서, 정렬", "跳至": "이동", "跳转到指定页": "지정한 페이지로 이동", "跳转到第 1–{pageCount} 页": "1–{pageCount}페이지로 이동", "这一列已隐藏": "이 열은 숨겨져 있습니다", "这一列正在显示": "이 열은 표시 중입니다", "页": "페이지", "PID:{pid}": "PID: {pid}", "{label} · {port}": "{label} · {port}", "。已经把这个地址填进其它工具(Claude Code、Cherry Studio 等)的,需要一并改成新地址,否则那些工具会连不上。": ". 이 주소를 다른 도구(Claude Code, Cherry Studio 등)에 이미 입력해 두었다면 새 주소로 함께 변경해야 합니다. 그렇게 하지 않으면 해당 도구들이 연결되지 않습니다.", "与当前端口相同,无需重启": "현재 포트와 같으므로 재시작이 필요 없습니다", "例如 3066": "예: 3066", "即将结束以下进程:": "다음 프로세스를 종료합니다:", "已结束进程 {name}(PID {pid}),端口已释放": "프로세스 {name}(PID {pid}) 종료 완료, 포트가 해제되었습니다", "当前状态": "현재 상태", "当前端口 {port},网关运行正常。": "현재 포트 {port}, 게이트웨이가 정상 작동 중입니다.", "换端口后要改的地方": "포트 변경 후 수정할 곳", "新端口": "새 포트", "更换端口": "포트 변경", "更换网关端口": "게이트웨이 포트 변경", "本地网关正在监听 {url},可直接调用 OpenAI 兼容接口": "로컬 게이트웨이가 {url}에서 대기 중이며, OpenAI 호환 인터페이스를 바로 호출할 수 있습니다", "校验中…": "확인 중…", "正在检查… · {port}": "확인 중… · {port}", "正在确认网关是否已就绪": "게이트웨이가 준비되었는지 확인하는 중", "正在重启…": "재시작 중…", "端口 {port} 上没有查到监听进程,请改用「更换端口」": "포트 {port}에서 수신 중인 프로세스를 찾지 못했습니다. 「포트 변경」을 사용하세요", "端口号": "포트 번호", "端口已改为 {port},正在重启…": "포트를 {port}(으)로 변경했습니다. 재시작 중…", "端口已释放。现在重启程序让网关用这个端口启动?": "포트가 해제되었습니다. 지금 프로그램을 재시작해서 게이트웨이가 이 포트로 시작하도록 할까요?", "端口需在 1024-65535 之间": "포트는 1024-65535 범위여야 합니다", "端口需在 1024-65535 之间。1023 及以下是系统保留范围,普通程序无法监听。": "포트는 1024-65535 범위여야 합니다. 1023 이하는 시스템 예약 범위이므로 일반 프로그램이 수신할 수 없습니다.", "结束中…": "종료 중…", "结束占用端口的进程": "포트를 점유한 프로세스 종료", "结束占用进程": "점유 프로세스 종료", "结束失败:{reason}": "종료 실패: {reason}", "结束它会强制退出该程序未保存的数据。确认继续?": "종료하면 해당 프로그램의 저장되지 않은 데이터가 강제로 사라집니다. 계속할까요?", "结束进程": "프로세스 종료", "网关启动中… · {port}": "게이트웨이 시작 중… · {port}", "网关启动失败": "게이트웨이 시작 실패", "网关地址会变成 ": "게이트웨이 주소가 다음과 같이 바뀝니다: ", "网关运行中 · {port}": "게이트웨이 실행 중 · {port}", "该端口不可用": "이 포트는 사용할 수 없습니다", "路径:{path}": "경로: {path}", "进程名:{name}": "프로세스 이름: {name}", "进程已结束,但端口仍被占用,建议改用「更换端口」": "프로세스는 종료되었지만 포트가 아직 점유 중입니다. 「포트 변경」을 사용하세요", "重启": "재시작", "重启中…": "재시작 중…", "重启失败:{reason}": "재시작 실패: {reason}", "重启程序": "프로그램 재시작", "(未知)": "(알 수 없음)" }); diff --git a/desktop-tauri/ui/i18n/combined/pt-BR.js b/desktop-tauri/ui/i18n/combined/pt-BR.js index 8adb2fcc..c83d2146 100644 --- a/desktop-tauri/ui/i18n/combined/pt-BR.js +++ b/desktop-tauri/ui/i18n/combined/pt-BR.js @@ -1,2 +1,2 @@ /* Agent2API 词典构建产物:pt-BR/combined —— 由 desktop-tauri/i18n/build.mjs 生成,请勿手改;源头是 i18n-src/*.json */ -window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { "无可用账号:{reason}": "Nenhuma conta disponível: {reason}", "AI 助手": "Assistente de IA", "API Key 用量详情": "Detalhes de uso da API Key", "API Key 统计": "Estatísticas de API Key", "API Key(可选)": "API Key (opcional)", "API 凭证": "Credenciais de API", "API 方法提交给插件的账号规范化入口;不会用该密钥发起 OAuth 登录。": "Métodos de API são enviados ao ponto de entrada de normalização de contas do plugin; a chave não é usada para iniciar login OAuth.", "Agent2API · 多提供商本地网关": "Agent2API · Gateway local multi-provedor", "Agent2API 社区": "Comunidade Agent2API", "Codar(科搭)": "Codar", "JSON 格式不正确": "Formato JSON inválido", "JoyCode(京东)": "JoyCode (JD)", "Linux (amd64)": "Linux (amd64)", "Linux (arm64)": "Linux (arm64)", "Magpie 官方": "Magpie oficial", "Magpie 官方与社区插件,共用一个按需下载的运行时": "Plugins oficiais e da comunidade Magpie compartilham um runtime baixado sob demanda", "Magpie 官方名单": "Catálogo oficial do Magpie", "Magpie 官方和社区插件均通过兼容方式接入 Agent2API,不保证 100% 可用。": "Plugins Magpie oficiais e da comunidade são integrados ao Agent2API por compatibilidade; não há garantia de funcionamento 100%.", "Magpie 推荐": "Recomendado pelo Magpie", "Magpie 插件": "Plugins Magpie", "Magpie 插件安装须知": "Aviso de instalação de plugin Magpie", "Magpie 社区": "Comunidade Magpie", "Magpie 社区分发源": "Distribuição da comunidade Magpie", "Magpie 脚本插件": "Plugins de script Magpie", "MiniMax Code 国内/国际": "MiniMax Code China / Global", "MiniMax Code 的设备码登录、对话、模型目录、余额与每日签到;国内版与国际版可分别启停。": "Login por código de dispositivo, chat, catálogo de modelos, saldo e check-in diário do MiniMax Code. As versões China e Global podem ser ativadas separadamente.", "OAuth 登录": "Login OAuth", "QQ 群号": "Número do grupo do QQ", "Star 数暂未读取": "A contagem de estrelas ainda não está disponível", "Star 更新于 {time}": "Estrelas atualizadas em {time}", "Token 用量": "Uso de tokens", "WPS 灵犀": "WPS Lingxi", "Windows (ARM64)": "Windows (ARM64)", "Windows (x64)": "Windows (x64)", "macOS (Apple Silicon)": "macOS (Apple Silicon)", "macOS (Intel)": "macOS (Intel)", "npm 包名": "Nome do pacote npm", "npm 包名、GitHub 地址或 magpie:包名": "Pacote npm, URL GitHub ou magpie:pacote", "npm 包名或 GitHub 地址": "Nome do pacote npm ou URL do GitHub", "npm 未发布的包会尝试 Magpie 社区分发源;不会绕过完整性校验或执行安装脚本。": "Pacotes ausentes no npm são procurados na distribuição Magpie. A verificação de integridade não é ignorada e scripts de instalação não são executados.", "{count} 个 Star": "{count} estrelas", "{count} 个插件": "{count} plugins", "{count} 家": "{count} provedores", "{count} 家提供商": "{count} provedores", "{count} 家提供商 · 安装于 {time}": "{count} provedores · Instalado em {time}", "{key} 需要 true / false / null": "{key} deve ser true / false / null", "{key} 需要数字": "{key} deve ser um número", "{label}(API)": "{label} (API)", "{label}(OAuth)": "{label} (OAuth)", "{n} 个启用": "{n} habilitadas", "{n} 个已限流": "{n} com rate limit", "{n} 个请求正在转发中,点开「请求日志」查看": "{n} requisições em encaminhamento; abra “Logs de requisições” para ver", "{n} 个账号可用": "{n} contas disponíveis", "{n} 个账号启用": "{n} contas habilitadas", "{n} 条失败请求未读,点开「请求日志」查看": "{n} requisições com falha não lidas; abra “Logs de requisições” para ver", "{n} 条错误日志未读,点开「日志」查看": "{n} logs de erro não lidos; abra “Logs” para ver", "{n} 项 · {shown} 显示": "{n} itens · {shown} visíveis", "{size} · 下载后可直接安装,无需跳转浏览器": "{size} · Baixa e instala na hora — sem abrir o navegador", "{size} · 点击下载后可直接安装,无需跳转浏览器": "{size} · Baixe e instale na hora — sem abrir o navegador", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "{total} menus · {shown} visíveis · {hidden} ocultos · {groups} grupos", "· 不会改动任何配置": "· não altera nenhuma configuração", "· 每次执行前列改动清单,等你确认": "· lista as alterações antes de cada execução e aguarda sua confirmação", "—": "—", "“本机”指运行网关的机器,不是打开面板的电脑。远程浏览器也可以发起,但网关本机可能需要安装客户端并已登录;是否可用由网关返回结果决定。": "“Local” é a máquina que executa o gateway, não o computador que exibe o painel. Um navegador remoto também pode iniciar o processo, mas a máquina do gateway pode precisar do cliente instalado e conectado. A disponibilidade depende da resposta do gateway.", "✅ GitHub 令牌已保存(加密存储,界面不再显示)": "✅ Token do GitHub salvo (armazenado criptografado, nunca exibido novamente)", "✅ Token 已刷新": "✅ Token atualizado", "✅ 已将账号优先级调整到全局第一位": "✅ Prioridade da conta ajustada para o primeiro lugar na fila global", "✅ 已清除界面保存的 GitHub 令牌(环境变量若配置过则继续生效)": "✅ Token do GitHub salvo foi removido (uma variável de ambiente, se definida, continua valendo)", "「{name}」匹配到多个账号:{list},请用完整账号名重试": "\"{name}\" corresponde a várias contas: {list}. Tente de novo com o nome completo da conta.", "「工具全不勾选 → 不注入系统提示词」:想当纯聊天用时,不必再去关上面的开关。": "\"Nenhuma ferramenta marcada → nenhum prompt de sistema\": para usar como chat comum, não precisa desligar o interruptor acima.", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "\"Configurações\" é fixo, então o grupo dele não pode ser ocultado inteiro; os outros menus podem ser ocultados individualmente", "上一页": "Anterior", "上次加载记录(非本次故障)": "Registro anterior (não é uma falha atual)", "下一页": "Próxima", "下拉刷新": "Puxe para atualizar", "下次自动重试:{time}": "Próxima tentativa automática: {time}", "下载与当前平台对应的插件包(zip),点右上角「安装插件包」选中它即可。": "Baixe o pacote de plugin (zip) para esta plataforma e clique em \"Instalar pacote de plugin\" no canto superior direito para selecioná-lo.", "不填写(可选)": "Deixar em branco (opcional)", "与电脑端一致:每 {n} 分钟": "Igual ao desktop: a cada {n} min", "为 Agent2API 扩展网页提供商,支持智谱清言的模型调用、访客与登录账号、凭证续期、模型目录、积分查询、签到和任务领取。": "Adiciona provedores web ao Agent2API, com chamadas de modelos do Zhipu Qingyan, contas de convidado e autenticadas, renovação de credenciais, catálogo de modelos, consulta de pontos, check-in e resgate de recompensas de tarefas.", "为网关扩展多家 AI 提供商,支持账号登录与导入、模型调用、凭证续期、模型目录、余额查询和签到。具体能力以各提供商的支持情况为准。": "Adiciona provedores de IA ao gateway com login e importação de contas, chamadas de modelos, renovação de credenciais, catálogo, consulta de saldo e check-in. Os recursos variam conforme o provedor.", "主导航": "Navegação principal", "也可输入 file: 加网关电脑上的插件目录或 tgz 文件绝对路径;本地插件会复制安装,不修改源目录。": "Você também pode digitar file: seguido do caminho absoluto de um diretório de plugin ou arquivo tgz no computador do gateway. Os plugins locais são copiados para instalação sem alterar o diretório de origem.", "书生·端砚": "Intern InkStone", "了解并安装": "Entendi, instalar", "仅在该 API 方法需要额外密钥时填写": "Preencha somente se este método de API exigir uma chave adicional.", "仅安装你信任的 npm 包、GitHub 仓库或 Magpie 社区分发包;完整性校验不等于安全审计。": "Instale apenas pacotes npm, repositórios GitHub ou pacotes Magpie de confiança. Verificação de integridade não é auditoria de segurança.", "仅安装你信任的 npm 包或 GitHub 仓库;版本与完整性检查不能保证脚本安全。": "Instale apenas pacotes npm ou repositórios do GitHub confiáveis. As verificações de versão e integridade não garantem a segurança do script.", "仅安装你信任的 npm 包;下载校验只能确认文件完整,不能保证脚本安全。": "Instale apenas pacotes npm confiáveis. A verificação do download confirma a integridade do arquivo, não a segurança do script.", "仅影响插件更新通道,与主程序独立。开启后可安装 beta 版;已使用 beta 时保持该通道,关闭后只看正式版且不会降级。": "Afeta apenas o canal dos plugins, independente do aplicativo. Ative para receber betas. Plugins em beta permanecem nesse canal; ao desativar, somente versões estáveis sem downgrade.", "仅自动更新已安装、已启用且通过可信签名校验的社区插件。新插件需手动安装,卸载后不会自动重新安装;未签名插件需手动更新。": "Atualiza automaticamente apenas plugins da comunidade instalados, ativados e com assinaturas confiáveis verificadas. Novos plugins exigem instalação manual e não são reinstalados automaticamente após a remoção. Plugins sem assinatura exigem atualização manual.", "从 GitHub 官方源下载固定提交。仓库根目录须有可直接运行的插件入口;不会执行构建脚本或安装依赖。": "Baixa um commit fixo diretamente do GitHub. A raiz do repositório deve conter uma entrada de plugin executável; scripts de compilação e instalação de dependências não são executados.", "从 GitHub 官方源下载固定提交。仓库须包含可运行的提供商入口;安装运行依赖,但不执行构建和安装脚本。": "Baixa um commit fixo diretamente do GitHub. O repositório deve incluir um ponto de entrada executável para o provedor. As dependências de execução são instaladas, mas os scripts de compilação e instalação não são executados.", "从 Magpie 社区官方分发目录下载,核验 SHA-512;更新与重装继续使用此来源。": "Baixa da distribuição oficial da comunidade Magpie e verifica SHA-512. Atualizações e reinstalações mantêm essa origem.", "从 npm / GitHub / Magpie 安装": "Instalar do npm / GitHub / Magpie", "从 npm / GitHub 安装": "Instalar do npm / GitHub", "从 npm 安装": "Instalar do npm", "从文件安装…": "Instalar de arquivo…", "从网关本机客户端导入": "Importar de um cliente na máquina do gateway", "仓库没有已提交的可加载入口,请等待作者发布构建产物": "O repositório não contém um ponto de entrada carregável. Aguarde o autor publicar uma versão compilada.", "代价": "Custo", "令牌已生效,但写入磁盘失败(重启后会丢失)": "O token está ativo, mas não foi gravado em disco (será perdido ao reiniciar)", "以下设置属于所连接网关,不是手机本地设置。": "Estas configurações pertencem ao gateway conectado, não ao celular.", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "Restaura os grupos, a ordem e a visibilidade padrão. Grupos criados por você são removidos (os menus são mantidos).", "会话内": "Na sessão", "会话已过期。重新登录后会自动回到手机端。": "Sua sessão expirou. Ao entrar novamente você volta ao app móvel automaticamente.", "会话粘性": "Aderência de sessão", "作为 system 消息注入给助手": "Injetado no assistente como mensagem system", "作者尚未提供插件介绍。": "O autor ainda não forneceu uma descrição do plugin.", "使用 Cloudflare 账号 ID 与 API Token,接入 Workers AI 对话和在线模型目录。": "Conecte o chat e o catálogo online do Workers AI com o ID da conta Cloudflare e um API Token.", "使用 Warp 终端的登录态,接入账号可用模型并查询 AI 请求额度。": "Use o login do terminal Warp para acessar os modelos disponíveis na conta e consultar a cota de solicitações de IA.", "使用你在网关电脑上安装并登录的 agy CLI,通过 ACP 协议接入模型、工具调用和额度查询;与依赖 Antigravity IDE 的 Antigravity ACP 插件不同。": "Usa a CLI agy instalada e autenticada no computador do gateway para modelos, chamadas de ferramentas e consulta de cotas via ACP. É diferente do plugin Antigravity ACP, que depende da IDE Antigravity.", "使用网关本机 gcloud / ADC 登录,接入 Vertex AI 模型并查询 Google Cloud 促销赠金。": "Use as credenciais gcloud / ADC da máquina do gateway para acessar modelos Vertex AI e consultar créditos promocionais do Google Cloud.", "例如:家里、公司": "ex.: Casa, Escritório", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "O módulo de layout da barra lateral não foi carregado (ui/sidebar-layout.js deve vir antes de app.js).", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "Nenhum menu aparece na barra lateral. Ative os que precisar em Configurações → Exibição → Menus da barra lateral.", "侧边栏菜单": "Menus da barra lateral", "保存失败:{error}": "Falha ao salvar: {error}", "保存对话模型失败:{message}": "Falha ao salvar o modelo de chat: {message}", "保存并继续": "Salvar e continuar", "修改高级参数会等待在途任务结束后重新加载插件;专属开关实时生效。": "Alterar as opções avançadas recarrega o plugin após a conclusão das tarefas em andamento. As opções de cada provedor entram em vigor imediatamente.", "候选队列": "Fila de candidatos", "停止": "Parar", "停用": "Desativada", "允许的操作": "Operações permitidas", "允许签到及附带任务": "Permitir check-in e tarefas adicionais", "先添加一台网关": "Adicione um gateway primeiro", "先选择插件声明的账号登录方式,再填写必需字段。OAuth 由共享登录桥负责等待、取消和错误;API 凭证通过账号规范化入口添加。": "Selecione um método de login de conta declarado pelo plugin e preencha os campos obrigatórios. A ponte de login compartilhada trata a espera, o cancelamento e os erros de OAuth; credenciais de API são adicionadas pelo ponto de entrada de normalização de contas.", "免鉴权调用": "Chamadas sem autenticação", "全不选": "Desmarcar tudo", "全部 API Key": "Todas as API Keys", "全部客户端": "Todos os clientes", "全部更新": "Atualizar todos", "共 {n} 条记录": "{n} registros", "共享登录桥不可用,请重新打开面板": "A ponte de login compartilhada está indisponível. Reabra o painel.", "共享运行环境尚未就绪,本插件没有明确的加载失败结果。": "O ambiente compartilhado ainda não está pronto. Nenhuma falha de carregamento foi confirmada para este plugin.", "关": "Desligado", "关闭菜单": "Fechar menu", "兼容 OpenCode v1 / Magpie 提供商插件及其运行依赖;不加载界面、独立工具或 Pi 扩展。": "Compatível com plugins de provedores OpenCode v1 / Magpie e suas dependências de execução. Plugins de interface, ferramentas independentes e extensões Pi não são carregados.", "准备运行环境": "Preparando ambiente de execução", "凭证 JSON 含有不允许的字段:{key}": "O JSON de credenciais contém um campo não permitido: {key}", "凭证 JSON 嵌套过深,请只粘贴该插件要求的凭证对象": "O JSON de credenciais tem níveis demais de aninhamento. Cole apenas o objeto de credenciais exigido por este plugin.", "凭证 JSON 必须是非空对象,不能是数组或字符串": "O JSON de credenciais deve ser um objeto não vazio, não um array ou uma string.", "凭证 JSON 格式不正确,请检查括号和引号": "O formato do JSON de credenciais está incorreto. Verifique os colchetes, as chaves e as aspas.", "凭证 JSON(必填)": "JSON de credenciais (obrigatório)", "凭证只在提交时发送到网关;备注名和代理请使用下面的字段,解析错误不会回显凭证内容。": "As credenciais só são enviadas ao gateway no momento do envio. Use os campos abaixo para o rótulo e o proxy; erros de análise não exibirão o conteúdo das credenciais.", "分布来自保留的日报来源明细;无法恢复的历史不反推客户端或模型。": "A distribuição vem dos agregados diários preservados; clientes ou modelos não são inferidos para históricos irrecuperáveis.", "分支、标签或提交(留空使用默认分支)": "Branch, tag ou commit (em branco para a branch padrão)", "分组名": "Nome do grupo", "分组名,例如「常用」": "Nome do grupo, ex.: \"Favoritos\"", "切换菜单": "Alternar menu", "列表 = 模型管理页里所有已启用的模型。助手走本地网关发起对话,消耗所选账号的额度。": "A lista é todos os modelos habilitados na página Gerenciamento de modelos. O assistente conversa pelo gateway local e consome a cota da conta selecionada.", "创建并进入": "Criar e entrar", "创建管理员账号": "Criar conta de administrador", "初始化已完成,正在等待校验和登记。": "Inicialização concluída. Aguardando validação e registro.", "初始化超时": "Tempo de inicialização esgotado", "删除 {n} 条": "Excluir {n} itens", "删除分组": "Excluir grupo", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "Excluir o grupo \"{name}\"? Os {n} menus vão para \"{target}\" — nada é perdido.", "删除空分组「{name}」?": "Excluir o grupo vazio \"{name}\"?", "删除这个分组(组内菜单移到第一组)": "Excluir este grupo (os menus vão para o primeiro grupo)", "刷新清单": "Atualizar catálogo", "刷新状态": "Atualizar estado", "加入插件 beta 版": "Participar dos betas de plugins", "加载中": "Carregando", "加载助手设置失败:{message}": "Falha ao carregar as configurações do assistente: {message}", "加载失败": "Falha ao carregar", "加载失败:{error}": "Falha ao carregar: {error}", "加载更多": "Carregar mais", "加载更早的记录": "Carregar registros anteriores", "加载状态": "Estado do carregamento", "加载诊断": "Diagnóstico de carregamento", "助手": "Assistente", "助手自己用哪个模型生成回复": "Qual modelo o assistente usa para gerar respostas", "助手设置读取失败,工具可能已过时。": "Falha ao ler as configurações do assistente; a lista de ferramentas pode estar desatualizada.", "助手走本地网关,消耗所选账号的额度": "O assistente usa o gateway local e consome a cota da conta selecionada", "勾选即注入该工具;不勾选 = 助手看不到它": "Ferramentas marcadas são injetadas; desmarcadas ficam invisíveis ao assistente", "十几 MB": "cerca de 10 MB", "升级会重新下载并校验插件包(约 {size}),装完立即生效,账号数据不受影响。": "A atualização baixa e verifica o pacote de plugin novamente (cerca de {size}). Passa a valer na hora e não afeta os dados das contas.", "协议版本": "Versão do protocolo", "单签": "Individual", "占比": "Participação", "即将就绪": "Quase pronto", "卸载": "Desinstalar", "卸载插件": "Desinstalar plugin", "卸载插件包": "Desinstalar pacote de plugin", "历史数据整理中": "Organizando dados históricos", "历史明细不完整,输入、输出与缓存读数无法恢复": "O histórico está incompleto; não é possível recuperar os valores de entrada, saída e cache.", "历史未记录 Key": "Key não registrada no histórico", "原生插件包,来自项目插件仓库": "Pacotes nativos do repositório de plugins do projeto", "原生辅助授权": "Permissões de auxiliares nativos", "原生辅助授权已失效或暂不可用,请重新选择并确认。": "A permissão do auxiliar nativo não é mais válida ou está temporariamente indisponível. Selecione e confirme novamente.", "原生辅助程序不受 Wasm 沙箱限制,只授权你信任的已安装插件。辅助程序更新后需要重新确认。": "Auxiliares nativos ficam fora da sandbox Wasm. Autorize apenas plugins instalados em que você confia. Confirme novamente após uma atualização do auxiliar.", "去下载": "Baixar", "去登录": "Entrar", "参数不完整(需要 account / enabled)": "Parâmetros incompletos (account / enabled obrigatórios)", "参数不完整(需要 account / position)": "Parâmetros incompletos (account / position obrigatórios)", "参数不完整(需要 provider / id / alias)": "Parâmetros incompletos (provider / id / alias obrigatórios)", "参数不完整(需要 provider / id / capabilities)": "Parâmetros incompletos (provider / id / capabilities obrigatórios)", "参数不完整(需要 provider / id / enabled)": "Parâmetros incompletos (provider / id / enabled obrigatórios)", "参数不完整(需要 provider / position)": "Parâmetros incompletos (provider / position obrigatórios)", "发现新版本 {latest}(当前 {current}),点开「设置 - 软件更新」可查看更新日志并下载": "Nova versão {latest} disponível (atual: {current}); abra “Configurações - Atualização do software” para ver as notas de versão e baixar", "发现新版本 {version}": "Nova versão {version} disponível", "发送": "Enviar", "取消日期筛选": "Limpar filtro de data", "受影响的来源将在 {time} 后自动重试": "As fontes afetadas serão consultadas novamente após {time}", "只改映射名,不动上游模型 ID;映射立即生效(新对话即可用)。": "Só o nome de mapeamento muda; o ID do modelo upstream permanece. Os mapeamentos valem na hora (já valem em uma nova conversa).", "只注入工具定义": "Somente definições de ferramentas são injetadas", "只统计已结束的生产请求;失败请求仍计入请求数,Token 用量沿用现有成功请求口径。": "São contadas apenas requisições de produção finalizadas. Falhas entram na contagem; o uso de tokens segue o critério existente para requisições bem-sucedidas.", "只读": "Somente leitura", "只读工具": "Ferramentas somente leitura", "可以点击「刷新」读取插件仓库,或从本地 zip 安装插件。": "Clique em Atualizar para carregar o catálogo ou instale um zip local.", "可填 {min}–{max} 秒,关闭后保留间隔": "Informe {min}–{max} segundos; o intervalo é mantido ao desativar", "可更新": "Atualização disponível", "可更新 v{version}": "v{version} disponível", "可更新到 v{version}": "Atualização disponível: v{version}", "可用": "utilizáveis", "可选,留空使用账号昵称": "Opcional; deixe em branco para usar o apelido da conta.", "各家提供商的转发与账号实现都在插件包里,不随本软件发布。装好插件后,模型转发、添加账号、签到与余额查询才会生效。": "O encaminhamento e o tratamento de contas de cada provedor ficam em pacotes de plugin distribuídos separadamente deste aplicativo. Encaminhamento de modelos, adição de contas, check-in e consulta de saldo só funcionam com o plugin instalado.", "后台只读取状态,不会自动弹出验证码;验证结果一次性使用,短时间内过期。": "O processo em segundo plano apenas consulta o status e nunca abre a verificação automaticamente. Cada token é de uso único e expira em pouco tempo.", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "Contém o item fixo \"Configurações\", então o grupo não pode ser ocultado inteiro (os outros menus podem ser ocultados individualmente)", "启动较慢,仍在加载;尚未收到失败结果。": "A inicialização está demorando, mas o carregamento continua. Nenhuma falha foi informada.", "四种组合的实际效果": "Efeito real de cada combinação", "回复由 {model} 生成 · 走本地网关": "Resposta gerada por {model} · via gateway local", "固定": "Fixo", "在 GitHub 上创建令牌(无需勾选任何权限)": "Criar um token no GitHub (nenhuma permissão necessária)", "填写账号登录所需信息并发起授权;等待、取消与失败原因由共享登录桥处理,设备码和操作指引会显示在上方。": "Preencha as informações necessárias para o login da conta e inicie a autorização. A ponte de login compartilhada trata a espera, o cancelamento e os motivos de falha; códigos de dispositivo e instruções aparecem acima.", "备注名(可选)": "Nome (opcional)", "复制失败,请手动选择复制": "Falha ao copiar; selecione e copie manualmente", "复制订阅链接": "Copiar link da assinatura", "失败 · {status}": "Falha · {status}", "失败退避": "Recuo por falha", "奖励 {bonus}": "Bônus {bonus}", "套餐 {plan}": "Plano {plan}", "套餐池人机验证": "Verificação humana do Start Plan", "套餐池请求需要验证,请主动开始验证后重试请求": "Uma solicitação Start Plan precisa de verificação. Inicie a verificação manualmente e tente a solicitação novamente.", "安装": "Instalar", "安装 {name}": "Instalar {name}", "安装与更新插件时访问 GitHub 用。与「设置 → 更新 → 更新设置」里的同一项互通,填一次即可。不填也能用,只是匿名请求限额较低(60 次/小时)。": "Usado ao instalar e atualizar plugins pelo GitHub. É o mesmo valor de \"Configurações → Atualização → Configurações de atualização\", então basta preencher uma vez. Opcional — sem ele, o limite de requisições anônimas é menor (60/hora).", "安装于 {time}": "Instalado em {time}", "安装包已就绪,点「安装」即可完成更新": "Pacote pronto — toque em \"Instalar\" para concluir", "安装插件包": "Instalar pacote de plugin", "安装时间": "Instalado em", "安装脚本插件": "Instalar plugin de script", "完成时间:{time}": "Conclusão: {time}", "官方": "Oficial", "官方与推荐来自 Magpie 官方名单;第三方来自 GitHub 的 magpie-plugin 标签,不代表官方推荐。": "Os plugins oficiais e recomendados vêm do catálogo oficial do Magpie. Os de terceiros são encontrados pelo tópico magpie-plugin no GitHub e não representam uma recomendação oficial.", "官方签名:包内容与发布者签的完全一致,未被改过": "Assinatura oficial: o conteúdo do pacote confere exatamente com o que o publicador assinou", "定时": "Agendado", "定时任务": "Tarefas agendadas", "实际注入": "Injetado de fato", "客户端分布": "Distribuição por cliente", "客户端统计": "Estatísticas de clientes", "宿主错误": "Erro do host", "对话": "Conversas", "对话模型": "Modelo de chat", "对话模型已切换": "Modelo de chat alterado", "将修改 {model} 的 {n} 项能力:": "Vai alterar {n} capacidades de {model}:", "将修改 {n} 个模型的启停状态:": "Vai alterar o estado de {n} modelos:", "将修改 {n} 个账号的启用状态(其中禁用 {k} 个):": "Vai alterar o estado de {n} contas (desabilitando {k}):", "将对 {model} 发起一次真实请求:": "Vai enviar uma requisição real para {model}:", "将执行 {label}。": "Vai executar {label}.", "将把「{provider}」整组移到第 {position} 顺位:": "Vai mover o grupo \"{provider}\" inteiro para a posição {position}:", "将把账号「{account}」移到第 {position} 顺位:": "Vai mover a conta \"{account}\" para a posição {position}:", "将改动 {n} 条映射({parts}):": "Vai alterar {n} mapeamentos ({parts}):", "小米 MiMo": "Xiaomi MiMo", "尚未取得插件清单": "O catálogo de plugins ainda não foi carregado", "尚未检查更新": "Ainda não verificado", "尚未登录": "Sessão não iniciada", "已下载": "Baixado", "已下载,待安装": "Baixado, pronto para instalar", "已修改 {n} 个模型": "{n} modelos alterados", "已修改 {n} 个账号": "{n} contas alteradas", "已修改 {n} 项能力": "{n} capacidades alteradas", "已停止这次回答。": "Esta resposta foi interrompida.", "已全部取消勾选": "Todas desmarcadas", "已关闭自动检查": "Verificação automática desativada", "已删除分组「{name}」": "Grupo \"{name}\" excluído", "已加载": "Carregado", "已勾选 {n} / {total}": "{n} / {total} marcadas", "已勾选「{label}」": "\"{label}\" marcada", "已勾选工具": "Ferramentas marcadas", "已取消「{label}」": "\"{label}\" desmarcada", "已启动安装器": "Instalador iniciado", "已填写(粘贴新令牌可覆盖)": "Preenchido (cole um novo token para substituir)", "已复制:{text}": "Copiado: {text}", "已开启自动检查": "Verificação automática ativada", "已恢复推荐勾选": "Seleção recomendada restaurada", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "Grupos padrão restaurados: Visão geral / Encaminhamento / Diagnóstico / Sistema", "已改动 {n} 条映射": "{n} mapeamentos alterados", "已新建分组「{name}」,点组头的 + 把菜单移进来": "Grupo \"{name}\" criado — use + no cabeçalho para mover menus", "已是最新版本": "Você está na versão mais recente", "已显示 {shown} / {total} 个提供商插件": "Exibindo {shown} de {total} plugins de provedores", "已更新 {count} 个插件": "{count} plugins atualizados", "已更新 {done} 个插件,{failed} 个失败:{error}": "{done} plugins atualizados, {failed} falharam: {error}", "已注入 {n} / {total} 个工具 · 系统提示词:{state}": "{n} / {total} ferramentas injetadas · Prompt de sistema: {state}", "已添加的服务器": "Servidores adicionados", "已由其他插件接管,请到对应插件中管理。": "Este provedor é gerenciado por outro plugin. Use as configurações desse plugin para gerenciá-lo.", "已登录": "Sessão iniciada", "已离线 · 显示的是缓存内容": "Offline — exibindo conteúdo em cache", "已移到第 {n} 顺位": "Movida para a posição {n}", "已签名": "Assinado", "开": "Ligado", "开关和选项即时保存;输入项请点击对应的「保存」按钮。": "Opções e interruptores são salvos imediatamente. Para campos de texto e números, clique no botão Salvar correspondente.", "开始时间:{time}": "Início: {time}", "开始验证": "Iniciar verificação", "当前": "Atual", "当前一个工具都没勾选,助手只能纯聊天。去「设置 → AI 助手 → 工具」里勾上需要的工具。": "Nenhuma ferramenta marcada, então o assistente só pode conversar. Marque as ferramentas necessárias em Configurações → Assistente de IA → Ferramentas.", "当前兼容无运行时 npm 依赖的提供商插件;不加载 Magpie 界面、Matrix 工具或 Pi 扩展。": "No momento, aceita plugins de provedores sem dependências npm de execução. Não carrega páginas do Magpie, ferramentas Matrix ou extensões Pi.", "当前平台": "Plataforma atual", "当前平台暂无包": "Nenhum pacote para esta plataforma", "当前插件未申请原生辅助能力": "Nenhum plugin solicitou auxiliares nativos", "当前暂不可安装": "Instalação indisponível no momento", "当前模型请求免人机验证": "No momento, as solicitações de modelo não exigem verificação humana.", "当前版本 {current},最低可用版本 {minimum}。": "Versão atual: {current}. Versão mínima compatível: {minimum}.", "当前版本 {version}": "Versão atual {version}", "当前网关要求插件版本不低于 v{version},补齐前暂不加载。": "Este gateway exige o plugin v{version} ou posterior. O plugin não será carregado até ser atualizado.", "当前:已关闭(助手不收到任何系统提示词,工具定义照发)": "Atual: desligado (o assistente não recebe prompt de sistema; as definições de ferramentas continuam sendo enviadas)", "当前:已开启 · 使用内置默认提示词(还没自定义)": "Atual: ligado · usando o prompt padrão interno (ainda não personalizado)", "当前:已开启 · 自定义内容 {n} 字": "Atual: ligado · conteúdo personalizado, {n} caracteres", "影响转发": "Afeta o roteamento", "待就绪": "Aguardando ficar pronto", "待确认": "Aguardando confirmação", "总剩余 {total}": "Total restante {total}", "恢复上游原值": "Restaurar valores do upstream", "恢复推荐": "Restaurar recomendado", "恢复默认侧边栏": "Restaurar barra lateral padrão", "成功 / 失败": "Sucesso / falha", "成功领取": "Resgatado", "我会在动手前把改动列给你确认。": "Vou listar as alterações para você confirmar antes de aplicá-las.", "我信任所选辅助程序并允许它执行声明的本机操作": "Confio no auxiliar selecionado e permito suas operações locais declaradas", "我信任此插件来源,并允许它在网关电脑上运行。": "Confio nesta fonte e autorizo o plugin a executar no computador do gateway.", "所有菜单都已在这一组": "Todos os menus já estão neste grupo", "手动凭证 JSON": "JSON de credenciais manual", "手动凭证 JSON(兼容入口)": "JSON de credenciais manual (entrada de compatibilidade)", "执行": "Executar", "执行时刻": "Horários de execução", "把菜单移入 {name}": "Mover um menu para {name}", "把菜单移入「{name}」": "Mover um menu para \"{name}\"", "报表": "Relatórios", "拖动分组 {name}": "Arrastar grupo {name}", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "Arraste o ⠿ para reordenar (menus podem mudar de grupo); use os interruptores para mostrar ou ocultar; clique no nome do grupo para renomear; o + no cabeçalho move outro menu para o grupo; o botão de olho oculta o grupo inteiro. As mudanças valem na hora e ficam salvas — a barra lateral à esquerda é o resultado. Teclado: foque a alça e pressione Alt+↑ / ↓.", "拖动菜单 {name}": "Arrastar menu {name}", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "Arraste para reordenar os grupos (Alt+↑ / ↓ também funciona)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "Arraste para reordenar, inclusive entre grupos (Alt+↑ / ↓ também funciona)", "按 API Key 筛选": "Filtrar por API Key", "按 Token": "Por tokens", "按天请求趋势": "Tendência diária de requisições", "按客户端筛选": "Filtrar por cliente", "按访问网关的 API Key 统计生产请求,不包含助手对话和模型测试。停用、删除 Key 不会删除历史用量;密钥值不会进入报表。历史没有记录身份的请求单列,不能追溯到某把 Key。": "Requisições de produção agrupadas pela API Key do gateway, excluindo conversas do assistente e testes de modelos. Desativar ou excluir uma Key preserva seu uso histórico. O relatório nunca inclui o valor secreto. Requisições sem identidade registrada são listadas à parte e não podem ser atribuídas a uma Key.", "按请求 User-Agent 识别的客户端类型统计,不代表设备或用户数。“其它”表示有 User-Agent 但未匹配已知类型;“未记录客户端”表示旧数据或请求未带 User-Agent。": "Agrupado pelo tipo de cliente identificado pelo User-Agent da requisição, não por dispositivos ou usuários. Outros indica um User-Agent sem correspondência conhecida; Cliente não registrado indica dados antigos ou ausência de User-Agent.", "按请求数": "Por requisições", "按间隔检查插件版本,在对应卡片显示更新;关闭后仍可手动检查。自动更新或自动下载开启时也使用此间隔。": "Verifica versões neste intervalo e mostra atualizações nos cartões. A verificação manual continua disponível quando desativado. Atualizações e downloads automáticos usam o mesmo intervalo.", "按需下载": "Baixar sob demanda", "按需安装插件,为 AI 路由网关扩展提供商能力。插件独立于主程序更新,下载完成后自动校验并安装。": "Instale plugins opcionais para ampliar o gateway de IA. Plugins são atualizados separadamente e verificados e instalados automaticamente após o download.", "换一组筛选条件,或把来源和状态都切回「全部」。": "Tente outros filtros ou volte Origem e Status para Todos.", "授权": "Autorizar", "排序已保存,但列表刷新失败:{message}": "Ordem salva, mas não foi possível atualizar a lista: {message}", "排序未保存:{message}": "Ordem não salva: {message}", "排序设置迁移失败:{message}": "Não foi possível migrar as configurações de ordenação: {message}", "排第 1 的接走所有请求,直到它不能答(限流 / 故障 / 额度尽)才轮到下一位 —— 就是「从上往下」的现状行为。": "A posição 1 atende todas as requisições até não conseguir responder (limite / falha / sem cota) antes de passar para a próxima — o mesmo comportamento de cima para baixo de hoje.", "接入 Agnes AI 国际版:浏览器登录、在线模型目录、套餐用量与美元余额;与 Agnes Code 桌面版独立。": "Conecte o Agnes AI internacional com login pelo navegador, catálogo online de modelos, uso do plano e saldo em dólares. É separado do Agnes Code para desktop.", "接入 Agnes Code:本机登录态或 accessToken、模型目录、积分与登录奖励观测。": "Conecte o Agnes Code: sessão local ou accessToken, catálogo de modelos, pontos e verificação de recompensas de login.", "接入 Codar(科搭):本机凭据、模型目录、积分与滚动窗口签到。": "Conecte o Codar: credenciais locais, catálogo de modelos, pontos e check-in com janela móvel.", "接入 DeepAI Code:网页登录、本机凭据、模型目录、额度查询与签到。": "Conecte o DeepAI Code: login web, credenciais locais, catálogo de modelos, consulta de cota e check-in.", "接入 JoyCode(京东):网页登录、企业租户、模型目录与额度明细。": "Conecte o JoyCode (JD): login web, tenants empresariais, catálogo de modelos e detalhes de cota.", "接入 WPS 灵犀:网页登录、客户端导入、Cookie、模型目录与智点;签到及附带任务默认允许。": "Conecte o WPS Lingxi: login web, importação do cliente, cookies, catálogo de modelos e créditos. Check-in e tarefas adicionais são permitidos por padrão.", "接入中国移动云 MClaw:浏览器登录、在线模型目录、aitokens 额度与凭证续期。": "Conecte o China Mobile Cloud MClaw com login pelo navegador, catálogo online de modelos, cota aitokens e renovação de credenciais.", "接入书生·端砚墨点计划:浏览器登录、API Key、模型目录与墨点额度窗口。": "Conecte o plano de créditos do Intern InkStone com login pelo navegador, API Key, catálogo de modelos e janelas de cota de créditos.", "接口不兼容": "Interface incompatível", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "Define quais menus a barra lateral mostra, em que ordem e como são agrupados. Ocultar afeta apenas a navegação — não revoga acesso, e páginas ocultas continuam abrindo pela URL.", "提供商启停": "Ativar ou desativar provedores", "提供商增强": "Extensão de provedores", "提供商设置": "Configurações de provedores", "提示词": "Prompt", "提示词开关": "Interruptor do prompt", "插件": "Plugins", "插件与当前网关的公共接口不兼容,暂未加载。": "O plugin é incompatível com a interface pública do gateway e não foi carregado.", "插件仓库": "Repositório de plugins", "插件任务": "Tarefas de plugins", "插件包与主程序分开安装、分开升级。卸载插件后账号数据仍然保留,重新装回即可继续使用;仅该包提供的转发与添加账号需要插件,本体订阅不受影响。": "Pacotes de plugin são instalados e atualizados separadamente do aplicativo. Desinstalar preserva os dados das contas; reinstale para continuar. Só o encaminhamento e a adição de contas fornecidos pelo pacote exigem o plugin. Assinaturas nativas não são afetadas.", "插件包与主程序分开安装、分开升级。卸载插件后账号数据仍然保留,重新装回即可继续使用;但转发与添加账号需要插件在位。": "Os pacotes de plugin são instalados e atualizados separadamente do app. Desinstalar mantém os dados das contas - reinstale para continuar. Encaminhamento e adição de contas exigem o pacote presente.", "插件包大小不能超过 {n} MiB": "O tamanho do pacote de plugin não pode exceder {n} MiB.", "插件包已卸载": "Pacote de plugin desinstalado", "插件包已安装": "Pacote de plugin instalado", "插件包已安装到 v{version}": "Plugin instalado: v{version}", "插件包已更新到 v{version}": "Pacote de plugin atualizado para v{version}", "插件包的可执行文件不在磁盘上(可能被手工删除或移动),请重新安装。": "O executável do pacote de plugin não está no disco (pode ter sido excluído ou movido). Reinstale.", "插件参数必须是 JSON 对象": "As opções do plugin devem ser um objeto JSON", "插件发布信息读取失败,请稍后刷新": "Não foi possível obter as informações da versão do plugin. Atualize mais tarde.", "插件只声明了短信登录,但没有下发可用的动态表单;此界面不会猜测短信接口": "O plugin declarou apenas login por SMS, mas não forneceu um formulário dinâmico utilizável. Esta interface não tentará adivinhar endpoints de SMS.", "插件尚未声明有效版本,暂时无法安装": "O plugin não declarou uma versão válida e ainda não pode ser instalado.", "插件尚未提供可下载的发布包": "O plugin ainda não oferece uma versão para download.", "插件已就绪,账号列表将自动同步。": "O plugin está pronto. A lista de contas será atualizada automaticamente.", "插件更新未完成": "A atualização do plugin não foi concluída", "插件未启用或已不再申请此权限;已有授权仍可撤销。": "O plugin está desativado ou não solicita mais esta permissão. Autorizações existentes ainda podem ser revogadas.", "插件未实现 auth.methods(501),且没有可用的旧版登录声明;仅保留需要插件确认的手动凭证 JSON 入口": "O plugin não implementa auth.methods (501) e não tem declarações legadas de login utilizáveis. Só permanece a entrada manual de JSON de credenciais, sujeita à validação pelo plugin.", "插件未实现 auth.methods(501);以下入口仅依据旧版登录声明显示": "O plugin não implementa auth.methods (501). As entradas abaixo são exibidas apenas com base nas declarações legadas de login.", "插件没有声明可用的账号登录方式,请更新插件或联系插件作者": "O plugin não declarou métodos disponíveis de login de conta. Atualize o plugin ou contate seu autor.", "插件清单暂未完整读取": "O catálogo de plugins não foi carregado por completo", "插件版本(留空使用 latest)": "Versão do plugin (em branco para latest)", "插件状态已变更,但账号列表同步失败。请回到账号页点击「刷新」重试。": "O estado dos plugins mudou, mas a lista de contas não pôde ser sincronizada. Volte à página Contas e clique em \"Atualizar\" para tentar novamente.", "插件独立安装与更新。卸载后账号数据仍会保留;脚本插件共用一个按需下载的运行时。": "Plugins são instalados e atualizados separadamente. A desinstalação preserva os dados das contas; plugins de script compartilham um runtime baixado sob demanda.", "插件登录指引": "Instruções de login do plugin", "插件登录方式包含重复的输入字段": "O método de login do plugin contém campos de entrada duplicados.", "插件登录选择字段包含无效或重复的选项": "O campo de seleção de login do plugin contém opções inválidas ou duplicadas.", "插件登录选择字段缺少选项列表": "O campo de seleção de login do plugin não tem uma lista de opções.", "插件目录": "Diretório de plugins", "插件设置": "Configurações de plugins", "插件设置已保存": "Configurações do plugin salvas", "插件返回了无效的登录字段,请更新插件或联系作者": "O plugin retornou um campo de login inválido. Atualize o plugin ou contate o autor.", "插件返回了无效的登录方式,请更新插件或联系作者": "O plugin retornou um método de login inválido. Atualize o plugin ou contate o autor.", "插件选项": "Opções do plugin", "搜索…": "Buscar…", "搜索插件": "Buscar plugins", "撤销授权": "Revogar permissão", "支持自动授权、设备码、手动授权码和插件声明的凭据表单;本机读取作用于网关电脑。": "Oferece autorização automática, códigos de dispositivo, códigos manuais e formulários de credenciais do plugin. Importações locais leem a máquina do gateway.", "改动立即生效;禁用后指向它的请求会落到下一个候选。": "As alterações valem na hora; após desabilitar, as requisições para ele caem no próximo candidato.", "改动类工具": "Ferramentas de alteração", "改成": "Alterar para", "文件缺失": "Arquivos ausentes", "文档": "Documentação", "新": "Novo", "新分组名": "Nome do novo grupo", "新增 {n} 条": "Adicionar {n} itens", "新对话": "Nova conversa", "新建分组": "Novo grupo", "无凭证": "Sem credenciais", "无法解密": "Não é possível descriptografar", "无法读取插件更新进度,请刷新后查看结果。": "Não foi possível ler o progresso da atualização do plugin. Atualize a página para ver o resultado.", "无法读取登录方式": "Não foi possível carregar os métodos de login", "日志": "Logs", "旧版本保存的正文可能已截断,无法恢复缺失内容": "O corpo salvo por uma versão antiga pode estar truncado; o conteúdo ausente não pode ser recuperado", "旧版浏览器登录暂不接收备注名和登录代理,请添加后在账号设置中调整。": "O login legado pelo navegador ainda não aceita rótulo nem proxy de login. Ajuste-os nas configurações da conta após adicioná-la.", "旧版登录方式": "Método de login legado", "映射名": "Nome de mapeamento", "显示 {name}": "Mostrar {name}", "显示分组 {name}": "Mostrar grupo {name}", "显示这一组": "Mostrar este grupo", "智能": "IA", "暂不可安装": "Indisponível", "暂无可安装的插件": "Nenhum plugin disponível para instalar", "暂无可用的原生辅助程序,请先安装并启用所需插件。": "Nenhum auxiliar nativo está disponível. Instale e ative o plugin necessário primeiro.", "暂时无法获取插件状态,显示上次结果;这不代表插件启动失败。": "O estado do plugin está temporariamente indisponível. Exibindo o resultado anterior; isso não significa falha na inicialização.", "暂未发布": "Ainda não publicado", "暂未取得明确的加载结果,不能据此判断启动失败。": "Ainda não há um resultado confirmado. Isso não indica falha na inicialização.", "更多": "Mais", "更新": "Atualizar", "更新到 v{version}": "Atualizar para v{version}", "更新前无法继续调用模型;账号、配置和历史记录不会被删除。": "Não é possível chamar modelos antes de atualizar. Contas, configurações e histórico serão preservados.", "更新或启停会等待共享宿主内的请求结束;账号数据始终由网关统一保存。": "Atualizações e mudanças de ativação aguardam as requisições do processo compartilhado terminarem. Os dados das contas são sempre gerenciados pelo gateway.", "更新/重装": "Atualizar / reinstalar", "最大化": "Maximizar", "最小化": "Minimizar", "最近调用": "Última chamada", "有": "Sim", "有 {count} 个插件可更新": "{count} plugins têm atualizações", "有插件包的协议版本与当前网关不一致({versions}),请下载对应版本的插件包。": "Alguns pacotes de plugin usam uma versão de protocolo incompatível com este gateway ({versions}). Baixe os pacotes correspondentes.", "有新版本,重启后生效": "Nova versão pronta — reinicie para aplicar", "有新版本:v{current} → v{latest}": "Nova versão disponível: v{current} → v{latest}", "有更新": "Atualização disponível", "服务器": "Servidores", "服务器已切换,请重新加载页面": "O servidor mudou. Recarregue a página", "未加载": "Não carregado", "未同步": "Não sincronizado", "未就绪": "Indisponível", "未授权": "Não autorizado", "未登录": "Sem sessão", "未知工具「{name}」:它在设置里可能刚被取消勾选,或这一版助手还不认识它。": "Ferramenta desconhecida \"{name}\": ela pode ter sido desmarcada agora nas configurações, ou esta versão do assistente ainda não a conhece.", "未签名": "Não assinado", "未签名包不会自动覆盖;点击「补齐插件」将安装官方签名包。": "Pacotes sem assinatura não são substituídos automaticamente. Clique em Atualizar plugin necessário para instalar um pacote com assinatura oficial.", "未签名:可以正常使用,但无法证明这个包出自官方;升级时同样只做格式校验": "Sem assinatura: funciona normalmente, mas não há prova de que o pacote venha do publicador oficial; as atualizações também só verificam o formato", "未能保存自动刷新设置": "Não foi possível salvar as configurações de atualização automática", "未能读取自动刷新设置": "Não foi possível carregar as configurações de atualização automática", "未记录": "Não registrado", "未记录客户端": "Cliente não registrado", "未运行": "Parado", "未选择服务器": "Nenhum servidor selecionado", "本地网关监听状态": "Status de escuta do gateway local", "本次初始化超过等待时限,已停止;可查看诊断后重试。": "Esta inicialização excedeu o limite de tempo e foi interrompida. Consulte o diagnóstico antes de tentar novamente.", "本次加载未完成,请查看诊断。": "Este carregamento não foi concluído. Consulte o diagnóstico.", "本次用时 {n} 秒": "Tempo decorrido: {n} s", "权限": "Permissões", "来自 Magpie 社区的插件,共用一个按需下载的运行时": "Plugins da comunidade Magpie compartilham um runtime baixado sob demanda", "来自环境变量": "Do ambiente", "来自环境变量 GITHUB_TOKEN": "Da variável de ambiente GITHUB_TOKEN", "松开刷新": "Solte para atualizar", "查看 GitHub 仓库:{repository}": "Ver repositório no GitHub: {repository}", "查看全部": "Ver tudo", "查看参数": "Ver parâmetros", "查看发布说明": "Ver notas da versão", "查看发布页面": "Abrir página da versão", "查看提供商插件": "Ver plugins de provedores", "查看更新日志": "Ver alterações", "查看结果": "Ver resultado", "查看进度": "Ver progresso", "标题总结设置": "Configurações de geração de títulos", "桌面桥不可用(本页需要在 Agent2API 客户端里打开)": "Ponte do desktop indisponível (esta página precisa ser aberta dentro do cliente Agent2API)", "检查更新失败": "Falha ao verificar atualizações", "检测到更新后自动下载、校验并安装已启用的官方签名插件。": "Baixa, verifica e instala automaticamente atualizações de plugins ativados com assinatura oficial.", "检测到更新后自动下载、校验并安装已启用的官方签名插件。未签名或第三方插件仍需手动更新。": "Baixa, verifica e instala atualizações para plugins oficiais assinados e ativados. Plugins sem assinatura ou de terceiros exigem atualização manual.", "模型分布": "Distribuição por modelo", "模型管理": "Gerenciamento de modelos", "正在下载 Bun 运行时": "Baixando o runtime Bun", "正在下载…": "Baixando…", "正在下载脚本插件": "Baixando plugin de script", "正在初始化插件,尚未收到失败结果。": "Inicializando o plugin. Nenhuma falha foi informada.", "正在加载": "Carregando", "正在加载 · {n} 家提供商的账号暂未显示,就绪后自动恢复。": "Carregando · As contas de {n} provedores estão temporariamente ocultas e voltarão quando estiverem prontas.", "正在加载新插件…": "Carregando o novo plugin…", "正在加载脚本插件": "Carregando plugins de script", "正在启动": "Iniciando", "正在启动插件,账号将在就绪后自动恢复。": "Iniciando o plugin. As contas voltarão automaticamente quando ele estiver pronto.", "正在完成人机验证…": "Concluindo a verificação humana…", "正在恢复原有脚本插件": "Restaurando plugins de script anteriores", "正在恢复旧版本插件…": "Restaurando a versão anterior do plugin…", "正在更新第 {index}/{total} 个…": "Atualizando {index} de {total}…", "正在校验包内容…": "Verificando pacote…", "正在检查…": "Verificando…", "正在检查或准备脚本运行环境。": "Verificando ou preparando o ambiente de execução dos scripts.", "正在自动补齐官方插件,不受日常更新开关和通道限制。": "O plugin oficial está sendo atualizado para a versão necessária, independentemente das configurações e canais de atualização de rotina.", "正在补齐插件…": "Atualizando plugin necessário…", "正在识别二维码…": "Reconhecendo o QR code…", "正在读取、校验并安装插件包…": "Lendo, verificando e instalando plugin…", "正在读取插件信息 {done}/{total}": "Carregando informações dos plugins {done}/{total}", "正在读取插件列表…": "Carregando catálogo de plugins…", "正在读取插件清单…": "Carregando catálogo de plugins…", "正在读取插件登录方式…": "Carregando métodos de login do plugin…", "正在连接…": "Conectando…", "正在重试…": "Tentando novamente…", "正在验证…": "Verificando…", "此 OAuth 方法未声明备注名字段,账号名由插件获取;添加后可在账号设置中修改。": "Este método OAuth não declarou um campo de rótulo. O plugin obtém o nome da conta; você pode alterá-lo nas configurações após adicionar a conta.", "此插件不是提供商插件,当前无法安装": "Este não é um plugin de provedor e não pode ser instalado aqui.", "此方式可能需要手动提交授权回调。完成官方登录后,按共享登录桥的提示粘贴完整回调地址;不要把回调地址当作 API Key 或 Token。": "Este método pode exigir o envio manual do callback de autorização. Após concluir o login oficial, cole a URL completa de callback conforme as instruções da ponte de login compartilhada. Não use a URL de callback como API Key ou Token.", "此旧版登录声明无法安全映射到动态表单,请联系插件作者": "Esta declaração legada de login não pode ser mapeada com segurança para um formulário dinâmico. Contate o autor do plugin.", "此登录方式需要由共享登录桥发起": "Este método de login deve ser iniciado pela ponte de login compartilhada.", "每台服务器的登录状态各自独立保存,切换后不用重新登录。地址改掉后需要重新登录。": "Cada servidor guarda o próprio login, então voltar a ele não exige entrar de novo. Alterar o endereço de um servidor exige entrar de novo.", "每日签到及一次性任务;可能消耗智点、发送对话并创建及解散群聊": "Check-in diário e tarefas únicas; podem consumir créditos, enviar conversas e criar e dissolver grupos de chat", "每轮": "Por turno", "没有可恢复的维度明细": "Nenhum detalhamento recuperável", "没有可更新的版本": "Nenhuma atualização disponível", "没有找到提供商「{provider}」的账号": "Nenhuma conta encontrada para o provedor \"{provider}\"", "没有找到账号「{name}」": "Nenhuma conta encontrada com o nome \"{name}\"", "没有符合筛选条件的插件": "Nenhum plugin corresponde a estes filtros", "没有说明": "Sem descrição", "没有近期套餐池请求,不生成验证码令牌": "Nenhuma solicitação Start Plan recente; nenhum token de verificação é gerado.", "没给账号名": "Nenhum nome de conta informado", "注入系统提示词": "Injetar prompt de sistema", "活动": "Campanha", "浅色": "Claro", "消耗该账号额度": "Consome a cota desta conta", "消耗额度": "Consome cota", "深色": "Escuro", "添加": "Adicionar", "添加失败": "Falha ao adicionar", "添加服务器": "Adicionar servidor", "清单更新于 {time}": "Catálogo atualizado em {time}", "清空 = 回到内置默认(与「恢复默认」等价)。": "Limpar volta ao padrão interno (equivale a \"Restaurar padrões\").", "清除失败:{error}": "Falha ao limpar: {error}", "点「编辑」弹窗改内容;开关关掉就整段不发。": "Clique em \"Editar\" para alterar o conteúdo em uma janela; com o interruptor desligado, nada disso é enviado.", "点击重命名": "Clique para renomear", "熔断": "Disjuntor", "熔断时长(秒)": "Duração do disjuntor (segundos)", "版本 {version} · 从 GitHub 直接下载安装包": "Versão {version} · baixa o pacote direto do GitHub", "版本 {version} · 从网关下载安装包": "Versão {version} · baixa o pacote pelo gateway", "版本 {version} · 更新包需从 Release 页面获取": "Versão {version} · obtenha a atualização na página de Release", "环境变量 Key": "Key de variável de ambiente", "用一句话让我查或改本机的模型转发配置。": "Peça em uma frase para consultar ou alterar a configuração de roteamento de modelos desta máquina.", "用量详情": "Detalhes de uso", "由其他插件接管": "Gerenciado por outro plugin", "电脑端已关闭「软件版本检查」,此处只做手动检查": "A verificação de versão está desligada no desktop; aqui só há checagem manual", "登录、模型调用、模型列表、余额查询和签到等功能,可能因插件实现或上游变化而不可用。": "Login, chamadas de modelo, listas de modelos, consulta de saldo e check-in podem ficar indisponíveis conforme a implementação do plugin ou mudanças no upstream.", "登录指引 / 设备码授权": "Instruções de login / Autorização por código de dispositivo", "登录支持自动完成的 OAuth/设备码和 API Key;要求手动回调的插件暂不支持。": "Aceita login automático por OAuth/código de dispositivo e API Key. Plugins com retorno manual ainda não são compatíveis.", "登录方式说明": "Informações sobre os métodos de login", "登录桥未确认账号添加完成": "A ponte de login não confirmou que a conta foi adicionada.", "登录面板": "Entrar", "监听 127.0.0.1": "Escutando em 127.0.0.1", "直接加载兼容的 Magpie / OpenCode v1 提供商包,多个插件共用一个 Bun 进程。": "Carrega diretamente pacotes de provedores compatíveis com Magpie / OpenCode v1. Vários plugins compartilham um processo Bun.", "直接说要改什么 / 查什么…(Enter 发送,Shift+Enter 换行)": "Diga o que quer alterar ou consultar… (Enter envia, Shift+Enter quebra linha)", "确定删除账号「{name}」?{note}": "Excluir a conta “{name}”?{note}", "确定卸载「{name}」吗?卸载后这个包里的提供商将无法转发,也无法添加账号。账号数据本身不会被删除,重新安装后可以继续使用。": "Desinstalar \"{name}\"? Os provedores deste pacote deixarão de encaminhar e de aceitar novas contas. Os dados das contas são mantidos e voltam a funcionar após reinstalar.", "确定卸载「{name}」吗?对应提供商将停止转发,账号数据仍然保留,重新安装后恢复。": "Desinstalar “{name}”? Seus provedores deixarão de encaminhar requisições. Os dados das contas serão mantidos e voltarão a funcionar após a reinstalação.", "确认后立即生效": "Vale na hora após a confirmação", "确认并安装": "Confirmar e instalar", "确认授权": "Confirmar autorização", "社区": "Comunidade", "社区插件": "Plugin da comunidade", "禁用会把账号移出转发队列;若这条线路没有别的可用账号,请求会直接失败。": "Desabilitar remove a conta da fila de encaminhamento; se esta rota não tiver outra conta utilizável, as requisições falharão direto.", "移入「{name}」": "Mover para \"{name}\"", "稍后": "Depois", "空分组 · 点组头的 + 把菜单移进来": "Grupo vazio · use + no cabeçalho para mover menus", "立即刷新": "Atualizar agora", "立即升级": "Atualizar agora", "第 {current} / {total} 页": "Página {current} de {total}", "第三方": "Terceiros", "等待前面的插件完成,不代表加载失败。": "Aguardando os plugins anteriores terminarem. Isso não é uma falha de carregamento.", "等待加载": "Aguardando carregamento", "等待当前任务结束,插件继续服务…": "Aguardando as tarefas ativas terminarem; o plugin continua atendendo…", "等待窗口": "Aguardando janela", "等待脚本插件的在途请求和登录完成": "Aguardando o fim das requisições e logins dos scripts", "等待账号登录完成…": "Aguardando a conclusão do login da conta…", "等待运行环境恢复": "Aguardando recuperação do ambiente", "等这一轮跑完…": "Aguardando o fim deste turno…", "签到中心": "Central de check-in", "签到及插件附带任务;可能消耗额度,具体行为由插件决定": "Check-in e tarefas adicionais do plugin; podem consumir créditos. As ações são definidas pelo plugin.", "签到及附带任务默认允许,实际执行遵循签到中心的开关和计划。": "Check-ins e as tarefas que os acompanham são permitidos por padrão; a execução real segue os controles e agendamentos do centro de check-in.", "粘贴 GitHub 令牌(ghp_… / github_pat_…)": "Cole um token do GitHub (ghp_… / github_pat_…)", "粘贴插件要求的 JSON 对象,不要包含 provider、name、proxy 或登录流程控制字段": "Cole o objeto JSON exigido pelo plugin, sem campos provider, name, proxy ou de controle do fluxo de login.", "系统提示词 + 工具定义": "Prompt de sistema + definições de ferramentas", "系统提示词已保存": "Prompt de sistema salvo", "系统提示词已关闭": "Prompt de sistema desligado", "系统提示词已开启": "Prompt de sistema ligado", "统计排序": "Ordenação das estatísticas", "继续安装": "Continuar instalando", "缓存读取": "Leituras do cache", "编辑服务器": "Editar servidor", "编辑系统提示词": "Editar prompt de sistema", "网关 Key": "Chave do gateway", "网关没有返回有效的登录方式列表,无法确认该插件的登录能力": "O gateway não retornou uma lista válida de métodos de login, então não é possível confirmar os recursos de login deste plugin.", "网关运行中": "Gateway em execução", "网络代理": "Proxy de rede", "网页提供商": "Provedores web", "网页登录(旧版声明)": "Login web (declaração legada)", "能力位决定下游看到的声明(能不能贴图、能塞多少上下文),不改上游的真实行为。": "Os flags de capacidade definem o que o downstream vê declarado (entrada de imagem, tamanho de contexto) sem alterar o comportamento real do upstream.", "脚本不是安全沙箱,可以访问网关所在电脑的文件和网络。不要安装来历不明的插件。": "Scripts não são isolados em uma sandbox e podem acessar arquivos e a rede do computador do gateway. Não instale plugins de origem desconhecida.", "脚本插件共用运行环境;重试会等待当前任务结束,不会删除账号或重新安装插件。": "Os plugins de script compartilham um ambiente. Uma nova tentativa aguarda as tarefas atuais terminarem, sem excluir contas nem reinstalar plugins.", "脚本签到可能包含额外任务并消耗额度。WPS 灵犀还可能发送对话、创建及解散群聊;授权后会接入现有自动签到计划。": "O check-in do script pode executar tarefas extras e consumir créditos. O WPS Lingxi também pode enviar conversas, criar grupos de chat e dissolvê-los. Após a autorização, ele entra nos agendamentos de check-in automático existentes.", "自动": "Automático", "自动刷新间隔(秒)": "Intervalo de atualização automática (segundos)", "自动安装": "Instalação automática", "自动更新插件": "Atualizar plugins automaticamente", "自动检查插件更新": "Verificar plugins automaticamente", "自动维护": "Manutenção automática", "至少要保留一个分组": "Pelo menos um grupo deve permanecer", "补签": "Reposição", "补齐插件": "Atualizar plugin necessário", "订阅链接必须是 http:// 或 https:// 开头": "O link da assinatura precisa começar com http:// ou https://", "设备授权码:{code}": "Código de autorização do dispositivo: {code}", "设备码授权时,请按网关给出的指引在官方页面确认设备授权码。没有授权地址不等于失败,可能需要在网关本机客户端完成操作;请以共享登录桥返回的状态为准。": "Na autorização por código de dispositivo, siga as instruções do gateway para confirmar o código na página oficial. A ausência de URL de autorização não significa falha; talvez seja necessário concluir a operação em um cliente na máquina do gateway. Considere o status retornado pela ponte de login compartilhada.", "设置": "Configurações", "设置不可隐藏(隐藏了只能清缓存找回来)": "\"Configurações\" não pode ser ocultado (seria preciso limpar o armazenamento para recuperá-lo)", "设置已生效,但写入磁盘失败(重启后会恢复原设置)": "Configurações aplicadas, mas não salvas (revertem após reiniciar)", "设置未同步": "Configurações não sincronizadas", "诊断": "Diagnóstico", "诊断信息": "Diagnóstico", "该提供商已不在运行时目录中,请返回列表重新选择": "Este provedor não está mais no catálogo em tempo de execução. Volte à lista e selecione novamente.", "该登录方式没有可选项,无法提交;请更新插件或联系作者": "Este método de login não tem opções selecionáveis e não pode ser enviado. Atualize o plugin ou contate o autor.", "请允许安装未知来源应用后重试": "Permita instalar apps de fontes desconhecidas e tente novamente", "请先在插件页授权签到及附带任务": "Autorize primeiro o check-in e as tarefas adicionais na página de plugins", "请先粘贴 GitHub 令牌": "Cole um token do GitHub primeiro", "请先选择有效的 OAuth 登录方式": "Selecione primeiro um método válido de login OAuth.", "请在 Release 页面下载后通过 TestFlight 或 App Store 安装": "Baixe na página de Release e instale pelo TestFlight ou pela App Store", "请填一个分组名": "Informe um nome de grupo", "请填写订阅名称": "Digite o nome da assinatura", "请填写非空的凭证 JSON 对象,且不超过 256 KiB": "Preencha um objeto JSON de credenciais não vazio, de no máximo 256 KiB.", "请查看上方原因,稍后刷新重试。": "Veja o motivo acima e atualize novamente mais tarde.", "请根据不兼容原因更新插件或网关;不会要求两者版本号一致。": "Atualize o plugin ou o gateway conforme o erro de compatibilidade. Os números de versão não precisam coincidir.", "请求失败": "Falha na solicitação", "请求失败:{message}": "Falha na requisição: {message}", "请求数": "Requisições", "请求日志": "Logs de requisições", "请确认": "Confirme", "请稍候": "Aguarde", "请输入 {min}–{max} 之间的整数秒数": "Informe um número inteiro de segundos entre {min} e {max}", "请选择 {label} 的有效选项": "Selecione uma opção válida para {label}.", "读取完成的插件会陆续显示,无需停留在此页面等待。": "Os plugins aparecem à medida que suas informações são carregadas. Você pode sair desta página enquanto o carregamento continua.", "读取插件状态失败:{error}": "Falha ao ler o estado dos plugins: {error}", "读取文件失败": "Falha ao ler o arquivo", "读取消耗排序失败:{message}": "Não foi possível carregar a ordem de consumo: {message}", "读取设置失败:{error}": "Falha ao carregar configurações: {error}", "账号 / 登录出网代理": "Proxy de saída da conta / do login", "账号不在当前队列里": "A conta não está na fila atual", "账号列表响应异常": "Resposta inesperada da lista de contas", "账号已删除": "Conta excluída", "账号已在全局队列第一位": "A conta já está em primeiro lugar na fila global", "账号排序接口不可用,请确认网关与界面已更新": "API de ordenação de contas indisponível. Verifique se o gateway e a interface estão atualizados.", "账号登录方式": "Métodos de login de conta", "趋势统计指标": "Métrica da tendência", "趋势统计维度": "Dimensão da tendência", "跟随系统": "Seguir o sistema", "路由策略": "Estratégia de roteamento", "转发能力": "Encaminhamento", "软件版本检查设置不可用": "As configurações de verificação de atualizações do aplicativo não estão disponíveis.", "输入 / 输出": "Entrada / saída", "输入这台网关的管理员账号与密码。": "Informe a conta de administrador e a senha deste gateway.", "运行时不内置于安装包,首次安装脚本插件时自动下载并校验。": "O runtime não vem no instalador. Ele é baixado e verificado automaticamente na primeira instalação de um plugin de script.", "运行正常 · {url}": "Funcionando normalmente · {url}", "运行状态": "Status", "还没有安装任何提供商插件包": "Nenhum pacote de plugin de provedor instalado ainda", "还没有签到记录": "Ainda não há registros de check-in", "还没有选择对话模型:先在下方选一个(或去「设置 → AI 助手」里选)。": "Nenhum modelo de chat selecionado ainda: escolha um abaixo (ou em Configurações → Assistente de IA).", "这一版没有提供 Android 安装包:{reason}": "Esta versão não inclui pacote para Android: {reason}", "这一项已隐藏": "Este item está oculto", "这一项正在显示": "Este item está visível", "这个包提供的提供商(可单独停用某一家)": "Provedores deste pacote (cada um pode ser desativado individualmente)", "这个面板没有管理员,用一把已启用的 API Key 访问(在桌面端「网关 Key」页创建)。": "Este painel não tem administrador. Acesse com uma API key ativa (crie uma em Chaves do gateway no desktop).", "这会真实发起上游请求并消耗额度": "Isso envia uma requisição real ao upstream e consome cota", "这台网关没有管理员,用一把已启用的 API Key 访问(在桌面端「网关 Key」页创建)。": "Este gateway não tem administrador. Use uma API key ativa (crie uma na página \"Chave do gateway\" do app desktop).", "这台网关还没有管理员。设置一个账号密码,之后用它登录。": "Este gateway ainda não tem administrador. Defina uma conta e senha e use-as para entrar.", "这是旧插件的手动兼容入口,不代表支持任意凭证或登录方式。请仅粘贴该插件明确接受的凭证 JSON;网关会交给 account.normalize 校验,不会自动推断 Token、Cookie 或 OAuth。": "Esta é uma entrada manual de compatibilidade para plugins legados, não suporte a credenciais ou métodos de login arbitrários. Cole apenas o JSON de credenciais explicitamente aceito pelo plugin. O gateway o envia a account.normalize para validação e não deduz automaticamente Token, Cookie ou OAuth.", "这是真实的上游请求,与生产走同一条链路(会记账,报表排除)。": "Esta é uma requisição real ao upstream, pelo mesmo caminho da produção (entra na cobrança, mas fica fora dos relatórios).", "这段文本作为 system 消息排在对话最前面。工具的定义与当前配置概览由网关自动附加,不用写在这里。": "Este texto entra no início da conversa como mensagem system. As definições de ferramentas e o resumo da configuração atual são anexados automaticamente pelo gateway, então não os escreva aqui.", "连不上插件仓库,请检查网络或代理后重试": "Não foi possível acessar o repositório de plugins. Verifique sua rede ou proxy e tente novamente.", "连接已有 SAP AI Core 部署:从网关本机导入凭据文件,按资源组获取模型;不创建部署或查询额度。": "Conecte implantações existentes do SAP AI Core importando um arquivo de credenciais da máquina do gateway e listando modelos por grupo de recursos. Não cria implantações nem consulta cotas.", "连接并保存": "Conectar e salvar", "连续崩溃": "Falhas consecutivas", "连通 · {ms}ms": "Conectado · {ms}ms", "选择模型…": "Escolher modelo…", "通过 API Key 接入 River 对话与在线模型目录;插件不提供余额数值。": "Conecte o chat e o catálogo online do River por API Key. O plugin não informa um valor de saldo.", "通过 Magpie 原插件接入设备码登录、对话、模型目录、余额和每日签到。": "Usa o plugin original do Magpie para login por código de dispositivo, conversa, catálogo de modelos, saldo e check-in diário.", "通过社区插件接入 {providers},可在设置中管理提供商,签到计划在签到中心管理。": "Conecta {providers} por um plugin da comunidade. Gerencie provedores nas configurações e agendamentos na Central de check-in.", "部分信息未能更新,已读取的插件仍可查看。": "Algumas informações não puderam ser atualizadas. Os plugins já carregados continuam disponíveis para consulta.", "部分插件的附带任务可能消耗额度、发送对话或创建及解散群聊。": "As tarefas adicionais de alguns plugins podem consumir cota, enviar mensagens ou criar e encerrar conversas em grupo.", "都不注入": "Nada é injetado", "都不注入(助手退化为纯聊天)": "Nada é injetado (o assistente vira um chat comum)", "重启更新": "Reiniciar e atualizar", "重新读取登录方式": "Recarregar métodos de login", "队列是一次性整表提交(后端按新顺序重编优先级),移动会连带调整其它组的相对次序。": "A fila é enviada como uma tabela inteira de uma vez (o backend renumera as prioridades na nova ordem), então mover um item também desloca a ordem relativa dos outros grupos.", "队列是一次性整表提交;位置越靠前,路由时越先被选中。": "A fila é enviada como uma tabela inteira de uma vez; quanto mais à frente a posição, antes ela é escolhida no roteamento.", "限流垫底": "Rebaixamento por limite", "隐藏 {name}": "Ocultar {name}", "隐藏分组 {name}": "Ocultar grupo {name}", "隐藏这一组": "Ocultar este grupo", "需要强制更新": "Atualização obrigatória", "需要网关 API Key": "É preciso uma API key do gateway", "需要网关本机环境": "Requer o ambiente local da máquina do gateway", "需要补齐插件": "Atualização do plugin necessária", "顺序优先": "Ordem estrita", "首页": "Início", "高危": "Alto risco", "高级参数(JSON)": "Opções avançadas (JSON)", "默认分支": "Branch padrão", "默认跟随软件的正式版和 beta 关注选择;单独设置只影响日常更新,最低版本补齐按当前软件版本选择配套包。": "Os canais seguem o app por padrão. Canais personalizados afetam apenas atualizações de rotina; atualizações necessárias selecionam um pacote para a versão atual do app.", "默认跟随软件的自动检查和间隔。关闭自动检查后暂停插件自动更新;手动检查、安装和更新不受影响。": "As verificações automáticas e o intervalo seguem o app por padrão. Desativar as verificações automáticas pausa as atualizações automáticas de plugins; verificações, instalações e atualizações manuais continuam disponíveis.", "({n} 个整组隐藏)": " ({n} grupos ocultos)", "(不会影响客户端登录态)": " (não afeta a sessão de login do cliente)", "(仅显示前 20 条,共 {n} 条)": "(mostrando apenas os primeiros 20 de {n})", "(可选)": " (opcional)", "(未指定)": "(não especificado)", "(请下载与该平台对应的插件包)": "(baixe o pacote desta plataforma)", "(默认问候)": "(saudação padrão)", "Agent2API · 登录": "Agent2API · Entrar", "OpenAI 兼容网关 · 管理面板": "Gateway compatível com OpenAI · Painel de administração", "Turnstile 加载或验证失败,请检查网络、浏览器拦截和域名配置后重试。": "Falha ao carregar ou verificar com o Turnstile. Confira a conexão, os bloqueios do navegador e a configuração dos hostnames e tente novamente.", "Turnstile 验证超时,请重试。": "A verificação do Turnstile expirou. Tente novamente.", "创建账号并进入面板": "Criar conta e entrar no painel", "密码": "Senha", "当前浏览器不支持 Turnstile,请更新浏览器后重试。": "Este navegador não oferece suporte ao Turnstile. Atualize-o e tente novamente.", "我不是机器人": "Não sou um robô", "无法读取登录验证设置,请刷新页面重试": "Não foi possível ler as configurações de verificação de login. Atualize a página e tente novamente.", "无法连接网关": "Não foi possível conectar ao gateway", "无法连接网关,请确认服务已启动": "Não foi possível conectar ao gateway, verifique se o serviço está em execução", "机器人校验配置已变更或不完整,请刷新页面或联系管理员。": "As configurações de verificação de bots foram alteradas ou estão incompletas. Atualize a página ou contate o administrador.", "登录": "Entrar", "登录后可在「网关 Key」页为 API 客户端创建密钥": "Após entrar, você pode criar chaves na página “Chave do gateway” para clientes de API", "管理员账号": "Conta de administrador", "继续": "Continuar", "至少 8 位": "Mínimo de 8 caracteres", "设置密码(至少 8 位)": "Defina uma senha (mínimo de 8 caracteres)", "请先勾选「我不是机器人」完成验证": "Marque “Não sou um robô” primeiro para concluir a verificação", "请填写账号与密码": "Preencha a conta e a senha", "请完成人机验证后重试": "Conclua a verificação humana e tente novamente", "请求失败,请重试": "Falha na requisição, tente novamente", "请输入管理员账号与密码": "Preencha a conta de administrador e a senha", "重新验证": "Verificar novamente", "首次使用:创建一个管理员账号,用于登录此面板": "Primeiro uso: crie uma conta de administrador para entrar neste painel", "验证中…": "Verificando…", "验证失败,请重试": "Falha na verificação, tente novamente", "验证成功": "Verificado", " · 今日 {used} / {quota}": " · Hoje {used} / {quota}", " · 当前 {n}": " · Atual {n}", " · 本周期 {used} / {quota}": " · Este período {used} / {quota}", " · 限流 {n}": " · {n} com limite", " 等": " etc.", "0 = 不限": "0 = sem limite", "0 = 按本家默认 {default}": "0 = padrão do provedor {default}", "30 秒 ~ 24 小时;手动查询会顺延下一轮": "30 segundos ~ 24 horas; consultas manuais entram na próxima rodada", "7 天内到期": "Expira em até 7 dias", "7 天内到期 {amount}({count} 份)": "Expira em até 7 dias: {amount} ({count} pacotes)", "7天 {count}份": "{count} pac. em 7d", "7天 {n}": "{n} em 7d", "API Key": "API Key", "Accio 国内版": "Accio edição da China", "Base URL": "Base URL", "Clash Verge 里还没有配置混合监听器或节点端口": "Ainda não há listener misto ou porta de nó configurados no Clash Verge", "Clash 出口:": "Saída do Clash: ", "Copilot 额度单位": "Unidades de cota Copilot", "NewAPI 个人访问令牌": "Token de acesso pessoal do NewAPI", "NewAPI 用户 ID": "ID de usuário do NewAPI", "OpenAI 兼容": "Compatível com OpenAI", "OpenAI 兼容填到 /v1;Anthropic 填根地址": "Compatível com OpenAI: preencha até /v1; Anthropic: preencha o endereço raiz", "Qoder 中国版": "Qoder edição da China", "Qoder 国际版": "Qoder edição internacional", "Token 刷新接口不可用,请重新打开页面": "O serviço de renovação de Token não está disponível. Reabra a página.", "Token 刷新结果未确认,请刷新后核对账号状态": "Não foi possível confirmar a renovação do Token. Recarregue a lista e confira o estado da conta.", "Token 单位": "Unidade do Token", "Token 时": "tokens", "Token 消耗": "Consumo de tokens", "Token 规则按每个账号已有的窗口消耗判定,保存不会清零;停用或清空规则不会自动启用账号。": "As regras de tokens usam o consumo existente de cada conta na janela; salvar não zera o consumo. Desativar ou limpar regras não ativa contas.", "Token 限制阈值必须是大于 0 的安全整数": "O limite de tokens deve ser um inteiro positivo seguro", "Token 限额": "Limite de tokens", "Token 限额 · 已禁用": "Limite de tokens · Desativada", "Token 限额 · 已跳过": "Limite de tokens · Ignorada", "WorkBuddy 国内版": "WorkBuddy edição da China", "WorkBuddy 国际版": "WorkBuddy edição internacional", "ZCode 国内版": "ZCode edição da China", "ZCode 国际版": "ZCode edição internacional", "ZCode 套餐明细 — {name}": "Planos do ZCode — {name}", "bigmodel_token_production 的值": "Valor de bigmodel_token_production", "{action}{who}": "{action} {who}", "{amount},另 {count} 份余量未知": "{amount}, mais {count} pacotes com saldo desconhecido", "{body}({period})": "{body} ({period})", "{cond} 时 → {action}": "Quando {cond} → {action}", "{count} 份": "{count} pacotes", "{count} 份仅提供比例": "{count} pacotes com apenas leituras percentuais", "{count} 份单位未知": "{count} pacotes com unidade desconhecida", "{count} 次": "{count} chamadas", "{days} 天后到期": "Expira em {days} dias", "{error}(不会自动改为直连)": "{error} (sem mudar automaticamente para conexão direta)", "{error}(转发时会回退直连)": "{error} (o encaminhamento volta para conexão direta)", "{groups} 家 · 显示 {rows} 行": "{groups} provedores · mostrando {rows} linhas", "{hours} 小时后到期": "Expira em {hours} h", "{label} ×{count}": "{label} ×{count}", "{label}({count})": "{label} ({count})", "{message}(去该账号的「设置」里填上查询凭证即可)": "{message} (basta preencher a credencial de consulta nas 「Configurações」 desta conta)", "{minutes} 分钟后到期": "Expira em {minutes} min", "{month}月{day}日 {clock}": "{day}/{month} {clock}", "{name} · 分组设置": "{name} · Configurações do grupo", "{name} 移到 {group} 组内第 {rank} 位": "{name} movida para a posição {rank} dentro do grupo {group}", "{name} 移到第 {rank} 顺位": "{name} movida para a posição global {rank}", "{name}的方向": "Direção de {name}", "{name}({parts})": "{name} ({parts})", "{name}({time} 起生效)": "{name} (entra em vigor em {time})", "{n} 个已计入": "{n} contabilizados", "{n} 个查询失败": "{n} falharam na consulta", "{n} 个模型 ▾": "{n} modelos ▾", "{n} 个模型限流中 · 记录来自上游 429 / 限额码,到恢复时间自动解除": "{n} modelos com rate limit · registro vindo do 429 / código de limite do upstream; liberação automática no horário de recuperação", "{n} 个请求正在使用该账号(含还在下发内容的流式请求)": "{n} requisições usando esta conta (incluindo requisições de streaming que ainda enviam conteúdo)", "{n} 个读数只读到一半(读数可信但不完整)": "{n} lidos apenas em parte (valor confiável, mas incompleto)", "{n} 个读数没有绝对数(只给比例或无额度),未计入": "{n} sem valor absoluto (apenas percentual ou sem cota), não contabilizados", "{n} 个读数里没有可用比例,未计入": "{n} leituras não tinham porcentagem utilizável e não foram contadas", "{n} 个账号 · {e} 启用 · {l} 限流": "{n} contas · {e} ativas · {l} limitadas", "{n} 个账号 · 启用 {e}": "{n} contas · {e} ativas", "{n} 个还没查到(未查询或正在查询)": "{n} ainda não lidos (não consultados ou em andamento)", "{n} 个还没查询": "{n} ainda não consultados", "{n} 分钟": "{n} minutos", "{n} 分钟前更新": "Atualizado há {n} minutos", "{n} 分钟后": "daqui a {n} minutos", "{n} 天前更新": "Atualizado há {n} dias", "{n} 天后": "daqui a {n} dias", "{n} 小时": "{n} horas", "{n} 小时前更新": "Atualizado há {n} horas", "{n} 小时后": "daqui a {n} horas", "{n} 秒": "{n} segundos", "{n} 秒前更新": "Atualizado há {n} segundos", "{period}窗口": "Janela de {period}", "{plan}({time} 领取)": "{plan} (resgatado em {time})", "{providers} 家提供商、共 {total} 个账号。数据仍在,只是当前没有可用的插件来执行它们。": "{providers} provedores, {total} contas. Os dados continuam aqui — só não há um plugin funcional para executá-las agora.", "{reason}。该账号的登录态已被上游注销,自动刷新不会再成功,请重新登录该账号": "{reason}. O upstream revogou a sessão desta conta; a atualização automática nunca mais vai funcionar — entre novamente nesta conta.", "{scope} {used} / {quota} Token,{countdown}重置": "{scope}: {used} / {quota} Token, {countdown} até a redefinição", "{text}过期": "Expira {text}", "{text}过期({full})": "Expira {text} ({full})", "{time} 到期": "expira em {time}", "{time} 恢复": "Recuperação às {time}", "{time} 生效": "começa em {time}", "{time} 领取": "recebido em {time}", "{total} 个账号 · 启用 {enabled} · 禁用 {disabled}{limited}": "{total} contas · {enabled} habilitadas · {disabled} desabilitadas{limited}", "{tried}探测并领取官方每日登录赠送的套餐积分(到账进套餐积分,不增加福利模型 token 池)": "{tried}Detectar e resgatar os pontos de plano do login diário oficial (entram nos pontos de plano; não aumentam o pool de tokens dos modelos de benefício)", "{unit}余量未知({count} 份)": "Saldo em {unit} desconhecido ({count} pacotes)", "{verb}完成:成功 {ok} 个,失败 {fail} 个({detail}{more})": "Ação {verb}: concluída — {ok} com sucesso, {fail} com falha ({detail}{more})", "{verb}完成:成功 {ok} 个,未变更 {unchanged} 个,跳过 {skip} 个,失败 {fail} 个": "{verb} concluído: {ok} alteradas, {unchanged} sem alteração, {skip} ignoradas, {fail} com falha", "✅ {ok}/{total} 个出口可用": "✅ {ok}/{total} saídas disponíveis", "✅ {verb}完成:共 {count} 个账号": "✅ Ação {verb}: concluída — {count} contas no total", "✅ 优先级已改为 {n}": "✅ Prioridade alterada para {n}", "✅ 出口可用": "✅ Saída disponível", "✅ 已保存:{note}": "✅ Salvo: {note}", "✅ 已启用": "✅ Ativada", "✅ 已启用 {n} 个账号": "✅ {n} contas habilitadas", "✅ 已导出 {count} 个账号文件": "✅ {count} arquivos de contas exportados", "✅ 已更新 {n} 个账号的余额{suffix}": "✅ Saldo de {n} contas atualizado{suffix}", "✅ 已更新余额": "✅ Saldo atualizado", "✅ 已清除 API Key(该账号现在没有凭证,转发会被跳过)": "✅ API Key removida (a conta agora está sem credencial e será ignorada no encaminhamento)", "✅ 已清除 {model} 的限流标记": "✅ Marca de rate limit do {model} removida", "✅ 已清除余额查询凭证": "✅ Credencial de consulta de saldo removida", "✅ 已清除查询凭证": "✅ Credenciais de consulta limpas", "✅ 已清除该账号全部限流标记": "✅ Todas as marcas de rate limit desta conta foram removidas", "✅ 已禁用": "✅ Desativada", "✅ 已禁用 {n} 个账号": "✅ {n} contas desabilitadas", "✅ 已重新读取 Clash Verge 配置": "✅ Configuração do Clash Verge relida", "✅ 账号设置已保存": "✅ Configurações da conta salvas", "✅ 顺序已保存": "✅ Ordem salva", " 出口 IP {ip}": " IP de saída {ip}", "、": ", ", "、补官方会话头、请求体补两个占位工具(上游免费档的三道校验)。": ", adiciona os cabeçalhos de sessão oficiais e inclui dois tools de preenchimento no corpo da requisição (as três validações do plano gratuito do upstream).", "「{name}」已在「网络代理」页禁用,请先启用它或换一条": "\"{name}\" está desativado na página \"Proxy de rede\". Ative-o primeiro ou escolha outro.", "「{name}」开着排序规则:先关掉规则,才能手动调整组内顺序": "“{name}” está com regras de ordenação ativas: desligue-as antes de ajustar a ordem dentro do grupo", "「{name}」本身": "o próprio 「{name}」", "「已保存的代理」": "「Proxies salvos」", "「网络代理」页还没有出口 —— 去那里新增,或在「订阅管理」里点「同步 Clash Verge」把 Clash 的出口导进来": "A página 「Proxy de rede」 ainda não tem saídas — crie uma por lá ou clique em 「Sincronizar Clash Verge」 em 「Gerenciar assinaturas」 para importar as saídas do Clash", "「网络代理」页还没有出口 —— 去那里添加一个 HTTP 或 SOCKS5 地址": "Ainda não há proxies. Adicione um endereço HTTP ou SOCKS5 na página Proxy de rede.", "「网络代理」页还没有出口 —— 去那里添加手动地址或同步 Clash Verge 的端点": "Ainda não há proxies salvos. Adicione um endereço manual ou sincronize endpoints do Clash Verge na página Proxy de rede.", "「网络代理」页里每个启用的出口轮流使用;之后新加的出口自动加入": "Cada saída habilitada na página Proxy de rede é usada por vez; saídas adicionadas depois entram automaticamente", "一般不用填": "Normalmente não é preciso preencher", "万": "10 mil", "上一条规则相同时才比较下一条;想优先按余额消耗,请把可用余额移到第一位。": "Cada regra só é usada quando as anteriores empatam. Mova Saldo disponível para o topo para priorizar o consumo por saldo.", "上次成功查询:{time}": "Última consulta bem-sucedida: {time}", "上游拒绝了本次余额查询": "O upstream recusou esta consulta de saldo", "上游提供了补充说明;未显示原始正文": "O upstream forneceu notas adicionais; o corpo original não é exibido", "上游暂时限制余额查询,请稍后重试": "O upstream está limitando consultas de saldo temporariamente. Tente mais tarde.", "上游未给总量,画不出剩余比例": "O upstream não informou o total; não é possível calcular a proporção restante", "上游未返回可识别额度窗口": "O upstream não retornou janelas de cota reconhecíveis", "上游本来不要凭证时(本地 Ollama、OpenCode Zen 的免费档)勾上这一项:账号会被正常选路;只把 Key 留空": "Quando o upstream não exigir credencial (Ollama local, plano gratuito do OpenCode Zen), marque esta opção: a conta será selecionada normalmente; deixe apenas a Key em branco", "上游没有提供此额度的分桶用量,当前使用本地估算保护;在其他客户端产生的消耗不会计入。": "O provedor não informa o consumo desta cota, então a proteção usa uma estimativa local. O consumo em outros clientes não é contabilizado.", "上游的 API Key。留空 = 不修改(改凭证不会换账号 id);要清掉已配的凭证用右边的「清除」": "API Key do upstream. Em branco = não alterar (mudar a credencial não troca o id da conta); para remover a credencial configurada, use 「Limpar」 à direita", "上游的余额读数里没有这个套餐的额度桶,剩余量读不到;余额列显示的是套餐发放的权益额度,不是剩余量": "A leitura de saldo do upstream não tem um balde de cota para este plano, então o restante não está disponível; a coluna de saldo mostra a concessão do plano, não o restante", "上游返回 {status}": "O upstream retornou {status}", "上游限制 · 已禁用": "Restrição do provedor · Desativada", "上游额度无上限": "A cota do provedor é ilimitada", "上面所有规则都相同时,保持你拖出来的顺序": "Quando todas as regras acima empatarem, mantenha a ordem que você arrastou", "不到 1 分钟": "menos de 1 minuto", "不到 1 分钟到期": "Expira em menos de 1 min", "不可用:{error}": "Indisponível: {error}", "不足 {n}": "Menos de {n}", "不限": "Sem limite", "与队列里的上一个账号交换优先级(可能是另一家的账号)": "Troca a prioridade com a conta anterior da fila (pode ser uma conta de outro provedor)", "与队列里的下一个账号交换优先级(可能是另一家的账号)": "Troca a prioridade com a próxima conta da fila (pode ser uma conta de outro provedor)", "严格按消耗顺序使用账号需选择「顺序优先」;轮询、会话粘性及账号保护仍按原设置生效。": "Selecione Ordem de prioridade para usar as contas estritamente na ordem de consumo. Rotação, afinidade de sessão e proteção das contas mantêm suas configurações.", "个": "unid.", "个 · 共": "de", "个人": "Pessoal", "主凭证没有固定到期时刻,到期由网关自动续期或本来就不会过期": "A credencial principal não tem prazo fixo — o gateway a renova automaticamente, ou ela simplesmente não expira", "主机": "Host", "亿": "100 mi", "仅将优先级调整到全局第一位,不改变启用状态": "Apenas move a prioridade para o primeiro lugar global, sem alterar o estado de ativação", "仅按手动顺序": "Somente ordem manual", "仅统一修改现有规则的开关,保留阈值、动作和重置方式;不改变账号的启用状态。": "Altera apenas os interruptores das regras existentes; mantém limites, ações, modos de redefinição e o estado das contas.", "仅账号管理": "Somente gestão de contas", "仅跳过命中条件的模型,其他模型仍可转发;点击查看限制器": "Apenas os modelos que atingiram as condições são ignorados; os demais ainda encaminham requisições. Clique para ver o limitador.", "今天 {clock}": "Hoje {clock}", "今天 {time}": "hoje às {time}", "今天到期 {amount}({count} 份)": "Expira hoje: {amount} ({count} pacotes)", "今天还没有领过:上面「可领取的套餐」里逐份点「领取」即可": "Nada resgatado hoje ainda: basta clicar em \"Resgatar\" em cada plano de \"Planos resgatáveis\" acima.", "今天(北京时间 {day})已由官方确认到账 {n} 项;领到的是套餐赠送积分,不增加福利模型的 token 池;按自然日重置,明天可再领": "Hoje (horário de Pequim, {day}), o serviço oficial confirmou o recebimento de {n} itens; o que foi recebido são pontos de plano e não aumentam o pool de tokens dos modelos de benefício; a redefinição é por dia natural e amanhã é possível resgatar novamente", "今天(北京时间 {day})已试过 {n} 次但官方尚未确认到账,": "Hoje (horário de Pequim, {day}) já foram feitas {n} tentativas, mas o serviço oficial ainda não confirmou o recebimento. ", "今天(北京时间)已领取 {n} 份:{plans}": "Resgatado hoje (horário de Pequim): {n} — {plans}", "今天(本地 0 点重置)": "Hoje (redefinido às 0h local)", "今日剩 {n} 分钟": "hoje restam {n} minutos", "今日剩 {n} 小时": "hoje restam {n} horas", "今日发放": "Concedido hoje", "今日已用": "Uso de hoje", "今日已领": "resgatado hoje", "代理": "Proxy", "代理不可用:{error}": "Proxy indisponível: {error}", "代理不可用:{error}(不会自动改为直连);选「自定义代理…」去修改": "Proxy indisponível: {error} (sem conexão direta automática); selecione \"Proxy personalizado…\" para corrigir", "代理不可用:{error}(转发时会回退直连);选「自定义代理…」去修改": "Proxy indisponível: {error} (o encaminhamento volta para conexão direta); selecione 「Proxy personalizado…」 para modificar", "代理列表响应异常({type})": "Resposta inesperada da lista de proxies ({type})", "代理列表读取失败(重试中)": "Falha ao ler a lista de proxies (nova tentativa em andamento)", "代理已更新": "Proxy atualizado", "代理异常": "Falha no proxy", "代理方式": "Modo de proxy", "代理池响应异常({type})": "Resposta inesperada do pool de proxies ({type})", "代理端口必须是 1-65535 的整数": "A porta do proxy deve ser um número inteiro de 1 a 65535", "以下 {count} 个账号不支持余额查询,本次会跳过:{names}": "Estas {count} contas não oferecem consulta de saldo e serão ignoradas: {names}", "企业": "Corporativo", "优先级": "Prioridade", "优先级 {priority} 已被同一提供商的「{name}」占用,请换一个数值": "A prioridade {priority} já está em uso pela conta 「{name}」 do mesmo provedor; escolha outro valor", "优先级必须是数字": "A prioridade deve ser um número", "优先级未保存:{message}": "Prioridade não salva: {message}", "会员共享额度": "Cota compartilhada da assinatura", "会员共享额度不是本账号独立额度,不与其他窗口相加;未证实团队独立额度": "A cota compartilhada da assinatura não é exclusiva desta conta nem somada a outras janelas. Cota separada de equipe não foi confirmada.", "会被当成「未配置凭证」而跳过。": " será tratada como 「sem credencial」 e ignorada.", "伪装 OpenCode 官方客户端": "Simular cliente oficial do OpenCode", "伪装 OpenCode 官方客户端(OpenCode Zen 免费档要它才放行)": "Simular o cliente oficial do OpenCode (exigido para o plano gratuito do OpenCode Zen liberar o acesso)", "余量 {value}": "Restante {value}", "余额": "Saldo", "余额 < {threshold}": "Saldo < {threshold}", "余额不足": "Saldo insuficiente", "余额不足 · 已跳过": "Saldo insuficiente · Ignorada", "余额低于": "Saldo abaixo de", "余额低于阈值时的提示": "Avisar quando o saldo cair abaixo do limite", "余额低于阈值,转发时会跳过该账号(余额回升自动恢复)": "Saldo abaixo do limite; a conta será ignorada no encaminhamento (recuperada automaticamente quando o saldo subir)", "余额低于限制器的阈值,转发时会跳过该账号(余额回升自动恢复)": "Saldo abaixo do limite do Limitador; a conta será ignorada no encaminhamento (recuperada automaticamente quando o saldo subir)", "余额列读数的自动刷新;也是「限制器」余额规则的数据来源。": "Atualização automática da leitura da coluna de saldo; também é a fonte de dados das regras de saldo do 「Limitador」.", "余额响应为空": "Resposta de saldo vazia", "余额大优先": "Maior saldo primeiro", "余额小优先": "Menor saldo primeiro", "余额已更新": "Saldo atualizado", "余额查询凭证": "Credencial de consulta de saldo", "余额查询凭证已失效,请刷新查询登录态": "A credencial de consulta de saldo expirou. Atualize a sessão de login da consulta.", "余额查询失败:{message}": "Falha na consulta de saldo: {message}", "余额查询接口不可用,请更新网关后重试": "A consulta de saldo está indisponível. Atualize o gateway e tente novamente.", "余额查询接口返回异常": "A consulta de saldo retornou uma resposta inválida.", "余额查询方案:{label}": "Esquema de consulta de saldo: {label}", "余额沿用现有口径;Token 按重置方式内的累计消耗判定(切换类型会清空阈值)": "O saldo segue o critério atual; o Token é avaliado pelo consumo acumulado dentro do modo de redefinição (trocar o tipo limpa o limite)", "余额详情": "Detalhes do saldo", "使用套餐": "Usar plano", "使用最近一次成功查询的总余额,随余额刷新调整;查询失败保留上次读数,不额外增加查询频率。": "Usa o saldo total da última consulta bem-sucedida e ajusta a ordem quando os saldos são atualizados. Falhas preservam a leitura anterior, sem aumentar a frequência de consulta.", "保存失败:{error}": "Falha ao salvar: {error}", "保存条件": "Salvar condição", "保存规则": "Salvar regra", "保留 {n} 个账号": "Mantém {n} contas", "保留各账号原有规则,只追加下面的规则;完全相同的规则不会重复添加。": "Mantém as regras existentes de cada conta e adiciona as regras abaixo; regras idênticas não são duplicadas.", "修改代理": "Alterar proxy", "停止旧查询,按当前配置重新查询余额": "Parar a consulta anterior e consultar o saldo com as configurações atuais", "停用全部规则": "Desativar todas as regras", "免费版": "Plano gratuito", "全局一条队列:数值越小越先用,不分提供商": "Uma única fila global: quanto menor o valor, antes é usada, sem distinção de provedor", "全局唯一:所有提供商的账号都不能重号,数值越小越先用": "Único global: o número não pode se repetir entre contas de qualquer provedor; quanto menor, antes é usada", "全局队列": "Fila global", "全局队列第 {position} 位,共 {total} 位": "{position}º na fila global, de {total} posições", "全选 / 取消全选当前筛选结果(与批量栏同一个选择)": "Selecionar / desmarcar todos os resultados do filtro atual (a mesma seleção da barra de lote)", "全选当前筛选结果({n} 个)": "Selecionar todos os resultados do filtro atual ({n})", "全部代理节点(推荐)": "Todos os nós de proxy (recomendado)", "全部启用中的账号将被{what}": "{what} todas as contas ativadas", "全部启用({n})": "Habilitar todas ({n})", "全部清除": "Limpar tudo", "全部禁用({n})": "Desabilitar todas ({n})", "全部({n})": "Todas ({n})", "共有 {n} 个账号暂未显示": "{n} contas não estão sendo exibidas", "关闭则不参与转发(余额查询照常,见「查询设置」)": "Desligado, a conta não participa do encaminhamento (a consulta de saldo continua; veja 「Configurações de consulta」)", "关闭后,该账号转发失败时返回本次错误,不再顺延其他账号。禁用、无凭证和限制器等保护仍生效。": "Quando desativado, uma falha de encaminhamento nesta conta retorna o erro sem trocar para outra conta. As proteções para contas desativadas, credenciais ausentes e limitadores continuam ativas.", "关闭自动查询后,余额限制器只能使用上次读数;手动查询仍可用。": "Com a consulta automática desligada, os limites de saldo usam a última leitura; a consulta manual continua disponível.", "内消耗 ≥": "com consumo ≥", "再领一次": "Resgatar de novo", "冻结余额": "Saldo congelado", "凭证与套餐": "Credenciais e plano", "凭证已过期,转发时会先刷新": "Credencial expirada; será renovada antes do encaminhamento", "凭证已过期;能否续期取决于登录方式,本机引用需由原客户端处理": "Credencial expirada; a renovação depende do método de login. Referências locais devem ser gerenciadas pelo cliente original", "出口": "Saída", "出网代理": "Proxy de saída", "分窗口额度": "Cota por janela", "分组设置": "Configurações do grupo", "分钟": "minutos", "刚刚更新": "Atualizado agora", "删除各账号的全部限制规则,执行前会再次确认。": "Remove todas as regras de limite de cada conta; pede confirmação antes de executar.", "删除提供商": "Excluir provedor", "删除组": "Excluir grupo", "删除账号": "Excluir conta", "删除这条账号记录(不会影响客户端自己的登录态;之后可再点「导入桌面端登录态」加回来)": "Exclui este registro de conta (não afeta o estado de login do próprio cliente; depois é possível adicioná-la de volta com 「Importar estado de login do desktop」)", "删除选中的账号": "Excluir contas selecionadas", "到恢复时间后自动解除,无需手动操作": "Liberado automaticamente ao chegar o horário de recuperação, sem ação manual", "到期 {date}": "Expira em {date}", "到期 {time}": "Expira em {time}", "到期 近→远": "Expiração perto→longe", "到期 远→近": "Expiração longe→perto", "到期时间": "Data de expiração", "刷新 Token": "Renovar Token", "刷新 Token 完成:成功 {ok} 个,跳过 {skip} 个,失败 {fail} 个": "Renovação de Token concluída: {ok} com sucesso, {skip} ignoradas, {fail} com falha", "刷新 Token:已处理 {completed}/{total} 个,当前账号:{name}": "Renovando Tokens: {completed}/{total} processadas, conta atual: {name}", "刷新列表": "Atualizar lista", "刷新套餐与额度": "Atualizar planos e cotas", "刷新账号列表失败,当前仍显示上一次成功读取的数据:{message}": "Falha ao atualizar as contas. Os últimos dados carregados com sucesso continuam sendo exibidos: {message}", "刷新账号列表失败:{message}": "Falha ao atualizar as contas: {message}", "剩 {left} / {total}{unit}": "{left} / {total}{unit} restantes", "剩 {n} 分钟": "restam {n} minutos", "剩 {remaining}": "Restam {remaining}", "剩 {remaining} / {total}": "Restam {remaining} / {total}", "剩不到 1 分钟": "falta menos de 1 minuto", "剩余 {percent}%": "{percent}% restante", "剩余比例": "Percentual restante", "剩余额度": "Cota restante", "加载异常": "Falha ao carregar", "北京时间(UTC+8)": "Horário de Pequim (UTC+8)", "协议": "Protocolo", "即将到期 {count} 份": "{count} pacotes expiram em breve", "即将过期 {n}": "{n} expira em breve", "历史余额,尚未按新配置验证": "Saldo anterior, ainda não verificado com as novas configurações", "原代理来源已下线,请选择已保存的代理、自定义地址或直连": "A origem anterior do proxy foi descontinuada. Escolha um proxy salvo, um endereço personalizado ou conexão direta.", "去「插件」页": "Abrir Plugins", "去「插件」页启用": "Ativar na página Plugins", "去「插件」页安装": "Instalar na página Plugins", "去启用": "Ativar", "去安装": "Instalar", "又不勾": " e não marque esta opção:", "取消余额查询": "Cancelar consulta de saldo", "取消查询": "Cancelar consulta", "取消查询失败:{message}": "Falha ao cancelar consulta: {message}", "取消选择": "Limpar seleção", "另有 {n} 个已勾选账号被当前筛选隐藏,仍会参与操作": "Outras {n} contas marcadas estão ocultas pelo filtro atual, mas ainda participam da operação", "另有 {n} 个账号因提供商插件未就绪,暂未显示": "Outras {n} contas estão ocultas porque seus plugins de provedor não estão prontos", "只修改本次选择的设置,不影响备注、凭证、转发顺序或其他设置。": "Altera apenas as configurações escolhidas; mantém rótulos, credenciais, ordem de encaminhamento e outras configurações.", "只比较同一家、同单位的数值余额;未知、比例和无限额度不作为零余额,有明确余额的账号优先。": "Compara apenas saldos numéricos do mesmo provedor e na mesma unidade. Valores desconhecidos, percentuais e cotas ilimitadas não são tratados como zero; contas com saldo conhecido vêm primeiro.", "只重试临时故障;次数与整轮时间上限任一用尽即停止,凭证错误不重试。": "Apenas falhas temporárias são repetidas. A consulta para ao atingir o limite de tentativas ou de tempo. Erros de credenciais não são repetidos.", "可添加多条;同类规则也允许并存(例如一条按余额、两条不同重置方式的 Token)": "É possível adicionar várias; regras do mesmo tipo também podem coexistir (por exemplo, uma por saldo e duas de Token com modos de redefinição diferentes)", "可用 {total}": "Disponível {total}", "可用 {value}": "Disponível {value}", "可用 {value} {unit}": "Disponível {value} {unit}", "可用余额": "Saldo disponível", "可用合计": "Total disponível", "可用最低": "Menor disponível", "可留空:新版请求头只认令牌;旧版会把用户 ID 放进 New-Api-User 头": "Pode ficar vazio: versões novas usam só o token; as antigas colocam o ID de usuário no cabeçalho New-Api-User", "可领取的套餐": "Planos resgatáveis", "各窗口独立限制请求,不相加为总余额。": "Cada janela limita as solicitações de forma independente; elas não somam um saldo total.", "同提供商内暂无其他账号占用优先级": "Nenhuma outra conta deste provedor ocupa uma prioridade", "同提供商已占用:{names}": "Já em uso neste provedor: {names}", "名称": "Nome", "后续加入": "Em breve", "含 {n} 个不限额度账号,合计记为 ∞": "inclui {n} conta(s) sem limite; total exibido como ∞", "启动中…": "Iniciando…", "启用全部规则": "Ativar todas as regras", "启用插件包后自动回来": "Ative o pacote de plugins e elas voltam automaticamente", "启用状态": "Estado de ativação", "启用该规则": "Ativar esta regra", "启用该账号": "Ativar esta conta", "启用这一组里的全部账号(含被筛选隐藏的)": "Habilita todas as contas deste grupo (incluindo as ocultas pelo filtro)", "启用这家提供商后自动回来": "Ative este provedor e elas voltam automaticamente", "周期": "Período", "周期 Token": "Token do período", "周期单位": "Unidade do período", "命中条件的模型": "Modelos que atingiram as condições", "商汤日日新控制台的登录密码": "Senha de login do console SenseNova", "商汤日日新控制台的登录账号": "Conta de login do console SenseNova", "固定兜底,不受开关影响": "Fallback fixo, não afetado pelos interruptores", "固定周期": "Período fixo", "在 NewAPI 站点「个人设置」里生成的访问令牌": "Token de acesso gerado em \"Configurações pessoais\" no site do NewAPI", "在列表里拖:拖分组带调整整组顺位,拖行首把手调整组内先后(顺序由拖拽表达,不再填数字)": "Arraste na lista: arraste a faixa do grupo para reordenar grupos inteiros e a alça da linha para reordenar dentro do grupo (a ordem se expressa arrastando — nada de digitar números)", "在账号设置的「基本」分组里设置该账号同时最多处理的请求数": "Define em 「Básico」 nas configurações da conta o número máximo de requisições simultâneas desta conta", "地址与端口由「网络代理」页管理:那边改一次、测一次,所有引用它的账号一起生效": "O endereço e a porta são gerenciados na página 「Proxy de rede」: altere e teste uma vez por lá e todas as contas que o usam são afetadas", "基本": "Básico", "填入系统代理": "Preencher com proxy do sistema", "备注名 / 启用 / 代理": "Rótulo / Ativação / Proxy", "备注名 {name}": "Rótulo {name}", "备注名不能为空": "O rótulo não pode ficar vazio", "备注名已更新": "Rótulo atualizado", "复制当前设置": "Copiar configurações atuais", "复制自账号": "Copiar da conta", "失败 {count} 个:": "{count} com falha: ", "失败后允许换号": "Permitir troca de conta após falha", "失败重试次数": "Novas tentativas após falha", "失败重试次数必须是 0~{max} 的整数": "O número de novas tentativas deve ser um inteiro de 0 a {max}", "套餐 {name}": "Plano {name}", "套餐实例不能跨账号复制,请改用通用额度或本地保护条件": "Instâncias de planos não podem ser copiadas entre contas. Use uma condição de cota geral ou proteção local.", "套餐尚未生效或已经到期": "O plano ainda não está ativo ou já expirou", "套餐池": "Pool de planos", "套餐池的推理端点要求每条请求带一个阿里云验证码令牌;令牌由本应用在后台静默铸造,界面关闭时无法铸造": "O endpoint de inferência do pool de planos exige um token de CAPTCHA da Aliyun em cada solicitação; os tokens são cunhados silenciosamente por este aplicativo em segundo plano e não podem ser cunhados com a interface fechada", "套餐池(Start Plan)": "Pool de planos (Start Plan)", "套餐池(Start Plan)— 走 zcode.z.ai 端点,消耗 ZCode 套餐池的额度(新用户体验额度 / 活动领取)": "Pool de planos (Start Plan) — usa os endpoints de zcode.z.ai e a cota do pool de planos do ZCode (cota de experiência de novos usuários / resgates de evento)", "套餐积分的重置日期": "Data de redefinição dos pontos do plano", "存在延迟计量信息,无法据此推算当前余额": "Informações de medição atrasada não permitem inferir o saldo atual", "它会改写请求体": "Ele reescreve o corpo da requisição", "官方限时活动": "Evento oficial por tempo limitado", "实际阈值:{value} Token": "Limite real: {value} tokens", "对话 token": "Tokens de conversa", "对话请求": "Requisições de chat", "导出文件包含登录凭证,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "Os arquivos exportados contêm credenciais que podem ser usadas para entrar. Guarde-os com segurança; não os compartilhe nem os envie para locais públicos.", "导出未返回结果": "A exportação não retornou um resultado.", "导出本组全部账号,每个账号一个 JSON 文件(含被筛选隐藏的)": "Exportar todas as contas deste grupo em arquivos JSON separados, incluindo as ocultas pelos filtros", "导出本组账号": "Exportar contas deste grupo", "将作用于以下账号": "Será aplicado às seguintes contas", "将用草稿中的 {rules} 条规则替换 {count} 个账号的全部限制规则,原有规则不会保留。确定继续?": "Substituir todas as regras de {count} contas pelas {rules} regras do rascunho? As regras existentes não serão mantidas.", "将这个账号及其登录凭证保存为单独的 JSON 文件": "Salvar esta conta e suas credenciais em um arquivo JSON separado", "小时": "horas", "小浣熊": "Raccoon", "尚未查询该账号的余额": "O saldo desta conta ainda não foi consultado", "尝试领取": "Tentar resgatar", "展开": "Expandir", "展开全部": "Expandir tudo", "展开全部分组": "Expandir todos os grupos", "展开或收起(默认收起)": "Expandir ou recolher (recolhido por padrão)", "展开这一组": "Expandir este grupo", "已保存的代理": "Proxies salvos", "已停用": "Desativado", "已发起 {count} 个账号文件的下载,请在浏览器下载列表确认": "Downloads de {count} arquivos de contas iniciados. Confira a lista de downloads do navegador.", "已取消查询": "Consulta cancelada", "已启用 {name}": "{name} ativada", "已启用自动排序,组内拖动已锁定;关闭全部规则可恢复原手动顺序。": "A ordenação automática está ativada e o arraste no grupo está bloqueado. Desative todas as regras para restaurar a ordem manual original.", "已启用,点击禁用(不参与转发)": "Ativada; clique para desativar (não participa do encaminhamento)", "已在全局队列第一位": "Já está em primeiro lugar na fila global", "已复制到草稿,执行后才会应用到所选账号": "Copiado para o rascunho; só será aplicado às contas selecionadas após executar", "已导出 {count} 个账号文件,{failed} 个未导出:{reason}": "{count} arquivos de contas exportados; {failed} não puderam ser exportados: {reason}", "已是首选": "Já é a primeira", "已暂停验证,需要时请手动重试": "Verificação pausada. Tente novamente manualmente quando precisar.", "已更新 {ok}/{total} 个账号,{failed} 个失败": "{ok}/{total} contas atualizadas, {failed} com falha", "已查询": "Consultado", "已用 {used}": "Usado {used}", "已用 {used} / 共 {total}": "Usado {used} / {total}", "已用完 / 已过期": "Esgotados / expirados", "已用比例": "Percentual utilizado", "已用额度": "Cota utilizada", "已禁用": "Desativada", "已禁用 {name}": "{name} desativada", "已禁用,点击启用": "Desativada; clique para ativar", "已筛选 {n} 项": "{n} exibidos", "已被「{name}」占用": "Já em uso por 「{name}」", "已触发": "Acionado", "已触发 · 账号已禁用": "Disparado · Conta desativada", "已设为首选": "Definida como primeira", "已设置": "Configurado", "已跳过{current}": "Ignorada{current}", "已跳过{usage}{countdown}": "Ignorada{usage}{countdown}", "已达上限{usage}": "Limite atingido{usage}", "已过期": "Expirada", "已过期({time})": "Expirado ({time})", "已选": "Selecionados", "已配置,留空则不修改": "Configurado; em branco, não será alterado", "已限流": "Com rate limit", "已领到、还没到生效时间的套餐(生效后余额列会按它显示):\n{lines}": "Planos já resgatados que ainda não entraram em vigor (a coluna de saldo passa a mostrá-los depois):\n{lines}", "并发上限": "Limite de concorrência", "并发上限 0~{max};CodeArts 等有默认值的家填 0 即按本家默认;达到上限的账号会被跳过、请求转给其他账号": "Limite de concorrência 0~{max}; provedores com valor padrão (ex.: CodeArts) usam esse padrão quando o valor é 0; ao atingir o limite a conta é ignorada e a requisição é repassada a outra conta", "并发上限 0~{max};达到上限的账号会被跳过、请求转给其他账号": "Limite de concorrência 0~{max}; ao atingir o limite a conta é ignorada e a requisição é repassada a outra conta", "并发上限 0~{max};达到上限的账号跳过、请求转给其他账号(原列表 ⋯ 菜单的「并发上限」入口已并入这里)": "Limite de concorrência 0~{max}; ao atingir o limite, a conta é ignorada e a requisição é repassada a outra conta (a entrada 「Limite de concorrência」 do menu ⋯ da lista foi incorporada aqui)", "并发上限 填 0 即按本家默认 {default};填 1 或 2 就按填的算,更大的数会被本家上限截断(原列表 ⋯ 菜单的「并发上限」入口已并入这里)": "0 usa o padrão do provedor ({default}); 1 ou 2 valem como informados, valores maiores são limitados pelo teto do provedor (a entrada 「Limite de concorrência」 do menu ⋯ da lista foi incorporada aqui)", "并发上限必须是 0~{max} 的整数": "O limite de concorrência deve ser um número inteiro de 0 a {max}", "并发上限:{value}": "Limite de concorrência: {value}", "开启后,网关按 OpenCode 官方 CLI 的形状发请求:没填 Key 的账号用匿名凭证": "Quando ativado, o Gateway envia requisições no formato do CLI oficial do OpenCode: contas sem Key usam credencial anônima", "开始 {time}": "Início {time}", "当": "Quando", "当前不符合资格": "Não elegível no momento", "当前不需要验证码令牌": "Tokens de CAPTCHA não são necessários no momento", "当前代理不可用,请重新选择": "O proxy atual está indisponível. Selecione outro.", "当前代理不可用:{error}(不会自动改为直连)": "Proxy atual indisponível: {error} (sem mudar automaticamente para conexão direta)", "当前代理不可用:{error}(转发时会回退直连)": "Proxy atual indisponível: {error} (o encaminhamento volta para conexão direta)", "当前余额 {n};与余额列同一数字口径,严格小于才触发(等于阈值仍可用)": "Saldo atual {n}; mesmo critério numérico da coluna de saldo; só dispara se for estritamente menor (igual ao limite ainda é utilizável)", "当前可手动调整组内顺序。": "Agora é possível reordenar manualmente as contas deste grupo.", "当前可用 ∞(不参与余额不足判定)": "Disponível atual ∞ (não participa da avaliação de saldo insuficiente)", "当前客户端不支持逐账号导出,请更新客户端": "Este cliente não suporta a exportação individual de contas. Atualize o cliente.", "当前已经是默认规则": "Já são as regras padrão", "当前排序规则:{rules}。点击调整": "Ordenação atual: {rules}. Clique para ajustar", "当前未发现本期活动,不代表账号不符合资格": "Nenhum evento atual foi encontrado. Isso não significa que a conta não seja elegível.", "当前没有任何模型处于限流中": "No momento, nenhum modelo está com rate limit", "当前没有可领取的套餐(活动期内每天发一份,明天可再领)": "Nenhum plano resgatável agora (um é emitido por dia durante o evento; dá para resgatar de novo amanhã)", "当前没有限流中的模型。": "No momento, não há modelos com rate limit.", "当前筛选下 {n} 个账号的百分比读数不能相加,取最低的剩余比例(随筛选、搜索变化,不受分页影响)": "As leituras percentuais das {n} contas no filtro atual não podem ser somadas; exibimos a menor porcentagem restante (muda com filtros/busca, sem influência da paginação)", "当前筛选下 {n} 个账号的额度概览(随筛选、搜索变化,不受分页影响)": "Resumo das cotas das {n} contas no filtro atual (muda com filtros e busca, sem influência da paginação)", "当前筛选下没有账号": "Nenhuma conta corresponde aos filtros atuais", "当前筛选条件下没有账号": "Nenhuma conta com o filtro atual", "当前网关不支持余额排序,请先更新网关": "Este gateway não oferece ordenação por saldo. Atualize o gateway primeiro.", "当前规则:{rules}。": "Regras atuais: {rules}.", "当前规则:{rules}。自动排序生效时,组内拖动把手会锁定;关掉全部规则即回到手动顺序。": "Regras atuais: {rules}. Enquanto a ordenação automática estiver ativa, a alça de arrastar dentro do grupo fica bloqueada; desligue todas as regras para voltar à ordem manual.", "当前视图不能调整组顺位:{reason} 之后再拖动": "Não é possível alterar a ordem dos grupos nesta visualização: volte para {reason} antes de arrastar", "当前钩子仅提供套餐与周期,未提供余额数值": "O hook atual só fornece plano e período, não um saldo numérico", "当前:{label}(Clash Verge 直接引用);可在「网络代理」页同步端点后改选": "Atual: {label} (referência direta ao Clash Verge). Você pode sincronizar endpoints na página Proxy de rede e selecionar um deles.", "当前:{label}(未经过代理池 —— 可在「网络代理」页把出口同步进池后来这里改选)": "Atual: {label} (não passa pelo pool de proxies — sincronize a saída para o pool na página 「Proxy de rede」 e depois volte aqui para alterar)", "当前:{label}(未经过代理池 —— 可在「网络代理」页添加相同地址后来这里改选)": "Atual: {label} (fora do pool; adicione o mesmo endereço na página Proxy de rede e selecione-o aqui).", "当前:{label}(每条请求换一个出口);「自定义代理…」打开完整设置": "Atual: {label} (uma saída diferente por requisição); \"Proxy personalizado…\" abre as configurações completas", "当前:{label};选项来自「网络代理」页;「自定义代理…」打开完整设置": "Atual: {label}; as opções vêm da página 「Proxy de rede」; 「Proxy personalizado…」 abre as configurações completas", "当前:{value}": "Atual: {value}", "待定": "Pendente", "待生效": "Aguardando", "待生效 {n} 份": "{n} aguardando", "待生效 {time}": "Em vigor a partir de {time}", "必填": "Obrigatório", "必填;留空 = 不修改,清除用右边的按钮": "Obrigatório; vazio = não altera, limpe com o botão à direita", "总剩余 {total} · 套餐 {plan} · 奖励 {bonus}": "Total restante {total} · Plano {plan} · Bônus {bonus}", "总积分": "Total de pontos", "总积分是当前可用积分的汇总,与余额列一致;不重复累加汇总行,不包含 Token、次数或其他单位的额度。": "O total reúne os pontos disponíveis no momento e corresponde à coluna de saldo. Linhas de resumo não são contadas duas vezes; tokens, contagens de solicitações e cotas em outras unidades não são incluídos.", "总量 {value}": "Total {value}", "恢复时间未知": "Horário de recuperação desconhecido", "恢复默认:仅开启最快到期优先": "Restaurar padrão: apenas vencimento mais próximo primeiro", "恢复默认:仅按手动顺序": "Restaurar padrão: somente ordem manual", "恢复默认:最快到期优先,账号添加时间关闭": "Restaurar padrão: vencimento mais próximo primeiro, ordenação por data de adição desativada", "我的套餐": "Meus planos", "或": "OU", "所有提供商都有这个字段": "Todos os provedores têm este campo", "所选账号的各周期:{list}": "Períodos da conta selecionada: {list}", "手动添加": "Adição manual", "打开批量操作弹窗,并预选这一组的账号(改代理等动作在弹窗里挑参数)": "Abre a janela de operações em lote com as contas deste grupo pré-selecionadas (os parâmetros, como o proxy, escolhem-se na janela)", "执行中…": "Executando…", "执行({action})": "Executar ({action})", "批量动作": "Ação em lote", "批量操作 · 已选 {count} 个账号": "Operação em lote · {count} contas selecionadas", "批量操作失败:{error}": "Falha na operação em lote: {error}", "批量操作已保存,但列表刷新失败:{error}": "As alterações em lote foram salvas, mas a lista não atualizou: {error}", "批量操作接口不可用,请重新打开页面": "Operações em lote indisponíveis; reabra a página", "批量操作未返回结果,请刷新后确认状态": "A operação em lote não retornou resultado; atualize para confirmar o estado", "批量操作本组": "Operações em lote deste grupo", "批量操作结果不完整,请刷新后核对所选账号": "A operação em lote retornou resultados incompletos. Atualize a página e confira as contas selecionadas.", "批量操作结果未确认,请刷新后核对设置": "Não foi possível confirmar as alterações em lote. Atualize a página e confira as configurações.", "批量规则按每个账号分别判定,不合并余额或 Token 用量。": "As regras em lote são avaliadas por conta; saldos e consumo de tokens não são somados.", "把每页调回「全部」": "Voltar o tamanho de página para \"Tudo\"", "折叠": "Recolher", "折叠全部": "Recolher tudo", "折叠全部分组(只留组头)": "Recolher todos os grupos (deixando só os cabeçalhos)", "折叠这一组": "Recolher este grupo", "拖动调整列宽(双击还原)": "Arraste para ajustar a largura da coluna (clique duas vezes para restaurar)", "拖动调整整组顺序": "Arraste para reordenar grupos inteiros", "拖动调整组内顺序": "Arraste para reordenar dentro do grupo", "按上游额度查询的读数判定;模型共用同一个额度池时,选择模型不会拆分该池余额。": "Avaliado pela leitura de cota do provedor. Selecionar modelos não divide o saldo de uma cota compartilhada.", "按优先级从上到下比较,勾选的项才参与": "Comparadas de cima para baixo; só as regras marcadas participam", "按住拖动,调整这一家的组顺位(整组一起动)": "Segure e arraste para mudar a posição de grupo deste provedor (o grupo inteiro se move junto)", "按住拖动,调整这个账号在本组内的顺序": "Segure e arraste para mudar a ordem desta conta dentro do seu grupo", "按总积分设置限制": "Limitar pelo total de pontos", "按提供商筛选账号": "Filtrar contas por provedor", "按最低剩余比例选择账号,所有周期均来自同一账号": "Seleciona a conta com a menor porcentagem restante; todos os períodos são da mesma conta", "按未显示原因筛选": "Filtrar por motivo", "按模型": "Por modelo", "按每日或短周期实际可用额度最低的账号展示,所有周期均来自同一账号": "Exibe a conta com a menor cota efetivamente disponível no período diário ou curto; todos os períodos são da mesma conta", "按规则限制该账号参与转发:没有规则(或全部停用)= 不限制;跳过档自动恢复,禁用档需手动启用。": "Restringe a participação desta conta no encaminhamento por regras: sem regras (ou todas desativadas) = sem restrição; a ação de ignorar se recupera automaticamente e a de desativar exige ativação manual.", "按账号总可用余额比较,不重复累加积分明细": "Compara o saldo total disponível de cada conta sem somar novamente os detalhes de créditos", "按账号最早到期、且还有剩余的积分包比较": "Compara cada conta pelo pacote de créditos mais próximo do vencimento que ainda tem saldo e não expirou", "排序": "Ordenação", "提供商已停用": "Provedor desativado", "提供商显示名,1~{max} 个字符": "Nome de exibição do provedor, de 1 a {max} caracteres", "提供商:{name}": "Provedor: {name}", "提高优先级": "Aumentar prioridade", "插件包已停用": "Pacote de plugin desativado", "插件已启用但加载失败": "O plugin está ativado, mas falhou ao carregar", "插件未加载": "Plugin não carregado", "插件未安装": "Plugin não instalado", "搜索": "Pesquisar", "搜索账号": "Pesquisar contas", "搜索账号 / 邮箱 / 备注": "Buscar conta / e-mail / nota", "操作失败:{message}": "Falha na operação: {message}", "收起": "Recolher", "改动即时生效": "As alterações entram em vigor imediatamente", "改协议 / Base URL 会改变它们的转发方式,正在进行的请求可能失败;模型清单与映射在「模型管理」页。": "Alterar o protocolo / Base URL muda a forma de encaminhamento delas e requisições em andamento podem falhar; a lista de modelos e o mapeamento ficam na página 「Gerenciamento de modelos」.", "数值越小越先用;": "Quanto menor o valor, antes é usada; ", "数值越小越先用;{hint}": "Quanto menor o valor, antes é usada; {hint}", "整个账号": "Conta inteira", "整轮查询时限": "Tempo limite total da consulta", "整轮查询时限必须是 15~180 秒的整数": "O tempo limite total deve ser um número inteiro entre 15 e 180 segundos.", "新账号落到组首 / 组尾": "Novas contas no topo / no fim", "旗舰": "Ultimate", "无上限 · 已用 {used}": "Sem limite · Usado {used}", "无上限按日计(上游到达上限后仍继续计数,超额如实显示)": "Sem limite, contado por dia (o upstream continua contando após atingir o limite e o excedente é exibido com fidelidade)", "无代理(直连)": "Sem proxy (conexão direta)", "无数据": "Sem dados", "无法拖动:已启用自动消耗规则({rules})。请先在「消耗顺序」中关闭这些规则,再手动调整。": "Não é possível arrastar com regras automáticas de consumo ativadas ({rules}). Desative-as em Ordem de consumo antes de reordenar manualmente.", "无法拖动:当前已按积分到期时间和账号添加时间自动排序。请先在「消耗顺序」中关闭这两项规则,再手动调整。": "Não é possível arrastar: as contas estão ordenadas automaticamente pelo vencimento dos créditos e pela data de adição. Desative as duas regras em Ordem de consumo antes de alterar a ordem manualmente.", "无法拖动:当前已按积分到期时间自动排序。请先在「消耗顺序」中关闭该规则,再手动调整。": "Não é possível arrastar: as contas estão ordenadas automaticamente pelo vencimento dos créditos. Desative esta regra em Ordem de consumo antes de alterar a ordem manualmente.", "无法拖动:当前已按账号添加时间自动排序。请先在「消耗顺序」中关闭该规则,再手动调整。": "Não é possível arrastar: as contas estão ordenadas automaticamente pela data de adição. Desative esta regra em Ordem de consumo antes de alterar a ordem manualmente.", "无福利额度": "Sem cota de benefício", "既有 Clash Verge 直接引用继续可用;也可在「网络代理」页同步端点,再改选「已保存的代理」。": "As referências diretas existentes ao Clash Verge continuam disponíveis. Você também pode sincronizar endpoints na página Proxy de rede e mudar para Proxies salvos.", "旧数据导入": "Importação de dados antigos", "旧版 / 定制站点才需要,新版可留空": "Só versões antigas / sites personalizados precisam; nas novas pode ficar vazio", "时": "→ dispara", "明天 {clock}": "Amanhã {clock}", "明天 {time}": "amanhã às {time}", "明天到期": "Expira amanhã", "明细": "Detalhes", "昵称 {name}": "Apelido {name}", "显示账号名": "Mostrar nome da conta", "暂无可查询余额的账号": "Nenhuma conta com saldo consultável", "暂无可比较余额;查到同单位的数值后自动生效,比例与无限额度不参与": "Ainda não há saldos comparáveis. A ordenação será aplicada ao obter valores na mesma unidade; percentuais e cotas ilimitadas são excluídos.", "暂无可用积分信息": "Nenhuma informação de créditos disponível no momento", "暂无数据:先查询一次余额,之后会自动按到期排序": "Sem dados ainda: consulte o saldo uma vez e a ordenação por vencimento passa a valer automaticamente", "暂无数据:先查询一次余额,可按需启用到期排序": "Sem dados ainda: consulte o saldo uma vez e ative a ordenação por vencimento se necessário", "暂无读数": "Sem leitura disponível", "暂无账号,请点击右上角「添加账号」": "Nenhuma conta; clique em 「Adicionar conta」 no canto superior direito", "暂无额度信息": "Sem informações de cota", "更多操作": "Mais ações", "更多设置": "Mais configurações", "更新于 {time}": "Atualizado em {time}", "更新失败": "Falha ao atualizar", "替换全部规则": "Substituir todas as regras", "替换选中账号的限制规则": "Substituir regras de limite das contas selecionadas", "最快到期优先": "Vencimento mais próximo primeiro", "最新添加优先": "Mais recentes primeiro", "最早 {soonest} 恢复": "Recuperação mais cedo: {soonest}", "最早恢复": "Recuperação mais cedo", "最早添加优先": "Mais antigas primeiro", "最晚到期优先": "Vencimento mais distante primeiro", "有 {n} 个账号因提供商插件未就绪,暂未显示": "{n} contas estão ocultas porque seus plugins de provedor não estão prontos", "有效期": "Validade", "有的账号过了 0 点额度就回来 —— 选「自然日」": "Algumas contas têm a cota restaurada após as 0h — escolha 「Dia natural」", "服务器本地时区": "Fuso horário local do servidor", "未使用": "Não usado", "未启用套餐池账号,不生成验证码令牌": "Nenhuma conta Start Plan habilitada; nenhum token de verificação é gerado.", "未命名账号": "Conta sem nome", "未声明可手动续期;本机引用请在原客户端处理登录态。": "A renovação manual não foi declarada. Para referências locais, gerencie o login no cliente original.", "未接入查询": "Consulta não integrada", "未显示的账号": "Contas ocultas", "未显示账号": "Contas ocultas", "未查询": "Não consultado", "未检测到 Clash Verge": "Clash Verge não detectado", "未检测到 Clash Verge 配置": "Configuração do Clash Verge não detectada", "未被使用": "Não utilizado", "未触发": "Não acionado", "未触发{current}": "Não acionada{current}", "未触发{usage}{countdown}": "Não acionada{usage}{countdown}", "未设备注名": "Sem rótulo", "未返回余额数据": "Nenhum dado de saldo retornado", "未返回可确认的余额数值": "Nenhum saldo numérico confirmado foi retornado", "未返回可识别的余额数据": "Nenhum dado de saldo reconhecível retornado", "未返回重置时间": "Horário de renovação indisponível", "未配置": "Não configurado", "未配置凭证": "Credencial não configurada", "本周期 Token 消耗达到限制器的上限,账号已被自动禁用(窗口重置也不恢复,需手动启用)": "O consumo de Token do período atingiu o limite do Limitador e a conta foi desativada automaticamente (a redefinição da janela não a recupera; é preciso ativar manualmente)", "本周期 Token 消耗达到限制器的上限,转发时会跳过该账号(窗口重置自动恢复)": "O consumo de Token do período atingiu o limite do Limitador; a conta será ignorada no encaminhamento (a redefinição da janela a recupera automaticamente)", "本周期已用": "Uso do período", "本地 Token 消耗": "Consumo local de tokens", "本地台账里今天还领过这些,但上面的读数里还没有:{plans}(读数刷新可能有延迟)": "O registro local mostra outros resgates de hoje que ainda não aparecem nas leituras acima: {plans} (a leitura pode demorar a atualizar)", "本地消耗上限必须是大于 0 的安全整数": "O limite de consumo local deve ser um inteiro positivo seguro", "本地用量保护": "Proteção de consumo local", "本地统计只包含经过本网关的请求,不等于上游账单;清理请求日志不会清零。套餐选择用于限定保护范围,不会强制上游扣指定套餐。": "Os contadores locais incluem apenas requisições por este gateway, não a fatura do provedor. Limpar os logs não os zera. A seleção do plano define o alcance da proteção, sem obrigar o provedor a descontar desse plano.", "本地请求次数": "Número de requisições locais", "本地领取于 {time}": "Resgatado localmente em {time}", "本提供商不支持积分到期排序,默认保持手动顺序;可按需启用账号添加时间排序。": "Este provedor não oferece ordenação por vencimento dos créditos, então a ordem manual é o padrão. Ative a ordenação por data de adição se necessário.", "本提供商默认启用最快到期优先,账号添加时间默认关闭;关闭全部规则可恢复手动顺序。": "Este provedor usa por padrão o vencimento mais próximo primeiro, com a ordenação por data de adição desativada. Desative todas as regras para restaurar a ordem manual.", "本期活动": "Eventos atuais", "本期活动按套餐分别展示,领取资格以上游返回为准": "Os eventos atuais são exibidos por plano. A elegibilidade é determinada pela resposta do provedor.", "本组 {n} 个账号的可用余额之和,按整组统计(不受筛选、搜索影响)": "Soma do saldo disponível das {n} contas deste grupo, contabilizada sobre o grupo inteiro (não afetada por filtros ou busca)", "本组 {n} 个账号的百分比读数不能相加,取组内最低的剩余比例(按整组统计,不受筛选、搜索影响)": "As leituras percentuais das {n} contas deste grupo não podem ser somadas; exibimos a menor porcentagem restante (grupo inteiro, sem influência de filtros ou busca)", "本组 {n} 个账号的额度概览(按整组统计,不受筛选、搜索影响)": "Resumo das cotas das {n} contas deste grupo (grupo inteiro, sem influência de filtros ou busca)", "本组代理": "Proxy deste grupo", "本组操作": "Ações do grupo", "本组每个账号会分别保存为一个 JSON 文件,包含被筛选隐藏的账号。": "Cada conta deste grupo será salva em um arquivo JSON separado, incluindo contas ocultas pelos filtros.", "权益 {value}": "Concedido {value}", "权益 {value} {unit}": "Concedido {value} {unit}", "条件即时生效,关掉面板就能看到结果。": "Os filtros aplicam na hora — feche o painel para ver o resultado.", "条件组 {n}": "Grupo de condições {n}", "来源 {source}": "Origem: {source}", "查看": "Ver", "查看因插件未就绪而暂未显示的账号": "Contas ocultas porque o plugin do provedor não está pronto", "查看插件状态": "Ver estado dos plugins", "查询中…": "Consultando…", "查询余额": "Consultar saldo", "查询全部账号的余额(含已禁用账号 —— 禁用只表示不参与转发)": "Consultar o saldo de todas as contas (incluindo as desativadas — desativada significa apenas que não participa do encaminhamento)", "查询凭证还没配齐:填好后余额列才有读数,在此之前会显示「未配置」。": "As credenciais de consulta ainda não estão completas: a coluna de saldo só passa a ter leitura depois de preenchidas; até lá mostra \"Não configurado\".", "查询失败": "Falha na consulta", "查询失败:{message}": "Falha na consulta: {message}", "查询已成功,但上游未提供额度数据,不代表余额为零。": "A consulta foi concluída, mas o provedor não retornou dados de cota. Isso não significa que o saldo seja zero.", "查询设置": "Configurações de consulta", "查询该账号剩余余额(读数显示在余额列)": "Consulta o saldo restante desta conta (a leitura aparece na coluna de saldo)", "查询超时,可重新查询": "A consulta expirou. Você pode tentar novamente.", "查询间隔": "Intervalo de consulta", "查询间隔必须是 {min} 秒 ~ 24 小时": "O intervalo de consulta deve ser de {min} segundos ~ 24 horas", "桌面端实时登录态请在原客户端更新": "Atualize esta sessão de desktop em tempo real no cliente original", "桌面端实时登录态(凭证每次从客户端登录态文件读取)": "Estado de login em tempo real do desktop (a credencial é lida do arquivo de login do cliente a cada uso)", "模型范围": "Escopo dos modelos", "正在加载…": "Carregando…", "正在探测可领取的套餐…": "Verificando planos resgatáveis…", "正在查询": "Consultando", "正在查询本期活动…": "Consultando eventos atuais…", "正在补铸验证码令牌": "Gerando tokens de CAPTCHA", "正在读取 Clash Verge 配置…": "Lendo a configuração do Clash Verge…", "正在读取…": "Lendo…", "正在读取代理列表…": "Lendo a lista de proxies…", "正在连接上游…": "Conectando ao upstream…", "正常": "Normal", "此刻正在使用这个账号的请求数(含还在下发内容的流式请求);为 0 时不显示": "Número de requisições usando esta conta neste momento (incluindo requisições de streaming que ainda enviam conteúdo); não é exibido quando é 0", "此额度不属于账号当前使用的通道": "Esta cota não pertence ao canal atual da conta", "此额度不属于账号当前使用的通道,切换到对应通道后才参与判定。": "Esta cota não pertence ao canal atual da conta. Ela só é avaliada após mudar para o canal correspondente.", "每": "A cada", "每 {period}消耗 ≥ {count} Token": "A cada {period}, consumo ≥ {count} Token", "每周或每月额度已耗尽,短周期实际可用额度按 0% 计算;账号明细保留原始读数": "A cota semanal ou mensal acabou, então a cota efetiva do período curto é considerada 0%; os detalhes da conta mantêm as leituras originais", "每日消耗 ≥": "Consumo diário ≥", "每日消耗 ≥ {count} Token(每天 0 点重置)": "Consumo diário ≥ {count} Token (redefinido às 0h de cada dia)", "每日重置": "Renova diariamente", "每日重置(额度按周期回满,不是作废)": "Renova diariamente (a cota volta ao total a cada ciclo; ela não é perdida)", "每条请求换一个出口(按顺序轮流),上游看到的 IP 因此是变化的;出口的地址与端口由「网络代理」页管理": "Cada requisição passa para a próxima saída, então o upstream vê um IP variável; endereços e portas das saídas são gerenciados na página Proxy de rede", "每组共用一个触发动作;第二条条件起可选择「与/或」。与优先于或,下面会显示明确分组。各条件组独立生效。": "Cada grupo compartilha uma ação. A partir da segunda condição, escolha E ou OU. E tem precedência sobre OU; o agrupamento aparece abaixo. Cada grupo é aplicado de forma independente.", "没有匹配「{kw}」的账号": "Nenhuma conta corresponde a \"{kw}\"", "没有可全选的账号": "Nenhuma conta para selecionar", "没有可用出口": "Nenhuma saída disponível", "没有适用于本次操作的账号": "Nenhuma conta é compatível com esta operação", "没有选中的账号": "Nenhuma conta selecionada", "活动套餐": "Plano de evento", "活动套餐的推理端点要求每条请求带一个阿里云验证码令牌;令牌由本应用在后台静默铸造,界面关闭时无法铸造": "O endpoint de inferência do plano de evento exige um token de captcha da Alibaba Cloud em cada requisição; o token é gerado silenciosamente pelo aplicativo em segundo plano e não pode ser gerado com a interface fechada", "活动套餐(Start Plan)": "Plano de evento (Start Plan)", "活动套餐(Start Plan)— 走官方活动端点,用活动里领到的额度": "Plano de evento (Start Plan) — usa o endpoint oficial do evento e a cota resgatada nele", "活动时间:{time}": "Período do evento: {time}", "活动期内每天发一份新套餐;同一份当天重复领取会提示「已领取过」,次日可再领。领取要走一次人机验证(滑块)。": "Durante o evento um novo plano é emitido todo dia; resgatar o mesmo de novo no mesmo dia retorna \"já resgatado\", e é possível resgatar de novo no dia seguinte. O resgate passa por uma verificação humana (slider).", "活动期内每天发一份新套餐;已领的套餐不重复提交,次日可领新套餐。只有主动领取时才会进行人机验证。": "Um novo plano é oferecido a cada dia da campanha. Planos já resgatados não são enviados novamente; resgate o novo plano amanhã. A verificação humana só ocorre quando você escolhe resgatar.", "活动目录合并账号预览、营销活动与匿名探测。已领取仅依据领取记录或账号名下套餐;状态待确认时可尝试领取,资格以上游返回为准。": "O catálogo combina prévias da conta, eventos de marketing e consultas anônimas. O status de resgate exige um registro de resgate ou um plano pertencente à conta. Se o status não estiver confirmado, você pode tentar resgatar; a elegibilidade depende da resposta do provedor.", "测试中…": "Testando…", "测试出口": "Testar saída", "消耗顺序": "Ordem de consumo", "添加 新→旧": "Adição nova→antiga", "添加 旧→新": "Adição antiga→nova", "添加规则": "Adicionar regra", "添加限制": "Adicionar limite", "清掉本机的限流标记,立刻重新尝试该模型(上游若仍在限流会再次被标记)": "Remove a marca de rate limit local e tenta novamente este modelo imediatamente (se o upstream ainda estiver limitando, ele será marcado de novo)", "清掉该账号全部模型的限流标记": "Remove as marcas de rate limit de todos os modelos desta conta", "清空全部规则": "Limpar todas as regras", "清空搜索与三个筛选档位,回到全部账号": "Limpar a busca e os três grupos de filtro, mostrando todas as contas", "清空选中账号的限制规则": "Limpar regras de limite das contas selecionadas", "清除": "Limpar", "清除失败:{error}": "Falha ao limpar: {error}", "清除失败:{message}": "Falha ao limpar: {message}", "清除已配置的 API Key(转发时会因缺少凭证被跳过)": "Remove a API Key configurada (a conta será ignorada no encaminhamento por falta de credencial)", "清除已配置的 {label}": "Limpar o {label} configurado", "清除已配置的余额查询凭证": "Remove a credencial de consulta de saldo configurada", "清除标记": "Limpar marcas", "清除筛选": "Limpar filtros", "清除该账号的冷却与全部模型限流标记": "Limpar a pausa desta conta e as marcações de limite de todos os modelos", "滚动窗口": "Janela móvel", "点击{action}各模型的限流明细": "Clique para {action} os detalhes de rate limit de cada modelo", "点击查看账号冷却与模型限流明细": "Clique para ver a pausa da conta e os limites dos modelos", "状态": "Status", "状态 {status}": "Status {status}", "状态待确认": "Status não confirmado", "状态未知": "Desconhecido", "生效 {time}": "Início {time}", "生效中": "Em vigor", "生效至到期累计(不自动回满)": "Acumulado da ativação à expiração (sem reposição automática)", "用 NewAPI 站点的个人访问令牌查询账户余额(不是这条账号的上游 API Key)。令牌在站点的「个人设置」里生成,只有旧版 / 定制站点才需要额外填用户 ID。": "Consulta o saldo da conta com um token de acesso pessoal do site NewAPI (não é a chave de API upstream desta conta). O token é gerado em \"Configurações pessoais\" do site; só versões antigas / personalizadas pedem também o ID de usuário.", "用 bigmodel.cn 控制台的访问令牌查询账户余额(人民币元)。令牌是登录后浏览器 Cookie `bigmodel_token_production` 的值:开发者工具 → 应用(Application)→ Cookie 里复制。": "Consulta o saldo da conta (em yuans) com um token de acesso do console bigmodel.cn. O token é o valor do cookie do navegador `bigmodel_token_production` após o login: DevTools → Application → Cookies, e copie de lá.", "用下面的规则统一替换各账号的全部规则,执行前会再次确认。": "Substitui todas as regras de cada conta pelas regras abaixo; pede confirmação antes de executar.", "用商汤日日新控制台的账号密码查询(与推理用的 API Key 不是同一套)。网关会自动换取登录票并缓存,过期后自动重登,不需要手动维护。": "Consulta com a conta e a senha do console SenseNova (não são as mesmas credenciais da chave de API de inferência). O gateway troca por um ticket de login e o mantém em cache, logando de novo sozinho quando expira — sem manutenção manual.", "用户名": "Nome de usuário", "用这条账号的 API Key 查询订阅用量,不需要额外配置;读数展开成 5 小时 / 每周 / 每月三个窗口。": "Consulta o uso da assinatura com a chave de API desta conta; sem configuração extra. A leitura se abre em três janelas: 5 horas / semanal / mensal.", "用这条账号的 API Key 查询,不需要额外配置。": "Consulta com a chave de API desta conta; sem configuração extra.", "用这条账号的 API Key 生成签名后查询账户余额(美元),不需要额外配置。要求 API Key 是 z.ai 的「id.secret」形态(控制台生成的 Key 就是)。": "Assina com a chave de API desta conta e consulta o saldo (em dólares); sem configuração extra. A chave precisa estar no formato \"id.secret\" da z.ai (que é como o console gera).", "留空 = 不修改,清除用右边的按钮": "Vazio = não altera; limpe com o botão à direita", "登录 / 导入一个新账号": "Fazer login / importar uma nova conta", "登录授权已失效,请重新登录;自动续期无法恢复已过期或已撤销的刷新令牌。": "A autorização de login não é mais válida. Faça login novamente; a renovação automática não restaura um token de atualização expirado ou revogado.", "登录授权截止:{time};自动续期不会延长此时间,届时需重新网页登录。": "A autorização de login expira em {time}. A renovação automática não estende esse prazo; faça login novamente pelo navegador quando ela expirar.", "百分比阈值必须在 0~100 之间": "O limite percentual deve estar entre 0 e 100", "直连": "Conexão direta", "确定删除选中的 {count} 个账号?此操作不可恢复,账号的登录态会一并移除。": "Confirmar a exclusão de {count} contas selecionadas? Esta operação é irreversível e o estado de login das contas também será removido.", "确定清空 {count} 个账号的全部限制规则?余额与 Token 将不再设限;已禁用的账号不会自动启用。": "Limpar todas as regras de {count} contas? Os limites de saldo e tokens serão removidos; contas desativadas não serão ativadas automaticamente.", "确定清除全部模型的限流标记?": "Limpar os limites de todos os modelos?", "确定清除模型「{model}」的限流标记?": "Limpar o limite do modelo “{model}”?", "确定清除该账号的冷却与全部模型限流标记?": "Limpar a pausa desta conta e as marcações de limite de todos os modelos?", "禁用": "Desativar", "禁用整个账号(手动恢复)": "Desativar a conta inteira (reativação manual)", "禁用该账号(需手动重新启用)": "Desativar esta conta (precisa ser reativada manualmente)", "禁用这一组里的全部账号(含被筛选隐藏的)": "Desabilita todas as contas deste grupo (incluindo as ocultas pelo filtro)", "福利按限时活动下发,不是每个账号都有 —— 正常状态,不是查询失败": "Os benefícios são distribuídos por eventos por tempo limitado e não estão disponíveis em todas as contas — é um estado normal, não uma falha de consulta", "福利日额度": "Cota diária de benefício", "福利网关未读到:{error}": "Gateway de benefícios não lido: {error}", "秒": "segundos", "秒;默认 60 秒,包含重试等待,多步骤查询可适当延长。": "segundos; padrão de 60, incluindo esperas entre tentativas. Aumente para consultas de várias etapas, se necessário.", "积分": "Pontos", "积分到期时间": "Expiração dos créditos", "积分包": "Pacote de pontos", "积分明细": "Detalhes dos pontos", "积分查询已复用转发用的登录凭证,这里通常留空即可。只有旧版本填过、或从旧代理导入过凭证时才有值": "A consulta de pontos reutiliza a credencial de login usada no encaminhamento; normalmente basta deixar em branco. Só há valor quando versões antigas o preencheram ou quando a credencial foi importada de um proxy antigo", "稍后由后台判定自动禁用": "O sistema decidirá em segundo plano e desativará automaticamente", "窗口 = 今天 0 点起(本地时区),0 点重置即清零恢复;按账号在 requests 表聚合": "Janela = a partir das 0h de hoje (fuso horário local); a redefinição às 0h zera e recupera; agregação por conta na tabela requests", "窗口内已用 {used} / {limit} Token,转发时会跳过该账号(重置后自动恢复)": "Uso na janela {used} / {limit} Token; a conta será ignorada no encaminhamento (recuperada automaticamente após a redefinição)", "窗口对齐自然时间(整点 / 整 N 分钟一轮回),重置即清零恢复;按账号在 requests 表聚合": "A janela se alinha ao tempo natural (ciclos em horas cheias / a cada N minutos); a redefinição zera e recupera; agregação por conta na tabela requests", "窗口数量超过展示上限,仅展示部分读数": "O número de janelas excede o limite de exibição; só parte das leituras é mostrada", "窗口重置时间": "Renovação de cada janela", "窗口长度": "Duração da janela", "窗口额度与时间": "Janelas de cota e horários", "端口": "Porta", "端口准备中": "Porta em preparação", "第 {rank} 顺位": "Posição global {rank}", "等待当前验证码流程结束": "Aguardando a verificação atual terminar", "筛选": "Filtrar", "筛选 / 搜索 / 分页生效时组顺位不可拖动(别家的组整组不可见,落点没法定位)": "A ordem dos grupos não pode ser arrastada com filtro / busca / paginação ativos (grupos de outros provedores ficam ocultos, então o destino não pode ser localizado)", "系统代理信息无效,请手动填写。": "As informações do proxy do sistema são inválidas. Preencha manualmente.", "系统代理协议暂不支持自动填入,请手动配置 HTTP 或 SOCKS5 代理": "Este protocolo de proxy do sistema não pode ser importado. Configure manualmente um proxy HTTP ou SOCKS5.", "系统代理地址无效,请手动填写": "O endereço do proxy do sistema é inválido. Preencha manualmente.", "系统代理认证信息无法读取,请手动填写": "Não foi possível ler as credenciais do proxy do sistema. Preencha manualmente.", "累计起点": "Início da contagem", "级联删除名下全部账号,不可恢复": "Exclui em cascata todas as contas vinculadas, sem possibilidade de recuperação", "组内先后:按住左边的把手上下拖动即可调整;整组的先后拖分组带的把手": "Dentro do grupo: segure a alça à esquerda e arraste para cima / baixo para reordenar; para a ordem dos grupos inteiros, arraste a alça da faixa do grupo", "组内并发上限": "Limite de concorrência do grupo", "组内手动顺序": "Ordem manual dentro do grupo", "组内第 {rank} 位": "Posição {rank} no grupo", "组顺位已锁定": "Ordem dos grupos bloqueada", "组顺位:越小越先用(拖动分组带调整)": "Posição do grupo: menor vai primeiro (arraste a faixa do grupo para ajustar)", "统一设置自动查询的开关、间隔和失败重试次数;不会复制或覆盖余额查询凭证。": "Define o interruptor, o intervalo da consulta automática e o número de novas tentativas; nunca copia nem sobrescreve credenciais de consulta de saldo.", "统计周期": "Período de contagem", "统计周期尚未开始或已经结束": "O período de contagem ainda não começou ou já terminou", "统计窗口必须是 1 分钟~31 天": "A janela de contagem deve ser de 1 minuto a 31 dias", "统计结束时间必须晚于开始时间": "O fim da contagem deve ser posterior ao início", "缓存用量未知,不按零计量,也不用于推算余额": "O uso em cache é desconhecido; não é contado como zero nem usado para inferir saldo", "编码套餐(Coding Plan)": "Plano de programação (Coding Plan)", "编码套餐(Coding Plan)— 走开放平台端点,消耗开放平台的额度(订阅套餐 / 资源包 / 充值余额)": "Plano de programação (Coding Plan) — usa os endpoints da plataforma aberta e consome a cota dela (plano de assinatura / pacotes de recursos / saldo pré-pago)", "编码套餐(Coding Plan)— 走开放平台端点,用自己订阅的额度": "Plano de programação (Coding Plan) — usa o endpoint da plataforma aberta e a cota da própria assinatura", "编辑": "Editar", "编辑限制": "Editar limite", "编辑限制条件": "Editar condição de limite", "网关电脑未检测到可导入的系统代理;请手动填写,或选择已保存的代理。": "Nenhum proxy do sistema importável foi encontrado no computador do gateway. Informe um manualmente ou escolha um proxy salvo.", "网络": "Rede", "网页端会逐个下载文件;浏览器提示时请允许本网站下载多个文件。": "O painel web baixa os arquivos individualmente. Se solicitado, permita que este site baixe vários arquivos.", "自动查询余额": "Consultar saldo automaticamente", "自动查询余额(按下面的间隔自动刷新余额列的读数)": "Consultar saldo automaticamente (atualiza a leitura da coluna de saldo no intervalo abaixo)", "自定义代理": "Proxy personalizado", "自定义代理…": "Proxy personalizado…", "自定义:": "Personalizado: ", "自然周": "Semana civil", "自然日": "Dia civil", "自然日(每天 0 点)": "Dia natural (0h de cada dia)", "自然月": "Mês civil", "补全请求": "Requisições de conclusão", "补铸失败:{error}": "Falha ao gerar tokens: {error}", "规则操作": "Operação de regras", "解析失败": "Falha na análise", "触发动作": "Ação ao disparar", "触发后": "Após disparar", "触发条件": "Condição de disparo", "计入 {counted}/{total}": "contabilizados {counted}/{total}", "订阅已移除": "Assinatura removida", "订阅统计未读到:{error}": "Estatísticas de assinatura não lidas: {error}", "记录里没有过期时间": "Não há data de expiração no registro", "设为首选": "Tornar preferida", "设置并发上限": "Definir limite de concorrência", "访客账号没有积分体系,因此不查询余额(登录账号可以查)": "Contas de convidado não têm sistema de pontos, por isso o saldo não é consultado (uma conta conectada pode ser consultada)", "访问令牌": "Token de acesso", "试用版": "Plano de teste", "该上游无需鉴权": "Este upstream não exige autenticação", "该上游无需鉴权(转发与拉取模型都不发送鉴权头)": "Este upstream não exige autenticação (não envia cabeçalho de autenticação no encaminhamento nem ao buscar modelos)", "该提供商尚未接入余额查询": "Consultas de saldo ainda não estão integradas para este provedor", "该提供商没有余额查询": "Este provedor não tem consulta de saldo", "该提供商没有余额查询;可按 Token 消耗设置限制。": "Este provedor não oferece consulta de saldo; você pode limitar o consumo de tokens.", "该提供商的推理转发尚未接入,账号不参与转发": "O encaminhamento de inferência deste provedor ainda não está integrado; a conta não participa do encaminhamento", "该账号不支持刷新 Token 或未提供刷新凭证": "Esta conta não permite renovar o Token ou não tem credenciais de renovação", "该账号出网走的代理(Clash 出口 / 自定义 / 直连);点击可修改": "Proxy usado na saída desta conta (saída do Clash / personalizado / conexão direta); clique para alterar", "该账号出网走的代理(已保存的代理 / 自定义 / 直连);点击可修改": "Proxy usado por esta conta (salvo / personalizado / direto); clique para alterar.", "该账号当前限流中的模型;点徽章看明细": "Modelos desta conta atualmente com rate limit; clique no selo para ver os detalhes", "该账号没有套餐登录态(jwt),套餐池通道会失败:请重新登录该账号": "Esta conta não tem estado de login do plano (jwt) e o canal do pool de planos falhará: faça login novamente nesta conta", "该账号没有套餐登录态(jwt),活动套餐会失败:请重新登录该账号": "Esta conta não tem estado de login do plano (jwt) e o plano de evento falhará: faça login novamente nesta conta", "该账号没有福利模型额度(福利按活动下发,不是每个账号都有)": "Esta conta não tem cota de modelos de benefício (os benefícios são distribuídos por eventos e não estão em todas as contas)", "该账号没有积分类读数(额度只有福利 token 池)": "Esta conta não tem leituras de pontos (a cota é apenas o pool de tokens de benefício)", "该账号的额度只有福利 token 池(见余额格那两行),订阅统计没有积分类计量表": "A cota desta conta é apenas o pool de tokens de benefício (veja as duas linhas na célula de saldo); as estatísticas de assinatura não têm medidores de pontos", "该额度中的全部模型": "Todos os modelos desta cota", "请先勾选要操作的账号": "Marque primeiro as contas que deseja operar", "请先选择 Clash Verge 出口": "Selecione primeiro uma saída do Clash Verge", "请先选择已保存的代理": "Selecione primeiro um proxy salvo", "请填写代理主机地址": "Preencha o endereço do host do proxy", "请填写提供商名称": "Preencha o nome do provedor", "请填写提供商的 Base URL": "Preencha o Base URL do provedor", "请填写查询间隔": "Preencha o intervalo de consulta", "请填写重置周期": "Preencha o período de redefinição", "请至少添加一条限制规则;清空请使用清空操作": "Adicione pelo menos uma regra; para remover todas, use a operação de limpar", "请选择代理": "Selecione um proxy", "请选择出口": "Selecione uma saída", "读取中…": "Carregando…", "读取失败:{error}": "Falha na leitura: {error}", "读取系统代理失败": "Falha ao ler o proxy do sistema", "读取网关电脑当前的 HTTPS 系统代理,填入自定义地址;后续系统设置变化不会自动同步。": "Copia o proxy HTTPS atual do sistema do computador do gateway para os campos personalizados. Alterações posteriores no sistema não são sincronizadas automaticamente.", "读取自 {dir};端口由 Clash Verge 管理,这里实时同步": "Lido de {dir}; a porta é gerenciada pelo Clash Verge e sincronizada aqui em tempo real", "读数来自自动余额查询;与余额列同一数字口径,严格小于才触发(等于阈值仍可用)": "A leitura vem da consulta automática de saldo; mesmo critério numérico da coluna de saldo; só dispara se for estritamente menor (igual ao limite ainda é utilizável)", "读数里没有套餐清单(免费账号、或套餐的上游状态还没刷新;可点右上角「查询余额」重读)": "A leitura não contém a lista de planos (conta gratuita, ou o estado do plano no upstream ainda não foi atualizado; clique em \"Consultar saldo\" no canto superior direito para reler)", "读数里没有额度桶,这里按套餐权益里的已用 / 总量显示(上游给的数)": "A leitura não tem balde de cota; isto mostra o usado / total da concessão do plano (os números do upstream)", "调整到全局队列第一位": "Mover para o início da fila global", "调整顺序失败:{message}": "Falha ao ajustar a ordem: {message}", "账号": "Contas", "账号不存在,请刷新后重试": "A conta não existe; atualize e tente novamente", "账号不存在,请刷新后重试。": "A conta não existe; atualize e tente novamente.", "账号主额度": "Cota principal da conta", "账号余额单位不一致,暂不按余额排序,继续比较其他规则": "Os saldos usam unidades diferentes. A ordenação por saldo será ignorada; as demais regras continuam valendo.", "账号全部模型暂时停止转发 · 到恢复时间自动解除": "Todos os modelos desta conta estão pausados · Retoma automaticamente no horário de recuperação", "账号冷却": "Pausa da conta", "账号列表刷新不可用,请重新打开页面": "Não é possível atualizar as contas. Reabra a página", "账号列表刷新失败": "Falha ao atualizar a lista de contas.", "账号列表刷新接口不可用,请重新打开页面": "A atualização da lista de contas está indisponível. Reabra a página.", "账号列表加载失败,请点击「刷新」重试": "Falha ao carregar as contas. Clique em \"Atualizar\" para tentar novamente", "账号列表加载失败,请点击「刷新」重试:{message}": "Falha ao carregar as contas. Clique em \"Atualizar\" para tentar novamente: {message}", "账号列表已刷新": "Lista de contas atualizada", "账号名 / 邮箱 / 备注": "Nome da conta / e-mail / nota", "账号套餐到期:{time}": "O plano da conta expira em: {time}", "账号导出失败:{reason}": "Falha ao exportar contas: {reason}", "账号已保存,但列表刷新失败:{error}": "A conta foi salva, mas a lista não pôde ser atualizada: {error}", "账号已保存,但提供商未更新:{error}": "Conta salva, mas o provedor não foi atualizado: {error}", "账号数据仍然保留,无需重新添加。安装或启用对应插件并成功加载后,账号会自动恢复显示。": "Os dados das contas foram mantidos; não adicione as contas novamente. Elas reaparecem automaticamente quando os plugins necessários são instalados ou ativados e carregados com sucesso.", "账号显示名称": "Nome de exibição da conta", "账号更新接口不可用,请重新打开页面": "A atualização de contas está indisponível. Reabra a página.", "账号更新结果未确认,请刷新后核对设置": "Não foi possível confirmar a atualização da conta. Atualize a página e confira as configurações.", "账号正在导出,请稍候": "As contas estão sendo exportadas. Aguarde.", "账号添加时间": "Data de adição da conta", "账号级条件组已触发;点击查看限制器": "Um grupo de condições da conta inteira foi acionado; clique para ver o limitador", "账号表": "Tabela de contas", "账号设置": "Configurações da conta", "账号设置 · {name}": "Configurações da conta · {name}", "账号设置分组": "Grupo de configurações da conta", "账号邮箱": "E-mail da conta", "账号页与全局路由共用此消耗顺序,网关按最新余额数据选路,不需要保持页面打开。模型独立顺序会覆盖全局。": "Contas e roteamento global compartilham esta ordem de consumo. O gateway usa os dados de saldo mais recentes, mesmo com a página fechada. A ordem independente do modelo tem prioridade sobre a global.", "跨账号批量配置仅支持通用条件;套餐实例不能直接复制到其他账号。": "A configuração em lote entre contas aceita apenas condições gerais. Instâncias de planos não podem ser copiadas diretamente para outras contas.", "跳过 {count} 个:": "{count} ignoradas: ", "跳过该账号(余额回升自动恢复)": "Ignorar esta conta (recuperada automaticamente quando o saldo subir)", "跳过该账号(自动恢复)": "Ignorar esta conta (recuperação automática)", "跳过该账号(重置后自动恢复)": "Ignorar esta conta (recuperada automaticamente após a redefinição)", "跳过(自动恢复)": "Ignorar (recuperação automática)", "转发优先级": "Prioridade de encaminhamento", "转发走套餐池(Start Plan)通道(zcode.z.ai 的 Anthropic 端点,用账号里的体验额度 / 活动领取额度);在账号设置里可切回编码套餐": "O encaminhamento usa o canal do pool de planos (Start Plan) (endpoint Anthropic em zcode.z.ai, com a cota de experiência / resgates de evento da conta); nas configurações da conta é possível voltar ao plano de programação", "转发走活动套餐通道(zcode.z.ai 的 Anthropic 端点,用账号里领到的额度);在账号设置里可切回编码套餐": "O encaminhamento usa o canal do plano de evento (endpoint Anthropic em zcode.z.ai, com a cota resgatada na conta); nas configurações da conta é possível voltar ao plano de programação", "转发顺序": "Ordem de encaminhamento", "轮询全部代理节点": "Rotacionar todos os nós de proxy", "轮询的代理": "Proxies para rotacionar", "轮询至少要选择一条代理(或改选「全部」)": "Selecione pelo menos um proxy para rotacionar (ou volte para \"Todos\")", "轮询(换 IP)": "Rotação (troca de IP)", "还没有代理(去「网络代理」页添加)": "Ainda não há proxies (adicione na página 「Proxy de rede」)", "还没有余额读数(已自动查询一次,稍候;也可以点右上角「查询余额」重读)": "Ainda não há leitura de saldo (uma consulta automática já foi iniciada, aguarde; você também pode clicar em \"Consultar saldo\" no canto superior direito)", "还没有保存的代理": "Ainda não há proxies salvos", "还没有批量规则,请先添加限制或从所选账号复制。": "Ainda não há regras em lote; adicione um limite ou copie de uma conta selecionada.", "还没有条件组:账号照常参与转发,不设置额度保护。": "Nenhum grupo de condições ainda. A conta encaminha normalmente, sem proteção de cota.", "还没有账号,去桌面端添加": "Ainda sem contas. Adicione uma no desktop.", "还没有账号,请点击「添加账号」": "Ainda não há contas. Clique em “Adicionar conta”.", "还没有限制规则:账号照常参与转发,余额与 Token 消耗都不设上限。": "Ainda não há regras de limite: a conta participa normalmente do encaminhamento, sem limite de saldo nem de consumo de Token.", "这一份今天已经领过了(重复领取上游会回「已领取过」)": "Este plano já foi resgatado hoje (resgatar de novo devolve \"já resgatado\" no upstream)", "这一家查不到积分到期时间": "Este provedor não tem dados de expiração de créditos", "这一家没有可用余额查询": "Este provedor não oferece consulta de saldo disponível", "这一栏改的是": "Esta seção altera ", "这一段按提供商出现:有什么配什么。": "Esta seção aparece por provedor: configure o que estiver disponível.", "这一类现在没有账号": "Nenhuma conta nesta categoria", "这一组开着排序规则:关掉规则后才能手动拖": "A ordenação automática está ativa neste grupo: desligue as regras para arrastar manualmente", "这个账号的余额走窗口限额通道(只配了编码套餐 API Key):只有每 N 小时的剩余比例,读不到套餐清单": "O saldo desta conta é lido pelo canal de limite de janela (só há uma API Key do plano de codificação): só a porcentagem restante de cada janela de N horas, sem a lista de planos", "这会{what}所有启用中的账号,转发将不可用。确定继续?": "Isto vai {what} todas as contas ativadas e o encaminhamento ficará indisponível. Confirmar?", "这是既有配置(直接引用 Clash 出口,不经过代理池)。推荐改用上面的": "Esta é uma configuração existente (referencia a saída do Clash diretamente, sem passar pelo pool de proxies). Recomendamos usar o item acima ", "这条自定义账号既没有 API Key,也没有勾选「无需鉴权」:转发时会被跳过,该提供商下的模型也不会出现在模型列表里。去账号「设置」里补上 Key,或勾选「该上游无需鉴权」": "Esta conta personalizada não tem API Key nem a opção 「Sem autenticação」 marcada: será ignorada no encaminhamento e os modelos deste provedor não aparecerão na lista de modelos. Preencha a Key em 「Configurações」 da conta ou marque 「Este upstream não exige autenticação」", "这条账号是谁、排第几、能不能接请求。": "Quem é esta conta, em que posição está e se pode receber requisições.", "这条账号访问上游走哪条线路。": "Por qual rota esta conta acessa o upstream.", "这里只影响「显示」:卸载或停用插件不会删除账号;重新安装、启用并成功加载后,这些账号会自动回到列表。": "Isso afeta apenas a exibição: desinstalar ou desativar um plugin nunca apaga contas. Reinstale, ative e carregue o plugin e elas voltam automaticamente.", "连接失败": "Falha na conexão", "连接数": "Número de conexões", "追加规则(保留原有)": "Adicionar regras (manter existentes)", "追加限制规则": "Adicionar regras de limite", "选中多个模型时,每个模型单独累计、单独比较阈值;不合并用量。": "Ao selecionar vários modelos, o consumo é acumulado e comparado com o limite de cada modelo separadamente, sem somar os consumos.", "选择": "Selecionar", "选择所选账号作为模板(可选)": "Usar uma conta selecionada como modelo (opcional)", "选择要轮询的代理(可多选)": "Selecione os proxies para rotacionar (múltiplos)", "逐个刷新所选账号的 Token,未到期也会尝试刷新;不改变启用状态、代理或转发顺序。": "Renova os Tokens das contas selecionadas uma por vez, mesmo antes de expirarem. Mantém o estado de ativação, os proxies e a ordem de encaminhamento.", "逐窗口最低:{list}": "Menor por janela: {list}", "逐请求轮换出口(换 IP):OpenCode Zen 免费档按 IP 限流,单个 IP 的额度用完会对它一律 429": "Troca a saída a cada requisição (mudando o IP): o nível gratuito do OpenCode Zen limita por IP — quando a cota de um IP acaba, as requisições vindas dele recebem 429", "通用额度/本地保护": "Cota geral / proteção local", "邮箱 {email}": "E-mail {email}", "部分余额信息暂未获取;未显示上游原始诊断": "Parte das informações de saldo está indisponível; diagnósticos brutos do upstream não são exibidos", "部分来源查询失败,已保留其他结果:{message}": "Não foi possível consultar algumas fontes; os outros resultados foram mantidos: {message}", "部分来源查询失败,暂不能确认本期活动或领取状态": "Não foi possível consultar algumas fontes, então os eventos atuais ou o status de resgate ainda não podem ser confirmados.", "部分窗口偏低": "Algumas cotas estão baixas", "部分窗口未返回可识别读数": "Algumas janelas não retornaram leituras reconhecíveis", "部分读数未知": "Algumas leituras são desconhecidas", "部分额度读数暂不可用。": "Algumas leituras de cota estão temporariamente indisponíveis.", "配置已变更,请重新查询": "Configurações alteradas. Consulte novamente.", "重新安装这个插件后自动回来": "Reinstale este plugin e elas voltam automaticamente", "重新读取": "Ler novamente", "重新读取该账号的余额与套餐(走余额查询那条链)": "Reler o saldo e os planos desta conta (passa pela cadeia de consulta de saldo)", "重新读取账号列表和插件状态,不刷新 Token 或查询余额": "Reler a lista de contas e o estado dos plugins, sem renovar tokens nem consultar saldos", "重查": "Repetir", "重置": "Redefinir", "重置 {date}": "Redefine em {date}", "重置也不恢复,需手动启用": "A redefinição não a recupera; é preciso ativar manualmente", "重置周期必须是 30 分钟 ~ 24 小时": "O período de redefinição deve ser de 30 minutos ~ 24 horas", "重置方式": "Modo de redefinição", "重置时区": "Fuso horário da redefinição", "重置详情": "Detalhes da renovação", "长期有效": "Longa duração", "间隔单位": "Unidade do intervalo", "阈值": "Limite", "降低优先级": "Diminuir prioridade", "限制器": "Limitador", "限制器 · {n} 个模型": "Limitador · {n} modelos", "限制器 · 账号已跳过": "Limitador · Conta ignorada", "限制器:{window}已用 {used} / {threshold} Token": "Limitador: {window} — usado {used} / {threshold} Token", "限制指标": "Métrica do limite", "限制类型": "Tipo de limite", "限制阈值必须是大于 0 的数字": "O valor limite deve ser um número maior que 0", "限制阈值必须是非负有限数字": "O limite deve ser um número finito não negativo", "限流": "Rate limit", "限流中": "Com rate limit", "限流已清除": "Limite removido", "限额": "Limite", "限额状态": "Status do limite", "隐藏账号名(名字显示为星号)": "Ocultar nome da conta (o nome aparece com asteriscos)", "需要人机验证时,在该账号的「套餐明细」中主动开始验证。": "Quando a verificação humana for necessária, inicie-a manualmente nos detalhes do plano desta conta.", "需要重新登录": "Login necessário", "需要验证码时由打开着的主窗口或浏览器面板补铸;库存、补铸状态和失败原因分别显示": "Quando a verificação é necessária, a janela principal ou o painel do navegador aberto gera tokens; estoque, estado de geração e erros são exibidos separadamente", "需重登": "Reentrar", "顺序": "Ordem", "顺序未保存:{message}": "Ordem não salva: {message}", "领取 {time}": "Recebido {time}", "额度": "Cota", "额度充足": "Cota disponível", "额度来源": "Fonte da cota", "额度查询暂不可用。": "Consultas de cota estão temporariamente indisponíveis.", "额度查询未完成,未显示上游原始诊断。": "A consulta de cota não foi concluída. Diagnósticos brutos do upstream não são exibidos.", "额度窗口读数来自开放平台监控通道(套餐 JWT 那条通道没有额度桶):读的是每 N 小时 / 每周窗口的剩余比例": "A leitura da janela de cota vem do canal de monitoramento da plataforma aberta (o canal do JWT do Coding Plan não tem balde de cota): ela lê a porcentagem restante de cada janela de N horas / semanal", "额度详情": "Detalhes da cota", "首次失败后额外重试的次数;默认 3 次,0 = 不重试。手动和自动查询均生效,全部失败后才显示失败并记录日志。": "Tentativas adicionais após a primeira falha; o padrão é 3 e 0 desativa as novas tentativas. Vale para consultas manuais e automáticas. A falha só é exibida e registrada no log se todas as tentativas falharem.", "验证失败:{error}": "Falha na verificação: {error}", "验证码令牌池接口不可用": "Interface do pool de tokens de CAPTCHA indisponível", "验证码令牌:{counts}": "Tokens de captcha: {counts}", "高级请求": "Requisições premium", "魔粒": "Magicubes", "默认仅开启最快到期优先;可用余额和账号添加时间默认关闭。": "Por padrão, só a prioridade por vencimento mais próximo está ativada. Saldo disponível e data de adição da conta ficam desativados.", "默认保持手动顺序,可按需开启支持的自动排序规则。": "A ordem manual é o padrão. Ative as regras automáticas compatíveis conforme necessário.", "默认展开 / 收起": "Expandido / recolhido por padrão", "({n} 个未配置查询凭证)": " ({n} sem credencial de consulta)", "(不可用)": " (indisponível)", "(其他订阅,可能未生效)": " (outras assinaturas, podem não estar ativas)", "(只测了前 {limit} 个,还有 {rest} 个未测)": " (somente as primeiras {limit} foram testadas; {rest} ainda não)", "(名下 {count} 个账号共用)": " (compartilhado por {count} contas). ", "(已在 Clash 中禁用)": " (desativado no Clash)", "(库存为空,等待补铸;请保持主窗口或浏览器面板打开)": " (estoque vazio, aguardando reposição; mantenha a janela principal ou o painel do navegador aberto)", "(未启用套餐池账号,暂不补铸)": " (nenhuma conta Start Plan ativa; geração pausada)", "(激活事件补报失败,可能影响领取资格:{message})": "(Falha ao reportar o evento de ativação; isso pode afetar a elegibilidade: {message})", "+ 添加条件": "+ Adicionar condição", "+ 添加限制": "+ Adicionar limite", ",{countdown}重置": ", {countdown} até a redefinição", ",只对 OpenCode Zen 这类上游有意义,别的家请关掉。": ", o que só faz sentido para upstreams como o OpenCode Zen; desligue esta opção para os outros.", ",已达到上限": ", limite atingido", ":到「网络代理」页的「订阅管理」里点「同步 Clash Verge」把出口导进池后即可选 —— 那样能集中测试、也能被多个账号共用。": ": acesse a página 「Proxy de rede」, abra 「Gerenciar assinaturas」 e clique em 「Sincronizar Clash Verge」 para importar as saídas para o pool; assim elas poderão ser selecionadas — desse jeito é possível testar de forma centralizada e compartilhar entre várias contas.", ";": "; ", "{count} 个分区有未保存的更改": "Alterações não salvas em {count} seções", "{count} 个账号共用": "Compartilhado por {count} contas", "{count} 个账号共用提供商的连接配置。": "{count} contas compartilham as configurações de conexão deste provedor.", "{count} 个账号共用连接配置": "Configurações de conexão compartilhadas por {count} contas", "✅ 已改回跟随提供商的 Base URL": "✅ Esta conta voltou a seguir a Base URL do provedor", "「{name}」名下 {count} 个账号共用这些连接设置。修改协议或 Base URL 可能中断正在进行的请求。": "Estas configurações de conexão são compartilhadas por {count} contas de {name}. Alterar o protocolo ou a Base URL pode interromper solicitações em andamento.", "「{name}」名下 {count} 个账号共用;修改协议或地址可能中断正在进行的请求。": "Compartilhado por {count} contas de {name}. Alterar o protocolo ou o endereço pode interromper solicitações em andamento.", "仅当前账号": "Somente esta conta", "仅用于 OpenCode Zen 这类上游,普通提供商请保持关闭。": "Apenas para serviços upstream como OpenCode Zen. Mantenha desativado para outros provedores.", "代理只作用于当前账号,不改变其他账号的出网方式。": "O proxy se aplica somente a esta conta e não altera a conexão das outras contas.", "余额读数也是限制器余额规则的数据来源。": "As leituras de saldo também fornecem os dados usados pelas regras de limite baseadas em saldo.", "使用密钥访问上游": "Usar uma chave para acessar o upstream", "保存后将移除密钥,转发与拉取模型都不发送鉴权头。请确认上游确实无需凭证。": "Salvar remove a chave e omite os cabeçalhos de autenticação ao encaminhar solicitações ou buscar modelos. Confirme que o upstream não exige credenciais.", "保存提供商共用配置?": "Salvar as configurações compartilhadas do provedor?", "保存更改": "Salvar alterações", "共用": "Compartilhado", "关闭后不参与转发,余额查询不受影响。": "Quando desativada, a conta não participa do encaminhamento. As consultas de saldo não são afetadas.", "凭证设置": "Credenciais", "出网方式": "Método de conexão", "前往模型管理": "Ir para o gerenciamento de modelos", "前往模型管理会关闭账号设置,尚未保存的修改不会生效。": "Ir para o gerenciamento de modelos fecha as configurações da conta e descarta as alterações não salvas.", "包含提供商共用配置,将影响 {count} 个账号": "Inclui configurações compartilhadas que afetam {count} contas", "原密钥不会回显;更换密钥不会改变账号 ID。": "A chave existente nunca é exibida. Substituí-la não altera o ID da conta.", "各分区的更改将统一保存": "As alterações de todas as seções são salvas juntas", "启用账号": "Ativar conta", "在账号列表中拖动分组或行首把手,调整转发顺序。": "Arraste um grupo ou a alça da linha na lista de contas para alterar a ordem de encaminhamento.", "基本信息": "Informações básicas", "填写接口基址,无需追加 {path}。": "Informe a URL base da API sem acrescentar {path}.", "将同时删除名下 {count} 个账号,无法恢复。": "Também exclui todas as {count} contas deste provedor. Não é possível desfazer.", "开启后会改写请求体,补齐会话头与占位工具;未填密钥时使用匿名凭证 public。": "Quando ativado, reescreve o corpo da solicitação para adicionar cabeçalhos de sessão e ferramentas de preenchimento. Sem uma chave, usa a credencial anônima public.", "当前没有凭证,转发时会跳过此账号。请填写密钥或选择「无需鉴权」。": "Esta conta não tem credenciais e será ignorada no encaminhamento. Informe uma chave ou selecione Sem autenticação.", "当前账号": "Conta atual", "所有分区中尚未保存的修改都会被放弃。已确认的独立清除操作不受影响。": "As alterações não salvas de todas as seções serão descartadas. Operações de limpeza independentes já confirmadas não serão afetadas.", "提供商名称": "Nome do provedor", "改回跟随": "Seguir provedor", "改回跟随提供商": "Seguir provedor", "改回跟随提供商?": "Voltar a seguir o provedor?", "新密钥待保存": "Nova chave aguardando salvamento", "无需鉴权": "Sem autenticação", "显示新输入的密钥": "Mostrar a chave recém-inserida", "本地服务或无需凭证的上游": "Serviços locais ou upstream sem credenciais", "查询凭证": "Credenciais de consulta", "模型清单与映射在「模型管理」中维护。": "Gerencie as listas e os mapeamentos de modelos no Gerenciamento de modelos.", "模拟 OpenCode 官方客户端": "Emular o cliente oficial do OpenCode", "正在保存…": "Salvando…", "正在编辑提供商共用配置": "Editando configurações compartilhadas do provedor", "没有未保存的更改": "Nenhuma alteração não salva", "没有规则或全部停用时不限制;跳过后自动恢复,禁用后需手动启用。": "Não há limites se não houver regras ou se todas estiverem desativadas. Contas ignoradas se recuperam automaticamente; contas desativadas precisam ser reativadas manualmente.", "清除余额查询凭证?": "Limpar as credenciais de consulta de saldo?", "清除已存 API Key?": "Limpar a API Key salva?", "清除已存密钥": "Limpar chave salva", "清除查询凭证?": "Limpar as credenciais de consulta?", "用于当前账号的对话、余额查询、模型拉取、模型测试、签到及凭证刷新等上游请求。留空使用提供商默认值;可选预置或直接填写。": "Aplica-se às solicitações upstream desta conta, incluindo conversas, consultas de saldo, busca e teste de modelos, check-ins e renovação de credenciais. Deixe em branco para usar os padrões do provedor; escolha uma predefinição ou digite um valor.", "用明确的规则保护当前账号的额度。": "Proteja a cota desta conta com regras explícitas.", "留空不修改,替换后点击「保存更改」生效。": "Deixe em branco para manter a chave. Uma substituição entra em vigor após clicar em Salvar alterações.", "留空保留当前密钥,输入新密钥以替换": "Deixe em branco para manter a chave ou informe uma substituta", "确认保存": "Confirmar salvamento", "确认后立即生效,不受底部保存按钮控制。没有凭证且未开启「无需鉴权」时,此账号将被转发跳过。": "Entra em vigor imediatamente após a confirmação, independentemente do botão Salvar. Sem credenciais e sem Sem autenticação, esta conta será ignorada no encaminhamento.", "确认后立即生效,不受底部保存按钮控制。通常可继续复用转发用的登录凭证。": "Entra em vigor imediatamente após a confirmação, independentemente do botão Salvar. Normalmente, as credenciais de login usadas para encaminhamento podem continuar sendo reutilizadas.", "确认后立即生效,余额查询可能显示「未配置」。取消账号设置不会恢复已清除的凭证。": "Entra em vigor imediatamente após a confirmação. As consultas de saldo podem mostrar Não configurado. Cancelar as configurações da conta não restaura credenciais apagadas.", "确认弹窗不可用,请重新打开页面": "A caixa de confirmação está indisponível. Reabra a página.", "管理当前账号的凭证与可用套餐。": "Gerencie as credenciais e os planos disponíveis desta conta.", "统一管理提供商的协议、地址与兼容选项。": "Gerencie o protocolo, o endereço e as opções de compatibilidade do provedor em um só lugar.", "自定义 API": "API personalizada", "要修改连接地址或协议?": "Precisa alterar o endereço ou o protocolo de conexão?", "设置当前账号访问上游的出网方式。": "Escolha como esta conta se conecta ao serviço upstream.", "设置账号名称、启用状态与转发行为。": "Defina o nome, o estado de ativação e o comportamento de encaminhamento da conta.", "请填写有效的 HTTP 或 HTTPS 地址": "Informe uma URL HTTP ou HTTPS válida", "请求标识": "Identidade da requisição", "请求端点": "Endpoint da solicitação", "账号凭证": "Credenciais da conta", "转发行为": "Comportamento de encaminhamento", "达到上限后,将请求交给其他账号。": "Ao atingir o limite, as solicitações são passadas para outras contas.", "这个账号单独存了一份地址:{url},转发时优先用它。上面改的是提供商共用地址,不会覆盖它。": "Esta conta guarda um endereço próprio ({url}), que tem prioridade no encaminhamento. Alterar o endereço compartilhado do provedor acima não substitui esse valor.", "这个账号将改用提供商当前保存的 Base URL:{url}。确认后立即生效,不受底部保存按钮控制。": "Esta conta passará a usar a Base URL atualmente salva no provedor: {url}. Vale imediatamente e não depende do botão Salvar abaixo.", "连接参数": "Parâmetros de conexão", "连接设置": "Configurações de conexão", "配置余额查询凭证、自动刷新间隔与失败重试。": "Configure as credenciais de consulta de saldo, o intervalo de atualização automática e as novas tentativas após falhas.", "鉴权方式": "Método de autenticação", "隐藏新输入的密钥": "Ocultar a chave recém-inserida", "高级兼容": "Compatibilidade avançada", "默认关闭": "Desativado por padrão", " · 模型 {head}{rest}": " · Modelos: {head}{rest}", " 等 {n} 个": " ({n} no total)", "1// 开头的 Google refresh token(也可直接粘贴 refresh_token=… 整行)": "Google refresh token começando com 1// (também pode colar a linha refresh_token=… inteira)", "11 位大陆手机号": "Celular da China continental (11 dígitos)", "1~64 个字符,账号列表里按它分组显示": "1 a 64 caracteres; na lista de contas, as contas são agrupadas por ele", "6 位数字": "6 dígitos", "
  • 没有可自动领的活动
  • ": "
  • Nenhuma campanha pode ser resgatada automaticamente
  • ", "

    领到的是套餐赠送积分,不会增加福利模型的 token 池;": "

    O que você recebe são pontos de brinde do plano, que não aumentam o pool de tokens dos modelos de benefício; ", "ACP 代理配置无效,请重新选择代理。": "A configuração de proxy do ACP é inválida. Selecione o proxy novamente.", "ACP 会话失败时不自动重发,也不切换到其他接入方式。": "Uma sessão ACP com falha não é reenviada automaticamente nem alternada para outro método de conexão.", "ACP 使用网关电脑上的官方 agy CLI,不是当前手机或浏览器所在设备。请先安装 agy 1.5.0 或更新版本:https://antigravity.google/docs/cli。程序不在默认位置时,可在网关启动环境设置 AGY_PATH。": "O ACP usa a CLI oficial agy no computador do gateway, não no celular ou dispositivo deste navegador. Instale primeiro o agy 1.5.0 ou posterior: https://antigravity.google/docs/cli. Se estiver em outro local, defina AGY_PATH no ambiente de inicialização do gateway.", "ACP 尚未返回可用的会话模型目录,请检查官方 CLI 登录状态后重试。": "O ACP ainda não retornou um catálogo de modelos de sessão utilizável. Verifique o login na CLI oficial e tente novamente.", "ACP 的本机进程仍使用原来的代理。请先在插件页停用再启用 ACP 插件,再使用新的代理。": "Os processos locais do ACP ainda usam o proxy anterior. Desative e reative o plugin ACP na página de plugins antes de usar outro proxy.", "API Key + 控制台令牌(模型调用 + 墨点额度)": "API Key + token do console (modelos + saldo de créditos de tinta)", "API 凭证添加暂不能解析代理池引用;请使用自定义代理地址,添加后再在账号设置中调整。": "A adição de credenciais de API ainda não resolve referências ao pool de proxies. Use um endereço de proxy personalizado e ajuste nas configurações da conta após adicioná-la.", "API 模板": "Modelos de API", "AWS Builder ID(直接授权,减少一次回填)": "AWS Builder ID (autorização direta, um callback a menos)", "AWS 地区(账号目录所在地区)": "Região AWS (onde o diretório da conta está hospedado)", "AiHubMix 的 OpenAI 兼容端点,使用 AiHubMix 的 API Key;模型 ID 以平台清单为准": "Endpoint do AiHubMix compatível com OpenAI; use uma API Key do AiHubMix e os IDs de modelo da lista da plataforma", "Anthropic 兼容端点在 https://api.deepseek.com/anthropic(协议换 anthropic 时填它)": "O endpoint compatível com Anthropic é https://api.deepseek.com/anthropic (preencha-o ao trocar o protocolo para anthropic)", "Anthropic 协议填根地址,不要带 /v1": "No protocolo Anthropic, preencha o endereço raiz, sem /v1", "Antigravity": "Antigravity", "Antigravity 账号的添加方式": "Método de adição da conta Antigravity", "AtomCode": "AtomCode", "AutoClaw 国内版": "AutoClaw edição da China", "AutoClaw 国际版": "AutoClaw edição internacional", "BDUSS 必填;请粘贴**完整 Cookie**(Cookie 编辑器一键导出即可)—— 其中 **PTOKEN 必须保留**,网关要用它向百度换发 KukuAI 业务会话令牌,缺了它模型刷新会报「未登录」。支持整段 Cookie 头、Cookie 编辑器导出的 JSON 数组,或 {BDUSS, STOKEN} 对象。KukuAI 没有刷新机制,登录态过期后重新粘贴即可。": "BDUSS é obrigatório; cole o **Cookie completo** (um editor de Cookie exporta com um clique) — o **PTOKEN deve ser mantido**, pois o gateway o usa para trocar com o Baidu por um token de sessão de negócio do KukuAI; sem ele, a atualização de modelos reporta \"não conectado\". São aceitos o cabeçalho Cookie inteiro, um array JSON exportado por um editor de Cookie, ou um objeto {BDUSS, STOKEN}. O KukuAI não tem mecanismo de atualização; quando a sessão de login expirar, basta colar de novo.", "BDUSS=…; STOKEN=…(或 Cookie 编辑器导出的 JSON)": "BDUSS=…; STOKEN=… (ou o JSON exportado por um editor de Cookie)", "CatPaw 的 X-Passport-Token(登录态 Cookie)": "X-Passport-Token do CatPaw (Cookie da sessão de login)", "ChatGPT / Codex": "ChatGPT / Codex", "ChatGPT API": "ChatGPT API", "ChatGPT API 订阅": "Assinatura ChatGPT API", "Claude Code 本机订阅": "Assinatura local do Claude Code", "Claude 订阅": "Assinatura Claude", "Cline Pass 的 API Key 在 app.cline.bot 获取(订阅制);端点为 OpenAI 兼容,模型清单以 Cline 控制台为准,模型名在模型管理里按裸名添加(如 glm-5.2 / kimi-k2.7-code / deepseek-v4-pro);上游按客户端形态校验,所需的客户端请求头已随卡预置": "Obtenha a API Key do Cline Pass em app.cline.bot (por assinatura); o endpoint é compatível com OpenAI, o catálogo de modelos segue o console da Cline e os nomes dos modelos são adicionados no gerenciamento de modelos como nomes simples, sem prefixo (ex.: glm-5.2 / kimi-k2.7-code / deepseek-v4-pro); o upstream valida o formato do cliente, e os cabeçalhos de requisição do cliente necessários já vêm predefinidos neste cartão", "Cloud project 必填;不会借用其他 Google 提供商的凭证或额度。": "Cloud project é obrigatório. Não usa credenciais nem cotas de outros provedores Google.", "Cloud-IDE-JWT(三段点分)": "Cloud-IDE-JWT (três segmentos separados por ponto)", "Cloudflare Account ID(32 位十六进制)": "ID da conta Cloudflare (32 caracteres hexadecimais)", "Codex 订阅": "Assinatura Codex", "Command Code": "Command Code", "Cursor dashboard API key;loader 按需重新 exchange 模型 token,不提供手动令牌刷新。": "API key do dashboard Cursor. O loader troca tokens de modelo sob demanda; não há atualização manual de token.", "DeepSeek 网页": "DeepSeek Web", "Gemini CLI / Code Assist": "Gemini CLI / Code Assist", "Gemini CLI 凭证文件绝对路径(只读,不复制或写回 refresh token)": "Caminho absoluto do arquivo de credenciais Gemini CLI (somente leitura; sem copiar ou gravar refresh tokens)", "GitHub Copilot": "GitHub Copilot", "GitHub 官方设备码登录": "Login oficial GitHub por código de dispositivo", "GitHub 登录域名(留空使用 github.com)": "Domínio de login GitHub (vazio usa github.com)", "Google Cloud Project ID(必填,Standard / Enterprise 资格由上游判定)": "Google Cloud Project ID (obrigatório; elegibilidade Standard / Enterprise definida pelo upstream)", "Google Cloud Project ID(必填,Standard / Enterprise 资格由上游判定);默认候选来自 {variable},请明确确认": "Google Cloud Project ID (obrigatório; elegibilidade Standard / Enterprise definida pelo upstream). O valor sugerido vem de {variable}; confirme-o explicitamente.", "Google OAuth(Code Assist + Cloud project)": "Google OAuth (Code Assist + Cloud project)", "Google 授权(ACP)": "Login com Google (ACP)", "Groq 的 OpenAI 兼容端点,使用 GroqCloud 的 API Key": "Endpoint da Groq compatível com OpenAI; use uma API Key do GroqCloud", "IAM Identity Center(企业账号,直接授权)": "IAM Identity Center (conta da organização, autorização direta)", "JWT(三段点分;也可直接粘贴 Bearer 整行或 data.bin 内容)": "JWT (três partes separadas por pontos; também pode colar a linha Bearer inteira ou o conteúdo do data.bin)", "JWT(三段点分;也可直接粘贴 chatglm_token=… 整行)": "JWT (três partes separadas por ponto; colar a linha chatglm_token=… inteira também funciona)", "Kimi / Moonshot 国内版": "Kimi / Moonshot (China)", "Kimi / Moonshot 国内站 API Key,使用 moonshot.cn 按量接口;不是 Kimi Code 会员入口": "Use uma API Key do Kimi / Moonshot China no endpoint por uso em moonshot.cn; este não é o endpoint da assinatura Kimi Code", "Kimi / Moonshot 国际版": "Kimi / Moonshot (Internacional)", "Kimi / Moonshot 国际站 API Key,使用 moonshot.ai 按量接口;不是 Kimi Code 会员入口": "Use uma API Key do Kimi / Moonshot Internacional no endpoint por uso em moonshot.ai; este não é o endpoint da assinatura Kimi Code", "Kiro API key(ksk_…)。": "API key Kiro (ksk_…).", "Kiro 登录页(Google / GitHub 等)": "Página de login do Kiro (Google / GitHub e outros)", "Kiro 网页登录": "Login web do Kiro", "LM Studio(本地)": "LM Studio (Local)", "LobsterAI": "LobsterAI", "LongCat 的 OpenAI 兼容端点,使用 LongCat 平台的 API Key": "Endpoint do LongCat compatível com OpenAI; use uma API Key da plataforma LongCat", "MClaw 由插件在网关电脑上启动专用 Chrome 窗口,独立登录环境也用于自动续期,不使用系统默认浏览器或应用内嵌窗口。": "O plugin do MClaw abre uma janela dedicada do Chrome no computador do gateway. O perfil isolado de login também é usado na renovação automática; não usa o navegador padrão do sistema nem a janela integrada do aplicativo.", "MiniMax Code 国内版": "MiniMax Code (China)", "MiniMax Code 国际版": "MiniMax Code (Global)", "Mistral 的 OpenAI 兼容端点,使用 Mistral 控制台的 API Key": "Endpoint da Mistral compatível com OpenAI; use uma API Key do console da Mistral", "ModelScope 国内版": "ModelScope (China)", "ModelScope 国际版": "ModelScope (Internacional)", "MonkeyCode": "MonkeyCode", "MonkeyCode 国际版": "MonkeyCode edição internacional", "MonkeyCode 自动网页登录仅限桌面端;浏览器面板请登录对应官网后粘贴 session。": "O login web automático do MonkeyCode exige o aplicativo desktop. No painel do navegador, entre no site oficial correspondente e cole a session.", "NVIDIA NIM 托管端点,Key 在 integrate.api.nvidia.com 申请": "Endpoint gerenciado do NVIDIA NIM; solicite a Key em integrate.api.nvidia.com", "Nous Portal 的按量 API,使用 Portal 的 API Key;不是旧的订阅登录方式": "API por uso do Nous Portal; use uma API Key do Portal, não o antigo método de login por assinatura", "OfficeAce 果办": "OfficeAce", "QuWork 凭证": "Credenciais QuWork", "QuWork 原设备标识": "Identidade original do dispositivo QuWork", "QwenWork 千问办公": "QwenWork (Público)", "QwenWork 千问办公企业版": "QwenWork (Empresarial)", "StepFun 国内版(按量)": "StepFun (China, por uso)", "StepFun 国内站按量 API;请使用按量 API Key,不要填 Step Plan 套餐 Key": "API por uso do StepFun China; use uma API Key por uso, não uma Key de assinatura Step Plan", "StepFun 国际版(按量)": "StepFun (Internacional, por uso)", "StepFun 国际站按量 API;请使用按量 API Key,不要填 Step Plan 套餐 Key": "API por uso do StepFun Internacional; use uma API Key por uso, não uma Key de assinatura Step Plan", "Tabbit 国内版": "Tabbit (China)", "Tabbit 国际版": "Tabbit (Internacional)", "TokenPlan API Key(控制台 → 科研模型 → API Key)": "API Key do TokenPlan (console → Modelos de pesquisa → API Key)", "User-Agent(可选)": "User-Agent (opcional)", "accessToken 是 Accio 的登录凭证(一长串不透明 token,不是 JWT);refreshToken 可选,填了之后到期能自动续期。请填写 {label}账号的凭证 —— {siteNote}(最容易拿到的办法:直接用上方的「网页登录」,不需要手工找 token。)": "accessToken é a credencial de login do Accio (um token opaco bem longo, não é JWT); refreshToken é opcional e, se preenchido, permite renovação automática ao expirar. Preencha a credencial da conta {label} — {siteNote} (a forma mais fácil de obter: use o \"Login web\" acima; não é preciso procurar o token manualmente.)", "accessToken 是 Trae 的 Cloud-IDE-JWT(三段点分),refreshToken 用于到期自动续期(本家 refreshToken 一次一换:换发一次旧的即作废,所以两份程序别同时刷同一个账号)。
    手工粘贴时请连 machineId / deviceId 一起填:上游把它们与登录时上传的设备公钥绑在一起判设备,凭空换一对会撞 2xxxx 那族设备绑定拒绝。
    没有这三样时的正路是用上方的「网页登录」;容器 / 远程部署形态按提示粘贴地址栏回调地址即可。": "accessToken é o Cloud-IDE-JWT do Trae (três segmentos separados por ponto) e o refreshToken serve para renovação automática ao expirar (este provedor troca o refreshToken a cada uso: assim que é trocado, o antigo é invalidado, então não atualize a mesma conta em dois programas ao mesmo tempo).
    Ao colar manualmente, preencha também machineId / deviceId: o upstream os vincula à chave pública do dispositivo enviada no login para identificar o dispositivo, e inventar um novo par dispara a família de rejeições de vínculo de dispositivo 2xxxx.
    Sem esses três itens, o caminho correto é o \"Login web\" acima; em contêiner / implantação remota, basta colar o endereço de callback da barra de endereços conforme as instruções.", "chat.deepseek.com 的 userToken.value,不是收费 API Key": "userToken.value de chat.deepseek.com, não uma chave de API paga", "github-copilot/apps.json 或 opencode/auth.json": "github-copilot/apps.json ou opencode/auth.json", "github.com 或 company.ghe.com": "github.com ou company.ghe.com", "github.com:Iv1.b507a08c87ecfe98 或 github-copilot": "github.com:Iv1.b507a08c87ecfe98 ou github-copilot", "monkeycode_ai_session 的值(也可直接粘贴整段 Cookie)": "O valor de monkeycode_ai_session (também pode colar o Cookie inteiro)", "ms- 开头的 API 令牌": "Token de API começando com ms-", "project 必填;只读引用文件,模块的 OAuth 续期不写回客户端。": "Project é obrigatório. Arquivos são referenciados somente em leitura; a renovação OAuth do módulo não grava no cliente.", "refreshToken 可选,填了到期可自动续期;两者都能从小浣熊客户端登录态文件里取到。": "refreshToken é opcional e, se preenchido, permite renovação automática ao expirar; ambos podem ser obtidos do arquivo de sessão de login do cliente Raccoon.", "refreshToken 可选,填了可自动续期;两者都能从客户端登录态文件取到。同一个 Cline 账号两个池都能用,这里归入 {label}。": "refreshToken é opcional e, se preenchido, permite renovação automática; ambos podem ser obtidos do arquivo de sessão de login do cliente. A mesma conta Cline funciona nos dois pools; aqui ela entra em {label}.", "token 支持 enc: 前缀(Windows 上自动解密)。未填 refreshToken 无法自动续期。": "O token aceita o prefixo enc: (descriptografado automaticamente no Windows). Sem preencher o refreshToken, não é possível renovar automaticamente.", "token 是登录态 Cookie;CatPaw 没有刷新机制,过期后需在客户端重新登录。": "O token é o Cookie da sessão de login; o CatPaw não tem mecanismo de atualização, então faça login novamente no cliente após expirar.", "token=…; user_id=…(也可粘贴 Copy as cURL 整段)": "token=…; user_id=… (você também pode colar o Copy as cURL inteiro)", "user_ 开头的 API Key(也可直接粘贴 Authorization: Bearer … 整行)": "API Key começando com user_ (também pode colar a linha Authorization: Bearer … inteira)", "xAI 的 OpenAI 兼容端点,使用 xAI 控制台的 API Key;不是 Grok 网页订阅": "Endpoint da xAI compatível com OpenAI; use uma API Key do console da xAI, não uma assinatura web do Grok", "your-company.vpc.qwenwork.cn 或 https://your-company.vpc.qwenwork.cn": "your-company.vpc.qwenwork.cn ou https://your-company.vpc.qwenwork.cn", "{label} 网页登录的打开方式": "Como abrir o login web de {label}", "{label} 账号地区": "Região da conta {label}", "{label} 账号的添加方式": "Como adicionar uma conta {label}", "{label}账号已添加": "Conta {label} adicionada", "{label}(只读本机)": "{label} (referência local somente leitura)", "{message}:请在打开的页面完成滑块,完成后回到这里点「已完成验证,继续发送」": "{message}: conclua o slider na página que foi aberta e, em seguida, volte aqui e clique em \"Verificação concluída, enviar novamente\"", "{message}:请手动打开验证页面 {url},完成后回到这里点「已完成验证,继续发送」": "{message}: abra manualmente a página de verificação {url} e, após concluir, volte aqui e clique em \"Verificação concluída, enviar novamente\"", "{name} 不是合法 JSON:{reason}": "{name} não é um JSON válido: {reason}", "{name}要粘一个 JSON 对象(形如 {sample})": "{name}: cole um objeto JSON (no formato {sample})", "{n} 个账号": "{n} contas", "{n} 个账号,点击添加": "{n} contas, clique para adicionar", "{seconds}s 后重发": "Reenviar em {seconds}s", "✅ {label}账号已添加": "✅ Conta {label} adicionada", "✅ {label}账号已添加{name}": "✅ Conta {label} adicionada{name}", "✅ 已从 cc-switch 导入 {n} 个供应商": "✅ {n} provedores importados do cc-switch", "✅ 已创建自定义提供商「{name}」并添加账号": "✅ Provedor personalizado \"{name}\" criado e conta adicionada", "✅ 已删除自定义提供商「{name}」{accounts}{keys}": "✅ Provedor personalizado \"{name}\" excluído{accounts}{keys}", "✅ 已更新已有账号{name}(同一把 API Key 只保留一条,重复添加会合并)": "✅ Conta existente{name} atualizada (apenas uma conta por chave de API; adições repetidas são mescladas)", "✅ 已更新已有账号{name}(同一提供商内,同一把 API Key 只保留一条)": "✅ Conta existente atualizada{name} (uma conta por API Key dentro de cada provedor)", "✅ 登录成功,{edition}账号已加入列表": "✅ Login concluído; conta {edition} adicionada à lista", "✅ 领取成功:{planId}{period}": "✅ Resgate concluído: {planId}{period}", " 同一家可以放多把 key,按优先级轮换。": " Um mesmo provedor pode ter várias keys, rotacionadas por prioridade.", "「{name}」的账号添加功能还在开发中,敬请期待。": "A adição de contas para \"{name}\" ainda está em desenvolvimento; aguarde novidades.", "一个 Key 用遍多家模型,模型名用「厂商/模型」全称(如 deepseek/deepseek-chat)": "Uma única Key serve para vários fornecedores; use o nome completo \"fornecedor/modelo\" (ex.: deepseek/deepseek-chat)", "上游不要鉴权时留空,并勾选下面一项(留空又不勾会被当成未配置凭证)": "Deixe em branco quando o upstream não exigir autenticação e marque a opção abaixo (em branco e sem marcar é tratado como credencial não configurada)", "上游信息": "Informações do upstream", "上游没有给出验证页面地址": "O provedor não retornou o endereço da página de verificação", "上游要求人机验证,但没有给出验证页面地址,请稍后重试": "O provedor exige verificação humana, mas não retornou o endereço da página de verificação. Tente novamente mais tarde", "不使用预置": "Sem predefinição", "不可领({status})": "Não resgatável ({status})", "不授权": "Não autorizar", "不支持导入": "Importação não suportada", "不是有效的凭证文件:内容要是一个 JSON 对象": "Não é um arquivo de credenciais válido: o conteúdo deve ser um objeto JSON", "不是有效的凭证文件:需要包含 accessToken 与 uid": "Não é um arquivo de credenciais válido: accessToken e uid são obrigatórios", "不是自定义提供商": "Não é um provedor personalizado", "不需要 Key:转发与拉取模型都不发送鉴权头": "Não precisa de Key: nem o encaminhamento nem a busca de modelos enviam cabeçalhos de autenticação", "不需要登录:点下面的按钮,网关会直接在智谱清言换发一份访客凭证并加入账号列表(也可以先填个备注名)。访客凭证可以直接用来对话,免费额度由上游按设备发放。

    注意:访客账号没有积分体系 —— 它与「会员积分」「每日登录积分」「活动领取」相关的接口一律需要登录,因此那些能力对访客会如实跳过(账号页的积分、签到中心都不显示读数)。想要积分就用「填写凭证」粘一个已登录账号的令牌,或「导入桌面端登录态」。": "Não é preciso fazer login: clique no botão abaixo e o gateway vai obter uma credencial de visitante diretamente do Zhipu Qingyan e adicioná-la à lista de contas (você pode preencher um nome de observação antes). A credencial de visitante pode ser usada para conversar imediatamente; a cota gratuita é emitida pela origem por dispositivo.

    Atenção: uma conta de visitante não tem sistema de pontos — as interfaces de pontos de membro, pontos de login diário e resgate de atividades exigem login, então esses recursos são ignorados para visitantes (nenhuma leitura aparece na página de contas nem na central de check-in). Para obter pontos, use \"Preencher credenciais\" para colar o token de uma conta conectada, ou \"Importar estado de login do desktop\".", "两版账号可同时保存,各自一份模型清单(国内版与国际版是两家提供商,可分别启用与映射)。": "As contas das duas edições podem ser salvas ao mesmo tempo, cada uma com sua própria lista de modelos (as edições da China e internacional são dois provedores, que podem ser ativados e mapeados separadamente).", "中国版": "Edição da China", "也支持本软件导出的单账号 JSON 文件,保留账号凭证与附加信息。": "Arquivos JSON de contas individuais exportados por este aplicativo também são aceitos, preservando as credenciais e os dados adicionais da conta.", "仅 API Key(模型调用,不含墨点额度)": "Somente API Key (modelos, sem saldo de créditos de tinta)", "仅填写自己的 GitHub 令牌": "Informe apenas seu próprio token GitHub", "仅支持仍有有效 Gemini Code Assist Standard / Enterprise 资格并绑定 Cloud project 的账号。个人免费版及 Google AI Pro / Ultra 已于 2026-06-18 停止支持;Standard / Enterprise 新订阅已于 2026-10-09 停售。不会切换到其他 Google 产品或额度池。": "Só são aceitas contas com elegibilidade existente e válida do Gemini Code Assist Standard / Enterprise e um Cloud project vinculado. O suporte à camada gratuita individual e Google AI Pro / Ultra terminou em 2026-06-18; novas assinaturas Standard / Enterprise deixaram de ser vendidas em 2026-10-09. Não será usado outro produto Google nem pool de cota.", "仅读取本机 Claude Code 的当前订阅登录。若未登录,请先在自己的终端登录;本地凭证仍由 CLI 管理。": "Lê apenas o login atual da assinatura local Claude Code. Se estiver desconectado, entre primeiro no seu próprio terminal. A CLI continua gerenciando as credenciais locais.", "今天没有需要领的活动(都已到账)": "Hoje não há campanhas para resgatar (todas já creditadas)", "今天(北京时间 {day})已试 {attempts} 次,还能试 {left} 次{next}
    ": "Hoje (horário de Pequim, {day}) você já tentou {attempts} vezes; restam {left} tentativas{next}
    ", "从 Google 官方源下载并核验 SHA-512;下载使用网关默认出口。更新失败保留旧版,进行中的对话不受替换影响。": "Baixa da fonte oficial do Google pela conexão padrão do gateway e verifica o SHA-512. Se a atualização falhar, mantém a versão anterior sem interromper conversas em andamento.", "从别的机器(或 OfficeAce 桌面端 models.json)取三项贴进来:模型网关基址(baseUrl,形如 https://modelgw-…/v2)与 modelAppKey / modelAppSecret。这三项就能转发(网关凭据不过期);控制面临时凭据(accessKeyId 等)可选,留空则额度/自动续期不可用,但不影响转发。": "Pegue três itens de outra máquina (ou do models.json do aplicativo de desktop do OfficeAce) e cole aqui: o endereço base do gateway de modelos (baseUrl, no formato https://modelgw-…/v2) e modelAppKey / modelAppSecret. Esses três já bastam para encaminhar requisições (a credencial do gateway não expira); as credenciais temporárias do plano de controle (accessKeyId etc.) são opcionais — se ficarem em branco, a consulta de saldo e a renovação automática ficam indisponíveis, mas o encaminhamento não é afetado.", "从本机导入桌面端登录态": "Importar sessão de login do desktop desta máquina", "任务镜像 id": "id da imagem da tarefa", "余额查询": "Consulta de saldo", "你企业的千问办公旗舰版域名(企业管理后台地址栏的域名,如 your-company.vpc.qwenwork.cn)": "Domínio da edição flagship QwenWork Enterprise da sua empresa (o domínio na barra de endereço do painel administrativo, por exemplo, your-company.vpc.qwenwork.cn)", "使用 Google 账号登录": "Entrar com conta Google", "使用 Zai 账号登录": "Entrar com conta Zai", "使用 {name} 模板新建提供商": "Criar um provedor com o modelo {name}", "使用个人访问令牌(PAT)": "Usar token de acesso pessoal (PAT)", "使用本机 Claude Code 登录": "Usar login local do Claude Code", "使用本机 Kimi Work 登录": "Usar login local do Kimi Work", "使用模板新建提供商": "Criar um provedor com este modelo", "使用网页令牌,不是收费 API Key。": "Use um token da sessão web, não uma chave de API paga.", "使用自己的 GitHub 账号授权;模型条款须在官方客户端手动确认。": "Autorize com sua própria conta GitHub. Os termos dos modelos devem ser aceitos manualmente no cliente oficial.", "先在网关所在机器启动 LM Studio 服务;localhost 指向网关所在机器,远程或容器部署请改为网关可访问的地址。默认无需鉴权;启用认证后请取消「该上游无需鉴权」并填写真实 API Key": "Primeiro, inicie o servidor LM Studio na máquina que executa o gateway. localhost se refere à máquina do gateway; em implantações remotas ou em contêiner, use um endereço acessível pelo gateway. Por padrão, a autenticação está desativada; se você a ativar, desmarque \"Este upstream não exige autenticação\" e informe uma API Key real", "免费模型不用填 Key(默认勾上「该上游无需鉴权」,网关自动用匿名凭证);付费模型则填 Zen 的 API Key。免费档上游只认官方客户端形态,已默认开启「伪装 OpenCode 官方客户端」": "Modelos gratuitos não precisam de Key (a opção \"Este upstream não exige autenticação\" já vem marcada e o gateway usa credenciais anônimas automaticamente); para modelos pagos, preencha a API Key do Zen. O nível gratuito do upstream só aceita o formato do cliente oficial, e a opção \"Simular o cliente oficial do OpenCode\" já vem ativada", "关联用户指定的本地 Copilot 凭证(只读)": "Vincular credencial local Copilot escolhida pelo usuário (somente leitura)", "内嵌窗口": "Janela embutida", "内嵌窗口打开;关窗即取消等待(Google 账号被拒时改用系统浏览器)": "Abre na janela embutida; fechar a janela cancela a espera (se a conta Google for recusada, use o navegador do sistema)", "内嵌窗口打开;完成后自动加入列表,关窗即取消等待": "Abre na janela embutida; ao concluir, entra automaticamente na lista; fechar a janela cancela a espera", "内嵌窗口打开;扫码完成后自动加入列表,关窗即取消等待": "Abre em uma janela incorporada; a conta é adicionada automaticamente após o escaneamento — fechar a janela cancela a espera", "内嵌窗口用全新环境,多账号互不影响;关窗即取消等待": "A janela embutida usa um ambiente totalmente novo, então várias contas não interferem entre si; fechar a janela cancela a espera", "内嵌窗口登录": "Entrar na janela integrada", "内嵌窗口(推荐)": "Janela embutida (recomendado)", "准备验证…": "Preparando a verificação…", "凭据 JSON": "JSON da credencial", "凭证 JSON 或模型凭证": "JSON de credenciais ou credencial de modelo", "凭证仅发送至当前网关": "Credenciais enviadas apenas a este gateway", "凭证文件在哪?": "Onde fica o arquivo de credenciais?", "凭证文件类型": "Tipo do arquivo de credenciais", "创建并添加账号": "Criar e adicionar conta", "创建这个提供商,并同时建立它的第一个账号。": "Crie este provedor e, ao mesmo tempo, sua primeira conta.", "删除功能不可用(脚本未就绪)": "Exclusão indisponível (script não está pronto)", "删除失败:{reason}": "Falha ao excluir: {reason}", "删除此提供商": "Excluir este provedor", "千问办公 国内版": "QwenWork (China)", "千问办公 国际版": "QwenWork (Internacional)", "千问办公{label}暂时无法登录:上游只接受它自己的官方回调地址,不论证码到本机。": "Não é possível entrar no QwenWork {label} agora: o serviço upstream aceita apenas o próprio endereço de callback oficial, então o código de autorização não chega a este computador.", "原样提交本次流程的完整回调 URL。": "Envie a URL completa de callback deste fluxo sem alterações.", "去安装提供商插件包": "Instalar um pacote de plugin de provedor", "及 {n} 个账号": " e {n} contas", "发送中…": "Enviando…", "发送失败:{message}": "Falha ao enviar: {message}", "发送未确认:登录窗口已弹出,请在弹出的窗口中手动完成登录": "Envio não confirmado: a janela de login foi aberta; conclua o login manualmente nessa janela", "取消失败:{message}": "Falha ao cancelar: {message}", "取消安装": "Cancelar instalação", "取消等待": "Cancelar espera", "只使用此路线签发的 OAuth 凭证;direct SIWC 与 Codex 客户端身份不同。": "Usa apenas credenciais OAuth emitidas para esta rota. Direct SIWC e Codex têm identidades de cliente diferentes.", "只关联真实 CLI 2.1.259+ 的当前订阅;不代登录、不复制或续期客户端凭证。": "Vincula apenas a assinatura atual de uma CLI genuína 2.1.259+. Não realiza login por você nem copia ou renova credenciais do cliente.", "只拿到 JWT 时填这里;Cookie 里有 token 可留空": "Preencha apenas se tiver só o JWT; deixe vazio se o Cookie tiver token", "只有「内嵌窗口」能恢复第三方入口:系统浏览器里我们无法改动登录页": "Somente a \"Janela embutida\" pode restaurar os acessos de terceiros: no navegador do sistema não podemos alterar a página de login", "只看这一类": "Apenas esta categoria", "只读引用 Grok Build home/scope/account;每次读取当前登录态,不复制 token,不回退退出前快照,不主动续期;源有效期未知时不作长期有效承诺。": "Referencia Grok Build home/scope/account somente em leitura. Cada leitura usa o login atual, sem copiar tokens, voltar ao snapshot anterior ao logout ou renovar. Validade desconhecida da origem não garante credenciais de longa duração.", "只读引用本机 Kiro CLI/IDE;每次读取校验同一邮箱,不复制 token、不主动续期或回写,失效后由原客户端重登或同步。": "Referencia Kiro CLI/IDE local somente em leitura. Cada leitura verifica o mesmo e-mail sem copiar tokens, renovar ou gravar de volta. Após expirar, entre novamente ou sincronize no cliente original.", "只读所选标准文件与账号条目并验证 GitHub/Copilot 身份;只保存引用,不保存令牌副本,不扫描目录、读取 keychain 或运行 CLI。": "Lê apenas o arquivo padrão e a entrada de conta selecionados e verifica a identidade GitHub/Copilot. Salva somente a referência, sem copiar tokens, pesquisar diretórios, ler keychains ou executar a CLI.", "只读校验明确选择的本机凭证文件;仅保存引用与稳定身份,不复制或续期原客户端令牌。": "Valida somente o arquivo local de credenciais explicitamente selecionado, em modo de leitura. Salva a referência e uma identidade estável, sem copiar ou renovar os tokens do cliente original.", "只读用户明确指定的文件和账号条目,不自动扫描。": "Lê somente o arquivo e a entrada de conta explicitamente selecionados; não pesquisa automaticamente.", "只读验证所选 Gemini CLI 登录态和指定 project 的 Code Assist Standard / Enterprise 资格;不会启动 CLI、续期或复制令牌。": "Verifica, somente em leitura, o login Gemini CLI selecionado e a elegibilidade Code Assist Standard / Enterprise do project informado. Não inicia a CLI, renova ou copia tokens.", "只读验证本机 Claude Code 当前订阅登录;凭证仍由原 CLI 管理。": "Verifica o login atual da assinatura local Claude Code somente em leitura. A CLI original continua gerenciando as credenciais.", "只读验证本机 Kimi 桌面版已有的 Work 登录,不复制令牌;账号可能没有可用模型。": "Verifica o login Work existente no Kimi desktop local, somente em leitura e sem copiar tokens. A conta pode não ter modelos disponíveis.", "可选": "Opcional", "可选(cloudaicompanionProject):留空由网关自动发现": "Opcional (cloudaicompanionProject); se vazio, o gateway descobre automaticamente", "可选,仅远程兑换码激活需要;从官方客户端读取": "Opcional; necessária apenas para ativação remota de códigos. Leia-a no cliente oficial.", "可选,展示用": "Opcional, para exibição", "可选,没有则无法自动续期": "Opcional; sem ele, não é possível renovar automaticamente", "可选,用于生成账号标识": "Opcional; usado para gerar o identificador da conta", "可选,留空使用凭据里的 user_name": "Opcional; se vazio, usa o user_name da credencial", "可选,留空使用账号名或邮箱": "Opcional; se ficar em branco, o nome da conta ou o e-mail é usado", "可选,留空使用账号姓名、邮箱或令牌指纹": "Opcional; se vazio, usa o nome, o e-mail ou a impressão digital do token", "可选,留空使用账号昵称或邮箱": "Opcional; se vazio, usa o apelido ou o e-mail da conta", "可选,留空则用 key 尾号": "Opcional; se vazio, usa o final da key", "可选,留空则用 userId": "Opcional; se vazio, usa o userId", "可选,留空则用上游账号昵称": "Opcional; se vazio, usa o apelido da conta no upstream", "可选,留空则用上游返回的账号名或账号 id": "Opcional; se vazio, usa o nome ou o id da conta retornados pelo upstream", "可选,留空则用凭证里的账号名": "Opcional; se vazio, usa o nome da conta na credencial", "可选,留空则用文件里的昵称": "Opcional; deixe vazio para usar o apelido do arquivo", "可选,留空则用登录名或 uid": "Opcional; se vazio, usa o nome de login ou o uid", "可选,留空则用脱敏手机号": "Opcional; se vazio, usa o celular mascarado", "可选,留空则用脱敏手机号或 userId": "Opcional; se vazio, usa o celular mascarado ou o userId", "可选,留空则用账号 uk": "Opcional; se vazio, usa o uk da conta", "可选,留空则用账号昵称": "Opcional; em branco usa o apelido da conta", "可选,留空则用账号昵称或 userId": "Opcional; deixe em branco para usar o apelido da conta ou o userId", "可选,留空则用邮箱或令牌尾号": "Opcional; se vazio, usa o e-mail ou o final do token", "可选,留空用「AtomCode」": "Opcional; padrão “AtomCode”", "可选,留空用「OfficeAce 果办」": "Opcional; se vazio, usa “OfficeAce”", "可选,留空自动生成": "Opcional; se vazio, gerado automaticamente", "可选,留空自动用昵称": "Opcional; se vazio, usa o apelido", "可选,给这个访客账号起个备注名": "Opcional; um nome de observação para esta conta de visitante", "可选,续期时带上": "Opcional; enviado na renovação", "可选,讯飞侧 userid": "Opcional; userid do lado iFlytek", "可选:发起对话必需,留空则由网关从该账号已有任务里自动发现,发现不到时之后手动补": "Opcional; necessário para iniciar uma conversa. Se vazio, o gateway descobre automaticamente nas tarefas existentes da conta; se não encontrar, preencha manualmente depois.", "可选:账号邮箱,用于展示与身份识别(换新令牌也能认回同一账号)": "Opcional; e-mail da conta, usado para exibição e identificação (a mesma conta é reconhecida mesmo ao trocar por um token novo)", "可选;UUID 形态,与凭据同生共死": "Opcional; formato UUID, vive e morre com a credencial", "可选;填了才能到期自动续期": "Opcional; preencha para renovar automaticamente ao expirar", "可选;用于去重与展示名(留空时网关会问一次上游)": "Opcional; usado para deduplicação e nome de exibição (se vazio, o gateway consulta o upstream uma vez)", "可选;用于生成账号 id 与展示名": "Opcional; usado para gerar o id e o nome de exibição da conta", "可选;纯数字串(上游只收 8–24 位数字)": "Opcional; apenas dígitos (o upstream aceita somente 8–24 dígitos)", "可领取": "Resgatável", "同一家可以混着放:有 Key 的账号与无鉴权账号各按各的规则走;无需鉴权的账号也能并存多条(各自可配不同的出网代理)": "Contas com chave e sem autenticação podem coexistir no mesmo provedor, cada uma roteada pelas próprias regras; várias contas sem autenticação também são permitidas (cada uma com seu próprio proxy de saída)", "同地址换 anthropic 协议即走它的 Claude 兼容端点。转发必须填 OpenCode Go 的 API Key(订阅制;获取模型清单不需要 Key,但发请求上游会回 401「Missing API key」)": "No mesmo endereço, troque o protocolo para anthropic e ele usará o endpoint compatível com Claude. Para encaminhar, é obrigatório preencher a API Key do OpenCode Go (por assinatura; obter a lista de modelos não exige Key, mas as requisições recebem 401 \"Missing API key\" do upstream)", "响应为空": "Resposta vazia", "商汤日日新的 OpenAI 兼容端点;余额查询走控制台账号密码(见下方「余额查询」一段)": "Endpoint compatível com OpenAI do SenseNova; a consulta de saldo usa a conta e a senha do console (veja \"Consulta de saldo\" abaixo)", "回调已提交,仍需等待网关确认账号登录完成。": "Callback enviado. Aguarde o gateway confirmar a conclusão do login da conta.", "回调未被接受,请重新复制本次登录的完整回调地址": "Callback não aceito. Copie novamente a URL de callback completa deste login.", "国内版": "Edição da China", "国内版与**国际版是两套独立的账号与套餐**,凭证与领取的套餐都不通用。": "A edição da China e **a edição internacional são dois conjuntos independentes de contas e planos**; as credenciais e os planos resgatados não são compartilhados.", "国内版登录页没有 Google / GitHub 入口(它用微信 / 手机号 / 邮箱登录)": "A página de login da edição da China não tem acessos Google / GitHub (o login é por WeChat / celular / e-mail)", "国内版的登录站点是 www.accio-ai.com,与国际版不是同一站。": "O site de login da edição da China é www.accio-ai.com, diferente do site da edição internacional.", "国内版(WorkBuddy)": "Edição da China (WorkBuddy)", "国内站为 https://api.siliconflow.cn/v1": "O site da China é https://api.siliconflow.cn/v1", "国内站(minimaxi.com);OpenAI 兼容地址为 https://api.minimaxi.com/v1": "Site da China (minimaxi.com); o endereço compatível com OpenAI é https://api.minimaxi.com/v1", "国际版": "Edição internacional", "国际版 z.ai 的 Coding 套餐;OpenAI 兼容地址为 https://api.z.ai/api/coding/paas/v4": "Plano Coding do z.ai da edição internacional; o endereço compatível com OpenAI é https://api.z.ai/api/coding/paas/v4", "国际版与国内版是**两套独立的账号**(同一账号体系的两个站点),凭证不通用。": "As edições internacional e da China são **dois conjuntos independentes de contas** (dois sites do mesmo sistema de contas); as credenciais não são compartilhadas.", "国际版与国内版账号体系独立,请填国际版的凭证。未填 refreshToken 无法自动续期。": "As edições internacional e da China têm sistemas de contas independentes; preencha a credencial da edição internacional. Sem preencher o refreshToken, não é possível renovar automaticamente.", "国际版登录页默认只显示邮箱登录,勾选后恢复 Google / GitHub / X 入口": "A página de login da edição internacional mostra por padrão apenas o login por e-mail; marcar a opção restaura os acessos Google / GitHub / X", "国际版的推理站点是 api.z.ai,与国内版不是同一站;套餐也各自独立。": "O site de inferência da edição internacional é api.z.ai, diferente do site da edição da China; os planos também são independentes.", "国际版(WorkBuddy AI)": "Edição internacional (WorkBuddy AI)", "国际站 Coding 套餐;OpenAI 兼容地址为 https://api.minimax.io/v1": "Plano Coding do site internacional; o endereço compatível com OpenAI é https://api.minimax.io/v1", "在 AtomGit 的 AtomCode 页面登出后取得两项贴进来:accessToken 与 refreshToken。续期令牌建议填写——本家令牌不是 JWT(约 7 天到期,读不到过期时间),没有它账号无法自动续期,到期只能重新登录。": "Obtenha os dois valores na página do AtomCode no AtomGit: accessToken e refreshToken. O refresh token é fortemente recomendado — o token deste provedor não é um JWT (expira em cerca de 7 dias e não traz expiração legível); sem ele a conta não consegue se renovar e precisará ser autorizada de novo ao expirar.", "在 DeepSeek 官网完成登录,自动加入账号列表。": "Entre no site oficial do DeepSeek para adicionar sua conta automaticamente.", "在 GitHub 输入设备码 {code},核对账号与授权权限。设备码过期后需要重新发起登录。": "Informe o código de dispositivo {code} no GitHub e confira a conta e as permissões solicitadas. Reinicie o login se o código expirar.", "在 cc-switch 里找到": "Encontradas", "在 chat.deepseek.com 登录本人账号后,从浏览器开发者工具的 Application → Local Storage 复制 userToken 的 value。Cookie 可选,需补充时粘贴该站点请求里的完整 Cookie;登录态失效或要求人机验证时,请回官方网页手动登录后更新。这里不接受收费 API Key。": "Entre na sua própria conta em chat.deepseek.com e copie o campo value de userToken em Application → Local Storage nas ferramentas de desenvolvedor do navegador. Cookie é opcional; se necessário, cole o cabeçalho Cookie completo de uma requisição ao site. Se a sessão expirar ou for exigida verificação humana, entre manualmente no site oficial e atualize as credenciais. Chaves de API pagas não são aceitas aqui.", "在 web.tabbit.ai 登录后,从开发者工具 Application → Cookies 复制 token 与 user_id,或直接粘贴该站点请求的 Copy as cURL 整段。国际站没有可复刻的网页授权回调,手机号登录也处在上游灰度里,所以只能导入已有登录态。登录态有效期约 7 天,过期后重新导入。Cookie 与 JWT 至少填一项。": "Depois de entrar em web.tabbit.ai, copie token e user_id em DevTools → Application → Cookies, ou cole o Copy as cURL inteiro de uma requisição para esse site. O site internacional não tem callback de autenticação web reproduzível, e o login por telefone ainda está em implantação gradual no upstream, então só é possível importar um estado de login existente. O login dura cerca de 7 dias; importe novamente após expirar. Informe pelo menos um entre Cookie e JWT.", "在 web.tabbit.com 登录后,从开发者工具 Application → Cookies 复制 token 与 user_id,或直接粘贴该站点请求的 Copy as cURL 整段。登录态有效期约 7 天,上游没有续期接口,过期后重新导入即可。Cookie 与 JWT 至少填一项。": "Depois de entrar em web.tabbit.com, copie token e user_id em DevTools → Application → Cookies, ou cole o Copy as cURL inteiro de uma requisição para esse site. O login dura cerca de 7 dias e o upstream não tem endpoint de renovação; importe novamente após expirar. Informe pelo menos um entre Cookie e JWT.", "在内嵌窗口里完成官方登录,成功后自动加入账号列表。": "Conclua o login oficial na janela embutida; em caso de sucesso, a conta entra automaticamente na lista de contas.", "在{label}的 Qoder 账号设置 → Integrations 生成 PAT(别填 Google / GitHub 的令牌)。两个地区的账号与凭证不通用。": "Gere um PAT nas configurações da conta Qoder do {label} → Integrations (não use um token do Google / GitHub). Contas e credenciais não são compartilhadas entre as duas regiões.", "在应用内嵌窗口完成 WPS 登录,登录凭据仅交给原插件校验并保存到当前网关。": "Entre no WPS pela janela integrada do aplicativo. As credenciais são entregues apenas ao plugin original para validação e salvas neste gateway.", "在所选站点的 MonkeyCode 官方页面完成登录和验证码,成功后自动读取登录态并加入账号列表,无需手动复制 Cookie。": "Conclua o login e a verificação na página oficial do MonkeyCode da região selecionada. A sessão é capturada e a conta é adicionada automaticamente, sem precisar copiar cookies.", "在打开的官方授权页里用微信扫码登录(页面会直接显示二维码)。扫码成功后自动加入账号列表。": "Escaneie o QR code do WeChat na página de autorização oficial que abrir (o QR code aparece imediatamente). A conta é adicionada à lista automaticamente após a leitura bem-sucedida.", "在打开的官方登录页里完成登录,成功后自动加入账号列表。": "Conclua o login na página oficial que abrir; a conta é adicionada automaticamente à lista após o sucesso.", "在打开的登录页里用百度账号登录 KukuAI 主站(手机验证码 / 扫码均可),登录成功后自动加入账号列表。网关会向百度换发 KukuAI 业务会话令牌(依赖本机已安装库库AI 客户端)。": "Entre no site principal do KukuAI com sua conta Baidu na página de login que abrir (código por SMS ou leitura de QR são válidos); a conta é adicionada automaticamente à lista após o sucesso. O gateway troca com o Baidu um token de sessão de negócios do KukuAI (requer o cliente KukuAI instalado nesta máquina).", "在打开的登录页里登录 Google 账号(Antigravity 的授权页),授权完成后自动加入账号列表。": "Entre com sua conta Google na página de login que abrir (página de autorização do Antigravity); a conta é adicionada automaticamente à lista ao concluir a autorização.", "在打开的窗口里用百度账号登录 KukuAI 主站(手机验证码 / 扫码均可),登录成功后自动加入账号列表。网关会向百度换发 KukuAI 业务会话令牌(依赖本机已安装库库AI 客户端)。": "Na janela aberta, entre no site principal do KukuAI com sua conta Baidu (código SMS ou QR code, tanto faz); após o login, a conta entra automaticamente na lista. O gateway troca com o Baidu um token de sessão de negócio do KukuAI (requer o cliente KukuAI instalado nesta máquina).", "在打开的窗口里登录 Google 账号(Antigravity 的授权页),授权完成后自动加入账号列表。": "Faça login com sua conta Google na janela que abrir (página de autorização do Antigravity); a conta é adicionada à lista automaticamente quando a autorização for concluída.", "在打开的页面里登录千问办公{label}({site})的账号,登录完成后会自动加入列表。两版的账号与凭证不通用。": "Faça login na conta do QwenWork {label} ({site}) na página que abrir. A conta entra na lista assim que você concluir. As duas edições têm contas e credenciais separadas.", "在浏览器中打开登录页": "Abrir a página de login no navegador", "在系统浏览器授权指定 project 的 Code Assist Standard / Enterprise;账号与 project 仍须通过真实预检。": "Autorize o Code Assist Standard / Enterprise para o project informado no navegador do sistema. A conta e o project ainda precisam passar por uma verificação real.", "在豆包官方页面完成登录,窗口会自动读取完整 Cookie 并加入账号列表;不需要安装豆包工作客户端。": "Entre na página oficial do Doubao. A janela lerá os cookies completos e adicionará a conta; o cliente Doubao Work não é necessário.", "地区": "Região", "填写信息后发起授权,进度与失败原因会显示在这里。": "Preencha as informações necessárias e inicie a autorização; o progresso e os erros aparecem aqui.", "填写具体站点名称;模板类型不会作为站点身份": "Digite um nome para este site; o tipo de modelo não identifica o site", "填写凭证": "Preencher credenciais", "填写凭证添加": "Preencher credenciais para adicionar", "备注名": "Rótulo", "套餐": "Plano", "如何获取": "Como obter", "如官方页面跳回的是网关本机地址,请在桌面面板完成回调;手机端不会猜测未声明的回调输入。": "Se a página oficial retornar a um endereço local do gateway, conclua o callback no painel de desktop. O celular não deduz entradas de callback não declaradas.", "如官方页面跳回的是网关本机地址,请粘贴完整回调;没有授权页的本机方式仍需等待网关确认。": "Se a página oficial redirecionar para um endereço local da máquina do gateway, cole a URL de callback completa. Métodos locais sem página de autorização também precisam da confirmação do gateway.", "如:公司中转站、个人备用站": "Ex.: Gateway da empresa, Backup pessoal", "如:智谱 GLM": "ex.: Zhipu GLM", "安装在运行网关的机器,不是当前手机或浏览器所在设备。由 Agent2API 独立管理,不覆盖原有安装;仅点击按钮后下载。": "Instala na máquina que executa o gateway, não neste celular ou dispositivo do navegador. O Agent2API gerencia uma cópia separada, sem substituir instalações existentes. O download só começa ao clicar no botão.", "安装已取消,原有版本未更改。": "Instalação cancelada. A versão anterior não foi alterada.", "安装操作未得到有效确认,请重新检查状态;不会自动重复安装。": "A solicitação de instalação não foi confirmada. Verifique o estado novamente; a instalação não será repetida automaticamente.", "完成官方登录后粘贴包含 state 的完整 loopback 回调地址。": "Após o login oficial, cole a URL completa do callback loopback, incluindo state.", "完成登录后自动加入账号列表,昵称取自上游。": "Após concluir o login, a conta entra automaticamente na lista; o apelido vem do upstream.", "完整 JSON 已包含时无需填写": "Não é necessário se já estiver no JSON completo", "完整回调地址(原样提交)": "URL de callback completa (enviada sem alterações)", "官方 PKCE 登录;浏览器登录态有有效期,失效后需重登,不提供维护续期。": "Login oficial PKCE. Sessões do navegador expiram e exigem novo login; não há renovação de manutenção.", "官方客户端凭证目录:Windows 是 C:\\Users\\<你的用户名>\\AppData\\Local\\CodeBuddyExtension\\Data\\Public\\auth,macOS 是 ~/Library/Application Support/CodeBuddyExtension/Data/Public/auth": "Diretório de credenciais do cliente oficial: Windows — C:\\Users\\\\AppData\\Local\\CodeBuddyExtension\\Data\\Public\\auth; macOS — ~/Library/Application Support/CodeBuddyExtension/Data/Public/auth", "官方已确认到账": "Crédito confirmado oficialmente", "官方浏览器登录": "Login oficial no navegador", "官方浏览器登录(粘贴完整回调)": "Login oficial no navegador (colar callback completo)", "官方网页正常登录后的 Cookie;风控时请手动更新": "Cookie de um login normal no site oficial; atualize-o manualmente se for exigida verificação", "客户端版本": "Versão do cliente", "宿主已持久保存的稳定 hostId(urn:uuid,不能每次生成)": "hostId estável já persistido pelo host (urn:uuid; não gere outro a cada vez)", "导入": "Importar", "导入 QuWork 本机登录态": "Importar login local do QuWork", "导入 kiro-cli / Kiro IDE 登录态": "Importar login do kiro-cli / Kiro IDE", "导入中…": "Importando…", "导入凭证文件": "Importar arquivo de credenciais", "导入失败": "Falha na importação", "导入失败:{reason}": "Falha na importação: {reason}", "导入所选": "Importar selecionados", "导入所选({n})": "Importar selecionados ({n})", "导入桌面端登录态": "Importar sessão de login do desktop", "导入用户指定的本地 Copilot 凭证": "Importar credenciais locais Copilot selecionadas pelo usuário", "将在新标签页中打开授权页;完成后自动加入账号列表。": "A página de autorização abre em uma nova aba; a conta é adicionada automaticamente à lista ao concluir.", "将在新标签页中打开授权页;完成后自动加入账号列表。若页面跳回本机地址后账号没有出现,按提示把地址栏里的完整回调地址粘贴回来即可。": "A página de autorização abre em uma nova aba; a conta é adicionada automaticamente à lista ao concluir. Se a página voltar para um endereço local e a conta não aparecer, cole a URL de callback completa da barra de endereços quando solicitado.", "将打开内嵌窗口;授权完成后自动加入账号列表。关掉窗口即取消等待。授权页最后可能提示无法打开 zcode:// 链接,这是正常的 —— 结果已由服务端记下": "A janela embutida será aberta; após a autorização, a conta entra automaticamente na lista de contas. Fechar a janela cancela a espera. No final, a página de autorização pode avisar que não conseguiu abrir o link zcode:// — isso é normal; o resultado já foi registrado no servidor", "将打开内嵌窗口;授权完成后自动加入账号列表。远程面板可粘贴回调地址。关掉窗口即取消等待。链接 5 分钟内有效,超时或未点就会作废(可重新发起)": "A janela embutida será aberta; após a autorização, a conta entra automaticamente na lista de contas. No painel remoto, é possível colar o endereço de callback. Fechar a janela cancela a espera. O link é válido por 5 minutos; se expirar ou não for clicado, ele é invalidado (você pode iniciar de novo)", "将打开内嵌窗口;登录完成后自动加入账号列表。关掉窗口即取消等待": "A janela embutida será aberta; após o login, a conta entra automaticamente na lista. Fechar a janela cancela a espera", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的 Trae 账号);同机完成后自动加入,Docker / 远程面板按提示粘贴地址栏回调地址。": "A página de autorização será aberta no navegador padrão do sistema (reaproveitando a conta Trae já conectada nele); na mesma máquina, a conta entra automaticamente ao concluir. Para Docker / painel remoto, cole o endereço de callback da barra de endereços conforme as instruções.", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的 ZCode 账号);授权完成后自动加入账号列表。页面最后可能提示无法打开 zcode:// 链接,属正常现象": "A página de autorização será aberta no navegador padrão do sistema (reaproveitando a conta ZCode já conectada nele); após a autorização, a conta entra automaticamente na lista. No final, a página pode avisar que não conseguiu abrir o link zcode://; isso é normal", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的华为云账号);授权码由网关轮询云端取回,与浏览器跑在哪台机器无关,完成后自动加入账号列表": "A página de autorização será aberta no navegador padrão do sistema (reaproveitando a conta Huawei Cloud já conectada nele); o gateway consulta a nuvem em polling para obter o código de autorização, então não importa em qual máquina o navegador roda. Ao concluir, a conta entra automaticamente na lista", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的华为云账号);浏览器与网关不在同一台机器时,按上方说明把最终回调地址粘贴回面板": "A página de autorização será aberta no navegador padrão do sistema (reaproveitando a conta Huawei Cloud já conectada nele); se o navegador e o gateway não estiverem na mesma máquina, cole o endereço de callback final de volta no painel conforme as instruções acima", "将用系统默认浏览器打开登录页(会复用浏览器里已登录的 Accio 账号);完成登录后自动加入账号列表,关掉弹窗即取消等待": "A página de login será aberta no navegador padrão do sistema (reaproveitando a conta Accio já conectada nele); após o login, a conta entra automaticamente na lista; fechar a janela cancela a espera", "将用系统默认浏览器打开登录页(会复用浏览器里已登录的 LobsterAI 账号);完成登录后自动加入账号列表,关掉弹窗即取消等待": "A página de login será aberta no navegador padrão do sistema (reaproveitando a conta LobsterAI já conectada nele); após o login, a conta entra automaticamente na lista; fechar a janela cancela a espera", "小米 MiMo Token Plan 套餐(新加坡站)": "Plano Token Plan do Xiaomi MiMo (site de Singapura)", "小米 MiMo 按量 API;使用按量 API Key,不要混用 Token Plan 套餐 Key": "API por uso do Xiaomi MiMo; use uma API Key por uso, não uma Key de assinatura Token Plan", "小米 MiMo(按量)": "Xiaomi MiMo (por uso)", "已到账": "Creditado", "已取消登录等待": "Espera de login cancelada", "已取消领取": "Resgate cancelado", "已取消验证码": "Captcha cancelado", "已填写手机号,正在发送验证码…": "Celular preenchido; enviando o código…", "已声明无需鉴权:账号会被正常选路,出网时不带任何鉴权头": "Marcada como sem necessidade de autenticação: a conta é roteada normalmente e nenhum cabeçalho de autenticação é enviado nas requisições de saída", "已完成验证,继续发送": "Verificação concluída, enviar novamente", "已导入 {ok} 个,失败 {fail} 个(失败项已标注在列表里)": "{ok} importados, {fail} com falha (os itens com falha estão marcados na lista)", "已建 API": "APIs configuradas", "已建过 · {n} 个账号,点击继续添加": "Já criado · {n} contas, clique para adicionar mais", "已建过,点击继续添加账号": "Já criado, clique para adicionar outra conta", "已打开官方登录页,请在窗口中完成登录…": "Página de login oficial aberta; conclua o login na janela…", "已收到授权回调,正在完成登录…": "Callback de autorização recebido. Concluindo o login…", "已收到浏览器授权,正在获取账号凭据…": "Autorização do navegador recebida. Obtendo credenciais da conta…", "已有 API Key(留空则在浏览器登录后自动创建)": "API Key existente (deixe vazio para criar após o login pelo navegador)", "已有验证码流程正在进行,请先完成或取消": "Já existe uma verificação em andamento. Conclua ou cancele primeiro.", "已检测到本机客户端": "Cliente local detectado", "已点发送,等待短信…": "Enviado; aguardando o SMS…", "已用系统默认浏览器打开登录页,请在浏览器中完成登录…": "Página de login aberta no navegador padrão do sistema; conclua o login no navegador…", "已读取 QuWork 本机登录态,正在添加账号。": "Login local do QuWork lido. Adicionando a conta…", "已领取,等官方确认": "Resgatado; aguardando confirmação oficial", "引用本机 Gemini CLI oauth_creds.json(只读)": "Referenciar oauth_creds.json local do Gemini CLI (somente leitura)", "当前分类里没有「{keyword}」,其它分类有 {n} 个匹配": "Nenhum provedor desta categoria corresponde a \"{keyword}\", mas {n} em outras", "当前壳版本不支持 AutoClaw 网页登录,请更新应用": "Esta versão do aplicativo não suporta o login web do AutoClaw; atualize o aplicativo", "当前没有可领取的套餐(活动尚未开始)": "Nenhum plano disponível para resgate no momento (a campanha ainda não começou)", "当前版本:{version}": "Versão atual: {version}", "当前环境不支持领取(桥接方法缺失)": "O resgate não é suportado neste ambiente (método de ponte ausente)", "必填,CatPaw 账号标识": "Obrigatório; identificador da conta CatPaw", "恢复 Google / GitHub 入口": "Restaurar acessos Google / GitHub", "所选代理会保存到账号设置,后续请求继续使用。": "O proxy selecionado será salvo nas configurações da conta e usado nas próximas solicitações.", "手动代理": "Proxy manual", "手动导入 GitHub OAuth / GitHub 令牌": "Informar token GitHub OAuth / GitHub manualmente", "手机号": "Celular", "手机验证码登录": "Login com código SMS", "打开 LobsterAI(有道龙虾)的官方登录页(lobsterai.youdao.com)并用你的 LobsterAI 账号登录:登录成功后官方页面会跳回本机并自动加入账号列表 —— 回调落在网关自己的端口上,所以浏览器要与网关在同一台机器上;授权码只在本机传给网关,界面不显示明文 token。": "Abra a página de login oficial do LobsterAI (lobsterai.youdao.com) e entre com sua conta LobsterAI: após o login, a página oficial retorna a esta máquina e a conta entra automaticamente na lista — o callback chega à porta do próprio gateway, portanto o navegador precisa estar na mesma máquina que o gateway; o código de autorização só é entregue ao gateway localmente e nenhum token em texto claro é exibido na interface.", "打开 Trae 的官方授权页(trae.cn)并用你的 Trae 账号登录:授权完成后官方页面会跳回本机的一个临时端口;同机部署自动接收,Docker / 远程面板请按提示复制地址栏回调地址。": "Abra a página de autorização oficial do Trae (trae.cn) e entre com sua conta Trae: ao concluir a autorização, a página oficial redireciona de volta para uma porta temporária desta máquina; implantações na mesma máquina recebem automaticamente, e no Docker / painel remoto copie o endereço de callback da barra de endereços conforme as instruções.", "打开 Accio {label}的官方登录页({site})并用你的 Accio 账号登录:登录成功后官方页面会跳回本机;同机自动完成,Docker / 远程面板按提示粘贴回调地址即可(授权码只在本机传给网关,界面不显示明文 token)。": "Abra a página de login oficial do Accio {label} ({site}) e entre com sua conta Accio: após o login, a página oficial redireciona de volta para esta máquina; na mesma máquina tudo se completa automaticamente, e no Docker / painel remoto basta colar o endereço de callback conforme as instruções (o código de autorização é passado ao gateway apenas nesta máquina, e nenhum token em texto claro é exibido na interface).", "打开 Accio {label}登录页": "Abrir a página de login do Accio {label}", "打开 Antigravity 网页登录": "Abrir login web do Antigravity", "打开 AtomGit 授权页登录:登录完成后网关会自动轮询代理取回令牌并加入账号列表(授权回调由代理终结,不回到本机,因此无需手工回填回调地址)。": "Abra a página de autorização do AtomGit e entre: ao concluir, o gateway consulta o broker automaticamente para obter o token e adiciona a conta (o callback é encerrado no broker e nunca volta para esta máquina, então não é preciso preencher a URL de callback).", "打开 CatPaw 网页登录": "Abrir o login web do CatPaw", "打开 Cline 授权页": "Abrir a página de autorização do Cline", "打开 CodeArts 授权页": "Abrir a página de autorização do CodeArts", "打开 LobsterAI 登录页": "Abrir a página de login do LobsterAI", "打开 Qoder 网页登录": "Abrir o login web do Qoder", "打开 Trae 授权页": "Abrir a página de autorização do Trae", "打开 ZCode {label}的官方授权页并用你的账号登录。授权结果由 ZCode 服务端记录,网关在后台自动取回凭证并加入账号列表。": "Abra a página de autorização oficial do ZCode {label} e entre com sua conta. O resultado da autorização é registrado pelo servidor do ZCode; o gateway busca a credencial em segundo plano e a adiciona à lista de contas.", "打开 ZCode {label}授权页": "Abrir a página de autorização do ZCode {label}", "打开下一步授权页": "Abrir a próxima página de autorização", "打开人机验证": "Abrir verificação humana", "打开千问办公网页登录": "Abrir o login web do QwenWork", "打开华为云 CodeArts 的官方授权页登录:登录完成后官方页面会把浏览器带回网关自己的 /oauth/callback,网关用一次性授权码换取临时凭据并加入账号列表。
    网关跑在另一台机器上时,网页端会提示把地址栏中的最终回调地址直接粘贴回面板。": "Abra a página de autorização oficial do Huawei Cloud CodeArts para entrar: após o login, a página oficial leva o navegador de volta ao /oauth/callback do próprio gateway, e o gateway troca o código de autorização de uso único por credenciais temporárias e adiciona a conta à lista.
    Quando o gateway roda em outra máquina, a interface web pede para colar o endereço de callback final da barra de endereços de volta no painel.", "打开华为云授权页登录:登录完成后网关会自动轮询云端取回授权码并加入账号列表(不需要装 OfficeAce 桌面端,也无需手工回填回调地址)。": "Abra a página de autorização do Huawei Cloud e faça login: ao concluir, o gateway consulta a nuvem automaticamente para obter o código de autorização e adiciona a conta à lista (não é preciso instalar o aplicativo de desktop do OfficeAce nem colar manualmente uma URL de retorno).", "打开官方授权页": "Abrir a página oficial de autorização", "打开官方授权页完成设备码授权,登录的是{label}({site})的账号。": "Abra a página de autorização oficial e conclua a autorização por código de dispositivo; a conta usada é do {label} ({site}).", "打开授权页": "Abrir a página de autorização", "打开授权页完成确认,账号自动加入 {label}{note}": "Abra a página de autorização e confirme; a conta entra automaticamente em {label}{note}", "打开方式": "Como abrir", "打开网页登录": "Abrir login web", "按已验证邮箱只读引用 cursor-agent 当前登录态;每次操作重读 keychain/auth.json,不复制 token、不主动运行 CLI 续期,退出或失效后需在原客户端重登。": "Referencia o login atual do cursor-agent em modo somente leitura, fixado no e-mail verificado. Cada operação relê keychain/auth.json sem copiar tokens nem executar renovação pela CLI. Após sair ou expirar, entre novamente no cliente original.", "授权只读引用,不复制、不修改、不续期本机凭证": "Permitir referência somente leitura, sem copiar, modificar ou renovar credenciais locais", "授权回调提交失败;请检查输入并重试,登录仍在等待。": "Falha ao enviar o callback de autorização. Confira a entrada e tente novamente; o login continua aguardando.", "授权每次请求只读所选文件,固定当前账号与工作区?": "Permitir referência somente leitura ao arquivo selecionado a cada requisição, fixada nesta conta e área de trabalho?", "授权码或令牌(原样提交)": "Código de autorização ou token (enviado sem alterações)", "授权读取所选条目": "Permitir leitura da entrada selecionada", "授权页、换证与取账号信息都走这条线路。无头服务器上没有系统代理,这里不选就走直连(多数网络里到不了 Google)。": "A página de autorização, a troca de código e a consulta de dados da conta usam esta rota. Um servidor headless não tem proxy de sistema, então deixar em branco significa conexão direta (que na maioria das redes não alcança o Google).", "探测失败:{message}": "Falha na detecção: {message}", "接入一个兼容上游": "Conectar um upstream compatível", "控制台 uaa-token(粘贴令牌值或完整的 uaa-token=… Cookie 项)": "uaa-token do console (cole o valor do token ou a entrada completa do cookie uaa-token=…)", "推荐": "Recomendado", "提交中…": "Enviando…", "提交授权回调": "Enviar callback de autorização", "提供商仅在已启用且加载后出现。登录与本机引用均作用在所连接网关,不是手机。": "Provedores aparecem somente após serem habilitados e carregados. Login e referências locais se aplicam ao gateway conectado, não ao celular.", "插件专用 Chrome 登录(自动读取凭据)": "Login pelo Chrome do plugin (leitura automática de credenciais)", "插件会在网关电脑上启动独立浏览器并读取登录结果,不使用系统默认浏览器。": "O plugin abre um navegador separado na máquina do gateway e lê o resultado do login. Ele não usa o navegador padrão do sistema.", "搜索提供商": "Buscar provedores", "搜索提供商…": "Buscar provedores…", "整份粘贴官方插件 / CLIProxyAPI 落盘的凭据 JSON(形如 {\"codearts_provider_credential\":{…}},铺平的也行)。
    必填:access_key_id、secret_access_key、security_token。要能自动续期,必须连 refresh_token 与 oauth_context 一起粘 —— 临时凭据约一小时到期,缺这半块就续不回来,只能重新登录。": "Cole o JSON de credencial inteiro gravado pelo plugin oficial / CLIProxyAPI (no formato {\"codearts_provider_credential\":{…}}; a versão achatada também serve).
    Obrigatórios: access_key_id, secret_access_key, security_token.Para renovar automaticamente, é preciso colar também refresh_token e oauth_context — as credenciais temporárias expiram em cerca de uma hora, e sem essa parte não há como renovar; será preciso fazer login de novo.", "文件是{edition}凭证,已按该版本导入": "O arquivo contém credenciais da {edition} e foi importado como tal", "新增独立登录": "Novo login independente", "新建自定义提供商": "Novo provedor personalizado", "新网关确认代理同次保存后不再重复提交;旧网关使用兼容保存并提示核查,失败不会撤销已添加的账号。": "Não há segundo envio quando o novo gateway confirma que o proxy foi salvo junto com a conta. Gateways antigos usam gravação de compatibilidade com aviso de conferência; falhas não removem a conta adicionada.", "方案:{label}": "Esquema: {label}", "无需手动复制令牌,验证码在官方页面完成。": "Não é preciso copiar o token. Conclua a verificação na página oficial.", "旧网关未确认代理同次保存,已使用兼容接口保存;请在账号设置中确认代理选择。": "O gateway antigo não confirmou a gravação conjunta do proxy. Foi usado o endpoint de compatibilidade; confira o proxy nas configurações da conta.", "明文 JWT 或 auth.json 里的 enc: 加密值(自动解密)": "JWT em texto claro ou o valor criptografado enc: do auth.json (descriptografado automaticamente)", "明文 JWT(国际版账号的 access token)": "JWT em texto claro (o access token da conta da edição internacional)", "明确选择文件与只读授权;不修改或续期原客户端登录态。": "Selecione explicitamente o arquivo e autorize acesso somente leitura. O login do cliente original não é alterado nem renovado.", "明确选择文件内的账号条目键名": "Selecionar a chave exata da entrada de conta no arquivo", "明确选择标准凭证文件的完整绝对路径": "Selecionar o caminho absoluto completo de um arquivo padrão de credenciais", "是否授权只读取此文件和所选账号凭证?": "Permitir acesso somente leitura a este arquivo e à credencial da conta selecionada?", "显示凭证": "Mostrar credenciais", "智谱 bigmodel.cn 的 Coding 套餐,Key 在 open.bigmodel.cn/usercenter/apikeys": "Plano Coding do bigmodel.cn da Zhipu; obtenha a Key em open.bigmodel.cn/usercenter/apikeys", "暂不支持自动安装": "Instalação automática indisponível", "暂时无法检查官方最新版;已安装且满足最低要求的客户端仍可使用。": "Não foi possível verificar a versão oficial mais recente. Um cliente já instalado que atenda aos requisitos mínimos ainda pode ser usado.", "暂时无法登录": "Login indisponível", "有可用更新": "Atualização disponível", "未开启客户端调试端口时,请使用网页登录或粘贴 Cookie。": "Se a porta de depuração do cliente não estiver habilitada, use o login web ou cole os cookies.", "未知错误": "Erro desconhecido", "未能获取授权地址,请重试": "Não foi possível obter o endereço de autorização; tente novamente", "未能读取 cc-switch 数据": "Não foi possível ler os dados do cc-switch", "未领取成功": "Resgate não concluído", "本体订阅未返回动态登录方式(501);不会猜测导入接口或显示插件手动凭证入口。请更新网关后重试。": "A assinatura nativa não retornou métodos dinâmicos de login (501). Não serão presumidos endpoints de importação nem exibido um formulário manual de credenciais de plugin. Atualize o gateway e tente novamente.", "本地 Ollama、OpenCode Zen 免费档这类上游要勾上,否则账号不可用": "Marque esta opção para upstreams como o Ollama local ou o nível gratuito do OpenCode Zen; caso contrário, a conta não funcionará", "本家有两个**互不替代**的凭证,按你要用的功能填,至少填一个:编码套餐 API Key 用于转发推理(打 {site})与查询窗口限额(每 N 小时 / 每周的剩余比例);jwt 用于领取套餐与查询余额(打 zcode.z.ai 的 billing 网关,官方叫 Coding Plan JWT,是一串三段点分的字符串)。余额两把都能查、但读到的东西不同:jwt 读到余额桶与套餐到期,API Key 读到窗口限额;而领取只认 jwt、转发只认 API Key。请填写 {label}账号的凭证 —— {plan}(最容易拿到的办法:直接用上方的「网页登录」—— 它会替你把这个 API Key 换好,两个凭证一起拿到。)": "Este provedor tem duas credenciais que **não se substituem**; preencha as que correspondem aos recursos que você vai usar, pelo menos uma: a API Key do Coding Plan serve para encaminhar inferência (acessa {site}) e para consultar os limites de janela (a porcentagem restante de cada janela de N horas / semanal); o jwt serve para resgatar planos e consultar saldo (acessa o gateway de billing em zcode.z.ai; oficialmente chamado Coding Plan JWT, uma string de três segmentos separados por ponto). As duas consultam saldo, mas leem coisas diferentes: o jwt lê os baldes de saldo e a expiração do plano, enquanto a API Key lê os limites de janela; e o resgate só aceita o jwt, o encaminhamento só aceita a API Key. Preencha a credencial da conta {label} — {plan} (a forma mais fácil: use o \"Login web\" acima — ele troca essa API Key por você e obtém as duas credenciais de uma vez.)", "本机 Ollama 的 OpenAI 兼容端点,无需 API Key(默认已勾上「该上游无需鉴权」,鉴权头一个都不发)": "Endpoint compatível com OpenAI do Ollama local; não precisa de API Key (a opção \"Este upstream não exige autenticação\" já vem marcada e nenhum cabeçalho de autenticação é enviado)", "本机 auth.json(只读引用)": "auth.json local (referência somente leitura)", "本机凭证已校验。宿主仅保存文件引用与稳定身份,每次请求重新读取。": "Credenciais locais verificadas. O host salva apenas a referência do arquivo e uma identidade estável, relendo a cada requisição.", "本机部署会自动完成登录;服务器或 Docker 部署时,若授权后跳到无法访问的 localhost 或 127.0.0.1 页面,请把地址栏中的完整回调地址粘贴回来。AWS 登录如需继续授权,请打开下一步授权页,完成后再次回填。请勿修改地址或把回调链接发给他人。": "Instalações locais concluem o login automaticamente. Em servidores ou Docker, se a autorização redirecionar para uma página localhost ou 127.0.0.1 inacessível, cole aqui a URL completa da barra de endereços. Se a AWS exigir outra autorização, abra a próxima página e cole a nova URL de callback ao concluir. Não altere nem compartilhe URLs de callback.", "本次未确认到账": "Crédito não confirmado desta vez", "条可导入": "importáveis", "条配置,其中": "configurações no cc-switch, das quais", "桌面运行时不可用(Tauri 未初始化)": "Runtime do desktop indisponível (Tauri não inicializado)", "检测失败": "Falha na verificação", "模型网关基址": "Endereço base do gateway de modelos", "正在准备 AWS 授权…": "Preparando autorização AWS…", "正在准备安装…": "Preparando a instalação…", "正在取消安装…": "Cancelando a instalação…", "正在启用新版本…": "Ativando a nova versão…", "正在打开百度登录页…": "Abrindo a página de login do Baidu…", "正在扫描本机 cc-switch…": "Escaneando o cc-switch desta máquina…", "正在换发访客凭证…": "Solicitando uma credencial de visitante…", "正在校验官方安装包…": "Verificando o pacote oficial…", "正在检查安装状态…": "Verificando o estado da instalação…", "正在检查客户端版本…": "Verificando a versão do cliente…", "正在添加…": "Adicionando…", "正在等待{name}登录完成;完成或取消后才能发起新的登录": "Aguardando a conclusão do login de {name}; só após concluir ou cancelar você pode iniciar um novo login", "此 Copilot 手动令牌方式未声明回调输入契约,暂不发起;请改用设备码登录或只读本机引用。": "Este método manual de token Copilot não declara o contrato de entrada do callback e não será iniciado. Use login por código de dispositivo ou referência local somente leitura.", "此提供商已有登录任务,请先完成或取消。": "Já há um login em andamento para este provedor. Conclua ou cancele primeiro.", "此提供商未声明动态登录方式,请在网关桌面面板使用其既有入口;手机端不会猜测凭证字段。": "Este provedor não declara métodos dinâmicos de login. Use a entrada existente no painel desktop do gateway; o aplicativo móvel não presumirá os campos de credenciais.", "此方式需要原样提交授权码或令牌;输入会隐藏,不会当作 URL 或 API 凭证解析。提交后仍需等待网关确认。": "Este método exige um código de autorização ou token sem alterações. A entrada fica oculta e não é interpretada como URL ou credencial de API. Aguarde a confirmação do gateway após enviar.", "此方式需要完整回调地址;请原样粘贴,不拆分参数或重建地址。提交后仍需等待网关确认。": "Este método exige a URL completa de callback. Cole-a sem alterações, sem separar parâmetros nem reconstruir o endereço. Aguarde a confirmação do gateway após enviar.", "每个账号使用独立的官方登录目录。终端登录沿用该终端的网络环境;这里选择的代理用于添加后的模型请求。": "Cada conta usa seu próprio diretório de login oficial. O login no terminal usa as configurações de rede desse terminal; o proxy selecionado aqui se aplica às solicitações de modelos após a adição da conta.", "每周": "Semanal", "每日": "Diário", "每月": "Mensal", "没有则无法自动续期": "Sem ele, não é possível renovar automaticamente", "没有匹配「{keyword}」的提供商": "Nenhum provedor corresponde a \"{keyword}\"", "浏览器拦截了弹窗": "O navegador bloqueou a janela pop-up", "浏览器授权已收到,但网关直连 DeepAI 失败。请在登录代理中填入系统代理或选择可用代理后重新登录。": "A autorização do navegador foi recebida, mas o gateway não conseguiu acessar o DeepAI diretamente. Preencha com o proxy do sistema ou escolha um proxy de login funcional e entre novamente.", "浏览器授权已收到,但通过所选代理获取账号凭据失败。请检查该代理后重新登录。": "A autorização do navegador foi recebida, mas não foi possível obter as credenciais pelo proxy selecionado. Verifique o proxy e entre novamente.", "浏览器显示登录完成后,网关还需联网获取账号凭据。若浏览器或 Magpie 使用系统代理,请先在下方点击「填入系统代理」;选择直连不会跟随系统代理。": "Após o navegador mostrar que o login foi concluído, o gateway ainda precisa obter as credenciais pela rede. Se o navegador ou o Magpie usa um proxy do sistema, clique primeiro em “Preencher com proxy do sistema” abaixo. A conexão direta não usa o proxy do sistema.", "浏览器登录(墨点额度 + 自动创建 API Key)": "Login pelo navegador (créditos de tinta + criação automática de API Key)", "浏览器登录(复用已有 API Key)": "Login pelo navegador (reutilizar uma API Key existente)", "浏览器面板无法读取其他站点的登录态,请使用本人网页账号的令牌。": "O painel do navegador não pode ler sessões de login de outros sites. Use o token da sua própria conta web.", "浏览器面板无法读取其它站点的 Cookie,请登录 www.doubao.com 后,使用「填写凭证」粘贴完整 Cookie。": "O painel do navegador não pode ler cookies de outros sites. Entre em www.doubao.com e cole os cookies completos em Credenciais.", "添加 DeepSeek 账号": "Adicionar conta DeepSeek", "添加 {name} 账号": "Adicionar conta {name}", "添加中…": "Adicionando…", "添加到 ": "Adicionar a ", "添加到此提供商": "Adicionar a este provedor", "添加失败:{reason}": "Falha ao adicionar: {reason}", "添加小浣熊账号": "Adicionar conta Raccoon", "添加方式": "Forma de adicionar", "添加时要用它出网校验凭证(例如 Antigravity 要打一次 Google 的 token 端点)。无头服务器上没有系统代理,这里不选就走直连。": "Usado para acessar a rede ao validar a credencial na adição (por exemplo, o Antigravity chama um endpoint de token do Google). Um servidor headless não tem proxy de sistema, então deixar em branco significa conexão direta.", "添加访客账号": "Adicionar uma conta de visitante", "添加账号": "Adicionar conta", "火山引擎 Coding 套餐;通用推理接入点为 https://ark.cn-beijing.volces.com/api/v3": "Plano Coding do Volcano Engine; o endpoint de inferência geral é https://ark.cn-beijing.volces.com/api/v3", "点击添加账号": "Clique para adicionar uma conta", "点击登录后,在 Google 页面授权,再原样粘贴授权码或完整页面地址;已登录的 agy 会直接连接。Google 凭证由官方客户端保管,Agent2API 只保存本机连接标记。同一网关仅使用 agy 当前登录的一个账号,不支持复制为多个独立账号。": "Clique em Entrar, autorize na página do Google e cole o código de autorização ou o endereço completo sem alterações. Se o agy já estiver conectado, a conexão é direta. O cliente oficial guarda as credenciais do Google; o Agent2API salva apenas um marcador de conexão local. Cada gateway usa a conta atual do agy, sem duplicá-la em várias contas independentes.", "点开即预填,填 Key 接入": "Abre já preenchido; informe a Key para conectar", "点按钮后先过一次滑块验证(官方风控),随后打开登录页,登录完成即自动添加账号。
    这是国际版官方唯一的登录方式;已在客户端登录过的,用「导入桌面端登录态」更快。": "Após clicar no botão, primeiro passe por uma verificação de slider (controle de risco do provedor); em seguida a página de login abre e a conta é adicionada automaticamente ao concluir o login.
    Esta é a única forma oficial de login da edição internacional; se você já entrou no cliente, \"Importar sessão de login do desktop\" é mais rápido.", "独立 Kiro OAuth 支持续期;保留原登录验证,不接受任意 bearer token。": "O OAuth Kiro independente permite renovação. A validação original de login é mantida; tokens bearer arbitrários não são aceitos.", "用 AutoClaw 账号绑定的手机号登录:点击「获取验证码」,收到短信后填入下方并登录。验证码由本机直接提交给官方接口,界面不显示 token。": "Entre com o celular vinculado à conta AutoClaw: clique em \"Obter código\", informe o código recebido por SMS abaixo e entre. O código é enviado desta máquina diretamente à API oficial, e nenhum token é exibido na interface.", "用 CatPaw 账号完成登录(美团 passport),成功后自动加入账号列表。": "Conclua o login com sua conta CatPaw (Meituan Passport); em caso de sucesso, a conta entra automaticamente na lista.", "用 Loomy 账号绑定的手机号登录:点「获取验证码」后填入即可。这是本家最省事的入口。": "Entre com o celular vinculado à conta Loomy: clique em \"Obter código\" e informe o código. Esta é a forma mais simples neste provedor.", "用于转发;形如 apiKey.secret 两段点分(不填则这个账号不能转发)": "Usado para encaminhamento; no formato apiKey.secret, dois segmentos separados por ponto (se vazio, esta conta não pode encaminhar)", "用于领取套餐与查询余额;不填则这个账号不能领取与查余额": "Usado para resgatar planos e consultar saldo; se vazio, esta conta não pode resgatar nem consultar saldo", "用户 ID": "ID do usuário", "用绑定的手机号登录:点「获取验证码」后填入即可。这是国内版官方唯一的登录方式。": "Entre com o celular vinculado: clique em \"Obter código\" e informe o código. Esta é a única forma oficial de login da edição da China.", "用绑定的手机号登录:点「获取验证码」,收到短信后填入下方并点「登录并添加」。这是国内站官方唯一的登录方式。": "Entre com o número de telefone vinculado: toque em \"Obter código\", informe o código SMS abaixo e clique em \"Entrar e adicionar\". Este é o único método oficial de login do site da China.", "由插件打开浏览器登录": "Entrar pelo navegador do plugin", "由本机 Grok Build CLI 执行官方设备授权;仅保存 home/scope/account 引用,不镜像 token,后续操作只读,不提供维护续期。": "A CLI local Grok Build executa a autorização oficial por dispositivo. Só armazena a referência home/scope/account, sem copiar tokens. Operações posteriores são somente leitura; não há renovação de manutenção.", "留空使用 1.17.16(10117016)": "Deixe vazio para usar 1.17.16(10117016)", "留空使用该提供商默认值": "Deixe em branco para usar o padrão do provedor", "留空使用账号默认名称": "Deixe em branco para usar o nome padrão da conta", "留空使用默认的 User-Agent;可从预置里选一个内置客户端,也可以直接填写。": "Deixe em branco para usar o User-Agent padrão; escolha um cliente integrado predefinido ou digite um diretamente.", "留空则用提供商名称": "Se vazio, usa o nome do provedor", "留空自动查找;也可填写网关本机 agy 可执行文件的绝对路径": "Deixe em branco para detectar automaticamente ou informe o caminho absoluto do agy na máquina do gateway", "登录 / 添加 {name} 账号": "Entrar / adicionar conta {name}", "登录 JWT": "JWT de login", "登录 chat.deepseek.com 后,打开开发者工具 → Application → Local Storage,复制 userToken 的 value。": "Entre em chat.deepseek.com, abra as ferramentas de desenvolvedor → Application → Local Storage e copie o campo value de userToken.", "登录 session(一长串)": "Sessão de login (uma string longa)", "登录中…": "Entrando…", "登录代理不支持轮询出网,请选择一条已保存的代理": "O login não aceita proxies rotativos. Escolha um proxy salvo.", "登录凭证 accessToken": "Credencial de login accessToken", "登录出网代理": "Proxy de saída do login", "登录取消未确认,请刷新状态后重试。": "O cancelamento do login não foi confirmado. Atualize o status e tente novamente.", "登录失败:{message}": "Falha no login: {message}", "登录尚未完成,请继续通过共享登录桥等待结果": "O login ainda não foi concluído. Continue aguardando o resultado pela ponte de login compartilhada.", "登录已结束": "Login encerrado", "登录并添加": "Entrar e adicionar", "登录态文件路径:~/.box-agent/config/auth.json(Windows:C:\\Users\\<你的用户名>\\.box-agent\\config\\auth.json)": "Caminho do arquivo de sessão de login: ~/.box-agent/config/auth.json (Windows: C:\\Users\\\\.box-agent\\config\\auth.json)", "登录授权地址无效,已取消本次等待。": "A URL de autorização do login é inválida; a espera foi cancelada.", "登录桥未返回已完成的账号或会话,请重试": "A ponte de login não retornou uma conta ou sessão concluída. Tente novamente.", "登录桥返回了空会话,无法确认账号已添加": "A ponte de login retornou uma sessão vazia, então não é possível confirmar que a conta foi adicionada.", "相同协议和地址的提供商已经存在。可以继续新建独立提供商,或明确选择已有提供商添加账号。": "Já existe um provedor com o mesmo protocolo e endereço. Crie um provedor separado ou selecione um existente para adicionar uma conta.", "看全部匹配": "Ver todas as correspondências", "确定删除自定义提供商「{name}」?将同时删除该提供商下 {count} 个账号,删除后无法恢复。": "Excluir o provedor personalizado \"{name}\"? Isso também excluirá {count} contas desse provedor; a exclusão não pode ser desfeita.", "站点名称": "Nome do site", "端砚由插件在网关电脑上启动独立的 Edge、Chrome 或 Chromium 窗口,不使用系统默认浏览器或应用内嵌窗口。": "O plugin do InkStone abre uma janela independente do Edge, Chrome ou Chromium no computador do gateway. Ele não usa o navegador padrão do sistema nem a janela integrada do aplicativo.", "等待 Accio {label}登录完成…": "Aguardando a conclusão do login do Accio {label}…", "等待 AtomCode 登录完成…": "Aguardando o login do AtomCode…", "等待 CatPaw 登录完成…": "Aguardando a conclusão do login do CatPaw…", "等待 Cline 授权确认…": "Aguardando a confirmação de autorização do Cline…", "等待 CodeArts 登录完成…": "Aguardando a conclusão do login do CodeArts…", "等待 Google 授权完成…": "Aguardando a conclusão da autorização do Google…", "等待 KukuAI 登录完成…": "Aguardando a conclusão do login do KukuAI…", "等待 LobsterAI 登录完成…": "Aguardando a conclusão do login do LobsterAI…", "等待 MonkeyCode 登录完成…": "Aguardando o login do MonkeyCode…", "等待 OfficeAce 登录完成…": "Aguardando a conclusão do login do OfficeAce…", "等待 OrcaTerm 登录完成…": "Aguardando o login no OrcaTerm…", "等待 Qoder 授权完成…": "Aguardando a conclusão da autorização do Qoder…", "等待 Trae 授权完成…": "Aguardando a conclusão da autorização do Trae…", "等待 ZCode {label}授权完成…": "Aguardando a conclusão da autorização do ZCode {label}…", "等待你在官方页面完成登录,成功后自动添加账号。": "Aguardando seu login na página oficial. A conta será adicionada automaticamente ao concluir.", "等待千问办公登录完成…": "Aguardando a conclusão do login do QwenWork…", "等待小浣熊登录完成…": "Aguardando a conclusão do login do Raccoon…", "等待插件完成登录": "Aguardando o plugin concluir o login", "等待浏览器完成登录": "Aguardando o login pelo navegador", "等待浏览器授权;若本机回调页面无法打开,请复制地址栏中的完整地址回填。": "Aguardando autorização no navegador. Se a página local de callback não abrir, copie o endereço completo da barra e cole aqui.", "等待登录完成…": "Aguardando a conclusão do login…", "等待网页登录…": "Aguardando o login web…", "等待豆包工作登录完成…": "Aguardando o login do Doubao Work…", "粘贴 API Key": "Colar API Key", "粘贴 API 令牌": "Colar token de API", "粘贴 Accio 的 accessToken": "Colar o accessToken do Accio", "粘贴 Antigravity 的 Google refresh token(以 1// 开头;直接粘贴含 refresh_token= 的整行也行)。
    这是网页登录之外的手工入口(例如从已登录的官方 IDE 里导出)。refresh token 不会过期,access token 到期由网关自动续期;令牌丢了只能重新走 Google 授权,请妥善保存。": "Cole o Google refresh token do Antigravity (começa com 1//; também pode colar a linha inteira que contém refresh_token=).
    Esta é uma entrada manual além do login web (por exemplo, exportada do IDE oficial em que você já está conectado). O refresh token não expira, e o gateway renova o access token automaticamente ao expirar; se o token for perdido, só resta refazer a autorização do Google, então guarde-o bem.", "粘贴 Command Code 的 API Key(user_ 开头;从官方 CLI 的 ~/.commandcode/auth.json 或网页 studio 获取)。整行 / 带引号 / 带 Bearer 前缀地粘都行,网关会自己剥成裸 key。key 不过期、也没有续期接口,失效后重新获取即可;添加时网关会做一次轻量探活,失败不影响添加。": "Cole a API Key do Command Code (começa com user_; obtenha no ~/.commandcode/auth.json do CLI oficial ou no studio web). Colar a linha inteira / com aspas / com o prefixo Bearer funciona; o gateway extrai a key pura sozinho. A key não expira e não há API de renovação, então basta obter uma nova se ela deixar de funcionar. Ao adicionar, o gateway faz uma verificação leve de atividade; uma falha não impede a adição.", "粘贴 Cookie": "Colar Cookie", "粘贴 Google refresh token": "Colar Google refresh token", "粘贴 ModelScope 的 API 令牌(ms- 开头,在 {site} 的「访问令牌」页获取)。
    {siteNote}
    这枚令牌两用:网关既用它调推理,也用它读账号身份、魔粒余额与每日签到。令牌长期有效、没有续期接口,失效后重新获取再粘一次即可。": "Cole um token de API do ModelScope (começa com ms-; crie um na página \"Tokens de acesso\" de {site}).
    {siteNote}
    O mesmo token serve para duas finalidades: o gateway o usa tanto para chamar a inferência quanto para ler a identidade da conta, o saldo de créditos e o check-in diário. O token é de longa duração e não há API de renovação — se parar de funcionar, basta criar outro e colar novamente.", "粘贴 OrcaTerm 的 OAuth accessToken(JWT,三段点分;从桌面客户端 data.bin 或 Web 版 Cookie ot_session 获取)。直接粘贴含 Bearer / ot_session= 的整行也行,网关会自己剥成裸 token。添加后由网关自动续期(上游有续期接口),无需跟随 2 小时时效手动更换。": "Cole o accessToken OAuth do OrcaTerm (um JWT com três partes separadas por pontos; obtido do data.bin do cliente desktop ou do cookie ot_session da versão web). Também pode colar a linha inteira contendo Bearer / ot_session= — o gateway extrai apenas o token. Após adicionar, o gateway renova automaticamente (o upstream tem API de renovação), sem precisar acompanhar a expiração de 2 horas manualmente.", "粘贴 Qoder 个人访问令牌(pt-…)": "Colar o token de acesso pessoal do Qoder (pt-…)", "粘贴 accessToken": "Colar accessToken", "粘贴 access_token(一长串 JWT)": "Colar o access_token (um JWT longo)", "粘贴 session cookie": "Colar session cookie", "粘贴 token / refreshToken": "Colar token / refreshToken", "粘贴 userToken.value": "Colar userToken.value", "粘贴 workos:… 开头的令牌(不带前缀也会自动补上)": "Cole um token começando com workos:… (o prefixo é adicionado automaticamente se faltar)", "粘贴 www.doubao.com 的完整 Cookie(必须含 sessionid),也支持 Cookie JSON 数组或对象。复用豆包工作账号的额度;Cookie 失效后需重新登录,没有自动续期。": "Cole os cookies completos de www.doubao.com, incluindo sessionid. Arrays e objetos JSON também são aceitos. Usa a cota da conta Doubao Work; cookies expirados exigem novo login e não são renovados automaticamente.", "粘贴令牌": "Colar token", "粘贴令牌对": "Colar par de tokens", "粘贴你本人已授权的 GitHub OAuth 令牌(不是设备码或 Copilot 短令牌)。令牌仍需由 GitHub 验证并交换;CLI 专用令牌可能不支持编辑器令牌交换。": "Cole o token GitHub OAuth autorizado por você, não um código de dispositivo nem token temporário Copilot. O GitHub ainda precisa validá-lo e trocá-lo; tokens exclusivos da CLI podem não aceitar troca por tokens do editor.", "粘贴完整登录凭证 JSON,或只填模型凭证 llmToken。仅模型凭证可对话;积分、续期和奖励需要登录凭证 accessToken。": "Cole o JSON completo de login ou somente a credencial de modelo llmToken. Apenas a credencial de modelo permite chat; pontos, renovação e recompensas exigem accessToken.", "粘贴智谱清言的访问令牌(JWT,三段点分)。获取方式:浏览器打开 chatglm.cn 并登录后,在开发者工具的 Application → Cookies 里复制 chatglm_token 的值(也可以直接粘 chatglm_token=…; 整行)。粘贴后会先向上游校验一次,校验通过才落账号;登录账号的积分、签到能力都能用,之后由网关自动续期(上游有续期接口)。": "Cole um token de acesso do Zhipu Qingyan (um JWT com três partes separadas por ponto). Como obter: abra chatglm.cn no navegador, faça login e copie o valor do cookie chatglm_token em Application → Cookies nas ferramentas de desenvolvedor (colar a linha chatglm_token=…; inteira também funciona). O token é verificado uma vez na origem após a colagem, e a conta só é salva se passar; contas conectadas têm pontos e check-in, e o gateway renova automaticamente depois (a origem tem API de renovação).", "粘贴登录凭据": "Colar credenciais de login", "粘贴的是登录 session(同时是模型网关的 token)。Loomy 没有续期接口,session 有效期约 14 天,过期后重新登录即可。": "O que você cola é a sessão de login (que também é o token do gateway de modelos). O Loomy não tem API de renovação; a sessão vale cerca de 14 dias, então basta entrar de novo após expirar.", "粘贴网关凭据": "Colar credenciais do gateway", "粘贴网页登录凭证": "Colar credenciais de login web", "粘贴网页登录态 cookie monkeycode_ai_session 的值(在浏览器里复制整段 Cookie 直接粘贴也行,网关会自己剥出值)。
    {siteNote}
    MonkeyCode 没有续期接口:session 有效期约 30 天(硬限制),过期后重新登录网页、再粘贴一次即可。": "Cole o valor do cookie de sessão de login web monkeycode_ai_session (copiar o Cookie inteiro no navegador e colar diretamente também funciona; o gateway extrai o valor sozinho).
    {siteNote}
    O MonkeyCode não tem API de renovação: a sessão vale cerca de 30 dias (limite rígido); quando expirar, entre novamente no site e cole mais uma vez.", "粘贴网页访问令牌": "Colar token de acesso web", "粘贴访问令牌": "Cole o token de acesso", "系统浏览器": "Navegador do sistema", "系统浏览器可复用已有登录态(国际版推荐);内嵌窗口更干净。": "O navegador do sistema pode reaproveitar a sessão de login existente (recomendado para a edição internacional); a janela embutida é mais limpa.", "系统浏览器打开(复用已登录的 Cline 账号);完成后自动加入列表": "Abre no navegador do sistema (reaproveita a conta Cline já conectada); ao concluir, entra automaticamente na lista", "系统浏览器打开(复用已登录的 Google 账号);完成后自动加入列表": "Abre no navegador do sistema (reutiliza a conta Google já conectada); ao concluir, entra automaticamente na lista", "系统浏览器打开(复用已登录的 Zai / Google 账号);完成后自动加入列表": "Abre no navegador do sistema (reaproveita a conta Zai / Google já conectada); ao concluir, entra automaticamente na lista", "系统浏览器打开(复用已登录的美团账号);完成后自动加入列表": "Abre no navegador do sistema (reaproveita a conta Meituan já conectada); ao concluir, entra automaticamente na lista", "系统浏览器打开(复用已登录账号);完成后自动加入列表": "Abre no navegador do sistema (reaproveita a conta já conectada); ao concluir, entra automaticamente na lista", "系统默认浏览器": "Navegador padrão do sistema", "组织登录地址(Start URL)": "Endereço de login da organização (Start URL)", "继续新建独立提供商": "Criar um provedor separado", "续期令牌": "Token de atualização", "编码套餐 API Key": "API Key do Coding Plan", "网关 Secret": "Segredo do gateway", "网关未返回有效的手动回调输入契约;请更新网关后重新发起。": "O gateway não retornou um contrato válido de entrada de callback manual. Atualize o gateway e inicie novamente.", "网页 Cookie": "Cookie web", "网页登录": "Login web", "网页登录 / 填写凭证": "Login web / Inserir credenciais", "网页登录的打开方式": "Como abrir o login web", "网页登录(Zai / Google)": "Login web (Zai / Google)", "网页访问令牌": "Token de acesso web", "腾讯 TokenHub 国内版(按量)": "Tencent TokenHub (China, por uso)", "腾讯 TokenHub 国内站按量 API;使用 TokenHub API Key,不是 Token Plan 套餐或 WorkBuddy 凭证": "API por uso do Tencent TokenHub China; use uma API Key do TokenHub, não credenciais do Token Plan ou do WorkBuddy", "腾讯 TokenHub 国际版(按量)": "Tencent TokenHub (Internacional, por uso)", "腾讯 TokenHub 国际站按量 API;使用 TokenHub API Key,不是 Token Plan 套餐或 WorkBuddy 凭证": "API por uso do Tencent TokenHub Internacional; use uma API Key do TokenHub, não credenciais do Token Plan ou do WorkBuddy", "自定义": "Personalizado", "自建聚合面板:填你自己的站点地址。余额查询用该账号的 API Key 打 {base}/v1/usage,不需要额外配置": "Painel de agregação próprio: preencha o endereço do seu site. A consulta de saldo chama {base}/v1/usage com a chave de API desta conta; sem configuração extra", "自建聚合面板:填你自己的站点地址;余额查询要另填 NewAPI 的个人访问令牌(见下方「余额查询」一段)": "Painel de agregação próprio: preencha o endereço do seu site; a consulta de saldo precisa também de um token de acesso pessoal do NewAPI (veja \"Consulta de saldo\" abaixo)", "获取风控配置失败,将直接尝试领取:{message}": "Falha ao obter a configuração de controle de risco; tentando resgatar diretamente: {message}", "获取风控配置失败:{message}": "Não foi possível carregar as configurações de verificação: {message}", "获取验证码": "Obter código", "要添加到其他站点,请返回「已建 API」重新选择": "Para adicionar a outro site, volte a APIs configuradas e selecione-o", "解锁 Premium": "Desbloquear Premium", "访客模式": "Modo visitante", "访客模式(免登录)": "Modo visitante (sem login)", "访问令牌": "Token de acesso", "该上游无需鉴权(不发送鉴权头)": "Este upstream não exige autenticação (nenhum cabeçalho de autenticação é enviado)", "该地址已有提供商": "Já existe um provedor com este endereço", "该提供商": "Este provedor", "该提供商已不存在或地址已变更,请重新选择": "Este provedor não existe mais ou seu endereço mudou; selecione-o novamente", "该提供商已不存在(可能已被删除),请刷新后重试": "Este provedor não existe mais (pode ter sido excluído); atualize e tente novamente", "该提供商账号添加功能即将上线": "A adição de contas deste provedor chega em breve", "该登录需要继续跳转,请在网关桌面面板重新发起。": "Este login exige outro redirecionamento. Reinicie-o no painel desktop do gateway.", "该自定义提供商已不存在(可能已被删除),请刷新后重试": "Este provedor personalizado não existe mais (pode ter sido excluído); atualize e tente novamente", "请使用网页访问令牌,不要填写 sk- 开头的 API Key。": "Use um token de acesso web, não uma API Key que comece com sk-.", "请先选择一个自定义提供商": "Selecione primeiro um provedor personalizado", "请在弹出的滑块中完成验证(官方要求的风控步骤)": "Conclua a verificação no slider exibido (etapa de controle de risco exigida pelo provedor)", "请在插件打开的专用 Chrome 窗口中登录移动云(yun.139.com)。登录成功后会自动读取并验证凭据,随后继续添加账号。": "Entre no China Mobile Cloud (yun.139.com) na janela dedicada do Chrome aberta pelo plugin. Após o login, as credenciais são lidas e verificadas automaticamente, e a conta é adicionada.", "请在插件打开的端砚控制台窗口中登录(支持密码、短信或扫码)。插件会自动读取登录结果并关闭窗口,无需手动关闭;随后按所选方式创建或复用 API Key。新建密钥的明文只显示一次,由插件保存。": "Entre no console do InkStone na janela aberta pelo plugin usando senha, SMS ou QR code. O plugin lê o resultado e fecha a janela automaticamente. Em seguida, cria ou reutiliza uma API Key conforme o método selecionado. O valor de uma nova chave aparece apenas uma vez e é salvo pelo plugin.", "请在插件打开的端砚控制台窗口中登录(支持密码、短信或扫码),然后退出该浏览器:macOS 请按 Cmd+Q(只关闭窗口不够),Linux 请关闭最后一个窗口。插件读取登录结果后会继续处理,并按所选方式创建或复用 API Key。新建密钥的明文只显示一次,由插件保存。": "Entre no console do InkStone na janela aberta pelo plugin usando senha, SMS ou QR code e encerre esse navegador: no macOS, pressione Cmd+Q (fechar a janela não basta); no Linux, feche a última janela. O plugin lê o resultado e cria ou reutiliza uma API Key conforme o método selecionado. O valor de uma nova chave aparece apenas uma vez e é salvo pelo plugin.", "请在系统浏览器完成官方登录。": "Conclua o login oficial no navegador do sistema.", "请在运行网关的机器上打开 PowerShell,执行下面的专用登录命令,并按官方提示完成授权。面板会自动检测登录结果,不需要粘贴凭证。": "Abra o PowerShell na máquina do gateway, execute o comando de login dedicado abaixo e siga as instruções oficiais de autorização. O painel detecta a conclusão automaticamente; não é necessário colar credenciais.", "请在运行网关的机器上打开终端,执行下面的专用登录命令,并按官方提示完成授权。面板会自动检测登录结果,不需要粘贴凭证。": "Abra um terminal na máquina do gateway, execute o comando de login dedicado abaixo e siga as instruções oficiais de autorização. O painel detecta a conclusão automaticamente; não é necessário colar credenciais.", "请填写 11 位大陆手机号": "Informe um número de celular da China continental com 11 dígitos", "请填写 6 位数字验证码": "Informe o código de 6 dígitos", "请填写 Base URL": "Preencha a Base URL", "请填写 {label}": "Preencha {label}", "请填写名称": "Preencha o nome", "请安装并启用对应的提供商插件;列表为空时请刷新后重试。": "Instale e habilite o plugin do provedor correspondente. Se a lista estiver vazia, atualize e tente novamente.", "请完成验证…": "Conclua a verificação…", "请选择客户端凭证文件,或本软件导出的单账号 JSON 文件": "Selecione um arquivo de credenciais do cliente ou um arquivo JSON de conta individual exportado por este aplicativo.", "读取 %APPDATA%/AutoClaw/auth.json 并解密,仅 Windows": "Lê e descriptografa %APPDATA%/AutoClaw/auth.json; somente no Windows", "读取 ~/.cline/data/settings/providers.json,需已在 Cline 客户端登录": "Lê ~/.cline/data/settings/providers.json; requer login no cliente Cline", "读取 ~/.meituan-catpaw/auth.json,需已在 CatPaw 客户端登录": "Lê ~/.meituan-catpaw/auth.json; requer login no cliente CatPaw", "读取本机 KukuAI 客户端登录态(%APPDATA%\\baidugenflowpro\\Network\\Cookies),需已在 KukuAI 客户端登录": "Lê a sessão de login do cliente KukuAI desta máquina (%APPDATA%\\baidugenflowpro\\Network\\Cookies); requer login no cliente KukuAI", "读取本机 OrcaTerm 客户端登录态(%APPDATA%\\com.orcaterm-desktop.app\\data.bin),需已在 OrcaTerm 客户端登录": "Lê o estado de login do cliente OrcaTerm local (%APPDATA%\\com.orcaterm-desktop.app\\data.bin); é preciso estar logado no cliente OrcaTerm", "读取本机已登录豆包工作客户端的 Cookie,每次请求实时读取;客户端需使用 --remote-debugging-port=9342 启动。本软件不修改、关闭或重启客户端。": "Lê os cookies do cliente Doubao Work local conectado a cada solicitação. Inicie o cliente com --remote-debugging-port=9342. Este aplicativo não modifica, fecha ou reinicia o cliente.", "读取本机智谱清言客户端登录态(%APPDATA%\\chatglm\\Network\\Cookies),需已在客户端登录": "Lê o estado de login do cliente 智谱清言 local (%APPDATA%\\chatglm\\Network\\Cookies); o cliente precisa estar conectado", "读取的是网关电脑上已登录的客户端,不是打开面板的电脑;也可改用粘贴凭据。": "Lê o cliente conectado na máquina do gateway, não no computador que exibe o painel. Também é possível colar as credenciais.", "读取网关所在机器上 kiro-cli 或 Kiro IDE 的登录态,不是当前浏览器所在电脑的账号;续期后会写回原处。": "Lê o login do kiro-cli ou Kiro IDE na máquina do gateway, não no computador deste navegador. As credenciais renovadas são gravadas no local original.", "读取运行网关的电脑上已登录的 QuWork,只保存本机引用,不修改官方客户端文件;切换账号后需重新导入。": "Lê o QuWork conectado na máquina do gateway e salva apenas uma referência local, sem alterar arquivos oficiais. Importe novamente após trocar de conta.", "读本机官方客户端(Tencent WorkBuddy / WorkBuddy AI)当前登录的账号:自动定位其凭证目录里最新的登录态文件(需已在本机官方客户端登录)。导入后由网关自动续期,无需跟随 2 小时时效手动换令牌。": "Lê a conta atualmente conectada no cliente oficial (Tencent WorkBuddy / WorkBuddy AI) nesta máquina: o arquivo de sessão mais recente no diretório de credenciais é localizado automaticamente (é preciso estar conectado ao cliente oficial nesta máquina). Após a importação, o gateway renova o token automaticamente — não é preciso trocar tokens manualmente conforme a validade de 2 horas.", "读本机客户端当前登录态(明文 Cookie,无需解密)。客户端运行时 Cookies 文件被独占占用,导入前请先关闭 KukuAI 客户端。": "Lê a sessão de login atual do cliente desta máquina (Cookie em texto claro, sem descriptografia). Com o cliente em execução, o arquivo Cookies fica em uso exclusivo; feche o cliente KukuAI antes de importar.", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。": "Lê a sessão de login atual do cliente desta máquina, em tempo real a cada vez (excluir este registro não afeta a sessão de login do cliente).", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。客户端重新登录后点「刷新 Token」同步。": "Lê a sessão de login atual do cliente desta máquina, em tempo real a cada vez (excluir este registro não afeta a sessão de login do cliente). Após entrar novamente no cliente, clique em \"Atualizar Token\" para sincronizar.", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。客户端重新登录后重新导入即可。": "Lê a sessão de login atual do cliente desta máquina, em tempo real a cada vez (excluir este registro não afeta a sessão de login do cliente). Após entrar novamente no cliente, basta importar de novo.", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。用 Zai / Google 登录客户端的用户走这一条。": "Lê a sessão de login atual do cliente desta máquina, em tempo real a cada vez (excluir este registro não afeta a sessão de login do cliente). Usuários que entram no cliente com Zai / Google devem usar esta opção.", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。这一条归入 {label}。": "Lê a sessão de login atual do cliente desta máquina, em tempo real a cada vez (excluir este registro não afeta a sessão de login do cliente). Esta opção fica em {label}.", "读本机客户端当前登录的 OAuth 令牌(明文 JSON,无需解密)。导入后由网关自动续期,无需跟随客户端的 2 小时时效手动换令牌。": "Lê o token OAuth com que o cliente local está logado (JSON em texto claro, sem descriptografia). Após importar, o gateway renova automaticamente — não é preciso acompanhar a expiração de 2 horas do cliente.", "读本机客户端当前的登录态。客户端的 Cookies 是 DPAPI 加密的(Chromium os_crypt),因此仅 Windows 可用;客户端正在运行时可能读不到该文件,先退出客户端再试即可(也可改用「填写凭证」粘贴令牌)。": "Lê o estado de login atual do cliente local. Os cookies do cliente são criptografados com DPAPI (Chromium os_crypt), portanto isto funciona somente no Windows; o arquivo pode ficar ilegível enquanto o cliente está aberto — feche o cliente e tente de novo (ou use \"Preencher credenciais\" para colar um token).", "豆包工作": "Doubao Work", "账号信息": "Informações da conta", "账号信息不完整,请刷新后重试": "Informações da conta incompletas; atualize e tente novamente", "账号名由插件自动获取,添加后可修改。": "O plugin preenche o nome da conta automaticamente; você pode alterá-lo após adicionar.", "账号已添加,但代理选择未确认保存;请在账号设置中重新检查。": "Conta adicionada, mas o salvamento da seleção de proxy não foi confirmado. Confira nas configurações da conta.", "账号已添加,但未返回账号 ID,无法保存登录代理选择。": "Conta adicionada, mas nenhum ID foi retornado; não foi possível salvar a seleção de proxy do login.", "账号已添加,但请留意:{warning}": "Conta adicionada, mas atenção: {warning}", "账号已添加,但账号列表同步失败,请刷新重试。": "Conta adicionada, mas a sincronização da lista de contas falhou. Atualize e tente novamente.", "账号文件的提供商与当前选择不一致,请选择对应的提供商后再导入": "O arquivo da conta pertence a outro provedor. Selecione o provedor correspondente antes de importar.", "账号版本": "Edição da conta", "账号类型": "Tipo de conta", "账号:{name}
    ": "Conta: {name}
    ", "走 Inference Providers 路由,Key 在 hf.co/settings/tokens 创建": "Usa a rota Inference Providers; crie a Key em hf.co/settings/tokens", "返回提供商列表": "Voltar aos provedores", "还没有可用的提供商。各家提供商的转发与账号实现都在插件包里,装好之后这里就会出现。": "Ainda não há provedores disponíveis. O encaminhamento e o tratamento de contas de cada provedor ficam em pacotes de plugin; eles aparecem aqui assim que um pacote for instalado.", "还没有账号": "Ainda não há contas", "还需完成 AWS 授权:请打开下一步授权页,完成后回填新的完整回调地址。": "A autorização AWS ainda é necessária. Abra a próxima página de autorização e cole a nova URL de callback completa ao concluir.", "还需继续授权,请打开下一步授权页,完成后回填新的完整回调地址。": "É necessária mais uma autorização. Abra a próxima página e, ao concluir, cole a nova URL de callback completa.", "这一家当前不支持网页登录,请改用填写凭证": "Este provedor não suporta login web no momento; use \"Preencher credenciais\"", "这个账号当前没有可自动领的活动(只自动领每日登录赠送积分)": "Esta conta não tem campanhas com resgate automático no momento (apenas os pontos de brinde do login diário são resgatados automaticamente)", "这份额度走「活动套餐」通道:若转发时提示编码套餐已到期,": "Esta cota passa pelo canal \"Start Plan\": se o encaminhamento avisar que o Coding Plan expirou, ", "这里填国内站(modelscope.cn)的账号:请粘贴国内站的令牌。国际站(modelscope.ai)是另一家 provider、另一套账号,两边的令牌不通用。": "Aqui é a conta do site chinês (modelscope.cn): cole o token do site chinês. O site internacional (modelscope.ai) é outro provedor com outra conta; os tokens não são intercambiáveis entre os dois.", "这里填国内站(monkeycode-ai.com)的账号:请粘贴国内站的 session。国际站(monkeycode-ai.net)是另一家 provider、另一套账号,两边的凭证不通用。": "Aqui é a conta do site da China (monkeycode-ai.com): cole a sessão do site da China. O site internacional (monkeycode-ai.net) é outro provedor, com conta própria; as credenciais não são compartilhadas entre os dois.", "这里填国际站(modelscope.ai)的账号:请粘贴国际站的令牌。国内站(modelscope.cn)是另一家 provider、另一套账号,两边的令牌不通用。": "Aqui é a conta do site internacional (modelscope.ai): cole o token do site internacional. O site chinês (modelscope.cn) é outro provedor com outra conta; os tokens não são intercambiáveis entre os dois.", "这里填国际站(monkeycode-ai.net)的账号:请粘贴国际站的 session。国内站(monkeycode-ai.com)是另一家 provider、另一套账号,两边的凭证不通用。": "Aqui é a conta do site internacional (monkeycode-ai.net): cole a sessão do site internacional. O site da China (monkeycode-ai.com) é outro provedor, com conta própria; as credenciais não são compartilhadas entre os dois.", "选择 CatPaw 客户端的登录态文件 auth.json(Windows:C:\\Users\\<你的用户名>\\.meituan-catpaw\\auth.json;macOS / Linux:~/.meituan-catpaw/auth.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端。": "Selecione o arquivo de sessão de login auth.json do cliente CatPaw (Windows: C:\\Users\\\\.meituan-catpaw\\auth.json; macOS / Linux: ~/.meituan-catpaw/auth.json). Após a importação, as credenciais ficam no gateway e podem ser encaminhadas de forma independente — sem depender mais do cliente desta máquina.", "选择 Cline 客户端的登录态文件 providers.json(Windows:C:\\Users\\<你的用户名>\\.cline\\data\\settings\\providers.json;macOS / Linux:~/.cline/data/settings/providers.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端;这一条归入 {label}。": "Selecione o arquivo de sessão de login providers.json do cliente Cline (Windows: C:\\Users\\\\.cline\\data\\settings\\providers.json; macOS / Linux: ~/.cline/data/settings/providers.json). Após a importação, as credenciais ficam no gateway e podem ser encaminhadas de forma independente — sem depender mais do cliente desta máquina; este registro entra em {label}.", "选择 KukuAI 客户端的 Cookies 文件(%APPDATA%\\baidugenflowpro\\Network\\Cookies):它是**二进制** SQLite 数据库(无扩展名,不是 JSON)。导入时读的是你选中文件的副本、不和运行中的客户端抢占用,因此**无需先关闭客户端**。导入后凭证直接落在网关、可独立转发。": "Selecione o arquivo Cookies do cliente KukuAI (%APPDATA%\\baidugenflowpro\\Network\\Cookies): é um banco SQLite **binário** (sem extensão, não é JSON). A importação lê uma cópia do arquivo selecionado e não disputa o bloqueio com o cliente em execução, então **não é preciso fechar o cliente antes**. Após a importação, as credenciais ficam no gateway e podem ser encaminhadas de forma independente.", "选择 OAuth auth.json 的绝对路径(不扫描其他目录)": "Selecionar o caminho absoluto do auth.json OAuth (sem pesquisar outros diretórios)", "选择凭证文件导入": "Importar de arquivo de credenciais", "选择包含 Cookie 的 JSON 对象,或本软件导出的单账号 JSON 文件。导入后可独立使用,不需要持续运行豆包工作客户端。": "Selecione um objeto JSON com cookies ou um JSON de conta única exportado por este aplicativo. A conta importada funciona de forma independente, sem manter o cliente Doubao Work em execução.", "选择包含 Tabbit Cookie / JWT 的 JSON 或文本文件;也可以直接粘贴到上方表单。": "Escolha um arquivo JSON ou de texto com o Cookie / JWT do Tabbit; você também pode colar no formulário acima.", "选择包含该提供商凭证的 JSON 文件,或本软件导出的单账号 JSON 文件。导入后凭证保存在网关,可独立使用。": "Selecione um arquivo JSON com as credenciais deste provedor ou um arquivo JSON de conta individual exportado por este aplicativo. As credenciais importadas ficam armazenadas no gateway e podem ser usadas de forma independente.", "选择官方客户端的登录态凭证文件(workbuddy-desktop.info / workbuddy-desktop-ai.info)或 wb2api 导出的账号 JSON(嵌套 / 扁平形均可)。": "Selecione o arquivo de credenciais de sessão do cliente oficial (workbuddy-desktop.info / workbuddy-desktop-ai.info) ou um JSON de conta exportado pelo wb2api (formato aninhado ou plano).", "选择小浣熊客户端的登录态文件 auth.json(Windows:C:\\Users\\<你的用户名>\\.box-agent\\config\\auth.json;macOS / Linux:~/.box-agent/config/auth.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端。": "Selecione o arquivo de sessão de login auth.json do cliente Raccoon (Windows: C:\\Users\\\\.box-agent\\config\\auth.json; macOS / Linux: ~/.box-agent/config/auth.json). Após a importação, as credenciais ficam no gateway e podem ser encaminhadas de forma independente — sem depender mais do cliente desta máquina.", "选择提供商": "Selecionar provedor", "选择新增账号或重新授权当前注册": "Escolher nova conta ou reautorizar o registro atual", "选择的文件不是合法 JSON": "O arquivo selecionado não é um JSON válido", "选择要添加账号的提供商": "Selecione o provedor para adicionar uma conta", "选择预置客户端": "Escolher cliente predefinido", "重新扫描": "Escanear novamente", "重新授权所选账号(固定原身份和 clientId)": "Reautorizar a conta selecionada (manter identidade e clientId)", "重新读取提供商": "Recarregar provedores", "鉴权": "Autenticação", "阿里云 Token Plan 套餐(国际站)": "Plano Token Plan do Alibaba Cloud (site internacional)", "阿里云百炼 Coding 套餐(国内站)": "Plano Coding do Alibaba Cloud Model Studio (site da China)", "阿里云百炼 Coding 套餐(国际站)": "Plano Coding do Alibaba Cloud Model Studio (site internacional)", "阿里云百炼模型服务(国际站,OpenAI 兼容模式)": "Serviço de modelos Alibaba Cloud Model Studio (site internacional, modo compatível com OpenAI)", "隐藏凭证": "Ocultar credenciais", "需要图形验证码:登录窗口已弹出,请填写后继续": "Captcha necessário: a janela de login foi aberta; preencha para continuar", "需要手动提交授权回调": "Callback de autorização manual necessário", "需要时填写完整 Cookie": "Cole o Cookie completo se necessário", "需要进行人机验证": "Verificação humana necessária", "预置 API": "API predefinida", "领取 CodeArts 每日福利": "Resgatar benefício diário do CodeArts", "领取失败:{message}": "Falha ao resgatar: {message}", "领取并让官方确认": "Resgatar e aguardar confirmação oficial", "风控验证配置不完整,请稍后重试": "Configuração de verificação de controle de risco incompleta; tente novamente mais tarde", "验证码": "Código de verificação", "验证码业务请求超时,请刷新状态后重试": "A operação após a verificação expirou. Atualize o status antes de tentar novamente.", "验证码令牌入池接口不可用": "A API de envio de tokens de verificação está indisponível.", "验证码令牌未全部入池": "O token de verificação não foi aceito no pool.", "验证码令牌池未返回状态": "O pool de tokens de verificação não retornou um status.", "验证码已使用,请重新验证": "Este token de verificação já foi usado. Verifique novamente.", "验证码已发送。收到后填入下方并点「登录并添加」": "Código enviado. Informe-o abaixo e clique em \"Entrar e adicionar\"", "验证码已发送,请查看手机短信": "Código enviado; verifique o SMS", "验证码已发送,请查看手机短信。填入下方并点「登录并添加」即完成登录": "Código enviado; verifique o SMS. Informe-o abaixo e clique em \"Entrar e adicionar\" para concluir o login", "验证码已发送,请查看短信": "Código enviado; verifique as mensagens", "验证码校验失败,请重试": "Falha na verificação do captcha; tente novamente", "验证码校验超时,请重试": "Tempo esgotado na verificação do captcha; tente novamente", "验证码组件不可用,请重试": "Componente de captcha indisponível; tente novamente", "验证码组件初始化超时,请重试": "Tempo esgotado ao inicializar o componente de captcha; tente novamente", "验证码组件加载失败,请检查网络后重试": "Falha ao carregar o componente de captcha; verifique a rede e tente novamente", "验证码组件加载异常,请重试": "Erro ao carregar o componente de captcha; tente novamente", "验证码组件加载超时,请检查网络后重试": "Tempo esgotado ao carregar o componente de captcha; verifique a rede e tente novamente", "验证码组件未加载,请重启应用后重试": "O componente de captcha não foi carregado; reinicie o aplicativo e tente novamente", "验证码组件返回的验证串不完整(请重试)": "O componente de verificação retornou um token incompleto. Tente novamente.", "验证被上游风控拒绝,请稍后重试": "O serviço de segurança do provedor rejeitou a verificação. Tente novamente mais tarde.", "验证请求过于频繁,请稍后重试": "As solicitações de verificação estão muito frequentes. Tente novamente mais tarde.", "默认开启;填 0 关闭(发送「已设为默认浏览器」标记)": "Ativado por padrão; digite 0 para desativar (envia o marcador \"definido como navegador padrão\")", "(免费额度池,模型名带 cline-free/ 前缀)。": " (pool de cota gratuita; nomes de modelo com o prefixo cline-free/).", "(其中 {n} 把恢复为不限制)": " ({n} das quais voltaram a ser ilimitadas)", "(必填)": " (obrigatório)", "(有效期 {window})": "(validade {window})", "(订阅池,模型名带 cline-pass/ 前缀,需要账号有对应订阅)。": " (pool de assinatura; nomes de modelo com o prefixo cline-pass/, e a conta precisa da assinatura correspondente).", ",下一次最快 {minutes} 分钟后": ", próxima tentativa em pelo menos {minutes} min", ",并从 {n} 把 Key 的可用提供商里移除": ", e removido dos provedores permitidos de {n} keys", " · 思考等级 ": " · Nível de raciocínio ", " · 思考等级 {level}": " · Nível de raciocínio {level}", " · 有映射 ": " · Com mapeamento: ", " · 限额中": " · Em cooldown de limite", " → 转发": " → encaminhar para", " 上登记上游模型": " registrar o modelo upstream", " 与 ": " e ", " 个": " modelos", " 个模型 · 已启用 ": " modelos · Ativados: ", " 个账号": " contas", " 会广告它、请求它也会被转发到这家。 支持字母、数字与 ": " passa a anunciá-lo, e as requisições a ele também são encaminhadas para este provedor. Suporta letras, números e ", " 失败": " com falha", " 已发出,等待上游首帧…": " — requisição enviada, aguardando o primeiro frame do upstream…", " 成功 ·": " com sucesso ·", " 这类符号,但不能含空格或换行,且不超过 128 个字符。同一提供商内,同名绑定最多启用一条;已有启用绑定时不能新增,启用备用绑定会自动关闭其他同名绑定。不同提供商可各启用一条同名绑定,用于主备切换。": " símbolos como esses, mas sem espaços nem quebras de linha, e no máximo 128 caracteres. Apenas um vínculo com o mesmo nome pode estar ativado por provedor. Desative o vínculo ativo antes de adicionar outro. Ativar um vínculo de reserva desativa automaticamente os demais. Provedores diferentes podem ativar um vínculo cada com esse nome para failover.", " 里的 ": ": ", "(全局)": "(Global)", "(未选)": "(Não selecionado)", "0 家": "0 provedores", "<上游模型 ID>": "", "<上游模型>": "", "<对外名>": "", "models.dev 补齐:对下游声明 {value}": "Preenchido pelo models.dev: declarado ao downstream como {value}", "{action}映射 {alias}": "{action} mapeamento {alias}", "{id}({name})": "{id} ({name})", "{label}要填 1 ~ 1 亿之间的整数(留空 = {inherit})": "{label} deve ser um número inteiro entre 1 e 100 milhões (vazio = {inherit})", "{label}:{value}(对下游声明的精确值){origin}{suffix}": "{label}: {value} (valor exato declarado ao downstream){origin}{suffix}", "{label}:{value}(对下游声明的精确值){suffix}": "{label}: {value} (valor exato declarado ao downstream){suffix}", "{label}:上游未声明{suffix}": "{label}: não declarado pelo upstream{suffix}", "{label}:上游未声明(下游会按不支持处理){suffix}": "{label}: não declarado pelo upstream (o downstream tratará como não suportado){suffix}", "{label}:不支持{origin}{suffix}": "{label}: Não compatível{origin}{suffix}", "{label}:不支持{suffix}": "{label}: não suportado{suffix}", "{label}:支持{origin}{suffix}": "{label}: Compatível{origin}{suffix}", "{label}:支持{suffix}": "{label}: suportado{suffix}", "{level}(本次指定)": "{level} (especificado desta vez)", "{name}({id})": "{name} ({id})", "{name}(不在该家当前清单里)": "{name} (fora do catálogo atual deste provedor)", "{n} 个": "{n}", "{n} 个映射": "{n} mapeamentos", "{n} 个模型": "{n} modelos", "{n} 字节": "{n} bytes", "{provider}:模型清单为空,等待获取": "{provider}: o catálogo de modelos está vazio, aguardando a busca", "{status}:模型获取失败": "{status}: Falha ao buscar modelos", "{total} 家 · 成功 {done}": "{total} provedores · {done} com sucesso", "{total} 家 · 成功 {done} · 失败 {failed}": "{total} provedores · {done} com sucesso · {failed} com falha", "✅ 已保存 {id} 的能力位({provider})": "✅ Capacidades de {id} salvas ({provider})", "✅ 已导入 {added} 个模型({skipped} 个已存在,跳过)": "✅ {added} modelos importados ({skipped} já existiam, ignorados)", "✅ 已更新 {name} 的思考等级": "✅ Nível de raciocínio de {name} atualizado", "✅ 已添加映射 {name} → {target}({label}){suffix}": "✅ Mapeamento adicionado: {name} → {target} ({label}){suffix}", "✅ 已登记 {name}({label}),但该提供商还没有可用账号,这一行要加上账号后才会显示": "✅ {name} registrado ({label}), mas este provedor ainda não tem contas disponíveis; esta linha só aparecerá depois de adicionar uma conta", "✅ 已登记模型 {name}({label})": "✅ Modelo {name} registrado ({label})", "✅ 已登记自定义模型 {name}({label})": "✅ Modelo personalizado {name} registrado ({label})", "✅ 批量{action}完成:共 {n} 个模型": "✅ Ação em lote concluída ({action}): {n} modelos no total", "✅ 批量{action}完成:共 {n} 个模型(跳过不可删除的 {skipped} 个)": "✅ Ação em lote concluída ({action}): {n} modelos no total ({skipped} não removíveis ignorados)", "。": ".", "。上游清单给的值不准时,在这里改;": ". Quando os valores do catálogo upstream estiverem incorretos, ajuste aqui;", "。同一对外名可在多个提供商各添加一条: 下游用同一个名字请求,网关按账号优先级主备切换,失败自动落到下一个提供商。": ". O mesmo nome externo pode ser adicionado em vários provedores: o downstream solicita com o mesmo nome, o Gateway alterna entre principal e reserva conforme a prioridade das contas e, em caso de falha, passa automaticamente para o próximo provedor.", "「恢复继承」会把这一项交还给上游清单的值。": "“Restaurar herança” devolve este item ao valor do catálogo upstream.", "「来源」列会标成": "A coluna “Origem” será marcada como ", "上下文 / 输出": "Contexto / Saída", "上下文窗口": "Janela de contexto", "上下文窗口 {input} / 最大输出 Token {output} —— 点击修改模型能力": "Janela de contexto {input} / Saída máxima de tokens {output} — clique para editar as capacidades do modelo", "上游 {model}": "Upstream {model}", "上游不认识这个模型名:先点「获取模型」刷新清单,或核对默认绑定指向的上游模型。": "O upstream não reconhece este nome de modelo: clique em “Buscar modelos” para atualizar o catálogo ou confira o modelo upstream apontado pelo vínculo padrão.", "上游原始响应": "Resposta bruta do upstream", "上游可用档位:{levels}": "Níveis compatíveis no upstream: {levels}", "上游固定为 {level},绑定其他等级也无法调高。": "O upstream está fixo em {level}; vincular outro nível não pode aumentá-lo.", "上游已经不再提供这个模型(可能已下线或改了 ID)": "O upstream não oferece mais este modelo (pode ter sido descontinuado ou renomeado).", "上游拒绝了这条登录态:重新登录一次,或把这条账号删掉。": "O upstream rejeitou esta sessão de login: faça login novamente ou exclua esta conta.", "上游未声明": "Não declarado pelo upstream", "上游未声明(下游会按不支持处理)": "Não declarado pelo upstream (o downstream tratará como não suportado)", "上游未部署": "Não implantado no upstream", "上游模型": "Modelo upstream", "上游模型 ID": "ID do modelo upstream", "上游没在预算内给完回答。可以只勾一个账号再测一次,看是普遍慢还是某一个账号慢。": "O upstream não terminou a resposta dentro do orçamento. Marque só uma conta e teste de novo para ver se a lentidão é geral ou de uma conta específica.", "上游没有给出可读的错误说明": "O upstream não forneceu uma descrição de erro legível", "上游没有返回任何模型": "O upstream não retornou nenhum modelo", "上游目录列出了这个模型,但推理端尚未识别;保留在清单中,后续探测成功后自动清除标记": "O catálogo upstream lista este modelo, mas o backend de inferência ainda não o reconhece. Ele permanece no catálogo, e o marcador é removido automaticamente após uma sondagem bem-sucedida.", "上游目录尚未拉到,用的是内置静态清单;点「刷新模型清单」可重试": "O catálogo upstream ainda não foi obtido; usando o catálogo estático integrado. Clique em “Atualizar catálogo de modelos” para tentar de novo", "上游能列出这个模型,但官方客户端不展示它;本仓已默认关闭它的默认绑定(点这一行的开关可以手动打开)": "O upstream lista este modelo, mas o cliente oficial não o exibe; o gateway desativou a vinculação padrão (use o interruptor da linha para ativar manualmente)", "下游客户端": "cliente downstream", "下游请求 ": "Requisição do downstream ", "不展示": "Não exibido", "不影响网关的转发与路由": "Não afeta o encaminhamento nem o roteamento do Gateway", "不支持": "Não suportado", "不覆盖": "Não sobrescrever", "两边原因不一样时各自处理。如果": "Se os motivos forem diferentes em cada lado, trate cada um separadamente. Caso ", "中止测试": "Abortar teste", "仅支持已识别压缩格式的 ZCode;客户端修改压缩格式后可能需要更新适配。": "Apenas formatos de compactação reconhecidos do ZCode são compatíveis. Mudanças no formato pelo cliente podem exigir uma atualização da integração.", "仅本次测试临时生效,不修改账号保存的代理配置。可选「网络代理」页里的节点或强制直连。": "Válido apenas para este teste, sem alterar a configuração de proxy salva na conta. Escolha um nó da página Proxies de Rede ou force conexão direta.", "从这一家的上游拉一份模型清单,勾选要哪些再导入(已添加的不会重复导入)": "Buscar uma vez o catálogo de modelos no upstream deste provedor; marque os desejados e importe (os já adicionados não são importados de novo)", "代理池响应异常": "Resposta inválida do pool de proxies", "以模型本名直发": "Enviar direto com o nome real do modelo", "以这个上游模型发一次最小请求,走真实转发链路": "Enviar uma requisição mínima com este modelo upstream pela rota real de encaminhamento", "例如 gpt-4o": "por exemplo, gpt-4o", "例如 gpt-5.5-preview": "por exemplo, gpt-5.5-preview", "保存": "Salvar", "保存中…": "Salvando…", "保存失败:{message}": "Falha ao salvar: {message}", "保存映射": "Salvar mapeamento", "保存等级": "Salvar nível", "倍率": "Multiplicador", "倍率升序": "Multiplicador crescente", "倍率升序,点击切换为降序": "Multiplicador crescente; clique para alternar para decrescente", "倍率降序": "Multiplicador decrescente", "倍率降序,点击切换为升序": "Multiplicador decrescente; clique para alternar para crescente", "全选当前筛选出的模型(跨分页);再点取消": "Seleciona todos os modelos filtrados no momento (em todas as páginas); clique de novo para desmarcar", "全选当前筛选结果": "Selecionar todos os resultados filtrados", "全选未添加": "Selecionar todos os não adicionados", "全选({n})": "Selecionar tudo ({n})", "全部": "Todos", "全部删除": "Excluir tudo", "全部映射": "todos os mapeamentos", "全部自定义提供商": "Todos os provedores personalizados", "全部({n} 家)": "Todos ({n} provedores)", "共 {n} 家 · 点「获取模型」开始": "{n} provedores · clique em “Buscar modelos” para começar", "关闭": "Fechar", "关闭即中止": "Fechar aborta o teste", "关闭后保留规则,所有请求按原模型处理。": "Ao desativar, as regras são mantidas e todas as requisições usam o modelo original.", "其余 {n} 个会被跳过。": "Os outros {n} serão ignorados.", "内置": "Integrado", "内置提供商": "Provedor integrado", "内置清单": "Catálogo integrado", "再测一次": "Testar novamente", "删除": "Excluir", "删除中…": "Excluindo…", "删除入口未就绪,请重试或重启应用": "O recurso de exclusão ainda não está pronto; tente de novo ou reinicie o aplicativo", "删除全部未挂载映射": "Excluir todos os mapeamentos não vinculados", "删除映射": "Excluir mapeamento", "删除映射 {alias}": "Excluir mapeamento {alias}", "删除未挂载的映射": "Excluir mapeamento não vinculado", "删除自定义提供商": "Excluir provedor personalizado", "删除规则 {n}": "Excluir regra {n}", "删除这个自定义提供商(连同名下账号)": "Excluir este provedor personalizado (junto com suas contas)", "删除这条映射": "Excluir este mapeamento", "删除选中的模型": "Excluir os modelos selecionados", "刷新全部家(逐家打上游)": "Atualizar todos os provedores (cada um acessa o upstream uma vez)", "刷新完成,但没有得到任何结果": "Atualização concluída, mas nenhum resultado foi obtido", "刷新模型管理页里各提供商的远程模型目录,逐家结果列在弹窗里": "Atualiza o catálogo remoto de modelos de cada provedor na página de gerenciamento de modelos; os resultados por provedor aparecem num diálogo", "刷新清单": "Atualizar catálogo", "加载中…": "Carregando…", "勾上它,导入后即进入这家的清单": "Marque para que ele entre no catálogo deste provedor após a importação", "勾几个就并行测几次;默认选队列里最靠前的一个。": "Cada conta marcada roda um teste em paralelo; por padrão, a primeira da fila é selecionada.", "勾选后可批量操作": "Marque para habilitar ações em lote", "压缩模型": "Modelo de compactação", "压缩路由": "Roteamento de compactação", "压缩路由入口尚未就绪,请刷新页面后重试": "O roteamento de compactação ainda não está pronto. Atualize a página e tente novamente.", "压缩路由已保存,下次压缩请求生效": "Roteamento de compactação salvo. Será aplicado à próxima requisição de compactação.", "压缩路由接口返回了不完整的数据": "A API de roteamento de compactação retornou dados incompletos.", "原始 ID 已作为默认绑定,请直接使用该绑定的开关或等级按钮": "O ID original já é o vínculo padrão; use diretamente o interruptor ou o botão de nível desse vínculo", "原始 ID 的默认绑定不能删除,请关闭它的开关": "O vínculo padrão do ID original não pode ser excluído. Desative-o pelo botão de alternância.", "取消": "Cancelar", "另有 {n} 个非手动登记的模型将被跳过。": "Mais {n} modelos que não são de registro manual serão ignorados.", "另有 {n} 条别名映射({aliases}),别名不参与本次": "Há ainda {n} mapeamentos de alias ({aliases}); os aliases não participam desta vez", "只刷新这一家的模型清单": "Atualizar apenas o catálogo deste provedor", "只在识别到 ZCode 上下文压缩请求时切换模型,普通对话仍使用原模型。": "Troca o modelo apenas em requisições reconhecidas de compactação de contexto do ZCode. As conversas normais continuam usando o modelo original.", "只属于这一家": "exclusivo deste provedor", "可删除 {n} 个(手动登记 / 自定义家);": "{n} podem ser excluídos (registro manual / provedor personalizado);", "可见": "Visível", "可见性": "Visibilidade", "可配思考档位": "Níveis de raciocínio configuráveis", "同一客户端的来源模型不能重复:{model}": "O modelo de origem não pode se repetir para o mesmo cliente: {model}", "同一条错误出现在所有账号上": "o mesmo erro apareça em todas as contas", "后端桥不可用": "A ponte do backend não está disponível", "启用压缩路由": "Ativar roteamento de compactação", "启用后将自动关闭该提供商的其他同名绑定:{bindings}": "Ao ativar, os outros vínculos com o mesmo nome neste provedor serão desativados automaticamente: {bindings}", "启用规则 {n}": "Ativar regra {n}", "回复": "Resposta", "固定思考档位": "Nível de raciocínio fixo", "固定思考档位:{level}": "Nível de raciocínio fixo: {level}", "图片": "Imagem", "图片生成": "Geração de imagens", "图片生成模型请通过 /v1/images/generations 调用,暂不支持对话测试": "Use /v1/images/generations para modelos de imagem; testes de conversa ainda não são compatíveis", "图片编辑": "Edição de imagens", "图片识别": "Reconhecimento de imagens", "圆点带内侧描边 = 由 models.dev 补齐;右上角小点 = 你手动覆盖过;虚线圈 = 未声明。悬停某一枚可看逐项出处。": "Ponto com anel interno = preenchido pelo models.dev; ponto no canto = você substituiu; anel tracejado = não declarado. Passe o mouse sobre um ponto para ver a origem de cada valor.", "在 ": "Em ", "填上游真正认识的那个模型 ID(不是给下游用的名字)。登记后它会进入该家的模型清单: 表格里出现这一行、": "Informe o ID do modelo que o upstream realmente reconhece (não o nome usado pelo downstream). Após o registro, ele entra no catálogo deste provedor: aparece nesta linha da tabela e ", "复制": "Copiar", "多半是上游自己的问题,过一会儿再试。同一个错误出现在所有账号上时,先查模型目录与映射。": "Provavelmente é problema do próprio upstream; tente de novo mais tarde. Se o mesmo erro aparecer em todas as contas, verifique primeiro o catálogo de modelos e os mapeamentos.", "失败": "Falha", "失败 {n} 个 · 首个失败:{error}": "{n} com falha · primeira falha: {error}", "如果 ZCode 已设置压缩路由,网关看到的是它改写后的模型。建议同一套规则只在一处配置。": "Se o ZCode já tiver roteamento de compactação configurado, o gateway recebe o modelo já alterado. Configure o mesmo conjunto de regras em apenas um lugar.", "完成": "Concluir", "官方客户端会展示这个模型": "O cliente oficial exibe este modelo", "对下游声明的能力(工具调用 / 图片识别 / 视频识别 / 支持思考)—— 点击修改": "Capacidades declaradas ao downstream (chamada de ferramentas / reconhecimento de imagens / reconhecimento de vídeo / suporte a raciocínio) — clique para editar", "对外名可以是中文、字母、数字与 ": "Nomes públicos aceitam caracteres chineses, letras, números e ", "对外名可自由命名,允许与上游模型 ID 同名(同名时该上游的原生路由优先,映射作兜底); 支持字母、数字与 ": "O nome externo é livre, podendo até ser igual ao ID do modelo upstream (em caso de nome igual, a rota nativa do upstream tem prioridade e o mapeamento serve de reserva); aceita letras, números e ", "对外映射名(下游请求时用)": "Nome externo do mapeamento (usado nas requisições do downstream)", "对话协议": "Protocolo de conversa", "对话协议的说明": "Sobre o protocolo de conversa", "对选中的 {n} 个模型执行批量操作": "Executar ações em lote nos {n} modelos selecionados", "导入失败:{message}": "Falha na importação: {message}", "导入选中的 {n} 个模型": "Importar os {n} modelos selecionados", "将作用于以下模型": "Será aplicado aos seguintes modelos", "尚未获取": "Ainda não buscado", "尚未配置压缩规则,默认使用原模型。": "Nenhuma regra de compactação configurada. O modelo original é usado por padrão.", "尝试 {n} 次": "{n} tentativas", "展开其余 {n} 个模型 ▾": "Mostrar os outros {n} modelos ▾", "工具": "Ferramentas", "工具调用": "Chamada de ferramentas", "已中止在途测试({n} 个账号)": "Testes em andamento abortados ({n} contas)", "已删除 {n} 条未挂载映射": "{n} mapeamentos não vinculados excluídos", "已刷新": "Atualizado", "已启用": "Ativados", "已启用 {name},其他同名绑定已自动关闭": "{name} ativado. Os outros vínculos com o mesmo nome foram desativados automaticamente.", "已填写:对下游声明 {value}": "Preenchido: declarado ao downstream como {value}", "已添加": "Adicionado", "已等待 {seconds}s": "Aguardando {seconds}s", "已覆盖上游值": "Valor do upstream substituído", "已覆盖:对下游声明 {value}": "Substituído: declarado ao downstream como {value}", "已选 ": "Selecionados: ", "已选 {picked} 个 · 上游共 {upstream} 个 · 清单已有 {managed} 个": "{picked} selecionados · {upstream} no upstream · {managed} já no catálogo", "开始测试": "Iniciar teste", "当前环境不支持代理池": "O ambiente atual não suporta pool de proxies", "当前环境不支持读取 API Key": "Este ambiente não pode carregar API Keys", "当前通道未声明可用档位,映射等级不会注入;请先获取模型目录。": "Esta rota não declarou níveis compatíveis. Os níveis do mapeamento não serão injetados; busque primeiro o catálogo de modelos.", "待获取": "Pendente", "思考": "Raciocínio", "思考等级": "Nível de raciocínio", "思考等级 {level}": "Nível de raciocínio {level}", "思考等级 {level}(点击修改)": "Nível de raciocínio {level} (clique para editar)", "思考等级的注入规则": "Regras de injeção do nível de raciocínio", "思考过程({n} 字)": "Processo de raciocínio ({n} caracteres)", "恢复继承": "Restaurar herança", "成功 {ok} 个,失败 {failed} 个": "{ok} com sucesso, {failed} com falha", "所选 API Key 无权调用此模型或提供商": "A API Key selecionada não pode acessar este modelo ou provedor", "所选模型含同一提供商的同名绑定「{id}」,请分别启用,避免相互关闭": "Os modelos selecionados têm vínculos chamados “{id}” no mesmo provedor. Ative-os separadamente para evitar que desativem uns aos outros.", "所选模型没有共同可用档位,请分别设置或清除绑定。": "Os modelos selecionados não têm um nível compatível em comum. Configure cada um ou limpe as vinculações.", "手动": "Manual", "手动登记": "Registro manual", "手动登记的上游模型;移除它会直接删掉这条登记": "Modelo upstream de registro manual; removê-lo apaga este registro diretamente", "执行{action}": "Executar: {action}", "批量{action}完成:成功 {ok} 个,失败 {failed} 个": "Ação em lote concluída ({action}): {ok} com sucesso, {failed} com falha", "批量操作": "Ações em lote", "批量操作 · 已选 {n} 个模型": "Ações em lote · {n} modelos selecionados", "按倍率升序排列": "Ordenar por multiplicador crescente", "按倍率排序": "Ordenar por multiplicador", "按可见性筛选": "Filtrar por visibilidade", "按客户端发送的模型 ID 匹配,支持模型别名和对话路由组;每次只映射一次。": "Corresponde ao ID do modelo enviado pelo cliente. Aceita aliases e grupos de roteamento de conversa; cada requisição é mapeada uma única vez.", "按所选网关对话协议组装请求并校验响应转换(Chat Completions / Responses / Anthropic Messages)。": "Monta a requisição e valida a conversão da resposta usando o protocolo selecionado do gateway (Chat Completions / Responses / Anthropic Messages).", "按提供商分组排序,已启用模型优先;未知倍率排在末尾": "Ordena dentro dos grupos de provedores, com modelos ativados primeiro; multiplicadores desconhecidos ficam no final", "按提供商选择": "Selecionar por provedor", "按状态筛选": "Filtrar por estado", "提供商": "Provedor", "搜索模型": "Buscar modelos", "搜索模型 ID / 名称 / 映射名…": "Buscar ID / nome / nome de mapeamento do modelo…", "搜索模型 ID / 提供商": "Buscar ID do modelo / provedor", "搜索模型 ID…": "Buscar ID do modelo…", "搜索账号…": "Buscar conta…", "操作": "Ação", "支持": "Suportado", "支持思考": "Suporte a raciocínio", "收起 ▴": "Recolher ▴", "放弃尚未保存的压缩路由修改?": "Descartar as alterações não salvas no roteamento de compactação?", "数字带虚线底 = 由 models.dev 补齐;右上角小点 = 你手动覆盖过;— = 未声明。点任意一格可改。": "Número com sublinhado pontilhado = preenchido pelo models.dev; ponto no canto = você substituiu; — = não declarado. Clique em qualquer célula para editar.", "新建一个自定义提供商(同时创建它的第一个账号)": "Criar um novo provedor personalizado (criando também sua primeira conta)", "映射、思考等级、上下文窗口与工具调用能力在桌面端「模型管理」里改;手机端只做启停。": "Mapeamentos, níveis de raciocínio, janelas de contexto e capacidade de chamada de ferramentas são editados no desktop em “Model management”; no mobile só é possível ativar/desativar.", "映射「{alias} → {target}」不存在": "O mapeamento “{alias} → {target}” não existe", "映射上未绑定思考等级,「跟随映射」等于这次不注入": "Não há nível de raciocínio vinculado ao mapeamento; “Seguir mapeamento” equivale a não injetar desta vez", "映射已关闭": "Mapeamento desativado", "映射已关闭,点击启用": "Mapeamento desativado, clique para ativar", "映射已删除": "Mapeamento excluído", "映射已启用": "Mapeamento ativado", "映射已启用,其他同名绑定已自动关闭": "Mapeamento ativado. Os outros vínculos com o mesmo nome foram desativados automaticamente.", "映射已启用,点击关闭": "Mapeamento ativado, clique para desativar", "映射已绑定思考等级 {level},可用时会优先覆盖本次指定的等级": "Este mapeamento vincula o nível de raciocínio {level}; quando compatível, ele substitui o nível especificado para este teste", "暂无模型(请先添加账号)": "Nenhum modelo por enquanto (adicione uma conta primeiro)", "更新日期": "Data de atualização", "最多可添加 {n} 条压缩规则": "Você pode adicionar até {n} regras de compactação.", "最大输出 Token": "Saída máxima de tokens", "有映射": "Com mapeamento", "未填写": "Não preenchido", "未填写(下游按未声明处理)": "Não preenchido (o downstream trata como não declarado)", "未声明": "Não declarado", "未挂载映射:已删除 {removed} 条,失败 {failed} 条。首个失败:{error}": "Mapeamentos não vinculados: {removed} excluídos, {failed} falharam. Primeiro erro: {error}", "未挂载的模型映射": "Mapeamentos de modelo não vinculados", "未接入": "Não conectado", "未添加": "Não adicionado", "未知": "Desconhecido", "本机网关没有返回结论": "O Gateway local não retornou um veredito", "本次没有取到新内容": "Nenhum conteúdo novo foi obtido desta vez", "本次测试的发送口径": "Critério de envio deste teste", "来源": "Origem", "来源未知": "Origem desconhecida", "来源模型": "Modelo de origem", "来源模型和压缩模型不能相同": "O modelo de origem e o de compactação devem ser diferentes.", "来自上游目录接口,清单拉取于 {at};刷新失败时保留上一份成功结果": "Vem da API de catálogo do upstream; catálogo obtido em {at}; se a atualização falhar, mantém o último resultado bem-sucedido", "来自上游目录接口;刷新失败时保留上一份成功结果": "Vem da API de catálogo do upstream; se a atualização falhar, mantém o último resultado bem-sucedido", "桥接调用返回空(本机网关没有响应这次测试)": "A chamada de ponte retornou vazio (o Gateway local não respondeu a este teste)", "模型 ID「{id}」在该提供商已有启用绑定,请先关闭它再添加": "O ID de modelo “{id}” já tem um vínculo ativado neste provedor. Desative-o antes de adicionar outro.", "模型 ID「{id}」已存在,请使用已有模型": "O ID de modelo “{id}” já existe. Use o modelo existente.", "模型 ID「{id}」已绑定到此上游模型,请直接使用已有绑定": "O ID de modelo “{id}” já está vinculado a este modelo upstream. Use o vínculo existente.", "模型「{name}」已存在(忽略大小写判重)": "O modelo “{name}” já existe (duplicidade verificada sem diferenciar maiúsculas de minúsculas)", "模型已移除": "Modelo removido", "模型数": "Nº de modelos", "模型映射": "Mapeamento de modelo", "模型来源": "Origem do modelo", "模型清单为空:已有可用账号,请点「获取模型」拉取目录": "O catálogo de modelos está vazio. Há contas disponíveis; clique em “Buscar modelos” para obtê-lo.", "模型清单已刷新": "Catálogo de modelos atualizado", "模型目录刷新不可用,请重新打开面板": "A atualização do catálogo de modelos está indisponível. Reabra o painel.", "模型目录刷新结果": "Resultados da atualização do catálogo de modelos", "模型管理表": "Tabela de gerenciamento de modelos", "模型能力": "Capacidades do modelo", "模型获取失败": "Falha ao buscar modelos", "正在刷新…": "Atualizando…", "正在测 ": "Testando ", "正在获取…": "Buscando…", "正在读取压缩路由…": "Carregando rotas de compactação…", "每条映射 = 对外名 → 上游模型;原始 ID 与别名有独立开关,默认绑定永远存在(没有映射时是合成的那条)。": "Cada mapeamento = nome externo → modelo upstream; o ID original e os aliases têm interruptores próprios, e o vínculo padrão sempre existe (quando não há mapeamento, é o sintético).", "没有匹配「{keyword}」的模型": "Nenhum modelo corresponde a “{keyword}”", "没有匹配当前筛选的模型": "Nenhum modelo corresponde ao filtro atual", "没有匹配的模型": "Nenhum modelo correspondente", "没有可选的对话模型,请先启用模型和对应账号。": "Nenhum modelo de conversa disponível. Ative um modelo e a conta correspondente primeiro.", "没有选中任何模型": "Nenhum modelo selecionado", "没有选中的模型": "Sem modelos selecionados", "流式请求": "Requisição em streaming", "流式请求的说明": "Explicação da requisição em streaming", "测试": "Testar", "测试未通过": "Teste não aprovado", "测试模型": "Testar modelo", "测试结果": "Resultado do teste", "测试节点": "Nó de teste", "测试节点的说明": "Sobre o nó de teste", "测试账号": "Contas de teste", "测试账号的说明": "Explicação das contas de teste", "添加模型映射": "Adicionar mapeamento de modelo", "添加自定义模型": "Adicionar modelo personalizado", "清空": "Limpar", "清除覆盖,回到上游声明值": "Limpar substituição e voltar ao valor declarado pelo upstream", "清除这一项(回到未声明)": "Limpar este item (voltar a não declarado)", "清除(不覆盖)": "Limpar (não sobrescrever)", "点击复制:{name}": "Clique para copiar: {name}", "点右侧「获取模型」从上游拉取这家的模型清单": "Clique em “Buscar modelos” à direita para buscar o catálogo deste provedor no upstream", "用哪个账号去拉这家的模型清单": "Qual conta usar para buscar o catálogo de modelos deste provedor", "用户提示词": "Prompt do usuário", "用户登记的自定义模型;整份清单只属于这一家": "Modelos personalizados registrados por você; a lista inteira pertence só a este provedor", "用时 {time}": "Duração {time}", "用时 {time} · 首字 {ttfb}": "Duração {time} · 1º token {ttfb}", "留空则不携带;设置页的提示词模式照常生效": "Se vazio, não é enviado; o modo de prompt da página de configurações continua valendo", "留空用默认问候「你好」": "Se vazio, usa a saudação padrão “Olá”", "的模型合集:每家的清单互相独立,别名也只在自己那家内生效;要改名称 / 协议 / Base URL,到账号页该家账号的「设置」→ 提供商一栏。": " coleção de modelos: a lista de cada provedor é independente e os apelidos só valem dentro do próprio provedor; para mudar nome / protocolo / Base URL, vá à conta desse provedor na página de Contas → \"Configurações\" → seção do provedor.", "目录模块未就绪": "Módulo de catálogo não está pronto", "目标使用自身的思考设置或默认值,仍受网关 Key 权限限制;不可用时明确报错,不自动退回原模型。": "O destino usa suas próprias configurações de raciocínio ou os valores padrão e continua sujeito às permissões da chave do gateway. Se estiver indisponível, retorna um erro sem voltar automaticamente ao modelo original.", "目标已下线": "Destino descontinuado", "直接移除": "remover diretamente", "直连(不使用代理)": "Conexão direta (sem proxy)", "看的能力声明(": " consulta (", "真实链路 · 消耗少量额度 · 日志带「测试」标记,不计报表": "Rota real · consome pouca cota · log marcado como “Teste”, fora dos relatórios", "确定删除映射「{alias} → {target}」?": "Excluir o mapeamento “{alias} → {target}”?", "确定删除映射「{alias} → {target}」?它指向的上游模型已不在清单里。": "Excluir o mapeamento “{alias} → {target}”? O modelo upstream para o qual ele aponta não está mais no catálogo.", "确定删除映射「{alias} → {target}」?它指向的上游模型已不在清单里。": "Excluir o mapeamento “{alias} → {target}”? O modelo upstream para o qual ele aponta não está mais no catálogo.", "确定删除此区域列出的全部 {n} 条未挂载映射?此操作不可撤销,不会删除正常挂载的映射或模型。": "Excluir todos os {n} mapeamentos não vinculados listados nesta seção? Esta ação não pode ser desfeita. Os mapeamentos vinculados e os modelos não serão excluídos.", "确定删除选中的 {count} 个模型登记?删除后 /v1/models 不再广告它们、请求也会被拒。": "Excluir os {count} registros de modelo selecionados? Depois da exclusão, o /v1/models deixa de anunciá-los e as requisições serão recusadas.", "确定移除自定义模型「{id}」?这条登记会被直接移除,之后 /v1/models 不再广告它、请求它也会被拒。": "Remover o modelo personalizado “{id}”? Este registro será removido diretamente; depois disso, o /v1/models deixa de anunciá-lo e as requisições a ele serão recusadas.", "确认桌面端还在运行,再重试一次。": "Confirme que o app desktop ainda está em execução e tente novamente.", "确认选择": "Confirmar seleção", "社区参考档位,不代表当前上游通道支持;实际以该通道目录为准。": "Níveis de referência da comunidade não garantem compatibilidade nesta rota upstream; o catálogo da rota tem prioridade.", "社区参考档位:{levels}": "Níveis de referência da comunidade: {levels}", "移除": "Remover", "移除自定义模型": "Remover modelo personalizado", "系统提示词": "Prompt de sistema", "绑定 {requested},按当前通道将发送 {effective}。": "Vinculado a {requested}; esta rota enviará {effective}.", "绑定在「对外名 → 上游模型」这一条映射上的思考等级(列表照抄 OmniProxy 的手动绑定),选「不覆盖」表示不给这条映射指定等级。它会跟着这条映射注入转发,由承载的那家翻译成自己的档位字段(CatPaw 归并成 low/high/max,Qoder 按模型声明的档位归一)。以下几种情况故意不注入:① off / none(关闭思考)—— 本项目没有安全的表达方式;② 表外的自定义等级(各家能力范围不同,无法判断上游收不收);③ 客户端请求体里已经自己指定了档位(那是更明确的意图,绑定不覆盖);④ 这家上游不认识档位字段(如 WorkBuddy / 小浣熊 / AutoClaw / Cline)。注入与跳过都会写进详细日志。": "Nível de raciocínio vinculado a este mapeamento de “nome externo → modelo upstream” (a lista reproduz os vínculos manuais do OmniProxy); escolher “Não sobrescrever” significa não atribuir nível a este mapeamento. Ele é injetado no encaminhamento junto com este mapeamento e o provedor que o atende o traduz para o campo de nível próprio (o CatPaw agrupa em low/high/max; o Qoder normaliza conforme os níveis declarados pelo modelo). Os casos a seguir não são injetados de propósito: ① off / none (raciocínio desligado) — este projeto não tem uma forma segura de expressá-los; ② níveis personalizados fora da tabela (as capacidades variam entre provedores e não dá para saber se o upstream aceita); ③ o corpo da requisição do cliente já especifica um nível (intenção mais explícita, e o vínculo não sobrescreve); ④ o upstream deste provedor não reconhece o campo de nível (como WorkBuddy / Raccoon / AutoClaw / Cline). Tanto a injeção quanto a omissão vão para o log detalhado.", "继承上游": "Herdar do upstream", "继承上游 {value}": "Herdar do upstream {value}", "继承上游:{value}": "Herdar do upstream: {value}", "网关未返回保存后的提供商记录": "O gateway não retornou o registro do provedor salvo.", "网关未返回逐家模型目录刷新结果": "O gateway não retornou resultados de atualização do catálogo por provedor", "能力": "Capacidades", "自定义 · 全部": "Personalizados · todos", "自定义家": "Provedor personalizado", "自定义提供商": "Provedor personalizado", "自定义提供商的清单": "Catálogo do provedor personalizado — ", "自定义提供商还没有模型:先在左栏选一家,点「添加模型」登记,或「获取上游模型」从上游拉取": "Este provedor personalizado ainda não tem modelos: escolha um na coluna à esquerda, clique em \"Adicionar modelo\" para registrar, ou \"Buscar modelos upstream\" para puxar do upstream", "自定义模型已移除": "Modelo personalizado removido", "自定义等级": "Nível personalizado", "自定义等级…": "Nível personalizado…", "自定义等级(例如 custom-high)": "Nível personalizado (por exemplo, custom-high)", "至少选一个测试账号": "Selecione pelo menos uma conta de teste", "节点 {proxy}": "Nó {proxy}", "获取": "Buscar", "获取中…": "Buscando…", "获取失败:{message}": "Falha ao buscar: {message}", "获取模型": "Buscar modelos", "获取模型 — {name}": "Buscar modelos — {name}", "规则 {n}": "Regra {n}", "规则不绑定提供商,压缩模型由其路由配置决定使用哪家提供商。": "As regras não são vinculadas a um provedor. A configuração de roteamento do modelo de compactação determina qual provedor será usado.", "视频": "Vídeo", "视频识别": "Reconhecimento de vídeo", "设置 / 清除会应用到选中模型的": "Definir / limpar se aplica a ", "设置思考等级": "Definir nível de raciocínio", "设置思考等级后,会覆盖下游请求中的等级;选择“不覆盖”则保留下游参数。实际档位以提供商支持范围为准,无法注入时保留原请求并记录原因。off / none 仍不由映射注入。": "O nível de raciocínio configurado substitui o nível enviado nas requisições downstream. Escolha “Não sobrescrever” para preservar os parâmetros downstream. O nível efetivo depende do suporte do provedor; se não puder ser aplicado, a requisição original será preservada e o motivo será registrado no log. Os mapeamentos continuam sem injetar off / none.", "设置思考等级(当前未绑定)": "Definir nível de raciocínio (sem vínculo atual)", "该提供商已不存在(可能已被删除),请刷新列表": "Este provedor não existe mais (talvez tenha sido excluído); atualize a lista", "该提供商当前没有可选的上游模型": "Este provedor não tem modelos upstream disponíveis no momento", "该提供商没有可用账号(要在账号页启用一个、且凭证完整),一行都发不出去": "Este provedor não tem contas disponíveis (ative uma na página de contas e garanta credenciais completas); nenhuma linha pode ser enviada", "该提供商的清单里没有模型「{name}」": "O catálogo deste provedor não tem o modelo “{name}”", "该等级无法注入,请选择上游可用档位或清除绑定。": "Este nível não pode ser injetado. Selecione um nível compatível no upstream ou limpe a vinculação.", "该行当前未启用:测试照常按本名直发(「先测通、再决定要不要启用」正是这颗按钮的用法),但本行的思考等级绑定不参与本次,生产路由也要等绑定打开后才会放行": "Esta linha não está ativada no momento: o teste é enviado normalmente com o nome real (é justamente para isso que este botão serve: testar antes de decidir ativar), mas o vínculo de nível de raciocínio desta linha não participa desta vez, e o roteamento de produção só será liberado depois que o vínculo for ativado", "该账号对这个模型正在限额冷却,等一会儿自己会好;也可以先测别的账号。": "Esta conta está em cooldown de limite para este modelo; deve melhorar sozinho em breve, ou teste outra conta enquanto isso.", "说明": "Descrição", "请先选择一把 API Key": "Selecione uma API Key primeiro", "请填写上游模型 ID": "Informe o ID do modelo upstream", "请填写对外映射名": "Informe o nome externo do mapeamento", "请填写模型 ID": "Informe o ID do modelo", "请填写自定义思考等级,或改选候选档 / 「清除」": "Informe um nível de raciocínio personalizado ou selecione um nível da lista / “Limpar”", "请完整选择来源模型和压缩模型": "Selecione o modelo de origem e o modelo de compactação.", "请选择受支持的客户端": "Selecione um cliente compatível.", "请选择提供商": "Selecione um provedor", "读取模型清单失败:{message}": "Falha ao ler o catálogo de modelos: {message}", "账号 ": "Conta ", "跟随映射(当前 {level})": "Seguir mapeamento (atual: {level})", "跟随映射(未绑定等级)": "Seguir mapeamento (sem nível vinculado)", "跟随映射(该行未启用,本次不注入)": "Seguir mapeamento (esta linha não está ativada; sem injeção desta vez)", "跟随账号配置": "Seguir configuração da conta", "跳过": "Ignorado", "转发到上游模型": "Encaminhar para o modelo upstream", "还没有可刷新的提供商:先在账号页添加一个账号": "Ainda não há provedores para atualizar: adicione uma conta na página de contas primeiro", "还没有自定义提供商": "Ainda não há provedores personalizados", "这一行已不在当前清单里(模型被移除、或目录刷新后上游不再提供它)。关闭后刷新列表再试。": "Esta linha não está mais no catálogo atual (o modelo foi removido ou o upstream não o oferece mais após a atualização do catálogo). Feche e atualize a lista para tentar de novo.", "这个模型仍在承载它的提供商清单里,但那一家的模型行当前没有出现(例如该家没有可用账号)": "Este modelo ainda está no catálogo do provedor que o oferece, mas esse provedor não tem linha no momento (por exemplo, sem conta utilizável).", "这个模型在官方客户端里是否会被展列;不展示的那些默认已关闭(含默认绑定)": "Se o cliente oficial exibe este modelo; os não exibidos ficam desativados por padrão (incluindo a vinculação padrão)", "这个模型已经在这家的清单里,不重复导入": "Este modelo já está no catálogo deste provedor e não será importado de novo", "这个模型的图片能力(图片生成 / 图片编辑)—— 点击修改": "Capacidades de imagem deste modelo (geração / edição de imagens) — clique para editar", "这些映射指向的上游模型已不在当前清单里,挂不到任何模型行上:它们不会出现在 /v1/models,用对应别名发请求也会失败。删除后该对外名即可重新使用。": "Os modelos upstream para os quais esses mapeamentos apontam não estão mais no catálogo atual, então eles não se vinculam a nenhuma linha de modelo: não aparecem em /v1/models, e as requisições feitas com o alias correspondente falham. Exclua um para liberar o nome público.", "这些映射指向的上游模型已不在当前清单里,用对应别名发请求会失败。可以在这里删除,删掉后该对外名即可重新使用。": "Os modelos upstream para os quais esses mapeamentos apontam não estão mais no catálogo atual; requisições feitas com o alias correspondente falham. Você pode excluí-los aqui para liberar o nome público.", "这几项是给": "Estes itens são a declaração de capacidades que o ", "这家提供商没有可见性判据(目前只有 Antigravity / Qoder / 小浣熊 / CodeArts 有)": "Este provedor não tem regra de visibilidade (atualmente apenas Antigravity / Qoder / Raccoon / CodeArts)", "这家有可见性判据,但这一条上游没有表态 —— 按可见处理": "Este provedor tem regra de visibilidade, mas o upstream não se pronunciou sobre esta entrada — tratada como visível", "这家没有可用账号(要在账号页启用一个、且凭证完整)": "Este provedor não tem contas disponíveis (ative uma na página de contas e garanta credenciais completas)", "这家用固定模型清单,无可刷新": "Este provedor usa um catálogo fixo de modelos; não há o que atualizar", "这家的模型清单是全局的,不跟账号走": "O catálogo de modelos deste provedor é global e não depende da conta", "这家的清单是你自己登记的,不填的项下游按未声明处理。": "O catálogo deste provedor é registrado por você; itens não preenchidos são tratados como não declarados pelo downstream.", "这家还没有可用账号,刷新会使用默认登录态": "Este provedor ainda não tem contas disponíveis; a atualização usará a sessão padrão", "这家还没有模型:点「添加模型」登记,或「获取上游模型」从上游拉取": "Este provedor ainda não tem modelos: clique em “Adicionar modelo” para registrar ou em “Buscar modelos do upstream” para buscá-los", "这是模型自己能配的档位(来自上游目录),只读;要改某一档请到映射弹窗里选。": "São os níveis que o próprio modelo pode configurar (vêm do catálogo upstream); somente leitura. Para alterar algum nível, escolha no diálogo de mapeamento.", "这条登记(不像内置模型那样只是隐藏),因为它的存在完全由这次登记决定。": " este registro (não apenas ocultá-lo como no caso dos modelos integrados), pois sua existência é determinada inteiramente por este registro.", "这里是": "Esta é a ", "远程": "Remoto", "远程目录": "Catálogo remoto", "远程目录已更新,「来源」列会显示为「远程」": "Catálogo remoto atualizado; a coluna “Origem” mostrará “Remoto”", "适用客户端": "Cliente", "选一个账号(至少一个)": "Selecione uma conta (pelo menos uma)", "选中的模型都不是手动登记,无法删除(开关映射才是它们的手段)": "Nenhum dos modelos selecionados é de registro manual; não é possível excluir (para eles, o recurso é ligar/desligar o mapeamento)", "选中的都不是手动登记的模型,删除不可用(上游目录带回来的行由清单决定存在性)": "Nenhum dos selecionados é um modelo de registro manual; a exclusão não está disponível (as linhas trazidas pelo catálogo upstream têm a existência determinada pelo catálogo)", "重新获取": "Buscar novamente", "重新读取会丢弃当前草稿,确定继续?": "Recarregar descartará o rascunho atual. Continuar?", "重试": "Tentar novamente", "错误详情": "Detalhes do erro", "默认": "Padrão", "默认开,与真实请求一致:可同时验证 SSE 链路与首字延迟。": "Ativado por padrão, igual a uma requisição real: valida a rota SSE e a latência do primeiro token ao mesmo tempo.", "默认档位:{level}": "Nível padrão: {level}", "默认绑定": "Vínculo padrão", "({label})": " ({label})", "({provider})": " ({provider})", "(上游这一次返回了空正文)": "(o upstream retornou um corpo vazio desta vez)", "(中间共尝试 {n} 次)": "({n} tentativas no total)", "(已禁用)": " (desativado)", "(已被手动覆盖,弹窗里可恢复继承)": " (substituído manualmente; restaurar herança no diálogo)", "(手动设定)": " (definido manualmente)", "(由 models.dev 补齐)": " (preenchido pelo models.dev)", "(登记后即可用这个名字请求)": " (após o registro, já pode solicitar com este nome)", "(续)": "(continuação) ", "(默认 ": " (padrão: ", "(默认绑定与别名 chips);「清除」= 不给这些映射指定等级(选「不覆盖」的口径与映射弹窗一致)": " dos modelos selecionados (chips do vínculo padrão e aliases); “Limpar” = não atribuir nível a esses mapeamentos (mesmo critério de “Não sobrescrever” do diálogo de mapeamento)", ")": ")", "),下游按它们决定发不发图片、按多大的窗口堆历史。": "), e o downstream usa esses valores para decidir se envia imagens e qual janela usar para empilhar o histórico.", "+ 新建自定义提供商": "+ Novo provedor personalizado", "+ 映射": "+ Mapeamento", "+ 添加压缩规则": "+ Adicionar regra de compactação", "+ 添加模型": "+ Adicionar modelo", "+等级": "+Nível", ",与远程目录 / 内置清单区分开。删除自定义模型是": ", distinguindo-o do catálogo remoto / catálogo integrado. Excluir um modelo personalizado é ", ",已完成 ": ", concluídas ", ",跳过 {n} 个": ", {n} ignorados", ",通常就不是账号问题了:先确认这个模型还在上游目录里(「获取模型」刷一次),再看默认绑定指向的上游模型对不对。": ", normalmente não é problema de conta: primeiro confirme que o modelo ainda está no catálogo upstream (rode “Buscar modelos” uma vez) e depois verifique se o modelo upstream apontado pelo vínculo padrão está correto.", ":": ":", ":这里的模型不会出现在其他家,别名也只在这一家内生效。改名称 / 协议 / Base URL 在账号页该家账号的「设置」→ 提供商一栏;整家不要了,鼠标移到左栏这家上点 × 删除(连同名下账号)。": ": os modelos daqui não aparecem em outros provedores e os aliases só valem dentro deste. Para alterar nome / protocolo / Base URL, use “Configurações” → campo do provedor nas contas desta família, na página de contas; se não quiser mais o provedor inteiro, passe o mouse sobre ele na barra lateral esquerda e clique em × para excluir (junto com as contas dele).", ";其中 {keys} 由 models.dev 补齐": "; {keys} preenchido(s) pelo models.dev", ";首个失败:{error}": "; primeira falha: {error}", "{account} · 账号设置": "{account} · Configurações da conta", "{account} 参与本路由": "Incluir {account} nesta rota", "{account} 尝试失败后切换到此账号": "Mudou para esta conta após a falha de {account}", "{available} 可用 · {blocked} 跳过": "{available} disponíveis · {blocked} ignorados", "{clients} 的标题请求": "Solicitação de título de {clients}", "{client} 的压缩请求": "Solicitação de compactação de contexto do {client}", "{models} 看不了图时": "Quando {models} não consegue ler imagens", "{model} 参与本路由": "Incluir {model} nesta rota", "{model} 有独立配置": "{model} tem configuração própria", "{name} · 提供商路由设置": "{name} · Configurações de roteamento do provedor", "{name} 已{state}": "{name}: {state}", "{name} 的账号顺序已调整": "Ordem de contas de {name} alterada", "{n} 个候选": "{n} candidatos", "{n} 个参与账号": "{n} contas participantes", "{n} 个启用且参与的账号": "{n} contas ativas e participantes", "{n} 个提供商": "{n} provedores", "{n} 个模型限流": "{n} modelos com limite de taxa", "{n} 个请求": "{n} solicitações", "{n} 个账号 · {on} 启用 · {off} 禁用": "{n} contas · {on} ativas · {off} desativadas", "{n} 个账号已折叠": "{n} contas recolhidas", "{n} 个跳过": "{n} ignorados", "{n} 在途": "{n} em andamento", "{n} 处未保存": "{n} alterações não salvas", "{n} 已完成": "{n} concluídas", "{n} 条": "{n} registros", "{n} 条活跃绑定": "{n} vínculos ativos", "{n} 条请求没有会话标识,未计入会话数量。": "{n} solicitações não têm identificador de sessão e não entram na contagem de sessões.", "{n} 条账号路径": "{n} caminhos de contas", "{n} 次": "{n} vezes", "{n} 项参与": "{n} participantes", "{paths} 条路径 · {sessions} 个会话": "{paths} caminhos · {sessions} sessões", "{providers} 个提供商 / {accounts} 个账号": "{providers} provedores / {accounts} contas", "{providers} 个提供商 · {accounts} 个参与账号": "{providers} provedores · {accounts} contas participantes", "{provider} 参与本路由": "Incluir {provider} nesta rota", "{selected} / {total} 个账号参与": "{selected} / {total} contas incluídas", "{selected} / {total} 个账号启用": "{selected} / {total} contas ativadas", "{time} 后恢复": "Recupera em {time}", "一个路由组最多允许 {n} 个成员": "Um grupo de rotas pode ter no máximo {n} membros", "一条历史路径": "Um caminho histórico", "上游已响应": "Upstream respondeu", "上游请求已发出": "Solicitação upstream enviada", "上游调用": "Chamada upstream", "下一条请求": "Próxima requisição", "下一条请求将走": "A próxima requisição irá para", "不参与": "Não participa", "不按余额排序": "Não ordenar por saldo", "不按到期排序": "Não ordenar por expiração", "与账号页共用全局消耗规则": "Compartilha regras globais de consumo com Contas", "与账号页共用:{rules}。积分到期等规则直接影响网关实际选路。": "Compartilhado com Contas: {rules}. Regras como a expiração dos créditos afetam diretamente o roteamento do gateway.", "为什么没有调用": "Por que não foi chamada", "为什么选择它": "Por que foi selecionada", "为压缩请求指定模型": "Definir modelo para compactação", "五分钟没有往来即释放;客户端会话标识优先,内容哈希兜底。": "Liberado após cinco minutos de inatividade. Identificadores de sessão do cliente têm prioridade; um hash do conteúdo é usado como alternativa.", "仅保留最后承载信息,尝试明细未记录": "Somente a conta final foi mantida; os detalhes das tentativas não foram registrados", "仅允许指定提供商": "Permitir apenas provedores selecionados", "仅列出真实目录中的对话模型,不自动更改模型映射。": "Apenas modelos de conversa do catálogo real são listados. Os mapeamentos não são alterados.", "仅加入的参与": "Somente os adicionados", "仅勾选的参与": "Somente os marcados", "仅历史": "Somente histórico", "仅在途": "Somente em andamento", "仅展示已发生的请求,不表示当前可选": "Exibe solicitações registradas, não a elegibilidade atual", "仅影响此路由的后续请求": "Afeta apenas solicitações futuras desta rota", "仅看选中路径": "Somente caminhos selecionados", "仅筛选右侧账号列表,不改变路由配置。": "Filtra apenas a lista de contas à direita, sem alterar as configurações de roteamento.", "仍保留配置,账号可继续用于其他路由。": "As configurações são mantidas. As contas continuam disponíveis para outras rotas.", "仍然保存": "Salvar mesmo assim", "从上到下就是选路顺序": "De cima para baixo é a ordem de roteamento", "从当前视图移除": "Remover desta visualização", "从现有模型中创建独立配置,自动列出提供它的全部提供商;之后的修改只跟随这个模型。": "Crie uma configuração independente para um modelo existente. Todos os provedores que o oferecem são listados automaticamente; alterações posteriores se aplicam apenas a esse modelo.", "以下 {n} 个账号原本被全局路由排除。确认后会将它们设为禁用,所有路由都不能再选用;原有独立路由的参与名单保留。": "Estas {n} contas estavam excluídas da rota global. A confirmação as desativa para todas as rotas. As listas de participação das rotas independentes são preservadas.", "优先使用队首账号,不可用时顺延。": "Priorize a primeira conta da fila e passe à próxima quando ela estiver indisponível.", "优先尝试": "Tentar primeiro", "优先级:{rules};前一项相同才比较后一项。": "Prioridade: {rules}. As regras seguintes só se aplicam em caso de empate nas anteriores.", "会话": "Sessões", "会话最长保持六小时无往来;可以随时在会话粘滞中解除。": "Os vínculos duram até seis horas de inatividade e podem ser liberados a qualquer momento em Vínculos de sessão.", "会话来源": "Origem da sessão", "会话标识": "Identificador da sessão", "会话标识 {id} · 来源 {source}": "Sessão {id} · origem {source}", "会话标识未记录,不将此请求推断为独立会话。": "Nenhum identificador de sessão foi registrado. Esta solicitação não é presumida como uma sessão separada.", "会话活动": "Atividade da sessão", "会话粘住": "Vínculo de sessão encontrado", "会话粘滞": "Vínculos de sessão", "会话粘滞 {mode}": "Afinidade de sessão {mode}", "会话粘滞改为{value}": "Afinidade de sessão alterada para {value}", "位置 = 顺位": "Posição = prioridade", "作用范围": "Escopo", "例如:日常省钱": "Ex.: Economia no dia a dia", "供继承全局的模型使用": "Usado por modelos que herdam as configurações globais", "保存": "Salvar", "保存中…": "Salvando…", "保存仅影响后续选路,历史快照与在途请求不改写。": "Salvar afeta apenas o roteamento posterior. Registros históricos e solicitações em andamento não são alterados.", "保存全局路由": "Salvar roteamento global", "保存后仅用于后续请求,不改变历史快照或在途请求。": "As alterações salvas se aplicam apenas às próximas solicitações, sem alterar registros históricos ou solicitações em andamento.", "保存后只影响后续请求": "Vale apenas para requisições futuras", "保存后才会影响真实请求": "As alterações só afetam solicitações reais após salvar", "保存响应不完整,请刷新当前配置确认结果": "A resposta ao salvamento está incompleta. Recarregue a configuração atual para confirmar o resultado.", "保存当前配置": "Salvar configuração atual", "保存模型路由": "Salvar roteamento do modelo", "保存的尝试明细中没有这次调用": "Esta chamada não consta nos detalhes salvos das tentativas", "保存空路由": "Salvar rota vazia", "保存规则": "Salvar regra", "保存路由": "Salvar rota", "保存路由后,在客户端填写此模型 ID。密钥使用你自己的网关 Key。": "Após salvar, use este ID de modelo no cliente com sua própria chave do gateway.", "保护设置由所有模型共用;模型独立配置可覆盖参与范围、顺序、策略与粘滞。": "As configurações de proteção são compartilhadas por todos os modelos. Configurações independentes podem substituir participação, ordem, estratégia e aderência.", "修改后影响继承全局的模型": "As alterações afetam modelos que herdam a configuração global", "修改范围以「编辑范围」为准": "As alterações se aplicam ao escopo de edição selecionado", "候选": "Candidatos", "候选 {n}": "Candidatos {n}", "候选 · {name}": "Candidata · {name}", "候选与跳过": "Candidatos e ignorados", "候选与跳过清单各最多保存十二项;这里只回放当时保存的快照,不用当前队列重算。": "Até doze candidatos e ignorados são salvos. Aqui só reproduzimos o snapshot salvo, sem recalcular com a fila atual.", "候选与跳过清单各最多保存十二项;重试和跨账号切换见尝试明细。": "As listas de candidatas e contas ignoradas armazenam até doze itens cada. Consulte os detalhes das tentativas para novas tentativas e trocas de conta.", "候选和跳过清单各最多保存十二项,超出部分不绘制。": "As listas de candidatas e contas ignoradas mantêm até doze itens cada. Os demais não são desenhados.", "候选快照中有此账号,但保存的尝试明细未显示它被调用": "Esta conta aparece no registro de candidatas, mas não há chamada a ela nas tentativas salvas", "候选快照仅保存部分记录,未保存的账号无法回放": "Apenas parte do registro de candidatas foi salva; contas sem registro não podem ser reproduzidas", "候选筛选": "Filtro de candidatos", "候选规模": "Conjunto de candidatas", "候选账号": "Conta candidata", "候选顺序": "Ordem das candidatas", "停用后保留卡片与账号,方便随时恢复;不会全局禁用提供商。": "A desativação mantém o cartão e as contas para facilitar a restauração. Ela não desativa o provedor globalmente.", "停用后保留卡片与账号;自动参与不会重新启用明确停用的提供商。": "A desativação mantém o cartão e as contas. A participação automática não reativa provedores desativados explicitamente.", "停用此提供商": "Desativar este provedor", "停用路由提供商": "Desativar provedor de roteamento", "允许参与的提供商": "Provedores permitidos", "先处理凭证、限额或参与范围。": "Resolva credenciais, limites ou escopo primeiro.", "先尝试当前路由内的视觉模型,不可用时再按顺序尝试指定模型;指定模型可跨路由池。": "Tente primeiro os modelos de visão da rota atual e, se estiverem indisponíveis, tente os modelos selecionados em ordem. Os modelos selecionados podem usar outro pool de roteamento.", "先读图再交回": "Lê a imagem antes e devolve para", "全局": "Global", "全局保护设置": "Configurações globais de proteção", "全局修改影响继承它的模型;独立模型配置不变。": "Alterações globais afetam modelos que as herdam; configurações independentes permanecem inalteradas.", "全局修改影响继承的设置;模型已独立设置的项目保持不变。": "Alterações globais afetam configurações herdadas; substituições específicas do modelo permanecem inalteradas.", "全局参与范围": "Escopo global de participação", "全局顺序与账号页联动,修改即时保存。": "A ordem global fica sincronizada com Contas. As alterações são salvas imediatamente.", "全局默认": "Padrões globais", "全局默认供继承的模型使用;给某个模型单独配置后,它就不再跟随全局。": "O padrão global serve os modelos que o herdam; ao criar uma configuração própria, o modelo deixa de seguir o global.", "全部候选": "Todos os candidatos", "全部模型(窗口内没有请求)": "Todos os modelos (sem pedidos no período)", "全部禁用": "Todas as contas desativadas", "全部移出": "Remover todos", "全部移出本路由": "Remover todos desta rota", "全部自动参与": "Todos automáticos", "全部解除": "Liberar todos", "全部请求": "Todas as requisições", "全部路径": "Todos os caminhos", "共 {n} 个可添加的模型": "{n} modelos disponíveis para adicionar", "共 {n} 条路由回放": "{n} reproduções de roteamento", "共尝试 {total} 次,保存了 {saved} 条明细": "{total} tentativas; {saved} registros salvos", "关联与在途优先": "Selecionados e em andamento primeiro", "关联请求路径": "Caminhos de solicitações relacionados", "关闭": "Fechar", "其他候选": "Outras candidatas", "其他客户端": "Outros clientes", "其他账号已完成请求,没有继续调用这个候选": "Outra conta concluiu a solicitação, então esta candidata não foi chamada", "内容哈希": "Hash do conteúdo", "内容哈希(推断)": "Hash do conteúdo (inferido)", "内部重试不会增加账号切换节点。": "Novas tentativas internas não adicionam nós de troca de conta.", "决定后续请求用谁、按什么顺序,以及是否沿用会话账号。": "Defina quais contas atendem às próximas solicitações, sua ordem e se a conta da sessão será reutilizada.", "冷却中": "Em espera", "切换 {n} 次": "{n} trocas", "切换后,原本不在名单内的可用提供商也会参与转发。明确停用的提供商和排除的账号不会恢复。": "Após a troca, provedores disponíveis fora da lista anterior também participarão do encaminhamento. Provedores desativados explicitamente e contas excluídas continuam excluídos.", "切换模型后,右侧只展示该模型的提供商与账号路由。": "Ao trocar de modelo, apenas as rotas de provedores e contas desse modelo aparecem à direita.", "列表内容": "Conteúdo da lista", "创建独立配置": "Criar configuração independente", "创建草稿": "Criar rascunho", "删除后此入口将不再接受请求。不会删除成员模型、提供商或账号。": "Ao excluir, esta entrada deixará de aceitar solicitações. Modelos, provedores e contas não serão excluídos.", "删除后这个模型会重新跟随全局配置,已保存的独立设置和当前未保存修改都会被移除。": "Ao excluir, este modelo volta a seguir a configuração global. As configurações independentes salvas e as alterações não salvas serão removidas.", "删除独立路由": "Excluir rota independente", "删除独立配置": "Excluir configuração independente", "删除规则": "Excluir regra", "删除路由组": "Excluir grupo de rotas", "刷新请求记录": "Atualizar histórico de solicitações", "刷新路由": "Atualizar rotas", "刷新预演": "Atualizar prévia", "加入": "adicionado", "加入路由": "Adicionar à rota", "历史只读,不影响当前配置": "Histórico somente leitura; não altera a configuração atual", "历史只读,当前配置的修改不会改变这条请求的快照。": "O histórico é somente leitura. Alterações na configuração não modificam este registro da solicitação.", "历史快照保留了 {shown} / {total} 个候选明细,其余未记录。": "O registro histórico manteve detalhes de {shown} de {total} candidatos. Os demais não foram registrados.", "历史承载账号当前不可用": "Conta histórica indisponível no momento", "历史日期": "Data do histórico", "历史记录": "Histórico", "压缩上下文": "Compactação de contexto", "压缩模型": "Modelo de compactação", "原因": "Motivo", "原始报文在请求详情里,这里只看选路过程。": "O payload bruto fica nos detalhes da requisição; aqui só mostramos o roteamento.", "原模型": "Modelo original", "去账号页添加": "Adicionar na página de contas", "参与": "Participa", "参与当前视图转发": "Encaminhar nesta visualização", "参与方式": "Participação", "参与方式改为{value}": "Participação alterada para {value}", "参与本路由": "Incluído nesta rota", "参与范围": "Escopo de participação", "参与范围与顺序独立保存;策略和粘滞可分别继承全局。": "Participação e ordem são salvas independentemente; estratégia e aderência podem herdar as configurações globais separadamente.", "参与账号": "Contas participantes", "参与路由": "Participa do roteamento", "参与路由的账号": "Contas participantes do roteamento", "参与转发": "Participantes do encaminhamento", "参与顺序": "Ordem de participação", "发生切换": "Com troca de conta", "取消": "Cancelar", "取消勾选只排除当前范围,不会在账号页全局禁用账号。": "Desmarcar exclui a conta apenas deste escopo; não a desativa globalmente na página Contas.", "取消选中": "Limpar seleção", "只从当前路由移出,保留模型和账号配置;不会改变其他路由。": "Remove apenas desta rota, mantendo configurações de modelos e contas. Outras rotas não mudam.", "只从当前路由视图移除,不删除提供商或账号,也不改变其他模型的独立配置。": "Remove apenas da visualização de roteamento atual. Não exclui provedores ou contas nem altera configurações independentes de outros modelos.", "只修改全局参与范围,不改变账号排序、模型开关或模型独立路由;网关 Key 权限与限流仍然生效。": "Altera apenas a participação global, sem mudar a ordem das contas, a ativação dos modelos ou suas rotas independentes. As permissões das Keys do gateway e os limites de taxa continuam válidos.", "只列出当前模型已有启用绑定的提供商;这里只设置路由,不新建模型绑定。": "São listados apenas provedores com uma associação ativa para este modelo. Aqui você configura o roteamento, sem criar associações de modelo.", "只影响这个路由成员,不改变账号启用状态,也不影响其他模型。新增账号需要手动加入。": "Afeta apenas este membro, sem alterar a ativação da conta ou outros modelos. Novas contas devem ser adicionadas manualmente.", "只改写被识别为标题生成的小请求,普通对话不受影响。": "Apenas pequenas requisições reconhecidas como geração de título são reescritas; conversas normais não são afetadas.", "只有加入的提供商参与,新增提供商需要手动加入。": "Somente provedores adicionados participam. Novos provedores precisam ser adicionados manualmente.", "只有勾选的提供商参与;以后新增的提供商需要在这里勾选。": "Apenas provedores marcados participam; novos provedores precisam ser marcados aqui.", "只有名单内的提供商可以参与;新增提供商不会自动加入。": "Somente os provedores listados podem participar. Novos provedores não são adicionados automaticamente.", "只看用过这个模型的客户端与账号。点一条看它当时是怎么选的。": "Apenas clientes e contas que usaram este modelo. Abra uma para ver como a conta foi escolhida.", "只看这个客户端经过的模型与账号。点一条看它当时是怎么选的。": "Apenas modelos e contas por onde este cliente passou. Abra uma para ver como a conta foi escolhida.", "只看这个提供商下参与路由的账号。点一条看它当时是怎么选的。": "Apenas contas participantes deste provedor. Abra uma para ver como a conta foi escolhida.", "只看这个账号承接的请求。点一条看完整的选路过程。": "Apenas requisições atendidas por esta conta. Abra uma para ver o roteamento completo.", "只看这条路径上的请求。点一条看完整的选路过程。": "Apenas requisições deste caminho. Abra uma para ver o roteamento completo.", "只移出本路由,账号状态和其他路由不变;保存后此入口将没有可用路由。": "Remove apenas desta rota. Contas e outras rotas não mudam. Após salvar, esta entrada não terá rota disponível.", "只读预演,不会推进轮转;保存后才会影响真实请求。": "Visualização somente leitura; não avança a rotação. Somente salvar afeta requisições reais.", "可以保存空路由,但请求会明确失败,不会回退全局。": "Uma rota vazia pode ser salva, mas as solicitações falharão explicitamente, sem recorrer à rota global.", "可以跨提供商、跨模型多选。同一提供商也可以加入不同模型。": "Selecione vários modelos de diferentes provedores, inclusive modelos distintos do mesmo provedor.", "可用候选": "Candidatos disponíveis", "可用待命": "Disponível, em espera", "可用账号按请求轮换;开启会话粘性时同一会话优先留在原账号。": "Alterne as contas disponíveis a cada solicitação. Com aderência de sessão ativada, a mesma sessão prioriza sua conta anterior.", "右侧面板内容": "Conteúdo do painel direito", "同一会话优先保持模型与账号,不可用时才顺延。": "Mantenha preferencialmente o mesmo modelo e conta na sessão; avance quando indisponíveis.", "同一模型,选择不同提供商": "Mesmo modelo, provedores diferentes", "同号重试 {n} 次": "{n} novas tentativas na mesma conta", "同账号内部重试": "Novas tentativas internas na mesma conta", "后备账号": "Conta de reserva", "后过期": "até expirar", "否": "Não", "启用": "ativos", "启用 {provider} 的账号": "Ativar contas de {provider}", "启用全部账号": "Ativar todas as contas", "启用当前列表账号": "Ativar contas desta lista", "启用提供商中的第 {rank} 顺位;当前可用候选第 {effective} 顺位。": "Prioridade {rank} entre os provedores ativos; prioridade {effective} entre os candidatos disponíveis no momento.", "启用提供商中的第 {rank} 顺位;当前没有可用候选账号。": "Prioridade {rank} entre os provedores ativos; nenhuma conta candidata está disponível no momento.", "启用规则": "Ativar regra", "启用账号 {account}": "Ativar conta {account}", "命中 {n} 次": "{n} acertos", "命中下面规则的上下文压缩请求,会改用指定的模型压缩一次;账号仍按新模型自己的路由挑。": "Solicitações de compactação de contexto que correspondem a uma regra abaixo são compactadas uma vez com o modelo escolhido; a conta é escolhida pela rota do próprio modelo.", "命中会话粘性,沿用原账号完成请求": "Vínculo de sessão encontrado; a conta anterior concluiu a solicitação", "命中会话粘滞": "Vínculo de sessão encontrado", "命中这条规则的压缩请求会改用「压缩模型」重发一次;改写之后按新模型自己的路由挑账号。": "Solicitações de compactação que correspondem a esta regra são reenviadas uma vez com o modelo de compactação; a conta é escolhida pela rota do próprio modelo.", "命中配置": "Configuração aplicada", "响应到达": "Resposta recebida", "响应到达后": "Após a chegada da resposta", "响应完成": "Resposta concluída", "回放中": "Reproduzindo", "回放保持不变": "Reprodução permanece inalterada", "回放步骤": "Etapa da reprodução", "固定这条请求": "Fixar esta solicitação", "在工作台查看": "Abrir na área de roteamento", "在途 + 近期": "Em andamento + recentes", "在途 {n} / {limit}": "Em andamento {n} / {limit}", "在途时长": "Tempo em andamento", "在途请求 / 并发上限": "Solicitações em andamento / limite de simultaneidade", "备选按顺序尝试;一个都不加时,当前路由内找不到视觉模型就停止并说明原因。": "Os alternativos são tentados em ordem; sem nenhum, a solicitação para com uma explicação se não houver modelo de visão na rota atual.", "复制失败,请手动选择并复制": "Falha ao copiar. Selecione e copie manualmente.", "复制网关地址": "Copiar URL do gateway", "失败原因未记录": "Motivo da falha não registrado", "失败后备选": "Alternativa em caso de falha", "失败时直接报错": "Em caso de falha, retornar erro", "失败时退回原模型": "Em caso de falha, voltar ao modelo original", "失败阈值": "Limite de falhas", "完整详情": "Detalhes completos", "完整请求详情": "Detalhes completos da solicitação", "完整过程": "Processo completo", "实时状态暂未更新,当前显示上次读取的结果:{error}": "Não foi possível atualizar o status em tempo real. Exibindo os últimos resultados obtidos: {error}", "实际尝试失败": "Tentativa real com falha", "实际模型": "Modelo real", "实际请求路径": "Caminhos reais das solicitações", "实际账号尝试": "Tentativas reais por conta", "客户端已取消请求": "O cliente cancelou a solicitação", "客户端模型 {client} → 实际模型 {model}": "Modelo do cliente {client} → modelo real {model}", "客户端请求": "Solicitação do cliente", "对外模型 ID": "ID público do modelo", "对外模型 ID 已被占用,请换一个名称": "Este ID público já está em uso. Escolha outro nome.", "对外模型 ID 格式不正确": "Formato inválido do ID público do modelo", "将禁用当前所选的 {n} 个账号,所有路由都不能再选用它们。此操作立即保存,不会删除账号。": "Desativar as {n} contas selecionadas para todas as rotas. A alteração é salva imediatamente e não exclui as contas.", "尚未记录承载账号": "Nenhuma conta de atendimento registrada ainda", "尚未读取到有效的积分到期时间": "Nenhum prazo válido de expiração dos créditos foi carregado ainda", "尝试 {n}": "Tentativa {n}", "尝试 {n} · 最终承载": "Tentativa {n} · processou ao final", "尝试中": "Tentando", "尝试失败": "Tentativa falhou", "尝试明细已截断或未记录,画布只展示保存下来的信息。": "Os detalhes das tentativas foram truncados ou não registrados. O diagrama mostra apenas as informações salvas.", "尝试结果": "Resultado da tentativa", "尝试记录": "Tentativas", "展开其余 {n} 个候选": "Mostrar mais {n} candidatos", "展开完整原因": "Mostrar motivo completo", "工具服务的视觉模型": "o modelo de visão do serviço de ferramentas", "左侧修改的是全局默认,不会影响它。": "As alterações à esquerda são no padrão global e não o afetam.", "已保存": "Salvo", "已保存 {n} 个候选": "{n} candidatas salvas", "已保存明细": "Detalhes salvos", "已停用": "Desativado", "已停用提供商 · {n}": "Provedores inativos · {n}", "已关闭": "Desativado", "已删除独立配置,改为跟随全局": "Configuração independente excluída; agora segue a configuração global", "已启用": "Ativados", "已启用模拟条件": "Condições de simulação ativadas", "已固定这条请求,新请求不会打断当前查看": "Esta solicitação está fixada; novas solicitações não interromperão esta visualização", "已完成记录": "Registros concluídos", "已完成请求时间范围": "Período das solicitações concluídas", "已尝试": "Já tentada", "已尝试 · 失败": "Tentado · falhou", "已用时": "Tempo decorrido", "已禁用账号": "Contas desativadas", "已禁用账号 · {n}": "Contas desativadas · {n}", "已解除 {n} 条会话粘滞": "{n} vínculos de sessão liberados", "已记录 {n} 次尝试": "{n} tentativas registradas", "已跳过": "Ignorada", "已转换为账号启停,独立路由参与名单保持不变": "Convertido para controles de ativação de contas. As listas de participação das rotas independentes não foram alteradas.", "平均耗时": "Duração média", "并发已满": "Limite de simultaneidade atingido", "序号表示先后,不是提供商之间互相转发": "Os números indicam a ordem das tentativas, não o encaminhamento entre provedores", "应用到草稿": "Aplicar ao rascunho", "开始 {start} · 响应 {response} · 结束 {finish}": "Início {start} · resposta {response} · fim {finish}", "开始于 +{time}": "Início em +{time}", "开始时间": "Hora de início", "当前全局路由使用固定参与名单,新增提供商不会自动加入。": "A rota global usa uma lista fixa de participação. Novos provedores não são adicionados automaticamente.", "当前可用队首": "Primeiro candidato disponível agora", "当前承载": "Conta responsável atual", "当前有效顺位以路由预演为准,不改变保存的配置优先级。": "A ordem efetiva atual segue a prévia de roteamento e não altera a prioridade salva na configuração.", "当前档位不保留跨请求粘滞,因此没有活跃绑定。": "O modo atual não mantém vínculos entre solicitações, portanto não há vínculos ativos.", "当前模型": "Modelo atual", "当前模型使用独立顺序,不受全局自动消耗排序影响。删除独立路由后会重新跟随账号页。": "Este modelo usa uma ordem independente, sem influência da ordenação global automática de consumo. Ao excluir a rota independente, ele volta a seguir Contas.", "当前模型使用独立顺序,不受全局自动消耗排序影响。恢复继承后会重新跟随账号页。": "Este modelo usa uma ordem independente, sem influência da ordenação global automática de consumo. Restaure a herança para seguir Contas novamente.", "当前模型没有对应的账号,请先添加账号或检查模型绑定。": "Não há contas associadas a este modelo. Adicione uma conta ou verifique as associações do modelo.", "当前模型配置独立保存,不影响全局和其他模型。": "A configuração deste modelo é salva de forma independente e não afeta as configurações globais nem outros modelos.", "当前没有参与账号,保存后这个范围可能无法承载新请求。": "Nenhuma conta participa no momento. Ao salvar, este escopo poderá ficar sem capacidade de atender novas solicitações.", "当前没有可沿用的粘滞绑定": "Nenhum vínculo de sessão reutilizável", "当前空闲": "Ociosa no momento", "当前绑定:{account},剩余 {time}": "Vínculo atual: {account}, expira em {time}", "当前继承全局。改成模型独立配置后,改动只影响这个模型。": "Hoje herda o global. Ao mudar para configuração própria, só este modelo é afetado.", "当前继承全局固定名单;新增提供商需手动添加或在全局配置中改为自动参与。": "Esta visualização herda a lista global fixa. Adicione novos provedores manualmente ou ative a participação automática na configuração global.", "当前继承全局,修改前先切到独立配置": "Herdando o global — mude para configuração própria antes de editar", "当前继承全局,切换到独立配置后只修改本模型。": "As configurações globais estão sendo herdadas. Mude para uma configuração independente para editar apenas este modelo.", "当前网关尚不支持全局账号启停,请更新网关后重新读取。": "Este gateway ainda não oferece os controles globais de contas. Atualize o gateway e recarregue.", "当前范围内没有请求": "Nenhuma solicitação neste intervalo", "当前范围的提供商都没有账号,先在账号页添加": "Nenhum provedor neste escopo tem contas ainda. Adicione uma na página de contas.", "当前视图没有活跃会话粘滞": "Nenhum vínculo de sessão ativo nesta visualização", "当前视图没有路由回放记录": "Nenhuma reprodução de roteamento nesta visualização", "当前视图的请求入口": "Entrada de solicitações desta visualização", "当前请求": "Solicitações em andamento", "当前路由位置": "Posição atual no roteamento", "当前路由内的视觉模型": "um modelo de visão desta rota", "当前配置": "Configuração atual", "当前配置已排除": "Excluída pela configuração atual", "当时": "Na solicitação", "当时可用,当前请求尚未轮到这个账号": "Disponível naquele momento; esta solicitação ainda não chegou a esta conta", "当时可选的账号 · {n}": "Contas disponíveis na hora · {n}", "当时状态": "Estado naquele momento", "当时的候选说明": "Descrição da candidata naquele momento", "当时的成员模型": "Modelos membros no momento da solicitação", "当时的选路原因未记录": "O motivo do roteamento não foi registrado naquele momento", "当时被候选过滤规则跳过": "Ignorada pelas regras de filtragem de candidatas naquele momento", "当时配置": "Configuração na solicitação", "当时配置与当前配置": "Configuração anterior e atual", "影响继承全局的模型": "Afeta modelos que herdam as configurações globais", "怎么选账号": "Seleção de contas", "思考等级 {value}": "Nível de raciocínio {value}", "总耗时": "Duração total", "总计 {n} tokens": "{n} tokens no total", "恢复": "Restaurar", "恢复全局继承": "Restaurar herança global", "恢复按账号页面的全局优先级选路,解除全局视图的提供商和账号范围限制。模型独立配置不会改变。": "Restaure o roteamento pela prioridade global da página de contas e remova as restrições de provedores e contas da visualização global. As configurações independentes dos modelos não serão alteradas.", "恢复提供商": "Restaurar provedores", "恢复路由提供商": "Restaurar provedores de roteamento", "恢复阈值": "Limite de recuperação", "恢复默认路由": "Restaurar roteamento padrão", "成功承载": "Processada com sucesso", "成员内轮询": "Rotação dentro dos membros", "成员模型": "Modelos membros", "所有可用提供商自动参与,新增账号或插件后无需再加路由;明确停用的保持不变。": "Todos os provedores disponíveis entram automaticamente — não é preciso adicionar rotas após novas contas ou plugins; os desativados explicitamente continuam fora.", "所有可用提供商自动参与,新增账号或插件后无需再添加路由。已停用的提供商和已排除的账号保持不变。": "Todos os provedores disponíveis participam automaticamente. Adicionar contas ou plugins não exige configurar novas rotas. Provedores desativados e contas excluídas permanecem inalterados.", "所有可用提供商都已在当前路由中": "Todos os provedores disponíveis já estão nesta rota", "所有模型共用": "Compartilhado por todos os modelos", "所有模型共用路由策略与保护设置;全局顺序和消耗规则与账号页联动,模型独立配置可明确覆盖顺序。": "Todos os modelos compartilham estratégias de roteamento e proteção. A ordem global e as regras de consumo ficam sincronizadas com Contas; uma configuração independente do modelo pode substituir a ordem explicitamente.", "打开完整请求详情": "Abrir detalhes completos da solicitação", "打开该模型配置": "Abrir a configuração deste modelo", "执行耗时": "Tempo de execução", "执行记录": "Registros de execução", "执行路径": "Caminho de execução", "执行路径按当时快照保留": "Caminho de execução preservado conforme o registro original", "批量禁用账号": "Desativar contas em lote", "承载账号": "Conta responsável", "把不同提供商、不同模型组合成一个入口。客户端使用对外模型 ID 发起请求。": "Combine modelos de vários provedores em uma entrada. Os clientes usam o ID público do modelo.", "把全局配置复制成这个模型的独立配置": "Copiar o global para uma configuração própria deste modelo", "拖动卡片改顺位,勾选决定参与;这里的位置就是实际选路顺序。": "Arraste os cartões para reordenar e marque para incluir; esta ordem é a ordem real de roteamento.", "拖动或按 Alt + 方向键调整顺序": "Arraste ou use Alt + setas para reordenar", "拖动把手或按 Alt + 方向键调整顺序,更多操作在右侧菜单。": "Arraste a alça ou use Alt + setas para reordenar. Mais ações estão no menu à direita.", "拖动把手调整顺序,也可以使用右侧上下按钮。": "Arraste a alça ou use os botões para cima e para baixo à direita.", "拖动提供商与账号调整顺序,修改即时保存。": "Arraste provedores e contas para reordená-los. As alterações são salvas imediatamente.", "拖动改顺位、勾选决定参与;这里的位置就是实际选路顺序。": "Arraste para reordenar e marque para incluir; esta ordem é a ordem real de roteamento.", "拖动调整提供商顺序": "Arraste para reordenar provedores", "拖动调整账号顺序": "Arraste para reordenar contas", "按客户端类型聚合": "Agrupado por tipo de cliente", "按已保存配置": "Com base na configuração salva", "按当前草稿预演,不发送请求,不消耗额度。": "Simula o rascunho atual sem enviar solicitações nem consumir cota.", "按当前视图的顺序参与选路": "Roteamento na ordem configurada para esta visualização", "按此范围查看配置": "Abrir configuração deste escopo", "按步骤回放,不重新发送请求": "Reproduzir etapas sem reenviar a solicitação", "按请求开始时的顺位": "Na ordem do início da requisição", "按请求模型选择": "Selecionar pelo modelo solicitado", "按路径聚合,会话在列表中展开,不在画布逐条连线。": "Agrupado por caminho. As sessões aparecem na lista, não como linhas individuais no diagrama.", "排除": "excluído", "提供商与账号": "Provedores e contas", "提供商保持优先顺序,同一提供商的账号轮流承接。": "Mantenha os provedores em ordem de prioridade e alterne as contas dentro de cada provedor.", "提供商参与": "Participação de provedores", "提供商参与方式": "Modo de participação dos provedores", "提供商参与方式改为{value}": "Participação de provedores alterada para {value}", "提供商参与范围": "Escopo de participação dos provedores", "提供商未参与": "Provedor não participa", "提供商未记录": "Provedor não registrado", "提供商范围": "Escopo de provedores", "提供商路由设置": "Configurações de roteamento do provedor", "搜索会话或账号": "Buscar sessões ou contas", "搜索客户端、模型或账号": "Buscar clientes, modelos ou contas", "搜索提供商或模型": "Buscar provedores ou modelos", "搜索提供商或账号": "Buscar provedor ou conta", "搜索本页会话或账号": "Buscar sessões ou contas nesta página", "搜索模型": "Buscar modelos", "搜索模型、账号或会话来源": "Buscar modelo, conta ou origem da sessão", "搜索模型或请求 ID": "Buscar modelo ou ID da solicitação", "搜索请求、模型或账号": "Pesquisar requisições, modelos ou contas", "搜索路由配置": "Buscar configurações de rota", "撤销修改": "Descartar alterações", "撤销草稿": "Descartar rascunho", "收起其他候选": "Ocultar outras candidatas", "改为独立配置": "Usar configuração própria", "改为自动参与": "Ativar participação automática", "改用": "Trocar para", "放到第 {n} 位": "Soltar na posição {n}", "放大画布": "Ampliar", "整次请求改交": "Entrega a solicitação inteira para", "文本对话": "Conversa por texto", "新增可用提供商会自动参与;这里只需恢复曾明确停用的提供商。": "Novos provedores disponíveis participam automaticamente. Use esta janela apenas para restaurar provedores desativados explicitamente.", "新增提供商自动参与;移出本路由的不会自动加回。": "Novos provedores participam automaticamente. Os removidos não são reincluídos automaticamente.", "新增模型": "Adicionar modelo", "新增模型独立路由": "Adicionar rota independente de modelo", "新增模型独立配置": "Nova configuração por modelo", "新增路由配置": "Adicionar configuração de roteamento", "新建路由组": "Novo grupo de rotas", "新配置 · 保存后生效": "Nova config · vale após salvar", "无可用账号": "Nenhuma conta disponível", "无有效绑定": "Nenhum vínculo válido", "时间相对请求开始;历史只读,修改当前配置不会改变这条记录。": "Os tempos são relativos ao início da requisição. O histórico é somente leitura; alterar a configuração atual não modifica este registro.", "时间相对请求开始;未记录的旧数据不补算。历史只读,修改当前配置不会改变这条记录。": "Os tempos são relativos ao início da requisição; dados antigos sem registro não são recalculados. O histórico é somente leitura — mudar a config atual não altera este registro.", "时间相对请求开始;未记录的旧数据不补算。响应到达不等于流式请求结束。": "Os tempos são relativos ao início da solicitação. Dados históricos ausentes não são estimados. Receber uma resposta não significa que uma solicitação em streaming terminou.", "是": "Sim", "显示全部": "Mostrar tudo", "显示其他候选": "Mostrar outras candidatas", "显示无账号 ({n})": "Mostrar sem contas ({n})", "暂停": "Pausar", "暂无可用账号": "Nenhuma conta disponível", "曾被限流的账号暂时排到队尾,三十分钟后或转发成功后恢复。": "Contas que sofreram limitação de taxa vão temporariamente para o fim da fila e retornam após trinta minutos ou um encaminhamento bem-sucedido.", "最早到期的剩余积分包:{time}": "Primeira expiração entre os pacotes de créditos com saldo: {time}", "最终承载": "Conta final responsável", "最终由 {account} 承接": "Finalizado por {account}", "最近 {n} 分钟": "Últimos {n} minutos", "最近 {n} 条": "Últimos {n}", "最近使用:{time}": "Último uso: {time}", "最近完成": "Concluídas recentemente", "最近没有命中记录": "Nenhum acerto recente", "最近请求已完成": "Última solicitação concluída", "有在途": "Com solicitações em andamento", "有未保存修改,预演仍按已保存配置。": "Há alterações não salvas; a visualização ainda usa a configuração salva.", "有未保存的修改": "Há alterações não salvas", "未保存完整尝试明细,仅显示请求记录中的承载信息。": "Os detalhes completos das tentativas não foram salvos. São exibidas apenas as informações de atendimento do registro.", "未保存草稿": "Rascunho não salvo", "未切换": "Sem troca", "未参与": "Não participa", "未参与提供商 · {n}": "Provedores não participantes · {n}", "未参与提供商默认收起;选中历史路径时仍会显示。": "Provedores não participantes ficam recolhidos por padrão, mas aparecem quando seu caminho histórico é selecionado.", "未参与本范围": "Fora deste escopo", "未参与本路由": "Fora desta rota", "未发生切换": "Sem troca", "未记录上游调用": "Sem chamada upstream registrada", "未识别客户端": "Cliente não identificado", "未调用": "Não chamada", "未调用不画请求线;模型限流与当前配置分别展示。": "Sem chamada, não há linha de solicitação. Limites do modelo e configuração atual são exibidos separadamente.", "未调用的候选": "Candidatas não chamadas", "未轮到": "Não alcançada", "未选择客户端": "Nenhum cliente selecionado", "未选择模型": "Nenhum modelo selecionado", "未配置模型的默认路由": "Rota padrão para modelos não configurados", "本地网关": "Gateway local", "本次尝试失败": "Esta tentativa falhou", "本次执行": "Esta execução", "本次状态": "Estado da solicitação", "本次用时": "Tempo da tentativa", "本次结果": "Resultado da solicitação", "本次耗时": "Duração desta tentativa", "本次请求": "Esta solicitação", "本次请求已完成": "Esta solicitação foi concluída", "本窗口未调用": "Não chamada neste período", "本轮选路预演": "Prévia de roteamento", "来源未记录": "Origem não registrada", "查看上游错误": "Ver erro do upstream", "查看上游错误摘要": "Ver resumo do erro upstream", "查看其他 {n} 个候选": "Ver outras {n} candidatas", "查看实际请求的选路、尝试与结果": "Ver o roteamento, as tentativas e os resultados de solicitações reais", "查看当前配置": "Ver configuração atual", "查看最后一次尝试": "Ver a última tentativa", "查看详情内容": "Selecionar conteúdo dos detalhes", "查看配置": "Ver configuração", "查看配置详情": "Ver detalhes da configuração", "标题生成": "Geração de título", "标题生成路由入口尚未就绪,请刷新页面后重试": "A entrada de roteamento de geração de título ainda não está pronta. Atualize a página e tente novamente.", "检测到旧版全局参与设置,请先确认转换,再管理账号启停。": "Foram encontradas configurações antigas de participação global. Confirme a conversão antes de gerenciar a ativação das contas.", "模型、网关、提供商与账号的可视化选路": "Roteamento visual entre modelos, gateway, provedores e contas", "模型未记录": "Modelo não registrado", "模型独立路由": "Rota independente por modelo", "模型独立配置": "Configuração independente do modelo", "模型看不了图片时,按下面的规则交给视觉模型;没配到的模型、以及本来就能看图的,一律原样放行。": "Quando um modelo não consegue ler imagens, as regras abaixo as entregam a um modelo de visão; modelos não configurados aqui — e os que já leem imagens — passam sem alteração.", "模型绑定不可用": "Associação do modelo indisponível", "模型路由": "Rotas de modelos", "模拟首选失败": "Simular falha da primeira opção", "正在处理": "Em processamento", "正在由 {account} 处理": "Processando com {account}", "正在编辑": "Editando", "正在读取会话绑定…": "Carregando vínculo da sessão…", "正在读取当前配置": "Carregando a configuração atual", "正在读取路由…": "Carregando rotas…", "正在选路,尚未记录上游尝试": "Roteamento em andamento; nenhuma tentativa upstream foi registrada ainda", "正在预览 {model}": "Visualizando {model}", "此为配置顺位,当前没有可用候选账号。": "Esta é a prioridade configurada; não há contas candidatas disponíveis no momento.", "此入口没有参与路由的提供商,保存后请求将明确失败。": "Esta entrada não tem provedores participantes. Após salvar, as solicitações falharão explicitamente.", "此入口没有参与路由的账号。保存后请求将明确失败,不会回退全局或自动恢复参与名单。": "Nenhuma conta participa desta entrada. Após salvar, as solicitações falham explicitamente, sem recorrer à rota global ou restaurar a lista automaticamente.", "此刻队列": "Fila atual", "此提供商当前没有可用的模型绑定,配置已保留;在模型管理中恢复绑定后会自动回来。": "Este provedor não tem uma associação de modelo disponível no momento. A configuração é mantida e volta automaticamente quando a associação é restaurada no gerenciamento de modelos.", "此模型限流": "Limite de taxa para este modelo", "每轮重新选路,不保留跨请求的账号绑定。": "Escolha uma nova rota a cada turno sem manter vínculos de conta entre solicitações.", "没有保存其他候选信息": "Nenhuma informação de outras candidatas foi salva", "没有保存调用明细": "Nenhum detalhe de chamada salvo", "没有其他候选账号": "Nenhuma outra conta candidata", "没有匹配的会话": "Nenhuma sessão correspondente", "没有匹配的候选": "Nenhum candidato correspondente", "没有匹配的提供商或账号": "Nenhum provedor ou conta correspondente", "没有匹配的记录": "Nenhum registro correspondente", "没有匹配的请求": "Nenhuma solicitação correspondente", "没有匹配的路由配置": "Nenhuma configuração de rota correspondente", "没有参与路由的账号": "Nenhuma conta participa do roteamento", "没有可添加的模型": "Nenhum modelo disponível para adicionar", "没有可用提供商,请先添加账号或安装插件。": "Nenhum provedor disponível. Adicione uma conta ou instale um plugin primeiro.", "没有可用模型": "Nenhum modelo disponível", "没有可用账号": "Nenhuma conta disponível", "没有可选的对话模型,请先启用模型和对应账号。": "Nenhum modelo de conversa disponível. Ative um modelo e a conta correspondente primeiro.", "没有独立配置的模型沿用全局路由。": "Modelos sem configuração independente usam a rota global.", "没有请求也能配置路由": "Configure o roteamento mesmo sem solicitações", "没有跳过": "Nenhum ignorado", "没有需要恢复的提供商": "Nenhum provedor precisa ser restaurado", "沿用工具服务的视觉模型": "Usar o modelo de visão do serviço de ferramentas", "流动:有请求在途": "Em movimento: solicitações em andamento", "消耗规则": "Regras de consumo", "消耗规则已保存,但路由列表刷新失败:{error}": "As regras de consumo foram salvas, mas a lista de rotas não pôde ser atualizada: {error}", "添加到全局路由,新请求将按这里的顺序选择账号。": "Adicione à rota global. Novas solicitações selecionam contas na ordem configurada aqui.", "添加到固定参与名单;以后新增的提供商仍需手动加入。": "Adicione à lista fixa de participação. Provedores futuros ainda deverão ser adicionados manualmente.", "添加参与模型": "Adicionar modelos participantes", "添加规则": "Adicionar regra", "添加路由提供商": "Adicionar provedor de roteamento", "清空选择": "Limpar seleção", "清除会话粘滞": "Limpar vínculos de sessão", "灰线:历史流量": "Cinza: tráfego histórico", "点击查看这次尝试的结果与原因": "Clique para ver o resultado e o motivo desta tentativa", "点击节点查看请求,点击齿轮编辑路由配置。": "Clique em um nó para ver solicitações e na engrenagem para editar o roteamento.", "点击节点筛选,点击齿轮进入配置": "Clique num nó para filtrar, na engrenagem para configurar", "点击节点,切换到对应请求详情": "Clique em um nó para abrir os detalhes correspondentes da solicitação", "点客户端看它用过的模型": "Clique num cliente para ver seus modelos", "点模型看它的请求": "Clique num modelo para ver as requisições", "点节点筛选,再点一次取消;点齿轮进入配置": "Clique num nó para filtrar, clique de novo para limpar; a engrenagem abre a config", "熔断保护": "Disjuntor", "特殊请求路由": "Roteamento de requisições especiais", "特殊请求路由 · 只改写模型,不改选账号规则": "Roteamento de requisições especiais · reescreve apenas o modelo, as regras de conta não mudam", "独立": "Própria", "独立账号顺序": "Ordem independente de contas", "独立路由": "Rota independente", "独立路由的账号顺序不受全局消耗规则影响": "A ordem de contas de uma rota independente não é afetada pelas regras globais de consumo", "独立配置": "Configuração independente", "画布位置不改变选路优先级": "A posição no diagrama não altera a prioridade de roteamento", "真实请求还会考虑当时的会话绑定、并发与限额状态。": "Solicitações reais também consideram vínculos de sessão, concorrência e limites naquele momento.", "确定删除「{model}」的独立路由配置?删除后该模型将使用全局路由。不会删除模型、账号或请求记录。": "Excluir a configuração de roteamento independente de “{model}”? Após a exclusão, este modelo usará a rota global. Nenhum modelo, conta ou registro de solicitação será excluído.", "确认转换": "Confirmar conversão", "禁用全部账号": "Desativar todas as contas", "禁用当前列表账号": "Desativar contas desta lista", "禁用账号": "Desativar conta", "积分到期:暂无数据": "Expiração dos créditos: sem dados", "积分:{time}": "Créditos: {time}", "移出": "removido", "移出本路由": "Remover desta rota", "移除此模型的独立路由配置,之后重新继承全局路由。不会删除模型、账号或请求记录。": "Remova a configuração de roteamento independente deste modelo para voltar a herdar a rota global. Nenhum modelo, conta ou registro de solicitação será excluído.", "移除路由提供商": "Remover provedor de roteamento", "窗口内无请求": "Sem pedidos no período", "第 {n} 位": "Posição {n}", "第 {n} 次尝试 · {name}": "Tentativa {n} · {name}", "第 {n} 顺位": "Prioridade {n}", "等待回放": "Aguardando reprodução", "等待首帧": "Aguardando o primeiro byte", "策略": "Estratégia", "筛选模型": "Filtrar por modelo", "粘性命中": "Acertos de vínculo", "粘性:{mode}": "Aderência: {mode}", "粘滞": "Aderência", "粘滞 {mode}": "Afinidade {mode}", "粘滞命中": "Vínculo encontrado", "粘滞标记": "Marcadores de vínculo", "组名": "Nome do grupo", "组名方便识别,对外模型 ID 给客户端使用。": "O nome identifica o grupo; os clientes usam o ID público do modelo.", "经过 {n} 次切换后成功,最终承载:{account}": "Sucesso após {n} trocas; conta final: {account}", "绑定:{account}": "Vinculada a: {account}", "结束时间": "Hora de término", "结果未记录": "Resultado não registrado", "统一路由设置": "Configurações globais de roteamento", "统一路由设置已保存": "Configurações globais de roteamento salvas", "继承": "Herdar", "继承全局": "Herdar global", "继承全局配置": "Herda a configuração global", "继承全局:{value}": "Herdar global: {value}", "继承时不能改这里的值;切到独立配置后才会写入这个模型。": "Não é possível alterar valores herdando; ao usar configuração própria eles são gravados neste modelo.", "编辑全局默认": "Editar padrões globais", "编辑范围": "Escopo de edição", "编辑规则": "Editar regra", "编辑路由组": "Editar grupo de rotas", "缩小画布": "Reduzir", "网关继续尝试下一个账号": "Gateway tenta a próxima conta", "耗时未记录": "Duração não registrada", "自动参与": "Participação automática", "自动参与模式下将明确停用此提供商,之后新增账号也不会自动恢复;不会删除提供商或账号。": "Desativa explicitamente este provedor no modo automático. Adicionar contas depois não o reativará. Nenhum provedor ou conta será excluído.", "自动参与(推荐)": "Automática (recomendado)", "自动消耗排序已启用,请先关闭规则再手动调整": "A ordenação automática de consumo está ativa. Desative as regras antes de reordenar manualmente", "自动:空闲五分钟释放;会话内:空闲六小时释放;每轮或关闭:不保留跨请求绑定。": "Automático: libera após cinco minutos ociosos. Sessão: após seis horas ociosas. Por turno ou Desativado: sem vínculo entre solicitações.", "自动:空闲五分钟释放;会话内:空闲六小时;每轮或关闭:不跨请求绑定。": "Auto: libera após cinco minutos ocioso; Sessão: seis horas ociosas; Por turno ou Desligado: sem vínculo entre requisições.", "自定义路由组": "Grupos de rotas personalizados", "草稿预演": "Prévia do rascunho", "被跳过": "Ignorados", "被跳过的账号": "Contas ignoradas", "规则": "Regras", "规则全局生效,不受原路由池限制;指定模型按自己的路由选账号,网关 Key 权限仍然生效。": "As regras se aplicam globalmente, sem se limitar ao pool de roteamento original. Os modelos selecionados usam seu próprio roteamento para escolher contas; as permissões da chave do gateway continuam valendo.", "规则最多 {n} 条。": "No máximo {n} regras.", "视频输入": "Entrada de vídeo", "解除": "Liberar", "解除全局路由的参与范围限制,继续使用与账号页共用的手动顺序和自动消耗规则;模型独立配置保持不变。": "Remova as restrições de participação do roteamento global, mantendo a ordem manual e as regras automáticas de consumo compartilhadas com Contas. As configurações independentes dos modelos permanecem inalteradas.", "解除全部粘滞": "Liberar todos os vínculos", "解除只清除网关的账号绑定,不删除聊天历史、不关闭粘性设置。后续成功请求仍可建立新的绑定;重启网关会清空这些进程本地记录。": "A liberação remove apenas o vínculo de conta do gateway, sem excluir o histórico de conversas nem desativar a aderência. Solicitações posteriores bem-sucedidas podem criar novos vínculos. Reiniciar o gateway limpa esses registros locais do processo.", "解除当前模型全部粘滞": "Liberar vínculos deste modelo", "解除所有模型的全部会话粘滞。不会终止在途请求,之后的请求会重新选路。": "Libere todos os vínculos de sessão de todos os modelos. Solicitações em andamento não são encerradas; as posteriores escolhem uma nova rota.", "解除这个模型的全部会话粘滞。不会终止在途请求,之后的请求会重新选路。": "Libere todos os vínculos de sessão deste modelo. Solicitações em andamento não são encerradas; as posteriores escolhem uma nova rota.", "解除这条会话": "Liberar esta sessão", "触发客户端": "Cliente de origem", "计算中…": "Calculando…", "记录所有经过网关的请求,不要求绑定客户端。": "Registra todas as solicitações que passam pelo gateway, sem exigir vínculos de clientes.", "记录时间": "Registrado em", "设置参与范围": "Configurar participação", "识别客户端": "Clientes reconhecidos", "该提供商在当前视图中已停用": "Este provedor está desativado nesta visualização", "该提供商没有账号,请先到账号页添加。": "Este provedor não tem contas. Adicione uma na página de contas primeiro.", "请填写组名和对外模型 ID": "Informe o nome do grupo e o ID público do modelo", "请检查熔断参数:失败阈值 1~20,时长 10~600 秒,恢复阈值 1~10。": "Verifique os parâmetros do disjuntor: limite de falhas de 1 a 20, duração de 10 a 600 segundos e limite de recuperação de 1 a 10.", "请求": "Solicitações", "请求 ID 未记录": "ID da solicitação não registrado", "请求仍在处理中,当前阶段:{phase}": "Solicitação em andamento; fase atual: {phase}", "请求仍在进行": "Requisição em andamento", "请求会去哪里": "Para onde vai a solicitação?", "请求回放": "Reprodução de requisições", "请求在途": "Solicitação em andamento", "请求完成不代表会话关闭;粘滞有效期不是在线状态。": "A conclusão da solicitação não indica o encerramento da sessão. A validade do vínculo não representa o estado online.", "请求已取消": "Solicitação cancelada", "请求当时的配置": "Configuração no momento da solicitação", "请求成功完成,未发生账号切换": "Solicitação concluída com sucesso sem troca de conta", "请求成功完成,未记录承载账号": "A solicitação foi concluída, mas a conta que a atendeu não foi registrada", "请求执行": "Execução da requisição", "请求执行回放": "Reprodução da execução da solicitação", "请求日志 →": "Log de requisições →", "请求未成功完成": "A solicitação não foi concluída com sucesso", "请求模型": "Modelo da solicitação", "请求活动范围": "Escopo de atividade das solicitações", "请求状态": "Status da solicitação", "请求结论": "Resultado da solicitação", "请求范围": "Intervalo de solicitações", "请求记录数据库不可用": "Banco de dados de solicitações indisponível", "请求跟踪": "Rastreamento de solicitações", "请求跟踪内容": "Conteúdo do rastreamento", "请求进入": "Requisição recebida", "请求进入网关": "Requisição chega ao gateway", "请求需要": "Requisitos da solicitação", "请选择模型": "Selecione um modelo", "读取中…": "Carregando…", "谁参与及先后顺序": "Participação e prioridade", "调整全局消耗规则": "Editar regras globais de consumo", "调整到期时间、可用余额及其他消耗规则的优先级": "Ajustar a prioridade de vencimento, saldo disponível e outras regras de consumo", "调整后续请求的配置": "Configurar solicitações posteriores", "调整模型顺序": "Reordenar modelos", "调整积分到期远近及其他消耗规则": "Ajustar a ordem de expiração dos créditos e outras regras de consumo", "调用示例": "Exemplo de solicitação", "账号 {name} 已{state}": "Conta {name}: {state}", "账号全部禁用": "Todas as contas desativadas", "账号启停与账号页同步,立即影响所有路由;策略与排序需保存。": "O estado das contas fica sincronizado com Contas e se aplica imediatamente a todas as rotas. A estratégia e a ordem precisam ser salvas.", "账号启停与默认规则": "Estado das contas e regras padrão", "账号启停操作": "Ações de ativação de contas", "账号启停立即生效;路由配置保存后生效": "O estado das contas é aplicado imediatamente; o roteamento, após salvar", "账号启停部分完成:成功 {ok} 个,失败 {fail} 个,跳过 {skip} 个。{details}": "Estado das contas parcialmente atualizado: {ok} com sucesso, {fail} falhas e {skip} ignoradas. {details}", "账号尝试": "Tentativas por conta", "账号已禁用": "Conta desativada", "账号已移除": "Conta removida", "账号操作": "Ações da conta", "账号未记录": "Conta não registrada", "账号组": "Grupos de contas", "账号组操作": "Ações do grupo de contas", "账号设置与全局保护另行保存,不属于本页路由草稿。": "As configurações de conta e a proteção global são salvas separadamente e não fazem parte deste rascunho de roteamento.", "账号设置与所有路由共用,不改变当前路由的参与名单。": "As configurações da conta são compartilhadas por todas as rotas, sem alterar a lista de participação desta rota.", "账号路由设置": "Configurações de roteamento da conta", "起点是请求本身,不依赖客户端绑定。": "O ponto de partida é a própria solicitação, sem depender de vínculos de clientes.", "跟随列表中的最新请求": "Acompanhando a solicitação mais recente da lista", "跨模型组合": "Combinação de modelos", "路径": "Caminho", "路径过多,画布仅展示前 300 条;统计覆盖完整窗口,请筛选模型缩小范围。": "Há muitos caminhos. O diagrama mostra os primeiros 300; as estatísticas cobrem todo o período. Filtre por modelo para reduzir o escopo.", "路由入口": "Entradas de rota", "路由参与操作": "Ações de participação na rota", "路由工作台": "Área de roteamento", "路由工作台不可用": "Área de roteamento indisponível", "路由快照未记录": "Registro de roteamento não salvo", "路由成员操作": "Ações do membro da rota", "路由接口不可用,请确认网关与界面已更新": "API de roteamento indisponível. Verifique se o gateway e a interface estão atualizados.", "路由接口返回了不完整的数据": "A API de roteamento retornou dados incompletos", "路由数据正在更新,请稍后重试": "Os dados de roteamento estão sendo atualizados. Tente novamente em instantes.", "路由模式": "Modo de roteamento", "路由画布": "Diagrama de roteamento", "路由策略改为{value}": "Política de roteamento alterada para {value}", "路由类型": "Tipo de rota", "路由组": "Grupo de rotas", "路由组已删除": "Grupo de rotas excluído", "路由视图": "Visualização de roteamento", "路由设置": "Configurações de roteamento", "路由配置": "Configuração de roteamento", "路由配置列表": "Lista de configurações de rota", "路由配置尚未读取": "Configuração de roteamento ainda não carregada", "路由配置已保存": "Configuração de roteamento salva", "路由配置已保存,仅影响后续选路": "Configuração salva; aplica-se apenas ao roteamento posterior", "路由配置操作": "Ações de configuração de rota", "路由配置版本不可用,请更新网关后重试": "Versão da configuração indisponível. Atualize o gateway e tente novamente.", "跳过候选": "Candidatos ignorados", "转发前就失败、或旧记录未落库时,只能看到请求本身与配置快照。": "Se falhou antes do encaminhamento, ou o registro antigo não foi salvo, só aparecem a requisição e o snapshot de configuração.", "转发失败的账号暂时休息,避免连续请求反复撞到同一故障。": "Contas com falhas de encaminhamento ficam temporariamente em repouso para evitar solicitações repetidas à mesma conta com falha.", "转换只处理当前账号;之后新增账号按账号页的启用状态使用。不会启用任何已禁用的账号。": "A conversão só afeta as contas existentes. Novas contas seguem seu estado na página Contas. Nenhuma conta desativada será ativada.", "转换旧版全局参与设置": "Converter participação global antiga", "转换旧版设置": "Converter configurações antigas", "转换结果未确认,请重新读取全局配置": "Não foi possível confirmar a conversão. Recarregue a configuração global.", "输出 {n} tokens": "{n} tokens de saída", "过程提示": "Notas do processo", "运行视图": "Visão ao vivo", "近期 {n} 次请求": "{n} solicitações recentes", "返回全部流向": "Voltar a todo o tráfego", "返回列表": "Voltar à lista", "返回实时": "Voltar ao tempo real", "返回画布": "Voltar ao diagrama", "还有 {n} 处": "mais {n}", "还没有参与模型": "Ainda não há modelos participantes", "还没有参与路由的提供商": "Ainda não há provedores participando do roteamento", "还没有可用模型,先在账号页添加账号": "Ainda não há modelos disponíveis. Adicione uma conta na página de contas primeiro.", "还没有可用的模型,请先启用模型和对应账号。": "Ainda não há modelos disponíveis; ative modelos e as contas correspondentes.", "还没有规则。压缩请求会按原模型照常转发。": "Ainda não há regras. As solicitações de compactação seguem com o modelo original.", "还没有规则。图片会照常交给原模型,看不了的就会报错。": "Ainda não há regras. As imagens seguem para o modelo original; quem não consegue lê-las falhará.", "还没有规则。标题请求会照常交给原模型。": "Ainda não há regras. As solicitações de título seguem para o modelo original.", "还没有账号,先在账号页添加;有账号的提供商才会出现在这里": "Ainda não há contas. Adicione uma na página de contas; apenas provedores com contas aparecem aqui.", "还没选压缩模型": "Nenhum modelo de compactação selecionado", "还没选原模型": "Nenhum modelo de origem selecionado", "还没选标题模型": "Nenhum modelo de título selecionado", "还没选视觉模型": "Nenhum modelo de visão selecionado", "这一页改的只作用于当前范围": "As mudanças aqui só afetam este escopo", "这个范围内最近的请求。点一条看它当时是怎么选的账号。": "Requisições recentes deste escopo. Abra uma para ver como a conta foi escolhida.", "这个范围怎么选账号": "Como este escopo escolhe contas", "这些设置由所有模型共用;提供商与账号的参与范围和顺序在各自视图中独立配置。": "Estas configurações são compartilhadas por todos os modelos. A participação e a ordem de provedores e contas são configuradas de forma independente em cada visualização.", "这份记录来自实际请求,不使用当前账号队列重新推演。": "Este registro vem de uma solicitação real, não de uma simulação com a fila atual de contas.", "这是请求当时保存的选路快照,修改当前路由不会改变这份记录。": "Este é o registro do roteamento salvo no momento da solicitação. Alterar a rota atual não modifica este registro.", "这条会话已解除或过期,不再有活跃绑定。": "Esta sessão foi liberada ou expirou e não tem mais um vínculo ativo.", "这条规则只改写被识别为标题生成的小请求,普通对话不受影响。": "Esta regra só reescreve pequenas solicitações reconhecidas como geração de título; conversas normais não são afetadas.", "这条规则里的模型收到图片时按选定的方式处理;没被任何规则选中的模型一律原样放行。": "As solicitações dos modelos desta regra são tratadas do modo escolhido quando contêm imagens; modelos não selecionados por nenhuma regra passam sem alteração.", "这条请求使用的路由组已删除,当时的快照仍可查看": "O grupo de rotas usado por esta solicitação foi excluído, mas o registro da configuração ainda está disponível", "这条请求对应的会话当前仍绑定到「{account}」。": "A sessão desta solicitação está atualmente vinculada a “{account}”.", "这条请求没有保存上游尝试明细": "Nenhum detalhe das tentativas upstream foi salvo para esta solicitação", "这条请求没有保存路由决策": "Nenhuma decisão de roteamento foi salva para esta solicitação", "这条请求没有保存路由快照,仍可查看已有的请求和尝试信息。": "Nenhum registro de roteamento foi salvo para esta solicitação. As informações existentes da solicitação e das tentativas continuam disponíveis.", "这次尝试的结果": "Resultado desta tentativa", "这里只决定是否参与本路由,不改变账号启用状态。": "Isto controla apenas a participação na rota, sem alterar a ativação da conta.", "这里的参与范围只影响当前视图;账号启停、并发和限制器属于账号本身,所有模型共用。": "A participação aqui afeta apenas esta visualização. A ativação, a simultaneidade e os limitadores pertencem à conta e são compartilhados por todos os modelos.", "这里的顺序决定实际选路;画布只为查看请求调整位置。": "Esta ordem controla o roteamento real; o diagrama reorganiza os nós apenas para facilitar a visualização das solicitações.", "这里调整的是账号组的全局消耗规则;当前独立路由的账号顺序保持不变。": "Aqui são ajustadas as regras globais de consumo do grupo de contas. A ordem de contas da rota independente atual permanece inalterada.", "连线表示参与本路由": "As linhas indicam participação nesta rota", "连线表示账号组中有已启用账号": "As linhas indicam grupos com contas ativadas", "连续失败达到阈值时暂时让位,恢复后再重新参与。": "Deixe de participar temporariamente quando falhas consecutivas atingirem o limite e retorne após a recuperação.", "退避 {time}": "Espera de {time}", "选中": "Selecionada", "选中流量详情": "Detalhes do tráfego selecionado", "选中路径": "Caminho selecionado", "选择一个或多个客户端": "Selecione um ou mais clientes", "选择一条请求查看执行过程": "Selecione uma solicitação para ver sua execução", "选择一条请求查看选路过程": "Selecione uma solicitação para ver seu roteamento", "选择作用范围后配置路由": "Selecione um escopo para configurar o roteamento", "选择左侧请求查看选路过程": "Selecione uma requisição à esquerda para ver o roteamento.", "选择模型": "Selecionar modelo", "选择请求模型后查看具体限流状态": "Selecione um modelo para ver seu estado de limite de taxa", "选择账号": "Selecionar contas", "选择路由入口": "Selecione uma entrada de rota", "选择预览模型后查看队列": "Selecione um modelo de visualização para ver a fila", "选路原因未记录": "Motivo do roteamento não registrado", "选路情况": "Decisões de roteamento", "选路方式": "Estratégia de roteamento", "选路预演": "Prévia de roteamento", "逐步回放": "Reprodução passo a passo", "配置作用范围": "Escopo da configuração", "配置第 {rank} 顺位;当前可用候选第 {effective} 顺位。": "Prioridade configurada {rank}; prioridade atual entre candidatas disponíveis {effective}.", "配置范围": "Escopo da configuração", "配置该模型": "Configurar este modelo", "配置请求的参与范围与优先顺序": "Configurar participação e prioridade no roteamento", "配置项": "Configuração", "配置顺位 {n}": "Prioridade configurada {n}", "重新读取": "Ler novamente", "重新读取会丢弃当前范围的未保存草稿,其他范围的草稿保留。": "Recarregar descarta o rascunho não salvo deste escopo. Rascunhos de outros escopos são mantidos.", "重新读取配置": "Recarregar configuração", "队列为无会话预演;实际粘性命中和重试顺延以回放为准。": "A fila é uma prévia sem vínculos de sessão. Consulte as reproduções para os acertos reais de vínculo e as trocas em novas tentativas.", "队首": "Início da fila", "阶段 {phase} · 已进行 {time}": "Fase {phase} · {time} decorrido", "限制器跳过": "Ignorada pelo limitador", "隐藏无账号 ({n})": "Ocultar sem contas ({n})", "静止蓝线:选中历史路径": "Azul estático: caminho histórico selecionado", "顺位": "Ordem", "顺序修改即时保存,仅作用于当前视图。": "Alterações na ordem são salvas imediatamente e afetam apenas esta visualização.", "顺序调整不会解除限流;有效粘滞优先于普通账号顺序。": "Reordenar não remove limites de taxa. Um vínculo válido tem prioridade sobre a ordem normal das contas.", "预演首选": "Primeira opção na prévia", "预览模型": "Modelo de visualização", "首帧": "Primeira resposta", "首帧 {time}": "Primeiro byte {time}", "首帧耗时": "Tempo até o primeiro quadro", "首帧:{time}": "Primeiro quadro: {time}", "首选账号": "Conta principal", "默认自动参与;新增可用提供商无需再添加路由,明确停用项保持不变。": "A participação é automática por padrão. Novos provedores disponíveis não precisam de configuração extra de rotas; os desativados explicitamente permanecem desativados.", "默认规则": "Regras padrão", "默认路由": "Roteamento padrão", "Agent 配置": "Configuração de agentes", "Claude Code 按 Opus / Sonnet / Haiku / 子 Agent 分档请求模型;这里把每档指向网关目录里的模型,留空表示不改写该档。": "O Claude Code solicita modelos por faixa (Opus / Sonnet / Haiku / subagente). Aponte cada faixa para um modelo do catálogo do gateway; deixe em branco para não alterar essa faixa.", "Claude Code 支持多模型菜单和逐模型思考等级;上下文及输入能力由客户端识别,不把自动压缩阈值冒充上下文窗口。": "O Claude Code oferece um menu com vários modelos e esforço de raciocínio por modelo. O cliente reconhece o contexto e os recursos de entrada; o limite de compactação automática não é tratado como janela de contexto.", "Claude Code 的 Opus / Sonnet / Haiku / 子 Agent 四档默认都指向上面选的模型;要让某一档用别的模型,在这里单独改。": "As quatro faixas do Claude Code (Opus / Sonnet / Haiku / subagente) apontam por padrão para o modelo escolhido acima. Para dar outro modelo a uma faixa, altere aqui.", "Codex 的模型目录支持逐模型上下文、图片和思考档位,不提供可写的逐模型输出上限。": "O catálogo do Codex oferece contexto, entrada de imagens e níveis de raciocínio por modelo, mas não tem um limite de saída configurável por modelo.", "Crush 需要明确填写输出上限、图片与思考能力": "O Crush exige limites de saída e suporte a imagens e raciocínio explícitos", "DSH 配置目标": "Destino da configuração DSH", "Kimi Code 只能追加能力声明,不能关闭内置识别的能力。输出上限仅新版 Anthropic 协议生效;旧版不写入思考档位。": "O Kimi Code permite adicionar declarações de recursos, mas não desativar recursos reconhecidos internamente. O limite de saída só se aplica ao protocolo Anthropic nas versões novas; níveis de raciocínio não são gravados nas versões antigas.", "MCP 服务名称": "Nome do servidor MCP", "Skill 目录名": "Nome da pasta do Skill", "Token 上限必须是 1 到 1 亿之间的整数": "Os limites de tokens devem ser inteiros entre 1 e 100 milhões", "Zed 的 API Key 仍需在客户端提供商设置中填写;本页不修改系统凭证。": "Informe a API Key nas configurações do provedor no Zed. Esta página não altera as credenciais do sistema.", "{id}(不在网关目录)": "{id} (fora do catálogo do gateway)", "· 走网关": "· via gateway", "一键把本机 AI 客户端接到本地网关:改写它自己的配置文件,保留其它设置": "Conecta os clientes de IA locais ao gateway local: reescreve o arquivo de configuração de cada um e mantém as demais configurações intactas", "一键接入": "Conexão rápida", "一键设置": "Preencher todas", "上下文": "Contexto", "上次应用未完整结束,请先查看恢复预览。": "A última aplicação não foi concluída. Confira primeiro a prévia da restauração.", "上游模型 id,例如 raccoon-coder-pro": "ID do modelo upstream, por exemplo raccoon-coder-pro", "下面是这个客户端文件里现有的配置(只读)。点「从客户端导入」把它收进我的配置,之后就能编辑和切换。": "Estes são os perfis já existentes no arquivo deste cliente (somente leitura). Clique em \"Importar do cliente\" para copiá-los para os meus perfis — depois poderão ser editados e alternados.", "不写入": "Não definir", "不要添加 /v1/messages;客户端会自行追加请求路径。": "Não acrescente /v1/messages; o cliente adiciona o caminho da requisição.", "与客户端一致": "Corresponde ao cliente", "个 · 已安装": " · instalados", "中转": "Relay", "仅修改所选 MCP 条目,保留其它配置和注释;保存不会启动服务。": "Altera apenas a entrada MCP selecionada; preserva as demais configurações e comentários. Salvar não inicia o servidor.", "仅可读取": "Somente leitura", "从客户端导入": "Importar do cliente", "从网关目录选择": "Selecionar no catálogo do gateway", "从网关目录选择模型": "Selecionar modelo no catálogo do gateway", "会用最近一次备份覆盖它的配置文件。这一步不会改动你在本页存的配置列表。": "Substitui o arquivo de configuração pelo backup mais recente. A lista de perfis desta página não é alterada.", "低": "Baixo", "使用中": "Em uso", "使用此配置": "Usar esta configuração", "使用此配置时设为默认,其他模型仍可在客户端选择。": "Este será o modelo padrão ao usar esta configuração. Os demais modelos continuam disponíveis no cliente.", "使用真实模型 ID,不要填写模型展示名。": "Use o ID real do modelo, não o nome de exibição.", "使用网关 Key": "Usar chave do gateway", "保存会直接修改客户端配置;确认前展示差异,写入前自动备份。": "Salvar altera diretamente a configuração do cliente. As diferenças são exibidas antes da confirmação e um backup é feito antes da gravação.", "保存修改": "Salvar alterações", "保存只记录方案,不修改客户端。应用时会另外展示文件差异并请求确认。": "Salvar apenas armazena o perfil. Ao aplicar, as diferenças dos arquivos são exibidas e a confirmação é solicitada separadamente.", "保存后可在配置列表中切换,不影响当前使用的配置。": "Após salvar, selecione a configuração na lista para usá-la. A configuração atual não é alterada.", "保存后同步更新客户端;写入前可查看改动,并自动备份。": "Salvar também atualiza o cliente. Confira as alterações antes de gravar; o backup é automático.", "保存方案": "Salvar perfil", "保存方案不会切换客户端;应用后改变实际默认模型。": "Salvar não troca o cliente; aplicar altera o modelo padrão real.", "保存方案不会切换客户端;选择“应用并设为默认”才改变实际默认模型。": "Salvar não troca o cliente. Escolha “Aplicar e definir como padrão” para alterar o modelo padrão real.", "保存时自动写入完整的 /chat/completions 路径。": "O caminho completo /chat/completions é gravado automaticamente.", "保存路径": "Salvar caminho", "保留导入的认证": "Manter autenticação importada", "保留现有认证": "Manter autenticação existente", "修改后点击「使用此配置」才会更新客户端。": "Após editar, selecione Usar esta configuração para atualizar o cliente.", "停用后将从客户端可选项中关闭此配置,其他配置不受影响。": "Esta configuração será desativada nas opções do cliente. As demais configurações não serão afetadas.", "停用配置": "Desativar configuração", "全选搜索结果": "Selecionar todos os resultados", "全部配置(全局覆盖)": "Todos os perfis (substituição global)", "共": "Total", "关闭后丢弃本次修改,不会保存配置或改动客户端。": "Fechar descarta estas alterações sem salvar a configuração nem modificar o cliente.", "关闭后丢弃本次草稿,不会保存空方案,也不会修改客户端。": "Fechar descarta este rascunho. Nenhum perfil vazio é salvo e o cliente não é alterado.", "内容已经一致,无需写入": "O conteúdo já é igual; não é necessário gravar", "写入中…": "Gravando…", "写入后需要重开会话才生效": "Reabra a sessão após gravar para que tenha efeito", "写入失败:{reason}": "Falha ao gravar: {reason}", "写入客户端": "Gravar no cliente", "写入文件": "Arquivo de configuração", "写入预览": "Prévia da gravação", "删除 MCP": "Excluir MCP", "删除 Skill": "Excluir Skill", "删除只移除 SKILL.md,辅助文件保留在原目录;不会执行其中的脚本。": "A exclusão remove apenas SKILL.md. Os arquivos auxiliares permanecem na pasta original; nenhum script é executado.", "删除客户端配置": "Excluir configuração do cliente", "删除已保存方案?": "Excluir perfil salvo?", "删除新建文件": "Remover arquivo recém-criado", "删除方案": "Excluir perfil", "删除配置": "Excluir configuração", "删除配置?": "Excluir configuração?", "动态表达式、独立作用域或全局覆盖的 MCP 为只读,请在 DSH 中编辑。": "Entradas MCP com expressões dinâmicas, escopos isolados ou substituições globais são somente leitura. Edite-as no DSH.", "单配置": "Perfil único", "另一项配置操作尚未完成": "Outra operação de configuração ainda está em andamento", "只保存变量引用,不修改系统环境;请在启动客户端的环境里设置变量值。": "Apenas a referência da variável é salva. Defina seu valor no ambiente que inicia o cliente; o ambiente do sistema não é alterado.", "只删除 Agent2API 中的方案,不修改客户端当前配置。": "Apenas o perfil no Agent2API é excluído. A configuração atual do cliente permanece intacta.", "只改 enabled 与默认项,其余条目原样保留": "Apenas as flags enabled e padrão mudam; os demais itens ficam intactos", "只改属于我们的那几个键,其它设置原样保留": "Apenas as nossas chaves mudam; as demais configurações ficam intactas", "可先新增配置,安装后再使用": "Você pode adicionar configurações agora e usá-las após a instalação", "可同时启用多条;切换只改 enabled 与默认项": "Vários itens podem ficar ativos ao mesmo tempo; a troca altera apenas as flags enabled e padrão", "可搜索并多选模型;上下文、输出上限和能力分别从网关目录自动填入。": "Pesquise e selecione vários modelos. A janela de contexto, o limite de saída e os recursos de cada modelo são preenchidos pelo catálogo do gateway.", "可选模型": "Modelos disponíveis", "同一时刻只有一套生效;写入 = 把这一套整段写进客户端文件": "Só um perfil fica ativo por vez; gravar copia esse perfil para o arquivo do cliente", "启用 {name}": "Ativar {name}", "启用此配置": "Ativar esta configuração", "启用配置": "Ativar configuração", "图形化管理客户端原生配置;保存方案与应用配置分开。": "Gerencie visualmente a configuração nativa dos clientes; salvar perfis e aplicar configurações são ações separadas.", "图片输入": "Entrada de imagens", "在客户端管理认证": "Gerenciar autenticação no cliente", "填写服务根地址,不要附加 /v1beta 或 generateContent 路径。": "Informe a URL raiz do serviço. Não acrescente /v1beta nem um caminho generateContent.", "处理中…": "Processando…", "备注": "Observação", "多套配置": "Vários perfis", "多配置 · 已启用 {n}": "Vários perfis · {n} ativos", "子 Agent": "Subagente", "安装或初始化后可重新检测;自定义安装位置可指定配置路径。": "Verifique novamente após instalar ou inicializar. Para locais personalizados, informe o caminho da configuração.", "完整配置文件路径": "Caminho completo do arquivo de configuração", "官方直连": "Oficial direto", "客户端列表加载失败:{reason}": "Falha ao carregar a lista de clientes: {reason}", "客户端列表响应无效": "Resposta inválida da lista de clientes", "客户端协议": "Protocolo do cliente", "客户端原生 MCP 配置(JSON)": "Configuração MCP nativa do cliente (JSON)", "客户端原生配置": "Configuração nativa do cliente", "客户端官方配置说明": "Guia oficial de configuração do cliente", "客户端实际配置": "Configuração real do cliente", "客户端必须实际使用同一个配置文件;本页不改变客户端启动参数。": "O cliente deve usar o mesmo arquivo de configuração. Esta página não altera os argumentos de inicialização.", "客户端文件已有外部修改,自动恢复会拒绝覆盖。": "O arquivo do cliente foi alterado externamente. A restauração automática recusará sobrescrevê-lo.", "客户端条目启用状态": "Estado de ativação da entrada no cliente", "客户端清单": "Clientes", "客户端管理分类": "Categoria de gerenciamento do cliente", "客户端自己的设置优先;这里写的是写入时带进去的初值": "As configurações do próprio cliente prevalecem; aqui é apenas o valor inicial gravado", "客户端资源已保存并校验": "Recursos do cliente salvos e verificados", "客户端选项": "Opções do cliente", "客户端配置写入后未通过校验": "A configuração do cliente não passou na verificação após a gravação", "客户端配置已经一致,无需写入": "A configuração do cliente já corresponde; nenhuma gravação é necessária", "客户端默认地址": "Endpoint padrão do cliente", "密钥在 Agent2API 中加密保存;使用时按客户端要求写入。": "As chaves são armazenadas criptografadas no Agent2API e gravadas no formato exigido pelo cliente quando utilizadas.", "密钥已隐藏;绿色为新增,红色为删除。所有实际写入文件都列在这里。": "As chaves estão ocultas. Verde indica adições e vermelho indica remoções. Todos os arquivos a serem gravados estão listados aqui.", "导入模型及客户端未知字段会保留;本页删除方案不会删除客户端条目。": "Os modelos importados e os campos desconhecidos do cliente são preservados. Excluir um perfil aqui não exclui entradas do cliente.", "将删除此配置及客户端中的对应条目,其他配置不受影响。": "Esta configuração e a entrada correspondente no cliente serão excluídas. As demais configurações não serão afetadas.", "尚未初始化": "Não inicializado", "尚未支持这个客户端的资源管理": "O gerenciamento de recursos deste cliente ainda não é suportado", "展开可调整能力;— 表示客户端未声明": "Expanda para ajustar as capacidades; — indica que o cliente não declarou", "已保存": "Salvo", "已保存方案": "Perfis salvos", "已保存,未应用": "Salvo, não aplicado", "已写入 {name}": "Gravado em {name}", "已写入 {name};这个客户端只在启动时读配置,重开一个会话才生效": "Gravado em {name}; este cliente só lê a configuração na inicialização, então reabra uma sessão para aplicar", "已删除保存方案,客户端配置未改动": "Perfil salvo excluído; a configuração do cliente não foi alterada", "已安装": "Instalado", "已导入 {n} 套方案": "{n} perfis importados", "已按备份还原 {name}": "{name} restaurado a partir do backup", "已收进我的配置:{n} 条": "Importados para os meus perfis: {n}", "已检测到": "Detectado", "已选择": "Selecionado", "已选模型": "Modelos selecionados", "已配置": "Configurado", "已预填网关地址、协议、Key 与模型;确认后直接写入客户端,不需要先保存方案。": "A URL do gateway, o protocolo, a Key e o modelo já estão preenchidos. Confirme para gravar diretamente no cliente sem salvar um perfil antes.", "应用": "Aplicar", "应用中…": "Aplicando…", "应用到客户端": "Aplicar ao cliente", "应用并设为默认": "Aplicar e definir como padrão", "应用时使用当前启用的真实 Key;预览会隐藏密钥。": "A aplicação usa uma chave real atualmente ativa; as prévias ocultam o segredo.", "当前环境不支持保存": "Não é possível salvar neste ambiente", "当前环境不支持保存(桥接方法缺失)": "Não é possível salvar neste ambiente (método de bridge ausente)", "当前环境不支持写入(桥接方法缺失)": "Não é possível gravar neste ambiente (método de bridge ausente)", "当前环境不支持客户端接管(桥接方法缺失)": "A conexão de clientes não está disponível neste ambiente (método de bridge ausente)", "当前环境不支持客户端配置": "A configuração de clientes não está disponível neste ambiente", "当前环境不支持导入": "Não é possível importar neste ambiente", "当前环境不支持导入(桥接方法缺失)": "Não é possível importar neste ambiente (método de bridge ausente)", "当前环境不支持应用": "Não é possível aplicar neste ambiente", "当前环境不支持恢复": "Não é possível restaurar neste ambiente", "当前环境不支持还原(桥接方法缺失)": "Não é possível restaurar neste ambiente (método de bridge ausente)", "当前环境不支持预览": "A prévia não está disponível neste ambiente", "当前环境无法读取网关模型目录": "Não é possível ler o catálogo de modelos do gateway neste ambiente", "当前网关未启用 API Key 鉴权;占位值只用于客户端要求非空密钥的场景。": "A autenticação por chave de API não está ativa neste gateway. Um valor provisório é usado apenas quando o cliente exige uma chave não vazia.", "当前默认": "Padrão atual", "思考能力": "Suporte a raciocínio", "恢复作用在网关所在机器;密钥已隐藏,不会覆盖应用后的外部修改。": "A restauração atua na máquina do gateway. As chaves estão ocultas e alterações externas feitas após a aplicação não serão sobrescritas.", "恢复自动检测": "Restaurar detecção automática", "所有操作作用在网关所在机器。": "Todas as operações atuam na máquina do gateway.", "所选 Key 下没有可用的对话模型,请先启用模型或手动填写。": "Nenhum modelo de conversa está disponível para esta Key. Ative um modelo ou informe um manualmente.", "所选 Key 下没有可用的对话模型,请先启用模型或更换 Key。": "Nenhum modelo de conversa está disponível para esta chave. Ative um modelo ou escolha outra chave.", "所选 Key 无权使用当前模型,请重新选择": "Esta Key não tem permissão para usar o modelo atual. Selecione novamente.", "手动添加模型": "Adicionar modelo manualmente", "手机端可查看客户端实际配置并撤销上次应用;编辑方案请使用桌面端。": "No celular, consulte a configuração do cliente e desfaça a última aplicação. Use a interface desktop para editar perfis.", "手机端可查看模型配置、撤销上次应用,并管理提示词、Skill 与 MCP。": "No celular, consulte configurações de modelos, desfaça a última aplicação e gerencie prompts, Skills e MCP.", "指定配置路径": "Informar caminho da configuração", "按备份还原": "Restaurar do backup", "按备份还原 {name}?": "Restaurar {name} a partir do backup?", "换 Key 后会按新 Key 的授权重新核对已选模型": "Trocar a chave revalida os modelos selecionados conforme as permissões da nova chave.", "接入后使用此默认模型,其它已选模型仍可在客户端切换。": "Este modelo se torna o padrão. Os outros modelos selecionados continuam disponíveis no cliente.", "接入客户端": "Conectar cliente", "接入本网关": "Conectado a este gateway", "接入状态来自客户端配置文件。恢复前显示差异;文件被其他程序修改时拒绝覆盖。": "O estado da conexão vem do arquivo de configuração do cliente. A restauração exibe as diferenças antes e recusa sobrescrever arquivos alterados por outros programas.", "接入端点": "Endpoint", "接口基址": "URL base da API", "搜索客户端": "Pesquisar clientes", "搜索客户端 / 配置文件…": "Pesquisar clientes ou arquivos de configuração…", "搜索已选模型": "Pesquisar modelos selecionados", "搜索模型 ID / 展示名…": "Pesquisar ID ou nome de exibição do modelo…", "撤销上次应用": "Desfazer última aplicação", "操作目标:网关所在机器": "Destino: máquina do gateway", "收起更多配置": "Ocultar configurações adicionais", "收起模型选择": "Ocultar seleção de modelos", "改写网关所在机器上的客户端配置": "Gerenciar a configuração de clientes na máquina do gateway", "改动": "Alterado", "放弃修改": "Descartar alterações", "放弃未保存的修改?": "Descartar alterações não salvas?", "新增": "Adicionado", "新增 MCP": "Adicionar MCP", "新增配置": "Adicionar configuração", "新建 Skill": "Novo Skill", "新建文件": "Novo arquivo", "新建方案或导入当前配置;保存后再决定是否应用。": "Crie um perfil ou importe a configuração atual. Decida se deseja aplicá-lo após salvar.", "新建配置": "Novo perfil", "新建配置方案": "Novo perfil de configuração", "新版网页版和桌面版分别保存模型配置;旧版模型设置共享,MCP 始终只写入所选运行方式。": "As versões web e desktop mais recentes salvam os modelos separadamente. As configurações legadas são compartilhadas; o MCP sempre é gravado apenas no perfil selecionado.", "新配置": "Novo perfil", "方案中的密钥加密保存;客户端原生配置可能要求明文。": "As chaves dos perfis são armazenadas com criptografia. A configuração nativa do cliente pode exigir texto simples.", "方案名称": "Nome do perfil", "方案已保存,尚未应用到客户端": "Perfil salvo, ainda não aplicado ao cliente", "无改动": "Sem alterações", "无配置": "Sem perfil", "无需认证": "Sem autenticação", "旧版共享设置": "Configurações compartilhadas legadas", "暂无预览": "Ainda sem prévia", "更多配置": "Configurações adicionais", "最多选择 {n} 个模型": "Selecione até {n} modelos", "最近检测:{time}": "Última verificação: {time}", "有改动": "Alterado", "未声明 / 保留": "Não declarado / manter", "未安装": "Não instalado", "未找到客户端程序或配置文件": "Nenhum programa ou arquivo de configuração do cliente encontrado", "未接入本网关": "Não conectado a este gateway", "未接管": "Não conectado", "未检测到": "Não detectado", "未检测到安装": "Nenhuma instalação detectada", "未读取到可识别的客户端配置": "Nenhuma configuração reconhecida do cliente encontrada", "未走网关": "Sem passar pelo gateway", "本机": "Este aparelho", "本机服务": "Serviço local", "本机没有找到 {name}": "{name} não foi encontrado nesta máquina", "本机网关": "Gateway local", "本网关": "Este gateway", "来自客户端文件,只读": "Do arquivo do cliente, somente leitura", "查看文件改动": "Ver alterações nos arquivos", "桌面版": "Versão desktop", "模型 ID": "ID do modelo", "模型 ID 不能为空或重复": "Os IDs dos modelos não podem estar vazios nem duplicados", "模型 id": "ID do modelo", "模型 {n}": "Modelo {n}", "模型展示名": "Nome de exibição do modelo", "模型思考等级": "Nível de raciocínio do modelo", "模型或客户端不支持所选思考等级": "O modelo ou cliente não oferece suporte ao nível de raciocínio selecionado", "模型未声明思考档位,保留客户端默认,不显示猜测选项。": "O modelo não declara níveis de raciocínio. Os padrões do cliente são preservados e opções presumidas não são exibidas.", "模型目录响应无效": "Resposta inválida do catálogo de modelos", "模型目录读取失败,可手动填写真实模型 ID。": "Falha ao ler o catálogo de modelos. Você pode informar manualmente o ID real do modelo.", "模型配置": "Configurações de modelos", "模型默认": "Padrão do modelo", "正在检测客户端…": "Detectando clientes…", "正在生成准确预览…": "Gerando prévia exata…", "正在生成预览…": "Gerando prévia…", "正在读取本机客户端…": "Lendo clientes locais…", "正在读取网关模型并填入配置…": "Carregando modelos do gateway e preenchendo a configuração…", "此处来自磁盘文件,不代表正在运行的旧会话已经重载。": "Estes dados são lidos do disco. Isso não significa que uma sessão existente recarregou a configuração.", "此配置未在客户端中使用,删除不会改变当前使用的配置。": "Esta configuração não está em uso no cliente. Excluí-la não altera a configuração atual.", "每个客户端可以有": "Cada cliente pode ter", "每个模型独立保存能力;展开可调整,未声明的数据不会猜测填写。": "Os recursos são salvos por modelo. Expanda para ajustar; valores não declarados não são presumidos.", "没有匹配的客户端": "Nenhum cliente correspondente", "没有可导入的新条目(可能还没配过,或已经在我的配置里)": "Nenhuma entrada nova para importar (ainda não configurado ou já está nos meus perfis)", "没有新的条目可收(都已在我的配置里)": "Nenhuma entrada nova para importar (todas já estão nos meus perfis)", "没有新的配置可以导入": "Nenhuma configuração nova para importar", "没有检测到可接管的客户端": "Nenhum cliente gerenciável detectado", "没有选中配置": "Nenhuma configuração selecionada", "没有选中配置方案": "Nenhum perfil de configuração selecionado", "添加到客户端": "Adicionar ao cliente", "点击右上角「新增配置」,添加网关或其他服务": "Use Adicionar configuração no canto superior direito para adicionar um gateway ou outro serviço", "点击模型展开详细配置;搜索只筛选显示,不会移除模型。": "Clique em um modelo para expandir suas configurações. A pesquisa apenas filtra a lista exibida; não remove modelos.", "版本未识别": "Versão não identificada", "状态来自配置文件,已打开的会话可能需要重新加载": "O estado vem dos arquivos de configuração; sessões existentes podem precisar ser recarregadas", "环境变量名": "Nome da variável de ambiente", "生成中…": "Gerando…", "留空保留 / 未声明": "Em branco: manter / não declarado", "留空保留已保存密钥": "Deixe em branco para manter a chave salva", "留空的分档会以 Claude Code 内置模型名请求网关;网关没有同名模型时该档会失败,建议点「一键设置」。": "Uma faixa em branco faz o Claude Code pedir ao gateway com o nome de modelo interno dele; essa faixa falha quando o gateway não tem um modelo com esse nome. Prefira \"Preencher todas\".", "留空表示不写入": "Em branco: não gravar", "确认": "Confirmar", "确认使用": "Confirmar uso", "确认停用": "Confirmar desativação", "确认写入": "Confirmar gravação", "确认写入后会同步修改客户端开关;取消不会生效。": "Confirmar a gravação também atualiza o estado de ativação da entrada no cliente. Cancelar mantém o estado atual.", "确认写入后更新客户端默认模型;取消不会生效。": "O modelo padrão do cliente é atualizado após confirmar a gravação. Cancelar mantém o modelo atual.", "确认写入客户端资源": "Confirmar gravação de recursos do cliente", "确认删除": "Confirmar exclusão", "确认删除客户端资源": "Confirmar exclusão de recursos do cliente", "确认后将切换到此配置,原配置会保留在列表中。": "Confirme para usar esta configuração. A anterior será mantida na lista.", "确认后将更新 {name} 的配置文件,原配置会自动备份。": "Confirme para atualizar os arquivos de configuração de {name}. Os arquivos originais terão backup automático.", "确认后将此配置加入客户端,已有配置会保留。": "Confirme para adicionar esta configuração ao cliente. As existentes serão mantidas.", "确认应用": "Confirmar aplicação", "确认恢复": "Confirmar restauração", "确认接入": "Confirmar conexão", "移除模型会写入客户端配置;其它条目和未知字段保留,确认前可查看差异。": "Remover um modelo altera a configuração do cliente. As outras entradas e os campos desconhecidos são preservados; confira as diferenças antes de confirmar.", "移除模型:{name}": "Remover modelo: {name}", "第一把启用的 Key": "Primeira chave ativa", "第三方中转": "Relay de terceiros", "编辑 MCP": "Editar MCP", "编辑 Skill": "Editar Skill", "编辑客户端配置": "Editar configuração do cliente", "编辑配置": "Editar configuração", "编辑配置方案": "Editar perfil de configuração", "编辑:{name}": "Editar: {name}", "网关目录共 {n} 个": "{n} no catálogo do gateway", "网页版": "Versão web", "自定义路径": "Caminho personalizado", "行号由后端逐行比对给出": "Os números de linha vêm da comparação linha a linha do backend", "装好后回到这一页点「重新检测」,它会出现在上面的列表里。": "Depois de instalar, volte a esta página e clique em \"Verificar novamente\" — ele aparecerá na lista acima.", "视频输入": "Entrada de vídeo", "解除接入本网关": "Desconectar deste gateway", "认证方式": "Método de autenticação", "设为默认": "Definir como padrão", "请先在「网关 Key」页创建并启用一把 Key": "Primeiro crie e ative uma Key na página de Keys do gateway.", "请在 Zed 提供商设置中保存 API Key;本页不修改系统凭证存储。": "Salve a chave de API nas configurações de provedores do Zed. Esta página não altera o armazenamento de credenciais do sistema.", "请填写 API Key": "Informe uma chave de API", "请填写方案名称": "Informe um nome para o perfil", "请填写有效的 http 或 https 地址": "Informe uma URL HTTP ou HTTPS válida", "请填写有效的环境变量名": "Informe um nome de variável de ambiente válido", "请填写配置名称": "Informe um nome para a configuração", "请至少添加一个模型": "Adicione pelo menos um modelo", "请补全配置后使用": "Complete a configuração antes de usar", "请输入密钥": "Informe uma chave", "请选择": "Selecione uma opção", "请选择模型": "Selecione um modelo", "读取失败": "Falha na leitura", "读取客户端配置失败:{reason}": "Falha ao ler a configuração do cliente: {reason}", "走网关": "Via gateway", "路径属于网关所在机器,不是浏览器所在设备。只改变检测目标,不修改客户端文件。": "O caminho pertence à máquina do gateway, não ao dispositivo do navegador. Apenas o alvo da detecção muda; os arquivos do cliente não são alterados.", "输出上限": "Saída máxima", "返回编辑": "Voltar à edição", "还原中…": "Restaurando…", "还原失败:{reason}": "Falha ao restaurar: {reason}", "还没有配置": "Nenhum perfil ainda", "还没有配置。点「新建配置」建一套指向本机网关的,再写入客户端。": "Nenhum perfil ainda. Clique em \"Novo perfil\" para criar um apontando para o gateway local e depois grave no cliente.", "还没有预览。选一套配置后这里会显示写入客户端之后的样子。": "Ainda sem prévia. Escolha um perfil e aqui será mostrado como o arquivo do cliente ficará após a gravação.", "这个客户端不从网关目录选模型,用右侧的「添加模型」逐个填写。": "Este cliente não seleciona modelos do catálogo do gateway; adicione um por um à direita.", "这个客户端不支持所选协议": "Este cliente não suporta o protocolo selecionado", "这个客户端不能接入本网关": "Este cliente não pode se conectar a este gateway", "这个客户端会自己重读配置,写入后开新会话即生效。": "Este cliente recarrega a configuração sozinho; abra uma nova sessão após gravar.", "这个客户端只在启动时读配置:写入后重开一个会话才生效。": "Este cliente só lê a configuração na inicialização: reabra uma sessão após gravar.", "这个客户端的配置里没有读出地址(可能还没配过,或形状不认识)": "Não foi possível ler um endereço da configuração deste cliente (talvez ainda não esteja configurado ou o formato seja desconhecido)", "这个客户端自己支持多套配置并存": "Este cliente suporta vários perfis lado a lado", "这个客户端自己管理多套配置,可同时启用多条;切换只改 enabled 与默认项,不动它的模型清单。": "Este cliente gerencia vários perfis e pode ativar mais de um; a troca altera apenas as flags enabled e padrão, nunca a lista de modelos dele.", "这个客户端还没有 MCP": "Este cliente ainda não tem servidores MCP", "这个客户端还没有 Skill": "Este cliente ainda não tem Skills", "这个客户端需要填写模型上下文窗口": "Este cliente exige a janela de contexto do modelo", "这套配置是干什么用的(只显示在本页)": "Para que serve este perfil (exibido apenas nesta página)", "这是待应用状态;保存不会立即改变客户端开关。": "Este é o estado pendente. Salvar não ativa ou desativa imediatamente a entrada do cliente.", "这里只调整此模型,不影响其它模型。": "As alterações aqui afetam apenas este modelo.", "这里只选择客户端实际支持的协议,不改变上游提供商协议。": "Aqui só podem ser selecionados protocolos realmente suportados pelo cliente. O protocolo do provedor upstream não é alterado.", "连接方式": "Tipo de conexão", "连接配置": "Configurações de conexão", "选一个客户端开始": "Escolha um cliente para começar", "选择 MCP": "Selecionar MCP", "选择 Skill": "Selecionar Skill", "选择模型": "Selecionar modelos", "选择网关 Key": "Selecionar Key do gateway", "选择要接入的模型;确认前展示文件改动,写入前自动备份。": "Escolha os modelos para conectar. As alterações são exibidas antes da confirmação e um backup é feito antes de gravar.", "选择配置目标": "Selecionar destino da configuração", "通常以 /v1 结尾,不要附加具体请求路径。": "Geralmente termina em /v1. Não acrescente um caminho de requisição específico.", "部分已选模型已不可用或所选 Key 无权使用,请移除或更换 Key。": "Alguns modelos selecionados estão indisponíveis ou não são permitidos por esta chave. Remova-os ou escolha outra chave.", "配置": "Perfil", "配置位置与说明": "Local e detalhes da configuração", "配置列表": "Configurações", "配置列表格式不匹配,请重启网关后刷新页面": "O formato da lista de configurações é incompatível. Reinicie o gateway e atualize esta página.", "配置可读写": "Configuração com leitura e gravação", "配置名称": "Nome da configuração", "配置差异": "Diferenças da configuração", "配置已保存,可在列表中点击使用": "Configuração salva. Selecione-a na lista para usar.", "配置已删除": "Configuração excluída", "配置已删除,客户端文件已同步更新": "Configuração excluída e arquivos do cliente atualizados", "配置已应用并读回校验;请重开客户端或会话": "Configuração aplicada e verificada por releitura. Reinicie o cliente ou a sessão.", "配置已恢复并校验": "Configuração restaurada e verificada", "配置操作": "Ações da configuração", "配置文件已写入并校验;尚未验证 DSH 是否加载,请在所选客户端新建会话确认。": "Os arquivos de configuração foram gravados e verificados. O carregamento pelo DSH não foi verificado; abra uma nova conversa no cliente selecionado para confirmar.", "配置来源": "Origem do perfil", "重新填入目录能力": "Preencher recursos pelo catálogo", "重新检测": "Verificar novamente", "重新生成预览": "Gerar prévia novamente", "需要重新编辑:": "Precisa ser editado novamente:", "需重开会话生效": "Reabra a sessão para aplicar", "预览并保存": "Visualizar e salvar", "预览草稿改动": "Prévia das alterações do rascunho", "高": "Alto", "高级选项": "Opções avançadas", "默认模型": "Modelo padrão", "默认模型必须来自模型列表": "O modelo padrão deve estar na lista de modelos", "默认模型思考等级": "Nível de raciocínio do modelo padrão", "(本机网关 / 官方直连 / 第三方中转 / 本机服务),随时切换。单配置客户端切换 = 整段覆写并备份原文件;多配置客户端(如 ZCode)只改 enabled 与默认项,它自己的条目一律不动。": "(gateway local / oficial direto / relay de terceiros / serviço local) e alterne entre eles quando quiser. Em clientes de perfil único, a troca reescreve o perfil inteiro e faz backup do arquivo original; em clientes multiperfil como o ZCode, apenas as flags enabled e padrão mudam, sem tocar nos itens próprios deles.", "API Key 无效或无权限": "A API Key é inválida ou não tem permissão", "API 接口文档": "Documentação da API", "DSH 使用 Agent 页当前选择的配置目标。写入后请在 DSH 中确认工具是否出现,必要时重启对应客户端。": "O DSH usa o destino selecionado na página Agent. Após gravar, verifique se as ferramentas aparecem no DSH e reinicie o cliente correspondente, se necessário.", "Key 明文只会写入所选客户端的本机配置文件。": "A Key em texto puro só é gravada nos arquivos de configuração locais dos clientes selecionados.", "MCP & Skills": "MCP & Skills", "MCP 接入信息": "Informações de conexão MCP", "Node.js 无需额外依赖,推荐使用;Python 需要本机有 python。": "Node.js não exige dependências extras e é recomendado; Python exige python nesta máquina.", "{name} 接入客户端": "Conectar {name} aos clientes", "上游提供商": "Provedor upstream", "上游提供商配置": "Configuração do provedor upstream", "上游提供商配置由各接入协议共享,改动后所有协议同时生效。": "As configurações do provedor upstream são compartilhadas por todos os protocolos de acesso; alterações valem para todos ao mesmo tempo.", "上游没有返回结果": "O upstream não retornou resultados", "上游请求超时": "A requisição ao upstream expirou", "下载图片 {index}": "Baixar imagem {index}", "不指定": "Não especificado", "中文": "Chinês", "仅搜索": "Somente busca", "仅支持单选,默认为 Tavily。": "Apenas seleção única; o padrão é Tavily.", "仅显示已启用且至少有一个可用模型的提供商。": "Somente provedores habilitados e com pelo menos um modelo disponível são exibidos.", "仅显示该提供商下已启用的模型。": "Somente modelos habilitados deste provedor são exibidos.", "任务编号或原提交编号,至少提供一项": "Informe o ID da tarefa ou o ID original do envio", "作为远程 MCP 服务,在支持 MCP 的客户端配置里填写地址即可接入。": "Expõe um serviço MCP remoto; basta informar a URL na configuração de um cliente compatível com MCP.", "使用已有账号生成或编辑图片,支持任务查询与本机文件保存。": "Gere ou edite imagens com contas existentes, consulte tarefas e salve arquivos localmente.", "保存能力配置": "Salvar configuração de capacidades", "保留至 {time}": "Disponível até {time}", "共 {count} 项能力": "{count} capacidades", "内部请求本站网关时使用的网关 Key;额度、限流与请求日志记在该 Key 上。": "A Key do gateway usada nas chamadas internas a este gateway; cota, limites de taxa e logs de requisição ficam registrados nessa Key.", "内部调用 API Key": "API Key de chamada interna", "写入失败": "Falha ao gravar", "写入配置": "Gravar configuração", "单次图片上限": "Imagens por solicitação", "卸载失败": "Falha ao remover", "参考图允许读取的目录": "Pastas permitidas para referências", "参考图链接或已生成图片 ID;本地桥接还可传文件路径": "URLs de referência ou IDs de imagens geradas; a ponte local também aceita caminhos de arquivos", "取消全选": "Desmarcar tudo", "只保存新文件,不覆盖已有不同内容。目录权限写入客户端配置,更新配置时需要重新确认。": "Somente arquivos novos são salvos; conteúdos existentes diferentes nunca são sobrescritos. As permissões das pastas ficam na configuração do cliente e precisam ser confirmadas ao atualizá-la.", "可选。留空时不传,由模型映射的「思考覆盖」决定。": "Opcional. Deixe vazio para não enviar e deixar a \"substituição de raciocínio\" do mapeamento decidir.", "可选,每行一个已有绝对目录。输出目录默认允许读取;其他位置的文件不会读取或上传。": "Opcional: uma pasta existente com caminho absoluto por linha. A pasta de saída permite leitura por padrão; arquivos de outros locais não são lidos nem enviados.", "启用 / 停用此服务": "Habilitar / desabilitar este serviço", "图片分析": "Análise de imagem", "图片占用 {used} MiB,生成中预留 {reserved} MiB。": "Imagens usam {used} MiB; tarefas em andamento reservam {reserved} MiB.", "图片生成配置": "Configurações de geração de imagens", "图片生成配置已保存": "Configurações de geração de imagens salvas", "图片输出目录": "Pasta de saída das imagens", "在支持远程 MCP 的客户端中填写该地址,并使用网关 Key 作为 Bearer 令牌。": "Informe esta URL em um cliente compatível com MCP remoto e use uma Key do gateway como token Bearer.", "复制失败,请手动选择后复制": "Falha ao copiar; selecione e copie manualmente", "复制文档": "Copiar documento", "复用「账号」页的登录态,不需要额外填写搜索密钥。账号停用或删除后不会自动换号。": "Usa o login existente da página Contas, sem exigir outra chave de busca. Contas desabilitadas ou removidas não são substituídas automaticamente.", "复用已有账号生图,不改变 Agent 的对话模型。实际调用遵守接入 Key 的模型和提供商权限。": "Gere imagens com contas existentes sem alterar o modelo de conversa do Agent. As chamadas respeitam as permissões de modelos e provedores da Key de conexão.", "存储上限(MiB)": "Limite de armazenamento (MiB)", "安装目标": "Destinos de instalação", "完整的图片要求": "Requisitos completos da imagem", "客户端环境": "Ambiente dos clientes", "客户端调用超时设为 120 秒;后台生成超时由服务配置控制,未完成时通过任务编号查询。": "As chamadas do cliente expiram após 120 segundos. O prazo de geração segue a configuração do serviço; consulte tarefas pendentes pelo ID.", "客户端配置示例": "Exemplo de configuração do cliente", "密钥已清除": "Key removida", "密钥或账号登录态无效": "A chave de API ou o login da conta é inválido", "密钥提示": "Dica da Key", "将按服务的工具执行超时({seconds} 秒)同步写入客户端配置。": "O tempo limite de execução de ferramentas do serviço ({seconds}s) será gravado na configuração do cliente.", "将搜索、视觉等能力通过 MCP 或 Skills 接入客户端。": "Conecte os clientes a recursos de busca, visão e outros por meio de MCP ou Skills.", "尚未配置图片生成,请先选择可用的生图模型并保存。": "A geração de imagens não está configurada. Selecione um modelo disponível e salve.", "尚未配置视觉模型,配置前调用方会收到“未配置”错误。": "Nenhum modelo de visão configurado; os chamadores recebem um erro de \"não configurado\" até que seja configurado.", "工具执行超时": "Tempo limite de execução de ferramentas", "工具执行超时已保存": "Tempo limite de execução salvo", "工具服务": "Serviços de ferramentas", "已写入 {count} 个客户端配置": "Configuração gravada em {count} clientes", "已处理 {count} 个目标": "{count} destinos processados", "已复制": "Copiado", "已失效": "Inválida", "已安装到 {count} 个客户端": "Instalado em {count} clientes", "已完成": "Concluído", "已完成 {count} 个目标": "{count} destinos concluídos", "已接入 {count} 个目标": "Conectado a {count} destinos", "已有账号": "Conta existente", "已有账号搜索只支持搜索,不支持网页抓取;请求会使用绑定账号的额度与出网设置。": "Fontes por conta oferecem apenas busca, não captura de páginas. As requisições usam a cota e as configurações de conexão de saída da conta vinculada.", "已检查保存的配置,未发起生图;账号实际额度与上游可用性以调用结果为准。": "Configuração salva verificada sem gerar imagens. A cota real e a disponibilidade do provedor são confirmadas durante a chamada.", "已绑定的搜索账号不存在,请重新选择": "A conta de busca vinculada não existe mais; selecione outra conta", "已绑定的搜索账号已停用": "A conta de busca vinculada está desabilitada", "已绑定账号不可用,请重新选择": "A conta vinculada está indisponível; selecione outra conta", "已过期或清理": "Expirado ou removido", "已选择 {count} / {total} 个": "{count} / {total} selecionados", "已配置的 API Key 已失效(被删除或禁用),请重新选择并保存。": "A API Key configurada não é mais válida (removida ou desabilitada); selecione outra e salve.", "当前提供商插件不支持账号搜索,请更新插件": "O plugin atual do provedor não oferece busca por conta; atualize o plugin", "当前模型:{provider} / {model}": "Modelo atual: {provider} / {model}", "当前没有可用的安装目标": "Nenhum destino de instalação disponível", "当前没有已安装/已配置的目标": "Nada instalado ou configurado ainda", "当前网关 Key 无权使用所选账号搜索来源": "Esta Key do gateway não tem permissão para usar as fontes de busca por conta selecionadas", "打包为 Agent Skill,由 Agent2API 面板安装到本机客户端目录。": "Empacotado como Agent Skill e instalado nos diretórios locais dos clientes pelo painel do Agent2API.", "批量抓取 1~10 个 URL,使用后台选中的单个抓取提供商。": "Captura 1-10 URLs usando o único provedor de captura selecionado no servidor.", "批量搜索 1~10 条查询,并发调用后台选中的提供商后合并重复来源。": "Pesquisa 1-10 consultas em paralelo com os provedores selecionados no servidor e mescla fontes duplicadas.", "批量网页抓取": "Captura de páginas em lote", "批量网页抓取提供商": "Provedor de captura em lote", "批量网页搜索": "Busca web em lote", "批量网页搜索不可用:所选提供商均未启用或未配置密钥。": "Busca web em lote indisponível: nenhum dos provedores selecionados está habilitado e configurado.", "批量网页搜索不可用:请启用来源并配置密钥或绑定可用账号。": "Busca web em lote indisponível: habilite uma fonte e configure sua chave de API ou vincule uma conta disponível.", "批量网页搜索可用:将使用 {ready},未配置的 {missing} 会自动跳过。": "Busca web em lote disponível: usando {ready}; {missing} sem configuração serão ignorados automaticamente.", "批量网页搜索可用:所选提供商均已启用并配置密钥。": "Busca web em lote disponível: todos os provedores selecionados estão habilitados e com chave configurada.", "批量网页搜索可用:所选来源均已启用并配置完成。": "Busca web em lote disponível: todas as fontes selecionadas estão habilitadas e configuradas.", "批量网页搜索提供商": "Provedores de busca web em lote", "批量网页搜索至少选择一个提供商": "Selecione pelo menos um provedor para a busca web em lote", "把 1~10 张图片与提示词交给后台配置的视觉模型,返回模型回复文本。": "Envia 1-10 imagens e um prompt ao modelo de visão configurado no servidor e retorna o texto da resposta.", "把下面这段合并到客户端配置的 mcpServers 里,并把 Key 换成你自己的。": "Mescle o trecho abaixo no mcpServers da configuração do cliente e troque a Key pela sua.", "把图片与提示词交给后台配置的视觉模型分析,并把模型回复返回给调用方的大模型。": "Envia imagens e um prompt ao modelo de visão configurado no servidor e devolve a resposta ao modelo que fez a chamada.", "抓取:{name}": "Captura: {name}", "按参考图修改,仅在配置了可用编辑模型时提供。": "Edite imagens de referência; disponível apenas com um modelo de edição compatível configurado.", "按描述使用已配置的模型生图,默认一张,会消耗账号额度。": "Gere imagens a partir da descrição usando o modelo configurado. O padrão é uma imagem e há consumo de créditos.", "接入协议": "Protocolo de acesso", "接入方式": "Modo de conexão", "提供 REST API,任何能发 HTTP 请求的程序都可以携带网关 Key 直接调用。": "Oferece uma API REST; qualquer programa capaz de enviar requisições HTTP pode chamá-la com uma Key do gateway.", "提供商尚未配置密钥": "O provedor não tem uma chave de API configurada", "提供商尚未配置有效密钥": "O provedor não tem uma chave de API válida configurada", "提供商插件暂不可用": "O plugin do provedor está temporariamente indisponível", "提供商插件未安装或未启用": "O plugin do provedor não está instalado ou habilitado", "提供商暂不可用或配置有误": "O provedor está temporariamente indisponível ou mal configurado", "提供商选择": "Seleção de provedores", "提示词,描述要让模型在图片中查看的内容": "Prompt descrevendo o que o modelo deve procurar nas imagens", "插件搜索能力声明不完整,请更新插件": "As informações de capacidade de busca do plugin estão incompletas; atualize o plugin", "插件返回的搜索来源格式不正确": "O plugin retornou fontes de busca em um formato inválido", "搜索、视觉与生图共用网关配置。本机客户端的 MCP 安装在桌面端完成。": "Busca, visão e geração de imagens usam as configurações do gateway. Instale o MCP nos clientes locais pelo aplicativo desktop.", "搜索参数不符合该来源的要求": "Os parâmetros de busca não atendem aos requisitos desta fonte", "搜索提供商没有返回来源": "O provedor de busca não retornou fontes", "搜索服务拒绝了该账号,请检查账号权限": "O serviço de busca recusou esta conta; verifique suas permissões", "搜索来源配置不完整": "A configuração da fonte de busca está incompleta", "搜索请求超时": "A requisição de busca excedeu o tempo limite", "搜索账号不属于该提供商,请重新选择": "A conta de busca pertence a outro provedor; selecione outra conta", "搜索账号登录态已失效,请重新登录": "O login da conta de busca expirou; entre novamente", "搜索额度已用完或触发限流": "A cota de busca acabou ou o limite de taxa foi atingido", "支持多选。每次搜索会并发调用所选提供商并合并重复来源。": "Seleção múltipla. Cada busca chama os provedores selecionados em paralelo e mescla fontes duplicadas.", "无法确认插件搜索能力,请更新或重启提供商插件": "Não foi possível confirmar o suporte à busca; atualize ou reinicie o plugin do provedor", "暂无生图记录,连接 MCP 后即可让 Agent 生成图片。": "Ainda não há tarefas de imagem. Conecte o MCP para o Agent gerar imagens.", "暴露的工具": "Ferramentas expostas", "更新时间": "Atualizado em", "最大生成并发": "Limite de gerações simultâneas", "最近生成记录": "Tarefas de imagem recentes", "服务与协议": "Serviços e protocolos", "服务入口": "Endpoint do serviço", "服务名称": "Serviço", "服务地址": "URL do serviço", "服务状态已更新": "Status do serviço atualizado", "服务端强制单次工具执行的超时上限(同一服务的 Skill / MCP / API 共用)。安装 MCP 时会按此值写入客户端配置;修改后需在客户端重新「更新」配置并重进会话才会生效。": "Limite de tempo imposto pelo servidor para uma execução de ferramenta (compartilhado pelos protocolos Skill / MCP / API do mesmo serviço). Ao instalar o MCP, esse valor é gravado na configuração do cliente; após alterar, execute \"Atualizar\" novamente no cliente e reabra a sessão.", "服务端强制单次工具执行的超时上限(同一服务的 Skill / MCP 共用)。安装 MCP 时会按此值写入客户端配置;修改后需在客户端重新「更新」配置并重进会话才会生效。": "Limite de tempo máximo imposto pelo servidor para uma única execução de ferramenta (compartilhado pelos protocolos Skill / MCP do mesmo serviço). A instalação do MCP grava este valor na configuração do cliente; após alterá-lo, execute \"Atualizar\" novamente no cliente e reabra a sessão.", "服务能力": "Capacidades", "服务配置": "Configuração do serviço", "未选择账号": "Nenhuma conta selecionada", "本地桥接": "Bridge local", "本地桥接会在本机运行一个 node 脚本,支持直接传本地图片路径,推荐在桌面端使用。": "O bridge local executa um script Node nesta máquina e aceita caminhos locais de imagem; recomendado no desktop.", "本地桥接需要 Node.js 18 或更新版本,自动读取授权目录的参考图并保存生成结果;HTTP 接入只返回下载地址。": "A ponte local exige Node.js 18 ou superior. Ela lê referências nas pastas autorizadas e salva as imagens geradas. O modo HTTP retorna apenas URLs de download.", "本机接入": "Instalação local", "本次提交的唯一编号,断线重试使用原编号": "ID único do envio; reutilize-o ao tentar novamente após uma desconexão", "查询原任务并取回图片,不再次生图或扣费。": "Consulte a tarefa original e obtenha as imagens sem gerar ou cobrar novamente.", "查询生成结果": "Consultar resultado da geração", "检查配置": "Verificar configuração", "正在加载安装目标…": "Carregando destinos de instalação…", "正在加载工具服务…": "Carregando serviços de ferramentas…", "正在加载工具服务配置…": "Carregando configuração dos serviços de ferramentas…", "每条搜索词最多 {count} 字": "Até {count} caracteres por consulta", "没有匹配的工具服务": "Nenhum serviço de ferramentas correspondente", "没有可用的工具服务": "Nenhum serviço de ferramentas disponível", "没有可用的生图模型,请先添加账号、启用对应插件并更新模型目录。": "Nenhum modelo de imagem disponível. Adicione uma conta, habilite o plugin correspondente e atualize o catálogo de modelos.", "没有可用的网关 Key": "Nenhuma Key de gateway disponível", "没有可绑定的启用账号,请先到「账号」页添加或启用。": "Não há uma conta habilitada para vincular. Primeiro adicione ou habilite uma na página Contas.", "没有可配置的提供商": "Nenhum provedor para configurar", "清理这次生成的临时图片?已保存到本机的文件不会被删除,原提交编号也不会重新生图。": "Remover as imagens temporárias desta tarefa? Os arquivos salvos localmente serão mantidos e o ID original não gerará imagens novamente.", "清除密钥": "Limpar chave", "清除配置": "Limpar configuração", "点击「复制文档」可复制整份 Markdown 文档,直接发给对接方即可。": "Clique em \"Copiar documento\" para copiar todo o Markdown e enviar diretamente a quem for integrar.", "生图模型": "Modelo de geração de imagens", "生图账号": "Conta de geração de imagens", "生成中": "Gerando", "生成较慢时先返回任务编号。断线后查询原任务,不自动重画;超时不代表没有扣费。": "Gerações demoradas retornam primeiro um ID de tarefa. Consulte a tarefa original após reconectar; não há regeneração automática. Um timeout não significa ausência de cobrança.", "确定清除提供商 {name} 的 API Key?清除后该提供商将不可用,直到重新保存新密钥。": "Limpar a API Key de {name}? O provedor ficará indisponível até que uma nova chave seja salva.", "移除 {name} 配置": "Remover configuração de {name}", "空白的 API Key 不会覆盖已保存的密钥。": "Uma API Key em branco não substitui a chave salva.", "管理可供客户端安装和运行的工具服务,并配置上游提供商与能力。": "Gerencie serviços de ferramentas que os clientes podem instalar e executar, e configure provedores upstream e capacidades.", "结果不确定": "Resultado incerto", "结果保留(小时)": "Retenção (horas)", "编辑 {name}": "Editar {name}", "编辑可使用不同模型;未配置可用编辑模型时,不向 Agent 提供编辑工具。": "A edição pode usar outro modelo. A ferramenta de edição não é exposta sem um modelo de edição disponível.", "编辑提供商 {name}": "Editar provedor {name}", "编辑模型": "Modelo de edição", "网络搜索": "Busca web", "网络搜索与视觉分析:网关侧配置,改完立即生效。本机客户端的安装在桌面端完成。": "Busca web e análise de visão são configurações do gateway e entram em vigor imediatamente. A instalação nos clientes locais é feita no desktop.", "聚合 Tavily、Querit、Firecrawl、Ollama Web Search,提供批量网页搜索与网页抓取能力。": "Agrega Tavily, Querit, Firecrawl e Ollama Web Search para busca web em lote e captura de páginas.", "聚合标准搜索服务及已有 WorkBuddy、Kiro 账号的搜索能力;网页抓取仍使用标准服务。": "Combina serviços de busca padrão com a busca de contas existentes do WorkBuddy e Kiro. A captura de páginas continua usando os serviços padrão.", "能力提供商配置已保存": "Configuração dos provedores de capacidade salva", "能力数量": "Capacidades", "自动选择仅在所选提供商内遵守现有路由;固定账号仍受停用、冷却与额度限制,不会自动换号。": "A seleção automática segue o roteamento existente no provedor escolhido. Contas fixas respeitam desativação, espera e limites de cota, sem troca automática.", "自动选择账号": "Selecionar conta automaticamente", "至少选择一个搜索提供商": "Selecione pelo menos um provedor de busca", "获取 API Key": "Obter API Key", "要分析的图片(1~10 张),每张为 http(s) URL 或图片 data URI": "Imagens a analisar (1-10), cada uma uma URL http(s) ou data URI de imagem", "要抓取并提取正文的网页 URL(1~10 个)": "URLs de páginas para capturar e extrair (1-10)", "要搜索的查询,每条并发执行(1~10 条)": "Consultas a pesquisar, cada uma executada em paralelo (1-10)", "视觉分析": "Análise de visão", "视觉服务配置已保存": "Configuração do serviço de visão salva", "视觉服务配置已清除": "Configuração do serviço de visão removida", "视觉模型配置": "Configuração do modelo de visão", "视觉链路测试失败": "Falha no teste do fluxo de visão", "视觉链路连通:耗时 {duration}ms": "Fluxo de visão conectado em {duration}ms", "触发上游限流": "O limite de taxa do upstream foi atingido", "该协议已停用,已接入的客户端会收到服务停用错误。": "Este protocolo está desabilitado; clientes conectados receberão erro de serviço desabilitado.", "该协议通过 Agent2API 面板安装到本机客户端目录。": "Este protocolo é instalado nos diretórios locais dos clientes pelo painel do Agent2API.", "该提供商不支持网页抓取": "Este provedor não oferece captura de páginas", "该搜索来源使用 API Key,不接受账号绑定": "Esta fonte de busca usa API Key e não aceita vinculação de conta", "该搜索来源使用已有账号,不接受 API Key": "Esta fonte de busca usa uma conta existente e não aceita API Key", "请先选择 API Key": "Selecione uma API Key primeiro", "请先选择提供商": "Selecione um provedor primeiro", "请先选择搜索使用的账号": "Selecione primeiro uma conta para usar na busca", "请求参数无效": "Parâmetros da requisição inválidos", "请至少选择一个目标": "Selecione pelo menos um destino", "请选择 API Key": "Selecione uma API Key", "请选择内部调用 API Key": "Selecione a API Key de chamada interna", "请选择图片输出目录": "Selecione uma pasta de saída para imagens", "请选择提供商与上游模型": "Selecione um provedor e um modelo upstream", "调用用的 API Key": "API Key para chamadas", "账号搜索暂不可用,请检查账号及插件状态": "A busca por conta está temporariamente indisponível; verifique o estado da conta e do plugin", "账号搜索配置不完整,请重新选择账号或更新插件": "A busca por conta não está totalmente configurada; selecione a conta novamente ou atualize o plugin", "超时 {seconds}s": "Tempo limite {seconds}s", "输入新密钥;留空保持不变": "Digite uma nova chave; deixe vazio para manter a atual", "运行时": "Runtime", "还没有可用的提供商,请先在「账号」页添加账号并在「模型管理」页确认有已启用的模型。": "Nenhum provedor disponível ainda. Adicione contas na página \"Contas\" e confirme que há modelos habilitados na página \"Modelos\".", "还没有可用的提供商,请先在桌面端添加账号并确认有已启用的模型。": "Nenhum provedor disponível. Adicione contas no desktop e confirme que há modelos habilitados.", "这是后台生成任务的时间上限。单次 MCP 调用最多等待 20 秒,未完成时返回任务编号;查询不会重新生图。": "Este é o prazo da geração em segundo plano. Cada chamada MCP aguarda até 20 segundos e retorna o ID se ainda estiver pendente. Consultas não geram novamente.", "这里管理的是「客户端能用什么」:服务是否对外提供、上游提供商与密钥、视觉分析用哪个模型。": "Esta página gerencia o que os clientes podem usar: se os serviços são expostos, seus provedores e chaves, e qual modelo a análise de visão utiliza.", "远程 HTTP": "HTTP remoto", "远程 HTTP 只接受图片 URL 或 data URI,不需要本机安装 node。": "O HTTP remoto aceita apenas URLs de imagem ou data URIs; não exige Node.js local.", "连接成功:{count} 条结果,耗时 {duration}ms": "Conectado: {count} resultados em {duration}ms", "连接测试失败": "Falha no teste de conexão", "选择处理图片的上游提供商与模型。调用时会用内部 Key 经本站网关请求该模型,协议转换、重试与故障转移全部复用网关。": "Selecione o provedor upstream e o modelo para imagens. As chamadas passam por este gateway com a Key interna, reutilizando tradução de protocolo, novas tentativas e failover.", "选择安装目标、运行时与调用用的 API Key。Skill 包与密钥只写入所选客户端的本机目录。": "Selecione os destinos de instalação, o runtime e a API Key de chamada. O pacote Skill e a chave são gravados apenas nos diretórios locais dos clientes selecionados.", "选择已有目录,图片只会写入此目录及其子目录": "Selecione uma pasta existente; imagens serão salvas apenas nela e em suas subpastas", "选择目录": "Selecionar pasta", "选择要从中移除的客户端,未勾选的客户端保持不变。": "Selecione os clientes dos quais remover; os não marcados permanecem inalterados.", "选择要写入 MCP 配置的客户端。配置只动本服务那一项,客户端原有的其它 MCP 服务保持不变。": "Selecione os clientes nos quais gravar a configuração MCP. Apenas a entrada deste serviço é alterada; os demais servidores MCP permanecem intactos.", "配置搜索与抓取所使用的上游提供商。调用方不再传递 provider,运行时始终使用这里保存的设置。": "Configure os provedores upstream usados para busca e captura. Os chamadores não enviam mais o provider; o runtime sempre usa as configurações salvas aqui.", "默认只生成一张。空间不足时先拒绝请求,不消耗生图额度;只清理过期结果,已保存到本机目录的文件不受影响。": "Uma imagem é gerada por padrão. Espaço insuficiente bloqueia a solicitação antes de consumir créditos. Apenas resultados expirados são limpos; arquivos locais não são afetados.", " 到 {file}": " para {file}", " 正文已改:{edited}(其余段用官方原文)。": " Texto alterado: {edited} (os demais blocos usam o texto oficial).", "(无 id)": "(sem id)", "/v1 拒绝无 Key 请求": "/v1 rejeita requisições sem chave", "0 B": "0 B", "100%(默认)": "100% (padrão)", "<本机IP>": "", "ALTCHA(本地验证)": "ALTCHA (verificação local)", "Access Key ID": "Access Key ID", "Agent2API 手机端": "Agent2API Mobile", "Android 应用(APK)": "Aplicativo Android (APK)", "Cline 上游按请求头判定「调用方是不是 Cline 自家产品」:X-CLIENT-TYPE: cline-sdk 是硬门槛(缺了它免费池模型一律 403),版本号与平台标识让请求更贴近官方客户端的形态。这里列出的是网关默认会发的头:改某一行的值 = 覆盖默认值(也可以新增默认清单之外的自定义头);把值清空保存 = 这个头不发送;在界面删掉被改过的行 = 回落默认值。改完点「保存」,下一个 Cline 请求立即生效。不懂某一行的含义就不要动它 —— 伪装头的价值在「与官方客户端逐字一致」。": "O upstream da Cline decide pelos cabeçalhos da requisição se o chamador é um produto da própria Cline: X-CLIENT-TYPE: cline-sdk é um requisito obrigatório (sem ele, os modelos do pool gratuito retornam 403 sempre), e o número de versão e o identificador de plataforma aproximam a requisição do formato do cliente oficial. Os cabeçalhos listados aqui são os que o gateway envia por padrão: alterar o valor de uma linha = sobrescrever o padrão (também é possível adicionar cabeçalhos personalizados além da lista padrão); salvar com o valor vazio = esse cabeçalho não é enviado; excluir na interface uma linha alterada = voltar ao padrão. Ao terminar, clique em “Salvar” e a próxima requisição da Cline já usará as mudanças. Se você não entende o significado de uma linha, não a altere — o valor dos cabeçalhos spoofed está em ser idêntico palavra por palavra ao cliente oficial.", "Cline 伪装头": "Cabeçalhos spoofed do Cline", "Cline 伪装头已刷新": "Cabeçalhos spoofed do Cline atualizados", "Docker 容器": "Contêiner Docker", "Endpoint": "Endpoint", "Endpoint 填 https://<账户ID>.r2.cloudflarestorage.com,Region 固定填 auto。": "Defina o Endpoint como https://.r2.cloudflarestorage.com e a Region como auto.", "Endpoint 填 https://cos.ap-guangzhou.myqcloud.com,Region 填 ap-guangzhou(按实际地域改)。": "Defina o Endpoint como https://cos.ap-guangzhou.myqcloud.com e a Region como ap-guangzhou (ajuste para a sua região).", "Endpoint 填 https://obs.cn-north-4.myhuaweicloud.com,Region 填 cn-north-4(按实际地域改)。": "Defina o Endpoint como https://obs.cn-north-4.myhuaweicloud.com e a Region como cn-north-4 (ajuste para a sua região).", "Endpoint 填 https://oss-cn-hangzhou.aliyuncs.com,Region 填 cn-hangzhou(按实际地域改)。": "Defina o Endpoint como https://oss-cn-hangzhou.aliyuncs.com e a Region como cn-hangzhou (ajuste para a sua região).", "Endpoint 形如 http://192.168.1.10:9000(自建通常用 http);Region 一般填 us-east-1。": "O Endpoint tem o formato http://192.168.1.10:9000 (auto-hospedado geralmente usa http); a Region costuma ser us-east-1.", "Endpoint 留空即走 AWS 官方地址;Region 必须与桶所在区域一致。": "Deixe o Endpoint vazio para usar o endereço oficial da AWS; a Region deve corresponder à região do bucket.", "KB": "KB", "Linux 安装包(deb)": "Pacote Linux (deb)", "Logo 不能超过 2 MiB": "O logo não pode exceder 2 MiB", "Logo 仅支持 PNG、JPG、WebP 图片": "O logo aceita apenas imagens PNG, JPG e WebP", "Nextcloud": "Nextcloud", "OpenAI 新版 API 用 developer 角色取代 system 承载指令,新版 OpenAI SDK 与部分客户端发的对话里会出现 role 为 developer 的消息;不少 OpenAI 兼容上游(尤其是自定义提供商的透传路径)不认识这个角色,收到就报 400。开启本项后,网关在每次转发前把 developer 角色的消息改写为 system —— 两类角色在 OpenAI 语义上等价(OpenAI 自己的迁移指南也是这么映射的),改写不影响对话内容与语义;对本来就只认 system 的各家内置上游同样无害。默认开启;关掉后 developer 消息会原样发往上游,不认识它的上游会报「角色不存在」一类的错误。": "A API mais recente da OpenAI carrega instruções num papel developer em vez de system, então conversas enviadas por SDKs OpenAI atuais e alguns clientes contêm mensagens com role \"developer\". Muitos upstreams compatíveis com OpenAI (especialmente o caminho de passagem dos provedores personalizados) não reconhecem esse papel e rejeitam a solicitação inteira com 400. Quando ativado, o gateway reescreve mensagens do papel developer para system antes de cada encaminhamento — os dois papéis são equivalentes na semântica da OpenAI (o próprio guia de migração da OpenAI faz o mesmo mapeamento), então a reescrita não altera conteúdo nem significado, e é inofensiva aos upstreams integrados que só aceitam system. Ativado por padrão; desativado, as mensagens developer vão para o upstream como estão e upstreams que não conhecem o papel retornam erros do tipo \"papel inexistente\".", "QQ 群 · Telegram": "Grupos do QQ · Telegram", "S3 兼容存储": "Armazenamento compatível com S3", "Safari 没有安装按钮:点底部的「分享」,选「添加到主屏幕」,再点「添加」。": "O Safari não tem botão de instalar: toque em Compartilhar na parte de baixo, escolha \"Adicionar à Tela de Início\" e toque em \"Adicionar\".", "Secret Access Key": "Secret Access Key", "Token 读数量级": "Escala de leitura de Token", "UTF-8 文本文件路径,留空用内置默认提示词(通用编码助手提示词,不含任何会被上游拦截的模板句)。只在「替换 / 追加」模式下生效,透传模式不读它。": "Caminho de um arquivo de texto UTF-8; deixe vazio para usar o system prompt padrão integrado (um system prompt genérico de assistente de código, sem nenhuma frase de template que o upstream bloqueie). Só tem efeito nos modos “Substituir / Anexar”; o modo Passthrough não o lê.", "WebView / 浏览器内核": "WebView / motor do navegador", "Windows 安装包(NSIS)": "Instalador do Windows (NSIS)", "Windows 服务": "Serviço do Windows", "ZCode 套餐池(Start Plan)通道每条请求都要消耗一个当次铸造的人机验证令牌(一次性,2 分钟过期),库存低于该值时界面自动补铸到它。默认 3 个。调大能吸收突发并发,但用不掉的令牌 2 分钟就过期作废,烧的是上游风控配额。可填 1–10。": "Cada solicitação no canal do pool de planos do ZCode (Start Plan) consome um token de CAPTCHA recém-cunhado (de uso único, expira em 2 minutos); quando o estoque cair abaixo deste valor, a interface cunha mais até ele. Padrão 3. Um valor maior absorve picos, mas tokens não usados expiram em 2 minutos e queimam a cota de controle de risco do upstream. Aceita 1-10.", "ZCode「套餐池(Start Plan)」通道的每条推理请求都要附一个当次铸造的阿里云无痕验证令牌(一次性、约 2 分钟过期):令牌由界面里的铸造守卫静默铸好、推给网关入池,转发时逐条取用。这里的三个值管的是补货节奏:①「库存目标」= 库存低于它守卫才补铸、补到它为止,默认 3 个;②「轮询间隔」= 守卫多久看一次库存,默认 2500 毫秒,只影响反应速度(库存够用时不会多铸);③「单轮铸造上限」= 发现缺货时一轮最多铸几个,默认 1 个(连铸之间固定隔 500 毫秒)。请求密集、请求日志里连续出现「需要人机验证令牌」的 503 时,把目标与单轮上限适当调大、轮询调快,能让池子跟得上消耗 —— 代价是上游(阿里云)对铸造频率有风控,铸得越多越快越容易触发限流,且用不掉的令牌 2 分钟即过期作废、等于白烧配额,所以建议小步调。保存后对下一轮补货立即生效,不用重启。": "Cada solicitação de inferência no canal \"Pool de planos (Start Plan)\" do ZCode deve carregar um token invisível de CAPTCHA da Aliyun recém-cunhado (de uso único, expira em cerca de 2 minutos): os tokens são cunhados silenciosamente pelo guardião de cunhagem na interface e empurrados para o pool do gateway, de onde o encaminhamento toma um por solicitação. Os três valores aqui governam o ritmo de reposição: ① \"Meta de estoque\" = o guardião só cunha mais quando o estoque cai abaixo dela, até ela (padrão 3); ② \"Intervalo de sondagem\" = com que frequência o guardião verifica o estoque, padrão 2500 ms (afeta apenas a velocidade de reação — não cunha além quando o estoque basta); ③ \"Limite de cunhagem por rodada\" = o máximo de tokens cunhados em uma rodada ao detectar falta, padrão 1 (cunhagens consecutivas são fixadas a 500 ms). Quando as solicitações forem densas e o registro mostrar 503 \"precisa de token de CAPTCHA\" em sequência, aumente a meta e o limite por rodada e acelere a sondagem para o pool acompanhar — a contrapartida é que o upstream (Aliyun) limita a frequência de cunhagem: quanto mais e mais rápido cunhar, maior a chance de esbarrar no limite, e tokens não usados expiram em 2 minutos de qualquer forma, queimando cota à toa — ajuste em passos pequenos. Salvar entra em vigor na próxima rodada de reposição, sem reinício.", "beta 版": "Versão beta", "iOS 应用": "Aplicativo iOS", "models.dev 元数据": "Metadados models.dev", "models.dev 元数据已更新({count} 条)": "Metadados do models.dev atualizados ({count} entradas)", "models.dev 是一个开源的模型资料库(社区维护),这里用它补齐「上游没告诉我们」的模型能力:上下文窗口、最大输出、工具调用、图片、视频、是否支持思考,以及这个模型认识哪些思考档位。优先级是:你在「模型能力」里手工改的值 > 上游清单自己声明的值 > models.dev 的值 —— 它只填上游没声明的空位,从不推翻上游已声明的。网关随包内嵌了一份快照,所以离线、首次启动、访问不通时也有数据;开启时会按「模型目录刷新」任务的间隔联网更新(同一轮里一并刷新,也可在这里立即刷新)。关闭只停联网刷新,已经拿到的数据继续用。": "O models.dev é um banco de dados de modelos aberto e mantido pela comunidade. Ele preenche o que o upstream não informa: janela de contexto, saída máxima, chamada de ferramentas, imagem, vídeo, suporte a raciocínio e quais níveis de raciocínio o modelo realmente aceita. Prioridade: valores que você editou em \"Capacidades do modelo\" > o que o catálogo do upstream declara > models.dev — ele só preenche lacunas deixadas pelo upstream e nunca sobrepõe um valor declarado. Um snapshot vem embutido no app, então offline, primeira execução e rede bloqueada continuam tendo dados; quando ativado, atualiza online no intervalo da tarefa \"Atualização do catálogo de modelos\" (na mesma rodada, ou sob demanda aqui). Desativar apenas interrompe a atualização online; os dados já obtidos continuam em uso.", "models.dev 模型元数据": "Metadados de modelos do models.dev", "systemd 服务": "Serviço systemd", "{count} 条": "{count} entradas", "{count} 条 · 来自{origin}{at} · {mode}": "{count} entradas · de {origin}{at} · {mode}", "{count} 条规则,按列表顺序执行": "{count} regras, executadas na ordem da lista", "{d} 天 {h} 小时": "{d}d {h}h", "{h} 小时 {m} 分钟": "{h}h {m}min", "{label} 提示词文件": "Arquivo de prompt de {label}", "{label} 的提示词模式": "Modo de prompt de {label}", "{label}({message})": "{label} ({message})", "{lines} 行、{chars} 字符(按当前草稿计)": "{lines} linhas, {chars} caracteres (com base no rascunho atual)", "{minutes} 分钟": "{minutes} minutos", "{models} 同时出现在两块设置里,会按「辅助识图」处理。想改的话,把其中一个从这边的模型名单里去掉。": "{models} aparece nos dois blocos e será tratado por leitura assistida de imagem. Para mudar isso, remova-o de uma das listas.", "{mode}生效:上游收到的 system 来自{source}{lines}。": "Modo {mode} ativo: o system enviado ao upstream vem de {source}{lines}.", "{m} 分钟": "{m}min", "{noun}不能为空(可填 {min}–{max})": "{noun}: não pode ficar em branco (valores aceitos: {min}–{max})", "{noun}必须在 {min}–{max} 之间(当前填的是 {text})": "{noun}: deve estar entre {min} e {max} (valor atual: {text})", "{noun}必须是整数": "{noun}: deve ser um número inteiro", "{n} B": "{n} B", "{n} GB": "{n} GB", "{n} KB": "{n} KB", "{n} MB": "{n} MB", "{n} 个头将随每个 Cline 请求发送": "{n} cabeçalhos serão enviados em cada requisição da Cline", "{n} 台可选 · 点此切换": "{n} servidores · toque para trocar", "{n} 项 · {shown} 显示": "{n} itens · {shown} visíveis", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "{total} menus · {shown} visíveis · {hidden} ocultos · {groups} grupos", "{way}的适用模型": "Modelos para {way}", "⚠️ 密钥警告": "⚠️ Aviso de chaves", "⚠️ 已关闭「{label}」的机器人校验": "⚠️ Verificação de bot desativada para \"{label}\"", "⚠️ 机器人校验已关闭": "⚠️ Captcha desativado", "✅ Cline 伪装头已保存": "✅ Cabeçalhos spoofed do Cline salvos", "✅ models.dev 模型元数据已开启": "✅ Metadados de modelos do models.dev ativados", "✅ 云同步设置已保存": "✅ Configurações de sincronização na nuvem salvas", "✅ 会话图片压缩已开启": "✅ Compressão de imagens ativada", "✅ 出站指纹脱敏已开启": "✅ Mascaramento de fingerprint de saída ativado", "✅ 密码已修改,其他设备的登录已失效": "✅ Senha alterada. Os acessos em outros dispositivos foram revogados", "✅ 导入完成:{summary}": "✅ Importação concluída: {summary}", "✅ 已上传到云端({size})": "✅ Enviado para a nuvem ({size})", "✅ 已为「{label}」装上网关自带提示词": "✅ System prompt interno do gateway instalado para “{label}”", "✅ 已从云端恢复{note}": "✅ Restaurado da nuvem{note}", "✅ 已保存:{label}": "✅ Salvo: {label}", "✅ 已保存:{label} {value}": "✅ Salvo: {label} {value}", "✅ 已保存:指定错误码直接换号": "✅ Salvo: troca de conta direta em códigos de erro especificados", "✅ 已保留 {days} 天": "✅ Retenção definida para {days} dias", "✅ 已保留 {days} 天,超出部分已清理": "✅ Retenção definida para {days} dias; o excedente foi removido", "✅ 已加密备份 {n} 张表({size}),包含恢复密钥:{file}": "✅ Backup criptografado de {n} tabelas ({size}), com chaves de recuperação: {file}", "✅ 已备份 {n} 张表({size})到 {file}": "✅ {n} tabelas ({size}) backupadas em {file}", "✅ 已导入账号密钥,请继续下载": "✅ Chave da conta importada; continue o download", "✅ 已导出 {count} 个账号{note}{file}": "✅ {count} contas exportadas{note}{file}", "✅ 已开启「{label}」的机器人校验": "✅ Verificação de bot ativada para \"{label}\"", "✅ 已恢复 {n} 张表{note}": "✅ {n} tabelas restauradas{note}", "✅ 已改用 k / M / B 缩写": "✅ Agora usando abreviações k / M / B", "✅ 已改用本地量级词(万 / 亿式)": "✅ Agora usando magnitudes locais (k / M)", "✅ 已自动创建网关 Key「默认」(可在「网关 Key」页查看)": "✅ Chave do gateway “Padrão” criada automaticamente (veja na página “Chave do gateway”)", "✅ 已解除内容拦截降级": "✅ Fallback de bloqueio de conteúdo removido", "✅ 开发者角色兼容已开启": "✅ Compatibilidade com papel developer ativada", "✅ 指纹脱敏设置已保存": "✅ Configurações de mascaramento salvas", "✅ 数量上限已设为 {count} 条": "✅ Limite definido para {count} registros", "✅ 数量上限已设为 {count} 条,超出部分已清理": "✅ Limite definido para {count} registros; excedentes removidos", "✅ 机器人校验已开启": "✅ Captcha ativado", "✅ 第三方模型回答完自动折叠过程已开启": "✅ Recolhimento automático do trabalho de modelos de terceiros após a resposta ativado", "✅ 设置已保存,应用正在重启…": "✅ Configurações salvas; o aplicativo está reiniciando…", "✅ 调试模式已关闭": "✅ Modo debug desativado", "✅ 调试模式已开启": "✅ Modo debug ativado", "✅ 路由设置已保存": "Configurações de roteamento salvas", "✅ 连接成功:{path}": "✅ Conectado: {path}", "、{n} 个自定义提供商": ", {n} provedores personalizados", "。事件日志、请求明细、调试报文与面板登录态保持不变。替换前会自动把当前业务数据备份到配置目录的 backups/ 下。": ". Logs de eventos, detalhes de requisições, pacotes de depuração e o estado de login do painel permanecem intactos. Os dados de negócio atuais são copiados para backups/ no diretório de configuração antes da substituição.", "「{label}」将从 {previous} 天改为 {days} 天。": "“{label}” passará de {previous} para {days} dias.", "「{label}」将从 {previous} 条改为 {count} 条。": "“{label}” passará de {previous} para {count} registros.", "「{label}」改用内置默认提示词": "“{label}” agora usa o system prompt padrão integrado", "「{label}」的提示词文件已更新": "Arquivo de prompt de “{label}” atualizado", "「{label}」的提示词正文已更新": "Texto do prompt de “{label}” atualizado", "「{label}」的模式改为「{mode}」": "Modo de “{label}” alterado para “{mode}”", "「{label}」的网关自带提示词已改回官方原文": "O system prompt interno do gateway de “{label}” foi revertido para o texto oficial", "「{label}」的网关自带提示词正文已更新": "Texto do system prompt interno do gateway de “{label}” atualizado", "「模型管理」里每个能力的来源标记(上游 / models.dev / 已覆盖)读的就是这份数据;映射弹窗的思考档位下拉也按这里的数据只列该模型真实认识的档位。": "As marcas de origem por capacidade em \"Gerenciamento de modelos\" (upstream / models.dev / substituído) vêm destes dados, e a lista de níveis de raciocínio no diálogo de mapeamento mostra apenas os níveis que o modelo realmente aceita, com base neles.", "「用哪份提示词」本来是按上游分别决定的事,所以每家可以有自己的模式、提示词文件与正文:不在这里列出的提供商一律沿用上面那份默认设置,「跟随默认」把这一家取消、回到默认。带「网关自带」那一行的家(目前是 ZCode 两家)默认就列在这里 —— 那一段是网关自己装上去的文本,不来自客户端也不来自提示词文件,默认开启、可以关掉,也可以改它的正文(改过的那一段以你的文本为准);关掉后还能不能通过上游校验,取决于上游当下的口径,行内说明了实测依据。「模式 / 提示词文件 / 正文」管的是客户端自己的 system 怎么处理,与那个开关是两件事。": "Qual prompt usar é uma decisão tomada por upstream, então cada provedor pode ter seu próprio modo, arquivo de prompt e texto: provedores não listados aqui seguem a configuração padrão acima, e “Seguir padrão” remove a configuração individual desse provedor, voltando ao padrão. Os provedores com a linha “Interno do gateway” (atualmente os dois da ZCode) já aparecem aqui por padrão — esse trecho é um texto instalado pelo próprio gateway, que não vem do cliente nem de um arquivo de prompt, fica ativado por padrão, pode ser desativado e também pode ter o texto editado (os trechos editados usam o seu texto); se ele ainda passa na validação do upstream depois de desativado depende dos critérios atuais do upstream, e a própria linha documenta a base dos testes. “Modo / arquivo de prompt / texto” trata de como o system do próprio cliente é processado — é uma coisa separada daquele switch.", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "\"Configurações\" é fixo, então o grupo dele não pode ser ocultado inteiro; os outros menus podem ser ocultados individualmente", "「请求日志」页的逐条请求记录,默认 99999 天(近似全量保留),可填 1–99999 天。": "Registros de cada requisição na página “Logs de requisições”. Padrão de 99999 dias (retenção praticamente total); aceita de 1 a 99999 dias.", "「请求日志」页的逐条请求记录,默认 99999 天,可填 1–99999 天;同时受数量上限限制。": "Registros por requisição na página de logs de requisições. Padrão de 99999 dias; aceita 1–99999 dias. O limite de registros também se aplica.", "一个 .a2ab 文件即可跨机器恢复,账号、网关 Key、GitHub 令牌与云同步凭据无需另行复制密钥。插件程序与库外文件不在整库备份范围。": "Um único arquivo .a2ab restaura os dados em outra máquina, sem copiar separadamente as chaves de contas, keys do gateway, tokens do GitHub ou credenciais de sincronização. Programas de plugins e arquivos fora do banco não estão incluídos.", "一段内置装配": "um conjunto integrado", "三档数据各自独立计时,超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件;请求日志是网关每次转发到上游的逐条记录;按天聚合供报表页的热力图与按天趋势使用。请求日志与按天聚合默认 99999 天(约 274 年,效果上等于全量保留),事件日志默认 30 天。把某一档改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。三档的可填范围均为 1–99999 天。": "Os três tipos de dados são contados de forma independente e o que excede o período de retenção é excluído: os logs de eventos são eventos do sistema, como login, troca de conta e switch 429; os logs de requisições são o registro de cada encaminhamento do gateway ao upstream; os agregados diários alimentam o mapa de calor e as tendências diárias da página de relatórios. Logs de requisições e agregados diários têm padrão de 99999 dias (cerca de 274 anos — na prática, retenção total), e os logs de eventos, de 30 dias. Reduzir qualquer um deles (por exemplo, de 30 para 7 dias) e salvar exclui imediatamente os dados históricos excedentes, sem possibilidade de recuperação; aumentar ou manter o valor não exclui nada. Os três aceitam de 1 a 99999 dias.", "三段各自成块,所以分开编辑": "Os três blocos são separados, por isso a edição é individual", "上传": "Enviar", "上传 Logo": "Enviar logo", "上传中…": "Enviando…", "上传内容含加密后的账号凭证与网关配置": "O envio contém credenciais de conta criptografadas e configuração do gateway", "上传到云端": "Enviar para a nuvem", "上传失败:{message}": "Falha no envio: {message}", "上次同步:{time}({action})": "Última sincronização: {time} ({action})", "上次成功刷新的结果(存在本机数据库里)": "Resultado da última atualização bem-sucedida (guardado no banco local)", "上游 CLI 版本": "Versão da CLI upstream", "上游客户端版本": "Versão do cliente upstream", "上游按": "O upstream valida a identidade pela ", "上游按「结构」校验身份:三段必须各自成块,所以这里分开编辑三段(不能合成一段)。动态段里的运行值写成占位符,发请求时才替换:{cwd} 工作目录、{platform} 平台、{shell} shell、{os_version} 系统版本、{git} 是否 git 仓库、{provider} 提供方标识、{model} 模型名。清空某一段 = 那一段恢复官方原文。第三段发出时前面会自带一个空行(官方形状)。": "O upstream valida a identidade por “estrutura”: os três blocos precisam ser blocos separados, então os três são editados aqui individualmente (não é possível fundi-los em um só). Valores de execução no bloco dinâmico são escritos como placeholders e substituídos apenas no envio da requisição: {cwd} diretório de trabalho, {platform} plataforma, {shell} shell, {os_version} versão do sistema, {git} se é um repositório git, {provider} identificador do provedor, {model} nome do modelo. Limpar um bloco = aquele bloco volta ao texto oficial. O terceiro bloco é enviado com uma linha em branco na frente (o formato oficial).", "上游未配置": "Upstream não configurado", "上游模型繁忙时会先排队(回一句「建议 N 秒后再来」):网关等一会儿再发同一请求,最多等几次。默认 2 次,可填 0–10;填 0 表示不等待,排队直接返回 503 并说明「不是登录态或额度问题」。": "Quando o modelo no upstream está ocupado, ele primeiro entra na fila (respondendo “recomendamos voltar em N segundos”): o gateway aguarda um pouco e reenvia a mesma requisição, até um número máximo de esperas. Padrão 2; valores aceitos 0–10; 0 significa não esperar — a fila retorna 503 diretamente, informando que “não é um problema de login nem de cota”.", "上游用「逐字精确匹配」的方式审核请求体(不是语义审核):客户端注入的固定模板句、计费头字段名、以及某些裸错误码出现在报文里就会整单拦截,返回 400。开启本项后,网关在每次转发前改写这些指纹 —— 表头键值整段删除,承载语义的模板句只换一个词(如 official CLI for Claude → official CLI tool for Claude),对话内容与语义都不受影响。规则集是内置的,不需要也无法维护词表。关掉本项后客户端模板会原样发往上游,可能重新出现模板句被误拦的报错。": "O upstream revisa o corpo da requisição por “correspondência exata, palavra por palavra” (não é revisão semântica): frases de template fixas injetadas pelo cliente, nomes de campos de cabeçalhos de cobrança e certos códigos de erro soltos, se aparecerem no payload, bloqueiam a requisição inteira com retorno 400. Com esta opção ativada, o gateway reescreve esses fingerprints antes de cada encaminhamento — pares de chave/valor de cabeçalho são removidos por completo e frases de template que carregam significado têm apenas uma palavra trocada (por exemplo, official CLI for Claude → official CLI tool for Claude), sem afetar o conteúdo nem o significado da conversa. O conjunto de regras é integrado; não há lista de palavras a manter, nem seria possível. Com a opção desativada, os templates do cliente vão ao upstream como estão e podem voltar a ocorrer bloqueios indevidos de frases de template.", "上游请求四个阶段各自的等待上限(秒,1~3600):①「连接中超时」= 建立 TCP/TLS 连接或代理隧道的最大等待,默认 30 秒;②「等待响应超时」= 请求发出后等上游响应头的最大时间,默认 300 秒 —— 网关请求上游恒带 stream,响应头在 SSE 建立时就到达,与模型思考多久无关;③「流式响应空闲超时」= 流式响应相邻两块数据之间允许的最大空闲,收到新数据即重新计时,默认 300 秒 —— 上游长时间不吐数据即判定连接僵死并断开;④「非流式响应超时」= 读完整份非流式响应体的总预算(一次性计时、不重置),默认 300 秒。四项都是「等待上限」,只要数据还在来,正常的流式回答就一直往下传。保存后对下一个请求立即生效,不用重启。": "Limites de espera de cada uma das quatro fases da requisição ao upstream (segundos, 1~3600): ① “Timeout de conexão” = espera máxima para estabelecer a conexão TCP/TLS ou o túnel de proxy, padrão 30 segundos; ② “Timeout de espera de resposta” = tempo máximo de espera pelos cabeçalhos de resposta do upstream após o envio da requisição, padrão 300 segundos — as requisições do gateway ao upstream sempre usam stream, e os cabeçalhos de resposta chegam quando o SSE é estabelecido, independentemente de quanto tempo o modelo pense; ③ “Timeout de inatividade do streaming” = inatividade máxima permitida entre dois blocos adjacentes de uma resposta em streaming, com a contagem reiniciada a cada novo dado recebido, padrão 300 segundos — se o upstream ficar muito tempo sem enviar dados, a conexão é considerada travada e é encerrada; ④ “Timeout de resposta não streaming” = orçamento total para ler o corpo inteiro de uma resposta não streaming (contagem única, sem reinício), padrão 300 segundos. Os quatro são limites de espera: enquanto os dados continuarem chegando, uma resposta em streaming normal segue fluindo. Depois de salvar, os valores passam a valer para a próxima requisição, sem reiniciar.", "上游调试报文": "Payloads de depuração do upstream", "上移": "Mover para cima", "上移规则": "Mover regra para cima", "下次自动重试:{time}": "Próxima tentativa automática: {time}", "下游正文": "Corpos do downstream", "下移": "Mover para baixo", "下移规则": "Mover regra para baixo", "下载失败:{message}": "Falha no download: {message}", "不一致": "Divergente", "不做会话识别,每条请求都重新按策略选路。": "Sem detecção de sessão: cada requisição é roteada pela estratégia do zero.", "不做图片兼容": "Não adaptar imagens", "不可用": "Indisponível", "与网关同源的面板;完整管理功能在桌面端": "Painel servido pelo próprio gateway; o gerenciamento completo fica no desktop", "两张开关分别管桌面端(应用内窗口,也包含开启局域网访问后从其他设备访问的那份面板)与网页端(Docker / 服务端自托管的浏览器面板)。默认都开启;桌面端只在本机使用、嫌验证耗时可以关掉,网页端暴露在网络上,建议保持开启。": "Os dois interruptores controlam o lado desktop (a janela do aplicativo, incluindo o painel aberto em outros dispositivos quando o acesso pela LAN está ativo) e o lado web (o painel de navegador hospedado pelo Docker / servidor). Ambos vêm ativados. Desative o do desktop se usar apenas localmente e a verificação incomodar; mantenha o da web ativado, pois aquela página fica exposta à rede.", "两次输入的备份密码不一致": "As senhas do backup não coincidem", "两次输入的新密码不一致": "As novas senhas não coincidem", "两次重试之间的等待时间,两项共用,可填 0–300 秒。": "Tempo de espera entre duas tentativas, compartilhado pelas duas opções; valores de 0–300 segundos.", "两种方式不会互相自动切换。": "Os dois modos nunca alternam entre si automaticamente.", "两组设置分别用于桌面端托管的网页管理面板与网页端(Docker / 服务端)的浏览器面板。是否可被其他设备访问取决于网络访问与防火墙设置,不限于局域网。两端默认都开启人机验证,建议保持开启。": "Os dois grupos se aplicam ao painel web hospedado pelo aplicativo desktop e ao painel no navegador hospedado por Docker / servidor. O acesso de outros dispositivos depende das configurações de acesso pela rede e firewall e não se limita à rede local. A verificação humana vem ativada nos dois casos; recomendamos mantê-la ativada.", "为了安全,开启前需要先注册一个": "Por segurança, antes de ativar é preciso registrar uma ", "主进程未返回启动设置,请更新桌面端后重试": "O processo principal não retornou as configurações de inicialização; atualize o aplicativo desktop e tente novamente.", "主进程桥不可用": "Ponte com o processo principal indisponível", "主题": "Tema", "事件日志": "Logs de eventos", "事件日志保留天数": "Dias de retenção dos logs de eventos", "云同步": "Sincronização na nuvem", "产品名": "Nome do produto", "产品名不能包含斜杠或版本号,请改用前缀匹配": "Nomes de produto não podem incluir barras ou versões. Use correspondência por prefixo.", "人机验证": "Verificação humana", "人机验证失败": "Falha na verificação humana", "人机验证已完成": "Verificação humana concluída", "人机验证还在计算,请稍候": "A verificação humana ainda está sendo calculada, aguarde", "仅在同一会话、同一问题和相同权限范围内复用;追问新细节会重新识读。缓存只存在本机内存。": "Os resultados só são reutilizados na mesma conversa, pergunta e escopo de permissões. Novas perguntas geram uma nova leitura. O cache fica apenas na memória local.", "仅在账号、配置、签到或余额等实质内容变化时上传;导出时间或查询时间单独变化不会触发上传。": "O upload só ocorre quando há mudanças reais nas contas, configurações, resultados de check-in ou saldos. Alterações apenas nos horários de exportação ou consulta não geram uploads.", "仅处理本次转发副本,不修改客户端选择,也不删除当前或历史图片。": "Apenas a cópia encaminhada é alterada. A seleção do cliente e todas as imagens atuais e anteriores são preservadas.", "仅影响面板登录与注册,不影响 API Key 调用。保存后生效,已登录会话不会退出。": "Afeta apenas o login e o cadastro no painel, não chamadas com chaves de API. Entra em vigor ao salvar e mantém as sessões existentes.", "仅本机": "Somente este dispositivo", "仅用现有数据、不联网刷新": "Usando apenas os dados existentes, sem atualização online", "从云端恢复": "Restaurar da nuvem", "从桌面图标启动,全屏、无地址栏。想卸载:长按图标删除,或清除浏览器站点数据。": "Abra pelo ícone na tela inicial: em tela cheia, sem barra de endereço. Para desinstalar, mantenha o ícone pressionado e remova, ou limpe os dados do site no navegador.", "优先使用当前路由内的视觉模型": "Priorizar modelos de visão da rota atual", "优先在当前路由内找可用的视觉模型,找不到就用 {model} 直接回答,不再回到原模型。": "Prefere um modelo de visão disponível na rota atual; se não houver, {model} responde direto no lugar do modelo original.", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "Restaura os grupos, a ordem e a visibilidade padrão. Grupos criados por você são removidos (os menus são mantidos).", "会话图片压缩设置已刷新": "Configurações de compressão de imagens atualizadas", "位置": "Local", "位置与端口": "Local e portas", "使用 Rust 正则语法,保存时由后端校验;不支持环视和反向引用。": "Usa a sintaxe de expressões regulares do Rust, validada pelo backend ao salvar. Lookaround e referências anteriores não são suportados.", "使用中文单位(亿 / 万)": "Usar unidades chinesas (yi / wan)", "使用本地量级词(万 / 亿式)": "Usar magnitudes locais (estilo k / M)", "使用默认值": "Usando os padrões", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "O módulo de layout da barra lateral não foi carregado (ui/sidebar-layout.js deve vir antes de app.js).", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "Nenhum menu aparece na barra lateral. Ative os que precisar em Configurações → Exibição → Menus da barra lateral.", "侧边栏菜单": "Menus da barra lateral", "保存上游原始报文(请求头、请求体、响应头、响应体)": "Salvar payloads brutos do upstream (cabeçalhos da requisição, corpo da requisição, cabeçalhos da resposta, corpo da resposta)", "保存单独配置": "Salvar configuração do modelo", "保存后以这里的文本为准": "Após salvar, este texto passa a valer", "保存后对下一轮补货立即生效,不用重启。守卫跑在应用界面里:轻量模式关窗销毁界面期间无法铸造,走套餐池(Start Plan)通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。": "Salvar entra em vigor na próxima rodada de reposição, sem reinício. O guardião roda dentro da interface do aplicativo: enquanto o modo leve tiver destruído a interface após fechar a janela, não é possível cunhar tokens — solicitações no canal do pool de planos (Start Plan) caem no registro de solicitações como 503 (com o motivo); reabra a interface e a cunhagem se recupera automaticamente.", "保存后应用将重启以生效。": "O aplicativo será reiniciado após salvar para que isso tenha efeito.", "保存后状态读取立即生效。后台不会自动生成令牌;需要人机验证时,在账号的「套餐明细」中主动开始验证。模型请求免验证时无需保持界面打开。": "As configurações de consulta de status entram em vigor após salvar. Nenhum token é gerado automaticamente. Inicie a verificação necessária nos detalhes do plano da conta. Não é preciso manter a interface aberta quando o modelo dispensa verificação.", "保存后立即生效,不用重启:策略与粘性作用于**下一次**转发的选路,进行中的请求不受影响。": "Vale na hora ao salvar, sem reiniciar: estratégia e aderência valem para a escolha da **próxima** requisição encaminhada; requisições em andamento não são afetadas.", "保存后立即生效,不用重启;次数用尽仍失败时,错误原样返回给客户端。": "Passa a valer imediatamente após salvar, sem reiniciar; se as tentativas se esgotarem e ainda houver falha, o erro é retornado ao cliente como está.", "保存后立即生效,不用重启;超时按上游失败处理(计入请求日志的「错误」列,并按「请求重试」的设置决定是否重试)。": "Passa a valer imediatamente após salvar, sem reiniciar; o timeout é tratado como falha do upstream (contabilizado na coluna “Erro” dos logs de requisições e sujeito às configurações de “Retry de requisições” para nova tentativa).", "保存后立即生效:保留天数和数量上限同时生效,调小任一项会立即清理超出的历史数据,且不可恢复。": "Entra em vigor imediatamente após salvar. Os dias de retenção e o limite de registros se aplicam juntos; reduzir qualquer um remove imediatamente os dados históricos excedentes, sem possibilidade de recuperação.", "保存后立即生效:改小保留天数会立刻删除超出的历史数据,且不可恢复。": "Passa a valer imediatamente após salvar: reduzir os dias de retenção exclui na hora os dados históricos excedentes, sem possibilidade de recuperação.", "保存在当前网关,登录页也会公开显示。不会更改安装包、快捷方式、系统托盘图标或软件版本信息。": "Salvo no gateway atual e exibido publicamente na página de login. Não altera o instalador, os atalhos, o ícone da bandeja do sistema nem as informações de versão.", "保存并重启": "Salvar e reiniciar", "保存设置": "Salvar configurações", "保持当前路由范围,不跳到其他路由组。": "Mantém o escopo da rota atual e não pula para outro grupo de rotas.", "保活换行丢弃": "Descartar quebras keepalive", "保留原图和对话,由视觉模型直接回答本次请求。": "Preserve as imagens originais e a conversa para que um modelo de visão responda diretamente a esta solicitação.", "保留原图,选择视觉模型": "Preservar imagens e escolher um modelo de visão", "保留图片中的文字、代码、数字、布局与状态。识读失败就停止,不删图后继续回答。": "Preserve texto, código, números, disposição e estado nas imagens. Pare se a leitura falhar; nunca remova imagens para continuar respondendo.", "保留天数已刷新": "Dias de retenção atualizados", "保留旧版配置兼容,当前不会自动连铸。每次点击「开始验证」只取得一枚令牌,失败或取消后停止。": "Mantido para compatibilidade com configurações antigas. Não há geração automática em lote. Cada ação Iniciar verificação obtém um token e para em caso de falha ou cancelamento.", "保留草稿并读取最新设置": "Manter rascunho e recarregar configurações", "修改密码": "Alterar senha", "修改密码需要输入当前密码;修改成功后,其他设备 / 浏览器上的登录会立即失效,当前这条会话保留。": "Alterar a senha exige a senha atual. Após o sucesso, os acessos em outros dispositivos e navegadores são revogados imediatamente; esta sessão permanece ativa.", "值": "Valor", "值与默认值相同的行不占覆盖(存的是「改过的键」,不是全量配置);值留空保存表示这个头不发送,删除改过的行表示回落默认值。改完立即生效,不用重启。": "Linhas com valor igual ao padrão não contam como sobrescrita (o que é armazenado são as “chaves alteradas”, não a configuração completa); salvar com o valor vazio significa que esse cabeçalho não é enviado, e excluir uma linha alterada significa voltar ao valor padrão. As mudanças passam a valer na hora, sem reiniciar.", "值(留空 = 不发送)": "Valor (vazio = não enviar)", "停止并说明原因": "Parar e explicar o motivo", "像素": "px", "允许其他设备访问前,需要设置面板管理员账号与密码。注册完成后会继续开启流程并重启应用。": "Defina um usuário e uma senha de administrador do painel antes de permitir acesso de outros dispositivos. Após o registro, o acesso pela rede será ativado e o aplicativo será reiniciado.", "允许其他设备访问网关": "Permitir que outros dispositivos acessem o gateway", "允许局域网内的设备访问网关": "Permitir que dispositivos na LAN acessem o gateway", "允许无 Key 裸跑": "Permitir execução sem chaves", "允许浏览器里的页面跨来源调用网关(/v1/*)": "Permitir que páginas do navegador chamem o gateway de outra origem (/v1/*)", "允许的域名": "Hostnames permitidos", "先发送原图,明确拒图后补救": "Enviar originais primeiro; adaptar somente após rejeição explícita", "先把图片交给视觉模型读一遍,再让原模型结合读到的内容回答。": "O modelo de visão lê a imagem primeiro e o modelo original responde usando o que foi lido.", "全局配置": "Configuração global", "全部已配置": "Tudo já configurado", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 中,加密密钥单独保存在库外。跨机器备份请使用「整库备份 / 恢复」,不要只复制数据库。更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "Contas, logs, requisições, dados de depuração e configurações ficam no agent2api.db. As chaves ficam separadas. Para transferir dados entre máquinas, use Backup / restauração do banco inteiro, em vez de copiar só o banco. Para mudar o diretório, defina AGENT2API_PROXY_HOME e reinicie.", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 这一个 SQLite 数据库里。备份时只需拷贝这个文件;更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "Todos os dados (contas, logs de eventos, registros de requisições, payloads de debug e configurações) ficam em um único banco de dados SQLite, o agent2api.db, no diretório de configuração. Para fazer backup, basta copiar esse arquivo; para mudar o local de armazenamento, defina a variável de ambiente AGENT2API_PROXY_HOME e reinicie o programa.", "全部角色": "Todos os papéis", "全部角色沿用原有行为,包含思考内容和工具参数;指定角色时只改消息正文,未选角色及思考内容、工具参数保持原样。": "Todos os papéis mantém o comportamento existente, incluindo o raciocínio e os argumentos de ferramentas. Com papéis selecionados, apenas o conteúdo das mensagens é alterado; papéis não selecionados, raciocínio e argumentos de ferramentas permanecem intactos.", "共享视觉模型已变更,请重新确认并保存,避免把图片交给未经确认的模型。": "O modelo de visão compartilhado mudou. Confirme e salve novamente antes de enviar imagens ao novo modelo.", "共用设置:{providers}": "Configurações compartilhadas: {providers}", "关闭后不再提供网页管理面板,本机桌面程序仍可正常管理;已开启的 API 转发不受影响。": "O painel web deixará de ser servido. O gerenciamento pelo aplicativo desktop local continuará disponível, e o encaminhamento da API não será afetado.", "关闭后手动上传 / 下载也会被拒绝。": "Quando desativado, envio/download manual também é recusado.", "关闭后网关只监听 127.0.0.1,其他设备将无法直接连接,网页管理面板也会一并关闭。已配置的网关 Key 与账号不受影响。": "Ao desativar, o gateway escutará apenas em 127.0.0.1, impedindo conexões diretas de outros dispositivos. O painel web também será desativado. As chaves do gateway e contas existentes não serão afetadas.", "关闭后网关回到只监听 127.0.0.1,局域网内的设备将无法继续访问;已配置的网关 Key 与账号都不受影响。": "Após desativar, o gateway volta a escutar apenas 127.0.0.1 e os dispositivos da LAN deixam de conseguir acessá-lo; as chaves do gateway e as contas já configuradas não são afetadas.", "关闭后,管理界面不再从局域网提供,只有本机的桌面程序可以管理;已开启的 API 转发不受影响。": "Após desativar, a interface de administração deixa de ser servida na LAN e só o programa desktop local pode gerenciá-la; o encaminhamento de API já ativado não é afetado.", "关闭局域网访问": "Desativar acesso LAN", "关闭并重启": "Desativar e reiniciar", "关闭思考": "Desativar raciocínio", "关闭窗口即退出程序,后台转发随之中断": "Fechar a janela encerra o programa e o encaminhamento em segundo plano é interrompido", "关闭窗口时最小化到托盘": "Minimizar para a bandeja ao fechar a janela", "关闭窗口时程序不退出,转发继续在后台运行;退出请用托盘菜单": "Fechar a janela não encerra o programa; o encaminhamento continua rodando em segundo plano. Para sair, use o menu da bandeja", "关闭网络访问": "Desativar acesso pela rede", "兼容处理最长等待": "Espera máxima do processamento de compatibilidade", "兼容处理最长等待(秒)": "Espera máxima para adaptação (segundos)", "内容拦截降级": "Fallback de bloqueio de conteúdo", "内置识别、自定义规则与来源声明": "Identificação integrada, regras personalizadas e declarações de origem", "内置软件标识规则": "Regra integrada de identificação", "内置默认": "Padrões integrados", "内置默认提示词": "System prompt padrão integrado", "再输入一次新密码": "Digite a nova senha novamente", "凭据类请求头已脱敏。": "Os cabeçalhos de requisição com credenciais foram mascarados.", "凭证只保存在这台手机上,按服务器分别存放": "As credenciais ficam apenas neste celular, separadas por servidor", "出问题时把这一页截图,或点「复制全部信息」把文本贴进反馈,一般就能定位到大致原因。": "Quando algo der errado, tire um print desta página ou use \"Copiar todas as informações\" e cole o texto no relato — normalmente isso já basta para identificar a causa.", "分享图标在 Safari 底部工具栏中间": "O ícone de Compartilhar fica no meio da barra inferior do Safari", "分组名": "Nome do grupo", "分组名,例如「常用」": "Nome do grupo, ex.: \"Favoritos\"", "切换视觉模型": "Trocar para um modelo de visão", "切换视觉模型 · 视觉模型回答": "Trocar modelo · O modelo de visão responde", "切换视觉模型配置": "Configuração de troca de modelo de visão", "切换账号重试次数": "Retries trocando de conta", "刚刚从 models.dev 拉到的最新数据": "Dados recém-buscados do models.dev", "删除 {code}": "Remover {code}", "删除分组": "Excluir grupo", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "Excluir o grupo \"{name}\"? Os {n} menus vão para \"{target}\" — nada é perdido.", "删除匹配内容": "Excluir texto correspondente", "删除后不再接受这个分类的来源声明,历史记录保留原来的名称和用量。": "Declarações desta categoria não serão mais aceitas. Os registros históricos mantêm os nomes e o uso originais.", "删除后,新请求不再使用这条规则;历史记录保持不变。": "Novas requisições deixarão de usar esta regra. Os registros históricos permanecem inalterados.", "删除客户端分类": "Excluir categoria de cliente", "删除状态码 {code}": "Remover o status code {code}", "删除空分组「{name}」?": "Excluir o grupo vazio \"{name}\"?", "删除识别规则": "Excluir regra de identificação", "删除这个分组(组内菜单移到第一组)": "Excluir este grupo (os menus vão para o primeiro grupo)", "刷新": "Atualizar", "刷新失败:{message}": "Falha na atualização: {message}", "前台运行": "Execução em primeiro plano", "前缀": "Prefixo", "剥离上游审核黑名单指纹(改写请求体里的模板句与表头)": "Remover fingerprints da lista de bloqueio da revisão do upstream (reescrever frases de template e cabeçalhos no corpo da requisição)", "功能建议": "Sugestões de funcionalidades", "加入备选": "Adicionar como alternativo", "加密备份必填,旧 SQL 可留空": "Obrigatória para backup criptografado; opcional para SQL antigo", "包含": "Contém", "包含日志与调试报文": "Incluir logs e payloads de depuração", "包含:{items}": "Inclui: {items}", "匹配内容": "Padrão de correspondência", "匹配内容不能为空,且最多 {max} 个字符": "O padrão é obrigatório e deve ter no máximo {max} caracteres", "匹配内容不能为空,最长 256 个字符": "Informe um padrão com até 256 caracteres", "匹配原文含零宽空格,词表预览用 \\u{200b} 标出;编辑时保留该字符。": "O padrão contém um espaço de largura zero, exibido como \\u{200b} na prévia. Preserve esse caractere ao editar.", "匹配方式": "Tipo de correspondência", "区域(Region)": "Região (Region)", "华为云 OBS": "Huawei Cloud OBS", "单独指定视觉模型": "Escolher um modelo de visão separado", "单轮铸造上限": "Limite de cunhagem por rodada", "占用大小": "Tamanho ocupado", "历史未记录识别依据": "Evidência de identificação não registrada", "原来的「全局方式 + 模型单独配置」已按相同意思自动填成下面的模型名单,可以照用也可以重新调整;改动一处之后就会按新形式存下来。": "O seu antigo \"modo global + ajustes por modelo\" foi preenchido nas listas de modelos abaixo com o mesmo significado. Use como está ou ajuste; ao alterar qualquer coisa, passa a ser gravado no novo formato.", "原模型不能直接看图": "O modelo original não consegue ler imagens diretamente", "原模型根据识读内容回答": "O modelo original responde com base na descrição", "去反馈": "Enviar feedback", "去申请": "Enviar solicitação", "反馈与需求": "Feedback e solicitações", "发现缺货时一轮最多铸几个(连铸之间固定隔 500 毫秒)。默认 1 个:SDK 同一实例连铸容易互相干扰。调大补货更快,但单轮连铸越多越容易触发上游风控。可填 1–5。": "Quantos tokens uma mesma rodada pode cunhar ao detectar falta (intervalo fixo de 500 ms entre cunhagens seguidas). Padrão 1: cunhagens seguidas na mesma instância do SDK tendem a se interferir. Um valor maior repõe mais rápido, mas quanto mais cunhagens por rodada, mais fácil acionar o controle de risco do upstream. Aceita 1–5.", "取消勾选后只备份业务数据(账号、配置与余额记录),文件显著变小;事件日志、请求统计与调试报文不会进备份文件。": "Desmarcado, só os dados de negócio entram no backup (contas, configuração e registros de saldo) e o arquivo fica bem menor; logs de eventos, estatísticas de requisições e payloads de depuração ficam de fora.", "变更网页管理面板": "Alterar o painel de administração web", "只列单独配置过的家,其余沿用上面的全局配置": "Só lista os provedores com configuração individual; os demais seguem a configuração global acima", "只对「排队制」的上游生效:模型繁忙时上游不报错,只回一句「建议 N 秒后再来」,网关按建议时长等一会儿再发同一请求,等满次数仍排不上才把「排队中」作为错误返回(HTTP 503,文案会说明这不是登录态或额度问题)。等待发生在首个字节之前,吃的是「等待响应超时」那份预算 —— 两项设置一起决定一次请求最多卡多久;排队不会标记账号限额、也不会换账号(换谁都一样在排队)。保存后对下一个请求立即生效,不用重启。": "Só tem efeito em upstreams com “sistema de fila” : quando o modelo está ocupado, o upstream não retorna erro, apenas responde “recomendamos voltar em N segundos”; o gateway espera o tempo sugerido e reenvia a mesma requisição, e só quando o número de esperas se esgota a “fila” é devolvida como erro (HTTP 503, com um texto explicando que não é um problema de login nem de cota). A espera acontece antes do primeiro byte e consome o orçamento do “Timeout de espera de resposta” — as duas configurações, juntas, determinam quanto tempo no máximo uma requisição pode ficar travada; a fila não marca a conta como limitada nem troca de conta (todos estão igualmente na fila). Passa a valer para a próxima requisição após salvar, sem reiniciar.", "只影响读图那一步的思考深度;两块设置统一用这个选择。": "Afeta apenas a profundidade de raciocínio na etapa de leitura da imagem; os dois blocos compartilham esta escolha.", "只有已安装、启用并声明了设置项的提供商会出现在这里。可前往插件页检查安装与启用状态。": "Aparecem aqui apenas provedores com um plugin instalado e ativado que declare opções de configuração. Confira a instalação e a ativação na página Plugins.", "只沿用模型与思考等级,不借用视觉服务的内部 Key;仍受当前请求权限限制。": "Apenas o modelo e o nível de raciocínio são reutilizados, não a Key interna do serviço de visão. As permissões da solicitação atual continuam valendo.", "只清掉这个浏览器存的 Key,不影响网关": "Remove apenas a chave salva neste navegador; o gateway não é afetado", "只覆盖指定提供商的指定模型,其余跟随全局。": "Substitui apenas a configuração do modelo e provedor selecionados; os demais seguem a configuração global.", "可跨提供商多选;只处理这些模型看不了的图片。": "Seleção múltipla entre provedores; só são tratadas as imagens que esses modelos não conseguem ler.", "可跨提供商多选;这些模型的请求会整体改交视觉模型。": "Seleção múltipla entre provedores; as requisições desses modelos são entregues inteiras ao modelo de visão.", "可选。部分服务(如中国科技云数据胶囊)会按 User-Agent 校验凭据绑定的客户端类型,此时填写包含该类型名的字符串(例如 rclone/v1.67.0)。留空则维持默认。": "Opcional. Alguns serviços (como o CSTCloud Data Capsule) validam pelo User-Agent o tipo de cliente vinculado à credencial; nesse caso, informe uma string que contenha o nome do tipo (por exemplo, rclone/v1.67.0). Deixe em branco para manter o padrão.", "合计只累加当前筛选后可见的账号,筛选、搜索一改数字就跟着变。": "O total soma apenas as contas visíveis no filtro atual; mudar o filtro ou a busca altera o número.", "合计按整组统计(默认):不受筛选、搜索影响,被筛掉与已禁用的账号也计入。": "O total abrange o grupo inteiro (padrão): filtros e busca não o alteram, e contas filtradas ou desativadas ainda contam.", "同一会话、同一问题、相同权限范围内复用;追问新细节会重新识读。": "Reutilizado na mesma sessão, pergunta e escopo de permissão; perguntar novos detalhes força nova leitura.", "同一会话在 5 分钟内尽量跟住同一个账号;停了 5 分钟再发就算新会话。多数场景用它 —— 多轮对话少换号,也不至于把账号焊死。": "A mesma sessão tenta ficar na mesma conta por 5 minutos; pausar mais de 5 minutos conta como sessão nova. A escolha para a maioria dos casos — menos troca de conta em conversas de vários turnos, sem prender uma conta.", "同一会话在 6 小时内跟住同一个账号;适合一坐几个小时的长会话,上游的上下文缓存能吃到更多。": "A mesma sessão fica na mesma conta por até 6 horas; ideal para sessões longas de horas — o cache de contexto do upstream é aproveitado bem mais.", "同一提供商的同一模型不能重复配置": "O mesmo provedor e modelo não podem ter configurações duplicadas", "同一账号重试次数": "Retries na mesma conta", "同时开放网页管理面板": "Também abrir o painel de administração web", "同步密码": "Senha de sincronização", "名单最多 {max} 个状态码": "No máximo {max} status codes na lista", "后端没有返回版本信息": "O backend não retornou informações de versão", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "Contém o item fixo \"Configurações\", então o grupo não pode ser ocultado inteiro (os outros menus podem ser ocultados individualmente)", "启动与托盘": "Inicialização e bandeja", "启动时间": "Iniciado em", "启用云同步": "Ativar sincronização na nuvem", "启用图片兼容": "Ativar compatibilidade de imagens", "启用规则": "Ativar regra", "启用规则:{name}": "Ativar regra: {name}", "命中依据:{header} · {pattern}": "Evidência correspondente: {header} · {pattern}", "命中这些上游状态码的失败不在同一账号重发,直接换下一个账号继续试(换号占用「切换账号重试次数」,换满仍失败才把错误原样返回给客户端)。输入 100–599 的状态码后回车添加,点 × 或退格删除;默认 402(积分不足)。清空全部表示任何错误都照常重试。": "Falhas que correspondam a esses status codes do upstream não são reenviadas na mesma conta: o gateway passa direto para a próxima conta e continua tentando (a troca de conta consome uma das “Retries trocando de conta”; só quando elas se esgotam e a falha persiste é que o erro é retornado ao cliente como está). Digite um status code de 100–599 e pressione Enter para adicionar; clique em × ou use Backspace para remover. Padrão: 402 (pontos insuficientes). Limpar tudo significa que qualquer erro é tratado com o retry normal.", "品牌 Logo": "Logo da marca", "品牌设置": "Configurações da marca", "品牌设置已保存": "Configurações da marca salvas", "品牌预览": "Prévia da marca", "哪些模型用这种方式": "Quais modelos usam esta forma", "固定": "Fixo", "图标经 Magpie 引入,未单独记录 Lobe Icons 的图标版本;以上版本仅用于核对许可。": "Os ícones foram obtidos por meio do Magpie. A revisão dos ícones do Lobe Icons não foi registrada separadamente; a revisão acima foi usada apenas para verificar a licença.", "图片与相关对话将交给配置的视觉模型处理,可能增加等待时间和费用。请确认这些服务可以接收你的图片。": "As imagens e a conversa relevante serão enviadas aos modelos de visão configurados, o que pode aumentar a espera e o custo. Confirme que esses serviços podem receber suas imagens.", "图片兼容": "Compatibilidade de imagens", "图片兼容当前是关闭的:下面两块设置照样能改、会被保留,但不会对任何请求生效。": "A compatibilidade de imagens está desligada: os dois blocos abaixo continuam editáveis e são mantidos, mas nada disso vale para qualquer requisição.", "图片兼容设置已保存,仅对新请求生效。": "Configuração de compatibilidade de imagens salva. Ela se aplica apenas a novas solicitações.", "图片兼容设置读取失败": "Falha ao carregar a configuração de compatibilidade de imagens", "图片压缩": "Compressão de imagens", "图片最长边超过这个值就等比缩小(只缩不放)。默认 2048,可填 256–8192 —— 多数视觉模型在这个量级已经够用,调小更省流量、但细节会丢。": "Imagens cujo lado maior excede este valor são reduzidas proporcionalmente (nunca ampliadas). Padrão 2048, faixa 256–8192 — a maioria dos modelos de visão já fica bem nesse tamanho; um valor menor economiza tráfego, mas perde detalhes.", "图片能力未知时": "Quando o suporte a imagens for desconhecido", "图片过大、格式错误或下载失败不会被当作模型不支持图片。": "Imagem grande demais, formato inválido ou falha no download não contam como modelo sem suporte a imagens.", "在同一个账号上原地重发几次(不含首发;整条请求共用一份,用完后换来的账号只发一次就继续换)。可填 0–10,0 表示失败立即换号。": "Quantas vezes o gateway reenvia na própria conta (sem contar o primeiro envio; a requisição inteira compartilha um único saldo e, esgotado ele, cada conta obtida na troca envia uma vez e a troca segue). Valores de 0–10; 0 significa trocar de conta imediatamente após a falha.", "在这里直接编辑提示词正文:保存后以这份文本为准(优先于上面的提示词文件),清空则回到文件 / 内置默认。改一个字不必再去编辑器里开文件。": "Edite o texto do prompt diretamente aqui: após salvar, este texto passa a valer (com prioridade sobre o arquivo de prompt acima); se você limpar, volta para o arquivo / padrão integrado. Não é preciso abrir um arquivo em um editor só para mudar uma palavra.", "在途请求": "Requisições em andamento", "地址格式不对。填「IP 或域名:端口」,可带 http:// 或 https://,例如 192.168.1.23:3065": "Endereço inválido. Informe \"IP ou domínio:porta\", opcionalmente com http:// ou https:// — por exemplo 192.168.1.23:3065", "坚果云": "Jianguoyun (Nutstore)", "坚果云需使用「第三方应用密码」(账户信息 → 安全选项里生成),地址必须是 /dav/ 下的目录。": "O Jianguoyun exige uma senha de aplicativo (gerada em Informações da conta → Segurança) e o endereço deve apontar para um diretório em /dav/.", "填「IP 或域名:端口」。协议可写 http:// 或 https://,不写默认 http;http 不写端口默认 3065,https 默认 443。地址里的 /m、/v1 会自动去掉。": "Informe \"IP ou domínio:porta\". O protocolo pode ser http:// ou https:// (http é assumido se omitido). Sem porta, http usa 3065 e https usa 443. Qualquer /m ou /v1 no endereço é removido automaticamente.", "处理方式": "Modo de processamento", "处理示意": "Como funciona", "备份中…": "Fazendo backup…", "备份包含账号凭证、网关 Key、GitHub 令牌与云同步凭据的恢复密钥,整个文件受备份密码保护。请分开保管文件与密码;忘记密码无法恢复。": "O backup inclui chaves de recuperação de contas, keys do gateway, tokens do GitHub e credenciais de sincronização. O arquivo inteiro é protegido pela senha do backup. Guarde arquivo e senha separadamente; sem a senha, não é possível restaurar.", "备份密码": "Senha do backup", "备份密码不能超过 1024 字节": "A senha do backup não pode exceder 1024 bytes", "备份密码至少需要 12 位,建议使用较长且不重复的密码": "Use ao menos 12 caracteres; recomendamos uma senha longa e exclusiva", "备份整库": "Fazer backup do banco", "备份文件内含全部账号凭证、网关 API Key 与面板管理员凭据,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "O arquivo de backup contém todas as credenciais de contas, as chaves de API do gateway e as credenciais de administrador do painel — dá para logar com ele diretamente. Guarde com cuidado; não compartilhe nem envie para lugar público.", "备选模型": "Modelo alternativo", "复制全部信息": "Copiar todas as informações", "复制给客户端": "Copiar para o cliente", "复用相同图片的识读结果": "Reutilizar a leitura de imagens idênticas", "外观": "Aparência", "外观 · 接入 · 关于": "Aparência · Acesso · Sobre", "多个客户端标识冲突": "Identificadores de clientes conflitantes", "天": "dias", "天数": "Dias", "失败 {n} 个": "Falhas: {n}", "失败 {n} 个:{detail}": "Falhas: {n} — {detail}", "失败后最多再换几个账号试(填 N = 最多换 N 个,首发那个不算)。换到同一家名下另一个账号、或换到另一家,都各算一次;换满仍失败就返回错误。可填 0–10,0 表示失败立即报错。": "Quantas contas a mais tentar em caso de falha (preencha N = trocar por até N contas; a que fez o primeiro envio não conta). Trocar para outra conta do mesmo provedor ou para outro provedor conta igualmente como uma troca; se o limite se esgotar e a falha persistir, um erro é retornado. Valores de 0–10; 0 significa retornar o erro imediatamente após a falha.", "存储桶(Bucket)": "Bucket", "存储概况已刷新": "Visão geral do armazenamento atualizada", "安全": "Segurança", "安装到主屏幕": "Adicionar à tela inicial", "安装到桌面": "Instalar como app", "安装包形态": "Tipo de instalador", "完全相同": "Correspondência exata", "官方原文只有一句:声明自己是 ZCode。": "O texto oficial tem apenas uma frase: declara que ele é o ZCode.", "实际处理:": "O que acontece na prática: ", "客户端 system 原样出站。": "O system do cliente é enviado como está.", "客户端 system 原样出站(只靠指纹脱敏改写模板句)。": "O system do cliente é enviado como está (somente o mascaramento de fingerprint reescreve frases de template).", "客户端专用请求头": "Cabeçalho específico do cliente", "客户端名称": "Nome do cliente", "客户端名称不能为空,最长 80 个字符": "Informe um nome de cliente com até 80 caracteres", "客户端名称重复或与内置名称冲突": "Nome de cliente duplicado ou em conflito com um nome integrado", "客户端标识无效或重复": "Identificador de cliente inválido ou duplicado", "客户端识别": "Identificação de clientes", "客户端识别入口尚未就绪,请刷新页面后重试": "A identificação de clientes ainda não está pronta. Atualize a página e tente novamente.", "客户端识别设置读取失败": "Falha ao carregar configurações de identificação", "客户端(Claude Code / Codex 等 CLI)会在 system 提示词里注入几十句固定模板,上游按逐字匹配审核,命中就整单拦截(HTTP 400)。指纹脱敏能改写实测命中过的那几句,但换一个客户端版本就可能冒出新的。这里可以把 system 整段换成网关自己那份:①「透传」= 不动客户端 system(默认,行为与之前完全一致);②「替换」= 删掉客户端所有 system / developer 消息,换成网关的提示词(客户端项目规范随之消失);③「追加」= 在开头连续 system 块之后插入一条网关提示词,既有消息逐字不动(客户端规范与网关提示词并用)。那份提示词有两个来源:提示词文件(留空用内置默认),或直接在界面上编辑正文 —— 编辑过就以那份正文为准(优先于文件),清空则回到文件 / 内置默认。另外,透传 / 追加模式下撞了内容拦截(多半是指纹误报)时,网关会自动换一段最小中性提示词重试一次,并把「降级期」开到次日 00:00 —— 期间所有请求直接带中性提示词出门,不再先撞一次 400;这里能看见并提前解除它。上面几项是**默认值**:想给某个提供商单独配,用下面的「按提供商」加一行(带「网关自带」的家默认就列在那里)—— 不同的上游对这些内容的接受程度不一样。": "Os clientes (ferramentas CLI como Claude Code / Codex) injetam dezenas de frases de template fixas no system prompt, e o upstream as revisa por correspondência palavra por palavra: um acerto bloqueia a requisição inteira (HTTP 400). O mascaramento de fingerprint consegue reescrever as frases que foram bloqueadas nos testes, mas uma versão diferente do cliente pode trazer novas. Aqui é possível substituir o system inteiro pelo do próprio gateway: ① “Passthrough” = não mexe no system do cliente (padrão, comportamento idêntico ao anterior); ② “Substituir” = apaga todas as mensagens system / developer do cliente e coloca o prompt do gateway (as instruções de projeto do cliente desaparecem junto); ③ “Anexar” = insere um prompt do gateway depois dos blocos system consecutivos do início, deixando as mensagens existentes palavra por palavra intactas (as instruções do cliente e o prompt do gateway são usados juntos). Esse prompt tem duas origens: o arquivo de prompt (deixe vazio para usar o padrão integrado) ou a edição direta do texto na interface — se editado, vale o texto editado (com prioridade sobre o arquivo); se limpo, volta para o arquivo / padrão integrado. Além disso, nos modos Passthrough / Anexar, quando há bloqueio de conteúdo (geralmente um falso positivo de fingerprint), o gateway tenta de novo automaticamente com um system prompt neutro mínimo e estende o “período de fallback” até 00:00 do dia seguinte — nesse período, todas as requisições saem direto com o prompt neutro, sem bater primeiro em um 400; aqui você pode ver e encerrar o fallback antecipadamente. Os itens acima são **valores padrão**: para configurar um provedor específico, adicione uma linha em “Por provedor” abaixo (os provedores com “Interno do gateway” já aparecem lá por padrão) — cada upstream tolera esses conteúdos de forma diferente.", "家之间仍按优先级,只有同一家内部轮流用各账号 —— 想优先用某几家、又不愿把某一家的某个账号焊死时用它。": "Os provedores seguem a prioridade; só as contas dentro do mesmo provedor se alternam. Para preferir alguns provedores sem prender nenhuma conta específica.", "家内轮询": "Rodízio por provedor", "容器内更新": "Atualização no contêiner", "密码、文件或密钥校验失败时不会替换主库;替换阶段失败会自动尝试还原,实际结果以上方错误说明为准。": "Falhas na validação da senha, do arquivo ou das chaves não alteram o banco principal. Se a substituição falhar, a restauração será tentada automaticamente; o erro acima informa o resultado real.", "密码加密 · 包含恢复密钥": "Criptografado com senha · Chaves incluídas", "密码至少 8 位": "A senha deve ter pelo menos 8 caracteres", "对话里内嵌的 base64 大图(截图、照片)既撑大请求体,也拉高按像素折算的上游计费。开启后,网关在转发前把超过阈值的图等比缩到长边上限、重新存成 JPEG —— 只改发给上游的副本,请求日志里保存的仍是你发来的原图。同一张原图在多轮对话里重复出现时复用上一次的压缩结果,不会每轮重算。http 链接图片、GIF 动图、SVG 一律不动;压完反而更大的图也保留原图。只作用在对话场景,生图与图片编辑不受影响。默认开启;不想要的话把开关关掉即可。": "Imagens base64 grandes embutidas na conversa (capturas de tela, fotos) incham o corpo da requisição e elevam a cobrança do provedor, calculada por pixel. Quando ativado, o gateway reduz as imagens acima do limite até o tamanho máximo do lado maior e as recodifica em JPEG antes de encaminhar — apenas a cópia enviada ao provedor é alterada; o log de requisições continua guardando o original que você enviou. Quando a mesma imagem original reaparece ao longo dos turnos, o resultado comprimido anterior é reaproveitado em vez de recalculado. Imagens referenciadas por links http, GIFs animados e SVGs nunca são tocados; uma imagem que ficaria maior após a recodificação é mantida como está. Aplica-se apenas ao chat — geração e edição de imagens não são afetadas. Ativado por padrão; desative o interruptor se não quiser.", "导入前会把本机的 account.key 改名备份(account.key.bak-时间戳),不会直接删除。": "Antes de importar, o account.key local é renomeado para backup (account.key.bak-); ele nunca é excluído.", "导入完成:{summary}": "Importação concluída: {summary}", "导入密钥失败:{message}": "Falha ao importar a chave: {message}", "导入密钥并继续": "Importar chave e continuar", "导入账号": "Importar contas", "导出中…": "Exportando…", "导出会把全部账号与自定义提供商定义写入一个 JSON 文件,可以拷到另一台机器上导入后继续使用。导入采用合并策略:同提供商下按业务身份(UID / userId / apiKey 等)去重 —— 已存在的账号只更新凭证,保留本机原有的优先级顺序;新账号追加到转发顺序末尾,不会抢占当前正在使用的账号;自定义提供商定义按 id 合并,本机缺失时自动补建。": "A exportação grava todas as contas e definições de provedores personalizados em um arquivo JSON, que pode ser copiado para outra máquina e importado para continuar usando. A importação usa uma estratégia de mesclagem: dentro do mesmo provedor, as contas são deduplicadas pela identidade de negócio (UID / userId / apiKey etc.) — contas já existentes têm apenas as credenciais atualizadas e mantêm a ordem de prioridade original desta máquina; contas novas são anexadas ao final da ordem de encaminhamento e não tomam o lugar da conta em uso no momento; as definições de provedores personalizados são mescladas por id e criadas automaticamente quando ausentes nesta máquina.", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义": "O arquivo exportado contém credenciais como accessToken / refreshToken / apiKey e definições de provedores personalizados", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "O arquivo exportado contém credenciais como accessToken / refreshToken / apiKey e definições de provedores personalizados, e pode ser usado diretamente para login. Guarde-o com cuidado; não o compartilhe nem o envie para locais públicos.", "导出账号": "Exportar contas", "将数据库和恢复凭证所需的密钥一起保存为密码加密的 .a2ab 备份,可在 Windows、macOS 或 Linux 上恢复,无需手工复制密钥。恢复时整体替换账号、配置、日志与桌面设置,并使用目标机器的密钥重新加密凭证,不覆盖本机已有钥匙。可取消包含日志以减小文件;旧 .sql 备份仍可导入。恢复前自动保留安全备份,完成后需要重新登录管理面板。": "Salve o banco e as chaves de recuperação em um backup .a2ab criptografado por senha, restaurável no Windows, macOS ou Linux sem copiar chaves manualmente. A restauração substitui contas, configurações, logs e preferências do desktop, recriptografando as credenciais com as chaves do destino sem sobrescrevê-las. Exclua logs para reduzir o arquivo. A importação de .sql antigo continua disponível. Um backup de segurança é criado antes e é necessário entrar novamente no painel.", "尚未注册管理员。开启「网关 → 网络访问 → 允许其他设备访问网关」时会引导注册,也可以从登录页注册。": "Nenhum administrador foi registrado. Ativar Gateway → Acesso pela rede → Permitir que outros dispositivos acessem o gateway inicia o registro. Você também pode se registrar pela página de login.", "尚未注册管理员:管理接口不需要登录。开启「允许局域网访问」时会引导注册,也可以从登录页注册。": "Nenhum administrador registrado: a API de gerenciamento não exige login. Ativar \"Permitir acesso pela LAN\" conduz ao registro; você também pode registrar pela página de login.", "尚未配置视觉分析模型": "Nenhum modelo de análise visual configurado", "局域网开放后,管理接口要求登录。请设置管理员账号与密码,注册完成会直接继续开启流程。": "Com o acesso LAN ativado, a interface de administração exige login. Defina a conta de administrador e a senha; concluído o registro, o fluxo de ativação continua automaticamente.", "局域网访问": "Acesso LAN", "工具用法与环境说明那一大段。": "O bloco grande de uso das ferramentas e descrição do ambiente.", "已为「{label}」单独配置提示词": "Prompt configurado individualmente para “{label}”", "已作为独立应用运行": "App independente", "已使用本机密钥重新加密 {n} 项凭证,原有密钥未被覆盖。": "{n} credenciais recriptografadas com as chaves locais. As chaves existentes não foram sobrescritas.", "已保存 {count} / {limit} 条报文(超出后丢弃最旧的)。": "{count} / {limit} payloads salvos (os mais antigos são descartados quando o limite é excedido).", "已保存的值不符合当前插件规则,请修改或恢复默认值。": "O valor salvo não atende às regras atuais do plugin. Edite-o ou restaure o padrão.", "已保存,留空则不修改": "Salva; deixe em branco para manter", "已保存,留空沿用": "Salvo; deixe em branco para manter", "已关闭": "Desativado", "已关闭 models.dev 联网刷新": "Atualização online do models.dev desativada", "已关闭。{note}": "Desativado. {note}", "已关闭「{label}」的网关自带提示词:能否通过上游校验取决于上游当前口径": "System prompt interno do gateway de “{label}” desativado: se ele passa na validação do upstream depende dos critérios atuais do upstream", "已关闭会话图片压缩": "Compressão de imagens desativada", "已关闭出站指纹脱敏": "Mascaramento de fingerprint de saída desativado", "已关闭开发者角色兼容": "Compatibilidade com papel developer desativada", "已关闭第三方模型回答完自动折叠过程": "Recolhimento automático do trabalho de modelos de terceiros após a resposta desativado", "已关闭网关跨域访问": "CORS do gateway desativado", "已关闭:不额外补阶段标记,由客户端决定过程展示。": "Desativado: sem marcadores extras; o cliente controla a exibição do trabalho.", "已删除分组「{name}」": "Grupo \"{name}\" excluído", "已取消「{label}」的单独配置": "Configuração individual de “{label}” removida", "已取消安装": "Instalação cancelada", "已取消导入": "Importação cancelada", "已取消导出": "Exportação cancelada", "已取消恢复": "Restauração cancelada", "已启用 {count} 条规则,应用于{scope}。": "{count} regras ativadas, aplicadas a {scope}.", "已启用登录": "Login ativado", "已复制全部版本信息": "Todas as informações de versão foram copiadas", "已应用": "Aplicado", "已开启": "Ativado", "已开启:为正常完成的 Codex 回答补阶段标记。": "Ativado: adiciona marcadores de fase às respostas do Codex concluídas normalmente.", "已开启:其他设备把 API 地址指向 {url}{panel}。": "Ativado: em outros dispositivos, aponte o endereço da API para {url}{panel}.", "已开启:监听 0.0.0.0,允许其他设备访问。": "Ativado: escutando em 0.0.0.0 para permitir acesso de outros dispositivos.", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "Grupos padrão restaurados: Visão geral / Encaminhamento / Diagnóstico / Sistema", "已截断": "Truncado", "已指定出口": "Saída fixada", "已接管": "Assumido pelo gateway", "已改回内置默认提示词": "Revertido para o system prompt padrão integrado", "已新建分组「{name}」,点组头的 + 把菜单移进来": "Grupo \"{name}\" criado — use + no cabeçalho para mover menus", "已清掉「{label}」界面编辑的正文": "Texto editado na interface de “{label}” removido", "已清掉界面编辑的提示词(回落文件 / 内置默认)": "Prompt editado na interface removido (volta para o arquivo / padrão integrado)", "已清除本机保存的 API Key": "A API key salva neste navegador foi removida", "已生效": "Em vigor", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。": "Mudou automaticamente para um prompt neutro mínimo (bateu num bloqueio de conteúdo do upstream — na maioria das vezes um falso positivo da impressão digital do system); levanta sozinho em {until}.", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "Mudança automática para o system prompt neutro mínimo (houve bloqueio de conteúdo no upstream, provavelmente um falso positivo de fingerprint do system); o fallback será encerrado automaticamente em {until}. Durante esse período, o prompt próprio deste modo não é enviado; depois de corrigir o prompt, é possível encerrar o fallback imediatamente.", "已自定义": "Personalizado", "已运行": "Tempo de atividade", "已退出登录": "Sessão encerrada", "已隐藏": "Oculto", "巴西葡萄牙语": "Português (Brasil)", "希望接入新的提供商或模型": "Quero integrar um novo provedor ou modelo", "库中 schema": "Schema no banco", "库主文件的大小(不含运行期间的 WAL 临时文件,退出时已自动并回)。": "Tamanho do arquivo principal do banco (não inclui os arquivos temporários WAL em tempo de execução, que já são incorporados automaticamente ao sair).", "库存目标": "Meta de estoque", "应用提供商": "Aplicar aos provedores", "应用版本:{version}": "Versão do app: {version}", "应用状态": "Status do app", "应用窗口": "Janela do aplicativo", "建立上游 TCP/TLS 连接或代理隧道的最大等待时间(秒),默认 30 秒,范围 1~3600。": "Tempo máximo de espera para estabelecer a conexão TCP/TLS ou o túnel de proxy com o upstream (segundos), padrão 30 segundos, faixa 1~3600.", "开发构建": "Build de desenvolvimento", "开发者角色兼容": "Compatibilidade de papel developer", "开发者角色兼容设置已刷新": "Configuração de compatibilidade com papel developer atualizada", "开启前需要注册面板管理员,已注册会跳过此步骤。管理接口需要管理员会话或网关 Key;API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。": "É necessário registrar um administrador do painel antes de ativar. Se já houver um, esta etapa será ignorada. A API de gerenciamento exige uma sessão de administrador ou chave do gateway. Chamadas à API exigem uma chave do gateway ativa; se não houver nenhuma, uma chave padrão será criada automaticamente.", "开启后新发生的请求才会被记录(已经过去的请求补不回来)。报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "Só requisições que acontecerem depois de ligar são registradas (as passadas não podem ser recuperadas). Os payloads ficam no banco de dados local e só os 500 mais recentes são mantidos (os mais antigos são descartados); a contagem aparece em \"Dados → Armazenamento de dados\", à esquerda, como \"Payloads de depuração\".", "开启后新发生的请求才会被记录(已经过去的请求补不回来),请求日志的「预览对话」也随之开始保存原始正文。上游报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "Com isto ativado, apenas requisições novas são registradas (as requisições passadas não podem ser recuperadas), e a “Prévia da conversa” nos logs de requisições também passa a salvar os corpos originais. Os payloads de upstream ficam no banco de dados local, mantendo somente os 500 mais recentes (os mais antigos são descartados quando o limite é excedido); a contagem aparece em “Payloads de debug”, na seção “Dados → Armazenamento de dados”, à esquerda.", "开启后监听所有 IPv4 网卡(0.0.0.0),并不局限于局域网,也不会自动开放到公网;实际访问范围取决于网络与防火墙设置。修改后需要重启应用。": "Ao ativar, o gateway escuta em todas as interfaces IPv4 (0.0.0.0), não apenas na rede local, mas não é exposto automaticamente à internet. O acesso real depende das configurações de rede e firewall. Alterações exigem reiniciar o aplicativo.", "开启后网关将监听所有 IPv4 网卡(0.0.0.0),访问范围不再限于本机,也不局限于局域网。是否能从公网访问取决于网络与防火墙设置。": "O gateway passará a escutar em todas as interfaces IPv4 (0.0.0.0). O acesso não ficará restrito a esta máquina nem à rede local. O acesso pela internet depende das configurações de rede e firewall.", "开启后网关将监听所有网卡,同一局域网内的设备即可把 API 地址指向本机 IP 一起使用;管理接口从此要求管理员会话或网关 Key,转发接口在没有一把启用的 Key 时也会拒绝服务(届时会自动创建一把名为「默认」的 Key)。": "Após ativar, o gateway passa a escutar todas as interfaces de rede e dispositivos na mesma LAN podem usar a API apontando o endereço para o IP desta máquina; a interface de administração passa a exigir sessão de administrador ou chave do gateway, e a interface de encaminhamento também recusa atendimento enquanto não houver nenhuma chave ativa (nesse caso, uma chave chamada “Padrão” é criada automaticamente).", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 套餐池(Start Plan)」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "Quando ativado, fechar a janela não apenas a esconde — toda a janela da interface é destruída: os seis processos residentes do WebView2 (cerca de 200 MB de memória) saem, enquanto o encaminhamento do gateway, os check-ins agendados e as consultas de saldo continuam no processo de segundo plano, sem impacto; clique no ícone da bandeja para reabrir a interface quando necessário (o arranque a frio do WebView leva cerca de 1 segundo). Nota: enquanto a interface estiver destruída, os tokens de CAPTCHA do canal \"Pool de planos (Start Plan)\" do ZCode são cunhados pela interface e não podem ser repostos — solicitações nesse canal caem no registro como 503 (com o motivo), e reabrir a interface restaura a cunhagem automaticamente. Este interruptor só importa quando \"Minimizar para a bandeja ao fechar\" estiver ativado; minimizar a janela não é afetado.", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 活动套餐」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "Com isto ativado, fechar a janela não é apenas ocultá-la: a janela da interface é destruída por completo — os seis processos residentes do WebView2 por baixo dela (cerca de 200MB de memória) são encerrados junto, enquanto o encaminhamento do gateway, o check-in agendado e a consulta de saldo continuam nos processos em segundo plano, sem serem afetados; quando precisar da interface, clique no ícone da bandeja para reabri-la (a inicialização a frio do WebView leva cerca de 1 segundo). Atenção: enquanto a interface está destruída, os tokens de captcha do canal do Plano de evento da ZCode são forjados pela interface e não podem ser repostos — requisições por esse canal caem nos logs de requisições com status 503 (com o motivo registrado) e se recuperam automaticamente ao reabrir a interface. Este switch só faz sentido quando “Minimizar para a bandeja ao fechar a janela” está ativado; minimizar a janela não é afetado.", "开启后,关闭窗口会销毁界面并释放 WebView 进程,网关转发、定时签到、余额查询仍在后台继续。ZCode 模型请求免验证时不受影响;上游要求人机验证时,需要重新打开界面,在账号的「套餐明细」中主动完成验证。此开关只在「关闭窗口时最小化到托盘」开启时有意义。": "Quando habilitado, fechar a janela libera a interface e os processos WebView. Encaminhamento, check-ins agendados e consultas de saldo continuam em segundo plano. Solicitações ZCode sem verificação não são afetadas. Quando exigida, reabra a interface e conclua a verificação nos detalhes do plano da conta. Aplica-se somente quando fechar minimiza o aplicativo para a bandeja.", "开启后,新发生的请求会保存上游调试报文与下游正文,历史请求无法补录。上游调试报文只保留最近 500 条;两侧条数可在「数据 → 数据存储」查看。关闭开关不会删除已保存的报文,可在请求日志中选择「仅清空报文原文」一起清理。": "Após ativar, novas requisições salvam os payloads de depuração do upstream e os corpos do downstream; requisições anteriores não podem ser recuperadas. Apenas os 500 payloads mais recentes do upstream são mantidos. As contagens dos dois lados aparecem em Dados → Armazenamento de dados. Desativar não exclui os payloads salvos; selecione Limpar apenas os payloads nos logs de requisições para limpar os dois lados juntos.", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。": "Com isto ativado, a página de login conclui a verificação automaticamente em segundo plano no navegador (imperceptível para pessoas reais), enquanto cada tentativa de script precisa resolver um desafio — o custo de força bruta e de registro em massa sobe bastante. Afeta apenas o login / registro do painel, nada a ver com a API Key dos clientes de API.", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。桌面端与网页端各自独立:桌面端主要服务本机与局域网,网页端(Docker / 服务端)直接暴露在网络上的登录页风险更高,建议保持开启。": "Quando ativado, a página de login resolve o desafio em segundo plano (invisível para pessoas), enquanto cada tentativa automatizada precisa calcular um antes — força bruta e registro indevido ficam bem mais caros. Afeta apenas o login / registro do painel, não as API keys dos clientes. Desktop e web são independentes: o desktop atende principalmente esta máquina e a LAN, enquanto o web (Docker / servidor) fica exposto à rede e se beneficia mais de permanecer ativado.", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "Quando ligado, o gateway salva localmente, por inteiro, **a requisição enviada ao upstream** (cabeçalhos + corpo) e **a resposta do upstream** (código de status + cabeçalhos + corpo) de cada encaminhamento, para a visualização em \"Detalhes\" na página de logs de requisições. Campos de credenciais nos cabeçalhos — Authorization, Cookie, API Key e afins — são sempre trocados por [redacted] e nunca tocam o disco em texto puro; corpos de requisição e resposta ficam como estão (podem conter suas conversas). Só os 500 payloads mais recentes ficam guardados; os mais antigos são descartados. É um interruptor temporário para diagnóstico — mantenha desligado quando não precisar.", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看;请求日志详情的「预览对话」也依赖本开关 —— 它保存的是客户端发来的请求体与网关下发的响应体(两侧各截断到 128 KiB),不开这个开关时预览对话没有数据可看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。上游报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "Com isto ativado, o gateway salva localmente, na íntegra, **as requisições enviadas ao upstream** (cabeçalhos + corpo) e **as respostas retornadas pelo upstream** (status code + cabeçalhos + corpo) de cada encaminhamento, para consulta em “Detalhes” na página de logs de requisições; a “Prévia da conversa” nos detalhes da requisição também depende deste switch — ela salva o corpo da requisição do cliente e o corpo da resposta do gateway (cada um truncado em 128 KiB), e com o switch desativado não há dados para pré-visualizar. Campos de credenciais nos cabeçalhos, como Authorization, Cookie e API Key, são sempre substituídos por [redacted] e nunca gravados em texto puro; corpos de requisição e de resposta são salvos como estão (podem conter o conteúdo das suas conversas). Só os 500 payloads de upstream mais recentes são mantidos; os mais antigos são descartados quando o limite é excedido. É um switch temporário para diagnóstico; recomenda-se desativá-lo quando não for necessário.", "开启后,能连接到网关的设备可通过浏览器访问网页管理面板,需使用管理员账号登录。访问范围与网关相同,并不局限于局域网。": "Dispositivos que conseguem alcançar o gateway poderão abrir o painel web no navegador e entrar com uma conta de administrador. O alcance de acesso é o mesmo do gateway e não se limita à rede local.", "开启后,调用方可以用专用请求头声明已登记的客户端名称。这不是身份认证,只用于日志和统计,不会获得额外权限。": "Quando ativado, o solicitante pode declarar um cliente registrado pelo cabeçalho dedicado. Isso não autentica a identidade: afeta apenas logs e estatísticas, sem conceder permissões adicionais.", "开启局域网访问": "Ativar acesso LAN", "开启来源声明": "Ativar declarações de origem", "开启网络访问": "Ativar acesso pela rede", "开放后,局域网内其他设备的浏览器打开本机 IP 即可进入管理面板(需管理员账号登录)。": "Após abrir, o navegador de outros dispositivos na LAN pode acessar o painel de administração abrindo o IP desta máquina (é preciso entrar com a conta de administrador).", "开机自动启动": "Iniciar com o sistema", "开源许可": "Licença de código aberto", "开(最多 {n} 轮)": "Ligado (até {n} rodadas)", "归属客户端": "Cliente atribuído", "当前三段都是官方原文。": "No momento, os três blocos estão com o texto oficial.", "当前不可用": "Indisponível no momento", "当前后端不支持词表编辑与提供商范围,请更新后端后重试。": "Este backend não suporta edição de regras nem escopo de provedores. Atualize o backend e tente novamente.", "当前固定为浅色模式,不随系统变化。": "No momento, fixo no modo claro, sem seguir o sistema.", "当前固定为深色模式,不随系统变化。": "No momento, fixo no modo escuro, sem seguir o sistema.", "当前密码": "Senha atual", "当前已改过:{edited}。": "Editados no momento: {edited}.", "当前形态": "Forma de execução", "当前按 100% 显示(默认比例)。": "Exibindo no momento a 100% (proporção padrão).", "当前按 k / M 缩写显示(如 1.20M / 8.4k)。": "Exibindo no momento com abreviações k / M (ex.: 1.20M / 8.4k).", "当前按 {n}% 显示。": "Exibindo no momento a {n}%.", "当前按「万 / 亿」式本地量级词显示(如 1.2亿 / 8400万)。": "Exibindo no momento com magnitudes locais no estilo k / M (ex.: 120M / 84M).", "当前是透传模式:存下来也不会发出,切成「替换 / 追加」之后才生效。": "No momento, o modo é Passthrough: mesmo salvando, o texto não é enviado; só passa a valer após mudar para “Substituir / Anexar”.", "当前显示为「1.20M / 8.4k / 1.2B」这类英文缩写。": "Exibindo no momento com abreviações k / M / B (ex.: 1.20M / 8.4k / 1.2B).", "当前显示为「1.2亿 / 8400万」这类中文量级。": "Atualmente exibido como magnitudes chinesas no estilo \"1.2亿 / 8400万\".", "当前样本结果:{name}": "Resultado da amostra atual: {name}", "当前正在使用": "Em uso", "当前浏览器以管理员身份登录着本面板。「退出登录」会撤销这台设备的登录会话(30 天内的自动续期一并失效),需要重新输入账号密码;其他已登录的设备不受影响。": "Este navegador está conectado a este painel como administrador. “Sair” revoga a sessão de login deste dispositivo (a renovação automática dentro de 30 dias também é invalidada) e será preciso digitar usuário e senha novamente; outros dispositivos já conectados não são afetados.", "当前版本不支持品牌设置": "Esta versão não oferece suporte às configurações da marca", "当前环境不支持局域网访问设置": "O ambiente atual não oferece suporte à configuração de acesso LAN", "当前环境不支持整库备份": "O backup do banco completo não está disponível neste ambiente", "当前环境不支持整库备份(仅桌面端可用)": "Backup do banco completo não está disponível aqui (somente desktop)", "当前环境不支持整库恢复": "A restauração do banco completo não está disponível neste ambiente", "当前环境不支持整库恢复(仅桌面端可用)": "Restauração do banco completo não está disponível aqui (somente desktop)", "当前环境不支持网络访问设置": "As configurações de acesso pela rede não estão disponíveis neste ambiente", "当前环境不支持读取版本信息(桥接方法缺失)": "Este ambiente não consegue ler as informações de versão (método de ponte ausente)", "当前生效值:{value}": "Valor em uso: {value}", "当前生效的正文来自{source}{file}。保存后这一份会盖过提示词文件与内置默认{note}。": "O texto em vigor no momento vem de {source}{file}. Após salvar, ele prevalece sobre o arquivo de prompt e o padrão integrado{note}.", "当前界面": "Interface atual", "当前管理员:{name}": "Conectado como: {name}", "当前设置已保存": "As configurações atuais estão salvas", "当前跟随操作系统的深浅色设置,系统切换时界面会自动跟上。": "No momento, seguindo o tema claro / escuro do sistema operacional; quando o sistema mudar, a interface acompanha automaticamente.", "当前路由内的可用视觉模型": "Modelos de visão disponíveis na rota atual", "待迁移旧数据": "Dados antigos pendentes de migração", "待配置": "Não configurado", "忘记密码时无法在界面里找回:需要停掉程序后,从数据库删除管理员记录(kv 表的 panelAdmin 键),重启后按首次使用重新注册。具体命令与各形态的库文件路径见 docs 目录下的「重置管理员」文档。": "Se você esquecer a senha, ela não pode ser recuperada pela interface: pare o programa, exclua o registro do administrador no banco (a chave panelAdmin na tabela kv), reinicie e registre novamente como no primeiro uso. Os comandos e o caminho do banco em cada forma de instalação estão no documento \"Redefinir administrador\" em docs.", "思考等级、图片能力未知、等待上限": "Nível de raciocínio, capacidade de imagem desconhecida, limite de espera", "恢复中…": "Restaurando…", "恢复失败:{message}": "Falha na restauração: {message}", "恢复官方原文": "Restaurar o texto oficial", "恢复插件默认值": "Restaurar padrão do plugin", "恢复整库": "Restaurar o banco", "恢复整库备份": "Restaurar backup completo", "恢复默认": "Restaurar padrões", "恢复默认 Logo": "Restaurar logo padrão", "恢复默认侧边栏": "Restaurar barra lateral padrão", "恢复默认品牌": "Restaurar marca padrão", "恢复默认词表": "Restaurar regras padrão", "想回到原来那份,把这里清空再保存即可(不会删掉你配的文件路径)。": "Para voltar ao texto anterior, basta limpar este campo e salvar (o caminho de arquivo que você configurou não é apagado).", "想要的新功能或改进想法": "Funcionalidades novas ou melhorias que você gostaria de ver", "所有未单独配置的提供商都用这一份": "Todos os provedores sem configuração individual usam esta", "所有菜单都已在这一组": "Todos os menus já estão neste grupo", "手机端可管理所连接网关的账号、签到与插件,并使用提供商声明的动态登录入口;其余既有添加入口、编辑凭证和改写客户端配置仍需桌面面板。": "O aplicativo móvel gerencia contas, check-in e plugins no gateway conectado e permite login pelos métodos dinâmicos declarados pelos provedores. Outras entradas existentes para adicionar contas, editar credenciais e alterar configurações de clientes ainda exigem o painel desktop.", "托管网页界面": "Serve a interface web", "把地址里的 your-server 与 USERNAME 换成你自己的;目录不存在时会自动创建。": "Substitua your-server e USERNAME na URL pelos seus dados; o diretório é criado automaticamente se não existir.", "把整份数据库(账号、网关配置、事件日志、请求统计、调试报文与桌面设置)导出成一个 SQL 文件,恢复时整体替换本机全部数据 —— 与上面「账号导入 / 导出」的逐条合并是两种语义:恢复会连配置、日志与当前启用状态一起换成备份那台机器的状态。导出默认包含日志与调试报文(文件可能很大),不需要时可以取消勾选只备业务数据。恢复前会自动把当前数据备份到配置目录的 backups/ 下,恢复后需要重新登录管理面板。": "Exporta o banco inteiro (contas, configuração do gateway, logs de eventos, estatísticas de requisições, payloads de depuração e configurações do desktop) em um arquivo SQL; a restauração substitui todos os dados locais por inteiro. É uma semântica diferente do \"Importar / exportar contas\" acima, que mescla item a item: restaurar troca configuração, logs e estados de ativação para o que a máquina do backup tinha. A exportação inclui logs e payloads de depuração por padrão (o arquivo pode ser grande); desmarque para guardar só os dados de negócio. Antes de restaurar, os dados atuais são automaticamente backupados em backups/ no diretório de configuração, e você precisará logar no painel de novo depois.", "把整次请求交给视觉模型,由它直接回答,不再回到原模型。": "A requisição inteira vai para o modelo de visão, que responde direto no lugar do modelo original.", "把菜单移入 {name}": "Mover um menu para {name}", "把菜单移入「{name}」": "Mover um menu para \"{name}\"", "把账号、网关配置、自定义提供商、Agent 配置、代理池 / 订阅、签到与余额记录同步到 WebDAV 或 S3 兼容存储,换台机器后一键取回。事件日志、请求明细、调试报文与面板登录态不在同步范围内(它们是本机的运行痕迹)。上传的账号凭证仍是加密形态,解密用的账号密钥由「同步密码」单独加密后一并上传 —— 同步密码不会保存到云端,换机下载时需要重新输入。": "Sincronize contas, configuração do gateway, provedores personalizados, perfis do Agent, pool de proxies / assinaturas e registros de check-in e saldo com WebDAV ou armazenamento compatível com S3, e recupere tudo em outra máquina com um clique. Logs de eventos, detalhes de requisições, pacotes de depuração e o estado de login do painel ficam de fora (são vestígios de execução desta máquina). As credenciais das contas enviadas permanecem criptografadas; a chave que as descriptografa é criptografada com a senha de sincronização e enviada junto — a senha nunca é armazenada na nuvem, então você precisa digitá-la novamente ao restaurar em outra máquina.", "把路径里的主目录显示成 ~,截图分享时不暴露用户名": "Mostra o diretório pessoal nos caminhos como ~, para que prints não revelem seu nome de usuário", "把路径里的主目录(如 C:\\Users\\你的用户名)显示成 ~,截图分享时不暴露用户名。只影响本页显示与复制,不改任何文件。": "Mostra o diretório pessoal nos caminhos (ex.: C:\\Users\\seu-nome) como ~, para que prints não revelem seu nome de usuário. Afeta apenas esta página e o texto copiado; nenhum arquivo é alterado.", "报表天数": "Dias do relatório", "报表页的热力图与按天趋势,默认 99999 天(近似全量保留),可填 1–99999 天。": "O mapa de calor e as tendências diárias da página de relatórios. Padrão de 99999 dias (retenção praticamente total); aceita de 1 a 99999 dias.", "拖动分组 {name}": "Arrastar grupo {name}", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "Arraste o ⠿ para reordenar (menus podem mudar de grupo); use os interruptores para mostrar ou ocultar; clique no nome do grupo para renomear; o + no cabeçalho move outro menu para o grupo; o botão de olho oculta o grupo inteiro. As mudanças valem na hora e ficam salvas — a barra lateral à esquerda é o resultado. Teclado: foque a alça e pressione Alt+↑ / ↓.", "拖动菜单 {name}": "Arrastar menu {name}", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "Arraste para reordenar os grupos (Alt+↑ / ↓ também funciona)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "Arraste para reordenar, inclusive entre grupos (Alt+↑ / ↓ também funciona)", "指定备选仍受当前请求权限和路由范围限制,路由组请求不会跳到组外。不会转为辅助识图继续。": "As alternativas continuam sujeitas às permissões e à rota atuais. Solicitações de um grupo nunca saem dele. Este modo nunca muda para leitura assistida de imagens.", "指定提供商": "Provedores selecionados", "指定角色": "Papéis selecionados", "指定错误码直接换号": "Troca de conta direta em códigos de erro especificados", "指纹脱敏": "Sanitização de fingerprint", "指纹脱敏会在转发前按词表顺序改写请求消息中的文本,包括对话内容、思考内容和工具调用参数。默认词表包含客户端模板句与计费表头的精确替换、正则删除规则,可以新增、编辑、删除、启停和调整顺序;替换内容留空表示删除匹配内容。默认应用全部提供商,也可指定多家。改动只作用于发给上游的副本,响应内容不变。编辑后点击「保存设置」,下一次请求生效;清空词表表示不做任何指纹改写,恢复默认只重置词表。": "Antes de encaminhar, o mascaramento aplica as regras na ordem da lista ao texto das mensagens, incluindo conversa, raciocínio e argumentos de chamadas de ferramentas. As regras padrão incluem substituições exatas e exclusões por expressão regular de modelos do cliente e cabeçalhos de cobrança. Você pode adicionar, editar, excluir, ativar, desativar e reordenar regras; uma substituição vazia exclui o texto correspondente. Por padrão, aplica-se a todos os provedores, ou você pode selecionar vários. Apenas a cópia enviada ao upstream é alterada; as respostas não mudam. Clique em Salvar configurações para aplicar à próxima requisição. Uma lista vazia não altera fingerprints, e restaurar o padrão redefine apenas as regras.", "指纹脱敏设置仅本次运行生效,写入数据库失败,请检查配置目录": "As configurações valem somente nesta execução. A gravação no banco falhou; verifique o diretório de configuração.", "指纹脱敏设置已刷新": "Configurações de mascaramento de fingerprint atualizadas", "按下面两块设置处理图片;关闭后设置全部保留。": "As imagens são tratadas pelos dois blocos abaixo; desligar mantém todas as configurações.", "按原文精确匹配,区分大小写;不会自动去掉首尾空白。": "Corresponde ao texto exato, diferenciando maiúsculas e minúsculas. Os espaços iniciais e finais são preservados.", "按天聚合保留天数": "Retenção dos agregados diários (dias)", "按指定备选顺序尝试": "Tentar alternativas na ordem definida", "按提供商查看和调整专属选项": "Veja e ajuste opções específicas de cada provedor", "按提供商筛选设置": "Filtrar configurações por provedor", "按提供商管理专属选项,作用于当前网关中该提供商的所有账号。": "Gerencie opções específicas por provedor. As alterações se aplicam a todas as contas desse provedor no gateway atual.", "按提供商配置": "Por provedor", "按每条请求的软件标识识别客户端,不依赖 API Key。规则修改只影响新请求,内置规则随软件更新,自定义规则参与备份与云同步。": "Identifique cada requisição pelos identificadores do software, sem depender de API Key. Alterações afetam apenas novas requisições. Regras integradas acompanham o app; regras personalizadas entram no backup e na sincronização.", "换一台服务器": "Trocar de servidor", "排队等待": "Espera na fila", "排队等待次数": "Tentativas de espera na fila", "排队等待秒数": "Segundos de espera na fila", "排队等待设置已刷新": "Configurações de espera na fila atualizadas", "接入": "Acesso", "接受调用方来源声明": "Aceitar declarações de origem do solicitante", "接管回答的模型": "Modelo que assume a resposta", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "Define quais menus a barra lateral mostra, em que ordem e como são agrupados. Ocultar afeta apenas a navegação — não revoga acesso, e páginas ocultas continuam abrindo pela URL.", "控制报表与请求日志里 Token 读数的写法:开启后按「万 / 亿」式的本地量级词显示(简体为万 / 亿,繁体为萬 / 億,日文为万 / 億,韩文为만 / 억),关闭则用 k / M 缩写(与上游文档、接口字段的写法一致)。英文 / 葡语的本地量级词就是 k / M,这项对它们没有区别。只影响显示口径,不改变任何统计与存储的数值。": "Controla como o Token é exibido no relatório e nos logs de requisições: quando ativado, exibe com magnitudes locais no estilo “k / M” (chinês simplificado: 万 / 亿; chinês tradicional: 萬 / 億; japonês: 万 / 億; coreano: 만 / 억); quando desativado, usa abreviações k / M (igual à forma usada na documentação e nos campos da API do upstream). Para inglês e português, as magnitudes locais são exatamente k / M, então esta opção não faz diferença para eles. Afeta apenas a forma de exibição; não altera nenhum valor de estatística ou de armazenamento.", "控制报表与请求日志里 Token 读数的写法:开启后按中文量级显示(1.2亿 / 8400万),关闭则用 k / M / B 缩写(与上游文档、接口字段的写法一致)。这只影响显示口径,不改变任何统计与存储的数值。": "Controla como as contagens de token aparecem nos relatórios e no log de requisições: ativado mostra magnitudes chinesas (1.2亿 / 8400万), desativado usa abreviações k / M / B (iguais às dos documentos e campos de API do upstream). Isso altera apenas a exibição; nenhum número estatístico ou armazenado muda.", "控制界面的深浅色,与左侧边栏底部的三个主题按钮是同一个设置(改哪一处,另一处立刻跟上)。「跟随系统」会随操作系统当前的浅色 / 深色自动切换,并在系统主题变化时即时跟上;选「浅色」或「深色」则把界面固定在该模式,不再随系统变化。窗口标题栏的深浅色会一并同步,不会出现深色界面配一条浅色标题栏的情况。": "Controla o tema claro / escuro da interface; é a mesma configuração dos três botões de tema no rodapé da barra lateral esquerda (mudar em um lugar reflete imediatamente no outro). “Sistema” acompanha automaticamente o tema claro / escuro atual do sistema operacional e reage na hora a mudanças no tema do sistema; escolher “Claro” ou “Escuro” fixa a interface nesse modo, sem seguir o sistema. A barra de título da janela acompanha junto, então não ocorre de a interface ficar escura com uma barra de título clara.", "提供商与模型": "Provedor e modelo", "提供商专属设置": "Configurações específicas do provedor", "提供商当前不可用,未保存的修改已保留;恢复插件后可继续编辑。": "O provedor está indisponível. As edições não salvas foram mantidas; restaure o plugin para continuar editando.", "提供商设置已保存": "Configurações do provedor salvas", "提供商设置返回格式无效,请刷新后重试": "A resposta das configurações do provedor é inválida. Atualize e tente novamente.", "提建议": "Enviar sugestão", "提示词文件": "Arquivo de prompt", "提示词文件已更新": "Arquivo de prompt atualizado", "提示词正文": "Texto do prompt", "提示词正文已更新": "Texto do prompt atualizado", "插件或设置已变化,请放弃修改并刷新后重新编辑。": "O plugin ou as configurações mudaram. Descarte suas alterações e atualize antes de editar novamente.", "操作系统": "Sistema operacional", "支持 .a2ab 加密备份和旧 .sql 文件;旧 SQL 不包含恢复密钥,跨机器导入仍需原机密钥。": "Aceita backups .a2ab criptografados e .sql antigos. O SQL antigo não inclui chaves de recuperação; a importação em outra máquina ainda precisa das chaves originais.", "支持 PNG、JPG、WebP,最大 2 MiB、4096 × 4096 像素;自动缩小至 512 像素以内,建议使用正方形图片。": "Aceita PNG, JPG e WebP de até 2 MiB e 4096 × 4096 pixels. As imagens são reduzidas para até 512 pixels. Recomendamos imagens quadradas.", "改动仍保存在本机,修复网络或凭据后下一次改动会自动重试,也可以手动点「上传到云端」。": "Suas alterações continuam salvas localmente. Depois de corrigir a rede ou as credenciais, a próxima alteração tenta de novo automaticamente, ou clique em \"Enviar para a nuvem\".", "改动仍保存在本机,系统会延长等待并自动重试;修复网络或凭据后,也可以手动点「上传到云端」。": "As alterações continuam salvas neste dispositivo. O sistema tentará novamente automaticamente após uma espera maior. Depois de corrigir a rede ou as credenciais, você também pode clicar em “Enviar para a nuvem” manualmente.", "改完立即生效,不用重启(下一个请求就用新模式)。降级是自动的临时状态,解除后本模式自己的提示词立刻恢复。": "As mudanças passam a valer na hora, sem reiniciar (a próxima requisição já usa o novo modo). O fallback é um estado temporário automático; depois de encerrado, o prompt próprio deste modo volta imediatamente.", "放大或缩小整个界面(文字与控件一起变),效果与浏览器 Ctrl +/- 相同:共 11 档,立即生效并记住。": "Amplia ou reduz a interface inteira (texto e controles juntos), com o mesmo efeito de Ctrl +/- no navegador: 11 níveis; a mudança vale na hora e é memorizada.", "放弃修改并刷新": "Descartar alterações e atualizar", "数据": "Dados", "数据保留": "Retenção de dados", "数据保留设置已刷新": "Configurações de retenção de dados atualizadas", "数据存储": "Armazenamento de dados", "数据库 schema": "Schema do banco", "数据库不可用": "Banco de dados indisponível", "数据库与恢复密钥一起加密保存。密码不会保存在应用或备份中,忘记后无法恢复,请妥善保管。": "O banco e as chaves são criptografados juntos. A senha não fica no aplicativo nem no backup. Guarde-a com cuidado: sem ela, não é possível restaurar.", "数据库主文件与 WAL 文件的总占用,与请求日志清理弹窗采用同一口径;清理后可压缩数据库回收空闲空间。": "Tamanho total do arquivo principal do banco e do arquivo WAL, usando o mesmo cálculo do diálogo de limpeza de requisições. Após a limpeza, compacte o banco para recuperar o espaço livre.", "数据库文件": "Arquivo do banco", "数据目录": "Diretório de dados", "数据统一保存在配置目录下的 agent2api.db;如需更换位置,请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "Os dados ficam todos em agent2api.db, no diretório de configuração; para mudar de local, defina a variável de ambiente AGENT2API_PROXY_HOME e reinicie o programa.", "整体替换": "substituídos por inteiro", "整库备份 / 恢复": "Backup / restauração do banco completo", "整次请求交给 {model} 直接回答,不再回到原模型。": "A requisição inteira vai para {model}, que responde direto no lugar do modelo original.", "新分组名": "Nome do novo grupo", "新增 {added} 个、更新 {updated} 个{suffix}{note}": "{added} adicionadas, {updated} atualizadas{suffix}{note}", "新增脱敏规则": "Adicionar regra de mascaramento", "新增规则": "Adicionar regra", "新安装和升级后默认关闭。先配置再开启,关闭后保留配置。": "Desativado por padrão em novas instalações e atualizações. Configure antes de ativar; desativar mantém a configuração.", "新密码": "Nova senha", "新密码不能与当前密码相同": "A nova senha deve ser diferente da atual", "新密码至少 8 位": "A senha deve ter pelo menos 8 caracteres", "新建分组": "Novo grupo", "新建客户端分类": "Nova categoria de cliente", "无效或重复的标识请求头:{headers}": "Cabeçalhos de identificação inválidos ou duplicados: {headers}", "无法读取品牌设置": "Não foi possível ler as configurações da marca", "无法读取图片,请重新选择": "Não foi possível ler a imagem. Selecione-a novamente.", "日志与请求日志同时受保留天数和数量上限限制。日志默认 30 天、10000 条,各级别按比例保留;调试详情最多保留 3 天。请求日志默认 99999 天、1000000 条(100 万),超出后从最旧的记录开始清理,并同步删除对应原始正文。按天聚合默认 99999 天,只按天数保留,不受请求日志数量清理影响。天数可填 1–99999,数量可填 1–100000000。调小任一设置并确认后立即清理,且不可恢复。": "Logs e logs de requisições são limitados tanto pelos dias de retenção quanto pela quantidade de registros. Os logs têm padrão de 30 dias e 10.000 registros, com capacidade distribuída proporcionalmente por nível; detalhes de depuração são mantidos por no máximo 3 dias. Os logs de requisições têm padrão de 99999 dias e 1.000.000 de registros; o excedente é removido dos mais antigos para os mais novos junto com seus corpos originais. Os agregados diários têm padrão de 99999 dias e são limitados apenas pelos dias; a limpeza por quantidade dos logs de requisições não os afeta. Os dias aceitam 1–99999 e a quantidade aceita 1–100000000. Reduzir qualquer configuração e confirmar remove o excedente imediatamente, sem possibilidade de recuperação.", "日志保留数量上限": "Limite de registros de log", "日志文件": "Arquivo de log", "日语": "japonês", "显示 {name}": "Mostrar {name}", "显示分组 {name}": "Mostrar grupo {name}", "显示名称": "Nome de exibição", "显示名称最多 64 个字符": "O nome de exibição pode ter até 64 caracteres", "显示模式": "Modo de exibição", "显示这一组": "Mostrar este grupo", "暂无可编辑的提供商设置": "Nenhuma configuração de provedor editável", "暂无自定义规则,正在使用内置识别。也可以从请求详情直接添加规则。": "Sem regras personalizadas; a identificação integrada está ativa. Você também pode adicionar regras nos detalhes da requisição.", "暂未获取到本机访问地址,请使用其他设备能连接到的本机 IP 与网关端口。": "O endereço de acesso desta máquina ainda não está disponível. Use o IP desta máquina e a porta do gateway que o outro dispositivo consiga alcançar.", "更新": "Atualizar", "更新出网线路": "Rota de saída da atualização", "更新通道": "Canal de atualização", "替换": "Substituir", "替换 = 客户端 system / developer 消息全部删掉,换成网关的提示词;追加 = 保留客户端内容,只在开头 system 块之后多插一条。两者都只改发给上游的副本,客户端看到的响应不变。": "Substituir = todas as mensagens system / developer do cliente são apagadas e trocadas pelo prompt do gateway; Anexar = o conteúdo do cliente é mantido e apenas um item a mais é inserido depois dos blocos system do início. Os dois alteram somente a cópia enviada ao upstream; a resposta que o cliente vê não muda.", "替换为网关提示词": "Substituir pelo prompt do gateway", "替换内容": "Texto de substituição", "替换内容最多 {max} 个字符": "O texto de substituição deve ter no máximo {max} caracteres", "替换前会自动把当前数据备份到配置目录的 backups/ 文件夹。": "Antes da substituição, os dados atuais são automaticamente backupados na pasta backups/ do diretório de configuração.", "替换并恢复": "Substituir e restaurar", "最多 64 个字符,留空恢复为 Agent2API。": "Até 64 caracteres. Deixe em branco para restaurar Agent2API.", "最小自动上传间隔": "Intervalo mínimo de upload automático", "最近 {window} 条请求中,{scanned} 条有识别依据,{matched} 条符合条件,{applied} 条会采用本规则。": "Das últimas {window} requisições, {scanned} têm evidências, {matched} correspondem e {applied} usariam esta regra.", "有未保存的修改": "Há alterações não salvas", "有未保存的改动:保存后才能同步(测试连接不受影响)。": "Alterações não salvas: salve antes de sincronizar (o teste de conexão não é afetado).", "有近期套餐池请求时读取库存状态的间隔,默认 2500 毫秒,可填 1000–30000。没有近期请求时降低读取频率,轮询不会发起验证码。": "Intervalo de consulta do estoque com solicitações Start Plan recentes: padrão de 2500 ms, entre 1000 e 30000. A frequência diminui quando ocioso e nunca inicia verificação.", "服务商": "Provedor", "服务器地址": "Endereço do servidor", "服务端密钥加密保存,不会返回浏览器;切回 ALTCHA 后会保留,方便再次启用。": "A chave secreta é armazenada criptografada e nunca é devolvida ao navegador. Ela é mantida ao voltar para ALTCHA para facilitar a reativação.", "服务端密钥(Secret Key)": "Chave secreta (Secret Key)", "期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "Enquanto este modo estiver ativo, o prompt próprio dele não é enviado; levante assim que ajustar o seu prompt.", "未保存": "Não salvo", "未匹配已知客户端": "Nenhum cliente conhecido identificado", "未单独配置:模式、提示词文件与正文都跟随上面的全局配置(当前「{mode}」)。": "Sem configuração individual: modo, arquivo de prompt e texto seguem a configuração global acima (no momento, “{mode}”).", "未启用": "Desativado", "未开启轻量模式:关窗仅隐藏窗口,界面进程常驻内存,随时打开不等待": "Modo leve desativado: fechar a janela apenas a oculta, o processo da interface permanece na memória e reabrir é instantâneo", "未开启,developer 角色消息会原样发往上游,不认识该角色的上游会报错(400)。": "Desativado: mensagens com papel developer vão para o upstream como estão; upstreams que não conhecem o papel retornam erro (400).", "未开启,客户端 system 模板会原样发往上游,可能被内容审核误拦(400)。": "Desativado: os templates do system do cliente vão ao upstream como estão e podem ser bloqueados por engano na revisão de conteúdo (400).", "未开启,浏览器跨域无法直连网关。": "Desativado: o navegador não consegue se conectar diretamente ao gateway de outra origem.", "未开启,转发时不保存任何原始报文。": "Desativado: nenhum payload bruto é salvo durante o encaminhamento.", "未开启:网关只监听 127.0.0.1,仅本机可以访问。": "Desativado: o gateway escuta apenas 127.0.0.1 e somente esta máquina pode acessá-lo.", "未注册": "Não registrado", "未注册闸门": "Bloqueio de não registrado", "未知原因": "Motivo desconhecido", "未知来源": "Origem desconhecida", "未知设备": "Dispositivo desconhecido", "未知账号": "Conta desconhecida", "未能读取 Cline 伪装头设置,请稍后重试": "Não foi possível ler as configurações de cabeçalhos spoofed do Cline; tente novamente mais tarde", "未能读取 models.dev 元数据状态,请稍后重试": "Não foi possível ler o estado dos metadados do models.dev. Tente novamente mais tarde.", "未能读取云同步设置,请稍后重试。": "Não foi possível ler as configurações de sincronização na nuvem. Tente novamente mais tarde.", "未能读取保存后的指纹脱敏设置": "Não foi possível ler as configurações de mascaramento salvas", "未能读取开发者角色兼容设置,请稍后重试": "Não foi possível ler a configuração de compatibilidade com papel developer, tente novamente mais tarde", "未能读取指纹脱敏设置,请稍后重试": "Não foi possível ler as configurações de mascaramento de fingerprint; tente novamente mais tarde", "未能读取机器人校验设置": "Não foi possível ler as configurações de verificação de bots", "未能读取第三方模型回答完自动折叠过程设置,请稍后重试": "Não foi possível ler a configuração de recolhimento do trabalho de modelos de terceiros; tente novamente mais tarde", "未能读取系统提示词设置,请稍后重试": "Não foi possível ler as configurações do system prompt; tente novamente mais tarde", "未能读取网关跨域访问设置,请稍后重试": "Não foi possível ler as configurações de CORS do gateway; tente novamente mais tarde", "未能读取网络访问设置,请稍后重试": "Não foi possível carregar as configurações de acesso pela rede. Tente novamente mais tarde.", "未能读取调试模式设置,请稍后重试": "Não foi possível ler as configurações do modo debug; tente novamente mais tarde", "未能读取账户信息,请稍后重试": "Não foi possível ler as informações da conta. Tente novamente mais tarde", "未采用本规则,请检查开关、来源声明或规则顺序": "Esta regra não foi usada. Verifique a ativação, as declarações de origem ou a ordem das regras.", "本地账号、配置、签到与余额记录变化后自动上传(合并 1 秒内的连续改动,最长 10 秒传一次;内容没变时不发请求)。": "Envia automaticamente após alterações locais em contas, configuração, check-in e registros de saldo (alterações em até 1 segundo são agrupadas, no máximo um envio a cada 10 segundos; nenhuma requisição é feita se nada mudou).", "本机 API 地址": "Endereço da API deste dispositivo", "本机 APK 版本": "Versão do APK neste aparelho", "本机全部数据会被备份整体替换,恢复前自动保留安全备份,完成后需要重新登录管理面板。本机已有密钥不会被覆盖。": "Todos os dados do banco local serão substituídos pelo backup. Um backup de segurança é salvo antes, e será preciso entrar novamente. As chaves locais existentes não serão sobrescritas.", "本机应用版本": "Versão do app neste aparelho", "本机界面版本": "Versão da interface neste aparelho", "本机的业务数据(账号、配置、Agent 配置、代理池 / 订阅、签到与余额记录)将上传并": "Os dados de negócio desta máquina (contas, configuração, perfis do Agent, pool de proxies / assinaturas, registros de check-in e saldo) serão enviados e", "本机的全部数据(账号、网关配置、日志统计与桌面设置)将被所选备份文件": "Todos os dados desta máquina (contas, configuração do gateway, estatísticas de logs e configurações do desktop) serão ", "本机的账号、网关配置、Agent 配置、代理池 / 订阅、签到与余额记录将被远端快照": "As contas, a configuração do gateway, os perfis do Agent, o pool de proxies / assinaturas e os registros de check-in e saldo desta máquina serão substituídos pelo snapshot remoto", "本次无需刷新": "Nenhuma atualização necessária desta vez", "本软件不提供任何担保,可按 AGPL-3.0 修改与分发;通过网络提供修改版服务时须向用户提供对应源码。": "Este software não oferece garantia e pode ser modificado e distribuído sob AGPL-3.0. Serviços de rede modificados devem oferecer aos usuários o código-fonte correspondente.", "本项目的 AGPL-3.0 许可不替代这些第三方许可。名称与标识的商标权归各自权利人所有。": "A licença AGPL-3.0 deste projeto não substitui estas licenças de terceiros. Os direitos de marca sobre nomes e logotipos pertencem aos respectivos titulares.", "机器人校验": "Captcha", "机器人校验设置已保存": "Configurações de verificação de bots salvas", "条数": "Quantidade de registros", "来源声明当前关闭,这条规则不会生效。请先在客户端识别设置中开启。": "As declarações de origem estão desativadas; esta regra não será aplicada. Ative-as nas configurações de identificação.", "来源声明无效或未登记,本次已忽略。": "A declaração de origem é inválida ou não registrada e foi ignorada.", "来源声明未启用,本次已忽略。": "As declarações de origem estão desativadas e foram ignoradas.", "来源版本": "Revisão de origem", "来源设备:{device}": "Dispositivo de origem: {device}", "来自 {device},生成于 {time}": "De {device}, criado em {time}", "架构": "Arquitetura", "查看内置客户端({n})": "Ver clientes integrados ({n})", "查询管理员状态失败:{message}": "Falha ao consultar o status do administrador: {message}", "校验身份:这三段必须各自成块排在最前(实测:三段并成一段会被回 405 / 3012)。因此这里按段编辑,不能合成一段。改过的段以你的文本为准,没改的段继续用官方原文;清空某一段 = 那一段恢复官方原文。": ": os três blocos precisam vir no início, cada um como um bloco separado (testado: três blocos fundidos em um só retornam 405 / 3012). Por isso a edição aqui é por bloco — não é possível fundi-los. Blocos alterados usam o seu texto; os não alterados continuam com o texto oficial; limpar um bloco = aquele bloco volta ao texto oficial.", "桌面端": "Aplicativo desktop", "桌面端登录 / 注册验证": "Verificação de login / cadastro no desktop", "桌面端:登录 / 注册需要 ALTCHA 人机验证": "Desktop: login / registro exige verificação ALTCHA", "桌面端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "Desktop: login / registro exige verificação ALTCHA (em uso agora)", "桌面运行时不可用,暂时无法保存": "Runtime do desktop indisponível; não é possível salvar agora", "档案": "Perfil", "检测中…": "Verificando…", "概览": "Visão geral", "模型不能直接看图时,按你选择的方式处理。原生支持图片的请求直接转发,不增加识图调用。": "Quando o modelo não puder ler imagens, use o modo escolhido. Solicitações a modelos com suporte nativo seguem diretamente, sem uma chamada visual extra.", "模型单独配置": "Configuração por modelo", "模型目录没写明是否支持图片时按这里处理。": "Usado quando o catálogo não informa se o modelo aceita imagens.", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。下面两块分别选好「哪些模型」和「用哪只模型」即可;没配到的模型、以及本来就能看图的模型,一律原样放行。这里的改动立即生效,不需要保存。": "Um modelo que não consegue ler imagens tem apenas duas saídas: deixar outro modelo ler a imagem por ele, ou entregar a requisição inteira a um modelo que consiga. Escolha os modelos e o modelo de visão nos dois blocos abaixo. O que não estiver aqui — inclusive modelos que já leem imagens — passa sem alteração. As mudanças aqui valem na hora; não há nada a salvar.", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。没配到的模型、以及本来就能看图的模型,一律原样放行;每个请求只用其中一种方式,不会两种串着做,处理失败也不会改走另一种。改动立即生效,不需要保存。": "Um modelo que não consegue ler imagens tem apenas duas saídas: deixar outro modelo ler a imagem por ele, ou entregar a requisição inteira a um modelo que consiga. O que não estiver aqui — inclusive modelos que já leem imagens — passa sem alteração. Cada requisição usa apenas uma das duas formas; elas nunca se encadeiam e uma falha não cai na outra. As mudanças aqui valem na hora; não há nada a salvar.", "模型请求是否需要验证码由 ZCode 上游配置决定,领取验证与模型请求免验证分别处理。后台只检查配置和库存,不自动运行验证码或弹出拼图;需要验证时,在账号的「套餐明细」中点击「开始验证」。验证令牌一次性使用,短时间内过期,失败或取消后不会自动重试。": "As configurações do provedor ZCode determinam se o modelo exige verificação, separadamente do resgate de planos. O processo em segundo plano só consulta configurações e estoque; nunca executa verificação nem abre um quebra-cabeça automaticamente. Inicie-a nos detalhes do plano da conta. Tokens são de uso único, expiram rapidamente e não são repetidos após falha ou cancelamento.", "模式": "Modo", "模式改为「{mode}」": "Modo alterado para “{mode}”", "次": "vezes", "次日 00:00": "00:00 do dia seguinte", "正则表达式": "Expressão regular", "正在保存上游原始报文:": "Salvando payloads brutos do upstream:", "正在修改…": "Alterando…", "正在剥离出站请求里的审核指纹:表头键值整段删除,模板句最小改写。": "Removendo os fingerprints de revisão das requisições de saída: pares chave/valor de cabeçalho excluídos por completo, frases de template com reescrita mínima.", "正在安装…": "Instalando…", "正在应答跨源请求:浏览器跨域请求可直连 /v1/*。": "Respondendo a requisições de outra origem: requisições de navegador com CORS podem se conectar diretamente a /v1/*.", "正在归一角色:developer 角色消息转发前改写为 system。": "Normalizando papéis: mensagens com papel developer são reescritas para system antes do encaminhamento.", "正在注册…": "Registrando…", "正在联网更新": "Atualizando online", "正在读取提供商设置…": "Carregando configurações de provedores…", "正式版": "Estável", "每个请求只会用到其中一种方式,不会两种串着做;处理失败也不会改走另一种。配了哪只视觉模型,那次请求的图片就会交给它。": "Cada requisição usa apenas uma das duas formas; elas nunca se encadeiam e uma falha não cai na outra. O modelo de visão configurado é quem recebe as imagens daquela requisição.", "每条请求轮换到下一个可用账号;新会话交给当前最闲的那位。适合想把手里的号摊开用、不让某一个一直扛。": "Alterna para a próxima conta utilizável a cada requisição; uma sessão nova vai para quem estiver mais livre. Para distribuir o uso entre as contas em vez de deixar uma carregar tudo.", "每条请求都重新按策略选路 —— 行为与「关闭」一致,仅保留会话识别的记录。": "Cada requisição é roteada pela estratégia do zero — mesmo comportamento de \"Desligado\", apenas os registros de sessão são mantidos.", "每次等待的时长,默认 0 = 跟随上游建议(实测 9~30 秒,上游没给建议时用 15 秒)。可填 0–120 秒强制一个固定时长。": "Duração de cada espera; padrão 0 = seguir a sugestão do upstream (medido: 9~30 segundos; quando o upstream não sugere nada, usa 15 segundos). Aceita 0–120 segundos para forçar uma duração fixa.", "每行一个域名,不填协议、端口或路径;与 Cloudflare 中的配置一致,服务端按完整域名匹配。手机 App 使用所连接网关的域名。": "Informe um hostname por linha, sem protocolo, porta ou caminho. Use os mesmos valores da Cloudflare; o servidor exige correspondência exata. O aplicativo móvel usa o hostname do gateway conectado.", "毫秒": "ms", "沟通方式 / 上下文管理 + Environment 段。": "O bloco de estilo de comunicação / gestão de contexto + Environment.", "没有可导出的账号": "Não há contas para exportar", "没有可用视觉模型时": "Quando não houver modelo de visão disponível", "没有已确认支持图片的模型,请先在模型管理中确认。": "Nenhum modelo tem suporte a imagens confirmado. Confirme a capacidade em Gerenciamento de Modelos primeiro.", "没能读到「{label}」的当前值,改为 {count} 条可能会删除超出的历史数据。": "Não foi possível ler o valor atual de “{label}”. Definir {count} registros pode excluir os dados históricos excedentes.", "没能读到「{label}」的当前值,改为 {days} 天可能会删除超出的历史数据。": "Não foi possível ler o valor atual de “{label}”; mudar para {days} dias pode excluir dados históricos excedentes.", "沿用对应方式的视觉模型配置,不额外维护一份模型列表。": "Reutiliza a configuração visual desse modo, sem manter outra lista de modelos.", "沿用工具服务的视觉分析模型": "Reutilizar o modelo de análise visual do serviço de ferramentas", "沿用工具服务的视觉分析模型(未配置)": "Modelo de visão do serviço de ferramentas (não configurado)", "注册并开启": "Registrar e ativar", "注册管理员账号": "Registrar conta de administrador", "注意:这一家的「网关自带」开关现在是关的,改过的正文要等开关打开才生效。": "Atenção: o switch “Interno do gateway” deste provedor está desativado; o texto alterado só passa a valer quando o switch for ativado.", "流式响应相邻数据之间允许的最大空闲时间(秒),收到新数据后重新计时,默认 300 秒,范围 1~3600。": "Tempo máximo de inatividade permitido entre dados adjacentes de uma resposta em streaming (segundos), com a contagem reiniciada a cada novo dado recebido; padrão 300 segundos, faixa 1~3600.", "流式响应空闲超时": "Timeout de inatividade do streaming", "测试连接": "Testar conexão", "浏览器 / PWA": "Navegador / PWA", "浏览器只在 https 或 localhost 下提供离线缓存;局域网 http 访问不影响正常使用": "Os navegadores só oferecem cache offline em https ou localhost. O acesso por http na LAN continua funcionando normalmente.", "浏览器在本地完成计算,不需要第三方密钥,也不依赖外部验证服务。": "O navegador faz o cálculo localmente. Não exige chaves de terceiros nem serviços externos de verificação.", "浏览器标签页": "Aba do navegador", "浏览器面板": "Painel no navegador", "消息角色": "Papéis das mensagens", "添加备选模型": "Adicionar modelo alternativo", "添加提供商": "Adicionar provedor", "添加提供商…": "Adicionar provedor…", "添加自定义头": "Adicionar cabeçalho personalizado", "添加要单独配置的提供商": "Adicionar provedor para configurar individualmente", "清除本机凭证": "Limpar credenciais locais", "清除这里的正文": "Limpar o texto deste campo", "源代码": "Código-fonte", "点下面的入口会用系统默认浏览器打开 GitHub 的对应表单(需要 GitHub 账号,模板已预设好,填完直接提交即可)。": "Os atalhos abaixo abrem o formulário correspondente no GitHub usando o navegador padrão do sistema (é preciso ter uma conta GitHub; o template já vem preenchido, basta completar e enviar).", "点击重命名": "Clique para renomear", "点此添加或切换服务器": "Toque para adicionar ou trocar de servidor", "点此添加服务器": "Toque para adicionar um servidor", "版本": "Versão", "版本信息": "Informações de versão", "版本信息 · 所连网关环境": "Informações de versão · gateway conectado", "版权声明": "Aviso de copyright", "状态码 {code} 已在名单里": "O status code {code} já está na lista", "状态码必须是 {min}–{max} 的整数(收到: {text})": "O status code deve ser um número inteiro de {min}–{max} (recebido: {text})", "环境": "Ambiente", "生成时间:{time}": "Criado em: {time}", "生效顺序:有效的来源声明优先,然后按顺序匹配自定义规则,最后使用内置规则。中转丢失原始标识时,无法自动推断背后的软件。": "Prioridade: declaração válida, regras personalizadas em ordem e regras integradas. Se um intermediário remover o identificador original, não será possível inferir automaticamente o software de origem.", "用 models.dev 补齐上游没声明的模型能力与思考档位(联网刷新,内嵌快照始终生效)": "Preenche capacidades e níveis de raciocínio que o upstream não declara, usando o models.dev (atualização online; o snapshot embutido sempre vale)", "用于加密上云的账号密钥。请自己记牢 —— 它不保存到云端,换机下载时必须输入同一个密码,否则账号数据无法解密。": "Usada para criptografar a chave da conta enviada à nuvem. Memorize-a — ela não é armazenada na nuvem e você precisa digitar a mesma senha ao restaurar em outra máquina, caso contrário os dados das contas não poderão ser descriptografados.", "用哪只模型识图": "Qual modelo lê a imagem", "用浏览器菜单里的「添加到主屏幕」把这一页装成 App:全屏打开、没有地址栏,和原生应用一样。": "Use \"Adicionar à Tela de Início\" no menu do navegador para instalar esta página como app: tela cheia, sem barra de endereço, igual a um app nativo.", "由 Cloudflare 提供验证,需要浏览器与网关均能连接 Cloudflare。验证失败或服务不可用时不会自动放行。": "A verificação é fornecida pela Cloudflare. O navegador e o gateway precisam acessar a Cloudflare. Uma falha na verificação ou indisponibilidade do serviço não libera o acesso.", "由 {source} 覆盖,手动设置暂不生效": "Substituído por {source}; a configuração manual não está ativa no momento", "界面缩放": "Zoom da interface", "界面缩放比例": "Nível de zoom da interface", "界面语言": "Idioma da interface", "界面语言。可选简体中文、繁體中文、English、日本語、한국어、Português (Brasil),或「跟随系统」(按浏览器 / 系统的语言列表自动选)。切换后整页立即刷新;该偏好只存在本机(localStorage),不影响账号、密钥与转发。": "Idioma da interface. Opções: 简体中文, 繁體中文, English, 日本語, 한국어, Português (Brasil), ou “Sistema” (seleção automática pela lista de idiomas do navegador / sistema). Após a troca, a página inteira é atualizada na hora; essa preferência fica apenas nesta máquina (localStorage) e não afeta contas, chaves nem o encaminhamento.", "界面语言只保存在本机(localStorage)。切换后整页立即刷新,不影响账号、密钥与转发。": "O idioma da interface fica salvo apenas nesta máquina (localStorage). Após a troca, a página inteira é atualizada na hora; não afeta contas, chaves nem o encaminhamento.", "界面里编辑的正文": "Texto editado na interface", "留空 = 用内置默认提示词": "Vazio = usar o system prompt padrão integrado", "留空使用 AWS 官方地址": "Deixe em branco para usar o endereço oficial da AWS", "留空使用默认": "Deixe em branco para usar o padrão", "留空表示删除匹配内容;替换内容按原文写入,$ 不作为捕获组引用。": "Deixe vazio para excluir o texto correspondente. A substituição é inserida literalmente; $ não referencia grupos de captura.", "登录 / 注册需要通过 ALTCHA 人机验证(工作量证明)": "Login / registro exigem a verificação humana ALTCHA (proof of work)", "登录 / 账号切换 / 429 切换等系统事件,可填 1–3650 天。": "Eventos do sistema como login / troca de conta / troca por 429; intervalo de 1–3650 dias.", "登录 / 账号切换 / 429 切换等系统事件,可填 1–99999 天。": "Eventos de sistema como login, troca de conta e switch 429. Aceita de 1 a 99999 dias.", "登录 Agent2API": "Entrar no Agent2API", "登录 {name}": "Entrar em {name}", "登录人机验证": "CAPTCHA de login", "百分比类读数(如 OpenCode Go、Antigravity)不能相加,组头显示的是组内最低剩余比例。": "Leituras percentuais (como OpenCode Go ou Antigravity) não podem ser somadas; a faixa mostra a menor porcentagem restante do grupo.", "监听地址": "Endereço de escuta", "目前展示仓库已登记的图标来源许可,不代表完整的第三方依赖清单。": "Esta lista contém as licenças das fontes de ícones atualmente registradas no repositório, não um inventário completo das dependências de terceiros.", "目标路径:{path}": "Caminho de destino: {path}", "直接按上面的设置兼容": "Aplicar as configurações acima direto", "直接按当前方式兼容": "Aplicar diretamente o modo selecionado", "知道了": "Entendi", "确定": "Confirmar", "确定后加入当前草稿,点击「保存设置」才会生效。": "Confirmar adiciona a regra ao rascunho. Clique em Salvar configurações para aplicá-la.", "确定继续?": "Confirmar e continuar?", "确认上传": "Confirmar envio", "确认图片处理授权": "Confirmar autorização para processar imagens", "确认备份密码": "Confirmar senha do backup", "确认并保存": "Confirmar e salvar", "确认新密码": "Confirmar nova senha", "确认缩减数据保留": "Confirmar redução da retenção de dados", "确认缩短保留天数": "Confirmar a redução dos dias de retenção", "社区与支持": "Comunidade e suporte", "离线缓存未启用": "O cache offline está desativado", "积分合计只统计当前筛选出来的账号": "Somar apenas as contas visíveis no filtro atual", "移入「{name}」": "Mover para \"{name}\"", "程序路径": "Caminho do executável", "空 = 不要这一份,回落提示词文件 / 内置默认提示词。": "Vazio = não usar este texto e voltar para o arquivo de prompt / system prompt padrão integrado.", "空分组 · 点组头的 + 把菜单移进来": "Grupo vazio · use + no cabeçalho para mover menus", "立即解除": "Encerrar agora", "站点密钥(Site Key)": "Chave do site (Site Key)", "第一段": "Primeiro bloco", "第一段(身份句)": "Primeiro bloco (frase de identidade)", "第三方应用密码": "Senha de aplicativo", "第三方开源许可": "Licenças de código aberto de terceiros", "第三方模型回答完自动折叠过程": "Recolher automaticamente o trabalho de modelos de terceiros após a resposta", "第三方模型回答完自动折叠过程设置已刷新": "Configuração de recolhimento do trabalho de modelos de terceiros atualizada", "第三段": "Terceiro bloco", "第三段(动态段)": "Terceiro bloco (dinâmico)", "第二段": "Segundo bloco", "第二段(稳定段)": "Segundo bloco (estável)", "等待响应超时": "Timeout de espera de resposta", "等待期间请求日志的状态列会显示「排队中」阶段,详情弹窗的「内部重试」里能逐次看到等待时长;等待用尽后返回 HTTP 503(不是 401/429:既不会刷新凭证,也不会把账号标成限额)。": "Durante a espera, a coluna de status dos logs de requisições mostra a fase “Na fila”, e o diálogo de detalhes, em “Retries internos”, mostra a duração de cada espera uma a uma; quando as esperas se esgotam, é retornado HTTP 503 (não 401/429: nem atualiza credenciais, nem marca a conta como limitada).", "等比放大或缩小整个界面(文字、控件、间距一起变),效果与浏览器按 Ctrl +/- 相同:80%–130%、5% 一档。窗口本身不缩放,变的是页面内容的显示比例,设置立即生效并记住,下次启动直接按这个比例打开。放得越大可视范围越小,窗口较窄或表格较宽时不建议调得太大。": "Amplia ou reduz a interface inteira proporcionalmente (texto, controles e espaçamentos juntos), com o mesmo efeito de Ctrl +/- no navegador: 80%–130%, em passos de 5%. A janela em si não é redimensionada; o que muda é a proporção de exibição do conteúdo da página. A configuração vale imediatamente e é memorizada, e a próxima inicialização já abre nesta proporção. Quanto maior o zoom, menor a área visível; com janelas estreitas ou tabelas largas, não é recomendável aumentá-lo demais.", "简体中文": "chinês simplificado", "管理员已注册": "Administrador registrado", "管理员账号": "Conta de administrador", "管理插件": "Gerenciar plugins", "精确文本": "Texto exato", "系统提示词模式": "Modo do system prompt", "系统提示词设置已刷新": "Configurações do system prompt atualizadas", "累计请求": "Requisições totais", "繁体中文": "chinês tradicional", "约 {n} 字符": "cerca de {n} caracteres", "结构": "estrutura", "给 Codex 的响应补阶段标记,回答完后像官方模型一样把推理与命令过程折叠起来": "Adicionar marcadores de fase às respostas do Codex para recolher o raciocínio e os comandos após a resposta, como nos modelos oficiais", "继续并清理": "Continuar e limpar", "编辑提示词正文 · {label}": "Editar o texto do prompt · {label}", "编辑提示词正文 · 全局": "Editar o texto do prompt · Global", "编辑正文": "Editar texto", "编辑网关自带提示词 · {label}": "Editar o system prompt interno do gateway · {label}", "编辑脱敏规则": "Editar regra de mascaramento", "编辑识别规则": "Editar regra de identificação", "缩放后重新存成 JPEG 时用的质量。默认 80,可填 40–95;数值越小体积越小、画质越差。": "Qualidade JPEG usada ao recodificar a imagem reduzida. Padrão 80, faixa 40–95; menor significa arquivo menor e qualidade pior.", "缩放比例": "Nível de zoom", "网关": "Gateway", "网关 Key 数量": "Quantidade de chaves do gateway", "网关尚未就绪": "O gateway ainda não está pronto", "网关自带": "Interno do gateway", "网关跨域访问已开启": "CORS do gateway ativado", "网关跨域访问设置已刷新": "Configurações de CORS do gateway atualizadas", "网关跨域访问(CORS)": "Acesso de outra origem ao gateway (CORS)", "网关面(/v1/*)默认不应答浏览器跨源请求:页面直连会被预检拦下,只报「无法连接 API」。注意来源是 * —— 未配「网关 Key」时任何网页都能借本机网关打上游,故默认关闭;只给自己用的话,让页面与网关同源(本地反代 /v1)更稳妥。面板接口(/api/*)不受影响。": "A API do gateway (/v1/*) não responde por padrão a requisições de outra origem feitas por navegador: a conexão direta da página é barrada no preflight e só mostra “não foi possível conectar à API”. Atenção: a origem é * — sem uma “Chave do gateway” configurada, qualquer página pode usar o gateway local para atingir o upstream; por isso o padrão é desativado. Se for só para você, é mais seguro deixar a página e o gateway na mesma origem (proxy reverso local em /v1). A API do painel (/api/*) não é afetada.", "网络访问": "Acesso pela rede", "网页端": "Web", "网页端登录 / 注册验证": "Verificação de login / cadastro na web", "网页端的界面缩放由浏览器自己控制(Ctrl + / Ctrl -,或浏览器菜单里的缩放),此项不可调。": "No painel web, o zoom da interface é controlado pelo próprio navegador (Ctrl + / Ctrl -, ou o zoom no menu do navegador); esta opção não pode ser ajustada.", "网页端:登录 / 注册需要 ALTCHA 人机验证": "Web: login / registro exige verificação ALTCHA", "网页端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "Web: login / registro exige verificação ALTCHA (em uso agora)", "网页管理地址": "Endereço do painel web", "群晖 NAS": "Synology NAS", "群晖需在「控制面板 → 应用程序门户 → WebDAV」里启用服务,端口默认 5005(HTTP)/ 5006(HTTPS)。": "No Synology, ative o serviço em Painel de Controle → Portal de Aplicativos → WebDAV; as portas padrão são 5005 (HTTP) / 5006 (HTTPS).", "脱敏词表": "Regras de mascaramento", "腾讯云 COS": "Tencent Cloud COS", "自动同步": "Sincronização automática", "自动同步上次失败": "A última sincronização automática falhou", "自动续写": "Continuação automática", "自定义 User-Agent": "User-Agent personalizado", "自定义客户端分类": "Categorias de clientes personalizadas", "自定义客户端数量已达上限": "Limite de clientes personalizados atingido", "自定义提供商 {id}": "Provedor personalizado {id}", "自定义网站和应用界面中显示的名称与 Logo。": "Personalize o nome e o logo exibidos no site e na interface do aplicativo.", "自定义识别规则": "Regras de identificação personalizadas", "自愈保护": "Proteções de autorrecuperação", "至少 12 位": "Ao menos 12 caracteres", "至少 8 位,换机下载时需要": "Pelo menos 8 caracteres; necessário ao restaurar em outra máquina", "至少要保留一个分组": "Pelo menos um grupo deve permanecer", "英语": "inglês", "范围 5–120 秒,并受原请求时限约束。": "Faixa de 5 a 120 segundos, também limitada pelo tempo da requisição original.", "范围为 5–120 秒,并受原请求时限约束。图片过大、格式错误或下载失败不会被当作模型不支持图片。": "Intervalo permitido: 5–120 segundos, limitado também pelo tempo da solicitação original. Imagens grandes, formatos inválidos e falhas de download não são tratados como falta de suporte a imagens.", "被更高优先级覆盖": "Substituída por prioridade superior", "装上{size}的官方身份提示词": "Instalar o system prompt de identidade oficial ({size})", "装成 App 后从桌面图标直接进入:全屏打开、没有地址栏。": "Instalado como app, ele abre direto pelo ícone da tela inicial: em tela cheia, sem barra de endereço.", "覆盖": "sobrescrever", "规则 / 匹配方式": "Regra / tipo de correspondência", "规则可以增删改、启停和调整顺序;替换内容留空表示删除匹配内容。恢复默认只重置词表,不改开关和提供商范围。": "Adicione, edite, exclua, ative, desative e reordene regras. A substituição vazia exclui o texto correspondente. Restaurar o padrão redefine apenas as regras, sem alterar o interruptor nem o escopo de provedores.", "规则名称": "Nome da regra", "规则名称不能为空,且最多 {max} 个字符": "O nome da regra é obrigatório e deve ter no máximo {max} caracteres", "规则已保存,对后续请求生效;当前历史记录未修改。": "Regra salva para requisições futuras. Este registro histórico não foi alterado.", "规则忽略大小写,只影响新请求的日志与统计,不改变模型选择或权限。": "As regras ignoram maiúsculas e minúsculas e afetam apenas logs e estatísticas de novas requisições, sem alterar modelos ou permissões.", "规则编号:{id}": "ID da regra: {id}", "视觉模型": "Modelo de visão", "视觉模型先识读图片,再由原模型分析和回答。": "Um modelo de visão lê as imagens primeiro; depois, o modelo original analisa e responde.", "视觉模型来源": "Origem do modelo de visão", "视觉模型的思考等级": "Nível de raciocínio do modelo de visão", "视觉模型直接回答": "O modelo de visão responde diretamente", "视觉模型识读图片": "O modelo de visão lê as imagens", "解码后小于这个体积的图片保持原样。默认 512KB,可填 0–10240;填 0 表示所有内嵌图片都过一遍。": "Imagens menores que este tamanho após a decodificação são mantidas como estão. Padrão 512KB, faixa 0–10240; 0 processa todas as imagens embutidas.", "解除失败:{message}": "Falha ao encerrar: {message}", "触发阈值": "Limite de acionamento", "计数": "Contagens", "计量单位": "Notação numérica", "让 Codex 在收到最终答案后收起中间过程。仅为严格识别的 Codex Responses 请求补阶段标记,报表归类和来源声明不影响此判断。正常结束且没有工具调用的非空回答才补 final_answer,工具调用前的说明补 commentary;错误、截断、缺少结束信号或未知结束原因不补最终答案标记。默认关闭,不改变回答文字,也不减少模型思考或用量。": "Permite que o Codex recolha o trabalho intermediário após a resposta final. Os marcadores de fase são adicionados somente a requisições Responses identificadas estritamente como Codex, independentemente das categorias dos relatórios ou das declarações do cliente. Apenas respostas não vazias, concluídas normalmente e sem chamadas de ferramentas recebem final_answer; explicações antes das chamadas recebem commentary. Erros, truncamento, ausência de sinal de conclusão e motivos de término desconhecidos não recebem marcador de resposta final. Desativado por padrão; não altera o texto, o raciocínio do modelo nem o consumo.", "许可原文": "Texto original da licença", "许可原文已随软件内置,无需联网即可查看;打开项目来源链接需要联网。": "Os textos das licenças estão incluídos no aplicativo e podem ser consultados offline. Abrir os links de origem dos projetos requer conexão com a internet.", "许可核对版本": "Revisão usada para verificar a licença", "设置不可隐藏(隐藏了只能清缓存找回来)": "\"Configurações\" não pode ser ocultado (seria preciso limpar o armazenamento para recuperá-lo)", "设置备份密码": "Definir senha do backup", "设置识别规则": "Definir regra de identificação", "访问时请使用目标设备能连接到的地址;这里显示的本机地址不代表公网可达。": "Use um endereço alcançável pelo dispositivo que vai se conectar. O endereço local exibido aqui não garante acesso pela internet.", "识别依据": "Evidência de identificação", "识别规则数量已达上限": "Limite de regras de identificação atingido", "词表为空,不会改写任何指纹。可以新增规则或恢复默认词表。": "A lista está vazia; nenhum fingerprint será alterado. Adicione uma regra ou restaure o padrão.", "该提供商暂无可编辑的专属设置": "Este provedor não tem configurações editáveis", "详细日志": "Logs detalhados", "语言设置": "Configurações de idioma", "请先保存设置再同步": "Salve as configurações antes de sincronizar", "请先在 Cloudflare 创建 Turnstile 组件,建议选择 Managed 模式,并添加面板实际使用的域名。": "Primeiro crie um widget Turnstile na Cloudflare. Recomendamos o modo Managed. Adicione os domínios usados para acessar o painel.", "请填一个分组名": "Informe um nome de grupo", "请填写管理员账号(64 字符以内)": "Preencha a conta de administrador (até 64 caracteres)", "请求发出后等待上游响应头的最大时间(秒),默认 300 秒,范围 1~3600。": "Tempo máximo de espera pelos cabeçalhos de resposta do upstream após o envio da requisição (segundos), padrão 300 segundos, faixa 1~3600.", "请求带有不同软件的标识,未自动归类;可用自定义规则明确归属。": "A requisição contém identificadores de aplicativos diferentes e não foi classificada automaticamente. Use uma regra personalizada para atribuí-la.", "请求提供商 / 模型支持": "Solicitar suporte a provedor / modelo", "请求日志保留天数": "Retenção dos logs de requisições (dias)", "请求日志保留数量上限": "Limite de registros de requisições", "请求记录": "Registros de requisições", "请求超时": "Timeout de requisição", "请求转发到上游失败时(服务器瞬时错误、连接失败,以及 WorkBuddy 的 11-128 敏感词拦截),网关会等一段间隔后再发一次。次数分两档,管的是两件事:①「同一账号重试次数」在同一账号上原地重发几次 —— 一般是提示词被上游拦截、或链路瞬时抖动,等一会儿重发往往就好了;②「切换账号重试次数」这份请求最多再换几个账号试 —— 首发的那个账号不算,每换一个扣一次,不分是不是同一家(换到同一家的下一个账号也算一次),换满还失败就把错误返回给客户端。两项都设为 0 表示失败不重试、直接报错。注意账号级限额(429)不占这里的换号次数 —— 那类失败走「冷却该账号并换下一个账号」的降级,与这里的重试是两条路。另有「指定错误码直接换号」名单(默认 402):命中名单的上游状态码不在同一账号重发,直接按队列换下一个账号继续试(换号也占「切换账号重试次数」),换满仍失败才把错误返回给客户端。": "Quando o encaminhamento ao upstream falha (erro momentâneo do servidor, falha de conexão e bloqueio por palavra sensível 11-128 do WorkBuddy), o gateway espera um intervalo e envia de novo. As tentativas se dividem em duas opções, que tratam de duas coisas: ① “Retries na mesma conta” — quantas vezes reenviar na própria conta; normalmente é o prompt bloqueado pelo upstream ou uma oscilação momentânea do link, e reenviar depois de um tempo costuma resolver; ② “Retries trocando de conta” — por quantas contas a mais esta requisição pode tentar; a conta do primeiro envio não conta, cada troca desconta uma, independentemente de ser o mesmo provedor (trocar para a conta seguinte do mesmo provedor também conta), e se o limite se esgotar com falha, o erro é retornado ao cliente. Definir ambas como 0 significa não tentar de novo em caso de falha e retornar o erro direto. Atenção: o limite no nível da conta (429) não consome as trocas de conta daqui — esse tipo de falha segue o fallback de “esfriar a conta e passar para a próxima”, um caminho diferente do retry daqui. Existe ainda a lista de “Troca de conta direta em códigos de erro especificados” (padrão 402): falhas que correspondem aos status codes do upstream da lista não são reenviadas na mesma conta — o gateway passa direto para a próxima conta da fila e continua tentando (a troca também consome “Retries trocando de conta”), e só quando elas se esgotam com falha é que o erro é retornado ao cliente.", "请求重试": "Retry de requisições", "请至少选择一个提供商": "Selecione pelo menos um provedor", "请输入同步密码": "Digite a senha de sincronização", "请输入当前密码": "Digite a senha atual", "请输入服务端密钥": "Digite a chave secreta", "请选择可用的标识请求头": "Selecione um cabeçalho de identificação disponível", "请选择归属客户端": "Selecione o cliente de destino", "读取云同步设置失败:{message}": "Falha ao ler as configurações de sincronização na nuvem: {message}", "读取失败:{message}": "Falha ao ler: {message}", "读取完整非流式响应体允许的最大时间(秒),默认 300 秒,范围 1~3600。": "Tempo máximo permitido para ler o corpo completo de uma resposta não streaming (segundos), padrão 300 segundos, faixa 1~3600.", "读取网关信息失败:{message}": "Falha ao ler as informações do gateway: {message}", "读取远端…": "Lendo o remoto…", "读取远端信息失败:{message}": "Falha ao ler as informações remotas: {message}", "调用方声明": "Declaração do solicitante", "调试报文": "Payloads de debug", "调试模式": "Modo de depuração", "调试模式设置已刷新": "Configurações do modo debug atualizadas", "负载均衡": "Balanceamento de carga", "账号列表": "Lista de contas", "账号导入 / 导出": "Importar / exportar contas", "账号路由": "Roteamento de contas", "账号页表格的两项显示偏好,只存在本机(localStorage),不影响账号数据与转发。「积分合计只统计当前筛选出来的账号」:账号页每一家的分组带右侧有一枚「可用合计」,默认按整组求和 —— 不受筛选、搜索影响,被筛掉的账号也计入(余额是资产,禁用也只表示不参与转发,额度仍在账上)。打开这一项后改为只累加当前可见的行:例如筛出 1 个 100 积分的账号,合计就是 100,而不是同组两个账号之和 1,000。分页不参与这个口径 —— 翻页看的是同一份结果的不同屏,合计不随页码变化。「隐藏账号名」与表头「账号」旁边那颗眼睛是同一个开关:打开后账号列的名字整体显示成星号,适合截图分享时遮挡账号。": "Duas preferências de exibição da tabela de contas. Ficam apenas nesta máquina (localStorage) e não afetam dados de conta nem o encaminhamento. \"Somar apenas as contas visíveis no filtro atual\": cada faixa de provedor na página de contas mostra um selo \"Total disponível\" e, por padrão, ele soma o grupo inteiro — filtros e busca não o alteram, e contas filtradas ainda contam (saldo é ativo; desativar apenas mantém a conta fora do encaminhamento, o crédito permanece). Ative para somar apenas as linhas visíveis: filtre até uma conta com 100 créditos e o total mostra 100, não 1.000 (a soma das duas contas do grupo). A paginação não participa desta regra — páginas são apenas telas diferentes do mesmo resultado, então o total não muda ao virar páginas. \"Ocultar nomes das contas\" é o mesmo botão do olho ao lado do cabeçalho \"Conta\": quando ativado, os nomes na coluna de contas aparecem como asteriscos, útil para capturas de tela.", "账户": "Conta", "超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件。把天数改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。可填范围为 1–3650 天。请求日志 / 按天聚合 / 签到记录已全量保留、不再自动删除,要清历史请到对应页面手动清空。": "Qualquer coisa além do período de retenção é excluída: os logs de eventos são eventos do sistema, como login, troca de conta e switch 429. Diminuir o valor (por exemplo, de 30 para 7 dias) e salvar exclui imediatamente os dados históricos excedentes, e isso não pode ser desfeito; aumentar ou manter o valor não exclui nada. O intervalo permitido é de 1–3650 dias. Logs de requisições, agregados diários e registros de check-in agora são mantidos integralmente e nunca excluídos automaticamente; para limpar o histórico, use a página correspondente.", "超出的历史数据会被立即删除,且不可恢复。": "Os dados históricos excedentes serão excluídos imediatamente, sem possibilidade de recuperação.", "超时": "Timeout", "超时设置已刷新": "Configurações de timeout atualizadas", "跟随模型配置": "Seguir configuração do modelo", "跟随系统 · 浅色 · 深色": "Sistema · Claro · Escuro", "跟随默认": "Seguir padrão", "跨域访问": "CORS", "路由": "Roteamento", "路由组只使用组内成员;普通路由只使用参与范围内的账号和模型。": "Grupos de rotas usam apenas seus membros. Rotas comuns usam apenas contas e modelos dentro do escopo de participação.", "路由设置已刷新": "Configurações de roteamento atualizadas", "跳过 {n} 个": "Ignorados: {n}", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;负载均衡是每条请求换下一位,把负载摊到各个账号上。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时)、被 429 的账号垫底排到队尾 30 分钟、余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 前两层可以在下面按需开关,限制器由账号的「限制器」设置管。": "Em que ordem as contas são escolhidas ao encaminhar uma requisição: ① a \"Estratégia de roteamento\" define a regra da fila — na Ordem estrita, a posição 1 atende todas as requisições até não conseguir responder (limite / falha / cota esgotada) antes de passar à próxima; no Balanceamento de carga, cada requisição vai para a próxima conta, espalhando a carga. ② A \"Aderência de sessão\" mantém a mesma sessão (mesmo modelo + mesmas mensagens iniciais) na mesma conta sempre que possível — conversas de vários turnos reutilizam o cache de contexto do upstream, menos trocas de conta e menos desperdício; Automático gruda por 5 minutos, Na sessão por 6 horas, Por turno e Desligado não grudam. A posição na fila (primeira coluna da tabela de contas) é a base de toda estratégia; as estratégias se aplicam por cima. O roteamento ainda tem três proteções de autorrecuperação: contas que falham no encaminhamento recuam um pouco (15 minutos iniciais, dobrando a cada falha, teto de 1 hora), contas 429 com cota vão para o fim da fila por 30 minutos, e contas sem cota / acima do limite de tokens do período são seguradas pelo limitador — as duas primeiras podem ser ligadas e desligadas abaixo conforme a necessidade; o limitador é governado pela configuração \"Limitador\" de cada conta.", "转发前压缩对话里内嵌的大图(只改发给上游的副本,生图与图片编辑不受影响)": "Comprimir imagens embutidas grandes nas conversas antes de encaminhar (só a cópia enviada ao provedor muda; geração e edição de imagens não são afetadas)", "转发前将 developer 角色消息转换为 system,兼容不支持 developer 角色的 OpenAI 兼容上游": "Converte mensagens com papel developer para system antes do encaminhamento, para upstreams compatíveis com OpenAI que não suportam o papel developer", "转发失败的账号休息一会儿再回来:15 分钟起步,连续失败翻倍,封顶 1 小时;成功一次立即恢复。目的是「让这次失败先凉一会儿」,免得一条条地反复撞同一个坏账号。": "Uma conta que falha no encaminhamento descansa um pouco antes de voltar: começa em 15 minutos, dobra a cada falha consecutiva, com teto de 1 hora; um único sucesso a restaura na hora. A ideia é deixar a falha esfriar em vez de martelar a mesma conta ruim requisição após requisição.", "转发链路": "Encaminhamento", "轮询间隔": "Intervalo de polling", "软件标识超过 1 KB,已截断保存;匹配仅使用保留部分。": "O identificador excedeu 1 KB e foi truncado. A correspondência usa apenas a parte preservada.", "软件版本": "Versão do software", "轻量模式": "Modo leve", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 套餐池(Start Plan)通道不可用,相关请求会在请求日志里注明原因": "O modo leve está ativado: fechar a janela destrói o processo da interface (liberando cerca de 200 MB de memória) enquanto o gateway continua em segundo plano; com a interface destruída, o canal do pool de planos do ZCode (Start Plan) fica indisponível e as solicitações afetadas registrarão o motivo no log de solicitações", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 活动套餐通道不可用,相关请求会在请求日志里注明原因": "Modo leve ativado: fechar a janela destrói o processo da interface (libera cerca de 200MB de memória) e o gateway continua em segundo plano; enquanto a interface está destruída, o canal do Plano de evento da ZCode fica indisponível e as requisições relacionadas registram o motivo nos logs de requisições", "轻量模式(关窗释放界面内存)": "Modo leve (liberar a memória da interface ao fechar a janela)", "辅助识图": "Leitura assistida de imagens", "辅助识图 · 原模型回答": "Leitura assistida · O modelo original responde", "辅助识图保留原模型回答;切换视觉模型会让视觉模型直接回答。本次授权也包含已设置的模型单独配置。": "A leitura assistida mantém o modelo original para responder; a troca permite que o modelo de visão responda diretamente. Esta autorização também inclui as configurações por modelo.", "辅助识图或切换视觉模型,默认关闭": "Leitura assistida ou troca de modelo de visão, desativada por padrão", "辅助识图配置": "Configuração de leitura assistida", "输入同步密码": "Digitar senha de sincronização", "输入当前登录用的密码": "Digite a senha de login atual", "输入状态码,回车添加": "Digite o status code e pressione Enter para adicionar", "运行形态": "Forma de execução", "近期没有命中样本,不代表未来请求不会命中。": "Nenhuma amostra recente correspondeu; requisições futuras ainda podem corresponder.", "还原": "Restaurar", "还有额度时被 429 的账号排到队尾,30 分钟后自动回到队列(成功转发一次也会立即回来)。它标记的是「疑似共享池被别人抢」,不是「这个账号本身有问题」。⚠️ 注意它与路由策略的配合:在「家内轮询」下,队尾意味着这一家整体被往后排 —— 如果某个提供商的账号被批量限流,它们会集体沉到队尾,那个家可能长时间轮不到。这时可以关掉本项,让 429 过的账号只受冷却约束(冷却到点自动回来)。": "Uma conta com cota que recebe 429 vai para o fim da fila e volta automaticamente após 30 minutos (um encaminhamento bem-sucedido também a traz de volta na hora). Isso sinaliza \"provavelmente o pool compartilhado está sendo drenado por outro\", e não \"esta conta está com problema\". ⚠️ Atenção à interação com a estratégia de roteamento: no \"Rodízio por provedor\", o fim da fila significa que o provedor inteiro é empurrado para trás — se as contas de um provedor forem limitadas em massa, todas afundam para o fim e aquele provedor pode não ser alcançado por muito tempo. Nesse caso desligue isto, deixando as contas 429 sujeitas só ao cooldown (elas voltam sozinhas quando ele expira).", "还没有可用的视觉模型。": "Ainda não há modelo de visão disponível.", "还没有同步过。": "Ainda não sincronizado.", "还没有添加服务器。点右上角「添加」,填入网关所在机器的 IP 或域名与端口。": "Nenhum servidor ainda. Toque em \"Adicionar\" no canto superior direito e informe o IP ou domínio e a porta da máquina que roda o gateway.", "还没有装载任何数据。": "Nenhum dado carregado ainda.", "还没有读到版本信息": "As informações de versão ainda não foram carregadas", "还没有选择模型,这块设置暂时不起作用。": "Nenhum modelo selecionado, então este bloco ainda não faz nada.", "这一份就是「替换 / 追加」模式下网关要发的 system 正文。": "Este é o texto do system que o gateway envia nos modos “Substituir / Anexar”.", "这一项已隐藏": "Este item está oculto", "这一项正在显示": "Este item está visível", "这些模型的请求交给当前路由内可用的视觉模型回答,不再回到原模型。": "As requisições desses modelos são respondidas por um modelo de visão disponível na rota atual, no lugar do modelo original.", "这些模型看到图片时,先把图片交给 {model} 读一遍,再由它们自己结合读到的内容回答。": "Quando esses modelos recebem uma imagem, {model} a lê primeiro, e eles respondem com base no que foi lido.", "这些模型看到图片时,先把图片交给「沿用工具服务的视觉分析模型」读一遍,再由它们自己结合读到的内容回答。": "Quando esses modelos recebem uma imagem, o modelo de visão do serviço de ferramentas a lê primeiro, e eles respondem com base no que foi lido.", "这只模型只负责看图,最终仍由原模型回答。": "Este modelo apenas lê a imagem; quem responde continua sendo o modelo original.", "这只模型直接接收图片与对话,完成本次回答。": "Este modelo recebe as imagens e a conversa e produz esta resposta.", "这台网关未启用机器人校验": "Este gateway não exige verificação de bot", "这台网关没有管理员,用一把已启用的 API Key 访问。": "Este gateway não tem administrador. Acesse com uma API key ativa.", "这条历史请求没有保存识别依据,不能据此自动创建规则。": "Esta requisição histórica não tem evidências de identificação salvas e não pode gerar uma regra automaticamente.", "这条规则已被删除,请关闭编辑后重新添加。": "Esta regra foi excluída. Feche o editor e adicione-a novamente.", "这里只列出已保存的提供商配置;未配置的提供商沿用全局设置,可从下拉框手动添加。用户保存的模式、文件和正文优先于全局设置,「跟随默认」只取消该提供商的模式、文件和正文覆盖。ZCode 套餐池默认由插件按三块装配,客户端系统正文合入第三块,不会自动创建替换规则;手动修改的网关提示词段或关闭开关仍以用户配置为准,能否被接受取决于上游规则。": "Somente as configurações de provedores já salvas aparecem aqui. Provedores não configurados seguem as configurações globais e podem ser adicionados manualmente na lista. Modos, arquivos e textos salvos têm prioridade sobre os globais; Seguir padrão remove apenas essas substituições do provedor. Para o Start Plan da ZCode, o plugin monta três blocos por padrão e incorpora o system do cliente ao terceiro, sem criar uma regra de substituição automaticamente. Blocos do prompt do gateway editados manualmente e a opção de desativar a montagem continuam tendo prioridade; a aceitação depende das regras do upstream.", "进程 PID": "PID do processo", "远程根目录": "Diretório raiz remoto", "远端同一路径下的旧快照。事件日志、请求明细与调试报文不会上传。": "o snapshot antigo no mesmo caminho remoto. Logs de eventos, detalhes de requisições e pacotes de depuração não são enviados.", "远端已有一份快照,将被覆盖": "Já existe um snapshot no remoto e ele será sobrescrito", "远端快照使用了另一把账号密钥,但没有携带密钥文件,无法在本机解密。请在原来那台机器上重新上传一次。": "O snapshot remoto usa uma chave de conta diferente, mas não inclui o arquivo de chave, então não pode ser descriptografado aqui. Envie novamente a partir da máquina original.", "远端快照使用的账号密钥与本机不同。请输入上传那台机器设置的同步密码,用它解出密钥装到本机后再继续下载。": "O snapshot remoto usa uma chave de conta diferente desta máquina. Digite a senha de sincronização definida na máquina que enviou para descriptografar a chave e instalá-la aqui, depois continue o download.", "远端数据与当前版本不兼容": "Os dados remotos são incompatíveis com esta versão", "远端该路径下还没有快照,本次是首次上传。": "Ainda não há snapshot nesse caminho remoto; este é o primeiro envio.", "远端路径:{path}": "Caminho remoto: {path}", "远端还没有可下载的同步数据": "Não há dados de sincronização para baixar no remoto", "连不上这台网关。确认地址与端口正确、网关已启动,且已开启「局域网访问」;用 https 时还要确认证书有效": "Não foi possível alcançar este gateway. Confira o endereço e a porta, se o gateway está rodando e se o \"Acesso pela rede local\" está ativo; no caso de https, confira também se o certificado é válido.", "连不上这台网关。请确认地址、端口与防火墙设置,网关需已启动;桌面端请在「设置 → 网关 → 网络访问」开启「允许其他设备访问网关」。使用 HTTPS 时还需确认证书有效。": "Não foi possível alcançar este gateway. Verifique o endereço, a porta, o firewall e se o gateway está em execução. No aplicativo desktop, ative Permitir que outros dispositivos acessem o gateway em Configurações → Gateway → Acesso pela rede. Para HTTPS, verifique também se o certificado é válido.", "连接中超时": "Timeout de conexão", "连接失败:{message}": "Falha na conexão: {message}", "连续失败到阈值后把这个账号整个打开(默认关)。与失败退避的分工:退避管「单次失败先凉一会儿」,惩罚轻、自动恢复;熔断管「这个账号现在整体不对劲,别再一条条地试」,要连续成功若干次才关。打开期间该账号被跳过,除非全场只剩它 —— 那时仍放行试一次。": "Desliga esta conta por inteiro depois que as falhas consecutivas atingem um limiar (desligado por padrão). Divisão de papéis com o recuo por falha: o recuo cuida de \"deixar uma falha única esfriar\" — penalidade leve, recuperação automática; o disjuntor cuida de \"esta conta está ruim como um todo, pare de tentar uma a uma\" e só fecha após vários sucessos consecutivos. Enquanto aberto, a conta é pulada — a menos que seja a única restante; nesse caso ela ainda recebe uma tentativa.", "追加": "Anexar", "追加网关提示词": "Anexar prompt do gateway", "退出失败:{message}": "Falha ao sair: {message}", "退出登录": "Sair", "退出这台服务器的登录,不影响其他服务器": "Sai apenas deste servidor; os demais não são afetados", "选好接管回答的视觉模型后这块设置才会生效。": "Este bloco passa a valer quando um modelo de visão para responder é escolhido.", "选好视觉模型后这块设置才会生效。": "Este bloco passa a valer quando um modelo de visão é escolhido.", "选定提供商": "Provedor selecionado", "选择一个或多个模型": "Selecione um ou mais modelos", "选择位置并加密备份": "Escolher local e criptografar backup", "选择备份文件并恢复": "Escolher um arquivo de backup e restaurar", "选择提供商(可多选)": "Selecionar provedores (múltipla seleção)", "选路规则": "Regras de seleção", "选项与默认值由已启用插件提供;你保存的覆盖值不会被插件更新替换。": "Os plugins ativados fornecem estas opções e valores padrão. Atualizações do plugin não substituem suas configurações salvas.", "选项与默认值由插件提供,你保存的修改不会被插件更新覆盖。切换提供商不会丢失未保存的修改。": "As opções e os valores padrão vêm dos plugins. Atualizações de plugins não sobrescrevem suas alterações salvas. Trocar de provedor mantém as edições não salvas.", "透传": "Passthrough", "透传客户端 system": "Passthrough do system do cliente", "透传客户端 system(默认)": "Passthrough do system do cliente (padrão)", "通常是网络问题,点右侧重试": "Normalmente é um problema de rede — toque em Repetir", "通用": "Geral", "遇到 Bug、报错或异常行为": "Bugs, erros ou comportamentos anormais", "配置目录下的 agent2api.db(账号、日志、请求记录、调试报文与设置都在里面)。": "O agent2api.db no diretório de configuração (contas, logs, registros de requisições, payloads de debug e configurações ficam todos nele).", "采用本规则": "Usa esta regra", "重启后生效,不影响当前操作": "Entra em vigor após reiniciar; nada do que você está fazendo é interrompido", "重命名": "Renomear", "重命名只更新分类显示名,不拆分历史用量,也不重新归类历史请求。": "Renomear altera apenas o nome exibido, sem dividir o uso anterior ou reclassificar requisições históricas.", "重命名客户端分类": "Renomear categoria de cliente", "重复清理": "Repetir limpeza", "重复清理直到不再变化(仅正则删除)": "Repetir até não haver mudanças (somente exclusão por expressão regular)", "重新读取会替换当前未保存的草稿。": "Recarregar substitui o rascunho atual não salvo.", "重新读取设置": "Recarregar configuração", "重编码质量": "Qualidade de recodificação", "重置会清空管理员账号与密码,面板将回到「未注册」状态。": "A redefinição apaga a conta e a senha do administrador e devolve o painel ao estado \"não registrado\".", "重置管理员": "Redefinir administrador", "重试设置已刷新": "Configurações de retry atualizadas", "重试间隔": "Intervalo entre retries", "铸造守卫每隔多久看一次库存(毫秒)。只影响发现缺货的反应速度 —— 库存够用时轮询不会铸造任何令牌。默认 2500 毫秒,可填 1000–30000。": "De quanto em quanto tempo o guarda de cunhagem olha o estoque (milissegundos). Afeta só a rapidez de perceber a falta — com estoque suficiente, o polling não cunha nada. Padrão 2500 ms; aceita 1000–30000.", "长边像素上限": "Limite do lado maior (px)", "问题反馈": "Relatar um problema", "阿里云 OSS": "Alibaba Cloud OSS", "限流中账号": "Contas limitadas", "随包内嵌的快照(发版时的那份)": "Snapshot embutido no app (o da versão lançada)", "隐藏 {name}": "Ocultar {name}", "隐藏分组 {name}": "Ocultar grupo {name}", "隐藏用户名": "Ocultar nome de usuário", "隐藏账号名(显示成星号)": "Ocultar nomes das contas (mostrar asteriscos)", "隐藏这一组": "Ocultar este grupo", "非流式响应超时": "Timeout de resposta não streaming", "面板登录": "Login do painel", "面板端口": "Porta do painel", "面板管理员账号": "conta de administrador do painel", "韩语": "coreano", "项目来源": "Origem do projeto", "预览不发送模型请求,也不修改历史记录。": "A prévia não chama modelos nem modifica registros históricos.", "预览中…": "Gerando prévia…", "预览匹配": "Pré-visualizar correspondências", "预设": "Predefinição", "首选不可用时再依次尝试备选。": "Se a primeira opção não estiver disponível, os alternativos são tentados em ordem.", "首选不可用时再依次尝试;留空则停止并说明原因。": "Tentados em ordem quando a primeira opção não estiver disponível; vazio significa parar e explicar o motivo.", "验证方式": "Método de verificação", "验证码令牌池": "Pool de tokens de captcha", "验证码令牌池设置已刷新": "Configurações do pool de tokens de captcha atualizadas", "验证码库存的参考目标,默认 3 个,可填 1–10。只影响库存状态展示,不会因为低于目标自动生成令牌或弹出验证码。": "Meta de referência do estoque: padrão 3, entre 1 e 10. Afeta apenas a exibição; ficar abaixo da meta nunca gera tokens nem abre a verificação automaticamente.", "高级设置": "Configurações avançadas", "默认 10000 条,按日志级别分配保留容量,超出后清理最旧的记录;同时受保留天数限制。": "Padrão de 10.000 registros, com capacidade distribuída por nível de log. Os registros excedentes mais antigos são removidos; os dias de retenção também se aplicam.", "默认 1000000 条(100 万),超出后清理最旧的请求记录及其原始正文,不影响按天聚合报表;同时受保留天数限制。": "Padrão de 1.000.000 de registros. Os registros excedentes mais antigos e seus corpos originais são removidos sem afetar os relatórios agregados diários; os dias de retenção também se aplicam.", "默认 5 分钟。间隔内的变化合并为最新快照,到期后上传;手动上传不受限制。失败后会延长等待并自动重试。": "O padrão é 5 minutos. As alterações durante o intervalo são reunidas no snapshot mais recente e enviadas ao final da espera. Uploads manuais não são limitados. Em caso de falha, o sistema aumenta a espera e tenta novamente automaticamente.", "默认仅本机可访问(127.0.0.1)。开启后监听所有 IPv4 网卡(0.0.0.0),访问范围由网络与防火墙决定,不限于局域网,也不会自动开放到公网。开启前必须注册面板管理员;管理接口需要管理员会话或网关 Key,API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。「同时开放网页管理面板」默认关闭,开启后可从其他设备的浏览器登录管理;关闭它不影响 API 转发和本机桌面管理。修改任一开关都需要重启应用。": "Por padrão, somente esta máquina pode acessar (127.0.0.1). Ao ativar, o gateway escuta em todas as interfaces IPv4 (0.0.0.0); o acesso depende da rede e do firewall, não se limita à rede local e não é aberto automaticamente à internet. É necessário registrar um administrador do painel antes. A API de gerenciamento exige uma sessão de administrador ou chave do gateway; chamadas à API exigem uma chave ativa, criada automaticamente como padrão se necessário. O painel web fica desativado por padrão. Ative-o para entrar pelo navegador de outro dispositivo; desativá-lo não afeta o encaminhamento da API nem o gerenciamento desktop local. Alterar qualquer uma das opções exige reiniciar o aplicativo.", "默认值通常够用,出问题时才需要调": "Os padrões costumam bastar; ajuste só quando algo der errado", "默认关闭。开启后下一次 Codex 请求立即生效,不用重启;只对 Codex 来源的 /v1/responses 请求补阶段标记,其它客户端与 /v1/chat/completions 不受影响。": "Desativado por padrão. Ao ativar, vale já na próxima requisição do Codex, sem reiniciar; os marcadores de fase são adicionados apenas a requisições /v1/responses com origem Codex, e outros clientes e /v1/chat/completions não são afetados.", "默认关闭。改动立即生效,不用重启;关闭期间的跨源请求会被预检拦下。": "Desativado por padrão. As mudanças valem na hora, sem reiniciar; enquanto estiver desativado, as requisições de outra origem são barradas no preflight.", "默认关闭窗口不会退出程序,而是把窗口缩到系统托盘,转发继续在后台运行(OpenAI 客户端不受影响);要彻底退出程序,请在托盘图标上右键选「退出」。关掉这个开关后,点关闭按钮即退出程序、转发随之中断。「开机自动启动」开启后,登录系统时会自动启动本程序(通常直接驻留托盘),不需要手动打开。": "Por padrão, fechar a janela não encerra o programa: ela é recolhida para a bandeja do sistema e o encaminhamento continua rodando em segundo plano (clientes OpenAI não são afetados). Para encerrar o programa de vez, clique com o botão direito no ícone da bandeja e escolha “Sair”. Com este switch desativado, clicar no botão de fechar encerra o programa e o encaminhamento é interrompido. Com “Iniciar com o sistema” ativado, o programa inicia automaticamente ao entrar no sistema (normalmente já na bandeja), sem precisar abri-lo manualmente.", "默认应用全部提供商(包含之后新增的插件与自定义提供商)。指定范围后,未选中的提供商不做指纹脱敏;清空选择自动回到全部提供商。": "Aplica-se a todos os provedores por padrão, incluindo plugins e provedores personalizados adicionados depois. Ao selecionar um escopo, os outros provedores não são mascarados. Limpar a seleção volta a todos os provedores.", "默认开启。只改 role 字段本身,消息内容与顺序都不动;本项只改发给上游的副本,客户端看到的响应内容不变。": "Ativado por padrão. Só o campo role muda — conteúdo e ordem das mensagens ficam intactos; isto reescreve apenas a cópia enviada ao upstream, e o que o cliente vê nunca muda.", "默认开启。只改发给上游的副本,客户端看到的响应与原图都不变;请求日志里保存的是客户端发来的原图,不是压缩后的版本。只作用在对话链路,生图 / 图片编辑不经过这里。改完对下一个请求立即生效,不用重启。": "Ativado por padrão. Apenas a cópia enviada ao provedor é alterada; a resposta e a imagem original vista pelo cliente permanecem iguais, e o log de requisições guarda a imagem original do cliente, não a versão comprimida. Aplica-se somente ao caminho de chat — geração e edição de imagens não passam por aqui. As alterações valem a partir da próxima requisição, sem reiniciar.", "默认开启。命中明细会记进请求日志的「敏」标签(悬停可看命中了哪几条规则)。本项只改发给上游的副本,客户端看到的响应内容不变。": "Ativado por padrão. Os detalhes das ocorrências são registrados na tag “PS” dos logs de requisições (passe o mouse para ver quais regras foram acionadas). Esta opção altera apenas a cópia enviada ao upstream; o conteúdo da resposta que o cliente vê não muda.", "默认开启并应用全部提供商。编辑词表或应用范围后点击「保存设置」,下一次请求立即生效,不用重启。命中明细仍记进请求日志的「敏」标签。": "Ativado para todos os provedores por padrão. Edite as regras ou o escopo e clique em Salvar configurações; a próxima requisição usa as alterações sem reiniciar. As correspondências continuam registradas na etiqueta de mascaramento do log.", "默认网关只监听 127.0.0.1,只有本机能访问。开启后网关改听所有网卡,同一局域网内的设备可以把 API 地址指向本机 IP 一起使用。出于安全考虑,开启前必须先注册一个面板管理员:管理接口从此要求管理员会话或网关 Key,模型额度不会对局域网裸奔;一把启用的网关 Key 都没有时,转发接口也会拒绝服务,直到创建第一把。改动需要重启应用生效。「同时开放网页管理面板」把管理界面也出给局域网(其他设备的浏览器打开本机 IP 即可管理),默认关闭 —— 桌面端的面板仍只由本程序自己出。": "Por padrão, o gateway escuta apenas 127.0.0.1 e só esta máquina tem acesso. Ao ativar, o gateway passa a escutar todas as interfaces de rede e dispositivos na mesma LAN podem usar a API apontando o endereço para o IP desta máquina. Por segurança, antes de ativar é obrigatório registrar um administrador do painel: a interface de administração passa a exigir sessão de administrador ou chave do gateway, e a cota dos modelos não fica exposta na LAN; quando não há nenhuma chave do gateway ativa, a interface de encaminhamento também recusa atendimento até que a primeira seja criada. A mudança exige reiniciar o aplicativo para ter efeito. “Também abrir o painel de administração web” disponibiliza a interface de administração na LAN (o navegador de outros dispositivos abre o IP desta máquina para gerenciar); desativado por padrão — o painel do desktop continua sendo servido apenas pelo próprio programa.", "({n} 个整组隐藏)": " ({n} grupos ocultos)", "({n} 行)": " ({n} linhas)", "({n} 项被覆盖)": " ({n} itens sobrescritos)", "(全部为默认值)": " (todos com valores padrão)", "(官方原文)": " (texto oficial)", "(已存一份正文,{n} 行;切成「替换 / 追加」后生效)": " (há um texto salvo, {n} linhas; passa a valer ao mudar para “Substituir / Anexar”)", "(已改)": " (alterado)", "(已注册过会跳过这一步,直接生效)。": " (se já estiver registrado, esta etapa é ignorada e a ativação é imediata).", "(当前生效的就是这一份,{n} 行)": " (esta é a versão em vigor, {n} linhas)", "(文件:{path})": " (arquivo: {path})", "(未生效)": "(sem efeito)", ",{items}": ", {items}", ",{time}": ", {time}", ",以及代理池 / 订阅里可能存在的代理凭据。请使用只有你能访问的私有存储;账号密钥由同步密码单独加密,泄露存储本身不等于泄露账号。": ", além de eventuais credenciais de proxy no pool de proxies / assinaturas. Use armazenamento privado acessível apenas por você; a chave da conta é criptografada separadamente com a senha de sincronização, então vazar o armazenamento não expõe suas contas.", ",包括恢复后需要重新登录管理面板。": " pelo arquivo de backup selecionado, inclusive o novo login no painel após a restauração.", ",可直接用于登录。请妥善保管,不要外传或上传到公共位置。": ", e pode ser usado diretamente para login. Guarde-o com cuidado; não o compartilhe nem o envie para locais públicos.", ",文件里后续的改动在清空这里之前不再生效": ", e alterações posteriores no arquivo deixam de valer até que este campo seja limpo", ",替换前的数据已备份为 {name}": ", os dados pré-substituição foram backupados como {name}", ",自定义提供商新增 {added} 个、更新 {updated} 个": ", provedores personalizados: {added} adicionados, {updated} atualizados", ";开关关闭时词表不执行": "; as regras não são executadas quando o mascaramento está desativado", ";网页管理面板已一并开放(浏览器打开同一地址)": "; o painel de administração web também está aberto (acesse pelo mesmo endereço no navegador)", "AI 调整后的 JSON({n} 字符)": "JSON ajustado pela IA ({n} caracteres)", "CodeArts 的账号余额还剩多少?": "Quanto crédito ainda resta na conta CodeArts?", "JSON 文件会以文本发送给当前对话模型,其中的凭证也会保存在这条会话里。": "Arquivos JSON são enviados como texto ao modelo atual da conversa, e as credenciais neles também ficam salvas nesta conversa.", "[已省略 {n} 字符的 JSON]": "[JSON de {n} caracteres omitido]", "attachment 与 content 只能给一个": "Informe apenas attachment ou content", "section 只能是 models / mappings / both": "section deve ser models / mappings / both", "{n} 个候选,{m} 个跳过": "{n} candidatos, {m} ignorados", "{n} 条映射": "{n} mapeamentos", "{n} 条请求日志": "{n} registros de requisições", "{n} 条运行日志": "{n} registros de execução", "{requests} 次请求,{tokens} Token": "{requests} requisições, {tokens} tokens", "「{name}」是空文件。": "O arquivo \"{name}\" está vazio.", "「{name}」看起来是二进制文件,助手只接收 JSON 文本。": "O arquivo \"{name}\" parece ser binário; o assistente aceita apenas texto JSON.", "「{name}」超过 {n} MB,请换一个小一点的 JSON 文件。": "O arquivo \"{name}\" tem mais de {n} MB. Escolha um JSON menor.", "「{name}」超过 {n} MB,请换一个小一点的 JSON 文件,或去添加账号页导入。": "O arquivo \"{name}\" tem mais de {n} MB. Escolha um JSON menor ou importe pela página Adicionar conta.", "一次最多 {n} 个文件。": "No máximo {n} arquivos por vez.", "一次最多 {n} 个文件,多出的没有添加。": "No máximo {n} arquivos por vez; os excedentes não foram adicionados.", "一次最多 {n} 张图片。": "No máximo {n} imagens por vez.", "一次最多 {n} 张图片,多出的没有添加。": "No máximo {n} imagens por vez; as imagens adicionais não foram incluídas.", "下载图片": "Baixar imagem", "今天用了多少 Token?": "Quantos tokens usei hoje?", "会话响应不完整": "Resposta de sessão incompleta", "保存位置": "Local de salvamento", "保存图片失败:{message}": "Falha ao salvar imagem: {message}", "保存思考等级失败:{message}": "Falha ao salvar o nível de raciocínio: {message}", "修改上传或已生成的图片,支持多张参考图。": "Edita imagens enviadas ou geradas usando várias referências.", "修改文件": "Modificar arquivos", "修改模型能力": "Editar capacidades do modelo", "凭证会保存到网关;同一提供商下同一身份的账号会更新原凭证。文件若是整库导出的 accounts 数组,会按文件里的账号批量导入。": "As credenciais serão salvas no gateway. Uma conta com a mesma identidade no mesmo provedor terá as credenciais atualizadas. Se o arquivo for uma exportação completa com um array accounts, todas as contas dele serão importadas.", "分叉": "Criar ramificação", "分叉会话失败:{message}": "Falha ao ramificar a conversa: {message}", "分支": "Ramificação", "删除会话失败:{message}": "Falha ao excluir a sessão: {message}", "删除消息": "Excluir mensagem", "删除这条对话": "Excluir esta conversa", "删除这条对话?": "Excluir esta conversa?", "删除这条消息?模型消息关联的工具结果也会一并删除。": "Excluir esta mensagem? Os resultados de ferramentas associados à mensagem do modelo também serão excluídos.", "助手设置没读出来,暂时存不了对话模型 —— 看输入框下方的提示。": "As configurações do assistente não puderam ser lidas, então o modelo de chat ainda não pode ser salvo. Veja a dica abaixo da caixa de entrada.", "助手设置没读出来,暂时存不了思考等级 —— 看输入框下方的提示。": "Não foi possível carregar as configurações do assistente, então o nível de raciocínio não pode ser salvo agora — veja a dica abaixo da caixa de entrada.", "助手设置没读出来,现在还不能发消息 —— 看输入框下方的提示。": "As configurações do assistente não puderam ser lidas, então ainda não é possível enviar mensagens. Veja a dica abaixo da caixa de entrada.", "单张参考图不能超过 10 MiB": "Cada imagem de referência pode ter no máximo 10 MiB", "历史会话": "Histórico de sessões", "历史对话": "Histórico de conversas", "原始 ID 的默认绑定不能删除,请关闭它的开关": "O vínculo padrão do ID original não pode ser excluído; desative-o pelo interruptor", "原始报文或对话正文已省略": "Payload original ou conteúdo da conversa omitido", "参数 {name} 只能是:{values}": "O parâmetro {name} deve ser um destes valores: {values}", "参数 {name} 必须是不小于 {min} 的整数": "O parâmetro {name} deve ser um inteiro maior ou igual a {min}", "参数 {name} 必须是不超过 {max} 个字符的字符串": "O parâmetro {name} deve ser uma string com no máximo {max} caracteres", "参数 {name} 必须是布尔值": "O parâmetro {name} deve ser booleano", "参数 {name} 必须是有效日期(YYYY-MM-DD)": "O parâmetro {name} deve ser uma data válida (YYYY-MM-DD)", "参数 {name} 必须是毫秒时间戳": "O parâmetro {name} deve ser um timestamp em milissegundos", "参数不完整(需要 provider / id / alias / action)": "Parâmetros incompletos (provider / id / alias / action obrigatórios)", "参考图仅支持 PNG、JPEG、WebP": "Imagens de referência devem ser PNG, JPEG ou WebP", "参考图会交给图片编辑工具,当前对话模型不会读取图片。": "As referências são enviadas à ferramenta de edição; o modelo de conversa atual não as lê.", "参考图片列表不能为空": "A lista de imagens de referência não pode estar vazia", "参考图片编号不存在": "O número da imagem de referência não existe", "参考图片请使用附件编号、已生成图片 ID 或 HTTP(S) 链接": "Use o número do anexo, o ID de uma imagem gerada ou um link HTTP(S) para imagens de referência", "发消息或做任务…(Enter 发送,Shift+Enter 换行,可粘贴图片或 JSON 文件)": "Envie uma mensagem ou tarefa… (Enter envia, Shift+Enter quebra linha; imagens e arquivos JSON podem ser colados)", "发起模型测试": "Executar teste de modelo", "受限": "Restrito", "变更前确认": "Confirmar antes de alterar", "只支持图片和 JSON 凭证文件(.json / .info)": "Somente imagens e arquivos de credencial JSON (.json / .info) são suportados", "只支持图片和 JSON 凭证文件(.json / .info);「{name}」已跳过。": "Somente imagens e arquivos de credencial JSON (.json / .info) são suportados; \"{name}\" foi ignorado.", "各账号余额还剩多少?": "Quanto de saldo resta em cada conta?", "启用 / 禁用模型": "Habilitar / desabilitar modelos", "启用 / 禁用账号": "Habilitar / desabilitar contas", "命令": "Comando", "哪些模型在多家重复了?": "Quais modelos estão duplicados entre provedores?", "图片 {n}": "Imagem {n}", "图片工具包含不支持的参数:{name}": "A ferramenta de imagens recebeu um parâmetro não suportado: {name}", "图片工具没有返回可显示的图片": "A ferramenta não retornou imagens que possam ser exibidas", "图片工具缺少当前会话": "A ferramenta de imagens não tem uma sessão atual", "图片工具需要提示词和图片模型": "A ferramenta de imagens exige um prompt e um modelo de imagens", "完全访问": "Acesso total", "实时余额查询会请求上游,并可能触发已配置的自动禁用规则。": "Consultas de saldo em tempo real enviam requisições ao upstream e podem acionar as regras configuradas de desativação automática.", "对指定模型发一次真实请求,回报连通性与耗时。": "Envia uma requisição real ao modelo indicado e informa conectividade e latência.", "对话由网关转发到上游模型,用量计入请求日志": "A conversa é encaminhada ao modelo upstream pelo gateway; o uso é registrado no log de requisições", "导入账号文件": "Importar arquivo de conta", "将导入一个账号:": "Importar uma conta:", "就绪": "Pronto", "工具「{name}」未获授权,未执行。": "A ferramenta \"{name}\" não foi autorizada e não foi executada.", "工具调用已达本轮上限,已停止继续执行。": "O limite de chamadas de ferramentas deste turno foi atingido; a execução foi interrompida.", "已从这条消息分叉为新对话": "Uma nova conversa foi criada a partir desta mensagem", "已停止": "Interrompido", "已停止生成": "Geração interrompida", "已完成 {n} 项改动": "{n} alterações concluídas", "已完成 {n} 项,剩余 {m} 项未执行": "{n} itens concluídos; os {m} restantes não foram executados", "已导入账号「{name}」": "Conta \"{name}\" importada", "已生成 {n} 张图片": "{n} imagens geradas", "已调用": "Chamado", "开关模型的对外可用性,不改其它属性。": "Alterna a disponibilidade externa do modelo sem alterar outros atributos.", "开始日期不能晚于结束日期": "A data inicial não pode ser posterior à data final", "开始时间必须早于结束时间": "O horário inicial deve ser anterior ao horário final", "当前安装包未包含原生图片保存能力,请更新应用。": "Este pacote do aplicativo não inclui salvamento nativo de imagens. Atualize o aplicativo.", "当前客户端缺少读取接口:{name}": "Este cliente não possui a interface de leitura: {name}", "当前对话没有可读取的文本附件:请先把 JSON 文件发给助手": "Não há anexo de texto legível nesta conversa. Envie o arquivo JSON ao assistente primeiro.", "思考过程": "Raciocínio", "思考:跟随模型": "Raciocínio: seguir modelo", "成功率": "Taxa de sucesso", "打开会话失败:{message}": "Falha ao abrir a sessão: {message}", "执行中": "Em execução", "执行结果": "Resultado da operação", "批量导入:新增 {added}、更新 {updated}、失败 {failed}": "Importação em lote: {added} adicionadas, {updated} atualizadas, {failed} com falha", "把凭证文件交给对应提供商解析并落库;同身份账号会更新凭证。": "Entrega o arquivo de credencial ao provedor correspondente para analisar e salvar; uma conta com a mesma identidade terá as credenciais atualizadas.", "把重复的模型加上家名前缀区分开": "Prefixar modelos duplicados com o nome do provedor para diferenciá-los", "拒绝": "Negar", "按提供商名称查询模型、能力、来源与映射,支持自定义提供商。": "Consulta modelos, capacidades, fontes e mapeamentos pelo nome do provedor, incluindo provedores personalizados.", "按提示词生成图片。": "Gerar imagens a partir do prompt.", "按提示词编辑参考图片。": "Editar imagens de referência conforme o prompt.", "按文件内容判断": "Inferir pelo conteúdo do arquivo", "按文本生成图片,结果直接显示在对话中。": "Gera imagens a partir de texto e as exibe na conversa.", "提供商 id「{provider}」格式不正确": "ID de provedor inválido: \"{provider}\"", "提供商「{name}」匹配到多家,请使用提供商 ID:{list}": "O provedor \"{name}\" corresponde a várias entradas. Use um ID de provedor: {list}", "改上下文窗口 / 最大输出 Token / 工具调用等能力位。": "Edita flags de capacidade como janela de contexto, máximo de tokens de saída e chamadas de ferramentas.", "改某一家的整组顺位(先试哪一家)。": "Reordena o grupo inteiro de um provedor (qual deles é tentado primeiro).", "改账号在全局队列里的名次,决定主备与切换顺序。": "Altera a posição da conta na fila global, definindo titular/reserva e ordem de failover.", "文件内容是空的": "O conteúdo do arquivo está vazio", "文件过大({n} 字符):请先用 read_attachment 分段查看,或改用添加账号页导入": "Arquivo muito grande ({n} caracteres). Leia em partes com read_attachment ou importe pela página Adicionar conta", "新增 / 删除映射名,支持批量加前缀与同名合并到多家。": "Adiciona/remove nomes de mapeamento, com prefixação em lote e fusão de um mesmo nome em vários provedores.", "新建会话": "Nova sessão", "无法判断这些凭证属于哪家提供商。请先问用户,或用 provider 指定(常见 id:{list})": "Não foi possível identificar o provedor destas credenciais. Pergunte ao usuário ou informe provider (ids comuns: {list})", "无法读取图片": "Não foi possível ler a imagem", "最高": "Máximo", "有什么可以帮你?可以问配置、查余额、让我改模型设置。": "Como posso ajudar? Pergunte sobre configuração, consulte saldos ou peça para eu mudar ajustes de modelo.", "未命名对话": "Conversa sem título", "未知的工具:{name}": "Ferramenta desconhecida: {name}", "权限模式": "Modo de permissão", "极低": "Mínimo", "查看 API Key 详情必须指定 API Key 身份": "Informe a identidade da API Key para ver seus detalhes", "查看图片": "Ver imagem", "查看模型候选账号、跳过原因和当前路由策略。": "Mostra contas candidatas, motivos de exclusão e a estratégia atual de roteamento do modelo.", "查询凭证、插件和定时任务等运行事件的脱敏摘要。": "Consulta resumos com dados sensíveis ocultos dos eventos de execução, incluindo credenciais, plugins e tarefas agendadas.", "查询生产请求的 Token 用量、成功率、排行和趋势。": "Consulta uso de tokens, taxa de sucesso, rankings e tendências das requisições de produção.", "查询用量报表": "Consultar relatório de uso", "查询请求日志": "Consultar logs de requisições", "查询请求状态、耗时、账号、错误与重试,不读取对话正文。": "Consulta estado, duração, contas, erros e novas tentativas sem ler o conteúdo das conversas.", "查询账号余额": "Consultar saldo da conta", "查询路由队列": "Inspecionar fila de roteamento", "查询运行日志": "Consultar logs de execução", "标题总结失败:{message}": "Falha ao gerar título: {message}", "标题总结提示词": "Prompt para geração de título", "标题总结模型": "Modelo para geração de título", "标题总结设置已保存": "Configurações de geração de título salvas", "模型「{model}」当前不在可用列表中,请重新选择;也可到「模型管理」或「插件」页检查是否已启用。": "O modelo \"{model}\" não está na lista de disponíveis. Escolha outro; você também pode verificar se ele está habilitado em Gerenciamento de modelos ou na página Plugins.", "模型名称": "Nome do modelo", "模型响应未完整结束,请重试;未执行其中的工具调用。": "A resposta do modelo não terminou completamente. Tente novamente; nenhuma chamada de ferramenta dessa resposta foi executada.", "模型对话": "Conversa com modelo", "模型没有返回内容": "O modelo não retornou conteúdo", "正在思考…": "Pensando…", "正在执行": "Trabalhando", "正在生成,点右侧按钮可停止": "Gerando — toque no botão à direita para parar", "正在读取可用模型…": "Carregando modelos disponíveis…", "正在读取图片…": "Carregando imagem…", "没有可用的模型": "Nenhum modelo disponível", "没有已启用的模型,请先在「模型管理」里启用": "Nenhum modelo habilitado. Habilite algum em Gerenciamento de modelos primeiro.", "没有找到提供商「{name}」,请先不填 provider 查询,或用 keyword 搜索": "O provedor \"{name}\" não foi encontrado. Consulte primeiro sem provider ou pesquise com keyword", "没有找到附件「{ref}」:编号从 1 开始,也可以用文件名": "Anexo \"{ref}\" não encontrado. A numeração começa em 1; também é possível usar o nome do arquivo", "没有提供要修改的项目": "Nenhum item a modificar foi informado", "测一下当前最快的模型通不通": "Testar se o modelo mais rápido no momento responde", "浏览": "Procurar", "消息操作": "Ações da mensagem", "深度推理": "Raciocínio profundo", "添加图片": "Adicionar imagens", "添加图片或 JSON 文件(也可粘贴或拖入)": "Adicionar imagens ou arquivos JSON (também é possível colar ou arrastar)", "添加图片或文件": "Adicionar imagem ou arquivo", "清空全部": "Limpar tudo", "清空历史失败:{message}": "Falha ao limpar o histórico: {message}", "现在有哪些账号被限流?": "Quais contas estão com limite de taxa agora?", "生成图片": "Gerar imagens", "生成的图片": "Imagem gerada", "用户目录": "Pasta do usuário", "看看哪些模型在多家重复了": "Ver quais modelos se repetem em vários provedores", "禁用会把账号移出转发队列,线路可能因此断供。": "Desabilitar remove a conta da fila de encaminhamento; a rota pode ficar sem fornecimento.", "移除图片 {n}": "Remover imagem {n}", "移除文件「{name}」": "Remover arquivo \"{name}\"", "终端": "Terminal", "编辑图片": "Editar imagens", "编辑消息": "Editar mensagem", "聊天附件 {ref}": "Anexo da conversa {ref}", "自定义提供商模块未就绪(请刷新界面后重试)": "O módulo de provedores personalizados não está pronto (atualize a interface e tente novamente)", "获取模型列表": "Listar modelos", "获取账号列表": "Listar contas", "获取账号详情": "Consultar detalhes da conta", "计划": "Plano", "设置模型映射 ID": "Definir ID de mapeamento do modelo", "请先上传参考图片,或先生成一张图片": "Envie uma imagem de referência ou gere uma imagem primeiro", "请提供 attachment 或 content": "Informe attachment ou content", "读取 {name}": "Ler {name}", "读取 {name}({from}-{to} 字符)": "Ler {name} ({from}-{to} caracteres)", "读取凭证状态、限流、并发、代理和限制器的本地快照。": "Lê um retrato local das credenciais, limites de taxa, conexões, proxy e limitadores.", "读取历史会话失败:{message}": "Falha ao carregar o histórico de conversas: {message}", "读取响应不完整:{name}": "Resposta incompleta: {name}", "读取图片失败": "Falha ao ler a imagem", "读取图片失败:{message}": "Falha ao ler a imagem: {message}", "读取文件失败:{message}": "Falha ao ler o arquivo: {message}", "读取模型清单失败": "Falha ao carregar a lista de modelos", "读取聊天里上传的 JSON / .info 文件,支持分页。": "Lê arquivos JSON / .info enviados na conversa, com paginação.", "读取账号、启用状态、优先级与隐藏原因,支持筛选和分页。": "Lê contas, estados de ativação, prioridades e motivos de ocultação, com filtros e paginação.", "读取附件": "Ler anexo", "读各提供商的模型清单、映射名与启用状态。": "Lê a lista de modelos, os nomes de mapeamento e o estado de cada provedor.", "读各账号的额度 / 剩余用量。": "Lê a cota e o uso restante de cada conta.", "调整提供商顺位": "Ajustar ordem dos provedores", "调整账号优先级": "Ajustar prioridade da conta", "账号「{name}」匹配到多条记录,请使用账号 ID:{ids}": "A conta \"{name}\" corresponde a vários registros. Use um ID de conta: {ids}", "账号额度": "Cota da conta", "跟随对话模型": "Seguir modelo da conversa", "跟随模型(不指定)": "Seguir modelo (não especificado)", "跟随网关设置": "Usar a configuração do gateway", "返回": "Voltar", "还没有历史对话": "Ainda não há histórico de conversas", "还没有配置默认模型": "Nenhum modelo padrão configurado ainda", "这一版网关还没有 AI 助手接口(HTTP 404),请升级网关后重试。": "Esta versão do gateway não tem a API do assistente de IA (HTTP 404). Atualize o gateway e tente novamente.", "这一版网关还没有 AI 助手接口(HTTP 404):后端还是旧的,重新编译 / 重启客户端后再试。{message}": "Esta versão do gateway ainda não tem a API do assistente de IA (HTTP 404): o backend está desatualizado. Recompile / reinicie o cliente e tente de novo. {message}", "这一轮来回已达 {n} 次上限,我先停下等你指示(可以换个说法,或拆成几步让我做)。": "Este turno atingiu o limite de {n} idas e voltas, então parei para aguardar sua instrução (reformule, ou divida em algumas etapas).", "这条会话没能存进历史:{message}": "Esta conversa não pôde ser salva no histórico: {message}", "这次工具调用没有保存完成结果,历史回放不会重新执行。": "Nenhum resultado concluído foi salvo para esta chamada. A reprodução do histórico não a executará novamente.", "这里只改本次会话用的模型,不会改网关里保存的默认值。": "Isto muda apenas o modelo desta sessão; o padrão salvo no gateway não é alterado.", "连接网关失败({base}):{message}": "Falha ao conectar ao gateway ({base}): {message}", "选择 API Key": "Selecionar API Key", "选择 API Key…": "Selecionar API Key…", "选择对话模型": "Escolher modelo de conversa", "配置响应不完整": "Resposta de configuração incompleta", "问点什么…": "Pergunte alguma coisa…", "项目": "Projeto", "额度窗口": "Janela de cota", "首轮回答完成后自动总结;这会调用所选模型并消耗额度。": "Gera um título após a primeira resposta. Isso chama o modelo selecionado e consome cota.", " · 检查于 {time}": " · verificado em {time}", " 已发布(当前 {current}),更新日志如下:": " lançada (atual: {current}); notas de versão abaixo:", "Agent2API 一直在更新,是因为有人在背后持续投入。如果它帮到了你,欢迎请作者喝杯咖啡。": "O Agent2API continua sendo atualizado porque alguém segue investindo tempo nele nos bastidores. Se ele ajudou você, considere oferecer um café ao autor.", "GitHub Token 未填写": "Token do GitHub não preenchido", "GitHub 令牌": "Token do GitHub", "GitHub 加速前缀": "Prefixo do acelerador GitHub", "GitHub 接口限流中,请在 {seconds} 秒后重试": "A API do GitHub atingiu o limite de solicitações. Tente novamente em {seconds} segundos.", "GitHub 接口限流中,请在「插件设置」的「GitHub 令牌」中填写凭证,以提高请求限额。": "A API do GitHub atingiu o limite de solicitações. Insira suas credenciais em Token do GitHub, nas Configurações dos plugins, para aumentar o limite.", "GitHub 接口限流中,请在「更新设置」的「GitHub 令牌」中填写凭证,以提高请求限额。": "A API do GitHub atingiu o limite de solicitações. Insira suas credenciais em Token do GitHub, nas Configurações de atualização, para aumentar o limite.", "GitHub 接口限流中,请稍后重试": "A API do GitHub atingiu o limite de solicitações. Tente novamente mais tarde.", "GitHub 源「{source}」限流,{seconds} 秒后可重试(上游未提供恢复时间)": "A fonte GitHub “{source}” atingiu o limite. Tente em {seconds} segundos (sem horário de liberação informado).", "GitHub 源「{source}」限流,请在 {seconds} 秒后重试": "A fonte GitHub “{source}” atingiu o limite. Tente novamente em {seconds} segundos.", "GitHub 访问方式": "Modo de acesso ao GitHub", "GitHub 访问设置已保存": "Configurações de acesso ao GitHub salvas", "QQ 群": "Grupo do QQ", "QQ 群 / Telegram 都在这里": "Grupos do QQ e Telegram estão todos aqui", "QQ 群 {n}": "Grupo do QQ {n}", "Telegram 群": "Grupo do Telegram", "Windows 服务一键更新会核验官方更新包,再由独立升级进程停止服务、备份替换并重新启动。账号与配置保留,确认新版运行后页面自动刷新。": "A atualização verifica o pacote oficial e um processo independente para o serviço, faz backup, substitui os arquivos e o inicia novamente. Contas e configurações são preservadas. A página é recarregada após confirmar a nova versão em execução.", "Windows 服务升级权限或目录保护不符合要求。请以管理员身份重跑新版 install-service.ps1;自定义服务账号或外部托管环境请按原方式升级。": "As permissões do serviço Windows ou a proteção dos diretórios não atendem aos requisitos. Execute o novo install-service.ps1 como administrador. Contas de serviço personalizadas e ambientes gerenciados externamente devem usar seu procedimento habitual.", "Windows 服务部署需要手动升级。请解压新版服务端包,以管理员身份运行 install-service.ps1;账号与配置会保留。": "Serviços do Windows exigem atualização manual. Extraia o novo pacote do servidor e execute install-service.ps1 com privilégios administrativos. Contas e configurações serão preservadas.", "beta 版可能不稳定。两项同时开启时,按版本号选择最高版本,不会降级;安装到正式版或 beta 版后仍保留关注选择。": "Versões beta podem ser instáveis. Com os dois canais ativados, a versão mais alta é selecionada sem downgrade. As escolhas de canal são mantidas após instalar uma versão estável ou beta.", "systemd 一键更新由受限升级程序完成:下载、核验官方校验值、备份替换、重启并确认版本。网关保持普通账号运行,账号与配置不变。": "Um programa restrito cuida da atualização systemd: download, validação oficial, backup, substituição, reinício e confirmação da versão. O gateway continua com uma conta sem privilégios; contas e configurações são preservadas.", "{message};其他线路可重新检查": "{message} Outras rotas podem ser verificadas novamente.", "{ms} 毫秒": "{ms} ms", "{seconds} 秒后可重试": "Tente em {seconds} segundos", "{version} 已就位,服务正在重启,页面会在恢复后自动刷新…({seconds}s)": "{version} está no lugar. O serviço está reiniciando; a página será atualizada automaticamente quando ele voltar… ({seconds} s)", "{version}(预发布)": "{version} (pré-lançamento)", "✅ GitHub 令牌已保存(加密存储,界面不再显示)": "✅ Token do GitHub salvo (armazenado criptografado, não será mais exibido na interface)", "✅ 已加入 beta 版,之后的检查会包含 beta 版": "✅ Você entrou no canal beta; as próximas verificações incluirão versões beta", "✅ 已清除界面保存的 GitHub 令牌(环境变量若配置过则继续生效)": "✅ Token do GitHub salvo na interface removido (se a variável de ambiente estiver configurada, ela continua valendo)", "✅ 已退出 beta 版,之后的检查只看正式版": "✅ Você saiu do canal beta; as próximas verificações veem apenas versões estáveis", "✅ 数据升级完成({n} 项)": "✅ Migração de dados concluída ({n} itens)", "✅ 更新出网已切换为 {label}": "✅ Conexão de saída das atualizações alterada para {label}", "✅ 更新出网已切换为直连": "✅ Conexão de saída das atualizações alterada para conexão direta", "✅ 自动检查更新已保存": "✅ Verificação automática de atualizações salva", "一键更新": "Atualizar com um clique", "一键更新入口不可用,请刷新页面后重试。": "A atualização com um clique está indisponível. Recarregue a página e tente novamente.", "一键更新服务端?": "Atualizar o servidor agora?", "一键更新组件不可用或权限配置不正确。请使用新版安装包执行 sudo bash install.sh --upgrade 修复。": "O componente de atualização está indisponível ou tem permissões incorretas. Execute sudo bash install.sh --upgrade a partir do novo pacote para repará-lo.", "上次 GitHub 限流的等待时间已结束,可重新检查": "A espera do limite anterior do GitHub terminou. Você pode verificar novamente.", "上次结果:{state}": "Resultado anterior: {state}", "上游未提供恢复时间,按 GitHub 建议短暂等待": "Sem horário informado; breve espera conforme recomendado pelo GitHub", "下载中": "Baixando", "下载失败": "Falha no download", "下载失败:{error}": "Falha no download: {error}", "下载已取消,可重新点击「下载并安装」。": "Download cancelado; clique em “Baixar e instalar” para tentar novamente.", "下载已取消,可重新点击「下载并更新」。": "Download cancelado; clique em “Baixar e atualizar” para tentar de novo.", "下载并安装": "Baixar e instalar", "下载并更新": "Baixar e atualizar", "下载服务端包": "Baixar pacote do servidor", "不支持此类请求": "Tipo de solicitação não suportado", "与 gh-proxy.com 属于同一服务的备用线路。": "Rota alternativa do mesmo serviço que gh-proxy.com.", "与网关的软件更新和插件共用设置;APK 下载由手机联网,GitHub 令牌不会发送给加速站。": "Compartilha configurações com atualizações e plugins do gateway. O celular baixa o APK; tokens do GitHub nunca são enviados ao acelerador.", "与软件更新共用出网代理和 GitHub 凭证,修改任意一处都会同步生效。": "Compartilha proxy de saída e credenciais do GitHub com a atualização do aplicativo. Alterações em qualquer lugar valem para ambos.", "个人开发并开源维护,免费使用,也不会收集你的账号数据。如果它帮到了你,欢迎到项目仓库点个 Star 支持一下。": "de forma independente, com uso gratuito, e não coleta os dados da sua conta. Se ela te ajudou, deixe uma Star no repositório do projeto para apoiar.", "仅 beta 版": "Somente beta", "仅官方源": "Somente fonte oficial", "仅插件索引和文件下载,不支持版本查询": "Somente índices de plugins e downloads; sem consultas de versões", "仅正式版": "Somente estáveis", "仓库暂无发布版本。{at}": "O repositório ainda não tem versões publicadas. {at}", "代理列表读取失败": "Falha ao ler a lista de proxies", "令牌已生效,但写入磁盘失败(重启后会丢失)": "O token está ativo, mas não foi possível gravar no disco (será perdido após reiniciar)", "以上状态来自网关;APK 下载会由手机按本机网络重新选择通道。": "Os resultados acima vêm do gateway. O celular seleciona novamente a rota para o APK usando sua própria rede.", "优先使用加速源,访问失败后回退官方源;不会绕过 GitHub 限流冷却。": "Usa o acelerador primeiro e recorre à fonte oficial em caso de falha. Os períodos de espera do GitHub são respeitados.", "优先加速源": "Acelerador preferido", "优先访问官方源,连接失败后尝试加速源;短期记住成功的源,定期恢复官方优先。": "Tenta a fonte oficial primeiro e o acelerador se a conexão falhar. Lembra temporariamente a fonte que funcionou e volta periodicamente a priorizar a oficial.", "允许本机自动检查": "Permitir verificação automática neste dispositivo", "先使用指定加速源,失败后尝试其他已启用的加速源,最后回退官方源。": "Tenta primeiro o acelerador escolhido, depois os demais ativados e, por último, a fonte oficial.", "关于作者": "Sobre o autor", "关注 beta 版更新": "Receber atualizações beta", "关注正式版更新": "Receber atualizações estáveis", "出网线路与 GitHub 令牌设置": "Configurações de conexão de saída e token do GitHub", "出网线路已切换,但写入磁盘失败(重启后会恢复原线路)": "A conexão de saída foi alterada, mas não foi possível gravar no disco (a conexão original será restaurada após reiniciar)", "分别探测版本查询、插件索引和文件下载,选择最快返回有效内容的源;成功线路短期复用,失败自动切换。": "Verifica consultas de versões, índices de plugins e downloads separadamente. Usa a primeira resposta válida, reutiliza a rota por um curto período e alterna em caso de falha.", "分钟({min} ~ {max})": "minutos ({min} ~ {max})", "到 GitHub 发布页下载": "Baixar da página de release do GitHub", "到点自动向 GitHub 查询新版本,查到就走「检测到更新」弹窗;关闭后「检查更新」按钮仍可手动触发": "No horário definido, consulta automaticamente o GitHub em busca de novas versões e, se encontrar, exibe o diálogo “Atualização disponível”. Se desativado, o botão “Verificar atualizações” continua funcionando manualmente", "加入 beta 版": "Entrar no canal beta", "加入交流群": "Entrar na comunidade", "加速源优先": "Acelerador primeiro", "单独设置": "Configurar separadamente", "即将满员": "Quase lotado", "即将满员,请优先加3群、4群": "Quase lotado — prefira o grupo 3 ou 4", "去更新": "Atualizar", "发布页上没有 {wanted} 这个文件": "A página de release não tem o arquivo {wanted}", "发布页上没有对应本机架构的服务端更新包": "A página de release não tem pacote de atualização do servidor para a arquitetura desta máquina", "发布页上的文件被更新源的访问方式过滤掉了,请检查「更新设置」里的 GitHub 访问方式": "Os arquivos da página de release foram filtrados pelo modo de acesso da fonte de atualização. Verifique o modo de acesso ao GitHub em Configurações de atualização.", "发现新版本 {latest}(当前 {current})。{at}": "Nova versão disponível: {latest} (atual: {current}). {at}", "发现新版本 {latest}(当前 {current})。{reason}{at}": "A versão {latest} está disponível (atual: {current}). {reason}{at}", "发现新版本 {latest}(当前 {current}),但该版本没有提供容器内更新包({reason});请在宿主机执行 docker compose pull && docker compose up -d 升级。{at}": "Nova versão {latest} encontrada (atual: {current}), mas esta versão não fornece pacote de atualização dentro do contêiner ({reason}). Atualize no host com docker compose pull && docker compose up -d.{at}", "发现新版本 {latest}(当前 {current}),但这一版没有提供本机安装包({reason});可到 GitHub 发布页手动下载。{at}": "Nova versão {latest} encontrada (atual: {current}), mas esta versão não fornece instalador para esta máquina ({reason}). Você pode baixá-lo manualmente na página de release do GitHub.{at}", "取消下载": "Cancelar download", "取消失败:{error}": "Falha ao cancelar: {error}", "只访问 GitHub 官方源,仍使用所选出网代理。": "Usa apenas a fonte oficial do GitHub, pelo proxy de saída selecionado.", "可安装": "Pronto para instalar", "启动失败": "Falha ao iniciar", "启动安装程序失败:{error}": "Falha ao iniciar o instalador: {error}", "启用加速源 {source}": "Ativar acelerador {source}", "在 GitHub 查看完整说明": "Ver as notas completas no GitHub", "在 QQ 里搜索群号即可加入。": "Pesquise o número do grupo no QQ para entrar.", "在宿主机执行 docker compose pull && docker compose up -d 即可升级。": "Execute docker compose pull && docker compose up -d no host para atualizar.", "在浏览器中打开": "Abrir no navegador", "在浏览器中打开 GitHub 发布页": "Abrir a página de releases no GitHub no navegador", "在浏览器中打开项目仓库,点 Star 支持作者": "Abrir o repositório do projeto no navegador e dar uma Star para apoiar o autor", "在默认浏览器中打开 GitHub 的令牌创建页(备注已预设,无需勾选任何权限,直接点 Generate token)": "Abrir a página de criação de token do GitHub no navegador padrão (a descrição já vem preenchida, não é preciso marcar nenhuma permissão; basta clicar em Generate token)", "填写后检查限额 60 → 5000 次/小时(创建令牌无需勾选任何权限)": "Após preencher, o limite de verificações passa de 60 → 5000 por hora (criar o token não exige marcar nenhuma permissão)", "填写支持 Raw、Release 和 GitHub API 的 HTTPS 加速站前缀,留空恢复默认。": "Informe um prefixo HTTPS que suporte Raw, Releases e a API do GitHub. Deixe vazio para restaurar o padrão.", "复制群号 {group}": "Copiar o número do grupo {group}", "安装中": "Instalando", "安装包": "Instalador", "安装包已下载完成,正在启动安装程序(需要管理员权限,会弹出 UAC 确认框)…": "Instalador baixado; iniciando o instalador (requer permissões de administrador, uma janela de confirmação do UAC será exibida)…", "安装包已下载完成,正在启动新的 AppImage…": "Instalador baixado; iniciando o novo AppImage…", "安装包已下载完成,正在打开系统安装器…": "Instalador baixado; abrindo o instalador do sistema…", "安装包已下载完成,正在挂载磁盘映像…": "Instalador baixado; montando a imagem de disco…", "安装包已就绪:{name}。点击「安装并重启」后会启动新的 AppImage;把它移动到你的应用目录并替换旧文件即完成升级(本程序会先退出以释放文件占用)。": "Instalador pronto: {name}. \"Instalar e reiniciar\" inicia o novo AppImage; mova-o para a pasta de aplicativos e substitua o arquivo antigo para concluir a atualização (este app é encerrado antes para liberar o arquivo).", "安装包已就绪:{name}。点击「安装并重启」后需要管理员权限,会弹出 UAC 确认框。": "Instalador pronto: {name}. Após clicar em “Instalar e reiniciar”, serão necessárias permissões de administrador e uma janela de confirmação do UAC será exibida.", "安装包已就绪:{name}。点击「打开安装包」后会交给系统安装器,按提示输入密码即可完成安装(本程序无需退出)。": "Instalador pronto: {name}. \"Abrir instalador\" entrega o arquivo ao instalador do sistema — informe sua senha quando solicitado (este app não precisa ser encerrado).", "安装包已就绪:{name}。点击「打开安装包」后会挂载磁盘映像,把应用拖进「应用程序」即可完成安装。": "Instalador pronto: {name}. Ao clicar em “Abrir instalador”, a imagem de disco será montada; arraste o aplicativo para “Aplicativos” para concluir a instalação.", "安装包已挂载,请在弹出的窗口里把应用拖进「应用程序」完成安装。安装完成后重新打开本程序即可。": "Instalador montado. Na janela exibida, arraste o aplicativo para “Aplicativos” para concluir a instalação; depois basta reabrir este programa.", "安装失败": "Falha na instalação", "安装失败:{error}": "Falha na instalação: {error}", "安装并重启": "Instalar e reiniciar", "安装程序已启动,本程序将退出以便完成覆盖安装。安装程序需要管理员权限,会弹出 UAC 确认框,请选择「是」。": "O instalador foi iniciado; este programa será encerrado para concluir a instalação por cima. O instalador requer permissões de administrador e exibirá uma janela de confirmação do UAC; escolha “Sim”.", "官方源": "Fonte oficial", "容器内更新:更新包从 GitHub 发布页下载,校验 sha256 后由面板替换容器内的程序与界面文件,再重启服务(容器由 restart 策略拉起,页面会自动刷新)。更新的是容器里的文件,compose 里的镜像标签不变 —— 之后执行 docker compose pull && up -d 会使用镜像里的版本。检查更新与下载的出网线路、GitHub 令牌都在「更新设置」里。": "Atualização dentro do contêiner: o pacote é baixado da página de releases do GitHub, verificado por sha256 e, em seguida, o painel substitui os arquivos do programa e da interface dentro do contêiner antes de reiniciar o serviço (o contêiner volta a subir pela política restart e a página é atualizada automaticamente). O que é atualizado são os arquivos dentro do contêiner — a tag da imagem no compose continua a mesma, então executar docker compose pull && up -d depois usa a versão da imagem. A conexão de saída e o token do GitHub usados para verificar e baixar ficam em “Configurações de atualização”.", "将更新至 {version}。下载和校验完成后会短暂停止服务、替换程序并自动重启;账号与配置会保留。确认后无需再次点击安装。": "Atualizar para {version}? Após o download e a validação, o serviço será brevemente interrompido, os arquivos serão substituídos e o serviço reiniciará automaticamente. Contas e configurações serão preservadas. Não será necessário clicar novamente para instalar.", "已加密存储在本地,不显示具体值;粘贴新令牌可覆盖": "Armazenado localmente de forma criptografada, sem exibir o valor; cole um novo token para substituí-lo", "已取消": "Cancelado", "已填写": "Preenchido", "已填写(粘贴新令牌可覆盖)": "Preenchido (cole um novo token para substituir)", "已打开系统安装器,请在它弹出的窗口里完成安装。安装完成后重新打开本程序即可。": "O instalador do sistema está aberto — conclua a instalação na janela dele e reabra este app depois.", "已是最新": "Já está na versão mais recente", "已更新至 {version},服务已恢复。": "Atualizado para {version}. O serviço foi restabelecido.", "已替换为 {version},正在重启服务…": "Substituído por {version}; reiniciando o serviço…", "已配置 GITHUB_TOKEN 环境变量,界面保存的令牌优先于它": "A variável de ambiente GITHUB_TOKEN está configurada; o token salvo na interface tem prioridade sobre ela", "开启后只更新到 beta 版(预发布),取版本最高的一个;beta 版可能不稳定。开启期间不会因为正式版发布而自动切回正式版 —— 想切回请关闭本开关。关闭后只更新到正式版,且不会降级到版本号更低的版本。": "Quando ativado, as atualizações vêm apenas de versões beta (pré-lançamento), sempre a de versão mais alta; versões beta podem ser instáveis. Enquanto estiver ativado, o lançamento de uma versão estável não faz você voltar automaticamente — desative este interruptor para voltar. Quando desativado, as atualizações vêm apenas de versões estáveis e nunca fazem downgrade para uma versão mais baixa.", "开始更新": "Iniciar atualização", "当前 Windows 服务尚未接入一键更新。请解压新版服务端包,以管理员身份运行一次 install-service.ps1,原有账号、目录、端口和配置会保留。": "A atualização com um clique ainda não foi configurada neste serviço Windows. Extraia o novo pacote do servidor e execute install-service.ps1 uma vez como administrador. Contas, diretórios, portas e configurações existentes serão preservados.", "当前下载通道:{source}": "Fonte de download: {source}", "当前为直接运行的服务端,请停止程序后替换服务端包,再重新启动。": "Este servidor é executado sem um gerenciador de serviços. Pare o programa, substitua os arquivos e inicie-o novamente.", "当前关注:{channels}": "Canais selecionados: {channels}", "当前安装尚未接入一键更新。请下载新版服务端包,执行一次 sudo bash install.sh --upgrade;之后即可在面板更新。": "A atualização com um clique ainda não foi instalada. Baixe o novo pacote do servidor e execute sudo bash install.sh --upgrade uma vez. Depois, poderá atualizar pelo painel.", "当前已是最新版本({current})。{at}": "Você já está na versão mais recente ({current}). {at}", "当前版本": "Versão atual", "当前系统或架构暂不支持面板自动安装,请查看发布页。": "A instalação automática não é suportada neste sistema ou arquitetura. Consulte a página de releases.", "当前线路不可用:{error};请重新选择代理或切回直连": "A conexão atual não está disponível: {error}; selecione outro proxy ou volte para a conexão direta", "当前网关仍使用旧版单源设置,升级网关后可管理多个加速源。": "Este gateway ainda usa a configuração antiga de fonte única. Atualize-o para gerenciar vários aceleradores.", "当前需要手动升级": "Atualização manual necessária", "当前:自动检查关闭": "Verificação automática desativada", "当前:自动检查开启,每 {n} 分钟": "Verificação automática ativada, a cada {n} minutos", "待重启": "Aguardando reinício", "待重新检查": "Requer nova verificação", "微信赞赏": "WeChat", "微信赞赏码": "Código de doação do WeChat", "打开 GitHub 令牌页面": "Abrir página de token do GitHub", "打开安装包": "Abrir instalador", "打开链接失败:{error}": "Falha ao abrir o link: {error}", "指定代理": "Proxy específico", "指定加速源优先": "Acelerador selecionado primeiro", "按上游返回时间": "Usando o horário informado pela fonte", "插件索引": "Índice de plugins", "插件默认跟随这里的更新通道、自动检查和间隔;可在插件设置中单独设置。": "Por padrão, os plugins seguem estes canais, verificação automática e intervalo. É possível configurá-los separadamente nas configurações dos plugins.", "支付宝": "Alipay", "支付宝收款码": "Código QR de pagamento do Alipay", "支持作者": "Apoiar o autor", "支持版本查询": "Suporta consultas de versões", "收藏项目": "Favoritar projeto", "数据升级失败:{error}(旧数据仍在原处,下次启动会自动重试)": "Falha na migração de dados: {error} (os dados antigos continuam no lugar; a próxima inicialização tentará novamente de forma automática)", "数据升级未全部完成(已导入 {n} 项,仍有数据待导入,下次启动会自动重试)": "A migração de dados não foi concluída (já importados {n} itens; ainda restam dados a importar e a próxima inicialização tentará novamente)", "数据升级:没有需要导入的旧数据": "Migração de dados: não há dados antigos para importar", "文件下载": "Download de arquivo", "新版本 ": "Nova versão ", "无法开始更新:{error}": "Não foi possível iniciar a atualização: {error}", "无法比较": "Não é possível comparar", "无法解密": "Não foi possível descriptografar", "无法读取更新信息": "Não foi possível ler as informações de atualização", "显示的是当前网络下的响应耗时,不代表长期稳定性或完整下载速度。未探测的源会在实际更新时检查。": "Os tempos refletem respostas na rede atual, não a estabilidade a longo prazo nem a velocidade do download completo. Fontes não verificadas serão avaliadas durante as atualizações.", "暂未确认服务恢复,请检查服务器状态后刷新页面;不会自动重复安装。": "A recuperação do serviço não foi confirmada. Verifique o servidor e recarregue a página. A instalação não será repetida automaticamente.", "更新任务已结束,但当前运行版本与目标不一致,请检查服务日志。": "A tarefa terminou, mas a versão em execução difere da esperada. Verifique os logs do serviço.", "更新出网代理": "Proxy de saída das atualizações", "更新包从 GitHub Release 获取。自动模式按实际请求选择可用通道,失败后换源;镜像安装包必须匹配官方校验值,取不到时仅使用原始源。加速源、代理和令牌在「更新设置」中配置,指定代理失效不会静默直连。": "As atualizações vêm do GitHub Releases. O modo automático seleciona fontes com solicitações reais e alterna em caso de falha. Instaladores espelhados devem corresponder ao checksum oficial; sem ele, apenas a fonte original é usada. Configure aceleradores, proxies e tokens em Configurações de atualização. Um proxy indisponível nunca muda silenciosamente para conexão direta.", "更新包从 GitHub Release 获取,下载后交给本平台安装器。GitHub 访问方式、加速前缀、出网代理和令牌在「更新设置」中配置。默认官方优先,连接失败后尝试加速源;镜像安装包必须匹配官方校验值,取不到时仅使用原始源。指定代理失效会明确报错,不会静默改走直连。": "Os pacotes vêm dos Releases do GitHub e são abertos no instalador da plataforma após o download. Configure o modo de acesso, prefixo do acelerador, proxy de saída e token em Configurações de atualização. A fonte oficial é priorizada por padrão; se a conexão falhar, tenta-se o acelerador. Instaladores espelhados devem corresponder ao checksum oficial; sem ele, usa-se apenas a fonte original. Um proxy selecionado indisponível gera um erro, sem alternar silenciosamente para conexão direta.", "更新包从 GitHub 发布页下载,下载完成后可直接启动安装程序并自动重启本程序。安装包会先校验来源域名与文件完整性。检查更新与下载安装包的出网线路、GitHub 令牌都在「更新设置」里:线路默认直连(直连失败时自动借 Clash Verge 的混合端口重试一次),选定指定出口后只走该出口;填写 GitHub 令牌可把检查限额从 60 次/小时提高到 5000 次/小时。": "O pacote de atualização é baixado da página de releases do GitHub; ao concluir o download, o instalador pode ser iniciado diretamente e este programa será reiniciado automaticamente. O instalador primeiro valida o domínio de origem e a integridade do arquivo. A conexão de saída e o token do GitHub usados para verificar atualizações e baixar o instalador ficam em “Configurações de atualização”: por padrão, a conexão é direta (se a conexão direta falhar, é feita automaticamente uma tentativa pela porta híbrida do Clash Verge) e, ao escolher uma saída específica, apenas ela é usada; preencher o token do GitHub eleva o limite de verificações de 60 para 5000 por hora.", "更新包已就绪:{name}。点「安装并重启」后,面板会校验并替换容器内的程序与界面文件,然后重启服务(页面会自动刷新)。": "Pacote de atualização pronto: {name}. Após clicar em “Instalar e reiniciar”, o painel valida e substitui os arquivos do programa e da interface dentro do contêiner e então reinicia o serviço (a página é atualizada automaticamente).", "更新失败": "Falha na atualização", "更新失败:{error}": "Falha na atualização: {error}", "更新完成": "Atualização concluída", "更新已应用到容器内,重启服务后生效。{at}": "A atualização foi aplicada dentro do contêiner e passa a valer após reiniciar o serviço.{at}", "更新已应用到容器内,重启服务后生效。{at}(本次检查失败:{error})": "A atualização foi aplicada dentro do contêiner e entra em vigor após reiniciar o serviço.{at} (esta verificação falhou: {error})", "更新日志": "Notas de versão", "更新设置": "Configurações de atualização", "更新进行中": "Atualização em andamento", "更新通道已保存": "Canais de atualização salvos", "更新通道已改变,请重新检查更新。": "Os canais de atualização mudaram. Verifique as atualizações novamente.", "替换完成,正在重启服务…": "Substituição concluída; reiniciando o serviço…", "最多保留 6 个 HTTPS 加速源;自定义源可关闭版本查询支持。": "Mantenha até 6 aceleradores HTTPS. As consultas de versões podem ser desativadas em fontes personalizadas.", "最新发布版本为 {latest},但当前版本号「{current}」无法解析,未做新旧判断。{at}": "A versão mais recente publicada é {latest}, mas o número da versão atual “{current}” não pôde ser interpretado, então a comparação não foi feita. {at}", "最新版本": "Versão mais recente", "最近采用": "Usada recentemente", "有新版本": "Nova versão disponível", "服务正在重启,页面会在恢复后自动刷新…({seconds}s)": "O serviço está reiniciando; a página será atualizada automaticamente quando ele voltar… ({seconds} s)", "服务端压缩包": "Pacote compactado do servidor", "未找到适用的更新包": "Nenhum pacote adequado", "未找到适用的更新包。需要:{wanted};发布页包含的文件类型:{seen}。": "Nenhum pacote adequado foi encontrado. Necessário: {wanted}. Tipos de arquivo na release: {seen}.", "未探测": "Não verificada", "未检查": "Não verificado", "本工具由": "Esta ferramenta é desenvolvida e mantida como código aberto por", "查看发布页": "Ver página de releases", "校验中": "Validando", "检查中": "Verificando", "检查中…": "Verificando…", "检查失败": "Falha na verificação", "检查更新": "Verificar atualizações", "检查更新与下载安装包使用所选线路;未选择代理时先直连,失败后尝试 Clash Verge 混合端口;指定代理不可用时不会自动改走直连。": "A verificação de atualizações e o download do instalador usam a rota selecionada. Sem proxy selecionado, tenta primeiro a conexão direta e, se falhar, a porta mista do Clash Verge. Um proxy especificado indisponível nunca volta automaticamente à conexão direta.", "检查更新与下载安装包使用所选线路;未选择代理时直连,指定代理不可用时不会自动改走直连。": "Verificações de atualização e downloads usam a rota selecionada. Sem proxy, a conexão é direta; um proxy selecionado indisponível não muda automaticamente para conexão direta.", "检查更新与下载安装包走哪条线路(当前:{current});选择即保存。选项来自「网络代理」页;直连失败时会自动借 Clash 混合端口重试一次,选定指定代理后只走它": "Define por qual conexão passam a verificação de atualizações e o download do instalador (atual: {current}); a seleção é salva imediatamente. As opções vêm da página “Proxy de rede”; se a conexão direta falhar, será feita automaticamente uma nova tentativa pela porta híbrida do Clash; ao selecionar um proxy específico, apenas ele será usado", "检查更新失败:{error}": "Falha ao verificar atualizações: {error}", "检查更新失败:{error}(以下版本与更新日志来自上次成功检查,检查于 {time})": "Falha ao verificar atualizações: {error} (as versões e notas abaixo são da última verificação bem-sucedida, em {time})", "检查计划": "Agendamento de verificações", "检查间隔必须是 {min} ~ {max} 分钟": "O intervalo de verificação deve ser de {min} ~ {max} minutos", "检查间隔(分钟)": "Intervalo de verificação (minutos)", "检测到更新": "Atualização disponível", "检测到自定义程序或界面路径,一键更新不会覆盖这些位置。请按原部署方式升级。": "Foram detectados caminhos personalizados do programa ou painel. A atualização com um clique não os sobrescreve. Use seu procedimento de implantação existente.", "正在下载 {name}:{percent}%({received} / {total} MB)": "Baixando {name}: {percent}% ({received} / {total} MB)", "正在下载 {version} 的服务端更新包…": "Baixando a atualização do servidor para {version}…", "正在下载安装包…(下载完成后会交给系统安装器,按提示输入密码即可完成安装)": "Baixando o instalador… (ao terminar, ele é entregue ao instalador do sistema; informe sua senha quando solicitado)", "正在下载安装包…(下载完成后会启动新的 AppImage;把它替换掉旧文件即完成升级)": "Baixando o instalador… (ao terminar, o novo AppImage é iniciado; mova-o sobre o arquivo antigo para concluir a atualização)", "正在下载安装包…(下载完成后会挂载磁盘映像,把应用拖进「应用程序」即可完成安装)": "Baixando o instalador… (ao concluir o download, a imagem de disco será montada; arraste o aplicativo para “Aplicativos” para concluir a instalação)", "正在下载安装包…(下载完成后启动安装程序需要管理员权限,会弹出 UAC 确认框)": "Baixando o instalador… (ao concluir o download, iniciar o instalador exigirá permissões de administrador e uma janela de confirmação do UAC será exibida)", "正在下载服务端更新包…(下载完成后由面板完成替换,重启容器内的服务后生效)": "Baixando o pacote de atualização do servidor… (o painel faz a substituição assim que o download termina; a atualização passa a valer após reiniciar o serviço dentro do contêiner)", "正在取消下载…": "Cancelando o download…", "正在备份并替换服务端程序与界面,请勿关闭服务器…": "Fazendo backup e substituindo o servidor e o painel. Não desligue o servidor…", "正在把旧数据导入 SQLite 数据库(旧文件会保留,不会删除)…": "Importando os dados antigos para o banco de dados SQLite (os arquivos antigos serão mantidos, não serão excluídos)…", "正在查询 GitHub 上的最新发布版本…": "Consultando a versão mais recente publicada no GitHub…", "正在校验并替换容器内的程序与界面文件…": "Validando e substituindo os arquivos do programa e da interface dentro do contêiner…", "正在独立核验官方更新包,校验通过前不会修改现有程序…": "Validando o pacote oficial de forma independente. Os arquivos atuais não serão alterados antes da validação…", "正在选择下载通道…": "Selecionando a fonte de download…", "正在重启服务并确认新版本,页面恢复后会自动刷新…": "Reiniciando o serviço e confirmando a nova versão. A página será recarregada após a recuperação…", "正式版与 beta 版": "Estáveis e beta", "没有可下载的安装包": "Não há instalador disponível para download", "没有可下载的安装包:{reason}": "Não há instalador disponível para download: {reason}", "没有启用的加速源,将只使用官方源。": "Nenhum acelerador está ativado. Apenas a fonte oficial será usada.", "沿用已记录的恢复时间": "Usando o horário de liberação registrado", "点击「检查更新」后,这里会显示最新版本的更新说明。": "Após clicar em “Verificar atualizações”, as notas da versão mais recente serão exibidas aqui.", "点击「检查更新」查询 GitHub 上的最新发布版本。": "Clique em “Verificar atualizações” para consultar a versão mais recente publicada no GitHub.", "点击「检查更新」查询最新发布版本。": "Clique em “Verificar atualizações” para consultar a versão mais recente publicada.", "点击在浏览器中打开": "Clique para abrir no navegador", "点击复制群号": "Clique para copiar o número do grupo", "版本 {version} · 按 GitHub 访问设置下载安装包": "Versão {version} · Baixa instaladores conforme o acesso ao GitHub", "版本查询": "Consulta de versão", "版本查询、插件索引、文件下载": "Consultas de versões, índices de plugins e downloads", "状态来自最近一次实际请求,并非实时测速。过期后标为待重新检查;限流只暂停对应线路,其他线路仍可使用。": "Os resultados vêm das últimas solicitações reais, não de testes de velocidade em tempo real. Resultados expirados exigem nova verificação. O limite pausa apenas a rota afetada; outras rotas continuam disponíveis.", "环境变量": "Variável de ambiente", "立即重启": "Reiniciar agora", "等待恢复": "Aguardando recuperação", "管理员已关闭面板一键更新,请使用手动升级方式。": "A atualização com um clique foi desativada pela administração. Atualize manualmente.", "粘贴 GitHub 令牌(ghp_… / github_pat_…)": "Cole o token do GitHub (ghp_… / github_pat_…)", "网关已关闭自动检查,此处只做手动检查": "A verificação automática foi desativada no gateway. Aqui, somente verificações manuais estão disponíveis.", "群号": "Número do grupo", "群号:{group}": "Número do grupo: {group}", "自动检查更新": "Verificar atualizações automaticamente", "自动选择最快可用源": "Selecionar automaticamente a fonte mais rápida disponível", "自动(官方优先)": "Automático (oficial primeiro)", "自定义加速前缀": "Prefixo de acelerador personalizado", "至少需要关注正式版或 beta 版中的一个通道": "Selecione pelo menos um canal: estável ou beta.", "补充内置备用源": "Adicionar fontes padrão ausentes", "记录于 {time}": "Registrado às {time}", "请先粘贴 GitHub 令牌": "Cole o token do GitHub primeiro", "请检查服务日志": "Verifique os logs do serviço", "读取下载进度失败:{error}": "Falha ao ler o progresso do download: {error}", "读取中": "Carregando", "赞赏完全自愿,不解锁任何功能,也不影响正常使用。": "As doações são totalmente voluntárias. Não desbloqueiam recursos nem afetam o uso normal.", "赞赏方式": "Método de doação", "跟随软件": "Seguir as configurações do aplicativo", "跳过此次更新": "Pular esta atualização", "软件更新": "Atualização do software", "软件更新与插件共用此设置;GitHub 令牌仅发送给官方 API。镜像安装包需要官方校验值,镜像插件包需要可信签名。": "Atualizações e plugins compartilham esta configuração. Tokens vão apenas à API oficial. Instaladores espelhados exigem checksum oficial; plugins espelhados exigem assinatura confiável.", "软件版本检查设置不可用": "As configurações de verificação de atualizações do aplicativo não estão disponíveis.", "返回内容异常": "Conteúdo da resposta inválido", "这一版只有 {seen},没有本机需要的 {wanted}": "Esta versão contém apenas {seen}; não tem {wanted} para esta máquina", "这一版没有为当前平台提供安装包": "Esta versão não fornece instalador para a plataforma atual", "这一版没有发布本机需要的安装包({wanted})": "Esta versão não publicou o instalador necessário para esta máquina ({wanted})", "这一版没有提供容器内更新包": "Esta versão não fornece pacote de atualização dentro do contêiner", "这一版没有提供容器内更新包:{reason}": "Esta versão não fornece pacote de atualização dentro do contêiner: {reason}", "这一版没有提供本机安装包": "Esta versão não fornece instalador para esta máquina", "这一版还没有上传任何文件(构建可能失败,或仍在打包上传)": "Nenhum arquivo foi enviado para esta versão ainda (a build pode ter falhado, ou os envios ainda estão em andamento)", "这个版本没有填写发布说明。": "Esta versão não tem notas de versão.", "连接超时": "Tempo limite de conexão", "通道已切换,但写入磁盘失败(重启后会回到原设置)": "O canal foi alterado, mas não foi possível gravar no disco (a configuração anterior volta após reiniciar)", "遇到问题或有使用心得,欢迎到群里交流。": "Dúvidas e dicas são bem-vindas em qualquer um dos grupos.", "重启中": "Reiniciando", "重新粘贴保存一次即可自愈": "Cole e salve novamente para corrigir automaticamente", "重试下载": "Baixar novamente", "链接地址不受支持": "Endereço de link não suportado", "限流冷却中": "Aguardando liberação do limite", "面板自动安装": "Instalação automática pelo painel", "预发布": "Pré-lançamento", "默认开启;即使当前使用 beta 版,也可收到版本号更高的正式版更新。": "Ativado por padrão. Mesmo usando uma versão beta, você pode receber versões estáveis com número de versão maior.", "默认跟随软件的正式版和 beta 关注选择;单独设置只影响插件。始终按版本号选择更新,不会降级。": "Por padrão, segue os canais estável e beta do aplicativo. Configurações separadas afetam apenas os plugins. As atualizações são escolhidas pela versão, sem downgrade.", "默认跟随软件的自动检查和间隔。关闭自动检查也会暂停插件自动更新和自动下载;手动检查与安装不受影响。": "Por padrão, segue a verificação automática e o intervalo do aplicativo. Desativar a verificação automática também pausa atualizações e downloads automáticos de plugins. A verificação e instalação manuais continuam disponíveis.", "(检查于 {time})": "(verificado em {time})", "API Key 列表": "Lista de API Keys", "Key 已停用": "Key desativada", "Key 已删除": "Key excluída", "Key 已启用": "Key habilitada", "Key 至少需要 8 个字符": "A Key precisa ter pelo menos 8 caracteres", "✅ Key 已创建,记得复制给客户端": "✅ Key criada; lembre-se de copiá-la para o cliente", "✅ 可用范围已保存": "✅ Escopo permitido salvo", "不限制": "Sem restrições", "与": " e ", "例如 Cursor / 公司电脑": "Ex.: Cursor / computador da empresa", "保存失败:{reason}": "Falha ao salvar: {reason}", "保存范围": "Salvar escopo", "创建": "Criar", "创建时间": "Criado em", "删除网关 Key": "Excluir Key do gateway", "助手图片工具": "Ferramentas de imagem do assistente", "助手标题总结": "Resumo de título do assistente", "可用提供商": "Provedores permitidos", "可用提供商:{names}": "Provedores permitidos: {names}", "可用模型": "Modelos permitidos", "可用模型:{names}": "Modelos permitidos: {names}", "可用范围": "Escopo permitido", "可用范围 · {name}": "Escopo permitido · {name}", "启用「{name}」": "Habilitar “{name}”", "复制 Key": "Copiar Key", "客户端请求需带 ": "As requisições do cliente precisam enviar ", "已删除": "Excluída", "已启用鉴权 · {n} 把 Key 生效": "Autenticação habilitada · {n} Keys em vigor", "当前不限制:这把 Key 可以用全部提供商与全部对外模型": "Sem restrições no momento: esta Key pode usar todos os provedores e todos os modelos expostos", "所选 API Key 已不可用": "A API Key selecionada está indisponível", "所选 API Key 已不可用,请重新选择": "A API Key selecionada está indisponível. Selecione outra Key.", "提供商:{names}": "Provedores: {names}", "搜索模型…": "Buscar modelos…", "操作失败:{reason}": "Falha na operação: {reason}", "新建 API Key": "Nova API Key", "日活保活": "Manutenção da atividade diária", "显示": "Visível", "未启用鉴权": "Sem autenticação", "未命名": "Sem nome", "未提供客户端标识": "Identificador de cliente não informado", "未知客户端": "Cliente desconhecido", "模型调用使用所选 Key 的权限,日志记录 Key 名称,不保存密钥值。": "As chamadas de modelo usam as permissões da Key selecionada. Os logs registram seu nome, nunca o valor secreto.", "模型:{names}": "Modelos: {names}", "正在读取 API Key…": "Carregando API Keys…", "没有匹配的选项": "Nenhuma opção correspondente", "没有可用的 API Key,请先在「网关 Key」页创建并启用": "Nenhuma API Key disponível. Crie e habilite uma na página de Keys do gateway.", "留空 = 不限制": "Em branco = sem restrições", "留空自动生成;手填至少 8 个字符": "Em branco: gerada automaticamente; se preenchida, mínimo de 8 caracteres", "留空表示不限制;同时设置时请求需同时满足两个条件(模型在白名单内且路由到允许的提供商)。 「可用模型」的候选跟着上面勾选的提供商走:没勾提供商时它是空的(还没有约束范围), 勾了几家就列出这几家能收的全部对外名。": "Em branco significa sem restrições; quando ambos são definidos, a requisição precisa atender às duas condições (o modelo estar na lista permitida e ser roteado para um provedor permitido). Os candidatos de “Modelos permitidos” seguem os provedores marcados acima: sem nenhum provedor marcado, a lista fica vazia (ainda não há escopo definido); com alguns marcados, são listados todos os nomes expostos aceitos por eles.", "确定删除 Key「{name}」?使用它的客户端会立刻无法访问。": "Excluir a Key “{name}”? Os clientes que a usam perderão o acesso imediatamente.", "网关 Key 表": "Tabela de Keys do gateway", "自动记住本次选择,下次打开继续使用;Key 被停用或删除后需重新选择。": "Sua seleção será lembrada na próxima vez. Selecione outra Key se ela for desativada ou excluída.", "请先在上面选择可用提供商": "Selecione primeiro os provedores permitidos acima", "读取 Key 列表失败:{reason}": "Falha ao ler a lista de Keys: {reason}", "还没有 Key,当前不鉴权": "Ainda não há Keys; sem autenticação no momento", "这几家当前没有可用模型(账号未登录或清单为空)": "Estes provedores não têm modelos disponíveis no momento (contas sem sessão ou catálogo vazio)", "这把 Key 不限制提供商与模型(可用全部上游与全部对外模型)": "Esta Key não restringe provedores nem modelos (pode usar todos os upstreams e todos os modelos expostos)", "限制:{text}": "Restrições: {text}", "隐藏": "Ocultar", "(模型候选需先选提供商;不选则沿用当前这几项,保存后仍按模型白名单生效)": "(os candidatos de modelo exigem escolher primeiro os provedores; sem escolha, os itens atuais são mantidos e, após salvar, a lista de modelos continua valendo)", "(行内「可用范围」):留空 = 不限制,两个都设时 按交集生效 —— 被限制的模型对这把 Key 表现为「不存在」(拉 /v1/models 也看不到它), 提供它的家不在可用列表里时请求同样被拒。": "(coluna “Escopo permitido”): em branco = sem restrições; quando ambos são definidos, vale a interseção — um modelo restringido “não existe” para esta Key (nem ao consultar /v1/models ele aparece) e, se o provedor que o oferece não estiver na lista de permitidos, a requisição também é recusada.", "+ 新建 Key": "+ Nova Key", "; 修改后立即生效,本程序自身会自动使用第一把启用的 Key。每把 Key 可单独限制": "; as alterações entram em vigor imediatamente, e este próprio programa usará automaticamente a primeira Key habilitada. Cada Key pode restringir individualmente ", ";修改后立即生效。模型测试、助手和日活保活必须选择 Key,受限 Key 不能访问管理接口。每把 Key 可单独限制": "; as alterações têm efeito imediato. Testes de modelo, assistente e manutenção diária exigem uma Key selecionada. Keys restritas não acessam endpoints de gerenciamento. Cada Key pode restringir individualmente ", ";当前必须带 Key。": "; uma Key habilitada é obrigatória.", " AI 账号专用静态住宅 IP:Scamalytics 低欺诈评分,不限流量,首单 75 折(AGENT2API25)": " IPs residenciais estáticos nativos para contas de IA: pontuação de fraude baixa no Scamalytics, tráfego ilimitado, 25% de desconto na primeira compra (AGENT2API25)", " 提供 AI 账号专用的原生静态住宅 IP(Static Residential ISP):IP 来自真实家庭宽带运营商,Scamalytics 低欺诈评分,每个 IP 独享,不限流量,$3.90 起。": " oferece proxies de IP residencial estático nativos para contas de IA (Static Residential ISP): os IPs vêm de operadoras de banda larga residenciais reais, com pontuação de fraude baixa no Scamalytics, cada IP é dedicado a você, com tráfego ilimitado, a partir de $3.90.", " 那一类由「同步 Clash Verge」 镜像进来(进入本页时会自动同步一次):名称、端口、启用都跟随 Clash, 在 Clash 里改或删,这里跟着变 —— 所以它们只读,改请到 Clash Verge 里改。": " Os itens desse tipo são espelhados por “Sincronizar Clash Verge” (uma sincronização automática também é feita ao entrar nesta página): nome, porta e estado de habilitação seguem o Clash; se você alterar ou excluir no Clash, isso se reflete aqui — por isso são somente leitura. Para alterar, faça-o no Clash Verge.", "Clash Verge": "Clash Verge", "SOCKS5 用户名和密码不能超过 255 字节": "O usuário e a senha SOCKS5 não podem exceder 255 bytes", "YAML 文件": "Arquivo YAML", "{names} 等 {n} 条": "{names} etc. ({n} no total)", "{n} 个出口": "{n} endpoints", "{n} 个账号在用": "{n} contas usando", "{n} 条订阅": "{n} assinaturas", "{percent}%({received} / {total} MB)": "{percent}% ({received} / {total} MB)", "✅ {ip}": "✅ {ip}", "✅ 「{name}」出口可用{ip}{took}": "✅ Endpoint “{name}” disponível{ip}{took}", "✅ 内核下载完成,正在启动…": "✅ Kernel baixado, iniciando…", "✅ 内核已手动导入到 {dir}": "✅ Kernel importado manualmente em {dir}", "✅ 已同步 Clash Verge 出口({n} 项变更)": "✅ Endpoints do Clash Verge sincronizados ({n} alterações)", "✅ 连接成功": "✅ Conectado", "✅ 连通性测试设置已保存": "✅ Configurações do teste de conectividade salvas", "❌ 「{name}」{error}": "❌ “{name}”: {error}", "❌ 连接失败": "❌ Falha na conexão", "「测试」与「批量测试」访问的目标;留空用默认(打 WorkBuddy 上游)。判据是能否拿到 HTTP 响应,不用考虑该网址返回什么内容。": "O destino que \"Testar\" e \"Testar selecionados\" acessam; deixe vazio para o padrão (upstream do WorkBuddy). O critério é receber uma resposta HTTP — o conteúdo que a URL retorna não importa.", "上传本地文件": "Enviar arquivo local", "上次下载失败:{reason}": "O último download falhou: {reason}", "上次下载已停止,未下载完的临时文件已删除": "O último download foi interrompido; o arquivo parcial foi excluído", "上次同步": "Última sincronização", "上次测试": "Último teste", "下载": "Baixar", "下载中…": "Baixando…", "下载内核": "Baixar kernel", "下载已经完成,停止没赶上(内核已安装)": "O download terminou antes da parada (kernel instalado)", "下载线路": "Rota de download", "下载线路 / 存放目录没能写进配置(本次下载已按新设置走,重启后会恢复原值)": "A rota / a pasta não pôde ser gravada na configuração (este download usa as novas opções; elas voltam ao valor antigo após reiniciar)", "不再提供": "Não disponível", "不再提醒": "Não mostrar novamente", "为降低维护成本、资源占用及合规风险,Agent2API 已停止提供代理订阅与内置代理内核相关功能。": "Para reduzir os custos de manutenção, o uso de recursos e os riscos de conformidade, o Agent2API deixou de oferecer assinaturas de proxy e recursos do kernel de proxy integrado.", "之前使用订阅节点?": "Usava nós de assinatura?", "也可以把二维码截图直接粘贴到弹窗里(Ctrl+V)": "Você também pode colar um print do QR code diretamente na janela (Ctrl+V)", "二维码里没有订阅链接": "Nenhum link de assinatura no QR code", "从图片识别二维码": "Ler QR code de uma imagem", "代理主机只能填写域名或 IP 地址,不能包含协议、端口或路径": "Informe apenas o domínio ou endereço IP, sem protocolo, porta ou caminho", "代理主机地址无效": "Host do proxy inválido", "代理修改已保存": "Alterações do proxy salvas", "代理内核": "Kernel de proxy", "代理内核未安装(下载内核后,被账号或服务线路引用的节点会自动开监听端口)": "O kernel do proxy não está instalado. Após baixá-lo, os nós referenciados por contas ou rotas de serviço recebem portas de escuta automaticamente.", "代理内核未安装(在「订阅管理」里下载内核后,被账号引用的节点会自动开监听端口)": "O kernel do proxy não está instalado (após baixá-lo em \"Gerenciamento de assinaturas\", os nós referenciados por contas recebem uma porta de escuta automaticamente)", "代理列表": "Lista de proxies", "代理列表加载失败:{reason}": "Falha ao carregar a lista de proxies: {reason}", "代理列表响应异常": "Resposta inesperada da lista de proxies", "代理协议只支持 HTTP 或 SOCKS5": "Somente proxies HTTP ou SOCKS5 são aceitos", "代理名称": "Nome do proxy", "代理名称不能超过 60 个字符": "O nome do proxy não pode exceder 60 caracteres", "代理已添加": "Proxy adicionado", "代理格式无效,请按示例填写": "Formato de proxy inválido. Siga os exemplos.", "代理池": "Pool de proxies", "代理池表": "Tabela do pool de proxies", "代理订阅功能已下线": "O recurso de assinaturas de proxy foi descontinuado", "代理设置": "Configurações de proxy", "代理设置响应异常": "Resposta inesperada das configurações de proxy", "代理账号和密码不能超过 200 个字符": "O usuário e a senha do proxy não podem exceder 200 caracteres", "代理账号或密码的 URL 编码无效": "Codificação de URL inválida no usuário ou senha do proxy", "以下行未能识别,已留在输入框中;修正后可再次解析。": "As linhas abaixo não foram reconhecidas e continuam no campo. Corrija-as e analise novamente.", "使用情况": "Uso", "例如:我的机场": "ex.: Meu provedor", "例如:香港 HTTP 出口": "Ex.: endpoint HTTP de Hong Kong", "保存代理": "Salvar proxy", "保存已有的代理地址,供账号与服务线路按需使用。": "Salve endereços de proxy existentes para uso por contas e rotas de serviço conforme necessário.", "保持原文件": "Mantendo o arquivo atual", "停止下载": "Parar download", "停止下载失败:{reason}": "Falha ao parar o download: {reason}", "停止请求已发出,但下载还没收手,稍后再看一次进度": "A parada foi solicitada, mas o download ainda não parou - veja o progresso novamente em instantes", "先把下载的内核放到网关机器的目录,再填写文件或目录的绝对路径。目录内会查找官方包或 mihomo 二进制;远程面板不能读取浏览器电脑的路径。": "Coloque o kernel baixado em uma pasta na máquina do gateway e informe o caminho absoluto do arquivo ou pasta. A pasta será pesquisada pelo pacote oficial ou binário mihomo. Um painel remoto não pode ler caminhos no computador do navegador.", "先经过系统代理,再连接到此代理": "Conecta pelo proxy do sistema antes de usar este proxy", "全选当前筛选出的出口": "Selecionar todos os endpoints filtrados", "全选所有代理": "Selecionar todos os proxies", "全选({n} 个)": "Selecionar todos ({n})", "全部协议": "Todos os protocolos", "全部提供方": "Todos os provedores", "全部订阅": "Todas as assinaturas", "关掉这个窗口不会中断下载(它在后台继续跑)—— 要停下就点下面的「停止下载」,未下载完的临时文件会被删除。": "Fechar esta janela não interrompe o download (ele continua em segundo plano) - para parar, clique em \"Parar download\" abaixo; o arquivo parcial é excluído.", "关闭代理后,引用它的账号回退直连。连通性以最近一次检测结果为准。": "Ao desativar um proxy, as contas que o referenciam voltam à conexão direta. A conectividade reflete a verificação mais recente.", "关闭内核": "Parar kernel", "关闭内核失败:{reason}": "Falha ao parar o kernel: {reason}", "其中 {n} 条正被账号使用 —— 删除后那些账号会回退直连。": "Destes, {n} estão em uso por contas — após a exclusão, essas contas voltarão à conexão direta.", "其中 {n} 条正被账号使用 —— 删除后需重新设置相关账号的代理,不会自动直连。": "{n} proxies selecionados estão em uso. Após a exclusão, reconfigure as contas afetadas; não haverá conexão direta automática.", "其中 {n} 条是同步来的只读条目(Clash / 订阅):可参与批量测试,删除会跳过": "{n} deles são entradas somente leitura sincronizadas (Clash / assinaturas): podem participar do teste em lote, mas a exclusão os ignora", "其中 {n} 条来自 Clash 同步:可参与批量测试,删除会跳过": "Dos selecionados, {n} vêm da sincronização do Clash: podem ser testados em lote, mas a exclusão os ignora", "内核 {version}": "Kernel {version}", "内核 {version}({asset})": "Kernel {version} ({asset})", "内核下载": "Download do kernel", "内核下载失败:{reason}": "Falha ao baixar o kernel: {reason}", "内核二进制 / 配置 / 端口映射都会放在这里,默认 {dir};目录不存在会在下载开始时自动创建。": "O binário do kernel, a configuração e o mapa de portas ficam aqui. Padrão: {dir}. A pasta é criada automaticamente quando o download começa.", "内核启动失败:{reason}": "Falha ao iniciar o kernel: {reason}", "内核导入仍在后台执行,请刷新状态查看结果": "A importação do kernel continua em segundo plano. Atualize o estado para conferir o resultado.", "内核导入任务排队中…": "Importação do kernel na fila…", "内核导入失败": "Falha ao importar o kernel", "内核导入状态已变化,请刷新后确认": "O estado da importação mudou. Atualize para conferir o resultado.", "内核已停止": "Kernel parado", "内核已停止,点「启动内核」拉起": "Kernel parado — clique em \"Iniciar kernel\" para ativá-lo", "内核已关闭(订阅与端口注册表保留,「启动内核」后原位恢复)": "Kernel parado (assinaturas e o registro de portas são mantidos; as portas voltam ao lugar após \"Iniciar kernel\")", "内核已导入,但启动失败:{reason}": "Kernel importado, mas falha ao iniciar: {reason}", "内核已导入,但存放目录未能保存,重启网关后会恢复原位置": "O kernel foi importado, mas a pasta não pôde ser salva. O local anterior será restaurado ao reiniciar o gateway.", "内核已手动关闭": "Kernel parado manualmente", "内核已手动关闭(点「启动内核」拉起)": "Kernel parado manualmente — clique em \"Iniciar kernel\" para ativá-lo", "内核文件必须非空且不超过 {max} MiB": "O arquivo do kernel não pode estar vazio nem exceder {max} MiB", "内核未安装": "Kernel não instalado", "内核正在启动…": "Kernel iniciando…", "内核正在执行操作,请稍后重试": "Há uma operação do kernel em andamento. Tente novamente em instantes.", "内核没有在超时内停下来": "o kernel não parou dentro do tempo limite", "内核目录没能删掉(可能仍被进程占用),稍后重试一次": "Não foi possível remover a pasta do kernel — algum processo ainda pode estar usando-a. Tente novamente em instantes.", "内核运行中": "Kernel em execução", "出口 IP {ip}": "IP de saída {ip}", "出口可用": "Proxy disponível", "出口测试网址": "URL do teste de conectividade", "删除代理": "Excluir proxy", "删除内核": "Excluir kernel", "删除内核失败:{reason}": "Falha ao excluir o kernel: {reason}", "删除订阅": "Excluir assinatura", "刷新中…": "Atualizando…", "刷新失败:{reason}": "Falha ao atualizar: {reason}", "功能调整通知": "Aviso de alteração de recurso", "勾选「{name}」": "Selecionar “{name}”", "单个添加": "Adicionar um", "去获取": "Obter agora", "另有 {n} 条是同步来的只读条目(Clash / 订阅),将跳过。": "Mais {n} entradas são somente leitura sincronizadas (Clash / assinaturas) e serão ignoradas.", "另有 {n} 条来自 Clash Verge 同步,将跳过(请到 Clash Verge 里删)。": "Outros {n} itens vêm da sincronização com o Clash Verge e serão ignorados (exclua-os no Clash Verge).", "只读:在 Clash Verge 里改": "Somente leitura: edite no Clash Verge", "只读:在「订阅管理」里改": "Somente leitura: edite em \"Gerenciar assinaturas\"", "同步 Clash Verge": "Sincronizar Clash Verge", "同步中…": "Sincronizando…", "同步失败:{reason}": "Falha na sincronização: {reason}", "名字与端口在 Clash Verge 里改;启用可在本页关闭": "Edite o nome e a porta no Clash Verge; o interruptor de ativação pode ser desligado nesta página", "名字与端口跟随订阅与内核;启用可在本页关闭": "O nome e a porta seguem a assinatura e o kernel; o interruptor de ativação pode ser desligado nesta página", "后台继续": "Continuar em segundo plano", "启动内核": "Iniciar kernel", "启用订阅「{name}」": "Ativar assinatura \"{name}\"", "启用这条代理": "Habilitar este proxy", "启用这条订阅": "Ativar esta assinatura", "启用(禁用后,使用此代理的账号请求将失败;仍可测试)": "Ativar (desativar bloqueia solicitações das contas que usam este proxy; os testes continuam disponíveis)", "启用(禁用的条目不会被账号使用,被引用时账号回退直连;仍可测试)": "Habilitar (itens desabilitados não são usados pelas contas; se referenciados, a conta volta à conexão direta; ainda podem ser testados)", "启用(禁用的订阅不参与内核同步,它的节点会从代理池移除)": "Ativada (assinaturas desativadas não são sincronizadas pelo kernel e seus nós são removidos do pool de proxies)", "图片读取失败": "Falha ao ler a imagem", "地址": "Endereço", "地址不完整": "Endereço incompleto", "地址由网关所在设备访问;本机代理需运行在该设备上。": "O dispositivo do gateway acessa este endereço. Um proxy local deve estar em execução nesse dispositivo.", "复制下载链接": "Copiar link de download", "失败 {n} 个({reason})": "{n} com falha ({reason})", "存放位置": "Pasta", "存放位置 {dir}": "Pasta {dir}", "存放位置要填绝对路径,例如 D:\\proxy-kernel": "A pasta deve ser um caminho absoluto, por exemplo D:\\proxy-kernel", "家庭宽带": "Banda larga residencial", "导入内核": "Importar kernel", "导入并替换": "Importar e substituir", "导入来源": "Origem da importação", "将替换现有代理内核,运行中的连接会短暂中断。订阅、账号引用与端口映射会保留。是否继续?": "O kernel de proxy existente será substituído, interrompendo brevemente as conexões ativas. Assinaturas, referências de contas e mapeamentos de portas serão mantidos. Continuar?", "展开其余 {n} 个 ▾": "Mostrar mais {n} ▾", "已下载?手动导入": "Já baixou? Importe manualmente", "已保存。重启内核后,新分配的节点端口才会按新范围来。": "Salvo. Após reiniciar o kernel, as portas de nó recém-alocadas seguirão a nova faixa.", "已保存「{name}」": "“{name}” salvo", "已停止下载内核(未下载完的临时文件已删除)": "Download do kernel interrompido (o arquivo parcial foi excluído)", "已删除 {n} 个代理": "{n} proxies excluídos", "已删除「{name}」": "“{name}” excluído", "已删除内核(订阅与账号引用保留,重新下载后会重新分配端口)": "Kernel excluído (as assinaturas e as referências das contas são mantidas; as portas são redistribuídas depois de baixar novamente)", "已删除内核(订阅与账号引用保留;有文件仍被占用,将在下次启动时清理)": "Kernel excluído (as assinaturas e as referências de conta são mantidas; alguns arquivos ainda estão em uso e serão limpos na próxima inicialização)", "已刷新「{name}」,正在同步节点…": "\"{name}\" atualizada; sincronizando nós…", "已启用 {n} 个": "{n} ativados", "已启用「{name}」": "“{name}” habilitado", "已启用「{name}」,正在补建监听端口(内核重建中)": "\"{name}\" ativado; recriando a porta de escuta (kernel reiniciando)", "已在本页禁用(打开开关即恢复)": "Desativado nesta página (ligue o interruptor para restaurar)", "已新增「{name}」": "“{name}” adicionado", "已新增订阅「{name}」,内核正在同步节点…": "Assinatura \"{name}\" adicionada; o kernel está sincronizando os nós…", "已是最新,没有需要同步的变更": "Já está atualizado; não há alterações para sincronizar", "已有手动配置不受此次调整影响。你仍可添加 HTTP / SOCKS5 地址,并使用连通性测试。": "As configurações manuais existentes não são afetadas. Você ainda pode adicionar endereços HTTP / SOCKS5 e testar a conectividade.", "已有手动配置和 Clash Verge 端点引用不受影响。仍可添加 HTTP / SOCKS5 地址、同步 Clash Verge 端点并测试连通性;Clash Verge 由你自行安装和运行。": "As configurações manuais e as referências a endpoints do Clash Verge existentes não são afetadas. Você ainda pode adicionar endereços HTTP / SOCKS5, sincronizar endpoints e testar a conectividade. Instale e execute o Clash Verge separadamente.", "已有账号引用它,但内核还没把监听端口补建出来 —— 稍等片刻,或重新启用这条节点": "Uma conta já referencia este nó, mas o kernel ainda não criou a porta de escuta — aguarde um instante ou reative este nó", "已有账号或服务线路引用它,监听端口尚未就绪;请稍等,或检查内核状态": "Uma conta ou rota de serviço referencia este nó, mas a porta de escuta ainda não está pronta. Aguarde um momento ou verifique o estado do kernel.", "已禁用「{name}」": "“{name}” desabilitado", "已禁用「{name}」,监听端口正在关闭(内核重建中)": "\"{name}\" desativado; a porta de escuta está sendo fechada (kernel reiniciando)", "已禁用(未开监听端口)": "Desativado (sem porta de escuta)", "已移除的订阅": "Assinatura removida", "已识别 {n} 条 · 已勾选 {selected} 条": "{n} reconhecidos · {selected} selecionados", "已识别 {n} 条代理,跳过 {duplicates} 条重复地址": "{n} proxies reconhecidos e {duplicates} duplicados ignorados", "已识别订阅链接": "Link de assinatura reconhecido", "已选择「{name}」,保存后导入": "\"{name}\" selecionado - importado ao salvar", "已配置认证": "Autenticação configurada", "当前客户端不支持手动导入内核,请更新或刷新页面": "Este cliente não suporta a importação manual do kernel. Atualize-o ou recarregue a página.", "当前没有正在进行的下载": "Não há download em andamento", "当前环境不支持代理池(桥接方法缺失)": "O ambiente atual não oferece suporte ao pool de proxies (método de ponte ausente)", "当前环境不支持代理测试(桥接方法缺失)": "O ambiente atual não oferece suporte ao teste de proxies (método de ponte ausente)", "当前环境不支持代理设置(桥接方法缺失)": "As configurações de proxy não são suportadas neste ambiente (método de ponte ausente)", "当前环境不支持同步(桥接方法缺失)": "O ambiente atual não oferece suporte à sincronização (método de ponte ausente)", "当前环境不支持启停(桥接方法缺失)": "Ativar/desativar não é compatível com este ambiente (método de ponte ausente)", "当前环境不支持订阅(桥接方法缺失)": "Assinaturas não são suportadas neste ambiente (método de ponte ausente)", "当前环境不支持选择文件夹,直接填写绝对路径即可": "Este ambiente não abre seletor de pastas - digite o caminho absoluto", "当前线路不可用:{error};重新选一条或切回直连": "A rota atual está indisponível: {error}. Escolha outra ou volte para conexão direta", "我知道了": "Entendi", "所属订阅已删除,这条节点不会再分配端口 —— 可以删除它": "A assinatura deste nó foi excluída, então ele nunca receberá uma porta — você pode excluí-lo", "手动下载官方内核": "Baixar kernel oficial manualmente", "手动代理与 Clash Verge 同步仍然保留": "Proxies manuais e sincronização do Clash Verge continuam disponíveis", "手动代理仍然保留": "Proxies manuais continuam disponíveis", "手动填写的地址与端口": "Endereço e porta preenchidos manualmente", "手动导入内核": "Importar kernel manualmente", "打开文件夹选择框失败:{reason}": "Falha ao abrir o seletor de pastas: {reason}", "批量删除": "Excluir em lote", "批量删除代理": "Excluir proxies em lote", "批量测试": "Testar em lote", "批量测试完成:{ok} 个可用、{failed} 个失败(共 {total} 个)": "Teste em lote concluído: {ok} disponíveis, {failed} com falha ({total} no total)", "批量测试完成:{ok} 个可用(共 {total} 个)": "Teste em lote concluído: {ok} disponíveis ({total} no total)", "批量测试({n})": "Testar em lote ({n})", "批量添加": "Adicionar em lote", "批量添加响应异常,请刷新代理列表确认后再试": "Resposta inesperada do lote. Atualize a lista de proxies e confira o que foi salvo antes de tentar novamente.", "批量添加完成:新增 {added} 条,重复 {duplicates} 条,失败 {failed} 条": "Lote concluído: {added} adicionados, {duplicates} duplicados, {failed} com falha", "批量添加({n})": "Adicionar em lote ({n})", "按协议筛选": "Filtrar por protocolo", "按提供方筛选": "Filtrar por provedor", "按来源筛选": "Filtrar por origem", "按需下载(约 20-40MB)": "Baixado sob demanda (~20-40MB)", "控制端口 {port} · {n} 个节点监听器": "porta de controle {port} · {n} listeners de nós", "搜索代理": "Buscar proxies", "搜索名称 / 地址 / 端口": "Buscar nome / endereço / porta", "搜索节点": "Buscar nós", "支持官方压缩包和解压后的内核二进制;只接受当前版本,SHA-256 校验不通过时不会替换现有内核。": "São aceitos arquivos oficiais compactados e binários extraídos. Somente a versão atual é permitida; uma falha na verificação SHA-256 mantém o kernel existente intacto.", "支持手动地址与 Clash Verge 端点同步,不接管代理服务的安装与运行。": "Suporta endereços inseridos manualmente e sincronização de endpoints do Clash Verge; não gerencia a instalação nem a execução do serviço de proxy.", "文件或目录路径": "Caminho do arquivo ou pasta", "文件读取失败": "Falha ao ler o arquivo", "新增代理": "Adicionar proxy", "新增方式": "Modo de adição", "新增订阅": "Nova assinatura", "新解析的代理默认使用非直连": "Usar conexão encadeada nos novos proxies reconhecidos", "显示 {n} / 共 {total} 个出口": "Mostrando {n} / {total} endpoints", "暂未使用": "Não utilizado", "更新中…": "Atualizando…", "更新出网线路已保存,正在准备监听端口": "A rota de atualização foi salva; preparando a porta de escuta.", "替换代理内核": "Substituir kernel de proxy", "最近检测": "Última verificação", "有 {n} 个账号正在使用它({names})—— 删除后这些账号会回退直连。": "{n} contas estão usando este proxy ({names}) — após a exclusão, essas contas voltarão à conexão direta.", "有 {n} 个账号正在使用它({names})—— 删除后需重新设置这些账号的代理,不会自动直连。": "{n} contas usam este proxy ({names}). Após a exclusão, reconfigure os proxies dessas contas; não haverá conexão direta automática.", "有 {n} 个账号正在使用它,删除后这些账号会回退直连。": "{n} contas usam este proxy. Ao excluí-lo, essas contas voltam à conexão direta.", "有 {n} 个账号正在使用它,删除后需重新设置这些账号的代理,不会自动直连。": "{n} contas usam este proxy. Após a exclusão, reconfigure os proxies dessas contas; não haverá conexão direta automática.", "未检测": "Não verificado", "未检测到 Clash Verge:{reason}": "Clash Verge não detectado: {reason}", "未测试": "Não testado", "未选择文件": "Nenhum arquivo selecionado", "本地 YAML 文件": "Arquivo YAML local", "本地文件": "Arquivo local", "本地文件不会自动更新:要更新节点,重新选择文件后保存;不重选则内容保持不变。": "Arquivos locais não são atualizados automaticamente: para atualizar os nós, escolha o arquivo novamente e salve; sem reescolher, o conteúdo permanece o mesmo.", "本地文件订阅无需更新(要换内容请编辑后重新选择文件)": "Assinatura de arquivo local não precisa de atualização (para mudar o conteúdo, edite e escolha o arquivo novamente)", "本地文件订阅的内容在导入时固定:节点会由内核起成本地监听器并镜像进代理池,节点数稍等几秒由轮询刷新。": "O conteúdo de uma assinatura de arquivo local é fixado na importação: o kernel inicia os nós como listeners locais e os espelha no pool de proxies; a contagem de nós é atualizada por polling em alguns segundos.", "本页可编辑、可删除": "Editável e removível nesta página", "来自 Clash Verge 同步(名称、端口跟随 Clash),请到 Clash Verge 中修改;启用可在本页关闭": "Sincronizado do Clash Verge (nome e porta seguem o Clash); edite-os no Clash Verge. O interruptor de ativação pode ser desligado nesta página.", "正在下载内核": "Baixando o kernel", "正在停止…": "Parando…", "正在安装内核…": "Instalando kernel…", "正在导入…": "Importando…", "正在开始…": "Iniciando…", "正在校验内核…": "Verificando kernel…", "正在读取并上传文件…": "Lendo e enviando arquivo…", "正在连接 GitHub…": "Conectando ao GitHub…", "此代理用于{services};删除后这些线路将不可用,不会自动回退直连。": "Este proxy é usado para {services}. Excluí-lo deixa essas rotas indisponíveis; elas não voltam automaticamente à conexão direta.", "此代理用于软件 / 插件更新;删除后这些线路将不可用,不会自动回退直连。": "Este proxy é usado para atualizações de software / plugins. Excluí-lo torna essas rotas indisponíveis; elas não voltam automaticamente à conexão direta.", "每次最多添加 {n} 条代理": "Adicione até {n} proxies por vez", "每行一条,解析后可修改名称、设置非直连并测试,最后保存勾选的代理。": "Insira um proxy por linha. Analise a lista, edite os nomes, configure conexões encadeadas e teste. Depois, salve os proxies selecionados.", "没有匹配「{kw}」的出口": "Nenhum endpoint corresponde a \"{kw}\"", "没有匹配当前筛选的出口": "Nenhum endpoint corresponde aos filtros atuais", "没有可全选的代理": "Nenhum proxy para selecionar", "没有可删除的条目": "Nenhum item pode ser excluído", "没能同步:{reason}": "Não foi possível sincronizar: {reason}", "测试中 {done}/{total}": "Testando {done}/{total}", "测试失败:{reason}": "Falha no teste: {reason}", "测试目标网址": "URL de destino do teste", "测试结果没能记下:{reason}": "Não foi possível registrar o resultado do teste: {reason}", "测试网址要以 http:// 或 https:// 开头": "A URL de teste deve começar com http:// ou https://", "测试设置": "Configurações do teste", "添加一个 HTTP 或 SOCKS5 地址,之后可以在账号或服务线路中选择使用。": "Adicione um endereço HTTP ou SOCKS5 para usá-lo com contas ou rotas de serviço.", "添加单个": "Adicionar proxy", "添加手动 HTTP / SOCKS5 地址,或同步 Clash Verge 的端点,供账号与服务线路使用。": "Adicione um endereço HTTP / SOCKS5 manualmente ou sincronize os endpoints do Clash Verge para usar com contas e rotas de serviço.", "添加第一个代理": "Adicionar o primeiro proxy", "清空已识别": "Limpar lista reconhecida", "清空筛选": "Limpar filtros", "确定删除「{name}」?{used}": "Excluir “{name}”?{used}", "确定删除「{name}」?它在代理池里的节点会一并移除,引用这些节点的账号会回退直连。": "Excluir \"{name}\"? Seus nós no pool de proxies também serão removidos, e as contas que os referenciam voltarão à conexão direta.", "确定删除「{name}」?": "Excluir \"{name}\"?", "确定删除已下载的内核{version}?内核文件与端口映射会被移除,订阅节点会失去监听端口(地址列显示「端口准备中」),引用它们的账号会暂时回退直连;订阅本身保留,重新下载内核后会重新分配端口。": "Excluir o kernel baixado{version}? Os arquivos do kernel e o mapeamento de portas serão removidos, os nós da assinatura perdem as portas de escuta (a coluna de endereço mostra \"Porta em preparação\"), e as contas que os referenciam voltam para conexão direta por enquanto. As assinaturas são mantidas e as portas são redistribuídas depois de baixar o kernel novamente.", "确定删除选中的 {n} 个代理?": "Excluir os {n} proxies selecionados?", "禁用后本端不再用它(引用它的账号回退直连),并会关掉它的本地监听端口": "Ao desativar, esta máquina deixa de usá-lo (contas que o referenciam voltam à conexão direta) e a porta de escuta local é fechada", "禁用后本端不再用它(引用它的账号回退直连);端口在 Clash Verge 侧,不受影响": "Ao desativar, esta máquina deixa de usá-lo (contas que o referenciam voltam à conexão direta); a porta permanece no lado do Clash Verge, sem alterações", "立即更新": "Atualizar agora", "端口范围必须是 1-65535 的整数": "A faixa de portas deve ser inteiros de 1 a 65535", "第 {line} 行:{error}": "Linha {line}: {error}", "类型": "Tipo", "粘贴代理列表后点击「解析」": "Cole a lista de proxies e clique em Analisar", "编辑代理": "Editar proxy", "编辑订阅": "Editar assinatura", "网关已切换,请重新打开代理弹窗": "O gateway foi alterado. Reabra a janela de proxies.", "网关未返回内核导入任务,请刷新状态后确认": "O gateway não retornou uma tarefa de importação do kernel. Atualize o estado para conferir o resultado.", "网关机器上的文件或目录": "Arquivo ou pasta na máquina do gateway", "节点": "Nós", "节点由内核起成本地监听器,镜像进代理池": "Os nós são iniciados como listeners locais pelo kernel e espelhados no pool de proxies", "节点端口范围 {base}–{end}": "Faixa de portas dos nós {base}–{end}", "节点端口范围(结束)": "Faixa de portas de nó (fim)", "节点端口范围(起始)": "Faixa de portas de nó (início)", "解析": "Analisar", "订阅": "Assinaturas", "订阅与 Clash 的出口自动镜像进来": "Endpoints de assinaturas e do Clash são espelhados automaticamente", "订阅内容由内核定时刷新(每 24 小时);节点数与同步状态在保存后由轮询刷新,稍等几秒。": "O conteúdo da assinatura é atualizado pelo kernel periodicamente (a cada 24 horas); a contagem de nós e o estado de sincronização são atualizados por polling após salvar — aguarde alguns segundos.", "订阅导入与更新、订阅节点管理,以及代理内核的下载、安装和运行。": "Importação e atualização de assinaturas, gerenciamento de nós e download, instalação e execução do kernel de proxy.", "订阅来源": "Origem da assinatura", "订阅管理": "Gerenciar assinaturas", "订阅管理({n})": "Gerenciar assinaturas ({n})", "订阅节点会在本机各占一个监听端口,从该范围里挑空闲的分配;节点多的大订阅把默认范围({base}-{end})用尽时会报「没有可用的节点端口」,这时把范围调大再重启内核。已分配出去的端口不会因改范围而失效。": "Cada nó de assinatura ocupa uma porta de escuta local, alocada entre as portas livres desta faixa; quando uma assinatura grande esgota a faixa padrão ({base}-{end}), o app informa \"sem portas de nó livres\" — aumente a faixa e reinicie o kernel. Portas já alocadas continuam válidas quando a faixa muda.", "订阅里的节点会自动同步进代理池,账号即可引用。": "Os nós da assinatura são sincronizados automaticamente no pool de proxies, prontos para as contas usarem.", "订阅里的节点会被内核起成本地监听器,镜像到代理池(账号按 id 引用,与本页其它出口同一用法)。内核只在用到订阅时按需下载(约 20-40MB),不随安装包分发。": "Os nós das assinaturas são iniciados como listeners locais pelo kernel e espelhados no pool de proxies (as contas os referenciam por id, igual a qualquer outro endpoint desta página). O kernel só é baixado sob demanda quando há assinaturas em uso (~20-40MB) e não vem com o instalador.", "订阅链接": "Link da assinatura", "识别中…": "Reconhecendo…", "该节点所属订阅已删除,不会再被同步更新,可手动删除清理": "A assinatura deste nó foi excluída; ele não será mais sincronizado e pode ser removido manualmente", "该节点来自订阅(名称、端口跟随订阅与内核),请在「订阅管理」里修改;启用可在本页关闭": "Este nó vem de uma assinatura (nome e porta seguem a assinatura e o kernel); edite-os em \"Gerenciar assinaturas\". O interruptor de ativação pode ser desligado nesta página.", "请下载与网关平台一致的官方内核,不是浏览器所在设备的平台。": "Baixe o kernel oficial para a plataforma do gateway, não para o dispositivo que executa o navegador.", "请填写代理名称": "Informe o nome do proxy", "请填写已有代理服务的 HTTP / SOCKS5 地址,或自行运行 Clash Verge 后同步端点,并重新为相关账号和服务线路选择代理。": "Informe o endereço HTTP / SOCKS5 de um serviço de proxy existente ou execute o Clash Verge separadamente e sincronize seus endpoints. Depois, selecione novamente um proxy para as contas e rotas afetadas.", "请填写网关机器上的绝对文件或目录路径": "Informe o caminho absoluto do arquivo ou pasta na máquina do gateway", "请改为填写已有代理服务的 HTTP / SOCKS5 地址,并重新为相关账号和服务线路选择代理。": "Informe o endereço HTTP / SOCKS5 de um serviço de proxy existente e selecione novamente um proxy para as contas e rotas afetadas.", "请选择要导入的 YAML 文件": "Selecione um arquivo YAML para importar", "请选择要导入的内核文件": "Selecione o arquivo do kernel para importar", "读取失败:{reason}": "Falha ao ler: {reason}", "起始端口不能大于结束端口": "A porta inicial não pode ser maior que a porta final", "跳过 {n} 个(Clash 同步)": "{n} ignorados (sincronização do Clash)", "跳过 {n} 个(同步只读条目)": "{n} ignorados (entradas somente leitura sincronizadas)", "软件 / 插件更新": "Atualizações de software / plugins", "还没有代理。点右上角「+ 新增代理」手填一个,或在「订阅管理」里导入订阅节点、同步 Clash Verge 的出口。": "Ainda não há proxies. Clique em \"+ Adicionar proxy\" no canto superior direito para preencher manualmente, ou importe nós de assinatura / sincronize os endpoints do Clash Verge em \"Gerenciar assinaturas\".", "还没有代理。点右上角「+ 新增代理」手填一个,或点「同步 Clash Verge」把 Clash 的出口导进来。": "Ainda não há proxies. Clique em “+ Adicionar proxy” no canto superior direito para preencher um manualmente, ou em “Sincronizar Clash Verge” para importar os endpoints do Clash.", "还没有订阅:粘贴订阅链接、导入本地 YAML 文件,或从图片识别二维码。": "Nenhuma assinatura ainda: cole um link de assinatura, importe um arquivo YAML local ou leia um QR code de uma imagem.", "还没有账号使用它(端口只在被账号引用时才分配 —— 在账号里选它并保存后,内核会自动开端口)": "Nenhuma conta usa este nó ainda (a porta só é atribuída quando uma conta referencia o nó — selecione-o em uma conta e salve, e o kernel abrirá a porta automaticamente)", "还没有账号或服务线路使用它;在账号或更新设置中选中并保存后,内核会自动开端口": "Nenhuma conta ou rota de serviço usa este nó ainda. Selecione-o nas configurações de conta ou atualização e salve para o kernel abrir a porta automaticamente.", "这是网关机器上的安装目录,留空使用默认位置。导入会复制文件并建立版本目录,不删除原下载文件。": "Esta é a pasta de instalação na máquina do gateway. Deixe vazia para usar o local padrão. A importação copia o arquivo para uma pasta versionada sem excluir o download original.", "这条在 Clash Verge 里是停用的,本页启用不生效 —— 到 Clash Verge 里打开它": "Este item está desativado no Clash Verge, então ativá-lo aqui não tem efeito — ligue-o no Clash Verge", "这里只连接你提供的代理地址,不接管代理服务的安装与运行。": "Apenas conecta aos endereços de proxy que você fornece; não gerencia a instalação nem a execução do serviço de proxy.", "连接成功": "Conectado", "连通性": "Conectividade", "连通性测试设置": "Configurações do teste de conectividade", "选中的 {n} 条都是同步来的只读条目(Clash / 订阅),不能删除": "As {n} entradas selecionadas são somente leitura sincronizadas (Clash / assinaturas) e não podem ser excluídas", "选中的 {n} 条都来自 Clash Verge 同步,不能删除(请到 Clash Verge 里删)": "Os {n} itens selecionados vêm todos da sincronização com o Clash Verge e não podem ser excluídos (exclua-os no Clash Verge)", "选中的代理用于{services};删除后这些线路将不可用,不会自动回退直连。": "Os proxies selecionados são usados para {services}. Excluí-los deixa essas rotas indisponíveis; elas não voltam automaticamente à conexão direta.", "选择 YAML 文件…": "Escolher arquivo YAML…", "选择内核文件…": "Escolher arquivo do kernel…", "选择目录…": "Escolher pasta…", "选项来自「网络代理」页(Clash Verge 同步的出口在这里可用;订阅节点要等内核起来才有端口)。选「直连」时连不上会自动借 Clash 混合端口重试一次;选定某条线路后只走它。": "As opções vêm da página \"Proxy de rede\" (as saídas sincronizadas do Clash Verge funcionam aqui; nós de assinatura só ganham porta depois que o kernel inicia). Em \"Conexão direta\", uma falha tenta uma vez pela porta mista do Clash; ao escolher uma rota, só ela é usada.", "通过代理访问该网址,检查是否能收到 HTTP 响应。留空沿用网关默认值。": "Acesse esta URL pelo proxy para verificar se recebe uma resposta HTTP. Deixe em branco para usar o padrão do gateway.", "部分测试结果没能记下:{reason}": "Alguns resultados de teste não puderam ser registrados: {reason}", "重启内核": "Reiniciar kernel", "重新选择文件…": "Escolher outro arquivo…", "需要干净的出口?": "Precisa de uma saída limpa?", "需要用户名和密码(可选)": "Exigir usuário e senha (opcional)", "非直连": "Encadeado", "非直连代理": "Encadear pelo proxy do sistema", "非直连会先经过网关所在设备的系统代理,再连接到此代理;系统代理不可用时不会改走直连。": "Conecta primeiro pelo proxy do sistema no dispositivo do gateway e depois por este proxy. Se o proxy do sistema estiver indisponível, não haverá conexão direta automática.", "首次购买使用优惠码 AGENT2API25 享 75 折。": "Use o código AGENT2API25 para 25% de desconto na primeira compra.", "+ 新增代理": "+ Adicionar proxy", "+ 新增订阅": "+ Nova assinatura", ",": "; ", " 或 ": " ou ", "Anthropic SDK 会自动携带版本头;手写 Messages 请求可使用 2023-06-01。/v1/models 收到该头或 x-api-key 时返回 Anthropic 列表形态。": "O SDK Anthropic adiciona o cabeçalho de versão automaticamente; requisições Messages manuais podem usar 2023-06-01. /v1/models retorna a lista no formato Anthropic quando recebe esse cabeçalho ou x-api-key.", "Anthropic 业务错误结构示例": "Exemplo de erro Anthropic de negócio", "Anthropic 官方 SDK / Claude Code 使用的根地址:": "Endereço raiz para o SDK oficial Anthropic / Claude Code: ", "Anthropic 标准要求显式填写正整数。网关对缺失或无效值补 8192,但上游模型的实际预算仍可能更低。": "O padrão Anthropic exige inteiro positivo explícito. O gateway substitui valor ausente ou inválido por 8192, mas o modelo upstream pode ter orçamento menor.", "Antigravity 支持宽高比 1:1、2:3、3:2、3:4、4:3、4:5、5:4、9:16、16:9、21:9,尺寸会映射到原生 1K / 2K / 4K 档。请求最长边 ≤1792 为 1K,1793–3072 为 2K,3073–4096 为 4K;超过 4096 会被该提供商拒绝。": "Antigravity aceita proporções 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9 e 21:9, mapeando para níveis nativos 1K / 2K / 4K. Maior lado ≤1792 vira 1K, 1793–3072 vira 2K, 3073–4096 vira 4K; acima de 4096 é recusado por esse provedor.", "Antigravity 的 size=auto 生成使用 1:1、1K;参考图编辑使用 1K 且不强制正方形。模型版本可能有更严格的输出限制;宽高比需接近支持值,不能任意指定像素尺寸。": "Em Antigravity, size=auto gera em 1:1 e 1K; edição usa 1K sem forçar quadrado. Versões de modelo podem limitar mais. Proporções devem ser próximas às suportadas; não aceita qualquer tamanho em pixels.", "Base URL 填进客户端的「API 地址 / Base URL」栏;对话协议按客户端支持的类型三选一(Chat Completions / Responses / Anthropic Messages),三者共用同一套模型与账号池,可随时切换;鉴权用「网关 Key」页里任一启用 Key。": "Preencha o Base URL no campo “Endereço da API / Base URL” do cliente; escolha um dos três protocolos de conversa conforme o tipo compatível com o cliente (Chat Completions / Responses / Anthropic Messages) — os três compartilham o mesmo conjunto de modelos e o mesmo pool de contas e podem ser alternados a qualquer momento; para autenticação, use qualquer Key habilitada na página “Chave do gateway”.", "Chat 流式成功通常以 data: [DONE] 收尾。需要同时处理 delta.content、思考字段和 delta.tool_calls;工具参数可能跨多个增量拼接。": "Um fluxo Chat bem-sucedido normalmente termina com data: [DONE]. Trate delta.content, raciocínio e delta.tool_calls; argumentos de ferramentas podem precisar ser montados de vários deltas.", "Chat、Responses 和图片接口通常返回 error 对象,其中 message 是可读说明,type 是错误类别,code 与 upstream_code 按情况附带。Anthropic 业务错误使用 type=error 的信封;鉴权中间件、无效 JSON 或网关层错误也可能返回通用 error 形态。": "Chat, Responses e imagens normalmente retornam error: message descreve, type classifica, code e upstream_code são opcionais. Erros Anthropic de negócio usam envelope type=error; autenticação, JSON inválido e erros do gateway também podem usar a estrutura error genérica.", "Claude Code / Anthropic SDK(token 计数:/v1/messages/count_tokens)": "Claude Code / Anthropic SDK (contagem de tokens: /v1/messages/count_tokens)", "Claude Code / Anthropic SDK;模型与账号池和 OpenAI 入口共用。": "Claude Code / SDK Anthropic; compartilha modelos e pool de contas com os endpoints OpenAI.", "Codex / 新版 OpenAI SDK;无状态转发,历史由客户端携带。": "Codex / SDKs OpenAI recentes; encaminhamento sem estado, com histórico enviado pelo cliente.", "GET /health 返回 status=ok 或 degraded。公网安全模式只返回简化探活信息;HTTP 200 或 status=ok 不代表所有提供商在线、账号有额度或图片模型可调用。": "GET /health retorna status=ok ou degraded. No modo seguro público, expõe apenas informação simplificada de atividade. HTTP 200 ou status=ok não garante todos os provedores online, contas com cota nem modelos de imagem utilizáveis.", "GET /health、GET /v1/models 和网关临时图片下载不强制检查 Key。模型清单可在配 Key 前读取,但这不能证明 Key 正确;应以携带该 Key 的实际业务请求为准。": "GET /health, GET /v1/models e downloads temporários do gateway não exigem Key. Ler a lista antes de configurar uma Key não valida essa Key; confirme com uma requisição protegida real usando-a.", "HTTP(S) 参考图由网关服务器下载,不携带网关 Key 或提供商凭证。外链必须能被网关无额外请求头访问;本机、内网、带用户名密码或不安全重定向地址会被拒绝。受保护图片建议直接上传文件。": "O servidor baixa referências HTTP(S) sem Key nem credenciais do provedor. URLs externas devem ser acessíveis sem cabeçalhos extras. Endereços locais, privados, com usuário/senha ou redirecionamentos inseguros são recusados. Prefira upload direto de imagens protegidas.", "JSON 图片引用编辑请求": "Requisição JSON de edição por referência", "JSON 图片生成请求": "Requisição JSON de geração de imagem", "JSON 的 images 是对象数组,每项只能包含 image_url。接受完整 HTTP(S) URL、data:image/...;base64,...,或先前响应返回的完整网关临时图片链接;不接受裸 base64、相对路径、file_id 或本地文件路径。": "Em JSON, images é array de objetos com apenas image_url. Aceita HTTP(S) absoluto, data:image/...;base64,... ou URL temporária completa já retornada pelo gateway. Não aceita base64 puro, caminhos relativos, file_id nem caminhos de arquivo local.", "JSON 请求使用 application/json。图片编辑上传文件时使用 multipart/form-data;curl -F 会自动生成 boundary,不要手动覆盖此请求头。": "Use application/json para JSON e multipart/form-data para upload de arquivos na edição de imagens. curl -F gera o boundary automaticamente; não sobrescreva esse cabeçalho manualmente.", "Key 缺失、无效、停用,或上游认证失败。网关未收到 Key 时返回 model_api_key_required,无效 Key 返回 invalid_api_key;请检查请求头与「网关 Key」页。": "Key ausente, inválida ou desabilitada, ou falha de autenticação upstream. O gateway retorna model_api_key_required quando falta a Key e invalid_api_key quando ela é inválida. Confira os cabeçalhos e a página Chave do gateway.", "Key 缺失、无效、停用,或上游认证失败。网关鉴权失败通常为 invalid_api_key;检查请求头与「网关 Key」页,而不是仅重拉模型列表。": "Key ausente, inválida, desabilitada ou falha de autenticação upstream. A falha de Key do gateway costuma ser invalid_api_key. Verifique cabeçalhos e a página Chave do gateway; atualizar modelos não basta.", "LLM 请求": "Requisições LLM", "Messages 响应结构": "Estrutura da resposta Messages", "Messages 请求": "Requisição Messages", "ModelScope 不支持 style、mask 与 input_fidelity;quality 仅接受省略、auto 或 standard,background 仅接受省略、auto 或 opaque,moderation 仅接受省略或 auto。风格与修改目标请写入 prompt。": "ModelScope não suporta style, mask ou input_fidelity. quality aceita omissão, auto ou standard; background aceita omissão, auto ou opaque; moderation aceita omissão ou auto. Descreva o estilo e as alterações em prompt.", "ModelScope 使用官方异步任务接口,创建后只查询同一任务,不会为了等待结果重新提交。单次 n=1;size 可省略、设为 auto,或指定边长 64–2048 的 WIDTHxHEIGHT,具体型号可能进一步限制。": "ModelScope usa a API oficial de tarefas assíncronas e consulta a mesma tarefa sem reenviar. Cada chamada usa n=1; size pode ser omitido, auto ou WIDTHxHEIGHT com lados de 64–2048. Modelos podem impor limites adicionais.", "OpenAI Python SDK 图片示例": "Exemplo de imagem com OpenAI Python SDK", "OpenAI SDK 的 base_url 填「接口地址」章节中以 /v1 结尾的 Base URL,不要填完整的 /chat/completions。Anthropic 官方 SDK 与 Claude Code 的 ANTHROPIC_BASE_URL 填网关根地址,不带 /v1;它们会自行追加 /v1/messages。其他客户端是否自动追加 /v1,以其地址栏说明为准。": "No SDK OpenAI, configure base_url com o Base URL terminado em /v1 no capítulo Endereço da API, e não com o endereço completo de /chat/completions. No SDK oficial Anthropic e no Claude Code, ANTHROPIC_BASE_URL deve ser a raiz do gateway sem /v1; eles acrescentam /v1/messages. Outros clientes podem adicionar /v1 de outra forma; siga a orientação do campo de endereço.", "OpenAI SDK 的 base_url 填上方以 /v1 结尾的 Base URL,不要填完整的 /chat/completions。Anthropic 官方 SDK 与 Claude Code 的 ANTHROPIC_BASE_URL 填网关根地址,不带 /v1;它们会自行追加 /v1/messages。其他客户端是否自动追加 /v1,以其地址栏说明为准。": "No SDK OpenAI, configure base_url com o Base URL acima, terminado em /v1, e não com o endereço completo de /chat/completions. No SDK oficial Anthropic e no Claude Code, ANTHROPIC_BASE_URL deve ser a raiz do gateway sem /v1; eles acrescentam /v1/messages. Outros clientes podem adicionar /v1 de outra forma; siga a orientação do campo de endereço.", "OpenAI 兼容客户端使用此地址;Anthropic 官方 SDK 使用下方说明中的网关根地址。": "Use este endereço em clientes compatíveis com OpenAI. O SDK oficial da Anthropic usa o endereço raiz do gateway descrito abaixo.", "OpenAI 新协议(Codex、新版 SDK)": "Novo protocolo da OpenAI (Codex, SDKs mais recentes)", "Python:生成、编辑并保存图片": "Python: gerar, editar e salvar imagens", "Responses 使用 function_call / function_call_output 配对,Anthropic 使用 tool_use / tool_result 配对。协议转换会处理这些格式,但不会替客户端执行自定义函数。上游原生搜索等服务端工具是否可用取决于提供商,不能当成网关统一能力。": "Responses associa function_call / function_call_output; Anthropic associa tool_use / tool_result. A conversão trata formatos, mas não executa funções personalizadas pelo cliente. Ferramentas nativas, como busca no upstream, dependem do provedor e não são uma capacidade universal do gateway.", "Responses 响应结构": "Estrutura da resposta Responses", "Responses 请求": "Requisição Responses", "SDK 示例使用的环境变量": "Variáveis de ambiente do exemplo SDK", "Token 估算响应": "Resposta da estimativa de tokens", "Token 数量估算": "Estimativa de tokens", "Token 自动续期": "Renovação automática de token", "WorkBuddy 走官方图片接口:size 省略或设为 auto 时按 1024x1024 请求;该通道不接受 quality、style、background 与 moderation,请把风格与质量要求写进 prompt。参考图以 data URL 内联在 JSON 请求里发送(不是 multipart),模型 id 由上游目录下发,换版本时以 /v1/models 为准。": "O WorkBuddy usa a API oficial de imagens: quando size é omitido ou definido como auto, a requisição usa 1024x1024; este canal não aceita quality, style, background nem moderation, então descreva estilo e qualidade no prompt. As imagens de referência vão embutidas como data URLs dentro do JSON (não multipart), e os ids de modelo vêm do catálogo do fornecedor — consulte /v1/models quando a versão mudar.", "base64 图片响应结构": "Estrutura da resposta base64", "chat 用于三种对话入口;image 用于 /v1/images/generations 和 /v1/images/edits。不要把图片模型提交给对话入口。": "chat usa os três endpoints de conversa; image usa /v1/images/generations e /v1/images/edits. Não envie modelos de imagem aos endpoints de conversa.", "count_tokens 在本地估算,不调用上游 tokenizer;返回 input_tokens 和 estimated=true。数值用于上下文预算,不用于精确计费,尤其不应当作图片的真实 Token 用量。": "count_tokens estima localmente sem chamar tokenizer upstream. Retorna input_tokens e estimated=true. Use para orçamento de contexto, não cobrança exata, especialmente não para o custo real de tokens de imagens.", "curl -F 自动生成 multipart boundary。不要额外设置 Content-Type: application/json 或手写无 boundary 的 multipart/form-data;prompt 使用 --form-string 可避免特殊字符被当作文件上传。": "curl -F gera o boundary. Não acrescente Content-Type: application/json nem multipart/form-data manual sem boundary. Use --form-string em prompt para não interpretar caracteres especiais como upload de arquivo.", "response_format=b64_json 时返回不带 data URL 前缀的标准 base64。解码为二进制后保存;网页展示时自行加对应 MIME 类型前缀。": "Com response_format=b64_json, retorna base64 padrão sem prefixo data URL. Decodifique em binário para salvar; na web, adicione o prefixo MIME adequado.", "response_format=url 不保证永久地址;网关临时链接与 AI 助手会话中的图片存储是两套机制,不能混用接口或有效期。": "response_format=url não garante URL permanente. Links temporários e armazenamento de imagem da sessão do assistente são mecanismos distintos; endpoints e validades não são intercambiáveis.", "response_format=url 时返回。可能是提供商签名链接,也可能是网关临时下载链接;应直接使用返回值,不要自行拼下载 id。": "Retornado com response_format=url. Pode ser URL assinada do provedor ou temporária do gateway. Use o valor retornado, não crie ids de download.", "stream 默认 false;true 返回 Anthropic 事件流。stop_sequences 映射为停止序列,是否支持取决于上游。": "stream é false por padrão; true retorna eventos Anthropic. stop_sequences mapeia sequências de parada, com suporte definido pelo upstream.", "usage 的 prompt_tokens、completion_tokens、total_tokens 表示用量,不等于统一货币价格。上游未提供时可能缺失或为 0。": "prompt_tokens, completion_tokens e total_tokens em usage medem uso, não um preço monetário uniforme. Podem faltar ou ser 0 quando o upstream não os fornece.", "✓ 支持 · ✗ 不支持 · — 无此概念 · ? 未声明": "✓ Suportado · ✗ Não suportado · — Não se aplica · ? Não declarado", "。一把启用的 Key 都没有时不鉴权(默认网关只监听 127.0.0.1;在设置页开启「局域网访问」后监听所有网卡,鉴权与安全闸门随之启用)。": ". Se nenhuma Key estiver habilitada, não há autenticação (por padrão, o gateway escuta apenas 127.0.0.1; após habilitar “Acesso LAN” na página de configurações, ele passa a escutar todas as interfaces de rede, e a autenticação e as barreiras de segurança entram em vigor).", "三种对话协议的流式错误需要检查事件内容与正常结束标记;HTTP 200 本身不足以证明成功。图片接口仅返回非流式 JSON。": "Nos três protocolos de conversa, verifique eventos e encerramento normal. HTTP 200 sozinho não comprova sucesso. Imagens retornam apenas JSON sem streaming.", "上一章": "Capítulo anterior", "上传一张或多张参考图,并用提示词描述保留内容与修改目标。": "Envie uma ou mais referências e descreva no prompt o que preservar e o que alterar.", "上传一张本地参考图": "Enviar uma imagem de referência local", "上传多张参考图": "Enviar várias imagens de referência", "上传本地文件推荐 multipart/form-data;已经有图片 URL 或 base64 时可发送 application/json。除参考图字段外,参数与图片生成相同。": "Use multipart/form-data para arquivos locais ou application/json para URL ou base64 existente. Exceto referências, os parâmetros são os mesmos da geração.", "下一章": "Próximo capítulo", "下表是网关接受的参数范围,不是所有提供商都支持的范围。生成与编辑共用这些字段,具体上游可能进一步拒绝数量、质量、风格、背景或尺寸。": "A tabela mostra parâmetros aceitos pelo gateway, não suporte comum a todos os provedores. Geração e edição compartilham esses campos, mas upstreams podem restringir quantidade, qualidade, estilo, fundo ou tamanho.", "下载并保存网关临时图片": "Baixar e salvar imagem temporária do gateway", "下载返回原始图片二进制及 image/png、image/jpeg 或 image/webp Content-Type,不是 JSON。不存在或过期返回 404,响应使用 private, no-store 与 nosniff。": "Download retorna bytes da imagem com Content-Type image/png, image/jpeg ou image/webp, não JSON. Link ausente ou expirado retorna 404; usa private, no-store e nosniff.", "不强制鉴权;仅用于确认网关可访问,不保证模型或额度可用。": "Autenticação não obrigatória; confirma acesso ao gateway, não disponibilidade de modelos ou cota.", "不强制鉴权;携带有效 Key 可查看该 Key 获准使用的模型。": "Autenticação não obrigatória; uma Key válida filtra a lista para os modelos autorizados para ela.", "不携带 Anthropic 相关头时,模型接口返回 OpenAI 风格的 object=list、data 数组和 meta 摘要;携带 anthropic-version 或 x-api-key 时,返回 data、has_more、first_id、last_id,并保留能力扩展字段。": "Sem cabeçalhos Anthropic, retorna object=list, array data e resumo meta no formato OpenAI. Com anthropic-version ou x-api-key, retorna data, has_more, first_id e last_id, mantendo extensões de capacidade.", "不支持依赖服务端状态的 previous_response_id、conversation、托管提示词 prompt,以及 background=true;请由客户端保存并回传历史,不要调用未实现的 Responses 查询或删除接口。": "previous_response_id, conversation, prompt hospedado e background=true, que exigem estado no servidor, não são suportados. Salve e reenvie o histórico no cliente; não chame endpoints de consulta ou exclusão Responses não implementados.", "不要把 base64 图片塞回对话文本或日志,也不要将“请求超时”理解为“没有扣费”。如需连续编辑,保存结果文件后再作为下一次 image 上传。": "Não coloque base64 de imagens no texto da conversa nem em logs, e não interprete timeout como ausência de cobrança. Para edições sucessivas, salve o resultado e envie como o próximo image.", "业务请求的 model 值。owned_by 表示目录条目的归属,不保证每次请求都由该提供商承载;同名模型与映射可能有多个路由。": "Valor de model nas requisições. owned_by indica o proprietário do item no catálogo, não necessariamente quem atende cada chamada; modelos com mesmo nome e mapeamentos podem ter várias rotas.", "临时图片下载": "Download de imagem temporária", "也可使用 x-api-key: YOUR_GATEWAY_KEY,常用于 Anthropic 客户端。两种鉴权头任选一种即可,不要填提供商账号令牌或面板登录令牌。": "Também é possível usar x-api-key: YOUR_GATEWAY_KEY, comum em clientes Anthropic. Escolha um dos dois cabeçalhos; não use tokens de conta do provedor nem tokens de login do painel.", "仅可省略或设为 stream=false、partial_images=0。当前不支持图片事件流、渐进图片或流式部分结果。未知参数会被拒绝,不会静默忽略。": "Omita ou defina stream=false e partial_images=0. Eventos de imagem, imagens progressivas e resultados parciais em streaming não são suportados. Parâmetros desconhecidos são recusados, não ignorados.", "仅在上游返回修改后的提示词时保留,不保证每个模型都有。": "Preservado apenas quando o upstream retorna prompt revisado; nem todo modelo fornece.", "仅在显式指定 output_format=jpeg 时支持,网关按 JPEG 质量参数编码。PNG、WebP 当前不支持此参数。": "Somente com output_format=jpeg explícito; usa parâmetro de qualidade JPEG. PNG e WebP não suportam este campo atualmente.", "仅用于响应返回的网关临时链接;{id} 必须替换为实际下载令牌。": "Apenas para links temporários do gateway retornados na resposta; substitua {id} pelo token real de download.", "仍从当前网关目录选择对话模型,不要求模型名称一定以 claude 开头。具体能力以实际承载模型为准。": "Escolha um modelo de conversa no catálogo atual do gateway; o nome não precisa começar com claude. Capacidades dependem do modelo que realmente atende.", "估算输入 Token 数量": "Estimar tokens de entrada", "使用 supports_image_editing=true 的图片模型。该接口是参考图编辑、重绘或合成,不是精确遮罩修补;当前不支持 mask 与 input_fidelity,也不支持 file_id。": "Use modelo de imagem com supports_image_editing=true. Serve para editar, redesenhar ou compor referências, não preenchimento preciso por máscara. mask, input_fidelity e file_id não são suportados.", "使用与 Chat 相同的对话模型 id 和 Key 授权规则。": "Use os mesmos ids de modelos de conversa e regras de autorização da Key que no Chat.", "使用同一客户端生成与编辑,并将返回的 base64 保存为图片文件。": "Gere e edite com o mesmo cliente e salve o base64 retornado como arquivo de imagem.", "使用支持工具调用的模型。函数声明、调用结果配对与多模态请求示例见「看图与工具调用」章节。": "Use um modelo compatível com ferramentas. Consulte o capítulo Visão e chamadas de ferramentas para declarações de funções, correspondência de resultados e exemplos multimodais.", "使用支持工具调用的模型。函数声明、调用结果配对与多模态请求示例见下一节。": "Use um modelo compatível com ferramentas. A próxima seção traz declarações de funções, correspondência de resultados e exemplos multimodais.", "使用说明与兼容边界": "Notas de uso e compatibilidade", "健康检查": "Verificação de saúde", "先前网关返回的 /v1/images/files/{id} 完整链接可在未过期时作为 JSON 参考图。不要把 AI 助手内部的 assistant-image:ID 当成对外接口图片 URL。": "Uma URL /v1/images/files/{id} completa retornada pelo gateway pode ser referência JSON enquanto válida. Não use assistant-image:ID interno do assistente como URL da API pública.", "先确定网关地址、Key 和模型,再选择客户端支持的协议。": "Defina o endereço do gateway, a Key e o modelo antes de escolher um protocolo compatível com o cliente.", "兼容 Anthropic 消息块与 SSE 事件,支持本地 Token 预算估算。": "Compatível com blocos Anthropic e eventos SSE, com estimativa local de orçamento de tokens.", "兼容 Responses 请求与事件格式,适合 Codex 等客户端;不是服务端会话存储。": "Compatível com requisições e eventos Responses para clientes como Codex; não é armazenamento de conversa no servidor.", "内置 AI 助手已有 generate_images 与 edit_images 工具,可在助手设置中启用并按确认模式执行。外部 API 客户端不会自动获得这些工具;需要由客户端声明并实际调用图片接口。": "O assistente integrado tem generate_images e edit_images, habilitáveis nas configurações e executadas conforme o modo de confirmação. Clientes externos não recebem essas ferramentas automaticamente; devem declará-las e chamar os endpoints de imagem.", "函数工具使用 Responses 的声明格式;工具结果以 function_call_output 携带相同 call_id。实际工具能力仍依赖模型与提供商。": "Declare funções no formato Responses. Envie resultados como function_call_output com o mesmo call_id. Suporte real depende do modelo e provedor.", "函数工具声明包含 name、description、input_schema;结果在后续 user 消息的 tool_result 块中携带对应 tool_use_id。": "Funções declaram name, description e input_schema. Resultados usam blocos tool_result na mensagem user seguinte com o tool_use_id correspondente.", "分别可能表示请求中断或请求过大。参考图过大时需缩小图片或减少数量,原样重试不会解决;中断的图片任务可能已经消耗额度。": "Podem indicar interrupção e requisição excessiva, respectivamente. Reduza imagens de referência ou quantidade; repetir os mesmos dados não resolve. Um trabalho de imagem interrompido já pode ter consumido cota.", "分别控制输出上限与是否流式。stream 默认 false;true 返回 Responses 命名事件。": "Controlam limite de saída e streaming. stream é false por padrão; true retorna eventos Responses nomeados.", "分别表示工具调用与思考能力。是否生效仍取决于实际承载模型、提供商和相关设置。": "Indicam, respectivamente, suporte a ferramentas e raciocínio. O funcionamento também depende do modelo que atende, provedor e configurações.", "分别请求思考档位与结构化输出;能力和可用取值依赖模型。不要因字段被接受就假定上游已经执行。": "Solicitam esforço de raciocínio e saída estruturada, respectivamente. Capacidades e valores dependem do modelo; aceitar um campo não prova que o upstream o aplicou.", "协议兼容不保证工具、思考、结构化输出、透明背景或每个尺寸都被所有提供商支持。先查看当前模型能力和插件版本,再核对请求日志的承载提供商与错误摘要。": "Compatibilidade de protocolo não garante ferramentas, raciocínio, saída estruturada, transparência ou todos os tamanhos em todos os provedores. Confira capacidades e versão do plugin, depois o provedor e o resumo de erro nos logs.", "单图可用 image=@reference.png,多图重复提交 image[]。也兼容 images、images[] 与 image[0] 这类数字索引字段;普通参数不能重复提交。": "Uma imagem: image=@reference.png; várias: repita image[]. Também aceita images, images[] e índices como image[0]. Parâmetros comuns não podem ser repetidos.", "单轮可以是字符串;多轮使用消息与工具项数组,客户端应携带必要历史。文本块使用 input_text,图片块使用 input_image。": "Use string para um turno ou array de mensagens e ferramentas para vários turnos, incluindo o histórico necessário. Texto usa input_text; imagem usa input_image.", "参考图编辑": "Edição com imagens de referência", "参考图编辑;支持 multipart 文件上传或 JSON 图片引用。": "Edição com referências; aceita upload multipart ou referências de imagens em JSON.", "只支持这三种可解码图片格式,校验实际文件内容而不是仅看扩展名;单张最多 10 MiB,边长最多 8192。": "Apenas esses três formatos decodificáveis. Valida conteúdo real, não só extensão. Até 10 MiB por imagem e lados de até 8192 pixels.", "可用值为 auto、standard、hd、low、medium、high、xhigh、max。小浣熊与 Antigravity 仅接受省略、auto 或 standard;其他值是否有效取决于 Loomy 的具体模型。": "Valores aceitos: auto, standard, hd, low, medium, high, xhigh, max. Raccoon e Antigravity só aceitam omissão, auto ou standard; outros valores dependem do modelo Loomy.", "可省略,或使用 auto、WIDTHxHEIGHT,例如 1024x1024。网关校验边长 1–8192,提供商可能进一步限制宽高比与分辨率,不保证精确像素输出。": "Opcional, auto ou WIDTHxHEIGHT, como 1024x1024. Valida lados de 1–8192; provedores podem limitar proporção e resolução. Pixels exatos não são garantidos.", "可能是网关内部错误、上游异常、插件未接入、暂无可用账号、图片下载或编码失败。": "Possível erro interno do gateway, falha upstream, capacidade ausente no plugin, conta indisponível ou falha no download e na codificação da imagem.", "可能是网关内部错误、上游异常、插件未接入、暂无可用账号、图片下载或编码失败。公网模式的 api_key_not_configured 表示必须先配置网关 Key。": "Possível erro interno, falha upstream, capacidade ausente no plugin, conta indisponível ou falha no download/codificação. api_key_not_configured no modo público exige configurar primeiro uma Key do gateway.", "可能附带实际输出编码、用量或点数。usage 与 points_consumed 取决于上游,缺失不代表免费;若未要求固定编码,不要默认所有图片都是 PNG。": "Pode incluir codificação real, uso ou pontos. usage e points_consumed dependem do upstream; ausência não significa grátis. Sem formato pedido, não presuma que tudo seja PNG.", "可选的调用方用户标识,不是网关鉴权 Key,也不能用于指定账号或绕过 Key 的授权范围。是否传递与处理取决于提供商。": "Identificador opcional do usuário chamador, não uma Key de autenticação. Não seleciona contas nem contorna autorização. Encaminhamento e tratamento dependem do provedor.", "启用": "ativos", "图片响应与下载": "Respostas e downloads de imagens", "图片响应创建时间,Unix 秒。不要与错误限额恢复字段 reset_at 的毫秒单位混用。": "Horário de criação da resposta em segundos Unix. Não confunda com reset_at de erros, que usa milissegundos.", "图片生成与共用参数": "Geração de imagens e parâmetros comuns", "图片生成与编辑": "Geração e edição de imagens", "图片输入是理解图片,工具调用是由客户端执行动作;二者都需要模型能力支持。": "Entrada de imagem interpreta imagens; chamadas de ferramentas pedem ações executadas pelo cliente. Ambas exigem suporte do modelo.", "在线模型列表": "Lista online de modelos", "在线模型列表指自动拉取上游目录;仅有静态模型清单不算在线支持。": "Uma lista online permite obter automaticamente o catálogo upstream; uma lista apenas estática não conta como suporte online.", "地址速查与请求示例使用当前网关地址。从其他设备访问时,127.0.0.1 指向那台设备自身,必须换成实际可达的网关地址。": "A lista de endereços e os exemplos usam o gateway atual. Em outro dispositivo, 127.0.0.1 aponta para o próprio dispositivo; substitua pelo endereço que realmente alcança o gateway.", "填进客户端的「API 地址 / Base URL」": "Preencha no campo “Endereço da API / Base URL” do cliente", "声明函数工具的请求体": "Corpo da requisição declarando função", "复制地址": "Copiar endereço", "复制示例": "Copiar exemplo", "多图有顺序意义:在 prompt 中明确“第 1 张是主体,第 2 张是风格参考”等关系。编辑不保证逐像素保真,要求保留的主体、文字或布局应明确描述。": "A ordem importa. Explique em prompt, por exemplo, 'imagem 1 é o assunto; imagem 2 é referência de estilo'. A edição não garante preservação pixel a pixel; indique assunto, texto ou layout a manter.", "多数 OpenAI 兼容客户端的默认协议": "Protocolo padrão da maioria dos clientes compatíveis com OpenAI", "字段 / 状态": "Campo / status", "字段与限制": "Campos e limites", "安装并使用支持 Images 参数的 OpenAI Python SDK。先按接入章节设置 GATEWAY_KEY 与 IMAGE_MODEL_ID,编辑前确认该模型支持参考图,并准备本地 reference.png。": "Use uma versão do SDK OpenAI Python com suporte aos parâmetros Images. Configure GATEWAY_KEY e IMAGE_MODEL_ID conforme a seção de conexão. Verifique suporte a edição e prepare reference.png local.", "客户端自动拉取可用模型;不受鉴权限制,配 Key 之前就能拉": "O cliente busca automaticamente os modelos disponíveis; não exige autenticação e pode ser consultado antes de configurar uma Key", "对话协议": "Protocolos de conversa", "对话协议与上下文预算": "Protocolos de conversa e orçamento de contexto", "对话协议(按客户端支持的类型选一行)": "Protocolo de conversa (escolha uma linha conforme o tipo compatível com o cliente)", "对话模型看图请求": "Requisição de visão com modelo de conversa", "小浣熊与 Antigravity 不支持此字段,请在 prompt 中描述风格;Loomy 转交上游,由模型决定是否支持。": "Raccoon e Antigravity não suportam este campo; descreva o estilo em prompt. Loomy repassa ao upstream, cujo modelo decide o suporte.", "小浣熊与 Antigravity 仅接受省略、auto 或 opaque;不保证所有模型都能生成透明背景。文件转码不会自动抠图。": "Raccoon e Antigravity só aceitam omissão, auto ou opaque. Nem todo modelo gera fundo transparente; conversão de arquivo não remove fundo automaticamente.", "小浣熊与 Antigravity 仅接受省略或 auto。该字段不保证上游降低审核强度,内容政策拒绝不会自动重试。": "Raccoon e Antigravity só aceitam omissão ou auto. Não garante redução de moderação upstream; rejeições de política não são repetidas automaticamente.", "小浣熊使用 raccoon-image;Loomy 使用目录中的 kind=image 模型;Antigravity 使用目录中的 gemini-*-image 模型;ModelScope 使用已确认支持的 Qwen-Image、Z-Image 或 Qwen-Image-Edit 型号;WorkBuddy 使用目录中带 text-to-image 或 image-to-image 标签的模型,例如 hunyuan-image-alpha 与 hunyuan-image-alpha-edit。实际 model 值以当前 /v1/models 为准,不要直接复制官方 API 的默认模型名。": "Raccoon usa raccoon-image; Loomy usa os modelos kind=image do catálogo; Antigravity usa os modelos gemini-*-image do catálogo; ModelScope usa os modelos Qwen-Image, Z-Image ou Qwen-Image-Edit confirmados; WorkBuddy usa os modelos do catálogo com a tag text-to-image ou image-to-image, como hunyuan-image-alpha e hunyuan-image-alpha-edit. Use o valor real de model conforme o /v1/models atual; não copie nomes de modelo dos padrões da API do fornecedor.", "展开目录": "Expandir sumário", "工具服务 API": "API de serviços de ferramentas", "工具服务 API 文档": "Documentação da API de serviços de ferramentas", "工具服务 API 是网关对外的固定接口,路径以 /api/web-search 开头;不属于 /v1 对话协议,也不是管理面板的管理接口,鉴权同样使用网关 Key。": "A API de serviços de ferramentas é uma interface fixa exposta pelo gateway, com caminhos iniciados por /api/web-search. Não faz parte dos protocolos de conversa /v1 nem é uma API do painel de gerenciamento; a autenticação também usa uma chave do gateway.", "已实现,待实测": "Implementado; aguardando teste real", "已实现,待实测:仅表示代码已接入,尚未通过真实账号验证。": "Implementado; aguardando teste real: o código foi integrado, mas ainda não foi validado com uma conta real.", "建议显式填写图片模型 id。省略时从当前 Key 可用目录中选择支持本次操作的图片模型,不使用对话默认模型;没有对应能力模型时返回 503。": "Informe explicitamente um id de imagem. Se omitido, seleciona no catálogo autorizado um modelo compatível com a operação, não o padrão de conversa. Retorna 503 se não houver modelo capaz.", "待实测": "Aguardando teste real", "必填。使用 user / assistant 角色;content 可为字符串或 text、image、tool_use、tool_result 等内容块。": "Obrigatório. Use papéis user / assistant. content pode ser string ou blocos text, image, tool_use e tool_result.", "必填。包含 role 与 content;常见角色为 system、user、assistant,工具结果使用 tool。文本可直接使用字符串,多模态使用内容块数组。": "Obrigatório. Cada item contém role e content; papéis comuns são system, user e assistant, com tool para resultados. Texto pode ser string; conteúdo multimodal usa array de blocos.", "必填且不能为空,最多 32000 个字符。描述主体、构图、风格和修改目标;当前不支持 mask,编辑范围也应在提示词中说明。": "Obrigatório e não vazio, até 32000 caracteres. Descreva assunto, composição, estilo e mudanças. mask não é suportado; descreva também a região de edição no prompt.", "执行工具后回传结果的请求体": "Corpo da requisição com resultado executado", "找到 {count} 个章节": "{count} capítulos encontrados", "排错与限制": "Solução de problemas e limites", "接入与鉴权": "Conexão e autenticação", "接入指南": "Primeiros passos", "接入指南与接口参考": "Guias e referência da API", "接口参考目录": "Sumário da referência da API", "接口地址": "Endereço da API", "推荐使用 Authorization: Bearer YOUR_GATEWAY_KEY;Key 来自「网关 Key」页,并且必须处于启用状态。": "Use Authorization: Bearer YOUR_GATEWAY_KEY. Obtenha uma Key habilitada na página Chave do gateway.", "推荐显式指定当前目录中的对话模型 id。省略时尝试网关默认模型;默认选择也受该 Key 的授权范围限制。": "Recomenda-se escolher explicitamente o id de um modelo de conversa no catálogo atual. Se omitido, tenta o padrão do gateway, respeitando a autorização da Key.", "描述输入与输出模态,例如 text、image、video。字段缺失不表示自动支持其他文件、音频或服务端上传接口。": "Descrevem modalidades de entrada e saída, como text, image e video. Ausência de campos não implica suporte a outros arquivos, áudio ou endpoints de upload no servidor.", "提供商能力": "Capacidades dos provedores", "提供商能力适配表": "Matriz de capacidades dos provedores", "搜索文档": "Buscar na documentação", "搜索文档、参数或接口…": "Buscar documentos, parâmetros ou APIs…", "收起全部": "Recolher tudo", "收起目录": "Recolher sumário", "文本生成图片;JSON 请求,非流式返回 base64 或下载链接。": "Gere imagens por texto; envie JSON e receba base64 ou links de download sem streaming.", "文档内容": "Documentação", "文档目录": "Sumário da documentação", "无此概念": "Não se aplica", "映射为思考档位与结构化输出请求;支持范围以目标模型为准。": "Mapeiam para esforço de raciocínio e saída estruturada; valores suportados dependem do modelo de destino.", "未声明表示插件没有提供明确结论,不等于不支持。": "Não declarado significa que o plugin não forneceu uma conclusão definitiva; não significa ausência de suporte.", "未声明表示网关本体或插件没有提供明确结论,不等于不支持。": "Não declarado significa que o gateway ou plugin não forneceu uma conclusão definitiva; não significa ausência de suporte.", "本体订阅": "Assinaturas nativas", "本地上下文预算估算,返回 estimated=true;不是上游精确分词。": "Estimativa local do orçamento de contexto, com estimated=true; não é a tokenização exata do upstream.", "本机免鉴权模式没有启用 Key 时可调用;启用任意 Key 后,受保护接口都要携带有效 Key。公网安全模式没有配置 Key 时会拒绝受保护的 /v1 请求,并返回 503 api_key_not_configured。": "O modo local sem autenticação permite chamadas quando nenhuma Key está habilitada. Ao habilitar uma Key, endpoints protegidos exigem uma Key válida. No modo seguro de rede pública, sem Key configurada, requisições /v1 protegidas são recusadas com 503 api_key_not_configured.", "本页只说明实际提供的接口,不等于完整复刻 OpenAI / Anthropic 服务。未列出的 Files、Batch、图片 variations、服务端会话存储等端点不要假定可用。": "Esta página documenta endpoints implementados, não uma réplica completa da OpenAI / Anthropic. Não presuma endpoints Files, Batch, variations de imagem ou armazenamento de conversa que não estejam listados.", "本页说明对外的 /v1 接口,不是管理面板的 /api 接口。三种对话协议共用模型目录、模型映射、账号池和网关 Key,但请求与响应格式不同。": "Esta página descreve os endpoints públicos /v1, não os endpoints /api do painel. Os três protocolos de conversa compartilham catálogo, mapeamentos, pool de contas e Keys do gateway, mas os formatos de requisição e resposta são diferentes.", "查看当前网关的客户端地址和各接口路径,一键复制后即可使用。": "Consulte os endereços para clientes e os caminhos dos endpoints do gateway atual, prontos para copiar e usar.", "根据文字提示生成图片。请求使用 JSON,生成与编辑均只支持非流式响应。": "Gere imagens por instrução textual. JSON na requisição; geração e edição só têm respostas sem streaming.", "检查网关是否可访问": "Verificar acesso ao gateway", "模型不存在、已关闭或不在 Key 授权范围,常附 model_not_found;也可能是路径错误,或临时图片下载链接已过期。": "Modelo inexistente, desabilitado ou fora da autorização, geralmente com model_not_found. Também pode ser caminho incorreto ou URL de imagem temporária expirada.", "模型列表": "Lista de modelos", "模型发现与健康检查": "Descoberta de modelos e saúde", "模型清单": "Catálogo de modelos", "模型清单与健康检查": "Lista de modelos e verificação de saúde", "模型清单反映当前账号、模型启停与映射配置。不带 Key 时可读取公开清单;携带 Key 时必须有效,返回内容按该 Key 的授权范围过滤,无效 Key 返回 401。": "A lista de modelos reflete as contas, a ativação dos modelos e os mapeamentos atuais. Sem Key, a lista pública pode ser lida. Uma Key enviada deve ser válida, e a lista é filtrada por sua autorização; Keys inválidas retornam 401.", "模型清单反映当前账号、模型启停与映射配置;携带有效网关 Key 时进一步按该 Key 的授权范围过滤。不带 Key 或 Key 无效时仍可读取未按该 Key 收窄的清单。": "A lista reflete contas atuais, ativação de modelos e mapeamentos. Uma Key válida filtra ainda mais pela sua autorização. Sem Key ou com uma Key inválida, a lista não é limitada por essa Key.", "模型清单结构示例": "Exemplo da estrutura da lista de modelos", "模型调用始终需要启用且可用的网关 API Key,即使只在本机使用也不能免鉴权。管理员登录会话只用于管理面板,不能代替模型调用的 Key。": "Chamadas de modelo sempre exigem uma API Key do gateway habilitada e utilizável, mesmo no uso local. Sessões de administrador só autorizam o gerenciamento do painel e não substituem a Key nas chamadas de modelo.", "每把 Key 的可用模型、可用提供商限制同样适用于生图和编辑图。模型名称使用 /v1/models 中的 id 或已配置的映射名,不要直接使用展示名称。": "As restrições de modelos e provedores por Key também valem para geração e edição. Use o id de /v1/models ou um nome de mapeamento configurado, não o nome de exibição.", "没有找到匹配的文档": "Nenhum documento encontrado", "流式以 message_start 开始,经 content_block_start / content_block_delta / content_block_stop,最终 message_delta 与 message_stop 收尾;不要按 Chat 的 [DONE] 规则解析。": "Começa com message_start, passa por content_block_start / content_block_delta / content_block_stop e termina em message_delta e message_stop. Não use a convenção [DONE] do Chat.", "流式包含 response.created、response.output_text.delta 和最终 response.completed 等事件;错误可能以 response.failed 结束。输出预算不足时检查 incomplete 状态与 incomplete_details。": "O fluxo inclui response.created, response.output_text.delta e response.completed final. Erros podem terminar em response.failed. Verifique incomplete e incomplete_details quando faltar orçamento de saída.", "流式对话请求": "Requisição de conversa com streaming", "流式开始后 HTTP 状态码无法再改;即使已经收到 200,也要检查流内错误、结束原因及是否正常收尾,不能把断流视为成功。": "O status HTTP não muda após iniciar o streaming. Mesmo com 200, verifique erros no fluxo, motivos de término e encerramento normal; uma desconexão não é sucesso.", "流式用量可请求 include_usage=true;最终是否返回用量取决于上游,不应假设每个增量都有 usage。": "Solicite include_usage=true para uso no streaming. A presença do uso final depende do upstream; não espere usage em cada delta.", "清除搜索": "Limpar busca", "点击章节展开参数、示例和兼容边界;示例只供复制,不会在本页发起模型请求或消耗额度。": "Abra uma seção para ver parâmetros, exemplos e compatibilidade. Os exemplos servem só para copiar; esta página não chama modelos nem consome cota.", "生图可能消耗账号额度。先使用 n=1 和较小尺寸确认能力,内容政策拒绝或结果不确定时不要自动重复提交。": "Gerar imagens pode consumir cota. Comece com n=1 e tamanho menor. Não reenvie automaticamente após rejeição de política ou resultado incerto.", "生成、编辑与对话接口共用网关 Key;完整鉴权规则、模型能力和请求示例见下方章节。": "Geração, edição e conversa compartilham as Keys do gateway. Veja abaixo as regras de autenticação, capacidades dos modelos e exemplos de requisição.", "生成、编辑与对话接口共用网关 Key;鉴权规则、模型能力和请求示例可从文档目录查阅。": "Geração, edição e conversa compartilham as Keys do gateway. Consulte as regras de autenticação, capacidades dos modelos e exemplos no sumário da documentação.", "生成与编辑返回同一结构;base64 适合直接保存,URL 适合短期获取。": "Geração e edição retornam a mesma estrutura. Base64 é ideal para salvar; URL para obtenção temporária.", "用于请求思考配置或档位,由网关映射到目标模型;不保证所有 Anthropic 原生特性在跨协议转发时完全等价。": "Solicitam configuração ou esforço de raciocínio, mapeados ao modelo. Nem todas as funções nativas Anthropic são garantidas equivalentes na conversão entre protocolos.", "的 Key:请求带 ": " da página “Chave do gateway”; as requisições enviam ", "目前小浣熊、Loomy、Antigravity、ModelScope、WorkBuddy 已接入图片生成;Loomy、Antigravity、ModelScope 与 WorkBuddy 同时接入参考图编辑,小浣熊暂不支持编辑。需要当前提供商插件包含对应能力,并且账号、模型和 Key 授权可用。": "No momento, Raccoon, Loomy, Antigravity, ModelScope e WorkBuddy oferecem geração de imagens; Loomy, Antigravity, ModelScope e WorkBuddy também editam imagens de referência, enquanto Raccoon não edita. O plugin do provedor precisa incluir o recurso, e a conta, o modelo e a autorização da chave do gateway devem estar disponíveis.", "目录声明的上下文与最大输出预算,可能省略。预算和余额不是同一概念,也不能替代上游的实际限制。": "Orçamentos de contexto e saída máxima declarados pelo catálogo; podem ser omitidos. Orçamento de tokens não é saldo da conta e não substitui limites reais do upstream.", "看图与工具调用": "Visão e chamadas de ferramentas", "看图请求使用对话模型,并确认 supports_images=true。Chat 使用 text 与 image_url 内容块,图片值可为上游支持的 HTTP(S) URL 或 data URL;可用格式与大小取决于目标模型。「参考图编辑」章节的上传限制不应直接套用到所有对话模型。": "Para visão, use um modelo de conversa com supports_images=true. Chat usa blocos text e image_url com URLs HTTP(S) ou data URLs aceitas pelo upstream. Formatos e tamanhos dependem do modelo. Os limites de upload do capítulo Edição com imagens de referência não se aplicam automaticamente a todos os modelos de conversa.", "看图请求使用对话模型,并确认 supports_images=true。Chat 使用 text 与 image_url 内容块,图片值可为上游支持的 HTTP(S) URL 或 data URL;可用格式与大小取决于目标模型。下方编辑图的上传限制不应直接套用到所有对话模型。": "Para visão, use um modelo de conversa com supports_images=true. Chat usa blocos text e image_url com HTTP(S) ou data URLs aceitas pelo upstream. Formatos e tamanhos dependem do modelo; os limites de upload de edição abaixo não se aplicam automaticamente a todos os modelos de conversa.", "示例仅供复制,不会在本页发起请求或消耗额度。": "Os exemplos servem apenas para copiar. Esta página não envia requisições nem consome cota.", "示例显式设置 max_retries=0,避免 SDK 对超时或 5xx 自动重新提交收费任务;timeout=300.0 仅是客户端等待示例,不会改变网关或上游的超时配置。": "O exemplo define max_retries=0 para evitar reenvio automático de trabalhos cobrados após timeout ou 5xx. timeout=300.0 é apenas um exemplo de espera do cliente e não muda os limites do gateway ou upstream.", "章节导航": "Navegação entre capítulos", "类型 / 范围": "Tipo / intervalo", "系统说明是顶层字段,不要放进 messages 的 system 角色;支持文本或 text 块数组。": "Instruções de sistema neste campo superior, não em um papel system dentro de messages. Aceita texto ou array de blocos text.", "系统说明,对应 Chat 的 system 消息;需要时每次请求重新携带。": "Instruções de sistema equivalentes à mensagem system do Chat; inclua novamente a cada requisição quando necessário.", "结合 HTTP 状态、错误内容与请求日志判断问题;不要盲目重试收费请求。": "Diagnostique pelo status HTTP, erro e logs de requisição; não repita cegamente chamadas cobradas.", "编辑请求上传总大小最多 16 MiB。参考图转为 data URL 后,内联图片与最终 JSON 请求还受 14 MiB 上限;base64 约增加三分之一体积,因此多张各小于 10 MiB 也可能超限。": "Uploads de edição: até 16 MiB no total. Após converter para data URLs, imagens embutidas e JSON final também têm limite de 14 MiB. Base64 aumenta cerca de um terço; várias imagens menores que 10 MiB cada ainda podem exceder o total.", "网关临时 URL 响应结构": "Estrutura da resposta com URL temporária", "网关临时下载不要求 Authorization,链接中的随机令牌就是访问凭据,任何拿到链接的人都能下载。请将链接视为敏感信息,重要结果及时保存,不要当作长期文件存储。": "Download temporário não exige Authorization. O token aleatório da URL é a credencial; qualquer pessoa com o link pode baixar. Trate como sensível, salve resultados importantes logo e não use como armazenamento permanente.", "网关临时图片仅保存在内存,生成后 1 小时过期,网关重启后立即失效。缓存总容量 128 MiB;缓存满时会返回错误并建议改用 b64_json。上游签名链接的有效期由提供商决定。": "Imagens temporárias ficam na memória por 1 hora e somem ao reiniciar o gateway. Cache total: 128 MiB; se cheio, retorna erro sugerindo b64_json. O provedor define validade das URLs assinadas upstream.", "网关内置的安全重试与客户端 SDK 的重试是两层独立行为。图片客户端建议关闭自动重试;即使网关已停止重试,SDK 仍可能重新提交整条请求。": "Tentativas seguras do gateway e tentativas do SDK são independentes. Desative repetições automáticas para imagens; mesmo depois de o gateway parar, o SDK pode reenviar tudo.", "网关可将实际图片转换为指定文件编码。省略时保留上游图片格式;需要固定扩展名时建议显式填写。JPEG 无法保留透明通道。": "O gateway converte a imagem para a codificação pedida. Se omitido, preserva o formato upstream. Especifique para extensão fixa; JPEG não preserva transparência.", "网关始终无状态,响应中的 store=false。即使请求 store=true,也不会保存可供后续检索的 Responses 对象。": "O gateway sempre é sem estado e retorna store=false. Enviar store=true não salva objetos Responses para consultas posteriores.", "网关接受 1–10,默认 1;Antigravity 与 ModelScope 仅支持 n=1。上游返回数量不足时网关报错,不会为了凑数再次调用图片生成。": "O gateway aceita 1–10, padrão 1; Antigravity e ModelScope aceitam apenas n=1. Se faltarem imagens na resposta, retorna erro sem gerar novamente para completar a quantidade.", "网关接受 1–10,默认 1;Antigravity 仅支持 n=1。上游返回数量不足时网关报错,不会为了凑数再次调用图片生成。": "O gateway aceita 1–10, padrão 1; Antigravity aceita apenas n=1. Se o upstream devolver menos imagens, retorna erro e não gera novamente para completar.", "网关最多接受 16 张参考图。Antigravity 的 gemini-2.5-* 模型最多 3 张,其他当前接入的 Antigravity 图片模型最多 14 张;Loomy 还可能受上游模型限制。": "Até 16 referências no gateway. Antigravity gemini-2.5-* aceita até 3; outros modelos Antigravity integrados aceitam até 14. Loomy pode impor limites adicionais por modelo.", "网关最多接受 16 张参考图。Antigravity 的 gemini-2.5-* 模型最多 3 张,其他当前接入的 Antigravity 图片模型最多 14 张;ModelScope 接受 1–3 张参考图;Loomy 还可能受上游模型限制。": "O gateway aceita até 16 referências. Antigravity gemini-2.5-* aceita até 3; outros modelos de imagem integrados aceitam até 14. ModelScope aceita 1–3; Loomy pode ter limites adicionais do modelo.", "网关需要下载或转换输出时,单张图片最多 32 MiB、边长最多 8192,并使用有界解码。请求 output_format 会按实际图片转码,而不是只修改文件扩展名。": "Ao baixar ou converter saída, cada imagem fica limitada a 32 MiB e lados de 8192 pixels, com decodificação limitada. output_format converte a imagem real, não só a extensão.", "网络搜索与网页抓取的 REST 接口,使用网关 Key 鉴权;不属于 /v1 对话协议。": "Interfaces REST para busca na web e obtenção de páginas, autenticadas com uma chave do gateway; não fazem parte dos protocolos de conversa /v1.", "能力由当前插件版本申报,表示适配支持情况,不代表账号额度或当前可用性。": "As capacidades são declaradas pela versão instalada do plugin. Indicam o suporte da integração, não a cota da conta ou a disponibilidade atual.", "能力由当前网关本体或插件版本申报,表示适配支持情况,不代表账号额度或当前可用性。": "As capacidades são declaradas pela versão atual do gateway ou plugin. Indicam o suporte da integração, não a cota da conta nem a disponibilidade atual.", "自定义函数工具通过 tools 声明。模型返回 tool_calls 后,客户端校验参数、执行函数,再把 assistant 工具调用和 role=tool 结果一起放入下一次 messages;tool_call_id 必须对应,不能遗漏并行调用的结果。": "Declare funções em tools. Quando o modelo devolver tool_calls, o cliente valida argumentos, executa funções e envia as chamadas assistant e os resultados role=tool na próxima lista messages. Faça tool_call_id corresponder e inclua resultados de todas as chamadas paralelas.", "表示当前目录与插件声明支持参考图编辑。编辑前检查此字段,不要仅凭模型名称包含 image 判断。": "Indica edição com referências declarada pelo catálogo e plugin atuais. Verifique antes de editar; conter image no nome do modelo não basta.", "表示支持图片输入,不等于支持生成图片。对话模型可用于看图;编辑模型也可能声明此字段。": "Indica suporte a entrada de imagem, não geração. Modelos de conversa podem interpretar imagens; modelos de edição também podem declarar esse campo.", "表示目录条目属于生图模型。调用还需要当前插件已接入生成能力,且存在获准使用的可用账号。": "Identifica uma entrada de modelo gerador de imagens. A chamada ainda exige suporte no plugin instalado e uma conta disponível e autorizada.", "试试接口路径、参数名或其他关键词。": "Tente o caminho de um endpoint, o nome de um parâmetro ou outra palavra-chave.", "详细接口参考": "Referência detalhada da API", "请求与响应示例": "Exemplos de requisição e resposta", "请求参数、模型能力或协议形态不支持。图片相关 code 可能为 invalid_image_input、image_generation_not_supported 或 image_editing_not_supported;修改请求后再发。": "Parâmetros, capacidade do modelo ou formato sem suporte. Códigos de imagem podem ser invalid_image_input, image_generation_not_supported ou image_editing_not_supported. Corrija antes de reenviar.", "请求示例适用于 Bash / Git Bash。YOUR_GATEWAY_KEY、CHAT_MODEL_ID、IMAGE_MODEL_ID 和图片占位地址都需要替换;返回示例仅展示结构,能力位、Token 数量和时间戳不是当前网关的实测值。": "Os exemplos usam sintaxe Bash / Git Bash. Substitua YOUR_GATEWAY_KEY, CHAT_MODEL_ID, IMAGE_MODEL_ID e os endereços de imagem fictícios. As respostas ilustram apenas a estrutura; capacidades, tokens e horários não são medições do gateway atual.", "读取提供商能力表失败:{error}": "Falha ao carregar as capacidades dos provedores: {error}", "读取插件能力表失败:{error}": "Falha ao carregar as capacidades do plugin: {error}", "读取获准使用的模型": "Consultar modelos autorizados", "输出 Token 上限,具体支持字段和预算以模型为准。不要同时设置冲突的上限;达到上限时 finish_reason 可能为 length。": "Máximo de tokens de saída; campos e orçamento dependem do modelo. Evite limites conflitantes. finish_reason pode ser length ao atingir o limite.", "通用对话入口,适合大多数 OpenAI 兼容客户端。": "Endpoint de conversa geral para a maioria dos clientes compatíveis com OpenAI.", "通用错误结构示例": "Exemplo de erro genérico", "通过能力字段选择正确模型;健康检查只说明网关可访问。": "Selecione o modelo pelos campos de capacidade; a verificação de saúde confirma apenas acesso ao gateway.", "遇到“图片请求可能已消耗额度,未自动重试”或“上游已生成”等提示,先核对请求日志与上游结果。客户端超时、断线或取消不代表上游撤销任务;自动重发可能再次扣费。": "Se houver aviso de possível consumo de cota sem nova tentativa, ou de imagem já gerada no upstream, verifique logs e resultados upstream primeiro. Timeout, desconexão ou cancelamento do cliente não implica cancelamento upstream; reenviar pode cobrar novamente.", "采样参数,是否支持和有效范围由提供商与模型决定。协议兼容不代表每家上游都支持全部调参项。": "Parâmetros de amostragem; suporte e intervalos dependem do provedor e modelo. Compatibilidade de protocolo não implica suporte a todo ajuste.", "鉴权用「网关 Key」页里任一": "Para autenticação, use qualquer Key ", "错误、限额与兼容边界": "Erros, limites e compatibilidade", "限流、额度不足或当前无可用账号窗口。能确定恢复时间时可能返回 Retry-After(秒)、reset_at(Unix 毫秒)与 reset_at_text;这些字段不是每次都有。": "Limite de requisições, cota insuficiente ou nenhuma janela de conta disponível. Quando a recuperação é conhecida, pode retornar Retry-After (segundos), reset_at (Unix milissegundos) e reset_at_text; não estão sempre presentes.", "非流式响应读取 choices[].message;流式响应读取 choices[].delta。每次请求由客户端携带 messages 历史,网关不会根据上一条响应 id 自动恢复对话。": "Leia choices[].message sem streaming e choices[].delta no fluxo. Envie o histórico messages a cada requisição; o gateway não restaura a conversa pelo id da resposta anterior.", "非流式对话响应": "Resposta de conversa sem streaming", "非流式对话请求": "Requisição de conversa sem streaming", "非流式返回 object=response、status、output 数组与 output_text。output 也可能包含 reasoning 或 function_call,不能只读取数组第一项。": "Sem streaming, retorna object=response, status, array output e output_text. output também pode conter reasoning ou function_call; não leia apenas o primeiro item.", "非流式返回 type=message、content 块数组、stop_reason 与 usage。content 可能同时包含文本、思考与工具调用,应该按 type 遍历。": "Sem streaming, retorna type=message, blocos content, stop_reason e usage. Percorra por type, pois pode combinar texto, raciocínio e ferramentas.", "领取类": "Resgate de recompensas", "默认 b64_json,返回可直接解码的图片 base64;url 返回上游签名链接或网关临时下载链接。不是图片文件编码。": "Padrão b64_json retorna base64 decodificável; url retorna link assinado upstream ou temporário do gateway. Não é a codificação do arquivo de imagem.", "默认 false,返回完整 JSON;true 返回 text/event-stream。curl 查看流式输出时添加 -N,客户端应按完整 SSE 事件解析而不是按网络分块解析。": "Padrão false retorna JSON completo; true retorna text/event-stream. Use -N no curl e interprete eventos SSE completos, não suponha que blocos de rede sejam limites de eventos.", "24 小时总用量": "Uso total em 24 h", "24 小时整体命中率": "Taxa geral de acerto em 24 h", "24 小时请求数": "Requisições em 24 h", "30 天": "30 dias", "7 天": "7 dias", "API Key 分布": "Distribuição por API Key", "Token": "Token", "Top 提供商": "Top provedores", "Top 模型": "Top modelos", "Top 账号": "Top contas", "{date} · {tokens} tokens · {n} 次请求": "{date} · {tokens} tokens · {n} requisições", "{date} · 无请求": "{date} · sem requisições", "{model}:{tokens} tokens": "{model}: {tokens} tokens", "{m}月": "mês {m}", "{m}月{d}日 周{wd}": "{d}/{m} ({wd})", "{name} · {tokens} tokens · {n} 次请求 · {pct}": "{name} · {tokens} tokens · {n} requisições · {pct}", "{name}:{tokens} tokens · 占 {pct}%": "{name}: {tokens} tokens · {pct}% do total", "{n} 家提供商": "{n} provedores", "{n} 次请求": "{n} requisições", "{n} 项": "{n} itens", "{n} 项低于 {threshold}%,已合并为“其他”": "{n} itens abaixo de {threshold}% agrupados em Outros", "{title}显示数量": "Quantidade exibida em {title}", "{tokens} tokens · 占 {pct}": "{tokens} tokens · {pct} do total", "…还有 {n} 个模型": "…e mais {n} modelos", "…还有 {n} 项": "…e mais {n} itens", "一": "S", "三": "Q", "二": "T", "五": "S", "仅在饼图合并,右侧列表完整保留每个项目": "Agrupado apenas no gráfico; a lista mantém todos os itens", "仅调整两个饼图,右侧列表始终完整显示": "Apenas os dois gráficos mudam; as listas sempre mostram todos os itens", "仅调整这两张图的展示,所有用量仍计入总 Token,占比保持不变": "Altera apenas estes dois gráficos. Todo o uso continua no total de tokens, e as proporções não mudam.", "今天": "Hoje", "全部用量": "Todo o uso", "六": "S", "其他 {pct} · {n} 项,仅在饼图合并": "Outros {pct} · {n} itens, agrupados apenas no gráfico", "其他({n} 项)": "Outros ({n} itens)", "其余 {n} 项": "{n} itens restantes", "前 {n} 名": "Top {n}", "前 {n} 名占全部用量 {pct}": "Top {n} representam {pct} do uso total", "区间共 {n} 天": "{n} dias no período", "占比低于": "Agrupar proporções abaixo de", "占输入 Token 的 {rate}": "{rate} dos tokens de entrada", "历史明细不完整": "Detalhes históricos incompletos", "另 {n} 项": "Mais {n} itens", "右轴": "Eixo direito", "合并只作用于饼图。低于阈值的扇区归入“其他”,右侧列表完整保留每个项目,总量和占比不变。": "O agrupamento afeta apenas os gráficos de rosca. Fatias abaixo do limite ficam em Outros; a lista mantém todos os itens, com totais e proporções inalterados.", "合并小项": "Agrupar itens pequenos", "合计": "Total", "含今天在内往前数": "Contando para trás, incluindo hoje", "命中 {hit} / 输入 {input}": "Acertos {hit} / entrada {input}", "命中率": "Acertos", "命中率 = 缓存读取 Token / 输入 Token(promptTokens)。窗口越短越贴近「此刻」:上游把缓存读取与输入分开上报时,该比值合法地可能超过 100%,此处不夹取值、如实展示。": "Taxa de acerto = Token lidos do cache / Token de entrada (promptTokens). Quanto menor a janela, mais próximo de “agora”: quando o upstream reporta leituras de cache e entrada separadamente, essa razão pode legalmente passar de 100%; aqui o valor não é limitado e é exibido como está.", "命中率 {rate}(命中 {hit} / 输入 {input})": "Taxa de acerto {rate} ({hit} acertos / {input} de entrada)", "四": "Q", "图表显示": "Exibição dos gráficos", "图表类型": "Tipo de gráfico", "在右侧展开“其他”查看明细": "Expanda Outros na legenda para ver os detalhes", "天有调用": "dias ativos", "小项合并阈值": "Limite para agrupar itens pequenos", "展开其他明细": "Expandir detalhes de Outros", "左轴": "Eixo esquerdo", "开启“合并小项”后,低于阈值的项目合并为灰色“其他”,可在右侧展开明细。合并只影响展示,总 Token 和占比不变。": "Ao ativar Agrupar itens pequenos, os itens abaixo do limite são reunidos em uma fatia cinza chamada Outros. Expanda Outros na legenda para ver os detalhes. Apenas a exibição muda; o total de tokens e as proporções permanecem iguais.", "开始日期": "Data inicial", "当前连续天数": "Sequência atual", "总 Token": "Total de Tokens", "总 Token:{tokens}": "Token total: {tokens}", "总 Token:{tokens}({n} 次请求)": "Token total: {tokens} ({n} solicitações)", "总请求数": "Total de requisições", "总量不变": "Total inalterado", "悬停查看完整读数与分项": "Passe o mouse para ver os valores completos e a distribuição", "成功率 {rate}": "Taxa de sucesso {rate}", "成功率 {rate} · 失败 {n} 次": "Taxa de sucesso {rate} · {n} falhas", "成功请求数": "Requisições bem-sucedidas", "所选范围内暂无请求": "Sem requisições no período selecionado", "所选范围内每个提供商各消耗了多少 Token,按 Token 用量从多到少排。同一个模型名可能有多家都能提供,网关按设置页「转发路由」的优先级依次尝试,所以占比也反映了实际落到谁身上。百分比按本区间的总 Token 数算(这一块只看用量,请求次数与成功率在概览卡片里)。「未知」是指那批请求没记下承载它的提供商 —— 主要是记录提供商这个功能上线之前的旧明细,其次是请求在选定上游之前就失败了(请求体非法、模型不存在、没有可用账号)。这一维与账号那一维不同:旧明细里根本没有「哪家承载」的信息(早期版本只有单一上游,但那是配置事实而非逐条记录),所以无法回算,旧数据会一直留在「未知」里;此后新产生的请求都会记上具体的提供商。": "Quanto cada provedor consumiu de Token no período selecionado, ordenado do maior para o menor uso de Token. Como um mesmo nome de modelo pode ser oferecido por vários provedores, o gateway tenta na ordem de prioridade definida em “Roteamento de encaminhamento” na página de configurações, então a proporção também reflete para quem as requisições realmente foram. A porcentagem é calculada sobre o total de Tokens do período (este bloco considera apenas o uso; contagem de requisições e taxa de sucesso ficam nos cartões de visão geral). “Desconhecido” refere-se às requisições que não registraram o provedor que as atendeu — principalmente detalhes antigos, anteriores ao lançamento do recurso de registro de provedor, e também requisições que falharam antes de escolher o upstream (corpo da requisição inválido, modelo inexistente, nenhuma conta disponível). Esta dimensão difere da dimensão de conta: os detalhes antigos simplesmente não têm a informação de “quem atendeu” (versões iniciais tinham apenas um upstream, mas isso era um fato da configuração, não um registro por requisição), por isso não é possível recalculá-los, e os dados antigos permanecerão em “Desconhecido”; daqui em diante, toda requisição nova registra o provedor específico.", "所选范围内每个提供商各消耗了多少 Token,按用量从多到少排,扇区角度即占比。同一个模型名可能有多家都能提供,网关按设置页「转发路由」的优先级依次尝试,所以占比也反映了实际落到谁身上。中心是这一维的合计(等于概览里的总 Token),右侧每行给出该提供商的 Token 用量与百分比。「未知」是指那批请求没记下承载它的提供商 —— 主要是记录提供商这个功能上线之前的旧明细,其次是请求在选定上游之前就失败了。": "Quanto cada provedor consumiu de Token no período selecionado, ordenado do maior para o menor uso, com o ângulo do setor representando a proporção. Como um mesmo nome de modelo pode ser oferecido por vários provedores, o gateway tenta na ordem de prioridade definida em “Roteamento de encaminhamento” na página de configurações, então a proporção também reflete para quem as requisições realmente foram. O centro é o total desta dimensão (igual ao total de Tokens da visão geral) e, à direita, cada linha mostra o uso de Token e a porcentagem daquele provedor. “Desconhecido” refere-se às requisições que não registraram o provedor que as atendeu — principalmente detalhes antigos, anteriores ao lançamento do recurso de registro de provedor, e também requisições que falharam antes de escolher o upstream.", "所选范围内每个模型各消耗了多少 Token,按用量从多到少排,扇区角度即占比。中心是这一维的合计(等于概览里的总 Token),右侧每行给出该模型的 Token 用量与百分比。扇区内的百分比只在 ≥3% 时标出,更小的会挤成一团 —— 完整读数在右侧列表与悬停气泡里。颜色按用量排名分配:最大的那段是红色,依次往后;同一份报表里换个维度看,配色口径不变。": "Quanto cada modelo consumiu de Token no período selecionado, ordenado do maior para o menor uso, com o ângulo do setor representando a proporção. O centro é o total desta dimensão (igual ao total de Tokens da visão geral) e, à direita, cada linha mostra o uso de Token e a porcentagem daquele modelo. As porcentagens dentro dos setores só aparecem quando são ≥3%; as menores ficariam amontoadas — a leitura completa está na lista à direita e no tooltip. As cores são atribuídas pela posição no ranking de uso: o maior setor é vermelho e assim por diante; ao trocar de dimensão no mesmo relatório, o critério de cores não muda.", "所选范围内每个账号各消耗了多少 Token,按 Token 用量从多到少排。账号是比提供商更细的一维:同一家可以挂多个账号,转发时按优先级在候选链上依次尝试,所以这里反映的是「具体哪个登录态在出力」。百分比按本区间的总 Token 数算(这一块只看用量,请求次数与成功率在概览卡片里)。「未知账号」是指那批请求没有账号身份:走默认登录态转发(未配置账号列表)时会这样;这一维上线前写出的旧聚合行也没有账号明细,但它们会在升级导入旧数据时按明细自动补算回来 —— 只有明细已被手动清理掉的那几天补不回来,仍留在「未知账号」里,那是确实无从恢复的部分。": "Quanto cada conta consumiu de Token no período selecionado, ordenado do maior para o menor uso de Token. A conta é uma dimensão mais granular que o provedor: um mesmo provedor pode ter várias contas, e o encaminhamento tenta cada uma na cadeia de candidatas por ordem de prioridade, então aqui aparece “qual sessão de login está de fato trabalhando”. A porcentagem é calculada sobre o total de Tokens do período (este bloco considera apenas o uso; contagem de requisições e taxa de sucesso ficam nos cartões de visão geral). “Conta desconhecida” refere-se às requisições sem identidade de conta: isso acontece ao encaminhar pela sessão de login padrão (quando a lista de contas não está configurada); as linhas agregadas antigas, geradas antes do lançamento desta dimensão, também não têm detalhes de conta, mas são recalculadas automaticamente a partir dos detalhes quando os dados antigos são importados na atualização — só os dias cujos detalhes já foram limpos manualmente não podem ser recuperados e permanecem em “Conta desconhecida”, pois realmente não há como restaurá-los.", "所选范围内还没有提供商用量": "Ainda não há uso por provedor no período selecionado", "所选范围内还没有模型用量": "Ainda não há uso por modelo no período selecionado", "所选范围内还没有请求记录": "Ainda não há registros de requisições no período selecionado", "所选范围内还没有账号用量": "Ainda não há uso por conta no período selecionado", "折线": "Linha", "报表时间范围": "Período do relatório", "按 Token 用量从多到少排列,扇区角度表示占比。占比不低于 3% 的扇区显示百分比,所有项目的完整读数保留在右侧列表与悬停提示中。": "Ordenado por uso de tokens, com o ângulo de cada fatia indicando sua proporção. Fatias de pelo menos 3% mostram a porcentagem; os valores completos de todos os itens continuam na lista e nos detalhes ao passar o mouse.", "按 Token 统计": "Por tokens", "按天 Token 趋势": "Tendência diária de Token", "按日统计": "Agrupado por dia", "按本地整点统计": "Agrupado por hora local", "按本地整点,无请求的整点不标注": "Por hora local exata; horas sem requisições não são rotuladas", "按每条请求的软件标识和识别规则统计,不依赖 API Key,也不代表设备或用户数。待确认的软件统一计入“其它”;规则修改不重新归类历史请求。": "As estatísticas usam identificadores e regras por requisição, sem depender de API Key nem contar dispositivos ou usuários. Softwares não confirmados ficam em Outros; alterações nas regras não reclassificam requisições históricas.", "提供商用": "Uso por provedor", "提供商用占比": "Proporção de uso por provedor", "提供商用量": "Uso por provedor", "提供商用量占比": "Proporção de uso por provedor", "提供商:{text}": "Provedor: {text}", "收起其他明细": "Recolher detalhes de Outros", "方格为本地自然日,无请求显示为空槽": "Cada célula é um dia local; sem requisições, ela aparece vazia", "无请求的整点按 0% 计,但不写读数": "Horas sem requisições contam como 0%, mas sem exibir o valor", "日": "D", "日均": "Média diária", "日均 {value}": "Média diária {value}", "时间范围。「今天」是本地自然日今天 0 点到现在;「昨天」是昨天一整天(0 点到 24 点);「近 7 天 / 近 30 天」含今天在内往前数,即今天与之前的 6 / 29 天,不是「不含今天的 7 / 30 天」。": "Período. \"Hoje\" é o dia local de 00:00 até agora; \"Ontem\" é o dia de ontem inteiro (00:00–24:00); \"Últimos 7 dias\" / \"Últimos 30 dias\" contam para trás incluindo hoje, ou seja, hoje mais os 6 / 29 dias anteriores — não 7 / 30 dias excluindo hoje.", "昨天": "Ontem", "暂无热力图数据": "Ainda não há dados do mapa de calor", "暂无缓存趋势数据": "Ainda não há dados de tendência de cache", "暂无趋势数据": "Ainda não há dados de tendência", "最近整点命中率": "Taxa de acerto da última hora", "最近请求": "Requisições recentes", "未知模型": "Modelo desconhecido", "本月": "Este mês", "查看用量、调用来源与缓存表现": "Veja o uso, as origens das requisições e o desempenho do cache", "柱状": "Barras", "模型与提供商共用此设置": "Configuração comum aos gráficos de modelos e provedores", "模型用量": "Uso por modelo", "模型用量占比": "Proporção de uso por modelo", "每天的总 Token 用量(输入 + 输出)。柱顶标出当天的读数;区间很长、柱子挤到放不下时只标最高的那几天,其余悬停柱子即可读到。": "Uso total de Token por dia (entrada + saída). O valor do dia é marcado no topo da barra; quando o período é longo e as barras ficam sem espaço, apenas os dias mais altos são rotulados — para os demais, basta passar o mouse sobre a barra para ler o valor.", "活跃天数": "Dias ativos", "活跃热力图": "Mapa de calor de atividade", "用量分布": "Distribuição de uso", "用量趋势": "Tendência de uso", "的项目合并为“其他”": "em Outros", "筛选统计项目": "Filtrar itens do relatório", "累计": "Acumulado", "累计请求 {n} 条": "{n} requisições no total", "结束日期": "Data final", "结束日期(含当天)": "Data final (inclusive)", "统计报表": "Relatório de uso", "统计概览": "Visão geral", "缓存命中率": "Taxa de acerto de cache", "缓存读取属于输入读数,不额外计入总 Token": "As leituras de cache fazem parte da entrada e não são somadas novamente ao total de tokens", "缓存读取属于输入,不重复计入总 Token": "Leituras de cache fazem parte da entrada, sem duplicar o total de tokens", "自定义区间": "Período personalizado", "请求日志只展示仍保留的明细;清理明细不会减少日报中的历史用量。": "Os logs exibem apenas detalhes preservados; apagá-los não reduz o uso histórico nos relatórios diários.", "读取 {hit} ÷ 输入 {input}": "Leituras de cache {hit} ÷ entrada {input}", "读取报表失败:{error}": "Falha ao ler o relatório: {error}", "起始日期(含当天)": "Data inicial (inclusive)", "输入": "Entrada", "输入 + 输出": "Entrada + saída", "输入 Token": "Tokens de entrada", "输出": "Saída", "输出 Token": "Tokens de saída", "运行中": "Em execução", "近 1 小时": "Última hora", "近 10 分钟": "Últimos 10 minutos", "近 24 小时": "Últimas 24 horas", "近 24 小时缓存命中率与总 Token 趋势": "Tendência da taxa de acerto de cache e do total de Tokens nas últimas 24 horas", "近 24 小时缓存命中率趋势": "Tendência da taxa de acerto de cache nas últimas 24 horas", "近 30 天": "Últimos 30 dias", "近 365 天 · 不随上方日期筛选变化": "Últimos 365 dias · independente do filtro de datas", "近 365 天活跃热力图": "Mapa de calor de atividade dos últimos 365 dias", "近 365 天,按天 Token 用量着色(档位按本窗口峰值自动定)": "Últimos 365 dias, coloridos pelo uso diário de Token (as faixas são definidas automaticamente pelo pico desta janela)", "近 7 天": "Últimos 7 dias", "饼图不合并小项": "Mostrar todas as fatias", "饼图小于 {threshold}% 归入其他": "Agrupar fatias abaixo de {threshold}%", "饼图显示": "Exibição dos gráficos", " · ": " · ", " · {n} 个账号今日重试已用完": " · {n} contas esgotaram as tentativas de hoje", " · 补签在主签到区间结束后执行": " · Reposição após a janela principal", "AgentArts 服务声明": "Termos de serviço do AgentArts", "MiniMax Code 国内版每日签到 · 同地区签名账号接口读取七日面板并领取今日积分;已领取不重复领,奖励以官方返回为准": "Check-in diário do MiniMax Code (China) · A API assinada da conta da região consulta o painel de sete dias e resgata os pontos de hoje. Recompensas já resgatadas não são repetidas; valem as respostas oficiais.", "MiniMax Code 国际版每日签到 · 同地区签名账号接口读取七日面板并领取今日积分;已领取不重复领,奖励以官方返回为准": "Check-in diário do MiniMax Code (Global) · A API assinada da conta da região consulta o painel de sete dias e resgata os pontos de hoje. Recompensas já resgatadas não são repetidas; valem as respostas oficiais.", "QuWork 每日奖励:先查询领取状态,再领取并回查;结果不明时不重复提交。": "Recompensas diárias do QuWork: consulte o estado antes de resgatar e confira o resultado depois. Resgates incertos não são repetidos.", "SOLO 的 checkin_credits 领取 · 按自然日 0 点刷新": "Resgate de checkin_credits do SOLO · redefinido às 0h do dia natural", "Sonus 等限时活动 · 资格、额度和有效期以官方返回为准": "Sonus e outras campanhas por tempo limitado · Elegibilidade, créditos e validade seguem a resposta oficial", "UMID 组件安装失败:{error}": "Falha ao instalar o componente UMID: {error}", "UMID 组件已安装,可重新签到。": "O componente UMID está instalado. Você pode fazer o check-in novamente.", "UMID 组件管理接口不可用,请刷新页面或更新网关。": "A API de gerenciamento do componente UMID está indisponível. Atualize a página ou o gateway.", "WorkBuddy 国内版 · 查询任务树后一键点亮 / 领奖 · 含开学季与猫猫旅行 · 点击行展开明细": "WorkBuddy CN · Consulte a árvore de tarefas e acenda / resgate com um clique · inclui o evento de volta às aulas e a viagem do gato · clique na linha para detalhes", "WorkBuddy 国际版保活模型,按顺序回退": "Modelos do WorkBuddy internacional para manter ativo, com fallback em ordem", "WorkBuddy 国际版日活任务的免费模型 · 全局一份,与条目无关": "Modelos gratuitos da atividade diária do WorkBuddy Internacional · uma configuração global, independente dos agendamentos", "ZCode 自动领取验证": "Verificação do resgate automático do ZCode", "{date}(每天 {time})": "{date} (todos os dias às {time})", "{done} / {total} 个账号已签": "{done} de {total} contas com check-in", "{done}/{total} 已签": "{done}/{total} com check-in", "{label} ×{count}({reason})": "{label} ×{count} ({reason})", "{name}定时补签开关": "Reposição agendada de {name}", "{name}签到时间": "Horário de check-in de {name}", "{n} 个平台": "{n} plataformas", "{n} 个平台 · {groups} 组签到时间": "{n} plataformas · {groups} grupos de horários", "{n} 个计划 · 北京时间 UTC+8": "{n} agendamentos · Pequim UTC+8", "{n} 个账号今天的重试次数已用完": "{n} contas esgotaram o limite de tentativas de hoje", "{n} 个账号等待窗口或活动": "{n} contas aguardando janela ou campanha", "{n} 积分": "{n} pontos", "{n} 项可完成": "{n} para concluir", "{n} 项待领": "{n} itens a resgatar", "{points} 积分": "{points} pontos", "{total} 账号 · {done} 已签": "{total} contas · {done} com check-in", "{total} 项任务 · {pending} 项可完成": "{total} tarefas · {pending} para concluir", "✅ UMID 组件已安装,下轮签到即可领取国际版积分": "✅ Componente UMID instalado; no próximo check-in já dá para resgatar os pontos da edição internacional", "✅ {message}": "✅ {message}", "✅ 定时签到已开启": "✅ Check-in agendado ativado", "✅ 开学季任务执行完成": "✅ Tarefas de volta às aulas concluídas", "✅ 成长任务执行完成:积分 +{credit} 能量 +{energy}": "✅ Tarefas de crescimento concluídas: créditos +{credit}, energia +{energy}", "✅ 新手福利领取完成": "✅ Benefícios iniciais resgatados", "✅ 新手福利领取完成,累计 {n} 积分": "✅ Benefícios iniciais resgatados, {n} pontos no total", "✅ 签到完成:{succeeded}/{total} 个账号成功领取{active}": "✅ Check-in concluído: {succeeded}/{total} contas resgataram com sucesso{active}", "「保活模型链」是 WorkBuddy 国际版领日活时用来保活的免费模型,按顺序逐个尝试、 第一个成功即止;清空提交恢复缺省({defaults})。 当天去重 + 幂等领取:重复执行只会拿到「已领取」,不会重复加分。": "A \"cadeia de modelos de keep-alive\" são os modelos gratuitos usados para manter contas do WorkBuddy Internacional ativas na atividade diária — tentados em ordem, parando no primeiro sucesso; envie vazio para restaurar o padrão ({defaults}). Deduplicação no dia + resgate idempotente: repetir a execução só retorna \"já resgatado\" e nunca pontua duas vezes.", "「保活模型链」是 WorkBuddy 国际版领日活时用来保活的免费模型,按顺序逐个尝试、 第一个成功即止;清空清单并保存 = 恢复缺省链(当前缺省:{defaults})。 当天去重 + 幂等领取:重复执行只会拿到「已领取」,不会重复加分。": "A \"cadeia de modelos de keep-alive\" são os modelos gratuitos usados para manter contas do WorkBuddy Internacional ativas na atividade diária — tentados em ordem, parando no primeiro sucesso; limpar a lista e salvar restaura a cadeia padrão (padrão atual: {defaults}). Deduplicação no dia + resgate idempotente: repetir a execução só retorna \"já resgatado\" e nunca pontua duas vezes.", "「免费领积分」的每日任务 · 逐个领取": "Tarefa diária do “Ganhe pontos grátis” · resgate um a um", "一次性福利 · 已领取状态保存在网关,领完无需重复查询 · 点击行展开任务清单": "Benefícios únicos · o status de resgate fica salvo no gateway, sem necessidade de novas consultas após o resgate · clique na linha para expandir as tarefas", "一次性福利 · 签到后自动查询并领取,领完记在本机不再查上游 · 点击行展开任务清单": "Benefício único · consultado e resgatado automaticamente após o check-in; depois de resgatado, fica registrado localmente e o upstream não é mais consultado · clique na linha para expandir a lista de tarefas", "一次性福利已全部结清": "Todos os benefícios únicos foram liquidados", "一次性福利已结清": "Benefícios únicos liquidados", "一次性福利已结清,无需重复查询": "Os benefícios únicos já foram resgatados; não é preciso consultar novamente", "一次领当天全部奖励(每日签到 + 新人礼) · 幂等由上游保证": "Resgata todas as recompensas do dia em uma única ação (check-in diário + presente de novos usuários) · idempotência garantida pelo upstream", "一键安装组件": "Instalar componente", "一键完成": "Concluir tudo", "一键领取({n})": "Resgatar todos ({n})", "上一轮({time}):{n} 个动作,+{credit} 积分": "Última execução ({time}): {n} ações, +{credit} créditos", "上次执行:{line}": "Última execução: {line}", "上次签到时间": "Último check-in", "上次领取 {time} · 领取需通过滑块验证码": "Último resgate: {time} · o resgate exige captcha deslizante", "下一账号:{time}": "Próxima conta: {time}", "下次 {date}": "Próxima {date}", "下次 {date} · 点此管理条目": "Próxima {date} · clique para gerenciar os agendamentos", "下次检查:{time}": "Próxima verificação: {time}", "下次自动执行": "Próxima execução automática", "不参与每日签到:{list}。CodeArts 的一次性奖励在下方「新手福利」,它与 ZCode 的每日/套餐福利领取见「活动福利」。": "Fora do check-in diário: {list}. As recompensas únicas do CodeArts ficam em \"Benefícios iniciais\" abaixo; o resgate diário/de planos dele e do ZCode fica em \"Benefícios de atividade\".", "不参与每日签到:{list}。CodeArts 的一次性奖励在下方「新手福利」,它的每日福利就在上方「每日签到」里;ZCode 的套餐领取见「活动福利」。": "Fora do check-in diário: {list}. As recompensas únicas do CodeArts ficam em \"Benefícios iniciais\" abaixo, e o benefício diário dele fica logo acima em \"Check-in diário\"; o resgate de planos do ZCode fica em \"Benefícios de atividade\".", "不参与签到": "Fora do check-in", "不可领": "Indisponível", "不自动重试等待中的活动": "Não repetir campanhas pendentes automaticamente", "不适用": "Não se aplica", "与国内版同一套任务接口 · 站点不同": "Mesma interface de tarefas da edição da China · site diferente", "与国内版同一套链路 · 站点不同、令牌不通用": "Mesmo fluxo da edição chinesa · site diferente, tokens não intercambiáveis", "与定时补签不同,仅处理窗口未开或活动暂未下发。": "Diferente da reposição agendada, trata apenas janelas ainda fechadas ou campanhas não liberadas.", "与新人积分独立,不购买付费套餐、不自动续费": "Independente dos pontos de novos usuários. Não compra planos pagos nem faz renovações automáticas.", "专属或自定义时间作为区间起点,沿用默认区间长度;每天重新随机,重启不改变当天安排。": "Horários específicos ou personalizados definem o início e usam a duração padrão. Os horários são sorteados diariamente; reiniciar mantém a agenda de hoje.", "个账号不参与": "contas fora", "主签到区间结束后等待 {n} 分钟": "Aguardar {n} minutos após o fim da janela principal", "主签到后等待 {n} 分钟": "Aguardar {n} minutos após o check-in principal", "主签到后等待(分钟)": "Espera após o check-in principal (minutos)", "主签到已执行": "Check-in principal executado", "主签到已执行不等于每个账号都已领取成功;账号结果请查看签到记录。": "A execução principal não significa que todas as contas resgataram com sucesso. Consulte os registros de check-in.", "仅处理窗口未开或活动暂未下发的账号,不对所有错误反复执行。": "Repete apenas contas aguardando janela ou campanha, não todos os erros.", "仅开通官方报价为 0 元的个人体验套餐,固定关闭自动续费;奖励另行领取": "Ativa apenas o plano de teste pessoal com preço oficial de CNY 0 e renovação automática desativada. As recompensas são resgatadas separadamente.", "仅提交你填写的权益,不购买套餐;兑换码激活可能需要原客户端的设备标识。": "Resgata apenas o benefício informado, sem comprar planos. A ativação de códigos pode exigir a identidade do dispositivo do cliente original.", "今天 · 北京时间自然日": "Hoje · dia civil de Pequim", "今天不再自动重试,明天自动重置。要现在再试一次,用签到计划里的「立即执行」。": "Estas contas não serão tentadas novamente hoje; o contador é redefinido amanhã. Para tentar mais uma vez agora, use “Executar agora” no plano de check-in.", "今天已执行:{list}": "Executado hoje: {list}", "今天已领 {n} 份": "{n} resgatado(s) hoje", "今天未领": "Não resgatado hoje", "今天(北京时间 {day})已领取 · 官方确认到账 {n} 项 · 明天可再领": "Resgatado hoje (horário de Pequim, {day}) · {n} itens confirmados oficialmente · amanhã é possível resgatar novamente", "今日主签到": "Check-in principal de hoje", "今日已执行": "Executado hoje", "今日已派出": "Já enviado hoje", "今日已签": "Check-in feito hoje", "今日已领取": "Resgatado hoje", "今日已领取豆包工作签到奖励,已由官方确认": "A recompensa de check-in de hoje do Doubao Work já foi resgatada e confirmada pelo serviço oficial.", "今日签到": "Check-in de hoje", "今日签到任务尚未满足领取条件": "A tarefa de check-in de hoje ainda não atende às condições para resgatar a recompensa.", "今日签到进度": "Progresso do check-in de hoje", "从清单里移除": "Remover da lista", "例如:每日自动签到": "Ex.: Check-in automático diário", "保存计划": "Salvar agendamento", "保活": "Manter ativo", "保活 API Key 已保存": "API Key de manutenção de atividade salva", "保活 {n}": "{n} mantidos ativos", "保活+领取": "Manter ativo + Resgatar", "保活中…": "Mantendo ativo…", "保活模型链": "Cadeia de modelos para manter ativo", "保活模型链为全局配置,猫猫旅行有独立的开关与时刻。": "A cadeia de manutenção de atividade é global. A viagem do gato tem opções e horários próprios.", "先创建签到计划,再为它设置定时补签。": "Crie um agendamento de check-in e depois configure a reposição.", "先查询活动,再选择要领取的奖励;不会购买或订阅套餐": "Consulte as campanhas e escolha uma recompensa para resgatar. Nenhum plano será comprado ou assinado.", "免费体验套餐": "Plano de teste gratuito", "免费套餐已开通并确认生效": "O plano gratuito foi ativado e confirmado como ativo", "兑换中…": "Resgatando…", "兑换权益": "Resgatar benefício", "兑换结果待确认,请到官方客户端核对;不会重复提交": "O resgate aguarda confirmação. Confira no cliente oficial; nenhuma solicitação duplicada será enviada.", "兑换请求未得到确认,请到官方客户端核对;不要重复提交": "A solicitação de resgate não foi confirmada. Confira no cliente oficial e não envie novamente.", "全选": "Selecionar tudo", "全部 {n} 家": "Todos os {n} provedores", "全部完成": "Tudo concluído", "全部查询": "Consultar todos", "全部签到": "Fazer check-in em todas", "全部类型": "Todos os tipos", "全部结果": "Todos os resultados", "全部账号均可签到": "Todas as contas podem fazer check-in", "全部领取": "Resgatar todos", "关着:不自动巡检(仍可手动巡检)": "Desligado: sem inspeção automática (a inspeção manual continua disponível)", "关着:所有条目都不执行": "Desligado: nenhum agendamento é executado", "关闭活动窗口重试不会关闭定时补签。插件提供下次重试时刻时,以插件返回的时间为准。": "Desativar as tentativas de campanha não desativa a reposição. O horário informado pelo plugin tem prioridade.", "其他自动任务": "Outras tarefas automáticas", "凭证不可用": "Credenciais indisponíveis", "凭证需刷新": "Credenciais precisam ser atualizadas", "切换任务后,左侧只保留有账号的提供商": "Ao trocar de tarefa, apenas provedores com contas são listados à esquerda", "删除失败:{error}": "Falha ao excluir: {error}", "删除定时条目": "Excluir agendamento", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活并在网页通道建会话点亮日活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;CodeArts 领当日的运营福利(领取 → 确认 → 回读核实,自动执行受每天 6 次 / 间隔 10 分钟的写请求限流);OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "No horário marcado, faz o check-in automático das contas habilitadas dos provedores marcados (WorkBuddy CN usa a API de check-in diário; a versão internacional usa a tarefa de atividade diária: detecta o evento, recebe a recompensa de atividade diária, mantém-se ativo com o modelo gratuito e abre uma sessão pelo canal web para acender a atividade do dia; o Raccoon usa o fluxo de pontos diários do desktop; o AutoClaw usa a tarefa de check-in diário do cliente oficial; o Qoder CN reivindica via evento, e contas sem evento atribuído recebem um aviso neutro; o Qoder internacional precisa primeiro de uma identidade de risco do dispositivo (gerada pelo componente UMID do cliente Qoder local / qodercli) para sequer ver o evento \"100 Credits diários\" — sem o componente, chega uma explicação clara em vez de um erro; o Trae recebe os pontos de check-in diário do SOLO (reiniciam à meia-noite), e quando o upstream não tem evento para a conta ou as credenciais não têm ID de dispositivo, chega \"não recebido + motivo\" em vez de erro; o Loomy credita os pontos de primeiro login uma vez por dia para a conta; o KukuAI recebe a tarefa diária \"Pontos grátis\"; o CodeArts recebe as vantagens operacionais do dia (receber → confirmar → verificar relendo; execuções automáticas limitadas a 6 requisições de escrita por dia, com 10 minutos de intervalo); o OfficeAce recebe todas as recompensas do dia de uma vez (check-in diário + brinde de novato)). Se a máquina estava desligada no horário, um check-in de reposição roda ao ligar — nada fica para trás. A API de check-in de cada provedor é idempotente: repetir nunca recebe duas vezes.", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;CodeArts 领当日的运营福利(领取 → 确认 → 回读核实,自动执行受每天 6 次 / 间隔 10 分钟的写请求限流);OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "No horário definido, o check-in automático é feito nas contas disponíveis dos provedores marcados (o WorkBuddy edição da China usa a interface de check-in diário; a edição internacional usa as tarefas de atividade diária: detectar o evento, resgatar a recompensa de atividade diária e então manter a conta ativa com modelos gratuitos; o Raccoon usa o fluxo diário de pontos do aplicativo desktop; o AutoClaw usa a tarefa de check-in diário do cliente oficial; o Qoder China usa o resgate de evento, e contas sem evento distribuído recebem um aviso neutro; o Qoder internacional precisa primeiro da identidade de controle de risco do dispositivo (gerada pelo componente UMID do cliente Qoder / qodercli local) para enxergar o evento “100 Credits diários”, e sem o componente recebe uma explicação clara em vez de um erro; o Trae resgata os pontos de check-in diário do SOLO (redefinidos às 0h do dia natural), e quando o upstream não abriu o evento para a conta ou a credencial não tem o ID do dispositivo, o resultado é “não resgatado + motivo específico” em vez de um erro; o Loomy credita uma vez por dia os pontos de primeiro login da conta; o KukuAI resgata a tarefa diária do “Ganhe pontos grátis”); o CodeArts resgata o benefício de campanha do dia (resgatar → confirmar → reler para verificar; execuções automáticas têm limite de 6 gravações por dia com intervalo de 10 minutos); o OfficeAce resgata todas as recompensas do dia em uma única ação (check-in diário + presente de novos usuários)). Se o horário for perdido, o check-in é compensado automaticamente após o computador ser ligado, sem que nada se perca por o computador estar desligado no horário. As interfaces de check-in de cada provedor são idempotentes; execuções repetidas não resgatam duas vezes.", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "No horário definido, o check-in automático é feito nas contas disponíveis dos provedores marcados (o WorkBuddy edição da China usa a interface de check-in diário; a edição internacional usa as tarefas de atividade diária: detectar o evento, resgatar a recompensa de atividade diária e então manter a conta ativa com modelos gratuitos; o Raccoon usa o fluxo diário de pontos do aplicativo desktop; o AutoClaw usa a tarefa de check-in diário do cliente oficial; o Qoder China usa o resgate de evento, e contas sem evento distribuído recebem um aviso neutro; o Qoder internacional precisa primeiro da identidade de controle de risco do dispositivo (gerada pelo componente UMID do cliente Qoder / qodercli local) para enxergar o evento “100 Credits diários”, e sem o componente recebe uma explicação clara em vez de um erro; o Trae resgata os pontos de check-in diário do SOLO (redefinidos às 0h do dia natural), e quando o upstream não abriu o evento para a conta ou a credencial não tem o ID do dispositivo, o resultado é “não resgatado + motivo específico” em vez de um erro; o Loomy credita uma vez por dia os pontos de primeiro login da conta; o KukuAI resgata a tarefa diária do “Ganhe pontos grátis”); o OfficeAce resgata todas as recompensas do dia em uma única ação (check-in diário + presente de novos usuários)). Se o horário for perdido, o check-in é compensado automaticamente após o computador ser ligado, sem que nada se perca por o computador estar desligado no horário. As interfaces de check-in de cada provedor são idempotentes; execuções repetidas não resgatam duas vezes.", "到点待执行": "Horário atingido, aguardando execução", "到点时逐个签到,已勾 {n} / {total} 家": "{n} de {total} marcados — o check-in é feito um por um no horário", "北京时间 · 已启用 {n} 个签到计划": "Horário de Pequim · {n} agendamentos ativos", "北京时间 · 每天重复 · 随设置更新": "Horário de Pequim · Repete diariamente · Atualiza com as configurações", "北京时间 · 逗号分隔 · 最多 6 条 · 到点后最多晚 30 秒执行;错过时点开机后会补跑一轮。": "Horário de Pequim · separados por vírgula · até 6 entradas · executa com no máximo 30 segundos de atraso; um horário perdido é recuperado uma vez após iniciar.", "北京时间 · 错过区间会补跑未执行账号,重启保留当天安排;任务在网关执行,关闭手机不影响排程。": "Horário de Pequim · Contas pendentes são recuperadas se a janela for perdida. Reiniciar mantém a agenda do dia. As tarefas rodam no gateway; fechar o aplicativo móvel não afeta os agendamentos.", "北京时间 · 错过时点开机后会自动补签": "Horário de Pequim · execuções perdidas são compensadas automaticamente ao iniciar", "区间内陆续签到": "Check-ins ao longo da janela", "区间结束后等待(分钟)": "Espera após o fim da janela (minutos)", "单账号签到不受范围限制": "O check-in por conta não é limitado pelo escopo", "原套餐已到期或冻结,请在官方客户端处理;这里不会续费或变更套餐": "O plano atual expirou ou foi congelado. Gerencie-o no cliente oficial; esta página não renova nem altera planos.", "去插件页安装签到能力": "Instalar suporte a check-in na página de plugins", "去领取": "Resgatar", "发放中": "Em distribuição", "发放失败": "Falha na distribuição", "取消验证": "Cancelar verificação", "另有 {n} 个账号不参与": "Mais {n} contas não participam", "另有 {n} 个账号不参与每日签到": "Outras {n} contas não participam do check-in diário", "只列当前任务里有账号的提供商。": "Apenas provedores com contas na tarefa atual são listados.", "只重试这些账号,不会重签整个计划。具体原因见签到记录。": "Repete apenas essas contas, não o agendamento inteiro. Veja os motivos nos registros.", "只领取已完成任务的奖励(幂等,重复点不会重复入账)": "Resgatar apenas recompensas de tarefas concluídas (idempotente; cliques repetidos não creditam em dobro)", "可使用管理员凭据调用:": "Você pode chamar esta API com credenciais de administrador:", "可完成": "Pode concluir", "可派出": "Pode enviar", "可选 · 缺省显示时刻": "Opcional · usa o horário como padrão", "可领": "Disponível", "可领奖": "Pode resgatar", "各家区间起点": "Início da janela por provedor", "同时控制定时签到、定时补签和活动窗口重试;猫猫旅行独立运行。": "Controla check-in agendado, reposição e tentativas de campanha. A viagem do gato é independente.", "后端未返回 UMID 组件安装结果": "O backend não retornou o resultado da instalação do componente UMID", "后端未返回 UMID 组件状态": "O backend não retornou o status do componente UMID", "后端未返回定时签到数据": "O backend não retornou dados de agendamento", "后端未返回巡检结果": "O backend não retornou um resultado de inspeção", "后端未返回新手福利数据": "O backend não retornou os dados dos benefícios iniciais", "后端未返回有效的套餐状态": "O gateway não retornou um estado válido do plano", "后端未返回权益兑换结果": "O gateway não retornou o resultado do resgate", "后端未返回活动福利数据": "O gateway não retornou dados de recompensas de campanhas", "后端未返回签到中心数据": "O backend não retornou os dados da central de check-in", "启用的计划在各自区间内随机签到": "Agendamentos ativos fazem check-in aleatório dentro das respectivas janelas", "启用签到计划 {name}": "Ativar agendamento de check-in {name}", "国际版签到需要 UMID 组件生成设备风控身份(本机未检测到)。": "O check-in da edição internacional exige o componente UMID para gerar a identidade de controle de risco do dispositivo (não detectado nesta máquina).", "在桌面端设置": "Configure no desktop", "在途": "Em viagem", "基本设置": "Configurações básicas", "填入缺省链": "Preencher cadeia padrão", "填写你已有的兑换码或订单号": "Informe um código ou número de pedido que você já possui", "填好时刻与签到范围后点「保存」;名称可以留空(界面显示时刻)": "Escolha o horário e os provedores e clique em Salvar; o nome é opcional (quando vazio, mostra-se o horário)", "失败 {n}": "{n} com falha", "奖励与权益 · 资格、额度和有效期以官方返回为准": "Recompensas e benefícios · Elegibilidade, cota e validade seguem a resposta oficial", "套餐已冻结": "Plano congelado", "套餐已到期": "Plano expirado", "套餐已开通,无需重复操作": "O plano já está ativo. Nenhuma outra ação é necessária.", "套餐明细": "Detalhes dos planos", "套餐查询凭证已过期,请先到账号页刷新凭证;此查询不会自动续期": "As credenciais de consulta do plano expiraram. Atualize-as primeiro na página Contas; esta consulta não as renova automaticamente.", "套餐领取": "Resgate de plano", "安装 Qoder 客户端或 qodercli 后即可(无需重启网关)。": "Basta instalar o cliente Qoder ou o qodercli (não é preciso reiniciar o gateway).", "安装中…": "Instalando…", "安装后仍未检测到 UMID 组件,请重新检查。": "O componente UMID ainda não foi detectado após a instalação. Verifique novamente.", "官方客户端的每日签到任务": "Tarefa de check-in diário do cliente oficial", "官方拒绝套餐查询,请检查账号授权;这不一定表示 Token 已过期": "O serviço oficial negou a consulta do plano. Verifique a autorização da conta; isso não significa necessariamente que o token expirou.", "官方显示自动续费已开启,请到官方客户端检查": "O serviço oficial informa que a renovação automática está ativada. Verifique no cliente oficial.", "官方未返回明确的套餐状态,暂不能开通": "O serviço oficial não retornou um estado definido do plano. A ativação está indisponível por enquanto.", "定时签到": "Check-in agendado", "定时签到和定时补签分开管理。补签沿用对应签到计划的平台范围,不重复领取已完成的账号。": "Check-in e reposição são gerenciados separadamente. A reposição usa as plataformas do agendamento e ignora contas concluídas.", "定时签到已关闭": "Check-in agendado desativado", "定时补签": "Reposição agendada", "实际发放:{time}": "Distribuído em: {time}", "实际时间由网关计算,晚窗口的平台会顺延补签;只处理当天未签到账号。": "O gateway calcula os horários. Janelas mais tardias adiam a reposição, que trata apenas contas sem check-in hoje.", "实际签到安排": "Horários reais de check-in", "实际补签": "Reposição efetiva", "实际补签取「主签到时间加等待间隔」与「补签不早于」中较晚的时刻。": "A reposição usa o horário mais tarde entre o check-in principal mais a espera e o limite mínimo de reposição.", "对应主签到:{times}": "Check-in principal correspondente: {times}", "对应签到计划 · 沿用 {n} 个平台范围,只补未签到账号": "Agendamento vinculado · Mesmas {n} plataformas, apenas contas sem check-in", "对应签到计划:{name}": "Agendamento correspondente: {name}", "尚未开始": "Não iniciado", "尚未开通套餐,可开通免费体验套餐": "Nenhum plano está ativo. Você pode ativar o plano de teste gratuito.", "尚未执行": "Ainda não executado", "尚未查询": "Ainda não consultado", "尚未查询任务状态": "Status das tarefas ainda não consultado", "尝试领取": "Tentar resgatar", "展开": "Expandir", "巡检一次": "Executar uma rodada", "巡检中…": "Inspecionando…", "巡检失败:{reason}": "Falha na inspeção: {reason}", "已保存:{label}": "Salvo: {label}", "已保存:保活模型链": "Salvo: cadeia de modelos para manter ativo", "已保存:定时条目": "Salvo: agendamento", "已保存:猫猫旅行排程": "Salvo: agenda da viagem do gato", "已全部领取": "Tudo resgatado", "已删除定时条目": "Agendamento excluído", "已发放": "Distribuído", "已完成活跃上报(连登已点亮),但活动未开启(本次没有可领的奖励)": "Atividade reportada (ofensiva acesa), mas a campanha não está ativa (nada para resgatar desta vez)", "已就绪": "Pronto", "已开始批量签到": "Check-in em lote iniciado", "已开通": "Ativo", "已得 {earned} / {total} 积分": "{earned} / {total} pontos ganhos", "已执行 {n} / {total} 个平台": "{n} / {total} plataformas executadas", "已执行 {n} / {total} 个账号": "{n} / {total} contas processadas", "已抽 {n} 次": "Sorteou {n} vezes", "已提交「{label}」的签到": "Check-in de {label} enviado", "已暂停": "Pausado", "已有结果 {checked} / 共 {total} 个账号": "Já com resultado: {checked} / {total} contas", "已查 {checked} / {total} 个账号": "{checked} de {total} contas verificadas", "已确认不自动续费": "Renovação automática confirmada como desativada", "已确认领取": "Resgate confirmado", "已签": "Com check-in", "已签到自动跳过": "Contas com check-in são ignoradas", "已结束": "Encerrado", "已选 {n} / {total} 个平台": "{n} / {total} plataformas selecionadas", "已领 {claimed}/{total} · 累计 {earned} 积分": "Resgatado {claimed}/{total} · {earned} pontos acumulados", "已领 {done} / {total} 份套餐": "{done} / {total} planos resgatados", "已领养": "Adotado", "已领取": "Resgatado", "已领取「{name}」": "{name} resgatado", "带设备风控身份领取「每日 100 Credits」 · 需要 UMID 组件": "Resgatar “100 Credits diários” com a identidade de controle de risco do dispositivo · requer o componente UMID", "平台与签到时间": "Plataformas e horários de check-in", "平台与随机签到区间": "Plataformas e janelas de check-in aleatório", "平台专属": "Específico da plataforma", "平台专属时间": "Horário específico da plataforma", "平台专属时间由网关提供。自定义时间会覆盖专属时间,提前执行可能遇到窗口未开。": "Horários específicos vêm do gateway. Horários personalizados têm prioridade; executar cedo pode encontrar a janela fechada.", "平台批次": "Grupo de plataformas", "开关": "Opções", "开启定时补签": "Ativar reposição agendada", "开启活动窗口重试": "Ativar tentativas de campanha", "开始 {time}": "Início {time}", "开学季执行失败:{error}": "Falha na execução de volta às aulas: {error}", "开学季执行完成:{message}": "Execução de volta às aulas concluída: {message}", "开学季活动": "Evento de volta às aulas", "开着:启用的条目按各自时刻执行": "Ligado: agendamentos habilitados rodam em seus próprios horários", "开着:按下面的时刻自动巡检": "Ligado: inspeciona automaticamente nos horários abaixo", "开通中…": "Ativando…", "开通免费套餐": "Ativar plano gratuito", "开通未得到确认,请重新查询套餐状态;不会自动重试开通": "A ativação não foi confirmada. Consulte novamente o estado do plano; a ativação não será repetida automaticamente.", "开通结果待确认": "Ativação aguardando confirmação", "开通请求仍在处理或结果待确认,请稍后查询,不要重复提交": "A ativação ainda está em processamento ou aguarda confirmação. Consulte novamente mais tarde; não envie outra solicitação.", "当前没有可领取的套餐": "Nenhum plano disponível no momento", "当前没有等待窗口或活动下发的账号。": "Nenhuma conta aguarda janela ou campanha no momento.", "当前活动未提供每日签到任务": "A campanha atual não oferece uma tarefa de check-in diário.", "当前网关中,补签等待间隔与活动重试间隔共用;修改间隔会同步影响两者,开关与重试次数仍分别设置。": "O gateway atual compartilha o intervalo de espera e de tentativas. Alterá-lo afeta ambos; opções e limites continuam separados.", "当前账号暂不符合该活动的领取条件": "Esta conta não atende aos requisitos para resgatar esta recompensa no momento", "当前账号未下发豆包工作签到活动,无需反复领取": "Nenhuma campanha de check-in do Doubao Work está disponível para esta conta. Não é necessário repetir o resgate.", "待发放": "Aguardando distribuição", "待执行": "Aguardando execução", "待签": "Pendente", "待领取": "A resgatar", "待领新手福利": "Benefícios iniciais pendentes", "总开关": "Interruptor principal", "总开关已关闭": "O interruptor geral está desativado", "总开关已关闭 · 在「定时签到」页打开": "Interruptor principal desligado · ative na aba \"Check-in agendado\"", "成功 {n}": "{n} com sucesso", "成长任务": "Tarefas de crescimento", "成长任务完成({done} 项成功、{failed} 项失败),积分 +{credit} 能量 +{energy}": "Tarefas de crescimento concluídas ({done} com sucesso, {failed} com falha): créditos +{credit}, energia +{energy}", "成长任务执行失败:{error}": "Falha na execução das tarefas de crescimento: {error}", "我已阅读并同意以下服务声明,仅授权开通零元体验套餐,不自动续费": "Li e aceito os termos de serviço abaixo e autorizo apenas o plano de teste gratuito, sem renovação automática.", "所有时间按北京时间计算。每个账号每天随机安排一次,重启保留当天安排;错过区间时会补跑未执行账号。": "Todos os horários usam Pequim. Cada conta recebe um horário aleatório por dia, mantido após reinícios. Se uma janela for perdida, as contas pendentes são recuperadas.", "所有时间按北京时间计算。网关启动后会补跑当天已到点、尚未执行的签到,不会提前执行未来时点。": "Todos os horários usam Pequim. Ao iniciar, o gateway recupera check-ins vencidos de hoje sem antecipar horários futuros.", "手动签到": "Check-in manual", "执行失败:{error}": "Falha na execução: {error}", "执行并抽奖": "Executar e sortear", "执行开学季任务并抽空抽奖机会(分享 / 对话 / 专家事件)": "Executar as tarefas de volta às aulas e gastar todas as chances de sorteio (compartilhar / conversar / eventos de especialista)", "执行规则": "Regras de execução", "把缺省链填进清单,再点「保存」生效": "Coloca a cadeia padrão na lista; clique em Salvar para aplicar", "抽奖机会 {n} 次": "{n} chances de sorteio", "按住拖动调整顺序": "Pressione e arraste para reordenar", "按住拖动,调整这个模型在链里的顺序": "Pressione e arraste para mudar a posição deste modelo na cadeia", "按序逐个尝试,共 {n} 个": "{n} modelos, tentados em ordem", "按结果筛选": "Filtrar por resultado", "授权被拒绝": "Autorização negada", "探测 + 领取 + 保活 · 与定时签到同一套组合": "Detectar + resgatar + manter ativo · mesma combinação do check-in agendado", "探测活动并领取日活奖励 · 不做保活": "Detectar o evento e resgatar a recompensa de atividade diária · sem manter ativo", "接单 + 点亮 + 领奖(只处理已实测沉淀的任务)": "Aceitar + acender + resgatar (apenas tarefas com receita verificada)", "插件未就绪,范围仍保留": "Plugin indisponível; escopo mantido", "搜索平台": "Pesquisar plataformas", "搜索签到平台": "Pesquisar plataformas de check-in", "搜账号 / 收益 / 错误 / 触发原因": "Pesquisar conta / ganho / erro / motivo do disparo", "收起": "Recolher", "收起平台": "Recolher plataformas", "收起新建": "Fechar novo item", "新建定时条目": "Nova entrada agendada", "新建签到计划": "Novo agendamento de check-in", "新手任务": "Tarefas iniciais", "新手福利": "Benefícios iniciais", "新手福利与活动": "Benefícios iniciais e campanhas", "新手福利是一次性任务:领完就没了,重复点不会重复加分。": "Os benefícios iniciais são tarefas únicas: depois de resgatados acabam, e toques repetidos não somam pontos de novo.", "新手福利有 {n} 项领取失败,可重试": "{n} item(ns) dos benefícios iniciais falharam no resgate — é possível tentar novamente", "新手福利领取失败 {n} 项": "Falha ao resgatar {n} benefícios iniciais", "新用户积分": "Créditos de novo usuário", "新计划默认开启补签和活动窗口重试;保存后可到「定时补签」页单独调整。": "Novos agendamentos ativam reposição e tentativas por padrão. Ajuste-os na aba Reposição agendada após salvar.", "无": "Nenhum", "无独立签到接口 · 每天替账号打一次登录信息(即当日魔粒)": "Sem interface de check-in própria · consulta as informações de login uma vez por dia por conta (o que concede os créditos do dia)", "无独立签到接口 · 每天替账号打一次首次登录积分": "Sem interface de check-in própria · credita uma vez por dia os pontos de primeiro login da conta", "无账号": "Sem contas", "时刻": "Horários", "暂不可领": "Indisponível", "暂不可领(未满足条件)": "Ainda não resgatável (requisitos não atendidos)", "暂不支持": "Ainda não suportado", "暂无可领取福利": "Nenhum benefício disponível para resgate", "暂无启用的条目": "Nenhuma entrada ativada", "暂无启用的条目 · 点此添加": "Nenhum agendamento habilitado · clique para adicionar", "暂无月度赠送记录": "Nenhum registro de presente mensal", "暂无活动": "Nenhuma campanha ativa", "最近执行:{time}": "Última execução: {time}", "最近结果:成功 {n} · 保活 {active} · 失败 {failed}": "Último resultado: {n} sucessos · {active} ativas · {failed} falhas", "月度赠送": "Presentes mensais", "有平台到点待执行": "Há plataformas aguardando execução", "有未保存的改动": "Alterações não salvas", "未勾选提供商": "Nenhum provedor selecionado", "未完成,请查看签到记录": "Não concluído. Consulte os registros de check-in.", "未开启": "Desativado", "未开通": "Não ativado", "未执行开通,请查询套餐状态查看原因": "A ativação não foi executada. Consulte o estado do plano para ver o motivo.", "未解锁": "Bloqueado", "未领养(领养需先完成当日对话量)": "Não adotado (a adoção exige cumprir a cota diária de conversas primeiro)", "未领取": "Não resgatado", "本地台账里今天还没领过;活动期内每天发一份新套餐": "O registro local ainda não tem resgate nenhum hoje; um novo plano é emitido todo dia durante o evento", "本地台账里今天(北京时间)领过的套餐:{plans}": "Planos resgatados hoje (horário de Pequim) conforme o registro local: {plans}", "本次签到结果的记录时间:{time}(本机时区)": "Horário de registro deste resultado de check-in: {time} (fuso horário local)", "本次自动领取未完成验证,请在套餐明细中手动领取": "A verificação deste resgate automático não foi concluída. Faça o resgate manualmente nos detalhes do plano.", "本轮已跳过:{reason}": "Esta execução foi ignorada: {reason}", "权益兑换成功,重新查询可查看最新记录": "Benefício resgatado. Consulte novamente para ver os registros atualizados.", "权益兑换未成功": "Falha ao resgatar o benefício", "权益兑换码 / 订单号": "Código de resgate / número do pedido", "条启用": "habilitado(s)", "来源说明中的时刻是定时条目的名称或基准时刻,不是本次执行时间": "O horário na descrição da origem é o nome ou horário base do agendamento, não o horário desta execução", "果办免费体验套餐": "Plano de teste gratuito do OfficeAce", "果办套餐接口不可用,请更新主程序和提供商插件": "A API de planos do OfficeAce está indisponível. Atualize o aplicativo principal e o plugin do provedor.", "果办服务声明": "Termos de serviço do OfficeAce", "查看平台": "Ver plataformas", "查看签到记录": "Ver registros de check-in", "查询于 {time}": "Consultado em {time}", "查询任务": "Consultar tarefas", "查询任务树并一键点亮 / 领奖(含开学季与猫猫旅行)": "Consulte a árvore de tarefas e acenda / resgate com um clique (inclui volta às aulas e viagem do gato)", "查询只读取套餐状态,点击开通后才会执行": "A consulta apenas lê o estado do plano. A ativação só é executada ao clicar em Ativar.", "查询失败:{error}": "Falha na consulta: {error}", "查询套餐": "Consultar plano", "查询活动": "Consultar campanhas", "查询结果": "Consultar resultado", "桌面端每日积分链路": "Fluxo diário de pontos do aplicativo desktop", "次数按账号每天单独计算:重试到上限的账号今天不再重试,明天自动重置。": "O limite é contado por conta e por dia: uma conta que o atinge não é tentada novamente hoje e é redefinida amanhã.", "正在为本次领取验证;若出现滑块,请手动完成": "Verificando este resgate. Se aparecer um controle deslizante, conclua-o manualmente.", "正在读取 UMID 组件状态…": "Carregando o status do componente UMID…", "正在读取定时签到数据…": "Carregando dados de agendamento…", "正在读取签到数据…": "Lendo os dados de check-in…", "每个签到计划对应一组补签设置": "Cada agendamento tem suas próprias opções de reposição", "每个账号每天在区间内随机执行一次;开始与结束相同则按固定时刻执行。": "Cada conta executa uma vez por dia em um horário aleatório dentro da janela. Início e fim iguais significam execução em horário fixo.", "每天 {time}": "Todos os dias às {time}", "每天 {time} · {scope}": "Diário {time} · {scope}", "每天定点巡检 · 一趟推进一步 · 与签到排程互相独立": "Inspeção diária em horários fixos · um passo por execução · independente da agenda de check-in", "每天执行": "Executa diariamente", "每天按这里的时刻自动巡检一遍 WorkBuddy 国内版账号:没有猫就领养、在家就派出、到站就领奖。一趟只推进一步,所以建议留两个时刻(早上派出、晚上领奖)。企业版与国际版账号自动跳过。": "Inspeciona automaticamente todas as contas WorkBuddy China nos horários definidos: adota um gato se não houver, envia quando ocioso e resgata a recompensa ao chegar. Cada execução avança um passo, então recomenda-se dois horários (enviar pela manhã, resgatar à noite). Contas empresariais e internacionais são ignoradas automaticamente.", "每天时刻": "Horário diário", "每天自动执行": "Executa automaticamente todos os dias", "每天补查一次": "Uma verificação de reposição por dia", "每天补查一轮,只处理今天未签到的账号。": "Verifica uma vez ao dia, apenas contas sem check-in hoje.", "每执行一次签到 · 每个账号一条明细 · 结果与收益以后端落账为准": "Uma linha por conta a cada execução · resultados e ganhos conforme registrado pelo backend", "每日活动签到(+100 积分,已领则中性提示)": "Check-in de atividade diária (+100 créditos; aviso neutro se já resgatado)", "每日活跃任务 · 网页会话保活点亮日活,领取才加积分 · 两者可分开执行": "Tarefas de atividade diária · uma conversa no canal web acende a atividade diária, só o resgate adiciona pontos · os dois podem ser executados separadamente", "每日登录积分 · 顺带领取会员活动 · 访客账号无积分体系(跳过)": "Pontos de login diário · resgata atividades de membro junto · contas de visitante não têm sistema de pontos (ignorado)", "每日福利 · 领取 → 确认 → 回读核实 · 按北京时间自然日重置": "Benefício diário · resgatar → confirmar → reler para verificar · redefinido no dia natural (horário de Pequim)", "每日签到": "Check-in diário", "每日签到积分": "Créditos de check-in diário", "每条条目各有时刻与范围 · 各自当天去重 · 错过时点开机自动补签": "Cada agendamento tem horário e escopo próprios · deduplicação diária por item · execuções perdidas são compensadas ao iniciar", "每账号一条明细": "Uma entrada por conta", "每账号一条明细 · 点此查看「签到记录」": "Uma linha por conta · abra \"Registros de check-in\"", "每账号每天最多重试(次)": "Máximo de tentativas por conta por dia", "没有专属时间的平台跟随默认时间;已有专属或自定义时间的平台不会被覆盖。": "Plataformas sem horário próprio seguem o padrão; horários específicos e personalizados são preservados.", "没有匹配的平台": "Nenhuma plataforma correspondente", "没有可执行账号": "Nenhuma conta elegível", "没有可签到的账号": "Nenhuma conta disponível para check-in", "没有可领套餐的账号(ZCode 未添加)。": "Nenhuma conta com planos resgatáveis (ZCode não adicionado).", "没有可领福利的账号(CodeArts / ZCode 未添加)。": "Nenhuma conta com benefícios para resgatar (CodeArts / ZCode não foram adicionados).", "没有支持成长任务的账号(需要 WorkBuddy 国内版)。": "Nenhuma conta suporta tarefas de crescimento (requer WorkBuddy CN).", "没有支持新手福利的账号": "Nenhuma conta suporta benefícios iniciais", "没有支持新手福利的账号 —— 目前有 Loomy、小浣熊、CodeArts 三家。": "Nenhuma conta suporta benefícios iniciais — atualmente Loomy, Raccoon e CodeArts.", "没有支持活动福利的账号,请添加账号并更新提供商插件。": "Nenhuma conta oferece recompensas de campanhas. Adicione uma conta e atualize o plugin do provedor.", "没有符合条件的账号。": "Nenhuma conta corresponde ao filtro atual.", "没有符合筛选条件的签到记录": "Nenhum registro de check-in corresponde aos filtros", "没有需要执行的任务": "Nada para executar", "活动奖励领取成功": "Recompensa da campanha resgatada com sucesso", "活动尚未开始(上游接口未部署)": "A campanha ainda não começou (endpoint upstream não implantado)", "活动开始:{time}": "Início da campanha: {time}", "活动按自然日发新套餐,每天可领一次": "A campanha libera um novo plano por dia civil; um resgate por dia", "活动未开放或已结束,请重新查询": "A campanha ainda não começou ou já terminou. Consulte novamente.", "活动福利": "Recompensas de evento", "活动福利接口不可用,请更新网关后重试": "A API de recompensas de campanhas não está disponível. Atualize o gateway e tente novamente.", "活动窗口重试": "Tentativas de campanha", "活动窗口重试已关闭,等待窗口或活动下发的账号不会自动再试。": "A nova tentativa por janela está desativada; contas aguardando janela ou campanha não são tentadas automaticamente.", "活动领取未成功,请重新查询后再试": "A recompensa não foi resgatada. Consulte novamente antes de tentar outra vez.", "活动(campaign)领取 · 每天 10:00 刷新": "Resgate de eventos (campaign) · atualizado todos os dias às 10:00", "活跃上报与保活均未成功,且活动未开启": "Tanto o relatório de atividade quanto o keep-alive falharam, e a campanha não está ativa", "活跃上报完成,但保活未成功且活动未开启": "Atividade reportada, mas o keep-alive falhou e a campanha não está ativa", "活跃上报完成,但活动未开启": "Atividade reportada, mas a campanha não está ativa", "活跃上报成功": "Atividade reportada com sucesso", "活跃保活失败": "Falha ao manter a atividade", "活跃保活完成": "Atividade mantida", "活跃保活完成,但活动未开启": "Atividade mantida, mas o evento não está aberto", "活跃保活完成,但活跃上报失败且活动未开启": "Keep-alive concluído, mas o relatório de atividade falhou e a campanha não está ativa", "添加条目": "Adicionar agendamento", "添加模型": "Adicionar modelo", "清单为空 —— 保存后恢复缺省链": "A lista está vazia — salvar restaura a cadeia padrão", "清单里已经有「{name}」": "A lista já contém \"{name}\"", "清空失败:{error}": "Falha ao limpar: {error}", "清空签到记录": "Limpar registros de check-in", "滚动 24 小时签到;按插件返回的时间等待下一次领取,不以自然日重复领取": "Check-in em janela móvel de 24 horas. Aguarda o próximo horário informado pelo plugin, sem repetir o resgate à meia-noite.", "点「套餐明细」看领到了哪几份、什么时候生效;活动期内每天可再领": "Clique em \"Detalhes dos planos\" para ver quais você recebeu e quando entram em vigor; dá para resgatar de novo todo dia durante o evento", "点击行展开账号明细 · 单账号签到不受范围限制": "Clique na linha para expandir os detalhes das contas · o check-in individual não é limitado pelo escopo", "点进去查看任务并领取": "Toque para ver as tarefas e resgatar", "状态未确认": "Estado não confirmado", "独立链路 · 只提供手动入口 · 不进自动签到": "Fluxo independente · apenas entrada manual · não participa do check-in automático", "猫猫旅行": "Viagem do gato", "猫猫旅行失败:{error}": "Falha na viagem do gato: {error}", "猫猫旅行失败:{message}": "Falha na viagem do gato: {message}", "猫猫旅行定时排程": "Agenda da viagem do gato", "猫猫旅行:{message}": "Viagem do gato: {message}", "猫猫旅行:{n} 个动作,+{credit} 积分": "Viagem do gato: {n} ações, +{credit} créditos", "猫猫旅行:{n} 个动作,+{credit} 积分,{failed} 个失败": "Viagem do gato: {n} ações, +{credit} créditos, {failed} falhas", "用免费模型与网页会话维持账号活跃 · 不领取奖励": "Manter a conta ativa com modelos gratuitos e uma conversa no canal web · sem resgatar recompensas", "由官方按期自动发放,这里只展示记录,不重复领取。": "Distribuídos automaticamente pelo serviço oficial nas datas previstas. Aqui os registros são somente leitura, sem resgates duplicados.", "确定删除「{name}」?删除后到点不再执行。": "Excluir \"{name}\"? Ele não será mais executado no horário agendado.", "确定删除「{name}」?对应的定时补签与活动重试也会一并移除,签到记录保留。": "Excluir “{name}”? A reposição e as tentativas vinculadas também serão removidas. Os registros serão mantidos.", "确定清空全部签到记录?清空后无法恢复。": "Limpar todos os registros de check-in? Isso não pode ser desfeito.", "确定清空当前筛选出的签到记录?清空后无法恢复。": "Limpar os registros de check-in filtrados? Isso não pode ser desfeito.", "确认兑换": "Confirmar resgate", "确认把这份权益兑换到当前账号?兑换后可能无法撤销。": "Resgatar este benefício na conta atual? Talvez não seja possível desfazer.", "移除 {name}": "Remover {name}", "立即全部签到": "Fazer check-in de todos agora", "立即巡检全部": "Inspecionar tudo agora", "立即执行「{name}」会手动签到整个计划范围,不等待平台时点。窗口未开的平台可能仍无法领取。": "Executar “{name}” agora fará check-in em todo o escopo sem esperar os horários. Janelas fechadas ainda podem impedir resgates.", "等待时点": "Aguardando horário", "等待签到区间": "Aguardando a janela de check-in", "等待签到时间": "Aguardando horário de check-in", "签到": "Check-in", "签到与补签计划已暂停,配置仍保留;手动执行不受总开关影响。": "Check-in e reposição estão pausados, com as configurações mantidas. A opção principal não afeta execuções manuais.", "签到中…": "Fazendo check-in…", "签到中心分区": "Seções do centro de check-in", "签到功能分类": "Categorias de check-in", "签到区间": "Janela de check-in", "签到失败:{error}": "Falha no check-in: {error}", "签到完成:{succeeded}/{total} 成功{active},{failed} 个失败": "Check-in concluído: {succeeded}/{total} com sucesso{active}; {failed} com falha", "签到完成:{success}/{total} 成功,保活 {active},失败 {failed}": "Check-in concluído: {success}/{total} com sucesso, {active} mantidas ativas, {failed} com falha", "签到成功": "Check-in bem-sucedido", "签到提供商": "Provedores de check-in", "签到日期按北京时间计算": "A data do check-in usa o horário de Pequim", "签到时间": "Horário de check-in", "签到类型": "Tipo de check-in", "签到范围": "Escopo do check-in", "签到触发时刻": "Horário de disparo do check-in", "签到计划": "Agendamentos de check-in", "签到记录": "Registros de check-in", "签到记录时间范围": "Período dos registros de check-in", "签到记录表": "Tabela de registros de check-in", "管理定时签到": "Gerenciar check-ins agendados", "累计签到记录": "Total de registros de check-in", "结束时间不能早于开始时间,暂不支持跨天区间。": "O fim não pode ser anterior ao início. Janelas que atravessam a meia-noite ainda não são suportadas.", "结算于 {time}": "Liquidado em {time}", "编辑签到计划": "Editar agendamento de check-in", "缺少套餐开通凭证,请通过果办网页登录补齐授权": "As credenciais para ativar o plano estão ausentes. Entre no OfficeAce pelo login web para restaurar a autorização.", "缺少开通凭证": "Credenciais de ativação ausentes", "网关设备组件": "Componente de dispositivo do gateway", "能量 {n}": "Energia {n}", "腾讯每日签到接口 · 仅国内版": "Interface de check-in diário da Tencent · apenas edição da China", "自动巡检已暂停:{reason}": "A inspeção automática está pausada: {reason}", "自动执行已开启": "Execução automática ativada", "自动执行已暂停": "Execução automática pausada", "自动执行总开关": "Opção principal de execução automática", "自定义时间": "Horário personalizado", "至少勾一家才能保存(不勾等于这条条目不签到)": "Selecione ao menos um provedor para salvar (sem seleção, esta entrada não faz check-in)", "补签不早于": "Reposição não antes de", "补签不早于 {time}": "Reposição não antes de {time}", "补签单独设置,只检查今天还没有签到的账号。": "Configure a reposição separadamente; verifica apenas contas sem check-in hoje.", "补签取「主签到区间结束加等待间隔」与「补签不早于」中较晚的时刻,不会提前补签尚未轮到的账号。": "A reposição usa o horário mais tarde entre o fim da janela principal mais a espera e o limite mínimo de reposição. Contas que ainda aguardam sua vez não são processadas antes da hora.", "补签在主签到区间结束后执行,只补未签到账号。": "A reposição roda após a janela principal e só processa contas sem check-in.", "补签已关闭": "Reposição desativada", "补签已关闭,不影响主签到;开启后会自动生成各平台的补签安排。": "A reposição está desativada, sem afetar o check-in principal. Ao ativar, os horários serão gerados para cada plataforma.", "补签已开启": "Reposição ativada", "补签检查": "Verificação de reposição", "补签计划": "Agendamentos de reposição", "触发会话活跃并观测积分变化;未观测到新发放时不会标为已签到": "Ativa a sessão e observa a variação dos pontos. Sem uma nova concessão observada, não marca o check-in como concluído.", "计划名称": "Nome do agendamento", "订单 {order} · 第 {period} 期": "Pedido {order} · Período {period}", "设备校验未就绪,部分活动可能不显示:{reason}": "A verificação do dispositivo não está disponível e algumas campanhas podem ficar ocultas: {reason}", "设置各平台每天的签到时间,按窗口分批执行。": "Defina o horário diário de cada plataforma e execute em grupos por janela.", "设置定时补签": "Configurar reposição agendada", "设置每天的签到区间,各账号在区间内随机错峰执行。": "Defina a janela diária de check-in. As contas executam em horários aleatórios distribuídos dentro dela.", "设置活动窗口重试": "Configurar tentativas de campanha", "设置补签": "Configurar reposição", "该权益已兑换,无需重复提交": "Este benefício já foi resgatado. Não envie novamente.", "该活动已领取,无需重复领取": "Esta recompensa já foi resgatada. Não é necessário resgatá-la novamente.", "该账号当前没有可领取的限时活动": "Não há recompensas por tempo limitado disponíveis para esta conta no momento", "请填写合法区间,结束不早于开始,并至少选择一家提供商。": "Informe uma janela válida, com o fim não anterior ao início, e selecione pelo menos um provedor.", "请检查时间、间隔和次数是否在允许范围内。": "Verifique se horário, intervalo e quantidade estão nos limites permitidos.", "请至少选择一个签到平台": "Selecione ao menos uma plataforma de check-in", "读取定时签到数据失败:{error}": "Falha ao carregar dados de agendamento: {error}", "读取签到数据失败:{error}": "Falha ao ler os dados de check-in: {error}", "读取签到记录失败:{error}": "Falha ao carregar registros de check-in: {error}", "调整重试": "Ajustar tentativas", "豆包工作今日领取仍未确认,请前往官方客户端查看;再次点击仅查询结果,不会重复领取": "O resgate de hoje do Doubao Work ainda não foi confirmado. Consulte o aplicativo oficial; clicar novamente apenas consulta o resultado, sem repetir o resgate.", "豆包工作签到奖励已领取,已回查确认": "A recompensa de check-in do Doubao Work foi resgatada e verificada.", "豆包工作领取结果待确认,稍后只查询结果,不会重复提交领取": "O resgate do Doubao Work aguarda confirmação. As próximas tentativas apenas consultarão o resultado, sem reenviar o resgate.", "账号未使用官方果办网关地址,无法在此开通免费套餐": "Esta conta não usa um endereço oficial do gateway OfficeAce. O plano gratuito não pode ser ativado aqui.", "跟随默认时间": "Segue o horário padrão", "跳过 {n}": "{n} ignorados", "运营活动交付(领取 → 确认 → 回读核实)· 领的是套餐赠送积分": "Entrega de eventos oficiais (resgatar → confirmar → reler para verificar) · resgate dos pontos de bônus do plano", "还有 {n} 个平台未执行": "{n} plataformas ainda não executadas", "还没执行过": "Ainda não executado", "还没有可签到的提供商。签到能力随提供商插件包提供,装好并添加账号后这里就会出现。": "Ainda não há provedores para check-in. O suporte a check-in vem com os pacotes de plugin de provedor; ele aparece aqui depois que um pacote é instalado e uma conta é adicionada.", "还没有定时条目 —— 点「添加条目」建一条,或到「签到中心」手动签到。": "Nenhum agendamento ainda — clique em \"Adicionar agendamento\" para criar um, ou faça check-in manualmente no \"Centro de check-in\".", "还没有签到计划,先选择平台和默认时间。": "Ainda não há agendamentos. Escolha as plataformas e o horário padrão.", "还没有签到记录 —— 手动签到或等定时条目执行后,明细会出现在这里。": "Nenhum registro de check-in ainda — os detalhes aparecem aqui após um check-in manual ou uma execução agendada.", "还没有记录": "Ainda sem registros", "这个账号没有新手任务": "Esta conta não tem tarefas iniciais", "这里只修改定时签到;补签和活动重试配置保持原样,在「定时补签」页单独设置。": "Aqui apenas o check-in agendado é editado. Reposição e tentativas são preservadas e configuradas na aba de reposição.", "这里只管理签到时间;补签与活动窗口重试在独立页设置。": "Aqui são gerenciados apenas horários de check-in. Reposição e tentativas têm uma página separada.", "连登 {n} 天": "Sequência de {n} dias", "选填": "Opcional", "选择 {name}": "Selecionar {name}", "选择平台后显示实际签到时间": "Selecione plataformas para ver os horários reais", "部分": "Parcial", "重新查询": "Consultar novamente", "重新检查": "Verificar novamente", "重签": "Refazer check-in", "重试": "Tentar de novo", "重试关闭": "Tentativas desativadas", "重试已暂停": "Tentativas pausadas", "重试开启": "Tentativas ativadas", "重试间隔(分钟)": "Intervalo entre tentativas (minutos)", "间隔 {gap} 分钟 · 每账号每天最多重试 {limit} 次": "Intervalo de {gap} minutos · Até {limit} tentativas por conta por dia", "间隔填 0 会关闭活动窗口重试;定时补签仍至少等待 1 分钟,不会一起关闭。": "Intervalo 0 desativa as tentativas de campanha. A reposição continua ativa, com espera mínima de 1 minuto.", "限时体验套餐 · 领取需滑块验证码 · 逐份查看与领取": "Plano de teste por tempo limitado · o resgate exige CAPTCHA de arrastar · veja e resgate um a um", "限时体验套餐(start-plan),活动期内每天一份 · 领取需滑块验证码": "Plano de teste por tempo limitado (start-plan), um por dia durante o evento · o resgate exige captcha deslizante", "限时活动与体验套餐 · 查询后逐项领取 · 不影响每日签到": "Recompensas por tempo limitado e planos de teste · Consulte e resgate individualmente · Separado do check-in diário", "随机签到开始": "Início do check-in aleatório", "随机签到结束": "Fim do check-in aleatório", "随签到计划暂停": "Pausado com o agendamento de check-in", "需人工处理": "Ação manual necessária", "需真实操作": "Requer ação real", "需要人工验证": "Verificação humana necessária", "非活动期": "Evento inativo", "项": "itens", "预计发放:{time}": "Distribuição prevista: {time}", "领取": "Resgatar", "领取中": "Resgatando", "领取中…": "Resgatando…", "领取免费 CodingPlan(按需:套餐有效时只回读额度)": "Resgatar o CodingPlan gratuito (sob demanda: com o plano ativo apenas lê a cota)", "领取后 {days} 天有效": "Válido por {days} dias após o resgate", "领取失败": "Falha no resgate", "领取失败:{error}": "Falha no resgate: {error}", "领取奖励": "Resgatar recompensa", "领取截止:{time}": "Prazo de resgate: {time}", "领取时间:{time}": "Resgatado em: {time}", "领取结果待确认": "Resgate aguardando confirmação", "领取结果待确认,请稍后查询;不会重复提交领取": "O resgate aguarda confirmação. Consulte novamente mais tarde; nenhuma solicitação duplicada será enviada.", "领取被拒绝": "Resgate recusado", "领取通常需要过一次滑块验证;活动套餐多为当天稍晚生效,领取后可在桌面端「账号」里看套餐明细。": "O resgate geralmente exige passar por uma verificação de slider. Os planos de campanha costumam entrar em vigor mais tarde no mesmo dia; após resgatar, veja os detalhes em Contas no desktop.", "领取验证任务已结束,请到套餐明细查看结果": "Esta tarefa de verificação terminou. Consulte os detalhes do plano para ver o resultado.", "额度到期:{time}": "Os créditos expiram em: {time}", "验证凭据正在提交,领取结果请查看签到记录": "Enviando a verificação. Consulte o histórico de check-in para ver o resultado do resgate.", "验证提交结果未确认,请查看签到记录,勿重复领取": "O envio da verificação não foi confirmado. Consulte o histórico de check-in e não repita o resgate.", "默认 {time} · {n} 个平台 · {groups} 组签到时间": "Padrão {time} · {n} plataformas · {groups} grupos de horários", "默认使用第一把可用 API Key,想换就在上面选一把": "Usa a primeira API Key disponível por padrão; selecione outra acima para alterar.", "默认签到时间": "Horário padrão de check-in", "(共 {n} 个账号)": "({n} contas no total)", "(能量 / 连登读数本次未取到)": "(Leituras de energia / sequência indisponíveis desta vez)", ",日活保活 {n} 个": ", {n} mantidas ativas", " 字段": ".", " 的 ": ", no campo ", "{enabled} / {total} 个已开启": "{enabled} / {total} habilitadas", "{name}开关": "Interruptor de {name}", "{name}间隔": "Intervalo de {name}", "{name}间隔必须是 {min}–{max} 分钟的整数": "O intervalo de {name} deve ser um número inteiro entre {min} e {max} minutos", "{n} 秒后": "em {n} segundos", "✅ {task}:{summary}": "✅ {task}: {summary}", "✅ 已更新「{label}」": "✅ “{label}” atualizado", "上次执行 {time}": "Última execução às {time}", "上次执行 {time}({result})": "Última execução às {time} ({result})", "上次执行中断,没有完整结果;请核对账号状态": "A execução anterior foi interrompida e não há resultados completos. Confira o status das contas.", "下次执行 {time}": "Próxima execução: {time}", "下次执行 {time}({relative})": "Próxima execução às {time} ({relative})", "仅维护过期或即将过期的凭证": "Somente credenciais expiradas ou próximas do vencimento são mantidas", "仅记录状态与结果,不展示密钥或令牌。": "Somente o status e os resultados são registrados; chaves e tokens não são exibidos.", "仅重试失败项": "Repetir apenas itens com falha", "仅重试这一项": "Repetir apenas este item", "任务正在执行中,请稍候": "A tarefa já está em andamento. Aguarde.", "任务清单": "Lista de tarefas", "任务配置保存在 ": "As configurações das tarefas ficam em ", "停留在「报表」页时按此间隔重新拉取统计数据;页面不可见时不请求。": "Enquanto você permanece na página “Relatórios”, busca novamente os dados estatísticos neste intervalo; nenhuma requisição é feita quando a página não está visível.", "停留在「日志」页时按此间隔重新拉取系统事件;页面不可见时不请求。": "Enquanto você permanece na página “Logs”, busca novamente os eventos do sistema neste intervalo; nenhuma requisição é feita quando a página não está visível.", "停留在「请求日志」页时按此间隔重新拉取请求日志;页面不可见时不请求。": "Enquanto você permanece na página “Logs de requisições”, busca novamente os logs de requisições neste intervalo; nenhuma requisição é feita quando a página não está visível.", "全部触发方式": "Todas as origens", "全部跳过": "Todos ignorados", "共 {n} 次执行": "{n} execuções no total", "关闭自动维护不影响手动执行,也不影响对话请求所需的按需续期。": "Desativar a manutenção automática não afeta execuções manuais nem a renovação de credenciais sob demanda para conversas.", "冷却中,{relative}重试": "Em cooldown; nova tentativa {relative}", "冷却至 {time}": "Em espera até {time}", "凭证变化": "Alterações nas credenciais", "凭证已更新": "Credenciais atualizadas", "凭证未过期或临期": "As credenciais não expiraram nem estão próximas do vencimento", "凭证维护": "Manutenção de credenciais", "凭证自动维护": "Manutenção automática de credenciais", "分钟执行一次": "minutos por execução", "刚刚已执行,请稍后重试": "Esta tarefa acabou de ser executada. Tente novamente em instantes.", "刷新前有效期": "Validade antes da renovação", "刷新后有效期": "Validade após a renovação", "刷新记录": "Atualizar registros", "即将执行": "Prestes a executar", "原因 / 说明": "Motivo / Observações", "去账号页处理": "Abrir conta", "只刷新过期或即将过期的账号凭证": "Renova apenas credenciais de contas expiradas ou próximas do vencimento", "可填 {min}–{max}": "Permitido: {min}–{max}", "可填 {min}–{max} {unit}(默认 {def} {unit})": "Intervalo aceito: {min}–{max} {unit} (padrão: {def} {unit})", "固定模型清单": "Lista de modelos fixa", "失败重试": "Nova tentativa de itens com falha", "定时任务已刷新": "Tarefas agendadas atualizadas", "定时查询积分": "Consulta agendada de pontos", "定期向 GitHub 查询最新发布版本,默认每 20 分钟一次。检查结果、排期和限流冷却跨重启保留;手动检查也会合并重复请求并遵守冷却。开关与间隔在「软件更新」面板的「更新设置」弹窗里配置(定时任务页不再渲染这一条)。": "Consulta periodicamente o GitHub em busca da versão mais recente publicada, por padrão a cada 20 minutos. O resultado da verificação, o agendamento e o cooldown de rate limit são mantidos após reiniciar; a verificação manual também agrupa requisições repetidas e respeita o cooldown. O interruptor e o intervalo são configurados no diálogo “Configurações de atualização” do painel “Atualização do software” (esta linha não é mais exibida na página de tarefas agendadas).", "定期拉取最新模型清单,重启沿用排期与缓存。客户端读取模型列表的后台刷新也遵守本任务开关、间隔和失败冷却;手动获取模型可提前刷新。": "Busca periodicamente o catálogo de modelos mais recente; após reiniciar, mantém o agendamento e o cache. A atualização em segundo plano acionada quando o cliente lê a lista de modelos também respeita o interruptor, o intervalo e o cooldown de falhas desta tarefa; obter modelos manualmente permite atualizar antes.", "定期拉取最新模型清单,重启沿用排期与缓存。客户端读取模型列表的后台刷新也遵守本任务开关、间隔和失败冷却;手动获取模型可提前刷新。同一轮顺带刷新 models.dev 模型元数据(能力位与思考档位,可在设置页单独关闭)。": "Busca periodicamente o catálogo de modelos mais recente; após reiniciar, mantém o agendamento e o cache. A atualização em segundo plano acionada quando o cliente lê a lista de modelos também respeita o interruptor, o intervalo e o cooldown de falhas desta tarefa; obter modelos manualmente permite atualizar antes. A mesma rodada também atualiza os metadados de modelos do models.dev (sinalizadores de capacidade e níveis de raciocínio, que podem ser desativados separadamente na página de configurações).", "定期获取各提供商的最新模型清单": "Obtém periodicamente a lista mais recente de modelos de cada provedor", "定期遍历账号,只刷新已过期或临期的凭证。重启后沿用上次排期,失败账号在冷却后重试;转发需要的按需续期不受此开关影响。": "Percorre periodicamente as contas e atualiza apenas as credenciais expiradas ou próximas do vencimento. Após reiniciar, mantém o agendamento anterior; contas com falha são repetidas após o cooldown. As renovações sob demanda exigidas pelo encaminhamento não são afetadas por este interruptor.", "客户端触发": "Acionado pelo cliente", "尚未执行维护": "Ainda não executado", "尚未执行维护,自动或手动执行后会显示结果": "Nenhuma manutenção foi executada. Os resultados aparecerão após uma execução automática ou manual.", "已在设置里关闭 models.dev 模型元数据": "Os metadados do models.dev estão desativados nas configurações", "已执行": "Executado", "已更新 {n} 条": "{n} entradas atualizadas", "已续期并确认凭证更新": "Credenciais renovadas e atualização confirmada", "已获取最新模型目录": "Catálogo de modelos mais recente obtido", "建议重试时间": "Horário sugerido para nova tentativa", "当前没有可用的目录账号": "Nenhuma conta disponível para obter o catálogo", "成功提供商": "Provedores atualizados", "成功账号": "Contas renovadas", "手动触发": "Manual", "执行中断": "Interrompida", "执行中断,结果可能已部分生效,请先核对账号状态": "A execução foi interrompida. Algumas alterações podem ter sido aplicadas; confira primeiro o status das contas.", "执行失败:{reason}": "Falha na execução: {reason}", "执行时的结果快照,不随账号后续变化而改变": "Registro do resultado desta execução, sem alterações posteriores da conta", "执行时间": "Data e hora", "执行明细": "Detalhes da execução", "执行汇总": "Resumo da execução", "执行间隔(分钟)": "Intervalo (minutos)", "报表自动刷新": "Atualização automática de relatórios", "指定账号不属于该提供商、未启用或没有可用凭证": "A conta escolhida pertence a outro provedor, está desativada ou não tem credenciais utilizáveis", "提供商当前不可用,未执行目录更新": "O provedor está indisponível; o catálogo não foi atualizado", "搜索账号或提供商": "Buscar contas ou provedores", "收起明细": "Ocultar detalhes", "改动立即生效,不需要重启程序": "As alterações entram em vigor imediatamente; não é preciso reiniciar o programa", "无失败项": "Sem falhas", "日志页自动刷新": "Atualização automática da página de logs", "明细状态筛选": "Filtrar status dos itens", "暂无维护记录,首次执行后会自动保存": "Ainda não há registros de manutenção. A primeira execução será salva automaticamente.", "暂无记录": "Sem registros", "最近一次": "Última execução", "有失败项": "Com falhas", "有效期已延长": "Validade prorrogada", "未使用账号": "Nenhuma conta utilizada", "未变更": "Sem alterações", "未注册的提供商": "Provedor não registrado", "未返回失败原因": "Nenhum motivo de falha foi retornado", "本次无需更新,沿用现有状态": "Nenhuma atualização necessária; mantendo o estado atual", "本轮共 {n} 项": "{n} itens nesta execução", "本轮没有符合条件的项目": "Nenhum item correspondente nesta execução", "查看凭证与模型目录的每次维护结果,失败和跳过都有原因": "Confira cada manutenção de credenciais e catálogos, com os motivos de falhas e itens ignorados", "查看原因": "Ver motivo", "查看明细": "Ver detalhes", "查看详情": "Ver detalhes", "模型基础信息": "Metadados dos modelos", "模型目录": "Catálogo de modelos", "模型目录刷新": "Atualização do catálogo de modelos", "模型目录更新": "Atualização do catálogo de modelos", "正在加载定时任务…": "Carregando tarefas agendadas…", "正在读取维护记录…": "Carregando registros de manutenção…", "此前仅有汇总,尚无逐项记录": "Antes, apenas o resumo era registrado; não há detalhes por item", "每 {n} 分钟": "A cada {n} minutos", "没有可显示的定时任务。后端未返回任务清单,请确认网关正在运行。": "Nenhuma tarefa agendada para exibir. O backend não retornou a lista de tarefas; verifique se o gateway está em execução.", "没有符合筛选条件的维护记录": "Nenhum registro de manutenção corresponde aos filtros", "沿用缓存或当前没有可用的目录来源": "Usando dados em cache, ou nenhuma fonte de catálogo está disponível", "沿用缓存,尚未到刷新时间": "Usando o cache; ainda não é hora de atualizar", "状态每 20 秒自动同步": "Status sincronizado automaticamente a cada 20 segundos", "由页面按间隔自动刷新": "Atualizada automaticamente pela página conforme o intervalo", "登录授权已失效,需要重新登录该账号": "A autorização de acesso expirou. Entre novamente nesta conta.", "目录最近更新时间": "Última atualização do catálogo", "立即执行": "Executar agora", "立即检查": "Verificar agora", "维护已完成,结果已保存": "Manutenção concluída e resultados salvos", "维护已开始,结果会自动更新,可离开此页": "Manutenção iniciada. Os resultados serão atualizados automaticamente; você pode sair desta página.", "维护已执行,但完整结果未能保存;请先核对账号状态,不要反复执行": "A manutenção foi executada, mas os resultados completos não foram salvos. Confira as contas antes de executar novamente.", "维护已结束,有失败项,请查看明细": "A manutenção terminou com falhas. Confira os detalhes.", "维护接口不可用,请更新网关并重新打开页面": "A API de manutenção está indisponível. Atualize o gateway e reabra esta página.", "维护正在执行,完成后会显示逐项结果": "A manutenção está em andamento. Os resultados por item aparecerão ao terminar.", "维护类型": "Tipo de manutenção", "维护记录保留 {days} 天,最多 {count} 次;仅保存结果,不保存密钥或令牌。": "Os registros são mantidos por {days} dias, até {count} execuções. Somente os resultados são salvos, nunca chaves ou tokens.", "维护设置": "Configurações de manutenção", "维护设置未能保存到数据库,请检查磁盘空间和权限": "Não foi possível salvar as configurações no banco de dados. Verifique o espaço em disco e as permissões.", "自动和手动维护,统一在这里查看": "Manutenção automática e manual em um só lugar", "自动维护与手动执行共用同一份结果记录": "Execuções automáticas e manuais compartilham o mesmo histórico de resultados", "自动维护已关闭": "Manutenção automática desativada", "自动触发": "Automático", "触发方式": "Origem", "该提供商不支持主动刷新凭证(没有续期手段)": "Este provedor não oferece renovação de credenciais", "该提供商使用固定模型清单": "Este provedor usa uma lista fixa de modelos", "该次执行未完成,没有完整明细": "Esta execução não terminou; os detalhes completos não estão disponíveis", "请求日志页自动刷新": "Atualização automática da página de logs de requisições", "账号已不存在,未执行维护": "A conta não existe mais; a manutenção não foi executada", "软件版本检查": "Verificação de versão", "还没有执行记录": "Ainda sem registros de execução", "逐个提供商更新模型目录,模型基础信息单独列出结果": "Atualiza o catálogo de cada provedor; os resultados dos metadados são exibidos separadamente", "部分失败": "Falha parcial", "部分设置可能已保存,请核对后重试:{reason}": "Algumas configurações podem ter sido salvas. Confira antes de tentar novamente: {reason}", "重新加载": "Recarregar", "重试生成新记录,不覆盖本次结果": "Novas tentativas criam outro registro sem substituir este resultado", "间隔不能为空(可填 {min}–{max} {unit})": "O intervalo não pode ficar vazio (aceita {min}–{max} {unit})", "间隔必须在 {min}–{max} {unit} 之间(当前填的是 {value})": "O intervalo deve estar entre {min}–{max} {unit} (valor atual: {value})", "间隔必须是整数": "O intervalo deve ser um número inteiro", "页面自动刷新": "Atualização automática da página", "debug 及以上": "debug e acima", "info 及以上": "info e acima", "warn 及以上": "warn e acima", "{matched} / {total} 条": "{matched} / {total} registros", "{minutes} 分 {seconds} 秒": "{minutes} min {seconds} s", "{n} 个启动失败": "{n} com falha ao iniciar", "{n} 个已就绪": "{n} prontos", "{n} 个等待恢复": "{n} aguardando recuperação", "{n} 条": "{n} registros", "{n} 毫秒": "{n} ms", "✅ 已导出 {count} 条日志到 {file}": "✅ {count} logs exportados para {file}", "上游": "Upstream", "上游接口请求": "Requisição à API upstream", "事件摘要": "Resumo do evento", "事件日志时间范围": "Período dos logs de eventos", "事件详情": "Detalhes do evento", "仅 error": "somente error", "仅显示调试记录,供排查问题使用。": "Mostra apenas registros de debug para diagnóstico de problemas.", "仅错误": "Somente erros", "余额查询失败": "Falha na consulta de saldo", "余额查询完成": "Consulta de saldo concluída", "余额查询未配置": "Consulta de saldo não configurada", "信息": "Info", "信息及以上": "Informações e acima", "全部事件": "Todos os eventos", "全部分类": "Todas as categorias", "全部级别": "Todos os níveis", "共享运行环境尚未就绪,不代表这个插件本身损坏。请在插件页查看加载诊断。": "O ambiente de execução compartilhado ainda não está pronto; isso não significa que o plugin esteja danificado. Consulte os diagnósticos de carregamento na página Plugins.", "关联标识": "ID de correlação", "出站参数归一": "Normalização dos parâmetros de saída", "分类": "Categoria", "分页按折叠后的组数计算": "A paginação usa o número de grupos recolhidos", "加载插件": "Carregando plugin", "原始消息": "Mensagem original", "原始记录": "Registros brutos", "原始记录 {n} 条": "{n} registros brutos", "发生时间": "Horários das ocorrências", "各阶段耗时": "Tempo de cada etapa", "启动结果": "Resultados da inicialização", "启动超时": "Tempo de inicialização esgotado", "启动进程": "Iniciando processo", "处理建议": "Ação sugerida", "复制原始记录": "Copiar registros brutos", "复制失败": "Falha ao copiar", "复制当前筛选结果": "Copiar resultados filtrados", "复制本页原始记录": "Copiar registros brutos desta página", "导出": "Exportar", "导出当前筛选": "Exportar logs filtrados", "已复制 {n} 条日志": "{n} logs copiados", "已暂停刷新": "Atualização pausada", "恢复刷新": "Retomar atualização", "折叠重复日志": "Recolher logs repetidos", "按分类筛选": "Filtrar por categoria", "按最低级别筛选": "Filtrar por nível mínimo", "插件名称": "Nome do plugin", "插件启动失败": "Falha ao iniciar o plugin", "插件启动存在异常": "Alguns plugins não puderam iniciar", "插件启动完成,{n} 个已就绪": "Inicialização dos plugins concluída: {n} prontos", "插件启动超时": "Tempo de inicialização do plugin esgotado", "插件已就绪": "Plugin pronto", "插件已恢复运行": "O plugin voltou a funcionar", "插件暂不可用,等待运行环境恢复": "Plugin indisponível enquanto aguarda a recuperação do ambiente de execução", "插件暂时无法使用": "Plugin temporariamente indisponível", "插件未能就绪": "O plugin não ficou pronto", "插件未能正常停止": "O plugin não parou normalmente", "插件编号": "ID do plugin", "插件进程已退出": "O processo do plugin foi encerrado", "搜索关键字": "Pesquisar palavras-chave", "搜索插件、消息、提供商或账号": "Pesquisar plugins, mensagens, provedores ou contas", "搜索插件、消息、提供商或账号…": "Pesquisar plugins, mensagens, provedores ou contas…", "搜索消息、提供商或账号": "Pesquisar mensagens, provedores ou contas", "搜索消息、提供商或账号…": "Pesquisar mensagens, provedores ou contas…", "搜索消息关键词": "Pesquisar palavra-chave da mensagem", "搜索消息关键词…": "Pesquisar palavra-chave da mensagem…", "操作失败:{error}": "Falha na operação: {error}", "日志视图": "Visualização de logs", "日志详情": "Detalhes do log", "日志详情视图": "Visualização dos detalhes do log", "显示 {groups} 组 · 原始记录 {entries} 条": "{groups} grupos · {entries} registros brutos", "显示启动汇总和需要关注的事件;单个插件的正常启动记录在“全部事件”中。": "Mostra resumos de inicialização e eventos que precisam de atenção. Inicializações individuais bem-sucedidas ficam em Todos os eventos.", "显示所有已保留的事件;技术信息可在详情中查看。": "Mostra todos os eventos retidos. Abra os detalhes para consultar informações técnicas.", "暂停刷新": "Pausar atualização", "暂无日志": "Ainda não há logs", "暂无日志可导出": "Não há logs para exportar", "有 {n} 条新日志": "{n} novos logs", "服务": "Serviço", "未记录插件名称": "Nome do plugin não registrado", "本次启动超过等待时限。请在插件页查看加载诊断,确认后重新加载。": "A inicialização excedeu o tempo limite. Consulte os diagnósticos de carregamento na página Plugins antes de recarregar.", "查看日志详情:{message}": "Ver detalhes do log: {message}", "查看最新": "Ver mais recentes", "模型 {model}": "Modelo {model}", "次数": "Contagem", "正在加载日志…": "Carregando logs…", "没有符合条件的日志": "Nenhum log corresponde às condições", "没有符合筛选条件的日志": "Nenhum log corresponde aos filtros", "清空中…": "Limpando…", "清空当前筛选": "Limpar logs filtrados", "清空运行日志": "Limpar logs de execução", "状态码": "Código de status", "用时 {duration}": "Duração: {duration}", "登记提供商": "Registrando provedores", "相关功能暂不可用,原因见详情": "As funções relacionadas estão indisponíveis; veja o motivo nos detalhes", "确定清空全部运行日志?清空后无法恢复。": "Tem certeza de que deseja limpar todos os logs de execução? Isso não pode ser desfeito.", "确定清空当前筛选出的 {count} 条日志?清空后无法恢复。": "Tem certeza de que deseja limpar os {count} logs filtrados? Isso não pode ser desfeito.", "系统事件": "Eventos do sistema", "级别": "Nível", "结束阅读": "Encerrar leitura", "结果未确认": "Resultado não confirmado", "脱敏": "Mascaramento", "自动刷新": "Atualização automática", "自动刷新已关闭": "Atualização automática desativada", "自动签到": "Check-in automático", "补充系统消息": "Mensagem de sistema adicionada", "警告": "Aviso", "警告 {n}": "Avisos {n}", "警告及以上": "Avisos e erros", "计费接口请求": "Requisição à API de cobrança", "详细信息": "Informações detalhadas", "请在插件页查看加载诊断,确认原因后重新加载。": "Consulte os diagnósticos de carregamento na página Plugins e verifique a causa antes de recarregar.", "读取日志失败": "Falha ao carregar logs", "调试": "Debug", "调试 {n}": "Debug {n}", "调试详情": "Detalhes de debug", "调试采集未开启,仅显示已保留的记录。可在设置中开启调试模式。": "A coleta de debug está desativada. Apenas registros retidos são exibidos. Ative o modo debug nas Configurações para coletar novos registros.", "运行日志已清空": "Logs de execução limpos", "部分插件暂不可用。请在插件页查看异常插件的加载诊断。": "Alguns plugins estão indisponíveis. Abra a página Plugins para consultar os diagnósticos de carregamento.", "重要事件": "Eventos importantes", "错误": "Erro", "错误 {n}": "Erros {n}", "阅读模式": "Modo de leitura", "阅读模式,列表保持不动": "Modo de leitura: lista fixa", "附加数据": "Dados adicionais", " · {n} 进行中": " · {n} em andamento", " · 会话粘住": " · sessão presa", "

    无响应原文
    ": "
    Sem resposta original
    ", "
    无法解析响应内容
    ": "
    Não foi possível interpretar o conteúdo da resposta
    ", "
    无法解析请求体(不是含 messages 数组的 JSON)
    ": "
    Não foi possível interpretar o corpo da requisição (não é um JSON com um array messages)
    ", "
    无请求原文
    ": "
    Sem requisição original
    ", "
    调用工具 {name}
    ": "
    Chamada de ferramenta {name}
    ", "响应原文": "Resposta original", "思考过程": "Processo de raciocínio", "请求原文": "Requisição original", "HTTP {status},但响应体阶段出错": "HTTP {status}, mas o erro ocorreu na fase do corpo da resposta", "HTTP {status},但响应体阶段出错:见错误列": "HTTP {status}, mas o erro ocorreu na fase do corpo da resposta: ver a coluna Erro", "{duration} / 首帧 {first}": "{duration} / 1ª resposta {first}", "{m}分{s}秒": "{m}min {s}s", "{n}秒": "{n}s", "{s}秒{ms}ms": "{s}s{ms}ms", "↻ {n} 次": "↻ {n}x", "↻ 重试 {n} 次": "↻ {n} retries", "✅ 压缩完成": "✅ Compactação concluída", "「仅看进行中」开启时,状态固定为进行中": "Com “Somente em andamento” ativado, o status fica fixo em Em andamento", "上游模型繁忙,请求已排进上游队列;网关正按上游建议的时长等待后重发(不是登录态或额度问题)": "O modelo do upstream está ocupado e a requisição entrou na fila do upstream; o Gateway aguarda o tempo sugerido pelo upstream antes de reenviar (não é problema de estado de login nem de cota)", "上游没有返回积分消耗": "O upstream não informou o consumo de pontos", "上游状态码: {status}": "Status do upstream: {status}", "上游请求已发出,正在等第一个字节到达(模型的思考时间也在这段)": "A requisição foi enviada ao upstream; aguardando a chegada do primeiro byte (o tempo de raciocínio do modelo também faz parte disso)", "上游返回错误": "O upstream retornou um erro", "下游请求的模型:{model}": "Modelo solicitado pelo downstream: {model}", "仅清空报文原文": "Limpar apenas os payloads", "仅看进行中": "Somente em andamento", "令牌": "Tokens", "体积": "Tamanho", "保留 {count} 条请求记录 · 将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "Preservar {count} registros · Limpar {upstream} payloads do upstream e {downstream} corpos do downstream · Tamanho do banco {db}", "保留 {count} 条请求记录;将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。用量统计与报表不变。": "Preserva {count} registros de requisições e limpa {upstream} payloads de depuração do upstream e {downstream} corpos do downstream. As estatísticas de uso e os relatórios permanecem inalterados.", "保留统计行与报表,只抹掉请求 / 响应正文。清理后详情弹窗的「预览对话」将无原文可看,统计数字分毫不动。": "Mantém as linhas de estatísticas e os relatórios e apaga apenas o corpo da requisição / da resposta. Após a limpeza, a “Prévia da conversa” no diálogo de detalhes não terá mais o texto original; os números das estatísticas não mudam em nada.", "保留请求记录、用量统计与报表,同时清理上游调试报文和下游请求 / 响应正文。清理后「预览对话」与「原始报文」不再保留原文。有筛选时只清理命中请求的报文;无筛选时清空两侧全部报文。此操作无法恢复。": "Preserva os registros de requisições, as estatísticas de uso e os relatórios, mas limpa os payloads de depuração do upstream e os corpos de requisição / resposta do downstream. A prévia da conversa e o payload bruto deixam de conter o conteúdo original. Com filtros, limpa apenas os payloads das requisições correspondentes; sem filtros, limpa todos os payloads dos dois lados. Esta ação não pode ser desfeita.", "全部删除": "Excluir tudo", "全部提供商": "Todos os provedores", "全部模型": "Todos os modelos", "全部状态": "Todos os status", "全部请求数据": "todos os dados de requisições", "共 {images} 张图片,复用 {cached} 张识读结果": "{images} imagens; {cached} leituras reutilizadas", "共 {n} 次尝试": "{n} tentativas no total", "共 {n} 次尝试,最终由 {provider} 承载": "{n} tentativas no total; a última foi atendida por {provider}", "其它": "Outro", "内容按原样保存,请求头中的凭据字段已替换为 [redacted]": "Conteúdo salvo como está; os campos de credenciais nos cabeçalhos da requisição foram substituídos por [redacted]", "内部重试": "Retries internos", "切换路径:": "Caminho de troca: ", "列表数据已刷新,请重试(关闭后重新打开这条详情)": "Os dados da lista foram atualizados; tente novamente (feche e reabra este detalhe)", "删除日志记录本身。当前有筛选时只删命中的条目,按天聚合报表不受影响;无筛选时清空全部并重置报表。此方式无法恢复。": "Exclui os próprios registros de log. Com filtros ativos, exclui apenas os itens correspondentes e os relatórios agregados por dia não são afetados; sem filtros, limpa tudo e redefine os relatórios. Esta ação não pode ser desfeita.", "删除请求记录,并同步清理对应的上游调试报文与下游正文。有筛选时只删除命中的记录,按天聚合报表不受影响;无筛选时清空全部并重置报表。此操作无法恢复。": "Exclui os registros de requisições junto com os payloads de depuração do upstream e os corpos do downstream correspondentes. Com filtros, exclui apenas os registros correspondentes e preserva os relatórios diários; sem filtros, limpa tudo e redefine os relatórios. Esta ação não pode ser desfeita.", "压缩中…": "Compactando…", "压缩失败:{message}": "Falha na compactação: {message}", "压缩已在后台开始,完成后会自动提示": "A compactação começou em segundo plano; você será avisado quando ela terminar", "压缩已在进行中": "A compactação já está em andamento", "压缩已在进行中,接上它的进度等待完成": "A compactação já está em andamento; retomando o progresso dela e aguardando a conclusão", "压缩数据库": "Compactar banco de dados", "压缩正在后台执行,完成后自动恢复": "A compactação está em execução em segundo plano; tudo volta ao normal automaticamente quando ela terminar", "原始报文": "Payload bruto", "原模型": "Modelo original", "另有 {missing} 次尝试未记录明细(只保留最早的 {kept} 条)": "Mais {missing} tentativas sem detalhes registrados (mantidas apenas as {kept} primeiras)", "另有 {n} 个词命中": "Mais {n} palavras atingidas", "只显示正在转发中的请求(状态列按阶段显示:连接中 / 等待响应 / 响应中 / 重试中,用时列显示已用时)": "Mostra apenas requisições em encaminhamento (a coluna Status mostra a fase: Conectando / Aguardando resposta / Respondendo / Retentando; a coluna Duração mostra o tempo decorrido)", "只看失败": "Somente falhas", "只看成功": "Somente sucessos", "只看进行中": "Somente em andamento", "命中了敏感词": "Atingiu uma palavra sensível", "命中的敏感词": "Palavras sensíveis atingidas", "响应中": "Respondendo", "响应体": "Corpo da resposta", "响应头": "Cabeçalhos da resposta", "回收已删除数据占用的磁盘空间(checkpoint + VACUUM,后台执行)": "Recupera o espaço em disco ocupado por dados excluídos (checkpoint + VACUUM, em segundo plano)", "图片处理用时:{n} 秒": "Tempo de processamento de imagens: {n} segundos", "在设置 → 通用里开启「调试模式」后,新发生的请求才会保存报文": "Ative o “Modo debug” em Configurações → Geral para que novas requisições passem a salvar o payload", "在路由页查看": "Ver na página de roteamento", "处理中": "Processando", "失败请求不记录用量": "Requisições com falha não registram uso", "失败({status}):{error}": "Falhou ({status}): {error}", "失败:{error}": "Falhou: {error}", "实际发给上游 {bytes} 字节": "{bytes} bytes enviados de fato ao upstream", "客户端": "Cliente", "将删除 {count} 条日志 · 其中 {raw} 条仍带报文原文 · 数据库占用 {db}": "Serão excluídos {count} logs · {raw} ainda com payload · tamanho do banco: {db}", "将删除 {count} 条请求记录 · 同步清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "Excluir {count} registros · Limpar {upstream} payloads do upstream e {downstream} corpos do downstream · Tamanho do banco {db}", "将删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "Exclui {count} registros de requisições e limpa {upstream} payloads de depuração do upstream e {downstream} corpos do downstream.", "尝试 {n} ·": "Tentativa {n} ·", "尝试明细": "Detalhes das tentativas", "尝试次数": "Tentativas", "工具结果": "Resultado da ferramenta", "工具结果 · {id}": "Resultado da ferramenta · {id}", "工具结果图片": "Imagem do resultado da ferramenta", "已删除 {count} 条": "{count} registros excluídos", "已删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "Foram excluídos {count} registros de requisições e limpos {upstream} payloads de depuração do upstream e {downstream} corpos do downstream.", "已受理终止:上游连接已断开,列表稍后刷新为「请求已被手动终止」": "Abortagem aceita: a conexão com o upstream foi encerrada; a lista será atualizada em instantes como “Requisição abortada manualmente”", "已抹掉 {count} 条报文原文": "{count} payloads removidos", "已清理上游调试报文 {upstream} 条、下游正文 {downstream} 条;请求记录与报表已保留。": "Foram limpos {upstream} payloads de depuração do upstream e {downstream} corpos do downstream; os registros de requisições e os relatórios foram preservados.", "已用时(请求仍在转发中)": "Tempo decorrido (a requisição ainda está sendo encaminhada)", "开启调试模式后仅记录新请求,历史对话无法补录;关闭不会删除已有记录。": "O modo de depuração registra apenas novas requisições; conversas anteriores não podem ser recuperadas. Desativá-lo não exclui os registros existentes.", "当前筛选范围": "os resultados dos filtros atuais", "当前网关未提供上游 / 下游清理统计,请更新网关后再清理。": "Este gateway não fornece contagens de limpeza do upstream / downstream. Atualize o gateway antes de limpar os dados.", "成功": "Sucesso", "成功({status})": "Sucesso ({status})", "所属请求": "Solicitação principal", "执行清理": "Executar limpeza", "报文超过单条上限,请求体 / 响应体已按上限截断": "O payload ultrapassou o limite por registro; o corpo da requisição / da resposta foi truncado no limite", "抹掉原文": "Remover payloads", "按提供商筛选": "Filtrar por provedor", "按提供商筛选(只列日志里出现过的)": "Filtrar por provedor (lista apenas os que aparecem nos logs)", "按时间倒序,全量保留": "Ordem cronológica inversa; mantido integralmente", "按模型筛选": "Filtrar por modelo", "按模型筛选(只列日志里出现过的;精确匹配模型名)": "Filtrar por modelo (lista apenas os que aparecem nos logs; correspondência exata com o nome do modelo)", "按请求结果筛选": "Filtrar pelo resultado da requisição", "排队中": "Na fila", "提供商 / 账号": "Provedor / Conta", "提供商: {provider}": "Provedor: {provider}", "提示": "Aviso", "敏": "PS", "敏感词": "Palavras sensíveis", "数据库占用包含主文件与 WAL 文件;清理后可点击「压缩数据库」回收空闲空间。": "O tamanho do banco inclui o arquivo principal e o arquivo WAL. Após a limpeza, use Compactar banco de dados para recuperar o espaço livre.", "断开上游连接,明细记为「请求已被手动终止」": "Encerra a conexão com o upstream e registra nos detalhes como “Requisição abortada manualmente”", "无报文原文(未开启「调试模式」,或已被清理)": "Sem payload original (o modo de depuração estava desativado, ou o conteúdo foi limpo)", "无结果记录": "Sem resultado registrado", "旧版本保存的正文可能已截断,无法恢复缺失内容": "O corpo salvo por uma versão antiga pode estar truncado; o conteúdo ausente não pode ser recuperado", "时间": "Data/hora", "暂无请求日志,网关还没有转发过请求": "Ainda não há logs de requisições; o Gateway ainda não encaminhou nenhuma requisição", "最终承载:{picked}": "Atendida por fim por: {picked}", "本次请求消耗 {credit} 积分": "Pontos consumidos por esta requisição: {credit}", "本轮尝试失败,正在退避等待或切换到下一个账号": "Esta rodada falhou; aguardando o backoff ou trocando para a próxima conta", "来源客户端:{client}": "Cliente de origem: {client}", "查看该请求的上游原始报文": "Ver o payload bruto do upstream desta requisição", "模型": "Modelo", "模型测试": "Teste de modelo", "模型管理页操作列那颗「测试」发起的请求:与真实请求同一条转发链路,但不计入报表统计": "Requisição iniciada pelo “Teste” na coluna de ações da página de gerenciamento de modelos: usa a mesma rota de encaminhamento das requisições reais, mas não entra nas estatísticas dos relatórios", "正在加载请求日志…": "Carregando logs de requisições…", "正在统计…": "Calculando…", "正文超过单条上限,可能已被截断": "O texto ultrapassou o limite por registro e pode ter sido truncado", "没有符合筛选条件的请求": "Nenhuma requisição corresponde aos filtros", "清理": "Limpar", "清理中…": "Limpando…", "清理失败:{message}": "Falha na limpeza: {message}", "清理方式": "Modo de limpeza", "清理请求已返回,但结果数据不完整,请刷新后确认。": "A requisição de limpeza retornou dados de resultado incompletos. Atualize para confirmar o resultado.", "清理请求日志": "Limpar logs de requisições", "清理预览数据不完整": "Os dados da prévia de limpeza estão incompletos", "清空两侧原文": "Limpar os dois lados", "生产请求": "Requisições de produção", "生成速度:输出 token ÷ 流式段用时(总用时 − 首响);流式段不足总用时一半时按总用时计": "Velocidade de geração: tokens de saída ÷ tempo de streaming (duração total − 1ª resposta); usa a duração total quando a janela de streaming é menor que metade da requisição", "用时": "Duração", "用量": "Uso", "确定对{scope}执行「{label}」?
    {summary}
    此操作无法恢复。": "Executar {label} em {scope}?
    {summary}
    Esta ação não pode ser desfeita.", "确定对全部请求日志执行「{label}」?将处理 {count} 条,此操作无法恢复。": "Confirmar “{label}” em todos os logs de requisições? Serão processados {count} registros. Esta ação não pode ser desfeita.", "确定按当前筛选执行「{label}」?将处理 {count} 条,此操作无法恢复。": "Confirmar “{label}” com os filtros atuais? Serão processados {count} registros. Esta ação não pode ser desfeita.", "确定终止这条正在转发的请求?
    上游连接会立即断开,明细将记为「请求已被手动终止」。": "Tem certeza de que deseja abortar esta requisição em encaminhamento?
    A conexão com o upstream será encerrada imediatamente e os detalhes serão registrados como “Requisição abortada manualmente”.", "等待响应": "Aguardando resposta", "策略 {strategy} · 会话粘性 {sticky}{hit}": "Estratégia {strategy} · Aderência {sticky}{hit}", "终止": "Abortar", "终止失败:{error}": "Falha ao abortar: {error}", "终止请求": "Abortar requisição", "结果": "Resultado", "缓存读取: - / 命中率: -": "Leituras de cache: - / taxa de acerto: -", "缓存读取: {cache} / 命中率: {rate}": "Leituras de cache: {cache} / taxa de acerto: {rate}", "耗时": "Duração", "被跳过:": "Puladas: ", "识别到 User-Agent,但不属于已知的客户端类型:{ua}": "User-Agent detectado, mas não é um tipo de cliente conhecido: {ua}", "识图用量按实际视觉账号单独记录,不混入原模型的回答用量。": "O uso visual é registrado separadamente na conta de visão utilizada, sem se misturar ao uso da resposta do modelo original.", "详情": "Detalhes", "详情内容": "Conteúdo dos detalhes", "请求体": "Corpo da requisição", "请求图片": "Imagem da requisição", "请求在任何账号接手之前就失败了": "A requisição falhou antes de qualquer conta assumi-la", "请求头": "Cabeçalhos da requisição", "请求已受理,正在选路、取凭证、建立上游连接": "Requisição aceita; selecionando rota, obtendo credenciais e estabelecendo a conexão com o upstream", "请求日志列表": "Lista de logs de requisições", "请求日志时间范围": "Período dos logs de requisições", "请求日志表": "Tabela de logs de requisições", "请求正在转发中,用时列显示的是已用时": "A requisição está sendo encaminhada; a coluna Duração mostra o tempo decorrido", "请求筛选": "Filtros de requisições", "请求详情": "Detalhes da requisição", "读取请求日志失败,详见控制台": "Falha ao ler os logs de requisições; veja o console", "路由回放": "Replay de roteamento", "转发到上游的模型:{model}": "Modelo encaminhado ao upstream: {model}", "轮次": "Rodada", "辅助识图调用": "Chamada de leitura assistida", "输入 {input} · 输出 {output} · 总计 {total} · 缓存读 {cache}": "Entrada {input} · Saída {output} · Total {total} · Leitura de cache {cache}", "这条报文由旧版本截断保存,缺失内容无法恢复": "Este payload foi truncado por uma versão antiga; o conteúdo ausente não pode ser recuperado", "这条明细是一次模型测试(人工发起):走的是真实转发链路,但不计入报表统计": "Este detalhe é um teste de modelo (iniciado manualmente): usa a mesma rota de encaminhamento das requisições reais, mas não entra nas estatísticas dos relatórios", "这条明细没有记录提供商(旧数据或请求未走到转发)": "Este detalhe não registrou provedor (dados antigos ou a requisição falhou antes do encaminhamento)", "这条明细没有记录来源客户端(旧数据、模型测试,或请求未带 User-Agent)": "Nenhum cliente de origem registrado nesta entrada (dados antigos, teste de modelo ou solicitação sem User-Agent)", "这条记录命中了敏感词,但没有留下命中明细": "Este registro atingiu palavras sensíveis, mas não deixou detalhes das ocorrências", "这条记录的尝试明细未采集(该字段上线前的旧数据,或请求在转发前就失败)": "Os detalhes das tentativas deste registro não foram coletados (dados antigos, de antes do lançamento deste campo, ou a requisição falhou antes do encaminhamento)", "这条请求没有保存这一段报文": "Esta requisição não salvou este trecho do payload", "进入「{phase}」阶段已持续 {time}": "Na fase “{phase}” há {time}", "进行中": "Em andamento", "进行中…": "Em andamento…", "连接中": "Conectando", "速度": "Velocidade", "重试 {n}": "Retry {n}", "重试中": "Retentando", "重试次数": "Retries", "面板内发起的模型调用,消耗额度并记录 Key,不计入生产报表": "Chamada de modelo iniciada pelo painel; usa cota e registra a API Key, mas não entra nos relatórios de produção", "预览对话": "Prévia da conversa", "预览读取失败": "Falha ao ler a prévia", "预览读取失败:{error}": "Falha ao ler a prévia: {error}", "额外识图用量:{n} Token": "Uso visual adicional: {n} tokens", "首响 {time}": "1ª resposta {time}", "首响:上游首帧到达的耗时": "1ª resposta: tempo até o primeiro frame do upstream chegar", "首响:上游首帧到达的耗时(请求仍在转发中)": "1ª resposta: tempo até o primeiro frame do upstream chegar (a requisição ainda está sendo encaminhada)", "首帧已到,上游内容正在下发": "O primeiro frame chegou; o upstream está enviando o conteúdo", "(请求仍在转发中)": "(a requisição ainda está sendo encaminhada)", "(账号:{account})": "(conta: {account})", ",{n}毫秒后重试": ", retry em {n}ms", ",{n}秒后重试": ", retry em {n}s", "{name}的列设置": "Configurações de colunas de {name}", "「{label}」列的对齐": "Alinhamento da coluna “{label}”", "中": "Centro", "共 0 条": "Nenhum registro", "共 {total} 条 · 当前第 {start}–{end} 条": "{total} no total · exibindo {start}–{end}", "共 {total} 条(全部显示)": "{total} no total (todos exibidos)", "列": "Coluna", "列设置": "Configurações de colunas", "右": "Direita", "对齐": "Alinhamento", "左": "Esquerda", "当前只有一页": "Há apenas uma página", "拖动 ⋮⋮ 调整顺序": "Arraste ⋮⋮ para reordenar", "按住拖动调整列顺序": "Segure e arraste para ajustar a ordem das colunas", "显示「{label}」列": "Exibir a coluna “{label}”", "条": "itens", "每页": "Por página", "每页条数": "Itens por página", "调整「{name}」的列:显示 / 隐藏、顺序、对齐": "Ajustar as colunas de “{name}”: exibir / ocultar, ordem e alinhamento", "跳至": "Ir para", "跳转到指定页": "Ir para uma página específica", "跳转到第 1–{pageCount} 页": "Ir para a página 1–{pageCount}", "这一列已隐藏": "Esta coluna está oculta", "这一列正在显示": "Esta coluna está visível", "页": "pág.", "PID:{pid}": "PID: {pid}", "{label} · {port}": "{label} · {port}", "。已经把这个地址填进其它工具(Claude Code、Cherry Studio 等)的,需要一并改成新地址,否则那些工具会连不上。": ". Se você já preencheu este endereço em outras ferramentas (Claude Code, Cherry Studio etc.), altere-o também para o novo endereço; caso contrário, elas não conseguirão se conectar.", "与当前端口相同,无需重启": "Igual à porta atual; não é preciso reiniciar", "例如 3066": "Exemplo: 3066", "即将结束以下进程:": "Os seguintes processos serão encerrados:", "已结束进程 {name}(PID {pid}),端口已释放": "Processo {name} (PID {pid}) encerrado; porta liberada", "当前状态": "Status atual", "当前端口 {port},网关运行正常。": "Porta atual: {port}; o gateway está funcionando normalmente.", "换端口后要改的地方": "O que alterar após trocar a porta", "新端口": "Nova porta", "更换端口": "Trocar porta", "更换网关端口": "Trocar a porta do gateway", "本地网关正在监听 {url},可直接调用 OpenAI 兼容接口": "O gateway local está escutando em {url}; é possível chamar diretamente a interface compatível com OpenAI", "校验中…": "Validando…", "正在检查… · {port}": "Verificando… · {port}", "正在确认网关是否已就绪": "Confirmando se o gateway está pronto", "正在重启…": "Reiniciando…", "端口 {port} 上没有查到监听进程,请改用「更换端口」": "Nenhum processo em escuta foi encontrado na porta {port}; use “Trocar porta”", "端口号": "Número da porta", "端口已改为 {port},正在重启…": "Porta alterada para {port}; reiniciando…", "端口已释放。现在重启程序让网关用这个端口启动?": "A porta foi liberada. Reiniciar o programa agora para o gateway iniciar nessa porta?", "端口需在 1024-65535 之间": "A porta deve estar entre 1024 e 65535", "端口需在 1024-65535 之间。1023 及以下是系统保留范围,普通程序无法监听。": "A porta deve estar entre 1024 e 65535. A faixa até 1023 é reservada pelo sistema e programas comuns não podem escutá-la.", "结束中…": "Encerrando…", "结束占用端口的进程": "Encerrar o processo que ocupa a porta", "结束占用进程": "Encerrar processo ocupante", "结束失败:{reason}": "Falha ao encerrar: {reason}", "结束它会强制退出该程序未保存的数据。确认继续?": "Encerrá-lo forçará a saída do programa e os dados não salvos serão perdidos. Deseja continuar?", "结束进程": "Encerrar processo", "网关启动中… · {port}": "Gateway iniciando… · {port}", "网关启动失败": "Falha ao iniciar o gateway", "网关地址会变成 ": "O endereço do gateway passará a ser ", "网关运行中 · {port}": "Gateway em execução · {port}", "该端口不可用": "Esta porta não está disponível", "路径:{path}": "Caminho: {path}", "进程名:{name}": "Nome do processo: {name}", "进程已结束,但端口仍被占用,建议改用「更换端口」": "O processo foi encerrado, mas a porta continua em uso; recomendamos usar “Trocar porta”", "重启": "Reiniciar", "重启中…": "Reiniciando…", "重启失败:{reason}": "Falha ao reiniciar: {reason}", "重启程序": "Reiniciar o programa", "(未知)": "(desconhecido)" }); +window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { "无可用账号:{reason}": "Nenhuma conta disponível: {reason}", "AI 助手": "Assistente de IA", "API Key 用量详情": "Detalhes de uso da API Key", "API Key 统计": "Estatísticas de API Key", "API Key(可选)": "API Key (opcional)", "API 凭证": "Credenciais de API", "API 方法提交给插件的账号规范化入口;不会用该密钥发起 OAuth 登录。": "Métodos de API são enviados ao ponto de entrada de normalização de contas do plugin; a chave não é usada para iniciar login OAuth.", "Agent2API · 多提供商本地网关": "Agent2API · Gateway local multi-provedor", "Agent2API 社区": "Comunidade Agent2API", "Codar(科搭)": "Codar", "JSON 格式不正确": "Formato JSON inválido", "JoyCode(京东)": "JoyCode (JD)", "Linux (amd64)": "Linux (amd64)", "Linux (arm64)": "Linux (arm64)", "Magpie 官方": "Magpie oficial", "Magpie 官方与社区插件,共用一个按需下载的运行时": "Plugins oficiais e da comunidade Magpie compartilham um runtime baixado sob demanda", "Magpie 官方名单": "Catálogo oficial do Magpie", "Magpie 官方和社区插件均通过兼容方式接入 Agent2API,不保证 100% 可用。": "Plugins Magpie oficiais e da comunidade são integrados ao Agent2API por compatibilidade; não há garantia de funcionamento 100%.", "Magpie 推荐": "Recomendado pelo Magpie", "Magpie 插件": "Plugins Magpie", "Magpie 插件安装须知": "Aviso de instalação de plugin Magpie", "Magpie 社区": "Comunidade Magpie", "Magpie 社区分发源": "Distribuição da comunidade Magpie", "Magpie 脚本插件": "Plugins de script Magpie", "MiniMax Code 国内/国际": "MiniMax Code China / Global", "MiniMax Code 的设备码登录、对话、模型目录、余额与每日签到;国内版与国际版可分别启停。": "Login por código de dispositivo, chat, catálogo de modelos, saldo e check-in diário do MiniMax Code. As versões China e Global podem ser ativadas separadamente.", "OAuth 登录": "Login OAuth", "QQ 群号": "Número do grupo do QQ", "Star 数暂未读取": "A contagem de estrelas ainda não está disponível", "Star 更新于 {time}": "Estrelas atualizadas em {time}", "Token 用量": "Uso de tokens", "WPS 灵犀": "WPS Lingxi", "Windows (ARM64)": "Windows (ARM64)", "Windows (x64)": "Windows (x64)", "macOS (Apple Silicon)": "macOS (Apple Silicon)", "macOS (Intel)": "macOS (Intel)", "npm 包名": "Nome do pacote npm", "npm 包名、GitHub 地址或 magpie:包名": "Pacote npm, URL GitHub ou magpie:pacote", "npm 包名或 GitHub 地址": "Nome do pacote npm ou URL do GitHub", "npm 未发布的包会尝试 Magpie 社区分发源;不会绕过完整性校验或执行安装脚本。": "Pacotes ausentes no npm são procurados na distribuição Magpie. A verificação de integridade não é ignorada e scripts de instalação não são executados.", "{count} 个 Star": "{count} estrelas", "{count} 个插件": "{count} plugins", "{count} 家": "{count} provedores", "{count} 家提供商": "{count} provedores", "{count} 家提供商 · 安装于 {time}": "{count} provedores · Instalado em {time}", "{key} 需要 true / false / null": "{key} deve ser true / false / null", "{key} 需要数字": "{key} deve ser um número", "{label}(API)": "{label} (API)", "{label}(OAuth)": "{label} (OAuth)", "{n} 个启用": "{n} habilitadas", "{n} 个已限流": "{n} com rate limit", "{n} 个请求正在转发中,点开「请求日志」查看": "{n} requisições em encaminhamento; abra “Logs de requisições” para ver", "{n} 个账号可用": "{n} contas disponíveis", "{n} 个账号启用": "{n} contas habilitadas", "{n} 条失败请求未读,点开「请求日志」查看": "{n} requisições com falha não lidas; abra “Logs de requisições” para ver", "{n} 条错误日志未读,点开「日志」查看": "{n} logs de erro não lidos; abra “Logs” para ver", "{n} 项 · {shown} 显示": "{n} itens · {shown} visíveis", "{size} · 下载后可直接安装,无需跳转浏览器": "{size} · Baixa e instala na hora — sem abrir o navegador", "{size} · 点击下载后可直接安装,无需跳转浏览器": "{size} · Baixe e instale na hora — sem abrir o navegador", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "{total} menus · {shown} visíveis · {hidden} ocultos · {groups} grupos", "· 不会改动任何配置": "· não altera nenhuma configuração", "· 每次执行前列改动清单,等你确认": "· lista as alterações antes de cada execução e aguarda sua confirmação", "—": "—", "“本机”指运行网关的机器,不是打开面板的电脑。远程浏览器也可以发起,但网关本机可能需要安装客户端并已登录;是否可用由网关返回结果决定。": "“Local” é a máquina que executa o gateway, não o computador que exibe o painel. Um navegador remoto também pode iniciar o processo, mas a máquina do gateway pode precisar do cliente instalado e conectado. A disponibilidade depende da resposta do gateway.", "✅ GitHub 令牌已保存(加密存储,界面不再显示)": "✅ Token do GitHub salvo (armazenado criptografado, nunca exibido novamente)", "✅ Token 已刷新": "✅ Token atualizado", "✅ 已将账号优先级调整到全局第一位": "✅ Prioridade da conta ajustada para o primeiro lugar na fila global", "✅ 已清除界面保存的 GitHub 令牌(环境变量若配置过则继续生效)": "✅ Token do GitHub salvo foi removido (uma variável de ambiente, se definida, continua valendo)", "「{name}」匹配到多个账号:{list},请用完整账号名重试": "\"{name}\" corresponde a várias contas: {list}. Tente de novo com o nome completo da conta.", "「工具全不勾选 → 不注入系统提示词」:想当纯聊天用时,不必再去关上面的开关。": "\"Nenhuma ferramenta marcada → nenhum prompt de sistema\": para usar como chat comum, não precisa desligar o interruptor acima.", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "\"Configurações\" é fixo, então o grupo dele não pode ser ocultado inteiro; os outros menus podem ser ocultados individualmente", "上一页": "Anterior", "上次加载记录(非本次故障)": "Registro anterior (não é uma falha atual)", "下一页": "Próxima", "下拉刷新": "Puxe para atualizar", "下次自动重试:{time}": "Próxima tentativa automática: {time}", "下载与当前平台对应的插件包(zip),点右上角「安装插件包」选中它即可。": "Baixe o pacote de plugin (zip) para esta plataforma e clique em \"Instalar pacote de plugin\" no canto superior direito para selecioná-lo.", "不填写(可选)": "Deixar em branco (opcional)", "与电脑端一致:每 {n} 分钟": "Igual ao desktop: a cada {n} min", "为 Agent2API 扩展网页提供商,支持智谱清言的模型调用、访客与登录账号、凭证续期、模型目录、积分查询、签到和任务领取。": "Adiciona provedores web ao Agent2API, com chamadas de modelos do Zhipu Qingyan, contas de convidado e autenticadas, renovação de credenciais, catálogo de modelos, consulta de pontos, check-in e resgate de recompensas de tarefas.", "为网关扩展多家 AI 提供商,支持账号登录与导入、模型调用、凭证续期、模型目录、余额查询和签到。具体能力以各提供商的支持情况为准。": "Adiciona provedores de IA ao gateway com login e importação de contas, chamadas de modelos, renovação de credenciais, catálogo, consulta de saldo e check-in. Os recursos variam conforme o provedor.", "主导航": "Navegação principal", "也可输入 file: 加网关电脑上的插件目录或 tgz 文件绝对路径;本地插件会复制安装,不修改源目录。": "Você também pode digitar file: seguido do caminho absoluto de um diretório de plugin ou arquivo tgz no computador do gateway. Os plugins locais são copiados para instalação sem alterar o diretório de origem.", "书生·端砚": "Intern InkStone", "了解并安装": "Entendi, instalar", "仅在该 API 方法需要额外密钥时填写": "Preencha somente se este método de API exigir uma chave adicional.", "仅安装你信任的 npm 包、GitHub 仓库或 Magpie 社区分发包;完整性校验不等于安全审计。": "Instale apenas pacotes npm, repositórios GitHub ou pacotes Magpie de confiança. Verificação de integridade não é auditoria de segurança.", "仅安装你信任的 npm 包或 GitHub 仓库;版本与完整性检查不能保证脚本安全。": "Instale apenas pacotes npm ou repositórios do GitHub confiáveis. As verificações de versão e integridade não garantem a segurança do script.", "仅安装你信任的 npm 包;下载校验只能确认文件完整,不能保证脚本安全。": "Instale apenas pacotes npm confiáveis. A verificação do download confirma a integridade do arquivo, não a segurança do script.", "仅影响插件更新通道,与主程序独立。开启后可安装 beta 版;已使用 beta 时保持该通道,关闭后只看正式版且不会降级。": "Afeta apenas o canal dos plugins, independente do aplicativo. Ative para receber betas. Plugins em beta permanecem nesse canal; ao desativar, somente versões estáveis sem downgrade.", "仅自动更新已安装、已启用且通过可信签名校验的社区插件。新插件需手动安装,卸载后不会自动重新安装;未签名插件需手动更新。": "Atualiza automaticamente apenas plugins da comunidade instalados, ativados e com assinaturas confiáveis verificadas. Novos plugins exigem instalação manual e não são reinstalados automaticamente após a remoção. Plugins sem assinatura exigem atualização manual.", "从 GitHub 官方源下载固定提交。仓库根目录须有可直接运行的插件入口;不会执行构建脚本或安装依赖。": "Baixa um commit fixo diretamente do GitHub. A raiz do repositório deve conter uma entrada de plugin executável; scripts de compilação e instalação de dependências não são executados.", "从 GitHub 官方源下载固定提交。仓库须包含可运行的提供商入口;安装运行依赖,但不执行构建和安装脚本。": "Baixa um commit fixo diretamente do GitHub. O repositório deve incluir um ponto de entrada executável para o provedor. As dependências de execução são instaladas, mas os scripts de compilação e instalação não são executados.", "从 Magpie 社区官方分发目录下载,核验 SHA-512;更新与重装继续使用此来源。": "Baixa da distribuição oficial da comunidade Magpie e verifica SHA-512. Atualizações e reinstalações mantêm essa origem.", "从 npm / GitHub / Magpie 安装": "Instalar do npm / GitHub / Magpie", "从 npm / GitHub 安装": "Instalar do npm / GitHub", "从 npm 安装": "Instalar do npm", "从文件安装…": "Instalar de arquivo…", "从网关本机客户端导入": "Importar de um cliente na máquina do gateway", "仓库没有已提交的可加载入口,请等待作者发布构建产物": "O repositório não contém um ponto de entrada carregável. Aguarde o autor publicar uma versão compilada.", "代价": "Custo", "令牌已生效,但写入磁盘失败(重启后会丢失)": "O token está ativo, mas não foi gravado em disco (será perdido ao reiniciar)", "以下设置属于所连接网关,不是手机本地设置。": "Estas configurações pertencem ao gateway conectado, não ao celular.", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "Restaura os grupos, a ordem e a visibilidade padrão. Grupos criados por você são removidos (os menus são mantidos).", "会话内": "Na sessão", "会话已过期。重新登录后会自动回到手机端。": "Sua sessão expirou. Ao entrar novamente você volta ao app móvel automaticamente.", "会话粘性": "Aderência de sessão", "作为 system 消息注入给助手": "Injetado no assistente como mensagem system", "作者尚未提供插件介绍。": "O autor ainda não forneceu uma descrição do plugin.", "使用 Cloudflare 账号 ID 与 API Token,接入 Workers AI 对话和在线模型目录。": "Conecte o chat e o catálogo online do Workers AI com o ID da conta Cloudflare e um API Token.", "使用 Warp 终端的登录态,接入账号可用模型并查询 AI 请求额度。": "Use o login do terminal Warp para acessar os modelos disponíveis na conta e consultar a cota de solicitações de IA.", "使用你在网关电脑上安装并登录的 agy CLI,通过 ACP 协议接入模型、工具调用和额度查询;与依赖 Antigravity IDE 的 Antigravity ACP 插件不同。": "Usa a CLI agy instalada e autenticada no computador do gateway para modelos, chamadas de ferramentas e consulta de cotas via ACP. É diferente do plugin Antigravity ACP, que depende da IDE Antigravity.", "使用网关本机 gcloud / ADC 登录,接入 Vertex AI 模型并查询 Google Cloud 促销赠金。": "Use as credenciais gcloud / ADC da máquina do gateway para acessar modelos Vertex AI e consultar créditos promocionais do Google Cloud.", "例如:家里、公司": "ex.: Casa, Escritório", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "O módulo de layout da barra lateral não foi carregado (ui/sidebar-layout.js deve vir antes de app.js).", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "Nenhum menu aparece na barra lateral. Ative os que precisar em Configurações → Exibição → Menus da barra lateral.", "侧边栏菜单": "Menus da barra lateral", "保存失败:{error}": "Falha ao salvar: {error}", "保存对话模型失败:{message}": "Falha ao salvar o modelo de chat: {message}", "保存并继续": "Salvar e continuar", "修改高级参数会等待在途任务结束后重新加载插件;专属开关实时生效。": "Alterar as opções avançadas recarrega o plugin após a conclusão das tarefas em andamento. As opções de cada provedor entram em vigor imediatamente.", "候选队列": "Fila de candidatos", "停止": "Parar", "停用": "Desativada", "允许的操作": "Operações permitidas", "允许签到及附带任务": "Permitir check-in e tarefas adicionais", "先添加一台网关": "Adicione um gateway primeiro", "先选择插件声明的账号登录方式,再填写必需字段。OAuth 由共享登录桥负责等待、取消和错误;API 凭证通过账号规范化入口添加。": "Selecione um método de login de conta declarado pelo plugin e preencha os campos obrigatórios. A ponte de login compartilhada trata a espera, o cancelamento e os erros de OAuth; credenciais de API são adicionadas pelo ponto de entrada de normalização de contas.", "免鉴权调用": "Chamadas sem autenticação", "全不选": "Desmarcar tudo", "全部 API Key": "Todas as API Keys", "全部客户端": "Todos os clientes", "全部更新": "Atualizar todos", "共 {n} 条记录": "{n} registros", "共享登录桥不可用,请重新打开面板": "A ponte de login compartilhada está indisponível. Reabra o painel.", "共享运行环境尚未就绪,本插件没有明确的加载失败结果。": "O ambiente compartilhado ainda não está pronto. Nenhuma falha de carregamento foi confirmada para este plugin.", "关": "Desligado", "关闭菜单": "Fechar menu", "兼容 OpenCode v1 / Magpie 提供商插件及其运行依赖;不加载界面、独立工具或 Pi 扩展。": "Compatível com plugins de provedores OpenCode v1 / Magpie e suas dependências de execução. Plugins de interface, ferramentas independentes e extensões Pi não são carregados.", "准备运行环境": "Preparando ambiente de execução", "凭证 JSON 含有不允许的字段:{key}": "O JSON de credenciais contém um campo não permitido: {key}", "凭证 JSON 嵌套过深,请只粘贴该插件要求的凭证对象": "O JSON de credenciais tem níveis demais de aninhamento. Cole apenas o objeto de credenciais exigido por este plugin.", "凭证 JSON 必须是非空对象,不能是数组或字符串": "O JSON de credenciais deve ser um objeto não vazio, não um array ou uma string.", "凭证 JSON 格式不正确,请检查括号和引号": "O formato do JSON de credenciais está incorreto. Verifique os colchetes, as chaves e as aspas.", "凭证 JSON(必填)": "JSON de credenciais (obrigatório)", "凭证只在提交时发送到网关;备注名和代理请使用下面的字段,解析错误不会回显凭证内容。": "As credenciais só são enviadas ao gateway no momento do envio. Use os campos abaixo para o rótulo e o proxy; erros de análise não exibirão o conteúdo das credenciais.", "分布来自保留的日报来源明细;无法恢复的历史不反推客户端或模型。": "A distribuição vem dos agregados diários preservados; clientes ou modelos não são inferidos para históricos irrecuperáveis.", "分支、标签或提交(留空使用默认分支)": "Branch, tag ou commit (em branco para a branch padrão)", "分组名": "Nome do grupo", "分组名,例如「常用」": "Nome do grupo, ex.: \"Favoritos\"", "切换菜单": "Alternar menu", "列表 = 模型管理页里所有已启用的模型。助手走本地网关发起对话,消耗所选账号的额度。": "A lista é todos os modelos habilitados na página Gerenciamento de modelos. O assistente conversa pelo gateway local e consome a cota da conta selecionada.", "创建并进入": "Criar e entrar", "创建管理员账号": "Criar conta de administrador", "初始化已完成,正在等待校验和登记。": "Inicialização concluída. Aguardando validação e registro.", "初始化超时": "Tempo de inicialização esgotado", "删除 {n} 条": "Excluir {n} itens", "删除分组": "Excluir grupo", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "Excluir o grupo \"{name}\"? Os {n} menus vão para \"{target}\" — nada é perdido.", "删除空分组「{name}」?": "Excluir o grupo vazio \"{name}\"?", "删除这个分组(组内菜单移到第一组)": "Excluir este grupo (os menus vão para o primeiro grupo)", "刷新清单": "Atualizar catálogo", "刷新状态": "Atualizar estado", "加入插件 beta 版": "Participar dos betas de plugins", "加载中": "Carregando", "加载助手设置失败:{message}": "Falha ao carregar as configurações do assistente: {message}", "加载失败": "Falha ao carregar", "加载失败:{error}": "Falha ao carregar: {error}", "加载更多": "Carregar mais", "加载更早的记录": "Carregar registros anteriores", "加载状态": "Estado do carregamento", "加载诊断": "Diagnóstico de carregamento", "助手": "Assistente", "助手自己用哪个模型生成回复": "Qual modelo o assistente usa para gerar respostas", "助手设置读取失败,工具可能已过时。": "Falha ao ler as configurações do assistente; a lista de ferramentas pode estar desatualizada.", "助手走本地网关,消耗所选账号的额度": "O assistente usa o gateway local e consome a cota da conta selecionada", "勾选即注入该工具;不勾选 = 助手看不到它": "Ferramentas marcadas são injetadas; desmarcadas ficam invisíveis ao assistente", "十几 MB": "cerca de 10 MB", "升级会重新下载并校验插件包(约 {size}),装完立即生效,账号数据不受影响。": "A atualização baixa e verifica o pacote de plugin novamente (cerca de {size}). Passa a valer na hora e não afeta os dados das contas.", "协议版本": "Versão do protocolo", "单签": "Individual", "占比": "Participação", "即将就绪": "Quase pronto", "卸载": "Desinstalar", "卸载插件": "Desinstalar plugin", "卸载插件包": "Desinstalar pacote de plugin", "历史数据整理中": "Organizando dados históricos", "历史明细不完整,输入、输出与缓存读数无法恢复": "O histórico está incompleto; não é possível recuperar os valores de entrada, saída e cache.", "历史未记录 Key": "Key não registrada no histórico", "原生插件包,来自项目插件仓库": "Pacotes nativos do repositório de plugins do projeto", "原生辅助授权": "Permissões de auxiliares nativos", "原生辅助授权已失效或暂不可用,请重新选择并确认。": "A permissão do auxiliar nativo não é mais válida ou está temporariamente indisponível. Selecione e confirme novamente.", "原生辅助程序不受 Wasm 沙箱限制,只授权你信任的已安装插件。辅助程序更新后需要重新确认。": "Auxiliares nativos ficam fora da sandbox Wasm. Autorize apenas plugins instalados em que você confia. Confirme novamente após uma atualização do auxiliar.", "去下载": "Baixar", "去登录": "Entrar", "参数不完整(需要 account / enabled)": "Parâmetros incompletos (account / enabled obrigatórios)", "参数不完整(需要 account / position)": "Parâmetros incompletos (account / position obrigatórios)", "参数不完整(需要 provider / id / alias)": "Parâmetros incompletos (provider / id / alias obrigatórios)", "参数不完整(需要 provider / id / capabilities)": "Parâmetros incompletos (provider / id / capabilities obrigatórios)", "参数不完整(需要 provider / id / enabled)": "Parâmetros incompletos (provider / id / enabled obrigatórios)", "参数不完整(需要 provider / position)": "Parâmetros incompletos (provider / position obrigatórios)", "发现新版本 {latest}(当前 {current}),点开「设置 - 软件更新」可查看更新日志并下载": "Nova versão {latest} disponível (atual: {current}); abra “Configurações - Atualização do software” para ver as notas de versão e baixar", "发现新版本 {version}": "Nova versão {version} disponível", "发送": "Enviar", "取消日期筛选": "Limpar filtro de data", "受影响的来源将在 {time} 后自动重试": "As fontes afetadas serão consultadas novamente após {time}", "只改映射名,不动上游模型 ID;映射立即生效(新对话即可用)。": "Só o nome de mapeamento muda; o ID do modelo upstream permanece. Os mapeamentos valem na hora (já valem em uma nova conversa).", "只注入工具定义": "Somente definições de ferramentas são injetadas", "只统计已结束的生产请求;失败请求仍计入请求数,Token 用量沿用现有成功请求口径。": "São contadas apenas requisições de produção finalizadas. Falhas entram na contagem; o uso de tokens segue o critério existente para requisições bem-sucedidas.", "只读": "Somente leitura", "只读工具": "Ferramentas somente leitura", "可以点击「刷新」读取插件仓库,或从本地 zip 安装插件。": "Clique em Atualizar para carregar o catálogo ou instale um zip local.", "可填 {min}–{max} 秒,关闭后保留间隔": "Informe {min}–{max} segundos; o intervalo é mantido ao desativar", "可更新": "Atualização disponível", "可更新 v{version}": "v{version} disponível", "可更新到 v{version}": "Atualização disponível: v{version}", "可用": "utilizáveis", "可选,留空使用账号昵称": "Opcional; deixe em branco para usar o apelido da conta.", "各家提供商的转发与账号实现都在插件包里,不随本软件发布。装好插件后,模型转发、添加账号、签到与余额查询才会生效。": "O encaminhamento e o tratamento de contas de cada provedor ficam em pacotes de plugin distribuídos separadamente deste aplicativo. Encaminhamento de modelos, adição de contas, check-in e consulta de saldo só funcionam com o plugin instalado.", "后台只读取状态,不会自动弹出验证码;验证结果一次性使用,短时间内过期。": "O processo em segundo plano apenas consulta o status e nunca abre a verificação automaticamente. Cada token é de uso único e expira em pouco tempo.", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "Contém o item fixo \"Configurações\", então o grupo não pode ser ocultado inteiro (os outros menus podem ser ocultados individualmente)", "启动较慢,仍在加载;尚未收到失败结果。": "A inicialização está demorando, mas o carregamento continua. Nenhuma falha foi informada.", "四种组合的实际效果": "Efeito real de cada combinação", "回复由 {model} 生成 · 走本地网关": "Resposta gerada por {model} · via gateway local", "固定": "Fixo", "在 GitHub 上创建令牌(无需勾选任何权限)": "Criar um token no GitHub (nenhuma permissão necessária)", "填写账号登录所需信息并发起授权;等待、取消与失败原因由共享登录桥处理,设备码和操作指引会显示在上方。": "Preencha as informações necessárias para o login da conta e inicie a autorização. A ponte de login compartilhada trata a espera, o cancelamento e os motivos de falha; códigos de dispositivo e instruções aparecem acima.", "备注名(可选)": "Nome (opcional)", "复制失败,请手动选择复制": "Falha ao copiar; selecione e copie manualmente", "复制订阅链接": "Copiar link da assinatura", "失败 · {status}": "Falha · {status}", "失败退避": "Recuo por falha", "奖励 {bonus}": "Bônus {bonus}", "套餐 {plan}": "Plano {plan}", "套餐池人机验证": "Verificação humana do Start Plan", "套餐池请求需要验证,请主动开始验证后重试请求": "Uma solicitação Start Plan precisa de verificação. Inicie a verificação manualmente e tente a solicitação novamente.", "安装": "Instalar", "安装 {name}": "Instalar {name}", "安装与更新插件时访问 GitHub 用。与「设置 → 更新 → 更新设置」里的同一项互通,填一次即可。不填也能用,只是匿名请求限额较低(60 次/小时)。": "Usado ao instalar e atualizar plugins pelo GitHub. É o mesmo valor de \"Configurações → Atualização → Configurações de atualização\", então basta preencher uma vez. Opcional — sem ele, o limite de requisições anônimas é menor (60/hora).", "安装于 {time}": "Instalado em {time}", "安装包已就绪,点「安装」即可完成更新": "Pacote pronto — toque em \"Instalar\" para concluir", "安装插件包": "Instalar pacote de plugin", "安装时间": "Instalado em", "安装脚本插件": "Instalar plugin de script", "完成时间:{time}": "Conclusão: {time}", "官方": "Oficial", "官方与推荐来自 Magpie 官方名单;第三方来自 GitHub 的 magpie-plugin 标签,不代表官方推荐。": "Os plugins oficiais e recomendados vêm do catálogo oficial do Magpie. Os de terceiros são encontrados pelo tópico magpie-plugin no GitHub e não representam uma recomendação oficial.", "官方签名:包内容与发布者签的完全一致,未被改过": "Assinatura oficial: o conteúdo do pacote confere exatamente com o que o publicador assinou", "定时": "Agendado", "定时任务": "Tarefas agendadas", "实际注入": "Injetado de fato", "客户端分布": "Distribuição por cliente", "客户端统计": "Estatísticas de clientes", "宿主错误": "Erro do host", "对话": "Conversas", "对话模型": "Modelo de chat", "对话模型已切换": "Modelo de chat alterado", "将修改 {model} 的 {n} 项能力:": "Vai alterar {n} capacidades de {model}:", "将修改 {n} 个模型的启停状态:": "Vai alterar o estado de {n} modelos:", "将修改 {n} 个账号的启用状态(其中禁用 {k} 个):": "Vai alterar o estado de {n} contas (desabilitando {k}):", "将对 {model} 发起一次真实请求:": "Vai enviar uma requisição real para {model}:", "将执行 {label}。": "Vai executar {label}.", "将把「{provider}」整组移到第 {position} 顺位:": "Vai mover o grupo \"{provider}\" inteiro para a posição {position}:", "将把账号「{account}」移到第 {position} 顺位:": "Vai mover a conta \"{account}\" para a posição {position}:", "将改动 {n} 条映射({parts}):": "Vai alterar {n} mapeamentos ({parts}):", "小米 MiMo": "Xiaomi MiMo", "尚未取得插件清单": "O catálogo de plugins ainda não foi carregado", "尚未检查更新": "Ainda não verificado", "尚未登录": "Sessão não iniciada", "已下载": "Baixado", "已下载,待安装": "Baixado, pronto para instalar", "已修改 {n} 个模型": "{n} modelos alterados", "已修改 {n} 个账号": "{n} contas alteradas", "已修改 {n} 项能力": "{n} capacidades alteradas", "已停止这次回答。": "Esta resposta foi interrompida.", "已全部取消勾选": "Todas desmarcadas", "已关闭自动检查": "Verificação automática desativada", "已删除分组「{name}」": "Grupo \"{name}\" excluído", "已加载": "Carregado", "已勾选 {n} / {total}": "{n} / {total} marcadas", "已勾选「{label}」": "\"{label}\" marcada", "已勾选工具": "Ferramentas marcadas", "已取消「{label}」": "\"{label}\" desmarcada", "已启动安装器": "Instalador iniciado", "已填写(粘贴新令牌可覆盖)": "Preenchido (cole um novo token para substituir)", "已复制:{text}": "Copiado: {text}", "已开启自动检查": "Verificação automática ativada", "已恢复推荐勾选": "Seleção recomendada restaurada", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "Grupos padrão restaurados: Visão geral / Encaminhamento / Diagnóstico / Sistema", "已改动 {n} 条映射": "{n} mapeamentos alterados", "已新建分组「{name}」,点组头的 + 把菜单移进来": "Grupo \"{name}\" criado — use + no cabeçalho para mover menus", "已是最新版本": "Você está na versão mais recente", "已显示 {shown} / {total} 个提供商插件": "Exibindo {shown} de {total} plugins de provedores", "已更新 {count} 个插件": "{count} plugins atualizados", "已更新 {done} 个插件,{failed} 个失败:{error}": "{done} plugins atualizados, {failed} falharam: {error}", "已注入 {n} / {total} 个工具 · 系统提示词:{state}": "{n} / {total} ferramentas injetadas · Prompt de sistema: {state}", "已添加的服务器": "Servidores adicionados", "已由其他插件接管,请到对应插件中管理。": "Este provedor é gerenciado por outro plugin. Use as configurações desse plugin para gerenciá-lo.", "已登录": "Sessão iniciada", "已离线 · 显示的是缓存内容": "Offline — exibindo conteúdo em cache", "已移到第 {n} 顺位": "Movida para a posição {n}", "已签名": "Assinado", "开": "Ligado", "开关和选项即时保存;输入项请点击对应的「保存」按钮。": "Opções e interruptores são salvos imediatamente. Para campos de texto e números, clique no botão Salvar correspondente.", "开始时间:{time}": "Início: {time}", "开始验证": "Iniciar verificação", "当前": "Atual", "当前一个工具都没勾选,助手只能纯聊天。去「设置 → AI 助手 → 工具」里勾上需要的工具。": "Nenhuma ferramenta marcada, então o assistente só pode conversar. Marque as ferramentas necessárias em Configurações → Assistente de IA → Ferramentas.", "当前兼容无运行时 npm 依赖的提供商插件;不加载 Magpie 界面、Matrix 工具或 Pi 扩展。": "No momento, aceita plugins de provedores sem dependências npm de execução. Não carrega páginas do Magpie, ferramentas Matrix ou extensões Pi.", "当前平台": "Plataforma atual", "当前平台暂无包": "Nenhum pacote para esta plataforma", "当前插件未申请原生辅助能力": "Nenhum plugin solicitou auxiliares nativos", "当前暂不可安装": "Instalação indisponível no momento", "当前模型请求免人机验证": "No momento, as solicitações de modelo não exigem verificação humana.", "当前版本 {current},最低可用版本 {minimum}。": "Versão atual: {current}. Versão mínima compatível: {minimum}.", "当前版本 {version}": "Versão atual {version}", "当前网关要求插件版本不低于 v{version},补齐前暂不加载。": "Este gateway exige o plugin v{version} ou posterior. O plugin não será carregado até ser atualizado.", "当前:已关闭(助手不收到任何系统提示词,工具定义照发)": "Atual: desligado (o assistente não recebe prompt de sistema; as definições de ferramentas continuam sendo enviadas)", "当前:已开启 · 使用内置默认提示词(还没自定义)": "Atual: ligado · usando o prompt padrão interno (ainda não personalizado)", "当前:已开启 · 自定义内容 {n} 字": "Atual: ligado · conteúdo personalizado, {n} caracteres", "影响转发": "Afeta o roteamento", "待就绪": "Aguardando ficar pronto", "待确认": "Aguardando confirmação", "总剩余 {total}": "Total restante {total}", "恢复上游原值": "Restaurar valores do upstream", "恢复推荐": "Restaurar recomendado", "恢复默认侧边栏": "Restaurar barra lateral padrão", "成功 / 失败": "Sucesso / falha", "成功领取": "Resgatado", "我会在动手前把改动列给你确认。": "Vou listar as alterações para você confirmar antes de aplicá-las.", "我信任所选辅助程序并允许它执行声明的本机操作": "Confio no auxiliar selecionado e permito suas operações locais declaradas", "我信任此插件来源,并允许它在网关电脑上运行。": "Confio nesta fonte e autorizo o plugin a executar no computador do gateway.", "所有菜单都已在这一组": "Todos os menus já estão neste grupo", "手动凭证 JSON": "JSON de credenciais manual", "手动凭证 JSON(兼容入口)": "JSON de credenciais manual (entrada de compatibilidade)", "执行": "Executar", "执行时刻": "Horários de execução", "把菜单移入 {name}": "Mover um menu para {name}", "把菜单移入「{name}」": "Mover um menu para \"{name}\"", "报表": "Relatórios", "拖动分组 {name}": "Arrastar grupo {name}", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "Arraste o ⠿ para reordenar (menus podem mudar de grupo); use os interruptores para mostrar ou ocultar; clique no nome do grupo para renomear; o + no cabeçalho move outro menu para o grupo; o botão de olho oculta o grupo inteiro. As mudanças valem na hora e ficam salvas — a barra lateral à esquerda é o resultado. Teclado: foque a alça e pressione Alt+↑ / ↓.", "拖动菜单 {name}": "Arrastar menu {name}", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "Arraste para reordenar os grupos (Alt+↑ / ↓ também funciona)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "Arraste para reordenar, inclusive entre grupos (Alt+↑ / ↓ também funciona)", "按 API Key 筛选": "Filtrar por API Key", "按 Token": "Por tokens", "按天请求趋势": "Tendência diária de requisições", "按客户端筛选": "Filtrar por cliente", "按访问网关的 API Key 统计生产请求,不包含助手对话和模型测试。停用、删除 Key 不会删除历史用量;密钥值不会进入报表。历史没有记录身份的请求单列,不能追溯到某把 Key。": "Requisições de produção agrupadas pela API Key do gateway, excluindo conversas do assistente e testes de modelos. Desativar ou excluir uma Key preserva seu uso histórico. O relatório nunca inclui o valor secreto. Requisições sem identidade registrada são listadas à parte e não podem ser atribuídas a uma Key.", "按请求 User-Agent 识别的客户端类型统计,不代表设备或用户数。“其它”表示有 User-Agent 但未匹配已知类型;“未记录客户端”表示旧数据或请求未带 User-Agent。": "Agrupado pelo tipo de cliente identificado pelo User-Agent da requisição, não por dispositivos ou usuários. Outros indica um User-Agent sem correspondência conhecida; Cliente não registrado indica dados antigos ou ausência de User-Agent.", "按请求数": "Por requisições", "按间隔检查插件版本,在对应卡片显示更新;关闭后仍可手动检查。自动更新或自动下载开启时也使用此间隔。": "Verifica versões neste intervalo e mostra atualizações nos cartões. A verificação manual continua disponível quando desativado. Atualizações e downloads automáticos usam o mesmo intervalo.", "按需下载": "Baixar sob demanda", "按需安装插件,为 AI 路由网关扩展提供商能力。插件独立于主程序更新,下载完成后自动校验并安装。": "Instale plugins opcionais para ampliar o gateway de IA. Plugins são atualizados separadamente e verificados e instalados automaticamente após o download.", "换一组筛选条件,或把来源和状态都切回「全部」。": "Tente outros filtros ou volte Origem e Status para Todos.", "授权": "Autorizar", "排序已保存,但列表刷新失败:{message}": "Ordem salva, mas não foi possível atualizar a lista: {message}", "排序未保存:{message}": "Ordem não salva: {message}", "排序设置迁移失败:{message}": "Não foi possível migrar as configurações de ordenação: {message}", "排第 1 的接走所有请求,直到它不能答(限流 / 故障 / 额度尽)才轮到下一位 —— 就是「从上往下」的现状行为。": "A posição 1 atende todas as requisições até não conseguir responder (limite / falha / sem cota) antes de passar para a próxima — o mesmo comportamento de cima para baixo de hoje.", "接入 Agnes AI 国际版:浏览器登录、在线模型目录、套餐用量与美元余额;与 Agnes Code 桌面版独立。": "Conecte o Agnes AI internacional com login pelo navegador, catálogo online de modelos, uso do plano e saldo em dólares. É separado do Agnes Code para desktop.", "接入 Agnes Code:本机登录态或 accessToken、模型目录、积分与登录奖励观测。": "Conecte o Agnes Code: sessão local ou accessToken, catálogo de modelos, pontos e verificação de recompensas de login.", "接入 Codar(科搭):本机凭据、模型目录、积分与滚动窗口签到。": "Conecte o Codar: credenciais locais, catálogo de modelos, pontos e check-in com janela móvel.", "接入 DeepAI Code:网页登录、本机凭据、模型目录、额度查询与签到。": "Conecte o DeepAI Code: login web, credenciais locais, catálogo de modelos, consulta de cota e check-in.", "接入 JoyCode(京东):网页登录、企业租户、模型目录与额度明细。": "Conecte o JoyCode (JD): login web, tenants empresariais, catálogo de modelos e detalhes de cota.", "接入 WPS 灵犀:网页登录、客户端导入、Cookie、模型目录与智点;签到及附带任务默认允许。": "Conecte o WPS Lingxi: login web, importação do cliente, cookies, catálogo de modelos e créditos. Check-in e tarefas adicionais são permitidos por padrão.", "接入中国移动云 MClaw:浏览器登录、在线模型目录、aitokens 额度与凭证续期。": "Conecte o China Mobile Cloud MClaw com login pelo navegador, catálogo online de modelos, cota aitokens e renovação de credenciais.", "接入书生·端砚墨点计划:浏览器登录、API Key、模型目录与墨点额度窗口。": "Conecte o plano de créditos do Intern InkStone com login pelo navegador, API Key, catálogo de modelos e janelas de cota de créditos.", "接口不兼容": "Interface incompatível", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "Define quais menus a barra lateral mostra, em que ordem e como são agrupados. Ocultar afeta apenas a navegação — não revoga acesso, e páginas ocultas continuam abrindo pela URL.", "提供商启停": "Ativar ou desativar provedores", "提供商增强": "Extensão de provedores", "提供商设置": "Configurações de provedores", "提示词": "Prompt", "提示词开关": "Interruptor do prompt", "插件": "Plugins", "插件与当前网关的公共接口不兼容,暂未加载。": "O plugin é incompatível com a interface pública do gateway e não foi carregado.", "插件仓库": "Repositório de plugins", "插件任务": "Tarefas de plugins", "插件包与主程序分开安装、分开升级。卸载插件后账号数据仍然保留,重新装回即可继续使用;仅该包提供的转发与添加账号需要插件,本体订阅不受影响。": "Pacotes de plugin são instalados e atualizados separadamente do aplicativo. Desinstalar preserva os dados das contas; reinstale para continuar. Só o encaminhamento e a adição de contas fornecidos pelo pacote exigem o plugin. Assinaturas nativas não são afetadas.", "插件包与主程序分开安装、分开升级。卸载插件后账号数据仍然保留,重新装回即可继续使用;但转发与添加账号需要插件在位。": "Os pacotes de plugin são instalados e atualizados separadamente do app. Desinstalar mantém os dados das contas - reinstale para continuar. Encaminhamento e adição de contas exigem o pacote presente.", "插件包大小不能超过 {n} MiB": "O tamanho do pacote de plugin não pode exceder {n} MiB.", "插件包已卸载": "Pacote de plugin desinstalado", "插件包已安装": "Pacote de plugin instalado", "插件包已安装到 v{version}": "Plugin instalado: v{version}", "插件包已更新到 v{version}": "Pacote de plugin atualizado para v{version}", "插件包的可执行文件不在磁盘上(可能被手工删除或移动),请重新安装。": "O executável do pacote de plugin não está no disco (pode ter sido excluído ou movido). Reinstale.", "插件参数必须是 JSON 对象": "As opções do plugin devem ser um objeto JSON", "插件发布信息读取失败,请稍后刷新": "Não foi possível obter as informações da versão do plugin. Atualize mais tarde.", "插件只声明了短信登录,但没有下发可用的动态表单;此界面不会猜测短信接口": "O plugin declarou apenas login por SMS, mas não forneceu um formulário dinâmico utilizável. Esta interface não tentará adivinhar endpoints de SMS.", "插件尚未声明有效版本,暂时无法安装": "O plugin não declarou uma versão válida e ainda não pode ser instalado.", "插件尚未提供可下载的发布包": "O plugin ainda não oferece uma versão para download.", "插件已就绪,账号列表将自动同步。": "O plugin está pronto. A lista de contas será atualizada automaticamente.", "插件更新未完成": "A atualização do plugin não foi concluída", "插件未启用或已不再申请此权限;已有授权仍可撤销。": "O plugin está desativado ou não solicita mais esta permissão. Autorizações existentes ainda podem ser revogadas.", "插件未实现 auth.methods(501),且没有可用的旧版登录声明;仅保留需要插件确认的手动凭证 JSON 入口": "O plugin não implementa auth.methods (501) e não tem declarações legadas de login utilizáveis. Só permanece a entrada manual de JSON de credenciais, sujeita à validação pelo plugin.", "插件未实现 auth.methods(501);以下入口仅依据旧版登录声明显示": "O plugin não implementa auth.methods (501). As entradas abaixo são exibidas apenas com base nas declarações legadas de login.", "插件没有声明可用的账号登录方式,请更新插件或联系插件作者": "O plugin não declarou métodos disponíveis de login de conta. Atualize o plugin ou contate seu autor.", "插件清单暂未完整读取": "O catálogo de plugins não foi carregado por completo", "插件版本(留空使用 latest)": "Versão do plugin (em branco para latest)", "插件状态已变更,但账号列表同步失败。请回到账号页点击「刷新」重试。": "O estado dos plugins mudou, mas a lista de contas não pôde ser sincronizada. Volte à página Contas e clique em \"Atualizar\" para tentar novamente.", "插件独立安装与更新。卸载后账号数据仍会保留;脚本插件共用一个按需下载的运行时。": "Plugins são instalados e atualizados separadamente. A desinstalação preserva os dados das contas; plugins de script compartilham um runtime baixado sob demanda.", "插件登录指引": "Instruções de login do plugin", "插件登录方式包含重复的输入字段": "O método de login do plugin contém campos de entrada duplicados.", "插件登录选择字段包含无效或重复的选项": "O campo de seleção de login do plugin contém opções inválidas ou duplicadas.", "插件登录选择字段缺少选项列表": "O campo de seleção de login do plugin não tem uma lista de opções.", "插件目录": "Diretório de plugins", "插件设置": "Configurações de plugins", "插件设置已保存": "Configurações do plugin salvas", "插件返回了无效的登录字段,请更新插件或联系作者": "O plugin retornou um campo de login inválido. Atualize o plugin ou contate o autor.", "插件返回了无效的登录方式,请更新插件或联系作者": "O plugin retornou um método de login inválido. Atualize o plugin ou contate o autor.", "插件选项": "Opções do plugin", "搜索…": "Buscar…", "搜索插件": "Buscar plugins", "撤销授权": "Revogar permissão", "支持自动授权、设备码、手动授权码和插件声明的凭据表单;本机读取作用于网关电脑。": "Oferece autorização automática, códigos de dispositivo, códigos manuais e formulários de credenciais do plugin. Importações locais leem a máquina do gateway.", "改动立即生效;禁用后指向它的请求会落到下一个候选。": "As alterações valem na hora; após desabilitar, as requisições para ele caem no próximo candidato.", "改动类工具": "Ferramentas de alteração", "改成": "Alterar para", "文件缺失": "Arquivos ausentes", "文档": "Documentação", "新": "Novo", "新分组名": "Nome do novo grupo", "新增 {n} 条": "Adicionar {n} itens", "新对话": "Nova conversa", "新建分组": "Novo grupo", "无凭证": "Sem credenciais", "无法解密": "Não é possível descriptografar", "无法读取插件更新进度,请刷新后查看结果。": "Não foi possível ler o progresso da atualização do plugin. Atualize a página para ver o resultado.", "无法读取登录方式": "Não foi possível carregar os métodos de login", "日志": "Logs", "旧版本保存的正文可能已截断,无法恢复缺失内容": "O corpo salvo por uma versão antiga pode estar truncado; o conteúdo ausente não pode ser recuperado", "旧版浏览器登录暂不接收备注名和登录代理,请添加后在账号设置中调整。": "O login legado pelo navegador ainda não aceita rótulo nem proxy de login. Ajuste-os nas configurações da conta após adicioná-la.", "旧版登录方式": "Método de login legado", "映射名": "Nome de mapeamento", "显示 {name}": "Mostrar {name}", "显示分组 {name}": "Mostrar grupo {name}", "显示这一组": "Mostrar este grupo", "智能": "IA", "暂不可安装": "Indisponível", "暂无可安装的插件": "Nenhum plugin disponível para instalar", "暂无可用的原生辅助程序,请先安装并启用所需插件。": "Nenhum auxiliar nativo está disponível. Instale e ative o plugin necessário primeiro.", "暂时无法获取插件状态,显示上次结果;这不代表插件启动失败。": "O estado do plugin está temporariamente indisponível. Exibindo o resultado anterior; isso não significa falha na inicialização.", "暂未发布": "Ainda não publicado", "暂未取得明确的加载结果,不能据此判断启动失败。": "Ainda não há um resultado confirmado. Isso não indica falha na inicialização.", "更多": "Mais", "更新": "Atualizar", "更新到 v{version}": "Atualizar para v{version}", "更新前无法继续调用模型;账号、配置和历史记录不会被删除。": "Não é possível chamar modelos antes de atualizar. Contas, configurações e histórico serão preservados.", "更新或启停会等待共享宿主内的请求结束;账号数据始终由网关统一保存。": "Atualizações e mudanças de ativação aguardam as requisições do processo compartilhado terminarem. Os dados das contas são sempre gerenciados pelo gateway.", "更新/重装": "Atualizar / reinstalar", "最大化": "Maximizar", "最小化": "Minimizar", "最近调用": "Última chamada", "有": "Sim", "有 {count} 个插件可更新": "{count} plugins têm atualizações", "有插件包的协议版本与当前网关不一致({versions}),请下载对应版本的插件包。": "Alguns pacotes de plugin usam uma versão de protocolo incompatível com este gateway ({versions}). Baixe os pacotes correspondentes.", "有新版本,重启后生效": "Nova versão pronta — reinicie para aplicar", "有新版本:v{current} → v{latest}": "Nova versão disponível: v{current} → v{latest}", "有更新": "Atualização disponível", "服务器": "Servidores", "服务器已切换,请重新加载页面": "O servidor mudou. Recarregue a página", "未加载": "Não carregado", "未同步": "Não sincronizado", "未就绪": "Indisponível", "未授权": "Não autorizado", "未登录": "Sem sessão", "未知工具「{name}」:它在设置里可能刚被取消勾选,或这一版助手还不认识它。": "Ferramenta desconhecida \"{name}\": ela pode ter sido desmarcada agora nas configurações, ou esta versão do assistente ainda não a conhece.", "未签名": "Não assinado", "未签名包不会自动覆盖;点击「补齐插件」将安装官方签名包。": "Pacotes sem assinatura não são substituídos automaticamente. Clique em Atualizar plugin necessário para instalar um pacote com assinatura oficial.", "未签名:可以正常使用,但无法证明这个包出自官方;升级时同样只做格式校验": "Sem assinatura: funciona normalmente, mas não há prova de que o pacote venha do publicador oficial; as atualizações também só verificam o formato", "未能保存自动刷新设置": "Não foi possível salvar as configurações de atualização automática", "未能读取自动刷新设置": "Não foi possível carregar as configurações de atualização automática", "未记录": "Não registrado", "未记录客户端": "Cliente não registrado", "未运行": "Parado", "未选择服务器": "Nenhum servidor selecionado", "本地网关监听状态": "Status de escuta do gateway local", "本次初始化超过等待时限,已停止;可查看诊断后重试。": "Esta inicialização excedeu o limite de tempo e foi interrompida. Consulte o diagnóstico antes de tentar novamente.", "本次加载未完成,请查看诊断。": "Este carregamento não foi concluído. Consulte o diagnóstico.", "本次用时 {n} 秒": "Tempo decorrido: {n} s", "权限": "Permissões", "来自 Magpie 社区的插件,共用一个按需下载的运行时": "Plugins da comunidade Magpie compartilham um runtime baixado sob demanda", "来自环境变量": "Do ambiente", "来自环境变量 GITHUB_TOKEN": "Da variável de ambiente GITHUB_TOKEN", "松开刷新": "Solte para atualizar", "查看 GitHub 仓库:{repository}": "Ver repositório no GitHub: {repository}", "查看全部": "Ver tudo", "查看参数": "Ver parâmetros", "查看发布说明": "Ver notas da versão", "查看发布页面": "Abrir página da versão", "查看提供商插件": "Ver plugins de provedores", "查看更新日志": "Ver alterações", "查看结果": "Ver resultado", "查看进度": "Ver progresso", "标题总结设置": "Configurações de geração de títulos", "桌面桥不可用(本页需要在 Agent2API 客户端里打开)": "Ponte do desktop indisponível (esta página precisa ser aberta dentro do cliente Agent2API)", "检查更新失败": "Falha ao verificar atualizações", "检测到更新后自动下载、校验并安装已启用的官方签名插件。": "Baixa, verifica e instala automaticamente atualizações de plugins ativados com assinatura oficial.", "检测到更新后自动下载、校验并安装已启用的官方签名插件。未签名或第三方插件仍需手动更新。": "Baixa, verifica e instala atualizações para plugins oficiais assinados e ativados. Plugins sem assinatura ou de terceiros exigem atualização manual.", "模型分布": "Distribuição por modelo", "模型管理": "Gerenciamento de modelos", "正在下载 Bun 运行时": "Baixando o runtime Bun", "正在下载…": "Baixando…", "正在下载脚本插件": "Baixando plugin de script", "正在初始化插件,尚未收到失败结果。": "Inicializando o plugin. Nenhuma falha foi informada.", "正在加载": "Carregando", "正在加载 · {n} 家提供商的账号暂未显示,就绪后自动恢复。": "Carregando · As contas de {n} provedores estão temporariamente ocultas e voltarão quando estiverem prontas.", "正在加载新插件…": "Carregando o novo plugin…", "正在加载脚本插件": "Carregando plugins de script", "正在启动": "Iniciando", "正在启动插件,账号将在就绪后自动恢复。": "Iniciando o plugin. As contas voltarão automaticamente quando ele estiver pronto.", "正在完成人机验证…": "Concluindo a verificação humana…", "正在恢复原有脚本插件": "Restaurando plugins de script anteriores", "正在恢复旧版本插件…": "Restaurando a versão anterior do plugin…", "正在更新第 {index}/{total} 个…": "Atualizando {index} de {total}…", "正在校验包内容…": "Verificando pacote…", "正在检查…": "Verificando…", "正在检查或准备脚本运行环境。": "Verificando ou preparando o ambiente de execução dos scripts.", "正在自动补齐官方插件,不受日常更新开关和通道限制。": "O plugin oficial está sendo atualizado para a versão necessária, independentemente das configurações e canais de atualização de rotina.", "正在补齐插件…": "Atualizando plugin necessário…", "正在识别二维码…": "Reconhecendo o QR code…", "正在读取、校验并安装插件包…": "Lendo, verificando e instalando plugin…", "正在读取插件信息 {done}/{total}": "Carregando informações dos plugins {done}/{total}", "正在读取插件列表…": "Carregando catálogo de plugins…", "正在读取插件清单…": "Carregando catálogo de plugins…", "正在读取插件登录方式…": "Carregando métodos de login do plugin…", "正在连接…": "Conectando…", "正在重试…": "Tentando novamente…", "正在验证…": "Verificando…", "此 OAuth 方法未声明备注名字段,账号名由插件获取;添加后可在账号设置中修改。": "Este método OAuth não declarou um campo de rótulo. O plugin obtém o nome da conta; você pode alterá-lo nas configurações após adicionar a conta.", "此插件不是提供商插件,当前无法安装": "Este não é um plugin de provedor e não pode ser instalado aqui.", "此方式可能需要手动提交授权回调。完成官方登录后,按共享登录桥的提示粘贴完整回调地址;不要把回调地址当作 API Key 或 Token。": "Este método pode exigir o envio manual do callback de autorização. Após concluir o login oficial, cole a URL completa de callback conforme as instruções da ponte de login compartilhada. Não use a URL de callback como API Key ou Token.", "此旧版登录声明无法安全映射到动态表单,请联系插件作者": "Esta declaração legada de login não pode ser mapeada com segurança para um formulário dinâmico. Contate o autor do plugin.", "此登录方式需要由共享登录桥发起": "Este método de login deve ser iniciado pela ponte de login compartilhada.", "每台服务器的登录状态各自独立保存,切换后不用重新登录。地址改掉后需要重新登录。": "Cada servidor guarda o próprio login, então voltar a ele não exige entrar de novo. Alterar o endereço de um servidor exige entrar de novo.", "每日签到及一次性任务;可能消耗智点、发送对话并创建及解散群聊": "Check-in diário e tarefas únicas; podem consumir créditos, enviar conversas e criar e dissolver grupos de chat", "每轮": "Por turno", "没有可恢复的维度明细": "Nenhum detalhamento recuperável", "没有可更新的版本": "Nenhuma atualização disponível", "没有找到提供商「{provider}」的账号": "Nenhuma conta encontrada para o provedor \"{provider}\"", "没有找到账号「{name}」": "Nenhuma conta encontrada com o nome \"{name}\"", "没有符合筛选条件的插件": "Nenhum plugin corresponde a estes filtros", "没有说明": "Sem descrição", "没有近期套餐池请求,不生成验证码令牌": "Nenhuma solicitação Start Plan recente; nenhum token de verificação é gerado.", "没给账号名": "Nenhum nome de conta informado", "注入系统提示词": "Injetar prompt de sistema", "活动": "Campanha", "浅色": "Claro", "消耗该账号额度": "Consome a cota desta conta", "消耗额度": "Consome cota", "深色": "Escuro", "添加": "Adicionar", "添加失败": "Falha ao adicionar", "添加服务器": "Adicionar servidor", "清单更新于 {time}": "Catálogo atualizado em {time}", "清空 = 回到内置默认(与「恢复默认」等价)。": "Limpar volta ao padrão interno (equivale a \"Restaurar padrões\").", "清除失败:{error}": "Falha ao limpar: {error}", "点「编辑」弹窗改内容;开关关掉就整段不发。": "Clique em \"Editar\" para alterar o conteúdo em uma janela; com o interruptor desligado, nada disso é enviado.", "点击重命名": "Clique para renomear", "熔断": "Disjuntor", "熔断时长(秒)": "Duração do disjuntor (segundos)", "版本 {version} · 从 GitHub 直接下载安装包": "Versão {version} · baixa o pacote direto do GitHub", "版本 {version} · 从网关下载安装包": "Versão {version} · baixa o pacote pelo gateway", "版本 {version} · 更新包需从 Release 页面获取": "Versão {version} · obtenha a atualização na página de Release", "环境变量 Key": "Key de variável de ambiente", "用一句话让我查或改本机的模型转发配置。": "Peça em uma frase para consultar ou alterar a configuração de roteamento de modelos desta máquina.", "用量详情": "Detalhes de uso", "由其他插件接管": "Gerenciado por outro plugin", "电脑端已关闭「软件版本检查」,此处只做手动检查": "A verificação de versão está desligada no desktop; aqui só há checagem manual", "登录、模型调用、模型列表、余额查询和签到等功能,可能因插件实现或上游变化而不可用。": "Login, chamadas de modelo, listas de modelos, consulta de saldo e check-in podem ficar indisponíveis conforme a implementação do plugin ou mudanças no upstream.", "登录指引 / 设备码授权": "Instruções de login / Autorização por código de dispositivo", "登录支持自动完成的 OAuth/设备码和 API Key;要求手动回调的插件暂不支持。": "Aceita login automático por OAuth/código de dispositivo e API Key. Plugins com retorno manual ainda não são compatíveis.", "登录方式说明": "Informações sobre os métodos de login", "登录桥未确认账号添加完成": "A ponte de login não confirmou que a conta foi adicionada.", "登录面板": "Entrar", "监听 127.0.0.1": "Escutando em 127.0.0.1", "直接加载兼容的 Magpie / OpenCode v1 提供商包,多个插件共用一个 Bun 进程。": "Carrega diretamente pacotes de provedores compatíveis com Magpie / OpenCode v1. Vários plugins compartilham um processo Bun.", "直接说要改什么 / 查什么…(Enter 发送,Shift+Enter 换行)": "Diga o que quer alterar ou consultar… (Enter envia, Shift+Enter quebra linha)", "确定删除账号「{name}」?{note}": "Excluir a conta “{name}”?{note}", "确定卸载「{name}」吗?卸载后这个包里的提供商将无法转发,也无法添加账号。账号数据本身不会被删除,重新安装后可以继续使用。": "Desinstalar \"{name}\"? Os provedores deste pacote deixarão de encaminhar e de aceitar novas contas. Os dados das contas são mantidos e voltam a funcionar após reinstalar.", "确定卸载「{name}」吗?对应提供商将停止转发,账号数据仍然保留,重新安装后恢复。": "Desinstalar “{name}”? Seus provedores deixarão de encaminhar requisições. Os dados das contas serão mantidos e voltarão a funcionar após a reinstalação.", "确认后立即生效": "Vale na hora após a confirmação", "确认并安装": "Confirmar e instalar", "确认授权": "Confirmar autorização", "社区": "Comunidade", "社区插件": "Plugin da comunidade", "禁用会把账号移出转发队列;若这条线路没有别的可用账号,请求会直接失败。": "Desabilitar remove a conta da fila de encaminhamento; se esta rota não tiver outra conta utilizável, as requisições falharão direto.", "移入「{name}」": "Mover para \"{name}\"", "稍后": "Depois", "空分组 · 点组头的 + 把菜单移进来": "Grupo vazio · use + no cabeçalho para mover menus", "立即刷新": "Atualizar agora", "立即升级": "Atualizar agora", "第 {current} / {total} 页": "Página {current} de {total}", "第三方": "Terceiros", "等待前面的插件完成,不代表加载失败。": "Aguardando os plugins anteriores terminarem. Isso não é uma falha de carregamento.", "等待加载": "Aguardando carregamento", "等待当前任务结束,插件继续服务…": "Aguardando as tarefas ativas terminarem; o plugin continua atendendo…", "等待窗口": "Aguardando janela", "等待脚本插件的在途请求和登录完成": "Aguardando o fim das requisições e logins dos scripts", "等待账号登录完成…": "Aguardando a conclusão do login da conta…", "等待运行环境恢复": "Aguardando recuperação do ambiente", "等这一轮跑完…": "Aguardando o fim deste turno…", "签到中心": "Central de check-in", "签到及插件附带任务;可能消耗额度,具体行为由插件决定": "Check-in e tarefas adicionais do plugin; podem consumir créditos. As ações são definidas pelo plugin.", "签到及附带任务默认允许,实际执行遵循签到中心的开关和计划。": "Check-ins e as tarefas que os acompanham são permitidos por padrão; a execução real segue os controles e agendamentos do centro de check-in.", "粘贴 GitHub 令牌(ghp_… / github_pat_…)": "Cole um token do GitHub (ghp_… / github_pat_…)", "粘贴插件要求的 JSON 对象,不要包含 provider、name、proxy 或登录流程控制字段": "Cole o objeto JSON exigido pelo plugin, sem campos provider, name, proxy ou de controle do fluxo de login.", "系统提示词 + 工具定义": "Prompt de sistema + definições de ferramentas", "系统提示词已保存": "Prompt de sistema salvo", "系统提示词已关闭": "Prompt de sistema desligado", "系统提示词已开启": "Prompt de sistema ligado", "统计排序": "Ordenação das estatísticas", "继续安装": "Continuar instalando", "缓存读取": "Leituras do cache", "编辑服务器": "Editar servidor", "编辑系统提示词": "Editar prompt de sistema", "网关 Key": "Chave do gateway", "网关没有返回有效的登录方式列表,无法确认该插件的登录能力": "O gateway não retornou uma lista válida de métodos de login, então não é possível confirmar os recursos de login deste plugin.", "网关运行中": "Gateway em execução", "网络代理": "Proxy de rede", "网页提供商": "Provedores web", "网页登录(旧版声明)": "Login web (declaração legada)", "能力位决定下游看到的声明(能不能贴图、能塞多少上下文),不改上游的真实行为。": "Os flags de capacidade definem o que o downstream vê declarado (entrada de imagem, tamanho de contexto) sem alterar o comportamento real do upstream.", "脚本不是安全沙箱,可以访问网关所在电脑的文件和网络。不要安装来历不明的插件。": "Scripts não são isolados em uma sandbox e podem acessar arquivos e a rede do computador do gateway. Não instale plugins de origem desconhecida.", "脚本插件共用运行环境;重试会等待当前任务结束,不会删除账号或重新安装插件。": "Os plugins de script compartilham um ambiente. Uma nova tentativa aguarda as tarefas atuais terminarem, sem excluir contas nem reinstalar plugins.", "脚本签到可能包含额外任务并消耗额度。WPS 灵犀还可能发送对话、创建及解散群聊;授权后会接入现有自动签到计划。": "O check-in do script pode executar tarefas extras e consumir créditos. O WPS Lingxi também pode enviar conversas, criar grupos de chat e dissolvê-los. Após a autorização, ele entra nos agendamentos de check-in automático existentes.", "自动": "Automático", "自动刷新间隔(秒)": "Intervalo de atualização automática (segundos)", "自动安装": "Instalação automática", "自动更新插件": "Atualizar plugins automaticamente", "自动检查插件更新": "Verificar plugins automaticamente", "自动维护": "Manutenção automática", "至少要保留一个分组": "Pelo menos um grupo deve permanecer", "补签": "Reposição", "补齐插件": "Atualizar plugin necessário", "订阅链接必须是 http:// 或 https:// 开头": "O link da assinatura precisa começar com http:// ou https://", "设备授权码:{code}": "Código de autorização do dispositivo: {code}", "设备码授权时,请按网关给出的指引在官方页面确认设备授权码。没有授权地址不等于失败,可能需要在网关本机客户端完成操作;请以共享登录桥返回的状态为准。": "Na autorização por código de dispositivo, siga as instruções do gateway para confirmar o código na página oficial. A ausência de URL de autorização não significa falha; talvez seja necessário concluir a operação em um cliente na máquina do gateway. Considere o status retornado pela ponte de login compartilhada.", "设置": "Configurações", "设置不可隐藏(隐藏了只能清缓存找回来)": "\"Configurações\" não pode ser ocultado (seria preciso limpar o armazenamento para recuperá-lo)", "设置已生效,但写入磁盘失败(重启后会恢复原设置)": "Configurações aplicadas, mas não salvas (revertem após reiniciar)", "设置未同步": "Configurações não sincronizadas", "诊断": "Diagnóstico", "诊断信息": "Diagnóstico", "该提供商已不在运行时目录中,请返回列表重新选择": "Este provedor não está mais no catálogo em tempo de execução. Volte à lista e selecione novamente.", "该登录方式没有可选项,无法提交;请更新插件或联系作者": "Este método de login não tem opções selecionáveis e não pode ser enviado. Atualize o plugin ou contate o autor.", "请允许安装未知来源应用后重试": "Permita instalar apps de fontes desconhecidas e tente novamente", "请先在插件页授权签到及附带任务": "Autorize primeiro o check-in e as tarefas adicionais na página de plugins", "请先粘贴 GitHub 令牌": "Cole um token do GitHub primeiro", "请先选择有效的 OAuth 登录方式": "Selecione primeiro um método válido de login OAuth.", "请在 Release 页面下载后通过 TestFlight 或 App Store 安装": "Baixe na página de Release e instale pelo TestFlight ou pela App Store", "请填一个分组名": "Informe um nome de grupo", "请填写订阅名称": "Digite o nome da assinatura", "请填写非空的凭证 JSON 对象,且不超过 256 KiB": "Preencha um objeto JSON de credenciais não vazio, de no máximo 256 KiB.", "请查看上方原因,稍后刷新重试。": "Veja o motivo acima e atualize novamente mais tarde.", "请根据不兼容原因更新插件或网关;不会要求两者版本号一致。": "Atualize o plugin ou o gateway conforme o erro de compatibilidade. Os números de versão não precisam coincidir.", "请求失败": "Falha na solicitação", "请求失败:{message}": "Falha na requisição: {message}", "请求数": "Requisições", "请求日志": "Logs de requisições", "请确认": "Confirme", "请稍候": "Aguarde", "请输入 {min}–{max} 之间的整数秒数": "Informe um número inteiro de segundos entre {min} e {max}", "请选择 {label} 的有效选项": "Selecione uma opção válida para {label}.", "读取完成的插件会陆续显示,无需停留在此页面等待。": "Os plugins aparecem à medida que suas informações são carregadas. Você pode sair desta página enquanto o carregamento continua.", "读取插件状态失败:{error}": "Falha ao ler o estado dos plugins: {error}", "读取文件失败": "Falha ao ler o arquivo", "读取消耗排序失败:{message}": "Não foi possível carregar a ordem de consumo: {message}", "读取设置失败:{error}": "Falha ao carregar configurações: {error}", "账号 / 登录出网代理": "Proxy de saída da conta / do login", "账号不在当前队列里": "A conta não está na fila atual", "账号列表响应异常": "Resposta inesperada da lista de contas", "账号已删除": "Conta excluída", "账号已在全局队列第一位": "A conta já está em primeiro lugar na fila global", "账号排序接口不可用,请确认网关与界面已更新": "API de ordenação de contas indisponível. Verifique se o gateway e a interface estão atualizados.", "账号登录方式": "Métodos de login de conta", "趋势统计指标": "Métrica da tendência", "趋势统计维度": "Dimensão da tendência", "跟随系统": "Seguir o sistema", "路由策略": "Estratégia de roteamento", "转发能力": "Encaminhamento", "软件版本检查设置不可用": "As configurações de verificação de atualizações do aplicativo não estão disponíveis.", "输入 / 输出": "Entrada / saída", "输入这台网关的管理员账号与密码。": "Informe a conta de administrador e a senha deste gateway.", "运行时不内置于安装包,首次安装脚本插件时自动下载并校验。": "O runtime não vem no instalador. Ele é baixado e verificado automaticamente na primeira instalação de um plugin de script.", "运行正常 · {url}": "Funcionando normalmente · {url}", "运行状态": "Status", "还没有安装任何提供商插件包": "Nenhum pacote de plugin de provedor instalado ainda", "还没有签到记录": "Ainda não há registros de check-in", "还没有选择对话模型:先在下方选一个(或去「设置 → AI 助手」里选)。": "Nenhum modelo de chat selecionado ainda: escolha um abaixo (ou em Configurações → Assistente de IA).", "这一版没有提供 Android 安装包:{reason}": "Esta versão não inclui pacote para Android: {reason}", "这一项已隐藏": "Este item está oculto", "这一项正在显示": "Este item está visível", "这个包提供的提供商(可单独停用某一家)": "Provedores deste pacote (cada um pode ser desativado individualmente)", "这个面板没有管理员,用一把已启用的 API Key 访问(在桌面端「网关 Key」页创建)。": "Este painel não tem administrador. Acesse com uma API key ativa (crie uma em Chaves do gateway no desktop).", "这会真实发起上游请求并消耗额度": "Isso envia uma requisição real ao upstream e consome cota", "这台网关没有管理员,用一把已启用的 API Key 访问(在桌面端「网关 Key」页创建)。": "Este gateway não tem administrador. Use uma API key ativa (crie uma na página \"Chave do gateway\" do app desktop).", "这台网关还没有管理员。设置一个账号密码,之后用它登录。": "Este gateway ainda não tem administrador. Defina uma conta e senha e use-as para entrar.", "这是旧插件的手动兼容入口,不代表支持任意凭证或登录方式。请仅粘贴该插件明确接受的凭证 JSON;网关会交给 account.normalize 校验,不会自动推断 Token、Cookie 或 OAuth。": "Esta é uma entrada manual de compatibilidade para plugins legados, não suporte a credenciais ou métodos de login arbitrários. Cole apenas o JSON de credenciais explicitamente aceito pelo plugin. O gateway o envia a account.normalize para validação e não deduz automaticamente Token, Cookie ou OAuth.", "这是真实的上游请求,与生产走同一条链路(会记账,报表排除)。": "Esta é uma requisição real ao upstream, pelo mesmo caminho da produção (entra na cobrança, mas fica fora dos relatórios).", "这段文本作为 system 消息排在对话最前面。工具的定义与当前配置概览由网关自动附加,不用写在这里。": "Este texto entra no início da conversa como mensagem system. As definições de ferramentas e o resumo da configuração atual são anexados automaticamente pelo gateway, então não os escreva aqui.", "连不上插件仓库,请检查网络或代理后重试": "Não foi possível acessar o repositório de plugins. Verifique sua rede ou proxy e tente novamente.", "连接已有 SAP AI Core 部署:从网关本机导入凭据文件,按资源组获取模型;不创建部署或查询额度。": "Conecte implantações existentes do SAP AI Core importando um arquivo de credenciais da máquina do gateway e listando modelos por grupo de recursos. Não cria implantações nem consulta cotas.", "连接并保存": "Conectar e salvar", "连续崩溃": "Falhas consecutivas", "连通 · {ms}ms": "Conectado · {ms}ms", "选择模型…": "Escolher modelo…", "通过 API Key 接入 River 对话与在线模型目录;插件不提供余额数值。": "Conecte o chat e o catálogo online do River por API Key. O plugin não informa um valor de saldo.", "通过 Magpie 原插件接入设备码登录、对话、模型目录、余额和每日签到。": "Usa o plugin original do Magpie para login por código de dispositivo, conversa, catálogo de modelos, saldo e check-in diário.", "通过社区插件接入 {providers},可在设置中管理提供商,签到计划在签到中心管理。": "Conecta {providers} por um plugin da comunidade. Gerencie provedores nas configurações e agendamentos na Central de check-in.", "部分信息未能更新,已读取的插件仍可查看。": "Algumas informações não puderam ser atualizadas. Os plugins já carregados continuam disponíveis para consulta.", "部分插件的附带任务可能消耗额度、发送对话或创建及解散群聊。": "As tarefas adicionais de alguns plugins podem consumir cota, enviar mensagens ou criar e encerrar conversas em grupo.", "都不注入": "Nada é injetado", "都不注入(助手退化为纯聊天)": "Nada é injetado (o assistente vira um chat comum)", "重启更新": "Reiniciar e atualizar", "重新读取登录方式": "Recarregar métodos de login", "队列是一次性整表提交(后端按新顺序重编优先级),移动会连带调整其它组的相对次序。": "A fila é enviada como uma tabela inteira de uma vez (o backend renumera as prioridades na nova ordem), então mover um item também desloca a ordem relativa dos outros grupos.", "队列是一次性整表提交;位置越靠前,路由时越先被选中。": "A fila é enviada como uma tabela inteira de uma vez; quanto mais à frente a posição, antes ela é escolhida no roteamento.", "限流垫底": "Rebaixamento por limite", "隐藏 {name}": "Ocultar {name}", "隐藏分组 {name}": "Ocultar grupo {name}", "隐藏这一组": "Ocultar este grupo", "需要强制更新": "Atualização obrigatória", "需要网关 API Key": "É preciso uma API key do gateway", "需要网关本机环境": "Requer o ambiente local da máquina do gateway", "需要补齐插件": "Atualização do plugin necessária", "顺序优先": "Ordem estrita", "首页": "Início", "高危": "Alto risco", "高级参数(JSON)": "Opções avançadas (JSON)", "默认分支": "Branch padrão", "默认跟随软件的正式版和 beta 关注选择;单独设置只影响日常更新,最低版本补齐按当前软件版本选择配套包。": "Os canais seguem o app por padrão. Canais personalizados afetam apenas atualizações de rotina; atualizações necessárias selecionam um pacote para a versão atual do app.", "默认跟随软件的自动检查和间隔。关闭自动检查后暂停插件自动更新;手动检查、安装和更新不受影响。": "As verificações automáticas e o intervalo seguem o app por padrão. Desativar as verificações automáticas pausa as atualizações automáticas de plugins; verificações, instalações e atualizações manuais continuam disponíveis.", "({n} 个整组隐藏)": " ({n} grupos ocultos)", "(不会影响客户端登录态)": " (não afeta a sessão de login do cliente)", "(仅显示前 20 条,共 {n} 条)": "(mostrando apenas os primeiros 20 de {n})", "(可选)": " (opcional)", "(未指定)": "(não especificado)", "(请下载与该平台对应的插件包)": "(baixe o pacote desta plataforma)", "(默认问候)": "(saudação padrão)", "Agent2API · 登录": "Agent2API · Entrar", "OpenAI 兼容网关 · 管理面板": "Gateway compatível com OpenAI · Painel de administração", "Turnstile 加载或验证失败,请检查网络、浏览器拦截和域名配置后重试。": "Falha ao carregar ou verificar com o Turnstile. Confira a conexão, os bloqueios do navegador e a configuração dos hostnames e tente novamente.", "Turnstile 验证超时,请重试。": "A verificação do Turnstile expirou. Tente novamente.", "创建账号并进入面板": "Criar conta e entrar no painel", "密码": "Senha", "当前浏览器不支持 Turnstile,请更新浏览器后重试。": "Este navegador não oferece suporte ao Turnstile. Atualize-o e tente novamente.", "我不是机器人": "Não sou um robô", "无法读取登录验证设置,请刷新页面重试": "Não foi possível ler as configurações de verificação de login. Atualize a página e tente novamente.", "无法连接网关": "Não foi possível conectar ao gateway", "无法连接网关,请确认服务已启动": "Não foi possível conectar ao gateway, verifique se o serviço está em execução", "机器人校验配置已变更或不完整,请刷新页面或联系管理员。": "As configurações de verificação de bots foram alteradas ou estão incompletas. Atualize a página ou contate o administrador.", "登录": "Entrar", "登录后可在「网关 Key」页为 API 客户端创建密钥": "Após entrar, você pode criar chaves na página “Chave do gateway” para clientes de API", "管理员账号": "Conta de administrador", "继续": "Continuar", "至少 8 位": "Mínimo de 8 caracteres", "设置密码(至少 8 位)": "Defina uma senha (mínimo de 8 caracteres)", "请先勾选「我不是机器人」完成验证": "Marque “Não sou um robô” primeiro para concluir a verificação", "请填写账号与密码": "Preencha a conta e a senha", "请完成人机验证后重试": "Conclua a verificação humana e tente novamente", "请求失败,请重试": "Falha na requisição, tente novamente", "请输入管理员账号与密码": "Preencha a conta de administrador e a senha", "重新验证": "Verificar novamente", "首次使用:创建一个管理员账号,用于登录此面板": "Primeiro uso: crie uma conta de administrador para entrar neste painel", "验证中…": "Verificando…", "验证失败,请重试": "Falha na verificação, tente novamente", "验证成功": "Verificado", " · 今日 {used} / {quota}": " · Hoje {used} / {quota}", " · 当前 {n}": " · Atual {n}", " · 本周期 {used} / {quota}": " · Este período {used} / {quota}", " · 限流 {n}": " · {n} com limite", " 等": " etc.", "0 = 不限": "0 = sem limite", "0 = 按本家默认 {default}": "0 = padrão do provedor {default}", "30 秒 ~ 24 小时;手动查询会顺延下一轮": "30 segundos ~ 24 horas; consultas manuais entram na próxima rodada", "7 天内到期": "Expira em até 7 dias", "7 天内到期 {amount}({count} 份)": "Expira em até 7 dias: {amount} ({count} pacotes)", "7天 {count}份": "{count} pac. em 7d", "7天 {n}": "{n} em 7d", "API Key": "API Key", "Accio 国内版": "Accio edição da China", "Base URL": "Base URL", "Clash Verge 里还没有配置混合监听器或节点端口": "Ainda não há listener misto ou porta de nó configurados no Clash Verge", "Clash 出口:": "Saída do Clash: ", "Copilot 额度单位": "Unidades de cota Copilot", "NewAPI 个人访问令牌": "Token de acesso pessoal do NewAPI", "NewAPI 用户 ID": "ID de usuário do NewAPI", "OpenAI 兼容": "Compatível com OpenAI", "OpenAI 兼容填到 /v1;Anthropic 填根地址": "Compatível com OpenAI: preencha até /v1; Anthropic: preencha o endereço raiz", "Qoder 中国版": "Qoder edição da China", "Qoder 国际版": "Qoder edição internacional", "Token 刷新接口不可用,请重新打开页面": "O serviço de renovação de Token não está disponível. Reabra a página.", "Token 刷新结果未确认,请刷新后核对账号状态": "Não foi possível confirmar a renovação do Token. Recarregue a lista e confira o estado da conta.", "Token 单位": "Unidade do Token", "Token 时": "tokens", "Token 消耗": "Consumo de tokens", "Token 规则按每个账号已有的窗口消耗判定,保存不会清零;停用或清空规则不会自动启用账号。": "As regras de tokens usam o consumo existente de cada conta na janela; salvar não zera o consumo. Desativar ou limpar regras não ativa contas.", "Token 限制阈值必须是大于 0 的安全整数": "O limite de tokens deve ser um inteiro positivo seguro", "Token 限额": "Limite de tokens", "Token 限额 · 已禁用": "Limite de tokens · Desativada", "Token 限额 · 已跳过": "Limite de tokens · Ignorada", "WorkBuddy 国内版": "WorkBuddy edição da China", "WorkBuddy 国际版": "WorkBuddy edição internacional", "ZCode 国内版": "ZCode edição da China", "ZCode 国际版": "ZCode edição internacional", "ZCode 套餐明细 — {name}": "Planos do ZCode — {name}", "bigmodel_token_production 的值": "Valor de bigmodel_token_production", "{action}{who}": "{action} {who}", "{amount},另 {count} 份余量未知": "{amount}, mais {count} pacotes com saldo desconhecido", "{body}({period})": "{body} ({period})", "{cond} 时 → {action}": "Quando {cond} → {action}", "{count} 份": "{count} pacotes", "{count} 份仅提供比例": "{count} pacotes com apenas leituras percentuais", "{count} 份单位未知": "{count} pacotes com unidade desconhecida", "{count} 次": "{count} chamadas", "{days} 天后到期": "Expira em {days} dias", "{error}(不会自动改为直连)": "{error} (sem mudar automaticamente para conexão direta)", "{error}(转发时会回退直连)": "{error} (o encaminhamento volta para conexão direta)", "{groups} 家 · 显示 {rows} 行": "{groups} provedores · mostrando {rows} linhas", "{hours} 小时后到期": "Expira em {hours} h", "{label} ×{count}": "{label} ×{count}", "{label}({count})": "{label} ({count})", "{message}(去该账号的「设置」里填上查询凭证即可)": "{message} (basta preencher a credencial de consulta nas 「Configurações」 desta conta)", "{minutes} 分钟后到期": "Expira em {minutes} min", "{month}月{day}日 {clock}": "{day}/{month} {clock}", "{name} · 分组设置": "{name} · Configurações do grupo", "{name} 移到 {group} 组内第 {rank} 位": "{name} movida para a posição {rank} dentro do grupo {group}", "{name} 移到第 {rank} 顺位": "{name} movida para a posição global {rank}", "{name}的方向": "Direção de {name}", "{name}({parts})": "{name} ({parts})", "{name}({time} 起生效)": "{name} (entra em vigor em {time})", "{n} 个已计入": "{n} contabilizados", "{n} 个查询失败": "{n} falharam na consulta", "{n} 个模型 ▾": "{n} modelos ▾", "{n} 个模型限流中 · 记录来自上游 429 / 限额码,到恢复时间自动解除": "{n} modelos com rate limit · registro vindo do 429 / código de limite do upstream; liberação automática no horário de recuperação", "{n} 个请求正在使用该账号(含还在下发内容的流式请求)": "{n} requisições usando esta conta (incluindo requisições de streaming que ainda enviam conteúdo)", "{n} 个读数只读到一半(读数可信但不完整)": "{n} lidos apenas em parte (valor confiável, mas incompleto)", "{n} 个读数没有绝对数(只给比例或无额度),未计入": "{n} sem valor absoluto (apenas percentual ou sem cota), não contabilizados", "{n} 个读数里没有可用比例,未计入": "{n} leituras não tinham porcentagem utilizável e não foram contadas", "{n} 个账号 · {e} 启用 · {l} 限流": "{n} contas · {e} ativas · {l} limitadas", "{n} 个账号 · 启用 {e}": "{n} contas · {e} ativas", "{n} 个还没查到(未查询或正在查询)": "{n} ainda não lidos (não consultados ou em andamento)", "{n} 个还没查询": "{n} ainda não consultados", "{n} 分钟": "{n} minutos", "{n} 分钟前更新": "Atualizado há {n} minutos", "{n} 分钟后": "daqui a {n} minutos", "{n} 天前更新": "Atualizado há {n} dias", "{n} 天后": "daqui a {n} dias", "{n} 小时": "{n} horas", "{n} 小时前更新": "Atualizado há {n} horas", "{n} 小时后": "daqui a {n} horas", "{n} 秒": "{n} segundos", "{n} 秒前更新": "Atualizado há {n} segundos", "{period}窗口": "Janela de {period}", "{plan}({time} 领取)": "{plan} (resgatado em {time})", "{providers} 家提供商、共 {total} 个账号。数据仍在,只是当前没有可用的插件来执行它们。": "{providers} provedores, {total} contas. Os dados continuam aqui — só não há um plugin funcional para executá-las agora.", "{reason}。该账号的登录态已被上游注销,自动刷新不会再成功,请重新登录该账号": "{reason}. O upstream revogou a sessão desta conta; a atualização automática nunca mais vai funcionar — entre novamente nesta conta.", "{scope} {used} / {quota} Token,{countdown}重置": "{scope}: {used} / {quota} Token, {countdown} até a redefinição", "{text}过期": "Expira {text}", "{text}过期({full})": "Expira {text} ({full})", "{time} 到期": "expira em {time}", "{time} 恢复": "Recuperação às {time}", "{time} 生效": "começa em {time}", "{time} 领取": "recebido em {time}", "{total} 个账号 · 启用 {enabled} · 禁用 {disabled}{limited}": "{total} contas · {enabled} habilitadas · {disabled} desabilitadas{limited}", "{tried}探测并领取官方每日登录赠送的套餐积分(到账进套餐积分,不增加福利模型 token 池)": "{tried}Detectar e resgatar os pontos de plano do login diário oficial (entram nos pontos de plano; não aumentam o pool de tokens dos modelos de benefício)", "{unit}余量未知({count} 份)": "Saldo em {unit} desconhecido ({count} pacotes)", "{verb}完成:成功 {ok} 个,失败 {fail} 个({detail}{more})": "Ação {verb}: concluída — {ok} com sucesso, {fail} com falha ({detail}{more})", "{verb}完成:成功 {ok} 个,未变更 {unchanged} 个,跳过 {skip} 个,失败 {fail} 个": "{verb} concluído: {ok} alteradas, {unchanged} sem alteração, {skip} ignoradas, {fail} com falha", "✅ {ok}/{total} 个出口可用": "✅ {ok}/{total} saídas disponíveis", "✅ {verb}完成:共 {count} 个账号": "✅ Ação {verb}: concluída — {count} contas no total", "✅ 优先级已改为 {n}": "✅ Prioridade alterada para {n}", "✅ 出口可用": "✅ Saída disponível", "✅ 已保存:{note}": "✅ Salvo: {note}", "✅ 已启用": "✅ Ativada", "✅ 已启用 {n} 个账号": "✅ {n} contas habilitadas", "✅ 已导出 {count} 个账号文件": "✅ {count} arquivos de contas exportados", "✅ 已更新 {n} 个账号的余额{suffix}": "✅ Saldo de {n} contas atualizado{suffix}", "✅ 已更新余额": "✅ Saldo atualizado", "✅ 已清除 API Key(该账号现在没有凭证,转发会被跳过)": "✅ API Key removida (a conta agora está sem credencial e será ignorada no encaminhamento)", "✅ 已清除 {model} 的限流标记": "✅ Marca de rate limit do {model} removida", "✅ 已清除余额查询凭证": "✅ Credencial de consulta de saldo removida", "✅ 已清除查询凭证": "✅ Credenciais de consulta limpas", "✅ 已清除该账号全部限流标记": "✅ Todas as marcas de rate limit desta conta foram removidas", "✅ 已禁用": "✅ Desativada", "✅ 已禁用 {n} 个账号": "✅ {n} contas desabilitadas", "✅ 已重新读取 Clash Verge 配置": "✅ Configuração do Clash Verge relida", "✅ 账号设置已保存": "✅ Configurações da conta salvas", "✅ 顺序已保存": "✅ Ordem salva", " 出口 IP {ip}": " IP de saída {ip}", "、": ", ", "、补官方会话头、请求体补两个占位工具(上游免费档的三道校验)。": ", adiciona os cabeçalhos de sessão oficiais e inclui dois tools de preenchimento no corpo da requisição (as três validações do plano gratuito do upstream).", "「{name}」已在「网络代理」页禁用,请先启用它或换一条": "\"{name}\" está desativado na página \"Proxy de rede\". Ative-o primeiro ou escolha outro.", "「{name}」开着排序规则:先关掉规则,才能手动调整组内顺序": "“{name}” está com regras de ordenação ativas: desligue-as antes de ajustar a ordem dentro do grupo", "「{name}」本身": "o próprio 「{name}」", "「已保存的代理」": "「Proxies salvos」", "「网络代理」页还没有出口 —— 去那里新增,或在「订阅管理」里点「同步 Clash Verge」把 Clash 的出口导进来": "A página 「Proxy de rede」 ainda não tem saídas — crie uma por lá ou clique em 「Sincronizar Clash Verge」 em 「Gerenciar assinaturas」 para importar as saídas do Clash", "「网络代理」页还没有出口 —— 去那里添加一个 HTTP 或 SOCKS5 地址": "Ainda não há proxies. Adicione um endereço HTTP ou SOCKS5 na página Proxy de rede.", "「网络代理」页还没有出口 —— 去那里添加手动地址或同步 Clash Verge 的端点": "Ainda não há proxies salvos. Adicione um endereço manual ou sincronize endpoints do Clash Verge na página Proxy de rede.", "「网络代理」页里每个启用的出口轮流使用;之后新加的出口自动加入": "Cada saída habilitada na página Proxy de rede é usada por vez; saídas adicionadas depois entram automaticamente", "一般不用填": "Normalmente não é preciso preencher", "万": "10 mil", "上一条规则相同时才比较下一条;想优先按余额消耗,请把可用余额移到第一位。": "Cada regra só é usada quando as anteriores empatam. Mova Saldo disponível para o topo para priorizar o consumo por saldo.", "上次成功查询:{time}": "Última consulta bem-sucedida: {time}", "上游拒绝了本次余额查询": "O upstream recusou esta consulta de saldo", "上游提供了补充说明;未显示原始正文": "O upstream forneceu notas adicionais; o corpo original não é exibido", "上游暂时限制余额查询,请稍后重试": "O upstream está limitando consultas de saldo temporariamente. Tente mais tarde.", "上游未给总量,画不出剩余比例": "O upstream não informou o total; não é possível calcular a proporção restante", "上游未返回可识别额度窗口": "O upstream não retornou janelas de cota reconhecíveis", "上游本来不要凭证时(本地 Ollama、OpenCode Zen 的免费档)勾上这一项:账号会被正常选路;只把 Key 留空": "Quando o upstream não exigir credencial (Ollama local, plano gratuito do OpenCode Zen), marque esta opção: a conta será selecionada normalmente; deixe apenas a Key em branco", "上游没有提供此额度的分桶用量,当前使用本地估算保护;在其他客户端产生的消耗不会计入。": "O provedor não informa o consumo desta cota, então a proteção usa uma estimativa local. O consumo em outros clientes não é contabilizado.", "上游的 API Key。留空 = 不修改(改凭证不会换账号 id);要清掉已配的凭证用右边的「清除」": "API Key do upstream. Em branco = não alterar (mudar a credencial não troca o id da conta); para remover a credencial configurada, use 「Limpar」 à direita", "上游的余额读数里没有这个套餐的额度桶,剩余量读不到;余额列显示的是套餐发放的权益额度,不是剩余量": "A leitura de saldo do upstream não tem um balde de cota para este plano, então o restante não está disponível; a coluna de saldo mostra a concessão do plano, não o restante", "上游返回 {status}": "O upstream retornou {status}", "上游限制 · 已禁用": "Restrição do provedor · Desativada", "上游额度无上限": "A cota do provedor é ilimitada", "上面所有规则都相同时,保持你拖出来的顺序": "Quando todas as regras acima empatarem, mantenha a ordem que você arrastou", "不到 1 分钟": "menos de 1 minuto", "不到 1 分钟到期": "Expira em menos de 1 min", "不可用:{error}": "Indisponível: {error}", "不足 {n}": "Menos de {n}", "不限": "Sem limite", "与队列里的上一个账号交换优先级(可能是另一家的账号)": "Troca a prioridade com a conta anterior da fila (pode ser uma conta de outro provedor)", "与队列里的下一个账号交换优先级(可能是另一家的账号)": "Troca a prioridade com a próxima conta da fila (pode ser uma conta de outro provedor)", "严格按消耗顺序使用账号需选择「顺序优先」;轮询、会话粘性及账号保护仍按原设置生效。": "Selecione Ordem de prioridade para usar as contas estritamente na ordem de consumo. Rotação, afinidade de sessão e proteção das contas mantêm suas configurações.", "个": "unid.", "个 · 共": "de", "个人": "Pessoal", "主凭证没有固定到期时刻,到期由网关自动续期或本来就不会过期": "A credencial principal não tem prazo fixo — o gateway a renova automaticamente, ou ela simplesmente não expira", "主机": "Host", "亿": "100 mi", "仅将优先级调整到全局第一位,不改变启用状态": "Apenas move a prioridade para o primeiro lugar global, sem alterar o estado de ativação", "仅按手动顺序": "Somente ordem manual", "仅统一修改现有规则的开关,保留阈值、动作和重置方式;不改变账号的启用状态。": "Altera apenas os interruptores das regras existentes; mantém limites, ações, modos de redefinição e o estado das contas.", "仅账号管理": "Somente gestão de contas", "仅跳过命中条件的模型,其他模型仍可转发;点击查看限制器": "Apenas os modelos que atingiram as condições são ignorados; os demais ainda encaminham requisições. Clique para ver o limitador.", "今天 {clock}": "Hoje {clock}", "今天 {time}": "hoje às {time}", "今天到期 {amount}({count} 份)": "Expira hoje: {amount} ({count} pacotes)", "今天还没有领过:上面「可领取的套餐」里逐份点「领取」即可": "Nada resgatado hoje ainda: basta clicar em \"Resgatar\" em cada plano de \"Planos resgatáveis\" acima.", "今天(北京时间 {day})已由官方确认到账 {n} 项;领到的是套餐赠送积分,不增加福利模型的 token 池;按自然日重置,明天可再领": "Hoje (horário de Pequim, {day}), o serviço oficial confirmou o recebimento de {n} itens; o que foi recebido são pontos de plano e não aumentam o pool de tokens dos modelos de benefício; a redefinição é por dia natural e amanhã é possível resgatar novamente", "今天(北京时间 {day})已试过 {n} 次但官方尚未确认到账,": "Hoje (horário de Pequim, {day}) já foram feitas {n} tentativas, mas o serviço oficial ainda não confirmou o recebimento. ", "今天(北京时间)已领取 {n} 份:{plans}": "Resgatado hoje (horário de Pequim): {n} — {plans}", "今天(本地 0 点重置)": "Hoje (redefinido às 0h local)", "今日剩 {n} 分钟": "hoje restam {n} minutos", "今日剩 {n} 小时": "hoje restam {n} horas", "今日发放": "Concedido hoje", "今日已用": "Uso de hoje", "今日已领": "resgatado hoje", "代理": "Proxy", "代理不可用:{error}": "Proxy indisponível: {error}", "代理不可用:{error}(不会自动改为直连);选「自定义代理…」去修改": "Proxy indisponível: {error} (sem conexão direta automática); selecione \"Proxy personalizado…\" para corrigir", "代理不可用:{error}(转发时会回退直连);选「自定义代理…」去修改": "Proxy indisponível: {error} (o encaminhamento volta para conexão direta); selecione 「Proxy personalizado…」 para modificar", "代理列表响应异常({type})": "Resposta inesperada da lista de proxies ({type})", "代理列表读取失败(重试中)": "Falha ao ler a lista de proxies (nova tentativa em andamento)", "代理已更新": "Proxy atualizado", "代理异常": "Falha no proxy", "代理方式": "Modo de proxy", "代理池响应异常({type})": "Resposta inesperada do pool de proxies ({type})", "代理端口必须是 1-65535 的整数": "A porta do proxy deve ser um número inteiro de 1 a 65535", "以下 {count} 个账号不支持余额查询,本次会跳过:{names}": "Estas {count} contas não oferecem consulta de saldo e serão ignoradas: {names}", "企业": "Corporativo", "优先级": "Prioridade", "优先级 {priority} 已被同一提供商的「{name}」占用,请换一个数值": "A prioridade {priority} já está em uso pela conta 「{name}」 do mesmo provedor; escolha outro valor", "优先级必须是数字": "A prioridade deve ser um número", "优先级未保存:{message}": "Prioridade não salva: {message}", "会员共享额度": "Cota compartilhada da assinatura", "会员共享额度不是本账号独立额度,不与其他窗口相加;未证实团队独立额度": "A cota compartilhada da assinatura não é exclusiva desta conta nem somada a outras janelas. Cota separada de equipe não foi confirmada.", "会被当成「未配置凭证」而跳过。": " será tratada como 「sem credencial」 e ignorada.", "伪装 OpenCode 官方客户端": "Simular cliente oficial do OpenCode", "伪装 OpenCode 官方客户端(OpenCode Zen 免费档要它才放行)": "Simular o cliente oficial do OpenCode (exigido para o plano gratuito do OpenCode Zen liberar o acesso)", "余量 {value}": "Restante {value}", "余额": "Saldo", "余额 < {threshold}": "Saldo < {threshold}", "余额不足": "Saldo insuficiente", "余额不足 · 已跳过": "Saldo insuficiente · Ignorada", "余额低于": "Saldo abaixo de", "余额低于阈值时的提示": "Avisar quando o saldo cair abaixo do limite", "余额低于阈值,转发时会跳过该账号(余额回升自动恢复)": "Saldo abaixo do limite; a conta será ignorada no encaminhamento (recuperada automaticamente quando o saldo subir)", "余额低于限制器的阈值,转发时会跳过该账号(余额回升自动恢复)": "Saldo abaixo do limite do Limitador; a conta será ignorada no encaminhamento (recuperada automaticamente quando o saldo subir)", "余额列读数的自动刷新;也是「限制器」余额规则的数据来源。": "Atualização automática da leitura da coluna de saldo; também é a fonte de dados das regras de saldo do 「Limitador」.", "余额响应为空": "Resposta de saldo vazia", "余额大优先": "Maior saldo primeiro", "余额小优先": "Menor saldo primeiro", "余额已更新": "Saldo atualizado", "余额查询凭证": "Credencial de consulta de saldo", "余额查询凭证已失效,请刷新查询登录态": "A credencial de consulta de saldo expirou. Atualize a sessão de login da consulta.", "余额查询失败:{message}": "Falha na consulta de saldo: {message}", "余额查询接口不可用,请更新网关后重试": "A consulta de saldo está indisponível. Atualize o gateway e tente novamente.", "余额查询接口返回异常": "A consulta de saldo retornou uma resposta inválida.", "余额查询方案:{label}": "Esquema de consulta de saldo: {label}", "余额沿用现有口径;Token 按重置方式内的累计消耗判定(切换类型会清空阈值)": "O saldo segue o critério atual; o Token é avaliado pelo consumo acumulado dentro do modo de redefinição (trocar o tipo limpa o limite)", "余额详情": "Detalhes do saldo", "使用套餐": "Usar plano", "使用最近一次成功查询的总余额,随余额刷新调整;查询失败保留上次读数,不额外增加查询频率。": "Usa o saldo total da última consulta bem-sucedida e ajusta a ordem quando os saldos são atualizados. Falhas preservam a leitura anterior, sem aumentar a frequência de consulta.", "保存失败:{error}": "Falha ao salvar: {error}", "保存条件": "Salvar condição", "保存规则": "Salvar regra", "保留 {n} 个账号": "Mantém {n} contas", "保留各账号原有规则,只追加下面的规则;完全相同的规则不会重复添加。": "Mantém as regras existentes de cada conta e adiciona as regras abaixo; regras idênticas não são duplicadas.", "修改代理": "Alterar proxy", "停止旧查询,按当前配置重新查询余额": "Parar a consulta anterior e consultar o saldo com as configurações atuais", "停用全部规则": "Desativar todas as regras", "免费版": "Plano gratuito", "全局一条队列:数值越小越先用,不分提供商": "Uma única fila global: quanto menor o valor, antes é usada, sem distinção de provedor", "全局唯一:所有提供商的账号都不能重号,数值越小越先用": "Único global: o número não pode se repetir entre contas de qualquer provedor; quanto menor, antes é usada", "全局队列": "Fila global", "全局队列第 {position} 位,共 {total} 位": "{position}º na fila global, de {total} posições", "全选 / 取消全选当前筛选结果(与批量栏同一个选择)": "Selecionar / desmarcar todos os resultados do filtro atual (a mesma seleção da barra de lote)", "全选当前筛选结果({n} 个)": "Selecionar todos os resultados do filtro atual ({n})", "全部代理节点(推荐)": "Todos os nós de proxy (recomendado)", "全部启用中的账号将被{what}": "{what} todas as contas ativadas", "全部启用({n})": "Habilitar todas ({n})", "全部清除": "Limpar tudo", "全部禁用({n})": "Desabilitar todas ({n})", "全部({n})": "Todas ({n})", "共有 {n} 个账号暂未显示": "{n} contas não estão sendo exibidas", "关闭则不参与转发(余额查询照常,见「查询设置」)": "Desligado, a conta não participa do encaminhamento (a consulta de saldo continua; veja 「Configurações de consulta」)", "关闭后,该账号转发失败时返回本次错误,不再顺延其他账号。禁用、无凭证和限制器等保护仍生效。": "Quando desativado, uma falha de encaminhamento nesta conta retorna o erro sem trocar para outra conta. As proteções para contas desativadas, credenciais ausentes e limitadores continuam ativas.", "关闭自动查询后,余额限制器只能使用上次读数;手动查询仍可用。": "Com a consulta automática desligada, os limites de saldo usam a última leitura; a consulta manual continua disponível.", "内消耗 ≥": "com consumo ≥", "再领一次": "Resgatar de novo", "冻结余额": "Saldo congelado", "凭证与套餐": "Credenciais e plano", "凭证已过期,转发时会先刷新": "Credencial expirada; será renovada antes do encaminhamento", "凭证已过期;能否续期取决于登录方式,本机引用需由原客户端处理": "Credencial expirada; a renovação depende do método de login. Referências locais devem ser gerenciadas pelo cliente original", "出口": "Saída", "出网代理": "Proxy de saída", "分窗口额度": "Cota por janela", "分组设置": "Configurações do grupo", "分钟": "minutos", "刚刚更新": "Atualizado agora", "删除各账号的全部限制规则,执行前会再次确认。": "Remove todas as regras de limite de cada conta; pede confirmação antes de executar.", "删除提供商": "Excluir provedor", "删除组": "Excluir grupo", "删除账号": "Excluir conta", "删除这条账号记录(不会影响客户端自己的登录态;之后可再点「导入桌面端登录态」加回来)": "Exclui este registro de conta (não afeta o estado de login do próprio cliente; depois é possível adicioná-la de volta com 「Importar estado de login do desktop」)", "删除选中的账号": "Excluir contas selecionadas", "到恢复时间后自动解除,无需手动操作": "Liberado automaticamente ao chegar o horário de recuperação, sem ação manual", "到期 {date}": "Expira em {date}", "到期 {time}": "Expira em {time}", "到期 近→远": "Expiração perto→longe", "到期 远→近": "Expiração longe→perto", "到期时间": "Data de expiração", "刷新 Token": "Renovar Token", "刷新 Token 完成:成功 {ok} 个,跳过 {skip} 个,失败 {fail} 个": "Renovação de Token concluída: {ok} com sucesso, {skip} ignoradas, {fail} com falha", "刷新 Token:已处理 {completed}/{total} 个,当前账号:{name}": "Renovando Tokens: {completed}/{total} processadas, conta atual: {name}", "刷新列表": "Atualizar lista", "刷新套餐与额度": "Atualizar planos e cotas", "刷新账号列表失败,当前仍显示上一次成功读取的数据:{message}": "Falha ao atualizar as contas. Os últimos dados carregados com sucesso continuam sendo exibidos: {message}", "刷新账号列表失败:{message}": "Falha ao atualizar as contas: {message}", "剩 {left} / {total}{unit}": "{left} / {total}{unit} restantes", "剩 {n} 分钟": "restam {n} minutos", "剩 {remaining}": "Restam {remaining}", "剩 {remaining} / {total}": "Restam {remaining} / {total}", "剩不到 1 分钟": "falta menos de 1 minuto", "剩余 {percent}%": "{percent}% restante", "剩余比例": "Percentual restante", "剩余额度": "Cota restante", "加载异常": "Falha ao carregar", "北京时间(UTC+8)": "Horário de Pequim (UTC+8)", "协议": "Protocolo", "即将到期 {count} 份": "{count} pacotes expiram em breve", "即将过期 {n}": "{n} expira em breve", "历史余额,尚未按新配置验证": "Saldo anterior, ainda não verificado com as novas configurações", "原代理来源已下线,请选择已保存的代理、自定义地址或直连": "A origem anterior do proxy foi descontinuada. Escolha um proxy salvo, um endereço personalizado ou conexão direta.", "去「插件」页": "Abrir Plugins", "去「插件」页启用": "Ativar na página Plugins", "去「插件」页安装": "Instalar na página Plugins", "去启用": "Ativar", "去安装": "Instalar", "又不勾": " e não marque esta opção:", "取消余额查询": "Cancelar consulta de saldo", "取消查询": "Cancelar consulta", "取消查询失败:{message}": "Falha ao cancelar consulta: {message}", "取消选择": "Limpar seleção", "另有 {n} 个已勾选账号被当前筛选隐藏,仍会参与操作": "Outras {n} contas marcadas estão ocultas pelo filtro atual, mas ainda participam da operação", "另有 {n} 个账号因提供商插件未就绪,暂未显示": "Outras {n} contas estão ocultas porque seus plugins de provedor não estão prontos", "只修改本次选择的设置,不影响备注、凭证、转发顺序或其他设置。": "Altera apenas as configurações escolhidas; mantém rótulos, credenciais, ordem de encaminhamento e outras configurações.", "只比较同一家、同单位的数值余额;未知、比例和无限额度不作为零余额,有明确余额的账号优先。": "Compara apenas saldos numéricos do mesmo provedor e na mesma unidade. Valores desconhecidos, percentuais e cotas ilimitadas não são tratados como zero; contas com saldo conhecido vêm primeiro.", "只重试临时故障;次数与整轮时间上限任一用尽即停止,凭证错误不重试。": "Apenas falhas temporárias são repetidas. A consulta para ao atingir o limite de tentativas ou de tempo. Erros de credenciais não são repetidos.", "可添加多条;同类规则也允许并存(例如一条按余额、两条不同重置方式的 Token)": "É possível adicionar várias; regras do mesmo tipo também podem coexistir (por exemplo, uma por saldo e duas de Token com modos de redefinição diferentes)", "可用 {total}": "Disponível {total}", "可用 {value}": "Disponível {value}", "可用 {value} {unit}": "Disponível {value} {unit}", "可用余额": "Saldo disponível", "可用合计": "Total disponível", "可用最低": "Menor disponível", "可留空:新版请求头只认令牌;旧版会把用户 ID 放进 New-Api-User 头": "Pode ficar vazio: versões novas usam só o token; as antigas colocam o ID de usuário no cabeçalho New-Api-User", "可领取的套餐": "Planos resgatáveis", "各窗口独立限制请求,不相加为总余额。": "Cada janela limita as solicitações de forma independente; elas não somam um saldo total.", "同提供商内暂无其他账号占用优先级": "Nenhuma outra conta deste provedor ocupa uma prioridade", "同提供商已占用:{names}": "Já em uso neste provedor: {names}", "名称": "Nome", "后续加入": "Em breve", "含 {n} 个不限额度账号,合计记为 ∞": "inclui {n} conta(s) sem limite; total exibido como ∞", "启动中…": "Iniciando…", "启用全部规则": "Ativar todas as regras", "启用插件包后自动回来": "Ative o pacote de plugins e elas voltam automaticamente", "启用状态": "Estado de ativação", "启用该规则": "Ativar esta regra", "启用该账号": "Ativar esta conta", "启用这一组里的全部账号(含被筛选隐藏的)": "Habilita todas as contas deste grupo (incluindo as ocultas pelo filtro)", "启用这家提供商后自动回来": "Ative este provedor e elas voltam automaticamente", "周期": "Período", "周期 Token": "Token do período", "周期单位": "Unidade do período", "命中条件的模型": "Modelos que atingiram as condições", "商汤日日新控制台的登录密码": "Senha de login do console SenseNova", "商汤日日新控制台的登录账号": "Conta de login do console SenseNova", "固定兜底,不受开关影响": "Fallback fixo, não afetado pelos interruptores", "固定周期": "Período fixo", "在 NewAPI 站点「个人设置」里生成的访问令牌": "Token de acesso gerado em \"Configurações pessoais\" no site do NewAPI", "在列表里拖:拖分组带调整整组顺位,拖行首把手调整组内先后(顺序由拖拽表达,不再填数字)": "Arraste na lista: arraste a faixa do grupo para reordenar grupos inteiros e a alça da linha para reordenar dentro do grupo (a ordem se expressa arrastando — nada de digitar números)", "在账号设置的「基本」分组里设置该账号同时最多处理的请求数": "Define em 「Básico」 nas configurações da conta o número máximo de requisições simultâneas desta conta", "地址与端口由「网络代理」页管理:那边改一次、测一次,所有引用它的账号一起生效": "O endereço e a porta são gerenciados na página 「Proxy de rede」: altere e teste uma vez por lá e todas as contas que o usam são afetadas", "基本": "Básico", "填入系统代理": "Preencher com proxy do sistema", "备注名 / 启用 / 代理": "Rótulo / Ativação / Proxy", "备注名 {name}": "Rótulo {name}", "备注名不能为空": "O rótulo não pode ficar vazio", "备注名已更新": "Rótulo atualizado", "复制当前设置": "Copiar configurações atuais", "复制自账号": "Copiar da conta", "失败 {count} 个:": "{count} com falha: ", "失败后允许换号": "Permitir troca de conta após falha", "失败重试次数": "Novas tentativas após falha", "失败重试次数必须是 0~{max} 的整数": "O número de novas tentativas deve ser um inteiro de 0 a {max}", "套餐 {name}": "Plano {name}", "套餐实例不能跨账号复制,请改用通用额度或本地保护条件": "Instâncias de planos não podem ser copiadas entre contas. Use uma condição de cota geral ou proteção local.", "套餐尚未生效或已经到期": "O plano ainda não está ativo ou já expirou", "套餐池": "Pool de planos", "套餐池的推理端点要求每条请求带一个阿里云验证码令牌;令牌由本应用在后台静默铸造,界面关闭时无法铸造": "O endpoint de inferência do pool de planos exige um token de CAPTCHA da Aliyun em cada solicitação; os tokens são cunhados silenciosamente por este aplicativo em segundo plano e não podem ser cunhados com a interface fechada", "套餐池(Start Plan)": "Pool de planos (Start Plan)", "套餐池(Start Plan)— 走 zcode.z.ai 端点,消耗 ZCode 套餐池的额度(新用户体验额度 / 活动领取)": "Pool de planos (Start Plan) — usa os endpoints de zcode.z.ai e a cota do pool de planos do ZCode (cota de experiência de novos usuários / resgates de evento)", "套餐积分的重置日期": "Data de redefinição dos pontos do plano", "存在延迟计量信息,无法据此推算当前余额": "Informações de medição atrasada não permitem inferir o saldo atual", "它会改写请求体": "Ele reescreve o corpo da requisição", "官方限时活动": "Evento oficial por tempo limitado", "实际阈值:{value} Token": "Limite real: {value} tokens", "对话 token": "Tokens de conversa", "对话请求": "Requisições de chat", "导出文件包含登录凭证,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "Os arquivos exportados contêm credenciais que podem ser usadas para entrar. Guarde-os com segurança; não os compartilhe nem os envie para locais públicos.", "导出未返回结果": "A exportação não retornou um resultado.", "导出本组全部账号,每个账号一个 JSON 文件(含被筛选隐藏的)": "Exportar todas as contas deste grupo em arquivos JSON separados, incluindo as ocultas pelos filtros", "导出本组账号": "Exportar contas deste grupo", "将作用于以下账号": "Será aplicado às seguintes contas", "将用草稿中的 {rules} 条规则替换 {count} 个账号的全部限制规则,原有规则不会保留。确定继续?": "Substituir todas as regras de {count} contas pelas {rules} regras do rascunho? As regras existentes não serão mantidas.", "将这个账号及其登录凭证保存为单独的 JSON 文件": "Salvar esta conta e suas credenciais em um arquivo JSON separado", "小时": "horas", "小浣熊": "Raccoon", "尚未查询该账号的余额": "O saldo desta conta ainda não foi consultado", "尝试领取": "Tentar resgatar", "展开": "Expandir", "展开全部": "Expandir tudo", "展开全部分组": "Expandir todos os grupos", "展开或收起(默认收起)": "Expandir ou recolher (recolhido por padrão)", "展开这一组": "Expandir este grupo", "已保存的代理": "Proxies salvos", "已停用": "Desativado", "已发起 {count} 个账号文件的下载,请在浏览器下载列表确认": "Downloads de {count} arquivos de contas iniciados. Confira a lista de downloads do navegador.", "已取消查询": "Consulta cancelada", "已启用 {name}": "{name} ativada", "已启用自动排序,组内拖动已锁定;关闭全部规则可恢复原手动顺序。": "A ordenação automática está ativada e o arraste no grupo está bloqueado. Desative todas as regras para restaurar a ordem manual original.", "已启用,点击禁用(不参与转发)": "Ativada; clique para desativar (não participa do encaminhamento)", "已在全局队列第一位": "Já está em primeiro lugar na fila global", "已复制到草稿,执行后才会应用到所选账号": "Copiado para o rascunho; só será aplicado às contas selecionadas após executar", "已导出 {count} 个账号文件,{failed} 个未导出:{reason}": "{count} arquivos de contas exportados; {failed} não puderam ser exportados: {reason}", "已是首选": "Já é a primeira", "已暂停验证,需要时请手动重试": "Verificação pausada. Tente novamente manualmente quando precisar.", "已更新 {ok}/{total} 个账号,{failed} 个失败": "{ok}/{total} contas atualizadas, {failed} com falha", "已查询": "Consultado", "已用 {used}": "Usado {used}", "已用 {used} / 共 {total}": "Usado {used} / {total}", "已用完 / 已过期": "Esgotados / expirados", "已用比例": "Percentual utilizado", "已用额度": "Cota utilizada", "已禁用": "Desativada", "已禁用 {name}": "{name} desativada", "已禁用,点击启用": "Desativada; clique para ativar", "已筛选 {n} 项": "{n} exibidos", "已被「{name}」占用": "Já em uso por 「{name}」", "已触发": "Acionado", "已触发 · 账号已禁用": "Disparado · Conta desativada", "已设为首选": "Definida como primeira", "已设置": "Configurado", "已跳过{current}": "Ignorada{current}", "已跳过{usage}{countdown}": "Ignorada{usage}{countdown}", "已达上限{usage}": "Limite atingido{usage}", "已过期": "Expirada", "已过期({time})": "Expirado ({time})", "已选": "Selecionados", "已配置,留空则不修改": "Configurado; em branco, não será alterado", "已限流": "Com rate limit", "已领到、还没到生效时间的套餐(生效后余额列会按它显示):\n{lines}": "Planos já resgatados que ainda não entraram em vigor (a coluna de saldo passa a mostrá-los depois):\n{lines}", "并发上限": "Limite de concorrência", "并发上限 0~{max};CodeArts 等有默认值的家填 0 即按本家默认;达到上限的账号会被跳过、请求转给其他账号": "Limite de concorrência 0~{max}; provedores com valor padrão (ex.: CodeArts) usam esse padrão quando o valor é 0; ao atingir o limite a conta é ignorada e a requisição é repassada a outra conta", "并发上限 0~{max};达到上限的账号会被跳过、请求转给其他账号": "Limite de concorrência 0~{max}; ao atingir o limite a conta é ignorada e a requisição é repassada a outra conta", "并发上限 0~{max};达到上限的账号跳过、请求转给其他账号(原列表 ⋯ 菜单的「并发上限」入口已并入这里)": "Limite de concorrência 0~{max}; ao atingir o limite, a conta é ignorada e a requisição é repassada a outra conta (a entrada 「Limite de concorrência」 do menu ⋯ da lista foi incorporada aqui)", "并发上限 填 0 即按本家默认 {default};填 1 或 2 就按填的算,更大的数会被本家上限截断(原列表 ⋯ 菜单的「并发上限」入口已并入这里)": "0 usa o padrão do provedor ({default}); 1 ou 2 valem como informados, valores maiores são limitados pelo teto do provedor (a entrada 「Limite de concorrência」 do menu ⋯ da lista foi incorporada aqui)", "并发上限必须是 0~{max} 的整数": "O limite de concorrência deve ser um número inteiro de 0 a {max}", "并发上限:{value}": "Limite de concorrência: {value}", "开启后,网关按 OpenCode 官方 CLI 的形状发请求:没填 Key 的账号用匿名凭证": "Quando ativado, o Gateway envia requisições no formato do CLI oficial do OpenCode: contas sem Key usam credencial anônima", "开始 {time}": "Início {time}", "当": "Quando", "当前不符合资格": "Não elegível no momento", "当前不需要验证码令牌": "Tokens de CAPTCHA não são necessários no momento", "当前代理不可用,请重新选择": "O proxy atual está indisponível. Selecione outro.", "当前代理不可用:{error}(不会自动改为直连)": "Proxy atual indisponível: {error} (sem mudar automaticamente para conexão direta)", "当前代理不可用:{error}(转发时会回退直连)": "Proxy atual indisponível: {error} (o encaminhamento volta para conexão direta)", "当前余额 {n};与余额列同一数字口径,严格小于才触发(等于阈值仍可用)": "Saldo atual {n}; mesmo critério numérico da coluna de saldo; só dispara se for estritamente menor (igual ao limite ainda é utilizável)", "当前可手动调整组内顺序。": "Agora é possível reordenar manualmente as contas deste grupo.", "当前可用 ∞(不参与余额不足判定)": "Disponível atual ∞ (não participa da avaliação de saldo insuficiente)", "当前客户端不支持逐账号导出,请更新客户端": "Este cliente não suporta a exportação individual de contas. Atualize o cliente.", "当前已经是默认规则": "Já são as regras padrão", "当前排序规则:{rules}。点击调整": "Ordenação atual: {rules}. Clique para ajustar", "当前未发现本期活动,不代表账号不符合资格": "Nenhum evento atual foi encontrado. Isso não significa que a conta não seja elegível.", "当前没有任何模型处于限流中": "No momento, nenhum modelo está com rate limit", "当前没有可领取的套餐(活动期内每天发一份,明天可再领)": "Nenhum plano resgatável agora (um é emitido por dia durante o evento; dá para resgatar de novo amanhã)", "当前没有限流中的模型。": "No momento, não há modelos com rate limit.", "当前筛选下 {n} 个账号的百分比读数不能相加,取最低的剩余比例(随筛选、搜索变化,不受分页影响)": "As leituras percentuais das {n} contas no filtro atual não podem ser somadas; exibimos a menor porcentagem restante (muda com filtros/busca, sem influência da paginação)", "当前筛选下 {n} 个账号的额度概览(随筛选、搜索变化,不受分页影响)": "Resumo das cotas das {n} contas no filtro atual (muda com filtros e busca, sem influência da paginação)", "当前筛选下没有账号": "Nenhuma conta corresponde aos filtros atuais", "当前筛选条件下没有账号": "Nenhuma conta com o filtro atual", "当前网关不支持余额排序,请先更新网关": "Este gateway não oferece ordenação por saldo. Atualize o gateway primeiro.", "当前规则:{rules}。": "Regras atuais: {rules}.", "当前规则:{rules}。自动排序生效时,组内拖动把手会锁定;关掉全部规则即回到手动顺序。": "Regras atuais: {rules}. Enquanto a ordenação automática estiver ativa, a alça de arrastar dentro do grupo fica bloqueada; desligue todas as regras para voltar à ordem manual.", "当前视图不能调整组顺位:{reason} 之后再拖动": "Não é possível alterar a ordem dos grupos nesta visualização: volte para {reason} antes de arrastar", "当前钩子仅提供套餐与周期,未提供余额数值": "O hook atual só fornece plano e período, não um saldo numérico", "当前:{label}(Clash Verge 直接引用);可在「网络代理」页同步端点后改选": "Atual: {label} (referência direta ao Clash Verge). Você pode sincronizar endpoints na página Proxy de rede e selecionar um deles.", "当前:{label}(未经过代理池 —— 可在「网络代理」页把出口同步进池后来这里改选)": "Atual: {label} (não passa pelo pool de proxies — sincronize a saída para o pool na página 「Proxy de rede」 e depois volte aqui para alterar)", "当前:{label}(未经过代理池 —— 可在「网络代理」页添加相同地址后来这里改选)": "Atual: {label} (fora do pool; adicione o mesmo endereço na página Proxy de rede e selecione-o aqui).", "当前:{label}(每条请求换一个出口);「自定义代理…」打开完整设置": "Atual: {label} (uma saída diferente por requisição); \"Proxy personalizado…\" abre as configurações completas", "当前:{label};选项来自「网络代理」页;「自定义代理…」打开完整设置": "Atual: {label}; as opções vêm da página 「Proxy de rede」; 「Proxy personalizado…」 abre as configurações completas", "当前:{value}": "Atual: {value}", "待定": "Pendente", "待生效": "Aguardando", "待生效 {n} 份": "{n} aguardando", "待生效 {time}": "Em vigor a partir de {time}", "必填": "Obrigatório", "必填;留空 = 不修改,清除用右边的按钮": "Obrigatório; vazio = não altera, limpe com o botão à direita", "总剩余 {total} · 套餐 {plan} · 奖励 {bonus}": "Total restante {total} · Plano {plan} · Bônus {bonus}", "总积分": "Total de pontos", "总积分是当前可用积分的汇总,与余额列一致;不重复累加汇总行,不包含 Token、次数或其他单位的额度。": "O total reúne os pontos disponíveis no momento e corresponde à coluna de saldo. Linhas de resumo não são contadas duas vezes; tokens, contagens de solicitações e cotas em outras unidades não são incluídos.", "总量 {value}": "Total {value}", "恢复时间未知": "Horário de recuperação desconhecido", "恢复默认:仅开启最快到期优先": "Restaurar padrão: apenas vencimento mais próximo primeiro", "恢复默认:仅按手动顺序": "Restaurar padrão: somente ordem manual", "恢复默认:最快到期优先,账号添加时间关闭": "Restaurar padrão: vencimento mais próximo primeiro, ordenação por data de adição desativada", "我的套餐": "Meus planos", "或": "OU", "所有提供商都有这个字段": "Todos os provedores têm este campo", "所选账号的各周期:{list}": "Períodos da conta selecionada: {list}", "手动添加": "Adição manual", "打开批量操作弹窗,并预选这一组的账号(改代理等动作在弹窗里挑参数)": "Abre a janela de operações em lote com as contas deste grupo pré-selecionadas (os parâmetros, como o proxy, escolhem-se na janela)", "执行中…": "Executando…", "执行({action})": "Executar ({action})", "批量动作": "Ação em lote", "批量操作 · 已选 {count} 个账号": "Operação em lote · {count} contas selecionadas", "批量操作失败:{error}": "Falha na operação em lote: {error}", "批量操作已保存,但列表刷新失败:{error}": "As alterações em lote foram salvas, mas a lista não atualizou: {error}", "批量操作接口不可用,请重新打开页面": "Operações em lote indisponíveis; reabra a página", "批量操作未返回结果,请刷新后确认状态": "A operação em lote não retornou resultado; atualize para confirmar o estado", "批量操作本组": "Operações em lote deste grupo", "批量操作结果不完整,请刷新后核对所选账号": "A operação em lote retornou resultados incompletos. Atualize a página e confira as contas selecionadas.", "批量操作结果未确认,请刷新后核对设置": "Não foi possível confirmar as alterações em lote. Atualize a página e confira as configurações.", "批量规则按每个账号分别判定,不合并余额或 Token 用量。": "As regras em lote são avaliadas por conta; saldos e consumo de tokens não são somados.", "把每页调回「全部」": "Voltar o tamanho de página para \"Tudo\"", "折叠": "Recolher", "折叠全部": "Recolher tudo", "折叠全部分组(只留组头)": "Recolher todos os grupos (deixando só os cabeçalhos)", "折叠这一组": "Recolher este grupo", "拖动调整列宽(双击还原)": "Arraste para ajustar a largura da coluna (clique duas vezes para restaurar)", "拖动调整整组顺序": "Arraste para reordenar grupos inteiros", "拖动调整组内顺序": "Arraste para reordenar dentro do grupo", "按上游额度查询的读数判定;模型共用同一个额度池时,选择模型不会拆分该池余额。": "Avaliado pela leitura de cota do provedor. Selecionar modelos não divide o saldo de uma cota compartilhada.", "按优先级从上到下比较,勾选的项才参与": "Comparadas de cima para baixo; só as regras marcadas participam", "按住拖动,调整这一家的组顺位(整组一起动)": "Segure e arraste para mudar a posição de grupo deste provedor (o grupo inteiro se move junto)", "按住拖动,调整这个账号在本组内的顺序": "Segure e arraste para mudar a ordem desta conta dentro do seu grupo", "按总积分设置限制": "Limitar pelo total de pontos", "按提供商筛选账号": "Filtrar contas por provedor", "按最低剩余比例选择账号,所有周期均来自同一账号": "Seleciona a conta com a menor porcentagem restante; todos os períodos são da mesma conta", "按未显示原因筛选": "Filtrar por motivo", "按模型": "Por modelo", "按每日或短周期实际可用额度最低的账号展示,所有周期均来自同一账号": "Exibe a conta com a menor cota efetivamente disponível no período diário ou curto; todos os períodos são da mesma conta", "按规则限制该账号参与转发:没有规则(或全部停用)= 不限制;跳过档自动恢复,禁用档需手动启用。": "Restringe a participação desta conta no encaminhamento por regras: sem regras (ou todas desativadas) = sem restrição; a ação de ignorar se recupera automaticamente e a de desativar exige ativação manual.", "按账号总可用余额比较,不重复累加积分明细": "Compara o saldo total disponível de cada conta sem somar novamente os detalhes de créditos", "按账号最早到期、且还有剩余的积分包比较": "Compara cada conta pelo pacote de créditos mais próximo do vencimento que ainda tem saldo e não expirou", "排序": "Ordenação", "提供商已停用": "Provedor desativado", "提供商显示名,1~{max} 个字符": "Nome de exibição do provedor, de 1 a {max} caracteres", "提供商:{name}": "Provedor: {name}", "提高优先级": "Aumentar prioridade", "插件包已停用": "Pacote de plugin desativado", "插件已启用但加载失败": "O plugin está ativado, mas falhou ao carregar", "插件未加载": "Plugin não carregado", "插件未安装": "Plugin não instalado", "搜索": "Pesquisar", "搜索账号": "Pesquisar contas", "搜索账号 / 邮箱 / 备注": "Buscar conta / e-mail / nota", "操作失败:{message}": "Falha na operação: {message}", "收起": "Recolher", "改动即时生效": "As alterações entram em vigor imediatamente", "改协议 / Base URL 会改变它们的转发方式,正在进行的请求可能失败;模型清单与映射在「模型管理」页。": "Alterar o protocolo / Base URL muda a forma de encaminhamento delas e requisições em andamento podem falhar; a lista de modelos e o mapeamento ficam na página 「Gerenciamento de modelos」.", "数值越小越先用;": "Quanto menor o valor, antes é usada; ", "数值越小越先用;{hint}": "Quanto menor o valor, antes é usada; {hint}", "整个账号": "Conta inteira", "整轮查询时限": "Tempo limite total da consulta", "整轮查询时限必须是 15~180 秒的整数": "O tempo limite total deve ser um número inteiro entre 15 e 180 segundos.", "新账号落到组首 / 组尾": "Novas contas no topo / no fim", "旗舰": "Ultimate", "无上限 · 已用 {used}": "Sem limite · Usado {used}", "无上限按日计(上游到达上限后仍继续计数,超额如实显示)": "Sem limite, contado por dia (o upstream continua contando após atingir o limite e o excedente é exibido com fidelidade)", "无代理(直连)": "Sem proxy (conexão direta)", "无数据": "Sem dados", "无法拖动:已启用自动消耗规则({rules})。请先在「消耗顺序」中关闭这些规则,再手动调整。": "Não é possível arrastar com regras automáticas de consumo ativadas ({rules}). Desative-as em Ordem de consumo antes de reordenar manualmente.", "无法拖动:当前已按积分到期时间和账号添加时间自动排序。请先在「消耗顺序」中关闭这两项规则,再手动调整。": "Não é possível arrastar: as contas estão ordenadas automaticamente pelo vencimento dos créditos e pela data de adição. Desative as duas regras em Ordem de consumo antes de alterar a ordem manualmente.", "无法拖动:当前已按积分到期时间自动排序。请先在「消耗顺序」中关闭该规则,再手动调整。": "Não é possível arrastar: as contas estão ordenadas automaticamente pelo vencimento dos créditos. Desative esta regra em Ordem de consumo antes de alterar a ordem manualmente.", "无法拖动:当前已按账号添加时间自动排序。请先在「消耗顺序」中关闭该规则,再手动调整。": "Não é possível arrastar: as contas estão ordenadas automaticamente pela data de adição. Desative esta regra em Ordem de consumo antes de alterar a ordem manualmente.", "无福利额度": "Sem cota de benefício", "既有 Clash Verge 直接引用继续可用;也可在「网络代理」页同步端点,再改选「已保存的代理」。": "As referências diretas existentes ao Clash Verge continuam disponíveis. Você também pode sincronizar endpoints na página Proxy de rede e mudar para Proxies salvos.", "旧数据导入": "Importação de dados antigos", "旧版 / 定制站点才需要,新版可留空": "Só versões antigas / sites personalizados precisam; nas novas pode ficar vazio", "时": "→ dispara", "明天 {clock}": "Amanhã {clock}", "明天 {time}": "amanhã às {time}", "明天到期": "Expira amanhã", "明细": "Detalhes", "昵称 {name}": "Apelido {name}", "显示账号名": "Mostrar nome da conta", "暂无可查询余额的账号": "Nenhuma conta com saldo consultável", "暂无可比较余额;查到同单位的数值后自动生效,比例与无限额度不参与": "Ainda não há saldos comparáveis. A ordenação será aplicada ao obter valores na mesma unidade; percentuais e cotas ilimitadas são excluídos.", "暂无可用积分信息": "Nenhuma informação de créditos disponível no momento", "暂无数据:先查询一次余额,之后会自动按到期排序": "Sem dados ainda: consulte o saldo uma vez e a ordenação por vencimento passa a valer automaticamente", "暂无数据:先查询一次余额,可按需启用到期排序": "Sem dados ainda: consulte o saldo uma vez e ative a ordenação por vencimento se necessário", "暂无读数": "Sem leitura disponível", "暂无账号,请点击右上角「添加账号」": "Nenhuma conta; clique em 「Adicionar conta」 no canto superior direito", "暂无额度信息": "Sem informações de cota", "更多操作": "Mais ações", "更多设置": "Mais configurações", "更新于 {time}": "Atualizado em {time}", "更新失败": "Falha ao atualizar", "替换全部规则": "Substituir todas as regras", "替换选中账号的限制规则": "Substituir regras de limite das contas selecionadas", "最快到期优先": "Vencimento mais próximo primeiro", "最新添加优先": "Mais recentes primeiro", "最早 {soonest} 恢复": "Recuperação mais cedo: {soonest}", "最早恢复": "Recuperação mais cedo", "最早添加优先": "Mais antigas primeiro", "最晚到期优先": "Vencimento mais distante primeiro", "有 {n} 个账号因提供商插件未就绪,暂未显示": "{n} contas estão ocultas porque seus plugins de provedor não estão prontos", "有效期": "Validade", "有的账号过了 0 点额度就回来 —— 选「自然日」": "Algumas contas têm a cota restaurada após as 0h — escolha 「Dia natural」", "服务器本地时区": "Fuso horário local do servidor", "未使用": "Não usado", "未启用套餐池账号,不生成验证码令牌": "Nenhuma conta Start Plan habilitada; nenhum token de verificação é gerado.", "未命名账号": "Conta sem nome", "未声明可手动续期;本机引用请在原客户端处理登录态。": "A renovação manual não foi declarada. Para referências locais, gerencie o login no cliente original.", "未接入查询": "Consulta não integrada", "未显示的账号": "Contas ocultas", "未显示账号": "Contas ocultas", "未查询": "Não consultado", "未检测到 Clash Verge": "Clash Verge não detectado", "未检测到 Clash Verge 配置": "Configuração do Clash Verge não detectada", "未被使用": "Não utilizado", "未触发": "Não acionado", "未触发{current}": "Não acionada{current}", "未触发{usage}{countdown}": "Não acionada{usage}{countdown}", "未设备注名": "Sem rótulo", "未返回余额数据": "Nenhum dado de saldo retornado", "未返回可确认的余额数值": "Nenhum saldo numérico confirmado foi retornado", "未返回可识别的余额数据": "Nenhum dado de saldo reconhecível retornado", "未返回重置时间": "Horário de renovação indisponível", "未配置": "Não configurado", "未配置凭证": "Credencial não configurada", "本周期 Token 消耗达到限制器的上限,账号已被自动禁用(窗口重置也不恢复,需手动启用)": "O consumo de Token do período atingiu o limite do Limitador e a conta foi desativada automaticamente (a redefinição da janela não a recupera; é preciso ativar manualmente)", "本周期 Token 消耗达到限制器的上限,转发时会跳过该账号(窗口重置自动恢复)": "O consumo de Token do período atingiu o limite do Limitador; a conta será ignorada no encaminhamento (a redefinição da janela a recupera automaticamente)", "本周期已用": "Uso do período", "本地 Token 消耗": "Consumo local de tokens", "本地台账里今天还领过这些,但上面的读数里还没有:{plans}(读数刷新可能有延迟)": "O registro local mostra outros resgates de hoje que ainda não aparecem nas leituras acima: {plans} (a leitura pode demorar a atualizar)", "本地消耗上限必须是大于 0 的安全整数": "O limite de consumo local deve ser um inteiro positivo seguro", "本地用量保护": "Proteção de consumo local", "本地统计只包含经过本网关的请求,不等于上游账单;清理请求日志不会清零。套餐选择用于限定保护范围,不会强制上游扣指定套餐。": "Os contadores locais incluem apenas requisições por este gateway, não a fatura do provedor. Limpar os logs não os zera. A seleção do plano define o alcance da proteção, sem obrigar o provedor a descontar desse plano.", "本地请求次数": "Número de requisições locais", "本地领取于 {time}": "Resgatado localmente em {time}", "本提供商不支持积分到期排序,默认保持手动顺序;可按需启用账号添加时间排序。": "Este provedor não oferece ordenação por vencimento dos créditos, então a ordem manual é o padrão. Ative a ordenação por data de adição se necessário.", "本提供商默认启用最快到期优先,账号添加时间默认关闭;关闭全部规则可恢复手动顺序。": "Este provedor usa por padrão o vencimento mais próximo primeiro, com a ordenação por data de adição desativada. Desative todas as regras para restaurar a ordem manual.", "本期活动": "Eventos atuais", "本期活动按套餐分别展示,领取资格以上游返回为准": "Os eventos atuais são exibidos por plano. A elegibilidade é determinada pela resposta do provedor.", "本组 {n} 个账号的可用余额之和,按整组统计(不受筛选、搜索影响)": "Soma do saldo disponível das {n} contas deste grupo, contabilizada sobre o grupo inteiro (não afetada por filtros ou busca)", "本组 {n} 个账号的百分比读数不能相加,取组内最低的剩余比例(按整组统计,不受筛选、搜索影响)": "As leituras percentuais das {n} contas deste grupo não podem ser somadas; exibimos a menor porcentagem restante (grupo inteiro, sem influência de filtros ou busca)", "本组 {n} 个账号的额度概览(按整组统计,不受筛选、搜索影响)": "Resumo das cotas das {n} contas deste grupo (grupo inteiro, sem influência de filtros ou busca)", "本组代理": "Proxy deste grupo", "本组操作": "Ações do grupo", "本组每个账号会分别保存为一个 JSON 文件,包含被筛选隐藏的账号。": "Cada conta deste grupo será salva em um arquivo JSON separado, incluindo contas ocultas pelos filtros.", "权益 {value}": "Concedido {value}", "权益 {value} {unit}": "Concedido {value} {unit}", "条件即时生效,关掉面板就能看到结果。": "Os filtros aplicam na hora — feche o painel para ver o resultado.", "条件组 {n}": "Grupo de condições {n}", "来源 {source}": "Origem: {source}", "查看": "Ver", "查看因插件未就绪而暂未显示的账号": "Contas ocultas porque o plugin do provedor não está pronto", "查看插件状态": "Ver estado dos plugins", "查询中…": "Consultando…", "查询余额": "Consultar saldo", "查询全部账号的余额(含已禁用账号 —— 禁用只表示不参与转发)": "Consultar o saldo de todas as contas (incluindo as desativadas — desativada significa apenas que não participa do encaminhamento)", "查询凭证还没配齐:填好后余额列才有读数,在此之前会显示「未配置」。": "As credenciais de consulta ainda não estão completas: a coluna de saldo só passa a ter leitura depois de preenchidas; até lá mostra \"Não configurado\".", "查询失败": "Falha na consulta", "查询失败:{message}": "Falha na consulta: {message}", "查询已成功,但上游未提供额度数据,不代表余额为零。": "A consulta foi concluída, mas o provedor não retornou dados de cota. Isso não significa que o saldo seja zero.", "查询设置": "Configurações de consulta", "查询该账号剩余余额(读数显示在余额列)": "Consulta o saldo restante desta conta (a leitura aparece na coluna de saldo)", "查询超时,可重新查询": "A consulta expirou. Você pode tentar novamente.", "查询间隔": "Intervalo de consulta", "查询间隔必须是 {min} 秒 ~ 24 小时": "O intervalo de consulta deve ser de {min} segundos ~ 24 horas", "桌面端实时登录态请在原客户端更新": "Atualize esta sessão de desktop em tempo real no cliente original", "桌面端实时登录态(凭证每次从客户端登录态文件读取)": "Estado de login em tempo real do desktop (a credencial é lida do arquivo de login do cliente a cada uso)", "模型范围": "Escopo dos modelos", "正在加载…": "Carregando…", "正在探测可领取的套餐…": "Verificando planos resgatáveis…", "正在查询": "Consultando", "正在查询本期活动…": "Consultando eventos atuais…", "正在补铸验证码令牌": "Gerando tokens de CAPTCHA", "正在读取 Clash Verge 配置…": "Lendo a configuração do Clash Verge…", "正在读取…": "Lendo…", "正在读取代理列表…": "Lendo a lista de proxies…", "正在连接上游…": "Conectando ao upstream…", "正常": "Normal", "此刻正在使用这个账号的请求数(含还在下发内容的流式请求);为 0 时不显示": "Número de requisições usando esta conta neste momento (incluindo requisições de streaming que ainda enviam conteúdo); não é exibido quando é 0", "此额度不属于账号当前使用的通道": "Esta cota não pertence ao canal atual da conta", "此额度不属于账号当前使用的通道,切换到对应通道后才参与判定。": "Esta cota não pertence ao canal atual da conta. Ela só é avaliada após mudar para o canal correspondente.", "每": "A cada", "每 {period}消耗 ≥ {count} Token": "A cada {period}, consumo ≥ {count} Token", "每周或每月额度已耗尽,短周期实际可用额度按 0% 计算;账号明细保留原始读数": "A cota semanal ou mensal acabou, então a cota efetiva do período curto é considerada 0%; os detalhes da conta mantêm as leituras originais", "每日消耗 ≥": "Consumo diário ≥", "每日消耗 ≥ {count} Token(每天 0 点重置)": "Consumo diário ≥ {count} Token (redefinido às 0h de cada dia)", "每日重置": "Renova diariamente", "每日重置(额度按周期回满,不是作废)": "Renova diariamente (a cota volta ao total a cada ciclo; ela não é perdida)", "每条请求换一个出口(按顺序轮流),上游看到的 IP 因此是变化的;出口的地址与端口由「网络代理」页管理": "Cada requisição passa para a próxima saída, então o upstream vê um IP variável; endereços e portas das saídas são gerenciados na página Proxy de rede", "每组共用一个触发动作;第二条条件起可选择「与/或」。与优先于或,下面会显示明确分组。各条件组独立生效。": "Cada grupo compartilha uma ação. A partir da segunda condição, escolha E ou OU. E tem precedência sobre OU; o agrupamento aparece abaixo. Cada grupo é aplicado de forma independente.", "没有匹配「{kw}」的账号": "Nenhuma conta corresponde a \"{kw}\"", "没有可全选的账号": "Nenhuma conta para selecionar", "没有可用出口": "Nenhuma saída disponível", "没有适用于本次操作的账号": "Nenhuma conta é compatível com esta operação", "没有选中的账号": "Nenhuma conta selecionada", "活动套餐": "Plano de evento", "活动套餐的推理端点要求每条请求带一个阿里云验证码令牌;令牌由本应用在后台静默铸造,界面关闭时无法铸造": "O endpoint de inferência do plano de evento exige um token de captcha da Alibaba Cloud em cada requisição; o token é gerado silenciosamente pelo aplicativo em segundo plano e não pode ser gerado com a interface fechada", "活动套餐(Start Plan)": "Plano de evento (Start Plan)", "活动套餐(Start Plan)— 走官方活动端点,用活动里领到的额度": "Plano de evento (Start Plan) — usa o endpoint oficial do evento e a cota resgatada nele", "活动时间:{time}": "Período do evento: {time}", "活动期内每天发一份新套餐;同一份当天重复领取会提示「已领取过」,次日可再领。领取要走一次人机验证(滑块)。": "Durante o evento um novo plano é emitido todo dia; resgatar o mesmo de novo no mesmo dia retorna \"já resgatado\", e é possível resgatar de novo no dia seguinte. O resgate passa por uma verificação humana (slider).", "活动期内每天发一份新套餐;已领的套餐不重复提交,次日可领新套餐。只有主动领取时才会进行人机验证。": "Um novo plano é oferecido a cada dia da campanha. Planos já resgatados não são enviados novamente; resgate o novo plano amanhã. A verificação humana só ocorre quando você escolhe resgatar.", "活动目录合并账号预览、营销活动与匿名探测。已领取仅依据领取记录或账号名下套餐;状态待确认时可尝试领取,资格以上游返回为准。": "O catálogo combina prévias da conta, eventos de marketing e consultas anônimas. O status de resgate exige um registro de resgate ou um plano pertencente à conta. Se o status não estiver confirmado, você pode tentar resgatar; a elegibilidade depende da resposta do provedor.", "测试中…": "Testando…", "测试出口": "Testar saída", "消耗顺序": "Ordem de consumo", "添加 新→旧": "Adição nova→antiga", "添加 旧→新": "Adição antiga→nova", "添加规则": "Adicionar regra", "添加限制": "Adicionar limite", "清掉本机的限流标记,立刻重新尝试该模型(上游若仍在限流会再次被标记)": "Remove a marca de rate limit local e tenta novamente este modelo imediatamente (se o upstream ainda estiver limitando, ele será marcado de novo)", "清掉该账号全部模型的限流标记": "Remove as marcas de rate limit de todos os modelos desta conta", "清空全部规则": "Limpar todas as regras", "清空搜索与三个筛选档位,回到全部账号": "Limpar a busca e os três grupos de filtro, mostrando todas as contas", "清空选中账号的限制规则": "Limpar regras de limite das contas selecionadas", "清除": "Limpar", "清除失败:{error}": "Falha ao limpar: {error}", "清除失败:{message}": "Falha ao limpar: {message}", "清除已配置的 API Key(转发时会因缺少凭证被跳过)": "Remove a API Key configurada (a conta será ignorada no encaminhamento por falta de credencial)", "清除已配置的 {label}": "Limpar o {label} configurado", "清除已配置的余额查询凭证": "Remove a credencial de consulta de saldo configurada", "清除标记": "Limpar marcas", "清除筛选": "Limpar filtros", "清除该账号的冷却与全部模型限流标记": "Limpar a pausa desta conta e as marcações de limite de todos os modelos", "滚动窗口": "Janela móvel", "点击{action}各模型的限流明细": "Clique para {action} os detalhes de rate limit de cada modelo", "点击查看账号冷却与模型限流明细": "Clique para ver a pausa da conta e os limites dos modelos", "状态": "Status", "状态 {status}": "Status {status}", "状态待确认": "Status não confirmado", "状态未知": "Desconhecido", "生效 {time}": "Início {time}", "生效中": "Em vigor", "生效至到期累计(不自动回满)": "Acumulado da ativação à expiração (sem reposição automática)", "用 NewAPI 站点的个人访问令牌查询账户余额(不是这条账号的上游 API Key)。令牌在站点的「个人设置」里生成,只有旧版 / 定制站点才需要额外填用户 ID。": "Consulta o saldo da conta com um token de acesso pessoal do site NewAPI (não é a chave de API upstream desta conta). O token é gerado em \"Configurações pessoais\" do site; só versões antigas / personalizadas pedem também o ID de usuário.", "用 bigmodel.cn 控制台的访问令牌查询账户余额(人民币元)。令牌是登录后浏览器 Cookie `bigmodel_token_production` 的值:开发者工具 → 应用(Application)→ Cookie 里复制。": "Consulta o saldo da conta (em yuans) com um token de acesso do console bigmodel.cn. O token é o valor do cookie do navegador `bigmodel_token_production` após o login: DevTools → Application → Cookies, e copie de lá.", "用下面的规则统一替换各账号的全部规则,执行前会再次确认。": "Substitui todas as regras de cada conta pelas regras abaixo; pede confirmação antes de executar.", "用商汤日日新控制台的账号密码查询(与推理用的 API Key 不是同一套)。网关会自动换取登录票并缓存,过期后自动重登,不需要手动维护。": "Consulta com a conta e a senha do console SenseNova (não são as mesmas credenciais da chave de API de inferência). O gateway troca por um ticket de login e o mantém em cache, logando de novo sozinho quando expira — sem manutenção manual.", "用户名": "Nome de usuário", "用这条账号的 API Key 查询订阅用量,不需要额外配置;读数展开成 5 小时 / 每周 / 每月三个窗口。": "Consulta o uso da assinatura com a chave de API desta conta; sem configuração extra. A leitura se abre em três janelas: 5 horas / semanal / mensal.", "用这条账号的 API Key 查询,不需要额外配置。": "Consulta com a chave de API desta conta; sem configuração extra.", "用这条账号的 API Key 生成签名后查询账户余额(美元),不需要额外配置。要求 API Key 是 z.ai 的「id.secret」形态(控制台生成的 Key 就是)。": "Assina com a chave de API desta conta e consulta o saldo (em dólares); sem configuração extra. A chave precisa estar no formato \"id.secret\" da z.ai (que é como o console gera).", "留空 = 不修改,清除用右边的按钮": "Vazio = não altera; limpe com o botão à direita", "登录 / 导入一个新账号": "Fazer login / importar uma nova conta", "登录授权已失效,请重新登录;自动续期无法恢复已过期或已撤销的刷新令牌。": "A autorização de login não é mais válida. Faça login novamente; a renovação automática não restaura um token de atualização expirado ou revogado.", "登录授权截止:{time};自动续期不会延长此时间,届时需重新网页登录。": "A autorização de login expira em {time}. A renovação automática não estende esse prazo; faça login novamente pelo navegador quando ela expirar.", "百分比阈值必须在 0~100 之间": "O limite percentual deve estar entre 0 e 100", "直连": "Conexão direta", "确定删除选中的 {count} 个账号?此操作不可恢复,账号的登录态会一并移除。": "Confirmar a exclusão de {count} contas selecionadas? Esta operação é irreversível e o estado de login das contas também será removido.", "确定清空 {count} 个账号的全部限制规则?余额与 Token 将不再设限;已禁用的账号不会自动启用。": "Limpar todas as regras de {count} contas? Os limites de saldo e tokens serão removidos; contas desativadas não serão ativadas automaticamente.", "确定清除全部模型的限流标记?": "Limpar os limites de todos os modelos?", "确定清除模型「{model}」的限流标记?": "Limpar o limite do modelo “{model}”?", "确定清除该账号的冷却与全部模型限流标记?": "Limpar a pausa desta conta e as marcações de limite de todos os modelos?", "禁用": "Desativar", "禁用整个账号(手动恢复)": "Desativar a conta inteira (reativação manual)", "禁用该账号(需手动重新启用)": "Desativar esta conta (precisa ser reativada manualmente)", "禁用这一组里的全部账号(含被筛选隐藏的)": "Desabilita todas as contas deste grupo (incluindo as ocultas pelo filtro)", "福利按限时活动下发,不是每个账号都有 —— 正常状态,不是查询失败": "Os benefícios são distribuídos por eventos por tempo limitado e não estão disponíveis em todas as contas — é um estado normal, não uma falha de consulta", "福利日额度": "Cota diária de benefício", "福利网关未读到:{error}": "Gateway de benefícios não lido: {error}", "秒": "segundos", "秒;默认 60 秒,包含重试等待,多步骤查询可适当延长。": "segundos; padrão de 60, incluindo esperas entre tentativas. Aumente para consultas de várias etapas, se necessário.", "积分": "Pontos", "积分到期时间": "Expiração dos créditos", "积分包": "Pacote de pontos", "积分明细": "Detalhes dos pontos", "积分查询已复用转发用的登录凭证,这里通常留空即可。只有旧版本填过、或从旧代理导入过凭证时才有值": "A consulta de pontos reutiliza a credencial de login usada no encaminhamento; normalmente basta deixar em branco. Só há valor quando versões antigas o preencheram ou quando a credencial foi importada de um proxy antigo", "稍后由后台判定自动禁用": "O sistema decidirá em segundo plano e desativará automaticamente", "窗口 = 今天 0 点起(本地时区),0 点重置即清零恢复;按账号在 requests 表聚合": "Janela = a partir das 0h de hoje (fuso horário local); a redefinição às 0h zera e recupera; agregação por conta na tabela requests", "窗口内已用 {used} / {limit} Token,转发时会跳过该账号(重置后自动恢复)": "Uso na janela {used} / {limit} Token; a conta será ignorada no encaminhamento (recuperada automaticamente após a redefinição)", "窗口对齐自然时间(整点 / 整 N 分钟一轮回),重置即清零恢复;按账号在 requests 表聚合": "A janela se alinha ao tempo natural (ciclos em horas cheias / a cada N minutos); a redefinição zera e recupera; agregação por conta na tabela requests", "窗口数量超过展示上限,仅展示部分读数": "O número de janelas excede o limite de exibição; só parte das leituras é mostrada", "窗口重置时间": "Renovação de cada janela", "窗口长度": "Duração da janela", "窗口额度与时间": "Janelas de cota e horários", "端口": "Porta", "端口准备中": "Porta em preparação", "第 {rank} 顺位": "Posição global {rank}", "等待当前验证码流程结束": "Aguardando a verificação atual terminar", "筛选": "Filtrar", "筛选 / 搜索 / 分页生效时组顺位不可拖动(别家的组整组不可见,落点没法定位)": "A ordem dos grupos não pode ser arrastada com filtro / busca / paginação ativos (grupos de outros provedores ficam ocultos, então o destino não pode ser localizado)", "系统代理信息无效,请手动填写。": "As informações do proxy do sistema são inválidas. Preencha manualmente.", "系统代理协议暂不支持自动填入,请手动配置 HTTP 或 SOCKS5 代理": "Este protocolo de proxy do sistema não pode ser importado. Configure manualmente um proxy HTTP ou SOCKS5.", "系统代理地址无效,请手动填写": "O endereço do proxy do sistema é inválido. Preencha manualmente.", "系统代理认证信息无法读取,请手动填写": "Não foi possível ler as credenciais do proxy do sistema. Preencha manualmente.", "累计起点": "Início da contagem", "级联删除名下全部账号,不可恢复": "Exclui em cascata todas as contas vinculadas, sem possibilidade de recuperação", "组内先后:按住左边的把手上下拖动即可调整;整组的先后拖分组带的把手": "Dentro do grupo: segure a alça à esquerda e arraste para cima / baixo para reordenar; para a ordem dos grupos inteiros, arraste a alça da faixa do grupo", "组内并发上限": "Limite de concorrência do grupo", "组内手动顺序": "Ordem manual dentro do grupo", "组内第 {rank} 位": "Posição {rank} no grupo", "组顺位已锁定": "Ordem dos grupos bloqueada", "组顺位:越小越先用(拖动分组带调整)": "Posição do grupo: menor vai primeiro (arraste a faixa do grupo para ajustar)", "统一设置自动查询的开关、间隔和失败重试次数;不会复制或覆盖余额查询凭证。": "Define o interruptor, o intervalo da consulta automática e o número de novas tentativas; nunca copia nem sobrescreve credenciais de consulta de saldo.", "统计周期": "Período de contagem", "统计周期尚未开始或已经结束": "O período de contagem ainda não começou ou já terminou", "统计窗口必须是 1 分钟~31 天": "A janela de contagem deve ser de 1 minuto a 31 dias", "统计结束时间必须晚于开始时间": "O fim da contagem deve ser posterior ao início", "缓存用量未知,不按零计量,也不用于推算余额": "O uso em cache é desconhecido; não é contado como zero nem usado para inferir saldo", "编码套餐(Coding Plan)": "Plano de programação (Coding Plan)", "编码套餐(Coding Plan)— 走开放平台端点,消耗开放平台的额度(订阅套餐 / 资源包 / 充值余额)": "Plano de programação (Coding Plan) — usa os endpoints da plataforma aberta e consome a cota dela (plano de assinatura / pacotes de recursos / saldo pré-pago)", "编码套餐(Coding Plan)— 走开放平台端点,用自己订阅的额度": "Plano de programação (Coding Plan) — usa o endpoint da plataforma aberta e a cota da própria assinatura", "编辑": "Editar", "编辑限制": "Editar limite", "编辑限制条件": "Editar condição de limite", "网关电脑未检测到可导入的系统代理;请手动填写,或选择已保存的代理。": "Nenhum proxy do sistema importável foi encontrado no computador do gateway. Informe um manualmente ou escolha um proxy salvo.", "网络": "Rede", "网页端会逐个下载文件;浏览器提示时请允许本网站下载多个文件。": "O painel web baixa os arquivos individualmente. Se solicitado, permita que este site baixe vários arquivos.", "自动查询余额": "Consultar saldo automaticamente", "自动查询余额(按下面的间隔自动刷新余额列的读数)": "Consultar saldo automaticamente (atualiza a leitura da coluna de saldo no intervalo abaixo)", "自定义代理": "Proxy personalizado", "自定义代理…": "Proxy personalizado…", "自定义:": "Personalizado: ", "自然周": "Semana civil", "自然日": "Dia civil", "自然日(每天 0 点)": "Dia natural (0h de cada dia)", "自然月": "Mês civil", "补全请求": "Requisições de conclusão", "补铸失败:{error}": "Falha ao gerar tokens: {error}", "规则操作": "Operação de regras", "解析失败": "Falha na análise", "触发动作": "Ação ao disparar", "触发后": "Após disparar", "触发条件": "Condição de disparo", "计入 {counted}/{total}": "contabilizados {counted}/{total}", "订阅已移除": "Assinatura removida", "订阅统计未读到:{error}": "Estatísticas de assinatura não lidas: {error}", "记录里没有过期时间": "Não há data de expiração no registro", "设为首选": "Tornar preferida", "设置并发上限": "Definir limite de concorrência", "访客账号没有积分体系,因此不查询余额(登录账号可以查)": "Contas de convidado não têm sistema de pontos, por isso o saldo não é consultado (uma conta conectada pode ser consultada)", "访问令牌": "Token de acesso", "试用版": "Plano de teste", "该上游无需鉴权": "Este upstream não exige autenticação", "该上游无需鉴权(转发与拉取模型都不发送鉴权头)": "Este upstream não exige autenticação (não envia cabeçalho de autenticação no encaminhamento nem ao buscar modelos)", "该提供商尚未接入余额查询": "Consultas de saldo ainda não estão integradas para este provedor", "该提供商没有余额查询": "Este provedor não tem consulta de saldo", "该提供商没有余额查询;可按 Token 消耗设置限制。": "Este provedor não oferece consulta de saldo; você pode limitar o consumo de tokens.", "该提供商的推理转发尚未接入,账号不参与转发": "O encaminhamento de inferência deste provedor ainda não está integrado; a conta não participa do encaminhamento", "该账号不支持刷新 Token 或未提供刷新凭证": "Esta conta não permite renovar o Token ou não tem credenciais de renovação", "该账号出网走的代理(Clash 出口 / 自定义 / 直连);点击可修改": "Proxy usado na saída desta conta (saída do Clash / personalizado / conexão direta); clique para alterar", "该账号出网走的代理(已保存的代理 / 自定义 / 直连);点击可修改": "Proxy usado por esta conta (salvo / personalizado / direto); clique para alterar.", "该账号当前限流中的模型;点徽章看明细": "Modelos desta conta atualmente com rate limit; clique no selo para ver os detalhes", "该账号没有套餐登录态(jwt),套餐池通道会失败:请重新登录该账号": "Esta conta não tem estado de login do plano (jwt) e o canal do pool de planos falhará: faça login novamente nesta conta", "该账号没有套餐登录态(jwt),活动套餐会失败:请重新登录该账号": "Esta conta não tem estado de login do plano (jwt) e o plano de evento falhará: faça login novamente nesta conta", "该账号没有福利模型额度(福利按活动下发,不是每个账号都有)": "Esta conta não tem cota de modelos de benefício (os benefícios são distribuídos por eventos e não estão em todas as contas)", "该账号没有积分类读数(额度只有福利 token 池)": "Esta conta não tem leituras de pontos (a cota é apenas o pool de tokens de benefício)", "该账号的额度只有福利 token 池(见余额格那两行),订阅统计没有积分类计量表": "A cota desta conta é apenas o pool de tokens de benefício (veja as duas linhas na célula de saldo); as estatísticas de assinatura não têm medidores de pontos", "该额度中的全部模型": "Todos os modelos desta cota", "请先勾选要操作的账号": "Marque primeiro as contas que deseja operar", "请先选择 Clash Verge 出口": "Selecione primeiro uma saída do Clash Verge", "请先选择已保存的代理": "Selecione primeiro um proxy salvo", "请填写代理主机地址": "Preencha o endereço do host do proxy", "请填写提供商名称": "Preencha o nome do provedor", "请填写提供商的 Base URL": "Preencha o Base URL do provedor", "请填写查询间隔": "Preencha o intervalo de consulta", "请填写重置周期": "Preencha o período de redefinição", "请至少添加一条限制规则;清空请使用清空操作": "Adicione pelo menos uma regra; para remover todas, use a operação de limpar", "请选择代理": "Selecione um proxy", "请选择出口": "Selecione uma saída", "读取中…": "Carregando…", "读取失败:{error}": "Falha na leitura: {error}", "读取系统代理失败": "Falha ao ler o proxy do sistema", "读取网关电脑当前的 HTTPS 系统代理,填入自定义地址;后续系统设置变化不会自动同步。": "Copia o proxy HTTPS atual do sistema do computador do gateway para os campos personalizados. Alterações posteriores no sistema não são sincronizadas automaticamente.", "读取自 {dir};端口由 Clash Verge 管理,这里实时同步": "Lido de {dir}; a porta é gerenciada pelo Clash Verge e sincronizada aqui em tempo real", "读数来自自动余额查询;与余额列同一数字口径,严格小于才触发(等于阈值仍可用)": "A leitura vem da consulta automática de saldo; mesmo critério numérico da coluna de saldo; só dispara se for estritamente menor (igual ao limite ainda é utilizável)", "读数里没有套餐清单(免费账号、或套餐的上游状态还没刷新;可点右上角「查询余额」重读)": "A leitura não contém a lista de planos (conta gratuita, ou o estado do plano no upstream ainda não foi atualizado; clique em \"Consultar saldo\" no canto superior direito para reler)", "读数里没有额度桶,这里按套餐权益里的已用 / 总量显示(上游给的数)": "A leitura não tem balde de cota; isto mostra o usado / total da concessão do plano (os números do upstream)", "调整到全局队列第一位": "Mover para o início da fila global", "调整顺序失败:{message}": "Falha ao ajustar a ordem: {message}", "账号": "Contas", "账号不存在,请刷新后重试": "A conta não existe; atualize e tente novamente", "账号不存在,请刷新后重试。": "A conta não existe; atualize e tente novamente.", "账号主额度": "Cota principal da conta", "账号余额单位不一致,暂不按余额排序,继续比较其他规则": "Os saldos usam unidades diferentes. A ordenação por saldo será ignorada; as demais regras continuam valendo.", "账号全部模型暂时停止转发 · 到恢复时间自动解除": "Todos os modelos desta conta estão pausados · Retoma automaticamente no horário de recuperação", "账号冷却": "Pausa da conta", "账号列表刷新不可用,请重新打开页面": "Não é possível atualizar as contas. Reabra a página", "账号列表刷新失败": "Falha ao atualizar a lista de contas.", "账号列表刷新接口不可用,请重新打开页面": "A atualização da lista de contas está indisponível. Reabra a página.", "账号列表加载失败,请点击「刷新」重试": "Falha ao carregar as contas. Clique em \"Atualizar\" para tentar novamente", "账号列表加载失败,请点击「刷新」重试:{message}": "Falha ao carregar as contas. Clique em \"Atualizar\" para tentar novamente: {message}", "账号列表已刷新": "Lista de contas atualizada", "账号名 / 邮箱 / 备注": "Nome da conta / e-mail / nota", "账号套餐到期:{time}": "O plano da conta expira em: {time}", "账号导出失败:{reason}": "Falha ao exportar contas: {reason}", "账号已保存,但列表刷新失败:{error}": "A conta foi salva, mas a lista não pôde ser atualizada: {error}", "账号已保存,但提供商未更新:{error}": "Conta salva, mas o provedor não foi atualizado: {error}", "账号数据仍然保留,无需重新添加。安装或启用对应插件并成功加载后,账号会自动恢复显示。": "Os dados das contas foram mantidos; não adicione as contas novamente. Elas reaparecem automaticamente quando os plugins necessários são instalados ou ativados e carregados com sucesso.", "账号显示名称": "Nome de exibição da conta", "账号更新接口不可用,请重新打开页面": "A atualização de contas está indisponível. Reabra a página.", "账号更新结果未确认,请刷新后核对设置": "Não foi possível confirmar a atualização da conta. Atualize a página e confira as configurações.", "账号正在导出,请稍候": "As contas estão sendo exportadas. Aguarde.", "账号添加时间": "Data de adição da conta", "账号级条件组已触发;点击查看限制器": "Um grupo de condições da conta inteira foi acionado; clique para ver o limitador", "账号表": "Tabela de contas", "账号设置": "Configurações da conta", "账号设置 · {name}": "Configurações da conta · {name}", "账号设置分组": "Grupo de configurações da conta", "账号邮箱": "E-mail da conta", "账号页与全局路由共用此消耗顺序,网关按最新余额数据选路,不需要保持页面打开。模型独立顺序会覆盖全局。": "Contas e roteamento global compartilham esta ordem de consumo. O gateway usa os dados de saldo mais recentes, mesmo com a página fechada. A ordem independente do modelo tem prioridade sobre a global.", "跨账号批量配置仅支持通用条件;套餐实例不能直接复制到其他账号。": "A configuração em lote entre contas aceita apenas condições gerais. Instâncias de planos não podem ser copiadas diretamente para outras contas.", "跳过 {count} 个:": "{count} ignoradas: ", "跳过该账号(余额回升自动恢复)": "Ignorar esta conta (recuperada automaticamente quando o saldo subir)", "跳过该账号(自动恢复)": "Ignorar esta conta (recuperação automática)", "跳过该账号(重置后自动恢复)": "Ignorar esta conta (recuperada automaticamente após a redefinição)", "跳过(自动恢复)": "Ignorar (recuperação automática)", "转发优先级": "Prioridade de encaminhamento", "转发走套餐池(Start Plan)通道(zcode.z.ai 的 Anthropic 端点,用账号里的体验额度 / 活动领取额度);在账号设置里可切回编码套餐": "O encaminhamento usa o canal do pool de planos (Start Plan) (endpoint Anthropic em zcode.z.ai, com a cota de experiência / resgates de evento da conta); nas configurações da conta é possível voltar ao plano de programação", "转发走活动套餐通道(zcode.z.ai 的 Anthropic 端点,用账号里领到的额度);在账号设置里可切回编码套餐": "O encaminhamento usa o canal do plano de evento (endpoint Anthropic em zcode.z.ai, com a cota resgatada na conta); nas configurações da conta é possível voltar ao plano de programação", "转发顺序": "Ordem de encaminhamento", "轮询全部代理节点": "Rotacionar todos os nós de proxy", "轮询的代理": "Proxies para rotacionar", "轮询至少要选择一条代理(或改选「全部」)": "Selecione pelo menos um proxy para rotacionar (ou volte para \"Todos\")", "轮询(换 IP)": "Rotação (troca de IP)", "还没有代理(去「网络代理」页添加)": "Ainda não há proxies (adicione na página 「Proxy de rede」)", "还没有余额读数(已自动查询一次,稍候;也可以点右上角「查询余额」重读)": "Ainda não há leitura de saldo (uma consulta automática já foi iniciada, aguarde; você também pode clicar em \"Consultar saldo\" no canto superior direito)", "还没有保存的代理": "Ainda não há proxies salvos", "还没有批量规则,请先添加限制或从所选账号复制。": "Ainda não há regras em lote; adicione um limite ou copie de uma conta selecionada.", "还没有条件组:账号照常参与转发,不设置额度保护。": "Nenhum grupo de condições ainda. A conta encaminha normalmente, sem proteção de cota.", "还没有账号,去桌面端添加": "Ainda sem contas. Adicione uma no desktop.", "还没有账号,请点击「添加账号」": "Ainda não há contas. Clique em “Adicionar conta”.", "还没有限制规则:账号照常参与转发,余额与 Token 消耗都不设上限。": "Ainda não há regras de limite: a conta participa normalmente do encaminhamento, sem limite de saldo nem de consumo de Token.", "这一份今天已经领过了(重复领取上游会回「已领取过」)": "Este plano já foi resgatado hoje (resgatar de novo devolve \"já resgatado\" no upstream)", "这一家查不到积分到期时间": "Este provedor não tem dados de expiração de créditos", "这一家没有可用余额查询": "Este provedor não oferece consulta de saldo disponível", "这一栏改的是": "Esta seção altera ", "这一段按提供商出现:有什么配什么。": "Esta seção aparece por provedor: configure o que estiver disponível.", "这一类现在没有账号": "Nenhuma conta nesta categoria", "这一组开着排序规则:关掉规则后才能手动拖": "A ordenação automática está ativa neste grupo: desligue as regras para arrastar manualmente", "这个账号的余额走窗口限额通道(只配了编码套餐 API Key):只有每 N 小时的剩余比例,读不到套餐清单": "O saldo desta conta é lido pelo canal de limite de janela (só há uma API Key do plano de codificação): só a porcentagem restante de cada janela de N horas, sem a lista de planos", "这会{what}所有启用中的账号,转发将不可用。确定继续?": "Isto vai {what} todas as contas ativadas e o encaminhamento ficará indisponível. Confirmar?", "这是既有配置(直接引用 Clash 出口,不经过代理池)。推荐改用上面的": "Esta é uma configuração existente (referencia a saída do Clash diretamente, sem passar pelo pool de proxies). Recomendamos usar o item acima ", "这条自定义账号既没有 API Key,也没有勾选「无需鉴权」:转发时会被跳过,该提供商下的模型也不会出现在模型列表里。去账号「设置」里补上 Key,或勾选「该上游无需鉴权」": "Esta conta personalizada não tem API Key nem a opção 「Sem autenticação」 marcada: será ignorada no encaminhamento e os modelos deste provedor não aparecerão na lista de modelos. Preencha a Key em 「Configurações」 da conta ou marque 「Este upstream não exige autenticação」", "这条账号是谁、排第几、能不能接请求。": "Quem é esta conta, em que posição está e se pode receber requisições.", "这条账号访问上游走哪条线路。": "Por qual rota esta conta acessa o upstream.", "这里只影响「显示」:卸载或停用插件不会删除账号;重新安装、启用并成功加载后,这些账号会自动回到列表。": "Isso afeta apenas a exibição: desinstalar ou desativar um plugin nunca apaga contas. Reinstale, ative e carregue o plugin e elas voltam automaticamente.", "连接失败": "Falha na conexão", "连接数": "Número de conexões", "追加规则(保留原有)": "Adicionar regras (manter existentes)", "追加限制规则": "Adicionar regras de limite", "选中多个模型时,每个模型单独累计、单独比较阈值;不合并用量。": "Ao selecionar vários modelos, o consumo é acumulado e comparado com o limite de cada modelo separadamente, sem somar os consumos.", "选择": "Selecionar", "选择所选账号作为模板(可选)": "Usar uma conta selecionada como modelo (opcional)", "选择要轮询的代理(可多选)": "Selecione os proxies para rotacionar (múltiplos)", "逐个刷新所选账号的 Token,未到期也会尝试刷新;不改变启用状态、代理或转发顺序。": "Renova os Tokens das contas selecionadas uma por vez, mesmo antes de expirarem. Mantém o estado de ativação, os proxies e a ordem de encaminhamento.", "逐窗口最低:{list}": "Menor por janela: {list}", "逐请求轮换出口(换 IP):OpenCode Zen 免费档按 IP 限流,单个 IP 的额度用完会对它一律 429": "Troca a saída a cada requisição (mudando o IP): o nível gratuito do OpenCode Zen limita por IP — quando a cota de um IP acaba, as requisições vindas dele recebem 429", "通用额度/本地保护": "Cota geral / proteção local", "邮箱 {email}": "E-mail {email}", "部分余额信息暂未获取;未显示上游原始诊断": "Parte das informações de saldo está indisponível; diagnósticos brutos do upstream não são exibidos", "部分来源查询失败,已保留其他结果:{message}": "Não foi possível consultar algumas fontes; os outros resultados foram mantidos: {message}", "部分来源查询失败,暂不能确认本期活动或领取状态": "Não foi possível consultar algumas fontes, então os eventos atuais ou o status de resgate ainda não podem ser confirmados.", "部分窗口偏低": "Algumas cotas estão baixas", "部分窗口未返回可识别读数": "Algumas janelas não retornaram leituras reconhecíveis", "部分读数未知": "Algumas leituras são desconhecidas", "部分额度读数暂不可用。": "Algumas leituras de cota estão temporariamente indisponíveis.", "配置已变更,请重新查询": "Configurações alteradas. Consulte novamente.", "重新安装这个插件后自动回来": "Reinstale este plugin e elas voltam automaticamente", "重新读取": "Ler novamente", "重新读取该账号的余额与套餐(走余额查询那条链)": "Reler o saldo e os planos desta conta (passa pela cadeia de consulta de saldo)", "重新读取账号列表和插件状态,不刷新 Token 或查询余额": "Reler a lista de contas e o estado dos plugins, sem renovar tokens nem consultar saldos", "重查": "Repetir", "重置": "Redefinir", "重置 {date}": "Redefine em {date}", "重置也不恢复,需手动启用": "A redefinição não a recupera; é preciso ativar manualmente", "重置周期必须是 30 分钟 ~ 24 小时": "O período de redefinição deve ser de 30 minutos ~ 24 horas", "重置方式": "Modo de redefinição", "重置时区": "Fuso horário da redefinição", "重置详情": "Detalhes da renovação", "长期有效": "Longa duração", "间隔单位": "Unidade do intervalo", "阈值": "Limite", "降低优先级": "Diminuir prioridade", "限制器": "Limitador", "限制器 · {n} 个模型": "Limitador · {n} modelos", "限制器 · 账号已跳过": "Limitador · Conta ignorada", "限制器:{window}已用 {used} / {threshold} Token": "Limitador: {window} — usado {used} / {threshold} Token", "限制指标": "Métrica do limite", "限制类型": "Tipo de limite", "限制阈值必须是大于 0 的数字": "O valor limite deve ser um número maior que 0", "限制阈值必须是非负有限数字": "O limite deve ser um número finito não negativo", "限流": "Rate limit", "限流中": "Com rate limit", "限流已清除": "Limite removido", "限额": "Limite", "限额状态": "Status do limite", "隐藏账号名(名字显示为星号)": "Ocultar nome da conta (o nome aparece com asteriscos)", "需要人机验证时,在该账号的「套餐明细」中主动开始验证。": "Quando a verificação humana for necessária, inicie-a manualmente nos detalhes do plano desta conta.", "需要重新登录": "Login necessário", "需要验证码时由打开着的主窗口或浏览器面板补铸;库存、补铸状态和失败原因分别显示": "Quando a verificação é necessária, a janela principal ou o painel do navegador aberto gera tokens; estoque, estado de geração e erros são exibidos separadamente", "需重登": "Reentrar", "顺序": "Ordem", "顺序未保存:{message}": "Ordem não salva: {message}", "领取 {time}": "Recebido {time}", "额度": "Cota", "额度充足": "Cota disponível", "额度来源": "Fonte da cota", "额度查询暂不可用。": "Consultas de cota estão temporariamente indisponíveis.", "额度查询未完成,未显示上游原始诊断。": "A consulta de cota não foi concluída. Diagnósticos brutos do upstream não são exibidos.", "额度窗口读数来自开放平台监控通道(套餐 JWT 那条通道没有额度桶):读的是每 N 小时 / 每周窗口的剩余比例": "A leitura da janela de cota vem do canal de monitoramento da plataforma aberta (o canal do JWT do Coding Plan não tem balde de cota): ela lê a porcentagem restante de cada janela de N horas / semanal", "额度详情": "Detalhes da cota", "首次失败后额外重试的次数;默认 3 次,0 = 不重试。手动和自动查询均生效,全部失败后才显示失败并记录日志。": "Tentativas adicionais após a primeira falha; o padrão é 3 e 0 desativa as novas tentativas. Vale para consultas manuais e automáticas. A falha só é exibida e registrada no log se todas as tentativas falharem.", "验证失败:{error}": "Falha na verificação: {error}", "验证码令牌池接口不可用": "Interface do pool de tokens de CAPTCHA indisponível", "验证码令牌:{counts}": "Tokens de captcha: {counts}", "高级请求": "Requisições premium", "魔粒": "Magicubes", "默认仅开启最快到期优先;可用余额和账号添加时间默认关闭。": "Por padrão, só a prioridade por vencimento mais próximo está ativada. Saldo disponível e data de adição da conta ficam desativados.", "默认保持手动顺序,可按需开启支持的自动排序规则。": "A ordem manual é o padrão. Ative as regras automáticas compatíveis conforme necessário.", "默认展开 / 收起": "Expandido / recolhido por padrão", "({n} 个未配置查询凭证)": " ({n} sem credencial de consulta)", "(不可用)": " (indisponível)", "(其他订阅,可能未生效)": " (outras assinaturas, podem não estar ativas)", "(只测了前 {limit} 个,还有 {rest} 个未测)": " (somente as primeiras {limit} foram testadas; {rest} ainda não)", "(名下 {count} 个账号共用)": " (compartilhado por {count} contas). ", "(已在 Clash 中禁用)": " (desativado no Clash)", "(库存为空,等待补铸;请保持主窗口或浏览器面板打开)": " (estoque vazio, aguardando reposição; mantenha a janela principal ou o painel do navegador aberto)", "(未启用套餐池账号,暂不补铸)": " (nenhuma conta Start Plan ativa; geração pausada)", "(激活事件补报失败,可能影响领取资格:{message})": "(Falha ao reportar o evento de ativação; isso pode afetar a elegibilidade: {message})", "+ 添加条件": "+ Adicionar condição", "+ 添加限制": "+ Adicionar limite", ",{countdown}重置": ", {countdown} até a redefinição", ",只对 OpenCode Zen 这类上游有意义,别的家请关掉。": ", o que só faz sentido para upstreams como o OpenCode Zen; desligue esta opção para os outros.", ",已达到上限": ", limite atingido", ":到「网络代理」页的「订阅管理」里点「同步 Clash Verge」把出口导进池后即可选 —— 那样能集中测试、也能被多个账号共用。": ": acesse a página 「Proxy de rede」, abra 「Gerenciar assinaturas」 e clique em 「Sincronizar Clash Verge」 para importar as saídas para o pool; assim elas poderão ser selecionadas — desse jeito é possível testar de forma centralizada e compartilhar entre várias contas.", ";": "; ", "{count} 个分区有未保存的更改": "Alterações não salvas em {count} seções", "{count} 个账号共用": "Compartilhado por {count} contas", "{count} 个账号共用提供商的连接配置。": "{count} contas compartilham as configurações de conexão deste provedor.", "{count} 个账号共用连接配置": "Configurações de conexão compartilhadas por {count} contas", "✅ 已改回跟随提供商的 Base URL": "✅ Esta conta voltou a seguir a Base URL do provedor", "「{name}」名下 {count} 个账号共用这些连接设置。修改协议或 Base URL 可能中断正在进行的请求。": "Estas configurações de conexão são compartilhadas por {count} contas de {name}. Alterar o protocolo ou a Base URL pode interromper solicitações em andamento.", "「{name}」名下 {count} 个账号共用;修改协议或地址可能中断正在进行的请求。": "Compartilhado por {count} contas de {name}. Alterar o protocolo ou o endereço pode interromper solicitações em andamento.", "仅当前账号": "Somente esta conta", "仅用于 OpenCode Zen 这类上游,普通提供商请保持关闭。": "Apenas para serviços upstream como OpenCode Zen. Mantenha desativado para outros provedores.", "代理只作用于当前账号,不改变其他账号的出网方式。": "O proxy se aplica somente a esta conta e não altera a conexão das outras contas.", "余额读数也是限制器余额规则的数据来源。": "As leituras de saldo também fornecem os dados usados pelas regras de limite baseadas em saldo.", "使用密钥访问上游": "Usar uma chave para acessar o upstream", "保存后将移除密钥,转发与拉取模型都不发送鉴权头。请确认上游确实无需凭证。": "Salvar remove a chave e omite os cabeçalhos de autenticação ao encaminhar solicitações ou buscar modelos. Confirme que o upstream não exige credenciais.", "保存提供商共用配置?": "Salvar as configurações compartilhadas do provedor?", "保存更改": "Salvar alterações", "共用": "Compartilhado", "关闭后不参与转发,余额查询不受影响。": "Quando desativada, a conta não participa do encaminhamento. As consultas de saldo não são afetadas.", "凭证设置": "Credenciais", "出网方式": "Método de conexão", "前往模型管理": "Ir para o gerenciamento de modelos", "前往模型管理会关闭账号设置,尚未保存的修改不会生效。": "Ir para o gerenciamento de modelos fecha as configurações da conta e descarta as alterações não salvas.", "包含提供商共用配置,将影响 {count} 个账号": "Inclui configurações compartilhadas que afetam {count} contas", "原密钥不会回显;更换密钥不会改变账号 ID。": "A chave existente nunca é exibida. Substituí-la não altera o ID da conta.", "各分区的更改将统一保存": "As alterações de todas as seções são salvas juntas", "启用账号": "Ativar conta", "在账号列表中拖动分组或行首把手,调整转发顺序。": "Arraste um grupo ou a alça da linha na lista de contas para alterar a ordem de encaminhamento.", "基本信息": "Informações básicas", "填写接口基址,无需追加 {path}。": "Informe a URL base da API sem acrescentar {path}.", "将同时删除名下 {count} 个账号,无法恢复。": "Também exclui todas as {count} contas deste provedor. Não é possível desfazer.", "开启后会改写请求体,补齐会话头与占位工具;未填密钥时使用匿名凭证 public。": "Quando ativado, reescreve o corpo da solicitação para adicionar cabeçalhos de sessão e ferramentas de preenchimento. Sem uma chave, usa a credencial anônima public.", "当前没有凭证,转发时会跳过此账号。请填写密钥或选择「无需鉴权」。": "Esta conta não tem credenciais e será ignorada no encaminhamento. Informe uma chave ou selecione Sem autenticação.", "当前账号": "Conta atual", "所有分区中尚未保存的修改都会被放弃。已确认的独立清除操作不受影响。": "As alterações não salvas de todas as seções serão descartadas. Operações de limpeza independentes já confirmadas não serão afetadas.", "提供商名称": "Nome do provedor", "改回跟随": "Seguir provedor", "改回跟随提供商": "Seguir provedor", "改回跟随提供商?": "Voltar a seguir o provedor?", "新密钥待保存": "Nova chave aguardando salvamento", "无需鉴权": "Sem autenticação", "显示新输入的密钥": "Mostrar a chave recém-inserida", "本地服务或无需凭证的上游": "Serviços locais ou upstream sem credenciais", "查询凭证": "Credenciais de consulta", "模型清单与映射在「模型管理」中维护。": "Gerencie as listas e os mapeamentos de modelos no Gerenciamento de modelos.", "模拟 OpenCode 官方客户端": "Emular o cliente oficial do OpenCode", "正在保存…": "Salvando…", "正在编辑提供商共用配置": "Editando configurações compartilhadas do provedor", "没有未保存的更改": "Nenhuma alteração não salva", "没有规则或全部停用时不限制;跳过后自动恢复,禁用后需手动启用。": "Não há limites se não houver regras ou se todas estiverem desativadas. Contas ignoradas se recuperam automaticamente; contas desativadas precisam ser reativadas manualmente.", "清除余额查询凭证?": "Limpar as credenciais de consulta de saldo?", "清除已存 API Key?": "Limpar a API Key salva?", "清除已存密钥": "Limpar chave salva", "清除查询凭证?": "Limpar as credenciais de consulta?", "用于当前账号的对话、余额查询、模型拉取、模型测试、签到及凭证刷新等上游请求。留空使用提供商默认值;可选预置或直接填写。": "Aplica-se às solicitações upstream desta conta, incluindo conversas, consultas de saldo, busca e teste de modelos, check-ins e renovação de credenciais. Deixe em branco para usar os padrões do provedor; escolha uma predefinição ou digite um valor.", "用明确的规则保护当前账号的额度。": "Proteja a cota desta conta com regras explícitas.", "留空不修改,替换后点击「保存更改」生效。": "Deixe em branco para manter a chave. Uma substituição entra em vigor após clicar em Salvar alterações.", "留空保留当前密钥,输入新密钥以替换": "Deixe em branco para manter a chave ou informe uma substituta", "确认保存": "Confirmar salvamento", "确认后立即生效,不受底部保存按钮控制。没有凭证且未开启「无需鉴权」时,此账号将被转发跳过。": "Entra em vigor imediatamente após a confirmação, independentemente do botão Salvar. Sem credenciais e sem Sem autenticação, esta conta será ignorada no encaminhamento.", "确认后立即生效,不受底部保存按钮控制。通常可继续复用转发用的登录凭证。": "Entra em vigor imediatamente após a confirmação, independentemente do botão Salvar. Normalmente, as credenciais de login usadas para encaminhamento podem continuar sendo reutilizadas.", "确认后立即生效,余额查询可能显示「未配置」。取消账号设置不会恢复已清除的凭证。": "Entra em vigor imediatamente após a confirmação. As consultas de saldo podem mostrar Não configurado. Cancelar as configurações da conta não restaura credenciais apagadas.", "确认弹窗不可用,请重新打开页面": "A caixa de confirmação está indisponível. Reabra a página.", "管理当前账号的凭证与可用套餐。": "Gerencie as credenciais e os planos disponíveis desta conta.", "统一管理提供商的协议、地址与兼容选项。": "Gerencie o protocolo, o endereço e as opções de compatibilidade do provedor em um só lugar.", "自定义 API": "API personalizada", "要修改连接地址或协议?": "Precisa alterar o endereço ou o protocolo de conexão?", "设置当前账号访问上游的出网方式。": "Escolha como esta conta se conecta ao serviço upstream.", "设置账号名称、启用状态与转发行为。": "Defina o nome, o estado de ativação e o comportamento de encaminhamento da conta.", "请填写有效的 HTTP 或 HTTPS 地址": "Informe uma URL HTTP ou HTTPS válida", "请求标识": "Identidade da requisição", "请求端点": "Endpoint da solicitação", "账号凭证": "Credenciais da conta", "转发行为": "Comportamento de encaminhamento", "达到上限后,将请求交给其他账号。": "Ao atingir o limite, as solicitações são passadas para outras contas.", "这个账号单独存了一份地址:{url},转发时优先用它。上面改的是提供商共用地址,不会覆盖它。": "Esta conta guarda um endereço próprio ({url}), que tem prioridade no encaminhamento. Alterar o endereço compartilhado do provedor acima não substitui esse valor.", "这个账号将改用提供商当前保存的 Base URL:{url}。确认后立即生效,不受底部保存按钮控制。": "Esta conta passará a usar a Base URL atualmente salva no provedor: {url}. Vale imediatamente e não depende do botão Salvar abaixo.", "连接参数": "Parâmetros de conexão", "连接设置": "Configurações de conexão", "配置余额查询凭证、自动刷新间隔与失败重试。": "Configure as credenciais de consulta de saldo, o intervalo de atualização automática e as novas tentativas após falhas.", "鉴权方式": "Método de autenticação", "隐藏新输入的密钥": "Ocultar a chave recém-inserida", "高级兼容": "Compatibilidade avançada", "默认关闭": "Desativado por padrão", " · 模型 {head}{rest}": " · Modelos: {head}{rest}", " 等 {n} 个": " ({n} no total)", "1// 开头的 Google refresh token(也可直接粘贴 refresh_token=… 整行)": "Google refresh token começando com 1// (também pode colar a linha refresh_token=… inteira)", "11 位大陆手机号": "Celular da China continental (11 dígitos)", "1~64 个字符,账号列表里按它分组显示": "1 a 64 caracteres; na lista de contas, as contas são agrupadas por ele", "6 位数字": "6 dígitos", "
  • 没有可自动领的活动
  • ": "
  • Nenhuma campanha pode ser resgatada automaticamente
  • ", "

    领到的是套餐赠送积分,不会增加福利模型的 token 池;": "

    O que você recebe são pontos de brinde do plano, que não aumentam o pool de tokens dos modelos de benefício; ", "ACP 代理配置无效,请重新选择代理。": "A configuração de proxy do ACP é inválida. Selecione o proxy novamente.", "ACP 会话失败时不自动重发,也不切换到其他接入方式。": "Uma sessão ACP com falha não é reenviada automaticamente nem alternada para outro método de conexão.", "ACP 使用网关电脑上的官方 agy CLI,不是当前手机或浏览器所在设备。请先安装 agy 1.5.0 或更新版本:https://antigravity.google/docs/cli。程序不在默认位置时,可在网关启动环境设置 AGY_PATH。": "O ACP usa a CLI oficial agy no computador do gateway, não no celular ou dispositivo deste navegador. Instale primeiro o agy 1.5.0 ou posterior: https://antigravity.google/docs/cli. Se estiver em outro local, defina AGY_PATH no ambiente de inicialização do gateway.", "ACP 尚未返回可用的会话模型目录,请检查官方 CLI 登录状态后重试。": "O ACP ainda não retornou um catálogo de modelos de sessão utilizável. Verifique o login na CLI oficial e tente novamente.", "ACP 的本机进程仍使用原来的代理。请先在插件页停用再启用 ACP 插件,再使用新的代理。": "Os processos locais do ACP ainda usam o proxy anterior. Desative e reative o plugin ACP na página de plugins antes de usar outro proxy.", "API Key + 控制台令牌(模型调用 + 墨点额度)": "API Key + token do console (modelos + saldo de créditos de tinta)", "API 凭证添加暂不能解析代理池引用;请使用自定义代理地址,添加后再在账号设置中调整。": "A adição de credenciais de API ainda não resolve referências ao pool de proxies. Use um endereço de proxy personalizado e ajuste nas configurações da conta após adicioná-la.", "API 模板": "Modelos de API", "AWS Builder ID(直接授权,减少一次回填)": "AWS Builder ID (autorização direta, um callback a menos)", "AWS 地区(账号目录所在地区)": "Região AWS (onde o diretório da conta está hospedado)", "AiHubMix 的 OpenAI 兼容端点,使用 AiHubMix 的 API Key;模型 ID 以平台清单为准": "Endpoint do AiHubMix compatível com OpenAI; use uma API Key do AiHubMix e os IDs de modelo da lista da plataforma", "Anthropic 兼容端点在 https://api.deepseek.com/anthropic(协议换 anthropic 时填它)": "O endpoint compatível com Anthropic é https://api.deepseek.com/anthropic (preencha-o ao trocar o protocolo para anthropic)", "Anthropic 协议填根地址,不要带 /v1": "No protocolo Anthropic, preencha o endereço raiz, sem /v1", "Antigravity": "Antigravity", "Antigravity 账号的添加方式": "Método de adição da conta Antigravity", "AtomCode": "AtomCode", "AutoClaw 国内版": "AutoClaw edição da China", "AutoClaw 国际版": "AutoClaw edição internacional", "BDUSS 必填;请粘贴**完整 Cookie**(Cookie 编辑器一键导出即可)—— 其中 **PTOKEN 必须保留**,网关要用它向百度换发 KukuAI 业务会话令牌,缺了它模型刷新会报「未登录」。支持整段 Cookie 头、Cookie 编辑器导出的 JSON 数组,或 {BDUSS, STOKEN} 对象。KukuAI 没有刷新机制,登录态过期后重新粘贴即可。": "BDUSS é obrigatório; cole o **Cookie completo** (um editor de Cookie exporta com um clique) — o **PTOKEN deve ser mantido**, pois o gateway o usa para trocar com o Baidu por um token de sessão de negócio do KukuAI; sem ele, a atualização de modelos reporta \"não conectado\". São aceitos o cabeçalho Cookie inteiro, um array JSON exportado por um editor de Cookie, ou um objeto {BDUSS, STOKEN}. O KukuAI não tem mecanismo de atualização; quando a sessão de login expirar, basta colar de novo.", "BDUSS=…; STOKEN=…(或 Cookie 编辑器导出的 JSON)": "BDUSS=…; STOKEN=… (ou o JSON exportado por um editor de Cookie)", "CatPaw 的 X-Passport-Token(登录态 Cookie)": "X-Passport-Token do CatPaw (Cookie da sessão de login)", "ChatGPT / Codex": "ChatGPT / Codex", "ChatGPT API": "ChatGPT API", "ChatGPT API 订阅": "Assinatura ChatGPT API", "Claude Code 本机订阅": "Assinatura local do Claude Code", "Claude 订阅": "Assinatura Claude", "Cline Pass 的 API Key 在 app.cline.bot 获取(订阅制);端点为 OpenAI 兼容,模型清单以 Cline 控制台为准,模型名在模型管理里按裸名添加(如 glm-5.2 / kimi-k2.7-code / deepseek-v4-pro);上游按客户端形态校验,所需的客户端请求头已随卡预置": "Obtenha a API Key do Cline Pass em app.cline.bot (por assinatura); o endpoint é compatível com OpenAI, o catálogo de modelos segue o console da Cline e os nomes dos modelos são adicionados no gerenciamento de modelos como nomes simples, sem prefixo (ex.: glm-5.2 / kimi-k2.7-code / deepseek-v4-pro); o upstream valida o formato do cliente, e os cabeçalhos de requisição do cliente necessários já vêm predefinidos neste cartão", "Cloud project 必填;不会借用其他 Google 提供商的凭证或额度。": "Cloud project é obrigatório. Não usa credenciais nem cotas de outros provedores Google.", "Cloud-IDE-JWT(三段点分)": "Cloud-IDE-JWT (três segmentos separados por ponto)", "Cloudflare Account ID(32 位十六进制)": "ID da conta Cloudflare (32 caracteres hexadecimais)", "Codex 订阅": "Assinatura Codex", "Command Code": "Command Code", "Cursor dashboard API key;loader 按需重新 exchange 模型 token,不提供手动令牌刷新。": "API key do dashboard Cursor. O loader troca tokens de modelo sob demanda; não há atualização manual de token.", "DeepSeek 网页": "DeepSeek Web", "Gemini CLI / Code Assist": "Gemini CLI / Code Assist", "Gemini CLI 凭证文件绝对路径(只读,不复制或写回 refresh token)": "Caminho absoluto do arquivo de credenciais Gemini CLI (somente leitura; sem copiar ou gravar refresh tokens)", "GitHub Copilot": "GitHub Copilot", "GitHub 官方设备码登录": "Login oficial GitHub por código de dispositivo", "GitHub 登录域名(留空使用 github.com)": "Domínio de login GitHub (vazio usa github.com)", "Google Cloud Project ID(必填,Standard / Enterprise 资格由上游判定)": "Google Cloud Project ID (obrigatório; elegibilidade Standard / Enterprise definida pelo upstream)", "Google Cloud Project ID(必填,Standard / Enterprise 资格由上游判定);默认候选来自 {variable},请明确确认": "Google Cloud Project ID (obrigatório; elegibilidade Standard / Enterprise definida pelo upstream). O valor sugerido vem de {variable}; confirme-o explicitamente.", "Google OAuth(Code Assist + Cloud project)": "Google OAuth (Code Assist + Cloud project)", "Google 授权(ACP)": "Login com Google (ACP)", "Groq 的 OpenAI 兼容端点,使用 GroqCloud 的 API Key": "Endpoint da Groq compatível com OpenAI; use uma API Key do GroqCloud", "IAM Identity Center(企业账号,直接授权)": "IAM Identity Center (conta da organização, autorização direta)", "JWT(三段点分;也可直接粘贴 Bearer 整行或 data.bin 内容)": "JWT (três partes separadas por pontos; também pode colar a linha Bearer inteira ou o conteúdo do data.bin)", "JWT(三段点分;也可直接粘贴 chatglm_token=… 整行)": "JWT (três partes separadas por ponto; colar a linha chatglm_token=… inteira também funciona)", "Kimi / Moonshot 国内版": "Kimi / Moonshot (China)", "Kimi / Moonshot 国内站 API Key,使用 moonshot.cn 按量接口;不是 Kimi Code 会员入口": "Use uma API Key do Kimi / Moonshot China no endpoint por uso em moonshot.cn; este não é o endpoint da assinatura Kimi Code", "Kimi / Moonshot 国际版": "Kimi / Moonshot (Internacional)", "Kimi / Moonshot 国际站 API Key,使用 moonshot.ai 按量接口;不是 Kimi Code 会员入口": "Use uma API Key do Kimi / Moonshot Internacional no endpoint por uso em moonshot.ai; este não é o endpoint da assinatura Kimi Code", "Kiro API key(ksk_…)。": "API key Kiro (ksk_…).", "Kiro 登录页(Google / GitHub 等)": "Página de login do Kiro (Google / GitHub e outros)", "Kiro 网页登录": "Login web do Kiro", "LM Studio(本地)": "LM Studio (Local)", "LobsterAI": "LobsterAI", "LongCat 的 OpenAI 兼容端点,使用 LongCat 平台的 API Key": "Endpoint do LongCat compatível com OpenAI; use uma API Key da plataforma LongCat", "MClaw 由插件在网关电脑上启动专用 Chrome 窗口,独立登录环境也用于自动续期,不使用系统默认浏览器或应用内嵌窗口。": "O plugin do MClaw abre uma janela dedicada do Chrome no computador do gateway. O perfil isolado de login também é usado na renovação automática; não usa o navegador padrão do sistema nem a janela integrada do aplicativo.", "MiniMax Code 国内版": "MiniMax Code (China)", "MiniMax Code 国际版": "MiniMax Code (Global)", "Mistral 的 OpenAI 兼容端点,使用 Mistral 控制台的 API Key": "Endpoint da Mistral compatível com OpenAI; use uma API Key do console da Mistral", "ModelScope 国内版": "ModelScope (China)", "ModelScope 国际版": "ModelScope (Internacional)", "MonkeyCode": "MonkeyCode", "MonkeyCode 国际版": "MonkeyCode edição internacional", "MonkeyCode 自动网页登录仅限桌面端;浏览器面板请登录对应官网后粘贴 session。": "O login web automático do MonkeyCode exige o aplicativo desktop. No painel do navegador, entre no site oficial correspondente e cole a session.", "NVIDIA NIM 托管端点,Key 在 integrate.api.nvidia.com 申请": "Endpoint gerenciado do NVIDIA NIM; solicite a Key em integrate.api.nvidia.com", "Nous Portal 的按量 API,使用 Portal 的 API Key;不是旧的订阅登录方式": "API por uso do Nous Portal; use uma API Key do Portal, não o antigo método de login por assinatura", "OfficeAce 果办": "OfficeAce", "QuWork 凭证": "Credenciais QuWork", "QuWork 原设备标识": "Identidade original do dispositivo QuWork", "QwenWork 千问办公": "QwenWork (Público)", "QwenWork 千问办公企业版": "QwenWork (Empresarial)", "StepFun 国内版(按量)": "StepFun (China, por uso)", "StepFun 国内站按量 API;请使用按量 API Key,不要填 Step Plan 套餐 Key": "API por uso do StepFun China; use uma API Key por uso, não uma Key de assinatura Step Plan", "StepFun 国际版(按量)": "StepFun (Internacional, por uso)", "StepFun 国际站按量 API;请使用按量 API Key,不要填 Step Plan 套餐 Key": "API por uso do StepFun Internacional; use uma API Key por uso, não uma Key de assinatura Step Plan", "Tabbit 国内版": "Tabbit (China)", "Tabbit 国际版": "Tabbit (Internacional)", "TokenPlan API Key(控制台 → 科研模型 → API Key)": "API Key do TokenPlan (console → Modelos de pesquisa → API Key)", "User-Agent(可选)": "User-Agent (opcional)", "accessToken 是 Accio 的登录凭证(一长串不透明 token,不是 JWT);refreshToken 可选,填了之后到期能自动续期。请填写 {label}账号的凭证 —— {siteNote}(最容易拿到的办法:直接用上方的「网页登录」,不需要手工找 token。)": "accessToken é a credencial de login do Accio (um token opaco bem longo, não é JWT); refreshToken é opcional e, se preenchido, permite renovação automática ao expirar. Preencha a credencial da conta {label} — {siteNote} (a forma mais fácil de obter: use o \"Login web\" acima; não é preciso procurar o token manualmente.)", "accessToken 是 Trae 的 Cloud-IDE-JWT(三段点分),refreshToken 用于到期自动续期(本家 refreshToken 一次一换:换发一次旧的即作废,所以两份程序别同时刷同一个账号)。
    手工粘贴时请连 machineId / deviceId 一起填:上游把它们与登录时上传的设备公钥绑在一起判设备,凭空换一对会撞 2xxxx 那族设备绑定拒绝。
    没有这三样时的正路是用上方的「网页登录」;容器 / 远程部署形态按提示粘贴地址栏回调地址即可。": "accessToken é o Cloud-IDE-JWT do Trae (três segmentos separados por ponto) e o refreshToken serve para renovação automática ao expirar (este provedor troca o refreshToken a cada uso: assim que é trocado, o antigo é invalidado, então não atualize a mesma conta em dois programas ao mesmo tempo).
    Ao colar manualmente, preencha também machineId / deviceId: o upstream os vincula à chave pública do dispositivo enviada no login para identificar o dispositivo, e inventar um novo par dispara a família de rejeições de vínculo de dispositivo 2xxxx.
    Sem esses três itens, o caminho correto é o \"Login web\" acima; em contêiner / implantação remota, basta colar o endereço de callback da barra de endereços conforme as instruções.", "chat.deepseek.com 的 userToken.value,不是收费 API Key": "userToken.value de chat.deepseek.com, não uma chave de API paga", "github-copilot/apps.json 或 opencode/auth.json": "github-copilot/apps.json ou opencode/auth.json", "github.com 或 company.ghe.com": "github.com ou company.ghe.com", "github.com:Iv1.b507a08c87ecfe98 或 github-copilot": "github.com:Iv1.b507a08c87ecfe98 ou github-copilot", "monkeycode_ai_session 的值(也可直接粘贴整段 Cookie)": "O valor de monkeycode_ai_session (também pode colar o Cookie inteiro)", "ms- 开头的 API 令牌": "Token de API começando com ms-", "project 必填;只读引用文件,模块的 OAuth 续期不写回客户端。": "Project é obrigatório. Arquivos são referenciados somente em leitura; a renovação OAuth do módulo não grava no cliente.", "refreshToken 可选,填了到期可自动续期;两者都能从小浣熊客户端登录态文件里取到。": "refreshToken é opcional e, se preenchido, permite renovação automática ao expirar; ambos podem ser obtidos do arquivo de sessão de login do cliente Raccoon.", "refreshToken 可选,填了可自动续期;两者都能从客户端登录态文件取到。同一个 Cline 账号两个池都能用,这里归入 {label}。": "refreshToken é opcional e, se preenchido, permite renovação automática; ambos podem ser obtidos do arquivo de sessão de login do cliente. A mesma conta Cline funciona nos dois pools; aqui ela entra em {label}.", "token 支持 enc: 前缀(Windows 上自动解密)。未填 refreshToken 无法自动续期。": "O token aceita o prefixo enc: (descriptografado automaticamente no Windows). Sem preencher o refreshToken, não é possível renovar automaticamente.", "token 是登录态 Cookie;CatPaw 没有刷新机制,过期后需在客户端重新登录。": "O token é o Cookie da sessão de login; o CatPaw não tem mecanismo de atualização, então faça login novamente no cliente após expirar.", "token=…; user_id=…(也可粘贴 Copy as cURL 整段)": "token=…; user_id=… (você também pode colar o Copy as cURL inteiro)", "user_ 开头的 API Key(也可直接粘贴 Authorization: Bearer … 整行)": "API Key começando com user_ (também pode colar a linha Authorization: Bearer … inteira)", "xAI 的 OpenAI 兼容端点,使用 xAI 控制台的 API Key;不是 Grok 网页订阅": "Endpoint da xAI compatível com OpenAI; use uma API Key do console da xAI, não uma assinatura web do Grok", "your-company.vpc.qwenwork.cn 或 https://your-company.vpc.qwenwork.cn": "your-company.vpc.qwenwork.cn ou https://your-company.vpc.qwenwork.cn", "{label} 网页登录的打开方式": "Como abrir o login web de {label}", "{label} 账号地区": "Região da conta {label}", "{label} 账号的添加方式": "Como adicionar uma conta {label}", "{label}账号已添加": "Conta {label} adicionada", "{label}(只读本机)": "{label} (referência local somente leitura)", "{message}:请在打开的页面完成滑块,完成后回到这里点「已完成验证,继续发送」": "{message}: conclua o slider na página que foi aberta e, em seguida, volte aqui e clique em \"Verificação concluída, enviar novamente\"", "{message}:请手动打开验证页面 {url},完成后回到这里点「已完成验证,继续发送」": "{message}: abra manualmente a página de verificação {url} e, após concluir, volte aqui e clique em \"Verificação concluída, enviar novamente\"", "{name} 不是合法 JSON:{reason}": "{name} não é um JSON válido: {reason}", "{name}要粘一个 JSON 对象(形如 {sample})": "{name}: cole um objeto JSON (no formato {sample})", "{n} 个账号": "{n} contas", "{n} 个账号,点击添加": "{n} contas, clique para adicionar", "{seconds}s 后重发": "Reenviar em {seconds}s", "✅ {label}账号已添加": "✅ Conta {label} adicionada", "✅ {label}账号已添加{name}": "✅ Conta {label} adicionada{name}", "✅ 已从 cc-switch 导入 {n} 个供应商": "✅ {n} provedores importados do cc-switch", "✅ 已创建自定义提供商「{name}」并添加账号": "✅ Provedor personalizado \"{name}\" criado e conta adicionada", "✅ 已删除自定义提供商「{name}」{accounts}{keys}": "✅ Provedor personalizado \"{name}\" excluído{accounts}{keys}", "✅ 已更新已有账号{name}(同一把 API Key 只保留一条,重复添加会合并)": "✅ Conta existente{name} atualizada (apenas uma conta por chave de API; adições repetidas são mescladas)", "✅ 已更新已有账号{name}(同一提供商内,同一把 API Key 只保留一条)": "✅ Conta existente atualizada{name} (uma conta por API Key dentro de cada provedor)", "✅ 登录成功,{edition}账号已加入列表": "✅ Login concluído; conta {edition} adicionada à lista", "✅ 领取成功:{planId}{period}": "✅ Resgate concluído: {planId}{period}", " 同一家可以放多把 key,按优先级轮换。": " Um mesmo provedor pode ter várias keys, rotacionadas por prioridade.", "「{name}」的账号添加功能还在开发中,敬请期待。": "A adição de contas para \"{name}\" ainda está em desenvolvimento; aguarde novidades.", "一个 Key 用遍多家模型,模型名用「厂商/模型」全称(如 deepseek/deepseek-chat)": "Uma única Key serve para vários fornecedores; use o nome completo \"fornecedor/modelo\" (ex.: deepseek/deepseek-chat)", "上游不要鉴权时留空,并勾选下面一项(留空又不勾会被当成未配置凭证)": "Deixe em branco quando o upstream não exigir autenticação e marque a opção abaixo (em branco e sem marcar é tratado como credencial não configurada)", "上游信息": "Informações do upstream", "上游没有给出验证页面地址": "O provedor não retornou o endereço da página de verificação", "上游要求人机验证,但没有给出验证页面地址,请稍后重试": "O provedor exige verificação humana, mas não retornou o endereço da página de verificação. Tente novamente mais tarde", "不使用预置": "Sem predefinição", "不可领({status})": "Não resgatável ({status})", "不授权": "Não autorizar", "不支持导入": "Importação não suportada", "不是有效的凭证文件:内容要是一个 JSON 对象": "Não é um arquivo de credenciais válido: o conteúdo deve ser um objeto JSON", "不是有效的凭证文件:需要包含 accessToken 与 uid": "Não é um arquivo de credenciais válido: accessToken e uid são obrigatórios", "不是自定义提供商": "Não é um provedor personalizado", "不需要 Key:转发与拉取模型都不发送鉴权头": "Não precisa de Key: nem o encaminhamento nem a busca de modelos enviam cabeçalhos de autenticação", "不需要登录:点下面的按钮,网关会直接在智谱清言换发一份访客凭证并加入账号列表(也可以先填个备注名)。访客凭证可以直接用来对话,免费额度由上游按设备发放。

    注意:访客账号没有积分体系 —— 它与「会员积分」「每日登录积分」「活动领取」相关的接口一律需要登录,因此那些能力对访客会如实跳过(账号页的积分、签到中心都不显示读数)。想要积分就用「填写凭证」粘一个已登录账号的令牌,或「导入桌面端登录态」。": "Não é preciso fazer login: clique no botão abaixo e o gateway vai obter uma credencial de visitante diretamente do Zhipu Qingyan e adicioná-la à lista de contas (você pode preencher um nome de observação antes). A credencial de visitante pode ser usada para conversar imediatamente; a cota gratuita é emitida pela origem por dispositivo.

    Atenção: uma conta de visitante não tem sistema de pontos — as interfaces de pontos de membro, pontos de login diário e resgate de atividades exigem login, então esses recursos são ignorados para visitantes (nenhuma leitura aparece na página de contas nem na central de check-in). Para obter pontos, use \"Preencher credenciais\" para colar o token de uma conta conectada, ou \"Importar estado de login do desktop\".", "两版账号可同时保存,各自一份模型清单(国内版与国际版是两家提供商,可分别启用与映射)。": "As contas das duas edições podem ser salvas ao mesmo tempo, cada uma com sua própria lista de modelos (as edições da China e internacional são dois provedores, que podem ser ativados e mapeados separadamente).", "中国版": "Edição da China", "也支持本软件导出的单账号 JSON 文件,保留账号凭证与附加信息。": "Arquivos JSON de contas individuais exportados por este aplicativo também são aceitos, preservando as credenciais e os dados adicionais da conta.", "仅 API Key(模型调用,不含墨点额度)": "Somente API Key (modelos, sem saldo de créditos de tinta)", "仅填写自己的 GitHub 令牌": "Informe apenas seu próprio token GitHub", "仅支持仍有有效 Gemini Code Assist Standard / Enterprise 资格并绑定 Cloud project 的账号。个人免费版及 Google AI Pro / Ultra 已于 2026-06-18 停止支持;Standard / Enterprise 新订阅已于 2026-10-09 停售。不会切换到其他 Google 产品或额度池。": "Só são aceitas contas com elegibilidade existente e válida do Gemini Code Assist Standard / Enterprise e um Cloud project vinculado. O suporte à camada gratuita individual e Google AI Pro / Ultra terminou em 2026-06-18; novas assinaturas Standard / Enterprise deixaram de ser vendidas em 2026-10-09. Não será usado outro produto Google nem pool de cota.", "仅读取本机 Claude Code 的当前订阅登录。若未登录,请先在自己的终端登录;本地凭证仍由 CLI 管理。": "Lê apenas o login atual da assinatura local Claude Code. Se estiver desconectado, entre primeiro no seu próprio terminal. A CLI continua gerenciando as credenciais locais.", "今天没有需要领的活动(都已到账)": "Hoje não há campanhas para resgatar (todas já creditadas)", "今天(北京时间 {day})已试 {attempts} 次,还能试 {left} 次{next}
    ": "Hoje (horário de Pequim, {day}) você já tentou {attempts} vezes; restam {left} tentativas{next}
    ", "从 Google 官方源下载并核验 SHA-512;下载使用网关默认出口。更新失败保留旧版,进行中的对话不受替换影响。": "Baixa da fonte oficial do Google pela conexão padrão do gateway e verifica o SHA-512. Se a atualização falhar, mantém a versão anterior sem interromper conversas em andamento.", "从别的机器(或 OfficeAce 桌面端 models.json)取三项贴进来:模型网关基址(baseUrl,形如 https://modelgw-…/v2)与 modelAppKey / modelAppSecret。这三项就能转发(网关凭据不过期);控制面临时凭据(accessKeyId 等)可选,留空则额度/自动续期不可用,但不影响转发。": "Pegue três itens de outra máquina (ou do models.json do aplicativo de desktop do OfficeAce) e cole aqui: o endereço base do gateway de modelos (baseUrl, no formato https://modelgw-…/v2) e modelAppKey / modelAppSecret. Esses três já bastam para encaminhar requisições (a credencial do gateway não expira); as credenciais temporárias do plano de controle (accessKeyId etc.) são opcionais — se ficarem em branco, a consulta de saldo e a renovação automática ficam indisponíveis, mas o encaminhamento não é afetado.", "从本机导入桌面端登录态": "Importar sessão de login do desktop desta máquina", "任务镜像 id": "id da imagem da tarefa", "余额查询": "Consulta de saldo", "你企业的千问办公旗舰版域名(企业管理后台地址栏的域名,如 your-company.vpc.qwenwork.cn)": "Domínio da edição flagship QwenWork Enterprise da sua empresa (o domínio na barra de endereço do painel administrativo, por exemplo, your-company.vpc.qwenwork.cn)", "使用 Google 账号登录": "Entrar com conta Google", "使用 Zai 账号登录": "Entrar com conta Zai", "使用 {name} 模板新建提供商": "Criar um provedor com o modelo {name}", "使用个人访问令牌(PAT)": "Usar token de acesso pessoal (PAT)", "使用本机 Claude Code 登录": "Usar login local do Claude Code", "使用本机 Kimi Work 登录": "Usar login local do Kimi Work", "使用模板新建提供商": "Criar um provedor com este modelo", "使用网页令牌,不是收费 API Key。": "Use um token da sessão web, não uma chave de API paga.", "使用自己的 GitHub 账号授权;模型条款须在官方客户端手动确认。": "Autorize com sua própria conta GitHub. Os termos dos modelos devem ser aceitos manualmente no cliente oficial.", "先在网关所在机器启动 LM Studio 服务;localhost 指向网关所在机器,远程或容器部署请改为网关可访问的地址。默认无需鉴权;启用认证后请取消「该上游无需鉴权」并填写真实 API Key": "Primeiro, inicie o servidor LM Studio na máquina que executa o gateway. localhost se refere à máquina do gateway; em implantações remotas ou em contêiner, use um endereço acessível pelo gateway. Por padrão, a autenticação está desativada; se você a ativar, desmarque \"Este upstream não exige autenticação\" e informe uma API Key real", "免费模型不用填 Key(默认勾上「该上游无需鉴权」,网关自动用匿名凭证);付费模型则填 Zen 的 API Key。免费档上游只认官方客户端形态,已默认开启「伪装 OpenCode 官方客户端」": "Modelos gratuitos não precisam de Key (a opção \"Este upstream não exige autenticação\" já vem marcada e o gateway usa credenciais anônimas automaticamente); para modelos pagos, preencha a API Key do Zen. O nível gratuito do upstream só aceita o formato do cliente oficial, e a opção \"Simular o cliente oficial do OpenCode\" já vem ativada", "关联用户指定的本地 Copilot 凭证(只读)": "Vincular credencial local Copilot escolhida pelo usuário (somente leitura)", "内嵌窗口": "Janela embutida", "内嵌窗口打开;关窗即取消等待(Google 账号被拒时改用系统浏览器)": "Abre na janela embutida; fechar a janela cancela a espera (se a conta Google for recusada, use o navegador do sistema)", "内嵌窗口打开;完成后自动加入列表,关窗即取消等待": "Abre na janela embutida; ao concluir, entra automaticamente na lista; fechar a janela cancela a espera", "内嵌窗口打开;扫码完成后自动加入列表,关窗即取消等待": "Abre em uma janela incorporada; a conta é adicionada automaticamente após o escaneamento — fechar a janela cancela a espera", "内嵌窗口用全新环境,多账号互不影响;关窗即取消等待": "A janela embutida usa um ambiente totalmente novo, então várias contas não interferem entre si; fechar a janela cancela a espera", "内嵌窗口登录": "Entrar na janela integrada", "内嵌窗口(推荐)": "Janela embutida (recomendado)", "准备验证…": "Preparando a verificação…", "凭据 JSON": "JSON da credencial", "凭证 JSON 或模型凭证": "JSON de credenciais ou credencial de modelo", "凭证仅发送至当前网关": "Credenciais enviadas apenas a este gateway", "凭证文件在哪?": "Onde fica o arquivo de credenciais?", "凭证文件类型": "Tipo do arquivo de credenciais", "创建并添加账号": "Criar e adicionar conta", "创建这个提供商,并同时建立它的第一个账号。": "Crie este provedor e, ao mesmo tempo, sua primeira conta.", "删除功能不可用(脚本未就绪)": "Exclusão indisponível (script não está pronto)", "删除失败:{reason}": "Falha ao excluir: {reason}", "删除此提供商": "Excluir este provedor", "千问办公 国内版": "QwenWork (China)", "千问办公 国际版": "QwenWork (Internacional)", "千问办公{label}暂时无法登录:上游只接受它自己的官方回调地址,不论证码到本机。": "Não é possível entrar no QwenWork {label} agora: o serviço upstream aceita apenas o próprio endereço de callback oficial, então o código de autorização não chega a este computador.", "原样提交本次流程的完整回调 URL。": "Envie a URL completa de callback deste fluxo sem alterações.", "去安装提供商插件包": "Instalar um pacote de plugin de provedor", "及 {n} 个账号": " e {n} contas", "发送中…": "Enviando…", "发送失败:{message}": "Falha ao enviar: {message}", "发送未确认:登录窗口已弹出,请在弹出的窗口中手动完成登录": "Envio não confirmado: a janela de login foi aberta; conclua o login manualmente nessa janela", "取消失败:{message}": "Falha ao cancelar: {message}", "取消安装": "Cancelar instalação", "取消等待": "Cancelar espera", "只使用此路线签发的 OAuth 凭证;direct SIWC 与 Codex 客户端身份不同。": "Usa apenas credenciais OAuth emitidas para esta rota. Direct SIWC e Codex têm identidades de cliente diferentes.", "只关联真实 CLI 2.1.259+ 的当前订阅;不代登录、不复制或续期客户端凭证。": "Vincula apenas a assinatura atual de uma CLI genuína 2.1.259+. Não realiza login por você nem copia ou renova credenciais do cliente.", "只拿到 JWT 时填这里;Cookie 里有 token 可留空": "Preencha apenas se tiver só o JWT; deixe vazio se o Cookie tiver token", "只有「内嵌窗口」能恢复第三方入口:系统浏览器里我们无法改动登录页": "Somente a \"Janela embutida\" pode restaurar os acessos de terceiros: no navegador do sistema não podemos alterar a página de login", "只看这一类": "Apenas esta categoria", "只读引用 Grok Build home/scope/account;每次读取当前登录态,不复制 token,不回退退出前快照,不主动续期;源有效期未知时不作长期有效承诺。": "Referencia Grok Build home/scope/account somente em leitura. Cada leitura usa o login atual, sem copiar tokens, voltar ao snapshot anterior ao logout ou renovar. Validade desconhecida da origem não garante credenciais de longa duração.", "只读引用本机 Kiro CLI/IDE;每次读取校验同一邮箱,不复制 token、不主动续期或回写,失效后由原客户端重登或同步。": "Referencia Kiro CLI/IDE local somente em leitura. Cada leitura verifica o mesmo e-mail sem copiar tokens, renovar ou gravar de volta. Após expirar, entre novamente ou sincronize no cliente original.", "只读所选标准文件与账号条目并验证 GitHub/Copilot 身份;只保存引用,不保存令牌副本,不扫描目录、读取 keychain 或运行 CLI。": "Lê apenas o arquivo padrão e a entrada de conta selecionados e verifica a identidade GitHub/Copilot. Salva somente a referência, sem copiar tokens, pesquisar diretórios, ler keychains ou executar a CLI.", "只读校验明确选择的本机凭证文件;仅保存引用与稳定身份,不复制或续期原客户端令牌。": "Valida somente o arquivo local de credenciais explicitamente selecionado, em modo de leitura. Salva a referência e uma identidade estável, sem copiar ou renovar os tokens do cliente original.", "只读用户明确指定的文件和账号条目,不自动扫描。": "Lê somente o arquivo e a entrada de conta explicitamente selecionados; não pesquisa automaticamente.", "只读验证所选 Gemini CLI 登录态和指定 project 的 Code Assist Standard / Enterprise 资格;不会启动 CLI、续期或复制令牌。": "Verifica, somente em leitura, o login Gemini CLI selecionado e a elegibilidade Code Assist Standard / Enterprise do project informado. Não inicia a CLI, renova ou copia tokens.", "只读验证本机 Claude Code 当前订阅登录;凭证仍由原 CLI 管理。": "Verifica o login atual da assinatura local Claude Code somente em leitura. A CLI original continua gerenciando as credenciais.", "只读验证本机 Kimi 桌面版已有的 Work 登录,不复制令牌;账号可能没有可用模型。": "Verifica o login Work existente no Kimi desktop local, somente em leitura e sem copiar tokens. A conta pode não ter modelos disponíveis.", "可选": "Opcional", "可选(cloudaicompanionProject):留空由网关自动发现": "Opcional (cloudaicompanionProject); se vazio, o gateway descobre automaticamente", "可选,仅远程兑换码激活需要;从官方客户端读取": "Opcional; necessária apenas para ativação remota de códigos. Leia-a no cliente oficial.", "可选,展示用": "Opcional, para exibição", "可选,没有则无法自动续期": "Opcional; sem ele, não é possível renovar automaticamente", "可选,用于生成账号标识": "Opcional; usado para gerar o identificador da conta", "可选,留空使用凭据里的 user_name": "Opcional; se vazio, usa o user_name da credencial", "可选,留空使用账号名或邮箱": "Opcional; se ficar em branco, o nome da conta ou o e-mail é usado", "可选,留空使用账号姓名、邮箱或令牌指纹": "Opcional; se vazio, usa o nome, o e-mail ou a impressão digital do token", "可选,留空使用账号昵称或邮箱": "Opcional; se vazio, usa o apelido ou o e-mail da conta", "可选,留空则用 key 尾号": "Opcional; se vazio, usa o final da key", "可选,留空则用 userId": "Opcional; se vazio, usa o userId", "可选,留空则用上游账号昵称": "Opcional; se vazio, usa o apelido da conta no upstream", "可选,留空则用上游返回的账号名或账号 id": "Opcional; se vazio, usa o nome ou o id da conta retornados pelo upstream", "可选,留空则用凭证里的账号名": "Opcional; se vazio, usa o nome da conta na credencial", "可选,留空则用文件里的昵称": "Opcional; deixe vazio para usar o apelido do arquivo", "可选,留空则用登录名或 uid": "Opcional; se vazio, usa o nome de login ou o uid", "可选,留空则用脱敏手机号": "Opcional; se vazio, usa o celular mascarado", "可选,留空则用脱敏手机号或 userId": "Opcional; se vazio, usa o celular mascarado ou o userId", "可选,留空则用账号 uk": "Opcional; se vazio, usa o uk da conta", "可选,留空则用账号昵称": "Opcional; em branco usa o apelido da conta", "可选,留空则用账号昵称或 userId": "Opcional; deixe em branco para usar o apelido da conta ou o userId", "可选,留空则用邮箱或令牌尾号": "Opcional; se vazio, usa o e-mail ou o final do token", "可选,留空用「AtomCode」": "Opcional; padrão “AtomCode”", "可选,留空用「OfficeAce 果办」": "Opcional; se vazio, usa “OfficeAce”", "可选,留空自动生成": "Opcional; se vazio, gerado automaticamente", "可选,留空自动用昵称": "Opcional; se vazio, usa o apelido", "可选,给这个访客账号起个备注名": "Opcional; um nome de observação para esta conta de visitante", "可选,续期时带上": "Opcional; enviado na renovação", "可选,讯飞侧 userid": "Opcional; userid do lado iFlytek", "可选:发起对话必需,留空则由网关从该账号已有任务里自动发现,发现不到时之后手动补": "Opcional; necessário para iniciar uma conversa. Se vazio, o gateway descobre automaticamente nas tarefas existentes da conta; se não encontrar, preencha manualmente depois.", "可选:账号邮箱,用于展示与身份识别(换新令牌也能认回同一账号)": "Opcional; e-mail da conta, usado para exibição e identificação (a mesma conta é reconhecida mesmo ao trocar por um token novo)", "可选;UUID 形态,与凭据同生共死": "Opcional; formato UUID, vive e morre com a credencial", "可选;填了才能到期自动续期": "Opcional; preencha para renovar automaticamente ao expirar", "可选;用于去重与展示名(留空时网关会问一次上游)": "Opcional; usado para deduplicação e nome de exibição (se vazio, o gateway consulta o upstream uma vez)", "可选;用于生成账号 id 与展示名": "Opcional; usado para gerar o id e o nome de exibição da conta", "可选;纯数字串(上游只收 8–24 位数字)": "Opcional; apenas dígitos (o upstream aceita somente 8–24 dígitos)", "可领取": "Resgatável", "同一家可以混着放:有 Key 的账号与无鉴权账号各按各的规则走;无需鉴权的账号也能并存多条(各自可配不同的出网代理)": "Contas com chave e sem autenticação podem coexistir no mesmo provedor, cada uma roteada pelas próprias regras; várias contas sem autenticação também são permitidas (cada uma com seu próprio proxy de saída)", "同地址换 anthropic 协议即走它的 Claude 兼容端点。转发必须填 OpenCode Go 的 API Key(订阅制;获取模型清单不需要 Key,但发请求上游会回 401「Missing API key」)": "No mesmo endereço, troque o protocolo para anthropic e ele usará o endpoint compatível com Claude. Para encaminhar, é obrigatório preencher a API Key do OpenCode Go (por assinatura; obter a lista de modelos não exige Key, mas as requisições recebem 401 \"Missing API key\" do upstream)", "响应为空": "Resposta vazia", "商汤日日新的 OpenAI 兼容端点;余额查询走控制台账号密码(见下方「余额查询」一段)": "Endpoint compatível com OpenAI do SenseNova; a consulta de saldo usa a conta e a senha do console (veja \"Consulta de saldo\" abaixo)", "回调已提交,仍需等待网关确认账号登录完成。": "Callback enviado. Aguarde o gateway confirmar a conclusão do login da conta.", "回调未被接受,请重新复制本次登录的完整回调地址": "Callback não aceito. Copie novamente a URL de callback completa deste login.", "国内版": "Edição da China", "国内版与**国际版是两套独立的账号与套餐**,凭证与领取的套餐都不通用。": "A edição da China e **a edição internacional são dois conjuntos independentes de contas e planos**; as credenciais e os planos resgatados não são compartilhados.", "国内版登录页没有 Google / GitHub 入口(它用微信 / 手机号 / 邮箱登录)": "A página de login da edição da China não tem acessos Google / GitHub (o login é por WeChat / celular / e-mail)", "国内版的登录站点是 www.accio-ai.com,与国际版不是同一站。": "O site de login da edição da China é www.accio-ai.com, diferente do site da edição internacional.", "国内版(WorkBuddy)": "Edição da China (WorkBuddy)", "国内站为 https://api.siliconflow.cn/v1": "O site da China é https://api.siliconflow.cn/v1", "国内站(minimaxi.com);OpenAI 兼容地址为 https://api.minimaxi.com/v1": "Site da China (minimaxi.com); o endereço compatível com OpenAI é https://api.minimaxi.com/v1", "国际版": "Edição internacional", "国际版 z.ai 的 Coding 套餐;OpenAI 兼容地址为 https://api.z.ai/api/coding/paas/v4": "Plano Coding do z.ai da edição internacional; o endereço compatível com OpenAI é https://api.z.ai/api/coding/paas/v4", "国际版与国内版是**两套独立的账号**(同一账号体系的两个站点),凭证不通用。": "As edições internacional e da China são **dois conjuntos independentes de contas** (dois sites do mesmo sistema de contas); as credenciais não são compartilhadas.", "国际版与国内版账号体系独立,请填国际版的凭证。未填 refreshToken 无法自动续期。": "As edições internacional e da China têm sistemas de contas independentes; preencha a credencial da edição internacional. Sem preencher o refreshToken, não é possível renovar automaticamente.", "国际版登录页默认只显示邮箱登录,勾选后恢复 Google / GitHub / X 入口": "A página de login da edição internacional mostra por padrão apenas o login por e-mail; marcar a opção restaura os acessos Google / GitHub / X", "国际版的推理站点是 api.z.ai,与国内版不是同一站;套餐也各自独立。": "O site de inferência da edição internacional é api.z.ai, diferente do site da edição da China; os planos também são independentes.", "国际版(WorkBuddy AI)": "Edição internacional (WorkBuddy AI)", "国际站 Coding 套餐;OpenAI 兼容地址为 https://api.minimax.io/v1": "Plano Coding do site internacional; o endereço compatível com OpenAI é https://api.minimax.io/v1", "在 AtomGit 的 AtomCode 页面登出后取得两项贴进来:accessToken 与 refreshToken。续期令牌建议填写——本家令牌不是 JWT(约 7 天到期,读不到过期时间),没有它账号无法自动续期,到期只能重新登录。": "Obtenha os dois valores na página do AtomCode no AtomGit: accessToken e refreshToken. O refresh token é fortemente recomendado — o token deste provedor não é um JWT (expira em cerca de 7 dias e não traz expiração legível); sem ele a conta não consegue se renovar e precisará ser autorizada de novo ao expirar.", "在 DeepSeek 官网完成登录,自动加入账号列表。": "Entre no site oficial do DeepSeek para adicionar sua conta automaticamente.", "在 GitHub 输入设备码 {code},核对账号与授权权限。设备码过期后需要重新发起登录。": "Informe o código de dispositivo {code} no GitHub e confira a conta e as permissões solicitadas. Reinicie o login se o código expirar.", "在 cc-switch 里找到": "Encontradas", "在 chat.deepseek.com 登录本人账号后,从浏览器开发者工具的 Application → Local Storage 复制 userToken 的 value。Cookie 可选,需补充时粘贴该站点请求里的完整 Cookie;登录态失效或要求人机验证时,请回官方网页手动登录后更新。这里不接受收费 API Key。": "Entre na sua própria conta em chat.deepseek.com e copie o campo value de userToken em Application → Local Storage nas ferramentas de desenvolvedor do navegador. Cookie é opcional; se necessário, cole o cabeçalho Cookie completo de uma requisição ao site. Se a sessão expirar ou for exigida verificação humana, entre manualmente no site oficial e atualize as credenciais. Chaves de API pagas não são aceitas aqui.", "在 web.tabbit.ai 登录后,从开发者工具 Application → Cookies 复制 token 与 user_id,或直接粘贴该站点请求的 Copy as cURL 整段。国际站没有可复刻的网页授权回调,手机号登录也处在上游灰度里,所以只能导入已有登录态。登录态有效期约 7 天,过期后重新导入。Cookie 与 JWT 至少填一项。": "Depois de entrar em web.tabbit.ai, copie token e user_id em DevTools → Application → Cookies, ou cole o Copy as cURL inteiro de uma requisição para esse site. O site internacional não tem callback de autenticação web reproduzível, e o login por telefone ainda está em implantação gradual no upstream, então só é possível importar um estado de login existente. O login dura cerca de 7 dias; importe novamente após expirar. Informe pelo menos um entre Cookie e JWT.", "在 web.tabbit.com 登录后,从开发者工具 Application → Cookies 复制 token 与 user_id,或直接粘贴该站点请求的 Copy as cURL 整段。登录态有效期约 7 天,上游没有续期接口,过期后重新导入即可。Cookie 与 JWT 至少填一项。": "Depois de entrar em web.tabbit.com, copie token e user_id em DevTools → Application → Cookies, ou cole o Copy as cURL inteiro de uma requisição para esse site. O login dura cerca de 7 dias e o upstream não tem endpoint de renovação; importe novamente após expirar. Informe pelo menos um entre Cookie e JWT.", "在内嵌窗口里完成官方登录,成功后自动加入账号列表。": "Conclua o login oficial na janela embutida; em caso de sucesso, a conta entra automaticamente na lista de contas.", "在{label}的 Qoder 账号设置 → Integrations 生成 PAT(别填 Google / GitHub 的令牌)。两个地区的账号与凭证不通用。": "Gere um PAT nas configurações da conta Qoder do {label} → Integrations (não use um token do Google / GitHub). Contas e credenciais não são compartilhadas entre as duas regiões.", "在应用内嵌窗口完成 WPS 登录,登录凭据仅交给原插件校验并保存到当前网关。": "Entre no WPS pela janela integrada do aplicativo. As credenciais são entregues apenas ao plugin original para validação e salvas neste gateway.", "在所选站点的 MonkeyCode 官方页面完成登录和验证码,成功后自动读取登录态并加入账号列表,无需手动复制 Cookie。": "Conclua o login e a verificação na página oficial do MonkeyCode da região selecionada. A sessão é capturada e a conta é adicionada automaticamente, sem precisar copiar cookies.", "在打开的官方授权页里用微信扫码登录(页面会直接显示二维码)。扫码成功后自动加入账号列表。": "Escaneie o QR code do WeChat na página de autorização oficial que abrir (o QR code aparece imediatamente). A conta é adicionada à lista automaticamente após a leitura bem-sucedida.", "在打开的官方登录页里完成登录,成功后自动加入账号列表。": "Conclua o login na página oficial que abrir; a conta é adicionada automaticamente à lista após o sucesso.", "在打开的登录页里用百度账号登录 KukuAI 主站(手机验证码 / 扫码均可),登录成功后自动加入账号列表。网关会向百度换发 KukuAI 业务会话令牌(依赖本机已安装库库AI 客户端)。": "Entre no site principal do KukuAI com sua conta Baidu na página de login que abrir (código por SMS ou leitura de QR são válidos); a conta é adicionada automaticamente à lista após o sucesso. O gateway troca com o Baidu um token de sessão de negócios do KukuAI (requer o cliente KukuAI instalado nesta máquina).", "在打开的登录页里登录 Google 账号(Antigravity 的授权页),授权完成后自动加入账号列表。": "Entre com sua conta Google na página de login que abrir (página de autorização do Antigravity); a conta é adicionada automaticamente à lista ao concluir a autorização.", "在打开的窗口里用百度账号登录 KukuAI 主站(手机验证码 / 扫码均可),登录成功后自动加入账号列表。网关会向百度换发 KukuAI 业务会话令牌(依赖本机已安装库库AI 客户端)。": "Na janela aberta, entre no site principal do KukuAI com sua conta Baidu (código SMS ou QR code, tanto faz); após o login, a conta entra automaticamente na lista. O gateway troca com o Baidu um token de sessão de negócio do KukuAI (requer o cliente KukuAI instalado nesta máquina).", "在打开的窗口里登录 Google 账号(Antigravity 的授权页),授权完成后自动加入账号列表。": "Faça login com sua conta Google na janela que abrir (página de autorização do Antigravity); a conta é adicionada à lista automaticamente quando a autorização for concluída.", "在打开的页面里登录千问办公{label}({site})的账号,登录完成后会自动加入列表。两版的账号与凭证不通用。": "Faça login na conta do QwenWork {label} ({site}) na página que abrir. A conta entra na lista assim que você concluir. As duas edições têm contas e credenciais separadas.", "在浏览器中打开登录页": "Abrir a página de login no navegador", "在系统浏览器授权指定 project 的 Code Assist Standard / Enterprise;账号与 project 仍须通过真实预检。": "Autorize o Code Assist Standard / Enterprise para o project informado no navegador do sistema. A conta e o project ainda precisam passar por uma verificação real.", "在豆包官方页面完成登录,窗口会自动读取完整 Cookie 并加入账号列表;不需要安装豆包工作客户端。": "Entre na página oficial do Doubao. A janela lerá os cookies completos e adicionará a conta; o cliente Doubao Work não é necessário.", "地区": "Região", "填写信息后发起授权,进度与失败原因会显示在这里。": "Preencha as informações necessárias e inicie a autorização; o progresso e os erros aparecem aqui.", "填写具体站点名称;模板类型不会作为站点身份": "Digite um nome para este site; o tipo de modelo não identifica o site", "填写凭证": "Preencher credenciais", "填写凭证添加": "Preencher credenciais para adicionar", "备注名": "Rótulo", "套餐": "Plano", "如何获取": "Como obter", "如官方页面跳回的是网关本机地址,请在桌面面板完成回调;手机端不会猜测未声明的回调输入。": "Se a página oficial retornar a um endereço local do gateway, conclua o callback no painel de desktop. O celular não deduz entradas de callback não declaradas.", "如官方页面跳回的是网关本机地址,请粘贴完整回调;没有授权页的本机方式仍需等待网关确认。": "Se a página oficial redirecionar para um endereço local da máquina do gateway, cole a URL de callback completa. Métodos locais sem página de autorização também precisam da confirmação do gateway.", "如:公司中转站、个人备用站": "Ex.: Gateway da empresa, Backup pessoal", "如:智谱 GLM": "ex.: Zhipu GLM", "安装在运行网关的机器,不是当前手机或浏览器所在设备。由 Agent2API 独立管理,不覆盖原有安装;仅点击按钮后下载。": "Instala na máquina que executa o gateway, não neste celular ou dispositivo do navegador. O Agent2API gerencia uma cópia separada, sem substituir instalações existentes. O download só começa ao clicar no botão.", "安装已取消,原有版本未更改。": "Instalação cancelada. A versão anterior não foi alterada.", "安装操作未得到有效确认,请重新检查状态;不会自动重复安装。": "A solicitação de instalação não foi confirmada. Verifique o estado novamente; a instalação não será repetida automaticamente.", "完成官方登录后粘贴包含 state 的完整 loopback 回调地址。": "Após o login oficial, cole a URL completa do callback loopback, incluindo state.", "完成登录后自动加入账号列表,昵称取自上游。": "Após concluir o login, a conta entra automaticamente na lista; o apelido vem do upstream.", "完整 JSON 已包含时无需填写": "Não é necessário se já estiver no JSON completo", "完整回调地址(原样提交)": "URL de callback completa (enviada sem alterações)", "官方 PKCE 登录;浏览器登录态有有效期,失效后需重登,不提供维护续期。": "Login oficial PKCE. Sessões do navegador expiram e exigem novo login; não há renovação de manutenção.", "官方客户端凭证目录:Windows 是 C:\\Users\\<你的用户名>\\AppData\\Local\\CodeBuddyExtension\\Data\\Public\\auth,macOS 是 ~/Library/Application Support/CodeBuddyExtension/Data/Public/auth": "Diretório de credenciais do cliente oficial: Windows — C:\\Users\\\\AppData\\Local\\CodeBuddyExtension\\Data\\Public\\auth; macOS — ~/Library/Application Support/CodeBuddyExtension/Data/Public/auth", "官方已确认到账": "Crédito confirmado oficialmente", "官方浏览器登录": "Login oficial no navegador", "官方浏览器登录(粘贴完整回调)": "Login oficial no navegador (colar callback completo)", "官方网页正常登录后的 Cookie;风控时请手动更新": "Cookie de um login normal no site oficial; atualize-o manualmente se for exigida verificação", "客户端版本": "Versão do cliente", "宿主已持久保存的稳定 hostId(urn:uuid,不能每次生成)": "hostId estável já persistido pelo host (urn:uuid; não gere outro a cada vez)", "导入": "Importar", "导入 QuWork 本机登录态": "Importar login local do QuWork", "导入 kiro-cli / Kiro IDE 登录态": "Importar login do kiro-cli / Kiro IDE", "导入中…": "Importando…", "导入凭证文件": "Importar arquivo de credenciais", "导入失败": "Falha na importação", "导入失败:{reason}": "Falha na importação: {reason}", "导入所选": "Importar selecionados", "导入所选({n})": "Importar selecionados ({n})", "导入桌面端登录态": "Importar sessão de login do desktop", "导入用户指定的本地 Copilot 凭证": "Importar credenciais locais Copilot selecionadas pelo usuário", "将在新标签页中打开授权页;完成后自动加入账号列表。": "A página de autorização abre em uma nova aba; a conta é adicionada automaticamente à lista ao concluir.", "将在新标签页中打开授权页;完成后自动加入账号列表。若页面跳回本机地址后账号没有出现,按提示把地址栏里的完整回调地址粘贴回来即可。": "A página de autorização abre em uma nova aba; a conta é adicionada automaticamente à lista ao concluir. Se a página voltar para um endereço local e a conta não aparecer, cole a URL de callback completa da barra de endereços quando solicitado.", "将打开内嵌窗口;授权完成后自动加入账号列表。关掉窗口即取消等待。授权页最后可能提示无法打开 zcode:// 链接,这是正常的 —— 结果已由服务端记下": "A janela embutida será aberta; após a autorização, a conta entra automaticamente na lista de contas. Fechar a janela cancela a espera. No final, a página de autorização pode avisar que não conseguiu abrir o link zcode:// — isso é normal; o resultado já foi registrado no servidor", "将打开内嵌窗口;授权完成后自动加入账号列表。远程面板可粘贴回调地址。关掉窗口即取消等待。链接 5 分钟内有效,超时或未点就会作废(可重新发起)": "A janela embutida será aberta; após a autorização, a conta entra automaticamente na lista de contas. No painel remoto, é possível colar o endereço de callback. Fechar a janela cancela a espera. O link é válido por 5 minutos; se expirar ou não for clicado, ele é invalidado (você pode iniciar de novo)", "将打开内嵌窗口;登录完成后自动加入账号列表。关掉窗口即取消等待": "A janela embutida será aberta; após o login, a conta entra automaticamente na lista. Fechar a janela cancela a espera", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的 Trae 账号);同机完成后自动加入,Docker / 远程面板按提示粘贴地址栏回调地址。": "A página de autorização será aberta no navegador padrão do sistema (reaproveitando a conta Trae já conectada nele); na mesma máquina, a conta entra automaticamente ao concluir. Para Docker / painel remoto, cole o endereço de callback da barra de endereços conforme as instruções.", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的 ZCode 账号);授权完成后自动加入账号列表。页面最后可能提示无法打开 zcode:// 链接,属正常现象": "A página de autorização será aberta no navegador padrão do sistema (reaproveitando a conta ZCode já conectada nele); após a autorização, a conta entra automaticamente na lista. No final, a página pode avisar que não conseguiu abrir o link zcode://; isso é normal", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的华为云账号);授权码由网关轮询云端取回,与浏览器跑在哪台机器无关,完成后自动加入账号列表": "A página de autorização será aberta no navegador padrão do sistema (reaproveitando a conta Huawei Cloud já conectada nele); o gateway consulta a nuvem em polling para obter o código de autorização, então não importa em qual máquina o navegador roda. Ao concluir, a conta entra automaticamente na lista", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的华为云账号);浏览器与网关不在同一台机器时,按上方说明把最终回调地址粘贴回面板": "A página de autorização será aberta no navegador padrão do sistema (reaproveitando a conta Huawei Cloud já conectada nele); se o navegador e o gateway não estiverem na mesma máquina, cole o endereço de callback final de volta no painel conforme as instruções acima", "将用系统默认浏览器打开登录页(会复用浏览器里已登录的 Accio 账号);完成登录后自动加入账号列表,关掉弹窗即取消等待": "A página de login será aberta no navegador padrão do sistema (reaproveitando a conta Accio já conectada nele); após o login, a conta entra automaticamente na lista; fechar a janela cancela a espera", "将用系统默认浏览器打开登录页(会复用浏览器里已登录的 LobsterAI 账号);完成登录后自动加入账号列表,关掉弹窗即取消等待": "A página de login será aberta no navegador padrão do sistema (reaproveitando a conta LobsterAI já conectada nele); após o login, a conta entra automaticamente na lista; fechar a janela cancela a espera", "小米 MiMo Token Plan 套餐(新加坡站)": "Plano Token Plan do Xiaomi MiMo (site de Singapura)", "小米 MiMo 按量 API;使用按量 API Key,不要混用 Token Plan 套餐 Key": "API por uso do Xiaomi MiMo; use uma API Key por uso, não uma Key de assinatura Token Plan", "小米 MiMo(按量)": "Xiaomi MiMo (por uso)", "已到账": "Creditado", "已取消登录等待": "Espera de login cancelada", "已取消领取": "Resgate cancelado", "已取消验证码": "Captcha cancelado", "已填写手机号,正在发送验证码…": "Celular preenchido; enviando o código…", "已声明无需鉴权:账号会被正常选路,出网时不带任何鉴权头": "Marcada como sem necessidade de autenticação: a conta é roteada normalmente e nenhum cabeçalho de autenticação é enviado nas requisições de saída", "已完成验证,继续发送": "Verificação concluída, enviar novamente", "已导入 {ok} 个,失败 {fail} 个(失败项已标注在列表里)": "{ok} importados, {fail} com falha (os itens com falha estão marcados na lista)", "已建 API": "APIs configuradas", "已建过 · {n} 个账号,点击继续添加": "Já criado · {n} contas, clique para adicionar mais", "已建过,点击继续添加账号": "Já criado, clique para adicionar outra conta", "已打开官方登录页,请在窗口中完成登录…": "Página de login oficial aberta; conclua o login na janela…", "已收到授权回调,正在完成登录…": "Callback de autorização recebido. Concluindo o login…", "已收到浏览器授权,正在获取账号凭据…": "Autorização do navegador recebida. Obtendo credenciais da conta…", "已有 API Key(留空则在浏览器登录后自动创建)": "API Key existente (deixe vazio para criar após o login pelo navegador)", "已有验证码流程正在进行,请先完成或取消": "Já existe uma verificação em andamento. Conclua ou cancele primeiro.", "已检测到本机客户端": "Cliente local detectado", "已点发送,等待短信…": "Enviado; aguardando o SMS…", "已用系统默认浏览器打开登录页,请在浏览器中完成登录…": "Página de login aberta no navegador padrão do sistema; conclua o login no navegador…", "已读取 QuWork 本机登录态,正在添加账号。": "Login local do QuWork lido. Adicionando a conta…", "已领取,等官方确认": "Resgatado; aguardando confirmação oficial", "引用本机 Gemini CLI oauth_creds.json(只读)": "Referenciar oauth_creds.json local do Gemini CLI (somente leitura)", "当前分类里没有「{keyword}」,其它分类有 {n} 个匹配": "Nenhum provedor desta categoria corresponde a \"{keyword}\", mas {n} em outras", "当前壳版本不支持 AutoClaw 网页登录,请更新应用": "Esta versão do aplicativo não suporta o login web do AutoClaw; atualize o aplicativo", "当前没有可领取的套餐(活动尚未开始)": "Nenhum plano disponível para resgate no momento (a campanha ainda não começou)", "当前版本:{version}": "Versão atual: {version}", "当前环境不支持领取(桥接方法缺失)": "O resgate não é suportado neste ambiente (método de ponte ausente)", "必填,CatPaw 账号标识": "Obrigatório; identificador da conta CatPaw", "恢复 Google / GitHub 入口": "Restaurar acessos Google / GitHub", "所选代理会保存到账号设置,后续请求继续使用。": "O proxy selecionado será salvo nas configurações da conta e usado nas próximas solicitações.", "手动代理": "Proxy manual", "手动导入 GitHub OAuth / GitHub 令牌": "Informar token GitHub OAuth / GitHub manualmente", "手机号": "Celular", "手机验证码登录": "Login com código SMS", "打开 LobsterAI(有道龙虾)的官方登录页(lobsterai.youdao.com)并用你的 LobsterAI 账号登录:登录成功后官方页面会跳回本机并自动加入账号列表 —— 回调落在网关自己的端口上,所以浏览器要与网关在同一台机器上;授权码只在本机传给网关,界面不显示明文 token。": "Abra a página de login oficial do LobsterAI (lobsterai.youdao.com) e entre com sua conta LobsterAI: após o login, a página oficial retorna a esta máquina e a conta entra automaticamente na lista — o callback chega à porta do próprio gateway, portanto o navegador precisa estar na mesma máquina que o gateway; o código de autorização só é entregue ao gateway localmente e nenhum token em texto claro é exibido na interface.", "打开 Trae 的官方授权页(trae.cn)并用你的 Trae 账号登录:授权完成后官方页面会跳回本机的一个临时端口;同机部署自动接收,Docker / 远程面板请按提示复制地址栏回调地址。": "Abra a página de autorização oficial do Trae (trae.cn) e entre com sua conta Trae: ao concluir a autorização, a página oficial redireciona de volta para uma porta temporária desta máquina; implantações na mesma máquina recebem automaticamente, e no Docker / painel remoto copie o endereço de callback da barra de endereços conforme as instruções.", "打开 Accio {label}的官方登录页({site})并用你的 Accio 账号登录:登录成功后官方页面会跳回本机;同机自动完成,Docker / 远程面板按提示粘贴回调地址即可(授权码只在本机传给网关,界面不显示明文 token)。": "Abra a página de login oficial do Accio {label} ({site}) e entre com sua conta Accio: após o login, a página oficial redireciona de volta para esta máquina; na mesma máquina tudo se completa automaticamente, e no Docker / painel remoto basta colar o endereço de callback conforme as instruções (o código de autorização é passado ao gateway apenas nesta máquina, e nenhum token em texto claro é exibido na interface).", "打开 Accio {label}登录页": "Abrir a página de login do Accio {label}", "打开 Antigravity 网页登录": "Abrir login web do Antigravity", "打开 AtomGit 授权页登录:登录完成后网关会自动轮询代理取回令牌并加入账号列表(授权回调由代理终结,不回到本机,因此无需手工回填回调地址)。": "Abra a página de autorização do AtomGit e entre: ao concluir, o gateway consulta o broker automaticamente para obter o token e adiciona a conta (o callback é encerrado no broker e nunca volta para esta máquina, então não é preciso preencher a URL de callback).", "打开 CatPaw 网页登录": "Abrir o login web do CatPaw", "打开 Cline 授权页": "Abrir a página de autorização do Cline", "打开 CodeArts 授权页": "Abrir a página de autorização do CodeArts", "打开 LobsterAI 登录页": "Abrir a página de login do LobsterAI", "打开 Qoder 网页登录": "Abrir o login web do Qoder", "打开 Trae 授权页": "Abrir a página de autorização do Trae", "打开 ZCode {label}的官方授权页并用你的账号登录。授权结果由 ZCode 服务端记录,网关在后台自动取回凭证并加入账号列表。": "Abra a página de autorização oficial do ZCode {label} e entre com sua conta. O resultado da autorização é registrado pelo servidor do ZCode; o gateway busca a credencial em segundo plano e a adiciona à lista de contas.", "打开 ZCode {label}授权页": "Abrir a página de autorização do ZCode {label}", "打开下一步授权页": "Abrir a próxima página de autorização", "打开人机验证": "Abrir verificação humana", "打开千问办公网页登录": "Abrir o login web do QwenWork", "打开华为云 CodeArts 的官方授权页登录:登录完成后官方页面会把浏览器带回网关自己的 /oauth/callback,网关用一次性授权码换取临时凭据并加入账号列表。
    网关跑在另一台机器上时,网页端会提示把地址栏中的最终回调地址直接粘贴回面板。": "Abra a página de autorização oficial do Huawei Cloud CodeArts para entrar: após o login, a página oficial leva o navegador de volta ao /oauth/callback do próprio gateway, e o gateway troca o código de autorização de uso único por credenciais temporárias e adiciona a conta à lista.
    Quando o gateway roda em outra máquina, a interface web pede para colar o endereço de callback final da barra de endereços de volta no painel.", "打开华为云授权页登录:登录完成后网关会自动轮询云端取回授权码并加入账号列表(不需要装 OfficeAce 桌面端,也无需手工回填回调地址)。": "Abra a página de autorização do Huawei Cloud e faça login: ao concluir, o gateway consulta a nuvem automaticamente para obter o código de autorização e adiciona a conta à lista (não é preciso instalar o aplicativo de desktop do OfficeAce nem colar manualmente uma URL de retorno).", "打开官方授权页": "Abrir a página oficial de autorização", "打开官方授权页完成设备码授权,登录的是{label}({site})的账号。": "Abra a página de autorização oficial e conclua a autorização por código de dispositivo; a conta usada é do {label} ({site}).", "打开授权页": "Abrir a página de autorização", "打开授权页完成确认,账号自动加入 {label}{note}": "Abra a página de autorização e confirme; a conta entra automaticamente em {label}{note}", "打开方式": "Como abrir", "打开网页登录": "Abrir login web", "按已验证邮箱只读引用 cursor-agent 当前登录态;每次操作重读 keychain/auth.json,不复制 token、不主动运行 CLI 续期,退出或失效后需在原客户端重登。": "Referencia o login atual do cursor-agent em modo somente leitura, fixado no e-mail verificado. Cada operação relê keychain/auth.json sem copiar tokens nem executar renovação pela CLI. Após sair ou expirar, entre novamente no cliente original.", "授权只读引用,不复制、不修改、不续期本机凭证": "Permitir referência somente leitura, sem copiar, modificar ou renovar credenciais locais", "授权回调提交失败;请检查输入并重试,登录仍在等待。": "Falha ao enviar o callback de autorização. Confira a entrada e tente novamente; o login continua aguardando.", "授权每次请求只读所选文件,固定当前账号与工作区?": "Permitir referência somente leitura ao arquivo selecionado a cada requisição, fixada nesta conta e área de trabalho?", "授权码或令牌(原样提交)": "Código de autorização ou token (enviado sem alterações)", "授权读取所选条目": "Permitir leitura da entrada selecionada", "授权页、换证与取账号信息都走这条线路。无头服务器上没有系统代理,这里不选就走直连(多数网络里到不了 Google)。": "A página de autorização, a troca de código e a consulta de dados da conta usam esta rota. Um servidor headless não tem proxy de sistema, então deixar em branco significa conexão direta (que na maioria das redes não alcança o Google).", "探测失败:{message}": "Falha na detecção: {message}", "接入一个兼容上游": "Conectar um upstream compatível", "控制台 uaa-token(粘贴令牌值或完整的 uaa-token=… Cookie 项)": "uaa-token do console (cole o valor do token ou a entrada completa do cookie uaa-token=…)", "推荐": "Recomendado", "提交中…": "Enviando…", "提交授权回调": "Enviar callback de autorização", "提供商仅在已启用且加载后出现。登录与本机引用均作用在所连接网关,不是手机。": "Provedores aparecem somente após serem habilitados e carregados. Login e referências locais se aplicam ao gateway conectado, não ao celular.", "插件专用 Chrome 登录(自动读取凭据)": "Login pelo Chrome do plugin (leitura automática de credenciais)", "插件会在网关电脑上启动独立浏览器并读取登录结果,不使用系统默认浏览器。": "O plugin abre um navegador separado na máquina do gateway e lê o resultado do login. Ele não usa o navegador padrão do sistema.", "搜索提供商": "Buscar provedores", "搜索提供商…": "Buscar provedores…", "整份粘贴官方插件 / CLIProxyAPI 落盘的凭据 JSON(形如 {\"codearts_provider_credential\":{…}},铺平的也行)。
    必填:access_key_id、secret_access_key、security_token。要能自动续期,必须连 refresh_token 与 oauth_context 一起粘 —— 临时凭据约一小时到期,缺这半块就续不回来,只能重新登录。": "Cole o JSON de credencial inteiro gravado pelo plugin oficial / CLIProxyAPI (no formato {\"codearts_provider_credential\":{…}}; a versão achatada também serve).
    Obrigatórios: access_key_id, secret_access_key, security_token.Para renovar automaticamente, é preciso colar também refresh_token e oauth_context — as credenciais temporárias expiram em cerca de uma hora, e sem essa parte não há como renovar; será preciso fazer login de novo.", "文件是{edition}凭证,已按该版本导入": "O arquivo contém credenciais da {edition} e foi importado como tal", "新增独立登录": "Novo login independente", "新建自定义提供商": "Novo provedor personalizado", "新网关确认代理同次保存后不再重复提交;旧网关使用兼容保存并提示核查,失败不会撤销已添加的账号。": "Não há segundo envio quando o novo gateway confirma que o proxy foi salvo junto com a conta. Gateways antigos usam gravação de compatibilidade com aviso de conferência; falhas não removem a conta adicionada.", "方案:{label}": "Esquema: {label}", "无需手动复制令牌,验证码在官方页面完成。": "Não é preciso copiar o token. Conclua a verificação na página oficial.", "旧网关未确认代理同次保存,已使用兼容接口保存;请在账号设置中确认代理选择。": "O gateway antigo não confirmou a gravação conjunta do proxy. Foi usado o endpoint de compatibilidade; confira o proxy nas configurações da conta.", "明文 JWT 或 auth.json 里的 enc: 加密值(自动解密)": "JWT em texto claro ou o valor criptografado enc: do auth.json (descriptografado automaticamente)", "明文 JWT(国际版账号的 access token)": "JWT em texto claro (o access token da conta da edição internacional)", "明确选择文件与只读授权;不修改或续期原客户端登录态。": "Selecione explicitamente o arquivo e autorize acesso somente leitura. O login do cliente original não é alterado nem renovado.", "明确选择文件内的账号条目键名": "Selecionar a chave exata da entrada de conta no arquivo", "明确选择标准凭证文件的完整绝对路径": "Selecionar o caminho absoluto completo de um arquivo padrão de credenciais", "是否授权只读取此文件和所选账号凭证?": "Permitir acesso somente leitura a este arquivo e à credencial da conta selecionada?", "显示凭证": "Mostrar credenciais", "智谱 bigmodel.cn 的 Coding 套餐,Key 在 open.bigmodel.cn/usercenter/apikeys": "Plano Coding do bigmodel.cn da Zhipu; obtenha a Key em open.bigmodel.cn/usercenter/apikeys", "暂不支持自动安装": "Instalação automática indisponível", "暂时无法检查官方最新版;已安装且满足最低要求的客户端仍可使用。": "Não foi possível verificar a versão oficial mais recente. Um cliente já instalado que atenda aos requisitos mínimos ainda pode ser usado.", "暂时无法登录": "Login indisponível", "有可用更新": "Atualização disponível", "未开启客户端调试端口时,请使用网页登录或粘贴 Cookie。": "Se a porta de depuração do cliente não estiver habilitada, use o login web ou cole os cookies.", "未知错误": "Erro desconhecido", "未能获取授权地址,请重试": "Não foi possível obter o endereço de autorização; tente novamente", "未能读取 cc-switch 数据": "Não foi possível ler os dados do cc-switch", "未领取成功": "Resgate não concluído", "本体订阅未返回动态登录方式(501);不会猜测导入接口或显示插件手动凭证入口。请更新网关后重试。": "A assinatura nativa não retornou métodos dinâmicos de login (501). Não serão presumidos endpoints de importação nem exibido um formulário manual de credenciais de plugin. Atualize o gateway e tente novamente.", "本地 Ollama、OpenCode Zen 免费档这类上游要勾上,否则账号不可用": "Marque esta opção para upstreams como o Ollama local ou o nível gratuito do OpenCode Zen; caso contrário, a conta não funcionará", "本家有两个**互不替代**的凭证,按你要用的功能填,至少填一个:编码套餐 API Key 用于转发推理(打 {site})与查询窗口限额(每 N 小时 / 每周的剩余比例);jwt 用于领取套餐与查询余额(打 zcode.z.ai 的 billing 网关,官方叫 Coding Plan JWT,是一串三段点分的字符串)。余额两把都能查、但读到的东西不同:jwt 读到余额桶与套餐到期,API Key 读到窗口限额;而领取只认 jwt、转发只认 API Key。请填写 {label}账号的凭证 —— {plan}(最容易拿到的办法:直接用上方的「网页登录」—— 它会替你把这个 API Key 换好,两个凭证一起拿到。)": "Este provedor tem duas credenciais que **não se substituem**; preencha as que correspondem aos recursos que você vai usar, pelo menos uma: a API Key do Coding Plan serve para encaminhar inferência (acessa {site}) e para consultar os limites de janela (a porcentagem restante de cada janela de N horas / semanal); o jwt serve para resgatar planos e consultar saldo (acessa o gateway de billing em zcode.z.ai; oficialmente chamado Coding Plan JWT, uma string de três segmentos separados por ponto). As duas consultam saldo, mas leem coisas diferentes: o jwt lê os baldes de saldo e a expiração do plano, enquanto a API Key lê os limites de janela; e o resgate só aceita o jwt, o encaminhamento só aceita a API Key. Preencha a credencial da conta {label} — {plan} (a forma mais fácil: use o \"Login web\" acima — ele troca essa API Key por você e obtém as duas credenciais de uma vez.)", "本机 Ollama 的 OpenAI 兼容端点,无需 API Key(默认已勾上「该上游无需鉴权」,鉴权头一个都不发)": "Endpoint compatível com OpenAI do Ollama local; não precisa de API Key (a opção \"Este upstream não exige autenticação\" já vem marcada e nenhum cabeçalho de autenticação é enviado)", "本机 auth.json(只读引用)": "auth.json local (referência somente leitura)", "本机凭证已校验。宿主仅保存文件引用与稳定身份,每次请求重新读取。": "Credenciais locais verificadas. O host salva apenas a referência do arquivo e uma identidade estável, relendo a cada requisição.", "本机部署会自动完成登录;服务器或 Docker 部署时,若授权后跳到无法访问的 localhost 或 127.0.0.1 页面,请把地址栏中的完整回调地址粘贴回来。AWS 登录如需继续授权,请打开下一步授权页,完成后再次回填。请勿修改地址或把回调链接发给他人。": "Instalações locais concluem o login automaticamente. Em servidores ou Docker, se a autorização redirecionar para uma página localhost ou 127.0.0.1 inacessível, cole aqui a URL completa da barra de endereços. Se a AWS exigir outra autorização, abra a próxima página e cole a nova URL de callback ao concluir. Não altere nem compartilhe URLs de callback.", "本次未确认到账": "Crédito não confirmado desta vez", "条可导入": "importáveis", "条配置,其中": "configurações no cc-switch, das quais", "桌面运行时不可用(Tauri 未初始化)": "Runtime do desktop indisponível (Tauri não inicializado)", "检测失败": "Falha na verificação", "模型网关基址": "Endereço base do gateway de modelos", "正在准备 AWS 授权…": "Preparando autorização AWS…", "正在准备安装…": "Preparando a instalação…", "正在取消安装…": "Cancelando a instalação…", "正在启用新版本…": "Ativando a nova versão…", "正在打开百度登录页…": "Abrindo a página de login do Baidu…", "正在扫描本机 cc-switch…": "Escaneando o cc-switch desta máquina…", "正在换发访客凭证…": "Solicitando uma credencial de visitante…", "正在校验官方安装包…": "Verificando o pacote oficial…", "正在检查安装状态…": "Verificando o estado da instalação…", "正在检查客户端版本…": "Verificando a versão do cliente…", "正在添加…": "Adicionando…", "正在等待{name}登录完成;完成或取消后才能发起新的登录": "Aguardando a conclusão do login de {name}; só após concluir ou cancelar você pode iniciar um novo login", "此 Copilot 手动令牌方式未声明回调输入契约,暂不发起;请改用设备码登录或只读本机引用。": "Este método manual de token Copilot não declara o contrato de entrada do callback e não será iniciado. Use login por código de dispositivo ou referência local somente leitura.", "此提供商已有登录任务,请先完成或取消。": "Já há um login em andamento para este provedor. Conclua ou cancele primeiro.", "此提供商未声明动态登录方式,请在网关桌面面板使用其既有入口;手机端不会猜测凭证字段。": "Este provedor não declara métodos dinâmicos de login. Use a entrada existente no painel desktop do gateway; o aplicativo móvel não presumirá os campos de credenciais.", "此方式需要原样提交授权码或令牌;输入会隐藏,不会当作 URL 或 API 凭证解析。提交后仍需等待网关确认。": "Este método exige um código de autorização ou token sem alterações. A entrada fica oculta e não é interpretada como URL ou credencial de API. Aguarde a confirmação do gateway após enviar.", "此方式需要完整回调地址;请原样粘贴,不拆分参数或重建地址。提交后仍需等待网关确认。": "Este método exige a URL completa de callback. Cole-a sem alterações, sem separar parâmetros nem reconstruir o endereço. Aguarde a confirmação do gateway após enviar.", "每个账号使用独立的官方登录目录。终端登录沿用该终端的网络环境;这里选择的代理用于添加后的模型请求。": "Cada conta usa seu próprio diretório de login oficial. O login no terminal usa as configurações de rede desse terminal; o proxy selecionado aqui se aplica às solicitações de modelos após a adição da conta.", "每周": "Semanal", "每日": "Diário", "每月": "Mensal", "没有则无法自动续期": "Sem ele, não é possível renovar automaticamente", "没有匹配「{keyword}」的提供商": "Nenhum provedor corresponde a \"{keyword}\"", "浏览器拦截了弹窗": "O navegador bloqueou a janela pop-up", "浏览器授权已收到,但网关直连 DeepAI 失败。请在登录代理中填入系统代理或选择可用代理后重新登录。": "A autorização do navegador foi recebida, mas o gateway não conseguiu acessar o DeepAI diretamente. Preencha com o proxy do sistema ou escolha um proxy de login funcional e entre novamente.", "浏览器授权已收到,但通过所选代理获取账号凭据失败。请检查该代理后重新登录。": "A autorização do navegador foi recebida, mas não foi possível obter as credenciais pelo proxy selecionado. Verifique o proxy e entre novamente.", "浏览器显示登录完成后,网关还需联网获取账号凭据。若浏览器或 Magpie 使用系统代理,请先在下方点击「填入系统代理」;选择直连不会跟随系统代理。": "Após o navegador mostrar que o login foi concluído, o gateway ainda precisa obter as credenciais pela rede. Se o navegador ou o Magpie usa um proxy do sistema, clique primeiro em “Preencher com proxy do sistema” abaixo. A conexão direta não usa o proxy do sistema.", "浏览器登录(墨点额度 + 自动创建 API Key)": "Login pelo navegador (créditos de tinta + criação automática de API Key)", "浏览器登录(复用已有 API Key)": "Login pelo navegador (reutilizar uma API Key existente)", "浏览器面板无法读取其他站点的登录态,请使用本人网页账号的令牌。": "O painel do navegador não pode ler sessões de login de outros sites. Use o token da sua própria conta web.", "浏览器面板无法读取其它站点的 Cookie,请登录 www.doubao.com 后,使用「填写凭证」粘贴完整 Cookie。": "O painel do navegador não pode ler cookies de outros sites. Entre em www.doubao.com e cole os cookies completos em Credenciais.", "添加 DeepSeek 账号": "Adicionar conta DeepSeek", "添加 {name} 账号": "Adicionar conta {name}", "添加中…": "Adicionando…", "添加到 ": "Adicionar a ", "添加到此提供商": "Adicionar a este provedor", "添加失败:{reason}": "Falha ao adicionar: {reason}", "添加小浣熊账号": "Adicionar conta Raccoon", "添加方式": "Forma de adicionar", "添加时要用它出网校验凭证(例如 Antigravity 要打一次 Google 的 token 端点)。无头服务器上没有系统代理,这里不选就走直连。": "Usado para acessar a rede ao validar a credencial na adição (por exemplo, o Antigravity chama um endpoint de token do Google). Um servidor headless não tem proxy de sistema, então deixar em branco significa conexão direta.", "添加访客账号": "Adicionar uma conta de visitante", "添加账号": "Adicionar conta", "火山引擎 Coding 套餐;通用推理接入点为 https://ark.cn-beijing.volces.com/api/v3": "Plano Coding do Volcano Engine; o endpoint de inferência geral é https://ark.cn-beijing.volces.com/api/v3", "点击添加账号": "Clique para adicionar uma conta", "点击登录后,在 Google 页面授权,再原样粘贴授权码或完整页面地址;已登录的 agy 会直接连接。Google 凭证由官方客户端保管,Agent2API 只保存本机连接标记。同一网关仅使用 agy 当前登录的一个账号,不支持复制为多个独立账号。": "Clique em Entrar, autorize na página do Google e cole o código de autorização ou o endereço completo sem alterações. Se o agy já estiver conectado, a conexão é direta. O cliente oficial guarda as credenciais do Google; o Agent2API salva apenas um marcador de conexão local. Cada gateway usa a conta atual do agy, sem duplicá-la em várias contas independentes.", "点开即预填,填 Key 接入": "Abre já preenchido; informe a Key para conectar", "点按钮后先过一次滑块验证(官方风控),随后打开登录页,登录完成即自动添加账号。
    这是国际版官方唯一的登录方式;已在客户端登录过的,用「导入桌面端登录态」更快。": "Após clicar no botão, primeiro passe por uma verificação de slider (controle de risco do provedor); em seguida a página de login abre e a conta é adicionada automaticamente ao concluir o login.
    Esta é a única forma oficial de login da edição internacional; se você já entrou no cliente, \"Importar sessão de login do desktop\" é mais rápido.", "独立 Kiro OAuth 支持续期;保留原登录验证,不接受任意 bearer token。": "O OAuth Kiro independente permite renovação. A validação original de login é mantida; tokens bearer arbitrários não são aceitos.", "用 AutoClaw 账号绑定的手机号登录:点击「获取验证码」,收到短信后填入下方并登录。验证码由本机直接提交给官方接口,界面不显示 token。": "Entre com o celular vinculado à conta AutoClaw: clique em \"Obter código\", informe o código recebido por SMS abaixo e entre. O código é enviado desta máquina diretamente à API oficial, e nenhum token é exibido na interface.", "用 CatPaw 账号完成登录(美团 passport),成功后自动加入账号列表。": "Conclua o login com sua conta CatPaw (Meituan Passport); em caso de sucesso, a conta entra automaticamente na lista.", "用 Loomy 账号绑定的手机号登录:点「获取验证码」后填入即可。这是本家最省事的入口。": "Entre com o celular vinculado à conta Loomy: clique em \"Obter código\" e informe o código. Esta é a forma mais simples neste provedor.", "用于转发;形如 apiKey.secret 两段点分(不填则这个账号不能转发)": "Usado para encaminhamento; no formato apiKey.secret, dois segmentos separados por ponto (se vazio, esta conta não pode encaminhar)", "用于领取套餐与查询余额;不填则这个账号不能领取与查余额": "Usado para resgatar planos e consultar saldo; se vazio, esta conta não pode resgatar nem consultar saldo", "用户 ID": "ID do usuário", "用绑定的手机号登录:点「获取验证码」后填入即可。这是国内版官方唯一的登录方式。": "Entre com o celular vinculado: clique em \"Obter código\" e informe o código. Esta é a única forma oficial de login da edição da China.", "用绑定的手机号登录:点「获取验证码」,收到短信后填入下方并点「登录并添加」。这是国内站官方唯一的登录方式。": "Entre com o número de telefone vinculado: toque em \"Obter código\", informe o código SMS abaixo e clique em \"Entrar e adicionar\". Este é o único método oficial de login do site da China.", "由插件打开浏览器登录": "Entrar pelo navegador do plugin", "由本机 Grok Build CLI 执行官方设备授权;仅保存 home/scope/account 引用,不镜像 token,后续操作只读,不提供维护续期。": "A CLI local Grok Build executa a autorização oficial por dispositivo. Só armazena a referência home/scope/account, sem copiar tokens. Operações posteriores são somente leitura; não há renovação de manutenção.", "留空使用 1.17.16(10117016)": "Deixe vazio para usar 1.17.16(10117016)", "留空使用该提供商默认值": "Deixe em branco para usar o padrão do provedor", "留空使用账号默认名称": "Deixe em branco para usar o nome padrão da conta", "留空使用默认的 User-Agent;可从预置里选一个内置客户端,也可以直接填写。": "Deixe em branco para usar o User-Agent padrão; escolha um cliente integrado predefinido ou digite um diretamente.", "留空则用提供商名称": "Se vazio, usa o nome do provedor", "留空自动查找;也可填写网关本机 agy 可执行文件的绝对路径": "Deixe em branco para detectar automaticamente ou informe o caminho absoluto do agy na máquina do gateway", "登录 / 添加 {name} 账号": "Entrar / adicionar conta {name}", "登录 JWT": "JWT de login", "登录 chat.deepseek.com 后,打开开发者工具 → Application → Local Storage,复制 userToken 的 value。": "Entre em chat.deepseek.com, abra as ferramentas de desenvolvedor → Application → Local Storage e copie o campo value de userToken.", "登录 session(一长串)": "Sessão de login (uma string longa)", "登录中…": "Entrando…", "登录代理不支持轮询出网,请选择一条已保存的代理": "O login não aceita proxies rotativos. Escolha um proxy salvo.", "登录凭证 accessToken": "Credencial de login accessToken", "登录出网代理": "Proxy de saída do login", "登录取消未确认,请刷新状态后重试。": "O cancelamento do login não foi confirmado. Atualize o status e tente novamente.", "登录失败:{message}": "Falha no login: {message}", "登录尚未完成,请继续通过共享登录桥等待结果": "O login ainda não foi concluído. Continue aguardando o resultado pela ponte de login compartilhada.", "登录已结束": "Login encerrado", "登录并添加": "Entrar e adicionar", "登录态文件路径:~/.box-agent/config/auth.json(Windows:C:\\Users\\<你的用户名>\\.box-agent\\config\\auth.json)": "Caminho do arquivo de sessão de login: ~/.box-agent/config/auth.json (Windows: C:\\Users\\\\.box-agent\\config\\auth.json)", "登录授权地址无效,已取消本次等待。": "A URL de autorização do login é inválida; a espera foi cancelada.", "登录桥未返回已完成的账号或会话,请重试": "A ponte de login não retornou uma conta ou sessão concluída. Tente novamente.", "登录桥返回了空会话,无法确认账号已添加": "A ponte de login retornou uma sessão vazia, então não é possível confirmar que a conta foi adicionada.", "相同协议和地址的提供商已经存在。可以继续新建独立提供商,或明确选择已有提供商添加账号。": "Já existe um provedor com o mesmo protocolo e endereço. Crie um provedor separado ou selecione um existente para adicionar uma conta.", "看全部匹配": "Ver todas as correspondências", "确定删除自定义提供商「{name}」?将同时删除该提供商下 {count} 个账号,删除后无法恢复。": "Excluir o provedor personalizado \"{name}\"? Isso também excluirá {count} contas desse provedor; a exclusão não pode ser desfeita.", "站点名称": "Nome do site", "端砚由插件在网关电脑上启动独立的 Edge、Chrome 或 Chromium 窗口,不使用系统默认浏览器或应用内嵌窗口。": "O plugin do InkStone abre uma janela independente do Edge, Chrome ou Chromium no computador do gateway. Ele não usa o navegador padrão do sistema nem a janela integrada do aplicativo.", "等待 Accio {label}登录完成…": "Aguardando a conclusão do login do Accio {label}…", "等待 AtomCode 登录完成…": "Aguardando o login do AtomCode…", "等待 CatPaw 登录完成…": "Aguardando a conclusão do login do CatPaw…", "等待 Cline 授权确认…": "Aguardando a confirmação de autorização do Cline…", "等待 CodeArts 登录完成…": "Aguardando a conclusão do login do CodeArts…", "等待 Google 授权完成…": "Aguardando a conclusão da autorização do Google…", "等待 KukuAI 登录完成…": "Aguardando a conclusão do login do KukuAI…", "等待 LobsterAI 登录完成…": "Aguardando a conclusão do login do LobsterAI…", "等待 MonkeyCode 登录完成…": "Aguardando o login do MonkeyCode…", "等待 OfficeAce 登录完成…": "Aguardando a conclusão do login do OfficeAce…", "等待 OrcaTerm 登录完成…": "Aguardando o login no OrcaTerm…", "等待 Qoder 授权完成…": "Aguardando a conclusão da autorização do Qoder…", "等待 Trae 授权完成…": "Aguardando a conclusão da autorização do Trae…", "等待 ZCode {label}授权完成…": "Aguardando a conclusão da autorização do ZCode {label}…", "等待你在官方页面完成登录,成功后自动添加账号。": "Aguardando seu login na página oficial. A conta será adicionada automaticamente ao concluir.", "等待千问办公登录完成…": "Aguardando a conclusão do login do QwenWork…", "等待小浣熊登录完成…": "Aguardando a conclusão do login do Raccoon…", "等待插件完成登录": "Aguardando o plugin concluir o login", "等待浏览器完成登录": "Aguardando o login pelo navegador", "等待浏览器授权;若本机回调页面无法打开,请复制地址栏中的完整地址回填。": "Aguardando autorização no navegador. Se a página local de callback não abrir, copie o endereço completo da barra e cole aqui.", "等待登录完成…": "Aguardando a conclusão do login…", "等待网页登录…": "Aguardando o login web…", "等待豆包工作登录完成…": "Aguardando o login do Doubao Work…", "粘贴 API Key": "Colar API Key", "粘贴 API 令牌": "Colar token de API", "粘贴 Accio 的 accessToken": "Colar o accessToken do Accio", "粘贴 Antigravity 的 Google refresh token(以 1// 开头;直接粘贴含 refresh_token= 的整行也行)。
    这是网页登录之外的手工入口(例如从已登录的官方 IDE 里导出)。refresh token 不会过期,access token 到期由网关自动续期;令牌丢了只能重新走 Google 授权,请妥善保存。": "Cole o Google refresh token do Antigravity (começa com 1//; também pode colar a linha inteira que contém refresh_token=).
    Esta é uma entrada manual além do login web (por exemplo, exportada do IDE oficial em que você já está conectado). O refresh token não expira, e o gateway renova o access token automaticamente ao expirar; se o token for perdido, só resta refazer a autorização do Google, então guarde-o bem.", "粘贴 Command Code 的 API Key(user_ 开头;从官方 CLI 的 ~/.commandcode/auth.json 或网页 studio 获取)。整行 / 带引号 / 带 Bearer 前缀地粘都行,网关会自己剥成裸 key。key 不过期、也没有续期接口,失效后重新获取即可;添加时网关会做一次轻量探活,失败不影响添加。": "Cole a API Key do Command Code (começa com user_; obtenha no ~/.commandcode/auth.json do CLI oficial ou no studio web). Colar a linha inteira / com aspas / com o prefixo Bearer funciona; o gateway extrai a key pura sozinho. A key não expira e não há API de renovação, então basta obter uma nova se ela deixar de funcionar. Ao adicionar, o gateway faz uma verificação leve de atividade; uma falha não impede a adição.", "粘贴 Cookie": "Colar Cookie", "粘贴 Google refresh token": "Colar Google refresh token", "粘贴 ModelScope 的 API 令牌(ms- 开头,在 {site} 的「访问令牌」页获取)。
    {siteNote}
    这枚令牌两用:网关既用它调推理,也用它读账号身份、魔粒余额与每日签到。令牌长期有效、没有续期接口,失效后重新获取再粘一次即可。": "Cole um token de API do ModelScope (começa com ms-; crie um na página \"Tokens de acesso\" de {site}).
    {siteNote}
    O mesmo token serve para duas finalidades: o gateway o usa tanto para chamar a inferência quanto para ler a identidade da conta, o saldo de créditos e o check-in diário. O token é de longa duração e não há API de renovação — se parar de funcionar, basta criar outro e colar novamente.", "粘贴 OrcaTerm 的 OAuth accessToken(JWT,三段点分;从桌面客户端 data.bin 或 Web 版 Cookie ot_session 获取)。直接粘贴含 Bearer / ot_session= 的整行也行,网关会自己剥成裸 token。添加后由网关自动续期(上游有续期接口),无需跟随 2 小时时效手动更换。": "Cole o accessToken OAuth do OrcaTerm (um JWT com três partes separadas por pontos; obtido do data.bin do cliente desktop ou do cookie ot_session da versão web). Também pode colar a linha inteira contendo Bearer / ot_session= — o gateway extrai apenas o token. Após adicionar, o gateway renova automaticamente (o upstream tem API de renovação), sem precisar acompanhar a expiração de 2 horas manualmente.", "粘贴 Qoder 个人访问令牌(pt-…)": "Colar o token de acesso pessoal do Qoder (pt-…)", "粘贴 accessToken": "Colar accessToken", "粘贴 access_token(一长串 JWT)": "Colar o access_token (um JWT longo)", "粘贴 session cookie": "Colar session cookie", "粘贴 token / refreshToken": "Colar token / refreshToken", "粘贴 userToken.value": "Colar userToken.value", "粘贴 workos:… 开头的令牌(不带前缀也会自动补上)": "Cole um token começando com workos:… (o prefixo é adicionado automaticamente se faltar)", "粘贴 www.doubao.com 的完整 Cookie(必须含 sessionid),也支持 Cookie JSON 数组或对象。复用豆包工作账号的额度;Cookie 失效后需重新登录,没有自动续期。": "Cole os cookies completos de www.doubao.com, incluindo sessionid. Arrays e objetos JSON também são aceitos. Usa a cota da conta Doubao Work; cookies expirados exigem novo login e não são renovados automaticamente.", "粘贴令牌": "Colar token", "粘贴令牌对": "Colar par de tokens", "粘贴你本人已授权的 GitHub OAuth 令牌(不是设备码或 Copilot 短令牌)。令牌仍需由 GitHub 验证并交换;CLI 专用令牌可能不支持编辑器令牌交换。": "Cole o token GitHub OAuth autorizado por você, não um código de dispositivo nem token temporário Copilot. O GitHub ainda precisa validá-lo e trocá-lo; tokens exclusivos da CLI podem não aceitar troca por tokens do editor.", "粘贴完整登录凭证 JSON,或只填模型凭证 llmToken。仅模型凭证可对话;积分、续期和奖励需要登录凭证 accessToken。": "Cole o JSON completo de login ou somente a credencial de modelo llmToken. Apenas a credencial de modelo permite chat; pontos, renovação e recompensas exigem accessToken.", "粘贴智谱清言的访问令牌(JWT,三段点分)。获取方式:浏览器打开 chatglm.cn 并登录后,在开发者工具的 Application → Cookies 里复制 chatglm_token 的值(也可以直接粘 chatglm_token=…; 整行)。粘贴后会先向上游校验一次,校验通过才落账号;登录账号的积分、签到能力都能用,之后由网关自动续期(上游有续期接口)。": "Cole um token de acesso do Zhipu Qingyan (um JWT com três partes separadas por ponto). Como obter: abra chatglm.cn no navegador, faça login e copie o valor do cookie chatglm_token em Application → Cookies nas ferramentas de desenvolvedor (colar a linha chatglm_token=…; inteira também funciona). O token é verificado uma vez na origem após a colagem, e a conta só é salva se passar; contas conectadas têm pontos e check-in, e o gateway renova automaticamente depois (a origem tem API de renovação).", "粘贴登录凭据": "Colar credenciais de login", "粘贴的是登录 session(同时是模型网关的 token)。Loomy 没有续期接口,session 有效期约 14 天,过期后重新登录即可。": "O que você cola é a sessão de login (que também é o token do gateway de modelos). O Loomy não tem API de renovação; a sessão vale cerca de 14 dias, então basta entrar de novo após expirar.", "粘贴网关凭据": "Colar credenciais do gateway", "粘贴网页登录凭证": "Colar credenciais de login web", "粘贴网页登录态 cookie monkeycode_ai_session 的值(在浏览器里复制整段 Cookie 直接粘贴也行,网关会自己剥出值)。
    {siteNote}
    MonkeyCode 没有续期接口:session 有效期约 30 天(硬限制),过期后重新登录网页、再粘贴一次即可。": "Cole o valor do cookie de sessão de login web monkeycode_ai_session (copiar o Cookie inteiro no navegador e colar diretamente também funciona; o gateway extrai o valor sozinho).
    {siteNote}
    O MonkeyCode não tem API de renovação: a sessão vale cerca de 30 dias (limite rígido); quando expirar, entre novamente no site e cole mais uma vez.", "粘贴网页访问令牌": "Colar token de acesso web", "粘贴访问令牌": "Cole o token de acesso", "系统浏览器": "Navegador do sistema", "系统浏览器可复用已有登录态(国际版推荐);内嵌窗口更干净。": "O navegador do sistema pode reaproveitar a sessão de login existente (recomendado para a edição internacional); a janela embutida é mais limpa.", "系统浏览器打开(复用已登录的 Cline 账号);完成后自动加入列表": "Abre no navegador do sistema (reaproveita a conta Cline já conectada); ao concluir, entra automaticamente na lista", "系统浏览器打开(复用已登录的 Google 账号);完成后自动加入列表": "Abre no navegador do sistema (reutiliza a conta Google já conectada); ao concluir, entra automaticamente na lista", "系统浏览器打开(复用已登录的 Zai / Google 账号);完成后自动加入列表": "Abre no navegador do sistema (reaproveita a conta Zai / Google já conectada); ao concluir, entra automaticamente na lista", "系统浏览器打开(复用已登录的美团账号);完成后自动加入列表": "Abre no navegador do sistema (reaproveita a conta Meituan já conectada); ao concluir, entra automaticamente na lista", "系统浏览器打开(复用已登录账号);完成后自动加入列表": "Abre no navegador do sistema (reaproveita a conta já conectada); ao concluir, entra automaticamente na lista", "系统默认浏览器": "Navegador padrão do sistema", "组织登录地址(Start URL)": "Endereço de login da organização (Start URL)", "继续新建独立提供商": "Criar um provedor separado", "续期令牌": "Token de atualização", "编码套餐 API Key": "API Key do Coding Plan", "网关 Secret": "Segredo do gateway", "网关未返回有效的手动回调输入契约;请更新网关后重新发起。": "O gateway não retornou um contrato válido de entrada de callback manual. Atualize o gateway e inicie novamente.", "网页 Cookie": "Cookie web", "网页登录": "Login web", "网页登录 / 填写凭证": "Login web / Inserir credenciais", "网页登录的打开方式": "Como abrir o login web", "网页登录(Zai / Google)": "Login web (Zai / Google)", "网页访问令牌": "Token de acesso web", "腾讯 TokenHub 国内版(按量)": "Tencent TokenHub (China, por uso)", "腾讯 TokenHub 国内站按量 API;使用 TokenHub API Key,不是 Token Plan 套餐或 WorkBuddy 凭证": "API por uso do Tencent TokenHub China; use uma API Key do TokenHub, não credenciais do Token Plan ou do WorkBuddy", "腾讯 TokenHub 国际版(按量)": "Tencent TokenHub (Internacional, por uso)", "腾讯 TokenHub 国际站按量 API;使用 TokenHub API Key,不是 Token Plan 套餐或 WorkBuddy 凭证": "API por uso do Tencent TokenHub Internacional; use uma API Key do TokenHub, não credenciais do Token Plan ou do WorkBuddy", "自定义": "Personalizado", "自建聚合面板:填你自己的站点地址。余额查询用该账号的 API Key 打 {base}/v1/usage,不需要额外配置": "Painel de agregação próprio: preencha o endereço do seu site. A consulta de saldo chama {base}/v1/usage com a chave de API desta conta; sem configuração extra", "自建聚合面板:填你自己的站点地址;余额查询要另填 NewAPI 的个人访问令牌(见下方「余额查询」一段)": "Painel de agregação próprio: preencha o endereço do seu site; a consulta de saldo precisa também de um token de acesso pessoal do NewAPI (veja \"Consulta de saldo\" abaixo)", "获取风控配置失败,将直接尝试领取:{message}": "Falha ao obter a configuração de controle de risco; tentando resgatar diretamente: {message}", "获取风控配置失败:{message}": "Não foi possível carregar as configurações de verificação: {message}", "获取验证码": "Obter código", "要添加到其他站点,请返回「已建 API」重新选择": "Para adicionar a outro site, volte a APIs configuradas e selecione-o", "解锁 Premium": "Desbloquear Premium", "访客模式": "Modo visitante", "访客模式(免登录)": "Modo visitante (sem login)", "访问令牌": "Token de acesso", "该上游无需鉴权(不发送鉴权头)": "Este upstream não exige autenticação (nenhum cabeçalho de autenticação é enviado)", "该地址已有提供商": "Já existe um provedor com este endereço", "该提供商": "Este provedor", "该提供商已不存在或地址已变更,请重新选择": "Este provedor não existe mais ou seu endereço mudou; selecione-o novamente", "该提供商已不存在(可能已被删除),请刷新后重试": "Este provedor não existe mais (pode ter sido excluído); atualize e tente novamente", "该提供商账号添加功能即将上线": "A adição de contas deste provedor chega em breve", "该登录需要继续跳转,请在网关桌面面板重新发起。": "Este login exige outro redirecionamento. Reinicie-o no painel desktop do gateway.", "该自定义提供商已不存在(可能已被删除),请刷新后重试": "Este provedor personalizado não existe mais (pode ter sido excluído); atualize e tente novamente", "请使用网页访问令牌,不要填写 sk- 开头的 API Key。": "Use um token de acesso web, não uma API Key que comece com sk-.", "请先选择一个自定义提供商": "Selecione primeiro um provedor personalizado", "请在弹出的滑块中完成验证(官方要求的风控步骤)": "Conclua a verificação no slider exibido (etapa de controle de risco exigida pelo provedor)", "请在插件打开的专用 Chrome 窗口中登录移动云(yun.139.com)。登录成功后会自动读取并验证凭据,随后继续添加账号。": "Entre no China Mobile Cloud (yun.139.com) na janela dedicada do Chrome aberta pelo plugin. Após o login, as credenciais são lidas e verificadas automaticamente, e a conta é adicionada.", "请在插件打开的端砚控制台窗口中登录(支持密码、短信或扫码)。插件会自动读取登录结果并关闭窗口,无需手动关闭;随后按所选方式创建或复用 API Key。新建密钥的明文只显示一次,由插件保存。": "Entre no console do InkStone na janela aberta pelo plugin usando senha, SMS ou QR code. O plugin lê o resultado e fecha a janela automaticamente. Em seguida, cria ou reutiliza uma API Key conforme o método selecionado. O valor de uma nova chave aparece apenas uma vez e é salvo pelo plugin.", "请在插件打开的端砚控制台窗口中登录(支持密码、短信或扫码),然后退出该浏览器:macOS 请按 Cmd+Q(只关闭窗口不够),Linux 请关闭最后一个窗口。插件读取登录结果后会继续处理,并按所选方式创建或复用 API Key。新建密钥的明文只显示一次,由插件保存。": "Entre no console do InkStone na janela aberta pelo plugin usando senha, SMS ou QR code e encerre esse navegador: no macOS, pressione Cmd+Q (fechar a janela não basta); no Linux, feche a última janela. O plugin lê o resultado e cria ou reutiliza uma API Key conforme o método selecionado. O valor de uma nova chave aparece apenas uma vez e é salvo pelo plugin.", "请在系统浏览器完成官方登录。": "Conclua o login oficial no navegador do sistema.", "请在运行网关的机器上打开 PowerShell,执行下面的专用登录命令,并按官方提示完成授权。面板会自动检测登录结果,不需要粘贴凭证。": "Abra o PowerShell na máquina do gateway, execute o comando de login dedicado abaixo e siga as instruções oficiais de autorização. O painel detecta a conclusão automaticamente; não é necessário colar credenciais.", "请在运行网关的机器上打开终端,执行下面的专用登录命令,并按官方提示完成授权。面板会自动检测登录结果,不需要粘贴凭证。": "Abra um terminal na máquina do gateway, execute o comando de login dedicado abaixo e siga as instruções oficiais de autorização. O painel detecta a conclusão automaticamente; não é necessário colar credenciais.", "请填写 11 位大陆手机号": "Informe um número de celular da China continental com 11 dígitos", "请填写 6 位数字验证码": "Informe o código de 6 dígitos", "请填写 Base URL": "Preencha a Base URL", "请填写 {label}": "Preencha {label}", "请填写名称": "Preencha o nome", "请安装并启用对应的提供商插件;列表为空时请刷新后重试。": "Instale e habilite o plugin do provedor correspondente. Se a lista estiver vazia, atualize e tente novamente.", "请完成验证…": "Conclua a verificação…", "请选择客户端凭证文件,或本软件导出的单账号 JSON 文件": "Selecione um arquivo de credenciais do cliente ou um arquivo JSON de conta individual exportado por este aplicativo.", "读取 %APPDATA%/AutoClaw/auth.json 并解密,仅 Windows": "Lê e descriptografa %APPDATA%/AutoClaw/auth.json; somente no Windows", "读取 ~/.cline/data/settings/providers.json,需已在 Cline 客户端登录": "Lê ~/.cline/data/settings/providers.json; requer login no cliente Cline", "读取 ~/.meituan-catpaw/auth.json,需已在 CatPaw 客户端登录": "Lê ~/.meituan-catpaw/auth.json; requer login no cliente CatPaw", "读取本机 KukuAI 客户端登录态(%APPDATA%\\baidugenflowpro\\Network\\Cookies),需已在 KukuAI 客户端登录": "Lê a sessão de login do cliente KukuAI desta máquina (%APPDATA%\\baidugenflowpro\\Network\\Cookies); requer login no cliente KukuAI", "读取本机 OrcaTerm 客户端登录态(%APPDATA%\\com.orcaterm-desktop.app\\data.bin),需已在 OrcaTerm 客户端登录": "Lê o estado de login do cliente OrcaTerm local (%APPDATA%\\com.orcaterm-desktop.app\\data.bin); é preciso estar logado no cliente OrcaTerm", "读取本机已登录豆包工作客户端的 Cookie,每次请求实时读取;客户端需使用 --remote-debugging-port=9342 启动。本软件不修改、关闭或重启客户端。": "Lê os cookies do cliente Doubao Work local conectado a cada solicitação. Inicie o cliente com --remote-debugging-port=9342. Este aplicativo não modifica, fecha ou reinicia o cliente.", "读取本机智谱清言客户端登录态(%APPDATA%\\chatglm\\Network\\Cookies),需已在客户端登录": "Lê o estado de login do cliente 智谱清言 local (%APPDATA%\\chatglm\\Network\\Cookies); o cliente precisa estar conectado", "读取的是网关电脑上已登录的客户端,不是打开面板的电脑;也可改用粘贴凭据。": "Lê o cliente conectado na máquina do gateway, não no computador que exibe o painel. Também é possível colar as credenciais.", "读取网关所在机器上 kiro-cli 或 Kiro IDE 的登录态,不是当前浏览器所在电脑的账号;续期后会写回原处。": "Lê o login do kiro-cli ou Kiro IDE na máquina do gateway, não no computador deste navegador. As credenciais renovadas são gravadas no local original.", "读取运行网关的电脑上已登录的 QuWork,只保存本机引用,不修改官方客户端文件;切换账号后需重新导入。": "Lê o QuWork conectado na máquina do gateway e salva apenas uma referência local, sem alterar arquivos oficiais. Importe novamente após trocar de conta.", "读本机官方客户端(Tencent WorkBuddy / WorkBuddy AI)当前登录的账号:自动定位其凭证目录里最新的登录态文件(需已在本机官方客户端登录)。导入后由网关自动续期,无需跟随 2 小时时效手动换令牌。": "Lê a conta atualmente conectada no cliente oficial (Tencent WorkBuddy / WorkBuddy AI) nesta máquina: o arquivo de sessão mais recente no diretório de credenciais é localizado automaticamente (é preciso estar conectado ao cliente oficial nesta máquina). Após a importação, o gateway renova o token automaticamente — não é preciso trocar tokens manualmente conforme a validade de 2 horas.", "读本机客户端当前登录态(明文 Cookie,无需解密)。客户端运行时 Cookies 文件被独占占用,导入前请先关闭 KukuAI 客户端。": "Lê a sessão de login atual do cliente desta máquina (Cookie em texto claro, sem descriptografia). Com o cliente em execução, o arquivo Cookies fica em uso exclusivo; feche o cliente KukuAI antes de importar.", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。": "Lê a sessão de login atual do cliente desta máquina, em tempo real a cada vez (excluir este registro não afeta a sessão de login do cliente).", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。客户端重新登录后点「刷新 Token」同步。": "Lê a sessão de login atual do cliente desta máquina, em tempo real a cada vez (excluir este registro não afeta a sessão de login do cliente). Após entrar novamente no cliente, clique em \"Atualizar Token\" para sincronizar.", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。客户端重新登录后重新导入即可。": "Lê a sessão de login atual do cliente desta máquina, em tempo real a cada vez (excluir este registro não afeta a sessão de login do cliente). Após entrar novamente no cliente, basta importar de novo.", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。用 Zai / Google 登录客户端的用户走这一条。": "Lê a sessão de login atual do cliente desta máquina, em tempo real a cada vez (excluir este registro não afeta a sessão de login do cliente). Usuários que entram no cliente com Zai / Google devem usar esta opção.", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。这一条归入 {label}。": "Lê a sessão de login atual do cliente desta máquina, em tempo real a cada vez (excluir este registro não afeta a sessão de login do cliente). Esta opção fica em {label}.", "读本机客户端当前登录的 OAuth 令牌(明文 JSON,无需解密)。导入后由网关自动续期,无需跟随客户端的 2 小时时效手动换令牌。": "Lê o token OAuth com que o cliente local está logado (JSON em texto claro, sem descriptografia). Após importar, o gateway renova automaticamente — não é preciso acompanhar a expiração de 2 horas do cliente.", "读本机客户端当前的登录态。客户端的 Cookies 是 DPAPI 加密的(Chromium os_crypt),因此仅 Windows 可用;客户端正在运行时可能读不到该文件,先退出客户端再试即可(也可改用「填写凭证」粘贴令牌)。": "Lê o estado de login atual do cliente local. Os cookies do cliente são criptografados com DPAPI (Chromium os_crypt), portanto isto funciona somente no Windows; o arquivo pode ficar ilegível enquanto o cliente está aberto — feche o cliente e tente de novo (ou use \"Preencher credenciais\" para colar um token).", "豆包工作": "Doubao Work", "账号信息": "Informações da conta", "账号信息不完整,请刷新后重试": "Informações da conta incompletas; atualize e tente novamente", "账号名由插件自动获取,添加后可修改。": "O plugin preenche o nome da conta automaticamente; você pode alterá-lo após adicionar.", "账号已添加,但代理选择未确认保存;请在账号设置中重新检查。": "Conta adicionada, mas o salvamento da seleção de proxy não foi confirmado. Confira nas configurações da conta.", "账号已添加,但未返回账号 ID,无法保存登录代理选择。": "Conta adicionada, mas nenhum ID foi retornado; não foi possível salvar a seleção de proxy do login.", "账号已添加,但请留意:{warning}": "Conta adicionada, mas atenção: {warning}", "账号已添加,但账号列表同步失败,请刷新重试。": "Conta adicionada, mas a sincronização da lista de contas falhou. Atualize e tente novamente.", "账号文件的提供商与当前选择不一致,请选择对应的提供商后再导入": "O arquivo da conta pertence a outro provedor. Selecione o provedor correspondente antes de importar.", "账号版本": "Edição da conta", "账号类型": "Tipo de conta", "账号:{name}
    ": "Conta: {name}
    ", "走 Inference Providers 路由,Key 在 hf.co/settings/tokens 创建": "Usa a rota Inference Providers; crie a Key em hf.co/settings/tokens", "返回提供商列表": "Voltar aos provedores", "还没有可用的提供商。各家提供商的转发与账号实现都在插件包里,装好之后这里就会出现。": "Ainda não há provedores disponíveis. O encaminhamento e o tratamento de contas de cada provedor ficam em pacotes de plugin; eles aparecem aqui assim que um pacote for instalado.", "还没有账号": "Ainda não há contas", "还需完成 AWS 授权:请打开下一步授权页,完成后回填新的完整回调地址。": "A autorização AWS ainda é necessária. Abra a próxima página de autorização e cole a nova URL de callback completa ao concluir.", "还需继续授权,请打开下一步授权页,完成后回填新的完整回调地址。": "É necessária mais uma autorização. Abra a próxima página e, ao concluir, cole a nova URL de callback completa.", "这一家当前不支持网页登录,请改用填写凭证": "Este provedor não suporta login web no momento; use \"Preencher credenciais\"", "这个账号当前没有可自动领的活动(只自动领每日登录赠送积分)": "Esta conta não tem campanhas com resgate automático no momento (apenas os pontos de brinde do login diário são resgatados automaticamente)", "这份额度走「活动套餐」通道:若转发时提示编码套餐已到期,": "Esta cota passa pelo canal \"Start Plan\": se o encaminhamento avisar que o Coding Plan expirou, ", "这里填国内站(modelscope.cn)的账号:请粘贴国内站的令牌。国际站(modelscope.ai)是另一家 provider、另一套账号,两边的令牌不通用。": "Aqui é a conta do site chinês (modelscope.cn): cole o token do site chinês. O site internacional (modelscope.ai) é outro provedor com outra conta; os tokens não são intercambiáveis entre os dois.", "这里填国内站(monkeycode-ai.com)的账号:请粘贴国内站的 session。国际站(monkeycode-ai.net)是另一家 provider、另一套账号,两边的凭证不通用。": "Aqui é a conta do site da China (monkeycode-ai.com): cole a sessão do site da China. O site internacional (monkeycode-ai.net) é outro provedor, com conta própria; as credenciais não são compartilhadas entre os dois.", "这里填国际站(modelscope.ai)的账号:请粘贴国际站的令牌。国内站(modelscope.cn)是另一家 provider、另一套账号,两边的令牌不通用。": "Aqui é a conta do site internacional (modelscope.ai): cole o token do site internacional. O site chinês (modelscope.cn) é outro provedor com outra conta; os tokens não são intercambiáveis entre os dois.", "这里填国际站(monkeycode-ai.net)的账号:请粘贴国际站的 session。国内站(monkeycode-ai.com)是另一家 provider、另一套账号,两边的凭证不通用。": "Aqui é a conta do site internacional (monkeycode-ai.net): cole a sessão do site internacional. O site da China (monkeycode-ai.com) é outro provedor, com conta própria; as credenciais não são compartilhadas entre os dois.", "选择 CatPaw 客户端的登录态文件 auth.json(Windows:C:\\Users\\<你的用户名>\\.meituan-catpaw\\auth.json;macOS / Linux:~/.meituan-catpaw/auth.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端。": "Selecione o arquivo de sessão de login auth.json do cliente CatPaw (Windows: C:\\Users\\\\.meituan-catpaw\\auth.json; macOS / Linux: ~/.meituan-catpaw/auth.json). Após a importação, as credenciais ficam no gateway e podem ser encaminhadas de forma independente — sem depender mais do cliente desta máquina.", "选择 Cline 客户端的登录态文件 providers.json(Windows:C:\\Users\\<你的用户名>\\.cline\\data\\settings\\providers.json;macOS / Linux:~/.cline/data/settings/providers.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端;这一条归入 {label}。": "Selecione o arquivo de sessão de login providers.json do cliente Cline (Windows: C:\\Users\\\\.cline\\data\\settings\\providers.json; macOS / Linux: ~/.cline/data/settings/providers.json). Após a importação, as credenciais ficam no gateway e podem ser encaminhadas de forma independente — sem depender mais do cliente desta máquina; este registro entra em {label}.", "选择 KukuAI 客户端的 Cookies 文件(%APPDATA%\\baidugenflowpro\\Network\\Cookies):它是**二进制** SQLite 数据库(无扩展名,不是 JSON)。导入时读的是你选中文件的副本、不和运行中的客户端抢占用,因此**无需先关闭客户端**。导入后凭证直接落在网关、可独立转发。": "Selecione o arquivo Cookies do cliente KukuAI (%APPDATA%\\baidugenflowpro\\Network\\Cookies): é um banco SQLite **binário** (sem extensão, não é JSON). A importação lê uma cópia do arquivo selecionado e não disputa o bloqueio com o cliente em execução, então **não é preciso fechar o cliente antes**. Após a importação, as credenciais ficam no gateway e podem ser encaminhadas de forma independente.", "选择 OAuth auth.json 的绝对路径(不扫描其他目录)": "Selecionar o caminho absoluto do auth.json OAuth (sem pesquisar outros diretórios)", "选择凭证文件导入": "Importar de arquivo de credenciais", "选择包含 Cookie 的 JSON 对象,或本软件导出的单账号 JSON 文件。导入后可独立使用,不需要持续运行豆包工作客户端。": "Selecione um objeto JSON com cookies ou um JSON de conta única exportado por este aplicativo. A conta importada funciona de forma independente, sem manter o cliente Doubao Work em execução.", "选择包含 Tabbit Cookie / JWT 的 JSON 或文本文件;也可以直接粘贴到上方表单。": "Escolha um arquivo JSON ou de texto com o Cookie / JWT do Tabbit; você também pode colar no formulário acima.", "选择包含该提供商凭证的 JSON 文件,或本软件导出的单账号 JSON 文件。导入后凭证保存在网关,可独立使用。": "Selecione um arquivo JSON com as credenciais deste provedor ou um arquivo JSON de conta individual exportado por este aplicativo. As credenciais importadas ficam armazenadas no gateway e podem ser usadas de forma independente.", "选择官方客户端的登录态凭证文件(workbuddy-desktop.info / workbuddy-desktop-ai.info)或 wb2api 导出的账号 JSON(嵌套 / 扁平形均可)。": "Selecione o arquivo de credenciais de sessão do cliente oficial (workbuddy-desktop.info / workbuddy-desktop-ai.info) ou um JSON de conta exportado pelo wb2api (formato aninhado ou plano).", "选择小浣熊客户端的登录态文件 auth.json(Windows:C:\\Users\\<你的用户名>\\.box-agent\\config\\auth.json;macOS / Linux:~/.box-agent/config/auth.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端。": "Selecione o arquivo de sessão de login auth.json do cliente Raccoon (Windows: C:\\Users\\\\.box-agent\\config\\auth.json; macOS / Linux: ~/.box-agent/config/auth.json). Após a importação, as credenciais ficam no gateway e podem ser encaminhadas de forma independente — sem depender mais do cliente desta máquina.", "选择提供商": "Selecionar provedor", "选择新增账号或重新授权当前注册": "Escolher nova conta ou reautorizar o registro atual", "选择的文件不是合法 JSON": "O arquivo selecionado não é um JSON válido", "选择要添加账号的提供商": "Selecione o provedor para adicionar uma conta", "选择预置客户端": "Escolher cliente predefinido", "重新扫描": "Escanear novamente", "重新授权所选账号(固定原身份和 clientId)": "Reautorizar a conta selecionada (manter identidade e clientId)", "重新读取提供商": "Recarregar provedores", "鉴权": "Autenticação", "阿里云 Token Plan 套餐(国际站)": "Plano Token Plan do Alibaba Cloud (site internacional)", "阿里云百炼 Coding 套餐(国内站)": "Plano Coding do Alibaba Cloud Model Studio (site da China)", "阿里云百炼 Coding 套餐(国际站)": "Plano Coding do Alibaba Cloud Model Studio (site internacional)", "阿里云百炼模型服务(国际站,OpenAI 兼容模式)": "Serviço de modelos Alibaba Cloud Model Studio (site internacional, modo compatível com OpenAI)", "隐藏凭证": "Ocultar credenciais", "需要图形验证码:登录窗口已弹出,请填写后继续": "Captcha necessário: a janela de login foi aberta; preencha para continuar", "需要手动提交授权回调": "Callback de autorização manual necessário", "需要时填写完整 Cookie": "Cole o Cookie completo se necessário", "需要进行人机验证": "Verificação humana necessária", "预置 API": "API predefinida", "领取 CodeArts 每日福利": "Resgatar benefício diário do CodeArts", "领取失败:{message}": "Falha ao resgatar: {message}", "领取并让官方确认": "Resgatar e aguardar confirmação oficial", "风控验证配置不完整,请稍后重试": "Configuração de verificação de controle de risco incompleta; tente novamente mais tarde", "验证码": "Código de verificação", "验证码业务请求超时,请刷新状态后重试": "A operação após a verificação expirou. Atualize o status antes de tentar novamente.", "验证码令牌入池接口不可用": "A API de envio de tokens de verificação está indisponível.", "验证码令牌未全部入池": "O token de verificação não foi aceito no pool.", "验证码令牌池未返回状态": "O pool de tokens de verificação não retornou um status.", "验证码已使用,请重新验证": "Este token de verificação já foi usado. Verifique novamente.", "验证码已发送。收到后填入下方并点「登录并添加」": "Código enviado. Informe-o abaixo e clique em \"Entrar e adicionar\"", "验证码已发送,请查看手机短信": "Código enviado; verifique o SMS", "验证码已发送,请查看手机短信。填入下方并点「登录并添加」即完成登录": "Código enviado; verifique o SMS. Informe-o abaixo e clique em \"Entrar e adicionar\" para concluir o login", "验证码已发送,请查看短信": "Código enviado; verifique as mensagens", "验证码校验失败,请重试": "Falha na verificação do captcha; tente novamente", "验证码校验超时,请重试": "Tempo esgotado na verificação do captcha; tente novamente", "验证码组件不可用,请重试": "Componente de captcha indisponível; tente novamente", "验证码组件初始化超时,请重试": "Tempo esgotado ao inicializar o componente de captcha; tente novamente", "验证码组件加载失败,请检查网络后重试": "Falha ao carregar o componente de captcha; verifique a rede e tente novamente", "验证码组件加载异常,请重试": "Erro ao carregar o componente de captcha; tente novamente", "验证码组件加载超时,请检查网络后重试": "Tempo esgotado ao carregar o componente de captcha; verifique a rede e tente novamente", "验证码组件未加载,请重启应用后重试": "O componente de captcha não foi carregado; reinicie o aplicativo e tente novamente", "验证码组件返回的验证串不完整(请重试)": "O componente de verificação retornou um token incompleto. Tente novamente.", "验证被上游风控拒绝,请稍后重试": "O serviço de segurança do provedor rejeitou a verificação. Tente novamente mais tarde.", "验证请求过于频繁,请稍后重试": "As solicitações de verificação estão muito frequentes. Tente novamente mais tarde.", "默认开启;填 0 关闭(发送「已设为默认浏览器」标记)": "Ativado por padrão; digite 0 para desativar (envia o marcador \"definido como navegador padrão\")", "(免费额度池,模型名带 cline-free/ 前缀)。": " (pool de cota gratuita; nomes de modelo com o prefixo cline-free/).", "(其中 {n} 把恢复为不限制)": " ({n} das quais voltaram a ser ilimitadas)", "(必填)": " (obrigatório)", "(有效期 {window})": "(validade {window})", "(订阅池,模型名带 cline-pass/ 前缀,需要账号有对应订阅)。": " (pool de assinatura; nomes de modelo com o prefixo cline-pass/, e a conta precisa da assinatura correspondente).", ",下一次最快 {minutes} 分钟后": ", próxima tentativa em pelo menos {minutes} min", ",并从 {n} 把 Key 的可用提供商里移除": ", e removido dos provedores permitidos de {n} keys", " · 思考等级 ": " · Nível de raciocínio ", " · 思考等级 {level}": " · Nível de raciocínio {level}", " · 有映射 ": " · Com mapeamento: ", " · 限额中": " · Em cooldown de limite", " → 转发": " → encaminhar para", " 上登记上游模型": " registrar o modelo upstream", " 与 ": " e ", " 个": " modelos", " 个模型 · 已启用 ": " modelos · Ativados: ", " 个账号": " contas", " 会广告它、请求它也会被转发到这家。 支持字母、数字与 ": " passa a anunciá-lo, e as requisições a ele também são encaminhadas para este provedor. Suporta letras, números e ", " 失败": " com falha", " 已发出,等待上游首帧…": " — requisição enviada, aguardando o primeiro frame do upstream…", " 成功 ·": " com sucesso ·", " 这类符号,但不能含空格或换行,且不超过 128 个字符。同一提供商内,同名绑定最多启用一条;已有启用绑定时不能新增,启用备用绑定会自动关闭其他同名绑定。不同提供商可各启用一条同名绑定,用于主备切换。": " símbolos como esses, mas sem espaços nem quebras de linha, e no máximo 128 caracteres. Apenas um vínculo com o mesmo nome pode estar ativado por provedor. Desative o vínculo ativo antes de adicionar outro. Ativar um vínculo de reserva desativa automaticamente os demais. Provedores diferentes podem ativar um vínculo cada com esse nome para failover.", " 里的 ": ": ", "(全局)": "(Global)", "(未选)": "(Não selecionado)", "0 家": "0 provedores", "<上游模型 ID>": "", "<上游模型>": "", "<对外名>": "", "models.dev 补齐:对下游声明 {value}": "Preenchido pelo models.dev: declarado ao downstream como {value}", "{action}映射 {alias}": "{action} mapeamento {alias}", "{id}({name})": "{id} ({name})", "{label}要填 1 ~ 1 亿之间的整数(留空 = {inherit})": "{label} deve ser um número inteiro entre 1 e 100 milhões (vazio = {inherit})", "{label}:{value}(对下游声明的精确值){origin}{suffix}": "{label}: {value} (valor exato declarado ao downstream){origin}{suffix}", "{label}:{value}(对下游声明的精确值){suffix}": "{label}: {value} (valor exato declarado ao downstream){suffix}", "{label}:上游未声明{suffix}": "{label}: não declarado pelo upstream{suffix}", "{label}:上游未声明(下游会按不支持处理){suffix}": "{label}: não declarado pelo upstream (o downstream tratará como não suportado){suffix}", "{label}:不支持{origin}{suffix}": "{label}: Não compatível{origin}{suffix}", "{label}:不支持{suffix}": "{label}: não suportado{suffix}", "{label}:支持{origin}{suffix}": "{label}: Compatível{origin}{suffix}", "{label}:支持{suffix}": "{label}: suportado{suffix}", "{level}(本次指定)": "{level} (especificado desta vez)", "{name}({id})": "{name} ({id})", "{name}(不在该家当前清单里)": "{name} (fora do catálogo atual deste provedor)", "{n} 个": "{n}", "{n} 个映射": "{n} mapeamentos", "{n} 个模型": "{n} modelos", "{n} 字节": "{n} bytes", "{provider}:模型清单为空,等待获取": "{provider}: o catálogo de modelos está vazio, aguardando a busca", "{status}:模型获取失败": "{status}: Falha ao buscar modelos", "{total} 家 · 成功 {done}": "{total} provedores · {done} com sucesso", "{total} 家 · 成功 {done} · 失败 {failed}": "{total} provedores · {done} com sucesso · {failed} com falha", "✅ 已保存 {id} 的能力位({provider})": "✅ Capacidades de {id} salvas ({provider})", "✅ 已导入 {added} 个模型({skipped} 个已存在,跳过)": "✅ {added} modelos importados ({skipped} já existiam, ignorados)", "✅ 已更新 {name} 的思考等级": "✅ Nível de raciocínio de {name} atualizado", "✅ 已添加映射 {name} → {target}({label}){suffix}": "✅ Mapeamento adicionado: {name} → {target} ({label}){suffix}", "✅ 已登记 {name}({label}),但该提供商还没有可用账号,这一行要加上账号后才会显示": "✅ {name} registrado ({label}), mas este provedor ainda não tem contas disponíveis; esta linha só aparecerá depois de adicionar uma conta", "✅ 已登记模型 {name}({label})": "✅ Modelo {name} registrado ({label})", "✅ 已登记自定义模型 {name}({label})": "✅ Modelo personalizado {name} registrado ({label})", "✅ 批量{action}完成:共 {n} 个模型": "✅ Ação em lote concluída ({action}): {n} modelos no total", "✅ 批量{action}完成:共 {n} 个模型(跳过不可删除的 {skipped} 个)": "✅ Ação em lote concluída ({action}): {n} modelos no total ({skipped} não removíveis ignorados)", "。": ".", "。上游清单给的值不准时,在这里改;": ". Quando os valores do catálogo upstream estiverem incorretos, ajuste aqui;", "。同一对外名可在多个提供商各添加一条: 下游用同一个名字请求,网关按账号优先级主备切换,失败自动落到下一个提供商。": ". O mesmo nome externo pode ser adicionado em vários provedores: o downstream solicita com o mesmo nome, o Gateway alterna entre principal e reserva conforme a prioridade das contas e, em caso de falha, passa automaticamente para o próximo provedor.", "「恢复继承」会把这一项交还给上游清单的值。": "“Restaurar herança” devolve este item ao valor do catálogo upstream.", "「来源」列会标成": "A coluna “Origem” será marcada como ", "上下文 / 输出": "Contexto / Saída", "上下文窗口": "Janela de contexto", "上下文窗口 {input} / 最大输出 Token {output} —— 点击修改模型能力": "Janela de contexto {input} / Saída máxima de tokens {output} — clique para editar as capacidades do modelo", "上游 {model}": "Upstream {model}", "上游不认识这个模型名:先点「获取模型」刷新清单,或核对默认绑定指向的上游模型。": "O upstream não reconhece este nome de modelo: clique em “Buscar modelos” para atualizar o catálogo ou confira o modelo upstream apontado pelo vínculo padrão.", "上游原始响应": "Resposta bruta do upstream", "上游可用档位:{levels}": "Níveis compatíveis no upstream: {levels}", "上游固定为 {level},绑定其他等级也无法调高。": "O upstream está fixo em {level}; vincular outro nível não pode aumentá-lo.", "上游已经不再提供这个模型(可能已下线或改了 ID)": "O upstream não oferece mais este modelo (pode ter sido descontinuado ou renomeado).", "上游拒绝了这条登录态:重新登录一次,或把这条账号删掉。": "O upstream rejeitou esta sessão de login: faça login novamente ou exclua esta conta.", "上游未声明": "Não declarado pelo upstream", "上游未声明(下游会按不支持处理)": "Não declarado pelo upstream (o downstream tratará como não suportado)", "上游未部署": "Não implantado no upstream", "上游模型": "Modelo upstream", "上游模型 ID": "ID do modelo upstream", "上游没在预算内给完回答。可以只勾一个账号再测一次,看是普遍慢还是某一个账号慢。": "O upstream não terminou a resposta dentro do orçamento. Marque só uma conta e teste de novo para ver se a lentidão é geral ou de uma conta específica.", "上游没有给出可读的错误说明": "O upstream não forneceu uma descrição de erro legível", "上游没有返回任何模型": "O upstream não retornou nenhum modelo", "上游目录列出了这个模型,但推理端尚未识别;保留在清单中,后续探测成功后自动清除标记": "O catálogo upstream lista este modelo, mas o backend de inferência ainda não o reconhece. Ele permanece no catálogo, e o marcador é removido automaticamente após uma sondagem bem-sucedida.", "上游目录尚未拉到,用的是内置静态清单;点「刷新模型清单」可重试": "O catálogo upstream ainda não foi obtido; usando o catálogo estático integrado. Clique em “Atualizar catálogo de modelos” para tentar de novo", "上游能列出这个模型,但官方客户端不展示它;本仓已默认关闭它的默认绑定(点这一行的开关可以手动打开)": "O upstream lista este modelo, mas o cliente oficial não o exibe; o gateway desativou a vinculação padrão (use o interruptor da linha para ativar manualmente)", "下游客户端": "cliente downstream", "下游请求 ": "Requisição do downstream ", "不展示": "Não exibido", "不影响网关的转发与路由": "Não afeta o encaminhamento nem o roteamento do Gateway", "不支持": "Não suportado", "不覆盖": "Não sobrescrever", "两边原因不一样时各自处理。如果": "Se os motivos forem diferentes em cada lado, trate cada um separadamente. Caso ", "中止测试": "Abortar teste", "仅支持已识别压缩格式的 ZCode;客户端修改压缩格式后可能需要更新适配。": "Apenas formatos de compactação reconhecidos do ZCode são compatíveis. Mudanças no formato pelo cliente podem exigir uma atualização da integração.", "仅本次测试临时生效,不修改账号保存的代理配置。可选「网络代理」页里的节点或强制直连。": "Válido apenas para este teste, sem alterar a configuração de proxy salva na conta. Escolha um nó da página Proxies de Rede ou force conexão direta.", "从这一家的上游拉一份模型清单,勾选要哪些再导入(已添加的不会重复导入)": "Buscar uma vez o catálogo de modelos no upstream deste provedor; marque os desejados e importe (os já adicionados não são importados de novo)", "代理池响应异常": "Resposta inválida do pool de proxies", "以模型本名直发": "Enviar direto com o nome real do modelo", "以这个上游模型发一次最小请求,走真实转发链路": "Enviar uma requisição mínima com este modelo upstream pela rota real de encaminhamento", "例如 gpt-4o": "por exemplo, gpt-4o", "例如 gpt-5.5-preview": "por exemplo, gpt-5.5-preview", "保存": "Salvar", "保存中…": "Salvando…", "保存失败:{message}": "Falha ao salvar: {message}", "保存映射": "Salvar mapeamento", "保存等级": "Salvar nível", "倍率": "Multiplicador", "倍率升序": "Multiplicador crescente", "倍率升序,点击切换为降序": "Multiplicador crescente; clique para alternar para decrescente", "倍率降序": "Multiplicador decrescente", "倍率降序,点击切换为升序": "Multiplicador decrescente; clique para alternar para crescente", "全选当前筛选出的模型(跨分页);再点取消": "Seleciona todos os modelos filtrados no momento (em todas as páginas); clique de novo para desmarcar", "全选当前筛选结果": "Selecionar todos os resultados filtrados", "全选未添加": "Selecionar todos os não adicionados", "全选({n})": "Selecionar tudo ({n})", "全部": "Todos", "全部删除": "Excluir tudo", "全部映射": "todos os mapeamentos", "全部自定义提供商": "Todos os provedores personalizados", "全部({n} 家)": "Todos ({n} provedores)", "共 {n} 家 · 点「获取模型」开始": "{n} provedores · clique em “Buscar modelos” para começar", "关闭": "Fechar", "关闭即中止": "Fechar aborta o teste", "关闭后保留规则,所有请求按原模型处理。": "Ao desativar, as regras são mantidas e todas as requisições usam o modelo original.", "其余 {n} 个会被跳过。": "Os outros {n} serão ignorados.", "内置": "Integrado", "内置提供商": "Provedor integrado", "内置清单": "Catálogo integrado", "再测一次": "Testar novamente", "删除": "Excluir", "删除中…": "Excluindo…", "删除入口未就绪,请重试或重启应用": "O recurso de exclusão ainda não está pronto; tente de novo ou reinicie o aplicativo", "删除全部未挂载映射": "Excluir todos os mapeamentos não vinculados", "删除映射": "Excluir mapeamento", "删除映射 {alias}": "Excluir mapeamento {alias}", "删除未挂载的映射": "Excluir mapeamento não vinculado", "删除自定义提供商": "Excluir provedor personalizado", "删除规则 {n}": "Excluir regra {n}", "删除这个自定义提供商(连同名下账号)": "Excluir este provedor personalizado (junto com suas contas)", "删除这条映射": "Excluir este mapeamento", "删除选中的模型": "Excluir os modelos selecionados", "刷新全部家(逐家打上游)": "Atualizar todos os provedores (cada um acessa o upstream uma vez)", "刷新完成,但没有得到任何结果": "Atualização concluída, mas nenhum resultado foi obtido", "刷新模型管理页里各提供商的远程模型目录,逐家结果列在弹窗里": "Atualiza o catálogo remoto de modelos de cada provedor na página de gerenciamento de modelos; os resultados por provedor aparecem num diálogo", "刷新清单": "Atualizar catálogo", "加载中…": "Carregando…", "勾上它,导入后即进入这家的清单": "Marque para que ele entre no catálogo deste provedor após a importação", "勾几个就并行测几次;默认选队列里最靠前的一个。": "Cada conta marcada roda um teste em paralelo; por padrão, a primeira da fila é selecionada.", "勾选后可批量操作": "Marque para habilitar ações em lote", "压缩模型": "Modelo de compactação", "压缩路由": "Roteamento de compactação", "压缩路由入口尚未就绪,请刷新页面后重试": "O roteamento de compactação ainda não está pronto. Atualize a página e tente novamente.", "压缩路由已保存,下次压缩请求生效": "Roteamento de compactação salvo. Será aplicado à próxima requisição de compactação.", "压缩路由接口返回了不完整的数据": "A API de roteamento de compactação retornou dados incompletos.", "原始 ID 已作为默认绑定,请直接使用该绑定的开关或等级按钮": "O ID original já é o vínculo padrão; use diretamente o interruptor ou o botão de nível desse vínculo", "原始 ID 的默认绑定不能删除,请关闭它的开关": "O vínculo padrão do ID original não pode ser excluído. Desative-o pelo botão de alternância.", "取消": "Cancelar", "另有 {n} 个非手动登记的模型将被跳过。": "Mais {n} modelos que não são de registro manual serão ignorados.", "另有 {n} 条别名映射({aliases}),别名不参与本次": "Há ainda {n} mapeamentos de alias ({aliases}); os aliases não participam desta vez", "只刷新这一家的模型清单": "Atualizar apenas o catálogo deste provedor", "只在识别到 ZCode 上下文压缩请求时切换模型,普通对话仍使用原模型。": "Troca o modelo apenas em requisições reconhecidas de compactação de contexto do ZCode. As conversas normais continuam usando o modelo original.", "只属于这一家": "exclusivo deste provedor", "可删除 {n} 个(手动登记 / 自定义家);": "{n} podem ser excluídos (registro manual / provedor personalizado);", "可见": "Visível", "可见性": "Visibilidade", "可配思考档位": "Níveis de raciocínio configuráveis", "同一客户端的来源模型不能重复:{model}": "O modelo de origem não pode se repetir para o mesmo cliente: {model}", "同一条错误出现在所有账号上": "o mesmo erro apareça em todas as contas", "后端桥不可用": "A ponte do backend não está disponível", "启用压缩路由": "Ativar roteamento de compactação", "启用后将自动关闭该提供商的其他同名绑定:{bindings}": "Ao ativar, os outros vínculos com o mesmo nome neste provedor serão desativados automaticamente: {bindings}", "启用规则 {n}": "Ativar regra {n}", "回复": "Resposta", "固定思考档位": "Nível de raciocínio fixo", "固定思考档位:{level}": "Nível de raciocínio fixo: {level}", "图片": "Imagem", "图片生成": "Geração de imagens", "图片生成模型请通过 /v1/images/generations 调用,暂不支持对话测试": "Use /v1/images/generations para modelos de imagem; testes de conversa ainda não são compatíveis", "图片编辑": "Edição de imagens", "图片识别": "Reconhecimento de imagens", "圆点带内侧描边 = 由 models.dev 补齐;右上角小点 = 你手动覆盖过;虚线圈 = 未声明。悬停某一枚可看逐项出处。": "Ponto com anel interno = preenchido pelo models.dev; ponto no canto = você substituiu; anel tracejado = não declarado. Passe o mouse sobre um ponto para ver a origem de cada valor.", "在 ": "Em ", "填上游真正认识的那个模型 ID(不是给下游用的名字)。登记后它会进入该家的模型清单: 表格里出现这一行、": "Informe o ID do modelo que o upstream realmente reconhece (não o nome usado pelo downstream). Após o registro, ele entra no catálogo deste provedor: aparece nesta linha da tabela e ", "复制": "Copiar", "多半是上游自己的问题,过一会儿再试。同一个错误出现在所有账号上时,先查模型目录与映射。": "Provavelmente é problema do próprio upstream; tente de novo mais tarde. Se o mesmo erro aparecer em todas as contas, verifique primeiro o catálogo de modelos e os mapeamentos.", "失败": "Falha", "失败 {n} 个 · 首个失败:{error}": "{n} com falha · primeira falha: {error}", "如果 ZCode 已设置压缩路由,网关看到的是它改写后的模型。建议同一套规则只在一处配置。": "Se o ZCode já tiver roteamento de compactação configurado, o gateway recebe o modelo já alterado. Configure o mesmo conjunto de regras em apenas um lugar.", "完成": "Concluir", "官方客户端会展示这个模型": "O cliente oficial exibe este modelo", "对下游声明的能力(工具调用 / 图片识别 / 视频识别 / 支持思考)—— 点击修改": "Capacidades declaradas ao downstream (chamada de ferramentas / reconhecimento de imagens / reconhecimento de vídeo / suporte a raciocínio) — clique para editar", "对外名可以是中文、字母、数字与 ": "Nomes públicos aceitam caracteres chineses, letras, números e ", "对外名可自由命名,允许与上游模型 ID 同名(同名时该上游的原生路由优先,映射作兜底); 支持字母、数字与 ": "O nome externo é livre, podendo até ser igual ao ID do modelo upstream (em caso de nome igual, a rota nativa do upstream tem prioridade e o mapeamento serve de reserva); aceita letras, números e ", "对外映射名(下游请求时用)": "Nome externo do mapeamento (usado nas requisições do downstream)", "对话协议": "Protocolo de conversa", "对话协议的说明": "Sobre o protocolo de conversa", "对选中的 {n} 个模型执行批量操作": "Executar ações em lote nos {n} modelos selecionados", "导入失败:{message}": "Falha na importação: {message}", "导入选中的 {n} 个模型": "Importar os {n} modelos selecionados", "将作用于以下模型": "Será aplicado aos seguintes modelos", "尚未获取": "Ainda não buscado", "尚未配置压缩规则,默认使用原模型。": "Nenhuma regra de compactação configurada. O modelo original é usado por padrão.", "尝试 {n} 次": "{n} tentativas", "展开其余 {n} 个模型 ▾": "Mostrar os outros {n} modelos ▾", "工具": "Ferramentas", "工具调用": "Chamada de ferramentas", "已中止在途测试({n} 个账号)": "Testes em andamento abortados ({n} contas)", "已删除 {n} 条未挂载映射": "{n} mapeamentos não vinculados excluídos", "已刷新": "Atualizado", "已启用": "Ativados", "已启用 {name},其他同名绑定已自动关闭": "{name} ativado. Os outros vínculos com o mesmo nome foram desativados automaticamente.", "已填写:对下游声明 {value}": "Preenchido: declarado ao downstream como {value}", "已添加": "Adicionado", "已等待 {seconds}s": "Aguardando {seconds}s", "已覆盖上游值": "Valor do upstream substituído", "已覆盖:对下游声明 {value}": "Substituído: declarado ao downstream como {value}", "已选 ": "Selecionados: ", "已选 {picked} 个 · 上游共 {upstream} 个 · 清单已有 {managed} 个": "{picked} selecionados · {upstream} no upstream · {managed} já no catálogo", "开始测试": "Iniciar teste", "当前环境不支持代理池": "O ambiente atual não suporta pool de proxies", "当前环境不支持读取 API Key": "Este ambiente não pode carregar API Keys", "当前通道未声明可用档位,映射等级不会注入;请先获取模型目录。": "Esta rota não declarou níveis compatíveis. Os níveis do mapeamento não serão injetados; busque primeiro o catálogo de modelos.", "待获取": "Pendente", "思考": "Raciocínio", "思考等级": "Nível de raciocínio", "思考等级 {level}": "Nível de raciocínio {level}", "思考等级 {level}(点击修改)": "Nível de raciocínio {level} (clique para editar)", "思考等级的注入规则": "Regras de injeção do nível de raciocínio", "思考过程({n} 字)": "Processo de raciocínio ({n} caracteres)", "恢复继承": "Restaurar herança", "成功 {ok} 个,失败 {failed} 个": "{ok} com sucesso, {failed} com falha", "所选 API Key 无权调用此模型或提供商": "A API Key selecionada não pode acessar este modelo ou provedor", "所选模型含同一提供商的同名绑定「{id}」,请分别启用,避免相互关闭": "Os modelos selecionados têm vínculos chamados “{id}” no mesmo provedor. Ative-os separadamente para evitar que desativem uns aos outros.", "所选模型没有共同可用档位,请分别设置或清除绑定。": "Os modelos selecionados não têm um nível compatível em comum. Configure cada um ou limpe as vinculações.", "手动": "Manual", "手动登记": "Registro manual", "手动登记的上游模型;移除它会直接删掉这条登记": "Modelo upstream de registro manual; removê-lo apaga este registro diretamente", "执行{action}": "Executar: {action}", "批量{action}完成:成功 {ok} 个,失败 {failed} 个": "Ação em lote concluída ({action}): {ok} com sucesso, {failed} com falha", "批量操作": "Ações em lote", "批量操作 · 已选 {n} 个模型": "Ações em lote · {n} modelos selecionados", "按倍率升序排列": "Ordenar por multiplicador crescente", "按倍率排序": "Ordenar por multiplicador", "按可见性筛选": "Filtrar por visibilidade", "按客户端发送的模型 ID 匹配,支持模型别名和对话路由组;每次只映射一次。": "Corresponde ao ID do modelo enviado pelo cliente. Aceita aliases e grupos de roteamento de conversa; cada requisição é mapeada uma única vez.", "按所选网关对话协议组装请求并校验响应转换(Chat Completions / Responses / Anthropic Messages)。": "Monta a requisição e valida a conversão da resposta usando o protocolo selecionado do gateway (Chat Completions / Responses / Anthropic Messages).", "按提供商分组排序,已启用模型优先;未知倍率排在末尾": "Ordena dentro dos grupos de provedores, com modelos ativados primeiro; multiplicadores desconhecidos ficam no final", "按提供商选择": "Selecionar por provedor", "按状态筛选": "Filtrar por estado", "提供商": "Provedor", "搜索模型": "Buscar modelos", "搜索模型 ID / 名称 / 映射名…": "Buscar ID / nome / nome de mapeamento do modelo…", "搜索模型 ID / 提供商": "Buscar ID do modelo / provedor", "搜索模型 ID…": "Buscar ID do modelo…", "搜索账号…": "Buscar conta…", "操作": "Ação", "支持": "Suportado", "支持思考": "Suporte a raciocínio", "收起 ▴": "Recolher ▴", "放弃尚未保存的压缩路由修改?": "Descartar as alterações não salvas no roteamento de compactação?", "数字带虚线底 = 由 models.dev 补齐;右上角小点 = 你手动覆盖过;— = 未声明。点任意一格可改。": "Número com sublinhado pontilhado = preenchido pelo models.dev; ponto no canto = você substituiu; — = não declarado. Clique em qualquer célula para editar.", "新建一个自定义提供商(同时创建它的第一个账号)": "Criar um novo provedor personalizado (criando também sua primeira conta)", "映射、思考等级、上下文窗口与工具调用能力在桌面端「模型管理」里改;手机端只做启停。": "Mapeamentos, níveis de raciocínio, janelas de contexto e capacidade de chamada de ferramentas são editados no desktop em “Model management”; no mobile só é possível ativar/desativar.", "映射「{alias} → {target}」不存在": "O mapeamento “{alias} → {target}” não existe", "映射上未绑定思考等级,「跟随映射」等于这次不注入": "Não há nível de raciocínio vinculado ao mapeamento; “Seguir mapeamento” equivale a não injetar desta vez", "映射已关闭": "Mapeamento desativado", "映射已关闭,点击启用": "Mapeamento desativado, clique para ativar", "映射已删除": "Mapeamento excluído", "映射已启用": "Mapeamento ativado", "映射已启用,其他同名绑定已自动关闭": "Mapeamento ativado. Os outros vínculos com o mesmo nome foram desativados automaticamente.", "映射已启用,点击关闭": "Mapeamento ativado, clique para desativar", "映射已绑定思考等级 {level},可用时会优先覆盖本次指定的等级": "Este mapeamento vincula o nível de raciocínio {level}; quando compatível, ele substitui o nível especificado para este teste", "暂无模型(请先添加账号)": "Nenhum modelo por enquanto (adicione uma conta primeiro)", "更新日期": "Data de atualização", "最多可添加 {n} 条压缩规则": "Você pode adicionar até {n} regras de compactação.", "最大输出 Token": "Saída máxima de tokens", "有映射": "Com mapeamento", "未填写": "Não preenchido", "未填写(下游按未声明处理)": "Não preenchido (o downstream trata como não declarado)", "未声明": "Não declarado", "未挂载映射:已删除 {removed} 条,失败 {failed} 条。首个失败:{error}": "Mapeamentos não vinculados: {removed} excluídos, {failed} falharam. Primeiro erro: {error}", "未挂载的模型映射": "Mapeamentos de modelo não vinculados", "未接入": "Não conectado", "未添加": "Não adicionado", "未知": "Desconhecido", "本机网关没有返回结论": "O Gateway local não retornou um veredito", "本次没有取到新内容": "Nenhum conteúdo novo foi obtido desta vez", "本次测试的发送口径": "Critério de envio deste teste", "来源": "Origem", "来源未知": "Origem desconhecida", "来源模型": "Modelo de origem", "来源模型和压缩模型不能相同": "O modelo de origem e o de compactação devem ser diferentes.", "来自上游目录接口,清单拉取于 {at};刷新失败时保留上一份成功结果": "Vem da API de catálogo do upstream; catálogo obtido em {at}; se a atualização falhar, mantém o último resultado bem-sucedido", "来自上游目录接口;刷新失败时保留上一份成功结果": "Vem da API de catálogo do upstream; se a atualização falhar, mantém o último resultado bem-sucedido", "桥接调用返回空(本机网关没有响应这次测试)": "A chamada de ponte retornou vazio (o Gateway local não respondeu a este teste)", "模型 ID「{id}」在该提供商已有启用绑定,请先关闭它再添加": "O ID de modelo “{id}” já tem um vínculo ativado neste provedor. Desative-o antes de adicionar outro.", "模型 ID「{id}」已存在,请使用已有模型": "O ID de modelo “{id}” já existe. Use o modelo existente.", "模型 ID「{id}」已绑定到此上游模型,请直接使用已有绑定": "O ID de modelo “{id}” já está vinculado a este modelo upstream. Use o vínculo existente.", "模型「{name}」已存在(忽略大小写判重)": "O modelo “{name}” já existe (duplicidade verificada sem diferenciar maiúsculas de minúsculas)", "模型已移除": "Modelo removido", "模型数": "Nº de modelos", "模型映射": "Mapeamento de modelo", "模型来源": "Origem do modelo", "模型清单为空:已有可用账号,请点「获取模型」拉取目录": "O catálogo de modelos está vazio. Há contas disponíveis; clique em “Buscar modelos” para obtê-lo.", "模型清单已刷新": "Catálogo de modelos atualizado", "模型目录刷新不可用,请重新打开面板": "A atualização do catálogo de modelos está indisponível. Reabra o painel.", "模型目录刷新结果": "Resultados da atualização do catálogo de modelos", "模型管理表": "Tabela de gerenciamento de modelos", "模型能力": "Capacidades do modelo", "模型获取失败": "Falha ao buscar modelos", "正在刷新…": "Atualizando…", "正在测 ": "Testando ", "正在获取…": "Buscando…", "正在读取压缩路由…": "Carregando rotas de compactação…", "每条映射 = 对外名 → 上游模型;原始 ID 与别名有独立开关,默认绑定永远存在(没有映射时是合成的那条)。": "Cada mapeamento = nome externo → modelo upstream; o ID original e os aliases têm interruptores próprios, e o vínculo padrão sempre existe (quando não há mapeamento, é o sintético).", "没有匹配「{keyword}」的模型": "Nenhum modelo corresponde a “{keyword}”", "没有匹配当前筛选的模型": "Nenhum modelo corresponde ao filtro atual", "没有匹配的模型": "Nenhum modelo correspondente", "没有可选的对话模型,请先启用模型和对应账号。": "Nenhum modelo de conversa disponível. Ative um modelo e a conta correspondente primeiro.", "没有选中任何模型": "Nenhum modelo selecionado", "没有选中的模型": "Sem modelos selecionados", "流式请求": "Requisição em streaming", "流式请求的说明": "Explicação da requisição em streaming", "测试": "Testar", "测试未通过": "Teste não aprovado", "测试模型": "Testar modelo", "测试结果": "Resultado do teste", "测试节点": "Nó de teste", "测试节点的说明": "Sobre o nó de teste", "测试账号": "Contas de teste", "测试账号的说明": "Explicação das contas de teste", "添加模型映射": "Adicionar mapeamento de modelo", "添加自定义模型": "Adicionar modelo personalizado", "清空": "Limpar", "清除覆盖,回到上游声明值": "Limpar substituição e voltar ao valor declarado pelo upstream", "清除这一项(回到未声明)": "Limpar este item (voltar a não declarado)", "清除(不覆盖)": "Limpar (não sobrescrever)", "点击复制:{name}": "Clique para copiar: {name}", "点右侧「获取模型」从上游拉取这家的模型清单": "Clique em “Buscar modelos” à direita para buscar o catálogo deste provedor no upstream", "用哪个账号去拉这家的模型清单": "Qual conta usar para buscar o catálogo de modelos deste provedor", "用户提示词": "Prompt do usuário", "用户登记的自定义模型;整份清单只属于这一家": "Modelos personalizados registrados por você; a lista inteira pertence só a este provedor", "用时 {time}": "Duração {time}", "用时 {time} · 首字 {ttfb}": "Duração {time} · 1º token {ttfb}", "留空则不携带;设置页的提示词模式照常生效": "Se vazio, não é enviado; o modo de prompt da página de configurações continua valendo", "留空用默认问候「你好」": "Se vazio, usa a saudação padrão “Olá”", "的模型合集:每家的清单互相独立,别名也只在自己那家内生效;要改名称 / 协议 / Base URL,到账号页该家账号的「设置」→ 提供商一栏。": " coleção de modelos: a lista de cada provedor é independente e os apelidos só valem dentro do próprio provedor; para mudar nome / protocolo / Base URL, vá à conta desse provedor na página de Contas → \"Configurações\" → seção do provedor.", "目录模块未就绪": "Módulo de catálogo não está pronto", "目标使用自身的思考设置或默认值,仍受网关 Key 权限限制;不可用时明确报错,不自动退回原模型。": "O destino usa suas próprias configurações de raciocínio ou os valores padrão e continua sujeito às permissões da chave do gateway. Se estiver indisponível, retorna um erro sem voltar automaticamente ao modelo original.", "目标已下线": "Destino descontinuado", "直接移除": "remover diretamente", "直连(不使用代理)": "Conexão direta (sem proxy)", "看的能力声明(": " consulta (", "真实链路 · 消耗少量额度 · 日志带「测试」标记,不计报表": "Rota real · consome pouca cota · log marcado como “Teste”, fora dos relatórios", "确定删除映射「{alias} → {target}」?": "Excluir o mapeamento “{alias} → {target}”?", "确定删除映射「{alias} → {target}」?它指向的上游模型已不在清单里。": "Excluir o mapeamento “{alias} → {target}”? O modelo upstream para o qual ele aponta não está mais no catálogo.", "确定删除映射「{alias} → {target}」?它指向的上游模型已不在清单里。": "Excluir o mapeamento “{alias} → {target}”? O modelo upstream para o qual ele aponta não está mais no catálogo.", "确定删除此区域列出的全部 {n} 条未挂载映射?此操作不可撤销,不会删除正常挂载的映射或模型。": "Excluir todos os {n} mapeamentos não vinculados listados nesta seção? Esta ação não pode ser desfeita. Os mapeamentos vinculados e os modelos não serão excluídos.", "确定删除选中的 {count} 个模型登记?删除后 /v1/models 不再广告它们、请求也会被拒。": "Excluir os {count} registros de modelo selecionados? Depois da exclusão, o /v1/models deixa de anunciá-los e as requisições serão recusadas.", "确定移除自定义模型「{id}」?这条登记会被直接移除,之后 /v1/models 不再广告它、请求它也会被拒。": "Remover o modelo personalizado “{id}”? Este registro será removido diretamente; depois disso, o /v1/models deixa de anunciá-lo e as requisições a ele serão recusadas.", "确认桌面端还在运行,再重试一次。": "Confirme que o app desktop ainda está em execução e tente novamente.", "确认选择": "Confirmar seleção", "社区参考档位,不代表当前上游通道支持;实际以该通道目录为准。": "Níveis de referência da comunidade não garantem compatibilidade nesta rota upstream; o catálogo da rota tem prioridade.", "社区参考档位:{levels}": "Níveis de referência da comunidade: {levels}", "移除": "Remover", "移除自定义模型": "Remover modelo personalizado", "系统提示词": "Prompt de sistema", "绑定 {requested},按当前通道将发送 {effective}。": "Vinculado a {requested}; esta rota enviará {effective}.", "绑定在「对外名 → 上游模型」这一条映射上的思考等级(列表照抄 OmniProxy 的手动绑定),选「不覆盖」表示不给这条映射指定等级。它会跟着这条映射注入转发,由承载的那家翻译成自己的档位字段(CatPaw 归并成 low/high/max,Qoder 按模型声明的档位归一)。以下几种情况故意不注入:① off / none(关闭思考)—— 本项目没有安全的表达方式;② 表外的自定义等级(各家能力范围不同,无法判断上游收不收);③ 客户端请求体里已经自己指定了档位(那是更明确的意图,绑定不覆盖);④ 这家上游不认识档位字段(如 WorkBuddy / 小浣熊 / AutoClaw / Cline)。注入与跳过都会写进详细日志。": "Nível de raciocínio vinculado a este mapeamento de “nome externo → modelo upstream” (a lista reproduz os vínculos manuais do OmniProxy); escolher “Não sobrescrever” significa não atribuir nível a este mapeamento. Ele é injetado no encaminhamento junto com este mapeamento e o provedor que o atende o traduz para o campo de nível próprio (o CatPaw agrupa em low/high/max; o Qoder normaliza conforme os níveis declarados pelo modelo). Os casos a seguir não são injetados de propósito: ① off / none (raciocínio desligado) — este projeto não tem uma forma segura de expressá-los; ② níveis personalizados fora da tabela (as capacidades variam entre provedores e não dá para saber se o upstream aceita); ③ o corpo da requisição do cliente já especifica um nível (intenção mais explícita, e o vínculo não sobrescreve); ④ o upstream deste provedor não reconhece o campo de nível (como WorkBuddy / Raccoon / AutoClaw / Cline). Tanto a injeção quanto a omissão vão para o log detalhado.", "继承上游": "Herdar do upstream", "继承上游 {value}": "Herdar do upstream {value}", "继承上游:{value}": "Herdar do upstream: {value}", "网关未返回保存后的提供商记录": "O gateway não retornou o registro do provedor salvo.", "网关未返回逐家模型目录刷新结果": "O gateway não retornou resultados de atualização do catálogo por provedor", "能力": "Capacidades", "自定义 · 全部": "Personalizados · todos", "自定义家": "Provedor personalizado", "自定义提供商": "Provedor personalizado", "自定义提供商的清单": "Catálogo do provedor personalizado — ", "自定义提供商还没有模型:先在左栏选一家,点「添加模型」登记,或「获取上游模型」从上游拉取": "Este provedor personalizado ainda não tem modelos: escolha um na coluna à esquerda, clique em \"Adicionar modelo\" para registrar, ou \"Buscar modelos upstream\" para puxar do upstream", "自定义模型已移除": "Modelo personalizado removido", "自定义等级": "Nível personalizado", "自定义等级…": "Nível personalizado…", "自定义等级(例如 custom-high)": "Nível personalizado (por exemplo, custom-high)", "至少选一个测试账号": "Selecione pelo menos uma conta de teste", "节点 {proxy}": "Nó {proxy}", "获取": "Buscar", "获取中…": "Buscando…", "获取失败:{message}": "Falha ao buscar: {message}", "获取模型": "Buscar modelos", "获取模型 — {name}": "Buscar modelos — {name}", "规则 {n}": "Regra {n}", "规则不绑定提供商,压缩模型由其路由配置决定使用哪家提供商。": "As regras não são vinculadas a um provedor. A configuração de roteamento do modelo de compactação determina qual provedor será usado.", "视频": "Vídeo", "视频识别": "Reconhecimento de vídeo", "设置 / 清除会应用到选中模型的": "Definir / limpar se aplica a ", "设置思考等级": "Definir nível de raciocínio", "设置思考等级后,会覆盖下游请求中的等级;选择“不覆盖”则保留下游参数。实际档位以提供商支持范围为准,无法注入时保留原请求并记录原因。off / none 仍不由映射注入。": "O nível de raciocínio configurado substitui o nível enviado nas requisições downstream. Escolha “Não sobrescrever” para preservar os parâmetros downstream. O nível efetivo depende do suporte do provedor; se não puder ser aplicado, a requisição original será preservada e o motivo será registrado no log. Os mapeamentos continuam sem injetar off / none.", "设置思考等级(当前未绑定)": "Definir nível de raciocínio (sem vínculo atual)", "该提供商已不存在(可能已被删除),请刷新列表": "Este provedor não existe mais (talvez tenha sido excluído); atualize a lista", "该提供商当前没有可选的上游模型": "Este provedor não tem modelos upstream disponíveis no momento", "该提供商没有可用账号(要在账号页启用一个、且凭证完整),一行都发不出去": "Este provedor não tem contas disponíveis (ative uma na página de contas e garanta credenciais completas); nenhuma linha pode ser enviada", "该提供商的清单里没有模型「{name}」": "O catálogo deste provedor não tem o modelo “{name}”", "该等级无法注入,请选择上游可用档位或清除绑定。": "Este nível não pode ser injetado. Selecione um nível compatível no upstream ou limpe a vinculação.", "该行当前未启用:测试照常按本名直发(「先测通、再决定要不要启用」正是这颗按钮的用法),但本行的思考等级绑定不参与本次,生产路由也要等绑定打开后才会放行": "Esta linha não está ativada no momento: o teste é enviado normalmente com o nome real (é justamente para isso que este botão serve: testar antes de decidir ativar), mas o vínculo de nível de raciocínio desta linha não participa desta vez, e o roteamento de produção só será liberado depois que o vínculo for ativado", "该账号对这个模型正在限额冷却,等一会儿自己会好;也可以先测别的账号。": "Esta conta está em cooldown de limite para este modelo; deve melhorar sozinho em breve, ou teste outra conta enquanto isso.", "说明": "Descrição", "请先选择一把 API Key": "Selecione uma API Key primeiro", "请填写上游模型 ID": "Informe o ID do modelo upstream", "请填写对外映射名": "Informe o nome externo do mapeamento", "请填写模型 ID": "Informe o ID do modelo", "请填写自定义思考等级,或改选候选档 / 「清除」": "Informe um nível de raciocínio personalizado ou selecione um nível da lista / “Limpar”", "请完整选择来源模型和压缩模型": "Selecione o modelo de origem e o modelo de compactação.", "请选择受支持的客户端": "Selecione um cliente compatível.", "请选择提供商": "Selecione um provedor", "读取模型清单失败:{message}": "Falha ao ler o catálogo de modelos: {message}", "账号 ": "Conta ", "跟随映射(当前 {level})": "Seguir mapeamento (atual: {level})", "跟随映射(未绑定等级)": "Seguir mapeamento (sem nível vinculado)", "跟随映射(该行未启用,本次不注入)": "Seguir mapeamento (esta linha não está ativada; sem injeção desta vez)", "跟随账号配置": "Seguir configuração da conta", "跳过": "Ignorado", "转发到上游模型": "Encaminhar para o modelo upstream", "还没有可刷新的提供商:先在账号页添加一个账号": "Ainda não há provedores para atualizar: adicione uma conta na página de contas primeiro", "还没有自定义提供商": "Ainda não há provedores personalizados", "这一行已不在当前清单里(模型被移除、或目录刷新后上游不再提供它)。关闭后刷新列表再试。": "Esta linha não está mais no catálogo atual (o modelo foi removido ou o upstream não o oferece mais após a atualização do catálogo). Feche e atualize a lista para tentar de novo.", "这个模型仍在承载它的提供商清单里,但那一家的模型行当前没有出现(例如该家没有可用账号)": "Este modelo ainda está no catálogo do provedor que o oferece, mas esse provedor não tem linha no momento (por exemplo, sem conta utilizável).", "这个模型在官方客户端里是否会被展列;不展示的那些默认已关闭(含默认绑定)": "Se o cliente oficial exibe este modelo; os não exibidos ficam desativados por padrão (incluindo a vinculação padrão)", "这个模型已经在这家的清单里,不重复导入": "Este modelo já está no catálogo deste provedor e não será importado de novo", "这个模型的图片能力(图片生成 / 图片编辑)—— 点击修改": "Capacidades de imagem deste modelo (geração / edição de imagens) — clique para editar", "这些映射指向的上游模型已不在当前清单里,挂不到任何模型行上:它们不会出现在 /v1/models,用对应别名发请求也会失败。删除后该对外名即可重新使用。": "Os modelos upstream para os quais esses mapeamentos apontam não estão mais no catálogo atual, então eles não se vinculam a nenhuma linha de modelo: não aparecem em /v1/models, e as requisições feitas com o alias correspondente falham. Exclua um para liberar o nome público.", "这些映射指向的上游模型已不在当前清单里,用对应别名发请求会失败。可以在这里删除,删掉后该对外名即可重新使用。": "Os modelos upstream para os quais esses mapeamentos apontam não estão mais no catálogo atual; requisições feitas com o alias correspondente falham. Você pode excluí-los aqui para liberar o nome público.", "这几项是给": "Estes itens são a declaração de capacidades que o ", "这家提供商没有可见性判据(目前只有 Antigravity / Qoder / 小浣熊 / CodeArts 有)": "Este provedor não tem regra de visibilidade (atualmente apenas Antigravity / Qoder / Raccoon / CodeArts)", "这家有可见性判据,但这一条上游没有表态 —— 按可见处理": "Este provedor tem regra de visibilidade, mas o upstream não se pronunciou sobre esta entrada — tratada como visível", "这家没有可用账号(要在账号页启用一个、且凭证完整)": "Este provedor não tem contas disponíveis (ative uma na página de contas e garanta credenciais completas)", "这家用固定模型清单,无可刷新": "Este provedor usa um catálogo fixo de modelos; não há o que atualizar", "这家的模型清单是全局的,不跟账号走": "O catálogo de modelos deste provedor é global e não depende da conta", "这家的清单是你自己登记的,不填的项下游按未声明处理。": "O catálogo deste provedor é registrado por você; itens não preenchidos são tratados como não declarados pelo downstream.", "这家还没有可用账号,刷新会使用默认登录态": "Este provedor ainda não tem contas disponíveis; a atualização usará a sessão padrão", "这家还没有模型:点「添加模型」登记,或「获取上游模型」从上游拉取": "Este provedor ainda não tem modelos: clique em “Adicionar modelo” para registrar ou em “Buscar modelos do upstream” para buscá-los", "这是模型自己能配的档位(来自上游目录),只读;要改某一档请到映射弹窗里选。": "São os níveis que o próprio modelo pode configurar (vêm do catálogo upstream); somente leitura. Para alterar algum nível, escolha no diálogo de mapeamento.", "这条登记(不像内置模型那样只是隐藏),因为它的存在完全由这次登记决定。": " este registro (não apenas ocultá-lo como no caso dos modelos integrados), pois sua existência é determinada inteiramente por este registro.", "这里是": "Esta é a ", "远程": "Remoto", "远程目录": "Catálogo remoto", "远程目录已更新,「来源」列会显示为「远程」": "Catálogo remoto atualizado; a coluna “Origem” mostrará “Remoto”", "适用客户端": "Cliente", "选一个账号(至少一个)": "Selecione uma conta (pelo menos uma)", "选中的模型都不是手动登记,无法删除(开关映射才是它们的手段)": "Nenhum dos modelos selecionados é de registro manual; não é possível excluir (para eles, o recurso é ligar/desligar o mapeamento)", "选中的都不是手动登记的模型,删除不可用(上游目录带回来的行由清单决定存在性)": "Nenhum dos selecionados é um modelo de registro manual; a exclusão não está disponível (as linhas trazidas pelo catálogo upstream têm a existência determinada pelo catálogo)", "重新获取": "Buscar novamente", "重新读取会丢弃当前草稿,确定继续?": "Recarregar descartará o rascunho atual. Continuar?", "重试": "Tentar novamente", "错误详情": "Detalhes do erro", "默认": "Padrão", "默认开,与真实请求一致:可同时验证 SSE 链路与首字延迟。": "Ativado por padrão, igual a uma requisição real: valida a rota SSE e a latência do primeiro token ao mesmo tempo.", "默认档位:{level}": "Nível padrão: {level}", "默认绑定": "Vínculo padrão", "({label})": " ({label})", "({provider})": " ({provider})", "(上游这一次返回了空正文)": "(o upstream retornou um corpo vazio desta vez)", "(中间共尝试 {n} 次)": "({n} tentativas no total)", "(已禁用)": " (desativado)", "(已被手动覆盖,弹窗里可恢复继承)": " (substituído manualmente; restaurar herança no diálogo)", "(手动设定)": " (definido manualmente)", "(由 models.dev 补齐)": " (preenchido pelo models.dev)", "(登记后即可用这个名字请求)": " (após o registro, já pode solicitar com este nome)", "(续)": "(continuação) ", "(默认 ": " (padrão: ", "(默认绑定与别名 chips);「清除」= 不给这些映射指定等级(选「不覆盖」的口径与映射弹窗一致)": " dos modelos selecionados (chips do vínculo padrão e aliases); “Limpar” = não atribuir nível a esses mapeamentos (mesmo critério de “Não sobrescrever” do diálogo de mapeamento)", ")": ")", "),下游按它们决定发不发图片、按多大的窗口堆历史。": "), e o downstream usa esses valores para decidir se envia imagens e qual janela usar para empilhar o histórico.", "+ 新建自定义提供商": "+ Novo provedor personalizado", "+ 映射": "+ Mapeamento", "+ 添加压缩规则": "+ Adicionar regra de compactação", "+ 添加模型": "+ Adicionar modelo", "+等级": "+Nível", ",与远程目录 / 内置清单区分开。删除自定义模型是": ", distinguindo-o do catálogo remoto / catálogo integrado. Excluir um modelo personalizado é ", ",已完成 ": ", concluídas ", ",跳过 {n} 个": ", {n} ignorados", ",通常就不是账号问题了:先确认这个模型还在上游目录里(「获取模型」刷一次),再看默认绑定指向的上游模型对不对。": ", normalmente não é problema de conta: primeiro confirme que o modelo ainda está no catálogo upstream (rode “Buscar modelos” uma vez) e depois verifique se o modelo upstream apontado pelo vínculo padrão está correto.", ":": ":", ":这里的模型不会出现在其他家,别名也只在这一家内生效。改名称 / 协议 / Base URL 在账号页该家账号的「设置」→ 提供商一栏;整家不要了,鼠标移到左栏这家上点 × 删除(连同名下账号)。": ": os modelos daqui não aparecem em outros provedores e os aliases só valem dentro deste. Para alterar nome / protocolo / Base URL, use “Configurações” → campo do provedor nas contas desta família, na página de contas; se não quiser mais o provedor inteiro, passe o mouse sobre ele na barra lateral esquerda e clique em × para excluir (junto com as contas dele).", ";其中 {keys} 由 models.dev 补齐": "; {keys} preenchido(s) pelo models.dev", ";首个失败:{error}": "; primeira falha: {error}", "{account} · 账号设置": "{account} · Configurações da conta", "{account} 参与本路由": "Incluir {account} nesta rota", "{account} 尝试失败后切换到此账号": "Mudou para esta conta após a falha de {account}", "{available} 可用 · {blocked} 跳过": "{available} disponíveis · {blocked} ignorados", "{clients} 的标题请求": "Solicitação de título de {clients}", "{client} 的压缩请求": "Solicitação de compactação de contexto do {client}", "{models} 看不了图时": "Quando {models} não consegue ler imagens", "{model} 参与本路由": "Incluir {model} nesta rota", "{model} 有独立配置": "{model} tem configuração própria", "{name} · 提供商路由设置": "{name} · Configurações de roteamento do provedor", "{name} 已{state}": "{name}: {state}", "{name} 的账号顺序已调整": "Ordem de contas de {name} alterada", "{n} 个候选": "{n} candidatos", "{n} 个参与账号": "{n} contas participantes", "{n} 个启用且参与的账号": "{n} contas ativas e participantes", "{n} 个提供商": "{n} provedores", "{n} 个模型限流": "{n} modelos com limite de taxa", "{n} 个请求": "{n} solicitações", "{n} 个账号 · {on} 启用 · {off} 禁用": "{n} contas · {on} ativas · {off} desativadas", "{n} 个账号已折叠": "{n} contas recolhidas", "{n} 个跳过": "{n} ignorados", "{n} 在途": "{n} em andamento", "{n} 处未保存": "{n} alterações não salvas", "{n} 已完成": "{n} concluídas", "{n} 条": "{n} registros", "{n} 条活跃绑定": "{n} vínculos ativos", "{n} 条请求没有会话标识,未计入会话数量。": "{n} solicitações não têm identificador de sessão e não entram na contagem de sessões.", "{n} 条账号路径": "{n} caminhos de contas", "{n} 次": "{n} vezes", "{n} 项参与": "{n} participantes", "{paths} 条路径 · {sessions} 个会话": "{paths} caminhos · {sessions} sessões", "{providers} 个提供商 / {accounts} 个账号": "{providers} provedores / {accounts} contas", "{providers} 个提供商 · {accounts} 个参与账号": "{providers} provedores · {accounts} contas participantes", "{provider} 参与本路由": "Incluir {provider} nesta rota", "{selected} / {total} 个账号参与": "{selected} / {total} contas incluídas", "{selected} / {total} 个账号启用": "{selected} / {total} contas ativadas", "{time} 后恢复": "Recupera em {time}", "一个路由组最多允许 {n} 个成员": "Um grupo de rotas pode ter no máximo {n} membros", "一条历史路径": "Um caminho histórico", "上游已响应": "Upstream respondeu", "上游请求已发出": "Solicitação upstream enviada", "上游调用": "Chamada upstream", "下一条请求": "Próxima requisição", "下一条请求将走": "A próxima requisição irá para", "不参与": "Não participa", "不按余额排序": "Não ordenar por saldo", "不按到期排序": "Não ordenar por expiração", "与账号页共用全局消耗规则": "Compartilha regras globais de consumo com Contas", "与账号页共用:{rules}。积分到期等规则直接影响网关实际选路。": "Compartilhado com Contas: {rules}. Regras como a expiração dos créditos afetam diretamente o roteamento do gateway.", "为什么没有调用": "Por que não foi chamada", "为什么选择它": "Por que foi selecionada", "为压缩请求指定模型": "Definir modelo para compactação", "五分钟没有往来即释放;客户端会话标识优先,内容哈希兜底。": "Liberado após cinco minutos de inatividade. Identificadores de sessão do cliente têm prioridade; um hash do conteúdo é usado como alternativa.", "仅保留最后承载信息,尝试明细未记录": "Somente a conta final foi mantida; os detalhes das tentativas não foram registrados", "仅允许指定提供商": "Permitir apenas provedores selecionados", "仅列出真实目录中的对话模型,不自动更改模型映射。": "Apenas modelos de conversa do catálogo real são listados. Os mapeamentos não são alterados.", "仅加入的参与": "Somente os adicionados", "仅勾选的参与": "Somente os marcados", "仅历史": "Somente histórico", "仅在途": "Somente em andamento", "仅展示已发生的请求,不表示当前可选": "Exibe solicitações registradas, não a elegibilidade atual", "仅影响此路由的后续请求": "Afeta apenas solicitações futuras desta rota", "仅看选中路径": "Somente caminhos selecionados", "仅筛选右侧账号列表,不改变路由配置。": "Filtra apenas a lista de contas à direita, sem alterar as configurações de roteamento.", "仍保留配置,账号可继续用于其他路由。": "As configurações são mantidas. As contas continuam disponíveis para outras rotas.", "仍然保存": "Salvar mesmo assim", "从上到下就是选路顺序": "De cima para baixo é a ordem de roteamento", "从当前视图移除": "Remover desta visualização", "从现有模型中创建独立配置,自动列出提供它的全部提供商;之后的修改只跟随这个模型。": "Crie uma configuração independente para um modelo existente. Todos os provedores que o oferecem são listados automaticamente; alterações posteriores se aplicam apenas a esse modelo.", "以下 {n} 个账号原本被全局路由排除。确认后会将它们设为禁用,所有路由都不能再选用;原有独立路由的参与名单保留。": "Estas {n} contas estavam excluídas da rota global. A confirmação as desativa para todas as rotas. As listas de participação das rotas independentes são preservadas.", "优先使用队首账号,不可用时顺延。": "Priorize a primeira conta da fila e passe à próxima quando ela estiver indisponível.", "优先尝试": "Tentar primeiro", "优先级:{rules};前一项相同才比较后一项。": "Prioridade: {rules}. As regras seguintes só se aplicam em caso de empate nas anteriores.", "会话": "Sessões", "会话最长保持六小时无往来;可以随时在会话粘滞中解除。": "Os vínculos duram até seis horas de inatividade e podem ser liberados a qualquer momento em Vínculos de sessão.", "会话来源": "Origem da sessão", "会话标识": "Identificador da sessão", "会话标识 {id} · 来源 {source}": "Sessão {id} · origem {source}", "会话标识未记录,不将此请求推断为独立会话。": "Nenhum identificador de sessão foi registrado. Esta solicitação não é presumida como uma sessão separada.", "会话活动": "Atividade da sessão", "会话粘住": "Vínculo de sessão encontrado", "会话粘滞": "Vínculos de sessão", "会话粘滞 {mode}": "Afinidade de sessão {mode}", "会话粘滞改为{value}": "Afinidade de sessão alterada para {value}", "位置 = 顺位": "Posição = prioridade", "作用范围": "Escopo", "例如:日常省钱": "Ex.: Economia no dia a dia", "供继承全局的模型使用": "Usado por modelos que herdam as configurações globais", "保存": "Salvar", "保存中…": "Salvando…", "保存仅影响后续选路,历史快照与在途请求不改写。": "Salvar afeta apenas o roteamento posterior. Registros históricos e solicitações em andamento não são alterados.", "保存全局路由": "Salvar roteamento global", "保存后仅用于后续请求,不改变历史快照或在途请求。": "As alterações salvas se aplicam apenas às próximas solicitações, sem alterar registros históricos ou solicitações em andamento.", "保存后只影响后续请求": "Vale apenas para requisições futuras", "保存后才会影响真实请求": "As alterações só afetam solicitações reais após salvar", "保存响应不完整,请刷新当前配置确认结果": "A resposta ao salvamento está incompleta. Recarregue a configuração atual para confirmar o resultado.", "保存当前配置": "Salvar configuração atual", "保存模型路由": "Salvar roteamento do modelo", "保存的尝试明细中没有这次调用": "Esta chamada não consta nos detalhes salvos das tentativas", "保存空路由": "Salvar rota vazia", "保存规则": "Salvar regra", "保存路由": "Salvar rota", "保存路由后,在客户端填写此模型 ID。密钥使用你自己的网关 Key。": "Após salvar, use este ID de modelo no cliente com sua própria chave do gateway.", "保护设置由所有模型共用;模型独立配置可覆盖参与范围、顺序、策略与粘滞。": "As configurações de proteção são compartilhadas por todos os modelos. Configurações independentes podem substituir participação, ordem, estratégia e aderência.", "修改后影响继承全局的模型": "As alterações afetam modelos que herdam a configuração global", "修改范围以「编辑范围」为准": "As alterações se aplicam ao escopo de edição selecionado", "候选": "Candidatos", "候选 {n}": "Candidatos {n}", "候选 · {name}": "Candidata · {name}", "候选与跳过": "Candidatos e ignorados", "候选与跳过清单各最多保存十二项;这里只回放当时保存的快照,不用当前队列重算。": "Até doze candidatos e ignorados são salvos. Aqui só reproduzimos o snapshot salvo, sem recalcular com a fila atual.", "候选与跳过清单各最多保存十二项;重试和跨账号切换见尝试明细。": "As listas de candidatas e contas ignoradas armazenam até doze itens cada. Consulte os detalhes das tentativas para novas tentativas e trocas de conta.", "候选和跳过清单各最多保存十二项,超出部分不绘制。": "As listas de candidatas e contas ignoradas mantêm até doze itens cada. Os demais não são desenhados.", "候选快照中有此账号,但保存的尝试明细未显示它被调用": "Esta conta aparece no registro de candidatas, mas não há chamada a ela nas tentativas salvas", "候选快照仅保存部分记录,未保存的账号无法回放": "Apenas parte do registro de candidatas foi salva; contas sem registro não podem ser reproduzidas", "候选筛选": "Filtro de candidatos", "候选规模": "Conjunto de candidatas", "候选账号": "Conta candidata", "候选顺序": "Ordem das candidatas", "停用后保留卡片与账号,方便随时恢复;不会全局禁用提供商。": "A desativação mantém o cartão e as contas para facilitar a restauração. Ela não desativa o provedor globalmente.", "停用后保留卡片与账号;自动参与不会重新启用明确停用的提供商。": "A desativação mantém o cartão e as contas. A participação automática não reativa provedores desativados explicitamente.", "停用此提供商": "Desativar este provedor", "停用路由提供商": "Desativar provedor de roteamento", "允许参与的提供商": "Provedores permitidos", "先处理凭证、限额或参与范围。": "Resolva credenciais, limites ou escopo primeiro.", "先尝试当前路由内的视觉模型,不可用时再按顺序尝试指定模型;指定模型可跨路由池。": "Tente primeiro os modelos de visão da rota atual e, se estiverem indisponíveis, tente os modelos selecionados em ordem. Os modelos selecionados podem usar outro pool de roteamento.", "先读图再交回": "Lê a imagem antes e devolve para", "全局": "Global", "全局保护设置": "Configurações globais de proteção", "全局修改影响继承它的模型;独立模型配置不变。": "Alterações globais afetam modelos que as herdam; configurações independentes permanecem inalteradas.", "全局修改影响继承的设置;模型已独立设置的项目保持不变。": "Alterações globais afetam configurações herdadas; substituições específicas do modelo permanecem inalteradas.", "全局参与范围": "Escopo global de participação", "全局顺序与账号页联动,修改即时保存。": "A ordem global fica sincronizada com Contas. As alterações são salvas imediatamente.", "全局默认": "Padrões globais", "全局默认供继承的模型使用;给某个模型单独配置后,它就不再跟随全局。": "O padrão global serve os modelos que o herdam; ao criar uma configuração própria, o modelo deixa de seguir o global.", "全部候选": "Todos os candidatos", "全部模型(窗口内没有请求)": "Todos os modelos (sem pedidos no período)", "全部禁用": "Todas as contas desativadas", "全部移出": "Remover todos", "全部移出本路由": "Remover todos desta rota", "全部自动参与": "Todos automáticos", "全部解除": "Liberar todos", "全部请求": "Todas as requisições", "全部路径": "Todos os caminhos", "共 {n} 个可添加的模型": "{n} modelos disponíveis para adicionar", "共 {n} 条路由回放": "{n} reproduções de roteamento", "共尝试 {total} 次,保存了 {saved} 条明细": "{total} tentativas; {saved} registros salvos", "关联与在途优先": "Selecionados e em andamento primeiro", "关联请求路径": "Caminhos de solicitações relacionados", "关闭": "Fechar", "其他候选": "Outras candidatas", "其他客户端": "Outros clientes", "其他账号已完成请求,没有继续调用这个候选": "Outra conta concluiu a solicitação, então esta candidata não foi chamada", "内容哈希": "Hash do conteúdo", "内容哈希(推断)": "Hash do conteúdo (inferido)", "内部重试不会增加账号切换节点。": "Novas tentativas internas não adicionam nós de troca de conta.", "决定后续请求用谁、按什么顺序,以及是否沿用会话账号。": "Defina quais contas atendem às próximas solicitações, sua ordem e se a conta da sessão será reutilizada.", "冷却中": "Em espera", "切换 {n} 次": "{n} trocas", "切换后,原本不在名单内的可用提供商也会参与转发。明确停用的提供商和排除的账号不会恢复。": "Após a troca, provedores disponíveis fora da lista anterior também participarão do encaminhamento. Provedores desativados explicitamente e contas excluídas continuam excluídos.", "切换模型后,右侧只展示该模型的提供商与账号路由。": "Ao trocar de modelo, apenas as rotas de provedores e contas desse modelo aparecem à direita.", "列表内容": "Conteúdo da lista", "创建独立配置": "Criar configuração independente", "创建草稿": "Criar rascunho", "删除后此入口将不再接受请求。不会删除成员模型、提供商或账号。": "Ao excluir, esta entrada deixará de aceitar solicitações. Modelos, provedores e contas não serão excluídos.", "删除后这个模型会重新跟随全局配置,已保存的独立设置和当前未保存修改都会被移除。": "Ao excluir, este modelo volta a seguir a configuração global. As configurações independentes salvas e as alterações não salvas serão removidas.", "删除独立路由": "Excluir rota independente", "删除独立配置": "Excluir configuração independente", "删除规则": "Excluir regra", "删除路由组": "Excluir grupo de rotas", "刷新请求记录": "Atualizar histórico de solicitações", "刷新路由": "Atualizar rotas", "刷新预演": "Atualizar prévia", "加入": "adicionado", "加入路由": "Adicionar à rota", "历史只读,不影响当前配置": "Histórico somente leitura; não altera a configuração atual", "历史只读,当前配置的修改不会改变这条请求的快照。": "O histórico é somente leitura. Alterações na configuração não modificam este registro da solicitação.", "历史快照保留了 {shown} / {total} 个候选明细,其余未记录。": "O registro histórico manteve detalhes de {shown} de {total} candidatos. Os demais não foram registrados.", "历史承载账号当前不可用": "Conta histórica indisponível no momento", "历史日期": "Data do histórico", "历史记录": "Histórico", "压缩上下文": "Compactação de contexto", "压缩模型": "Modelo de compactação", "原因": "Motivo", "原始报文在请求详情里,这里只看选路过程。": "O payload bruto fica nos detalhes da requisição; aqui só mostramos o roteamento.", "原模型": "Modelo original", "去账号页添加": "Adicionar na página de contas", "参与": "Participa", "参与当前视图转发": "Encaminhar nesta visualização", "参与方式": "Participação", "参与方式改为{value}": "Participação alterada para {value}", "参与本路由": "Incluído nesta rota", "参与范围": "Escopo de participação", "参与范围与顺序独立保存;策略和粘滞可分别继承全局。": "Participação e ordem são salvas independentemente; estratégia e aderência podem herdar as configurações globais separadamente.", "参与账号": "Contas participantes", "参与路由": "Participa do roteamento", "参与路由的账号": "Contas participantes do roteamento", "参与转发": "Participantes do encaminhamento", "参与顺序": "Ordem de participação", "发生切换": "Com troca de conta", "取消": "Cancelar", "取消勾选只排除当前范围,不会在账号页全局禁用账号。": "Desmarcar exclui a conta apenas deste escopo; não a desativa globalmente na página Contas.", "取消选中": "Limpar seleção", "只从当前路由移出,保留模型和账号配置;不会改变其他路由。": "Remove apenas desta rota, mantendo configurações de modelos e contas. Outras rotas não mudam.", "只从当前路由视图移除,不删除提供商或账号,也不改变其他模型的独立配置。": "Remove apenas da visualização de roteamento atual. Não exclui provedores ou contas nem altera configurações independentes de outros modelos.", "只修改全局参与范围,不改变账号排序、模型开关或模型独立路由;网关 Key 权限与限流仍然生效。": "Altera apenas a participação global, sem mudar a ordem das contas, a ativação dos modelos ou suas rotas independentes. As permissões das Keys do gateway e os limites de taxa continuam válidos.", "只列出当前模型已有启用绑定的提供商;这里只设置路由,不新建模型绑定。": "São listados apenas provedores com uma associação ativa para este modelo. Aqui você configura o roteamento, sem criar associações de modelo.", "只影响这个路由成员,不改变账号启用状态,也不影响其他模型。新增账号需要手动加入。": "Afeta apenas este membro, sem alterar a ativação da conta ou outros modelos. Novas contas devem ser adicionadas manualmente.", "只改写被识别为标题生成的小请求,普通对话不受影响。": "Apenas pequenas requisições reconhecidas como geração de título são reescritas; conversas normais não são afetadas.", "只有加入的提供商参与,新增提供商需要手动加入。": "Somente provedores adicionados participam. Novos provedores precisam ser adicionados manualmente.", "只有勾选的提供商参与;以后新增的提供商需要在这里勾选。": "Apenas provedores marcados participam; novos provedores precisam ser marcados aqui.", "只有名单内的提供商可以参与;新增提供商不会自动加入。": "Somente os provedores listados podem participar. Novos provedores não são adicionados automaticamente.", "只看用过这个模型的客户端与账号。点一条看它当时是怎么选的。": "Apenas clientes e contas que usaram este modelo. Abra uma para ver como a conta foi escolhida.", "只看这个客户端经过的模型与账号。点一条看它当时是怎么选的。": "Apenas modelos e contas por onde este cliente passou. Abra uma para ver como a conta foi escolhida.", "只看这个提供商下参与路由的账号。点一条看它当时是怎么选的。": "Apenas contas participantes deste provedor. Abra uma para ver como a conta foi escolhida.", "只看这个账号承接的请求。点一条看完整的选路过程。": "Apenas requisições atendidas por esta conta. Abra uma para ver o roteamento completo.", "只看这条路径上的请求。点一条看完整的选路过程。": "Apenas requisições deste caminho. Abra uma para ver o roteamento completo.", "只移出本路由,账号状态和其他路由不变;保存后此入口将没有可用路由。": "Remove apenas desta rota. Contas e outras rotas não mudam. Após salvar, esta entrada não terá rota disponível.", "只读预演,不会推进轮转;保存后才会影响真实请求。": "Visualização somente leitura; não avança a rotação. Somente salvar afeta requisições reais.", "可以保存空路由,但请求会明确失败,不会回退全局。": "Uma rota vazia pode ser salva, mas as solicitações falharão explicitamente, sem recorrer à rota global.", "可以跨提供商、跨模型多选。同一提供商也可以加入不同模型。": "Selecione vários modelos de diferentes provedores, inclusive modelos distintos do mesmo provedor.", "可用候选": "Candidatos disponíveis", "可用待命": "Disponível, em espera", "可用账号按请求轮换;开启会话粘性时同一会话优先留在原账号。": "Alterne as contas disponíveis a cada solicitação. Com aderência de sessão ativada, a mesma sessão prioriza sua conta anterior.", "右侧面板内容": "Conteúdo do painel direito", "同一会话优先保持模型与账号,不可用时才顺延。": "Mantenha preferencialmente o mesmo modelo e conta na sessão; avance quando indisponíveis.", "同一模型,选择不同提供商": "Mesmo modelo, provedores diferentes", "同号重试 {n} 次": "{n} novas tentativas na mesma conta", "同账号内部重试": "Novas tentativas internas na mesma conta", "后备账号": "Conta de reserva", "后过期": "até expirar", "否": "Não", "启用": "ativos", "启用 {provider} 的账号": "Ativar contas de {provider}", "启用全部账号": "Ativar todas as contas", "启用当前列表账号": "Ativar contas desta lista", "启用提供商中的第 {rank} 顺位;当前可用候选第 {effective} 顺位。": "Prioridade {rank} entre os provedores ativos; prioridade {effective} entre os candidatos disponíveis no momento.", "启用提供商中的第 {rank} 顺位;当前没有可用候选账号。": "Prioridade {rank} entre os provedores ativos; nenhuma conta candidata está disponível no momento.", "启用规则": "Ativar regra", "启用账号 {account}": "Ativar conta {account}", "命中 {n} 次": "{n} acertos", "命中下面规则的上下文压缩请求,会改用指定的模型压缩一次;账号仍按新模型自己的路由挑。": "Solicitações de compactação de contexto que correspondem a uma regra abaixo são compactadas uma vez com o modelo escolhido; a conta é escolhida pela rota do próprio modelo.", "命中会话粘性,沿用原账号完成请求": "Vínculo de sessão encontrado; a conta anterior concluiu a solicitação", "命中会话粘滞": "Vínculo de sessão encontrado", "命中这条规则的压缩请求会改用「压缩模型」重发一次;改写之后按新模型自己的路由挑账号。": "Solicitações de compactação que correspondem a esta regra são reenviadas uma vez com o modelo de compactação; a conta é escolhida pela rota do próprio modelo.", "命中配置": "Configuração aplicada", "响应到达": "Resposta recebida", "响应到达后": "Após a chegada da resposta", "响应完成": "Resposta concluída", "回放中": "Reproduzindo", "回放保持不变": "Reprodução permanece inalterada", "回放步骤": "Etapa da reprodução", "固定这条请求": "Fixar esta solicitação", "在工作台查看": "Abrir na área de roteamento", "在途 + 近期": "Em andamento + recentes", "在途 {n} / {limit}": "Em andamento {n} / {limit}", "在途时长": "Tempo em andamento", "在途请求 / 并发上限": "Solicitações em andamento / limite de simultaneidade", "备选按顺序尝试;一个都不加时,当前路由内找不到视觉模型就停止并说明原因。": "Os alternativos são tentados em ordem; sem nenhum, a solicitação para com uma explicação se não houver modelo de visão na rota atual.", "复制失败,请手动选择并复制": "Falha ao copiar. Selecione e copie manualmente.", "复制网关地址": "Copiar URL do gateway", "失败原因未记录": "Motivo da falha não registrado", "失败后备选": "Alternativa em caso de falha", "失败时直接报错": "Em caso de falha, retornar erro", "失败时退回原模型": "Em caso de falha, voltar ao modelo original", "失败阈值": "Limite de falhas", "完整详情": "Detalhes completos", "完整请求详情": "Detalhes completos da solicitação", "完整过程": "Processo completo", "实时状态暂未更新,当前显示上次读取的结果:{error}": "Não foi possível atualizar o status em tempo real. Exibindo os últimos resultados obtidos: {error}", "实际尝试失败": "Tentativa real com falha", "实际模型": "Modelo real", "实际请求路径": "Caminhos reais das solicitações", "实际账号尝试": "Tentativas reais por conta", "客户端已取消请求": "O cliente cancelou a solicitação", "客户端模型 {client} → 实际模型 {model}": "Modelo do cliente {client} → modelo real {model}", "客户端请求": "Solicitação do cliente", "对外模型 ID": "ID público do modelo", "对外模型 ID 已被占用,请换一个名称": "Este ID público já está em uso. Escolha outro nome.", "对外模型 ID 格式不正确": "Formato inválido do ID público do modelo", "将禁用当前所选的 {n} 个账号,所有路由都不能再选用它们。此操作立即保存,不会删除账号。": "Desativar as {n} contas selecionadas para todas as rotas. A alteração é salva imediatamente e não exclui as contas.", "尚未记录承载账号": "Nenhuma conta de atendimento registrada ainda", "尚未读取到有效的积分到期时间": "Nenhum prazo válido de expiração dos créditos foi carregado ainda", "尝试 {n}": "Tentativa {n}", "尝试 {n} · 最终承载": "Tentativa {n} · processou ao final", "尝试中": "Tentando", "尝试失败": "Tentativa falhou", "尝试明细已截断或未记录,画布只展示保存下来的信息。": "Os detalhes das tentativas foram truncados ou não registrados. O diagrama mostra apenas as informações salvas.", "尝试结果": "Resultado da tentativa", "尝试记录": "Tentativas", "展开其余 {n} 个候选": "Mostrar mais {n} candidatos", "展开完整原因": "Mostrar motivo completo", "工具服务的视觉模型": "o modelo de visão do serviço de ferramentas", "左侧修改的是全局默认,不会影响它。": "As alterações à esquerda são no padrão global e não o afetam.", "已保存": "Salvo", "已保存 {n} 个候选": "{n} candidatas salvas", "已保存明细": "Detalhes salvos", "已停用": "Desativado", "已停用提供商 · {n}": "Provedores inativos · {n}", "已关闭": "Desativado", "已删除独立配置,改为跟随全局": "Configuração independente excluída; agora segue a configuração global", "已启用": "Ativados", "已启用模拟条件": "Condições de simulação ativadas", "已固定这条请求,新请求不会打断当前查看": "Esta solicitação está fixada; novas solicitações não interromperão esta visualização", "已完成记录": "Registros concluídos", "已完成请求时间范围": "Período das solicitações concluídas", "已尝试": "Já tentada", "已尝试 · 失败": "Tentado · falhou", "已用时": "Tempo decorrido", "已禁用账号": "Contas desativadas", "已禁用账号 · {n}": "Contas desativadas · {n}", "已解除 {n} 条会话粘滞": "{n} vínculos de sessão liberados", "已记录 {n} 次尝试": "{n} tentativas registradas", "已跳过": "Ignorada", "已转换为账号启停,独立路由参与名单保持不变": "Convertido para controles de ativação de contas. As listas de participação das rotas independentes não foram alteradas.", "平均耗时": "Duração média", "并发已满": "Limite de simultaneidade atingido", "序号表示先后,不是提供商之间互相转发": "Os números indicam a ordem das tentativas, não o encaminhamento entre provedores", "应用到草稿": "Aplicar ao rascunho", "开始 {start} · 响应 {response} · 结束 {finish}": "Início {start} · resposta {response} · fim {finish}", "开始于 +{time}": "Início em +{time}", "开始时间": "Hora de início", "当前全局路由使用固定参与名单,新增提供商不会自动加入。": "A rota global usa uma lista fixa de participação. Novos provedores não são adicionados automaticamente.", "当前可用队首": "Primeiro candidato disponível agora", "当前承载": "Conta responsável atual", "当前有效顺位以路由预演为准,不改变保存的配置优先级。": "A ordem efetiva atual segue a prévia de roteamento e não altera a prioridade salva na configuração.", "当前档位不保留跨请求粘滞,因此没有活跃绑定。": "O modo atual não mantém vínculos entre solicitações, portanto não há vínculos ativos.", "当前模型": "Modelo atual", "当前模型使用独立顺序,不受全局自动消耗排序影响。删除独立路由后会重新跟随账号页。": "Este modelo usa uma ordem independente, sem influência da ordenação global automática de consumo. Ao excluir a rota independente, ele volta a seguir Contas.", "当前模型使用独立顺序,不受全局自动消耗排序影响。恢复继承后会重新跟随账号页。": "Este modelo usa uma ordem independente, sem influência da ordenação global automática de consumo. Restaure a herança para seguir Contas novamente.", "当前模型没有对应的账号,请先添加账号或检查模型绑定。": "Não há contas associadas a este modelo. Adicione uma conta ou verifique as associações do modelo.", "当前模型配置独立保存,不影响全局和其他模型。": "A configuração deste modelo é salva de forma independente e não afeta as configurações globais nem outros modelos.", "当前没有参与账号,保存后这个范围可能无法承载新请求。": "Nenhuma conta participa no momento. Ao salvar, este escopo poderá ficar sem capacidade de atender novas solicitações.", "当前没有可沿用的粘滞绑定": "Nenhum vínculo de sessão reutilizável", "当前空闲": "Ociosa no momento", "当前绑定:{account},剩余 {time}": "Vínculo atual: {account}, expira em {time}", "当前继承全局。改成模型独立配置后,改动只影响这个模型。": "Hoje herda o global. Ao mudar para configuração própria, só este modelo é afetado.", "当前继承全局固定名单;新增提供商需手动添加或在全局配置中改为自动参与。": "Esta visualização herda a lista global fixa. Adicione novos provedores manualmente ou ative a participação automática na configuração global.", "当前继承全局,修改前先切到独立配置": "Herdando o global — mude para configuração própria antes de editar", "当前继承全局,切换到独立配置后只修改本模型。": "As configurações globais estão sendo herdadas. Mude para uma configuração independente para editar apenas este modelo.", "当前网关尚不支持全局账号启停,请更新网关后重新读取。": "Este gateway ainda não oferece os controles globais de contas. Atualize o gateway e recarregue.", "当前范围内没有请求": "Nenhuma solicitação neste intervalo", "当前范围的提供商都没有账号,先在账号页添加": "Nenhum provedor neste escopo tem contas ainda. Adicione uma na página de contas.", "当前视图没有活跃会话粘滞": "Nenhum vínculo de sessão ativo nesta visualização", "当前视图没有路由回放记录": "Nenhuma reprodução de roteamento nesta visualização", "当前视图的请求入口": "Entrada de solicitações desta visualização", "当前请求": "Solicitações em andamento", "当前路由位置": "Posição atual no roteamento", "当前路由内的视觉模型": "um modelo de visão desta rota", "当前配置": "Configuração atual", "当前配置已排除": "Excluída pela configuração atual", "当时": "Na solicitação", "当时可用,当前请求尚未轮到这个账号": "Disponível naquele momento; esta solicitação ainda não chegou a esta conta", "当时可选的账号 · {n}": "Contas disponíveis na hora · {n}", "当时状态": "Estado naquele momento", "当时的候选说明": "Descrição da candidata naquele momento", "当时的成员模型": "Modelos membros no momento da solicitação", "当时的选路原因未记录": "O motivo do roteamento não foi registrado naquele momento", "当时被候选过滤规则跳过": "Ignorada pelas regras de filtragem de candidatas naquele momento", "当时配置": "Configuração na solicitação", "当时配置与当前配置": "Configuração anterior e atual", "影响继承全局的模型": "Afeta modelos que herdam as configurações globais", "怎么选账号": "Seleção de contas", "思考等级 {value}": "Nível de raciocínio {value}", "总耗时": "Duração total", "总计 {n} tokens": "{n} tokens no total", "恢复": "Restaurar", "恢复全局继承": "Restaurar herança global", "恢复按账号页面的全局优先级选路,解除全局视图的提供商和账号范围限制。模型独立配置不会改变。": "Restaure o roteamento pela prioridade global da página de contas e remova as restrições de provedores e contas da visualização global. As configurações independentes dos modelos não serão alteradas.", "恢复提供商": "Restaurar provedores", "恢复路由提供商": "Restaurar provedores de roteamento", "恢复阈值": "Limite de recuperação", "恢复默认路由": "Restaurar roteamento padrão", "成功承载": "Processada com sucesso", "成员内轮询": "Rotação dentro dos membros", "成员模型": "Modelos membros", "所有可用提供商自动参与,新增账号或插件后无需再加路由;明确停用的保持不变。": "Todos os provedores disponíveis entram automaticamente — não é preciso adicionar rotas após novas contas ou plugins; os desativados explicitamente continuam fora.", "所有可用提供商自动参与,新增账号或插件后无需再添加路由。已停用的提供商和已排除的账号保持不变。": "Todos os provedores disponíveis participam automaticamente. Adicionar contas ou plugins não exige configurar novas rotas. Provedores desativados e contas excluídas permanecem inalterados.", "所有可用提供商都已在当前路由中": "Todos os provedores disponíveis já estão nesta rota", "所有模型共用": "Compartilhado por todos os modelos", "所有模型共用路由策略与保护设置;全局顺序和消耗规则与账号页联动,模型独立配置可明确覆盖顺序。": "Todos os modelos compartilham estratégias de roteamento e proteção. A ordem global e as regras de consumo ficam sincronizadas com Contas; uma configuração independente do modelo pode substituir a ordem explicitamente.", "打开完整请求详情": "Abrir detalhes completos da solicitação", "打开该模型配置": "Abrir a configuração deste modelo", "执行耗时": "Tempo de execução", "执行记录": "Registros de execução", "执行路径": "Caminho de execução", "执行路径按当时快照保留": "Caminho de execução preservado conforme o registro original", "批量禁用账号": "Desativar contas em lote", "承载账号": "Conta responsável", "把不同提供商、不同模型组合成一个入口。客户端使用对外模型 ID 发起请求。": "Combine modelos de vários provedores em uma entrada. Os clientes usam o ID público do modelo.", "把全局配置复制成这个模型的独立配置": "Copiar o global para uma configuração própria deste modelo", "拖动卡片改顺位,勾选决定参与;这里的位置就是实际选路顺序。": "Arraste os cartões para reordenar e marque para incluir; esta ordem é a ordem real de roteamento.", "拖动或按 Alt + 方向键调整顺序": "Arraste ou use Alt + setas para reordenar", "拖动把手或按 Alt + 方向键调整顺序,更多操作在右侧菜单。": "Arraste a alça ou use Alt + setas para reordenar. Mais ações estão no menu à direita.", "拖动把手调整顺序,也可以使用右侧上下按钮。": "Arraste a alça ou use os botões para cima e para baixo à direita.", "拖动提供商与账号调整顺序,修改即时保存。": "Arraste provedores e contas para reordená-los. As alterações são salvas imediatamente.", "拖动改顺位、勾选决定参与;这里的位置就是实际选路顺序。": "Arraste para reordenar e marque para incluir; esta ordem é a ordem real de roteamento.", "拖动调整提供商顺序": "Arraste para reordenar provedores", "拖动调整账号顺序": "Arraste para reordenar contas", "按客户端类型聚合": "Agrupado por tipo de cliente", "按已保存配置": "Com base na configuração salva", "按当前草稿预演,不发送请求,不消耗额度。": "Simula o rascunho atual sem enviar solicitações nem consumir cota.", "按当前视图的顺序参与选路": "Roteamento na ordem configurada para esta visualização", "按此范围查看配置": "Abrir configuração deste escopo", "按步骤回放,不重新发送请求": "Reproduzir etapas sem reenviar a solicitação", "按请求开始时的顺位": "Na ordem do início da requisição", "按请求模型选择": "Selecionar pelo modelo solicitado", "按路径聚合,会话在列表中展开,不在画布逐条连线。": "Agrupado por caminho. As sessões aparecem na lista, não como linhas individuais no diagrama.", "排除": "excluído", "提供商与账号": "Provedores e contas", "提供商保持优先顺序,同一提供商的账号轮流承接。": "Mantenha os provedores em ordem de prioridade e alterne as contas dentro de cada provedor.", "提供商参与": "Participação de provedores", "提供商参与方式": "Modo de participação dos provedores", "提供商参与方式改为{value}": "Participação de provedores alterada para {value}", "提供商参与范围": "Escopo de participação dos provedores", "提供商未参与": "Provedor não participa", "提供商未记录": "Provedor não registrado", "提供商范围": "Escopo de provedores", "提供商路由设置": "Configurações de roteamento do provedor", "搜索会话或账号": "Buscar sessões ou contas", "搜索客户端、模型或账号": "Buscar clientes, modelos ou contas", "搜索提供商或模型": "Buscar provedores ou modelos", "搜索提供商或账号": "Buscar provedor ou conta", "搜索本页会话或账号": "Buscar sessões ou contas nesta página", "搜索模型": "Buscar modelos", "搜索模型、账号或会话来源": "Buscar modelo, conta ou origem da sessão", "搜索模型或请求 ID": "Buscar modelo ou ID da solicitação", "搜索请求、模型或账号": "Pesquisar requisições, modelos ou contas", "搜索路由配置": "Buscar configurações de rota", "撤销修改": "Descartar alterações", "撤销草稿": "Descartar rascunho", "收起其他候选": "Ocultar outras candidatas", "改为独立配置": "Usar configuração própria", "改为自动参与": "Ativar participação automática", "改用": "Trocar para", "放到第 {n} 位": "Soltar na posição {n}", "放大画布": "Ampliar", "整次请求改交": "Entrega a solicitação inteira para", "文本对话": "Conversa por texto", "新增可用提供商会自动参与;这里只需恢复曾明确停用的提供商。": "Novos provedores disponíveis participam automaticamente. Use esta janela apenas para restaurar provedores desativados explicitamente.", "新增提供商自动参与;移出本路由的不会自动加回。": "Novos provedores participam automaticamente. Os removidos não são reincluídos automaticamente.", "新增模型": "Adicionar modelo", "新增模型独立路由": "Adicionar rota independente de modelo", "新增模型独立配置": "Nova configuração por modelo", "新增路由配置": "Adicionar configuração de roteamento", "新建路由组": "Novo grupo de rotas", "新配置 · 保存后生效": "Nova config · vale após salvar", "无可用账号": "Nenhuma conta disponível", "无有效绑定": "Nenhum vínculo válido", "时间相对请求开始;历史只读,修改当前配置不会改变这条记录。": "Os tempos são relativos ao início da requisição. O histórico é somente leitura; alterar a configuração atual não modifica este registro.", "时间相对请求开始;未记录的旧数据不补算。历史只读,修改当前配置不会改变这条记录。": "Os tempos são relativos ao início da requisição; dados antigos sem registro não são recalculados. O histórico é somente leitura — mudar a config atual não altera este registro.", "时间相对请求开始;未记录的旧数据不补算。响应到达不等于流式请求结束。": "Os tempos são relativos ao início da solicitação. Dados históricos ausentes não são estimados. Receber uma resposta não significa que uma solicitação em streaming terminou.", "是": "Sim", "显示全部": "Mostrar tudo", "显示其他候选": "Mostrar outras candidatas", "显示无账号 ({n})": "Mostrar sem contas ({n})", "暂停": "Pausar", "暂无可用账号": "Nenhuma conta disponível", "曾被限流的账号暂时排到队尾,三十分钟后或转发成功后恢复。": "Contas que sofreram limitação de taxa vão temporariamente para o fim da fila e retornam após trinta minutos ou um encaminhamento bem-sucedido.", "最早到期的剩余积分包:{time}": "Primeira expiração entre os pacotes de créditos com saldo: {time}", "最终承载": "Conta final responsável", "最终由 {account} 承接": "Finalizado por {account}", "最近 {n} 分钟": "Últimos {n} minutos", "最近 {n} 条": "Últimos {n}", "最近使用:{time}": "Último uso: {time}", "最近完成": "Concluídas recentemente", "最近没有命中记录": "Nenhum acerto recente", "最近请求已完成": "Última solicitação concluída", "有在途": "Com solicitações em andamento", "有未保存修改,预演仍按已保存配置。": "Há alterações não salvas; a visualização ainda usa a configuração salva.", "有未保存的修改": "Há alterações não salvas", "未保存完整尝试明细,仅显示请求记录中的承载信息。": "Os detalhes completos das tentativas não foram salvos. São exibidas apenas as informações de atendimento do registro.", "未保存草稿": "Rascunho não salvo", "未切换": "Sem troca", "未参与": "Não participa", "未参与提供商 · {n}": "Provedores não participantes · {n}", "未参与提供商默认收起;选中历史路径时仍会显示。": "Provedores não participantes ficam recolhidos por padrão, mas aparecem quando seu caminho histórico é selecionado.", "未参与本范围": "Fora deste escopo", "未参与本路由": "Fora desta rota", "未发生切换": "Sem troca", "未记录上游调用": "Sem chamada upstream registrada", "未识别客户端": "Cliente não identificado", "未调用": "Não chamada", "未调用不画请求线;模型限流与当前配置分别展示。": "Sem chamada, não há linha de solicitação. Limites do modelo e configuração atual são exibidos separadamente.", "未调用的候选": "Candidatas não chamadas", "未轮到": "Não alcançada", "未选择客户端": "Nenhum cliente selecionado", "未选择模型": "Nenhum modelo selecionado", "未配置模型的默认路由": "Rota padrão para modelos não configurados", "本地网关": "Gateway local", "本次尝试失败": "Esta tentativa falhou", "本次执行": "Esta execução", "本次状态": "Estado da solicitação", "本次用时": "Tempo da tentativa", "本次结果": "Resultado da solicitação", "本次耗时": "Duração desta tentativa", "本次请求": "Esta solicitação", "本次请求已完成": "Esta solicitação foi concluída", "本窗口未调用": "Não chamada neste período", "本轮选路预演": "Prévia de roteamento", "来源未记录": "Origem não registrada", "查看上游错误": "Ver erro do upstream", "查看上游错误摘要": "Ver resumo do erro upstream", "查看其他 {n} 个候选": "Ver outras {n} candidatas", "查看实际请求的选路、尝试与结果": "Ver o roteamento, as tentativas e os resultados de solicitações reais", "查看当前配置": "Ver configuração atual", "查看最后一次尝试": "Ver a última tentativa", "查看详情内容": "Selecionar conteúdo dos detalhes", "查看配置": "Ver configuração", "查看配置详情": "Ver detalhes da configuração", "标题生成": "Geração de título", "标题生成路由入口尚未就绪,请刷新页面后重试": "A entrada de roteamento de geração de título ainda não está pronta. Atualize a página e tente novamente.", "检测到旧版全局参与设置,请先确认转换,再管理账号启停。": "Foram encontradas configurações antigas de participação global. Confirme a conversão antes de gerenciar a ativação das contas.", "模型、网关、提供商与账号的可视化选路": "Roteamento visual entre modelos, gateway, provedores e contas", "模型未记录": "Modelo não registrado", "模型独立路由": "Rota independente por modelo", "模型独立配置": "Configuração independente do modelo", "模型看不了图片时,按下面的规则交给视觉模型;没配到的模型、以及本来就能看图的,一律原样放行。": "Quando um modelo não consegue ler imagens, as regras abaixo as entregam a um modelo de visão; modelos não configurados aqui — e os que já leem imagens — passam sem alteração.", "模型绑定不可用": "Associação do modelo indisponível", "模型路由": "Rotas de modelos", "模拟首选失败": "Simular falha da primeira opção", "正在处理": "Em processamento", "正在由 {account} 处理": "Processando com {account}", "正在编辑": "Editando", "正在读取会话绑定…": "Carregando vínculo da sessão…", "正在读取当前配置": "Carregando a configuração atual", "正在读取路由…": "Carregando rotas…", "正在选路,尚未记录上游尝试": "Roteamento em andamento; nenhuma tentativa upstream foi registrada ainda", "正在预览 {model}": "Visualizando {model}", "此为配置顺位,当前没有可用候选账号。": "Esta é a prioridade configurada; não há contas candidatas disponíveis no momento.", "此入口没有参与路由的提供商,保存后请求将明确失败。": "Esta entrada não tem provedores participantes. Após salvar, as solicitações falharão explicitamente.", "此入口没有参与路由的账号。保存后请求将明确失败,不会回退全局或自动恢复参与名单。": "Nenhuma conta participa desta entrada. Após salvar, as solicitações falham explicitamente, sem recorrer à rota global ou restaurar a lista automaticamente.", "此刻队列": "Fila atual", "此提供商当前没有可用的模型绑定,配置已保留;在模型管理中恢复绑定后会自动回来。": "Este provedor não tem uma associação de modelo disponível no momento. A configuração é mantida e volta automaticamente quando a associação é restaurada no gerenciamento de modelos.", "此模型限流": "Limite de taxa para este modelo", "每轮重新选路,不保留跨请求的账号绑定。": "Escolha uma nova rota a cada turno sem manter vínculos de conta entre solicitações.", "没有保存其他候选信息": "Nenhuma informação de outras candidatas foi salva", "没有保存调用明细": "Nenhum detalhe de chamada salvo", "没有其他候选账号": "Nenhuma outra conta candidata", "没有匹配的会话": "Nenhuma sessão correspondente", "没有匹配的候选": "Nenhum candidato correspondente", "没有匹配的提供商或账号": "Nenhum provedor ou conta correspondente", "没有匹配的记录": "Nenhum registro correspondente", "没有匹配的请求": "Nenhuma solicitação correspondente", "没有匹配的路由配置": "Nenhuma configuração de rota correspondente", "没有参与路由的账号": "Nenhuma conta participa do roteamento", "没有可添加的模型": "Nenhum modelo disponível para adicionar", "没有可用提供商,请先添加账号或安装插件。": "Nenhum provedor disponível. Adicione uma conta ou instale um plugin primeiro.", "没有可用模型": "Nenhum modelo disponível", "没有可用账号": "Nenhuma conta disponível", "没有可选的对话模型,请先启用模型和对应账号。": "Nenhum modelo de conversa disponível. Ative um modelo e a conta correspondente primeiro.", "没有独立配置的模型沿用全局路由。": "Modelos sem configuração independente usam a rota global.", "没有请求也能配置路由": "Configure o roteamento mesmo sem solicitações", "没有跳过": "Nenhum ignorado", "没有需要恢复的提供商": "Nenhum provedor precisa ser restaurado", "沿用工具服务的视觉模型": "Usar o modelo de visão do serviço de ferramentas", "流动:有请求在途": "Em movimento: solicitações em andamento", "消耗规则": "Regras de consumo", "消耗规则已保存,但路由列表刷新失败:{error}": "As regras de consumo foram salvas, mas a lista de rotas não pôde ser atualizada: {error}", "添加到全局路由,新请求将按这里的顺序选择账号。": "Adicione à rota global. Novas solicitações selecionam contas na ordem configurada aqui.", "添加到固定参与名单;以后新增的提供商仍需手动加入。": "Adicione à lista fixa de participação. Provedores futuros ainda deverão ser adicionados manualmente.", "添加参与模型": "Adicionar modelos participantes", "添加规则": "Adicionar regra", "添加路由提供商": "Adicionar provedor de roteamento", "清空选择": "Limpar seleção", "清除会话粘滞": "Limpar vínculos de sessão", "灰线:历史流量": "Cinza: tráfego histórico", "点击查看这次尝试的结果与原因": "Clique para ver o resultado e o motivo desta tentativa", "点击节点查看请求,点击齿轮编辑路由配置。": "Clique em um nó para ver solicitações e na engrenagem para editar o roteamento.", "点击节点筛选,点击齿轮进入配置": "Clique num nó para filtrar, na engrenagem para configurar", "点击节点,切换到对应请求详情": "Clique em um nó para abrir os detalhes correspondentes da solicitação", "点客户端看它用过的模型": "Clique num cliente para ver seus modelos", "点模型看它的请求": "Clique num modelo para ver as requisições", "点节点筛选,再点一次取消;点齿轮进入配置": "Clique num nó para filtrar, clique de novo para limpar; a engrenagem abre a config", "熔断保护": "Disjuntor", "特殊请求路由": "Roteamento de requisições especiais", "特殊请求路由 · 只改写模型,不改选账号规则": "Roteamento de requisições especiais · reescreve apenas o modelo, as regras de conta não mudam", "独立": "Própria", "独立账号顺序": "Ordem independente de contas", "独立路由": "Rota independente", "独立路由的账号顺序不受全局消耗规则影响": "A ordem de contas de uma rota independente não é afetada pelas regras globais de consumo", "独立配置": "Configuração independente", "画布位置不改变选路优先级": "A posição no diagrama não altera a prioridade de roteamento", "真实请求还会考虑当时的会话绑定、并发与限额状态。": "Solicitações reais também consideram vínculos de sessão, concorrência e limites naquele momento.", "确定删除「{model}」的独立路由配置?删除后该模型将使用全局路由。不会删除模型、账号或请求记录。": "Excluir a configuração de roteamento independente de “{model}”? Após a exclusão, este modelo usará a rota global. Nenhum modelo, conta ou registro de solicitação será excluído.", "确认转换": "Confirmar conversão", "禁用全部账号": "Desativar todas as contas", "禁用当前列表账号": "Desativar contas desta lista", "禁用账号": "Desativar conta", "积分到期:暂无数据": "Expiração dos créditos: sem dados", "积分:{time}": "Créditos: {time}", "移出": "removido", "移出本路由": "Remover desta rota", "移除此模型的独立路由配置,之后重新继承全局路由。不会删除模型、账号或请求记录。": "Remova a configuração de roteamento independente deste modelo para voltar a herdar a rota global. Nenhum modelo, conta ou registro de solicitação será excluído.", "移除路由提供商": "Remover provedor de roteamento", "窗口内无请求": "Sem pedidos no período", "第 {n} 位": "Posição {n}", "第 {n} 次尝试 · {name}": "Tentativa {n} · {name}", "第 {n} 顺位": "Prioridade {n}", "等待回放": "Aguardando reprodução", "等待首帧": "Aguardando o primeiro byte", "策略": "Estratégia", "筛选模型": "Filtrar por modelo", "粘性命中": "Acertos de vínculo", "粘性:{mode}": "Aderência: {mode}", "粘滞": "Aderência", "粘滞 {mode}": "Afinidade {mode}", "粘滞命中": "Vínculo encontrado", "粘滞标记": "Marcadores de vínculo", "组名": "Nome do grupo", "组名方便识别,对外模型 ID 给客户端使用。": "O nome identifica o grupo; os clientes usam o ID público do modelo.", "经过 {n} 次切换后成功,最终承载:{account}": "Sucesso após {n} trocas; conta final: {account}", "绑定:{account}": "Vinculada a: {account}", "结束时间": "Hora de término", "结果未记录": "Resultado não registrado", "统一路由设置": "Configurações globais de roteamento", "统一路由设置已保存": "Configurações globais de roteamento salvas", "继承": "Herdar", "继承全局": "Herdar global", "继承全局配置": "Herda a configuração global", "继承全局:{value}": "Herdar global: {value}", "继承时不能改这里的值;切到独立配置后才会写入这个模型。": "Não é possível alterar valores herdando; ao usar configuração própria eles são gravados neste modelo.", "编辑全局默认": "Editar padrões globais", "编辑范围": "Escopo de edição", "编辑规则": "Editar regra", "编辑路由组": "Editar grupo de rotas", "缩小画布": "Reduzir", "网关继续尝试下一个账号": "Gateway tenta a próxima conta", "耗时未记录": "Duração não registrada", "自动参与": "Participação automática", "自动参与模式下将明确停用此提供商,之后新增账号也不会自动恢复;不会删除提供商或账号。": "Desativa explicitamente este provedor no modo automático. Adicionar contas depois não o reativará. Nenhum provedor ou conta será excluído.", "自动参与(推荐)": "Automática (recomendado)", "自动消耗排序已启用,请先关闭规则再手动调整": "A ordenação automática de consumo está ativa. Desative as regras antes de reordenar manualmente", "自动:空闲五分钟释放;会话内:空闲六小时释放;每轮或关闭:不保留跨请求绑定。": "Automático: libera após cinco minutos ociosos. Sessão: após seis horas ociosas. Por turno ou Desativado: sem vínculo entre solicitações.", "自动:空闲五分钟释放;会话内:空闲六小时;每轮或关闭:不跨请求绑定。": "Auto: libera após cinco minutos ocioso; Sessão: seis horas ociosas; Por turno ou Desligado: sem vínculo entre requisições.", "自定义路由组": "Grupos de rotas personalizados", "草稿预演": "Prévia do rascunho", "被跳过": "Ignorados", "被跳过的账号": "Contas ignoradas", "规则": "Regras", "规则全局生效,不受原路由池限制;指定模型按自己的路由选账号,网关 Key 权限仍然生效。": "As regras se aplicam globalmente, sem se limitar ao pool de roteamento original. Os modelos selecionados usam seu próprio roteamento para escolher contas; as permissões da chave do gateway continuam valendo.", "规则最多 {n} 条。": "No máximo {n} regras.", "视频输入": "Entrada de vídeo", "解除": "Liberar", "解除全局路由的参与范围限制,继续使用与账号页共用的手动顺序和自动消耗规则;模型独立配置保持不变。": "Remova as restrições de participação do roteamento global, mantendo a ordem manual e as regras automáticas de consumo compartilhadas com Contas. As configurações independentes dos modelos permanecem inalteradas.", "解除全部粘滞": "Liberar todos os vínculos", "解除只清除网关的账号绑定,不删除聊天历史、不关闭粘性设置。后续成功请求仍可建立新的绑定;重启网关会清空这些进程本地记录。": "A liberação remove apenas o vínculo de conta do gateway, sem excluir o histórico de conversas nem desativar a aderência. Solicitações posteriores bem-sucedidas podem criar novos vínculos. Reiniciar o gateway limpa esses registros locais do processo.", "解除当前模型全部粘滞": "Liberar vínculos deste modelo", "解除所有模型的全部会话粘滞。不会终止在途请求,之后的请求会重新选路。": "Libere todos os vínculos de sessão de todos os modelos. Solicitações em andamento não são encerradas; as posteriores escolhem uma nova rota.", "解除这个模型的全部会话粘滞。不会终止在途请求,之后的请求会重新选路。": "Libere todos os vínculos de sessão deste modelo. Solicitações em andamento não são encerradas; as posteriores escolhem uma nova rota.", "解除这条会话": "Liberar esta sessão", "触发客户端": "Cliente de origem", "计算中…": "Calculando…", "记录所有经过网关的请求,不要求绑定客户端。": "Registra todas as solicitações que passam pelo gateway, sem exigir vínculos de clientes.", "记录时间": "Registrado em", "设置参与范围": "Configurar participação", "识别客户端": "Clientes reconhecidos", "该提供商在当前视图中已停用": "Este provedor está desativado nesta visualização", "该提供商没有账号,请先到账号页添加。": "Este provedor não tem contas. Adicione uma na página de contas primeiro.", "请填写组名和对外模型 ID": "Informe o nome do grupo e o ID público do modelo", "请检查熔断参数:失败阈值 1~20,时长 10~600 秒,恢复阈值 1~10。": "Verifique os parâmetros do disjuntor: limite de falhas de 1 a 20, duração de 10 a 600 segundos e limite de recuperação de 1 a 10.", "请求": "Solicitações", "请求 ID 未记录": "ID da solicitação não registrado", "请求仍在处理中,当前阶段:{phase}": "Solicitação em andamento; fase atual: {phase}", "请求仍在进行": "Requisição em andamento", "请求会去哪里": "Para onde vai a solicitação?", "请求回放": "Reprodução de requisições", "请求在途": "Solicitação em andamento", "请求完成不代表会话关闭;粘滞有效期不是在线状态。": "A conclusão da solicitação não indica o encerramento da sessão. A validade do vínculo não representa o estado online.", "请求已取消": "Solicitação cancelada", "请求当时的配置": "Configuração no momento da solicitação", "请求成功完成,未发生账号切换": "Solicitação concluída com sucesso sem troca de conta", "请求成功完成,未记录承载账号": "A solicitação foi concluída, mas a conta que a atendeu não foi registrada", "请求执行": "Execução da requisição", "请求执行回放": "Reprodução da execução da solicitação", "请求日志 →": "Log de requisições →", "请求未成功完成": "A solicitação não foi concluída com sucesso", "请求模型": "Modelo da solicitação", "请求活动范围": "Escopo de atividade das solicitações", "请求状态": "Status da solicitação", "请求结论": "Resultado da solicitação", "请求范围": "Intervalo de solicitações", "请求记录数据库不可用": "Banco de dados de solicitações indisponível", "请求跟踪": "Rastreamento de solicitações", "请求跟踪内容": "Conteúdo do rastreamento", "请求进入": "Requisição recebida", "请求进入网关": "Requisição chega ao gateway", "请求需要": "Requisitos da solicitação", "请选择模型": "Selecione um modelo", "读取中…": "Carregando…", "谁参与及先后顺序": "Participação e prioridade", "调整全局消耗规则": "Editar regras globais de consumo", "调整到期时间、可用余额及其他消耗规则的优先级": "Ajustar a prioridade de vencimento, saldo disponível e outras regras de consumo", "调整后续请求的配置": "Configurar solicitações posteriores", "调整模型顺序": "Reordenar modelos", "调整积分到期远近及其他消耗规则": "Ajustar a ordem de expiração dos créditos e outras regras de consumo", "调用示例": "Exemplo de solicitação", "账号 {name} 已{state}": "Conta {name}: {state}", "账号全部禁用": "Todas as contas desativadas", "账号启停与账号页同步,立即影响所有路由;策略与排序需保存。": "O estado das contas fica sincronizado com Contas e se aplica imediatamente a todas as rotas. A estratégia e a ordem precisam ser salvas.", "账号启停与默认规则": "Estado das contas e regras padrão", "账号启停操作": "Ações de ativação de contas", "账号启停立即生效;路由配置保存后生效": "O estado das contas é aplicado imediatamente; o roteamento, após salvar", "账号启停部分完成:成功 {ok} 个,失败 {fail} 个,跳过 {skip} 个。{details}": "Estado das contas parcialmente atualizado: {ok} com sucesso, {fail} falhas e {skip} ignoradas. {details}", "账号尝试": "Tentativas por conta", "账号已禁用": "Conta desativada", "账号已移除": "Conta removida", "账号操作": "Ações da conta", "账号未记录": "Conta não registrada", "账号组": "Grupos de contas", "账号组操作": "Ações do grupo de contas", "账号设置与全局保护另行保存,不属于本页路由草稿。": "As configurações de conta e a proteção global são salvas separadamente e não fazem parte deste rascunho de roteamento.", "账号设置与所有路由共用,不改变当前路由的参与名单。": "As configurações da conta são compartilhadas por todas as rotas, sem alterar a lista de participação desta rota.", "账号路由设置": "Configurações de roteamento da conta", "起点是请求本身,不依赖客户端绑定。": "O ponto de partida é a própria solicitação, sem depender de vínculos de clientes.", "跟随列表中的最新请求": "Acompanhando a solicitação mais recente da lista", "跨模型组合": "Combinação de modelos", "路径": "Caminho", "路径过多,画布仅展示前 300 条;统计覆盖完整窗口,请筛选模型缩小范围。": "Há muitos caminhos. O diagrama mostra os primeiros 300; as estatísticas cobrem todo o período. Filtre por modelo para reduzir o escopo.", "路由入口": "Entradas de rota", "路由参与操作": "Ações de participação na rota", "路由工作台": "Área de roteamento", "路由工作台不可用": "Área de roteamento indisponível", "路由快照未记录": "Registro de roteamento não salvo", "路由成员操作": "Ações do membro da rota", "路由接口不可用,请确认网关与界面已更新": "API de roteamento indisponível. Verifique se o gateway e a interface estão atualizados.", "路由接口返回了不完整的数据": "A API de roteamento retornou dados incompletos", "路由数据正在更新,请稍后重试": "Os dados de roteamento estão sendo atualizados. Tente novamente em instantes.", "路由模式": "Modo de roteamento", "路由画布": "Diagrama de roteamento", "路由策略改为{value}": "Política de roteamento alterada para {value}", "路由类型": "Tipo de rota", "路由组": "Grupo de rotas", "路由组已删除": "Grupo de rotas excluído", "路由视图": "Visualização de roteamento", "路由设置": "Configurações de roteamento", "路由配置": "Configuração de roteamento", "路由配置列表": "Lista de configurações de rota", "路由配置尚未读取": "Configuração de roteamento ainda não carregada", "路由配置已保存": "Configuração de roteamento salva", "路由配置已保存,仅影响后续选路": "Configuração salva; aplica-se apenas ao roteamento posterior", "路由配置操作": "Ações de configuração de rota", "路由配置版本不可用,请更新网关后重试": "Versão da configuração indisponível. Atualize o gateway e tente novamente.", "跳过候选": "Candidatos ignorados", "转发前就失败、或旧记录未落库时,只能看到请求本身与配置快照。": "Se falhou antes do encaminhamento, ou o registro antigo não foi salvo, só aparecem a requisição e o snapshot de configuração.", "转发失败的账号暂时休息,避免连续请求反复撞到同一故障。": "Contas com falhas de encaminhamento ficam temporariamente em repouso para evitar solicitações repetidas à mesma conta com falha.", "转换只处理当前账号;之后新增账号按账号页的启用状态使用。不会启用任何已禁用的账号。": "A conversão só afeta as contas existentes. Novas contas seguem seu estado na página Contas. Nenhuma conta desativada será ativada.", "转换旧版全局参与设置": "Converter participação global antiga", "转换旧版设置": "Converter configurações antigas", "转换结果未确认,请重新读取全局配置": "Não foi possível confirmar a conversão. Recarregue a configuração global.", "输出 {n} tokens": "{n} tokens de saída", "过程提示": "Notas do processo", "运行视图": "Visão ao vivo", "近期 {n} 次请求": "{n} solicitações recentes", "返回全部流向": "Voltar a todo o tráfego", "返回列表": "Voltar à lista", "返回实时": "Voltar ao tempo real", "返回画布": "Voltar ao diagrama", "还有 {n} 处": "mais {n}", "还没有参与模型": "Ainda não há modelos participantes", "还没有参与路由的提供商": "Ainda não há provedores participando do roteamento", "还没有可用模型,先在账号页添加账号": "Ainda não há modelos disponíveis. Adicione uma conta na página de contas primeiro.", "还没有可用的模型,请先启用模型和对应账号。": "Ainda não há modelos disponíveis; ative modelos e as contas correspondentes.", "还没有规则。压缩请求会按原模型照常转发。": "Ainda não há regras. As solicitações de compactação seguem com o modelo original.", "还没有规则。图片会照常交给原模型,看不了的就会报错。": "Ainda não há regras. As imagens seguem para o modelo original; quem não consegue lê-las falhará.", "还没有规则。标题请求会照常交给原模型。": "Ainda não há regras. As solicitações de título seguem para o modelo original.", "还没有账号,先在账号页添加;有账号的提供商才会出现在这里": "Ainda não há contas. Adicione uma na página de contas; apenas provedores com contas aparecem aqui.", "还没选压缩模型": "Nenhum modelo de compactação selecionado", "还没选原模型": "Nenhum modelo de origem selecionado", "还没选标题模型": "Nenhum modelo de título selecionado", "还没选视觉模型": "Nenhum modelo de visão selecionado", "这一页改的只作用于当前范围": "As mudanças aqui só afetam este escopo", "这个范围内最近的请求。点一条看它当时是怎么选的账号。": "Requisições recentes deste escopo. Abra uma para ver como a conta foi escolhida.", "这个范围怎么选账号": "Como este escopo escolhe contas", "这些设置由所有模型共用;提供商与账号的参与范围和顺序在各自视图中独立配置。": "Estas configurações são compartilhadas por todos os modelos. A participação e a ordem de provedores e contas são configuradas de forma independente em cada visualização.", "这份记录来自实际请求,不使用当前账号队列重新推演。": "Este registro vem de uma solicitação real, não de uma simulação com a fila atual de contas.", "这是请求当时保存的选路快照,修改当前路由不会改变这份记录。": "Este é o registro do roteamento salvo no momento da solicitação. Alterar a rota atual não modifica este registro.", "这条会话已解除或过期,不再有活跃绑定。": "Esta sessão foi liberada ou expirou e não tem mais um vínculo ativo.", "这条规则只改写被识别为标题生成的小请求,普通对话不受影响。": "Esta regra só reescreve pequenas solicitações reconhecidas como geração de título; conversas normais não são afetadas.", "这条规则里的模型收到图片时按选定的方式处理;没被任何规则选中的模型一律原样放行。": "As solicitações dos modelos desta regra são tratadas do modo escolhido quando contêm imagens; modelos não selecionados por nenhuma regra passam sem alteração.", "这条请求使用的路由组已删除,当时的快照仍可查看": "O grupo de rotas usado por esta solicitação foi excluído, mas o registro da configuração ainda está disponível", "这条请求对应的会话当前仍绑定到「{account}」。": "A sessão desta solicitação está atualmente vinculada a “{account}”.", "这条请求没有保存上游尝试明细": "Nenhum detalhe das tentativas upstream foi salvo para esta solicitação", "这条请求没有保存路由决策": "Nenhuma decisão de roteamento foi salva para esta solicitação", "这条请求没有保存路由快照,仍可查看已有的请求和尝试信息。": "Nenhum registro de roteamento foi salvo para esta solicitação. As informações existentes da solicitação e das tentativas continuam disponíveis.", "这次尝试的结果": "Resultado desta tentativa", "这里只决定是否参与本路由,不改变账号启用状态。": "Isto controla apenas a participação na rota, sem alterar a ativação da conta.", "这里的参与范围只影响当前视图;账号启停、并发和限制器属于账号本身,所有模型共用。": "A participação aqui afeta apenas esta visualização. A ativação, a simultaneidade e os limitadores pertencem à conta e são compartilhados por todos os modelos.", "这里的顺序决定实际选路;画布只为查看请求调整位置。": "Esta ordem controla o roteamento real; o diagrama reorganiza os nós apenas para facilitar a visualização das solicitações.", "这里调整的是账号组的全局消耗规则;当前独立路由的账号顺序保持不变。": "Aqui são ajustadas as regras globais de consumo do grupo de contas. A ordem de contas da rota independente atual permanece inalterada.", "连线表示参与本路由": "As linhas indicam participação nesta rota", "连线表示账号组中有已启用账号": "As linhas indicam grupos com contas ativadas", "连续失败达到阈值时暂时让位,恢复后再重新参与。": "Deixe de participar temporariamente quando falhas consecutivas atingirem o limite e retorne após a recuperação.", "退避 {time}": "Espera de {time}", "选中": "Selecionada", "选中流量详情": "Detalhes do tráfego selecionado", "选中路径": "Caminho selecionado", "选择一个或多个客户端": "Selecione um ou mais clientes", "选择一条请求查看执行过程": "Selecione uma solicitação para ver sua execução", "选择一条请求查看选路过程": "Selecione uma solicitação para ver seu roteamento", "选择作用范围后配置路由": "Selecione um escopo para configurar o roteamento", "选择左侧请求查看选路过程": "Selecione uma requisição à esquerda para ver o roteamento.", "选择模型": "Selecionar modelo", "选择请求模型后查看具体限流状态": "Selecione um modelo para ver seu estado de limite de taxa", "选择账号": "Selecionar contas", "选择路由入口": "Selecione uma entrada de rota", "选择预览模型后查看队列": "Selecione um modelo de visualização para ver a fila", "选路原因未记录": "Motivo do roteamento não registrado", "选路情况": "Decisões de roteamento", "选路方式": "Estratégia de roteamento", "选路预演": "Prévia de roteamento", "逐步回放": "Reprodução passo a passo", "配置作用范围": "Escopo da configuração", "配置第 {rank} 顺位;当前可用候选第 {effective} 顺位。": "Prioridade configurada {rank}; prioridade atual entre candidatas disponíveis {effective}.", "配置范围": "Escopo da configuração", "配置该模型": "Configurar este modelo", "配置请求的参与范围与优先顺序": "Configurar participação e prioridade no roteamento", "配置项": "Configuração", "配置顺位 {n}": "Prioridade configurada {n}", "重新读取": "Ler novamente", "重新读取会丢弃当前范围的未保存草稿,其他范围的草稿保留。": "Recarregar descarta o rascunho não salvo deste escopo. Rascunhos de outros escopos são mantidos.", "重新读取配置": "Recarregar configuração", "队列为无会话预演;实际粘性命中和重试顺延以回放为准。": "A fila é uma prévia sem vínculos de sessão. Consulte as reproduções para os acertos reais de vínculo e as trocas em novas tentativas.", "队首": "Início da fila", "阶段 {phase} · 已进行 {time}": "Fase {phase} · {time} decorrido", "限制器跳过": "Ignorada pelo limitador", "隐藏无账号 ({n})": "Ocultar sem contas ({n})", "静止蓝线:选中历史路径": "Azul estático: caminho histórico selecionado", "顺位": "Ordem", "顺序修改即时保存,仅作用于当前视图。": "Alterações na ordem são salvas imediatamente e afetam apenas esta visualização.", "顺序调整不会解除限流;有效粘滞优先于普通账号顺序。": "Reordenar não remove limites de taxa. Um vínculo válido tem prioridade sobre a ordem normal das contas.", "预演首选": "Primeira opção na prévia", "预览模型": "Modelo de visualização", "首帧": "Primeira resposta", "首帧 {time}": "Primeiro byte {time}", "首帧耗时": "Tempo até o primeiro quadro", "首帧:{time}": "Primeiro quadro: {time}", "首选账号": "Conta principal", "默认自动参与;新增可用提供商无需再添加路由,明确停用项保持不变。": "A participação é automática por padrão. Novos provedores disponíveis não precisam de configuração extra de rotas; os desativados explicitamente permanecem desativados.", "默认规则": "Regras padrão", "默认路由": "Roteamento padrão", "Agent 配置": "Configuração de agentes", "Claude Code 按 Opus / Sonnet / Haiku / 子 Agent 分档请求模型;这里把每档指向网关目录里的模型,留空表示不改写该档。": "O Claude Code solicita modelos por faixa (Opus / Sonnet / Haiku / subagente). Aponte cada faixa para um modelo do catálogo do gateway; deixe em branco para não alterar essa faixa.", "Claude Code 支持多模型菜单和逐模型思考等级;上下文及输入能力由客户端识别,不把自动压缩阈值冒充上下文窗口。": "O Claude Code oferece um menu com vários modelos e esforço de raciocínio por modelo. O cliente reconhece o contexto e os recursos de entrada; o limite de compactação automática não é tratado como janela de contexto.", "Claude Code 的 Opus / Sonnet / Haiku / 子 Agent 四档默认都指向上面选的模型;要让某一档用别的模型,在这里单独改。": "As quatro faixas do Claude Code (Opus / Sonnet / Haiku / subagente) apontam por padrão para o modelo escolhido acima. Para dar outro modelo a uma faixa, altere aqui.", "Codex 的模型目录支持逐模型上下文、图片和思考档位,不提供可写的逐模型输出上限。": "O catálogo do Codex oferece contexto, entrada de imagens e níveis de raciocínio por modelo, mas não tem um limite de saída configurável por modelo.", "Crush 需要明确填写输出上限、图片与思考能力": "O Crush exige limites de saída e suporte a imagens e raciocínio explícitos", "DSH 配置目标": "Destino da configuração DSH", "Kimi Code 只能追加能力声明,不能关闭内置识别的能力。输出上限仅新版 Anthropic 协议生效;旧版不写入思考档位。": "O Kimi Code permite adicionar declarações de recursos, mas não desativar recursos reconhecidos internamente. O limite de saída só se aplica ao protocolo Anthropic nas versões novas; níveis de raciocínio não são gravados nas versões antigas.", "MCP 服务名称": "Nome do servidor MCP", "Skill 目录名": "Nome da pasta do Skill", "Token 上限必须是 1 到 1 亿之间的整数": "Os limites de tokens devem ser inteiros entre 1 e 100 milhões", "Zed 的 API Key 仍需在客户端提供商设置中填写;本页不修改系统凭证。": "Informe a API Key nas configurações do provedor no Zed. Esta página não altera as credenciais do sistema.", "{id}(不在网关目录)": "{id} (fora do catálogo do gateway)", "· 走网关": "· via gateway", "一键把本机 AI 客户端接到本地网关:改写它自己的配置文件,保留其它设置": "Conecta os clientes de IA locais ao gateway local: reescreve o arquivo de configuração de cada um e mantém as demais configurações intactas", "一键接入": "Conexão rápida", "一键设置": "Preencher todas", "上下文": "Contexto", "上次应用未完整结束,请先查看恢复预览。": "A última aplicação não foi concluída. Confira primeiro a prévia da restauração.", "上游模型 id,例如 raccoon-coder-pro": "ID do modelo upstream, por exemplo raccoon-coder-pro", "下面是这个客户端文件里现有的配置(只读)。点「从客户端导入」把它收进我的配置,之后就能编辑和切换。": "Estes são os perfis já existentes no arquivo deste cliente (somente leitura). Clique em \"Importar do cliente\" para copiá-los para os meus perfis — depois poderão ser editados e alternados.", "不写入": "Não definir", "不要添加 /v1/messages;客户端会自行追加请求路径。": "Não acrescente /v1/messages; o cliente adiciona o caminho da requisição.", "与客户端一致": "Corresponde ao cliente", "个 · 已安装": " · instalados", "中转": "Relay", "仅修改所选 MCP 条目,保留其它配置和注释;保存不会启动服务。": "Altera apenas a entrada MCP selecionada; preserva as demais configurações e comentários. Salvar não inicia o servidor.", "仅可读取": "Somente leitura", "从客户端导入": "Importar do cliente", "从网关目录选择": "Selecionar no catálogo do gateway", "从网关目录选择模型": "Selecionar modelo no catálogo do gateway", "会用最近一次备份覆盖它的配置文件。这一步不会改动你在本页存的配置列表。": "Substitui o arquivo de configuração pelo backup mais recente. A lista de perfis desta página não é alterada.", "低": "Baixo", "使用中": "Em uso", "使用此配置": "Usar esta configuração", "使用此配置时设为默认,其他模型仍可在客户端选择。": "Este será o modelo padrão ao usar esta configuração. Os demais modelos continuam disponíveis no cliente.", "使用真实模型 ID,不要填写模型展示名。": "Use o ID real do modelo, não o nome de exibição.", "使用网关 Key": "Usar chave do gateway", "保存会直接修改客户端配置;确认前展示差异,写入前自动备份。": "Salvar altera diretamente a configuração do cliente. As diferenças são exibidas antes da confirmação e um backup é feito antes da gravação.", "保存修改": "Salvar alterações", "保存只记录方案,不修改客户端。应用时会另外展示文件差异并请求确认。": "Salvar apenas armazena o perfil. Ao aplicar, as diferenças dos arquivos são exibidas e a confirmação é solicitada separadamente.", "保存后可在配置列表中切换,不影响当前使用的配置。": "Após salvar, selecione a configuração na lista para usá-la. A configuração atual não é alterada.", "保存后同步更新客户端;写入前可查看改动,并自动备份。": "Salvar também atualiza o cliente. Confira as alterações antes de gravar; o backup é automático.", "保存方案": "Salvar perfil", "保存方案不会切换客户端;应用后改变实际默认模型。": "Salvar não troca o cliente; aplicar altera o modelo padrão real.", "保存方案不会切换客户端;选择“应用并设为默认”才改变实际默认模型。": "Salvar não troca o cliente. Escolha “Aplicar e definir como padrão” para alterar o modelo padrão real.", "保存时自动写入完整的 /chat/completions 路径。": "O caminho completo /chat/completions é gravado automaticamente.", "保存路径": "Salvar caminho", "保留导入的认证": "Manter autenticação importada", "保留现有认证": "Manter autenticação existente", "修改后点击「使用此配置」才会更新客户端。": "Após editar, selecione Usar esta configuração para atualizar o cliente.", "停用后将从客户端可选项中关闭此配置,其他配置不受影响。": "Esta configuração será desativada nas opções do cliente. As demais configurações não serão afetadas.", "停用配置": "Desativar configuração", "全选搜索结果": "Selecionar todos os resultados", "全部配置(全局覆盖)": "Todos os perfis (substituição global)", "共": "Total", "关闭后丢弃本次修改,不会保存配置或改动客户端。": "Fechar descarta estas alterações sem salvar a configuração nem modificar o cliente.", "关闭后丢弃本次草稿,不会保存空方案,也不会修改客户端。": "Fechar descarta este rascunho. Nenhum perfil vazio é salvo e o cliente não é alterado.", "内容已经一致,无需写入": "O conteúdo já é igual; não é necessário gravar", "写入中…": "Gravando…", "写入后需要重开会话才生效": "Reabra a sessão após gravar para que tenha efeito", "写入失败:{reason}": "Falha ao gravar: {reason}", "写入客户端": "Gravar no cliente", "写入文件": "Arquivo de configuração", "写入预览": "Prévia da gravação", "删除 MCP": "Excluir MCP", "删除 Skill": "Excluir Skill", "删除只移除 SKILL.md,辅助文件保留在原目录;不会执行其中的脚本。": "A exclusão remove apenas SKILL.md. Os arquivos auxiliares permanecem na pasta original; nenhum script é executado.", "删除客户端配置": "Excluir configuração do cliente", "删除已保存方案?": "Excluir perfil salvo?", "删除新建文件": "Remover arquivo recém-criado", "删除方案": "Excluir perfil", "删除配置": "Excluir configuração", "删除配置?": "Excluir configuração?", "动态表达式、独立作用域或全局覆盖的 MCP 为只读,请在 DSH 中编辑。": "Entradas MCP com expressões dinâmicas, escopos isolados ou substituições globais são somente leitura. Edite-as no DSH.", "单配置": "Perfil único", "另一项配置操作尚未完成": "Outra operação de configuração ainda está em andamento", "只保存变量引用,不修改系统环境;请在启动客户端的环境里设置变量值。": "Apenas a referência da variável é salva. Defina seu valor no ambiente que inicia o cliente; o ambiente do sistema não é alterado.", "只删除 Agent2API 中的方案,不修改客户端当前配置。": "Apenas o perfil no Agent2API é excluído. A configuração atual do cliente permanece intacta.", "只改 enabled 与默认项,其余条目原样保留": "Apenas as flags enabled e padrão mudam; os demais itens ficam intactos", "只改属于我们的那几个键,其它设置原样保留": "Apenas as nossas chaves mudam; as demais configurações ficam intactas", "可先新增配置,安装后再使用": "Você pode adicionar configurações agora e usá-las após a instalação", "可同时启用多条;切换只改 enabled 与默认项": "Vários itens podem ficar ativos ao mesmo tempo; a troca altera apenas as flags enabled e padrão", "可搜索并多选模型;上下文、输出上限和能力分别从网关目录自动填入。": "Pesquise e selecione vários modelos. A janela de contexto, o limite de saída e os recursos de cada modelo são preenchidos pelo catálogo do gateway.", "可选模型": "Modelos disponíveis", "同一时刻只有一套生效;写入 = 把这一套整段写进客户端文件": "Só um perfil fica ativo por vez; gravar copia esse perfil para o arquivo do cliente", "启用 {name}": "Ativar {name}", "启用此配置": "Ativar esta configuração", "启用配置": "Ativar configuração", "图形化管理客户端原生配置;保存方案与应用配置分开。": "Gerencie visualmente a configuração nativa dos clientes; salvar perfis e aplicar configurações são ações separadas.", "图片输入": "Entrada de imagens", "在客户端管理认证": "Gerenciar autenticação no cliente", "填写服务根地址,不要附加 /v1beta 或 generateContent 路径。": "Informe a URL raiz do serviço. Não acrescente /v1beta nem um caminho generateContent.", "处理中…": "Processando…", "备注": "Observação", "多套配置": "Vários perfis", "多配置 · 已启用 {n}": "Vários perfis · {n} ativos", "子 Agent": "Subagente", "安装或初始化后可重新检测;自定义安装位置可指定配置路径。": "Verifique novamente após instalar ou inicializar. Para locais personalizados, informe o caminho da configuração.", "完整配置文件路径": "Caminho completo do arquivo de configuração", "官方直连": "Oficial direto", "客户端列表加载失败:{reason}": "Falha ao carregar a lista de clientes: {reason}", "客户端列表响应无效": "Resposta inválida da lista de clientes", "客户端协议": "Protocolo do cliente", "客户端原生 MCP 配置(JSON)": "Configuração MCP nativa do cliente (JSON)", "客户端原生配置": "Configuração nativa do cliente", "客户端官方配置说明": "Guia oficial de configuração do cliente", "客户端实际配置": "Configuração real do cliente", "客户端必须实际使用同一个配置文件;本页不改变客户端启动参数。": "O cliente deve usar o mesmo arquivo de configuração. Esta página não altera os argumentos de inicialização.", "客户端文件已有外部修改,自动恢复会拒绝覆盖。": "O arquivo do cliente foi alterado externamente. A restauração automática recusará sobrescrevê-lo.", "客户端条目启用状态": "Estado de ativação da entrada no cliente", "客户端清单": "Clientes", "客户端管理分类": "Categoria de gerenciamento do cliente", "客户端自己的设置优先;这里写的是写入时带进去的初值": "As configurações do próprio cliente prevalecem; aqui é apenas o valor inicial gravado", "客户端资源已保存并校验": "Recursos do cliente salvos e verificados", "客户端选项": "Opções do cliente", "客户端配置写入后未通过校验": "A configuração do cliente não passou na verificação após a gravação", "客户端配置已经一致,无需写入": "A configuração do cliente já corresponde; nenhuma gravação é necessária", "客户端默认地址": "Endpoint padrão do cliente", "密钥在 Agent2API 中加密保存;使用时按客户端要求写入。": "As chaves são armazenadas criptografadas no Agent2API e gravadas no formato exigido pelo cliente quando utilizadas.", "密钥已隐藏;绿色为新增,红色为删除。所有实际写入文件都列在这里。": "As chaves estão ocultas. Verde indica adições e vermelho indica remoções. Todos os arquivos a serem gravados estão listados aqui.", "导入模型及客户端未知字段会保留;本页删除方案不会删除客户端条目。": "Os modelos importados e os campos desconhecidos do cliente são preservados. Excluir um perfil aqui não exclui entradas do cliente.", "将删除此配置及客户端中的对应条目,其他配置不受影响。": "Esta configuração e a entrada correspondente no cliente serão excluídas. As demais configurações não serão afetadas.", "尚未初始化": "Não inicializado", "尚未支持这个客户端的资源管理": "O gerenciamento de recursos deste cliente ainda não é suportado", "展开可调整能力;— 表示客户端未声明": "Expanda para ajustar as capacidades; — indica que o cliente não declarou", "已保存": "Salvo", "已保存方案": "Perfis salvos", "已保存,未应用": "Salvo, não aplicado", "已写入 {name}": "Gravado em {name}", "已写入 {name};这个客户端只在启动时读配置,重开一个会话才生效": "Gravado em {name}; este cliente só lê a configuração na inicialização, então reabra uma sessão para aplicar", "已删除保存方案,客户端配置未改动": "Perfil salvo excluído; a configuração do cliente não foi alterada", "已安装": "Instalado", "已导入 {n} 套方案": "{n} perfis importados", "已按备份还原 {name}": "{name} restaurado a partir do backup", "已收进我的配置:{n} 条": "Importados para os meus perfis: {n}", "已检测到": "Detectado", "已选择": "Selecionado", "已选模型": "Modelos selecionados", "已配置": "Configurado", "已预填网关地址、协议、Key 与模型;确认后直接写入客户端,不需要先保存方案。": "A URL do gateway, o protocolo, a Key e o modelo já estão preenchidos. Confirme para gravar diretamente no cliente sem salvar um perfil antes.", "应用": "Aplicar", "应用中…": "Aplicando…", "应用到客户端": "Aplicar ao cliente", "应用并设为默认": "Aplicar e definir como padrão", "应用时使用当前启用的真实 Key;预览会隐藏密钥。": "A aplicação usa uma chave real atualmente ativa; as prévias ocultam o segredo.", "当前环境不支持保存": "Não é possível salvar neste ambiente", "当前环境不支持保存(桥接方法缺失)": "Não é possível salvar neste ambiente (método de bridge ausente)", "当前环境不支持写入(桥接方法缺失)": "Não é possível gravar neste ambiente (método de bridge ausente)", "当前环境不支持客户端接管(桥接方法缺失)": "A conexão de clientes não está disponível neste ambiente (método de bridge ausente)", "当前环境不支持客户端配置": "A configuração de clientes não está disponível neste ambiente", "当前环境不支持导入": "Não é possível importar neste ambiente", "当前环境不支持导入(桥接方法缺失)": "Não é possível importar neste ambiente (método de bridge ausente)", "当前环境不支持应用": "Não é possível aplicar neste ambiente", "当前环境不支持恢复": "Não é possível restaurar neste ambiente", "当前环境不支持还原(桥接方法缺失)": "Não é possível restaurar neste ambiente (método de bridge ausente)", "当前环境不支持预览": "A prévia não está disponível neste ambiente", "当前环境无法读取网关模型目录": "Não é possível ler o catálogo de modelos do gateway neste ambiente", "当前网关未启用 API Key 鉴权;占位值只用于客户端要求非空密钥的场景。": "A autenticação por chave de API não está ativa neste gateway. Um valor provisório é usado apenas quando o cliente exige uma chave não vazia.", "当前默认": "Padrão atual", "思考能力": "Suporte a raciocínio", "恢复作用在网关所在机器;密钥已隐藏,不会覆盖应用后的外部修改。": "A restauração atua na máquina do gateway. As chaves estão ocultas e alterações externas feitas após a aplicação não serão sobrescritas.", "恢复自动检测": "Restaurar detecção automática", "所有操作作用在网关所在机器。": "Todas as operações atuam na máquina do gateway.", "所选 Key 下没有可用的对话模型,请先启用模型或手动填写。": "Nenhum modelo de conversa está disponível para esta Key. Ative um modelo ou informe um manualmente.", "所选 Key 下没有可用的对话模型,请先启用模型或更换 Key。": "Nenhum modelo de conversa está disponível para esta chave. Ative um modelo ou escolha outra chave.", "所选 Key 无权使用当前模型,请重新选择": "Esta Key não tem permissão para usar o modelo atual. Selecione novamente.", "手动添加模型": "Adicionar modelo manualmente", "手机端可查看客户端实际配置并撤销上次应用;编辑方案请使用桌面端。": "No celular, consulte a configuração do cliente e desfaça a última aplicação. Use a interface desktop para editar perfis.", "手机端可查看模型配置、撤销上次应用,并管理提示词、Skill 与 MCP。": "No celular, consulte configurações de modelos, desfaça a última aplicação e gerencie prompts, Skills e MCP.", "指定配置路径": "Informar caminho da configuração", "按备份还原": "Restaurar do backup", "按备份还原 {name}?": "Restaurar {name} a partir do backup?", "换 Key 后会按新 Key 的授权重新核对已选模型": "Trocar a chave revalida os modelos selecionados conforme as permissões da nova chave.", "接入后使用此默认模型,其它已选模型仍可在客户端切换。": "Este modelo se torna o padrão. Os outros modelos selecionados continuam disponíveis no cliente.", "接入客户端": "Conectar cliente", "接入本网关": "Conectado a este gateway", "接入状态来自客户端配置文件。恢复前显示差异;文件被其他程序修改时拒绝覆盖。": "O estado da conexão vem do arquivo de configuração do cliente. A restauração exibe as diferenças antes e recusa sobrescrever arquivos alterados por outros programas.", "接入端点": "Endpoint", "接口基址": "URL base da API", "搜索客户端": "Pesquisar clientes", "搜索客户端 / 配置文件…": "Pesquisar clientes ou arquivos de configuração…", "搜索已选模型": "Pesquisar modelos selecionados", "搜索模型 ID / 展示名…": "Pesquisar ID ou nome de exibição do modelo…", "撤销上次应用": "Desfazer última aplicação", "操作目标:网关所在机器": "Destino: máquina do gateway", "收起更多配置": "Ocultar configurações adicionais", "收起模型选择": "Ocultar seleção de modelos", "改写网关所在机器上的客户端配置": "Gerenciar a configuração de clientes na máquina do gateway", "改动": "Alterado", "放弃修改": "Descartar alterações", "放弃未保存的修改?": "Descartar alterações não salvas?", "新增": "Adicionado", "新增 MCP": "Adicionar MCP", "新增配置": "Adicionar configuração", "新建 Skill": "Novo Skill", "新建文件": "Novo arquivo", "新建方案或导入当前配置;保存后再决定是否应用。": "Crie um perfil ou importe a configuração atual. Decida se deseja aplicá-lo após salvar.", "新建配置": "Novo perfil", "新建配置方案": "Novo perfil de configuração", "新版网页版和桌面版分别保存模型配置;旧版模型设置共享,MCP 始终只写入所选运行方式。": "As versões web e desktop mais recentes salvam os modelos separadamente. As configurações legadas são compartilhadas; o MCP sempre é gravado apenas no perfil selecionado.", "新配置": "Novo perfil", "方案中的密钥加密保存;客户端原生配置可能要求明文。": "As chaves dos perfis são armazenadas com criptografia. A configuração nativa do cliente pode exigir texto simples.", "方案名称": "Nome do perfil", "方案已保存,尚未应用到客户端": "Perfil salvo, ainda não aplicado ao cliente", "无改动": "Sem alterações", "无配置": "Sem perfil", "无需认证": "Sem autenticação", "旧版共享设置": "Configurações compartilhadas legadas", "暂无预览": "Ainda sem prévia", "更多配置": "Configurações adicionais", "最多选择 {n} 个模型": "Selecione até {n} modelos", "最近检测:{time}": "Última verificação: {time}", "有改动": "Alterado", "未声明 / 保留": "Não declarado / manter", "未安装": "Não instalado", "未找到客户端程序或配置文件": "Nenhum programa ou arquivo de configuração do cliente encontrado", "未接入本网关": "Não conectado a este gateway", "未接管": "Não conectado", "未检测到": "Não detectado", "未检测到安装": "Nenhuma instalação detectada", "未读取到可识别的客户端配置": "Nenhuma configuração reconhecida do cliente encontrada", "未走网关": "Sem passar pelo gateway", "本机": "Este aparelho", "本机服务": "Serviço local", "本机没有找到 {name}": "{name} não foi encontrado nesta máquina", "本机网关": "Gateway local", "本网关": "Este gateway", "来自客户端文件,只读": "Do arquivo do cliente, somente leitura", "查看文件改动": "Ver alterações nos arquivos", "桌面版": "Versão desktop", "模型 ID": "ID do modelo", "模型 ID 不能为空或重复": "Os IDs dos modelos não podem estar vazios nem duplicados", "模型 id": "ID do modelo", "模型 {n}": "Modelo {n}", "模型展示名": "Nome de exibição do modelo", "模型思考等级": "Nível de raciocínio do modelo", "模型或客户端不支持所选思考等级": "O modelo ou cliente não oferece suporte ao nível de raciocínio selecionado", "模型未声明思考档位,保留客户端默认,不显示猜测选项。": "O modelo não declara níveis de raciocínio. Os padrões do cliente são preservados e opções presumidas não são exibidas.", "模型目录响应无效": "Resposta inválida do catálogo de modelos", "模型目录读取失败,可手动填写真实模型 ID。": "Falha ao ler o catálogo de modelos. Você pode informar manualmente o ID real do modelo.", "模型配置": "Configurações de modelos", "模型默认": "Padrão do modelo", "正在检测客户端…": "Detectando clientes…", "正在生成准确预览…": "Gerando prévia exata…", "正在生成预览…": "Gerando prévia…", "正在读取本机客户端…": "Lendo clientes locais…", "正在读取网关模型并填入配置…": "Carregando modelos do gateway e preenchendo a configuração…", "此处来自磁盘文件,不代表正在运行的旧会话已经重载。": "Estes dados são lidos do disco. Isso não significa que uma sessão existente recarregou a configuração.", "此配置未在客户端中使用,删除不会改变当前使用的配置。": "Esta configuração não está em uso no cliente. Excluí-la não altera a configuração atual.", "每个客户端可以有": "Cada cliente pode ter", "每个模型独立保存能力;展开可调整,未声明的数据不会猜测填写。": "Os recursos são salvos por modelo. Expanda para ajustar; valores não declarados não são presumidos.", "没有匹配的客户端": "Nenhum cliente correspondente", "没有可导入的新条目(可能还没配过,或已经在我的配置里)": "Nenhuma entrada nova para importar (ainda não configurado ou já está nos meus perfis)", "没有新的条目可收(都已在我的配置里)": "Nenhuma entrada nova para importar (todas já estão nos meus perfis)", "没有新的配置可以导入": "Nenhuma configuração nova para importar", "没有检测到可接管的客户端": "Nenhum cliente gerenciável detectado", "没有选中配置": "Nenhuma configuração selecionada", "没有选中配置方案": "Nenhum perfil de configuração selecionado", "添加到客户端": "Adicionar ao cliente", "点击右上角「新增配置」,添加网关或其他服务": "Use Adicionar configuração no canto superior direito para adicionar um gateway ou outro serviço", "点击模型展开详细配置;搜索只筛选显示,不会移除模型。": "Clique em um modelo para expandir suas configurações. A pesquisa apenas filtra a lista exibida; não remove modelos.", "版本未识别": "Versão não identificada", "状态来自配置文件,已打开的会话可能需要重新加载": "O estado vem dos arquivos de configuração; sessões existentes podem precisar ser recarregadas", "环境变量名": "Nome da variável de ambiente", "生成中…": "Gerando…", "留空保留 / 未声明": "Em branco: manter / não declarado", "留空保留已保存密钥": "Deixe em branco para manter a chave salva", "留空的分档会以 Claude Code 内置模型名请求网关;网关没有同名模型时该档会失败,建议点「一键设置」。": "Uma faixa em branco faz o Claude Code pedir ao gateway com o nome de modelo interno dele; essa faixa falha quando o gateway não tem um modelo com esse nome. Prefira \"Preencher todas\".", "留空表示不写入": "Em branco: não gravar", "确认": "Confirmar", "确认使用": "Confirmar uso", "确认停用": "Confirmar desativação", "确认写入": "Confirmar gravação", "确认写入后会同步修改客户端开关;取消不会生效。": "Confirmar a gravação também atualiza o estado de ativação da entrada no cliente. Cancelar mantém o estado atual.", "确认写入后更新客户端默认模型;取消不会生效。": "O modelo padrão do cliente é atualizado após confirmar a gravação. Cancelar mantém o modelo atual.", "确认写入客户端资源": "Confirmar gravação de recursos do cliente", "确认删除": "Confirmar exclusão", "确认删除客户端资源": "Confirmar exclusão de recursos do cliente", "确认后将切换到此配置,原配置会保留在列表中。": "Confirme para usar esta configuração. A anterior será mantida na lista.", "确认后将更新 {name} 的配置文件,原配置会自动备份。": "Confirme para atualizar os arquivos de configuração de {name}. Os arquivos originais terão backup automático.", "确认后将此配置加入客户端,已有配置会保留。": "Confirme para adicionar esta configuração ao cliente. As existentes serão mantidas.", "确认应用": "Confirmar aplicação", "确认恢复": "Confirmar restauração", "确认接入": "Confirmar conexão", "移除模型会写入客户端配置;其它条目和未知字段保留,确认前可查看差异。": "Remover um modelo altera a configuração do cliente. As outras entradas e os campos desconhecidos são preservados; confira as diferenças antes de confirmar.", "移除模型:{name}": "Remover modelo: {name}", "第一把启用的 Key": "Primeira chave ativa", "第三方中转": "Relay de terceiros", "编辑 MCP": "Editar MCP", "编辑 Skill": "Editar Skill", "编辑客户端配置": "Editar configuração do cliente", "编辑配置": "Editar configuração", "编辑配置方案": "Editar perfil de configuração", "编辑:{name}": "Editar: {name}", "网关目录共 {n} 个": "{n} no catálogo do gateway", "网页版": "Versão web", "自定义路径": "Caminho personalizado", "行号由后端逐行比对给出": "Os números de linha vêm da comparação linha a linha do backend", "装好后回到这一页点「重新检测」,它会出现在上面的列表里。": "Depois de instalar, volte a esta página e clique em \"Verificar novamente\" — ele aparecerá na lista acima.", "视频输入": "Entrada de vídeo", "解除接入本网关": "Desconectar deste gateway", "认证方式": "Método de autenticação", "设为默认": "Definir como padrão", "请先在「网关 Key」页创建并启用一把 Key": "Primeiro crie e ative uma Key na página de Keys do gateway.", "请在 Zed 提供商设置中保存 API Key;本页不修改系统凭证存储。": "Salve a chave de API nas configurações de provedores do Zed. Esta página não altera o armazenamento de credenciais do sistema.", "请填写 API Key": "Informe uma chave de API", "请填写方案名称": "Informe um nome para o perfil", "请填写有效的 http 或 https 地址": "Informe uma URL HTTP ou HTTPS válida", "请填写有效的环境变量名": "Informe um nome de variável de ambiente válido", "请填写配置名称": "Informe um nome para a configuração", "请至少添加一个模型": "Adicione pelo menos um modelo", "请补全配置后使用": "Complete a configuração antes de usar", "请输入密钥": "Informe uma chave", "请选择": "Selecione uma opção", "请选择模型": "Selecione um modelo", "读取失败": "Falha na leitura", "读取客户端配置失败:{reason}": "Falha ao ler a configuração do cliente: {reason}", "走网关": "Via gateway", "路径属于网关所在机器,不是浏览器所在设备。只改变检测目标,不修改客户端文件。": "O caminho pertence à máquina do gateway, não ao dispositivo do navegador. Apenas o alvo da detecção muda; os arquivos do cliente não são alterados.", "输出上限": "Saída máxima", "返回编辑": "Voltar à edição", "还原中…": "Restaurando…", "还原失败:{reason}": "Falha ao restaurar: {reason}", "还没有配置": "Nenhum perfil ainda", "还没有配置。点「新建配置」建一套指向本机网关的,再写入客户端。": "Nenhum perfil ainda. Clique em \"Novo perfil\" para criar um apontando para o gateway local e depois grave no cliente.", "还没有预览。选一套配置后这里会显示写入客户端之后的样子。": "Ainda sem prévia. Escolha um perfil e aqui será mostrado como o arquivo do cliente ficará após a gravação.", "这个客户端不从网关目录选模型,用右侧的「添加模型」逐个填写。": "Este cliente não seleciona modelos do catálogo do gateway; adicione um por um à direita.", "这个客户端不支持所选协议": "Este cliente não suporta o protocolo selecionado", "这个客户端不能接入本网关": "Este cliente não pode se conectar a este gateway", "这个客户端会自己重读配置,写入后开新会话即生效。": "Este cliente recarrega a configuração sozinho; abra uma nova sessão após gravar.", "这个客户端只在启动时读配置:写入后重开一个会话才生效。": "Este cliente só lê a configuração na inicialização: reabra uma sessão após gravar.", "这个客户端的配置里没有读出地址(可能还没配过,或形状不认识)": "Não foi possível ler um endereço da configuração deste cliente (talvez ainda não esteja configurado ou o formato seja desconhecido)", "这个客户端自己支持多套配置并存": "Este cliente suporta vários perfis lado a lado", "这个客户端自己管理多套配置,可同时启用多条;切换只改 enabled 与默认项,不动它的模型清单。": "Este cliente gerencia vários perfis e pode ativar mais de um; a troca altera apenas as flags enabled e padrão, nunca a lista de modelos dele.", "这个客户端还没有 MCP": "Este cliente ainda não tem servidores MCP", "这个客户端还没有 Skill": "Este cliente ainda não tem Skills", "这个客户端需要填写模型上下文窗口": "Este cliente exige a janela de contexto do modelo", "这套配置是干什么用的(只显示在本页)": "Para que serve este perfil (exibido apenas nesta página)", "这是待应用状态;保存不会立即改变客户端开关。": "Este é o estado pendente. Salvar não ativa ou desativa imediatamente a entrada do cliente.", "这里只调整此模型,不影响其它模型。": "As alterações aqui afetam apenas este modelo.", "这里只选择客户端实际支持的协议,不改变上游提供商协议。": "Aqui só podem ser selecionados protocolos realmente suportados pelo cliente. O protocolo do provedor upstream não é alterado.", "连接方式": "Tipo de conexão", "连接配置": "Configurações de conexão", "选一个客户端开始": "Escolha um cliente para começar", "选择 MCP": "Selecionar MCP", "选择 Skill": "Selecionar Skill", "选择模型": "Selecionar modelos", "选择网关 Key": "Selecionar Key do gateway", "选择要接入的模型;确认前展示文件改动,写入前自动备份。": "Escolha os modelos para conectar. As alterações são exibidas antes da confirmação e um backup é feito antes de gravar.", "选择配置目标": "Selecionar destino da configuração", "通常以 /v1 结尾,不要附加具体请求路径。": "Geralmente termina em /v1. Não acrescente um caminho de requisição específico.", "部分已选模型已不可用或所选 Key 无权使用,请移除或更换 Key。": "Alguns modelos selecionados estão indisponíveis ou não são permitidos por esta chave. Remova-os ou escolha outra chave.", "配置": "Perfil", "配置位置与说明": "Local e detalhes da configuração", "配置列表": "Configurações", "配置列表格式不匹配,请重启网关后刷新页面": "O formato da lista de configurações é incompatível. Reinicie o gateway e atualize esta página.", "配置可读写": "Configuração com leitura e gravação", "配置名称": "Nome da configuração", "配置差异": "Diferenças da configuração", "配置已保存,可在列表中点击使用": "Configuração salva. Selecione-a na lista para usar.", "配置已删除": "Configuração excluída", "配置已删除,客户端文件已同步更新": "Configuração excluída e arquivos do cliente atualizados", "配置已应用并读回校验;请重开客户端或会话": "Configuração aplicada e verificada por releitura. Reinicie o cliente ou a sessão.", "配置已恢复并校验": "Configuração restaurada e verificada", "配置操作": "Ações da configuração", "配置文件已写入并校验;尚未验证 DSH 是否加载,请在所选客户端新建会话确认。": "Os arquivos de configuração foram gravados e verificados. O carregamento pelo DSH não foi verificado; abra uma nova conversa no cliente selecionado para confirmar.", "配置来源": "Origem do perfil", "重新填入目录能力": "Preencher recursos pelo catálogo", "重新检测": "Verificar novamente", "重新生成预览": "Gerar prévia novamente", "需要重新编辑:": "Precisa ser editado novamente:", "需重开会话生效": "Reabra a sessão para aplicar", "预览并保存": "Visualizar e salvar", "预览草稿改动": "Prévia das alterações do rascunho", "高": "Alto", "高级选项": "Opções avançadas", "默认模型": "Modelo padrão", "默认模型必须来自模型列表": "O modelo padrão deve estar na lista de modelos", "默认模型思考等级": "Nível de raciocínio do modelo padrão", "(本机网关 / 官方直连 / 第三方中转 / 本机服务),随时切换。单配置客户端切换 = 整段覆写并备份原文件;多配置客户端(如 ZCode)只改 enabled 与默认项,它自己的条目一律不动。": "(gateway local / oficial direto / relay de terceiros / serviço local) e alterne entre eles quando quiser. Em clientes de perfil único, a troca reescreve o perfil inteiro e faz backup do arquivo original; em clientes multiperfil como o ZCode, apenas as flags enabled e padrão mudam, sem tocar nos itens próprios deles.", "API Key 无效或无权限": "A API Key é inválida ou não tem permissão", "API 接口文档": "Documentação da API", "DSH 使用 Agent 页当前选择的配置目标。写入后请在 DSH 中确认工具是否出现,必要时重启对应客户端。": "O DSH usa o destino selecionado na página Agent. Após gravar, verifique se as ferramentas aparecem no DSH e reinicie o cliente correspondente, se necessário.", "Key 明文只会写入所选客户端的本机配置文件。": "A Key em texto puro só é gravada nos arquivos de configuração locais dos clientes selecionados.", "MCP & Skills": "MCP & Skills", "MCP 接入信息": "Informações de conexão MCP", "Node.js 无需额外依赖,推荐使用;Python 需要本机有 python。": "Node.js não exige dependências extras e é recomendado; Python exige python nesta máquina.", "{name} 接入客户端": "Conectar {name} aos clientes", "上游提供商": "Provedor upstream", "上游提供商配置": "Configuração do provedor upstream", "上游提供商配置由各接入协议共享,改动后所有协议同时生效。": "As configurações do provedor upstream são compartilhadas por todos os protocolos de acesso; alterações valem para todos ao mesmo tempo.", "上游没有返回结果": "O upstream não retornou resultados", "上游请求超时": "A requisição ao upstream expirou", "下载图片 {index}": "Baixar imagem {index}", "不指定": "Não especificado", "中文": "Chinês", "仅搜索": "Somente busca", "仅支持单选,默认为 Tavily。": "Apenas seleção única; o padrão é Tavily.", "仅显示已启用且至少有一个可用模型的提供商。": "Somente provedores habilitados e com pelo menos um modelo disponível são exibidos.", "仅显示该提供商下已启用的模型。": "Somente modelos habilitados deste provedor são exibidos.", "任务编号或原提交编号,至少提供一项": "Informe o ID da tarefa ou o ID original do envio", "作为远程 MCP 服务,在支持 MCP 的客户端配置里填写地址即可接入。": "Expõe um serviço MCP remoto; basta informar a URL na configuração de um cliente compatível com MCP.", "使用已有账号生成或编辑图片,支持任务查询与本机文件保存。": "Gere ou edite imagens com contas existentes, consulte tarefas e salve arquivos localmente.", "保存能力配置": "Salvar configuração de capacidades", "保留至 {time}": "Disponível até {time}", "共 {count} 项能力": "{count} capacidades", "内部请求本站网关时使用的网关 Key;额度、限流与请求日志记在该 Key 上。": "A Key do gateway usada nas chamadas internas a este gateway; cota, limites de taxa e logs de requisição ficam registrados nessa Key.", "内部调用 API Key": "API Key de chamada interna", "写入失败": "Falha ao gravar", "写入配置": "Gravar configuração", "单次图片上限": "Imagens por solicitação", "卸载失败": "Falha ao remover", "参考图允许读取的目录": "Pastas permitidas para referências", "参考图链接或已生成图片 ID;本地桥接还可传文件路径": "URLs de referência ou IDs de imagens geradas; a ponte local também aceita caminhos de arquivos", "取消全选": "Desmarcar tudo", "只保存新文件,不覆盖已有不同内容。目录权限写入客户端配置,更新配置时需要重新确认。": "Somente arquivos novos são salvos; conteúdos existentes diferentes nunca são sobrescritos. As permissões das pastas ficam na configuração do cliente e precisam ser confirmadas ao atualizá-la.", "可选。留空时不传,由模型映射的「思考覆盖」决定。": "Opcional. Deixe vazio para não enviar e deixar a \"substituição de raciocínio\" do mapeamento decidir.", "可选,每行一个已有绝对目录。输出目录默认允许读取;其他位置的文件不会读取或上传。": "Opcional: uma pasta existente com caminho absoluto por linha. A pasta de saída permite leitura por padrão; arquivos de outros locais não são lidos nem enviados.", "启用 / 停用此服务": "Habilitar / desabilitar este serviço", "图片分析": "Análise de imagem", "图片占用 {used} MiB,生成中预留 {reserved} MiB。": "Imagens usam {used} MiB; tarefas em andamento reservam {reserved} MiB.", "图片生成配置": "Configurações de geração de imagens", "图片生成配置已保存": "Configurações de geração de imagens salvas", "图片输出目录": "Pasta de saída das imagens", "在支持远程 MCP 的客户端中填写该地址,并使用网关 Key 作为 Bearer 令牌。": "Informe esta URL em um cliente compatível com MCP remoto e use uma Key do gateway como token Bearer.", "复制失败,请手动选择后复制": "Falha ao copiar; selecione e copie manualmente", "复制文档": "Copiar documento", "复用「账号」页的登录态,不需要额外填写搜索密钥。账号停用或删除后不会自动换号。": "Usa o login existente da página Contas, sem exigir outra chave de busca. Contas desabilitadas ou removidas não são substituídas automaticamente.", "复用已有账号生图,不改变 Agent 的对话模型。实际调用遵守接入 Key 的模型和提供商权限。": "Gere imagens com contas existentes sem alterar o modelo de conversa do Agent. As chamadas respeitam as permissões de modelos e provedores da Key de conexão.", "存储上限(MiB)": "Limite de armazenamento (MiB)", "安装目标": "Destinos de instalação", "完整的图片要求": "Requisitos completos da imagem", "客户端环境": "Ambiente dos clientes", "客户端调用超时设为 120 秒;后台生成超时由服务配置控制,未完成时通过任务编号查询。": "As chamadas do cliente expiram após 120 segundos. O prazo de geração segue a configuração do serviço; consulte tarefas pendentes pelo ID.", "客户端配置示例": "Exemplo de configuração do cliente", "密钥已清除": "Key removida", "密钥或账号登录态无效": "A chave de API ou o login da conta é inválido", "密钥提示": "Dica da Key", "将按服务的工具执行超时({seconds} 秒)同步写入客户端配置。": "O tempo limite de execução de ferramentas do serviço ({seconds}s) será gravado na configuração do cliente.", "将搜索、视觉等能力通过 MCP 或 Skills 接入客户端。": "Conecte os clientes a recursos de busca, visão e outros por meio de MCP ou Skills.", "尚未配置图片生成,请先选择可用的生图模型并保存。": "A geração de imagens não está configurada. Selecione um modelo disponível e salve.", "尚未配置视觉模型,配置前调用方会收到“未配置”错误。": "Nenhum modelo de visão configurado; os chamadores recebem um erro de \"não configurado\" até que seja configurado.", "工具执行超时": "Tempo limite de execução de ferramentas", "工具执行超时已保存": "Tempo limite de execução salvo", "工具服务": "Serviços de ferramentas", "已写入 {count} 个客户端配置": "Configuração gravada em {count} clientes", "已处理 {count} 个目标": "{count} destinos processados", "已复制": "Copiado", "已失效": "Inválida", "已安装到 {count} 个客户端": "Instalado em {count} clientes", "已完成": "Concluído", "已完成 {count} 个目标": "{count} destinos concluídos", "已接入 {count} 个目标": "Conectado a {count} destinos", "已有账号": "Conta existente", "已有账号搜索只支持搜索,不支持网页抓取;请求会使用绑定账号的额度与出网设置。": "Fontes por conta oferecem apenas busca, não captura de páginas. As requisições usam a cota e as configurações de conexão de saída da conta vinculada.", "已检查保存的配置,未发起生图;账号实际额度与上游可用性以调用结果为准。": "Configuração salva verificada sem gerar imagens. A cota real e a disponibilidade do provedor são confirmadas durante a chamada.", "已绑定的搜索账号不存在,请重新选择": "A conta de busca vinculada não existe mais; selecione outra conta", "已绑定的搜索账号已停用": "A conta de busca vinculada está desabilitada", "已绑定账号不可用,请重新选择": "A conta vinculada está indisponível; selecione outra conta", "已过期或清理": "Expirado ou removido", "已选择 {count} / {total} 个": "{count} / {total} selecionados", "已配置的 API Key 已失效(被删除或禁用),请重新选择并保存。": "A API Key configurada não é mais válida (removida ou desabilitada); selecione outra e salve.", "当前提供商插件不支持账号搜索,请更新插件": "O plugin atual do provedor não oferece busca por conta; atualize o plugin", "当前模型:{provider} / {model}": "Modelo atual: {provider} / {model}", "当前没有可用的安装目标": "Nenhum destino de instalação disponível", "当前没有已安装/已配置的目标": "Nada instalado ou configurado ainda", "当前网关 Key 无权使用所选账号搜索来源": "Esta Key do gateway não tem permissão para usar as fontes de busca por conta selecionadas", "打包为 Agent Skill,由 Agent2API 面板安装到本机客户端目录。": "Empacotado como Agent Skill e instalado nos diretórios locais dos clientes pelo painel do Agent2API.", "批量抓取 1~10 个 URL,使用后台选中的单个抓取提供商。": "Captura 1-10 URLs usando o único provedor de captura selecionado no servidor.", "批量搜索 1~10 条查询,并发调用后台选中的提供商后合并重复来源。": "Pesquisa 1-10 consultas em paralelo com os provedores selecionados no servidor e mescla fontes duplicadas.", "批量网页抓取": "Captura de páginas em lote", "批量网页抓取提供商": "Provedor de captura em lote", "批量网页搜索": "Busca web em lote", "批量网页搜索不可用:所选提供商均未启用或未配置密钥。": "Busca web em lote indisponível: nenhum dos provedores selecionados está habilitado e configurado.", "批量网页搜索不可用:请启用来源并配置密钥或绑定可用账号。": "Busca web em lote indisponível: habilite uma fonte e configure sua chave de API ou vincule uma conta disponível.", "批量网页搜索可用:将使用 {ready},未配置的 {missing} 会自动跳过。": "Busca web em lote disponível: usando {ready}; {missing} sem configuração serão ignorados automaticamente.", "批量网页搜索可用:所选提供商均已启用并配置密钥。": "Busca web em lote disponível: todos os provedores selecionados estão habilitados e com chave configurada.", "批量网页搜索可用:所选来源均已启用并配置完成。": "Busca web em lote disponível: todas as fontes selecionadas estão habilitadas e configuradas.", "批量网页搜索提供商": "Provedores de busca web em lote", "批量网页搜索至少选择一个提供商": "Selecione pelo menos um provedor para a busca web em lote", "把 1~10 张图片与提示词交给后台配置的视觉模型,返回模型回复文本。": "Envia 1-10 imagens e um prompt ao modelo de visão configurado no servidor e retorna o texto da resposta.", "把下面这段合并到客户端配置的 mcpServers 里,并把 Key 换成你自己的。": "Mescle o trecho abaixo no mcpServers da configuração do cliente e troque a Key pela sua.", "把图片与提示词交给后台配置的视觉模型分析,并把模型回复返回给调用方的大模型。": "Envia imagens e um prompt ao modelo de visão configurado no servidor e devolve a resposta ao modelo que fez a chamada.", "抓取:{name}": "Captura: {name}", "按参考图修改,仅在配置了可用编辑模型时提供。": "Edite imagens de referência; disponível apenas com um modelo de edição compatível configurado.", "按描述使用已配置的模型生图,默认一张,会消耗账号额度。": "Gere imagens a partir da descrição usando o modelo configurado. O padrão é uma imagem e há consumo de créditos.", "接入协议": "Protocolo de acesso", "接入方式": "Modo de conexão", "提供 REST API,任何能发 HTTP 请求的程序都可以携带网关 Key 直接调用。": "Oferece uma API REST; qualquer programa capaz de enviar requisições HTTP pode chamá-la com uma Key do gateway.", "提供商尚未配置密钥": "O provedor não tem uma chave de API configurada", "提供商尚未配置有效密钥": "O provedor não tem uma chave de API válida configurada", "提供商插件暂不可用": "O plugin do provedor está temporariamente indisponível", "提供商插件未安装或未启用": "O plugin do provedor não está instalado ou habilitado", "提供商暂不可用或配置有误": "O provedor está temporariamente indisponível ou mal configurado", "提供商选择": "Seleção de provedores", "提示词,描述要让模型在图片中查看的内容": "Prompt descrevendo o que o modelo deve procurar nas imagens", "插件搜索能力声明不完整,请更新插件": "As informações de capacidade de busca do plugin estão incompletas; atualize o plugin", "插件返回的搜索来源格式不正确": "O plugin retornou fontes de busca em um formato inválido", "搜索、视觉与生图共用网关配置。本机客户端的 MCP 安装在桌面端完成。": "Busca, visão e geração de imagens usam as configurações do gateway. Instale o MCP nos clientes locais pelo aplicativo desktop.", "搜索参数不符合该来源的要求": "Os parâmetros de busca não atendem aos requisitos desta fonte", "搜索提供商没有返回来源": "O provedor de busca não retornou fontes", "搜索服务拒绝了该账号,请检查账号权限": "O serviço de busca recusou esta conta; verifique suas permissões", "搜索来源配置不完整": "A configuração da fonte de busca está incompleta", "搜索请求超时": "A requisição de busca excedeu o tempo limite", "搜索账号不属于该提供商,请重新选择": "A conta de busca pertence a outro provedor; selecione outra conta", "搜索账号登录态已失效,请重新登录": "O login da conta de busca expirou; entre novamente", "搜索额度已用完或触发限流": "A cota de busca acabou ou o limite de taxa foi atingido", "支持多选。每次搜索会并发调用所选提供商并合并重复来源。": "Seleção múltipla. Cada busca chama os provedores selecionados em paralelo e mescla fontes duplicadas.", "无法确认插件搜索能力,请更新或重启提供商插件": "Não foi possível confirmar o suporte à busca; atualize ou reinicie o plugin do provedor", "暂无生图记录,连接 MCP 后即可让 Agent 生成图片。": "Ainda não há tarefas de imagem. Conecte o MCP para o Agent gerar imagens.", "暴露的工具": "Ferramentas expostas", "更新时间": "Atualizado em", "最大生成并发": "Limite de gerações simultâneas", "最近生成记录": "Tarefas de imagem recentes", "服务与协议": "Serviços e protocolos", "服务入口": "Endpoint do serviço", "服务名称": "Serviço", "服务地址": "URL do serviço", "服务状态已更新": "Status do serviço atualizado", "服务端强制单次工具执行的超时上限(同一服务的 Skill / MCP / API 共用)。安装 MCP 时会按此值写入客户端配置;修改后需在客户端重新「更新」配置并重进会话才会生效。": "Limite de tempo imposto pelo servidor para uma execução de ferramenta (compartilhado pelos protocolos Skill / MCP / API do mesmo serviço). Ao instalar o MCP, esse valor é gravado na configuração do cliente; após alterar, execute \"Atualizar\" novamente no cliente e reabra a sessão.", "服务端强制单次工具执行的超时上限(同一服务的 Skill / MCP 共用)。安装 MCP 时会按此值写入客户端配置;修改后需在客户端重新「更新」配置并重进会话才会生效。": "Limite de tempo máximo imposto pelo servidor para uma única execução de ferramenta (compartilhado pelos protocolos Skill / MCP do mesmo serviço). A instalação do MCP grava este valor na configuração do cliente; após alterá-lo, execute \"Atualizar\" novamente no cliente e reabra a sessão.", "服务能力": "Capacidades", "服务配置": "Configuração do serviço", "未选择账号": "Nenhuma conta selecionada", "本地桥接": "Bridge local", "本地桥接会在本机运行一个 node 脚本,支持直接传本地图片路径,推荐在桌面端使用。": "O bridge local executa um script Node nesta máquina e aceita caminhos locais de imagem; recomendado no desktop.", "本地桥接需要 Node.js 18 或更新版本,自动读取授权目录的参考图并保存生成结果;HTTP 接入只返回下载地址。": "A ponte local exige Node.js 18 ou superior. Ela lê referências nas pastas autorizadas e salva as imagens geradas. O modo HTTP retorna apenas URLs de download.", "本机接入": "Instalação local", "本次提交的唯一编号,断线重试使用原编号": "ID único do envio; reutilize-o ao tentar novamente após uma desconexão", "查询原任务并取回图片,不再次生图或扣费。": "Consulte a tarefa original e obtenha as imagens sem gerar ou cobrar novamente.", "查询生成结果": "Consultar resultado da geração", "检查配置": "Verificar configuração", "正在加载安装目标…": "Carregando destinos de instalação…", "正在加载工具服务…": "Carregando serviços de ferramentas…", "正在加载工具服务配置…": "Carregando configuração dos serviços de ferramentas…", "每条搜索词最多 {count} 字": "Até {count} caracteres por consulta", "没有匹配的工具服务": "Nenhum serviço de ferramentas correspondente", "没有可用的工具服务": "Nenhum serviço de ferramentas disponível", "没有可用的生图模型,请先添加账号、启用对应插件并更新模型目录。": "Nenhum modelo de imagem disponível. Adicione uma conta, habilite o plugin correspondente e atualize o catálogo de modelos.", "没有可用的网关 Key": "Nenhuma Key de gateway disponível", "没有可绑定的启用账号,请先到「账号」页添加或启用。": "Não há uma conta habilitada para vincular. Primeiro adicione ou habilite uma na página Contas.", "没有可配置的提供商": "Nenhum provedor para configurar", "清理这次生成的临时图片?已保存到本机的文件不会被删除,原提交编号也不会重新生图。": "Remover as imagens temporárias desta tarefa? Os arquivos salvos localmente serão mantidos e o ID original não gerará imagens novamente.", "清除密钥": "Limpar chave", "清除配置": "Limpar configuração", "点击「复制文档」可复制整份 Markdown 文档,直接发给对接方即可。": "Clique em \"Copiar documento\" para copiar todo o Markdown e enviar diretamente a quem for integrar.", "生图模型": "Modelo de geração de imagens", "生图账号": "Conta de geração de imagens", "生成中": "Gerando", "生成较慢时先返回任务编号。断线后查询原任务,不自动重画;超时不代表没有扣费。": "Gerações demoradas retornam primeiro um ID de tarefa. Consulte a tarefa original após reconectar; não há regeneração automática. Um timeout não significa ausência de cobrança.", "确定清除提供商 {name} 的 API Key?清除后该提供商将不可用,直到重新保存新密钥。": "Limpar a API Key de {name}? O provedor ficará indisponível até que uma nova chave seja salva.", "移除 {name} 配置": "Remover configuração de {name}", "空白的 API Key 不会覆盖已保存的密钥。": "Uma API Key em branco não substitui a chave salva.", "管理可供客户端安装和运行的工具服务,并配置上游提供商与能力。": "Gerencie serviços de ferramentas que os clientes podem instalar e executar, e configure provedores upstream e capacidades.", "结果不确定": "Resultado incerto", "结果保留(小时)": "Retenção (horas)", "编辑 {name}": "Editar {name}", "编辑可使用不同模型;未配置可用编辑模型时,不向 Agent 提供编辑工具。": "A edição pode usar outro modelo. A ferramenta de edição não é exposta sem um modelo de edição disponível.", "编辑提供商 {name}": "Editar provedor {name}", "编辑模型": "Modelo de edição", "网络搜索": "Busca web", "网络搜索与视觉分析:网关侧配置,改完立即生效。本机客户端的安装在桌面端完成。": "Busca web e análise de visão são configurações do gateway e entram em vigor imediatamente. A instalação nos clientes locais é feita no desktop.", "聚合 Tavily、Querit、Firecrawl、Ollama Web Search,提供批量网页搜索与网页抓取能力。": "Agrega Tavily, Querit, Firecrawl e Ollama Web Search para busca web em lote e captura de páginas.", "聚合标准搜索服务及已有 WorkBuddy、Kiro 账号的搜索能力;网页抓取仍使用标准服务。": "Combina serviços de busca padrão com a busca de contas existentes do WorkBuddy e Kiro. A captura de páginas continua usando os serviços padrão.", "能力提供商配置已保存": "Configuração dos provedores de capacidade salva", "能力数量": "Capacidades", "自动选择仅在所选提供商内遵守现有路由;固定账号仍受停用、冷却与额度限制,不会自动换号。": "A seleção automática segue o roteamento existente no provedor escolhido. Contas fixas respeitam desativação, espera e limites de cota, sem troca automática.", "自动选择账号": "Selecionar conta automaticamente", "至少选择一个搜索提供商": "Selecione pelo menos um provedor de busca", "获取 API Key": "Obter API Key", "要分析的图片(1~10 张),每张为 http(s) URL 或图片 data URI": "Imagens a analisar (1-10), cada uma uma URL http(s) ou data URI de imagem", "要抓取并提取正文的网页 URL(1~10 个)": "URLs de páginas para capturar e extrair (1-10)", "要搜索的查询,每条并发执行(1~10 条)": "Consultas a pesquisar, cada uma executada em paralelo (1-10)", "视觉分析": "Análise de visão", "视觉服务配置已保存": "Configuração do serviço de visão salva", "视觉服务配置已清除": "Configuração do serviço de visão removida", "视觉模型配置": "Configuração do modelo de visão", "视觉链路测试失败": "Falha no teste do fluxo de visão", "视觉链路连通:耗时 {duration}ms": "Fluxo de visão conectado em {duration}ms", "触发上游限流": "O limite de taxa do upstream foi atingido", "该协议已停用,已接入的客户端会收到服务停用错误。": "Este protocolo está desabilitado; clientes conectados receberão erro de serviço desabilitado.", "该协议通过 Agent2API 面板安装到本机客户端目录。": "Este protocolo é instalado nos diretórios locais dos clientes pelo painel do Agent2API.", "该提供商不支持网页抓取": "Este provedor não oferece captura de páginas", "该搜索来源使用 API Key,不接受账号绑定": "Esta fonte de busca usa API Key e não aceita vinculação de conta", "该搜索来源使用已有账号,不接受 API Key": "Esta fonte de busca usa uma conta existente e não aceita API Key", "请先选择 API Key": "Selecione uma API Key primeiro", "请先选择提供商": "Selecione um provedor primeiro", "请先选择搜索使用的账号": "Selecione primeiro uma conta para usar na busca", "请求参数无效": "Parâmetros da requisição inválidos", "请至少选择一个目标": "Selecione pelo menos um destino", "请选择 API Key": "Selecione uma API Key", "请选择内部调用 API Key": "Selecione a API Key de chamada interna", "请选择图片输出目录": "Selecione uma pasta de saída para imagens", "请选择提供商与上游模型": "Selecione um provedor e um modelo upstream", "调用用的 API Key": "API Key para chamadas", "账号搜索暂不可用,请检查账号及插件状态": "A busca por conta está temporariamente indisponível; verifique o estado da conta e do plugin", "账号搜索配置不完整,请重新选择账号或更新插件": "A busca por conta não está totalmente configurada; selecione a conta novamente ou atualize o plugin", "超时 {seconds}s": "Tempo limite {seconds}s", "输入新密钥;留空保持不变": "Digite uma nova chave; deixe vazio para manter a atual", "运行时": "Runtime", "还没有可用的提供商,请先在「账号」页添加账号并在「模型管理」页确认有已启用的模型。": "Nenhum provedor disponível ainda. Adicione contas na página \"Contas\" e confirme que há modelos habilitados na página \"Modelos\".", "还没有可用的提供商,请先在桌面端添加账号并确认有已启用的模型。": "Nenhum provedor disponível. Adicione contas no desktop e confirme que há modelos habilitados.", "这是后台生成任务的时间上限。单次 MCP 调用最多等待 20 秒,未完成时返回任务编号;查询不会重新生图。": "Este é o prazo da geração em segundo plano. Cada chamada MCP aguarda até 20 segundos e retorna o ID se ainda estiver pendente. Consultas não geram novamente.", "这里管理的是「客户端能用什么」:服务是否对外提供、上游提供商与密钥、视觉分析用哪个模型。": "Esta página gerencia o que os clientes podem usar: se os serviços são expostos, seus provedores e chaves, e qual modelo a análise de visão utiliza.", "远程 HTTP": "HTTP remoto", "远程 HTTP 只接受图片 URL 或 data URI,不需要本机安装 node。": "O HTTP remoto aceita apenas URLs de imagem ou data URIs; não exige Node.js local.", "连接成功:{count} 条结果,耗时 {duration}ms": "Conectado: {count} resultados em {duration}ms", "连接测试失败": "Falha no teste de conexão", "选择处理图片的上游提供商与模型。调用时会用内部 Key 经本站网关请求该模型,协议转换、重试与故障转移全部复用网关。": "Selecione o provedor upstream e o modelo para imagens. As chamadas passam por este gateway com a Key interna, reutilizando tradução de protocolo, novas tentativas e failover.", "选择安装目标、运行时与调用用的 API Key。Skill 包与密钥只写入所选客户端的本机目录。": "Selecione os destinos de instalação, o runtime e a API Key de chamada. O pacote Skill e a chave são gravados apenas nos diretórios locais dos clientes selecionados.", "选择已有目录,图片只会写入此目录及其子目录": "Selecione uma pasta existente; imagens serão salvas apenas nela e em suas subpastas", "选择目录": "Selecionar pasta", "选择要从中移除的客户端,未勾选的客户端保持不变。": "Selecione os clientes dos quais remover; os não marcados permanecem inalterados.", "选择要写入 MCP 配置的客户端。配置只动本服务那一项,客户端原有的其它 MCP 服务保持不变。": "Selecione os clientes nos quais gravar a configuração MCP. Apenas a entrada deste serviço é alterada; os demais servidores MCP permanecem intactos.", "配置搜索与抓取所使用的上游提供商。调用方不再传递 provider,运行时始终使用这里保存的设置。": "Configure os provedores upstream usados para busca e captura. Os chamadores não enviam mais o provider; o runtime sempre usa as configurações salvas aqui.", "默认只生成一张。空间不足时先拒绝请求,不消耗生图额度;只清理过期结果,已保存到本机目录的文件不受影响。": "Uma imagem é gerada por padrão. Espaço insuficiente bloqueia a solicitação antes de consumir créditos. Apenas resultados expirados são limpos; arquivos locais não são afetados.", " 到 {file}": " para {file}", " 正文已改:{edited}(其余段用官方原文)。": " Texto alterado: {edited} (os demais blocos usam o texto oficial).", "(无 id)": "(sem id)", "/v1 拒绝无 Key 请求": "/v1 rejeita requisições sem chave", "0 B": "0 B", "100%(默认)": "100% (padrão)", "<本机IP>": "", "ALTCHA(本地验证)": "ALTCHA (verificação local)", "Access Key ID": "Access Key ID", "Agent2API 手机端": "Agent2API Mobile", "Android 应用(APK)": "Aplicativo Android (APK)", "Cline 上游按请求头判定「调用方是不是 Cline 自家产品」:X-CLIENT-TYPE: cline-sdk 是硬门槛(缺了它免费池模型一律 403),版本号与平台标识让请求更贴近官方客户端的形态。这里列出的是网关默认会发的头:改某一行的值 = 覆盖默认值(也可以新增默认清单之外的自定义头);把值清空保存 = 这个头不发送;在界面删掉被改过的行 = 回落默认值。改完点「保存」,下一个 Cline 请求立即生效。不懂某一行的含义就不要动它 —— 伪装头的价值在「与官方客户端逐字一致」。": "O upstream da Cline decide pelos cabeçalhos da requisição se o chamador é um produto da própria Cline: X-CLIENT-TYPE: cline-sdk é um requisito obrigatório (sem ele, os modelos do pool gratuito retornam 403 sempre), e o número de versão e o identificador de plataforma aproximam a requisição do formato do cliente oficial. Os cabeçalhos listados aqui são os que o gateway envia por padrão: alterar o valor de uma linha = sobrescrever o padrão (também é possível adicionar cabeçalhos personalizados além da lista padrão); salvar com o valor vazio = esse cabeçalho não é enviado; excluir na interface uma linha alterada = voltar ao padrão. Ao terminar, clique em “Salvar” e a próxima requisição da Cline já usará as mudanças. Se você não entende o significado de uma linha, não a altere — o valor dos cabeçalhos spoofed está em ser idêntico palavra por palavra ao cliente oficial.", "Cline 伪装头": "Cabeçalhos spoofed do Cline", "Cline 伪装头已刷新": "Cabeçalhos spoofed do Cline atualizados", "Docker 容器": "Contêiner Docker", "Endpoint": "Endpoint", "Endpoint 填 https://<账户ID>.r2.cloudflarestorage.com,Region 固定填 auto。": "Defina o Endpoint como https://.r2.cloudflarestorage.com e a Region como auto.", "Endpoint 填 https://cos.ap-guangzhou.myqcloud.com,Region 填 ap-guangzhou(按实际地域改)。": "Defina o Endpoint como https://cos.ap-guangzhou.myqcloud.com e a Region como ap-guangzhou (ajuste para a sua região).", "Endpoint 填 https://obs.cn-north-4.myhuaweicloud.com,Region 填 cn-north-4(按实际地域改)。": "Defina o Endpoint como https://obs.cn-north-4.myhuaweicloud.com e a Region como cn-north-4 (ajuste para a sua região).", "Endpoint 填 https://oss-cn-hangzhou.aliyuncs.com,Region 填 cn-hangzhou(按实际地域改)。": "Defina o Endpoint como https://oss-cn-hangzhou.aliyuncs.com e a Region como cn-hangzhou (ajuste para a sua região).", "Endpoint 形如 http://192.168.1.10:9000(自建通常用 http);Region 一般填 us-east-1。": "O Endpoint tem o formato http://192.168.1.10:9000 (auto-hospedado geralmente usa http); a Region costuma ser us-east-1.", "Endpoint 留空即走 AWS 官方地址;Region 必须与桶所在区域一致。": "Deixe o Endpoint vazio para usar o endereço oficial da AWS; a Region deve corresponder à região do bucket.", "KB": "KB", "Linux 安装包(deb)": "Pacote Linux (deb)", "Logo 不能超过 2 MiB": "O logo não pode exceder 2 MiB", "Logo 仅支持 PNG、JPG、WebP 图片": "O logo aceita apenas imagens PNG, JPG e WebP", "Nextcloud": "Nextcloud", "OpenAI 新版 API 用 developer 角色取代 system 承载指令,新版 OpenAI SDK 与部分客户端发的对话里会出现 role 为 developer 的消息;不少 OpenAI 兼容上游(尤其是自定义提供商的透传路径)不认识这个角色,收到就报 400。开启本项后,网关在每次转发前把 developer 角色的消息改写为 system —— 两类角色在 OpenAI 语义上等价(OpenAI 自己的迁移指南也是这么映射的),改写不影响对话内容与语义;对本来就只认 system 的各家内置上游同样无害。默认开启;关掉后 developer 消息会原样发往上游,不认识它的上游会报「角色不存在」一类的错误。": "A API mais recente da OpenAI carrega instruções num papel developer em vez de system, então conversas enviadas por SDKs OpenAI atuais e alguns clientes contêm mensagens com role \"developer\". Muitos upstreams compatíveis com OpenAI (especialmente o caminho de passagem dos provedores personalizados) não reconhecem esse papel e rejeitam a solicitação inteira com 400. Quando ativado, o gateway reescreve mensagens do papel developer para system antes de cada encaminhamento — os dois papéis são equivalentes na semântica da OpenAI (o próprio guia de migração da OpenAI faz o mesmo mapeamento), então a reescrita não altera conteúdo nem significado, e é inofensiva aos upstreams integrados que só aceitam system. Ativado por padrão; desativado, as mensagens developer vão para o upstream como estão e upstreams que não conhecem o papel retornam erros do tipo \"papel inexistente\".", "QQ 群 · Telegram": "Grupos do QQ · Telegram", "S3 兼容存储": "Armazenamento compatível com S3", "Safari 没有安装按钮:点底部的「分享」,选「添加到主屏幕」,再点「添加」。": "O Safari não tem botão de instalar: toque em Compartilhar na parte de baixo, escolha \"Adicionar à Tela de Início\" e toque em \"Adicionar\".", "Secret Access Key": "Secret Access Key", "Token 读数量级": "Escala de leitura de Token", "UTF-8 文本文件路径,留空用内置默认提示词(通用编码助手提示词,不含任何会被上游拦截的模板句)。只在「替换 / 追加」模式下生效,透传模式不读它。": "Caminho de um arquivo de texto UTF-8; deixe vazio para usar o system prompt padrão integrado (um system prompt genérico de assistente de código, sem nenhuma frase de template que o upstream bloqueie). Só tem efeito nos modos “Substituir / Anexar”; o modo Passthrough não o lê.", "WebView / 浏览器内核": "WebView / motor do navegador", "Windows 安装包(NSIS)": "Instalador do Windows (NSIS)", "Windows 服务": "Serviço do Windows", "ZCode 套餐池(Start Plan)通道每条请求都要消耗一个当次铸造的人机验证令牌(一次性,2 分钟过期),库存低于该值时界面自动补铸到它。默认 3 个。调大能吸收突发并发,但用不掉的令牌 2 分钟就过期作废,烧的是上游风控配额。可填 1–10。": "Cada solicitação no canal do pool de planos do ZCode (Start Plan) consome um token de CAPTCHA recém-cunhado (de uso único, expira em 2 minutos); quando o estoque cair abaixo deste valor, a interface cunha mais até ele. Padrão 3. Um valor maior absorve picos, mas tokens não usados expiram em 2 minutos e queimam a cota de controle de risco do upstream. Aceita 1-10.", "ZCode「套餐池(Start Plan)」通道的每条推理请求都要附一个当次铸造的阿里云无痕验证令牌(一次性、约 2 分钟过期):令牌由界面里的铸造守卫静默铸好、推给网关入池,转发时逐条取用。这里的三个值管的是补货节奏:①「库存目标」= 库存低于它守卫才补铸、补到它为止,默认 3 个;②「轮询间隔」= 守卫多久看一次库存,默认 2500 毫秒,只影响反应速度(库存够用时不会多铸);③「单轮铸造上限」= 发现缺货时一轮最多铸几个,默认 1 个(连铸之间固定隔 500 毫秒)。请求密集、请求日志里连续出现「需要人机验证令牌」的 503 时,把目标与单轮上限适当调大、轮询调快,能让池子跟得上消耗 —— 代价是上游(阿里云)对铸造频率有风控,铸得越多越快越容易触发限流,且用不掉的令牌 2 分钟即过期作废、等于白烧配额,所以建议小步调。保存后对下一轮补货立即生效,不用重启。": "Cada solicitação de inferência no canal \"Pool de planos (Start Plan)\" do ZCode deve carregar um token invisível de CAPTCHA da Aliyun recém-cunhado (de uso único, expira em cerca de 2 minutos): os tokens são cunhados silenciosamente pelo guardião de cunhagem na interface e empurrados para o pool do gateway, de onde o encaminhamento toma um por solicitação. Os três valores aqui governam o ritmo de reposição: ① \"Meta de estoque\" = o guardião só cunha mais quando o estoque cai abaixo dela, até ela (padrão 3); ② \"Intervalo de sondagem\" = com que frequência o guardião verifica o estoque, padrão 2500 ms (afeta apenas a velocidade de reação — não cunha além quando o estoque basta); ③ \"Limite de cunhagem por rodada\" = o máximo de tokens cunhados em uma rodada ao detectar falta, padrão 1 (cunhagens consecutivas são fixadas a 500 ms). Quando as solicitações forem densas e o registro mostrar 503 \"precisa de token de CAPTCHA\" em sequência, aumente a meta e o limite por rodada e acelere a sondagem para o pool acompanhar — a contrapartida é que o upstream (Aliyun) limita a frequência de cunhagem: quanto mais e mais rápido cunhar, maior a chance de esbarrar no limite, e tokens não usados expiram em 2 minutos de qualquer forma, queimando cota à toa — ajuste em passos pequenos. Salvar entra em vigor na próxima rodada de reposição, sem reinício.", "beta 版": "Versão beta", "iOS 应用": "Aplicativo iOS", "models.dev 元数据": "Metadados models.dev", "models.dev 元数据已更新({count} 条)": "Metadados do models.dev atualizados ({count} entradas)", "models.dev 是一个开源的模型资料库(社区维护),这里用它补齐「上游没告诉我们」的模型能力:上下文窗口、最大输出、工具调用、图片、视频、是否支持思考,以及这个模型认识哪些思考档位。优先级是:你在「模型能力」里手工改的值 > 上游清单自己声明的值 > models.dev 的值 —— 它只填上游没声明的空位,从不推翻上游已声明的。网关随包内嵌了一份快照,所以离线、首次启动、访问不通时也有数据;开启时会按「模型目录刷新」任务的间隔联网更新(同一轮里一并刷新,也可在这里立即刷新)。关闭只停联网刷新,已经拿到的数据继续用。": "O models.dev é um banco de dados de modelos aberto e mantido pela comunidade. Ele preenche o que o upstream não informa: janela de contexto, saída máxima, chamada de ferramentas, imagem, vídeo, suporte a raciocínio e quais níveis de raciocínio o modelo realmente aceita. Prioridade: valores que você editou em \"Capacidades do modelo\" > o que o catálogo do upstream declara > models.dev — ele só preenche lacunas deixadas pelo upstream e nunca sobrepõe um valor declarado. Um snapshot vem embutido no app, então offline, primeira execução e rede bloqueada continuam tendo dados; quando ativado, atualiza online no intervalo da tarefa \"Atualização do catálogo de modelos\" (na mesma rodada, ou sob demanda aqui). Desativar apenas interrompe a atualização online; os dados já obtidos continuam em uso.", "models.dev 模型元数据": "Metadados de modelos do models.dev", "systemd 服务": "Serviço systemd", "{count} 条": "{count} entradas", "{count} 条 · 来自{origin}{at} · {mode}": "{count} entradas · de {origin}{at} · {mode}", "{count} 条规则,按列表顺序执行": "{count} regras, executadas na ordem da lista", "{d} 天 {h} 小时": "{d}d {h}h", "{h} 小时 {m} 分钟": "{h}h {m}min", "{label} 提示词文件": "Arquivo de prompt de {label}", "{label} 的提示词模式": "Modo de prompt de {label}", "{label}({message})": "{label} ({message})", "{lines} 行、{chars} 字符(按当前草稿计)": "{lines} linhas, {chars} caracteres (com base no rascunho atual)", "{minutes} 分钟": "{minutes} minutos", "{models} 同时出现在两块设置里,会按「辅助识图」处理。想改的话,把其中一个从这边的模型名单里去掉。": "{models} aparece nos dois blocos e será tratado por leitura assistida de imagem. Para mudar isso, remova-o de uma das listas.", "{mode}生效:上游收到的 system 来自{source}{lines}。": "Modo {mode} ativo: o system enviado ao upstream vem de {source}{lines}.", "{m} 分钟": "{m}min", "{noun}不能为空(可填 {min}–{max})": "{noun}: não pode ficar em branco (valores aceitos: {min}–{max})", "{noun}必须在 {min}–{max} 之间(当前填的是 {text})": "{noun}: deve estar entre {min} e {max} (valor atual: {text})", "{noun}必须是整数": "{noun}: deve ser um número inteiro", "{n} B": "{n} B", "{n} GB": "{n} GB", "{n} KB": "{n} KB", "{n} MB": "{n} MB", "{n} 个头将随每个 Cline 请求发送": "{n} cabeçalhos serão enviados em cada requisição da Cline", "{n} 台可选 · 点此切换": "{n} servidores · toque para trocar", "{n} 项 · {shown} 显示": "{n} itens · {shown} visíveis", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "{total} menus · {shown} visíveis · {hidden} ocultos · {groups} grupos", "{way}的适用模型": "Modelos para {way}", "⚠️ 密钥警告": "⚠️ Aviso de chaves", "⚠️ 已关闭「{label}」的机器人校验": "⚠️ Verificação de bot desativada para \"{label}\"", "⚠️ 机器人校验已关闭": "⚠️ Captcha desativado", "✅ Cline 伪装头已保存": "✅ Cabeçalhos spoofed do Cline salvos", "✅ models.dev 模型元数据已开启": "✅ Metadados de modelos do models.dev ativados", "✅ 云同步设置已保存": "✅ Configurações de sincronização na nuvem salvas", "✅ 会话图片压缩已开启": "✅ Compressão de imagens ativada", "✅ 出站指纹脱敏已开启": "✅ Mascaramento de fingerprint de saída ativado", "✅ 密码已修改,其他设备的登录已失效": "✅ Senha alterada. Os acessos em outros dispositivos foram revogados", "✅ 导入完成:{summary}": "✅ Importação concluída: {summary}", "✅ 已上传到云端({size})": "✅ Enviado para a nuvem ({size})", "✅ 已为「{label}」装上网关自带提示词": "✅ System prompt interno do gateway instalado para “{label}”", "✅ 已从云端恢复{note}": "✅ Restaurado da nuvem{note}", "✅ 已保存:{label}": "✅ Salvo: {label}", "✅ 已保存:{label} {value}": "✅ Salvo: {label} {value}", "✅ 已保存:指定错误码直接换号": "✅ Salvo: troca de conta direta em códigos de erro especificados", "✅ 已保留 {days} 天": "✅ Retenção definida para {days} dias", "✅ 已保留 {days} 天,超出部分已清理": "✅ Retenção definida para {days} dias; o excedente foi removido", "✅ 已加密备份 {n} 张表({size}),包含恢复密钥:{file}": "✅ Backup criptografado de {n} tabelas ({size}), com chaves de recuperação: {file}", "✅ 已备份 {n} 张表({size})到 {file}": "✅ {n} tabelas ({size}) backupadas em {file}", "✅ 已导入账号密钥,请继续下载": "✅ Chave da conta importada; continue o download", "✅ 已导出 {count} 个账号{note}{file}": "✅ {count} contas exportadas{note}{file}", "✅ 已开启「{label}」的机器人校验": "✅ Verificação de bot ativada para \"{label}\"", "✅ 已恢复 {n} 张表{note}": "✅ {n} tabelas restauradas{note}", "✅ 已改用 k / M / B 缩写": "✅ Agora usando abreviações k / M / B", "✅ 已改用本地量级词(万 / 亿式)": "✅ Agora usando magnitudes locais (k / M)", "✅ 已自动创建网关 Key「默认」(可在「网关 Key」页查看)": "✅ Chave do gateway “Padrão” criada automaticamente (veja na página “Chave do gateway”)", "✅ 已解除内容拦截降级": "✅ Fallback de bloqueio de conteúdo removido", "✅ 开发者角色兼容已开启": "✅ Compatibilidade com papel developer ativada", "✅ 指纹脱敏设置已保存": "✅ Configurações de mascaramento salvas", "✅ 数量上限已设为 {count} 条": "✅ Limite definido para {count} registros", "✅ 数量上限已设为 {count} 条,超出部分已清理": "✅ Limite definido para {count} registros; excedentes removidos", "✅ 机器人校验已开启": "✅ Captcha ativado", "✅ 第三方模型回答完自动折叠过程已开启": "✅ Recolhimento automático do trabalho de modelos de terceiros após a resposta ativado", "✅ 设置已保存,应用正在重启…": "✅ Configurações salvas; o aplicativo está reiniciando…", "✅ 调试模式已关闭": "✅ Modo debug desativado", "✅ 调试模式已开启": "✅ Modo debug ativado", "✅ 路由设置已保存": "Configurações de roteamento salvas", "✅ 连接成功:{path}": "✅ Conectado: {path}", "、{n} 个自定义提供商": ", {n} provedores personalizados", "。事件日志、请求明细、调试报文与面板登录态保持不变。替换前会自动把当前业务数据备份到配置目录的 backups/ 下。": ". Logs de eventos, detalhes de requisições, pacotes de depuração e o estado de login do painel permanecem intactos. Os dados de negócio atuais são copiados para backups/ no diretório de configuração antes da substituição.", "「{label}」将从 {previous} 天改为 {days} 天。": "“{label}” passará de {previous} para {days} dias.", "「{label}」将从 {previous} 条改为 {count} 条。": "“{label}” passará de {previous} para {count} registros.", "「{label}」改用内置默认提示词": "“{label}” agora usa o system prompt padrão integrado", "「{label}」的提示词文件已更新": "Arquivo de prompt de “{label}” atualizado", "「{label}」的提示词正文已更新": "Texto do prompt de “{label}” atualizado", "「{label}」的模式改为「{mode}」": "Modo de “{label}” alterado para “{mode}”", "「{label}」的网关自带提示词已改回官方原文": "O system prompt interno do gateway de “{label}” foi revertido para o texto oficial", "「{label}」的网关自带提示词正文已更新": "Texto do system prompt interno do gateway de “{label}” atualizado", "「模型管理」里每个能力的来源标记(上游 / models.dev / 已覆盖)读的就是这份数据;映射弹窗的思考档位下拉也按这里的数据只列该模型真实认识的档位。": "As marcas de origem por capacidade em \"Gerenciamento de modelos\" (upstream / models.dev / substituído) vêm destes dados, e a lista de níveis de raciocínio no diálogo de mapeamento mostra apenas os níveis que o modelo realmente aceita, com base neles.", "「用哪份提示词」本来是按上游分别决定的事,所以每家可以有自己的模式、提示词文件与正文:不在这里列出的提供商一律沿用上面那份默认设置,「跟随默认」把这一家取消、回到默认。带「网关自带」那一行的家(目前是 ZCode 两家)默认就列在这里 —— 那一段是网关自己装上去的文本,不来自客户端也不来自提示词文件,默认开启、可以关掉,也可以改它的正文(改过的那一段以你的文本为准);关掉后还能不能通过上游校验,取决于上游当下的口径,行内说明了实测依据。「模式 / 提示词文件 / 正文」管的是客户端自己的 system 怎么处理,与那个开关是两件事。": "Qual prompt usar é uma decisão tomada por upstream, então cada provedor pode ter seu próprio modo, arquivo de prompt e texto: provedores não listados aqui seguem a configuração padrão acima, e “Seguir padrão” remove a configuração individual desse provedor, voltando ao padrão. Os provedores com a linha “Interno do gateway” (atualmente os dois da ZCode) já aparecem aqui por padrão — esse trecho é um texto instalado pelo próprio gateway, que não vem do cliente nem de um arquivo de prompt, fica ativado por padrão, pode ser desativado e também pode ter o texto editado (os trechos editados usam o seu texto); se ele ainda passa na validação do upstream depois de desativado depende dos critérios atuais do upstream, e a própria linha documenta a base dos testes. “Modo / arquivo de prompt / texto” trata de como o system do próprio cliente é processado — é uma coisa separada daquele switch.", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "\"Configurações\" é fixo, então o grupo dele não pode ser ocultado inteiro; os outros menus podem ser ocultados individualmente", "「请求日志」页的逐条请求记录,默认 99999 天(近似全量保留),可填 1–99999 天。": "Registros de cada requisição na página “Logs de requisições”. Padrão de 99999 dias (retenção praticamente total); aceita de 1 a 99999 dias.", "「请求日志」页的逐条请求记录,默认 99999 天,可填 1–99999 天;同时受数量上限限制。": "Registros por requisição na página de logs de requisições. Padrão de 99999 dias; aceita 1–99999 dias. O limite de registros também se aplica.", "一个 .a2ab 文件即可跨机器恢复,账号、网关 Key、GitHub 令牌与云同步凭据无需另行复制密钥。插件程序与库外文件不在整库备份范围。": "Um único arquivo .a2ab restaura os dados em outra máquina, sem copiar separadamente as chaves de contas, keys do gateway, tokens do GitHub ou credenciais de sincronização. Programas de plugins e arquivos fora do banco não estão incluídos.", "一段内置装配": "um conjunto integrado", "三档数据各自独立计时,超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件;请求日志是网关每次转发到上游的逐条记录;按天聚合供报表页的热力图与按天趋势使用。请求日志与按天聚合默认 99999 天(约 274 年,效果上等于全量保留),事件日志默认 30 天。把某一档改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。三档的可填范围均为 1–99999 天。": "Os três tipos de dados são contados de forma independente e o que excede o período de retenção é excluído: os logs de eventos são eventos do sistema, como login, troca de conta e switch 429; os logs de requisições são o registro de cada encaminhamento do gateway ao upstream; os agregados diários alimentam o mapa de calor e as tendências diárias da página de relatórios. Logs de requisições e agregados diários têm padrão de 99999 dias (cerca de 274 anos — na prática, retenção total), e os logs de eventos, de 30 dias. Reduzir qualquer um deles (por exemplo, de 30 para 7 dias) e salvar exclui imediatamente os dados históricos excedentes, sem possibilidade de recuperação; aumentar ou manter o valor não exclui nada. Os três aceitam de 1 a 99999 dias.", "三段各自成块,所以分开编辑": "Os três blocos são separados, por isso a edição é individual", "上传": "Enviar", "上传 Logo": "Enviar logo", "上传中…": "Enviando…", "上传内容含加密后的账号凭证与网关配置": "O envio contém credenciais de conta criptografadas e configuração do gateway", "上传到云端": "Enviar para a nuvem", "上传失败:{message}": "Falha no envio: {message}", "上次同步:{time}({action})": "Última sincronização: {time} ({action})", "上次成功刷新的结果(存在本机数据库里)": "Resultado da última atualização bem-sucedida (guardado no banco local)", "上游 CLI 版本": "Versão da CLI upstream", "上游客户端版本": "Versão do cliente upstream", "上游按": "O upstream valida a identidade pela ", "上游按「结构」校验身份:三段必须各自成块,所以这里分开编辑三段(不能合成一段)。动态段里的运行值写成占位符,发请求时才替换:{cwd} 工作目录、{platform} 平台、{shell} shell、{os_version} 系统版本、{git} 是否 git 仓库、{provider} 提供方标识、{model} 模型名。清空某一段 = 那一段恢复官方原文。第三段发出时前面会自带一个空行(官方形状)。": "O upstream valida a identidade por “estrutura”: os três blocos precisam ser blocos separados, então os três são editados aqui individualmente (não é possível fundi-los em um só). Valores de execução no bloco dinâmico são escritos como placeholders e substituídos apenas no envio da requisição: {cwd} diretório de trabalho, {platform} plataforma, {shell} shell, {os_version} versão do sistema, {git} se é um repositório git, {provider} identificador do provedor, {model} nome do modelo. Limpar um bloco = aquele bloco volta ao texto oficial. O terceiro bloco é enviado com uma linha em branco na frente (o formato oficial).", "上游未配置": "Upstream não configurado", "上游模型繁忙时会先排队(回一句「建议 N 秒后再来」):网关等一会儿再发同一请求,最多等几次。默认 2 次,可填 0–10;填 0 表示不等待,排队直接返回 503 并说明「不是登录态或额度问题」。": "Quando o modelo no upstream está ocupado, ele primeiro entra na fila (respondendo “recomendamos voltar em N segundos”): o gateway aguarda um pouco e reenvia a mesma requisição, até um número máximo de esperas. Padrão 2; valores aceitos 0–10; 0 significa não esperar — a fila retorna 503 diretamente, informando que “não é um problema de login nem de cota”.", "上游用「逐字精确匹配」的方式审核请求体(不是语义审核):客户端注入的固定模板句、计费头字段名、以及某些裸错误码出现在报文里就会整单拦截,返回 400。开启本项后,网关在每次转发前改写这些指纹 —— 表头键值整段删除,承载语义的模板句只换一个词(如 official CLI for Claude → official CLI tool for Claude),对话内容与语义都不受影响。规则集是内置的,不需要也无法维护词表。关掉本项后客户端模板会原样发往上游,可能重新出现模板句被误拦的报错。": "O upstream revisa o corpo da requisição por “correspondência exata, palavra por palavra” (não é revisão semântica): frases de template fixas injetadas pelo cliente, nomes de campos de cabeçalhos de cobrança e certos códigos de erro soltos, se aparecerem no payload, bloqueiam a requisição inteira com retorno 400. Com esta opção ativada, o gateway reescreve esses fingerprints antes de cada encaminhamento — pares de chave/valor de cabeçalho são removidos por completo e frases de template que carregam significado têm apenas uma palavra trocada (por exemplo, official CLI for Claude → official CLI tool for Claude), sem afetar o conteúdo nem o significado da conversa. O conjunto de regras é integrado; não há lista de palavras a manter, nem seria possível. Com a opção desativada, os templates do cliente vão ao upstream como estão e podem voltar a ocorrer bloqueios indevidos de frases de template.", "上游请求四个阶段各自的等待上限(秒,1~3600):①「连接中超时」= 建立 TCP/TLS 连接或代理隧道的最大等待,默认 30 秒;②「等待响应超时」= 请求发出后等上游响应头的最大时间,默认 300 秒 —— 网关请求上游恒带 stream,响应头在 SSE 建立时就到达,与模型思考多久无关;③「流式响应空闲超时」= 流式响应相邻两块数据之间允许的最大空闲,收到新数据即重新计时,默认 300 秒 —— 上游长时间不吐数据即判定连接僵死并断开;④「非流式响应超时」= 读完整份非流式响应体的总预算(一次性计时、不重置),默认 300 秒。四项都是「等待上限」,只要数据还在来,正常的流式回答就一直往下传。保存后对下一个请求立即生效,不用重启。": "Limites de espera de cada uma das quatro fases da requisição ao upstream (segundos, 1~3600): ① “Timeout de conexão” = espera máxima para estabelecer a conexão TCP/TLS ou o túnel de proxy, padrão 30 segundos; ② “Timeout de espera de resposta” = tempo máximo de espera pelos cabeçalhos de resposta do upstream após o envio da requisição, padrão 300 segundos — as requisições do gateway ao upstream sempre usam stream, e os cabeçalhos de resposta chegam quando o SSE é estabelecido, independentemente de quanto tempo o modelo pense; ③ “Timeout de inatividade do streaming” = inatividade máxima permitida entre dois blocos adjacentes de uma resposta em streaming, com a contagem reiniciada a cada novo dado recebido, padrão 300 segundos — se o upstream ficar muito tempo sem enviar dados, a conexão é considerada travada e é encerrada; ④ “Timeout de resposta não streaming” = orçamento total para ler o corpo inteiro de uma resposta não streaming (contagem única, sem reinício), padrão 300 segundos. Os quatro são limites de espera: enquanto os dados continuarem chegando, uma resposta em streaming normal segue fluindo. Depois de salvar, os valores passam a valer para a próxima requisição, sem reiniciar.", "上游调试报文": "Payloads de depuração do upstream", "上移": "Mover para cima", "上移规则": "Mover regra para cima", "下次自动重试:{time}": "Próxima tentativa automática: {time}", "下游正文": "Corpos do downstream", "下移": "Mover para baixo", "下移规则": "Mover regra para baixo", "下载失败:{message}": "Falha no download: {message}", "不一致": "Divergente", "不做会话识别,每条请求都重新按策略选路。": "Sem detecção de sessão: cada requisição é roteada pela estratégia do zero.", "不做图片兼容": "Não adaptar imagens", "不可用": "Indisponível", "与网关同源的面板;完整管理功能在桌面端": "Painel servido pelo próprio gateway; o gerenciamento completo fica no desktop", "两张开关分别管桌面端(应用内窗口,也包含开启局域网访问后从其他设备访问的那份面板)与网页端(Docker / 服务端自托管的浏览器面板)。默认都开启;桌面端只在本机使用、嫌验证耗时可以关掉,网页端暴露在网络上,建议保持开启。": "Os dois interruptores controlam o lado desktop (a janela do aplicativo, incluindo o painel aberto em outros dispositivos quando o acesso pela LAN está ativo) e o lado web (o painel de navegador hospedado pelo Docker / servidor). Ambos vêm ativados. Desative o do desktop se usar apenas localmente e a verificação incomodar; mantenha o da web ativado, pois aquela página fica exposta à rede.", "两次输入的备份密码不一致": "As senhas do backup não coincidem", "两次输入的新密码不一致": "As novas senhas não coincidem", "两次重试之间的等待时间,两项共用,可填 0–300 秒。": "Tempo de espera entre duas tentativas, compartilhado pelas duas opções; valores de 0–300 segundos.", "两种方式不会互相自动切换。": "Os dois modos nunca alternam entre si automaticamente.", "两组设置分别用于桌面端托管的网页管理面板与网页端(Docker / 服务端)的浏览器面板。是否可被其他设备访问取决于网络访问与防火墙设置,不限于局域网。两端默认都开启人机验证,建议保持开启。": "Os dois grupos se aplicam ao painel web hospedado pelo aplicativo desktop e ao painel no navegador hospedado por Docker / servidor. O acesso de outros dispositivos depende das configurações de acesso pela rede e firewall e não se limita à rede local. A verificação humana vem ativada nos dois casos; recomendamos mantê-la ativada.", "为了安全,开启前需要先注册一个": "Por segurança, antes de ativar é preciso registrar uma ", "主进程未返回启动设置,请更新桌面端后重试": "O processo principal não retornou as configurações de inicialização; atualize o aplicativo desktop e tente novamente.", "主进程桥不可用": "Ponte com o processo principal indisponível", "主题": "Tema", "事件日志": "Logs de eventos", "事件日志保留天数": "Dias de retenção dos logs de eventos", "云同步": "Sincronização na nuvem", "产品名": "Nome do produto", "产品名不能包含斜杠或版本号,请改用前缀匹配": "Nomes de produto não podem incluir barras ou versões. Use correspondência por prefixo.", "人机验证": "Verificação humana", "人机验证失败": "Falha na verificação humana", "人机验证已完成": "Verificação humana concluída", "人机验证还在计算,请稍候": "A verificação humana ainda está sendo calculada, aguarde", "仅在同一会话、同一问题和相同权限范围内复用;追问新细节会重新识读。缓存只存在本机内存。": "Os resultados só são reutilizados na mesma conversa, pergunta e escopo de permissões. Novas perguntas geram uma nova leitura. O cache fica apenas na memória local.", "仅在账号、配置、签到或余额等实质内容变化时上传;导出时间或查询时间单独变化不会触发上传。": "O upload só ocorre quando há mudanças reais nas contas, configurações, resultados de check-in ou saldos. Alterações apenas nos horários de exportação ou consulta não geram uploads.", "仅处理本次转发副本,不修改客户端选择,也不删除当前或历史图片。": "Apenas a cópia encaminhada é alterada. A seleção do cliente e todas as imagens atuais e anteriores são preservadas.", "仅影响面板登录与注册,不影响 API Key 调用。保存后生效,已登录会话不会退出。": "Afeta apenas o login e o cadastro no painel, não chamadas com chaves de API. Entra em vigor ao salvar e mantém as sessões existentes.", "仅本机": "Somente este dispositivo", "仅用现有数据、不联网刷新": "Usando apenas os dados existentes, sem atualização online", "从云端恢复": "Restaurar da nuvem", "从桌面图标启动,全屏、无地址栏。想卸载:长按图标删除,或清除浏览器站点数据。": "Abra pelo ícone na tela inicial: em tela cheia, sem barra de endereço. Para desinstalar, mantenha o ícone pressionado e remova, ou limpe os dados do site no navegador.", "优先使用当前路由内的视觉模型": "Priorizar modelos de visão da rota atual", "优先在当前路由内找可用的视觉模型,找不到就用 {model} 直接回答,不再回到原模型。": "Prefere um modelo de visão disponível na rota atual; se não houver, {model} responde direto no lugar do modelo original.", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "Restaura os grupos, a ordem e a visibilidade padrão. Grupos criados por você são removidos (os menus são mantidos).", "会话图片压缩设置已刷新": "Configurações de compressão de imagens atualizadas", "位置": "Local", "位置与端口": "Local e portas", "使用 Rust 正则语法,保存时由后端校验;不支持环视和反向引用。": "Usa a sintaxe de expressões regulares do Rust, validada pelo backend ao salvar. Lookaround e referências anteriores não são suportados.", "使用中文单位(亿 / 万)": "Usar unidades chinesas (yi / wan)", "使用本地量级词(万 / 亿式)": "Usar magnitudes locais (estilo k / M)", "使用默认值": "Usando os padrões", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "O módulo de layout da barra lateral não foi carregado (ui/sidebar-layout.js deve vir antes de app.js).", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "Nenhum menu aparece na barra lateral. Ative os que precisar em Configurações → Exibição → Menus da barra lateral.", "侧边栏菜单": "Menus da barra lateral", "保存上游原始报文(请求头、请求体、响应头、响应体)": "Salvar payloads brutos do upstream (cabeçalhos da requisição, corpo da requisição, cabeçalhos da resposta, corpo da resposta)", "保存单独配置": "Salvar configuração do modelo", "保存后以这里的文本为准": "Após salvar, este texto passa a valer", "保存后对下一轮补货立即生效,不用重启。守卫跑在应用界面里:轻量模式关窗销毁界面期间无法铸造,走套餐池(Start Plan)通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。": "Salvar entra em vigor na próxima rodada de reposição, sem reinício. O guardião roda dentro da interface do aplicativo: enquanto o modo leve tiver destruído a interface após fechar a janela, não é possível cunhar tokens — solicitações no canal do pool de planos (Start Plan) caem no registro de solicitações como 503 (com o motivo); reabra a interface e a cunhagem se recupera automaticamente.", "保存后应用将重启以生效。": "O aplicativo será reiniciado após salvar para que isso tenha efeito.", "保存后状态读取立即生效。后台不会自动生成令牌;需要人机验证时,在账号的「套餐明细」中主动开始验证。模型请求免验证时无需保持界面打开。": "As configurações de consulta de status entram em vigor após salvar. Nenhum token é gerado automaticamente. Inicie a verificação necessária nos detalhes do plano da conta. Não é preciso manter a interface aberta quando o modelo dispensa verificação.", "保存后立即生效,不用重启:策略与粘性作用于**下一次**转发的选路,进行中的请求不受影响。": "Vale na hora ao salvar, sem reiniciar: estratégia e aderência valem para a escolha da **próxima** requisição encaminhada; requisições em andamento não são afetadas.", "保存后立即生效,不用重启;次数用尽仍失败时,错误原样返回给客户端。": "Passa a valer imediatamente após salvar, sem reiniciar; se as tentativas se esgotarem e ainda houver falha, o erro é retornado ao cliente como está.", "保存后立即生效,不用重启;超时按上游失败处理(计入请求日志的「错误」列,并按「请求重试」的设置决定是否重试)。": "Passa a valer imediatamente após salvar, sem reiniciar; o timeout é tratado como falha do upstream (contabilizado na coluna “Erro” dos logs de requisições e sujeito às configurações de “Retry de requisições” para nova tentativa).", "保存后立即生效:保留天数和数量上限同时生效,调小任一项会立即清理超出的历史数据,且不可恢复。": "Entra em vigor imediatamente após salvar. Os dias de retenção e o limite de registros se aplicam juntos; reduzir qualquer um remove imediatamente os dados históricos excedentes, sem possibilidade de recuperação.", "保存后立即生效:改小保留天数会立刻删除超出的历史数据,且不可恢复。": "Passa a valer imediatamente após salvar: reduzir os dias de retenção exclui na hora os dados históricos excedentes, sem possibilidade de recuperação.", "保存在当前网关,登录页也会公开显示。不会更改安装包、快捷方式、系统托盘图标或软件版本信息。": "Salvo no gateway atual e exibido publicamente na página de login. Não altera o instalador, os atalhos, o ícone da bandeja do sistema nem as informações de versão.", "保存并重启": "Salvar e reiniciar", "保存设置": "Salvar configurações", "保持当前路由范围,不跳到其他路由组。": "Mantém o escopo da rota atual e não pula para outro grupo de rotas.", "保活换行丢弃": "Descartar quebras keepalive", "保留原图和对话,由视觉模型直接回答本次请求。": "Preserve as imagens originais e a conversa para que um modelo de visão responda diretamente a esta solicitação.", "保留原图,选择视觉模型": "Preservar imagens e escolher um modelo de visão", "保留图片中的文字、代码、数字、布局与状态。识读失败就停止,不删图后继续回答。": "Preserve texto, código, números, disposição e estado nas imagens. Pare se a leitura falhar; nunca remova imagens para continuar respondendo.", "保留天数已刷新": "Dias de retenção atualizados", "保留旧版配置兼容,当前不会自动连铸。每次点击「开始验证」只取得一枚令牌,失败或取消后停止。": "Mantido para compatibilidade com configurações antigas. Não há geração automática em lote. Cada ação Iniciar verificação obtém um token e para em caso de falha ou cancelamento.", "保留草稿并读取最新设置": "Manter rascunho e recarregar configurações", "修改密码": "Alterar senha", "修改密码需要输入当前密码;修改成功后,其他设备 / 浏览器上的登录会立即失效,当前这条会话保留。": "Alterar a senha exige a senha atual. Após o sucesso, os acessos em outros dispositivos e navegadores são revogados imediatamente; esta sessão permanece ativa.", "值": "Valor", "值与默认值相同的行不占覆盖(存的是「改过的键」,不是全量配置);值留空保存表示这个头不发送,删除改过的行表示回落默认值。改完立即生效,不用重启。": "Linhas com valor igual ao padrão não contam como sobrescrita (o que é armazenado são as “chaves alteradas”, não a configuração completa); salvar com o valor vazio significa que esse cabeçalho não é enviado, e excluir uma linha alterada significa voltar ao valor padrão. As mudanças passam a valer na hora, sem reiniciar.", "值(留空 = 不发送)": "Valor (vazio = não enviar)", "停止并说明原因": "Parar e explicar o motivo", "像素": "px", "允许其他设备访问前,需要设置面板管理员账号与密码。注册完成后会继续开启流程并重启应用。": "Defina um usuário e uma senha de administrador do painel antes de permitir acesso de outros dispositivos. Após o registro, o acesso pela rede será ativado e o aplicativo será reiniciado.", "允许其他设备访问网关": "Permitir que outros dispositivos acessem o gateway", "允许局域网内的设备访问网关": "Permitir que dispositivos na LAN acessem o gateway", "允许无 Key 裸跑": "Permitir execução sem chaves", "允许浏览器里的页面跨来源调用网关(/v1/*)": "Permitir que páginas do navegador chamem o gateway de outra origem (/v1/*)", "允许的域名": "Hostnames permitidos", "先发送原图,明确拒图后补救": "Enviar originais primeiro; adaptar somente após rejeição explícita", "先把图片交给视觉模型读一遍,再让原模型结合读到的内容回答。": "O modelo de visão lê a imagem primeiro e o modelo original responde usando o que foi lido.", "全局配置": "Configuração global", "全部已配置": "Tudo já configurado", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 中,加密密钥单独保存在库外。跨机器备份请使用「整库备份 / 恢复」,不要只复制数据库。更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "Contas, logs, requisições, dados de depuração e configurações ficam no agent2api.db. As chaves ficam separadas. Para transferir dados entre máquinas, use Backup / restauração do banco inteiro, em vez de copiar só o banco. Para mudar o diretório, defina AGENT2API_PROXY_HOME e reinicie.", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 这一个 SQLite 数据库里。备份时只需拷贝这个文件;更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "Todos os dados (contas, logs de eventos, registros de requisições, payloads de debug e configurações) ficam em um único banco de dados SQLite, o agent2api.db, no diretório de configuração. Para fazer backup, basta copiar esse arquivo; para mudar o local de armazenamento, defina a variável de ambiente AGENT2API_PROXY_HOME e reinicie o programa.", "全部角色": "Todos os papéis", "全部角色沿用原有行为,包含思考内容和工具参数;指定角色时只改消息正文,未选角色及思考内容、工具参数保持原样。": "Todos os papéis mantém o comportamento existente, incluindo o raciocínio e os argumentos de ferramentas. Com papéis selecionados, apenas o conteúdo das mensagens é alterado; papéis não selecionados, raciocínio e argumentos de ferramentas permanecem intactos.", "共享视觉模型已变更,请重新确认并保存,避免把图片交给未经确认的模型。": "O modelo de visão compartilhado mudou. Confirme e salve novamente antes de enviar imagens ao novo modelo.", "共用设置:{providers}": "Configurações compartilhadas: {providers}", "关闭后不再提供网页管理面板,本机桌面程序仍可正常管理;已开启的 API 转发不受影响。": "O painel web deixará de ser servido. O gerenciamento pelo aplicativo desktop local continuará disponível, e o encaminhamento da API não será afetado.", "关闭后手动上传 / 下载也会被拒绝。": "Quando desativado, envio/download manual também é recusado.", "关闭后网关只监听 127.0.0.1,其他设备将无法直接连接,网页管理面板也会一并关闭。已配置的网关 Key 与账号不受影响。": "Ao desativar, o gateway escutará apenas em 127.0.0.1, impedindo conexões diretas de outros dispositivos. O painel web também será desativado. As chaves do gateway e contas existentes não serão afetadas.", "关闭后网关回到只监听 127.0.0.1,局域网内的设备将无法继续访问;已配置的网关 Key 与账号都不受影响。": "Após desativar, o gateway volta a escutar apenas 127.0.0.1 e os dispositivos da LAN deixam de conseguir acessá-lo; as chaves do gateway e as contas já configuradas não são afetadas.", "关闭后,管理界面不再从局域网提供,只有本机的桌面程序可以管理;已开启的 API 转发不受影响。": "Após desativar, a interface de administração deixa de ser servida na LAN e só o programa desktop local pode gerenciá-la; o encaminhamento de API já ativado não é afetado.", "关闭局域网访问": "Desativar acesso LAN", "关闭并重启": "Desativar e reiniciar", "关闭思考": "Desativar raciocínio", "关闭窗口即退出程序,后台转发随之中断": "Fechar a janela encerra o programa e o encaminhamento em segundo plano é interrompido", "关闭窗口时最小化到托盘": "Minimizar para a bandeja ao fechar a janela", "关闭窗口时程序不退出,转发继续在后台运行;退出请用托盘菜单": "Fechar a janela não encerra o programa; o encaminhamento continua rodando em segundo plano. Para sair, use o menu da bandeja", "关闭网络访问": "Desativar acesso pela rede", "兼容处理最长等待": "Espera máxima do processamento de compatibilidade", "兼容处理最长等待(秒)": "Espera máxima para adaptação (segundos)", "内容拦截降级": "Fallback de bloqueio de conteúdo", "内置识别、自定义规则与来源声明": "Identificação integrada, regras personalizadas e declarações de origem", "内置软件标识规则": "Regra integrada de identificação", "内置默认": "Padrões integrados", "内置默认提示词": "System prompt padrão integrado", "再输入一次新密码": "Digite a nova senha novamente", "凭据类请求头已脱敏。": "Os cabeçalhos de requisição com credenciais foram mascarados.", "凭证只保存在这台手机上,按服务器分别存放": "As credenciais ficam apenas neste celular, separadas por servidor", "出问题时把这一页截图,或点「复制全部信息」把文本贴进反馈,一般就能定位到大致原因。": "Quando algo der errado, tire um print desta página ou use \"Copiar todas as informações\" e cole o texto no relato — normalmente isso já basta para identificar a causa.", "分享图标在 Safari 底部工具栏中间": "O ícone de Compartilhar fica no meio da barra inferior do Safari", "分组名": "Nome do grupo", "分组名,例如「常用」": "Nome do grupo, ex.: \"Favoritos\"", "切换视觉模型": "Trocar para um modelo de visão", "切换视觉模型 · 视觉模型回答": "Trocar modelo · O modelo de visão responde", "切换视觉模型配置": "Configuração de troca de modelo de visão", "切换账号重试次数": "Retries trocando de conta", "刚刚从 models.dev 拉到的最新数据": "Dados recém-buscados do models.dev", "删除 {code}": "Remover {code}", "删除分组": "Excluir grupo", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "Excluir o grupo \"{name}\"? Os {n} menus vão para \"{target}\" — nada é perdido.", "删除匹配内容": "Excluir texto correspondente", "删除后不再接受这个分类的来源声明,历史记录保留原来的名称和用量。": "Declarações desta categoria não serão mais aceitas. Os registros históricos mantêm os nomes e o uso originais.", "删除后,新请求不再使用这条规则;历史记录保持不变。": "Novas requisições deixarão de usar esta regra. Os registros históricos permanecem inalterados.", "删除客户端分类": "Excluir categoria de cliente", "删除状态码 {code}": "Remover o status code {code}", "删除空分组「{name}」?": "Excluir o grupo vazio \"{name}\"?", "删除识别规则": "Excluir regra de identificação", "删除这个分组(组内菜单移到第一组)": "Excluir este grupo (os menus vão para o primeiro grupo)", "刷新": "Atualizar", "刷新失败:{message}": "Falha na atualização: {message}", "前台运行": "Execução em primeiro plano", "前缀": "Prefixo", "剥离上游审核黑名单指纹(改写请求体里的模板句与表头)": "Remover fingerprints da lista de bloqueio da revisão do upstream (reescrever frases de template e cabeçalhos no corpo da requisição)", "功能建议": "Sugestões de funcionalidades", "加入备选": "Adicionar como alternativo", "加密备份必填,旧 SQL 可留空": "Obrigatória para backup criptografado; opcional para SQL antigo", "包含": "Contém", "包含日志与调试报文": "Incluir logs e payloads de depuração", "包含:{items}": "Inclui: {items}", "匹配内容": "Padrão de correspondência", "匹配内容不能为空,且最多 {max} 个字符": "O padrão é obrigatório e deve ter no máximo {max} caracteres", "匹配内容不能为空,最长 256 个字符": "Informe um padrão com até 256 caracteres", "匹配原文含零宽空格,词表预览用 \\u{200b} 标出;编辑时保留该字符。": "O padrão contém um espaço de largura zero, exibido como \\u{200b} na prévia. Preserve esse caractere ao editar.", "匹配方式": "Tipo de correspondência", "区域(Region)": "Região (Region)", "华为云 OBS": "Huawei Cloud OBS", "单独指定视觉模型": "Escolher um modelo de visão separado", "单轮铸造上限": "Limite de cunhagem por rodada", "占用大小": "Tamanho ocupado", "历史未记录识别依据": "Evidência de identificação não registrada", "原来的「全局方式 + 模型单独配置」已按相同意思自动填成下面的模型名单,可以照用也可以重新调整;改动一处之后就会按新形式存下来。": "O seu antigo \"modo global + ajustes por modelo\" foi preenchido nas listas de modelos abaixo com o mesmo significado. Use como está ou ajuste; ao alterar qualquer coisa, passa a ser gravado no novo formato.", "原模型不能直接看图": "O modelo original não consegue ler imagens diretamente", "原模型根据识读内容回答": "O modelo original responde com base na descrição", "去反馈": "Enviar feedback", "去申请": "Enviar solicitação", "反馈与需求": "Feedback e solicitações", "发现缺货时一轮最多铸几个(连铸之间固定隔 500 毫秒)。默认 1 个:SDK 同一实例连铸容易互相干扰。调大补货更快,但单轮连铸越多越容易触发上游风控。可填 1–5。": "Quantos tokens uma mesma rodada pode cunhar ao detectar falta (intervalo fixo de 500 ms entre cunhagens seguidas). Padrão 1: cunhagens seguidas na mesma instância do SDK tendem a se interferir. Um valor maior repõe mais rápido, mas quanto mais cunhagens por rodada, mais fácil acionar o controle de risco do upstream. Aceita 1–5.", "取消勾选后只备份业务数据(账号、配置与余额记录),文件显著变小;事件日志、请求统计与调试报文不会进备份文件。": "Desmarcado, só os dados de negócio entram no backup (contas, configuração e registros de saldo) e o arquivo fica bem menor; logs de eventos, estatísticas de requisições e payloads de depuração ficam de fora.", "变更网页管理面板": "Alterar o painel de administração web", "只列单独配置过的家,其余沿用上面的全局配置": "Só lista os provedores com configuração individual; os demais seguem a configuração global acima", "只对「排队制」的上游生效:模型繁忙时上游不报错,只回一句「建议 N 秒后再来」,网关按建议时长等一会儿再发同一请求,等满次数仍排不上才把「排队中」作为错误返回(HTTP 503,文案会说明这不是登录态或额度问题)。等待发生在首个字节之前,吃的是「等待响应超时」那份预算 —— 两项设置一起决定一次请求最多卡多久;排队不会标记账号限额、也不会换账号(换谁都一样在排队)。保存后对下一个请求立即生效,不用重启。": "Só tem efeito em upstreams com “sistema de fila” : quando o modelo está ocupado, o upstream não retorna erro, apenas responde “recomendamos voltar em N segundos”; o gateway espera o tempo sugerido e reenvia a mesma requisição, e só quando o número de esperas se esgota a “fila” é devolvida como erro (HTTP 503, com um texto explicando que não é um problema de login nem de cota). A espera acontece antes do primeiro byte e consome o orçamento do “Timeout de espera de resposta” — as duas configurações, juntas, determinam quanto tempo no máximo uma requisição pode ficar travada; a fila não marca a conta como limitada nem troca de conta (todos estão igualmente na fila). Passa a valer para a próxima requisição após salvar, sem reiniciar.", "只影响读图那一步的思考深度;两块设置统一用这个选择。": "Afeta apenas a profundidade de raciocínio na etapa de leitura da imagem; os dois blocos compartilham esta escolha.", "只有已安装、启用并声明了设置项的提供商会出现在这里。可前往插件页检查安装与启用状态。": "Aparecem aqui apenas provedores com um plugin instalado e ativado que declare opções de configuração. Confira a instalação e a ativação na página Plugins.", "只沿用模型与思考等级,不借用视觉服务的内部 Key;仍受当前请求权限限制。": "Apenas o modelo e o nível de raciocínio são reutilizados, não a Key interna do serviço de visão. As permissões da solicitação atual continuam valendo.", "只清掉这个浏览器存的 Key,不影响网关": "Remove apenas a chave salva neste navegador; o gateway não é afetado", "只覆盖指定提供商的指定模型,其余跟随全局。": "Substitui apenas a configuração do modelo e provedor selecionados; os demais seguem a configuração global.", "可跨提供商多选;只处理这些模型看不了的图片。": "Seleção múltipla entre provedores; só são tratadas as imagens que esses modelos não conseguem ler.", "可跨提供商多选;这些模型的请求会整体改交视觉模型。": "Seleção múltipla entre provedores; as requisições desses modelos são entregues inteiras ao modelo de visão.", "可选。部分服务(如中国科技云数据胶囊)会按 User-Agent 校验凭据绑定的客户端类型,此时填写包含该类型名的字符串(例如 rclone/v1.67.0)。留空则维持默认。": "Opcional. Alguns serviços (como o CSTCloud Data Capsule) validam pelo User-Agent o tipo de cliente vinculado à credencial; nesse caso, informe uma string que contenha o nome do tipo (por exemplo, rclone/v1.67.0). Deixe em branco para manter o padrão.", "合计只累加当前筛选后可见的账号,筛选、搜索一改数字就跟着变。": "O total soma apenas as contas visíveis no filtro atual; mudar o filtro ou a busca altera o número.", "合计按整组统计(默认):不受筛选、搜索影响,被筛掉与已禁用的账号也计入。": "O total abrange o grupo inteiro (padrão): filtros e busca não o alteram, e contas filtradas ou desativadas ainda contam.", "同一会话、同一问题、相同权限范围内复用;追问新细节会重新识读。": "Reutilizado na mesma sessão, pergunta e escopo de permissão; perguntar novos detalhes força nova leitura.", "同一会话在 5 分钟内尽量跟住同一个账号;停了 5 分钟再发就算新会话。多数场景用它 —— 多轮对话少换号,也不至于把账号焊死。": "A mesma sessão tenta ficar na mesma conta por 5 minutos; pausar mais de 5 minutos conta como sessão nova. A escolha para a maioria dos casos — menos troca de conta em conversas de vários turnos, sem prender uma conta.", "同一会话在 6 小时内跟住同一个账号;适合一坐几个小时的长会话,上游的上下文缓存能吃到更多。": "A mesma sessão fica na mesma conta por até 6 horas; ideal para sessões longas de horas — o cache de contexto do upstream é aproveitado bem mais.", "同一提供商的同一模型不能重复配置": "O mesmo provedor e modelo não podem ter configurações duplicadas", "同一账号重试次数": "Retries na mesma conta", "同时开放网页管理面板": "Também abrir o painel de administração web", "同步密码": "Senha de sincronização", "名单最多 {max} 个状态码": "No máximo {max} status codes na lista", "后端没有返回版本信息": "O backend não retornou informações de versão", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "Contém o item fixo \"Configurações\", então o grupo não pode ser ocultado inteiro (os outros menus podem ser ocultados individualmente)", "启动与托盘": "Inicialização e bandeja", "启动时间": "Iniciado em", "启用云同步": "Ativar sincronização na nuvem", "启用图片兼容": "Ativar compatibilidade de imagens", "启用规则": "Ativar regra", "启用规则:{name}": "Ativar regra: {name}", "命中依据:{header} · {pattern}": "Evidência correspondente: {header} · {pattern}", "命中这些上游状态码的失败不在同一账号重发,直接换下一个账号继续试(换号占用「切换账号重试次数」,换满仍失败才把错误原样返回给客户端)。输入 100–599 的状态码后回车添加,点 × 或退格删除;默认 402(积分不足)。清空全部表示任何错误都照常重试。": "Falhas que correspondam a esses status codes do upstream não são reenviadas na mesma conta: o gateway passa direto para a próxima conta e continua tentando (a troca de conta consome uma das “Retries trocando de conta”; só quando elas se esgotam e a falha persiste é que o erro é retornado ao cliente como está). Digite um status code de 100–599 e pressione Enter para adicionar; clique em × ou use Backspace para remover. Padrão: 402 (pontos insuficientes). Limpar tudo significa que qualquer erro é tratado com o retry normal.", "品牌 Logo": "Logo da marca", "品牌设置": "Configurações da marca", "品牌设置已保存": "Configurações da marca salvas", "品牌预览": "Prévia da marca", "哪些模型用这种方式": "Quais modelos usam esta forma", "固定": "Fixo", "图标经 Magpie 引入,未单独记录 Lobe Icons 的图标版本;以上版本仅用于核对许可。": "Os ícones foram obtidos por meio do Magpie. A revisão dos ícones do Lobe Icons não foi registrada separadamente; a revisão acima foi usada apenas para verificar a licença.", "图片与相关对话将交给配置的视觉模型处理,可能增加等待时间和费用。请确认这些服务可以接收你的图片。": "As imagens e a conversa relevante serão enviadas aos modelos de visão configurados, o que pode aumentar a espera e o custo. Confirme que esses serviços podem receber suas imagens.", "图片兼容": "Compatibilidade de imagens", "图片兼容当前是关闭的:下面两块设置照样能改、会被保留,但不会对任何请求生效。": "A compatibilidade de imagens está desligada: os dois blocos abaixo continuam editáveis e são mantidos, mas nada disso vale para qualquer requisição.", "图片兼容设置已保存,仅对新请求生效。": "Configuração de compatibilidade de imagens salva. Ela se aplica apenas a novas solicitações.", "图片兼容设置读取失败": "Falha ao carregar a configuração de compatibilidade de imagens", "图片压缩": "Compressão de imagens", "图片最长边超过这个值就等比缩小(只缩不放)。默认 2048,可填 256–8192 —— 多数视觉模型在这个量级已经够用,调小更省流量、但细节会丢。": "Imagens cujo lado maior excede este valor são reduzidas proporcionalmente (nunca ampliadas). Padrão 2048, faixa 256–8192 — a maioria dos modelos de visão já fica bem nesse tamanho; um valor menor economiza tráfego, mas perde detalhes.", "图片能力未知时": "Quando o suporte a imagens for desconhecido", "图片过大、格式错误或下载失败不会被当作模型不支持图片。": "Imagem grande demais, formato inválido ou falha no download não contam como modelo sem suporte a imagens.", "在同一个账号上原地重发几次(不含首发;整条请求共用一份,用完后换来的账号只发一次就继续换)。可填 0–10,0 表示失败立即换号。": "Quantas vezes o gateway reenvia na própria conta (sem contar o primeiro envio; a requisição inteira compartilha um único saldo e, esgotado ele, cada conta obtida na troca envia uma vez e a troca segue). Valores de 0–10; 0 significa trocar de conta imediatamente após a falha.", "在这里直接编辑提示词正文:保存后以这份文本为准(优先于上面的提示词文件),清空则回到文件 / 内置默认。改一个字不必再去编辑器里开文件。": "Edite o texto do prompt diretamente aqui: após salvar, este texto passa a valer (com prioridade sobre o arquivo de prompt acima); se você limpar, volta para o arquivo / padrão integrado. Não é preciso abrir um arquivo em um editor só para mudar uma palavra.", "在途请求": "Requisições em andamento", "地址格式不对。填「IP 或域名:端口」,可带 http:// 或 https://,例如 192.168.1.23:3065": "Endereço inválido. Informe \"IP ou domínio:porta\", opcionalmente com http:// ou https:// — por exemplo 192.168.1.23:3065", "坚果云": "Jianguoyun (Nutstore)", "坚果云需使用「第三方应用密码」(账户信息 → 安全选项里生成),地址必须是 /dav/ 下的目录。": "O Jianguoyun exige uma senha de aplicativo (gerada em Informações da conta → Segurança) e o endereço deve apontar para um diretório em /dav/.", "填「IP 或域名:端口」。协议可写 http:// 或 https://,不写默认 http;http 不写端口默认 3065,https 默认 443。地址里的 /m、/v1 会自动去掉。": "Informe \"IP ou domínio:porta\". O protocolo pode ser http:// ou https:// (http é assumido se omitido). Sem porta, http usa 3065 e https usa 443. Qualquer /m ou /v1 no endereço é removido automaticamente.", "处理方式": "Modo de processamento", "处理示意": "Como funciona", "备份中…": "Fazendo backup…", "备份包含账号凭证、网关 Key、GitHub 令牌与云同步凭据的恢复密钥,整个文件受备份密码保护。请分开保管文件与密码;忘记密码无法恢复。": "O backup inclui chaves de recuperação de contas, keys do gateway, tokens do GitHub e credenciais de sincronização. O arquivo inteiro é protegido pela senha do backup. Guarde arquivo e senha separadamente; sem a senha, não é possível restaurar.", "备份密码": "Senha do backup", "备份密码不能超过 1024 字节": "A senha do backup não pode exceder 1024 bytes", "备份密码至少需要 12 位,建议使用较长且不重复的密码": "Use ao menos 12 caracteres; recomendamos uma senha longa e exclusiva", "备份整库": "Fazer backup do banco", "备份文件内含全部账号凭证、网关 API Key 与面板管理员凭据,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "O arquivo de backup contém todas as credenciais de contas, as chaves de API do gateway e as credenciais de administrador do painel — dá para logar com ele diretamente. Guarde com cuidado; não compartilhe nem envie para lugar público.", "备选模型": "Modelo alternativo", "复制全部信息": "Copiar todas as informações", "复制给客户端": "Copiar para o cliente", "复用相同图片的识读结果": "Reutilizar a leitura de imagens idênticas", "外观": "Aparência", "外观 · 接入 · 关于": "Aparência · Acesso · Sobre", "多个客户端标识冲突": "Identificadores de clientes conflitantes", "天": "dias", "天数": "Dias", "失败 {n} 个": "Falhas: {n}", "失败 {n} 个:{detail}": "Falhas: {n} — {detail}", "失败后最多再换几个账号试(填 N = 最多换 N 个,首发那个不算)。换到同一家名下另一个账号、或换到另一家,都各算一次;换满仍失败就返回错误。可填 0–10,0 表示失败立即报错。": "Quantas contas a mais tentar em caso de falha (preencha N = trocar por até N contas; a que fez o primeiro envio não conta). Trocar para outra conta do mesmo provedor ou para outro provedor conta igualmente como uma troca; se o limite se esgotar e a falha persistir, um erro é retornado. Valores de 0–10; 0 significa retornar o erro imediatamente após a falha.", "存储桶(Bucket)": "Bucket", "存储概况已刷新": "Visão geral do armazenamento atualizada", "安全": "Segurança", "安装到主屏幕": "Adicionar à tela inicial", "安装到桌面": "Instalar como app", "安装包形态": "Tipo de instalador", "完全相同": "Correspondência exata", "官方原文只有一句:声明自己是 ZCode。": "O texto oficial tem apenas uma frase: declara que ele é o ZCode.", "实际处理:": "O que acontece na prática: ", "客户端 system 原样出站。": "O system do cliente é enviado como está.", "客户端 system 原样出站(只靠指纹脱敏改写模板句)。": "O system do cliente é enviado como está (somente o mascaramento de fingerprint reescreve frases de template).", "客户端专用请求头": "Cabeçalho específico do cliente", "客户端名称": "Nome do cliente", "客户端名称不能为空,最长 80 个字符": "Informe um nome de cliente com até 80 caracteres", "客户端名称重复或与内置名称冲突": "Nome de cliente duplicado ou em conflito com um nome integrado", "客户端标识无效或重复": "Identificador de cliente inválido ou duplicado", "客户端识别": "Identificação de clientes", "客户端识别入口尚未就绪,请刷新页面后重试": "A identificação de clientes ainda não está pronta. Atualize a página e tente novamente.", "客户端识别设置读取失败": "Falha ao carregar configurações de identificação", "客户端(Claude Code / Codex 等 CLI)会在 system 提示词里注入几十句固定模板,上游按逐字匹配审核,命中就整单拦截(HTTP 400)。指纹脱敏能改写实测命中过的那几句,但换一个客户端版本就可能冒出新的。这里可以把 system 整段换成网关自己那份:①「透传」= 不动客户端 system(默认,行为与之前完全一致);②「替换」= 删掉客户端所有 system / developer 消息,换成网关的提示词(客户端项目规范随之消失);③「追加」= 在开头连续 system 块之后插入一条网关提示词,既有消息逐字不动(客户端规范与网关提示词并用)。那份提示词有两个来源:提示词文件(留空用内置默认),或直接在界面上编辑正文 —— 编辑过就以那份正文为准(优先于文件),清空则回到文件 / 内置默认。另外,透传 / 追加模式下撞了内容拦截(多半是指纹误报)时,网关会自动换一段最小中性提示词重试一次,并把「降级期」开到次日 00:00 —— 期间所有请求直接带中性提示词出门,不再先撞一次 400;这里能看见并提前解除它。上面几项是**默认值**:想给某个提供商单独配,用下面的「按提供商」加一行(带「网关自带」的家默认就列在那里)—— 不同的上游对这些内容的接受程度不一样。": "Os clientes (ferramentas CLI como Claude Code / Codex) injetam dezenas de frases de template fixas no system prompt, e o upstream as revisa por correspondência palavra por palavra: um acerto bloqueia a requisição inteira (HTTP 400). O mascaramento de fingerprint consegue reescrever as frases que foram bloqueadas nos testes, mas uma versão diferente do cliente pode trazer novas. Aqui é possível substituir o system inteiro pelo do próprio gateway: ① “Passthrough” = não mexe no system do cliente (padrão, comportamento idêntico ao anterior); ② “Substituir” = apaga todas as mensagens system / developer do cliente e coloca o prompt do gateway (as instruções de projeto do cliente desaparecem junto); ③ “Anexar” = insere um prompt do gateway depois dos blocos system consecutivos do início, deixando as mensagens existentes palavra por palavra intactas (as instruções do cliente e o prompt do gateway são usados juntos). Esse prompt tem duas origens: o arquivo de prompt (deixe vazio para usar o padrão integrado) ou a edição direta do texto na interface — se editado, vale o texto editado (com prioridade sobre o arquivo); se limpo, volta para o arquivo / padrão integrado. Além disso, nos modos Passthrough / Anexar, quando há bloqueio de conteúdo (geralmente um falso positivo de fingerprint), o gateway tenta de novo automaticamente com um system prompt neutro mínimo e estende o “período de fallback” até 00:00 do dia seguinte — nesse período, todas as requisições saem direto com o prompt neutro, sem bater primeiro em um 400; aqui você pode ver e encerrar o fallback antecipadamente. Os itens acima são **valores padrão**: para configurar um provedor específico, adicione uma linha em “Por provedor” abaixo (os provedores com “Interno do gateway” já aparecem lá por padrão) — cada upstream tolera esses conteúdos de forma diferente.", "家之间仍按优先级,只有同一家内部轮流用各账号 —— 想优先用某几家、又不愿把某一家的某个账号焊死时用它。": "Os provedores seguem a prioridade; só as contas dentro do mesmo provedor se alternam. Para preferir alguns provedores sem prender nenhuma conta específica.", "家内轮询": "Rodízio por provedor", "容器内更新": "Atualização no contêiner", "密码、文件或密钥校验失败时不会替换主库;替换阶段失败会自动尝试还原,实际结果以上方错误说明为准。": "Falhas na validação da senha, do arquivo ou das chaves não alteram o banco principal. Se a substituição falhar, a restauração será tentada automaticamente; o erro acima informa o resultado real.", "密码加密 · 包含恢复密钥": "Criptografado com senha · Chaves incluídas", "密码至少 8 位": "A senha deve ter pelo menos 8 caracteres", "对话里内嵌的 base64 大图(截图、照片)既撑大请求体,也拉高按像素折算的上游计费。开启后,网关在转发前把超过阈值的图等比缩到长边上限、重新存成 JPEG —— 只改发给上游的副本,请求日志里保存的仍是你发来的原图。同一张原图在多轮对话里重复出现时复用上一次的压缩结果,不会每轮重算。http 链接图片、GIF 动图、SVG 一律不动;压完反而更大的图也保留原图。只作用在对话场景,生图与图片编辑不受影响。默认开启;不想要的话把开关关掉即可。": "Imagens base64 grandes embutidas na conversa (capturas de tela, fotos) incham o corpo da requisição e elevam a cobrança do provedor, calculada por pixel. Quando ativado, o gateway reduz as imagens acima do limite até o tamanho máximo do lado maior e as recodifica em JPEG antes de encaminhar — apenas a cópia enviada ao provedor é alterada; o log de requisições continua guardando o original que você enviou. Quando a mesma imagem original reaparece ao longo dos turnos, o resultado comprimido anterior é reaproveitado em vez de recalculado. Imagens referenciadas por links http, GIFs animados e SVGs nunca são tocados; uma imagem que ficaria maior após a recodificação é mantida como está. Aplica-se apenas ao chat — geração e edição de imagens não são afetadas. Ativado por padrão; desative o interruptor se não quiser.", "导入前会把本机的 account.key 改名备份(account.key.bak-时间戳),不会直接删除。": "Antes de importar, o account.key local é renomeado para backup (account.key.bak-); ele nunca é excluído.", "导入完成:{summary}": "Importação concluída: {summary}", "导入密钥失败:{message}": "Falha ao importar a chave: {message}", "导入密钥并继续": "Importar chave e continuar", "导入账号": "Importar contas", "导出中…": "Exportando…", "导出会把全部账号与自定义提供商定义写入一个 JSON 文件,可以拷到另一台机器上导入后继续使用。导入采用合并策略:同提供商下按业务身份(UID / userId / apiKey 等)去重 —— 已存在的账号只更新凭证,保留本机原有的优先级顺序;新账号追加到转发顺序末尾,不会抢占当前正在使用的账号;自定义提供商定义按 id 合并,本机缺失时自动补建。": "A exportação grava todas as contas e definições de provedores personalizados em um arquivo JSON, que pode ser copiado para outra máquina e importado para continuar usando. A importação usa uma estratégia de mesclagem: dentro do mesmo provedor, as contas são deduplicadas pela identidade de negócio (UID / userId / apiKey etc.) — contas já existentes têm apenas as credenciais atualizadas e mantêm a ordem de prioridade original desta máquina; contas novas são anexadas ao final da ordem de encaminhamento e não tomam o lugar da conta em uso no momento; as definições de provedores personalizados são mescladas por id e criadas automaticamente quando ausentes nesta máquina.", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义": "O arquivo exportado contém credenciais como accessToken / refreshToken / apiKey e definições de provedores personalizados", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "O arquivo exportado contém credenciais como accessToken / refreshToken / apiKey e definições de provedores personalizados, e pode ser usado diretamente para login. Guarde-o com cuidado; não o compartilhe nem o envie para locais públicos.", "导出账号": "Exportar contas", "将数据库和恢复凭证所需的密钥一起保存为密码加密的 .a2ab 备份,可在 Windows、macOS 或 Linux 上恢复,无需手工复制密钥。恢复时整体替换账号、配置、日志与桌面设置,并使用目标机器的密钥重新加密凭证,不覆盖本机已有钥匙。可取消包含日志以减小文件;旧 .sql 备份仍可导入。恢复前自动保留安全备份,完成后需要重新登录管理面板。": "Salve o banco e as chaves de recuperação em um backup .a2ab criptografado por senha, restaurável no Windows, macOS ou Linux sem copiar chaves manualmente. A restauração substitui contas, configurações, logs e preferências do desktop, recriptografando as credenciais com as chaves do destino sem sobrescrevê-las. Exclua logs para reduzir o arquivo. A importação de .sql antigo continua disponível. Um backup de segurança é criado antes e é necessário entrar novamente no painel.", "尚未注册管理员。开启「网关 → 网络访问 → 允许其他设备访问网关」时会引导注册,也可以从登录页注册。": "Nenhum administrador foi registrado. Ativar Gateway → Acesso pela rede → Permitir que outros dispositivos acessem o gateway inicia o registro. Você também pode se registrar pela página de login.", "尚未注册管理员:管理接口不需要登录。开启「允许局域网访问」时会引导注册,也可以从登录页注册。": "Nenhum administrador registrado: a API de gerenciamento não exige login. Ativar \"Permitir acesso pela LAN\" conduz ao registro; você também pode registrar pela página de login.", "尚未配置视觉分析模型": "Nenhum modelo de análise visual configurado", "局域网开放后,管理接口要求登录。请设置管理员账号与密码,注册完成会直接继续开启流程。": "Com o acesso LAN ativado, a interface de administração exige login. Defina a conta de administrador e a senha; concluído o registro, o fluxo de ativação continua automaticamente.", "局域网访问": "Acesso LAN", "工具用法与环境说明那一大段。": "O bloco grande de uso das ferramentas e descrição do ambiente.", "已为「{label}」单独配置提示词": "Prompt configurado individualmente para “{label}”", "已作为独立应用运行": "App independente", "已使用本机密钥重新加密 {n} 项凭证,原有密钥未被覆盖。": "{n} credenciais recriptografadas com as chaves locais. As chaves existentes não foram sobrescritas.", "已保存 {count} / {limit} 条报文(超出后丢弃最旧的)。": "{count} / {limit} payloads salvos (os mais antigos são descartados quando o limite é excedido).", "已保存的值不符合当前插件规则,请修改或恢复默认值。": "O valor salvo não atende às regras atuais do plugin. Edite-o ou restaure o padrão.", "已保存,留空则不修改": "Salva; deixe em branco para manter", "已保存,留空沿用": "Salvo; deixe em branco para manter", "已关闭": "Desativado", "已关闭 models.dev 联网刷新": "Atualização online do models.dev desativada", "已关闭。{note}": "Desativado. {note}", "已关闭「{label}」的网关自带提示词:能否通过上游校验取决于上游当前口径": "System prompt interno do gateway de “{label}” desativado: se ele passa na validação do upstream depende dos critérios atuais do upstream", "已关闭会话图片压缩": "Compressão de imagens desativada", "已关闭出站指纹脱敏": "Mascaramento de fingerprint de saída desativado", "已关闭开发者角色兼容": "Compatibilidade com papel developer desativada", "已关闭第三方模型回答完自动折叠过程": "Recolhimento automático do trabalho de modelos de terceiros após a resposta desativado", "已关闭网关跨域访问": "CORS do gateway desativado", "已关闭:不额外补阶段标记,由客户端决定过程展示。": "Desativado: sem marcadores extras; o cliente controla a exibição do trabalho.", "已删除分组「{name}」": "Grupo \"{name}\" excluído", "已取消「{label}」的单独配置": "Configuração individual de “{label}” removida", "已取消安装": "Instalação cancelada", "已取消导入": "Importação cancelada", "已取消导出": "Exportação cancelada", "已取消恢复": "Restauração cancelada", "已启用 {count} 条规则,应用于{scope}。": "{count} regras ativadas, aplicadas a {scope}.", "已启用登录": "Login ativado", "已复制全部版本信息": "Todas as informações de versão foram copiadas", "已应用": "Aplicado", "已开启": "Ativado", "已开启:为正常完成的 Codex 回答补阶段标记。": "Ativado: adiciona marcadores de fase às respostas do Codex concluídas normalmente.", "已开启:其他设备把 API 地址指向 {url}{panel}。": "Ativado: em outros dispositivos, aponte o endereço da API para {url}{panel}.", "已开启:监听 0.0.0.0,允许其他设备访问。": "Ativado: escutando em 0.0.0.0 para permitir acesso de outros dispositivos.", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "Grupos padrão restaurados: Visão geral / Encaminhamento / Diagnóstico / Sistema", "已截断": "Truncado", "已指定出口": "Saída fixada", "已接管": "Assumido pelo gateway", "已改回内置默认提示词": "Revertido para o system prompt padrão integrado", "已新建分组「{name}」,点组头的 + 把菜单移进来": "Grupo \"{name}\" criado — use + no cabeçalho para mover menus", "已清掉「{label}」界面编辑的正文": "Texto editado na interface de “{label}” removido", "已清掉界面编辑的提示词(回落文件 / 内置默认)": "Prompt editado na interface removido (volta para o arquivo / padrão integrado)", "已清除本机保存的 API Key": "A API key salva neste navegador foi removida", "已生效": "Em vigor", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。": "Mudou automaticamente para um prompt neutro mínimo (bateu num bloqueio de conteúdo do upstream — na maioria das vezes um falso positivo da impressão digital do system); levanta sozinho em {until}.", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "Mudança automática para o system prompt neutro mínimo (houve bloqueio de conteúdo no upstream, provavelmente um falso positivo de fingerprint do system); o fallback será encerrado automaticamente em {until}. Durante esse período, o prompt próprio deste modo não é enviado; depois de corrigir o prompt, é possível encerrar o fallback imediatamente.", "已自定义": "Personalizado", "已运行": "Tempo de atividade", "已退出登录": "Sessão encerrada", "已隐藏": "Oculto", "巴西葡萄牙语": "Português (Brasil)", "希望接入新的提供商或模型": "Quero integrar um novo provedor ou modelo", "库中 schema": "Schema no banco", "库主文件的大小(不含运行期间的 WAL 临时文件,退出时已自动并回)。": "Tamanho do arquivo principal do banco (não inclui os arquivos temporários WAL em tempo de execução, que já são incorporados automaticamente ao sair).", "库存目标": "Meta de estoque", "应用提供商": "Aplicar aos provedores", "应用版本:{version}": "Versão do app: {version}", "应用状态": "Status do app", "应用窗口": "Janela do aplicativo", "建立上游 TCP/TLS 连接或代理隧道的最大等待时间(秒),默认 30 秒,范围 1~3600。": "Tempo máximo de espera para estabelecer a conexão TCP/TLS ou o túnel de proxy com o upstream (segundos), padrão 30 segundos, faixa 1~3600.", "开发构建": "Build de desenvolvimento", "开发者角色兼容": "Compatibilidade de papel developer", "开发者角色兼容设置已刷新": "Configuração de compatibilidade com papel developer atualizada", "开启前需要注册面板管理员,已注册会跳过此步骤。管理接口需要管理员会话或网关 Key;API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。": "É necessário registrar um administrador do painel antes de ativar. Se já houver um, esta etapa será ignorada. A API de gerenciamento exige uma sessão de administrador ou chave do gateway. Chamadas à API exigem uma chave do gateway ativa; se não houver nenhuma, uma chave padrão será criada automaticamente.", "开启后新发生的请求才会被记录(已经过去的请求补不回来)。报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "Só requisições que acontecerem depois de ligar são registradas (as passadas não podem ser recuperadas). Os payloads ficam no banco de dados local e só os 500 mais recentes são mantidos (os mais antigos são descartados); a contagem aparece em \"Dados → Armazenamento de dados\", à esquerda, como \"Payloads de depuração\".", "开启后新发生的请求才会被记录(已经过去的请求补不回来),请求日志的「预览对话」也随之开始保存原始正文。上游报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "Com isto ativado, apenas requisições novas são registradas (as requisições passadas não podem ser recuperadas), e a “Prévia da conversa” nos logs de requisições também passa a salvar os corpos originais. Os payloads de upstream ficam no banco de dados local, mantendo somente os 500 mais recentes (os mais antigos são descartados quando o limite é excedido); a contagem aparece em “Payloads de debug”, na seção “Dados → Armazenamento de dados”, à esquerda.", "开启后监听所有 IPv4 网卡(0.0.0.0),并不局限于局域网,也不会自动开放到公网;实际访问范围取决于网络与防火墙设置。修改后需要重启应用。": "Ao ativar, o gateway escuta em todas as interfaces IPv4 (0.0.0.0), não apenas na rede local, mas não é exposto automaticamente à internet. O acesso real depende das configurações de rede e firewall. Alterações exigem reiniciar o aplicativo.", "开启后网关将监听所有 IPv4 网卡(0.0.0.0),访问范围不再限于本机,也不局限于局域网。是否能从公网访问取决于网络与防火墙设置。": "O gateway passará a escutar em todas as interfaces IPv4 (0.0.0.0). O acesso não ficará restrito a esta máquina nem à rede local. O acesso pela internet depende das configurações de rede e firewall.", "开启后网关将监听所有网卡,同一局域网内的设备即可把 API 地址指向本机 IP 一起使用;管理接口从此要求管理员会话或网关 Key,转发接口在没有一把启用的 Key 时也会拒绝服务(届时会自动创建一把名为「默认」的 Key)。": "Após ativar, o gateway passa a escutar todas as interfaces de rede e dispositivos na mesma LAN podem usar a API apontando o endereço para o IP desta máquina; a interface de administração passa a exigir sessão de administrador ou chave do gateway, e a interface de encaminhamento também recusa atendimento enquanto não houver nenhuma chave ativa (nesse caso, uma chave chamada “Padrão” é criada automaticamente).", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 套餐池(Start Plan)」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "Quando ativado, fechar a janela não apenas a esconde — toda a janela da interface é destruída: os seis processos residentes do WebView2 (cerca de 200 MB de memória) saem, enquanto o encaminhamento do gateway, os check-ins agendados e as consultas de saldo continuam no processo de segundo plano, sem impacto; clique no ícone da bandeja para reabrir a interface quando necessário (o arranque a frio do WebView leva cerca de 1 segundo). Nota: enquanto a interface estiver destruída, os tokens de CAPTCHA do canal \"Pool de planos (Start Plan)\" do ZCode são cunhados pela interface e não podem ser repostos — solicitações nesse canal caem no registro como 503 (com o motivo), e reabrir a interface restaura a cunhagem automaticamente. Este interruptor só importa quando \"Minimizar para a bandeja ao fechar\" estiver ativado; minimizar a janela não é afetado.", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 活动套餐」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "Com isto ativado, fechar a janela não é apenas ocultá-la: a janela da interface é destruída por completo — os seis processos residentes do WebView2 por baixo dela (cerca de 200MB de memória) são encerrados junto, enquanto o encaminhamento do gateway, o check-in agendado e a consulta de saldo continuam nos processos em segundo plano, sem serem afetados; quando precisar da interface, clique no ícone da bandeja para reabri-la (a inicialização a frio do WebView leva cerca de 1 segundo). Atenção: enquanto a interface está destruída, os tokens de captcha do canal do Plano de evento da ZCode são forjados pela interface e não podem ser repostos — requisições por esse canal caem nos logs de requisições com status 503 (com o motivo registrado) e se recuperam automaticamente ao reabrir a interface. Este switch só faz sentido quando “Minimizar para a bandeja ao fechar a janela” está ativado; minimizar a janela não é afetado.", "开启后,关闭窗口会销毁界面并释放 WebView 进程,网关转发、定时签到、余额查询仍在后台继续。ZCode 模型请求免验证时不受影响;上游要求人机验证时,需要重新打开界面,在账号的「套餐明细」中主动完成验证。此开关只在「关闭窗口时最小化到托盘」开启时有意义。": "Quando habilitado, fechar a janela libera a interface e os processos WebView. Encaminhamento, check-ins agendados e consultas de saldo continuam em segundo plano. Solicitações ZCode sem verificação não são afetadas. Quando exigida, reabra a interface e conclua a verificação nos detalhes do plano da conta. Aplica-se somente quando fechar minimiza o aplicativo para a bandeja.", "开启后,新发生的请求会保存上游调试报文与下游正文,历史请求无法补录。上游调试报文只保留最近 500 条;两侧条数可在「数据 → 数据存储」查看。关闭开关不会删除已保存的报文,可在请求日志中选择「仅清空报文原文」一起清理。": "Após ativar, novas requisições salvam os payloads de depuração do upstream e os corpos do downstream; requisições anteriores não podem ser recuperadas. Apenas os 500 payloads mais recentes do upstream são mantidos. As contagens dos dois lados aparecem em Dados → Armazenamento de dados. Desativar não exclui os payloads salvos; selecione Limpar apenas os payloads nos logs de requisições para limpar os dois lados juntos.", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。": "Com isto ativado, a página de login conclui a verificação automaticamente em segundo plano no navegador (imperceptível para pessoas reais), enquanto cada tentativa de script precisa resolver um desafio — o custo de força bruta e de registro em massa sobe bastante. Afeta apenas o login / registro do painel, nada a ver com a API Key dos clientes de API.", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。桌面端与网页端各自独立:桌面端主要服务本机与局域网,网页端(Docker / 服务端)直接暴露在网络上的登录页风险更高,建议保持开启。": "Quando ativado, a página de login resolve o desafio em segundo plano (invisível para pessoas), enquanto cada tentativa automatizada precisa calcular um antes — força bruta e registro indevido ficam bem mais caros. Afeta apenas o login / registro do painel, não as API keys dos clientes. Desktop e web são independentes: o desktop atende principalmente esta máquina e a LAN, enquanto o web (Docker / servidor) fica exposto à rede e se beneficia mais de permanecer ativado.", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "Quando ligado, o gateway salva localmente, por inteiro, **a requisição enviada ao upstream** (cabeçalhos + corpo) e **a resposta do upstream** (código de status + cabeçalhos + corpo) de cada encaminhamento, para a visualização em \"Detalhes\" na página de logs de requisições. Campos de credenciais nos cabeçalhos — Authorization, Cookie, API Key e afins — são sempre trocados por [redacted] e nunca tocam o disco em texto puro; corpos de requisição e resposta ficam como estão (podem conter suas conversas). Só os 500 payloads mais recentes ficam guardados; os mais antigos são descartados. É um interruptor temporário para diagnóstico — mantenha desligado quando não precisar.", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看;请求日志详情的「预览对话」也依赖本开关 —— 它保存的是客户端发来的请求体与网关下发的响应体(两侧各截断到 128 KiB),不开这个开关时预览对话没有数据可看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。上游报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "Com isto ativado, o gateway salva localmente, na íntegra, **as requisições enviadas ao upstream** (cabeçalhos + corpo) e **as respostas retornadas pelo upstream** (status code + cabeçalhos + corpo) de cada encaminhamento, para consulta em “Detalhes” na página de logs de requisições; a “Prévia da conversa” nos detalhes da requisição também depende deste switch — ela salva o corpo da requisição do cliente e o corpo da resposta do gateway (cada um truncado em 128 KiB), e com o switch desativado não há dados para pré-visualizar. Campos de credenciais nos cabeçalhos, como Authorization, Cookie e API Key, são sempre substituídos por [redacted] e nunca gravados em texto puro; corpos de requisição e de resposta são salvos como estão (podem conter o conteúdo das suas conversas). Só os 500 payloads de upstream mais recentes são mantidos; os mais antigos são descartados quando o limite é excedido. É um switch temporário para diagnóstico; recomenda-se desativá-lo quando não for necessário.", "开启后,能连接到网关的设备可通过浏览器访问网页管理面板,需使用管理员账号登录。访问范围与网关相同,并不局限于局域网。": "Dispositivos que conseguem alcançar o gateway poderão abrir o painel web no navegador e entrar com uma conta de administrador. O alcance de acesso é o mesmo do gateway e não se limita à rede local.", "开启后,调用方可以用专用请求头声明已登记的客户端名称。这不是身份认证,只用于日志和统计,不会获得额外权限。": "Quando ativado, o solicitante pode declarar um cliente registrado pelo cabeçalho dedicado. Isso não autentica a identidade: afeta apenas logs e estatísticas, sem conceder permissões adicionais.", "开启局域网访问": "Ativar acesso LAN", "开启来源声明": "Ativar declarações de origem", "开启网络访问": "Ativar acesso pela rede", "开放后,局域网内其他设备的浏览器打开本机 IP 即可进入管理面板(需管理员账号登录)。": "Após abrir, o navegador de outros dispositivos na LAN pode acessar o painel de administração abrindo o IP desta máquina (é preciso entrar com a conta de administrador).", "开机自动启动": "Iniciar com o sistema", "开源许可": "Licença de código aberto", "开(最多 {n} 轮)": "Ligado (até {n} rodadas)", "归属客户端": "Cliente atribuído", "当前三段都是官方原文。": "No momento, os três blocos estão com o texto oficial.", "当前不可用": "Indisponível no momento", "当前后端不支持词表编辑与提供商范围,请更新后端后重试。": "Este backend não suporta edição de regras nem escopo de provedores. Atualize o backend e tente novamente.", "当前固定为浅色模式,不随系统变化。": "No momento, fixo no modo claro, sem seguir o sistema.", "当前固定为深色模式,不随系统变化。": "No momento, fixo no modo escuro, sem seguir o sistema.", "当前密码": "Senha atual", "当前已改过:{edited}。": "Editados no momento: {edited}.", "当前形态": "Forma de execução", "当前按 100% 显示(默认比例)。": "Exibindo no momento a 100% (proporção padrão).", "当前按 k / M 缩写显示(如 1.20M / 8.4k)。": "Exibindo no momento com abreviações k / M (ex.: 1.20M / 8.4k).", "当前按 {n}% 显示。": "Exibindo no momento a {n}%.", "当前按「万 / 亿」式本地量级词显示(如 1.2亿 / 8400万)。": "Exibindo no momento com magnitudes locais no estilo k / M (ex.: 120M / 84M).", "当前是透传模式:存下来也不会发出,切成「替换 / 追加」之后才生效。": "No momento, o modo é Passthrough: mesmo salvando, o texto não é enviado; só passa a valer após mudar para “Substituir / Anexar”.", "当前显示为「1.20M / 8.4k / 1.2B」这类英文缩写。": "Exibindo no momento com abreviações k / M / B (ex.: 1.20M / 8.4k / 1.2B).", "当前显示为「1.2亿 / 8400万」这类中文量级。": "Atualmente exibido como magnitudes chinesas no estilo \"1.2亿 / 8400万\".", "当前样本结果:{name}": "Resultado da amostra atual: {name}", "当前正在使用": "Em uso", "当前浏览器以管理员身份登录着本面板。「退出登录」会撤销这台设备的登录会话(30 天内的自动续期一并失效),需要重新输入账号密码;其他已登录的设备不受影响。": "Este navegador está conectado a este painel como administrador. “Sair” revoga a sessão de login deste dispositivo (a renovação automática dentro de 30 dias também é invalidada) e será preciso digitar usuário e senha novamente; outros dispositivos já conectados não são afetados.", "当前版本不支持品牌设置": "Esta versão não oferece suporte às configurações da marca", "当前环境不支持局域网访问设置": "O ambiente atual não oferece suporte à configuração de acesso LAN", "当前环境不支持整库备份": "O backup do banco completo não está disponível neste ambiente", "当前环境不支持整库备份(仅桌面端可用)": "Backup do banco completo não está disponível aqui (somente desktop)", "当前环境不支持整库恢复": "A restauração do banco completo não está disponível neste ambiente", "当前环境不支持整库恢复(仅桌面端可用)": "Restauração do banco completo não está disponível aqui (somente desktop)", "当前环境不支持网络访问设置": "As configurações de acesso pela rede não estão disponíveis neste ambiente", "当前环境不支持读取版本信息(桥接方法缺失)": "Este ambiente não consegue ler as informações de versão (método de ponte ausente)", "当前生效值:{value}": "Valor em uso: {value}", "当前生效的正文来自{source}{file}。保存后这一份会盖过提示词文件与内置默认{note}。": "O texto em vigor no momento vem de {source}{file}. Após salvar, ele prevalece sobre o arquivo de prompt e o padrão integrado{note}.", "当前界面": "Interface atual", "当前管理员:{name}": "Conectado como: {name}", "当前设置已保存": "As configurações atuais estão salvas", "当前跟随操作系统的深浅色设置,系统切换时界面会自动跟上。": "No momento, seguindo o tema claro / escuro do sistema operacional; quando o sistema mudar, a interface acompanha automaticamente.", "当前路由内的可用视觉模型": "Modelos de visão disponíveis na rota atual", "待迁移旧数据": "Dados antigos pendentes de migração", "待配置": "Não configurado", "忘记密码时无法在界面里找回:需要停掉程序后,从数据库删除管理员记录(kv 表的 panelAdmin 键),重启后按首次使用重新注册。具体命令与各形态的库文件路径见 docs 目录下的「重置管理员」文档。": "Se você esquecer a senha, ela não pode ser recuperada pela interface: pare o programa, exclua o registro do administrador no banco (a chave panelAdmin na tabela kv), reinicie e registre novamente como no primeiro uso. Os comandos e o caminho do banco em cada forma de instalação estão no documento \"Redefinir administrador\" em docs.", "思考等级、图片能力未知、等待上限": "Nível de raciocínio, capacidade de imagem desconhecida, limite de espera", "恢复中…": "Restaurando…", "恢复失败:{message}": "Falha na restauração: {message}", "恢复官方原文": "Restaurar o texto oficial", "恢复插件默认值": "Restaurar padrão do plugin", "恢复整库": "Restaurar o banco", "恢复整库备份": "Restaurar backup completo", "恢复默认": "Restaurar padrões", "恢复默认 Logo": "Restaurar logo padrão", "恢复默认侧边栏": "Restaurar barra lateral padrão", "恢复默认品牌": "Restaurar marca padrão", "恢复默认词表": "Restaurar regras padrão", "想回到原来那份,把这里清空再保存即可(不会删掉你配的文件路径)。": "Para voltar ao texto anterior, basta limpar este campo e salvar (o caminho de arquivo que você configurou não é apagado).", "想要的新功能或改进想法": "Funcionalidades novas ou melhorias que você gostaria de ver", "所有未单独配置的提供商都用这一份": "Todos os provedores sem configuração individual usam esta", "所有菜单都已在这一组": "Todos os menus já estão neste grupo", "手机端可管理所连接网关的账号、签到与插件,并使用提供商声明的动态登录入口;其余既有添加入口、编辑凭证和改写客户端配置仍需桌面面板。": "O aplicativo móvel gerencia contas, check-in e plugins no gateway conectado e permite login pelos métodos dinâmicos declarados pelos provedores. Outras entradas existentes para adicionar contas, editar credenciais e alterar configurações de clientes ainda exigem o painel desktop.", "托管网页界面": "Serve a interface web", "把地址里的 your-server 与 USERNAME 换成你自己的;目录不存在时会自动创建。": "Substitua your-server e USERNAME na URL pelos seus dados; o diretório é criado automaticamente se não existir.", "把整份数据库(账号、网关配置、事件日志、请求统计、调试报文与桌面设置)导出成一个 SQL 文件,恢复时整体替换本机全部数据 —— 与上面「账号导入 / 导出」的逐条合并是两种语义:恢复会连配置、日志与当前启用状态一起换成备份那台机器的状态。导出默认包含日志与调试报文(文件可能很大),不需要时可以取消勾选只备业务数据。恢复前会自动把当前数据备份到配置目录的 backups/ 下,恢复后需要重新登录管理面板。": "Exporta o banco inteiro (contas, configuração do gateway, logs de eventos, estatísticas de requisições, payloads de depuração e configurações do desktop) em um arquivo SQL; a restauração substitui todos os dados locais por inteiro. É uma semântica diferente do \"Importar / exportar contas\" acima, que mescla item a item: restaurar troca configuração, logs e estados de ativação para o que a máquina do backup tinha. A exportação inclui logs e payloads de depuração por padrão (o arquivo pode ser grande); desmarque para guardar só os dados de negócio. Antes de restaurar, os dados atuais são automaticamente backupados em backups/ no diretório de configuração, e você precisará logar no painel de novo depois.", "把整次请求交给视觉模型,由它直接回答,不再回到原模型。": "A requisição inteira vai para o modelo de visão, que responde direto no lugar do modelo original.", "把菜单移入 {name}": "Mover um menu para {name}", "把菜单移入「{name}」": "Mover um menu para \"{name}\"", "把账号、网关配置、自定义提供商、Agent 配置、代理池 / 订阅、签到与余额记录同步到 WebDAV 或 S3 兼容存储,换台机器后一键取回。事件日志、请求明细、调试报文与面板登录态不在同步范围内(它们是本机的运行痕迹)。上传的账号凭证仍是加密形态,解密用的账号密钥由「同步密码」单独加密后一并上传 —— 同步密码不会保存到云端,换机下载时需要重新输入。": "Sincronize contas, configuração do gateway, provedores personalizados, perfis do Agent, pool de proxies / assinaturas e registros de check-in e saldo com WebDAV ou armazenamento compatível com S3, e recupere tudo em outra máquina com um clique. Logs de eventos, detalhes de requisições, pacotes de depuração e o estado de login do painel ficam de fora (são vestígios de execução desta máquina). As credenciais das contas enviadas permanecem criptografadas; a chave que as descriptografa é criptografada com a senha de sincronização e enviada junto — a senha nunca é armazenada na nuvem, então você precisa digitá-la novamente ao restaurar em outra máquina.", "把路径里的主目录显示成 ~,截图分享时不暴露用户名": "Mostra o diretório pessoal nos caminhos como ~, para que prints não revelem seu nome de usuário", "把路径里的主目录(如 C:\\Users\\你的用户名)显示成 ~,截图分享时不暴露用户名。只影响本页显示与复制,不改任何文件。": "Mostra o diretório pessoal nos caminhos (ex.: C:\\Users\\seu-nome) como ~, para que prints não revelem seu nome de usuário. Afeta apenas esta página e o texto copiado; nenhum arquivo é alterado.", "报表天数": "Dias do relatório", "报表页的热力图与按天趋势,默认 99999 天(近似全量保留),可填 1–99999 天。": "O mapa de calor e as tendências diárias da página de relatórios. Padrão de 99999 dias (retenção praticamente total); aceita de 1 a 99999 dias.", "拖动分组 {name}": "Arrastar grupo {name}", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "Arraste o ⠿ para reordenar (menus podem mudar de grupo); use os interruptores para mostrar ou ocultar; clique no nome do grupo para renomear; o + no cabeçalho move outro menu para o grupo; o botão de olho oculta o grupo inteiro. As mudanças valem na hora e ficam salvas — a barra lateral à esquerda é o resultado. Teclado: foque a alça e pressione Alt+↑ / ↓.", "拖动菜单 {name}": "Arrastar menu {name}", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "Arraste para reordenar os grupos (Alt+↑ / ↓ também funciona)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "Arraste para reordenar, inclusive entre grupos (Alt+↑ / ↓ também funciona)", "指定备选仍受当前请求权限和路由范围限制,路由组请求不会跳到组外。不会转为辅助识图继续。": "As alternativas continuam sujeitas às permissões e à rota atuais. Solicitações de um grupo nunca saem dele. Este modo nunca muda para leitura assistida de imagens.", "指定提供商": "Provedores selecionados", "指定角色": "Papéis selecionados", "指定错误码直接换号": "Troca de conta direta em códigos de erro especificados", "指纹脱敏": "Sanitização de fingerprint", "指纹脱敏会在转发前按词表顺序改写请求消息中的文本,包括对话内容、思考内容和工具调用参数。默认词表包含客户端模板句与计费表头的精确替换、正则删除规则,可以新增、编辑、删除、启停和调整顺序;替换内容留空表示删除匹配内容。默认应用全部提供商,也可指定多家。改动只作用于发给上游的副本,响应内容不变。编辑后点击「保存设置」,下一次请求生效;清空词表表示不做任何指纹改写,恢复默认只重置词表。": "Antes de encaminhar, o mascaramento aplica as regras na ordem da lista ao texto das mensagens, incluindo conversa, raciocínio e argumentos de chamadas de ferramentas. As regras padrão incluem substituições exatas e exclusões por expressão regular de modelos do cliente e cabeçalhos de cobrança. Você pode adicionar, editar, excluir, ativar, desativar e reordenar regras; uma substituição vazia exclui o texto correspondente. Por padrão, aplica-se a todos os provedores, ou você pode selecionar vários. Apenas a cópia enviada ao upstream é alterada; as respostas não mudam. Clique em Salvar configurações para aplicar à próxima requisição. Uma lista vazia não altera fingerprints, e restaurar o padrão redefine apenas as regras.", "指纹脱敏设置仅本次运行生效,写入数据库失败,请检查配置目录": "As configurações valem somente nesta execução. A gravação no banco falhou; verifique o diretório de configuração.", "指纹脱敏设置已刷新": "Configurações de mascaramento de fingerprint atualizadas", "按下面两块设置处理图片;关闭后设置全部保留。": "As imagens são tratadas pelos dois blocos abaixo; desligar mantém todas as configurações.", "按列表自上而下匹配,位于来源声明之后、内置规则之前;可用于给难认的标识钉规则。": "Correspondência de cima para baixo na ordem da lista, após as declarações de origem e antes das regras internas; use para fixar clientes difíceis de reconhecer.", "按原文精确匹配,区分大小写;不会自动去掉首尾空白。": "Corresponde ao texto exato, diferenciando maiúsculas e minúsculas. Os espaços iniciais e finais são preservados.", "按天聚合保留天数": "Retenção dos agregados diários (dias)", "按指定备选顺序尝试": "Tentar alternativas na ordem definida", "按提供商查看和调整专属选项": "Veja e ajuste opções específicas de cada provedor", "按提供商筛选设置": "Filtrar configurações por provedor", "按提供商管理专属选项,作用于当前网关中该提供商的所有账号。": "Gerencie opções específicas por provedor. As alterações se aplicam a todas as contas desse provedor no gateway atual.", "按提供商配置": "Por provedor", "按每条请求的软件标识识别客户端,不依赖 API Key。规则修改只影响新请求,内置规则随软件更新,自定义规则参与备份与云同步。": "Identifique cada requisição pelos identificadores do software, sem depender de API Key. Alterações afetam apenas novas requisições. Regras integradas acompanham o app; regras personalizadas entram no backup e na sincronização.", "换一台服务器": "Trocar de servidor", "排队等待": "Espera na fila", "排队等待次数": "Tentativas de espera na fila", "排队等待秒数": "Segundos de espera na fila", "排队等待设置已刷新": "Configurações de espera na fila atualizadas", "接入": "Acesso", "接受调用方来源声明": "Aceitar declarações de origem do solicitante", "接管回答的模型": "Modelo que assume a resposta", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "Define quais menus a barra lateral mostra, em que ordem e como são agrupados. Ocultar afeta apenas a navegação — não revoga acesso, e páginas ocultas continuam abrindo pela URL.", "控制报表与请求日志里 Token 读数的写法:开启后按「万 / 亿」式的本地量级词显示(简体为万 / 亿,繁体为萬 / 億,日文为万 / 億,韩文为만 / 억),关闭则用 k / M 缩写(与上游文档、接口字段的写法一致)。英文 / 葡语的本地量级词就是 k / M,这项对它们没有区别。只影响显示口径,不改变任何统计与存储的数值。": "Controla como o Token é exibido no relatório e nos logs de requisições: quando ativado, exibe com magnitudes locais no estilo “k / M” (chinês simplificado: 万 / 亿; chinês tradicional: 萬 / 億; japonês: 万 / 億; coreano: 만 / 억); quando desativado, usa abreviações k / M (igual à forma usada na documentação e nos campos da API do upstream). Para inglês e português, as magnitudes locais são exatamente k / M, então esta opção não faz diferença para eles. Afeta apenas a forma de exibição; não altera nenhum valor de estatística ou de armazenamento.", "控制报表与请求日志里 Token 读数的写法:开启后按中文量级显示(1.2亿 / 8400万),关闭则用 k / M / B 缩写(与上游文档、接口字段的写法一致)。这只影响显示口径,不改变任何统计与存储的数值。": "Controla como as contagens de token aparecem nos relatórios e no log de requisições: ativado mostra magnitudes chinesas (1.2亿 / 8400万), desativado usa abreviações k / M / B (iguais às dos documentos e campos de API do upstream). Isso altera apenas a exibição; nenhum número estatístico ou armazenado muda.", "控制界面的深浅色,与左侧边栏底部的三个主题按钮是同一个设置(改哪一处,另一处立刻跟上)。「跟随系统」会随操作系统当前的浅色 / 深色自动切换,并在系统主题变化时即时跟上;选「浅色」或「深色」则把界面固定在该模式,不再随系统变化。窗口标题栏的深浅色会一并同步,不会出现深色界面配一条浅色标题栏的情况。": "Controla o tema claro / escuro da interface; é a mesma configuração dos três botões de tema no rodapé da barra lateral esquerda (mudar em um lugar reflete imediatamente no outro). “Sistema” acompanha automaticamente o tema claro / escuro atual do sistema operacional e reage na hora a mudanças no tema do sistema; escolher “Claro” ou “Escuro” fixa a interface nesse modo, sem seguir o sistema. A barra de título da janela acompanha junto, então não ocorre de a interface ficar escura com uma barra de título clara.", "提供商与模型": "Provedor e modelo", "提供商专属设置": "Configurações específicas do provedor", "提供商当前不可用,未保存的修改已保留;恢复插件后可继续编辑。": "O provedor está indisponível. As edições não salvas foram mantidas; restaure o plugin para continuar editando.", "提供商设置已保存": "Configurações do provedor salvas", "提供商设置返回格式无效,请刷新后重试": "A resposta das configurações do provedor é inválida. Atualize e tente novamente.", "提建议": "Enviar sugestão", "提示词文件": "Arquivo de prompt", "提示词文件已更新": "Arquivo de prompt atualizado", "提示词正文": "Texto do prompt", "提示词正文已更新": "Texto do prompt atualizado", "插件或设置已变化,请放弃修改并刷新后重新编辑。": "O plugin ou as configurações mudaram. Descarte suas alterações e atualize antes de editar novamente.", "操作系统": "Sistema operacional", "支持 .a2ab 加密备份和旧 .sql 文件;旧 SQL 不包含恢复密钥,跨机器导入仍需原机密钥。": "Aceita backups .a2ab criptografados e .sql antigos. O SQL antigo não inclui chaves de recuperação; a importação em outra máquina ainda precisa das chaves originais.", "支持 PNG、JPG、WebP,最大 2 MiB、4096 × 4096 像素;自动缩小至 512 像素以内,建议使用正方形图片。": "Aceita PNG, JPG e WebP de até 2 MiB e 4096 × 4096 pixels. As imagens são reduzidas para até 512 pixels. Recomendamos imagens quadradas.", "改动仍保存在本机,修复网络或凭据后下一次改动会自动重试,也可以手动点「上传到云端」。": "Suas alterações continuam salvas localmente. Depois de corrigir a rede ou as credenciais, a próxima alteração tenta de novo automaticamente, ou clique em \"Enviar para a nuvem\".", "改动仍保存在本机,系统会延长等待并自动重试;修复网络或凭据后,也可以手动点「上传到云端」。": "As alterações continuam salvas neste dispositivo. O sistema tentará novamente automaticamente após uma espera maior. Depois de corrigir a rede ou as credenciais, você também pode clicar em “Enviar para a nuvem” manualmente.", "改完立即生效,不用重启(下一个请求就用新模式)。降级是自动的临时状态,解除后本模式自己的提示词立刻恢复。": "As mudanças passam a valer na hora, sem reiniciar (a próxima requisição já usa o novo modo). O fallback é um estado temporário automático; depois de encerrado, o prompt próprio deste modo volta imediatamente.", "放大或缩小整个界面(文字与控件一起变),效果与浏览器 Ctrl +/- 相同:共 11 档,立即生效并记住。": "Amplia ou reduz a interface inteira (texto e controles juntos), com o mesmo efeito de Ctrl +/- no navegador: 11 níveis; a mudança vale na hora e é memorizada.", "放弃修改并刷新": "Descartar alterações e atualizar", "数据": "Dados", "数据保留": "Retenção de dados", "数据保留设置已刷新": "Configurações de retenção de dados atualizadas", "数据存储": "Armazenamento de dados", "数据库 schema": "Schema do banco", "数据库不可用": "Banco de dados indisponível", "数据库与恢复密钥一起加密保存。密码不会保存在应用或备份中,忘记后无法恢复,请妥善保管。": "O banco e as chaves são criptografados juntos. A senha não fica no aplicativo nem no backup. Guarde-a com cuidado: sem ela, não é possível restaurar.", "数据库主文件与 WAL 文件的总占用,与请求日志清理弹窗采用同一口径;清理后可压缩数据库回收空闲空间。": "Tamanho total do arquivo principal do banco e do arquivo WAL, usando o mesmo cálculo do diálogo de limpeza de requisições. Após a limpeza, compacte o banco para recuperar o espaço livre.", "数据库文件": "Arquivo do banco", "数据目录": "Diretório de dados", "数据统一保存在配置目录下的 agent2api.db;如需更换位置,请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "Os dados ficam todos em agent2api.db, no diretório de configuração; para mudar de local, defina a variável de ambiente AGENT2API_PROXY_HOME e reinicie o programa.", "整体替换": "substituídos por inteiro", "整库备份 / 恢复": "Backup / restauração do banco completo", "整次请求交给 {model} 直接回答,不再回到原模型。": "A requisição inteira vai para {model}, que responde direto no lugar do modelo original.", "新分组名": "Nome do novo grupo", "新增 {added} 个、更新 {updated} 个{suffix}{note}": "{added} adicionadas, {updated} atualizadas{suffix}{note}", "新增脱敏规则": "Adicionar regra de mascaramento", "新增规则": "Adicionar regra", "新安装和升级后默认关闭。先配置再开启,关闭后保留配置。": "Desativado por padrão em novas instalações e atualizações. Configure antes de ativar; desativar mantém a configuração.", "新密码": "Nova senha", "新密码不能与当前密码相同": "A nova senha deve ser diferente da atual", "新密码至少 8 位": "A senha deve ter pelo menos 8 caracteres", "新建分组": "Novo grupo", "新建客户端分类": "Nova categoria de cliente", "无效或重复的标识请求头:{headers}": "Cabeçalhos de identificação inválidos ou duplicados: {headers}", "无法读取品牌设置": "Não foi possível ler as configurações da marca", "无法读取图片,请重新选择": "Não foi possível ler a imagem. Selecione-a novamente.", "日志与请求日志同时受保留天数和数量上限限制。日志默认 30 天、10000 条,各级别按比例保留;调试详情最多保留 3 天。请求日志默认 99999 天、1000000 条(100 万),超出后从最旧的记录开始清理,并同步删除对应原始正文。按天聚合默认 99999 天,只按天数保留,不受请求日志数量清理影响。天数可填 1–99999,数量可填 1–100000000。调小任一设置并确认后立即清理,且不可恢复。": "Logs e logs de requisições são limitados tanto pelos dias de retenção quanto pela quantidade de registros. Os logs têm padrão de 30 dias e 10.000 registros, com capacidade distribuída proporcionalmente por nível; detalhes de depuração são mantidos por no máximo 3 dias. Os logs de requisições têm padrão de 99999 dias e 1.000.000 de registros; o excedente é removido dos mais antigos para os mais novos junto com seus corpos originais. Os agregados diários têm padrão de 99999 dias e são limitados apenas pelos dias; a limpeza por quantidade dos logs de requisições não os afeta. Os dias aceitam 1–99999 e a quantidade aceita 1–100000000. Reduzir qualquer configuração e confirmar remove o excedente imediatamente, sem possibilidade de recuperação.", "日志保留数量上限": "Limite de registros de log", "日志文件": "Arquivo de log", "日语": "japonês", "显示 {name}": "Mostrar {name}", "显示分组 {name}": "Mostrar grupo {name}", "显示名称": "Nome de exibição", "显示名称最多 64 个字符": "O nome de exibição pode ter até 64 caracteres", "显示模式": "Modo de exibição", "显示这一组": "Mostrar este grupo", "暂无可编辑的提供商设置": "Nenhuma configuração de provedor editável", "暂无自定义规则,正在使用内置识别。也可以从请求详情直接添加规则。": "Sem regras personalizadas; a identificação integrada está ativa. Você também pode adicionar regras nos detalhes da requisição.", "暂未获取到本机访问地址,请使用其他设备能连接到的本机 IP 与网关端口。": "O endereço de acesso desta máquina ainda não está disponível. Use o IP desta máquina e a porta do gateway que o outro dispositivo consiga alcançar.", "更新": "Atualizar", "更新出网线路": "Rota de saída da atualização", "更新通道": "Canal de atualização", "替换": "Substituir", "替换 = 客户端 system / developer 消息全部删掉,换成网关的提示词;追加 = 保留客户端内容,只在开头 system 块之后多插一条。两者都只改发给上游的副本,客户端看到的响应不变。": "Substituir = todas as mensagens system / developer do cliente são apagadas e trocadas pelo prompt do gateway; Anexar = o conteúdo do cliente é mantido e apenas um item a mais é inserido depois dos blocos system do início. Os dois alteram somente a cópia enviada ao upstream; a resposta que o cliente vê não muda.", "替换为网关提示词": "Substituir pelo prompt do gateway", "替换内容": "Texto de substituição", "替换内容最多 {max} 个字符": "O texto de substituição deve ter no máximo {max} caracteres", "替换前会自动把当前数据备份到配置目录的 backups/ 文件夹。": "Antes da substituição, os dados atuais são automaticamente backupados na pasta backups/ do diretório de configuração.", "替换并恢复": "Substituir e restaurar", "最多 64 个字符,留空恢复为 Agent2API。": "Até 64 caracteres. Deixe em branco para restaurar Agent2API.", "最小自动上传间隔": "Intervalo mínimo de upload automático", "最近 {window} 条请求中,{scanned} 条有识别依据,{matched} 条符合条件,{applied} 条会采用本规则。": "Das últimas {window} requisições, {scanned} têm evidências, {matched} correspondem e {applied} usariam esta regra.", "有未保存的修改": "Há alterações não salvas", "有未保存的改动:保存后才能同步(测试连接不受影响)。": "Alterações não salvas: salve antes de sincronizar (o teste de conexão não é afetado).", "有近期套餐池请求时读取库存状态的间隔,默认 2500 毫秒,可填 1000–30000。没有近期请求时降低读取频率,轮询不会发起验证码。": "Intervalo de consulta do estoque com solicitações Start Plan recentes: padrão de 2500 ms, entre 1000 e 30000. A frequência diminui quando ocioso e nunca inicia verificação.", "服务商": "Provedor", "服务器地址": "Endereço do servidor", "服务端密钥加密保存,不会返回浏览器;切回 ALTCHA 后会保留,方便再次启用。": "A chave secreta é armazenada criptografada e nunca é devolvida ao navegador. Ela é mantida ao voltar para ALTCHA para facilitar a reativação.", "服务端密钥(Secret Key)": "Chave secreta (Secret Key)", "期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "Enquanto este modo estiver ativo, o prompt próprio dele não é enviado; levante assim que ajustar o seu prompt.", "未保存": "Não salvo", "未匹配已知客户端": "Nenhum cliente conhecido identificado", "未单独配置:模式、提示词文件与正文都跟随上面的全局配置(当前「{mode}」)。": "Sem configuração individual: modo, arquivo de prompt e texto seguem a configuração global acima (no momento, “{mode}”).", "未启用": "Desativado", "未开启轻量模式:关窗仅隐藏窗口,界面进程常驻内存,随时打开不等待": "Modo leve desativado: fechar a janela apenas a oculta, o processo da interface permanece na memória e reabrir é instantâneo", "未开启,developer 角色消息会原样发往上游,不认识该角色的上游会报错(400)。": "Desativado: mensagens com papel developer vão para o upstream como estão; upstreams que não conhecem o papel retornam erro (400).", "未开启,客户端 system 模板会原样发往上游,可能被内容审核误拦(400)。": "Desativado: os templates do system do cliente vão ao upstream como estão e podem ser bloqueados por engano na revisão de conteúdo (400).", "未开启,浏览器跨域无法直连网关。": "Desativado: o navegador não consegue se conectar diretamente ao gateway de outra origem.", "未开启,转发时不保存任何原始报文。": "Desativado: nenhum payload bruto é salvo durante o encaminhamento.", "未开启:网关只监听 127.0.0.1,仅本机可以访问。": "Desativado: o gateway escuta apenas 127.0.0.1 e somente esta máquina pode acessá-lo.", "未注册": "Não registrado", "未注册闸门": "Bloqueio de não registrado", "未知原因": "Motivo desconhecido", "未知来源": "Origem desconhecida", "未知设备": "Dispositivo desconhecido", "未知账号": "Conta desconhecida", "未能读取 Cline 伪装头设置,请稍后重试": "Não foi possível ler as configurações de cabeçalhos spoofed do Cline; tente novamente mais tarde", "未能读取 models.dev 元数据状态,请稍后重试": "Não foi possível ler o estado dos metadados do models.dev. Tente novamente mais tarde.", "未能读取云同步设置,请稍后重试。": "Não foi possível ler as configurações de sincronização na nuvem. Tente novamente mais tarde.", "未能读取保存后的指纹脱敏设置": "Não foi possível ler as configurações de mascaramento salvas", "未能读取开发者角色兼容设置,请稍后重试": "Não foi possível ler a configuração de compatibilidade com papel developer, tente novamente mais tarde", "未能读取指纹脱敏设置,请稍后重试": "Não foi possível ler as configurações de mascaramento de fingerprint; tente novamente mais tarde", "未能读取机器人校验设置": "Não foi possível ler as configurações de verificação de bots", "未能读取第三方模型回答完自动折叠过程设置,请稍后重试": "Não foi possível ler a configuração de recolhimento do trabalho de modelos de terceiros; tente novamente mais tarde", "未能读取系统提示词设置,请稍后重试": "Não foi possível ler as configurações do system prompt; tente novamente mais tarde", "未能读取网关跨域访问设置,请稍后重试": "Não foi possível ler as configurações de CORS do gateway; tente novamente mais tarde", "未能读取网络访问设置,请稍后重试": "Não foi possível carregar as configurações de acesso pela rede. Tente novamente mais tarde.", "未能读取调试模式设置,请稍后重试": "Não foi possível ler as configurações do modo debug; tente novamente mais tarde", "未能读取账户信息,请稍后重试": "Não foi possível ler as informações da conta. Tente novamente mais tarde", "未采用本规则,请检查开关、来源声明或规则顺序": "Esta regra não foi usada. Verifique a ativação, as declarações de origem ou a ordem das regras.", "本地账号、配置、签到与余额记录变化后自动上传(合并 1 秒内的连续改动,最长 10 秒传一次;内容没变时不发请求)。": "Envia automaticamente após alterações locais em contas, configuração, check-in e registros de saldo (alterações em até 1 segundo são agrupadas, no máximo um envio a cada 10 segundos; nenhuma requisição é feita se nada mudou).", "本机 API 地址": "Endereço da API deste dispositivo", "本机 APK 版本": "Versão do APK neste aparelho", "本机全部数据会被备份整体替换,恢复前自动保留安全备份,完成后需要重新登录管理面板。本机已有密钥不会被覆盖。": "Todos os dados do banco local serão substituídos pelo backup. Um backup de segurança é salvo antes, e será preciso entrar novamente. As chaves locais existentes não serão sobrescritas.", "本机应用版本": "Versão do app neste aparelho", "本机界面版本": "Versão da interface neste aparelho", "本机的业务数据(账号、配置、Agent 配置、代理池 / 订阅、签到与余额记录)将上传并": "Os dados de negócio desta máquina (contas, configuração, perfis do Agent, pool de proxies / assinaturas, registros de check-in e saldo) serão enviados e", "本机的全部数据(账号、网关配置、日志统计与桌面设置)将被所选备份文件": "Todos os dados desta máquina (contas, configuração do gateway, estatísticas de logs e configurações do desktop) serão ", "本机的账号、网关配置、Agent 配置、代理池 / 订阅、签到与余额记录将被远端快照": "As contas, a configuração do gateway, os perfis do Agent, o pool de proxies / assinaturas e os registros de check-in e saldo desta máquina serão substituídos pelo snapshot remoto", "本次无需刷新": "Nenhuma atualização necessária desta vez", "本软件不提供任何担保,可按 AGPL-3.0 修改与分发;通过网络提供修改版服务时须向用户提供对应源码。": "Este software não oferece garantia e pode ser modificado e distribuído sob AGPL-3.0. Serviços de rede modificados devem oferecer aos usuários o código-fonte correspondente.", "本项目的 AGPL-3.0 许可不替代这些第三方许可。名称与标识的商标权归各自权利人所有。": "A licença AGPL-3.0 deste projeto não substitui estas licenças de terceiros. Os direitos de marca sobre nomes e logotipos pertencem aos respectivos titulares.", "机器人校验": "Captcha", "机器人校验设置已保存": "Configurações de verificação de bots salvas", "条数": "Quantidade de registros", "来源声明当前关闭,这条规则不会生效。请先在客户端识别设置中开启。": "As declarações de origem estão desativadas; esta regra não será aplicada. Ative-as nas configurações de identificação.", "来源声明无效或未登记,本次已忽略。": "A declaração de origem é inválida ou não registrada e foi ignorada.", "来源声明未启用,本次已忽略。": "As declarações de origem estão desativadas e foram ignoradas.", "来源版本": "Revisão de origem", "来源设备:{device}": "Dispositivo de origem: {device}", "来自 {device},生成于 {time}": "De {device}, criado em {time}", "架构": "Arquitetura", "查看内置客户端({n})": "Ver clientes integrados ({n})", "查询管理员状态失败:{message}": "Falha ao consultar o status do administrador: {message}", "校验身份:这三段必须各自成块排在最前(实测:三段并成一段会被回 405 / 3012)。因此这里按段编辑,不能合成一段。改过的段以你的文本为准,没改的段继续用官方原文;清空某一段 = 那一段恢复官方原文。": ": os três blocos precisam vir no início, cada um como um bloco separado (testado: três blocos fundidos em um só retornam 405 / 3012). Por isso a edição aqui é por bloco — não é possível fundi-los. Blocos alterados usam o seu texto; os não alterados continuam com o texto oficial; limpar um bloco = aquele bloco volta ao texto oficial.", "桌面端": "Aplicativo desktop", "桌面端登录 / 注册验证": "Verificação de login / cadastro no desktop", "桌面端:登录 / 注册需要 ALTCHA 人机验证": "Desktop: login / registro exige verificação ALTCHA", "桌面端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "Desktop: login / registro exige verificação ALTCHA (em uso agora)", "桌面运行时不可用,暂时无法保存": "Runtime do desktop indisponível; não é possível salvar agora", "档案": "Perfil", "检测中…": "Verificando…", "概览": "Visão geral", "模型不能直接看图时,按你选择的方式处理。原生支持图片的请求直接转发,不增加识图调用。": "Quando o modelo não puder ler imagens, use o modo escolhido. Solicitações a modelos com suporte nativo seguem diretamente, sem uma chamada visual extra.", "模型单独配置": "Configuração por modelo", "模型目录没写明是否支持图片时按这里处理。": "Usado quando o catálogo não informa se o modelo aceita imagens.", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。下面两块分别选好「哪些模型」和「用哪只模型」即可;没配到的模型、以及本来就能看图的模型,一律原样放行。这里的改动立即生效,不需要保存。": "Um modelo que não consegue ler imagens tem apenas duas saídas: deixar outro modelo ler a imagem por ele, ou entregar a requisição inteira a um modelo que consiga. Escolha os modelos e o modelo de visão nos dois blocos abaixo. O que não estiver aqui — inclusive modelos que já leem imagens — passa sem alteração. As mudanças aqui valem na hora; não há nada a salvar.", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。没配到的模型、以及本来就能看图的模型,一律原样放行;每个请求只用其中一种方式,不会两种串着做,处理失败也不会改走另一种。改动立即生效,不需要保存。": "Um modelo que não consegue ler imagens tem apenas duas saídas: deixar outro modelo ler a imagem por ele, ou entregar a requisição inteira a um modelo que consiga. O que não estiver aqui — inclusive modelos que já leem imagens — passa sem alteração. Cada requisição usa apenas uma das duas formas; elas nunca se encadeiam e uma falha não cai na outra. As mudanças aqui valem na hora; não há nada a salvar.", "模型请求是否需要验证码由 ZCode 上游配置决定,领取验证与模型请求免验证分别处理。后台只检查配置和库存,不自动运行验证码或弹出拼图;需要验证时,在账号的「套餐明细」中点击「开始验证」。验证令牌一次性使用,短时间内过期,失败或取消后不会自动重试。": "As configurações do provedor ZCode determinam se o modelo exige verificação, separadamente do resgate de planos. O processo em segundo plano só consulta configurações e estoque; nunca executa verificação nem abre um quebra-cabeça automaticamente. Inicie-a nos detalhes do plano da conta. Tokens são de uso único, expiram rapidamente e não são repetidos após falha ou cancelamento.", "模式": "Modo", "模式改为「{mode}」": "Modo alterado para “{mode}”", "次": "vezes", "次日 00:00": "00:00 do dia seguinte", "正则表达式": "Expressão regular", "正在保存上游原始报文:": "Salvando payloads brutos do upstream:", "正在修改…": "Alterando…", "正在剥离出站请求里的审核指纹:表头键值整段删除,模板句最小改写。": "Removendo os fingerprints de revisão das requisições de saída: pares chave/valor de cabeçalho excluídos por completo, frases de template com reescrita mínima.", "正在安装…": "Instalando…", "正在应答跨源请求:浏览器跨域请求可直连 /v1/*。": "Respondendo a requisições de outra origem: requisições de navegador com CORS podem se conectar diretamente a /v1/*.", "正在归一角色:developer 角色消息转发前改写为 system。": "Normalizando papéis: mensagens com papel developer são reescritas para system antes do encaminhamento.", "正在注册…": "Registrando…", "正在联网更新": "Atualizando online", "正在读取提供商设置…": "Carregando configurações de provedores…", "正式版": "Estável", "每个请求只会用到其中一种方式,不会两种串着做;处理失败也不会改走另一种。配了哪只视觉模型,那次请求的图片就会交给它。": "Cada requisição usa apenas uma das duas formas; elas nunca se encadeiam e uma falha não cai na outra. O modelo de visão configurado é quem recebe as imagens daquela requisição.", "每条请求轮换到下一个可用账号;新会话交给当前最闲的那位。适合想把手里的号摊开用、不让某一个一直扛。": "Alterna para a próxima conta utilizável a cada requisição; uma sessão nova vai para quem estiver mais livre. Para distribuir o uso entre as contas em vez de deixar uma carregar tudo.", "每条请求都重新按策略选路 —— 行为与「关闭」一致,仅保留会话识别的记录。": "Cada requisição é roteada pela estratégia do zero — mesmo comportamento de \"Desligado\", apenas os registros de sessão são mantidos.", "每次等待的时长,默认 0 = 跟随上游建议(实测 9~30 秒,上游没给建议时用 15 秒)。可填 0–120 秒强制一个固定时长。": "Duração de cada espera; padrão 0 = seguir a sugestão do upstream (medido: 9~30 segundos; quando o upstream não sugere nada, usa 15 segundos). Aceita 0–120 segundos para forçar uma duração fixa.", "每行一个域名,不填协议、端口或路径;与 Cloudflare 中的配置一致,服务端按完整域名匹配。手机 App 使用所连接网关的域名。": "Informe um hostname por linha, sem protocolo, porta ou caminho. Use os mesmos valores da Cloudflare; o servidor exige correspondência exata. O aplicativo móvel usa o hostname do gateway conectado.", "毫秒": "ms", "沟通方式 / 上下文管理 + Environment 段。": "O bloco de estilo de comunicação / gestão de contexto + Environment.", "没有可导出的账号": "Não há contas para exportar", "没有可用视觉模型时": "Quando não houver modelo de visão disponível", "没有已确认支持图片的模型,请先在模型管理中确认。": "Nenhum modelo tem suporte a imagens confirmado. Confirme a capacidade em Gerenciamento de Modelos primeiro.", "没能读到「{label}」的当前值,改为 {count} 条可能会删除超出的历史数据。": "Não foi possível ler o valor atual de “{label}”. Definir {count} registros pode excluir os dados históricos excedentes.", "没能读到「{label}」的当前值,改为 {days} 天可能会删除超出的历史数据。": "Não foi possível ler o valor atual de “{label}”; mudar para {days} dias pode excluir dados históricos excedentes.", "沿用对应方式的视觉模型配置,不额外维护一份模型列表。": "Reutiliza a configuração visual desse modo, sem manter outra lista de modelos.", "沿用工具服务的视觉分析模型": "Reutilizar o modelo de análise visual do serviço de ferramentas", "沿用工具服务的视觉分析模型(未配置)": "Modelo de visão do serviço de ferramentas (não configurado)", "注册并开启": "Registrar e ativar", "注册管理员账号": "Registrar conta de administrador", "注意:这一家的「网关自带」开关现在是关的,改过的正文要等开关打开才生效。": "Atenção: o switch “Interno do gateway” deste provedor está desativado; o texto alterado só passa a valer quando o switch for ativado.", "流式响应相邻数据之间允许的最大空闲时间(秒),收到新数据后重新计时,默认 300 秒,范围 1~3600。": "Tempo máximo de inatividade permitido entre dados adjacentes de uma resposta em streaming (segundos), com a contagem reiniciada a cada novo dado recebido; padrão 300 segundos, faixa 1~3600.", "流式响应空闲超时": "Timeout de inatividade do streaming", "测试连接": "Testar conexão", "浏览器 / PWA": "Navegador / PWA", "浏览器只在 https 或 localhost 下提供离线缓存;局域网 http 访问不影响正常使用": "Os navegadores só oferecem cache offline em https ou localhost. O acesso por http na LAN continua funcionando normalmente.", "浏览器在本地完成计算,不需要第三方密钥,也不依赖外部验证服务。": "O navegador faz o cálculo localmente. Não exige chaves de terceiros nem serviços externos de verificação.", "浏览器标签页": "Aba do navegador", "浏览器面板": "Painel no navegador", "消息角色": "Papéis das mensagens", "添加备选模型": "Adicionar modelo alternativo", "添加提供商": "Adicionar provedor", "添加提供商…": "Adicionar provedor…", "添加自定义头": "Adicionar cabeçalho personalizado", "添加要单独配置的提供商": "Adicionar provedor para configurar individualmente", "清除本机凭证": "Limpar credenciais locais", "清除这里的正文": "Limpar o texto deste campo", "源代码": "Código-fonte", "点下面的入口会用系统默认浏览器打开 GitHub 的对应表单(需要 GitHub 账号,模板已预设好,填完直接提交即可)。": "Os atalhos abaixo abrem o formulário correspondente no GitHub usando o navegador padrão do sistema (é preciso ter uma conta GitHub; o template já vem preenchido, basta completar e enviar).", "点击重命名": "Clique para renomear", "点此添加或切换服务器": "Toque para adicionar ou trocar de servidor", "点此添加服务器": "Toque para adicionar um servidor", "版本": "Versão", "版本信息": "Informações de versão", "版本信息 · 所连网关环境": "Informações de versão · gateway conectado", "版权声明": "Aviso de copyright", "状态码 {code} 已在名单里": "O status code {code} já está na lista", "状态码必须是 {min}–{max} 的整数(收到: {text})": "O status code deve ser um número inteiro de {min}–{max} (recebido: {text})", "环境": "Ambiente", "生成时间:{time}": "Criado em: {time}", "生效顺序:有效的来源声明优先,然后按顺序匹配自定义规则,最后使用内置规则。中转丢失原始标识时,无法自动推断背后的软件。": "Prioridade: declaração válida, regras personalizadas em ordem e regras integradas. Se um intermediário remover o identificador original, não será possível inferir automaticamente o software de origem.", "用 models.dev 补齐上游没声明的模型能力与思考档位(联网刷新,内嵌快照始终生效)": "Preenche capacidades e níveis de raciocínio que o upstream não declara, usando o models.dev (atualização online; o snapshot embutido sempre vale)", "用于加密上云的账号密钥。请自己记牢 —— 它不保存到云端,换机下载时必须输入同一个密码,否则账号数据无法解密。": "Usada para criptografar a chave da conta enviada à nuvem. Memorize-a — ela não é armazenada na nuvem e você precisa digitar a mesma senha ao restaurar em outra máquina, caso contrário os dados das contas não poderão ser descriptografados.", "用哪只模型识图": "Qual modelo lê a imagem", "用浏览器菜单里的「添加到主屏幕」把这一页装成 App:全屏打开、没有地址栏,和原生应用一样。": "Use \"Adicionar à Tela de Início\" no menu do navegador para instalar esta página como app: tela cheia, sem barra de endereço, igual a um app nativo.", "由 Cloudflare 提供验证,需要浏览器与网关均能连接 Cloudflare。验证失败或服务不可用时不会自动放行。": "A verificação é fornecida pela Cloudflare. O navegador e o gateway precisam acessar a Cloudflare. Uma falha na verificação ou indisponibilidade do serviço não libera o acesso.", "由 {source} 覆盖,手动设置暂不生效": "Substituído por {source}; a configuração manual não está ativa no momento", "界面缩放": "Zoom da interface", "界面缩放比例": "Nível de zoom da interface", "界面语言": "Idioma da interface", "界面语言。可选简体中文、繁體中文、English、日本語、한국어、Português (Brasil),或「跟随系统」(按浏览器 / 系统的语言列表自动选)。切换后整页立即刷新;该偏好只存在本机(localStorage),不影响账号、密钥与转发。": "Idioma da interface. Opções: 简体中文, 繁體中文, English, 日本語, 한국어, Português (Brasil), ou “Sistema” (seleção automática pela lista de idiomas do navegador / sistema). Após a troca, a página inteira é atualizada na hora; essa preferência fica apenas nesta máquina (localStorage) e não afeta contas, chaves nem o encaminhamento.", "界面语言只保存在本机(localStorage)。切换后整页立即刷新,不影响账号、密钥与转发。": "O idioma da interface fica salvo apenas nesta máquina (localStorage). Após a troca, a página inteira é atualizada na hora; não afeta contas, chaves nem o encaminhamento.", "界面里编辑的正文": "Texto editado na interface", "留空 = 用内置默认提示词": "Vazio = usar o system prompt padrão integrado", "留空使用 AWS 官方地址": "Deixe em branco para usar o endereço oficial da AWS", "留空使用默认": "Deixe em branco para usar o padrão", "留空表示删除匹配内容;替换内容按原文写入,$ 不作为捕获组引用。": "Deixe vazio para excluir o texto correspondente. A substituição é inserida literalmente; $ não referencia grupos de captura.", "登录 / 注册需要通过 ALTCHA 人机验证(工作量证明)": "Login / registro exigem a verificação humana ALTCHA (proof of work)", "登录 / 账号切换 / 429 切换等系统事件,可填 1–3650 天。": "Eventos do sistema como login / troca de conta / troca por 429; intervalo de 1–3650 dias.", "登录 / 账号切换 / 429 切换等系统事件,可填 1–99999 天。": "Eventos de sistema como login, troca de conta e switch 429. Aceita de 1 a 99999 dias.", "登录 Agent2API": "Entrar no Agent2API", "登录 {name}": "Entrar em {name}", "登录人机验证": "CAPTCHA de login", "百分比类读数(如 OpenCode Go、Antigravity)不能相加,组头显示的是组内最低剩余比例。": "Leituras percentuais (como OpenCode Go ou Antigravity) não podem ser somadas; a faixa mostra a menor porcentagem restante do grupo.", "监听地址": "Endereço de escuta", "目前展示仓库已登记的图标来源许可,不代表完整的第三方依赖清单。": "Esta lista contém as licenças das fontes de ícones atualmente registradas no repositório, não um inventário completo das dependências de terceiros.", "目标路径:{path}": "Caminho de destino: {path}", "直接按上面的设置兼容": "Aplicar as configurações acima direto", "直接按当前方式兼容": "Aplicar diretamente o modo selecionado", "知道了": "Entendi", "确定": "Confirmar", "确定后加入当前草稿,点击「保存设置」才会生效。": "Confirmar adiciona a regra ao rascunho. Clique em Salvar configurações para aplicá-la.", "确定继续?": "Confirmar e continuar?", "确认上传": "Confirmar envio", "确认图片处理授权": "Confirmar autorização para processar imagens", "确认备份密码": "Confirmar senha do backup", "确认并保存": "Confirmar e salvar", "确认新密码": "Confirmar nova senha", "确认缩减数据保留": "Confirmar redução da retenção de dados", "确认缩短保留天数": "Confirmar a redução dos dias de retenção", "社区与支持": "Comunidade e suporte", "离线缓存未启用": "O cache offline está desativado", "积分合计只统计当前筛选出来的账号": "Somar apenas as contas visíveis no filtro atual", "移入「{name}」": "Mover para \"{name}\"", "程序路径": "Caminho do executável", "空 = 不要这一份,回落提示词文件 / 内置默认提示词。": "Vazio = não usar este texto e voltar para o arquivo de prompt / system prompt padrão integrado.", "空分组 · 点组头的 + 把菜单移进来": "Grupo vazio · use + no cabeçalho para mover menus", "立即解除": "Encerrar agora", "站点密钥(Site Key)": "Chave do site (Site Key)", "第一段": "Primeiro bloco", "第一段(身份句)": "Primeiro bloco (frase de identidade)", "第三方应用密码": "Senha de aplicativo", "第三方开源许可": "Licenças de código aberto de terceiros", "第三方模型回答完自动折叠过程": "Recolher automaticamente o trabalho de modelos de terceiros após a resposta", "第三方模型回答完自动折叠过程设置已刷新": "Configuração de recolhimento do trabalho de modelos de terceiros atualizada", "第三段": "Terceiro bloco", "第三段(动态段)": "Terceiro bloco (dinâmico)", "第二段": "Segundo bloco", "第二段(稳定段)": "Segundo bloco (estável)", "等待响应超时": "Timeout de espera de resposta", "等待期间请求日志的状态列会显示「排队中」阶段,详情弹窗的「内部重试」里能逐次看到等待时长;等待用尽后返回 HTTP 503(不是 401/429:既不会刷新凭证,也不会把账号标成限额)。": "Durante a espera, a coluna de status dos logs de requisições mostra a fase “Na fila”, e o diálogo de detalhes, em “Retries internos”, mostra a duração de cada espera uma a uma; quando as esperas se esgotam, é retornado HTTP 503 (não 401/429: nem atualiza credenciais, nem marca a conta como limitada).", "等比放大或缩小整个界面(文字、控件、间距一起变),效果与浏览器按 Ctrl +/- 相同:80%–130%、5% 一档。窗口本身不缩放,变的是页面内容的显示比例,设置立即生效并记住,下次启动直接按这个比例打开。放得越大可视范围越小,窗口较窄或表格较宽时不建议调得太大。": "Amplia ou reduz a interface inteira proporcionalmente (texto, controles e espaçamentos juntos), com o mesmo efeito de Ctrl +/- no navegador: 80%–130%, em passos de 5%. A janela em si não é redimensionada; o que muda é a proporção de exibição do conteúdo da página. A configuração vale imediatamente e é memorizada, e a próxima inicialização já abre nesta proporção. Quanto maior o zoom, menor a área visível; com janelas estreitas ou tabelas largas, não é recomendável aumentá-lo demais.", "简体中文": "chinês simplificado", "管理员已注册": "Administrador registrado", "管理员账号": "Conta de administrador", "管理插件": "Gerenciar plugins", "精确文本": "Texto exato", "系统提示词模式": "Modo do system prompt", "系统提示词设置已刷新": "Configurações do system prompt atualizadas", "累计请求": "Requisições totais", "繁体中文": "chinês tradicional", "约 {n} 字符": "cerca de {n} caracteres", "结构": "estrutura", "给 Codex 的响应补阶段标记,回答完后像官方模型一样把推理与命令过程折叠起来": "Adicionar marcadores de fase às respostas do Codex para recolher o raciocínio e os comandos após a resposta, como nos modelos oficiais", "继续并清理": "Continuar e limpar", "编辑提示词正文 · {label}": "Editar o texto do prompt · {label}", "编辑提示词正文 · 全局": "Editar o texto do prompt · Global", "编辑正文": "Editar texto", "编辑网关自带提示词 · {label}": "Editar o system prompt interno do gateway · {label}", "编辑脱敏规则": "Editar regra de mascaramento", "编辑识别规则": "Editar regra de identificação", "缩放后重新存成 JPEG 时用的质量。默认 80,可填 40–95;数值越小体积越小、画质越差。": "Qualidade JPEG usada ao recodificar a imagem reduzida. Padrão 80, faixa 40–95; menor significa arquivo menor e qualidade pior.", "缩放比例": "Nível de zoom", "网关": "Gateway", "网关 Key 数量": "Quantidade de chaves do gateway", "网关尚未就绪": "O gateway ainda não está pronto", "网关自带": "Interno do gateway", "网关跨域访问已开启": "CORS do gateway ativado", "网关跨域访问设置已刷新": "Configurações de CORS do gateway atualizadas", "网关跨域访问(CORS)": "Acesso de outra origem ao gateway (CORS)", "网关面(/v1/*)默认不应答浏览器跨源请求:页面直连会被预检拦下,只报「无法连接 API」。注意来源是 * —— 未配「网关 Key」时任何网页都能借本机网关打上游,故默认关闭;只给自己用的话,让页面与网关同源(本地反代 /v1)更稳妥。面板接口(/api/*)不受影响。": "A API do gateway (/v1/*) não responde por padrão a requisições de outra origem feitas por navegador: a conexão direta da página é barrada no preflight e só mostra “não foi possível conectar à API”. Atenção: a origem é * — sem uma “Chave do gateway” configurada, qualquer página pode usar o gateway local para atingir o upstream; por isso o padrão é desativado. Se for só para você, é mais seguro deixar a página e o gateway na mesma origem (proxy reverso local em /v1). A API do painel (/api/*) não é afetada.", "网络访问": "Acesso pela rede", "网页端": "Web", "网页端登录 / 注册验证": "Verificação de login / cadastro na web", "网页端的界面缩放由浏览器自己控制(Ctrl + / Ctrl -,或浏览器菜单里的缩放),此项不可调。": "No painel web, o zoom da interface é controlado pelo próprio navegador (Ctrl + / Ctrl -, ou o zoom no menu do navegador); esta opção não pode ser ajustada.", "网页端:登录 / 注册需要 ALTCHA 人机验证": "Web: login / registro exige verificação ALTCHA", "网页端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "Web: login / registro exige verificação ALTCHA (em uso agora)", "网页管理地址": "Endereço do painel web", "群晖 NAS": "Synology NAS", "群晖需在「控制面板 → 应用程序门户 → WebDAV」里启用服务,端口默认 5005(HTTP)/ 5006(HTTPS)。": "No Synology, ative o serviço em Painel de Controle → Portal de Aplicativos → WebDAV; as portas padrão são 5005 (HTTP) / 5006 (HTTPS).", "脱敏词表": "Regras de mascaramento", "腾讯云 COS": "Tencent Cloud COS", "自动同步": "Sincronização automática", "自动同步上次失败": "A última sincronização automática falhou", "自动续写": "Continuação automática", "自定义 User-Agent": "User-Agent personalizado", "自定义 · {name}": "Personalizado · {name}", "自定义头匹配规则": "Regras de cabeçalho personalizadas", "自定义客户端分类": "Categorias de clientes personalizadas", "自定义客户端数量已达上限": "Limite de clientes personalizados atingido", "自定义提供商 {id}": "Provedor personalizado {id}", "自定义网站和应用界面中显示的名称与 Logo。": "Personalize o nome e o logo exibidos no site e na interface do aplicativo.", "自定义识别规则": "Regras de identificação personalizadas", "自愈保护": "Proteções de autorrecuperação", "至少 12 位": "Ao menos 12 caracteres", "至少 8 位,换机下载时需要": "Pelo menos 8 caracteres; necessário ao restaurar em outra máquina", "至少要保留一个分组": "Pelo menos um grupo deve permanecer", "英语": "inglês", "范围 5–120 秒,并受原请求时限约束。": "Faixa de 5 a 120 segundos, também limitada pelo tempo da requisição original.", "范围为 5–120 秒,并受原请求时限约束。图片过大、格式错误或下载失败不会被当作模型不支持图片。": "Intervalo permitido: 5–120 segundos, limitado também pelo tempo da solicitação original. Imagens grandes, formatos inválidos e falhas de download não são tratados como falta de suporte a imagens.", "被更高优先级覆盖": "Substituída por prioridade superior", "装上{size}的官方身份提示词": "Instalar o system prompt de identidade oficial ({size})", "装成 App 后从桌面图标直接进入:全屏打开、没有地址栏。": "Instalado como app, ele abre direto pelo ícone da tela inicial: em tela cheia, sem barra de endereço.", "覆盖": "sobrescrever", "规则 / 匹配方式": "Regra / tipo de correspondência", "规则可以增删改、启停和调整顺序;替换内容留空表示删除匹配内容。恢复默认只重置词表,不改开关和提供商范围。": "Adicione, edite, exclua, ative, desative e reordene regras. A substituição vazia exclui o texto correspondente. Restaurar o padrão redefine apenas as regras, sem alterar o interruptor nem o escopo de provedores.", "规则名称": "Nome da regra", "规则名称不能为空,且最多 {max} 个字符": "O nome da regra é obrigatório e deve ter no máximo {max} caracteres", "规则已保存,对后续请求生效;当前历史记录未修改。": "Regra salva para requisições futuras. Este registro histórico não foi alterado.", "规则忽略大小写,只影响新请求的日志与统计,不改变模型选择或权限。": "As regras ignoram maiúsculas e minúsculas e afetam apenas logs e estatísticas de novas requisições, sem alterar modelos ou permissões.", "规则编号:{id}": "ID da regra: {id}", "视觉模型": "Modelo de visão", "视觉模型先识读图片,再由原模型分析和回答。": "Um modelo de visão lê as imagens primeiro; depois, o modelo original analisa e responde.", "视觉模型来源": "Origem do modelo de visão", "视觉模型的思考等级": "Nível de raciocínio do modelo de visão", "视觉模型直接回答": "O modelo de visão responde diretamente", "视觉模型识读图片": "O modelo de visão lê as imagens", "解码后小于这个体积的图片保持原样。默认 512KB,可填 0–10240;填 0 表示所有内嵌图片都过一遍。": "Imagens menores que este tamanho após a decodificação são mantidas como estão. Padrão 512KB, faixa 0–10240; 0 processa todas as imagens embutidas.", "解除失败:{message}": "Falha ao encerrar: {message}", "触发阈值": "Limite de acionamento", "计数": "Contagens", "计量单位": "Notação numérica", "让 Codex 在收到最终答案后收起中间过程。仅为严格识别的 Codex Responses 请求补阶段标记,报表归类和来源声明不影响此判断。正常结束且没有工具调用的非空回答才补 final_answer,工具调用前的说明补 commentary;错误、截断、缺少结束信号或未知结束原因不补最终答案标记。默认关闭,不改变回答文字,也不减少模型思考或用量。": "Permite que o Codex recolha o trabalho intermediário após a resposta final. Os marcadores de fase são adicionados somente a requisições Responses identificadas estritamente como Codex, independentemente das categorias dos relatórios ou das declarações do cliente. Apenas respostas não vazias, concluídas normalmente e sem chamadas de ferramentas recebem final_answer; explicações antes das chamadas recebem commentary. Erros, truncamento, ausência de sinal de conclusão e motivos de término desconhecidos não recebem marcador de resposta final. Desativado por padrão; não altera o texto, o raciocínio do modelo nem o consumo.", "许可原文": "Texto original da licença", "许可原文已随软件内置,无需联网即可查看;打开项目来源链接需要联网。": "Os textos das licenças estão incluídos no aplicativo e podem ser consultados offline. Abrir os links de origem dos projetos requer conexão com a internet.", "许可核对版本": "Revisão usada para verificar a licença", "设置不可隐藏(隐藏了只能清缓存找回来)": "\"Configurações\" não pode ser ocultado (seria preciso limpar o armazenamento para recuperá-lo)", "设置备份密码": "Definir senha do backup", "设置识别规则": "Definir regra de identificação", "访问时请使用目标设备能连接到的地址;这里显示的本机地址不代表公网可达。": "Use um endereço alcançável pelo dispositivo que vai se conectar. O endereço local exibido aqui não garante acesso pela internet.", "识别依据": "Evidência de identificação", "识别规则数量已达上限": "Limite de regras de identificação atingido", "词表为空,不会改写任何指纹。可以新增规则或恢复默认词表。": "A lista está vazia; nenhum fingerprint será alterado. Adicione uma regra ou restaure o padrão.", "该提供商暂无可编辑的专属设置": "Este provedor não tem configurações editáveis", "详细日志": "Logs detalhados", "语言设置": "Configurações de idioma", "请先保存设置再同步": "Salve as configurações antes de sincronizar", "请先在 Cloudflare 创建 Turnstile 组件,建议选择 Managed 模式,并添加面板实际使用的域名。": "Primeiro crie um widget Turnstile na Cloudflare. Recomendamos o modo Managed. Adicione os domínios usados para acessar o painel.", "请填一个分组名": "Informe um nome de grupo", "请填写管理员账号(64 字符以内)": "Preencha a conta de administrador (até 64 caracteres)", "请求发出后等待上游响应头的最大时间(秒),默认 300 秒,范围 1~3600。": "Tempo máximo de espera pelos cabeçalhos de resposta do upstream após o envio da requisição (segundos), padrão 300 segundos, faixa 1~3600.", "请求带有不同软件的标识,未自动归类;可用自定义规则明确归属。": "A requisição contém identificadores de aplicativos diferentes e não foi classificada automaticamente. Use uma regra personalizada para atribuí-la.", "请求提供商 / 模型支持": "Solicitar suporte a provedor / modelo", "请求日志保留天数": "Retenção dos logs de requisições (dias)", "请求日志保留数量上限": "Limite de registros de requisições", "请求记录": "Registros de requisições", "请求超时": "Timeout de requisição", "请求转发到上游失败时(服务器瞬时错误、连接失败,以及 WorkBuddy 的 11-128 敏感词拦截),网关会等一段间隔后再发一次。次数分两档,管的是两件事:①「同一账号重试次数」在同一账号上原地重发几次 —— 一般是提示词被上游拦截、或链路瞬时抖动,等一会儿重发往往就好了;②「切换账号重试次数」这份请求最多再换几个账号试 —— 首发的那个账号不算,每换一个扣一次,不分是不是同一家(换到同一家的下一个账号也算一次),换满还失败就把错误返回给客户端。两项都设为 0 表示失败不重试、直接报错。注意账号级限额(429)不占这里的换号次数 —— 那类失败走「冷却该账号并换下一个账号」的降级,与这里的重试是两条路。另有「指定错误码直接换号」名单(默认 402):命中名单的上游状态码不在同一账号重发,直接按队列换下一个账号继续试(换号也占「切换账号重试次数」),换满仍失败才把错误返回给客户端。": "Quando o encaminhamento ao upstream falha (erro momentâneo do servidor, falha de conexão e bloqueio por palavra sensível 11-128 do WorkBuddy), o gateway espera um intervalo e envia de novo. As tentativas se dividem em duas opções, que tratam de duas coisas: ① “Retries na mesma conta” — quantas vezes reenviar na própria conta; normalmente é o prompt bloqueado pelo upstream ou uma oscilação momentânea do link, e reenviar depois de um tempo costuma resolver; ② “Retries trocando de conta” — por quantas contas a mais esta requisição pode tentar; a conta do primeiro envio não conta, cada troca desconta uma, independentemente de ser o mesmo provedor (trocar para a conta seguinte do mesmo provedor também conta), e se o limite se esgotar com falha, o erro é retornado ao cliente. Definir ambas como 0 significa não tentar de novo em caso de falha e retornar o erro direto. Atenção: o limite no nível da conta (429) não consome as trocas de conta daqui — esse tipo de falha segue o fallback de “esfriar a conta e passar para a próxima”, um caminho diferente do retry daqui. Existe ainda a lista de “Troca de conta direta em códigos de erro especificados” (padrão 402): falhas que correspondem aos status codes do upstream da lista não são reenviadas na mesma conta — o gateway passa direto para a próxima conta da fila e continua tentando (a troca também consome “Retries trocando de conta”), e só quando elas se esgotam com falha é que o erro é retornado ao cliente.", "请求重试": "Retry de requisições", "请至少选择一个提供商": "Selecione pelo menos um provedor", "请输入同步密码": "Digite a senha de sincronização", "请输入当前密码": "Digite a senha atual", "请输入服务端密钥": "Digite a chave secreta", "请选择可用的标识请求头": "Selecione um cabeçalho de identificação disponível", "请选择归属客户端": "Selecione o cliente de destino", "读取云同步设置失败:{message}": "Falha ao ler as configurações de sincronização na nuvem: {message}", "读取失败:{message}": "Falha ao ler: {message}", "读取完整非流式响应体允许的最大时间(秒),默认 300 秒,范围 1~3600。": "Tempo máximo permitido para ler o corpo completo de uma resposta não streaming (segundos), padrão 300 segundos, faixa 1~3600.", "读取网关信息失败:{message}": "Falha ao ler as informações do gateway: {message}", "读取远端…": "Lendo o remoto…", "读取远端信息失败:{message}": "Falha ao ler as informações remotas: {message}", "调用方声明": "Declaração do solicitante", "调试报文": "Payloads de debug", "调试模式": "Modo de depuração", "调试模式设置已刷新": "Configurações do modo debug atualizadas", "负载均衡": "Balanceamento de carga", "账号列表": "Lista de contas", "账号导入 / 导出": "Importar / exportar contas", "账号路由": "Roteamento de contas", "账号页表格的两项显示偏好,只存在本机(localStorage),不影响账号数据与转发。「积分合计只统计当前筛选出来的账号」:账号页每一家的分组带右侧有一枚「可用合计」,默认按整组求和 —— 不受筛选、搜索影响,被筛掉的账号也计入(余额是资产,禁用也只表示不参与转发,额度仍在账上)。打开这一项后改为只累加当前可见的行:例如筛出 1 个 100 积分的账号,合计就是 100,而不是同组两个账号之和 1,000。分页不参与这个口径 —— 翻页看的是同一份结果的不同屏,合计不随页码变化。「隐藏账号名」与表头「账号」旁边那颗眼睛是同一个开关:打开后账号列的名字整体显示成星号,适合截图分享时遮挡账号。": "Duas preferências de exibição da tabela de contas. Ficam apenas nesta máquina (localStorage) e não afetam dados de conta nem o encaminhamento. \"Somar apenas as contas visíveis no filtro atual\": cada faixa de provedor na página de contas mostra um selo \"Total disponível\" e, por padrão, ele soma o grupo inteiro — filtros e busca não o alteram, e contas filtradas ainda contam (saldo é ativo; desativar apenas mantém a conta fora do encaminhamento, o crédito permanece). Ative para somar apenas as linhas visíveis: filtre até uma conta com 100 créditos e o total mostra 100, não 1.000 (a soma das duas contas do grupo). A paginação não participa desta regra — páginas são apenas telas diferentes do mesmo resultado, então o total não muda ao virar páginas. \"Ocultar nomes das contas\" é o mesmo botão do olho ao lado do cabeçalho \"Conta\": quando ativado, os nomes na coluna de contas aparecem como asteriscos, útil para capturas de tela.", "账户": "Conta", "超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件。把天数改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。可填范围为 1–3650 天。请求日志 / 按天聚合 / 签到记录已全量保留、不再自动删除,要清历史请到对应页面手动清空。": "Qualquer coisa além do período de retenção é excluída: os logs de eventos são eventos do sistema, como login, troca de conta e switch 429. Diminuir o valor (por exemplo, de 30 para 7 dias) e salvar exclui imediatamente os dados históricos excedentes, e isso não pode ser desfeito; aumentar ou manter o valor não exclui nada. O intervalo permitido é de 1–3650 dias. Logs de requisições, agregados diários e registros de check-in agora são mantidos integralmente e nunca excluídos automaticamente; para limpar o histórico, use a página correspondente.", "超出的历史数据会被立即删除,且不可恢复。": "Os dados históricos excedentes serão excluídos imediatamente, sem possibilidade de recuperação.", "超时": "Timeout", "超时设置已刷新": "Configurações de timeout atualizadas", "跟随模型配置": "Seguir configuração do modelo", "跟随系统 · 浅色 · 深色": "Sistema · Claro · Escuro", "跟随默认": "Seguir padrão", "跨域访问": "CORS", "路由": "Roteamento", "路由组只使用组内成员;普通路由只使用参与范围内的账号和模型。": "Grupos de rotas usam apenas seus membros. Rotas comuns usam apenas contas e modelos dentro do escopo de participação.", "路由设置已刷新": "Configurações de roteamento atualizadas", "跳过 {n} 个": "Ignorados: {n}", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;负载均衡是每条请求换下一位,把负载摊到各个账号上。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时)、被 429 的账号垫底排到队尾 30 分钟、余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 前两层可以在下面按需开关,限制器由账号的「限制器」设置管。": "Em que ordem as contas são escolhidas ao encaminhar uma requisição: ① a \"Estratégia de roteamento\" define a regra da fila — na Ordem estrita, a posição 1 atende todas as requisições até não conseguir responder (limite / falha / cota esgotada) antes de passar à próxima; no Balanceamento de carga, cada requisição vai para a próxima conta, espalhando a carga. ② A \"Aderência de sessão\" mantém a mesma sessão (mesmo modelo + mesmas mensagens iniciais) na mesma conta sempre que possível — conversas de vários turnos reutilizam o cache de contexto do upstream, menos trocas de conta e menos desperdício; Automático gruda por 5 minutos, Na sessão por 6 horas, Por turno e Desligado não grudam. A posição na fila (primeira coluna da tabela de contas) é a base de toda estratégia; as estratégias se aplicam por cima. O roteamento ainda tem três proteções de autorrecuperação: contas que falham no encaminhamento recuam um pouco (15 minutos iniciais, dobrando a cada falha, teto de 1 hora), contas 429 com cota vão para o fim da fila por 30 minutos, e contas sem cota / acima do limite de tokens do período são seguradas pelo limitador — as duas primeiras podem ser ligadas e desligadas abaixo conforme a necessidade; o limitador é governado pela configuração \"Limitador\" de cada conta.", "转发前压缩对话里内嵌的大图(只改发给上游的副本,生图与图片编辑不受影响)": "Comprimir imagens embutidas grandes nas conversas antes de encaminhar (só a cópia enviada ao provedor muda; geração e edição de imagens não são afetadas)", "转发前将 developer 角色消息转换为 system,兼容不支持 developer 角色的 OpenAI 兼容上游": "Converte mensagens com papel developer para system antes do encaminhamento, para upstreams compatíveis com OpenAI que não suportam o papel developer", "转发失败的账号休息一会儿再回来:15 分钟起步,连续失败翻倍,封顶 1 小时;成功一次立即恢复。目的是「让这次失败先凉一会儿」,免得一条条地反复撞同一个坏账号。": "Uma conta que falha no encaminhamento descansa um pouco antes de voltar: começa em 15 minutos, dobra a cada falha consecutiva, com teto de 1 hora; um único sucesso a restaura na hora. A ideia é deixar a falha esfriar em vez de martelar a mesma conta ruim requisição após requisição.", "转发链路": "Encaminhamento", "轮询间隔": "Intervalo de polling", "软件标识超过 1 KB,已截断保存;匹配仅使用保留部分。": "O identificador excedeu 1 KB e foi truncado. A correspondência usa apenas a parte preservada.", "软件版本": "Versão do software", "轻量模式": "Modo leve", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 套餐池(Start Plan)通道不可用,相关请求会在请求日志里注明原因": "O modo leve está ativado: fechar a janela destrói o processo da interface (liberando cerca de 200 MB de memória) enquanto o gateway continua em segundo plano; com a interface destruída, o canal do pool de planos do ZCode (Start Plan) fica indisponível e as solicitações afetadas registrarão o motivo no log de solicitações", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 活动套餐通道不可用,相关请求会在请求日志里注明原因": "Modo leve ativado: fechar a janela destrói o processo da interface (libera cerca de 200MB de memória) e o gateway continua em segundo plano; enquanto a interface está destruída, o canal do Plano de evento da ZCode fica indisponível e as requisições relacionadas registram o motivo nos logs de requisições", "轻量模式(关窗释放界面内存)": "Modo leve (liberar a memória da interface ao fechar a janela)", "辅助识图": "Leitura assistida de imagens", "辅助识图 · 原模型回答": "Leitura assistida · O modelo original responde", "辅助识图保留原模型回答;切换视觉模型会让视觉模型直接回答。本次授权也包含已设置的模型单独配置。": "A leitura assistida mantém o modelo original para responder; a troca permite que o modelo de visão responda diretamente. Esta autorização também inclui as configurações por modelo.", "辅助识图或切换视觉模型,默认关闭": "Leitura assistida ou troca de modelo de visão, desativada por padrão", "辅助识图配置": "Configuração de leitura assistida", "输入同步密码": "Digitar senha de sincronização", "输入当前登录用的密码": "Digite a senha de login atual", "输入状态码,回车添加": "Digite o status code e pressione Enter para adicionar", "运行形态": "Forma de execução", "近期没有命中样本,不代表未来请求不会命中。": "Nenhuma amostra recente correspondeu; requisições futuras ainda podem corresponder.", "还原": "Restaurar", "还有额度时被 429 的账号排到队尾,30 分钟后自动回到队列(成功转发一次也会立即回来)。它标记的是「疑似共享池被别人抢」,不是「这个账号本身有问题」。⚠️ 注意它与路由策略的配合:在「家内轮询」下,队尾意味着这一家整体被往后排 —— 如果某个提供商的账号被批量限流,它们会集体沉到队尾,那个家可能长时间轮不到。这时可以关掉本项,让 429 过的账号只受冷却约束(冷却到点自动回来)。": "Uma conta com cota que recebe 429 vai para o fim da fila e volta automaticamente após 30 minutos (um encaminhamento bem-sucedido também a traz de volta na hora). Isso sinaliza \"provavelmente o pool compartilhado está sendo drenado por outro\", e não \"esta conta está com problema\". ⚠️ Atenção à interação com a estratégia de roteamento: no \"Rodízio por provedor\", o fim da fila significa que o provedor inteiro é empurrado para trás — se as contas de um provedor forem limitadas em massa, todas afundam para o fim e aquele provedor pode não ser alcançado por muito tempo. Nesse caso desligue isto, deixando as contas 429 sujeitas só ao cooldown (elas voltam sozinhas quando ele expira).", "还没有可用的视觉模型。": "Ainda não há modelo de visão disponível.", "还没有同步过。": "Ainda não sincronizado.", "还没有添加服务器。点右上角「添加」,填入网关所在机器的 IP 或域名与端口。": "Nenhum servidor ainda. Toque em \"Adicionar\" no canto superior direito e informe o IP ou domínio e a porta da máquina que roda o gateway.", "还没有装载任何数据。": "Nenhum dado carregado ainda.", "还没有读到版本信息": "As informações de versão ainda não foram carregadas", "还没有选择模型,这块设置暂时不起作用。": "Nenhum modelo selecionado, então este bloco ainda não faz nada.", "这一份就是「替换 / 追加」模式下网关要发的 system 正文。": "Este é o texto do system que o gateway envia nos modos “Substituir / Anexar”.", "这一项已隐藏": "Este item está oculto", "这一项正在显示": "Este item está visível", "这些模型的请求交给当前路由内可用的视觉模型回答,不再回到原模型。": "As requisições desses modelos são respondidas por um modelo de visão disponível na rota atual, no lugar do modelo original.", "这些模型看到图片时,先把图片交给 {model} 读一遍,再由它们自己结合读到的内容回答。": "Quando esses modelos recebem uma imagem, {model} a lê primeiro, e eles respondem com base no que foi lido.", "这些模型看到图片时,先把图片交给「沿用工具服务的视觉分析模型」读一遍,再由它们自己结合读到的内容回答。": "Quando esses modelos recebem uma imagem, o modelo de visão do serviço de ferramentas a lê primeiro, e eles respondem com base no que foi lido.", "这只模型只负责看图,最终仍由原模型回答。": "Este modelo apenas lê a imagem; quem responde continua sendo o modelo original.", "这只模型直接接收图片与对话,完成本次回答。": "Este modelo recebe as imagens e a conversa e produz esta resposta.", "这台网关未启用机器人校验": "Este gateway não exige verificação de bot", "这台网关没有管理员,用一把已启用的 API Key 访问。": "Este gateway não tem administrador. Acesse com uma API key ativa.", "这条历史请求没有保存识别依据,不能据此自动创建规则。": "Esta requisição histórica não tem evidências de identificação salvas e não pode gerar uma regra automaticamente.", "这条规则已被删除,请关闭编辑后重新添加。": "Esta regra foi excluída. Feche o editor e adicione-a novamente.", "这里只列出已保存的提供商配置;未配置的提供商沿用全局设置,可从下拉框手动添加。用户保存的模式、文件和正文优先于全局设置,「跟随默认」只取消该提供商的模式、文件和正文覆盖。ZCode 套餐池默认由插件按三块装配,客户端系统正文合入第三块,不会自动创建替换规则;手动修改的网关提示词段或关闭开关仍以用户配置为准,能否被接受取决于上游规则。": "Somente as configurações de provedores já salvas aparecem aqui. Provedores não configurados seguem as configurações globais e podem ser adicionados manualmente na lista. Modos, arquivos e textos salvos têm prioridade sobre os globais; Seguir padrão remove apenas essas substituições do provedor. Para o Start Plan da ZCode, o plugin monta três blocos por padrão e incorpora o system do cliente ao terceiro, sem criar uma regra de substituição automaticamente. Blocos do prompt do gateway editados manualmente e a opção de desativar a montagem continuam tendo prioridade; a aceitação depende das regras do upstream.", "进程 PID": "PID do processo", "远程根目录": "Diretório raiz remoto", "远端同一路径下的旧快照。事件日志、请求明细与调试报文不会上传。": "o snapshot antigo no mesmo caminho remoto. Logs de eventos, detalhes de requisições e pacotes de depuração não são enviados.", "远端已有一份快照,将被覆盖": "Já existe um snapshot no remoto e ele será sobrescrito", "远端快照使用了另一把账号密钥,但没有携带密钥文件,无法在本机解密。请在原来那台机器上重新上传一次。": "O snapshot remoto usa uma chave de conta diferente, mas não inclui o arquivo de chave, então não pode ser descriptografado aqui. Envie novamente a partir da máquina original.", "远端快照使用的账号密钥与本机不同。请输入上传那台机器设置的同步密码,用它解出密钥装到本机后再继续下载。": "O snapshot remoto usa uma chave de conta diferente desta máquina. Digite a senha de sincronização definida na máquina que enviou para descriptografar a chave e instalá-la aqui, depois continue o download.", "远端数据与当前版本不兼容": "Os dados remotos são incompatíveis com esta versão", "远端该路径下还没有快照,本次是首次上传。": "Ainda não há snapshot nesse caminho remoto; este é o primeiro envio.", "远端路径:{path}": "Caminho remoto: {path}", "远端还没有可下载的同步数据": "Não há dados de sincronização para baixar no remoto", "连不上这台网关。确认地址与端口正确、网关已启动,且已开启「局域网访问」;用 https 时还要确认证书有效": "Não foi possível alcançar este gateway. Confira o endereço e a porta, se o gateway está rodando e se o \"Acesso pela rede local\" está ativo; no caso de https, confira também se o certificado é válido.", "连不上这台网关。请确认地址、端口与防火墙设置,网关需已启动;桌面端请在「设置 → 网关 → 网络访问」开启「允许其他设备访问网关」。使用 HTTPS 时还需确认证书有效。": "Não foi possível alcançar este gateway. Verifique o endereço, a porta, o firewall e se o gateway está em execução. No aplicativo desktop, ative Permitir que outros dispositivos acessem o gateway em Configurações → Gateway → Acesso pela rede. Para HTTPS, verifique também se o certificado é válido.", "连接中超时": "Timeout de conexão", "连接失败:{message}": "Falha na conexão: {message}", "连续失败到阈值后把这个账号整个打开(默认关)。与失败退避的分工:退避管「单次失败先凉一会儿」,惩罚轻、自动恢复;熔断管「这个账号现在整体不对劲,别再一条条地试」,要连续成功若干次才关。打开期间该账号被跳过,除非全场只剩它 —— 那时仍放行试一次。": "Desliga esta conta por inteiro depois que as falhas consecutivas atingem um limiar (desligado por padrão). Divisão de papéis com o recuo por falha: o recuo cuida de \"deixar uma falha única esfriar\" — penalidade leve, recuperação automática; o disjuntor cuida de \"esta conta está ruim como um todo, pare de tentar uma a uma\" e só fecha após vários sucessos consecutivos. Enquanto aberto, a conta é pulada — a menos que seja a única restante; nesse caso ela ainda recebe uma tentativa.", "追加": "Anexar", "追加网关提示词": "Anexar prompt do gateway", "退出失败:{message}": "Falha ao sair: {message}", "退出登录": "Sair", "退出这台服务器的登录,不影响其他服务器": "Sai apenas deste servidor; os demais não são afetados", "选好接管回答的视觉模型后这块设置才会生效。": "Este bloco passa a valer quando um modelo de visão para responder é escolhido.", "选好视觉模型后这块设置才会生效。": "Este bloco passa a valer quando um modelo de visão é escolhido.", "选定提供商": "Provedor selecionado", "选择一个或多个模型": "Selecione um ou mais modelos", "选择位置并加密备份": "Escolher local e criptografar backup", "选择备份文件并恢复": "Escolher um arquivo de backup e restaurar", "选择提供商(可多选)": "Selecionar provedores (múltipla seleção)", "选路规则": "Regras de seleção", "选项与默认值由已启用插件提供;你保存的覆盖值不会被插件更新替换。": "Os plugins ativados fornecem estas opções e valores padrão. Atualizações do plugin não substituem suas configurações salvas.", "选项与默认值由插件提供,你保存的修改不会被插件更新覆盖。切换提供商不会丢失未保存的修改。": "As opções e os valores padrão vêm dos plugins. Atualizações de plugins não sobrescrevem suas alterações salvas. Trocar de provedor mantém as edições não salvas.", "透传": "Passthrough", "透传客户端 system": "Passthrough do system do cliente", "透传客户端 system(默认)": "Passthrough do system do cliente (padrão)", "通常是网络问题,点右侧重试": "Normalmente é um problema de rede — toque em Repetir", "通用": "Geral", "遇到 Bug、报错或异常行为": "Bugs, erros ou comportamentos anormais", "配置目录下的 agent2api.db(账号、日志、请求记录、调试报文与设置都在里面)。": "O agent2api.db no diretório de configuração (contas, logs, registros de requisições, payloads de debug e configurações ficam todos nele).", "采用本规则": "Usa esta regra", "重启后生效,不影响当前操作": "Entra em vigor após reiniciar; nada do que você está fazendo é interrompido", "重命名": "Renomear", "重命名只更新分类显示名,不拆分历史用量,也不重新归类历史请求。": "Renomear altera apenas o nome exibido, sem dividir o uso anterior ou reclassificar requisições históricas.", "重命名客户端分类": "Renomear categoria de cliente", "重复清理": "Repetir limpeza", "重复清理直到不再变化(仅正则删除)": "Repetir até não haver mudanças (somente exclusão por expressão regular)", "重新读取会替换当前未保存的草稿。": "Recarregar substitui o rascunho atual não salvo.", "重新读取设置": "Recarregar configuração", "重编码质量": "Qualidade de recodificação", "重置会清空管理员账号与密码,面板将回到「未注册」状态。": "A redefinição apaga a conta e a senha do administrador e devolve o painel ao estado \"não registrado\".", "重置管理员": "Redefinir administrador", "重试设置已刷新": "Configurações de retry atualizadas", "重试间隔": "Intervalo entre retries", "铸造守卫每隔多久看一次库存(毫秒)。只影响发现缺货的反应速度 —— 库存够用时轮询不会铸造任何令牌。默认 2500 毫秒,可填 1000–30000。": "De quanto em quanto tempo o guarda de cunhagem olha o estoque (milissegundos). Afeta só a rapidez de perceber a falta — com estoque suficiente, o polling não cunha nada. Padrão 2500 ms; aceita 1000–30000.", "长边像素上限": "Limite do lado maior (px)", "问题反馈": "Relatar um problema", "阿里云 OSS": "Alibaba Cloud OSS", "限流中账号": "Contas limitadas", "随包内嵌的快照(发版时的那份)": "Snapshot embutido no app (o da versão lançada)", "隐藏 {name}": "Ocultar {name}", "隐藏分组 {name}": "Ocultar grupo {name}", "隐藏用户名": "Ocultar nome de usuário", "隐藏账号名(显示成星号)": "Ocultar nomes das contas (mostrar asteriscos)", "隐藏这一组": "Ocultar este grupo", "非流式响应超时": "Timeout de resposta não streaming", "面板登录": "Login do painel", "面板端口": "Porta do painel", "面板管理员账号": "conta de administrador do painel", "韩语": "coreano", "项目来源": "Origem do projeto", "预览不发送模型请求,也不修改历史记录。": "A prévia não chama modelos nem modifica registros históricos.", "预览中…": "Gerando prévia…", "预览匹配": "Pré-visualizar correspondências", "预设": "Predefinição", "首选不可用时再依次尝试备选。": "Se a primeira opção não estiver disponível, os alternativos são tentados em ordem.", "首选不可用时再依次尝试;留空则停止并说明原因。": "Tentados em ordem quando a primeira opção não estiver disponível; vazio significa parar e explicar o motivo.", "验证方式": "Método de verificação", "验证码令牌池": "Pool de tokens de captcha", "验证码令牌池设置已刷新": "Configurações do pool de tokens de captcha atualizadas", "验证码库存的参考目标,默认 3 个,可填 1–10。只影响库存状态展示,不会因为低于目标自动生成令牌或弹出验证码。": "Meta de referência do estoque: padrão 3, entre 1 e 10. Afeta apenas a exibição; ficar abaixo da meta nunca gera tokens nem abre a verificação automaticamente.", "高级设置": "Configurações avançadas", "默认 10000 条,按日志级别分配保留容量,超出后清理最旧的记录;同时受保留天数限制。": "Padrão de 10.000 registros, com capacidade distribuída por nível de log. Os registros excedentes mais antigos são removidos; os dias de retenção também se aplicam.", "默认 1000000 条(100 万),超出后清理最旧的请求记录及其原始正文,不影响按天聚合报表;同时受保留天数限制。": "Padrão de 1.000.000 de registros. Os registros excedentes mais antigos e seus corpos originais são removidos sem afetar os relatórios agregados diários; os dias de retenção também se aplicam.", "默认 5 分钟。间隔内的变化合并为最新快照,到期后上传;手动上传不受限制。失败后会延长等待并自动重试。": "O padrão é 5 minutos. As alterações durante o intervalo são reunidas no snapshot mais recente e enviadas ao final da espera. Uploads manuais não são limitados. Em caso de falha, o sistema aumenta a espera e tenta novamente automaticamente.", "默认仅本机可访问(127.0.0.1)。开启后监听所有 IPv4 网卡(0.0.0.0),访问范围由网络与防火墙决定,不限于局域网,也不会自动开放到公网。开启前必须注册面板管理员;管理接口需要管理员会话或网关 Key,API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。「同时开放网页管理面板」默认关闭,开启后可从其他设备的浏览器登录管理;关闭它不影响 API 转发和本机桌面管理。修改任一开关都需要重启应用。": "Por padrão, somente esta máquina pode acessar (127.0.0.1). Ao ativar, o gateway escuta em todas as interfaces IPv4 (0.0.0.0); o acesso depende da rede e do firewall, não se limita à rede local e não é aberto automaticamente à internet. É necessário registrar um administrador do painel antes. A API de gerenciamento exige uma sessão de administrador ou chave do gateway; chamadas à API exigem uma chave ativa, criada automaticamente como padrão se necessário. O painel web fica desativado por padrão. Ative-o para entrar pelo navegador de outro dispositivo; desativá-lo não afeta o encaminhamento da API nem o gerenciamento desktop local. Alterar qualquer uma das opções exige reiniciar o aplicativo.", "默认值通常够用,出问题时才需要调": "Os padrões costumam bastar; ajuste só quando algo der errado", "默认关闭。开启后下一次 Codex 请求立即生效,不用重启;只对 Codex 来源的 /v1/responses 请求补阶段标记,其它客户端与 /v1/chat/completions 不受影响。": "Desativado por padrão. Ao ativar, vale já na próxima requisição do Codex, sem reiniciar; os marcadores de fase são adicionados apenas a requisições /v1/responses com origem Codex, e outros clientes e /v1/chat/completions não são afetados.", "默认关闭。改动立即生效,不用重启;关闭期间的跨源请求会被预检拦下。": "Desativado por padrão. As mudanças valem na hora, sem reiniciar; enquanto estiver desativado, as requisições de outra origem são barradas no preflight.", "默认关闭窗口不会退出程序,而是把窗口缩到系统托盘,转发继续在后台运行(OpenAI 客户端不受影响);要彻底退出程序,请在托盘图标上右键选「退出」。关掉这个开关后,点关闭按钮即退出程序、转发随之中断。「开机自动启动」开启后,登录系统时会自动启动本程序(通常直接驻留托盘),不需要手动打开。": "Por padrão, fechar a janela não encerra o programa: ela é recolhida para a bandeja do sistema e o encaminhamento continua rodando em segundo plano (clientes OpenAI não são afetados). Para encerrar o programa de vez, clique com o botão direito no ícone da bandeja e escolha “Sair”. Com este switch desativado, clicar no botão de fechar encerra o programa e o encaminhamento é interrompido. Com “Iniciar com o sistema” ativado, o programa inicia automaticamente ao entrar no sistema (normalmente já na bandeja), sem precisar abri-lo manualmente.", "默认应用全部提供商(包含之后新增的插件与自定义提供商)。指定范围后,未选中的提供商不做指纹脱敏;清空选择自动回到全部提供商。": "Aplica-se a todos os provedores por padrão, incluindo plugins e provedores personalizados adicionados depois. Ao selecionar um escopo, os outros provedores não são mascarados. Limpar a seleção volta a todos os provedores.", "默认开启。只改 role 字段本身,消息内容与顺序都不动;本项只改发给上游的副本,客户端看到的响应内容不变。": "Ativado por padrão. Só o campo role muda — conteúdo e ordem das mensagens ficam intactos; isto reescreve apenas a cópia enviada ao upstream, e o que o cliente vê nunca muda.", "默认开启。只改发给上游的副本,客户端看到的响应与原图都不变;请求日志里保存的是客户端发来的原图,不是压缩后的版本。只作用在对话链路,生图 / 图片编辑不经过这里。改完对下一个请求立即生效,不用重启。": "Ativado por padrão. Apenas a cópia enviada ao provedor é alterada; a resposta e a imagem original vista pelo cliente permanecem iguais, e o log de requisições guarda a imagem original do cliente, não a versão comprimida. Aplica-se somente ao caminho de chat — geração e edição de imagens não passam por aqui. As alterações valem a partir da próxima requisição, sem reiniciar.", "默认开启。命中明细会记进请求日志的「敏」标签(悬停可看命中了哪几条规则)。本项只改发给上游的副本,客户端看到的响应内容不变。": "Ativado por padrão. Os detalhes das ocorrências são registrados na tag “PS” dos logs de requisições (passe o mouse para ver quais regras foram acionadas). Esta opção altera apenas a cópia enviada ao upstream; o conteúdo da resposta que o cliente vê não muda.", "默认开启并应用全部提供商。编辑词表或应用范围后点击「保存设置」,下一次请求立即生效,不用重启。命中明细仍记进请求日志的「敏」标签。": "Ativado para todos os provedores por padrão. Edite as regras ou o escopo e clique em Salvar configurações; a próxima requisição usa as alterações sem reiniciar. As correspondências continuam registradas na etiqueta de mascaramento do log.", "默认网关只监听 127.0.0.1,只有本机能访问。开启后网关改听所有网卡,同一局域网内的设备可以把 API 地址指向本机 IP 一起使用。出于安全考虑,开启前必须先注册一个面板管理员:管理接口从此要求管理员会话或网关 Key,模型额度不会对局域网裸奔;一把启用的网关 Key 都没有时,转发接口也会拒绝服务,直到创建第一把。改动需要重启应用生效。「同时开放网页管理面板」把管理界面也出给局域网(其他设备的浏览器打开本机 IP 即可管理),默认关闭 —— 桌面端的面板仍只由本程序自己出。": "Por padrão, o gateway escuta apenas 127.0.0.1 e só esta máquina tem acesso. Ao ativar, o gateway passa a escutar todas as interfaces de rede e dispositivos na mesma LAN podem usar a API apontando o endereço para o IP desta máquina. Por segurança, antes de ativar é obrigatório registrar um administrador do painel: a interface de administração passa a exigir sessão de administrador ou chave do gateway, e a cota dos modelos não fica exposta na LAN; quando não há nenhuma chave do gateway ativa, a interface de encaminhamento também recusa atendimento até que a primeira seja criada. A mudança exige reiniciar o aplicativo para ter efeito. “Também abrir o painel de administração web” disponibiliza a interface de administração na LAN (o navegador de outros dispositivos abre o IP desta máquina para gerenciar); desativado por padrão — o painel do desktop continua sendo servido apenas pelo próprio programa.", "({n} 个整组隐藏)": " ({n} grupos ocultos)", "({n} 行)": " ({n} linhas)", "({n} 项被覆盖)": " ({n} itens sobrescritos)", "(全部为默认值)": " (todos com valores padrão)", "(官方原文)": " (texto oficial)", "(已存一份正文,{n} 行;切成「替换 / 追加」后生效)": " (há um texto salvo, {n} linhas; passa a valer ao mudar para “Substituir / Anexar”)", "(已改)": " (alterado)", "(已注册过会跳过这一步,直接生效)。": " (se já estiver registrado, esta etapa é ignorada e a ativação é imediata).", "(当前生效的就是这一份,{n} 行)": " (esta é a versão em vigor, {n} linhas)", "(文件:{path})": " (arquivo: {path})", "(未生效)": "(sem efeito)", ",{items}": ", {items}", ",{time}": ", {time}", ",以及代理池 / 订阅里可能存在的代理凭据。请使用只有你能访问的私有存储;账号密钥由同步密码单独加密,泄露存储本身不等于泄露账号。": ", além de eventuais credenciais de proxy no pool de proxies / assinaturas. Use armazenamento privado acessível apenas por você; a chave da conta é criptografada separadamente com a senha de sincronização, então vazar o armazenamento não expõe suas contas.", ",包括恢复后需要重新登录管理面板。": " pelo arquivo de backup selecionado, inclusive o novo login no painel após a restauração.", ",可直接用于登录。请妥善保管,不要外传或上传到公共位置。": ", e pode ser usado diretamente para login. Guarde-o com cuidado; não o compartilhe nem o envie para locais públicos.", ",文件里后续的改动在清空这里之前不再生效": ", e alterações posteriores no arquivo deixam de valer até que este campo seja limpo", ",替换前的数据已备份为 {name}": ", os dados pré-substituição foram backupados como {name}", ",自定义提供商新增 {added} 个、更新 {updated} 个": ", provedores personalizados: {added} adicionados, {updated} atualizados", ";开关关闭时词表不执行": "; as regras não são executadas quando o mascaramento está desativado", ";网页管理面板已一并开放(浏览器打开同一地址)": "; o painel de administração web também está aberto (acesse pelo mesmo endereço no navegador)", "AI 调整后的 JSON({n} 字符)": "JSON ajustado pela IA ({n} caracteres)", "CodeArts 的账号余额还剩多少?": "Quanto crédito ainda resta na conta CodeArts?", "JSON 文件会以文本发送给当前对话模型,其中的凭证也会保存在这条会话里。": "Arquivos JSON são enviados como texto ao modelo atual da conversa, e as credenciais neles também ficam salvas nesta conversa.", "[已省略 {n} 字符的 JSON]": "[JSON de {n} caracteres omitido]", "attachment 与 content 只能给一个": "Informe apenas attachment ou content", "section 只能是 models / mappings / both": "section deve ser models / mappings / both", "{n} 个候选,{m} 个跳过": "{n} candidatos, {m} ignorados", "{n} 条映射": "{n} mapeamentos", "{n} 条请求日志": "{n} registros de requisições", "{n} 条运行日志": "{n} registros de execução", "{requests} 次请求,{tokens} Token": "{requests} requisições, {tokens} tokens", "「{name}」是空文件。": "O arquivo \"{name}\" está vazio.", "「{name}」看起来是二进制文件,助手只接收 JSON 文本。": "O arquivo \"{name}\" parece ser binário; o assistente aceita apenas texto JSON.", "「{name}」超过 {n} MB,请换一个小一点的 JSON 文件。": "O arquivo \"{name}\" tem mais de {n} MB. Escolha um JSON menor.", "「{name}」超过 {n} MB,请换一个小一点的 JSON 文件,或去添加账号页导入。": "O arquivo \"{name}\" tem mais de {n} MB. Escolha um JSON menor ou importe pela página Adicionar conta.", "一次最多 {n} 个文件。": "No máximo {n} arquivos por vez.", "一次最多 {n} 个文件,多出的没有添加。": "No máximo {n} arquivos por vez; os excedentes não foram adicionados.", "一次最多 {n} 张图片。": "No máximo {n} imagens por vez.", "一次最多 {n} 张图片,多出的没有添加。": "No máximo {n} imagens por vez; as imagens adicionais não foram incluídas.", "下载图片": "Baixar imagem", "今天用了多少 Token?": "Quantos tokens usei hoje?", "会话响应不完整": "Resposta de sessão incompleta", "保存位置": "Local de salvamento", "保存图片失败:{message}": "Falha ao salvar imagem: {message}", "保存思考等级失败:{message}": "Falha ao salvar o nível de raciocínio: {message}", "修改上传或已生成的图片,支持多张参考图。": "Edita imagens enviadas ou geradas usando várias referências.", "修改文件": "Modificar arquivos", "修改模型能力": "Editar capacidades do modelo", "凭证会保存到网关;同一提供商下同一身份的账号会更新原凭证。文件若是整库导出的 accounts 数组,会按文件里的账号批量导入。": "As credenciais serão salvas no gateway. Uma conta com a mesma identidade no mesmo provedor terá as credenciais atualizadas. Se o arquivo for uma exportação completa com um array accounts, todas as contas dele serão importadas.", "分叉": "Criar ramificação", "分叉会话失败:{message}": "Falha ao ramificar a conversa: {message}", "分支": "Ramificação", "删除会话失败:{message}": "Falha ao excluir a sessão: {message}", "删除消息": "Excluir mensagem", "删除这条对话": "Excluir esta conversa", "删除这条对话?": "Excluir esta conversa?", "删除这条消息?模型消息关联的工具结果也会一并删除。": "Excluir esta mensagem? Os resultados de ferramentas associados à mensagem do modelo também serão excluídos.", "助手设置没读出来,暂时存不了对话模型 —— 看输入框下方的提示。": "As configurações do assistente não puderam ser lidas, então o modelo de chat ainda não pode ser salvo. Veja a dica abaixo da caixa de entrada.", "助手设置没读出来,暂时存不了思考等级 —— 看输入框下方的提示。": "Não foi possível carregar as configurações do assistente, então o nível de raciocínio não pode ser salvo agora — veja a dica abaixo da caixa de entrada.", "助手设置没读出来,现在还不能发消息 —— 看输入框下方的提示。": "As configurações do assistente não puderam ser lidas, então ainda não é possível enviar mensagens. Veja a dica abaixo da caixa de entrada.", "单张参考图不能超过 10 MiB": "Cada imagem de referência pode ter no máximo 10 MiB", "历史会话": "Histórico de sessões", "历史对话": "Histórico de conversas", "原始 ID 的默认绑定不能删除,请关闭它的开关": "O vínculo padrão do ID original não pode ser excluído; desative-o pelo interruptor", "原始报文或对话正文已省略": "Payload original ou conteúdo da conversa omitido", "参数 {name} 只能是:{values}": "O parâmetro {name} deve ser um destes valores: {values}", "参数 {name} 必须是不小于 {min} 的整数": "O parâmetro {name} deve ser um inteiro maior ou igual a {min}", "参数 {name} 必须是不超过 {max} 个字符的字符串": "O parâmetro {name} deve ser uma string com no máximo {max} caracteres", "参数 {name} 必须是布尔值": "O parâmetro {name} deve ser booleano", "参数 {name} 必须是有效日期(YYYY-MM-DD)": "O parâmetro {name} deve ser uma data válida (YYYY-MM-DD)", "参数 {name} 必须是毫秒时间戳": "O parâmetro {name} deve ser um timestamp em milissegundos", "参数不完整(需要 provider / id / alias / action)": "Parâmetros incompletos (provider / id / alias / action obrigatórios)", "参考图仅支持 PNG、JPEG、WebP": "Imagens de referência devem ser PNG, JPEG ou WebP", "参考图会交给图片编辑工具,当前对话模型不会读取图片。": "As referências são enviadas à ferramenta de edição; o modelo de conversa atual não as lê.", "参考图片列表不能为空": "A lista de imagens de referência não pode estar vazia", "参考图片编号不存在": "O número da imagem de referência não existe", "参考图片请使用附件编号、已生成图片 ID 或 HTTP(S) 链接": "Use o número do anexo, o ID de uma imagem gerada ou um link HTTP(S) para imagens de referência", "发消息或做任务…(Enter 发送,Shift+Enter 换行,可粘贴图片或 JSON 文件)": "Envie uma mensagem ou tarefa… (Enter envia, Shift+Enter quebra linha; imagens e arquivos JSON podem ser colados)", "发起模型测试": "Executar teste de modelo", "受限": "Restrito", "变更前确认": "Confirmar antes de alterar", "只支持图片和 JSON 凭证文件(.json / .info)": "Somente imagens e arquivos de credencial JSON (.json / .info) são suportados", "只支持图片和 JSON 凭证文件(.json / .info);「{name}」已跳过。": "Somente imagens e arquivos de credencial JSON (.json / .info) são suportados; \"{name}\" foi ignorado.", "各账号余额还剩多少?": "Quanto de saldo resta em cada conta?", "启用 / 禁用模型": "Habilitar / desabilitar modelos", "启用 / 禁用账号": "Habilitar / desabilitar contas", "命令": "Comando", "哪些模型在多家重复了?": "Quais modelos estão duplicados entre provedores?", "图片 {n}": "Imagem {n}", "图片工具包含不支持的参数:{name}": "A ferramenta de imagens recebeu um parâmetro não suportado: {name}", "图片工具没有返回可显示的图片": "A ferramenta não retornou imagens que possam ser exibidas", "图片工具缺少当前会话": "A ferramenta de imagens não tem uma sessão atual", "图片工具需要提示词和图片模型": "A ferramenta de imagens exige um prompt e um modelo de imagens", "完全访问": "Acesso total", "实时余额查询会请求上游,并可能触发已配置的自动禁用规则。": "Consultas de saldo em tempo real enviam requisições ao upstream e podem acionar as regras configuradas de desativação automática.", "对指定模型发一次真实请求,回报连通性与耗时。": "Envia uma requisição real ao modelo indicado e informa conectividade e latência.", "对话由网关转发到上游模型,用量计入请求日志": "A conversa é encaminhada ao modelo upstream pelo gateway; o uso é registrado no log de requisições", "导入账号文件": "Importar arquivo de conta", "将导入一个账号:": "Importar uma conta:", "就绪": "Pronto", "工具「{name}」未获授权,未执行。": "A ferramenta \"{name}\" não foi autorizada e não foi executada.", "工具调用已达本轮上限,已停止继续执行。": "O limite de chamadas de ferramentas deste turno foi atingido; a execução foi interrompida.", "已从这条消息分叉为新对话": "Uma nova conversa foi criada a partir desta mensagem", "已停止": "Interrompido", "已停止生成": "Geração interrompida", "已完成 {n} 项改动": "{n} alterações concluídas", "已完成 {n} 项,剩余 {m} 项未执行": "{n} itens concluídos; os {m} restantes não foram executados", "已导入账号「{name}」": "Conta \"{name}\" importada", "已生成 {n} 张图片": "{n} imagens geradas", "已调用": "Chamado", "开关模型的对外可用性,不改其它属性。": "Alterna a disponibilidade externa do modelo sem alterar outros atributos.", "开始日期不能晚于结束日期": "A data inicial não pode ser posterior à data final", "开始时间必须早于结束时间": "O horário inicial deve ser anterior ao horário final", "当前安装包未包含原生图片保存能力,请更新应用。": "Este pacote do aplicativo não inclui salvamento nativo de imagens. Atualize o aplicativo.", "当前客户端缺少读取接口:{name}": "Este cliente não possui a interface de leitura: {name}", "当前对话没有可读取的文本附件:请先把 JSON 文件发给助手": "Não há anexo de texto legível nesta conversa. Envie o arquivo JSON ao assistente primeiro.", "思考过程": "Raciocínio", "思考:跟随模型": "Raciocínio: seguir modelo", "成功率": "Taxa de sucesso", "打开会话失败:{message}": "Falha ao abrir a sessão: {message}", "执行中": "Em execução", "执行结果": "Resultado da operação", "批量导入:新增 {added}、更新 {updated}、失败 {failed}": "Importação em lote: {added} adicionadas, {updated} atualizadas, {failed} com falha", "把凭证文件交给对应提供商解析并落库;同身份账号会更新凭证。": "Entrega o arquivo de credencial ao provedor correspondente para analisar e salvar; uma conta com a mesma identidade terá as credenciais atualizadas.", "把重复的模型加上家名前缀区分开": "Prefixar modelos duplicados com o nome do provedor para diferenciá-los", "拒绝": "Negar", "按提供商名称查询模型、能力、来源与映射,支持自定义提供商。": "Consulta modelos, capacidades, fontes e mapeamentos pelo nome do provedor, incluindo provedores personalizados.", "按提示词生成图片。": "Gerar imagens a partir do prompt.", "按提示词编辑参考图片。": "Editar imagens de referência conforme o prompt.", "按文件内容判断": "Inferir pelo conteúdo do arquivo", "按文本生成图片,结果直接显示在对话中。": "Gera imagens a partir de texto e as exibe na conversa.", "提供商 id「{provider}」格式不正确": "ID de provedor inválido: \"{provider}\"", "提供商「{name}」匹配到多家,请使用提供商 ID:{list}": "O provedor \"{name}\" corresponde a várias entradas. Use um ID de provedor: {list}", "改上下文窗口 / 最大输出 Token / 工具调用等能力位。": "Edita flags de capacidade como janela de contexto, máximo de tokens de saída e chamadas de ferramentas.", "改某一家的整组顺位(先试哪一家)。": "Reordena o grupo inteiro de um provedor (qual deles é tentado primeiro).", "改账号在全局队列里的名次,决定主备与切换顺序。": "Altera a posição da conta na fila global, definindo titular/reserva e ordem de failover.", "文件内容是空的": "O conteúdo do arquivo está vazio", "文件过大({n} 字符):请先用 read_attachment 分段查看,或改用添加账号页导入": "Arquivo muito grande ({n} caracteres). Leia em partes com read_attachment ou importe pela página Adicionar conta", "新增 / 删除映射名,支持批量加前缀与同名合并到多家。": "Adiciona/remove nomes de mapeamento, com prefixação em lote e fusão de um mesmo nome em vários provedores.", "新建会话": "Nova sessão", "无法判断这些凭证属于哪家提供商。请先问用户,或用 provider 指定(常见 id:{list})": "Não foi possível identificar o provedor destas credenciais. Pergunte ao usuário ou informe provider (ids comuns: {list})", "无法读取图片": "Não foi possível ler a imagem", "最高": "Máximo", "有什么可以帮你?可以问配置、查余额、让我改模型设置。": "Como posso ajudar? Pergunte sobre configuração, consulte saldos ou peça para eu mudar ajustes de modelo.", "未命名对话": "Conversa sem título", "未知的工具:{name}": "Ferramenta desconhecida: {name}", "权限模式": "Modo de permissão", "极低": "Mínimo", "查看 API Key 详情必须指定 API Key 身份": "Informe a identidade da API Key para ver seus detalhes", "查看图片": "Ver imagem", "查看模型候选账号、跳过原因和当前路由策略。": "Mostra contas candidatas, motivos de exclusão e a estratégia atual de roteamento do modelo.", "查询凭证、插件和定时任务等运行事件的脱敏摘要。": "Consulta resumos com dados sensíveis ocultos dos eventos de execução, incluindo credenciais, plugins e tarefas agendadas.", "查询生产请求的 Token 用量、成功率、排行和趋势。": "Consulta uso de tokens, taxa de sucesso, rankings e tendências das requisições de produção.", "查询用量报表": "Consultar relatório de uso", "查询请求日志": "Consultar logs de requisições", "查询请求状态、耗时、账号、错误与重试,不读取对话正文。": "Consulta estado, duração, contas, erros e novas tentativas sem ler o conteúdo das conversas.", "查询账号余额": "Consultar saldo da conta", "查询路由队列": "Inspecionar fila de roteamento", "查询运行日志": "Consultar logs de execução", "标题总结失败:{message}": "Falha ao gerar título: {message}", "标题总结提示词": "Prompt para geração de título", "标题总结模型": "Modelo para geração de título", "标题总结设置已保存": "Configurações de geração de título salvas", "模型「{model}」当前不在可用列表中,请重新选择;也可到「模型管理」或「插件」页检查是否已启用。": "O modelo \"{model}\" não está na lista de disponíveis. Escolha outro; você também pode verificar se ele está habilitado em Gerenciamento de modelos ou na página Plugins.", "模型名称": "Nome do modelo", "模型响应未完整结束,请重试;未执行其中的工具调用。": "A resposta do modelo não terminou completamente. Tente novamente; nenhuma chamada de ferramenta dessa resposta foi executada.", "模型对话": "Conversa com modelo", "模型没有返回内容": "O modelo não retornou conteúdo", "正在思考…": "Pensando…", "正在执行": "Trabalhando", "正在生成,点右侧按钮可停止": "Gerando — toque no botão à direita para parar", "正在读取可用模型…": "Carregando modelos disponíveis…", "正在读取图片…": "Carregando imagem…", "没有可用的模型": "Nenhum modelo disponível", "没有已启用的模型,请先在「模型管理」里启用": "Nenhum modelo habilitado. Habilite algum em Gerenciamento de modelos primeiro.", "没有找到提供商「{name}」,请先不填 provider 查询,或用 keyword 搜索": "O provedor \"{name}\" não foi encontrado. Consulte primeiro sem provider ou pesquise com keyword", "没有找到附件「{ref}」:编号从 1 开始,也可以用文件名": "Anexo \"{ref}\" não encontrado. A numeração começa em 1; também é possível usar o nome do arquivo", "没有提供要修改的项目": "Nenhum item a modificar foi informado", "测一下当前最快的模型通不通": "Testar se o modelo mais rápido no momento responde", "浏览": "Procurar", "消息操作": "Ações da mensagem", "深度推理": "Raciocínio profundo", "添加图片": "Adicionar imagens", "添加图片或 JSON 文件(也可粘贴或拖入)": "Adicionar imagens ou arquivos JSON (também é possível colar ou arrastar)", "添加图片或文件": "Adicionar imagem ou arquivo", "清空全部": "Limpar tudo", "清空历史失败:{message}": "Falha ao limpar o histórico: {message}", "现在有哪些账号被限流?": "Quais contas estão com limite de taxa agora?", "生成图片": "Gerar imagens", "生成的图片": "Imagem gerada", "用户目录": "Pasta do usuário", "看看哪些模型在多家重复了": "Ver quais modelos se repetem em vários provedores", "禁用会把账号移出转发队列,线路可能因此断供。": "Desabilitar remove a conta da fila de encaminhamento; a rota pode ficar sem fornecimento.", "移除图片 {n}": "Remover imagem {n}", "移除文件「{name}」": "Remover arquivo \"{name}\"", "终端": "Terminal", "编辑图片": "Editar imagens", "编辑消息": "Editar mensagem", "聊天附件 {ref}": "Anexo da conversa {ref}", "自定义提供商模块未就绪(请刷新界面后重试)": "O módulo de provedores personalizados não está pronto (atualize a interface e tente novamente)", "获取模型列表": "Listar modelos", "获取账号列表": "Listar contas", "获取账号详情": "Consultar detalhes da conta", "计划": "Plano", "设置模型映射 ID": "Definir ID de mapeamento do modelo", "请先上传参考图片,或先生成一张图片": "Envie uma imagem de referência ou gere uma imagem primeiro", "请提供 attachment 或 content": "Informe attachment ou content", "读取 {name}": "Ler {name}", "读取 {name}({from}-{to} 字符)": "Ler {name} ({from}-{to} caracteres)", "读取凭证状态、限流、并发、代理和限制器的本地快照。": "Lê um retrato local das credenciais, limites de taxa, conexões, proxy e limitadores.", "读取历史会话失败:{message}": "Falha ao carregar o histórico de conversas: {message}", "读取响应不完整:{name}": "Resposta incompleta: {name}", "读取图片失败": "Falha ao ler a imagem", "读取图片失败:{message}": "Falha ao ler a imagem: {message}", "读取文件失败:{message}": "Falha ao ler o arquivo: {message}", "读取模型清单失败": "Falha ao carregar a lista de modelos", "读取聊天里上传的 JSON / .info 文件,支持分页。": "Lê arquivos JSON / .info enviados na conversa, com paginação.", "读取账号、启用状态、优先级与隐藏原因,支持筛选和分页。": "Lê contas, estados de ativação, prioridades e motivos de ocultação, com filtros e paginação.", "读取附件": "Ler anexo", "读各提供商的模型清单、映射名与启用状态。": "Lê a lista de modelos, os nomes de mapeamento e o estado de cada provedor.", "读各账号的额度 / 剩余用量。": "Lê a cota e o uso restante de cada conta.", "调整提供商顺位": "Ajustar ordem dos provedores", "调整账号优先级": "Ajustar prioridade da conta", "账号「{name}」匹配到多条记录,请使用账号 ID:{ids}": "A conta \"{name}\" corresponde a vários registros. Use um ID de conta: {ids}", "账号额度": "Cota da conta", "跟随对话模型": "Seguir modelo da conversa", "跟随模型(不指定)": "Seguir modelo (não especificado)", "跟随网关设置": "Usar a configuração do gateway", "返回": "Voltar", "还没有历史对话": "Ainda não há histórico de conversas", "还没有配置默认模型": "Nenhum modelo padrão configurado ainda", "这一版网关还没有 AI 助手接口(HTTP 404),请升级网关后重试。": "Esta versão do gateway não tem a API do assistente de IA (HTTP 404). Atualize o gateway e tente novamente.", "这一版网关还没有 AI 助手接口(HTTP 404):后端还是旧的,重新编译 / 重启客户端后再试。{message}": "Esta versão do gateway ainda não tem a API do assistente de IA (HTTP 404): o backend está desatualizado. Recompile / reinicie o cliente e tente de novo. {message}", "这一轮来回已达 {n} 次上限,我先停下等你指示(可以换个说法,或拆成几步让我做)。": "Este turno atingiu o limite de {n} idas e voltas, então parei para aguardar sua instrução (reformule, ou divida em algumas etapas).", "这条会话没能存进历史:{message}": "Esta conversa não pôde ser salva no histórico: {message}", "这次工具调用没有保存完成结果,历史回放不会重新执行。": "Nenhum resultado concluído foi salvo para esta chamada. A reprodução do histórico não a executará novamente.", "这里只改本次会话用的模型,不会改网关里保存的默认值。": "Isto muda apenas o modelo desta sessão; o padrão salvo no gateway não é alterado.", "连接网关失败({base}):{message}": "Falha ao conectar ao gateway ({base}): {message}", "选择 API Key": "Selecionar API Key", "选择 API Key…": "Selecionar API Key…", "选择对话模型": "Escolher modelo de conversa", "配置响应不完整": "Resposta de configuração incompleta", "问点什么…": "Pergunte alguma coisa…", "项目": "Projeto", "额度窗口": "Janela de cota", "首轮回答完成后自动总结;这会调用所选模型并消耗额度。": "Gera um título após a primeira resposta. Isso chama o modelo selecionado e consome cota.", " · 检查于 {time}": " · verificado em {time}", " 已发布(当前 {current}),更新日志如下:": " lançada (atual: {current}); notas de versão abaixo:", "Agent2API 一直在更新,是因为有人在背后持续投入。如果它帮到了你,欢迎请作者喝杯咖啡。": "O Agent2API continua sendo atualizado porque alguém segue investindo tempo nele nos bastidores. Se ele ajudou você, considere oferecer um café ao autor.", "GitHub Token 未填写": "Token do GitHub não preenchido", "GitHub 令牌": "Token do GitHub", "GitHub 加速前缀": "Prefixo do acelerador GitHub", "GitHub 接口限流中,请在 {seconds} 秒后重试": "A API do GitHub atingiu o limite de solicitações. Tente novamente em {seconds} segundos.", "GitHub 接口限流中,请在「插件设置」的「GitHub 令牌」中填写凭证,以提高请求限额。": "A API do GitHub atingiu o limite de solicitações. Insira suas credenciais em Token do GitHub, nas Configurações dos plugins, para aumentar o limite.", "GitHub 接口限流中,请在「更新设置」的「GitHub 令牌」中填写凭证,以提高请求限额。": "A API do GitHub atingiu o limite de solicitações. Insira suas credenciais em Token do GitHub, nas Configurações de atualização, para aumentar o limite.", "GitHub 接口限流中,请稍后重试": "A API do GitHub atingiu o limite de solicitações. Tente novamente mais tarde.", "GitHub 源「{source}」限流,{seconds} 秒后可重试(上游未提供恢复时间)": "A fonte GitHub “{source}” atingiu o limite. Tente em {seconds} segundos (sem horário de liberação informado).", "GitHub 源「{source}」限流,请在 {seconds} 秒后重试": "A fonte GitHub “{source}” atingiu o limite. Tente novamente em {seconds} segundos.", "GitHub 访问方式": "Modo de acesso ao GitHub", "GitHub 访问设置已保存": "Configurações de acesso ao GitHub salvas", "QQ 群": "Grupo do QQ", "QQ 群 / Telegram 都在这里": "Grupos do QQ e Telegram estão todos aqui", "QQ 群 {n}": "Grupo do QQ {n}", "Telegram 群": "Grupo do Telegram", "Windows 服务一键更新会核验官方更新包,再由独立升级进程停止服务、备份替换并重新启动。账号与配置保留,确认新版运行后页面自动刷新。": "A atualização verifica o pacote oficial e um processo independente para o serviço, faz backup, substitui os arquivos e o inicia novamente. Contas e configurações são preservadas. A página é recarregada após confirmar a nova versão em execução.", "Windows 服务升级权限或目录保护不符合要求。请以管理员身份重跑新版 install-service.ps1;自定义服务账号或外部托管环境请按原方式升级。": "As permissões do serviço Windows ou a proteção dos diretórios não atendem aos requisitos. Execute o novo install-service.ps1 como administrador. Contas de serviço personalizadas e ambientes gerenciados externamente devem usar seu procedimento habitual.", "Windows 服务部署需要手动升级。请解压新版服务端包,以管理员身份运行 install-service.ps1;账号与配置会保留。": "Serviços do Windows exigem atualização manual. Extraia o novo pacote do servidor e execute install-service.ps1 com privilégios administrativos. Contas e configurações serão preservadas.", "beta 版可能不稳定。两项同时开启时,按版本号选择最高版本,不会降级;安装到正式版或 beta 版后仍保留关注选择。": "Versões beta podem ser instáveis. Com os dois canais ativados, a versão mais alta é selecionada sem downgrade. As escolhas de canal são mantidas após instalar uma versão estável ou beta.", "systemd 一键更新由受限升级程序完成:下载、核验官方校验值、备份替换、重启并确认版本。网关保持普通账号运行,账号与配置不变。": "Um programa restrito cuida da atualização systemd: download, validação oficial, backup, substituição, reinício e confirmação da versão. O gateway continua com uma conta sem privilégios; contas e configurações são preservadas.", "{message};其他线路可重新检查": "{message} Outras rotas podem ser verificadas novamente.", "{ms} 毫秒": "{ms} ms", "{seconds} 秒后可重试": "Tente em {seconds} segundos", "{version} 已就位,服务正在重启,页面会在恢复后自动刷新…({seconds}s)": "{version} está no lugar. O serviço está reiniciando; a página será atualizada automaticamente quando ele voltar… ({seconds} s)", "{version}(预发布)": "{version} (pré-lançamento)", "✅ GitHub 令牌已保存(加密存储,界面不再显示)": "✅ Token do GitHub salvo (armazenado criptografado, não será mais exibido na interface)", "✅ 已加入 beta 版,之后的检查会包含 beta 版": "✅ Você entrou no canal beta; as próximas verificações incluirão versões beta", "✅ 已清除界面保存的 GitHub 令牌(环境变量若配置过则继续生效)": "✅ Token do GitHub salvo na interface removido (se a variável de ambiente estiver configurada, ela continua valendo)", "✅ 已退出 beta 版,之后的检查只看正式版": "✅ Você saiu do canal beta; as próximas verificações veem apenas versões estáveis", "✅ 数据升级完成({n} 项)": "✅ Migração de dados concluída ({n} itens)", "✅ 更新出网已切换为 {label}": "✅ Conexão de saída das atualizações alterada para {label}", "✅ 更新出网已切换为直连": "✅ Conexão de saída das atualizações alterada para conexão direta", "✅ 自动检查更新已保存": "✅ Verificação automática de atualizações salva", "一键更新": "Atualizar com um clique", "一键更新入口不可用,请刷新页面后重试。": "A atualização com um clique está indisponível. Recarregue a página e tente novamente.", "一键更新服务端?": "Atualizar o servidor agora?", "一键更新组件不可用或权限配置不正确。请使用新版安装包执行 sudo bash install.sh --upgrade 修复。": "O componente de atualização está indisponível ou tem permissões incorretas. Execute sudo bash install.sh --upgrade a partir do novo pacote para repará-lo.", "上次 GitHub 限流的等待时间已结束,可重新检查": "A espera do limite anterior do GitHub terminou. Você pode verificar novamente.", "上次结果:{state}": "Resultado anterior: {state}", "上游未提供恢复时间,按 GitHub 建议短暂等待": "Sem horário informado; breve espera conforme recomendado pelo GitHub", "下载中": "Baixando", "下载失败": "Falha no download", "下载失败:{error}": "Falha no download: {error}", "下载已取消,可重新点击「下载并安装」。": "Download cancelado; clique em “Baixar e instalar” para tentar novamente.", "下载已取消,可重新点击「下载并更新」。": "Download cancelado; clique em “Baixar e atualizar” para tentar de novo.", "下载并安装": "Baixar e instalar", "下载并更新": "Baixar e atualizar", "下载服务端包": "Baixar pacote do servidor", "不支持此类请求": "Tipo de solicitação não suportado", "与 gh-proxy.com 属于同一服务的备用线路。": "Rota alternativa do mesmo serviço que gh-proxy.com.", "与网关的软件更新和插件共用设置;APK 下载由手机联网,GitHub 令牌不会发送给加速站。": "Compartilha configurações com atualizações e plugins do gateway. O celular baixa o APK; tokens do GitHub nunca são enviados ao acelerador.", "与软件更新共用出网代理和 GitHub 凭证,修改任意一处都会同步生效。": "Compartilha proxy de saída e credenciais do GitHub com a atualização do aplicativo. Alterações em qualquer lugar valem para ambos.", "个人开发并开源维护,免费使用,也不会收集你的账号数据。如果它帮到了你,欢迎到项目仓库点个 Star 支持一下。": "de forma independente, com uso gratuito, e não coleta os dados da sua conta. Se ela te ajudou, deixe uma Star no repositório do projeto para apoiar.", "仅 beta 版": "Somente beta", "仅官方源": "Somente fonte oficial", "仅插件索引和文件下载,不支持版本查询": "Somente índices de plugins e downloads; sem consultas de versões", "仅正式版": "Somente estáveis", "仓库暂无发布版本。{at}": "O repositório ainda não tem versões publicadas. {at}", "代理列表读取失败": "Falha ao ler a lista de proxies", "令牌已生效,但写入磁盘失败(重启后会丢失)": "O token está ativo, mas não foi possível gravar no disco (será perdido após reiniciar)", "以上状态来自网关;APK 下载会由手机按本机网络重新选择通道。": "Os resultados acima vêm do gateway. O celular seleciona novamente a rota para o APK usando sua própria rede.", "优先使用加速源,访问失败后回退官方源;不会绕过 GitHub 限流冷却。": "Usa o acelerador primeiro e recorre à fonte oficial em caso de falha. Os períodos de espera do GitHub são respeitados.", "优先加速源": "Acelerador preferido", "优先访问官方源,连接失败后尝试加速源;短期记住成功的源,定期恢复官方优先。": "Tenta a fonte oficial primeiro e o acelerador se a conexão falhar. Lembra temporariamente a fonte que funcionou e volta periodicamente a priorizar a oficial.", "允许本机自动检查": "Permitir verificação automática neste dispositivo", "先使用指定加速源,失败后尝试其他已启用的加速源,最后回退官方源。": "Tenta primeiro o acelerador escolhido, depois os demais ativados e, por último, a fonte oficial.", "关于作者": "Sobre o autor", "关注 beta 版更新": "Receber atualizações beta", "关注正式版更新": "Receber atualizações estáveis", "出网线路与 GitHub 令牌设置": "Configurações de conexão de saída e token do GitHub", "出网线路已切换,但写入磁盘失败(重启后会恢复原线路)": "A conexão de saída foi alterada, mas não foi possível gravar no disco (a conexão original será restaurada após reiniciar)", "分别探测版本查询、插件索引和文件下载,选择最快返回有效内容的源;成功线路短期复用,失败自动切换。": "Verifica consultas de versões, índices de plugins e downloads separadamente. Usa a primeira resposta válida, reutiliza a rota por um curto período e alterna em caso de falha.", "分钟({min} ~ {max})": "minutos ({min} ~ {max})", "到 GitHub 发布页下载": "Baixar da página de release do GitHub", "到点自动向 GitHub 查询新版本,查到就走「检测到更新」弹窗;关闭后「检查更新」按钮仍可手动触发": "No horário definido, consulta automaticamente o GitHub em busca de novas versões e, se encontrar, exibe o diálogo “Atualização disponível”. Se desativado, o botão “Verificar atualizações” continua funcionando manualmente", "加入 beta 版": "Entrar no canal beta", "加入交流群": "Entrar na comunidade", "加速源优先": "Acelerador primeiro", "单独设置": "Configurar separadamente", "即将满员": "Quase lotado", "即将满员,请优先加3群、4群": "Quase lotado — prefira o grupo 3 ou 4", "去更新": "Atualizar", "发布页上没有 {wanted} 这个文件": "A página de release não tem o arquivo {wanted}", "发布页上没有对应本机架构的服务端更新包": "A página de release não tem pacote de atualização do servidor para a arquitetura desta máquina", "发布页上的文件被更新源的访问方式过滤掉了,请检查「更新设置」里的 GitHub 访问方式": "Os arquivos da página de release foram filtrados pelo modo de acesso da fonte de atualização. Verifique o modo de acesso ao GitHub em Configurações de atualização.", "发现新版本 {latest}(当前 {current})。{at}": "Nova versão disponível: {latest} (atual: {current}). {at}", "发现新版本 {latest}(当前 {current})。{reason}{at}": "A versão {latest} está disponível (atual: {current}). {reason}{at}", "发现新版本 {latest}(当前 {current}),但该版本没有提供容器内更新包({reason});请在宿主机执行 docker compose pull && docker compose up -d 升级。{at}": "Nova versão {latest} encontrada (atual: {current}), mas esta versão não fornece pacote de atualização dentro do contêiner ({reason}). Atualize no host com docker compose pull && docker compose up -d.{at}", "发现新版本 {latest}(当前 {current}),但这一版没有提供本机安装包({reason});可到 GitHub 发布页手动下载。{at}": "Nova versão {latest} encontrada (atual: {current}), mas esta versão não fornece instalador para esta máquina ({reason}). Você pode baixá-lo manualmente na página de release do GitHub.{at}", "取消下载": "Cancelar download", "取消失败:{error}": "Falha ao cancelar: {error}", "只访问 GitHub 官方源,仍使用所选出网代理。": "Usa apenas a fonte oficial do GitHub, pelo proxy de saída selecionado.", "可安装": "Pronto para instalar", "启动失败": "Falha ao iniciar", "启动安装程序失败:{error}": "Falha ao iniciar o instalador: {error}", "启用加速源 {source}": "Ativar acelerador {source}", "在 GitHub 查看完整说明": "Ver as notas completas no GitHub", "在 QQ 里搜索群号即可加入。": "Pesquise o número do grupo no QQ para entrar.", "在宿主机执行 docker compose pull && docker compose up -d 即可升级。": "Execute docker compose pull && docker compose up -d no host para atualizar.", "在浏览器中打开": "Abrir no navegador", "在浏览器中打开 GitHub 发布页": "Abrir a página de releases no GitHub no navegador", "在浏览器中打开项目仓库,点 Star 支持作者": "Abrir o repositório do projeto no navegador e dar uma Star para apoiar o autor", "在默认浏览器中打开 GitHub 的令牌创建页(备注已预设,无需勾选任何权限,直接点 Generate token)": "Abrir a página de criação de token do GitHub no navegador padrão (a descrição já vem preenchida, não é preciso marcar nenhuma permissão; basta clicar em Generate token)", "填写后检查限额 60 → 5000 次/小时(创建令牌无需勾选任何权限)": "Após preencher, o limite de verificações passa de 60 → 5000 por hora (criar o token não exige marcar nenhuma permissão)", "填写支持 Raw、Release 和 GitHub API 的 HTTPS 加速站前缀,留空恢复默认。": "Informe um prefixo HTTPS que suporte Raw, Releases e a API do GitHub. Deixe vazio para restaurar o padrão.", "复制群号 {group}": "Copiar o número do grupo {group}", "安装中": "Instalando", "安装包": "Instalador", "安装包已下载完成,正在启动安装程序(需要管理员权限,会弹出 UAC 确认框)…": "Instalador baixado; iniciando o instalador (requer permissões de administrador, uma janela de confirmação do UAC será exibida)…", "安装包已下载完成,正在启动新的 AppImage…": "Instalador baixado; iniciando o novo AppImage…", "安装包已下载完成,正在打开系统安装器…": "Instalador baixado; abrindo o instalador do sistema…", "安装包已下载完成,正在挂载磁盘映像…": "Instalador baixado; montando a imagem de disco…", "安装包已就绪:{name}。点击「安装并重启」后会启动新的 AppImage;把它移动到你的应用目录并替换旧文件即完成升级(本程序会先退出以释放文件占用)。": "Instalador pronto: {name}. \"Instalar e reiniciar\" inicia o novo AppImage; mova-o para a pasta de aplicativos e substitua o arquivo antigo para concluir a atualização (este app é encerrado antes para liberar o arquivo).", "安装包已就绪:{name}。点击「安装并重启」后需要管理员权限,会弹出 UAC 确认框。": "Instalador pronto: {name}. Após clicar em “Instalar e reiniciar”, serão necessárias permissões de administrador e uma janela de confirmação do UAC será exibida.", "安装包已就绪:{name}。点击「打开安装包」后会交给系统安装器,按提示输入密码即可完成安装(本程序无需退出)。": "Instalador pronto: {name}. \"Abrir instalador\" entrega o arquivo ao instalador do sistema — informe sua senha quando solicitado (este app não precisa ser encerrado).", "安装包已就绪:{name}。点击「打开安装包」后会挂载磁盘映像,把应用拖进「应用程序」即可完成安装。": "Instalador pronto: {name}. Ao clicar em “Abrir instalador”, a imagem de disco será montada; arraste o aplicativo para “Aplicativos” para concluir a instalação.", "安装包已挂载,请在弹出的窗口里把应用拖进「应用程序」完成安装。安装完成后重新打开本程序即可。": "Instalador montado. Na janela exibida, arraste o aplicativo para “Aplicativos” para concluir a instalação; depois basta reabrir este programa.", "安装失败": "Falha na instalação", "安装失败:{error}": "Falha na instalação: {error}", "安装并重启": "Instalar e reiniciar", "安装程序已启动,本程序将退出以便完成覆盖安装。安装程序需要管理员权限,会弹出 UAC 确认框,请选择「是」。": "O instalador foi iniciado; este programa será encerrado para concluir a instalação por cima. O instalador requer permissões de administrador e exibirá uma janela de confirmação do UAC; escolha “Sim”.", "官方源": "Fonte oficial", "容器内更新:更新包从 GitHub 发布页下载,校验 sha256 后由面板替换容器内的程序与界面文件,再重启服务(容器由 restart 策略拉起,页面会自动刷新)。更新的是容器里的文件,compose 里的镜像标签不变 —— 之后执行 docker compose pull && up -d 会使用镜像里的版本。检查更新与下载的出网线路、GitHub 令牌都在「更新设置」里。": "Atualização dentro do contêiner: o pacote é baixado da página de releases do GitHub, verificado por sha256 e, em seguida, o painel substitui os arquivos do programa e da interface dentro do contêiner antes de reiniciar o serviço (o contêiner volta a subir pela política restart e a página é atualizada automaticamente). O que é atualizado são os arquivos dentro do contêiner — a tag da imagem no compose continua a mesma, então executar docker compose pull && up -d depois usa a versão da imagem. A conexão de saída e o token do GitHub usados para verificar e baixar ficam em “Configurações de atualização”.", "将更新至 {version}。下载和校验完成后会短暂停止服务、替换程序并自动重启;账号与配置会保留。确认后无需再次点击安装。": "Atualizar para {version}? Após o download e a validação, o serviço será brevemente interrompido, os arquivos serão substituídos e o serviço reiniciará automaticamente. Contas e configurações serão preservadas. Não será necessário clicar novamente para instalar.", "已加密存储在本地,不显示具体值;粘贴新令牌可覆盖": "Armazenado localmente de forma criptografada, sem exibir o valor; cole um novo token para substituí-lo", "已取消": "Cancelado", "已填写": "Preenchido", "已填写(粘贴新令牌可覆盖)": "Preenchido (cole um novo token para substituir)", "已打开系统安装器,请在它弹出的窗口里完成安装。安装完成后重新打开本程序即可。": "O instalador do sistema está aberto — conclua a instalação na janela dele e reabra este app depois.", "已是最新": "Já está na versão mais recente", "已更新至 {version},服务已恢复。": "Atualizado para {version}. O serviço foi restabelecido.", "已替换为 {version},正在重启服务…": "Substituído por {version}; reiniciando o serviço…", "已配置 GITHUB_TOKEN 环境变量,界面保存的令牌优先于它": "A variável de ambiente GITHUB_TOKEN está configurada; o token salvo na interface tem prioridade sobre ela", "开启后只更新到 beta 版(预发布),取版本最高的一个;beta 版可能不稳定。开启期间不会因为正式版发布而自动切回正式版 —— 想切回请关闭本开关。关闭后只更新到正式版,且不会降级到版本号更低的版本。": "Quando ativado, as atualizações vêm apenas de versões beta (pré-lançamento), sempre a de versão mais alta; versões beta podem ser instáveis. Enquanto estiver ativado, o lançamento de uma versão estável não faz você voltar automaticamente — desative este interruptor para voltar. Quando desativado, as atualizações vêm apenas de versões estáveis e nunca fazem downgrade para uma versão mais baixa.", "开始更新": "Iniciar atualização", "当前 Windows 服务尚未接入一键更新。请解压新版服务端包,以管理员身份运行一次 install-service.ps1,原有账号、目录、端口和配置会保留。": "A atualização com um clique ainda não foi configurada neste serviço Windows. Extraia o novo pacote do servidor e execute install-service.ps1 uma vez como administrador. Contas, diretórios, portas e configurações existentes serão preservados.", "当前下载通道:{source}": "Fonte de download: {source}", "当前为直接运行的服务端,请停止程序后替换服务端包,再重新启动。": "Este servidor é executado sem um gerenciador de serviços. Pare o programa, substitua os arquivos e inicie-o novamente.", "当前关注:{channels}": "Canais selecionados: {channels}", "当前安装尚未接入一键更新。请下载新版服务端包,执行一次 sudo bash install.sh --upgrade;之后即可在面板更新。": "A atualização com um clique ainda não foi instalada. Baixe o novo pacote do servidor e execute sudo bash install.sh --upgrade uma vez. Depois, poderá atualizar pelo painel.", "当前已是最新版本({current})。{at}": "Você já está na versão mais recente ({current}). {at}", "当前版本": "Versão atual", "当前系统或架构暂不支持面板自动安装,请查看发布页。": "A instalação automática não é suportada neste sistema ou arquitetura. Consulte a página de releases.", "当前线路不可用:{error};请重新选择代理或切回直连": "A conexão atual não está disponível: {error}; selecione outro proxy ou volte para a conexão direta", "当前网关仍使用旧版单源设置,升级网关后可管理多个加速源。": "Este gateway ainda usa a configuração antiga de fonte única. Atualize-o para gerenciar vários aceleradores.", "当前需要手动升级": "Atualização manual necessária", "当前:自动检查关闭": "Verificação automática desativada", "当前:自动检查开启,每 {n} 分钟": "Verificação automática ativada, a cada {n} minutos", "待重启": "Aguardando reinício", "待重新检查": "Requer nova verificação", "微信赞赏": "WeChat", "微信赞赏码": "Código de doação do WeChat", "打开 GitHub 令牌页面": "Abrir página de token do GitHub", "打开安装包": "Abrir instalador", "打开链接失败:{error}": "Falha ao abrir o link: {error}", "指定代理": "Proxy específico", "指定加速源优先": "Acelerador selecionado primeiro", "按上游返回时间": "Usando o horário informado pela fonte", "插件索引": "Índice de plugins", "插件默认跟随这里的更新通道、自动检查和间隔;可在插件设置中单独设置。": "Por padrão, os plugins seguem estes canais, verificação automática e intervalo. É possível configurá-los separadamente nas configurações dos plugins.", "支付宝": "Alipay", "支付宝收款码": "Código QR de pagamento do Alipay", "支持作者": "Apoiar o autor", "支持版本查询": "Suporta consultas de versões", "收藏项目": "Favoritar projeto", "数据升级失败:{error}(旧数据仍在原处,下次启动会自动重试)": "Falha na migração de dados: {error} (os dados antigos continuam no lugar; a próxima inicialização tentará novamente de forma automática)", "数据升级未全部完成(已导入 {n} 项,仍有数据待导入,下次启动会自动重试)": "A migração de dados não foi concluída (já importados {n} itens; ainda restam dados a importar e a próxima inicialização tentará novamente)", "数据升级:没有需要导入的旧数据": "Migração de dados: não há dados antigos para importar", "文件下载": "Download de arquivo", "新版本 ": "Nova versão ", "无法开始更新:{error}": "Não foi possível iniciar a atualização: {error}", "无法比较": "Não é possível comparar", "无法解密": "Não foi possível descriptografar", "无法读取更新信息": "Não foi possível ler as informações de atualização", "显示的是当前网络下的响应耗时,不代表长期稳定性或完整下载速度。未探测的源会在实际更新时检查。": "Os tempos refletem respostas na rede atual, não a estabilidade a longo prazo nem a velocidade do download completo. Fontes não verificadas serão avaliadas durante as atualizações.", "暂未确认服务恢复,请检查服务器状态后刷新页面;不会自动重复安装。": "A recuperação do serviço não foi confirmada. Verifique o servidor e recarregue a página. A instalação não será repetida automaticamente.", "更新任务已结束,但当前运行版本与目标不一致,请检查服务日志。": "A tarefa terminou, mas a versão em execução difere da esperada. Verifique os logs do serviço.", "更新出网代理": "Proxy de saída das atualizações", "更新包从 GitHub Release 获取。自动模式按实际请求选择可用通道,失败后换源;镜像安装包必须匹配官方校验值,取不到时仅使用原始源。加速源、代理和令牌在「更新设置」中配置,指定代理失效不会静默直连。": "As atualizações vêm do GitHub Releases. O modo automático seleciona fontes com solicitações reais e alterna em caso de falha. Instaladores espelhados devem corresponder ao checksum oficial; sem ele, apenas a fonte original é usada. Configure aceleradores, proxies e tokens em Configurações de atualização. Um proxy indisponível nunca muda silenciosamente para conexão direta.", "更新包从 GitHub Release 获取,下载后交给本平台安装器。GitHub 访问方式、加速前缀、出网代理和令牌在「更新设置」中配置。默认官方优先,连接失败后尝试加速源;镜像安装包必须匹配官方校验值,取不到时仅使用原始源。指定代理失效会明确报错,不会静默改走直连。": "Os pacotes vêm dos Releases do GitHub e são abertos no instalador da plataforma após o download. Configure o modo de acesso, prefixo do acelerador, proxy de saída e token em Configurações de atualização. A fonte oficial é priorizada por padrão; se a conexão falhar, tenta-se o acelerador. Instaladores espelhados devem corresponder ao checksum oficial; sem ele, usa-se apenas a fonte original. Um proxy selecionado indisponível gera um erro, sem alternar silenciosamente para conexão direta.", "更新包从 GitHub 发布页下载,下载完成后可直接启动安装程序并自动重启本程序。安装包会先校验来源域名与文件完整性。检查更新与下载安装包的出网线路、GitHub 令牌都在「更新设置」里:线路默认直连(直连失败时自动借 Clash Verge 的混合端口重试一次),选定指定出口后只走该出口;填写 GitHub 令牌可把检查限额从 60 次/小时提高到 5000 次/小时。": "O pacote de atualização é baixado da página de releases do GitHub; ao concluir o download, o instalador pode ser iniciado diretamente e este programa será reiniciado automaticamente. O instalador primeiro valida o domínio de origem e a integridade do arquivo. A conexão de saída e o token do GitHub usados para verificar atualizações e baixar o instalador ficam em “Configurações de atualização”: por padrão, a conexão é direta (se a conexão direta falhar, é feita automaticamente uma tentativa pela porta híbrida do Clash Verge) e, ao escolher uma saída específica, apenas ela é usada; preencher o token do GitHub eleva o limite de verificações de 60 para 5000 por hora.", "更新包已就绪:{name}。点「安装并重启」后,面板会校验并替换容器内的程序与界面文件,然后重启服务(页面会自动刷新)。": "Pacote de atualização pronto: {name}. Após clicar em “Instalar e reiniciar”, o painel valida e substitui os arquivos do programa e da interface dentro do contêiner e então reinicia o serviço (a página é atualizada automaticamente).", "更新失败": "Falha na atualização", "更新失败:{error}": "Falha na atualização: {error}", "更新完成": "Atualização concluída", "更新已应用到容器内,重启服务后生效。{at}": "A atualização foi aplicada dentro do contêiner e passa a valer após reiniciar o serviço.{at}", "更新已应用到容器内,重启服务后生效。{at}(本次检查失败:{error})": "A atualização foi aplicada dentro do contêiner e entra em vigor após reiniciar o serviço.{at} (esta verificação falhou: {error})", "更新日志": "Notas de versão", "更新设置": "Configurações de atualização", "更新进行中": "Atualização em andamento", "更新通道已保存": "Canais de atualização salvos", "更新通道已改变,请重新检查更新。": "Os canais de atualização mudaram. Verifique as atualizações novamente.", "替换完成,正在重启服务…": "Substituição concluída; reiniciando o serviço…", "最多保留 6 个 HTTPS 加速源;自定义源可关闭版本查询支持。": "Mantenha até 6 aceleradores HTTPS. As consultas de versões podem ser desativadas em fontes personalizadas.", "最新发布版本为 {latest},但当前版本号「{current}」无法解析,未做新旧判断。{at}": "A versão mais recente publicada é {latest}, mas o número da versão atual “{current}” não pôde ser interpretado, então a comparação não foi feita. {at}", "最新版本": "Versão mais recente", "最近采用": "Usada recentemente", "有新版本": "Nova versão disponível", "服务正在重启,页面会在恢复后自动刷新…({seconds}s)": "O serviço está reiniciando; a página será atualizada automaticamente quando ele voltar… ({seconds} s)", "服务端压缩包": "Pacote compactado do servidor", "未找到适用的更新包": "Nenhum pacote adequado", "未找到适用的更新包。需要:{wanted};发布页包含的文件类型:{seen}。": "Nenhum pacote adequado foi encontrado. Necessário: {wanted}. Tipos de arquivo na release: {seen}.", "未探测": "Não verificada", "未检查": "Não verificado", "本工具由": "Esta ferramenta é desenvolvida e mantida como código aberto por", "查看发布页": "Ver página de releases", "校验中": "Validando", "检查中": "Verificando", "检查中…": "Verificando…", "检查失败": "Falha na verificação", "检查更新": "Verificar atualizações", "检查更新与下载安装包使用所选线路;未选择代理时先直连,失败后尝试 Clash Verge 混合端口;指定代理不可用时不会自动改走直连。": "A verificação de atualizações e o download do instalador usam a rota selecionada. Sem proxy selecionado, tenta primeiro a conexão direta e, se falhar, a porta mista do Clash Verge. Um proxy especificado indisponível nunca volta automaticamente à conexão direta.", "检查更新与下载安装包使用所选线路;未选择代理时直连,指定代理不可用时不会自动改走直连。": "Verificações de atualização e downloads usam a rota selecionada. Sem proxy, a conexão é direta; um proxy selecionado indisponível não muda automaticamente para conexão direta.", "检查更新与下载安装包走哪条线路(当前:{current});选择即保存。选项来自「网络代理」页;直连失败时会自动借 Clash 混合端口重试一次,选定指定代理后只走它": "Define por qual conexão passam a verificação de atualizações e o download do instalador (atual: {current}); a seleção é salva imediatamente. As opções vêm da página “Proxy de rede”; se a conexão direta falhar, será feita automaticamente uma nova tentativa pela porta híbrida do Clash; ao selecionar um proxy específico, apenas ele será usado", "检查更新失败:{error}": "Falha ao verificar atualizações: {error}", "检查更新失败:{error}(以下版本与更新日志来自上次成功检查,检查于 {time})": "Falha ao verificar atualizações: {error} (as versões e notas abaixo são da última verificação bem-sucedida, em {time})", "检查计划": "Agendamento de verificações", "检查间隔必须是 {min} ~ {max} 分钟": "O intervalo de verificação deve ser de {min} ~ {max} minutos", "检查间隔(分钟)": "Intervalo de verificação (minutos)", "检测到更新": "Atualização disponível", "检测到自定义程序或界面路径,一键更新不会覆盖这些位置。请按原部署方式升级。": "Foram detectados caminhos personalizados do programa ou painel. A atualização com um clique não os sobrescreve. Use seu procedimento de implantação existente.", "正在下载 {name}:{percent}%({received} / {total} MB)": "Baixando {name}: {percent}% ({received} / {total} MB)", "正在下载 {version} 的服务端更新包…": "Baixando a atualização do servidor para {version}…", "正在下载安装包…(下载完成后会交给系统安装器,按提示输入密码即可完成安装)": "Baixando o instalador… (ao terminar, ele é entregue ao instalador do sistema; informe sua senha quando solicitado)", "正在下载安装包…(下载完成后会启动新的 AppImage;把它替换掉旧文件即完成升级)": "Baixando o instalador… (ao terminar, o novo AppImage é iniciado; mova-o sobre o arquivo antigo para concluir a atualização)", "正在下载安装包…(下载完成后会挂载磁盘映像,把应用拖进「应用程序」即可完成安装)": "Baixando o instalador… (ao concluir o download, a imagem de disco será montada; arraste o aplicativo para “Aplicativos” para concluir a instalação)", "正在下载安装包…(下载完成后启动安装程序需要管理员权限,会弹出 UAC 确认框)": "Baixando o instalador… (ao concluir o download, iniciar o instalador exigirá permissões de administrador e uma janela de confirmação do UAC será exibida)", "正在下载服务端更新包…(下载完成后由面板完成替换,重启容器内的服务后生效)": "Baixando o pacote de atualização do servidor… (o painel faz a substituição assim que o download termina; a atualização passa a valer após reiniciar o serviço dentro do contêiner)", "正在取消下载…": "Cancelando o download…", "正在备份并替换服务端程序与界面,请勿关闭服务器…": "Fazendo backup e substituindo o servidor e o painel. Não desligue o servidor…", "正在把旧数据导入 SQLite 数据库(旧文件会保留,不会删除)…": "Importando os dados antigos para o banco de dados SQLite (os arquivos antigos serão mantidos, não serão excluídos)…", "正在查询 GitHub 上的最新发布版本…": "Consultando a versão mais recente publicada no GitHub…", "正在校验并替换容器内的程序与界面文件…": "Validando e substituindo os arquivos do programa e da interface dentro do contêiner…", "正在独立核验官方更新包,校验通过前不会修改现有程序…": "Validando o pacote oficial de forma independente. Os arquivos atuais não serão alterados antes da validação…", "正在选择下载通道…": "Selecionando a fonte de download…", "正在重启服务并确认新版本,页面恢复后会自动刷新…": "Reiniciando o serviço e confirmando a nova versão. A página será recarregada após a recuperação…", "正式版与 beta 版": "Estáveis e beta", "没有可下载的安装包": "Não há instalador disponível para download", "没有可下载的安装包:{reason}": "Não há instalador disponível para download: {reason}", "没有启用的加速源,将只使用官方源。": "Nenhum acelerador está ativado. Apenas a fonte oficial será usada.", "沿用已记录的恢复时间": "Usando o horário de liberação registrado", "点击「检查更新」后,这里会显示最新版本的更新说明。": "Após clicar em “Verificar atualizações”, as notas da versão mais recente serão exibidas aqui.", "点击「检查更新」查询 GitHub 上的最新发布版本。": "Clique em “Verificar atualizações” para consultar a versão mais recente publicada no GitHub.", "点击「检查更新」查询最新发布版本。": "Clique em “Verificar atualizações” para consultar a versão mais recente publicada.", "点击在浏览器中打开": "Clique para abrir no navegador", "点击复制群号": "Clique para copiar o número do grupo", "版本 {version} · 按 GitHub 访问设置下载安装包": "Versão {version} · Baixa instaladores conforme o acesso ao GitHub", "版本查询": "Consulta de versão", "版本查询、插件索引、文件下载": "Consultas de versões, índices de plugins e downloads", "状态来自最近一次实际请求,并非实时测速。过期后标为待重新检查;限流只暂停对应线路,其他线路仍可使用。": "Os resultados vêm das últimas solicitações reais, não de testes de velocidade em tempo real. Resultados expirados exigem nova verificação. O limite pausa apenas a rota afetada; outras rotas continuam disponíveis.", "环境变量": "Variável de ambiente", "立即重启": "Reiniciar agora", "等待恢复": "Aguardando recuperação", "管理员已关闭面板一键更新,请使用手动升级方式。": "A atualização com um clique foi desativada pela administração. Atualize manualmente.", "粘贴 GitHub 令牌(ghp_… / github_pat_…)": "Cole o token do GitHub (ghp_… / github_pat_…)", "网关已关闭自动检查,此处只做手动检查": "A verificação automática foi desativada no gateway. Aqui, somente verificações manuais estão disponíveis.", "群号": "Número do grupo", "群号:{group}": "Número do grupo: {group}", "自动检查更新": "Verificar atualizações automaticamente", "自动选择最快可用源": "Selecionar automaticamente a fonte mais rápida disponível", "自动(官方优先)": "Automático (oficial primeiro)", "自定义加速前缀": "Prefixo de acelerador personalizado", "至少需要关注正式版或 beta 版中的一个通道": "Selecione pelo menos um canal: estável ou beta.", "补充内置备用源": "Adicionar fontes padrão ausentes", "记录于 {time}": "Registrado às {time}", "请先粘贴 GitHub 令牌": "Cole o token do GitHub primeiro", "请检查服务日志": "Verifique os logs do serviço", "读取下载进度失败:{error}": "Falha ao ler o progresso do download: {error}", "读取中": "Carregando", "赞赏完全自愿,不解锁任何功能,也不影响正常使用。": "As doações são totalmente voluntárias. Não desbloqueiam recursos nem afetam o uso normal.", "赞赏方式": "Método de doação", "跟随软件": "Seguir as configurações do aplicativo", "跳过此次更新": "Pular esta atualização", "软件更新": "Atualização do software", "软件更新与插件共用此设置;GitHub 令牌仅发送给官方 API。镜像安装包需要官方校验值,镜像插件包需要可信签名。": "Atualizações e plugins compartilham esta configuração. Tokens vão apenas à API oficial. Instaladores espelhados exigem checksum oficial; plugins espelhados exigem assinatura confiável.", "软件版本检查设置不可用": "As configurações de verificação de atualizações do aplicativo não estão disponíveis.", "返回内容异常": "Conteúdo da resposta inválido", "这一版只有 {seen},没有本机需要的 {wanted}": "Esta versão contém apenas {seen}; não tem {wanted} para esta máquina", "这一版没有为当前平台提供安装包": "Esta versão não fornece instalador para a plataforma atual", "这一版没有发布本机需要的安装包({wanted})": "Esta versão não publicou o instalador necessário para esta máquina ({wanted})", "这一版没有提供容器内更新包": "Esta versão não fornece pacote de atualização dentro do contêiner", "这一版没有提供容器内更新包:{reason}": "Esta versão não fornece pacote de atualização dentro do contêiner: {reason}", "这一版没有提供本机安装包": "Esta versão não fornece instalador para esta máquina", "这一版还没有上传任何文件(构建可能失败,或仍在打包上传)": "Nenhum arquivo foi enviado para esta versão ainda (a build pode ter falhado, ou os envios ainda estão em andamento)", "这个版本没有填写发布说明。": "Esta versão não tem notas de versão.", "连接超时": "Tempo limite de conexão", "通道已切换,但写入磁盘失败(重启后会回到原设置)": "O canal foi alterado, mas não foi possível gravar no disco (a configuração anterior volta após reiniciar)", "遇到问题或有使用心得,欢迎到群里交流。": "Dúvidas e dicas são bem-vindas em qualquer um dos grupos.", "重启中": "Reiniciando", "重新粘贴保存一次即可自愈": "Cole e salve novamente para corrigir automaticamente", "重试下载": "Baixar novamente", "链接地址不受支持": "Endereço de link não suportado", "限流冷却中": "Aguardando liberação do limite", "面板自动安装": "Instalação automática pelo painel", "预发布": "Pré-lançamento", "默认开启;即使当前使用 beta 版,也可收到版本号更高的正式版更新。": "Ativado por padrão. Mesmo usando uma versão beta, você pode receber versões estáveis com número de versão maior.", "默认跟随软件的正式版和 beta 关注选择;单独设置只影响插件。始终按版本号选择更新,不会降级。": "Por padrão, segue os canais estável e beta do aplicativo. Configurações separadas afetam apenas os plugins. As atualizações são escolhidas pela versão, sem downgrade.", "默认跟随软件的自动检查和间隔。关闭自动检查也会暂停插件自动更新和自动下载;手动检查与安装不受影响。": "Por padrão, segue a verificação automática e o intervalo do aplicativo. Desativar a verificação automática também pausa atualizações e downloads automáticos de plugins. A verificação e instalação manuais continuam disponíveis.", "(检查于 {time})": "(verificado em {time})", "API Key 列表": "Lista de API Keys", "Key 已停用": "Key desativada", "Key 已删除": "Key excluída", "Key 已启用": "Key habilitada", "Key 至少需要 8 个字符": "A Key precisa ter pelo menos 8 caracteres", "✅ Key 已创建,记得复制给客户端": "✅ Key criada; lembre-se de copiá-la para o cliente", "✅ 可用范围已保存": "✅ Escopo permitido salvo", "不限制": "Sem restrições", "与": " e ", "例如 Cursor / 公司电脑": "Ex.: Cursor / computador da empresa", "保存失败:{reason}": "Falha ao salvar: {reason}", "保存范围": "Salvar escopo", "创建": "Criar", "创建时间": "Criado em", "删除网关 Key": "Excluir Key do gateway", "助手图片工具": "Ferramentas de imagem do assistente", "助手标题总结": "Resumo de título do assistente", "可用提供商": "Provedores permitidos", "可用提供商:{names}": "Provedores permitidos: {names}", "可用模型": "Modelos permitidos", "可用模型:{names}": "Modelos permitidos: {names}", "可用范围": "Escopo permitido", "可用范围 · {name}": "Escopo permitido · {name}", "启用「{name}」": "Habilitar “{name}”", "复制 Key": "Copiar Key", "客户端请求需带 ": "As requisições do cliente precisam enviar ", "已删除": "Excluída", "已启用鉴权 · {n} 把 Key 生效": "Autenticação habilitada · {n} Keys em vigor", "当前不限制:这把 Key 可以用全部提供商与全部对外模型": "Sem restrições no momento: esta Key pode usar todos os provedores e todos os modelos expostos", "所选 API Key 已不可用": "A API Key selecionada está indisponível", "所选 API Key 已不可用,请重新选择": "A API Key selecionada está indisponível. Selecione outra Key.", "提供商:{names}": "Provedores: {names}", "搜索模型…": "Buscar modelos…", "操作失败:{reason}": "Falha na operação: {reason}", "新建 API Key": "Nova API Key", "日活保活": "Manutenção da atividade diária", "显示": "Visível", "未启用鉴权": "Sem autenticação", "未命名": "Sem nome", "未提供客户端标识": "Identificador de cliente não informado", "未知客户端": "Cliente desconhecido", "模型调用使用所选 Key 的权限,日志记录 Key 名称,不保存密钥值。": "As chamadas de modelo usam as permissões da Key selecionada. Os logs registram seu nome, nunca o valor secreto.", "模型:{names}": "Modelos: {names}", "正在读取 API Key…": "Carregando API Keys…", "没有匹配的选项": "Nenhuma opção correspondente", "没有可用的 API Key,请先在「网关 Key」页创建并启用": "Nenhuma API Key disponível. Crie e habilite uma na página de Keys do gateway.", "留空 = 不限制": "Em branco = sem restrições", "留空自动生成;手填至少 8 个字符": "Em branco: gerada automaticamente; se preenchida, mínimo de 8 caracteres", "留空表示不限制;同时设置时请求需同时满足两个条件(模型在白名单内且路由到允许的提供商)。 「可用模型」的候选跟着上面勾选的提供商走:没勾提供商时它是空的(还没有约束范围), 勾了几家就列出这几家能收的全部对外名。": "Em branco significa sem restrições; quando ambos são definidos, a requisição precisa atender às duas condições (o modelo estar na lista permitida e ser roteado para um provedor permitido). Os candidatos de “Modelos permitidos” seguem os provedores marcados acima: sem nenhum provedor marcado, a lista fica vazia (ainda não há escopo definido); com alguns marcados, são listados todos os nomes expostos aceitos por eles.", "确定删除 Key「{name}」?使用它的客户端会立刻无法访问。": "Excluir a Key “{name}”? Os clientes que a usam perderão o acesso imediatamente.", "网关 Key 表": "Tabela de Keys do gateway", "自动记住本次选择,下次打开继续使用;Key 被停用或删除后需重新选择。": "Sua seleção será lembrada na próxima vez. Selecione outra Key se ela for desativada ou excluída.", "请先在上面选择可用提供商": "Selecione primeiro os provedores permitidos acima", "读取 Key 列表失败:{reason}": "Falha ao ler a lista de Keys: {reason}", "还没有 Key,当前不鉴权": "Ainda não há Keys; sem autenticação no momento", "这几家当前没有可用模型(账号未登录或清单为空)": "Estes provedores não têm modelos disponíveis no momento (contas sem sessão ou catálogo vazio)", "这把 Key 不限制提供商与模型(可用全部上游与全部对外模型)": "Esta Key não restringe provedores nem modelos (pode usar todos os upstreams e todos os modelos expostos)", "限制:{text}": "Restrições: {text}", "隐藏": "Ocultar", "(模型候选需先选提供商;不选则沿用当前这几项,保存后仍按模型白名单生效)": "(os candidatos de modelo exigem escolher primeiro os provedores; sem escolha, os itens atuais são mantidos e, após salvar, a lista de modelos continua valendo)", "(行内「可用范围」):留空 = 不限制,两个都设时 按交集生效 —— 被限制的模型对这把 Key 表现为「不存在」(拉 /v1/models 也看不到它), 提供它的家不在可用列表里时请求同样被拒。": "(coluna “Escopo permitido”): em branco = sem restrições; quando ambos são definidos, vale a interseção — um modelo restringido “não existe” para esta Key (nem ao consultar /v1/models ele aparece) e, se o provedor que o oferece não estiver na lista de permitidos, a requisição também é recusada.", "+ 新建 Key": "+ Nova Key", "; 修改后立即生效,本程序自身会自动使用第一把启用的 Key。每把 Key 可单独限制": "; as alterações entram em vigor imediatamente, e este próprio programa usará automaticamente a primeira Key habilitada. Cada Key pode restringir individualmente ", ";修改后立即生效。模型测试、助手和日活保活必须选择 Key,受限 Key 不能访问管理接口。每把 Key 可单独限制": "; as alterações têm efeito imediato. Testes de modelo, assistente e manutenção diária exigem uma Key selecionada. Keys restritas não acessam endpoints de gerenciamento. Cada Key pode restringir individualmente ", ";当前必须带 Key。": "; uma Key habilitada é obrigatória.", " AI 账号专用静态住宅 IP:Scamalytics 低欺诈评分,不限流量,首单 75 折(AGENT2API25)": " IPs residenciais estáticos nativos para contas de IA: pontuação de fraude baixa no Scamalytics, tráfego ilimitado, 25% de desconto na primeira compra (AGENT2API25)", " 提供 AI 账号专用的原生静态住宅 IP(Static Residential ISP):IP 来自真实家庭宽带运营商,Scamalytics 低欺诈评分,每个 IP 独享,不限流量,$3.90 起。": " oferece proxies de IP residencial estático nativos para contas de IA (Static Residential ISP): os IPs vêm de operadoras de banda larga residenciais reais, com pontuação de fraude baixa no Scamalytics, cada IP é dedicado a você, com tráfego ilimitado, a partir de $3.90.", " 那一类由「同步 Clash Verge」 镜像进来(进入本页时会自动同步一次):名称、端口、启用都跟随 Clash, 在 Clash 里改或删,这里跟着变 —— 所以它们只读,改请到 Clash Verge 里改。": " Os itens desse tipo são espelhados por “Sincronizar Clash Verge” (uma sincronização automática também é feita ao entrar nesta página): nome, porta e estado de habilitação seguem o Clash; se você alterar ou excluir no Clash, isso se reflete aqui — por isso são somente leitura. Para alterar, faça-o no Clash Verge.", "Clash Verge": "Clash Verge", "SOCKS5 用户名和密码不能超过 255 字节": "O usuário e a senha SOCKS5 não podem exceder 255 bytes", "YAML 文件": "Arquivo YAML", "{names} 等 {n} 条": "{names} etc. ({n} no total)", "{n} 个出口": "{n} endpoints", "{n} 个账号在用": "{n} contas usando", "{n} 条订阅": "{n} assinaturas", "{percent}%({received} / {total} MB)": "{percent}% ({received} / {total} MB)", "✅ {ip}": "✅ {ip}", "✅ 「{name}」出口可用{ip}{took}": "✅ Endpoint “{name}” disponível{ip}{took}", "✅ 内核下载完成,正在启动…": "✅ Kernel baixado, iniciando…", "✅ 内核已手动导入到 {dir}": "✅ Kernel importado manualmente em {dir}", "✅ 已同步 Clash Verge 出口({n} 项变更)": "✅ Endpoints do Clash Verge sincronizados ({n} alterações)", "✅ 连接成功": "✅ Conectado", "✅ 连通性测试设置已保存": "✅ Configurações do teste de conectividade salvas", "❌ 「{name}」{error}": "❌ “{name}”: {error}", "❌ 连接失败": "❌ Falha na conexão", "「测试」与「批量测试」访问的目标;留空用默认(打 WorkBuddy 上游)。判据是能否拿到 HTTP 响应,不用考虑该网址返回什么内容。": "O destino que \"Testar\" e \"Testar selecionados\" acessam; deixe vazio para o padrão (upstream do WorkBuddy). O critério é receber uma resposta HTTP — o conteúdo que a URL retorna não importa.", "上传本地文件": "Enviar arquivo local", "上次下载失败:{reason}": "O último download falhou: {reason}", "上次下载已停止,未下载完的临时文件已删除": "O último download foi interrompido; o arquivo parcial foi excluído", "上次同步": "Última sincronização", "上次测试": "Último teste", "下载": "Baixar", "下载中…": "Baixando…", "下载内核": "Baixar kernel", "下载已经完成,停止没赶上(内核已安装)": "O download terminou antes da parada (kernel instalado)", "下载线路": "Rota de download", "下载线路 / 存放目录没能写进配置(本次下载已按新设置走,重启后会恢复原值)": "A rota / a pasta não pôde ser gravada na configuração (este download usa as novas opções; elas voltam ao valor antigo após reiniciar)", "不再提供": "Não disponível", "不再提醒": "Não mostrar novamente", "为降低维护成本、资源占用及合规风险,Agent2API 已停止提供代理订阅与内置代理内核相关功能。": "Para reduzir os custos de manutenção, o uso de recursos e os riscos de conformidade, o Agent2API deixou de oferecer assinaturas de proxy e recursos do kernel de proxy integrado.", "之前使用订阅节点?": "Usava nós de assinatura?", "也可以把二维码截图直接粘贴到弹窗里(Ctrl+V)": "Você também pode colar um print do QR code diretamente na janela (Ctrl+V)", "二维码里没有订阅链接": "Nenhum link de assinatura no QR code", "从图片识别二维码": "Ler QR code de uma imagem", "代理主机只能填写域名或 IP 地址,不能包含协议、端口或路径": "Informe apenas o domínio ou endereço IP, sem protocolo, porta ou caminho", "代理主机地址无效": "Host do proxy inválido", "代理修改已保存": "Alterações do proxy salvas", "代理内核": "Kernel de proxy", "代理内核未安装(下载内核后,被账号或服务线路引用的节点会自动开监听端口)": "O kernel do proxy não está instalado. Após baixá-lo, os nós referenciados por contas ou rotas de serviço recebem portas de escuta automaticamente.", "代理内核未安装(在「订阅管理」里下载内核后,被账号引用的节点会自动开监听端口)": "O kernel do proxy não está instalado (após baixá-lo em \"Gerenciamento de assinaturas\", os nós referenciados por contas recebem uma porta de escuta automaticamente)", "代理列表": "Lista de proxies", "代理列表加载失败:{reason}": "Falha ao carregar a lista de proxies: {reason}", "代理列表响应异常": "Resposta inesperada da lista de proxies", "代理协议只支持 HTTP 或 SOCKS5": "Somente proxies HTTP ou SOCKS5 são aceitos", "代理名称": "Nome do proxy", "代理名称不能超过 60 个字符": "O nome do proxy não pode exceder 60 caracteres", "代理已添加": "Proxy adicionado", "代理格式无效,请按示例填写": "Formato de proxy inválido. Siga os exemplos.", "代理池": "Pool de proxies", "代理池表": "Tabela do pool de proxies", "代理订阅功能已下线": "O recurso de assinaturas de proxy foi descontinuado", "代理设置": "Configurações de proxy", "代理设置响应异常": "Resposta inesperada das configurações de proxy", "代理账号和密码不能超过 200 个字符": "O usuário e a senha do proxy não podem exceder 200 caracteres", "代理账号或密码的 URL 编码无效": "Codificação de URL inválida no usuário ou senha do proxy", "以下行未能识别,已留在输入框中;修正后可再次解析。": "As linhas abaixo não foram reconhecidas e continuam no campo. Corrija-as e analise novamente.", "使用情况": "Uso", "例如:我的机场": "ex.: Meu provedor", "例如:香港 HTTP 出口": "Ex.: endpoint HTTP de Hong Kong", "保存代理": "Salvar proxy", "保存已有的代理地址,供账号与服务线路按需使用。": "Salve endereços de proxy existentes para uso por contas e rotas de serviço conforme necessário.", "保持原文件": "Mantendo o arquivo atual", "停止下载": "Parar download", "停止下载失败:{reason}": "Falha ao parar o download: {reason}", "停止请求已发出,但下载还没收手,稍后再看一次进度": "A parada foi solicitada, mas o download ainda não parou - veja o progresso novamente em instantes", "先把下载的内核放到网关机器的目录,再填写文件或目录的绝对路径。目录内会查找官方包或 mihomo 二进制;远程面板不能读取浏览器电脑的路径。": "Coloque o kernel baixado em uma pasta na máquina do gateway e informe o caminho absoluto do arquivo ou pasta. A pasta será pesquisada pelo pacote oficial ou binário mihomo. Um painel remoto não pode ler caminhos no computador do navegador.", "先经过系统代理,再连接到此代理": "Conecta pelo proxy do sistema antes de usar este proxy", "全选当前筛选出的出口": "Selecionar todos os endpoints filtrados", "全选所有代理": "Selecionar todos os proxies", "全选({n} 个)": "Selecionar todos ({n})", "全部协议": "Todos os protocolos", "全部提供方": "Todos os provedores", "全部订阅": "Todas as assinaturas", "关掉这个窗口不会中断下载(它在后台继续跑)—— 要停下就点下面的「停止下载」,未下载完的临时文件会被删除。": "Fechar esta janela não interrompe o download (ele continua em segundo plano) - para parar, clique em \"Parar download\" abaixo; o arquivo parcial é excluído.", "关闭代理后,引用它的账号回退直连。连通性以最近一次检测结果为准。": "Ao desativar um proxy, as contas que o referenciam voltam à conexão direta. A conectividade reflete a verificação mais recente.", "关闭内核": "Parar kernel", "关闭内核失败:{reason}": "Falha ao parar o kernel: {reason}", "其中 {n} 条正被账号使用 —— 删除后那些账号会回退直连。": "Destes, {n} estão em uso por contas — após a exclusão, essas contas voltarão à conexão direta.", "其中 {n} 条正被账号使用 —— 删除后需重新设置相关账号的代理,不会自动直连。": "{n} proxies selecionados estão em uso. Após a exclusão, reconfigure as contas afetadas; não haverá conexão direta automática.", "其中 {n} 条是同步来的只读条目(Clash / 订阅):可参与批量测试,删除会跳过": "{n} deles são entradas somente leitura sincronizadas (Clash / assinaturas): podem participar do teste em lote, mas a exclusão os ignora", "其中 {n} 条来自 Clash 同步:可参与批量测试,删除会跳过": "Dos selecionados, {n} vêm da sincronização do Clash: podem ser testados em lote, mas a exclusão os ignora", "内核 {version}": "Kernel {version}", "内核 {version}({asset})": "Kernel {version} ({asset})", "内核下载": "Download do kernel", "内核下载失败:{reason}": "Falha ao baixar o kernel: {reason}", "内核二进制 / 配置 / 端口映射都会放在这里,默认 {dir};目录不存在会在下载开始时自动创建。": "O binário do kernel, a configuração e o mapa de portas ficam aqui. Padrão: {dir}. A pasta é criada automaticamente quando o download começa.", "内核启动失败:{reason}": "Falha ao iniciar o kernel: {reason}", "内核导入仍在后台执行,请刷新状态查看结果": "A importação do kernel continua em segundo plano. Atualize o estado para conferir o resultado.", "内核导入任务排队中…": "Importação do kernel na fila…", "内核导入失败": "Falha ao importar o kernel", "内核导入状态已变化,请刷新后确认": "O estado da importação mudou. Atualize para conferir o resultado.", "内核已停止": "Kernel parado", "内核已停止,点「启动内核」拉起": "Kernel parado — clique em \"Iniciar kernel\" para ativá-lo", "内核已关闭(订阅与端口注册表保留,「启动内核」后原位恢复)": "Kernel parado (assinaturas e o registro de portas são mantidos; as portas voltam ao lugar após \"Iniciar kernel\")", "内核已导入,但启动失败:{reason}": "Kernel importado, mas falha ao iniciar: {reason}", "内核已导入,但存放目录未能保存,重启网关后会恢复原位置": "O kernel foi importado, mas a pasta não pôde ser salva. O local anterior será restaurado ao reiniciar o gateway.", "内核已手动关闭": "Kernel parado manualmente", "内核已手动关闭(点「启动内核」拉起)": "Kernel parado manualmente — clique em \"Iniciar kernel\" para ativá-lo", "内核文件必须非空且不超过 {max} MiB": "O arquivo do kernel não pode estar vazio nem exceder {max} MiB", "内核未安装": "Kernel não instalado", "内核正在启动…": "Kernel iniciando…", "内核正在执行操作,请稍后重试": "Há uma operação do kernel em andamento. Tente novamente em instantes.", "内核没有在超时内停下来": "o kernel não parou dentro do tempo limite", "内核目录没能删掉(可能仍被进程占用),稍后重试一次": "Não foi possível remover a pasta do kernel — algum processo ainda pode estar usando-a. Tente novamente em instantes.", "内核运行中": "Kernel em execução", "出口 IP {ip}": "IP de saída {ip}", "出口可用": "Proxy disponível", "出口测试网址": "URL do teste de conectividade", "删除代理": "Excluir proxy", "删除内核": "Excluir kernel", "删除内核失败:{reason}": "Falha ao excluir o kernel: {reason}", "删除订阅": "Excluir assinatura", "刷新中…": "Atualizando…", "刷新失败:{reason}": "Falha ao atualizar: {reason}", "功能调整通知": "Aviso de alteração de recurso", "勾选「{name}」": "Selecionar “{name}”", "单个添加": "Adicionar um", "去获取": "Obter agora", "另有 {n} 条是同步来的只读条目(Clash / 订阅),将跳过。": "Mais {n} entradas são somente leitura sincronizadas (Clash / assinaturas) e serão ignoradas.", "另有 {n} 条来自 Clash Verge 同步,将跳过(请到 Clash Verge 里删)。": "Outros {n} itens vêm da sincronização com o Clash Verge e serão ignorados (exclua-os no Clash Verge).", "只读:在 Clash Verge 里改": "Somente leitura: edite no Clash Verge", "只读:在「订阅管理」里改": "Somente leitura: edite em \"Gerenciar assinaturas\"", "同步 Clash Verge": "Sincronizar Clash Verge", "同步中…": "Sincronizando…", "同步失败:{reason}": "Falha na sincronização: {reason}", "名字与端口在 Clash Verge 里改;启用可在本页关闭": "Edite o nome e a porta no Clash Verge; o interruptor de ativação pode ser desligado nesta página", "名字与端口跟随订阅与内核;启用可在本页关闭": "O nome e a porta seguem a assinatura e o kernel; o interruptor de ativação pode ser desligado nesta página", "后台继续": "Continuar em segundo plano", "启动内核": "Iniciar kernel", "启用订阅「{name}」": "Ativar assinatura \"{name}\"", "启用这条代理": "Habilitar este proxy", "启用这条订阅": "Ativar esta assinatura", "启用(禁用后,使用此代理的账号请求将失败;仍可测试)": "Ativar (desativar bloqueia solicitações das contas que usam este proxy; os testes continuam disponíveis)", "启用(禁用的条目不会被账号使用,被引用时账号回退直连;仍可测试)": "Habilitar (itens desabilitados não são usados pelas contas; se referenciados, a conta volta à conexão direta; ainda podem ser testados)", "启用(禁用的订阅不参与内核同步,它的节点会从代理池移除)": "Ativada (assinaturas desativadas não são sincronizadas pelo kernel e seus nós são removidos do pool de proxies)", "图片读取失败": "Falha ao ler a imagem", "地址": "Endereço", "地址不完整": "Endereço incompleto", "地址由网关所在设备访问;本机代理需运行在该设备上。": "O dispositivo do gateway acessa este endereço. Um proxy local deve estar em execução nesse dispositivo.", "复制下载链接": "Copiar link de download", "失败 {n} 个({reason})": "{n} com falha ({reason})", "存放位置": "Pasta", "存放位置 {dir}": "Pasta {dir}", "存放位置要填绝对路径,例如 D:\\proxy-kernel": "A pasta deve ser um caminho absoluto, por exemplo D:\\proxy-kernel", "家庭宽带": "Banda larga residencial", "导入内核": "Importar kernel", "导入并替换": "Importar e substituir", "导入来源": "Origem da importação", "将替换现有代理内核,运行中的连接会短暂中断。订阅、账号引用与端口映射会保留。是否继续?": "O kernel de proxy existente será substituído, interrompendo brevemente as conexões ativas. Assinaturas, referências de contas e mapeamentos de portas serão mantidos. Continuar?", "展开其余 {n} 个 ▾": "Mostrar mais {n} ▾", "已下载?手动导入": "Já baixou? Importe manualmente", "已保存。重启内核后,新分配的节点端口才会按新范围来。": "Salvo. Após reiniciar o kernel, as portas de nó recém-alocadas seguirão a nova faixa.", "已保存「{name}」": "“{name}” salvo", "已停止下载内核(未下载完的临时文件已删除)": "Download do kernel interrompido (o arquivo parcial foi excluído)", "已删除 {n} 个代理": "{n} proxies excluídos", "已删除「{name}」": "“{name}” excluído", "已删除内核(订阅与账号引用保留,重新下载后会重新分配端口)": "Kernel excluído (as assinaturas e as referências das contas são mantidas; as portas são redistribuídas depois de baixar novamente)", "已删除内核(订阅与账号引用保留;有文件仍被占用,将在下次启动时清理)": "Kernel excluído (as assinaturas e as referências de conta são mantidas; alguns arquivos ainda estão em uso e serão limpos na próxima inicialização)", "已刷新「{name}」,正在同步节点…": "\"{name}\" atualizada; sincronizando nós…", "已启用 {n} 个": "{n} ativados", "已启用「{name}」": "“{name}” habilitado", "已启用「{name}」,正在补建监听端口(内核重建中)": "\"{name}\" ativado; recriando a porta de escuta (kernel reiniciando)", "已在本页禁用(打开开关即恢复)": "Desativado nesta página (ligue o interruptor para restaurar)", "已新增「{name}」": "“{name}” adicionado", "已新增订阅「{name}」,内核正在同步节点…": "Assinatura \"{name}\" adicionada; o kernel está sincronizando os nós…", "已是最新,没有需要同步的变更": "Já está atualizado; não há alterações para sincronizar", "已有手动配置不受此次调整影响。你仍可添加 HTTP / SOCKS5 地址,并使用连通性测试。": "As configurações manuais existentes não são afetadas. Você ainda pode adicionar endereços HTTP / SOCKS5 e testar a conectividade.", "已有手动配置和 Clash Verge 端点引用不受影响。仍可添加 HTTP / SOCKS5 地址、同步 Clash Verge 端点并测试连通性;Clash Verge 由你自行安装和运行。": "As configurações manuais e as referências a endpoints do Clash Verge existentes não são afetadas. Você ainda pode adicionar endereços HTTP / SOCKS5, sincronizar endpoints e testar a conectividade. Instale e execute o Clash Verge separadamente.", "已有账号引用它,但内核还没把监听端口补建出来 —— 稍等片刻,或重新启用这条节点": "Uma conta já referencia este nó, mas o kernel ainda não criou a porta de escuta — aguarde um instante ou reative este nó", "已有账号或服务线路引用它,监听端口尚未就绪;请稍等,或检查内核状态": "Uma conta ou rota de serviço referencia este nó, mas a porta de escuta ainda não está pronta. Aguarde um momento ou verifique o estado do kernel.", "已禁用「{name}」": "“{name}” desabilitado", "已禁用「{name}」,监听端口正在关闭(内核重建中)": "\"{name}\" desativado; a porta de escuta está sendo fechada (kernel reiniciando)", "已禁用(未开监听端口)": "Desativado (sem porta de escuta)", "已移除的订阅": "Assinatura removida", "已识别 {n} 条 · 已勾选 {selected} 条": "{n} reconhecidos · {selected} selecionados", "已识别 {n} 条代理,跳过 {duplicates} 条重复地址": "{n} proxies reconhecidos e {duplicates} duplicados ignorados", "已识别订阅链接": "Link de assinatura reconhecido", "已选择「{name}」,保存后导入": "\"{name}\" selecionado - importado ao salvar", "已配置认证": "Autenticação configurada", "当前客户端不支持手动导入内核,请更新或刷新页面": "Este cliente não suporta a importação manual do kernel. Atualize-o ou recarregue a página.", "当前没有正在进行的下载": "Não há download em andamento", "当前环境不支持代理池(桥接方法缺失)": "O ambiente atual não oferece suporte ao pool de proxies (método de ponte ausente)", "当前环境不支持代理测试(桥接方法缺失)": "O ambiente atual não oferece suporte ao teste de proxies (método de ponte ausente)", "当前环境不支持代理设置(桥接方法缺失)": "As configurações de proxy não são suportadas neste ambiente (método de ponte ausente)", "当前环境不支持同步(桥接方法缺失)": "O ambiente atual não oferece suporte à sincronização (método de ponte ausente)", "当前环境不支持启停(桥接方法缺失)": "Ativar/desativar não é compatível com este ambiente (método de ponte ausente)", "当前环境不支持订阅(桥接方法缺失)": "Assinaturas não são suportadas neste ambiente (método de ponte ausente)", "当前环境不支持选择文件夹,直接填写绝对路径即可": "Este ambiente não abre seletor de pastas - digite o caminho absoluto", "当前线路不可用:{error};重新选一条或切回直连": "A rota atual está indisponível: {error}. Escolha outra ou volte para conexão direta", "我知道了": "Entendi", "所属订阅已删除,这条节点不会再分配端口 —— 可以删除它": "A assinatura deste nó foi excluída, então ele nunca receberá uma porta — você pode excluí-lo", "手动下载官方内核": "Baixar kernel oficial manualmente", "手动代理与 Clash Verge 同步仍然保留": "Proxies manuais e sincronização do Clash Verge continuam disponíveis", "手动代理仍然保留": "Proxies manuais continuam disponíveis", "手动填写的地址与端口": "Endereço e porta preenchidos manualmente", "手动导入内核": "Importar kernel manualmente", "打开文件夹选择框失败:{reason}": "Falha ao abrir o seletor de pastas: {reason}", "批量删除": "Excluir em lote", "批量删除代理": "Excluir proxies em lote", "批量测试": "Testar em lote", "批量测试完成:{ok} 个可用、{failed} 个失败(共 {total} 个)": "Teste em lote concluído: {ok} disponíveis, {failed} com falha ({total} no total)", "批量测试完成:{ok} 个可用(共 {total} 个)": "Teste em lote concluído: {ok} disponíveis ({total} no total)", "批量测试({n})": "Testar em lote ({n})", "批量添加": "Adicionar em lote", "批量添加响应异常,请刷新代理列表确认后再试": "Resposta inesperada do lote. Atualize a lista de proxies e confira o que foi salvo antes de tentar novamente.", "批量添加完成:新增 {added} 条,重复 {duplicates} 条,失败 {failed} 条": "Lote concluído: {added} adicionados, {duplicates} duplicados, {failed} com falha", "批量添加({n})": "Adicionar em lote ({n})", "按协议筛选": "Filtrar por protocolo", "按提供方筛选": "Filtrar por provedor", "按来源筛选": "Filtrar por origem", "按需下载(约 20-40MB)": "Baixado sob demanda (~20-40MB)", "控制端口 {port} · {n} 个节点监听器": "porta de controle {port} · {n} listeners de nós", "搜索代理": "Buscar proxies", "搜索名称 / 地址 / 端口": "Buscar nome / endereço / porta", "搜索节点": "Buscar nós", "支持官方压缩包和解压后的内核二进制;只接受当前版本,SHA-256 校验不通过时不会替换现有内核。": "São aceitos arquivos oficiais compactados e binários extraídos. Somente a versão atual é permitida; uma falha na verificação SHA-256 mantém o kernel existente intacto.", "支持手动地址与 Clash Verge 端点同步,不接管代理服务的安装与运行。": "Suporta endereços inseridos manualmente e sincronização de endpoints do Clash Verge; não gerencia a instalação nem a execução do serviço de proxy.", "文件或目录路径": "Caminho do arquivo ou pasta", "文件读取失败": "Falha ao ler o arquivo", "新增代理": "Adicionar proxy", "新增方式": "Modo de adição", "新增订阅": "Nova assinatura", "新解析的代理默认使用非直连": "Usar conexão encadeada nos novos proxies reconhecidos", "显示 {n} / 共 {total} 个出口": "Mostrando {n} / {total} endpoints", "暂未使用": "Não utilizado", "更新中…": "Atualizando…", "更新出网线路已保存,正在准备监听端口": "A rota de atualização foi salva; preparando a porta de escuta.", "替换代理内核": "Substituir kernel de proxy", "最近检测": "Última verificação", "有 {n} 个账号正在使用它({names})—— 删除后这些账号会回退直连。": "{n} contas estão usando este proxy ({names}) — após a exclusão, essas contas voltarão à conexão direta.", "有 {n} 个账号正在使用它({names})—— 删除后需重新设置这些账号的代理,不会自动直连。": "{n} contas usam este proxy ({names}). Após a exclusão, reconfigure os proxies dessas contas; não haverá conexão direta automática.", "有 {n} 个账号正在使用它,删除后这些账号会回退直连。": "{n} contas usam este proxy. Ao excluí-lo, essas contas voltam à conexão direta.", "有 {n} 个账号正在使用它,删除后需重新设置这些账号的代理,不会自动直连。": "{n} contas usam este proxy. Após a exclusão, reconfigure os proxies dessas contas; não haverá conexão direta automática.", "未检测": "Não verificado", "未检测到 Clash Verge:{reason}": "Clash Verge não detectado: {reason}", "未测试": "Não testado", "未选择文件": "Nenhum arquivo selecionado", "本地 YAML 文件": "Arquivo YAML local", "本地文件": "Arquivo local", "本地文件不会自动更新:要更新节点,重新选择文件后保存;不重选则内容保持不变。": "Arquivos locais não são atualizados automaticamente: para atualizar os nós, escolha o arquivo novamente e salve; sem reescolher, o conteúdo permanece o mesmo.", "本地文件订阅无需更新(要换内容请编辑后重新选择文件)": "Assinatura de arquivo local não precisa de atualização (para mudar o conteúdo, edite e escolha o arquivo novamente)", "本地文件订阅的内容在导入时固定:节点会由内核起成本地监听器并镜像进代理池,节点数稍等几秒由轮询刷新。": "O conteúdo de uma assinatura de arquivo local é fixado na importação: o kernel inicia os nós como listeners locais e os espelha no pool de proxies; a contagem de nós é atualizada por polling em alguns segundos.", "本页可编辑、可删除": "Editável e removível nesta página", "来自 Clash Verge 同步(名称、端口跟随 Clash),请到 Clash Verge 中修改;启用可在本页关闭": "Sincronizado do Clash Verge (nome e porta seguem o Clash); edite-os no Clash Verge. O interruptor de ativação pode ser desligado nesta página.", "正在下载内核": "Baixando o kernel", "正在停止…": "Parando…", "正在安装内核…": "Instalando kernel…", "正在导入…": "Importando…", "正在开始…": "Iniciando…", "正在校验内核…": "Verificando kernel…", "正在读取并上传文件…": "Lendo e enviando arquivo…", "正在连接 GitHub…": "Conectando ao GitHub…", "此代理用于{services};删除后这些线路将不可用,不会自动回退直连。": "Este proxy é usado para {services}. Excluí-lo deixa essas rotas indisponíveis; elas não voltam automaticamente à conexão direta.", "此代理用于软件 / 插件更新;删除后这些线路将不可用,不会自动回退直连。": "Este proxy é usado para atualizações de software / plugins. Excluí-lo torna essas rotas indisponíveis; elas não voltam automaticamente à conexão direta.", "每次最多添加 {n} 条代理": "Adicione até {n} proxies por vez", "每行一条,解析后可修改名称、设置非直连并测试,最后保存勾选的代理。": "Insira um proxy por linha. Analise a lista, edite os nomes, configure conexões encadeadas e teste. Depois, salve os proxies selecionados.", "没有匹配「{kw}」的出口": "Nenhum endpoint corresponde a \"{kw}\"", "没有匹配当前筛选的出口": "Nenhum endpoint corresponde aos filtros atuais", "没有可全选的代理": "Nenhum proxy para selecionar", "没有可删除的条目": "Nenhum item pode ser excluído", "没能同步:{reason}": "Não foi possível sincronizar: {reason}", "测试中 {done}/{total}": "Testando {done}/{total}", "测试失败:{reason}": "Falha no teste: {reason}", "测试目标网址": "URL de destino do teste", "测试结果没能记下:{reason}": "Não foi possível registrar o resultado do teste: {reason}", "测试网址要以 http:// 或 https:// 开头": "A URL de teste deve começar com http:// ou https://", "测试设置": "Configurações do teste", "添加一个 HTTP 或 SOCKS5 地址,之后可以在账号或服务线路中选择使用。": "Adicione um endereço HTTP ou SOCKS5 para usá-lo com contas ou rotas de serviço.", "添加单个": "Adicionar proxy", "添加手动 HTTP / SOCKS5 地址,或同步 Clash Verge 的端点,供账号与服务线路使用。": "Adicione um endereço HTTP / SOCKS5 manualmente ou sincronize os endpoints do Clash Verge para usar com contas e rotas de serviço.", "添加第一个代理": "Adicionar o primeiro proxy", "清空已识别": "Limpar lista reconhecida", "清空筛选": "Limpar filtros", "确定删除「{name}」?{used}": "Excluir “{name}”?{used}", "确定删除「{name}」?它在代理池里的节点会一并移除,引用这些节点的账号会回退直连。": "Excluir \"{name}\"? Seus nós no pool de proxies também serão removidos, e as contas que os referenciam voltarão à conexão direta.", "确定删除「{name}」?": "Excluir \"{name}\"?", "确定删除已下载的内核{version}?内核文件与端口映射会被移除,订阅节点会失去监听端口(地址列显示「端口准备中」),引用它们的账号会暂时回退直连;订阅本身保留,重新下载内核后会重新分配端口。": "Excluir o kernel baixado{version}? Os arquivos do kernel e o mapeamento de portas serão removidos, os nós da assinatura perdem as portas de escuta (a coluna de endereço mostra \"Porta em preparação\"), e as contas que os referenciam voltam para conexão direta por enquanto. As assinaturas são mantidas e as portas são redistribuídas depois de baixar o kernel novamente.", "确定删除选中的 {n} 个代理?": "Excluir os {n} proxies selecionados?", "禁用后本端不再用它(引用它的账号回退直连),并会关掉它的本地监听端口": "Ao desativar, esta máquina deixa de usá-lo (contas que o referenciam voltam à conexão direta) e a porta de escuta local é fechada", "禁用后本端不再用它(引用它的账号回退直连);端口在 Clash Verge 侧,不受影响": "Ao desativar, esta máquina deixa de usá-lo (contas que o referenciam voltam à conexão direta); a porta permanece no lado do Clash Verge, sem alterações", "立即更新": "Atualizar agora", "端口范围必须是 1-65535 的整数": "A faixa de portas deve ser inteiros de 1 a 65535", "第 {line} 行:{error}": "Linha {line}: {error}", "类型": "Tipo", "粘贴代理列表后点击「解析」": "Cole a lista de proxies e clique em Analisar", "编辑代理": "Editar proxy", "编辑订阅": "Editar assinatura", "网关已切换,请重新打开代理弹窗": "O gateway foi alterado. Reabra a janela de proxies.", "网关未返回内核导入任务,请刷新状态后确认": "O gateway não retornou uma tarefa de importação do kernel. Atualize o estado para conferir o resultado.", "网关机器上的文件或目录": "Arquivo ou pasta na máquina do gateway", "节点": "Nós", "节点由内核起成本地监听器,镜像进代理池": "Os nós são iniciados como listeners locais pelo kernel e espelhados no pool de proxies", "节点端口范围 {base}–{end}": "Faixa de portas dos nós {base}–{end}", "节点端口范围(结束)": "Faixa de portas de nó (fim)", "节点端口范围(起始)": "Faixa de portas de nó (início)", "解析": "Analisar", "订阅": "Assinaturas", "订阅与 Clash 的出口自动镜像进来": "Endpoints de assinaturas e do Clash são espelhados automaticamente", "订阅内容由内核定时刷新(每 24 小时);节点数与同步状态在保存后由轮询刷新,稍等几秒。": "O conteúdo da assinatura é atualizado pelo kernel periodicamente (a cada 24 horas); a contagem de nós e o estado de sincronização são atualizados por polling após salvar — aguarde alguns segundos.", "订阅导入与更新、订阅节点管理,以及代理内核的下载、安装和运行。": "Importação e atualização de assinaturas, gerenciamento de nós e download, instalação e execução do kernel de proxy.", "订阅来源": "Origem da assinatura", "订阅管理": "Gerenciar assinaturas", "订阅管理({n})": "Gerenciar assinaturas ({n})", "订阅节点会在本机各占一个监听端口,从该范围里挑空闲的分配;节点多的大订阅把默认范围({base}-{end})用尽时会报「没有可用的节点端口」,这时把范围调大再重启内核。已分配出去的端口不会因改范围而失效。": "Cada nó de assinatura ocupa uma porta de escuta local, alocada entre as portas livres desta faixa; quando uma assinatura grande esgota a faixa padrão ({base}-{end}), o app informa \"sem portas de nó livres\" — aumente a faixa e reinicie o kernel. Portas já alocadas continuam válidas quando a faixa muda.", "订阅里的节点会自动同步进代理池,账号即可引用。": "Os nós da assinatura são sincronizados automaticamente no pool de proxies, prontos para as contas usarem.", "订阅里的节点会被内核起成本地监听器,镜像到代理池(账号按 id 引用,与本页其它出口同一用法)。内核只在用到订阅时按需下载(约 20-40MB),不随安装包分发。": "Os nós das assinaturas são iniciados como listeners locais pelo kernel e espelhados no pool de proxies (as contas os referenciam por id, igual a qualquer outro endpoint desta página). O kernel só é baixado sob demanda quando há assinaturas em uso (~20-40MB) e não vem com o instalador.", "订阅链接": "Link da assinatura", "识别中…": "Reconhecendo…", "该节点所属订阅已删除,不会再被同步更新,可手动删除清理": "A assinatura deste nó foi excluída; ele não será mais sincronizado e pode ser removido manualmente", "该节点来自订阅(名称、端口跟随订阅与内核),请在「订阅管理」里修改;启用可在本页关闭": "Este nó vem de uma assinatura (nome e porta seguem a assinatura e o kernel); edite-os em \"Gerenciar assinaturas\". O interruptor de ativação pode ser desligado nesta página.", "请下载与网关平台一致的官方内核,不是浏览器所在设备的平台。": "Baixe o kernel oficial para a plataforma do gateway, não para o dispositivo que executa o navegador.", "请填写代理名称": "Informe o nome do proxy", "请填写已有代理服务的 HTTP / SOCKS5 地址,或自行运行 Clash Verge 后同步端点,并重新为相关账号和服务线路选择代理。": "Informe o endereço HTTP / SOCKS5 de um serviço de proxy existente ou execute o Clash Verge separadamente e sincronize seus endpoints. Depois, selecione novamente um proxy para as contas e rotas afetadas.", "请填写网关机器上的绝对文件或目录路径": "Informe o caminho absoluto do arquivo ou pasta na máquina do gateway", "请改为填写已有代理服务的 HTTP / SOCKS5 地址,并重新为相关账号和服务线路选择代理。": "Informe o endereço HTTP / SOCKS5 de um serviço de proxy existente e selecione novamente um proxy para as contas e rotas afetadas.", "请选择要导入的 YAML 文件": "Selecione um arquivo YAML para importar", "请选择要导入的内核文件": "Selecione o arquivo do kernel para importar", "读取失败:{reason}": "Falha ao ler: {reason}", "起始端口不能大于结束端口": "A porta inicial não pode ser maior que a porta final", "跳过 {n} 个(Clash 同步)": "{n} ignorados (sincronização do Clash)", "跳过 {n} 个(同步只读条目)": "{n} ignorados (entradas somente leitura sincronizadas)", "软件 / 插件更新": "Atualizações de software / plugins", "还没有代理。点右上角「+ 新增代理」手填一个,或在「订阅管理」里导入订阅节点、同步 Clash Verge 的出口。": "Ainda não há proxies. Clique em \"+ Adicionar proxy\" no canto superior direito para preencher manualmente, ou importe nós de assinatura / sincronize os endpoints do Clash Verge em \"Gerenciar assinaturas\".", "还没有代理。点右上角「+ 新增代理」手填一个,或点「同步 Clash Verge」把 Clash 的出口导进来。": "Ainda não há proxies. Clique em “+ Adicionar proxy” no canto superior direito para preencher um manualmente, ou em “Sincronizar Clash Verge” para importar os endpoints do Clash.", "还没有订阅:粘贴订阅链接、导入本地 YAML 文件,或从图片识别二维码。": "Nenhuma assinatura ainda: cole um link de assinatura, importe um arquivo YAML local ou leia um QR code de uma imagem.", "还没有账号使用它(端口只在被账号引用时才分配 —— 在账号里选它并保存后,内核会自动开端口)": "Nenhuma conta usa este nó ainda (a porta só é atribuída quando uma conta referencia o nó — selecione-o em uma conta e salve, e o kernel abrirá a porta automaticamente)", "还没有账号或服务线路使用它;在账号或更新设置中选中并保存后,内核会自动开端口": "Nenhuma conta ou rota de serviço usa este nó ainda. Selecione-o nas configurações de conta ou atualização e salve para o kernel abrir a porta automaticamente.", "这是网关机器上的安装目录,留空使用默认位置。导入会复制文件并建立版本目录,不删除原下载文件。": "Esta é a pasta de instalação na máquina do gateway. Deixe vazia para usar o local padrão. A importação copia o arquivo para uma pasta versionada sem excluir o download original.", "这条在 Clash Verge 里是停用的,本页启用不生效 —— 到 Clash Verge 里打开它": "Este item está desativado no Clash Verge, então ativá-lo aqui não tem efeito — ligue-o no Clash Verge", "这里只连接你提供的代理地址,不接管代理服务的安装与运行。": "Apenas conecta aos endereços de proxy que você fornece; não gerencia a instalação nem a execução do serviço de proxy.", "连接成功": "Conectado", "连通性": "Conectividade", "连通性测试设置": "Configurações do teste de conectividade", "选中的 {n} 条都是同步来的只读条目(Clash / 订阅),不能删除": "As {n} entradas selecionadas são somente leitura sincronizadas (Clash / assinaturas) e não podem ser excluídas", "选中的 {n} 条都来自 Clash Verge 同步,不能删除(请到 Clash Verge 里删)": "Os {n} itens selecionados vêm todos da sincronização com o Clash Verge e não podem ser excluídos (exclua-os no Clash Verge)", "选中的代理用于{services};删除后这些线路将不可用,不会自动回退直连。": "Os proxies selecionados são usados para {services}. Excluí-los deixa essas rotas indisponíveis; elas não voltam automaticamente à conexão direta.", "选择 YAML 文件…": "Escolher arquivo YAML…", "选择内核文件…": "Escolher arquivo do kernel…", "选择目录…": "Escolher pasta…", "选项来自「网络代理」页(Clash Verge 同步的出口在这里可用;订阅节点要等内核起来才有端口)。选「直连」时连不上会自动借 Clash 混合端口重试一次;选定某条线路后只走它。": "As opções vêm da página \"Proxy de rede\" (as saídas sincronizadas do Clash Verge funcionam aqui; nós de assinatura só ganham porta depois que o kernel inicia). Em \"Conexão direta\", uma falha tenta uma vez pela porta mista do Clash; ao escolher uma rota, só ela é usada.", "通过代理访问该网址,检查是否能收到 HTTP 响应。留空沿用网关默认值。": "Acesse esta URL pelo proxy para verificar se recebe uma resposta HTTP. Deixe em branco para usar o padrão do gateway.", "部分测试结果没能记下:{reason}": "Alguns resultados de teste não puderam ser registrados: {reason}", "重启内核": "Reiniciar kernel", "重新选择文件…": "Escolher outro arquivo…", "需要干净的出口?": "Precisa de uma saída limpa?", "需要用户名和密码(可选)": "Exigir usuário e senha (opcional)", "非直连": "Encadeado", "非直连代理": "Encadear pelo proxy do sistema", "非直连会先经过网关所在设备的系统代理,再连接到此代理;系统代理不可用时不会改走直连。": "Conecta primeiro pelo proxy do sistema no dispositivo do gateway e depois por este proxy. Se o proxy do sistema estiver indisponível, não haverá conexão direta automática.", "首次购买使用优惠码 AGENT2API25 享 75 折。": "Use o código AGENT2API25 para 25% de desconto na primeira compra.", "+ 新增代理": "+ Adicionar proxy", "+ 新增订阅": "+ Nova assinatura", ",": "; ", " 或 ": " ou ", "Anthropic SDK 会自动携带版本头;手写 Messages 请求可使用 2023-06-01。/v1/models 收到该头或 x-api-key 时返回 Anthropic 列表形态。": "O SDK Anthropic adiciona o cabeçalho de versão automaticamente; requisições Messages manuais podem usar 2023-06-01. /v1/models retorna a lista no formato Anthropic quando recebe esse cabeçalho ou x-api-key.", "Anthropic 业务错误结构示例": "Exemplo de erro Anthropic de negócio", "Anthropic 官方 SDK / Claude Code 使用的根地址:": "Endereço raiz para o SDK oficial Anthropic / Claude Code: ", "Anthropic 标准要求显式填写正整数。网关对缺失或无效值补 8192,但上游模型的实际预算仍可能更低。": "O padrão Anthropic exige inteiro positivo explícito. O gateway substitui valor ausente ou inválido por 8192, mas o modelo upstream pode ter orçamento menor.", "Antigravity 支持宽高比 1:1、2:3、3:2、3:4、4:3、4:5、5:4、9:16、16:9、21:9,尺寸会映射到原生 1K / 2K / 4K 档。请求最长边 ≤1792 为 1K,1793–3072 为 2K,3073–4096 为 4K;超过 4096 会被该提供商拒绝。": "Antigravity aceita proporções 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9 e 21:9, mapeando para níveis nativos 1K / 2K / 4K. Maior lado ≤1792 vira 1K, 1793–3072 vira 2K, 3073–4096 vira 4K; acima de 4096 é recusado por esse provedor.", "Antigravity 的 size=auto 生成使用 1:1、1K;参考图编辑使用 1K 且不强制正方形。模型版本可能有更严格的输出限制;宽高比需接近支持值,不能任意指定像素尺寸。": "Em Antigravity, size=auto gera em 1:1 e 1K; edição usa 1K sem forçar quadrado. Versões de modelo podem limitar mais. Proporções devem ser próximas às suportadas; não aceita qualquer tamanho em pixels.", "Base URL 填进客户端的「API 地址 / Base URL」栏;对话协议按客户端支持的类型三选一(Chat Completions / Responses / Anthropic Messages),三者共用同一套模型与账号池,可随时切换;鉴权用「网关 Key」页里任一启用 Key。": "Preencha o Base URL no campo “Endereço da API / Base URL” do cliente; escolha um dos três protocolos de conversa conforme o tipo compatível com o cliente (Chat Completions / Responses / Anthropic Messages) — os três compartilham o mesmo conjunto de modelos e o mesmo pool de contas e podem ser alternados a qualquer momento; para autenticação, use qualquer Key habilitada na página “Chave do gateway”.", "Chat 流式成功通常以 data: [DONE] 收尾。需要同时处理 delta.content、思考字段和 delta.tool_calls;工具参数可能跨多个增量拼接。": "Um fluxo Chat bem-sucedido normalmente termina com data: [DONE]. Trate delta.content, raciocínio e delta.tool_calls; argumentos de ferramentas podem precisar ser montados de vários deltas.", "Chat、Responses 和图片接口通常返回 error 对象,其中 message 是可读说明,type 是错误类别,code 与 upstream_code 按情况附带。Anthropic 业务错误使用 type=error 的信封;鉴权中间件、无效 JSON 或网关层错误也可能返回通用 error 形态。": "Chat, Responses e imagens normalmente retornam error: message descreve, type classifica, code e upstream_code são opcionais. Erros Anthropic de negócio usam envelope type=error; autenticação, JSON inválido e erros do gateway também podem usar a estrutura error genérica.", "Claude Code / Anthropic SDK(token 计数:/v1/messages/count_tokens)": "Claude Code / Anthropic SDK (contagem de tokens: /v1/messages/count_tokens)", "Claude Code / Anthropic SDK;模型与账号池和 OpenAI 入口共用。": "Claude Code / SDK Anthropic; compartilha modelos e pool de contas com os endpoints OpenAI.", "Codex / 新版 OpenAI SDK;无状态转发,历史由客户端携带。": "Codex / SDKs OpenAI recentes; encaminhamento sem estado, com histórico enviado pelo cliente.", "GET /health 返回 status=ok 或 degraded。公网安全模式只返回简化探活信息;HTTP 200 或 status=ok 不代表所有提供商在线、账号有额度或图片模型可调用。": "GET /health retorna status=ok ou degraded. No modo seguro público, expõe apenas informação simplificada de atividade. HTTP 200 ou status=ok não garante todos os provedores online, contas com cota nem modelos de imagem utilizáveis.", "GET /health、GET /v1/models 和网关临时图片下载不强制检查 Key。模型清单可在配 Key 前读取,但这不能证明 Key 正确;应以携带该 Key 的实际业务请求为准。": "GET /health, GET /v1/models e downloads temporários do gateway não exigem Key. Ler a lista antes de configurar uma Key não valida essa Key; confirme com uma requisição protegida real usando-a.", "HTTP(S) 参考图由网关服务器下载,不携带网关 Key 或提供商凭证。外链必须能被网关无额外请求头访问;本机、内网、带用户名密码或不安全重定向地址会被拒绝。受保护图片建议直接上传文件。": "O servidor baixa referências HTTP(S) sem Key nem credenciais do provedor. URLs externas devem ser acessíveis sem cabeçalhos extras. Endereços locais, privados, com usuário/senha ou redirecionamentos inseguros são recusados. Prefira upload direto de imagens protegidas.", "JSON 图片引用编辑请求": "Requisição JSON de edição por referência", "JSON 图片生成请求": "Requisição JSON de geração de imagem", "JSON 的 images 是对象数组,每项只能包含 image_url。接受完整 HTTP(S) URL、data:image/...;base64,...,或先前响应返回的完整网关临时图片链接;不接受裸 base64、相对路径、file_id 或本地文件路径。": "Em JSON, images é array de objetos com apenas image_url. Aceita HTTP(S) absoluto, data:image/...;base64,... ou URL temporária completa já retornada pelo gateway. Não aceita base64 puro, caminhos relativos, file_id nem caminhos de arquivo local.", "JSON 请求使用 application/json。图片编辑上传文件时使用 multipart/form-data;curl -F 会自动生成 boundary,不要手动覆盖此请求头。": "Use application/json para JSON e multipart/form-data para upload de arquivos na edição de imagens. curl -F gera o boundary automaticamente; não sobrescreva esse cabeçalho manualmente.", "Key 缺失、无效、停用,或上游认证失败。网关未收到 Key 时返回 model_api_key_required,无效 Key 返回 invalid_api_key;请检查请求头与「网关 Key」页。": "Key ausente, inválida ou desabilitada, ou falha de autenticação upstream. O gateway retorna model_api_key_required quando falta a Key e invalid_api_key quando ela é inválida. Confira os cabeçalhos e a página Chave do gateway.", "Key 缺失、无效、停用,或上游认证失败。网关鉴权失败通常为 invalid_api_key;检查请求头与「网关 Key」页,而不是仅重拉模型列表。": "Key ausente, inválida, desabilitada ou falha de autenticação upstream. A falha de Key do gateway costuma ser invalid_api_key. Verifique cabeçalhos e a página Chave do gateway; atualizar modelos não basta.", "LLM 请求": "Requisições LLM", "Messages 响应结构": "Estrutura da resposta Messages", "Messages 请求": "Requisição Messages", "ModelScope 不支持 style、mask 与 input_fidelity;quality 仅接受省略、auto 或 standard,background 仅接受省略、auto 或 opaque,moderation 仅接受省略或 auto。风格与修改目标请写入 prompt。": "ModelScope não suporta style, mask ou input_fidelity. quality aceita omissão, auto ou standard; background aceita omissão, auto ou opaque; moderation aceita omissão ou auto. Descreva o estilo e as alterações em prompt.", "ModelScope 使用官方异步任务接口,创建后只查询同一任务,不会为了等待结果重新提交。单次 n=1;size 可省略、设为 auto,或指定边长 64–2048 的 WIDTHxHEIGHT,具体型号可能进一步限制。": "ModelScope usa a API oficial de tarefas assíncronas e consulta a mesma tarefa sem reenviar. Cada chamada usa n=1; size pode ser omitido, auto ou WIDTHxHEIGHT com lados de 64–2048. Modelos podem impor limites adicionais.", "OpenAI Python SDK 图片示例": "Exemplo de imagem com OpenAI Python SDK", "OpenAI SDK 的 base_url 填「接口地址」章节中以 /v1 结尾的 Base URL,不要填完整的 /chat/completions。Anthropic 官方 SDK 与 Claude Code 的 ANTHROPIC_BASE_URL 填网关根地址,不带 /v1;它们会自行追加 /v1/messages。其他客户端是否自动追加 /v1,以其地址栏说明为准。": "No SDK OpenAI, configure base_url com o Base URL terminado em /v1 no capítulo Endereço da API, e não com o endereço completo de /chat/completions. No SDK oficial Anthropic e no Claude Code, ANTHROPIC_BASE_URL deve ser a raiz do gateway sem /v1; eles acrescentam /v1/messages. Outros clientes podem adicionar /v1 de outra forma; siga a orientação do campo de endereço.", "OpenAI SDK 的 base_url 填上方以 /v1 结尾的 Base URL,不要填完整的 /chat/completions。Anthropic 官方 SDK 与 Claude Code 的 ANTHROPIC_BASE_URL 填网关根地址,不带 /v1;它们会自行追加 /v1/messages。其他客户端是否自动追加 /v1,以其地址栏说明为准。": "No SDK OpenAI, configure base_url com o Base URL acima, terminado em /v1, e não com o endereço completo de /chat/completions. No SDK oficial Anthropic e no Claude Code, ANTHROPIC_BASE_URL deve ser a raiz do gateway sem /v1; eles acrescentam /v1/messages. Outros clientes podem adicionar /v1 de outra forma; siga a orientação do campo de endereço.", "OpenAI 兼容客户端使用此地址;Anthropic 官方 SDK 使用下方说明中的网关根地址。": "Use este endereço em clientes compatíveis com OpenAI. O SDK oficial da Anthropic usa o endereço raiz do gateway descrito abaixo.", "OpenAI 新协议(Codex、新版 SDK)": "Novo protocolo da OpenAI (Codex, SDKs mais recentes)", "Python:生成、编辑并保存图片": "Python: gerar, editar e salvar imagens", "Responses 使用 function_call / function_call_output 配对,Anthropic 使用 tool_use / tool_result 配对。协议转换会处理这些格式,但不会替客户端执行自定义函数。上游原生搜索等服务端工具是否可用取决于提供商,不能当成网关统一能力。": "Responses associa function_call / function_call_output; Anthropic associa tool_use / tool_result. A conversão trata formatos, mas não executa funções personalizadas pelo cliente. Ferramentas nativas, como busca no upstream, dependem do provedor e não são uma capacidade universal do gateway.", "Responses 响应结构": "Estrutura da resposta Responses", "Responses 请求": "Requisição Responses", "SDK 示例使用的环境变量": "Variáveis de ambiente do exemplo SDK", "Token 估算响应": "Resposta da estimativa de tokens", "Token 数量估算": "Estimativa de tokens", "Token 自动续期": "Renovação automática de token", "WorkBuddy 走官方图片接口:size 省略或设为 auto 时按 1024x1024 请求;该通道不接受 quality、style、background 与 moderation,请把风格与质量要求写进 prompt。参考图以 data URL 内联在 JSON 请求里发送(不是 multipart),模型 id 由上游目录下发,换版本时以 /v1/models 为准。": "O WorkBuddy usa a API oficial de imagens: quando size é omitido ou definido como auto, a requisição usa 1024x1024; este canal não aceita quality, style, background nem moderation, então descreva estilo e qualidade no prompt. As imagens de referência vão embutidas como data URLs dentro do JSON (não multipart), e os ids de modelo vêm do catálogo do fornecedor — consulte /v1/models quando a versão mudar.", "base64 图片响应结构": "Estrutura da resposta base64", "chat 用于三种对话入口;image 用于 /v1/images/generations 和 /v1/images/edits。不要把图片模型提交给对话入口。": "chat usa os três endpoints de conversa; image usa /v1/images/generations e /v1/images/edits. Não envie modelos de imagem aos endpoints de conversa.", "count_tokens 在本地估算,不调用上游 tokenizer;返回 input_tokens 和 estimated=true。数值用于上下文预算,不用于精确计费,尤其不应当作图片的真实 Token 用量。": "count_tokens estima localmente sem chamar tokenizer upstream. Retorna input_tokens e estimated=true. Use para orçamento de contexto, não cobrança exata, especialmente não para o custo real de tokens de imagens.", "curl -F 自动生成 multipart boundary。不要额外设置 Content-Type: application/json 或手写无 boundary 的 multipart/form-data;prompt 使用 --form-string 可避免特殊字符被当作文件上传。": "curl -F gera o boundary. Não acrescente Content-Type: application/json nem multipart/form-data manual sem boundary. Use --form-string em prompt para não interpretar caracteres especiais como upload de arquivo.", "response_format=b64_json 时返回不带 data URL 前缀的标准 base64。解码为二进制后保存;网页展示时自行加对应 MIME 类型前缀。": "Com response_format=b64_json, retorna base64 padrão sem prefixo data URL. Decodifique em binário para salvar; na web, adicione o prefixo MIME adequado.", "response_format=url 不保证永久地址;网关临时链接与 AI 助手会话中的图片存储是两套机制,不能混用接口或有效期。": "response_format=url não garante URL permanente. Links temporários e armazenamento de imagem da sessão do assistente são mecanismos distintos; endpoints e validades não são intercambiáveis.", "response_format=url 时返回。可能是提供商签名链接,也可能是网关临时下载链接;应直接使用返回值,不要自行拼下载 id。": "Retornado com response_format=url. Pode ser URL assinada do provedor ou temporária do gateway. Use o valor retornado, não crie ids de download.", "stream 默认 false;true 返回 Anthropic 事件流。stop_sequences 映射为停止序列,是否支持取决于上游。": "stream é false por padrão; true retorna eventos Anthropic. stop_sequences mapeia sequências de parada, com suporte definido pelo upstream.", "usage 的 prompt_tokens、completion_tokens、total_tokens 表示用量,不等于统一货币价格。上游未提供时可能缺失或为 0。": "prompt_tokens, completion_tokens e total_tokens em usage medem uso, não um preço monetário uniforme. Podem faltar ou ser 0 quando o upstream não os fornece.", "✓ 支持 · ✗ 不支持 · — 无此概念 · ? 未声明": "✓ Suportado · ✗ Não suportado · — Não se aplica · ? Não declarado", "。一把启用的 Key 都没有时不鉴权(默认网关只监听 127.0.0.1;在设置页开启「局域网访问」后监听所有网卡,鉴权与安全闸门随之启用)。": ". Se nenhuma Key estiver habilitada, não há autenticação (por padrão, o gateway escuta apenas 127.0.0.1; após habilitar “Acesso LAN” na página de configurações, ele passa a escutar todas as interfaces de rede, e a autenticação e as barreiras de segurança entram em vigor).", "三种对话协议的流式错误需要检查事件内容与正常结束标记;HTTP 200 本身不足以证明成功。图片接口仅返回非流式 JSON。": "Nos três protocolos de conversa, verifique eventos e encerramento normal. HTTP 200 sozinho não comprova sucesso. Imagens retornam apenas JSON sem streaming.", "上一章": "Capítulo anterior", "上传一张或多张参考图,并用提示词描述保留内容与修改目标。": "Envie uma ou mais referências e descreva no prompt o que preservar e o que alterar.", "上传一张本地参考图": "Enviar uma imagem de referência local", "上传多张参考图": "Enviar várias imagens de referência", "上传本地文件推荐 multipart/form-data;已经有图片 URL 或 base64 时可发送 application/json。除参考图字段外,参数与图片生成相同。": "Use multipart/form-data para arquivos locais ou application/json para URL ou base64 existente. Exceto referências, os parâmetros são os mesmos da geração.", "下一章": "Próximo capítulo", "下表是网关接受的参数范围,不是所有提供商都支持的范围。生成与编辑共用这些字段,具体上游可能进一步拒绝数量、质量、风格、背景或尺寸。": "A tabela mostra parâmetros aceitos pelo gateway, não suporte comum a todos os provedores. Geração e edição compartilham esses campos, mas upstreams podem restringir quantidade, qualidade, estilo, fundo ou tamanho.", "下载并保存网关临时图片": "Baixar e salvar imagem temporária do gateway", "下载返回原始图片二进制及 image/png、image/jpeg 或 image/webp Content-Type,不是 JSON。不存在或过期返回 404,响应使用 private, no-store 与 nosniff。": "Download retorna bytes da imagem com Content-Type image/png, image/jpeg ou image/webp, não JSON. Link ausente ou expirado retorna 404; usa private, no-store e nosniff.", "不强制鉴权;仅用于确认网关可访问,不保证模型或额度可用。": "Autenticação não obrigatória; confirma acesso ao gateway, não disponibilidade de modelos ou cota.", "不强制鉴权;携带有效 Key 可查看该 Key 获准使用的模型。": "Autenticação não obrigatória; uma Key válida filtra a lista para os modelos autorizados para ela.", "不携带 Anthropic 相关头时,模型接口返回 OpenAI 风格的 object=list、data 数组和 meta 摘要;携带 anthropic-version 或 x-api-key 时,返回 data、has_more、first_id、last_id,并保留能力扩展字段。": "Sem cabeçalhos Anthropic, retorna object=list, array data e resumo meta no formato OpenAI. Com anthropic-version ou x-api-key, retorna data, has_more, first_id e last_id, mantendo extensões de capacidade.", "不支持依赖服务端状态的 previous_response_id、conversation、托管提示词 prompt,以及 background=true;请由客户端保存并回传历史,不要调用未实现的 Responses 查询或删除接口。": "previous_response_id, conversation, prompt hospedado e background=true, que exigem estado no servidor, não são suportados. Salve e reenvie o histórico no cliente; não chame endpoints de consulta ou exclusão Responses não implementados.", "不要把 base64 图片塞回对话文本或日志,也不要将“请求超时”理解为“没有扣费”。如需连续编辑,保存结果文件后再作为下一次 image 上传。": "Não coloque base64 de imagens no texto da conversa nem em logs, e não interprete timeout como ausência de cobrança. Para edições sucessivas, salve o resultado e envie como o próximo image.", "业务请求的 model 值。owned_by 表示目录条目的归属,不保证每次请求都由该提供商承载;同名模型与映射可能有多个路由。": "Valor de model nas requisições. owned_by indica o proprietário do item no catálogo, não necessariamente quem atende cada chamada; modelos com mesmo nome e mapeamentos podem ter várias rotas.", "临时图片下载": "Download de imagem temporária", "也可使用 x-api-key: YOUR_GATEWAY_KEY,常用于 Anthropic 客户端。两种鉴权头任选一种即可,不要填提供商账号令牌或面板登录令牌。": "Também é possível usar x-api-key: YOUR_GATEWAY_KEY, comum em clientes Anthropic. Escolha um dos dois cabeçalhos; não use tokens de conta do provedor nem tokens de login do painel.", "仅可省略或设为 stream=false、partial_images=0。当前不支持图片事件流、渐进图片或流式部分结果。未知参数会被拒绝,不会静默忽略。": "Omita ou defina stream=false e partial_images=0. Eventos de imagem, imagens progressivas e resultados parciais em streaming não são suportados. Parâmetros desconhecidos são recusados, não ignorados.", "仅在上游返回修改后的提示词时保留,不保证每个模型都有。": "Preservado apenas quando o upstream retorna prompt revisado; nem todo modelo fornece.", "仅在显式指定 output_format=jpeg 时支持,网关按 JPEG 质量参数编码。PNG、WebP 当前不支持此参数。": "Somente com output_format=jpeg explícito; usa parâmetro de qualidade JPEG. PNG e WebP não suportam este campo atualmente.", "仅用于响应返回的网关临时链接;{id} 必须替换为实际下载令牌。": "Apenas para links temporários do gateway retornados na resposta; substitua {id} pelo token real de download.", "仍从当前网关目录选择对话模型,不要求模型名称一定以 claude 开头。具体能力以实际承载模型为准。": "Escolha um modelo de conversa no catálogo atual do gateway; o nome não precisa começar com claude. Capacidades dependem do modelo que realmente atende.", "估算输入 Token 数量": "Estimar tokens de entrada", "使用 supports_image_editing=true 的图片模型。该接口是参考图编辑、重绘或合成,不是精确遮罩修补;当前不支持 mask 与 input_fidelity,也不支持 file_id。": "Use modelo de imagem com supports_image_editing=true. Serve para editar, redesenhar ou compor referências, não preenchimento preciso por máscara. mask, input_fidelity e file_id não são suportados.", "使用与 Chat 相同的对话模型 id 和 Key 授权规则。": "Use os mesmos ids de modelos de conversa e regras de autorização da Key que no Chat.", "使用同一客户端生成与编辑,并将返回的 base64 保存为图片文件。": "Gere e edite com o mesmo cliente e salve o base64 retornado como arquivo de imagem.", "使用支持工具调用的模型。函数声明、调用结果配对与多模态请求示例见「看图与工具调用」章节。": "Use um modelo compatível com ferramentas. Consulte o capítulo Visão e chamadas de ferramentas para declarações de funções, correspondência de resultados e exemplos multimodais.", "使用支持工具调用的模型。函数声明、调用结果配对与多模态请求示例见下一节。": "Use um modelo compatível com ferramentas. A próxima seção traz declarações de funções, correspondência de resultados e exemplos multimodais.", "使用说明与兼容边界": "Notas de uso e compatibilidade", "健康检查": "Verificação de saúde", "先前网关返回的 /v1/images/files/{id} 完整链接可在未过期时作为 JSON 参考图。不要把 AI 助手内部的 assistant-image:ID 当成对外接口图片 URL。": "Uma URL /v1/images/files/{id} completa retornada pelo gateway pode ser referência JSON enquanto válida. Não use assistant-image:ID interno do assistente como URL da API pública.", "先确定网关地址、Key 和模型,再选择客户端支持的协议。": "Defina o endereço do gateway, a Key e o modelo antes de escolher um protocolo compatível com o cliente.", "兼容 Anthropic 消息块与 SSE 事件,支持本地 Token 预算估算。": "Compatível com blocos Anthropic e eventos SSE, com estimativa local de orçamento de tokens.", "兼容 Responses 请求与事件格式,适合 Codex 等客户端;不是服务端会话存储。": "Compatível com requisições e eventos Responses para clientes como Codex; não é armazenamento de conversa no servidor.", "内置 AI 助手已有 generate_images 与 edit_images 工具,可在助手设置中启用并按确认模式执行。外部 API 客户端不会自动获得这些工具;需要由客户端声明并实际调用图片接口。": "O assistente integrado tem generate_images e edit_images, habilitáveis nas configurações e executadas conforme o modo de confirmação. Clientes externos não recebem essas ferramentas automaticamente; devem declará-las e chamar os endpoints de imagem.", "函数工具使用 Responses 的声明格式;工具结果以 function_call_output 携带相同 call_id。实际工具能力仍依赖模型与提供商。": "Declare funções no formato Responses. Envie resultados como function_call_output com o mesmo call_id. Suporte real depende do modelo e provedor.", "函数工具声明包含 name、description、input_schema;结果在后续 user 消息的 tool_result 块中携带对应 tool_use_id。": "Funções declaram name, description e input_schema. Resultados usam blocos tool_result na mensagem user seguinte com o tool_use_id correspondente.", "分别可能表示请求中断或请求过大。参考图过大时需缩小图片或减少数量,原样重试不会解决;中断的图片任务可能已经消耗额度。": "Podem indicar interrupção e requisição excessiva, respectivamente. Reduza imagens de referência ou quantidade; repetir os mesmos dados não resolve. Um trabalho de imagem interrompido já pode ter consumido cota.", "分别控制输出上限与是否流式。stream 默认 false;true 返回 Responses 命名事件。": "Controlam limite de saída e streaming. stream é false por padrão; true retorna eventos Responses nomeados.", "分别表示工具调用与思考能力。是否生效仍取决于实际承载模型、提供商和相关设置。": "Indicam, respectivamente, suporte a ferramentas e raciocínio. O funcionamento também depende do modelo que atende, provedor e configurações.", "分别请求思考档位与结构化输出;能力和可用取值依赖模型。不要因字段被接受就假定上游已经执行。": "Solicitam esforço de raciocínio e saída estruturada, respectivamente. Capacidades e valores dependem do modelo; aceitar um campo não prova que o upstream o aplicou.", "协议兼容不保证工具、思考、结构化输出、透明背景或每个尺寸都被所有提供商支持。先查看当前模型能力和插件版本,再核对请求日志的承载提供商与错误摘要。": "Compatibilidade de protocolo não garante ferramentas, raciocínio, saída estruturada, transparência ou todos os tamanhos em todos os provedores. Confira capacidades e versão do plugin, depois o provedor e o resumo de erro nos logs.", "单图可用 image=@reference.png,多图重复提交 image[]。也兼容 images、images[] 与 image[0] 这类数字索引字段;普通参数不能重复提交。": "Uma imagem: image=@reference.png; várias: repita image[]. Também aceita images, images[] e índices como image[0]. Parâmetros comuns não podem ser repetidos.", "单轮可以是字符串;多轮使用消息与工具项数组,客户端应携带必要历史。文本块使用 input_text,图片块使用 input_image。": "Use string para um turno ou array de mensagens e ferramentas para vários turnos, incluindo o histórico necessário. Texto usa input_text; imagem usa input_image.", "参考图编辑": "Edição com imagens de referência", "参考图编辑;支持 multipart 文件上传或 JSON 图片引用。": "Edição com referências; aceita upload multipart ou referências de imagens em JSON.", "只支持这三种可解码图片格式,校验实际文件内容而不是仅看扩展名;单张最多 10 MiB,边长最多 8192。": "Apenas esses três formatos decodificáveis. Valida conteúdo real, não só extensão. Até 10 MiB por imagem e lados de até 8192 pixels.", "可用值为 auto、standard、hd、low、medium、high、xhigh、max。小浣熊与 Antigravity 仅接受省略、auto 或 standard;其他值是否有效取决于 Loomy 的具体模型。": "Valores aceitos: auto, standard, hd, low, medium, high, xhigh, max. Raccoon e Antigravity só aceitam omissão, auto ou standard; outros valores dependem do modelo Loomy.", "可省略,或使用 auto、WIDTHxHEIGHT,例如 1024x1024。网关校验边长 1–8192,提供商可能进一步限制宽高比与分辨率,不保证精确像素输出。": "Opcional, auto ou WIDTHxHEIGHT, como 1024x1024. Valida lados de 1–8192; provedores podem limitar proporção e resolução. Pixels exatos não são garantidos.", "可能是网关内部错误、上游异常、插件未接入、暂无可用账号、图片下载或编码失败。": "Possível erro interno do gateway, falha upstream, capacidade ausente no plugin, conta indisponível ou falha no download e na codificação da imagem.", "可能是网关内部错误、上游异常、插件未接入、暂无可用账号、图片下载或编码失败。公网模式的 api_key_not_configured 表示必须先配置网关 Key。": "Possível erro interno, falha upstream, capacidade ausente no plugin, conta indisponível ou falha no download/codificação. api_key_not_configured no modo público exige configurar primeiro uma Key do gateway.", "可能附带实际输出编码、用量或点数。usage 与 points_consumed 取决于上游,缺失不代表免费;若未要求固定编码,不要默认所有图片都是 PNG。": "Pode incluir codificação real, uso ou pontos. usage e points_consumed dependem do upstream; ausência não significa grátis. Sem formato pedido, não presuma que tudo seja PNG.", "可选的调用方用户标识,不是网关鉴权 Key,也不能用于指定账号或绕过 Key 的授权范围。是否传递与处理取决于提供商。": "Identificador opcional do usuário chamador, não uma Key de autenticação. Não seleciona contas nem contorna autorização. Encaminhamento e tratamento dependem do provedor.", "启用": "ativos", "图片响应与下载": "Respostas e downloads de imagens", "图片响应创建时间,Unix 秒。不要与错误限额恢复字段 reset_at 的毫秒单位混用。": "Horário de criação da resposta em segundos Unix. Não confunda com reset_at de erros, que usa milissegundos.", "图片生成与共用参数": "Geração de imagens e parâmetros comuns", "图片生成与编辑": "Geração e edição de imagens", "图片输入是理解图片,工具调用是由客户端执行动作;二者都需要模型能力支持。": "Entrada de imagem interpreta imagens; chamadas de ferramentas pedem ações executadas pelo cliente. Ambas exigem suporte do modelo.", "在线模型列表": "Lista online de modelos", "在线模型列表指自动拉取上游目录;仅有静态模型清单不算在线支持。": "Uma lista online permite obter automaticamente o catálogo upstream; uma lista apenas estática não conta como suporte online.", "地址速查与请求示例使用当前网关地址。从其他设备访问时,127.0.0.1 指向那台设备自身,必须换成实际可达的网关地址。": "A lista de endereços e os exemplos usam o gateway atual. Em outro dispositivo, 127.0.0.1 aponta para o próprio dispositivo; substitua pelo endereço que realmente alcança o gateway.", "填进客户端的「API 地址 / Base URL」": "Preencha no campo “Endereço da API / Base URL” do cliente", "声明函数工具的请求体": "Corpo da requisição declarando função", "复制地址": "Copiar endereço", "复制示例": "Copiar exemplo", "多图有顺序意义:在 prompt 中明确“第 1 张是主体,第 2 张是风格参考”等关系。编辑不保证逐像素保真,要求保留的主体、文字或布局应明确描述。": "A ordem importa. Explique em prompt, por exemplo, 'imagem 1 é o assunto; imagem 2 é referência de estilo'. A edição não garante preservação pixel a pixel; indique assunto, texto ou layout a manter.", "多数 OpenAI 兼容客户端的默认协议": "Protocolo padrão da maioria dos clientes compatíveis com OpenAI", "字段 / 状态": "Campo / status", "字段与限制": "Campos e limites", "安装并使用支持 Images 参数的 OpenAI Python SDK。先按接入章节设置 GATEWAY_KEY 与 IMAGE_MODEL_ID,编辑前确认该模型支持参考图,并准备本地 reference.png。": "Use uma versão do SDK OpenAI Python com suporte aos parâmetros Images. Configure GATEWAY_KEY e IMAGE_MODEL_ID conforme a seção de conexão. Verifique suporte a edição e prepare reference.png local.", "客户端自动拉取可用模型;不受鉴权限制,配 Key 之前就能拉": "O cliente busca automaticamente os modelos disponíveis; não exige autenticação e pode ser consultado antes de configurar uma Key", "对话协议": "Protocolos de conversa", "对话协议与上下文预算": "Protocolos de conversa e orçamento de contexto", "对话协议(按客户端支持的类型选一行)": "Protocolo de conversa (escolha uma linha conforme o tipo compatível com o cliente)", "对话模型看图请求": "Requisição de visão com modelo de conversa", "小浣熊与 Antigravity 不支持此字段,请在 prompt 中描述风格;Loomy 转交上游,由模型决定是否支持。": "Raccoon e Antigravity não suportam este campo; descreva o estilo em prompt. Loomy repassa ao upstream, cujo modelo decide o suporte.", "小浣熊与 Antigravity 仅接受省略、auto 或 opaque;不保证所有模型都能生成透明背景。文件转码不会自动抠图。": "Raccoon e Antigravity só aceitam omissão, auto ou opaque. Nem todo modelo gera fundo transparente; conversão de arquivo não remove fundo automaticamente.", "小浣熊与 Antigravity 仅接受省略或 auto。该字段不保证上游降低审核强度,内容政策拒绝不会自动重试。": "Raccoon e Antigravity só aceitam omissão ou auto. Não garante redução de moderação upstream; rejeições de política não são repetidas automaticamente.", "小浣熊使用 raccoon-image;Loomy 使用目录中的 kind=image 模型;Antigravity 使用目录中的 gemini-*-image 模型;ModelScope 使用已确认支持的 Qwen-Image、Z-Image 或 Qwen-Image-Edit 型号;WorkBuddy 使用目录中带 text-to-image 或 image-to-image 标签的模型,例如 hunyuan-image-alpha 与 hunyuan-image-alpha-edit。实际 model 值以当前 /v1/models 为准,不要直接复制官方 API 的默认模型名。": "Raccoon usa raccoon-image; Loomy usa os modelos kind=image do catálogo; Antigravity usa os modelos gemini-*-image do catálogo; ModelScope usa os modelos Qwen-Image, Z-Image ou Qwen-Image-Edit confirmados; WorkBuddy usa os modelos do catálogo com a tag text-to-image ou image-to-image, como hunyuan-image-alpha e hunyuan-image-alpha-edit. Use o valor real de model conforme o /v1/models atual; não copie nomes de modelo dos padrões da API do fornecedor.", "展开目录": "Expandir sumário", "工具服务 API": "API de serviços de ferramentas", "工具服务 API 文档": "Documentação da API de serviços de ferramentas", "工具服务 API 是网关对外的固定接口,路径以 /api/web-search 开头;不属于 /v1 对话协议,也不是管理面板的管理接口,鉴权同样使用网关 Key。": "A API de serviços de ferramentas é uma interface fixa exposta pelo gateway, com caminhos iniciados por /api/web-search. Não faz parte dos protocolos de conversa /v1 nem é uma API do painel de gerenciamento; a autenticação também usa uma chave do gateway.", "已实现,待实测": "Implementado; aguardando teste real", "已实现,待实测:仅表示代码已接入,尚未通过真实账号验证。": "Implementado; aguardando teste real: o código foi integrado, mas ainda não foi validado com uma conta real.", "建议显式填写图片模型 id。省略时从当前 Key 可用目录中选择支持本次操作的图片模型,不使用对话默认模型;没有对应能力模型时返回 503。": "Informe explicitamente um id de imagem. Se omitido, seleciona no catálogo autorizado um modelo compatível com a operação, não o padrão de conversa. Retorna 503 se não houver modelo capaz.", "待实测": "Aguardando teste real", "必填。使用 user / assistant 角色;content 可为字符串或 text、image、tool_use、tool_result 等内容块。": "Obrigatório. Use papéis user / assistant. content pode ser string ou blocos text, image, tool_use e tool_result.", "必填。包含 role 与 content;常见角色为 system、user、assistant,工具结果使用 tool。文本可直接使用字符串,多模态使用内容块数组。": "Obrigatório. Cada item contém role e content; papéis comuns são system, user e assistant, com tool para resultados. Texto pode ser string; conteúdo multimodal usa array de blocos.", "必填且不能为空,最多 32000 个字符。描述主体、构图、风格和修改目标;当前不支持 mask,编辑范围也应在提示词中说明。": "Obrigatório e não vazio, até 32000 caracteres. Descreva assunto, composição, estilo e mudanças. mask não é suportado; descreva também a região de edição no prompt.", "执行工具后回传结果的请求体": "Corpo da requisição com resultado executado", "找到 {count} 个章节": "{count} capítulos encontrados", "排错与限制": "Solução de problemas e limites", "接入与鉴权": "Conexão e autenticação", "接入指南": "Primeiros passos", "接入指南与接口参考": "Guias e referência da API", "接口参考目录": "Sumário da referência da API", "接口地址": "Endereço da API", "推荐使用 Authorization: Bearer YOUR_GATEWAY_KEY;Key 来自「网关 Key」页,并且必须处于启用状态。": "Use Authorization: Bearer YOUR_GATEWAY_KEY. Obtenha uma Key habilitada na página Chave do gateway.", "推荐显式指定当前目录中的对话模型 id。省略时尝试网关默认模型;默认选择也受该 Key 的授权范围限制。": "Recomenda-se escolher explicitamente o id de um modelo de conversa no catálogo atual. Se omitido, tenta o padrão do gateway, respeitando a autorização da Key.", "描述输入与输出模态,例如 text、image、video。字段缺失不表示自动支持其他文件、音频或服务端上传接口。": "Descrevem modalidades de entrada e saída, como text, image e video. Ausência de campos não implica suporte a outros arquivos, áudio ou endpoints de upload no servidor.", "提供商能力": "Capacidades dos provedores", "提供商能力适配表": "Matriz de capacidades dos provedores", "搜索文档": "Buscar na documentação", "搜索文档、参数或接口…": "Buscar documentos, parâmetros ou APIs…", "收起全部": "Recolher tudo", "收起目录": "Recolher sumário", "文本生成图片;JSON 请求,非流式返回 base64 或下载链接。": "Gere imagens por texto; envie JSON e receba base64 ou links de download sem streaming.", "文档内容": "Documentação", "文档目录": "Sumário da documentação", "无此概念": "Não se aplica", "映射为思考档位与结构化输出请求;支持范围以目标模型为准。": "Mapeiam para esforço de raciocínio e saída estruturada; valores suportados dependem do modelo de destino.", "未声明表示插件没有提供明确结论,不等于不支持。": "Não declarado significa que o plugin não forneceu uma conclusão definitiva; não significa ausência de suporte.", "未声明表示网关本体或插件没有提供明确结论,不等于不支持。": "Não declarado significa que o gateway ou plugin não forneceu uma conclusão definitiva; não significa ausência de suporte.", "本体订阅": "Assinaturas nativas", "本地上下文预算估算,返回 estimated=true;不是上游精确分词。": "Estimativa local do orçamento de contexto, com estimated=true; não é a tokenização exata do upstream.", "本机免鉴权模式没有启用 Key 时可调用;启用任意 Key 后,受保护接口都要携带有效 Key。公网安全模式没有配置 Key 时会拒绝受保护的 /v1 请求,并返回 503 api_key_not_configured。": "O modo local sem autenticação permite chamadas quando nenhuma Key está habilitada. Ao habilitar uma Key, endpoints protegidos exigem uma Key válida. No modo seguro de rede pública, sem Key configurada, requisições /v1 protegidas são recusadas com 503 api_key_not_configured.", "本页只说明实际提供的接口,不等于完整复刻 OpenAI / Anthropic 服务。未列出的 Files、Batch、图片 variations、服务端会话存储等端点不要假定可用。": "Esta página documenta endpoints implementados, não uma réplica completa da OpenAI / Anthropic. Não presuma endpoints Files, Batch, variations de imagem ou armazenamento de conversa que não estejam listados.", "本页说明对外的 /v1 接口,不是管理面板的 /api 接口。三种对话协议共用模型目录、模型映射、账号池和网关 Key,但请求与响应格式不同。": "Esta página descreve os endpoints públicos /v1, não os endpoints /api do painel. Os três protocolos de conversa compartilham catálogo, mapeamentos, pool de contas e Keys do gateway, mas os formatos de requisição e resposta são diferentes.", "查看当前网关的客户端地址和各接口路径,一键复制后即可使用。": "Consulte os endereços para clientes e os caminhos dos endpoints do gateway atual, prontos para copiar e usar.", "根据文字提示生成图片。请求使用 JSON,生成与编辑均只支持非流式响应。": "Gere imagens por instrução textual. JSON na requisição; geração e edição só têm respostas sem streaming.", "检查网关是否可访问": "Verificar acesso ao gateway", "模型不存在、已关闭或不在 Key 授权范围,常附 model_not_found;也可能是路径错误,或临时图片下载链接已过期。": "Modelo inexistente, desabilitado ou fora da autorização, geralmente com model_not_found. Também pode ser caminho incorreto ou URL de imagem temporária expirada.", "模型列表": "Lista de modelos", "模型发现与健康检查": "Descoberta de modelos e saúde", "模型清单": "Catálogo de modelos", "模型清单与健康检查": "Lista de modelos e verificação de saúde", "模型清单反映当前账号、模型启停与映射配置。不带 Key 时可读取公开清单;携带 Key 时必须有效,返回内容按该 Key 的授权范围过滤,无效 Key 返回 401。": "A lista de modelos reflete as contas, a ativação dos modelos e os mapeamentos atuais. Sem Key, a lista pública pode ser lida. Uma Key enviada deve ser válida, e a lista é filtrada por sua autorização; Keys inválidas retornam 401.", "模型清单反映当前账号、模型启停与映射配置;携带有效网关 Key 时进一步按该 Key 的授权范围过滤。不带 Key 或 Key 无效时仍可读取未按该 Key 收窄的清单。": "A lista reflete contas atuais, ativação de modelos e mapeamentos. Uma Key válida filtra ainda mais pela sua autorização. Sem Key ou com uma Key inválida, a lista não é limitada por essa Key.", "模型清单结构示例": "Exemplo da estrutura da lista de modelos", "模型调用始终需要启用且可用的网关 API Key,即使只在本机使用也不能免鉴权。管理员登录会话只用于管理面板,不能代替模型调用的 Key。": "Chamadas de modelo sempre exigem uma API Key do gateway habilitada e utilizável, mesmo no uso local. Sessões de administrador só autorizam o gerenciamento do painel e não substituem a Key nas chamadas de modelo.", "每把 Key 的可用模型、可用提供商限制同样适用于生图和编辑图。模型名称使用 /v1/models 中的 id 或已配置的映射名,不要直接使用展示名称。": "As restrições de modelos e provedores por Key também valem para geração e edição. Use o id de /v1/models ou um nome de mapeamento configurado, não o nome de exibição.", "没有找到匹配的文档": "Nenhum documento encontrado", "流式以 message_start 开始,经 content_block_start / content_block_delta / content_block_stop,最终 message_delta 与 message_stop 收尾;不要按 Chat 的 [DONE] 规则解析。": "Começa com message_start, passa por content_block_start / content_block_delta / content_block_stop e termina em message_delta e message_stop. Não use a convenção [DONE] do Chat.", "流式包含 response.created、response.output_text.delta 和最终 response.completed 等事件;错误可能以 response.failed 结束。输出预算不足时检查 incomplete 状态与 incomplete_details。": "O fluxo inclui response.created, response.output_text.delta e response.completed final. Erros podem terminar em response.failed. Verifique incomplete e incomplete_details quando faltar orçamento de saída.", "流式对话请求": "Requisição de conversa com streaming", "流式开始后 HTTP 状态码无法再改;即使已经收到 200,也要检查流内错误、结束原因及是否正常收尾,不能把断流视为成功。": "O status HTTP não muda após iniciar o streaming. Mesmo com 200, verifique erros no fluxo, motivos de término e encerramento normal; uma desconexão não é sucesso.", "流式用量可请求 include_usage=true;最终是否返回用量取决于上游,不应假设每个增量都有 usage。": "Solicite include_usage=true para uso no streaming. A presença do uso final depende do upstream; não espere usage em cada delta.", "清除搜索": "Limpar busca", "点击章节展开参数、示例和兼容边界;示例只供复制,不会在本页发起模型请求或消耗额度。": "Abra uma seção para ver parâmetros, exemplos e compatibilidade. Os exemplos servem só para copiar; esta página não chama modelos nem consome cota.", "生图可能消耗账号额度。先使用 n=1 和较小尺寸确认能力,内容政策拒绝或结果不确定时不要自动重复提交。": "Gerar imagens pode consumir cota. Comece com n=1 e tamanho menor. Não reenvie automaticamente após rejeição de política ou resultado incerto.", "生成、编辑与对话接口共用网关 Key;完整鉴权规则、模型能力和请求示例见下方章节。": "Geração, edição e conversa compartilham as Keys do gateway. Veja abaixo as regras de autenticação, capacidades dos modelos e exemplos de requisição.", "生成、编辑与对话接口共用网关 Key;鉴权规则、模型能力和请求示例可从文档目录查阅。": "Geração, edição e conversa compartilham as Keys do gateway. Consulte as regras de autenticação, capacidades dos modelos e exemplos no sumário da documentação.", "生成与编辑返回同一结构;base64 适合直接保存,URL 适合短期获取。": "Geração e edição retornam a mesma estrutura. Base64 é ideal para salvar; URL para obtenção temporária.", "用于请求思考配置或档位,由网关映射到目标模型;不保证所有 Anthropic 原生特性在跨协议转发时完全等价。": "Solicitam configuração ou esforço de raciocínio, mapeados ao modelo. Nem todas as funções nativas Anthropic são garantidas equivalentes na conversão entre protocolos.", "的 Key:请求带 ": " da página “Chave do gateway”; as requisições enviam ", "目前小浣熊、Loomy、Antigravity、ModelScope、WorkBuddy 已接入图片生成;Loomy、Antigravity、ModelScope 与 WorkBuddy 同时接入参考图编辑,小浣熊暂不支持编辑。需要当前提供商插件包含对应能力,并且账号、模型和 Key 授权可用。": "No momento, Raccoon, Loomy, Antigravity, ModelScope e WorkBuddy oferecem geração de imagens; Loomy, Antigravity, ModelScope e WorkBuddy também editam imagens de referência, enquanto Raccoon não edita. O plugin do provedor precisa incluir o recurso, e a conta, o modelo e a autorização da chave do gateway devem estar disponíveis.", "目录声明的上下文与最大输出预算,可能省略。预算和余额不是同一概念,也不能替代上游的实际限制。": "Orçamentos de contexto e saída máxima declarados pelo catálogo; podem ser omitidos. Orçamento de tokens não é saldo da conta e não substitui limites reais do upstream.", "看图与工具调用": "Visão e chamadas de ferramentas", "看图请求使用对话模型,并确认 supports_images=true。Chat 使用 text 与 image_url 内容块,图片值可为上游支持的 HTTP(S) URL 或 data URL;可用格式与大小取决于目标模型。「参考图编辑」章节的上传限制不应直接套用到所有对话模型。": "Para visão, use um modelo de conversa com supports_images=true. Chat usa blocos text e image_url com URLs HTTP(S) ou data URLs aceitas pelo upstream. Formatos e tamanhos dependem do modelo. Os limites de upload do capítulo Edição com imagens de referência não se aplicam automaticamente a todos os modelos de conversa.", "看图请求使用对话模型,并确认 supports_images=true。Chat 使用 text 与 image_url 内容块,图片值可为上游支持的 HTTP(S) URL 或 data URL;可用格式与大小取决于目标模型。下方编辑图的上传限制不应直接套用到所有对话模型。": "Para visão, use um modelo de conversa com supports_images=true. Chat usa blocos text e image_url com HTTP(S) ou data URLs aceitas pelo upstream. Formatos e tamanhos dependem do modelo; os limites de upload de edição abaixo não se aplicam automaticamente a todos os modelos de conversa.", "示例仅供复制,不会在本页发起请求或消耗额度。": "Os exemplos servem apenas para copiar. Esta página não envia requisições nem consome cota.", "示例显式设置 max_retries=0,避免 SDK 对超时或 5xx 自动重新提交收费任务;timeout=300.0 仅是客户端等待示例,不会改变网关或上游的超时配置。": "O exemplo define max_retries=0 para evitar reenvio automático de trabalhos cobrados após timeout ou 5xx. timeout=300.0 é apenas um exemplo de espera do cliente e não muda os limites do gateway ou upstream.", "章节导航": "Navegação entre capítulos", "类型 / 范围": "Tipo / intervalo", "系统说明是顶层字段,不要放进 messages 的 system 角色;支持文本或 text 块数组。": "Instruções de sistema neste campo superior, não em um papel system dentro de messages. Aceita texto ou array de blocos text.", "系统说明,对应 Chat 的 system 消息;需要时每次请求重新携带。": "Instruções de sistema equivalentes à mensagem system do Chat; inclua novamente a cada requisição quando necessário.", "结合 HTTP 状态、错误内容与请求日志判断问题;不要盲目重试收费请求。": "Diagnostique pelo status HTTP, erro e logs de requisição; não repita cegamente chamadas cobradas.", "编辑请求上传总大小最多 16 MiB。参考图转为 data URL 后,内联图片与最终 JSON 请求还受 14 MiB 上限;base64 约增加三分之一体积,因此多张各小于 10 MiB 也可能超限。": "Uploads de edição: até 16 MiB no total. Após converter para data URLs, imagens embutidas e JSON final também têm limite de 14 MiB. Base64 aumenta cerca de um terço; várias imagens menores que 10 MiB cada ainda podem exceder o total.", "网关临时 URL 响应结构": "Estrutura da resposta com URL temporária", "网关临时下载不要求 Authorization,链接中的随机令牌就是访问凭据,任何拿到链接的人都能下载。请将链接视为敏感信息,重要结果及时保存,不要当作长期文件存储。": "Download temporário não exige Authorization. O token aleatório da URL é a credencial; qualquer pessoa com o link pode baixar. Trate como sensível, salve resultados importantes logo e não use como armazenamento permanente.", "网关临时图片仅保存在内存,生成后 1 小时过期,网关重启后立即失效。缓存总容量 128 MiB;缓存满时会返回错误并建议改用 b64_json。上游签名链接的有效期由提供商决定。": "Imagens temporárias ficam na memória por 1 hora e somem ao reiniciar o gateway. Cache total: 128 MiB; se cheio, retorna erro sugerindo b64_json. O provedor define validade das URLs assinadas upstream.", "网关内置的安全重试与客户端 SDK 的重试是两层独立行为。图片客户端建议关闭自动重试;即使网关已停止重试,SDK 仍可能重新提交整条请求。": "Tentativas seguras do gateway e tentativas do SDK são independentes. Desative repetições automáticas para imagens; mesmo depois de o gateway parar, o SDK pode reenviar tudo.", "网关可将实际图片转换为指定文件编码。省略时保留上游图片格式;需要固定扩展名时建议显式填写。JPEG 无法保留透明通道。": "O gateway converte a imagem para a codificação pedida. Se omitido, preserva o formato upstream. Especifique para extensão fixa; JPEG não preserva transparência.", "网关始终无状态,响应中的 store=false。即使请求 store=true,也不会保存可供后续检索的 Responses 对象。": "O gateway sempre é sem estado e retorna store=false. Enviar store=true não salva objetos Responses para consultas posteriores.", "网关接受 1–10,默认 1;Antigravity 与 ModelScope 仅支持 n=1。上游返回数量不足时网关报错,不会为了凑数再次调用图片生成。": "O gateway aceita 1–10, padrão 1; Antigravity e ModelScope aceitam apenas n=1. Se faltarem imagens na resposta, retorna erro sem gerar novamente para completar a quantidade.", "网关接受 1–10,默认 1;Antigravity 仅支持 n=1。上游返回数量不足时网关报错,不会为了凑数再次调用图片生成。": "O gateway aceita 1–10, padrão 1; Antigravity aceita apenas n=1. Se o upstream devolver menos imagens, retorna erro e não gera novamente para completar.", "网关最多接受 16 张参考图。Antigravity 的 gemini-2.5-* 模型最多 3 张,其他当前接入的 Antigravity 图片模型最多 14 张;Loomy 还可能受上游模型限制。": "Até 16 referências no gateway. Antigravity gemini-2.5-* aceita até 3; outros modelos Antigravity integrados aceitam até 14. Loomy pode impor limites adicionais por modelo.", "网关最多接受 16 张参考图。Antigravity 的 gemini-2.5-* 模型最多 3 张,其他当前接入的 Antigravity 图片模型最多 14 张;ModelScope 接受 1–3 张参考图;Loomy 还可能受上游模型限制。": "O gateway aceita até 16 referências. Antigravity gemini-2.5-* aceita até 3; outros modelos de imagem integrados aceitam até 14. ModelScope aceita 1–3; Loomy pode ter limites adicionais do modelo.", "网关需要下载或转换输出时,单张图片最多 32 MiB、边长最多 8192,并使用有界解码。请求 output_format 会按实际图片转码,而不是只修改文件扩展名。": "Ao baixar ou converter saída, cada imagem fica limitada a 32 MiB e lados de 8192 pixels, com decodificação limitada. output_format converte a imagem real, não só a extensão.", "网络搜索与网页抓取的 REST 接口,使用网关 Key 鉴权;不属于 /v1 对话协议。": "Interfaces REST para busca na web e obtenção de páginas, autenticadas com uma chave do gateway; não fazem parte dos protocolos de conversa /v1.", "能力由当前插件版本申报,表示适配支持情况,不代表账号额度或当前可用性。": "As capacidades são declaradas pela versão instalada do plugin. Indicam o suporte da integração, não a cota da conta ou a disponibilidade atual.", "能力由当前网关本体或插件版本申报,表示适配支持情况,不代表账号额度或当前可用性。": "As capacidades são declaradas pela versão atual do gateway ou plugin. Indicam o suporte da integração, não a cota da conta nem a disponibilidade atual.", "自定义函数工具通过 tools 声明。模型返回 tool_calls 后,客户端校验参数、执行函数,再把 assistant 工具调用和 role=tool 结果一起放入下一次 messages;tool_call_id 必须对应,不能遗漏并行调用的结果。": "Declare funções em tools. Quando o modelo devolver tool_calls, o cliente valida argumentos, executa funções e envia as chamadas assistant e os resultados role=tool na próxima lista messages. Faça tool_call_id corresponder e inclua resultados de todas as chamadas paralelas.", "表示当前目录与插件声明支持参考图编辑。编辑前检查此字段,不要仅凭模型名称包含 image 判断。": "Indica edição com referências declarada pelo catálogo e plugin atuais. Verifique antes de editar; conter image no nome do modelo não basta.", "表示支持图片输入,不等于支持生成图片。对话模型可用于看图;编辑模型也可能声明此字段。": "Indica suporte a entrada de imagem, não geração. Modelos de conversa podem interpretar imagens; modelos de edição também podem declarar esse campo.", "表示目录条目属于生图模型。调用还需要当前插件已接入生成能力,且存在获准使用的可用账号。": "Identifica uma entrada de modelo gerador de imagens. A chamada ainda exige suporte no plugin instalado e uma conta disponível e autorizada.", "试试接口路径、参数名或其他关键词。": "Tente o caminho de um endpoint, o nome de um parâmetro ou outra palavra-chave.", "详细接口参考": "Referência detalhada da API", "请求与响应示例": "Exemplos de requisição e resposta", "请求参数、模型能力或协议形态不支持。图片相关 code 可能为 invalid_image_input、image_generation_not_supported 或 image_editing_not_supported;修改请求后再发。": "Parâmetros, capacidade do modelo ou formato sem suporte. Códigos de imagem podem ser invalid_image_input, image_generation_not_supported ou image_editing_not_supported. Corrija antes de reenviar.", "请求示例适用于 Bash / Git Bash。YOUR_GATEWAY_KEY、CHAT_MODEL_ID、IMAGE_MODEL_ID 和图片占位地址都需要替换;返回示例仅展示结构,能力位、Token 数量和时间戳不是当前网关的实测值。": "Os exemplos usam sintaxe Bash / Git Bash. Substitua YOUR_GATEWAY_KEY, CHAT_MODEL_ID, IMAGE_MODEL_ID e os endereços de imagem fictícios. As respostas ilustram apenas a estrutura; capacidades, tokens e horários não são medições do gateway atual.", "读取提供商能力表失败:{error}": "Falha ao carregar as capacidades dos provedores: {error}", "读取插件能力表失败:{error}": "Falha ao carregar as capacidades do plugin: {error}", "读取获准使用的模型": "Consultar modelos autorizados", "输出 Token 上限,具体支持字段和预算以模型为准。不要同时设置冲突的上限;达到上限时 finish_reason 可能为 length。": "Máximo de tokens de saída; campos e orçamento dependem do modelo. Evite limites conflitantes. finish_reason pode ser length ao atingir o limite.", "通用对话入口,适合大多数 OpenAI 兼容客户端。": "Endpoint de conversa geral para a maioria dos clientes compatíveis com OpenAI.", "通用错误结构示例": "Exemplo de erro genérico", "通过能力字段选择正确模型;健康检查只说明网关可访问。": "Selecione o modelo pelos campos de capacidade; a verificação de saúde confirma apenas acesso ao gateway.", "遇到“图片请求可能已消耗额度,未自动重试”或“上游已生成”等提示,先核对请求日志与上游结果。客户端超时、断线或取消不代表上游撤销任务;自动重发可能再次扣费。": "Se houver aviso de possível consumo de cota sem nova tentativa, ou de imagem já gerada no upstream, verifique logs e resultados upstream primeiro. Timeout, desconexão ou cancelamento do cliente não implica cancelamento upstream; reenviar pode cobrar novamente.", "采样参数,是否支持和有效范围由提供商与模型决定。协议兼容不代表每家上游都支持全部调参项。": "Parâmetros de amostragem; suporte e intervalos dependem do provedor e modelo. Compatibilidade de protocolo não implica suporte a todo ajuste.", "鉴权用「网关 Key」页里任一": "Para autenticação, use qualquer Key ", "错误、限额与兼容边界": "Erros, limites e compatibilidade", "限流、额度不足或当前无可用账号窗口。能确定恢复时间时可能返回 Retry-After(秒)、reset_at(Unix 毫秒)与 reset_at_text;这些字段不是每次都有。": "Limite de requisições, cota insuficiente ou nenhuma janela de conta disponível. Quando a recuperação é conhecida, pode retornar Retry-After (segundos), reset_at (Unix milissegundos) e reset_at_text; não estão sempre presentes.", "非流式响应读取 choices[].message;流式响应读取 choices[].delta。每次请求由客户端携带 messages 历史,网关不会根据上一条响应 id 自动恢复对话。": "Leia choices[].message sem streaming e choices[].delta no fluxo. Envie o histórico messages a cada requisição; o gateway não restaura a conversa pelo id da resposta anterior.", "非流式对话响应": "Resposta de conversa sem streaming", "非流式对话请求": "Requisição de conversa sem streaming", "非流式返回 object=response、status、output 数组与 output_text。output 也可能包含 reasoning 或 function_call,不能只读取数组第一项。": "Sem streaming, retorna object=response, status, array output e output_text. output também pode conter reasoning ou function_call; não leia apenas o primeiro item.", "非流式返回 type=message、content 块数组、stop_reason 与 usage。content 可能同时包含文本、思考与工具调用,应该按 type 遍历。": "Sem streaming, retorna type=message, blocos content, stop_reason e usage. Percorra por type, pois pode combinar texto, raciocínio e ferramentas.", "领取类": "Resgate de recompensas", "默认 b64_json,返回可直接解码的图片 base64;url 返回上游签名链接或网关临时下载链接。不是图片文件编码。": "Padrão b64_json retorna base64 decodificável; url retorna link assinado upstream ou temporário do gateway. Não é a codificação do arquivo de imagem.", "默认 false,返回完整 JSON;true 返回 text/event-stream。curl 查看流式输出时添加 -N,客户端应按完整 SSE 事件解析而不是按网络分块解析。": "Padrão false retorna JSON completo; true retorna text/event-stream. Use -N no curl e interprete eventos SSE completos, não suponha que blocos de rede sejam limites de eventos.", "24 小时总用量": "Uso total em 24 h", "24 小时整体命中率": "Taxa geral de acerto em 24 h", "24 小时请求数": "Requisições em 24 h", "30 天": "30 dias", "7 天": "7 dias", "API Key 分布": "Distribuição por API Key", "Token": "Token", "Top 提供商": "Top provedores", "Top 模型": "Top modelos", "Top 账号": "Top contas", "{date} · {tokens} tokens · {n} 次请求": "{date} · {tokens} tokens · {n} requisições", "{date} · 无请求": "{date} · sem requisições", "{model}:{tokens} tokens": "{model}: {tokens} tokens", "{m}月": "mês {m}", "{m}月{d}日 周{wd}": "{d}/{m} ({wd})", "{name} · {tokens} tokens · {n} 次请求 · {pct}": "{name} · {tokens} tokens · {n} requisições · {pct}", "{name}:{tokens} tokens · 占 {pct}%": "{name}: {tokens} tokens · {pct}% do total", "{n} 家提供商": "{n} provedores", "{n} 次请求": "{n} requisições", "{n} 项": "{n} itens", "{n} 项低于 {threshold}%,已合并为“其他”": "{n} itens abaixo de {threshold}% agrupados em Outros", "{title}显示数量": "Quantidade exibida em {title}", "{tokens} tokens · 占 {pct}": "{tokens} tokens · {pct} do total", "…还有 {n} 个模型": "…e mais {n} modelos", "…还有 {n} 项": "…e mais {n} itens", "一": "S", "三": "Q", "二": "T", "五": "S", "仅在饼图合并,右侧列表完整保留每个项目": "Agrupado apenas no gráfico; a lista mantém todos os itens", "仅调整两个饼图,右侧列表始终完整显示": "Apenas os dois gráficos mudam; as listas sempre mostram todos os itens", "仅调整这两张图的展示,所有用量仍计入总 Token,占比保持不变": "Altera apenas estes dois gráficos. Todo o uso continua no total de tokens, e as proporções não mudam.", "今天": "Hoje", "全部用量": "Todo o uso", "六": "S", "其他 {pct} · {n} 项,仅在饼图合并": "Outros {pct} · {n} itens, agrupados apenas no gráfico", "其他({n} 项)": "Outros ({n} itens)", "其余 {n} 项": "{n} itens restantes", "前 {n} 名": "Top {n}", "前 {n} 名占全部用量 {pct}": "Top {n} representam {pct} do uso total", "区间共 {n} 天": "{n} dias no período", "占比低于": "Agrupar proporções abaixo de", "占输入 Token 的 {rate}": "{rate} dos tokens de entrada", "历史明细不完整": "Detalhes históricos incompletos", "另 {n} 项": "Mais {n} itens", "右轴": "Eixo direito", "合并只作用于饼图。低于阈值的扇区归入“其他”,右侧列表完整保留每个项目,总量和占比不变。": "O agrupamento afeta apenas os gráficos de rosca. Fatias abaixo do limite ficam em Outros; a lista mantém todos os itens, com totais e proporções inalterados.", "合并小项": "Agrupar itens pequenos", "合计": "Total", "含今天在内往前数": "Contando para trás, incluindo hoje", "命中 {hit} / 输入 {input}": "Acertos {hit} / entrada {input}", "命中率": "Acertos", "命中率 = 缓存读取 Token / 输入 Token(promptTokens)。窗口越短越贴近「此刻」:上游把缓存读取与输入分开上报时,该比值合法地可能超过 100%,此处不夹取值、如实展示。": "Taxa de acerto = Token lidos do cache / Token de entrada (promptTokens). Quanto menor a janela, mais próximo de “agora”: quando o upstream reporta leituras de cache e entrada separadamente, essa razão pode legalmente passar de 100%; aqui o valor não é limitado e é exibido como está.", "命中率 {rate}(命中 {hit} / 输入 {input})": "Taxa de acerto {rate} ({hit} acertos / {input} de entrada)", "四": "Q", "图表显示": "Exibição dos gráficos", "图表类型": "Tipo de gráfico", "在右侧展开“其他”查看明细": "Expanda Outros na legenda para ver os detalhes", "天有调用": "dias ativos", "小项合并阈值": "Limite para agrupar itens pequenos", "展开其他明细": "Expandir detalhes de Outros", "左轴": "Eixo esquerdo", "开启“合并小项”后,低于阈值的项目合并为灰色“其他”,可在右侧展开明细。合并只影响展示,总 Token 和占比不变。": "Ao ativar Agrupar itens pequenos, os itens abaixo do limite são reunidos em uma fatia cinza chamada Outros. Expanda Outros na legenda para ver os detalhes. Apenas a exibição muda; o total de tokens e as proporções permanecem iguais.", "开始日期": "Data inicial", "当前连续天数": "Sequência atual", "总 Token": "Total de Tokens", "总 Token:{tokens}": "Token total: {tokens}", "总 Token:{tokens}({n} 次请求)": "Token total: {tokens} ({n} solicitações)", "总请求数": "Total de requisições", "总量不变": "Total inalterado", "悬停查看完整读数与分项": "Passe o mouse para ver os valores completos e a distribuição", "成功率 {rate}": "Taxa de sucesso {rate}", "成功率 {rate} · 失败 {n} 次": "Taxa de sucesso {rate} · {n} falhas", "成功请求数": "Requisições bem-sucedidas", "所选范围内暂无请求": "Sem requisições no período selecionado", "所选范围内每个提供商各消耗了多少 Token,按 Token 用量从多到少排。同一个模型名可能有多家都能提供,网关按设置页「转发路由」的优先级依次尝试,所以占比也反映了实际落到谁身上。百分比按本区间的总 Token 数算(这一块只看用量,请求次数与成功率在概览卡片里)。「未知」是指那批请求没记下承载它的提供商 —— 主要是记录提供商这个功能上线之前的旧明细,其次是请求在选定上游之前就失败了(请求体非法、模型不存在、没有可用账号)。这一维与账号那一维不同:旧明细里根本没有「哪家承载」的信息(早期版本只有单一上游,但那是配置事实而非逐条记录),所以无法回算,旧数据会一直留在「未知」里;此后新产生的请求都会记上具体的提供商。": "Quanto cada provedor consumiu de Token no período selecionado, ordenado do maior para o menor uso de Token. Como um mesmo nome de modelo pode ser oferecido por vários provedores, o gateway tenta na ordem de prioridade definida em “Roteamento de encaminhamento” na página de configurações, então a proporção também reflete para quem as requisições realmente foram. A porcentagem é calculada sobre o total de Tokens do período (este bloco considera apenas o uso; contagem de requisições e taxa de sucesso ficam nos cartões de visão geral). “Desconhecido” refere-se às requisições que não registraram o provedor que as atendeu — principalmente detalhes antigos, anteriores ao lançamento do recurso de registro de provedor, e também requisições que falharam antes de escolher o upstream (corpo da requisição inválido, modelo inexistente, nenhuma conta disponível). Esta dimensão difere da dimensão de conta: os detalhes antigos simplesmente não têm a informação de “quem atendeu” (versões iniciais tinham apenas um upstream, mas isso era um fato da configuração, não um registro por requisição), por isso não é possível recalculá-los, e os dados antigos permanecerão em “Desconhecido”; daqui em diante, toda requisição nova registra o provedor específico.", "所选范围内每个提供商各消耗了多少 Token,按用量从多到少排,扇区角度即占比。同一个模型名可能有多家都能提供,网关按设置页「转发路由」的优先级依次尝试,所以占比也反映了实际落到谁身上。中心是这一维的合计(等于概览里的总 Token),右侧每行给出该提供商的 Token 用量与百分比。「未知」是指那批请求没记下承载它的提供商 —— 主要是记录提供商这个功能上线之前的旧明细,其次是请求在选定上游之前就失败了。": "Quanto cada provedor consumiu de Token no período selecionado, ordenado do maior para o menor uso, com o ângulo do setor representando a proporção. Como um mesmo nome de modelo pode ser oferecido por vários provedores, o gateway tenta na ordem de prioridade definida em “Roteamento de encaminhamento” na página de configurações, então a proporção também reflete para quem as requisições realmente foram. O centro é o total desta dimensão (igual ao total de Tokens da visão geral) e, à direita, cada linha mostra o uso de Token e a porcentagem daquele provedor. “Desconhecido” refere-se às requisições que não registraram o provedor que as atendeu — principalmente detalhes antigos, anteriores ao lançamento do recurso de registro de provedor, e também requisições que falharam antes de escolher o upstream.", "所选范围内每个模型各消耗了多少 Token,按用量从多到少排,扇区角度即占比。中心是这一维的合计(等于概览里的总 Token),右侧每行给出该模型的 Token 用量与百分比。扇区内的百分比只在 ≥3% 时标出,更小的会挤成一团 —— 完整读数在右侧列表与悬停气泡里。颜色按用量排名分配:最大的那段是红色,依次往后;同一份报表里换个维度看,配色口径不变。": "Quanto cada modelo consumiu de Token no período selecionado, ordenado do maior para o menor uso, com o ângulo do setor representando a proporção. O centro é o total desta dimensão (igual ao total de Tokens da visão geral) e, à direita, cada linha mostra o uso de Token e a porcentagem daquele modelo. As porcentagens dentro dos setores só aparecem quando são ≥3%; as menores ficariam amontoadas — a leitura completa está na lista à direita e no tooltip. As cores são atribuídas pela posição no ranking de uso: o maior setor é vermelho e assim por diante; ao trocar de dimensão no mesmo relatório, o critério de cores não muda.", "所选范围内每个账号各消耗了多少 Token,按 Token 用量从多到少排。账号是比提供商更细的一维:同一家可以挂多个账号,转发时按优先级在候选链上依次尝试,所以这里反映的是「具体哪个登录态在出力」。百分比按本区间的总 Token 数算(这一块只看用量,请求次数与成功率在概览卡片里)。「未知账号」是指那批请求没有账号身份:走默认登录态转发(未配置账号列表)时会这样;这一维上线前写出的旧聚合行也没有账号明细,但它们会在升级导入旧数据时按明细自动补算回来 —— 只有明细已被手动清理掉的那几天补不回来,仍留在「未知账号」里,那是确实无从恢复的部分。": "Quanto cada conta consumiu de Token no período selecionado, ordenado do maior para o menor uso de Token. A conta é uma dimensão mais granular que o provedor: um mesmo provedor pode ter várias contas, e o encaminhamento tenta cada uma na cadeia de candidatas por ordem de prioridade, então aqui aparece “qual sessão de login está de fato trabalhando”. A porcentagem é calculada sobre o total de Tokens do período (este bloco considera apenas o uso; contagem de requisições e taxa de sucesso ficam nos cartões de visão geral). “Conta desconhecida” refere-se às requisições sem identidade de conta: isso acontece ao encaminhar pela sessão de login padrão (quando a lista de contas não está configurada); as linhas agregadas antigas, geradas antes do lançamento desta dimensão, também não têm detalhes de conta, mas são recalculadas automaticamente a partir dos detalhes quando os dados antigos são importados na atualização — só os dias cujos detalhes já foram limpos manualmente não podem ser recuperados e permanecem em “Conta desconhecida”, pois realmente não há como restaurá-los.", "所选范围内还没有提供商用量": "Ainda não há uso por provedor no período selecionado", "所选范围内还没有模型用量": "Ainda não há uso por modelo no período selecionado", "所选范围内还没有请求记录": "Ainda não há registros de requisições no período selecionado", "所选范围内还没有账号用量": "Ainda não há uso por conta no período selecionado", "折线": "Linha", "报表时间范围": "Período do relatório", "按 Token 用量从多到少排列,扇区角度表示占比。占比不低于 3% 的扇区显示百分比,所有项目的完整读数保留在右侧列表与悬停提示中。": "Ordenado por uso de tokens, com o ângulo de cada fatia indicando sua proporção. Fatias de pelo menos 3% mostram a porcentagem; os valores completos de todos os itens continuam na lista e nos detalhes ao passar o mouse.", "按 Token 统计": "Por tokens", "按天 Token 趋势": "Tendência diária de Token", "按日统计": "Agrupado por dia", "按本地整点统计": "Agrupado por hora local", "按本地整点,无请求的整点不标注": "Por hora local exata; horas sem requisições não são rotuladas", "按每条请求的软件标识和识别规则统计,不依赖 API Key,也不代表设备或用户数。待确认的软件统一计入“其它”;规则修改不重新归类历史请求。": "As estatísticas usam identificadores e regras por requisição, sem depender de API Key nem contar dispositivos ou usuários. Softwares não confirmados ficam em Outros; alterações nas regras não reclassificam requisições históricas.", "提供商用": "Uso por provedor", "提供商用占比": "Proporção de uso por provedor", "提供商用量": "Uso por provedor", "提供商用量占比": "Proporção de uso por provedor", "提供商:{text}": "Provedor: {text}", "收起其他明细": "Recolher detalhes de Outros", "方格为本地自然日,无请求显示为空槽": "Cada célula é um dia local; sem requisições, ela aparece vazia", "无请求的整点按 0% 计,但不写读数": "Horas sem requisições contam como 0%, mas sem exibir o valor", "日": "D", "日均": "Média diária", "日均 {value}": "Média diária {value}", "时间范围。「今天」是本地自然日今天 0 点到现在;「昨天」是昨天一整天(0 点到 24 点);「近 7 天 / 近 30 天」含今天在内往前数,即今天与之前的 6 / 29 天,不是「不含今天的 7 / 30 天」。": "Período. \"Hoje\" é o dia local de 00:00 até agora; \"Ontem\" é o dia de ontem inteiro (00:00–24:00); \"Últimos 7 dias\" / \"Últimos 30 dias\" contam para trás incluindo hoje, ou seja, hoje mais os 6 / 29 dias anteriores — não 7 / 30 dias excluindo hoje.", "昨天": "Ontem", "暂无热力图数据": "Ainda não há dados do mapa de calor", "暂无缓存趋势数据": "Ainda não há dados de tendência de cache", "暂无趋势数据": "Ainda não há dados de tendência", "最近整点命中率": "Taxa de acerto da última hora", "最近请求": "Requisições recentes", "未知模型": "Modelo desconhecido", "本月": "Este mês", "查看用量、调用来源与缓存表现": "Veja o uso, as origens das requisições e o desempenho do cache", "柱状": "Barras", "模型与提供商共用此设置": "Configuração comum aos gráficos de modelos e provedores", "模型用量": "Uso por modelo", "模型用量占比": "Proporção de uso por modelo", "每天的总 Token 用量(输入 + 输出)。柱顶标出当天的读数;区间很长、柱子挤到放不下时只标最高的那几天,其余悬停柱子即可读到。": "Uso total de Token por dia (entrada + saída). O valor do dia é marcado no topo da barra; quando o período é longo e as barras ficam sem espaço, apenas os dias mais altos são rotulados — para os demais, basta passar o mouse sobre a barra para ler o valor.", "活跃天数": "Dias ativos", "活跃热力图": "Mapa de calor de atividade", "用量分布": "Distribuição de uso", "用量趋势": "Tendência de uso", "的项目合并为“其他”": "em Outros", "筛选统计项目": "Filtrar itens do relatório", "累计": "Acumulado", "累计请求 {n} 条": "{n} requisições no total", "结束日期": "Data final", "结束日期(含当天)": "Data final (inclusive)", "统计报表": "Relatório de uso", "统计概览": "Visão geral", "缓存命中率": "Taxa de acerto de cache", "缓存读取属于输入读数,不额外计入总 Token": "As leituras de cache fazem parte da entrada e não são somadas novamente ao total de tokens", "缓存读取属于输入,不重复计入总 Token": "Leituras de cache fazem parte da entrada, sem duplicar o total de tokens", "自定义区间": "Período personalizado", "请求日志只展示仍保留的明细;清理明细不会减少日报中的历史用量。": "Os logs exibem apenas detalhes preservados; apagá-los não reduz o uso histórico nos relatórios diários.", "读取 {hit} ÷ 输入 {input}": "Leituras de cache {hit} ÷ entrada {input}", "读取报表失败:{error}": "Falha ao ler o relatório: {error}", "起始日期(含当天)": "Data inicial (inclusive)", "输入": "Entrada", "输入 + 输出": "Entrada + saída", "输入 Token": "Tokens de entrada", "输出": "Saída", "输出 Token": "Tokens de saída", "运行中": "Em execução", "近 1 小时": "Última hora", "近 10 分钟": "Últimos 10 minutos", "近 24 小时": "Últimas 24 horas", "近 24 小时缓存命中率与总 Token 趋势": "Tendência da taxa de acerto de cache e do total de Tokens nas últimas 24 horas", "近 24 小时缓存命中率趋势": "Tendência da taxa de acerto de cache nas últimas 24 horas", "近 30 天": "Últimos 30 dias", "近 365 天 · 不随上方日期筛选变化": "Últimos 365 dias · independente do filtro de datas", "近 365 天活跃热力图": "Mapa de calor de atividade dos últimos 365 dias", "近 365 天,按天 Token 用量着色(档位按本窗口峰值自动定)": "Últimos 365 dias, coloridos pelo uso diário de Token (as faixas são definidas automaticamente pelo pico desta janela)", "近 7 天": "Últimos 7 dias", "饼图不合并小项": "Mostrar todas as fatias", "饼图小于 {threshold}% 归入其他": "Agrupar fatias abaixo de {threshold}%", "饼图显示": "Exibição dos gráficos", " · ": " · ", " · {n} 个账号今日重试已用完": " · {n} contas esgotaram as tentativas de hoje", " · 补签在主签到区间结束后执行": " · Reposição após a janela principal", "AgentArts 服务声明": "Termos de serviço do AgentArts", "MiniMax Code 国内版每日签到 · 同地区签名账号接口读取七日面板并领取今日积分;已领取不重复领,奖励以官方返回为准": "Check-in diário do MiniMax Code (China) · A API assinada da conta da região consulta o painel de sete dias e resgata os pontos de hoje. Recompensas já resgatadas não são repetidas; valem as respostas oficiais.", "MiniMax Code 国际版每日签到 · 同地区签名账号接口读取七日面板并领取今日积分;已领取不重复领,奖励以官方返回为准": "Check-in diário do MiniMax Code (Global) · A API assinada da conta da região consulta o painel de sete dias e resgata os pontos de hoje. Recompensas já resgatadas não são repetidas; valem as respostas oficiais.", "QuWork 每日奖励:先查询领取状态,再领取并回查;结果不明时不重复提交。": "Recompensas diárias do QuWork: consulte o estado antes de resgatar e confira o resultado depois. Resgates incertos não são repetidos.", "SOLO 的 checkin_credits 领取 · 按自然日 0 点刷新": "Resgate de checkin_credits do SOLO · redefinido às 0h do dia natural", "Sonus 等限时活动 · 资格、额度和有效期以官方返回为准": "Sonus e outras campanhas por tempo limitado · Elegibilidade, créditos e validade seguem a resposta oficial", "UMID 组件安装失败:{error}": "Falha ao instalar o componente UMID: {error}", "UMID 组件已安装,可重新签到。": "O componente UMID está instalado. Você pode fazer o check-in novamente.", "UMID 组件管理接口不可用,请刷新页面或更新网关。": "A API de gerenciamento do componente UMID está indisponível. Atualize a página ou o gateway.", "WorkBuddy 国内版 · 查询任务树后一键点亮 / 领奖 · 含开学季与猫猫旅行 · 点击行展开明细": "WorkBuddy CN · Consulte a árvore de tarefas e acenda / resgate com um clique · inclui o evento de volta às aulas e a viagem do gato · clique na linha para detalhes", "WorkBuddy 国际版保活模型,按顺序回退": "Modelos do WorkBuddy internacional para manter ativo, com fallback em ordem", "WorkBuddy 国际版日活任务的免费模型 · 全局一份,与条目无关": "Modelos gratuitos da atividade diária do WorkBuddy Internacional · uma configuração global, independente dos agendamentos", "ZCode 自动领取验证": "Verificação do resgate automático do ZCode", "{date}(每天 {time})": "{date} (todos os dias às {time})", "{done} / {total} 个账号已签": "{done} de {total} contas com check-in", "{done}/{total} 已签": "{done}/{total} com check-in", "{label} ×{count}({reason})": "{label} ×{count} ({reason})", "{name}定时补签开关": "Reposição agendada de {name}", "{name}签到时间": "Horário de check-in de {name}", "{n} 个平台": "{n} plataformas", "{n} 个平台 · {groups} 组签到时间": "{n} plataformas · {groups} grupos de horários", "{n} 个计划 · 北京时间 UTC+8": "{n} agendamentos · Pequim UTC+8", "{n} 个账号今天的重试次数已用完": "{n} contas esgotaram o limite de tentativas de hoje", "{n} 个账号等待窗口或活动": "{n} contas aguardando janela ou campanha", "{n} 积分": "{n} pontos", "{n} 项可完成": "{n} para concluir", "{n} 项待领": "{n} itens a resgatar", "{points} 积分": "{points} pontos", "{total} 账号 · {done} 已签": "{total} contas · {done} com check-in", "{total} 项任务 · {pending} 项可完成": "{total} tarefas · {pending} para concluir", "✅ UMID 组件已安装,下轮签到即可领取国际版积分": "✅ Componente UMID instalado; no próximo check-in já dá para resgatar os pontos da edição internacional", "✅ {message}": "✅ {message}", "✅ 定时签到已开启": "✅ Check-in agendado ativado", "✅ 开学季任务执行完成": "✅ Tarefas de volta às aulas concluídas", "✅ 成长任务执行完成:积分 +{credit} 能量 +{energy}": "✅ Tarefas de crescimento concluídas: créditos +{credit}, energia +{energy}", "✅ 新手福利领取完成": "✅ Benefícios iniciais resgatados", "✅ 新手福利领取完成,累计 {n} 积分": "✅ Benefícios iniciais resgatados, {n} pontos no total", "✅ 签到完成:{succeeded}/{total} 个账号成功领取{active}": "✅ Check-in concluído: {succeeded}/{total} contas resgataram com sucesso{active}", "「保活模型链」是 WorkBuddy 国际版领日活时用来保活的免费模型,按顺序逐个尝试、 第一个成功即止;清空提交恢复缺省({defaults})。 当天去重 + 幂等领取:重复执行只会拿到「已领取」,不会重复加分。": "A \"cadeia de modelos de keep-alive\" são os modelos gratuitos usados para manter contas do WorkBuddy Internacional ativas na atividade diária — tentados em ordem, parando no primeiro sucesso; envie vazio para restaurar o padrão ({defaults}). Deduplicação no dia + resgate idempotente: repetir a execução só retorna \"já resgatado\" e nunca pontua duas vezes.", "「保活模型链」是 WorkBuddy 国际版领日活时用来保活的免费模型,按顺序逐个尝试、 第一个成功即止;清空清单并保存 = 恢复缺省链(当前缺省:{defaults})。 当天去重 + 幂等领取:重复执行只会拿到「已领取」,不会重复加分。": "A \"cadeia de modelos de keep-alive\" são os modelos gratuitos usados para manter contas do WorkBuddy Internacional ativas na atividade diária — tentados em ordem, parando no primeiro sucesso; limpar a lista e salvar restaura a cadeia padrão (padrão atual: {defaults}). Deduplicação no dia + resgate idempotente: repetir a execução só retorna \"já resgatado\" e nunca pontua duas vezes.", "「免费领积分」的每日任务 · 逐个领取": "Tarefa diária do “Ganhe pontos grátis” · resgate um a um", "一次性福利 · 已领取状态保存在网关,领完无需重复查询 · 点击行展开任务清单": "Benefícios únicos · o status de resgate fica salvo no gateway, sem necessidade de novas consultas após o resgate · clique na linha para expandir as tarefas", "一次性福利 · 签到后自动查询并领取,领完记在本机不再查上游 · 点击行展开任务清单": "Benefício único · consultado e resgatado automaticamente após o check-in; depois de resgatado, fica registrado localmente e o upstream não é mais consultado · clique na linha para expandir a lista de tarefas", "一次性福利已全部结清": "Todos os benefícios únicos foram liquidados", "一次性福利已结清": "Benefícios únicos liquidados", "一次性福利已结清,无需重复查询": "Os benefícios únicos já foram resgatados; não é preciso consultar novamente", "一次领当天全部奖励(每日签到 + 新人礼) · 幂等由上游保证": "Resgata todas as recompensas do dia em uma única ação (check-in diário + presente de novos usuários) · idempotência garantida pelo upstream", "一键安装组件": "Instalar componente", "一键完成": "Concluir tudo", "一键领取({n})": "Resgatar todos ({n})", "上一轮({time}):{n} 个动作,+{credit} 积分": "Última execução ({time}): {n} ações, +{credit} créditos", "上次执行:{line}": "Última execução: {line}", "上次签到时间": "Último check-in", "上次领取 {time} · 领取需通过滑块验证码": "Último resgate: {time} · o resgate exige captcha deslizante", "下一账号:{time}": "Próxima conta: {time}", "下次 {date}": "Próxima {date}", "下次 {date} · 点此管理条目": "Próxima {date} · clique para gerenciar os agendamentos", "下次检查:{time}": "Próxima verificação: {time}", "下次自动执行": "Próxima execução automática", "不参与每日签到:{list}。CodeArts 的一次性奖励在下方「新手福利」,它与 ZCode 的每日/套餐福利领取见「活动福利」。": "Fora do check-in diário: {list}. As recompensas únicas do CodeArts ficam em \"Benefícios iniciais\" abaixo; o resgate diário/de planos dele e do ZCode fica em \"Benefícios de atividade\".", "不参与每日签到:{list}。CodeArts 的一次性奖励在下方「新手福利」,它的每日福利就在上方「每日签到」里;ZCode 的套餐领取见「活动福利」。": "Fora do check-in diário: {list}. As recompensas únicas do CodeArts ficam em \"Benefícios iniciais\" abaixo, e o benefício diário dele fica logo acima em \"Check-in diário\"; o resgate de planos do ZCode fica em \"Benefícios de atividade\".", "不参与签到": "Fora do check-in", "不可领": "Indisponível", "不自动重试等待中的活动": "Não repetir campanhas pendentes automaticamente", "不适用": "Não se aplica", "与国内版同一套任务接口 · 站点不同": "Mesma interface de tarefas da edição da China · site diferente", "与国内版同一套链路 · 站点不同、令牌不通用": "Mesmo fluxo da edição chinesa · site diferente, tokens não intercambiáveis", "与定时补签不同,仅处理窗口未开或活动暂未下发。": "Diferente da reposição agendada, trata apenas janelas ainda fechadas ou campanhas não liberadas.", "与新人积分独立,不购买付费套餐、不自动续费": "Independente dos pontos de novos usuários. Não compra planos pagos nem faz renovações automáticas.", "专属或自定义时间作为区间起点,沿用默认区间长度;每天重新随机,重启不改变当天安排。": "Horários específicos ou personalizados definem o início e usam a duração padrão. Os horários são sorteados diariamente; reiniciar mantém a agenda de hoje.", "个账号不参与": "contas fora", "主签到区间结束后等待 {n} 分钟": "Aguardar {n} minutos após o fim da janela principal", "主签到后等待 {n} 分钟": "Aguardar {n} minutos após o check-in principal", "主签到后等待(分钟)": "Espera após o check-in principal (minutos)", "主签到已执行": "Check-in principal executado", "主签到已执行不等于每个账号都已领取成功;账号结果请查看签到记录。": "A execução principal não significa que todas as contas resgataram com sucesso. Consulte os registros de check-in.", "仅处理窗口未开或活动暂未下发的账号,不对所有错误反复执行。": "Repete apenas contas aguardando janela ou campanha, não todos os erros.", "仅开通官方报价为 0 元的个人体验套餐,固定关闭自动续费;奖励另行领取": "Ativa apenas o plano de teste pessoal com preço oficial de CNY 0 e renovação automática desativada. As recompensas são resgatadas separadamente.", "仅提交你填写的权益,不购买套餐;兑换码激活可能需要原客户端的设备标识。": "Resgata apenas o benefício informado, sem comprar planos. A ativação de códigos pode exigir a identidade do dispositivo do cliente original.", "今天 · 北京时间自然日": "Hoje · dia civil de Pequim", "今天不再自动重试,明天自动重置。要现在再试一次,用签到计划里的「立即执行」。": "Estas contas não serão tentadas novamente hoje; o contador é redefinido amanhã. Para tentar mais uma vez agora, use “Executar agora” no plano de check-in.", "今天已执行:{list}": "Executado hoje: {list}", "今天已领 {n} 份": "{n} resgatado(s) hoje", "今天未领": "Não resgatado hoje", "今天(北京时间 {day})已领取 · 官方确认到账 {n} 项 · 明天可再领": "Resgatado hoje (horário de Pequim, {day}) · {n} itens confirmados oficialmente · amanhã é possível resgatar novamente", "今日主签到": "Check-in principal de hoje", "今日已执行": "Executado hoje", "今日已派出": "Já enviado hoje", "今日已签": "Check-in feito hoje", "今日已领取": "Resgatado hoje", "今日已领取豆包工作签到奖励,已由官方确认": "A recompensa de check-in de hoje do Doubao Work já foi resgatada e confirmada pelo serviço oficial.", "今日签到": "Check-in de hoje", "今日签到任务尚未满足领取条件": "A tarefa de check-in de hoje ainda não atende às condições para resgatar a recompensa.", "今日签到进度": "Progresso do check-in de hoje", "从清单里移除": "Remover da lista", "例如:每日自动签到": "Ex.: Check-in automático diário", "保存计划": "Salvar agendamento", "保活": "Manter ativo", "保活 API Key 已保存": "API Key de manutenção de atividade salva", "保活 {n}": "{n} mantidos ativos", "保活+领取": "Manter ativo + Resgatar", "保活中…": "Mantendo ativo…", "保活模型链": "Cadeia de modelos para manter ativo", "保活模型链为全局配置,猫猫旅行有独立的开关与时刻。": "A cadeia de manutenção de atividade é global. A viagem do gato tem opções e horários próprios.", "先创建签到计划,再为它设置定时补签。": "Crie um agendamento de check-in e depois configure a reposição.", "先查询活动,再选择要领取的奖励;不会购买或订阅套餐": "Consulte as campanhas e escolha uma recompensa para resgatar. Nenhum plano será comprado ou assinado.", "免费体验套餐": "Plano de teste gratuito", "免费套餐已开通并确认生效": "O plano gratuito foi ativado e confirmado como ativo", "兑换中…": "Resgatando…", "兑换权益": "Resgatar benefício", "兑换结果待确认,请到官方客户端核对;不会重复提交": "O resgate aguarda confirmação. Confira no cliente oficial; nenhuma solicitação duplicada será enviada.", "兑换请求未得到确认,请到官方客户端核对;不要重复提交": "A solicitação de resgate não foi confirmada. Confira no cliente oficial e não envie novamente.", "全选": "Selecionar tudo", "全部 {n} 家": "Todos os {n} provedores", "全部完成": "Tudo concluído", "全部查询": "Consultar todos", "全部签到": "Fazer check-in em todas", "全部类型": "Todos os tipos", "全部结果": "Todos os resultados", "全部账号均可签到": "Todas as contas podem fazer check-in", "全部领取": "Resgatar todos", "关着:不自动巡检(仍可手动巡检)": "Desligado: sem inspeção automática (a inspeção manual continua disponível)", "关着:所有条目都不执行": "Desligado: nenhum agendamento é executado", "关闭活动窗口重试不会关闭定时补签。插件提供下次重试时刻时,以插件返回的时间为准。": "Desativar as tentativas de campanha não desativa a reposição. O horário informado pelo plugin tem prioridade.", "其他自动任务": "Outras tarefas automáticas", "凭证不可用": "Credenciais indisponíveis", "凭证需刷新": "Credenciais precisam ser atualizadas", "切换任务后,左侧只保留有账号的提供商": "Ao trocar de tarefa, apenas provedores com contas são listados à esquerda", "删除失败:{error}": "Falha ao excluir: {error}", "删除定时条目": "Excluir agendamento", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活并在网页通道建会话点亮日活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;CodeArts 领当日的运营福利(领取 → 确认 → 回读核实,自动执行受每天 6 次 / 间隔 10 分钟的写请求限流);OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "No horário marcado, faz o check-in automático das contas habilitadas dos provedores marcados (WorkBuddy CN usa a API de check-in diário; a versão internacional usa a tarefa de atividade diária: detecta o evento, recebe a recompensa de atividade diária, mantém-se ativo com o modelo gratuito e abre uma sessão pelo canal web para acender a atividade do dia; o Raccoon usa o fluxo de pontos diários do desktop; o AutoClaw usa a tarefa de check-in diário do cliente oficial; o Qoder CN reivindica via evento, e contas sem evento atribuído recebem um aviso neutro; o Qoder internacional precisa primeiro de uma identidade de risco do dispositivo (gerada pelo componente UMID do cliente Qoder local / qodercli) para sequer ver o evento \"100 Credits diários\" — sem o componente, chega uma explicação clara em vez de um erro; o Trae recebe os pontos de check-in diário do SOLO (reiniciam à meia-noite), e quando o upstream não tem evento para a conta ou as credenciais não têm ID de dispositivo, chega \"não recebido + motivo\" em vez de erro; o Loomy credita os pontos de primeiro login uma vez por dia para a conta; o KukuAI recebe a tarefa diária \"Pontos grátis\"; o CodeArts recebe as vantagens operacionais do dia (receber → confirmar → verificar relendo; execuções automáticas limitadas a 6 requisições de escrita por dia, com 10 minutos de intervalo); o OfficeAce recebe todas as recompensas do dia de uma vez (check-in diário + brinde de novato)). Se a máquina estava desligada no horário, um check-in de reposição roda ao ligar — nada fica para trás. A API de check-in de cada provedor é idempotente: repetir nunca recebe duas vezes.", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;CodeArts 领当日的运营福利(领取 → 确认 → 回读核实,自动执行受每天 6 次 / 间隔 10 分钟的写请求限流);OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "No horário definido, o check-in automático é feito nas contas disponíveis dos provedores marcados (o WorkBuddy edição da China usa a interface de check-in diário; a edição internacional usa as tarefas de atividade diária: detectar o evento, resgatar a recompensa de atividade diária e então manter a conta ativa com modelos gratuitos; o Raccoon usa o fluxo diário de pontos do aplicativo desktop; o AutoClaw usa a tarefa de check-in diário do cliente oficial; o Qoder China usa o resgate de evento, e contas sem evento distribuído recebem um aviso neutro; o Qoder internacional precisa primeiro da identidade de controle de risco do dispositivo (gerada pelo componente UMID do cliente Qoder / qodercli local) para enxergar o evento “100 Credits diários”, e sem o componente recebe uma explicação clara em vez de um erro; o Trae resgata os pontos de check-in diário do SOLO (redefinidos às 0h do dia natural), e quando o upstream não abriu o evento para a conta ou a credencial não tem o ID do dispositivo, o resultado é “não resgatado + motivo específico” em vez de um erro; o Loomy credita uma vez por dia os pontos de primeiro login da conta; o KukuAI resgata a tarefa diária do “Ganhe pontos grátis”); o CodeArts resgata o benefício de campanha do dia (resgatar → confirmar → reler para verificar; execuções automáticas têm limite de 6 gravações por dia com intervalo de 10 minutos); o OfficeAce resgata todas as recompensas do dia em uma única ação (check-in diário + presente de novos usuários)). Se o horário for perdido, o check-in é compensado automaticamente após o computador ser ligado, sem que nada se perca por o computador estar desligado no horário. As interfaces de check-in de cada provedor são idempotentes; execuções repetidas não resgatam duas vezes.", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "No horário definido, o check-in automático é feito nas contas disponíveis dos provedores marcados (o WorkBuddy edição da China usa a interface de check-in diário; a edição internacional usa as tarefas de atividade diária: detectar o evento, resgatar a recompensa de atividade diária e então manter a conta ativa com modelos gratuitos; o Raccoon usa o fluxo diário de pontos do aplicativo desktop; o AutoClaw usa a tarefa de check-in diário do cliente oficial; o Qoder China usa o resgate de evento, e contas sem evento distribuído recebem um aviso neutro; o Qoder internacional precisa primeiro da identidade de controle de risco do dispositivo (gerada pelo componente UMID do cliente Qoder / qodercli local) para enxergar o evento “100 Credits diários”, e sem o componente recebe uma explicação clara em vez de um erro; o Trae resgata os pontos de check-in diário do SOLO (redefinidos às 0h do dia natural), e quando o upstream não abriu o evento para a conta ou a credencial não tem o ID do dispositivo, o resultado é “não resgatado + motivo específico” em vez de um erro; o Loomy credita uma vez por dia os pontos de primeiro login da conta; o KukuAI resgata a tarefa diária do “Ganhe pontos grátis”); o OfficeAce resgata todas as recompensas do dia em uma única ação (check-in diário + presente de novos usuários)). Se o horário for perdido, o check-in é compensado automaticamente após o computador ser ligado, sem que nada se perca por o computador estar desligado no horário. As interfaces de check-in de cada provedor são idempotentes; execuções repetidas não resgatam duas vezes.", "到点待执行": "Horário atingido, aguardando execução", "到点时逐个签到,已勾 {n} / {total} 家": "{n} de {total} marcados — o check-in é feito um por um no horário", "北京时间 · 已启用 {n} 个签到计划": "Horário de Pequim · {n} agendamentos ativos", "北京时间 · 每天重复 · 随设置更新": "Horário de Pequim · Repete diariamente · Atualiza com as configurações", "北京时间 · 逗号分隔 · 最多 6 条 · 到点后最多晚 30 秒执行;错过时点开机后会补跑一轮。": "Horário de Pequim · separados por vírgula · até 6 entradas · executa com no máximo 30 segundos de atraso; um horário perdido é recuperado uma vez após iniciar.", "北京时间 · 错过区间会补跑未执行账号,重启保留当天安排;任务在网关执行,关闭手机不影响排程。": "Horário de Pequim · Contas pendentes são recuperadas se a janela for perdida. Reiniciar mantém a agenda do dia. As tarefas rodam no gateway; fechar o aplicativo móvel não afeta os agendamentos.", "北京时间 · 错过时点开机后会自动补签": "Horário de Pequim · execuções perdidas são compensadas automaticamente ao iniciar", "区间内陆续签到": "Check-ins ao longo da janela", "区间结束后等待(分钟)": "Espera após o fim da janela (minutos)", "单账号签到不受范围限制": "O check-in por conta não é limitado pelo escopo", "原套餐已到期或冻结,请在官方客户端处理;这里不会续费或变更套餐": "O plano atual expirou ou foi congelado. Gerencie-o no cliente oficial; esta página não renova nem altera planos.", "去插件页安装签到能力": "Instalar suporte a check-in na página de plugins", "去领取": "Resgatar", "发放中": "Em distribuição", "发放失败": "Falha na distribuição", "取消验证": "Cancelar verificação", "另有 {n} 个账号不参与": "Mais {n} contas não participam", "另有 {n} 个账号不参与每日签到": "Outras {n} contas não participam do check-in diário", "只列当前任务里有账号的提供商。": "Apenas provedores com contas na tarefa atual são listados.", "只重试这些账号,不会重签整个计划。具体原因见签到记录。": "Repete apenas essas contas, não o agendamento inteiro. Veja os motivos nos registros.", "只领取已完成任务的奖励(幂等,重复点不会重复入账)": "Resgatar apenas recompensas de tarefas concluídas (idempotente; cliques repetidos não creditam em dobro)", "可使用管理员凭据调用:": "Você pode chamar esta API com credenciais de administrador:", "可完成": "Pode concluir", "可派出": "Pode enviar", "可选 · 缺省显示时刻": "Opcional · usa o horário como padrão", "可领": "Disponível", "可领奖": "Pode resgatar", "各家区间起点": "Início da janela por provedor", "同时控制定时签到、定时补签和活动窗口重试;猫猫旅行独立运行。": "Controla check-in agendado, reposição e tentativas de campanha. A viagem do gato é independente.", "后端未返回 UMID 组件安装结果": "O backend não retornou o resultado da instalação do componente UMID", "后端未返回 UMID 组件状态": "O backend não retornou o status do componente UMID", "后端未返回定时签到数据": "O backend não retornou dados de agendamento", "后端未返回巡检结果": "O backend não retornou um resultado de inspeção", "后端未返回新手福利数据": "O backend não retornou os dados dos benefícios iniciais", "后端未返回有效的套餐状态": "O gateway não retornou um estado válido do plano", "后端未返回权益兑换结果": "O gateway não retornou o resultado do resgate", "后端未返回活动福利数据": "O gateway não retornou dados de recompensas de campanhas", "后端未返回签到中心数据": "O backend não retornou os dados da central de check-in", "启用的计划在各自区间内随机签到": "Agendamentos ativos fazem check-in aleatório dentro das respectivas janelas", "启用签到计划 {name}": "Ativar agendamento de check-in {name}", "国际版签到需要 UMID 组件生成设备风控身份(本机未检测到)。": "O check-in da edição internacional exige o componente UMID para gerar a identidade de controle de risco do dispositivo (não detectado nesta máquina).", "在桌面端设置": "Configure no desktop", "在途": "Em viagem", "基本设置": "Configurações básicas", "填入缺省链": "Preencher cadeia padrão", "填写你已有的兑换码或订单号": "Informe um código ou número de pedido que você já possui", "填好时刻与签到范围后点「保存」;名称可以留空(界面显示时刻)": "Escolha o horário e os provedores e clique em Salvar; o nome é opcional (quando vazio, mostra-se o horário)", "失败 {n}": "{n} com falha", "奖励与权益 · 资格、额度和有效期以官方返回为准": "Recompensas e benefícios · Elegibilidade, cota e validade seguem a resposta oficial", "套餐已冻结": "Plano congelado", "套餐已到期": "Plano expirado", "套餐已开通,无需重复操作": "O plano já está ativo. Nenhuma outra ação é necessária.", "套餐明细": "Detalhes dos planos", "套餐查询凭证已过期,请先到账号页刷新凭证;此查询不会自动续期": "As credenciais de consulta do plano expiraram. Atualize-as primeiro na página Contas; esta consulta não as renova automaticamente.", "套餐领取": "Resgate de plano", "安装 Qoder 客户端或 qodercli 后即可(无需重启网关)。": "Basta instalar o cliente Qoder ou o qodercli (não é preciso reiniciar o gateway).", "安装中…": "Instalando…", "安装后仍未检测到 UMID 组件,请重新检查。": "O componente UMID ainda não foi detectado após a instalação. Verifique novamente.", "官方客户端的每日签到任务": "Tarefa de check-in diário do cliente oficial", "官方拒绝套餐查询,请检查账号授权;这不一定表示 Token 已过期": "O serviço oficial negou a consulta do plano. Verifique a autorização da conta; isso não significa necessariamente que o token expirou.", "官方显示自动续费已开启,请到官方客户端检查": "O serviço oficial informa que a renovação automática está ativada. Verifique no cliente oficial.", "官方未返回明确的套餐状态,暂不能开通": "O serviço oficial não retornou um estado definido do plano. A ativação está indisponível por enquanto.", "定时签到": "Check-in agendado", "定时签到和定时补签分开管理。补签沿用对应签到计划的平台范围,不重复领取已完成的账号。": "Check-in e reposição são gerenciados separadamente. A reposição usa as plataformas do agendamento e ignora contas concluídas.", "定时签到已关闭": "Check-in agendado desativado", "定时补签": "Reposição agendada", "实际发放:{time}": "Distribuído em: {time}", "实际时间由网关计算,晚窗口的平台会顺延补签;只处理当天未签到账号。": "O gateway calcula os horários. Janelas mais tardias adiam a reposição, que trata apenas contas sem check-in hoje.", "实际签到安排": "Horários reais de check-in", "实际补签": "Reposição efetiva", "实际补签取「主签到时间加等待间隔」与「补签不早于」中较晚的时刻。": "A reposição usa o horário mais tarde entre o check-in principal mais a espera e o limite mínimo de reposição.", "对应主签到:{times}": "Check-in principal correspondente: {times}", "对应签到计划 · 沿用 {n} 个平台范围,只补未签到账号": "Agendamento vinculado · Mesmas {n} plataformas, apenas contas sem check-in", "对应签到计划:{name}": "Agendamento correspondente: {name}", "尚未开始": "Não iniciado", "尚未开通套餐,可开通免费体验套餐": "Nenhum plano está ativo. Você pode ativar o plano de teste gratuito.", "尚未执行": "Ainda não executado", "尚未查询": "Ainda não consultado", "尚未查询任务状态": "Status das tarefas ainda não consultado", "尝试领取": "Tentar resgatar", "展开": "Expandir", "巡检一次": "Executar uma rodada", "巡检中…": "Inspecionando…", "巡检失败:{reason}": "Falha na inspeção: {reason}", "已保存:{label}": "Salvo: {label}", "已保存:保活模型链": "Salvo: cadeia de modelos para manter ativo", "已保存:定时条目": "Salvo: agendamento", "已保存:猫猫旅行排程": "Salvo: agenda da viagem do gato", "已全部领取": "Tudo resgatado", "已删除定时条目": "Agendamento excluído", "已发放": "Distribuído", "已完成活跃上报(连登已点亮),但活动未开启(本次没有可领的奖励)": "Atividade reportada (ofensiva acesa), mas a campanha não está ativa (nada para resgatar desta vez)", "已就绪": "Pronto", "已开始批量签到": "Check-in em lote iniciado", "已开通": "Ativo", "已得 {earned} / {total} 积分": "{earned} / {total} pontos ganhos", "已执行 {n} / {total} 个平台": "{n} / {total} plataformas executadas", "已执行 {n} / {total} 个账号": "{n} / {total} contas processadas", "已抽 {n} 次": "Sorteou {n} vezes", "已提交「{label}」的签到": "Check-in de {label} enviado", "已暂停": "Pausado", "已有结果 {checked} / 共 {total} 个账号": "Já com resultado: {checked} / {total} contas", "已查 {checked} / {total} 个账号": "{checked} de {total} contas verificadas", "已确认不自动续费": "Renovação automática confirmada como desativada", "已确认领取": "Resgate confirmado", "已签": "Com check-in", "已签到自动跳过": "Contas com check-in são ignoradas", "已结束": "Encerrado", "已选 {n} / {total} 个平台": "{n} / {total} plataformas selecionadas", "已领 {claimed}/{total} · 累计 {earned} 积分": "Resgatado {claimed}/{total} · {earned} pontos acumulados", "已领 {done} / {total} 份套餐": "{done} / {total} planos resgatados", "已领养": "Adotado", "已领取": "Resgatado", "已领取「{name}」": "{name} resgatado", "带设备风控身份领取「每日 100 Credits」 · 需要 UMID 组件": "Resgatar “100 Credits diários” com a identidade de controle de risco do dispositivo · requer o componente UMID", "平台与签到时间": "Plataformas e horários de check-in", "平台与随机签到区间": "Plataformas e janelas de check-in aleatório", "平台专属": "Específico da plataforma", "平台专属时间": "Horário específico da plataforma", "平台专属时间由网关提供。自定义时间会覆盖专属时间,提前执行可能遇到窗口未开。": "Horários específicos vêm do gateway. Horários personalizados têm prioridade; executar cedo pode encontrar a janela fechada.", "平台批次": "Grupo de plataformas", "开关": "Opções", "开启定时补签": "Ativar reposição agendada", "开启活动窗口重试": "Ativar tentativas de campanha", "开始 {time}": "Início {time}", "开学季执行失败:{error}": "Falha na execução de volta às aulas: {error}", "开学季执行完成:{message}": "Execução de volta às aulas concluída: {message}", "开学季活动": "Evento de volta às aulas", "开着:启用的条目按各自时刻执行": "Ligado: agendamentos habilitados rodam em seus próprios horários", "开着:按下面的时刻自动巡检": "Ligado: inspeciona automaticamente nos horários abaixo", "开通中…": "Ativando…", "开通免费套餐": "Ativar plano gratuito", "开通未得到确认,请重新查询套餐状态;不会自动重试开通": "A ativação não foi confirmada. Consulte novamente o estado do plano; a ativação não será repetida automaticamente.", "开通结果待确认": "Ativação aguardando confirmação", "开通请求仍在处理或结果待确认,请稍后查询,不要重复提交": "A ativação ainda está em processamento ou aguarda confirmação. Consulte novamente mais tarde; não envie outra solicitação.", "当前没有可领取的套餐": "Nenhum plano disponível no momento", "当前没有等待窗口或活动下发的账号。": "Nenhuma conta aguarda janela ou campanha no momento.", "当前活动未提供每日签到任务": "A campanha atual não oferece uma tarefa de check-in diário.", "当前网关中,补签等待间隔与活动重试间隔共用;修改间隔会同步影响两者,开关与重试次数仍分别设置。": "O gateway atual compartilha o intervalo de espera e de tentativas. Alterá-lo afeta ambos; opções e limites continuam separados.", "当前账号暂不符合该活动的领取条件": "Esta conta não atende aos requisitos para resgatar esta recompensa no momento", "当前账号未下发豆包工作签到活动,无需反复领取": "Nenhuma campanha de check-in do Doubao Work está disponível para esta conta. Não é necessário repetir o resgate.", "待发放": "Aguardando distribuição", "待执行": "Aguardando execução", "待签": "Pendente", "待领取": "A resgatar", "待领新手福利": "Benefícios iniciais pendentes", "总开关": "Interruptor principal", "总开关已关闭": "O interruptor geral está desativado", "总开关已关闭 · 在「定时签到」页打开": "Interruptor principal desligado · ative na aba \"Check-in agendado\"", "成功 {n}": "{n} com sucesso", "成长任务": "Tarefas de crescimento", "成长任务完成({done} 项成功、{failed} 项失败),积分 +{credit} 能量 +{energy}": "Tarefas de crescimento concluídas ({done} com sucesso, {failed} com falha): créditos +{credit}, energia +{energy}", "成长任务执行失败:{error}": "Falha na execução das tarefas de crescimento: {error}", "我已阅读并同意以下服务声明,仅授权开通零元体验套餐,不自动续费": "Li e aceito os termos de serviço abaixo e autorizo apenas o plano de teste gratuito, sem renovação automática.", "所有时间按北京时间计算。每个账号每天随机安排一次,重启保留当天安排;错过区间时会补跑未执行账号。": "Todos os horários usam Pequim. Cada conta recebe um horário aleatório por dia, mantido após reinícios. Se uma janela for perdida, as contas pendentes são recuperadas.", "所有时间按北京时间计算。网关启动后会补跑当天已到点、尚未执行的签到,不会提前执行未来时点。": "Todos os horários usam Pequim. Ao iniciar, o gateway recupera check-ins vencidos de hoje sem antecipar horários futuros.", "手动签到": "Check-in manual", "执行失败:{error}": "Falha na execução: {error}", "执行并抽奖": "Executar e sortear", "执行开学季任务并抽空抽奖机会(分享 / 对话 / 专家事件)": "Executar as tarefas de volta às aulas e gastar todas as chances de sorteio (compartilhar / conversar / eventos de especialista)", "执行规则": "Regras de execução", "把缺省链填进清单,再点「保存」生效": "Coloca a cadeia padrão na lista; clique em Salvar para aplicar", "抽奖机会 {n} 次": "{n} chances de sorteio", "按住拖动调整顺序": "Pressione e arraste para reordenar", "按住拖动,调整这个模型在链里的顺序": "Pressione e arraste para mudar a posição deste modelo na cadeia", "按序逐个尝试,共 {n} 个": "{n} modelos, tentados em ordem", "按结果筛选": "Filtrar por resultado", "授权被拒绝": "Autorização negada", "探测 + 领取 + 保活 · 与定时签到同一套组合": "Detectar + resgatar + manter ativo · mesma combinação do check-in agendado", "探测活动并领取日活奖励 · 不做保活": "Detectar o evento e resgatar a recompensa de atividade diária · sem manter ativo", "接单 + 点亮 + 领奖(只处理已实测沉淀的任务)": "Aceitar + acender + resgatar (apenas tarefas com receita verificada)", "插件未就绪,范围仍保留": "Plugin indisponível; escopo mantido", "搜索平台": "Pesquisar plataformas", "搜索签到平台": "Pesquisar plataformas de check-in", "搜账号 / 收益 / 错误 / 触发原因": "Pesquisar conta / ganho / erro / motivo do disparo", "收起": "Recolher", "收起平台": "Recolher plataformas", "收起新建": "Fechar novo item", "新建定时条目": "Nova entrada agendada", "新建签到计划": "Novo agendamento de check-in", "新手任务": "Tarefas iniciais", "新手福利": "Benefícios iniciais", "新手福利与活动": "Benefícios iniciais e campanhas", "新手福利是一次性任务:领完就没了,重复点不会重复加分。": "Os benefícios iniciais são tarefas únicas: depois de resgatados acabam, e toques repetidos não somam pontos de novo.", "新手福利有 {n} 项领取失败,可重试": "{n} item(ns) dos benefícios iniciais falharam no resgate — é possível tentar novamente", "新手福利领取失败 {n} 项": "Falha ao resgatar {n} benefícios iniciais", "新用户积分": "Créditos de novo usuário", "新计划默认开启补签和活动窗口重试;保存后可到「定时补签」页单独调整。": "Novos agendamentos ativam reposição e tentativas por padrão. Ajuste-os na aba Reposição agendada após salvar.", "无": "Nenhum", "无独立签到接口 · 每天替账号打一次登录信息(即当日魔粒)": "Sem interface de check-in própria · consulta as informações de login uma vez por dia por conta (o que concede os créditos do dia)", "无独立签到接口 · 每天替账号打一次首次登录积分": "Sem interface de check-in própria · credita uma vez por dia os pontos de primeiro login da conta", "无账号": "Sem contas", "时刻": "Horários", "暂不可领": "Indisponível", "暂不可领(未满足条件)": "Ainda não resgatável (requisitos não atendidos)", "暂不支持": "Ainda não suportado", "暂无可领取福利": "Nenhum benefício disponível para resgate", "暂无启用的条目": "Nenhuma entrada ativada", "暂无启用的条目 · 点此添加": "Nenhum agendamento habilitado · clique para adicionar", "暂无月度赠送记录": "Nenhum registro de presente mensal", "暂无活动": "Nenhuma campanha ativa", "最近执行:{time}": "Última execução: {time}", "最近结果:成功 {n} · 保活 {active} · 失败 {failed}": "Último resultado: {n} sucessos · {active} ativas · {failed} falhas", "月度赠送": "Presentes mensais", "有平台到点待执行": "Há plataformas aguardando execução", "有未保存的改动": "Alterações não salvas", "未勾选提供商": "Nenhum provedor selecionado", "未完成,请查看签到记录": "Não concluído. Consulte os registros de check-in.", "未开启": "Desativado", "未开通": "Não ativado", "未执行开通,请查询套餐状态查看原因": "A ativação não foi executada. Consulte o estado do plano para ver o motivo.", "未解锁": "Bloqueado", "未领养(领养需先完成当日对话量)": "Não adotado (a adoção exige cumprir a cota diária de conversas primeiro)", "未领取": "Não resgatado", "本地台账里今天还没领过;活动期内每天发一份新套餐": "O registro local ainda não tem resgate nenhum hoje; um novo plano é emitido todo dia durante o evento", "本地台账里今天(北京时间)领过的套餐:{plans}": "Planos resgatados hoje (horário de Pequim) conforme o registro local: {plans}", "本次签到结果的记录时间:{time}(本机时区)": "Horário de registro deste resultado de check-in: {time} (fuso horário local)", "本次自动领取未完成验证,请在套餐明细中手动领取": "A verificação deste resgate automático não foi concluída. Faça o resgate manualmente nos detalhes do plano.", "本轮已跳过:{reason}": "Esta execução foi ignorada: {reason}", "权益兑换成功,重新查询可查看最新记录": "Benefício resgatado. Consulte novamente para ver os registros atualizados.", "权益兑换未成功": "Falha ao resgatar o benefício", "权益兑换码 / 订单号": "Código de resgate / número do pedido", "条启用": "habilitado(s)", "来源说明中的时刻是定时条目的名称或基准时刻,不是本次执行时间": "O horário na descrição da origem é o nome ou horário base do agendamento, não o horário desta execução", "果办免费体验套餐": "Plano de teste gratuito do OfficeAce", "果办套餐接口不可用,请更新主程序和提供商插件": "A API de planos do OfficeAce está indisponível. Atualize o aplicativo principal e o plugin do provedor.", "果办服务声明": "Termos de serviço do OfficeAce", "查看平台": "Ver plataformas", "查看签到记录": "Ver registros de check-in", "查询于 {time}": "Consultado em {time}", "查询任务": "Consultar tarefas", "查询任务树并一键点亮 / 领奖(含开学季与猫猫旅行)": "Consulte a árvore de tarefas e acenda / resgate com um clique (inclui volta às aulas e viagem do gato)", "查询只读取套餐状态,点击开通后才会执行": "A consulta apenas lê o estado do plano. A ativação só é executada ao clicar em Ativar.", "查询失败:{error}": "Falha na consulta: {error}", "查询套餐": "Consultar plano", "查询活动": "Consultar campanhas", "查询结果": "Consultar resultado", "桌面端每日积分链路": "Fluxo diário de pontos do aplicativo desktop", "次数按账号每天单独计算:重试到上限的账号今天不再重试,明天自动重置。": "O limite é contado por conta e por dia: uma conta que o atinge não é tentada novamente hoje e é redefinida amanhã.", "正在为本次领取验证;若出现滑块,请手动完成": "Verificando este resgate. Se aparecer um controle deslizante, conclua-o manualmente.", "正在读取 UMID 组件状态…": "Carregando o status do componente UMID…", "正在读取定时签到数据…": "Carregando dados de agendamento…", "正在读取签到数据…": "Lendo os dados de check-in…", "每个签到计划对应一组补签设置": "Cada agendamento tem suas próprias opções de reposição", "每个账号每天在区间内随机执行一次;开始与结束相同则按固定时刻执行。": "Cada conta executa uma vez por dia em um horário aleatório dentro da janela. Início e fim iguais significam execução em horário fixo.", "每天 {time}": "Todos os dias às {time}", "每天 {time} · {scope}": "Diário {time} · {scope}", "每天定点巡检 · 一趟推进一步 · 与签到排程互相独立": "Inspeção diária em horários fixos · um passo por execução · independente da agenda de check-in", "每天执行": "Executa diariamente", "每天按这里的时刻自动巡检一遍 WorkBuddy 国内版账号:没有猫就领养、在家就派出、到站就领奖。一趟只推进一步,所以建议留两个时刻(早上派出、晚上领奖)。企业版与国际版账号自动跳过。": "Inspeciona automaticamente todas as contas WorkBuddy China nos horários definidos: adota um gato se não houver, envia quando ocioso e resgata a recompensa ao chegar. Cada execução avança um passo, então recomenda-se dois horários (enviar pela manhã, resgatar à noite). Contas empresariais e internacionais são ignoradas automaticamente.", "每天时刻": "Horário diário", "每天自动执行": "Executa automaticamente todos os dias", "每天补查一次": "Uma verificação de reposição por dia", "每天补查一轮,只处理今天未签到的账号。": "Verifica uma vez ao dia, apenas contas sem check-in hoje.", "每执行一次签到 · 每个账号一条明细 · 结果与收益以后端落账为准": "Uma linha por conta a cada execução · resultados e ganhos conforme registrado pelo backend", "每日活动签到(+100 积分,已领则中性提示)": "Check-in de atividade diária (+100 créditos; aviso neutro se já resgatado)", "每日活跃任务 · 网页会话保活点亮日活,领取才加积分 · 两者可分开执行": "Tarefas de atividade diária · uma conversa no canal web acende a atividade diária, só o resgate adiciona pontos · os dois podem ser executados separadamente", "每日登录积分 · 顺带领取会员活动 · 访客账号无积分体系(跳过)": "Pontos de login diário · resgata atividades de membro junto · contas de visitante não têm sistema de pontos (ignorado)", "每日福利 · 领取 → 确认 → 回读核实 · 按北京时间自然日重置": "Benefício diário · resgatar → confirmar → reler para verificar · redefinido no dia natural (horário de Pequim)", "每日签到": "Check-in diário", "每日签到积分": "Créditos de check-in diário", "每条条目各有时刻与范围 · 各自当天去重 · 错过时点开机自动补签": "Cada agendamento tem horário e escopo próprios · deduplicação diária por item · execuções perdidas são compensadas ao iniciar", "每账号一条明细": "Uma entrada por conta", "每账号一条明细 · 点此查看「签到记录」": "Uma linha por conta · abra \"Registros de check-in\"", "每账号每天最多重试(次)": "Máximo de tentativas por conta por dia", "没有专属时间的平台跟随默认时间;已有专属或自定义时间的平台不会被覆盖。": "Plataformas sem horário próprio seguem o padrão; horários específicos e personalizados são preservados.", "没有匹配的平台": "Nenhuma plataforma correspondente", "没有可执行账号": "Nenhuma conta elegível", "没有可签到的账号": "Nenhuma conta disponível para check-in", "没有可领套餐的账号(ZCode 未添加)。": "Nenhuma conta com planos resgatáveis (ZCode não adicionado).", "没有可领福利的账号(CodeArts / ZCode 未添加)。": "Nenhuma conta com benefícios para resgatar (CodeArts / ZCode não foram adicionados).", "没有支持成长任务的账号(需要 WorkBuddy 国内版)。": "Nenhuma conta suporta tarefas de crescimento (requer WorkBuddy CN).", "没有支持新手福利的账号": "Nenhuma conta suporta benefícios iniciais", "没有支持新手福利的账号 —— 目前有 Loomy、小浣熊、CodeArts 三家。": "Nenhuma conta suporta benefícios iniciais — atualmente Loomy, Raccoon e CodeArts.", "没有支持活动福利的账号,请添加账号并更新提供商插件。": "Nenhuma conta oferece recompensas de campanhas. Adicione uma conta e atualize o plugin do provedor.", "没有符合条件的账号。": "Nenhuma conta corresponde ao filtro atual.", "没有符合筛选条件的签到记录": "Nenhum registro de check-in corresponde aos filtros", "没有需要执行的任务": "Nada para executar", "活动奖励领取成功": "Recompensa da campanha resgatada com sucesso", "活动尚未开始(上游接口未部署)": "A campanha ainda não começou (endpoint upstream não implantado)", "活动开始:{time}": "Início da campanha: {time}", "活动按自然日发新套餐,每天可领一次": "A campanha libera um novo plano por dia civil; um resgate por dia", "活动未开放或已结束,请重新查询": "A campanha ainda não começou ou já terminou. Consulte novamente.", "活动福利": "Recompensas de evento", "活动福利接口不可用,请更新网关后重试": "A API de recompensas de campanhas não está disponível. Atualize o gateway e tente novamente.", "活动窗口重试": "Tentativas de campanha", "活动窗口重试已关闭,等待窗口或活动下发的账号不会自动再试。": "A nova tentativa por janela está desativada; contas aguardando janela ou campanha não são tentadas automaticamente.", "活动领取未成功,请重新查询后再试": "A recompensa não foi resgatada. Consulte novamente antes de tentar outra vez.", "活动(campaign)领取 · 每天 10:00 刷新": "Resgate de eventos (campaign) · atualizado todos os dias às 10:00", "活跃上报与保活均未成功,且活动未开启": "Tanto o relatório de atividade quanto o keep-alive falharam, e a campanha não está ativa", "活跃上报完成,但保活未成功且活动未开启": "Atividade reportada, mas o keep-alive falhou e a campanha não está ativa", "活跃上报完成,但活动未开启": "Atividade reportada, mas a campanha não está ativa", "活跃上报成功": "Atividade reportada com sucesso", "活跃保活失败": "Falha ao manter a atividade", "活跃保活完成": "Atividade mantida", "活跃保活完成,但活动未开启": "Atividade mantida, mas o evento não está aberto", "活跃保活完成,但活跃上报失败且活动未开启": "Keep-alive concluído, mas o relatório de atividade falhou e a campanha não está ativa", "添加条目": "Adicionar agendamento", "添加模型": "Adicionar modelo", "清单为空 —— 保存后恢复缺省链": "A lista está vazia — salvar restaura a cadeia padrão", "清单里已经有「{name}」": "A lista já contém \"{name}\"", "清空失败:{error}": "Falha ao limpar: {error}", "清空签到记录": "Limpar registros de check-in", "滚动 24 小时签到;按插件返回的时间等待下一次领取,不以自然日重复领取": "Check-in em janela móvel de 24 horas. Aguarda o próximo horário informado pelo plugin, sem repetir o resgate à meia-noite.", "点「套餐明细」看领到了哪几份、什么时候生效;活动期内每天可再领": "Clique em \"Detalhes dos planos\" para ver quais você recebeu e quando entram em vigor; dá para resgatar de novo todo dia durante o evento", "点击行展开账号明细 · 单账号签到不受范围限制": "Clique na linha para expandir os detalhes das contas · o check-in individual não é limitado pelo escopo", "点进去查看任务并领取": "Toque para ver as tarefas e resgatar", "状态未确认": "Estado não confirmado", "独立链路 · 只提供手动入口 · 不进自动签到": "Fluxo independente · apenas entrada manual · não participa do check-in automático", "猫猫旅行": "Viagem do gato", "猫猫旅行失败:{error}": "Falha na viagem do gato: {error}", "猫猫旅行失败:{message}": "Falha na viagem do gato: {message}", "猫猫旅行定时排程": "Agenda da viagem do gato", "猫猫旅行:{message}": "Viagem do gato: {message}", "猫猫旅行:{n} 个动作,+{credit} 积分": "Viagem do gato: {n} ações, +{credit} créditos", "猫猫旅行:{n} 个动作,+{credit} 积分,{failed} 个失败": "Viagem do gato: {n} ações, +{credit} créditos, {failed} falhas", "用免费模型与网页会话维持账号活跃 · 不领取奖励": "Manter a conta ativa com modelos gratuitos e uma conversa no canal web · sem resgatar recompensas", "由官方按期自动发放,这里只展示记录,不重复领取。": "Distribuídos automaticamente pelo serviço oficial nas datas previstas. Aqui os registros são somente leitura, sem resgates duplicados.", "确定删除「{name}」?删除后到点不再执行。": "Excluir \"{name}\"? Ele não será mais executado no horário agendado.", "确定删除「{name}」?对应的定时补签与活动重试也会一并移除,签到记录保留。": "Excluir “{name}”? A reposição e as tentativas vinculadas também serão removidas. Os registros serão mantidos.", "确定清空全部签到记录?清空后无法恢复。": "Limpar todos os registros de check-in? Isso não pode ser desfeito.", "确定清空当前筛选出的签到记录?清空后无法恢复。": "Limpar os registros de check-in filtrados? Isso não pode ser desfeito.", "确认兑换": "Confirmar resgate", "确认把这份权益兑换到当前账号?兑换后可能无法撤销。": "Resgatar este benefício na conta atual? Talvez não seja possível desfazer.", "移除 {name}": "Remover {name}", "立即全部签到": "Fazer check-in de todos agora", "立即巡检全部": "Inspecionar tudo agora", "立即执行「{name}」会手动签到整个计划范围,不等待平台时点。窗口未开的平台可能仍无法领取。": "Executar “{name}” agora fará check-in em todo o escopo sem esperar os horários. Janelas fechadas ainda podem impedir resgates.", "等待时点": "Aguardando horário", "等待签到区间": "Aguardando a janela de check-in", "等待签到时间": "Aguardando horário de check-in", "签到": "Check-in", "签到与补签计划已暂停,配置仍保留;手动执行不受总开关影响。": "Check-in e reposição estão pausados, com as configurações mantidas. A opção principal não afeta execuções manuais.", "签到中…": "Fazendo check-in…", "签到中心分区": "Seções do centro de check-in", "签到功能分类": "Categorias de check-in", "签到区间": "Janela de check-in", "签到失败:{error}": "Falha no check-in: {error}", "签到完成:{succeeded}/{total} 成功{active},{failed} 个失败": "Check-in concluído: {succeeded}/{total} com sucesso{active}; {failed} com falha", "签到完成:{success}/{total} 成功,保活 {active},失败 {failed}": "Check-in concluído: {success}/{total} com sucesso, {active} mantidas ativas, {failed} com falha", "签到成功": "Check-in bem-sucedido", "签到提供商": "Provedores de check-in", "签到日期按北京时间计算": "A data do check-in usa o horário de Pequim", "签到时间": "Horário de check-in", "签到类型": "Tipo de check-in", "签到范围": "Escopo do check-in", "签到触发时刻": "Horário de disparo do check-in", "签到计划": "Agendamentos de check-in", "签到记录": "Registros de check-in", "签到记录时间范围": "Período dos registros de check-in", "签到记录表": "Tabela de registros de check-in", "管理定时签到": "Gerenciar check-ins agendados", "累计签到记录": "Total de registros de check-in", "结束时间不能早于开始时间,暂不支持跨天区间。": "O fim não pode ser anterior ao início. Janelas que atravessam a meia-noite ainda não são suportadas.", "结算于 {time}": "Liquidado em {time}", "编辑签到计划": "Editar agendamento de check-in", "缺少套餐开通凭证,请通过果办网页登录补齐授权": "As credenciais para ativar o plano estão ausentes. Entre no OfficeAce pelo login web para restaurar a autorização.", "缺少开通凭证": "Credenciais de ativação ausentes", "网关设备组件": "Componente de dispositivo do gateway", "能量 {n}": "Energia {n}", "腾讯每日签到接口 · 仅国内版": "Interface de check-in diário da Tencent · apenas edição da China", "自动巡检已暂停:{reason}": "A inspeção automática está pausada: {reason}", "自动执行已开启": "Execução automática ativada", "自动执行已暂停": "Execução automática pausada", "自动执行总开关": "Opção principal de execução automática", "自定义时间": "Horário personalizado", "至少勾一家才能保存(不勾等于这条条目不签到)": "Selecione ao menos um provedor para salvar (sem seleção, esta entrada não faz check-in)", "补签不早于": "Reposição não antes de", "补签不早于 {time}": "Reposição não antes de {time}", "补签单独设置,只检查今天还没有签到的账号。": "Configure a reposição separadamente; verifica apenas contas sem check-in hoje.", "补签取「主签到区间结束加等待间隔」与「补签不早于」中较晚的时刻,不会提前补签尚未轮到的账号。": "A reposição usa o horário mais tarde entre o fim da janela principal mais a espera e o limite mínimo de reposição. Contas que ainda aguardam sua vez não são processadas antes da hora.", "补签在主签到区间结束后执行,只补未签到账号。": "A reposição roda após a janela principal e só processa contas sem check-in.", "补签已关闭": "Reposição desativada", "补签已关闭,不影响主签到;开启后会自动生成各平台的补签安排。": "A reposição está desativada, sem afetar o check-in principal. Ao ativar, os horários serão gerados para cada plataforma.", "补签已开启": "Reposição ativada", "补签检查": "Verificação de reposição", "补签计划": "Agendamentos de reposição", "触发会话活跃并观测积分变化;未观测到新发放时不会标为已签到": "Ativa a sessão e observa a variação dos pontos. Sem uma nova concessão observada, não marca o check-in como concluído.", "计划名称": "Nome do agendamento", "订单 {order} · 第 {period} 期": "Pedido {order} · Período {period}", "设备校验未就绪,部分活动可能不显示:{reason}": "A verificação do dispositivo não está disponível e algumas campanhas podem ficar ocultas: {reason}", "设置各平台每天的签到时间,按窗口分批执行。": "Defina o horário diário de cada plataforma e execute em grupos por janela.", "设置定时补签": "Configurar reposição agendada", "设置每天的签到区间,各账号在区间内随机错峰执行。": "Defina a janela diária de check-in. As contas executam em horários aleatórios distribuídos dentro dela.", "设置活动窗口重试": "Configurar tentativas de campanha", "设置补签": "Configurar reposição", "该权益已兑换,无需重复提交": "Este benefício já foi resgatado. Não envie novamente.", "该活动已领取,无需重复领取": "Esta recompensa já foi resgatada. Não é necessário resgatá-la novamente.", "该账号当前没有可领取的限时活动": "Não há recompensas por tempo limitado disponíveis para esta conta no momento", "请填写合法区间,结束不早于开始,并至少选择一家提供商。": "Informe uma janela válida, com o fim não anterior ao início, e selecione pelo menos um provedor.", "请检查时间、间隔和次数是否在允许范围内。": "Verifique se horário, intervalo e quantidade estão nos limites permitidos.", "请至少选择一个签到平台": "Selecione ao menos uma plataforma de check-in", "读取定时签到数据失败:{error}": "Falha ao carregar dados de agendamento: {error}", "读取签到数据失败:{error}": "Falha ao ler os dados de check-in: {error}", "读取签到记录失败:{error}": "Falha ao carregar registros de check-in: {error}", "调整重试": "Ajustar tentativas", "豆包工作今日领取仍未确认,请前往官方客户端查看;再次点击仅查询结果,不会重复领取": "O resgate de hoje do Doubao Work ainda não foi confirmado. Consulte o aplicativo oficial; clicar novamente apenas consulta o resultado, sem repetir o resgate.", "豆包工作签到奖励已领取,已回查确认": "A recompensa de check-in do Doubao Work foi resgatada e verificada.", "豆包工作领取结果待确认,稍后只查询结果,不会重复提交领取": "O resgate do Doubao Work aguarda confirmação. As próximas tentativas apenas consultarão o resultado, sem reenviar o resgate.", "账号未使用官方果办网关地址,无法在此开通免费套餐": "Esta conta não usa um endereço oficial do gateway OfficeAce. O plano gratuito não pode ser ativado aqui.", "跟随默认时间": "Segue o horário padrão", "跳过 {n}": "{n} ignorados", "运营活动交付(领取 → 确认 → 回读核实)· 领的是套餐赠送积分": "Entrega de eventos oficiais (resgatar → confirmar → reler para verificar) · resgate dos pontos de bônus do plano", "还有 {n} 个平台未执行": "{n} plataformas ainda não executadas", "还没执行过": "Ainda não executado", "还没有可签到的提供商。签到能力随提供商插件包提供,装好并添加账号后这里就会出现。": "Ainda não há provedores para check-in. O suporte a check-in vem com os pacotes de plugin de provedor; ele aparece aqui depois que um pacote é instalado e uma conta é adicionada.", "还没有定时条目 —— 点「添加条目」建一条,或到「签到中心」手动签到。": "Nenhum agendamento ainda — clique em \"Adicionar agendamento\" para criar um, ou faça check-in manualmente no \"Centro de check-in\".", "还没有签到计划,先选择平台和默认时间。": "Ainda não há agendamentos. Escolha as plataformas e o horário padrão.", "还没有签到记录 —— 手动签到或等定时条目执行后,明细会出现在这里。": "Nenhum registro de check-in ainda — os detalhes aparecem aqui após um check-in manual ou uma execução agendada.", "还没有记录": "Ainda sem registros", "这个账号没有新手任务": "Esta conta não tem tarefas iniciais", "这里只修改定时签到;补签和活动重试配置保持原样,在「定时补签」页单独设置。": "Aqui apenas o check-in agendado é editado. Reposição e tentativas são preservadas e configuradas na aba de reposição.", "这里只管理签到时间;补签与活动窗口重试在独立页设置。": "Aqui são gerenciados apenas horários de check-in. Reposição e tentativas têm uma página separada.", "连登 {n} 天": "Sequência de {n} dias", "选填": "Opcional", "选择 {name}": "Selecionar {name}", "选择平台后显示实际签到时间": "Selecione plataformas para ver os horários reais", "部分": "Parcial", "重新查询": "Consultar novamente", "重新检查": "Verificar novamente", "重签": "Refazer check-in", "重试": "Tentar de novo", "重试关闭": "Tentativas desativadas", "重试已暂停": "Tentativas pausadas", "重试开启": "Tentativas ativadas", "重试间隔(分钟)": "Intervalo entre tentativas (minutos)", "间隔 {gap} 分钟 · 每账号每天最多重试 {limit} 次": "Intervalo de {gap} minutos · Até {limit} tentativas por conta por dia", "间隔填 0 会关闭活动窗口重试;定时补签仍至少等待 1 分钟,不会一起关闭。": "Intervalo 0 desativa as tentativas de campanha. A reposição continua ativa, com espera mínima de 1 minuto.", "限时体验套餐 · 领取需滑块验证码 · 逐份查看与领取": "Plano de teste por tempo limitado · o resgate exige CAPTCHA de arrastar · veja e resgate um a um", "限时体验套餐(start-plan),活动期内每天一份 · 领取需滑块验证码": "Plano de teste por tempo limitado (start-plan), um por dia durante o evento · o resgate exige captcha deslizante", "限时活动与体验套餐 · 查询后逐项领取 · 不影响每日签到": "Recompensas por tempo limitado e planos de teste · Consulte e resgate individualmente · Separado do check-in diário", "随机签到开始": "Início do check-in aleatório", "随机签到结束": "Fim do check-in aleatório", "随签到计划暂停": "Pausado com o agendamento de check-in", "需人工处理": "Ação manual necessária", "需真实操作": "Requer ação real", "需要人工验证": "Verificação humana necessária", "非活动期": "Evento inativo", "项": "itens", "预计发放:{time}": "Distribuição prevista: {time}", "领取": "Resgatar", "领取中": "Resgatando", "领取中…": "Resgatando…", "领取免费 CodingPlan(按需:套餐有效时只回读额度)": "Resgatar o CodingPlan gratuito (sob demanda: com o plano ativo apenas lê a cota)", "领取后 {days} 天有效": "Válido por {days} dias após o resgate", "领取失败": "Falha no resgate", "领取失败:{error}": "Falha no resgate: {error}", "领取奖励": "Resgatar recompensa", "领取截止:{time}": "Prazo de resgate: {time}", "领取时间:{time}": "Resgatado em: {time}", "领取结果待确认": "Resgate aguardando confirmação", "领取结果待确认,请稍后查询;不会重复提交领取": "O resgate aguarda confirmação. Consulte novamente mais tarde; nenhuma solicitação duplicada será enviada.", "领取被拒绝": "Resgate recusado", "领取通常需要过一次滑块验证;活动套餐多为当天稍晚生效,领取后可在桌面端「账号」里看套餐明细。": "O resgate geralmente exige passar por uma verificação de slider. Os planos de campanha costumam entrar em vigor mais tarde no mesmo dia; após resgatar, veja os detalhes em Contas no desktop.", "领取验证任务已结束,请到套餐明细查看结果": "Esta tarefa de verificação terminou. Consulte os detalhes do plano para ver o resultado.", "额度到期:{time}": "Os créditos expiram em: {time}", "验证凭据正在提交,领取结果请查看签到记录": "Enviando a verificação. Consulte o histórico de check-in para ver o resultado do resgate.", "验证提交结果未确认,请查看签到记录,勿重复领取": "O envio da verificação não foi confirmado. Consulte o histórico de check-in e não repita o resgate.", "默认 {time} · {n} 个平台 · {groups} 组签到时间": "Padrão {time} · {n} plataformas · {groups} grupos de horários", "默认使用第一把可用 API Key,想换就在上面选一把": "Usa a primeira API Key disponível por padrão; selecione outra acima para alterar.", "默认签到时间": "Horário padrão de check-in", "(共 {n} 个账号)": "({n} contas no total)", "(能量 / 连登读数本次未取到)": "(Leituras de energia / sequência indisponíveis desta vez)", ",日活保活 {n} 个": ", {n} mantidas ativas", " 字段": ".", " 的 ": ", no campo ", "{enabled} / {total} 个已开启": "{enabled} / {total} habilitadas", "{name}开关": "Interruptor de {name}", "{name}间隔": "Intervalo de {name}", "{name}间隔必须是 {min}–{max} 分钟的整数": "O intervalo de {name} deve ser um número inteiro entre {min} e {max} minutos", "{n} 秒后": "em {n} segundos", "✅ {task}:{summary}": "✅ {task}: {summary}", "✅ 已更新「{label}」": "✅ “{label}” atualizado", "上次执行 {time}": "Última execução às {time}", "上次执行 {time}({result})": "Última execução às {time} ({result})", "上次执行中断,没有完整结果;请核对账号状态": "A execução anterior foi interrompida e não há resultados completos. Confira o status das contas.", "下次执行 {time}": "Próxima execução: {time}", "下次执行 {time}({relative})": "Próxima execução às {time} ({relative})", "仅维护过期或即将过期的凭证": "Somente credenciais expiradas ou próximas do vencimento são mantidas", "仅记录状态与结果,不展示密钥或令牌。": "Somente o status e os resultados são registrados; chaves e tokens não são exibidos.", "仅重试失败项": "Repetir apenas itens com falha", "仅重试这一项": "Repetir apenas este item", "任务正在执行中,请稍候": "A tarefa já está em andamento. Aguarde.", "任务清单": "Lista de tarefas", "任务配置保存在 ": "As configurações das tarefas ficam em ", "停留在「报表」页时按此间隔重新拉取统计数据;页面不可见时不请求。": "Enquanto você permanece na página “Relatórios”, busca novamente os dados estatísticos neste intervalo; nenhuma requisição é feita quando a página não está visível.", "停留在「日志」页时按此间隔重新拉取系统事件;页面不可见时不请求。": "Enquanto você permanece na página “Logs”, busca novamente os eventos do sistema neste intervalo; nenhuma requisição é feita quando a página não está visível.", "停留在「请求日志」页时按此间隔重新拉取请求日志;页面不可见时不请求。": "Enquanto você permanece na página “Logs de requisições”, busca novamente os logs de requisições neste intervalo; nenhuma requisição é feita quando a página não está visível.", "全部触发方式": "Todas as origens", "全部跳过": "Todos ignorados", "共 {n} 次执行": "{n} execuções no total", "关闭自动维护不影响手动执行,也不影响对话请求所需的按需续期。": "Desativar a manutenção automática não afeta execuções manuais nem a renovação de credenciais sob demanda para conversas.", "冷却中,{relative}重试": "Em cooldown; nova tentativa {relative}", "冷却至 {time}": "Em espera até {time}", "凭证变化": "Alterações nas credenciais", "凭证已更新": "Credenciais atualizadas", "凭证未过期或临期": "As credenciais não expiraram nem estão próximas do vencimento", "凭证维护": "Manutenção de credenciais", "凭证自动维护": "Manutenção automática de credenciais", "分钟执行一次": "minutos por execução", "刚刚已执行,请稍后重试": "Esta tarefa acabou de ser executada. Tente novamente em instantes.", "刷新前有效期": "Validade antes da renovação", "刷新后有效期": "Validade após a renovação", "刷新记录": "Atualizar registros", "即将执行": "Prestes a executar", "原因 / 说明": "Motivo / Observações", "去账号页处理": "Abrir conta", "只刷新过期或即将过期的账号凭证": "Renova apenas credenciais de contas expiradas ou próximas do vencimento", "可填 {min}–{max}": "Permitido: {min}–{max}", "可填 {min}–{max} {unit}(默认 {def} {unit})": "Intervalo aceito: {min}–{max} {unit} (padrão: {def} {unit})", "固定模型清单": "Lista de modelos fixa", "失败重试": "Nova tentativa de itens com falha", "定时任务已刷新": "Tarefas agendadas atualizadas", "定时查询积分": "Consulta agendada de pontos", "定期向 GitHub 查询最新发布版本,默认每 20 分钟一次。检查结果、排期和限流冷却跨重启保留;手动检查也会合并重复请求并遵守冷却。开关与间隔在「软件更新」面板的「更新设置」弹窗里配置(定时任务页不再渲染这一条)。": "Consulta periodicamente o GitHub em busca da versão mais recente publicada, por padrão a cada 20 minutos. O resultado da verificação, o agendamento e o cooldown de rate limit são mantidos após reiniciar; a verificação manual também agrupa requisições repetidas e respeita o cooldown. O interruptor e o intervalo são configurados no diálogo “Configurações de atualização” do painel “Atualização do software” (esta linha não é mais exibida na página de tarefas agendadas).", "定期拉取最新模型清单,重启沿用排期与缓存。客户端读取模型列表的后台刷新也遵守本任务开关、间隔和失败冷却;手动获取模型可提前刷新。": "Busca periodicamente o catálogo de modelos mais recente; após reiniciar, mantém o agendamento e o cache. A atualização em segundo plano acionada quando o cliente lê a lista de modelos também respeita o interruptor, o intervalo e o cooldown de falhas desta tarefa; obter modelos manualmente permite atualizar antes.", "定期拉取最新模型清单,重启沿用排期与缓存。客户端读取模型列表的后台刷新也遵守本任务开关、间隔和失败冷却;手动获取模型可提前刷新。同一轮顺带刷新 models.dev 模型元数据(能力位与思考档位,可在设置页单独关闭)。": "Busca periodicamente o catálogo de modelos mais recente; após reiniciar, mantém o agendamento e o cache. A atualização em segundo plano acionada quando o cliente lê a lista de modelos também respeita o interruptor, o intervalo e o cooldown de falhas desta tarefa; obter modelos manualmente permite atualizar antes. A mesma rodada também atualiza os metadados de modelos do models.dev (sinalizadores de capacidade e níveis de raciocínio, que podem ser desativados separadamente na página de configurações).", "定期获取各提供商的最新模型清单": "Obtém periodicamente a lista mais recente de modelos de cada provedor", "定期遍历账号,只刷新已过期或临期的凭证。重启后沿用上次排期,失败账号在冷却后重试;转发需要的按需续期不受此开关影响。": "Percorre periodicamente as contas e atualiza apenas as credenciais expiradas ou próximas do vencimento. Após reiniciar, mantém o agendamento anterior; contas com falha são repetidas após o cooldown. As renovações sob demanda exigidas pelo encaminhamento não são afetadas por este interruptor.", "客户端触发": "Acionado pelo cliente", "尚未执行维护": "Ainda não executado", "尚未执行维护,自动或手动执行后会显示结果": "Nenhuma manutenção foi executada. Os resultados aparecerão após uma execução automática ou manual.", "已在设置里关闭 models.dev 模型元数据": "Os metadados do models.dev estão desativados nas configurações", "已执行": "Executado", "已更新 {n} 条": "{n} entradas atualizadas", "已续期并确认凭证更新": "Credenciais renovadas e atualização confirmada", "已获取最新模型目录": "Catálogo de modelos mais recente obtido", "建议重试时间": "Horário sugerido para nova tentativa", "当前没有可用的目录账号": "Nenhuma conta disponível para obter o catálogo", "成功提供商": "Provedores atualizados", "成功账号": "Contas renovadas", "手动触发": "Manual", "执行中断": "Interrompida", "执行中断,结果可能已部分生效,请先核对账号状态": "A execução foi interrompida. Algumas alterações podem ter sido aplicadas; confira primeiro o status das contas.", "执行失败:{reason}": "Falha na execução: {reason}", "执行时的结果快照,不随账号后续变化而改变": "Registro do resultado desta execução, sem alterações posteriores da conta", "执行时间": "Data e hora", "执行明细": "Detalhes da execução", "执行汇总": "Resumo da execução", "执行间隔(分钟)": "Intervalo (minutos)", "报表自动刷新": "Atualização automática de relatórios", "指定账号不属于该提供商、未启用或没有可用凭证": "A conta escolhida pertence a outro provedor, está desativada ou não tem credenciais utilizáveis", "提供商当前不可用,未执行目录更新": "O provedor está indisponível; o catálogo não foi atualizado", "搜索账号或提供商": "Buscar contas ou provedores", "收起明细": "Ocultar detalhes", "改动立即生效,不需要重启程序": "As alterações entram em vigor imediatamente; não é preciso reiniciar o programa", "无失败项": "Sem falhas", "日志页自动刷新": "Atualização automática da página de logs", "明细状态筛选": "Filtrar status dos itens", "暂无维护记录,首次执行后会自动保存": "Ainda não há registros de manutenção. A primeira execução será salva automaticamente.", "暂无记录": "Sem registros", "最近一次": "Última execução", "有失败项": "Com falhas", "有效期已延长": "Validade prorrogada", "未使用账号": "Nenhuma conta utilizada", "未变更": "Sem alterações", "未注册的提供商": "Provedor não registrado", "未返回失败原因": "Nenhum motivo de falha foi retornado", "本次无需更新,沿用现有状态": "Nenhuma atualização necessária; mantendo o estado atual", "本轮共 {n} 项": "{n} itens nesta execução", "本轮没有符合条件的项目": "Nenhum item correspondente nesta execução", "查看凭证与模型目录的每次维护结果,失败和跳过都有原因": "Confira cada manutenção de credenciais e catálogos, com os motivos de falhas e itens ignorados", "查看原因": "Ver motivo", "查看明细": "Ver detalhes", "查看详情": "Ver detalhes", "模型基础信息": "Metadados dos modelos", "模型目录": "Catálogo de modelos", "模型目录刷新": "Atualização do catálogo de modelos", "模型目录更新": "Atualização do catálogo de modelos", "正在加载定时任务…": "Carregando tarefas agendadas…", "正在读取维护记录…": "Carregando registros de manutenção…", "此前仅有汇总,尚无逐项记录": "Antes, apenas o resumo era registrado; não há detalhes por item", "每 {n} 分钟": "A cada {n} minutos", "没有可显示的定时任务。后端未返回任务清单,请确认网关正在运行。": "Nenhuma tarefa agendada para exibir. O backend não retornou a lista de tarefas; verifique se o gateway está em execução.", "没有符合筛选条件的维护记录": "Nenhum registro de manutenção corresponde aos filtros", "沿用缓存或当前没有可用的目录来源": "Usando dados em cache, ou nenhuma fonte de catálogo está disponível", "沿用缓存,尚未到刷新时间": "Usando o cache; ainda não é hora de atualizar", "状态每 20 秒自动同步": "Status sincronizado automaticamente a cada 20 segundos", "由页面按间隔自动刷新": "Atualizada automaticamente pela página conforme o intervalo", "登录授权已失效,需要重新登录该账号": "A autorização de acesso expirou. Entre novamente nesta conta.", "目录最近更新时间": "Última atualização do catálogo", "立即执行": "Executar agora", "立即检查": "Verificar agora", "维护已完成,结果已保存": "Manutenção concluída e resultados salvos", "维护已开始,结果会自动更新,可离开此页": "Manutenção iniciada. Os resultados serão atualizados automaticamente; você pode sair desta página.", "维护已执行,但完整结果未能保存;请先核对账号状态,不要反复执行": "A manutenção foi executada, mas os resultados completos não foram salvos. Confira as contas antes de executar novamente.", "维护已结束,有失败项,请查看明细": "A manutenção terminou com falhas. Confira os detalhes.", "维护接口不可用,请更新网关并重新打开页面": "A API de manutenção está indisponível. Atualize o gateway e reabra esta página.", "维护正在执行,完成后会显示逐项结果": "A manutenção está em andamento. Os resultados por item aparecerão ao terminar.", "维护类型": "Tipo de manutenção", "维护记录保留 {days} 天,最多 {count} 次;仅保存结果,不保存密钥或令牌。": "Os registros são mantidos por {days} dias, até {count} execuções. Somente os resultados são salvos, nunca chaves ou tokens.", "维护设置": "Configurações de manutenção", "维护设置未能保存到数据库,请检查磁盘空间和权限": "Não foi possível salvar as configurações no banco de dados. Verifique o espaço em disco e as permissões.", "自动和手动维护,统一在这里查看": "Manutenção automática e manual em um só lugar", "自动维护与手动执行共用同一份结果记录": "Execuções automáticas e manuais compartilham o mesmo histórico de resultados", "自动维护已关闭": "Manutenção automática desativada", "自动触发": "Automático", "触发方式": "Origem", "该提供商不支持主动刷新凭证(没有续期手段)": "Este provedor não oferece renovação de credenciais", "该提供商使用固定模型清单": "Este provedor usa uma lista fixa de modelos", "该次执行未完成,没有完整明细": "Esta execução não terminou; os detalhes completos não estão disponíveis", "请求日志页自动刷新": "Atualização automática da página de logs de requisições", "账号已不存在,未执行维护": "A conta não existe mais; a manutenção não foi executada", "软件版本检查": "Verificação de versão", "还没有执行记录": "Ainda sem registros de execução", "逐个提供商更新模型目录,模型基础信息单独列出结果": "Atualiza o catálogo de cada provedor; os resultados dos metadados são exibidos separadamente", "部分失败": "Falha parcial", "部分设置可能已保存,请核对后重试:{reason}": "Algumas configurações podem ter sido salvas. Confira antes de tentar novamente: {reason}", "重新加载": "Recarregar", "重试生成新记录,不覆盖本次结果": "Novas tentativas criam outro registro sem substituir este resultado", "间隔不能为空(可填 {min}–{max} {unit})": "O intervalo não pode ficar vazio (aceita {min}–{max} {unit})", "间隔必须在 {min}–{max} {unit} 之间(当前填的是 {value})": "O intervalo deve estar entre {min}–{max} {unit} (valor atual: {value})", "间隔必须是整数": "O intervalo deve ser um número inteiro", "页面自动刷新": "Atualização automática da página", "debug 及以上": "debug e acima", "info 及以上": "info e acima", "warn 及以上": "warn e acima", "{matched} / {total} 条": "{matched} / {total} registros", "{minutes} 分 {seconds} 秒": "{minutes} min {seconds} s", "{n} 个启动失败": "{n} com falha ao iniciar", "{n} 个已就绪": "{n} prontos", "{n} 个等待恢复": "{n} aguardando recuperação", "{n} 条": "{n} registros", "{n} 毫秒": "{n} ms", "✅ 已导出 {count} 条日志到 {file}": "✅ {count} logs exportados para {file}", "上游": "Upstream", "上游接口请求": "Requisição à API upstream", "事件摘要": "Resumo do evento", "事件日志时间范围": "Período dos logs de eventos", "事件详情": "Detalhes do evento", "仅 error": "somente error", "仅显示调试记录,供排查问题使用。": "Mostra apenas registros de debug para diagnóstico de problemas.", "仅错误": "Somente erros", "余额查询失败": "Falha na consulta de saldo", "余额查询完成": "Consulta de saldo concluída", "余额查询未配置": "Consulta de saldo não configurada", "信息": "Info", "信息及以上": "Informações e acima", "全部事件": "Todos os eventos", "全部分类": "Todas as categorias", "全部级别": "Todos os níveis", "共享运行环境尚未就绪,不代表这个插件本身损坏。请在插件页查看加载诊断。": "O ambiente de execução compartilhado ainda não está pronto; isso não significa que o plugin esteja danificado. Consulte os diagnósticos de carregamento na página Plugins.", "关联标识": "ID de correlação", "出站参数归一": "Normalização dos parâmetros de saída", "分类": "Categoria", "分页按折叠后的组数计算": "A paginação usa o número de grupos recolhidos", "加载插件": "Carregando plugin", "原始消息": "Mensagem original", "原始记录": "Registros brutos", "原始记录 {n} 条": "{n} registros brutos", "发生时间": "Horários das ocorrências", "各阶段耗时": "Tempo de cada etapa", "启动结果": "Resultados da inicialização", "启动超时": "Tempo de inicialização esgotado", "启动进程": "Iniciando processo", "处理建议": "Ação sugerida", "复制原始记录": "Copiar registros brutos", "复制失败": "Falha ao copiar", "复制当前筛选结果": "Copiar resultados filtrados", "复制本页原始记录": "Copiar registros brutos desta página", "导出": "Exportar", "导出当前筛选": "Exportar logs filtrados", "已复制 {n} 条日志": "{n} logs copiados", "已暂停刷新": "Atualização pausada", "恢复刷新": "Retomar atualização", "折叠重复日志": "Recolher logs repetidos", "按分类筛选": "Filtrar por categoria", "按最低级别筛选": "Filtrar por nível mínimo", "插件名称": "Nome do plugin", "插件启动失败": "Falha ao iniciar o plugin", "插件启动存在异常": "Alguns plugins não puderam iniciar", "插件启动完成,{n} 个已就绪": "Inicialização dos plugins concluída: {n} prontos", "插件启动超时": "Tempo de inicialização do plugin esgotado", "插件已就绪": "Plugin pronto", "插件已恢复运行": "O plugin voltou a funcionar", "插件暂不可用,等待运行环境恢复": "Plugin indisponível enquanto aguarda a recuperação do ambiente de execução", "插件暂时无法使用": "Plugin temporariamente indisponível", "插件未能就绪": "O plugin não ficou pronto", "插件未能正常停止": "O plugin não parou normalmente", "插件编号": "ID do plugin", "插件进程已退出": "O processo do plugin foi encerrado", "搜索关键字": "Pesquisar palavras-chave", "搜索插件、消息、提供商或账号": "Pesquisar plugins, mensagens, provedores ou contas", "搜索插件、消息、提供商或账号…": "Pesquisar plugins, mensagens, provedores ou contas…", "搜索消息、提供商或账号": "Pesquisar mensagens, provedores ou contas", "搜索消息、提供商或账号…": "Pesquisar mensagens, provedores ou contas…", "搜索消息关键词": "Pesquisar palavra-chave da mensagem", "搜索消息关键词…": "Pesquisar palavra-chave da mensagem…", "操作失败:{error}": "Falha na operação: {error}", "日志视图": "Visualização de logs", "日志详情": "Detalhes do log", "日志详情视图": "Visualização dos detalhes do log", "显示 {groups} 组 · 原始记录 {entries} 条": "{groups} grupos · {entries} registros brutos", "显示启动汇总和需要关注的事件;单个插件的正常启动记录在“全部事件”中。": "Mostra resumos de inicialização e eventos que precisam de atenção. Inicializações individuais bem-sucedidas ficam em Todos os eventos.", "显示所有已保留的事件;技术信息可在详情中查看。": "Mostra todos os eventos retidos. Abra os detalhes para consultar informações técnicas.", "暂停刷新": "Pausar atualização", "暂无日志": "Ainda não há logs", "暂无日志可导出": "Não há logs para exportar", "有 {n} 条新日志": "{n} novos logs", "服务": "Serviço", "未记录插件名称": "Nome do plugin não registrado", "本次启动超过等待时限。请在插件页查看加载诊断,确认后重新加载。": "A inicialização excedeu o tempo limite. Consulte os diagnósticos de carregamento na página Plugins antes de recarregar.", "查看日志详情:{message}": "Ver detalhes do log: {message}", "查看最新": "Ver mais recentes", "模型 {model}": "Modelo {model}", "次数": "Contagem", "正在加载日志…": "Carregando logs…", "没有符合条件的日志": "Nenhum log corresponde às condições", "没有符合筛选条件的日志": "Nenhum log corresponde aos filtros", "清空中…": "Limpando…", "清空当前筛选": "Limpar logs filtrados", "清空运行日志": "Limpar logs de execução", "状态码": "Código de status", "用时 {duration}": "Duração: {duration}", "登记提供商": "Registrando provedores", "相关功能暂不可用,原因见详情": "As funções relacionadas estão indisponíveis; veja o motivo nos detalhes", "确定清空全部运行日志?清空后无法恢复。": "Tem certeza de que deseja limpar todos os logs de execução? Isso não pode ser desfeito.", "确定清空当前筛选出的 {count} 条日志?清空后无法恢复。": "Tem certeza de que deseja limpar os {count} logs filtrados? Isso não pode ser desfeito.", "系统事件": "Eventos do sistema", "级别": "Nível", "结束阅读": "Encerrar leitura", "结果未确认": "Resultado não confirmado", "脱敏": "Mascaramento", "自动刷新": "Atualização automática", "自动刷新已关闭": "Atualização automática desativada", "自动签到": "Check-in automático", "补充系统消息": "Mensagem de sistema adicionada", "警告": "Aviso", "警告 {n}": "Avisos {n}", "警告及以上": "Avisos e erros", "计费接口请求": "Requisição à API de cobrança", "详细信息": "Informações detalhadas", "请在插件页查看加载诊断,确认原因后重新加载。": "Consulte os diagnósticos de carregamento na página Plugins e verifique a causa antes de recarregar.", "读取日志失败": "Falha ao carregar logs", "调试": "Debug", "调试 {n}": "Debug {n}", "调试详情": "Detalhes de debug", "调试采集未开启,仅显示已保留的记录。可在设置中开启调试模式。": "A coleta de debug está desativada. Apenas registros retidos são exibidos. Ative o modo debug nas Configurações para coletar novos registros.", "运行日志已清空": "Logs de execução limpos", "部分插件暂不可用。请在插件页查看异常插件的加载诊断。": "Alguns plugins estão indisponíveis. Abra a página Plugins para consultar os diagnósticos de carregamento.", "重要事件": "Eventos importantes", "错误": "Erro", "错误 {n}": "Erros {n}", "阅读模式": "Modo de leitura", "阅读模式,列表保持不动": "Modo de leitura: lista fixa", "附加数据": "Dados adicionais", " · {n} 进行中": " · {n} em andamento", " · 会话粘住": " · sessão presa", "

    无响应原文
    ": "
    Sem resposta original
    ", "
    无法解析响应内容
    ": "
    Não foi possível interpretar o conteúdo da resposta
    ", "
    无法解析请求体(不是含 messages 数组的 JSON)
    ": "
    Não foi possível interpretar o corpo da requisição (não é um JSON com um array messages)
    ", "
    无请求原文
    ": "
    Sem requisição original
    ", "
    调用工具 {name}
    ": "
    Chamada de ferramenta {name}
    ", "响应原文": "Resposta original", "思考过程": "Processo de raciocínio", "请求原文": "Requisição original", "HTTP {status},但响应体阶段出错": "HTTP {status}, mas o erro ocorreu na fase do corpo da resposta", "HTTP {status},但响应体阶段出错:见错误列": "HTTP {status}, mas o erro ocorreu na fase do corpo da resposta: ver a coluna Erro", "{duration} / 首帧 {first}": "{duration} / 1ª resposta {first}", "{m}分{s}秒": "{m}min {s}s", "{n}秒": "{n}s", "{s}秒{ms}ms": "{s}s{ms}ms", "↻ {n} 次": "↻ {n}x", "↻ 重试 {n} 次": "↻ {n} retries", "✅ 压缩完成": "✅ Compactação concluída", "「仅看进行中」开启时,状态固定为进行中": "Com “Somente em andamento” ativado, o status fica fixo em Em andamento", "上游模型繁忙,请求已排进上游队列;网关正按上游建议的时长等待后重发(不是登录态或额度问题)": "O modelo do upstream está ocupado e a requisição entrou na fila do upstream; o Gateway aguarda o tempo sugerido pelo upstream antes de reenviar (não é problema de estado de login nem de cota)", "上游没有返回积分消耗": "O upstream não informou o consumo de pontos", "上游状态码: {status}": "Status do upstream: {status}", "上游请求已发出,正在等第一个字节到达(模型的思考时间也在这段)": "A requisição foi enviada ao upstream; aguardando a chegada do primeiro byte (o tempo de raciocínio do modelo também faz parte disso)", "上游返回错误": "O upstream retornou um erro", "下游请求的模型:{model}": "Modelo solicitado pelo downstream: {model}", "仅清空报文原文": "Limpar apenas os payloads", "仅看进行中": "Somente em andamento", "令牌": "Tokens", "体积": "Tamanho", "供应商": "Provedor", "供应商归属规则": "Regras de atribuição por provedor", "保存中…": "Salvando…", "保存归属规则": "Salvar regra de atribuição", "保留 {count} 条请求记录 · 将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "Preservar {count} registros · Limpar {upstream} payloads do upstream e {downstream} corpos do downstream · Tamanho do banco {db}", "保留 {count} 条请求记录;将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。用量统计与报表不变。": "Preserva {count} registros de requisições e limpa {upstream} payloads de depuração do upstream e {downstream} corpos do downstream. As estatísticas de uso e os relatórios permanecem inalterados.", "保留统计行与报表,只抹掉请求 / 响应正文。清理后详情弹窗的「预览对话」将无原文可看,统计数字分毫不动。": "Mantém as linhas de estatísticas e os relatórios e apaga apenas o corpo da requisição / da resposta. Após a limpeza, a “Prévia da conversa” no diálogo de detalhes não terá mais o texto original; os números das estatísticas não mudam em nada.", "保留草稿并读取最新设置": "Manter rascunho e recarregar as configurações", "保留请求记录、用量统计与报表,同时清理上游调试报文和下游请求 / 响应正文。清理后「预览对话」与「原始报文」不再保留原文。有筛选时只清理命中请求的报文;无筛选时清空两侧全部报文。此操作无法恢复。": "Preserva os registros de requisições, as estatísticas de uso e os relatórios, mas limpa os payloads de depuração do upstream e os corpos de requisição / resposta do downstream. A prévia da conversa e o payload bruto deixam de conter o conteúdo original. Com filtros, limpa apenas os payloads das requisições correspondentes; sem filtros, limpa todos os payloads dos dois lados. Esta ação não pode ser desfeita.", "全部删除": "Excluir tudo", "全部提供商": "Todos os provedores", "全部模型": "Todos os modelos", "全部状态": "Todos os status", "全部请求数据": "todos os dados de requisições", "共 {images} 张图片,复用 {cached} 张识读结果": "{images} imagens; {cached} leituras reutilizadas", "共 {n} 次尝试": "{n} tentativas no total", "共 {n} 次尝试,最终由 {provider} 承载": "{n} tentativas no total; a última foi atendida por {provider}", "其它": "Outro", "内容按原样保存,请求头中的凭据字段已替换为 [redacted]": "Conteúdo salvo como está; os campos de credenciais nos cabeçalhos da requisição foram substituídos por [redacted]", "内部重试": "Retries internos", "切换视觉模型": "Alternar para modelo de visão", "切换路径:": "Caminho de troca: ", "列表数据已刷新,请重试(关闭后重新打开这条详情)": "Os dados da lista foram atualizados; tente novamente (feche e reabra este detalhe)", "删除归属规则": "Excluir regra de atribuição", "删除日志记录本身。当前有筛选时只删命中的条目,按天聚合报表不受影响;无筛选时清空全部并重置报表。此方式无法恢复。": "Exclui os próprios registros de log. Com filtros ativos, exclui apenas os itens correspondentes e os relatórios agregados por dia não são afetados; sem filtros, limpa tudo e redefine os relatórios. Esta ação não pode ser desfeita.", "删除请求记录,并同步清理对应的上游调试报文与下游正文。有筛选时只删除命中的记录,按天聚合报表不受影响;无筛选时清空全部并重置报表。此操作无法恢复。": "Exclui os registros de requisições junto com os payloads de depuração do upstream e os corpos do downstream correspondentes. Com filtros, exclui apenas os registros correspondentes e preserva os relatórios diários; sem filtros, limpa tudo e redefine os relatórios. Esta ação não pode ser desfeita.", "压缩中…": "Compactando…", "压缩失败:{message}": "Falha na compactação: {message}", "压缩已在后台开始,完成后会自动提示": "A compactação começou em segundo plano; você será avisado quando ela terminar", "压缩已在进行中": "A compactação já está em andamento", "压缩已在进行中,接上它的进度等待完成": "A compactação já está em andamento; retomando o progresso dela e aguardando a conclusão", "压缩数据库": "Compactar banco de dados", "压缩正在后台执行,完成后自动恢复": "A compactação está em execução em segundo plano; tudo volta ao normal automaticamente quando ela terminar", "原始报文": "Payload bruto", "原模型": "Modelo original", "取消": "Cancelar", "另有 {missing} 次尝试未记录明细(只保留最早的 {kept} 条)": "Mais {missing} tentativas sem detalhes registrados (mantidas apenas as {kept} primeiras)", "另有 {n} 个词命中": "Mais {n} palavras atingidas", "只显示正在转发中的请求(状态列按阶段显示:连接中 / 等待响应 / 响应中 / 重试中,用时列显示已用时)": "Mostra apenas requisições em encaminhamento (a coluna Status mostra a fase: Conectando / Aguardando resposta / Respondendo / Retentando; a coluna Duração mostra o tempo decorrido)", "只看失败": "Somente falhas", "只看成功": "Somente sucessos", "只看进行中": "Somente em andamento", "命中了敏感词": "Atingiu uma palavra sensível", "命中依据:{header} · {pattern}": "Base da correspondência: {header} · {pattern}", "命中的敏感词": "Palavras sensíveis atingidas", "命中规则:{provider} → {client}": "Regra aplicada: {provider} → {client}", "响应中": "Respondendo", "响应体": "Corpo da resposta", "响应头": "Cabeçalhos da resposta", "回收已删除数据占用的磁盘空间(checkpoint + VACUUM,后台执行)": "Recupera o espaço em disco ocupado por dados excluídos (checkpoint + VACUUM, em segundo plano)", "图片处理用时:{n} 秒": "Tempo de processamento de imagens: {n} segundos", "在设置 → 通用里开启「调试模式」后,新发生的请求才会保存报文": "Ative o “Modo debug” em Configurações → Geral para que novas requisições passem a salvar o payload", "在路由页查看": "Ver na página de roteamento", "处理中": "Processando", "失败": "Falhou", "失败请求不记录用量": "Requisições com falha não registram uso", "失败({status}):{error}": "Falhou ({status}): {error}", "失败:{error}": "Falhou: {error}", "实际发给上游 {bytes} 字节": "{bytes} bytes enviados de fato ao upstream", "客户端": "Cliente", "将删除 {count} 条日志 · 其中 {raw} 条仍带报文原文 · 数据库占用 {db}": "Serão excluídos {count} logs · {raw} ainda com payload · tamanho do banco: {db}", "将删除 {count} 条请求记录 · 同步清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "Excluir {count} registros · Limpar {upstream} payloads do upstream e {downstream} corpos do downstream · Tamanho do banco {db}", "将删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "Exclui {count} registros de requisições e limpa {upstream} payloads de depuração do upstream e {downstream} corpos do downstream.", "尝试 {n} ·": "Tentativa {n} ·", "尝试明细": "Detalhes das tentativas", "尝试次数": "Tentativas", "工具结果": "Resultado da ferramenta", "工具结果 · {id}": "Resultado da ferramenta · {id}", "工具结果图片": "Imagem do resultado da ferramenta", "已删除 {count} 条": "{count} registros excluídos", "已删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "Foram excluídos {count} registros de requisições e limpos {upstream} payloads de depuração do upstream e {downstream} corpos do downstream.", "已受理终止:上游连接已断开,列表稍后刷新为「请求已被手动终止」": "Abortagem aceita: a conexão com o upstream foi encerrada; a lista será atualizada em instantes como “Requisição abortada manualmente”", "已完成": "Concluído", "已抹掉 {count} 条报文原文": "{count} payloads removidos", "已清理上游调试报文 {upstream} 条、下游正文 {downstream} 条;请求记录与报表已保留。": "Foram limpos {upstream} payloads de depuração do upstream e {downstream} corpos do downstream; os registros de requisições e os relatórios foram preservados.", "已用时(请求仍在转发中)": "Tempo decorrido (a requisição ainda está sendo encaminhada)", "开启调试模式后仅记录新请求,历史对话无法补录;关闭不会删除已有记录。": "O modo de depuração registra apenas novas requisições; conversas anteriores não podem ser recuperadas. Desativá-lo não exclui os registros existentes.", "归属客户端": "Cliente", "当前筛选范围": "os resultados dos filtros atuais", "当前网关未提供上游 / 下游清理统计,请更新网关后再清理。": "Este gateway não fornece contagens de limpeza do upstream / downstream. Atualize o gateway antes de limpar os dados.", "成功": "Sucesso", "成功({status})": "Sucesso ({status})", "所属请求": "Solicitação principal", "执行清理": "Executar limpeza", "报文超过单条上限,请求体 / 响应体已按上限截断": "O payload ultrapassou o limite por registro; o corpo da requisição / da resposta foi truncado no limite", "抹掉原文": "Remover payloads", "按提供商筛选": "Filtrar por provedor", "按提供商筛选(只列日志里出现过的)": "Filtrar por provedor (lista apenas os que aparecem nos logs)", "按时间倒序,全量保留": "Ordem cronológica inversa; mantido integralmente", "按模型筛选": "Filtrar por modelo", "按模型筛选(只列日志里出现过的;精确匹配模型名)": "Filtrar por modelo (lista apenas os que aparecem nos logs; correspondência exata com o nome do modelo)", "按请求结果筛选": "Filtrar pelo resultado da requisição", "排队中": "Na fila", "提供商 / 账号": "Provedor / Conta", "提供商: {provider}": "Provedor: {provider}", "提示": "Aviso", "搜索供应商": "Pesquisar provedores", "搜索客户端": "Pesquisar clientes", "敏": "PS", "敏感词": "Palavras sensíveis", "数据库占用包含主文件与 WAL 文件;清理后可点击「压缩数据库」回收空闲空间。": "O tamanho do banco inclui o arquivo principal e o arquivo WAL. Após a limpeza, use Compactar banco de dados para recuperar o espaço livre.", "断开上游连接,明细记为「请求已被手动终止」": "Encerra a conexão com o upstream e registra nos detalhes como “Requisição abortada manualmente”", "无报文原文(未开启「调试模式」,或已被清理)": "Sem payload original (o modo de depuração estava desativado, ou o conteúdo foi limpo)", "无结果记录": "Sem resultado registrado", "旧版本保存的正文可能已截断,无法恢复缺失内容": "O corpo salvo por uma versão antiga pode estar truncado; o conteúdo ausente não pode ser recuperado", "时间": "Data/hora", "暂无请求日志,网关还没有转发过请求": "Ainda não há logs de requisições; o Gateway ainda não encaminhou nenhuma requisição", "最终归属(记账时的客户端)": "Atribuição final (o cliente registrado na contabilização)", "最终承载:{picked}": "Atendida por fim por: {picked}", "未改写,保留识别结果": "Não reescrita; o cliente identificado é mantido", "本次请求消耗 {credit} 积分": "Pontos consumidos por esta requisição: {credit}", "本轮尝试失败,正在退避等待或切换到下一个账号": "Esta rodada falhou; aguardando o backoff ou trocando para a próxima conta", "来源客户端:{client}": "Cliente de origem: {client}", "查看该请求的上游原始报文": "Ver o payload bruto do upstream desta requisição", "模型": "Modelo", "模型测试": "Teste de modelo", "模型管理页操作列那颗「测试」发起的请求:与真实请求同一条转发链路,但不计入报表统计": "Requisição iniciada pelo “Teste” na coluna de ações da página de gerenciamento de modelos: usa a mesma rota de encaminhamento das requisições reais, mas não entra nas estatísticas dos relatórios", "正在加载请求日志…": "Carregando logs de requisições…", "正在统计…": "Calculando…", "正文超过单条上限,可能已被截断": "O texto ultrapassou o limite por registro e pode ter sido truncado", "没有符合筛选条件的请求": "Nenhuma requisição corresponde aos filtros", "添加自定义头匹配规则…": "Adicionar regra de cabeçalho personalizada…", "清理": "Limpar", "清理中…": "Limpando…", "清理失败:{message}": "Falha na limpeza: {message}", "清理方式": "Modo de limpeza", "清理请求已返回,但结果数据不完整,请刷新后确认。": "A requisição de limpeza retornou dados de resultado incompletos. Atualize para confirmar o resultado.", "清理请求日志": "Limpar logs de requisições", "清理预览数据不完整": "Os dados da prévia de limpeza estão incompletos", "清空两侧原文": "Limpar os dois lados", "生产请求": "Requisições de produção", "生成速度:输出 token ÷ 流式段用时(总用时 − 首响);流式段不足总用时一半时按总用时计": "Velocidade de geração: tokens de saída ÷ tempo de streaming (duração total − 1ª resposta); usa a duração total quando a janela de streaming é menor que metade da requisição", "用时": "Duração", "用量": "Uso", "确定对{scope}执行「{label}」?
    {summary}
    此操作无法恢复。": "Executar {label} em {scope}?
    {summary}
    Esta ação não pode ser desfeita.", "确定对全部请求日志执行「{label}」?将处理 {count} 条,此操作无法恢复。": "Confirmar “{label}” em todos os logs de requisições? Serão processados {count} registros. Esta ação não pode ser desfeita.", "确定按当前筛选执行「{label}」?将处理 {count} 条,此操作无法恢复。": "Confirmar “{label}” com os filtros atuais? Serão processados {count} registros. Esta ação não pode ser desfeita.", "确定终止这条正在转发的请求?
    上游连接会立即断开,明细将记为「请求已被手动终止」。": "Tem certeza de que deseja abortar esta requisição em encaminhamento?
    A conexão com o upstream será encerrada imediatamente e os detalhes serão registrados como “Requisição abortada manualmente”.", "等待响应": "Aguardando resposta", "策略 {strategy} · 会话粘性 {sticky}{hit}": "Estratégia {strategy} · Aderência {sticky}{hit}", "终止": "Abortar", "终止失败:{error}": "Falha ao abortar: {error}", "终止请求": "Abortar requisição", "结果": "Resultado", "缓存读取: - / 命中率: -": "Leituras de cache: - / taxa de acerto: -", "缓存读取: {cache} / 命中率: {rate}": "Leituras de cache: {cache} / taxa de acerto: {rate}", "编辑这条头匹配规则…": "Editar esta regra de cabeçalho…", "耗时": "Duração", "自定义 · {name}": "Personalizado · {name}", "被跳过:": "Puladas: ", "设置识别规则": "Definir regras de identificação", "识别到 User-Agent,但不属于已知的客户端类型:{ua}": "User-Agent detectado, mas não é um tipo de cliente conhecido: {ua}", "识别结果(请求头识别出的真实客户端)": "Resultado da identificação (o cliente real reconhecido pelos cabeçalhos)", "识图用量按实际视觉账号单独记录,不混入原模型的回答用量。": "O uso visual é registrado separadamente na conta de visão utilizada, sem se misturar ao uso da resposta do modelo original.", "该供应商已有归属规则,保存将覆盖它": "Este provedor já tem uma regra de atribuição; salvar vai substituí-la", "详情": "Detalhes", "详情内容": "Conteúdo dos detalhes", "请求体": "Corpo da requisição", "请求图片": "Imagem da requisição", "请求在任何账号接手之前就失败了": "A requisição falhou antes de qualquer conta assumi-la", "请求头": "Cabeçalhos da requisição", "请求头识别为 {identified},已改写归属为 {client}": "Identificado como {identified} pelos cabeçalhos da requisição; atribuição reescrita para {client}", "请求已受理,正在选路、取凭证、建立上游连接": "Requisição aceita; selecionando rota, obtendo credenciais e estabelecendo a conexão com o upstream", "请求日志列表": "Lista de logs de requisições", "请求日志时间范围": "Período dos logs de requisições", "请求日志表": "Tabela de logs de requisições", "请求正在转发中,用时列显示的是已用时": "A requisição está sendo encaminhada; a coluna Duração mostra o tempo decorrido", "请求筛选": "Filtros de requisições", "请求详情": "Detalhes da requisição", "请选择供应商": "Selecione um provedor", "请选择归属客户端": "Selecione um cliente", "读取请求日志失败,详见控制台": "Falha ao ler os logs de requisições; veja o console", "路由回放": "Replay de roteamento", "转发到上游的模型:{model}": "Modelo encaminhado ao upstream: {model}", "轮次": "Rodada", "辅助识图": "Leitura de imagem assistida", "辅助识图调用": "Chamada de leitura assistida", "输入 {input} · 输出 {output} · 总计 {total} · 缓存读 {cache}": "Entrada {input} · Saída {output} · Total {total} · Leitura de cache {cache}", "这条报文由旧版本截断保存,缺失内容无法恢复": "Este payload foi truncado por uma versão antiga; o conteúdo ausente não pode ser recuperado", "这条明细是一次模型测试(人工发起):走的是真实转发链路,但不计入报表统计": "Este detalhe é um teste de modelo (iniciado manualmente): usa a mesma rota de encaminhamento das requisições reais, mas não entra nas estatísticas dos relatórios", "这条明细没有记录提供商(旧数据或请求未走到转发)": "Este detalhe não registrou provedor (dados antigos ou a requisição falhou antes do encaminhamento)", "这条明细没有记录来源客户端(旧数据、模型测试,或请求未带 User-Agent)": "Nenhum cliente de origem registrado nesta entrada (dados antigos, teste de modelo ou solicitação sem User-Agent)", "这条记录命中了敏感词,但没有留下命中明细": "Este registro atingiu palavras sensíveis, mas não deixou detalhes das ocorrências", "这条记录的尝试明细未采集(该字段上线前的旧数据,或请求在转发前就失败)": "Os detalhes das tentativas deste registro não foram coletados (dados antigos, de antes do lançamento deste campo, ou a requisição falhou antes do encaminhamento)", "这条请求没有保存这一段报文": "Esta requisição não salvou este trecho do payload", "这条请求没有记录供应商(旧数据或未走到转发),不能从这里改归属": "Esta requisição não tem provedor registrado (dados antigos ou nunca chegou ao encaminhamento); a atribuição não pode ser alterada aqui", "进入「{phase}」阶段已持续 {time}": "Na fase “{phase}” há {time}", "进行中": "Em andamento", "进行中…": "Em andamento…", "连接中": "Conectando", "选择供应商": "Selecionar provedor", "选择归属客户端": "Selecionar cliente", "速度": "Velocidade", "重试 {n}": "Retry {n}", "重试中": "Retentando", "重试次数": "Retries", "面板内发起的模型调用,消耗额度并记录 Key,不计入生产报表": "Chamada de modelo iniciada pelo painel; usa cota e registra a API Key, mas não entra nos relatórios de produção", "预览对话": "Prévia da conversa", "预览读取失败": "Falha ao ler a prévia", "预览读取失败:{error}": "Falha ao ler a prévia: {error}", "额外识图用量:{n} Token": "Uso visual adicional: {n} tokens", "首响 {time}": "1ª resposta {time}", "首响:上游首帧到达的耗时": "1ª resposta: tempo até o primeiro frame do upstream chegar", "首响:上游首帧到达的耗时(请求仍在转发中)": "1ª resposta: tempo até o primeiro frame do upstream chegar (a requisição ainda está sendo encaminhada)", "首帧已到,上游内容正在下发": "O primeiro frame chegou; o upstream está enviando o conteúdo", "默认归属客户端": "Cliente de atribuição padrão", "(请求仍在转发中)": "(a requisição ainda está sendo encaminhada)", "(账号:{account})": "(conta: {account})", ",{n}毫秒后重试": ", retry em {n}ms", ",{n}秒后重试": ", retry em {n}s", "{name}的列设置": "Configurações de colunas de {name}", "「{label}」列的对齐": "Alinhamento da coluna “{label}”", "中": "Centro", "共 0 条": "Nenhum registro", "共 {total} 条 · 当前第 {start}–{end} 条": "{total} no total · exibindo {start}–{end}", "共 {total} 条(全部显示)": "{total} no total (todos exibidos)", "列": "Coluna", "列设置": "Configurações de colunas", "右": "Direita", "对齐": "Alinhamento", "左": "Esquerda", "当前只有一页": "Há apenas uma página", "拖动 ⋮⋮ 调整顺序": "Arraste ⋮⋮ para reordenar", "按住拖动调整列顺序": "Segure e arraste para ajustar a ordem das colunas", "显示「{label}」列": "Exibir a coluna “{label}”", "条": "itens", "每页": "Por página", "每页条数": "Itens por página", "调整「{name}」的列:显示 / 隐藏、顺序、对齐": "Ajustar as colunas de “{name}”: exibir / ocultar, ordem e alinhamento", "跳至": "Ir para", "跳转到指定页": "Ir para uma página específica", "跳转到第 1–{pageCount} 页": "Ir para a página 1–{pageCount}", "这一列已隐藏": "Esta coluna está oculta", "这一列正在显示": "Esta coluna está visível", "页": "pág.", "PID:{pid}": "PID: {pid}", "{label} · {port}": "{label} · {port}", "。已经把这个地址填进其它工具(Claude Code、Cherry Studio 等)的,需要一并改成新地址,否则那些工具会连不上。": ". Se você já preencheu este endereço em outras ferramentas (Claude Code, Cherry Studio etc.), altere-o também para o novo endereço; caso contrário, elas não conseguirão se conectar.", "与当前端口相同,无需重启": "Igual à porta atual; não é preciso reiniciar", "例如 3066": "Exemplo: 3066", "即将结束以下进程:": "Os seguintes processos serão encerrados:", "已结束进程 {name}(PID {pid}),端口已释放": "Processo {name} (PID {pid}) encerrado; porta liberada", "当前状态": "Status atual", "当前端口 {port},网关运行正常。": "Porta atual: {port}; o gateway está funcionando normalmente.", "换端口后要改的地方": "O que alterar após trocar a porta", "新端口": "Nova porta", "更换端口": "Trocar porta", "更换网关端口": "Trocar a porta do gateway", "本地网关正在监听 {url},可直接调用 OpenAI 兼容接口": "O gateway local está escutando em {url}; é possível chamar diretamente a interface compatível com OpenAI", "校验中…": "Validando…", "正在检查… · {port}": "Verificando… · {port}", "正在确认网关是否已就绪": "Confirmando se o gateway está pronto", "正在重启…": "Reiniciando…", "端口 {port} 上没有查到监听进程,请改用「更换端口」": "Nenhum processo em escuta foi encontrado na porta {port}; use “Trocar porta”", "端口号": "Número da porta", "端口已改为 {port},正在重启…": "Porta alterada para {port}; reiniciando…", "端口已释放。现在重启程序让网关用这个端口启动?": "A porta foi liberada. Reiniciar o programa agora para o gateway iniciar nessa porta?", "端口需在 1024-65535 之间": "A porta deve estar entre 1024 e 65535", "端口需在 1024-65535 之间。1023 及以下是系统保留范围,普通程序无法监听。": "A porta deve estar entre 1024 e 65535. A faixa até 1023 é reservada pelo sistema e programas comuns não podem escutá-la.", "结束中…": "Encerrando…", "结束占用端口的进程": "Encerrar o processo que ocupa a porta", "结束占用进程": "Encerrar processo ocupante", "结束失败:{reason}": "Falha ao encerrar: {reason}", "结束它会强制退出该程序未保存的数据。确认继续?": "Encerrá-lo forçará a saída do programa e os dados não salvos serão perdidos. Deseja continuar?", "结束进程": "Encerrar processo", "网关启动中… · {port}": "Gateway iniciando… · {port}", "网关启动失败": "Falha ao iniciar o gateway", "网关地址会变成 ": "O endereço do gateway passará a ser ", "网关运行中 · {port}": "Gateway em execução · {port}", "该端口不可用": "Esta porta não está disponível", "路径:{path}": "Caminho: {path}", "进程名:{name}": "Nome do processo: {name}", "进程已结束,但端口仍被占用,建议改用「更换端口」": "O processo foi encerrado, mas a porta continua em uso; recomendamos usar “Trocar porta”", "重启": "Reiniciar", "重启中…": "Reiniciando…", "重启失败:{reason}": "Falha ao reiniciar: {reason}", "重启程序": "Reiniciar o programa", "(未知)": "(desconhecido)" }); diff --git a/desktop-tauri/ui/i18n/combined/zh-Hant.js b/desktop-tauri/ui/i18n/combined/zh-Hant.js index 47dbda16..04b9ab6d 100644 --- a/desktop-tauri/ui/i18n/combined/zh-Hant.js +++ b/desktop-tauri/ui/i18n/combined/zh-Hant.js @@ -1,2 +1,2 @@ /* Agent2API 词典构建产物:zh-Hant/combined —— 由 desktop-tauri/i18n/build.mjs 生成,请勿手改;源头是 i18n-src/*.json */ -window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { "无可用账号:{reason}": "無可用帳號:{reason}", "AI 助手": "AI 助手", "API Key 用量详情": "API Key 用量詳情", "API Key 统计": "API Key 統計", "API Key(可选)": "API Key(選填)", "API 凭证": "API 憑證", "API 方法提交给插件的账号规范化入口;不会用该密钥发起 OAuth 登录。": "API 方式會提交至外掛的帳號正規化入口;不會用此金鑰發起 OAuth 登入。", "AWS Bedrock SSO": "AWS Bedrock SSO", "Agent": "Agent", "Agent 接管": "Agent 接管", "Agent2API · 多提供商本地网关": "Agent2API · 多提供商本地閘道器", "Agent2API 官方提供商": "Agent2API 官方提供商", "Agent2API 社区": "Agent2API 社群", "Codar(科搭)": "Codar(科搭)", "Cursor": "Cursor", "Devin": "Devin", "Factory": "Factory", "GitHub Copilot": "GitHub Copilot", "Grok": "Grok", "JSON 格式不正确": "JSON 格式不正確", "JoyCode(京东)": "JoyCode(京東)", "Kimi Work": "Kimi Work", "Linux (amd64)": "Linux (amd64)", "Linux (arm64)": "Linux (arm64)", "Magpie 官方": "Magpie 官方", "Magpie 官方与社区插件,共用一个按需下载的运行时": "Magpie 官方與社群外掛,共用一個按需下載的執行環境", "Magpie 官方名单": "Magpie 官方名單", "Magpie 官方和社区插件均通过兼容方式接入 Agent2API,不保证 100% 可用。": "Magpie 官方和社群外掛均透過相容方式接入 Agent2API,不保證 100% 可用。", "Magpie 推荐": "Magpie 推薦", "Magpie 插件": "Magpie 外掛", "Magpie 插件安装须知": "Magpie 外掛安裝須知", "Magpie 社区": "Magpie 社群", "Magpie 社区分发源": "Magpie 社群分發來源", "Magpie 脚本插件": "Magpie 腳本外掛", "MiniMax Code 国内/国际": "MiniMax Code 國內/國際", "MiniMax Code 的设备码登录、对话、模型目录、余额与每日签到;国内版与国际版可分别启停。": "MiniMax Code 的裝置碼登入、對話、模型目錄、餘額與每日簽到;國內版與國際版可分別啟停。", "Nous Portal": "Nous Portal", "OAuth 登录": "OAuth 登入", "Open Design": "Open Design", "Providers Hub": "Providers Hub", "QQ 群号": "QQ 群號", "Star 数暂未读取": "Star 數尚未讀取", "Star 更新于 {time}": "Star 更新於 {time}", "Token 用量": "Token 用量", "WPS 灵犀": "WPS 靈犀", "Windows (ARM64)": "Windows (ARM64)", "Windows (x64)": "Windows (x64)", "Zed": "Zed", "macOS (Apple Silicon)": "macOS (Apple Silicon)", "macOS (Intel)": "macOS (Intel)", "npm 包名": "npm 套件名稱", "npm 包名、GitHub 地址或 magpie:包名": "npm 套件名稱、GitHub 位址或 magpie:套件名稱", "npm 包名或 GitHub 地址": "npm 套件名稱或 GitHub 位址", "npm 未发布的包会尝试 Magpie 社区分发源;不会绕过完整性校验或执行安装脚本。": "npm 未發布的套件會嘗試 Magpie 社群分發來源;不會略過完整性驗證或執行安裝腳本。", "{count} 个 Star": "{count} 個 Star", "{count} 个插件": "{count} 個外掛", "{count} 家": "{count} 家", "{count} 家提供商": "{count} 家提供商", "{count} 家提供商 · 安装于 {time}": "{count} 家供應商 · 安裝於 {time}", "{key} 需要 true / false / null": "{key} 需要 true / false / null", "{key} 需要数字": "{key} 需要數字", "{label}(API)": "{label}(API)", "{label}(OAuth)": "{label}(OAuth)", "{n} 个启用": "{n} 個啟用", "{n} 个已限流": "{n} 個已限流", "{n} 个请求正在转发中,点开「请求日志」查看": "{n} 個請求正在轉發中,點開「請求日誌」檢視", "{n} 个账号 · {usable} 可用": "{n} 個帳號 · {usable} 可用", "{n} 个账号可用": "{n} 個帳號可用", "{n} 个账号启用": "{n} 個帳號啟用", "{n} 条失败请求未读,点开「请求日志」查看": "{n} 條失敗請求未讀,點開「請求日誌」檢視", "{n} 条错误日志未读,点开「日志」查看": "{n} 條錯誤日誌未讀,點開「日誌」檢視", "{n} 项 · {shown} 显示": "{n} 項 · {shown} 顯示", "{size} · 下载后可直接安装,无需跳转浏览器": "{size} · 下載後可直接安裝,無需跳轉瀏覽器", "{size} · 点击下载后可直接安装,无需跳转浏览器": "{size} · 點擊下載後可直接安裝,無需跳轉瀏覽器", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "{total} 個選單 · 顯示 {shown} · 隱藏 {hidden} · {groups} 個分組", "· 不会改动任何配置": "· 不會改動任何配置", "· 每次执行前列改动清单,等你确认": "· 每次執行前列改動清單,等你確認", "—": "—", "“本机”指运行网关的机器,不是打开面板的电脑。远程浏览器也可以发起,但网关本机可能需要安装客户端并已登录;是否可用由网关返回结果决定。": "「本機」指執行閘道的機器,不是開啟面板的電腦。遠端瀏覽器也可以發起,但閘道本機可能需要安裝用戶端並已登入;是否可用由閘道回傳結果決定。", "★ 下一单走它": "★ 下一單走它", "✅ GitHub 令牌已保存(加密存储,界面不再显示)": "✅ GitHub 權杖已儲存(加密儲存,介面不再顯示)", "✅ Token 已刷新": "✅ Token 已重新整理", "✅ 已将账号优先级调整到全局第一位": "✅ 已將帳號優先順序調整到全域第一位", "✅ 已清除界面保存的 GitHub 令牌(环境变量若配置过则继续生效)": "✅ 已清除介面儲存的 GitHub 權杖(環境變數若有設定則繼續生效)", "「{name}」匹配到多个账号:{list},请用完整账号名重试": "「{name}」匹配到多個帳號:{list},請用完整帳號名重試", "「工具全不勾选 → 不注入系统提示词」:想当纯聊天用时,不必再去关上面的开关。": "「工具全不勾選 → 不注入系統提示詞」:想當純聊天用時,不必再去關上面的開關。", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "「設定」是固定項,含它的分組不能整組隱藏;可以單獨隱藏組內其它選單", "上一页": "上一頁", "上次加载记录(非本次故障)": "上次載入記錄(非本次故障)", "下一页": "下一頁", "下拉刷新": "下拉重新整理", "下次自动重试:{time}": "下次自動重試:{time}", "下载与当前平台对应的插件包(zip),点右上角「安装插件包」选中它即可。": "下載與目前平台對應的外掛套件(zip),點右上角「安裝外掛套件」選取它即可。", "下载任务已交给网关,关闭手机不影响安装": "下載任務已交給閘道器,關閉手機不影響安裝", "下载进度": "下載進度", "不填写(可选)": "不填寫(選填)", "不限模型": "不限模型", "与电脑端一致:每 {n} 分钟": "與電腦端一致:每 {n} 分鐘", "为 Agent2API 扩展网页提供商,支持智谱清言的模型调用、访客与登录账号、凭证续期、模型目录、积分查询、签到和任务领取。": "為 Agent2API 擴充網頁提供商,支援智譜清言的模型呼叫、訪客與登入帳號、憑證續期、模型清單、積分查詢、簽到和任務領取。", "为网关扩展多家 AI 提供商,支持账号登录与导入、模型调用、凭证续期、模型目录、余额查询和签到。具体能力以各提供商的支持情况为准。": "為閘道擴充多家 AI 供應商,支援帳號登入與匯入、模型呼叫、憑證續期、模型清單、餘額查詢和簽到。具體能力以各供應商的支援情況為準。", "主导航": "主導航", "也可输入 file: 加网关电脑上的插件目录或 tgz 文件绝对路径;本地插件会复制安装,不修改源目录。": "也可輸入 file: 加上閘道電腦上的外掛目錄或 tgz 檔案絕對路徑;本機外掛會複製安裝,不修改來源目錄。", "书生·端砚": "書生·端硯", "了解并安装": "瞭解並安裝", "仅在该 API 方法需要额外密钥时填写": "僅在此 API 方式需要額外金鑰時填寫", "仅安装你信任的 npm 包、GitHub 仓库或 Magpie 社区分发包;完整性校验不等于安全审计。": "僅安裝你信任的 npm 套件、GitHub 儲存庫或 Magpie 社群分發套件;完整性驗證不等於安全稽核。", "仅安装你信任的 npm 包或 GitHub 仓库;版本与完整性检查不能保证脚本安全。": "僅安裝你信任的 npm 套件或 GitHub 儲存庫;版本與完整性檢查不能保證腳本安全。", "仅安装你信任的 npm 包;下载校验只能确认文件完整,不能保证脚本安全。": "僅安裝你信任的 npm 套件;下載驗證只能確認檔案完整,不能保證腳本安全。", "仅影响插件更新通道,与主程序独立。": "僅影響外掛更新通道,與主程式獨立。", "仅影响插件更新通道,与主程序独立。开启后可安装 beta 版;已使用 beta 时保持该通道,关闭后只看正式版且不会降级。": "僅影響插件更新通道,與主程式獨立。開啟後可安裝 beta 版;已使用 beta 時保持該通道,關閉後只看正式版且不會降級。", "仅自动更新已安装、已启用且通过可信签名校验的社区插件。新插件需手动安装,卸载后不会自动重新安装;未签名插件需手动更新。": "僅自動更新已安裝、已啟用且通過可信簽章驗證的社群外掛。新外掛需手動安裝,解除安裝後不會自動重新安裝;未簽章外掛需手動更新。", "从 GitHub 官方源下载固定提交。仓库根目录须有可直接运行的插件入口;不会执行构建脚本或安装依赖。": "從 GitHub 官方來源下載固定提交。儲存庫根目錄須有可直接執行的外掛入口;不會執行建置腳本或安裝相依套件。", "从 GitHub 官方源下载固定提交。仓库须包含可运行的提供商入口;安装运行依赖,但不执行构建和安装脚本。": "從 GitHub 官方來源下載固定提交。儲存庫須包含可執行的提供商入口;安裝執行依賴,但不執行建置和安裝指令碼。", "从 Magpie 社区官方分发目录下载,核验 SHA-512;更新与重装继续使用此来源。": "從 Magpie 社群官方分發目錄下載,驗證 SHA-512;更新與重新安裝繼續使用此來源。", "从 npm / GitHub / Magpie 安装": "從 npm / GitHub / Magpie 安裝", "从 npm / GitHub 安装": "從 npm / GitHub 安裝", "从 npm 安装": "從 npm 安裝", "从文件安装…": "從檔案安裝…", "从网关本机客户端导入": "從閘道本機用戶端匯入", "仓库没有已提交的可加载入口,请等待作者发布构建产物": "儲存庫沒有已提交的可載入入口,請等待作者發布建置產物", "代价": "代價", "代理:池": "代理:池", "令牌已生效,但写入磁盘失败(重启后会丢失)": "權杖已生效,但寫入磁碟失敗(重新啟動後會遺失)", "以下设置属于所连接网关,不是手机本地设置。": "以下設定屬於所連接閘道,不是手機本機設定。", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "會恢復預設的分組、順序與顯隱設定。你自建的分組會被刪除(組內選單不會丟)。", "会话内": "會話內", "会话已过期。重新登录后会自动回到手机端。": "會話已過期。重新登入後會自動回到手機端。", "会话粘性": "會話粘性", "低于限制器的阈值,转发时跳过该账号": "低於限制器的閾值,轉發時跳過該帳號", "余额不足或 Token 周期用量到顶,被限制器拦下,自动恢复后回来": "餘額不足或 Token 週期用量到頂,被限制器攔下,自動恢復後回來", "余额优先": "餘額優先", "作为 system 消息注入给助手": "作為 system 訊息注入給助手", "作者尚未提供插件介绍。": "作者尚未提供插件介紹。", "使用 Cloudflare 账号 ID 与 API Token,接入 Workers AI 对话和在线模型目录。": "使用 Cloudflare 帳號 ID 與 API Token,接入 Workers AI 對話和線上模型目錄。", "使用 Warp 终端的登录态,接入账号可用模型并查询 AI 请求额度。": "使用 Warp 終端的登入狀態,接入帳號可用模型並查詢 AI 請求額度。", "使用你在网关电脑上安装并登录的 agy CLI,通过 ACP 协议接入模型、工具调用和额度查询;与依赖 Antigravity IDE 的 Antigravity ACP 插件不同。": "使用你在閘道電腦上安裝並登入的 agy CLI,透過 ACP 協定接入模型、工具呼叫和額度查詢;與依賴 Antigravity IDE 的 Antigravity ACP 外掛不同。", "使用网关本机 gcloud / ADC 登录,接入 Vertex AI 模型并查询 Google Cloud 促销赠金。": "使用閘道本機 gcloud / ADC 登入,接入 Vertex AI 模型並查詢 Google Cloud 促銷贈金。", "例如:家里、公司": "例如:家裡、公司", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "側邊欄佈局模組未載入(ui/sidebar-layout.js 應在 app.js 之前引入)。", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "側邊欄沒有顯示任何選單。到「設定 → 顯示 → 側邊欄選單」裡開啟需要的項。", "侧边栏菜单": "側邊欄選單", "保存失败:{error}": "儲存失敗:{error}", "保存对话模型失败:{message}": "儲存對話模型失敗:{message}", "保存并继续": "儲存並繼續", "修改高级参数会等待在途任务结束后重新加载插件;专属开关实时生效。": "修改進階參數會等待進行中的任務結束後重新載入外掛;專屬開關即時生效。", "候选队列": "候選佇列", "停止": "停止", "停用": "停用", "允许的操作": "允許的操作", "允许签到及附带任务": "允許簽到及附帶任務", "先添加一台网关": "先新增一臺閘道器", "先选择插件声明的账号登录方式,再填写必需字段。OAuth 由共享登录桥负责等待、取消和错误;API 凭证通过账号规范化入口添加。": "先選擇外掛宣告的帳號登入方式,再填寫必填欄位。OAuth 由共用登入橋接負責等待、取消和錯誤;API 憑證透過帳號正規化入口新增。", "免鉴权调用": "免鑑權呼叫", "全不选": "全不選", "全局队列位次(转发按策略在此序上再排)": "全域佇列位次(轉發按策略在此序上再排)", "全部 API Key": "全部 API Key", "全部客户端": "全部客戶端", "全部更新": "全部更新", "共 {n} 条记录": "共 {n} 條記錄", "共享登录桥不可用,请重新打开面板": "共用登入橋接無法使用,請重新開啟面板", "共享运行环境尚未就绪,本插件没有明确的加载失败结果。": "共用執行環境尚未就緒,本外掛沒有明確的載入失敗結果。", "关": "關", "关闭菜单": "關閉選單", "兼容 OpenCode v1 / Magpie 提供商插件及其运行依赖;不加载界面、独立工具或 Pi 扩展。": "相容 OpenCode v1 / Magpie 提供商外掛及其執行依賴;不載入介面、獨立工具或 Pi 擴充功能。", "冷却": "冷卻", "准备运行环境": "準備執行環境", "凭证 JSON 含有不允许的字段:{key}": "憑證 JSON 含有不允許的欄位:{key}", "凭证 JSON 嵌套过深,请只粘贴该插件要求的凭证对象": "憑證 JSON 巢狀層級過深,請只貼上此外掛要求的憑證物件", "凭证 JSON 必须是非空对象,不能是数组或字符串": "憑證 JSON 必須是非空物件,不能是陣列或字串", "凭证 JSON 格式不正确,请检查括号和引号": "憑證 JSON 格式不正確,請檢查括號和引號", "凭证 JSON(必填)": "憑證 JSON(必填)", "凭证只在提交时发送到网关;备注名和代理请使用下面的字段,解析错误不会回显凭证内容。": "憑證只在提交時傳送至閘道;備註名稱和代理請使用下方欄位,解析錯誤不會顯示憑證內容。", "分布来自保留的日报来源明细;无法恢复的历史不反推客户端或模型。": "分佈來自保留的日報來源明細;無法恢復的歷史不反推客戶端或模型。", "分支、标签或提交(留空使用默认分支)": "分支、標籤或提交(留空使用預設分支)", "分组名": "分組名", "分组名,例如「常用」": "分組名,例如「常用」", "切换菜单": "切換選單", "列表 = 模型管理页里所有已启用的模型。助手走本地网关发起对话,消耗所选账号的额度。": "列表 = 模型管理頁裡所有已啟用的模型。助手走本地閘道器發起對話,消耗所選帳號的額度。", "创建并进入": "建立並進入", "创建管理员账号": "建立管理員帳號", "初始化已完成,正在等待校验和登记。": "初始化已完成,正在等待驗證和登記。", "初始化超时": "初始化逾時", "删除 {n} 条": "刪除 {n} 條", "删除分组": "刪除分組", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "刪除分組「{name}」?組內 {n} 個選單會移到「{target}」,不會丟。", "删除空分组「{name}」?": "刪除空分組「{name}」?", "删除这个分组(组内菜单移到第一组)": "刪除這個分組(組內選單移到第一組)", "刷新插件仓库": "重新整理外掛倉庫", "刷新清单": "重新整理清單", "刷新状态": "重新整理狀態", "加入插件 beta 版": "加入插件 beta 版", "加载中": "載入中", "加载助手设置失败:{message}": "載入助手設定失敗:{message}", "加载失败": "載入失敗", "加载失败:{error}": "載入失敗:{error}", "加载更多": "載入更多", "加载更早的记录": "載入更早的記錄", "加载状态": "載入狀態", "加载诊断": "載入診斷", "助手": "助手", "助手自己用哪个模型生成回复": "助手自己用哪個模型生成回覆", "助手设置读取失败,工具可能已过时。": "助手設定讀取失敗,工具可能已過時。", "助手走本地网关,消耗所选账号的额度": "助手走本地閘道器,消耗所選帳號的額度", "勾选即注入该工具;不勾选 = 助手看不到它": "勾選即注入該工具;不勾選 = 助手看不到它", "十几 MB": "十幾 MB", "升级会重新下载并校验插件包(约 {size}),装完立即生效,账号数据不受影响。": "升級會重新下載並校驗外掛包(約 {size}),裝完立即生效,帳號資料不受影響。", "协议版本": "協定版本", "单签": "單籤", "占比": "佔比", "即将就绪": "即將就緒", "卸载": "卸載", "卸载中…": "解除安裝中…", "卸载插件": "解除安裝外掛", "卸载插件包": "解除安裝外掛套件", "历史数据整理中": "歷史資料整理中", "历史明细不完整,输入、输出与缓存读数无法恢复": "歷史明細不完整,輸入、輸出與快取讀數無法恢復", "历史未记录 Key": "歷史未記錄 Key", "原生插件包,来自项目插件仓库": "原生外掛套件,來自專案外掛儲存庫", "原生辅助授权": "原生輔助授權", "原生辅助授权已失效或暂不可用,请重新选择并确认。": "原生輔助授權已失效或暫不可用,請重新選擇並確認。", "原生辅助程序不受 Wasm 沙箱限制,只授权你信任的已安装插件。辅助程序更新后需要重新确认。": "原生輔助程式不受 Wasm 沙箱限制,只授權你信任的已安裝外掛。輔助程式更新後需要重新確認。", "去下载": "去下載", "去登录": "去登入", "参数不完整(需要 account / enabled)": "引數不完整(需要 account / enabled)", "参数不完整(需要 account / position)": "引數不完整(需要 account / position)", "参数不完整(需要 provider / id / alias)": "引數不完整(需要 provider / id / alias)", "参数不完整(需要 provider / id / capabilities)": "引數不完整(需要 provider / id / capabilities)", "参数不完整(需要 provider / id / enabled)": "引數不完整(需要 provider / id / enabled)", "参数不完整(需要 provider / position)": "引數不完整(需要 provider / position)", "发现新版本 {latest}(当前 {current}),点开「设置 - 软件更新」可查看更新日志并下载": "發現新版本 {latest}(當前 {current}),點開「設定 - 軟體更新」可檢視更新日誌並下載", "发现新版本 {version}": "發現新版本 {version}", "发送": "傳送", "取消日期筛选": "取消日期篩選", "受影响的来源将在 {time} 后自动重试": "受影響的來源將在 {time} 後自動重試", "只改映射名,不动上游模型 ID;映射立即生效(新对话即可用)。": "只改對映名,不動上游模型 ID;對映立即生效(新對話即可用)。", "只注入工具定义": "只注入工具定義", "只统计已结束的生产请求;失败请求仍计入请求数,Token 用量沿用现有成功请求口径。": "只統計已結束的生產請求;失敗請求仍計入請求數,Token 用量沿用現有成功請求口徑。", "只读": "只讀", "只读工具": "只讀工具", "可以点击「刷新」读取插件仓库,或从本地 zip 安装插件。": "可以點擊「重新整理」讀取插件倉庫,或從本機 zip 安裝插件。", "可填 {min}–{max} 秒,关闭后保留间隔": "可填 {min}–{max} 秒,關閉後保留間隔", "可安装插件": "可安裝外掛", "可更新": "可更新", "可更新 v{version}": "可更新 v{version}", "可更新到 v{version}": "可更新至 v{version}", "可用": "可用", "可选,留空使用账号昵称": "選填,留空使用帳號暱稱", "各家提供商的转发、账号、签到与余额实现。装好之后这些提供商才会出现在「添加提供商」里。": "各家提供商的轉發、帳號、簽到與餘額實現。裝好之後這些提供商才會出現在「新增提供商」裡。", "各家提供商的转发与账号实现都在插件包里,不随本软件发布。装好插件后,模型转发、添加账号、签到与余额查询才会生效。": "各家供應商的轉發與帳號實作都在外掛套件裡,不隨本軟體發布。裝好外掛後,模型轉發、新增帳號、簽到與餘額查詢才會生效。", "后台只读取状态,不会自动弹出验证码;验证结果一次性使用,短时间内过期。": "背景只讀取狀態,不會自動彈出驗證碼;驗證結果僅能使用一次,短時間內失效。", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "含固定項「設定」,不可整組隱藏(可以單獨隱藏組內其它選單)", "启动较慢,仍在加载;尚未收到失败结果。": "啟動較慢,仍在載入;尚未收到失敗結果。", "启用后重新参与转发": "啟用後重新參與轉發", "启用插件 {name}": "啟用外掛 {name}", "四种组合的实际效果": "四種組合的實際效果", "回复由 {model} 生成 · 走本地网关": "回覆由 {model} 生成 · 走本地閘道器", "固定": "固定", "在 GitHub 上创建令牌(无需勾选任何权限)": "在 GitHub 上建立權杖(無需勾選任何權限)", "在全局队列里上移一位": "在全域佇列裡上移一位", "在全局队列里下移一位": "在全域佇列裡下移一位", "在网关下载并安装": "在閘道器下載並安裝", "填写账号登录所需信息并发起授权;等待、取消与失败原因由共享登录桥处理,设备码和操作指引会显示在上方。": "填寫帳號登入所需資訊並發起授權;等待、取消與失敗原因由共用登入橋接處理,裝置碼和操作指引會顯示在上方。", "备注名(可选)": "備註名(可選)", "复制失败,请手动选择复制": "複製失敗,請手動選擇複製", "复制订阅链接": "複製訂閱連結", "大小": "大小", "失败 · {status}": "失敗 · {status}", "失败退避": "失敗退避", "奖励 {bonus}": "獎勵 {bonus}", "套餐 {plan}": "套餐 {plan}", "套餐池人机验证": "套餐池人機驗證", "套餐池请求需要验证,请主动开始验证后重试请求": "套餐池請求需要驗證,請主動開始驗證後重試請求", "安装": "安裝", "安装 Agent2API 官方提供商": "安裝 Agent2API 官方提供商", "安装 {name}": "安裝 {name}", "安装、更新与启停均作用在这台网关上。插件平台由网关决定,与手机系统无关。": "安裝、更新與啟停均作用在這臺網關上。外掛平臺由閘道器決定,與手機系統無關。", "安装与更新插件时访问 GitHub 用。与「设置 → 更新 → 更新设置」里的同一项互通,填一次即可。不填也能用,只是匿名请求限额较低(60 次/小时)。": "安裝與更新外掛時存取 GitHub 用。與「設定 → 更新 → 更新設定」中的同一項互通,填一次即可。不填也能用,只是匿名請求上限較低(60 次/小時)。", "安装于 {time}": "安裝於 {time}", "安装包已就绪,点「安装」即可完成更新": "安裝包已就緒,點「安裝」即可完成更新", "安装插件包": "安裝外掛套件", "安装时间": "安裝時間", "安装脚本插件": "安裝腳本外掛", "完成时间:{time}": "完成時間:{time}", "官方": "官方", "官方与推荐来自 Magpie 官方名单;第三方来自 GitHub 的 magpie-plugin 标签,不代表官方推荐。": "官方與推薦來自 Magpie 官方名單;第三方來自 GitHub 的 magpie-plugin 標籤,不代表官方推薦。", "官方签名:包内容与发布者签的完全一致,未被改过": "官方簽章:包內容與發佈者簽的完全一致,未被改過", "定时": "定時", "定时任务": "定時任務", "定时检查在网关执行,关闭手机后仍然生效。": "定時檢查在閘道器執行,關閉手機後仍然生效。", "实际注入": "實際注入", "客户端分布": "客戶端分佈", "客户端统计": "客戶端統計", "宿主": "宿主", "宿主错误": "宿主錯誤", "对话": "對話", "对话模型": "對話模型", "对话模型已切换": "對話模型已切換", "将修改 {model} 的 {n} 项能力:": "將修改 {model} 的 {n} 項能力:", "将修改 {n} 个模型的启停状态:": "將修改 {n} 個模型的啟停狀態:", "将修改 {n} 个账号的启用状态(其中禁用 {k} 个):": "將修改 {n} 個帳號的啟用狀態(其中停用 {k} 個):", "将对 {model} 发起一次真实请求:": "將對 {model} 發起一次真實請求:", "将执行 {label}。": "將執行 {label}。", "将把「{provider}」整组移到第 {position} 顺位:": "將把「{provider}」整組移到第 {position} 順位:", "将把账号「{account}」移到第 {position} 顺位:": "將把帳號「{account}」移到第 {position} 順位:", "将改动 {n} 条映射({parts}):": "將改動 {n} 條對映({parts}):", "小米 MiMo": "小米 MiMo", "尚未取得插件清单": "尚未取得外掛清單", "尚未检查更新": "尚未檢查更新", "尚未登录": "尚未登入", "已下载": "已下載", "已下载,待安装": "已下載,待安裝", "已修改 {n} 个模型": "已修改 {n} 個模型", "已修改 {n} 个账号": "已修改 {n} 個帳號", "已修改 {n} 项能力": "已修改 {n} 項能力", "已停止这次回答。": "已停止這次回答。", "已全部取消勾选": "已全部取消勾選", "已关闭自动检查": "已關閉自動檢查", "已删除分组「{name}」": "已刪除分組「{name}」", "已加载": "已載入", "已加载 {n} 家": "已載入 {n} 家", "已勾选 {n} / {total}": "已勾選 {n} / {total}", "已勾选「{label}」": "已勾選「{label}」", "已勾选工具": "已勾選工具", "已取消「{label}」": "已取消「{label}」", "已启动安装器": "已啟動安裝器", "已填写(粘贴新令牌可覆盖)": "已填寫(貼上新權杖可覆蓋)", "已复制{label}": "已複製{label}", "已复制:{text}": "已複製:{text}", "已安装插件": "已安裝外掛", "已完成 {percent}%": "已完成 {percent}%", "已开启自动检查": "已開啟自動檢查", "已恢复推荐勾选": "已恢復推薦勾選", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "已恢復預設分組:概覽 / 轉發鏈路 / 診斷 / 系統", "已改动 {n} 条映射": "已改動 {n} 條對映", "已新建分组「{name}」,点组头的 + 把菜单移进来": "已新建分組「{name}」,點組頭的 + 把選單移進來", "已是最新版本": "已是最新版本", "已显示 {shown} / {total} 个提供商插件": "已顯示 {shown} / {total} 個提供商外掛", "已更新 {count} 个插件": "已更新 {count} 個外掛", "已更新 {done} 个插件,{failed} 个失败:{error}": "已更新 {done} 個外掛,{failed} 個失敗:{error}", "已注入 {n} / {total} 个工具 · 系统提示词:{state}": "已注入 {n} / {total} 個工具 · 系統提示詞:{state}", "已添加 {n} 台": "已新增 {n} 臺", "已添加的服务器": "已新增的伺服器", "已由其他插件接管,请到对应插件中管理。": "已由其他外掛接管,請到對應外掛中管理。", "已登录": "已登入", "已离线 · 显示的是缓存内容": "已離線 · 顯示的是快取內容", "已移到第 {n} 顺位": "已移到第 {n} 順位", "已签名": "已簽章", "已试过": "已試過", "并发上限 {n}": "併發上限 {n}", "并发已满,等一个在途回落再参与": "併發已滿,等一個在途回落再參與", "并发满": "併發滿", "开": "開", "开关和选项即时保存;输入项请点击对应的「保存」按钮。": "開關和選項即時儲存;輸入項請點擊對應的「儲存」按鈕。", "开始时间:{time}": "開始時間:{time}", "开始验证": "開始驗證", "当前": "當前", "当前一个工具都没勾选,助手只能纯聊天。去「设置 → AI 助手 → 工具」里勾上需要的工具。": "當前一個工具都沒勾選,助手只能純聊天。去「設定 → AI 助手 → 工具」裡勾上需要的工具。", "当前兼容无运行时 npm 依赖的提供商插件;不加载 Magpie 界面、Matrix 工具或 Pi 扩展。": "目前相容無執行時期 npm 相依性的提供者外掛;不載入 Magpie 介面、Matrix 工具或 Pi 擴充。", "当前平台": "目前平台", "当前平台暂无包": "目前平台尚無套件", "当前插件未申请原生辅助能力": "目前外掛未申請原生輔助能力", "当前暂不可安装": "目前暫不可安裝", "当前模型请求免人机验证": "目前模型請求免人機驗證", "当前版本 {current},最低可用版本 {minimum}。": "目前版本 {current},最低可用版本 {minimum}。", "当前版本 {version}": "當前版本 {version}", "当前网关": "當前閘道器", "当前网关平台暂无插件包": "當前閘道器平臺暫無外掛包", "当前网关要求插件版本不低于 v{version},补齐前暂不加载。": "目前閘道要求插件版本不低於 v{version},補齊前暫不載入。", "当前:已关闭(助手不收到任何系统提示词,工具定义照发)": "當前:已關閉(助手不收到任何系統提示詞,工具定義照發)", "当前:已开启 · 使用内置默认提示词(还没自定义)": "當前:已開啟 · 使用內建預設提示詞(還沒自定義)", "当前:已开启 · 自定义内容 {n} 字": "當前:已開啟 · 自定義內容 {n} 字", "影响转发": "影響轉發", "待就绪": "待就緒", "待确认": "待確認", "总剩余 {total}": "總剩餘 {total}", "恢复上游原值": "恢復上游原值", "恢复推荐": "恢復推薦", "恢复默认侧边栏": "恢復預設側邊欄", "成功 / 失败": "成功 / 失敗", "成功领取": "成功領取", "我会在动手前把改动列给你确认。": "我會在動手前把改動列給你確認。", "我信任所选辅助程序并允许它执行声明的本机操作": "我信任所選輔助程式並允許它執行宣告的本機操作", "我信任此插件来源,并允许它在网关电脑上运行。": "我信任此外掛來源,並允許它在閘道電腦上執行。", "所有菜单都已在这一组": "所有選單都已在這一組", "手动凭证 JSON": "手動憑證 JSON", "手动凭证 JSON(兼容入口)": "手動憑證 JSON(相容入口)", "手机端打开": "手機端開啟", "打开账号设置": "開啟帳號設定", "执行": "執行", "执行时刻": "執行時刻", "把菜单移入 {name}": "把選單移入 {name}", "把菜单移入「{name}」": "把選單移入「{name}」", "报表": "報表", "拖动分组 {name}": "拖動分組 {name}", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "拖動左側 ⠿ 調整順序(選單可以跨組拖);撥開關控制顯隱;點分組名可重新命名;組頭的 + 把別的選單移進來;眼睛按鈕隱藏整組。改動即時生效並記住,左側側邊欄就是結果。鍵盤也能排序:把手聚焦後按 Alt+↑ / ↓。", "拖动菜单 {name}": "拖動選單 {name}", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "拖動調整分組順序(Alt+↑ / ↓ 也可)", "拖动调整队列顺序": "拖動調整佇列順序", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "拖動調整順序,可跨組(Alt+↑ / ↓ 也可)", "按 API Key 筛选": "按 API Key 篩選", "按 Token": "按 Token", "按天请求趋势": "按天請求趨勢", "按客户端筛选": "按客戶端篩選", "按模型展开队列": "按模型展開佇列", "按访问网关的 API Key 统计生产请求,不包含助手对话和模型测试。停用、删除 Key 不会删除历史用量;密钥值不会进入报表。历史没有记录身份的请求单列,不能追溯到某把 Key。": "按存取閘道器的 API Key 統計生產請求,不包含助手對話和模型測試。停用、刪除 Key 不會刪除歷史用量;金鑰值不會進入報表。歷史沒有記錄身份的請求單列,不能追溯到某把 Key。", "按请求 User-Agent 识别的客户端类型统计,不代表设备或用户数。“其它”表示有 User-Agent 但未匹配已知类型;“未记录客户端”表示旧数据或请求未带 User-Agent。": "按請求 User-Agent 識別的客戶端型別統計,不代表裝置或使用者數。“其它”表示有 User-Agent 但未匹配已知型別;“未記錄客戶端”表示舊資料或請求未帶 User-Agent。", "按请求数": "按請求數", "按请求的模型展开 —— 与转发选路同一份排序,下一个请求会走 ★ 那位": "按請求的模型展開 —— 與轉發選路同一份排序,下一個請求會走 ★ 那位", "按间隔检查插件版本,在对应卡片显示更新;关闭后仍可手动检查。自动更新或自动下载开启时也使用此间隔。": "按間隔檢查插件版本,在對應卡片顯示更新;關閉後仍可手動檢查。自動更新或自動下載開啟時也使用此間隔。", "按需下载": "按需下載", "按需安装插件,为 AI 路由网关扩展提供商能力。插件独立于主程序更新,下载完成后自动校验并安装。": "按需安裝插件,為 AI 路由閘道擴充供應商能力。插件獨立於主程式更新,下載完成後自動驗證並安裝。", "换一组筛选条件,或把来源和状态都切回「全部」。": "換一組篩選條件,或把來源和狀態都切回「全部」。", "授权": "授權", "排序已保存,但列表刷新失败:{message}": "排序已儲存,但清單重新整理失敗:{message}", "排序未保存:{message}": "排序未儲存:{message}", "排序设置迁移失败:{message}": "排序設定移轉失敗:{message}", "排第 1 的接走所有请求,直到它不能答(限流 / 故障 / 额度尽)才轮到下一位 —— 就是「从上往下」的现状行为。": "排第 1 的接走所有請求,直到它不能答(限流 / 故障 / 額度盡)才輪到下一位 —— 就是「從上往下」的現狀行為。", "接入 Agnes AI 国际版:浏览器登录、在线模型目录、套餐用量与美元余额;与 Agnes Code 桌面版独立。": "接入 Agnes AI 國際版:瀏覽器登入、線上模型目錄、方案用量與美元餘額;與 Agnes Code 桌面版獨立。", "接入 Agnes Code:本机登录态或 accessToken、模型目录、积分与登录奖励观测。": "接入 Agnes Code:本機登入狀態或 accessToken、模型目錄、積分與登入獎勵觀測。", "接入 Codar(科搭):本机凭据、模型目录、积分与滚动窗口签到。": "接入 Codar(科搭):本機憑證、模型目錄、積分與滾動時間窗簽到。", "接入 DeepAI Code:网页登录、本机凭据、模型目录、额度查询与签到。": "接入 DeepAI Code:網頁登入、本機憑證、模型目錄、額度查詢與簽到。", "接入 JoyCode(京东):网页登录、企业租户、模型目录与额度明细。": "接入 JoyCode(京東):網頁登入、企業租戶、模型目錄與額度明細。", "接入 WPS 灵犀:网页登录、客户端导入、Cookie、模型目录与智点;签到及附带任务默认允许。": "接入 WPS 靈犀:網頁登入、用戶端匯入、Cookie、模型目錄與智點;簽到及附帶任務預設允許。", "接入中国移动云 MClaw:浏览器登录、在线模型目录、aitokens 额度与凭证续期。": "接入中國移動雲 MClaw:瀏覽器登入、線上模型目錄、aitokens 額度與憑證續期。", "接入书生·端砚墨点计划:浏览器登录、API Key、模型目录与墨点额度窗口。": "接入書生·端硯墨點計畫:瀏覽器登入、API Key、模型目錄與墨點額度時間窗。", "接口不兼容": "介面不相容", "接口文档": "介面文件", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "控制主側邊欄顯示哪些選單、按什麼順序、怎麼分組。隱藏隻影響導航顯示,不會撤銷頁面存取許可權;被隱藏的頁面仍可通過地址直接開啟。", "提供商启停": "提供商啟停", "提供商增强": "提供商增強", "提供商设置": "供應商設定", "提示词": "提示詞", "提示词开关": "提示詞開關", "插件": "外掛", "插件与当前网关的公共接口不兼容,暂未加载。": "外掛與目前閘道的公開介面不相容,暫未載入。", "插件仓库": "外掛倉庫", "插件仓库还没有发布任何版本。可以点「刷新」重试,或用「从文件安装…」选中本地 zip。": "外掛倉庫還沒有釋出任何版本。可以點「重新整理」重試,或用「從檔案安裝…」選中本地 zip。", "插件任务": "外掛任務", "插件包与主程序分开安装、分开升级。卸载插件后账号数据仍然保留,重新装回即可继续使用;仅该包提供的转发与添加账号需要插件,本体订阅不受影响。": "外掛套件與主程式分開安裝、分開升級。解除安裝後帳號資料仍保留,重新安裝即可繼續使用;僅該套件提供的轉發與新增帳號需要外掛,本體訂閱不受影響。", "插件包与主程序分开安装、分开升级。卸载插件后账号数据仍然保留,重新装回即可继续使用;但转发与添加账号需要插件在位。": "外掛套件與主程式分開安裝、分開升級。解除安裝外掛後帳號資料仍然保留,重新裝回即可繼續使用;但轉發與新增帳號需要外掛在位。", "插件包大小不能超过 {n} MiB": "外掛套件大小不能超過 {n} MiB", "插件包已卸载": "外掛套件已解除安裝", "插件包已安装": "外掛套件已安裝", "插件包已安装到 v{version}": "插件套件已安裝至 v{version}", "插件包已更新到 v{version}": "外掛包已更新到 v{version}", "插件包的可执行文件不在磁盘上(可能被手工删除或移动),请重新安装。": "外掛套件的執行檔不在磁碟上(可能被手動刪除或移動),請重新安裝。", "插件参数必须是 JSON 对象": "外掛參數必須是 JSON 物件", "插件发布信息读取失败,请稍后刷新": "外掛發布資訊讀取失敗,請稍後重新整理", "插件只声明了短信登录,但没有下发可用的动态表单;此界面不会猜测短信接口": "外掛只宣告了簡訊登入,卻未提供可用的動態表單;此介面不會猜測簡訊 API", "插件尚未声明有效版本,暂时无法安装": "外掛尚未宣告有效版本,暫時無法安裝", "插件尚未提供可下载的发布包": "外掛尚未提供可下載的發布套件", "插件已就绪,账号列表将自动同步。": "外掛已就緒,帳號清單將自動同步。", "插件文件缺失,请在电脑端重新安装插件包": "外掛檔案缺失,請在電腦端重新安裝外掛包", "插件文件缺失,请重新安装插件包": "外掛檔案缺失,請重新安裝外掛包", "插件更新未完成": "外掛更新未完成", "插件未启用或已不再申请此权限;已有授权仍可撤销。": "外掛未啟用或已不再申請此權限;既有授權仍可撤銷。", "插件未实现 auth.methods(501),且没有可用的旧版登录声明;仅保留需要插件确认的手动凭证 JSON 入口": "外掛未實作 auth.methods(501),且沒有可用的舊版登入宣告;僅保留需要外掛確認的手動憑證 JSON 入口", "插件未实现 auth.methods(501);以下入口仅依据旧版登录声明显示": "外掛未實作 auth.methods(501);以下入口僅依據舊版登入宣告顯示", "插件没有声明可用的账号登录方式,请更新插件或联系插件作者": "外掛未宣告可用的帳號登入方式,請更新外掛或聯絡外掛作者", "插件清单暂未完整读取": "外掛清單尚未完整讀取", "插件版本(留空使用 latest)": "外掛版本(留空使用 latest)", "插件状态已变更,但账号列表同步失败。请回到账号页点击「刷新」重试。": "外掛狀態已變更,但帳號清單同步失敗。請回到帳號頁點擊「重新整理」重試。", "插件独立安装与更新。卸载后账号数据仍会保留;脚本插件共用一个按需下载的运行时。": "外掛獨立安裝與更新。解除安裝後帳號資料仍會保留;腳本外掛共用一個按需下載的執行環境。", "插件登录指引": "外掛登入指引", "插件登录方式包含重复的输入字段": "外掛的登入方式包含重複的輸入欄位", "插件登录选择字段包含无效或重复的选项": "外掛的登入選擇欄位包含無效或重複的選項", "插件登录选择字段缺少选项列表": "外掛的登入選擇欄位缺少選項清單", "插件目录": "外掛目錄", "插件设置": "外掛設定", "插件设置已保存": "插件設定已儲存", "插件返回了无效的登录字段,请更新插件或联系作者": "外掛回傳了無效的登入欄位,請更新外掛或聯絡作者", "插件返回了无效的登录方式,请更新插件或联系作者": "外掛回傳了無效的登入方式,請更新外掛或聯絡作者", "插件选项": "外掛選項", "插件页面": "外掛頁面", "搜索…": "搜尋…", "搜索插件": "搜尋外掛", "撤销授权": "撤銷授權", "支持自动授权、设备码、手动授权码和插件声明的凭据表单;本机读取作用于网关电脑。": "支援自動授權、裝置碼、手動授權碼和外掛宣告的憑證表單;本機讀取作用於閘道電腦。", "改动立即生效;禁用后指向它的请求会落到下一个候选。": "改動立即生效;停用後指向它的請求會落到下一個候選。", "改动类工具": "改動類工具", "改成": "改成", "文件缺失": "檔案缺失", "文档": "文件", "新": "新", "新分组名": "新分組名", "新增 {n} 条": "新增 {n} 條", "新对话": "新對話", "新建分组": "新建分組", "无凭证": "無憑證", "无法解密": "無法解密", "无法读取插件更新进度,请刷新后查看结果。": "無法讀取外掛更新進度,請重新整理後查看結果。", "无法读取登录方式": "無法讀取登入方式", "日志": "日誌", "旧版本保存的正文可能已截断,无法恢复缺失内容": "舊版本儲存的正文可能已截斷,無法恢復缺失內容", "旧版浏览器登录暂不接收备注名和登录代理,请添加后在账号设置中调整。": "舊版瀏覽器登入暫不接受備註名稱和登入代理,請新增後在帳號設定中調整。", "旧版登录方式": "舊版登入方式", "映射名": "對映名", "显示 {name}": "顯示 {name}", "显示分组 {name}": "顯示分組 {name}", "显示这一组": "顯示這一組", "智能": "智慧", "暂不可安装": "暫不可安裝", "暂不可用": "暫不可用", "暂无可安装的插件": "暫無可安裝的插件", "暂无可用的原生辅助程序,请先安装并启用所需插件。": "暫無可用的原生輔助程式,請先安裝並啟用所需外掛。", "暂时无法获取插件状态,显示上次结果;这不代表插件启动失败。": "暫時無法取得外掛狀態,顯示上次結果;這不代表外掛啟動失敗。", "暂时查不到插件仓库({reason})。可以点「刷新」重试,或用「从文件安装…」选中本地 zip。": "暫時查不到外掛倉庫({reason})。可以點「重新整理」重試,或用「從檔案安裝…」選中本地 zip。", "暂未发布": "尚未發布", "暂未取得明确的加载结果,不能据此判断启动失败。": "暫未取得明確的載入結果,不能據此判斷啟動失敗。", "更多": "更多", "更新": "更新", "更新到 v{version}": "更新至 v{version}", "更新前无法继续调用模型;账号、配置和历史记录不会被删除。": "更新前無法繼續呼叫模型;帳號、設定和歷史記錄不會被刪除。", "更新或启停会等待共享宿主内的请求结束;账号数据始终由网关统一保存。": "更新或啟停會等待共用宿主內的請求結束;帳號資料始終由閘道統一儲存。", "更新/重装": "更新/重裝", "最大化": "最大化", "最小化": "最小化", "最早 {time} 恢复": "最早 {time} 恢復", "最近调用": "最近呼叫", "有": "有", "有 {count} 个插件可更新": "有 {count} 個外掛可更新", "有插件包的协议版本与当前网关不一致({versions}),请下载对应版本的插件包。": "有外掛套件的協定版本與目前閘道不一致({versions}),請下載對應版本的外掛套件。", "有新版本,重启后生效": "有新版本,重啟後生效", "有新版本:v{current} → v{latest}": "有新版本:v{current} → v{latest}", "有更新": "有更新", "服务器": "伺服器", "服务器已切换,请重新加载页面": "伺服器已切換,請重新載入頁面", "未加载": "未載入", "未同步": "未同步", "未就绪": "未就緒", "未授权": "未授權", "未登录": "未登入", "未知工具「{name}」:它在设置里可能刚被取消勾选,或这一版助手还不认识它。": "未知工具「{name}」:它在設定裡可能剛被取消勾選,或這一版助手還不認識它。", "未签名": "未簽章", "未签名包不会自动覆盖;点击「补齐插件」将安装官方签名包。": "未簽章套件不會自動覆寫;點擊「補齊插件」將安裝官方簽章套件。", "未签名:可以正常使用,但无法证明这个包出自官方;升级时同样只做格式校验": "未簽章:可以正常使用,但無法證明這個包出自官方;升級時同樣只做格式校驗", "未能保存自动刷新设置": "無法儲存自動重新整理設定", "未能读取自动刷新设置": "無法讀取自動重新整理設定", "未记录": "未記錄", "未记录客户端": "未記錄客戶端", "未运行": "未執行", "未选择服务器": "未選擇伺服器", "本周期消耗达到限制器上限,转发时跳过": "本週期消耗達到限制器上限,轉發時跳過", "本地网关监听状态": "本地閘道器監聽狀態", "本次初始化超过等待时限,已停止;可查看诊断后重试。": "本次初始化超過等待時限,已停止;可查看診斷後重試。", "本次加载未完成,请查看诊断。": "本次載入未完成,請查看診斷。", "本次用时 {n} 秒": "本次用時 {n} 秒", "权限": "權限", "来自 Magpie 社区的插件,共用一个按需下载的运行时": "來自 Magpie 社群的外掛,共用一個按需下載的執行環境", "来自环境变量": "來自環境變數", "来自环境变量 GITHUB_TOKEN": "來自環境變數 GITHUB_TOKEN", "松开刷新": "鬆開重新整理", "查余额": "查餘額", "查看 GitHub 仓库:{repository}": "查看 GitHub 儲存庫:{repository}", "查看全部": "檢視全部", "查看参数": "檢視引數", "查看发布说明": "查看發佈說明", "查看发布页面": "查看發布頁面", "查看提供商插件": "查看供應商外掛", "查看更新日志": "查看更新日誌", "查看结果": "檢視結果", "查看进度": "查看進度", "查询该账号的余额": "查詢該帳號的餘額", "标题总结设置": "標題總結設定", "桌面桥不可用(本页需要在 Agent2API 客户端里打开)": "桌面橋不可用(本頁需要在 Agent2API 客戶端裡開啟)", "检查更新失败": "檢查更新失敗", "检测到更新后自动下载、校验并安装已启用的官方签名插件。": "偵測到更新後自動下載、驗證並安裝已啟用的官方簽章插件。", "检测到更新后自动下载、校验并安装已启用的官方签名插件。未签名或第三方插件仍需手动更新。": "偵測到更新後自動下載、驗證並安裝已啟用的官方簽章插件。未簽章或第三方插件仍需手動更新。", "模型分布": "模型分佈", "模型管理": "模型管理", "次熔断": "次熔斷", "正在下载 Bun 运行时": "正在下載 Bun 執行環境", "正在下载…": "正在下載…", "正在下载脚本插件": "正在下載腳本外掛", "正在初始化插件,尚未收到失败结果。": "正在初始化外掛,尚未收到失敗結果。", "正在加载": "正在載入", "正在加载 · {n} 家提供商的账号暂未显示,就绪后自动恢复。": "正在載入 · {n} 家提供商的帳號暫未顯示,就緒後自動恢復。", "正在加载新插件…": "正在載入新插件…", "正在加载脚本插件": "正在載入腳本外掛", "正在启动": "正在啟動", "正在启动插件,账号将在就绪后自动恢复。": "正在啟動外掛,帳號將在就緒後自動恢復。", "正在完成人机验证…": "正在完成人機驗證…", "正在应用…": "正在應用…", "正在恢复原有脚本插件": "正在還原原有腳本外掛", "正在恢复旧版本插件…": "正在恢復舊版本插件…", "正在更新第 {index}/{total} 个…": "正在更新第 {index}/{total} 個…", "正在校验包内容…": "正在驗證套件內容…", "正在检查…": "正在檢查…", "正在检查或准备脚本运行环境。": "正在檢查或準備指令碼執行環境。", "正在自动补齐官方插件,不受日常更新开关和通道限制。": "正在自動補齊官方插件,不受日常更新開關和通道限制。", "正在补齐插件…": "正在補齊插件…", "正在识别二维码…": "正在識別二維碼…", "正在读取、校验并安装插件包…": "正在讀取、驗證並安裝插件套件…", "正在读取插件信息 {done}/{total}": "正在讀取外掛資訊 {done}/{total}", "正在读取插件列表…": "正在讀取插件清單…", "正在读取插件清单…": "正在讀取外掛清單…", "正在读取插件登录方式…": "正在讀取外掛登入方式…", "正在读取文件…": "正在讀取檔案…", "正在连接…": "正在連線…", "正在重试…": "正在重試…", "正在验证…": "正在驗證…", "此 OAuth 方法未声明备注名字段,账号名由插件获取;添加后可在账号设置中修改。": "此 OAuth 方式未宣告備註名稱欄位,帳號名稱由外掛取得;新增後可在帳號設定中修改。", "此插件不是提供商插件,当前无法安装": "此外掛不是提供商外掛,目前無法安裝", "此方式可能需要手动提交授权回调。完成官方登录后,按共享登录桥的提示粘贴完整回调地址;不要把回调地址当作 API Key 或 Token。": "此方式可能需要手動提交授權回呼。完成官方登入後,依共用登入橋接的提示貼上完整回呼網址;不要將回呼網址當作 API Key 或 Token。", "此旧版登录声明无法安全映射到动态表单,请联系插件作者": "此舊版登入宣告無法安全對應到動態表單,請聯絡外掛作者", "此登录方式需要由共享登录桥发起": "此登入方式需要由共用登入橋接發起", "每台服务器的登录状态各自独立保存,切换后不用重新登录。地址改掉后需要重新登录。": "每臺伺服器的登入狀態各自獨立儲存,切換後不用重新登入。地址改掉後需要重新登入。", "每日签到及一次性任务;可能消耗智点、发送对话并创建及解散群聊": "每日簽到及一次性任務;可能消耗智點、傳送對話並建立及解散群聊", "每条请求轮换到下一个可用账号;新会话交给最近最闲的那位。适合想把手里的号雨露均沾。": "每條請求輪換到下一個可用帳號;新會話交給最近最閒的那位。適合想把手裡的號雨露均霑。", "每轮": "每輪", "没有可恢复的维度明细": "沒有可恢復的維度明細", "没有可更新的版本": "沒有可更新的版本", "没有已启用的模型": "沒有已啟用的模型", "没有找到提供商「{provider}」的账号": "沒有找到提供商「{provider}」的帳號", "没有找到账号「{name}」": "沒有找到帳號「{name}」", "没有符合筛选条件的插件": "沒有符合篩選條件的外掛", "没有说明": "沒有說明", "没有近期套餐池请求,不生成验证码令牌": "沒有近期套餐池請求,不產生驗證碼權杖", "没给账号名": "沒給帳號名", "注入系统提示词": "注入系統提示詞", "活动": "活動", "浅色": "淺色", "消耗该账号额度": "消耗該帳號額度", "消耗额度": "消耗額度", "深色": "深色", "添加": "新增", "添加失败": "新增失敗", "添加服务器": "新增伺服器", "清单更新于 {time}": "清單更新於 {time}", "清空 = 回到内置默认(与「恢复默认」等价)。": "清空 = 回到內建預設(與「恢復預設」等價)。", "清除失败:{error}": "清除失敗:{error}", "点「编辑」弹窗改内容;开关关掉就整段不发。": "點「編輯」彈窗改內容;開關關掉就整段不發。", "点击重命名": "點擊重新命名", "熔断": "熔斷", "熔断时长(秒)": "熔斷時長(秒)", "版本 {version} · 从 GitHub 直接下载安装包": "版本 {version} · 從 GitHub 直接下載安裝包", "版本 {version} · 从网关下载安装包": "版本 {version} · 從閘道器下載安裝包", "版本 {version} · 更新包需从 Release 页面获取": "版本 {version} · 更新包需從 Release 頁面獲取", "环境变量 Key": "環境變數 Key", "用一句话让我查或改本机的模型转发配置。": "用一句話讓我查或改本機的模型轉發配置。", "用量占比最低的先用;没有读数的账号按队列位次排在有读数的后面。适合「谁空谁上」。": "用量佔比最低的先用;沒有讀數的帳號按佇列位次排在有讀數的後面。適合「誰空誰上」。", "用量详情": "用量詳情", "由其他插件接管": "由其他外掛接管", "电脑端已关闭「软件版本检查」,此处只做手动检查": "電腦端已關閉「軟體版本檢查」,此處只做手動檢查", "登录、模型调用、模型列表、余额查询和签到等功能,可能因插件实现或上游变化而不可用。": "登入、模型呼叫、模型清單、餘額查詢和簽到等功能,可能因外掛實作或上游變動而無法使用。", "登录指引 / 设备码授权": "登入指引 / 裝置碼授權", "登录支持自动完成的 OAuth/设备码和 API Key;要求手动回调的插件暂不支持。": "登入支援自動完成的 OAuth/裝置碼和 API Key;要求手動回呼的外掛暫不支援。", "登录方式说明": "登入方式說明", "登录桥未确认账号添加完成": "登入橋接未確認帳號新增完成", "登录面板": "登入面板", "监听 127.0.0.1": "監聽 127.0.0.1", "直接加载兼容的 Magpie / OpenCode v1 提供商包,多个插件共用一个 Bun 进程。": "直接載入相容的 Magpie / OpenCode v1 提供者套件,多個外掛共用一個 Bun 程序。", "直接说要改什么 / 查什么…(Enter 发送,Shift+Enter 换行)": "直接說要改什麼 / 查什麼…(Enter 傳送,Shift+Enter 換行)", "确定删除账号「{name}」?{note}": "確定刪除帳號「{name}」?{note}", "确定卸载「{name}」吗?卸载后这个包里的提供商将无法转发,也无法添加账号。账号数据本身不会被删除,重新安装后可以继续使用。": "確定解除安裝「{name}」嗎?解除安裝後這個套件裡的供應商將無法轉發,也無法新增帳號。帳號資料本身不會被刪除,重新安裝後可以繼續使用。", "确定卸载「{name}」吗?对应提供商将停止转发,账号数据仍然保留,重新安装后恢复。": "確定解除安裝「{name}」嗎?對應提供者將停止轉發,帳號資料仍然保留,重新安裝後還原。", "确认后立即生效": "確認後立即生效", "确认并安装": "確認並安裝", "确认授权": "確認授權", "社区": "社群", "社区插件": "社群外掛", "禁用会把账号移出转发队列;若这条线路没有别的可用账号,请求会直接失败。": "停用會把帳號移出轉發佇列;若這條線路沒有別的可用帳號,請求會直接失敗。", "禁用后不参与转发,余额仍可查": "停用後不參與轉發,餘額仍可查", "移入「{name}」": "移入「{name}」", "稍后": "稍後", "空分组 · 点组头的 + 把菜单移进来": "空分組 · 點組頭的 + 把選單移進來", "立即刷新": "立即重新整理", "立即升级": "立即升級", "第 {current} / {total} 页": "第 {current} / {total} 頁", "第三方": "第三方", "等待前面的插件完成,不代表加载失败。": "等待前面的外掛完成,不代表載入失敗。", "等待加载": "等待載入", "等待当前任务结束,插件继续服务…": "等待目前任務結束,插件繼續服務…", "等待窗口": "等待視窗", "等待脚本插件的在途请求和登录完成": "等待腳本外掛的進行中請求和登入完成", "等待账号登录完成…": "等待帳號登入完成…", "等待运行环境恢复": "等待執行環境恢復", "等这一轮跑完…": "等這一輪跑完…", "签到中心": "簽到中心", "签到及插件附带任务;可能消耗额度,具体行为由插件决定": "簽到及外掛附帶任務;可能消耗額度,具體行為由外掛決定", "签到及附带任务默认允许,实际执行遵循签到中心的开关和计划。": "簽到及附帶任務預設允許,實際執行遵循簽到中心的開關和排程。", "管理所连接网关的插件,不在手机上安装提供商插件": "管理所連線閘道器的外掛,不在手機上安裝提供商外掛", "粘贴 GitHub 令牌(ghp_… / github_pat_…)": "貼上 GitHub 權杖(ghp_… / github_pat_…)", "粘贴插件要求的 JSON 对象,不要包含 provider、name、proxy 或登录流程控制字段": "貼上外掛要求的 JSON 物件,不要包含 provider、name、proxy 或登入流程控制欄位", "系统提示词 + 工具定义": "系統提示詞 + 工具定義", "系统提示词已保存": "系統提示詞已儲存", "系统提示词已关闭": "系統提示詞已關閉", "系统提示词已开启": "系統提示詞已開啟", "统计排序": "統計排序", "继续安装": "繼續安裝", "缓存读取": "快取讀取", "编辑服务器": "編輯伺服器", "编辑系统提示词": "編輯系統提示詞", "网关 Key": "閘道器 Key", "网关插件": "閘道器外掛", "网关正在下载…": "閘道器正在下載…", "网关正在安装…": "閘道器正在安裝…", "网关正在校验…": "閘道器正在校驗…", "网关没有返回有效的登录方式列表,无法确认该插件的登录能力": "閘道沒有回傳有效的登入方式清單,無法確認此外掛的登入能力", "网关运行中": "閘道器執行中", "网络不可达": "網路不可達", "网络代理": "網路代理", "网页提供商": "網頁提供商", "网页登录(旧版声明)": "網頁登入(舊版宣告)", "能力位决定下游看到的声明(能不能贴图、能塞多少上下文),不改上游的真实行为。": "能力位決定下游看到的宣告(能不能貼圖、能塞多少上下文),不改上游的真實行為。", "脚本不是安全沙箱,可以访问网关所在电脑的文件和网络。不要安装来历不明的插件。": "腳本不是安全沙箱,可以存取閘道所在電腦的檔案和網路。不要安裝來歷不明的外掛。", "脚本插件共用运行环境;重试会等待当前任务结束,不会删除账号或重新安装插件。": "指令碼外掛共用執行環境;重試會等待目前工作結束,不會刪除帳號或重新安裝外掛。", "脚本签到可能包含额外任务并消耗额度。WPS 灵犀还可能发送对话、创建及解散群聊;授权后会接入现有自动签到计划。": "腳本簽到可能包含額外任務並消耗額度。WPS 靈犀還可能傳送對話、建立及解散群聊;授權後會接入現有自動簽到計畫。", "自动": "自動", "自动刷新间隔(秒)": "自動重新整理間隔(秒)", "自动匹配平台": "自動匹配平臺", "自动安装": "自動安裝", "自动更新插件": "自動更新插件", "自动检查插件更新": "自動檢查插件更新", "自动维护": "自動維護", "至少要保留一个分组": "至少要保留一個分組", "补签": "補籤", "补齐插件": "補齊插件", "订阅里的节点会自动同步进下方代理池,账号即可引用。": "訂閱裡的節點會自動同步進下方代理池,帳號即可引用。", "订阅里的节点会被内核起成本地监听器,镜像到下方代理池(账号按 id 引用,与本页其它出口同一用法)。": "訂閱裡的節點會被核心起成本地監聽器,映象到下方代理池(帳號按 id 引用,與本頁其它出口同一用法)。", "订阅链接必须是 http:// 或 https:// 开头": "訂閱連結必須是 http:// 或 https:// 開頭", "设备授权码:{code}": "裝置授權碼:{code}", "设备码授权时,请按网关给出的指引在官方页面确认设备授权码。没有授权地址不等于失败,可能需要在网关本机客户端完成操作;请以共享登录桥返回的状态为准。": "裝置碼授權時,請依閘道提供的指引在官方頁面確認裝置授權碼。沒有授權網址不等於失敗,可能需要在閘道本機用戶端完成操作;請以共用登入橋接回傳的狀態為準。", "设置": "設定", "设置不可隐藏(隐藏了只能清缓存找回来)": "設定不可隱藏(隱藏了只能清快取找回來)", "设置已生效,但写入磁盘失败(重启后会恢复原设置)": "設定已生效,但寫入磁碟失敗(重新啟動後會恢復原設定)", "设置未同步": "設定未同步", "诊断": "診斷", "诊断信息": "診斷資訊", "该提供商已不在运行时目录中,请返回列表重新选择": "此供應商已不在執行時清單中,請返回清單重新選擇", "该登录方式没有可选项,无法提交;请更新插件或联系作者": "此登入方式沒有可選項,無法提交;請更新外掛或聯絡作者", "请允许安装未知来源应用后重试": "請允許安裝未知來源應用後重試", "请先在插件页授权签到及附带任务": "請先在外掛頁授權簽到及附帶任務", "请先粘贴 GitHub 令牌": "請先貼上 GitHub 權杖", "请先选择有效的 OAuth 登录方式": "請先選擇有效的 OAuth 登入方式", "请在 Release 页面下载后通过 TestFlight 或 App Store 安装": "請在 Release 頁面下載後通過 TestFlight 或 App Store 安裝", "请填一个分组名": "請填一個分組名", "请填写订阅名称": "請填寫訂閱名稱", "请填写非空的凭证 JSON 对象,且不超过 256 KiB": "請填寫非空的憑證 JSON 物件,且不超過 256 KiB", "请查看上方原因,稍后刷新重试。": "請查看上方原因,稍後重新整理重試。", "请根据不兼容原因更新插件或网关;不会要求两者版本号一致。": "請根據不相容原因更新外掛或閘道;不會要求兩者版本號一致。", "请求失败": "請求失敗", "请求失败:{message}": "請求失敗:{message}", "请求数": "請求數", "请求日志": "請求日誌", "请确认": "請確認", "请稍候": "請稍候", "请输入 {min}–{max} 之间的整数秒数": "請輸入 {min}–{max} 之間的整數秒數", "请选择 {label} 的有效选项": "請選擇 {label} 的有效選項", "读取完成的插件会陆续显示,无需停留在此页面等待。": "讀取完成的外掛會陸續顯示,無需停留在此頁面等待。", "读取插件仓库失败": "讀取外掛倉庫失敗", "读取插件状态失败:{error}": "讀取外掛狀態失敗:{error}", "读取文件失败": "讀取檔案失敗", "读取消耗排序失败:{message}": "讀取消耗排序失敗:{message}", "读取设置失败:{error}": "讀取設定失敗:{error}", "账号 / 登录出网代理": "帳號 / 登入對外連線代理", "账号不在当前队列里": "帳號不在當前佇列裡", "账号列表响应异常": "帳號清單回應異常", "账号已删除": "帳號已刪除", "账号已在全局队列第一位": "帳號已在全域佇列第一位", "账号排序接口不可用,请确认网关与界面已更新": "帳號排序 API 無法使用,請確認閘道器與介面已更新", "账号登录方式": "帳號登入方式", "趋势统计指标": "趨勢統計指標", "趋势统计维度": "趨勢統計維度", "跟随系统": "跟隨系統", "路由策略": "路由策略", "转发失败的账号休息一会儿再回来(连续失败翻倍,上限 1 小时)": "轉發失敗的帳號休息一會兒再回來(連續失敗翻倍,上限 1 小時)", "转发能力": "轉發能力", "轮流均摊": "輪流均攤", "软件版本检查设置不可用": "軟體版本檢查設定不可用", "输入 / 输出": "輸入 / 輸出", "输入这台网关的管理员账号与密码。": "輸入這臺網關的管理員帳號與密碼。", "运行日志": "執行日誌", "运行时不内置于安装包,首次安装脚本插件时自动下载并校验。": "執行環境不內建於安裝套件,首次安裝腳本外掛時自動下載並驗證。", "运行正常 · {url}": "執行正常 · {url}", "运行状态": "執行狀態", "返回": "返回", "还有额度时被 429 的账号排到队尾,轮一圈才回来 —— 负载摊开而不是每次回到第 1 个": "還有額度時被 429 的帳號排到隊尾,輪一圈才回來 —— 負載攤開而不是每次回到第 1 個", "还没有安装任何提供商插件包": "尚未安裝任何供應商外掛套件", "还没有签到记录": "還沒有簽到記錄", "还没有订阅:粘贴订阅链接,或从图片识别二维码导入。": "還沒有訂閱:貼上訂閱連結,或從圖片識別二維碼匯入。", "还没有选择对话模型:先在下方选一个(或去「设置 → AI 助手」里选)。": "還沒有選擇對話模型:先在下方選一個(或去「設定 → AI 助手」裡選)。", "这一版没有提供 Android 安装包:{reason}": "這一版沒有提供 Android 安裝包:{reason}", "这一项已隐藏": "這一項已隱藏", "这一项正在显示": "這一項正在顯示", "这个包提供的提供商(可单独停用某一家)": "這個套件提供的供應商(可單獨停用某一家)", "这个模型下没有可用账号": "這個模型下沒有可用帳號", "这个面板没有管理员,用一把已启用的 API Key 访问(在桌面端「网关 Key」页创建)。": "這個面板沒有管理員,用一把已啟用的 API Key 存取(在桌面版「閘道器 Key」頁建立)。", "这会真实发起上游请求并消耗额度": "這會真實發起上游請求並消耗額度", "这台网关没有管理员,用一把已启用的 API Key 访问(在桌面端「网关 Key」页创建)。": "這臺網關沒有管理員,用一把已啟用的 API Key 存取(在桌面版「閘道器 Key」頁建立)。", "这台网关还没有安装插件": "這臺網關還沒有安裝外掛", "这台网关还没有管理员。设置一个账号密码,之后用它登录。": "這臺網關還沒有管理員。設定一個帳號密碼,之後用它登入。", "这是旧插件的手动兼容入口,不代表支持任意凭证或登录方式。请仅粘贴该插件明确接受的凭证 JSON;网关会交给 account.normalize 校验,不会自动推断 Token、Cookie 或 OAuth。": "這是舊外掛的手動相容入口,不代表支援任意憑證或登入方式。請僅貼上此外掛明確接受的憑證 JSON;閘道會交給 account.normalize 驗證,不會自動推斷 Token、Cookie 或 OAuth。", "这是真实的上游请求,与生产走同一条链路(会记账,报表排除)。": "這是真實的上游請求,與生產走同一條鏈路(會記賬,報表排除)。", "这段文本作为 system 消息排在对话最前面。工具的定义与当前配置概览由网关自动附加,不用写在这里。": "這段文本作為 system 訊息排在對話最前面。工具的定義與當前配置概覽由閘道器自動附加,不用寫在這裡。", "连不上插件仓库,请检查网络或代理后重试": "連不上外掛倉庫,請檢查網路或代理後重試", "连接 {n}": "連線 {n}", "连接已有 SAP AI Core 部署:从网关本机导入凭据文件,按资源组获取模型;不创建部署或查询额度。": "連接既有 SAP AI Core 部署:從閘道本機匯入憑證檔案,按資源群組取得模型;不建立部署或查詢額度。", "连接并保存": "連線並儲存", "连续失败到阈值后熔断一段时间;到点放行试一次,连续成功才算恢复": "連續失敗到閾值後熔斷一段時間;到點放行試一次,連續成功才算恢復", "连续失败阈值": "連續失敗閾值", "连续崩溃": "連續當機", "连通 · {ms}ms": "連通 · {ms}ms", "选择对话模型…": "選擇對話模型…", "选择模型…": "選擇模型…", "选择要安装的平台。装好之后这些提供商才会出现在「添加提供商」里。": "選擇要安裝的平臺。裝好之後這些提供商才會出現在「新增提供商」裡。", "通过 API Key 接入 River 对话与在线模型目录;插件不提供余额数值。": "透過 API Key 接入 River 對話與線上模型目錄;外掛不提供餘額數值。", "通过 Magpie 原插件接入设备码登录、对话、模型目录、余额和每日签到。": "透過 Magpie 原外掛接入裝置碼登入、對話、模型目錄、餘額和每日簽到。", "通过社区插件接入 {providers},可在设置中管理提供商,签到计划在签到中心管理。": "透過社群外掛接入 {providers},可在設定中管理提供商,簽到排程在簽到中心管理。", "部分信息未能更新,已读取的插件仍可查看。": "部分資訊未能更新,已讀取的外掛仍可查看。", "部分插件的附带任务可能消耗额度、发送对话或创建及解散群聊。": "部分外掛的附帶任務可能消耗額度、傳送對話或建立及解散群聊。", "都不注入": "都不注入", "都不注入(助手退化为纯聊天)": "都不注入(助手退化為純聊天)", "重启更新": "重啟更新", "重新读取登录方式": "重新讀取登入方式", "队列是一次性整表提交(后端按新顺序重编优先级),移动会连带调整其它组的相对次序。": "佇列是一次性整表提交(後端按新順序重編優先順序),移動會連帶調整其它組的相對次序。", "队列是一次性整表提交;位置越靠前,路由时越先被选中。": "佇列是一次性整表提交;位置越靠前,路由時越先被選中。", "限流 · {n} 个模型": "限流 · {n} 個模型", "限流垫底": "限流墊底", "隐藏 {name}": "隱藏 {name}", "隐藏分组 {name}": "隱藏分組 {name}", "隐藏这一组": "隱藏這一組", "需要强制更新": "需要強制更新", "需要网关 API Key": "需要閘道器 API Key", "需要网关本机环境": "需要閘道本機環境", "需要补齐插件": "需要補齊插件", "顺序优先": "順序優先", "首页": "首頁", "高危": "高危", "高级参数(JSON)": "進階參數(JSON)", "默认分支": "預設分支", "默认跟随软件的正式版和 beta 关注选择;单独设置只影响日常更新,最低版本补齐按当前软件版本选择配套包。": "預設跟隨軟體的正式版和 beta 關注選擇;單獨設定只影響日常更新,最低版本補齊按目前軟體版本選擇配套套件。", "默认跟随软件的自动检查和间隔。关闭自动检查后暂停插件自动更新;手动检查、安装和更新不受影响。": "預設跟隨軟體的自動檢查和間隔。關閉自動檢查後暫停外掛自動更新;手動檢查、安裝和更新不受影響。", "({n} 个整组隐藏)": "({n} 個整組隱藏)", "(不会影响客户端登录态)": "(不會影響客戶端登入態)", "(仅显示前 20 条,共 {n} 条)": "(僅顯示前 20 條,共 {n} 條)", "(可选)": "(選填)", "(未指定)": "(未指定)", "(请下载与该平台对应的插件包)": "(請下載與該平台對應的外掛套件)", "(默认问候)": "(預設問候)", "Agent2API · 登录": "Agent2API · 登入", "OpenAI 兼容网关 · 管理面板": "OpenAI 相容閘道器 · 管理面板", "Turnstile 加载或验证失败,请检查网络、浏览器拦截和域名配置后重试。": "Turnstile 載入或驗證失敗,請檢查網路、瀏覽器攔截和網域設定後再試。", "Turnstile 验证超时,请重试。": "Turnstile 驗證逾時,請重試。", "创建账号并进入面板": "建立帳號並進入面板", "密码": "密碼", "当前浏览器不支持 Turnstile,请更新浏览器后重试。": "目前的瀏覽器不支援 Turnstile,請更新瀏覽器後再試。", "我不是机器人": "我不是機器人", "无法读取登录验证设置,请刷新页面重试": "無法讀取登入驗證設定,請重新整理頁面後再試", "无法连接网关": "無法連線閘道器", "无法连接网关,请确认服务已启动": "無法連線閘道器,請確認服務已啟動", "机器人校验配置已变更或不完整,请刷新页面或联系管理员。": "機器人驗證設定已變更或不完整,請重新整理頁面或聯絡管理員。", "登录": "登入", "登录后可在「网关 Key」页为 API 客户端创建密钥": "登入後可在「閘道器 Key」頁為 API 客戶端建立金鑰", "管理员账号": "管理員帳號", "继续": "繼續", "至少 8 位": "至少 8 位", "设置密码(至少 8 位)": "設定密碼(至少 8 位)", "请先勾选「我不是机器人」完成验证": "請先勾選「我不是機器人」完成驗證", "请填写账号与密码": "請填寫帳號與密碼", "请完成人机验证后重试": "請完成人機驗證後再試", "请求失败,请重试": "請求失敗,請重試", "请输入管理员账号与密码": "請輸入管理員帳號與密碼", "重新验证": "重新驗證", "首次使用:创建一个管理员账号,用于登录此面板": "首次使用:建立一個管理員帳號,用於登入此面板", "验证中…": "驗證中…", "验证失败,请重试": "驗證失敗,請重試", "验证成功": "驗證成功", " · 今日 {used} / {quota}": " · 今日 {used} / {quota}", " · 当前 {n}": " · 當前 {n}", " · 本周期 {used} / {quota}": " · 本週期 {used} / {quota}", " · 限流 {n}": " · 限流 {n}", " 等": " 等", "0 = 不限": "0 = 不限", "0 = 按本家默认 {default}": "0 = 按本家預設 {default}", "30 秒 ~ 24 小时;手动查询会顺延下一轮": "30 秒 ~ 24 小時;手動查詢會順延下一輪", "7 天内到期": "7 天內到期", "7 天内到期 {amount}({count} 份)": "7 天內到期 {amount}({count} 份)", "7天 {count}份": "7天 {count}份", "7天 {n}": "7天 {n}", "API Key": "API Key", "Accio 国内版": "Accio 國內版", "Base URL": "Base URL", "Clash Verge 里还没有配置混合监听器或节点端口": "Clash Verge 裡還沒有配置混合監聽器或節點連接埠", "Clash 出口:": "Clash 出口:", "Copilot 额度单位": "Copilot 額度單位", "NewAPI 个人访问令牌": "NewAPI 個人存取權杖", "NewAPI 用户 ID": "NewAPI 使用者 ID", "OpenAI 兼容": "OpenAI 相容", "OpenAI 兼容填到 /v1;Anthropic 填根地址": "OpenAI 相容填到 /v1;Anthropic 填根地址", "Qoder 中国版": "Qoder 中國版", "Qoder 国际版": "Qoder 國際版", "Token 刷新接口不可用,请重新打开页面": "Token 更新介面無法使用,請重新開啟頁面", "Token 刷新结果未确认,请刷新后核对账号状态": "Token 更新結果未確認,請重新整理後核對帳號狀態", "Token 单位": "Token 單位", "Token 时": "Token 時", "Token 消耗": "Token 消耗", "Token 规则按每个账号已有的窗口消耗判定,保存不会清零;停用或清空规则不会自动启用账号。": "Token 規則按每個帳號已有的視窗消耗判定,儲存不會清零;停用或清空規則不會自動啟用帳號。", "Token 限制阈值必须是大于 0 的安全整数": "Token 限制閾值必須是大於 0 的安全整數", "Token 限额": "Token 限額", "Token 限额 · 已禁用": "Token 限額 · 已停用", "Token 限额 · 已跳过": "Token 限額 · 已跳過", "WorkBuddy 国内版": "WorkBuddy 國內版", "WorkBuddy 国际版": "WorkBuddy 國際版", "ZCode 国内版": "ZCode 國內版", "ZCode 国际版": "ZCode 國際版", "ZCode 套餐明细": "ZCode 套餐明細", "ZCode 套餐明细 — {name}": "ZCode 套餐明細 — {name}", "bigmodel_token_production 的值": "bigmodel_token_production 的值", "{action}{who}": "{action}{who}", "{amount},另 {count} 份余量未知": "{amount},另 {count} 份餘量未知", "{body}({period})": "{body}({period})", "{cond} 时 → {action}": "{cond} 時 → {action}", "{count} 份": "{count} 份", "{count} 份仅提供比例": "{count} 份僅提供比例", "{count} 份单位未知": "{count} 份單位未知", "{count} 次": "{count} 次", "{days} 天后到期": "{days} 天後到期", "{error}(不会自动改为直连)": "{error}(不會自動改為直接連線)", "{error}(转发时会回退直连)": "{error}(轉發時會回退直連)", "{groups} 家 · 显示 {rows} 行": "{groups} 家 · 顯示 {rows} 行", "{hours} 小时后到期": "{hours} 小時後到期", "{label} ×{count}": "{label} ×{count}", "{label}({count})": "{label}({count})", "{message}(去该账号的「设置」里填上查询凭证即可)": "{message}(去該帳號的「設定」裡填上查詢憑證即可)", "{minutes} 分钟后到期": "{minutes} 分鐘後到期", "{month}月{day}日 {clock}": "{month}月{day}日 {clock}", "{name} · 分组设置": "{name} · 分組設定", "{name} 移到 {group} 组内第 {rank} 位": "{name} 移到 {group} 組內第 {rank} 位", "{name} 移到第 {rank} 顺位": "{name} 移到第 {rank} 順位", "{name}的方向": "{name} 的方向", "{name}({parts})": "{name}({parts})", "{name}({time} 起生效)": "{name}({time} 起生效)", "{n} 个已计入": "{n} 個已計入", "{n} 个查询失败": "{n} 個查詢失敗", "{n} 个模型 ▾": "{n} 個模型 ▾", "{n} 个模型限流中 · 到恢复时间自动解除": "{n} 個模型限流中 · 到恢復時間自動解除", "{n} 个模型限流中 · 记录来自上游 429 / 限额码,到恢复时间自动解除": "{n} 個模型限流中 · 記錄來自上游 429 / 限額碼,到恢復時間自動解除", "{n} 个请求正在使用该账号(含还在下发内容的流式请求)": "{n} 個請求正在使用該帳號(含還在下發內容的流式請求)", "{n} 个读数只读到一半(读数可信但不完整)": "{n} 個讀數只讀到一半(讀數可信但不完整)", "{n} 个读数没有绝对数(只给比例或无额度),未计入": "{n} 個讀數沒有絕對數(只給比例或無額度),未計入", "{n} 个读数里没有可用比例,未计入": "{n} 個讀數裡沒有可用比例,未計入", "{n} 个账号 · {e} 启用 · {l} 限流": "{n} 個帳號 · {e} 啟用 · {l} 限流", "{n} 个账号 · 启用 {e}": "{n} 個帳號 · 啟用 {e}", "{n} 个还没查到(未查询或正在查询)": "{n} 個還沒查到(未查詢或正在查詢)", "{n} 个还没查询": "{n} 個還沒查詢", "{n} 分钟": "{n} 分鐘", "{n} 分钟前更新": "{n} 分鐘前更新", "{n} 分钟后": "{n} 分鐘後", "{n} 天前更新": "{n} 天前更新", "{n} 天后": "{n} 天后", "{n} 小时": "{n} 小時", "{n} 小时前更新": "{n} 小時前更新", "{n} 小时后": "{n} 小時後", "{n} 秒": "{n} 秒", "{n} 秒前更新": "{n} 秒前更新", "{period}窗口": "{period}視窗", "{plan}({time} 领取)": "{plan}({time} 領取)", "{providers} 家提供商、共 {total} 个账号。数据仍在,只是当前没有可用的插件来执行它们。": "{providers} 家提供商、共 {total} 個帳號。資料仍在,只是當前沒有可用的外掛來執行它們。", "{reason}。该账号的登录态已被上游注销,自动刷新不会再成功,请重新登录该账号": "{reason}。該帳號的登入狀態已被上游註銷,自動重新整理不會再成功,請重新登入該帳號", "{scope} {used} / {quota} Token,{countdown}重置": "{scope} {used} / {quota} Token,{countdown}重置", "{text}过期": "{text}過期", "{text}过期({full})": "{text}過期({full})", "{time} 到期": "{time} 到期", "{time} 恢复": "{time} 恢復", "{time} 生效": "{time} 生效", "{time} 领取": "{time} 領取", "{total} 个账号 · 启用 {enabled} · 禁用 {disabled}{limited}": "{total} 個帳號 · 啟用 {enabled} · 停用 {disabled}{limited}", "{tried}探测并领取官方每日登录赠送的套餐积分(到账进套餐积分,不增加福利模型 token 池)": "{tried}探測並領取官方每日登入贈送的套餐積分(到賬進套餐積分,不增加福利模型 token 池)", "{unit}余量未知({count} 份)": "{unit}餘量未知({count} 份)", "{verb}完成:成功 {ok} 个,失败 {fail} 个({detail}{more})": "{verb}完成:成功 {ok} 個,失敗 {fail} 個({detail}{more})", "{verb}完成:成功 {ok} 个,未变更 {unchanged} 个,跳过 {skip} 个,失败 {fail} 个": "{verb}完成:成功 {ok} 個,未變更 {unchanged} 個,跳過 {skip} 個,失敗 {fail} 個", "✅ {ok}/{total} 个出口可用": "✅ {ok}/{total} 個出口可用", "✅ {verb}完成:共 {count} 个账号": "✅ {verb}完成:共 {count} 個帳號", "✅ 优先级已改为 {n}": "✅ 優先順序已改為 {n}", "✅ 出口可用": "✅ 出口可用", "✅ 已保存:{note}": "✅ 已儲存:{note}", "✅ 已启用": "✅ 已啟用", "✅ 已启用 {n} 个账号": "✅ 已啟用 {n} 個帳號", "✅ 已导出 {count} 个账号文件": "✅ 已匯出 {count} 個帳號檔案", "✅ 已更新 {n} 个账号的余额{suffix}": "✅ 已更新 {n} 個帳號的餘額{suffix}", "✅ 已更新余额": "✅ 已更新余額", "✅ 已清除 API Key(该账号现在没有凭证,转发会被跳过)": "✅ 已清除 API Key(該帳號現在沒有憑證,轉發會被跳過)", "✅ 已清除 {model} 的限流标记": "✅ 已清除 {model} 的限流標記", "✅ 已清除余额查询凭证": "✅ 已清除餘額查詢憑證", "✅ 已清除查询凭证": "✅ 已清除查詢憑證", "✅ 已清除该账号全部限流标记": "✅ 已清除該帳號全部限流標記", "✅ 已禁用": "✅ 已停用", "✅ 已禁用 {n} 个账号": "✅ 已停用 {n} 個帳號", "✅ 已重新读取 Clash Verge 配置": "✅ 已重新讀取 Clash Verge 配置", "✅ 账号设置已保存": "✅ 帳號設定已儲存", "✅ 顺序已保存": "✅ 順序已儲存", "✅ 顺序已调整": "✅ 順序已調整", " 出口 IP {ip}": " 出口 IP {ip}", "、": "、", "、补官方会话头、请求体补两个占位工具(上游免费档的三道校验)。": "、補官方會話頭、請求體補兩個佔位工具(上游免費檔的三道校驗)。", "「{name}」已在「网络代理」页禁用,请先启用它或换一条": "「{name}」已在「網路代理」頁停用,請先啟用它或換一條", "「{name}」开着排序规则:先关掉规则,才能手动调整组内顺序": "「{name}」開著排序規則:先關掉規則,才能手動調整組內順序", "「{name}」本身": "「{name}」本身", "「已保存的代理」": "「已儲存的代理」", "「网络代理」页还没有出口 —— 去那里新增,或在「订阅管理」里点「同步 Clash Verge」把 Clash 的出口导进来": "「網路代理」頁還沒有出口 —— 去那裡新增,或在「訂閱管理」裡點「同步 Clash Verge」把 Clash 的出口導進來", "「网络代理」页还没有出口 —— 去那里添加一个 HTTP 或 SOCKS5 地址": "「網路代理」頁還沒有出口 —— 去那裡新增一個 HTTP 或 SOCKS5 地址", "「网络代理」页还没有出口 —— 去那里添加手动地址或同步 Clash Verge 的端点": "「網路代理」頁還沒有出口 —— 請到那裡新增手動位址或同步 Clash Verge 的端點", "「网络代理」页里每个启用的出口轮流使用;之后新加的出口自动加入": "「網路代理」頁裡每個啟用的出口輪流使用;之後新加的出口自動加入", "一般不用填": "一般不用填", "万": "萬", "上一条规则相同时才比较下一条;想优先按余额消耗,请把可用余额移到第一位。": "上一條規則相同時才比較下一條;想優先依餘額消耗,請把可用餘額移到第一位。", "上次成功查询:{time}": "上次成功查詢:{time}", "上游拒绝了本次余额查询": "上游拒絕了本次餘額查詢", "上游提供了补充说明;未显示原始正文": "上游提供了補充說明;未顯示原始本文", "上游暂时限制余额查询,请稍后重试": "上游暫時限制餘額查詢,請稍後重試", "上游未给总量,画不出剩余比例": "上游未給總量,畫不出剩餘比例", "上游未返回可识别额度窗口": "上游未回傳可識別額度時段", "上游本来不要凭证时(本地 Ollama、OpenCode Zen 的免费档)勾上这一项:账号会被正常选路;只把 Key 留空": "上游本來不要憑證時(本地 Ollama、OpenCode Zen 的免費檔)勾上這一項:帳號會被正常選路;只把 Key 留空", "上游没有提供此额度的分桶用量,当前使用本地估算保护;在其他客户端产生的消耗不会计入。": "上游沒有提供此額度的分桶用量,當前使用本地估算保護;在其他客戶端產生的消耗不會計入。", "上游的 API Key。留空 = 不修改(改凭证不会换账号 id);要清掉已配的凭证用右边的「清除」": "上游的 API Key。留空 = 不修改(改憑證不會換帳號 id);要清掉已配的憑證用右邊的「清除」", "上游的余额读数里没有这个套餐的额度桶,剩余量读不到;余额列显示的是套餐发放的权益额度,不是剩余量": "上游的餘額讀數里沒有這個套餐的額度桶,剩餘量讀不到;餘額列顯示的是套餐發放的權益額度,不是剩餘量", "上游返回 {status}": "上游返回 {status}", "上游限制 · 已禁用": "上游限制 · 已停用", "上游额度无上限": "上游額度無上限", "上面所有规则都相同时,保持你拖出来的顺序": "上面所有規則都相同時,保持你拖出來的順序", "不到 1 分钟": "不到 1 分鐘", "不到 1 分钟到期": "不到 1 分鐘到期", "不可用:{error}": "不可用:{error}", "不支持查询": "不支援查詢", "不足 {n}": "不足 {n}", "不限": "不限", "与队列里的上一个账号交换优先级(可能是另一家的账号)": "與佇列裡的上一個帳號交換優先順序(可能是另一家的帳號)", "与队列里的下一个账号交换优先级(可能是另一家的账号)": "與佇列裡的下一個帳號交換優先順序(可能是另一家的帳號)", "严格按消耗顺序使用账号需选择「顺序优先」;轮询、会话粘性及账号保护仍按原设置生效。": "嚴格依消耗順序使用帳號需選擇「順序優先」;輪詢、工作階段黏性及帳號保護仍依原設定生效。", "个": "個", "个 · 共": "個 · 共", "个人": "個人", "主凭证没有固定到期时刻,到期由网关自动续期或本来就不会过期": "主憑證沒有固定到期時刻,到期由網關自動續期,或本來就不會過期", "主机": "主機", "亿": "億", "仅将优先级调整到全局第一位,不改变启用状态": "僅將優先順序調整到全域第一位,不改變啟用狀態", "仅按手动顺序": "僅按手動順序", "仅统一修改现有规则的开关,保留阈值、动作和重置方式;不改变账号的启用状态。": "僅統一修改現有規則的開關,保留閾值、動作和重置方式;不改變帳號的啟用狀態。", "仅账号管理": "僅帳號管理", "仅跳过命中条件的模型,其他模型仍可转发;点击查看限制器": "僅跳過命中條件的模型,其他模型仍可轉發;點擊檢視限制器", "今天 {clock}": "今天 {clock}", "今天 {time}": "今天 {time}", "今天到期 {amount}({count} 份)": "今天到期 {amount}({count} 份)", "今天还没有领过:上面「可领取的套餐」里逐份点「领取」即可": "今天還沒有領過:上面「可領取的套餐」裡逐份點「領取」即可", "今天(北京时间 {day})已由官方确认到账 {n} 项;领到的是套餐赠送积分,不增加福利模型的 token 池;按自然日重置,明天可再领": "今天(北京時間 {day})已由官方確認到賬 {n} 項;領到的是套餐贈送積分,不增加福利模型的 token 池;按自然日重置,明天可再領", "今天(北京时间 {day})已试过 {n} 次但官方尚未确认到账,": "今天(北京時間 {day})已試過 {n} 次但官方尚未確認到賬,", "今天(北京时间)在这台机器上领过:{plans}": "今天(北京時間)在這臺機器上領過:{plans}", "今天(北京时间)已领取 {n} 份": "今天(北京時間)已領取 {n} 份", "今天(北京时间)已领取 {n} 份:{plans}": "今天(北京時間)已領取 {n} 份:{plans}", "今天(本地 0 点重置)": "今天(本地 0 點重置)", "今日剩 {n} 分钟": "今日剩 {n} 分鐘", "今日剩 {n} 小时": "今日剩 {n} 小時", "今日发放": "今日發放", "今日已用": "今日已用", "今日已领": "今日已領", "代理": "代理", "代理不可用:{error}": "代理不可用:{error}", "代理不可用:{error}(不会自动改为直连);选「自定义代理…」去修改": "代理無法使用:{error}(不會自動改為直接連線);選「自訂代理…」修改", "代理不可用:{error}(转发时会回退直连);选「自定义代理…」去修改": "代理不可用:{error}(轉發時會回退直連);選「自定義代理…」去修改", "代理列表响应异常({type})": "代理列表響應異常({type})", "代理列表读取失败(重试中)": "代理列表讀取失敗(重試中)", "代理已更新": "代理已更新", "代理异常": "代理異常", "代理方式": "代理方式", "代理池响应异常({type})": "代理池響應異常({type})", "代理端口必须是 1-65535 的整数": "代理連接埠必須是 1-65535 的整數", "以下 {count} 个账号不支持余额查询,本次会跳过:{names}": "以下 {count} 個帳號不支援餘額查詢,本次會跳過:{names}", "企业": "企業", "优先级": "優先順序", "优先级 {priority} 已被同一提供商的「{name}」占用,请换一个数值": "優先順序 {priority} 已被同一提供商的「{name}」佔用,請換一個數值", "优先级必须是数字": "優先順序必須是數字", "优先级未保存:{message}": "優先順序未儲存:{message}", "会员共享额度": "會員共享額度", "会员共享额度不是本账号独立额度,不与其他窗口相加;未证实团队独立额度": "會員共享額度並非本帳號獨立額度,不與其他時段相加;團隊獨立額度尚未證實", "会被当成「未配置凭证」而跳过。": "會被當成「未配置憑證」而跳過。", "伪装 OpenCode 官方客户端": "偽裝 OpenCode 官方客戶端", "伪装 OpenCode 官方客户端(OpenCode Zen 免费档要它才放行)": "偽裝 OpenCode 官方客戶端(OpenCode Zen 免費檔要它才放行)", "余量 {value}": "餘量 {value}", "余额": "餘額", "余额 < {threshold}": "餘額 < {threshold}", "余额不足": "餘額不足", "余额不足 · 已跳过": "餘額不足 · 已跳過", "余额低于": "餘額低於", "余额低于阈值时的提示": "餘額低於閾值時的提示", "余额低于阈值,转发时会跳过该账号(余额回升自动恢复)": "餘額低於閾值,轉發時會跳過該帳號(餘額回升自動恢復)", "余额低于限制器的阈值,转发时会跳过该账号(余额回升自动恢复)": "餘額低於限制器的閾值,轉發時會跳過該帳號(餘額回升自動恢復)", "余额列读数的自动刷新;也是「限制器」余额规则的数据来源。": "餘額列讀數的自動重新整理;也是「限制器」餘額規則的資料來源。", "余额响应为空": "餘額響應為空", "余额大优先": "餘額大優先", "余额小优先": "餘額小優先", "余额已更新": "餘額已更新", "余额查询凭证": "餘額查詢憑證", "余额查询凭证已失效,请刷新查询登录态": "餘額查詢憑證已失效,請更新查詢登入狀態", "余额查询失败:{message}": "餘額查詢失敗:{message}", "余额查询接口不可用,请更新网关后重试": "餘額查詢介面無法使用,請更新閘道後重試", "余额查询接口返回异常": "餘額查詢介面回傳異常", "余额查询方案:{label}": "餘額查詢方案:{label}", "余额沿用现有口径;Token 按重置方式内的累计消耗判定(切换类型会清空阈值)": "餘額沿用現有口徑;Token 按重置方式內的累計消耗判定(切換型別會清空閾值)", "余额详情": "餘額詳情", "使用套餐": "使用套餐", "使用最近一次成功查询的总余额,随余额刷新调整;查询失败保留上次读数,不额外增加查询频率。": "使用最近一次成功查詢的總餘額,隨餘額更新調整;查詢失敗保留上次讀數,不額外增加查詢頻率。", "保存失败:{error}": "儲存失敗:{error}", "保存条件": "儲存條件", "保存规则": "儲存規則", "保留 {n} 个账号": "保留 {n} 個帳號", "保留各账号原有规则,只追加下面的规则;完全相同的规则不会重复添加。": "保留各帳號原有規則,只追加下面的規則;完全相同的規則不會重複新增。", "修改代理": "修改代理", "停止旧查询,按当前配置重新查询余额": "停止舊查詢,按目前設定重新查詢餘額", "停用全部规则": "停用全部規則", "免费版": "免費版", "全局一条队列:数值越小越先用,不分提供商": "全域一條佇列:數值越小越先用,不分提供商", "全局唯一:所有提供商的账号都不能重号,数值越小越先用": "全域唯一:所有提供商的帳號都不能重號,數值越小越先用", "全局队列": "全域佇列", "全局队列第 {position} 位,共 {total} 位": "全域佇列第 {position} 位,共 {total} 位", "全选 / 取消全选当前筛选结果(与批量栏同一个选择)": "全選 / 取消全選當前篩選結果(與批次欄同一個選擇)", "全选当前筛选结果({n} 个)": "全選當前篩選結果({n} 個)", "全部代理节点(推荐)": "全部代理節點(推薦)", "全部启用中的账号将被{what}": "全部啟用中的帳號將被{what}", "全部启用({n})": "全部啟用({n})", "全部清除": "全部清除", "全部禁用({n})": "全部停用({n})", "全部({n})": "全部({n})", "共有 {n} 个账号暂未显示": "共有 {n} 個帳號暫未顯示", "关闭则不参与转发(余额查询照常,见「查询设置」)": "關閉則不參與轉發(餘額查詢照常,見「查詢設定」)", "关闭后,该账号转发失败时返回本次错误,不再顺延其他账号。禁用、无凭证和限制器等保护仍生效。": "關閉後,該帳號轉送失敗時回傳本次錯誤,不再順延其他帳號。停用、無憑證和限制器等保護仍然生效。", "关闭自动查询后,余额限制器只能使用上次读数;手动查询仍可用。": "關閉自動查詢後,餘額限制器只能使用上次讀數;手動查詢仍可用。", "内消耗 ≥": "內消耗 ≥", "再领一次": "再領一次", "冷却进度 {percent}%": "冷卻進度 {percent}%", "冻结余额": "凍結餘額", "凭证": "憑證", "凭证与套餐": "憑證與套餐", "凭证已刷新": "憑證已重新整理", "凭证已被上游注销": "憑證已被上游登出", "凭证已过期,转发时会先刷新": "憑證已過期,轉發時會先重新整理", "凭证已过期;能否续期取决于登录方式,本机引用需由原客户端处理": "憑證已過期;能否更新取決於登入方式,本機參照需由原用戶端處理", "出口": "出口", "出网代理": "出網代理", "分窗口额度": "分時段額度", "分组设置": "分組設定", "分钟": "分鐘", "刚刚更新": "剛剛更新", "删除中…": "刪除中…", "删除各账号的全部限制规则,执行前会再次确认。": "刪除各帳號的全部限制規則,執行前會再次確認。", "删除提供商": "刪除提供商", "删除组": "刪除組", "删除账号": "刪除帳號", "删除这条账号记录(不会影响客户端自己的登录态;之后可再点「导入桌面端登录态」加回来)": "刪除這條帳號記錄(不會影響客戶端自己的登入態;之後可再點「匯入桌面版登入態」加回來)", "删除选中的账号": "刪除選中的帳號", "到恢复时间后自动解除,无需手动操作": "到恢復時間後自動解除,無需手動操作", "到期 {date}": "到期 {date}", "到期 {time}": "到期 {time}", "到期 {time}({remain})": "到期 {time}({remain})", "到期 近→远": "到期 近→遠", "到期 远→近": "到期 遠→近", "到期时间": "到期時間", "刷新 Token": "重新整理 Token", "刷新 Token 完成:成功 {ok} 个,跳过 {skip} 个,失败 {fail} 个": "更新 Token 完成:成功 {ok} 個,略過 {skip} 個,失敗 {fail} 個", "刷新 Token:已处理 {completed}/{total} 个,当前账号:{name}": "更新 Token:已處理 {completed}/{total} 個,目前帳號:{name}", "刷新凭证": "重新整理憑證", "刷新列表": "重新整理清單", "刷新套餐与额度": "重新整理套餐與額度", "刷新账号列表失败,当前仍显示上一次成功读取的数据:{message}": "重新整理帳號清單失敗,目前仍顯示上一次成功讀取的資料:{message}", "刷新账号列表失败:{message}": "重新整理帳號清單失敗:{message}", "剩 {days} 天": "剩 {days} 天", "剩 {hours} 小时": "剩 {hours} 小時", "剩 {left} / {total}{unit}": "剩 {left} / {total}{unit}", "剩 {minutes} 分钟": "剩 {minutes} 分鐘", "剩 {n} 分钟": "剩 {n} 分鐘", "剩 {remaining}": "剩 {remaining}", "剩 {remaining} / {total}": "剩 {remaining} / {total}", "剩不到 1 分钟": "剩不到 1 分鐘", "剩余 {percent}%": "剩餘 {percent}%", "剩余比例": "剩餘比例", "剩余额度": "剩餘額度", "加载异常": "載入異常", "北京时间(UTC+8)": "北京時間(UTC+8)", "协议": "協議", "卡片": "卡片", "即将到期 {count} 份": "即將到期 {count} 份", "即将过期 {n}": "即將過期 {n}", "历史余额,尚未按新配置验证": "歷史餘額,尚未按新設定驗證", "原代理来源已下线,请选择已保存的代理、自定义地址或直连": "原代理來源已下線,請選擇已儲存的代理、自定義地址或直連", "去「插件」页": "去「外掛」頁", "去「插件」页启用": "前往「外掛」頁啟用", "去「插件」页安装": "前往「外掛」頁安裝", "去启用": "去啟用", "去安装": "去安裝", "又不勾": "又不勾", "取消余额查询": "取消餘額查詢", "取消查询": "取消查詢", "取消查询失败:{message}": "取消查詢失敗:{message}", "取消选择": "取消選擇", "另 {n} 个分组全是禁用账号": "另 {n} 個分組全是停用帳號", "另有 {n} 个已勾选账号被当前筛选隐藏,仍会参与操作": "另有 {n} 個已勾選帳號被當前篩選隱藏,仍會參與操作", "另有 {n} 个账号因提供商插件未就绪,暂未显示": "另有 {n} 個帳號因供應商外掛尚未就緒,暫未顯示", "只修改本次选择的设置,不影响备注、凭证、转发顺序或其他设置。": "只修改本次選擇的設定,不影響備註、憑證、轉發順序或其他設定。", "只比较同一家、同单位的数值余额;未知、比例和无限额度不作为零余额,有明确余额的账号优先。": "只比較同一家、同單位的數值餘額;未知、比例和無限額度不視為零餘額,有明確餘額的帳號優先。", "只重试临时故障;次数与整轮时间上限任一用尽即停止,凭证错误不重试。": "只重試暫時性故障;次數與整輪時間上限任一用盡即停止,憑證錯誤不重試。", "可添加多条;同类规则也允许并存(例如一条按余额、两条不同重置方式的 Token)": "可新增多條;同類規則也允許並存(例如一條按餘額、兩條不同重置方式的 Token)", "可用 {total}": "可用 {total}", "可用 {value}": "可用 {value}", "可用 {value} {unit}": "可用 {value} {unit}", "可用余额": "可用餘額", "可用合计": "可用合計", "可用最低": "可用最低", "可留空:新版请求头只认令牌;旧版会把用户 ID 放进 New-Api-User 头": "可留空:新版請求頭只認權杖;舊版會把使用者 ID 放進 New-Api-User 頭", "可领取清单合并每日赠送与限时营销活动;按套餐去重,已领取的不重复提交。只有主动领取时才会进行人机验证。": "可領取清單合併每日贈送與限時營銷活動;按套餐去重,已領取的不重複提交。只有主動領取時才會進行人機驗證。", "可领取的套餐": "可領取的套餐", "各窗口独立限制请求,不相加为总余额。": "各時段獨立限制請求,不加總為總餘額。", "同提供商内暂无其他账号占用优先级": "同提供商內暫無其他帳號佔用優先順序", "同提供商已占用:{names}": "同提供商已佔用:{names}", "名称": "名稱", "后续加入": "後續加入", "否": "否", "含 {n} 个不限额度账号,合计记为 ∞": "含 {n} 個不限額度帳號,合計記為 ∞", "启动中…": "啟動中…", "启用全部规则": "啟用全部規則", "启用插件包后自动回来": "啟用外掛包後自動回來", "启用状态": "啟用狀態", "启用该规则": "啟用該規則", "启用该账号": "啟用該帳號", "启用这一组里的全部账号(含被筛选隐藏的)": "啟用這一組裡的全部帳號(含被篩選隱藏的)", "启用这家提供商后自动回来": "啟用這家提供商後自動回來", "周期": "週期", "周期 Token": "週期 Token", "周期单位": "週期單位", "命中条件的模型": "命中條件的模型", "商汤日日新控制台的登录密码": "商湯日日新控制台的登入密碼", "商汤日日新控制台的登录账号": "商湯日日新控制台的登入帳號", "固定兜底,不受开关影响": "固定兜底,不受開關影響", "固定周期": "固定週期", "在 NewAPI 站点「个人设置」里生成的访问令牌": "在 NewAPI 站點「個人設定」裡生成的存取權杖", "在列表里拖:拖分组带调整整组顺位,拖行首把手调整组内先后(顺序由拖拽表达,不再填数字)": "在列表裡拖:拖分組帶調整整組順位,拖行首把手調整組內先後(順序由拖拽表達,不再填數字)", "在账号设置的「基本」分组里设置该账号同时最多处理的请求数": "在帳號設定的「基本」分組裡設定該帳號同時最多處理的請求數", "地址与端口由「网络代理」页管理:那边改一次、测一次,所有引用它的账号一起生效": "地址與連接埠由「網路代理」頁管理:那邊改一次、測一次,所有引用它的帳號一起生效", "基本": "基本", "填入系统代理": "填入系統代理", "备注名 / 启用 / 代理": "備註名 / 啟用 / 代理", "备注名 {name}": "備註名 {name}", "备注名不能为空": "備註名不能為空", "备注名已更新": "備註名已更新", "复制当前设置": "複製當前設定", "复制自账号": "複製自帳號", "失败 {count} 个:": "失敗 {count} 個:", "失败后允许换号": "失敗後允許切換帳號", "失败重试次数": "失敗重試次數", "失败重试次数必须是 0~{max} 的整数": "失敗重試次數必須是 0~{max} 的整數", "套餐 {name}": "套餐 {name}", "套餐实例不能跨账号复制,请改用通用额度或本地保护条件": "套餐例項不能跨帳號複製,請改用通用額度或本地保護條件", "套餐尚未生效或已经到期": "套餐尚未生效或已經到期", "套餐已领取,但营销回执未完成,不会重复领取:{message}": "套餐已領取,但營銷回執未完成,不會重複領取:{message}", "套餐池": "套餐池", "套餐池的推理端点要求每条请求带一个阿里云验证码令牌;令牌由本应用在后台静默铸造,界面关闭时无法铸造": "套餐池的推理端點要求每條請求帶一個阿里雲驗證碼權杖;權杖由本應用在後臺靜默鑄造,介面關閉時無法鑄造", "套餐池(Start Plan)": "套餐池(Start Plan)", "套餐池(Start Plan)— 走 zcode.z.ai 端点,消耗 ZCode 套餐池的额度(新用户体验额度 / 活动领取)": "套餐池(Start Plan)— 走 zcode.z.ai 端點,消耗 ZCode 套餐池的額度(新使用者體驗額度 / 活動領取)", "套餐积分的重置日期": "套餐積分的重置日期", "存在延迟计量信息,无法据此推算当前余额": "存在延遲計量資訊,無法據此推算目前餘額", "它会改写请求体": "它會改寫請求體", "完整": "完整", "官方限时活动": "官方限時活動", "实际阈值:{value} Token": "實際閾值:{value} Token", "对话 token": "對話 token", "对话请求": "對話請求", "导出文件包含登录凭证,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "匯出檔案包含登入憑證,可直接用於登入。請妥善保管,不要外傳或上傳到公開位置。", "导出未返回结果": "匯出未傳回結果", "导出本组全部账号,每个账号一个 JSON 文件(含被筛选隐藏的)": "匯出本組全部帳號,每個帳號一個 JSON 檔案(含被篩選隱藏的)", "导出本组账号": "匯出本組帳號", "将作用于以下账号": "將作用於以下帳號", "将用草稿中的 {rules} 条规则替换 {count} 个账号的全部限制规则,原有规则不会保留。确定继续?": "將用草稿中的 {rules} 條規則替換 {count} 個帳號的全部限制規則,原有規則不會保留。確定繼續?", "将这个账号及其登录凭证保存为单独的 JSON 文件": "將這個帳號及其登入憑證儲存為獨立的 JSON 檔案", "小时": "小時", "小浣熊": "小浣熊", "尚未查询该账号的余额": "尚未查詢該帳號的餘額", "尝试领取": "嘗試領取", "展开": "展開", "展开全部": "展開全部", "展开全部分组": "展開全部分組", "展开或收起(默认收起)": "展開或收起(預設收起)", "展开这一组": "展開這一組", "已保存的代理": "已儲存的代理", "已停用": "已停用", "已删除账号": "已刪除帳號", "已发起 {count} 个账号文件的下载,请在浏览器下载列表确认": "已開始下載 {count} 個帳號檔案,請在瀏覽器下載清單確認", "已取消查询": "已取消查詢", "已启用 {name}": "已啟用 {name}", "已启用自动排序,组内拖动已锁定;关闭全部规则可恢复原手动顺序。": "已啟用自動排序,組內拖動已鎖定;關閉全部規則可恢復原手動順序。", "已启用,点击禁用(不参与转发)": "已啟用,點擊停用(不參與轉發)", "已在全局队列第一位": "已在全域佇列第一位", "已复制到草稿,执行后才会应用到所选账号": "已複製到草稿,執行後才會應用到所選帳號", "已导出 {count} 个账号文件,{failed} 个未导出:{reason}": "已匯出 {count} 個帳號檔案,{failed} 個未匯出:{reason}", "已是首选": "已是首選", "已暂停验证,需要时请手动重试": "已暫停驗證,需要時請手動重試", "已更新 {ok}/{total} 个账号,{failed} 个失败": "已更新 {ok}/{total} 個帳號,{failed} 個失敗", "已查询": "已查詢", "已用 {used}": "已用 {used}", "已用 {used} / 共 {total}": "已用 {used} / 共 {total}", "已用完 / 已过期": "已用完 / 已過期", "已用比例": "已用比例", "已用额度": "已用額度", "已禁用": "已停用", "已禁用 {name}": "已停用 {name}", "已禁用,点击启用": "已停用,點擊啟用", "已筛选 {n} 项": "已篩選 {n} 項", "已被「{name}」占用": "已被「{name}」佔用", "已触发": "已觸發", "已触发 · 账号已禁用": "已觸發 · 帳號已停用", "已设为首选": "已設為首選", "已设置": "已設定", "已跳过{current}": "已跳過{current}", "已跳过{usage}{countdown}": "已跳過{usage}{countdown}", "已达上限{usage}": "已達上限{usage}", "已过期": "已過期", "已过期({time})": "已過期({time})", "已选": "已選", "已配置,留空则不修改": "已配置,留空則不修改", "已限流": "已限流", "已领到、还没到生效时间的套餐(生效后余额列会按它显示):\n{lines}": "已領到、還沒到生效時間的套餐(生效後餘額列會按它顯示):\n{lines}", "并发上限": "併發上限", "并发上限 0~{max};CodeArts 等有默认值的家填 0 即按本家默认;达到上限的账号会被跳过、请求转给其他账号": "併發上限 0~{max};CodeArts 等有預設值的家填 0 即按本家預設;達到上限的帳號會被跳過、請求轉給其他帳號", "并发上限 0~{max};达到上限的账号会被跳过、请求转给其他账号": "併發上限 0~{max};達到上限的帳號會被跳過、請求轉給其他帳號", "并发上限 0~{max};达到上限的账号跳过、请求转给其他账号(原列表 ⋯ 菜单的「并发上限」入口已并入这里)": "併發上限 0~{max};達到上限的帳號跳過、請求轉給其他帳號(原列表 ⋯ 選單的「併發上限」入口已併入這裡)", "并发上限 填 0 即按本家默认 {default};填 1 或 2 就按填的算,更大的数会被本家上限截断(原列表 ⋯ 菜单的「并发上限」入口已并入这里)": "併發上限 填 0 即按本家預設 {default};填 1 或 2 就按填的算,更大的數會被本家上限截斷(原列表 ⋯ 選單的「併發上限」入口已併入這裡)", "并发上限必须是 0~{max} 的整数": "併發上限必須是 0~{max} 的整數", "并发上限:{value}": "併發上限:{value}", "开启后,网关按 OpenCode 官方 CLI 的形状发请求:没填 Key 的账号用匿名凭证": "開啟後,閘道器按 OpenCode 官方 CLI 的形狀發請求:沒填 Key 的帳號用匿名憑證", "开始 {time}": "開始 {time}", "当": "當", "当前不符合资格": "目前不符合資格", "当前不需要验证码令牌": "當前不需要驗證碼權杖", "当前代理不可用,请重新选择": "當前代理不可用,請重新選擇", "当前代理不可用:{error}(不会自动改为直连)": "目前代理無法使用:{error}(不會自動改為直接連線)", "当前代理不可用:{error}(转发时会回退直连)": "當前代理不可用:{error}(轉發時會回退直連)", "当前余额 {n};与余额列同一数字口径,严格小于才触发(等于阈值仍可用)": "當前餘額 {n};與餘額列同一數字口徑,嚴格小於才觸發(等於閾值仍可用)", "当前可手动调整组内顺序。": "目前可手動調整組內順序。", "当前可用 ∞(不参与余额不足判定)": "當前可用 ∞(不參與餘額不足判定)", "当前客户端不支持逐账号导出,请更新客户端": "目前的用戶端不支援逐帳號匯出,請更新用戶端", "当前已经是默认规则": "目前已經是預設規則", "当前排序规则:{rules}。点击调整": "目前排序規則:{rules}。點擊調整", "当前未发现本期活动,不代表账号不符合资格": "目前未發現本期活動,不代表帳號不符合資格", "当前没有任何模型处于限流中": "當前沒有任何模型處於限流中", "当前没有可领取的套餐(活动期内每天发一份,明天可再领)": "當前沒有可領取的套餐(活動期內每天發一份,明天可再領)", "当前没有限流中的模型。": "當前沒有限流中的模型。", "当前筛选下 {n} 个账号的可用余额之和(随筛选、搜索变化,不受分页影响)": "當前篩選下 {n} 個帳號的可用餘額之和(隨篩選、搜尋變化,不受分頁影響)", "当前筛选下 {n} 个账号的百分比读数不能相加,取最低的剩余比例(随筛选、搜索变化,不受分页影响)": "當前篩選下 {n} 個帳號的百分比讀數不能相加,取最低的剩餘比例(隨篩選、搜尋變化,不受分頁影響)", "当前筛选下 {n} 个账号的额度概览(随筛选、搜索变化,不受分页影响)": "目前篩選下 {n} 個帳號的額度概覽(隨篩選、搜尋變化,不受分頁影響)", "当前筛选下没有账号": "當前篩選下沒有帳號", "当前筛选条件下没有账号": "當前篩選條件下沒有帳號", "当前网关不支持余额排序,请先更新网关": "目前的閘道器不支援餘額排序,請先更新閘道器", "当前规则:{rules}。": "目前規則:{rules}。", "当前规则:{rules}。自动排序生效时,组内拖动把手会锁定;关掉全部规则即回到手动顺序。": "目前規則:{rules}。自動排序生效時,組內拖曳把手會鎖定;關掉全部規則即回到手動順序。", "当前视图不能调整组顺位:{reason} 之后再拖动": "當前檢視不能調整組順位:{reason} 之後再拖動", "当前钩子仅提供套餐与周期,未提供余额数值": "目前 hook 僅提供方案與週期,未提供餘額數值", "当前:{label}(Clash Verge 直接引用);可在「网络代理」页同步端点后改选": "目前:{label}(Clash Verge 直接參照);可在「網路代理」頁同步端點後改選", "当前:{label}(未经过代理池 —— 可在「网络代理」页把出口同步进池后来这里改选)": "當前:{label}(未經過代理池 —— 可在「網路代理」頁把出口同步進池後來這裡改選)", "当前:{label}(未经过代理池 —— 可在「网络代理」页添加相同地址后来这里改选)": "當前:{label}(未經過代理池 —— 可在「網路代理」頁新增相同地址後來這裡改選)", "当前:{label}(每条请求换一个出口);「自定义代理…」打开完整设置": "當前:{label}(每條請求換一個出口);「自定義代理…」開啟完整設定", "当前:{label};选项来自「网络代理」页;「自定义代理…」打开完整设置": "當前:{label};選項來自「網路代理」頁;「自定義代理…」開啟完整設定", "当前:{value}": "當前:{value}", "待定": "待定", "待生效": "待生效", "待生效 {n} 份": "待生效 {n} 份", "待生效 {time}": "待生效 {time}", "必填": "必填", "必填;留空 = 不修改,清除用右边的按钮": "必填;留空 = 不修改,清除用右邊的按鈕", "总剩余 {total} · 套餐 {plan} · 奖励 {bonus}": "總剩餘 {total} · 套餐 {plan} · 獎勵 {bonus}", "总积分": "總積分", "总积分是当前可用积分的汇总,与余额列一致;不重复累加汇总行,不包含 Token、次数或其他单位的额度。": "總積分是目前可用積分的彙總,與餘額欄一致;不重複累加彙總列,不包含 Token、次數或其他單位的額度。", "总量 {value}": "總量 {value}", "恢复时间未知": "恢復時間未知", "恢复默认:仅开启最快到期优先": "恢復預設:僅開啟最快到期優先", "恢复默认:仅按手动顺序": "恢復預設:僅按手動順序", "恢复默认:最快到期优先,账号添加时间关闭": "恢復預設:最快到期優先,帳號新增時間關閉", "我的套餐": "我的套餐", "或": "或", "所有分组里都没有启用的账号(禁用不参与转发)": "所有分組裡都沒有啟用的帳號(停用不參與轉發)", "所有提供商都有这个字段": "所有供應商都有這個欄位", "所选账号的各周期:{list}": "所選帳號的各週期:{list}", "手动添加": "手動新增", "打开批量操作弹窗,并预选这一组的账号(改代理等动作在弹窗里挑参数)": "開啟批次操作彈窗,並預選這一組的帳號(改代理等動作在彈窗裡挑引數)", "打开筛选": "開啟篩選", "执行中…": "執行中…", "执行({action})": "執行({action})", "扫码 / 粘贴令牌 / 导入登录态需在桌面端完成": "掃碼 / 貼上權杖 / 匯入登入態需在桌面版完成", "批量动作": "批次動作", "批量操作 · 已选 {count} 个账号": "批次操作 · 已選 {count} 個帳號", "批量操作失败:{error}": "批次操作失敗:{error}", "批量操作已保存,但列表刷新失败:{error}": "批次操作已儲存,但列表重新整理失敗:{error}", "批量操作接口不可用,请重新打开页面": "批次操作介面不可用,請重新開啟頁面", "批量操作未返回结果,请刷新后确认状态": "批次操作未返回結果,請重新整理後確認狀態", "批量操作本组": "批次操作本組", "批量操作结果不完整,请刷新后核对所选账号": "批次操作結果不完整,請重新整理後核對所選帳號。", "批量操作结果未确认,请刷新后核对设置": "批次操作結果尚未確認,請重新整理後核對設定。", "批量规则按每个账号分别判定,不合并余额或 Token 用量。": "批次規則按每個帳號分別判定,不合並餘額或 Token 用量。", "把每页调回「全部」": "把每頁調回「全部」", "折叠": "折疊", "折叠全部": "摺疊全部", "折叠全部分组(只留组头)": "摺疊全部分組(只留組頭)", "折叠本组": "摺疊本組", "折叠这一组": "摺疊這一組", "拖动调整列宽(双击还原)": "拖動調整列寬(雙擊還原)", "拖动调整整组顺序": "拖動調整整組順序", "拖动调整组内顺序": "拖動調整組內順序", "按上游额度查询的读数判定;模型共用同一个额度池时,选择模型不会拆分该池余额。": "按上游額度查詢的讀數判定;模型共用同一個額度池時,選擇模型不會拆分該池餘額。", "按优先级从上到下比较,勾选的项才参与": "按優先順序從上到下比較,勾選的項目才參與", "按住拖动,调整这一家的组顺位(整组一起动)": "按住拖動,調整這一家的組順位(整組一起動)", "按住拖动,调整这个账号在本组内的顺序": "按住拖動,調整這個帳號在本組內的順序", "按总积分设置限制": "按總積分設定限制", "按提供商筛选账号": "按提供商篩選帳號", "按最低剩余比例选择账号,所有周期均来自同一账号": "按最低剩餘比例選擇帳號,所有週期均來自同一帳號", "按未显示原因筛选": "按未顯示原因篩選", "按模型": "按模型", "按每日或短周期实际可用额度最低的账号展示,所有周期均来自同一账号": "按每日或短週期實際可用額度最低的帳號顯示,所有週期均來自同一帳號", "按规则限制该账号参与转发:没有规则(或全部停用)= 不限制;跳过档自动恢复,禁用档需手动启用。": "按規則限制該帳號參與轉發:沒有規則(或全部停用)= 不限制;跳過檔自動恢復,停用檔需手動啟用。", "按账号总可用余额比较,不重复累加积分明细": "依帳號總可用餘額比較,不重複累加積分明細", "按账号最早到期、且还有剩余的积分包比较": "按帳號最早到期、且還有剩餘的積分包比較", "排序": "排序", "提供商已停用": "供應商已停用", "提供商显示名,1~{max} 个字符": "提供商顯示名,1~{max} 個字元", "提供商:{name}": "提供商:{name}", "提高优先级": "提高優先順序", "插件包已停用": "外掛套件已停用", "插件已启用但加载失败": "外掛已啟用但載入失敗", "插件未加载": "外掛未載入", "插件未安装": "外掛未安裝", "插件未就绪": "外掛未就緒", "搜索": "搜尋", "搜索账号": "搜尋帳號", "搜索账号 / 邮箱 / 备注": "搜尋帳號 / 郵箱 / 備註", "操作失败:{message}": "操作失敗:{message}", "收起": "收起", "改动即时生效": "改動即時生效", "改协议 / Base URL 会改变它们的转发方式,正在进行的请求可能失败;模型清单与映射在「模型管理」页。": "改協議 / Base URL 會改變它們的轉發方式,正在進行的請求可能失敗;模型清單與對映在「模型管理」頁。", "数值越小越先用;": "數值越小越先用;", "数值越小越先用;{hint}": "數值越小越先用;{hint}", "数据来源与判定说明": "資料來源與判定說明", "整个账号": "整個帳號", "整轮查询时限": "整輪查詢時限", "整轮查询时限必须是 15~180 秒的整数": "整輪查詢時限必須是 15~180 秒的整數", "新账号落到组首 / 组尾": "新帳號落到組首 / 組尾", "旗舰": "旗艦", "无上限 · 已用 {used}": "無上限 · 已用 {used}", "无上限按日计(上游到达上限后仍继续计数,超额如实显示)": "無上限按日計(上游到達上限後仍繼續計數,超額如實顯示)", "无代理(直连)": "無代理(直連)", "无数据": "無資料", "无法拖动:已启用自动消耗规则({rules})。请先在「消耗顺序」中关闭这些规则,再手动调整。": "無法拖動:已啟用自動消耗規則({rules})。請先在「消耗順序」中關閉這些規則,再手動調整。", "无法拖动:当前已按积分到期时间和账号添加时间自动排序。请先在「消耗顺序」中关闭这两项规则,再手动调整。": "無法拖動:目前已按積分到期時間和帳號新增時間自動排序。請先在「消耗順序」中關閉這兩項規則,再手動調整。", "无法拖动:当前已按积分到期时间自动排序。请先在「消耗顺序」中关闭该规则,再手动调整。": "無法拖動:目前已按積分到期時間自動排序。請先在「消耗順序」中關閉該規則,再手動調整。", "无法拖动:当前已按账号添加时间自动排序。请先在「消耗顺序」中关闭该规则,再手动调整。": "無法拖動:目前已按帳號新增時間自動排序。請先在「消耗順序」中關閉該規則,再手動調整。", "无福利额度": "無福利額度", "既有 Clash Verge 直接引用继续可用;也可在「网络代理」页同步端点,再改选「已保存的代理」。": "既有 Clash Verge 直接參照繼續可用;也可在「網路代理」頁同步端點,再改選「已儲存的代理」。", "旧数据导入": "舊資料匯入", "旧版 / 定制站点才需要,新版可留空": "舊版 / 定製站點才需要,新版可留空", "时": "時", "明天 {clock}": "明天 {clock}", "明天 {time}": "明天 {time}", "明天到期": "明天到期", "明细": "明細", "是": "是", "昵称 {name}": "暱稱 {name}", "显示账号名": "顯示帳號名", "暂无可查询余额的账号": "暫無可查詢餘額的帳號", "暂无可比较余额;查到同单位的数值后自动生效,比例与无限额度不参与": "暫無可比較餘額;查到同單位的數值後自動生效,比例與無限額度不參與", "暂无可用积分信息": "暫無可用積分資訊", "暂无数据:先查询一次余额,之后会自动按到期排序": "暫無資料:先查詢一次餘額,之後會自動按到期排序", "暂无数据:先查询一次余额,可按需启用到期排序": "暫無資料:先查詢一次餘額,可按需啟用到期排序", "暂无读数": "暫無讀數", "暂无账号,请点击右上角「添加账号」": "暫無帳號,請點擊右上角「新增帳號」", "暂无额度信息": "暫無額度資訊", "更多操作": "更多操作", "更多设置": "更多設定", "更新于 {time}": "更新於 {time}", "更新失败": "更新失敗", "替换全部规则": "替換全部規則", "替换选中账号的限制规则": "替換選中帳號的限制規則", "最快到期优先": "最快到期優先", "最新添加优先": "最新新增優先", "最早 {soonest} 恢复": "最早 {soonest} 恢復", "最早恢复": "最早恢復", "最早添加优先": "最早新增優先", "最晚到期优先": "最晚到期優先", "最近更新": "最近更新", "有 {n} 个账号因提供商插件未就绪,暂未显示": "有 {n} 個帳號因供應商外掛尚未就緒,暫未顯示", "有 {n} 个账号暂不可用:它们依赖的提供商插件还没安装": "有 {n} 個帳號暫不可用:它們依賴的提供商外掛還沒安裝", "有效期": "有效期", "有的账号过了 0 点额度就回来 —— 选「自然日」": "有的帳號過了 0 點額度就回來 —— 選「自然日」", "服务器本地时区": "伺服器本地時區", "未使用": "未使用", "未启用套餐池账号,不生成验证码令牌": "未啟用套餐池帳號,不產生驗證碼權杖", "未命名账号": "未命名帳號", "未声明可手动续期;本机引用请在原客户端处理登录态。": "未宣告可手動更新;本機參照請於原用戶端處理登入狀態。", "未接入查询": "未接入查詢", "未显示的账号": "未顯示的帳號", "未显示账号": "未顯示帳號", "未查询": "未查詢", "未检测到 Clash Verge": "未檢測到 Clash Verge", "未检测到 Clash Verge 配置": "未檢測到 Clash Verge 配置", "未被使用": "未被使用", "未触发": "未觸發", "未触发{current}": "未觸發{current}", "未触发{usage}{countdown}": "未觸發{usage}{countdown}", "未设备注名": "未設備註名", "未返回余额数据": "未返回餘額資料", "未返回可确认的余额数值": "未回傳可確認的餘額數值", "未返回可识别的余额数据": "未返回可識別的餘額資料", "未返回重置时间": "未回傳重設時間", "未配置": "未配置", "未配置凭证": "未配置憑證", "本周期 Token 消耗达到限制器的上限,账号已被自动禁用(窗口重置也不恢复,需手动启用)": "本週期 Token 消耗達到限制器的上限,帳號已被自動停用(視窗重置也不恢復,需手動啟用)", "本周期 Token 消耗达到限制器的上限,转发时会跳过该账号(窗口重置自动恢复)": "本週期 Token 消耗達到限制器的上限,轉發時會跳過該帳號(視窗重置自動恢復)", "本周期已用": "本週期已用", "本地 Token 消耗": "本地 Token 消耗", "本地台账里今天还领过这些,但上面的读数里还没有:{plans}(读数刷新可能有延迟)": "本地臺賬裡今天還領過這些,但上面的讀數里還沒有:{plans}(讀數重新整理可能有延遲)", "本地消耗上限必须是大于 0 的安全整数": "本地消耗上限必須是大於 0 的安全整數", "本地用量保护": "本地用量保護", "本地统计只包含经过本网关的请求,不等于上游账单;清理请求日志不会清零。套餐选择用于限定保护范围,不会强制上游扣指定套餐。": "本地統計只包含經過本閘道器的請求,不等於上游賬單;清理請求日誌不會清零。套餐選擇用於限定保護範圍,不會強制上游扣指定套餐。", "本地请求次数": "本地請求次數", "本地领取于 {time}": "本地領取於 {time}", "本提供商不支持积分到期排序,默认保持手动顺序;可按需启用账号添加时间排序。": "本供應商不支援積分到期排序,預設保持手動順序;可按需啟用帳號新增時間排序。", "本提供商默认启用最快到期优先,账号添加时间默认关闭;关闭全部规则可恢复手动顺序。": "本供應商預設啟用最快到期優先,帳號新增時間預設關閉;關閉全部規則可恢復手動順序。", "本期活动": "本期活動", "本期活动按套餐分别展示,领取资格以上游返回为准": "本期活動按套餐分別顯示,領取資格以上游回傳為準", "本组 {n} 个账号的可用余额之和,按整组统计(不受筛选、搜索影响)": "本組 {n} 個帳號的可用餘額之和,按整組統計(不受篩選、搜尋影響)", "本组 {n} 个账号的百分比读数不能相加,取组内最低的剩余比例(按整组统计,不受筛选、搜索影响)": "本組 {n} 個帳號的百分比讀數不能相加,取組內最低的剩餘比例(按整組統計,不受篩選、搜尋影響)", "本组 {n} 个账号的额度概览(按整组统计,不受筛选、搜索影响)": "本組 {n} 個帳號的額度概覽(按整組統計,不受篩選、搜尋影響)", "本组代理": "本組代理", "本组操作": "本組操作", "本组每个账号会分别保存为一个 JSON 文件,包含被筛选隐藏的账号。": "本組每個帳號會分別儲存為一個 JSON 檔案,包含被篩選隱藏的帳號。", "权益 {value}": "權益 {value}", "权益 {value} {unit}": "權益 {value} {unit}", "条件即时生效,关掉面板就能看到结果。": "條件即時生效,關掉面板就能看到結果。", "条件组 {n}": "條件組 {n}", "来源 {source}": "來源 {source}", "查看": "檢視", "查看因插件未就绪而暂未显示的账号": "檢視因外掛未就緒而暫未顯示的帳號", "查看已禁用账号": "檢視已停用帳號", "查看插件状态": "查看外掛狀態", "查询中…": "查詢中…", "查询余额": "查詢餘額", "查询全部账号的余额(含已禁用账号 —— 禁用只表示不参与转发)": "查詢全部帳號的餘額(含已停用帳號 —— 停用只表示不參與轉發)", "查询凭证还没配齐:填好后余额列才有读数,在此之前会显示「未配置」。": "查詢憑證還沒配齊:填好後餘額列才有讀數,在此之前會顯示「未配置」。", "查询失败": "查詢失敗", "查询失败:{message}": "查詢失敗:{message}", "查询已成功,但上游未提供额度数据,不代表余额为零。": "查詢已成功,但上游未提供額度資料,不代表餘額為零。", "查询设置": "查詢設定", "查询该账号剩余余额(读数显示在余额列)": "查詢該帳號剩餘餘額(讀數顯示在餘額列)", "查询超时,可重新查询": "查詢逾時,可重新查詢", "查询间隔": "查詢間隔", "查询间隔必须是 {min} 秒 ~ 24 小时": "查詢間隔必須是 {min} 秒 ~ 24 小時", "桌面端实时登录态请在原客户端更新": "桌面端即時登入狀態請在原用戶端更新", "桌面端实时登录态(凭证每次从客户端登录态文件读取)": "桌面版即時登入態(憑證每次從客戶端登入態檔案讀取)", "模型范围": "模型範圍", "正在加载…": "正在載入…", "正在探测可领取的套餐…": "正在探測可領取的套餐…", "正在查询": "正在查詢", "正在查询本期活动…": "正在查詢本期活動…", "正在补铸验证码令牌": "正在補鑄驗證碼權杖", "正在读取 Clash Verge 配置…": "正在讀取 Clash Verge 配置…", "正在读取…": "正在讀取…", "正在读取代理列表…": "正在讀取代理列表…", "正在连接上游…": "正在連線上游…", "正常": "正常", "此刻正在使用这个账号的请求数(含还在下发内容的流式请求);为 0 时不显示": "此刻正在使用這個帳號的請求數(含還在下發內容的流式請求);為 0 時不顯示", "此额度不属于账号当前使用的通道": "此額度不屬於帳號當前使用的通道", "此额度不属于账号当前使用的通道,切换到对应通道后才参与判定。": "此額度不屬於帳號當前使用的通道,切換到對應通道後才參與判定。", "每": "每", "每 {period}消耗 ≥ {count} Token": "每 {period}消耗 ≥ {count} Token", "每周或每月额度已耗尽,短周期实际可用额度按 0% 计算;账号明细保留原始读数": "每週或每月額度已耗盡,短週期實際可用額度按 0% 計算;帳號明細保留原始讀數", "每日消耗 ≥": "每日消耗 ≥", "每日消耗 ≥ {count} Token(每天 0 点重置)": "每日消耗 ≥ {count} Token(每天 0 點重置)", "每日重置": "每日重置", "每日重置(额度按周期回满,不是作废)": "每日重置(額度按週期回滿,不是作廢)", "每条请求换一个出口(按顺序轮流),上游看到的 IP 因此是变化的;出口的地址与端口由「网络代理」页管理": "每條請求換一個出口(按順序輪流),上游看到的 IP 因此是變化的;出口的地址與連接埠由「網路代理」頁管理", "每组共用一个触发动作;第二条条件起可选择「与/或」。与优先于或,下面会显示明确分组。各条件组独立生效。": "每組共用一個觸發動作;第二條條件起可選擇「與/或」。與優先於或,下面會顯示明確分組。各條件組獨立生效。", "没有匹配「{kw}」的账号": "沒有匹配「{kw}」的帳號", "没有可全选的账号": "沒有可全選的帳號", "没有可用出口": "沒有可用出口", "没有适用于本次操作的账号": "沒有適用於本次操作的帳號", "没有选中的账号": "沒有選中的帳號", "活动套餐": "活動套餐", "活动套餐的推理端点要求每条请求带一个阿里云验证码令牌;令牌由本应用在后台静默铸造,界面关闭时无法铸造": "活動套餐的推理端點要求每條請求帶一個阿里雲驗證碼權杖;權杖由本應用在後臺靜默鑄造,介面關閉時無法鑄造", "活动套餐(Start Plan)": "活動套餐(Start Plan)", "活动套餐(Start Plan)— 走官方活动端点,用活动里领到的额度": "活動套餐(Start Plan)— 走官方活動端點,用活動裡領到的額度", "活动时间:{time}": "活動時間:{time}", "活动期内每天发一份新套餐;同一份当天重复领取会提示「已领取过」,次日可再领。领取要走一次人机验证(滑块)。": "活動期內每天發一份新套餐;同一份當天重複領取會提示「已領取過」,次日可再領。領取要走一次人機驗證(滑塊)。", "活动期内每天发一份新套餐;已领的套餐不重复提交,次日可领新套餐。只有主动领取时才会进行人机验证。": "活動期間每天發一份新套餐;已領的套餐不重複提交,次日可領新套餐。只有主動領取時才會進行人機驗證。", "活动期至 {time}": "活動期至 {time}", "活动目录合并账号预览、营销活动与匿名探测。已领取仅依据领取记录或账号名下套餐;状态待确认时可尝试领取,资格以上游返回为准。": "活動目錄合併帳號預覽、行銷活動與匿名探測。已領取僅依據領取紀錄或帳號名下套餐;狀態待確認時可嘗試領取,資格以上游回傳為準。", "测试中…": "測試中…", "测试出口": "測試出口", "消耗顺序": "消耗順序", "添加 新→旧": "新增 新→舊", "添加 旧→新": "新增 舊→新", "添加规则": "新增規則", "添加账号请用桌面端或网页版面板": "新增帳號請用桌面版或網頁版面板", "添加限制": "新增限制", "清掉本机的限流标记,立刻重新尝试该模型(上游若仍在限流会再次被标记)": "清掉本機的限流標記,立刻重新嘗試該模型(上游若仍在限流會再次被標記)", "清掉该账号全部模型的限流标记": "清掉該帳號全部模型的限流標記", "清空全部规则": "清空全部規則", "清空搜索与三个筛选档位,回到全部账号": "清空搜尋與三個篩選檔位,回到全部帳號", "清空选中账号的限制规则": "清空選中帳號的限制規則", "清除": "清除", "清除失败:{error}": "清除失敗:{error}", "清除失败:{message}": "清除失敗:{message}", "清除已配置的 API Key(转发时会因缺少凭证被跳过)": "清除已配置的 API Key(轉發時會因缺少憑證被跳過)", "清除已配置的 {label}": "清除已配置的 {label}", "清除已配置的余额查询凭证": "清除已配置的餘額查詢憑證", "清除标记": "清除標記", "清除筛选": "清除篩選", "清除该账号的冷却与全部模型限流标记": "清除該帳號的冷卻與全部模型限流標記", "滚动窗口": "滾動視窗", "激活事件补报失败,可能影响领取资格:{message}": "啟用事件補報失敗,可能影響領取資格:{message}", "点击{action}各模型的限流明细": "點擊{action}各模型的限流明細", "点击查看各模型的限流明细": "點擊檢視各模型的限流明細", "点击查看账号冷却与模型限流明细": "點擊檢視帳號冷卻與模型限流明細", "状态": "狀態", "状态 {status}": "狀態 {status}", "状态待确认": "狀態待確認", "状态未知": "狀態未知", "生效 {time}": "生效 {time}", "生效中": "生效中", "生效至到期累计(不自动回满)": "生效至到期累計(不自動回滿)", "用 NewAPI 站点的个人访问令牌查询账户余额(不是这条账号的上游 API Key)。令牌在站点的「个人设置」里生成,只有旧版 / 定制站点才需要额外填用户 ID。": "用 NewAPI 站點的個人存取權杖查詢帳戶餘額(不是這條帳號的上游 API Key)。權杖在站點的「個人設定」裡生成,只有舊版 / 定製站點才需要額外填使用者 ID。", "用 bigmodel.cn 控制台的访问令牌查询账户余额(人民币元)。令牌是登录后浏览器 Cookie `bigmodel_token_production` 的值:开发者工具 → 应用(Application)→ Cookie 里复制。": "用 bigmodel.cn 控制台的存取權杖查詢帳戶餘額(人民幣元)。權杖是登入後瀏覽器 Cookie `bigmodel_token_production` 的值:開發者工具 → 應用(Application)→ Cookie 裡複製。", "用下面的规则统一替换各账号的全部规则,执行前会再次确认。": "用下面的規則統一替換各帳號的全部規則,執行前會再次確認。", "用商汤日日新控制台的账号密码查询(与推理用的 API Key 不是同一套)。网关会自动换取登录票并缓存,过期后自动重登,不需要手动维护。": "用商湯日日新控制台的帳號密碼查詢(與推理用的 API Key 不是同一套)。閘道器會自動換取登入票並快取,過期後自動重登,不需要手動維護。", "用户名": "使用者名稱", "用这条账号的 API Key 查询订阅用量,不需要额外配置;读数展开成 5 小时 / 每周 / 每月三个窗口。": "用這條帳號的 API Key 查詢訂閱用量,不需要額外配置;讀數展開成 5 小時 / 每週 / 每月三個視窗。", "用这条账号的 API Key 查询,不需要额外配置。": "用這條帳號的 API Key 查詢,不需要額外配置。", "用这条账号的 API Key 生成签名后查询账户余额(美元),不需要额外配置。要求 API Key 是 z.ai 的「id.secret」形态(控制台生成的 Key 就是)。": "用這條帳號的 API Key 生成簽名後查詢帳戶餘額(美元),不需要額外配置。要求 API Key 是 z.ai 的「id.secret」形態(控制台生成的 Key 就是)。", "留空 = 不修改,清除用右边的按钮": "留空 = 不修改,清除用右邊的按鈕", "登录 / 导入一个新账号": "登入 / 匯入一個新帳號", "登录授权已失效,请重新登录;自动续期无法恢复已过期或已撤销的刷新令牌。": "登入授權已失效,請重新登入;自動續期無法恢復已過期或已撤銷的更新權杖。", "登录授权截止:{time};自动续期不会延长此时间,届时需重新网页登录。": "登入授權截止:{time};自動續期不會延長此時間,屆時需重新透過網頁登入。", "百分比阈值必须在 0~100 之间": "百分比閾值必須在 0~100 之間", "直连": "直連", "确定删除账号「{name}」?这个操作不可恢复。": "確定刪除帳號「{name}」?這個操作不可恢復。", "确定删除选中的 {count} 个账号?此操作不可恢复,账号的登录态会一并移除。": "確定刪除選中的 {count} 個帳號?此操作不可恢復,帳號的登入態會一併移除。", "确定清空 {count} 个账号的全部限制规则?余额与 Token 将不再设限;已禁用的账号不会自动启用。": "確定清空 {count} 個帳號的全部限制規則?餘額與 Token 將不再設限;已停用的帳號不會自動啟用。", "确定清除全部模型的限流标记?": "確定清除全部模型的限流標記?", "确定清除模型「{model}」的限流标记?": "確定清除模型「{model}」的限流標記?", "确定清除该账号的冷却与全部模型限流标记?": "確定清除該帳號的冷卻與全部模型限流標記?", "禁用": "停用", "禁用整个账号(手动恢复)": "停用整個帳號(手動恢復)", "禁用该账号(需手动重新启用)": "停用該帳號(需手動重新啟用)", "禁用这一组里的全部账号(含被筛选隐藏的)": "停用這一組裡的全部帳號(含被篩選隱藏的)", "福利按限时活动下发,不是每个账号都有 —— 正常状态,不是查询失败": "福利按限時活動下發,不是每個帳號都有 —— 正常狀態,不是查詢失敗", "福利日额度": "福利日額度", "福利网关未读到:{error}": "福利閘道器未讀到:{error}", "秒": "秒", "秒;默认 60 秒,包含重试等待,多步骤查询可适当延长。": "秒;預設 60 秒,包含重試等待,多步驟查詢可適當延長。", "积分": "積分", "积分到期时间": "積分到期時間", "积分包": "積分包", "积分明细": "積分明細", "积分查询已复用转发用的登录凭证,这里通常留空即可。只有旧版本填过、或从旧代理导入过凭证时才有值": "積分查詢已複用轉發用的登入憑證,這裡通常留空即可。只有舊版本填過、或從舊代理匯入過憑證時才有值", "稍后由后台判定自动禁用": "稍後由後臺判定自動停用", "窗口 = 今天 0 点起(本地时区),0 点重置即清零恢复;按账号在 requests 表聚合": "視窗 = 今天 0 點起(本地時區),0 點重置即清零恢復;按帳號在 requests 表聚合", "窗口内已用 {used} / {limit} Token,转发时会跳过该账号(重置后自动恢复)": "視窗內已用 {used} / {limit} Token,轉發時會跳過該帳號(重置後自動恢復)", "窗口对齐自然时间(整点 / 整 N 分钟一轮回),重置即清零恢复;按账号在 requests 表聚合": "視窗對齊自然時間(整點 / 整 N 分鐘一輪迴),重置即清零恢復;按帳號在 requests 表聚合", "窗口数量超过展示上限,仅展示部分读数": "時段數量超過顯示上限,僅顯示部分讀數", "窗口重置时间": "各時段重設時間", "窗口长度": "視窗長度", "窗口额度与时间": "時間窗額度與時間", "端口": "連接埠", "端口准备中": "連接埠準備中", "第 {rank} 顺位": "第 {rank} 順位", "等待当前验证码流程结束": "等待當前驗證碼流程結束", "筛选": "篩選", "筛选 / 搜索 / 分页生效时组顺位不可拖动(别家的组整组不可见,落点没法定位)": "篩選 / 搜尋 / 分頁生效時組順位不可拖動(別家的組整組不可見,落點沒法定位)", "系统代理信息无效,请手动填写。": "系統代理資訊無效,請手動填寫。", "系统代理协议暂不支持自动填入,请手动配置 HTTP 或 SOCKS5 代理": "系統代理協定暫不支援自動填入,請手動設定 HTTP 或 SOCKS5 代理", "系统代理地址无效,请手动填写": "系統代理位址無效,請手動填寫", "系统代理认证信息无法读取,请手动填写": "系統代理驗證資訊無法讀取,請手動填寫", "累计起点": "累計起點", "级联删除名下全部账号,不可恢复": "級聯刪除名下全部帳號,不可恢復", "组内": "組內", "组内先后:按住左边的把手上下拖动即可调整;整组的先后拖分组带的把手": "組內先後:按住左邊的把手上下拖動即可調整;整組的先後拖分組帶的把手", "组内并发上限": "組內並發上限", "组内手动顺序": "組內手動順序", "组内第 {rank} 位": "組內第 {rank} 位", "组顺位已锁定": "組順位已鎖定", "组顺位:越小越先用(拖动分组带调整)": "組順位:越小越先用(拖動分組帶調整)", "统一设置自动查询的开关、间隔和失败重试次数;不会复制或覆盖余额查询凭证。": "統一設定自動查詢的開關、間隔和失敗重試次數;不會複製或覆蓋餘額查詢憑證。", "统计周期": "統計週期", "统计周期尚未开始或已经结束": "統計週期尚未開始或已經結束", "统计窗口必须是 1 分钟~31 天": "統計視窗必須是 1 分鐘~31 天", "统计结束时间必须晚于开始时间": "統計結束時間必須晚於開始時間", "缓存用量未知,不按零计量,也不用于推算余额": "快取用量未知,不按零計量,也不用於推算餘額", "编码套餐(Coding Plan)": "編碼套餐(Coding Plan)", "编码套餐(Coding Plan)— 走开放平台端点,消耗开放平台的额度(订阅套餐 / 资源包 / 充值余额)": "編碼套餐(Coding Plan)— 走開放平臺端點,消耗開放平臺的額度(訂閱套餐 / 資源包 / 充值餘額)", "编码套餐(Coding Plan)— 走开放平台端点,用自己订阅的额度": "編碼套餐(Coding Plan)— 走開放平臺端點,用自己訂閱的額度", "编辑": "編輯", "编辑限制": "編輯限制", "编辑限制条件": "編輯限制條件", "缺失": "缺失", "网关电脑未检测到可导入的系统代理;请手动填写,或选择已保存的代理。": "閘道電腦未偵測到可匯入的系統代理;請手動填寫,或選擇已儲存的代理。", "网络": "網路", "网页端会逐个下载文件;浏览器提示时请允许本网站下载多个文件。": "網頁端會逐個下載檔案;瀏覽器提示時請允許本網站下載多個檔案。", "自动查询余额": "自動查詢餘額", "自动查询余额(按下面的间隔自动刷新余额列的读数)": "自動查詢餘額(按下面的間隔自動刷新余額列的讀數)", "自定义代理": "自定義代理", "自定义代理…": "自定義代理…", "自定义:": "自定義:", "自然周": "自然周", "自然日": "自然日", "自然日(每天 0 点)": "自然日(每天 0 點)", "自然月": "自然月", "补全请求": "補全請求", "补铸失败:{error}": "補鑄失敗:{error}", "表格": "表格", "规则操作": "規則操作", "视图": "檢視", "解析失败": "解析失敗", "触发动作": "觸發動作", "触发后": "觸發後", "触发条件": "觸發條件", "计入 {counted}/{total}": "計入 {counted}/{total}", "订阅已移除": "訂閱已移除", "订阅统计未读到:{error}": "訂閱統計未讀到:{error}", "记录里没有过期时间": "記錄裡沒有過期時間", "设为首选": "設為首選", "设置并发上限": "設定併發上限", "访客账号没有积分体系,因此不查询余额(登录账号可以查)": "訪客帳號沒有積分體系,因此不查詢餘額(登入帳號可以查)", "访问令牌": "存取權杖", "试用版": "試用版", "该上游无需鉴权": "該上游無需鑑權", "该上游无需鉴权(转发与拉取模型都不发送鉴权头)": "該上游無需鑑權(轉發與拉取模型都不傳送鑑權頭)", "该提供商尚未接入余额查询": "此提供商尚未接入餘額查詢", "该提供商没有余额查询": "該提供商沒有餘額查詢", "该提供商没有余额查询;可按 Token 消耗设置限制。": "該提供商沒有餘額查詢;可按 Token 消耗設定限制。", "该提供商的推理转发尚未接入,账号不参与转发": "該提供商的推理轉發尚未接入,帳號不參與轉發", "该账号不支持刷新 Token 或未提供刷新凭证": "此帳號不支援更新 Token 或未提供更新憑證", "该账号出网走的代理(Clash 出口 / 自定义 / 直连);点击可修改": "該帳號出網走的代理(Clash 出口 / 自定義 / 直連);點擊可修改", "该账号出网走的代理(已保存的代理 / 自定义 / 直连);点击可修改": "該帳號出網走的代理(已儲存的代理 / 自定義 / 直連);點擊可修改", "该账号当前限流中的模型;点徽章看明细": "該帳號當前限流中的模型;點徽章看明細", "该账号没有套餐登录态(jwt),套餐池通道会失败:请重新登录该账号": "該帳號沒有套餐登入態(jwt),套餐池通道會失敗:請重新登入該帳號", "该账号没有套餐登录态(jwt),活动套餐会失败:请重新登录该账号": "該帳號沒有套餐登入態(jwt),活動套餐會失敗:請重新登入該帳號", "该账号没有福利模型额度(福利按活动下发,不是每个账号都有)": "該帳號沒有福利模型額度(福利按活動下發,不是每個帳號都有)", "该账号没有积分类读数(额度只有福利 token 池)": "該帳號沒有積分類讀數(額度只有福利 token 池)", "该账号的登录态已被上游注销,自动刷新不会再成功,请重新登录该账号": "該帳號的登入態已被上游登出,自動重新整理不會再成功,請重新登入該帳號", "该账号的额度只有福利 token 池(见余额格那两行),订阅统计没有积分类计量表": "該帳號的額度只有福利 token 池(見餘額格那兩行),訂閱統計沒有積分類計量表", "该额度中的全部模型": "該額度中的全部模型", "请先勾选要操作的账号": "請先勾選要操作的帳號", "请先选择 Clash Verge 出口": "請先選擇 Clash Verge 出口", "请先选择已保存的代理": "請先選擇已儲存的代理", "请填写代理主机地址": "請填寫代理主機地址", "请填写提供商名称": "請填寫提供商名稱", "请填写提供商的 Base URL": "請填寫提供商的 Base URL", "请填写查询间隔": "請填寫查詢間隔", "请填写重置周期": "請填寫重置週期", "请至少添加一条限制规则;清空请使用清空操作": "請至少新增一條限制規則;清空請使用清空操作", "请选择代理": "請選擇代理", "请选择出口": "請選擇出口", "读取中…": "讀取中…", "读取失败:{error}": "讀取失敗:{error}", "读取系统代理失败": "讀取系統代理失敗", "读取网关电脑当前的 HTTPS 系统代理,填入自定义地址;后续系统设置变化不会自动同步。": "讀取閘道電腦目前的 HTTPS 系統代理,填入自訂位址;後續系統設定變更不會自動同步。", "读取自 {dir};端口由 Clash Verge 管理,这里实时同步": "讀取自 {dir};連接埠由 Clash Verge 管理,這裡即時同步", "读数来自自动余额查询;与余额列同一数字口径,严格小于才触发(等于阈值仍可用)": "讀數來自自動餘額查詢;與餘額列同一數字口徑,嚴格小於才觸發(等於閾值仍可用)", "读数里没有套餐清单(免费账号、或套餐的上游状态还没刷新;可点右上角「查询余额」重读)": "讀數里沒有套餐清單(免費帳號、或套餐的上游狀態還沒重新整理;可點右上角「查詢餘額」重讀)", "读数里没有额度桶,这里按套餐权益里的已用 / 总量显示(上游给的数)": "讀數里沒有額度桶,這裡按套餐權益裡的已用 / 總量顯示(上游給的數)", "调整到全局队列第一位": "調整到全域佇列第一位", "调整顺序失败:{message}": "調整順序失敗:{message}", "账号": "帳號", "账号 ID": "帳號 ID", "账号不存在,请刷新后重试": "帳號不存在,請重新整理後重試", "账号不存在,请刷新后重试。": "帳號不存在,請重新整理後重試。", "账号主额度": "帳號主額度", "账号余额单位不一致,暂不按余额排序,继续比较其他规则": "帳號餘額單位不一致,暫不依餘額排序,繼續比較其他規則", "账号全部模型暂时停止转发 · 到恢复时间自动解除": "帳號全部模型暫時停止轉發 · 到恢復時間自動解除", "账号冷却": "帳號冷卻", "账号列表刷新不可用,请重新打开页面": "帳號清單無法重新整理,請重新開啟頁面", "账号列表刷新失败": "帳號清單重新整理失敗。", "账号列表刷新接口不可用,请重新打开页面": "帳號清單重新整理介面無法使用,請重新開啟頁面。", "账号列表加载失败,请点击「刷新」重试": "帳號清單載入失敗,請點擊「重新整理」重試", "账号列表加载失败,请点击「刷新」重试:{message}": "帳號清單載入失敗,請點擊「重新整理」重試:{message}", "账号列表已刷新": "帳號清單已重新整理", "账号名 / 邮箱 / 备注": "帳號名 / 郵箱 / 備註", "账号套餐到期:{time}": "帳號套餐到期:{time}", "账号导出失败:{reason}": "帳號匯出失敗:{reason}", "账号已保存,但列表刷新失败:{error}": "帳號已儲存,但清單重新整理失敗:{error}", "账号已保存,但提供商未更新:{error}": "帳號已儲存,但提供商未更新:{error}", "账号数据仍然保留,无需重新添加。安装或启用对应插件并成功加载后,账号会自动恢复显示。": "帳號資料仍然保留,無需重新新增。安裝或啟用對應外掛並成功載入後,帳號會自動恢復顯示。", "账号数据都还在库里,装上插件后会自动出现在这里 —— 不需要重新添加。": "帳號資料都還在庫裡,裝上外掛後會自動出現在這裡 —— 不需要重新新增。", "账号显示名称": "帳號顯示名稱", "账号更新接口不可用,请重新打开页面": "帳號更新介面無法使用,請重新開啟頁面。", "账号更新结果未确认,请刷新后核对设置": "帳號更新結果尚未確認,請重新整理後核對設定。", "账号正在导出,请稍候": "帳號正在匯出,請稍候", "账号添加时间": "帳號新增時間", "账号级条件组已触发;点击查看限制器": "帳號級條件組已觸發;點擊檢視限制器", "账号表": "帳號表", "账号视图": "帳號檢視", "账号设置": "帳號設定", "账号设置 · {name}": "帳號設定 · {name}", "账号设置分组": "帳號設定分組", "账号详情": "帳號詳情", "账号邮箱": "帳號郵箱", "账号页与全局路由共用此消耗顺序,网关按最新余额数据选路,不需要保持页面打开。模型独立顺序会覆盖全局。": "帳號頁與全域路由共用此消耗順序,閘道器按最新餘額資料選路,不需要保持頁面開啟。模型獨立順序會覆蓋全域。", "跨账号批量配置仅支持通用条件;套餐实例不能直接复制到其他账号。": "跨帳號批次配置僅支援通用條件;套餐例項不能直接複製到其他帳號。", "跳过 {count} 个:": "跳過 {count} 個:", "跳过该账号(余额回升自动恢复)": "跳過該帳號(餘額回升自動恢復)", "跳过该账号(自动恢复)": "跳過該帳號(自動恢復)", "跳过该账号(重置后自动恢复)": "跳過該帳號(重置後自動恢復)", "跳过(自动恢复)": "跳過(自動恢復)", "转发优先级": "轉發優先順序", "转发走套餐池(Start Plan)通道(zcode.z.ai 的 Anthropic 端点,用账号里的体验额度 / 活动领取额度);在账号设置里可切回编码套餐": "轉發走套餐池(Start Plan)通道(zcode.z.ai 的 Anthropic 端點,用帳號裡的體驗額度 / 活動領取額度);在帳號設定裡可切回編碼套餐", "转发走活动套餐通道(zcode.z.ai 的 Anthropic 端点,用账号里领到的额度);在账号设置里可切回编码套餐": "轉發走活動套餐通道(zcode.z.ai 的 Anthropic 端點,用帳號裡領到的額度);在帳號設定裡可切回編碼套餐", "转发顺序": "轉發順序", "轮询全部代理节点": "輪詢全部代理節點", "轮询的代理": "輪詢的代理", "轮询至少要选择一条代理(或改选「全部」)": "輪詢至少要選擇一條代理(或改選「全部」)", "轮询(换 IP)": "輪詢(換 IP)", "还有 {d} 天": "還有 {d} 天", "还有 {h} 小时": "還有 {h} 小時", "还有 {h} 小时 {m} 分": "還有 {h} 小時 {m} 分", "还有 {n} 分钟": "還有 {n} 分鐘", "还没有代理(去「网络代理」页添加)": "還沒有代理(去「網路代理」頁新增)", "还没有余额读数(已自动查询一次,稍候;也可以点右上角「查询余额」重读)": "還沒有餘額讀數(已自動查詢一次,稍候;也可以點右上角「查詢餘額」重讀)", "还没有保存的代理": "還沒有儲存的代理", "还没有批量规则,请先添加限制或从所选账号复制。": "還沒有批次規則,請先新增限制或從所選帳號複製。", "还没有条件组:账号照常参与转发,不设置额度保护。": "還沒有條件組:帳號照常參與轉發,不設定額度保護。", "还没有账号,去桌面端添加": "還沒有帳號,去桌面版新增", "还没有账号,请点击「添加账号」": "還沒有帳號,請點擊「新增帳號」", "还没有限制规则:账号照常参与转发,余额与 Token 消耗都不设上限。": "還沒有限制規則:帳號照常參與轉發,餘額與 Token 消耗都不設上限。", "这一份今天已经领过了(重复领取上游会回「已领取过」)": "這一份今天已經領過了(重複領取上游會回「已領取過」)", "这一家查不到积分到期时间": "這一家查不到積分到期時間", "这一家没有可用余额查询": "這一家沒有可用餘額查詢", "这一栏改的是": "這一欄改的是", "这一段按提供商出现:有什么配什么。": "這一段按提供商出現:有什麼配什麼。", "这一类现在没有账号": "這一類現在沒有帳號", "这一组开着排序规则:关掉规则后才能手动拖": "這一組開著排序規則:關掉規則後才能手動拖曳", "这个账号的余额走窗口限额通道(只配了编码套餐 API Key):只有每 N 小时的剩余比例,读不到套餐清单": "這個帳號的餘額走視窗限額通道(只配了編碼套餐 API Key):只有每 N 小時的剩餘比例,讀不到套餐清單", "这些分组里一个启用的账号都没有(禁用不参与转发),默认不显示;点一下切到「禁用」查看,也就能重新启用它们": "這些分組裡一個啟用的帳號都沒有(停用不參與轉發),預設不顯示;點一下切到「停用」檢視,也就能重新啟用它們", "这会{what}所有启用中的账号,转发将不可用。确定继续?": "這會{what}所有啟用中的帳號,轉發將不可用。確定繼續?", "这是既有配置(直接引用 Clash 出口,不经过代理池)。推荐改用上面的": "這是既有配置(直接引用 Clash 出口,不經過代理池)。推薦改用上面的", "这条自定义账号既没有 API Key,也没有勾选「无需鉴权」:转发时会被跳过,该提供商下的模型也不会出现在模型列表里。去账号「设置」里补上 Key,或勾选「该上游无需鉴权」": "這條自定義帳號既沒有 API Key,也沒有勾選「無需鑑權」:轉發時會被跳過,該提供商下的模型也不會出現在模型列表裡。去帳號「設定」裡補上 Key,或勾選「該上游無需鑑權」", "这条账号是谁、排第几、能不能接请求。": "這條帳號是誰、排第幾、能不能接請求。", "这条账号访问上游走哪条线路。": "這條帳號存取上游走哪條線路。", "这里只影响「显示」:卸载或停用插件不会删除账号;重新安装、启用并成功加载后,这些账号会自动回到列表。": "這裡隻影響「顯示」:解除安裝或停用外掛不會刪除帳號;重新安裝、啟用併成功載入後,這些帳號會自動回到列表。", "连接失败": "連線失敗", "连接数": "連線數", "追加规则(保留原有)": "追加規則(保留原有)", "追加限制规则": "追加限制規則", "选中多个模型时,每个模型单独累计、单独比较阈值;不合并用量。": "選中多個模型時,每個模型單獨累計、單獨比較閾值;不合並用量。", "选择": "選擇", "选择所选账号作为模板(可选)": "選擇所選帳號作為模板(可選)", "选择要轮询的代理(可多选)": "選擇要輪詢的代理(可多選)", "逐个刷新所选账号的 Token,未到期也会尝试刷新;不改变启用状态、代理或转发顺序。": "逐一更新所選帳號的 Token,尚未到期也會嘗試更新;不改變啟用狀態、代理或轉發順序。", "逐窗口最低:{list}": "逐視窗最低:{list}", "逐请求轮换出口(换 IP):OpenCode Zen 免费档按 IP 限流,单个 IP 的额度用完会对它一律 429": "逐請求輪換出口(換 IP):OpenCode Zen 免費檔按 IP 限流,單個 IP 的額度用完會對它一律 429", "通用额度/本地保护": "通用額度/本地保護", "邮箱": "郵箱", "邮箱 {email}": "郵箱 {email}", "部分余额信息暂未获取;未显示上游原始诊断": "部分餘額資訊暫未取得;未顯示上游原始診斷", "部分套餐来源查询失败,已保留其他来源的结果:{message}": "部分套餐來源查詢失敗,已保留其他來源的結果:{message}", "部分套餐来源查询失败,暂不能确认是否有可领取套餐": "部分套餐來源查詢失敗,暫不能確認是否有可領取套餐", "部分来源查询失败,已保留其他结果:{message}": "部分來源查詢失敗,已保留其他結果:{message}", "部分来源查询失败,暂不能确认本期活动或领取状态": "部分來源查詢失敗,暫時無法確認本期活動或領取狀態", "部分窗口偏低": "部分時段額度偏低", "部分窗口未返回可识别读数": "部分時段未回傳可識別讀數", "部分读数未知": "部分讀數未知", "部分额度读数暂不可用。": "部分額度讀數暫時無法取得。", "配置已变更,请重新查询": "設定已變更,請重新查詢", "重新安装这个插件后自动回来": "重新安裝這個外掛後自動回來", "重新读取": "重新讀取", "重新读取该账号的余额与套餐(走余额查询那条链)": "重新讀取該帳號的餘額與套餐(走餘額查詢那條鏈)", "重新读取账号列表和插件状态,不刷新 Token 或查询余额": "重新讀取帳號清單和外掛狀態,不更新 Token 或查詢餘額", "重查": "重查", "重置": "重置", "重置 {date}": "重置 {date}", "重置也不恢复,需手动启用": "重置也不恢復,需手動啟用", "重置周期必须是 30 分钟 ~ 24 小时": "重置週期必須是 30 分鐘 ~ 24 小時", "重置方式": "重置方式", "重置时区": "重置時區", "重置详情": "重設詳情", "长期有效": "長期有效", "间隔单位": "間隔單位", "阈值": "閾值", "降低优先级": "降低優先順序", "限制器": "限制器", "限制器 · {n} 个模型": "限制器 · {n} 個模型", "限制器 · 账号已跳过": "限制器 · 帳號已跳過", "限制器:{window}已用 {used} / {threshold} Token": "限制器:{window}已用 {used} / {threshold} Token", "限制指标": "限制指標", "限制类型": "限制類型", "限制阈值必须是大于 0 的数字": "限制閾值必須是大於 0 的數字", "限制阈值必须是非负有限数字": "限制閾值必須是非負有限數字", "限流": "限流", "限流中": "限流中", "限流已清除": "限流已清除", "限流明细": "限流明細", "限流模型": "限流模型", "限额": "限額", "限额状态": "限額狀態", "隐藏账号名(名字显示为星号)": "隱藏帳號名(名字顯示為星號)", "需要人机验证时,在该账号的「套餐明细」中主动开始验证。": "需要人機驗證時,在該帳號的「套餐明細」中主動開始驗證。", "需要重新登录": "需要重新登入", "需要验证码时由打开着的主窗口或浏览器面板补铸;库存、补铸状态和失败原因分别显示": "需要驗證碼時由開啟著的主視窗或瀏覽器面板補鑄;庫存、補鑄狀態和失敗原因分別顯示", "需重登": "需重登", "顺序": "順序", "顺序未保存:{message}": "順序未儲存:{message}", "领取 {time}": "領取 {time}", "额度": "額度", "额度充足": "額度充足", "额度来源": "額度來源", "额度查询暂不可用。": "額度查詢暫時無法使用。", "额度查询未完成,未显示上游原始诊断。": "額度查詢未完成,未顯示上游原始診斷。", "额度窗口读数来自开放平台监控通道(套餐 JWT 那条通道没有额度桶):读的是每 N 小时 / 每周窗口的剩余比例": "額度視窗讀數來自開放平臺監控通道(套餐 JWT 那條通道沒有額度桶):讀的是每 N 小時 / 每週視窗的剩餘比例", "额度详情": "額度明細", "首次失败后额外重试的次数;默认 3 次,0 = 不重试。手动和自动查询均生效,全部失败后才显示失败并记录日志。": "首次失敗後額外重試的次數;預設 3 次,0 = 不重試。手動和自動查詢均生效,全部失敗後才顯示失敗並記錄日誌。", "验证失败:{error}": "驗證失敗:{error}", "验证码令牌池接口不可用": "驗證碼權杖池介面不可用", "验证码令牌:{counts}": "驗證碼權杖:{counts}", "高级请求": "進階請求", "魔粒": "魔粒", "默认仅开启最快到期优先;可用余额和账号添加时间默认关闭。": "預設僅開啟最快到期優先;可用餘額和帳號新增時間預設關閉。", "默认保持手动顺序,可按需开启支持的自动排序规则。": "預設保持手動順序,可依需要開啟支援的自動排序規則。", "默认展开 / 收起": "預設展開 / 收合", "({n} 个未配置查询凭证)": "({n} 個未配置查詢憑證)", "(不可用)": "(不可用)", "(其他订阅,可能未生效)": "(其他訂閱,可能未生效)", "(只测了前 {limit} 个,还有 {rest} 个未测)": "(只測了前 {limit} 個,還有 {rest} 個未測)", "(名下 {count} 个账号共用)": "(名下 {count} 個帳號共用)", "(已在 Clash 中禁用)": "(已在 Clash 中停用)", "(库存为空,等待补铸;请保持主窗口或浏览器面板打开)": "(庫存為空,等待補鑄;請保持主視窗或瀏覽器面板開啟)", "(未启用套餐池账号,暂不补铸)": "(未啟用套餐池帳號,暫不補鑄)", "(激活事件补报失败,可能影响领取资格:{message})": "(啟用事件補報失敗,可能影響領取資格:{message})", "+ 添加条件": "+ 新增條件", "+ 添加限制": "+ 新增限制", ",{countdown}重置": ",{countdown}重置", ",只对 OpenCode Zen 这类上游有意义,别的家请关掉。": ",只對 OpenCode Zen 這類上游有意義,別的家請關掉。", ",已达到上限": ",已達到上限", ":到「网络代理」页的「订阅管理」里点「同步 Clash Verge」把出口导进池后即可选 —— 那样能集中测试、也能被多个账号共用。": ":到「網路代理」頁的「訂閱管理」裡點「同步 Clash Verge」把出口導進池後即可選 —— 那樣能集中測試、也能被多個帳號共用。", ";": ";", "{count} 个分区有未保存的更改": "{count} 個分區有未儲存的變更", "{count} 个账号共用": "{count} 個帳號共用", "{count} 个账号共用提供商的连接配置。": "{count} 個帳號共用提供商的連線設定。", "{count} 个账号共用连接配置": "{count} 個帳號共用連線設定", "✅ 已改回跟随提供商的 Base URL": "✅ 已改回跟隨提供商的 Base URL", "「{name}」名下 {count} 个账号共用这些连接设置。修改协议或 Base URL 可能中断正在进行的请求。": "「{name}」名下 {count} 個帳號共用這些連線設定。修改協定或 Base URL 可能中斷正在進行的請求。", "「{name}」名下 {count} 个账号共用;修改协议或地址可能中断正在进行的请求。": "「{name}」名下 {count} 個帳號共用;修改協定或位址可能中斷正在進行的請求。", "仅当前账号": "僅目前帳號", "仅用于 OpenCode Zen 这类上游,普通提供商请保持关闭。": "僅用於 OpenCode Zen 這類上游,一般提供商請保持關閉。", "代理只作用于当前账号,不改变其他账号的出网方式。": "代理僅作用於目前帳號,不改變其他帳號的連線方式。", "余额读数也是限制器余额规则的数据来源。": "餘額讀數也是限制器餘額規則的資料來源。", "使用密钥访问上游": "使用金鑰存取上游", "保存后将移除密钥,转发与拉取模型都不发送鉴权头。请确认上游确实无需凭证。": "儲存後將移除金鑰,轉送與取得模型都不傳送驗證標頭。請確認上游確實不需要憑證。", "保存提供商共用配置?": "儲存提供商共用設定?", "保存更改": "儲存變更", "共用": "共用", "关闭后不参与转发,余额查询不受影响。": "關閉後不參與轉送,餘額查詢不受影響。", "凭证设置": "憑證設定", "出网方式": "連線方式", "前往模型管理": "前往模型管理", "前往模型管理会关闭账号设置,尚未保存的修改不会生效。": "前往模型管理會關閉帳號設定,尚未儲存的修改不會生效。", "包含提供商共用配置,将影响 {count} 个账号": "包含提供商共用設定,將影響 {count} 個帳號", "原密钥不会回显;更换密钥不会改变账号 ID。": "原金鑰不會顯示;更換金鑰不會改變帳號 ID。", "各分区的更改将统一保存": "各分區的變更將一併儲存", "启用账号": "啟用帳號", "在账号列表中拖动分组或行首把手,调整转发顺序。": "在帳號清單中拖動群組或列首把手,調整轉送順序。", "基本信息": "基本資訊", "填写接口基址,无需追加 {path}。": "填寫 API 基底位址,不必附加 {path}。", "将同时删除名下 {count} 个账号,无法恢复。": "將同時刪除名下 {count} 個帳號,無法復原。", "开启后会改写请求体,补齐会话头与占位工具;未填密钥时使用匿名凭证 public。": "開啟後會改寫請求本文,補齊工作階段標頭與預留位置工具;未填金鑰時使用匿名憑證 public。", "当前没有凭证,转发时会跳过此账号。请填写密钥或选择「无需鉴权」。": "目前沒有憑證,轉送時會略過此帳號。請填寫金鑰或選擇「無需驗證」。", "当前账号": "目前帳號", "所有分区中尚未保存的修改都会被放弃。已确认的独立清除操作不受影响。": "所有分區中尚未儲存的修改都會被捨棄。已確認的獨立清除操作不受影響。", "提供商名称": "提供商名稱", "改回跟随": "改回跟隨", "改回跟随提供商": "改回跟隨提供商", "改回跟随提供商?": "改回跟隨提供商?", "新密钥待保存": "新金鑰待儲存", "无需鉴权": "無需驗證", "显示新输入的密钥": "顯示新輸入的金鑰", "本地服务或无需凭证的上游": "本機服務或不需要憑證的上游", "查询凭证": "查詢憑證", "模型清单与映射在「模型管理」中维护。": "模型清單與對應關係在「模型管理」中維護。", "模拟 OpenCode 官方客户端": "模擬 OpenCode 官方用戶端", "正在保存…": "正在儲存…", "正在编辑提供商共用配置": "正在編輯提供商共用設定", "没有未保存的更改": "沒有未儲存的變更", "没有规则或全部停用时不限制;跳过后自动恢复,禁用后需手动启用。": "沒有規則或全部停用時不限制;略過後自動恢復,停用後需手動啟用。", "清除余额查询凭证?": "清除餘額查詢憑證?", "清除已存 API Key?": "清除已儲存的 API Key?", "清除已存密钥": "清除已儲存的金鑰", "清除查询凭证?": "清除查詢憑證?", "用于当前账号的对话、余额查询、模型拉取、模型测试、签到及凭证刷新等上游请求。留空使用提供商默认值;可选预置或直接填写。": "用於目前帳號的對話、餘額查詢、模型取得、模型測試、簽到及憑證更新等上游請求。留空使用提供商預設值;可選預設或直接填寫。", "用明确的规则保护当前账号的额度。": "用明確的規則保護目前帳號的額度。", "留空不修改,替换后点击「保存更改」生效。": "留空不修改,替換後按一下「儲存變更」生效。", "留空保留当前密钥,输入新密钥以替换": "留空保留目前金鑰,輸入新金鑰以替換", "确认保存": "確認儲存", "确认后立即生效,不受底部保存按钮控制。没有凭证且未开启「无需鉴权」时,此账号将被转发跳过。": "確認後立即生效,不受底部儲存按鈕控制。沒有憑證且未開啟「無需驗證」時,轉送將略過此帳號。", "确认后立即生效,不受底部保存按钮控制。通常可继续复用转发用的登录凭证。": "確認後立即生效,不受底部儲存按鈕控制。通常可繼續共用轉送用的登入憑證。", "确认后立即生效,余额查询可能显示「未配置」。取消账号设置不会恢复已清除的凭证。": "確認後立即生效,餘額查詢可能顯示「未設定」。取消帳號設定不會恢復已清除的憑證。", "确认弹窗不可用,请重新打开页面": "確認對話方塊無法使用,請重新開啟頁面", "管理当前账号的凭证与可用套餐。": "管理目前帳號的憑證與可用方案。", "统一管理提供商的协议、地址与兼容选项。": "統一管理提供商的協定、位址與相容性選項。", "自定义 API": "自訂 API", "要修改连接地址或协议?": "要修改連線位址或協定?", "设置当前账号访问上游的出网方式。": "設定目前帳號存取上游的連線方式。", "设置账号名称、启用状态与转发行为。": "設定帳號名稱、啟用狀態與轉送行為。", "请填写有效的 HTTP 或 HTTPS 地址": "請填寫有效的 HTTP 或 HTTPS 位址", "请求标识": "請求識別", "请求端点": "請求端點", "账号凭证": "帳號憑證", "转发行为": "轉送行為", "达到上限后,将请求交给其他账号。": "達到上限後,將請求交給其他帳號。", "这个账号单独存了一份地址:{url},转发时优先用它。上面改的是提供商共用地址,不会覆盖它。": "這個帳號單獨存了一份位址:{url},轉送時優先使用它。上面改的是提供商共用位址,不會覆蓋它。", "这个账号将改用提供商当前保存的 Base URL:{url}。确认后立即生效,不受底部保存按钮控制。": "這個帳號將改用提供商目前儲存的 Base URL:{url}。確認後立即生效,不受底部儲存按鈕控制。", "连接参数": "連線參數", "连接设置": "連線設定", "配置余额查询凭证、自动刷新间隔与失败重试。": "設定餘額查詢憑證、自動重新整理間隔與失敗重試。", "鉴权方式": "驗證方式", "隐藏新输入的密钥": "隱藏新輸入的金鑰", "高级兼容": "進階相容性", "默认关闭": "預設關閉", " · 模型 {head}{rest}": " · 模型 {head}{rest}", " 等 {n} 个": " 等 {n} 個", "1// 开头的 Google refresh token(也可直接粘贴 refresh_token=… 整行)": "1// 開頭的 Google refresh token(也可直接貼上 refresh_token=… 整行)", "11 位大陆手机号": "11 位大陸手機號", "1~64 个字符,账号列表里按它分组显示": "1~64 個字元,帳號列表裡按它分組顯示", "6 位数字": "6 位數字", "
  • 没有可自动领的活动
  • ": "
  • 沒有可自動領的活動
  • ", "

    领到的是套餐赠送积分,不会增加福利模型的 token 池;": "

    領到的是套餐贈送積分,不會增加福利模型的 token 池;", "ACP 代理配置无效,请重新选择代理。": "ACP 代理設定無效,請重新選擇代理。", "ACP 会话失败时不自动重发,也不切换到其他接入方式。": "ACP 工作階段失敗時不自動重送,也不切換到其他接入方式。", "ACP 使用网关电脑上的官方 agy CLI,不是当前手机或浏览器所在设备。请先安装 agy 1.5.0 或更新版本:https://antigravity.google/docs/cli。程序不在默认位置时,可在网关启动环境设置 AGY_PATH。": "ACP 使用網關電腦上的官方 agy CLI,不是目前手機或瀏覽器所在裝置。請先安裝 agy 1.5.0 或更新版本:https://antigravity.google/docs/cli。程式不在預設位置時,可在網關啟動環境設定 AGY_PATH。", "ACP 尚未返回可用的会话模型目录,请检查官方 CLI 登录状态后重试。": "ACP 尚未傳回可用的工作階段模型目錄,請檢查官方 CLI 登入狀態後重試。", "ACP 的本机进程仍使用原来的代理。请先在插件页停用再启用 ACP 插件,再使用新的代理。": "ACP 的本機處理程序仍使用原來的代理。請先在外掛頁停用再啟用 ACP 外掛,再使用新的代理。", "API Key + 控制台令牌(模型调用 + 墨点额度)": "API Key + 控制台權杖(模型呼叫 + 墨點額度)", "API 凭证添加暂不能解析代理池引用;请使用自定义代理地址,添加后再在账号设置中调整。": "新增 API 憑證暫時無法解析代理池參照;請使用自訂代理位址,新增後再於帳號設定中調整。", "API 模板": "API 範本", "AWS Builder ID(直接授权,减少一次回填)": "AWS Builder ID(直接授權,減少一次回填)", "AWS 地区(账号目录所在地区)": "AWS 區域(帳號目錄所在區域)", "AiHubMix 的 OpenAI 兼容端点,使用 AiHubMix 的 API Key;模型 ID 以平台清单为准": "AiHubMix 的 OpenAI 相容端點,使用 AiHubMix 的 API Key;模型 ID 以平台清單為準", "Anthropic 兼容端点在 https://api.deepseek.com/anthropic(协议换 anthropic 时填它)": "Anthropic 相容端點在 https://api.deepseek.com/anthropic(協議換 anthropic 時填它)", "Anthropic 协议填根地址,不要带 /v1": "Anthropic 協議填根地址,不要帶 /v1", "Antigravity": "Antigravity", "Antigravity 账号的添加方式": "Antigravity 帳號的新增方式", "AtomCode": "AtomCode", "AutoClaw 国内版": "AutoClaw 國內版", "AutoClaw 国际版": "AutoClaw 國際版", "BDUSS 必填;请粘贴**完整 Cookie**(Cookie 编辑器一键导出即可)—— 其中 **PTOKEN 必须保留**,网关要用它向百度换发 KukuAI 业务会话令牌,缺了它模型刷新会报「未登录」。支持整段 Cookie 头、Cookie 编辑器导出的 JSON 数组,或 {BDUSS, STOKEN} 对象。KukuAI 没有刷新机制,登录态过期后重新粘贴即可。": "BDUSS 必填;請貼上**完整 Cookie**(Cookie 編輯器一鍵匯出即可)—— 其中 **PTOKEN 必須保留**,閘道器要用它向百度換髮 KukuAI 業務會話權杖,缺了它模型重新整理會報「未登入」。支援整段 Cookie 頭、Cookie 編輯器匯出的 JSON 陣列,或 {BDUSS, STOKEN} 物件。KukuAI 沒有重新整理機制,登入態過期後重新貼上即可。", "BDUSS=…; STOKEN=…(或 Cookie 编辑器导出的 JSON)": "BDUSS=…; STOKEN=…(或 Cookie 編輯器匯出的 JSON)", "CatPaw 的 X-Passport-Token(登录态 Cookie)": "CatPaw 的 X-Passport-Token(登入態 Cookie)", "ChatGPT / Codex": "ChatGPT / Codex", "ChatGPT API": "ChatGPT API", "ChatGPT API 订阅": "ChatGPT API 訂閱", "Claude Code 本机订阅": "Claude Code 本機訂閱", "Claude 订阅": "Claude 訂閱", "Cline Pass 的 API Key 在 app.cline.bot 获取(订阅制);端点为 OpenAI 兼容,模型清单以 Cline 控制台为准,模型名在模型管理里按裸名添加(如 glm-5.2 / kimi-k2.7-code / deepseek-v4-pro);上游按客户端形态校验,所需的客户端请求头已随卡预置": "Cline Pass 的 API Key 在 app.cline.bot 獲取(訂閱制);端點為 OpenAI 相容,模型清單以 Cline 控制台為準,模型名在模型管理裡按裸名新增(如 glm-5.2 / kimi-k2.7-code / deepseek-v4-pro);上游按客戶端形態校驗,所需的客戶端請求頭已隨卡預置", "Cloud project 必填;不会借用其他 Google 提供商的凭证或额度。": "Cloud project 必填;不會借用其他 Google 提供商的憑證或額度。", "Cloud-IDE-JWT(三段点分)": "Cloud-IDE-JWT(三段點分)", "Cloudflare Account ID(32 位十六进制)": "Cloudflare Account ID(32 位十六進位)", "Codex 订阅": "Codex 訂閱", "Command Code": "Command Code", "Cursor dashboard API key;loader 按需重新 exchange 模型 token,不提供手动令牌刷新。": "Cursor dashboard API key;loader 按需重新交換模型 token,不提供手動權杖更新。", "DeepSeek 网页": "DeepSeek 網頁", "Gemini CLI / Code Assist": "Gemini CLI / Code Assist", "Gemini CLI 凭证文件绝对路径(只读,不复制或写回 refresh token)": "Gemini CLI 憑證檔案絕對路徑(唯讀,不複製或寫回 refresh token)", "GitHub Copilot": "GitHub Copilot", "GitHub 官方设备码登录": "GitHub 官方裝置碼登入", "GitHub 登录域名(留空使用 github.com)": "GitHub 登入網域(留空使用 github.com)", "Google Cloud Project ID(必填,Standard / Enterprise 资格由上游判定)": "Google Cloud Project ID(必填,Standard / Enterprise 資格由上游判定)", "Google Cloud Project ID(必填,Standard / Enterprise 资格由上游判定);默认候选来自 {variable},请明确确认": "Google Cloud Project ID(必填,Standard / Enterprise 資格由上游判定);預設候選來自 {variable},請明確確認", "Google OAuth(Code Assist + Cloud project)": "Google OAuth(Code Assist + Cloud project)", "Google 授权(ACP)": "Google 授權(ACP)", "Groq 的 OpenAI 兼容端点,使用 GroqCloud 的 API Key": "Groq 的 OpenAI 相容端點,使用 GroqCloud 的 API Key", "IAM Identity Center(企业账号,直接授权)": "IAM Identity Center(企業帳號,直接授權)", "JWT(三段点分;也可直接粘贴 Bearer 整行或 data.bin 内容)": "JWT(三段點分;也可直接貼上 Bearer 整行或 data.bin 內容)", "JWT(三段点分;也可直接粘贴 chatglm_token=… 整行)": "JWT(三段點分;也可直接貼上 chatglm_token=… 整行)", "Kimi / Moonshot 国内版": "Kimi / Moonshot 國內版", "Kimi / Moonshot 国内站 API Key,使用 moonshot.cn 按量接口;不是 Kimi Code 会员入口": "Kimi / Moonshot 國內站 API Key,使用 moonshot.cn 按量介面;不是 Kimi Code 會員入口", "Kimi / Moonshot 国际版": "Kimi / Moonshot 國際版", "Kimi / Moonshot 国际站 API Key,使用 moonshot.ai 按量接口;不是 Kimi Code 会员入口": "Kimi / Moonshot 國際站 API Key,使用 moonshot.ai 按量介面;不是 Kimi Code 會員入口", "Kiro API key(ksk_…)。": "Kiro API key(ksk_…)。", "Kiro 登录页(Google / GitHub 等)": "Kiro 登入頁(Google / GitHub 等)", "Kiro 网页登录": "Kiro 網頁登入", "LM Studio(本地)": "LM Studio(本機)", "LobsterAI": "LobsterAI", "LongCat 的 OpenAI 兼容端点,使用 LongCat 平台的 API Key": "LongCat 的 OpenAI 相容端點,使用 LongCat 平台的 API Key", "MClaw 由插件在网关电脑上启动专用 Chrome 窗口,独立登录环境也用于自动续期,不使用系统默认浏览器或应用内嵌窗口。": "MClaw 由插件在閘道電腦上啟動專用 Chrome 視窗,獨立登入環境也用於自動續期,不使用系統預設瀏覽器或應用程式內嵌視窗。", "MiniMax Code 国内版": "MiniMax Code 國內版", "MiniMax Code 国际版": "MiniMax Code 國際版", "Mistral 的 OpenAI 兼容端点,使用 Mistral 控制台的 API Key": "Mistral 的 OpenAI 相容端點,使用 Mistral 控制台的 API Key", "ModelScope 国内版": "ModelScope 國內版", "ModelScope 国际版": "ModelScope 國際版", "MonkeyCode": "MonkeyCode", "MonkeyCode 国际版": "MonkeyCode 國際版", "MonkeyCode 自动网页登录仅限桌面端;浏览器面板请登录对应官网后粘贴 session。": "MonkeyCode 自動網頁登入僅限桌面版;瀏覽器面板請登入對應官網後貼上 session。", "NVIDIA NIM 托管端点,Key 在 integrate.api.nvidia.com 申请": "NVIDIA NIM 託管端點,Key 在 integrate.api.nvidia.com 申請", "Nous Portal 的按量 API,使用 Portal 的 API Key;不是旧的订阅登录方式": "Nous Portal 的按量 API,使用 Portal 的 API Key;不是舊的訂閱登入方式", "OfficeAce 果办": "OfficeAce 果辦", "QuWork 凭证": "QuWork 憑證", "QuWork 原设备标识": "QuWork 原裝置識別", "QwenWork 千问办公": "QwenWork 千問辦公", "QwenWork 千问办公企业版": "QwenWork 千問辦公企業版", "StepFun 国内版(按量)": "StepFun 國內版(按量)", "StepFun 国内站按量 API;请使用按量 API Key,不要填 Step Plan 套餐 Key": "StepFun 國內站按量 API;請使用按量 API Key,不要填 Step Plan 套餐 Key", "StepFun 国际版(按量)": "StepFun 國際版(按量)", "StepFun 国际站按量 API;请使用按量 API Key,不要填 Step Plan 套餐 Key": "StepFun 國際站按量 API;請使用按量 API Key,不要填 Step Plan 套餐 Key", "Tabbit 国内版": "Tabbit 國內版", "Tabbit 国际版": "Tabbit 國際版", "TokenPlan API Key(控制台 → 科研模型 → API Key)": "TokenPlan API Key(控制台 → 科研模型 → API Key)", "User-Agent(可选)": "User-Agent(選填)", "accessToken 是 Accio 的登录凭证(一长串不透明 token,不是 JWT);refreshToken 可选,填了之后到期能自动续期。请填写 {label}账号的凭证 —— {siteNote}(最容易拿到的办法:直接用上方的「网页登录」,不需要手工找 token。)": "accessToken 是 Accio 的登入憑證(一長串不透明 token,不是 JWT);refreshToken 可選,填了之後到期能自動續期。請填寫 {label}帳號的憑證 —— {siteNote}(最容易拿到的辦法:直接用上方的「網頁登入」,不需要手工找 token。)", "accessToken 是 Trae 的 Cloud-IDE-JWT(三段点分),refreshToken 用于到期自动续期(本家 refreshToken 一次一换:换发一次旧的即作废,所以两份程序别同时刷同一个账号)。
    手工粘贴时请连 machineId / deviceId 一起填:上游把它们与登录时上传的设备公钥绑在一起判设备,凭空换一对会撞 2xxxx 那族设备绑定拒绝。
    没有这三样时的正路是用上方的「网页登录」;容器 / 远程部署形态按提示粘贴地址栏回调地址即可。": "accessToken 是 Trae 的 Cloud-IDE-JWT(三段點分),refreshToken 用於到期自動續期(本家 refreshToken 一次一換:換髮一次舊的即作廢,所以兩份程式別同時刷同一個帳號)。
    手工貼上時請連 machineId / deviceId 一起填:上游把它們與登入時上傳的裝置公鑰綁在一起判裝置,憑空換一對會撞 2xxxx 那族裝置繫結拒絕。
    沒有這三樣時的正路是用上方的「網頁登入」;容器 / 遠端部署形態按提示貼上位址列回撥地址即可。", "chat.deepseek.com 的 userToken.value,不是收费 API Key": "chat.deepseek.com 的 userToken.value,不是付費 API Key", "github-copilot/apps.json 或 opencode/auth.json": "github-copilot/apps.json 或 opencode/auth.json", "github.com 或 company.ghe.com": "github.com 或 company.ghe.com", "github.com:Iv1.b507a08c87ecfe98 或 github-copilot": "github.com:Iv1.b507a08c87ecfe98 或 github-copilot", "monkeycode_ai_session 的值(也可直接粘贴整段 Cookie)": "monkeycode_ai_session 的值(也可直接貼上整段 Cookie)", "ms- 开头的 API 令牌": "ms- 開頭的 API 權杖", "project 必填;只读引用文件,模块的 OAuth 续期不写回客户端。": "project 必填;唯讀參照檔案,模組的 OAuth 更新不寫回用戶端。", "refreshToken 可选,填了到期可自动续期;两者都能从小浣熊客户端登录态文件里取到。": "refreshToken 可選,填了到期可自動續期;兩者都能從小浣熊客戶端登入態檔案裡取到。", "refreshToken 可选,填了可自动续期;两者都能从客户端登录态文件取到。同一个 Cline 账号两个池都能用,这里归入 {label}。": "refreshToken 可選,填了可自動續期;兩者都能從客戶端登入態檔案取到。同一個 Cline 帳號兩個池都能用,這裡歸入 {label}。", "token 支持 enc: 前缀(Windows 上自动解密)。未填 refreshToken 无法自动续期。": "token 支援 enc: 字首(Windows 上自動解密)。未填 refreshToken 無法自動續期。", "token 是登录态 Cookie;CatPaw 没有刷新机制,过期后需在客户端重新登录。": "token 是登入態 Cookie;CatPaw 沒有重新整理機制,過期後需在客戶端重新登入。", "token=…; user_id=…(也可粘贴 Copy as cURL 整段)": "token=…; user_id=…(也可粘貼 Copy as cURL 整段)", "user_ 开头的 API Key(也可直接粘贴 Authorization: Bearer … 整行)": "user_ 開頭的 API Key(也可直接貼上 Authorization: Bearer … 整行)", "xAI 的 OpenAI 兼容端点,使用 xAI 控制台的 API Key;不是 Grok 网页订阅": "xAI 的 OpenAI 相容端點,使用 xAI 控制台的 API Key;不是 Grok 網頁訂閱", "your-company.vpc.qwenwork.cn 或 https://your-company.vpc.qwenwork.cn": "your-company.vpc.qwenwork.cn 或 https://your-company.vpc.qwenwork.cn", "{label} 网页登录的打开方式": "{label} 網頁登入的開啟方式", "{label} 账号地区": "{label} 帳號地區", "{label} 账号的添加方式": "{label} 帳號的新增方式", "{label}账号已添加": "{label} 帳號已新增", "{label}(只读本机)": "{label}(本機唯讀)", "{message}:请在打开的页面完成滑块,完成后回到这里点「已完成验证,继续发送」": "{message}:請在開啟的頁面完成滑塊,完成後回到這裡點「已完成驗證,繼續傳送」", "{message}:请手动打开验证页面 {url},完成后回到这里点「已完成验证,继续发送」": "{message}:請手動開啟驗證頁面 {url},完成後回到這裡點「已完成驗證,繼續傳送」", "{name} 不是合法 JSON:{reason}": "{name} 不是合法 JSON:{reason}", "{name}要粘一个 JSON 对象(形如 {sample})": "{name}要粘一個 JSON 物件(形如 {sample})", "{n} 个账号": "{n} 個帳號", "{n} 个账号,点击添加": "{n} 個帳號,點擊新增", "{seconds}s 后重发": "{seconds}s 後重發", "✅ {label}账号已添加": "✅ {label}帳號已新增", "✅ {label}账号已添加{name}": "✅ {label}帳號已新增{name}", "✅ 已从 cc-switch 导入 {n} 个供应商": "✅ 已從 cc-switch 匯入 {n} 個供應商", "✅ 已创建自定义提供商「{name}」并添加账号": "✅ 已建立自定義提供商「{name}」並新增帳號", "✅ 已删除自定义提供商「{name}」{accounts}{keys}": "✅ 已刪除自定義提供商「{name}」{accounts}{keys}", "✅ 已更新已有账号{name}(同一把 API Key 只保留一条,重复添加会合并)": "✅ 已更新已有帳號{name}(同一把 API Key 只保留一條,重複新增會合並)", "✅ 已更新已有账号{name}(同一提供商内,同一把 API Key 只保留一条)": "✅ 已更新已有帳號{name}(同一提供商內,同一把 API Key 只保留一筆)", "✅ 登录成功,{edition}账号已加入列表": "✅ 登入成功,{edition}帳號已加入列表", "✅ 领取成功:{planId}{period}": "✅ 領取成功:{planId}{period}", " 同一家可以放多把 key,按优先级轮换。": " 同一家可以放多把 key,按優先順序輪換。", "「{name}」的账号添加功能还在开发中,敬请期待。": "「{name}」的帳號新增功能還在開發中,敬請期待。", "一个 Key 用遍多家模型,模型名用「厂商/模型」全称(如 deepseek/deepseek-chat)": "一個 Key 用遍多家模型,模型名用「廠商/模型」全稱(如 deepseek/deepseek-chat)", "上游不要鉴权时留空,并勾选下面一项(留空又不勾会被当成未配置凭证)": "上游不要鑑權時留空,並勾選下面一項(留空又不勾會被當成未配置憑證)", "上游信息": "上游資訊", "上游没有给出验证页面地址": "上游沒有給出驗證頁面位址", "上游要求人机验证,但没有给出验证页面地址,请稍后重试": "上游要求人機驗證,但沒有給出驗證頁面位址,請稍後重試", "不使用预置": "不使用預設", "不可领({status})": "不可領({status})", "不授权": "不授權", "不支持导入": "不支援匯入", "不是有效的凭证文件:内容要是一个 JSON 对象": "不是有效的憑證檔案:內容要是一個 JSON 物件", "不是有效的凭证文件:需要包含 accessToken 与 uid": "不是有效的憑證檔案:需要包含 accessToken 與 uid", "不是自定义提供商": "不是自定義提供商", "不需要 Key:转发与拉取模型都不发送鉴权头": "不需要 Key:轉發與拉取模型都不傳送鑑權頭", "不需要登录:点下面的按钮,网关会直接在智谱清言换发一份访客凭证并加入账号列表(也可以先填个备注名)。访客凭证可以直接用来对话,免费额度由上游按设备发放。

    注意:访客账号没有积分体系 —— 它与「会员积分」「每日登录积分」「活动领取」相关的接口一律需要登录,因此那些能力对访客会如实跳过(账号页的积分、签到中心都不显示读数)。想要积分就用「填写凭证」粘一个已登录账号的令牌,或「导入桌面端登录态」。": "不需要登入:點下面的按鈕,閘道器會直接在智譜清言換髮一份訪客憑證並加入帳號列表(也可以先填個備註名)。訪客憑證可以直接用來對話,免費額度由上游按裝置發放。

    注意:訪客帳號沒有積分體系 —— 它與「會員積分」「每日登入積分」「活動領取」相關的介面一律需要登入,因此那些能力對訪客會如實跳過(帳號頁的積分、簽到中心都不顯示讀數)。想要積分就用「填寫憑證」粘一個已登入帳號的權杖,或「匯入桌面版登入態」。", "两版账号可同时保存,各自一份模型清单(国内版与国际版是两家提供商,可分别启用与映射)。": "兩版帳號可同時儲存,各自一份模型清單(國內版與國際版是兩家提供商,可分別啟用與對映)。", "中国版": "中國版", "也支持本软件导出的单账号 JSON 文件,保留账号凭证与附加信息。": "也支援本軟體匯出的單帳號 JSON 檔案,保留帳號憑證與附加資訊。", "仅 API Key(模型调用,不含墨点额度)": "僅 API Key(模型呼叫,不含墨點額度)", "仅填写自己的 GitHub 令牌": "僅填寫自己的 GitHub 權杖", "仅支持仍有有效 Gemini Code Assist Standard / Enterprise 资格并绑定 Cloud project 的账号。个人免费版及 Google AI Pro / Ultra 已于 2026-06-18 停止支持;Standard / Enterprise 新订阅已于 2026-10-09 停售。不会切换到其他 Google 产品或额度池。": "僅支援仍具有有效 Gemini Code Assist Standard / Enterprise 資格並綁定 Cloud project 的帳號。個人免費版及 Google AI Pro / Ultra 已於 2026-06-18 停止支援;Standard / Enterprise 新訂閱已於 2026-10-09 停售。不會切換至其他 Google 產品或額度池。", "仅读取本机 Claude Code 的当前订阅登录。若未登录,请先在自己的终端登录;本地凭证仍由 CLI 管理。": "僅讀取本機 Claude Code 的目前訂閱登入。若未登入,請先在自己的終端機登入;本機憑證仍由 CLI 管理。", "今天没有需要领的活动(都已到账)": "今天沒有需要領的活動(都已到賬)", "今天(北京时间 {day})已试 {attempts} 次,还能试 {left} 次{next}
    ": "今天(北京時間 {day})已試 {attempts} 次,還能試 {left} 次{next}
    ", "从 Google 官方源下载并核验 SHA-512;下载使用网关默认出口。更新失败保留旧版,进行中的对话不受替换影响。": "從 Google 官方來源下載並驗證 SHA-512;下載使用閘道預設出口。更新失敗保留舊版,進行中的對話不受替換影響。", "从别的机器(或 OfficeAce 桌面端 models.json)取三项贴进来:模型网关基址(baseUrl,形如 https://modelgw-…/v2)与 modelAppKey / modelAppSecret。这三项就能转发(网关凭据不过期);控制面临时凭据(accessKeyId 等)可选,留空则额度/自动续期不可用,但不影响转发。": "從別的機器(或 OfficeAce 桌面版 models.json)取三項貼進來:模型閘道器基址(baseUrl,形如 https://modelgw-…/v2)與 modelAppKey / modelAppSecret。這三項就能轉發(閘道器憑據不過期);控制面臨時憑據(accessKeyId 等)可選,留空則額度/自動續期不可用,但不影響轉發。", "从本机导入桌面端登录态": "從本機匯入桌面版登入態", "任务镜像 id": "任務映象 id", "余额查询": "餘額查詢", "你企业的千问办公旗舰版域名(企业管理后台地址栏的域名,如 your-company.vpc.qwenwork.cn)": "你企業的千問辦公旗艦版網域(企業管理後台網址列的網域,如 your-company.vpc.qwenwork.cn)", "使用 Google 账号登录": "使用 Google 帳號登入", "使用 Zai 账号登录": "使用 Zai 帳號登入", "使用 {name} 模板新建提供商": "使用 {name} 範本建立提供商", "使用个人访问令牌(PAT)": "使用個人存取權杖(PAT)", "使用本机 Claude Code 登录": "使用本機 Claude Code 登入", "使用本机 Kimi Work 登录": "使用本機 Kimi Work 登入", "使用模板新建提供商": "使用範本建立提供商", "使用网页令牌,不是收费 API Key。": "使用網頁權杖,不是付費 API Key。", "使用自己的 GitHub 账号授权;模型条款须在官方客户端手动确认。": "使用自己的 GitHub 帳號授權;模型條款須於官方用戶端手動確認。", "先在网关所在机器启动 LM Studio 服务;localhost 指向网关所在机器,远程或容器部署请改为网关可访问的地址。默认无需鉴权;启用认证后请取消「该上游无需鉴权」并填写真实 API Key": "請先在閘道所在的機器啟動 LM Studio 服務;localhost 指向閘道所在的機器,遠端或容器部署請改為閘道可存取的位址。預設無需驗證;啟用驗證後請取消「該上游無需鑑權」並填寫真實 API Key", "免费模型不用填 Key(默认勾上「该上游无需鉴权」,网关自动用匿名凭证);付费模型则填 Zen 的 API Key。免费档上游只认官方客户端形态,已默认开启「伪装 OpenCode 官方客户端」": "免費模型不用填 Key(預設勾上「該上游無需鑑權」,閘道器自動用匿名憑證);付費模型則填 Zen 的 API Key。免費檔上游只認官方客戶端形態,已預設開啟「偽裝 OpenCode 官方客戶端」", "关联用户指定的本地 Copilot 凭证(只读)": "關聯使用者指定的本機 Copilot 憑證(唯讀)", "内嵌窗口": "內嵌視窗", "内嵌窗口打开;关窗即取消等待(Google 账号被拒时改用系统浏览器)": "內嵌視窗開啟;關窗即取消等待(Google 帳號被拒時改用系統瀏覽器)", "内嵌窗口打开;完成后自动加入列表,关窗即取消等待": "在內嵌視窗開啟;完成後自動加入清單,關閉視窗即取消等待", "内嵌窗口打开;扫码完成后自动加入列表,关窗即取消等待": "內嵌視窗開啟;掃碼完成後自動加入列表,關窗即取消等待", "内嵌窗口用全新环境,多账号互不影响;关窗即取消等待": "內嵌視窗用全新環境,多帳號互不影響;關窗即取消等待", "内嵌窗口登录": "內嵌視窗登入", "内嵌窗口(推荐)": "內嵌視窗(推薦)", "准备验证…": "準備驗證…", "凭据 JSON": "憑據 JSON", "凭证 JSON 或模型凭证": "憑證 JSON 或模型憑證", "凭证仅发送至当前网关": "憑證僅傳送至目前閘道", "凭证文件在哪?": "憑證檔案在哪?", "凭证文件类型": "憑證檔案類型", "创建并添加账号": "建立並新增帳號", "创建这个提供商,并同时建立它的第一个账号。": "建立這個提供商,並同時建立它的第一個帳號。", "删除功能不可用(脚本未就绪)": "刪除功能不可用(指令碼未就緒)", "删除失败:{reason}": "刪除失敗:{reason}", "删除此提供商": "刪除此提供商", "千问办公 国内版": "千問辦公 國內版", "千问办公 国际版": "千問辦公 國際版", "千问办公{label}暂时无法登录:上游只接受它自己的官方回调地址,不论证码到本机。": "千問辦公{label}暫時無法登入:上游只接受它自己的官方回呼網址,不會把驗證碼傳回本機。", "原样提交本次流程的完整回调 URL。": "原樣提交本次流程的完整回呼 URL。", "去安装提供商插件包": "去安裝提供商外掛包", "及 {n} 个账号": "及 {n} 個帳號", "发送中…": "傳送中…", "发送失败:{message}": "傳送失敗:{message}", "发送未确认:登录窗口已弹出,请在弹出的窗口中手动完成登录": "傳送未確認:登入視窗已彈出,請在彈出的視窗中手動完成登入", "取消失败:{message}": "取消失敗:{message}", "取消安装": "取消安裝", "取消等待": "取消等待", "只使用此路线签发的 OAuth 凭证;direct SIWC 与 Codex 客户端身份不同。": "僅使用此路線簽發的 OAuth 憑證;direct SIWC 與 Codex 用戶端身分不同。", "只关联真实 CLI 2.1.259+ 的当前订阅;不代登录、不复制或续期客户端凭证。": "僅關聯真實 CLI 2.1.259+ 的目前訂閱;不代為登入、不複製或更新用戶端憑證。", "只拿到 JWT 时填这里;Cookie 里有 token 可留空": "只拿到 JWT 時填這裡;Cookie 裡有 token 可留空", "只有「内嵌窗口」能恢复第三方入口:系统浏览器里我们无法改动登录页": "只有「內嵌視窗」能恢復第三方入口:系統瀏覽器裡我們無法改動登入頁", "只看这一类": "只看這一類", "只读引用 Grok Build home/scope/account;每次读取当前登录态,不复制 token,不回退退出前快照,不主动续期;源有效期未知时不作长期有效承诺。": "唯讀參照 Grok Build home/scope/account;每次讀取目前登入狀態,不複製 token、不退回登出前快照、不主動更新;來源有效期限未知時不承諾長期有效。", "只读引用本机 Kiro CLI/IDE;每次读取校验同一邮箱,不复制 token、不主动续期或回写,失效后由原客户端重登或同步。": "唯讀參照本機 Kiro CLI/IDE;每次讀取驗證同一信箱,不複製 token、不主動更新或寫回,失效後由原用戶端重新登入或同步。", "只读所选标准文件与账号条目并验证 GitHub/Copilot 身份;只保存引用,不保存令牌副本,不扫描目录、读取 keychain 或运行 CLI。": "唯讀存取所選標準檔案與帳號項目並驗證 GitHub/Copilot 身分;僅儲存參照,不儲存權杖副本,不掃描目錄、讀取 keychain 或執行 CLI。", "只读校验明确选择的本机凭证文件;仅保存引用与稳定身份,不复制或续期原客户端令牌。": "唯讀驗證明確選擇的本機憑證檔案;僅儲存參照與穩定身分,不複製或更新原用戶端權杖。", "只读用户明确指定的文件和账号条目,不自动扫描。": "唯讀存取使用者明確指定的檔案與帳號項目,不自動掃描。", "只读验证所选 Gemini CLI 登录态和指定 project 的 Code Assist Standard / Enterprise 资格;不会启动 CLI、续期或复制令牌。": "唯讀驗證所選 Gemini CLI 登入狀態及指定 project 的 Code Assist Standard / Enterprise 資格;不會啟動 CLI、更新或複製權杖。", "只读验证本机 Claude Code 当前订阅登录;凭证仍由原 CLI 管理。": "唯讀驗證本機 Claude Code 目前訂閱登入;憑證仍由原 CLI 管理。", "只读验证本机 Kimi 桌面版已有的 Work 登录,不复制令牌;账号可能没有可用模型。": "唯讀驗證本機 Kimi 桌面版既有的 Work 登入,不複製權杖;帳號可能沒有可用模型。", "可选": "可選", "可选(cloudaicompanionProject):留空由网关自动发现": "可選(cloudaicompanionProject):留空由閘道器自動發現", "可选,仅远程兑换码激活需要;从官方客户端读取": "選填,僅遠端兌換碼啟用需要;從官方用戶端讀取", "可选,展示用": "可選,展示用", "可选,没有则无法自动续期": "可選,沒有則無法自動續期", "可选,用于生成账号标识": "選填,用於產生帳號識別碼", "可选,留空使用凭据里的 user_name": "可選,留空使用憑據裡的 user_name", "可选,留空使用账号名或邮箱": "可選,留空使用帳號名或信箱", "可选,留空使用账号姓名、邮箱或令牌指纹": "可選,留空使用帳號姓名、郵箱或權杖指紋", "可选,留空使用账号昵称或邮箱": "可選,留空使用帳號暱稱或郵箱", "可选,留空则用 key 尾号": "可選,留空則用 key 尾號", "可选,留空则用 userId": "可選,留空則用 userId", "可选,留空则用上游账号昵称": "可選,留空則用上游帳號暱稱", "可选,留空则用上游返回的账号名或账号 id": "可選,留空則用上游返回的帳號名或帳號 id", "可选,留空则用凭证里的账号名": "可選,留空則用憑證裡的帳號名", "可选,留空则用文件里的昵称": "可選,留空則用檔案裡的暱稱", "可选,留空则用登录名或 uid": "可選,留空則用登入名或 uid", "可选,留空则用脱敏手机号": "可選,留空則用脫敏手機號", "可选,留空则用脱敏手机号或 userId": "可選,留空則用脫敏手機號或 userId", "可选,留空则用账号 uk": "可選,留空則用帳號 uk", "可选,留空则用账号昵称": "選填,留空則用帳號暱稱", "可选,留空则用账号昵称或 userId": "可選,留空則用帳號暱稱或 userId", "可选,留空则用邮箱或令牌尾号": "可選,留空則用郵箱或權杖尾號", "可选,留空用「AtomCode」": "選填,留空用「AtomCode」", "可选,留空用「OfficeAce 果办」": "可選,留空用「OfficeAce 果辦」", "可选,留空自动生成": "可選,留空自動生成", "可选,留空自动用昵称": "可選,留空自動用暱稱", "可选,给这个访客账号起个备注名": "可選,給這個訪客帳號起個備註名", "可选,续期时带上": "可選,續期時帶上", "可选,讯飞侧 userid": "可選,訊飛側 userid", "可选:发起对话必需,留空则由网关从该账号已有任务里自动发现,发现不到时之后手动补": "可選:發起對話必需,留空則由閘道器從該帳號已有任務裡自動發現,發現不到時之後手動補", "可选:账号邮箱,用于展示与身份识别(换新令牌也能认回同一账号)": "可選:帳號郵箱,用於展示與身份識別(換新權杖也能認回同一帳號)", "可选;UUID 形态,与凭据同生共死": "可選;UUID 形態,與憑據同生共死", "可选;填了才能到期自动续期": "可選;填了才能到期自動續期", "可选;用于去重与展示名(留空时网关会问一次上游)": "可選;用於去重與展示名(留空時閘道器會問一次上游)", "可选;用于生成账号 id 与展示名": "可選;用於生成帳號 id 與展示名", "可选;纯数字串(上游只收 8–24 位数字)": "可選;純數字串(上游只收 8–24 位數字)", "可领取": "可領取", "同一家可以混着放:有 Key 的账号与无鉴权账号各按各的规则走;无需鉴权的账号也能并存多条(各自可配不同的出网代理)": "同一家可以混著放:有 Key 的帳號與無鑑權帳號各按各的規則走;無需鑑權的帳號也能並存多條(各自可配不同的出網代理)", "同地址换 anthropic 协议即走它的 Claude 兼容端点。转发必须填 OpenCode Go 的 API Key(订阅制;获取模型清单不需要 Key,但发请求上游会回 401「Missing API key」)": "同地址換 anthropic 協議即走它的 Claude 相容端點。轉發必須填 OpenCode Go 的 API Key(訂閱制;獲取模型清單不需要 Key,但發請求上游會回 401「Missing API key」)", "响应为空": "響應為空", "商汤日日新的 OpenAI 兼容端点;余额查询走控制台账号密码(见下方「余额查询」一段)": "商湯日日新的 OpenAI 相容端點;餘額查詢走控制台帳號密碼(見下方「餘額查詢」一段)", "回调已提交,仍需等待网关确认账号登录完成。": "回呼已提交,仍需等待閘道確認帳號登入完成。", "回调未被接受,请重新复制本次登录的完整回调地址": "回呼未被接受,請重新複製本次登入的完整回呼位址。", "国内版": "國內版", "国内版与**国际版是两套独立的账号与套餐**,凭证与领取的套餐都不通用。": "國內版與**國際版是兩套獨立的帳號與套餐**,憑證與領取的套餐都不通用。", "国内版登录页没有 Google / GitHub 入口(它用微信 / 手机号 / 邮箱登录)": "國內版登入頁沒有 Google / GitHub 入口(它用微信 / 手機號 / 郵箱登入)", "国内版的登录站点是 www.accio-ai.com,与国际版不是同一站。": "國內版的登入站點是 www.accio-ai.com,與國際版不是同一站。", "国内版(WorkBuddy)": "國內版(WorkBuddy)", "国内站为 https://api.siliconflow.cn/v1": "國內站為 https://api.siliconflow.cn/v1", "国内站(minimaxi.com);OpenAI 兼容地址为 https://api.minimaxi.com/v1": "國內站(minimaxi.com);OpenAI 相容地址為 https://api.minimaxi.com/v1", "国际版": "國際版", "国际版 z.ai 的 Coding 套餐;OpenAI 兼容地址为 https://api.z.ai/api/coding/paas/v4": "國際版 z.ai 的 Coding 套餐;OpenAI 相容地址為 https://api.z.ai/api/coding/paas/v4", "国际版与国内版是**两套独立的账号**(同一账号体系的两个站点),凭证不通用。": "國際版與國內版是**兩套獨立的帳號**(同一帳號體系的兩個站點),憑證不通用。", "国际版与国内版账号体系独立,请填国际版的凭证。未填 refreshToken 无法自动续期。": "國際版與國內版帳號體系獨立,請填國際版的憑證。未填 refreshToken 無法自動續期。", "国际版登录页默认只显示邮箱登录,勾选后恢复 Google / GitHub / X 入口": "國際版登入頁預設只顯示郵箱登入,勾選後恢復 Google / GitHub / X 入口", "国际版的推理站点是 api.z.ai,与国内版不是同一站;套餐也各自独立。": "國際版的推理站點是 api.z.ai,與國內版不是同一站;套餐也各自獨立。", "国际版(WorkBuddy AI)": "國際版(WorkBuddy AI)", "国际站 Coding 套餐;OpenAI 兼容地址为 https://api.minimax.io/v1": "國際站 Coding 套餐;OpenAI 相容地址為 https://api.minimax.io/v1", "在 AtomGit 的 AtomCode 页面登出后取得两项贴进来:accessToken 与 refreshToken。续期令牌建议填写——本家令牌不是 JWT(约 7 天到期,读不到过期时间),没有它账号无法自动续期,到期只能重新登录。": "在 AtomGit 的 AtomCode 頁面取得兩項貼進來:accessToken 與 refreshToken。續期權杖建議填寫——本家權杖不是 JWT(約 7 天到期,讀不到到期時間),沒有它帳號無法自動續期,到期只能重新登入。", "在 DeepSeek 官网完成登录,自动加入账号列表。": "在 DeepSeek 官網完成登入,自動加入帳號清單。", "在 GitHub 输入设备码 {code},核对账号与授权权限。设备码过期后需要重新发起登录。": "在 GitHub 輸入裝置碼 {code},核對帳號與授權權限。裝置碼過期後需要重新發起登入。", "在 cc-switch 里找到": "在 cc-switch 裡找到", "在 chat.deepseek.com 登录本人账号后,从浏览器开发者工具的 Application → Local Storage 复制 userToken 的 value。Cookie 可选,需补充时粘贴该站点请求里的完整 Cookie;登录态失效或要求人机验证时,请回官方网页手动登录后更新。这里不接受收费 API Key。": "在 chat.deepseek.com 登入本人帳號後,從瀏覽器開發者工具的 Application → Local Storage 複製 userToken 的 value。Cookie 為選填,需要補充時請貼上該網站請求中的完整 Cookie;登入狀態失效或要求人機驗證時,請回官方網頁手動登入後更新。此處不接受付費 API Key。", "在 web.tabbit.ai 登录后,从开发者工具 Application → Cookies 复制 token 与 user_id,或直接粘贴该站点请求的 Copy as cURL 整段。国际站没有可复刻的网页授权回调,手机号登录也处在上游灰度里,所以只能导入已有登录态。登录态有效期约 7 天,过期后重新导入。Cookie 与 JWT 至少填一项。": "在 web.tabbit.ai 登錄後,從開發者工具 Application → Cookies 複製 token 與 user_id,或直接粘貼該站點請求的 Copy as cURL 整段。國際站沒有可復刻的網頁授權回調,手機號登錄也處在上游灰度裡,所以只能導入已有登錄態。登錄態有效期約 7 天,過期後重新導入。Cookie 與 JWT 至少填一項。", "在 web.tabbit.com 登录后,从开发者工具 Application → Cookies 复制 token 与 user_id,或直接粘贴该站点请求的 Copy as cURL 整段。登录态有效期约 7 天,上游没有续期接口,过期后重新导入即可。Cookie 与 JWT 至少填一项。": "在 web.tabbit.com 登錄後,從開發者工具 Application → Cookies 複製 token 與 user_id,或直接粘貼該站點請求的 Copy as cURL 整段。登錄態有效期約 7 天,上游沒有續期接口,過期後重新導入即可。Cookie 與 JWT 至少填一項。", "在内嵌窗口里完成官方登录,成功后自动加入账号列表。": "在內嵌視窗裡完成官方登入,成功後自動加入帳號列表。", "在{label}的 Qoder 账号设置 → Integrations 生成 PAT(别填 Google / GitHub 的令牌)。两个地区的账号与凭证不通用。": "在{label}的 Qoder 帳號設定 → Integrations 生成 PAT(別填 Google / GitHub 的權杖)。兩個地區的帳號與憑證不通用。", "在应用内嵌窗口完成 WPS 登录,登录凭据仅交给原插件校验并保存到当前网关。": "在應用程式內嵌視窗完成 WPS 登入,登入憑證僅交給原外掛驗證並儲存到目前閘道。", "在所选站点的 MonkeyCode 官方页面完成登录和验证码,成功后自动读取登录态并加入账号列表,无需手动复制 Cookie。": "在所選站點的 MonkeyCode 官方頁面完成登入和驗證,成功後自動讀取登入狀態並加入帳號清單,無需手動複製 Cookie。", "在打开的官方授权页里用微信扫码登录(页面会直接显示二维码)。扫码成功后自动加入账号列表。": "在開啟的官方授權頁裡用微信掃碼登入(頁面會直接顯示二維碼)。掃碼成功後自動加入帳號列表。", "在打开的官方登录页里完成登录,成功后自动加入账号列表。": "在開啟的官方登入頁裡完成登入,成功後自動加入帳號列表。", "在打开的登录页里用百度账号登录 KukuAI 主站(手机验证码 / 扫码均可),登录成功后自动加入账号列表。网关会向百度换发 KukuAI 业务会话令牌(依赖本机已安装库库AI 客户端)。": "在開啟的登入頁裡用百度帳號登入 KukuAI 主站(手機驗證碼 / 掃碼均可),登入成功後自動加入帳號列表。閘道器會向百度換髮 KukuAI 業務會話權杖(依賴本機已安裝庫庫AI 客戶端)。", "在打开的登录页里登录 Google 账号(Antigravity 的授权页),授权完成后自动加入账号列表。": "在開啟的登入頁裡登入 Google 帳號(Antigravity 的授權頁),授權完成後自動加入帳號列表。", "在打开的窗口里用百度账号登录 KukuAI 主站(手机验证码 / 扫码均可),登录成功后自动加入账号列表。网关会向百度换发 KukuAI 业务会话令牌(依赖本机已安装库库AI 客户端)。": "在開啟的窗口裡用百度帳號登入 KukuAI 主站(手機驗證碼 / 掃碼均可),登入成功後自動加入帳號列表。閘道器會向百度換髮 KukuAI 業務會話權杖(依賴本機已安裝庫庫AI 客戶端)。", "在打开的窗口里登录 Google 账号(Antigravity 的授权页),授权完成后自动加入账号列表。": "在開啟的窗口裡登入 Google 帳號(Antigravity 的授權頁),授權完成後自動加入帳號列表。", "在打开的页面里登录千问办公{label}({site})的账号,登录完成后会自动加入列表。两版的账号与凭证不通用。": "在開啟的頁面登入千問辦公{label}({site})的帳號,登入完成後會自動加入清單。兩版的帳號與憑證不通用。", "在浏览器中打开登录页": "在瀏覽器中開啟登入頁", "在系统浏览器授权指定 project 的 Code Assist Standard / Enterprise;账号与 project 仍须通过真实预检。": "在系統瀏覽器授權指定 project 的 Code Assist Standard / Enterprise;帳號與 project 仍須通過實際預檢。", "在豆包官方页面完成登录,窗口会自动读取完整 Cookie 并加入账号列表;不需要安装豆包工作客户端。": "在豆包官方頁面完成登入,視窗會自動讀取完整 Cookie 並加入帳號清單;不需要安裝豆包工作用戶端。", "地区": "地區", "填写信息后发起授权,进度与失败原因会显示在这里。": "填寫資訊後發起授權,進度與失敗原因會顯示在這裡。", "填写具体站点名称;模板类型不会作为站点身份": "填寫具體網站名稱;範本類型不會作為網站身分", "填写凭证": "填寫憑證", "填写凭证添加": "填寫憑證新增", "备注名": "備註名稱", "套餐": "套餐", "如何获取": "如何取得", "如官方页面跳回的是网关本机地址,请在桌面面板完成回调;手机端不会猜测未声明的回调输入。": "如官方頁面跳回閘道本機位址,請於桌面面板完成回呼;手機端不會猜測未宣告的回呼輸入。", "如官方页面跳回的是网关本机地址,请粘贴完整回调;没有授权页的本机方式仍需等待网关确认。": "如官方頁面跳回閘道本機位址,請貼上完整回呼 URL;沒有授權頁面的本機方式仍需等待閘道確認。", "如:公司中转站、个人备用站": "如:公司中轉站、個人備用站", "如:智谱 GLM": "如:智譜 GLM", "安装在运行网关的机器,不是当前手机或浏览器所在设备。由 Agent2API 独立管理,不覆盖原有安装;仅点击按钮后下载。": "安裝於執行閘道的機器,不是目前手機或瀏覽器所在裝置。由 Agent2API 獨立管理,不覆蓋原有安裝;僅點擊按鈕後下載。", "安装已取消,原有版本未更改。": "安裝已取消,原有版本未變更。", "安装操作未得到有效确认,请重新检查状态;不会自动重复安装。": "安裝操作未獲得有效確認,請重新檢查狀態;不會自動重複安裝。", "完成官方登录后粘贴包含 state 的完整 loopback 回调地址。": "完成官方登入後,貼上包含 state 的完整 loopback 回呼位址。", "完成登录后自动加入账号列表,昵称取自上游。": "完成登入後自動加入帳號列表,暱稱取自上游。", "完整 JSON 已包含时无需填写": "完整 JSON 已包含時無需填寫", "完整回调地址(原样提交)": "完整回呼位址(原樣提交)", "官方 PKCE 登录;浏览器登录态有有效期,失效后需重登,不提供维护续期。": "官方 PKCE 登入;瀏覽器登入狀態有有效期限,失效後需重新登入,不提供維護更新。", "官方客户端凭证目录:Windows 是 C:\\Users\\<你的用户名>\\AppData\\Local\\CodeBuddyExtension\\Data\\Public\\auth,macOS 是 ~/Library/Application Support/CodeBuddyExtension/Data/Public/auth": "官方客戶端憑證目錄:Windows 是 C:\\Users\\<你的使用者名稱>\\AppData\\Local\\CodeBuddyExtension\\Data\\Public\\auth,macOS 是 ~/Library/Application Support/CodeBuddyExtension/Data/Public/auth", "官方已确认到账": "官方已確認到賬", "官方浏览器登录": "官方瀏覽器登入", "官方浏览器登录(粘贴完整回调)": "官方瀏覽器登入(貼上完整回呼)", "官方网页正常登录后的 Cookie;风控时请手动更新": "官方網頁正常登入後的 Cookie;風控時請手動更新", "客户端版本": "客戶端版本", "宿主已持久保存的稳定 hostId(urn:uuid,不能每次生成)": "宿主已持久儲存的穩定 hostId(urn:uuid,不能每次產生)", "导入": "匯入", "导入 QuWork 本机登录态": "匯入 QuWork 本機登入狀態", "导入 kiro-cli / Kiro IDE 登录态": "匯入 kiro-cli / Kiro IDE 登入狀態", "导入中…": "匯入中…", "导入凭证文件": "匯入憑證檔案", "导入失败": "匯入失敗", "导入失败:{reason}": "匯入失敗:{reason}", "导入所选": "匯入所選", "导入所选({n})": "匯入所選({n})", "导入桌面端登录态": "匯入桌面版登入態", "导入用户指定的本地 Copilot 凭证": "匯入使用者指定的本機 Copilot 憑證", "将在新标签页中打开授权页;完成后自动加入账号列表。": "將在新標籤頁中開啟授權頁;完成後自動加入帳號列表。", "将在新标签页中打开授权页;完成后自动加入账号列表。若页面跳回本机地址后账号没有出现,按提示把地址栏里的完整回调地址粘贴回来即可。": "將在新標籤頁中開啟授權頁;完成後自動加入帳號列表。若頁面跳回本機地址後帳號沒有出現,按提示把位址列裡的完整回撥地址貼上回來即可。", "将打开内嵌窗口;授权完成后自动加入账号列表。关掉窗口即取消等待。授权页最后可能提示无法打开 zcode:// 链接,这是正常的 —— 结果已由服务端记下": "將開啟內嵌視窗;授權完成後自動加入帳號列表。關掉視窗即取消等待。授權頁最後可能提示無法開啟 zcode:// 連結,這是正常的 —— 結果已由服務端記下", "将打开内嵌窗口;授权完成后自动加入账号列表。远程面板可粘贴回调地址。关掉窗口即取消等待。链接 5 分钟内有效,超时或未点就会作废(可重新发起)": "將開啟內嵌視窗;授權完成後自動加入帳號列表。遠端面板可貼上回撥地址。關掉視窗即取消等待。連結 5 分鐘內有效,超時或未點就會作廢(可重新發起)", "将打开内嵌窗口;登录完成后自动加入账号列表。关掉窗口即取消等待": "將開啟內嵌視窗;登入完成後自動加入帳號列表。關掉視窗即取消等待", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的 Trae 账号);同机完成后自动加入,Docker / 远程面板按提示粘贴地址栏回调地址。": "將用系統預設瀏覽器開啟授權頁(會複用瀏覽器裡已登入的 Trae 帳號);同機完成後自動加入,Docker / 遠端面板按提示貼上位址列回撥地址。", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的 ZCode 账号);授权完成后自动加入账号列表。页面最后可能提示无法打开 zcode:// 链接,属正常现象": "將用系統預設瀏覽器開啟授權頁(會複用瀏覽器裡已登入的 ZCode 帳號);授權完成後自動加入帳號列表。頁面最後可能提示無法開啟 zcode:// 連結,屬正常現象", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的华为云账号);授权码由网关轮询云端取回,与浏览器跑在哪台机器无关,完成后自动加入账号列表": "將用系統預設瀏覽器開啟授權頁(會複用瀏覽器裡已登入的華為雲帳號);授權碼由閘道器輪詢雲端取回,與瀏覽器跑在哪臺機器無關,完成後自動加入帳號列表", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的华为云账号);浏览器与网关不在同一台机器时,按上方说明把最终回调地址粘贴回面板": "將用系統預設瀏覽器開啟授權頁(會複用瀏覽器裡已登入的華為雲帳號);瀏覽器與閘道器不在同一臺機器時,按上方說明把最終回撥地址貼上回面板", "将用系统默认浏览器打开登录页(会复用浏览器里已登录的 Accio 账号);完成登录后自动加入账号列表,关掉弹窗即取消等待": "將用系統預設瀏覽器開啟登入頁(會複用瀏覽器裡已登入的 Accio 帳號);完成登入後自動加入帳號列表,關掉彈窗即取消等待", "将用系统默认浏览器打开登录页(会复用浏览器里已登录的 LobsterAI 账号);完成登录后自动加入账号列表,关掉弹窗即取消等待": "將用系統預設瀏覽器開啟登入頁(會重用瀏覽器裡已登入的 LobsterAI 帳號);完成登入後自動加入帳號清單,關掉彈窗即取消等待", "小米 MiMo Token Plan 套餐(新加坡站)": "小米 MiMo Token Plan 套餐(新加坡站)", "小米 MiMo 按量 API;使用按量 API Key,不要混用 Token Plan 套餐 Key": "小米 MiMo 按量 API;使用按量 API Key,不要混用 Token Plan 套餐 Key", "小米 MiMo(按量)": "小米 MiMo(按量)", "已到账": "已到賬", "已取消登录等待": "已取消登入等待", "已取消领取": "已取消領取", "已取消验证码": "已取消驗證碼", "已填写手机号,正在发送验证码…": "已填寫手機號,正在傳送驗證碼…", "已声明无需鉴权:账号会被正常选路,出网时不带任何鉴权头": "已宣告無需鑑權:帳號會被正常選路,出網時不帶任何鑑權頭", "已完成验证,继续发送": "已完成驗證,繼續傳送", "已导入 {ok} 个,失败 {fail} 个(失败项已标注在列表里)": "已匯入 {ok} 個,失敗 {fail} 個(失敗項已標註在列表裡)", "已建 API": "已建 API", "已建过 · {n} 个账号,点击继续添加": "已建過 · {n} 個帳號,點擊繼續新增", "已建过,点击继续添加账号": "已建過,點擊繼續新增帳號", "已打开官方登录页,请在窗口中完成登录…": "已開啟官方登入頁,請在視窗中完成登入…", "已收到授权回调,正在完成登录…": "已收到授權回呼,正在完成登入…", "已收到浏览器授权,正在获取账号凭据…": "已收到瀏覽器授權,正在取得帳號憑證…", "已有 API Key(留空则在浏览器登录后自动创建)": "現有 API Key(留空則在瀏覽器登入後自動建立)", "已有验证码流程正在进行,请先完成或取消": "已有驗證碼流程正在進行,請先完成或取消", "已检测到本机客户端": "已偵測到本機用戶端", "已点发送,等待短信…": "已點發送,等待簡訊…", "已用系统默认浏览器打开登录页,请在浏览器中完成登录…": "已用系統預設瀏覽器開啟登入頁,請在瀏覽器中完成登入…", "已读取 QuWork 本机登录态,正在添加账号。": "已讀取 QuWork 本機登入狀態,正在新增帳號。", "已领取,等官方确认": "已領取,等官方確認", "引用本机 Gemini CLI oauth_creds.json(只读)": "參照本機 Gemini CLI oauth_creds.json(唯讀)", "当前分类里没有「{keyword}」,其它分类有 {n} 个匹配": "目前分類裡沒有「{keyword}」,其他分類有 {n} 個符合", "当前壳版本不支持 AutoClaw 网页登录,请更新应用": "當前殼版本不支援 AutoClaw 網頁登入,請更新應用", "当前没有可领取的套餐(活动尚未开始)": "當前沒有可領取的套餐(活動尚未開始)", "当前版本:{version}": "目前版本:{version}", "当前环境不支持领取(桥接方法缺失)": "當前環境不支援領取(橋接方法缺失)", "必填,CatPaw 账号标识": "必填,CatPaw 帳號標識", "恢复 Google / GitHub 入口": "恢復 Google / GitHub 入口", "所选代理会保存到账号设置,后续请求继续使用。": "所選代理會儲存至帳號設定,後續請求繼續使用。", "手动代理": "手動代理", "手动导入 GitHub OAuth / GitHub 令牌": "手動提供 GitHub OAuth / GitHub 權杖", "手机号": "手機號", "手机验证码登录": "手機驗證碼登入", "打开 LobsterAI(有道龙虾)的官方登录页(lobsterai.youdao.com)并用你的 LobsterAI 账号登录:登录成功后官方页面会跳回本机并自动加入账号列表 —— 回调落在网关自己的端口上,所以浏览器要与网关在同一台机器上;授权码只在本机传给网关,界面不显示明文 token。": "開啟 LobsterAI(有道龍蝦)的官方登入頁(lobsterai.youdao.com)並用你的 LobsterAI 帳號登入:登入成功後官方頁面會跳回本機並自動加入帳號清單 —— 回呼落在閘道自己的連接埠上,所以瀏覽器要與閘道在同一台機器上;授權碼只在本機傳給閘道,介面不顯示明文權杖。", "打开 Trae 的官方授权页(trae.cn)并用你的 Trae 账号登录:授权完成后官方页面会跳回本机的一个临时端口;同机部署自动接收,Docker / 远程面板请按提示复制地址栏回调地址。": "開啟 Trae 的官方授權頁(trae.cn)並用你的 Trae 帳號登入:授權完成後官方頁面會跳回本機的一個臨時連接埠;同機部署自動接收,Docker / 遠端面板請按提示複製網址列中的回呼網址。", "打开 Accio {label}的官方登录页({site})并用你的 Accio 账号登录:登录成功后官方页面会跳回本机;同机自动完成,Docker / 远程面板按提示粘贴回调地址即可(授权码只在本机传给网关,界面不显示明文 token)。": "開啟 Accio {label}的官方登入頁({site})並用你的 Accio 帳號登入:登入成功後官方頁面會跳回本機;同機自動完成,Docker / 遠端面板按提示貼上回撥地址即可(授權碼只在本機傳給閘道器,介面不顯示明文 token)。", "打开 Accio {label}登录页": "開啟 Accio {label}登入頁", "打开 Antigravity 网页登录": "開啟 Antigravity 網頁登入", "打开 AtomGit 授权页登录:登录完成后网关会自动轮询代理取回令牌并加入账号列表(授权回调由代理终结,不回到本机,因此无需手工回填回调地址)。": "開啟 AtomGit 授權頁登入:完成後閘道會自動輪詢代理取回權杖並加入帳號清單(授權回呼由代理終結,不會回到本機,因此無需手動回填回呼位址)。", "打开 CatPaw 网页登录": "開啟 CatPaw 網頁登入", "打开 Cline 授权页": "開啟 Cline 授權頁", "打开 CodeArts 授权页": "開啟 CodeArts 授權頁", "打开 LobsterAI 登录页": "開啟 LobsterAI 登入頁", "打开 Qoder 网页登录": "開啟 Qoder 網頁登入", "打开 Trae 授权页": "開啟 Trae 授權頁", "打开 ZCode {label}的官方授权页并用你的账号登录。授权结果由 ZCode 服务端记录,网关在后台自动取回凭证并加入账号列表。": "開啟 ZCode {label}的官方授權頁並用你的帳號登入。授權結果由 ZCode 服務端記錄,閘道器在後臺自動取回憑證並加入帳號列表。", "打开 ZCode {label}授权页": "開啟 ZCode {label}授權頁", "打开下一步授权页": "開啟下一步授權頁", "打开人机验证": "開啟人機驗證", "打开千问办公网页登录": "開啟千問辦公網頁登入", "打开华为云 CodeArts 的官方授权页登录:登录完成后官方页面会把浏览器带回网关自己的 /oauth/callback,网关用一次性授权码换取临时凭据并加入账号列表。
    网关跑在另一台机器上时,网页端会提示把地址栏中的最终回调地址直接粘贴回面板。": "開啟華為雲 CodeArts 的官方授權頁登入:登入完成後官方頁面會把瀏覽器帶回閘道器自己的 /oauth/callback,閘道器用一次性授權碼換取臨時憑據並加入帳號列表。
    閘道器跑在另一臺機器上時,網頁端會提示把位址列中的最終回撥地址直接貼上回面板。", "打开华为云授权页登录:登录完成后网关会自动轮询云端取回授权码并加入账号列表(不需要装 OfficeAce 桌面端,也无需手工回填回调地址)。": "開啟華為雲授權頁登入:登入完成後閘道器會自動輪詢雲端取回授權碼並加入帳號列表(不需要裝 OfficeAce 桌面版,也無需手工回填回撥地址)。", "打开官方授权页": "開啟官方授權頁面", "打开官方授权页完成设备码授权,登录的是{label}({site})的账号。": "開啟官方授權頁完成裝置碼授權,登入的是{label}({site})的帳號。", "打开授权页": "開啟授權頁", "打开授权页完成确认,账号自动加入 {label}{note}": "開啟授權頁完成確認,帳號自動加入 {label}{note}", "打开方式": "開啟方式", "打开网页登录": "開啟網頁登入", "按已验证邮箱只读引用 cursor-agent 当前登录态;每次操作重读 keychain/auth.json,不复制 token、不主动运行 CLI 续期,退出或失效后需在原客户端重登。": "依已驗證信箱唯讀參照 cursor-agent 目前登入狀態;每次操作重新讀取 keychain/auth.json,不複製 token、不主動執行 CLI 更新,登出或失效後需在原用戶端重新登入。", "授权只读引用,不复制、不修改、不续期本机凭证": "授權唯讀參照,不複製、不修改、不更新本機憑證", "授权回调提交失败;请检查输入并重试,登录仍在等待。": "授權回呼提交失敗;請檢查輸入並重試,登入仍在等待。", "授权每次请求只读所选文件,固定当前账号与工作区?": "授權每次請求唯讀存取所選檔案,固定目前帳號與工作區?", "授权码或令牌(原样提交)": "授權碼或權杖(原樣提交)", "授权读取所选条目": "授權讀取所選項目", "授权页、换证与取账号信息都走这条线路。无头服务器上没有系统代理,这里不选就走直连(多数网络里到不了 Google)。": "授權頁、換證與取得帳號資訊都走這條線路。無頭伺服器上沒有系統代理,這裡不選就走直連(多數網路裡到不了 Google)。", "探测失败:{message}": "探測失敗:{message}", "接入一个兼容上游": "接入一個相容上游", "控制台 uaa-token(粘贴令牌值或完整的 uaa-token=… Cookie 项)": "控制台 uaa-token(貼上權杖值或完整的 uaa-token=… Cookie 項目)", "推荐": "推薦", "提交中…": "提交中…", "提交授权回调": "提交授權回呼", "提供商仅在已启用且加载后出现。登录与本机引用均作用在所连接网关,不是手机。": "提供商僅在啟用並載入後顯示。登入與本機參照均作用於所連線的閘道,而非手機。", "插件专用 Chrome 登录(自动读取凭据)": "插件專用 Chrome 登入(自動讀取憑證)", "插件会在网关电脑上启动独立浏览器并读取登录结果,不使用系统默认浏览器。": "外掛會在閘道電腦上啟動獨立瀏覽器並讀取登入結果,不使用系統預設瀏覽器。", "搜索提供商": "搜尋提供商", "搜索提供商…": "搜尋提供商…", "整份粘贴官方插件 / CLIProxyAPI 落盘的凭据 JSON(形如 {\"codearts_provider_credential\":{…}},铺平的也行)。
    必填:access_key_id、secret_access_key、security_token。要能自动续期,必须连 refresh_token 与 oauth_context 一起粘 —— 临时凭据约一小时到期,缺这半块就续不回来,只能重新登录。": "整份貼上官方外掛 / CLIProxyAPI 落盤的憑據 JSON(形如 {\"codearts_provider_credential\":{…}},鋪平的也行)。
    必填:access_key_id、secret_access_key、security_token。要能自動續期,必須連 refresh_token 與 oauth_context 一起粘 —— 臨時憑據約一小時到期,缺這半塊就續不回來,只能重新登入。", "文件是{edition}凭证,已按该版本导入": "檔案是{edition}憑證,已按該版本匯入", "新增独立登录": "新增獨立登入", "新建自定义提供商": "新建自定義提供商", "新网关确认代理同次保存后不再重复提交;旧网关使用兼容保存并提示核查,失败不会撤销已添加的账号。": "新閘道確認代理已同次儲存後不再重複提交;舊閘道使用相容儲存並提示核查,失敗不會撤銷已新增的帳號。", "方案:{label}": "方案:{label}", "无需手动复制令牌,验证码在官方页面完成。": "無需手動複製權杖,驗證碼在官方頁面完成。", "旧网关未确认代理同次保存,已使用兼容接口保存;请在账号设置中确认代理选择。": "舊閘道未確認代理同次儲存,已使用相容介面儲存;請於帳號設定中確認代理選擇。", "明文 JWT 或 auth.json 里的 enc: 加密值(自动解密)": "明文 JWT 或 auth.json 裡的 enc: 加密值(自動解密)", "明文 JWT(国际版账号的 access token)": "明文 JWT(國際版帳號的 access token)", "明确选择文件与只读授权;不修改或续期原客户端登录态。": "明確選擇檔案與唯讀授權;不修改或更新原用戶端登入狀態。", "明确选择文件内的账号条目键名": "明確選擇檔案內的帳號項目鍵名", "明确选择标准凭证文件的完整绝对路径": "明確選擇標準憑證檔案的完整絕對路徑", "是否授权只读取此文件和所选账号凭证?": "是否授權唯讀存取此檔案與所選帳號憑證?", "显示凭证": "顯示憑證", "智谱 bigmodel.cn 的 Coding 套餐,Key 在 open.bigmodel.cn/usercenter/apikeys": "智譜 bigmodel.cn 的 Coding 套餐,Key 在 open.bigmodel.cn/usercenter/apikeys", "暂不支持自动安装": "暫不支援自動安裝", "暂时无法检查官方最新版;已安装且满足最低要求的客户端仍可使用。": "暫時無法檢查官方最新版;已安裝且符合最低要求的用戶端仍可使用。", "暂时无法登录": "暫時無法登入", "有可用更新": "有可用更新", "未开启客户端调试端口时,请使用网页登录或粘贴 Cookie。": "未開啟用戶端偵錯連接埠時,請使用網頁登入或貼上 Cookie。", "未知错误": "未知錯誤", "未能获取授权地址,请重试": "未能獲取授權地址,請重試", "未能读取 cc-switch 数据": "未能讀取 cc-switch 資料", "未领取成功": "未領取成功", "本体订阅未返回动态登录方式(501);不会猜测导入接口或显示插件手动凭证入口。请更新网关后重试。": "本體訂閱未回傳動態登入方式(501);不會猜測匯入介面或顯示外掛手動憑證入口。請更新閘道後重試。", "本地 Ollama、OpenCode Zen 免费档这类上游要勾上,否则账号不可用": "本地 Ollama、OpenCode Zen 免費檔這類上游要勾上,否則帳號不可用", "本家有两个**互不替代**的凭证,按你要用的功能填,至少填一个:编码套餐 API Key 用于转发推理(打 {site})与查询窗口限额(每 N 小时 / 每周的剩余比例);jwt 用于领取套餐与查询余额(打 zcode.z.ai 的 billing 网关,官方叫 Coding Plan JWT,是一串三段点分的字符串)。余额两把都能查、但读到的东西不同:jwt 读到余额桶与套餐到期,API Key 读到窗口限额;而领取只认 jwt、转发只认 API Key。请填写 {label}账号的凭证 —— {plan}(最容易拿到的办法:直接用上方的「网页登录」—— 它会替你把这个 API Key 换好,两个凭证一起拿到。)": "本家有兩個**互不替代**的憑證,按你要用的功能填,至少填一個:編碼套餐 API Key 用於轉發推理(打 {site})與查詢視窗限額(每 N 小時 / 每週的剩餘比例);jwt 用於領取套餐與查詢餘額(打 zcode.z.ai 的 billing 閘道器,官方叫 Coding Plan JWT,是一串三段點分的字串)。餘額兩把都能查、但讀到的東西不同:jwt 讀到餘額桶與套餐到期,API Key 讀到視窗限額;而領取只認 jwt、轉發只認 API Key。請填寫 {label}帳號的憑證 —— {plan}(最容易拿到的辦法:直接用上方的「網頁登入」—— 它會替你把這個 API Key 換好,兩個憑證一起拿到。)", "本机 Ollama 的 OpenAI 兼容端点,无需 API Key(默认已勾上「该上游无需鉴权」,鉴权头一个都不发)": "本機 Ollama 的 OpenAI 相容端點,無需 API Key(預設已勾上「該上游無需鑑權」,鑑權頭一個都不發)", "本机 auth.json(只读引用)": "本機 auth.json(唯讀參照)", "本机凭证已校验。宿主仅保存文件引用与稳定身份,每次请求重新读取。": "本機憑證已驗證。宿主僅儲存檔案參照與穩定身分,每次請求重新讀取。", "本机部署会自动完成登录;服务器或 Docker 部署时,若授权后跳到无法访问的 localhost 或 127.0.0.1 页面,请把地址栏中的完整回调地址粘贴回来。AWS 登录如需继续授权,请打开下一步授权页,完成后再次回填。请勿修改地址或把回调链接发给他人。": "本機部署會自動完成登入;伺服器或 Docker 部署時,若授權後跳到無法存取的 localhost 或 127.0.0.1 頁面,請貼上網址列中的完整回呼位址。AWS 登入若需繼續授權,請開啟下一步授權頁,完成後再次回填。請勿修改位址或將回呼連結傳給他人。", "本次未确认到账": "本次未確認到賬", "条可导入": "條可匯入", "条配置,其中": "條配置,其中", "桌面运行时不可用(Tauri 未初始化)": "桌面執行環境無法使用(Tauri 未初始化)", "检测失败": "偵測失敗", "模型网关基址": "模型閘道器基址", "正在准备 AWS 授权…": "正在準備 AWS 授權…", "正在准备安装…": "正在準備安裝…", "正在取消安装…": "正在取消安裝…", "正在启用新版本…": "正在啟用新版本…", "正在打开百度登录页…": "正在開啟百度登入頁…", "正在扫描本机 cc-switch…": "正在掃描本機 cc-switch…", "正在换发访客凭证…": "正在換髮訪客憑證…", "正在校验官方安装包…": "正在驗證官方安裝套件…", "正在检查安装状态…": "正在檢查安裝狀態…", "正在检查客户端版本…": "正在檢查用戶端版本…", "正在添加…": "正在新增…", "正在等待{name}登录完成;完成或取消后才能发起新的登录": "正在等待{name}登入完成;完成或取消後才能發起新的登入", "此 Copilot 手动令牌方式未声明回调输入契约,暂不发起;请改用设备码登录或只读本机引用。": "此 Copilot 手動權杖方式未宣告回呼輸入契約,暫不發起;請改用裝置碼登入或本機唯讀參照。", "此提供商已有登录任务,请先完成或取消。": "此提供商已有登入工作,請先完成或取消。", "此提供商未声明动态登录方式,请在网关桌面面板使用其既有入口;手机端不会猜测凭证字段。": "此提供商未宣告動態登入方式,請於閘道桌面面板使用既有入口;手機端不會猜測憑證欄位。", "此方式需要原样提交授权码或令牌;输入会隐藏,不会当作 URL 或 API 凭证解析。提交后仍需等待网关确认。": "此方式需要原樣提交授權碼或權杖;輸入會隱藏,不會按 URL 或 API 憑證解析。提交後仍需等待閘道確認。", "此方式需要完整回调地址;请原样粘贴,不拆分参数或重建地址。提交后仍需等待网关确认。": "此方式需要完整回呼位址;請原樣貼上,不拆分參數或重建位址。提交後仍需等待閘道確認。", "每个账号使用独立的官方登录目录。终端登录沿用该终端的网络环境;这里选择的代理用于添加后的模型请求。": "每個帳號使用獨立的官方登入目錄。終端機登入沿用該終端機的網路環境;此處選擇的代理用於新增後的模型請求。", "每周": "每週", "每日": "每日", "每月": "每月", "没有则无法自动续期": "沒有則無法自動續期", "没有匹配「{keyword}」的提供商": "沒有匹配「{keyword}」的提供商", "浏览器拦截了弹窗": "瀏覽器攔截了彈窗", "浏览器授权已收到,但网关直连 DeepAI 失败。请在登录代理中填入系统代理或选择可用代理后重新登录。": "瀏覽器授權已收到,但閘道直連 DeepAI 失敗。請在登入代理中填入系統代理或選擇可用代理後重新登入。", "浏览器授权已收到,但通过所选代理获取账号凭据失败。请检查该代理后重新登录。": "瀏覽器授權已收到,但透過所選代理取得帳號憑證失敗。請檢查該代理後重新登入。", "浏览器显示登录完成后,网关还需联网获取账号凭据。若浏览器或 Magpie 使用系统代理,请先在下方点击「填入系统代理」;选择直连不会跟随系统代理。": "瀏覽器顯示登入完成後,閘道仍需連網取得帳號憑證。若瀏覽器或 Magpie 使用系統代理,請先在下方點選「填入系統代理」;選擇直連不會跟隨系統代理。", "浏览器登录(墨点额度 + 自动创建 API Key)": "瀏覽器登入(墨點額度 + 自動建立 API Key)", "浏览器登录(复用已有 API Key)": "瀏覽器登入(重用現有 API Key)", "浏览器面板无法读取其他站点的登录态,请使用本人网页账号的令牌。": "瀏覽器面板無法讀取其他網站的登入狀態,請使用本人網頁帳號的權杖。", "浏览器面板无法读取其它站点的 Cookie,请登录 www.doubao.com 后,使用「填写凭证」粘贴完整 Cookie。": "瀏覽器面板無法讀取其他網站的 Cookie,請登入 www.doubao.com 後,使用「填寫憑證」貼上完整 Cookie。", "添加 DeepSeek 账号": "新增 DeepSeek 帳號", "添加 {name} 账号": "新增 {name} 帳號", "添加中…": "新增中…", "添加到 ": "新增到 ", "添加到此提供商": "新增到此提供商", "添加失败:{reason}": "新增失敗:{reason}", "添加小浣熊账号": "新增小浣熊帳號", "添加方式": "新增方式", "添加时要用它出网校验凭证(例如 Antigravity 要打一次 Google 的 token 端点)。无头服务器上没有系统代理,这里不选就走直连。": "新增時要用它出網校驗憑證(例如 Antigravity 要打一次 Google 的 token 端點)。無頭伺服器上沒有系統代理,這裡不選就走直連。", "添加访客账号": "新增訪客帳號", "添加账号": "新增帳號", "火山引擎 Coding 套餐;通用推理接入点为 https://ark.cn-beijing.volces.com/api/v3": "火山引擎 Coding 套餐;通用推理接入點為 https://ark.cn-beijing.volces.com/api/v3", "点击添加账号": "點擊新增帳號", "点击登录后,在 Google 页面授权,再原样粘贴授权码或完整页面地址;已登录的 agy 会直接连接。Google 凭证由官方客户端保管,Agent2API 只保存本机连接标记。同一网关仅使用 agy 当前登录的一个账号,不支持复制为多个独立账号。": "點擊登入後,在 Google 頁面授權,再原樣貼上授權碼或完整頁面位址;已登入的 agy 會直接連線。Google 憑證由官方用戶端保管,Agent2API 只儲存本機連線標記。同一網關僅使用 agy 目前登入的一個帳號,不支援複製為多個獨立帳號。", "点开即预填,填 Key 接入": "點開即預填,填 Key 接入", "点按钮后先过一次滑块验证(官方风控),随后打开登录页,登录完成即自动添加账号。
    这是国际版官方唯一的登录方式;已在客户端登录过的,用「导入桌面端登录态」更快。": "點按鈕後先過一次滑塊驗證(官方風控),隨後開啟登入頁,登入完成即自動新增帳號。
    這是國際版官方唯一的登入方式;已在客戶端登入過的,用「匯入桌面版登入態」更快。", "独立 Kiro OAuth 支持续期;保留原登录验证,不接受任意 bearer token。": "獨立 Kiro OAuth 支援更新;保留原登入驗證,不接受任意 bearer token。", "用 AutoClaw 账号绑定的手机号登录:点击「获取验证码」,收到短信后填入下方并登录。验证码由本机直接提交给官方接口,界面不显示 token。": "用 AutoClaw 帳號繫結的手機號登入:點擊「獲取驗證碼」,收到簡訊後填入下方並登入。驗證碼由本機直接提交給官方介面,介面不顯示 token。", "用 CatPaw 账号完成登录(美团 passport),成功后自动加入账号列表。": "用 CatPaw 帳號完成登入(美團 passport),成功後自動加入帳號列表。", "用 Loomy 账号绑定的手机号登录:点「获取验证码」后填入即可。这是本家最省事的入口。": "用 Loomy 帳號繫結的手機號登入:點「獲取驗證碼」後填入即可。這是本家最省事的入口。", "用于转发;形如 apiKey.secret 两段点分(不填则这个账号不能转发)": "用於轉發;形如 apiKey.secret 兩段點分(不填則這個帳號不能轉發)", "用于领取套餐与查询余额;不填则这个账号不能领取与查余额": "用於領取套餐與查詢餘額;不填則這個帳號不能領取與查餘額", "用户 ID": "使用者 ID", "用绑定的手机号登录:点「获取验证码」后填入即可。这是国内版官方唯一的登录方式。": "用繫結的手機號登入:點「獲取驗證碼」後填入即可。這是國內版官方唯一的登入方式。", "用绑定的手机号登录:点「获取验证码」,收到短信后填入下方并点「登录并添加」。这是国内站官方唯一的登录方式。": "用綁定的手機號登錄:點「獲取驗證碼」,收到短信後填入下方並點「登錄並添加」。這是國內站官方唯一的登錄方式。", "由插件打开浏览器登录": "由外掛開啟瀏覽器登入", "由本机 Grok Build CLI 执行官方设备授权;仅保存 home/scope/account 引用,不镜像 token,后续操作只读,不提供维护续期。": "由本機 Grok Build CLI 執行官方裝置授權;僅儲存 home/scope/account 參照,不複製 token,後續操作為唯讀,不提供維護更新。", "留空使用 1.17.16(10117016)": "留空使用 1.17.16(10117016)", "留空使用该提供商默认值": "留空則使用該提供商預設值", "留空使用账号默认名称": "留空使用帳號預設名稱", "留空使用默认的 User-Agent;可从预置里选一个内置客户端,也可以直接填写。": "留空則使用預設的 User-Agent;可從預設中選一個內建客戶端,也可以直接填寫。", "留空则用提供商名称": "留空則用提供商名稱", "留空自动查找;也可填写网关本机 agy 可执行文件的绝对路径": "留空自動尋找;也可填寫閘道本機 agy 執行檔的絕對路徑", "登录 / 添加 {name} 账号": "登入 / 新增 {name} 帳號", "登录 JWT": "登錄 JWT", "登录 chat.deepseek.com 后,打开开发者工具 → Application → Local Storage,复制 userToken 的 value。": "登入 chat.deepseek.com 後,開啟開發者工具 → Application → Local Storage,複製 userToken 的 value。", "登录 session(一长串)": "登入 session(一長串)", "登录中…": "登入中…", "登录代理不支持轮询出网,请选择一条已保存的代理": "登入代理不支援輪詢出口,請選擇一條已儲存的代理", "登录凭证 accessToken": "登入憑證 accessToken", "登录出网代理": "登入對外連線代理", "登录取消未确认,请刷新状态后重试。": "登入取消未確認,請重新整理狀態後重試。", "登录失败:{message}": "登入失敗:{message}", "登录尚未完成,请继续通过共享登录桥等待结果": "登入尚未完成,請繼續透過共用登入橋接等待結果", "登录已结束": "登入已結束", "登录并添加": "登入並新增", "登录态文件路径:~/.box-agent/config/auth.json(Windows:C:\\Users\\<你的用户名>\\.box-agent\\config\\auth.json)": "登入態檔案路徑:~/.box-agent/config/auth.json(Windows:C:\\Users\\<你的使用者名稱>\\.box-agent\\config\\auth.json)", "登录授权地址无效,已取消本次等待。": "登入授權位址無效,已取消本次等待。", "登录桥未返回已完成的账号或会话,请重试": "登入橋接未回傳已完成的帳號或工作階段,請重試", "登录桥返回了空会话,无法确认账号已添加": "登入橋接回傳了空工作階段,無法確認帳號已新增", "相同协议和地址的提供商已经存在。可以继续新建独立提供商,或明确选择已有提供商添加账号。": "相同協定和位址的提供商已經存在。可以繼續建立獨立提供商,或明確選擇已有提供商新增帳號。", "看全部匹配": "看全部符合", "确定删除自定义提供商「{name}」?将同时删除该提供商下 {count} 个账号,删除后无法恢复。": "確定刪除自定義提供商「{name}」?將同時刪除該提供商下 {count} 個帳號,刪除後無法恢復。", "站点名称": "網站名稱", "端砚由插件在网关电脑上启动独立的 Edge、Chrome 或 Chromium 窗口,不使用系统默认浏览器或应用内嵌窗口。": "端硯由插件在閘道電腦上啟動獨立的 Edge、Chrome 或 Chromium 視窗,不使用系統預設瀏覽器或應用程式內嵌視窗。", "等待 Accio {label}登录完成…": "等待 Accio {label}登入完成…", "等待 AtomCode 登录完成…": "等待 AtomCode 登入完成…", "等待 CatPaw 登录完成…": "等待 CatPaw 登入完成…", "等待 Cline 授权确认…": "等待 Cline 授權確認…", "等待 CodeArts 登录完成…": "等待 CodeArts 登入完成…", "等待 Google 授权完成…": "等待 Google 授權完成…", "等待 KukuAI 登录完成…": "等待 KukuAI 登入完成…", "等待 LobsterAI 登录完成…": "等待 LobsterAI 登入完成…", "等待 MonkeyCode 登录完成…": "等待 MonkeyCode 登入完成…", "等待 OfficeAce 登录完成…": "等待 OfficeAce 登入完成…", "等待 OrcaTerm 登录完成…": "等待 OrcaTerm 登入完成…", "等待 Qoder 授权完成…": "等待 Qoder 授權完成…", "等待 Trae 授权完成…": "等待 Trae 授權完成…", "等待 ZCode {label}授权完成…": "等待 ZCode {label}授權完成…", "等待你在官方页面完成登录,成功后自动添加账号。": "等待你在官方頁面完成登入,成功後自動新增帳號。", "等待千问办公登录完成…": "等待千問辦公登入完成…", "等待小浣熊登录完成…": "等待小浣熊登入完成…", "等待插件完成登录": "等待插件完成登入", "等待浏览器完成登录": "等待瀏覽器完成登入", "等待浏览器授权;若本机回调页面无法打开,请复制地址栏中的完整地址回填。": "等待瀏覽器授權;若本機回呼頁面無法開啟,請複製網址列中的完整位址回填。", "等待登录完成…": "等待登入完成…", "等待网页登录…": "等待網頁登入…", "等待豆包工作登录完成…": "等待豆包工作登入完成…", "粘贴 API Key": "貼上 API Key", "粘贴 API 令牌": "貼上 API 權杖", "粘贴 Accio 的 accessToken": "貼上 Accio 的 accessToken", "粘贴 Antigravity 的 Google refresh token(以 1// 开头;直接粘贴含 refresh_token= 的整行也行)。
    这是网页登录之外的手工入口(例如从已登录的官方 IDE 里导出)。refresh token 不会过期,access token 到期由网关自动续期;令牌丢了只能重新走 Google 授权,请妥善保存。": "貼上 Antigravity 的 Google refresh token(以 1// 開頭;直接貼上含 refresh_token= 的整行也行)。
    這是網頁登入之外的手工入口(例如從已登入的官方 IDE 裡匯出)。refresh token 不會過期,access token 到期由閘道器自動續期;權杖丟了只能重新走 Google 授權,請妥善儲存。", "粘贴 Command Code 的 API Key(user_ 开头;从官方 CLI 的 ~/.commandcode/auth.json 或网页 studio 获取)。整行 / 带引号 / 带 Bearer 前缀地粘都行,网关会自己剥成裸 key。key 不过期、也没有续期接口,失效后重新获取即可;添加时网关会做一次轻量探活,失败不影响添加。": "貼上 Command Code 的 API Key(user_ 開頭;從官方 CLI 的 ~/.commandcode/auth.json 或網頁 studio 獲取)。整行 / 帶引號 / 帶 Bearer 字首地粘都行,閘道器會自己剝成裸 key。key 不過期、也沒有續期介面,失效後重新獲取即可;新增時閘道器會做一次輕量探活,失敗不影響新增。", "粘贴 Cookie": "貼上 Cookie", "粘贴 Google refresh token": "貼上 Google refresh token", "粘贴 ModelScope 的 API 令牌(ms- 开头,在 {site} 的「访问令牌」页获取)。
    {siteNote}
    这枚令牌两用:网关既用它调推理,也用它读账号身份、魔粒余额与每日签到。令牌长期有效、没有续期接口,失效后重新获取再粘一次即可。": "貼上 ModelScope 的 API 權杖(ms- 開頭,在 {site} 的「存取權杖」頁獲取)。
    {siteNote}
    這枚權杖兩用:閘道器既用它調推理,也用它讀帳號身份、魔粒餘額與每日簽到。權杖長期有效、沒有續期介面,失效後重新獲取再粘一次即可。", "粘贴 OrcaTerm 的 OAuth accessToken(JWT,三段点分;从桌面客户端 data.bin 或 Web 版 Cookie ot_session 获取)。直接粘贴含 Bearer / ot_session= 的整行也行,网关会自己剥成裸 token。添加后由网关自动续期(上游有续期接口),无需跟随 2 小时时效手动更换。": "貼上 OrcaTerm 的 OAuth accessToken(JWT,三段點分;從桌面客戶端 data.bin 或 Web 版 Cookie ot_session 獲取)。直接貼上含 Bearer / ot_session= 的整行也行,閘道器會自己剝成裸 token。新增後由閘道器自動續期(上游有續期介面),無需跟隨 2 小時時效手動更換。", "粘贴 Qoder 个人访问令牌(pt-…)": "貼上 Qoder 個人存取權杖(pt-…)", "粘贴 accessToken": "貼上 accessToken", "粘贴 access_token(一长串 JWT)": "貼上 access_token(一長串 JWT)", "粘贴 session cookie": "貼上 session cookie", "粘贴 token / refreshToken": "貼上 token / refreshToken", "粘贴 userToken.value": "貼上 userToken.value", "粘贴 workos:… 开头的令牌(不带前缀也会自动补上)": "貼上 workos:… 開頭的權杖(不帶字首也會自動補上)", "粘贴 www.doubao.com 的完整 Cookie(必须含 sessionid),也支持 Cookie JSON 数组或对象。复用豆包工作账号的额度;Cookie 失效后需重新登录,没有自动续期。": "貼上 www.doubao.com 的完整 Cookie(必須含 sessionid),也支援 Cookie JSON 陣列或物件。使用豆包工作帳號的額度;Cookie 失效後需重新登入,沒有自動續期。", "粘贴令牌": "貼上權杖", "粘贴令牌对": "貼上權杖對", "粘贴你本人已授权的 GitHub OAuth 令牌(不是设备码或 Copilot 短令牌)。令牌仍需由 GitHub 验证并交换;CLI 专用令牌可能不支持编辑器令牌交换。": "貼上你本人已授權的 GitHub OAuth 權杖(不是裝置碼或 Copilot 短期權杖)。權杖仍須由 GitHub 驗證並交換;CLI 專用權杖可能不支援編輯器權杖交換。", "粘贴完整登录凭证 JSON,或只填模型凭证 llmToken。仅模型凭证可对话;积分、续期和奖励需要登录凭证 accessToken。": "貼上完整登入憑證 JSON,或僅填模型憑證 llmToken。僅模型憑證可對話;積分、續期和獎勵需要登入憑證 accessToken。", "粘贴智谱清言的访问令牌(JWT,三段点分)。获取方式:浏览器打开 chatglm.cn 并登录后,在开发者工具的 Application → Cookies 里复制 chatglm_token 的值(也可以直接粘 chatglm_token=…; 整行)。粘贴后会先向上游校验一次,校验通过才落账号;登录账号的积分、签到能力都能用,之后由网关自动续期(上游有续期接口)。": "貼上智譜清言的存取權杖(JWT,三段點分)。獲取方式:瀏覽器開啟 chatglm.cn 並登入後,在開發者工具的 Application → Cookies 裡複製 chatglm_token 的值(也可以直接粘 chatglm_token=…; 整行)。粘貼後會先向上游校驗一次,校驗通過才落帳號;登入帳號的積分、簽到能力都能用,之後由閘道器自動續期(上游有續期介面)。", "粘贴登录凭据": "貼上登入憑據", "粘贴的是登录 session(同时是模型网关的 token)。Loomy 没有续期接口,session 有效期约 14 天,过期后重新登录即可。": "貼上的是登入 session(同時是模型閘道器的 token)。Loomy 沒有續期介面,session 有效期約 14 天,過期後重新登入即可。", "粘贴网关凭据": "貼上閘道器憑據", "粘贴网页登录凭证": "粘貼網頁登錄憑證", "粘贴网页登录态 cookie monkeycode_ai_session 的值(在浏览器里复制整段 Cookie 直接粘贴也行,网关会自己剥出值)。
    {siteNote}
    MonkeyCode 没有续期接口:session 有效期约 30 天(硬限制),过期后重新登录网页、再粘贴一次即可。": "貼上網頁登入態 cookie monkeycode_ai_session 的值(在瀏覽器裡複製整段 Cookie 直接貼上也行,閘道器會自己剝出值)。
    {siteNote}
    MonkeyCode 沒有續期介面:session 有效期約 30 天(硬限制),過期後重新登入網頁、再貼上一次即可。", "粘贴网页访问令牌": "貼上網頁存取權杖", "粘贴访问令牌": "貼上存取權杖", "系统浏览器": "系統瀏覽器", "系统浏览器可复用已有登录态(国际版推荐);内嵌窗口更干净。": "系統瀏覽器可複用已有登入態(國際版推薦);內嵌視窗更乾淨。", "系统浏览器打开(复用已登录的 Cline 账号);完成后自动加入列表": "系統瀏覽器開啟(複用已登入的 Cline 帳號);完成後自動加入列表", "系统浏览器打开(复用已登录的 Google 账号);完成后自动加入列表": "系統瀏覽器開啟(複用已登入的 Google 帳號);完成後自動加入列表", "系统浏览器打开(复用已登录的 Zai / Google 账号);完成后自动加入列表": "系統瀏覽器開啟(複用已登入的 Zai / Google 帳號);完成後自動加入列表", "系统浏览器打开(复用已登录的美团账号);完成后自动加入列表": "系統瀏覽器開啟(複用已登入的美團帳號);完成後自動加入列表", "系统浏览器打开(复用已登录账号);完成后自动加入列表": "系統瀏覽器開啟(複用已登入帳號);完成後自動加入列表", "系统默认浏览器": "系統預設瀏覽器", "组织登录地址(Start URL)": "組織登入位址(Start URL)", "继续新建独立提供商": "繼續建立獨立提供商", "续期令牌": "續期權杖", "编码套餐 API Key": "編碼套餐 API Key", "网关 Secret": "閘道器 Secret", "网关未返回有效的手动回调输入契约;请更新网关后重新发起。": "閘道未回傳有效的手動回呼輸入契約;請更新閘道後重新發起。", "网页 Cookie": "網頁 Cookie", "网页登录": "網頁登入", "网页登录 / 填写凭证": "網頁登入 / 填寫憑證", "网页登录的打开方式": "網頁登入的開啟方式", "网页登录(Zai / Google)": "網頁登入(Zai / Google)", "网页访问令牌": "網頁存取權杖", "腾讯 TokenHub 国内版(按量)": "騰訊 TokenHub 國內版(按量)", "腾讯 TokenHub 国内站按量 API;使用 TokenHub API Key,不是 Token Plan 套餐或 WorkBuddy 凭证": "騰訊 TokenHub 國內站按量 API;使用 TokenHub API Key,不是 Token Plan 套餐或 WorkBuddy 憑證", "腾讯 TokenHub 国际版(按量)": "騰訊 TokenHub 國際版(按量)", "腾讯 TokenHub 国际站按量 API;使用 TokenHub API Key,不是 Token Plan 套餐或 WorkBuddy 凭证": "騰訊 TokenHub 國際站按量 API;使用 TokenHub API Key,不是 Token Plan 套餐或 WorkBuddy 憑證", "自定义": "自定義", "自建聚合面板:填你自己的站点地址。余额查询用该账号的 API Key 打 {base}/v1/usage,不需要额外配置": "自建聚合面板:填你自己的站點地址。餘額查詢用該帳號的 API Key 打 {base}/v1/usage,不需要額外配置", "自建聚合面板:填你自己的站点地址;余额查询要另填 NewAPI 的个人访问令牌(见下方「余额查询」一段)": "自建聚合面板:填你自己的站點地址;餘額查詢要另填 NewAPI 的個人存取權杖(見下方「餘額查詢」一段)", "获取风控配置失败,将直接尝试领取:{message}": "獲取風控配置失敗,將直接嘗試領取:{message}", "获取风控配置失败:{message}": "取得風控設定失敗:{message}", "获取验证码": "獲取驗證碼", "要添加到其他站点,请返回「已建 API」重新选择": "要新增到其他網站,請返回「已建 API」重新選擇", "解锁 Premium": "解鎖 Premium", "访客模式": "訪客模式", "访客模式(免登录)": "訪客模式(免登入)", "访问令牌": "存取權杖", "该上游无需鉴权(不发送鉴权头)": "該上游無需鑑權(不傳送鑑權頭)", "该地址已有提供商": "該位址已有提供商", "该提供商": "該提供商", "该提供商已不存在或地址已变更,请重新选择": "該提供商已不存在或位址已變更,請重新選擇", "该提供商已不存在(可能已被删除),请刷新后重试": "該提供商已不存在(可能已被刪除),請重新整理後再試", "该提供商账号添加功能即将上线": "該提供商帳號新增功能即將上線", "该登录需要继续跳转,请在网关桌面面板重新发起。": "此登入仍需繼續跳轉,請於閘道桌面面板重新發起。", "该自定义提供商已不存在(可能已被删除),请刷新后重试": "該自定義提供商已不存在(可能已被刪除),請重新整理後重試", "请使用网页访问令牌,不要填写 sk- 开头的 API Key。": "請使用網頁存取權杖,不要填寫 sk- 開頭的 API Key。", "请先选择一个自定义提供商": "請先選擇一個自定義提供商", "请在弹出的滑块中完成验证(官方要求的风控步骤)": "請在彈出的滑塊中完成驗證(官方要求的風控步驟)", "请在插件打开的专用 Chrome 窗口中登录移动云(yun.139.com)。登录成功后会自动读取并验证凭据,随后继续添加账号。": "請在插件開啟的專用 Chrome 視窗中登入移動雲(yun.139.com)。登入成功後會自動讀取並驗證憑證,隨後繼續新增帳號。", "请在插件打开的端砚控制台窗口中登录(支持密码、短信或扫码)。插件会自动读取登录结果并关闭窗口,无需手动关闭;随后按所选方式创建或复用 API Key。新建密钥的明文只显示一次,由插件保存。": "請在插件開啟的端硯控制台視窗中登入(支援密碼、簡訊或掃碼)。插件會自動讀取登入結果並關閉視窗,無需手動關閉;隨後依所選方式建立或重用 API Key。新金鑰的明文只顯示一次,由插件儲存。", "请在插件打开的端砚控制台窗口中登录(支持密码、短信或扫码),然后退出该浏览器:macOS 请按 Cmd+Q(只关闭窗口不够),Linux 请关闭最后一个窗口。插件读取登录结果后会继续处理,并按所选方式创建或复用 API Key。新建密钥的明文只显示一次,由插件保存。": "請在插件開啟的端硯控制台視窗中登入(支援密碼、簡訊或掃碼),然後結束該瀏覽器:macOS 請按 Cmd+Q(只關閉視窗不夠),Linux 請關閉最後一個視窗。插件讀取登入結果後會繼續處理,並依所選方式建立或重用 API Key。新金鑰的明文只顯示一次,由插件儲存。", "请在系统浏览器完成官方登录。": "請在系統瀏覽器完成官方登入。", "请在运行网关的机器上打开 PowerShell,执行下面的专用登录命令,并按官方提示完成授权。面板会自动检测登录结果,不需要粘贴凭证。": "請在執行閘道的機器上開啟 PowerShell,執行下方的專用登入命令,並依官方提示完成授權。面板會自動偵測登入結果,不需要貼上憑證。", "请在运行网关的机器上打开终端,执行下面的专用登录命令,并按官方提示完成授权。面板会自动检测登录结果,不需要粘贴凭证。": "請在執行閘道的機器上開啟終端機,執行下方的專用登入命令,並依官方提示完成授權。面板會自動偵測登入結果,不需要貼上憑證。", "请填写 11 位大陆手机号": "請填寫 11 位大陸手機號", "请填写 6 位数字验证码": "請填寫 6 位數字驗證碼", "请填写 Base URL": "請填寫 Base URL", "请填写 {label}": "請填寫 {label}", "请填写名称": "請填寫名稱", "请安装并启用对应的提供商插件;列表为空时请刷新后重试。": "請安裝並啟用對應的提供商外掛;清單為空時請重新整理後重試。", "请完成验证…": "請完成驗證…", "请选择客户端凭证文件,或本软件导出的单账号 JSON 文件": "請選擇用戶端憑證檔案,或本軟體匯出的單帳號 JSON 檔案", "读取 %APPDATA%/AutoClaw/auth.json 并解密,仅 Windows": "讀取 %APPDATA%/AutoClaw/auth.json 並解密,僅 Windows", "读取 ~/.cline/data/settings/providers.json,需已在 Cline 客户端登录": "讀取 ~/.cline/data/settings/providers.json,需已在 Cline 客戶端登入", "读取 ~/.meituan-catpaw/auth.json,需已在 CatPaw 客户端登录": "讀取 ~/.meituan-catpaw/auth.json,需已在 CatPaw 客戶端登入", "读取本机 KukuAI 客户端登录态(%APPDATA%\\baidugenflowpro\\Network\\Cookies),需已在 KukuAI 客户端登录": "讀取本機 KukuAI 客戶端登入態(%APPDATA%\\baidugenflowpro\\Network\\Cookies),需已在 KukuAI 客戶端登入", "读取本机 OrcaTerm 客户端登录态(%APPDATA%\\com.orcaterm-desktop.app\\data.bin),需已在 OrcaTerm 客户端登录": "讀取本機 OrcaTerm 客戶端登入態(%APPDATA%\\com.orcaterm-desktop.app\\data.bin),需已在 OrcaTerm 客戶端登入", "读取本机已登录豆包工作客户端的 Cookie,每次请求实时读取;客户端需使用 --remote-debugging-port=9342 启动。本软件不修改、关闭或重启客户端。": "讀取本機已登入豆包工作用戶端的 Cookie,每次請求即時讀取;用戶端需使用 --remote-debugging-port=9342 啟動。本軟體不修改、關閉或重新啟動用戶端。", "读取本机智谱清言客户端登录态(%APPDATA%\\chatglm\\Network\\Cookies),需已在客户端登录": "讀取本機智譜清言客戶端登入態(%APPDATA%\\chatglm\\Network\\Cookies),需已在客戶端登入", "读取的是网关电脑上已登录的客户端,不是打开面板的电脑;也可改用粘贴凭据。": "讀取的是閘道電腦上已登入的用戶端,不是開啟面板的電腦;也可改用貼上憑證。", "读取网关所在机器上 kiro-cli 或 Kiro IDE 的登录态,不是当前浏览器所在电脑的账号;续期后会写回原处。": "讀取閘道所在機器上 kiro-cli 或 Kiro IDE 的登入狀態,不是目前瀏覽器所在電腦的帳號;更新憑證後會寫回原處。", "读取运行网关的电脑上已登录的 QuWork,只保存本机引用,不修改官方客户端文件;切换账号后需重新导入。": "讀取執行閘道的電腦上已登入的 QuWork,僅儲存本機參照,不修改官方用戶端檔案;切換帳號後需重新匯入。", "读本机官方客户端(Tencent WorkBuddy / WorkBuddy AI)当前登录的账号:自动定位其凭证目录里最新的登录态文件(需已在本机官方客户端登录)。导入后由网关自动续期,无需跟随 2 小时时效手动换令牌。": "讀本機官方客戶端(Tencent WorkBuddy / WorkBuddy AI)當前登入的帳號:自動定位其憑證目錄裡最新的登入態檔案(需已在本機官方客戶端登入)。匯入後由閘道器自動續期,無需跟隨 2 小時時效手動換權杖。", "读本机客户端当前登录态(明文 Cookie,无需解密)。客户端运行时 Cookies 文件被独占占用,导入前请先关闭 KukuAI 客户端。": "讀本機客戶端當前登入態(明文 Cookie,無需解密)。客戶端執行時 Cookies 檔案被獨佔佔用,匯入前請先關閉 KukuAI 客戶端。", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。": "讀本機客戶端當前登入態,每次即時讀取(刪掉這條記錄不影響客戶端登入態)。", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。客户端重新登录后点「刷新 Token」同步。": "讀本機客戶端當前登入態,每次即時讀取(刪掉這條記錄不影響客戶端登入態)。客戶端重新登入後點「重新整理 Token」同步。", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。客户端重新登录后重新导入即可。": "讀本機客戶端當前登入態,每次即時讀取(刪掉這條記錄不影響客戶端登入態)。客戶端重新登入後重新匯入即可。", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。用 Zai / Google 登录客户端的用户走这一条。": "讀本機客戶端當前登入態,每次即時讀取(刪掉這條記錄不影響客戶端登入態)。用 Zai / Google 登入客戶端的使用者走這一條。", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。这一条归入 {label}。": "讀本機客戶端當前登入態,每次即時讀取(刪掉這條記錄不影響客戶端登入態)。這一條歸入 {label}。", "读本机客户端当前登录的 OAuth 令牌(明文 JSON,无需解密)。导入后由网关自动续期,无需跟随客户端的 2 小时时效手动换令牌。": "讀本機客戶端當前登入的 OAuth 權杖(明文 JSON,無需解密)。匯入後由閘道器自動續期,無需跟隨客戶端的 2 小時時效手動換權杖。", "读本机客户端当前的登录态。客户端的 Cookies 是 DPAPI 加密的(Chromium os_crypt),因此仅 Windows 可用;客户端正在运行时可能读不到该文件,先退出客户端再试即可(也可改用「填写凭证」粘贴令牌)。": "讀本機客戶端當前的登入態。客戶端的 Cookies 是 DPAPI 加密的(Chromium os_crypt),因此僅 Windows 可用;客戶端正在執行時可能讀不到該檔案,先退出客戶端再試即可(也可改用「填寫憑證」貼上權杖)。", "豆包工作": "豆包工作", "账号信息": "帳號資訊", "账号信息不完整,请刷新后重试": "帳號資訊不完整,請重新整理後重試", "账号名由插件自动获取,添加后可修改。": "帳號名稱由外掛自動取得,新增後可修改。", "账号已添加,但代理选择未确认保存;请在账号设置中重新检查。": "帳號已新增,但代理選擇未確認儲存;請於帳號設定中重新檢查。", "账号已添加,但未返回账号 ID,无法保存登录代理选择。": "帳號已新增,但未回傳帳號 ID,無法儲存登入代理選擇。", "账号已添加,但请留意:{warning}": "帳號已新增,但請留意:{warning}", "账号已添加,但账号列表同步失败,请刷新重试。": "帳號已新增,但帳號清單同步失敗,請重新整理後重試。", "账号文件的提供商与当前选择不一致,请选择对应的提供商后再导入": "帳號檔案的提供商與目前選擇不一致,請選擇對應的提供商後再匯入", "账号版本": "帳號版本", "账号类型": "帳號型別", "账号:{name}
    ": "帳號:{name}
    ", "走 Inference Providers 路由,Key 在 hf.co/settings/tokens 创建": "走 Inference Providers 路由,Key 在 hf.co/settings/tokens 建立", "返回提供商列表": "返回提供商清單", "还没有可用的提供商。各家提供商的转发与账号实现都在插件包里,装好之后这里就会出现。": "還沒有可用的提供商。各家提供商的轉發與帳號實作都在外掛包裡,裝好之後這裡就會出現。", "还没有账号": "還沒有帳號", "还需完成 AWS 授权:请打开下一步授权页,完成后回填新的完整回调地址。": "仍需完成 AWS 授權:請開啟下一步授權頁,完成後貼上新的完整回呼位址。", "还需继续授权,请打开下一步授权页,完成后回填新的完整回调地址。": "仍需繼續授權,請開啟下一步授權頁,完成後貼上新的完整回呼位址。", "这一家当前不支持网页登录,请改用填写凭证": "這一家當前不支援網頁登入,請改用填寫憑證", "这个账号当前没有可自动领的活动(只自动领每日登录赠送积分)": "這個帳號當前沒有可自動領的活動(只自動領每日登入贈送積分)", "这份额度走「活动套餐」通道:若转发时提示编码套餐已到期,": "這份額度走「活動套餐」通道:若轉發時提示編碼套餐已到期,", "这里填国内站(modelscope.cn)的账号:请粘贴国内站的令牌。国际站(modelscope.ai)是另一家 provider、另一套账号,两边的令牌不通用。": "這裡填國內站(modelscope.cn)的帳號:請貼上國內站的權杖。國際站(modelscope.ai)是另一家 provider、另一套帳號,兩邊的權杖不通用。", "这里填国内站(monkeycode-ai.com)的账号:请粘贴国内站的 session。国际站(monkeycode-ai.net)是另一家 provider、另一套账号,两边的凭证不通用。": "這裡填國內站(monkeycode-ai.com)的帳號:請貼上國內站的 session。國際站(monkeycode-ai.net)是另一家 provider、另一套帳號,兩邊的憑證不通用。", "这里填国际站(modelscope.ai)的账号:请粘贴国际站的令牌。国内站(modelscope.cn)是另一家 provider、另一套账号,两边的令牌不通用。": "這裡填國際站(modelscope.ai)的帳號:請貼上國際站的權杖。國內站(modelscope.cn)是另一家 provider、另一套帳號,兩邊的權杖不通用。", "这里填国际站(monkeycode-ai.net)的账号:请粘贴国际站的 session。国内站(monkeycode-ai.com)是另一家 provider、另一套账号,两边的凭证不通用。": "這裡填國際站(monkeycode-ai.net)的帳號:請貼上國際站的 session。國內站(monkeycode-ai.com)是另一家 provider、另一套帳號,兩邊的憑證不通用。", "选择 CatPaw 客户端的登录态文件 auth.json(Windows:C:\\Users\\<你的用户名>\\.meituan-catpaw\\auth.json;macOS / Linux:~/.meituan-catpaw/auth.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端。": "選擇 CatPaw 客戶端的登入態檔案 auth.json(Windows:C:\\Users\\<你的使用者名稱>\\.meituan-catpaw\\auth.json;macOS / Linux:~/.meituan-catpaw/auth.json)。匯入後憑證直接落在閘道器、可獨立轉發,不再依賴本機客戶端。", "选择 Cline 客户端的登录态文件 providers.json(Windows:C:\\Users\\<你的用户名>\\.cline\\data\\settings\\providers.json;macOS / Linux:~/.cline/data/settings/providers.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端;这一条归入 {label}。": "選擇 Cline 客戶端的登入態檔案 providers.json(Windows:C:\\Users\\<你的使用者名稱>\\.cline\\data\\settings\\providers.json;macOS / Linux:~/.cline/data/settings/providers.json)。匯入後憑證直接落在閘道器、可獨立轉發,不再依賴本機客戶端;這一條歸入 {label}。", "选择 KukuAI 客户端的 Cookies 文件(%APPDATA%\\baidugenflowpro\\Network\\Cookies):它是**二进制** SQLite 数据库(无扩展名,不是 JSON)。导入时读的是你选中文件的副本、不和运行中的客户端抢占用,因此**无需先关闭客户端**。导入后凭证直接落在网关、可独立转发。": "選擇 KukuAI 客戶端的 Cookies 檔案(%APPDATA%\\baidugenflowpro\\Network\\Cookies):它是**二進位制** SQLite 資料庫(無副檔名,不是 JSON)。匯入時讀的是你選中檔案的副本、不和執行中的客戶端搶佔用,因此**無需先關閉客戶端**。匯入後憑證直接落在閘道器、可獨立轉發。", "选择 OAuth auth.json 的绝对路径(不扫描其他目录)": "選擇 OAuth auth.json 的絕對路徑(不掃描其他目錄)", "选择凭证文件导入": "選擇憑證檔案匯入", "选择包含 Cookie 的 JSON 对象,或本软件导出的单账号 JSON 文件。导入后可独立使用,不需要持续运行豆包工作客户端。": "選擇包含 Cookie 的 JSON 物件,或本軟體匯出的單帳號 JSON 檔案。匯入後可獨立使用,不需要持續執行豆包工作用戶端。", "选择包含 Tabbit Cookie / JWT 的 JSON 或文本文件;也可以直接粘贴到上方表单。": "選擇包含 Tabbit Cookie / JWT 的 JSON 或文本文件;也可以直接粘貼到上方表單。", "选择包含该提供商凭证的 JSON 文件,或本软件导出的单账号 JSON 文件。导入后凭证保存在网关,可独立使用。": "選擇包含該提供商憑證的 JSON 檔案,或本軟體匯出的單帳號 JSON 檔案。匯入後憑證儲存在閘道,可獨立使用。", "选择官方客户端的登录态凭证文件(workbuddy-desktop.info / workbuddy-desktop-ai.info)或 wb2api 导出的账号 JSON(嵌套 / 扁平形均可)。": "選擇官方客戶端的登入態憑證檔案(workbuddy-desktop.info / workbuddy-desktop-ai.info)或 wb2api 匯出的帳號 JSON(巢狀 / 扁平形均可)。", "选择小浣熊客户端的登录态文件 auth.json(Windows:C:\\Users\\<你的用户名>\\.box-agent\\config\\auth.json;macOS / Linux:~/.box-agent/config/auth.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端。": "選擇小浣熊客戶端的登入態檔案 auth.json(Windows:C:\\Users\\<你的使用者名稱>\\.box-agent\\config\\auth.json;macOS / Linux:~/.box-agent/config/auth.json)。匯入後憑證直接落在閘道器、可獨立轉發,不再依賴本機客戶端。", "选择提供商": "選擇提供商", "选择新增账号或重新授权当前注册": "選擇新增帳號或重新授權目前註冊", "选择的文件不是合法 JSON": "選擇的檔案不是合法 JSON", "选择要添加账号的提供商": "選擇要新增帳號的提供商", "选择预置客户端": "選擇預設客戶端", "重新扫描": "重新掃描", "重新授权所选账号(固定原身份和 clientId)": "重新授權所選帳號(固定原身分與 clientId)", "重新读取提供商": "重新讀取提供商", "鉴权": "鑑權", "阿里云 Token Plan 套餐(国际站)": "阿里雲 Token Plan 套餐(國際站)", "阿里云百炼 Coding 套餐(国内站)": "阿里雲百鍊 Coding 套餐(國內站)", "阿里云百炼 Coding 套餐(国际站)": "阿里雲百鍊 Coding 套餐(國際站)", "阿里云百炼模型服务(国际站,OpenAI 兼容模式)": "阿里雲百鍊模型服務(國際站,OpenAI 相容模式)", "隐藏凭证": "隱藏憑證", "需要图形验证码:登录窗口已弹出,请填写后继续": "需要圖形驗證碼:登入視窗已彈出,請填寫後繼續", "需要手动提交授权回调": "需要手動提交授權回呼", "需要时填写完整 Cookie": "需要時填寫完整 Cookie", "需要进行人机验证": "需要進行人機驗證", "预置 API": "預置 API", "领取 CodeArts 每日福利": "領取 CodeArts 每日福利", "领取失败:{message}": "領取失敗:{message}", "领取并让官方确认": "領取並讓官方確認", "风控验证配置不完整,请稍后重试": "風控驗證配置不完整,請稍後重試", "验证码": "驗證碼", "验证码业务请求超时,请刷新状态后重试": "驗證碼業務請求逾時,請重新整理狀態後重試", "验证码令牌入池接口不可用": "驗證碼權杖入池介面無法使用", "验证码令牌未全部入池": "驗證碼權杖未全部入池", "验证码令牌池未返回状态": "驗證碼權杖池未回傳狀態", "验证码已使用,请重新验证": "驗證碼已使用,請重新驗證", "验证码已发送。收到后填入下方并点「登录并添加」": "驗證碼已傳送。收到後填入下方並點「登入並新增」", "验证码已发送,请查看手机短信": "驗證碼已傳送,請檢視手機簡訊", "验证码已发送,请查看手机短信。填入下方并点「登录并添加」即完成登录": "驗證碼已傳送,請檢視手機簡訊。填入下方並點「登入並新增」即完成登入", "验证码已发送,请查看短信": "驗證碼已傳送,請檢視簡訊", "验证码校验失败,请重试": "驗證碼校驗失敗,請重試", "验证码校验超时,请重试": "驗證碼校驗超時,請重試", "验证码组件不可用,请重试": "驗證碼元件不可用,請重試", "验证码组件初始化超时,请重试": "驗證碼元件初始化超時,請重試", "验证码组件加载失败,请检查网络后重试": "驗證碼元件載入失敗,請檢查網路後重試", "验证码组件加载异常,请重试": "驗證碼元件載入異常,請重試", "验证码组件加载超时,请检查网络后重试": "驗證碼元件載入超時,請檢查網路後重試", "验证码组件未加载,请重启应用后重试": "驗證碼元件未載入,請重啟應用後重試", "验证码组件返回的验证串不完整(请重试)": "驗證碼元件回傳的驗證字串不完整(請重試)", "验证被上游风控拒绝,请稍后重试": "驗證被上游風控拒絕,請稍後重試", "验证请求过于频繁,请稍后重试": "驗證請求過於頻繁,請稍後重試", "默认开启;填 0 关闭(发送「已设为默认浏览器」标记)": "默認開啟;填 0 關閉(發送「已設為默認瀏覽器」標記)", "(免费额度池,模型名带 cline-free/ 前缀)。": "(免費額度池,模型名帶 cline-free/ 字首)。", "(其中 {n} 把恢复为不限制)": "(其中 {n} 把恢復為不限制)", "(必填)": "(必填)", "(有效期 {window})": "(有效期 {window})", "(订阅池,模型名带 cline-pass/ 前缀,需要账号有对应订阅)。": "(訂閱池,模型名帶 cline-pass/ 字首,需要帳號有對應訂閱)。", ",下一次最快 {minutes} 分钟后": ",下一次最快 {minutes} 分鐘後", ",并从 {n} 把 Key 的可用提供商里移除": ",並從 {n} 把 Key 的可用提供商裡移除", " · 思考等级 ": " · 思考等級 ", " · 思考等级 {level}": " · 思考等級 {level}", " · 有映射 ": " · 有對映 ", " · 限额中": " · 限額中", " → 转发": " → 轉發", " 上登记上游模型": " 上登記上游模型", " 与 ": " 與 ", " 个": " 個", " 个模型 · 已启用 ": " 個模型 · 已啟用 ", " 个账号": " 個帳號", " 会广告它、请求它也会被转发到这家。 支持字母、数字与 ": " 會廣告它、請求它也會被轉發到這家。 支援字母、數字與 ", " 失败": " 失敗", " 已发出,等待上游首帧…": " 已發出,等待上游首幀…", " 成功 ·": " 成功 ·", " 这类符号,但不能含空格或换行,且不超过 128 个字符。同一提供商内,同名绑定最多启用一条;已有启用绑定时不能新增,启用备用绑定会自动关闭其他同名绑定。不同提供商可各启用一条同名绑定,用于主备切换。": " 這類符號,但不能含空格或換行,且不超過 128 個字元。同一提供商內,同名繫結最多啟用一條;已有啟用繫結時不能新增,啟用備用繫結會自動關閉其他同名繫結。不同提供商可各啟用一條同名繫結,用於主備切換。", " 里的 ": " 裡的 ", "(全局)": "(全域)", "(未选)": "(未選)", "0 家": "0 家", "<上游模型 ID>": "<上游模型 ID>", "<上游模型>": "<上游模型>", "<对外名>": "<對外名>", "models.dev 补齐:对下游声明 {value}": "models.dev 補齊:對下游宣告 {value}", "{action}映射 {alias}": "{action}對映 {alias}", "{id}({name})": "{id}({name})", "{label}要填 1 ~ 1 亿之间的整数(留空 = {inherit})": "{label}要填 1 ~ 1 億之間的整數(留空 = {inherit})", "{label}:{value}(对下游声明的精确值){origin}{suffix}": "{label}:{value}(對下游宣告的精確值){origin}{suffix}", "{label}:{value}(对下游声明的精确值){suffix}": "{label}:{value}(對下游宣告的精確值){suffix}", "{label}:上游未声明{suffix}": "{label}:上游未宣告{suffix}", "{label}:上游未声明(下游会按不支持处理){suffix}": "{label}:上游未宣告(下游會按不支援處理){suffix}", "{label}:不支持{origin}{suffix}": "{label}:不支援{origin}{suffix}", "{label}:不支持{suffix}": "{label}:不支援{suffix}", "{label}:支持{origin}{suffix}": "{label}:支援{origin}{suffix}", "{label}:支持{suffix}": "{label}:支援{suffix}", "{level}(本次指定)": "{level}(本次指定)", "{name}({id})": "{name}({id})", "{name}(不在该家当前清单里)": "{name}(不在該家當前清單裡)", "{n} 个": "{n} 個", "{n} 个映射": "{n} 個對映", "{n} 个模型": "{n} 個模型", "{n} 字节": "{n} 位元組", "{provider}:模型清单为空,等待获取": "{provider}:模型清單為空,等待取得", "{status}:模型获取失败": "{status}:模型取得失敗", "{total} 家 · 成功 {done}": "{total} 家 · 成功 {done}", "{total} 家 · 成功 {done} · 失败 {failed}": "{total} 家 · 成功 {done} · 失敗 {failed}", "✅ 已保存 {id} 的能力位({provider})": "✅ 已儲存 {id} 的能力位({provider})", "✅ 已导入 {added} 个模型({skipped} 个已存在,跳过)": "✅ 已匯入 {added} 個模型({skipped} 個已存在,跳過)", "✅ 已更新 {name} 的思考等级": "✅ 已更新 {name} 的思考等級", "✅ 已添加映射 {name} → {target}({label}){suffix}": "✅ 已新增對映 {name} → {target}({label}){suffix}", "✅ 已登记 {name}({label}),但该提供商还没有可用账号,这一行要加上账号后才会显示": "✅ 已登記 {name}({label}),但該提供商還沒有可用帳號,這一行要加上帳號後才會顯示", "✅ 已登记模型 {name}({label})": "✅ 已登記模型 {name}({label})", "✅ 已登记自定义模型 {name}({label})": "✅ 已登記自定義模型 {name}({label})", "✅ 批量{action}完成:共 {n} 个模型": "✅ 批次{action}完成:共 {n} 個模型", "✅ 批量{action}完成:共 {n} 个模型(跳过不可删除的 {skipped} 个)": "✅ 批次{action}完成:共 {n} 個模型(跳過不可刪除的 {skipped} 個)", "。": "。", "。上游清单给的值不准时,在这里改;": "。上游清單給的值不準時,在這裡改;", "。同一对外名可在多个提供商各添加一条: 下游用同一个名字请求,网关按账号优先级主备切换,失败自动落到下一个提供商。": "。同一對外名可在多個提供商各新增一條: 下游用同一個名字請求,閘道器按帳號優先順序主備切換,失敗自動落到下一個提供商。", "「恢复继承」会把这一项交还给上游清单的值。": "「恢復繼承」會把這一項交還給上游清單的值。", "「来源」列会标成": "「來源」列會標成", "上下文 / 输出": "上下文 / 輸出", "上下文窗口": "上下文視窗", "上下文窗口 {input} / 最大输出 Token {output} —— 点击修改模型能力": "上下文視窗 {input} / 最大輸出 Token {output} —— 點擊修改模型能力", "上游 {model}": "上游 {model}", "上游不认识这个模型名:先点「获取模型」刷新清单,或核对默认绑定指向的上游模型。": "上游不認識這個模型名:先點「獲取模型」重新整理清單,或核對預設繫結指向的上游模型。", "上游原始响应": "上游原始回應", "上游可用档位:{levels}": "上游可用檔位:{levels}", "上游固定为 {level},绑定其他等级也无法调高。": "上游固定為 {level},綁定其他等級也無法調高。", "上游已经不再提供这个模型(可能已下线或改了 ID)": "上游已經不再提供這個模型(可能已下線或改了 ID)", "上游拒绝了这条登录态:重新登录一次,或把这条账号删掉。": "上游拒絕了這條登入態:重新登入一次,或把這條帳號刪掉。", "上游未声明": "上游未宣告", "上游未声明(下游会按不支持处理)": "上游未宣告(下游會按不支援處理)", "上游未部署": "上游未部署", "上游模型": "上游模型", "上游模型 ID": "上游模型 ID", "上游没在预算内给完回答。可以只勾一个账号再测一次,看是普遍慢还是某一个账号慢。": "上游沒在預算內給完回答。可以只勾一個帳號再測一次,看是普遍慢還是某一個帳號慢。", "上游没有给出可读的错误说明": "上游沒有給出可讀的錯誤說明", "上游没有返回任何模型": "上游沒有返回任何模型", "上游目录列出了这个模型,但推理端尚未识别;保留在清单中,后续探测成功后自动清除标记": "上游目錄列出了這個模型,但推理端尚未識別;保留在清單中,後續探測成功後自動清除標記", "上游目录尚未拉到,用的是内置静态清单;点「刷新模型清单」可重试": "上游目錄尚未拉到,用的是內建靜態清單;點「重新整理模型清單」可重試", "上游能列出这个模型,但官方客户端不展示它;本仓已默认关闭它的默认绑定(点这一行的开关可以手动打开)": "上游能列出這個模型,但官方客戶端不展示它;本倉已預設關閉它的預設綁定(點這一列的開關可以手動打開)", "下游客户端": "下游客戶端", "下游请求 ": "下游請求 ", "不展示": "不展示", "不影响网关的转发与路由": "不影響閘道器的轉發與路由", "不支持": "不支援", "不覆盖": "不覆蓋", "两边原因不一样时各自处理。如果": "兩邊原因不一樣時各自處理。如果", "中止测试": "中止測試", "仅支持已识别压缩格式的 ZCode;客户端修改压缩格式后可能需要更新适配。": "僅支援已識別壓縮格式的 ZCode;用戶端修改壓縮格式後可能需要更新適配。", "仅本次测试临时生效,不修改账号保存的代理配置。可选「网络代理」页里的节点或强制直连。": "僅本次測試臨時生效,不修改帳號儲存的代理設定。可選「網路代理」頁裡的節點或強制直連。", "从这一家的上游拉一份模型清单,勾选要哪些再导入(已添加的不会重复导入)": "從這一家的上游拉一份模型清單,勾選要哪些再匯入(已新增的不會重複匯入)", "代理池响应异常": "代理池回應異常", "以模型本名直发": "以模型本名直髮", "以这个上游模型发一次最小请求,走真实转发链路": "以這個上游模型發一次最小請求,走真實轉發鏈路", "例如 gpt-4o": "例如 gpt-4o", "例如 gpt-5.5-preview": "例如 gpt-5.5-preview", "保存": "儲存", "保存中…": "儲存中…", "保存失败:{message}": "儲存失敗:{message}", "保存映射": "儲存對映", "保存等级": "儲存等級", "倍率": "倍率", "倍率升序": "倍率升序", "倍率升序,点击切换为降序": "倍率升序,點擊切換為降序", "倍率降序": "倍率降序", "倍率降序,点击切换为升序": "倍率降序,點擊切換為升序", "全选当前筛选出的模型(跨分页);再点取消": "全選當前篩選出的模型(跨分頁);再點取消", "全选当前筛选结果": "全選當前篩選結果", "全选未添加": "全選未新增", "全选({n})": "全選({n})", "全部": "全部", "全部删除": "全部刪除", "全部映射": "全部對映", "全部自定义提供商": "全部自定義提供商", "全部({n} 家)": "全部({n} 家)", "共 {n} 家 · 点「获取模型」开始": "共 {n} 家 · 點「獲取模型」開始", "关闭": "關閉", "关闭即中止": "關閉即中止", "关闭后保留规则,所有请求按原模型处理。": "關閉後保留規則,所有請求按原模型處理。", "其余 {n} 个会被跳过。": "其餘 {n} 個會被跳過。", "内置": "內建", "内置提供商": "內建提供商", "内置清单": "內建清單", "再测一次": "再測一次", "删除": "刪除", "删除中…": "刪除中…", "删除入口未就绪,请重试或重启应用": "刪除入口未就緒,請重試或重啟應用", "删除全部未挂载映射": "刪除全部未掛載映射", "删除映射": "刪除對映", "删除映射 {alias}": "刪除對映 {alias}", "删除未挂载的映射": "刪除未掛載的對映", "删除自定义提供商": "刪除自定義提供商", "删除规则 {n}": "刪除規則 {n}", "删除这个自定义提供商(连同名下账号)": "刪除這個自定義提供商(連同名下帳號)", "删除这条映射": "刪除這條對映", "删除选中的模型": "刪除選中的模型", "刷新全部家(逐家打上游)": "重新整理全部家(逐家打上游)", "刷新完成,但没有得到任何结果": "重新整理完成,但沒有得到任何結果", "刷新模型管理页里各提供商的远程模型目录,逐家结果列在弹窗里": "重新整理模型管理頁裡各提供商的遠端模型目錄,逐家結果列在彈窗裡", "刷新清单": "重新整理清單", "加载中…": "載入中…", "勾上它,导入后即进入这家的清单": "勾上它,匯入後即進入這家的清單", "勾几个就并行测几次;默认选队列里最靠前的一个。": "勾幾個就並行測幾次;預設選佇列裡最靠前的一個。", "勾选后可批量操作": "勾選後可批次操作", "压缩模型": "壓縮模型", "压缩路由": "壓縮路由", "压缩路由入口尚未就绪,请刷新页面后重试": "壓縮路由入口尚未就緒,請重新整理頁面後重試", "压缩路由已保存,下次压缩请求生效": "壓縮路由已儲存,下次壓縮請求生效", "压缩路由接口返回了不完整的数据": "壓縮路由介面傳回了不完整的資料", "原始 ID 已作为默认绑定,请直接使用该绑定的开关或等级按钮": "原始 ID 已作為預設繫結,請直接使用該繫結的開關或等級按鈕", "原始 ID 的默认绑定不能删除,请关闭它的开关": "原始 ID 的預設繫結不能刪除,請關閉它的開關", "取消": "取消", "另有 {n} 个非手动登记的模型将被跳过。": "另有 {n} 個非手動登記的模型將被跳過。", "另有 {n} 条别名映射({aliases}),别名不参与本次": "另有 {n} 條別名對映({aliases}),別名不參與本次", "只刷新这一家的模型清单": "只重新整理這一家的模型清單", "只在识别到 ZCode 上下文压缩请求时切换模型,普通对话仍使用原模型。": "只在識別到 ZCode 上下文壓縮請求時切換模型,一般對話仍使用原模型。", "只属于这一家": "只屬於這一家", "可删除 {n} 个(手动登记 / 自定义家);": "可刪除 {n} 個(手動登記 / 自定義家);", "可见": "可見", "可见性": "可見性", "可配思考档位": "可配思考檔位", "同一客户端的来源模型不能重复:{model}": "同一用戶端的來源模型不能重複:{model}", "同一条错误出现在所有账号上": "同一條錯誤出現在所有帳號上", "后端桥不可用": "後端橋不可用", "启用压缩路由": "啟用壓縮路由", "启用后将自动关闭该提供商的其他同名绑定:{bindings}": "啟用後將自動關閉該提供商的其他同名繫結:{bindings}", "启用规则 {n}": "啟用規則 {n}", "回复": "回覆", "固定思考档位": "固定思考檔位", "固定思考档位:{level}": "固定思考檔位:{level}", "图片": "圖片", "图片生成": "圖片生成", "图片生成模型请通过 /v1/images/generations 调用,暂不支持对话测试": "圖片生成模型請透過 /v1/images/generations 呼叫,暫不支援對話測試", "图片编辑": "圖片編輯", "图片识别": "圖片識別", "圆点带内侧描边 = 由 models.dev 补齐;右上角小点 = 你手动覆盖过;虚线圈 = 未声明。悬停某一枚可看逐项出处。": "圓點帶內側描邊 = 由 models.dev 補齊;右上角小點 = 你手動覆蓋過;虛線圈 = 未宣告。懸停某一枚可看逐項出處。", "在 ": "在 ", "填上游真正认识的那个模型 ID(不是给下游用的名字)。登记后它会进入该家的模型清单: 表格里出现这一行、": "填上游真正認識的那個模型 ID(不是給下游用的名字)。登記後它會進入該家的模型清單: 表格裡出現這一行、", "复制": "複製", "多半是上游自己的问题,过一会儿再试。同一个错误出现在所有账号上时,先查模型目录与映射。": "多半是上游自己的問題,過一會兒再試。同一個錯誤出現在所有帳號上時,先查模型目錄與對映。", "失败": "失敗", "失败 {n} 个 · 首个失败:{error}": "失敗 {n} 個 · 首個失敗:{error}", "如果 ZCode 已设置压缩路由,网关看到的是它改写后的模型。建议同一套规则只在一处配置。": "如果 ZCode 已設定壓縮路由,閘道看到的是它改寫後的模型。建議同一套規則只在一處設定。", "完成": "完成", "官方客户端会展示这个模型": "官方客戶端會展示這個模型", "对下游声明的能力(工具调用 / 图片识别 / 视频识别 / 支持思考)—— 点击修改": "對下游宣告的能力(工具呼叫 / 圖片識別 / 影片識別 / 支援思考)—— 點擊修改", "对外名可以是中文、字母、数字与 ": "對外名可以是中文、字母、數字與 ", "对外名可自由命名,允许与上游模型 ID 同名(同名时该上游的原生路由优先,映射作兜底); 支持字母、数字与 ": "對外名可自由命名,允許與上游模型 ID 同名(同名時該上游的原生路由優先,對映作兜底); 支援字母、數字與 ", "对外映射名(下游请求时用)": "對外對映名(下游請求時用)", "对话协议": "對話協定", "对话协议的说明": "對話協定的說明", "对选中的 {n} 个模型执行批量操作": "對選中的 {n} 個模型執行批次操作", "导入失败:{message}": "匯入失敗:{message}", "导入选中的 {n} 个模型": "匯入選中的 {n} 個模型", "将作用于以下模型": "將作用於以下模型", "尚未获取": "尚未獲取", "尚未配置压缩规则,默认使用原模型。": "尚未設定壓縮規則,預設使用原模型。", "尝试 {n} 次": "嘗試 {n} 次", "展开其余 {n} 个模型 ▾": "展開其餘 {n} 個模型 ▾", "工具": "工具", "工具调用": "工具呼叫", "已中止在途测试({n} 个账号)": "已中止在途測試({n} 個帳號)", "已删除 {n} 条未挂载映射": "已刪除 {n} 條未掛載映射", "已刷新": "已重新整理", "已启用": "已啟用", "已启用 {name},其他同名绑定已自动关闭": "已啟用 {name},其他同名繫結已自動關閉", "已填写:对下游声明 {value}": "已填寫:對下游宣告 {value}", "已添加": "已新增", "已等待 {seconds}s": "已等待 {seconds}s", "已覆盖上游值": "已覆蓋上游值", "已覆盖:对下游声明 {value}": "已覆蓋:對下游宣告 {value}", "已选 ": "已選 ", "已选 {picked} 个 · 上游共 {upstream} 个 · 清单已有 {managed} 个": "已選 {picked} 個 · 上游共 {upstream} 個 · 清單已有 {managed} 個", "开始测试": "開始測試", "当前环境不支持代理池": "目前環境不支援代理池", "当前环境不支持读取 API Key": "目前環境不支援讀取 API Key", "当前通道未声明可用档位,映射等级不会注入;请先获取模型目录。": "目前通道未宣告可用檔位,映射等級不會注入;請先取得模型目錄。", "待获取": "待獲取", "思考": "思考", "思考等级": "思考等級", "思考等级 {level}": "思考等級 {level}", "思考等级 {level}(点击修改)": "思考等級 {level}(點擊修改)", "思考等级的注入规则": "思考等級的注入規則", "思考过程({n} 字)": "思考過程({n} 字)", "恢复继承": "恢復繼承", "成功 {ok} 个,失败 {failed} 个": "成功 {ok} 個,失敗 {failed} 個", "所选 API Key 无权调用此模型或提供商": "所選 API Key 無權呼叫此模型或提供商", "所选模型含同一提供商的同名绑定「{id}」,请分别启用,避免相互关闭": "所選模型含同一提供商的同名繫結「{id}」,請分別啟用,避免相互關閉", "所选模型没有共同可用档位,请分别设置或清除绑定。": "所選模型沒有共同可用檔位,請分別設定或清除綁定。", "手动": "手動", "手动登记": "手動登記", "手动登记的上游模型;移除它会直接删掉这条登记": "手動登記的上游模型;移除它會直接刪掉這條登記", "执行{action}": "執行{action}", "批量{action}完成:成功 {ok} 个,失败 {failed} 个": "批次{action}完成:成功 {ok} 個,失敗 {failed} 個", "批量操作": "批次操作", "批量操作 · 已选 {n} 个模型": "批次操作 · 已選 {n} 個模型", "按倍率升序排列": "按倍率升序排列", "按倍率排序": "按倍率排序", "按可见性筛选": "按可見性篩選", "按客户端发送的模型 ID 匹配,支持模型别名和对话路由组;每次只映射一次。": "按用戶端傳送的模型 ID 比對,支援模型別名和對話路由群組;每次只映射一次。", "按所选网关对话协议组装请求并校验响应转换(Chat Completions / Responses / Anthropic Messages)。": "按所選閘道對話協定組裝請求並校驗回應轉換(Chat Completions / Responses / Anthropic Messages)。", "按提供商分组排序,已启用模型优先;未知倍率排在末尾": "按提供商分組排序,已啟用模型優先;未知倍率排在末尾", "按提供商选择": "按提供商選擇", "按状态筛选": "按狀態篩選", "提供商": "提供商", "搜索模型": "搜尋模型", "搜索模型 ID / 名称 / 映射名…": "搜尋模型 ID / 名稱 / 對映名…", "搜索模型 ID / 提供商": "搜尋模型 ID / 提供商", "搜索模型 ID…": "搜尋模型 ID…", "搜索账号…": "搜尋帳號…", "操作": "操作", "支持": "支援", "支持思考": "支援思考", "收起 ▴": "收起 ▴", "放弃尚未保存的压缩路由修改?": "放棄尚未儲存的壓縮路由修改?", "数字带虚线底 = 由 models.dev 补齐;右上角小点 = 你手动覆盖过;— = 未声明。点任意一格可改。": "數字帶虛線底 = 由 models.dev 補齊;右上角小點 = 你手動覆蓋過;— = 未宣告。點任意一格可改。", "新建一个自定义提供商(同时创建它的第一个账号)": "新建一個自定義提供商(同時建立它的第一個帳號)", "映射、思考等级、上下文窗口与工具调用能力在桌面端「模型管理」里改;手机端只做启停。": "對映、思考等級、上下文視窗與工具呼叫能力在桌面版「模型管理」裡改;手機端只做啟停。", "映射「{alias} → {target}」不存在": "對映「{alias} → {target}」不存在", "映射上未绑定思考等级,「跟随映射」等于这次不注入": "對映上未繫結思考等級,「跟隨對映」等於這次不注入", "映射已关闭": "對映已關閉", "映射已关闭,点击启用": "對映已關閉,點擊啟用", "映射已删除": "對映已刪除", "映射已启用": "對映已啟用", "映射已启用,其他同名绑定已自动关闭": "對映已啟用,其他同名繫結已自動關閉", "映射已启用,点击关闭": "對映已啟用,點擊關閉", "映射已绑定思考等级 {level},可用时会优先覆盖本次指定的等级": "映射已綁定思考等級 {level},可用時會優先覆寫本次指定的等級", "暂无模型(请先添加账号)": "暫無模型(請先新增帳號)", "更新日期": "更新日期", "最多可添加 {n} 条压缩规则": "最多可新增 {n} 條壓縮規則", "最大输出 Token": "最大輸出 Token", "有映射": "有對映", "未填写": "未填寫", "未填写(下游按未声明处理)": "未填寫(下游按未宣告處理)", "未声明": "未宣告", "未挂载映射:已删除 {removed} 条,失败 {failed} 条。首个失败:{error}": "未掛載映射:已刪除 {removed} 條,失敗 {failed} 條。首個失敗:{error}", "未挂载的模型映射": "未掛載的模型對映", "未接入": "未接入", "未添加": "未新增", "未知": "未知", "本机网关没有返回结论": "本機閘道器沒有返回結論", "本次没有取到新内容": "本次沒有取到新內容", "本次测试的发送口径": "本次測試的傳送口徑", "来源": "來源", "来源未知": "來源未知", "来源模型": "來源模型", "来源模型和压缩模型不能相同": "來源模型和壓縮模型不能相同", "来自上游目录接口,清单拉取于 {at};刷新失败时保留上一份成功结果": "來自上游目錄介面,清單拉取於 {at};重新整理失敗時保留上一份成功結果", "来自上游目录接口;刷新失败时保留上一份成功结果": "來自上游目錄介面;重新整理失敗時保留上一份成功結果", "桥接调用返回空(本机网关没有响应这次测试)": "橋接呼叫返回空(本機閘道器沒有響應這次測試)", "模型 ID「{id}」在该提供商已有启用绑定,请先关闭它再添加": "模型 ID「{id}」在該提供商已有啟用繫結,請先關閉它再新增", "模型 ID「{id}」已存在,请使用已有模型": "模型 ID「{id}」已存在,請使用已有模型", "模型 ID「{id}」已绑定到此上游模型,请直接使用已有绑定": "模型 ID「{id}」已繫結到此上游模型,請直接使用已有繫結", "模型「{name}」已存在(忽略大小写判重)": "模型「{name}」已存在(忽略大小寫判重)", "模型已移除": "模型已移除", "模型数": "模型數", "模型映射": "模型對映", "模型来源": "模型來源", "模型清单为空:已有可用账号,请点「获取模型」拉取目录": "模型清單為空:已有可用帳號,請點「取得模型」取得目錄", "模型清单已刷新": "模型清單已重新整理", "模型目录刷新不可用,请重新打开面板": "模型目錄更新無法使用,請重新開啟面板", "模型目录刷新结果": "模型目錄更新結果", "模型管理表": "模型管理表", "模型能力": "模型能力", "模型获取失败": "模型取得失敗", "正在刷新…": "正在重新整理…", "正在测 ": "正在測 ", "正在获取…": "正在獲取…", "正在读取压缩路由…": "正在讀取壓縮路由…", "每条映射 = 对外名 → 上游模型;原始 ID 与别名有独立开关,默认绑定永远存在(没有映射时是合成的那条)。": "每條對映 = 對外名 → 上游模型;原始 ID 與別名有獨立開關,預設繫結永遠存在(沒有對映時是合成的那條)。", "没有匹配「{keyword}」的模型": "沒有匹配「{keyword}」的模型", "没有匹配当前筛选的模型": "沒有匹配當前篩選的模型", "没有匹配的模型": "沒有符合的模型", "没有可选的对话模型,请先启用模型和对应账号。": "沒有可選的對話模型,請先啟用模型和對應帳號。", "没有选中任何模型": "沒有選中任何模型", "没有选中的模型": "沒有選中的模型", "流式请求": "流式請求", "流式请求的说明": "流式請求的說明", "测试": "測試", "测试未通过": "測試未通過", "测试模型": "測試模型", "测试结果": "測試結果", "测试节点": "測試節點", "测试节点的说明": "測試節點的說明", "测试账号": "測試帳號", "测试账号的说明": "測試帳號的說明", "添加模型映射": "新增模型對映", "添加自定义模型": "新增自定義模型", "清空": "清空", "清除覆盖,回到上游声明值": "清除覆蓋,回到上游宣告值", "清除这一项(回到未声明)": "清除這一項(回到未宣告)", "清除(不覆盖)": "清除(不覆蓋)", "点击复制:{name}": "點擊複製:{name}", "点右侧「获取模型」从上游拉取这家的模型清单": "點右側「獲取模型」從上游拉取這家的模型清單", "用哪个账号去拉这家的模型清单": "用哪個帳號去拉這家的模型清單", "用户提示词": "使用者提示詞", "用户登记的自定义模型;整份清单只属于这一家": "使用者登記的自定義模型;整份清單隻屬於這一家", "用时 {time}": "用時 {time}", "用时 {time} · 首字 {ttfb}": "用時 {time} · 首字 {ttfb}", "留空则不携带;设置页的提示词模式照常生效": "留空則不攜帶;設定頁的提示詞模式照常生效", "留空用默认问候「你好」": "留空用預設問候「你好」", "的模型合集:每家的清单互相独立,别名也只在自己那家内生效;要改名称 / 协议 / Base URL,到账号页该家账号的「设置」→ 提供商一栏。": "的模型合集:每家的清單互相獨立,別名也只在自己那家內生效;要改名稱 / 協議 / Base URL,到帳號頁該家帳號的「設定」→ 提供商一欄。", "目录模块未就绪": "目錄模組未就緒", "目标使用自身的思考设置或默认值,仍受网关 Key 权限限制;不可用时明确报错,不自动退回原模型。": "目標使用自身的思考設定或預設值,仍受閘道 Key 權限限制;無法使用時明確報錯,不自動退回原模型。", "目标已下线": "目標已下線", "直接移除": "直接移除", "直连(不使用代理)": "直連(不使用代理)", "看的能力声明(": "看的能力宣告(", "真实链路 · 消耗少量额度 · 日志带「测试」标记,不计报表": "真實鏈路 · 消耗少量額度 · 日誌帶「測試」標記,不計報表", "确定删除映射「{alias} → {target}」?": "確定刪除對映「{alias} → {target}」?", "确定删除映射「{alias} → {target}」?它指向的上游模型已不在清单里。": "確定刪除對映「{alias} → {target}」?它指向的上游模型已不在清單裡。", "确定删除映射「{alias} → {target}」?它指向的上游模型已不在清单里。": "確定刪除對映「{alias} → {target}」?它指向的上游模型已不在清單裡。", "确定删除此区域列出的全部 {n} 条未挂载映射?此操作不可撤销,不会删除正常挂载的映射或模型。": "確定刪除此區域列出的全部 {n} 條未掛載映射?此操作無法復原,不會刪除正常掛載的映射或模型。", "确定删除选中的 {count} 个模型登记?删除后 /v1/models 不再广告它们、请求也会被拒。": "確定刪除選中的 {count} 個模型登記?刪除後 /v1/models 不再廣告它們、請求也會被拒。", "确定移除自定义模型「{id}」?这条登记会被直接移除,之后 /v1/models 不再广告它、请求它也会被拒。": "確定移除自定義模型「{id}」?這條登記會被直接移除,之後 /v1/models 不再廣告它、請求它也會被拒。", "确认桌面端还在运行,再重试一次。": "確認桌面版還在執行,再重試一次。", "确认选择": "確認選擇", "社区参考档位,不代表当前上游通道支持;实际以该通道目录为准。": "社群參考檔位,不代表目前上游通道支援;實際以該通道目錄為準。", "社区参考档位:{levels}": "社群參考檔位:{levels}", "移除": "移除", "移除自定义模型": "移除自定義模型", "系统提示词": "系統提示詞", "绑定 {requested},按当前通道将发送 {effective}。": "綁定 {requested},按目前通道將傳送 {effective}。", "绑定在「对外名 → 上游模型」这一条映射上的思考等级(列表照抄 OmniProxy 的手动绑定),选「不覆盖」表示不给这条映射指定等级。它会跟着这条映射注入转发,由承载的那家翻译成自己的档位字段(CatPaw 归并成 low/high/max,Qoder 按模型声明的档位归一)。以下几种情况故意不注入:① off / none(关闭思考)—— 本项目没有安全的表达方式;② 表外的自定义等级(各家能力范围不同,无法判断上游收不收);③ 客户端请求体里已经自己指定了档位(那是更明确的意图,绑定不覆盖);④ 这家上游不认识档位字段(如 WorkBuddy / 小浣熊 / AutoClaw / Cline)。注入与跳过都会写进详细日志。": "繫結在「對外名 → 上游模型」這一條對映上的思考等級(列表照抄 OmniProxy 的手動繫結),選「不覆蓋」表示不給這條對映指定等級。它會跟著這條對映注入轉發,由承載的那家翻譯成自己的檔位欄位(CatPaw 歸併成 low/high/max,Qoder 按模型宣告的檔位歸一)。以下幾種情況故意不注入:① off / none(關閉思考)—— 本專案沒有安全的表達方式;② 表外的自定義等級(各家能力範圍不同,無法判斷上游收不收);③ 客戶端請求體裡已經自己指定了檔位(那是更明確的意圖,繫結不覆蓋);④ 這家上游不認識檔位欄位(如 WorkBuddy / 小浣熊 / AutoClaw / Cline)。注入與跳過都會寫進詳細日誌。", "继承上游": "繼承上游", "继承上游 {value}": "繼承上游 {value}", "继承上游:{value}": "繼承上游:{value}", "网关未返回保存后的提供商记录": "閘道器未返回儲存後的提供商記錄", "网关未返回逐家模型目录刷新结果": "閘道未回傳逐家模型目錄更新結果", "能力": "能力", "自定义 · 全部": "自定義 · 全部", "自定义家": "自定義家", "自定义提供商": "自定義提供商", "自定义提供商的清单": "自定義提供商的清單", "自定义提供商还没有模型:先在左栏选一家,点「添加模型」登记,或「获取上游模型」从上游拉取": "自定義提供商還沒有模型:先在左欄選一家,點「新增模型」登記,或「獲取上游模型」從上游拉取", "自定义模型已移除": "自定義模型已移除", "自定义等级": "自定義等級", "自定义等级…": "自定義等級…", "自定义等级(例如 custom-high)": "自定義等級(例如 custom-high)", "至少选一个测试账号": "至少選一個測試帳號", "节点 {proxy}": "節點 {proxy}", "获取": "獲取", "获取中…": "獲取中…", "获取失败:{message}": "獲取失敗:{message}", "获取模型": "獲取模型", "获取模型 — {name}": "獲取模型 — {name}", "规则 {n}": "規則 {n}", "规则不绑定提供商,压缩模型由其路由配置决定使用哪家提供商。": "規則不綁定提供商,壓縮模型由其路由設定決定使用哪家提供商。", "视频": "影片", "视频识别": "影片識別", "设置 / 清除会应用到选中模型的": "設定 / 清除會應用到選中模型的", "设置思考等级": "設定思考等級", "设置思考等级后,会覆盖下游请求中的等级;选择“不覆盖”则保留下游参数。实际档位以提供商支持范围为准,无法注入时保留原请求并记录原因。off / none 仍不由映射注入。": "設定思考等級後,會覆寫下游請求中的等級;選擇「不覆寫」則保留下游參數。實際檔位以提供商支援範圍為準,無法注入時保留原請求並記錄原因。off / none 仍不由映射注入。", "设置思考等级(当前未绑定)": "設定思考等級(當前未繫結)", "该提供商已不存在(可能已被删除),请刷新列表": "該提供商已不存在(可能已被刪除),請重新整理列表", "该提供商当前没有可选的上游模型": "該提供商當前沒有可選的上游模型", "该提供商没有可用账号(要在账号页启用一个、且凭证完整),一行都发不出去": "該提供商沒有可用帳號(要在帳號頁啟用一個、且憑證完整),一行都發不出去", "该提供商的清单里没有模型「{name}」": "該提供商的清單裡沒有模型「{name}」", "该等级无法注入,请选择上游可用档位或清除绑定。": "該等級無法注入,請選擇上游可用檔位或清除綁定。", "该行当前未启用:测试照常按本名直发(「先测通、再决定要不要启用」正是这颗按钮的用法),但本行的思考等级绑定不参与本次,生产路由也要等绑定打开后才会放行": "該行當前未啟用:測試照常按本名直髮(「先測通、再決定要不要啟用」正是這顆按鈕的用法),但本行的思考等級繫結不參與本次,生產路由也要等繫結開啟後才會放行", "该账号对这个模型正在限额冷却,等一会儿自己会好;也可以先测别的账号。": "該帳號對這個模型正在限額冷卻,等一會兒自己會好;也可以先測別的帳號。", "说明": "說明", "请先选择一把 API Key": "請先選擇一把 API Key", "请填写上游模型 ID": "請填寫上游模型 ID", "请填写对外映射名": "請填寫對外對映名", "请填写模型 ID": "請填寫模型 ID", "请填写自定义思考等级,或改选候选档 / 「清除」": "請填寫自定義思考等級,或改選候選檔 / 「清除」", "请完整选择来源模型和压缩模型": "請完整選擇來源模型和壓縮模型", "请选择受支持的客户端": "請選擇支援的用戶端", "请选择提供商": "請選擇提供商", "读取模型清单失败:{message}": "讀取模型清單失敗:{message}", "账号 ": "帳號 ", "跟随映射(当前 {level})": "跟隨對映(當前 {level})", "跟随映射(未绑定等级)": "跟隨對映(未繫結等級)", "跟随映射(该行未启用,本次不注入)": "跟隨對映(該行未啟用,本次不注入)", "跟随账号配置": "跟隨帳號設定", "跳过": "跳過", "转发到上游模型": "轉發到上游模型", "还没有可刷新的提供商:先在账号页添加一个账号": "還沒有可重新整理的提供商:先在帳號頁新增一個帳號", "还没有自定义提供商": "還沒有自定義提供商", "这一行已不在当前清单里(模型被移除、或目录刷新后上游不再提供它)。关闭后刷新列表再试。": "這一行已不在當前清單裡(模型被移除、或目錄重新整理後上遊不再提供它)。關閉後重新整理列表再試。", "这个模型仍在承载它的提供商清单里,但那一家的模型行当前没有出现(例如该家没有可用账号)": "這個模型仍在承載它的提供商清單裡,但那一家的模型行當前沒有出現(例如該家沒有可用帳號)", "这个模型在官方客户端里是否会被展列;不展示的那些默认已关闭(含默认绑定)": "這個模型在官方客戶端裡是否會被展列;不展示的那些預設已關閉(含預設綁定)", "这个模型已经在这家的清单里,不重复导入": "這個模型已經在這家的清單裡,不重複匯入", "这个模型的图片能力(图片生成 / 图片编辑)—— 点击修改": "這個模型的圖片能力(圖片生成 / 圖片編輯)—— 點擊修改", "这些映射指向的上游模型已不在当前清单里,挂不到任何模型行上:它们不会出现在 /v1/models,用对应别名发请求也会失败。删除后该对外名即可重新使用。": "這些對映指向的上游模型已不在當前清單裡,掛不到任何模型行上:它們不會出現在 /v1/models,用對應別名發請求也會失敗。刪除後該對外名即可重新使用。", "这些映射指向的上游模型已不在当前清单里,用对应别名发请求会失败。可以在这里删除,删掉后该对外名即可重新使用。": "這些對映指向的上游模型已不在當前清單裡,用對應別名發請求會失敗。可以在這裡刪除,刪掉後該對外名即可重新使用。", "这几项是给": "這幾項是給", "这家提供商没有可见性判据(目前只有 Antigravity / Qoder / 小浣熊 / CodeArts 有)": "這家提供商沒有可見性判據(目前只有 Antigravity / Qoder / 小浣熊 / CodeArts 有)", "这家有可见性判据,但这一条上游没有表态 —— 按可见处理": "這家有可見性判據,但這一條上游沒有表態 —— 按可見處理", "这家没有可用账号(要在账号页启用一个、且凭证完整)": "這家沒有可用帳號(要在帳號頁啟用一個、且憑證完整)", "这家用固定模型清单,无可刷新": "這家用固定模型清單,無可重新整理", "这家的模型清单是全局的,不跟账号走": "這家的模型清單是全域的,不跟帳號走", "这家的清单是你自己登记的,不填的项下游按未声明处理。": "這家的清單是你自己登記的,不填的項下游按未宣告處理。", "这家还没有可用账号,刷新会使用默认登录态": "這家還沒有可用帳號,重新整理會使用預設登入態", "这家还没有模型:点「添加模型」登记,或「获取上游模型」从上游拉取": "這家還沒有模型:點「新增模型」登記,或「獲取上游模型」從上游拉取", "这是模型自己能配的档位(来自上游目录),只读;要改某一档请到映射弹窗里选。": "這是模型自己能配的檔位(來自上游目錄),只讀;要改某一檔請到對映彈窗裡選。", "这条登记(不像内置模型那样只是隐藏),因为它的存在完全由这次登记决定。": "這條登記(不像內建模型那樣只是隱藏),因為它的存在完全由這次登記決定。", "这里是": "這裡是", "远程": "遠端", "远程目录": "遠端目錄", "远程目录已更新,「来源」列会显示为「远程」": "遠端目錄已更新,「來源」列會顯示為「遠端」", "适用客户端": "適用用戶端", "选一个账号(至少一个)": "選一個帳號(至少一個)", "选中的模型都不是手动登记,无法删除(开关映射才是它们的手段)": "選中的模型都不是手動登記,無法刪除(開關對映才是它們的手段)", "选中的都不是手动登记的模型,删除不可用(上游目录带回来的行由清单决定存在性)": "選中的都不是手動登記的模型,刪除不可用(上游目錄帶回來的行由清單決定存在性)", "重新获取": "重新獲取", "重新读取会丢弃当前草稿,确定继续?": "重新讀取會捨棄目前的草稿,確定繼續?", "重试": "重試", "错误详情": "錯誤詳情", "默认": "預設", "默认开,与真实请求一致:可同时验证 SSE 链路与首字延迟。": "預設開,與真實請求一致:可同時驗證 SSE 鏈路與首字延遲。", "默认档位:{level}": "預設檔位:{level}", "默认绑定": "預設繫結", "({label})": "({label})", "({provider})": "({provider})", "(上游这一次返回了空正文)": "(上游這一次返回了空正文)", "(中间共尝试 {n} 次)": "(中間共嘗試 {n} 次)", "(已禁用)": "(已停用)", "(已被手动覆盖,弹窗里可恢复继承)": "(已被手動覆蓋,彈窗裡可恢復繼承)", "(手动设定)": "(手動設定)", "(由 models.dev 补齐)": "(由 models.dev 補齊)", "(登记后即可用这个名字请求)": "(登記後即可用這個名字請求)", "(续)": "(續)", "(默认 ": "(預設 ", "(默认绑定与别名 chips);「清除」= 不给这些映射指定等级(选「不覆盖」的口径与映射弹窗一致)": "(預設繫結與別名 chips);「清除」= 不給這些對映指定等級(選「不覆蓋」的口徑與對映彈窗一致)", ")": ")", "),下游按它们决定发不发图片、按多大的窗口堆历史。": "),下游按它們決定發不發圖片、按多大的視窗堆歷史。", "+ 新建自定义提供商": "+ 新建自定義提供商", "+ 映射": "+ 對映", "+ 添加压缩规则": "+ 新增壓縮規則", "+ 添加模型": "+ 新增模型", "+等级": "+等級", ",与远程目录 / 内置清单区分开。删除自定义模型是": ",與遠端目錄 / 內建清單區分開。刪除自定義模型是", ",已完成 ": ",已完成 ", ",跳过 {n} 个": ",跳過 {n} 個", ",通常就不是账号问题了:先确认这个模型还在上游目录里(「获取模型」刷一次),再看默认绑定指向的上游模型对不对。": ",通常就不是帳號問題了:先確認這個模型還在上游目錄裡(「獲取模型」刷一次),再看預設繫結指向的上游模型對不對。", ":": ":", ":这里的模型不会出现在其他家,别名也只在这一家内生效。改名称 / 协议 / Base URL 在账号页该家账号的「设置」→ 提供商一栏;整家不要了,鼠标移到左栏这家上点 × 删除(连同名下账号)。": ":這裡的模型不會出現在其他家,別名也只在這一家內生效。改名稱 / 協議 / Base URL 在帳號頁該家帳號的「設定」→ 提供商一欄;整家不要了,滑鼠移到左欄這家上點 × 刪除(連同名下帳號)。", ";其中 {keys} 由 models.dev 补齐": ";其中 {keys} 由 models.dev 補齊", ";首个失败:{error}": ";首個失敗:{error}", "{account} · 账号设置": "{account} · 帳號設定", "{account} 参与本路由": "{account} 參與本路由", "{account} 尝试失败后切换到此账号": "{account} 嘗試失敗後切換到此帳號", "{available} 可用 · {blocked} 跳过": "{available} 可用 · {blocked} 跳過", "{clients} 的标题请求": "{clients} 的標題請求", "{client} 的上下文压缩请求": "{client} 的上下文壓縮請求", "{client} 的压缩请求": "{client} 的壓縮請求", "{client} 的标题请求": "{client} 的標題請求", "{models} 看不了图时": "{models} 看不了圖時", "{model} 参与本路由": "{model} 參與本路由", "{model} 有独立配置": "{model} 有獨立配置", "{name} · 提供商路由设置": "{name} · 提供商路由設定", "{name} 已{state}": "{name} 已{state}", "{name} 的账号顺序已调整": "{name} 的帳號順序已調整", "{n} 个候选": "{n} 個候選", "{n} 个参与账号": "{n} 個參與帳號", "{n} 个启用且参与的账号": "{n} 個啟用且參與的帳號", "{n} 个客户端": "{n} 個客戶端", "{n} 个提供商": "{n} 個提供商", "{n} 个模型限流": "{n} 個模型限流", "{n} 个请求": "{n} 個請求", "{n} 个账号 · {on} 启用 · {off} 禁用": "{n} 個帳號 · {on} 啟用 · {off} 停用", "{n} 个账号已折叠": "{n} 個帳號已摺疊", "{n} 个跳过": "{n} 個跳過", "{n} 在途": "{n} 在途", "{n} 处未保存": "{n} 處未儲存", "{n} 已完成": "{n} 已完成", "{n} 条": "{n} 條", "{n} 条活跃绑定": "{n} 筆有效綁定", "{n} 条请求没有会话标识,未计入会话数量。": "{n} 條請求沒有會話標識,未計入會話數量。", "{n} 条账号路径": "{n} 條帳號路徑", "{n} 次": "{n} 次", "{n} 项参与": "{n} 項參與", "{paths} 条路径 · {sessions} 个会话": "{paths} 條路徑 · {sessions} 個會話", "{providers} 个提供商 / {accounts} 个账号": "{providers} 個提供商 / {accounts} 個帳號", "{providers} 个提供商 · {accounts} 个参与账号": "{providers} 個提供商 · {accounts} 個參與帳號", "{provider} 参与本路由": "{provider} 參與本路由", "{selected} / {total} 个账号参与": "{selected} / {total} 個帳號參與", "{selected} / {total} 个账号启用": "{selected} / {total} 個帳號啟用", "{time} 后恢复": "{time} 後恢復", "一个路由组最多允许 {n} 个成员": "一個路由群組最多允許 {n} 個成員", "一条历史路径": "一條歷史路徑", "上游已响应": "上游已響應", "上游请求已发出": "上游請求已送出", "上游调用": "上游呼叫", "下一条请求": "下一條請求", "下一条请求将走": "下一條請求將走", "不参与": "不參與", "不按余额排序": "不依餘額排序", "不按到期排序": "不按到期排序", "与账号页共用全局消耗规则": "與帳號頁共用全域消耗規則", "与账号页共用:{rules}。积分到期等规则直接影响网关实际选路。": "與帳號頁共用:{rules}。積分到期等規則直接影響閘道器實際選路。", "为什么没有调用": "為什麼沒有呼叫", "为什么选择它": "為什麼選擇它", "为压缩请求指定模型": "為壓縮請求指定模型", "五分钟没有往来即释放;客户端会话标识优先,内容哈希兜底。": "五分鐘沒有往來即釋放;優先使用用戶端工作階段識別碼,無識別碼時使用內容雜湊。", "仅保留最后承载信息,尝试明细未记录": "僅保留最後承載資訊,嘗試明細未記錄", "仅允许指定提供商": "僅允許指定提供商", "仅列出真实目录中的对话模型,不自动更改模型映射。": "僅列出真實目錄中的對話模型,不自動更改模型對映。", "仅加入的参与": "僅加入的參與", "仅勾选的参与": "僅勾選的參與", "仅历史": "僅歷史", "仅在途": "僅在途", "仅展示已发生的请求,不表示当前可选": "僅展示已發生的請求,不表示當前可選", "仅影响此路由的后续请求": "僅影響此路由的後續請求", "仅看选中路径": "僅看選中路徑", "仅筛选右侧账号列表,不改变路由配置。": "僅篩選右側帳號清單,不改變路由設定。", "仍保留配置,账号可继续用于其他路由。": "仍保留配置,帳號可繼續用於其他路由。", "仍然保存": "仍然儲存", "从上到下就是选路顺序": "從上到下就是選路順序", "从当前视图移除": "從目前檢視移除", "从现有模型中创建独立配置,自动列出提供它的全部提供商;之后的修改只跟随这个模型。": "從現有模型建立獨立設定,自動列出提供該模型的所有提供商;之後的修改只套用於這個模型。", "以下 {n} 个账号原本被全局路由排除。确认后会将它们设为禁用,所有路由都不能再选用;原有独立路由的参与名单保留。": "以下 {n} 個帳號原本被全域路由排除。確認後會將它們設為停用,所有路由都不能再選用;原有獨立路由的參與名單保留。", "优先使用队首账号,不可用时顺延。": "優先使用佇列首位帳號,無法使用時順延。", "优先尝试": "優先嚐試", "优先级:{rules};前一项相同才比较后一项。": "優先級:{rules};前一項相同才比較後一項。", "会话": "會話", "会话最长保持六小时无往来;可以随时在会话粘滞中解除。": "工作階段最多保留六小時無往來;可以隨時在工作階段黏著中解除。", "会话来源": "工作階段來源", "会话标识": "會話標識", "会话标识 {id} · 来源 {source}": "會話標識 {id} · 來源 {source}", "会话标识未记录,不将此请求推断为独立会话。": "會話標識未記錄,不將此請求推斷為獨立會話。", "会话活动": "會話活動", "会话粘住": "工作階段黏著命中", "会话粘滞": "工作階段黏著", "会话粘滞 {mode}": "會話粘滯 {mode}", "会话粘滞改为{value}": "會話粘滯改為{value}", "位置 = 顺位": "位置 = 順位", "低成本模型": "低成本模型", "作用范围": "作用範圍", "例如:日常省钱": "例如:日常省錢", "供继承全局的模型使用": "供繼承全域的模型使用", "保存": "儲存", "保存中…": "儲存中…", "保存仅影响后续选路,历史快照与在途请求不改写。": "儲存僅影響後續選路,歷史快照與在途請求不改寫。", "保存全局路由": "儲存全域路由", "保存后仅用于后续请求,不改变历史快照或在途请求。": "儲存後僅用於後續請求,不改變歷史快照或在途請求。", "保存后只影响后续请求": "儲存後隻影響後續請求", "保存后才会影响真实请求": "儲存後才會影響真實請求", "保存响应不完整,请刷新当前配置确认结果": "儲存響應不完整,請重新整理當前配置確認結果", "保存当前配置": "儲存當前配置", "保存模型路由": "儲存模型路由", "保存的尝试明细中没有这次调用": "儲存的嘗試明細中沒有這次呼叫", "保存空路由": "儲存空路由", "保存规则": "儲存規則", "保存路由": "儲存路由", "保存路由后,在客户端填写此模型 ID。密钥使用你自己的网关 Key。": "儲存路由後,在客戶端填寫此模型 ID。金鑰使用你自己的閘道器 Key。", "保护设置由所有模型共用;模型独立配置可覆盖参与范围、顺序、策略与粘滞。": "保護設定由所有模型共用;模型獨立配置可覆蓋參與範圍、順序、策略與粘滯。", "修改后影响继承全局的模型": "修改後影響繼承全域的模型", "修改范围以「编辑范围」为准": "修改範圍以「編輯範圍」為準", "候选": "候選", "候选 {n}": "候選 {n}", "候选 · {name}": "候選 · {name}", "候选与跳过": "候選與跳過", "候选与跳过清单各最多保存十二项;这里只回放当时保存的快照,不用当前队列重算。": "候選與跳過清單各最多儲存十二項;這裡只回放當時儲存的快照,不用當前佇列重算。", "候选与跳过清单各最多保存十二项;重试和跨账号切换见尝试明细。": "候選與略過清單各最多儲存十二項;重試與跨帳號切換請見嘗試明細。", "候选和跳过清单各最多保存十二项,超出部分不绘制。": "候選和跳過清單各最多儲存十二項,超出部分不繪製。", "候选快照中有此账号,但保存的尝试明细未显示它被调用": "候選快照中有此帳號,但儲存的嘗試明細未顯示它被呼叫", "候选快照仅保存部分记录,未保存的账号无法回放": "候選快照僅儲存部分記錄,未儲存的帳號無法重播", "候选筛选": "候選篩選", "候选规模": "候選規模", "候选账号": "候選帳號", "候选顺序": "候選順序", "停用后保留卡片与账号,方便随时恢复;不会全局禁用提供商。": "停用後保留卡片與帳號,方便隨時恢復;不會在全域停用提供商。", "停用后保留卡片与账号;自动参与不会重新启用明确停用的提供商。": "停用後保留卡片與帳號;自動參與不會重新啟用明確停用的提供商。", "停用此提供商": "停用此提供商", "停用路由提供商": "停用路由提供商", "允许参与的提供商": "允許參與的提供商", "先处理凭证、限额或参与范围。": "先處理憑證、限額或參與範圍。", "先尝试当前路由内的视觉模型,不可用时再按顺序尝试指定模型;指定模型可跨路由池。": "先嘗試目前路由內的視覺模型,不可用時再按順序嘗試指定模型;指定模型可跨路由池。", "先读图再交回": "先讀圖再交回", "全局": "全域", "全局保护设置": "全域保護設定", "全局修改影响继承它的模型;独立模型配置不变。": "全域修改影響繼承它的模型;獨立模型配置不變。", "全局修改影响继承的设置;模型已独立设置的项目保持不变。": "全域修改影響繼承的設定;模型已獨立設定的專案保持不變。", "全局参与范围": "全域參與範圍", "全局顺序与账号页联动,修改即时保存。": "全域順序與帳號頁連動,修改即時儲存。", "全局默认": "全域預設", "全局默认供继承的模型使用;给某个模型单独配置后,它就不再跟随全局。": "全域預設供繼承的模型使用;給某個模型單獨配置後,它就不再跟隨全域。", "全部候选": "全部候選", "全部模型(窗口内没有请求)": "全部模型(視窗內沒有請求)", "全部禁用": "帳號全數停用", "全部移出": "全部移出", "全部移出本路由": "全部移出本路由", "全部自动参与": "全部自動參與", "全部解除": "全部解除", "全部请求": "全部請求", "全部路径": "全部路徑", "共 {n} 个可添加的模型": "共 {n} 個可新增的模型", "共 {n} 条路由回放": "共 {n} 筆路由重播", "共尝试 {total} 次,保存了 {saved} 条明细": "共嘗試 {total} 次,儲存了 {saved} 筆明細", "关联与在途优先": "關聯與在途優先", "关联请求路径": "關聯請求路徑", "关闭": "關閉", "其他候选": "其他候選", "其他客户端": "其他客戶端", "其他账号已完成请求,没有继续调用这个候选": "其他帳號已完成請求,沒有繼續呼叫這個候選", "内容哈希": "內容雜湊", "内容哈希(推断)": "內容雜湊(推斷)", "内部重试不会增加账号切换节点。": "內部重試不會增加帳號切換節點。", "决定后续请求用谁、按什么顺序,以及是否沿用会话账号。": "決定後續請求用誰、按什麼順序,以及是否沿用會話帳號。", "冷却中": "冷卻中", "切换 {n} 次": "切換 {n} 次", "切换后,原本不在名单内的可用提供商也会参与转发。明确停用的提供商和排除的账号不会恢复。": "切換後,原本不在名單內的可用提供商也會參與轉送。明確停用的提供商和排除的帳號不會恢復。", "切换模型后,右侧只展示该模型的提供商与账号路由。": "切換模型後,右側只顯示該模型的提供商與帳號路由。", "列表内容": "列表內容", "创建独立配置": "建立獨立設定", "创建草稿": "建立草稿", "删除后此入口将不再接受请求。不会删除成员模型、提供商或账号。": "刪除後此入口將不再接受請求。不會刪除成員模型、提供商或帳號。", "删除后这个模型会重新跟随全局配置,已保存的独立设置和当前未保存修改都会被移除。": "刪除後這個模型會重新跟隨全域配置,已儲存的獨立設定和當前未儲存修改都會被移除。", "删除独立路由": "刪除獨立路由", "删除独立配置": "刪除獨立配置", "删除规则": "刪除規則", "删除路由组": "刪除路由組", "判断": "判斷", "刷新请求记录": "重新整理請求記錄", "刷新路由": "重新整理路由", "刷新预演": "重新整理預演", "加入": "加入", "加入路由": "加入路由", "历史只读,不影响当前配置": "歷史只讀,不影響當前配置", "历史只读,当前配置的修改不会改变这条请求的快照。": "歷史只讀,當前配置的修改不會改變這條請求的快照。", "历史快照保留了 {shown} / {total} 个候选明细,其余未记录。": "歷史快照保留了 {shown} / {total} 個候選明細,其餘未記錄。", "历史承载账号当前不可用": "歷史承載帳號當前不可用", "历史日期": "歷史日期", "历史记录": "歷史記錄", "压缩上下文": "壓縮上下文", "压缩模型": "壓縮模型", "压缩请求": "壓縮請求", "原因": "原因", "原始报文在请求详情里,这里只看选路过程。": "原始報文在請求詳情裡,這裡只看選路過程。", "原模型": "原模型", "原模型继续回答": "原模型繼續回答", "去账号页添加": "去帳號頁新增", "参与": "參與", "参与当前视图转发": "參與目前檢視的轉送", "参与方式": "參與方式", "参与方式改为{value}": "參與方式改為{value}", "参与本路由": "參與本路由", "参与范围": "參與範圍", "参与范围与顺序独立保存;策略和粘滞可分别继承全局。": "參與範圍與順序獨立儲存;策略和粘滯可分別繼承全域。", "参与账号": "參與帳號", "参与路由": "參與路由", "参与路由的账号": "參與路由的帳號", "参与转发": "參與轉發", "参与顺序": "參與順序", "发生切换": "發生切換", "取消": "取消", "取消勾选只排除当前范围,不会在账号页全局禁用账号。": "取消勾選只排除當前範圍,不會在帳號頁全域停用帳號。", "取消选中": "取消選中", "只从当前路由移出,保留模型和账号配置;不会改变其他路由。": "只從當前路由移出,保留模型和帳號配置;不會改變其他路由。", "只从当前路由视图移除,不删除提供商或账号,也不改变其他模型的独立配置。": "只從目前路由檢視移除,不刪除提供商或帳號,也不改變其他模型的獨立設定。", "只修改全局参与范围,不改变账号排序、模型开关或模型独立路由;网关 Key 权限与限流仍然生效。": "只修改全域參與範圍,不改變帳號排序、模型開關或模型獨立路由;閘道器 Key 權限與流量限制仍然生效。", "只列出当前模型已有启用绑定的提供商;这里只设置路由,不新建模型绑定。": "只列出目前模型已有啟用綁定的提供商;這裡只設定路由,不建立新的模型綁定。", "只影响这个路由成员,不改变账号启用状态,也不影响其他模型。新增账号需要手动加入。": "隻影響這個路由成員,不改變帳號啟用狀態,也不影響其他模型。新增帳號需要手動加入。", "只改写被识别为标题生成的小请求,普通对话不受影响。": "只改寫被識別為標題生成的小請求,一般對話不受影響。", "只有加入的提供商参与,新增提供商需要手动加入。": "只有加入的提供商參與,新增提供商需要手動加入。", "只有勾选的提供商参与;以后新增的提供商需要在这里勾选。": "只有勾選的提供商參與;以後新增的提供商需要在這裡勾選。", "只有名单内的提供商可以参与;新增提供商不会自动加入。": "只有名單內的提供商可以參與;新增提供商不會自動加入。", "只看用过这个模型的客户端与账号。点一条看它当时是怎么选的。": "只看用過這個模型的客戶端與帳號。點一條看它當時是怎麼選的。", "只看这个客户端经过的模型与账号。点一条看它当时是怎么选的。": "只看這個客戶端經過的模型與帳號。點一條看它當時是怎麼選的。", "只看这个提供商下参与路由的账号。点一条看它当时是怎么选的。": "只看這個提供商下參與路由的帳號。點一條看它當時是怎麼選的。", "只看这个账号承接的请求。点一条看完整的选路过程。": "只看這個帳號承接的請求。點一條看完整的選路過程。", "只看这条路径上的请求。点一条看完整的选路过程。": "只看這條路徑上的請求。點一條看完整的選路過程。", "只移出本路由,账号状态和其他路由不变;保存后此入口将没有可用路由。": "只移出本路由,帳號狀態和其他路由不變;儲存後此入口將沒有可用路由。", "只读预演,不会推进轮转;保存后才会影响真实请求。": "只讀預演,不會推進輪轉;儲存後才會影響真實請求。", "可以保存空路由,但请求会明确失败,不会回退全局。": "可以儲存空路由,但請求會明確失敗,不會回退全域。", "可以跨提供商、跨模型多选。同一提供商也可以加入不同模型。": "可以跨提供商、跨模型多選。同一提供商也可以加入不同模型。", "可用候选": "可用候選", "可用待命": "可用待命", "可用账号按请求轮换;开启会话粘性时同一会话优先留在原账号。": "可用帳號按請求輪替;啟用工作階段黏著時,同一工作階段優先保留在原帳號。", "右侧面板内容": "右側面板內容", "同一会话优先保持模型与账号,不可用时才顺延。": "同一會話優先保持模型與帳號,不可用時才順延。", "同一模型,选择不同提供商": "同一模型,選擇不同提供商", "同号重试 {n} 次": "同號重試 {n} 次", "同账号内部重试": "同帳號內部重試", "后备账号": "備用帳號", "后过期": "後到期", "否": "否", "含图片": "含圖片", "启用": "啟用", "启用 {provider} 的账号": "啟用 {provider} 的帳號", "启用全部账号": "啟用全部帳號", "启用当前列表账号": "啟用目前清單中的帳號", "启用提供商中的第 {rank} 顺位;当前可用候选第 {effective} 顺位。": "啟用提供商中的第 {rank} 順位;目前可用候選第 {effective} 順位。", "启用提供商中的第 {rank} 顺位;当前没有可用候选账号。": "啟用提供商中的第 {rank} 順位;目前沒有可用候選帳號。", "启用规则": "啟用規則", "启用账号 {account}": "啟用帳號 {account}", "命中 {n} 次": "命中 {n} 次", "命中下面规则的上下文压缩请求,会改用指定的模型压缩一次;账号仍按新模型自己的路由挑。": "命中下面規則的上下文壓縮請求,會改用指定的模型壓縮一次;帳號仍按新模型自己的路由挑。", "命中会话粘性,沿用原账号完成请求": "命中會話粘性,沿用原帳號完成請求", "命中会话粘滞": "命中工作階段黏著", "命中这条规则的压缩请求会改用「压缩模型」重发一次;改写之后按新模型自己的路由挑账号。": "命中這條規則的壓縮請求會改用「壓縮模型」重發一次;改寫之後按新模型自己的路由挑帳號。", "命中配置": "命中配置", "响应到达": "響應到達", "响应到达后": "回應抵達後", "响应完成": "響應完成", "回放中": "回放中", "回放保持不变": "回放保持不變", "回放步骤": "回放步驟", "回答": "回答", "固定这条请求": "固定這條請求", "在工作台查看": "在工作臺檢視", "在途 + 近期": "在途 + 近期", "在途 {n} / {limit}": "在途 {n} / {limit}", "在途时长": "在途時長", "在途请求 / 并发上限": "處理中請求 / 同時處理上限", "备选按顺序尝试;一个都不加时,当前路由内找不到视觉模型就停止并说明原因。": "備選按順序嘗試;一個都不加時,當前路由內找不到視覺模型就停止並說明原因。", "复制失败,请手动选择并复制": "複製失敗,請手動選擇並複製", "复制网关地址": "複製閘道器網址", "失败原因未记录": "失敗原因未記錄", "失败后备选": "失敗後備選", "失败时": "失敗時", "失败时直接报错": "失敗時直接報錯", "失败时退回原模型": "失敗時退回原模型", "失败阈值": "失敗門檻", "完整详情": "完整詳情", "完整请求详情": "完整請求詳情", "完整过程": "完整過程", "实时状态暂未更新,当前显示上次读取的结果:{error}": "即時狀態暫未更新,目前顯示上次讀取的結果:{error}", "实际使用": "實際使用", "实际尝试失败": "實際嘗試失敗", "实际模型": "實際模型", "实际请求路径": "實際請求路徑", "实际账号尝试": "實際帳號嘗試", "客户端已取消请求": "用戶端已取消請求", "客户端未记录": "客戶端未記錄", "客户端模型": "客戶端模型", "客户端模型 {client} → 实际模型 {model}": "客戶端模型 {client} → 實際模型 {model}", "客户端请求": "客戶端請求", "对外模型 ID": "對外模型 ID", "对外模型 ID 已被占用,请换一个名称": "對外模型 ID 已被佔用,請換一個名稱", "对外模型 ID 格式不正确": "對外模型 ID 格式不正確", "将禁用当前所选的 {n} 个账号,所有路由都不能再选用它们。此操作立即保存,不会删除账号。": "將停用目前選取的 {n} 個帳號,所有路由都不能再選用它們。此操作立即儲存,不會刪除帳號。", "尚未记录承载账号": "尚未記錄承載帳號", "尚未读取到有效的积分到期时间": "尚未讀取到有效的積分到期時間", "尝试 {n}": "嘗試 {n}", "尝试 {n} · 最终承载": "嘗試 {n} · 最終承載", "尝试中": "嘗試中", "尝试失败": "嘗試失敗", "尝试明细已截断或未记录,画布只展示保存下来的信息。": "嘗試明細已截斷或未記錄,畫布只展示儲存下來的資訊。", "尝试结果": "嘗試結果", "尝试记录": "嘗試記錄", "展开其余 {n} 个候选": "展開其餘 {n} 個候選", "展开完整原因": "展開完整原因", "工具服务的视觉模型": "工具服務的視覺模型", "左侧修改的是全局默认,不会影响它。": "左側修改的是全域預設,不會影響它。", "已保存": "已儲存", "已保存 {n} 个候选": "已儲存 {n} 個候選", "已保存明细": "已儲存明細", "已停用": "已停用", "已停用提供商 · {n}": "已停用提供商 · {n}", "已关闭": "已關閉", "已删除独立配置,改为跟随全局": "已刪除獨立配置,改為跟隨全域", "已启用": "已啟用", "已启用模拟条件": "已啟用模擬條件", "已固定这条请求,新请求不会打断当前查看": "已固定這條請求,新請求不會打斷當前檢視", "已完成记录": "已完成記錄", "已完成请求时间范围": "已完成請求時間範圍", "已尝试": "已嘗試", "已尝试 · 失败": "已嘗試 · 失敗", "已用时": "已用時", "已禁用账号": "已停用帳號", "已禁用账号 · {n}": "已停用帳號 · {n}", "已解除 {n} 条会话粘滞": "已解除 {n} 筆工作階段黏著", "已记录 {n} 次尝试": "已記錄 {n} 次嘗試", "已跳过": "已跳過", "已转换为账号启停,独立路由参与名单保持不变": "已轉換為帳號啟停,獨立路由參與名單保持不變", "平均耗时": "平均耗時", "并发已满": "已達同時處理上限", "序号表示先后,不是提供商之间互相转发": "序號表示先後,不是提供商之間互相轉發", "应用到草稿": "應用到草稿", "开始 {start} · 响应 {response} · 结束 {finish}": "開始 {start} · 響應 {response} · 結束 {finish}", "开始于 +{time}": "開始於 +{time}", "开始时间": "開始時間", "当前全局路由使用固定参与名单,新增提供商不会自动加入。": "目前全域路由使用固定參與名單,新增提供商不會自動加入。", "当前可用队首": "當前可用隊首", "当前承载": "當前承載", "当前有效顺位以路由预演为准,不改变保存的配置优先级。": "目前有效順位以路由預演為準,不改變已儲存的設定優先順序。", "当前档位不保留跨请求粘滞,因此没有活跃绑定。": "目前模式不保留跨請求黏著,因此沒有有效綁定。", "当前模型": "當前模型", "当前模型使用独立顺序,不受全局自动消耗排序影响。删除独立路由后会重新跟随账号页。": "目前模型使用獨立順序,不受全域自動消耗排序影響。刪除獨立路由後會重新跟隨帳號頁。", "当前模型使用独立顺序,不受全局自动消耗排序影响。恢复继承后会重新跟随账号页。": "目前模型使用獨立順序,不受全域自動消耗排序影響。恢復繼承後會重新跟隨帳號頁。", "当前模型没有对应的账号,请先添加账号或检查模型绑定。": "目前模型沒有對應的帳號,請先新增帳號或檢查模型綁定。", "当前模型配置独立保存,不影响全局和其他模型。": "目前模型設定獨立儲存,不影響全域和其他模型。", "当前没有参与账号,保存后这个范围可能无法承载新请求。": "當前沒有參與帳號,儲存後這個範圍可能無法承載新請求。", "当前没有可沿用的粘滞绑定": "當前沒有可沿用的粘滯繫結", "当前空闲": "當前空閒", "当前绑定:{account},剩余 {time}": "當前繫結:{account},剩餘 {time}", "当前继承全局。改成模型独立配置后,改动只影响这个模型。": "當前繼承全域。改成模型獨立配置後,改動隻影響這個模型。", "当前继承全局固定名单;新增提供商需手动添加或在全局配置中改为自动参与。": "目前繼承全域固定名單;新增提供商需手動新增或在全域設定中改為自動參與。", "当前继承全局,修改前先切到独立配置": "當前繼承全域,修改前先切到獨立配置", "当前继承全局,切换到独立配置后只修改本模型。": "當前繼承全域,切換到獨立配置後只修改本模型。", "当前网关尚不支持全局账号启停,请更新网关后重新读取。": "目前閘道器尚不支援全域帳號啟停,請更新閘道器後重新讀取。", "当前范围内没有请求": "當前範圍內沒有請求", "当前范围的提供商都没有账号,先在账号页添加": "當前範圍的提供商都沒有帳號,先在帳號頁新增", "当前视图没有活跃会话粘滞": "目前檢視沒有有效的工作階段黏著", "当前视图没有路由回放记录": "目前檢視沒有路由重播紀錄", "当前视图的请求入口": "目前檢視的請求入口", "当前请求": "目前請求", "当前路由位置": "目前路由位置", "当前路由内的视觉模型": "當前路由內的視覺模型", "当前配置": "當前配置", "当前配置已排除": "當前配置已排除", "当时": "當時", "当时可用,当前请求尚未轮到这个账号": "當時可用,當前請求尚未輪到這個帳號", "当时可选的账号 · {n}": "當時可選的帳號 · {n}", "当时状态": "當時狀態", "当时的候选说明": "當時的候選說明", "当时的成员模型": "當時的成員模型", "当时的选路原因未记录": "當時的選路原因未記錄", "当时被候选过滤规则跳过": "當時被候選過濾規則跳過", "当时配置": "當時設定", "当时配置与当前配置": "當時設定與目前設定", "影响继承全局的模型": "影響繼承全域的模型", "怎么选账号": "怎麼選帳號", "思考等级 {value}": "思考等級 {value}", "总耗时": "總耗時", "总计 {n} tokens": "總計 {n} tokens", "恢复": "恢復", "恢复全局继承": "恢復全域繼承", "恢复按账号页面的全局优先级选路,解除全局视图的提供商和账号范围限制。模型独立配置不会改变。": "恢復按帳號頁面的全域優先順序選路,解除全域檢視的提供商和帳號範圍限制。模型獨立設定不會改變。", "恢复提供商": "恢復提供商", "恢复路由提供商": "恢復路由提供商", "恢复阈值": "恢復門檻", "恢复默认路由": "恢復預設路由", "成功承载": "成功承載", "成员内轮询": "成員內輪詢", "成员模型": "成員模型", "所有可用提供商自动参与,新增账号或插件后无需再加路由;明确停用的保持不变。": "所有可用提供商自動參與,新增帳號或外掛後無需再加路由;明確停用的保持不變。", "所有可用提供商自动参与,新增账号或插件后无需再添加路由。已停用的提供商和已排除的账号保持不变。": "所有可用提供商自動參與,新增帳號或外掛後無需再新增路由。已停用的提供商和已排除的帳號保持不變。", "所有可用提供商都已在当前路由中": "所有可用提供商都已在目前路由中", "所有模型共用": "所有模型共用", "所有模型共用路由策略与保护设置;全局顺序和消耗规则与账号页联动,模型独立配置可明确覆盖顺序。": "所有模型共用路由策略與保護設定;全域順序和消耗規則與帳號頁連動,模型獨立設定可明確覆蓋順序。", "打开完整请求详情": "開啟完整請求詳細資料", "打开该模型配置": "開啟該模型配置", "执行耗时": "執行耗時", "执行记录": "執行記錄", "执行路径": "執行路徑", "执行路径按当时快照保留": "執行路徑按當時快照保留", "批量禁用账号": "批次停用帳號", "承载账号": "承載帳號", "把不同提供商、不同模型组合成一个入口。客户端使用对外模型 ID 发起请求。": "把不同提供商、不同模型組合成一個入口。客戶端使用對外模型 ID 發起請求。", "把全局配置复制成这个模型的独立配置": "把全域配置複製成這個模型的獨立配置", "拖动卡片改顺位,勾选决定参与;这里的位置就是实际选路顺序。": "拖動卡片改順位,勾選決定參與;這裡的位置就是實際選路順序。", "拖动或按 Alt + 方向键调整顺序": "拖動或按 Alt + 方向鍵調整順序", "拖动把手或按 Alt + 方向键调整顺序,更多操作在右侧菜单。": "拖動把手或按 Alt + 方向鍵調整順序,更多操作在右側選單。", "拖动把手调整顺序,也可以使用右侧上下按钮。": "拖動把手調整順序,也可以使用右側上下按鈕。", "拖动提供商与账号调整顺序,修改即时保存。": "拖曳提供商與帳號調整順序,修改即時儲存。", "拖动改顺位、勾选决定参与;这里的位置就是实际选路顺序。": "拖動改順位、勾選決定參與;這裡的位置就是實際選路順序。", "拖动调整提供商顺序": "拖曳調整提供商順序", "拖动调整账号顺序": "拖曳調整帳號順序", "按客户端类型聚合": "按客戶端型別聚合", "按已保存配置": "按已儲存配置", "按当前草稿预演,不发送请求,不消耗额度。": "按當前草稿預演,不傳送請求,不消耗額度。", "按当前视图的顺序参与选路": "按目前檢視的順序參與選路", "按此范围查看配置": "按此範圍檢視配置", "按步骤回放,不重新发送请求": "按步驟回放,不重新發送請求", "按请求开始时的顺位": "按請求開始時的順位", "按请求模型选择": "按請求模型選擇", "按路径聚合,会话在列表中展开,不在画布逐条连线。": "按路徑聚合,會話在列表中展開,不在畫布逐條連線。", "排除": "排除", "接住": "接住", "接管模型": "接管模型", "提供商与账号": "提供商與帳號", "提供商保持优先顺序,同一提供商的账号轮流承接。": "提供商維持優先順序,同一提供商的帳號輪流承接。", "提供商参与": "提供商參與", "提供商参与方式": "提供商參與方式", "提供商参与方式改为{value}": "提供商參與方式改為{value}", "提供商参与范围": "提供商參與範圍", "提供商未参与": "提供商未參與", "提供商未记录": "提供商未記錄", "提供商范围": "提供商範圍", "提供商路由设置": "提供商路由設定", "搜索会话或账号": "搜尋會話或帳號", "搜索客户端、模型或账号": "搜尋客戶端、模型或帳號", "搜索提供商或模型": "搜尋提供商或模型", "搜索提供商或账号": "搜尋提供商或帳號", "搜索本页会话或账号": "搜尋本頁會話或帳號", "搜索模型": "搜尋模型", "搜索模型、账号或会话来源": "搜尋模型、帳號或工作階段來源", "搜索模型或请求 ID": "搜尋模型或請求 ID", "搜索请求、模型或账号": "搜尋請求、模型或帳號", "搜索路由配置": "搜尋路由配置", "撤销修改": "撤銷修改", "撤销草稿": "撤銷草稿", "收起其他候选": "收起其他候選", "改为独立配置": "改為獨立配置", "改为自动参与": "改為自動參與", "改用": "改用", "放到第 {n} 位": "放到第 {n} 位", "放大画布": "放大畫布", "整体接管": "整體接管", "整次请求交给视觉模型": "整次請求交給視覺模型", "整次请求改交": "整次請求改交", "文本对话": "文本對話", "新增可用提供商会自动参与;这里只需恢复曾明确停用的提供商。": "新增可用提供商會自動參與;這裡只需恢復曾明確停用的提供商。", "新增提供商自动参与;移出本路由的不会自动加回。": "新增提供商自動參與;移出本路由的不會自動加回。", "新增模型": "新增模型", "新增模型独立路由": "新增模型獨立路由", "新增模型独立配置": "新增模型獨立配置", "新增路由配置": "新增路由設定", "新建路由组": "新建路由組", "新配置 · 保存后生效": "新配置 · 儲存後生效", "无可用账号": "無可用帳號", "无有效绑定": "無有效繫結", "时间相对请求开始;历史只读,修改当前配置不会改变这条记录。": "時間相對請求開始;歷史只讀,修改當前配置不會改變這條記錄。", "时间相对请求开始;未记录的旧数据不补算。历史只读,修改当前配置不会改变这条记录。": "時間相對請求開始;未記錄的舊資料不補算。歷史只讀,修改當前配置不會改變這條記錄。", "时间相对请求开始;未记录的旧数据不补算。响应到达不等于流式请求结束。": "時間相對請求開始;未記錄的舊資料不補算。響應到達不等於流式請求結束。", "是": "是", "显示全部": "顯示全部", "显示其他候选": "顯示其他候選", "显示无账号 ({n})": "顯示無帳號 ({n})", "暂停": "暫停", "暂无可用账号": "暫無可用帳號", "暂未支持": "暫未支援", "曾被限流的账号暂时排到队尾,三十分钟后或转发成功后恢复。": "曾受流量限制的帳號暫時排到佇列末端,三十分鐘後或轉送成功後恢復。", "最早到期的剩余积分包:{time}": "最早到期的剩餘積分包:{time}", "最终承载": "最終承載", "最终由 {account} 承接": "最終由 {account} 承接", "最近 {n} 分钟": "最近 {n} 分鐘", "最近 {n} 条": "最近 {n} 條", "最近使用:{time}": "最近使用:{time}", "最近命中": "最近命中", "最近完成": "最近完成", "最近没有命中记录": "最近沒有命中記錄", "最近请求已完成": "最近請求已完成", "有在途": "有在途", "有未保存修改,预演仍按已保存配置。": "有未儲存修改,預演仍按已儲存配置。", "有未保存的修改": "有未儲存的修改", "未保存完整尝试明细,仅显示请求记录中的承载信息。": "未儲存完整嘗試明細,僅顯示請求記錄中的承載資訊。", "未保存草稿": "未儲存草稿", "未切换": "未切換", "未参与": "未參與", "未参与提供商 · {n}": "未參與提供商 · {n}", "未参与提供商默认收起;选中历史路径时仍会显示。": "未參與提供商預設收起;選中歷史路徑時仍會顯示。", "未参与本范围": "未參與本範圍", "未参与本路由": "未參與本路由", "未发生切换": "未發生切換", "未记录上游调用": "未記錄上游呼叫", "未识别客户端": "未識別客戶端", "未调用": "未呼叫", "未调用不画请求线;模型限流与当前配置分别展示。": "未呼叫不畫請求線;模型限流與當前配置分別展示。", "未调用的候选": "未呼叫的候選", "未轮到": "未輪到", "未选择客户端": "未選擇客戶端", "未选择模型": "未選擇模型", "未配置模型": "未配置模型", "未配置模型的默认路由": "未設定模型的預設路由", "本地网关": "本機閘道器", "本次尝试失败": "本次嘗試失敗", "本次执行": "本次執行", "本次状态": "本次狀態", "本次用时": "本次用時", "本次结果": "本次結果", "本次耗时": "本次耗時", "本次请求": "本次請求", "本次请求已完成": "本次請求已完成", "本窗口未调用": "本視窗未呼叫", "本轮选路预演": "本輪選路預演", "来源未记录": "來源未記錄", "查看上游错误": "檢視上游錯誤", "查看上游错误摘要": "檢視上游錯誤摘要", "查看其他 {n} 个候选": "查看其他 {n} 個候選", "查看实际请求的选路、尝试与结果": "檢視實際請求的選路、嘗試與結果", "查看当前配置": "查看目前設定", "查看最后一次尝试": "檢視最後一次嘗試", "查看详情内容": "檢視詳情內容", "查看配置": "檢視配置", "查看配置详情": "查看設定詳情", "标题模型": "標題模型", "标题模型失败时": "標題模型失敗時", "标题生成": "標題生成", "标题生成路由入口尚未就绪,请刷新页面后重试": "標題生成路由入口尚未就緒,請重新整理頁面後再試。", "标题请求": "標題請求", "检测到旧版全局参与设置,请先确认转换,再管理账号启停。": "偵測到舊版全域參與設定,請先確認轉換,再管理帳號啟停。", "模型、网关、提供商与账号的可视化选路": "模型、閘道器、提供商與帳號的視覺化選路", "模型不支持图片": "模型不支援圖片", "模型改写": "模型改寫", "模型未记录": "模型未記錄", "模型独立路由": "模型獨立路由", "模型独立配置": "模型獨立設定", "模型看不了图片时,按下面的规则交给视觉模型;没配到的模型、以及本来就能看图的,一律原样放行。": "模型看不了圖片時,按下面的規則交給視覺模型;沒配到的模型、以及本來就能看圖的,一律原樣放行。", "模型绑定不可用": "模型綁定無法使用", "模型路由": "模型路由", "模拟首选失败": "模擬首選失敗", "正在处理": "正在處理", "正在由 {account} 处理": "正在由 {account} 處理", "正在编辑": "正在編輯", "正在读取会话绑定…": "正在讀取工作階段綁定…", "正在读取当前配置": "正在讀取目前設定", "正在读取路由…": "正在讀取路由…", "正在选路,尚未记录上游尝试": "正在選路,尚未記錄上游嘗試", "正在预览 {model}": "正在預覽 {model}", "此为配置顺位,当前没有可用候选账号。": "此為設定順位,目前沒有可用候選帳號。", "此入口没有参与路由的提供商,保存后请求将明确失败。": "此入口沒有參與路由的提供商,儲存後請求將明確失敗。", "此入口没有参与路由的账号。保存后请求将明确失败,不会回退全局或自动恢复参与名单。": "此入口沒有參與路由的帳號。儲存後請求將明確失敗,不會回退全域或自動恢復參與名單。", "此刻队列": "此刻佇列", "此提供商当前没有可用的模型绑定,配置已保留;在模型管理中恢复绑定后会自动回来。": "此提供商目前沒有可用的模型綁定,設定已保留;在模型管理中恢復綁定後會自動重新顯示。", "此模型限流": "此模型限流", "每轮重新选路,不保留跨请求的账号绑定。": "每輪重新選路,不保留跨請求的帳號綁定。", "没有保存其他候选信息": "沒有儲存其他候選資訊", "没有保存调用明细": "沒有儲存呼叫明細", "没有其他候选账号": "沒有其他候選帳號", "没有匹配的会话": "沒有符合的工作階段", "没有匹配的候选": "沒有匹配的候選", "没有匹配的提供商或账号": "沒有符合的提供商或帳號", "没有匹配的记录": "沒有匹配的記錄", "没有匹配的请求": "沒有匹配的請求", "没有匹配的路由配置": "沒有匹配的路由配置", "没有参与路由的账号": "沒有參與路由的帳號", "没有可添加的模型": "沒有可新增的模型", "没有可用提供商,请先添加账号或安装插件。": "沒有可用提供商,請先新增帳號或安裝外掛。", "没有可用模型": "沒有可用模型", "没有可用账号": "沒有可用帳號", "没有可选的对话模型,请先启用模型和对应账号。": "沒有可選的對話模型,請先啟用模型和對應帳號。", "没有独立配置的模型沿用全局路由。": "沒有獨立設定的模型沿用全域路由。", "没有请求也能配置路由": "沒有請求也能配置路由", "没有跳过": "沒有跳過", "没有配到的模型、以及本来就能看图的模型,一律原样放行。": "沒有配到的模型、以及本來就能看圖的模型,一律原樣放行。", "没有需要恢复的提供商": "沒有需要恢復的提供商", "沿用工具服务的视觉模型": "沿用工具服務的視覺模型", "流动:有请求在途": "流動:有請求在途", "消耗规则": "消耗規則", "消耗规则已保存,但路由列表刷新失败:{error}": "消耗規則已儲存,但路由清單重新整理失敗:{error}", "添加到全局路由,新请求将按这里的顺序选择账号。": "新增至全域路由,新請求將按這裡的順序選擇帳號。", "添加到固定参与名单;以后新增的提供商仍需手动加入。": "新增至固定參與名單;以後新增的提供商仍需手動加入。", "添加参与模型": "新增參與模型", "添加规则": "新增規則", "添加路由提供商": "新增路由提供商", "清空选择": "清除選取", "清除会话粘滞": "清除工作階段黏著", "灰线:历史流量": "灰線:歷史流量", "点击查看这次尝试的结果与原因": "點擊檢視這次嘗試的結果與原因", "点击节点查看请求,点击齿轮编辑路由配置。": "點擊節點檢視請求,點擊齒輪編輯路由配置。", "点击节点筛选,点击齿轮进入配置": "點擊節點篩選,點擊齒輪進入配置", "点击节点,切换到对应请求详情": "點擊節點,切換到對應請求詳情", "点客户端看它用过的模型": "點客戶端看它用過的模型", "点模型看它的请求": "點模型看它的請求", "点节点筛选,再点一次取消;点齿轮进入配置": "點節點篩選,再點一次取消;點齒輪進入配置", "熔断保护": "斷路器保護", "特殊请求路由": "特殊請求路由", "特殊请求路由 · 只改写模型,不改选账号规则": "特殊請求路由 · 只改寫模型,不改選帳號規則", "独立": "獨立", "独立账号顺序": "獨立帳號順序", "独立路由": "獨立路由", "独立路由的账号顺序不受全局消耗规则影响": "獨立路由的帳號順序不受全域消耗規則影響", "独立配置": "獨立設定", "画布位置不改变选路优先级": "畫布位置不改變選路優先順序", "直接报错": "直接報錯", "真实请求还会考虑当时的会话绑定、并发与限额状态。": "真實請求還會考慮當時的會話繫結、併發與限額狀態。", "确定删除「{model}」的独立路由配置?删除后该模型将使用全局路由。不会删除模型、账号或请求记录。": "確定刪除「{model}」的獨立路由設定?刪除後該模型將使用全域路由。不會刪除模型、帳號或請求紀錄。", "确认转换": "確認轉換", "禁用全部账号": "停用全部帳號", "禁用当前列表账号": "停用目前清單中的帳號", "禁用账号": "停用帳號", "积分到期:暂无数据": "積分到期:暫無資料", "积分:{time}": "積分:{time}", "移出": "移出", "移出本路由": "移出本路由", "移除此模型的独立路由配置,之后重新继承全局路由。不会删除模型、账号或请求记录。": "移除此模型的獨立路由設定,之後重新繼承全域路由。不會刪除模型、帳號或請求紀錄。", "移除路由提供商": "移除路由提供商", "窗口内无请求": "視窗內無請求", "第 {n} 位": "第 {n} 位", "第 {n} 次尝试 · {name}": "第 {n} 次嘗試 · {name}", "第 {n} 顺位": "第 {n} 順位", "等待回放": "等待回放", "等待首帧": "等待首幀", "策略": "策略", "筛选模型": "篩選模型", "粘性命中": "黏著命中", "粘性:{mode}": "黏著:{mode}", "粘滞": "粘滯", "粘滞 {mode}": "粘滯 {mode}", "粘滞命中": "粘滯命中", "粘滞标记": "粘滯標記", "组名": "組名", "组名方便识别,对外模型 ID 给客户端使用。": "組名方便識別,對外模型 ID 給客戶端使用。", "经过 {n} 次切换后成功,最终承载:{account}": "經過 {n} 次切換後成功,最終承載:{account}", "绑定:{account}": "繫結:{account}", "结束时间": "結束時間", "结果未记录": "結果未記錄", "统一路由设置": "統一路由設定", "统一路由设置已保存": "統一路由設定已儲存", "继承": "繼承", "继承全局": "繼承全域", "继承全局配置": "繼承全域設定", "继承全局:{value}": "繼承全域:{value}", "继承时不能改这里的值;切到独立配置后才会写入这个模型。": "繼承時不能改這裡的值;切到獨立配置後才會寫入這個模型。", "编辑全局默认": "編輯全域預設", "编辑范围": "編輯範圍", "编辑规则": "編輯規則", "编辑路由组": "編輯路由組", "缩小画布": "縮小畫布", "网关继续尝试下一个账号": "閘道器繼續嘗試下一個帳號", "耗时未记录": "耗時未記錄", "自动参与": "自動參與", "自动参与模式下将明确停用此提供商,之后新增账号也不会自动恢复;不会删除提供商或账号。": "自動參與模式下將明確停用此提供商,之後新增帳號也不會自動恢復;不會刪除提供商或帳號。", "自动参与(推荐)": "自動參與(推薦)", "自动消耗排序已启用,请先关闭规则再手动调整": "自動消耗排序已啟用,請先關閉規則再手動調整", "自动:空闲五分钟释放;会话内:空闲六小时释放;每轮或关闭:不保留跨请求绑定。": "自動:空閒五分鐘釋放;會話內:空閒六小時釋放;每輪或關閉:不保留跨請求繫結。", "自动:空闲五分钟释放;会话内:空闲六小时;每轮或关闭:不跨请求绑定。": "自動:空閒五分鐘釋放;會話內:空閒六小時;每輪或關閉:不跨請求繫結。", "自定义路由组": "自定義路由組", "草稿预演": "草稿預演", "被跳过": "被跳過", "被跳过的账号": "被略過的帳號", "规则": "規則", "规则全局生效,不受原路由池限制;指定模型按自己的路由选账号,网关 Key 权限仍然生效。": "規則全域生效,不受原路由池限制;指定模型按自己的路由選帳號,閘道器 Key 權限仍然生效。", "规则最多 {n} 条。": "規則最多 {n} 條。", "视觉模型接管": "視覺模型接管", "视频输入": "影片輸入", "解除": "解除", "解除全局路由的参与范围限制,继续使用与账号页共用的手动顺序和自动消耗规则;模型独立配置保持不变。": "解除全域路由的參與範圍限制,繼續使用與帳號頁共用的手動順序和自動消耗規則;模型獨立設定保持不變。", "解除全部粘滞": "解除全部黏著", "解除只清除网关的账号绑定,不删除聊天历史、不关闭粘性设置。后续成功请求仍可建立新的绑定;重启网关会清空这些进程本地记录。": "解除只清除閘道器的帳號綁定,不刪除聊天歷史、不關閉黏著設定。後續成功請求仍可建立新的綁定;重新啟動閘道器會清空這些處理程序內的紀錄。", "解除当前模型全部粘滞": "解除目前模型的全部黏著", "解除所有模型的全部会话粘滞。不会终止在途请求,之后的请求会重新选路。": "解除所有模型的全部工作階段黏著。不會終止處理中的請求,之後的請求會重新選路。", "解除这个模型的全部会话粘滞。不会终止在途请求,之后的请求会重新选路。": "解除這個模型的全部工作階段黏著。不會終止處理中的請求,之後的請求會重新選路。", "解除这条会话": "解除這筆工作階段", "触发": "觸發", "触发客户端": "觸發客戶端", "计算中…": "計算中…", "记录所有经过网关的请求,不要求绑定客户端。": "記錄所有經過閘道器的請求,不要求繫結客戶端。", "记录时间": "記錄時間", "设置参与范围": "設定參與範圍", "识别": "識別", "识别客户端": "識別客戶端", "该提供商在当前视图中已停用": "該提供商在目前檢視中已停用", "该提供商没有账号,请先到账号页添加。": "該提供商沒有帳號,請先到帳號頁新增。", "请填写组名和对外模型 ID": "請填寫組名和對外模型 ID", "请检查熔断参数:失败阈值 1~20,时长 10~600 秒,恢复阈值 1~10。": "請檢查斷路器參數:失敗門檻 1~20,時間 10~600 秒,恢復門檻 1~10。", "请求": "請求", "请求 ID 未记录": "請求 ID 未記錄", "请求仍在处理中,当前阶段:{phase}": "請求仍在處理中,當前階段:{phase}", "请求仍在进行": "請求仍在進行", "请求会去哪里": "請求會去哪裡", "请求回放": "請求回放", "请求在途": "請求在途", "请求完成不代表会话关闭;粘滞有效期不是在线状态。": "請求完成不代表會話關閉;粘滯有效期不是線上狀態。", "请求已取消": "請求已取消", "请求当时的配置": "請求當時的配置", "请求成功完成,未发生账号切换": "請求成功完成,未發生帳號切換", "请求成功完成,未记录承载账号": "請求成功完成,未記錄承載帳號", "请求执行": "請求執行", "请求执行回放": "請求執行回放", "请求日志 →": "請求日誌 →", "请求未成功完成": "請求未成功完成", "请求模型": "請求模型", "请求活动范围": "請求活動範圍", "请求状态": "請求狀態", "请求结论": "請求結論", "请求范围": "請求範圍", "请求记录数据库不可用": "請求紀錄資料庫無法使用", "请求跟踪": "請求跟蹤", "请求跟踪内容": "請求跟蹤內容", "请求进入": "請求進入", "请求进入网关": "請求進入閘道器", "请求需要": "請求需要", "请选择模型": "請選擇模型", "读取中…": "讀取中…", "读图结果交回原模型继续回答": "讀圖結果交回原模型繼續回答", "谁参与及先后顺序": "誰參與及先後順序", "调整全局消耗规则": "調整全域消耗規則", "调整到期时间、可用余额及其他消耗规则的优先级": "調整到期時間、可用餘額及其他消耗規則的優先級", "调整后续请求的配置": "調整後續請求的配置", "调整模型顺序": "調整模型順序", "调整积分到期远近及其他消耗规则": "調整積分到期遠近及其他消耗規則", "调用示例": "呼叫示例", "账号 {name} 已{state}": "帳號 {name} 已{state}", "账号全部禁用": "帳號全部停用", "账号启停与账号页同步,立即影响所有路由;策略与排序需保存。": "帳號啟停與帳號頁同步,立即影響所有路由;策略與排序需儲存。", "账号启停与默认规则": "帳號啟停與預設規則", "账号启停操作": "帳號啟停操作", "账号启停立即生效;路由配置保存后生效": "帳號啟停立即生效;路由設定儲存後生效", "账号启停部分完成:成功 {ok} 个,失败 {fail} 个,跳过 {skip} 个。{details}": "帳號啟停部分完成:成功 {ok} 個,失敗 {fail} 個,略過 {skip} 個。{details}", "账号尝试": "帳號嘗試", "账号已禁用": "帳號已停用", "账号已移除": "帳號已移除", "账号操作": "帳號操作", "账号未记录": "帳號未記錄", "账号组": "帳號組", "账号组操作": "帳號群組操作", "账号设置与全局保护另行保存,不属于本页路由草稿。": "帳號設定與全域保護另行儲存,不屬於本頁路由草稿。", "账号设置与所有路由共用,不改变当前路由的参与名单。": "帳號設定與所有路由共用,不改變目前路由的參與名單。", "账号路由设置": "帳號路由設定", "起点是请求本身,不依赖客户端绑定。": "起點是請求本身,不依賴客戶端繫結。", "跟随列表中的最新请求": "跟隨列表中的最新請求", "跨模型组合": "跨模型組合", "路径": "路徑", "路径过多,画布仅展示前 300 条;统计覆盖完整窗口,请筛选模型缩小范围。": "路徑過多,畫布僅展示前 300 條;統計覆蓋完整視窗,請篩選模型縮小範圍。", "路由入口": "路由入口", "路由参与操作": "路由參與操作", "路由工作台": "路由工作臺", "路由工作台不可用": "路由工作區無法使用", "路由快照未记录": "路由快照未記錄", "路由成员操作": "路由成員操作", "路由接口不可用,请确认网关与界面已更新": "路由 API 無法使用,請確認閘道器與介面已更新", "路由接口返回了不完整的数据": "路由 API 回傳了不完整的資料", "路由数据正在更新,请稍后重试": "路由資料正在更新,請稍後重試", "路由模式": "路由模式", "路由画布": "路由畫布", "路由策略改为{value}": "路由策略改為{value}", "路由类型": "路由類型", "路由组": "路由群組", "路由组已删除": "路由群組已刪除", "路由视图": "路由檢視", "路由设置": "路由設定", "路由配置": "路由配置", "路由配置列表": "路由配置列表", "路由配置尚未读取": "路由設定尚未讀取", "路由配置已保存": "路由設定已儲存", "路由配置已保存,仅影响后续选路": "路由配置已儲存,僅影響後續選路", "路由配置操作": "路由配置操作", "路由配置版本不可用,请更新网关后重试": "路由配置版本不可用,請更新閘道器後重試", "跳过候选": "跳過候選", "转发前就失败、或旧记录未落库时,只能看到请求本身与配置快照。": "轉發前就失敗、或舊記錄未落庫時,只能看到請求本身與配置快照。", "转发失败的账号暂时休息,避免连续请求反复撞到同一故障。": "轉送失敗的帳號暫時休息,避免連續請求反覆遇到同一故障。", "转换只处理当前账号;之后新增账号按账号页的启用状态使用。不会启用任何已禁用的账号。": "轉換只處理目前帳號;之後新增帳號按帳號頁的啟用狀態使用。不會啟用任何已停用的帳號。", "转换旧版全局参与设置": "轉換舊版全域參與設定", "转换旧版设置": "轉換舊版設定", "转换结果未确认,请重新读取全局配置": "轉換結果未確認,請重新讀取全域設定", "辅助识图 · {n} 次读图": "輔助識圖 · {n} 次讀圖", "辅助识图 · 接管": "輔助識圖 · 接管", "输出 {n} tokens": "輸出 {n} tokens", "过程提示": "過程提示", "运行视图": "執行檢視", "近期 {n} 次请求": "近期 {n} 次請求", "返回全部流向": "返回全部流向", "返回列表": "返回列表", "返回实时": "返回即時", "返回画布": "返回畫布", "还有 {n} 处": "還有 {n} 處", "还没有参与模型": "還沒有參與模型", "还没有参与路由的提供商": "尚無參與路由的提供商", "还没有可用模型,先在账号页添加账号": "還沒有可用模型,先在帳號頁新增帳號", "还没有可用的模型,请先启用模型和对应账号。": "還沒有可用的模型,請先啟用模型和對應帳號。", "还没有规则。压缩请求会按原模型照常转发。": "還沒有規則。壓縮請求會按原模型照常轉發。", "还没有规则。图片会照常交给原模型,看不了的就会报错。": "還沒有規則。圖片會照常交給原模型,看不了的就會報錯。", "还没有规则。标题请求会照常交给原模型。": "還沒有規則。標題請求會照常交給原模型。", "还没有账号,先在账号页添加;有账号的提供商才会出现在这里": "還沒有帳號,先在帳號頁新增;有帳號的提供商才會出現在這裡", "还没选压缩模型": "還沒選壓縮模型", "还没选原模型": "還沒選原模型", "还没选标题模型": "還沒選標題模型", "还没选视觉模型": "還沒選視覺模型", "这一页改的只作用于当前范围": "這一頁改的只作用於當前範圍", "这个客户端目前没有可识别的标题请求": "這個客戶端目前沒有可識別的標題請求", "这个范围内最近的请求。点一条看它当时是怎么选的账号。": "這個範圍內最近的請求。點一條看它當時是怎麼選的帳號。", "这个范围怎么选账号": "這個範圍怎麼選帳號", "这些设置由所有模型共用;提供商与账号的参与范围和顺序在各自视图中独立配置。": "這些設定由所有模型共用;提供商與帳號的參與範圍和順序在各自檢視中獨立設定。", "这份记录来自实际请求,不使用当前账号队列重新推演。": "這份記錄來自實際請求,不使用當前帳號佇列重新推演。", "这是请求当时保存的选路快照,修改当前路由不会改变这份记录。": "這是請求當時儲存的選路快照,修改目前路由不會改變這份紀錄。", "这条会话已解除或过期,不再有活跃绑定。": "這筆工作階段已解除或到期,不再有有效綁定。", "这条规则只改写被识别为标题生成的小请求,普通对话不受影响。": "這條規則只改寫被識別為標題生成的小請求,普通對話不受影響。", "这条规则里的模型收到图片时按选定的方式处理;没被任何规则选中的模型一律原样放行。": "這條規則裡的模型收到圖片時按選定的方式處理;沒被任何規則選中的模型一律原樣放行。", "这条请求使用的路由组已删除,当时的快照仍可查看": "這筆請求使用的路由群組已刪除,當時的快照仍可查看", "这条请求对应的会话当前仍绑定到「{account}」。": "這筆請求對應的工作階段目前仍綁定至「{account}」。", "这条请求没有保存上游尝试明细": "這條請求沒有儲存上游嘗試明細", "这条请求没有保存路由决策": "這筆請求沒有儲存路由決策", "这条请求没有保存路由快照,仍可查看已有的请求和尝试信息。": "這條請求沒有儲存路由快照,仍可檢視已有的請求和嘗試資訊。", "这次尝试的结果": "這次嘗試的結果", "这里只决定是否参与本路由,不改变账号启用状态。": "這裡只決定是否參與本路由,不改變帳號啟用狀態。", "这里的参与范围只影响当前视图;账号启停、并发和限制器属于账号本身,所有模型共用。": "這裡的參與範圍只影響目前檢視;帳號啟停、同時處理和限制器屬於帳號本身,所有模型共用。", "这里的顺序决定实际选路;画布只为查看请求调整位置。": "這裡的順序決定實際選路;畫布只為檢視請求調整位置。", "这里调整的是账号组的全局消耗规则;当前独立路由的账号顺序保持不变。": "這裡調整的是帳號群組的全域消耗規則;目前獨立路由的帳號順序保持不變。", "连线表示参与本路由": "連線表示參與本路由", "连线表示账号组中有已启用账号": "連線表示帳號群組中有已啟用帳號", "连续失败达到阈值时暂时让位,恢复后再重新参与。": "連續失敗達到門檻時暫時讓位,恢復後再重新參與。", "退回原模型": "退回原模型", "退避 {time}": "退避 {time}", "选中": "已選取", "选中流量详情": "選中流量詳情", "选中路径": "選中路徑", "选择一个或多个客户端": "選擇一個或多個客戶端", "选择一条请求查看执行过程": "選擇一條請求檢視執行過程", "选择一条请求查看选路过程": "選擇一筆請求以檢視選路過程", "选择作用范围后配置路由": "選擇作用範圍後配置路由", "选择左侧请求查看选路过程": "選擇左側請求檢視選路過程", "选择模型": "選擇模型", "选择请求模型后查看具体限流状态": "選擇請求模型後檢視具體限流狀態", "选择账号": "選擇帳號", "选择路由入口": "選擇路由入口", "选择预览模型后查看队列": "選擇預覽模型後檢視佇列", "选路原因未记录": "選路原因未記錄", "选路情况": "選路情況", "选路方式": "選路方式", "选路预演": "選路預演", "逐步回放": "逐步回放", "配置作用范围": "配置作用範圍", "配置第 {rank} 顺位;当前可用候选第 {effective} 顺位。": "設定第 {rank} 順位;目前可用候選第 {effective} 順位。", "配置范围": "設定範圍", "配置该模型": "配置該模型", "配置请求的参与范围与优先顺序": "配置請求的參與範圍與優先順序", "配置项": "設定項目", "配置顺位 {n}": "配置順位 {n}", "重新读取": "重新讀取", "重新读取会丢弃当前范围的未保存草稿,其他范围的草稿保留。": "重新讀取會丟棄當前範圍的未儲存草稿,其他範圍的草稿保留。", "重新读取配置": "重新讀取配置", "队列为无会话预演;实际粘性命中和重试顺延以回放为准。": "佇列是不含工作階段黏著的預演;實際黏著命中與重試順延以重播為準。", "队首": "佇列首位", "阶段 {phase} · 已进行 {time}": "階段 {phase} · 已進行 {time}", "限制器跳过": "限制器略過", "隐藏无账号 ({n})": "隱藏無帳號 ({n})", "静止蓝线:选中历史路径": "靜止藍線:選中歷史路徑", "顺位": "順位", "顺序修改即时保存,仅作用于当前视图。": "順序修改即時儲存,僅套用於目前檢視。", "顺序调整不会解除限流;有效粘滞优先于普通账号顺序。": "順序調整不會解除限流;有效粘滯優先於普通帳號順序。", "预演首选": "預演首選", "预览模型": "預覽模型", "首帧": "首幀", "首帧 {time}": "首幀 {time}", "首帧耗时": "首幀耗時", "首帧:{time}": "首幀:{time}", "首选账号": "首選帳號", "默认自动参与;新增可用提供商无需再添加路由,明确停用项保持不变。": "預設自動參與;新增可用提供商無需再新增路由,明確停用項保持不變。", "默认规则": "預設規則", "默认路由": "預設路由", "Agent 配置": "Agent 配置", "Claude Code 按 Opus / Sonnet / Haiku / 子 Agent 分档请求模型;这里把每档指向网关目录里的模型,留空表示不改写该档。": "Claude Code 按 Opus / Sonnet / Haiku / 子 Agent 分檔請求模型;這裡把每檔指向閘道器目錄裡的模型,留空表示不改寫該檔。", "Claude Code 支持多模型菜单和逐模型思考等级;上下文及输入能力由客户端识别,不把自动压缩阈值冒充上下文窗口。": "Claude Code 支援多模型選單及逐模型思考等級;上下文與輸入能力由用戶端辨識,不將自動壓縮門檻當成上下文視窗。", "Claude Code 的 Opus / Sonnet / Haiku / 子 Agent 四档默认都指向上面选的模型;要让某一档用别的模型,在这里单独改。": "Claude Code 的 Opus / Sonnet / Haiku / 子 Agent 四檔預設都指向上面選的模型;要讓某一檔用別的模型,在這裡單獨改。", "Codex 的模型目录支持逐模型上下文、图片和思考档位,不提供可写的逐模型输出上限。": "Codex 的模型目錄支援逐模型上下文、圖片及思考等級,沒有可寫入的逐模型輸出上限。", "Crush 需要明确填写输出上限、图片与思考能力": "Crush 需要明確填寫輸出上限、圖片與思考能力", "DSH 配置目标": "DSH 設定目標", "Kimi Code 只能追加能力声明,不能关闭内置识别的能力。输出上限仅新版 Anthropic 协议生效;旧版不写入思考档位。": "Kimi Code 只能新增能力宣告,無法關閉內建辨識的能力。輸出上限僅在新版 Anthropic 協定生效;舊版不寫入思考等級。", "MCP 服务名称": "MCP 服務名稱", "Skill 目录名": "Skill 目錄名", "Token 上限必须是 1 到 1 亿之间的整数": "Token 上限必須是 1 到 1 億之間的整數", "Zed 的 API Key 仍需在客户端提供商设置中填写;本页不修改系统凭证。": "Zed 的 API Key 仍需在客戶端提供商設定中填寫;本頁不修改系統憑證。", "{id}(不在网关目录)": "{id}(不在閘道器目錄)", "· 走网关": "· 走閘道器", "。这里的开关与还原作用在网关所在的机器上。": "。這裡的開關與還原作用在閘道器所在的機器上。", "一键把本机 AI 客户端接到本地网关:改写它自己的配置文件,保留其它设置": "一鍵把本機 AI 客戶端接到本地閘道器:改寫它自己的配置檔案,保留其它設定", "一键接入": "一鍵接入", "一键设置": "一鍵設定", "上下文": "上下文", "上次应用未完整结束,请先查看恢复预览。": "上次應用未完整結束,請先檢視恢復預覽。", "上游模型 id,例如 raccoon-coder-pro": "上游模型 id,例如 raccoon-coder-pro", "下面是这个客户端文件里现有的配置(只读)。点「从客户端导入」把它收进我的配置,之后就能编辑和切换。": "下面是這個客戶端檔案裡現有的配置(只讀)。點「從客戶端匯入」把它收進我的配置,之後就能編輯和切換。", "不写入": "不寫入", "不要添加 /v1/messages;客户端会自行追加请求路径。": "不要新增 /v1/messages;客戶端會自行追加請求路徑。", "与客户端一致": "與客戶端一致", "个 · 已安装": "個 · 已安裝", "中转": "中轉", "仅修改所选 MCP 条目,保留其它配置和注释;保存不会启动服务。": "僅修改所選 MCP 條目,保留其它配置和註釋;儲存不會啟動服務。", "仅可读取": "僅可讀取", "从客户端导入": "從客戶端匯入", "从网关目录选择": "從閘道器目錄選擇", "从网关目录选择模型": "從閘道器目錄選擇模型", "会用最近一次备份覆盖它的配置文件。这一步不会改动你在本页存的配置列表。": "會用最近一次備份覆蓋它的配置檔案。這一步不會改動你在本頁存的配置列表。", "低": "低", "使用中": "使用中", "使用此配置": "使用此配置", "使用此配置时设为默认,其他模型仍可在客户端选择。": "使用此設定時設為預設模型,其他模型仍可在用戶端選擇。", "使用真实模型 ID,不要填写模型展示名。": "使用真實模型 ID,不要填寫模型展示名。", "使用网关 Key": "使用閘道器 Key", "保存会直接修改客户端配置;确认前展示差异,写入前自动备份。": "儲存會直接修改客戶端配置;確認前展示差異,寫入前自動備份。", "保存修改": "儲存修改", "保存只记录方案,不修改客户端。应用时会另外展示文件差异并请求确认。": "儲存只記錄方案,不修改客戶端。應用時會另外展示檔案差異並請求確認。", "保存后可在配置列表中切换,不影响当前使用的配置。": "儲存後可在設定清單中切換,不影響目前使用的設定。", "保存后同步更新客户端;写入前可查看改动,并自动备份。": "儲存後同步更新用戶端;寫入前可查看變更,並自動備份。", "保存方案": "儲存方案", "保存方案不会切换客户端;应用后改变实际默认模型。": "儲存方案不會切換客戶端;應用後改變實際預設模型。", "保存方案不会切换客户端;选择“应用并设为默认”才改变实际默认模型。": "儲存方案不會切換客戶端;選擇“應用並設為預設”才改變實際預設模型。", "保存时自动写入完整的 /chat/completions 路径。": "儲存時自動寫入完整的 /chat/completions 路徑。", "保存路径": "儲存路徑", "保留导入的认证": "保留匯入的認證", "保留现有认证": "保留現有驗證", "修改后点击「使用此配置」才会更新客户端。": "修改後點選「使用此設定」才會更新用戶端。", "停用后将从客户端可选项中关闭此配置,其他配置不受影响。": "停用後將在用戶端選項中關閉此設定,其他設定不受影響。", "停用配置": "停用設定", "全选搜索结果": "全選搜尋結果", "全部配置(全局覆盖)": "全部設定(全域覆寫)", "共": "共", "关闭后丢弃本次修改,不会保存配置或改动客户端。": "關閉後捨棄本次修改,不會儲存設定或改動用戶端。", "关闭后丢弃本次草稿,不会保存空方案,也不会修改客户端。": "關閉後丟棄本次草稿,不會儲存空方案,也不會修改客戶端。", "内容已经一致,无需写入": "內容已經一致,無需寫入", "写入中…": "寫入中…", "写入后需要重开会话才生效": "寫入後需要重開會話才生效", "写入失败:{reason}": "寫入失敗:{reason}", "写入客户端": "寫入客戶端", "写入文件": "寫入檔案", "写入预览": "寫入預覽", "删除 MCP": "刪除 MCP", "删除 Skill": "刪除 Skill", "删除只移除 SKILL.md,辅助文件保留在原目录;不会执行其中的脚本。": "刪除只移除 SKILL.md,輔助檔案保留在原目錄;不會執行其中的指令碼。", "删除客户端配置": "刪除客戶端配置", "删除已保存方案?": "刪除已儲存方案?", "删除新建文件": "刪除新建檔案", "删除方案": "刪除方案", "删除配置": "刪除設定", "删除配置?": "刪除設定?", "动态表达式、独立作用域或全局覆盖的 MCP 为只读,请在 DSH 中编辑。": "使用動態運算式、獨立作用域或全域覆寫的 MCP 為唯讀,請在 DSH 中編輯。", "单配置": "單配置", "单配置文件": "單配置檔案", "另一项配置操作尚未完成": "另一項配置操作尚未完成", "只保存变量引用,不修改系统环境;请在启动客户端的环境里设置变量值。": "只儲存變數引用,不修改系統環境;請在啟動客戶端的環境裡設定變數值。", "只删除 Agent2API 中的方案,不修改客户端当前配置。": "只刪除 Agent2API 中的方案,不修改客戶端當前配置。", "只改 enabled 与默认项,其余条目原样保留": "只改 enabled 與預設項,其餘條目原樣保留", "只改属于我们的那几个键,其它设置原样保留": "只改屬於我們的那幾個鍵,其它設定原樣保留", "可先新增配置,安装后再使用": "可先新增設定,安裝後再使用", "可同时启用多条;切换只改 enabled 与默认项": "可同時啟用多條;切換隻改 enabled 與預設項", "可搜索并多选模型;上下文、输出上限和能力分别从网关目录自动填入。": "可搜尋並多選模型;上下文、輸出上限和能力分別從閘道目錄自動填入。", "可选模型": "可選模型", "同一时刻只有一套生效;写入 = 把这一套整段写进客户端文件": "同一時刻只有一套生效;寫入 = 把這一套整段寫進客戶端檔案", "启用 {name}": "啟用 {name}", "启用此配置": "啟用此設定", "启用配置": "啟用設定", "图形化管理客户端原生配置;保存方案与应用配置分开。": "圖形化管理客戶端原生配置;儲存方案與應用配置分開。", "图片输入": "圖片輸入", "在客户端管理认证": "在客戶端管理認證", "填写服务根地址,不要附加 /v1beta 或 generateContent 路径。": "填寫服務根地址,不要附加 /v1beta 或 generateContent 路徑。", "处理中…": "處理中…", "备注": "備註", "多套配置": "多套配置", "多配置 · 已启用 {n}": "多配置 · 已啟用 {n}", "多配置文件": "多配置檔案", "子 Agent": "子 Agent", "安装或初始化后可重新检测;自定义安装位置可指定配置路径。": "安裝或初始化後可重新檢測;自定義安裝位置可指定配置路徑。", "完整配置文件路径": "完整配置檔案路徑", "官方直连": "官方直連", "客户端列表加载失败:{reason}": "客戶端列表載入失敗:{reason}", "客户端列表响应无效": "客戶端列表響應無效", "客户端协议": "客戶端協議", "客户端原生 MCP 配置(JSON)": "客戶端原生 MCP 配置(JSON)", "客户端原生配置": "客戶端原生配置", "客户端官方配置说明": "客戶端官方配置說明", "客户端实际配置": "客戶端實際配置", "客户端必须实际使用同一个配置文件;本页不改变客户端启动参数。": "客戶端必須實際使用同一個配置檔案;本頁不改變客戶端啟動引數。", "客户端文件已有外部修改,自动恢复会拒绝覆盖。": "客戶端檔案已有外部修改,自動恢復會拒絕覆蓋。", "客户端条目启用状态": "客戶端條目啟用狀態", "客户端清单": "客戶端清單", "客户端管理分类": "客戶端管理分類", "客户端自己的设置优先;这里写的是写入时带进去的初值": "客戶端自己的設定優先;這裡寫的是寫入時帶進去的初值", "客户端资源已保存并校验": "客戶端資源已儲存並校驗", "客户端选项": "用戶端選項", "客户端配置写入后未通过校验": "客戶端配置寫入後未通過校驗", "客户端配置已经一致,无需写入": "客戶端配置已經一致,無需寫入", "客户端默认地址": "客戶端預設地址", "密钥在 Agent2API 中加密保存;使用时按客户端要求写入。": "金鑰在 Agent2API 中加密儲存;使用時依用戶端要求寫入。", "密钥已隐藏;绿色为新增,红色为删除。所有实际写入文件都列在这里。": "金鑰已隱藏;綠色為新增,紅色為刪除。所有實際寫入檔案都列在這裡。", "导入模型及客户端未知字段会保留;本页删除方案不会删除客户端条目。": "匯入模型及客戶端未知欄位會保留;本頁刪除方案不會刪除客戶端條目。", "将删除此配置及客户端中的对应条目,其他配置不受影响。": "將刪除此設定及用戶端中的對應項目,其他設定不受影響。", "尚未初始化": "尚未初始化", "尚未支持这个客户端的资源管理": "尚未支援這個客戶端的資源管理", "展开可调整能力;— 表示客户端未声明": "展開可調整能力;— 表示客戶端未宣告", "已保存": "已儲存", "已保存方案": "已儲存方案", "已保存,未应用": "已儲存,未應用", "已写入 {name}": "已寫入 {name}", "已写入 {name};这个客户端只在启动时读配置,重开一个会话才生效": "已寫入 {name};這個客戶端只在啟動時讀配置,重開一個會話才生效", "已删除保存方案,客户端配置未改动": "已刪除儲存方案,客戶端配置未改動", "已安装": "已安裝", "已导入 {n} 套方案": "已匯入 {n} 套方案", "已按备份还原 {name}": "已按備份還原 {name}", "已收进我的配置:{n} 条": "已收進我的配置:{n} 條", "已检测到": "已檢測到", "已还原「{name}」": "已還原「{name}」", "已选择": "已選擇", "已选模型": "已選模型", "已配置": "已配置", "已预填网关地址、协议、Key 与模型;确认后直接写入客户端,不需要先保存方案。": "已預填閘道器地址、協議、Key 與模型;確認後直接寫入客戶端,不需要先儲存方案。", "应用": "應用", "应用中…": "應用中…", "应用到客户端": "應用到客戶端", "应用并设为默认": "應用並設為預設", "应用时使用当前启用的真实 Key;预览会隐藏密钥。": "應用時使用當前啟用的真實 Key;預覽會隱藏金鑰。", "当前环境不支持保存": "當前環境不支援儲存", "当前环境不支持保存(桥接方法缺失)": "當前環境不支援儲存(橋接方法缺失)", "当前环境不支持写入(桥接方法缺失)": "當前環境不支援寫入(橋接方法缺失)", "当前环境不支持客户端接管(桥接方法缺失)": "當前環境不支援客戶端接管(橋接方法缺失)", "当前环境不支持客户端配置": "當前環境不支援客戶端配置", "当前环境不支持导入": "當前環境不支援匯入", "当前环境不支持导入(桥接方法缺失)": "當前環境不支援匯入(橋接方法缺失)", "当前环境不支持应用": "當前環境不支援應用", "当前环境不支持恢复": "當前環境不支援恢復", "当前环境不支持还原(桥接方法缺失)": "當前環境不支援還原(橋接方法缺失)", "当前环境不支持预览": "當前環境不支援預覽", "当前环境无法读取网关模型目录": "當前環境無法讀取閘道器模型目錄", "当前网关未启用 API Key 鉴权;占位值只用于客户端要求非空密钥的场景。": "當前閘道器未啟用 API Key 鑑權;佔位值只用於客戶端要求非空金鑰的場景。", "当前默认": "當前預設", "思考能力": "思考能力", "恢复作用在网关所在机器;密钥已隐藏,不会覆盖应用后的外部修改。": "恢復作用在閘道器所在機器;金鑰已隱藏,不會覆蓋應用後的外部修改。", "恢复自动检测": "恢復自動檢測", "所有操作作用在网关所在机器。": "所有操作作用在閘道器所在機器。", "所选 Key 下没有可用的对话模型,请先启用模型或手动填写。": "所選 Key 下沒有可用的對話模型,請先啟用模型或手動填寫。", "所选 Key 下没有可用的对话模型,请先启用模型或更换 Key。": "所選 Key 下沒有可用的對話模型,請先啟用模型或更換 Key。", "所选 Key 无权使用当前模型,请重新选择": "所選 Key 無權使用當前模型,請重新選擇", "手动添加模型": "手動新增模型", "手机上只能查看与还原接管。改写配置内容请回桌面端": "手機上只能檢視與還原接管。改寫配置內容請回桌面版", "手机端可查看客户端实际配置并撤销上次应用;编辑方案请使用桌面端。": "手機端可檢視客戶端實際配置並撤銷上次應用;編輯方案請使用桌面版。", "手机端可查看模型配置、撤销上次应用,并管理提示词、Skill 与 MCP。": "手機端可檢視模型配置、撤銷上次應用,並管理提示詞、Skill 與 MCP。", "指定配置路径": "指定配置路徑", "按备份还原": "按備份還原", "按备份还原 {name}?": "按備份還原 {name}?", "换 Key 后会按新 Key 的授权重新核对已选模型": "換 Key 後會按新 Key 的授權重新核對已選模型", "接入后使用此默认模型,其它已选模型仍可在客户端切换。": "接入後使用此預設模型,其他已選模型仍可在客戶端切換。", "接入客户端": "接入客戶端", "接入本网关": "接入本閘道器", "接入状态来自客户端配置文件。恢复前显示差异;文件被其他程序修改时拒绝覆盖。": "接入狀態來自客戶端配置檔案。恢復前顯示差異;檔案被其他程式修改時拒絕覆蓋。", "接入端点": "接入端點", "接口基址": "介面基址", "接管会把客户端的 base_url 指向本网关,并在写入前自动备份原文件。": "接管會把客戶端的 base_url 指向本閘道器,並在寫入前自動備份原檔案。", "搜索客户端": "搜尋客戶端", "搜索客户端 / 配置文件…": "搜尋客戶端 / 配置檔案…", "搜索已选模型": "搜尋已選模型", "搜索模型 ID / 展示名…": "搜尋模型 ID / 展示名…", "撤销上次应用": "撤銷上次應用", "操作目标:网关所在机器": "操作目標:閘道器所在機器", "收起更多配置": "收起更多配置", "收起模型选择": "收起模型選擇", "改写网关所在机器上的客户端配置": "改寫閘道器所在機器上的客戶端配置", "改动": "改動", "放弃修改": "放棄修改", "放弃未保存的修改?": "放棄未儲存的修改?", "新增": "新增", "新增 MCP": "新增 MCP", "新增配置": "新增設定", "新建 Skill": "新建 Skill", "新建文件": "新建檔案", "新建方案或导入当前配置;保存后再决定是否应用。": "新建方案或匯入當前配置;儲存後再決定是否應用。", "新建配置": "新建配置", "新建配置方案": "新建配置方案", "新版网页版和桌面版分别保存模型配置;旧版模型设置共享,MCP 始终只写入所选运行方式。": "新版網頁版和桌面版分別儲存模型設定;舊版模型設定共用,MCP 一律只寫入所選執行方式。", "新配置": "新配置", "方案中的密钥加密保存;客户端原生配置可能要求明文。": "方案中的金鑰加密儲存;客戶端原生配置可能要求明文。", "方案名称": "方案名稱", "方案已保存,尚未应用到客户端": "方案已儲存,尚未應用到客戶端", "无改动": "無改動", "无配置": "無配置", "无需认证": "無需認證", "旧版共享设置": "舊版共用設定", "暂无预览": "暫無預覽", "更多配置": "更多配置", "最多选择 {n} 个模型": "最多選擇 {n} 個模型", "最近检测:{time}": "最近檢測:{time}", "有改动": "有改動", "未声明 / 保留": "未宣告 / 保留", "未安装": "未安裝", "未找到客户端程序或配置文件": "未找到客戶端程式或配置檔案", "未接入本网关": "未接入本閘道器", "未接管": "未接管", "未检测到": "未檢測到", "未检测到安装": "未檢測到安裝", "未读取到可识别的客户端配置": "未讀取到可識別的客戶端配置", "未走网关": "未走閘道器", "本机": "本機", "本机服务": "本機服務", "本机没有找到 {name}": "本機沒有找到 {name}", "本机网关": "本機閘道器", "本网关": "本閘道器", "来自客户端文件,只读": "來自客戶端檔案,只讀", "查看文件改动": "查看檔案變更", "桌面版": "桌面版", "模型 ID": "模型 ID", "模型 ID 不能为空或重复": "模型 ID 不能為空或重複", "模型 id": "模型 id", "模型 {n}": "模型 {n}", "模型展示名": "模型展示名", "模型思考等级": "模型思考等級", "模型或客户端不支持所选思考等级": "模型或用戶端不支援所選的思考等級", "模型未声明思考档位,保留客户端默认,不显示猜测选项。": "模型未宣告思考檔位,保留客戶端預設,不顯示猜測選項。", "模型目录响应无效": "模型目錄回應無效", "模型目录读取失败,可手动填写真实模型 ID。": "模型目錄讀取失敗,可手動填寫真實模型 ID。", "模型配置": "模型配置", "模型默认": "模型預設", "正在检测客户端…": "正在檢測客戶端…", "正在生成准确预览…": "正在生成準確預覽…", "正在生成预览…": "正在生成預覽…", "正在读取本机客户端…": "正在讀取本機客戶端…", "正在读取网关模型并填入配置…": "正在讀取閘道器模型並填入配置…", "此处来自磁盘文件,不代表正在运行的旧会话已经重载。": "此處來自磁碟檔案,不代表正在執行的舊會話已經過載。", "此配置未在客户端中使用,删除不会改变当前使用的配置。": "此設定未在用戶端中使用,刪除不會改變目前使用的設定。", "每个客户端可以有": "每個客戶端可以有", "每个模型独立保存能力;展开可调整,未声明的数据不会猜测填写。": "每個模型獨立儲存能力;展開可調整,未宣告的資料不會猜測填寫。", "没有匹配的客户端": "沒有匹配的客戶端", "没有可导入的新条目(可能还没配过,或已经在我的配置里)": "沒有可匯入的新條目(可能還沒配過,或已經在我的配置裡)", "没有新的条目可收(都已在我的配置里)": "沒有新的條目可收(都已在我的配置裡)", "没有新的配置可以导入": "沒有新的配置可以匯入", "没有检测到可接管的客户端": "沒有檢測到可接管的客戶端", "没有选中配置": "未選取設定", "没有选中配置方案": "沒有選中配置方案", "添加到客户端": "新增至用戶端", "点击右上角「新增配置」,添加网关或其他服务": "點選右上角「新增設定」,加入閘道或其他服務", "点击模型展开详细配置;搜索只筛选显示,不会移除模型。": "點擊模型展開詳細配置;搜尋只篩選顯示,不會移除模型。", "版本未识别": "版本未識別", "状态来自配置文件,已打开的会话可能需要重新加载": "狀態來自設定檔,已開啟的對話可能需要重新載入", "环境变量名": "環境變數名", "生成中…": "生成中…", "留空保留 / 未声明": "留空保留 / 未宣告", "留空保留已保存密钥": "留空保留已儲存金鑰", "留空的分档会以 Claude Code 内置模型名请求网关;网关没有同名模型时该档会失败,建议点「一键设置」。": "留空的分檔會以 Claude Code 內建模型名請求閘道器;閘道器沒有同名模型時該檔會失敗,建議點「一鍵設定」。", "留空表示不写入": "留空表示不寫入", "确定按最近一次备份还原「{name}」?": "確定按最近一次備份還原「{name}」?", "确认": "確認", "确认使用": "確認使用", "确认停用": "確認停用", "确认写入": "確認寫入", "确认写入后会同步修改客户端开关;取消不会生效。": "確認寫入後會同步修改客戶端開關;取消不會生效。", "确认写入后更新客户端默认模型;取消不会生效。": "確認寫入後更新客戶端預設模型;取消不會生效。", "确认写入客户端资源": "確認寫入客戶端資源", "确认删除": "確認刪除", "确认删除客户端资源": "確認刪除客戶端資源", "确认后将切换到此配置,原配置会保留在列表中。": "確認後將切換至此設定,原設定會保留在清單中。", "确认后将更新 {name} 的配置文件,原配置会自动备份。": "確認後將更新 {name} 的設定檔,原設定會自動備份。", "确认后将此配置加入客户端,已有配置会保留。": "確認後將此設定加入用戶端,既有設定會保留。", "确认应用": "確認應用", "确认恢复": "確認恢復", "确认接入": "確認接入", "移除模型会写入客户端配置;其它条目和未知字段保留,确认前可查看差异。": "移除模型會寫入客戶端配置;其它條目和未知欄位保留,確認前可檢視差異。", "移除模型:{name}": "移除模型:{name}", "第一把启用的 Key": "第一把啟用的 Key", "第三方中转": "第三方中轉", "编辑 MCP": "編輯 MCP", "编辑 Skill": "編輯 Skill", "编辑客户端配置": "編輯客戶端配置", "编辑配置": "編輯設定", "编辑配置方案": "編輯配置方案", "编辑:{name}": "編輯:{name}", "网关目录共 {n} 个": "閘道器目錄共 {n} 個", "网页版": "網頁版", "自定义路径": "自訂路徑", "行号由后端逐行比对给出": "行號由後端逐行比對給出", "装好后回到这一页点「重新检测」,它会出现在上面的列表里。": "裝好後回到這一頁點「重新檢測」,它會出現在上面的列表裡。", "视频输入": "影片輸入", "解除接入本网关": "解除接入本閘道器", "认证方式": "認證方式", "设为默认": "設為預設", "请先在「网关 Key」页创建并启用一把 Key": "請先在「閘道器 Key」頁建立並啟用一把 Key", "请在 Zed 提供商设置中保存 API Key;本页不修改系统凭证存储。": "請在 Zed 提供商設定中儲存 API Key;本頁不修改系統憑證儲存。", "请填写 API Key": "請填寫 API Key", "请填写方案名称": "請填寫方案名稱", "请填写有效的 http 或 https 地址": "請填寫有效的 http 或 https 地址", "请填写有效的环境变量名": "請填寫有效的環境變數名", "请填写配置名称": "請填寫設定名稱", "请至少添加一个模型": "請至少新增一個模型", "请补全配置后使用": "請補齊設定後使用", "请输入密钥": "請輸入金鑰", "请选择": "請選擇", "请选择模型": "請選擇模型", "读取失败": "讀取失敗", "读取客户端配置失败:{reason}": "讀取客戶端配置失敗:{reason}", "走网关": "走閘道器", "路径属于网关所在机器,不是浏览器所在设备。只改变检测目标,不修改客户端文件。": "路徑屬於閘道器所在機器,不是瀏覽器所在裝置。只改變檢測目標,不修改客戶端檔案。", "输出上限": "輸出上限", "返回编辑": "返回編輯", "还原中…": "還原中…", "还原失败:{reason}": "還原失敗:{reason}", "还没有配置": "還沒有配置", "还没有配置。点「新建配置」建一套指向本机网关的,再写入客户端。": "還沒有配置。點「新建配置」建一套指向本機閘道器的,再寫入客戶端。", "还没有预览。选一套配置后这里会显示写入客户端之后的样子。": "還沒有預覽。選一套配置後這裡會顯示寫入客戶端之後的樣子。", "这个客户端不从网关目录选模型,用右侧的「添加模型」逐个填写。": "這個客戶端不從閘道器目錄選模型,用右側的「新增模型」逐個填寫。", "这个客户端不支持所选协议": "這個客戶端不支援所選協議", "这个客户端不能接入本网关": "這個客戶端不能接入本閘道器", "这个客户端会自己重读配置,写入后开新会话即生效。": "這個客戶端會自己重讀配置,寫入後開新會話即生效。", "这个客户端只在启动时读配置:写入后重开一个会话才生效。": "這個客戶端只在啟動時讀配置:寫入後重開一個會話才生效。", "这个客户端的配置里没有读出地址(可能还没配过,或形状不认识)": "這個客戶端的配置裡沒有讀出地址(可能還沒配過,或形狀不認識)", "这个客户端自己支持多套配置并存": "這個客戶端自己支援多套配置並存", "这个客户端自己管理多套配置,可同时启用多条;切换只改 enabled 与默认项,不动它的模型清单。": "這個客戶端自己管理多套配置,可同時啟用多條;切換隻改 enabled 與預設項,不動它的模型清單。", "这个客户端还没有 MCP": "這個客戶端還沒有 MCP", "这个客户端还没有 Skill": "這個客戶端還沒有 Skill", "这个客户端需要填写模型上下文窗口": "這個客戶端需要填寫模型上下文視窗", "这套配置是干什么用的(只显示在本页)": "這套配置是幹什麼用的(只顯示在本頁)", "这是待应用状态;保存不会立即改变客户端开关。": "這是待應用狀態;儲存不會立即改變客戶端開關。", "这里只调整此模型,不影响其它模型。": "這裡只調整此模型,不影響其他模型。", "这里只选择客户端实际支持的协议,不改变上游提供商协议。": "這裡只選擇客戶端實際支援的協議,不改變上游提供商協議。", "连接方式": "連線方式", "连接配置": "連線配置", "选一个客户端开始": "選一個客戶端開始", "选择 MCP": "選擇 MCP", "选择 Skill": "選擇 Skill", "选择模型": "選擇模型", "选择网关 Key": "選擇閘道器 Key", "选择要接入的模型;确认前展示文件改动,写入前自动备份。": "選擇要接入的模型;確認前顯示檔案變更,寫入前自動備份。", "选择配置目标": "選擇設定目標", "通常以 /v1 结尾,不要附加具体请求路径。": "通常以 /v1 結尾,不要附加具體請求路徑。", "部分已选模型已不可用或所选 Key 无权使用,请移除或更换 Key。": "部分已選模型已不可用或所選 Key 無權使用,請移除或更換 Key。", "配置": "配置", "配置位置与说明": "設定位置與說明", "配置列表": "設定清單", "配置列表格式不匹配,请重启网关后刷新页面": "設定清單格式不符,請重新啟動閘道後重新整理頁面", "配置可读写": "配置可讀寫", "配置名称": "設定名稱", "配置差异": "配置差異", "配置已保存,可在列表中点击使用": "設定已儲存,可在清單中點選使用", "配置已删除": "設定已刪除", "配置已删除,客户端文件已同步更新": "設定已刪除,用戶端檔案已同步更新", "配置已应用并读回校验;请重开客户端或会话": "配置已應用並讀回校驗;請重開客戶端或會話", "配置已恢复并校验": "配置已恢復並校驗", "配置操作": "設定操作", "配置文件已写入并校验;尚未验证 DSH 是否加载,请在所选客户端新建会话确认。": "設定檔已寫入並驗證;尚未確認 DSH 是否載入,請在所選用戶端建立新對話確認。", "配置来源": "配置來源", "重新填入目录能力": "重新填入目錄能力", "重新检测": "重新檢測", "重新生成预览": "重新生成預覽", "需要重新编辑:": "需要重新編輯:", "需重开会话生效": "需重開會話生效", "预览并保存": "預覽並儲存", "预览草稿改动": "預覽草稿改動", "高": "高", "高级选项": "進階選項", "默认模型": "預設模型", "默认模型必须来自模型列表": "預設模型必須來自模型列表", "默认模型思考等级": "預設模型思考等級", "(手机读不到本机文件)": "(手機讀不到本機檔案)", "(本机网关 / 官方直连 / 第三方中转 / 本机服务),随时切换。单配置客户端切换 = 整段覆写并备份原文件;多配置客户端(如 ZCode)只改 enabled 与默认项,它自己的条目一律不动。": "(本機閘道器 / 官方直連 / 第三方中轉 / 本機服務),隨時切換。單配置客戶端切換 = 整段覆寫並備份原檔案;多配置客戶端(如 ZCode)只改 enabled 與預設項,它自己的條目一律不動。", "API Key 无效或无权限": "API Key 無效或無許可權", "API 接口文档": "API 介面文件", "DSH 使用 Agent 页当前选择的配置目标。写入后请在 DSH 中确认工具是否出现,必要时重启对应客户端。": "DSH 使用 Agent 頁目前選擇的設定目標。寫入後請在 DSH 中確認工具是否出現,必要時重新啟動對應用戶端。", "Key 明文只会写入所选客户端的本机配置文件。": "Key 明文只會寫入所選客戶端的本機配置檔案。", "MCP & Skills": "MCP & Skills", "MCP 接入信息": "MCP 接入資訊", "Node.js 无需额外依赖,推荐使用;Python 需要本机有 python。": "Node.js 無需額外依賴,推薦使用;Python 需要本機有 python。", "{name} 接入客户端": "{name} 接入客戶端", "上游提供商": "上游提供商", "上游提供商配置": "上游提供商配置", "上游提供商配置由各接入协议共享,改动后所有协议同时生效。": "上游提供商配置由各接入協議共享,改動後所有協議同時生效。", "上游没有返回结果": "上游沒有返回結果", "上游请求超时": "上游請求超時", "下载图片 {index}": "下載圖片 {index}", "不指定": "不指定", "中文": "中文", "仅搜索": "僅搜尋", "仅支持单选,默认为 Tavily。": "僅支援單選,預設為 Tavily。", "仅显示已启用且至少有一个可用模型的提供商。": "僅顯示已啟用且至少有一個可用模型的提供商。", "仅显示该提供商下已启用的模型。": "僅顯示該提供商下已啟用的模型。", "任务编号或原提交编号,至少提供一项": "任務編號或原提交編號,至少提供一項", "作为远程 MCP 服务,在支持 MCP 的客户端配置里填写地址即可接入。": "作為遠端 MCP 服務,在支援 MCP 的客戶端配置裡填寫地址即可接入。", "使用已有账号生成或编辑图片,支持任务查询与本机文件保存。": "使用已有帳號生成或編輯圖片,支援任務查詢與本機檔案儲存。", "保存能力配置": "儲存能力配置", "保留至 {time}": "保留至 {time}", "共 {count} 项能力": "共 {count} 項能力", "内部请求本站网关时使用的网关 Key;额度、限流与请求日志记在该 Key 上。": "內部請求本站閘道器時使用的閘道器 Key;額度、限流與請求日誌記在該 Key 上。", "内部调用 API Key": "內部呼叫 API Key", "写入失败": "寫入失敗", "写入配置": "寫入配置", "单次图片上限": "單次圖片上限", "卸载失败": "解除安裝失敗", "参考图允许读取的目录": "參考圖允許讀取的目錄", "参考图链接或已生成图片 ID;本地桥接还可传文件路径": "參考圖連結或已生成圖片 ID;本地橋接還可傳檔案路徑", "取消全选": "取消全選", "只保存新文件,不覆盖已有不同内容。目录权限写入客户端配置,更新配置时需要重新确认。": "只儲存新檔案,不覆蓋已有不同內容。目錄許可權寫入客戶端配置,更新配置時需要重新確認。", "可选。留空时不传,由模型映射的「思考覆盖」决定。": "可選。留空時不傳,由模型對映的「思考覆蓋」決定。", "可选,每行一个已有绝对目录。输出目录默认允许读取;其他位置的文件不会读取或上传。": "可選,每行一個已有絕對目錄。輸出目錄預設允許讀取;其他位置的檔案不會讀取或上傳。", "启用 / 停用此服务": "啟用 / 停用此服務", "图片分析": "圖片分析", "图片占用 {used} MiB,生成中预留 {reserved} MiB。": "圖片佔用 {used} MiB,生成中預留 {reserved} MiB。", "图片生成配置": "圖片生成配置", "图片生成配置已保存": "圖片生成配置已儲存", "图片输出目录": "圖片輸出目錄", "在支持远程 MCP 的客户端中填写该地址,并使用网关 Key 作为 Bearer 令牌。": "在支援遠端 MCP 的客戶端中填寫該地址,並使用閘道器 Key 作為 Bearer 權杖。", "复制失败,请手动选择后复制": "複製失敗,請手動選擇後複製", "复制文档": "複製文件", "复用「账号」页的登录态,不需要额外填写搜索密钥。账号停用或删除后不会自动换号。": "複用「帳號」頁的登入態,不需要額外填寫搜尋金鑰。帳號停用或刪除後不會自動換號。", "复用已有账号生图,不改变 Agent 的对话模型。实际调用遵守接入 Key 的模型和提供商权限。": "複用已有帳號生圖,不改變 Agent 的對話模型。實際呼叫遵守接入 Key 的模型和提供商許可權。", "存储上限(MiB)": "儲存上限(MiB)", "安装目标": "安裝目標", "完整的图片要求": "完整的圖片要求", "客户端环境": "客戶端環境", "客户端调用超时设为 120 秒;后台生成超时由服务配置控制,未完成时通过任务编号查询。": "客戶端呼叫超時設為 120 秒;後臺生成超時由服務配置控制,未完成時通過任務編號查詢。", "客户端配置示例": "客戶端配置示例", "密钥已清除": "金鑰已清除", "密钥或账号登录态无效": "金鑰或帳號登入態無效", "密钥提示": "金鑰提示", "将按服务的工具执行超时({seconds} 秒)同步写入客户端配置。": "將按服務的工具執行超時({seconds} 秒)同步寫入客戶端配置。", "将搜索、视觉等能力通过 MCP 或 Skills 接入客户端。": "透過 MCP 或 Skills,讓用戶端使用搜尋、視覺等功能。", "尚未配置图片生成,请先选择可用的生图模型并保存。": "尚未配置圖片生成,請先選擇可用的生圖模型並儲存。", "尚未配置视觉模型,配置前调用方会收到“未配置”错误。": "尚未配置視覺模型,配置前呼叫方會收到“未配置”錯誤。", "工具执行超时": "工具執行超時", "工具执行超时已保存": "工具執行超時已儲存", "工具服务": "工具服務", "已写入 {count} 个客户端配置": "已寫入 {count} 個客戶端配置", "已处理 {count} 个目标": "已處理 {count} 個目標", "已复制": "已複製", "已失效": "已失效", "已安装到 {count} 个客户端": "已安裝到 {count} 個客戶端", "已完成": "已完成", "已完成 {count} 个目标": "已完成 {count} 個目標", "已接入 {count} 个目标": "已接入 {count} 個目標", "已有账号": "已有帳號", "已有账号搜索只支持搜索,不支持网页抓取;请求会使用绑定账号的额度与出网设置。": "已有帳號搜尋只支援搜尋,不支援網頁抓取;請求會使用繫結帳號的額度與出網設定。", "已检查保存的配置,未发起生图;账号实际额度与上游可用性以调用结果为准。": "已檢查儲存的配置,未發起生圖;帳號實際額度與上游可用性以呼叫結果為準。", "已绑定的搜索账号不存在,请重新选择": "已繫結的搜尋帳號不存在,請重新選擇", "已绑定的搜索账号已停用": "已繫結的搜尋帳號已停用", "已绑定账号不可用,请重新选择": "已繫結帳號不可用,請重新選擇", "已过期或清理": "已過期或清理", "已选择 {count} / {total} 个": "已選擇 {count} / {total} 個", "已配置的 API Key 已失效(被删除或禁用),请重新选择并保存。": "已配置的 API Key 已失效(被刪除或停用),請重新選擇並儲存。", "当前提供商插件不支持账号搜索,请更新插件": "當前提供商外掛不支援帳號搜尋,請更新外掛", "当前模型:{provider} / {model}": "當前模型:{provider} / {model}", "当前没有可用的安装目标": "當前沒有可用的安裝目標", "当前没有已安装/已配置的目标": "當前沒有已安裝/已配置的目標", "当前网关 Key 无权使用所选账号搜索来源": "當前閘道器 Key 無權使用所選帳號搜尋來源", "打包为 Agent Skill,由 Agent2API 面板安装到本机客户端目录。": "打包為 Agent Skill,由 Agent2API 面板安裝到本機客戶端目錄。", "批量抓取 1~10 个 URL,使用后台选中的单个抓取提供商。": "批次抓取 1~10 個 URL,使用後臺選中的單個抓取提供商。", "批量搜索 1~10 条查询,并发调用后台选中的提供商后合并重复来源。": "批次搜尋 1~10 條查詢,併發呼叫後臺選中的提供商後合併重複來源。", "批量网页抓取": "批次網頁抓取", "批量网页抓取提供商": "批次網頁抓取提供商", "批量网页搜索": "批次網頁搜尋", "批量网页搜索不可用:所选提供商均未启用或未配置密钥。": "批次網頁搜尋不可用:所選提供商均未啟用或未配置金鑰。", "批量网页搜索不可用:请启用来源并配置密钥或绑定可用账号。": "批次網頁搜尋不可用:請啟用來源並配置金鑰或繫結可用帳號。", "批量网页搜索可用:将使用 {ready},未配置的 {missing} 会自动跳过。": "批次網頁搜尋可用:將使用 {ready},未配置的 {missing} 會自動跳過。", "批量网页搜索可用:所选提供商均已启用并配置密钥。": "批次網頁搜尋可用:所選提供商均已啟用並配置金鑰。", "批量网页搜索可用:所选来源均已启用并配置完成。": "批次網頁搜尋可用:所選來源均已啟用並配置完成。", "批量网页搜索提供商": "批次網頁搜尋提供商", "批量网页搜索至少选择一个提供商": "批次網頁搜尋至少選擇一個提供商", "把 1~10 张图片与提示词交给后台配置的视觉模型,返回模型回复文本。": "把 1~10 張圖片與提示詞交給後臺配置的視覺模型,返回模型回覆文本。", "把下面这段合并到客户端配置的 mcpServers 里,并把 Key 换成你自己的。": "把下面這段合併到客戶端配置的 mcpServers 裡,並把 Key 換成你自己的。", "把图片与提示词交给后台配置的视觉模型分析,并把模型回复返回给调用方的大模型。": "把圖片與提示詞交給後臺配置的視覺模型分析,並把模型回覆返回給呼叫方的大模型。", "抓取:{name}": "抓取:{name}", "按参考图修改,仅在配置了可用编辑模型时提供。": "按參考圖修改,僅在配置了可用編輯模型時提供。", "按描述使用已配置的模型生图,默认一张,会消耗账号额度。": "按描述使用已配置的模型生圖,預設一張,會消耗帳號額度。", "接入协议": "接入協議", "接入方式": "接入方式", "提供 REST API,任何能发 HTTP 请求的程序都可以携带网关 Key 直接调用。": "提供 REST API,任何能發 HTTP 請求的程式都可以攜帶閘道器 Key 直接呼叫。", "提供商尚未配置密钥": "提供商尚未配置金鑰", "提供商尚未配置有效密钥": "提供商尚未配置有效金鑰", "提供商插件暂不可用": "提供商外掛暫不可用", "提供商插件未安装或未启用": "提供商外掛未安裝或未啟用", "提供商暂不可用或配置有误": "提供商暫不可用或配置有誤", "提供商选择": "提供商選擇", "提示词,描述要让模型在图片中查看的内容": "提示詞,描述要讓模型在圖片中檢視的內容", "插件搜索能力声明不完整,请更新插件": "外掛搜尋能力宣告不完整,請更新外掛", "插件返回的搜索来源格式不正确": "外掛返回的搜尋來源格式不正確", "搜索、视觉与生图共用网关配置。本机客户端的 MCP 安装在桌面端完成。": "搜尋、視覺與生圖共用閘道器配置。本機客戶端的 MCP 安裝在桌面版完成。", "搜索参数不符合该来源的要求": "搜尋引數不符合該來源的要求", "搜索提供商没有返回来源": "搜尋提供商沒有返回來源", "搜索服务拒绝了该账号,请检查账号权限": "搜尋服務拒絕了該帳號,請檢查帳號許可權", "搜索来源配置不完整": "搜尋來源配置不完整", "搜索请求超时": "搜尋請求超時", "搜索账号不属于该提供商,请重新选择": "搜尋帳號不屬於該提供商,請重新選擇", "搜索账号登录态已失效,请重新登录": "搜尋帳號登入態已失效,請重新登入", "搜索额度已用完或触发限流": "搜尋額度已用完或觸發限流", "支持多选。每次搜索会并发调用所选提供商并合并重复来源。": "支援多選。每次搜尋會併發呼叫所選提供商併合並重復來源。", "无法确认插件搜索能力,请更新或重启提供商插件": "無法確認外掛搜尋能力,請更新或重啟提供商外掛", "暂无生图记录,连接 MCP 后即可让 Agent 生成图片。": "暫無生圖記錄,連線 MCP 後即可讓 Agent 生成圖片。", "暴露的工具": "暴露的工具", "更新时间": "更新時間", "最大生成并发": "最大生成併發", "最近生成记录": "最近生成記錄", "服务与协议": "服務與協議", "服务入口": "服務入口", "服务名称": "服務名稱", "服务地址": "服務地址", "服务状态已更新": "服務狀態已更新", "服务端强制单次工具执行的超时上限(同一服务的 Skill / MCP / API 共用)。安装 MCP 时会按此值写入客户端配置;修改后需在客户端重新「更新」配置并重进会话才会生效。": "服務端強制單次工具執行的超時上限(同一服務的 Skill / MCP / API 共用)。安裝 MCP 時會按此值寫入客戶端配置;修改後需在客戶端重新「更新」配置並重進會話才會生效。", "服务端强制单次工具执行的超时上限(同一服务的 Skill / MCP 共用)。安装 MCP 时会按此值写入客户端配置;修改后需在客户端重新「更新」配置并重进会话才会生效。": "服務端強制單次工具執行的超時上限(同一服務的 Skill / MCP 共用)。安裝 MCP 時會按此值寫入客戶端配置;修改後需在客戶端重新「更新」配置並重進會話才會生效。", "服务能力": "服務能力", "服务配置": "服務配置", "未选择账号": "未選擇帳號", "本地桥接": "本地橋接", "本地桥接会在本机运行一个 node 脚本,支持直接传本地图片路径,推荐在桌面端使用。": "本地橋接會在本機執行一個 node 指令碼,支援直接傳本地圖片路徑,推薦在桌面版使用。", "本地桥接需要 Node.js 18 或更新版本,自动读取授权目录的参考图并保存生成结果;HTTP 接入只返回下载地址。": "本地橋接需要 Node.js 18 或更新版本,自動讀取授權目錄的參考圖並儲存生成結果;HTTP 接入只返回下載地址。", "本机接入": "本機接入", "本次提交的唯一编号,断线重试使用原编号": "本次提交的唯一編號,斷線重試使用原編號", "查询原任务并取回图片,不再次生图或扣费。": "查詢原任務並取回圖片,不再次生圖或扣費。", "查询生成结果": "查詢生成結果", "检查配置": "檢查配置", "正在加载安装目标…": "正在載入安裝目標…", "正在加载工具服务…": "正在載入工具服務…", "正在加载工具服务配置…": "正在載入工具服務配置…", "每条搜索词最多 {count} 字": "每條搜尋詞最多 {count} 字", "没有匹配的工具服务": "沒有匹配的工具服務", "没有可用的工具服务": "沒有可用的工具服務", "没有可用的生图模型,请先添加账号、启用对应插件并更新模型目录。": "沒有可用的生圖模型,請先新增帳號、啟用對應外掛並更新模型目錄。", "没有可用的网关 Key": "沒有可用的閘道器 Key", "没有可绑定的启用账号,请先到「账号」页添加或启用。": "沒有可繫結的啟用帳號,請先到「帳號」頁新增或啟用。", "没有可配置的提供商": "沒有可配置的提供商", "清理这次生成的临时图片?已保存到本机的文件不会被删除,原提交编号也不会重新生图。": "清理這次生成的臨時圖片?已儲存到本機的檔案不會被刪除,原提交編號也不會重新生圖。", "清除密钥": "清除金鑰", "清除配置": "清除配置", "点击「复制文档」可复制整份 Markdown 文档,直接发给对接方即可。": "點擊「複製文件」可複製整份 Markdown 文件,直接發給對接方即可。", "生图模型": "生圖模型", "生图账号": "生圖帳號", "生成中": "生成中", "生成较慢时先返回任务编号。断线后查询原任务,不自动重画;超时不代表没有扣费。": "生成較慢時先返回任務編號。斷線後查詢原任務,不自動重畫;超時不代表沒有扣費。", "确定清除提供商 {name} 的 API Key?清除后该提供商将不可用,直到重新保存新密钥。": "確定清除提供商 {name} 的 API Key?清除後該提供商將不可用,直到重新儲存新金鑰。", "移除 {name} 配置": "移除 {name} 配置", "空白的 API Key 不会覆盖已保存的密钥。": "空白的 API Key 不會覆蓋已儲存的金鑰。", "管理可供客户端安装和运行的工具服务,并配置上游提供商与能力。": "管理可供客戶端安裝和執行的工具服務,並配置上游提供商與能力。", "结果不确定": "結果不確定", "结果保留(小时)": "結果保留(小時)", "编辑 {name}": "編輯 {name}", "编辑可使用不同模型;未配置可用编辑模型时,不向 Agent 提供编辑工具。": "編輯可使用不同模型;未配置可用編輯模型時,不向 Agent 提供編輯工具。", "编辑提供商 {name}": "編輯提供商 {name}", "编辑模型": "編輯模型", "网络搜索": "網路搜尋", "网络搜索与视觉分析:网关侧配置,改完立即生效。本机客户端的安装在桌面端完成。": "網路搜尋與視覺分析:閘道器側配置,改完立即生效。本機客戶端的安裝在桌面版完成。", "聚合 Tavily、Querit、Firecrawl、Ollama Web Search,提供批量网页搜索与网页抓取能力。": "聚合 Tavily、Querit、Firecrawl、Ollama Web Search,提供批次網頁搜尋與網頁抓取能力。", "聚合标准搜索服务及已有 WorkBuddy、Kiro 账号的搜索能力;网页抓取仍使用标准服务。": "聚合標準搜尋服務及已有 WorkBuddy、Kiro 帳號的搜尋能力;網頁抓取仍使用標準服務。", "能力提供商配置已保存": "能力提供商配置已儲存", "能力数量": "能力數量", "自动选择仅在所选提供商内遵守现有路由;固定账号仍受停用、冷却与额度限制,不会自动换号。": "自動選擇僅在所選提供商內遵守現有路由;固定帳號仍受停用、冷卻與額度限制,不會自動換號。", "自动选择账号": "自動選擇帳號", "至少选择一个搜索提供商": "至少選擇一個搜尋提供商", "获取 API Key": "獲取 API Key", "要分析的图片(1~10 张),每张为 http(s) URL 或图片 data URI": "要分析的圖片(1~10 張),每張為 http(s) URL 或圖片 data URI", "要抓取并提取正文的网页 URL(1~10 个)": "要抓取並提取正文的網頁 URL(1~10 個)", "要搜索的查询,每条并发执行(1~10 条)": "要搜尋的查詢,每條併發執行(1~10 條)", "视觉分析": "視覺分析", "视觉服务配置已保存": "視覺服務配置已儲存", "视觉服务配置已清除": "視覺服務配置已清除", "视觉模型配置": "視覺模型配置", "视觉链路测试失败": "視覺鏈路測試失敗", "视觉链路连通:耗时 {duration}ms": "視覺鏈路連通:耗時 {duration}ms", "触发上游限流": "觸發上游限流", "该协议已停用,已接入的客户端会收到服务停用错误。": "該協議已停用,已接入的客戶端會收到服務停用錯誤。", "该协议通过 Agent2API 面板安装到本机客户端目录。": "該協議通過 Agent2API 面板安裝到本機客戶端目錄。", "该提供商不支持网页抓取": "該提供商不支援網頁抓取", "该搜索来源使用 API Key,不接受账号绑定": "該搜尋來源使用 API Key,不接受帳號繫結", "该搜索来源使用已有账号,不接受 API Key": "該搜尋來源使用已有帳號,不接受 API Key", "请先选择 API Key": "請先選擇 API Key", "请先选择提供商": "請先選擇提供商", "请先选择搜索使用的账号": "請先選擇搜尋使用的帳號", "请求参数无效": "請求引數無效", "请至少选择一个目标": "請至少選擇一個目標", "请选择 API Key": "請選擇 API Key", "请选择内部调用 API Key": "請選擇內部呼叫 API Key", "请选择图片输出目录": "請選擇圖片輸出目錄", "请选择提供商与上游模型": "請選擇提供商與上游模型", "调用用的 API Key": "呼叫用的 API Key", "账号搜索暂不可用,请检查账号及插件状态": "帳號搜尋暫不可用,請檢查帳號及外掛狀態", "账号搜索配置不完整,请重新选择账号或更新插件": "帳號搜尋配置不完整,請重新選擇帳號或更新外掛", "超时 {seconds}s": "超時 {seconds}s", "输入新密钥;留空保持不变": "輸入新金鑰;留空保持不變", "运行时": "執行時", "还没有可用的提供商,请先在「账号」页添加账号并在「模型管理」页确认有已启用的模型。": "還沒有可用的提供商,請先在「帳號」頁新增帳號並在「模型管理」頁確認有已啟用的模型。", "还没有可用的提供商,请先在桌面端添加账号并确认有已启用的模型。": "還沒有可用的提供商,請先在桌面版新增帳號並確認有已啟用的模型。", "这是后台生成任务的时间上限。单次 MCP 调用最多等待 20 秒,未完成时返回任务编号;查询不会重新生图。": "這是後臺生成任務的時間上限。單次 MCP 呼叫最多等待 20 秒,未完成時返回任務編號;查詢不會重新生圖。", "这里管理的是「客户端能用什么」:服务是否对外提供、上游提供商与密钥、视觉分析用哪个模型。": "這裡管理的是「客戶端能用什麼」:服務是否對外提供、上游提供商與金鑰、視覺分析用哪個模型。", "远程 HTTP": "遠端 HTTP", "远程 HTTP 只接受图片 URL 或 data URI,不需要本机安装 node。": "遠端 HTTP 只接受圖片 URL 或 data URI,不需要本機安裝 node。", "连接成功:{count} 条结果,耗时 {duration}ms": "連線成功:{count} 條結果,耗時 {duration}ms", "连接测试失败": "連線測試失敗", "选择处理图片的上游提供商与模型。调用时会用内部 Key 经本站网关请求该模型,协议转换、重试与故障转移全部复用网关。": "選擇處理圖片的上游提供商與模型。呼叫時會用內部 Key 經本站閘道器請求該模型,協議轉換、重試與故障轉移全部複用閘道器。", "选择安装目标、运行时与调用用的 API Key。Skill 包与密钥只写入所选客户端的本机目录。": "選擇安裝目標、執行時與呼叫用的 API Key。Skill 包與金鑰只寫入所選客戶端的本機目錄。", "选择已有目录,图片只会写入此目录及其子目录": "選擇已有目錄,圖片只會寫入此目錄及其子目錄", "选择目录": "選擇目錄", "选择要从中移除的客户端,未勾选的客户端保持不变。": "選擇要從中移除的客戶端,未勾選的客戶端保持不變。", "选择要写入 MCP 配置的客户端。配置只动本服务那一项,客户端原有的其它 MCP 服务保持不变。": "選擇要寫入 MCP 配置的客戶端。配置只動本服務那一項,客戶端原有的其它 MCP 服務保持不變。", "配置搜索与抓取所使用的上游提供商。调用方不再传递 provider,运行时始终使用这里保存的设置。": "配置搜尋與抓取所使用的上游提供商。呼叫方不再傳遞 provider,執行時始終使用這裡儲存的設定。", "默认只生成一张。空间不足时先拒绝请求,不消耗生图额度;只清理过期结果,已保存到本机目录的文件不受影响。": "預設只生成一張。空間不足時先拒絕請求,不消耗生圖額度;只清理過期結果,已儲存到本機目錄的檔案不受影響。", " 到 {file}": " 到 {file}", " 正文已改:{edited}(其余段用官方原文)。": " 正文已改:{edited}(其餘段用官方原文)。", "(无 id)": "(無 id)", "/v1 拒绝无 Key 请求": "/v1 拒絕無 Key 請求", "0 B": "0 B", "100%(默认)": "100%(預設)", "<本机IP>": "<本機IP>", "ALTCHA(本地验证)": "ALTCHA(本機驗證)", "Access Key ID": "Access Key ID", "Agent2API 手机端": "Agent2API 手機端", "Android 应用(APK)": "Android 應用(APK)", "Cline 上游按请求头判定「调用方是不是 Cline 自家产品」:X-CLIENT-TYPE: cline-sdk 是硬门槛(缺了它免费池模型一律 403),版本号与平台标识让请求更贴近官方客户端的形态。这里列出的是网关默认会发的头:改某一行的值 = 覆盖默认值(也可以新增默认清单之外的自定义头);把值清空保存 = 这个头不发送;在界面删掉被改过的行 = 回落默认值。改完点「保存」,下一个 Cline 请求立即生效。不懂某一行的含义就不要动它 —— 伪装头的价值在「与官方客户端逐字一致」。": "Cline 上游按請求頭判定「呼叫方是不是 Cline 自家產品」:X-CLIENT-TYPE: cline-sdk 是硬門檻(缺了它免費池模型一律 403),版本號與平臺標識讓請求更貼近官方客戶端的形態。這裡列出的是閘道器預設會發的頭:改某一行的值 = 覆蓋預設值(也可以新增預設清單之外的自定義頭);把值清空儲存 = 這個頭不傳送;在介面刪掉被改過的行 = 回落預設值。改完點「儲存」,下一個 Cline 請求立即生效。不懂某一行的含義就不要動它 —— 偽裝頭的價值在「與官方客戶端逐字一致」。", "Cline 伪装头": "Cline 偽裝頭", "Cline 伪装头已刷新": "Cline 偽裝頭已重新整理", "Docker 容器": "Docker 容器", "Endpoint": "Endpoint", "Endpoint 填 https://<账户ID>.r2.cloudflarestorage.com,Region 固定填 auto。": "Endpoint 填 https://<帳戶ID>.r2.cloudflarestorage.com,Region 固定填 auto。", "Endpoint 填 https://cos.ap-guangzhou.myqcloud.com,Region 填 ap-guangzhou(按实际地域改)。": "Endpoint 填 https://cos.ap-guangzhou.myqcloud.com,Region 填 ap-guangzhou(按實際地域改)。", "Endpoint 填 https://obs.cn-north-4.myhuaweicloud.com,Region 填 cn-north-4(按实际地域改)。": "Endpoint 填 https://obs.cn-north-4.myhuaweicloud.com,Region 填 cn-north-4(按實際地域改)。", "Endpoint 填 https://oss-cn-hangzhou.aliyuncs.com,Region 填 cn-hangzhou(按实际地域改)。": "Endpoint 填 https://oss-cn-hangzhou.aliyuncs.com,Region 填 cn-hangzhou(按實際地域改)。", "Endpoint 形如 http://192.168.1.10:9000(自建通常用 http);Region 一般填 us-east-1。": "Endpoint 形如 http://192.168.1.10:9000(自建通常用 http);Region 一般填 us-east-1。", "Endpoint 留空即走 AWS 官方地址;Region 必须与桶所在区域一致。": "Endpoint 留空即走 AWS 官方地址;Region 必須與桶所在區域一致。", "KB": "KB", "Linux 安装包(deb)": "Linux 安裝包(deb)", "Logo 不能超过 2 MiB": "Logo 不能超過 2 MiB", "Logo 仅支持 PNG、JPG、WebP 图片": "Logo 僅支援 PNG、JPG、WebP 圖片", "Nextcloud": "Nextcloud", "OpenAI 新版 API 用 developer 角色取代 system 承载指令,新版 OpenAI SDK 与部分客户端发的对话里会出现 role 为 developer 的消息;不少 OpenAI 兼容上游(尤其是自定义提供商的透传路径)不认识这个角色,收到就报 400。开启本项后,网关在每次转发前把 developer 角色的消息改写为 system —— 两类角色在 OpenAI 语义上等价(OpenAI 自己的迁移指南也是这么映射的),改写不影响对话内容与语义;对本来就只认 system 的各家内置上游同样无害。默认开启;关掉后 developer 消息会原样发往上游,不认识它的上游会报「角色不存在」一类的错误。": "OpenAI 新版 API 用 developer 角色取代 system 承載指令,新版 OpenAI SDK 與部分客戶端發的對話裡會出現 role 為 developer 的訊息;不少 OpenAI 相容上游(尤其是自定義提供商的透傳路徑)不認識這個角色,收到就報 400。開啟本項後,閘道器在每次轉發前把 developer 角色的訊息改寫為 system —— 兩類角色在 OpenAI 語義上等價(OpenAI 自己的遷移指南也是這麼對映的),改寫不影響對話內容與語義;對本來就只認 system 的各家內建上游同樣無害。預設開啟;關掉後 developer 訊息會原樣發往上游,不認識它的上游會報「角色不存在」一類的錯誤。", "QQ 群 · Telegram": "QQ 群 · Telegram", "S3 兼容存储": "S3 相容儲存", "Safari 没有安装按钮:点底部的「分享」,选「添加到主屏幕」,再点「添加」。": "Safari 沒有安裝按鈕:點底部的「分享」,選「新增到主螢幕」,再點「新增」。", "Secret Access Key": "Secret Access Key", "Token 读数量级": "Token 讀數量級", "UTF-8 文本文件路径。留空用内置默认;只在「替换 / 追加」下读取。": "UTF-8 文本檔案路徑。留空用內建預設;只在「替換 / 追加」下讀取。", "UTF-8 文本文件路径,留空用内置默认提示词(通用编码助手提示词,不含任何会被上游拦截的模板句)。只在「替换 / 追加」模式下生效,透传模式不读它。": "UTF-8 文本檔案路徑,留空用內建預設提示詞(通用編碼助手提示詞,不含任何會被上游攔截的模板句)。只在「替換 / 追加」模式下生效,透傳模式不讀它。", "WebView / 浏览器内核": "WebView / 瀏覽器核心", "Windows 安装包(NSIS)": "Windows 安裝包(NSIS)", "Windows 服务": "Windows 服務", "ZCode 套餐池(Start Plan)通道每条请求都要消耗一个当次铸造的人机验证令牌(一次性,2 分钟过期),库存低于该值时界面自动补铸到它。默认 3 个。调大能吸收突发并发,但用不掉的令牌 2 分钟就过期作废,烧的是上游风控配额。可填 1–10。": "ZCode 套餐池(Start Plan)通道每條請求都要消耗一個當次鑄造的人機驗證權杖(一次性,2 分鐘過期),庫存低於該值時介面自動補鑄到它。預設 3 個。調大能吸收突發併發,但用不掉的權杖 2 分鐘就過期作廢,燒的是上游風控配額。可填 1–10。", "ZCode 客户端版本号": "ZCode 客戶端版本號", "ZCode 活动套餐通道每条请求都要消耗一个当次铸造的人机验证令牌(一次性,2 分钟过期),库存低于该值时界面自动补铸到它。默认 3 个。调大能吸收突发并发,但用不掉的令牌 2 分钟就过期作废,烧的是上游风控配额。可填 1–10。": "ZCode 活動套餐通道每條請求都要消耗一個當次鑄造的人機驗證權杖(一次性,2 分鐘過期),庫存低於該值時介面自動補鑄到它。預設 3 個。調大能吸收突發併發,但用不掉的權杖 2 分鐘就過期作廢,燒的是上游風控配額。可填 1–10。", "ZCode 版本号已刷新": "ZCode 版本號已重新整理", "ZCode 的活动套餐(限时体验礼包)由上游按**客户端版本号**决定下不下发:探测接口只在版本号达到当期门槛时才返回套餐列表,版本落后时回一份空列表(不是报错,所以界面上看起来像「没有活动」)。2026-10 那期实测:3.16.0 及以下全空,3.16.1 起才有礼包。插件内置的默认值会随活动更新,但上游每期可能再抬高一档 —— 那时如果官方客户端里能看到活动、这里却探测为空,就在这里填官方客户端当前的版本号(形如 3.16.2)。环境变量 ZCODE_APP_VERSION 优先级更高。": "ZCode 的活動套餐(限時體驗禮包)由上游按**客戶端版本號**決定下不下發:探測介面只在版本號達到當期門檻時才返回套餐列表,版本落後時回一份空列表(不是報錯,所以介面上看起來像「沒有活動」)。2026-10 那期實測:3.16.0 及以下全空,3.16.1 起才有禮包。外掛內建的預設值會隨活動更新,但上游每期可能再抬高一檔 —— 那時如果官方客戶端裡能看到活動、這裡卻探測為空,就在這裡填官方客戶端當前的版本號(形如 3.16.2)。環境變數 ZCODE_APP_VERSION 優先順序更高。", "ZCode「套餐池(Start Plan)」通道的每条推理请求都要附一个当次铸造的阿里云无痕验证令牌(一次性、约 2 分钟过期):令牌由界面里的铸造守卫静默铸好、推给网关入池,转发时逐条取用。这里的三个值管的是补货节奏:①「库存目标」= 库存低于它守卫才补铸、补到它为止,默认 3 个;②「轮询间隔」= 守卫多久看一次库存,默认 2500 毫秒,只影响反应速度(库存够用时不会多铸);③「单轮铸造上限」= 发现缺货时一轮最多铸几个,默认 1 个(连铸之间固定隔 500 毫秒)。请求密集、请求日志里连续出现「需要人机验证令牌」的 503 时,把目标与单轮上限适当调大、轮询调快,能让池子跟得上消耗 —— 代价是上游(阿里云)对铸造频率有风控,铸得越多越快越容易触发限流,且用不掉的令牌 2 分钟即过期作废、等于白烧配额,所以建议小步调。保存后对下一轮补货立即生效,不用重启。": "ZCode「套餐池(Start Plan)」通道的每條推理請求都要附一個當次鑄造的阿里雲無痕驗證權杖(一次性、約 2 分鐘過期):權杖由介面裡的鑄造守衛靜默鑄好、推給閘道器入池,轉發時逐條取用。這裡的三個值管的是補貨節奏:①「庫存目標」= 庫存低於它守衛才補鑄、補到它為止,預設 3 個;②「輪詢間隔」= 守衛多久看一次庫存,預設 2500 毫秒,隻影響反應速度(庫存夠用時不會多鑄);③「單輪鑄造上限」= 發現缺貨時一輪最多鑄幾個,預設 1 個(連鑄之間固定隔 500 毫秒)。請求密集、請求日誌裡連續出現「需要人機驗證權杖」的 503 時,把目標與單輪上限適當調大、輪詢調快,能讓池子跟得上消耗 —— 代價是上游(阿里雲)對鑄造頻率有風控,鑄得越多越快越容易觸發限流,且用不掉的權杖 2 分鐘即過期作廢、等於白燒配額,所以建議小步調。儲存後對下一輪補貨立即生效,不用重啟。", "ZCode「活动套餐」通道的每条推理请求都要附一个当次铸造的阿里云无痕验证令牌(一次性、约 2 分钟过期):令牌由界面里的铸造守卫静默铸好、推给网关入池,转发时逐条取用。这里的三个值管的是补货节奏:①「库存目标」= 库存低于它守卫才补铸、补到它为止,默认 3 个;②「轮询间隔」= 守卫多久看一次库存,默认 2500 毫秒,只影响反应速度(库存够用时不会多铸);③「单轮铸造上限」= 发现缺货时一轮最多铸几个,默认 1 个(连铸之间固定隔 500 毫秒)。请求密集、请求日志里连续出现「需要人机验证令牌」的 503 时,把目标与单轮上限适当调大、轮询调快,能让池子跟得上消耗 —— 代价是上游(阿里云)对铸造频率有风控,铸得越多越快越容易触发限流,且用不掉的令牌 2 分钟即过期作废、等于白烧配额,所以建议小步调。保存后对下一轮补货立即生效,不用重启。": "ZCode「活動套餐」通道的每條推理請求都要附一個當次鑄造的阿里雲無痕驗證權杖(一次性、約 2 分鐘過期):權杖由介面裡的鑄造守衛靜默鑄好、推給閘道器入池,轉發時逐條取用。這裡的三個值管的是補貨節奏:①「庫存目標」= 庫存低於它守衛才補鑄、補到它為止,預設 3 個;②「輪詢間隔」= 守衛多久看一次庫存,預設 2500 毫秒,隻影響反應速度(庫存夠用時不會多鑄);③「單輪鑄造上限」= 發現缺貨時一輪最多鑄幾個,預設 1 個(連鑄之間固定隔 500 毫秒)。請求密集、請求日誌裡連續出現「需要人機驗證權杖」的 503 時,把目標與單輪上限適當調大、輪詢調快,能讓池子跟得上消耗 —— 代價是上游(阿里雲)對鑄造頻率有風控,鑄得越多越快越容易觸發限流,且用不掉的權杖 2 分鐘即過期作廢、等於白燒配額,所以建議小步調。儲存後對下一輪補貨立即生效,不用重啟。", "beta 版": "beta 版", "iOS 应用": "iOS 應用", "models.dev 元数据": "models.dev 後設資料", "models.dev 元数据已更新({count} 条)": "models.dev 後設資料已更新({count} 條)", "models.dev 是一个开源的模型资料库(社区维护),这里用它补齐「上游没告诉我们」的模型能力:上下文窗口、最大输出、工具调用、图片、视频、是否支持思考,以及这个模型认识哪些思考档位。优先级是:你在「模型能力」里手工改的值 > 上游清单自己声明的值 > models.dev 的值 —— 它只填上游没声明的空位,从不推翻上游已声明的。网关随包内嵌了一份快照,所以离线、首次启动、访问不通时也有数据;开启时会按「模型目录刷新」任务的间隔联网更新(同一轮里一并刷新,也可在这里立即刷新)。关闭只停联网刷新,已经拿到的数据继续用。": "models.dev 是一個開源的模型資料庫(社群維護),這裡用它補齊「上游沒告訴我們」的模型能力:上下文視窗、最大輸出、工具呼叫、圖片、影片、是否支援思考,以及這個模型認識哪些思考檔位。優先順序是:你在「模型能力」裡手工改的值 > 上游清單自己宣告的值 > models.dev 的值 —— 它只填上游沒宣告的空位,從不推翻上游已宣告的。閘道器隨包內嵌了一份快照,所以離線、首次啟動、存取不通時也有資料;開啟時會按「模型目錄重新整理」任務的間隔聯網更新(同一輪裡一併重新整理,也可在這裡立即重新整理)。關閉只停聯網重新整理,已經拿到的資料繼續用。", "models.dev 模型元数据": "models.dev 模型後設資料", "systemd 服务": "systemd 服務", "{count} 条": "{count} 條", "{count} 条 · 来自{origin}{at} · {mode}": "{count} 條 · 來自{origin}{at} · {mode}", "{count} 条规则,按列表顺序执行": "{count} 條規則,按列表順序執行", "{d} 天 {h} 小时": "{d} 天 {h} 小時", "{h} 小时 {m} 分钟": "{h} 小時 {m} 分鐘", "{label} 提示词文件": "{label} 提示詞檔案", "{label} 的提示词模式": "{label} 的提示詞模式", "{label}({message})": "{label}({message})", "{lines} 行、{chars} 字符(按当前草稿计)": "{lines} 行、{chars} 字元(按當前草稿計)", "{minutes} 分钟": "{minutes} 分鐘", "{models} 同时出现在两块设置里,会按「辅助识图」处理。想改的话,把其中一个从这边的模型名单里去掉。": "{models} 同時出現在兩塊設定裡,會按「輔助識圖」處理。想改的話,把其中一個從這邊的模型名單裡去掉。", "{mode}生效:上游收到的 system 来自{source}{lines}。": "{mode}生效:上游收到的 system 來自{source}{lines}。", "{m} 分 {s} 秒": "{m} 分 {s} 秒", "{m} 分钟": "{m} 分鐘", "{noun}不能为空(可填 {min}–{max})": "{noun}不能為空(可填 {min}–{max})", "{noun}必须在 {min}–{max} 之间(当前填的是 {text})": "{noun}必須在 {min}–{max} 之間(當前填的是 {text})", "{noun}必须是整数": "{noun}必須是整數", "{n} B": "{n} B", "{n} GB": "{n} GB", "{n} KB": "{n} KB", "{n} MB": "{n} MB", "{n} 个头将随每个 Cline 请求发送": "{n} 個頭將隨每個 Cline 請求傳送", "{n} 台可选 · 点此切换": "{n} 臺可選 · 點此切換", "{n} 项 · {shown} 显示": "{n} 項 · {shown} 顯示", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "{total} 個選單 · 顯示 {shown} · 隱藏 {hidden} · {groups} 個分組", "{way}的适用模型": "{way}的適用模型", "…": "…", "⚠️ 密钥警告": "⚠️ 金鑰警告", "⚠️ 已关闭「{label}」的机器人校验": "⚠️ 已關閉「{label}」的機器人校驗", "⚠️ 机器人校验已关闭": "⚠️ 機器人校驗已關閉", "✅ Cline 伪装头已保存": "✅ Cline 偽裝頭已儲存", "✅ ZCode 版本号已保存": "✅ ZCode 版本號已儲存", "✅ models.dev 模型元数据已开启": "✅ models.dev 模型後設資料已開啟", "✅ 云同步设置已保存": "✅ 雲同步設定已儲存", "✅ 会话图片压缩已开启": "✅ 會話圖片壓縮已開啟", "✅ 出站指纹脱敏已开启": "✅ 出站指紋脫敏已開啟", "✅ 密码已修改,其他设备的登录已失效": "✅ 密碼已修改,其他裝置的登入已失效", "✅ 导入完成:{summary}": "✅ 匯入完成:{summary}", "✅ 已上传到云端({size})": "✅ 已上傳到雲端({size})", "✅ 已为「{label}」装上网关自带提示词": "✅ 已為「{label}」裝上閘道器自帶提示詞", "✅ 已从云端恢复{note}": "✅ 已從雲端恢復{note}", "✅ 已保存:{label}": "✅ 已儲存:{label}", "✅ 已保存:{label} {value}": "✅ 已儲存:{label} {value}", "✅ 已保存:指定错误码直接换号": "✅ 已儲存:指定錯誤碼直接換號", "✅ 已保留 {days} 天": "✅ 已保留 {days} 天", "✅ 已保留 {days} 天,超出部分已清理": "✅ 已保留 {days} 天,超出部分已清理", "✅ 已加密备份 {n} 张表({size}),包含恢复密钥:{file}": "✅ 已加密備份 {n} 張表({size}),包含恢復金鑰:{file}", "✅ 已备份 {n} 张表({size})到 {file}": "✅ 已備份 {n} 張表({size})到 {file}", "✅ 已导入账号密钥,请继续下载": "✅ 已匯入帳號金鑰,請繼續下載", "✅ 已导出 {count} 个账号{note}{file}": "✅ 已匯出 {count} 個帳號{note}{file}", "✅ 已开启「{label}」的机器人校验": "✅ 已開啟「{label}」的機器人校驗", "✅ 已恢复 {n} 张表": "✅ 已恢復 {n} 張表", "✅ 已恢复 {n} 张表{note}": "✅ 已恢復 {n} 張表{note}", "✅ 已改用 k / M / B 缩写": "✅ 已改用 k / M / B 縮寫", "✅ 已改用本地量级词(万 / 亿式)": "✅ 已改用本地量級詞(萬 / 億式)", "✅ 已自动创建网关 Key「默认」(可在「网关 Key」页查看)": "✅ 已自動建立閘道器 Key「預設」(可在「閘道器 Key」頁檢視)", "✅ 已解除内容拦截降级": "✅ 已解除內容攔截降級", "✅ 开发者角色兼容已开启": "✅ 開發者角色相容已開啟", "✅ 指纹脱敏设置已保存": "✅ 指紋脫敏設定已儲存", "✅ 数量上限已设为 {count} 条": "✅ 數量上限已設為 {count} 筆", "✅ 数量上限已设为 {count} 条,超出部分已清理": "✅ 數量上限已設為 {count} 筆,超出部分已清理", "✅ 机器人校验已开启": "✅ 機器人校驗已開啟", "✅ 第三方模型回答完自动折叠过程已开启": "✅ 第三方模型回答完自動摺疊過程已開啟", "✅ 设置已保存,应用正在重启…": "✅ 設定已儲存,應用正在重啟…", "✅ 调试模式已关闭": "✅ 除錯模式已關閉", "✅ 调试模式已开启": "✅ 除錯模式已開啟", "✅ 路由设置已保存": "✅ 路由設定已儲存", "✅ 连接成功:{path}": "✅ 連線成功:{path}", "、{n} 个自定义提供商": "、{n} 個自定義提供商", "。事件日志、请求明细、调试报文与面板登录态保持不变。替换前会自动把当前业务数据备份到配置目录的 backups/ 下。": "。事件日誌、請求明細、除錯報文與面板登入態保持不變。替換前會自動把當前業務資料備份到配置目錄的 backups/ 下。", "「{label}」将从 {previous} 天改为 {days} 天。": "「{label}」將從 {previous} 天改為 {days} 天。", "「{label}」将从 {previous} 条改为 {count} 条。": "「{label}」將從 {previous} 筆改為 {count} 筆。", "「{label}」改用内置默认提示词": "「{label}」改用內建預設提示詞", "「{label}」的提示词文件已更新": "「{label}」的提示詞檔案已更新", "「{label}」的提示词正文已更新": "「{label}」的提示詞正文已更新", "「{label}」的模式改为「{mode}」": "「{label}」的模式改為「{mode}」", "「{label}」的网关自带提示词已改回官方原文": "「{label}」的閘道器自帶提示詞已改回官方原文", "「{label}」的网关自带提示词正文已更新": "「{label}」的閘道器自帶提示詞正文已更新", "「模型管理」里每个能力的来源标记(上游 / models.dev / 已覆盖)读的就是这份数据;映射弹窗的思考档位下拉也按这里的数据只列该模型真实认识的档位。": "「模型管理」裡每個能力的來源標記(上游 / models.dev / 已覆蓋)讀的就是這份資料;對映彈窗的思考檔位下拉也按這裡的資料只列該模型真實認識的檔位。", "「用哪份提示词」本来是按上游分别决定的事,所以每家可以有自己的模式、提示词文件与正文:不在这里列出的提供商一律沿用上面那份默认设置,「跟随默认」把这一家取消、回到默认。带「网关自带」那一行的家(目前是 ZCode 两家)默认就列在这里 —— 那一段是网关自己装上去的文本,不来自客户端也不来自提示词文件,默认开启、可以关掉,也可以改它的正文(改过的那一段以你的文本为准);关掉后还能不能通过上游校验,取决于上游当下的口径,行内说明了实测依据。「模式 / 提示词文件 / 正文」管的是客户端自己的 system 怎么处理,与那个开关是两件事。": "「用哪份提示詞」本來是按上游分別決定的事,所以每家可以有自己的模式、提示詞檔案與正文:不在這裡列出的提供商一律沿用上面那份預設設定,「跟隨預設」把這一家取消、回到預設。帶「閘道器自帶」那一行的家(目前是 ZCode 兩家)預設就列在這裡 —— 那一段是閘道器自己裝上去的文本,不來自客戶端也不來自提示詞檔案,預設開啟、可以關掉,也可以改它的正文(改過的那一段以你的文本為準);關掉後還能不能通過上游校驗,取決於上游當下的口徑,行內說明了實測依據。「模式 / 提示詞檔案 / 正文」管的是客戶端自己的 system 怎麼處理,與那個開關是兩件事。", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "「設定」是固定項,含它的分組不能整組隱藏;可以單獨隱藏組內其它選單", "「请求日志」页的逐条请求记录,默认 99999 天(近似全量保留),可填 1–99999 天。": "「請求日誌」頁的逐條請求記錄,預設 99999 天(近似全量保留),可填 1–99999 天。", "「请求日志」页的逐条请求记录,默认 99999 天,可填 1–99999 天;同时受数量上限限制。": "「請求日誌」頁的逐筆請求記錄,預設 99999 天,可填 1–99999 天;同時受數量上限限制。", "一个 .a2ab 文件即可跨机器恢复,账号、网关 Key、GitHub 令牌与云同步凭据无需另行复制密钥。插件程序与库外文件不在整库备份范围。": "一個 .a2ab 檔案即可跨機器恢復,帳號、閘道器 Key、GitHub 權杖與雲同步憑據無需另行復制金鑰。外掛程式與庫外檔案不在整庫備份範圍。", "一段内置装配": "一段內建裝配", "三档数据各自独立计时,超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件;请求日志是网关每次转发到上游的逐条记录;按天聚合供报表页的热力图与按天趋势使用。请求日志与按天聚合默认 99999 天(约 274 年,效果上等于全量保留),事件日志默认 30 天。把某一档改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。三档的可填范围均为 1–99999 天。": "三檔資料各自獨立計時,超出保留天數的部分會被刪除:事件日誌是登入、帳號切換、429 切換這類系統事件;請求日誌是閘道器每次轉發到上游的逐條記錄;按天聚合供報表頁的熱力圖與按天趨勢使用。請求日誌與按天聚合預設 99999 天(約 274 年,效果上等於全量保留),事件日誌預設 30 天。把某一檔改小(例如 30 天改成 7 天)儲存後會立即刪除超出的歷史資料,此操作不可恢復;改大或保持不變不會刪除任何資料。三檔的可填範圍均為 1–99999 天。", "三段各自成块,所以分开编辑": "三段各自成塊,所以分開編輯", "三段必须各自成块(上游按结构校验,并成一段会被回 405),所以这里分开编辑。动态段里的运行值写成占位符,发请求时才替换:{cwd} 工作目录、{platform} 平台、{shell} shell、{os_version} 系统版本、{git} 是否 git 仓库、{provider} 提供方标识、{model} 模型名。清空某一段 = 那一段恢复官方原文。": "三段必須各自成塊(上游按結構校驗,併成一段會被回 405),所以這裡分開編輯。動態段裡的執行值寫成佔位符,發請求時才替換:{cwd} 工作目錄、{platform} 平臺、{shell} shell、{os_version} 系統版本、{git} 是否 git 倉庫、{provider} 提供方標識、{model} 模型名。清空某一段 = 那一段恢復官方原文。", "上传": "上傳", "上传 Logo": "上傳 Logo", "上传中…": "上傳中…", "上传内容含加密后的账号凭证与网关配置": "上傳內容含加密後的帳號憑證與閘道器配置", "上传到云端": "上傳到雲端", "上传失败:{message}": "上傳失敗:{message}", "上次同步:{time}({action})": "上次同步:{time}({action})", "上次成功刷新的结果(存在本机数据库里)": "上次成功重新整理的結果(存在本機資料庫裡)", "上游 CLI 版本": "上游 CLI 版本", "上游客户端版本": "上游客戶端版本", "上游按": "上游按", "上游按「结构」校验身份:三段必须各自成块,所以这里分开编辑三段(不能合成一段)。动态段里的运行值写成占位符,发请求时才替换:{cwd} 工作目录、{platform} 平台、{shell} shell、{os_version} 系统版本、{git} 是否 git 仓库、{provider} 提供方标识、{model} 模型名。清空某一段 = 那一段恢复官方原文。第三段发出时前面会自带一个空行(官方形状)。": "上游按「結構」校驗身份:三段必須各自成塊,所以這裡分開編輯三段(不能合成一段)。動態段裡的執行值寫成佔位符,發請求時才替換:{cwd} 工作目錄、{platform} 平臺、{shell} shell、{os_version} 系統版本、{git} 是否 git 倉庫、{provider} 提供方標識、{model} 模型名。清空某一段 = 那一段恢復官方原文。第三段發出時前面會自帶一個空行(官方形狀)。", "上游未配置": "上游未配置", "上游模型繁忙时会先排队(回一句「建议 N 秒后再来」):网关等一会儿再发同一请求,最多等几次。默认 2 次,可填 0–10;填 0 表示不等待,排队直接返回 503 并说明「不是登录态或额度问题」。": "上游模型繁忙時會先排隊(回一句「建議 N 秒後再來」):閘道器等一會兒再發同一請求,最多等幾次。預設 2 次,可填 0–10;填 0 表示不等待,排隊直接返回 503 並說明「不是登入態或額度問題」。", "上游用「逐字精确匹配」的方式审核请求体(不是语义审核):客户端注入的固定模板句、计费头字段名、以及某些裸错误码出现在报文里就会整单拦截,返回 400。开启本项后,网关在每次转发前改写这些指纹 —— 表头键值整段删除,承载语义的模板句只换一个词(如 official CLI for Claude → official CLI tool for Claude),对话内容与语义都不受影响。规则集是内置的,不需要也无法维护词表。关掉本项后客户端模板会原样发往上游,可能重新出现模板句被误拦的报错。": "上游用「逐字精確匹配」的方式稽核請求體(不是語義稽核):客戶端注入的固定模板句、計費頭欄位名、以及某些裸錯誤碼出現在報文裡就會整單攔截,返回 400。開啟本項後,閘道器在每次轉發前改寫這些指紋 —— 表頭鍵值整段刪除,承載語義的模板句只換一個詞(如 official CLI for Claude → official CLI tool for Claude),對話內容與語義都不受影響。規則集是內建的,不需要也無法維護詞表。關掉本項後客戶端模板會原樣發往上游,可能重新出現模板句被誤攔的報錯。", "上游请求四个阶段各自的等待上限(秒,1~3600):①「连接中超时」= 建立 TCP/TLS 连接或代理隧道的最大等待,默认 30 秒;②「等待响应超时」= 请求发出后等上游响应头的最大时间,默认 300 秒 —— 网关请求上游恒带 stream,响应头在 SSE 建立时就到达,与模型思考多久无关;③「流式响应空闲超时」= 流式响应相邻两块数据之间允许的最大空闲,收到新数据即重新计时,默认 300 秒 —— 上游长时间不吐数据即判定连接僵死并断开;④「非流式响应超时」= 读完整份非流式响应体的总预算(一次性计时、不重置),默认 300 秒。四项都是「等待上限」,只要数据还在来,正常的流式回答就一直往下传。保存后对下一个请求立即生效,不用重启。": "上游請求四個階段各自的等待上限(秒,1~3600):①「連線中超時」= 建立 TCP/TLS 連線或代理隧道的最大等待,預設 30 秒;②「等待響應超時」= 請求發出後等上游響應頭的最大時間,預設 300 秒 —— 閘道器請求上游恆帶 stream,響應頭在 SSE 建立時就到達,與模型思考多久無關;③「流式響應空閒超時」= 流式響應相鄰兩塊資料之間允許的最大空閒,收到新資料即重新計時,預設 300 秒 —— 上游長時間不吐資料即判定連線僵死並斷開;④「非流式響應超時」= 讀完整份非流式響應體的總預算(一次性計時、不重置),預設 300 秒。四項都是「等待上限」,只要資料還在來,正常的流式回答就一直往下傳。儲存後對下一個請求立即生效,不用重啟。", "上游调试报文": "上游除錯報文", "上移": "上移", "上移规则": "上移規則", "下次自动重试:{time}": "下次自動重試:{time}", "下游正文": "下游正文", "下移": "下移", "下移规则": "下移規則", "下载失败:{message}": "下載失敗:{message}", "不一致": "不一致", "不做会话识别,每条请求都重新按策略选路。": "不做會話識別,每條請求都重新按策略選路。", "不做图片兼容": "不做圖片相容", "不可用": "不可用", "不在这里列出的提供商都用上面的全局配置;「跟随默认」取消这一家的单独配置。带「网关自带」的家列在这里:那段文本是网关自己装上去的(可关、可改正文),与「模式」是两件事。": "不在這裡列出的提供商都用上面的全域配置;「跟隨預設」取消這一家的單獨配置。帶「閘道器自帶」的家列在這裡:那段文本是閘道器自己裝上去的(可關、可改正文),與「模式」是兩件事。", "与网关同源的面板;完整管理功能在桌面端": "與網關同源的面板;完整管理功能在桌面版", "两张开关分别管桌面端(应用内窗口,也包含开启局域网访问后从其他设备访问的那份面板)与网页端(Docker / 服务端自托管的浏览器面板)。默认都开启;桌面端只在本机使用、嫌验证耗时可以关掉,网页端暴露在网络上,建议保持开启。": "兩張開關分別管桌面版(應用內視窗,也包含開啟區域網路存取後從其他裝置存取的那份面板)與網頁端(Docker / 服務端自託管的瀏覽器面板)。預設都開啟;桌面版只在本機使用、嫌驗證耗時可以關掉,網頁端暴露在網路上,建議保持開啟。", "两次输入的备份密码不一致": "兩次輸入的備份密碼不一致", "两次输入的新密码不一致": "兩次輸入的新密碼不一致", "两次重试之间的等待时间,两项共用,可填 0–300 秒。": "兩次重試之間的等待時間,兩項共用,可填 0–300 秒。", "两种方式不会互相自动切换。": "兩種方式不會互相自動切換。", "两组设置分别用于桌面端托管的网页管理面板与网页端(Docker / 服务端)的浏览器面板。是否可被其他设备访问取决于网络访问与防火墙设置,不限于局域网。两端默认都开启人机验证,建议保持开启。": "兩組設定分別用於桌面端代管的網頁管理面板與網頁端(Docker / 伺服器端)的瀏覽器面板。是否可被其他裝置存取取決於網路存取與防火牆設定,不限於區域網路。兩端預設都開啟人機驗證,建議保持開啟。", "中转丢失原始标识时,无法自动推断背后的软件。": "中轉丟失原始標識時,無法自動推斷背後的軟體。", "为了安全,开启前需要先注册一个": "為了安全,開啟前需要先註冊一個", "主进程未返回启动设置,请更新桌面端后重试": "主程序未返回啟動設定,請更新桌面版後重試", "主进程桥不可用": "主程序橋不可用", "主题": "主題", "也可以从请求详情直接添加规则。": "也可以從請求詳情直接新增規則。", "事件日志": "事件日誌", "事件日志保留天数": "事件日誌保留天數", "云同步": "雲同步", "产品名": "產品名", "产品名不能包含斜杠或版本号,请改用前缀匹配": "產品名不能包含斜槓或版本號,請改用字首匹配", "人机验证": "人機驗證", "人机验证失败": "人機驗證失敗", "人机验证已完成": "人機驗證已完成", "人机验证还在计算,请稍候": "人機驗證還在計算,請稍候", "仅在同一会话、同一问题和相同权限范围内复用;追问新细节会重新识读。缓存只存在本机内存。": "僅在同一會話、同一問題和相同許可權範圍內複用;追問新細節會重新識讀。快取只存在本機記憶體。", "仅在账号、配置、签到或余额等实质内容变化时上传;导出时间或查询时间单独变化不会触发上传。": "僅在帳號、設定、簽到或餘額等實質內容變更時上傳;匯出時間或查詢時間單獨變更不會觸發上傳。", "仅处理本次转发副本,不修改客户端选择,也不删除当前或历史图片。": "僅處理本次轉發副本,不修改客戶端選擇,也不刪除當前或歷史圖片。", "仅影响面板登录与注册,不影响 API Key 调用。保存后生效,已登录会话不会退出。": "僅影響面板登入與註冊,不影響 API Key 呼叫。儲存後生效,已登入的工作階段不會登出。", "仅本机": "僅本機", "仅用现有数据、不联网刷新": "僅用現有資料、不聯網重新整理", "从云端恢复": "從雲端恢復", "从桌面图标启动,全屏、无地址栏。想卸载:长按图标删除,或清除浏览器站点数据。": "從桌面圖示啟動,全屏、無位址列。想解除安裝:長按圖示刪除,或清除瀏覽器站點資料。", "优先使用当前路由内的视觉模型": "優先使用當前路由內的視覺模型", "优先在当前路由内找可用的视觉模型,找不到就用 {model} 直接回答,不再回到原模型。": "優先在目前路由內找可用的視覺模型,找不到就用 {model} 直接回答,不再回到原模型。", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "會恢復預設的分組、順序與顯隱設定。你自建的分組會被刪除(組內選單不會丟)。", "会话图片压缩设置已刷新": "會話圖片壓縮設定已重新整理", "位置": "位置", "位置与端口": "位置與連接埠", "使用 Rust 正则语法,保存时由后端校验;不支持环视和反向引用。": "使用 Rust 正則語法,儲存時由後端校驗;不支援環視和反向引用。", "使用中文单位(亿 / 万)": "使用中文單位(億 / 萬)", "使用本地量级词(万 / 亿式)": "使用本地量級詞(萬 / 億式)", "使用默认值": "使用預設值", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "側邊欄佈局模組未載入(ui/sidebar-layout.js 應在 app.js 之前引入)。", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "側邊欄沒有顯示任何選單。到「設定 → 顯示 → 側邊欄選單」裡開啟需要的項。", "侧边栏菜单": "側邊欄選單", "保存上游原始报文(请求头、请求体、响应头、响应体)": "儲存上游原始報文(請求頭、請求體、響應頭、響應體)", "保存单独配置": "儲存單獨配置", "保存后以这份为准(优先于上面的文件);清空回到文件 / 内置默认。": "儲存後以這份為準(優先於上面的檔案);清空回到檔案 / 內建預設。", "保存后以这里的文本为准": "儲存後以這裡的文本為準", "保存后只对之后的新请求生效;两种方式不会互相自动切换。": "儲存後只對之後的新請求生效;兩種方式不會互相自動切換。", "保存后对下一轮补货立即生效,不用重启。守卫跑在应用界面里:轻量模式关窗销毁界面期间无法铸造,走套餐池(Start Plan)通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。": "儲存後對下一輪補貨立即生效,不用重啟。守衛跑在應用介面裡:輕量模式關窗銷燬介面期間無法鑄造,走套餐池(Start Plan)通道的請求會以 503 落進請求日誌(寫明原因),重新開啟介面即自動恢復。", "保存后对下一轮补货立即生效,不用重启。守卫跑在应用界面里:轻量模式关窗销毁界面期间无法铸造,走活动套餐通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。": "儲存後對下一輪補貨立即生效,不用重啟。守衛跑在應用介面裡:輕量模式關窗銷燬介面期間無法鑄造,走活動套餐通道的請求會以 503 落進請求日誌(寫明原因),重新開啟介面即自動恢復。", "保存后应用将重启以生效。": "儲存後應用將重啟以生效。", "保存后状态读取立即生效。后台不会自动生成令牌;需要人机验证时,在账号的「套餐明细」中主动开始验证。模型请求免验证时无需保持界面打开。": "儲存後狀態讀取立即生效。背景不會自動產生權杖;需要人機驗證時,在帳號的「套餐明細」中主動開始驗證。模型請求免驗證時無需保持介面開啟。", "保存后立即生效,不用重启(下一个请求就用新模式)。": "儲存後立即生效,不用重啟(下一個請求就用新模式)。", "保存后立即生效,不用重启:策略与粘性作用于**下一次**转发的选路,进行中的请求不受影响。": "儲存後立即生效,不用重啟:策略與粘性作用於**下一次**轉發的選路,進行中的請求不受影響。", "保存后立即生效,不用重启;次数用尽仍失败时,错误原样返回给客户端。": "儲存後立即生效,不用重啟;次數用盡仍失敗時,錯誤原樣返回給客戶端。", "保存后立即生效,不用重启;超时按上游失败处理(计入请求日志的「错误」列,并按「请求重试」的设置决定是否重试)。": "儲存後立即生效,不用重啟;超時按上游失敗處理(計入請求日誌的「錯誤」列,並按「請求重試」的設定決定是否重試)。", "保存后立即生效:保留天数和数量上限同时生效,调小任一项会立即清理超出的历史数据,且不可恢复。": "儲存後立即生效:保留天數和數量上限同時生效,調小任一項會立即清理超出的歷史資料,且無法還原。", "保存后立即生效:改小保留天数会立刻删除超出的历史数据,且不可恢复。": "儲存後立即生效:改小保留天數會立刻刪除超出的歷史資料,且不可恢復。", "保存在当前网关,登录页也会公开显示。不会更改安装包、快捷方式、系统托盘图标或软件版本信息。": "儲存在目前的閘道,登入頁也會公開顯示。不會更改安裝套件、捷徑、系統匣圖示或軟體版本資訊。", "保存并重启": "儲存並重啟", "保存设置": "儲存設定", "保持当前路由范围,不跳到其他路由组。": "保持目前路由範圍,不跳到其他路由組。", "保活换行丢弃": "保活換行丟棄", "保留原图和对话,由视觉模型直接回答本次请求。": "保留原圖和對話,由視覺模型直接回答本次請求。", "保留原图,选择视觉模型": "保留原圖,選擇視覺模型", "保留图片中的文字、代码、数字、布局与状态。识读失败就停止,不删图后继续回答。": "保留圖片中的文字、程式碼、數字、佈局與狀態。識讀失敗就停止,不刪圖後繼續回答。", "保留天数已刷新": "保留天數已重新整理", "保留旧版配置兼容,当前不会自动连铸。每次点击「开始验证」只取得一枚令牌,失败或取消后停止。": "保留舊版設定相容,目前不會自動連續產生權杖。每次點擊「開始驗證」只取得一枚權杖,失敗或取消後停止。", "保留草稿并读取最新设置": "保留草稿並讀取最新設定", "修改密码": "修改密碼", "修改密码需要输入当前密码;修改成功后,其他设备 / 浏览器上的登录会立即失效,当前这条会话保留。": "修改密碼需要輸入當前密碼;修改成功後,其他裝置 / 瀏覽器上的登入會立即失效,當前這條會話保留。", "修改模型单独配置": "修改模型單獨配置", "值": "值", "值与默认值相同的行不占覆盖(存的是「改过的键」,不是全量配置);值留空保存表示这个头不发送,删除改过的行表示回落默认值。改完立即生效,不用重启。": "值與預設值相同的行不佔覆蓋(存的是「改過的鍵」,不是全量配置);值留空儲存表示這個頭不傳送,刪除改過的行表示回落預設值。改完立即生效,不用重啟。", "值(留空 = 不发送)": "值(留空 = 不傳送)", "停止并说明原因": "停止並說明原因", "像素": "畫素", "允许其他设备访问前,需要设置面板管理员账号与密码。注册完成后会继续开启流程并重启应用。": "允許其他裝置存取前,需要設定面板管理員帳號與密碼。註冊完成後會繼續開啟流程並重新啟動應用程式。", "允许其他设备访问网关": "允許其他裝置存取閘道", "允许局域网内的设备访问网关": "允許區域網路內的裝置存取閘道器", "允许无 Key 裸跑": "允許無 Key 裸跑", "允许浏览器里的页面跨来源调用网关(/v1/*)": "允許瀏覽器裡的頁面跨來源呼叫閘道器(/v1/*)", "允许的域名": "允許的網域", "先发送原图,明确拒图后补救": "先發送原圖,明確拒圖後補救", "先在当前路由范围内找可用的视觉模型,这次请求由视觉模型直接回答,不回原模型;{fallback}": "先在當前路由範圍內找可用的視覺模型,這次請求由視覺模型直接回答,不回原模型;{fallback}", "先把图片交给视觉模型读一遍,再让原模型结合读到的内容回答。": "先把圖片交給視覺模型讀一遍,再讓原模型結合讀到的內容回答。", "全局配置": "全域配置", "全部已配置": "全部已配置", "全部数据(账号、事件日志、请求记录、调试报文、设置)保存在配置目录下的 agent2api.db 这一个 SQLite 数据库里。备份时只需拷贝这个文件;更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "全部資料(帳號、事件日誌、請求記錄、除錯報文、設定)儲存在配置目錄下的 agent2api.db 這一個 SQLite 資料庫裡。備份時只需複製這個檔案;更換儲存位置請設定環境變數 AGENT2API_PROXY_HOME 後重啟程式。", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 中,加密密钥单独保存在库外。跨机器备份请使用「整库备份 / 恢复」,不要只复制数据库。更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "全部資料(帳號、事件日誌、請求記錄、除錯報文、設定)統一儲存在配置目錄下的 agent2api.db 中,加密金鑰單獨儲存在庫外。跨機器備份請使用「整庫備份 / 恢復」,不要只複製資料庫。更換儲存位置請設定環境變數 AGENT2API_PROXY_HOME 後重啟程式。", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 这一个 SQLite 数据库里。备份时只需拷贝这个文件;更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "全部資料(帳號、事件日誌、請求記錄、除錯報文、設定)統一儲存在配置目錄下的 agent2api.db 這一個 SQLite 資料庫裡。備份時只需複製這個檔案;更換儲存位置請設定環境變數 AGENT2API_PROXY_HOME 後重啟程式。", "全部角色": "全部角色", "全部角色沿用原有行为,包含思考内容和工具参数;指定角色时只改消息正文,未选角色及思考内容、工具参数保持原样。": "全部角色沿用原有行為,包含思考內容和工具參數;指定角色時只改訊息正文,未選角色及思考內容、工具參數保持原樣。", "共享视觉模型已变更,请重新确认并保存,避免把图片交给未经确认的模型。": "共享視覺模型已變更,請重新確認並儲存,避免把圖片交給未經確認的模型。", "共用设置:{providers}": "共用設定:{providers}", "关闭后不再提供网页管理面板,本机桌面程序仍可正常管理;已开启的 API 转发不受影响。": "關閉後不再提供網頁管理面板,本機桌面程式仍可正常管理;已開啟的 API 轉發不受影響。", "关闭后手动上传 / 下载也会被拒绝。": "關閉後手動上傳 / 下載也會被拒絕。", "关闭后网关只监听 127.0.0.1,其他设备将无法直接连接,网页管理面板也会一并关闭。已配置的网关 Key 与账号不受影响。": "關閉後閘道只監聽 127.0.0.1,其他裝置將無法直接連線,網頁管理面板也會一併關閉。已設定的閘道 Key 與帳號不受影響。", "关闭后网关回到只监听 127.0.0.1,局域网内的设备将无法继续访问;已配置的网关 Key 与账号都不受影响。": "關閉後網關回到只監聽 127.0.0.1,區域網路內的裝置將無法繼續存取;已配置的閘道器 Key 與帳號都不受影響。", "关闭后,管理界面不再从局域网提供,只有本机的桌面程序可以管理;已开启的 API 转发不受影响。": "關閉後,管理介面不再從區域網路提供,只有本機的桌面程式可以管理;已開啟的 API 轉發不受影響。", "关闭局域网访问": "關閉區域網路存取", "关闭并重启": "關閉並重啟", "关闭思考": "關閉思考", "关闭窗口即退出程序,后台转发随之中断": "關閉視窗即退出程式,後臺轉發隨之中斷", "关闭窗口时最小化到托盘": "關閉視窗時最小化到托盤", "关闭窗口时程序不退出,转发继续在后台运行;退出请用托盘菜单": "關閉視窗時程式不退出,轉發繼續在後臺執行;退出請用托盤選單", "关闭网络访问": "關閉網路存取", "其余沿用上面的全局配置": "其餘沿用上面的全域配置", "兼容处理最长等待": "相容處理最長等待", "兼容处理最长等待(秒)": "相容處理最長等待(秒)", "内容拦截降级": "內容攔截降級", "内置客户端": "內建客戶端", "内置规则": "內建規則", "内置识别、自定义规则与来源声明": "內建識別、自定義規則與來源宣告", "内置软件标识规则": "內建軟體標識規則", "内置默认": "內建預設", "内置默认提示词": "內建預設提示詞", "再输入一次新密码": "再輸入一次新密碼", "凭据类请求头已脱敏。": "憑據類請求頭已脫敏。", "凭证只保存在这台手机上,按服务器分别存放": "憑證只儲存在這臺手機上,按伺服器分別存放", "出问题时把这一页截图,或点「复制全部信息」把文本贴进反馈,一般就能定位到大致原因。": "出問題時把這一頁截圖,或點「複製全部資訊」把文本貼進反饋,一般就能定位到大致原因。", "分享图标在 Safari 底部工具栏中间": "分享圖示在 Safari 底部工具欄中間", "分组名": "分組名", "分组名,例如「常用」": "分組名,例如「常用」", "切换视觉模型": "切換視覺模型", "切换视觉模型 · 视觉模型回答": "切換視覺模型 · 視覺模型回答", "切换视觉模型配置": "切換視覺模型配置", "切换账号重试次数": "切換帳號重試次數", "刚刚从 models.dev 拉到的最新数据": "剛剛從 models.dev 拉到的最新資料", "删除 {code}": "刪除 {code}", "删除分组": "刪除分組", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "刪除分組「{name}」?組內 {n} 個選單會移到「{target}」,不會丟。", "删除匹配内容": "刪除匹配內容", "删除后不再接受这个分类的来源声明,历史记录保留原来的名称和用量。": "刪除後不再接受這個分類的來源宣告,歷史記錄保留原來的名稱和用量。", "删除后,新请求不再使用这条规则;历史记录保持不变。": "刪除後,新請求不再使用這條規則;歷史記錄保持不變。", "删除客户端分类": "刪除客戶端分類", "删除状态码 {code}": "刪除狀態碼 {code}", "删除空分组「{name}」?": "刪除空分組「{name}」?", "删除识别规则": "刪除識別規則", "删除这个分组(组内菜单移到第一组)": "刪除這個分組(組內選單移到第一組)", "刷新": "重新整理", "刷新失败:{message}": "重新整理失敗:{message}", "前台运行": "前臺執行", "前缀": "字首", "剥离上游审核黑名单指纹(改写请求体里的模板句与表头)": "剝離上游稽核黑名單指紋(改寫請求體裡的模板句與表頭)", "功能建议": "功能建議", "加入备选": "加入備選", "加密备份必填,旧 SQL 可留空": "加密備份必填,舊 SQL 可留空", "包含": "包含", "包含日志与调试报文": "包含日誌與除錯報文", "包含:{items}": "包含:{items}", "匹配内容": "匹配內容", "匹配内容不能为空,且最多 {max} 个字符": "匹配內容不能為空,且最多 {max} 個字元", "匹配内容不能为空,最长 256 个字符": "匹配內容不能為空,最長 256 個字元", "匹配原文含零宽空格,词表预览用 \\u{200b} 标出;编辑时保留该字符。": "匹配原文含零寬空格,詞表預覽用 \\u{200b} 標出;編輯時保留該字元。", "匹配方式": "匹配方式", "区域(Region)": "區域(Region)", "华为云 OBS": "華為雲 OBS", "单独指定视觉模型": "單獨指定視覺模型", "单轮铸造上限": "單輪鑄造上限", "占用大小": "佔用大小", "历史未记录识别依据": "歷史未記錄識別依據", "原因未知": "原因未知", "原来的「全局方式 + 模型单独配置」已按相同意思自动填成下面的模型名单,可以照用也可以重新调整;改动一处之后就会按新形式存下来。": "原來的「全域方式 + 模型單獨設定」已按相同意思自動填成下面的模型名單,可以照用也可以重新調整;改動一處之後就會按新形式存下來。", "原模型不能直接看图": "原模型不能直接看圖", "原模型根据识读内容回答": "原模型根據識讀內容回答", "去反馈": "去反饋", "去申请": "去申請", "反馈与需求": "反饋與需求", "发现缺货时一轮最多铸几个(连铸之间固定隔 500 毫秒)。默认 1 个:SDK 同一实例连铸容易互相干扰。调大补货更快,但单轮连铸越多越容易触发上游风控。可填 1–5。": "發現缺貨時一輪最多鑄幾個(連鑄之間固定隔 500 毫秒)。預設 1 個:SDK 同一例項連鑄容易互相干擾。調大補貨更快,但單輪連鑄越多越容易觸發上游風控。可填 1–5。", "取消勾选后只备份业务数据(账号、配置与余额记录),文件显著变小;事件日志、请求统计与调试报文不会进备份文件。": "取消勾選後只備份業務資料(帳號、配置與餘額記錄),檔案顯著變小;事件日誌、請求統計與除錯報文不會進備份檔案。", "变更网页管理面板": "變更網頁管理面板", "只列单独配置过的家,其余沿用上面的全局配置": "只列單獨配置過的家,其餘沿用上面的全域配置", "只对「排队制」的上游生效:模型繁忙时上游不报错,只回一句「建议 N 秒后再来」,网关按建议时长等一会儿再发同一请求,等满次数仍排不上才把「排队中」作为错误返回(HTTP 503,文案会说明这不是登录态或额度问题)。等待发生在首个字节之前,吃的是「等待响应超时」那份预算 —— 两项设置一起决定一次请求最多卡多久;排队不会标记账号限额、也不会换账号(换谁都一样在排队)。保存后对下一个请求立即生效,不用重启。": "只對「排隊制」的上游生效:模型繁忙時上游不報錯,只回一句「建議 N 秒後再來」,閘道器按建議時長等一會兒再發同一請求,等滿次數仍排不上才把「排隊中」作為錯誤返回(HTTP 503,文案會說明這不是登入態或額度問題)。等待發生在首個位元組之前,吃的是「等待響應超時」那份預算 —— 兩項設定一起決定一次請求最多卡多久;排隊不會標記帳號限額、也不會換帳號(換誰都一樣在排隊)。儲存後對下一個請求立即生效,不用重啟。", "只影响识读那一步的思考深度。": "隻影響識讀那一步的思考深度。", "只影响读图那一步的思考深度;两块设置统一用这个选择。": "只影響讀圖那一步的思考深度;兩塊設定統一用這個選擇。", "只有已安装、启用并声明了设置项的提供商会出现在这里。可前往插件页检查安装与启用状态。": "只有已安裝、啟用並宣告了設定項目的供應商會出現在這裡。可前往外掛頁檢查安裝與啟用狀態。", "只沿用模型与思考等级,不借用视觉服务的内部 Key;仍受当前请求权限限制。": "只沿用模型與思考等級,不借用視覺服務的內部 Key;仍受當前請求許可權限制。", "只清掉这个浏览器存的 Key,不影响网关": "只清掉這個瀏覽器存的 Key,不影響閘道器", "只覆盖指定提供商的指定模型,其余跟随全局。": "只覆蓋指定提供商的指定模型,其餘跟隨全域。", "可识别标识": "可識別標識", "可跨提供商多选;只处理这些模型看不了的图片。": "可跨提供商多選;只處理這些模型看不了的圖片。", "可跨提供商多选;这些模型的请求会整体改交视觉模型。": "可跨提供商多選;這些模型的請求會整體改交視覺模型。", "可选。部分服务(如中国科技云数据胶囊)会按 User-Agent 校验凭据绑定的客户端类型,此时填写包含该类型名的字符串(例如 rclone/v1.67.0)。留空则维持默认。": "可選。部分服務(如中國科技雲資料膠囊)會按 User-Agent 校驗憑據繫結的客戶端型別,此時填寫包含該型別名的字串(例如 rclone/v1.67.0)。留空則維持預設。", "合计只累加当前筛选后可见的账号,筛选、搜索一改数字就跟着变。": "合計只累加目前篩選後可見的帳號,篩選、搜尋一改數字就跟著變。", "合计按整组统计(默认):不受筛选、搜索影响,被筛掉与已禁用的账号也计入。": "合計按整組統計(預設):不受篩選、搜尋影響,被篩掉與已停用的帳號也計入。", "同一会话、同一问题、相同权限范围内复用;追问新细节会重新识读。": "同一對話、同一問題、相同權限範圍內重用;追問新細節會重新識讀。", "同一会话、同一问题、相同权限范围内复用;追问新细节会重新识读,缓存只在本机内存。": "同一會話、同一問題、相同許可權範圍內複用;追問新細節會重新識讀,快取只在本機記憶體。", "同一会话在 5 分钟内尽量跟住同一个账号;停了 5 分钟再发就算新会话。多数场景用它 —— 多轮对话少换号,也不至于把账号焊死。": "同一會話在 5 分鐘內儘量跟住同一個帳號;停了 5 分鐘再發就算新會話。多數場景用它 —— 多輪對話少換號,也不至於把帳號焊死。", "同一会话在 6 小时内跟住同一个账号;适合一坐几个小时的长会话,上游的上下文缓存能吃到更多。": "同一會話在 6 小時內跟住同一個帳號;適合一坐幾個小時的長會話,上游的上下文快取能吃到更多。", "同一提供商的同一模型不能重复配置": "同一提供商的同一模型不能重複配置", "同一账号重试次数": "同一帳號重試次數", "同时开放网页管理面板": "同時開放網頁管理面板", "同步密码": "同步密碼", "名单最多 {max} 个状态码": "名單最多 {max} 個狀態碼", "后端没有返回版本信息": "後端沒有返回版本資訊", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "含固定項「設定」,不可整組隱藏(可以單獨隱藏組內其它選單)", "启动与托盘": "啟動與托盤", "启动时间": "啟動時間", "启用云同步": "啟用雲同步", "启用图片兼容": "啟用圖片相容", "启用规则": "啟用規則", "启用规则:{name}": "啟用規則:{name}", "命中依据:{header} · {pattern}": "命中依據:{header} · {pattern}", "命中这些上游状态码的失败不在同一账号重发,直接换下一个账号继续试(换号占用「切换账号重试次数」,换满仍失败才把错误原样返回给客户端)。输入 100–599 的状态码后回车添加,点 × 或退格删除;默认 402(积分不足)。清空全部表示任何错误都照常重试。": "命中這些上游狀態碼的失敗不在同一帳號重發,直接換下一個帳號繼續試(換號佔用「切換帳號重試次數」,換滿仍失敗才把錯誤原樣返回給客戶端)。輸入 100–599 的狀態碼後回車新增,點 × 或退格刪除;預設 402(積分不足)。清空全部表示任何錯誤都照常重試。", "品牌 Logo": "品牌 Logo", "品牌设置": "品牌設定", "品牌设置已保存": "品牌設定已儲存", "品牌预览": "品牌預覽", "哪些模型用这种方式": "哪些模型用這種方式", "固定": "固定", "图标经 Magpie 引入,未单独记录 Lobe Icons 的图标版本;以上版本仅用于核对许可。": "圖示經 Magpie 引入,未單獨記錄 Lobe Icons 的圖示版本;以上版本僅用於核對授權。", "图片与相关对话将交给配置的视觉模型处理,可能增加等待时间和费用。请确认这些服务可以接收你的图片。": "圖片與相關對話將交給配置的視覺模型處理,可能增加等待時間和費用。請確認這些服務可以接收你的圖片。", "图片先交给 {model} 识读,再由原模型回答这次请求。": "圖片先交給 {model} 識讀,再由原模型回答這次請求。", "图片兼容": "圖片相容", "图片兼容当前是关闭的:下面两块设置照样能改、会被保留,但不会对任何请求生效。": "圖片相容目前是關閉的:下面兩塊設定照樣能改、會被保留,但不會對任何請求生效。", "图片兼容设置已保存,仅对新请求生效。": "圖片相容設定已儲存,僅對新請求生效。", "图片兼容设置读取失败": "圖片相容設定讀取失敗", "图片压缩": "圖片壓縮", "图片最长边超过这个值就等比缩小(只缩不放)。默认 2048,可填 256–8192 —— 多数视觉模型在这个量级已经够用,调小更省流量、但细节会丢。": "圖片最長邊超過這個值就等比縮小(只縮不放)。預設 2048,可填 256–8192 —— 多數視覺模型在這個量級已經夠用,調小更省流量、但細節會丟。", "图片能力未知时": "圖片能力未知時", "图片过大、格式错误或下载失败不会被当作模型不支持图片。": "圖片過大、格式錯誤或下載失敗不會被當作模型不支援圖片。", "在同一个账号上原地重发几次(不含首发;整条请求共用一份,用完后换来的账号只发一次就继续换)。可填 0–10,0 表示失败立即换号。": "在同一個帳號上原地重發幾次(不含首發;整條請求共用一份,用完後換來的帳號只發一次就繼續換)。可填 0–10,0 表示失敗立即換號。", "在这里直接编辑提示词正文:保存后以这份文本为准(优先于上面的提示词文件),清空则回到文件 / 内置默认。改一个字不必再去编辑器里开文件。": "在這裡直接編輯提示詞正文:儲存後以這份文本為準(優先於上面的提示詞檔案),清空則回到檔案 / 內建預設。改一個字不必再去編輯器裡開檔案。", "在途请求": "在途請求", "地址格式不对。填「IP 或域名:端口」,可带 http:// 或 https://,例如 192.168.1.23:3065": "地址格式不對。填「IP 或域名:連接埠」,可帶 http:// 或 https://,例如 192.168.1.23:3065", "坚果云": "堅果雲", "坚果云需使用「第三方应用密码」(账户信息 → 安全选项里生成),地址必须是 /dav/ 下的目录。": "堅果雲需使用「第三方應用密碼」(帳戶資訊 → 安全選項裡生成),地址必須是 /dav/ 下的目錄。", "填「IP 或域名:端口」。协议可写 http:// 或 https://,不写默认 http;http 不写端口默认 3065,https 默认 443。地址里的 /m、/v1 会自动去掉。": "填「IP 或域名:連接埠」。協議可寫 http:// 或 https://,不寫預設 http;http 不寫連接埠預設 3065,https 預設 443。地址裡的 /m、/v1 會自動去掉。", "处理方式": "處理方式", "处理示意": "處理示意", "备份中…": "備份中…", "备份包含账号凭证、网关 Key、GitHub 令牌与云同步凭据的恢复密钥,整个文件受备份密码保护。请分开保管文件与密码;忘记密码无法恢复。": "備份包含帳號憑證、閘道器 Key、GitHub 權杖與雲同步憑據的恢復金鑰,整個檔案受備份密碼保護。請分開保管檔案與密碼;忘記密碼無法恢復。", "备份密码": "備份密碼", "备份密码不能超过 1024 字节": "備份密碼不能超過 1024 位元組", "备份密码至少需要 12 位,建议使用较长且不重复的密码": "備份密碼至少需要 12 位,建議使用較長且不重複的密碼", "备份整库": "備份整庫", "备份文件内含全部账号凭证、网关 API Key 与面板管理员凭据,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "備份檔案內含全部帳號憑證、閘道器 API Key 與面板管理員憑據,可直接用於登入。請妥善保管,不要外傳或上傳到公共位置。", "备选模型": "備選模型", "备选顺序 · 从上到下依次尝试": "備選順序 · 從上到下依次嘗試", "复制全部信息": "複製全部資訊", "复制给客户端": "複製給客戶端", "复用与备选、单独配置、兼容细节": "複用與備選、單獨配置、相容細節", "复用相同图片的识读结果": "複用相同圖片的識讀結果", "外观": "外觀", "外观 · 接入 · 关于": "外觀 · 接入 · 關於", "多个客户端标识冲突": "多個客戶端標識衝突", "天": "天", "天数": "天數", "失败 {n} 个": "失敗 {n} 個", "失败 {n} 个:{detail}": "失敗 {n} 個:{detail}", "失败后最多再换几个账号试(填 N = 最多换 N 个,首发那个不算)。换到同一家名下另一个账号、或换到另一家,都各算一次;换满仍失败就返回错误。可填 0–10,0 表示失败立即报错。": "失敗後最多再換幾個帳號試(填 N = 最多換 N 個,首發那個不算)。換到同一家名下另一個帳號、或換到另一家,都各算一次;換滿仍失敗就返回錯誤。可填 0–10,0 表示失敗立即報錯。", "如果主库已被替换到一半,替换前的数据在 backups/ 目录里仍可整文件拷回。": "如果主庫已被替換到一半,替換前的資料在 backups/ 目錄裡仍可整檔案拷回。", "存储桶(Bucket)": "儲存桶(Bucket)", "存储概况已刷新": "儲存概況已重新整理", "安全": "安全", "安装到主屏幕": "安裝到主螢幕", "安装到桌面": "安裝到桌面", "安装包形态": "安裝包形態", "完全相同": "完全相同", "官方原文只有一句:声明自己是 ZCode。": "官方原文只有一句:宣告自己是 ZCode。", "实际处理:": "實際處理:", "客户端 system 原样出站。": "客戶端 system 原樣出站。", "客户端 system 原样出站(只靠指纹脱敏改写模板句)。": "客戶端 system 原樣出站(只靠指紋脫敏改寫模板句)。", "客户端专用请求头": "客戶端專用請求頭", "客户端名称": "客戶端名稱", "客户端名称不能为空,最长 80 个字符": "客戶端名稱不能為空,最長 80 個字元", "客户端名称重复或与内置名称冲突": "客戶端名稱重複或與內建名稱衝突", "客户端标识无效或重复": "客戶端標識無效或重複", "客户端识别": "客戶端識別", "客户端识别入口尚未就绪,请刷新页面后重试": "客戶端識別入口尚未就緒,請重新整理頁面後重試", "客户端识别设置读取失败": "客戶端識別設定讀取失敗", "客户端(Claude Code / Codex 等 CLI)会在 system 提示词里注入几十句固定模板,上游按逐字匹配审核,命中就整单拦截(HTTP 400)。指纹脱敏能改写实测命中过的那几句,但换一个客户端版本就可能冒出新的。这里可以把 system 整段换成网关自己那份:①「透传」= 不动客户端 system(默认,行为与之前完全一致);②「替换」= 删掉客户端所有 system / developer 消息,换成网关的提示词(客户端项目规范随之消失);③「追加」= 在开头连续 system 块之后插入一条网关提示词,既有消息逐字不动(客户端规范与网关提示词并用)。那份提示词有两个来源:提示词文件(留空用内置默认),或直接在界面上编辑正文 —— 编辑过就以那份正文为准(优先于文件),清空则回到文件 / 内置默认。另外,透传 / 追加模式下撞了内容拦截(多半是指纹误报)时,网关会自动换一段最小中性提示词重试一次,并把「降级期」开到次日 00:00 —— 期间所有请求直接带中性提示词出门,不再先撞一次 400;这里能看见并提前解除它。上面几项是**默认值**:想给某个提供商单独配,用下面的「按提供商」加一行(带「网关自带」的家默认就列在那里)—— 不同的上游对这些内容的接受程度不一样。": "客戶端(Claude Code / Codex 等 CLI)會在 system 提示詞裡注入幾十句固定模板,上游按逐字匹配稽核,命中就整單攔截(HTTP 400)。指紋脫敏能改寫實測命中過的那幾句,但換一個客戶端版本就可能冒出新的。這裡可以把 system 整段換成閘道器自己那份:①「透傳」= 不動客戶端 system(預設,行為與之前完全一致);②「替換」= 刪掉客戶端所有 system / developer 訊息,換成閘道器的提示詞(客戶端專案規範隨之消失);③「追加」= 在開頭連續 system 塊之後插入一條閘道器提示詞,既有訊息逐字不動(客戶端規範與閘道器提示詞並用)。那份提示詞有兩個來源:提示詞檔案(留空用內建預設),或直接在介面上編輯正文 —— 編輯過就以那份正文為準(優先於檔案),清空則回到檔案 / 內建預設。另外,透傳 / 追加模式下撞了內容攔截(多半是指紋誤報)時,閘道器會自動換一段最小中性提示詞重試一次,並把「降級期」開到次日 00:00 —— 期間所有請求直接帶中性提示詞出門,不再先撞一次 400;這裡能看見並提前解除它。上面幾項是**預設值**:想給某個提供商單獨配,用下面的「按提供商」加一行(帶「閘道器自帶」的家預設就列在那裡)—— 不同的上游對這些內容的接受程度不一樣。", "客户端(Claude Code / Codex 等 CLI)会往 system 里塞几十句固定模板,上游逐字审核,命中就整单拦截(HTTP 400)。「模式」决定网关怎么处理这份 system:透传 = 原样不动(默认);替换 = 删掉客户端的 system / developer,换成网关提示词;追加 = 保留客户端内容,只在最前面插一条网关提示词。网关提示词来自「提示词文件」或界面里编辑的正文(正文优先,清空回到文件 / 内置默认)。撞上拦截时会自动改用一段最小中性提示词,次日 00:00 自动恢复,也可以随时解除。": "客戶端(Claude Code / Codex 等 CLI)會往 system 裡塞幾十句固定模板,上游逐字稽核,命中就整單攔截(HTTP 400)。「模式」決定閘道器怎麼處理這份 system:透傳 = 原樣不動(預設);替換 = 刪掉客戶端的 system / developer,換成閘道器提示詞;追加 = 保留客戶端內容,只在最前面插一條閘道器提示詞。閘道器提示詞來自「提示詞檔案」或介面裡編輯的正文(正文優先,清空回到檔案 / 內建預設)。撞上攔截時會自動改用一段最小中性提示詞,次日 00:00 自動恢復,也可以隨時解除。", "家之间仍按优先级,只有同一家内部轮流用各账号 —— 想优先用某几家、又不愿把某一家的某个账号焊死时用它。": "家之間仍按優先順序,只有同一家內部輪流用各帳號 —— 想優先用某幾家、又不願把某一家的某個帳號焊死時用它。", "家内轮询": "家內輪詢", "容器内更新": "容器內更新", "密码、文件或密钥校验失败时不会替换主库;替换阶段失败会自动尝试还原,实际结果以上方错误说明为准。": "密碼、檔案或金鑰校驗失敗時不會替換主庫;替換階段失敗會自動嘗試還原,實際結果以上方錯誤說明為準。", "密码加密 · 包含恢复密钥": "密碼加密 · 包含恢復金鑰", "密码至少 8 位": "密碼至少 8 位", "对话里内嵌的 base64 大图(截图、照片)既撑大请求体,也拉高按像素折算的上游计费。开启后,网关在转发前把超过阈值的图等比缩到长边上限、重新存成 JPEG —— 只改发给上游的副本,请求日志里保存的仍是你发来的原图。同一张原图在多轮对话里重复出现时复用上一次的压缩结果,不会每轮重算。http 链接图片、GIF 动图、SVG 一律不动;压完反而更大的图也保留原图。只作用在对话场景,生图与图片编辑不受影响。默认开启;不想要的话把开关关掉即可。": "對話裡內嵌的 base64 大圖(截圖、照片)既撐大請求體,也拉高按畫素折算的上游計費。開啟後,閘道器在轉發前把超過閾值的圖等比縮到長邊上限、重新存成 JPEG —— 只改發給上游的副本,請求日誌裡儲存的仍是你發來的原圖。同一張原圖在多輪對話裡重複出現時複用上一次的壓縮結果,不會每輪重算。http 連結圖片、GIF 動圖、SVG 一律不動;壓完反而更大的圖也保留原圖。只作用在對話場景,生圖與圖片編輯不受影響。預設開啟;不想要的話把開關關掉即可。", "导入前会把本机的 account.key 改名备份(account.key.bak-时间戳),不会直接删除。": "匯入前會把本機的 account.key 改名備份(account.key.bak-時間戳),不會直接刪除。", "导入完成:{summary}": "匯入完成:{summary}", "导入密钥失败:{message}": "匯入金鑰失敗:{message}", "导入密钥并继续": "匯入金鑰並繼續", "导入账号": "匯入帳號", "导出中…": "匯出中…", "导出会把全部账号与自定义提供商定义写入一个 JSON 文件,可以拷到另一台机器上导入后继续使用。导入采用合并策略:同提供商下按业务身份(UID / userId / apiKey 等)去重 —— 已存在的账号只更新凭证,保留本机原有的优先级顺序;新账号追加到转发顺序末尾,不会抢占当前正在使用的账号;自定义提供商定义按 id 合并,本机缺失时自动补建。": "匯出會把全部帳號與自定義提供商定義寫入一個 JSON 檔案,可以拷到另一臺機器上匯入後繼續使用。匯入採用合併策略:同提供商下按業務身份(UID / userId / apiKey 等)去重 —— 已存在的帳號只更新憑證,保留本機原有的優先順序順序;新帳號追加到轉發順序末尾,不會搶佔當前正在使用的帳號;自定義提供商定義按 id 合併,本機缺失時自動補建。", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义": "匯出檔案內含 accessToken / refreshToken / apiKey 等憑證與自定義提供商定義", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "匯出檔案內含 accessToken / refreshToken / apiKey 等憑證與自定義提供商定義,可直接用於登入。請妥善保管,不要外傳或上傳到公共位置。", "导出账号": "匯出帳號", "将数据库和恢复凭证所需的密钥一起保存为密码加密的 .a2ab 备份,可在 Windows、macOS 或 Linux 上恢复,无需手工复制密钥。恢复时整体替换账号、配置、日志与桌面设置,并使用目标机器的密钥重新加密凭证,不覆盖本机已有钥匙。可取消包含日志以减小文件;旧 .sql 备份仍可导入。恢复前自动保留安全备份,完成后需要重新登录管理面板。": "將資料庫和恢復憑證所需的金鑰一起儲存為密碼加密的 .a2ab 備份,可在 Windows、macOS 或 Linux 上恢復,無需手工複製金鑰。恢復時整體替換帳號、配置、日誌與桌面設定,並使用目標機器的金鑰重新加密憑證,不覆蓋本機已有鑰匙。可取消包含日誌以減小檔案;舊 .sql 備份仍可匯入。恢復前自動保留安全備份,完成後需要重新登入管理面板。", "尚未注册管理员。开启「网关 → 网络访问 → 允许其他设备访问网关」时会引导注册,也可以从登录页注册。": "尚未註冊管理員。開啟「閘道 → 網路存取 → 允許其他裝置存取閘道」時會引導註冊,也可以從登入頁註冊。", "尚未注册管理员:管理接口不需要登录。开启「允许局域网访问」时会引导注册,也可以从登录页注册。": "尚未註冊管理員:管理介面不需要登入。開啟「允許區域網路存取」時會引導註冊,也可以從登入頁註冊。", "尚未配置视觉分析模型": "尚未配置視覺分析模型", "局域网开放后,管理接口要求登录。请设置管理员账号与密码,注册完成会直接继续开启流程。": "區域網路開放後,管理介面要求登入。請設定管理員帳號與密碼,註冊完成會直接繼續開啟流程。", "局域网访问": "區域網路存取", "工具用法与环境说明那一大段。": "工具用法與環境說明那一大段。", "已为「{label}」单独配置提示词": "已為「{label}」單獨配置提示詞", "已作为独立应用运行": "已作為獨立應用執行", "已使用本机密钥重新加密 {n} 项凭证,原有密钥未被覆盖。": "已使用本機金鑰重新加密 {n} 項憑證,原有金鑰未被覆蓋。", "已保存 {count} / {limit} 条报文(超出后丢弃最旧的)。": "已儲存 {count} / {limit} 條報文(超出後丟棄最舊的)。", "已保存的值不符合当前插件规则,请修改或恢复默认值。": "已儲存的值不符合目前外掛規則,請修改或還原預設值。", "已保存,留空则不修改": "已儲存,留空則不修改", "已保存,留空沿用": "已儲存,留空沿用", "已关闭": "已關閉", "已关闭 models.dev 联网刷新": "已關閉 models.dev 聯網重新整理", "已关闭。{note}": "已關閉。{note}", "已关闭「{label}」的网关自带提示词:能否通过上游校验取决于上游当前口径": "已關閉「{label}」的閘道器自帶提示詞:能否通過上游校驗取決於上游當前口徑", "已关闭会话图片压缩": "已關閉會話圖片壓縮", "已关闭出站指纹脱敏": "已關閉出站指紋脫敏", "已关闭开发者角色兼容": "已關閉開發者角色相容", "已关闭第三方模型回答完自动折叠过程": "已關閉第三方模型回答完自動摺疊過程", "已关闭网关跨域访问": "已關閉閘道器跨域存取", "已关闭:不额外补阶段标记,由客户端决定过程展示。": "已關閉:不額外補階段標記,由客戶端決定過程展示。", "已删除分组「{name}」": "已刪除分組「{name}」", "已取消「{label}」的单独配置": "已取消「{label}」的單獨配置", "已取消安装": "已取消安裝", "已取消导入": "已取消匯入", "已取消导出": "已取消匯出", "已取消恢复": "已取消恢復", "已启用 {count} 条规则,应用于{scope}。": "已啟用 {count} 條規則,應用於{scope}。", "已启用登录": "已啟用登入", "已复制全部版本信息": "已複製全部版本資訊", "已应用": "已應用", "已开启": "已開啟", "已开启:为正常完成的 Codex 回答补阶段标记。": "已開啟:為正常完成的 Codex 回答補階段標記。", "已开启:其他设备把 API 地址指向 {url}{panel}。": "已開啟:其他裝置把 API 地址指向 {url}{panel}。", "已开启:监听 0.0.0.0,允许其他设备访问。": "已開啟:監聽 0.0.0.0,允許其他裝置存取。", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "已恢復預設分組:概覽 / 轉發鏈路 / 診斷 / 系統", "已截断": "已截斷", "已指定出口": "已指定出口", "已接管": "已接管", "已改回内置默认提示词": "已改回內建預設提示詞", "已新建分组「{name}」,点组头的 + 把菜单移进来": "已新建分組「{name}」,點組頭的 + 把選單移進來", "已清掉「{label}」界面编辑的正文": "已清掉「{label}」介面編輯的正文", "已清掉界面编辑的提示词(回落文件 / 内置默认)": "已清掉介面編輯的提示詞(回落檔案 / 內建預設)", "已清空,回落插件内置默认值": "已清空,回落外掛內建預設值", "已清除本机保存的 API Key": "已清除本機儲存的 API Key", "已生效": "已生效", "已用时 {time}": "已用時 {time}", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。": "已自動切換到最小中性提示詞(撞了上游內容攔截,多半是 system 指紋誤報),到 {until} 自動解除。", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "已自動切換到最小中性提示詞(撞了上游內容攔截,多半是 system 指紋誤報),到 {until} 自動解除。期間本模式自己的提示詞不會發出;把提示詞改好後可以立即解除。", "已自动改用最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。": "已自動改用最小中性提示詞(撞了上游內容攔截,多半是 system 指紋誤報),到 {until} 自動解除。", "已自定义": "已自訂", "已运行": "已執行", "已退出登录": "已退出登入", "已隐藏": "已隱藏", "巴西葡萄牙语": "巴西葡萄牙語", "希望接入新的提供商或模型": "希望接入新的提供商或模型", "库中 schema": "庫中 schema", "库主文件的大小(不含运行期间的 WAL 临时文件,退出时已自动并回)。": "庫主檔案的大小(不含執行期間的 WAL 臨時檔案,退出時已自動並回)。", "库存目标": "庫存目標", "应用提供商": "應用提供商", "应用版本:{version}": "應用版本:{version}", "应用状态": "應用狀態", "应用窗口": "應用視窗", "建立上游 TCP/TLS 连接或代理隧道的最大等待时间(秒),默认 30 秒,范围 1~3600。": "建立上游 TCP/TLS 連線或代理隧道的最大等待時間(秒),預設 30 秒,範圍 1~3600。", "开发构建": "開發構建", "开发者角色兼容": "開發者角色相容", "开发者角色兼容设置已刷新": "開發者角色相容設定已重新整理", "开启前需要注册面板管理员,已注册会跳过此步骤。管理接口需要管理员会话或网关 Key;API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。": "開啟前需要註冊面板管理員,已註冊會略過此步驟。管理介面需要管理員工作階段或閘道 Key;API 呼叫需要已啟用的閘道 Key,沒有時會自動建立一把「預設」Key。", "开启后新发生的请求才会被记录(已经过去的请求补不回来)。报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "開啟後新發生的請求才會被記錄(已經過去的請求補不回來)。報文統一存放在本地資料庫裡,只保留最近 500 條(超出後丟棄最舊的),條數見左側「資料 → 資料儲存」的「除錯報文」。", "开启后新发生的请求才会被记录(已经过去的请求补不回来),请求日志的「预览对话」也随之开始保存原始正文。上游报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "開啟後新發生的請求才會被記錄(已經過去的請求補不回來),請求日誌的「預覽對話」也隨之開始儲存原始正文。上游報文統一存放在本地資料庫裡,只保留最近 500 條(超出後丟棄最舊的),條數見左側「資料 → 資料儲存」的「除錯報文」。", "开启后监听所有 IPv4 网卡(0.0.0.0),并不局限于局域网,也不会自动开放到公网;实际访问范围取决于网络与防火墙设置。修改后需要重启应用。": "開啟後監聽所有 IPv4 網路介面卡(0.0.0.0),並不侷限於區域網路,也不會自動開放到公網;實際存取範圍取決於網路與防火牆設定。修改後需要重新啟動應用程式。", "开启后网关将监听所有 IPv4 网卡(0.0.0.0),访问范围不再限于本机,也不局限于局域网。是否能从公网访问取决于网络与防火墙设置。": "開啟後閘道將監聽所有 IPv4 網路介面卡(0.0.0.0),存取範圍不再限於本機,也不侷限於區域網路。是否能從公網存取取決於網路與防火牆設定。", "开启后网关将监听所有网卡,同一局域网内的设备即可把 API 地址指向本机 IP 一起使用;管理接口从此要求管理员会话或网关 Key,转发接口在没有一把启用的 Key 时也会拒绝服务(届时会自动创建一把名为「默认」的 Key)。": "開啟後閘道器將監聽所有網路卡,同一區域網路內的裝置即可把 API 地址指向本機 IP 一起使用;管理介面從此要求管理員會話或閘道器 Key,轉發介面在沒有一把啟用的 Key 時也會拒絕服務(屆時會自動建立一把名為「預設」的 Key)。", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 套餐池(Start Plan)」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "開啟後,關閉視窗不只是隱藏,而是把介面視窗整個銷燬:底層的 WebView2 六個常駐程序(約 200MB 記憶體)隨之退出,閘道器轉發、定時簽到、餘額查詢都在後臺程序裡繼續,不受影響;需要介面時點托盤圖示重新開啟(WebView 冷啟動約 1 秒)。注意:介面銷燬期間「ZCode 套餐池(Start Plan)」通道的驗證碼權杖由介面鑄造,無法補充 —— 走該通道的請求會以 503 落進請求日誌(寫明原因),重新開啟介面即自動恢復。此開關只在「關閉視窗時最小化到托盤」開啟時有意義,最小化視窗不受影響。", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 活动套餐」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。与「开机自动启动」同时开启时,开机后也不建界面(只留托盘与后台进程),点托盘才打开 —— 效果与关窗后一致。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "開啟後,關閉視窗不只是隱藏,而是把介面視窗整個銷燬:底層的 WebView2 六個常駐程序(約 200MB 記憶體)隨之退出,閘道器轉發、定時簽到、餘額查詢都在後臺程序裡繼續,不受影響;需要介面時點托盤圖示重新開啟(WebView 冷啟動約 1 秒)。注意:介面銷燬期間「ZCode 活動套餐」通道的驗證碼權杖由介面鑄造,無法補充 —— 走該通道的請求會以 503 落進請求日誌(寫明原因),重新開啟介面即自動恢復。與「開機自動啟動」同時開啟時,開機後也不建介面(只留托盤與後臺程序),點托盤才打開 —— 效果與關窗後一致。此開關只在「關閉視窗時最小化到托盤」開啟時有意義,最小化視窗不受影響。", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 活动套餐」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "開啟後,關閉視窗不只是隱藏,而是把介面視窗整個銷燬:底層的 WebView2 六個常駐程序(約 200MB 記憶體)隨之退出,閘道器轉發、定時簽到、餘額查詢都在後臺程序裡繼續,不受影響;需要介面時點托盤圖示重新開啟(WebView 冷啟動約 1 秒)。注意:介面銷燬期間「ZCode 活動套餐」通道的驗證碼權杖由介面鑄造,無法補充 —— 走該通道的請求會以 503 落進請求日誌(寫明原因),重新開啟介面即自動恢復。此開關只在「關閉視窗時最小化到托盤」開啟時有意義,最小化視窗不受影響。", "开启后,关闭窗口会销毁界面并释放 WebView 进程,网关转发、定时签到、余额查询仍在后台继续。ZCode 模型请求免验证时不受影响;上游要求人机验证时,需要重新打开界面,在账号的「套餐明细」中主动完成验证。此开关只在「关闭窗口时最小化到托盘」开启时有意义。": "開啟後,關閉視窗會銷毀介面並釋放 WebView 程序,閘道轉發、定時簽到、餘額查詢仍在背景繼續。ZCode 模型請求免驗證時不受影響;上游要求人機驗證時,需要重新開啟介面,在帳號的「套餐明細」中主動完成驗證。此開關只在「關閉視窗時最小化到系統匣」開啟時有意義。", "开启后,新发生的请求会保存上游调试报文与下游正文,历史请求无法补录。上游调试报文只保留最近 500 条;两侧条数可在「数据 → 数据存储」查看。关闭开关不会删除已保存的报文,可在请求日志中选择「仅清空报文原文」一起清理。": "開啟後,新發生的請求會儲存上游除錯報文與下游正文,歷史請求無法補錄。上游除錯報文只保留最近 500 條;兩側條數可在「資料 → 資料儲存」檢視。關閉開關不會刪除已儲存的報文,可在請求日誌中選擇「僅清空報文原文」一起清理。", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。": "開啟後,登入頁在瀏覽器後臺自動完成驗證(對真人無感),而指令碼每次嘗試都要先算一道題 —— 暴力破解與搶注的成本顯著上升。僅影響面板的登入 / 註冊,與 API 客戶端的 API Key 無關。", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。桌面端与网页端各自独立:桌面端主要服务本机与局域网,网页端(Docker / 服务端)直接暴露在网络上的登录页风险更高,建议保持开启。": "開啟後,登入頁在瀏覽器後臺自動完成驗證(對真人無感),而指令碼每次嘗試都要先算一道題 —— 暴力破解與搶注的成本顯著上升。僅影響面板的登入 / 註冊,與 API 客戶端的 API Key 無關。桌面版與網頁端各自獨立:桌面版主要服務本機與區域網路,網頁端(Docker / 服務端)直接暴露在網路上的登入頁風險更高,建議保持開啟。", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "開啟後,閘道器會把每次轉發**發給上游的請求**(請求頭 + 請求體)與**上游返回的響應**(狀態碼 + 響應頭 + 響應體)完整儲存到本地,供請求日誌頁的「詳情」檢視。請求頭裡的 Authorization、Cookie、API Key 等憑據欄位一律替換成 [redacted],不會明文落盤;請求體與響應體按原樣儲存(可能包含你的對話內容)。報文只保留最近 500 條,超出後丟棄最舊的。這是排障用的臨時開關,不需要時建議關閉。", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看;请求日志详情的「预览对话」也依赖本开关 —— 它保存的是客户端发来的请求体与网关下发的响应体(两侧各截断到 128 KiB),不开这个开关时预览对话没有数据可看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。上游报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "開啟後,閘道器會把每次轉發**發給上游的請求**(請求頭 + 請求體)與**上游返回的響應**(狀態碼 + 響應頭 + 響應體)完整儲存到本地,供請求日誌頁的「詳情」檢視;請求日誌詳情的「預覽對話」也依賴本開關 —— 它儲存的是客戶端發來的請求體與閘道器下發的響應體(兩側各截斷到 128 KiB),不開這個開關時預覽對話沒有資料可看。請求頭裡的 Authorization、Cookie、API Key 等憑據欄位一律替換成 [redacted],不會明文落盤;請求體與響應體按原樣儲存(可能包含你的對話內容)。上游報文只保留最近 500 條,超出後丟棄最舊的。這是排障用的臨時開關,不需要時建議關閉。", "开启后,能连接到网关的设备可通过浏览器访问网页管理面板,需使用管理员账号登录。访问范围与网关相同,并不局限于局域网。": "開啟後,能連線到閘道的裝置可透過瀏覽器存取網頁管理面板,需使用管理員帳號登入。存取範圍與閘道相同,並不侷限於區域網路。", "开启后,调用方可以用专用请求头声明已登记的客户端名称。这不是身份认证,只用于日志和统计,不会获得额外权限。": "開啟後,呼叫方可以用專用請求頭宣告已登記的客戶端名稱。這不是身份認證,只用於日誌和統計,不會獲得額外許可權。", "开启局域网访问": "開啟區域網路存取", "开启来源声明": "開啟來源宣告", "开启网络访问": "開啟網路存取", "开放后,局域网内其他设备的浏览器打开本机 IP 即可进入管理面板(需管理员账号登录)。": "開放後,區域網路內其他裝置的瀏覽器開啟本機 IP 即可進入管理面板(需管理員帳號登入)。", "开机自动启动": "開機自動啟動", "开源许可": "開源授權", "开(最多 {n} 轮)": "開(最多 {n} 輪)", "归属客户端": "歸屬客戶端", "当前三段都是官方原文。": "當前三段都是官方原文。", "当前不可用": "當前不可用", "当前后端不支持词表编辑与提供商范围,请更新后端后重试。": "當前後端不支援詞表編輯與提供商範圍,請更新後端後重試。", "当前固定为浅色模式,不随系统变化。": "當前固定為淺色模式,不隨系統變化。", "当前固定为深色模式,不随系统变化。": "當前固定為深色模式,不隨系統變化。", "当前密码": "當前密碼", "当前已改过:{edited}。": "當前已改過:{edited}。", "当前形态": "當前形態", "当前按 100% 显示(默认比例)。": "當前按 100% 顯示(預設比例)。", "当前按 k / M 缩写显示(如 1.20M / 8.4k)。": "當前按 k / M 縮寫顯示(如 1.20M / 8.4k)。", "当前按 {n}% 显示。": "當前按 {n}% 顯示。", "当前按「万 / 亿」式本地量级词显示(如 1.2亿 / 8400万)。": "當前按「萬 / 億」式本地量級詞顯示(如 1.2億 / 8400萬)。", "当前是透传模式:存下来也不会发出,切成「替换 / 追加」之后才生效。": "當前是透傳模式:存下來也不會發出,切成「替換 / 追加」之後才生效。", "当前显示为「1.20M / 8.4k / 1.2B」这类英文缩写。": "目前顯示為「1.20M / 8.4k / 1.2B」這類英文縮寫。", "当前显示为「1.2亿 / 8400万」这类中文量级。": "當前顯示為「1.2億 / 8400萬」這類中文量級。", "当前样本结果:{name}": "當前樣本結果:{name}", "当前正在使用": "目前正在使用", "当前浏览器以管理员身份登录着本面板。「退出登录」会撤销这台设备的登录会话(30 天内的自动续期一并失效),需要重新输入账号密码;其他已登录的设备不受影响。": "當前瀏覽器以管理員身份登入著本面板。「退出登入」會撤銷這臺裝置的登入會話(30 天內的自動續期一併失效),需要重新輸入帳號密碼;其他已登入的裝置不受影響。", "当前版本不支持品牌设置": "目前版本不支援品牌設定", "当前环境不支持局域网访问设置": "當前環境不支援區域網路存取設定", "当前环境不支持整库备份": "當前環境不支援整庫備份", "当前环境不支持整库备份(仅桌面端可用)": "當前環境不支援整庫備份(僅桌面版可用)", "当前环境不支持整库恢复": "當前環境不支援整庫恢復", "当前环境不支持整库恢复(仅桌面端可用)": "當前環境不支援整庫恢復(僅桌面版可用)", "当前环境不支持网络访问设置": "目前環境不支援網路存取設定", "当前环境不支持读取版本信息(桥接方法缺失)": "當前環境不支援讀取版本資訊(橋接方法缺失)", "当前生效值:{value}": "目前生效值:{value}", "当前生效的正文来自{source}{file}。保存后这一份会盖过提示词文件与内置默认{note}。": "當前生效的正文來自{source}{file}。儲存後這一份會蓋過提示詞檔案與內建預設{note}。", "当前界面": "當前介面", "当前管理员:{name}": "當前管理員:{name}", "当前设置已保存": "當前設定已儲存", "当前跟随操作系统的深浅色设置,系统切换时界面会自动跟上。": "當前跟隨作業系統的深淺色設定,系統切換時介面會自動跟上。", "当前路由内的可用视觉模型": "當前路由內的可用視覺模型", "待迁移旧数据": "待遷移舊資料", "待配置": "待配置", "忘记密码时无法在界面里找回:需要停掉程序后,从数据库删除管理员记录(kv 表的 panelAdmin 键),重启后按首次使用重新注册。具体命令与各形态的库文件路径见 docs 目录下的「重置管理员」文档。": "忘記密碼時無法在介面裡找回:需要停掉程式後,從資料庫刪除管理員記錄(kv 表的 panelAdmin 鍵),重啟後按首次使用重新註冊。具體命令與各形態的庫檔案路徑見 docs 目錄下的「重置管理員」文件。", "思考等级、图片能力未知、等待上限": "思考等級、圖片能力未知、等待上限", "总耗时 {time}": "總耗時 {time}", "恢复中…": "恢復中…", "恢复中,请稍候…": "恢復中,請稍候…", "恢复仍在进行中…": "恢復仍在進行中…", "恢复失败": "恢復失敗", "恢复失败:{message}": "恢復失敗:{message}", "恢复完成": "恢復完成", "恢复官方原文": "恢復官方原文", "恢复插件默认值": "還原外掛預設值", "恢复整库": "恢復整庫", "恢复整库备份": "恢復整庫備份", "恢复期间请不要关闭应用或退出登录 —— 中途中断会让数据停在一个不完整的状态。完成后本页会自动刷新。": "恢復期間請不要關閉應用或退出登入 —— 中途中斷會讓資料停在一個不完整的狀態。完成後本頁會自動重新整理。", "恢复没有完成": "恢復沒有完成", "恢复进度": "恢復進度", "恢复默认": "恢復預設", "恢复默认 Logo": "還原預設 Logo", "恢复默认侧边栏": "恢復預設側邊欄", "恢复默认品牌": "還原預設品牌", "恢复默认词表": "恢復預設詞表", "想回到原来那份,把这里清空再保存即可(不会删掉你配的文件路径)。": "想回到原來那份,把這裡清空再儲存即可(不會刪掉你配的檔案路徑)。", "想要的新功能或改进想法": "想要的新功能或改進想法", "所有未单独配置的提供商都用这一份": "所有未單獨配置的提供商都用這一份", "所有菜单都已在这一组": "所有選單都已在這一組", "手机端只做查看与高频操作;添加账号、编辑凭证、改写客户端配置仍需桌面端。": "手機端只做檢視與高頻操作;新增帳號、編輯憑證、改寫客戶端配置仍需桌面版。", "手机端可管理所连接网关的账号、签到与插件,并使用提供商声明的动态登录入口;其余既有添加入口、编辑凭证和改写客户端配置仍需桌面面板。": "手機端可管理所連線閘道的帳號、簽到與外掛,並使用提供商宣告的動態登入入口;其餘既有新增入口、編輯憑證及改寫用戶端設定仍需桌面面板。", "手机端可管理所连接网关的账号、签到与插件;添加账号、编辑凭证、改写客户端配置仍需桌面端。": "手機端可管理所連線閘道器的帳號、簽到與外掛;新增帳號、編輯憑證、改寫客戶端配置仍需桌面版。", "托管网页界面": "託管網頁介面", "找不到可用视觉模型时": "找不到可用視覺模型時", "找不到可用视觉模型时会先停止并说明原因。": "找不到可用視覺模型時會先停止並說明原因。", "找不到就停止并说明原因。": "找不到就停止並說明原因。", "找不到就按指定备选顺序尝试(还没加备选)。": "找不到就按指定備選順序嘗試(還沒加備選)。", "找不到就按顺序试这 {count} 个备选(先是 {model})。": "找不到就按順序試這 {count} 個備選(先是 {model})。", "把 Base URL 复制给客户端": "把 Base URL 複製給客戶端", "把地址里的 your-server 与 USERNAME 换成你自己的;目录不存在时会自动创建。": "把地址裡的 your-server 與 USERNAME 換成你自己的;目錄不存在時會自動建立。", "把整份数据库(账号、网关配置、事件日志、请求统计、调试报文与桌面设置)导出成一个 SQL 文件,恢复时整体替换本机全部数据 —— 与上面「账号导入 / 导出」的逐条合并是两种语义:恢复会连配置、日志与当前启用状态一起换成备份那台机器的状态。导出默认包含日志与调试报文(文件可能很大),不需要时可以取消勾选只备业务数据。恢复前会自动把当前数据备份到配置目录的 backups/ 下,恢复后需要重新登录管理面板。": "把整份資料庫(帳號、閘道器配置、事件日誌、請求統計、除錯報文與桌面設定)匯出成一個 SQL 檔案,恢復時整體替換本機全部資料 —— 與上面「帳號匯入 / 匯出」的逐條合併是兩種語義:恢復會連配置、日誌與當前啟用狀態一起換成備份那臺機器的狀態。匯出預設包含日誌與除錯報文(檔案可能很大),不需要時可以取消勾選只備業務資料。恢復前會自動把當前資料備份到配置目錄的 backups/ 下,恢復後需要重新登入管理面板。", "把整次请求交给视觉模型,由它直接回答,不再回到原模型。": "把整次請求交給視覺模型,由它直接回答,不再回到原模型。", "把菜单移入 {name}": "把選單移入 {name}", "把菜单移入「{name}」": "把選單移入「{name}」", "把账号、网关配置、自定义提供商、Agent 配置、代理池 / 订阅、签到与余额记录同步到 WebDAV 或 S3 兼容存储,换台机器后一键取回。事件日志、请求明细、调试报文与面板登录态不在同步范围内(它们是本机的运行痕迹)。上传的账号凭证仍是加密形态,解密用的账号密钥由「同步密码」单独加密后一并上传 —— 同步密码不会保存到云端,换机下载时需要重新输入。": "把帳號、閘道器配置、自定義提供商、Agent 配置、代理池 / 訂閱、簽到與餘額記錄同步到 WebDAV 或 S3 相容儲存,換臺機器後一鍵取回。事件日誌、請求明細、除錯報文與面板登入態不在同步範圍內(它們是本機的執行痕跡)。上傳的帳號憑證仍是加密形態,解密用的帳號金鑰由「同步密碼」單獨加密後一併上傳 —— 同步密碼不會儲存到雲端,換機下載時需要重新輸入。", "把路径里的主目录显示成 ~,截图分享时不暴露用户名": "把路徑裡的主目錄顯示成 ~,截圖分享時不暴露使用者名稱", "把路径里的主目录(如 C:\\Users\\你的用户名)显示成 ~,截图分享时不暴露用户名。只影响本页显示与复制,不改任何文件。": "把路徑裡的主目錄(如 C:\\Users\\你的使用者名稱)顯示成 ~,截圖分享時不暴露使用者名稱。隻影響本頁顯示與複製,不改任何檔案。", "报表天数": "報表天數", "报表页的热力图与按天趋势,默认 99999 天(近似全量保留),可填 1–99999 天。": "報表頁的熱力圖與按天趨勢,預設 99999 天(近似全量保留),可填 1–99999 天。", "拖动分组 {name}": "拖動分組 {name}", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "拖動左側 ⠿ 調整順序(選單可以跨組拖);撥開關控制顯隱;點分組名可重新命名;組頭的 + 把別的選單移進來;眼睛按鈕隱藏整組。改動即時生效並記住,左側側邊欄就是結果。鍵盤也能排序:把手聚焦後按 Alt+↑ / ↓。", "拖动菜单 {name}": "拖動選單 {name}", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "拖動調整分組順序(Alt+↑ / ↓ 也可)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "拖動調整順序,可跨組(Alt+↑ / ↓ 也可)", "指定备选仍受当前请求权限和路由范围限制,路由组请求不会跳到组外。不会转为辅助识图继续。": "指定備選仍受當前請求許可權和路由範圍限制,路由組請求不會跳到組外。不會轉為輔助識圖繼續。", "指定提供商": "指定提供商", "指定角色": "指定角色", "指定错误码直接换号": "指定錯誤碼直接換號", "指纹脱敏": "指紋脫敏", "指纹脱敏会在转发前按词表顺序改写请求消息中的文本,包括对话内容、思考内容和工具调用参数。默认词表包含客户端模板句与计费表头的精确替换、正则删除规则,可以新增、编辑、删除、启停和调整顺序;替换内容留空表示删除匹配内容。默认应用全部提供商,也可指定多家。改动只作用于发给上游的副本,响应内容不变。编辑后点击「保存设置」,下一次请求生效;清空词表表示不做任何指纹改写,恢复默认只重置词表。": "指紋脫敏會在轉發前按詞表順序改寫請求訊息中的文本,包括對話內容、思考內容和工具呼叫引數。預設詞表包含客戶端模板句與計費表頭的精確替換、正則刪除規則,可以新增、編輯、刪除、啟停和調整順序;替換內容留空表示刪除匹配內容。預設應用全部提供商,也可指定多家。改動只作用於發給上游的副本,響應內容不變。編輯後點擊「儲存設定」,下一次請求生效;清空詞表表示不做任何指紋改寫,恢復預設只重置詞表。", "指纹脱敏设置仅本次运行生效,写入数据库失败,请检查配置目录": "指紋脫敏設定僅本次執行生效,寫入資料庫失敗,請檢查配置目錄", "指纹脱敏设置已刷新": "指紋脫敏設定已重新整理", "按下面两块设置处理图片;关闭后设置全部保留。": "依下面兩塊設定處理圖片;關閉後設定全部保留。", "按列表自上而下匹配": "按列表自上而下匹配", "按原文精确匹配,区分大小写;不会自动去掉首尾空白。": "按原文精確匹配,區分大小寫;不會自動去掉首尾空白。", "按天聚合保留天数": "按天聚合保留天數", "按指定备选顺序尝试": "按指定備選順序嘗試", "按提供商查看和调整专属选项": "依供應商查看與調整專屬選項", "按提供商筛选设置": "依供應商篩選設定", "按提供商管理专属选项,作用于当前网关中该提供商的所有账号。": "依供應商管理專屬選項,套用至目前閘道中該供應商的所有帳號。", "按提供商配置": "按提供商配置", "按每条请求的软件标识识别客户端,不依赖 API Key。规则修改只影响新请求,内置规则随软件更新,自定义规则参与备份与云同步。": "按每條請求的軟體標識識別客戶端,不依賴 API Key。規則修改隻影響新請求,內建規則隨軟體更新,自定義規則參與備份與雲同步。", "换一台服务器": "換一臺伺服器", "排队等待": "排隊等待", "排队等待次数": "排隊等待次數", "排队等待秒数": "排隊等待秒數", "排队等待设置已刷新": "排隊等待設定已重新整理", "探测与领取时会用 {version} 作为客户端版本号": "探測與領取時會用 {version} 作為客戶端版本號", "接入": "接入", "接受调用方来源声明": "接受呼叫方來源宣告", "接管回答的模型": "接管回答的模型", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "控制主側邊欄顯示哪些選單、按什麼順序、怎麼分組。隱藏隻影響導航顯示,不會撤銷頁面存取許可權;被隱藏的頁面仍可通過地址直接開啟。", "控制报表与请求日志里 Token 读数的写法:开启后按「万 / 亿」式的本地量级词显示(简体为万 / 亿,繁体为萬 / 億,日文为万 / 億,韩文为만 / 억),关闭则用 k / M 缩写(与上游文档、接口字段的写法一致)。英文 / 葡语的本地量级词就是 k / M,这项对它们没有区别。只影响显示口径,不改变任何统计与存储的数值。": "控制報表與請求日誌裡 Token 讀數的寫法:開啟後按「萬 / 億」式的本地量級詞顯示(簡體為萬 / 億,繁體為萬 / 億,日文為萬 / 億,韓文為만 / 억),關閉則用 k / M 縮寫(與上游文件、介面欄位的寫法一致)。英文 / 葡語的本地量級詞就是 k / M,這項對它們沒有區別。隻影響顯示口徑,不改變任何統計與儲存的數值。", "控制报表与请求日志里 Token 读数的写法:开启后按中文量级显示(1.2亿 / 8400万),关闭则用 k / M / B 缩写(与上游文档、接口字段的写法一致)。这只影响显示口径,不改变任何统计与存储的数值。": "控制報表與請求日誌裡 Token 讀數的寫法:開啟後按中文量級顯示(1.2億 / 8400萬),關閉則用 k / M / B 縮寫(與上游文件、介面欄位的寫法一致)。這只影響顯示口徑,不改變任何統計與儲存的數值。", "控制界面的深浅色,与左侧边栏底部的三个主题按钮是同一个设置(改哪一处,另一处立刻跟上)。「跟随系统」会随操作系统当前的浅色 / 深色自动切换,并在系统主题变化时即时跟上;选「浅色」或「深色」则把界面固定在该模式,不再随系统变化。窗口标题栏的深浅色会一并同步,不会出现深色界面配一条浅色标题栏的情况。": "控制介面的深淺色,與左側邊欄底部的三個主題按鈕是同一個設定(改哪一處,另一處立刻跟上)。「跟隨系統」會隨作業系統當前的淺色 / 深色自動切換,並在系統主題變化時即時跟上;選「淺色」或「深色」則把介面固定在該模式,不再隨系統變化。視窗標題欄的深淺色會一併同步,不會出現深色介面配一條淺色標題欄的情況。", "提供商与模型": "提供商與模型", "提供商专属设置": "供應商專屬設定", "提供商当前不可用,未保存的修改已保留;恢复插件后可继续编辑。": "供應商目前無法使用,尚未儲存的修改已保留;恢復外掛後可繼續編輯。", "提供商设置已保存": "供應商設定已儲存", "提供商设置返回格式无效,请刷新后重试": "供應商設定回傳格式無效,請重新整理後再試。", "提建议": "提建議", "提示词文件": "提示詞檔案", "提示词文件已更新": "提示詞檔案已更新", "提示词正文": "提示詞正文", "提示词正文已更新": "提示詞正文已更新", "插件或设置已变化,请放弃修改并刷新后重新编辑。": "外掛或設定已變更,請放棄修改並重新整理後再編輯。", "操作系统": "作業系統", "支持 .a2ab 加密备份和旧 .sql 文件;旧 SQL 不包含恢复密钥,跨机器导入仍需原机密钥。": "支援 .a2ab 加密備份和舊 .sql 檔案;舊 SQL 不包含恢復金鑰,跨機器匯入仍需原機金鑰。", "支持 PNG、JPG、WebP,最大 2 MiB、4096 × 4096 像素;自动缩小至 512 像素以内,建议使用正方形图片。": "支援 PNG、JPG、WebP,最大 2 MiB、4096 × 4096 像素;自動縮小至 512 像素以內,建議使用正方形圖片。", "改动仍保存在本机,修复网络或凭据后下一次改动会自动重试,也可以手动点「上传到云端」。": "改動仍儲存在本機,修復網路或憑據後下一次改動會自動重試,也可以手動點「上傳到雲端」。", "改动仍保存在本机,系统会延长等待并自动重试;修复网络或凭据后,也可以手动点「上传到云端」。": "變更仍儲存在本機,系統會延長等待並自動重試;修復網路或憑證後,也可以手動點「上傳到雲端」。", "改完立即生效,不用重启(下一个请求就用新模式)。降级是自动的临时状态,解除后本模式自己的提示词立刻恢复。": "改完立即生效,不用重啟(下一個請求就用新模式)。降級是自動的臨時狀態,解除後本模式自己的提示詞立刻恢復。", "放大或缩小整个界面(文字与控件一起变),效果与浏览器 Ctrl +/- 相同:共 11 档,立即生效并记住。": "放大或縮小整個介面(文字與控制元件一起變),效果與瀏覽器 Ctrl +/- 相同:共 11 檔,立即生效並記住。", "放弃修改并刷新": "放棄修改並重新整理", "数据": "資料", "数据保留": "資料保留", "数据保留设置已刷新": "資料保留設定已重新整理", "数据存储": "資料儲存", "数据库 schema": "資料庫 schema", "数据库不可用": "資料庫不可用", "数据库与恢复密钥一起加密保存。密码不会保存在应用或备份中,忘记后无法恢复,请妥善保管。": "資料庫與恢復金鑰一起加密儲存。密碼不會儲存在應用或備份中,忘記後無法恢復,請妥善保管。", "数据库主文件与 WAL 文件的总占用,与请求日志清理弹窗采用同一口径;清理后可压缩数据库回收空闲空间。": "資料庫主檔案與 WAL 檔案的總佔用,與請求日誌清理彈窗採用同一口徑;清理後可壓縮資料庫回收空閒空間。", "数据库文件": "資料庫檔案", "数据目录": "資料目錄", "数据统一保存在配置目录下的 agent2api.db;如需更换位置,请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "資料統一儲存在配置目錄下的 agent2api.db;如需更換位置,請設定環境變數 AGENT2API_PROXY_HOME 後重啟程式。", "整体替换": "整體替換", "整库备份 / 恢复": "整庫備份 / 恢復", "整库恢复失败": "整庫恢復失敗", "整库恢复完成": "整庫恢復完成", "整次请求交给 {model} 直接回答,不再回到原模型。": "整次請求交給 {model} 直接回答,不再回到原模型。", "新分组名": "新分組名", "新增 {added} 个、更新 {updated} 个{suffix}{note}": "新增 {added} 個、更新 {updated} 個{suffix}{note}", "新增脱敏规则": "新增脫敏規則", "新增规则": "新增規則", "新安装和升级后默认关闭。先配置再开启,关闭后保留配置。": "新安裝和升級後預設關閉。先配置再開啟,關閉後保留配置。", "新密码": "新密碼", "新密码不能与当前密码相同": "新密碼不能與當前密碼相同", "新密码至少 8 位": "新密碼至少 8 位", "新建分组": "新建分組", "新建客户端分类": "新建客戶端分類", "无效或重复的标识请求头:{headers}": "無效或重複的標識請求頭:{headers}", "无法读取品牌设置": "無法讀取品牌設定", "无法读取图片,请重新选择": "無法讀取圖片,請重新選擇", "日志与请求日志同时受保留天数和数量上限限制。日志默认 30 天、10000 条,各级别按比例保留;调试详情最多保留 3 天。请求日志默认 99999 天、1000000 条(100 万),超出后从最旧的记录开始清理,并同步删除对应原始正文。按天聚合默认 99999 天,只按天数保留,不受请求日志数量清理影响。天数可填 1–99999,数量可填 1–100000000。调小任一设置并确认后立即清理,且不可恢复。": "日誌與請求日誌同時受保留天數和數量上限限制。日誌預設 30 天、10000 筆,各層級按比例保留;除錯詳情最多保留 3 天。請求日誌預設 99999 天、1000000 筆(100 萬),超出後從最舊的記錄開始清理,並同步刪除對應原始本文。每日彙總預設 99999 天,只按天數保留,不受請求日誌數量清理影響。天數可填 1–99999,數量可填 1–100000000。調小任一設定並確認後立即清理,且無法還原。", "日志保留数量上限": "日誌保留數量上限", "日志文件": "日誌檔案", "日语": "日語", "显示 {name}": "顯示 {name}", "显示分组 {name}": "顯示分組 {name}", "显示名称": "顯示名稱", "显示名称最多 64 个字符": "顯示名稱最多 64 個字元", "显示模式": "顯示模式", "显示这一组": "顯示這一組", "暂无可编辑的提供商设置": "暫無可編輯的供應商設定", "暂无自定义规则,正在使用内置识别。": "暫無自定義規則,正在使用內建識別。", "暂无自定义规则,正在使用内置识别。也可以从请求详情直接添加规则。": "暫無自定義規則,正在使用內建識別。也可以從請求詳情直接新增規則。", "暂未获取到本机访问地址,请使用其他设备能连接到的本机 IP 与网关端口。": "暫時無法取得本機存取位址,請使用其他裝置能連線到的本機 IP 與閘道連接埠。", "更新": "更新", "更新出网线路": "更新出網線路", "更新通道": "更新通道", "替换": "替換", "替换 = 客户端 system / developer 消息全部删掉,换成网关的提示词;追加 = 保留客户端内容,只在开头 system 块之后多插一条。两者都只改发给上游的副本,客户端看到的响应不变。": "替換 = 客戶端 system / developer 訊息全部刪掉,換成閘道器的提示詞;追加 = 保留客戶端內容,只在開頭 system 塊之後多插一條。兩者都只改發給上游的副本,客戶端看到的響應不變。", "替换为网关提示词": "替換為閘道器提示詞", "替换内容": "替換內容", "替换内容最多 {max} 个字符": "替換內容最多 {max} 個字元", "替换前会自动把当前数据备份到配置目录的 backups/ 文件夹。": "替換前會自動把當前資料備份到配置目錄的 backups/ 資料夾。", "替换前的数据已自动备份为 {name}(在数据目录的 backups/ 下,可整文件拷回)": "替換前的資料已自動備份為 {name}(在資料目錄的 backups/ 下,可整檔案拷回)", "替换并恢复": "替換並恢復", "最多 64 个字符,留空恢复为 Agent2API。": "最多 64 個字元,留空還原為 Agent2API。", "最多 {count} 个备选;备选仍受当前请求权限与路由范围限制,不会跳到路由组外,也不会转为辅助识图。": "最多 {count} 個備選;備選仍受當前請求許可權與路由範圍限制,不會跳到路由組外,也不會轉為輔助識圖。", "最小自动上传间隔": "最小自動上傳間隔", "最近 {window} 条请求中,{scanned} 条有识别依据,{matched} 条符合条件,{applied} 条会采用本规则。": "最近 {window} 條請求中,{scanned} 條有識別依據,{matched} 條符合條件,{applied} 條會採用本規則。", "有未保存的修改": "有未儲存的修改", "有未保存的改动:保存后才能同步(测试连接不受影响)。": "有未儲存的改動:儲存後才能同步(測試連線不受影響)。", "有近期套餐池请求时读取库存状态的间隔,默认 2500 毫秒,可填 1000–30000。没有近期请求时降低读取频率,轮询不会发起验证码。": "有近期套餐池請求時讀取庫存狀態的間隔,預設 2500 毫秒,可填 1000–30000。沒有近期請求時降低讀取頻率,輪詢不會發起驗證碼。", "服务商": "服務商", "服务器地址": "伺服器地址", "服务端密钥加密保存,不会返回浏览器;切回 ALTCHA 后会保留,方便再次启用。": "伺服器金鑰加密儲存,不會回傳瀏覽器;切回 ALTCHA 後會保留,方便再次啟用。", "服务端密钥(Secret Key)": "伺服器金鑰(Secret Key)", "期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "期間本模式自己的提示詞不會發出;把提示詞改好後可以立即解除。", "未保存": "未儲存", "未匹配已知客户端": "未匹配已知客戶端", "未单独配置:模式、提示词文件与正文都跟随上面的全局配置(当前「{mode}」)。": "未單獨配置:模式、提示詞檔案與正文都跟隨上面的全域配置(當前「{mode}」)。", "未启用": "未啟用", "未开启轻量模式:关窗仅隐藏窗口,界面进程常驻内存,随时打开不等待": "未開啟輕量模式:關窗僅隱藏視窗,介面程序常駐記憶體,隨時開啟不等待", "未开启,developer 角色消息会原样发往上游,不认识该角色的上游会报错(400)。": "未開啟,developer 角色訊息會原樣發往上游,不認識該角色的上游會報錯(400)。", "未开启,客户端 system 模板会原样发往上游,可能被内容审核误拦(400)。": "未開啟,客戶端 system 模板會原樣發往上游,可能被內容稽核誤攔(400)。", "未开启,浏览器跨域无法直连网关。": "未開啟,瀏覽器跨域無法直連閘道器。", "未开启,转发时不保存任何原始报文。": "未開啟,轉發時不儲存任何原始報文。", "未开启:网关只监听 127.0.0.1,仅本机可以访问。": "未開啟:閘道器只監聽 127.0.0.1,僅本機可以存取。", "未注册": "未註冊", "未注册闸门": "未註冊閘門", "未知原因": "未知原因", "未知来源": "未知來源", "未知设备": "未知裝置", "未知账号": "未知帳號", "未能读取 Cline 伪装头设置,请稍后重试": "未能讀取 Cline 偽裝頭設定,請稍後重試", "未能读取 ZCode 版本号设置,请稍后重试": "未能讀取 ZCode 版本號設定,請稍後重試", "未能读取 models.dev 元数据状态,请稍后重试": "未能讀取 models.dev 後設資料狀態,請稍後重試", "未能读取云同步设置,请稍后重试。": "未能讀取雲同步設定,請稍後重試。", "未能读取保存后的指纹脱敏设置": "未能讀取儲存後的指紋脫敏設定", "未能读取开发者角色兼容设置,请稍后重试": "未能讀取開發者角色相容設定,請稍後重試", "未能读取指纹脱敏设置,请稍后重试": "未能讀取指紋脫敏設定,請稍後重試", "未能读取机器人校验设置": "未能讀取機器人驗證設定", "未能读取第三方模型回答完自动折叠过程设置,请稍后重试": "未能讀取第三方模型回答完自動摺疊過程設定,請稍後重試", "未能读取系统提示词设置,请稍后重试": "未能讀取系統提示詞設定,請稍後重試", "未能读取网关跨域访问设置,请稍后重试": "未能讀取閘道器跨域存取設定,請稍後重試", "未能读取网络访问设置,请稍后重试": "無法讀取網路存取設定,請稍後重試", "未能读取调试模式设置,请稍后重试": "未能讀取除錯模式設定,請稍後重試", "未能读取账户信息,请稍后重试": "未能讀取帳戶資訊,請稍後重試", "未设置,使用插件内置的默认版本号": "未設定,使用外掛內建的預設版本號", "未采用本规则,请检查开关、来源声明或规则顺序": "未採用本規則,請檢查開關、來源宣告或規則順序", "本地账号、配置、签到与余额记录变化后自动上传(合并 1 秒内的连续改动,最长 10 秒传一次;内容没变时不发请求)。": "本地帳號、配置、簽到與餘額記錄變化後自動上傳(合併 1 秒內的連續改動,最長 10 秒傳一次;內容沒變時不發請求)。", "本机 API 地址": "本機 API 位址", "本机 APK 版本": "本機 APK 版本", "本机全部数据会被备份整体替换,恢复前自动保留安全备份,完成后需要重新登录管理面板。本机已有密钥不会被覆盖。": "本機全部資料會被備份整體替換,恢復前自動保留安全備份,完成後需要重新登入管理面板。本機已有金鑰不會被覆蓋。", "本机应用版本": "本機應用版本", "本机界面版本": "本機介面版本", "本机的业务数据(账号、配置、Agent 配置、代理池 / 订阅、签到与余额记录)将上传并": "本機的業務資料(帳號、配置、Agent 配置、代理池 / 訂閱、簽到與餘額記錄)將上傳並", "本机的全部数据(账号、网关配置、日志统计与桌面设置)将被所选备份文件": "本機的全部資料(帳號、閘道器配置、日誌統計與桌面設定)將被所選備份檔案", "本机的账号、网关配置、Agent 配置、代理池 / 订阅、签到与余额记录将被远端快照": "本機的帳號、閘道器配置、Agent 配置、代理池 / 訂閱、簽到與餘額記錄將被遠端快照", "本次无需刷新": "本次無需重新整理", "本软件不提供任何担保,可按 AGPL-3.0 修改与分发;通过网络提供修改版服务时须向用户提供对应源码。": "本軟體不提供任何擔保,可按 AGPL-3.0 修改與分發;透過網路提供修改版服務時須向使用者提供對應原始碼。", "本项目的 AGPL-3.0 许可不替代这些第三方许可。名称与标识的商标权归各自权利人所有。": "本專案的 AGPL-3.0 授權不取代這些第三方授權。名稱與標誌的商標權歸各自權利人所有。", "机器人校验": "機器人校驗", "机器人校验设置已保存": "機器人驗證設定已儲存", "条数": "筆數", "来源声明": "來源宣告", "来源声明当前关闭,这条规则不会生效。请先在客户端识别设置中开启。": "來源聲明當前關閉,這條規則不會生效。請先在客戶端識別設定中開啟。", "来源声明无效或未登记,本次已忽略。": "來源宣告無效或未登記,本次已忽略。", "来源声明未启用,本次已忽略。": "來源宣告未啟用,本次已忽略。", "来源版本": "來源版本", "来源设备:{device}": "來源裝置:{device}", "来自 {device},生成于 {time}": "來自 {device},生成於 {time}", "架构": "架構", "查看、安装和管理所连接网关的插件": "檢視、安裝和管理所連線閘道器的外掛", "查看内置客户端({n})": "檢視內建客戶端({n})", "查询管理员状态失败:{message}": "查詢管理員狀態失敗:{message}", "校验身份:这三段必须各自成块排在最前(实测:三段并成一段会被回 405 / 3012)。因此这里按段编辑,不能合成一段。改过的段以你的文本为准,没改的段继续用官方原文;清空某一段 = 那一段恢复官方原文。": "校驗身份:這三段必須各自成塊排在最前(實測:三段併成一段會被回 405 / 3012)。因此這裡按段編輯,不能合成一段。改過的段以你的文本為準,沒改的段繼續用官方原文;清空某一段 = 那一段恢復官方原文。", "桌面端": "桌面版", "桌面端登录 / 注册验证": "桌面端登入 / 註冊驗證", "桌面端:登录 / 注册需要 ALTCHA 人机验证": "桌面版:登入 / 註冊需要 ALTCHA 人機驗證", "桌面端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "桌面版:登入 / 註冊需要 ALTCHA 人機驗證(當前正在使用)", "桌面运行时不可用,暂时无法保存": "桌面執行時不可用,暫時無法儲存", "档案": "檔案", "检测中…": "檢測中…", "概览": "概覽", "模型不能直接看图时,按你选择的方式处理。原生支持图片的请求直接转发,不增加识图调用。": "模型不能直接看圖時,按你選擇的方式處理。原生支援圖片的請求直接轉發,不增加識圖呼叫。", "模型单独配置": "模型單獨配置", "模型目录没写明是否支持图片时按这里处理。": "模型目錄沒寫明是否支援圖片時依這裡處理。", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。下面两块分别选好「哪些模型」和「用哪只模型」即可;没配到的模型、以及本来就能看图的模型,一律原样放行。这里的改动立即生效,不需要保存。": "模型看不了圖片時只有兩種辦法:讓別的模型替它讀圖,或者把整次請求直接交給能看圖的模型。下面兩塊分別選好「哪些模型」和「用哪隻模型」即可;沒配到的模型、以及本來就能看圖的模型,一律原樣放行。這裡的改動立即生效,不需要儲存。", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。没配到的模型、以及本来就能看图的模型,一律原样放行;每个请求只用其中一种方式,不会两种串着做,处理失败也不会改走另一种。改动立即生效,不需要保存。": "模型看不了圖片時只有兩種辦法:讓別的模型替它讀圖,或者把整次請求直接交給能看圖的模型。沒配到的模型、以及本來就能看圖的模型,一律原樣放行;每個請求只用其中一種方式,不會兩種串著做,處理失敗也不會改走另一種。改動立即生效,不需要儲存。", "模型自己看不了图片时,按下面选好的方式处理;能直接看图的请求原样放行,不会多一次识图调用。": "模型自己看不了圖片時,按下面選好的方式處理;能直接看圖的請求原樣放行,不會多一次識圖呼叫。", "模型请求是否需要验证码由 ZCode 上游配置决定,领取验证与模型请求免验证分别处理。后台只检查配置和库存,不自动运行验证码或弹出拼图;需要验证时,在账号的「套餐明细」中点击「开始验证」。验证令牌一次性使用,短时间内过期,失败或取消后不会自动重试。": "模型請求是否需要驗證碼由 ZCode 上游設定決定,領取驗證與模型請求免驗證分別處理。背景只檢查設定和庫存,不自動執行驗證碼或彈出拼圖;需要驗證時,在帳號的「套餐明細」中點擊「開始驗證」。驗證權杖僅能使用一次,短時間內失效,失敗或取消後不會自動重試。", "模式": "模式", "模式改为「{mode}」": "模式改為「{mode}」", "次": "次", "次日 00:00": "次日 00:00", "正则表达式": "正規表示式", "正在保存上游原始报文:": "正在儲存上游原始報文:", "正在修改…": "正在修改…", "正在剥离出站请求里的审核指纹:表头键值整段删除,模板句最小改写。": "正在剝離出站請求裡的稽核指紋:表頭鍵值整段刪除,模板句最小改寫。", "正在安装…": "正在安裝…", "正在应答跨源请求:浏览器跨域请求可直连 /v1/*。": "正在應答跨源請求:瀏覽器跨域請求可直連 /v1/*。", "正在归一角色:developer 角色消息转发前改写为 system。": "正在歸一角色:developer 角色訊息轉發前改寫為 system。", "正在恢复…": "正在恢復…", "正在恢复整库": "正在恢復整庫", "正在注册…": "正在註冊…", "正在联网更新": "正在聯網更新", "正在读取提供商设置…": "正在讀取供應商設定…", "正式版": "正式版", "每个请求只会用到其中一种方式,不会两种串着做;处理失败也不会改走另一种。配了哪只视觉模型,那次请求的图片就会交给它。": "每個請求只會用到其中一種方式,不會兩種串著做;處理失敗也不會改走另一種。配了哪隻視覺模型,那次請求的圖片就會交給它。", "每条请求轮换到下一个可用账号;新会话交给当前最闲的那位。适合想把手里的号摊开用、不让某一个一直扛。": "每條請求輪換到下一個可用帳號;新會話交給當前最閒的那位。適合想把手裡的號攤開用、不讓某一個一直扛。", "每条请求都重新按策略选路 —— 行为与「关闭」一致,仅保留会话识别的记录。": "每條請求都重新按策略選路 —— 行為與「關閉」一致,僅保留會話識別的記錄。", "每次等待的时长,默认 0 = 跟随上游建议(实测 9~30 秒,上游没给建议时用 15 秒)。可填 0–120 秒强制一个固定时长。": "每次等待的時長,預設 0 = 跟隨上游建議(實測 9~30 秒,上游沒給建議時用 15 秒)。可填 0–120 秒強制一個固定時長。", "每行一个域名,不填协议、端口或路径;与 Cloudflare 中的配置一致,服务端按完整域名匹配。手机 App 使用所连接网关的域名。": "每行一個網域,不填通訊協定、連接埠或路徑;與 Cloudflare 中的設定一致,伺服器按完整網域比對。手機 App 使用所連線閘道的網域。", "毫秒": "毫秒", "沟通方式 / 上下文管理 + Environment 段。": "溝通方式 / 上下文管理 + Environment 段。", "没有可导出的账号": "沒有可匯出的帳號", "没有可用视觉模型时": "沒有可用視覺模型時", "没有已确认支持图片的模型,请先在模型管理中确认。": "沒有已確認支援圖片的模型,請先在模型管理中確認。", "没能读到「{label}」的当前值,改为 {count} 条可能会删除超出的历史数据。": "未能讀取「{label}」的目前值,改為 {count} 筆可能會刪除超出的歷史資料。", "没能读到「{label}」的当前值,改为 {days} 天可能会删除超出的历史数据。": "沒能讀到「{label}」的當前值,改為 {days} 天可能會刪除超出的歷史資料。", "沿用对应方式的视觉模型配置,不额外维护一份模型列表。": "沿用對應方式的視覺模型配置,不額外維護一份模型列表。", "沿用工具服务的视觉分析模型": "沿用工具服務的視覺分析模型", "沿用工具服务的视觉分析模型(未配置)": "沿用工具服務的視覺分析模型(未設定)", "注册并开启": "註冊並開啟", "注册管理员账号": "註冊管理員帳號", "注意:这一家的「网关自带」开关现在是关的,改过的正文要等开关打开才生效。": "注意:這一家的「閘道器自帶」開關現在是關的,改過的正文要等開關開啟才生效。", "流式响应相邻数据之间允许的最大空闲时间(秒),收到新数据后重新计时,默认 300 秒,范围 1~3600。": "流式響應相鄰資料之間允許的最大空閒時間(秒),收到新資料後重新計時,預設 300 秒,範圍 1~3600。", "流式响应空闲超时": "流式響應空閒超時", "测试连接": "測試連線", "浏览器 / PWA": "瀏覽器 / PWA", "浏览器只在 https 或 localhost 下提供离线缓存;局域网 http 访问不影响正常使用": "瀏覽器只在 https 或 localhost 下提供離線快取;區域網路 http 存取不影響正常使用", "浏览器在本地完成计算,不需要第三方密钥,也不依赖外部验证服务。": "瀏覽器在本機完成計算,不需要第三方金鑰,也不依賴外部驗證服務。", "浏览器标签页": "瀏覽器標籤頁", "浏览器面板": "瀏覽器面板", "消息角色": "訊息角色", "添加备选模型": "新增備選模型", "添加提供商": "新增提供商", "添加提供商…": "新增提供商…", "添加模型单独配置": "新增模型單獨配置", "添加自定义头": "新增自定義頭", "添加要单独配置的提供商": "新增要單獨配置的提供商", "添加配置": "新增配置", "清空(用内置默认值)": "清空(用內建預設值)", "清除本机凭证": "清除本機憑證", "清除这里的正文": "清除這裡的正文", "源代码": "原始碼", "点下面的入口会用系统默认浏览器打开 GitHub 的对应表单(需要 GitHub 账号,模板已预设好,填完直接提交即可)。": "點下面的入口會用系統預設瀏覽器開啟 GitHub 的對應表單(需要 GitHub 帳號,模板已預設好,填完直接提交即可)。", "点击重命名": "點擊重新命名", "点此添加或切换服务器": "點此新增或切換伺服器", "点此添加服务器": "點此新增伺服器", "版本": "版本", "版本信息": "版本資訊", "版本信息 · 所连网关环境": "版本資訊 · 所連閘道器環境", "版权声明": "版權聲明", "状态码 {code} 已在名单里": "狀態碼 {code} 已在名單裡", "状态码必须是 {min}–{max} 的整数(收到: {text})": "狀態碼必須是 {min}–{max} 的整數(收到: {text})", "环境": "環境", "环境变量 ZCODE_APP_VERSION={value} 正在生效,上面填的值暂不生效": "環境變數 ZCODE_APP_VERSION={value} 正在生效,上面填的值暫不生效", "现在会这样处理:": "現在會這樣處理:", "生成时间:{time}": "生成時間:{time}", "生效顺序:有效的来源声明优先,然后按顺序匹配自定义规则,最后使用内置规则。中转丢失原始标识时,无法自动推断背后的软件。": "生效順序:有效的來源宣告優先,然後按順序匹配自定義規則,最後使用內建規則。中轉丟失原始標識時,無法自動推斷背後的軟體。", "用 models.dev 补齐上游没声明的模型能力与思考档位(联网刷新,内嵌快照始终生效)": "用 models.dev 補齊上游沒宣告的模型能力與思考檔位(聯網重新整理,內嵌快照始終生效)", "用于加密上云的账号密钥。请自己记牢 —— 它不保存到云端,换机下载时必须输入同一个密码,否则账号数据无法解密。": "用於加密上雲的帳號金鑰。請自己記牢 —— 它不儲存到雲端,換機下載時必須輸入同一個密碼,否則帳號資料無法解密。", "用哪只模型识图": "用哪隻模型識圖", "用浏览器菜单里的「添加到主屏幕」把这一页装成 App:全屏打开、没有地址栏,和原生应用一样。": "用瀏覽器選單裡的「新增到主螢幕」把這一頁裝成 App:全屏開啟、沒有位址列,和原生應用一樣。", "由 Cloudflare 提供验证,需要浏览器与网关均能连接 Cloudflare。验证失败或服务不可用时不会自动放行。": "由 Cloudflare 提供驗證,需要瀏覽器與閘道均能連線至 Cloudflare。驗證失敗或服務無法使用時不會自動放行。", "由 {source} 覆盖,手动设置暂不生效": "由 {source} 覆寫,手動設定暫不生效", "界面缩放": "介面縮放", "界面缩放比例": "介面縮放比例", "界面语言": "介面語言", "界面语言。可选简体中文、繁體中文、English、日本語、한국어、Português (Brasil),或「跟随系统」(按浏览器 / 系统的语言列表自动选)。切换后整页立即刷新;该偏好只存在本机(localStorage),不影响账号、密钥与转发。": "介面語言。可選簡體中文、繁體中文、English、日本語、한국어、Português (Brasil),或「跟隨系統」(按瀏覽器 / 系統的語言列表自動選)。切換後整頁立即重新整理;該偏好只存在本機(localStorage),不影響帳號、金鑰與轉發。", "界面语言只保存在本机(localStorage)。切换后整页立即刷新,不影响账号、密钥与转发。": "介面語言只儲存在本機(localStorage)。切換後整頁立即重新整理,不影響帳號、金鑰與轉發。", "界面里编辑的正文": "介面裡編輯的正文", "留空 = 用内置默认提示词": "留空 = 用內建預設提示詞", "留空 = 用插件内置的默认版本号(每期活动由插件跟随官方更新)。只有遇到「官方客户端里能看到活动、这里探测为空」时才需要填:那种情况几乎都是上游抬高了版本门槛,而版本落后的表现是一份空列表而不是报错。按官方客户端当前版本填(形如 3.16.2),保存后回到套餐明细刷新一次即刻生效。环境变量 ZCODE_APP_VERSION 若已设置,优先级高于这里。": "留空 = 用外掛內建的預設版本號(每期活動由外掛跟隨官方更新)。只有遇到「官方客戶端裡能看到活動、這裡探測為空」時才需要填:那種情況幾乎都是上游抬高了版本門檻,而版本落後的表現是一份空列表而不是報錯。按官方客戶端當前版本填(形如 3.16.2),儲存後回到套餐明細重新整理一次即刻生效。環境變數 ZCODE_APP_VERSION 若已設定,優先順序高於這裡。", "留空使用 AWS 官方地址": "留空使用 AWS 官方地址", "留空使用默认": "留空使用預設", "留空表示删除匹配内容;替换内容按原文写入,$ 不作为捕获组引用。": "留空表示刪除匹配內容;替換內容按原文寫入,$ 不作為捕獲組引用。", "登录 / 注册需要通过 ALTCHA 人机验证(工作量证明)": "登入 / 註冊需要通過 ALTCHA 人機驗證(工作量證明)", "登录 / 账号切换 / 429 切换等系统事件,可填 1–3650 天。": "登入 / 帳號切換 / 429 切換等系統事件,可填 1–3650 天。", "登录 / 账号切换 / 429 切换等系统事件,可填 1–99999 天。": "登入 / 帳號切換 / 429 切換等系統事件,可填 1–99999 天。", "登录 Agent2API": "登入 Agent2API", "登录 {name}": "登入 {name}", "登录人机验证": "登入人機驗證", "百分比类读数(如 OpenCode Go、Antigravity)不能相加,组头显示的是组内最低剩余比例。": "百分比類讀數(如 OpenCode Go、Antigravity)不能相加,組頭顯示的是組內最低剩餘比例。", "监听地址": "監聽地址", "目前展示仓库已登记的图标来源许可,不代表完整的第三方依赖清单。": "目前顯示儲存庫已登記的圖示來源授權,不代表完整的第三方相依套件清單。", "目标路径:{path}": "目標路徑:{path}", "直接按上面的设置兼容": "直接按上面的設定相容", "直接按当前方式兼容": "直接按當前方式相容", "知道了": "知道了", "确定": "確定", "确定后加入当前草稿,点击「保存设置」才会生效。": "確定後加入當前草稿,點擊「儲存設定」才會生效。", "确定继续?": "確定繼續?", "确认上传": "確認上傳", "确认图片处理授权": "確認圖片處理授權", "确认备份密码": "確認備份密碼", "确认并保存": "確認並儲存", "确认新密码": "確認新密碼", "确认缩减数据保留": "確認縮減資料保留", "确认缩短保留天数": "確認縮短保留天數", "示例请求头": "示例請求頭", "社区与支持": "社群與支援", "离线缓存未启用": "離線快取未啟用", "积分合计只统计当前筛选出来的账号": "積分合計只統計目前篩選出來的帳號", "移入「{name}」": "移入「{name}」", "程序路径": "程式路徑", "空 = 不要这一份,回落提示词文件 / 内置默认提示词。": "空 = 不要這一份,回落提示詞檔案 / 內建預設提示詞。", "空分组 · 点组头的 + 把菜单移进来": "空分組 · 點組頭的 + 把選單移進來", "立即解除": "立即解除", "站点密钥(Site Key)": "網站金鑰(Site Key)", "第一段": "第一段", "第一段(身份句)": "第一段(身份句)", "第三方应用密码": "第三方應用密碼", "第三方开源许可": "第三方開源授權", "第三方模型回答完自动折叠过程": "第三方模型回答完自動摺疊過程", "第三方模型回答完自动折叠过程设置已刷新": "第三方模型回答完自動摺疊過程設定已重新整理", "第三段": "第三段", "第三段(动态段)": "第三段(動態段)", "第二段": "第二段", "第二段(稳定段)": "第二段(穩定段)", "等待上限需在 5–120 秒之间": "等待上限需在 5–120 秒之間", "等待响应超时": "等待響應超時", "等待期间请求日志的状态列会显示「排队中」阶段,详情弹窗的「内部重试」里能逐次看到等待时长;等待用尽后返回 HTTP 503(不是 401/429:既不会刷新凭证,也不会把账号标成限额)。": "等待期間請求日誌的狀態列會顯示「排隊中」階段,詳情彈窗的「內部重試」裡能逐次看到等待時長;等待用盡後返回 HTTP 503(不是 401/429:既不會重新整理憑證,也不會把帳號標成限額)。", "等比放大或缩小整个界面(文字、控件、间距一起变),效果与浏览器按 Ctrl +/- 相同:80%–130%、5% 一档。窗口本身不缩放,变的是页面内容的显示比例,设置立即生效并记住,下次启动直接按这个比例打开。放得越大可视范围越小,窗口较窄或表格较宽时不建议调得太大。": "等比放大或縮小整個介面(文字、控制元件、間距一起變),效果與瀏覽器按 Ctrl +/- 相同:80%–130%、5% 一檔。視窗本身不縮放,變的是頁面內容的顯示比例,設定立即生效並記住,下次啟動直接按這個比例開啟。放得越大可視範圍越小,視窗較窄或表格較寬時不建議調得太大。", "简体中文": "簡體中文", "管理员已注册": "管理員已註冊", "管理员账号": "管理員帳號", "管理插件": "管理外掛", "精确文本": "精確文本", "系统": "系統", "系统提示词模式": "系統提示詞模式", "系统提示词设置已刷新": "系統提示詞設定已重新整理", "累计请求": "累計請求", "繁体中文": "繁體中文", "约 {n} 字符": "約 {n} 字元", "结构": "結構", "给 Codex 的响应补阶段标记,回答完后像官方模型一样把推理与命令过程折叠起来": "給 Codex 的響應補階段標記,回答完後像官方模型一樣把推理與命令過程摺疊起來", "继续并清理": "繼續並清理", "编辑提示词正文 · {label}": "編輯提示詞正文 · {label}", "编辑提示词正文 · 全局": "編輯提示詞正文 · 全域", "编辑正文": "編輯正文", "编辑网关自带提示词 · {label}": "編輯閘道器自帶提示詞 · {label}", "编辑脱敏规则": "編輯脫敏規則", "编辑识别规则": "編輯識別規則", "缩放后重新存成 JPEG 时用的质量。默认 80,可填 40–95;数值越小体积越小、画质越差。": "縮放後重新存成 JPEG 時用的質量。預設 80,可填 40–95;數值越小體積越小、畫質越差。", "缩放比例": "縮放比例", "网关": "閘道器", "网关 Key 数量": "閘道器 Key 數量", "网关尚未就绪": "閘道尚未就緒", "网关状态": "閘道器狀態", "网关自带": "閘道器自帶", "网关跨域访问已开启": "閘道器跨域存取已開啟", "网关跨域访问设置已刷新": "閘道器跨域存取設定已重新整理", "网关跨域访问(CORS)": "閘道器跨域存取(CORS)", "网关面(/v1/*)默认不应答浏览器跨源请求:页面直连会被预检拦下,只报「无法连接 API」。注意来源是 * —— 未配「网关 Key」时任何网页都能借本机网关打上游,故默认关闭;只给自己用的话,让页面与网关同源(本地反代 /v1)更稳妥。面板接口(/api/*)不受影响。": "閘道器面(/v1/*)預設不應答瀏覽器跨源請求:頁面直連會被預檢攔下,只報「無法連線 API」。注意來源是 * —— 未配「閘道器 Key」時任何網頁都能借本機閘道器打上游,故預設關閉;只給自己用的話,讓頁面與網關同源(本地反代 /v1)更穩妥。面板介面(/api/*)不受影響。", "网络访问": "網路存取", "网页端": "網頁端", "网页端登录 / 注册验证": "網頁端登入 / 註冊驗證", "网页端的界面缩放由浏览器自己控制(Ctrl + / Ctrl -,或浏览器菜单里的缩放),此项不可调。": "網頁端的介面縮放由瀏覽器自己控制(Ctrl + / Ctrl -,或瀏覽器選單裡的縮放),此項不可調。", "网页端:登录 / 注册需要 ALTCHA 人机验证": "網頁端:登入 / 註冊需要 ALTCHA 人機驗證", "网页端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "網頁端:登入 / 註冊需要 ALTCHA 人機驗證(當前正在使用)", "网页管理地址": "網頁管理位址", "群晖 NAS": "群暉 NAS", "群晖需在「控制面板 → 应用程序门户 → WebDAV」里启用服务,端口默认 5005(HTTP)/ 5006(HTTPS)。": "群暉需在「控制面板 → 應用程式門戶 → WebDAV」裡啟用服務,連接埠預設 5005(HTTP)/ 5006(HTTPS)。", "脱敏词表": "脫敏詞表", "腾讯云 COS": "騰訊雲 COS", "自动同步": "自動同步", "自动同步上次失败": "自動同步上次失敗", "自动续写": "自動續寫", "自定义 User-Agent": "自定義 User-Agent", "自定义客户端分类": "自定義客戶端分類", "自定义客户端数量已达上限": "自定義客戶端數量已達上限", "自定义提供商 {id}": "自定義提供商 {id}", "自定义网站和应用界面中显示的名称与 Logo。": "自訂網站和應用程式介面中顯示的名稱與 Logo。", "自定义识别规则": "自定義識別規則", "自愈保护": "自愈保護", "至少 12 位": "至少 12 位", "至少 8 位,换机下载时需要": "至少 8 位,換機下載時需要", "至少要保留一个分组": "至少要保留一個分組", "英语": "英語", "范围 5–120 秒,并受原请求时限约束。": "範圍 5–120 秒,並受原請求時限約束。", "范围为 5–120 秒,并受原请求时限约束。图片过大、格式错误或下载失败不会被当作模型不支持图片。": "範圍為 5–120 秒,並受原請求時限約束。圖片過大、格式錯誤或下載失敗不會被當作模型不支援圖片。", "被更高优先级覆盖": "被更高優先順序覆蓋", "被环境变量覆盖": "被環境變數覆蓋", "装上{size}的官方身份提示词": "裝上{size}的官方身份提示詞", "装成 App 后从桌面图标直接进入:全屏打开、没有地址栏。": "裝成 App 後從桌面圖示直接進入:全屏開啟、沒有位址列。", "覆盖": "覆蓋", "规则 / 匹配方式": "規則 / 匹配方式", "规则可以增删改、启停和调整顺序;替换内容留空表示删除匹配内容。恢复默认只重置词表,不改开关和提供商范围。": "規則可以增刪改、啟停和調整順序;替換內容留空表示刪除匹配內容。恢復預設只重置詞表,不改開關和提供商範圍。", "规则名称": "規則名稱", "规则名称不能为空,且最多 {max} 个字符": "規則名稱不能為空,且最多 {max} 個字元", "规则已保存,对后续请求生效;当前历史记录未修改。": "規則已儲存,對後續請求生效;當前歷史記錄未修改。", "规则忽略大小写,只影响新请求的日志与统计,不改变模型选择或权限。": "規則忽略大小寫,隻影響新請求的日誌與統計,不改變模型選擇或許可權。", "规则编号:{id}": "規則編號:{id}", "视觉模型": "視覺模型", "视觉模型先识读图片,再由原模型分析和回答。": "視覺模型先識讀圖片,再由原模型分析和回答。", "视觉模型来源": "視覺模型來源", "视觉模型的思考等级": "視覺模型的思考等級", "视觉模型直接回答": "視覺模型直接回答", "视觉模型识读图片": "視覺模型識讀圖片", "解码后小于这个体积的图片保持原样。默认 512KB,可填 0–10240;填 0 表示所有内嵌图片都过一遍。": "解碼後小於這個體積的圖片保持原樣。預設 512KB,可填 0–10240;填 0 表示所有內嵌圖片都過一遍。", "解除失败:{message}": "解除失敗:{message}", "触发阈值": "觸發閾值", "计数": "計數", "计量单位": "計量單位", "让 Codex 在收到最终答案后收起中间过程。仅为严格识别的 Codex Responses 请求补阶段标记,报表归类和来源声明不影响此判断。正常结束且没有工具调用的非空回答才补 final_answer,工具调用前的说明补 commentary;错误、截断、缺少结束信号或未知结束原因不补最终答案标记。默认关闭,不改变回答文字,也不减少模型思考或用量。": "讓 Codex 在收到最終答案後收起中間過程。僅為嚴格識別的 Codex Responses 請求補階段標記,報表歸類和來源宣告不影響此判斷。正常結束且沒有工具呼叫的非空回答才補 final_answer,工具呼叫前的說明補 commentary;錯誤、截斷、缺少結束訊號或未知結束原因不補最終答案標記。預設關閉,不改變回答文字,也不減少模型思考或用量。", "许可原文": "授權原文", "许可原文已随软件内置,无需联网即可查看;打开项目来源链接需要联网。": "授權原文已隨軟體內建,無需連網即可檢視;開啟專案來源連結需要連網。", "许可核对版本": "授權核對版本", "设置不可隐藏(隐藏了只能清缓存找回来)": "設定不可隱藏(隱藏了只能清快取找回來)", "设置备份密码": "設定備份密碼", "设置识别规则": "設定識別規則", "访问时请使用目标设备能连接到的地址;这里显示的本机地址不代表公网可达。": "存取時請使用目標裝置能連線到的位址;這裡顯示的本機位址不代表可從公網連線。", "识别依据": "識別依據", "识别规则数量已达上限": "識別規則數量已達上限", "识别顺序": "識別順序", "识读会保留图片里的文字、代码、数字、布局与状态;识读失败就停止,不删图后继续回答。": "識讀會保留圖片裡的文字、程式碼、數字、佈局與狀態;識讀失敗就停止,不刪圖後繼續回答。", "识读这张图用哪只模型,第一项是「MCP & Skills」里配好的那只。": "識讀這張圖用哪隻模型,第一項是「MCP & Skills」裡配好的那隻。", "词表为空,不会改写任何指纹。可以新增规则或恢复默认词表。": "詞表為空,不會改寫任何指紋。可以新增規則或恢復預設詞表。", "该提供商暂无可编辑的专属设置": "此供應商暫無可編輯的專屬設定", "详细日志": "詳細日誌", "语言设置": "語言設定", "请先保存设置再同步": "請先儲存設定再同步", "请先在 Cloudflare 创建 Turnstile 组件,建议选择 Managed 模式,并添加面板实际使用的域名。": "請先在 Cloudflare 建立 Turnstile 元件,建議選擇 Managed 模式,並新增面板實際使用的網域。", "请填一个分组名": "請填一個分組名", "请填写管理员账号(64 字符以内)": "請填寫管理員帳號(64 字元以內)", "请求发出后等待上游响应头的最大时间(秒),默认 300 秒,范围 1~3600。": "請求發出後等待上游響應頭的最大時間(秒),預設 300 秒,範圍 1~3600。", "请求已断开,但恢复仍在后台进行 —— 请等待进度弹窗给出结果": "請求已斷開,但恢復仍在後臺進行 —— 請等待進度彈窗給出結果", "请求带有不同软件的标识,未自动归类;可用自定义规则明确归属。": "請求帶有不同軟體的標識,未自動歸類;可用自定義規則明確歸屬。", "请求提供商 / 模型支持": "請求提供商 / 模型支援", "请求日志保留天数": "請求日誌保留天數", "请求日志保留数量上限": "請求日誌保留數量上限", "请求记录": "請求記錄", "请求超时": "請求超時", "请求转发到上游失败时(服务器瞬时错误、连接失败,以及 WorkBuddy 的 11-128 敏感词拦截),网关会等一段间隔后再发一次。次数分两档,管的是两件事:①「同一账号重试次数」在同一账号上原地重发几次 —— 一般是提示词被上游拦截、或链路瞬时抖动,等一会儿重发往往就好了;②「切换账号重试次数」这份请求最多再换几个账号试 —— 首发的那个账号不算,每换一个扣一次,不分是不是同一家(换到同一家的下一个账号也算一次),换满还失败就把错误返回给客户端。两项都设为 0 表示失败不重试、直接报错。注意账号级限额(429)不占这里的换号次数 —— 那类失败走「冷却该账号并换下一个账号」的降级,与这里的重试是两条路。另有「指定错误码直接换号」名单(默认 402):命中名单的上游状态码不在同一账号重发,直接按队列换下一个账号继续试(换号也占「切换账号重试次数」),换满仍失败才把错误返回给客户端。": "請求轉發到上游失敗時(伺服器瞬時錯誤、連線失敗,以及 WorkBuddy 的 11-128 敏感詞攔截),閘道器會等一段間隔後再發一次。次數分兩檔,管的是兩件事:①「同一帳號重試次數」在同一帳號上原地重發幾次 —— 一般是提示詞被上游攔截、或鏈路瞬時抖動,等一會兒重發往往就好了;②「切換帳號重試次數」這份請求最多再換幾個帳號試 —— 首發的那個帳號不算,每換一個扣一次,不分是不是同一家(換到同一家的下一個帳號也算一次),換滿還失敗就把錯誤返回給客戶端。兩項都設為 0 表示失敗不重試、直接報錯。注意帳號級限額(429)不佔這裡的換號次數 —— 那類失敗走「冷卻該帳號並換下一個帳號」的降級,與這裡的重試是兩條路。另有「指定錯誤碼直接換號」名單(預設 402):命中名單的上游狀態碼不在同一帳號重發,直接按佇列換下一個帳號繼續試(換號也佔「切換帳號重試次數」),換滿仍失敗才把錯誤返回給客戶端。", "请求重试": "請求重試", "请至少选择一个提供商": "請至少選擇一個提供商", "请输入同步密码": "請輸入同步密碼", "请输入当前密码": "請輸入當前密碼", "请输入服务端密钥": "請輸入伺服器金鑰", "请选择可用的标识请求头": "請選擇可用的標識請求頭", "请选择归属客户端": "請選擇歸屬客戶端", "读取云同步设置失败:{message}": "讀取雲同步設定失敗:{message}", "读取失败:{message}": "讀取失敗:{message}", "读取完整非流式响应体允许的最大时间(秒),默认 300 秒,范围 1~3600。": "讀取完整非流式響應體允許的最大時間(秒),預設 300 秒,範圍 1~3600。", "读取网关信息失败:{message}": "讀取閘道器資訊失敗:{message}", "读取远端…": "讀取遠端…", "读取远端信息失败:{message}": "讀取遠端資訊失敗:{message}", "调用方声明": "呼叫方宣告", "调试报文": "除錯報文", "调试模式": "除錯模式", "调试模式设置已刷新": "除錯模式設定已重新整理", "负载均衡": "負載均衡", "账号列表": "帳號列表", "账号导入 / 导出": "帳號匯入 / 匯出", "账号路由": "帳號路由", "账号页表格的两项显示偏好,只存在本机(localStorage),不影响账号数据与转发。「积分合计只统计当前筛选出来的账号」:账号页每一家的分组带右侧有一枚「可用合计」,默认按整组求和 —— 不受筛选、搜索影响,被筛掉的账号也计入(余额是资产,禁用也只表示不参与转发,额度仍在账上)。打开这一项后改为只累加当前可见的行:例如筛出 1 个 100 积分的账号,合计就是 100,而不是同组两个账号之和 1,000。分页不参与这个口径 —— 翻页看的是同一份结果的不同屏,合计不随页码变化。「隐藏账号名」与表头「账号」旁边那颗眼睛是同一个开关:打开后账号列的名字整体显示成星号,适合截图分享时遮挡账号。": "帳號頁表格的兩項顯示偏好,只存在本機(localStorage),不影響帳號資料與轉發。「積分合計只統計目前篩選出來的帳號」:帳號頁每一家的分組帶右側有一枚「可用合計」,預設按整組求和 —— 不受篩選、搜尋影響,被篩掉的帳號也計入(餘額是資產,停用也只表示不參與轉發,額度仍在帳上)。開啟這一項後改為只累加目前可見的列:例如篩出 1 個 100 積分的帳號,合計就是 100,而不是同組兩個帳號之和 1,000。分頁不參與這個口徑 —— 翻頁看的是同一份結果的不同螢幕,合計不隨頁碼變化。「隱藏帳號名」與表頭「帳號」旁邊那顆眼睛是同一個開關:開啟後帳號欄的名字整體顯示成星號,適合截圖分享時遮蔽帳號。", "账户": "帳戶", "超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件。把天数改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。可填范围为 1–3650 天。请求日志 / 按天聚合 / 签到记录已全量保留、不再自动删除,要清历史请到对应页面手动清空。": "超出保留天數的部分會被刪除:事件日誌是登入、帳號切換、429 切換這類系統事件。把天數改小(例如 30 天改成 7 天)儲存後會立即刪除超出的歷史資料,此操作不可恢復;改大或保持不變不會刪除任何資料。可填範圍為 1–3650 天。請求日誌 / 按天聚合 / 簽到記錄已全量保留、不再自動刪除,要清歷史請到對應頁面手動清空。", "超出的历史数据会被立即删除,且不可恢复。": "超出的歷史資料會被立即刪除,且不可恢復。", "超时": "超時", "超时设置已刷新": "超時設定已重新整理", "跟随模型配置": "跟隨模型配置", "跟随系统 · 浅色 · 深色": "跟隨系統 · 淺色 · 深色", "跟随默认": "跟隨預設", "跨域访问": "跨域存取", "路由": "路由", "路由组只使用组内成员;普通路由只使用参与范围内的账号和模型。": "路由組只使用組內成員;普通路由只使用參與範圍內的帳號和模型。", "路由设置已刷新": "路由設定已重新整理", "跳过 {n} 个": "跳過 {n} 個", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;负载均衡是每条请求换下一位,把负载摊到各个账号上。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护默认生效,不需要配置:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时),被 429 的账号垫底排到队尾一圈,余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 恢复后自动回到队列。": "轉發一個請求時按什麼順序挑帳號:①「路由策略」決定排隊規則 —— 順序優先是排第 1 的接走所有請求、直到它不能答(限流 / 故障 / 額度盡)才輪到下一位;負載均衡是每條請求換下一位,把負載攤到各個帳號上。②「會話粘性」讓同一會話(相同的模型 + 相同的開頭訊息)儘量跟住同一個帳號 —— 多輪對話的上下文快取能複用、少換號少浪費;自動檔粘 5 分鐘、會話內檔粘 6 小時、每輪與關閉都不粘。帳號的排隊位次(帳號表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由還有三層自愈保護預設生效,不需要配置:轉發失敗的帳號退避休息一會兒(15 分鐘起步翻倍、封頂 1 小時),被 429 的帳號墊底排到隊尾一圈,餘額不足 / Token 週期用量到頂的帳號由限制器攔下 —— 恢復後自動回到佇列。", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;负载均衡是每条请求换下一位,把负载摊到各个账号上。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时)、被 429 的账号垫底排到队尾 30 分钟、余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 前两层可以在下面按需开关,限制器由账号的「限制器」设置管。": "轉發一個請求時按什麼順序挑帳號:①「路由策略」決定排隊規則 —— 順序優先是排第 1 的接走所有請求、直到它不能答(限流 / 故障 / 額度盡)才輪到下一位;負載均衡是每條請求換下一位,把負載攤到各個帳號上。②「會話粘性」讓同一會話(相同的模型 + 相同的開頭訊息)儘量跟住同一個帳號 —— 多輪對話的上下文快取能複用、少換號少浪費;自動檔粘 5 分鐘、會話內檔粘 6 小時、每輪與關閉都不粘。帳號的排隊位次(帳號表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由還有三層自愈保護:轉發失敗的帳號退避休息一會兒(15 分鐘起步翻倍、封頂 1 小時)、被 429 的帳號墊底排到隊尾 30 分鐘、餘額不足 / Token 週期用量到頂的帳號由限制器攔下 —— 前兩層可以在下面按需開關,限制器由帳號的「限制器」設定管。", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;轮流均摊是每条请求换下一位,雨露均沾;余额优先是用量占比最低的先用,「谁空谁上」。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护默认生效,不需要配置:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时),被 429 的账号垫底排到队尾一圈,余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 恢复后自动回到队列。": "轉發一個請求時按什麼順序挑帳號:①「路由策略」決定排隊規則 —— 順序優先是排第 1 的接走所有請求、直到它不能答(限流 / 故障 / 額度盡)才輪到下一位;輪流均攤是每條請求換下一位,雨露均霑;餘額優先是用量佔比最低的先用,「誰空誰上」。②「會話粘性」讓同一會話(相同的模型 + 相同的開頭訊息)儘量跟住同一個帳號 —— 多輪對話的上下文快取能複用、少換號少浪費;自動檔粘 5 分鐘、會話內檔粘 6 小時、每輪與關閉都不粘。帳號的排隊位次(帳號表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由還有三層自愈保護預設生效,不需要配置:轉發失敗的帳號退避休息一會兒(15 分鐘起步翻倍、封頂 1 小時),被 429 的帳號墊底排到隊尾一圈,餘額不足 / Token 週期用量到頂的帳號由限制器攔下 —— 恢復後自動回到佇列。", "转发前压缩对话里内嵌的大图(只改发给上游的副本,生图与图片编辑不受影响)": "轉發前壓縮對話裡內嵌的大圖(只改發給上游的副本,生圖與圖片編輯不受影響)", "转发前将 developer 角色消息转换为 system,兼容不支持 developer 角色的 OpenAI 兼容上游": "轉發前將 developer 角色訊息轉換為 system,相容不支援 developer 角色的 OpenAI 相容上游", "转发失败的账号休息一会儿再回来:15 分钟起步,连续失败翻倍,封顶 1 小时;成功一次立即恢复。目的是「让这次失败先凉一会儿」,免得一条条地反复撞同一个坏账号。": "轉發失敗的帳號休息一會兒再回來:15 分鐘起步,連續失敗翻倍,封頂 1 小時;成功一次立即恢復。目的是「讓這次失敗先涼一會兒」,免得一條條地反覆撞同一個壞帳號。", "转发链路": "轉發鏈路", "转发链路 · 诊断 · 系统": "轉發鏈路 · 診斷 · 系統", "轮询间隔": "輪詢間隔", "软件标识超过 1 KB,已截断保存;匹配仅使用保留部分。": "軟體標識超過 1 KB,已截斷儲存;匹配僅使用保留部分。", "软件版本": "軟體版本", "轻量模式": "輕量模式", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 套餐池(Start Plan)通道不可用,相关请求会在请求日志里注明原因": "輕量模式已開啟:關窗即銷燬介面程序(釋放約 200MB 記憶體),閘道器在後臺繼續;介面銷燬期間 ZCode 套餐池(Start Plan)通道不可用,相關請求會在請求日誌裡註明原因", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 活动套餐通道不可用,相关请求会在请求日志里注明原因": "輕量模式已開啟:關窗即銷燬介面程序(釋放約 200MB 記憶體),閘道器在後臺繼續;介面銷燬期間 ZCode 活動套餐通道不可用,相關請求會在請求日誌裡註明原因", "轻量模式(关窗释放界面内存)": "輕量模式(關窗釋放介面記憶體)", "辅助识图": "輔助識圖", "辅助识图 · 原模型回答": "輔助識圖 · 原模型回答", "辅助识图保留原模型回答;切换视觉模型会让视觉模型直接回答。本次授权也包含已设置的模型单独配置。": "輔助識圖保留原模型回答;切換視覺模型會讓視覺模型直接回答。本次授權也包含已設定的模型單獨配置。", "辅助识图或切换视觉模型,默认关闭": "輔助識圖或切換視覺模型,預設關閉", "辅助识图配置": "輔助識圖配置", "输入同步密码": "輸入同步密碼", "输入当前登录用的密码": "輸入目前登入用的密碼", "输入状态码,回车添加": "輸入狀態碼,回車新增", "运行形态": "執行形態", "近期没有命中样本,不代表未来请求不会命中。": "近期沒有命中樣本,不代表未來請求不會命中。", "还原": "還原", "还有额度时被 429 的账号排到队尾,30 分钟后自动回到队列(成功转发一次也会立即回来)。它标记的是「疑似共享池被别人抢」,不是「这个账号本身有问题」。⚠️ 注意它与路由策略的配合:在「家内轮询」下,队尾意味着这一家整体被往后排 —— 如果某个提供商的账号被批量限流,它们会集体沉到队尾,那个家可能长时间轮不到。这时可以关掉本项,让 429 过的账号只受冷却约束(冷却到点自动回来)。": "還有額度時被 429 的帳號排到隊尾,30 分鐘後自動回到佇列(成功轉發一次也會立即回來)。它標記的是「疑似共享池被別人搶」,不是「這個帳號本身有問題」。⚠️ 注意它與路由策略的配合:在「家內輪詢」下,隊尾意味著這一家整體被往後排 —— 如果某個提供商的帳號被批次限流,它們會集體沉到隊尾,那個家可能長時間輪不到。這時可以關掉本項,讓 429 過的帳號只受冷卻約束(冷卻到點自動回來)。", "还没有可用的视觉模型。": "還沒有可用的視覺模型。", "还没有可用的视觉模型。可以在「MCP & Skills」里配好那只视觉分析模型,或把上面的「视觉模型」换成某一只具体模型。": "還沒有可用的視覺模型。可以在「MCP & Skills」裡配好那隻視覺分析模型,或把上面的「視覺模型」換成某一隻具體模型。", "还没有同步过。": "還沒有同步過。", "还没有备选模型": "還沒有備選模型", "还没有添加服务器。点右上角「添加」,填入网关所在机器的 IP 或域名与端口。": "還沒有新增伺服器。點右上角「新增」,填入閘道器所在機器的 IP 或域名與連接埠。", "还没有装载任何数据。": "還沒有裝載任何資料。", "还没有读到版本信息": "還沒有讀到版本資訊", "还没有选择模型,这块设置暂时不起作用。": "還沒有選擇模型,這塊設定暫時不起作用。", "这一份就是「替换 / 追加」模式下网关要发的 system 正文。": "這一份就是「替換 / 追加」模式下閘道器要發的 system 正文。", "这一项已隐藏": "這一項已隱藏", "这一项正在显示": "這一項正在顯示", "这些名称可以直接写进来源声明,不能编辑。": "這些名稱可以直接寫進來源宣告,不能編輯。", "这些模型的请求交给当前路由内可用的视觉模型回答,不再回到原模型。": "這些模型的請求交給目前路由內可用的視覺模型回答,不再回到原模型。", "这些模型看到图片时,先把图片交给 {model} 读一遍,再由它们自己结合读到的内容回答。": "這些模型看到圖片時,先把圖片交給 {model} 讀一遍,再由它們自己結合讀到的內容回答。", "这些模型看到图片时,先把图片交给「沿用工具服务的视觉分析模型」读一遍,再由它们自己结合读到的内容回答。": "這些模型看到圖片時,先把圖片交給「沿用工具服務的視覺分析模型」讀一遍,再由它們自己結合讀到的內容回答。", "这只模型只负责看图,最终仍由原模型回答。": "這隻模型只負責看圖,最終仍由原模型回答。", "这只模型已经在备选里了。": "這隻模型已經在備選裡了。", "这只模型直接接收图片与对话,完成本次回答。": "這隻模型直接接收圖片與對話,完成本次回答。", "这台网关未启用机器人校验": "這臺網關未啟用機器人校驗", "这台网关没有管理员,用一把已启用的 API Key 访问。": "這臺網關沒有管理員,用一把已啟用的 API Key 存取。", "这条历史请求没有保存识别依据,不能据此自动创建规则。": "這條歷史請求沒有儲存識別依據,不能據此自動建立規則。", "这条规则已被删除,请关闭编辑后重新添加。": "這條規則已被刪除,請關閉編輯後重新新增。", "这条配置将对 {model} 生效。": "這條配置將對 {model} 生效。", "这次请求由视觉模型直接回答,不回原模型;{fallback}": "這次請求由視覺模型直接回答,不回原模型;{fallback}", "这里只列出已保存的提供商配置;未配置的提供商沿用全局设置,可从下拉框手动添加。用户保存的模式、文件和正文优先于全局设置,「跟随默认」只取消该提供商的模式、文件和正文覆盖。ZCode 套餐池默认由插件按三块装配,客户端系统正文合入第三块,不会自动创建替换规则;手动修改的网关提示词段或关闭开关仍以用户配置为准,能否被接受取决于上游规则。": "這裡只列出已儲存的提供者設定;未設定的提供者沿用全域設定,可從下拉選單手動新增。使用者儲存的模式、檔案與本文優先於全域設定,「跟隨預設」只取消該提供者的模式、檔案與本文覆寫。ZCode 套餐池預設由外掛按三塊組裝,客戶端系統本文合入第三塊,不會自動建立替換規則;手動修改的閘道提示詞段或關閉開關仍以使用者設定為準,能否被接受取決於上游規則。", "进程 PID": "程序 PID", "远程根目录": "遠端根目錄", "远端同一路径下的旧快照。事件日志、请求明细与调试报文不会上传。": "遠端同一路徑下的舊快照。事件日誌、請求明細與除錯報文不會上傳。", "远端已有一份快照,将被覆盖": "遠端已有一份快照,將被覆蓋", "远端快照使用了另一把账号密钥,但没有携带密钥文件,无法在本机解密。请在原来那台机器上重新上传一次。": "遠端快照使用了另一把帳號金鑰,但沒有攜帶金鑰檔案,無法在本機解密。請在原來那臺機器上重新上傳一次。", "远端快照使用的账号密钥与本机不同。请输入上传那台机器设置的同步密码,用它解出密钥装到本机后再继续下载。": "遠端快照使用的帳號金鑰與本機不同。請輸入上傳那臺機器設定的同步密碼,用它解出金鑰裝到本機後再繼續下載。", "远端数据与当前版本不兼容": "遠端資料與當前版本不相容", "远端该路径下还没有快照,本次是首次上传。": "遠端該路徑下還沒有快照,本次是首次上傳。", "远端路径:{path}": "遠端路徑:{path}", "远端还没有可下载的同步数据": "遠端還沒有可下載的同步資料", "连不上这台网关。确认地址与端口正确、网关已启动,且已开启「局域网访问」;用 https 时还要确认证书有效": "連不上這臺網關。確認地址與連接埠正確、閘道器已啟動,且已開啟「區域網路存取」;用 https 時還要確認證書有效", "连不上这台网关。请确认地址、端口与防火墙设置,网关需已启动;桌面端请在「设置 → 网关 → 网络访问」开启「允许其他设备访问网关」。使用 HTTPS 时还需确认证书有效。": "無法連線到這台閘道。請確認位址、連接埠與防火牆設定,閘道需已啟動;桌面端請在「設定 → 閘道 → 網路存取」開啟「允許其他裝置存取閘道」。使用 HTTPS 時還需確認憑證有效。", "连接中超时": "連線中超時", "连接失败:{message}": "連線失敗:{message}", "连续失败到阈值后把这个账号整个打开(默认关)。与失败退避的分工:退避管「单次失败先凉一会儿」,惩罚轻、自动恢复;熔断管「这个账号现在整体不对劲,别再一条条地试」,要连续成功若干次才关。打开期间该账号被跳过,除非全场只剩它 —— 那时仍放行试一次。": "連續失敗到閾值後把這個帳號整個開啟(預設關)。與失敗退避的分工:退避管「單次失敗先涼一會兒」,懲罰輕、自動恢復;熔斷管「這個帳號現在整體不對勁,別再一條條地試」,要連續成功若干次才關。開啟期間該帳號被跳過,除非全場只剩它 —— 那時仍放行試一次。", "追加": "追加", "追加网关提示词": "追加閘道器提示詞", "退出失败:{message}": "退出失敗:{message}", "退出登录": "退出登入", "退出这台服务器的登录,不影响其他服务器": "退出這臺伺服器的登入,不影響其他伺服器", "选好接管回答的视觉模型后这块设置才会生效。": "選好接管回答的視覺模型後這塊設定才會生效。", "选好模型后这条配置才会生效。": "選好模型後這條配置才會生效。", "选好视觉模型后这块设置才会生效。": "選好視覺模型後這塊設定才會生效。", "选定提供商": "選定供應商", "选择一个或多个模型": "選擇一個或多個模型", "选择位置并加密备份": "選擇位置並加密備份", "选择备份文件并恢复": "選擇備份檔案並恢復", "选择提供商(可多选)": "選擇提供商(可多選)", "选路规则": "選路規則", "选项与默认值由已启用插件提供;你保存的覆盖值不会被插件更新替换。": "選項與預設值由已啟用外掛提供;你儲存的覆寫值不會被外掛更新取代。", "选项与默认值由插件提供,你保存的修改不会被插件更新覆盖。切换提供商不会丢失未保存的修改。": "選項與預設值由外掛提供,你儲存的修改不會被外掛更新覆寫。切換供應商不會遺失尚未儲存的修改。", "透传": "透傳", "透传 = 不动客户端 system;替换 = 删掉客户端的 system / developer,换成网关提示词;追加 = 保留客户端内容,在最前面多插一条。": "透傳 = 不動客戶端 system;替換 = 刪掉客戶端的 system / developer,換成閘道器提示詞;追加 = 保留客戶端內容,在最前面多插一條。", "透传客户端 system": "透傳客戶端 system", "透传客户端 system(默认)": "透傳客戶端 system(預設)", "通常是网络问题,点右侧重试": "通常是網路問題,點右側重試", "通用": "通用", "遇到 Bug、报错或异常行为": "遇到 Bug、報錯或異常行為", "配置目录下的 agent2api.db(账号、日志、请求记录、调试报文与设置都在里面)。": "配置目錄下的 agent2api.db(帳號、日誌、請求記錄、除錯報文與設定都在裡面)。", "采用本规则": "採用本規則", "重启后生效,不影响当前操作": "重啟後生效,不影響當前操作", "重命名": "重新命名", "重命名只更新分类显示名,不拆分历史用量,也不重新归类历史请求。": "重新命名只更新分類顯示名,不拆分歷史用量,也不重新歸類歷史請求。", "重命名客户端分类": "重新命名客戶端分類", "重复清理": "重複清理", "重复清理直到不再变化(仅正则删除)": "重複清理直到不再變化(僅正則刪除)", "重新读取会替换当前未保存的草稿。": "重新讀取會替換當前未儲存的草稿。", "重新读取设置": "重新讀取設定", "重编码质量": "重編碼質量", "重置会清空管理员账号与密码,面板将回到「未注册」状态。": "重置會清空管理員帳號與密碼,面板將回到「未註冊」狀態。", "重置管理员": "重置管理員", "重试设置已刷新": "重試設定已重新整理", "重试间隔": "重試間隔", "铸造守卫每隔多久看一次库存(毫秒)。只影响发现缺货的反应速度 —— 库存够用时轮询不会铸造任何令牌。默认 2500 毫秒,可填 1000–30000。": "鑄造守衛每隔多久看一次庫存(毫秒)。隻影響發現缺貨的反應速度 —— 庫存夠用時輪詢不會鑄造任何權杖。預設 2500 毫秒,可填 1000–30000。", "长边像素上限": "長邊畫素上限", "问题反馈": "問題反饋", "阿里云 OSS": "阿里雲 OSS", "限流中账号": "限流中帳號", "随包内嵌的快照(发版时的那份)": "隨包內嵌的快照(發版時的那份)", "随软件更新": "隨軟體更新", "隐藏 {name}": "隱藏 {name}", "隐藏分组 {name}": "隱藏分組 {name}", "隐藏用户名": "隱藏使用者名稱", "隐藏账号名(显示成星号)": "隱藏帳號名(顯示成星號)", "隐藏这一组": "隱藏這一組", "非流式响应超时": "非流式響應超時", "面板登录": "面板登入", "面板端口": "面板連接埠", "面板管理员账号": "面板管理員帳號", "韩语": "韓語", "项目来源": "專案來源", "预览不发送模型请求,也不修改历史记录。": "預覽不傳送模型請求,也不修改歷史記錄。", "预览中…": "預覽中…", "预览匹配": "預覽匹配", "预设": "預設", "首选不可用时再依次尝试备选。": "首選不可用時再依次嘗試備選。", "首选不可用时再依次尝试;留空则停止并说明原因。": "首選不可用時再依次嘗試;留空則停止並說明原因。", "验证方式": "驗證方式", "验证码令牌池": "驗證碼權杖池", "验证码令牌池设置已刷新": "驗證碼權杖池設定已重新整理", "验证码库存的参考目标,默认 3 个,可填 1–10。只影响库存状态展示,不会因为低于目标自动生成令牌或弹出验证码。": "驗證碼庫存的參考目標,預設 3 個,可填 1–10。只影響庫存狀態顯示,不會因為低於目標自動產生權杖或彈出驗證碼。", "高级设置": "進階設定", "默认 10000 条,按日志级别分配保留容量,超出后清理最旧的记录;同时受保留天数限制。": "預設 10000 筆,按日誌層級分配保留容量,超出後清理最舊的記錄;同時受保留天數限制。", "默认 1000000 条(100 万),超出后清理最旧的请求记录及其原始正文,不影响按天聚合报表;同时受保留天数限制。": "預設 1000000 筆(100 萬),超出後清理最舊的請求記錄及其原始本文,不影響每日彙總報表;同時受保留天數限制。", "默认 5 分钟。间隔内的变化合并为最新快照,到期后上传;手动上传不受限制。失败后会延长等待并自动重试。": "預設 5 分鐘。間隔內的變更合併為最新快照,到期後上傳;手動上傳不受限制。失敗後會延長等待並自動重試。", "默认仅本机可访问(127.0.0.1)。开启后监听所有 IPv4 网卡(0.0.0.0),访问范围由网络与防火墙决定,不限于局域网,也不会自动开放到公网。开启前必须注册面板管理员;管理接口需要管理员会话或网关 Key,API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。「同时开放网页管理面板」默认关闭,开启后可从其他设备的浏览器登录管理;关闭它不影响 API 转发和本机桌面管理。修改任一开关都需要重启应用。": "預設僅本機可存取(127.0.0.1)。開啟後監聽所有 IPv4 網路介面卡(0.0.0.0),存取範圍由網路與防火牆決定,不限於區域網路,也不會自動開放到公網。開啟前必須註冊面板管理員;管理介面需要管理員工作階段或閘道 Key,API 呼叫需要已啟用的閘道 Key,沒有時會自動建立一把「預設」Key。「同時開放網頁管理面板」預設關閉,開啟後可從其他裝置的瀏覽器登入管理;關閉它不影響 API 轉發和本機桌面管理。修改任一開關都需要重新啟動應用程式。", "默认值通常够用,出问题时才需要调": "預設值通常夠用,出問題時才需要調", "默认关闭。开启后下一次 Codex 请求立即生效,不用重启;只对 Codex 来源的 /v1/responses 请求补阶段标记,其它客户端与 /v1/chat/completions 不受影响。": "預設關閉。開啟後下一次 Codex 請求立即生效,不用重啟;只對 Codex 來源的 /v1/responses 請求補階段標記,其它客戶端與 /v1/chat/completions 不受影響。", "默认关闭。改动立即生效,不用重启;关闭期间的跨源请求会被预检拦下。": "預設關閉。改動立即生效,不用重啟;關閉期間的跨源請求會被預檢攔下。", "默认关闭窗口不会退出程序,而是把窗口缩到系统托盘,转发继续在后台运行(OpenAI 客户端不受影响);要彻底退出程序,请在托盘图标上右键选「退出」。关掉这个开关后,点关闭按钮即退出程序、转发随之中断。「开机自动启动」开启后,登录系统时会自动启动本程序(通常直接驻留托盘),不需要手动打开。": "預設關閉視窗不會退出程式,而是把視窗縮到系統托盤,轉發繼續在後臺執行(OpenAI 客戶端不受影響);要徹底退出程式,請在托盤圖示上右鍵選「退出」。關掉這個開關後,點關閉按鈕即退出程式、轉發隨之中斷。「開機自動啟動」開啟後,登入系統時會自動啟動本程式(通常直接駐留托盤),不需要手動開啟。", "默认关闭,先配置好再开启;关闭后配置会保留。": "預設關閉,先配置好再開啟;關閉後配置會保留。", "默认应用全部提供商(包含之后新增的插件与自定义提供商)。指定范围后,未选中的提供商不做指纹脱敏;清空选择自动回到全部提供商。": "預設應用全部提供商(包含之後新增的外掛與自定義提供商)。指定範圍後,未選中的提供商不做指紋脫敏;清空選擇自動回到全部提供商。", "默认开启。只改 role 字段本身,消息内容与顺序都不动;本项只改发给上游的副本,客户端看到的响应内容不变。": "預設開啟。只改 role 欄位本身,訊息內容與順序都不動;本項只改發給上游的副本,客戶端看到的響應內容不變。", "默认开启。只改发给上游的副本,客户端看到的响应与原图都不变;请求日志里保存的是客户端发来的原图,不是压缩后的版本。只作用在对话链路,生图 / 图片编辑不经过这里。改完对下一个请求立即生效,不用重启。": "預設開啟。只改發給上游的副本,客戶端看到的響應與原圖都不變;請求日誌裡儲存的是客戶端發來的原圖,不是壓縮後的版本。只作用在對話鏈路,生圖 / 圖片編輯不經過這裡。改完對下一個請求立即生效,不用重啟。", "默认开启。命中明细会记进请求日志的「敏」标签(悬停可看命中了哪几条规则)。本项只改发给上游的副本,客户端看到的响应内容不变。": "預設開啟。命中明細會記進請求日誌的「敏」標籤(懸停可看命中了哪幾條規則)。本項只改發給上游的副本,客戶端看到的響應內容不變。", "默认开启并应用全部提供商。编辑词表或应用范围后点击「保存设置」,下一次请求立即生效,不用重启。命中明细仍记进请求日志的「敏」标签。": "預設開啟並應用全部提供商。編輯詞表或應用範圍後點擊「儲存設定」,下一次請求立即生效,不用重啟。命中明細仍記進請求日誌的「敏」標籤。", "默认网关只监听 127.0.0.1,只有本机能访问。开启后网关改听所有网卡,同一局域网内的设备可以把 API 地址指向本机 IP 一起使用。出于安全考虑,开启前必须先注册一个面板管理员:管理接口从此要求管理员会话或网关 Key,模型额度不会对局域网裸奔;一把启用的网关 Key 都没有时,转发接口也会拒绝服务,直到创建第一把。改动需要重启应用生效。「同时开放网页管理面板」把管理界面也出给局域网(其他设备的浏览器打开本机 IP 即可管理),默认关闭 —— 桌面端的面板仍只由本程序自己出。": "預設閘道器只監聽 127.0.0.1,只有本機能存取。開啟後閘道器改聽所有網路卡,同一區域網路內的裝置可以把 API 地址指向本機 IP 一起使用。出於安全考慮,開啟前必須先註冊一個面板管理員:管理介面從此要求管理員會話或閘道器 Key,模型額度不會對區域網路裸奔;一把啟用的閘道器 Key 都沒有時,轉發介面也會拒絕服務,直到建立第一把。改動需要重啟應用生效。「同時開放網頁管理面板」把管理介面也出給區域網路(其他裝置的瀏覽器開啟本機 IP 即可管理),預設關閉 —— 桌面版的面板仍只由本程式自己出。", "({n} 个整组隐藏)": "({n} 個整組隱藏)", "({n} 行)": "({n} 行)", "({n} 项被覆盖)": "({n} 項被覆蓋)", "(全部为默认值)": "(全部為預設值)", "(官方原文)": "(官方原文)", "(已存一份正文,{n} 行;切成「替换 / 追加」后生效)": "(已存一份正文,{n} 行;切成「替換 / 追加」後生效)", "(已改)": "(已改)", "(已注册过会跳过这一步,直接生效)。": "(已註冊過會跳過這一步,直接生效)。", "(当前生效的就是这一份,{n} 行)": "(當前生效的就是這一份,{n} 行)", "(文件:{path})": "(檔案:{path})", "(未生效)": "(未生效)", ",{items}": ",{items}", ",{time}": ",{time}", ",以及代理池 / 订阅里可能存在的代理凭据。请使用只有你能访问的私有存储;账号密钥由同步密码单独加密,泄露存储本身不等于泄露账号。": ",以及代理池 / 訂閱裡可能存在的代理憑據。請使用只有你能存取的私有儲存;帳號金鑰由同步密碼單獨加密,洩露儲存本身不等於洩露帳號。", ",包括恢复后需要重新登录管理面板。": ",包括恢復後需要重新登入管理面板。", ",可直接用于登录。请妥善保管,不要外传或上传到公共位置。": ",可直接用於登入。請妥善保管,不要外傳或上傳到公共位置。", ",文件里后续的改动在清空这里之前不再生效": ",檔案裡後續的改動在清空這裡之前不再生效", ",替换前的数据已备份为 {name}": ",替換前的資料已備份為 {name}", ",自定义提供商新增 {added} 个、更新 {updated} 个": ",自定義提供商新增 {added} 個、更新 {updated} 個", ";开关关闭时词表不执行": ";開關關閉時詞表不執行", ";网页管理面板已一并开放(浏览器打开同一地址)": ";網頁管理面板已一併開放(瀏覽器開啟同一地址)", "AI 调整后的 JSON({n} 字符)": "AI 調整後的 JSON({n} 字元)", "CodeArts 的账号余额还剩多少?": "CodeArts 的帳號餘額還剩多少?", "Enter 发送 · Shift+Enter 换行": "Enter 傳送 · Shift+Enter 換行", "JSON 文件会以文本发送给当前对话模型,其中的凭证也会保存在这条会话里。": "JSON 檔案會以文字傳送給目前對話模型,其中的憑證也會保存在這條會話裡。", "[已省略 {n} 字符的 JSON]": "[已省略 {n} 字元的 JSON]", "attachment 与 content 只能给一个": "attachment 與 content 只能給一個", "section 只能是 models / mappings / both": "section 只能是 models / mappings / both", "{n} / {total}": "{n} / {total}", "{n} 个候选,{m} 个跳过": "{n} 個候選,{m} 個略過", "{n} 个账号正在限流:": "{n} 個帳號正在限流:", "{n} 家": "{n} 家", "{n} 条改动": "{n} 條改動", "{n} 条映射": "{n} 條對應", "{n} 条请求日志": "{n} 筆請求記錄", "{n} 条运行日志": "{n} 筆執行記錄", "{requests} 次请求,{tokens} Token": "{requests} 次請求,{tokens} Token", "✓ 完成": "✓ 完成", "✗ 失败": "✗ 失敗", "「{name}」是空文件。": "「{name}」是空檔案。", "「{name}」看起来是二进制文件,助手只接收 JSON 文本。": "「{name}」看起來是二進位檔案,助手只接收 JSON 文字。", "「{name}」超过 {n} MB,换一张小一点的。": "「{name}」超過 {n} MB,換一張小一點的。", "「{name}」超过 {n} MB,请换一个小一点的 JSON 文件。": "「{name}」超過 {n} MB,請換一個小一點的 JSON 檔案。", "「{name}」超过 {n} MB,请换一个小一点的 JSON 文件,或去添加账号页导入。": "「{name}」超過 {n} MB,請換一個小一點的 JSON 檔案,或去新增帳號頁匯入。", "一次最多 {n} 个文件。": "一次最多 {n} 個檔案。", "一次最多 {n} 个文件,多出的没有添加。": "一次最多 {n} 個檔案,多出的沒有加入。", "一次最多 {n} 张图片。": "一次最多 {n} 張圖片。", "一次最多 {n} 张图片,多出的没有添加。": "一次最多 {n} 張圖片,多出的未新增。", "上面四个快捷查询直接读网关数据,不经过模型": "上面四個快捷查詢直接讀閘道器資料,不經過模型", "下载图片": "下載圖片", "不指定,交给映射绑定": "不指定,交給對映繫結", "今天用了 {tokens} Token,共 {requests} 次请求。": "今天用了 {tokens} Token,共 {requests} 次請求。", "今天用了多少 Token?": "今天用了多少 Token?", "会话响应不完整": "工作階段回應不完整", "会话里的选择优先于这里的默认值": "會話裡的選擇優先於這裡的預設值", "余额是缓存读数,点账号详情里的「刷新凭证」可触发实时查询。": "餘額是快取讀數,點帳號詳情裡的「重新整理憑證」可觸發即時查詢。", "作为 system 消息注入": "作為 system 訊息注入", "保存位置": "儲存位置", "保存图片失败:{message}": "儲存圖片失敗:{message}", "保存思考等級失敗:{message}": "儲存思考等級失敗:{message}", "保存思考等级失败:{message}": "儲存思考等級失敗:{message}", "修改上传或已生成的图片,支持多张参考图。": "修改上傳或已生成的圖片,支援多張參考圖。", "修改文件": "修改檔案", "修改模型能力": "修改模型能力", "共 {n} 个模型条目。": "共 {n} 個模型條目。", "共 {n} 个模型条目。映射与改名请在桌面端「模型管理」里做。": "共 {n} 個模型條目。對映與改名請在桌面版「模型管理」裡做。", "共 {n} 个账号,前 {m} 个的余额读数:": "共 {n} 個帳號,前 {m} 個的餘額讀數:", "内容": "內容", "凭证会保存到网关;同一提供商下同一身份的账号会更新原凭证。文件若是整库导出的 accounts 数组,会按文件里的账号批量导入。": "憑證會保存到閘道;同一提供商下同一身分的帳號會更新原憑證。檔案若是整庫匯出的 accounts 陣列,會按檔案裡的帳號批次匯入。", "分叉": "分叉", "分叉会话失败:{message}": "分叉會話失敗:{message}", "分支": "分支", "删除会话失败:{message}": "刪除工作階段失敗:{message}", "删除消息": "刪除訊息", "删除这条对话": "刪除這段對話", "删除这条对话?": "刪除這條對話?", "删除这条消息?模型消息关联的工具结果也会一并删除。": "刪除這條訊息?模型訊息關聯的工具結果也會一併刪除。", "助手设置": "助手設定", "助手设置没读出来,暂时存不了对话模型 —— 看输入框下方的提示。": "助手設定沒讀出來,暫時存不了對話模型 —— 看輸入框下方的提示。", "助手设置没读出来,暂时存不了对话模型。": "助手設定沒讀出來,暫時存不了對話模型。", "助手设置没读出来,暂时存不了思考等级 —— 看输入框下方的提示。": "助手設定讀不出來,暫時存不了思考等級 —— 看輸入框下方的提示。", "助手设置没读出来,暂时存不了思考等级。": "助手設定沒讀出來,暫時存不了思考等級。", "助手设置没读出来,现在还不能发消息 —— 点右上角「助手设置」看看。": "助手設定沒讀出來,現在還不能發訊息 —— 點右上角「助手設定」看看。", "助手设置没读出来,现在还不能发消息 —— 看输入框下方的提示。": "助手設定沒讀出來,現在還不能發訊息 —— 看輸入框下方的提示。", "勾选即注入": "勾選即注入", "单张参考图不能超过 10 MiB": "單張參考圖不能超過 10 MiB", "历史会话": "工作階段歷史", "历史对话": "歷史對話", "原先在「设置 → AI 助手」的配置都搬到这里了": "原先在「設定 → AI 助手」的配置都搬到這裡了", "原始 ID 的默认绑定不能删除,请关闭它的开关": "原始 ID 的預設綁定不能刪除,請關閉它的開關", "原始报文或对话正文已省略": "原始通訊資料或對話內文已省略", "参数": "引數", "参数 {name} 只能是:{values}": "參數 {name} 只能是:{values}", "参数 {name} 必须是不小于 {min} 的整数": "參數 {name} 必須是不小於 {min} 的整數", "参数 {name} 必须是不超过 {max} 个字符的字符串": "參數 {name} 必須是不超過 {max} 個字元的字串", "参数 {name} 必须是布尔值": "參數 {name} 必須是布林值", "参数 {name} 必须是有效日期(YYYY-MM-DD)": "參數 {name} 必須是有效日期(YYYY-MM-DD)", "参数 {name} 必须是毫秒时间戳": "參數 {name} 必須是毫秒時間戳記", "参数不完整(需要 provider / id / alias / action)": "參數不完整(需要 provider / id / alias / action)", "参考图仅支持 PNG、JPEG、WebP": "參考圖僅支援 PNG、JPEG、WebP", "参考图会交给图片编辑工具,当前对话模型不会读取图片。": "參考圖會交給圖片編輯工具,目前對話模型不會讀取圖片。", "参考图片列表不能为空": "參考圖片清單不能為空", "参考图片编号不存在": "參考圖片編號不存在", "参考图片请使用附件编号、已生成图片 ID 或 HTTP(S) 链接": "參考圖片請使用附件編號、已生成圖片 ID 或 HTTP(S) 連結", "发消息或做任务…(Enter 发送,Shift+Enter 换行,可粘贴图片或 JSON 文件)": "傳訊息或做任務…(Enter 傳送,Shift+Enter 換行,可貼上圖片或 JSON 檔案)", "发消息或做任务…(Enter 发送,Shift+Enter 换行,可粘贴图片)": "發訊息或做任務…(Enter 傳送,Shift+Enter 換行,可貼上圖片)", "发起模型测试": "發起模型測試", "受限": "受限", "变更前确认": "變更前確認", "只支持图片和 JSON 凭证文件(.json / .info)": "只支援圖片和 JSON 憑證檔案(.json / .info)", "只支持图片和 JSON 凭证文件(.json / .info);「{name}」已跳过。": "只支援圖片和 JSON 憑證檔案(.json / .info);「{name}」已略過。", "只支持图片文件(PNG / JPG / WebP / GIF)。": "只支援圖片檔案(PNG / JPG / WebP / GIF)。", "只读 · 不会改动配置": "只讀 · 不會改動配置", "只跳过确认,不扩大工具权限;每次执行仍会记录在对话里。": "只跳過確認,不擴大工具許可權;每次執行仍會記錄在對話裡。", "各账号余额还剩多少?": "各帳號餘額還剩多少?", "启用 / 禁用模型": "啟用 / 停用模型", "启用 / 禁用账号": "啟用 / 停用帳號", "命令": "命令", "哪些模型在多家重复了?": "哪些模型在多家重複了?", "图片 {n}": "圖片 {n}", "图片工具包含不支持的参数:{name}": "圖片工具包含不支援的參數:{name}", "图片工具没有返回可显示的图片": "圖片工具沒有傳回可顯示的圖片", "图片工具缺少当前会话": "圖片工具缺少目前工作階段", "图片工具需要提示词和图片模型": "圖片工具需要提示詞與圖片模型", "完全访问": "完全存取", "完全访问已开启:改动类工具会直接执行,不再弹出确认卡。": "完全存取已開啟:改動類工具會直接執行,不再彈出確認卡。", "完整对话在桌面端「AI 助手」页": "完整對話在桌面版「AI 助手」頁", "实时余额查询会请求上游,并可能触发已配置的自动禁用规则。": "即時餘額查詢會請求上游,並可能觸發已設定的自動停用規則。", "对指定模型发一次真实请求,回报连通性与耗时。": "對指定模型發一次真實請求,回報連通性與耗時。", "对话由网关转发到上游模型,用量计入请求日志": "對話由閘道器轉發到上游模型,用量計入請求日誌", "导入账号文件": "匯入帳號檔案", "将导入一个账号:": "將匯入一個帳號:", "就绪": "就緒", "工具「{name}」未获授权,未执行。": "工具「{name}」未獲授權,未執行。", "工具调用已达本轮上限,已停止继续执行。": "工具呼叫已達本輪上限,已停止繼續執行。", "已从这条消息分叉为新对话": "已從這條訊息分叉為新對話", "已停止": "已停止", "已停止生成": "已停止生成", "已全部勾选": "已全部勾選", "已切换到变更前确认": "已切換到變更前確認", "已切换到完全访问": "已切換到完全存取", "已启用的模型": "已啟用的模型", "已完成 {n} 项改动": "已完成 {n} 項變更", "已完成 {n} 项,剩余 {m} 项未执行": "已完成 {n} 項,其餘 {m} 項未執行", "已导入账号「{name}」": "已匯入帳號「{name}」", "已生成 {n} 张图片": "已生成 {n} 張圖片", "已调用": "已呼叫", "开关模型的对外可用性,不改其它属性。": "開關模型的對外可用性,不改其它屬性。", "开始日期不能晚于结束日期": "開始日期不能晚於結束日期", "开始时间必须早于结束时间": "開始時間必須早於結束時間", "当前一个工具都没勾选,助手只能纯聊天。点右上角「助手设置」勾上需要的工具。": "當前一個工具都沒勾選,助手只能純聊天。點右上角「助手設定」勾上需要的工具。", "当前安装包未包含原生图片保存能力,请更新应用。": "當前安裝包未包含原生圖片儲存能力,請更新應用。", "当前客户端缺少读取接口:{name}": "目前用戶端缺少讀取介面:{name}", "当前对话没有可读取的文本附件:请先把 JSON 文件发给助手": "目前對話沒有可讀取的文字附件:請先把 JSON 檔案傳給助手", "当前模型没有声明图片能力,图可能发不上去。": "當前模型沒有宣告圖片能力,圖可能發不上去。", "当前没有同名模型分布在多家。": "當前沒有同名模型分佈在多家。", "当前:已关闭(助手收不到任何系统提示词,工具定义照发)": "當前:已關閉(助手收不到任何系統提示詞,工具定義照發)", "当前:已开启 · 使用内置默认提示词": "當前:已開啟 · 使用內建預設提示詞", "快捷查询走本地网关,不消耗额度": "快捷查詢走本地閘道器,不消耗額度", "思考等级已切换": "思考等級已切換", "思考过程": "思考過程", "思考:跟随模型": "思考:跟隨模型", "总请求": "總請求", "成功率": "成功率", "我可以直接查网关里的真实数据:余额、模型重复、今日用量、限流账号。": "我可以直接查閘道器裡的真實資料:餘額、模型重複、今日用量、限流帳號。", "打开会话失败:{message}": "開啟工作階段失敗:{message}", "执行中": "執行中", "执行结果": "執行結果", "批量导入:新增 {added}、更新 {updated}、失败 {failed}": "批次匯入:新增 {added}、更新 {updated}、失敗 {failed}", "找到 {n} 组同名模型:": "找到 {n} 組同名模型:", "把凭证文件交给对应提供商解析并落库;同身份账号会更新凭证。": "把憑證檔案交給對應提供商解析並落庫;同身分帳號會更新憑證。", "把重复的模型加上家名前缀区分开": "把重複的模型加上家名字首區分開", "拒绝": "拒絕", "按提供商名称查询模型、能力、来源与映射,支持自定义提供商。": "依提供商名稱查詢模型、能力、來源與對應,支援自訂提供商。", "按提示词生成图片。": "按提示詞生成圖片。", "按提示词编辑参考图片。": "按提示詞編輯參考圖片。", "按文件内容判断": "按檔案內容判斷", "按文本生成图片,结果直接显示在对话中。": "按文字生成圖片,結果直接顯示在對話中。", "推理等级": "推理等級", "提供商 id「{provider}」格式不正确": "提供商 id「{provider}」格式不正確", "提供商「{name}」匹配到多家,请使用提供商 ID:{list}": "提供商「{name}」符合多筆項目,請使用提供商 ID:{list}", "改上下文窗口 / 最大输出 Token / 工具调用等能力位。": "改上下文視窗 / 最大輸出 Token / 工具呼叫等能力位。", "改动先列清单": "改動先列清單", "改动直接执行": "改動直接執行", "改动类 · 默认需要确认": "改動類 · 預設需要確認", "改动类工具先列清单,等你点「执行」": "改動類工具先列清單,等你點「執行」", "改动类工具直接执行,不再询问": "改動類工具直接執行,不再詢問", "改回变更前确认": "改回變更前確認", "改某一家的整组顺位(先试哪一家)。": "改某一家的整組順位(先試哪一家)。", "改账号在全局队列里的名次,决定主备与切换顺序。": "改帳號在全域佇列裡的名次,決定主備與切換順序。", "数量": "數量", "文件内容是空的": "檔案內容是空的", "文件过大({n} 字符):请先用 read_attachment 分段查看,或改用添加账号页导入": "檔案過大({n} 字元):請先用 read_attachment 分段查看,或改用新增帳號頁匯入", "新增 / 删除映射名,支持批量加前缀与同名合并到多家。": "新增 / 刪除對映名,支援批次加字首與同名合併到多家。", "新建会话": "建立工作階段", "新建对话时使用": "新建對話時使用", "无法判断这些凭证属于哪家提供商。请先问用户,或用 provider 指定(常见 id:{list})": "無法判斷這些憑證屬於哪家提供商。請先問使用者,或用 provider 指定(常見 id:{list})", "无法读取图片": "無法讀取圖片", "映射": "對映", "最高": "最高", "有什么可以帮你?可以问配置、查余额、让我改模型设置。": "有什麼可以幫你?可以問配置、查餘額、讓我改模型設定。", "未命名对话": "未命名對話", "未知的工具:{name}": "未知的工具:{name}", "未选择": "未選擇", "权限模式": "權限模式", "极低": "極低", "查看 API Key 详情必须指定 API Key 身份": "檢視 API Key 詳情必須指定 API Key 身份", "查看图片": "查看圖片", "查看模型候选账号、跳过原因和当前路由策略。": "查看模型候選帳號、略過原因和目前路由策略。", "查询凭证、插件和定时任务等运行事件的脱敏摘要。": "查詢憑證、外掛和排程工作等執行事件的去識別化摘要。", "查询生产请求的 Token 用量、成功率、排行和趋势。": "查詢正式請求的 Token 用量、成功率、排行和趨勢。", "查询用量报表": "查詢用量報表", "查询请求日志": "查詢請求記錄", "查询请求状态、耗时、账号、错误与重试,不读取对话正文。": "查詢請求狀態、耗時、帳號、錯誤與重試,不讀取對話內文。", "查询账号": "查詢帳號", "查询账号余额": "查詢帳號餘額", "查询路由队列": "查詢路由佇列", "查询运行日志": "查詢執行記錄", "标题总结失败:{message}": "標題總結失敗:{message}", "标题总结提示词": "標題總結提示詞", "标题总结模型": "標題總結模型", "标题总结设置已保存": "標題總結設定已儲存", "模型「{model}」当前不在可用列表中,请重新选择;也可到「模型管理」或「插件」页检查是否已启用。": "模型「{model}」目前不在可用清單中,請重新選擇;也可到「模型管理」或「外掛」頁檢查是否已啟用。", "模型不支持时会自动忽略": "模型不支援時會自動忽略", "模型名称": "模型名稱", "模型响应未完整结束,请重试;未执行其中的工具调用。": "模型回應未完整結束,請重試;未執行其中的工具呼叫。", "模型对话": "模型對話", "模型没有返回内容": "模型沒有返回內容", "正在思考…": "正在思考…", "正在执行": "正在執行", "正在生成,点右侧按钮可停止": "正在生成,點右側按鈕可停止", "正在读取可用模型…": "正在讀取可用模型…", "正在读取图片…": "正在讀取圖片…", "没有可用的模型": "沒有可用的模型", "没有已启用的模型,请先在「模型管理」里启用": "沒有已啟用的模型,請先在「模型管理」裡啟用", "没有找到提供商「{name}」,请先不填 provider 查询,或用 keyword 搜索": "找不到提供商「{name}」,請先不填 provider 查詢,或用 keyword 搜尋", "没有找到附件「{ref}」:编号从 1 开始,也可以用文件名": "沒有找到附件「{ref}」:編號從 1 開始,也可以用檔案名稱", "没有提供要修改的项目": "未提供要修改的項目", "测一下当前最快的模型通不通": "測一下當前最快的模型通不通", "浏览": "瀏覽", "消息操作": "訊息操作", "深度推理": "深度推理", "添加图片": "新增圖片", "添加图片或 JSON 文件(也可粘贴或拖入)": "新增圖片或 JSON 檔案(也可貼上或拖入)", "添加图片或文件": "新增圖片或檔案", "添加图片(也可粘贴或拖入)": "新增圖片(也可貼上或拖入)", "清空全部": "清空全部", "清空历史失败:{message}": "清空歷史失敗:{message}", "现在有哪些账号被限流?": "現在有哪些帳號被限流?", "现在没有账号被限流。": "現在沒有帳號被限流。", "生成图片": "生成圖片", "生成的图片": "生成的圖片", "用户目录": "使用者目錄", "看看哪些模型在多家重复了": "看看哪些模型在多家重複了", "禁用会把账号移出转发队列,线路可能因此断供。": "停用會把帳號移出轉發佇列,線路可能因此斷供。", "移除图片 {n}": "移除圖片 {n}", "移除文件「{name}」": "移除檔案「{name}」", "终端": "終端", "编辑图片": "編輯圖片", "编辑消息": "編輯訊息", "聊天附件 {ref}": "聊天附件 {ref}", "自定义提供商模块未就绪(请刷新界面后重试)": "自訂提供商模組尚未就緒(請重新整理介面後重試)", "自由对话请用桌面端…": "自由對話請用桌面版…", "获取模型列表": "獲取模型列表", "获取账号列表": "取得帳號清單", "获取账号详情": "取得帳號詳細資料", "要改配置的话,桌面端的助手支持完整对话与工具调用。": "要改配置的話,桌面版的助手支援完整對話與工具呼叫。", "计划": "計畫", "设置模型映射 ID": "設定模型對映 ID", "请先上传参考图片,或先生成一张图片": "請先上傳參考圖片,或先生成一張圖片", "请提供 attachment 或 content": "請提供 attachment 或 content", "读取 {name}": "讀取 {name}", "读取 {name}({from}-{to} 字符)": "讀取 {name}({from}-{to} 字元)", "读取凭证状态、限流、并发、代理和限制器的本地快照。": "讀取憑證狀態、限流、並行連線、代理和限制器的本機快照。", "读取历史会话失败:{message}": "讀取歷史工作階段失敗:{message}", "读取响应不完整:{name}": "讀取回應不完整:{name}", "读取图片失败": "讀取圖片失敗", "读取图片失败:{message}": "讀取圖片失敗:{message}", "读取文件失败:{message}": "讀取檔案失敗:{message}", "读取模型清单": "讀取模型清單", "读取模型清单失败": "讀取模型清單失敗", "读取聊天里上传的 JSON / .info 文件,支持分页。": "讀取聊天裡上傳的 JSON / .info 檔案,支援分頁。", "读取账号、启用状态、优先级与隐藏原因,支持筛选和分页。": "讀取帳號、啟用狀態、優先順序與隱藏原因,支援篩選和分頁。", "读取账号列表": "讀取帳號列表", "读取附件": "讀取附件", "读各提供商的模型清单、映射名与启用状态。": "讀各提供商的模型清單、對映名與啟用狀態。", "读各账号的额度 / 剩余用量。": "讀各帳號的額度 / 剩餘用量。", "调整提供商顺位": "調整提供商順位", "调整账号优先级": "調整帳號優先順序", "账号「{name}」匹配到多条记录,请使用账号 ID:{ids}": "帳號「{name}」符合多筆記錄,請使用帳號 ID:{ids}", "账号额度": "帳號額度", "走本地网关 · 消耗所选账号额度": "走本地閘道器 · 消耗所選帳號額度", "跟随对话模型": "跟隨對話模型", "跟随模型": "跟隨模型", "跟随模型(不指定)": "跟隨模型(不指定)", "跟随网关设置": "跟隨閘道器設定", "返回": "返回", "还没有历史对话": "還沒有歷史對話", "还没有账号。": "還沒有帳號。", "还没有选择对话模型:在输入框右下角选一个,或点右上角「助手设置」。": "還沒有選擇對話模型:在輸入框右下角選一個,或點右上角「助手設定」。", "还没有配置默认模型": "還沒有配置預設模型", "这一版网关还没有 AI 助手接口(HTTP 404),请升级网关后重试。": "這個版本的閘道還沒有 AI 助手介面(HTTP 404),請升級閘道後重試。", "这一版网关还没有 AI 助手接口(HTTP 404):后端还是旧的,重新编译 / 重启客户端后再试。{message}": "這一版閘道器還沒有 AI 助手介面(HTTP 404):後端還是舊的,重新編譯 / 重啟客戶端後再試。{message}", "这一轮来回已达 {n} 次上限,我先停下等你指示(可以换个说法,或拆成几步让我做)。": "這一輪來回已達 {n} 次上限,我先停下等你指示(可以換個說法,或拆成幾步讓我做)。", "这个查询还没有实现。": "這個查詢還沒有實現。", "这条会话没能存进历史:{message}": "這段工作階段沒能存進歷史:{message}", "这次工具调用没有保存完成结果,历史回放不会重新执行。": "這次工具呼叫沒有儲存完成結果,歷史回放不會重新執行。", "这里只改本次会话用的模型,不会改网关里保存的默认值。": "這裡只改本次會話用的模型,不會改閘道器裡儲存的預設值。", "连接网关失败({base}):{message}": "連線閘道器失敗({base}):{message}", "选择 API Key": "選擇 API Key", "选择 API Key…": "選擇 API Key…", "选择对话模型": "選擇對話模型", "配置响应不完整": "配置響應不完整", "问点什么…": "問點什麼…", "项目": "專案", "额度窗口": "額度週期", "首轮回答完成后自动总结;这会调用所选模型并消耗额度。": "首輪迴答完成後自動總結;這會呼叫所選模型並消耗額度。", "默认行为": "預設行為", " · 检查于 {time}": " · 檢查於 {time}", " 已发布(当前 {current}),更新日志如下:": " 已釋出(當前 {current}),更新日誌如下:", "Agent2API 一直在更新,是因为有人在背后持续投入。如果它帮到了你,欢迎请作者喝杯咖啡。": "Agent2API 一直在更新,是因為有人在背後持續投入。如果它幫到了你,歡迎請作者喝杯咖啡。", "GitHub Token 未填写": "GitHub Token 未填寫", "GitHub 令牌": "GitHub 權杖", "GitHub 加速前缀": "GitHub 加速字首", "GitHub 接口限流中,请在 {seconds} 秒后重试": "GitHub API 限流中,請在 {seconds} 秒後重試", "GitHub 接口限流中,请在「插件设置」的「GitHub 令牌」中填写凭证,以提高请求限额。": "GitHub API 限流中,請在「外掛設定」的「GitHub 權杖」中填寫憑證,以提高請求限額。", "GitHub 接口限流中,请在「更新设置」的「GitHub 令牌」中填写凭证,以提高请求限额。": "GitHub API 限流中,請在「更新設定」的「GitHub 權杖」中填寫憑證,以提高請求限額。", "GitHub 接口限流中,请稍后重试": "GitHub API 限流中,請稍後重試", "GitHub 源「{source}」限流,{seconds} 秒后可重试(上游未提供恢复时间)": "GitHub 來源「{source}」限流,{seconds} 秒後可重試(上游未提供恢復時間)", "GitHub 源「{source}」限流,请在 {seconds} 秒后重试": "GitHub 來源「{source}」限流,請在 {seconds} 秒後重試", "GitHub 访问方式": "GitHub 存取方式", "GitHub 访问设置已保存": "GitHub 存取設定已儲存", "QQ 群": "QQ 群", "QQ 群 / Telegram 都在这里": "QQ 群 / Telegram 都在這裡", "QQ 群 {n}": "QQ 群 {n}", "Telegram 群": "Telegram 群", "Windows 服务一键更新会核验官方更新包,再由独立升级进程停止服务、备份替换并重新启动。账号与配置保留,确认新版运行后页面自动刷新。": "Windows 服務一鍵更新會驗證官方更新套件,再由獨立升級程序停止服務、備份替換並重新啟動。帳號與設定保留,確認新版執行後頁面自動重新整理。", "Windows 服务升级权限或目录保护不符合要求。请以管理员身份重跑新版 install-service.ps1;自定义服务账号或外部托管环境请按原方式升级。": "Windows 服務升級權限或目錄保護不符合要求。請以管理員身分重新執行新版 install-service.ps1;自訂服務帳號或外部託管環境請按原方式升級。", "Windows 服务部署需要手动升级。请解压新版服务端包,以管理员身份运行 install-service.ps1;账号与配置会保留。": "Windows 服務部署需要手動升級。請解壓縮新版伺服器套件,以管理員身分執行 install-service.ps1;帳號與設定會保留。", "beta 版可能不稳定。两项同时开启时,按版本号选择最高版本,不会降级;安装到正式版或 beta 版后仍保留关注选择。": "beta 版可能不穩定。兩項同時開啟時,按版本號選擇最高版本,不會降級;安裝到正式版或 beta 版後仍保留關注選擇。", "systemd 一键更新由受限升级程序完成:下载、核验官方校验值、备份替换、重启并确认版本。网关保持普通账号运行,账号与配置不变。": "systemd 一鍵更新由受限升級程式完成:下載、驗證官方校驗值、備份替換、重新啟動並確認版本。閘道保持一般帳號執行,帳號與設定不變。", "{message};其他线路可重新检查": "{message};其他線路可重新檢查", "{ms} 毫秒": "{ms} 毫秒", "{seconds} 秒后可重试": "{seconds} 秒後可重試", "{version} 已就位,服务正在重启,页面会在恢复后自动刷新…({seconds}s)": "{version} 已就位,服務正在重啟,頁面會在恢復後自動重新整理…({seconds}s)", "{version}(预发布)": "{version}(預釋出)", "✅ GitHub 令牌已保存(加密存储,界面不再显示)": "✅ GitHub 權杖已儲存(加密儲存,介面不再顯示)", "✅ 已加入 beta 版,之后的检查会包含 beta 版": "✅ 已加入 beta 版,之後的檢查會包含 beta 版", "✅ 已清除界面保存的 GitHub 令牌(环境变量若配置过则继续生效)": "✅ 已清除介面儲存的 GitHub 權杖(環境變數若配置過則繼續生效)", "✅ 已退出 beta 版,之后的检查只看正式版": "✅ 已退出 beta 版,之後的檢查只看正式版", "✅ 数据升级完成({n} 项)": "✅ 資料升級完成({n} 項)", "✅ 更新出网已切换为 {label}": "✅ 更新出網已切換為 {label}", "✅ 更新出网已切换为直连": "✅ 更新出網已切換為直連", "✅ 自动检查更新已保存": "✅ 自動檢查更新已儲存", "一键更新": "一鍵更新", "一键更新入口不可用,请刷新页面后重试。": "一鍵更新入口無法使用,請重新整理頁面後重試。", "一键更新服务端?": "一鍵更新伺服器?", "一键更新组件不可用或权限配置不正确。请使用新版安装包执行 sudo bash install.sh --upgrade 修复。": "一鍵更新元件無法使用或權限設定不正確。請使用新版安裝套件執行 sudo bash install.sh --upgrade 修復。", "上次 GitHub 限流的等待时间已结束,可重新检查": "上次 GitHub 限流的等待時間已結束,可重新檢查", "上次结果:{state}": "上次結果:{state}", "上游未提供恢复时间,按 GitHub 建议短暂等待": "上游未提供恢復時間,按 GitHub 建議短暫等待", "下载中": "下載中", "下载失败": "下載失敗", "下载失败:{error}": "下載失敗:{error}", "下载已取消,可重新点击「下载并安装」。": "下載已取消,可重新點擊「下載並安裝」。", "下载已取消,可重新点击「下载并更新」。": "下載已取消,可重新點擊「下載並更新」。", "下载并安装": "下載並安裝", "下载并更新": "下載並更新", "下载服务端包": "下載伺服器套件", "不支持此类请求": "不支援此類請求", "与 gh-proxy.com 属于同一服务的备用线路。": "與 gh-proxy.com 屬於同一服務的備用線路。", "与网关的软件更新和插件共用设置;APK 下载由手机联网,GitHub 令牌不会发送给加速站。": "與閘道器的軟體更新和外掛共用設定;APK 下載由手機聯網,GitHub 權杖不會發送給加速站。", "与软件更新共用出网代理和 GitHub 凭证,修改任意一处都会同步生效。": "與軟體更新共用出口代理和 GitHub 憑證,修改任意一處都會同步生效。", "个人开发并开源维护,免费使用,也不会收集你的账号数据。如果它帮到了你,欢迎到项目仓库点个 Star 支持一下。": "個人開發並開源維護,免費使用,也不會收集你的帳號資料。如果它幫到了你,歡迎到專案倉庫點個 Star 支援一下。", "仅 beta 版": "僅 beta 版", "仅官方源": "僅官方源", "仅插件索引和文件下载,不支持版本查询": "僅外掛索引和檔案下載,不支援版本查詢", "仅正式版": "僅正式版", "仓库暂无发布版本。{at}": "倉庫暫無釋出版本。{at}", "代理列表读取失败": "代理列表讀取失敗", "令牌已生效,但写入磁盘失败(重启后会丢失)": "權杖已生效,但寫入磁碟失敗(重啟後會丟失)", "以上状态来自网关;APK 下载会由手机按本机网络重新选择通道。": "以上狀態來自閘道;APK 下載會由手機按本機網路重新選擇通道。", "优先使用加速源,访问失败后回退官方源;不会绕过 GitHub 限流冷却。": "優先使用加速源,存取失敗後回退官方源;不會繞過 GitHub 限流冷卻。", "优先加速源": "優先加速來源", "优先访问官方源,连接失败后尝试加速源;短期记住成功的源,定期恢复官方优先。": "優先存取官方源,連線失敗後嘗試加速源;短期記住成功的源,定期恢復官方優先。", "允许本机自动检查": "允許本機自動檢查", "先使用指定加速源,失败后尝试其他已启用的加速源,最后回退官方源。": "先使用指定加速來源,失敗後嘗試其他已啟用的加速來源,最後退回官方來源。", "关于作者": "關於作者", "关注 beta 版更新": "關注 beta 版更新", "关注正式版更新": "關注正式版更新", "出网线路与 GitHub 令牌设置": "出網線路與 GitHub 權杖設定", "出网线路已切换,但写入磁盘失败(重启后会恢复原线路)": "出網線路已切換,但寫入磁碟失敗(重啟後會恢復原線路)", "分别探测版本查询、插件索引和文件下载,选择最快返回有效内容的源;成功线路短期复用,失败自动切换。": "分別探測版本查詢、外掛索引和檔案下載,選擇最快回傳有效內容的來源;成功線路短期重用,失敗自動切換。", "分钟({min} ~ {max})": "分鐘({min} ~ {max})", "到 GitHub 发布页下载": "到 GitHub 釋出頁下載", "到点自动向 GitHub 查询新版本,查到就走「检测到更新」弹窗;关闭后「检查更新」按钮仍可手动触发": "到點自動向 GitHub 查詢新版本,查到就走「檢測到更新」彈窗;關閉後「檢查更新」按鈕仍可手動觸發", "加入 beta 版": "加入 beta 版", "加入交流群": "加入交流群", "加速源优先": "加速源優先", "单独设置": "單獨設定", "即将满员": "即將滿員", "即将满员,请优先加3群、4群": "即將滿員,請優先加3群、4群", "去更新": "去更新", "发布页上没有 {wanted} 这个文件": "釋出頁上沒有 {wanted} 這個檔案", "发布页上没有对应本机架构的服务端更新包": "釋出頁上沒有對應本機架構的服務端更新包", "发布页上的文件被更新源的访问方式过滤掉了,请检查「更新设置」里的 GitHub 访问方式": "釋出頁上的檔案被更新源的存取方式過濾掉了,請檢查「更新設定」裡的 GitHub 存取方式", "发现新版本 {latest}(当前 {current})。{at}": "發現新版本 {latest}(當前 {current})。{at}", "发现新版本 {latest}(当前 {current})。{reason}{at}": "發現新版本 {latest}(目前 {current})。{reason}{at}", "发现新版本 {latest}(当前 {current}),但该版本没有提供容器内更新包({reason});请在宿主机执行 docker compose pull && docker compose up -d 升级。{at}": "發現新版本 {latest}(當前 {current}),但該版本沒有提供容器內更新包({reason});請在宿主機執行 docker compose pull && docker compose up -d 升級。{at}", "发现新版本 {latest}(当前 {current}),但这一版没有提供本机安装包({reason});可到 GitHub 发布页手动下载。{at}": "發現新版本 {latest}(當前 {current}),但這一版沒有提供本機安裝包({reason});可到 GitHub 釋出頁手動下載。{at}", "取消下载": "取消下載", "取消失败:{error}": "取消失敗:{error}", "只访问 GitHub 官方源,仍使用所选出网代理。": "只存取 GitHub 官方源,仍使用所選出網代理。", "可安装": "可安裝", "启动失败": "啟動失敗", "启动安装程序失败:{error}": "啟動安裝程式失敗:{error}", "启用加速源 {source}": "啟用加速來源 {source}", "在 GitHub 查看完整说明": "在 GitHub 檢視完整說明", "在 QQ 里搜索群号即可加入。": "在 QQ 裡搜尋群號即可加入。", "在宿主机执行 docker compose pull && docker compose up -d 即可升级。": "在宿主機執行 docker compose pull && docker compose up -d 即可升級。", "在浏览器中打开": "在瀏覽器中開啟", "在浏览器中打开 GitHub 发布页": "在瀏覽器中開啟 GitHub 釋出頁", "在浏览器中打开项目仓库,点 Star 支持作者": "在瀏覽器中開啟專案倉庫,點 Star 支援作者", "在默认浏览器中打开 GitHub 的令牌创建页(备注已预设,无需勾选任何权限,直接点 Generate token)": "在預設瀏覽器中開啟 GitHub 的權杖建立頁(備註已預設,無需勾選任何許可權,直接點 Generate token)", "填写后检查限额 60 → 5000 次/小时(创建令牌无需勾选任何权限)": "填寫後檢查限額 60 → 5000 次/小時(建立權杖無需勾選任何許可權)", "填写支持 Raw、Release 和 GitHub API 的 HTTPS 加速站前缀,留空恢复默认。": "填寫支援 Raw、Release 和 GitHub API 的 HTTPS 加速站字首,留空恢復預設。", "复制群号 {group}": "複製群號 {group}", "安装中": "安裝中", "安装包": "安裝包", "安装包已下载完成,正在启动安装程序(需要管理员权限,会弹出 UAC 确认框)…": "安裝包已下載完成,正在啟動安裝程式(需要管理員許可權,會彈出 UAC 確認框)…", "安装包已下载完成,正在启动新的 AppImage…": "安裝包已下載完成,正在啟動新的 AppImage…", "安装包已下载完成,正在打开系统安装器…": "安裝包已下載完成,正在開啟系統安裝器…", "安装包已下载完成,正在挂载磁盘映像…": "安裝包已下載完成,正在掛載磁碟映像…", "安装包已就绪:{name}。点击「安装并重启」后会启动新的 AppImage;把它移动到你的应用目录并替换旧文件即完成升级(本程序会先退出以释放文件占用)。": "安裝包已就緒:{name}。點擊「安裝並重啟」後會啟動新的 AppImage;把它移動到你的應用目錄並替換舊檔案即完成升級(本程式會先退出以釋放檔案佔用)。", "安装包已就绪:{name}。点击「安装并重启」后需要管理员权限,会弹出 UAC 确认框。": "安裝包已就緒:{name}。點擊「安裝並重啟」後需要管理員許可權,會彈出 UAC 確認框。", "安装包已就绪:{name}。点击「打开安装包」后会交给系统安装器,按提示输入密码即可完成安装(本程序无需退出)。": "安裝包已就緒:{name}。點擊「開啟安裝包」後會交給系統安裝器,按提示輸入密碼即可完成安裝(本程式無需退出)。", "安装包已就绪:{name}。点击「打开安装包」后会挂载磁盘映像,把应用拖进「应用程序」即可完成安装。": "安裝包已就緒:{name}。點擊「開啟安裝包」後會掛載磁碟映像,把應用拖進「應用程式」即可完成安裝。", "安装包已挂载,请在弹出的窗口里把应用拖进「应用程序」完成安装。安装完成后重新打开本程序即可。": "安裝包已掛載,請在彈出的窗口裡把應用拖進「應用程式」完成安裝。安裝完成後重新開啟本程式即可。", "安装失败": "安裝失敗", "安装失败:{error}": "安裝失敗:{error}", "安装并重启": "安裝並重啟", "安装程序已启动,本程序将退出以便完成覆盖安装。安装程序需要管理员权限,会弹出 UAC 确认框,请选择「是」。": "安裝程式已啟動,本程式將退出以便完成覆蓋安裝。安裝程式需要管理員許可權,會彈出 UAC 確認框,請選擇「是」。", "官方源": "官方來源", "容器内更新:更新包从 GitHub 发布页下载,校验 sha256 后由面板替换容器内的程序与界面文件,再重启服务(容器由 restart 策略拉起,页面会自动刷新)。更新的是容器里的文件,compose 里的镜像标签不变 —— 之后执行 docker compose pull && up -d 会使用镜像里的版本。检查更新与下载的出网线路、GitHub 令牌都在「更新设置」里。": "容器內更新:更新包從 GitHub 釋出頁下載,校驗 sha256 後由面板替換容器內的程式與介面檔案,再重啟服務(容器由 restart 策略拉起,頁面會自動重新整理)。更新的是容器裡的檔案,compose 裡的映象標籤不變 —— 之後執行 docker compose pull && up -d 會使用映象裡的版本。檢查更新與下載的出網線路、GitHub 權杖都在「更新設定」裡。", "将更新至 {version}。下载和校验完成后会短暂停止服务、替换程序并自动重启;账号与配置会保留。确认后无需再次点击安装。": "將更新至 {version}。下載和驗證完成後會短暫停止服務、替換程式並自動重新啟動;帳號與設定會保留。確認後無需再次點擊安裝。", "已加密存储在本地,不显示具体值;粘贴新令牌可覆盖": "已加密儲存在本地,不顯示具體值;貼上新權杖可覆蓋", "已取消": "已取消", "已填写": "已填寫", "已填写(粘贴新令牌可覆盖)": "已填寫(貼上新權杖可覆蓋)", "已打开系统安装器,请在它弹出的窗口里完成安装。安装完成后重新打开本程序即可。": "已開啟系統安裝器,請在它彈出的窗口裡完成安裝。安裝完成後重新開啟本程式即可。", "已是最新": "已是最新", "已更新至 {version},服务已恢复。": "已更新至 {version},服務已恢復。", "已替换为 {version},正在重启服务…": "已替換為 {version},正在重啟服務…", "已配置 GITHUB_TOKEN 环境变量,界面保存的令牌优先于它": "已配置 GITHUB_TOKEN 環境變數,介面儲存的權杖優先於它", "开启后只更新到 beta 版(预发布),取版本最高的一个;beta 版可能不稳定。开启期间不会因为正式版发布而自动切回正式版 —— 想切回请关闭本开关。关闭后只更新到正式版,且不会降级到版本号更低的版本。": "開啟後只更新到 beta 版(預釋出),取版本最高的一個;beta 版可能不穩定。開啟期間不會因為正式版釋出而自動切回正式版 —— 想切回請關閉本開關。關閉後只更新到正式版,且不會降級到版本號更低的版本。", "开始更新": "開始更新", "当前 Windows 服务尚未接入一键更新。请解压新版服务端包,以管理员身份运行一次 install-service.ps1,原有账号、目录、端口和配置会保留。": "目前 Windows 服務尚未接入一鍵更新。請解壓縮新版伺服器套件,以管理員身分執行一次 install-service.ps1,原有帳號、目錄、連接埠和設定會保留。", "当前下载通道:{source}": "目前下載通道:{source}", "当前为直接运行的服务端,请停止程序后替换服务端包,再重新启动。": "目前為直接執行的伺服器,請停止程式後替換伺服器套件,再重新啟動。", "当前关注:{channels}": "目前關注:{channels}", "当前安装尚未接入一键更新。请下载新版服务端包,执行一次 sudo bash install.sh --upgrade;之后即可在面板更新。": "目前安裝尚未接入一鍵更新。請下載新版伺服器套件,執行一次 sudo bash install.sh --upgrade;之後即可在面板更新。", "当前已是最新版本({current})。{at}": "當前已是最新版本({current})。{at}", "当前版本": "當前版本", "当前系统或架构暂不支持面板自动安装,请查看发布页。": "目前系統或架構暫不支援面板自動安裝,請查看發布頁。", "当前线路不可用:{error};请重新选择代理或切回直连": "當前線路不可用:{error};請重新選擇代理或切回直連", "当前网关仍使用旧版单源设置,升级网关后可管理多个加速源。": "目前閘道仍使用舊版單一來源設定,升級閘道後可管理多個加速來源。", "当前需要手动升级": "目前需要手動升級", "当前:自动检查关闭": "目前:自動檢查關閉", "当前:自动检查开启,每 {n} 分钟": "目前:自動檢查開啟,每 {n} 分鐘", "待重启": "待重啟", "待重新检查": "待重新檢查", "微信赞赏": "微信贊賞", "微信赞赏码": "微信贊賞碼", "打开 GitHub 令牌页面": "開啟 GitHub 權杖頁面", "打开安装包": "開啟安裝包", "打开链接失败:{error}": "開啟連結失敗:{error}", "指定代理": "指定代理", "指定加速源优先": "指定加速來源優先", "按上游返回时间": "按上游回傳時間", "插件索引": "外掛索引", "插件默认跟随这里的更新通道、自动检查和间隔;可在插件设置中单独设置。": "插件預設跟隨這裡的更新通道、自動檢查和間隔;可在插件設定中單獨設定。", "支付宝": "支付寶", "支付宝收款码": "支付寶收款碼", "支持作者": "支持作者", "支持版本查询": "支援版本查詢", "收藏项目": "收藏專案", "数据升级失败:{error}(旧数据仍在原处,下次启动会自动重试)": "資料升級失敗:{error}(舊資料仍在原處,下次啟動會自動重試)", "数据升级未全部完成(已导入 {n} 项,仍有数据待导入,下次启动会自动重试)": "資料升級未全部完成(已匯入 {n} 項,仍有資料待匯入,下次啟動會自動重試)", "数据升级:没有需要导入的旧数据": "資料升級:沒有需要匯入的舊資料", "文件下载": "檔案下載", "新版本 ": "新版本 ", "无法开始更新:{error}": "無法開始更新:{error}", "无法比较": "無法比較", "无法解密": "無法解密", "无法读取更新信息": "無法讀取更新資訊", "显示的是当前网络下的响应耗时,不代表长期稳定性或完整下载速度。未探测的源会在实际更新时检查。": "顯示的是目前網路下的回應耗時,不代表長期穩定性或完整下載速度。未探測的來源會在實際更新時檢查。", "暂未确认服务恢复,请检查服务器状态后刷新页面;不会自动重复安装。": "暫未確認服務恢復,請檢查伺服器狀態後重新整理頁面;不會自動重複安裝。", "更新任务已结束,但当前运行版本与目标不一致,请检查服务日志。": "更新工作已結束,但目前執行版本與目標不一致,請檢查服務日誌。", "更新出网代理": "更新出網代理", "更新包从 GitHub Release 获取。自动模式按实际请求选择可用通道,失败后换源;镜像安装包必须匹配官方校验值,取不到时仅使用原始源。加速源、代理和令牌在「更新设置」中配置,指定代理失效不会静默直连。": "更新套件從 GitHub Release 取得。自動模式按實際請求選擇可用通道,失敗後換來源;鏡像安裝套件必須符合官方校驗值,取不到時僅使用原始來源。加速來源、代理和權杖在「更新設定」中設定,指定代理失效不會默默改為直連。", "更新包从 GitHub Release 获取,下载后交给本平台安装器。GitHub 访问方式、加速前缀、出网代理和令牌在「更新设置」中配置。默认官方优先,连接失败后尝试加速源;镜像安装包必须匹配官方校验值,取不到时仅使用原始源。指定代理失效会明确报错,不会静默改走直连。": "更新包從 GitHub Release 獲取,下載後交給本平臺安裝器。GitHub 存取方式、加速字首、出網代理和權杖在「更新設定」中配置。預設官方優先,連線失敗後嘗試加速源;映象安裝包必須匹配官方校驗值,取不到時僅使用原始源。指定代理失效會明確報錯,不會靜默改走直連。", "更新包从 GitHub 发布页下载,下载完成后可直接启动安装程序并自动重启本程序。安装包会先校验来源域名与文件完整性。检查更新与下载安装包的出网线路、GitHub 令牌都在「更新设置」里:线路默认直连(直连失败时自动借 Clash Verge 的混合端口重试一次),选定指定出口后只走该出口;填写 GitHub 令牌可把检查限额从 60 次/小时提高到 5000 次/小时。": "更新包從 GitHub 釋出頁下載,下載完成後可直接啟動安裝程式並自動重啟本程式。安裝包會先校驗來源域名與檔案完整性。檢查更新與下載安裝包的出網線路、GitHub 權杖都在「更新設定」裡:線路預設直連(直連失敗時自動借 Clash Verge 的混合連接埠重試一次),選定指定出口後只走該出口;填寫 GitHub 權杖可把檢查限額從 60 次/小時提高到 5000 次/小時。", "更新包已就绪:{name}。点「安装并重启」后,面板会校验并替换容器内的程序与界面文件,然后重启服务(页面会自动刷新)。": "更新包已就緒:{name}。點「安裝並重啟」後,面板會校驗並替換容器內的程式與介面檔案,然後重啟服務(頁面會自動重新整理)。", "更新失败": "更新失敗", "更新失败:{error}": "更新失敗:{error}", "更新完成": "更新完成", "更新已应用到容器内,重启服务后生效。{at}": "更新已應用到容器內,重啟服務後生效。{at}", "更新已应用到容器内,重启服务后生效。{at}(本次检查失败:{error})": "更新已應用到容器內,重啟服務後生效。{at}(本次檢查失敗:{error})", "更新日志": "更新日誌", "更新设置": "更新設定", "更新进行中": "更新進行中", "更新通道已保存": "更新通道已儲存", "更新通道已改变,请重新检查更新。": "更新通道已改變,請重新檢查更新。", "替换完成,正在重启服务…": "替換完成,正在重啟服務…", "最多保留 6 个 HTTPS 加速源;自定义源可关闭版本查询支持。": "最多保留 6 個 HTTPS 加速來源;自訂來源可關閉版本查詢支援。", "最新发布版本为 {latest},但当前版本号「{current}」无法解析,未做新旧判断。{at}": "最新發布版本為 {latest},但當前版本號「{current}」無法解析,未做新舊判斷。{at}", "最新版本": "最新版本", "最近采用": "最近採用", "有新版本": "有新版本", "服务正在重启,页面会在恢复后自动刷新…({seconds}s)": "服務正在重啟,頁面會在恢復後自動重新整理…({seconds}s)", "服务端压缩包": "伺服器壓縮套件", "未找到适用的更新包": "未找到適用的更新套件", "未找到适用的更新包。需要:{wanted};发布页包含的文件类型:{seen}。": "未找到適用的更新套件。需要:{wanted};發布頁包含的檔案類型:{seen}。", "未探测": "未探測", "未检查": "未檢查", "本工具由": "本工具由", "查看发布页": "查看發布頁", "校验中": "驗證中", "检查中": "檢查中", "检查中…": "檢查中…", "检查失败": "檢查失敗", "检查更新": "檢查更新", "检查更新与下载安装包使用所选线路;未选择代理时先直连,失败后尝试 Clash Verge 混合端口;指定代理不可用时不会自动改走直连。": "檢查更新與下載安裝包使用所選線路;未選擇代理時先直連,失敗後嘗試 Clash Verge 混合連接埠;指定代理無法使用時不會自動改走直連。", "检查更新与下载安装包使用所选线路;未选择代理时直连,指定代理不可用时不会自动改走直连。": "檢查更新與下載安裝包使用所選線路;未選擇代理時直連,指定代理不可用時不會自動改走直連。", "检查更新与下载安装包走哪条线路(当前:{current});选择即保存。选项来自「网络代理」页;直连失败时会自动借 Clash 混合端口重试一次,选定指定代理后只走它": "檢查更新與下載安裝包走哪條線路(當前:{current});選擇即儲存。選項來自「網路代理」頁;直連失敗時會自動借 Clash 混合連接埠重試一次,選定指定代理後只走它", "检查更新失败:{error}": "檢查更新失敗:{error}", "检查更新失败:{error}(以下版本与更新日志来自上次成功检查,检查于 {time})": "檢查更新失敗:{error}(以下版本與更新日誌來自上次成功檢查,檢查於 {time})", "检查计划": "檢查計畫", "检查间隔必须是 {min} ~ {max} 分钟": "檢查間隔必須是 {min} ~ {max} 分鐘", "检查间隔(分钟)": "檢查間隔(分鐘)", "检测到更新": "檢測到更新", "检测到自定义程序或界面路径,一键更新不会覆盖这些位置。请按原部署方式升级。": "偵測到自訂程式或介面路徑,一鍵更新不會覆蓋這些位置。請按原部署方式升級。", "正在下载 {name}:{percent}%({received} / {total} MB)": "正在下載 {name}:{percent}%({received} / {total} MB)", "正在下载 {version} 的服务端更新包…": "正在下載 {version} 的伺服器更新套件…", "正在下载安装包…(下载完成后会交给系统安装器,按提示输入密码即可完成安装)": "正在下載安裝包…(下載完成後會交給系統安裝器,按提示輸入密碼即可完成安裝)", "正在下载安装包…(下载完成后会启动新的 AppImage;把它替换掉旧文件即完成升级)": "正在下載安裝包…(下載完成後會啟動新的 AppImage;把它替換掉舊檔案即完成升級)", "正在下载安装包…(下载完成后会挂载磁盘映像,把应用拖进「应用程序」即可完成安装)": "正在下載安裝包…(下載完成後會掛載磁碟映像,把應用拖進「應用程式」即可完成安裝)", "正在下载安装包…(下载完成后启动安装程序需要管理员权限,会弹出 UAC 确认框)": "正在下載安裝包…(下載完成後啟動安裝程式需要管理員許可權,會彈出 UAC 確認框)", "正在下载服务端更新包…(下载完成后由面板完成替换,重启容器内的服务后生效)": "正在下載服務端更新包…(下載完成後由面板完成替換,重啟容器內的服務後生效)", "正在取消下载…": "正在取消下載…", "正在备份并替换服务端程序与界面,请勿关闭服务器…": "正在備份並替換伺服器程式與介面,請勿關閉伺服器…", "正在把旧数据导入 SQLite 数据库(旧文件会保留,不会删除)…": "正在把舊資料匯入 SQLite 資料庫(舊檔案會保留,不會刪除)…", "正在查询 GitHub 上的最新发布版本…": "正在查詢 GitHub 上的最新發布版本…", "正在校验并替换容器内的程序与界面文件…": "正在校驗並替換容器內的程式與介面檔案…", "正在独立核验官方更新包,校验通过前不会修改现有程序…": "正在獨立驗證官方更新套件,驗證通過前不會修改現有程式…", "正在选择下载通道…": "正在選擇下載通道…", "正在重启服务并确认新版本,页面恢复后会自动刷新…": "正在重新啟動服務並確認新版本,頁面恢復後會自動重新整理…", "正式版与 beta 版": "正式版與 beta 版", "没有可下载的安装包": "沒有可下載的安裝包", "没有可下载的安装包:{reason}": "沒有可下載的安裝包:{reason}", "没有启用的加速源,将只使用官方源。": "沒有啟用的加速來源,將只使用官方來源。", "沿用已记录的恢复时间": "沿用已記錄的恢復時間", "点击「检查更新」后,这里会显示最新版本的更新说明。": "點擊「檢查更新」後,這裡會顯示最新版本的更新說明。", "点击「检查更新」查询 GitHub 上的最新发布版本。": "點擊「檢查更新」查詢 GitHub 上的最新發布版本。", "点击「检查更新」查询最新发布版本。": "點擊「檢查更新」查詢最新發布版本。", "点击在浏览器中打开": "點擊在瀏覽器中開啟", "点击复制群号": "點擊複製群號", "版本 {version} · 按 GitHub 访问设置下载安装包": "版本 {version} · 按 GitHub 存取設定下載安裝包", "版本查询": "版本查詢", "版本查询、插件索引、文件下载": "版本查詢、外掛索引、檔案下載", "状态来自最近一次实际请求,并非实时测速。过期后标为待重新检查;限流只暂停对应线路,其他线路仍可使用。": "狀態來自最近一次實際請求,並非即時測速。過期後標為待重新檢查;限流只暫停對應線路,其他線路仍可使用。", "环境变量": "環境變數", "立即重启": "立即重啟", "等待恢复": "等待恢復", "管理员已关闭面板一键更新,请使用手动升级方式。": "管理員已關閉面板一鍵更新,請使用手動升級方式。", "粘贴 GitHub 令牌(ghp_… / github_pat_…)": "貼上 GitHub 權杖(ghp_… / github_pat_…)", "网关已关闭自动检查,此处只做手动检查": "閘道已關閉自動檢查,此處只做手動檢查", "群号": "群號", "群号:{group}": "群號:{group}", "自动检查更新": "自動檢查更新", "自动选择最快可用源": "自動選擇最快可用來源", "自动(官方优先)": "自動(官方優先)", "自定义加速前缀": "自訂加速前綴", "至少需要关注正式版或 beta 版中的一个通道": "至少需要關注正式版或 beta 版中的一個通道", "补充内置备用源": "補充內建備用來源", "记录于 {time}": "記錄於 {time}", "请先粘贴 GitHub 令牌": "請先貼上 GitHub 權杖", "请检查服务日志": "請檢查服務日誌", "读取下载进度失败:{error}": "讀取下載進度失敗:{error}", "读取中": "讀取中", "赞赏完全自愿,不解锁任何功能,也不影响正常使用。": "贊賞完全自願,不解鎖任何功能,也不影響正常使用。", "赞赏方式": "贊賞方式", "跟随软件": "跟隨軟體", "跳过此次更新": "跳過此次更新", "软件更新": "軟體更新", "软件更新与插件共用此设置;GitHub 令牌仅发送给官方 API。镜像安装包需要官方校验值,镜像插件包需要可信签名。": "軟體更新與外掛共用此設定;GitHub 權杖僅傳送給官方 API。鏡像安裝套件需要官方校驗值,鏡像外掛套件需要可信簽章。", "软件版本检查设置不可用": "軟體版本檢查設定無法使用。", "返回内容异常": "回傳內容異常", "这一版只有 {seen},没有本机需要的 {wanted}": "這一版只有 {seen},沒有本機需要的 {wanted}", "这一版没有为当前平台提供安装包": "這一版沒有為當前平臺提供安裝包", "这一版没有发布本机需要的安装包({wanted})": "這一版沒有釋出本機需要的安裝包({wanted})", "这一版没有提供容器内更新包": "這一版沒有提供容器內更新包", "这一版没有提供容器内更新包:{reason}": "這一版沒有提供容器內更新包:{reason}", "这一版没有提供本机安装包": "這一版沒有提供本機安裝包", "这一版还没有上传任何文件(构建可能失败,或仍在打包上传)": "這一版還沒有上傳任何檔案(構建可能失敗,或仍在打包上傳)", "这个版本没有填写发布说明。": "這個版本沒有填寫釋出說明。", "连接超时": "連線逾時", "通道已切换,但写入磁盘失败(重启后会回到原设置)": "通道已切換,但寫入磁碟失敗(重啟後會回到原設定)", "遇到问题或有使用心得,欢迎到群里交流。": "遇到問題或有使用心得,歡迎到群裡交流。", "重启中": "重啟中", "重新粘贴保存一次即可自愈": "重新貼上儲存一次即可自愈", "重试下载": "重試下載", "链接地址不受支持": "連結地址不受支援", "限流冷却中": "限流冷卻中", "面板自动安装": "面板自動安裝", "预发布": "預釋出", "默认开启;即使当前使用 beta 版,也可收到版本号更高的正式版更新。": "預設開啟;即使目前使用 beta 版,也可收到版本號更高的正式版更新。", "默认跟随软件的正式版和 beta 关注选择;单独设置只影响插件。始终按版本号选择更新,不会降级。": "預設跟隨軟體的正式版和 beta 關注選擇;單獨設定只影響插件。始終按版本號選擇更新,不會降級。", "默认跟随软件的自动检查和间隔。关闭自动检查也会暂停插件自动更新和自动下载;手动检查与安装不受影响。": "預設跟隨軟體的自動檢查和間隔。關閉自動檢查也會暫停插件自動更新和自動下載;手動檢查與安裝不受影響。", "(检查于 {time})": "(檢查於 {time})", "API Key 列表": "API Key 列表", "Key 已停用": "Key 已停用", "Key 已删除": "Key 已刪除", "Key 已启用": "Key 已啟用", "Key 至少需要 8 个字符": "Key 至少需要 8 個字元", "✅ Key 已创建,记得复制给客户端": "✅ Key 已建立,記得複製給客戶端", "✅ 可用范围已保存": "✅ 可用範圍已儲存", "不限制": "不限制", "不限制提供商与模型": "不限制提供商與模型", "与": "與", "例如 Cursor / 公司电脑": "例如 Cursor / 公司電腦", "保存失败:{reason}": "儲存失敗:{reason}", "保存范围": "儲存範圍", "创建": "建立", "创建于 {time}": "創建於 {time}", "创建时间": "建立時間", "删除网关 Key": "刪除閘道器 Key", "助手图片工具": "助手圖片工具", "助手标题总结": "助手標題總結", "可用提供商": "可用提供商", "可用提供商:{names}": "可用提供商:{names}", "可用模型": "可用模型", "可用模型:{names}": "可用模型:{names}", "可用范围": "可用範圍", "可用范围 · {name}": "可用範圍 · {name}", "启用「{name}」": "啟用「{name}」", "复制 Key": "複製 Key", "客户端请求带上 ": "客戶端請求帶上 ", "客户端请求需带 ": "客戶端請求需帶 ", "已删除": "已刪除", "已启用鉴权 · {n} 把 Key 生效": "已啟用鑑權 · {n} 把 Key 生效", "当前不限制:这把 Key 可以用全部提供商与全部对外模型": "當前不限制:這把 Key 可以用全部提供商與全部對外模型", "所选 API Key 已不可用": "所選 API Key 已不可用", "所选 API Key 已不可用,请重新选择": "所選 API Key 已不可用,請重新選擇", "提供商:{names}": "提供商:{names}", "搜索模型…": "搜尋模型…", "操作失败:{reason}": "操作失敗:{reason}", "新建 API Key": "新建 API Key", "新建 Key 与设置可用范围(提供商 / 模型白名单)在桌面端完成。": "新建 Key 與設定可用範圍(提供商 / 模型白名單)在桌面版完成。", "日活保活": "日活保活", "显示": "顯示", "未启用鉴权": "未啟用鑑權", "未命名": "未命名", "未提供客户端标识": "未提供客戶端標識", "未知客户端": "未知客戶端", "模型调用使用所选 Key 的权限,日志记录 Key 名称,不保存密钥值。": "模型呼叫使用所選 Key 的權限,日誌記錄 Key 名稱,不儲存密鑰值。", "模型:{names}": "模型:{names}", "正在读取 API Key…": "正在讀取 API Key…", "没有匹配的选项": "沒有匹配的選項", "没有可用的 API Key,请先在「网关 Key」页创建并启用": "沒有可用的 API Key,請先在「網關 Key」頁建立並啟用", "留空 = 不限制": "留空 = 不限制", "留空自动生成;手填至少 8 个字符": "留空自動生成;手填至少 8 個字元", "留空表示不限制;同时设置时请求需同时满足两个条件(模型在白名单内且路由到允许的提供商)。 「可用模型」的候选跟着上面勾选的提供商走:没勾提供商时它是空的(还没有约束范围), 勾了几家就列出这几家能收的全部对外名。": "留空表示不限制;同時設定時請求需同時滿足兩個條件(模型在白名單內且路由到允許的提供商)。 「可用模型」的候選跟著上面勾選的提供商走:沒勾提供商時它是空的(還沒有約束範圍), 勾了幾家就列出這幾家能收的全部對外名。", "确定删除 Key「{name}」?使用它的客户端会立刻无法访问。": "確定刪除 Key「{name}」?使用它的客戶端會立刻無法存取。", "确定删除「{name}」?用这把 Key 的客户端会立即失效。": "確定刪除「{name}」?用這把 Key 的客戶端會立即失效。", "网关 Key 表": "閘道器 Key 表", "自动记住本次选择,下次打开继续使用;Key 被停用或删除后需重新选择。": "自動記住本次選擇,下次開啟繼續使用;Key 被停用或刪除後需重新選擇。", "请先在上面选择可用提供商": "請先在上面選擇可用提供商", "读取 Key 列表失败:{reason}": "讀取 Key 列表失敗:{reason}", "还没有 Key。去桌面端「网关 Key」页新建一把。": "還沒有 Key。去桌面版「閘道器 Key」頁新建一把。", "还没有 Key,当前不鉴权": "還沒有 Key,當前不鑑權", "这几家当前没有可用模型(账号未登录或清单为空)": "這幾家當前沒有可用模型(帳號未登入或清單為空)", "这把 Key 不限制提供商与模型(可用全部上游与全部对外模型)": "這把 Key 不限制提供商與模型(可用全部上游與全部對外模型)", "限制:{text}": "限制:{text}", "隐藏": "隱藏", "(模型候选需先选提供商;不选则沿用当前这几项,保存后仍按模型白名单生效)": "(模型候選需先選提供商;不選則沿用當前這幾項,儲存後仍按模型白名單生效)", "(行内「可用范围」):留空 = 不限制,两个都设时 按交集生效 —— 被限制的模型对这把 Key 表现为「不存在」(拉 /v1/models 也看不到它), 提供它的家不在可用列表里时请求同样被拒。": "(行內「可用範圍」):留空 = 不限制,兩個都設時 按交集生效 —— 被限制的模型對這把 Key 表現為「不存在」(拉 /v1/models 也看不到它), 提供它的家不在可用列表裡時請求同樣被拒。", "+ 新建 Key": "+ 新建 Key", "; 修改后立即生效,本程序自身会自动使用第一把启用的 Key。每把 Key 可单独限制": "; 修改後立即生效,本程式自身會自動使用第一把啟用的 Key。每把 Key 可單獨限制", ";一把启用的 Key 都没有时不鉴权。": ";一把啟用的 Key 都沒有時不鑑權。", ";修改后立即生效。模型测试、助手和日活保活必须选择 Key,受限 Key 不能访问管理接口。每把 Key 可单独限制": ";修改後立即生效。模型測試、助手和日活保活必須選擇 Key,受限 Key 不能存取管理 API。每把 Key 可單獨限制", ";当前必须带 Key。": ";目前必須帶 Key。", " AI 账号专用静态住宅 IP:Scamalytics 低欺诈评分,不限流量,首单 75 折(AGENT2API25)": " AI 帳號專用靜態住宅 IP:Scamalytics 低欺詐評分,不限流量,首單 75 折(AGENT2API25)", " 提供 AI 账号专用的原生静态住宅 IP(Static Residential ISP):IP 来自真实家庭宽带运营商,Scamalytics 低欺诈评分,每个 IP 独享,不限流量,$3.90 起。": " 提供 AI 帳號專用的原生靜態住宅 IP(Static Residential ISP):IP 來自真實家庭寬頻運營商,Scamalytics 低欺詐評分,每個 IP 獨享,不限流量,$3.90 起。", " 那一类由「同步 Clash Verge」 镜像进来(进入本页时会自动同步一次):名称、端口、启用都跟随 Clash, 在 Clash 里改或删,这里跟着变 —— 所以它们只读,改请到 Clash Verge 里改。": " 那一類由「同步 Clash Verge」 映象進來(進入本頁時會自動同步一次):名稱、連接埠、啟用都跟隨 Clash, 在 Clash 裡改或刪,這裡跟著變 —— 所以它們只讀,改請到 Clash Verge 裡改。", "Clash Verge": "Clash Verge", "Clash 同步失败:{msg}": "Clash 同步失敗:{msg}", "Clash 镜像": "Clash 映象", "SOCKS5 用户名和密码不能超过 255 字节": "SOCKS5 使用者名稱和密碼不能超過 255 位元組", "YAML 文件": "YAML 檔案", "{names} 等 {n} 条": "{names} 等 {n} 條", "{n} 个": "{n} 個", "{n} 个出口": "{n} 個出口", "{n} 个账号在用": "{n} 個帳號在用", "{n} 个账号引用": "{n} 個帳號引用", "{n} 条订阅": "{n} 條訂閱", "{percent}%({received} / {total} MB)": "{percent}%({received} / {total} MB)", "✅ {ip}": "✅ {ip}", "✅ 「{name}」出口可用{ip}{took}": "✅ 「{name}」出口可用{ip}{took}", "✅ 内核下载完成,正在启动…": "✅ 核心下載完成,正在啟動…", "✅ 内核已手动导入到 {dir}": "✅ 核心已手動匯入到 {dir}", "✅ 已同步 Clash Verge 出口({n} 项变更)": "✅ 已同步 Clash Verge 出口({n} 項變更)", "✅ 连接成功": "✅ 連線成功", "✅ 连通性测试设置已保存": "✅ 連通性測試設定已儲存", "❌ 「{name}」{error}": "❌ 「{name}」{error}", "❌ 连接失败": "❌ 連線失敗", "「测试」与「批量测试」访问的目标;留空用默认(打 WorkBuddy 上游)。判据是能否拿到 HTTP 响应,不用考虑该网址返回什么内容。": "「測試」與「批次測試」存取的目標;留空用預設(打 WorkBuddy 上游)。判準是能否取得 HTTP 回應,不用考慮該網址回傳什麼內容。", "上传本地文件": "上傳本機檔案", "上次下载失败:{reason}": "上次下載失敗:{reason}", "上次下载已停止,未下载完的临时文件已删除": "上次下載已停止,未下載完的臨時檔案已刪除", "上次同步": "上次同步", "上次测试": "上次測試", "下载": "下載", "下载中…": "下載中…", "下载内核": "下載核心", "下载完成后可启动": "下載完成後可啟動", "下载已经完成,停止没赶上(内核已安装)": "下載已經完成,停止沒趕上(核心已安裝)", "下载线路": "下載線路", "下载线路 / 存放目录没能写进配置(本次下载已按新设置走,重启后会恢复原值)": "下載線路 / 存放目錄沒能寫進配置(本次下載已按新設定走,重啟後會恢復原值)", "不再提供": "不再提供", "不再提醒": "不再提醒", "为降低维护成本、资源占用及合规风险,Agent2API 已停止提供代理订阅与内置代理内核相关功能。": "為降低維護成本、資源佔用及合規風險,Agent2API 已停止提供代理訂閱與內建代理核心相關功能。", "之前使用订阅节点?": "之前使用訂閱節點?", "也可以把二维码截图直接粘贴到弹窗里(Ctrl+V)": "也可以把二維碼截圖直接貼上到彈窗裡(Ctrl+V)", "二维码里没有订阅链接": "二維碼裡沒有訂閱連結", "从图片识别二维码": "從圖片識別二維碼", "代理主机只能填写域名或 IP 地址,不能包含协议、端口或路径": "代理主機只能填寫網域名稱或 IP 位址,不能包含協定、連接埠或路徑", "代理主机地址无效": "代理主機位址無效", "代理修改已保存": "代理修改已儲存", "代理内核": "代理核心", "代理内核未安装(下载内核后,被账号或服务线路引用的节点会自动开监听端口)": "代理核心未安裝(下載核心後,被帳號或服務線路引用的節點會自動開監聽埠)", "代理内核未安装(在「订阅管理」里下载内核后,被账号引用的节点会自动开监听端口)": "代理核心未安裝(在「訂閱管理」裡下載核心後,被帳號引用的節點會自動開監聽埠)", "代理列表": "代理列表", "代理列表加载失败:{reason}": "代理列表載入失敗:{reason}", "代理列表响应异常": "代理列表響應異常", "代理协议只支持 HTTP 或 SOCKS5": "代理協定只支援 HTTP 或 SOCKS5", "代理名称": "代理名稱", "代理名称不能超过 60 个字符": "代理名稱不能超過 60 個字元", "代理已添加": "代理已新增", "代理格式无效,请按示例填写": "代理格式無效,請依範例填寫", "代理池": "代理池", "代理池表": "代理池表", "代理订阅功能已下线": "代理訂閱功能已下線", "代理设置": "代理設定", "代理设置响应异常": "代理設定回應異常", "代理账号和密码不能超过 200 个字符": "代理帳號和密碼不能超過 200 個字元", "代理账号或密码的 URL 编码无效": "代理帳號或密碼的 URL 編碼無效", "以下行未能识别,已留在输入框中;修正后可再次解析。": "以下行未能辨識,已留在輸入框中;修正後可再次解析。", "使用情况": "使用情況", "例如:我的机场": "例如:我的機場", "例如:香港 HTTP 出口": "例如:香港 HTTP 出口", "保存代理": "儲存代理", "保存已有的代理地址,供账号与服务线路按需使用。": "儲存已有的代理地址,供帳號與服務線路按需使用。", "保持原文件": "保持原檔案", "停止下载": "停止下載", "停止下载失败:{reason}": "停止下載失敗:{reason}", "停止请求已发出,但下载还没收手,稍后再看一次进度": "停止請求已發出,但下載還沒收手,稍後再看一次進度", "先把下载的内核放到网关机器的目录,再填写文件或目录的绝对路径。目录内会查找官方包或 mihomo 二进制;远程面板不能读取浏览器电脑的路径。": "先將下載的核心放到閘道機器的目錄,再填寫檔案或目錄的絕對路徑。目錄內會尋找官方壓縮檔或 mihomo 二進位檔;遠端面板不能讀取瀏覽器電腦上的路徑。", "先经过系统代理,再连接到此代理": "先經過系統代理,再連線到此代理", "全选当前筛选出的出口": "全選當前篩選出的出口", "全选所有代理": "全選所有代理", "全选({n} 个)": "全選({n} 個)", "全部协议": "全部協議", "全部提供方": "全部提供方", "全部订阅": "全部訂閱", "关掉这个窗口不会中断下载(它在后台继续跑)—— 要停下就点下面的「停止下载」,未下载完的临时文件会被删除。": "關掉這個視窗不會中斷下載(它在後臺繼續跑)—— 要停下就點下面的「停止下載」,未下載完的臨時檔案會被刪除。", "关闭代理后,引用它的账号回退直连。连通性以最近一次检测结果为准。": "關閉代理後,引用它的帳號回退直連。連通性以最近一次檢測結果為準。", "关闭内核": "關閉核心", "关闭内核失败:{reason}": "關閉核心失敗:{reason}", "其中 {n} 条正被账号使用 —— 删除后那些账号会回退直连。": "其中 {n} 條正被帳號使用 —— 刪除後那些帳號會回退直連。", "其中 {n} 条正被账号使用 —— 删除后需重新设置相关账号的代理,不会自动直连。": "其中 {n} 條正被帳號使用 —— 刪除後需重新設定相關帳號的代理,不會自動直接連線。", "其中 {n} 条是同步来的只读条目(Clash / 订阅):可参与批量测试,删除会跳过": "其中 {n} 條是同步來的只讀條目(Clash / 訂閱):可參與批次測試,刪除會跳過", "其中 {n} 条来自 Clash 同步:可参与批量测试,删除会跳过": "其中 {n} 條來自 Clash 同步:可參與批次測試,刪除會跳過", "内核 {version}": "核心 {version}", "内核 {version}({asset})": "核心 {version}({asset})", "内核下载": "核心下載", "内核下载失败:{reason}": "核心下載失敗:{reason}", "内核二进制 / 配置 / 端口映射都会放在这里,默认 {dir};目录不存在会在下载开始时自动创建。": "核心二進位制 / 配置 / 連接埠對映都會放在這裡,預設 {dir};目錄不存在會在下載開始時自動建立。", "内核启动失败:{reason}": "核心啟動失敗:{reason}", "内核导入仍在后台执行,请刷新状态查看结果": "核心匯入仍在背景執行,請重新整理狀態查看結果", "内核导入任务排队中…": "核心匯入工作排隊中…", "内核导入失败": "核心匯入失敗", "内核导入状态已变化,请刷新后确认": "核心匯入狀態已變更,請重新整理後確認", "内核已停止": "核心已停止", "内核已停止,点「启动内核」拉起": "核心已停止,點「啟動核心」拉起", "内核已关闭(订阅与端口注册表保留,「启动内核」后原位恢复)": "核心已關閉(訂閱與連接埠登錄檔保留,「啟動核心」後原位恢復)", "内核已导入,但启动失败:{reason}": "核心已匯入,但啟動失敗:{reason}", "内核已导入,但存放目录未能保存,重启网关后会恢复原位置": "核心已匯入,但存放目錄未能儲存,重新啟動閘道後會恢復原位置", "内核已手动关闭": "核心已手動關閉", "内核已手动关闭(点「启动内核」拉起)": "核心已手動關閉(點「啟動核心」拉起)", "内核文件必须非空且不超过 {max} MiB": "核心檔案不得為空,且不能超過 {max} MiB", "内核未安装": "核心未安裝", "内核正在启动…": "核心正在啟動…", "内核正在执行操作,请稍后重试": "核心正在執行操作,請稍後重試", "内核没有在超时内停下来": "核心沒有在超時內停下來", "内核目录没能删掉(可能仍被进程占用),稍后重试一次": "核心目錄沒能刪掉(可能仍被程序佔用),稍後重試一次", "内核运行中": "核心執行中", "出口 IP {ip}": "出口 IP {ip}", "出口可用": "出口可用", "出口测试网址": "出口測試網址", "删除代理": "刪除代理", "删除内核": "刪除核心", "删除内核失败:{reason}": "刪除核心失敗:{reason}", "删除订阅": "刪除訂閱", "刷新中…": "重新整理中…", "刷新失败:{reason}": "重新整理失敗:{reason}", "功能调整通知": "功能調整通知", "勾选「{name}」": "勾選「{name}」", "单个添加": "單筆新增", "去获取": "去獲取", "另有 {n} 条是同步来的只读条目(Clash / 订阅),将跳过。": "另有 {n} 條是同步來的只讀條目(Clash / 訂閱),將跳過。", "另有 {n} 条来自 Clash Verge 同步,将跳过(请到 Clash Verge 里删)。": "另有 {n} 條來自 Clash Verge 同步,將跳過(請到 Clash Verge 裡刪)。", "只读:在 Clash Verge 里改": "只讀:在 Clash Verge 裡改", "只读:在「订阅管理」里改": "只讀:在「訂閱管理」裡改", "同步 Clash Verge": "同步 Clash Verge", "同步 Clash Verge 出口": "同步 Clash Verge 出口", "同步中…": "同步中…", "同步失败:{reason}": "同步失敗:{reason}", "名字与端口在 Clash Verge 里改;启用可在本页关闭": "名字與連接埠在 Clash Verge 裡改;啟用可在本頁關閉", "名字与端口跟随订阅与内核;启用可在本页关闭": "名字與連接埠跟隨訂閱與核心;啟用可在本頁關閉", "后台继续": "後臺繼續", "启动内核": "啟動核心", "启用订阅「{name}」": "啟用訂閱「{name}」", "启用这条代理": "啟用這條代理", "启用这条订阅": "啟用這條訂閱", "启用(禁用后,使用此代理的账号请求将失败;仍可测试)": "啟用(停用後,使用此代理的帳號請求將失敗;仍可測試)", "启用(禁用的条目不会被账号使用,被引用时账号回退直连;仍可测试)": "啟用(停用的條目不會被帳號使用,被引用時帳號回退直連;仍可測試)", "启用(禁用的订阅不参与内核同步,它的节点会从代理池移除)": "啟用(停用的訂閱不參與核心同步,它的節點會從代理池移除)", "图片读取失败": "圖片讀取失敗", "地址": "地址", "地址不完整": "位址不完整", "地址由网关所在设备访问;本机代理需运行在该设备上。": "地址由閘道器所在裝置存取;本機代理需執行在該裝置上。", "复制下载链接": "複製下載連結", "复制订阅链接": "複製訂閱連結", "失败 {n} 个({reason})": "失敗 {n} 個({reason})", "存放位置": "存放位置", "存放位置 {dir}": "存放位置 {dir}", "存放位置要填绝对路径,例如 D:\\proxy-kernel": "存放位置要填絕對路徑,例如 D:\\proxy-kernel", "家庭宽带": "家庭寬頻", "导入内核": "匯入核心", "导入并替换": "匯入並替換", "导入来源": "匯入來源", "将替换现有代理内核,运行中的连接会短暂中断。订阅、账号引用与端口映射会保留。是否继续?": "將替換現有代理核心,執行中的連線會短暫中斷。訂閱、帳號參照與連接埠對應會保留。是否繼續?", "展开其余 {n} 个 ▾": "展開其餘 {n} 個 ▾", "已下载?手动导入": "已下載?手動匯入", "已保存。重启内核后,新分配的节点端口才会按新范围来。": "已儲存。重啟核心後,新分配的節點連接埠才會按新範圍來。", "已保存「{name}」": "已儲存「{name}」", "已停止下载内核(未下载完的临时文件已删除)": "已停止下載核心(未下載完的臨時檔案已刪除)", "已删除 {n} 个代理": "已刪除 {n} 個代理", "已删除「{name}」": "已刪除「{name}」", "已删除内核(订阅与账号引用保留,重新下载后会重新分配端口)": "已刪除核心(訂閱與帳號引用保留,重新下載後會重新分配連接埠)", "已删除内核(订阅与账号引用保留;有文件仍被占用,将在下次启动时清理)": "已刪除核心(訂閱與帳號參照保留;有檔案仍被占用,將在下次啟動時清理)", "已刷新「{name}」,正在同步节点…": "已重新整理「{name}」,正在同步節點…", "已同步 {n} 项变更": "已同步 {n} 項變更", "已启用 {n} 个": "已啟用 {n} 個", "已启用「{name}」": "已啟用「{name}」", "已启用「{name}」,正在补建监听端口(内核重建中)": "已啟用「{name}」,正在補建監聽連接埠(核心重建中)", "已在本页禁用(打开开关即恢复)": "已在本頁停用(開啟開關即恢復)", "已新增「{name}」": "已新增「{name}」", "已新增订阅「{name}」,内核正在同步节点…": "已新增訂閱「{name}」,核心正在同步節點…", "已是最新,没有需要同步的变更": "已是最新,沒有需要同步的變更", "已有手动配置不受此次调整影响。你仍可添加 HTTP / SOCKS5 地址,并使用连通性测试。": "已有手動配置不受此次調整影響。你仍可新增 HTTP / SOCKS5 地址,並使用連通性測試。", "已有手动配置和 Clash Verge 端点引用不受影响。仍可添加 HTTP / SOCKS5 地址、同步 Clash Verge 端点并测试连通性;Clash Verge 由你自行安装和运行。": "既有手動設定和 Clash Verge 端點參照不受影響。仍可新增 HTTP / SOCKS5 位址、同步 Clash Verge 端點並測試連線;Clash Verge 由你自行安裝和執行。", "已有账号引用它,但内核还没把监听端口补建出来 —— 稍等片刻,或重新启用这条节点": "已有帳號引用它,但核心還沒把監聽埠補建出來 —— 稍等片刻,或重新啟用這條節點", "已有账号或服务线路引用它,监听端口尚未就绪;请稍等,或检查内核状态": "已有帳號或服務線路引用它,監聽埠尚未就緒;請稍等,或檢查核心狀態", "已禁用": "已停用", "已禁用「{name}」": "已停用「{name}」", "已禁用「{name}」,监听端口正在关闭(内核重建中)": "已停用「{name}」,監聽連接埠正在關閉(核心重建中)", "已禁用(未开监听端口)": "已停用(未開監聽連接埠)", "已移除的订阅": "已移除的訂閱", "已识别 {n} 条 · 已勾选 {selected} 条": "已辨識 {n} 條 · 已勾選 {selected} 條", "已识别 {n} 条代理,跳过 {duplicates} 条重复地址": "已辨識 {n} 條代理,略過 {duplicates} 條重複位址", "已识别订阅链接": "已識別訂閱連結", "已选择「{name}」,保存后导入": "已選擇「{name}」,儲存後匯入", "已配置认证": "已設定驗證", "当前客户端不支持手动导入内核,请更新或刷新页面": "目前用戶端不支援手動匯入核心,請更新或重新整理頁面", "当前没有正在进行的下载": "當前沒有正在進行的下載", "当前环境不支持代理池(桥接方法缺失)": "當前環境不支援代理池(橋接方法缺失)", "当前环境不支持代理测试(桥接方法缺失)": "當前環境不支援代理測試(橋接方法缺失)", "当前环境不支持代理设置(桥接方法缺失)": "目前環境不支援代理設定(橋接方法缺失)", "当前环境不支持同步(桥接方法缺失)": "當前環境不支援同步(橋接方法缺失)", "当前环境不支持启停(桥接方法缺失)": "當前環境不支援啟停(橋接方法缺失)", "当前环境不支持订阅(桥接方法缺失)": "當前環境不支援訂閱(橋接方法缺失)", "当前环境不支持选择文件夹,直接填写绝对路径即可": "當前環境不支援選擇資料夾,直接填寫絕對路徑即可", "当前线路不可用:{error};重新选一条或切回直连": "當前線路不可用:{error};重新選一條或切回直連", "我知道了": "我知道了", "所属订阅已删除,这条节点不会再分配端口 —— 可以删除它": "所屬訂閱已刪除,這條節點不會再分配連接埠 —— 可以刪除它", "手动下载官方内核": "手動下載官方核心", "手动代理与 Clash Verge 同步仍然保留": "手動代理與 Clash Verge 同步仍然保留", "手动代理仍然保留": "手動代理仍然保留", "手动填写的地址与端口": "手動填寫的地址與連接埠", "手动导入内核": "手動匯入核心", "打开文件夹选择框失败:{reason}": "開啟資料夾選擇框失敗:{reason}", "批量删除": "批次刪除", "批量删除代理": "批次刪除代理", "批量测试": "批次測試", "批量测试完成:{ok} 个可用、{failed} 个失败(共 {total} 个)": "批次測試完成:{ok} 個可用、{failed} 個失敗(共 {total} 個)", "批量测试完成:{ok} 个可用(共 {total} 个)": "批次測試完成:{ok} 個可用(共 {total} 個)", "批量测试({n})": "批次測試({n})", "批量添加": "批次新增", "批量添加响应异常,请刷新代理列表确认后再试": "批次新增回應異常,請重新整理代理清單確認後再試", "批量添加完成:新增 {added} 条,重复 {duplicates} 条,失败 {failed} 条": "批次新增完成:新增 {added} 條,重複 {duplicates} 條,失敗 {failed} 條", "批量添加({n})": "批次新增({n})", "按协议筛选": "按協議篩選", "按提供方筛选": "按提供方篩選", "按来源筛选": "按來源篩選", "按需下载(约 20-40MB)": "按需下載(約 20-40MB)", "按需下载(约 20-40MB),只在启用订阅功能时需要": "按需下載(約 20-40MB),只在啟用訂閱功能時需要", "控制端口 {port} · {n} 个节点监听器": "控制連接埠 {port} · {n} 個節點監聽器", "搜索代理": "搜尋代理", "搜索名称 / 地址 / 端口": "搜尋名稱 / 地址 / 連接埠", "搜索节点": "搜尋節點", "支持官方压缩包和解压后的内核二进制;只接受当前版本,SHA-256 校验不通过时不会替换现有内核。": "支援官方壓縮檔和解壓後的核心二進位檔;只接受目前版本,SHA-256 驗證失敗時不會替換現有核心。", "支持手动地址与 Clash Verge 端点同步,不接管代理服务的安装与运行。": "支援手動位址與 Clash Verge 端點同步,不接管代理服務的安裝與執行。", "文件或目录路径": "檔案或目錄路徑", "文件读取失败": "檔案讀取失敗", "新增代理": "新增代理", "新增出口、编辑地址与订阅管理在桌面端完成;手机端做启停与连通性测试。": "新增出口、編輯地址與訂閱管理在桌面版完成;手機端做啟停與連通性測試。", "新增方式": "新增方式", "新增订阅": "新增訂閱", "新解析的代理默认使用非直连": "新解析的代理預設使用非直連", "显示 {n} / 共 {total} 个出口": "顯示 {n} / 共 {total} 個出口", "暂未使用": "暫未使用", "更新中…": "更新中…", "更新出网线路已保存,正在准备监听端口": "更新出網線路已儲存,正在準備監聽埠", "替换代理内核": "替換代理核心", "最近检测": "最近檢測", "有 {n} 个账号正在使用它({names})—— 删除后这些账号会回退直连。": "有 {n} 個帳號正在使用它({names})—— 刪除後這些帳號會回退直連。", "有 {n} 个账号正在使用它({names})—— 删除后需重新设置这些账号的代理,不会自动直连。": "有 {n} 個帳號正在使用它({names})—— 刪除後需重新設定這些帳號的代理,不會自動直接連線。", "有 {n} 个账号正在使用它,删除后这些账号会回退直连。": "有 {n} 個帳號正在使用它,刪除後這些帳號會回退直連。", "有 {n} 个账号正在使用它,删除后需重新设置这些账号的代理,不会自动直连。": "有 {n} 個帳號正在使用它,刪除後需重新設定這些帳號的代理,不會自動直接連線。", "未同步": "未同步", "未检测": "未檢測", "未检测到 Clash Verge:{reason}": "未檢測到 Clash Verge:{reason}", "未测试": "未測試", "未知错误": "未知錯誤", "未选择文件": "未選擇檔案", "本地 YAML 文件": "本地 YAML 檔案", "本地文件": "本地檔案", "本地文件不会自动更新:要更新节点,重新选择文件后保存;不重选则内容保持不变。": "本地檔案不會自動更新:要更新節點,重新選擇檔案後儲存;不重選則內容保持不變。", "本地文件订阅无需更新(要换内容请编辑后重新选择文件)": "本地檔案訂閱無需更新(要換內容請編輯後重新選擇檔案)", "本地文件订阅的内容在导入时固定:节点会由内核起成本地监听器并镜像进代理池,节点数稍等几秒由轮询刷新。": "本地檔案訂閱的內容在匯入時固定:節點會由核心起成本地監聽器並映象進代理池,節點數稍等幾秒由輪詢重新整理。", "本机没有读到 Clash Verge 配置": "本機沒有讀到 Clash Verge 配置", "本页可编辑、可删除": "本頁可編輯、可刪除", "来自 Clash Verge 同步(名称、端口跟随 Clash),请到 Clash Verge 中修改;启用可在本页关闭": "來自 Clash Verge 同步(名稱、連接埠跟隨 Clash),請到 Clash Verge 中修改;啟用可在本頁關閉", "正在下载内核": "正在下載核心", "正在停止…": "正在停止…", "正在安装内核…": "正在安裝核心…", "正在导入…": "正在匯入…", "正在开始…": "正在開始…", "正在校验内核…": "正在驗證核心…", "正在读取并上传文件…": "正在讀取並上傳檔案…", "正在连接 GitHub…": "正在連線 GitHub…", "正常": "正常", "此代理用于{services};删除后这些线路将不可用,不会自动回退直连。": "此代理用於{services};刪除後這些線路將無法使用,不會自動回退直連。", "此代理用于软件 / 插件更新;删除后这些线路将不可用,不会自动回退直连。": "此代理用於軟體 / 外掛更新;刪除後這些線路將不可用,不會自動回退直連。", "每次最多添加 {n} 条代理": "每次最多新增 {n} 條代理", "每行一条,解析后可修改名称、设置非直连并测试,最后保存勾选的代理。": "每行一條,解析後可修改名稱、設定非直連並測試,最後儲存勾選的代理。", "没有匹配「{kw}」的出口": "沒有匹配「{kw}」的出口", "没有匹配当前筛选的出口": "沒有匹配當前篩選的出口", "没有可全选的代理": "沒有可全選的代理", "没有可删除的条目": "沒有可刪除的條目", "没能同步:{reason}": "沒能同步:{reason}", "测试中 {done}/{total}": "測試中 {done}/{total}", "测试失败:{reason}": "測試失敗:{reason}", "测试目标网址": "測試目標網址", "测试结果没能记下:{reason}": "測試結果沒能記下:{reason}", "测试网址要以 http:// 或 https:// 开头": "測試網址要以 http:// 或 https:// 開頭", "测试设置": "測試設定", "添加一个 HTTP 或 SOCKS5 地址,之后可以在账号或服务线路中选择使用。": "新增一個 HTTP 或 SOCKS5 地址,之後可以在帳號或服務線路中選擇使用。", "添加单个": "新增單筆", "添加手动 HTTP / SOCKS5 地址,或同步 Clash Verge 的端点,供账号与服务线路使用。": "新增手動 HTTP / SOCKS5 位址,或同步 Clash Verge 的端點,供帳號與服務線路使用。", "添加第一个代理": "新增第一個代理", "清空已识别": "清空已辨識", "清空筛选": "清空篩選", "确定删除「{name}」?{used}": "確定刪除「{name}」?{used}", "确定删除「{name}」?它在代理池里的节点会一并移除,引用这些节点的账号会回退直连。": "確定刪除「{name}」?它在代理池裡的節點會一併移除,引用這些節點的帳號會回退直連。", "确定删除「{name}」?": "確定刪除「{name}」?", "确定删除已下载的内核{version}?内核文件与端口映射会被移除,订阅节点会失去监听端口(地址列显示「端口准备中」),引用它们的账号会暂时回退直连;订阅本身保留,重新下载内核后会重新分配端口。": "確定刪除已下載的核心{version}?核心檔案與連接埠對應會被移除,訂閱節點會失去監聽埠(位址欄顯示「連接埠準備中」),引用它們的帳號會暫時回退直連;訂閱本身保留,重新下載核心後會重新分配連接埠。", "确定删除选中的 {n} 个代理?": "確定刪除選中的 {n} 個代理?", "禁用后本端不再用它(引用它的账号回退直连),并会关掉它的本地监听端口": "停用後本端不再用它(引用它的帳號回退直連),並會關掉它的本地監聽連接埠", "禁用后本端不再用它(引用它的账号回退直连);端口在 Clash Verge 侧,不受影响": "停用後本端不再用它(引用它的帳號回退直連);連接埠在 Clash Verge 側,不受影響", "立即更新": "立即更新", "端口范围必须是 1-65535 的整数": "連接埠範圍必須是 1-65535 的整數", "第 {line} 行:{error}": "第 {line} 行:{error}", "类型": "型別", "粘贴代理列表后点击「解析」": "貼上代理清單後點選「解析」", "编辑代理": "編輯代理", "编辑订阅": "編輯訂閱", "网关已切换,请重新打开代理弹窗": "閘道已切換,請重新開啟代理視窗", "网关未返回内核导入任务,请刷新状态后确认": "閘道未傳回核心匯入工作,請重新整理狀態後確認", "网关机器上的文件或目录": "閘道機器上的檔案或目錄", "节点": "節點", "节点由内核起成本地监听器,镜像进代理池": "節點由核心起成本地監聽器,映象進代理池", "节点端口范围 {base}–{end}": "節點連接埠範圍 {base}–{end}", "节点端口范围(结束)": "節點連接埠範圍(結束)", "节点端口范围(起始)": "節點連接埠範圍(起始)", "解析": "解析", "订阅": "訂閱", "订阅与 Clash 的出口自动镜像进来": "訂閱與 Clash 的出口自動映象進來", "订阅内容由内核定时刷新(每 24 小时);节点数与同步状态在保存后由轮询刷新,稍等几秒。": "訂閱內容由核心定時重新整理(每 24 小時);節點數與同步狀態在儲存後由輪詢重新整理,稍等幾秒。", "订阅导入与更新、订阅节点管理,以及代理内核的下载、安装和运行。": "訂閱匯入與更新、訂閱節點管理,以及代理核心的下載、安裝和執行。", "订阅来源": "訂閱來源", "订阅管理": "訂閱管理", "订阅管理({n})": "訂閱管理({n})", "订阅节点": "訂閱節點", "订阅节点会在本机各占一个监听端口,从该范围里挑空闲的分配;节点多的大订阅把默认范围({base}-{end})用尽时会报「没有可用的节点端口」,这时把范围调大再重启内核。已分配出去的端口不会因改范围而失效。": "訂閱節點會在本機各佔一個監聽連接埠,從該範圍裡挑空閒的分配;節點多的大型訂閱把預設範圍({base}-{end})用盡時會報「沒有可用的節點連接埠」,這時把範圍調大再重啟核心。已分配出去的連接埠不會因改範圍而失效。", "订阅里的节点会自动同步进下方代理池,账号即可引用。": "訂閱裡的節點會自動同步進下方代理池,帳號即可引用。", "订阅里的节点会自动同步进代理池,账号即可引用。": "訂閱裡的節點會自動同步進代理池,帳號即可引用。", "订阅里的节点会被内核起成本地监听器,镜像到代理池(账号按 id 引用,与本页其它出口同一用法)。内核只在用到订阅时按需下载(约 20-40MB),不随安装包分发。": "訂閱裡的節點會被核心起成本地監聽器,映象到代理池(帳號按 id 引用,與本頁其它出口同一用法)。核心只在用到訂閱時按需下載(約 20-40MB),不隨安裝包分發。", "订阅链接": "訂閱連結", "识别中…": "識別中…", "该节点所属订阅已删除,不会再被同步更新,可手动删除清理": "該節點所屬訂閱已刪除,不會再被同步更新,可手動刪除清理", "该节点来自订阅(名称、端口跟随订阅与内核),请在「订阅管理」里修改;启用可在本页关闭": "該節點來自訂閱(名稱、連接埠跟隨訂閱與核心),請在「訂閱管理」裡修改;啟用可在本頁關閉", "请下载与网关平台一致的官方内核,不是浏览器所在设备的平台。": "請下載與閘道平台一致的官方核心,而不是瀏覽器所在裝置的平台。", "请填写代理名称": "請填寫代理名稱", "请填写已有代理服务的 HTTP / SOCKS5 地址,或自行运行 Clash Verge 后同步端点,并重新为相关账号和服务线路选择代理。": "請填寫既有代理服務的 HTTP / SOCKS5 位址,或自行執行 Clash Verge 後同步端點,並重新為相關帳號和服務線路選擇代理。", "请填写网关机器上的绝对文件或目录路径": "請填寫閘道機器上的檔案或目錄絕對路徑", "请改为填写已有代理服务的 HTTP / SOCKS5 地址,并重新为相关账号和服务线路选择代理。": "請改為填寫已有代理服務的 HTTP / SOCKS5 地址,並重新為相關帳號和服務線路選擇代理。", "请选择要导入的 YAML 文件": "請選擇要匯入的 YAML 檔案", "请选择要导入的内核文件": "請選擇要匯入的核心檔案", "读取失败:{reason}": "讀取失敗:{reason}", "起始端口不能大于结束端口": "起始連接埠不能大於結束連接埠", "跳过 {n} 个(Clash 同步)": "跳過 {n} 個(Clash 同步)", "跳过 {n} 个(同步只读条目)": "跳過 {n} 個(同步只讀條目)", "软件 / 插件更新": "軟體 / 外掛更新", "还没有代理。点右上角「+ 新增代理」手填一个,或在「订阅管理」里导入订阅节点、同步 Clash Verge 的出口。": "還沒有代理。點右上角「+ 新增代理」手填一個,或在「訂閱管理」裡匯入訂閱節點、同步 Clash Verge 的出口。", "还没有代理。点右上角「+ 新增代理」手填一个,或点「同步 Clash Verge」把 Clash 的出口导进来。": "還沒有代理。點右上角「+ 新增代理」手填一個,或點「同步 Clash Verge」把 Clash 的出口導進來。", "还没有出口。在桌面端「网络代理」页新增,或点上面同步 Clash。": "還沒有出口。在桌面版「網路代理」頁新增,或點上面同步 Clash。", "还没有订阅。点右上角「+ 新增订阅」粘贴订阅链接,或从图片识别二维码导入。": "還沒有訂閱。點右上角「+ 新增訂閱」貼上訂閱連結,或從圖片識別二維碼匯入。", "还没有订阅:粘贴订阅链接、导入本地 YAML 文件,或从图片识别二维码。": "還沒有訂閱:貼上訂閱連結、匯入本地 YAML 檔案,或從圖片識別二維碼。", "还没有订阅:粘贴订阅链接,或从图片识别二维码导入。": "還沒有訂閱:貼上訂閱連結,或從圖片識別二維碼匯入。", "还没有账号使用它(端口只在被账号引用时才分配 —— 在账号里选它并保存后,内核会自动开端口)": "還沒有帳號使用它(連接埠只在被帳號引用時才分配 —— 在帳號裡選它並儲存後,核心會自動開埠)", "还没有账号或服务线路使用它;在账号或更新设置中选中并保存后,内核会自动开端口": "還沒有帳號或服務線路使用它;在帳號或更新設定中選取並儲存後,核心會自動開埠", "这是网关机器上的安装目录,留空使用默认位置。导入会复制文件并建立版本目录,不删除原下载文件。": "這是閘道機器上的安裝目錄,留空使用預設位置。匯入會複製檔案並建立版本目錄,不會刪除原下載檔案。", "这条在 Clash Verge 里是停用的,本页启用不生效 —— 到 Clash Verge 里打开它": "這條在 Clash Verge 裡是停用的,本頁啟用不生效 —— 到 Clash Verge 裡開啟它", "这里只连接你提供的代理地址,不接管代理服务的安装与运行。": "這裡只連線你提供的代理地址,不接管代理服務的安裝與執行。", "连接成功": "連線成功", "连通性": "連通性", "连通性测试设置": "連通性測試設定", "选中的 {n} 条都是同步来的只读条目(Clash / 订阅),不能删除": "選中的 {n} 條都是同步來的只讀條目(Clash / 訂閱),不能刪除", "选中的 {n} 条都来自 Clash Verge 同步,不能删除(请到 Clash Verge 里删)": "選中的 {n} 條都來自 Clash Verge 同步,不能刪除(請到 Clash Verge 裡刪)", "选中的代理用于{services};删除后这些线路将不可用,不会自动回退直连。": "選取的代理用於{services};刪除後這些線路將無法使用,不會自動回退直連。", "选择 YAML 文件…": "選擇 YAML 檔案…", "选择内核文件…": "選擇核心檔案…", "选择目录…": "選擇目錄…", "选项来自「网络代理」页(Clash Verge 同步的出口在这里可用;订阅节点要等内核起来才有端口)。选「直连」时连不上会自动借 Clash 混合端口重试一次;选定某条线路后只走它。": "選項來自「網路代理」頁(Clash Verge 同步的出口在這裡可用;訂閱節點要等核心起來才有連接埠)。選「直連」時連不上會自動借 Clash 混合連接埠重試一次;選定某條線路後只走它。", "通过代理访问该网址,检查是否能收到 HTTP 响应。留空沿用网关默认值。": "通過代理存取該網址,檢查是否能收到 HTTP 響應。留空沿用閘道器預設值。", "部分测试结果没能记下:{reason}": "部分測試結果沒能記下:{reason}", "重启内核": "重啟核心", "重新选择文件…": "重新選擇檔案…", "镜像当前出口集合,名称与端口跟随 Clash": "映象當前出口集合,名稱與連接埠跟隨 Clash", "需要干净的出口?": "需要乾淨的出口?", "需要用户名和密码(可选)": "需要使用者名稱和密碼(可選)", "非直连": "非直連", "非直连代理": "非直連代理", "非直连会先经过网关所在设备的系统代理,再连接到此代理;系统代理不可用时不会改走直连。": "非直連會先經過閘道所在裝置的系統代理,再連線到此代理;系統代理無法使用時不會改走直接連線。", "首次购买使用优惠码 AGENT2API25 享 75 折。": "首次購買使用優惠碼 AGENT2API25 享 75 折。", "+ 新增代理": "+ 新增代理", "+ 新增订阅": "+ 新增訂閱", ",": ",", " 或 ": " 或 ", "Anthropic SDK 会自动携带版本头;手写 Messages 请求可使用 2023-06-01。/v1/models 收到该头或 x-api-key 时返回 Anthropic 列表形态。": "Anthropic SDK 會自動攜帶版本頭;手寫 Messages 請求可使用 2023-06-01。/v1/models 收到該頭或 x-api-key 時返回 Anthropic 列表形態。", "Anthropic 业务错误结构示例": "Anthropic 業務錯誤結構示例", "Anthropic 官方 SDK / Claude Code 使用的根地址:": "Anthropic 官方 SDK / Claude Code 使用的根地址:", "Anthropic 标准要求显式填写正整数。网关对缺失或无效值补 8192,但上游模型的实际预算仍可能更低。": "Anthropic 標準要求顯式填寫正整數。閘道器對缺失或無效值補 8192,但上游模型的實際預算仍可能更低。", "Antigravity 支持宽高比 1:1、2:3、3:2、3:4、4:3、4:5、5:4、9:16、16:9、21:9,尺寸会映射到原生 1K / 2K / 4K 档。请求最长边 ≤1792 为 1K,1793–3072 为 2K,3073–4096 为 4K;超过 4096 会被该提供商拒绝。": "Antigravity 支援寬高比 1:1、2:3、3:2、3:4、4:3、4:5、5:4、9:16、16:9、21:9,尺寸會對映到原生 1K / 2K / 4K 檔。請求最長邊 ≤1792 為 1K,1793–3072 為 2K,3073–4096 為 4K;超過 4096 會被該提供商拒絕。", "Antigravity 的 size=auto 生成使用 1:1、1K;参考图编辑使用 1K 且不强制正方形。模型版本可能有更严格的输出限制;宽高比需接近支持值,不能任意指定像素尺寸。": "Antigravity 的 size=auto 生成使用 1:1、1K;參考圖編輯使用 1K 且不強制正方形。模型版本可能有更嚴格的輸出限制;寬高比需接近支援值,不能任意指定畫素尺寸。", "Base URL 填进客户端的「API 地址 / Base URL」栏;对话协议按客户端支持的类型三选一(Chat Completions / Responses / Anthropic Messages),三者共用同一套模型与账号池,可随时切换;鉴权用「网关 Key」页里任一启用 Key。": "Base URL 填進客戶端的「API 地址 / Base URL」欄;對話協議按客戶端支援的型別三選一(Chat Completions / Responses / Anthropic Messages),三者共用同一套模型與帳號池,可隨時切換;鑑權用「閘道器 Key」頁裡任一啟用 Key。", "Chat 流式成功通常以 data: [DONE] 收尾。需要同时处理 delta.content、思考字段和 delta.tool_calls;工具参数可能跨多个增量拼接。": "Chat 流式成功通常以 data: [DONE] 收尾。需要同時處理 delta.content、思考欄位和 delta.tool_calls;工具引數可能跨多個增量拼接。", "Chat、Responses 和图片接口通常返回 error 对象,其中 message 是可读说明,type 是错误类别,code 与 upstream_code 按情况附带。Anthropic 业务错误使用 type=error 的信封;鉴权中间件、无效 JSON 或网关层错误也可能返回通用 error 形态。": "Chat、Responses 和圖片介面通常返回 error 物件,其中 message 是可讀說明,type 是錯誤類別,code 與 upstream_code 按情況附帶。Anthropic 業務錯誤使用 type=error 的信封;鑑權中介軟體、無效 JSON 或閘道器層錯誤也可能返回通用 error 形態。", "Claude Code / Anthropic SDK": "Claude Code / Anthropic SDK", "Claude Code / Anthropic SDK(token 计数:/v1/messages/count_tokens)": "Claude Code / Anthropic SDK(token 計數:/v1/messages/count_tokens)", "Claude Code / Anthropic SDK;模型与账号池和 OpenAI 入口共用。": "Claude Code / Anthropic SDK;模型與帳號池和 OpenAI 入口共用。", "Codex / 新版 OpenAI SDK;无状态转发,历史由客户端携带。": "Codex / 新版 OpenAI SDK;無狀態轉發,歷史由客戶端攜帶。", "Codex、新版 SDK": "Codex、新版 SDK", "GET /health 返回 status=ok 或 degraded。公网安全模式只返回简化探活信息;HTTP 200 或 status=ok 不代表所有提供商在线、账号有额度或图片模型可调用。": "GET /health 返回 status=ok 或 degraded。公網安全模式只返回簡化探活資訊;HTTP 200 或 status=ok 不代表所有提供商線上、帳號有額度或圖片模型可呼叫。", "GET /health、GET /v1/models 和网关临时图片下载不强制检查 Key。模型清单可在配 Key 前读取,但这不能证明 Key 正确;应以携带该 Key 的实际业务请求为准。": "GET /health、GET /v1/models 和閘道器臨時圖片下載不強制檢查 Key。模型清單可在配 Key 前讀取,但這不能證明 Key 正確;應以攜帶該 Key 的實際業務請求為準。", "HTTP(S) 参考图由网关服务器下载,不携带网关 Key 或提供商凭证。外链必须能被网关无额外请求头访问;本机、内网、带用户名密码或不安全重定向地址会被拒绝。受保护图片建议直接上传文件。": "HTTP(S) 參考圖由閘道器伺服器下載,不攜帶閘道器 Key 或提供商憑證。外鏈必須能被閘道器無額外請求頭存取;本機、內網、帶使用者名稱密碼或不安全重定向地址會被拒絕。受保護圖片建議直接上傳檔案。", "JSON 图片引用编辑请求": "JSON 圖片引用編輯請求", "JSON 图片生成请求": "JSON 圖片生成請求", "JSON 的 images 是对象数组,每项只能包含 image_url。接受完整 HTTP(S) URL、data:image/...;base64,...,或先前响应返回的完整网关临时图片链接;不接受裸 base64、相对路径、file_id 或本地文件路径。": "JSON 的 images 是物件陣列,每項只能包含 image_url。接受完整 HTTP(S) URL、data:image/...;base64,...,或先前響應返回的完整閘道器臨時圖片連結;不接受裸 base64、相對路徑、file_id 或本地檔案路徑。", "JSON 请求使用 application/json。图片编辑上传文件时使用 multipart/form-data;curl -F 会自动生成 boundary,不要手动覆盖此请求头。": "JSON 請求使用 application/json。圖片編輯上傳檔案時使用 multipart/form-data;curl -F 會自動生成 boundary,不要手動覆蓋此請求頭。", "Key 缺失、无效、停用,或上游认证失败。网关未收到 Key 时返回 model_api_key_required,无效 Key 返回 invalid_api_key;请检查请求头与「网关 Key」页。": "Key 缺失、無效、停用,或上游驗證失敗。閘道未收到 Key 時回傳 model_api_key_required,無效 Key 回傳 invalid_api_key;請檢查請求標頭與「閘道 Key」頁。", "Key 缺失、无效、停用,或上游认证失败。网关鉴权失败通常为 invalid_api_key;检查请求头与「网关 Key」页,而不是仅重拉模型列表。": "Key 缺失、無效、停用,或上游認證失敗。閘道器鑑權失敗通常為 invalid_api_key;檢查請求頭與「閘道器 Key」頁,而不是僅重拉模型列表。", "LLM 请求": "LLM 請求", "Messages 响应结构": "Messages 響應結構", "Messages 请求": "Messages 請求", "ModelScope 不支持 style、mask 与 input_fidelity;quality 仅接受省略、auto 或 standard,background 仅接受省略、auto 或 opaque,moderation 仅接受省略或 auto。风格与修改目标请写入 prompt。": "ModelScope 不支援 style、mask 與 input_fidelity;quality 僅接受省略、auto 或 standard,background 僅接受省略、auto 或 opaque,moderation 僅接受省略或 auto。風格與修改目標請寫入 prompt。", "ModelScope 使用官方异步任务接口,创建后只查询同一任务,不会为了等待结果重新提交。单次 n=1;size 可省略、设为 auto,或指定边长 64–2048 的 WIDTHxHEIGHT,具体型号可能进一步限制。": "ModelScope 使用官方非同步任務介面,建立後只查詢同一任務,不會為了等待結果重新提交。單次 n=1;size 可省略、設為 auto,或指定邊長 64–2048 的 WIDTHxHEIGHT,具體型號可能進一步限制。", "OpenAI Python SDK 图片示例": "OpenAI Python SDK 圖片示例", "OpenAI SDK 的 base_url 填「接口地址」章节中以 /v1 结尾的 Base URL,不要填完整的 /chat/completions。Anthropic 官方 SDK 与 Claude Code 的 ANTHROPIC_BASE_URL 填网关根地址,不带 /v1;它们会自行追加 /v1/messages。其他客户端是否自动追加 /v1,以其地址栏说明为准。": "OpenAI SDK 的 base_url 填「介面地址」章節中以 /v1 結尾的 Base URL,不要填完整的 /chat/completions。Anthropic 官方 SDK 與 Claude Code 的 ANTHROPIC_BASE_URL 填閘道根位址,不帶 /v1;它們會自行附加 /v1/messages。其他用戶端是否自動附加 /v1,以其位址欄說明為準。", "OpenAI SDK 的 base_url 填上方以 /v1 结尾的 Base URL,不要填完整的 /chat/completions。Anthropic 官方 SDK 与 Claude Code 的 ANTHROPIC_BASE_URL 填网关根地址,不带 /v1;它们会自行追加 /v1/messages。其他客户端是否自动追加 /v1,以其地址栏说明为准。": "OpenAI SDK 的 base_url 填上方以 /v1 結尾的 Base URL,不要填完整的 /chat/completions。Anthropic 官方 SDK 與 Claude Code 的 ANTHROPIC_BASE_URL 填閘道器根地址,不帶 /v1;它們會自行追加 /v1/messages。其他客戶端是否自動追加 /v1,以其位址列說明為準。", "OpenAI 兼容客户端使用此地址;Anthropic 官方 SDK 使用下方说明中的网关根地址。": "OpenAI 相容客戶端使用此地址;Anthropic 官方 SDK 使用下方說明中的閘道器根地址。", "OpenAI 新协议(Codex、新版 SDK)": "OpenAI 新協議(Codex、新版 SDK)", "Python:生成、编辑并保存图片": "Python:生成、編輯並儲存圖片", "Responses 使用 function_call / function_call_output 配对,Anthropic 使用 tool_use / tool_result 配对。协议转换会处理这些格式,但不会替客户端执行自定义函数。上游原生搜索等服务端工具是否可用取决于提供商,不能当成网关统一能力。": "Responses 使用 function_call / function_call_output 配對,Anthropic 使用 tool_use / tool_result 配對。協議轉換會處理這些格式,但不會替客戶端執行自定義函式。上游原生搜尋等服務端工具是否可用取決於提供商,不能當成閘道器統一能力。", "Responses 响应结构": "Responses 響應結構", "Responses 请求": "Responses 請求", "SDK 示例使用的环境变量": "SDK 示例使用的環境變數", "Token 估算响应": "Token 估算響應", "Token 数量估算": "Token 數量估算", "Token 自动续期": "Token 自動續期", "WorkBuddy 走官方图片接口:size 省略或设为 auto 时按 1024x1024 请求;该通道不接受 quality、style、background 与 moderation,请把风格与质量要求写进 prompt。参考图以 data URL 内联在 JSON 请求里发送(不是 multipart),模型 id 由上游目录下发,换版本时以 /v1/models 为准。": "WorkBuddy 走官方圖片介面:size 省略或設為 auto 時按 1024x1024 請求;該通道不接受 quality、style、background 與 moderation,請把風格與質量要求寫進 prompt。參考圖以 data URL 內聯在 JSON 請求裡傳送(不是 multipart),模型 id 由上游目錄下發,換版本時以 /v1/models 為準。", "base64 图片响应结构": "base64 圖片響應結構", "chat 用于三种对话入口;image 用于 /v1/images/generations 和 /v1/images/edits。不要把图片模型提交给对话入口。": "chat 用於三種對話入口;image 用於 /v1/images/generations 和 /v1/images/edits。不要把圖片模型提交給對話入口。", "count_tokens 在本地估算,不调用上游 tokenizer;返回 input_tokens 和 estimated=true。数值用于上下文预算,不用于精确计费,尤其不应当作图片的真实 Token 用量。": "count_tokens 在本地估算,不呼叫上游 tokenizer;返回 input_tokens 和 estimated=true。數值用於上下文預算,不用於精確計費,尤其不應當作圖片的真實 Token 用量。", "curl -F 自动生成 multipart boundary。不要额外设置 Content-Type: application/json 或手写无 boundary 的 multipart/form-data;prompt 使用 --form-string 可避免特殊字符被当作文件上传。": "curl -F 自動生成 multipart boundary。不要額外設定 Content-Type: application/json 或手寫無 boundary 的 multipart/form-data;prompt 使用 --form-string 可避免特殊字元被當作檔案上傳。", "curl 命令": "curl 命令", "response_format=b64_json 时返回不带 data URL 前缀的标准 base64。解码为二进制后保存;网页展示时自行加对应 MIME 类型前缀。": "response_format=b64_json 時返回不帶 data URL 字首的標準 base64。解碼為二進位制後儲存;網頁展示時自行加對應 MIME 型別字首。", "response_format=url 不保证永久地址;网关临时链接与 AI 助手会话中的图片存储是两套机制,不能混用接口或有效期。": "response_format=url 不保證永久地址;閘道器臨時連結與 AI 助手會話中的圖片儲存是兩套機制,不能混用介面或有效期。", "response_format=url 时返回。可能是提供商签名链接,也可能是网关临时下载链接;应直接使用返回值,不要自行拼下载 id。": "response_format=url 時返回。可能是提供商簽名連結,也可能是閘道器臨時下載連結;應直接使用返回值,不要自行拼下載 id。", "stream 默认 false;true 返回 Anthropic 事件流。stop_sequences 映射为停止序列,是否支持取决于上游。": "stream 預設 false;true 返回 Anthropic 事件流。stop_sequences 對映為停止序列,是否支援取決於上游。", "usage 的 prompt_tokens、completion_tokens、total_tokens 表示用量,不等于统一货币价格。上游未提供时可能缺失或为 0。": "usage 的 prompt_tokens、completion_tokens、total_tokens 表示用量,不等於統一貨幣價格。上游未提供時可能缺失或為 0。", "✓ 支持 · ✗ 不支持 · — 无此概念 · ? 未声明": "✓ 支援 · ✗ 不支援 · — 無此概念 · ? 未聲明", "。一把启用的 Key 都没有时不鉴权(默认网关只监听 127.0.0.1;在设置页开启「局域网访问」后监听所有网卡,鉴权与安全闸门随之启用)。": "。一把啟用的 Key 都沒有時不鑑權(預設閘道器只監聽 127.0.0.1;在設定頁開啟「區域網路存取」後監聽所有網路卡,鑑權與安全閘門隨之啟用)。", "。用「网关 Key」页里任一启用的 Key;一把都没有时不鉴权。": "。用「閘道器 Key」頁裡任一啟用的 Key;一把都沒有時不鑑權。", "三种对话协议的流式错误需要检查事件内容与正常结束标记;HTTP 200 本身不足以证明成功。图片接口仅返回非流式 JSON。": "三種對話協議的流式錯誤需要檢查事件內容與正常結束標記;HTTP 200 本身不足以證明成功。圖片介面僅返回非流式 JSON。", "上一章": "上一章", "上传一张或多张参考图,并用提示词描述保留内容与修改目标。": "上傳一張或多張參考圖,並用提示詞描述保留內容與修改目標。", "上传一张本地参考图": "上傳一張本地參考圖", "上传多张参考图": "上傳多張參考圖", "上传本地文件推荐 multipart/form-data;已经有图片 URL 或 base64 时可发送 application/json。除参考图字段外,参数与图片生成相同。": "上傳本地檔案推薦 multipart/form-data;已經有圖片 URL 或 base64 時可傳送 application/json。除參考圖欄位外,引數與圖片生成相同。", "下一章": "下一章", "下表是网关接受的参数范围,不是所有提供商都支持的范围。生成与编辑共用这些字段,具体上游可能进一步拒绝数量、质量、风格、背景或尺寸。": "下表是閘道器接受的引數範圍,不是所有提供商都支援的範圍。生成與編輯共用這些欄位,具體上游可能進一步拒絕數量、質量、風格、背景或尺寸。", "下载并保存网关临时图片": "下載並儲存閘道器臨時圖片", "下载返回原始图片二进制及 image/png、image/jpeg 或 image/webp Content-Type,不是 JSON。不存在或过期返回 404,响应使用 private, no-store 与 nosniff。": "下載返回原始圖片二進位制及 image/png、image/jpeg 或 image/webp Content-Type,不是 JSON。不存在或過期返回 404,響應使用 private, no-store 與 nosniff。", "不受鉴权限制,配 Key 前就能拉": "不受鑑權限制,配 Key 前就能拉", "不强制鉴权;仅用于确认网关可访问,不保证模型或额度可用。": "不強制鑑權;僅用於確認閘道器可存取,不保證模型或額度可用。", "不强制鉴权;携带有效 Key 可查看该 Key 获准使用的模型。": "不強制鑑權;攜帶有效 Key 可檢視該 Key 獲准使用的模型。", "不携带 Anthropic 相关头时,模型接口返回 OpenAI 风格的 object=list、data 数组和 meta 摘要;携带 anthropic-version 或 x-api-key 时,返回 data、has_more、first_id、last_id,并保留能力扩展字段。": "不攜帶 Anthropic 相關頭時,模型介面返回 OpenAI 風格的 object=list、data 陣列和 meta 摘要;攜帶 anthropic-version 或 x-api-key 時,返回 data、has_more、first_id、last_id,並保留能力擴充套件欄位。", "不支持依赖服务端状态的 previous_response_id、conversation、托管提示词 prompt,以及 background=true;请由客户端保存并回传历史,不要调用未实现的 Responses 查询或删除接口。": "不支援依賴服務端狀態的 previous_response_id、conversation、託管提示詞 prompt,以及 background=true;請由客戶端儲存並回傳歷史,不要呼叫未實現的 Responses 查詢或刪除介面。", "不要把 base64 图片塞回对话文本或日志,也不要将“请求超时”理解为“没有扣费”。如需连续编辑,保存结果文件后再作为下一次 image 上传。": "不要把 base64 圖片塞回對話文本或日誌,也不要將“請求超時”理解為“沒有扣費”。如需連續編輯,儲存結果檔案後再作為下一次 image 上傳。", "业务请求的 model 值。owned_by 表示目录条目的归属,不保证每次请求都由该提供商承载;同名模型与映射可能有多个路由。": "業務請求的 model 值。owned_by 表示目錄條目的歸屬,不保證每次請求都由該提供商承載;同名模型與對映可能有多個路由。", "临时图片下载": "臨時圖片下載", "也可使用 x-api-key: YOUR_GATEWAY_KEY,常用于 Anthropic 客户端。两种鉴权头任选一种即可,不要填提供商账号令牌或面板登录令牌。": "也可使用 x-api-key: YOUR_GATEWAY_KEY,常用於 Anthropic 客戶端。兩種鑑權頭任選一種即可,不要填提供商帳號權杖或面板登入權杖。", "仅可省略或设为 stream=false、partial_images=0。当前不支持图片事件流、渐进图片或流式部分结果。未知参数会被拒绝,不会静默忽略。": "僅可省略或設為 stream=false、partial_images=0。當前不支援圖片事件流、漸進圖片或流式部分結果。未知引數會被拒絕,不會靜默忽略。", "仅在上游返回修改后的提示词时保留,不保证每个模型都有。": "僅在上游返回修改後的提示詞時保留,不保證每個模型都有。", "仅在显式指定 output_format=jpeg 时支持,网关按 JPEG 质量参数编码。PNG、WebP 当前不支持此参数。": "僅在顯式指定 output_format=jpeg 時支援,閘道器按 JPEG 質量引數編碼。PNG、WebP 當前不支援此引數。", "仅用于响应返回的网关临时链接;{id} 必须替换为实际下载令牌。": "僅用於響應返回的閘道器臨時連結;{id} 必須替換為實際下載權杖。", "仍从当前网关目录选择对话模型,不要求模型名称一定以 claude 开头。具体能力以实际承载模型为准。": "仍從當前閘道器目錄選擇對話模型,不要求模型名稱一定以 claude 開頭。具體能力以實際承載模型為準。", "估算输入 Token 数量": "估算輸入 Token 數量", "使用 supports_image_editing=true 的图片模型。该接口是参考图编辑、重绘或合成,不是精确遮罩修补;当前不支持 mask 与 input_fidelity,也不支持 file_id。": "使用 supports_image_editing=true 的圖片模型。該介面是參考圖編輯、重繪或合成,不是精確遮罩修補;當前不支援 mask 與 input_fidelity,也不支援 file_id。", "使用与 Chat 相同的对话模型 id 和 Key 授权规则。": "使用與 Chat 相同的對話模型 id 和 Key 授權規則。", "使用同一客户端生成与编辑,并将返回的 base64 保存为图片文件。": "使用同一客戶端生成與編輯,並將返回的 base64 儲存為圖片檔案。", "使用支持工具调用的模型。函数声明、调用结果配对与多模态请求示例见「看图与工具调用」章节。": "使用支援工具呼叫的模型。函式宣告、呼叫結果配對與多模態請求範例見「看圖與工具呼叫」章節。", "使用支持工具调用的模型。函数声明、调用结果配对与多模态请求示例见下一节。": "使用支援工具呼叫的模型。函式宣告、呼叫結果配對與多模態請求示例見下一節。", "使用说明与兼容边界": "使用說明與相容性界線", "健康检查": "健康檢查", "先前网关返回的 /v1/images/files/{id} 完整链接可在未过期时作为 JSON 参考图。不要把 AI 助手内部的 assistant-image:ID 当成对外接口图片 URL。": "先前閘道器返回的 /v1/images/files/{id} 完整連結可在未過期時作為 JSON 參考圖。不要把 AI 助手內部的 assistant-image:ID 當成對外介面圖片 URL。", "先确定网关地址、Key 和模型,再选择客户端支持的协议。": "先確定閘道器地址、Key 和模型,再選擇客戶端支援的協議。", "兼容 Anthropic 消息块与 SSE 事件,支持本地 Token 预算估算。": "相容 Anthropic 訊息塊與 SSE 事件,支援本地 Token 預算估算。", "兼容 Responses 请求与事件格式,适合 Codex 等客户端;不是服务端会话存储。": "相容 Responses 請求與事件格式,適合 Codex 等客戶端;不是服務端會話儲存。", "内置 AI 助手已有 generate_images 与 edit_images 工具,可在助手设置中启用并按确认模式执行。外部 API 客户端不会自动获得这些工具;需要由客户端声明并实际调用图片接口。": "內建 AI 助手已有 generate_images 與 edit_images 工具,可在助手設定中啟用並按確認模式執行。外部 API 客戶端不會自動獲得這些工具;需要由客戶端宣告並實際呼叫圖片介面。", "函数工具使用 Responses 的声明格式;工具结果以 function_call_output 携带相同 call_id。实际工具能力仍依赖模型与提供商。": "函式工具使用 Responses 的宣告格式;工具結果以 function_call_output 攜帶相同 call_id。實際工具能力仍依賴模型與提供商。", "函数工具声明包含 name、description、input_schema;结果在后续 user 消息的 tool_result 块中携带对应 tool_use_id。": "函式工具宣告包含 name、description、input_schema;結果在後續 user 訊息的 tool_result 塊中攜帶對應 tool_use_id。", "分别可能表示请求中断或请求过大。参考图过大时需缩小图片或减少数量,原样重试不会解决;中断的图片任务可能已经消耗额度。": "分別可能表示請求中斷或請求過大。參考圖過大時需縮小圖片或減少數量,原樣重試不會解決;中斷的圖片任務可能已經消耗額度。", "分别控制输出上限与是否流式。stream 默认 false;true 返回 Responses 命名事件。": "分別控制輸出上限與是否流式。stream 預設 false;true 返回 Responses 命名事件。", "分别表示工具调用与思考能力。是否生效仍取决于实际承载模型、提供商和相关设置。": "分別表示工具呼叫與思考能力。是否生效仍取決於實際承載模型、提供商和相關設定。", "分别请求思考档位与结构化输出;能力和可用取值依赖模型。不要因字段被接受就假定上游已经执行。": "分別請求思考檔位與結構化輸出;能力和可用取值依賴模型。不要因欄位被接受就假定上游已經執行。", "协议兼容不保证工具、思考、结构化输出、透明背景或每个尺寸都被所有提供商支持。先查看当前模型能力和插件版本,再核对请求日志的承载提供商与错误摘要。": "協議相容不保證工具、思考、結構化輸出、透明背景或每個尺寸都被所有提供商支援。先檢視當前模型能力和外掛版本,再核對請求日誌的承載提供商與錯誤摘要。", "单图可用 image=@reference.png,多图重复提交 image[]。也兼容 images、images[] 与 image[0] 这类数字索引字段;普通参数不能重复提交。": "單圖可用 image=@reference.png,多圖重複提交 image[]。也相容 images、images[] 與 image[0] 這類數字索引欄位;普通引數不能重複提交。", "单轮可以是字符串;多轮使用消息与工具项数组,客户端应携带必要历史。文本块使用 input_text,图片块使用 input_image。": "單輪可以是字串;多輪使用訊息與工具項陣列,客戶端應攜帶必要歷史。文本塊使用 input_text,圖片塊使用 input_image。", "参考图编辑": "參考圖編輯", "参考图编辑;支持 multipart 文件上传或 JSON 图片引用。": "參考圖編輯;支援 multipart 檔案上傳或 JSON 圖片引用。", "只支持这三种可解码图片格式,校验实际文件内容而不是仅看扩展名;单张最多 10 MiB,边长最多 8192。": "只支援這三種可解碼圖片格式,校驗實際檔案內容而不是僅看副檔名;單張最多 10 MiB,邊長最多 8192。", "可用值为 auto、standard、hd、low、medium、high、xhigh、max。小浣熊与 Antigravity 仅接受省略、auto 或 standard;其他值是否有效取决于 Loomy 的具体模型。": "可用值為 auto、standard、hd、low、medium、high、xhigh、max。小浣熊與 Antigravity 僅接受省略、auto 或 standard;其他值是否有效取決於 Loomy 的具體模型。", "可省略,或使用 auto、WIDTHxHEIGHT,例如 1024x1024。网关校验边长 1–8192,提供商可能进一步限制宽高比与分辨率,不保证精确像素输出。": "可省略,或使用 auto、WIDTHxHEIGHT,例如 1024x1024。閘道器校驗邊長 1–8192,提供商可能進一步限制寬高比與解析度,不保證精確畫素輸出。", "可能是网关内部错误、上游异常、插件未接入、暂无可用账号、图片下载或编码失败。": "可能是閘道內部錯誤、上游異常、外掛未接入、暫無可用帳號、圖片下載或編碼失敗。", "可能是网关内部错误、上游异常、插件未接入、暂无可用账号、图片下载或编码失败。公网模式的 api_key_not_configured 表示必须先配置网关 Key。": "可能是閘道器內部錯誤、上游異常、外掛未接入、暫無可用帳號、圖片下載或編碼失敗。公網模式的 api_key_not_configured 表示必須先配置閘道器 Key。", "可能附带实际输出编码、用量或点数。usage 与 points_consumed 取决于上游,缺失不代表免费;若未要求固定编码,不要默认所有图片都是 PNG。": "可能附帶實際輸出編碼、用量或點數。usage 與 points_consumed 取決於上游,缺失不代表免費;若未要求固定編碼,不要預設所有圖片都是 PNG。", "可选的调用方用户标识,不是网关鉴权 Key,也不能用于指定账号或绕过 Key 的授权范围。是否传递与处理取决于提供商。": "可選的呼叫方使用者標識,不是閘道器鑑權 Key,也不能用於指定帳號或繞過 Key 的授權範圍。是否傳遞與處理取決於提供商。", "启用": "啟用", "图片响应与下载": "圖片響應與下載", "图片响应创建时间,Unix 秒。不要与错误限额恢复字段 reset_at 的毫秒单位混用。": "圖片響應建立時間,Unix 秒。不要與錯誤限額恢復欄位 reset_at 的毫秒單位混用。", "图片生成与共用参数": "圖片生成與共用引數", "图片生成与编辑": "圖片生成與編輯", "图片输入是理解图片,工具调用是由客户端执行动作;二者都需要模型能力支持。": "圖片輸入是理解圖片,工具呼叫是由客戶端執行動作;二者都需要模型能力支援。", "在线模型列表": "線上模型列表", "在线模型列表指自动拉取上游目录;仅有静态模型清单不算在线支持。": "線上模型列表指自動取得上游目錄;僅有靜態模型清單不算線上支援。", "地址速查与请求示例使用当前网关地址。从其他设备访问时,127.0.0.1 指向那台设备自身,必须换成实际可达的网关地址。": "地址速查與請求示例使用當前閘道器地址。從其他裝置存取時,127.0.0.1 指向那臺裝置自身,必須換成實際可達的閘道器地址。", "填进客户端的「API 地址 / Base URL」": "填進客戶端的「API 地址 / Base URL」", "声明函数工具的请求体": "宣告函式工具的請求體", "复制命令": "複製命令", "复制地址": "複製地址", "复制示例": "複製示例", "多图有顺序意义:在 prompt 中明确“第 1 张是主体,第 2 张是风格参考”等关系。编辑不保证逐像素保真,要求保留的主体、文字或布局应明确描述。": "多圖有順序意義:在 prompt 中明確“第 1 張是主體,第 2 張是風格參考”等關係。編輯不保證逐畫素保真,要求保留的主體、文字或佈局應明確描述。", "多数 OpenAI 兼容客户端的默认协议": "多數 OpenAI 相容客戶端的預設協議", "多数兼容客户端的默认协议": "多數相容客戶端的預設協議", "字段 / 状态": "欄位 / 狀態", "字段与限制": "欄位與限制", "安装并使用支持 Images 参数的 OpenAI Python SDK。先按接入章节设置 GATEWAY_KEY 与 IMAGE_MODEL_ID,编辑前确认该模型支持参考图,并准备本地 reference.png。": "安裝並使用支援 Images 引數的 OpenAI Python SDK。先按接入章節設定 GATEWAY_KEY 與 IMAGE_MODEL_ID,編輯前確認該模型支援參考圖,並準備本地 reference.png。", "客户端自动拉取可用模型;不受鉴权限制,配 Key 之前就能拉": "客戶端自動拉取可用模型;不受鑑權限制,配 Key 之前就能拉", "对话协议": "對話協定", "对话协议与上下文预算": "對話協議與上下文預算", "对话协议(按客户端支持的类型选一行)": "對話協議(按客戶端支援的型別選一行)", "对话模型看图请求": "對話模型看圖請求", "小浣熊与 Antigravity 不支持此字段,请在 prompt 中描述风格;Loomy 转交上游,由模型决定是否支持。": "小浣熊與 Antigravity 不支援此欄位,請在 prompt 中描述風格;Loomy 轉交上游,由模型決定是否支援。", "小浣熊与 Antigravity 仅接受省略、auto 或 opaque;不保证所有模型都能生成透明背景。文件转码不会自动抠图。": "小浣熊與 Antigravity 僅接受省略、auto 或 opaque;不保證所有模型都能生成透明背景。檔案轉碼不會自動摳圖。", "小浣熊与 Antigravity 仅接受省略或 auto。该字段不保证上游降低审核强度,内容政策拒绝不会自动重试。": "小浣熊與 Antigravity 僅接受省略或 auto。該欄位不保證上游降低稽核強度,內容政策拒絕不會自動重試。", "小浣熊使用 raccoon-image;Loomy 使用目录中的 kind=image 模型;Antigravity 使用目录中的 gemini-*-image 模型;ModelScope 使用已确认支持的 Qwen-Image、Z-Image 或 Qwen-Image-Edit 型号;WorkBuddy 使用目录中带 text-to-image 或 image-to-image 标签的模型,例如 hunyuan-image-alpha 与 hunyuan-image-alpha-edit。实际 model 值以当前 /v1/models 为准,不要直接复制官方 API 的默认模型名。": "小浣熊使用 raccoon-image;Loomy 使用目錄中的 kind=image 模型;Antigravity 使用目錄中的 gemini-*-image 模型;ModelScope 使用已確認支援的 Qwen-Image、Z-Image 或 Qwen-Image-Edit 型號;WorkBuddy 使用目錄中帶 text-to-image 或 image-to-image 標籤的模型,例如 hunyuan-image-alpha 與 hunyuan-image-alpha-edit。實際 model 值以當前 /v1/models 為準,不要直接複製官方 API 的預設模型名。", "展开目录": "展開目錄", "工具服务 API": "工具服務 API", "工具服务 API 文档": "工具服務 API 文件", "工具服务 API 是网关对外的固定接口,路径以 /api/web-search 开头;不属于 /v1 对话协议,也不是管理面板的管理接口,鉴权同样使用网关 Key。": "工具服務 API 是閘道器對外的固定介面,路徑以 /api/web-search 開頭;不屬於 /v1 對話協議,也不是管理面板的管理介面,鑑權同樣使用閘道器 Key。", "已实现,待实测": "已實作,待實測", "已实现,待实测:仅表示代码已接入,尚未通过真实账号验证。": "已實作,待實測:僅表示程式碼已接入,尚未通過真實帳號驗證。", "建议显式填写图片模型 id。省略时从当前 Key 可用目录中选择支持本次操作的图片模型,不使用对话默认模型;没有对应能力模型时返回 503。": "建議顯式填寫圖片模型 id。省略時從當前 Key 可用目錄中選擇支援本次操作的圖片模型,不使用對話預設模型;沒有對應能力模型時返回 503。", "待实测": "待實測", "必填。使用 user / assistant 角色;content 可为字符串或 text、image、tool_use、tool_result 等内容块。": "必填。使用 user / assistant 角色;content 可為字串或 text、image、tool_use、tool_result 等內容塊。", "必填。包含 role 与 content;常见角色为 system、user、assistant,工具结果使用 tool。文本可直接使用字符串,多模态使用内容块数组。": "必填。包含 role 與 content;常見角色為 system、user、assistant,工具結果使用 tool。文本可直接使用字串,多模態使用內容塊陣列。", "必填且不能为空,最多 32000 个字符。描述主体、构图、风格和修改目标;当前不支持 mask,编辑范围也应在提示词中说明。": "必填且不能為空,最多 32000 個字元。描述主體、構圖、風格和修改目標;當前不支援 mask,編輯範圍也應在提示詞中說明。", "快速验证": "快速驗證", "手机端只读文档。完整的使用说明与部署指引在仓库的 docs/ 目录。": "手機端只讀文件。完整的使用說明與部署指引在倉庫的 docs/ 目錄。", "执行工具后回传结果的请求体": "執行工具後回傳結果的請求體", "找到 {count} 个章节": "找到 {count} 個章節", "排错与限制": "疑難排解與限制", "接入与鉴权": "接入與鑑權", "接入指南": "接入指南", "接入指南与接口参考": "接入指南與 API 參考", "接口参考目录": "介面參考目錄", "接口地址": "介面地址", "推荐使用 Authorization: Bearer YOUR_GATEWAY_KEY;Key 来自「网关 Key」页,并且必须处于启用状态。": "推薦使用 Authorization: Bearer YOUR_GATEWAY_KEY;Key 來自「閘道器 Key」頁,並且必須處於啟用狀態。", "推荐显式指定当前目录中的对话模型 id。省略时尝试网关默认模型;默认选择也受该 Key 的授权范围限制。": "推薦顯式指定當前目錄中的對話模型 id。省略時嘗試閘道器預設模型;預設選擇也受該 Key 的授權範圍限制。", "描述输入与输出模态,例如 text、image、video。字段缺失不表示自动支持其他文件、音频或服务端上传接口。": "描述輸入與輸出模態,例如 text、image、video。欄位缺失不表示自動支援其他檔案、音訊或服務端上傳介面。", "提供商插件": "提供商外掛", "提供商能力": "提供商能力", "提供商能力适配表": "提供商能力適配表", "搜索文档": "搜尋文件", "搜索文档、参数或接口…": "搜尋文件、參數或 API…", "收起全部": "收起全部", "收起目录": "收合目錄", "文本生成图片;JSON 请求,非流式返回 base64 或下载链接。": "文本生成圖片;JSON 請求,非流式返回 base64 或下載連結。", "文档内容": "文件內容", "文档目录": "文件目錄", "无此概念": "無此概念", "映射为思考档位与结构化输出请求;支持范围以目标模型为准。": "對映為思考檔位與結構化輸出請求;支援範圍以目標模型為準。", "未声明表示插件没有提供明确结论,不等于不支持。": "未聲明表示外掛沒有提供明確結論,不等於不支援。", "未声明表示网关本体或插件没有提供明确结论,不等于不支持。": "未宣告表示閘道本體或外掛沒有提供明確結論,不等於不支援。", "本体订阅": "本體訂閱", "本地上下文预算估算,返回 estimated=true;不是上游精确分词。": "本地上下文預算估算,返回 estimated=true;不是上游精確分詞。", "本机免鉴权模式没有启用 Key 时可调用;启用任意 Key 后,受保护接口都要携带有效 Key。公网安全模式没有配置 Key 时会拒绝受保护的 /v1 请求,并返回 503 api_key_not_configured。": "本機免鑑權模式沒有啟用 Key 時可呼叫;啟用任意 Key 後,受保護介面都要攜帶有效 Key。公網安全模式沒有配置 Key 時會拒絕受保護的 /v1 請求,並返回 503 api_key_not_configured。", "本页只说明实际提供的接口,不等于完整复刻 OpenAI / Anthropic 服务。未列出的 Files、Batch、图片 variations、服务端会话存储等端点不要假定可用。": "本頁只說明實際提供的介面,不等於完整復刻 OpenAI / Anthropic 服務。未列出的 Files、Batch、圖片 variations、服務端會話儲存等端點不要假定可用。", "本页说明对外的 /v1 接口,不是管理面板的 /api 接口。三种对话协议共用模型目录、模型映射、账号池和网关 Key,但请求与响应格式不同。": "本頁說明對外的 /v1 介面,不是管理面板的 /api 介面。三種對話協議共用模型目錄、模型對映、帳號池和閘道器 Key,但請求與響應格式不同。", "查看当前网关的客户端地址和各接口路径,一键复制后即可使用。": "查看目前閘道的用戶端位址和各 API 路徑,一鍵複製後即可使用。", "根据文字提示生成图片。请求使用 JSON,生成与编辑均只支持非流式响应。": "根據文字提示生成圖片。請求使用 JSON,生成與編輯均只支援非流式響應。", "检查网关是否可访问": "檢查閘道器是否可存取", "模型不存在、已关闭或不在 Key 授权范围,常附 model_not_found;也可能是路径错误,或临时图片下载链接已过期。": "模型不存在、已關閉或不在 Key 授權範圍,常附 model_not_found;也可能是路徑錯誤,或臨時圖片下載連結已過期。", "模型列表": "模型列表", "模型发现与健康检查": "模型發現與健康檢查", "模型清单": "模型清單", "模型清单与健康检查": "模型清單與健康檢查", "模型清单反映当前账号、模型启停与映射配置。不带 Key 时可读取公开清单;携带 Key 时必须有效,返回内容按该 Key 的授权范围过滤,无效 Key 返回 401。": "模型清單反映目前帳號、模型啟停與映射設定。不帶 Key 時可讀取公開清單;攜帶 Key 時必須有效,回傳內容依該 Key 的授權範圍篩選,無效 Key 回傳 401。", "模型清单反映当前账号、模型启停与映射配置;携带有效网关 Key 时进一步按该 Key 的授权范围过滤。不带 Key 或 Key 无效时仍可读取未按该 Key 收窄的清单。": "模型清單反映當前帳號、模型啟停與對映配置;攜帶有效閘道器 Key 時進一步按該 Key 的授權範圍過濾。不帶 Key 或 Key 無效時仍可讀取未按該 Key 收窄的清單。", "模型清单结构示例": "模型清單結構示例", "模型调用始终需要启用且可用的网关 API Key,即使只在本机使用也不能免鉴权。管理员登录会话只用于管理面板,不能代替模型调用的 Key。": "模型呼叫始終需要啟用且可用的閘道 API Key,即使只在本機使用也不能免驗證。管理員登入工作階段只用於管理面板,不能代替模型呼叫的 Key。", "每把 Key 的可用模型、可用提供商限制同样适用于生图和编辑图。模型名称使用 /v1/models 中的 id 或已配置的映射名,不要直接使用展示名称。": "每把 Key 的可用模型、可用提供商限制同樣適用於生圖和編輯圖。模型名稱使用 /v1/models 中的 id 或已配置的對映名,不要直接使用展示名稱。", "没有找到匹配的文档": "找不到符合的文件", "流式以 message_start 开始,经 content_block_start / content_block_delta / content_block_stop,最终 message_delta 与 message_stop 收尾;不要按 Chat 的 [DONE] 规则解析。": "流式以 message_start 開始,經 content_block_start / content_block_delta / content_block_stop,最終 message_delta 與 message_stop 收尾;不要按 Chat 的 [DONE] 規則解析。", "流式包含 response.created、response.output_text.delta 和最终 response.completed 等事件;错误可能以 response.failed 结束。输出预算不足时检查 incomplete 状态与 incomplete_details。": "流式包含 response.created、response.output_text.delta 和最終 response.completed 等事件;錯誤可能以 response.failed 結束。輸出預算不足時檢查 incomplete 狀態與 incomplete_details。", "流式对话请求": "流式對話請求", "流式开始后 HTTP 状态码无法再改;即使已经收到 200,也要检查流内错误、结束原因及是否正常收尾,不能把断流视为成功。": "流式開始後 HTTP 狀態碼無法再改;即使已經收到 200,也要檢查流內錯誤、結束原因及是否正常收尾,不能把斷流視為成功。", "流式用量可请求 include_usage=true;最终是否返回用量取决于上游,不应假设每个增量都有 usage。": "流式用量可請求 include_usage=true;最終是否返回用量取決於上游,不應假設每個增量都有 usage。", "清除搜索": "清除搜尋", "点击章节展开参数、示例和兼容边界;示例只供复制,不会在本页发起模型请求或消耗额度。": "點擊章節展開引數、示例和相容邊界;示例只供複製,不會在本頁發起模型請求或消耗額度。", "生图可能消耗账号额度。先使用 n=1 和较小尺寸确认能力,内容政策拒绝或结果不确定时不要自动重复提交。": "生圖可能消耗帳號額度。先使用 n=1 和較小尺寸確認能力,內容政策拒絕或結果不確定時不要自動重複提交。", "生成、编辑与对话接口共用网关 Key;完整鉴权规则、模型能力和请求示例见下方章节。": "生成、編輯與對話介面共用閘道器 Key;完整鑑權規則、模型能力和請求示例見下方章節。", "生成、编辑与对话接口共用网关 Key;鉴权规则、模型能力和请求示例可从文档目录查阅。": "生成、編輯與對話 API 共用閘道 Key;驗證規則、模型能力和請求範例可從文件目錄查閱。", "生成与编辑返回同一结构;base64 适合直接保存,URL 适合短期获取。": "生成與編輯返回同一結構;base64 適合直接儲存,URL 適合短期獲取。", "用于请求思考配置或档位,由网关映射到目标模型;不保证所有 Anthropic 原生特性在跨协议转发时完全等价。": "用於請求思考配置或檔位,由閘道器對映到目標模型;不保證所有 Anthropic 原生特性在跨協議轉發時完全等價。", "的 Key:请求带 ": "的 Key:請求帶 ", "目前小浣熊、Loomy、Antigravity、ModelScope、WorkBuddy 已接入图片生成;Loomy、Antigravity、ModelScope 与 WorkBuddy 同时接入参考图编辑,小浣熊暂不支持编辑。需要当前提供商插件包含对应能力,并且账号、模型和 Key 授权可用。": "目前小浣熊、Loomy、Antigravity、ModelScope、WorkBuddy 已接入圖片生成;Loomy、Antigravity、ModelScope 與 WorkBuddy 同時接入參考圖編輯,小浣熊暫不支援編輯。需要當前提供商外掛包含對應能力,並且帳號、模型和 Key 授權可用。", "目录声明的上下文与最大输出预算,可能省略。预算和余额不是同一概念,也不能替代上游的实际限制。": "目錄宣告的上下文與最大輸出預算,可能省略。預算和餘額不是同一概念,也不能替代上游的實際限制。", "看图与工具调用": "看圖與工具呼叫", "看图请求使用对话模型,并确认 supports_images=true。Chat 使用 text 与 image_url 内容块,图片值可为上游支持的 HTTP(S) URL 或 data URL;可用格式与大小取决于目标模型。「参考图编辑」章节的上传限制不应直接套用到所有对话模型。": "看圖請求使用對話模型,並確認 supports_images=true。Chat 使用 text 與 image_url 內容區塊,圖片值可為上游支援的 HTTP(S) URL 或 data URL;可用格式與大小取決於目標模型。「參考圖編輯」章節的上傳限制不應直接套用到所有對話模型。", "看图请求使用对话模型,并确认 supports_images=true。Chat 使用 text 与 image_url 内容块,图片值可为上游支持的 HTTP(S) URL 或 data URL;可用格式与大小取决于目标模型。下方编辑图的上传限制不应直接套用到所有对话模型。": "看圖請求使用對話模型,並確認 supports_images=true。Chat 使用 text 與 image_url 內容塊,圖片值可為上游支援的 HTTP(S) URL 或 data URL;可用格式與大小取決於目標模型。下方編輯圖的上傳限制不應直接套用到所有對話模型。", "示例仅供复制,不会在本页发起请求或消耗额度。": "範例僅供複製,不會在本頁發出請求或消耗額度。", "示例显式设置 max_retries=0,避免 SDK 对超时或 5xx 自动重新提交收费任务;timeout=300.0 仅是客户端等待示例,不会改变网关或上游的超时配置。": "示例顯式設定 max_retries=0,避免 SDK 對超時或 5xx 自動重新提交收費任務;timeout=300.0 僅是客戶端等待示例,不會改變閘道器或上游的超時配置。", "章节导航": "章節導覽", "类型 / 范围": "型別 / 範圍", "系统说明是顶层字段,不要放进 messages 的 system 角色;支持文本或 text 块数组。": "系統說明是頂層欄位,不要放進 messages 的 system 角色;支援文本或 text 塊陣列。", "系统说明,对应 Chat 的 system 消息;需要时每次请求重新携带。": "系統說明,對應 Chat 的 system 訊息;需要時每次請求重新攜帶。", "结合 HTTP 状态、错误内容与请求日志判断问题;不要盲目重试收费请求。": "結合 HTTP 狀態、錯誤內容與請求日誌判斷問題;不要盲目重試收費請求。", "编辑请求上传总大小最多 16 MiB。参考图转为 data URL 后,内联图片与最终 JSON 请求还受 14 MiB 上限;base64 约增加三分之一体积,因此多张各小于 10 MiB 也可能超限。": "編輯請求上傳總大小最多 16 MiB。參考圖轉為 data URL 後,內聯圖片與最終 JSON 請求還受 14 MiB 上限;base64 約增加三分之一體積,因此多張各小於 10 MiB 也可能超限。", "网关临时 URL 响应结构": "閘道器臨時 URL 響應結構", "网关临时下载不要求 Authorization,链接中的随机令牌就是访问凭据,任何拿到链接的人都能下载。请将链接视为敏感信息,重要结果及时保存,不要当作长期文件存储。": "閘道器臨時下載不要求 Authorization,連結中的隨機權杖就是存取憑據,任何拿到連結的人都能下載。請將連結視為敏感資訊,重要結果及時儲存,不要當作長期檔案儲存。", "网关临时图片仅保存在内存,生成后 1 小时过期,网关重启后立即失效。缓存总容量 128 MiB;缓存满时会返回错误并建议改用 b64_json。上游签名链接的有效期由提供商决定。": "閘道器臨時圖片僅儲存在記憶體,生成後 1 小時過期,閘道器重啟後立即失效。快取總容量 128 MiB;快取滿時會返回錯誤並建議改用 b64_json。上游簽名連結的有效期由提供商決定。", "网关内置的安全重试与客户端 SDK 的重试是两层独立行为。图片客户端建议关闭自动重试;即使网关已停止重试,SDK 仍可能重新提交整条请求。": "閘道器內建的安全重試與客戶端 SDK 的重試是兩層獨立行為。圖片客戶端建議關閉自動重試;即使閘道器已停止重試,SDK 仍可能重新提交整條請求。", "网关可将实际图片转换为指定文件编码。省略时保留上游图片格式;需要固定扩展名时建议显式填写。JPEG 无法保留透明通道。": "閘道器可將實際圖片轉換為指定檔案編碼。省略時保留上游圖片格式;需要固定副檔名時建議顯式填寫。JPEG 無法保留透明通道。", "网关始终无状态,响应中的 store=false。即使请求 store=true,也不会保存可供后续检索的 Responses 对象。": "閘道器始終無狀態,響應中的 store=false。即使請求 store=true,也不會儲存可供後續檢索的 Responses 物件。", "网关接受 1–10,默认 1;Antigravity 与 ModelScope 仅支持 n=1。上游返回数量不足时网关报错,不会为了凑数再次调用图片生成。": "閘道器接受 1–10,預設 1;Antigravity 與 ModelScope 僅支援 n=1。上游返回數量不足時閘道器報錯,不會為了湊數再次呼叫圖片生成。", "网关接受 1–10,默认 1;Antigravity 仅支持 n=1。上游返回数量不足时网关报错,不会为了凑数再次调用图片生成。": "閘道器接受 1–10,預設 1;Antigravity 僅支援 n=1。上游返回數量不足時閘道器報錯,不會為了湊數再次呼叫圖片生成。", "网关最多接受 16 张参考图。Antigravity 的 gemini-2.5-* 模型最多 3 张,其他当前接入的 Antigravity 图片模型最多 14 张;Loomy 还可能受上游模型限制。": "閘道器最多接受 16 張參考圖。Antigravity 的 gemini-2.5-* 模型最多 3 張,其他當前接入的 Antigravity 圖片模型最多 14 張;Loomy 還可能受上游模型限制。", "网关最多接受 16 张参考图。Antigravity 的 gemini-2.5-* 模型最多 3 张,其他当前接入的 Antigravity 图片模型最多 14 张;ModelScope 接受 1–3 张参考图;Loomy 还可能受上游模型限制。": "閘道器最多接受 16 張參考圖。Antigravity 的 gemini-2.5-* 模型最多 3 張,其他當前接入的 Antigravity 圖片模型最多 14 張;ModelScope 接受 1–3 張參考圖;Loomy 還可能受上游模型限制。", "网关需要下载或转换输出时,单张图片最多 32 MiB、边长最多 8192,并使用有界解码。请求 output_format 会按实际图片转码,而不是只修改文件扩展名。": "閘道器需要下載或轉換輸出時,單張圖片最多 32 MiB、邊長最多 8192,並使用有界解碼。請求 output_format 會按實際圖片轉碼,而不是隻修改副檔名。", "网络搜索与网页抓取的 REST 接口,使用网关 Key 鉴权;不属于 /v1 对话协议。": "網路搜尋與網頁抓取的 REST 介面,使用閘道器 Key 鑑權;不屬於 /v1 對話協議。", "能力由当前插件版本申报,表示适配支持情况,不代表账号额度或当前可用性。": "能力由目前外掛版本申報,表示適配支援情況,不代表帳號額度或目前可用性。", "能力由当前网关本体或插件版本申报,表示适配支持情况,不代表账号额度或当前可用性。": "能力由目前閘道本體或外掛版本申報,表示適配支援情況,不代表帳號額度或目前可用性。", "自定义函数工具通过 tools 声明。模型返回 tool_calls 后,客户端校验参数、执行函数,再把 assistant 工具调用和 role=tool 结果一起放入下一次 messages;tool_call_id 必须对应,不能遗漏并行调用的结果。": "自定義函式工具通過 tools 宣告。模型返回 tool_calls 後,客戶端校驗引數、執行函式,再把 assistant 工具呼叫和 role=tool 結果一起放入下一次 messages;tool_call_id 必須對應,不能遺漏並行呼叫的結果。", "表示当前目录与插件声明支持参考图编辑。编辑前检查此字段,不要仅凭模型名称包含 image 判断。": "表示當前目錄與外掛宣告支援參考圖編輯。編輯前檢查此欄位,不要僅憑模型名稱包含 image 判斷。", "表示支持图片输入,不等于支持生成图片。对话模型可用于看图;编辑模型也可能声明此字段。": "表示支援圖片輸入,不等於支援生成圖片。對話模型可用於看圖;編輯模型也可能宣告此欄位。", "表示目录条目属于生图模型。调用还需要当前插件已接入生成能力,且存在获准使用的可用账号。": "表示目錄條目屬於生圖模型。呼叫還需要當前外掛已接入生成能力,且存在獲准使用的可用帳號。", "试试接口路径、参数名或其他关键词。": "試試 API 路徑、參數名稱或其他關鍵字。", "详细接口参考": "詳細介面參考", "请求与响应示例": "請求與回應範例", "请求参数、模型能力或协议形态不支持。图片相关 code 可能为 invalid_image_input、image_generation_not_supported 或 image_editing_not_supported;修改请求后再发。": "請求引數、模型能力或協議形態不支援。圖片相關 code 可能為 invalid_image_input、image_generation_not_supported 或 image_editing_not_supported;修改請求後再發。", "请求带 ": "請求帶 ", "请求示例适用于 Bash / Git Bash。YOUR_GATEWAY_KEY、CHAT_MODEL_ID、IMAGE_MODEL_ID 和图片占位地址都需要替换;返回示例仅展示结构,能力位、Token 数量和时间戳不是当前网关的实测值。": "請求示例適用於 Bash / Git Bash。YOUR_GATEWAY_KEY、CHAT_MODEL_ID、IMAGE_MODEL_ID 和圖片佔位地址都需要替換;返回示例僅展示結構,能力位、Token 數量和時間戳不是當前閘道器的實測值。", "读取提供商能力表失败:{error}": "讀取提供商能力表失敗:{error}", "读取插件能力表失败:{error}": "讀取外掛能力表失敗:{error}", "读取获准使用的模型": "讀取獲准使用的模型", "输出 Token 上限,具体支持字段和预算以模型为准。不要同时设置冲突的上限;达到上限时 finish_reason 可能为 length。": "輸出 Token 上限,具體支援欄位和預算以模型為準。不要同時設定衝突的上限;達到上限時 finish_reason 可能為 length。", "通用对话入口,适合大多数 OpenAI 兼容客户端。": "通用對話入口,適合大多數 OpenAI 相容客戶端。", "通用错误结构示例": "通用錯誤結構示例", "通过能力字段选择正确模型;健康检查只说明网关可访问。": "通過能力欄位選擇正確模型;健康檢查只說明閘道器可存取。", "遇到“图片请求可能已消耗额度,未自动重试”或“上游已生成”等提示,先核对请求日志与上游结果。客户端超时、断线或取消不代表上游撤销任务;自动重发可能再次扣费。": "遇到“圖片請求可能已消耗額度,未自動重試”或“上游已生成”等提示,先核對請求日誌與上游結果。客戶端超時、斷線或取消不代表上游撤銷任務;自動重發可能再次扣費。", "采样参数,是否支持和有效范围由提供商与模型决定。协议兼容不代表每家上游都支持全部调参项。": "取樣引數,是否支援和有效範圍由提供商與模型決定。協議相容不代表每家上游都支援全部調參項。", "鉴权用「网关 Key」页里任一": "鑑權用「閘道器 Key」頁裡任一", "错误、限额与兼容边界": "錯誤、限額與相容邊界", "限流、额度不足或当前无可用账号窗口。能确定恢复时间时可能返回 Retry-After(秒)、reset_at(Unix 毫秒)与 reset_at_text;这些字段不是每次都有。": "限流、額度不足或當前無可用帳號視窗。能確定恢復時間時可能返回 Retry-After(秒)、reset_at(Unix 毫秒)與 reset_at_text;這些欄位不是每次都有。", "非流式响应读取 choices[].message;流式响应读取 choices[].delta。每次请求由客户端携带 messages 历史,网关不会根据上一条响应 id 自动恢复对话。": "非流式響應讀取 choices[].message;流式響應讀取 choices[].delta。每次請求由客戶端攜帶 messages 歷史,閘道器不會根據上一條響應 id 自動恢復對話。", "非流式对话响应": "非流式對話響應", "非流式对话请求": "非流式對話請求", "非流式返回 object=response、status、output 数组与 output_text。output 也可能包含 reasoning 或 function_call,不能只读取数组第一项。": "非流式返回 object=response、status、output 陣列與 output_text。output 也可能包含 reasoning 或 function_call,不能只讀取陣列第一項。", "非流式返回 type=message、content 块数组、stop_reason 与 usage。content 可能同时包含文本、思考与工具调用,应该按 type 遍历。": "非流式返回 type=message、content 塊陣列、stop_reason 與 usage。content 可能同時包含文本、思考與工具呼叫,應該按 type 遍歷。", "领取类": "領取類", "默认 b64_json,返回可直接解码的图片 base64;url 返回上游签名链接或网关临时下载链接。不是图片文件编码。": "預設 b64_json,返回可直接解碼的圖片 base64;url 返回上游簽名連結或閘道器臨時下載連結。不是圖片檔案編碼。", "默认 false,返回完整 JSON;true 返回 text/event-stream。curl 查看流式输出时添加 -N,客户端应按完整 SSE 事件解析而不是按网络分块解析。": "預設 false,返回完整 JSON;true 返回 text/event-stream。curl 檢視流式輸出時新增 -N,客戶端應按完整 SSE 事件解析而不是按網路分塊解析。", "24 小时总用量": "24 小時總用量", "24 小时整体命中率": "24 小時整體命中率", "24 小时请求数": "24 小時請求數", "30 天": "30 天", "7 天": "7 天", "API Key 分布": "API Key 分布", "Key": "Key", "Token": "Token", "Top 提供商": "Top 提供商", "Top 模型": "Top 模型", "Top 账号": "Top 帳號", "{date} · {tokens} tokens · {n} 次请求": "{date} · {tokens} tokens · {n} 次請求", "{date} · 无请求": "{date} · 無請求", "{model}:{tokens} tokens": "{model}:{tokens} tokens", "{m}月": "{m}月", "{m}月{d}日 周{wd}": "{m}月{d}日 周{wd}", "{name} · {tokens} tokens · {n} 次请求 · {pct}": "{name} · {tokens} tokens · {n} 次請求 · {pct}", "{name}:{tokens} tokens · 占 {pct}%": "{name}:{tokens} tokens · 佔 {pct}%", "{n} 个账号启用 · {m} 个限流中": "{n} 個帳號啟用 · {m} 個限流中", "{n} 个账号正在限流,转发会自动跳过它们": "{n} 個帳號正在限流,轉發會自動跳過它們", "{n} 天": "{n} 天", "{n} 家提供商": "{n} 家提供商", "{n} 次请求": "{n} 次請求", "{n} 项": "{n} 項", "{n} 项低于 {threshold}%,已合并为“其他”": "{n} 項低於 {threshold}%,已合併為“其他”", "{start} ~ {end}": "{start} ~ {end}", "{title}显示数量": "{title}顯示數量", "{tokens} tokens · 占 {pct}": "{tokens} tokens · 佔 {pct}", "…还有 {n} 个模型": "…還有 {n} 個模型", "…还有 {n} 项": "…還有 {n} 項", "一": "一", "三": "三", "二": "二", "五": "五", "仅在饼图合并,右侧列表完整保留每个项目": "僅在圓餅圖合併,右側清單完整保留每個項目", "仅调整两个饼图,右侧列表始终完整显示": "僅調整兩個圓餅圖,右側清單始終完整顯示", "仅调整这两张图的展示,所有用量仍计入总 Token,占比保持不变": "僅調整這兩張圖的展示,所有用量仍計入總 Token,佔比保持不變", "今天": "今天", "今天都签完了": "今天都簽完了", "今日签到 {done} / {total}": "今日簽到 {done} / {total}", "今日签到 {done}/{total}": "今日簽到 {done}/{total}", "今日请求": "今日請求", "全部用量": "全部用量", "六": "六", "其他 {pct} · {n} 项,仅在饼图合并": "其他 {pct} · {n} 項,僅在圓餅圖合併", "其他({n} 项)": "其他({n} 項)", "其余 {n} 项": "其餘 {n} 項", "前 {n} 名": "前 {n} 名", "前 {n} 名占全部用量 {pct}": "前 {n} 名占全部用量 {pct}", "区间共 {n} 天": "區間共 {n} 天", "区间内累计": "區間內累計", "占比低于": "佔比低於", "占输入 Token 的 {rate}": "占輸入 Token 的 {rate}", "历史明细不完整": "歷史明細不完整", "另 {n} 项": "另 {n} 項", "可用账号": "可用帳號", "右轴": "右軸", "合并只作用于饼图。低于阈值的扇区归入“其他”,右侧列表完整保留每个项目,总量和占比不变。": "合併只作用於圓餅圖。低於門檻的扇區歸入「其他」,右側清單完整保留每個項目,總量和占比不變。", "合并小项": "合併小項", "合计": "合計", "含今天在内往前数": "含今天在內往前數", "命中 {hit} / 输入 {input}": "命中 {hit} / 輸入 {input}", "命中率": "命中率", "命中率 = 缓存读取 Token / 输入 Token(promptTokens)。窗口越短越贴近「此刻」:上游把缓存读取与输入分开上报时,该比值合法地可能超过 100%,此处不夹取值、如实展示。": "命中率 = 快取讀取 Token / 輸入 Token(promptTokens)。視窗越短越貼近「此刻」:上游把快取讀取與輸入分開上報時,該比值合法地可能超過 100%,此處不夾取值、如實展示。", "命中率 {rate}(命中 {hit} / 输入 {input})": "命中率 {rate}(命中 {hit} / 輸入 {input})", "四": "四", "图表显示": "圖表顯示", "图表类型": "圖表類型", "在右侧展开“其他”查看明细": "在右側展開“其他”檢視明細", "天有调用": "天有呼叫", "失败 {n} 次": "失敗 {n} 次", "小项合并阈值": "小項合併閾值", "展开其他明细": "展開其他明細", "左轴": "左軸", "开启“合并小项”后,低于阈值的项目合并为灰色“其他”,可在右侧展开明细。合并只影响展示,总 Token 和占比不变。": "開啟“合併小項”後,低於閾值的專案合併為灰色“其他”,可在右側展開明細。合併隻影響展示,總 Token 和佔比不變。", "开始日期": "開始日期", "当前连续天数": "當前連續天數", "总 Token": "總 Token", "总 Token:{tokens}": "總 Token:{tokens}", "总 Token:{tokens}({n} 次请求)": "總 Token:{tokens}({n} 次請求)", "总请求数": "總請求數", "总量不变": "總量不變", "悬停查看完整读数与分项": "懸停查看完整讀數與分項", "成功率 {rate}": "成功率 {rate}", "成功率 {rate} · 失败 {n} 次": "成功率 {rate} · 失敗 {n} 次", "成功请求数": "成功請求數", "所选范围内暂无请求": "所選範圍內暫無請求", "所选范围内每个提供商各消耗了多少 Token,按 Token 用量从多到少排。同一个模型名可能有多家都能提供,网关按设置页「转发路由」的优先级依次尝试,所以占比也反映了实际落到谁身上。百分比按本区间的总 Token 数算(这一块只看用量,请求次数与成功率在概览卡片里)。「未知」是指那批请求没记下承载它的提供商 —— 主要是记录提供商这个功能上线之前的旧明细,其次是请求在选定上游之前就失败了(请求体非法、模型不存在、没有可用账号)。这一维与账号那一维不同:旧明细里根本没有「哪家承载」的信息(早期版本只有单一上游,但那是配置事实而非逐条记录),所以无法回算,旧数据会一直留在「未知」里;此后新产生的请求都会记上具体的提供商。": "所選範圍內每個提供商各消耗了多少 Token,按 Token 用量從多到少排。同一個模型名可能有多家都能提供,閘道器按設定頁「轉發路由」的優先順序依次嘗試,所以佔比也反映了實際落到誰身上。百分比按本區間的總 Token 數算(這一塊只看用量,請求次數與成功率在概覽卡片裡)。「未知」是指那批請求沒記下承載它的提供商 —— 主要是記錄提供商這個功能上線之前的舊明細,其次是請求在選定上游之前就失敗了(請求體非法、模型不存在、沒有可用帳號)。這一維與帳號那一維不同:舊明細里根本沒有「哪家承載」的資訊(早期版本只有單一上游,但那是配置事實而非逐條記錄),所以無法回算,舊資料會一直留在「未知」裡;此後新產生的請求都會記上具體的提供商。", "所选范围内每个提供商各消耗了多少 Token,按用量从多到少排,扇区角度即占比。同一个模型名可能有多家都能提供,网关按设置页「转发路由」的优先级依次尝试,所以占比也反映了实际落到谁身上。中心是这一维的合计(等于概览里的总 Token),右侧每行给出该提供商的 Token 用量与百分比。「未知」是指那批请求没记下承载它的提供商 —— 主要是记录提供商这个功能上线之前的旧明细,其次是请求在选定上游之前就失败了。": "所選範圍內每個提供商各消耗了多少 Token,按用量從多到少排,扇區角度即佔比。同一個模型名可能有多家都能提供,閘道器按設定頁「轉發路由」的優先順序依次嘗試,所以佔比也反映了實際落到誰身上。中心是這一維的合計(等於概覽裡的總 Token),右側每行給出該提供商的 Token 用量與百分比。「未知」是指那批請求沒記下承載它的提供商 —— 主要是記錄提供商這個功能上線之前的舊明細,其次是請求在選定上游之前就失敗了。", "所选范围内每个模型各消耗了多少 Token,按用量从多到少排,扇区角度即占比。中心是这一维的合计(等于概览里的总 Token),右侧每行给出该模型的 Token 用量与百分比。扇区内的百分比只在 ≥3% 时标出,更小的会挤成一团 —— 完整读数在右侧列表与悬停气泡里。颜色按用量排名分配:最大的那段是红色,依次往后;同一份报表里换个维度看,配色口径不变。": "所選範圍內每個模型各消耗了多少 Token,按用量從多到少排,扇區角度即佔比。中心是這一維的合計(等於概覽裡的總 Token),右側每行給出該模型的 Token 用量與百分比。扇區內的百分比只在 ≥3% 時標出,更小的會擠成一團 —— 完整讀數在右側列表與懸停氣泡裡。顏色按用量排名分配:最大的那段是紅色,依次往後;同一份報表裡換個維度看,配色口徑不變。", "所选范围内每个账号各消耗了多少 Token,按 Token 用量从多到少排。账号是比提供商更细的一维:同一家可以挂多个账号,转发时按优先级在候选链上依次尝试,所以这里反映的是「具体哪个登录态在出力」。百分比按本区间的总 Token 数算(这一块只看用量,请求次数与成功率在概览卡片里)。「未知账号」是指那批请求没有账号身份:走默认登录态转发(未配置账号列表)时会这样;这一维上线前写出的旧聚合行也没有账号明细,但它们会在升级导入旧数据时按明细自动补算回来 —— 只有明细已被手动清理掉的那几天补不回来,仍留在「未知账号」里,那是确实无从恢复的部分。": "所選範圍內每個帳號各消耗了多少 Token,按 Token 用量從多到少排。帳號是比提供商更細的一維:同一家可以掛多個帳號,轉發時按優先順序在候選鏈上依次嘗試,所以這裡反映的是「具體哪個登入態在出力」。百分比按本區間的總 Token 數算(這一塊只看用量,請求次數與成功率在概覽卡片裡)。「未知帳號」是指那批請求沒有帳號身份:走預設登入態轉發(未配置帳號列表)時會這樣;這一維上線前寫出的舊聚合行也沒有帳號明細,但它們會在升級匯入舊資料時按明細自動補算回來 —— 只有明細已被手動清理掉的那幾天補不回來,仍留在「未知帳號」裡,那是確實無從恢復的部分。", "所选范围内还没有提供商用量": "所選範圍內還沒有提供商用量", "所选范围内还没有模型用量": "所選範圍內還沒有模型用量", "所选范围内还没有请求记录": "所選範圍內還沒有請求記錄", "所选范围内还没有账号用量": "所選範圍內還沒有帳號用量", "折线": "折線", "报表时间范围": "報表時間範圍", "按 Token 用量从多到少排列,扇区角度表示占比。占比不低于 3% 的扇区显示百分比,所有项目的完整读数保留在右侧列表与悬停提示中。": "按 Token 用量從多到少排列,扇區角度表示占比。占比不低於 3% 的扇區顯示百分比,所有項目的完整讀數保留在右側清單與懸停提示中。", "按 Token 统计": "按 Token 統計", "按天 Token 用量": "按天 Token 用量", "按天 Token 趋势": "按天 Token 趨勢", "按日统计": "按日統計", "按本地整点统计": "按本地整點統計", "按本地整点,无请求的整点不标注": "按本地整點,無請求的整點不標註", "按每条请求的软件标识和识别规则统计,不依赖 API Key,也不代表设备或用户数。待确认的软件统一计入“其它”;规则修改不重新归类历史请求。": "按每條請求的軟體標識和識別規則統計,不依賴 API Key,也不代表裝置或使用者數。待確認的軟體統一計入“其它”;規則修改不重新歸類歷史請求。", "提供商用": "提供商用", "提供商用占比": "提供商用佔比", "提供商用量": "提供商用量", "提供商用量占比": "提供商用量佔比", "提供商:{text}": "提供商:{text}", "收起其他明细": "收起其他明細", "方格为本地自然日,无请求显示为空槽": "方格為本地自然日,無請求顯示為空槽", "无请求的整点按 0% 计,但不写读数": "無請求的整點按 0% 計,但不寫讀數", "日": "日", "日均": "日均", "日均 {value}": "日均 {value}", "时间范围。「今天」是本地自然日今天 0 点到现在;「昨天」是昨天一整天(0 点到 24 点);「近 7 天 / 近 30 天」含今天在内往前数,即今天与之前的 6 / 29 天,不是「不含今天的 7 / 30 天」。": "時間範圍。「今天」是本地自然日今天 0 點到現在;「昨天」是昨天一整天(0 點到 24 點);「近 7 天 / 近 30 天」含今天在內往前數,即今天與之前的 6 / 29 天,不是「不含今天的 7 / 30 天」。", "昨天": "昨天", "暂无可签到账号": "暫無可簽到帳號", "暂无热力图数据": "暫無熱力圖資料", "暂无缓存趋势数据": "暫無快取趨勢資料", "暂无趋势数据": "暫無趨勢資料", "最近一次请求使用的模型": "最近一次請求使用的模型", "最近整点命中率": "最近整點命中率", "最近请求": "最近請求", "最近请求 {n} 条": "最近請求 {n} 條", "未知模型": "未知模型", "未配置上游": "未配置上游", "本月": "本月", "查看用量、调用来源与缓存表现": "查看用量、呼叫來源與快取表現", "柱状": "長條", "模型与提供商共用此设置": "模型與提供商共用此設定", "模型用量": "模型用量", "模型用量占比": "模型用量佔比", "每天的总 Token 用量(输入 + 输出)。柱顶标出当天的读数;区间很长、柱子挤到放不下时只标最高的那几天,其余悬停柱子即可读到。": "每天的總 Token 用量(輸入 + 輸出)。柱頂標出當天的讀數;區間很長、柱子擠到放不下時只標最高的那幾天,其餘懸停柱子即可讀到。", "活跃": "活躍", "活跃天数": "活躍天數", "活跃热力图": "活躍熱力圖", "用量分布": "用量分布", "用量趋势": "用量趨勢", "的项目合并为“其他”": "的專案合併為“其他”", "筛选统计项目": "篩選統計項目", "管理": "管理", "累计": "累計", "累计请求 {n} 条": "累計請求 {n} 條", "结束日期": "結束日期", "结束日期(含当天)": "結束日期(含當天)", "统计区间加载中": "統計區間載入中", "统计报表": "統計報表", "统计概览": "統計概覽", "缓存命中率": "快取命中率", "缓存读取属于输入读数,不额外计入总 Token": "快取讀取屬於輸入讀數,不額外計入總 Token", "缓存读取属于输入,不重复计入总 Token": "快取讀取屬於輸入,不重複計入總 Token", "自定义区间": "自定義區間", "请求日志只展示仍保留的明细;清理明细不会减少日报中的历史用量。": "請求日誌只展示仍保留的明細;清理明細不會減少日報中的歷史用量。", "读取 {hit} ÷ 输入 {input}": "讀取 {hit} ÷ 輸入 {input}", "读取报表失败:{error}": "讀取報表失敗:{error}", "账号分布": "帳號分佈", "账号用量": "帳號用量", "起始日期(含当天)": "起始日期(含當天)", "输入": "輸入", "输入 + 输出": "輸入 + 輸出", "输入 Token": "輸入 Token", "输出": "輸出", "输出 Token": "輸出 Token", "运行中": "執行中", "近 1 小时": "近 1 小時", "近 10 分钟": "近 10 分鐘", "近 24 小时": "近 24 小時", "近 24 小时缓存命中率与总 Token 趋势": "近 24 小時快取命中率與總 Token 趨勢", "近 24 小时缓存命中率趋势": "近 24 小時快取命中率趨勢", "近 30 天": "近 30 天", "近 365 天 · 不随上方日期筛选变化": "近 365 天 · 不隨上方日期篩選變化", "近 365 天活跃热力图": "近 365 天活躍熱力圖", "近 365 天,按天 Token 用量着色(档位按本窗口峰值自动定)": "近 365 天,按天 Token 用量著色(檔位按本視窗峰值自動定)", "近 7 天": "近 7 天", "还有 {n} 个待签": "還有 {n} 個待籤", "还没有添加账号": "還沒有新增帳號", "还没有请求记录": "還沒有請求記錄", "连续天数": "連續天數", "饼图不合并小项": "圓餅圖不合併小項", "饼图小于 {threshold}% 归入其他": "圓餅圖小於 {threshold}% 歸入其他", "饼图显示": "圓餅圖顯示", " · ": " · ", " · {n} 个账号今日重试已用完": " · {n} 個帳號今日重試已用完", " · {n} 个账号等窗口重试": " · {n} 個帳號等視窗重試", " · 上次执行:{time}": " · 上次執行:{time}", " · 补签 {time}": " · 補籤 {time}", " · 补签在主签到区间结束后执行": " · 補簽在主簽到區間結束後執行", " · 连登 {n} 天": " · 連登 {n} 天", "AgentArts 服务声明": "AgentArts 服務聲明", "MiniMax Code 国内版每日签到 · 同地区签名账号接口读取七日面板并领取今日积分;已领取不重复领,奖励以官方返回为准": "MiniMax Code 國內版每日簽到 · 同地區簽名帳號介面讀取七日面板並領取今日點數;已領取不重複領取,獎勵以官方回傳為準", "MiniMax Code 国际版每日签到 · 同地区签名账号接口读取七日面板并领取今日积分;已领取不重复领,奖励以官方返回为准": "MiniMax Code 國際版每日簽到 · 同地區簽名帳號介面讀取七日面板並領取今日點數;已領取不重複領取,獎勵以官方回傳為準", "QuWork 每日奖励:先查询领取状态,再领取并回查;结果不明时不重复提交。": "QuWork 每日獎勵:先查詢領取狀態,再領取並回查;結果不明時不重複提交。", "SOLO 的 checkin_credits 领取 · 按自然日 0 点刷新": "SOLO 的 checkin_credits 領取 · 按自然日 0 點重新整理", "Sonus 等限时活动 · 资格、额度和有效期以官方返回为准": "Sonus 等限時活動 · 資格、額度和有效期以官方回傳為準", "UMID 组件安装失败:{error}": "UMID 元件安裝失敗:{error}", "UMID 组件已安装,可重新签到。": "UMID 元件已安裝,可重新簽到。", "UMID 组件管理接口不可用,请刷新页面或更新网关。": "UMID 元件管理介面無法使用,請重新整理頁面或更新閘道。", "WorkBuddy 国内版 · {n} 个账号": "WorkBuddy 國內版 · {n} 個帳號", "WorkBuddy 国内版 · 查询任务树后一键点亮 / 领奖 · 含开学季与猫猫旅行 · 点击行展开明细": "WorkBuddy 國內版 · 查詢任務樹後一鍵點亮/領獎 · 含開學季與貓貓旅行 · 點擊行展開明細", "WorkBuddy 国际版保活模型,按顺序回退": "WorkBuddy 國際版保活模型,按順序回退", "WorkBuddy 国际版日活任务的免费模型 · 全局一份,与条目无关": "WorkBuddy 國際版日活任務的免費模型 · 全域一份,與條目無關", "ZCode 自动领取验证": "ZCode 自動領取驗證", "{date}(每天 {time})": "{date}(每天 {time})", "{done} / {total} 个账号已签": "{done} / {total} 個帳號已簽", "{done}/{total} 已签": "{done}/{total} 已籤", "{label} ×{count}({reason})": "{label} ×{count}({reason})", "{name}定时补签开关": "{name}定時補籤開關", "{name}签到时间": "{name}簽到時間", "{n} 个平台": "{n} 個平臺", "{n} 个平台 · {groups} 组签到时间": "{n} 個平臺 · {groups} 組簽到時間", "{n} 个计划 · 北京时间 UTC+8": "{n} 個計劃 · 北京時間 UTC+8", "{n} 个账号今天的重试次数已用完": "{n} 個帳號今天的重試次數已用完", "{n} 个账号等待窗口或活动": "{n} 個帳號等待視窗或活動", "{n} 积分": "{n} 積分", "{n} 项可完成": "{n} 項可完成", "{n} 项待领": "{n} 項待領", "{points} 积分": "{points} 積分", "{total} 个账号 · {done} 个已签": "{total} 個帳號 · {done} 個已籤", "{total} 账号 · {done} 已签": "{total} 帳號 · {done} 已籤", "{total} 项任务 · {pending} 项可完成": "{total} 項任務 · {pending} 項可完成", "✅ UMID 组件已安装,下轮签到即可领取国际版积分": "✅ UMID 元件已安裝,下輪簽到即可領取國際版積分", "✅ {message}": "✅ {message}", "✅ 定时签到已开启": "✅ 定時簽到已開啟", "✅ 开学季任务执行完成": "✅ 開學季任務執行完成", "✅ 成长任务执行完成:积分 +{credit} 能量 +{energy}": "✅ 成長任務執行完成:積分 +{credit} 能量 +{energy}", "✅ 新手福利领取完成": "✅ 新手福利領取完成", "✅ 新手福利领取完成,累计 {n} 积分": "✅ 新手福利領取完成,累計 {n} 積分", "✅ 签到完成:{succeeded}/{total} 个账号成功领取{active}": "✅ 簽到完成:{succeeded}/{total} 個帳號成功領取{active}", "「保活模型链」是 WorkBuddy 国际版领日活时用来保活的免费模型,按顺序逐个尝试、 第一个成功即止;清空提交恢复缺省({defaults})。 当天去重 + 幂等领取:重复执行只会拿到「已领取」,不会重复加分。": "「保活模型鏈」是 WorkBuddy 國際版領日活時用來保活的免費模型,按順序逐個嘗試、 第一個成功即止;清空提交恢復預設({defaults})。 當天去重 + 冪等領取:重複執行只會拿到「已領取」,不會重複加分。", "「保活模型链」是 WorkBuddy 国际版领日活时用来保活的免费模型,按顺序逐个尝试、 第一个成功即止;清空清单并保存 = 恢复缺省链(当前缺省:{defaults})。 当天去重 + 幂等领取:重复执行只会拿到「已领取」,不会重复加分。": "「保活模型鏈」是 WorkBuddy 國際版領日活時用來保活的免費模型,按順序逐個嘗試、 第一個成功即止;清空清單並儲存 = 恢復預設鏈(當前預設:{defaults})。 當天去重 + 冪等領取:重複執行只會拿到「已領取」,不會重複加分。", "「免费领积分」的每日任务 · 逐个领取": "「免費領積分」的每日任務 · 逐個領取", "一次性福利 · 已领取状态保存在网关,领完无需重复查询 · 点击行展开任务清单": "一次性福利 · 已領取狀態儲存在閘道,領完無需重複查詢 · 點擊行展開任務清單", "一次性福利 · 签到后自动查询并领取,领完记在本机不再查上游 · 点击行展开任务清单": "一次性福利 · 簽到後自動查詢並領取,領完記在本機不再查上游 · 點擊行展開任務清單", "一次性福利已全部结清": "一次性福利已全部結清", "一次性福利已结清": "一次性福利已結清", "一次性福利已结清,无需重复查询": "一次性福利已結清,無需重複查詢", "一次领当天全部奖励(每日签到 + 新人礼) · 幂等由上游保证": "一次領當天全部獎勵(每日簽到 + 新人禮) · 冪等由上游保證", "一趟推进一步,与签到排程互相独立": "一趟推進一步,與簽到排程互相獨立", "一键安装组件": "一鍵安裝元件", "一键完成": "一鍵完成", "一键领取({n})": "一鍵領取({n})", "上一轮({time}):{n} 个动作,+{credit} 积分": "上一輪({time}):{n} 個動作,+{credit} 積分", "上次 {time}": "上次 {time}", "上次执行:{line}": "上次執行:{line}", "上次执行:{time}": "上次執行:{time}", "上次签到时间": "上次簽到時間", "上次领取 {time} · 领取需通过滑块验证码": "上次領取 {time} · 領取需通過滑塊驗證碼", "上游窗口不同的家各自定时,留空 = 用内置专属时刻(没有就跟上面的每天时刻)": "上游視窗不同的家各自定時,留空 = 用內建專屬時刻(沒有就跟上面的每天時刻)", "下一账号:{time}": "下一帳號:{time}", "下次 {date}": "下次 {date}", "下次 {date} · 点此管理条目": "下次 {date} · 點此管理條目", "下次 {time}": "下次 {time}", "下次执行:{time}": "下次執行:{time}", "下次检查:{time}": "下次檢查:{time}", "下次自动执行": "下次自動執行", "不参与每日签到": "不參與每日簽到", "不参与每日签到:{list}。CodeArts 的一次性奖励在下方「新手福利」,它与 ZCode 的每日/套餐福利领取见「活动福利」。": "不參與每日簽到:{list}。CodeArts 的一次性獎勵在下方「新手福利」,它與 ZCode 的每日/套餐福利領取見「活動福利」。", "不参与每日签到:{list}。CodeArts 的一次性奖励在下方「新手福利」,它的每日福利就在上方「每日签到」里;ZCode 的套餐领取见「活动福利」。": "不參與每日簽到:{list}。CodeArts 的一次性獎勵在下方「新手福利」,它的每日福利就在上方「每日簽到」裡;ZCode 的套餐領取見「活動福利」。", "不参与签到": "不參與簽到", "不可领": "不可領", "不自动重试等待中的活动": "不自動重試等待中的活動", "不适用": "不適用", "与国内版同一套任务接口 · 站点不同": "與國內版同一套任務介面 · 站點不同", "与国内版同一套链路 · 站点不同、令牌不通用": "與國內版同一套鏈路 · 站點不同、權杖不通用", "与定时补签不同,仅处理窗口未开或活动暂未下发。": "與定時補籤不同,僅處理視窗未開或活動暫未下發。", "与新人积分独立,不购买付费套餐、不自动续费": "與新人積分獨立,不購買付費方案、不自動續費", "专属或自定义时间作为区间起点,沿用默认区间长度;每天重新随机,重启不改变当天安排。": "專屬或自定義時間作為區間起點,沿用預設區間長度;每天重新隨機,重啟不改變當天安排。", "个账号不参与": "個帳號不參與", "主签到区间结束后等待 {n} 分钟": "主簽到區間結束後等待 {n} 分鐘", "主签到后等待 {n} 分钟": "主簽到後等待 {n} 分鐘", "主签到后等待(分钟)": "主簽到後等待(分鐘)", "主签到已执行": "主簽到已執行", "主签到已执行不等于每个账号都已领取成功;账号结果请查看签到记录。": "主簽到已執行不等於每個帳號都已領取成功;帳號結果請檢視簽到記錄。", "仅处理窗口未开或活动暂未下发的账号,不对所有错误反复执行。": "僅處理視窗未開或活動暫未下發的帳號,不對所有錯誤反覆執行。", "仅开通官方报价为 0 元的个人体验套餐,固定关闭自动续费;奖励另行领取": "僅開通官方報價為 0 元的個人體驗方案,固定關閉自動續費;獎勵另行領取", "仅提交你填写的权益,不购买套餐;兑换码激活可能需要原客户端的设备标识。": "僅提交你填寫的權益,不購買套餐;兌換碼啟用可能需要原用戶端的裝置識別。", "今天 · 北京时间自然日": "今天 · 北京時間自然日", "今天不再自动重试,明天自动重置。要现在再试一次,用签到计划里的「立即执行」。": "今天不再自動重試,明天自動重置。要現在再試一次,用簽到計劃裡的「立即執行」。", "今天已执行:{list}": "今天已執行:{list}", "今天已执行:{times}": "今天已執行:{times}", "今天已领": "今天已領", "今天已领 {n} 份": "今天已領 {n} 份", "今天已领取 {n} 份": "今天已領取 {n} 份", "今天已领取但读数尚未同步:{plans}": "今天已領取但讀數尚未同步:{plans}", "今天未领": "今天未領", "今天未领 · 上次领取 {time}": "今天未領 · 上次領取 {time}", "今天没有需要签到的账号": "今天沒有需要簽到的帳號", "今天的账号都签完了。": "今天的帳號都簽完了。", "今天还没有账号签到,切到「全部」看看哪些还没签。": "今天還沒有帳號簽到,切到「全部」看看哪些還沒簽。", "今天还没有账号领到过,切到「全部」看看还能领什么。": "今天還沒有帳號領到過,切到「全部」看看還能領什麼。", "今天还没有领取": "今天還沒有領取", "今天(北京时间 {day})已领取 · 官方确认到账 {n} 项 · 明天可再领": "今天(北京時間 {day})已領取 · 官方確認到賬 {n} 項 · 明天可再領", "今日主签到": "今日主簽到", "今日已执行": "今日已執行", "今日已派出": "今日已派出", "今日已签": "今日已籤", "今日已领取": "今日已領取", "今日已领取豆包工作签到奖励,已由官方确认": "今日已領取豆包工作簽到獎勵,已由官方確認", "今日签到": "今日簽到", "今日签到任务尚未满足领取条件": "今日簽到任務尚未滿足領取條件", "今日签到进度": "今日簽到進度", "从未签到": "從未簽到", "从清单里移除": "從清單裡移除", "体验套餐": "體驗套餐", "例如:每日自动签到": "例如:每日自動簽到", "保存计划": "儲存計劃", "保活": "保活", "保活 + 领取": "保活 + 領取", "保活 API Key 已保存": "保活 API Key 已儲存", "保活 {n}": "保活 {n}", "保活+领取": "保活+領取", "保活中…": "保活中…", "保活成功": "保活成功", "保活模型链": "保活模型鏈", "保活模型链为全局配置,猫猫旅行有独立的开关与时刻。": "保活模型鏈為全域配置,貓貓旅行有獨立的開關與時刻。", "先创建签到计划,再为它设置定时补签。": "先建立簽到計劃,再為它設定定時補籤。", "先查询活动,再选择要领取的奖励;不会购买或订阅套餐": "先查詢活動,再選擇要領取的獎勵;不會購買或訂閱方案", "免费体验套餐": "免費體驗方案", "免费套餐已开通并确认生效": "免費方案已開通並確認生效", "兑换中…": "兌換中…", "兑换权益": "兌換權益", "兑换结果待确认,请到官方客户端核对;不会重复提交": "兌換結果待確認,請到官方用戶端核對;不會重複提交", "兑换请求未得到确认,请到官方客户端核对;不要重复提交": "兌換請求未獲確認,請到官方用戶端核對;不要重複提交", "全选": "全選", "全部 {n} 家": "全部 {n} 家", "全部完成": "全部完成", "全部时间": "全部時間", "全部查询": "全部查詢", "全部签到": "全部簽到", "全部类型": "全部類型", "全部结果": "全部結果", "全部账号均可签到": "全部帳號均可簽到", "全部领取": "全部領取", "共 {n} 条": "共 {n} 條", "关着:不自动巡检(仍可手动巡检)": "關著:不自動巡檢(仍可手動巡檢)", "关着:所有条目都不执行": "關著:所有條目都不執行", "关闭活动窗口重试不会关闭定时补签。插件提供下次重试时刻时,以插件返回的时间为准。": "關閉活動視窗重試不會關閉定時補籤。外掛提供下次重試時刻時,以外掛返回的時間為準。", "其他自动任务": "其他自動任務", "凭据不可用": "憑據不可用", "凭证不可用": "憑證無法使用", "凭证需刷新": "憑證需更新", "切换任务后,左侧只保留有账号的提供商": "切換任務後,左側只保留有帳號的提供商", "删除失败:{error}": "刪除失敗:{error}", "删除定时条目": "刪除定時條目", "删除定时签到条目": "刪除定時簽到條目", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活并在网页通道建会话点亮日活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;CodeArts 领当日的运营福利(领取 → 确认 → 回读核实,自动执行受每天 6 次 / 间隔 10 分钟的写请求限流);OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "到點後自動簽到勾選提供商的可用帳號(WorkBuddy 國內版走每日簽到介面,國際版走每日活躍任務:探測活動、領日活獎勵、再用免費模型保活並在網頁通道建會話點亮日活;小浣熊走桌面版每日積分鏈路;AutoClaw 走官方客戶端的每日簽到任務;Qoder 中國版走活動領取,沒被下發活動的帳號會得到中性提示;Qoder 國際版要先帶裝置風控身份(本機 Qoder 客戶端 / qodercli 的 UMID 元件生成)才能看到「每日 100 Credits」活動,缺元件時會得到明確的說明而不是報錯;Trae 領 SOLO 的每日簽到積分(按自然日 0 點重置),上游沒對該帳號開活動、或憑據裡沒有裝置號時得到的是「未領取 + 具體原因」而不是報錯;Loomy 每天替帳號打一次首次登入積分;KukuAI 領「免費領積分」的每日任務;CodeArts 領當日的運營福利(領取 → 確認 → 回讀核實,自動執行受每天 6 次 / 間隔 10 分鐘的寫請求限流);OfficeAce 果辦一次領當天全部獎勵(每日簽到 + 新人禮))。錯過時點開機後會自動補籤,不會因為當時沒開機而漏掉。各家簽到介面都是冪等的,重複執行不會重複領取。", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;CodeArts 领当日的运营福利(领取 → 确认 → 回读核实,自动执行受每天 6 次 / 间隔 10 分钟的写请求限流);OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "到點後自動簽到勾選提供商的可用帳號(WorkBuddy 國內版走每日簽到介面,國際版走每日活躍任務:探測活動、領日活獎勵、再用免費模型保活;小浣熊走桌面版每日積分鏈路;AutoClaw 走官方客戶端的每日簽到任務;Qoder 中國版走活動領取,沒被下發活動的帳號會得到中性提示;Qoder 國際版要先帶裝置風控身份(本機 Qoder 客戶端 / qodercli 的 UMID 元件生成)才能看到「每日 100 Credits」活動,缺元件時會得到明確的說明而不是報錯;Trae 領 SOLO 的每日簽到積分(按自然日 0 點重置),上游沒對該帳號開活動、或憑據裡沒有裝置號時得到的是「未領取 + 具體原因」而不是報錯;Loomy 每天替帳號打一次首次登入積分;KukuAI 領「免費領積分」的每日任務;CodeArts 領當日的運營福利(領取 → 確認 → 回讀核實,自動執行受每天 6 次 / 間隔 10 分鐘的寫請求限流);OfficeAce 果辦一次領當天全部獎勵(每日簽到 + 新人禮))。錯過時點開機後會自動補籤,不會因為當時沒開機而漏掉。各家簽到介面都是冪等的,重複執行不會重複領取。", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "到點後自動簽到勾選提供商的可用帳號(WorkBuddy 國內版走每日簽到介面,國際版走每日活躍任務:探測活動、領日活獎勵、再用免費模型保活;小浣熊走桌面版每日積分鏈路;AutoClaw 走官方客戶端的每日簽到任務;Qoder 中國版走活動領取,沒被下發活動的帳號會得到中性提示;Qoder 國際版要先帶裝置風控身份(本機 Qoder 客戶端 / qodercli 的 UMID 元件生成)才能看到「每日 100 Credits」活動,缺元件時會得到明確的說明而不是報錯;Trae 領 SOLO 的每日簽到積分(按自然日 0 點重置),上游沒對該帳號開活動、或憑據裡沒有裝置號時得到的是「未領取 + 具體原因」而不是報錯;Loomy 每天替帳號打一次首次登入積分;KukuAI 領「免費領積分」的每日任務;OfficeAce 果辦一次領當天全部獎勵(每日簽到 + 新人禮))。錯過時點開機後會自動補籤,不會因為當時沒開機而漏掉。各家簽到介面都是冪等的,重複執行不會重複領取。", "到点待执行": "到點待執行", "到点时逐个签到,已勾 {n} / {total} 家": "到點時逐個簽到,已勾 {n} / {total} 家", "北京时间 · 已启用 {n} 个签到计划": "北京時間 · 已啟用 {n} 個簽到計劃", "北京时间 · 每天重复 · 随设置更新": "北京時間 · 每天重複 · 隨設定更新", "北京时间 · 逗号分隔 · 最多 6 条 · 到点后最多晚 30 秒执行;错过时点开机后会补跑一轮。": "北京時間 · 逗號分隔 · 最多 6 條 · 到點後最多晚 30 秒執行;錯過時點開機後會補跑一輪。", "北京时间 · 错过区间会补跑未执行账号,重启保留当天安排;任务在网关执行,关闭手机不影响排程。": "北京時間 · 錯過區間會補跑未執行帳號,重啟保留當天安排;任務在閘道器執行,關閉手機不影響排程。", "北京时间 · 错过时点开机后会自动补签": "北京時間 · 錯過時點開機後會自動補籤", "北京时间 · 错过时点开机后会自动补签。任务在网关执行,关闭手机不影响排程。": "北京時間 · 錯過時點開機後會自動補籤。任務在閘道器執行,關閉手機不影響排程。", "区间内陆续签到": "區間內陸續簽到", "区间结束后等待(分钟)": "區間結束後等待(分鐘)", "单账号签到不受范围限制": "單帳號簽到不受範圍限制", "原套餐已到期或冻结,请在官方客户端处理;这里不会续费或变更套餐": "原方案已到期或凍結,請在官方用戶端處理;這裡不會續費或變更方案", "去插件页安装签到能力": "去外掛頁安裝簽到能力", "去领取": "去領取", "发放中": "發放中", "发放失败": "發放失敗", "取消验证": "取消驗證", "另有 {n} 个账号不参与": "另有 {n} 個帳號不參與", "另有 {n} 个账号不参与每日签到": "另有 {n} 個帳號不參與每日簽到", "只列当前任务里有账号的提供商。": "只列出目前任務裡有帳號的提供商。", "只重试这些账号,不会重签整个计划。具体原因见签到记录。": "只重試這些帳號,不會重籤整個計劃。具體原因見簽到記錄。", "只领取已完成任务的奖励(幂等,重复点不会重复入账)": "只領取已完成任務的獎勵(冪等,重複點不會重複入帳)", "可使用管理员凭据调用:": "可使用管理員憑證呼叫:", "可完成": "可完成", "可派出": "可派出", "可选 · 缺省显示时刻": "可選 · 預設顯示時刻", "可领": "可領", "可领取 {n} 项": "可領取 {n} 項", "可领奖": "可領獎", "各家区间起点": "各家區間起點", "各家时刻": "各家時刻", "同时控制定时签到、定时补签和活动窗口重试;猫猫旅行独立运行。": "同時控制定時簽到、定時補籤和活動視窗重試;貓貓旅行獨立執行。", "名称(可选)": "名稱(可選)", "后端未返回 UMID 组件安装结果": "後端未傳回 UMID 元件安裝結果", "后端未返回 UMID 组件状态": "後端未傳回 UMID 元件狀態", "后端未返回定时签到数据": "後端未返回定時簽到資料", "后端未返回巡检结果": "後端未返回巡檢結果", "后端未返回新手福利数据": "後端未返回新手福利資料", "后端未返回有效的套餐状态": "後端未回傳有效的方案狀態", "后端未返回权益兑换结果": "後端未回傳權益兌換結果", "后端未返回活动福利数据": "後端未回傳活動福利資料", "后端未返回签到中心数据": "後端未返回簽到中心資料", "启用的条目按各自时刻执行": "啟用的條目按各自時刻執行", "启用的计划在各自区间内随机签到": "啟用的計劃在各自區間內隨機簽到", "启用签到计划 {name}": "啟用簽到計劃 {name}", "国际版签到需要 UMID 组件生成设备风控身份(本机未检测到)。": "國際版簽到需要 UMID 元件生成裝置風控身份(本機未檢測到)。", "在桌面端设置": "在桌面版設定", "在网关安装组件": "在閘道器安裝元件", "在途": "在途", "基本设置": "基本設定", "填入缺省链": "填入預設鏈", "填写你已有的兑换码或订单号": "填寫你已有的兌換碼或訂單號", "填好时刻与签到范围后点「保存」;名称可以留空(界面显示时刻)": "填好時刻與簽到範圍後點「儲存」;名稱可以留空(介面顯示時刻)", "失败 {n}": "失敗 {n}", "奖励与权益 · 资格、额度和有效期以官方返回为准": "獎勵與權益 · 資格、額度和有效期以官方回傳為準", "套餐已冻结": "方案已凍結", "套餐已到期": "方案已到期", "套餐已开通,无需重复操作": "方案已開通,無需重複操作", "套餐明细": "套餐明細", "套餐明细 — {name}": "套餐明細 — {name}", "套餐查询凭证已过期,请先到账号页刷新凭证;此查询不会自动续期": "方案查詢憑證已過期,請先到帳號頁更新憑證;此查詢不會自動續期", "套餐领取": "套餐領取", "安装 Qoder 客户端或 qodercli 后即可(无需重启网关)。": "安裝 Qoder 客戶端或 qodercli 後即可(無需重啟閘道器)。", "安装中…": "安裝中…", "安装后仍未检测到 UMID 组件,请重新检查。": "安裝後仍未偵測到 UMID 元件,請重新檢查。", "安装插件并添加账号后,支持的签到与福利会自动显示": "安裝外掛並新增帳號後,支援的簽到與福利會自動顯示", "官方客户端的每日签到任务": "官方客戶端的每日簽到任務", "官方拒绝套餐查询,请检查账号授权;这不一定表示 Token 已过期": "官方拒絕方案查詢,請檢查帳號授權;這不一定表示 Token 已過期", "官方显示自动续费已开启,请到官方客户端检查": "官方顯示自動續費已開啟,請到官方用戶端檢查", "官方未返回明确的套餐状态,暂不能开通": "官方未回傳明確的方案狀態,暫時無法開通", "定时签到": "定時簽到", "定时签到和定时补签分开管理。补签沿用对应签到计划的平台范围,不重复领取已完成的账号。": "定時簽到和定時補籤分開管理。補籤沿用對應簽到計劃的平臺範圍,不重複領取已完成的帳號。", "定时签到已关闭": "定時簽到已關閉", "定时签到总开关": "定時簽到總開關", "定时补签": "定時補籤", "实际发放:{time}": "實際發放:{time}", "实际时间由网关计算,晚窗口的平台会顺延补签;只处理当天未签到账号。": "實際時間由閘道器計算,晚視窗的平臺會順延補籤;只處理當天未簽到帳號。", "实际签到安排": "實際簽到安排", "实际补签": "實際補籤", "实际补签取「主签到时间加等待间隔」与「补签不早于」中较晚的时刻。": "實際補籤取「主簽到時間加等待間隔」與「補籤不早於」中較晚的時刻。", "对应主签到:{times}": "對應主簽到:{times}", "对应签到计划 · 沿用 {n} 个平台范围,只补未签到账号": "對應簽到計劃 · 沿用 {n} 個平臺範圍,只補未簽到帳號", "对应签到计划:{name}": "對應簽到計劃:{name}", "尚未开始": "尚未開始", "尚未开通套餐,可开通免费体验套餐": "尚未開通方案,可開通免費體驗方案", "尚未执行": "尚未執行", "尚未查询": "尚未查詢", "尚未查询任务状态": "尚未查詢任務狀態", "尚未查询活动": "尚未查詢活動", "尝试领取": "嘗試領取", "展开": "展開", "巡检一次": "巡檢一次", "巡检中…": "巡檢中…", "巡检失败:{reason}": "巡檢失敗:{reason}", "已保存:{label}": "已儲存:{label}", "已保存:保活模型链": "已儲存:保活模型鏈", "已保存:定时条目": "已儲存:定時條目", "已保存:猫猫旅行排程": "已儲存:貓貓旅行排程", "已全部领取": "已全部領取", "已删除 {n} 条签到记录": "已刪除 {n} 條簽到記錄", "已删除定时条目": "已刪除定時條目", "已发放": "已發放", "已完成活跃上报(连登已点亮),但活动未开启(本次没有可领的奖励)": "已完成活躍上報(連登已點亮),但活動未開啟(本次沒有可領的獎勵)", "已就绪": "已就緒", "已开始批量签到": "已開始批次簽到", "已开通": "已開通", "已得 {earned} / {total} 积分": "已得 {earned} / {total} 積分", "已执行 {n} / {total} 个平台": "已執行 {n} / {total} 個平臺", "已执行 {n} / {total} 个账号": "已執行 {n} / {total} 個帳號", "已抽 {n} 次": "已抽 {n} 次", "已提交「{label}」的签到": "已提交「{label}」的簽到", "已暂停": "已暫停", "已有结果 {checked} / 共 {total} 个账号": "已有結果 {checked} / 共 {total} 個帳號", "已有结果 {checked} / 共 {total} 个账号 · {pending} 项待领": "已有結果 {checked} / 共 {total} 個帳號 · {pending} 項待領", "已查 {checked} / {total} 个账号": "已查 {checked} / {total} 個帳號", "已确认不自动续费": "已確認不自動續費", "已确认领取": "已確認領取", "已签": "已籤", "已签到自动跳过": "已簽到自動跳過", "已结束": "已結束", "已选 {n} / {total} 个平台": "已選 {n} / {total} 個平臺", "已领": "已領", "已领 {claimed}/{total} · 累计 {earned} 积分": "已領 {claimed}/{total} · 累計 {earned} 積分", "已领 {done} / {total} 份套餐": "已領 {done} / {total} 份方案", "已领养": "已領養", "已领取": "已領取", "已领取「{name}」": "已領取「{name}」", "带设备风控身份领取「每日 100 Credits」 · 需要 UMID 组件": "帶裝置風控身份領取「每日 100 Credits」 · 需要 UMID 元件", "平台与签到时间": "平臺與簽到時間", "平台与随机签到区间": "平臺與隨機簽到區間", "平台专属": "平臺專屬", "平台专属时间": "平臺專屬時間", "平台专属时间由网关提供。自定义时间会覆盖专属时间,提前执行可能遇到窗口未开。": "平臺專屬時間由閘道器提供。自定義時間會覆蓋專屬時間,提前執行可能遇到視窗未開。", "平台批次": "平臺批次", "开关": "開關", "开启定时补签": "開啟定時補籤", "开启活动窗口重试": "開啟活動視窗重試", "开始 {time}": "開始 {time}", "开学季 + 抽奖": "開學季 + 抽獎", "开学季任务": "開學季任務", "开学季执行失败:{error}": "開學季執行失敗:{error}", "开学季执行完成:{message}": "開學季執行完成:{message}", "开学季活动": "開學季活動", "开着:启用的条目按各自时刻执行": "開著:啟用的條目按各自時刻執行", "开着:按下面的时刻自动巡检": "開著:按下面的時刻自動巡檢", "开通中…": "開通中…", "开通免费套餐": "開通免費方案", "开通未得到确认,请重新查询套餐状态;不会自动重试开通": "開通未獲確認,請重新查詢方案狀態;不會自動重試開通", "开通结果待确认": "開通結果待確認", "开通请求仍在处理或结果待确认,请稍后查询,不要重复提交": "開通請求仍在處理或結果待確認,請稍後查詢,不要重複提交", "当前余额读数里没有套餐清单": "當前餘額讀數里沒有套餐清單", "当前没有可领取的套餐": "當前沒有可領取的套餐", "当前没有等待窗口或活动下发的账号。": "當前沒有等待視窗或活動下發的帳號。", "当前活动未提供每日签到任务": "目前活動未提供每日簽到任務", "当前网关中,补签等待间隔与活动重试间隔共用;修改间隔会同步影响两者,开关与重试次数仍分别设置。": "當前閘道器中,補籤等待間隔與活動重試間隔共用;修改間隔會同步影響兩者,開關與重試次數仍分別設定。", "当前账号暂不符合该活动的领取条件": "目前帳號暫不符合該活動的領取條件", "当前账号未下发豆包工作签到活动,无需反复领取": "目前帳號尚未獲得豆包工作簽到活動,無需反覆領取", "待发放": "待發放", "待完成": "待完成", "待执行": "待執行", "待签": "待籤", "待领取": "待領取", "待领新手福利": "待領新手福利", "总开关": "總開關", "总开关已关闭": "總開關已關閉", "总开关已关闭 · 在「定时签到」页打开": "總開關已關閉 · 在「定時簽到」頁開啟", "成功 {n}": "成功 {n}", "成长任务": "成長任務", "成长任务完成({done} 项成功、{failed} 项失败),积分 +{credit} 能量 +{energy}": "成長任務完成({done} 項成功、{failed} 項失敗),積分 +{credit} 能量 +{energy}", "成长任务执行失败:{error}": "成長任務執行失敗:{error}", "成长任务都完成了。": "成長任務都完成了。", "我已阅读并同意以下服务声明,仅授权开通零元体验套餐,不自动续费": "我已閱讀並同意以下服務聲明,僅授權開通零元體驗方案,不自動續費", "截止 {time}": "截止 {time}", "所有定时签到条目均已暂停": "所有定時簽到條目均已暫停", "所有时间按北京时间计算。每个账号每天随机安排一次,重启保留当天安排;错过区间时会补跑未执行账号。": "所有時間按北京時間計算。每個帳號每天隨機安排一次,重啟保留當天安排;錯過區間時會補跑未執行帳號。", "所有时间按北京时间计算。网关启动后会补跑当天已到点、尚未执行的签到,不会提前执行未来时点。": "所有時間按北京時間計算。閘道器啟動後會補跑當天已到點、尚未執行的簽到,不會提前執行未來時點。", "手动签到": "手動簽到", "执行失败:{error}": "執行失敗:{error}", "执行完成": "執行完成", "执行完成:{n} 项,{failed} 项失败": "執行完成:{n} 項,{failed} 項失敗", "执行并抽奖": "執行並抽獎", "执行开学季任务并抽空抽奖机会(分享 / 对话 / 专家事件)": "執行開學季任務並抽空抽獎機會(分享/對話/專家事件)", "执行规则": "執行規則", "把缺省链填进清单,再点「保存」生效": "把預設鏈填進清單,再點「儲存」生效", "抽奖机会 {n} 次": "抽獎機會 {n} 次", "按住拖动调整顺序": "按住拖動調整順序", "按住拖动,调整这个模型在链里的顺序": "按住拖動,調整這個模型在鏈裡的順序", "按完成状态筛选": "按完成狀態篩選", "按序逐个尝试,共 {n} 个": "按序逐個嘗試,共 {n} 個", "按签到状态筛选": "按簽到狀態篩選", "按结果筛选": "按結果篩選", "按顺序尝试免费模型,一行一个;清空并保存恢复默认链。": "按順序嘗試免費模型,一行一個;清空並儲存恢復預設鏈。", "按领取状态筛选": "按領取狀態篩選", "授权被拒绝": "授權遭拒", "探测 + 领取 + 保活 · 与定时签到同一套组合": "探測 + 領取 + 保活 · 與定時簽到同一套組合", "探测活动并领取日活奖励 · 不做保活": "探測活動並領取日活獎勵 · 不做保活", "接单 + 点亮 + 领奖(只处理已实测沉淀的任务)": "接單+點亮+領獎(只處理已實測沉澱的任務)", "插件未就绪,范围仍保留": "外掛未就緒,範圍仍保留", "搜索平台": "搜尋平臺", "搜索签到平台": "搜尋簽到平臺", "搜索账号 / 说明": "搜尋帳號 / 說明", "搜账号 / 收益 / 错误 / 触发原因": "搜帳號 / 收益 / 錯誤 / 觸發原因", "收起": "收起", "收起平台": "收起平臺", "收起新建": "收起新建", "新建定时条目": "新建定時條目", "新建签到计划": "新建簽到計劃", "新手任务": "新手任務", "新手福利": "新手福利", "新手福利与活动": "新手福利與活動", "新手福利是一次性任务:领完就没了,重复点不会重复加分。": "新手福利是一次性任務:領完就沒了,重複點不會重複加分。", "新手福利有 {n} 项领取失败,可重试": "新手福利有 {n} 項領取失敗,可重試", "新手福利都领完了。": "新手福利都領完了。", "新手福利领取失败 {n} 项": "新手福利領取失敗 {n} 項", "新用户积分": "新用戶積分", "新计划默认开启补签和活动窗口重试;保存后可到「定时补签」页单独调整。": "新計劃預設開啟補籤和活動視窗重試;儲存後可到「定時補籤」頁單獨調整。", "无": "無", "无独立签到接口 · 每天替账号打一次登录信息(即当日魔粒)": "無獨立簽到介面 · 每天替帳號打一次登入資訊(即當日魔粒)", "无独立签到接口 · 每天替账号打一次首次登录积分": "無獨立簽到介面 · 每天替帳號打一次首次登入積分", "无账号": "無帳號", "时刻": "時刻", "时间范围": "時間範圍", "暂不可领": "暫不可領", "暂不可领(未满足条件)": "暫不可領(未滿足條件)", "暂不支持": "暫不支援", "暂无可领取福利": "暫無可領取福利", "暂无启用的条目": "暫無啟用的項目", "暂无启用的条目 · 点此添加": "暫無啟用的條目 · 點此新增", "暂无月度赠送记录": "暫無月度贈送記錄", "暂无活动": "暫無活動", "最多重试次数(0 = 关闭)": "最多重試次數(0 = 關閉)", "最近一轮:成功 {n} · 保活 {active} · 失败 {failed}": "最近一輪:成功 {n} · 保活 {active} · 失敗 {failed}", "最近执行:{time}": "最近執行:{time}", "最近结果:成功 {n} · 保活 {active} · 失败 {failed}": "最近結果:成功 {n} · 保活 {active} · 失敗 {failed}", "月度赠送": "月度贈送", "有平台到点待执行": "有平臺到點待執行", "有未保存的改动": "有未儲存的改動", "未勾选提供商": "未勾選提供商", "未安排下次执行": "未安排下次執行", "未完成,请查看签到记录": "未完成,請查看簽到紀錄", "未开启": "未開啟", "未开通": "未開通", "未执行开通,请查询套餐状态查看原因": "未執行開通,請查詢方案狀態查看原因", "未解锁": "未解鎖", "未领养(领养需先完成当日对话量)": "未領養(領養需先完成當日對話量)", "未领取": "未領取", "本地台账里今天还没领过;活动期内每天发一份新套餐": "本地臺賬裡今天還沒領過;活動期內每天發一份新套餐", "本地台账里今天(北京时间)领过的套餐:{plans}": "本地臺賬裡今天(北京時間)領過的套餐:{plans}", "本次签到结果的记录时间:{time}(本机时区)": "本次簽到結果的記錄時間:{time}(本機時區)", "本次自动领取未完成验证,请在套餐明细中手动领取": "本次自動領取未完成驗證,請在方案明細中手動領取", "本轮已跳过": "本輪已跳過", "本轮已跳过:{reason}": "本輪已跳過:{reason}", "权益兑换成功,重新查询可查看最新记录": "權益兌換成功,重新查詢可查看最新記錄", "权益兑换未成功": "權益兌換未成功", "权益兑换码 / 订单号": "權益兌換碼 / 訂單號", "条启用": "條啟用", "来源说明中的时刻是定时条目的名称或基准时刻,不是本次执行时间": "來源說明中的時刻是定時條目的名稱或基準時刻,不是本次執行時間", "果办免费体验套餐": "果辦免費體驗方案", "果办套餐接口不可用,请更新主程序和提供商插件": "果辦方案介面無法使用,請更新主程式和提供商外掛", "果办服务声明": "果辦服務聲明", "查看平台": "檢視平臺", "查看签到记录": "檢視簽到記錄", "查看账号": "檢視帳號", "查询于 {time}": "查詢於 {time}", "查询任务": "查詢任務", "查询任务树后一键点亮 / 领奖 · 含开学季与猫猫旅行 · 点击行展开明细": "查詢任務樹後一鍵點亮 / 領獎 · 含開學季與貓貓旅行 · 點擊行展開明細", "查询任务树并一键点亮 / 领奖(含开学季与猫猫旅行)": "查詢任務樹並一鍵點亮/領獎(含開學季與貓貓旅行)", "查询只读取套餐状态,点击开通后才会执行": "查詢僅讀取方案狀態,點擊開通後才會執行", "查询后查看任务清单,仅执行插件标记为支持的任务": "查詢後檢視任務清單,僅執行外掛標記為支援的任務", "查询失败:{error}": "查詢失敗:{error}", "查询套餐": "查詢方案", "查询活动": "查詢活動", "查询结果": "查詢結果", "桌面端每日积分链路": "桌面版每日積分鏈路", "模型链已保存": "模型鏈已儲存", "次数按账号每天单独计算:重试到上限的账号今天不再重试,明天自动重置。": "次數按帳號每天單獨計算:重試到上限的帳號今天不再重試,明天自動重置。", "正在为本次领取验证;若出现滑块,请手动完成": "正在為本次領取進行驗證;若出現滑塊,請手動完成", "正在读取 UMID 组件状态…": "正在讀取 UMID 元件狀態…", "正在读取定时签到数据…": "正在讀取定時簽到資料…", "正在读取签到数据…": "正在讀取簽到資料…", "正在读取签到记录…": "正在讀取簽到記錄…", "每个签到计划对应一组补签设置": "每個簽到計劃對應一組補籤設定", "每个账号每天在区间内随机执行一次;开始与结束相同则按固定时刻执行。": "每個帳號每天在區間內隨機執行一次;開始與結束相同則按固定時刻執行。", "每天 {time}": "每天 {time}", "每天 {time} · {scope}": "每天 {time} · {scope}", "每天定点巡检 · 一趟推进一步 · 与签到排程互相独立": "每天定點巡檢 · 一趟推進一步 · 與簽到排程互相獨立", "每天执行": "每天執行", "每天按这里的时刻自动巡检一遍 WorkBuddy 国内版账号:没有猫就领养、在家就派出、到站就领奖。一趟只推进一步,所以建议留两个时刻(早上派出、晚上领奖)。企业版与国际版账号自动跳过。": "每天按這裡的時刻自動巡檢一遍 WorkBuddy 國內版帳號:沒有貓就領養、在家就派出、到站就領獎。一趟只推進一步,所以建議留兩個時刻(早上派出、晚上領獎)。企業版與國際版帳號自動跳過。", "每天时刻": "每天時刻", "每天时刻(北京时间)": "每天時刻(北京時間)", "每天自动执行": "每天自動執行", "每天补查一次": "每天補查一次", "每天补查一轮,只处理今天未签到的账号。": "每天補查一輪,只處理今天未簽到的帳號。", "每执行一次签到 · 每个账号一条明细 · 结果与收益以后端落账为准": "每執行一次簽到 · 每個帳號一條明細 · 結果與收益以後端落賬為準", "每日活动签到(+100 积分,已领则中性提示)": "每日活動簽到(+100 積分,已領則中性提示)", "每日活跃任务 · 网页会话保活点亮日活,领取才加积分 · 两者可分开执行": "每日活躍任務 · 網頁會話保活點亮日活,領取才加積分 · 兩者可分開執行", "每日登录积分 · 顺带领取会员活动 · 访客账号无积分体系(跳过)": "每日登入積分 · 順帶領取會員活動 · 訪客帳號無積分體系(跳過)", "每日福利 · 领取 → 确认 → 回读核实 · 按北京时间自然日重置": "每日福利 · 領取 → 確認 → 回讀核實 · 按北京時間自然日重置", "每日签到": "每日簽到", "每日签到积分": "每日簽到積分", "每条条目各有时刻与范围 · 各自当天去重 · 错过时点开机自动补签": "每條條目各有時刻與範圍 · 各自當天去重 · 錯過時點開機自動補籤", "每账号一条明细": "每帳號一筆明細", "每账号一条明细 · 点此查看「签到记录」": "每帳號一條明細 · 點此檢視「簽到記錄」", "每账号每天最多重试(次)": "每帳號每天最多重試(次)", "没有专属时间的平台跟随默认时间;已有专属或自定义时间的平台不会被覆盖。": "沒有專屬時間的平臺跟隨預設時間;已有專屬或自定義時間的平臺不會被覆蓋。", "没有匹配的平台": "沒有匹配的平臺", "没有可执行账号": "沒有可執行帳號", "没有可签到的账号": "沒有可簽到的帳號", "没有可领套餐的账号(ZCode 未添加)。": "沒有可領套餐的帳號(ZCode 未新增)。", "没有可领福利的账号(CodeArts / ZCode 未添加)。": "沒有可領福利的帳號(CodeArts / ZCode 未新增)。", "没有支持成长任务的账号": "沒有支援成長任務的帳號", "没有支持成长任务的账号(需要 WorkBuddy 国内版)。": "沒有支援成長任務的帳號(需要 WorkBuddy 國內版)。", "没有支持新手福利的账号": "沒有支援新手福利的帳號", "没有支持新手福利的账号 —— 目前有 Loomy、小浣熊、CodeArts 三家。": "沒有支援新手福利的帳號 —— 目前有 Loomy、小浣熊、CodeArts 三家。", "没有支持新手福利的账号。": "沒有支援新手福利的帳號。", "没有支持活动福利的账号,请添加账号并更新提供商插件。": "沒有支援活動福利的帳號,請新增帳號並更新提供商外掛。", "没有符合条件的账号。": "沒有符合條件的帳號。", "没有符合筛选条件的签到记录": "沒有符合篩選條件的簽到記錄", "没有需要执行的任务": "沒有需要執行的任務", "活动奖励领取成功": "活動獎勵領取成功", "活动尚未开始(上游接口未部署)": "活動尚未開始(上游介面未部署)", "活动开始:{time}": "活動開始:{time}", "活动按自然日发新套餐,每天可领一次": "活動按自然日發新套餐,每天可領一次", "活动期内每天可再领一份 · 领取需完成滑块验证": "活動期內每天可再領一份 · 領取需完成滑塊驗證", "活动未开放或已结束,请重新查询": "活動尚未開放或已結束,請重新查詢", "活动福利": "活動福利", "活动福利接口不可用,请更新网关后重试": "活動福利介面無法使用,請更新閘道後重試", "活动窗口重试": "活動視窗重試", "活动窗口重试已关闭,等待窗口或活动下发的账号不会自动再试。": "活動視窗重試已關閉,等待視窗或活動下發的帳號不會自動再試。", "活动领取未成功,请重新查询后再试": "活動領取未成功,請重新查詢後再試", "活动(campaign)领取 · 每天 10:00 刷新": "活動(campaign)領取 · 每天 10:00 重新整理", "活跃上报与保活均未成功,且活动未开启": "活躍上報與保活均未成功,且活動未開啟", "活跃上报完成,但保活未成功且活动未开启": "活躍上報完成,但保活未成功且活動未開啟", "活跃上报完成,但活动未开启": "活躍上報完成,但活動未開啟", "活跃上报成功": "活躍上報成功", "活跃保活失败": "活躍保活失敗", "活跃保活完成": "活躍保活完成", "活跃保活完成,但活动未开启": "活躍保活完成,但活動未開啟", "活跃保活完成,但活跃上报失败且活动未开启": "活躍保活完成,但活躍上報失敗且活動未開啟", "添加条目": "新增條目", "添加模型": "新增模型", "清单为空 —— 保存后恢复缺省链": "清單為空 —— 儲存後恢復預設鏈", "清单里已经有「{name}」": "清單裡已經有「{name}」", "清空全部签到记录": "清空全部簽到記錄", "清空失败:{error}": "清空失敗:{error}", "清空筛选结果": "清空篩選結果", "清空签到记录": "清空簽到記錄", "滚动 24 小时签到;按插件返回的时间等待下一次领取,不以自然日重复领取": "滾動 24 小時簽到;依外掛回傳的時間等待下一次領取,不以自然日重複領取", "点「套餐明细」看领到了哪几份、什么时候生效;活动期内每天可再领": "點「套餐明細」看領到了哪幾份、什麼時候生效;活動期內每天可再領", "点击查询后查看任务,领取操作由网关执行": "點擊查詢後檢視任務,領取操作由閘道器執行", "点击行展开账号明细 · 单账号签到不受范围限制": "點擊行展開帳號明細 · 單帳號簽到不受範圍限制", "点进去查看任务并领取": "點進去檢視任務並領取", "状态未确认": "狀態未確認", "独立链路 · 只提供手动入口 · 不进自动签到": "獨立鏈路 · 只提供手動入口 · 不進自動簽到", "猫猫旅行": "貓貓旅行", "猫猫旅行一趟": "貓貓旅行一趟", "猫猫旅行失败:{error}": "貓貓旅行失敗:{error}", "猫猫旅行失败:{message}": "貓貓旅行失敗:{message}", "猫猫旅行定时排程": "貓貓旅行定時排程", "猫猫旅行:{message}": "貓貓旅行:{message}", "猫猫旅行:{n} 个动作,+{credit} 积分": "貓貓旅行:{n} 個動作,+{credit} 積分", "猫猫旅行:{n} 个动作,+{credit} 积分,{failed} 个失败": "貓貓旅行:{n} 個動作,+{credit} 積分,{failed} 個失敗", "用免费模型与网页会话维持账号活跃 · 不领取奖励": "用免費模型與網頁會話維持帳號活躍 · 不領取獎勵", "由官方按期自动发放,这里只展示记录,不重复领取。": "由官方按期自動發放,這裡僅展示記錄,不重複領取。", "确定删除「{name}」?删除后到点不再执行。": "確定刪除「{name}」?刪除後到點不再執行。", "确定删除「{name}」?删除后到点不再执行。": "確定刪除「{name}」?刪除後到點不再執行。", "确定删除「{name}」?对应的定时补签与活动重试也会一并移除,签到记录保留。": "確定刪除「{name}」?對應的定時補籤與活動重試也會一併移除,簽到記錄保留。", "确定删除当前筛选命中的 {n} 条签到记录?清空后无法恢复。": "確定刪除當前篩選命中的 {n} 條簽到記錄?清空後無法恢復。", "确定清空全部签到记录?清空后无法恢复。": "確定清空全部簽到記錄?清空後無法恢復。", "确定清空全部签到记录?清空后无法恢复。": "確定清空全部簽到記錄?清空後無法恢復。", "确定清空当前筛选出的签到记录?清空后无法恢复。": "確定清空當前篩選出的簽到記錄?清空後無法恢復。", "确认兑换": "確認兌換", "确认把这份权益兑换到当前账号?兑换后可能无法撤销。": "確認將這份權益兌換到目前帳號?兌換後可能無法撤銷。", "福利与套餐的逐项领取在桌面端签到中心完成": "福利與套餐的逐項領取在桌面版簽到中心完成", "移除 {name}": "移除 {name}", "窗口重试间隔(分钟,0 = 关闭)": "視窗重試間隔(分鐘,0 = 關閉)", "立即全部签到": "立即全部簽到", "立即巡检全部": "立即巡檢全部", "立即执行「{name}」会手动签到整个计划范围,不等待平台时点。窗口未开的平台可能仍无法领取。": "立即執行「{name}」會手動簽到整個計劃範圍,不等待平臺時點。視窗未開的平臺可能仍無法領取。", "等待时点": "等待時點", "等待签到区间": "等待簽到區間", "等待签到时间": "等待簽到時間", "签到": "簽到", "签到与补签计划已暂停,配置仍保留;手动执行不受总开关影响。": "簽到與補籤計劃已暫停,配置仍保留;手動執行不受總開關影響。", "签到中…": "簽到中…", "签到中心分区": "簽到中心分割槽", "签到中心标签页": "簽到中心標籤頁", "签到功能分类": "簽到功能分類", "签到区间": "簽到區間", "签到失败:{error}": "簽到失敗:{error}", "签到完成:{succeeded}/{total} 成功{active},{failed} 个失败": "簽到完成:{succeeded}/{total} 成功{active},{failed} 個失敗", "签到完成:{success}/{total} 成功,保活 {active},失败 {failed}": "簽到完成:{success}/{total} 成功,保活 {active},失敗 {failed}", "签到成功": "簽到成功", "签到提供商": "簽到提供商", "签到日期按北京时间计算": "簽到日期按北京時間計算", "签到时间": "簽到時間", "签到类型": "簽到類型", "签到范围": "簽到範圍", "签到触发时刻": "簽到觸發時刻", "签到计划": "簽到計劃", "签到记录": "簽到記錄", "签到记录时间范围": "簽到記錄時間範圍", "签到记录表": "簽到記錄表", "管理定时签到": "管理定時簽到", "累计签到记录": "累計簽到記錄", "结束时间不能早于开始时间,暂不支持跨天区间。": "結束時間不能早於開始時間,暫不支援跨天區間。", "结算于 {time}": "結算於 {time}", "编辑定时条目": "編輯定時條目", "编辑签到计划": "編輯簽到計劃", "缺少套餐开通凭证,请通过果办网页登录补齐授权": "缺少方案開通憑證,請透過果辦網頁登入補齊授權", "缺少开通凭证": "缺少開通憑證", "网关设备组件": "閘道裝置元件", "能量 {energy} · 连登 {streak} 天": "能量 {energy} · 連登 {streak} 天", "能量 {n}": "能量 {n}", "能量 {value}": "能量 {value}", "腾讯每日签到接口 · 仅国内版": "騰訊每日簽到介面 · 僅國內版", "自动巡检": "自動巡檢", "自动巡检已暂停:{reason}": "自動巡檢已暫停:{reason}", "自动执行已开启": "自動執行已開啟", "自动执行已暂停": "自動執行已暫停", "自动执行总开关": "自動執行總開關", "自动签到已关闭": "自動簽到已關閉", "自动签到已开启": "自動簽到已開啟", "自动签到执行中…": "自動簽到執行中…", "自定义时间": "自定義時間", "至少勾一家才能保存(不勾等于这条条目不签到)": "至少勾一家才能儲存(不勾等於這條條目不簽到)", "补签不早于": "補籤不早於", "补签不早于 {time}": "補籤不早於 {time}", "补签单独设置,只检查今天还没有签到的账号。": "補簽單獨設定,只檢查今天還沒有簽到的帳號。", "补签取「主签到区间结束加等待间隔」与「补签不早于」中较晚的时刻,不会提前补签尚未轮到的账号。": "補籤取「主簽到區間結束加等待間隔」與「補籤不早於」中較晚的時刻,不會提前補籤尚未輪到的帳號。", "补签在主签到区间结束后执行,只补未签到账号。": "補簽在主簽到區間結束後執行,只補未簽到帳號。", "补签已关闭": "補籤已關閉", "补签已关闭,不影响主签到;开启后会自动生成各平台的补签安排。": "補籤已關閉,不影響主簽到;開啟後會自動生成各平臺的補籤安排。", "补签已开启": "補籤已開啟", "补签时刻(只补今天没签上的账号,清空 = 关闭)": "補籤時刻(只補今天沒簽上的帳號,清空 = 關閉)", "补签检查": "補籤檢查", "补签计划": "補籤計劃", "触发会话活跃并观测积分变化;未观测到新发放时不会标为已签到": "觸發工作階段活躍並觀測積分變化;未觀測到新發放時不會標為已簽到", "计划名称": "計劃名稱", "订单 {order} · 第 {period} 期": "訂單 {order} · 第 {period} 期", "设备校验未就绪,部分活动可能不显示:{reason}": "裝置驗證尚未就緒,部分活動可能不會顯示:{reason}", "设置各平台每天的签到时间,按窗口分批执行。": "設定各平臺每天的簽到時間,按視窗分批執行。", "设置定时补签": "設定定時補籤", "设置每天的签到区间,各账号在区间内随机错峰执行。": "設定每天的簽到區間,各帳號在區間內隨機錯峰執行。", "设置活动窗口重试": "設定活動視窗重試", "设置补签": "設定補籤", "该权益已兑换,无需重复提交": "該權益已兌換,無需重複提交", "该活动已领取,无需重复领取": "該活動已領取,無需重複領取", "该账号当前没有可领取的限时活动": "該帳號目前沒有可領取的限時活動", "请填写 1–6 个 HH:MM 时刻,以逗号分隔": "請填寫 1–6 個 HH:MM 時刻,以逗號分隔", "请填写合法区间,结束不早于开始,并至少选择一家提供商。": "請填寫合法區間,結束不早於開始,並至少選擇一家提供商。", "请填写合法时刻并至少选择一家提供商": "請填寫合法時刻並至少選擇一家提供商", "请检查时间、间隔和次数是否在允许范围内。": "請檢查時間、間隔和次數是否在允許範圍內。", "请至少选择一个签到平台": "請至少選擇一個簽到平臺", "读取定时签到数据失败:{error}": "讀取定時簽到資料失敗:{error}", "读取签到数据失败:{error}": "讀取簽到資料失敗:{error}", "读取签到记录失败:{error}": "讀取簽到記錄失敗:{error}", "调整重试": "調整重試", "豆包工作今日领取仍未确认,请前往官方客户端查看;再次点击仅查询结果,不会重复领取": "豆包工作今日領取仍未確認,請前往官方用戶端查看;再次點擊僅查詢結果,不會重複領取", "豆包工作签到奖励已领取,已回查确认": "豆包工作簽到獎勵已領取,已回查確認", "豆包工作领取结果待确认,稍后只查询结果,不会重复提交领取": "豆包工作領取結果待確認,稍後只查詢結果,不會重複提交領取", "账号未使用官方果办网关地址,无法在此开通免费套餐": "帳號未使用官方果辦閘道位址,無法在此開通免費方案", "资格、额度与有效期以官方返回为准 · 领取不会购买或订阅套餐": "資格、額度與有效期以官方返回為準 · 領取不會購買或訂閱套餐", "跟随默认时间": "跟隨預設時間", "跳过 {n}": "跳過 {n}", "运营活动交付(领取 → 确认 → 回读核实)· 领的是套餐赠送积分": "運營活動交付(領取 → 確認 → 回讀核實)· 領的是套餐贈送積分", "还有 {n} 个平台未执行": "還有 {n} 個平臺未執行", "还没执行过": "還沒執行過", "还没有可签到的提供商。签到能力随提供商插件包提供,装好并添加账号后这里就会出现。": "還沒有可簽到的提供商。簽到能力隨提供商外掛包提供,裝好並新增帳號後這裡就會出現。", "还没有可签到的提供商。请安装或启用所连接网关的提供商插件。": "還沒有可簽到的提供商。請安裝或啟用所連線閘道器的提供商外掛。", "还没有可签到的账号。账号与插件均保存在所连接的网关上。": "還沒有可簽到的帳號。帳號與外掛均儲存在所連線的閘道器上。", "还没有定时条目 —— 点「添加条目」建一条,或到「签到中心」手动签到。": "還沒有定時條目 —— 點「新增條目」建一條,或到「簽到中心」手動簽到。", "还没有定时条目,添加一条或到签到中心手动签到": "還沒有定時條目,新增一條或到簽到中心手動簽到", "还没有签到计划,先选择平台和默认时间。": "還沒有簽到計劃,先選擇平臺和預設時間。", "还没有签到记录 —— 手动签到或等定时条目执行后,明细会出现在这里。": "還沒有簽到記錄 —— 手動簽到或等定時條目執行後,明細會出現在這裡。", "还没有记录": "還沒有記錄", "还没有账号完成全部任务,切到「全部」看看可完成的项。": "還沒有帳號完成全部任務,切到「全部」看看可完成的項。", "还没有账号领完新手福利,切到「全部」看看待领的项。": "還沒有帳號領完新手福利,切到「全部」看看待領的項。", "还没签到过": "還沒簽到過", "这个账号没有新手任务": "這個帳號沒有新手任務", "这段时间里还没有签到记录": "這段時間裡還沒有簽到記錄", "这里只修改定时签到;补签和活动重试配置保持原样,在「定时补签」页单独设置。": "這裡只修改定時簽到;補籤和活動重試配置保持原樣,在「定時補籤」頁單獨設定。", "这里只管理签到时间;补签与活动窗口重试在独立页设置。": "這裡只管理簽到時間;補籤與活動視窗重試在獨立頁設定。", "连登 {days} 天": "連登 {days} 天", "连登 {n} 天": "連登 {n} 天", "选填": "選填", "选择 {name}": "選擇 {name}", "选择平台后显示实际签到时间": "選擇平臺後顯示實際簽到時間", "部分": "部分", "都领到了,暂无待领的账号。": "都領到了,暫無待領的帳號。", "重新查询": "重新查詢", "重新检查": "重新檢查", "重签": "重籤", "重试": "重試", "重试关闭": "重試關閉", "重试已暂停": "重試已暫停", "重试开启": "重試開啟", "重试间隔(分钟)": "重試間隔(分鐘)", "间隔 {gap} 分钟 · 每账号每天最多重试 {limit} 次": "間隔 {gap} 分鐘 · 每帳號每天最多重試 {limit} 次", "间隔填 0 会关闭活动窗口重试;定时补签仍至少等待 1 分钟,不会一起关闭。": "間隔填 0 會關閉活動視窗重試;定時補籤仍至少等待 1 分鐘,不會一起關閉。", "限时体验套餐 · 领取需滑块验证码 · 逐份查看与领取": "限時體驗套餐 · 領取需滑塊驗證碼 · 逐份檢視與領取", "限时体验套餐(start-plan),活动期内每天一份 · 领取需滑块验证码": "限時體驗套餐(start-plan),活動期內每天一份 · 領取需滑塊驗證碼", "限时活动": "限時活動", "限时活动与体验套餐": "限時活動與體驗套餐", "限时活动与体验套餐 · 今天已领 {n} 份": "限時活動與體驗套餐 · 今天已領 {n} 份", "限时活动与体验套餐 · 查询后逐项领取 · 不影响每日签到": "限時活動與體驗方案 · 查詢後逐項領取 · 不影響每日簽到", "随机签到开始": "隨機簽到開始", "随机签到结束": "隨機簽到結束", "随签到计划暂停": "隨簽到計劃暫停", "需人工处理": "需人工處理", "需真实操作": "需真實操作", "需要人工验证": "需要人工驗證", "非活动期": "非活動期", "页面由手机端提供,签到能力由所连接网关的插件提供": "頁面由手機端提供,簽到能力由所連線閘道器的外掛提供", "项": "項", "预计发放:{time}": "預計發放:{time}", "领取": "領取", "领取中": "領取中", "领取中…": "領取中…", "领取免费 CodingPlan(按需:套餐有效时只回读额度)": "領取免費 CodingPlan(按需:方案有效時只回讀額度)", "领取后 {days} 天有效": "領取後 {days} 天有效", "领取失败": "領取失敗", "领取失败:{error}": "領取失敗:{error}", "领取奖励": "領取獎勵", "领取完成:{n} 项,+{points} 积分,{failed} 项失败": "領取完成:{n} 項,+{points} 積分,{failed} 項失敗", "领取成功:{planId}": "領取成功:{planId}", "领取截止:{time}": "領取截止:{time}", "领取时间:{time}": "領取時間:{time}", "领取福利": "領取福利", "领取结果待确认": "領取結果待確認", "领取结果待确认,请稍后查询;不会重复提交领取": "領取結果待確認,請稍後查詢;不會重複提交領取", "领取被拒绝": "領取被拒絕", "领取通常需要过一次滑块验证;活动套餐多为当天稍晚生效,领取后可在桌面端「账号」里看套餐明细。": "領取通常需要過一次滑塊驗證;活動套餐多為當天稍晚生效,領取後可在桌面版「帳號」裡看套餐明細。", "领取需要时会打开官方人机验证;活动套餐额度与编码套餐额度独立。": "領取需要時會開啟官方人機驗證;活動套餐額度與編碼套餐額度獨立。", "领取验证任务已结束,请到套餐明细查看结果": "領取驗證任務已結束,請到方案明細查看結果", "额度到期:{time}": "額度到期:{time}", "验证凭据正在提交,领取结果请查看签到记录": "正在提交驗證憑據,領取結果請查看簽到紀錄", "验证提交结果未确认,请查看签到记录,勿重复领取": "驗證提交結果尚未確認,請查看簽到紀錄,勿重複領取", "验证码组件加载失败,请重试": "驗證碼元件載入失敗,請重試", "验证码组件加载超时,请重试": "驗證碼元件載入超時,請重試", "验证码组件未加载,请重试": "驗證碼元件未載入,請重試", "默认 {time} · {n} 个平台 · {groups} 组签到时间": "預設 {time} · {n} 個平臺 · {groups} 組簽到時間", "默认使用第一把可用 API Key,想换就在上面选一把": "預設使用第一把可用 API Key,想換就在上面選一把", "默认签到时间": "預設簽到時間", "(专属 {time})": "(專屬 {time})", "(共 {n} 个账号)": "(共 {n} 個帳號)", "(已跑)": "(已跑)", "(插件未就绪,保留原配置)": "(外掛未就緒,保留原配置)", "(能量 / 连登读数本次未取到)": "(能量/連登讀數本次未取到)", ",日活保活 {n} 个": ",日活保活 {n} 個", " 字段": " 欄位", " 的 ": " 的 ", "{enabled} / {total} 个已开启": "{enabled} / {total} 個已開啟", "{name}开关": "{name}開關", "{name}间隔": "{name}間隔", "{name}间隔必须是 {min}–{max} 分钟的整数": "{name}間隔必須是 {min}–{max} 分鐘的整數", "{n} 秒后": "{n} 秒後", "✅ {task}:{summary}": "✅ {task}:{summary}", "✅ 已更新「{label}」": "✅ 已更新「{label}」", "「{name}」已执行": "「{name}」已執行", "上次执行 {time}": "上次執行 {time}", "上次执行 {time}({result})": "上次執行 {time}({result})", "上次执行中断,没有完整结果;请核对账号状态": "上次執行中斷,沒有完整結果;請核對帳號狀態", "下次执行 {time}": "下次執行 {time}", "下次执行 {time}({relative})": "下次執行 {time}({relative})", "仅维护过期或即将过期的凭证": "僅維護過期或即將過期的憑證", "仅记录状态与结果,不展示密钥或令牌。": "僅記錄狀態與結果,不展示金鑰或權杖。", "仅重试失败项": "僅重試失敗項", "仅重试这一项": "僅重試這一項", "任务正在执行中,请稍候": "任務正在執行中,請稍候", "任务清单": "任務清單", "任务配置保存在 ": "任務配置儲存在 ", "停留在「报表」页时按此间隔重新拉取统计数据;页面不可见时不请求。": "停留在「報表」頁時按此間隔重新拉取統計資料;頁面不可見時不請求。", "停留在「日志」页时按此间隔重新拉取系统事件;页面不可见时不请求。": "停留在「日誌」頁時按此間隔重新拉取系統事件;頁面不可見時不請求。", "停留在「请求日志」页时按此间隔重新拉取请求日志;页面不可见时不请求。": "停留在「請求日誌」頁時按此間隔重新拉取請求日誌;頁面不可見時不請求。", "全部触发方式": "全部觸發方式", "全部跳过": "全部跳過", "共 {n} 次执行": "共 {n} 次執行", "关闭自动维护不影响手动执行,也不影响对话请求所需的按需续期。": "關閉自動維護不影響手動執行,也不影響對話請求所需的按需續期。", "冷却中,{relative}重试": "冷卻中,{relative}重試", "冷却至 {time}": "冷卻至 {time}", "凭证变化": "憑證變化", "凭证已更新": "憑證已更新", "凭证未过期或临期": "憑證未過期或臨期", "凭证维护": "憑證維護", "凭证自动维护": "憑證自動維護", "分": "分", "分钟执行一次": "分鐘執行一次", "刚刚已执行,请稍后重试": "剛剛已執行,請稍後重試", "刷新前有效期": "重新整理前有效期", "刷新后有效期": "重新整理後有效期", "刷新记录": "重新整理記錄", "即将执行": "即將執行", "原因 / 说明": "原因 / 說明", "去账号页处理": "去帳號頁處理", "只刷新过期或即将过期的账号凭证": "只重新整理過期或即將過期的帳號憑證", "可填 {min}–{max}": "可填 {min}–{max}", "可填 {min}–{max} {unit}": "可填 {min}–{max} {unit}", "可填 {min}–{max} {unit}(默认 {def} {unit})": "可填 {min}–{max} {unit}(預設 {def} {unit})", "后台任务": "後臺任務", "固定模型清单": "固定模型清單", "失败重试": "失敗重試", "定时任务已刷新": "定時任務已重新整理", "定时查询积分": "定時查詢積分", "定期向 GitHub 查询最新发布版本,默认每 20 分钟一次。检查结果、排期和限流冷却跨重启保留;手动检查也会合并重复请求并遵守冷却。开关与间隔在「软件更新」面板的「更新设置」弹窗里配置(定时任务页不再渲染这一条)。": "定期向 GitHub 查詢最新發布版本,預設每 20 分鐘一次。檢查結果、排期和限流冷卻跨重啟保留;手動檢查也會合並重復請求並遵守冷卻。開關與間隔在「軟體更新」面板的「更新設定」彈窗裡配置(定時任務頁不再渲染這一條)。", "定期拉取最新模型清单,重启沿用排期与缓存。客户端读取模型列表的后台刷新也遵守本任务开关、间隔和失败冷却;手动获取模型可提前刷新。": "定期拉取最新模型清單,重啟沿用排期與快取。客戶端讀取模型列表的後臺重新整理也遵守本任務開關、間隔和失敗冷卻;手動獲取模型可提前重新整理。", "定期拉取最新模型清单,重启沿用排期与缓存。客户端读取模型列表的后台刷新也遵守本任务开关、间隔和失败冷却;手动获取模型可提前刷新。同一轮顺带刷新 models.dev 模型元数据(能力位与思考档位,可在设置页单独关闭)。": "定期拉取最新模型清單,重啟沿用排期與快取。客戶端讀取模型列表的後臺重新整理也遵守本任務開關、間隔和失敗冷卻;手動獲取模型可提前重新整理。同一輪順帶重新整理 models.dev 模型後設資料(能力位與思考檔位,可在設定頁單獨關閉)。", "定期获取各提供商的最新模型清单": "定期獲取各提供商的最新模型清單", "定期遍历账号,只刷新已过期或临期的凭证。重启后沿用上次排期,失败账号在冷却后重试;转发需要的按需续期不受此开关影响。": "定期遍歷帳號,只重新整理已過期或臨期的憑證。重啟後沿用上次排期,失敗帳號在冷卻後重試;轉發需要的按需續期不受此開關影響。", "客户端触发": "客戶端觸發", "尚未执行维护": "尚未執行維護", "尚未执行维护,自动或手动执行后会显示结果": "尚未執行維護,自動或手動執行後會顯示結果", "已{action}「{name}」": "已{action}「{name}」", "已在设置里关闭 models.dev 模型元数据": "已在設定裡關閉 models.dev 模型後設資料", "已执行": "已執行", "已更新 {n} 条": "已更新 {n} 條", "已更新间隔": "已更新間隔", "已续期并确认凭证更新": "已續期並確認憑證更新", "已获取最新模型目录": "已獲取最新模型目錄", "建议重试时间": "建議重試時間", "开启": "開啟", "当前没有可用的目录账号": "當前沒有可用的目錄帳號", "成功提供商": "成功提供商", "成功账号": "成功帳號", "手动触发": "手動觸發", "执行中断": "執行中斷", "执行中断,结果可能已部分生效,请先核对账号状态": "執行中斷,結果可能已部分生效,請先核對帳號狀態", "执行失败:{reason}": "執行失敗:{reason}", "执行时的结果快照,不随账号后续变化而改变": "執行時的結果快照,不隨帳號後續變化而改變", "执行时间": "執行時間", "执行明细": "執行明細", "执行汇总": "執行彙總", "执行间隔(分钟)": "執行間隔(分鐘)", "报表自动刷新": "報表自動重新整理", "指定账号不属于该提供商、未启用或没有可用凭证": "指定帳號不屬於該提供商、未啟用或沒有可用憑證", "提供商当前不可用,未执行目录更新": "提供商當前不可用,未執行目錄更新", "搜索账号或提供商": "搜尋帳號或提供商", "收起明细": "收起明細", "改动立即生效,不需要重启程序": "改動立即生效,不需要重啟程式", "改间隔": "改間隔", "无失败项": "無失敗項", "日志页自动刷新": "日誌頁自動重新整理", "明细状态筛选": "明細狀態篩選", "暂无维护记录,首次执行后会自动保存": "暫無維護記錄,首次執行後會自動儲存", "暂无记录": "暫無記錄", "最近一次": "最近一次", "有失败项": "有失敗項", "有效期已延长": "有效期已延長", "未使用账号": "未使用帳號", "未变更": "未變更", "未注册的提供商": "未註冊的提供商", "未返回失败原因": "未返回失敗原因", "本次无需更新,沿用现有状态": "本次無需更新,沿用現有狀態", "本轮共 {n} 项": "本輪共 {n} 項", "本轮没有符合条件的项目": "本輪沒有符合條件的項目", "查看凭证与模型目录的每次维护结果,失败和跳过都有原因": "檢視憑證與模型目錄的每次維護結果,失敗和跳過都有原因", "查看原因": "檢視原因", "查看明细": "檢視明細", "查看详情": "檢視詳情", "模型基础信息": "模型基礎資訊", "模型目录": "模型目錄", "模型目录刷新": "模型目錄重新整理", "模型目录更新": "模型目錄更新", "正在加载定时任务…": "正在載入定時任務…", "正在读取维护记录…": "正在讀取維護記錄…", "此前仅有汇总,尚无逐项记录": "此前僅有彙總,尚無逐項記錄", "每 {n} {unit}": "每 {n} {unit}", "每 {n} 分钟": "每 {n} 分鐘", "没有可显示的定时任务。后端未返回任务清单,请确认网关正在运行。": "沒有可顯示的定時任務。後端未返回任務清單,請確認閘道器正在執行。", "没有可维护的任务": "沒有可維護的任務", "没有后台任务": "沒有後臺任務", "没有符合筛选条件的维护记录": "沒有符合篩選條件的維護記錄", "沿用缓存或当前没有可用的目录来源": "沿用快取或當前沒有可用的目錄來源", "沿用缓存,尚未到刷新时间": "沿用快取,尚未到重新整理時間", "状态每 20 秒自动同步": "狀態每 20 秒自動同步", "由页面按间隔自动刷新": "由頁面按間隔自動重新整理", "登录授权已失效,需要重新登录该账号": "登入授權已失效,需要重新登入該帳號", "目录最近更新时间": "目錄最近更新時間", "立即执行": "立即執行", "立即检查": "立即檢查", "维护已完成,结果已保存": "維護已完成,結果已儲存", "维护已开始,结果会自动更新,可离开此页": "維護已開始,結果會自動更新,可離開此頁", "维护已执行,但完整结果未能保存;请先核对账号状态,不要反复执行": "維護已執行,但完整結果未能儲存;請先核對帳號狀態,不要反覆執行", "维护已结束,有失败项,请查看明细": "維護已結束,有失敗項,請檢視明細", "维护接口不可用,请更新网关并重新打开页面": "維護介面不可用,請更新閘道器並重新開啟頁面", "维护正在执行,完成后会显示逐项结果": "維護正在執行,完成後會顯示逐項結果", "维护类型": "維護類型", "维护记录保留 {days} 天,最多 {count} 次;仅保存结果,不保存密钥或令牌。": "維護記錄保留 {days} 天,最多 {count} 次;僅儲存結果,不儲存金鑰或權杖。", "维护设置": "維護設定", "维护设置未能保存到数据库,请检查磁盘空间和权限": "維護設定未能儲存至資料庫,請檢查磁碟空間與權限", "自动和手动维护,统一在这里查看": "自動和手動維護,統一在這裡檢視", "自动维护与手动执行共用同一份结果记录": "自動維護與手動執行共用同一份結果記錄", "自动维护已关闭": "自動維護已關閉", "自动触发": "自動觸發", "触发方式": "觸發方式", "该提供商不支持主动刷新凭证(没有续期手段)": "該提供商不支援主動重新整理憑證(沒有續期手段)", "该提供商使用固定模型清单": "該提供商使用固定模型清單", "该次执行未完成,没有完整明细": "該次執行未完成,沒有完整明細", "请求日志页自动刷新": "請求日誌頁自動重新整理", "账号已不存在,未执行维护": "帳號已不存在,未執行維護", "软件版本检查": "軟體版本檢查", "还没有执行记录": "還沒有執行記錄", "逐个提供商更新模型目录,模型基础信息单独列出结果": "逐個提供商更新模型目錄,模型基礎資訊單獨列出結果", "部分失败": "部分失敗", "部分设置可能已保存,请核对后重试:{reason}": "部分設定可能已儲存,請核對後重試:{reason}", "重新加载": "重新載入", "重试生成新记录,不覆盖本次结果": "重試生成新記錄,不覆蓋本次結果", "间隔不能为空(可填 {min}–{max} {unit})": "間隔不能為空(可填 {min}–{max} {unit})", "间隔必须在 {min}–{max} {unit} 之间(当前填的是 {value})": "間隔必須在 {min}–{max} {unit} 之間(當前填的是 {value})", "间隔必须是 {min}–{max} 的整数": "間隔必須是 {min}–{max} 的整數", "间隔必须是整数": "間隔必須是整數", "页面刷新由浏览器执行,只在页面打开时生效": "頁面重新整理由瀏覽器執行,只在頁面開啟時生效", "页面自动刷新": "頁面自動重新整理", "debug 及以上": "debug 及以上", "info 及以上": "info 及以上", "warn 及以上": "warn 及以上", "{matched} / {total} 条": "{matched} / {total} 筆", "{minutes} 分 {seconds} 秒": "{minutes} 分 {seconds} 秒", "{n} 个启动失败": "{n} 個啟動失敗", "{n} 个已就绪": "{n} 個已就緒", "{n} 个等待恢复": "{n} 個等待恢復", "{n} 条": "{n} 筆", "{n} 毫秒": "{n} 毫秒", "✅ 已导出 {count} 条日志到 {file}": "✅ 已匯出 {count} 筆日誌至 {file}", "上游": "上游", "上游接口请求": "上游 API 請求", "事件摘要": "事件摘要", "事件日志时间范围": "事件日誌時間範圍", "事件详情": "事件詳情", "仅 error": "僅 error", "仅显示调试记录,供排查问题使用。": "僅顯示偵錯紀錄,供排查問題使用。", "仅错误": "僅錯誤", "余额查询失败": "餘額查詢失敗", "余额查询完成": "餘額查詢完成", "余额查询未配置": "餘額查詢未設定", "信息": "資訊", "信息及以上": "資訊及以上", "全部事件": "全部事件", "全部分类": "全部分類", "全部级别": "全部層級", "共享运行环境尚未就绪,不代表这个插件本身损坏。请在插件页查看加载诊断。": "共用執行環境尚未就緒,不代表這個外掛本身損壞。請在外掛頁查看載入診斷。", "关联标识": "關聯識別碼", "出站参数归一": "出站參數正規化", "分类": "分類", "分页按折叠后的组数计算": "分頁按摺疊後的群組數計算", "加载插件": "載入外掛", "原始消息": "原始訊息", "原始记录": "原始紀錄", "原始记录 {n} 条": "原始紀錄 {n} 筆", "发生时间": "發生時間", "各阶段耗时": "各階段耗時", "启动结果": "啟動結果", "启动超时": "啟動逾時", "启动进程": "啟動程序", "处理建议": "處理建議", "复制原始记录": "複製原始紀錄", "复制失败": "複製失敗", "复制当前筛选结果": "複製目前篩選結果", "复制本页原始记录": "複製本頁原始紀錄", "导出": "匯出", "导出当前筛选": "匯出目前篩選", "已复制 {n} 条日志": "已複製 {n} 筆日誌", "已暂停刷新": "已暫停重新整理", "恢复刷新": "恢復重新整理", "折叠重复日志": "摺疊重複日誌", "按分类筛选": "按分類篩選", "按最低级别筛选": "按最低層級篩選", "插件名称": "外掛名稱", "插件启动失败": "外掛啟動失敗", "插件启动存在异常": "外掛啟動存在異常", "插件启动完成,{n} 个已就绪": "外掛啟動完成,{n} 個已就緒", "插件启动超时": "外掛啟動逾時", "插件已就绪": "外掛已就緒", "插件已恢复运行": "外掛已恢復執行", "插件暂不可用,等待运行环境恢复": "外掛暫時無法使用,等待執行環境恢復", "插件暂时无法使用": "外掛暫時無法使用", "插件未能就绪": "外掛未能就緒", "插件未能正常停止": "外掛未能正常停止", "插件编号": "外掛識別碼", "插件进程已退出": "外掛程序已結束", "搜索关键字": "搜尋關鍵字", "搜索插件、消息、提供商或账号": "搜尋外掛、訊息、提供商或帳號", "搜索插件、消息、提供商或账号…": "搜尋外掛、訊息、提供商或帳號…", "搜索消息、提供商或账号": "搜尋訊息、提供商或帳號", "搜索消息、提供商或账号…": "搜尋訊息、提供商或帳號…", "搜索消息关键词": "搜尋訊息關鍵字", "搜索消息关键词…": "搜尋訊息關鍵字…", "操作失败:{error}": "操作失敗:{error}", "日志视图": "日誌檢視", "日志详情": "日誌詳情", "日志详情视图": "日誌詳情檢視", "显示 {groups} 组 · 原始记录 {entries} 条": "顯示 {groups} 組 · 原始紀錄 {entries} 筆", "显示启动汇总和需要关注的事件;单个插件的正常启动记录在“全部事件”中。": "顯示啟動彙整和需要注意的事件;個別外掛的正常啟動紀錄在「全部事件」中。", "显示所有已保留的事件;技术信息可在详情中查看。": "顯示所有已保留的事件;技術資訊可在詳情中查看。", "暂停刷新": "暫停重新整理", "暂无日志": "暫無日誌", "暂无日志可导出": "暫無日誌可匯出", "有 {n} 条新日志": "有 {n} 筆新日誌", "服务": "服務", "未记录插件名称": "未記錄外掛名稱", "本次启动超过等待时限。请在插件页查看加载诊断,确认后重新加载。": "本次啟動超過等待時限。請在外掛頁查看載入診斷,確認後重新載入。", "查看日志详情:{message}": "查看日誌詳情:{message}", "查看最新": "查看最新", "模型 {model}": "模型 {model}", "次数": "次數", "正在加载日志…": "正在載入日誌…", "没有符合条件的日志": "沒有符合條件的日誌", "没有符合筛选条件的日志": "沒有符合篩選條件的日誌", "清空中…": "清空中…", "清空当前筛选": "清空目前篩選", "清空运行日志": "清空執行日誌", "状态码": "狀態碼", "用时 {duration}": "耗時 {duration}", "登记提供商": "登錄提供商", "相关功能暂不可用,原因见详情": "相關功能暫時無法使用,原因請見詳情", "确定清空全部运行日志?清空后无法恢复。": "確定清空全部執行日誌?清空後無法恢復。", "确定清空当前筛选出的 {count} 条日志?清空后无法恢复。": "確定清空目前篩選出的 {count} 筆日誌?清空後無法恢復。", "系统事件": "系統事件", "级别": "層級", "结束阅读": "結束閱讀", "结果未确认": "結果未確認", "脱敏": "去識別化", "自动刷新": "自動重新整理", "自动刷新已关闭": "自動重新整理已關閉", "自动签到": "自動簽到", "补充系统消息": "補充系統訊息", "警告": "警告", "警告 {n}": "警告 {n}", "警告及以上": "警告與錯誤", "计费接口请求": "計費 API 請求", "详细信息": "詳細資訊", "请在插件页查看加载诊断,确认原因后重新加载。": "請在外掛頁查看載入診斷,確認原因後重新載入。", "读取日志失败": "讀取日誌失敗", "调试": "偵錯", "调试 {n}": "偵錯 {n}", "调试详情": "偵錯詳情", "调试采集未开启,仅显示已保留的记录。可在设置中开启调试模式。": "偵錯收集未開啟,僅顯示已保留的紀錄。可在設定中開啟偵錯模式以收集新紀錄。", "运行日志已清空": "執行日誌已清空", "部分插件暂不可用。请在插件页查看异常插件的加载诊断。": "部分外掛暫時無法使用。請在外掛頁查看異常外掛的載入診斷。", "重要事件": "重要事件", "错误": "錯誤", "错误 {n}": "錯誤 {n}", "阅读模式": "閱讀模式", "阅读模式,列表保持不动": "閱讀模式,清單保持不動", "附加数据": "附加資料", " · {n} 进行中": " · {n} 進行中", " · 会话粘住": " · 會話粘住", "

    无响应原文
    ": "
    無響應原文
    ", "
    无法解析响应内容
    ": "
    無法解析響應內容
    ", "
    无法解析请求体(不是含 messages 数组的 JSON)
    ": "
    無法解析請求體(不是含 messages 陣列的 JSON)
    ", "
    无请求原文
    ": "
    無請求原文
    ", "
    调用工具 {name}
    ": "
    呼叫工具 {name}
    ", "响应原文": "響應原文", "思考过程": "思考過程", "请求原文": "請求原文", "HTTP {status},但响应体阶段出错": "HTTP {status},但響應體階段出錯", "HTTP {status},但响应体阶段出错:见错误列": "HTTP {status},但響應體階段出錯:見錯誤列", "{duration} / 首帧 {first}": "{duration} / 首幀 {first}", "{m}分{s}秒": "{m}分{s}秒", "{n}秒": "{n}秒", "{s}秒{ms}ms": "{s}秒{ms}ms", "↻ {n} 次": "↻ {n} 次", "↻ 重试 {n} 次": "↻ 重試 {n} 次", "✅ 压缩完成": "✅ 壓縮完成", "「仅看进行中」开启时,状态固定为进行中": "「僅看進行中」開啟時,狀態固定為進行中", "上游模型繁忙,请求已排进上游队列;网关正按上游建议的时长等待后重发(不是登录态或额度问题)": "上游模型繁忙,請求已排進上游佇列;閘道器正按上游建議的時長等待後重發(不是登入態或額度問題)", "上游没有返回积分消耗": "上游沒有返回積分消耗", "上游状态码: {status}": "上游狀態碼: {status}", "上游请求已发出,正在等第一个字节到达(模型的思考时间也在这段)": "上游請求已發出,正在等第一個位元組到達(模型的思考時間也在這段)", "上游返回错误": "上游返回錯誤", "下游请求的模型:{model}": "下游請求的模型:{model}", "仅清空报文原文": "僅清空報文原文", "仅看进行中": "僅看進行中", "令牌": "權杖", "体积": "體積", "保留 {count} 条请求记录 · 将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "保留 {count} 條請求記錄 · 將清理上游除錯報文 {upstream} 條、下游正文 {downstream} 條 · 資料庫佔用 {db}", "保留 {count} 条请求记录;将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。用量统计与报表不变。": "保留 {count} 條請求記錄;將清理上游除錯報文 {upstream} 條、下游正文 {downstream} 條。用量統計與報表不變。", "保留统计行与报表,只抹掉请求 / 响应正文。清理后详情弹窗的「预览对话」将无原文可看,统计数字分毫不动。": "保留統計行與報表,只抹掉請求 / 響應正文。清理後詳情彈窗的「預覽對話」將無原文可看,統計數字分毫不動。", "保留请求记录、用量统计与报表,同时清理上游调试报文和下游请求 / 响应正文。清理后「预览对话」与「原始报文」不再保留原文。有筛选时只清理命中请求的报文;无筛选时清空两侧全部报文。此操作无法恢复。": "保留請求記錄、用量統計與報表,同時清理上游除錯報文和下游請求 / 響應正文。清理後「預覽對話」與「原始報文」不再保留原文。有篩選時只清理命中請求的報文;無篩選時清空兩側全部報文。此操作無法恢復。", "全部删除": "全部刪除", "全部提供商": "全部提供商", "全部模型": "全部模型", "全部状态": "全部狀態", "全部请求数据": "全部請求資料", "共 {images} 张图片,复用 {cached} 张识读结果": "共 {images} 張圖片,複用 {cached} 張識讀結果", "共 {n} 次尝试": "共 {n} 次嘗試", "共 {n} 次尝试,最终由 {provider} 承载": "共 {n} 次嘗試,最終由 {provider} 承載", "其它": "其它", "内容按原样保存,请求头中的凭据字段已替换为 [redacted]": "內容按原樣儲存,請求頭中的憑據欄位已替換為 [redacted]", "内部重试": "內部重試", "切换路径:": "切換路徑:", "列表数据已刷新,请重试(关闭后重新打开这条详情)": "列表資料已重新整理,請重試(關閉後重新開啟這條詳情)", "删除日志记录本身。当前有筛选时只删命中的条目,按天聚合报表不受影响;无筛选时清空全部并重置报表。此方式无法恢复。": "刪除日誌記錄本身。當前有篩選時只刪命中的條目,按天聚合報表不受影響;無篩選時清空全部並重置報表。此方式無法恢復。", "删除请求记录,并同步清理对应的上游调试报文与下游正文。有筛选时只删除命中的记录,按天聚合报表不受影响;无筛选时清空全部并重置报表。此操作无法恢复。": "刪除請求記錄,並同步清理對應的上游除錯報文與下游正文。有篩選時只刪除命中的記錄,按天聚合報表不受影響;無篩選時清空全部並重置報表。此操作無法恢復。", "加载更早的请求": "載入更早的請求", "压缩中…": "壓縮中…", "压缩失败:{message}": "壓縮失敗:{message}", "压缩已在后台开始,完成后会自动提示": "壓縮已在後臺開始,完成後會自動提示", "压缩已在进行中": "壓縮已在進行中", "压缩已在进行中,接上它的进度等待完成": "壓縮已在進行中,接上它的進度等待完成", "压缩数据库": "壓縮資料庫", "压缩正在后台执行,完成后自动恢复": "壓縮正在後臺執行,完成後自動恢復", "原始报文": "原始報文", "原模型": "原模型", "发给上游的模型": "發給上游的模型", "另有 {missing} 次尝试未记录明细(只保留最早的 {kept} 条)": "另有 {missing} 次嘗試未記錄明細(只保留最早的 {kept} 條)", "另有 {n} 个词命中": "另有 {n} 個詞命中", "只显示正在转发中的请求(状态列按阶段显示:连接中 / 等待响应 / 响应中 / 重试中,用时列显示已用时)": "只顯示正在轉發中的請求(狀態列按階段顯示:連線中 / 等待響應 / 響應中 / 重試中,用時列顯示已用時)", "只看失败": "只看失敗", "只看成功": "只看成功", "只看进行中": "只看進行中", "命中了敏感词": "命中了敏感詞", "命中的敏感词": "命中的敏感詞", "响应中": "響應中", "响应体": "響應體", "响应头": "響應頭", "回收已删除数据占用的磁盘空间(checkpoint + VACUUM,后台执行)": "回收已刪除資料佔用的磁碟空間(checkpoint + VACUUM,後臺執行)", "图片处理用时:{n} 秒": "圖片處理用時:{n} 秒", "在设置 → 通用里开启「调试模式」后,新发生的请求才会保存报文": "在設定 → 通用裡開啟「除錯模式」後,新發生的請求才會儲存報文", "在路由页查看": "在路由頁檢視", "在途 {n}": "在途 {n}", "处理中": "處理中", "失败请求不记录用量": "失敗請求不記錄用量", "失败({status}):{error}": "失敗({status}):{error}", "失败:{error}": "失敗:{error}", "实际发给上游 {bytes} 字节": "實際發給上游 {bytes} 位元組", "客户端": "客戶端", "客户端请求的模型": "客戶端請求的模型", "将删除 {count} 条日志 · 其中 {raw} 条仍带报文原文 · 数据库占用 {db}": "將刪除 {count} 條日誌 · 其中 {raw} 條仍帶報文原文 · 資料庫佔用 {db}", "将删除 {count} 条请求记录 · 同步清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "將刪除 {count} 條請求記錄 · 同步清理上游除錯報文 {upstream} 條、下游正文 {downstream} 條 · 資料庫佔用 {db}", "将删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "將刪除 {count} 條請求記錄,並清理上游除錯報文 {upstream} 條、下游正文 {downstream} 條。", "尝试 {n} ·": "嘗試 {n} ·", "尝试明细": "嘗試明細", "尝试次数": "嘗試次數", "尝试链": "嘗試鏈", "工具结果": "工具結果", "工具结果 · {id}": "工具結果 · {id}", "工具结果图片": "工具結果圖片", "已删除 {count} 条": "已刪除 {count} 條", "已删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "已刪除 {count} 條請求記錄,並清理上游除錯報文 {upstream} 條、下游正文 {downstream} 條。", "已受理终止:上游连接已断开,列表稍后刷新为「请求已被手动终止」": "已受理終止:上游連線已斷開,列表稍後重新整理為「請求已被手動終止」", "已抹掉 {count} 条报文原文": "已抹掉 {count} 條報文原文", "已清理上游调试报文 {upstream} 条、下游正文 {downstream} 条;请求记录与报表已保留。": "已清理上游除錯報文 {upstream} 條、下游正文 {downstream} 條;請求記錄與報表已保留。", "已用时(请求仍在转发中)": "已用時(請求仍在轉發中)", "开启调试模式后仅记录新请求,历史对话无法补录;关闭不会删除已有记录。": "開啟偵錯模式後僅記錄新請求,歷史對話無法補錄;關閉不會刪除已有記錄。", "当前筛选下没有记录": "當前篩選下沒有記錄", "当前筛选范围": "當前篩選範圍", "当前网关未提供上游 / 下游清理统计,请更新网关后再清理。": "當前閘道器未提供上游 / 下游清理統計,請更新閘道器後再清理。", "成功": "成功", "成功({status})": "成功({status})", "所属请求": "所屬請求", "执行清理": "執行清理", "报文超过单条上限,请求体 / 响应体已按上限截断": "報文超過單條上限,請求體 / 響應體已按上限截斷", "抹掉原文": "抹掉原文", "按提供商筛选": "按提供商篩選", "按提供商筛选(只列日志里出现过的)": "按提供商篩選(只列日誌裡出現過的)", "按时间倒序,全量保留": "按時間倒序,全量保留", "按模型筛选": "按模型篩選", "按模型筛选(只列日志里出现过的;精确匹配模型名)": "按模型篩選(只列日誌裡出現過的;精確匹配模型名)", "按请求结果筛选": "按請求結果篩選", "换号链:{chain}": "換號鏈:{chain}", "排队中": "排隊中", "提供商 / 账号": "提供商 / 帳號", "提供商: {provider}": "提供商: {provider}", "提示": "提示", "敏": "敏", "敏感词": "敏感詞", "数据库占用包含主文件与 WAL 文件;清理后可点击「压缩数据库」回收空闲空间。": "資料庫佔用包含主檔案與 WAL 檔案;清理後可點擊「壓縮資料庫」回收空閒空間。", "断开上游连接,明细记为「请求已被手动终止」": "斷開上游連線,明細記為「請求已被手動終止」", "无报文原文(未开启「调试模式」,或已被清理)": "無報文原文(未開啟「除錯模式」,或已被清理)", "无结果记录": "無結果記錄", "旧版本保存的正文可能已截断,无法恢复缺失内容": "舊版本儲存的正文可能已截斷,無法恢復缺失內容", "时间": "時間", "暂无请求日志": "暫無請求日誌", "暂无请求日志,网关还没有转发过请求": "暫無請求日誌,閘道器還沒有轉發過請求", "最终承载:{picked}": "最終承載:{picked}", "有重试": "有重試", "本次请求消耗 {credit} 积分": "本次請求消耗 {credit} 積分", "本轮尝试失败,正在退避等待或切换到下一个账号": "本輪嘗試失敗,正在退避等待或切換到下一個帳號", "来源客户端": "來源客戶端", "来源客户端:{client}": "來源客戶端:{client}", "查看该请求的上游原始报文": "檢視該請求的上游原始報文", "模型": "模型", "模型映射:{from} → {to}": "模型對映:{from} → {to}", "模型测试": "模型測試", "模型管理页操作列那颗「测试」发起的请求:与真实请求同一条转发链路,但不计入报表统计": "模型管理頁操作列那顆「測試」發起的請求:與真實請求同一條轉發鏈路,但不計入報表統計", "正在加载请求日志…": "正在載入請求日誌…", "正在统计…": "正在統計…", "正文超过单条上限,可能已被截断": "正文超過單條上限,可能已被截斷", "没有符合筛选条件的请求": "沒有符合篩選條件的請求", "清理": "清理", "清理中…": "清理中…", "清理失败:{message}": "清理失敗:{message}", "清理方式": "清理方式", "清理请求已返回,但结果数据不完整,请刷新后确认。": "清理請求已返回,但結果資料不完整,請重新整理後確認。", "清理请求日志": "清理請求日誌", "清理预览数据不完整": "清理預覽資料不完整", "清空两侧原文": "清空兩側原文", "生产请求": "生產請求", "生成速度:输出 token ÷ 流式段用时(总用时 − 首响);流式段不足总用时一半时按总用时计": "生成速度:輸出 token ÷ 流式段用時(總用時 − 首響);流式段不足總用時一半時按總用時計", "用时": "用時", "用量": "用量", "确定对{scope}执行「{label}」?
    {summary}
    此操作无法恢复。": "確定對{scope}執行「{label}」?
    {summary}
    此操作無法恢復。", "确定对全部请求日志执行「{label}」?将处理 {count} 条,此操作无法恢复。": "確定對全部請求日誌執行「{label}」?將處理 {count} 條,此操作無法恢復。", "确定按当前筛选执行「{label}」?将处理 {count} 条,此操作无法恢复。": "確定按當前篩選執行「{label}」?將處理 {count} 條,此操作無法恢復。", "确定终止这条正在转发的请求?
    上游连接会立即断开,明细将记为「请求已被手动终止」。": "確定終止這條正在轉發的請求?
    上游連線會立即斷開,明細將記為「請求已被手動終止」。", "等待响应": "等待響應", "策略 {strategy} · 会话粘性 {sticky}{hit}": "策略 {strategy} · 會話粘性 {sticky}{hit}", "终止": "終止", "终止失败:{error}": "終止失敗:{error}", "终止请求": "終止請求", "结果": "結果", "缓存读取: - / 命中率: -": "快取讀取: - / 命中率: -", "缓存读取: {cache} / 命中率: {rate}": "快取讀取: {cache} / 命中率: {rate}", "耗时": "耗時", "脱敏命中:{words}": "脫敏命中:{words}", "被跳过:": "被跳過:", "识别到 User-Agent,但不属于已知的客户端类型:{ua}": "識別到 User-Agent,但不屬於已知的客戶端型別:{ua}", "识图用量按实际视觉账号单独记录,不混入原模型的回答用量。": "識圖用量按實際視覺帳號單獨記錄,不混入原模型的回答用量。", "详情": "詳情", "详情内容": "詳情內容", "请求体": "請求體", "请求图片": "請求圖片", "请求在任何账号接手之前就失败了": "請求在任何帳號接手之前就失敗了", "请求头": "請求頭", "请求已受理,正在选路、取凭证、建立上游连接": "請求已受理,正在選路、取憑證、建立上游連線", "请求日志列表": "請求日誌列表", "请求日志时间范围": "請求日誌時間範圍", "请求日志表": "請求日誌表", "请求正在转发中,用时列显示的是已用时": "請求正在轉發中,用時列顯示的是已用時", "请求筛选": "請求篩選", "请求详情": "請求詳情", "读取请求日志失败,详见控制台": "讀取請求日誌失敗,詳見控制台", "路由回放": "路由回放", "转发到上游的模型:{model}": "轉發到上游的模型:{model}", "轮次": "輪次", "辅助识图调用": "輔助識圖呼叫", "输入 Token": "輸入 Token", "输入 {input} · 输出 {output} · 总计 {total} · 缓存读 {cache}": "輸入 {input} · 輸出 {output} · 總計 {total} · 快取讀 {cache}", "输出 Token": "輸出 Token", "这条报文由旧版本截断保存,缺失内容无法恢复": "這條報文由舊版本截斷儲存,缺失內容無法恢復", "这条明细是一次模型测试(人工发起):走的是真实转发链路,但不计入报表统计": "這條明細是一次模型測試(人工發起):走的是真實轉發鏈路,但不計入報表統計", "这条明细没有记录提供商(旧数据或请求未走到转发)": "這條明細沒有記錄提供商(舊資料或請求未走到轉發)", "这条明细没有记录来源客户端(旧数据、模型测试,或请求未带 User-Agent)": "這條明細沒有記錄來源客戶端(舊資料、模型測試,或請求未帶 User-Agent)", "这条记录命中了敏感词,但没有留下命中明细": "這條記錄命中了敏感詞,但沒有留下命中明細", "这条记录的尝试明细未采集(该字段上线前的旧数据,或请求在转发前就失败)": "這條記錄的嘗試明細未採集(該欄位上線前的舊資料,或請求在轉發前就失敗)", "这条请求没有保存这一段报文": "這條請求沒有儲存這一段報文", "进入「{phase}」阶段已持续 {time}": "進入「{phase}」階段已持續 {time}", "进行中": "進行中", "进行中…": "進行中…", "连接中": "連線中", "速度": "速度", "重试 {n}": "重試 {n}", "重试 {n} 次": "重試 {n} 次", "重试中": "重試中", "重试次数": "重試次數", "面板内发起的模型调用,消耗额度并记录 Key,不计入生产报表": "面板內發起的模型呼叫,消耗額度並記錄 Key,不計入正式流量報表", "预览对话": "預覽對話", "预览读取失败": "預覽讀取失敗", "预览读取失败:{error}": "預覽讀取失敗:{error}", "额外识图用量:{n} Token": "額外識圖用量:{n} Token", "首响": "首響", "首响 {time}": "首響 {time}", "首响:上游首帧到达的耗时": "首響:上游首幀到達的耗時", "首响:上游首帧到达的耗时(请求仍在转发中)": "首響:上游首幀到達的耗時(請求仍在轉發中)", "首帧已到,上游内容正在下发": "首幀已到,上游內容正在下發", "(请求仍在转发中)": "(請求仍在轉發中)", "(账号:{account})": "(帳號:{account})", ",{n}毫秒后重试": ",{n}毫秒後重試", ",{n}秒后重试": ",{n}秒後重試", "{name}的列设置": "{name}的列設定", "「{label}」列的对齐": "「{label}」列的對齊", "中": "中", "共 0 条": "共 0 條", "共 {total} 条 · 当前第 {start}–{end} 条": "共 {total} 條 · 當前第 {start}–{end} 條", "共 {total} 条(全部显示)": "共 {total} 條(全部顯示)", "列": "列", "列设置": "列設定", "右": "右", "对齐": "對齊", "左": "左", "当前只有一页": "當前只有一頁", "拖动 ⋮⋮ 调整顺序": "拖動 ⋮⋮ 調整順序", "按住拖动调整列顺序": "按住拖動調整列順序", "显示「{label}」列": "顯示「{label}」列", "条": "條", "每页": "每頁", "每页条数": "每頁條數", "调整「{name}」的列:显示 / 隐藏、顺序、对齐": "調整「{name}」的列:顯示 / 隱藏、順序、對齊", "跳至": "跳至", "跳转到指定页": "跳轉到指定頁", "跳转到第 1–{pageCount} 页": "跳轉到第 1–{pageCount} 頁", "这一列已隐藏": "這一列已隱藏", "这一列正在显示": "這一列正在顯示", "页": "頁", "PID:{pid}": "PID:{pid}", "{label} · {port}": "{label} · {port}", "。已经把这个地址填进其它工具(Claude Code、Cherry Studio 等)的,需要一并改成新地址,否则那些工具会连不上。": "。已經把這個地址填進其它工具(Claude Code、Cherry Studio 等)的,需要一併改成新地址,否則那些工具會連不上。", "与当前端口相同,无需重启": "與當前連接埠相同,無需重啟", "例如 3066": "例如 3066", "即将结束以下进程:": "即將結束以下程序:", "已结束进程 {name}(PID {pid}),端口已释放": "已結束程序 {name}(PID {pid}),連接埠已釋放", "当前状态": "當前狀態", "当前端口 {port},网关运行正常。": "當前連接埠 {port},閘道器執行正常。", "换端口后要改的地方": "換連接埠後要改的地方", "新端口": "新連接埠", "更换端口": "更換連接埠", "更换网关端口": "更換閘道器連接埠", "本地网关正在监听 {url},可直接调用 OpenAI 兼容接口": "本地閘道器正在監聽 {url},可直接呼叫 OpenAI 相容介面", "校验中…": "校驗中…", "正在检查… · {port}": "正在檢查… · {port}", "正在确认网关是否已就绪": "正在確認閘道器是否已就緒", "正在重启…": "正在重啟…", "端口 {port} 上没有查到监听进程,请改用「更换端口」": "連接埠 {port} 上沒有查到監聽程序,請改用「更換連接埠」", "端口号": "連接埠號", "端口已改为 {port},正在重启…": "連接埠已改為 {port},正在重啟…", "端口已释放。现在重启程序让网关用这个端口启动?": "連接埠已釋放。現在重啟程式讓閘道器用這個連接埠啟動?", "端口需在 1024-65535 之间": "連接埠需在 1024-65535 之間", "端口需在 1024-65535 之间。1023 及以下是系统保留范围,普通程序无法监听。": "連接埠需在 1024-65535 之間。1023 及以下是系統保留範圍,普通程式無法監聽。", "结束中…": "結束中…", "结束占用端口的进程": "結束佔用連接埠的程序", "结束占用进程": "結束佔用程序", "结束失败:{reason}": "結束失敗:{reason}", "结束它会强制退出该程序未保存的数据。确认继续?": "結束它會強制退出該程式未儲存的資料。確認繼續?", "结束进程": "結束程序", "网关启动中… · {port}": "閘道器啟動中… · {port}", "网关启动失败": "閘道器啟動失敗", "网关地址会变成 ": "閘道器地址會變成 ", "网关运行中 · {port}": "閘道器執行中 · {port}", "该端口不可用": "該連接埠不可用", "路径:{path}": "路徑:{path}", "进程名:{name}": "程序名:{name}", "进程已结束,但端口仍被占用,建议改用「更换端口」": "程序已結束,但連接埠仍被佔用,建議改用「更換連接埠」", "重启": "重啟", "重启中…": "重啟中…", "重启失败:{reason}": "重啟失敗:{reason}", "重启程序": "重啟程式", "(未知)": "(未知)" }); +window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { "无可用账号:{reason}": "無可用帳號:{reason}", "AI 助手": "AI 助手", "API Key 用量详情": "API Key 用量詳情", "API Key 统计": "API Key 統計", "API Key(可选)": "API Key(選填)", "API 凭证": "API 憑證", "API 方法提交给插件的账号规范化入口;不会用该密钥发起 OAuth 登录。": "API 方式會提交至外掛的帳號正規化入口;不會用此金鑰發起 OAuth 登入。", "AWS Bedrock SSO": "AWS Bedrock SSO", "Agent": "Agent", "Agent 接管": "Agent 接管", "Agent2API · 多提供商本地网关": "Agent2API · 多提供商本地閘道器", "Agent2API 官方提供商": "Agent2API 官方提供商", "Agent2API 社区": "Agent2API 社群", "Codar(科搭)": "Codar(科搭)", "Cursor": "Cursor", "Devin": "Devin", "Factory": "Factory", "GitHub Copilot": "GitHub Copilot", "Grok": "Grok", "JSON 格式不正确": "JSON 格式不正確", "JoyCode(京东)": "JoyCode(京東)", "Kimi Work": "Kimi Work", "Linux (amd64)": "Linux (amd64)", "Linux (arm64)": "Linux (arm64)", "Magpie 官方": "Magpie 官方", "Magpie 官方与社区插件,共用一个按需下载的运行时": "Magpie 官方與社群外掛,共用一個按需下載的執行環境", "Magpie 官方名单": "Magpie 官方名單", "Magpie 官方和社区插件均通过兼容方式接入 Agent2API,不保证 100% 可用。": "Magpie 官方和社群外掛均透過相容方式接入 Agent2API,不保證 100% 可用。", "Magpie 推荐": "Magpie 推薦", "Magpie 插件": "Magpie 外掛", "Magpie 插件安装须知": "Magpie 外掛安裝須知", "Magpie 社区": "Magpie 社群", "Magpie 社区分发源": "Magpie 社群分發來源", "Magpie 脚本插件": "Magpie 腳本外掛", "MiniMax Code 国内/国际": "MiniMax Code 國內/國際", "MiniMax Code 的设备码登录、对话、模型目录、余额与每日签到;国内版与国际版可分别启停。": "MiniMax Code 的裝置碼登入、對話、模型目錄、餘額與每日簽到;國內版與國際版可分別啟停。", "Nous Portal": "Nous Portal", "OAuth 登录": "OAuth 登入", "Open Design": "Open Design", "Providers Hub": "Providers Hub", "QQ 群号": "QQ 群號", "Star 数暂未读取": "Star 數尚未讀取", "Star 更新于 {time}": "Star 更新於 {time}", "Token 用量": "Token 用量", "WPS 灵犀": "WPS 靈犀", "Windows (ARM64)": "Windows (ARM64)", "Windows (x64)": "Windows (x64)", "Zed": "Zed", "macOS (Apple Silicon)": "macOS (Apple Silicon)", "macOS (Intel)": "macOS (Intel)", "npm 包名": "npm 套件名稱", "npm 包名、GitHub 地址或 magpie:包名": "npm 套件名稱、GitHub 位址或 magpie:套件名稱", "npm 包名或 GitHub 地址": "npm 套件名稱或 GitHub 位址", "npm 未发布的包会尝试 Magpie 社区分发源;不会绕过完整性校验或执行安装脚本。": "npm 未發布的套件會嘗試 Magpie 社群分發來源;不會略過完整性驗證或執行安裝腳本。", "{count} 个 Star": "{count} 個 Star", "{count} 个插件": "{count} 個外掛", "{count} 家": "{count} 家", "{count} 家提供商": "{count} 家提供商", "{count} 家提供商 · 安装于 {time}": "{count} 家供應商 · 安裝於 {time}", "{key} 需要 true / false / null": "{key} 需要 true / false / null", "{key} 需要数字": "{key} 需要數字", "{label}(API)": "{label}(API)", "{label}(OAuth)": "{label}(OAuth)", "{n} 个启用": "{n} 個啟用", "{n} 个已限流": "{n} 個已限流", "{n} 个请求正在转发中,点开「请求日志」查看": "{n} 個請求正在轉發中,點開「請求日誌」檢視", "{n} 个账号 · {usable} 可用": "{n} 個帳號 · {usable} 可用", "{n} 个账号可用": "{n} 個帳號可用", "{n} 个账号启用": "{n} 個帳號啟用", "{n} 条失败请求未读,点开「请求日志」查看": "{n} 條失敗請求未讀,點開「請求日誌」檢視", "{n} 条错误日志未读,点开「日志」查看": "{n} 條錯誤日誌未讀,點開「日誌」檢視", "{n} 项 · {shown} 显示": "{n} 項 · {shown} 顯示", "{size} · 下载后可直接安装,无需跳转浏览器": "{size} · 下載後可直接安裝,無需跳轉瀏覽器", "{size} · 点击下载后可直接安装,无需跳转浏览器": "{size} · 點擊下載後可直接安裝,無需跳轉瀏覽器", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "{total} 個選單 · 顯示 {shown} · 隱藏 {hidden} · {groups} 個分組", "· 不会改动任何配置": "· 不會改動任何配置", "· 每次执行前列改动清单,等你确认": "· 每次執行前列改動清單,等你確認", "—": "—", "“本机”指运行网关的机器,不是打开面板的电脑。远程浏览器也可以发起,但网关本机可能需要安装客户端并已登录;是否可用由网关返回结果决定。": "「本機」指執行閘道的機器,不是開啟面板的電腦。遠端瀏覽器也可以發起,但閘道本機可能需要安裝用戶端並已登入;是否可用由閘道回傳結果決定。", "★ 下一单走它": "★ 下一單走它", "✅ GitHub 令牌已保存(加密存储,界面不再显示)": "✅ GitHub 權杖已儲存(加密儲存,介面不再顯示)", "✅ Token 已刷新": "✅ Token 已重新整理", "✅ 已将账号优先级调整到全局第一位": "✅ 已將帳號優先順序調整到全域第一位", "✅ 已清除界面保存的 GitHub 令牌(环境变量若配置过则继续生效)": "✅ 已清除介面儲存的 GitHub 權杖(環境變數若有設定則繼續生效)", "「{name}」匹配到多个账号:{list},请用完整账号名重试": "「{name}」匹配到多個帳號:{list},請用完整帳號名重試", "「工具全不勾选 → 不注入系统提示词」:想当纯聊天用时,不必再去关上面的开关。": "「工具全不勾選 → 不注入系統提示詞」:想當純聊天用時,不必再去關上面的開關。", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "「設定」是固定項,含它的分組不能整組隱藏;可以單獨隱藏組內其它選單", "上一页": "上一頁", "上次加载记录(非本次故障)": "上次載入記錄(非本次故障)", "下一页": "下一頁", "下拉刷新": "下拉重新整理", "下次自动重试:{time}": "下次自動重試:{time}", "下载与当前平台对应的插件包(zip),点右上角「安装插件包」选中它即可。": "下載與目前平台對應的外掛套件(zip),點右上角「安裝外掛套件」選取它即可。", "下载任务已交给网关,关闭手机不影响安装": "下載任務已交給閘道器,關閉手機不影響安裝", "下载进度": "下載進度", "不填写(可选)": "不填寫(選填)", "不限模型": "不限模型", "与电脑端一致:每 {n} 分钟": "與電腦端一致:每 {n} 分鐘", "为 Agent2API 扩展网页提供商,支持智谱清言的模型调用、访客与登录账号、凭证续期、模型目录、积分查询、签到和任务领取。": "為 Agent2API 擴充網頁提供商,支援智譜清言的模型呼叫、訪客與登入帳號、憑證續期、模型清單、積分查詢、簽到和任務領取。", "为网关扩展多家 AI 提供商,支持账号登录与导入、模型调用、凭证续期、模型目录、余额查询和签到。具体能力以各提供商的支持情况为准。": "為閘道擴充多家 AI 供應商,支援帳號登入與匯入、模型呼叫、憑證續期、模型清單、餘額查詢和簽到。具體能力以各供應商的支援情況為準。", "主导航": "主導航", "也可输入 file: 加网关电脑上的插件目录或 tgz 文件绝对路径;本地插件会复制安装,不修改源目录。": "也可輸入 file: 加上閘道電腦上的外掛目錄或 tgz 檔案絕對路徑;本機外掛會複製安裝,不修改來源目錄。", "书生·端砚": "書生·端硯", "了解并安装": "瞭解並安裝", "仅在该 API 方法需要额外密钥时填写": "僅在此 API 方式需要額外金鑰時填寫", "仅安装你信任的 npm 包、GitHub 仓库或 Magpie 社区分发包;完整性校验不等于安全审计。": "僅安裝你信任的 npm 套件、GitHub 儲存庫或 Magpie 社群分發套件;完整性驗證不等於安全稽核。", "仅安装你信任的 npm 包或 GitHub 仓库;版本与完整性检查不能保证脚本安全。": "僅安裝你信任的 npm 套件或 GitHub 儲存庫;版本與完整性檢查不能保證腳本安全。", "仅安装你信任的 npm 包;下载校验只能确认文件完整,不能保证脚本安全。": "僅安裝你信任的 npm 套件;下載驗證只能確認檔案完整,不能保證腳本安全。", "仅影响插件更新通道,与主程序独立。": "僅影響外掛更新通道,與主程式獨立。", "仅影响插件更新通道,与主程序独立。开启后可安装 beta 版;已使用 beta 时保持该通道,关闭后只看正式版且不会降级。": "僅影響插件更新通道,與主程式獨立。開啟後可安裝 beta 版;已使用 beta 時保持該通道,關閉後只看正式版且不會降級。", "仅自动更新已安装、已启用且通过可信签名校验的社区插件。新插件需手动安装,卸载后不会自动重新安装;未签名插件需手动更新。": "僅自動更新已安裝、已啟用且通過可信簽章驗證的社群外掛。新外掛需手動安裝,解除安裝後不會自動重新安裝;未簽章外掛需手動更新。", "从 GitHub 官方源下载固定提交。仓库根目录须有可直接运行的插件入口;不会执行构建脚本或安装依赖。": "從 GitHub 官方來源下載固定提交。儲存庫根目錄須有可直接執行的外掛入口;不會執行建置腳本或安裝相依套件。", "从 GitHub 官方源下载固定提交。仓库须包含可运行的提供商入口;安装运行依赖,但不执行构建和安装脚本。": "從 GitHub 官方來源下載固定提交。儲存庫須包含可執行的提供商入口;安裝執行依賴,但不執行建置和安裝指令碼。", "从 Magpie 社区官方分发目录下载,核验 SHA-512;更新与重装继续使用此来源。": "從 Magpie 社群官方分發目錄下載,驗證 SHA-512;更新與重新安裝繼續使用此來源。", "从 npm / GitHub / Magpie 安装": "從 npm / GitHub / Magpie 安裝", "从 npm / GitHub 安装": "從 npm / GitHub 安裝", "从 npm 安装": "從 npm 安裝", "从文件安装…": "從檔案安裝…", "从网关本机客户端导入": "從閘道本機用戶端匯入", "仓库没有已提交的可加载入口,请等待作者发布构建产物": "儲存庫沒有已提交的可載入入口,請等待作者發布建置產物", "代价": "代價", "代理:池": "代理:池", "令牌已生效,但写入磁盘失败(重启后会丢失)": "權杖已生效,但寫入磁碟失敗(重新啟動後會遺失)", "以下设置属于所连接网关,不是手机本地设置。": "以下設定屬於所連接閘道,不是手機本機設定。", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "會恢復預設的分組、順序與顯隱設定。你自建的分組會被刪除(組內選單不會丟)。", "会话内": "會話內", "会话已过期。重新登录后会自动回到手机端。": "會話已過期。重新登入後會自動回到手機端。", "会话粘性": "會話粘性", "低于限制器的阈值,转发时跳过该账号": "低於限制器的閾值,轉發時跳過該帳號", "余额不足或 Token 周期用量到顶,被限制器拦下,自动恢复后回来": "餘額不足或 Token 週期用量到頂,被限制器攔下,自動恢復後回來", "余额优先": "餘額優先", "作为 system 消息注入给助手": "作為 system 訊息注入給助手", "作者尚未提供插件介绍。": "作者尚未提供插件介紹。", "使用 Cloudflare 账号 ID 与 API Token,接入 Workers AI 对话和在线模型目录。": "使用 Cloudflare 帳號 ID 與 API Token,接入 Workers AI 對話和線上模型目錄。", "使用 Warp 终端的登录态,接入账号可用模型并查询 AI 请求额度。": "使用 Warp 終端的登入狀態,接入帳號可用模型並查詢 AI 請求額度。", "使用你在网关电脑上安装并登录的 agy CLI,通过 ACP 协议接入模型、工具调用和额度查询;与依赖 Antigravity IDE 的 Antigravity ACP 插件不同。": "使用你在閘道電腦上安裝並登入的 agy CLI,透過 ACP 協定接入模型、工具呼叫和額度查詢;與依賴 Antigravity IDE 的 Antigravity ACP 外掛不同。", "使用网关本机 gcloud / ADC 登录,接入 Vertex AI 模型并查询 Google Cloud 促销赠金。": "使用閘道本機 gcloud / ADC 登入,接入 Vertex AI 模型並查詢 Google Cloud 促銷贈金。", "例如:家里、公司": "例如:家裡、公司", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "側邊欄佈局模組未載入(ui/sidebar-layout.js 應在 app.js 之前引入)。", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "側邊欄沒有顯示任何選單。到「設定 → 顯示 → 側邊欄選單」裡開啟需要的項。", "侧边栏菜单": "側邊欄選單", "保存失败:{error}": "儲存失敗:{error}", "保存对话模型失败:{message}": "儲存對話模型失敗:{message}", "保存并继续": "儲存並繼續", "修改高级参数会等待在途任务结束后重新加载插件;专属开关实时生效。": "修改進階參數會等待進行中的任務結束後重新載入外掛;專屬開關即時生效。", "候选队列": "候選佇列", "停止": "停止", "停用": "停用", "允许的操作": "允許的操作", "允许签到及附带任务": "允許簽到及附帶任務", "先添加一台网关": "先新增一臺閘道器", "先选择插件声明的账号登录方式,再填写必需字段。OAuth 由共享登录桥负责等待、取消和错误;API 凭证通过账号规范化入口添加。": "先選擇外掛宣告的帳號登入方式,再填寫必填欄位。OAuth 由共用登入橋接負責等待、取消和錯誤;API 憑證透過帳號正規化入口新增。", "免鉴权调用": "免鑑權呼叫", "全不选": "全不選", "全局队列位次(转发按策略在此序上再排)": "全域佇列位次(轉發按策略在此序上再排)", "全部 API Key": "全部 API Key", "全部客户端": "全部客戶端", "全部更新": "全部更新", "共 {n} 条记录": "共 {n} 條記錄", "共享登录桥不可用,请重新打开面板": "共用登入橋接無法使用,請重新開啟面板", "共享运行环境尚未就绪,本插件没有明确的加载失败结果。": "共用執行環境尚未就緒,本外掛沒有明確的載入失敗結果。", "关": "關", "关闭菜单": "關閉選單", "兼容 OpenCode v1 / Magpie 提供商插件及其运行依赖;不加载界面、独立工具或 Pi 扩展。": "相容 OpenCode v1 / Magpie 提供商外掛及其執行依賴;不載入介面、獨立工具或 Pi 擴充功能。", "冷却": "冷卻", "准备运行环境": "準備執行環境", "凭证 JSON 含有不允许的字段:{key}": "憑證 JSON 含有不允許的欄位:{key}", "凭证 JSON 嵌套过深,请只粘贴该插件要求的凭证对象": "憑證 JSON 巢狀層級過深,請只貼上此外掛要求的憑證物件", "凭证 JSON 必须是非空对象,不能是数组或字符串": "憑證 JSON 必須是非空物件,不能是陣列或字串", "凭证 JSON 格式不正确,请检查括号和引号": "憑證 JSON 格式不正確,請檢查括號和引號", "凭证 JSON(必填)": "憑證 JSON(必填)", "凭证只在提交时发送到网关;备注名和代理请使用下面的字段,解析错误不会回显凭证内容。": "憑證只在提交時傳送至閘道;備註名稱和代理請使用下方欄位,解析錯誤不會顯示憑證內容。", "分布来自保留的日报来源明细;无法恢复的历史不反推客户端或模型。": "分佈來自保留的日報來源明細;無法恢復的歷史不反推客戶端或模型。", "分支、标签或提交(留空使用默认分支)": "分支、標籤或提交(留空使用預設分支)", "分组名": "分組名", "分组名,例如「常用」": "分組名,例如「常用」", "切换菜单": "切換選單", "列表 = 模型管理页里所有已启用的模型。助手走本地网关发起对话,消耗所选账号的额度。": "列表 = 模型管理頁裡所有已啟用的模型。助手走本地閘道器發起對話,消耗所選帳號的額度。", "创建并进入": "建立並進入", "创建管理员账号": "建立管理員帳號", "初始化已完成,正在等待校验和登记。": "初始化已完成,正在等待驗證和登記。", "初始化超时": "初始化逾時", "删除 {n} 条": "刪除 {n} 條", "删除分组": "刪除分組", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "刪除分組「{name}」?組內 {n} 個選單會移到「{target}」,不會丟。", "删除空分组「{name}」?": "刪除空分組「{name}」?", "删除这个分组(组内菜单移到第一组)": "刪除這個分組(組內選單移到第一組)", "刷新插件仓库": "重新整理外掛倉庫", "刷新清单": "重新整理清單", "刷新状态": "重新整理狀態", "加入插件 beta 版": "加入插件 beta 版", "加载中": "載入中", "加载助手设置失败:{message}": "載入助手設定失敗:{message}", "加载失败": "載入失敗", "加载失败:{error}": "載入失敗:{error}", "加载更多": "載入更多", "加载更早的记录": "載入更早的記錄", "加载状态": "載入狀態", "加载诊断": "載入診斷", "助手": "助手", "助手自己用哪个模型生成回复": "助手自己用哪個模型生成回覆", "助手设置读取失败,工具可能已过时。": "助手設定讀取失敗,工具可能已過時。", "助手走本地网关,消耗所选账号的额度": "助手走本地閘道器,消耗所選帳號的額度", "勾选即注入该工具;不勾选 = 助手看不到它": "勾選即注入該工具;不勾選 = 助手看不到它", "十几 MB": "十幾 MB", "升级会重新下载并校验插件包(约 {size}),装完立即生效,账号数据不受影响。": "升級會重新下載並校驗外掛包(約 {size}),裝完立即生效,帳號資料不受影響。", "协议版本": "協定版本", "单签": "單籤", "占比": "佔比", "即将就绪": "即將就緒", "卸载": "卸載", "卸载中…": "解除安裝中…", "卸载插件": "解除安裝外掛", "卸载插件包": "解除安裝外掛套件", "历史数据整理中": "歷史資料整理中", "历史明细不完整,输入、输出与缓存读数无法恢复": "歷史明細不完整,輸入、輸出與快取讀數無法恢復", "历史未记录 Key": "歷史未記錄 Key", "原生插件包,来自项目插件仓库": "原生外掛套件,來自專案外掛儲存庫", "原生辅助授权": "原生輔助授權", "原生辅助授权已失效或暂不可用,请重新选择并确认。": "原生輔助授權已失效或暫不可用,請重新選擇並確認。", "原生辅助程序不受 Wasm 沙箱限制,只授权你信任的已安装插件。辅助程序更新后需要重新确认。": "原生輔助程式不受 Wasm 沙箱限制,只授權你信任的已安裝外掛。輔助程式更新後需要重新確認。", "去下载": "去下載", "去登录": "去登入", "参数不完整(需要 account / enabled)": "引數不完整(需要 account / enabled)", "参数不完整(需要 account / position)": "引數不完整(需要 account / position)", "参数不完整(需要 provider / id / alias)": "引數不完整(需要 provider / id / alias)", "参数不完整(需要 provider / id / capabilities)": "引數不完整(需要 provider / id / capabilities)", "参数不完整(需要 provider / id / enabled)": "引數不完整(需要 provider / id / enabled)", "参数不完整(需要 provider / position)": "引數不完整(需要 provider / position)", "发现新版本 {latest}(当前 {current}),点开「设置 - 软件更新」可查看更新日志并下载": "發現新版本 {latest}(當前 {current}),點開「設定 - 軟體更新」可檢視更新日誌並下載", "发现新版本 {version}": "發現新版本 {version}", "发送": "傳送", "取消日期筛选": "取消日期篩選", "受影响的来源将在 {time} 后自动重试": "受影響的來源將在 {time} 後自動重試", "只改映射名,不动上游模型 ID;映射立即生效(新对话即可用)。": "只改對映名,不動上游模型 ID;對映立即生效(新對話即可用)。", "只注入工具定义": "只注入工具定義", "只统计已结束的生产请求;失败请求仍计入请求数,Token 用量沿用现有成功请求口径。": "只統計已結束的生產請求;失敗請求仍計入請求數,Token 用量沿用現有成功請求口徑。", "只读": "只讀", "只读工具": "只讀工具", "可以点击「刷新」读取插件仓库,或从本地 zip 安装插件。": "可以點擊「重新整理」讀取插件倉庫,或從本機 zip 安裝插件。", "可填 {min}–{max} 秒,关闭后保留间隔": "可填 {min}–{max} 秒,關閉後保留間隔", "可安装插件": "可安裝外掛", "可更新": "可更新", "可更新 v{version}": "可更新 v{version}", "可更新到 v{version}": "可更新至 v{version}", "可用": "可用", "可选,留空使用账号昵称": "選填,留空使用帳號暱稱", "各家提供商的转发、账号、签到与余额实现。装好之后这些提供商才会出现在「添加提供商」里。": "各家提供商的轉發、帳號、簽到與餘額實現。裝好之後這些提供商才會出現在「新增提供商」裡。", "各家提供商的转发与账号实现都在插件包里,不随本软件发布。装好插件后,模型转发、添加账号、签到与余额查询才会生效。": "各家供應商的轉發與帳號實作都在外掛套件裡,不隨本軟體發布。裝好外掛後,模型轉發、新增帳號、簽到與餘額查詢才會生效。", "后台只读取状态,不会自动弹出验证码;验证结果一次性使用,短时间内过期。": "背景只讀取狀態,不會自動彈出驗證碼;驗證結果僅能使用一次,短時間內失效。", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "含固定項「設定」,不可整組隱藏(可以單獨隱藏組內其它選單)", "启动较慢,仍在加载;尚未收到失败结果。": "啟動較慢,仍在載入;尚未收到失敗結果。", "启用后重新参与转发": "啟用後重新參與轉發", "启用插件 {name}": "啟用外掛 {name}", "四种组合的实际效果": "四種組合的實際效果", "回复由 {model} 生成 · 走本地网关": "回覆由 {model} 生成 · 走本地閘道器", "固定": "固定", "在 GitHub 上创建令牌(无需勾选任何权限)": "在 GitHub 上建立權杖(無需勾選任何權限)", "在全局队列里上移一位": "在全域佇列裡上移一位", "在全局队列里下移一位": "在全域佇列裡下移一位", "在网关下载并安装": "在閘道器下載並安裝", "填写账号登录所需信息并发起授权;等待、取消与失败原因由共享登录桥处理,设备码和操作指引会显示在上方。": "填寫帳號登入所需資訊並發起授權;等待、取消與失敗原因由共用登入橋接處理,裝置碼和操作指引會顯示在上方。", "备注名(可选)": "備註名(可選)", "复制失败,请手动选择复制": "複製失敗,請手動選擇複製", "复制订阅链接": "複製訂閱連結", "大小": "大小", "失败 · {status}": "失敗 · {status}", "失败退避": "失敗退避", "奖励 {bonus}": "獎勵 {bonus}", "套餐 {plan}": "套餐 {plan}", "套餐池人机验证": "套餐池人機驗證", "套餐池请求需要验证,请主动开始验证后重试请求": "套餐池請求需要驗證,請主動開始驗證後重試請求", "安装": "安裝", "安装 Agent2API 官方提供商": "安裝 Agent2API 官方提供商", "安装 {name}": "安裝 {name}", "安装、更新与启停均作用在这台网关上。插件平台由网关决定,与手机系统无关。": "安裝、更新與啟停均作用在這臺網關上。外掛平臺由閘道器決定,與手機系統無關。", "安装与更新插件时访问 GitHub 用。与「设置 → 更新 → 更新设置」里的同一项互通,填一次即可。不填也能用,只是匿名请求限额较低(60 次/小时)。": "安裝與更新外掛時存取 GitHub 用。與「設定 → 更新 → 更新設定」中的同一項互通,填一次即可。不填也能用,只是匿名請求上限較低(60 次/小時)。", "安装于 {time}": "安裝於 {time}", "安装包已就绪,点「安装」即可完成更新": "安裝包已就緒,點「安裝」即可完成更新", "安装插件包": "安裝外掛套件", "安装时间": "安裝時間", "安装脚本插件": "安裝腳本外掛", "完成时间:{time}": "完成時間:{time}", "官方": "官方", "官方与推荐来自 Magpie 官方名单;第三方来自 GitHub 的 magpie-plugin 标签,不代表官方推荐。": "官方與推薦來自 Magpie 官方名單;第三方來自 GitHub 的 magpie-plugin 標籤,不代表官方推薦。", "官方签名:包内容与发布者签的完全一致,未被改过": "官方簽章:包內容與發佈者簽的完全一致,未被改過", "定时": "定時", "定时任务": "定時任務", "定时检查在网关执行,关闭手机后仍然生效。": "定時檢查在閘道器執行,關閉手機後仍然生效。", "实际注入": "實際注入", "客户端分布": "客戶端分佈", "客户端统计": "客戶端統計", "宿主": "宿主", "宿主错误": "宿主錯誤", "对话": "對話", "对话模型": "對話模型", "对话模型已切换": "對話模型已切換", "将修改 {model} 的 {n} 项能力:": "將修改 {model} 的 {n} 項能力:", "将修改 {n} 个模型的启停状态:": "將修改 {n} 個模型的啟停狀態:", "将修改 {n} 个账号的启用状态(其中禁用 {k} 个):": "將修改 {n} 個帳號的啟用狀態(其中停用 {k} 個):", "将对 {model} 发起一次真实请求:": "將對 {model} 發起一次真實請求:", "将执行 {label}。": "將執行 {label}。", "将把「{provider}」整组移到第 {position} 顺位:": "將把「{provider}」整組移到第 {position} 順位:", "将把账号「{account}」移到第 {position} 顺位:": "將把帳號「{account}」移到第 {position} 順位:", "将改动 {n} 条映射({parts}):": "將改動 {n} 條對映({parts}):", "小米 MiMo": "小米 MiMo", "尚未取得插件清单": "尚未取得外掛清單", "尚未检查更新": "尚未檢查更新", "尚未登录": "尚未登入", "已下载": "已下載", "已下载,待安装": "已下載,待安裝", "已修改 {n} 个模型": "已修改 {n} 個模型", "已修改 {n} 个账号": "已修改 {n} 個帳號", "已修改 {n} 项能力": "已修改 {n} 項能力", "已停止这次回答。": "已停止這次回答。", "已全部取消勾选": "已全部取消勾選", "已关闭自动检查": "已關閉自動檢查", "已删除分组「{name}」": "已刪除分組「{name}」", "已加载": "已載入", "已加载 {n} 家": "已載入 {n} 家", "已勾选 {n} / {total}": "已勾選 {n} / {total}", "已勾选「{label}」": "已勾選「{label}」", "已勾选工具": "已勾選工具", "已取消「{label}」": "已取消「{label}」", "已启动安装器": "已啟動安裝器", "已填写(粘贴新令牌可覆盖)": "已填寫(貼上新權杖可覆蓋)", "已复制{label}": "已複製{label}", "已复制:{text}": "已複製:{text}", "已安装插件": "已安裝外掛", "已完成 {percent}%": "已完成 {percent}%", "已开启自动检查": "已開啟自動檢查", "已恢复推荐勾选": "已恢復推薦勾選", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "已恢復預設分組:概覽 / 轉發鏈路 / 診斷 / 系統", "已改动 {n} 条映射": "已改動 {n} 條對映", "已新建分组「{name}」,点组头的 + 把菜单移进来": "已新建分組「{name}」,點組頭的 + 把選單移進來", "已是最新版本": "已是最新版本", "已显示 {shown} / {total} 个提供商插件": "已顯示 {shown} / {total} 個提供商外掛", "已更新 {count} 个插件": "已更新 {count} 個外掛", "已更新 {done} 个插件,{failed} 个失败:{error}": "已更新 {done} 個外掛,{failed} 個失敗:{error}", "已注入 {n} / {total} 个工具 · 系统提示词:{state}": "已注入 {n} / {total} 個工具 · 系統提示詞:{state}", "已添加 {n} 台": "已新增 {n} 臺", "已添加的服务器": "已新增的伺服器", "已由其他插件接管,请到对应插件中管理。": "已由其他外掛接管,請到對應外掛中管理。", "已登录": "已登入", "已离线 · 显示的是缓存内容": "已離線 · 顯示的是快取內容", "已移到第 {n} 顺位": "已移到第 {n} 順位", "已签名": "已簽章", "已试过": "已試過", "并发上限 {n}": "併發上限 {n}", "并发已满,等一个在途回落再参与": "併發已滿,等一個在途回落再參與", "并发满": "併發滿", "开": "開", "开关和选项即时保存;输入项请点击对应的「保存」按钮。": "開關和選項即時儲存;輸入項請點擊對應的「儲存」按鈕。", "开始时间:{time}": "開始時間:{time}", "开始验证": "開始驗證", "当前": "當前", "当前一个工具都没勾选,助手只能纯聊天。去「设置 → AI 助手 → 工具」里勾上需要的工具。": "當前一個工具都沒勾選,助手只能純聊天。去「設定 → AI 助手 → 工具」裡勾上需要的工具。", "当前兼容无运行时 npm 依赖的提供商插件;不加载 Magpie 界面、Matrix 工具或 Pi 扩展。": "目前相容無執行時期 npm 相依性的提供者外掛;不載入 Magpie 介面、Matrix 工具或 Pi 擴充。", "当前平台": "目前平台", "当前平台暂无包": "目前平台尚無套件", "当前插件未申请原生辅助能力": "目前外掛未申請原生輔助能力", "当前暂不可安装": "目前暫不可安裝", "当前模型请求免人机验证": "目前模型請求免人機驗證", "当前版本 {current},最低可用版本 {minimum}。": "目前版本 {current},最低可用版本 {minimum}。", "当前版本 {version}": "當前版本 {version}", "当前网关": "當前閘道器", "当前网关平台暂无插件包": "當前閘道器平臺暫無外掛包", "当前网关要求插件版本不低于 v{version},补齐前暂不加载。": "目前閘道要求插件版本不低於 v{version},補齊前暫不載入。", "当前:已关闭(助手不收到任何系统提示词,工具定义照发)": "當前:已關閉(助手不收到任何系統提示詞,工具定義照發)", "当前:已开启 · 使用内置默认提示词(还没自定义)": "當前:已開啟 · 使用內建預設提示詞(還沒自定義)", "当前:已开启 · 自定义内容 {n} 字": "當前:已開啟 · 自定義內容 {n} 字", "影响转发": "影響轉發", "待就绪": "待就緒", "待确认": "待確認", "总剩余 {total}": "總剩餘 {total}", "恢复上游原值": "恢復上游原值", "恢复推荐": "恢復推薦", "恢复默认侧边栏": "恢復預設側邊欄", "成功 / 失败": "成功 / 失敗", "成功领取": "成功領取", "我会在动手前把改动列给你确认。": "我會在動手前把改動列給你確認。", "我信任所选辅助程序并允许它执行声明的本机操作": "我信任所選輔助程式並允許它執行宣告的本機操作", "我信任此插件来源,并允许它在网关电脑上运行。": "我信任此外掛來源,並允許它在閘道電腦上執行。", "所有菜单都已在这一组": "所有選單都已在這一組", "手动凭证 JSON": "手動憑證 JSON", "手动凭证 JSON(兼容入口)": "手動憑證 JSON(相容入口)", "手机端打开": "手機端開啟", "打开账号设置": "開啟帳號設定", "执行": "執行", "执行时刻": "執行時刻", "把菜单移入 {name}": "把選單移入 {name}", "把菜单移入「{name}」": "把選單移入「{name}」", "报表": "報表", "拖动分组 {name}": "拖動分組 {name}", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "拖動左側 ⠿ 調整順序(選單可以跨組拖);撥開關控制顯隱;點分組名可重新命名;組頭的 + 把別的選單移進來;眼睛按鈕隱藏整組。改動即時生效並記住,左側側邊欄就是結果。鍵盤也能排序:把手聚焦後按 Alt+↑ / ↓。", "拖动菜单 {name}": "拖動選單 {name}", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "拖動調整分組順序(Alt+↑ / ↓ 也可)", "拖动调整队列顺序": "拖動調整佇列順序", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "拖動調整順序,可跨組(Alt+↑ / ↓ 也可)", "按 API Key 筛选": "按 API Key 篩選", "按 Token": "按 Token", "按天请求趋势": "按天請求趨勢", "按客户端筛选": "按客戶端篩選", "按模型展开队列": "按模型展開佇列", "按访问网关的 API Key 统计生产请求,不包含助手对话和模型测试。停用、删除 Key 不会删除历史用量;密钥值不会进入报表。历史没有记录身份的请求单列,不能追溯到某把 Key。": "按存取閘道器的 API Key 統計生產請求,不包含助手對話和模型測試。停用、刪除 Key 不會刪除歷史用量;金鑰值不會進入報表。歷史沒有記錄身份的請求單列,不能追溯到某把 Key。", "按请求 User-Agent 识别的客户端类型统计,不代表设备或用户数。“其它”表示有 User-Agent 但未匹配已知类型;“未记录客户端”表示旧数据或请求未带 User-Agent。": "按請求 User-Agent 識別的客戶端型別統計,不代表裝置或使用者數。“其它”表示有 User-Agent 但未匹配已知型別;“未記錄客戶端”表示舊資料或請求未帶 User-Agent。", "按请求数": "按請求數", "按请求的模型展开 —— 与转发选路同一份排序,下一个请求会走 ★ 那位": "按請求的模型展開 —— 與轉發選路同一份排序,下一個請求會走 ★ 那位", "按间隔检查插件版本,在对应卡片显示更新;关闭后仍可手动检查。自动更新或自动下载开启时也使用此间隔。": "按間隔檢查插件版本,在對應卡片顯示更新;關閉後仍可手動檢查。自動更新或自動下載開啟時也使用此間隔。", "按需下载": "按需下載", "按需安装插件,为 AI 路由网关扩展提供商能力。插件独立于主程序更新,下载完成后自动校验并安装。": "按需安裝插件,為 AI 路由閘道擴充供應商能力。插件獨立於主程式更新,下載完成後自動驗證並安裝。", "换一组筛选条件,或把来源和状态都切回「全部」。": "換一組篩選條件,或把來源和狀態都切回「全部」。", "授权": "授權", "排序已保存,但列表刷新失败:{message}": "排序已儲存,但清單重新整理失敗:{message}", "排序未保存:{message}": "排序未儲存:{message}", "排序设置迁移失败:{message}": "排序設定移轉失敗:{message}", "排第 1 的接走所有请求,直到它不能答(限流 / 故障 / 额度尽)才轮到下一位 —— 就是「从上往下」的现状行为。": "排第 1 的接走所有請求,直到它不能答(限流 / 故障 / 額度盡)才輪到下一位 —— 就是「從上往下」的現狀行為。", "接入 Agnes AI 国际版:浏览器登录、在线模型目录、套餐用量与美元余额;与 Agnes Code 桌面版独立。": "接入 Agnes AI 國際版:瀏覽器登入、線上模型目錄、方案用量與美元餘額;與 Agnes Code 桌面版獨立。", "接入 Agnes Code:本机登录态或 accessToken、模型目录、积分与登录奖励观测。": "接入 Agnes Code:本機登入狀態或 accessToken、模型目錄、積分與登入獎勵觀測。", "接入 Codar(科搭):本机凭据、模型目录、积分与滚动窗口签到。": "接入 Codar(科搭):本機憑證、模型目錄、積分與滾動時間窗簽到。", "接入 DeepAI Code:网页登录、本机凭据、模型目录、额度查询与签到。": "接入 DeepAI Code:網頁登入、本機憑證、模型目錄、額度查詢與簽到。", "接入 JoyCode(京东):网页登录、企业租户、模型目录与额度明细。": "接入 JoyCode(京東):網頁登入、企業租戶、模型目錄與額度明細。", "接入 WPS 灵犀:网页登录、客户端导入、Cookie、模型目录与智点;签到及附带任务默认允许。": "接入 WPS 靈犀:網頁登入、用戶端匯入、Cookie、模型目錄與智點;簽到及附帶任務預設允許。", "接入中国移动云 MClaw:浏览器登录、在线模型目录、aitokens 额度与凭证续期。": "接入中國移動雲 MClaw:瀏覽器登入、線上模型目錄、aitokens 額度與憑證續期。", "接入书生·端砚墨点计划:浏览器登录、API Key、模型目录与墨点额度窗口。": "接入書生·端硯墨點計畫:瀏覽器登入、API Key、模型目錄與墨點額度時間窗。", "接口不兼容": "介面不相容", "接口文档": "介面文件", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "控制主側邊欄顯示哪些選單、按什麼順序、怎麼分組。隱藏隻影響導航顯示,不會撤銷頁面存取許可權;被隱藏的頁面仍可通過地址直接開啟。", "提供商启停": "提供商啟停", "提供商增强": "提供商增強", "提供商设置": "供應商設定", "提示词": "提示詞", "提示词开关": "提示詞開關", "插件": "外掛", "插件与当前网关的公共接口不兼容,暂未加载。": "外掛與目前閘道的公開介面不相容,暫未載入。", "插件仓库": "外掛倉庫", "插件仓库还没有发布任何版本。可以点「刷新」重试,或用「从文件安装…」选中本地 zip。": "外掛倉庫還沒有釋出任何版本。可以點「重新整理」重試,或用「從檔案安裝…」選中本地 zip。", "插件任务": "外掛任務", "插件包与主程序分开安装、分开升级。卸载插件后账号数据仍然保留,重新装回即可继续使用;仅该包提供的转发与添加账号需要插件,本体订阅不受影响。": "外掛套件與主程式分開安裝、分開升級。解除安裝後帳號資料仍保留,重新安裝即可繼續使用;僅該套件提供的轉發與新增帳號需要外掛,本體訂閱不受影響。", "插件包与主程序分开安装、分开升级。卸载插件后账号数据仍然保留,重新装回即可继续使用;但转发与添加账号需要插件在位。": "外掛套件與主程式分開安裝、分開升級。解除安裝外掛後帳號資料仍然保留,重新裝回即可繼續使用;但轉發與新增帳號需要外掛在位。", "插件包大小不能超过 {n} MiB": "外掛套件大小不能超過 {n} MiB", "插件包已卸载": "外掛套件已解除安裝", "插件包已安装": "外掛套件已安裝", "插件包已安装到 v{version}": "插件套件已安裝至 v{version}", "插件包已更新到 v{version}": "外掛包已更新到 v{version}", "插件包的可执行文件不在磁盘上(可能被手工删除或移动),请重新安装。": "外掛套件的執行檔不在磁碟上(可能被手動刪除或移動),請重新安裝。", "插件参数必须是 JSON 对象": "外掛參數必須是 JSON 物件", "插件发布信息读取失败,请稍后刷新": "外掛發布資訊讀取失敗,請稍後重新整理", "插件只声明了短信登录,但没有下发可用的动态表单;此界面不会猜测短信接口": "外掛只宣告了簡訊登入,卻未提供可用的動態表單;此介面不會猜測簡訊 API", "插件尚未声明有效版本,暂时无法安装": "外掛尚未宣告有效版本,暫時無法安裝", "插件尚未提供可下载的发布包": "外掛尚未提供可下載的發布套件", "插件已就绪,账号列表将自动同步。": "外掛已就緒,帳號清單將自動同步。", "插件文件缺失,请在电脑端重新安装插件包": "外掛檔案缺失,請在電腦端重新安裝外掛包", "插件文件缺失,请重新安装插件包": "外掛檔案缺失,請重新安裝外掛包", "插件更新未完成": "外掛更新未完成", "插件未启用或已不再申请此权限;已有授权仍可撤销。": "外掛未啟用或已不再申請此權限;既有授權仍可撤銷。", "插件未实现 auth.methods(501),且没有可用的旧版登录声明;仅保留需要插件确认的手动凭证 JSON 入口": "外掛未實作 auth.methods(501),且沒有可用的舊版登入宣告;僅保留需要外掛確認的手動憑證 JSON 入口", "插件未实现 auth.methods(501);以下入口仅依据旧版登录声明显示": "外掛未實作 auth.methods(501);以下入口僅依據舊版登入宣告顯示", "插件没有声明可用的账号登录方式,请更新插件或联系插件作者": "外掛未宣告可用的帳號登入方式,請更新外掛或聯絡外掛作者", "插件清单暂未完整读取": "外掛清單尚未完整讀取", "插件版本(留空使用 latest)": "外掛版本(留空使用 latest)", "插件状态已变更,但账号列表同步失败。请回到账号页点击「刷新」重试。": "外掛狀態已變更,但帳號清單同步失敗。請回到帳號頁點擊「重新整理」重試。", "插件独立安装与更新。卸载后账号数据仍会保留;脚本插件共用一个按需下载的运行时。": "外掛獨立安裝與更新。解除安裝後帳號資料仍會保留;腳本外掛共用一個按需下載的執行環境。", "插件登录指引": "外掛登入指引", "插件登录方式包含重复的输入字段": "外掛的登入方式包含重複的輸入欄位", "插件登录选择字段包含无效或重复的选项": "外掛的登入選擇欄位包含無效或重複的選項", "插件登录选择字段缺少选项列表": "外掛的登入選擇欄位缺少選項清單", "插件目录": "外掛目錄", "插件设置": "外掛設定", "插件设置已保存": "插件設定已儲存", "插件返回了无效的登录字段,请更新插件或联系作者": "外掛回傳了無效的登入欄位,請更新外掛或聯絡作者", "插件返回了无效的登录方式,请更新插件或联系作者": "外掛回傳了無效的登入方式,請更新外掛或聯絡作者", "插件选项": "外掛選項", "插件页面": "外掛頁面", "搜索…": "搜尋…", "搜索插件": "搜尋外掛", "撤销授权": "撤銷授權", "支持自动授权、设备码、手动授权码和插件声明的凭据表单;本机读取作用于网关电脑。": "支援自動授權、裝置碼、手動授權碼和外掛宣告的憑證表單;本機讀取作用於閘道電腦。", "改动立即生效;禁用后指向它的请求会落到下一个候选。": "改動立即生效;停用後指向它的請求會落到下一個候選。", "改动类工具": "改動類工具", "改成": "改成", "文件缺失": "檔案缺失", "文档": "文件", "新": "新", "新分组名": "新分組名", "新增 {n} 条": "新增 {n} 條", "新对话": "新對話", "新建分组": "新建分組", "无凭证": "無憑證", "无法解密": "無法解密", "无法读取插件更新进度,请刷新后查看结果。": "無法讀取外掛更新進度,請重新整理後查看結果。", "无法读取登录方式": "無法讀取登入方式", "日志": "日誌", "旧版本保存的正文可能已截断,无法恢复缺失内容": "舊版本儲存的正文可能已截斷,無法恢復缺失內容", "旧版浏览器登录暂不接收备注名和登录代理,请添加后在账号设置中调整。": "舊版瀏覽器登入暫不接受備註名稱和登入代理,請新增後在帳號設定中調整。", "旧版登录方式": "舊版登入方式", "映射名": "對映名", "显示 {name}": "顯示 {name}", "显示分组 {name}": "顯示分組 {name}", "显示这一组": "顯示這一組", "智能": "智慧", "暂不可安装": "暫不可安裝", "暂不可用": "暫不可用", "暂无可安装的插件": "暫無可安裝的插件", "暂无可用的原生辅助程序,请先安装并启用所需插件。": "暫無可用的原生輔助程式,請先安裝並啟用所需外掛。", "暂时无法获取插件状态,显示上次结果;这不代表插件启动失败。": "暫時無法取得外掛狀態,顯示上次結果;這不代表外掛啟動失敗。", "暂时查不到插件仓库({reason})。可以点「刷新」重试,或用「从文件安装…」选中本地 zip。": "暫時查不到外掛倉庫({reason})。可以點「重新整理」重試,或用「從檔案安裝…」選中本地 zip。", "暂未发布": "尚未發布", "暂未取得明确的加载结果,不能据此判断启动失败。": "暫未取得明確的載入結果,不能據此判斷啟動失敗。", "更多": "更多", "更新": "更新", "更新到 v{version}": "更新至 v{version}", "更新前无法继续调用模型;账号、配置和历史记录不会被删除。": "更新前無法繼續呼叫模型;帳號、設定和歷史記錄不會被刪除。", "更新或启停会等待共享宿主内的请求结束;账号数据始终由网关统一保存。": "更新或啟停會等待共用宿主內的請求結束;帳號資料始終由閘道統一儲存。", "更新/重装": "更新/重裝", "最大化": "最大化", "最小化": "最小化", "最早 {time} 恢复": "最早 {time} 恢復", "最近调用": "最近呼叫", "有": "有", "有 {count} 个插件可更新": "有 {count} 個外掛可更新", "有插件包的协议版本与当前网关不一致({versions}),请下载对应版本的插件包。": "有外掛套件的協定版本與目前閘道不一致({versions}),請下載對應版本的外掛套件。", "有新版本,重启后生效": "有新版本,重啟後生效", "有新版本:v{current} → v{latest}": "有新版本:v{current} → v{latest}", "有更新": "有更新", "服务器": "伺服器", "服务器已切换,请重新加载页面": "伺服器已切換,請重新載入頁面", "未加载": "未載入", "未同步": "未同步", "未就绪": "未就緒", "未授权": "未授權", "未登录": "未登入", "未知工具「{name}」:它在设置里可能刚被取消勾选,或这一版助手还不认识它。": "未知工具「{name}」:它在設定裡可能剛被取消勾選,或這一版助手還不認識它。", "未签名": "未簽章", "未签名包不会自动覆盖;点击「补齐插件」将安装官方签名包。": "未簽章套件不會自動覆寫;點擊「補齊插件」將安裝官方簽章套件。", "未签名:可以正常使用,但无法证明这个包出自官方;升级时同样只做格式校验": "未簽章:可以正常使用,但無法證明這個包出自官方;升級時同樣只做格式校驗", "未能保存自动刷新设置": "無法儲存自動重新整理設定", "未能读取自动刷新设置": "無法讀取自動重新整理設定", "未记录": "未記錄", "未记录客户端": "未記錄客戶端", "未运行": "未執行", "未选择服务器": "未選擇伺服器", "本周期消耗达到限制器上限,转发时跳过": "本週期消耗達到限制器上限,轉發時跳過", "本地网关监听状态": "本地閘道器監聽狀態", "本次初始化超过等待时限,已停止;可查看诊断后重试。": "本次初始化超過等待時限,已停止;可查看診斷後重試。", "本次加载未完成,请查看诊断。": "本次載入未完成,請查看診斷。", "本次用时 {n} 秒": "本次用時 {n} 秒", "权限": "權限", "来自 Magpie 社区的插件,共用一个按需下载的运行时": "來自 Magpie 社群的外掛,共用一個按需下載的執行環境", "来自环境变量": "來自環境變數", "来自环境变量 GITHUB_TOKEN": "來自環境變數 GITHUB_TOKEN", "松开刷新": "鬆開重新整理", "查余额": "查餘額", "查看 GitHub 仓库:{repository}": "查看 GitHub 儲存庫:{repository}", "查看全部": "檢視全部", "查看参数": "檢視引數", "查看发布说明": "查看發佈說明", "查看发布页面": "查看發布頁面", "查看提供商插件": "查看供應商外掛", "查看更新日志": "查看更新日誌", "查看结果": "檢視結果", "查看进度": "查看進度", "查询该账号的余额": "查詢該帳號的餘額", "标题总结设置": "標題總結設定", "桌面桥不可用(本页需要在 Agent2API 客户端里打开)": "桌面橋不可用(本頁需要在 Agent2API 客戶端裡開啟)", "检查更新失败": "檢查更新失敗", "检测到更新后自动下载、校验并安装已启用的官方签名插件。": "偵測到更新後自動下載、驗證並安裝已啟用的官方簽章插件。", "检测到更新后自动下载、校验并安装已启用的官方签名插件。未签名或第三方插件仍需手动更新。": "偵測到更新後自動下載、驗證並安裝已啟用的官方簽章插件。未簽章或第三方插件仍需手動更新。", "模型分布": "模型分佈", "模型管理": "模型管理", "次熔断": "次熔斷", "正在下载 Bun 运行时": "正在下載 Bun 執行環境", "正在下载…": "正在下載…", "正在下载脚本插件": "正在下載腳本外掛", "正在初始化插件,尚未收到失败结果。": "正在初始化外掛,尚未收到失敗結果。", "正在加载": "正在載入", "正在加载 · {n} 家提供商的账号暂未显示,就绪后自动恢复。": "正在載入 · {n} 家提供商的帳號暫未顯示,就緒後自動恢復。", "正在加载新插件…": "正在載入新插件…", "正在加载脚本插件": "正在載入腳本外掛", "正在启动": "正在啟動", "正在启动插件,账号将在就绪后自动恢复。": "正在啟動外掛,帳號將在就緒後自動恢復。", "正在完成人机验证…": "正在完成人機驗證…", "正在应用…": "正在應用…", "正在恢复原有脚本插件": "正在還原原有腳本外掛", "正在恢复旧版本插件…": "正在恢復舊版本插件…", "正在更新第 {index}/{total} 个…": "正在更新第 {index}/{total} 個…", "正在校验包内容…": "正在驗證套件內容…", "正在检查…": "正在檢查…", "正在检查或准备脚本运行环境。": "正在檢查或準備指令碼執行環境。", "正在自动补齐官方插件,不受日常更新开关和通道限制。": "正在自動補齊官方插件,不受日常更新開關和通道限制。", "正在补齐插件…": "正在補齊插件…", "正在识别二维码…": "正在識別二維碼…", "正在读取、校验并安装插件包…": "正在讀取、驗證並安裝插件套件…", "正在读取插件信息 {done}/{total}": "正在讀取外掛資訊 {done}/{total}", "正在读取插件列表…": "正在讀取插件清單…", "正在读取插件清单…": "正在讀取外掛清單…", "正在读取插件登录方式…": "正在讀取外掛登入方式…", "正在读取文件…": "正在讀取檔案…", "正在连接…": "正在連線…", "正在重试…": "正在重試…", "正在验证…": "正在驗證…", "此 OAuth 方法未声明备注名字段,账号名由插件获取;添加后可在账号设置中修改。": "此 OAuth 方式未宣告備註名稱欄位,帳號名稱由外掛取得;新增後可在帳號設定中修改。", "此插件不是提供商插件,当前无法安装": "此外掛不是提供商外掛,目前無法安裝", "此方式可能需要手动提交授权回调。完成官方登录后,按共享登录桥的提示粘贴完整回调地址;不要把回调地址当作 API Key 或 Token。": "此方式可能需要手動提交授權回呼。完成官方登入後,依共用登入橋接的提示貼上完整回呼網址;不要將回呼網址當作 API Key 或 Token。", "此旧版登录声明无法安全映射到动态表单,请联系插件作者": "此舊版登入宣告無法安全對應到動態表單,請聯絡外掛作者", "此登录方式需要由共享登录桥发起": "此登入方式需要由共用登入橋接發起", "每台服务器的登录状态各自独立保存,切换后不用重新登录。地址改掉后需要重新登录。": "每臺伺服器的登入狀態各自獨立儲存,切換後不用重新登入。地址改掉後需要重新登入。", "每日签到及一次性任务;可能消耗智点、发送对话并创建及解散群聊": "每日簽到及一次性任務;可能消耗智點、傳送對話並建立及解散群聊", "每条请求轮换到下一个可用账号;新会话交给最近最闲的那位。适合想把手里的号雨露均沾。": "每條請求輪換到下一個可用帳號;新會話交給最近最閒的那位。適合想把手裡的號雨露均霑。", "每轮": "每輪", "没有可恢复的维度明细": "沒有可恢復的維度明細", "没有可更新的版本": "沒有可更新的版本", "没有已启用的模型": "沒有已啟用的模型", "没有找到提供商「{provider}」的账号": "沒有找到提供商「{provider}」的帳號", "没有找到账号「{name}」": "沒有找到帳號「{name}」", "没有符合筛选条件的插件": "沒有符合篩選條件的外掛", "没有说明": "沒有說明", "没有近期套餐池请求,不生成验证码令牌": "沒有近期套餐池請求,不產生驗證碼權杖", "没给账号名": "沒給帳號名", "注入系统提示词": "注入系統提示詞", "活动": "活動", "浅色": "淺色", "消耗该账号额度": "消耗該帳號額度", "消耗额度": "消耗額度", "深色": "深色", "添加": "新增", "添加失败": "新增失敗", "添加服务器": "新增伺服器", "清单更新于 {time}": "清單更新於 {time}", "清空 = 回到内置默认(与「恢复默认」等价)。": "清空 = 回到內建預設(與「恢復預設」等價)。", "清除失败:{error}": "清除失敗:{error}", "点「编辑」弹窗改内容;开关关掉就整段不发。": "點「編輯」彈窗改內容;開關關掉就整段不發。", "点击重命名": "點擊重新命名", "熔断": "熔斷", "熔断时长(秒)": "熔斷時長(秒)", "版本 {version} · 从 GitHub 直接下载安装包": "版本 {version} · 從 GitHub 直接下載安裝包", "版本 {version} · 从网关下载安装包": "版本 {version} · 從閘道器下載安裝包", "版本 {version} · 更新包需从 Release 页面获取": "版本 {version} · 更新包需從 Release 頁面獲取", "环境变量 Key": "環境變數 Key", "用一句话让我查或改本机的模型转发配置。": "用一句話讓我查或改本機的模型轉發配置。", "用量占比最低的先用;没有读数的账号按队列位次排在有读数的后面。适合「谁空谁上」。": "用量佔比最低的先用;沒有讀數的帳號按佇列位次排在有讀數的後面。適合「誰空誰上」。", "用量详情": "用量詳情", "由其他插件接管": "由其他外掛接管", "电脑端已关闭「软件版本检查」,此处只做手动检查": "電腦端已關閉「軟體版本檢查」,此處只做手動檢查", "登录、模型调用、模型列表、余额查询和签到等功能,可能因插件实现或上游变化而不可用。": "登入、模型呼叫、模型清單、餘額查詢和簽到等功能,可能因外掛實作或上游變動而無法使用。", "登录指引 / 设备码授权": "登入指引 / 裝置碼授權", "登录支持自动完成的 OAuth/设备码和 API Key;要求手动回调的插件暂不支持。": "登入支援自動完成的 OAuth/裝置碼和 API Key;要求手動回呼的外掛暫不支援。", "登录方式说明": "登入方式說明", "登录桥未确认账号添加完成": "登入橋接未確認帳號新增完成", "登录面板": "登入面板", "监听 127.0.0.1": "監聽 127.0.0.1", "直接加载兼容的 Magpie / OpenCode v1 提供商包,多个插件共用一个 Bun 进程。": "直接載入相容的 Magpie / OpenCode v1 提供者套件,多個外掛共用一個 Bun 程序。", "直接说要改什么 / 查什么…(Enter 发送,Shift+Enter 换行)": "直接說要改什麼 / 查什麼…(Enter 傳送,Shift+Enter 換行)", "确定删除账号「{name}」?{note}": "確定刪除帳號「{name}」?{note}", "确定卸载「{name}」吗?卸载后这个包里的提供商将无法转发,也无法添加账号。账号数据本身不会被删除,重新安装后可以继续使用。": "確定解除安裝「{name}」嗎?解除安裝後這個套件裡的供應商將無法轉發,也無法新增帳號。帳號資料本身不會被刪除,重新安裝後可以繼續使用。", "确定卸载「{name}」吗?对应提供商将停止转发,账号数据仍然保留,重新安装后恢复。": "確定解除安裝「{name}」嗎?對應提供者將停止轉發,帳號資料仍然保留,重新安裝後還原。", "确认后立即生效": "確認後立即生效", "确认并安装": "確認並安裝", "确认授权": "確認授權", "社区": "社群", "社区插件": "社群外掛", "禁用会把账号移出转发队列;若这条线路没有别的可用账号,请求会直接失败。": "停用會把帳號移出轉發佇列;若這條線路沒有別的可用帳號,請求會直接失敗。", "禁用后不参与转发,余额仍可查": "停用後不參與轉發,餘額仍可查", "移入「{name}」": "移入「{name}」", "稍后": "稍後", "空分组 · 点组头的 + 把菜单移进来": "空分組 · 點組頭的 + 把選單移進來", "立即刷新": "立即重新整理", "立即升级": "立即升級", "第 {current} / {total} 页": "第 {current} / {total} 頁", "第三方": "第三方", "等待前面的插件完成,不代表加载失败。": "等待前面的外掛完成,不代表載入失敗。", "等待加载": "等待載入", "等待当前任务结束,插件继续服务…": "等待目前任務結束,插件繼續服務…", "等待窗口": "等待視窗", "等待脚本插件的在途请求和登录完成": "等待腳本外掛的進行中請求和登入完成", "等待账号登录完成…": "等待帳號登入完成…", "等待运行环境恢复": "等待執行環境恢復", "等这一轮跑完…": "等這一輪跑完…", "签到中心": "簽到中心", "签到及插件附带任务;可能消耗额度,具体行为由插件决定": "簽到及外掛附帶任務;可能消耗額度,具體行為由外掛決定", "签到及附带任务默认允许,实际执行遵循签到中心的开关和计划。": "簽到及附帶任務預設允許,實際執行遵循簽到中心的開關和排程。", "管理所连接网关的插件,不在手机上安装提供商插件": "管理所連線閘道器的外掛,不在手機上安裝提供商外掛", "粘贴 GitHub 令牌(ghp_… / github_pat_…)": "貼上 GitHub 權杖(ghp_… / github_pat_…)", "粘贴插件要求的 JSON 对象,不要包含 provider、name、proxy 或登录流程控制字段": "貼上外掛要求的 JSON 物件,不要包含 provider、name、proxy 或登入流程控制欄位", "系统提示词 + 工具定义": "系統提示詞 + 工具定義", "系统提示词已保存": "系統提示詞已儲存", "系统提示词已关闭": "系統提示詞已關閉", "系统提示词已开启": "系統提示詞已開啟", "统计排序": "統計排序", "继续安装": "繼續安裝", "缓存读取": "快取讀取", "编辑服务器": "編輯伺服器", "编辑系统提示词": "編輯系統提示詞", "网关 Key": "閘道器 Key", "网关插件": "閘道器外掛", "网关正在下载…": "閘道器正在下載…", "网关正在安装…": "閘道器正在安裝…", "网关正在校验…": "閘道器正在校驗…", "网关没有返回有效的登录方式列表,无法确认该插件的登录能力": "閘道沒有回傳有效的登入方式清單,無法確認此外掛的登入能力", "网关运行中": "閘道器執行中", "网络不可达": "網路不可達", "网络代理": "網路代理", "网页提供商": "網頁提供商", "网页登录(旧版声明)": "網頁登入(舊版宣告)", "能力位决定下游看到的声明(能不能贴图、能塞多少上下文),不改上游的真实行为。": "能力位決定下游看到的宣告(能不能貼圖、能塞多少上下文),不改上游的真實行為。", "脚本不是安全沙箱,可以访问网关所在电脑的文件和网络。不要安装来历不明的插件。": "腳本不是安全沙箱,可以存取閘道所在電腦的檔案和網路。不要安裝來歷不明的外掛。", "脚本插件共用运行环境;重试会等待当前任务结束,不会删除账号或重新安装插件。": "指令碼外掛共用執行環境;重試會等待目前工作結束,不會刪除帳號或重新安裝外掛。", "脚本签到可能包含额外任务并消耗额度。WPS 灵犀还可能发送对话、创建及解散群聊;授权后会接入现有自动签到计划。": "腳本簽到可能包含額外任務並消耗額度。WPS 靈犀還可能傳送對話、建立及解散群聊;授權後會接入現有自動簽到計畫。", "自动": "自動", "自动刷新间隔(秒)": "自動重新整理間隔(秒)", "自动匹配平台": "自動匹配平臺", "自动安装": "自動安裝", "自动更新插件": "自動更新插件", "自动检查插件更新": "自動檢查插件更新", "自动维护": "自動維護", "至少要保留一个分组": "至少要保留一個分組", "补签": "補籤", "补齐插件": "補齊插件", "订阅里的节点会自动同步进下方代理池,账号即可引用。": "訂閱裡的節點會自動同步進下方代理池,帳號即可引用。", "订阅里的节点会被内核起成本地监听器,镜像到下方代理池(账号按 id 引用,与本页其它出口同一用法)。": "訂閱裡的節點會被核心起成本地監聽器,映象到下方代理池(帳號按 id 引用,與本頁其它出口同一用法)。", "订阅链接必须是 http:// 或 https:// 开头": "訂閱連結必須是 http:// 或 https:// 開頭", "设备授权码:{code}": "裝置授權碼:{code}", "设备码授权时,请按网关给出的指引在官方页面确认设备授权码。没有授权地址不等于失败,可能需要在网关本机客户端完成操作;请以共享登录桥返回的状态为准。": "裝置碼授權時,請依閘道提供的指引在官方頁面確認裝置授權碼。沒有授權網址不等於失敗,可能需要在閘道本機用戶端完成操作;請以共用登入橋接回傳的狀態為準。", "设置": "設定", "设置不可隐藏(隐藏了只能清缓存找回来)": "設定不可隱藏(隱藏了只能清快取找回來)", "设置已生效,但写入磁盘失败(重启后会恢复原设置)": "設定已生效,但寫入磁碟失敗(重新啟動後會恢復原設定)", "设置未同步": "設定未同步", "诊断": "診斷", "诊断信息": "診斷資訊", "该提供商已不在运行时目录中,请返回列表重新选择": "此供應商已不在執行時清單中,請返回清單重新選擇", "该登录方式没有可选项,无法提交;请更新插件或联系作者": "此登入方式沒有可選項,無法提交;請更新外掛或聯絡作者", "请允许安装未知来源应用后重试": "請允許安裝未知來源應用後重試", "请先在插件页授权签到及附带任务": "請先在外掛頁授權簽到及附帶任務", "请先粘贴 GitHub 令牌": "請先貼上 GitHub 權杖", "请先选择有效的 OAuth 登录方式": "請先選擇有效的 OAuth 登入方式", "请在 Release 页面下载后通过 TestFlight 或 App Store 安装": "請在 Release 頁面下載後通過 TestFlight 或 App Store 安裝", "请填一个分组名": "請填一個分組名", "请填写订阅名称": "請填寫訂閱名稱", "请填写非空的凭证 JSON 对象,且不超过 256 KiB": "請填寫非空的憑證 JSON 物件,且不超過 256 KiB", "请查看上方原因,稍后刷新重试。": "請查看上方原因,稍後重新整理重試。", "请根据不兼容原因更新插件或网关;不会要求两者版本号一致。": "請根據不相容原因更新外掛或閘道;不會要求兩者版本號一致。", "请求失败": "請求失敗", "请求失败:{message}": "請求失敗:{message}", "请求数": "請求數", "请求日志": "請求日誌", "请确认": "請確認", "请稍候": "請稍候", "请输入 {min}–{max} 之间的整数秒数": "請輸入 {min}–{max} 之間的整數秒數", "请选择 {label} 的有效选项": "請選擇 {label} 的有效選項", "读取完成的插件会陆续显示,无需停留在此页面等待。": "讀取完成的外掛會陸續顯示,無需停留在此頁面等待。", "读取插件仓库失败": "讀取外掛倉庫失敗", "读取插件状态失败:{error}": "讀取外掛狀態失敗:{error}", "读取文件失败": "讀取檔案失敗", "读取消耗排序失败:{message}": "讀取消耗排序失敗:{message}", "读取设置失败:{error}": "讀取設定失敗:{error}", "账号 / 登录出网代理": "帳號 / 登入對外連線代理", "账号不在当前队列里": "帳號不在當前佇列裡", "账号列表响应异常": "帳號清單回應異常", "账号已删除": "帳號已刪除", "账号已在全局队列第一位": "帳號已在全域佇列第一位", "账号排序接口不可用,请确认网关与界面已更新": "帳號排序 API 無法使用,請確認閘道器與介面已更新", "账号登录方式": "帳號登入方式", "趋势统计指标": "趨勢統計指標", "趋势统计维度": "趨勢統計維度", "跟随系统": "跟隨系統", "路由策略": "路由策略", "转发失败的账号休息一会儿再回来(连续失败翻倍,上限 1 小时)": "轉發失敗的帳號休息一會兒再回來(連續失敗翻倍,上限 1 小時)", "转发能力": "轉發能力", "轮流均摊": "輪流均攤", "软件版本检查设置不可用": "軟體版本檢查設定不可用", "输入 / 输出": "輸入 / 輸出", "输入这台网关的管理员账号与密码。": "輸入這臺網關的管理員帳號與密碼。", "运行日志": "執行日誌", "运行时不内置于安装包,首次安装脚本插件时自动下载并校验。": "執行環境不內建於安裝套件,首次安裝腳本外掛時自動下載並驗證。", "运行正常 · {url}": "執行正常 · {url}", "运行状态": "執行狀態", "返回": "返回", "还有额度时被 429 的账号排到队尾,轮一圈才回来 —— 负载摊开而不是每次回到第 1 个": "還有額度時被 429 的帳號排到隊尾,輪一圈才回來 —— 負載攤開而不是每次回到第 1 個", "还没有安装任何提供商插件包": "尚未安裝任何供應商外掛套件", "还没有签到记录": "還沒有簽到記錄", "还没有订阅:粘贴订阅链接,或从图片识别二维码导入。": "還沒有訂閱:貼上訂閱連結,或從圖片識別二維碼匯入。", "还没有选择对话模型:先在下方选一个(或去「设置 → AI 助手」里选)。": "還沒有選擇對話模型:先在下方選一個(或去「設定 → AI 助手」裡選)。", "这一版没有提供 Android 安装包:{reason}": "這一版沒有提供 Android 安裝包:{reason}", "这一项已隐藏": "這一項已隱藏", "这一项正在显示": "這一項正在顯示", "这个包提供的提供商(可单独停用某一家)": "這個套件提供的供應商(可單獨停用某一家)", "这个模型下没有可用账号": "這個模型下沒有可用帳號", "这个面板没有管理员,用一把已启用的 API Key 访问(在桌面端「网关 Key」页创建)。": "這個面板沒有管理員,用一把已啟用的 API Key 存取(在桌面版「閘道器 Key」頁建立)。", "这会真实发起上游请求并消耗额度": "這會真實發起上游請求並消耗額度", "这台网关没有管理员,用一把已启用的 API Key 访问(在桌面端「网关 Key」页创建)。": "這臺網關沒有管理員,用一把已啟用的 API Key 存取(在桌面版「閘道器 Key」頁建立)。", "这台网关还没有安装插件": "這臺網關還沒有安裝外掛", "这台网关还没有管理员。设置一个账号密码,之后用它登录。": "這臺網關還沒有管理員。設定一個帳號密碼,之後用它登入。", "这是旧插件的手动兼容入口,不代表支持任意凭证或登录方式。请仅粘贴该插件明确接受的凭证 JSON;网关会交给 account.normalize 校验,不会自动推断 Token、Cookie 或 OAuth。": "這是舊外掛的手動相容入口,不代表支援任意憑證或登入方式。請僅貼上此外掛明確接受的憑證 JSON;閘道會交給 account.normalize 驗證,不會自動推斷 Token、Cookie 或 OAuth。", "这是真实的上游请求,与生产走同一条链路(会记账,报表排除)。": "這是真實的上游請求,與生產走同一條鏈路(會記賬,報表排除)。", "这段文本作为 system 消息排在对话最前面。工具的定义与当前配置概览由网关自动附加,不用写在这里。": "這段文本作為 system 訊息排在對話最前面。工具的定義與當前配置概覽由閘道器自動附加,不用寫在這裡。", "连不上插件仓库,请检查网络或代理后重试": "連不上外掛倉庫,請檢查網路或代理後重試", "连接 {n}": "連線 {n}", "连接已有 SAP AI Core 部署:从网关本机导入凭据文件,按资源组获取模型;不创建部署或查询额度。": "連接既有 SAP AI Core 部署:從閘道本機匯入憑證檔案,按資源群組取得模型;不建立部署或查詢額度。", "连接并保存": "連線並儲存", "连续失败到阈值后熔断一段时间;到点放行试一次,连续成功才算恢复": "連續失敗到閾值後熔斷一段時間;到點放行試一次,連續成功才算恢復", "连续失败阈值": "連續失敗閾值", "连续崩溃": "連續當機", "连通 · {ms}ms": "連通 · {ms}ms", "选择对话模型…": "選擇對話模型…", "选择模型…": "選擇模型…", "选择要安装的平台。装好之后这些提供商才会出现在「添加提供商」里。": "選擇要安裝的平臺。裝好之後這些提供商才會出現在「新增提供商」裡。", "通过 API Key 接入 River 对话与在线模型目录;插件不提供余额数值。": "透過 API Key 接入 River 對話與線上模型目錄;外掛不提供餘額數值。", "通过 Magpie 原插件接入设备码登录、对话、模型目录、余额和每日签到。": "透過 Magpie 原外掛接入裝置碼登入、對話、模型目錄、餘額和每日簽到。", "通过社区插件接入 {providers},可在设置中管理提供商,签到计划在签到中心管理。": "透過社群外掛接入 {providers},可在設定中管理提供商,簽到排程在簽到中心管理。", "部分信息未能更新,已读取的插件仍可查看。": "部分資訊未能更新,已讀取的外掛仍可查看。", "部分插件的附带任务可能消耗额度、发送对话或创建及解散群聊。": "部分外掛的附帶任務可能消耗額度、傳送對話或建立及解散群聊。", "都不注入": "都不注入", "都不注入(助手退化为纯聊天)": "都不注入(助手退化為純聊天)", "重启更新": "重啟更新", "重新读取登录方式": "重新讀取登入方式", "队列是一次性整表提交(后端按新顺序重编优先级),移动会连带调整其它组的相对次序。": "佇列是一次性整表提交(後端按新順序重編優先順序),移動會連帶調整其它組的相對次序。", "队列是一次性整表提交;位置越靠前,路由时越先被选中。": "佇列是一次性整表提交;位置越靠前,路由時越先被選中。", "限流 · {n} 个模型": "限流 · {n} 個模型", "限流垫底": "限流墊底", "隐藏 {name}": "隱藏 {name}", "隐藏分组 {name}": "隱藏分組 {name}", "隐藏这一组": "隱藏這一組", "需要强制更新": "需要強制更新", "需要网关 API Key": "需要閘道器 API Key", "需要网关本机环境": "需要閘道本機環境", "需要补齐插件": "需要補齊插件", "顺序优先": "順序優先", "首页": "首頁", "高危": "高危", "高级参数(JSON)": "進階參數(JSON)", "默认分支": "預設分支", "默认跟随软件的正式版和 beta 关注选择;单独设置只影响日常更新,最低版本补齐按当前软件版本选择配套包。": "預設跟隨軟體的正式版和 beta 關注選擇;單獨設定只影響日常更新,最低版本補齊按目前軟體版本選擇配套套件。", "默认跟随软件的自动检查和间隔。关闭自动检查后暂停插件自动更新;手动检查、安装和更新不受影响。": "預設跟隨軟體的自動檢查和間隔。關閉自動檢查後暫停外掛自動更新;手動檢查、安裝和更新不受影響。", "({n} 个整组隐藏)": "({n} 個整組隱藏)", "(不会影响客户端登录态)": "(不會影響客戶端登入態)", "(仅显示前 20 条,共 {n} 条)": "(僅顯示前 20 條,共 {n} 條)", "(可选)": "(選填)", "(未指定)": "(未指定)", "(请下载与该平台对应的插件包)": "(請下載與該平台對應的外掛套件)", "(默认问候)": "(預設問候)", "Agent2API · 登录": "Agent2API · 登入", "OpenAI 兼容网关 · 管理面板": "OpenAI 相容閘道器 · 管理面板", "Turnstile 加载或验证失败,请检查网络、浏览器拦截和域名配置后重试。": "Turnstile 載入或驗證失敗,請檢查網路、瀏覽器攔截和網域設定後再試。", "Turnstile 验证超时,请重试。": "Turnstile 驗證逾時,請重試。", "创建账号并进入面板": "建立帳號並進入面板", "密码": "密碼", "当前浏览器不支持 Turnstile,请更新浏览器后重试。": "目前的瀏覽器不支援 Turnstile,請更新瀏覽器後再試。", "我不是机器人": "我不是機器人", "无法读取登录验证设置,请刷新页面重试": "無法讀取登入驗證設定,請重新整理頁面後再試", "无法连接网关": "無法連線閘道器", "无法连接网关,请确认服务已启动": "無法連線閘道器,請確認服務已啟動", "机器人校验配置已变更或不完整,请刷新页面或联系管理员。": "機器人驗證設定已變更或不完整,請重新整理頁面或聯絡管理員。", "登录": "登入", "登录后可在「网关 Key」页为 API 客户端创建密钥": "登入後可在「閘道器 Key」頁為 API 客戶端建立金鑰", "管理员账号": "管理員帳號", "继续": "繼續", "至少 8 位": "至少 8 位", "设置密码(至少 8 位)": "設定密碼(至少 8 位)", "请先勾选「我不是机器人」完成验证": "請先勾選「我不是機器人」完成驗證", "请填写账号与密码": "請填寫帳號與密碼", "请完成人机验证后重试": "請完成人機驗證後再試", "请求失败,请重试": "請求失敗,請重試", "请输入管理员账号与密码": "請輸入管理員帳號與密碼", "重新验证": "重新驗證", "首次使用:创建一个管理员账号,用于登录此面板": "首次使用:建立一個管理員帳號,用於登入此面板", "验证中…": "驗證中…", "验证失败,请重试": "驗證失敗,請重試", "验证成功": "驗證成功", " · 今日 {used} / {quota}": " · 今日 {used} / {quota}", " · 当前 {n}": " · 當前 {n}", " · 本周期 {used} / {quota}": " · 本週期 {used} / {quota}", " · 限流 {n}": " · 限流 {n}", " 等": " 等", "0 = 不限": "0 = 不限", "0 = 按本家默认 {default}": "0 = 按本家預設 {default}", "30 秒 ~ 24 小时;手动查询会顺延下一轮": "30 秒 ~ 24 小時;手動查詢會順延下一輪", "7 天内到期": "7 天內到期", "7 天内到期 {amount}({count} 份)": "7 天內到期 {amount}({count} 份)", "7天 {count}份": "7天 {count}份", "7天 {n}": "7天 {n}", "API Key": "API Key", "Accio 国内版": "Accio 國內版", "Base URL": "Base URL", "Clash Verge 里还没有配置混合监听器或节点端口": "Clash Verge 裡還沒有配置混合監聽器或節點連接埠", "Clash 出口:": "Clash 出口:", "Copilot 额度单位": "Copilot 額度單位", "NewAPI 个人访问令牌": "NewAPI 個人存取權杖", "NewAPI 用户 ID": "NewAPI 使用者 ID", "OpenAI 兼容": "OpenAI 相容", "OpenAI 兼容填到 /v1;Anthropic 填根地址": "OpenAI 相容填到 /v1;Anthropic 填根地址", "Qoder 中国版": "Qoder 中國版", "Qoder 国际版": "Qoder 國際版", "Token 刷新接口不可用,请重新打开页面": "Token 更新介面無法使用,請重新開啟頁面", "Token 刷新结果未确认,请刷新后核对账号状态": "Token 更新結果未確認,請重新整理後核對帳號狀態", "Token 单位": "Token 單位", "Token 时": "Token 時", "Token 消耗": "Token 消耗", "Token 规则按每个账号已有的窗口消耗判定,保存不会清零;停用或清空规则不会自动启用账号。": "Token 規則按每個帳號已有的視窗消耗判定,儲存不會清零;停用或清空規則不會自動啟用帳號。", "Token 限制阈值必须是大于 0 的安全整数": "Token 限制閾值必須是大於 0 的安全整數", "Token 限额": "Token 限額", "Token 限额 · 已禁用": "Token 限額 · 已停用", "Token 限额 · 已跳过": "Token 限額 · 已跳過", "WorkBuddy 国内版": "WorkBuddy 國內版", "WorkBuddy 国际版": "WorkBuddy 國際版", "ZCode 国内版": "ZCode 國內版", "ZCode 国际版": "ZCode 國際版", "ZCode 套餐明细": "ZCode 套餐明細", "ZCode 套餐明细 — {name}": "ZCode 套餐明細 — {name}", "bigmodel_token_production 的值": "bigmodel_token_production 的值", "{action}{who}": "{action}{who}", "{amount},另 {count} 份余量未知": "{amount},另 {count} 份餘量未知", "{body}({period})": "{body}({period})", "{cond} 时 → {action}": "{cond} 時 → {action}", "{count} 份": "{count} 份", "{count} 份仅提供比例": "{count} 份僅提供比例", "{count} 份单位未知": "{count} 份單位未知", "{count} 次": "{count} 次", "{days} 天后到期": "{days} 天後到期", "{error}(不会自动改为直连)": "{error}(不會自動改為直接連線)", "{error}(转发时会回退直连)": "{error}(轉發時會回退直連)", "{groups} 家 · 显示 {rows} 行": "{groups} 家 · 顯示 {rows} 行", "{hours} 小时后到期": "{hours} 小時後到期", "{label} ×{count}": "{label} ×{count}", "{label}({count})": "{label}({count})", "{message}(去该账号的「设置」里填上查询凭证即可)": "{message}(去該帳號的「設定」裡填上查詢憑證即可)", "{minutes} 分钟后到期": "{minutes} 分鐘後到期", "{month}月{day}日 {clock}": "{month}月{day}日 {clock}", "{name} · 分组设置": "{name} · 分組設定", "{name} 移到 {group} 组内第 {rank} 位": "{name} 移到 {group} 組內第 {rank} 位", "{name} 移到第 {rank} 顺位": "{name} 移到第 {rank} 順位", "{name}的方向": "{name} 的方向", "{name}({parts})": "{name}({parts})", "{name}({time} 起生效)": "{name}({time} 起生效)", "{n} 个已计入": "{n} 個已計入", "{n} 个查询失败": "{n} 個查詢失敗", "{n} 个模型 ▾": "{n} 個模型 ▾", "{n} 个模型限流中 · 到恢复时间自动解除": "{n} 個模型限流中 · 到恢復時間自動解除", "{n} 个模型限流中 · 记录来自上游 429 / 限额码,到恢复时间自动解除": "{n} 個模型限流中 · 記錄來自上游 429 / 限額碼,到恢復時間自動解除", "{n} 个请求正在使用该账号(含还在下发内容的流式请求)": "{n} 個請求正在使用該帳號(含還在下發內容的流式請求)", "{n} 个读数只读到一半(读数可信但不完整)": "{n} 個讀數只讀到一半(讀數可信但不完整)", "{n} 个读数没有绝对数(只给比例或无额度),未计入": "{n} 個讀數沒有絕對數(只給比例或無額度),未計入", "{n} 个读数里没有可用比例,未计入": "{n} 個讀數裡沒有可用比例,未計入", "{n} 个账号 · {e} 启用 · {l} 限流": "{n} 個帳號 · {e} 啟用 · {l} 限流", "{n} 个账号 · 启用 {e}": "{n} 個帳號 · 啟用 {e}", "{n} 个还没查到(未查询或正在查询)": "{n} 個還沒查到(未查詢或正在查詢)", "{n} 个还没查询": "{n} 個還沒查詢", "{n} 分钟": "{n} 分鐘", "{n} 分钟前更新": "{n} 分鐘前更新", "{n} 分钟后": "{n} 分鐘後", "{n} 天前更新": "{n} 天前更新", "{n} 天后": "{n} 天后", "{n} 小时": "{n} 小時", "{n} 小时前更新": "{n} 小時前更新", "{n} 小时后": "{n} 小時後", "{n} 秒": "{n} 秒", "{n} 秒前更新": "{n} 秒前更新", "{period}窗口": "{period}視窗", "{plan}({time} 领取)": "{plan}({time} 領取)", "{providers} 家提供商、共 {total} 个账号。数据仍在,只是当前没有可用的插件来执行它们。": "{providers} 家提供商、共 {total} 個帳號。資料仍在,只是當前沒有可用的外掛來執行它們。", "{reason}。该账号的登录态已被上游注销,自动刷新不会再成功,请重新登录该账号": "{reason}。該帳號的登入狀態已被上游註銷,自動重新整理不會再成功,請重新登入該帳號", "{scope} {used} / {quota} Token,{countdown}重置": "{scope} {used} / {quota} Token,{countdown}重置", "{text}过期": "{text}過期", "{text}过期({full})": "{text}過期({full})", "{time} 到期": "{time} 到期", "{time} 恢复": "{time} 恢復", "{time} 生效": "{time} 生效", "{time} 领取": "{time} 領取", "{total} 个账号 · 启用 {enabled} · 禁用 {disabled}{limited}": "{total} 個帳號 · 啟用 {enabled} · 停用 {disabled}{limited}", "{tried}探测并领取官方每日登录赠送的套餐积分(到账进套餐积分,不增加福利模型 token 池)": "{tried}探測並領取官方每日登入贈送的套餐積分(到賬進套餐積分,不增加福利模型 token 池)", "{unit}余量未知({count} 份)": "{unit}餘量未知({count} 份)", "{verb}完成:成功 {ok} 个,失败 {fail} 个({detail}{more})": "{verb}完成:成功 {ok} 個,失敗 {fail} 個({detail}{more})", "{verb}完成:成功 {ok} 个,未变更 {unchanged} 个,跳过 {skip} 个,失败 {fail} 个": "{verb}完成:成功 {ok} 個,未變更 {unchanged} 個,跳過 {skip} 個,失敗 {fail} 個", "✅ {ok}/{total} 个出口可用": "✅ {ok}/{total} 個出口可用", "✅ {verb}完成:共 {count} 个账号": "✅ {verb}完成:共 {count} 個帳號", "✅ 优先级已改为 {n}": "✅ 優先順序已改為 {n}", "✅ 出口可用": "✅ 出口可用", "✅ 已保存:{note}": "✅ 已儲存:{note}", "✅ 已启用": "✅ 已啟用", "✅ 已启用 {n} 个账号": "✅ 已啟用 {n} 個帳號", "✅ 已导出 {count} 个账号文件": "✅ 已匯出 {count} 個帳號檔案", "✅ 已更新 {n} 个账号的余额{suffix}": "✅ 已更新 {n} 個帳號的餘額{suffix}", "✅ 已更新余额": "✅ 已更新余額", "✅ 已清除 API Key(该账号现在没有凭证,转发会被跳过)": "✅ 已清除 API Key(該帳號現在沒有憑證,轉發會被跳過)", "✅ 已清除 {model} 的限流标记": "✅ 已清除 {model} 的限流標記", "✅ 已清除余额查询凭证": "✅ 已清除餘額查詢憑證", "✅ 已清除查询凭证": "✅ 已清除查詢憑證", "✅ 已清除该账号全部限流标记": "✅ 已清除該帳號全部限流標記", "✅ 已禁用": "✅ 已停用", "✅ 已禁用 {n} 个账号": "✅ 已停用 {n} 個帳號", "✅ 已重新读取 Clash Verge 配置": "✅ 已重新讀取 Clash Verge 配置", "✅ 账号设置已保存": "✅ 帳號設定已儲存", "✅ 顺序已保存": "✅ 順序已儲存", "✅ 顺序已调整": "✅ 順序已調整", " 出口 IP {ip}": " 出口 IP {ip}", "、": "、", "、补官方会话头、请求体补两个占位工具(上游免费档的三道校验)。": "、補官方會話頭、請求體補兩個佔位工具(上游免費檔的三道校驗)。", "「{name}」已在「网络代理」页禁用,请先启用它或换一条": "「{name}」已在「網路代理」頁停用,請先啟用它或換一條", "「{name}」开着排序规则:先关掉规则,才能手动调整组内顺序": "「{name}」開著排序規則:先關掉規則,才能手動調整組內順序", "「{name}」本身": "「{name}」本身", "「已保存的代理」": "「已儲存的代理」", "「网络代理」页还没有出口 —— 去那里新增,或在「订阅管理」里点「同步 Clash Verge」把 Clash 的出口导进来": "「網路代理」頁還沒有出口 —— 去那裡新增,或在「訂閱管理」裡點「同步 Clash Verge」把 Clash 的出口導進來", "「网络代理」页还没有出口 —— 去那里添加一个 HTTP 或 SOCKS5 地址": "「網路代理」頁還沒有出口 —— 去那裡新增一個 HTTP 或 SOCKS5 地址", "「网络代理」页还没有出口 —— 去那里添加手动地址或同步 Clash Verge 的端点": "「網路代理」頁還沒有出口 —— 請到那裡新增手動位址或同步 Clash Verge 的端點", "「网络代理」页里每个启用的出口轮流使用;之后新加的出口自动加入": "「網路代理」頁裡每個啟用的出口輪流使用;之後新加的出口自動加入", "一般不用填": "一般不用填", "万": "萬", "上一条规则相同时才比较下一条;想优先按余额消耗,请把可用余额移到第一位。": "上一條規則相同時才比較下一條;想優先依餘額消耗,請把可用餘額移到第一位。", "上次成功查询:{time}": "上次成功查詢:{time}", "上游拒绝了本次余额查询": "上游拒絕了本次餘額查詢", "上游提供了补充说明;未显示原始正文": "上游提供了補充說明;未顯示原始本文", "上游暂时限制余额查询,请稍后重试": "上游暫時限制餘額查詢,請稍後重試", "上游未给总量,画不出剩余比例": "上游未給總量,畫不出剩餘比例", "上游未返回可识别额度窗口": "上游未回傳可識別額度時段", "上游本来不要凭证时(本地 Ollama、OpenCode Zen 的免费档)勾上这一项:账号会被正常选路;只把 Key 留空": "上游本來不要憑證時(本地 Ollama、OpenCode Zen 的免費檔)勾上這一項:帳號會被正常選路;只把 Key 留空", "上游没有提供此额度的分桶用量,当前使用本地估算保护;在其他客户端产生的消耗不会计入。": "上游沒有提供此額度的分桶用量,當前使用本地估算保護;在其他客戶端產生的消耗不會計入。", "上游的 API Key。留空 = 不修改(改凭证不会换账号 id);要清掉已配的凭证用右边的「清除」": "上游的 API Key。留空 = 不修改(改憑證不會換帳號 id);要清掉已配的憑證用右邊的「清除」", "上游的余额读数里没有这个套餐的额度桶,剩余量读不到;余额列显示的是套餐发放的权益额度,不是剩余量": "上游的餘額讀數里沒有這個套餐的額度桶,剩餘量讀不到;餘額列顯示的是套餐發放的權益額度,不是剩餘量", "上游返回 {status}": "上游返回 {status}", "上游限制 · 已禁用": "上游限制 · 已停用", "上游额度无上限": "上游額度無上限", "上面所有规则都相同时,保持你拖出来的顺序": "上面所有規則都相同時,保持你拖出來的順序", "不到 1 分钟": "不到 1 分鐘", "不到 1 分钟到期": "不到 1 分鐘到期", "不可用:{error}": "不可用:{error}", "不支持查询": "不支援查詢", "不足 {n}": "不足 {n}", "不限": "不限", "与队列里的上一个账号交换优先级(可能是另一家的账号)": "與佇列裡的上一個帳號交換優先順序(可能是另一家的帳號)", "与队列里的下一个账号交换优先级(可能是另一家的账号)": "與佇列裡的下一個帳號交換優先順序(可能是另一家的帳號)", "严格按消耗顺序使用账号需选择「顺序优先」;轮询、会话粘性及账号保护仍按原设置生效。": "嚴格依消耗順序使用帳號需選擇「順序優先」;輪詢、工作階段黏性及帳號保護仍依原設定生效。", "个": "個", "个 · 共": "個 · 共", "个人": "個人", "主凭证没有固定到期时刻,到期由网关自动续期或本来就不会过期": "主憑證沒有固定到期時刻,到期由網關自動續期,或本來就不會過期", "主机": "主機", "亿": "億", "仅将优先级调整到全局第一位,不改变启用状态": "僅將優先順序調整到全域第一位,不改變啟用狀態", "仅按手动顺序": "僅按手動順序", "仅统一修改现有规则的开关,保留阈值、动作和重置方式;不改变账号的启用状态。": "僅統一修改現有規則的開關,保留閾值、動作和重置方式;不改變帳號的啟用狀態。", "仅账号管理": "僅帳號管理", "仅跳过命中条件的模型,其他模型仍可转发;点击查看限制器": "僅跳過命中條件的模型,其他模型仍可轉發;點擊檢視限制器", "今天 {clock}": "今天 {clock}", "今天 {time}": "今天 {time}", "今天到期 {amount}({count} 份)": "今天到期 {amount}({count} 份)", "今天还没有领过:上面「可领取的套餐」里逐份点「领取」即可": "今天還沒有領過:上面「可領取的套餐」裡逐份點「領取」即可", "今天(北京时间 {day})已由官方确认到账 {n} 项;领到的是套餐赠送积分,不增加福利模型的 token 池;按自然日重置,明天可再领": "今天(北京時間 {day})已由官方確認到賬 {n} 項;領到的是套餐贈送積分,不增加福利模型的 token 池;按自然日重置,明天可再領", "今天(北京时间 {day})已试过 {n} 次但官方尚未确认到账,": "今天(北京時間 {day})已試過 {n} 次但官方尚未確認到賬,", "今天(北京时间)在这台机器上领过:{plans}": "今天(北京時間)在這臺機器上領過:{plans}", "今天(北京时间)已领取 {n} 份": "今天(北京時間)已領取 {n} 份", "今天(北京时间)已领取 {n} 份:{plans}": "今天(北京時間)已領取 {n} 份:{plans}", "今天(本地 0 点重置)": "今天(本地 0 點重置)", "今日剩 {n} 分钟": "今日剩 {n} 分鐘", "今日剩 {n} 小时": "今日剩 {n} 小時", "今日发放": "今日發放", "今日已用": "今日已用", "今日已领": "今日已領", "代理": "代理", "代理不可用:{error}": "代理不可用:{error}", "代理不可用:{error}(不会自动改为直连);选「自定义代理…」去修改": "代理無法使用:{error}(不會自動改為直接連線);選「自訂代理…」修改", "代理不可用:{error}(转发时会回退直连);选「自定义代理…」去修改": "代理不可用:{error}(轉發時會回退直連);選「自定義代理…」去修改", "代理列表响应异常({type})": "代理列表響應異常({type})", "代理列表读取失败(重试中)": "代理列表讀取失敗(重試中)", "代理已更新": "代理已更新", "代理异常": "代理異常", "代理方式": "代理方式", "代理池响应异常({type})": "代理池響應異常({type})", "代理端口必须是 1-65535 的整数": "代理連接埠必須是 1-65535 的整數", "以下 {count} 个账号不支持余额查询,本次会跳过:{names}": "以下 {count} 個帳號不支援餘額查詢,本次會跳過:{names}", "企业": "企業", "优先级": "優先順序", "优先级 {priority} 已被同一提供商的「{name}」占用,请换一个数值": "優先順序 {priority} 已被同一提供商的「{name}」佔用,請換一個數值", "优先级必须是数字": "優先順序必須是數字", "优先级未保存:{message}": "優先順序未儲存:{message}", "会员共享额度": "會員共享額度", "会员共享额度不是本账号独立额度,不与其他窗口相加;未证实团队独立额度": "會員共享額度並非本帳號獨立額度,不與其他時段相加;團隊獨立額度尚未證實", "会被当成「未配置凭证」而跳过。": "會被當成「未配置憑證」而跳過。", "伪装 OpenCode 官方客户端": "偽裝 OpenCode 官方客戶端", "伪装 OpenCode 官方客户端(OpenCode Zen 免费档要它才放行)": "偽裝 OpenCode 官方客戶端(OpenCode Zen 免費檔要它才放行)", "余量 {value}": "餘量 {value}", "余额": "餘額", "余额 < {threshold}": "餘額 < {threshold}", "余额不足": "餘額不足", "余额不足 · 已跳过": "餘額不足 · 已跳過", "余额低于": "餘額低於", "余额低于阈值时的提示": "餘額低於閾值時的提示", "余额低于阈值,转发时会跳过该账号(余额回升自动恢复)": "餘額低於閾值,轉發時會跳過該帳號(餘額回升自動恢復)", "余额低于限制器的阈值,转发时会跳过该账号(余额回升自动恢复)": "餘額低於限制器的閾值,轉發時會跳過該帳號(餘額回升自動恢復)", "余额列读数的自动刷新;也是「限制器」余额规则的数据来源。": "餘額列讀數的自動重新整理;也是「限制器」餘額規則的資料來源。", "余额响应为空": "餘額響應為空", "余额大优先": "餘額大優先", "余额小优先": "餘額小優先", "余额已更新": "餘額已更新", "余额查询凭证": "餘額查詢憑證", "余额查询凭证已失效,请刷新查询登录态": "餘額查詢憑證已失效,請更新查詢登入狀態", "余额查询失败:{message}": "餘額查詢失敗:{message}", "余额查询接口不可用,请更新网关后重试": "餘額查詢介面無法使用,請更新閘道後重試", "余额查询接口返回异常": "餘額查詢介面回傳異常", "余额查询方案:{label}": "餘額查詢方案:{label}", "余额沿用现有口径;Token 按重置方式内的累计消耗判定(切换类型会清空阈值)": "餘額沿用現有口徑;Token 按重置方式內的累計消耗判定(切換型別會清空閾值)", "余额详情": "餘額詳情", "使用套餐": "使用套餐", "使用最近一次成功查询的总余额,随余额刷新调整;查询失败保留上次读数,不额外增加查询频率。": "使用最近一次成功查詢的總餘額,隨餘額更新調整;查詢失敗保留上次讀數,不額外增加查詢頻率。", "保存失败:{error}": "儲存失敗:{error}", "保存条件": "儲存條件", "保存规则": "儲存規則", "保留 {n} 个账号": "保留 {n} 個帳號", "保留各账号原有规则,只追加下面的规则;完全相同的规则不会重复添加。": "保留各帳號原有規則,只追加下面的規則;完全相同的規則不會重複新增。", "修改代理": "修改代理", "停止旧查询,按当前配置重新查询余额": "停止舊查詢,按目前設定重新查詢餘額", "停用全部规则": "停用全部規則", "免费版": "免費版", "全局一条队列:数值越小越先用,不分提供商": "全域一條佇列:數值越小越先用,不分提供商", "全局唯一:所有提供商的账号都不能重号,数值越小越先用": "全域唯一:所有提供商的帳號都不能重號,數值越小越先用", "全局队列": "全域佇列", "全局队列第 {position} 位,共 {total} 位": "全域佇列第 {position} 位,共 {total} 位", "全选 / 取消全选当前筛选结果(与批量栏同一个选择)": "全選 / 取消全選當前篩選結果(與批次欄同一個選擇)", "全选当前筛选结果({n} 个)": "全選當前篩選結果({n} 個)", "全部代理节点(推荐)": "全部代理節點(推薦)", "全部启用中的账号将被{what}": "全部啟用中的帳號將被{what}", "全部启用({n})": "全部啟用({n})", "全部清除": "全部清除", "全部禁用({n})": "全部停用({n})", "全部({n})": "全部({n})", "共有 {n} 个账号暂未显示": "共有 {n} 個帳號暫未顯示", "关闭则不参与转发(余额查询照常,见「查询设置」)": "關閉則不參與轉發(餘額查詢照常,見「查詢設定」)", "关闭后,该账号转发失败时返回本次错误,不再顺延其他账号。禁用、无凭证和限制器等保护仍生效。": "關閉後,該帳號轉送失敗時回傳本次錯誤,不再順延其他帳號。停用、無憑證和限制器等保護仍然生效。", "关闭自动查询后,余额限制器只能使用上次读数;手动查询仍可用。": "關閉自動查詢後,餘額限制器只能使用上次讀數;手動查詢仍可用。", "内消耗 ≥": "內消耗 ≥", "再领一次": "再領一次", "冷却进度 {percent}%": "冷卻進度 {percent}%", "冻结余额": "凍結餘額", "凭证": "憑證", "凭证与套餐": "憑證與套餐", "凭证已刷新": "憑證已重新整理", "凭证已被上游注销": "憑證已被上游登出", "凭证已过期,转发时会先刷新": "憑證已過期,轉發時會先重新整理", "凭证已过期;能否续期取决于登录方式,本机引用需由原客户端处理": "憑證已過期;能否更新取決於登入方式,本機參照需由原用戶端處理", "出口": "出口", "出网代理": "出網代理", "分窗口额度": "分時段額度", "分组设置": "分組設定", "分钟": "分鐘", "刚刚更新": "剛剛更新", "删除中…": "刪除中…", "删除各账号的全部限制规则,执行前会再次确认。": "刪除各帳號的全部限制規則,執行前會再次確認。", "删除提供商": "刪除提供商", "删除组": "刪除組", "删除账号": "刪除帳號", "删除这条账号记录(不会影响客户端自己的登录态;之后可再点「导入桌面端登录态」加回来)": "刪除這條帳號記錄(不會影響客戶端自己的登入態;之後可再點「匯入桌面版登入態」加回來)", "删除选中的账号": "刪除選中的帳號", "到恢复时间后自动解除,无需手动操作": "到恢復時間後自動解除,無需手動操作", "到期 {date}": "到期 {date}", "到期 {time}": "到期 {time}", "到期 {time}({remain})": "到期 {time}({remain})", "到期 近→远": "到期 近→遠", "到期 远→近": "到期 遠→近", "到期时间": "到期時間", "刷新 Token": "重新整理 Token", "刷新 Token 完成:成功 {ok} 个,跳过 {skip} 个,失败 {fail} 个": "更新 Token 完成:成功 {ok} 個,略過 {skip} 個,失敗 {fail} 個", "刷新 Token:已处理 {completed}/{total} 个,当前账号:{name}": "更新 Token:已處理 {completed}/{total} 個,目前帳號:{name}", "刷新凭证": "重新整理憑證", "刷新列表": "重新整理清單", "刷新套餐与额度": "重新整理套餐與額度", "刷新账号列表失败,当前仍显示上一次成功读取的数据:{message}": "重新整理帳號清單失敗,目前仍顯示上一次成功讀取的資料:{message}", "刷新账号列表失败:{message}": "重新整理帳號清單失敗:{message}", "剩 {days} 天": "剩 {days} 天", "剩 {hours} 小时": "剩 {hours} 小時", "剩 {left} / {total}{unit}": "剩 {left} / {total}{unit}", "剩 {minutes} 分钟": "剩 {minutes} 分鐘", "剩 {n} 分钟": "剩 {n} 分鐘", "剩 {remaining}": "剩 {remaining}", "剩 {remaining} / {total}": "剩 {remaining} / {total}", "剩不到 1 分钟": "剩不到 1 分鐘", "剩余 {percent}%": "剩餘 {percent}%", "剩余比例": "剩餘比例", "剩余额度": "剩餘額度", "加载异常": "載入異常", "北京时间(UTC+8)": "北京時間(UTC+8)", "协议": "協議", "卡片": "卡片", "即将到期 {count} 份": "即將到期 {count} 份", "即将过期 {n}": "即將過期 {n}", "历史余额,尚未按新配置验证": "歷史餘額,尚未按新設定驗證", "原代理来源已下线,请选择已保存的代理、自定义地址或直连": "原代理來源已下線,請選擇已儲存的代理、自定義地址或直連", "去「插件」页": "去「外掛」頁", "去「插件」页启用": "前往「外掛」頁啟用", "去「插件」页安装": "前往「外掛」頁安裝", "去启用": "去啟用", "去安装": "去安裝", "又不勾": "又不勾", "取消余额查询": "取消餘額查詢", "取消查询": "取消查詢", "取消查询失败:{message}": "取消查詢失敗:{message}", "取消选择": "取消選擇", "另 {n} 个分组全是禁用账号": "另 {n} 個分組全是停用帳號", "另有 {n} 个已勾选账号被当前筛选隐藏,仍会参与操作": "另有 {n} 個已勾選帳號被當前篩選隱藏,仍會參與操作", "另有 {n} 个账号因提供商插件未就绪,暂未显示": "另有 {n} 個帳號因供應商外掛尚未就緒,暫未顯示", "只修改本次选择的设置,不影响备注、凭证、转发顺序或其他设置。": "只修改本次選擇的設定,不影響備註、憑證、轉發順序或其他設定。", "只比较同一家、同单位的数值余额;未知、比例和无限额度不作为零余额,有明确余额的账号优先。": "只比較同一家、同單位的數值餘額;未知、比例和無限額度不視為零餘額,有明確餘額的帳號優先。", "只重试临时故障;次数与整轮时间上限任一用尽即停止,凭证错误不重试。": "只重試暫時性故障;次數與整輪時間上限任一用盡即停止,憑證錯誤不重試。", "可添加多条;同类规则也允许并存(例如一条按余额、两条不同重置方式的 Token)": "可新增多條;同類規則也允許並存(例如一條按餘額、兩條不同重置方式的 Token)", "可用 {total}": "可用 {total}", "可用 {value}": "可用 {value}", "可用 {value} {unit}": "可用 {value} {unit}", "可用余额": "可用餘額", "可用合计": "可用合計", "可用最低": "可用最低", "可留空:新版请求头只认令牌;旧版会把用户 ID 放进 New-Api-User 头": "可留空:新版請求頭只認權杖;舊版會把使用者 ID 放進 New-Api-User 頭", "可领取清单合并每日赠送与限时营销活动;按套餐去重,已领取的不重复提交。只有主动领取时才会进行人机验证。": "可領取清單合併每日贈送與限時營銷活動;按套餐去重,已領取的不重複提交。只有主動領取時才會進行人機驗證。", "可领取的套餐": "可領取的套餐", "各窗口独立限制请求,不相加为总余额。": "各時段獨立限制請求,不加總為總餘額。", "同提供商内暂无其他账号占用优先级": "同提供商內暫無其他帳號佔用優先順序", "同提供商已占用:{names}": "同提供商已佔用:{names}", "名称": "名稱", "后续加入": "後續加入", "否": "否", "含 {n} 个不限额度账号,合计记为 ∞": "含 {n} 個不限額度帳號,合計記為 ∞", "启动中…": "啟動中…", "启用全部规则": "啟用全部規則", "启用插件包后自动回来": "啟用外掛包後自動回來", "启用状态": "啟用狀態", "启用该规则": "啟用該規則", "启用该账号": "啟用該帳號", "启用这一组里的全部账号(含被筛选隐藏的)": "啟用這一組裡的全部帳號(含被篩選隱藏的)", "启用这家提供商后自动回来": "啟用這家提供商後自動回來", "周期": "週期", "周期 Token": "週期 Token", "周期单位": "週期單位", "命中条件的模型": "命中條件的模型", "商汤日日新控制台的登录密码": "商湯日日新控制台的登入密碼", "商汤日日新控制台的登录账号": "商湯日日新控制台的登入帳號", "固定兜底,不受开关影响": "固定兜底,不受開關影響", "固定周期": "固定週期", "在 NewAPI 站点「个人设置」里生成的访问令牌": "在 NewAPI 站點「個人設定」裡生成的存取權杖", "在列表里拖:拖分组带调整整组顺位,拖行首把手调整组内先后(顺序由拖拽表达,不再填数字)": "在列表裡拖:拖分組帶調整整組順位,拖行首把手調整組內先後(順序由拖拽表達,不再填數字)", "在账号设置的「基本」分组里设置该账号同时最多处理的请求数": "在帳號設定的「基本」分組裡設定該帳號同時最多處理的請求數", "地址与端口由「网络代理」页管理:那边改一次、测一次,所有引用它的账号一起生效": "地址與連接埠由「網路代理」頁管理:那邊改一次、測一次,所有引用它的帳號一起生效", "基本": "基本", "填入系统代理": "填入系統代理", "备注名 / 启用 / 代理": "備註名 / 啟用 / 代理", "备注名 {name}": "備註名 {name}", "备注名不能为空": "備註名不能為空", "备注名已更新": "備註名已更新", "复制当前设置": "複製當前設定", "复制自账号": "複製自帳號", "失败 {count} 个:": "失敗 {count} 個:", "失败后允许换号": "失敗後允許切換帳號", "失败重试次数": "失敗重試次數", "失败重试次数必须是 0~{max} 的整数": "失敗重試次數必須是 0~{max} 的整數", "套餐 {name}": "套餐 {name}", "套餐实例不能跨账号复制,请改用通用额度或本地保护条件": "套餐例項不能跨帳號複製,請改用通用額度或本地保護條件", "套餐尚未生效或已经到期": "套餐尚未生效或已經到期", "套餐已领取,但营销回执未完成,不会重复领取:{message}": "套餐已領取,但營銷回執未完成,不會重複領取:{message}", "套餐池": "套餐池", "套餐池的推理端点要求每条请求带一个阿里云验证码令牌;令牌由本应用在后台静默铸造,界面关闭时无法铸造": "套餐池的推理端點要求每條請求帶一個阿里雲驗證碼權杖;權杖由本應用在後臺靜默鑄造,介面關閉時無法鑄造", "套餐池(Start Plan)": "套餐池(Start Plan)", "套餐池(Start Plan)— 走 zcode.z.ai 端点,消耗 ZCode 套餐池的额度(新用户体验额度 / 活动领取)": "套餐池(Start Plan)— 走 zcode.z.ai 端點,消耗 ZCode 套餐池的額度(新使用者體驗額度 / 活動領取)", "套餐积分的重置日期": "套餐積分的重置日期", "存在延迟计量信息,无法据此推算当前余额": "存在延遲計量資訊,無法據此推算目前餘額", "它会改写请求体": "它會改寫請求體", "完整": "完整", "官方限时活动": "官方限時活動", "实际阈值:{value} Token": "實際閾值:{value} Token", "对话 token": "對話 token", "对话请求": "對話請求", "导出文件包含登录凭证,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "匯出檔案包含登入憑證,可直接用於登入。請妥善保管,不要外傳或上傳到公開位置。", "导出未返回结果": "匯出未傳回結果", "导出本组全部账号,每个账号一个 JSON 文件(含被筛选隐藏的)": "匯出本組全部帳號,每個帳號一個 JSON 檔案(含被篩選隱藏的)", "导出本组账号": "匯出本組帳號", "将作用于以下账号": "將作用於以下帳號", "将用草稿中的 {rules} 条规则替换 {count} 个账号的全部限制规则,原有规则不会保留。确定继续?": "將用草稿中的 {rules} 條規則替換 {count} 個帳號的全部限制規則,原有規則不會保留。確定繼續?", "将这个账号及其登录凭证保存为单独的 JSON 文件": "將這個帳號及其登入憑證儲存為獨立的 JSON 檔案", "小时": "小時", "小浣熊": "小浣熊", "尚未查询该账号的余额": "尚未查詢該帳號的餘額", "尝试领取": "嘗試領取", "展开": "展開", "展开全部": "展開全部", "展开全部分组": "展開全部分組", "展开或收起(默认收起)": "展開或收起(預設收起)", "展开这一组": "展開這一組", "已保存的代理": "已儲存的代理", "已停用": "已停用", "已删除账号": "已刪除帳號", "已发起 {count} 个账号文件的下载,请在浏览器下载列表确认": "已開始下載 {count} 個帳號檔案,請在瀏覽器下載清單確認", "已取消查询": "已取消查詢", "已启用 {name}": "已啟用 {name}", "已启用自动排序,组内拖动已锁定;关闭全部规则可恢复原手动顺序。": "已啟用自動排序,組內拖動已鎖定;關閉全部規則可恢復原手動順序。", "已启用,点击禁用(不参与转发)": "已啟用,點擊停用(不參與轉發)", "已在全局队列第一位": "已在全域佇列第一位", "已复制到草稿,执行后才会应用到所选账号": "已複製到草稿,執行後才會應用到所選帳號", "已导出 {count} 个账号文件,{failed} 个未导出:{reason}": "已匯出 {count} 個帳號檔案,{failed} 個未匯出:{reason}", "已是首选": "已是首選", "已暂停验证,需要时请手动重试": "已暫停驗證,需要時請手動重試", "已更新 {ok}/{total} 个账号,{failed} 个失败": "已更新 {ok}/{total} 個帳號,{failed} 個失敗", "已查询": "已查詢", "已用 {used}": "已用 {used}", "已用 {used} / 共 {total}": "已用 {used} / 共 {total}", "已用完 / 已过期": "已用完 / 已過期", "已用比例": "已用比例", "已用额度": "已用額度", "已禁用": "已停用", "已禁用 {name}": "已停用 {name}", "已禁用,点击启用": "已停用,點擊啟用", "已筛选 {n} 项": "已篩選 {n} 項", "已被「{name}」占用": "已被「{name}」佔用", "已触发": "已觸發", "已触发 · 账号已禁用": "已觸發 · 帳號已停用", "已设为首选": "已設為首選", "已设置": "已設定", "已跳过{current}": "已跳過{current}", "已跳过{usage}{countdown}": "已跳過{usage}{countdown}", "已达上限{usage}": "已達上限{usage}", "已过期": "已過期", "已过期({time})": "已過期({time})", "已选": "已選", "已配置,留空则不修改": "已配置,留空則不修改", "已限流": "已限流", "已领到、还没到生效时间的套餐(生效后余额列会按它显示):\n{lines}": "已領到、還沒到生效時間的套餐(生效後餘額列會按它顯示):\n{lines}", "并发上限": "併發上限", "并发上限 0~{max};CodeArts 等有默认值的家填 0 即按本家默认;达到上限的账号会被跳过、请求转给其他账号": "併發上限 0~{max};CodeArts 等有預設值的家填 0 即按本家預設;達到上限的帳號會被跳過、請求轉給其他帳號", "并发上限 0~{max};达到上限的账号会被跳过、请求转给其他账号": "併發上限 0~{max};達到上限的帳號會被跳過、請求轉給其他帳號", "并发上限 0~{max};达到上限的账号跳过、请求转给其他账号(原列表 ⋯ 菜单的「并发上限」入口已并入这里)": "併發上限 0~{max};達到上限的帳號跳過、請求轉給其他帳號(原列表 ⋯ 選單的「併發上限」入口已併入這裡)", "并发上限 填 0 即按本家默认 {default};填 1 或 2 就按填的算,更大的数会被本家上限截断(原列表 ⋯ 菜单的「并发上限」入口已并入这里)": "併發上限 填 0 即按本家預設 {default};填 1 或 2 就按填的算,更大的數會被本家上限截斷(原列表 ⋯ 選單的「併發上限」入口已併入這裡)", "并发上限必须是 0~{max} 的整数": "併發上限必須是 0~{max} 的整數", "并发上限:{value}": "併發上限:{value}", "开启后,网关按 OpenCode 官方 CLI 的形状发请求:没填 Key 的账号用匿名凭证": "開啟後,閘道器按 OpenCode 官方 CLI 的形狀發請求:沒填 Key 的帳號用匿名憑證", "开始 {time}": "開始 {time}", "当": "當", "当前不符合资格": "目前不符合資格", "当前不需要验证码令牌": "當前不需要驗證碼權杖", "当前代理不可用,请重新选择": "當前代理不可用,請重新選擇", "当前代理不可用:{error}(不会自动改为直连)": "目前代理無法使用:{error}(不會自動改為直接連線)", "当前代理不可用:{error}(转发时会回退直连)": "當前代理不可用:{error}(轉發時會回退直連)", "当前余额 {n};与余额列同一数字口径,严格小于才触发(等于阈值仍可用)": "當前餘額 {n};與餘額列同一數字口徑,嚴格小於才觸發(等於閾值仍可用)", "当前可手动调整组内顺序。": "目前可手動調整組內順序。", "当前可用 ∞(不参与余额不足判定)": "當前可用 ∞(不參與餘額不足判定)", "当前客户端不支持逐账号导出,请更新客户端": "目前的用戶端不支援逐帳號匯出,請更新用戶端", "当前已经是默认规则": "目前已經是預設規則", "当前排序规则:{rules}。点击调整": "目前排序規則:{rules}。點擊調整", "当前未发现本期活动,不代表账号不符合资格": "目前未發現本期活動,不代表帳號不符合資格", "当前没有任何模型处于限流中": "當前沒有任何模型處於限流中", "当前没有可领取的套餐(活动期内每天发一份,明天可再领)": "當前沒有可領取的套餐(活動期內每天發一份,明天可再領)", "当前没有限流中的模型。": "當前沒有限流中的模型。", "当前筛选下 {n} 个账号的可用余额之和(随筛选、搜索变化,不受分页影响)": "當前篩選下 {n} 個帳號的可用餘額之和(隨篩選、搜尋變化,不受分頁影響)", "当前筛选下 {n} 个账号的百分比读数不能相加,取最低的剩余比例(随筛选、搜索变化,不受分页影响)": "當前篩選下 {n} 個帳號的百分比讀數不能相加,取最低的剩餘比例(隨篩選、搜尋變化,不受分頁影響)", "当前筛选下 {n} 个账号的额度概览(随筛选、搜索变化,不受分页影响)": "目前篩選下 {n} 個帳號的額度概覽(隨篩選、搜尋變化,不受分頁影響)", "当前筛选下没有账号": "當前篩選下沒有帳號", "当前筛选条件下没有账号": "當前篩選條件下沒有帳號", "当前网关不支持余额排序,请先更新网关": "目前的閘道器不支援餘額排序,請先更新閘道器", "当前规则:{rules}。": "目前規則:{rules}。", "当前规则:{rules}。自动排序生效时,组内拖动把手会锁定;关掉全部规则即回到手动顺序。": "目前規則:{rules}。自動排序生效時,組內拖曳把手會鎖定;關掉全部規則即回到手動順序。", "当前视图不能调整组顺位:{reason} 之后再拖动": "當前檢視不能調整組順位:{reason} 之後再拖動", "当前钩子仅提供套餐与周期,未提供余额数值": "目前 hook 僅提供方案與週期,未提供餘額數值", "当前:{label}(Clash Verge 直接引用);可在「网络代理」页同步端点后改选": "目前:{label}(Clash Verge 直接參照);可在「網路代理」頁同步端點後改選", "当前:{label}(未经过代理池 —— 可在「网络代理」页把出口同步进池后来这里改选)": "當前:{label}(未經過代理池 —— 可在「網路代理」頁把出口同步進池後來這裡改選)", "当前:{label}(未经过代理池 —— 可在「网络代理」页添加相同地址后来这里改选)": "當前:{label}(未經過代理池 —— 可在「網路代理」頁新增相同地址後來這裡改選)", "当前:{label}(每条请求换一个出口);「自定义代理…」打开完整设置": "當前:{label}(每條請求換一個出口);「自定義代理…」開啟完整設定", "当前:{label};选项来自「网络代理」页;「自定义代理…」打开完整设置": "當前:{label};選項來自「網路代理」頁;「自定義代理…」開啟完整設定", "当前:{value}": "當前:{value}", "待定": "待定", "待生效": "待生效", "待生效 {n} 份": "待生效 {n} 份", "待生效 {time}": "待生效 {time}", "必填": "必填", "必填;留空 = 不修改,清除用右边的按钮": "必填;留空 = 不修改,清除用右邊的按鈕", "总剩余 {total} · 套餐 {plan} · 奖励 {bonus}": "總剩餘 {total} · 套餐 {plan} · 獎勵 {bonus}", "总积分": "總積分", "总积分是当前可用积分的汇总,与余额列一致;不重复累加汇总行,不包含 Token、次数或其他单位的额度。": "總積分是目前可用積分的彙總,與餘額欄一致;不重複累加彙總列,不包含 Token、次數或其他單位的額度。", "总量 {value}": "總量 {value}", "恢复时间未知": "恢復時間未知", "恢复默认:仅开启最快到期优先": "恢復預設:僅開啟最快到期優先", "恢复默认:仅按手动顺序": "恢復預設:僅按手動順序", "恢复默认:最快到期优先,账号添加时间关闭": "恢復預設:最快到期優先,帳號新增時間關閉", "我的套餐": "我的套餐", "或": "或", "所有分组里都没有启用的账号(禁用不参与转发)": "所有分組裡都沒有啟用的帳號(停用不參與轉發)", "所有提供商都有这个字段": "所有供應商都有這個欄位", "所选账号的各周期:{list}": "所選帳號的各週期:{list}", "手动添加": "手動新增", "打开批量操作弹窗,并预选这一组的账号(改代理等动作在弹窗里挑参数)": "開啟批次操作彈窗,並預選這一組的帳號(改代理等動作在彈窗裡挑引數)", "打开筛选": "開啟篩選", "执行中…": "執行中…", "执行({action})": "執行({action})", "扫码 / 粘贴令牌 / 导入登录态需在桌面端完成": "掃碼 / 貼上權杖 / 匯入登入態需在桌面版完成", "批量动作": "批次動作", "批量操作 · 已选 {count} 个账号": "批次操作 · 已選 {count} 個帳號", "批量操作失败:{error}": "批次操作失敗:{error}", "批量操作已保存,但列表刷新失败:{error}": "批次操作已儲存,但列表重新整理失敗:{error}", "批量操作接口不可用,请重新打开页面": "批次操作介面不可用,請重新開啟頁面", "批量操作未返回结果,请刷新后确认状态": "批次操作未返回結果,請重新整理後確認狀態", "批量操作本组": "批次操作本組", "批量操作结果不完整,请刷新后核对所选账号": "批次操作結果不完整,請重新整理後核對所選帳號。", "批量操作结果未确认,请刷新后核对设置": "批次操作結果尚未確認,請重新整理後核對設定。", "批量规则按每个账号分别判定,不合并余额或 Token 用量。": "批次規則按每個帳號分別判定,不合並餘額或 Token 用量。", "把每页调回「全部」": "把每頁調回「全部」", "折叠": "折疊", "折叠全部": "摺疊全部", "折叠全部分组(只留组头)": "摺疊全部分組(只留組頭)", "折叠本组": "摺疊本組", "折叠这一组": "摺疊這一組", "拖动调整列宽(双击还原)": "拖動調整列寬(雙擊還原)", "拖动调整整组顺序": "拖動調整整組順序", "拖动调整组内顺序": "拖動調整組內順序", "按上游额度查询的读数判定;模型共用同一个额度池时,选择模型不会拆分该池余额。": "按上游額度查詢的讀數判定;模型共用同一個額度池時,選擇模型不會拆分該池餘額。", "按优先级从上到下比较,勾选的项才参与": "按優先順序從上到下比較,勾選的項目才參與", "按住拖动,调整这一家的组顺位(整组一起动)": "按住拖動,調整這一家的組順位(整組一起動)", "按住拖动,调整这个账号在本组内的顺序": "按住拖動,調整這個帳號在本組內的順序", "按总积分设置限制": "按總積分設定限制", "按提供商筛选账号": "按提供商篩選帳號", "按最低剩余比例选择账号,所有周期均来自同一账号": "按最低剩餘比例選擇帳號,所有週期均來自同一帳號", "按未显示原因筛选": "按未顯示原因篩選", "按模型": "按模型", "按每日或短周期实际可用额度最低的账号展示,所有周期均来自同一账号": "按每日或短週期實際可用額度最低的帳號顯示,所有週期均來自同一帳號", "按规则限制该账号参与转发:没有规则(或全部停用)= 不限制;跳过档自动恢复,禁用档需手动启用。": "按規則限制該帳號參與轉發:沒有規則(或全部停用)= 不限制;跳過檔自動恢復,停用檔需手動啟用。", "按账号总可用余额比较,不重复累加积分明细": "依帳號總可用餘額比較,不重複累加積分明細", "按账号最早到期、且还有剩余的积分包比较": "按帳號最早到期、且還有剩餘的積分包比較", "排序": "排序", "提供商已停用": "供應商已停用", "提供商显示名,1~{max} 个字符": "提供商顯示名,1~{max} 個字元", "提供商:{name}": "提供商:{name}", "提高优先级": "提高優先順序", "插件包已停用": "外掛套件已停用", "插件已启用但加载失败": "外掛已啟用但載入失敗", "插件未加载": "外掛未載入", "插件未安装": "外掛未安裝", "插件未就绪": "外掛未就緒", "搜索": "搜尋", "搜索账号": "搜尋帳號", "搜索账号 / 邮箱 / 备注": "搜尋帳號 / 郵箱 / 備註", "操作失败:{message}": "操作失敗:{message}", "收起": "收起", "改动即时生效": "改動即時生效", "改协议 / Base URL 会改变它们的转发方式,正在进行的请求可能失败;模型清单与映射在「模型管理」页。": "改協議 / Base URL 會改變它們的轉發方式,正在進行的請求可能失敗;模型清單與對映在「模型管理」頁。", "数值越小越先用;": "數值越小越先用;", "数值越小越先用;{hint}": "數值越小越先用;{hint}", "数据来源与判定说明": "資料來源與判定說明", "整个账号": "整個帳號", "整轮查询时限": "整輪查詢時限", "整轮查询时限必须是 15~180 秒的整数": "整輪查詢時限必須是 15~180 秒的整數", "新账号落到组首 / 组尾": "新帳號落到組首 / 組尾", "旗舰": "旗艦", "无上限 · 已用 {used}": "無上限 · 已用 {used}", "无上限按日计(上游到达上限后仍继续计数,超额如实显示)": "無上限按日計(上游到達上限後仍繼續計數,超額如實顯示)", "无代理(直连)": "無代理(直連)", "无数据": "無資料", "无法拖动:已启用自动消耗规则({rules})。请先在「消耗顺序」中关闭这些规则,再手动调整。": "無法拖動:已啟用自動消耗規則({rules})。請先在「消耗順序」中關閉這些規則,再手動調整。", "无法拖动:当前已按积分到期时间和账号添加时间自动排序。请先在「消耗顺序」中关闭这两项规则,再手动调整。": "無法拖動:目前已按積分到期時間和帳號新增時間自動排序。請先在「消耗順序」中關閉這兩項規則,再手動調整。", "无法拖动:当前已按积分到期时间自动排序。请先在「消耗顺序」中关闭该规则,再手动调整。": "無法拖動:目前已按積分到期時間自動排序。請先在「消耗順序」中關閉該規則,再手動調整。", "无法拖动:当前已按账号添加时间自动排序。请先在「消耗顺序」中关闭该规则,再手动调整。": "無法拖動:目前已按帳號新增時間自動排序。請先在「消耗順序」中關閉該規則,再手動調整。", "无福利额度": "無福利額度", "既有 Clash Verge 直接引用继续可用;也可在「网络代理」页同步端点,再改选「已保存的代理」。": "既有 Clash Verge 直接參照繼續可用;也可在「網路代理」頁同步端點,再改選「已儲存的代理」。", "旧数据导入": "舊資料匯入", "旧版 / 定制站点才需要,新版可留空": "舊版 / 定製站點才需要,新版可留空", "时": "時", "明天 {clock}": "明天 {clock}", "明天 {time}": "明天 {time}", "明天到期": "明天到期", "明细": "明細", "是": "是", "昵称 {name}": "暱稱 {name}", "显示账号名": "顯示帳號名", "暂无可查询余额的账号": "暫無可查詢餘額的帳號", "暂无可比较余额;查到同单位的数值后自动生效,比例与无限额度不参与": "暫無可比較餘額;查到同單位的數值後自動生效,比例與無限額度不參與", "暂无可用积分信息": "暫無可用積分資訊", "暂无数据:先查询一次余额,之后会自动按到期排序": "暫無資料:先查詢一次餘額,之後會自動按到期排序", "暂无数据:先查询一次余额,可按需启用到期排序": "暫無資料:先查詢一次餘額,可按需啟用到期排序", "暂无读数": "暫無讀數", "暂无账号,请点击右上角「添加账号」": "暫無帳號,請點擊右上角「新增帳號」", "暂无额度信息": "暫無額度資訊", "更多操作": "更多操作", "更多设置": "更多設定", "更新于 {time}": "更新於 {time}", "更新失败": "更新失敗", "替换全部规则": "替換全部規則", "替换选中账号的限制规则": "替換選中帳號的限制規則", "最快到期优先": "最快到期優先", "最新添加优先": "最新新增優先", "最早 {soonest} 恢复": "最早 {soonest} 恢復", "最早恢复": "最早恢復", "最早添加优先": "最早新增優先", "最晚到期优先": "最晚到期優先", "最近更新": "最近更新", "有 {n} 个账号因提供商插件未就绪,暂未显示": "有 {n} 個帳號因供應商外掛尚未就緒,暫未顯示", "有 {n} 个账号暂不可用:它们依赖的提供商插件还没安装": "有 {n} 個帳號暫不可用:它們依賴的提供商外掛還沒安裝", "有效期": "有效期", "有的账号过了 0 点额度就回来 —— 选「自然日」": "有的帳號過了 0 點額度就回來 —— 選「自然日」", "服务器本地时区": "伺服器本地時區", "未使用": "未使用", "未启用套餐池账号,不生成验证码令牌": "未啟用套餐池帳號,不產生驗證碼權杖", "未命名账号": "未命名帳號", "未声明可手动续期;本机引用请在原客户端处理登录态。": "未宣告可手動更新;本機參照請於原用戶端處理登入狀態。", "未接入查询": "未接入查詢", "未显示的账号": "未顯示的帳號", "未显示账号": "未顯示帳號", "未查询": "未查詢", "未检测到 Clash Verge": "未檢測到 Clash Verge", "未检测到 Clash Verge 配置": "未檢測到 Clash Verge 配置", "未被使用": "未被使用", "未触发": "未觸發", "未触发{current}": "未觸發{current}", "未触发{usage}{countdown}": "未觸發{usage}{countdown}", "未设备注名": "未設備註名", "未返回余额数据": "未返回餘額資料", "未返回可确认的余额数值": "未回傳可確認的餘額數值", "未返回可识别的余额数据": "未返回可識別的餘額資料", "未返回重置时间": "未回傳重設時間", "未配置": "未配置", "未配置凭证": "未配置憑證", "本周期 Token 消耗达到限制器的上限,账号已被自动禁用(窗口重置也不恢复,需手动启用)": "本週期 Token 消耗達到限制器的上限,帳號已被自動停用(視窗重置也不恢復,需手動啟用)", "本周期 Token 消耗达到限制器的上限,转发时会跳过该账号(窗口重置自动恢复)": "本週期 Token 消耗達到限制器的上限,轉發時會跳過該帳號(視窗重置自動恢復)", "本周期已用": "本週期已用", "本地 Token 消耗": "本地 Token 消耗", "本地台账里今天还领过这些,但上面的读数里还没有:{plans}(读数刷新可能有延迟)": "本地臺賬裡今天還領過這些,但上面的讀數里還沒有:{plans}(讀數重新整理可能有延遲)", "本地消耗上限必须是大于 0 的安全整数": "本地消耗上限必須是大於 0 的安全整數", "本地用量保护": "本地用量保護", "本地统计只包含经过本网关的请求,不等于上游账单;清理请求日志不会清零。套餐选择用于限定保护范围,不会强制上游扣指定套餐。": "本地統計只包含經過本閘道器的請求,不等於上游賬單;清理請求日誌不會清零。套餐選擇用於限定保護範圍,不會強制上游扣指定套餐。", "本地请求次数": "本地請求次數", "本地领取于 {time}": "本地領取於 {time}", "本提供商不支持积分到期排序,默认保持手动顺序;可按需启用账号添加时间排序。": "本供應商不支援積分到期排序,預設保持手動順序;可按需啟用帳號新增時間排序。", "本提供商默认启用最快到期优先,账号添加时间默认关闭;关闭全部规则可恢复手动顺序。": "本供應商預設啟用最快到期優先,帳號新增時間預設關閉;關閉全部規則可恢復手動順序。", "本期活动": "本期活動", "本期活动按套餐分别展示,领取资格以上游返回为准": "本期活動按套餐分別顯示,領取資格以上游回傳為準", "本组 {n} 个账号的可用余额之和,按整组统计(不受筛选、搜索影响)": "本組 {n} 個帳號的可用餘額之和,按整組統計(不受篩選、搜尋影響)", "本组 {n} 个账号的百分比读数不能相加,取组内最低的剩余比例(按整组统计,不受筛选、搜索影响)": "本組 {n} 個帳號的百分比讀數不能相加,取組內最低的剩餘比例(按整組統計,不受篩選、搜尋影響)", "本组 {n} 个账号的额度概览(按整组统计,不受筛选、搜索影响)": "本組 {n} 個帳號的額度概覽(按整組統計,不受篩選、搜尋影響)", "本组代理": "本組代理", "本组操作": "本組操作", "本组每个账号会分别保存为一个 JSON 文件,包含被筛选隐藏的账号。": "本組每個帳號會分別儲存為一個 JSON 檔案,包含被篩選隱藏的帳號。", "权益 {value}": "權益 {value}", "权益 {value} {unit}": "權益 {value} {unit}", "条件即时生效,关掉面板就能看到结果。": "條件即時生效,關掉面板就能看到結果。", "条件组 {n}": "條件組 {n}", "来源 {source}": "來源 {source}", "查看": "檢視", "查看因插件未就绪而暂未显示的账号": "檢視因外掛未就緒而暫未顯示的帳號", "查看已禁用账号": "檢視已停用帳號", "查看插件状态": "查看外掛狀態", "查询中…": "查詢中…", "查询余额": "查詢餘額", "查询全部账号的余额(含已禁用账号 —— 禁用只表示不参与转发)": "查詢全部帳號的餘額(含已停用帳號 —— 停用只表示不參與轉發)", "查询凭证还没配齐:填好后余额列才有读数,在此之前会显示「未配置」。": "查詢憑證還沒配齊:填好後餘額列才有讀數,在此之前會顯示「未配置」。", "查询失败": "查詢失敗", "查询失败:{message}": "查詢失敗:{message}", "查询已成功,但上游未提供额度数据,不代表余额为零。": "查詢已成功,但上游未提供額度資料,不代表餘額為零。", "查询设置": "查詢設定", "查询该账号剩余余额(读数显示在余额列)": "查詢該帳號剩餘餘額(讀數顯示在餘額列)", "查询超时,可重新查询": "查詢逾時,可重新查詢", "查询间隔": "查詢間隔", "查询间隔必须是 {min} 秒 ~ 24 小时": "查詢間隔必須是 {min} 秒 ~ 24 小時", "桌面端实时登录态请在原客户端更新": "桌面端即時登入狀態請在原用戶端更新", "桌面端实时登录态(凭证每次从客户端登录态文件读取)": "桌面版即時登入態(憑證每次從客戶端登入態檔案讀取)", "模型范围": "模型範圍", "正在加载…": "正在載入…", "正在探测可领取的套餐…": "正在探測可領取的套餐…", "正在查询": "正在查詢", "正在查询本期活动…": "正在查詢本期活動…", "正在补铸验证码令牌": "正在補鑄驗證碼權杖", "正在读取 Clash Verge 配置…": "正在讀取 Clash Verge 配置…", "正在读取…": "正在讀取…", "正在读取代理列表…": "正在讀取代理列表…", "正在连接上游…": "正在連線上游…", "正常": "正常", "此刻正在使用这个账号的请求数(含还在下发内容的流式请求);为 0 时不显示": "此刻正在使用這個帳號的請求數(含還在下發內容的流式請求);為 0 時不顯示", "此额度不属于账号当前使用的通道": "此額度不屬於帳號當前使用的通道", "此额度不属于账号当前使用的通道,切换到对应通道后才参与判定。": "此額度不屬於帳號當前使用的通道,切換到對應通道後才參與判定。", "每": "每", "每 {period}消耗 ≥ {count} Token": "每 {period}消耗 ≥ {count} Token", "每周或每月额度已耗尽,短周期实际可用额度按 0% 计算;账号明细保留原始读数": "每週或每月額度已耗盡,短週期實際可用額度按 0% 計算;帳號明細保留原始讀數", "每日消耗 ≥": "每日消耗 ≥", "每日消耗 ≥ {count} Token(每天 0 点重置)": "每日消耗 ≥ {count} Token(每天 0 點重置)", "每日重置": "每日重置", "每日重置(额度按周期回满,不是作废)": "每日重置(額度按週期回滿,不是作廢)", "每条请求换一个出口(按顺序轮流),上游看到的 IP 因此是变化的;出口的地址与端口由「网络代理」页管理": "每條請求換一個出口(按順序輪流),上游看到的 IP 因此是變化的;出口的地址與連接埠由「網路代理」頁管理", "每组共用一个触发动作;第二条条件起可选择「与/或」。与优先于或,下面会显示明确分组。各条件组独立生效。": "每組共用一個觸發動作;第二條條件起可選擇「與/或」。與優先於或,下面會顯示明確分組。各條件組獨立生效。", "没有匹配「{kw}」的账号": "沒有匹配「{kw}」的帳號", "没有可全选的账号": "沒有可全選的帳號", "没有可用出口": "沒有可用出口", "没有适用于本次操作的账号": "沒有適用於本次操作的帳號", "没有选中的账号": "沒有選中的帳號", "活动套餐": "活動套餐", "活动套餐的推理端点要求每条请求带一个阿里云验证码令牌;令牌由本应用在后台静默铸造,界面关闭时无法铸造": "活動套餐的推理端點要求每條請求帶一個阿里雲驗證碼權杖;權杖由本應用在後臺靜默鑄造,介面關閉時無法鑄造", "活动套餐(Start Plan)": "活動套餐(Start Plan)", "活动套餐(Start Plan)— 走官方活动端点,用活动里领到的额度": "活動套餐(Start Plan)— 走官方活動端點,用活動裡領到的額度", "活动时间:{time}": "活動時間:{time}", "活动期内每天发一份新套餐;同一份当天重复领取会提示「已领取过」,次日可再领。领取要走一次人机验证(滑块)。": "活動期內每天發一份新套餐;同一份當天重複領取會提示「已領取過」,次日可再領。領取要走一次人機驗證(滑塊)。", "活动期内每天发一份新套餐;已领的套餐不重复提交,次日可领新套餐。只有主动领取时才会进行人机验证。": "活動期間每天發一份新套餐;已領的套餐不重複提交,次日可領新套餐。只有主動領取時才會進行人機驗證。", "活动期至 {time}": "活動期至 {time}", "活动目录合并账号预览、营销活动与匿名探测。已领取仅依据领取记录或账号名下套餐;状态待确认时可尝试领取,资格以上游返回为准。": "活動目錄合併帳號預覽、行銷活動與匿名探測。已領取僅依據領取紀錄或帳號名下套餐;狀態待確認時可嘗試領取,資格以上游回傳為準。", "测试中…": "測試中…", "测试出口": "測試出口", "消耗顺序": "消耗順序", "添加 新→旧": "新增 新→舊", "添加 旧→新": "新增 舊→新", "添加规则": "新增規則", "添加账号请用桌面端或网页版面板": "新增帳號請用桌面版或網頁版面板", "添加限制": "新增限制", "清掉本机的限流标记,立刻重新尝试该模型(上游若仍在限流会再次被标记)": "清掉本機的限流標記,立刻重新嘗試該模型(上游若仍在限流會再次被標記)", "清掉该账号全部模型的限流标记": "清掉該帳號全部模型的限流標記", "清空全部规则": "清空全部規則", "清空搜索与三个筛选档位,回到全部账号": "清空搜尋與三個篩選檔位,回到全部帳號", "清空选中账号的限制规则": "清空選中帳號的限制規則", "清除": "清除", "清除失败:{error}": "清除失敗:{error}", "清除失败:{message}": "清除失敗:{message}", "清除已配置的 API Key(转发时会因缺少凭证被跳过)": "清除已配置的 API Key(轉發時會因缺少憑證被跳過)", "清除已配置的 {label}": "清除已配置的 {label}", "清除已配置的余额查询凭证": "清除已配置的餘額查詢憑證", "清除标记": "清除標記", "清除筛选": "清除篩選", "清除该账号的冷却与全部模型限流标记": "清除該帳號的冷卻與全部模型限流標記", "滚动窗口": "滾動視窗", "激活事件补报失败,可能影响领取资格:{message}": "啟用事件補報失敗,可能影響領取資格:{message}", "点击{action}各模型的限流明细": "點擊{action}各模型的限流明細", "点击查看各模型的限流明细": "點擊檢視各模型的限流明細", "点击查看账号冷却与模型限流明细": "點擊檢視帳號冷卻與模型限流明細", "状态": "狀態", "状态 {status}": "狀態 {status}", "状态待确认": "狀態待確認", "状态未知": "狀態未知", "生效 {time}": "生效 {time}", "生效中": "生效中", "生效至到期累计(不自动回满)": "生效至到期累計(不自動回滿)", "用 NewAPI 站点的个人访问令牌查询账户余额(不是这条账号的上游 API Key)。令牌在站点的「个人设置」里生成,只有旧版 / 定制站点才需要额外填用户 ID。": "用 NewAPI 站點的個人存取權杖查詢帳戶餘額(不是這條帳號的上游 API Key)。權杖在站點的「個人設定」裡生成,只有舊版 / 定製站點才需要額外填使用者 ID。", "用 bigmodel.cn 控制台的访问令牌查询账户余额(人民币元)。令牌是登录后浏览器 Cookie `bigmodel_token_production` 的值:开发者工具 → 应用(Application)→ Cookie 里复制。": "用 bigmodel.cn 控制台的存取權杖查詢帳戶餘額(人民幣元)。權杖是登入後瀏覽器 Cookie `bigmodel_token_production` 的值:開發者工具 → 應用(Application)→ Cookie 裡複製。", "用下面的规则统一替换各账号的全部规则,执行前会再次确认。": "用下面的規則統一替換各帳號的全部規則,執行前會再次確認。", "用商汤日日新控制台的账号密码查询(与推理用的 API Key 不是同一套)。网关会自动换取登录票并缓存,过期后自动重登,不需要手动维护。": "用商湯日日新控制台的帳號密碼查詢(與推理用的 API Key 不是同一套)。閘道器會自動換取登入票並快取,過期後自動重登,不需要手動維護。", "用户名": "使用者名稱", "用这条账号的 API Key 查询订阅用量,不需要额外配置;读数展开成 5 小时 / 每周 / 每月三个窗口。": "用這條帳號的 API Key 查詢訂閱用量,不需要額外配置;讀數展開成 5 小時 / 每週 / 每月三個視窗。", "用这条账号的 API Key 查询,不需要额外配置。": "用這條帳號的 API Key 查詢,不需要額外配置。", "用这条账号的 API Key 生成签名后查询账户余额(美元),不需要额外配置。要求 API Key 是 z.ai 的「id.secret」形态(控制台生成的 Key 就是)。": "用這條帳號的 API Key 生成簽名後查詢帳戶餘額(美元),不需要額外配置。要求 API Key 是 z.ai 的「id.secret」形態(控制台生成的 Key 就是)。", "留空 = 不修改,清除用右边的按钮": "留空 = 不修改,清除用右邊的按鈕", "登录 / 导入一个新账号": "登入 / 匯入一個新帳號", "登录授权已失效,请重新登录;自动续期无法恢复已过期或已撤销的刷新令牌。": "登入授權已失效,請重新登入;自動續期無法恢復已過期或已撤銷的更新權杖。", "登录授权截止:{time};自动续期不会延长此时间,届时需重新网页登录。": "登入授權截止:{time};自動續期不會延長此時間,屆時需重新透過網頁登入。", "百分比阈值必须在 0~100 之间": "百分比閾值必須在 0~100 之間", "直连": "直連", "确定删除账号「{name}」?这个操作不可恢复。": "確定刪除帳號「{name}」?這個操作不可恢復。", "确定删除选中的 {count} 个账号?此操作不可恢复,账号的登录态会一并移除。": "確定刪除選中的 {count} 個帳號?此操作不可恢復,帳號的登入態會一併移除。", "确定清空 {count} 个账号的全部限制规则?余额与 Token 将不再设限;已禁用的账号不会自动启用。": "確定清空 {count} 個帳號的全部限制規則?餘額與 Token 將不再設限;已停用的帳號不會自動啟用。", "确定清除全部模型的限流标记?": "確定清除全部模型的限流標記?", "确定清除模型「{model}」的限流标记?": "確定清除模型「{model}」的限流標記?", "确定清除该账号的冷却与全部模型限流标记?": "確定清除該帳號的冷卻與全部模型限流標記?", "禁用": "停用", "禁用整个账号(手动恢复)": "停用整個帳號(手動恢復)", "禁用该账号(需手动重新启用)": "停用該帳號(需手動重新啟用)", "禁用这一组里的全部账号(含被筛选隐藏的)": "停用這一組裡的全部帳號(含被篩選隱藏的)", "福利按限时活动下发,不是每个账号都有 —— 正常状态,不是查询失败": "福利按限時活動下發,不是每個帳號都有 —— 正常狀態,不是查詢失敗", "福利日额度": "福利日額度", "福利网关未读到:{error}": "福利閘道器未讀到:{error}", "秒": "秒", "秒;默认 60 秒,包含重试等待,多步骤查询可适当延长。": "秒;預設 60 秒,包含重試等待,多步驟查詢可適當延長。", "积分": "積分", "积分到期时间": "積分到期時間", "积分包": "積分包", "积分明细": "積分明細", "积分查询已复用转发用的登录凭证,这里通常留空即可。只有旧版本填过、或从旧代理导入过凭证时才有值": "積分查詢已複用轉發用的登入憑證,這裡通常留空即可。只有舊版本填過、或從舊代理匯入過憑證時才有值", "稍后由后台判定自动禁用": "稍後由後臺判定自動停用", "窗口 = 今天 0 点起(本地时区),0 点重置即清零恢复;按账号在 requests 表聚合": "視窗 = 今天 0 點起(本地時區),0 點重置即清零恢復;按帳號在 requests 表聚合", "窗口内已用 {used} / {limit} Token,转发时会跳过该账号(重置后自动恢复)": "視窗內已用 {used} / {limit} Token,轉發時會跳過該帳號(重置後自動恢復)", "窗口对齐自然时间(整点 / 整 N 分钟一轮回),重置即清零恢复;按账号在 requests 表聚合": "視窗對齊自然時間(整點 / 整 N 分鐘一輪迴),重置即清零恢復;按帳號在 requests 表聚合", "窗口数量超过展示上限,仅展示部分读数": "時段數量超過顯示上限,僅顯示部分讀數", "窗口重置时间": "各時段重設時間", "窗口长度": "視窗長度", "窗口额度与时间": "時間窗額度與時間", "端口": "連接埠", "端口准备中": "連接埠準備中", "第 {rank} 顺位": "第 {rank} 順位", "等待当前验证码流程结束": "等待當前驗證碼流程結束", "筛选": "篩選", "筛选 / 搜索 / 分页生效时组顺位不可拖动(别家的组整组不可见,落点没法定位)": "篩選 / 搜尋 / 分頁生效時組順位不可拖動(別家的組整組不可見,落點沒法定位)", "系统代理信息无效,请手动填写。": "系統代理資訊無效,請手動填寫。", "系统代理协议暂不支持自动填入,请手动配置 HTTP 或 SOCKS5 代理": "系統代理協定暫不支援自動填入,請手動設定 HTTP 或 SOCKS5 代理", "系统代理地址无效,请手动填写": "系統代理位址無效,請手動填寫", "系统代理认证信息无法读取,请手动填写": "系統代理驗證資訊無法讀取,請手動填寫", "累计起点": "累計起點", "级联删除名下全部账号,不可恢复": "級聯刪除名下全部帳號,不可恢復", "组内": "組內", "组内先后:按住左边的把手上下拖动即可调整;整组的先后拖分组带的把手": "組內先後:按住左邊的把手上下拖動即可調整;整組的先後拖分組帶的把手", "组内并发上限": "組內並發上限", "组内手动顺序": "組內手動順序", "组内第 {rank} 位": "組內第 {rank} 位", "组顺位已锁定": "組順位已鎖定", "组顺位:越小越先用(拖动分组带调整)": "組順位:越小越先用(拖動分組帶調整)", "统一设置自动查询的开关、间隔和失败重试次数;不会复制或覆盖余额查询凭证。": "統一設定自動查詢的開關、間隔和失敗重試次數;不會複製或覆蓋餘額查詢憑證。", "统计周期": "統計週期", "统计周期尚未开始或已经结束": "統計週期尚未開始或已經結束", "统计窗口必须是 1 分钟~31 天": "統計視窗必須是 1 分鐘~31 天", "统计结束时间必须晚于开始时间": "統計結束時間必須晚於開始時間", "缓存用量未知,不按零计量,也不用于推算余额": "快取用量未知,不按零計量,也不用於推算餘額", "编码套餐(Coding Plan)": "編碼套餐(Coding Plan)", "编码套餐(Coding Plan)— 走开放平台端点,消耗开放平台的额度(订阅套餐 / 资源包 / 充值余额)": "編碼套餐(Coding Plan)— 走開放平臺端點,消耗開放平臺的額度(訂閱套餐 / 資源包 / 充值餘額)", "编码套餐(Coding Plan)— 走开放平台端点,用自己订阅的额度": "編碼套餐(Coding Plan)— 走開放平臺端點,用自己訂閱的額度", "编辑": "編輯", "编辑限制": "編輯限制", "编辑限制条件": "編輯限制條件", "缺失": "缺失", "网关电脑未检测到可导入的系统代理;请手动填写,或选择已保存的代理。": "閘道電腦未偵測到可匯入的系統代理;請手動填寫,或選擇已儲存的代理。", "网络": "網路", "网页端会逐个下载文件;浏览器提示时请允许本网站下载多个文件。": "網頁端會逐個下載檔案;瀏覽器提示時請允許本網站下載多個檔案。", "自动查询余额": "自動查詢餘額", "自动查询余额(按下面的间隔自动刷新余额列的读数)": "自動查詢餘額(按下面的間隔自動刷新余額列的讀數)", "自定义代理": "自定義代理", "自定义代理…": "自定義代理…", "自定义:": "自定義:", "自然周": "自然周", "自然日": "自然日", "自然日(每天 0 点)": "自然日(每天 0 點)", "自然月": "自然月", "补全请求": "補全請求", "补铸失败:{error}": "補鑄失敗:{error}", "表格": "表格", "规则操作": "規則操作", "视图": "檢視", "解析失败": "解析失敗", "触发动作": "觸發動作", "触发后": "觸發後", "触发条件": "觸發條件", "计入 {counted}/{total}": "計入 {counted}/{total}", "订阅已移除": "訂閱已移除", "订阅统计未读到:{error}": "訂閱統計未讀到:{error}", "记录里没有过期时间": "記錄裡沒有過期時間", "设为首选": "設為首選", "设置并发上限": "設定併發上限", "访客账号没有积分体系,因此不查询余额(登录账号可以查)": "訪客帳號沒有積分體系,因此不查詢餘額(登入帳號可以查)", "访问令牌": "存取權杖", "试用版": "試用版", "该上游无需鉴权": "該上游無需鑑權", "该上游无需鉴权(转发与拉取模型都不发送鉴权头)": "該上游無需鑑權(轉發與拉取模型都不傳送鑑權頭)", "该提供商尚未接入余额查询": "此提供商尚未接入餘額查詢", "该提供商没有余额查询": "該提供商沒有餘額查詢", "该提供商没有余额查询;可按 Token 消耗设置限制。": "該提供商沒有餘額查詢;可按 Token 消耗設定限制。", "该提供商的推理转发尚未接入,账号不参与转发": "該提供商的推理轉發尚未接入,帳號不參與轉發", "该账号不支持刷新 Token 或未提供刷新凭证": "此帳號不支援更新 Token 或未提供更新憑證", "该账号出网走的代理(Clash 出口 / 自定义 / 直连);点击可修改": "該帳號出網走的代理(Clash 出口 / 自定義 / 直連);點擊可修改", "该账号出网走的代理(已保存的代理 / 自定义 / 直连);点击可修改": "該帳號出網走的代理(已儲存的代理 / 自定義 / 直連);點擊可修改", "该账号当前限流中的模型;点徽章看明细": "該帳號當前限流中的模型;點徽章看明細", "该账号没有套餐登录态(jwt),套餐池通道会失败:请重新登录该账号": "該帳號沒有套餐登入態(jwt),套餐池通道會失敗:請重新登入該帳號", "该账号没有套餐登录态(jwt),活动套餐会失败:请重新登录该账号": "該帳號沒有套餐登入態(jwt),活動套餐會失敗:請重新登入該帳號", "该账号没有福利模型额度(福利按活动下发,不是每个账号都有)": "該帳號沒有福利模型額度(福利按活動下發,不是每個帳號都有)", "该账号没有积分类读数(额度只有福利 token 池)": "該帳號沒有積分類讀數(額度只有福利 token 池)", "该账号的登录态已被上游注销,自动刷新不会再成功,请重新登录该账号": "該帳號的登入態已被上游登出,自動重新整理不會再成功,請重新登入該帳號", "该账号的额度只有福利 token 池(见余额格那两行),订阅统计没有积分类计量表": "該帳號的額度只有福利 token 池(見餘額格那兩行),訂閱統計沒有積分類計量表", "该额度中的全部模型": "該額度中的全部模型", "请先勾选要操作的账号": "請先勾選要操作的帳號", "请先选择 Clash Verge 出口": "請先選擇 Clash Verge 出口", "请先选择已保存的代理": "請先選擇已儲存的代理", "请填写代理主机地址": "請填寫代理主機地址", "请填写提供商名称": "請填寫提供商名稱", "请填写提供商的 Base URL": "請填寫提供商的 Base URL", "请填写查询间隔": "請填寫查詢間隔", "请填写重置周期": "請填寫重置週期", "请至少添加一条限制规则;清空请使用清空操作": "請至少新增一條限制規則;清空請使用清空操作", "请选择代理": "請選擇代理", "请选择出口": "請選擇出口", "读取中…": "讀取中…", "读取失败:{error}": "讀取失敗:{error}", "读取系统代理失败": "讀取系統代理失敗", "读取网关电脑当前的 HTTPS 系统代理,填入自定义地址;后续系统设置变化不会自动同步。": "讀取閘道電腦目前的 HTTPS 系統代理,填入自訂位址;後續系統設定變更不會自動同步。", "读取自 {dir};端口由 Clash Verge 管理,这里实时同步": "讀取自 {dir};連接埠由 Clash Verge 管理,這裡即時同步", "读数来自自动余额查询;与余额列同一数字口径,严格小于才触发(等于阈值仍可用)": "讀數來自自動餘額查詢;與餘額列同一數字口徑,嚴格小於才觸發(等於閾值仍可用)", "读数里没有套餐清单(免费账号、或套餐的上游状态还没刷新;可点右上角「查询余额」重读)": "讀數里沒有套餐清單(免費帳號、或套餐的上游狀態還沒重新整理;可點右上角「查詢餘額」重讀)", "读数里没有额度桶,这里按套餐权益里的已用 / 总量显示(上游给的数)": "讀數里沒有額度桶,這裡按套餐權益裡的已用 / 總量顯示(上游給的數)", "调整到全局队列第一位": "調整到全域佇列第一位", "调整顺序失败:{message}": "調整順序失敗:{message}", "账号": "帳號", "账号 ID": "帳號 ID", "账号不存在,请刷新后重试": "帳號不存在,請重新整理後重試", "账号不存在,请刷新后重试。": "帳號不存在,請重新整理後重試。", "账号主额度": "帳號主額度", "账号余额单位不一致,暂不按余额排序,继续比较其他规则": "帳號餘額單位不一致,暫不依餘額排序,繼續比較其他規則", "账号全部模型暂时停止转发 · 到恢复时间自动解除": "帳號全部模型暫時停止轉發 · 到恢復時間自動解除", "账号冷却": "帳號冷卻", "账号列表刷新不可用,请重新打开页面": "帳號清單無法重新整理,請重新開啟頁面", "账号列表刷新失败": "帳號清單重新整理失敗。", "账号列表刷新接口不可用,请重新打开页面": "帳號清單重新整理介面無法使用,請重新開啟頁面。", "账号列表加载失败,请点击「刷新」重试": "帳號清單載入失敗,請點擊「重新整理」重試", "账号列表加载失败,请点击「刷新」重试:{message}": "帳號清單載入失敗,請點擊「重新整理」重試:{message}", "账号列表已刷新": "帳號清單已重新整理", "账号名 / 邮箱 / 备注": "帳號名 / 郵箱 / 備註", "账号套餐到期:{time}": "帳號套餐到期:{time}", "账号导出失败:{reason}": "帳號匯出失敗:{reason}", "账号已保存,但列表刷新失败:{error}": "帳號已儲存,但清單重新整理失敗:{error}", "账号已保存,但提供商未更新:{error}": "帳號已儲存,但提供商未更新:{error}", "账号数据仍然保留,无需重新添加。安装或启用对应插件并成功加载后,账号会自动恢复显示。": "帳號資料仍然保留,無需重新新增。安裝或啟用對應外掛並成功載入後,帳號會自動恢復顯示。", "账号数据都还在库里,装上插件后会自动出现在这里 —— 不需要重新添加。": "帳號資料都還在庫裡,裝上外掛後會自動出現在這裡 —— 不需要重新新增。", "账号显示名称": "帳號顯示名稱", "账号更新接口不可用,请重新打开页面": "帳號更新介面無法使用,請重新開啟頁面。", "账号更新结果未确认,请刷新后核对设置": "帳號更新結果尚未確認,請重新整理後核對設定。", "账号正在导出,请稍候": "帳號正在匯出,請稍候", "账号添加时间": "帳號新增時間", "账号级条件组已触发;点击查看限制器": "帳號級條件組已觸發;點擊檢視限制器", "账号表": "帳號表", "账号视图": "帳號檢視", "账号设置": "帳號設定", "账号设置 · {name}": "帳號設定 · {name}", "账号设置分组": "帳號設定分組", "账号详情": "帳號詳情", "账号邮箱": "帳號郵箱", "账号页与全局路由共用此消耗顺序,网关按最新余额数据选路,不需要保持页面打开。模型独立顺序会覆盖全局。": "帳號頁與全域路由共用此消耗順序,閘道器按最新餘額資料選路,不需要保持頁面開啟。模型獨立順序會覆蓋全域。", "跨账号批量配置仅支持通用条件;套餐实例不能直接复制到其他账号。": "跨帳號批次配置僅支援通用條件;套餐例項不能直接複製到其他帳號。", "跳过 {count} 个:": "跳過 {count} 個:", "跳过该账号(余额回升自动恢复)": "跳過該帳號(餘額回升自動恢復)", "跳过该账号(自动恢复)": "跳過該帳號(自動恢復)", "跳过该账号(重置后自动恢复)": "跳過該帳號(重置後自動恢復)", "跳过(自动恢复)": "跳過(自動恢復)", "转发优先级": "轉發優先順序", "转发走套餐池(Start Plan)通道(zcode.z.ai 的 Anthropic 端点,用账号里的体验额度 / 活动领取额度);在账号设置里可切回编码套餐": "轉發走套餐池(Start Plan)通道(zcode.z.ai 的 Anthropic 端點,用帳號裡的體驗額度 / 活動領取額度);在帳號設定裡可切回編碼套餐", "转发走活动套餐通道(zcode.z.ai 的 Anthropic 端点,用账号里领到的额度);在账号设置里可切回编码套餐": "轉發走活動套餐通道(zcode.z.ai 的 Anthropic 端點,用帳號裡領到的額度);在帳號設定裡可切回編碼套餐", "转发顺序": "轉發順序", "轮询全部代理节点": "輪詢全部代理節點", "轮询的代理": "輪詢的代理", "轮询至少要选择一条代理(或改选「全部」)": "輪詢至少要選擇一條代理(或改選「全部」)", "轮询(换 IP)": "輪詢(換 IP)", "还有 {d} 天": "還有 {d} 天", "还有 {h} 小时": "還有 {h} 小時", "还有 {h} 小时 {m} 分": "還有 {h} 小時 {m} 分", "还有 {n} 分钟": "還有 {n} 分鐘", "还没有代理(去「网络代理」页添加)": "還沒有代理(去「網路代理」頁新增)", "还没有余额读数(已自动查询一次,稍候;也可以点右上角「查询余额」重读)": "還沒有餘額讀數(已自動查詢一次,稍候;也可以點右上角「查詢餘額」重讀)", "还没有保存的代理": "還沒有儲存的代理", "还没有批量规则,请先添加限制或从所选账号复制。": "還沒有批次規則,請先新增限制或從所選帳號複製。", "还没有条件组:账号照常参与转发,不设置额度保护。": "還沒有條件組:帳號照常參與轉發,不設定額度保護。", "还没有账号,去桌面端添加": "還沒有帳號,去桌面版新增", "还没有账号,请点击「添加账号」": "還沒有帳號,請點擊「新增帳號」", "还没有限制规则:账号照常参与转发,余额与 Token 消耗都不设上限。": "還沒有限制規則:帳號照常參與轉發,餘額與 Token 消耗都不設上限。", "这一份今天已经领过了(重复领取上游会回「已领取过」)": "這一份今天已經領過了(重複領取上游會回「已領取過」)", "这一家查不到积分到期时间": "這一家查不到積分到期時間", "这一家没有可用余额查询": "這一家沒有可用餘額查詢", "这一栏改的是": "這一欄改的是", "这一段按提供商出现:有什么配什么。": "這一段按提供商出現:有什麼配什麼。", "这一类现在没有账号": "這一類現在沒有帳號", "这一组开着排序规则:关掉规则后才能手动拖": "這一組開著排序規則:關掉規則後才能手動拖曳", "这个账号的余额走窗口限额通道(只配了编码套餐 API Key):只有每 N 小时的剩余比例,读不到套餐清单": "這個帳號的餘額走視窗限額通道(只配了編碼套餐 API Key):只有每 N 小時的剩餘比例,讀不到套餐清單", "这些分组里一个启用的账号都没有(禁用不参与转发),默认不显示;点一下切到「禁用」查看,也就能重新启用它们": "這些分組裡一個啟用的帳號都沒有(停用不參與轉發),預設不顯示;點一下切到「停用」檢視,也就能重新啟用它們", "这会{what}所有启用中的账号,转发将不可用。确定继续?": "這會{what}所有啟用中的帳號,轉發將不可用。確定繼續?", "这是既有配置(直接引用 Clash 出口,不经过代理池)。推荐改用上面的": "這是既有配置(直接引用 Clash 出口,不經過代理池)。推薦改用上面的", "这条自定义账号既没有 API Key,也没有勾选「无需鉴权」:转发时会被跳过,该提供商下的模型也不会出现在模型列表里。去账号「设置」里补上 Key,或勾选「该上游无需鉴权」": "這條自定義帳號既沒有 API Key,也沒有勾選「無需鑑權」:轉發時會被跳過,該提供商下的模型也不會出現在模型列表裡。去帳號「設定」裡補上 Key,或勾選「該上游無需鑑權」", "这条账号是谁、排第几、能不能接请求。": "這條帳號是誰、排第幾、能不能接請求。", "这条账号访问上游走哪条线路。": "這條帳號存取上游走哪條線路。", "这里只影响「显示」:卸载或停用插件不会删除账号;重新安装、启用并成功加载后,这些账号会自动回到列表。": "這裡隻影響「顯示」:解除安裝或停用外掛不會刪除帳號;重新安裝、啟用併成功載入後,這些帳號會自動回到列表。", "连接失败": "連線失敗", "连接数": "連線數", "追加规则(保留原有)": "追加規則(保留原有)", "追加限制规则": "追加限制規則", "选中多个模型时,每个模型单独累计、单独比较阈值;不合并用量。": "選中多個模型時,每個模型單獨累計、單獨比較閾值;不合並用量。", "选择": "選擇", "选择所选账号作为模板(可选)": "選擇所選帳號作為模板(可選)", "选择要轮询的代理(可多选)": "選擇要輪詢的代理(可多選)", "逐个刷新所选账号的 Token,未到期也会尝试刷新;不改变启用状态、代理或转发顺序。": "逐一更新所選帳號的 Token,尚未到期也會嘗試更新;不改變啟用狀態、代理或轉發順序。", "逐窗口最低:{list}": "逐視窗最低:{list}", "逐请求轮换出口(换 IP):OpenCode Zen 免费档按 IP 限流,单个 IP 的额度用完会对它一律 429": "逐請求輪換出口(換 IP):OpenCode Zen 免費檔按 IP 限流,單個 IP 的額度用完會對它一律 429", "通用额度/本地保护": "通用額度/本地保護", "邮箱": "郵箱", "邮箱 {email}": "郵箱 {email}", "部分余额信息暂未获取;未显示上游原始诊断": "部分餘額資訊暫未取得;未顯示上游原始診斷", "部分套餐来源查询失败,已保留其他来源的结果:{message}": "部分套餐來源查詢失敗,已保留其他來源的結果:{message}", "部分套餐来源查询失败,暂不能确认是否有可领取套餐": "部分套餐來源查詢失敗,暫不能確認是否有可領取套餐", "部分来源查询失败,已保留其他结果:{message}": "部分來源查詢失敗,已保留其他結果:{message}", "部分来源查询失败,暂不能确认本期活动或领取状态": "部分來源查詢失敗,暫時無法確認本期活動或領取狀態", "部分窗口偏低": "部分時段額度偏低", "部分窗口未返回可识别读数": "部分時段未回傳可識別讀數", "部分读数未知": "部分讀數未知", "部分额度读数暂不可用。": "部分額度讀數暫時無法取得。", "配置已变更,请重新查询": "設定已變更,請重新查詢", "重新安装这个插件后自动回来": "重新安裝這個外掛後自動回來", "重新读取": "重新讀取", "重新读取该账号的余额与套餐(走余额查询那条链)": "重新讀取該帳號的餘額與套餐(走餘額查詢那條鏈)", "重新读取账号列表和插件状态,不刷新 Token 或查询余额": "重新讀取帳號清單和外掛狀態,不更新 Token 或查詢餘額", "重查": "重查", "重置": "重置", "重置 {date}": "重置 {date}", "重置也不恢复,需手动启用": "重置也不恢復,需手動啟用", "重置周期必须是 30 分钟 ~ 24 小时": "重置週期必須是 30 分鐘 ~ 24 小時", "重置方式": "重置方式", "重置时区": "重置時區", "重置详情": "重設詳情", "长期有效": "長期有效", "间隔单位": "間隔單位", "阈值": "閾值", "降低优先级": "降低優先順序", "限制器": "限制器", "限制器 · {n} 个模型": "限制器 · {n} 個模型", "限制器 · 账号已跳过": "限制器 · 帳號已跳過", "限制器:{window}已用 {used} / {threshold} Token": "限制器:{window}已用 {used} / {threshold} Token", "限制指标": "限制指標", "限制类型": "限制類型", "限制阈值必须是大于 0 的数字": "限制閾值必須是大於 0 的數字", "限制阈值必须是非负有限数字": "限制閾值必須是非負有限數字", "限流": "限流", "限流中": "限流中", "限流已清除": "限流已清除", "限流明细": "限流明細", "限流模型": "限流模型", "限额": "限額", "限额状态": "限額狀態", "隐藏账号名(名字显示为星号)": "隱藏帳號名(名字顯示為星號)", "需要人机验证时,在该账号的「套餐明细」中主动开始验证。": "需要人機驗證時,在該帳號的「套餐明細」中主動開始驗證。", "需要重新登录": "需要重新登入", "需要验证码时由打开着的主窗口或浏览器面板补铸;库存、补铸状态和失败原因分别显示": "需要驗證碼時由開啟著的主視窗或瀏覽器面板補鑄;庫存、補鑄狀態和失敗原因分別顯示", "需重登": "需重登", "顺序": "順序", "顺序未保存:{message}": "順序未儲存:{message}", "领取 {time}": "領取 {time}", "额度": "額度", "额度充足": "額度充足", "额度来源": "額度來源", "额度查询暂不可用。": "額度查詢暫時無法使用。", "额度查询未完成,未显示上游原始诊断。": "額度查詢未完成,未顯示上游原始診斷。", "额度窗口读数来自开放平台监控通道(套餐 JWT 那条通道没有额度桶):读的是每 N 小时 / 每周窗口的剩余比例": "額度視窗讀數來自開放平臺監控通道(套餐 JWT 那條通道沒有額度桶):讀的是每 N 小時 / 每週視窗的剩餘比例", "额度详情": "額度明細", "首次失败后额外重试的次数;默认 3 次,0 = 不重试。手动和自动查询均生效,全部失败后才显示失败并记录日志。": "首次失敗後額外重試的次數;預設 3 次,0 = 不重試。手動和自動查詢均生效,全部失敗後才顯示失敗並記錄日誌。", "验证失败:{error}": "驗證失敗:{error}", "验证码令牌池接口不可用": "驗證碼權杖池介面不可用", "验证码令牌:{counts}": "驗證碼權杖:{counts}", "高级请求": "進階請求", "魔粒": "魔粒", "默认仅开启最快到期优先;可用余额和账号添加时间默认关闭。": "預設僅開啟最快到期優先;可用餘額和帳號新增時間預設關閉。", "默认保持手动顺序,可按需开启支持的自动排序规则。": "預設保持手動順序,可依需要開啟支援的自動排序規則。", "默认展开 / 收起": "預設展開 / 收合", "({n} 个未配置查询凭证)": "({n} 個未配置查詢憑證)", "(不可用)": "(不可用)", "(其他订阅,可能未生效)": "(其他訂閱,可能未生效)", "(只测了前 {limit} 个,还有 {rest} 个未测)": "(只測了前 {limit} 個,還有 {rest} 個未測)", "(名下 {count} 个账号共用)": "(名下 {count} 個帳號共用)", "(已在 Clash 中禁用)": "(已在 Clash 中停用)", "(库存为空,等待补铸;请保持主窗口或浏览器面板打开)": "(庫存為空,等待補鑄;請保持主視窗或瀏覽器面板開啟)", "(未启用套餐池账号,暂不补铸)": "(未啟用套餐池帳號,暫不補鑄)", "(激活事件补报失败,可能影响领取资格:{message})": "(啟用事件補報失敗,可能影響領取資格:{message})", "+ 添加条件": "+ 新增條件", "+ 添加限制": "+ 新增限制", ",{countdown}重置": ",{countdown}重置", ",只对 OpenCode Zen 这类上游有意义,别的家请关掉。": ",只對 OpenCode Zen 這類上游有意義,別的家請關掉。", ",已达到上限": ",已達到上限", ":到「网络代理」页的「订阅管理」里点「同步 Clash Verge」把出口导进池后即可选 —— 那样能集中测试、也能被多个账号共用。": ":到「網路代理」頁的「訂閱管理」裡點「同步 Clash Verge」把出口導進池後即可選 —— 那樣能集中測試、也能被多個帳號共用。", ";": ";", "{count} 个分区有未保存的更改": "{count} 個分區有未儲存的變更", "{count} 个账号共用": "{count} 個帳號共用", "{count} 个账号共用提供商的连接配置。": "{count} 個帳號共用提供商的連線設定。", "{count} 个账号共用连接配置": "{count} 個帳號共用連線設定", "✅ 已改回跟随提供商的 Base URL": "✅ 已改回跟隨提供商的 Base URL", "「{name}」名下 {count} 个账号共用这些连接设置。修改协议或 Base URL 可能中断正在进行的请求。": "「{name}」名下 {count} 個帳號共用這些連線設定。修改協定或 Base URL 可能中斷正在進行的請求。", "「{name}」名下 {count} 个账号共用;修改协议或地址可能中断正在进行的请求。": "「{name}」名下 {count} 個帳號共用;修改協定或位址可能中斷正在進行的請求。", "仅当前账号": "僅目前帳號", "仅用于 OpenCode Zen 这类上游,普通提供商请保持关闭。": "僅用於 OpenCode Zen 這類上游,一般提供商請保持關閉。", "代理只作用于当前账号,不改变其他账号的出网方式。": "代理僅作用於目前帳號,不改變其他帳號的連線方式。", "余额读数也是限制器余额规则的数据来源。": "餘額讀數也是限制器餘額規則的資料來源。", "使用密钥访问上游": "使用金鑰存取上游", "保存后将移除密钥,转发与拉取模型都不发送鉴权头。请确认上游确实无需凭证。": "儲存後將移除金鑰,轉送與取得模型都不傳送驗證標頭。請確認上游確實不需要憑證。", "保存提供商共用配置?": "儲存提供商共用設定?", "保存更改": "儲存變更", "共用": "共用", "关闭后不参与转发,余额查询不受影响。": "關閉後不參與轉送,餘額查詢不受影響。", "凭证设置": "憑證設定", "出网方式": "連線方式", "前往模型管理": "前往模型管理", "前往模型管理会关闭账号设置,尚未保存的修改不会生效。": "前往模型管理會關閉帳號設定,尚未儲存的修改不會生效。", "包含提供商共用配置,将影响 {count} 个账号": "包含提供商共用設定,將影響 {count} 個帳號", "原密钥不会回显;更换密钥不会改变账号 ID。": "原金鑰不會顯示;更換金鑰不會改變帳號 ID。", "各分区的更改将统一保存": "各分區的變更將一併儲存", "启用账号": "啟用帳號", "在账号列表中拖动分组或行首把手,调整转发顺序。": "在帳號清單中拖動群組或列首把手,調整轉送順序。", "基本信息": "基本資訊", "填写接口基址,无需追加 {path}。": "填寫 API 基底位址,不必附加 {path}。", "将同时删除名下 {count} 个账号,无法恢复。": "將同時刪除名下 {count} 個帳號,無法復原。", "开启后会改写请求体,补齐会话头与占位工具;未填密钥时使用匿名凭证 public。": "開啟後會改寫請求本文,補齊工作階段標頭與預留位置工具;未填金鑰時使用匿名憑證 public。", "当前没有凭证,转发时会跳过此账号。请填写密钥或选择「无需鉴权」。": "目前沒有憑證,轉送時會略過此帳號。請填寫金鑰或選擇「無需驗證」。", "当前账号": "目前帳號", "所有分区中尚未保存的修改都会被放弃。已确认的独立清除操作不受影响。": "所有分區中尚未儲存的修改都會被捨棄。已確認的獨立清除操作不受影響。", "提供商名称": "提供商名稱", "改回跟随": "改回跟隨", "改回跟随提供商": "改回跟隨提供商", "改回跟随提供商?": "改回跟隨提供商?", "新密钥待保存": "新金鑰待儲存", "无需鉴权": "無需驗證", "显示新输入的密钥": "顯示新輸入的金鑰", "本地服务或无需凭证的上游": "本機服務或不需要憑證的上游", "查询凭证": "查詢憑證", "模型清单与映射在「模型管理」中维护。": "模型清單與對應關係在「模型管理」中維護。", "模拟 OpenCode 官方客户端": "模擬 OpenCode 官方用戶端", "正在保存…": "正在儲存…", "正在编辑提供商共用配置": "正在編輯提供商共用設定", "没有未保存的更改": "沒有未儲存的變更", "没有规则或全部停用时不限制;跳过后自动恢复,禁用后需手动启用。": "沒有規則或全部停用時不限制;略過後自動恢復,停用後需手動啟用。", "清除余额查询凭证?": "清除餘額查詢憑證?", "清除已存 API Key?": "清除已儲存的 API Key?", "清除已存密钥": "清除已儲存的金鑰", "清除查询凭证?": "清除查詢憑證?", "用于当前账号的对话、余额查询、模型拉取、模型测试、签到及凭证刷新等上游请求。留空使用提供商默认值;可选预置或直接填写。": "用於目前帳號的對話、餘額查詢、模型取得、模型測試、簽到及憑證更新等上游請求。留空使用提供商預設值;可選預設或直接填寫。", "用明确的规则保护当前账号的额度。": "用明確的規則保護目前帳號的額度。", "留空不修改,替换后点击「保存更改」生效。": "留空不修改,替換後按一下「儲存變更」生效。", "留空保留当前密钥,输入新密钥以替换": "留空保留目前金鑰,輸入新金鑰以替換", "确认保存": "確認儲存", "确认后立即生效,不受底部保存按钮控制。没有凭证且未开启「无需鉴权」时,此账号将被转发跳过。": "確認後立即生效,不受底部儲存按鈕控制。沒有憑證且未開啟「無需驗證」時,轉送將略過此帳號。", "确认后立即生效,不受底部保存按钮控制。通常可继续复用转发用的登录凭证。": "確認後立即生效,不受底部儲存按鈕控制。通常可繼續共用轉送用的登入憑證。", "确认后立即生效,余额查询可能显示「未配置」。取消账号设置不会恢复已清除的凭证。": "確認後立即生效,餘額查詢可能顯示「未設定」。取消帳號設定不會恢復已清除的憑證。", "确认弹窗不可用,请重新打开页面": "確認對話方塊無法使用,請重新開啟頁面", "管理当前账号的凭证与可用套餐。": "管理目前帳號的憑證與可用方案。", "统一管理提供商的协议、地址与兼容选项。": "統一管理提供商的協定、位址與相容性選項。", "自定义 API": "自訂 API", "要修改连接地址或协议?": "要修改連線位址或協定?", "设置当前账号访问上游的出网方式。": "設定目前帳號存取上游的連線方式。", "设置账号名称、启用状态与转发行为。": "設定帳號名稱、啟用狀態與轉送行為。", "请填写有效的 HTTP 或 HTTPS 地址": "請填寫有效的 HTTP 或 HTTPS 位址", "请求标识": "請求識別", "请求端点": "請求端點", "账号凭证": "帳號憑證", "转发行为": "轉送行為", "达到上限后,将请求交给其他账号。": "達到上限後,將請求交給其他帳號。", "这个账号单独存了一份地址:{url},转发时优先用它。上面改的是提供商共用地址,不会覆盖它。": "這個帳號單獨存了一份位址:{url},轉送時優先使用它。上面改的是提供商共用位址,不會覆蓋它。", "这个账号将改用提供商当前保存的 Base URL:{url}。确认后立即生效,不受底部保存按钮控制。": "這個帳號將改用提供商目前儲存的 Base URL:{url}。確認後立即生效,不受底部儲存按鈕控制。", "连接参数": "連線參數", "连接设置": "連線設定", "配置余额查询凭证、自动刷新间隔与失败重试。": "設定餘額查詢憑證、自動重新整理間隔與失敗重試。", "鉴权方式": "驗證方式", "隐藏新输入的密钥": "隱藏新輸入的金鑰", "高级兼容": "進階相容性", "默认关闭": "預設關閉", " · 模型 {head}{rest}": " · 模型 {head}{rest}", " 等 {n} 个": " 等 {n} 個", "1// 开头的 Google refresh token(也可直接粘贴 refresh_token=… 整行)": "1// 開頭的 Google refresh token(也可直接貼上 refresh_token=… 整行)", "11 位大陆手机号": "11 位大陸手機號", "1~64 个字符,账号列表里按它分组显示": "1~64 個字元,帳號列表裡按它分組顯示", "6 位数字": "6 位數字", "
  • 没有可自动领的活动
  • ": "
  • 沒有可自動領的活動
  • ", "

    领到的是套餐赠送积分,不会增加福利模型的 token 池;": "

    領到的是套餐贈送積分,不會增加福利模型的 token 池;", "ACP 代理配置无效,请重新选择代理。": "ACP 代理設定無效,請重新選擇代理。", "ACP 会话失败时不自动重发,也不切换到其他接入方式。": "ACP 工作階段失敗時不自動重送,也不切換到其他接入方式。", "ACP 使用网关电脑上的官方 agy CLI,不是当前手机或浏览器所在设备。请先安装 agy 1.5.0 或更新版本:https://antigravity.google/docs/cli。程序不在默认位置时,可在网关启动环境设置 AGY_PATH。": "ACP 使用網關電腦上的官方 agy CLI,不是目前手機或瀏覽器所在裝置。請先安裝 agy 1.5.0 或更新版本:https://antigravity.google/docs/cli。程式不在預設位置時,可在網關啟動環境設定 AGY_PATH。", "ACP 尚未返回可用的会话模型目录,请检查官方 CLI 登录状态后重试。": "ACP 尚未傳回可用的工作階段模型目錄,請檢查官方 CLI 登入狀態後重試。", "ACP 的本机进程仍使用原来的代理。请先在插件页停用再启用 ACP 插件,再使用新的代理。": "ACP 的本機處理程序仍使用原來的代理。請先在外掛頁停用再啟用 ACP 外掛,再使用新的代理。", "API Key + 控制台令牌(模型调用 + 墨点额度)": "API Key + 控制台權杖(模型呼叫 + 墨點額度)", "API 凭证添加暂不能解析代理池引用;请使用自定义代理地址,添加后再在账号设置中调整。": "新增 API 憑證暫時無法解析代理池參照;請使用自訂代理位址,新增後再於帳號設定中調整。", "API 模板": "API 範本", "AWS Builder ID(直接授权,减少一次回填)": "AWS Builder ID(直接授權,減少一次回填)", "AWS 地区(账号目录所在地区)": "AWS 區域(帳號目錄所在區域)", "AiHubMix 的 OpenAI 兼容端点,使用 AiHubMix 的 API Key;模型 ID 以平台清单为准": "AiHubMix 的 OpenAI 相容端點,使用 AiHubMix 的 API Key;模型 ID 以平台清單為準", "Anthropic 兼容端点在 https://api.deepseek.com/anthropic(协议换 anthropic 时填它)": "Anthropic 相容端點在 https://api.deepseek.com/anthropic(協議換 anthropic 時填它)", "Anthropic 协议填根地址,不要带 /v1": "Anthropic 協議填根地址,不要帶 /v1", "Antigravity": "Antigravity", "Antigravity 账号的添加方式": "Antigravity 帳號的新增方式", "AtomCode": "AtomCode", "AutoClaw 国内版": "AutoClaw 國內版", "AutoClaw 国际版": "AutoClaw 國際版", "BDUSS 必填;请粘贴**完整 Cookie**(Cookie 编辑器一键导出即可)—— 其中 **PTOKEN 必须保留**,网关要用它向百度换发 KukuAI 业务会话令牌,缺了它模型刷新会报「未登录」。支持整段 Cookie 头、Cookie 编辑器导出的 JSON 数组,或 {BDUSS, STOKEN} 对象。KukuAI 没有刷新机制,登录态过期后重新粘贴即可。": "BDUSS 必填;請貼上**完整 Cookie**(Cookie 編輯器一鍵匯出即可)—— 其中 **PTOKEN 必須保留**,閘道器要用它向百度換髮 KukuAI 業務會話權杖,缺了它模型重新整理會報「未登入」。支援整段 Cookie 頭、Cookie 編輯器匯出的 JSON 陣列,或 {BDUSS, STOKEN} 物件。KukuAI 沒有重新整理機制,登入態過期後重新貼上即可。", "BDUSS=…; STOKEN=…(或 Cookie 编辑器导出的 JSON)": "BDUSS=…; STOKEN=…(或 Cookie 編輯器匯出的 JSON)", "CatPaw 的 X-Passport-Token(登录态 Cookie)": "CatPaw 的 X-Passport-Token(登入態 Cookie)", "ChatGPT / Codex": "ChatGPT / Codex", "ChatGPT API": "ChatGPT API", "ChatGPT API 订阅": "ChatGPT API 訂閱", "Claude Code 本机订阅": "Claude Code 本機訂閱", "Claude 订阅": "Claude 訂閱", "Cline Pass 的 API Key 在 app.cline.bot 获取(订阅制);端点为 OpenAI 兼容,模型清单以 Cline 控制台为准,模型名在模型管理里按裸名添加(如 glm-5.2 / kimi-k2.7-code / deepseek-v4-pro);上游按客户端形态校验,所需的客户端请求头已随卡预置": "Cline Pass 的 API Key 在 app.cline.bot 獲取(訂閱制);端點為 OpenAI 相容,模型清單以 Cline 控制台為準,模型名在模型管理裡按裸名新增(如 glm-5.2 / kimi-k2.7-code / deepseek-v4-pro);上游按客戶端形態校驗,所需的客戶端請求頭已隨卡預置", "Cloud project 必填;不会借用其他 Google 提供商的凭证或额度。": "Cloud project 必填;不會借用其他 Google 提供商的憑證或額度。", "Cloud-IDE-JWT(三段点分)": "Cloud-IDE-JWT(三段點分)", "Cloudflare Account ID(32 位十六进制)": "Cloudflare Account ID(32 位十六進位)", "Codex 订阅": "Codex 訂閱", "Command Code": "Command Code", "Cursor dashboard API key;loader 按需重新 exchange 模型 token,不提供手动令牌刷新。": "Cursor dashboard API key;loader 按需重新交換模型 token,不提供手動權杖更新。", "DeepSeek 网页": "DeepSeek 網頁", "Gemini CLI / Code Assist": "Gemini CLI / Code Assist", "Gemini CLI 凭证文件绝对路径(只读,不复制或写回 refresh token)": "Gemini CLI 憑證檔案絕對路徑(唯讀,不複製或寫回 refresh token)", "GitHub Copilot": "GitHub Copilot", "GitHub 官方设备码登录": "GitHub 官方裝置碼登入", "GitHub 登录域名(留空使用 github.com)": "GitHub 登入網域(留空使用 github.com)", "Google Cloud Project ID(必填,Standard / Enterprise 资格由上游判定)": "Google Cloud Project ID(必填,Standard / Enterprise 資格由上游判定)", "Google Cloud Project ID(必填,Standard / Enterprise 资格由上游判定);默认候选来自 {variable},请明确确认": "Google Cloud Project ID(必填,Standard / Enterprise 資格由上游判定);預設候選來自 {variable},請明確確認", "Google OAuth(Code Assist + Cloud project)": "Google OAuth(Code Assist + Cloud project)", "Google 授权(ACP)": "Google 授權(ACP)", "Groq 的 OpenAI 兼容端点,使用 GroqCloud 的 API Key": "Groq 的 OpenAI 相容端點,使用 GroqCloud 的 API Key", "IAM Identity Center(企业账号,直接授权)": "IAM Identity Center(企業帳號,直接授權)", "JWT(三段点分;也可直接粘贴 Bearer 整行或 data.bin 内容)": "JWT(三段點分;也可直接貼上 Bearer 整行或 data.bin 內容)", "JWT(三段点分;也可直接粘贴 chatglm_token=… 整行)": "JWT(三段點分;也可直接貼上 chatglm_token=… 整行)", "Kimi / Moonshot 国内版": "Kimi / Moonshot 國內版", "Kimi / Moonshot 国内站 API Key,使用 moonshot.cn 按量接口;不是 Kimi Code 会员入口": "Kimi / Moonshot 國內站 API Key,使用 moonshot.cn 按量介面;不是 Kimi Code 會員入口", "Kimi / Moonshot 国际版": "Kimi / Moonshot 國際版", "Kimi / Moonshot 国际站 API Key,使用 moonshot.ai 按量接口;不是 Kimi Code 会员入口": "Kimi / Moonshot 國際站 API Key,使用 moonshot.ai 按量介面;不是 Kimi Code 會員入口", "Kiro API key(ksk_…)。": "Kiro API key(ksk_…)。", "Kiro 登录页(Google / GitHub 等)": "Kiro 登入頁(Google / GitHub 等)", "Kiro 网页登录": "Kiro 網頁登入", "LM Studio(本地)": "LM Studio(本機)", "LobsterAI": "LobsterAI", "LongCat 的 OpenAI 兼容端点,使用 LongCat 平台的 API Key": "LongCat 的 OpenAI 相容端點,使用 LongCat 平台的 API Key", "MClaw 由插件在网关电脑上启动专用 Chrome 窗口,独立登录环境也用于自动续期,不使用系统默认浏览器或应用内嵌窗口。": "MClaw 由插件在閘道電腦上啟動專用 Chrome 視窗,獨立登入環境也用於自動續期,不使用系統預設瀏覽器或應用程式內嵌視窗。", "MiniMax Code 国内版": "MiniMax Code 國內版", "MiniMax Code 国际版": "MiniMax Code 國際版", "Mistral 的 OpenAI 兼容端点,使用 Mistral 控制台的 API Key": "Mistral 的 OpenAI 相容端點,使用 Mistral 控制台的 API Key", "ModelScope 国内版": "ModelScope 國內版", "ModelScope 国际版": "ModelScope 國際版", "MonkeyCode": "MonkeyCode", "MonkeyCode 国际版": "MonkeyCode 國際版", "MonkeyCode 自动网页登录仅限桌面端;浏览器面板请登录对应官网后粘贴 session。": "MonkeyCode 自動網頁登入僅限桌面版;瀏覽器面板請登入對應官網後貼上 session。", "NVIDIA NIM 托管端点,Key 在 integrate.api.nvidia.com 申请": "NVIDIA NIM 託管端點,Key 在 integrate.api.nvidia.com 申請", "Nous Portal 的按量 API,使用 Portal 的 API Key;不是旧的订阅登录方式": "Nous Portal 的按量 API,使用 Portal 的 API Key;不是舊的訂閱登入方式", "OfficeAce 果办": "OfficeAce 果辦", "QuWork 凭证": "QuWork 憑證", "QuWork 原设备标识": "QuWork 原裝置識別", "QwenWork 千问办公": "QwenWork 千問辦公", "QwenWork 千问办公企业版": "QwenWork 千問辦公企業版", "StepFun 国内版(按量)": "StepFun 國內版(按量)", "StepFun 国内站按量 API;请使用按量 API Key,不要填 Step Plan 套餐 Key": "StepFun 國內站按量 API;請使用按量 API Key,不要填 Step Plan 套餐 Key", "StepFun 国际版(按量)": "StepFun 國際版(按量)", "StepFun 国际站按量 API;请使用按量 API Key,不要填 Step Plan 套餐 Key": "StepFun 國際站按量 API;請使用按量 API Key,不要填 Step Plan 套餐 Key", "Tabbit 国内版": "Tabbit 國內版", "Tabbit 国际版": "Tabbit 國際版", "TokenPlan API Key(控制台 → 科研模型 → API Key)": "TokenPlan API Key(控制台 → 科研模型 → API Key)", "User-Agent(可选)": "User-Agent(選填)", "accessToken 是 Accio 的登录凭证(一长串不透明 token,不是 JWT);refreshToken 可选,填了之后到期能自动续期。请填写 {label}账号的凭证 —— {siteNote}(最容易拿到的办法:直接用上方的「网页登录」,不需要手工找 token。)": "accessToken 是 Accio 的登入憑證(一長串不透明 token,不是 JWT);refreshToken 可選,填了之後到期能自動續期。請填寫 {label}帳號的憑證 —— {siteNote}(最容易拿到的辦法:直接用上方的「網頁登入」,不需要手工找 token。)", "accessToken 是 Trae 的 Cloud-IDE-JWT(三段点分),refreshToken 用于到期自动续期(本家 refreshToken 一次一换:换发一次旧的即作废,所以两份程序别同时刷同一个账号)。
    手工粘贴时请连 machineId / deviceId 一起填:上游把它们与登录时上传的设备公钥绑在一起判设备,凭空换一对会撞 2xxxx 那族设备绑定拒绝。
    没有这三样时的正路是用上方的「网页登录」;容器 / 远程部署形态按提示粘贴地址栏回调地址即可。": "accessToken 是 Trae 的 Cloud-IDE-JWT(三段點分),refreshToken 用於到期自動續期(本家 refreshToken 一次一換:換髮一次舊的即作廢,所以兩份程式別同時刷同一個帳號)。
    手工貼上時請連 machineId / deviceId 一起填:上游把它們與登入時上傳的裝置公鑰綁在一起判裝置,憑空換一對會撞 2xxxx 那族裝置繫結拒絕。
    沒有這三樣時的正路是用上方的「網頁登入」;容器 / 遠端部署形態按提示貼上位址列回撥地址即可。", "chat.deepseek.com 的 userToken.value,不是收费 API Key": "chat.deepseek.com 的 userToken.value,不是付費 API Key", "github-copilot/apps.json 或 opencode/auth.json": "github-copilot/apps.json 或 opencode/auth.json", "github.com 或 company.ghe.com": "github.com 或 company.ghe.com", "github.com:Iv1.b507a08c87ecfe98 或 github-copilot": "github.com:Iv1.b507a08c87ecfe98 或 github-copilot", "monkeycode_ai_session 的值(也可直接粘贴整段 Cookie)": "monkeycode_ai_session 的值(也可直接貼上整段 Cookie)", "ms- 开头的 API 令牌": "ms- 開頭的 API 權杖", "project 必填;只读引用文件,模块的 OAuth 续期不写回客户端。": "project 必填;唯讀參照檔案,模組的 OAuth 更新不寫回用戶端。", "refreshToken 可选,填了到期可自动续期;两者都能从小浣熊客户端登录态文件里取到。": "refreshToken 可選,填了到期可自動續期;兩者都能從小浣熊客戶端登入態檔案裡取到。", "refreshToken 可选,填了可自动续期;两者都能从客户端登录态文件取到。同一个 Cline 账号两个池都能用,这里归入 {label}。": "refreshToken 可選,填了可自動續期;兩者都能從客戶端登入態檔案取到。同一個 Cline 帳號兩個池都能用,這裡歸入 {label}。", "token 支持 enc: 前缀(Windows 上自动解密)。未填 refreshToken 无法自动续期。": "token 支援 enc: 字首(Windows 上自動解密)。未填 refreshToken 無法自動續期。", "token 是登录态 Cookie;CatPaw 没有刷新机制,过期后需在客户端重新登录。": "token 是登入態 Cookie;CatPaw 沒有重新整理機制,過期後需在客戶端重新登入。", "token=…; user_id=…(也可粘贴 Copy as cURL 整段)": "token=…; user_id=…(也可粘貼 Copy as cURL 整段)", "user_ 开头的 API Key(也可直接粘贴 Authorization: Bearer … 整行)": "user_ 開頭的 API Key(也可直接貼上 Authorization: Bearer … 整行)", "xAI 的 OpenAI 兼容端点,使用 xAI 控制台的 API Key;不是 Grok 网页订阅": "xAI 的 OpenAI 相容端點,使用 xAI 控制台的 API Key;不是 Grok 網頁訂閱", "your-company.vpc.qwenwork.cn 或 https://your-company.vpc.qwenwork.cn": "your-company.vpc.qwenwork.cn 或 https://your-company.vpc.qwenwork.cn", "{label} 网页登录的打开方式": "{label} 網頁登入的開啟方式", "{label} 账号地区": "{label} 帳號地區", "{label} 账号的添加方式": "{label} 帳號的新增方式", "{label}账号已添加": "{label} 帳號已新增", "{label}(只读本机)": "{label}(本機唯讀)", "{message}:请在打开的页面完成滑块,完成后回到这里点「已完成验证,继续发送」": "{message}:請在開啟的頁面完成滑塊,完成後回到這裡點「已完成驗證,繼續傳送」", "{message}:请手动打开验证页面 {url},完成后回到这里点「已完成验证,继续发送」": "{message}:請手動開啟驗證頁面 {url},完成後回到這裡點「已完成驗證,繼續傳送」", "{name} 不是合法 JSON:{reason}": "{name} 不是合法 JSON:{reason}", "{name}要粘一个 JSON 对象(形如 {sample})": "{name}要粘一個 JSON 物件(形如 {sample})", "{n} 个账号": "{n} 個帳號", "{n} 个账号,点击添加": "{n} 個帳號,點擊新增", "{seconds}s 后重发": "{seconds}s 後重發", "✅ {label}账号已添加": "✅ {label}帳號已新增", "✅ {label}账号已添加{name}": "✅ {label}帳號已新增{name}", "✅ 已从 cc-switch 导入 {n} 个供应商": "✅ 已從 cc-switch 匯入 {n} 個供應商", "✅ 已创建自定义提供商「{name}」并添加账号": "✅ 已建立自定義提供商「{name}」並新增帳號", "✅ 已删除自定义提供商「{name}」{accounts}{keys}": "✅ 已刪除自定義提供商「{name}」{accounts}{keys}", "✅ 已更新已有账号{name}(同一把 API Key 只保留一条,重复添加会合并)": "✅ 已更新已有帳號{name}(同一把 API Key 只保留一條,重複新增會合並)", "✅ 已更新已有账号{name}(同一提供商内,同一把 API Key 只保留一条)": "✅ 已更新已有帳號{name}(同一提供商內,同一把 API Key 只保留一筆)", "✅ 登录成功,{edition}账号已加入列表": "✅ 登入成功,{edition}帳號已加入列表", "✅ 领取成功:{planId}{period}": "✅ 領取成功:{planId}{period}", " 同一家可以放多把 key,按优先级轮换。": " 同一家可以放多把 key,按優先順序輪換。", "「{name}」的账号添加功能还在开发中,敬请期待。": "「{name}」的帳號新增功能還在開發中,敬請期待。", "一个 Key 用遍多家模型,模型名用「厂商/模型」全称(如 deepseek/deepseek-chat)": "一個 Key 用遍多家模型,模型名用「廠商/模型」全稱(如 deepseek/deepseek-chat)", "上游不要鉴权时留空,并勾选下面一项(留空又不勾会被当成未配置凭证)": "上游不要鑑權時留空,並勾選下面一項(留空又不勾會被當成未配置憑證)", "上游信息": "上游資訊", "上游没有给出验证页面地址": "上游沒有給出驗證頁面位址", "上游要求人机验证,但没有给出验证页面地址,请稍后重试": "上游要求人機驗證,但沒有給出驗證頁面位址,請稍後重試", "不使用预置": "不使用預設", "不可领({status})": "不可領({status})", "不授权": "不授權", "不支持导入": "不支援匯入", "不是有效的凭证文件:内容要是一个 JSON 对象": "不是有效的憑證檔案:內容要是一個 JSON 物件", "不是有效的凭证文件:需要包含 accessToken 与 uid": "不是有效的憑證檔案:需要包含 accessToken 與 uid", "不是自定义提供商": "不是自定義提供商", "不需要 Key:转发与拉取模型都不发送鉴权头": "不需要 Key:轉發與拉取模型都不傳送鑑權頭", "不需要登录:点下面的按钮,网关会直接在智谱清言换发一份访客凭证并加入账号列表(也可以先填个备注名)。访客凭证可以直接用来对话,免费额度由上游按设备发放。

    注意:访客账号没有积分体系 —— 它与「会员积分」「每日登录积分」「活动领取」相关的接口一律需要登录,因此那些能力对访客会如实跳过(账号页的积分、签到中心都不显示读数)。想要积分就用「填写凭证」粘一个已登录账号的令牌,或「导入桌面端登录态」。": "不需要登入:點下面的按鈕,閘道器會直接在智譜清言換髮一份訪客憑證並加入帳號列表(也可以先填個備註名)。訪客憑證可以直接用來對話,免費額度由上游按裝置發放。

    注意:訪客帳號沒有積分體系 —— 它與「會員積分」「每日登入積分」「活動領取」相關的介面一律需要登入,因此那些能力對訪客會如實跳過(帳號頁的積分、簽到中心都不顯示讀數)。想要積分就用「填寫憑證」粘一個已登入帳號的權杖,或「匯入桌面版登入態」。", "两版账号可同时保存,各自一份模型清单(国内版与国际版是两家提供商,可分别启用与映射)。": "兩版帳號可同時儲存,各自一份模型清單(國內版與國際版是兩家提供商,可分別啟用與對映)。", "中国版": "中國版", "也支持本软件导出的单账号 JSON 文件,保留账号凭证与附加信息。": "也支援本軟體匯出的單帳號 JSON 檔案,保留帳號憑證與附加資訊。", "仅 API Key(模型调用,不含墨点额度)": "僅 API Key(模型呼叫,不含墨點額度)", "仅填写自己的 GitHub 令牌": "僅填寫自己的 GitHub 權杖", "仅支持仍有有效 Gemini Code Assist Standard / Enterprise 资格并绑定 Cloud project 的账号。个人免费版及 Google AI Pro / Ultra 已于 2026-06-18 停止支持;Standard / Enterprise 新订阅已于 2026-10-09 停售。不会切换到其他 Google 产品或额度池。": "僅支援仍具有有效 Gemini Code Assist Standard / Enterprise 資格並綁定 Cloud project 的帳號。個人免費版及 Google AI Pro / Ultra 已於 2026-06-18 停止支援;Standard / Enterprise 新訂閱已於 2026-10-09 停售。不會切換至其他 Google 產品或額度池。", "仅读取本机 Claude Code 的当前订阅登录。若未登录,请先在自己的终端登录;本地凭证仍由 CLI 管理。": "僅讀取本機 Claude Code 的目前訂閱登入。若未登入,請先在自己的終端機登入;本機憑證仍由 CLI 管理。", "今天没有需要领的活动(都已到账)": "今天沒有需要領的活動(都已到賬)", "今天(北京时间 {day})已试 {attempts} 次,还能试 {left} 次{next}
    ": "今天(北京時間 {day})已試 {attempts} 次,還能試 {left} 次{next}
    ", "从 Google 官方源下载并核验 SHA-512;下载使用网关默认出口。更新失败保留旧版,进行中的对话不受替换影响。": "從 Google 官方來源下載並驗證 SHA-512;下載使用閘道預設出口。更新失敗保留舊版,進行中的對話不受替換影響。", "从别的机器(或 OfficeAce 桌面端 models.json)取三项贴进来:模型网关基址(baseUrl,形如 https://modelgw-…/v2)与 modelAppKey / modelAppSecret。这三项就能转发(网关凭据不过期);控制面临时凭据(accessKeyId 等)可选,留空则额度/自动续期不可用,但不影响转发。": "從別的機器(或 OfficeAce 桌面版 models.json)取三項貼進來:模型閘道器基址(baseUrl,形如 https://modelgw-…/v2)與 modelAppKey / modelAppSecret。這三項就能轉發(閘道器憑據不過期);控制面臨時憑據(accessKeyId 等)可選,留空則額度/自動續期不可用,但不影響轉發。", "从本机导入桌面端登录态": "從本機匯入桌面版登入態", "任务镜像 id": "任務映象 id", "余额查询": "餘額查詢", "你企业的千问办公旗舰版域名(企业管理后台地址栏的域名,如 your-company.vpc.qwenwork.cn)": "你企業的千問辦公旗艦版網域(企業管理後台網址列的網域,如 your-company.vpc.qwenwork.cn)", "使用 Google 账号登录": "使用 Google 帳號登入", "使用 Zai 账号登录": "使用 Zai 帳號登入", "使用 {name} 模板新建提供商": "使用 {name} 範本建立提供商", "使用个人访问令牌(PAT)": "使用個人存取權杖(PAT)", "使用本机 Claude Code 登录": "使用本機 Claude Code 登入", "使用本机 Kimi Work 登录": "使用本機 Kimi Work 登入", "使用模板新建提供商": "使用範本建立提供商", "使用网页令牌,不是收费 API Key。": "使用網頁權杖,不是付費 API Key。", "使用自己的 GitHub 账号授权;模型条款须在官方客户端手动确认。": "使用自己的 GitHub 帳號授權;模型條款須於官方用戶端手動確認。", "先在网关所在机器启动 LM Studio 服务;localhost 指向网关所在机器,远程或容器部署请改为网关可访问的地址。默认无需鉴权;启用认证后请取消「该上游无需鉴权」并填写真实 API Key": "請先在閘道所在的機器啟動 LM Studio 服務;localhost 指向閘道所在的機器,遠端或容器部署請改為閘道可存取的位址。預設無需驗證;啟用驗證後請取消「該上游無需鑑權」並填寫真實 API Key", "免费模型不用填 Key(默认勾上「该上游无需鉴权」,网关自动用匿名凭证);付费模型则填 Zen 的 API Key。免费档上游只认官方客户端形态,已默认开启「伪装 OpenCode 官方客户端」": "免費模型不用填 Key(預設勾上「該上游無需鑑權」,閘道器自動用匿名憑證);付費模型則填 Zen 的 API Key。免費檔上游只認官方客戶端形態,已預設開啟「偽裝 OpenCode 官方客戶端」", "关联用户指定的本地 Copilot 凭证(只读)": "關聯使用者指定的本機 Copilot 憑證(唯讀)", "内嵌窗口": "內嵌視窗", "内嵌窗口打开;关窗即取消等待(Google 账号被拒时改用系统浏览器)": "內嵌視窗開啟;關窗即取消等待(Google 帳號被拒時改用系統瀏覽器)", "内嵌窗口打开;完成后自动加入列表,关窗即取消等待": "在內嵌視窗開啟;完成後自動加入清單,關閉視窗即取消等待", "内嵌窗口打开;扫码完成后自动加入列表,关窗即取消等待": "內嵌視窗開啟;掃碼完成後自動加入列表,關窗即取消等待", "内嵌窗口用全新环境,多账号互不影响;关窗即取消等待": "內嵌視窗用全新環境,多帳號互不影響;關窗即取消等待", "内嵌窗口登录": "內嵌視窗登入", "内嵌窗口(推荐)": "內嵌視窗(推薦)", "准备验证…": "準備驗證…", "凭据 JSON": "憑據 JSON", "凭证 JSON 或模型凭证": "憑證 JSON 或模型憑證", "凭证仅发送至当前网关": "憑證僅傳送至目前閘道", "凭证文件在哪?": "憑證檔案在哪?", "凭证文件类型": "憑證檔案類型", "创建并添加账号": "建立並新增帳號", "创建这个提供商,并同时建立它的第一个账号。": "建立這個提供商,並同時建立它的第一個帳號。", "删除功能不可用(脚本未就绪)": "刪除功能不可用(指令碼未就緒)", "删除失败:{reason}": "刪除失敗:{reason}", "删除此提供商": "刪除此提供商", "千问办公 国内版": "千問辦公 國內版", "千问办公 国际版": "千問辦公 國際版", "千问办公{label}暂时无法登录:上游只接受它自己的官方回调地址,不论证码到本机。": "千問辦公{label}暫時無法登入:上游只接受它自己的官方回呼網址,不會把驗證碼傳回本機。", "原样提交本次流程的完整回调 URL。": "原樣提交本次流程的完整回呼 URL。", "去安装提供商插件包": "去安裝提供商外掛包", "及 {n} 个账号": "及 {n} 個帳號", "发送中…": "傳送中…", "发送失败:{message}": "傳送失敗:{message}", "发送未确认:登录窗口已弹出,请在弹出的窗口中手动完成登录": "傳送未確認:登入視窗已彈出,請在彈出的視窗中手動完成登入", "取消失败:{message}": "取消失敗:{message}", "取消安装": "取消安裝", "取消等待": "取消等待", "只使用此路线签发的 OAuth 凭证;direct SIWC 与 Codex 客户端身份不同。": "僅使用此路線簽發的 OAuth 憑證;direct SIWC 與 Codex 用戶端身分不同。", "只关联真实 CLI 2.1.259+ 的当前订阅;不代登录、不复制或续期客户端凭证。": "僅關聯真實 CLI 2.1.259+ 的目前訂閱;不代為登入、不複製或更新用戶端憑證。", "只拿到 JWT 时填这里;Cookie 里有 token 可留空": "只拿到 JWT 時填這裡;Cookie 裡有 token 可留空", "只有「内嵌窗口」能恢复第三方入口:系统浏览器里我们无法改动登录页": "只有「內嵌視窗」能恢復第三方入口:系統瀏覽器裡我們無法改動登入頁", "只看这一类": "只看這一類", "只读引用 Grok Build home/scope/account;每次读取当前登录态,不复制 token,不回退退出前快照,不主动续期;源有效期未知时不作长期有效承诺。": "唯讀參照 Grok Build home/scope/account;每次讀取目前登入狀態,不複製 token、不退回登出前快照、不主動更新;來源有效期限未知時不承諾長期有效。", "只读引用本机 Kiro CLI/IDE;每次读取校验同一邮箱,不复制 token、不主动续期或回写,失效后由原客户端重登或同步。": "唯讀參照本機 Kiro CLI/IDE;每次讀取驗證同一信箱,不複製 token、不主動更新或寫回,失效後由原用戶端重新登入或同步。", "只读所选标准文件与账号条目并验证 GitHub/Copilot 身份;只保存引用,不保存令牌副本,不扫描目录、读取 keychain 或运行 CLI。": "唯讀存取所選標準檔案與帳號項目並驗證 GitHub/Copilot 身分;僅儲存參照,不儲存權杖副本,不掃描目錄、讀取 keychain 或執行 CLI。", "只读校验明确选择的本机凭证文件;仅保存引用与稳定身份,不复制或续期原客户端令牌。": "唯讀驗證明確選擇的本機憑證檔案;僅儲存參照與穩定身分,不複製或更新原用戶端權杖。", "只读用户明确指定的文件和账号条目,不自动扫描。": "唯讀存取使用者明確指定的檔案與帳號項目,不自動掃描。", "只读验证所选 Gemini CLI 登录态和指定 project 的 Code Assist Standard / Enterprise 资格;不会启动 CLI、续期或复制令牌。": "唯讀驗證所選 Gemini CLI 登入狀態及指定 project 的 Code Assist Standard / Enterprise 資格;不會啟動 CLI、更新或複製權杖。", "只读验证本机 Claude Code 当前订阅登录;凭证仍由原 CLI 管理。": "唯讀驗證本機 Claude Code 目前訂閱登入;憑證仍由原 CLI 管理。", "只读验证本机 Kimi 桌面版已有的 Work 登录,不复制令牌;账号可能没有可用模型。": "唯讀驗證本機 Kimi 桌面版既有的 Work 登入,不複製權杖;帳號可能沒有可用模型。", "可选": "可選", "可选(cloudaicompanionProject):留空由网关自动发现": "可選(cloudaicompanionProject):留空由閘道器自動發現", "可选,仅远程兑换码激活需要;从官方客户端读取": "選填,僅遠端兌換碼啟用需要;從官方用戶端讀取", "可选,展示用": "可選,展示用", "可选,没有则无法自动续期": "可選,沒有則無法自動續期", "可选,用于生成账号标识": "選填,用於產生帳號識別碼", "可选,留空使用凭据里的 user_name": "可選,留空使用憑據裡的 user_name", "可选,留空使用账号名或邮箱": "可選,留空使用帳號名或信箱", "可选,留空使用账号姓名、邮箱或令牌指纹": "可選,留空使用帳號姓名、郵箱或權杖指紋", "可选,留空使用账号昵称或邮箱": "可選,留空使用帳號暱稱或郵箱", "可选,留空则用 key 尾号": "可選,留空則用 key 尾號", "可选,留空则用 userId": "可選,留空則用 userId", "可选,留空则用上游账号昵称": "可選,留空則用上游帳號暱稱", "可选,留空则用上游返回的账号名或账号 id": "可選,留空則用上游返回的帳號名或帳號 id", "可选,留空则用凭证里的账号名": "可選,留空則用憑證裡的帳號名", "可选,留空则用文件里的昵称": "可選,留空則用檔案裡的暱稱", "可选,留空则用登录名或 uid": "可選,留空則用登入名或 uid", "可选,留空则用脱敏手机号": "可選,留空則用脫敏手機號", "可选,留空则用脱敏手机号或 userId": "可選,留空則用脫敏手機號或 userId", "可选,留空则用账号 uk": "可選,留空則用帳號 uk", "可选,留空则用账号昵称": "選填,留空則用帳號暱稱", "可选,留空则用账号昵称或 userId": "可選,留空則用帳號暱稱或 userId", "可选,留空则用邮箱或令牌尾号": "可選,留空則用郵箱或權杖尾號", "可选,留空用「AtomCode」": "選填,留空用「AtomCode」", "可选,留空用「OfficeAce 果办」": "可選,留空用「OfficeAce 果辦」", "可选,留空自动生成": "可選,留空自動生成", "可选,留空自动用昵称": "可選,留空自動用暱稱", "可选,给这个访客账号起个备注名": "可選,給這個訪客帳號起個備註名", "可选,续期时带上": "可選,續期時帶上", "可选,讯飞侧 userid": "可選,訊飛側 userid", "可选:发起对话必需,留空则由网关从该账号已有任务里自动发现,发现不到时之后手动补": "可選:發起對話必需,留空則由閘道器從該帳號已有任務裡自動發現,發現不到時之後手動補", "可选:账号邮箱,用于展示与身份识别(换新令牌也能认回同一账号)": "可選:帳號郵箱,用於展示與身份識別(換新權杖也能認回同一帳號)", "可选;UUID 形态,与凭据同生共死": "可選;UUID 形態,與憑據同生共死", "可选;填了才能到期自动续期": "可選;填了才能到期自動續期", "可选;用于去重与展示名(留空时网关会问一次上游)": "可選;用於去重與展示名(留空時閘道器會問一次上游)", "可选;用于生成账号 id 与展示名": "可選;用於生成帳號 id 與展示名", "可选;纯数字串(上游只收 8–24 位数字)": "可選;純數字串(上游只收 8–24 位數字)", "可领取": "可領取", "同一家可以混着放:有 Key 的账号与无鉴权账号各按各的规则走;无需鉴权的账号也能并存多条(各自可配不同的出网代理)": "同一家可以混著放:有 Key 的帳號與無鑑權帳號各按各的規則走;無需鑑權的帳號也能並存多條(各自可配不同的出網代理)", "同地址换 anthropic 协议即走它的 Claude 兼容端点。转发必须填 OpenCode Go 的 API Key(订阅制;获取模型清单不需要 Key,但发请求上游会回 401「Missing API key」)": "同地址換 anthropic 協議即走它的 Claude 相容端點。轉發必須填 OpenCode Go 的 API Key(訂閱制;獲取模型清單不需要 Key,但發請求上游會回 401「Missing API key」)", "响应为空": "響應為空", "商汤日日新的 OpenAI 兼容端点;余额查询走控制台账号密码(见下方「余额查询」一段)": "商湯日日新的 OpenAI 相容端點;餘額查詢走控制台帳號密碼(見下方「餘額查詢」一段)", "回调已提交,仍需等待网关确认账号登录完成。": "回呼已提交,仍需等待閘道確認帳號登入完成。", "回调未被接受,请重新复制本次登录的完整回调地址": "回呼未被接受,請重新複製本次登入的完整回呼位址。", "国内版": "國內版", "国内版与**国际版是两套独立的账号与套餐**,凭证与领取的套餐都不通用。": "國內版與**國際版是兩套獨立的帳號與套餐**,憑證與領取的套餐都不通用。", "国内版登录页没有 Google / GitHub 入口(它用微信 / 手机号 / 邮箱登录)": "國內版登入頁沒有 Google / GitHub 入口(它用微信 / 手機號 / 郵箱登入)", "国内版的登录站点是 www.accio-ai.com,与国际版不是同一站。": "國內版的登入站點是 www.accio-ai.com,與國際版不是同一站。", "国内版(WorkBuddy)": "國內版(WorkBuddy)", "国内站为 https://api.siliconflow.cn/v1": "國內站為 https://api.siliconflow.cn/v1", "国内站(minimaxi.com);OpenAI 兼容地址为 https://api.minimaxi.com/v1": "國內站(minimaxi.com);OpenAI 相容地址為 https://api.minimaxi.com/v1", "国际版": "國際版", "国际版 z.ai 的 Coding 套餐;OpenAI 兼容地址为 https://api.z.ai/api/coding/paas/v4": "國際版 z.ai 的 Coding 套餐;OpenAI 相容地址為 https://api.z.ai/api/coding/paas/v4", "国际版与国内版是**两套独立的账号**(同一账号体系的两个站点),凭证不通用。": "國際版與國內版是**兩套獨立的帳號**(同一帳號體系的兩個站點),憑證不通用。", "国际版与国内版账号体系独立,请填国际版的凭证。未填 refreshToken 无法自动续期。": "國際版與國內版帳號體系獨立,請填國際版的憑證。未填 refreshToken 無法自動續期。", "国际版登录页默认只显示邮箱登录,勾选后恢复 Google / GitHub / X 入口": "國際版登入頁預設只顯示郵箱登入,勾選後恢復 Google / GitHub / X 入口", "国际版的推理站点是 api.z.ai,与国内版不是同一站;套餐也各自独立。": "國際版的推理站點是 api.z.ai,與國內版不是同一站;套餐也各自獨立。", "国际版(WorkBuddy AI)": "國際版(WorkBuddy AI)", "国际站 Coding 套餐;OpenAI 兼容地址为 https://api.minimax.io/v1": "國際站 Coding 套餐;OpenAI 相容地址為 https://api.minimax.io/v1", "在 AtomGit 的 AtomCode 页面登出后取得两项贴进来:accessToken 与 refreshToken。续期令牌建议填写——本家令牌不是 JWT(约 7 天到期,读不到过期时间),没有它账号无法自动续期,到期只能重新登录。": "在 AtomGit 的 AtomCode 頁面取得兩項貼進來:accessToken 與 refreshToken。續期權杖建議填寫——本家權杖不是 JWT(約 7 天到期,讀不到到期時間),沒有它帳號無法自動續期,到期只能重新登入。", "在 DeepSeek 官网完成登录,自动加入账号列表。": "在 DeepSeek 官網完成登入,自動加入帳號清單。", "在 GitHub 输入设备码 {code},核对账号与授权权限。设备码过期后需要重新发起登录。": "在 GitHub 輸入裝置碼 {code},核對帳號與授權權限。裝置碼過期後需要重新發起登入。", "在 cc-switch 里找到": "在 cc-switch 裡找到", "在 chat.deepseek.com 登录本人账号后,从浏览器开发者工具的 Application → Local Storage 复制 userToken 的 value。Cookie 可选,需补充时粘贴该站点请求里的完整 Cookie;登录态失效或要求人机验证时,请回官方网页手动登录后更新。这里不接受收费 API Key。": "在 chat.deepseek.com 登入本人帳號後,從瀏覽器開發者工具的 Application → Local Storage 複製 userToken 的 value。Cookie 為選填,需要補充時請貼上該網站請求中的完整 Cookie;登入狀態失效或要求人機驗證時,請回官方網頁手動登入後更新。此處不接受付費 API Key。", "在 web.tabbit.ai 登录后,从开发者工具 Application → Cookies 复制 token 与 user_id,或直接粘贴该站点请求的 Copy as cURL 整段。国际站没有可复刻的网页授权回调,手机号登录也处在上游灰度里,所以只能导入已有登录态。登录态有效期约 7 天,过期后重新导入。Cookie 与 JWT 至少填一项。": "在 web.tabbit.ai 登錄後,從開發者工具 Application → Cookies 複製 token 與 user_id,或直接粘貼該站點請求的 Copy as cURL 整段。國際站沒有可復刻的網頁授權回調,手機號登錄也處在上游灰度裡,所以只能導入已有登錄態。登錄態有效期約 7 天,過期後重新導入。Cookie 與 JWT 至少填一項。", "在 web.tabbit.com 登录后,从开发者工具 Application → Cookies 复制 token 与 user_id,或直接粘贴该站点请求的 Copy as cURL 整段。登录态有效期约 7 天,上游没有续期接口,过期后重新导入即可。Cookie 与 JWT 至少填一项。": "在 web.tabbit.com 登錄後,從開發者工具 Application → Cookies 複製 token 與 user_id,或直接粘貼該站點請求的 Copy as cURL 整段。登錄態有效期約 7 天,上游沒有續期接口,過期後重新導入即可。Cookie 與 JWT 至少填一項。", "在内嵌窗口里完成官方登录,成功后自动加入账号列表。": "在內嵌視窗裡完成官方登入,成功後自動加入帳號列表。", "在{label}的 Qoder 账号设置 → Integrations 生成 PAT(别填 Google / GitHub 的令牌)。两个地区的账号与凭证不通用。": "在{label}的 Qoder 帳號設定 → Integrations 生成 PAT(別填 Google / GitHub 的權杖)。兩個地區的帳號與憑證不通用。", "在应用内嵌窗口完成 WPS 登录,登录凭据仅交给原插件校验并保存到当前网关。": "在應用程式內嵌視窗完成 WPS 登入,登入憑證僅交給原外掛驗證並儲存到目前閘道。", "在所选站点的 MonkeyCode 官方页面完成登录和验证码,成功后自动读取登录态并加入账号列表,无需手动复制 Cookie。": "在所選站點的 MonkeyCode 官方頁面完成登入和驗證,成功後自動讀取登入狀態並加入帳號清單,無需手動複製 Cookie。", "在打开的官方授权页里用微信扫码登录(页面会直接显示二维码)。扫码成功后自动加入账号列表。": "在開啟的官方授權頁裡用微信掃碼登入(頁面會直接顯示二維碼)。掃碼成功後自動加入帳號列表。", "在打开的官方登录页里完成登录,成功后自动加入账号列表。": "在開啟的官方登入頁裡完成登入,成功後自動加入帳號列表。", "在打开的登录页里用百度账号登录 KukuAI 主站(手机验证码 / 扫码均可),登录成功后自动加入账号列表。网关会向百度换发 KukuAI 业务会话令牌(依赖本机已安装库库AI 客户端)。": "在開啟的登入頁裡用百度帳號登入 KukuAI 主站(手機驗證碼 / 掃碼均可),登入成功後自動加入帳號列表。閘道器會向百度換髮 KukuAI 業務會話權杖(依賴本機已安裝庫庫AI 客戶端)。", "在打开的登录页里登录 Google 账号(Antigravity 的授权页),授权完成后自动加入账号列表。": "在開啟的登入頁裡登入 Google 帳號(Antigravity 的授權頁),授權完成後自動加入帳號列表。", "在打开的窗口里用百度账号登录 KukuAI 主站(手机验证码 / 扫码均可),登录成功后自动加入账号列表。网关会向百度换发 KukuAI 业务会话令牌(依赖本机已安装库库AI 客户端)。": "在開啟的窗口裡用百度帳號登入 KukuAI 主站(手機驗證碼 / 掃碼均可),登入成功後自動加入帳號列表。閘道器會向百度換髮 KukuAI 業務會話權杖(依賴本機已安裝庫庫AI 客戶端)。", "在打开的窗口里登录 Google 账号(Antigravity 的授权页),授权完成后自动加入账号列表。": "在開啟的窗口裡登入 Google 帳號(Antigravity 的授權頁),授權完成後自動加入帳號列表。", "在打开的页面里登录千问办公{label}({site})的账号,登录完成后会自动加入列表。两版的账号与凭证不通用。": "在開啟的頁面登入千問辦公{label}({site})的帳號,登入完成後會自動加入清單。兩版的帳號與憑證不通用。", "在浏览器中打开登录页": "在瀏覽器中開啟登入頁", "在系统浏览器授权指定 project 的 Code Assist Standard / Enterprise;账号与 project 仍须通过真实预检。": "在系統瀏覽器授權指定 project 的 Code Assist Standard / Enterprise;帳號與 project 仍須通過實際預檢。", "在豆包官方页面完成登录,窗口会自动读取完整 Cookie 并加入账号列表;不需要安装豆包工作客户端。": "在豆包官方頁面完成登入,視窗會自動讀取完整 Cookie 並加入帳號清單;不需要安裝豆包工作用戶端。", "地区": "地區", "填写信息后发起授权,进度与失败原因会显示在这里。": "填寫資訊後發起授權,進度與失敗原因會顯示在這裡。", "填写具体站点名称;模板类型不会作为站点身份": "填寫具體網站名稱;範本類型不會作為網站身分", "填写凭证": "填寫憑證", "填写凭证添加": "填寫憑證新增", "备注名": "備註名稱", "套餐": "套餐", "如何获取": "如何取得", "如官方页面跳回的是网关本机地址,请在桌面面板完成回调;手机端不会猜测未声明的回调输入。": "如官方頁面跳回閘道本機位址,請於桌面面板完成回呼;手機端不會猜測未宣告的回呼輸入。", "如官方页面跳回的是网关本机地址,请粘贴完整回调;没有授权页的本机方式仍需等待网关确认。": "如官方頁面跳回閘道本機位址,請貼上完整回呼 URL;沒有授權頁面的本機方式仍需等待閘道確認。", "如:公司中转站、个人备用站": "如:公司中轉站、個人備用站", "如:智谱 GLM": "如:智譜 GLM", "安装在运行网关的机器,不是当前手机或浏览器所在设备。由 Agent2API 独立管理,不覆盖原有安装;仅点击按钮后下载。": "安裝於執行閘道的機器,不是目前手機或瀏覽器所在裝置。由 Agent2API 獨立管理,不覆蓋原有安裝;僅點擊按鈕後下載。", "安装已取消,原有版本未更改。": "安裝已取消,原有版本未變更。", "安装操作未得到有效确认,请重新检查状态;不会自动重复安装。": "安裝操作未獲得有效確認,請重新檢查狀態;不會自動重複安裝。", "完成官方登录后粘贴包含 state 的完整 loopback 回调地址。": "完成官方登入後,貼上包含 state 的完整 loopback 回呼位址。", "完成登录后自动加入账号列表,昵称取自上游。": "完成登入後自動加入帳號列表,暱稱取自上游。", "完整 JSON 已包含时无需填写": "完整 JSON 已包含時無需填寫", "完整回调地址(原样提交)": "完整回呼位址(原樣提交)", "官方 PKCE 登录;浏览器登录态有有效期,失效后需重登,不提供维护续期。": "官方 PKCE 登入;瀏覽器登入狀態有有效期限,失效後需重新登入,不提供維護更新。", "官方客户端凭证目录:Windows 是 C:\\Users\\<你的用户名>\\AppData\\Local\\CodeBuddyExtension\\Data\\Public\\auth,macOS 是 ~/Library/Application Support/CodeBuddyExtension/Data/Public/auth": "官方客戶端憑證目錄:Windows 是 C:\\Users\\<你的使用者名稱>\\AppData\\Local\\CodeBuddyExtension\\Data\\Public\\auth,macOS 是 ~/Library/Application Support/CodeBuddyExtension/Data/Public/auth", "官方已确认到账": "官方已確認到賬", "官方浏览器登录": "官方瀏覽器登入", "官方浏览器登录(粘贴完整回调)": "官方瀏覽器登入(貼上完整回呼)", "官方网页正常登录后的 Cookie;风控时请手动更新": "官方網頁正常登入後的 Cookie;風控時請手動更新", "客户端版本": "客戶端版本", "宿主已持久保存的稳定 hostId(urn:uuid,不能每次生成)": "宿主已持久儲存的穩定 hostId(urn:uuid,不能每次產生)", "导入": "匯入", "导入 QuWork 本机登录态": "匯入 QuWork 本機登入狀態", "导入 kiro-cli / Kiro IDE 登录态": "匯入 kiro-cli / Kiro IDE 登入狀態", "导入中…": "匯入中…", "导入凭证文件": "匯入憑證檔案", "导入失败": "匯入失敗", "导入失败:{reason}": "匯入失敗:{reason}", "导入所选": "匯入所選", "导入所选({n})": "匯入所選({n})", "导入桌面端登录态": "匯入桌面版登入態", "导入用户指定的本地 Copilot 凭证": "匯入使用者指定的本機 Copilot 憑證", "将在新标签页中打开授权页;完成后自动加入账号列表。": "將在新標籤頁中開啟授權頁;完成後自動加入帳號列表。", "将在新标签页中打开授权页;完成后自动加入账号列表。若页面跳回本机地址后账号没有出现,按提示把地址栏里的完整回调地址粘贴回来即可。": "將在新標籤頁中開啟授權頁;完成後自動加入帳號列表。若頁面跳回本機地址後帳號沒有出現,按提示把位址列裡的完整回撥地址貼上回來即可。", "将打开内嵌窗口;授权完成后自动加入账号列表。关掉窗口即取消等待。授权页最后可能提示无法打开 zcode:// 链接,这是正常的 —— 结果已由服务端记下": "將開啟內嵌視窗;授權完成後自動加入帳號列表。關掉視窗即取消等待。授權頁最後可能提示無法開啟 zcode:// 連結,這是正常的 —— 結果已由服務端記下", "将打开内嵌窗口;授权完成后自动加入账号列表。远程面板可粘贴回调地址。关掉窗口即取消等待。链接 5 分钟内有效,超时或未点就会作废(可重新发起)": "將開啟內嵌視窗;授權完成後自動加入帳號列表。遠端面板可貼上回撥地址。關掉視窗即取消等待。連結 5 分鐘內有效,超時或未點就會作廢(可重新發起)", "将打开内嵌窗口;登录完成后自动加入账号列表。关掉窗口即取消等待": "將開啟內嵌視窗;登入完成後自動加入帳號列表。關掉視窗即取消等待", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的 Trae 账号);同机完成后自动加入,Docker / 远程面板按提示粘贴地址栏回调地址。": "將用系統預設瀏覽器開啟授權頁(會複用瀏覽器裡已登入的 Trae 帳號);同機完成後自動加入,Docker / 遠端面板按提示貼上位址列回撥地址。", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的 ZCode 账号);授权完成后自动加入账号列表。页面最后可能提示无法打开 zcode:// 链接,属正常现象": "將用系統預設瀏覽器開啟授權頁(會複用瀏覽器裡已登入的 ZCode 帳號);授權完成後自動加入帳號列表。頁面最後可能提示無法開啟 zcode:// 連結,屬正常現象", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的华为云账号);授权码由网关轮询云端取回,与浏览器跑在哪台机器无关,完成后自动加入账号列表": "將用系統預設瀏覽器開啟授權頁(會複用瀏覽器裡已登入的華為雲帳號);授權碼由閘道器輪詢雲端取回,與瀏覽器跑在哪臺機器無關,完成後自動加入帳號列表", "将用系统默认浏览器打开授权页(会复用浏览器里已登录的华为云账号);浏览器与网关不在同一台机器时,按上方说明把最终回调地址粘贴回面板": "將用系統預設瀏覽器開啟授權頁(會複用瀏覽器裡已登入的華為雲帳號);瀏覽器與閘道器不在同一臺機器時,按上方說明把最終回撥地址貼上回面板", "将用系统默认浏览器打开登录页(会复用浏览器里已登录的 Accio 账号);完成登录后自动加入账号列表,关掉弹窗即取消等待": "將用系統預設瀏覽器開啟登入頁(會複用瀏覽器裡已登入的 Accio 帳號);完成登入後自動加入帳號列表,關掉彈窗即取消等待", "将用系统默认浏览器打开登录页(会复用浏览器里已登录的 LobsterAI 账号);完成登录后自动加入账号列表,关掉弹窗即取消等待": "將用系統預設瀏覽器開啟登入頁(會重用瀏覽器裡已登入的 LobsterAI 帳號);完成登入後自動加入帳號清單,關掉彈窗即取消等待", "小米 MiMo Token Plan 套餐(新加坡站)": "小米 MiMo Token Plan 套餐(新加坡站)", "小米 MiMo 按量 API;使用按量 API Key,不要混用 Token Plan 套餐 Key": "小米 MiMo 按量 API;使用按量 API Key,不要混用 Token Plan 套餐 Key", "小米 MiMo(按量)": "小米 MiMo(按量)", "已到账": "已到賬", "已取消登录等待": "已取消登入等待", "已取消领取": "已取消領取", "已取消验证码": "已取消驗證碼", "已填写手机号,正在发送验证码…": "已填寫手機號,正在傳送驗證碼…", "已声明无需鉴权:账号会被正常选路,出网时不带任何鉴权头": "已宣告無需鑑權:帳號會被正常選路,出網時不帶任何鑑權頭", "已完成验证,继续发送": "已完成驗證,繼續傳送", "已导入 {ok} 个,失败 {fail} 个(失败项已标注在列表里)": "已匯入 {ok} 個,失敗 {fail} 個(失敗項已標註在列表裡)", "已建 API": "已建 API", "已建过 · {n} 个账号,点击继续添加": "已建過 · {n} 個帳號,點擊繼續新增", "已建过,点击继续添加账号": "已建過,點擊繼續新增帳號", "已打开官方登录页,请在窗口中完成登录…": "已開啟官方登入頁,請在視窗中完成登入…", "已收到授权回调,正在完成登录…": "已收到授權回呼,正在完成登入…", "已收到浏览器授权,正在获取账号凭据…": "已收到瀏覽器授權,正在取得帳號憑證…", "已有 API Key(留空则在浏览器登录后自动创建)": "現有 API Key(留空則在瀏覽器登入後自動建立)", "已有验证码流程正在进行,请先完成或取消": "已有驗證碼流程正在進行,請先完成或取消", "已检测到本机客户端": "已偵測到本機用戶端", "已点发送,等待短信…": "已點發送,等待簡訊…", "已用系统默认浏览器打开登录页,请在浏览器中完成登录…": "已用系統預設瀏覽器開啟登入頁,請在瀏覽器中完成登入…", "已读取 QuWork 本机登录态,正在添加账号。": "已讀取 QuWork 本機登入狀態,正在新增帳號。", "已领取,等官方确认": "已領取,等官方確認", "引用本机 Gemini CLI oauth_creds.json(只读)": "參照本機 Gemini CLI oauth_creds.json(唯讀)", "当前分类里没有「{keyword}」,其它分类有 {n} 个匹配": "目前分類裡沒有「{keyword}」,其他分類有 {n} 個符合", "当前壳版本不支持 AutoClaw 网页登录,请更新应用": "當前殼版本不支援 AutoClaw 網頁登入,請更新應用", "当前没有可领取的套餐(活动尚未开始)": "當前沒有可領取的套餐(活動尚未開始)", "当前版本:{version}": "目前版本:{version}", "当前环境不支持领取(桥接方法缺失)": "當前環境不支援領取(橋接方法缺失)", "必填,CatPaw 账号标识": "必填,CatPaw 帳號標識", "恢复 Google / GitHub 入口": "恢復 Google / GitHub 入口", "所选代理会保存到账号设置,后续请求继续使用。": "所選代理會儲存至帳號設定,後續請求繼續使用。", "手动代理": "手動代理", "手动导入 GitHub OAuth / GitHub 令牌": "手動提供 GitHub OAuth / GitHub 權杖", "手机号": "手機號", "手机验证码登录": "手機驗證碼登入", "打开 LobsterAI(有道龙虾)的官方登录页(lobsterai.youdao.com)并用你的 LobsterAI 账号登录:登录成功后官方页面会跳回本机并自动加入账号列表 —— 回调落在网关自己的端口上,所以浏览器要与网关在同一台机器上;授权码只在本机传给网关,界面不显示明文 token。": "開啟 LobsterAI(有道龍蝦)的官方登入頁(lobsterai.youdao.com)並用你的 LobsterAI 帳號登入:登入成功後官方頁面會跳回本機並自動加入帳號清單 —— 回呼落在閘道自己的連接埠上,所以瀏覽器要與閘道在同一台機器上;授權碼只在本機傳給閘道,介面不顯示明文權杖。", "打开 Trae 的官方授权页(trae.cn)并用你的 Trae 账号登录:授权完成后官方页面会跳回本机的一个临时端口;同机部署自动接收,Docker / 远程面板请按提示复制地址栏回调地址。": "開啟 Trae 的官方授權頁(trae.cn)並用你的 Trae 帳號登入:授權完成後官方頁面會跳回本機的一個臨時連接埠;同機部署自動接收,Docker / 遠端面板請按提示複製網址列中的回呼網址。", "打开 Accio {label}的官方登录页({site})并用你的 Accio 账号登录:登录成功后官方页面会跳回本机;同机自动完成,Docker / 远程面板按提示粘贴回调地址即可(授权码只在本机传给网关,界面不显示明文 token)。": "開啟 Accio {label}的官方登入頁({site})並用你的 Accio 帳號登入:登入成功後官方頁面會跳回本機;同機自動完成,Docker / 遠端面板按提示貼上回撥地址即可(授權碼只在本機傳給閘道器,介面不顯示明文 token)。", "打开 Accio {label}登录页": "開啟 Accio {label}登入頁", "打开 Antigravity 网页登录": "開啟 Antigravity 網頁登入", "打开 AtomGit 授权页登录:登录完成后网关会自动轮询代理取回令牌并加入账号列表(授权回调由代理终结,不回到本机,因此无需手工回填回调地址)。": "開啟 AtomGit 授權頁登入:完成後閘道會自動輪詢代理取回權杖並加入帳號清單(授權回呼由代理終結,不會回到本機,因此無需手動回填回呼位址)。", "打开 CatPaw 网页登录": "開啟 CatPaw 網頁登入", "打开 Cline 授权页": "開啟 Cline 授權頁", "打开 CodeArts 授权页": "開啟 CodeArts 授權頁", "打开 LobsterAI 登录页": "開啟 LobsterAI 登入頁", "打开 Qoder 网页登录": "開啟 Qoder 網頁登入", "打开 Trae 授权页": "開啟 Trae 授權頁", "打开 ZCode {label}的官方授权页并用你的账号登录。授权结果由 ZCode 服务端记录,网关在后台自动取回凭证并加入账号列表。": "開啟 ZCode {label}的官方授權頁並用你的帳號登入。授權結果由 ZCode 服務端記錄,閘道器在後臺自動取回憑證並加入帳號列表。", "打开 ZCode {label}授权页": "開啟 ZCode {label}授權頁", "打开下一步授权页": "開啟下一步授權頁", "打开人机验证": "開啟人機驗證", "打开千问办公网页登录": "開啟千問辦公網頁登入", "打开华为云 CodeArts 的官方授权页登录:登录完成后官方页面会把浏览器带回网关自己的 /oauth/callback,网关用一次性授权码换取临时凭据并加入账号列表。
    网关跑在另一台机器上时,网页端会提示把地址栏中的最终回调地址直接粘贴回面板。": "開啟華為雲 CodeArts 的官方授權頁登入:登入完成後官方頁面會把瀏覽器帶回閘道器自己的 /oauth/callback,閘道器用一次性授權碼換取臨時憑據並加入帳號列表。
    閘道器跑在另一臺機器上時,網頁端會提示把位址列中的最終回撥地址直接貼上回面板。", "打开华为云授权页登录:登录完成后网关会自动轮询云端取回授权码并加入账号列表(不需要装 OfficeAce 桌面端,也无需手工回填回调地址)。": "開啟華為雲授權頁登入:登入完成後閘道器會自動輪詢雲端取回授權碼並加入帳號列表(不需要裝 OfficeAce 桌面版,也無需手工回填回撥地址)。", "打开官方授权页": "開啟官方授權頁面", "打开官方授权页完成设备码授权,登录的是{label}({site})的账号。": "開啟官方授權頁完成裝置碼授權,登入的是{label}({site})的帳號。", "打开授权页": "開啟授權頁", "打开授权页完成确认,账号自动加入 {label}{note}": "開啟授權頁完成確認,帳號自動加入 {label}{note}", "打开方式": "開啟方式", "打开网页登录": "開啟網頁登入", "按已验证邮箱只读引用 cursor-agent 当前登录态;每次操作重读 keychain/auth.json,不复制 token、不主动运行 CLI 续期,退出或失效后需在原客户端重登。": "依已驗證信箱唯讀參照 cursor-agent 目前登入狀態;每次操作重新讀取 keychain/auth.json,不複製 token、不主動執行 CLI 更新,登出或失效後需在原用戶端重新登入。", "授权只读引用,不复制、不修改、不续期本机凭证": "授權唯讀參照,不複製、不修改、不更新本機憑證", "授权回调提交失败;请检查输入并重试,登录仍在等待。": "授權回呼提交失敗;請檢查輸入並重試,登入仍在等待。", "授权每次请求只读所选文件,固定当前账号与工作区?": "授權每次請求唯讀存取所選檔案,固定目前帳號與工作區?", "授权码或令牌(原样提交)": "授權碼或權杖(原樣提交)", "授权读取所选条目": "授權讀取所選項目", "授权页、换证与取账号信息都走这条线路。无头服务器上没有系统代理,这里不选就走直连(多数网络里到不了 Google)。": "授權頁、換證與取得帳號資訊都走這條線路。無頭伺服器上沒有系統代理,這裡不選就走直連(多數網路裡到不了 Google)。", "探测失败:{message}": "探測失敗:{message}", "接入一个兼容上游": "接入一個相容上游", "控制台 uaa-token(粘贴令牌值或完整的 uaa-token=… Cookie 项)": "控制台 uaa-token(貼上權杖值或完整的 uaa-token=… Cookie 項目)", "推荐": "推薦", "提交中…": "提交中…", "提交授权回调": "提交授權回呼", "提供商仅在已启用且加载后出现。登录与本机引用均作用在所连接网关,不是手机。": "提供商僅在啟用並載入後顯示。登入與本機參照均作用於所連線的閘道,而非手機。", "插件专用 Chrome 登录(自动读取凭据)": "插件專用 Chrome 登入(自動讀取憑證)", "插件会在网关电脑上启动独立浏览器并读取登录结果,不使用系统默认浏览器。": "外掛會在閘道電腦上啟動獨立瀏覽器並讀取登入結果,不使用系統預設瀏覽器。", "搜索提供商": "搜尋提供商", "搜索提供商…": "搜尋提供商…", "整份粘贴官方插件 / CLIProxyAPI 落盘的凭据 JSON(形如 {\"codearts_provider_credential\":{…}},铺平的也行)。
    必填:access_key_id、secret_access_key、security_token。要能自动续期,必须连 refresh_token 与 oauth_context 一起粘 —— 临时凭据约一小时到期,缺这半块就续不回来,只能重新登录。": "整份貼上官方外掛 / CLIProxyAPI 落盤的憑據 JSON(形如 {\"codearts_provider_credential\":{…}},鋪平的也行)。
    必填:access_key_id、secret_access_key、security_token。要能自動續期,必須連 refresh_token 與 oauth_context 一起粘 —— 臨時憑據約一小時到期,缺這半塊就續不回來,只能重新登入。", "文件是{edition}凭证,已按该版本导入": "檔案是{edition}憑證,已按該版本匯入", "新增独立登录": "新增獨立登入", "新建自定义提供商": "新建自定義提供商", "新网关确认代理同次保存后不再重复提交;旧网关使用兼容保存并提示核查,失败不会撤销已添加的账号。": "新閘道確認代理已同次儲存後不再重複提交;舊閘道使用相容儲存並提示核查,失敗不會撤銷已新增的帳號。", "方案:{label}": "方案:{label}", "无需手动复制令牌,验证码在官方页面完成。": "無需手動複製權杖,驗證碼在官方頁面完成。", "旧网关未确认代理同次保存,已使用兼容接口保存;请在账号设置中确认代理选择。": "舊閘道未確認代理同次儲存,已使用相容介面儲存;請於帳號設定中確認代理選擇。", "明文 JWT 或 auth.json 里的 enc: 加密值(自动解密)": "明文 JWT 或 auth.json 裡的 enc: 加密值(自動解密)", "明文 JWT(国际版账号的 access token)": "明文 JWT(國際版帳號的 access token)", "明确选择文件与只读授权;不修改或续期原客户端登录态。": "明確選擇檔案與唯讀授權;不修改或更新原用戶端登入狀態。", "明确选择文件内的账号条目键名": "明確選擇檔案內的帳號項目鍵名", "明确选择标准凭证文件的完整绝对路径": "明確選擇標準憑證檔案的完整絕對路徑", "是否授权只读取此文件和所选账号凭证?": "是否授權唯讀存取此檔案與所選帳號憑證?", "显示凭证": "顯示憑證", "智谱 bigmodel.cn 的 Coding 套餐,Key 在 open.bigmodel.cn/usercenter/apikeys": "智譜 bigmodel.cn 的 Coding 套餐,Key 在 open.bigmodel.cn/usercenter/apikeys", "暂不支持自动安装": "暫不支援自動安裝", "暂时无法检查官方最新版;已安装且满足最低要求的客户端仍可使用。": "暫時無法檢查官方最新版;已安裝且符合最低要求的用戶端仍可使用。", "暂时无法登录": "暫時無法登入", "有可用更新": "有可用更新", "未开启客户端调试端口时,请使用网页登录或粘贴 Cookie。": "未開啟用戶端偵錯連接埠時,請使用網頁登入或貼上 Cookie。", "未知错误": "未知錯誤", "未能获取授权地址,请重试": "未能獲取授權地址,請重試", "未能读取 cc-switch 数据": "未能讀取 cc-switch 資料", "未领取成功": "未領取成功", "本体订阅未返回动态登录方式(501);不会猜测导入接口或显示插件手动凭证入口。请更新网关后重试。": "本體訂閱未回傳動態登入方式(501);不會猜測匯入介面或顯示外掛手動憑證入口。請更新閘道後重試。", "本地 Ollama、OpenCode Zen 免费档这类上游要勾上,否则账号不可用": "本地 Ollama、OpenCode Zen 免費檔這類上游要勾上,否則帳號不可用", "本家有两个**互不替代**的凭证,按你要用的功能填,至少填一个:编码套餐 API Key 用于转发推理(打 {site})与查询窗口限额(每 N 小时 / 每周的剩余比例);jwt 用于领取套餐与查询余额(打 zcode.z.ai 的 billing 网关,官方叫 Coding Plan JWT,是一串三段点分的字符串)。余额两把都能查、但读到的东西不同:jwt 读到余额桶与套餐到期,API Key 读到窗口限额;而领取只认 jwt、转发只认 API Key。请填写 {label}账号的凭证 —— {plan}(最容易拿到的办法:直接用上方的「网页登录」—— 它会替你把这个 API Key 换好,两个凭证一起拿到。)": "本家有兩個**互不替代**的憑證,按你要用的功能填,至少填一個:編碼套餐 API Key 用於轉發推理(打 {site})與查詢視窗限額(每 N 小時 / 每週的剩餘比例);jwt 用於領取套餐與查詢餘額(打 zcode.z.ai 的 billing 閘道器,官方叫 Coding Plan JWT,是一串三段點分的字串)。餘額兩把都能查、但讀到的東西不同:jwt 讀到餘額桶與套餐到期,API Key 讀到視窗限額;而領取只認 jwt、轉發只認 API Key。請填寫 {label}帳號的憑證 —— {plan}(最容易拿到的辦法:直接用上方的「網頁登入」—— 它會替你把這個 API Key 換好,兩個憑證一起拿到。)", "本机 Ollama 的 OpenAI 兼容端点,无需 API Key(默认已勾上「该上游无需鉴权」,鉴权头一个都不发)": "本機 Ollama 的 OpenAI 相容端點,無需 API Key(預設已勾上「該上游無需鑑權」,鑑權頭一個都不發)", "本机 auth.json(只读引用)": "本機 auth.json(唯讀參照)", "本机凭证已校验。宿主仅保存文件引用与稳定身份,每次请求重新读取。": "本機憑證已驗證。宿主僅儲存檔案參照與穩定身分,每次請求重新讀取。", "本机部署会自动完成登录;服务器或 Docker 部署时,若授权后跳到无法访问的 localhost 或 127.0.0.1 页面,请把地址栏中的完整回调地址粘贴回来。AWS 登录如需继续授权,请打开下一步授权页,完成后再次回填。请勿修改地址或把回调链接发给他人。": "本機部署會自動完成登入;伺服器或 Docker 部署時,若授權後跳到無法存取的 localhost 或 127.0.0.1 頁面,請貼上網址列中的完整回呼位址。AWS 登入若需繼續授權,請開啟下一步授權頁,完成後再次回填。請勿修改位址或將回呼連結傳給他人。", "本次未确认到账": "本次未確認到賬", "条可导入": "條可匯入", "条配置,其中": "條配置,其中", "桌面运行时不可用(Tauri 未初始化)": "桌面執行環境無法使用(Tauri 未初始化)", "检测失败": "偵測失敗", "模型网关基址": "模型閘道器基址", "正在准备 AWS 授权…": "正在準備 AWS 授權…", "正在准备安装…": "正在準備安裝…", "正在取消安装…": "正在取消安裝…", "正在启用新版本…": "正在啟用新版本…", "正在打开百度登录页…": "正在開啟百度登入頁…", "正在扫描本机 cc-switch…": "正在掃描本機 cc-switch…", "正在换发访客凭证…": "正在換髮訪客憑證…", "正在校验官方安装包…": "正在驗證官方安裝套件…", "正在检查安装状态…": "正在檢查安裝狀態…", "正在检查客户端版本…": "正在檢查用戶端版本…", "正在添加…": "正在新增…", "正在等待{name}登录完成;完成或取消后才能发起新的登录": "正在等待{name}登入完成;完成或取消後才能發起新的登入", "此 Copilot 手动令牌方式未声明回调输入契约,暂不发起;请改用设备码登录或只读本机引用。": "此 Copilot 手動權杖方式未宣告回呼輸入契約,暫不發起;請改用裝置碼登入或本機唯讀參照。", "此提供商已有登录任务,请先完成或取消。": "此提供商已有登入工作,請先完成或取消。", "此提供商未声明动态登录方式,请在网关桌面面板使用其既有入口;手机端不会猜测凭证字段。": "此提供商未宣告動態登入方式,請於閘道桌面面板使用既有入口;手機端不會猜測憑證欄位。", "此方式需要原样提交授权码或令牌;输入会隐藏,不会当作 URL 或 API 凭证解析。提交后仍需等待网关确认。": "此方式需要原樣提交授權碼或權杖;輸入會隱藏,不會按 URL 或 API 憑證解析。提交後仍需等待閘道確認。", "此方式需要完整回调地址;请原样粘贴,不拆分参数或重建地址。提交后仍需等待网关确认。": "此方式需要完整回呼位址;請原樣貼上,不拆分參數或重建位址。提交後仍需等待閘道確認。", "每个账号使用独立的官方登录目录。终端登录沿用该终端的网络环境;这里选择的代理用于添加后的模型请求。": "每個帳號使用獨立的官方登入目錄。終端機登入沿用該終端機的網路環境;此處選擇的代理用於新增後的模型請求。", "每周": "每週", "每日": "每日", "每月": "每月", "没有则无法自动续期": "沒有則無法自動續期", "没有匹配「{keyword}」的提供商": "沒有匹配「{keyword}」的提供商", "浏览器拦截了弹窗": "瀏覽器攔截了彈窗", "浏览器授权已收到,但网关直连 DeepAI 失败。请在登录代理中填入系统代理或选择可用代理后重新登录。": "瀏覽器授權已收到,但閘道直連 DeepAI 失敗。請在登入代理中填入系統代理或選擇可用代理後重新登入。", "浏览器授权已收到,但通过所选代理获取账号凭据失败。请检查该代理后重新登录。": "瀏覽器授權已收到,但透過所選代理取得帳號憑證失敗。請檢查該代理後重新登入。", "浏览器显示登录完成后,网关还需联网获取账号凭据。若浏览器或 Magpie 使用系统代理,请先在下方点击「填入系统代理」;选择直连不会跟随系统代理。": "瀏覽器顯示登入完成後,閘道仍需連網取得帳號憑證。若瀏覽器或 Magpie 使用系統代理,請先在下方點選「填入系統代理」;選擇直連不會跟隨系統代理。", "浏览器登录(墨点额度 + 自动创建 API Key)": "瀏覽器登入(墨點額度 + 自動建立 API Key)", "浏览器登录(复用已有 API Key)": "瀏覽器登入(重用現有 API Key)", "浏览器面板无法读取其他站点的登录态,请使用本人网页账号的令牌。": "瀏覽器面板無法讀取其他網站的登入狀態,請使用本人網頁帳號的權杖。", "浏览器面板无法读取其它站点的 Cookie,请登录 www.doubao.com 后,使用「填写凭证」粘贴完整 Cookie。": "瀏覽器面板無法讀取其他網站的 Cookie,請登入 www.doubao.com 後,使用「填寫憑證」貼上完整 Cookie。", "添加 DeepSeek 账号": "新增 DeepSeek 帳號", "添加 {name} 账号": "新增 {name} 帳號", "添加中…": "新增中…", "添加到 ": "新增到 ", "添加到此提供商": "新增到此提供商", "添加失败:{reason}": "新增失敗:{reason}", "添加小浣熊账号": "新增小浣熊帳號", "添加方式": "新增方式", "添加时要用它出网校验凭证(例如 Antigravity 要打一次 Google 的 token 端点)。无头服务器上没有系统代理,这里不选就走直连。": "新增時要用它出網校驗憑證(例如 Antigravity 要打一次 Google 的 token 端點)。無頭伺服器上沒有系統代理,這裡不選就走直連。", "添加访客账号": "新增訪客帳號", "添加账号": "新增帳號", "火山引擎 Coding 套餐;通用推理接入点为 https://ark.cn-beijing.volces.com/api/v3": "火山引擎 Coding 套餐;通用推理接入點為 https://ark.cn-beijing.volces.com/api/v3", "点击添加账号": "點擊新增帳號", "点击登录后,在 Google 页面授权,再原样粘贴授权码或完整页面地址;已登录的 agy 会直接连接。Google 凭证由官方客户端保管,Agent2API 只保存本机连接标记。同一网关仅使用 agy 当前登录的一个账号,不支持复制为多个独立账号。": "點擊登入後,在 Google 頁面授權,再原樣貼上授權碼或完整頁面位址;已登入的 agy 會直接連線。Google 憑證由官方用戶端保管,Agent2API 只儲存本機連線標記。同一網關僅使用 agy 目前登入的一個帳號,不支援複製為多個獨立帳號。", "点开即预填,填 Key 接入": "點開即預填,填 Key 接入", "点按钮后先过一次滑块验证(官方风控),随后打开登录页,登录完成即自动添加账号。
    这是国际版官方唯一的登录方式;已在客户端登录过的,用「导入桌面端登录态」更快。": "點按鈕後先過一次滑塊驗證(官方風控),隨後開啟登入頁,登入完成即自動新增帳號。
    這是國際版官方唯一的登入方式;已在客戶端登入過的,用「匯入桌面版登入態」更快。", "独立 Kiro OAuth 支持续期;保留原登录验证,不接受任意 bearer token。": "獨立 Kiro OAuth 支援更新;保留原登入驗證,不接受任意 bearer token。", "用 AutoClaw 账号绑定的手机号登录:点击「获取验证码」,收到短信后填入下方并登录。验证码由本机直接提交给官方接口,界面不显示 token。": "用 AutoClaw 帳號繫結的手機號登入:點擊「獲取驗證碼」,收到簡訊後填入下方並登入。驗證碼由本機直接提交給官方介面,介面不顯示 token。", "用 CatPaw 账号完成登录(美团 passport),成功后自动加入账号列表。": "用 CatPaw 帳號完成登入(美團 passport),成功後自動加入帳號列表。", "用 Loomy 账号绑定的手机号登录:点「获取验证码」后填入即可。这是本家最省事的入口。": "用 Loomy 帳號繫結的手機號登入:點「獲取驗證碼」後填入即可。這是本家最省事的入口。", "用于转发;形如 apiKey.secret 两段点分(不填则这个账号不能转发)": "用於轉發;形如 apiKey.secret 兩段點分(不填則這個帳號不能轉發)", "用于领取套餐与查询余额;不填则这个账号不能领取与查余额": "用於領取套餐與查詢餘額;不填則這個帳號不能領取與查餘額", "用户 ID": "使用者 ID", "用绑定的手机号登录:点「获取验证码」后填入即可。这是国内版官方唯一的登录方式。": "用繫結的手機號登入:點「獲取驗證碼」後填入即可。這是國內版官方唯一的登入方式。", "用绑定的手机号登录:点「获取验证码」,收到短信后填入下方并点「登录并添加」。这是国内站官方唯一的登录方式。": "用綁定的手機號登錄:點「獲取驗證碼」,收到短信後填入下方並點「登錄並添加」。這是國內站官方唯一的登錄方式。", "由插件打开浏览器登录": "由外掛開啟瀏覽器登入", "由本机 Grok Build CLI 执行官方设备授权;仅保存 home/scope/account 引用,不镜像 token,后续操作只读,不提供维护续期。": "由本機 Grok Build CLI 執行官方裝置授權;僅儲存 home/scope/account 參照,不複製 token,後續操作為唯讀,不提供維護更新。", "留空使用 1.17.16(10117016)": "留空使用 1.17.16(10117016)", "留空使用该提供商默认值": "留空則使用該提供商預設值", "留空使用账号默认名称": "留空使用帳號預設名稱", "留空使用默认的 User-Agent;可从预置里选一个内置客户端,也可以直接填写。": "留空則使用預設的 User-Agent;可從預設中選一個內建客戶端,也可以直接填寫。", "留空则用提供商名称": "留空則用提供商名稱", "留空自动查找;也可填写网关本机 agy 可执行文件的绝对路径": "留空自動尋找;也可填寫閘道本機 agy 執行檔的絕對路徑", "登录 / 添加 {name} 账号": "登入 / 新增 {name} 帳號", "登录 JWT": "登錄 JWT", "登录 chat.deepseek.com 后,打开开发者工具 → Application → Local Storage,复制 userToken 的 value。": "登入 chat.deepseek.com 後,開啟開發者工具 → Application → Local Storage,複製 userToken 的 value。", "登录 session(一长串)": "登入 session(一長串)", "登录中…": "登入中…", "登录代理不支持轮询出网,请选择一条已保存的代理": "登入代理不支援輪詢出口,請選擇一條已儲存的代理", "登录凭证 accessToken": "登入憑證 accessToken", "登录出网代理": "登入對外連線代理", "登录取消未确认,请刷新状态后重试。": "登入取消未確認,請重新整理狀態後重試。", "登录失败:{message}": "登入失敗:{message}", "登录尚未完成,请继续通过共享登录桥等待结果": "登入尚未完成,請繼續透過共用登入橋接等待結果", "登录已结束": "登入已結束", "登录并添加": "登入並新增", "登录态文件路径:~/.box-agent/config/auth.json(Windows:C:\\Users\\<你的用户名>\\.box-agent\\config\\auth.json)": "登入態檔案路徑:~/.box-agent/config/auth.json(Windows:C:\\Users\\<你的使用者名稱>\\.box-agent\\config\\auth.json)", "登录授权地址无效,已取消本次等待。": "登入授權位址無效,已取消本次等待。", "登录桥未返回已完成的账号或会话,请重试": "登入橋接未回傳已完成的帳號或工作階段,請重試", "登录桥返回了空会话,无法确认账号已添加": "登入橋接回傳了空工作階段,無法確認帳號已新增", "相同协议和地址的提供商已经存在。可以继续新建独立提供商,或明确选择已有提供商添加账号。": "相同協定和位址的提供商已經存在。可以繼續建立獨立提供商,或明確選擇已有提供商新增帳號。", "看全部匹配": "看全部符合", "确定删除自定义提供商「{name}」?将同时删除该提供商下 {count} 个账号,删除后无法恢复。": "確定刪除自定義提供商「{name}」?將同時刪除該提供商下 {count} 個帳號,刪除後無法恢復。", "站点名称": "網站名稱", "端砚由插件在网关电脑上启动独立的 Edge、Chrome 或 Chromium 窗口,不使用系统默认浏览器或应用内嵌窗口。": "端硯由插件在閘道電腦上啟動獨立的 Edge、Chrome 或 Chromium 視窗,不使用系統預設瀏覽器或應用程式內嵌視窗。", "等待 Accio {label}登录完成…": "等待 Accio {label}登入完成…", "等待 AtomCode 登录完成…": "等待 AtomCode 登入完成…", "等待 CatPaw 登录完成…": "等待 CatPaw 登入完成…", "等待 Cline 授权确认…": "等待 Cline 授權確認…", "等待 CodeArts 登录完成…": "等待 CodeArts 登入完成…", "等待 Google 授权完成…": "等待 Google 授權完成…", "等待 KukuAI 登录完成…": "等待 KukuAI 登入完成…", "等待 LobsterAI 登录完成…": "等待 LobsterAI 登入完成…", "等待 MonkeyCode 登录完成…": "等待 MonkeyCode 登入完成…", "等待 OfficeAce 登录完成…": "等待 OfficeAce 登入完成…", "等待 OrcaTerm 登录完成…": "等待 OrcaTerm 登入完成…", "等待 Qoder 授权完成…": "等待 Qoder 授權完成…", "等待 Trae 授权完成…": "等待 Trae 授權完成…", "等待 ZCode {label}授权完成…": "等待 ZCode {label}授權完成…", "等待你在官方页面完成登录,成功后自动添加账号。": "等待你在官方頁面完成登入,成功後自動新增帳號。", "等待千问办公登录完成…": "等待千問辦公登入完成…", "等待小浣熊登录完成…": "等待小浣熊登入完成…", "等待插件完成登录": "等待插件完成登入", "等待浏览器完成登录": "等待瀏覽器完成登入", "等待浏览器授权;若本机回调页面无法打开,请复制地址栏中的完整地址回填。": "等待瀏覽器授權;若本機回呼頁面無法開啟,請複製網址列中的完整位址回填。", "等待登录完成…": "等待登入完成…", "等待网页登录…": "等待網頁登入…", "等待豆包工作登录完成…": "等待豆包工作登入完成…", "粘贴 API Key": "貼上 API Key", "粘贴 API 令牌": "貼上 API 權杖", "粘贴 Accio 的 accessToken": "貼上 Accio 的 accessToken", "粘贴 Antigravity 的 Google refresh token(以 1// 开头;直接粘贴含 refresh_token= 的整行也行)。
    这是网页登录之外的手工入口(例如从已登录的官方 IDE 里导出)。refresh token 不会过期,access token 到期由网关自动续期;令牌丢了只能重新走 Google 授权,请妥善保存。": "貼上 Antigravity 的 Google refresh token(以 1// 開頭;直接貼上含 refresh_token= 的整行也行)。
    這是網頁登入之外的手工入口(例如從已登入的官方 IDE 裡匯出)。refresh token 不會過期,access token 到期由閘道器自動續期;權杖丟了只能重新走 Google 授權,請妥善儲存。", "粘贴 Command Code 的 API Key(user_ 开头;从官方 CLI 的 ~/.commandcode/auth.json 或网页 studio 获取)。整行 / 带引号 / 带 Bearer 前缀地粘都行,网关会自己剥成裸 key。key 不过期、也没有续期接口,失效后重新获取即可;添加时网关会做一次轻量探活,失败不影响添加。": "貼上 Command Code 的 API Key(user_ 開頭;從官方 CLI 的 ~/.commandcode/auth.json 或網頁 studio 獲取)。整行 / 帶引號 / 帶 Bearer 字首地粘都行,閘道器會自己剝成裸 key。key 不過期、也沒有續期介面,失效後重新獲取即可;新增時閘道器會做一次輕量探活,失敗不影響新增。", "粘贴 Cookie": "貼上 Cookie", "粘贴 Google refresh token": "貼上 Google refresh token", "粘贴 ModelScope 的 API 令牌(ms- 开头,在 {site} 的「访问令牌」页获取)。
    {siteNote}
    这枚令牌两用:网关既用它调推理,也用它读账号身份、魔粒余额与每日签到。令牌长期有效、没有续期接口,失效后重新获取再粘一次即可。": "貼上 ModelScope 的 API 權杖(ms- 開頭,在 {site} 的「存取權杖」頁獲取)。
    {siteNote}
    這枚權杖兩用:閘道器既用它調推理,也用它讀帳號身份、魔粒餘額與每日簽到。權杖長期有效、沒有續期介面,失效後重新獲取再粘一次即可。", "粘贴 OrcaTerm 的 OAuth accessToken(JWT,三段点分;从桌面客户端 data.bin 或 Web 版 Cookie ot_session 获取)。直接粘贴含 Bearer / ot_session= 的整行也行,网关会自己剥成裸 token。添加后由网关自动续期(上游有续期接口),无需跟随 2 小时时效手动更换。": "貼上 OrcaTerm 的 OAuth accessToken(JWT,三段點分;從桌面客戶端 data.bin 或 Web 版 Cookie ot_session 獲取)。直接貼上含 Bearer / ot_session= 的整行也行,閘道器會自己剝成裸 token。新增後由閘道器自動續期(上游有續期介面),無需跟隨 2 小時時效手動更換。", "粘贴 Qoder 个人访问令牌(pt-…)": "貼上 Qoder 個人存取權杖(pt-…)", "粘贴 accessToken": "貼上 accessToken", "粘贴 access_token(一长串 JWT)": "貼上 access_token(一長串 JWT)", "粘贴 session cookie": "貼上 session cookie", "粘贴 token / refreshToken": "貼上 token / refreshToken", "粘贴 userToken.value": "貼上 userToken.value", "粘贴 workos:… 开头的令牌(不带前缀也会自动补上)": "貼上 workos:… 開頭的權杖(不帶字首也會自動補上)", "粘贴 www.doubao.com 的完整 Cookie(必须含 sessionid),也支持 Cookie JSON 数组或对象。复用豆包工作账号的额度;Cookie 失效后需重新登录,没有自动续期。": "貼上 www.doubao.com 的完整 Cookie(必須含 sessionid),也支援 Cookie JSON 陣列或物件。使用豆包工作帳號的額度;Cookie 失效後需重新登入,沒有自動續期。", "粘贴令牌": "貼上權杖", "粘贴令牌对": "貼上權杖對", "粘贴你本人已授权的 GitHub OAuth 令牌(不是设备码或 Copilot 短令牌)。令牌仍需由 GitHub 验证并交换;CLI 专用令牌可能不支持编辑器令牌交换。": "貼上你本人已授權的 GitHub OAuth 權杖(不是裝置碼或 Copilot 短期權杖)。權杖仍須由 GitHub 驗證並交換;CLI 專用權杖可能不支援編輯器權杖交換。", "粘贴完整登录凭证 JSON,或只填模型凭证 llmToken。仅模型凭证可对话;积分、续期和奖励需要登录凭证 accessToken。": "貼上完整登入憑證 JSON,或僅填模型憑證 llmToken。僅模型憑證可對話;積分、續期和獎勵需要登入憑證 accessToken。", "粘贴智谱清言的访问令牌(JWT,三段点分)。获取方式:浏览器打开 chatglm.cn 并登录后,在开发者工具的 Application → Cookies 里复制 chatglm_token 的值(也可以直接粘 chatglm_token=…; 整行)。粘贴后会先向上游校验一次,校验通过才落账号;登录账号的积分、签到能力都能用,之后由网关自动续期(上游有续期接口)。": "貼上智譜清言的存取權杖(JWT,三段點分)。獲取方式:瀏覽器開啟 chatglm.cn 並登入後,在開發者工具的 Application → Cookies 裡複製 chatglm_token 的值(也可以直接粘 chatglm_token=…; 整行)。粘貼後會先向上游校驗一次,校驗通過才落帳號;登入帳號的積分、簽到能力都能用,之後由閘道器自動續期(上游有續期介面)。", "粘贴登录凭据": "貼上登入憑據", "粘贴的是登录 session(同时是模型网关的 token)。Loomy 没有续期接口,session 有效期约 14 天,过期后重新登录即可。": "貼上的是登入 session(同時是模型閘道器的 token)。Loomy 沒有續期介面,session 有效期約 14 天,過期後重新登入即可。", "粘贴网关凭据": "貼上閘道器憑據", "粘贴网页登录凭证": "粘貼網頁登錄憑證", "粘贴网页登录态 cookie monkeycode_ai_session 的值(在浏览器里复制整段 Cookie 直接粘贴也行,网关会自己剥出值)。
    {siteNote}
    MonkeyCode 没有续期接口:session 有效期约 30 天(硬限制),过期后重新登录网页、再粘贴一次即可。": "貼上網頁登入態 cookie monkeycode_ai_session 的值(在瀏覽器裡複製整段 Cookie 直接貼上也行,閘道器會自己剝出值)。
    {siteNote}
    MonkeyCode 沒有續期介面:session 有效期約 30 天(硬限制),過期後重新登入網頁、再貼上一次即可。", "粘贴网页访问令牌": "貼上網頁存取權杖", "粘贴访问令牌": "貼上存取權杖", "系统浏览器": "系統瀏覽器", "系统浏览器可复用已有登录态(国际版推荐);内嵌窗口更干净。": "系統瀏覽器可複用已有登入態(國際版推薦);內嵌視窗更乾淨。", "系统浏览器打开(复用已登录的 Cline 账号);完成后自动加入列表": "系統瀏覽器開啟(複用已登入的 Cline 帳號);完成後自動加入列表", "系统浏览器打开(复用已登录的 Google 账号);完成后自动加入列表": "系統瀏覽器開啟(複用已登入的 Google 帳號);完成後自動加入列表", "系统浏览器打开(复用已登录的 Zai / Google 账号);完成后自动加入列表": "系統瀏覽器開啟(複用已登入的 Zai / Google 帳號);完成後自動加入列表", "系统浏览器打开(复用已登录的美团账号);完成后自动加入列表": "系統瀏覽器開啟(複用已登入的美團帳號);完成後自動加入列表", "系统浏览器打开(复用已登录账号);完成后自动加入列表": "系統瀏覽器開啟(複用已登入帳號);完成後自動加入列表", "系统默认浏览器": "系統預設瀏覽器", "组织登录地址(Start URL)": "組織登入位址(Start URL)", "继续新建独立提供商": "繼續建立獨立提供商", "续期令牌": "續期權杖", "编码套餐 API Key": "編碼套餐 API Key", "网关 Secret": "閘道器 Secret", "网关未返回有效的手动回调输入契约;请更新网关后重新发起。": "閘道未回傳有效的手動回呼輸入契約;請更新閘道後重新發起。", "网页 Cookie": "網頁 Cookie", "网页登录": "網頁登入", "网页登录 / 填写凭证": "網頁登入 / 填寫憑證", "网页登录的打开方式": "網頁登入的開啟方式", "网页登录(Zai / Google)": "網頁登入(Zai / Google)", "网页访问令牌": "網頁存取權杖", "腾讯 TokenHub 国内版(按量)": "騰訊 TokenHub 國內版(按量)", "腾讯 TokenHub 国内站按量 API;使用 TokenHub API Key,不是 Token Plan 套餐或 WorkBuddy 凭证": "騰訊 TokenHub 國內站按量 API;使用 TokenHub API Key,不是 Token Plan 套餐或 WorkBuddy 憑證", "腾讯 TokenHub 国际版(按量)": "騰訊 TokenHub 國際版(按量)", "腾讯 TokenHub 国际站按量 API;使用 TokenHub API Key,不是 Token Plan 套餐或 WorkBuddy 凭证": "騰訊 TokenHub 國際站按量 API;使用 TokenHub API Key,不是 Token Plan 套餐或 WorkBuddy 憑證", "自定义": "自定義", "自建聚合面板:填你自己的站点地址。余额查询用该账号的 API Key 打 {base}/v1/usage,不需要额外配置": "自建聚合面板:填你自己的站點地址。餘額查詢用該帳號的 API Key 打 {base}/v1/usage,不需要額外配置", "自建聚合面板:填你自己的站点地址;余额查询要另填 NewAPI 的个人访问令牌(见下方「余额查询」一段)": "自建聚合面板:填你自己的站點地址;餘額查詢要另填 NewAPI 的個人存取權杖(見下方「餘額查詢」一段)", "获取风控配置失败,将直接尝试领取:{message}": "獲取風控配置失敗,將直接嘗試領取:{message}", "获取风控配置失败:{message}": "取得風控設定失敗:{message}", "获取验证码": "獲取驗證碼", "要添加到其他站点,请返回「已建 API」重新选择": "要新增到其他網站,請返回「已建 API」重新選擇", "解锁 Premium": "解鎖 Premium", "访客模式": "訪客模式", "访客模式(免登录)": "訪客模式(免登入)", "访问令牌": "存取權杖", "该上游无需鉴权(不发送鉴权头)": "該上游無需鑑權(不傳送鑑權頭)", "该地址已有提供商": "該位址已有提供商", "该提供商": "該提供商", "该提供商已不存在或地址已变更,请重新选择": "該提供商已不存在或位址已變更,請重新選擇", "该提供商已不存在(可能已被删除),请刷新后重试": "該提供商已不存在(可能已被刪除),請重新整理後再試", "该提供商账号添加功能即将上线": "該提供商帳號新增功能即將上線", "该登录需要继续跳转,请在网关桌面面板重新发起。": "此登入仍需繼續跳轉,請於閘道桌面面板重新發起。", "该自定义提供商已不存在(可能已被删除),请刷新后重试": "該自定義提供商已不存在(可能已被刪除),請重新整理後重試", "请使用网页访问令牌,不要填写 sk- 开头的 API Key。": "請使用網頁存取權杖,不要填寫 sk- 開頭的 API Key。", "请先选择一个自定义提供商": "請先選擇一個自定義提供商", "请在弹出的滑块中完成验证(官方要求的风控步骤)": "請在彈出的滑塊中完成驗證(官方要求的風控步驟)", "请在插件打开的专用 Chrome 窗口中登录移动云(yun.139.com)。登录成功后会自动读取并验证凭据,随后继续添加账号。": "請在插件開啟的專用 Chrome 視窗中登入移動雲(yun.139.com)。登入成功後會自動讀取並驗證憑證,隨後繼續新增帳號。", "请在插件打开的端砚控制台窗口中登录(支持密码、短信或扫码)。插件会自动读取登录结果并关闭窗口,无需手动关闭;随后按所选方式创建或复用 API Key。新建密钥的明文只显示一次,由插件保存。": "請在插件開啟的端硯控制台視窗中登入(支援密碼、簡訊或掃碼)。插件會自動讀取登入結果並關閉視窗,無需手動關閉;隨後依所選方式建立或重用 API Key。新金鑰的明文只顯示一次,由插件儲存。", "请在插件打开的端砚控制台窗口中登录(支持密码、短信或扫码),然后退出该浏览器:macOS 请按 Cmd+Q(只关闭窗口不够),Linux 请关闭最后一个窗口。插件读取登录结果后会继续处理,并按所选方式创建或复用 API Key。新建密钥的明文只显示一次,由插件保存。": "請在插件開啟的端硯控制台視窗中登入(支援密碼、簡訊或掃碼),然後結束該瀏覽器:macOS 請按 Cmd+Q(只關閉視窗不夠),Linux 請關閉最後一個視窗。插件讀取登入結果後會繼續處理,並依所選方式建立或重用 API Key。新金鑰的明文只顯示一次,由插件儲存。", "请在系统浏览器完成官方登录。": "請在系統瀏覽器完成官方登入。", "请在运行网关的机器上打开 PowerShell,执行下面的专用登录命令,并按官方提示完成授权。面板会自动检测登录结果,不需要粘贴凭证。": "請在執行閘道的機器上開啟 PowerShell,執行下方的專用登入命令,並依官方提示完成授權。面板會自動偵測登入結果,不需要貼上憑證。", "请在运行网关的机器上打开终端,执行下面的专用登录命令,并按官方提示完成授权。面板会自动检测登录结果,不需要粘贴凭证。": "請在執行閘道的機器上開啟終端機,執行下方的專用登入命令,並依官方提示完成授權。面板會自動偵測登入結果,不需要貼上憑證。", "请填写 11 位大陆手机号": "請填寫 11 位大陸手機號", "请填写 6 位数字验证码": "請填寫 6 位數字驗證碼", "请填写 Base URL": "請填寫 Base URL", "请填写 {label}": "請填寫 {label}", "请填写名称": "請填寫名稱", "请安装并启用对应的提供商插件;列表为空时请刷新后重试。": "請安裝並啟用對應的提供商外掛;清單為空時請重新整理後重試。", "请完成验证…": "請完成驗證…", "请选择客户端凭证文件,或本软件导出的单账号 JSON 文件": "請選擇用戶端憑證檔案,或本軟體匯出的單帳號 JSON 檔案", "读取 %APPDATA%/AutoClaw/auth.json 并解密,仅 Windows": "讀取 %APPDATA%/AutoClaw/auth.json 並解密,僅 Windows", "读取 ~/.cline/data/settings/providers.json,需已在 Cline 客户端登录": "讀取 ~/.cline/data/settings/providers.json,需已在 Cline 客戶端登入", "读取 ~/.meituan-catpaw/auth.json,需已在 CatPaw 客户端登录": "讀取 ~/.meituan-catpaw/auth.json,需已在 CatPaw 客戶端登入", "读取本机 KukuAI 客户端登录态(%APPDATA%\\baidugenflowpro\\Network\\Cookies),需已在 KukuAI 客户端登录": "讀取本機 KukuAI 客戶端登入態(%APPDATA%\\baidugenflowpro\\Network\\Cookies),需已在 KukuAI 客戶端登入", "读取本机 OrcaTerm 客户端登录态(%APPDATA%\\com.orcaterm-desktop.app\\data.bin),需已在 OrcaTerm 客户端登录": "讀取本機 OrcaTerm 客戶端登入態(%APPDATA%\\com.orcaterm-desktop.app\\data.bin),需已在 OrcaTerm 客戶端登入", "读取本机已登录豆包工作客户端的 Cookie,每次请求实时读取;客户端需使用 --remote-debugging-port=9342 启动。本软件不修改、关闭或重启客户端。": "讀取本機已登入豆包工作用戶端的 Cookie,每次請求即時讀取;用戶端需使用 --remote-debugging-port=9342 啟動。本軟體不修改、關閉或重新啟動用戶端。", "读取本机智谱清言客户端登录态(%APPDATA%\\chatglm\\Network\\Cookies),需已在客户端登录": "讀取本機智譜清言客戶端登入態(%APPDATA%\\chatglm\\Network\\Cookies),需已在客戶端登入", "读取的是网关电脑上已登录的客户端,不是打开面板的电脑;也可改用粘贴凭据。": "讀取的是閘道電腦上已登入的用戶端,不是開啟面板的電腦;也可改用貼上憑證。", "读取网关所在机器上 kiro-cli 或 Kiro IDE 的登录态,不是当前浏览器所在电脑的账号;续期后会写回原处。": "讀取閘道所在機器上 kiro-cli 或 Kiro IDE 的登入狀態,不是目前瀏覽器所在電腦的帳號;更新憑證後會寫回原處。", "读取运行网关的电脑上已登录的 QuWork,只保存本机引用,不修改官方客户端文件;切换账号后需重新导入。": "讀取執行閘道的電腦上已登入的 QuWork,僅儲存本機參照,不修改官方用戶端檔案;切換帳號後需重新匯入。", "读本机官方客户端(Tencent WorkBuddy / WorkBuddy AI)当前登录的账号:自动定位其凭证目录里最新的登录态文件(需已在本机官方客户端登录)。导入后由网关自动续期,无需跟随 2 小时时效手动换令牌。": "讀本機官方客戶端(Tencent WorkBuddy / WorkBuddy AI)當前登入的帳號:自動定位其憑證目錄裡最新的登入態檔案(需已在本機官方客戶端登入)。匯入後由閘道器自動續期,無需跟隨 2 小時時效手動換權杖。", "读本机客户端当前登录态(明文 Cookie,无需解密)。客户端运行时 Cookies 文件被独占占用,导入前请先关闭 KukuAI 客户端。": "讀本機客戶端當前登入態(明文 Cookie,無需解密)。客戶端執行時 Cookies 檔案被獨佔佔用,匯入前請先關閉 KukuAI 客戶端。", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。": "讀本機客戶端當前登入態,每次即時讀取(刪掉這條記錄不影響客戶端登入態)。", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。客户端重新登录后点「刷新 Token」同步。": "讀本機客戶端當前登入態,每次即時讀取(刪掉這條記錄不影響客戶端登入態)。客戶端重新登入後點「重新整理 Token」同步。", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。客户端重新登录后重新导入即可。": "讀本機客戶端當前登入態,每次即時讀取(刪掉這條記錄不影響客戶端登入態)。客戶端重新登入後重新匯入即可。", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。用 Zai / Google 登录客户端的用户走这一条。": "讀本機客戶端當前登入態,每次即時讀取(刪掉這條記錄不影響客戶端登入態)。用 Zai / Google 登入客戶端的使用者走這一條。", "读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。这一条归入 {label}。": "讀本機客戶端當前登入態,每次即時讀取(刪掉這條記錄不影響客戶端登入態)。這一條歸入 {label}。", "读本机客户端当前登录的 OAuth 令牌(明文 JSON,无需解密)。导入后由网关自动续期,无需跟随客户端的 2 小时时效手动换令牌。": "讀本機客戶端當前登入的 OAuth 權杖(明文 JSON,無需解密)。匯入後由閘道器自動續期,無需跟隨客戶端的 2 小時時效手動換權杖。", "读本机客户端当前的登录态。客户端的 Cookies 是 DPAPI 加密的(Chromium os_crypt),因此仅 Windows 可用;客户端正在运行时可能读不到该文件,先退出客户端再试即可(也可改用「填写凭证」粘贴令牌)。": "讀本機客戶端當前的登入態。客戶端的 Cookies 是 DPAPI 加密的(Chromium os_crypt),因此僅 Windows 可用;客戶端正在執行時可能讀不到該檔案,先退出客戶端再試即可(也可改用「填寫憑證」貼上權杖)。", "豆包工作": "豆包工作", "账号信息": "帳號資訊", "账号信息不完整,请刷新后重试": "帳號資訊不完整,請重新整理後重試", "账号名由插件自动获取,添加后可修改。": "帳號名稱由外掛自動取得,新增後可修改。", "账号已添加,但代理选择未确认保存;请在账号设置中重新检查。": "帳號已新增,但代理選擇未確認儲存;請於帳號設定中重新檢查。", "账号已添加,但未返回账号 ID,无法保存登录代理选择。": "帳號已新增,但未回傳帳號 ID,無法儲存登入代理選擇。", "账号已添加,但请留意:{warning}": "帳號已新增,但請留意:{warning}", "账号已添加,但账号列表同步失败,请刷新重试。": "帳號已新增,但帳號清單同步失敗,請重新整理後重試。", "账号文件的提供商与当前选择不一致,请选择对应的提供商后再导入": "帳號檔案的提供商與目前選擇不一致,請選擇對應的提供商後再匯入", "账号版本": "帳號版本", "账号类型": "帳號型別", "账号:{name}
    ": "帳號:{name}
    ", "走 Inference Providers 路由,Key 在 hf.co/settings/tokens 创建": "走 Inference Providers 路由,Key 在 hf.co/settings/tokens 建立", "返回提供商列表": "返回提供商清單", "还没有可用的提供商。各家提供商的转发与账号实现都在插件包里,装好之后这里就会出现。": "還沒有可用的提供商。各家提供商的轉發與帳號實作都在外掛包裡,裝好之後這裡就會出現。", "还没有账号": "還沒有帳號", "还需完成 AWS 授权:请打开下一步授权页,完成后回填新的完整回调地址。": "仍需完成 AWS 授權:請開啟下一步授權頁,完成後貼上新的完整回呼位址。", "还需继续授权,请打开下一步授权页,完成后回填新的完整回调地址。": "仍需繼續授權,請開啟下一步授權頁,完成後貼上新的完整回呼位址。", "这一家当前不支持网页登录,请改用填写凭证": "這一家當前不支援網頁登入,請改用填寫憑證", "这个账号当前没有可自动领的活动(只自动领每日登录赠送积分)": "這個帳號當前沒有可自動領的活動(只自動領每日登入贈送積分)", "这份额度走「活动套餐」通道:若转发时提示编码套餐已到期,": "這份額度走「活動套餐」通道:若轉發時提示編碼套餐已到期,", "这里填国内站(modelscope.cn)的账号:请粘贴国内站的令牌。国际站(modelscope.ai)是另一家 provider、另一套账号,两边的令牌不通用。": "這裡填國內站(modelscope.cn)的帳號:請貼上國內站的權杖。國際站(modelscope.ai)是另一家 provider、另一套帳號,兩邊的權杖不通用。", "这里填国内站(monkeycode-ai.com)的账号:请粘贴国内站的 session。国际站(monkeycode-ai.net)是另一家 provider、另一套账号,两边的凭证不通用。": "這裡填國內站(monkeycode-ai.com)的帳號:請貼上國內站的 session。國際站(monkeycode-ai.net)是另一家 provider、另一套帳號,兩邊的憑證不通用。", "这里填国际站(modelscope.ai)的账号:请粘贴国际站的令牌。国内站(modelscope.cn)是另一家 provider、另一套账号,两边的令牌不通用。": "這裡填國際站(modelscope.ai)的帳號:請貼上國際站的權杖。國內站(modelscope.cn)是另一家 provider、另一套帳號,兩邊的權杖不通用。", "这里填国际站(monkeycode-ai.net)的账号:请粘贴国际站的 session。国内站(monkeycode-ai.com)是另一家 provider、另一套账号,两边的凭证不通用。": "這裡填國際站(monkeycode-ai.net)的帳號:請貼上國際站的 session。國內站(monkeycode-ai.com)是另一家 provider、另一套帳號,兩邊的憑證不通用。", "选择 CatPaw 客户端的登录态文件 auth.json(Windows:C:\\Users\\<你的用户名>\\.meituan-catpaw\\auth.json;macOS / Linux:~/.meituan-catpaw/auth.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端。": "選擇 CatPaw 客戶端的登入態檔案 auth.json(Windows:C:\\Users\\<你的使用者名稱>\\.meituan-catpaw\\auth.json;macOS / Linux:~/.meituan-catpaw/auth.json)。匯入後憑證直接落在閘道器、可獨立轉發,不再依賴本機客戶端。", "选择 Cline 客户端的登录态文件 providers.json(Windows:C:\\Users\\<你的用户名>\\.cline\\data\\settings\\providers.json;macOS / Linux:~/.cline/data/settings/providers.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端;这一条归入 {label}。": "選擇 Cline 客戶端的登入態檔案 providers.json(Windows:C:\\Users\\<你的使用者名稱>\\.cline\\data\\settings\\providers.json;macOS / Linux:~/.cline/data/settings/providers.json)。匯入後憑證直接落在閘道器、可獨立轉發,不再依賴本機客戶端;這一條歸入 {label}。", "选择 KukuAI 客户端的 Cookies 文件(%APPDATA%\\baidugenflowpro\\Network\\Cookies):它是**二进制** SQLite 数据库(无扩展名,不是 JSON)。导入时读的是你选中文件的副本、不和运行中的客户端抢占用,因此**无需先关闭客户端**。导入后凭证直接落在网关、可独立转发。": "選擇 KukuAI 客戶端的 Cookies 檔案(%APPDATA%\\baidugenflowpro\\Network\\Cookies):它是**二進位制** SQLite 資料庫(無副檔名,不是 JSON)。匯入時讀的是你選中檔案的副本、不和執行中的客戶端搶佔用,因此**無需先關閉客戶端**。匯入後憑證直接落在閘道器、可獨立轉發。", "选择 OAuth auth.json 的绝对路径(不扫描其他目录)": "選擇 OAuth auth.json 的絕對路徑(不掃描其他目錄)", "选择凭证文件导入": "選擇憑證檔案匯入", "选择包含 Cookie 的 JSON 对象,或本软件导出的单账号 JSON 文件。导入后可独立使用,不需要持续运行豆包工作客户端。": "選擇包含 Cookie 的 JSON 物件,或本軟體匯出的單帳號 JSON 檔案。匯入後可獨立使用,不需要持續執行豆包工作用戶端。", "选择包含 Tabbit Cookie / JWT 的 JSON 或文本文件;也可以直接粘贴到上方表单。": "選擇包含 Tabbit Cookie / JWT 的 JSON 或文本文件;也可以直接粘貼到上方表單。", "选择包含该提供商凭证的 JSON 文件,或本软件导出的单账号 JSON 文件。导入后凭证保存在网关,可独立使用。": "選擇包含該提供商憑證的 JSON 檔案,或本軟體匯出的單帳號 JSON 檔案。匯入後憑證儲存在閘道,可獨立使用。", "选择官方客户端的登录态凭证文件(workbuddy-desktop.info / workbuddy-desktop-ai.info)或 wb2api 导出的账号 JSON(嵌套 / 扁平形均可)。": "選擇官方客戶端的登入態憑證檔案(workbuddy-desktop.info / workbuddy-desktop-ai.info)或 wb2api 匯出的帳號 JSON(巢狀 / 扁平形均可)。", "选择小浣熊客户端的登录态文件 auth.json(Windows:C:\\Users\\<你的用户名>\\.box-agent\\config\\auth.json;macOS / Linux:~/.box-agent/config/auth.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端。": "選擇小浣熊客戶端的登入態檔案 auth.json(Windows:C:\\Users\\<你的使用者名稱>\\.box-agent\\config\\auth.json;macOS / Linux:~/.box-agent/config/auth.json)。匯入後憑證直接落在閘道器、可獨立轉發,不再依賴本機客戶端。", "选择提供商": "選擇提供商", "选择新增账号或重新授权当前注册": "選擇新增帳號或重新授權目前註冊", "选择的文件不是合法 JSON": "選擇的檔案不是合法 JSON", "选择要添加账号的提供商": "選擇要新增帳號的提供商", "选择预置客户端": "選擇預設客戶端", "重新扫描": "重新掃描", "重新授权所选账号(固定原身份和 clientId)": "重新授權所選帳號(固定原身分與 clientId)", "重新读取提供商": "重新讀取提供商", "鉴权": "鑑權", "阿里云 Token Plan 套餐(国际站)": "阿里雲 Token Plan 套餐(國際站)", "阿里云百炼 Coding 套餐(国内站)": "阿里雲百鍊 Coding 套餐(國內站)", "阿里云百炼 Coding 套餐(国际站)": "阿里雲百鍊 Coding 套餐(國際站)", "阿里云百炼模型服务(国际站,OpenAI 兼容模式)": "阿里雲百鍊模型服務(國際站,OpenAI 相容模式)", "隐藏凭证": "隱藏憑證", "需要图形验证码:登录窗口已弹出,请填写后继续": "需要圖形驗證碼:登入視窗已彈出,請填寫後繼續", "需要手动提交授权回调": "需要手動提交授權回呼", "需要时填写完整 Cookie": "需要時填寫完整 Cookie", "需要进行人机验证": "需要進行人機驗證", "预置 API": "預置 API", "领取 CodeArts 每日福利": "領取 CodeArts 每日福利", "领取失败:{message}": "領取失敗:{message}", "领取并让官方确认": "領取並讓官方確認", "风控验证配置不完整,请稍后重试": "風控驗證配置不完整,請稍後重試", "验证码": "驗證碼", "验证码业务请求超时,请刷新状态后重试": "驗證碼業務請求逾時,請重新整理狀態後重試", "验证码令牌入池接口不可用": "驗證碼權杖入池介面無法使用", "验证码令牌未全部入池": "驗證碼權杖未全部入池", "验证码令牌池未返回状态": "驗證碼權杖池未回傳狀態", "验证码已使用,请重新验证": "驗證碼已使用,請重新驗證", "验证码已发送。收到后填入下方并点「登录并添加」": "驗證碼已傳送。收到後填入下方並點「登入並新增」", "验证码已发送,请查看手机短信": "驗證碼已傳送,請檢視手機簡訊", "验证码已发送,请查看手机短信。填入下方并点「登录并添加」即完成登录": "驗證碼已傳送,請檢視手機簡訊。填入下方並點「登入並新增」即完成登入", "验证码已发送,请查看短信": "驗證碼已傳送,請檢視簡訊", "验证码校验失败,请重试": "驗證碼校驗失敗,請重試", "验证码校验超时,请重试": "驗證碼校驗超時,請重試", "验证码组件不可用,请重试": "驗證碼元件不可用,請重試", "验证码组件初始化超时,请重试": "驗證碼元件初始化超時,請重試", "验证码组件加载失败,请检查网络后重试": "驗證碼元件載入失敗,請檢查網路後重試", "验证码组件加载异常,请重试": "驗證碼元件載入異常,請重試", "验证码组件加载超时,请检查网络后重试": "驗證碼元件載入超時,請檢查網路後重試", "验证码组件未加载,请重启应用后重试": "驗證碼元件未載入,請重啟應用後重試", "验证码组件返回的验证串不完整(请重试)": "驗證碼元件回傳的驗證字串不完整(請重試)", "验证被上游风控拒绝,请稍后重试": "驗證被上游風控拒絕,請稍後重試", "验证请求过于频繁,请稍后重试": "驗證請求過於頻繁,請稍後重試", "默认开启;填 0 关闭(发送「已设为默认浏览器」标记)": "默認開啟;填 0 關閉(發送「已設為默認瀏覽器」標記)", "(免费额度池,模型名带 cline-free/ 前缀)。": "(免費額度池,模型名帶 cline-free/ 字首)。", "(其中 {n} 把恢复为不限制)": "(其中 {n} 把恢復為不限制)", "(必填)": "(必填)", "(有效期 {window})": "(有效期 {window})", "(订阅池,模型名带 cline-pass/ 前缀,需要账号有对应订阅)。": "(訂閱池,模型名帶 cline-pass/ 字首,需要帳號有對應訂閱)。", ",下一次最快 {minutes} 分钟后": ",下一次最快 {minutes} 分鐘後", ",并从 {n} 把 Key 的可用提供商里移除": ",並從 {n} 把 Key 的可用提供商裡移除", " · 思考等级 ": " · 思考等級 ", " · 思考等级 {level}": " · 思考等級 {level}", " · 有映射 ": " · 有對映 ", " · 限额中": " · 限額中", " → 转发": " → 轉發", " 上登记上游模型": " 上登記上游模型", " 与 ": " 與 ", " 个": " 個", " 个模型 · 已启用 ": " 個模型 · 已啟用 ", " 个账号": " 個帳號", " 会广告它、请求它也会被转发到这家。 支持字母、数字与 ": " 會廣告它、請求它也會被轉發到這家。 支援字母、數字與 ", " 失败": " 失敗", " 已发出,等待上游首帧…": " 已發出,等待上游首幀…", " 成功 ·": " 成功 ·", " 这类符号,但不能含空格或换行,且不超过 128 个字符。同一提供商内,同名绑定最多启用一条;已有启用绑定时不能新增,启用备用绑定会自动关闭其他同名绑定。不同提供商可各启用一条同名绑定,用于主备切换。": " 這類符號,但不能含空格或換行,且不超過 128 個字元。同一提供商內,同名繫結最多啟用一條;已有啟用繫結時不能新增,啟用備用繫結會自動關閉其他同名繫結。不同提供商可各啟用一條同名繫結,用於主備切換。", " 里的 ": " 裡的 ", "(全局)": "(全域)", "(未选)": "(未選)", "0 家": "0 家", "<上游模型 ID>": "<上游模型 ID>", "<上游模型>": "<上游模型>", "<对外名>": "<對外名>", "models.dev 补齐:对下游声明 {value}": "models.dev 補齊:對下游宣告 {value}", "{action}映射 {alias}": "{action}對映 {alias}", "{id}({name})": "{id}({name})", "{label}要填 1 ~ 1 亿之间的整数(留空 = {inherit})": "{label}要填 1 ~ 1 億之間的整數(留空 = {inherit})", "{label}:{value}(对下游声明的精确值){origin}{suffix}": "{label}:{value}(對下游宣告的精確值){origin}{suffix}", "{label}:{value}(对下游声明的精确值){suffix}": "{label}:{value}(對下游宣告的精確值){suffix}", "{label}:上游未声明{suffix}": "{label}:上游未宣告{suffix}", "{label}:上游未声明(下游会按不支持处理){suffix}": "{label}:上游未宣告(下游會按不支援處理){suffix}", "{label}:不支持{origin}{suffix}": "{label}:不支援{origin}{suffix}", "{label}:不支持{suffix}": "{label}:不支援{suffix}", "{label}:支持{origin}{suffix}": "{label}:支援{origin}{suffix}", "{label}:支持{suffix}": "{label}:支援{suffix}", "{level}(本次指定)": "{level}(本次指定)", "{name}({id})": "{name}({id})", "{name}(不在该家当前清单里)": "{name}(不在該家當前清單裡)", "{n} 个": "{n} 個", "{n} 个映射": "{n} 個對映", "{n} 个模型": "{n} 個模型", "{n} 字节": "{n} 位元組", "{provider}:模型清单为空,等待获取": "{provider}:模型清單為空,等待取得", "{status}:模型获取失败": "{status}:模型取得失敗", "{total} 家 · 成功 {done}": "{total} 家 · 成功 {done}", "{total} 家 · 成功 {done} · 失败 {failed}": "{total} 家 · 成功 {done} · 失敗 {failed}", "✅ 已保存 {id} 的能力位({provider})": "✅ 已儲存 {id} 的能力位({provider})", "✅ 已导入 {added} 个模型({skipped} 个已存在,跳过)": "✅ 已匯入 {added} 個模型({skipped} 個已存在,跳過)", "✅ 已更新 {name} 的思考等级": "✅ 已更新 {name} 的思考等級", "✅ 已添加映射 {name} → {target}({label}){suffix}": "✅ 已新增對映 {name} → {target}({label}){suffix}", "✅ 已登记 {name}({label}),但该提供商还没有可用账号,这一行要加上账号后才会显示": "✅ 已登記 {name}({label}),但該提供商還沒有可用帳號,這一行要加上帳號後才會顯示", "✅ 已登记模型 {name}({label})": "✅ 已登記模型 {name}({label})", "✅ 已登记自定义模型 {name}({label})": "✅ 已登記自定義模型 {name}({label})", "✅ 批量{action}完成:共 {n} 个模型": "✅ 批次{action}完成:共 {n} 個模型", "✅ 批量{action}完成:共 {n} 个模型(跳过不可删除的 {skipped} 个)": "✅ 批次{action}完成:共 {n} 個模型(跳過不可刪除的 {skipped} 個)", "。": "。", "。上游清单给的值不准时,在这里改;": "。上游清單給的值不準時,在這裡改;", "。同一对外名可在多个提供商各添加一条: 下游用同一个名字请求,网关按账号优先级主备切换,失败自动落到下一个提供商。": "。同一對外名可在多個提供商各新增一條: 下游用同一個名字請求,閘道器按帳號優先順序主備切換,失敗自動落到下一個提供商。", "「恢复继承」会把这一项交还给上游清单的值。": "「恢復繼承」會把這一項交還給上游清單的值。", "「来源」列会标成": "「來源」列會標成", "上下文 / 输出": "上下文 / 輸出", "上下文窗口": "上下文視窗", "上下文窗口 {input} / 最大输出 Token {output} —— 点击修改模型能力": "上下文視窗 {input} / 最大輸出 Token {output} —— 點擊修改模型能力", "上游 {model}": "上游 {model}", "上游不认识这个模型名:先点「获取模型」刷新清单,或核对默认绑定指向的上游模型。": "上游不認識這個模型名:先點「獲取模型」重新整理清單,或核對預設繫結指向的上游模型。", "上游原始响应": "上游原始回應", "上游可用档位:{levels}": "上游可用檔位:{levels}", "上游固定为 {level},绑定其他等级也无法调高。": "上游固定為 {level},綁定其他等級也無法調高。", "上游已经不再提供这个模型(可能已下线或改了 ID)": "上游已經不再提供這個模型(可能已下線或改了 ID)", "上游拒绝了这条登录态:重新登录一次,或把这条账号删掉。": "上游拒絕了這條登入態:重新登入一次,或把這條帳號刪掉。", "上游未声明": "上游未宣告", "上游未声明(下游会按不支持处理)": "上游未宣告(下游會按不支援處理)", "上游未部署": "上游未部署", "上游模型": "上游模型", "上游模型 ID": "上游模型 ID", "上游没在预算内给完回答。可以只勾一个账号再测一次,看是普遍慢还是某一个账号慢。": "上游沒在預算內給完回答。可以只勾一個帳號再測一次,看是普遍慢還是某一個帳號慢。", "上游没有给出可读的错误说明": "上游沒有給出可讀的錯誤說明", "上游没有返回任何模型": "上游沒有返回任何模型", "上游目录列出了这个模型,但推理端尚未识别;保留在清单中,后续探测成功后自动清除标记": "上游目錄列出了這個模型,但推理端尚未識別;保留在清單中,後續探測成功後自動清除標記", "上游目录尚未拉到,用的是内置静态清单;点「刷新模型清单」可重试": "上游目錄尚未拉到,用的是內建靜態清單;點「重新整理模型清單」可重試", "上游能列出这个模型,但官方客户端不展示它;本仓已默认关闭它的默认绑定(点这一行的开关可以手动打开)": "上游能列出這個模型,但官方客戶端不展示它;本倉已預設關閉它的預設綁定(點這一列的開關可以手動打開)", "下游客户端": "下游客戶端", "下游请求 ": "下游請求 ", "不展示": "不展示", "不影响网关的转发与路由": "不影響閘道器的轉發與路由", "不支持": "不支援", "不覆盖": "不覆蓋", "两边原因不一样时各自处理。如果": "兩邊原因不一樣時各自處理。如果", "中止测试": "中止測試", "仅支持已识别压缩格式的 ZCode;客户端修改压缩格式后可能需要更新适配。": "僅支援已識別壓縮格式的 ZCode;用戶端修改壓縮格式後可能需要更新適配。", "仅本次测试临时生效,不修改账号保存的代理配置。可选「网络代理」页里的节点或强制直连。": "僅本次測試臨時生效,不修改帳號儲存的代理設定。可選「網路代理」頁裡的節點或強制直連。", "从这一家的上游拉一份模型清单,勾选要哪些再导入(已添加的不会重复导入)": "從這一家的上游拉一份模型清單,勾選要哪些再匯入(已新增的不會重複匯入)", "代理池响应异常": "代理池回應異常", "以模型本名直发": "以模型本名直髮", "以这个上游模型发一次最小请求,走真实转发链路": "以這個上游模型發一次最小請求,走真實轉發鏈路", "例如 gpt-4o": "例如 gpt-4o", "例如 gpt-5.5-preview": "例如 gpt-5.5-preview", "保存": "儲存", "保存中…": "儲存中…", "保存失败:{message}": "儲存失敗:{message}", "保存映射": "儲存對映", "保存等级": "儲存等級", "倍率": "倍率", "倍率升序": "倍率升序", "倍率升序,点击切换为降序": "倍率升序,點擊切換為降序", "倍率降序": "倍率降序", "倍率降序,点击切换为升序": "倍率降序,點擊切換為升序", "全选当前筛选出的模型(跨分页);再点取消": "全選當前篩選出的模型(跨分頁);再點取消", "全选当前筛选结果": "全選當前篩選結果", "全选未添加": "全選未新增", "全选({n})": "全選({n})", "全部": "全部", "全部删除": "全部刪除", "全部映射": "全部對映", "全部自定义提供商": "全部自定義提供商", "全部({n} 家)": "全部({n} 家)", "共 {n} 家 · 点「获取模型」开始": "共 {n} 家 · 點「獲取模型」開始", "关闭": "關閉", "关闭即中止": "關閉即中止", "关闭后保留规则,所有请求按原模型处理。": "關閉後保留規則,所有請求按原模型處理。", "其余 {n} 个会被跳过。": "其餘 {n} 個會被跳過。", "内置": "內建", "内置提供商": "內建提供商", "内置清单": "內建清單", "再测一次": "再測一次", "删除": "刪除", "删除中…": "刪除中…", "删除入口未就绪,请重试或重启应用": "刪除入口未就緒,請重試或重啟應用", "删除全部未挂载映射": "刪除全部未掛載映射", "删除映射": "刪除對映", "删除映射 {alias}": "刪除對映 {alias}", "删除未挂载的映射": "刪除未掛載的對映", "删除自定义提供商": "刪除自定義提供商", "删除规则 {n}": "刪除規則 {n}", "删除这个自定义提供商(连同名下账号)": "刪除這個自定義提供商(連同名下帳號)", "删除这条映射": "刪除這條對映", "删除选中的模型": "刪除選中的模型", "刷新全部家(逐家打上游)": "重新整理全部家(逐家打上游)", "刷新完成,但没有得到任何结果": "重新整理完成,但沒有得到任何結果", "刷新模型管理页里各提供商的远程模型目录,逐家结果列在弹窗里": "重新整理模型管理頁裡各提供商的遠端模型目錄,逐家結果列在彈窗裡", "刷新清单": "重新整理清單", "加载中…": "載入中…", "勾上它,导入后即进入这家的清单": "勾上它,匯入後即進入這家的清單", "勾几个就并行测几次;默认选队列里最靠前的一个。": "勾幾個就並行測幾次;預設選佇列裡最靠前的一個。", "勾选后可批量操作": "勾選後可批次操作", "压缩模型": "壓縮模型", "压缩路由": "壓縮路由", "压缩路由入口尚未就绪,请刷新页面后重试": "壓縮路由入口尚未就緒,請重新整理頁面後重試", "压缩路由已保存,下次压缩请求生效": "壓縮路由已儲存,下次壓縮請求生效", "压缩路由接口返回了不完整的数据": "壓縮路由介面傳回了不完整的資料", "原始 ID 已作为默认绑定,请直接使用该绑定的开关或等级按钮": "原始 ID 已作為預設繫結,請直接使用該繫結的開關或等級按鈕", "原始 ID 的默认绑定不能删除,请关闭它的开关": "原始 ID 的預設繫結不能刪除,請關閉它的開關", "取消": "取消", "另有 {n} 个非手动登记的模型将被跳过。": "另有 {n} 個非手動登記的模型將被跳過。", "另有 {n} 条别名映射({aliases}),别名不参与本次": "另有 {n} 條別名對映({aliases}),別名不參與本次", "只刷新这一家的模型清单": "只重新整理這一家的模型清單", "只在识别到 ZCode 上下文压缩请求时切换模型,普通对话仍使用原模型。": "只在識別到 ZCode 上下文壓縮請求時切換模型,一般對話仍使用原模型。", "只属于这一家": "只屬於這一家", "可删除 {n} 个(手动登记 / 自定义家);": "可刪除 {n} 個(手動登記 / 自定義家);", "可见": "可見", "可见性": "可見性", "可配思考档位": "可配思考檔位", "同一客户端的来源模型不能重复:{model}": "同一用戶端的來源模型不能重複:{model}", "同一条错误出现在所有账号上": "同一條錯誤出現在所有帳號上", "后端桥不可用": "後端橋不可用", "启用压缩路由": "啟用壓縮路由", "启用后将自动关闭该提供商的其他同名绑定:{bindings}": "啟用後將自動關閉該提供商的其他同名繫結:{bindings}", "启用规则 {n}": "啟用規則 {n}", "回复": "回覆", "固定思考档位": "固定思考檔位", "固定思考档位:{level}": "固定思考檔位:{level}", "图片": "圖片", "图片生成": "圖片生成", "图片生成模型请通过 /v1/images/generations 调用,暂不支持对话测试": "圖片生成模型請透過 /v1/images/generations 呼叫,暫不支援對話測試", "图片编辑": "圖片編輯", "图片识别": "圖片識別", "圆点带内侧描边 = 由 models.dev 补齐;右上角小点 = 你手动覆盖过;虚线圈 = 未声明。悬停某一枚可看逐项出处。": "圓點帶內側描邊 = 由 models.dev 補齊;右上角小點 = 你手動覆蓋過;虛線圈 = 未宣告。懸停某一枚可看逐項出處。", "在 ": "在 ", "填上游真正认识的那个模型 ID(不是给下游用的名字)。登记后它会进入该家的模型清单: 表格里出现这一行、": "填上游真正認識的那個模型 ID(不是給下游用的名字)。登記後它會進入該家的模型清單: 表格裡出現這一行、", "复制": "複製", "多半是上游自己的问题,过一会儿再试。同一个错误出现在所有账号上时,先查模型目录与映射。": "多半是上游自己的問題,過一會兒再試。同一個錯誤出現在所有帳號上時,先查模型目錄與對映。", "失败": "失敗", "失败 {n} 个 · 首个失败:{error}": "失敗 {n} 個 · 首個失敗:{error}", "如果 ZCode 已设置压缩路由,网关看到的是它改写后的模型。建议同一套规则只在一处配置。": "如果 ZCode 已設定壓縮路由,閘道看到的是它改寫後的模型。建議同一套規則只在一處設定。", "完成": "完成", "官方客户端会展示这个模型": "官方客戶端會展示這個模型", "对下游声明的能力(工具调用 / 图片识别 / 视频识别 / 支持思考)—— 点击修改": "對下游宣告的能力(工具呼叫 / 圖片識別 / 影片識別 / 支援思考)—— 點擊修改", "对外名可以是中文、字母、数字与 ": "對外名可以是中文、字母、數字與 ", "对外名可自由命名,允许与上游模型 ID 同名(同名时该上游的原生路由优先,映射作兜底); 支持字母、数字与 ": "對外名可自由命名,允許與上游模型 ID 同名(同名時該上游的原生路由優先,對映作兜底); 支援字母、數字與 ", "对外映射名(下游请求时用)": "對外對映名(下游請求時用)", "对话协议": "對話協定", "对话协议的说明": "對話協定的說明", "对选中的 {n} 个模型执行批量操作": "對選中的 {n} 個模型執行批次操作", "导入失败:{message}": "匯入失敗:{message}", "导入选中的 {n} 个模型": "匯入選中的 {n} 個模型", "将作用于以下模型": "將作用於以下模型", "尚未获取": "尚未獲取", "尚未配置压缩规则,默认使用原模型。": "尚未設定壓縮規則,預設使用原模型。", "尝试 {n} 次": "嘗試 {n} 次", "展开其余 {n} 个模型 ▾": "展開其餘 {n} 個模型 ▾", "工具": "工具", "工具调用": "工具呼叫", "已中止在途测试({n} 个账号)": "已中止在途測試({n} 個帳號)", "已删除 {n} 条未挂载映射": "已刪除 {n} 條未掛載映射", "已刷新": "已重新整理", "已启用": "已啟用", "已启用 {name},其他同名绑定已自动关闭": "已啟用 {name},其他同名繫結已自動關閉", "已填写:对下游声明 {value}": "已填寫:對下游宣告 {value}", "已添加": "已新增", "已等待 {seconds}s": "已等待 {seconds}s", "已覆盖上游值": "已覆蓋上游值", "已覆盖:对下游声明 {value}": "已覆蓋:對下游宣告 {value}", "已选 ": "已選 ", "已选 {picked} 个 · 上游共 {upstream} 个 · 清单已有 {managed} 个": "已選 {picked} 個 · 上游共 {upstream} 個 · 清單已有 {managed} 個", "开始测试": "開始測試", "当前环境不支持代理池": "目前環境不支援代理池", "当前环境不支持读取 API Key": "目前環境不支援讀取 API Key", "当前通道未声明可用档位,映射等级不会注入;请先获取模型目录。": "目前通道未宣告可用檔位,映射等級不會注入;請先取得模型目錄。", "待获取": "待獲取", "思考": "思考", "思考等级": "思考等級", "思考等级 {level}": "思考等級 {level}", "思考等级 {level}(点击修改)": "思考等級 {level}(點擊修改)", "思考等级的注入规则": "思考等級的注入規則", "思考过程({n} 字)": "思考過程({n} 字)", "恢复继承": "恢復繼承", "成功 {ok} 个,失败 {failed} 个": "成功 {ok} 個,失敗 {failed} 個", "所选 API Key 无权调用此模型或提供商": "所選 API Key 無權呼叫此模型或提供商", "所选模型含同一提供商的同名绑定「{id}」,请分别启用,避免相互关闭": "所選模型含同一提供商的同名繫結「{id}」,請分別啟用,避免相互關閉", "所选模型没有共同可用档位,请分别设置或清除绑定。": "所選模型沒有共同可用檔位,請分別設定或清除綁定。", "手动": "手動", "手动登记": "手動登記", "手动登记的上游模型;移除它会直接删掉这条登记": "手動登記的上游模型;移除它會直接刪掉這條登記", "执行{action}": "執行{action}", "批量{action}完成:成功 {ok} 个,失败 {failed} 个": "批次{action}完成:成功 {ok} 個,失敗 {failed} 個", "批量操作": "批次操作", "批量操作 · 已选 {n} 个模型": "批次操作 · 已選 {n} 個模型", "按倍率升序排列": "按倍率升序排列", "按倍率排序": "按倍率排序", "按可见性筛选": "按可見性篩選", "按客户端发送的模型 ID 匹配,支持模型别名和对话路由组;每次只映射一次。": "按用戶端傳送的模型 ID 比對,支援模型別名和對話路由群組;每次只映射一次。", "按所选网关对话协议组装请求并校验响应转换(Chat Completions / Responses / Anthropic Messages)。": "按所選閘道對話協定組裝請求並校驗回應轉換(Chat Completions / Responses / Anthropic Messages)。", "按提供商分组排序,已启用模型优先;未知倍率排在末尾": "按提供商分組排序,已啟用模型優先;未知倍率排在末尾", "按提供商选择": "按提供商選擇", "按状态筛选": "按狀態篩選", "提供商": "提供商", "搜索模型": "搜尋模型", "搜索模型 ID / 名称 / 映射名…": "搜尋模型 ID / 名稱 / 對映名…", "搜索模型 ID / 提供商": "搜尋模型 ID / 提供商", "搜索模型 ID…": "搜尋模型 ID…", "搜索账号…": "搜尋帳號…", "操作": "操作", "支持": "支援", "支持思考": "支援思考", "收起 ▴": "收起 ▴", "放弃尚未保存的压缩路由修改?": "放棄尚未儲存的壓縮路由修改?", "数字带虚线底 = 由 models.dev 补齐;右上角小点 = 你手动覆盖过;— = 未声明。点任意一格可改。": "數字帶虛線底 = 由 models.dev 補齊;右上角小點 = 你手動覆蓋過;— = 未宣告。點任意一格可改。", "新建一个自定义提供商(同时创建它的第一个账号)": "新建一個自定義提供商(同時建立它的第一個帳號)", "映射、思考等级、上下文窗口与工具调用能力在桌面端「模型管理」里改;手机端只做启停。": "對映、思考等級、上下文視窗與工具呼叫能力在桌面版「模型管理」裡改;手機端只做啟停。", "映射「{alias} → {target}」不存在": "對映「{alias} → {target}」不存在", "映射上未绑定思考等级,「跟随映射」等于这次不注入": "對映上未繫結思考等級,「跟隨對映」等於這次不注入", "映射已关闭": "對映已關閉", "映射已关闭,点击启用": "對映已關閉,點擊啟用", "映射已删除": "對映已刪除", "映射已启用": "對映已啟用", "映射已启用,其他同名绑定已自动关闭": "對映已啟用,其他同名繫結已自動關閉", "映射已启用,点击关闭": "對映已啟用,點擊關閉", "映射已绑定思考等级 {level},可用时会优先覆盖本次指定的等级": "映射已綁定思考等級 {level},可用時會優先覆寫本次指定的等級", "暂无模型(请先添加账号)": "暫無模型(請先新增帳號)", "更新日期": "更新日期", "最多可添加 {n} 条压缩规则": "最多可新增 {n} 條壓縮規則", "最大输出 Token": "最大輸出 Token", "有映射": "有對映", "未填写": "未填寫", "未填写(下游按未声明处理)": "未填寫(下游按未宣告處理)", "未声明": "未宣告", "未挂载映射:已删除 {removed} 条,失败 {failed} 条。首个失败:{error}": "未掛載映射:已刪除 {removed} 條,失敗 {failed} 條。首個失敗:{error}", "未挂载的模型映射": "未掛載的模型對映", "未接入": "未接入", "未添加": "未新增", "未知": "未知", "本机网关没有返回结论": "本機閘道器沒有返回結論", "本次没有取到新内容": "本次沒有取到新內容", "本次测试的发送口径": "本次測試的傳送口徑", "来源": "來源", "来源未知": "來源未知", "来源模型": "來源模型", "来源模型和压缩模型不能相同": "來源模型和壓縮模型不能相同", "来自上游目录接口,清单拉取于 {at};刷新失败时保留上一份成功结果": "來自上游目錄介面,清單拉取於 {at};重新整理失敗時保留上一份成功結果", "来自上游目录接口;刷新失败时保留上一份成功结果": "來自上游目錄介面;重新整理失敗時保留上一份成功結果", "桥接调用返回空(本机网关没有响应这次测试)": "橋接呼叫返回空(本機閘道器沒有響應這次測試)", "模型 ID「{id}」在该提供商已有启用绑定,请先关闭它再添加": "模型 ID「{id}」在該提供商已有啟用繫結,請先關閉它再新增", "模型 ID「{id}」已存在,请使用已有模型": "模型 ID「{id}」已存在,請使用已有模型", "模型 ID「{id}」已绑定到此上游模型,请直接使用已有绑定": "模型 ID「{id}」已繫結到此上游模型,請直接使用已有繫結", "模型「{name}」已存在(忽略大小写判重)": "模型「{name}」已存在(忽略大小寫判重)", "模型已移除": "模型已移除", "模型数": "模型數", "模型映射": "模型對映", "模型来源": "模型來源", "模型清单为空:已有可用账号,请点「获取模型」拉取目录": "模型清單為空:已有可用帳號,請點「取得模型」取得目錄", "模型清单已刷新": "模型清單已重新整理", "模型目录刷新不可用,请重新打开面板": "模型目錄更新無法使用,請重新開啟面板", "模型目录刷新结果": "模型目錄更新結果", "模型管理表": "模型管理表", "模型能力": "模型能力", "模型获取失败": "模型取得失敗", "正在刷新…": "正在重新整理…", "正在测 ": "正在測 ", "正在获取…": "正在獲取…", "正在读取压缩路由…": "正在讀取壓縮路由…", "每条映射 = 对外名 → 上游模型;原始 ID 与别名有独立开关,默认绑定永远存在(没有映射时是合成的那条)。": "每條對映 = 對外名 → 上游模型;原始 ID 與別名有獨立開關,預設繫結永遠存在(沒有對映時是合成的那條)。", "没有匹配「{keyword}」的模型": "沒有匹配「{keyword}」的模型", "没有匹配当前筛选的模型": "沒有匹配當前篩選的模型", "没有匹配的模型": "沒有符合的模型", "没有可选的对话模型,请先启用模型和对应账号。": "沒有可選的對話模型,請先啟用模型和對應帳號。", "没有选中任何模型": "沒有選中任何模型", "没有选中的模型": "沒有選中的模型", "流式请求": "流式請求", "流式请求的说明": "流式請求的說明", "测试": "測試", "测试未通过": "測試未通過", "测试模型": "測試模型", "测试结果": "測試結果", "测试节点": "測試節點", "测试节点的说明": "測試節點的說明", "测试账号": "測試帳號", "测试账号的说明": "測試帳號的說明", "添加模型映射": "新增模型對映", "添加自定义模型": "新增自定義模型", "清空": "清空", "清除覆盖,回到上游声明值": "清除覆蓋,回到上游宣告值", "清除这一项(回到未声明)": "清除這一項(回到未宣告)", "清除(不覆盖)": "清除(不覆蓋)", "点击复制:{name}": "點擊複製:{name}", "点右侧「获取模型」从上游拉取这家的模型清单": "點右側「獲取模型」從上游拉取這家的模型清單", "用哪个账号去拉这家的模型清单": "用哪個帳號去拉這家的模型清單", "用户提示词": "使用者提示詞", "用户登记的自定义模型;整份清单只属于这一家": "使用者登記的自定義模型;整份清單隻屬於這一家", "用时 {time}": "用時 {time}", "用时 {time} · 首字 {ttfb}": "用時 {time} · 首字 {ttfb}", "留空则不携带;设置页的提示词模式照常生效": "留空則不攜帶;設定頁的提示詞模式照常生效", "留空用默认问候「你好」": "留空用預設問候「你好」", "的模型合集:每家的清单互相独立,别名也只在自己那家内生效;要改名称 / 协议 / Base URL,到账号页该家账号的「设置」→ 提供商一栏。": "的模型合集:每家的清單互相獨立,別名也只在自己那家內生效;要改名稱 / 協議 / Base URL,到帳號頁該家帳號的「設定」→ 提供商一欄。", "目录模块未就绪": "目錄模組未就緒", "目标使用自身的思考设置或默认值,仍受网关 Key 权限限制;不可用时明确报错,不自动退回原模型。": "目標使用自身的思考設定或預設值,仍受閘道 Key 權限限制;無法使用時明確報錯,不自動退回原模型。", "目标已下线": "目標已下線", "直接移除": "直接移除", "直连(不使用代理)": "直連(不使用代理)", "看的能力声明(": "看的能力宣告(", "真实链路 · 消耗少量额度 · 日志带「测试」标记,不计报表": "真實鏈路 · 消耗少量額度 · 日誌帶「測試」標記,不計報表", "确定删除映射「{alias} → {target}」?": "確定刪除對映「{alias} → {target}」?", "确定删除映射「{alias} → {target}」?它指向的上游模型已不在清单里。": "確定刪除對映「{alias} → {target}」?它指向的上游模型已不在清單裡。", "确定删除映射「{alias} → {target}」?它指向的上游模型已不在清单里。": "確定刪除對映「{alias} → {target}」?它指向的上游模型已不在清單裡。", "确定删除此区域列出的全部 {n} 条未挂载映射?此操作不可撤销,不会删除正常挂载的映射或模型。": "確定刪除此區域列出的全部 {n} 條未掛載映射?此操作無法復原,不會刪除正常掛載的映射或模型。", "确定删除选中的 {count} 个模型登记?删除后 /v1/models 不再广告它们、请求也会被拒。": "確定刪除選中的 {count} 個模型登記?刪除後 /v1/models 不再廣告它們、請求也會被拒。", "确定移除自定义模型「{id}」?这条登记会被直接移除,之后 /v1/models 不再广告它、请求它也会被拒。": "確定移除自定義模型「{id}」?這條登記會被直接移除,之後 /v1/models 不再廣告它、請求它也會被拒。", "确认桌面端还在运行,再重试一次。": "確認桌面版還在執行,再重試一次。", "确认选择": "確認選擇", "社区参考档位,不代表当前上游通道支持;实际以该通道目录为准。": "社群參考檔位,不代表目前上游通道支援;實際以該通道目錄為準。", "社区参考档位:{levels}": "社群參考檔位:{levels}", "移除": "移除", "移除自定义模型": "移除自定義模型", "系统提示词": "系統提示詞", "绑定 {requested},按当前通道将发送 {effective}。": "綁定 {requested},按目前通道將傳送 {effective}。", "绑定在「对外名 → 上游模型」这一条映射上的思考等级(列表照抄 OmniProxy 的手动绑定),选「不覆盖」表示不给这条映射指定等级。它会跟着这条映射注入转发,由承载的那家翻译成自己的档位字段(CatPaw 归并成 low/high/max,Qoder 按模型声明的档位归一)。以下几种情况故意不注入:① off / none(关闭思考)—— 本项目没有安全的表达方式;② 表外的自定义等级(各家能力范围不同,无法判断上游收不收);③ 客户端请求体里已经自己指定了档位(那是更明确的意图,绑定不覆盖);④ 这家上游不认识档位字段(如 WorkBuddy / 小浣熊 / AutoClaw / Cline)。注入与跳过都会写进详细日志。": "繫結在「對外名 → 上游模型」這一條對映上的思考等級(列表照抄 OmniProxy 的手動繫結),選「不覆蓋」表示不給這條對映指定等級。它會跟著這條對映注入轉發,由承載的那家翻譯成自己的檔位欄位(CatPaw 歸併成 low/high/max,Qoder 按模型宣告的檔位歸一)。以下幾種情況故意不注入:① off / none(關閉思考)—— 本專案沒有安全的表達方式;② 表外的自定義等級(各家能力範圍不同,無法判斷上游收不收);③ 客戶端請求體裡已經自己指定了檔位(那是更明確的意圖,繫結不覆蓋);④ 這家上游不認識檔位欄位(如 WorkBuddy / 小浣熊 / AutoClaw / Cline)。注入與跳過都會寫進詳細日誌。", "继承上游": "繼承上游", "继承上游 {value}": "繼承上游 {value}", "继承上游:{value}": "繼承上游:{value}", "网关未返回保存后的提供商记录": "閘道器未返回儲存後的提供商記錄", "网关未返回逐家模型目录刷新结果": "閘道未回傳逐家模型目錄更新結果", "能力": "能力", "自定义 · 全部": "自定義 · 全部", "自定义家": "自定義家", "自定义提供商": "自定義提供商", "自定义提供商的清单": "自定義提供商的清單", "自定义提供商还没有模型:先在左栏选一家,点「添加模型」登记,或「获取上游模型」从上游拉取": "自定義提供商還沒有模型:先在左欄選一家,點「新增模型」登記,或「獲取上游模型」從上游拉取", "自定义模型已移除": "自定義模型已移除", "自定义等级": "自定義等級", "自定义等级…": "自定義等級…", "自定义等级(例如 custom-high)": "自定義等級(例如 custom-high)", "至少选一个测试账号": "至少選一個測試帳號", "节点 {proxy}": "節點 {proxy}", "获取": "獲取", "获取中…": "獲取中…", "获取失败:{message}": "獲取失敗:{message}", "获取模型": "獲取模型", "获取模型 — {name}": "獲取模型 — {name}", "规则 {n}": "規則 {n}", "规则不绑定提供商,压缩模型由其路由配置决定使用哪家提供商。": "規則不綁定提供商,壓縮模型由其路由設定決定使用哪家提供商。", "视频": "影片", "视频识别": "影片識別", "设置 / 清除会应用到选中模型的": "設定 / 清除會應用到選中模型的", "设置思考等级": "設定思考等級", "设置思考等级后,会覆盖下游请求中的等级;选择“不覆盖”则保留下游参数。实际档位以提供商支持范围为准,无法注入时保留原请求并记录原因。off / none 仍不由映射注入。": "設定思考等級後,會覆寫下游請求中的等級;選擇「不覆寫」則保留下游參數。實際檔位以提供商支援範圍為準,無法注入時保留原請求並記錄原因。off / none 仍不由映射注入。", "设置思考等级(当前未绑定)": "設定思考等級(當前未繫結)", "该提供商已不存在(可能已被删除),请刷新列表": "該提供商已不存在(可能已被刪除),請重新整理列表", "该提供商当前没有可选的上游模型": "該提供商當前沒有可選的上游模型", "该提供商没有可用账号(要在账号页启用一个、且凭证完整),一行都发不出去": "該提供商沒有可用帳號(要在帳號頁啟用一個、且憑證完整),一行都發不出去", "该提供商的清单里没有模型「{name}」": "該提供商的清單裡沒有模型「{name}」", "该等级无法注入,请选择上游可用档位或清除绑定。": "該等級無法注入,請選擇上游可用檔位或清除綁定。", "该行当前未启用:测试照常按本名直发(「先测通、再决定要不要启用」正是这颗按钮的用法),但本行的思考等级绑定不参与本次,生产路由也要等绑定打开后才会放行": "該行當前未啟用:測試照常按本名直髮(「先測通、再決定要不要啟用」正是這顆按鈕的用法),但本行的思考等級繫結不參與本次,生產路由也要等繫結開啟後才會放行", "该账号对这个模型正在限额冷却,等一会儿自己会好;也可以先测别的账号。": "該帳號對這個模型正在限額冷卻,等一會兒自己會好;也可以先測別的帳號。", "说明": "說明", "请先选择一把 API Key": "請先選擇一把 API Key", "请填写上游模型 ID": "請填寫上游模型 ID", "请填写对外映射名": "請填寫對外對映名", "请填写模型 ID": "請填寫模型 ID", "请填写自定义思考等级,或改选候选档 / 「清除」": "請填寫自定義思考等級,或改選候選檔 / 「清除」", "请完整选择来源模型和压缩模型": "請完整選擇來源模型和壓縮模型", "请选择受支持的客户端": "請選擇支援的用戶端", "请选择提供商": "請選擇提供商", "读取模型清单失败:{message}": "讀取模型清單失敗:{message}", "账号 ": "帳號 ", "跟随映射(当前 {level})": "跟隨對映(當前 {level})", "跟随映射(未绑定等级)": "跟隨對映(未繫結等級)", "跟随映射(该行未启用,本次不注入)": "跟隨對映(該行未啟用,本次不注入)", "跟随账号配置": "跟隨帳號設定", "跳过": "跳過", "转发到上游模型": "轉發到上游模型", "还没有可刷新的提供商:先在账号页添加一个账号": "還沒有可重新整理的提供商:先在帳號頁新增一個帳號", "还没有自定义提供商": "還沒有自定義提供商", "这一行已不在当前清单里(模型被移除、或目录刷新后上游不再提供它)。关闭后刷新列表再试。": "這一行已不在當前清單裡(模型被移除、或目錄重新整理後上遊不再提供它)。關閉後重新整理列表再試。", "这个模型仍在承载它的提供商清单里,但那一家的模型行当前没有出现(例如该家没有可用账号)": "這個模型仍在承載它的提供商清單裡,但那一家的模型行當前沒有出現(例如該家沒有可用帳號)", "这个模型在官方客户端里是否会被展列;不展示的那些默认已关闭(含默认绑定)": "這個模型在官方客戶端裡是否會被展列;不展示的那些預設已關閉(含預設綁定)", "这个模型已经在这家的清单里,不重复导入": "這個模型已經在這家的清單裡,不重複匯入", "这个模型的图片能力(图片生成 / 图片编辑)—— 点击修改": "這個模型的圖片能力(圖片生成 / 圖片編輯)—— 點擊修改", "这些映射指向的上游模型已不在当前清单里,挂不到任何模型行上:它们不会出现在 /v1/models,用对应别名发请求也会失败。删除后该对外名即可重新使用。": "這些對映指向的上游模型已不在當前清單裡,掛不到任何模型行上:它們不會出現在 /v1/models,用對應別名發請求也會失敗。刪除後該對外名即可重新使用。", "这些映射指向的上游模型已不在当前清单里,用对应别名发请求会失败。可以在这里删除,删掉后该对外名即可重新使用。": "這些對映指向的上游模型已不在當前清單裡,用對應別名發請求會失敗。可以在這裡刪除,刪掉後該對外名即可重新使用。", "这几项是给": "這幾項是給", "这家提供商没有可见性判据(目前只有 Antigravity / Qoder / 小浣熊 / CodeArts 有)": "這家提供商沒有可見性判據(目前只有 Antigravity / Qoder / 小浣熊 / CodeArts 有)", "这家有可见性判据,但这一条上游没有表态 —— 按可见处理": "這家有可見性判據,但這一條上游沒有表態 —— 按可見處理", "这家没有可用账号(要在账号页启用一个、且凭证完整)": "這家沒有可用帳號(要在帳號頁啟用一個、且憑證完整)", "这家用固定模型清单,无可刷新": "這家用固定模型清單,無可重新整理", "这家的模型清单是全局的,不跟账号走": "這家的模型清單是全域的,不跟帳號走", "这家的清单是你自己登记的,不填的项下游按未声明处理。": "這家的清單是你自己登記的,不填的項下游按未宣告處理。", "这家还没有可用账号,刷新会使用默认登录态": "這家還沒有可用帳號,重新整理會使用預設登入態", "这家还没有模型:点「添加模型」登记,或「获取上游模型」从上游拉取": "這家還沒有模型:點「新增模型」登記,或「獲取上游模型」從上游拉取", "这是模型自己能配的档位(来自上游目录),只读;要改某一档请到映射弹窗里选。": "這是模型自己能配的檔位(來自上游目錄),只讀;要改某一檔請到對映彈窗裡選。", "这条登记(不像内置模型那样只是隐藏),因为它的存在完全由这次登记决定。": "這條登記(不像內建模型那樣只是隱藏),因為它的存在完全由這次登記決定。", "这里是": "這裡是", "远程": "遠端", "远程目录": "遠端目錄", "远程目录已更新,「来源」列会显示为「远程」": "遠端目錄已更新,「來源」列會顯示為「遠端」", "适用客户端": "適用用戶端", "选一个账号(至少一个)": "選一個帳號(至少一個)", "选中的模型都不是手动登记,无法删除(开关映射才是它们的手段)": "選中的模型都不是手動登記,無法刪除(開關對映才是它們的手段)", "选中的都不是手动登记的模型,删除不可用(上游目录带回来的行由清单决定存在性)": "選中的都不是手動登記的模型,刪除不可用(上游目錄帶回來的行由清單決定存在性)", "重新获取": "重新獲取", "重新读取会丢弃当前草稿,确定继续?": "重新讀取會捨棄目前的草稿,確定繼續?", "重试": "重試", "错误详情": "錯誤詳情", "默认": "預設", "默认开,与真实请求一致:可同时验证 SSE 链路与首字延迟。": "預設開,與真實請求一致:可同時驗證 SSE 鏈路與首字延遲。", "默认档位:{level}": "預設檔位:{level}", "默认绑定": "預設繫結", "({label})": "({label})", "({provider})": "({provider})", "(上游这一次返回了空正文)": "(上游這一次返回了空正文)", "(中间共尝试 {n} 次)": "(中間共嘗試 {n} 次)", "(已禁用)": "(已停用)", "(已被手动覆盖,弹窗里可恢复继承)": "(已被手動覆蓋,彈窗裡可恢復繼承)", "(手动设定)": "(手動設定)", "(由 models.dev 补齐)": "(由 models.dev 補齊)", "(登记后即可用这个名字请求)": "(登記後即可用這個名字請求)", "(续)": "(續)", "(默认 ": "(預設 ", "(默认绑定与别名 chips);「清除」= 不给这些映射指定等级(选「不覆盖」的口径与映射弹窗一致)": "(預設繫結與別名 chips);「清除」= 不給這些對映指定等級(選「不覆蓋」的口徑與對映彈窗一致)", ")": ")", "),下游按它们决定发不发图片、按多大的窗口堆历史。": "),下游按它們決定發不發圖片、按多大的視窗堆歷史。", "+ 新建自定义提供商": "+ 新建自定義提供商", "+ 映射": "+ 對映", "+ 添加压缩规则": "+ 新增壓縮規則", "+ 添加模型": "+ 新增模型", "+等级": "+等級", ",与远程目录 / 内置清单区分开。删除自定义模型是": ",與遠端目錄 / 內建清單區分開。刪除自定義模型是", ",已完成 ": ",已完成 ", ",跳过 {n} 个": ",跳過 {n} 個", ",通常就不是账号问题了:先确认这个模型还在上游目录里(「获取模型」刷一次),再看默认绑定指向的上游模型对不对。": ",通常就不是帳號問題了:先確認這個模型還在上游目錄裡(「獲取模型」刷一次),再看預設繫結指向的上游模型對不對。", ":": ":", ":这里的模型不会出现在其他家,别名也只在这一家内生效。改名称 / 协议 / Base URL 在账号页该家账号的「设置」→ 提供商一栏;整家不要了,鼠标移到左栏这家上点 × 删除(连同名下账号)。": ":這裡的模型不會出現在其他家,別名也只在這一家內生效。改名稱 / 協議 / Base URL 在帳號頁該家帳號的「設定」→ 提供商一欄;整家不要了,滑鼠移到左欄這家上點 × 刪除(連同名下帳號)。", ";其中 {keys} 由 models.dev 补齐": ";其中 {keys} 由 models.dev 補齊", ";首个失败:{error}": ";首個失敗:{error}", "{account} · 账号设置": "{account} · 帳號設定", "{account} 参与本路由": "{account} 參與本路由", "{account} 尝试失败后切换到此账号": "{account} 嘗試失敗後切換到此帳號", "{available} 可用 · {blocked} 跳过": "{available} 可用 · {blocked} 跳過", "{clients} 的标题请求": "{clients} 的標題請求", "{client} 的上下文压缩请求": "{client} 的上下文壓縮請求", "{client} 的压缩请求": "{client} 的壓縮請求", "{client} 的标题请求": "{client} 的標題請求", "{models} 看不了图时": "{models} 看不了圖時", "{model} 参与本路由": "{model} 參與本路由", "{model} 有独立配置": "{model} 有獨立配置", "{name} · 提供商路由设置": "{name} · 提供商路由設定", "{name} 已{state}": "{name} 已{state}", "{name} 的账号顺序已调整": "{name} 的帳號順序已調整", "{n} 个候选": "{n} 個候選", "{n} 个参与账号": "{n} 個參與帳號", "{n} 个启用且参与的账号": "{n} 個啟用且參與的帳號", "{n} 个客户端": "{n} 個客戶端", "{n} 个提供商": "{n} 個提供商", "{n} 个模型限流": "{n} 個模型限流", "{n} 个请求": "{n} 個請求", "{n} 个账号 · {on} 启用 · {off} 禁用": "{n} 個帳號 · {on} 啟用 · {off} 停用", "{n} 个账号已折叠": "{n} 個帳號已摺疊", "{n} 个跳过": "{n} 個跳過", "{n} 在途": "{n} 在途", "{n} 处未保存": "{n} 處未儲存", "{n} 已完成": "{n} 已完成", "{n} 条": "{n} 條", "{n} 条活跃绑定": "{n} 筆有效綁定", "{n} 条请求没有会话标识,未计入会话数量。": "{n} 條請求沒有會話標識,未計入會話數量。", "{n} 条账号路径": "{n} 條帳號路徑", "{n} 次": "{n} 次", "{n} 项参与": "{n} 項參與", "{paths} 条路径 · {sessions} 个会话": "{paths} 條路徑 · {sessions} 個會話", "{providers} 个提供商 / {accounts} 个账号": "{providers} 個提供商 / {accounts} 個帳號", "{providers} 个提供商 · {accounts} 个参与账号": "{providers} 個提供商 · {accounts} 個參與帳號", "{provider} 参与本路由": "{provider} 參與本路由", "{selected} / {total} 个账号参与": "{selected} / {total} 個帳號參與", "{selected} / {total} 个账号启用": "{selected} / {total} 個帳號啟用", "{time} 后恢复": "{time} 後恢復", "一个路由组最多允许 {n} 个成员": "一個路由群組最多允許 {n} 個成員", "一条历史路径": "一條歷史路徑", "上游已响应": "上游已響應", "上游请求已发出": "上游請求已送出", "上游调用": "上游呼叫", "下一条请求": "下一條請求", "下一条请求将走": "下一條請求將走", "不参与": "不參與", "不按余额排序": "不依餘額排序", "不按到期排序": "不按到期排序", "与账号页共用全局消耗规则": "與帳號頁共用全域消耗規則", "与账号页共用:{rules}。积分到期等规则直接影响网关实际选路。": "與帳號頁共用:{rules}。積分到期等規則直接影響閘道器實際選路。", "为什么没有调用": "為什麼沒有呼叫", "为什么选择它": "為什麼選擇它", "为压缩请求指定模型": "為壓縮請求指定模型", "五分钟没有往来即释放;客户端会话标识优先,内容哈希兜底。": "五分鐘沒有往來即釋放;優先使用用戶端工作階段識別碼,無識別碼時使用內容雜湊。", "仅保留最后承载信息,尝试明细未记录": "僅保留最後承載資訊,嘗試明細未記錄", "仅允许指定提供商": "僅允許指定提供商", "仅列出真实目录中的对话模型,不自动更改模型映射。": "僅列出真實目錄中的對話模型,不自動更改模型對映。", "仅加入的参与": "僅加入的參與", "仅勾选的参与": "僅勾選的參與", "仅历史": "僅歷史", "仅在途": "僅在途", "仅展示已发生的请求,不表示当前可选": "僅展示已發生的請求,不表示當前可選", "仅影响此路由的后续请求": "僅影響此路由的後續請求", "仅看选中路径": "僅看選中路徑", "仅筛选右侧账号列表,不改变路由配置。": "僅篩選右側帳號清單,不改變路由設定。", "仍保留配置,账号可继续用于其他路由。": "仍保留配置,帳號可繼續用於其他路由。", "仍然保存": "仍然儲存", "从上到下就是选路顺序": "從上到下就是選路順序", "从当前视图移除": "從目前檢視移除", "从现有模型中创建独立配置,自动列出提供它的全部提供商;之后的修改只跟随这个模型。": "從現有模型建立獨立設定,自動列出提供該模型的所有提供商;之後的修改只套用於這個模型。", "以下 {n} 个账号原本被全局路由排除。确认后会将它们设为禁用,所有路由都不能再选用;原有独立路由的参与名单保留。": "以下 {n} 個帳號原本被全域路由排除。確認後會將它們設為停用,所有路由都不能再選用;原有獨立路由的參與名單保留。", "优先使用队首账号,不可用时顺延。": "優先使用佇列首位帳號,無法使用時順延。", "优先尝试": "優先嚐試", "优先级:{rules};前一项相同才比较后一项。": "優先級:{rules};前一項相同才比較後一項。", "会话": "會話", "会话最长保持六小时无往来;可以随时在会话粘滞中解除。": "工作階段最多保留六小時無往來;可以隨時在工作階段黏著中解除。", "会话来源": "工作階段來源", "会话标识": "會話標識", "会话标识 {id} · 来源 {source}": "會話標識 {id} · 來源 {source}", "会话标识未记录,不将此请求推断为独立会话。": "會話標識未記錄,不將此請求推斷為獨立會話。", "会话活动": "會話活動", "会话粘住": "工作階段黏著命中", "会话粘滞": "工作階段黏著", "会话粘滞 {mode}": "會話粘滯 {mode}", "会话粘滞改为{value}": "會話粘滯改為{value}", "位置 = 顺位": "位置 = 順位", "低成本模型": "低成本模型", "作用范围": "作用範圍", "例如:日常省钱": "例如:日常省錢", "供继承全局的模型使用": "供繼承全域的模型使用", "保存": "儲存", "保存中…": "儲存中…", "保存仅影响后续选路,历史快照与在途请求不改写。": "儲存僅影響後續選路,歷史快照與在途請求不改寫。", "保存全局路由": "儲存全域路由", "保存后仅用于后续请求,不改变历史快照或在途请求。": "儲存後僅用於後續請求,不改變歷史快照或在途請求。", "保存后只影响后续请求": "儲存後隻影響後續請求", "保存后才会影响真实请求": "儲存後才會影響真實請求", "保存响应不完整,请刷新当前配置确认结果": "儲存響應不完整,請重新整理當前配置確認結果", "保存当前配置": "儲存當前配置", "保存模型路由": "儲存模型路由", "保存的尝试明细中没有这次调用": "儲存的嘗試明細中沒有這次呼叫", "保存空路由": "儲存空路由", "保存规则": "儲存規則", "保存路由": "儲存路由", "保存路由后,在客户端填写此模型 ID。密钥使用你自己的网关 Key。": "儲存路由後,在客戶端填寫此模型 ID。金鑰使用你自己的閘道器 Key。", "保护设置由所有模型共用;模型独立配置可覆盖参与范围、顺序、策略与粘滞。": "保護設定由所有模型共用;模型獨立配置可覆蓋參與範圍、順序、策略與粘滯。", "修改后影响继承全局的模型": "修改後影響繼承全域的模型", "修改范围以「编辑范围」为准": "修改範圍以「編輯範圍」為準", "候选": "候選", "候选 {n}": "候選 {n}", "候选 · {name}": "候選 · {name}", "候选与跳过": "候選與跳過", "候选与跳过清单各最多保存十二项;这里只回放当时保存的快照,不用当前队列重算。": "候選與跳過清單各最多儲存十二項;這裡只回放當時儲存的快照,不用當前佇列重算。", "候选与跳过清单各最多保存十二项;重试和跨账号切换见尝试明细。": "候選與略過清單各最多儲存十二項;重試與跨帳號切換請見嘗試明細。", "候选和跳过清单各最多保存十二项,超出部分不绘制。": "候選和跳過清單各最多儲存十二項,超出部分不繪製。", "候选快照中有此账号,但保存的尝试明细未显示它被调用": "候選快照中有此帳號,但儲存的嘗試明細未顯示它被呼叫", "候选快照仅保存部分记录,未保存的账号无法回放": "候選快照僅儲存部分記錄,未儲存的帳號無法重播", "候选筛选": "候選篩選", "候选规模": "候選規模", "候选账号": "候選帳號", "候选顺序": "候選順序", "停用后保留卡片与账号,方便随时恢复;不会全局禁用提供商。": "停用後保留卡片與帳號,方便隨時恢復;不會在全域停用提供商。", "停用后保留卡片与账号;自动参与不会重新启用明确停用的提供商。": "停用後保留卡片與帳號;自動參與不會重新啟用明確停用的提供商。", "停用此提供商": "停用此提供商", "停用路由提供商": "停用路由提供商", "允许参与的提供商": "允許參與的提供商", "先处理凭证、限额或参与范围。": "先處理憑證、限額或參與範圍。", "先尝试当前路由内的视觉模型,不可用时再按顺序尝试指定模型;指定模型可跨路由池。": "先嘗試目前路由內的視覺模型,不可用時再按順序嘗試指定模型;指定模型可跨路由池。", "先读图再交回": "先讀圖再交回", "全局": "全域", "全局保护设置": "全域保護設定", "全局修改影响继承它的模型;独立模型配置不变。": "全域修改影響繼承它的模型;獨立模型配置不變。", "全局修改影响继承的设置;模型已独立设置的项目保持不变。": "全域修改影響繼承的設定;模型已獨立設定的專案保持不變。", "全局参与范围": "全域參與範圍", "全局顺序与账号页联动,修改即时保存。": "全域順序與帳號頁連動,修改即時儲存。", "全局默认": "全域預設", "全局默认供继承的模型使用;给某个模型单独配置后,它就不再跟随全局。": "全域預設供繼承的模型使用;給某個模型單獨配置後,它就不再跟隨全域。", "全部候选": "全部候選", "全部模型(窗口内没有请求)": "全部模型(視窗內沒有請求)", "全部禁用": "帳號全數停用", "全部移出": "全部移出", "全部移出本路由": "全部移出本路由", "全部自动参与": "全部自動參與", "全部解除": "全部解除", "全部请求": "全部請求", "全部路径": "全部路徑", "共 {n} 个可添加的模型": "共 {n} 個可新增的模型", "共 {n} 条路由回放": "共 {n} 筆路由重播", "共尝试 {total} 次,保存了 {saved} 条明细": "共嘗試 {total} 次,儲存了 {saved} 筆明細", "关联与在途优先": "關聯與在途優先", "关联请求路径": "關聯請求路徑", "关闭": "關閉", "其他候选": "其他候選", "其他客户端": "其他客戶端", "其他账号已完成请求,没有继续调用这个候选": "其他帳號已完成請求,沒有繼續呼叫這個候選", "内容哈希": "內容雜湊", "内容哈希(推断)": "內容雜湊(推斷)", "内部重试不会增加账号切换节点。": "內部重試不會增加帳號切換節點。", "决定后续请求用谁、按什么顺序,以及是否沿用会话账号。": "決定後續請求用誰、按什麼順序,以及是否沿用會話帳號。", "冷却中": "冷卻中", "切换 {n} 次": "切換 {n} 次", "切换后,原本不在名单内的可用提供商也会参与转发。明确停用的提供商和排除的账号不会恢复。": "切換後,原本不在名單內的可用提供商也會參與轉送。明確停用的提供商和排除的帳號不會恢復。", "切换模型后,右侧只展示该模型的提供商与账号路由。": "切換模型後,右側只顯示該模型的提供商與帳號路由。", "列表内容": "列表內容", "创建独立配置": "建立獨立設定", "创建草稿": "建立草稿", "删除后此入口将不再接受请求。不会删除成员模型、提供商或账号。": "刪除後此入口將不再接受請求。不會刪除成員模型、提供商或帳號。", "删除后这个模型会重新跟随全局配置,已保存的独立设置和当前未保存修改都会被移除。": "刪除後這個模型會重新跟隨全域配置,已儲存的獨立設定和當前未儲存修改都會被移除。", "删除独立路由": "刪除獨立路由", "删除独立配置": "刪除獨立配置", "删除规则": "刪除規則", "删除路由组": "刪除路由組", "判断": "判斷", "刷新请求记录": "重新整理請求記錄", "刷新路由": "重新整理路由", "刷新预演": "重新整理預演", "加入": "加入", "加入路由": "加入路由", "历史只读,不影响当前配置": "歷史只讀,不影響當前配置", "历史只读,当前配置的修改不会改变这条请求的快照。": "歷史只讀,當前配置的修改不會改變這條請求的快照。", "历史快照保留了 {shown} / {total} 个候选明细,其余未记录。": "歷史快照保留了 {shown} / {total} 個候選明細,其餘未記錄。", "历史承载账号当前不可用": "歷史承載帳號當前不可用", "历史日期": "歷史日期", "历史记录": "歷史記錄", "压缩上下文": "壓縮上下文", "压缩模型": "壓縮模型", "压缩请求": "壓縮請求", "原因": "原因", "原始报文在请求详情里,这里只看选路过程。": "原始報文在請求詳情裡,這裡只看選路過程。", "原模型": "原模型", "原模型继续回答": "原模型繼續回答", "去账号页添加": "去帳號頁新增", "参与": "參與", "参与当前视图转发": "參與目前檢視的轉送", "参与方式": "參與方式", "参与方式改为{value}": "參與方式改為{value}", "参与本路由": "參與本路由", "参与范围": "參與範圍", "参与范围与顺序独立保存;策略和粘滞可分别继承全局。": "參與範圍與順序獨立儲存;策略和粘滯可分別繼承全域。", "参与账号": "參與帳號", "参与路由": "參與路由", "参与路由的账号": "參與路由的帳號", "参与转发": "參與轉發", "参与顺序": "參與順序", "发生切换": "發生切換", "取消": "取消", "取消勾选只排除当前范围,不会在账号页全局禁用账号。": "取消勾選只排除當前範圍,不會在帳號頁全域停用帳號。", "取消选中": "取消選中", "只从当前路由移出,保留模型和账号配置;不会改变其他路由。": "只從當前路由移出,保留模型和帳號配置;不會改變其他路由。", "只从当前路由视图移除,不删除提供商或账号,也不改变其他模型的独立配置。": "只從目前路由檢視移除,不刪除提供商或帳號,也不改變其他模型的獨立設定。", "只修改全局参与范围,不改变账号排序、模型开关或模型独立路由;网关 Key 权限与限流仍然生效。": "只修改全域參與範圍,不改變帳號排序、模型開關或模型獨立路由;閘道器 Key 權限與流量限制仍然生效。", "只列出当前模型已有启用绑定的提供商;这里只设置路由,不新建模型绑定。": "只列出目前模型已有啟用綁定的提供商;這裡只設定路由,不建立新的模型綁定。", "只影响这个路由成员,不改变账号启用状态,也不影响其他模型。新增账号需要手动加入。": "隻影響這個路由成員,不改變帳號啟用狀態,也不影響其他模型。新增帳號需要手動加入。", "只改写被识别为标题生成的小请求,普通对话不受影响。": "只改寫被識別為標題生成的小請求,一般對話不受影響。", "只有加入的提供商参与,新增提供商需要手动加入。": "只有加入的提供商參與,新增提供商需要手動加入。", "只有勾选的提供商参与;以后新增的提供商需要在这里勾选。": "只有勾選的提供商參與;以後新增的提供商需要在這裡勾選。", "只有名单内的提供商可以参与;新增提供商不会自动加入。": "只有名單內的提供商可以參與;新增提供商不會自動加入。", "只看用过这个模型的客户端与账号。点一条看它当时是怎么选的。": "只看用過這個模型的客戶端與帳號。點一條看它當時是怎麼選的。", "只看这个客户端经过的模型与账号。点一条看它当时是怎么选的。": "只看這個客戶端經過的模型與帳號。點一條看它當時是怎麼選的。", "只看这个提供商下参与路由的账号。点一条看它当时是怎么选的。": "只看這個提供商下參與路由的帳號。點一條看它當時是怎麼選的。", "只看这个账号承接的请求。点一条看完整的选路过程。": "只看這個帳號承接的請求。點一條看完整的選路過程。", "只看这条路径上的请求。点一条看完整的选路过程。": "只看這條路徑上的請求。點一條看完整的選路過程。", "只移出本路由,账号状态和其他路由不变;保存后此入口将没有可用路由。": "只移出本路由,帳號狀態和其他路由不變;儲存後此入口將沒有可用路由。", "只读预演,不会推进轮转;保存后才会影响真实请求。": "只讀預演,不會推進輪轉;儲存後才會影響真實請求。", "可以保存空路由,但请求会明确失败,不会回退全局。": "可以儲存空路由,但請求會明確失敗,不會回退全域。", "可以跨提供商、跨模型多选。同一提供商也可以加入不同模型。": "可以跨提供商、跨模型多選。同一提供商也可以加入不同模型。", "可用候选": "可用候選", "可用待命": "可用待命", "可用账号按请求轮换;开启会话粘性时同一会话优先留在原账号。": "可用帳號按請求輪替;啟用工作階段黏著時,同一工作階段優先保留在原帳號。", "右侧面板内容": "右側面板內容", "同一会话优先保持模型与账号,不可用时才顺延。": "同一會話優先保持模型與帳號,不可用時才順延。", "同一模型,选择不同提供商": "同一模型,選擇不同提供商", "同号重试 {n} 次": "同號重試 {n} 次", "同账号内部重试": "同帳號內部重試", "后备账号": "備用帳號", "后过期": "後到期", "否": "否", "含图片": "含圖片", "启用": "啟用", "启用 {provider} 的账号": "啟用 {provider} 的帳號", "启用全部账号": "啟用全部帳號", "启用当前列表账号": "啟用目前清單中的帳號", "启用提供商中的第 {rank} 顺位;当前可用候选第 {effective} 顺位。": "啟用提供商中的第 {rank} 順位;目前可用候選第 {effective} 順位。", "启用提供商中的第 {rank} 顺位;当前没有可用候选账号。": "啟用提供商中的第 {rank} 順位;目前沒有可用候選帳號。", "启用规则": "啟用規則", "启用账号 {account}": "啟用帳號 {account}", "命中 {n} 次": "命中 {n} 次", "命中下面规则的上下文压缩请求,会改用指定的模型压缩一次;账号仍按新模型自己的路由挑。": "命中下面規則的上下文壓縮請求,會改用指定的模型壓縮一次;帳號仍按新模型自己的路由挑。", "命中会话粘性,沿用原账号完成请求": "命中會話粘性,沿用原帳號完成請求", "命中会话粘滞": "命中工作階段黏著", "命中这条规则的压缩请求会改用「压缩模型」重发一次;改写之后按新模型自己的路由挑账号。": "命中這條規則的壓縮請求會改用「壓縮模型」重發一次;改寫之後按新模型自己的路由挑帳號。", "命中配置": "命中配置", "响应到达": "響應到達", "响应到达后": "回應抵達後", "响应完成": "響應完成", "回放中": "回放中", "回放保持不变": "回放保持不變", "回放步骤": "回放步驟", "回答": "回答", "固定这条请求": "固定這條請求", "在工作台查看": "在工作臺檢視", "在途 + 近期": "在途 + 近期", "在途 {n} / {limit}": "在途 {n} / {limit}", "在途时长": "在途時長", "在途请求 / 并发上限": "處理中請求 / 同時處理上限", "备选按顺序尝试;一个都不加时,当前路由内找不到视觉模型就停止并说明原因。": "備選按順序嘗試;一個都不加時,當前路由內找不到視覺模型就停止並說明原因。", "复制失败,请手动选择并复制": "複製失敗,請手動選擇並複製", "复制网关地址": "複製閘道器網址", "失败原因未记录": "失敗原因未記錄", "失败后备选": "失敗後備選", "失败时": "失敗時", "失败时直接报错": "失敗時直接報錯", "失败时退回原模型": "失敗時退回原模型", "失败阈值": "失敗門檻", "完整详情": "完整詳情", "完整请求详情": "完整請求詳情", "完整过程": "完整過程", "实时状态暂未更新,当前显示上次读取的结果:{error}": "即時狀態暫未更新,目前顯示上次讀取的結果:{error}", "实际使用": "實際使用", "实际尝试失败": "實際嘗試失敗", "实际模型": "實際模型", "实际请求路径": "實際請求路徑", "实际账号尝试": "實際帳號嘗試", "客户端已取消请求": "用戶端已取消請求", "客户端未记录": "客戶端未記錄", "客户端模型": "客戶端模型", "客户端模型 {client} → 实际模型 {model}": "客戶端模型 {client} → 實際模型 {model}", "客户端请求": "客戶端請求", "对外模型 ID": "對外模型 ID", "对外模型 ID 已被占用,请换一个名称": "對外模型 ID 已被佔用,請換一個名稱", "对外模型 ID 格式不正确": "對外模型 ID 格式不正確", "将禁用当前所选的 {n} 个账号,所有路由都不能再选用它们。此操作立即保存,不会删除账号。": "將停用目前選取的 {n} 個帳號,所有路由都不能再選用它們。此操作立即儲存,不會刪除帳號。", "尚未记录承载账号": "尚未記錄承載帳號", "尚未读取到有效的积分到期时间": "尚未讀取到有效的積分到期時間", "尝试 {n}": "嘗試 {n}", "尝试 {n} · 最终承载": "嘗試 {n} · 最終承載", "尝试中": "嘗試中", "尝试失败": "嘗試失敗", "尝试明细已截断或未记录,画布只展示保存下来的信息。": "嘗試明細已截斷或未記錄,畫布只展示儲存下來的資訊。", "尝试结果": "嘗試結果", "尝试记录": "嘗試記錄", "展开其余 {n} 个候选": "展開其餘 {n} 個候選", "展开完整原因": "展開完整原因", "工具服务的视觉模型": "工具服務的視覺模型", "左侧修改的是全局默认,不会影响它。": "左側修改的是全域預設,不會影響它。", "已保存": "已儲存", "已保存 {n} 个候选": "已儲存 {n} 個候選", "已保存明细": "已儲存明細", "已停用": "已停用", "已停用提供商 · {n}": "已停用提供商 · {n}", "已关闭": "已關閉", "已删除独立配置,改为跟随全局": "已刪除獨立配置,改為跟隨全域", "已启用": "已啟用", "已启用模拟条件": "已啟用模擬條件", "已固定这条请求,新请求不会打断当前查看": "已固定這條請求,新請求不會打斷當前檢視", "已完成记录": "已完成記錄", "已完成请求时间范围": "已完成請求時間範圍", "已尝试": "已嘗試", "已尝试 · 失败": "已嘗試 · 失敗", "已用时": "已用時", "已禁用账号": "已停用帳號", "已禁用账号 · {n}": "已停用帳號 · {n}", "已解除 {n} 条会话粘滞": "已解除 {n} 筆工作階段黏著", "已记录 {n} 次尝试": "已記錄 {n} 次嘗試", "已跳过": "已跳過", "已转换为账号启停,独立路由参与名单保持不变": "已轉換為帳號啟停,獨立路由參與名單保持不變", "平均耗时": "平均耗時", "并发已满": "已達同時處理上限", "序号表示先后,不是提供商之间互相转发": "序號表示先後,不是提供商之間互相轉發", "应用到草稿": "應用到草稿", "开始 {start} · 响应 {response} · 结束 {finish}": "開始 {start} · 響應 {response} · 結束 {finish}", "开始于 +{time}": "開始於 +{time}", "开始时间": "開始時間", "当前全局路由使用固定参与名单,新增提供商不会自动加入。": "目前全域路由使用固定參與名單,新增提供商不會自動加入。", "当前可用队首": "當前可用隊首", "当前承载": "當前承載", "当前有效顺位以路由预演为准,不改变保存的配置优先级。": "目前有效順位以路由預演為準,不改變已儲存的設定優先順序。", "当前档位不保留跨请求粘滞,因此没有活跃绑定。": "目前模式不保留跨請求黏著,因此沒有有效綁定。", "当前模型": "當前模型", "当前模型使用独立顺序,不受全局自动消耗排序影响。删除独立路由后会重新跟随账号页。": "目前模型使用獨立順序,不受全域自動消耗排序影響。刪除獨立路由後會重新跟隨帳號頁。", "当前模型使用独立顺序,不受全局自动消耗排序影响。恢复继承后会重新跟随账号页。": "目前模型使用獨立順序,不受全域自動消耗排序影響。恢復繼承後會重新跟隨帳號頁。", "当前模型没有对应的账号,请先添加账号或检查模型绑定。": "目前模型沒有對應的帳號,請先新增帳號或檢查模型綁定。", "当前模型配置独立保存,不影响全局和其他模型。": "目前模型設定獨立儲存,不影響全域和其他模型。", "当前没有参与账号,保存后这个范围可能无法承载新请求。": "當前沒有參與帳號,儲存後這個範圍可能無法承載新請求。", "当前没有可沿用的粘滞绑定": "當前沒有可沿用的粘滯繫結", "当前空闲": "當前空閒", "当前绑定:{account},剩余 {time}": "當前繫結:{account},剩餘 {time}", "当前继承全局。改成模型独立配置后,改动只影响这个模型。": "當前繼承全域。改成模型獨立配置後,改動隻影響這個模型。", "当前继承全局固定名单;新增提供商需手动添加或在全局配置中改为自动参与。": "目前繼承全域固定名單;新增提供商需手動新增或在全域設定中改為自動參與。", "当前继承全局,修改前先切到独立配置": "當前繼承全域,修改前先切到獨立配置", "当前继承全局,切换到独立配置后只修改本模型。": "當前繼承全域,切換到獨立配置後只修改本模型。", "当前网关尚不支持全局账号启停,请更新网关后重新读取。": "目前閘道器尚不支援全域帳號啟停,請更新閘道器後重新讀取。", "当前范围内没有请求": "當前範圍內沒有請求", "当前范围的提供商都没有账号,先在账号页添加": "當前範圍的提供商都沒有帳號,先在帳號頁新增", "当前视图没有活跃会话粘滞": "目前檢視沒有有效的工作階段黏著", "当前视图没有路由回放记录": "目前檢視沒有路由重播紀錄", "当前视图的请求入口": "目前檢視的請求入口", "当前请求": "目前請求", "当前路由位置": "目前路由位置", "当前路由内的视觉模型": "當前路由內的視覺模型", "当前配置": "當前配置", "当前配置已排除": "當前配置已排除", "当时": "當時", "当时可用,当前请求尚未轮到这个账号": "當時可用,當前請求尚未輪到這個帳號", "当时可选的账号 · {n}": "當時可選的帳號 · {n}", "当时状态": "當時狀態", "当时的候选说明": "當時的候選說明", "当时的成员模型": "當時的成員模型", "当时的选路原因未记录": "當時的選路原因未記錄", "当时被候选过滤规则跳过": "當時被候選過濾規則跳過", "当时配置": "當時設定", "当时配置与当前配置": "當時設定與目前設定", "影响继承全局的模型": "影響繼承全域的模型", "怎么选账号": "怎麼選帳號", "思考等级 {value}": "思考等級 {value}", "总耗时": "總耗時", "总计 {n} tokens": "總計 {n} tokens", "恢复": "恢復", "恢复全局继承": "恢復全域繼承", "恢复按账号页面的全局优先级选路,解除全局视图的提供商和账号范围限制。模型独立配置不会改变。": "恢復按帳號頁面的全域優先順序選路,解除全域檢視的提供商和帳號範圍限制。模型獨立設定不會改變。", "恢复提供商": "恢復提供商", "恢复路由提供商": "恢復路由提供商", "恢复阈值": "恢復門檻", "恢复默认路由": "恢復預設路由", "成功承载": "成功承載", "成员内轮询": "成員內輪詢", "成员模型": "成員模型", "所有可用提供商自动参与,新增账号或插件后无需再加路由;明确停用的保持不变。": "所有可用提供商自動參與,新增帳號或外掛後無需再加路由;明確停用的保持不變。", "所有可用提供商自动参与,新增账号或插件后无需再添加路由。已停用的提供商和已排除的账号保持不变。": "所有可用提供商自動參與,新增帳號或外掛後無需再新增路由。已停用的提供商和已排除的帳號保持不變。", "所有可用提供商都已在当前路由中": "所有可用提供商都已在目前路由中", "所有模型共用": "所有模型共用", "所有模型共用路由策略与保护设置;全局顺序和消耗规则与账号页联动,模型独立配置可明确覆盖顺序。": "所有模型共用路由策略與保護設定;全域順序和消耗規則與帳號頁連動,模型獨立設定可明確覆蓋順序。", "打开完整请求详情": "開啟完整請求詳細資料", "打开该模型配置": "開啟該模型配置", "执行耗时": "執行耗時", "执行记录": "執行記錄", "执行路径": "執行路徑", "执行路径按当时快照保留": "執行路徑按當時快照保留", "批量禁用账号": "批次停用帳號", "承载账号": "承載帳號", "把不同提供商、不同模型组合成一个入口。客户端使用对外模型 ID 发起请求。": "把不同提供商、不同模型組合成一個入口。客戶端使用對外模型 ID 發起請求。", "把全局配置复制成这个模型的独立配置": "把全域配置複製成這個模型的獨立配置", "拖动卡片改顺位,勾选决定参与;这里的位置就是实际选路顺序。": "拖動卡片改順位,勾選決定參與;這裡的位置就是實際選路順序。", "拖动或按 Alt + 方向键调整顺序": "拖動或按 Alt + 方向鍵調整順序", "拖动把手或按 Alt + 方向键调整顺序,更多操作在右侧菜单。": "拖動把手或按 Alt + 方向鍵調整順序,更多操作在右側選單。", "拖动把手调整顺序,也可以使用右侧上下按钮。": "拖動把手調整順序,也可以使用右側上下按鈕。", "拖动提供商与账号调整顺序,修改即时保存。": "拖曳提供商與帳號調整順序,修改即時儲存。", "拖动改顺位、勾选决定参与;这里的位置就是实际选路顺序。": "拖動改順位、勾選決定參與;這裡的位置就是實際選路順序。", "拖动调整提供商顺序": "拖曳調整提供商順序", "拖动调整账号顺序": "拖曳調整帳號順序", "按客户端类型聚合": "按客戶端型別聚合", "按已保存配置": "按已儲存配置", "按当前草稿预演,不发送请求,不消耗额度。": "按當前草稿預演,不傳送請求,不消耗額度。", "按当前视图的顺序参与选路": "按目前檢視的順序參與選路", "按此范围查看配置": "按此範圍檢視配置", "按步骤回放,不重新发送请求": "按步驟回放,不重新發送請求", "按请求开始时的顺位": "按請求開始時的順位", "按请求模型选择": "按請求模型選擇", "按路径聚合,会话在列表中展开,不在画布逐条连线。": "按路徑聚合,會話在列表中展開,不在畫布逐條連線。", "排除": "排除", "接住": "接住", "接管模型": "接管模型", "提供商与账号": "提供商與帳號", "提供商保持优先顺序,同一提供商的账号轮流承接。": "提供商維持優先順序,同一提供商的帳號輪流承接。", "提供商参与": "提供商參與", "提供商参与方式": "提供商參與方式", "提供商参与方式改为{value}": "提供商參與方式改為{value}", "提供商参与范围": "提供商參與範圍", "提供商未参与": "提供商未參與", "提供商未记录": "提供商未記錄", "提供商范围": "提供商範圍", "提供商路由设置": "提供商路由設定", "搜索会话或账号": "搜尋會話或帳號", "搜索客户端、模型或账号": "搜尋客戶端、模型或帳號", "搜索提供商或模型": "搜尋提供商或模型", "搜索提供商或账号": "搜尋提供商或帳號", "搜索本页会话或账号": "搜尋本頁會話或帳號", "搜索模型": "搜尋模型", "搜索模型、账号或会话来源": "搜尋模型、帳號或工作階段來源", "搜索模型或请求 ID": "搜尋模型或請求 ID", "搜索请求、模型或账号": "搜尋請求、模型或帳號", "搜索路由配置": "搜尋路由配置", "撤销修改": "撤銷修改", "撤销草稿": "撤銷草稿", "收起其他候选": "收起其他候選", "改为独立配置": "改為獨立配置", "改为自动参与": "改為自動參與", "改用": "改用", "放到第 {n} 位": "放到第 {n} 位", "放大画布": "放大畫布", "整体接管": "整體接管", "整次请求交给视觉模型": "整次請求交給視覺模型", "整次请求改交": "整次請求改交", "文本对话": "文本對話", "新增可用提供商会自动参与;这里只需恢复曾明确停用的提供商。": "新增可用提供商會自動參與;這裡只需恢復曾明確停用的提供商。", "新增提供商自动参与;移出本路由的不会自动加回。": "新增提供商自動參與;移出本路由的不會自動加回。", "新增模型": "新增模型", "新增模型独立路由": "新增模型獨立路由", "新增模型独立配置": "新增模型獨立配置", "新增路由配置": "新增路由設定", "新建路由组": "新建路由組", "新配置 · 保存后生效": "新配置 · 儲存後生效", "无可用账号": "無可用帳號", "无有效绑定": "無有效繫結", "时间相对请求开始;历史只读,修改当前配置不会改变这条记录。": "時間相對請求開始;歷史只讀,修改當前配置不會改變這條記錄。", "时间相对请求开始;未记录的旧数据不补算。历史只读,修改当前配置不会改变这条记录。": "時間相對請求開始;未記錄的舊資料不補算。歷史只讀,修改當前配置不會改變這條記錄。", "时间相对请求开始;未记录的旧数据不补算。响应到达不等于流式请求结束。": "時間相對請求開始;未記錄的舊資料不補算。響應到達不等於流式請求結束。", "是": "是", "显示全部": "顯示全部", "显示其他候选": "顯示其他候選", "显示无账号 ({n})": "顯示無帳號 ({n})", "暂停": "暫停", "暂无可用账号": "暫無可用帳號", "暂未支持": "暫未支援", "曾被限流的账号暂时排到队尾,三十分钟后或转发成功后恢复。": "曾受流量限制的帳號暫時排到佇列末端,三十分鐘後或轉送成功後恢復。", "最早到期的剩余积分包:{time}": "最早到期的剩餘積分包:{time}", "最终承载": "最終承載", "最终由 {account} 承接": "最終由 {account} 承接", "最近 {n} 分钟": "最近 {n} 分鐘", "最近 {n} 条": "最近 {n} 條", "最近使用:{time}": "最近使用:{time}", "最近命中": "最近命中", "最近完成": "最近完成", "最近没有命中记录": "最近沒有命中記錄", "最近请求已完成": "最近請求已完成", "有在途": "有在途", "有未保存修改,预演仍按已保存配置。": "有未儲存修改,預演仍按已儲存配置。", "有未保存的修改": "有未儲存的修改", "未保存完整尝试明细,仅显示请求记录中的承载信息。": "未儲存完整嘗試明細,僅顯示請求記錄中的承載資訊。", "未保存草稿": "未儲存草稿", "未切换": "未切換", "未参与": "未參與", "未参与提供商 · {n}": "未參與提供商 · {n}", "未参与提供商默认收起;选中历史路径时仍会显示。": "未參與提供商預設收起;選中歷史路徑時仍會顯示。", "未参与本范围": "未參與本範圍", "未参与本路由": "未參與本路由", "未发生切换": "未發生切換", "未记录上游调用": "未記錄上游呼叫", "未识别客户端": "未識別客戶端", "未调用": "未呼叫", "未调用不画请求线;模型限流与当前配置分别展示。": "未呼叫不畫請求線;模型限流與當前配置分別展示。", "未调用的候选": "未呼叫的候選", "未轮到": "未輪到", "未选择客户端": "未選擇客戶端", "未选择模型": "未選擇模型", "未配置模型": "未配置模型", "未配置模型的默认路由": "未設定模型的預設路由", "本地网关": "本機閘道器", "本次尝试失败": "本次嘗試失敗", "本次执行": "本次執行", "本次状态": "本次狀態", "本次用时": "本次用時", "本次结果": "本次結果", "本次耗时": "本次耗時", "本次请求": "本次請求", "本次请求已完成": "本次請求已完成", "本窗口未调用": "本視窗未呼叫", "本轮选路预演": "本輪選路預演", "来源未记录": "來源未記錄", "查看上游错误": "檢視上游錯誤", "查看上游错误摘要": "檢視上游錯誤摘要", "查看其他 {n} 个候选": "查看其他 {n} 個候選", "查看实际请求的选路、尝试与结果": "檢視實際請求的選路、嘗試與結果", "查看当前配置": "查看目前設定", "查看最后一次尝试": "檢視最後一次嘗試", "查看详情内容": "檢視詳情內容", "查看配置": "檢視配置", "查看配置详情": "查看設定詳情", "标题模型": "標題模型", "标题模型失败时": "標題模型失敗時", "标题生成": "標題生成", "标题生成路由入口尚未就绪,请刷新页面后重试": "標題生成路由入口尚未就緒,請重新整理頁面後再試。", "标题请求": "標題請求", "检测到旧版全局参与设置,请先确认转换,再管理账号启停。": "偵測到舊版全域參與設定,請先確認轉換,再管理帳號啟停。", "模型、网关、提供商与账号的可视化选路": "模型、閘道器、提供商與帳號的視覺化選路", "模型不支持图片": "模型不支援圖片", "模型改写": "模型改寫", "模型未记录": "模型未記錄", "模型独立路由": "模型獨立路由", "模型独立配置": "模型獨立設定", "模型看不了图片时,按下面的规则交给视觉模型;没配到的模型、以及本来就能看图的,一律原样放行。": "模型看不了圖片時,按下面的規則交給視覺模型;沒配到的模型、以及本來就能看圖的,一律原樣放行。", "模型绑定不可用": "模型綁定無法使用", "模型路由": "模型路由", "模拟首选失败": "模擬首選失敗", "正在处理": "正在處理", "正在由 {account} 处理": "正在由 {account} 處理", "正在编辑": "正在編輯", "正在读取会话绑定…": "正在讀取工作階段綁定…", "正在读取当前配置": "正在讀取目前設定", "正在读取路由…": "正在讀取路由…", "正在选路,尚未记录上游尝试": "正在選路,尚未記錄上游嘗試", "正在预览 {model}": "正在預覽 {model}", "此为配置顺位,当前没有可用候选账号。": "此為設定順位,目前沒有可用候選帳號。", "此入口没有参与路由的提供商,保存后请求将明确失败。": "此入口沒有參與路由的提供商,儲存後請求將明確失敗。", "此入口没有参与路由的账号。保存后请求将明确失败,不会回退全局或自动恢复参与名单。": "此入口沒有參與路由的帳號。儲存後請求將明確失敗,不會回退全域或自動恢復參與名單。", "此刻队列": "此刻佇列", "此提供商当前没有可用的模型绑定,配置已保留;在模型管理中恢复绑定后会自动回来。": "此提供商目前沒有可用的模型綁定,設定已保留;在模型管理中恢復綁定後會自動重新顯示。", "此模型限流": "此模型限流", "每轮重新选路,不保留跨请求的账号绑定。": "每輪重新選路,不保留跨請求的帳號綁定。", "没有保存其他候选信息": "沒有儲存其他候選資訊", "没有保存调用明细": "沒有儲存呼叫明細", "没有其他候选账号": "沒有其他候選帳號", "没有匹配的会话": "沒有符合的工作階段", "没有匹配的候选": "沒有匹配的候選", "没有匹配的提供商或账号": "沒有符合的提供商或帳號", "没有匹配的记录": "沒有匹配的記錄", "没有匹配的请求": "沒有匹配的請求", "没有匹配的路由配置": "沒有匹配的路由配置", "没有参与路由的账号": "沒有參與路由的帳號", "没有可添加的模型": "沒有可新增的模型", "没有可用提供商,请先添加账号或安装插件。": "沒有可用提供商,請先新增帳號或安裝外掛。", "没有可用模型": "沒有可用模型", "没有可用账号": "沒有可用帳號", "没有可选的对话模型,请先启用模型和对应账号。": "沒有可選的對話模型,請先啟用模型和對應帳號。", "没有独立配置的模型沿用全局路由。": "沒有獨立設定的模型沿用全域路由。", "没有请求也能配置路由": "沒有請求也能配置路由", "没有跳过": "沒有跳過", "没有配到的模型、以及本来就能看图的模型,一律原样放行。": "沒有配到的模型、以及本來就能看圖的模型,一律原樣放行。", "没有需要恢复的提供商": "沒有需要恢復的提供商", "沿用工具服务的视觉模型": "沿用工具服務的視覺模型", "流动:有请求在途": "流動:有請求在途", "消耗规则": "消耗規則", "消耗规则已保存,但路由列表刷新失败:{error}": "消耗規則已儲存,但路由清單重新整理失敗:{error}", "添加到全局路由,新请求将按这里的顺序选择账号。": "新增至全域路由,新請求將按這裡的順序選擇帳號。", "添加到固定参与名单;以后新增的提供商仍需手动加入。": "新增至固定參與名單;以後新增的提供商仍需手動加入。", "添加参与模型": "新增參與模型", "添加规则": "新增規則", "添加路由提供商": "新增路由提供商", "清空选择": "清除選取", "清除会话粘滞": "清除工作階段黏著", "灰线:历史流量": "灰線:歷史流量", "点击查看这次尝试的结果与原因": "點擊檢視這次嘗試的結果與原因", "点击节点查看请求,点击齿轮编辑路由配置。": "點擊節點檢視請求,點擊齒輪編輯路由配置。", "点击节点筛选,点击齿轮进入配置": "點擊節點篩選,點擊齒輪進入配置", "点击节点,切换到对应请求详情": "點擊節點,切換到對應請求詳情", "点客户端看它用过的模型": "點客戶端看它用過的模型", "点模型看它的请求": "點模型看它的請求", "点节点筛选,再点一次取消;点齿轮进入配置": "點節點篩選,再點一次取消;點齒輪進入配置", "熔断保护": "斷路器保護", "特殊请求路由": "特殊請求路由", "特殊请求路由 · 只改写模型,不改选账号规则": "特殊請求路由 · 只改寫模型,不改選帳號規則", "独立": "獨立", "独立账号顺序": "獨立帳號順序", "独立路由": "獨立路由", "独立路由的账号顺序不受全局消耗规则影响": "獨立路由的帳號順序不受全域消耗規則影響", "独立配置": "獨立設定", "画布位置不改变选路优先级": "畫布位置不改變選路優先順序", "直接报错": "直接報錯", "真实请求还会考虑当时的会话绑定、并发与限额状态。": "真實請求還會考慮當時的會話繫結、併發與限額狀態。", "确定删除「{model}」的独立路由配置?删除后该模型将使用全局路由。不会删除模型、账号或请求记录。": "確定刪除「{model}」的獨立路由設定?刪除後該模型將使用全域路由。不會刪除模型、帳號或請求紀錄。", "确认转换": "確認轉換", "禁用全部账号": "停用全部帳號", "禁用当前列表账号": "停用目前清單中的帳號", "禁用账号": "停用帳號", "积分到期:暂无数据": "積分到期:暫無資料", "积分:{time}": "積分:{time}", "移出": "移出", "移出本路由": "移出本路由", "移除此模型的独立路由配置,之后重新继承全局路由。不会删除模型、账号或请求记录。": "移除此模型的獨立路由設定,之後重新繼承全域路由。不會刪除模型、帳號或請求紀錄。", "移除路由提供商": "移除路由提供商", "窗口内无请求": "視窗內無請求", "第 {n} 位": "第 {n} 位", "第 {n} 次尝试 · {name}": "第 {n} 次嘗試 · {name}", "第 {n} 顺位": "第 {n} 順位", "等待回放": "等待回放", "等待首帧": "等待首幀", "策略": "策略", "筛选模型": "篩選模型", "粘性命中": "黏著命中", "粘性:{mode}": "黏著:{mode}", "粘滞": "粘滯", "粘滞 {mode}": "粘滯 {mode}", "粘滞命中": "粘滯命中", "粘滞标记": "粘滯標記", "组名": "組名", "组名方便识别,对外模型 ID 给客户端使用。": "組名方便識別,對外模型 ID 給客戶端使用。", "经过 {n} 次切换后成功,最终承载:{account}": "經過 {n} 次切換後成功,最終承載:{account}", "绑定:{account}": "繫結:{account}", "结束时间": "結束時間", "结果未记录": "結果未記錄", "统一路由设置": "統一路由設定", "统一路由设置已保存": "統一路由設定已儲存", "继承": "繼承", "继承全局": "繼承全域", "继承全局配置": "繼承全域設定", "继承全局:{value}": "繼承全域:{value}", "继承时不能改这里的值;切到独立配置后才会写入这个模型。": "繼承時不能改這裡的值;切到獨立配置後才會寫入這個模型。", "编辑全局默认": "編輯全域預設", "编辑范围": "編輯範圍", "编辑规则": "編輯規則", "编辑路由组": "編輯路由組", "缩小画布": "縮小畫布", "网关继续尝试下一个账号": "閘道器繼續嘗試下一個帳號", "耗时未记录": "耗時未記錄", "自动参与": "自動參與", "自动参与模式下将明确停用此提供商,之后新增账号也不会自动恢复;不会删除提供商或账号。": "自動參與模式下將明確停用此提供商,之後新增帳號也不會自動恢復;不會刪除提供商或帳號。", "自动参与(推荐)": "自動參與(推薦)", "自动消耗排序已启用,请先关闭规则再手动调整": "自動消耗排序已啟用,請先關閉規則再手動調整", "自动:空闲五分钟释放;会话内:空闲六小时释放;每轮或关闭:不保留跨请求绑定。": "自動:空閒五分鐘釋放;會話內:空閒六小時釋放;每輪或關閉:不保留跨請求繫結。", "自动:空闲五分钟释放;会话内:空闲六小时;每轮或关闭:不跨请求绑定。": "自動:空閒五分鐘釋放;會話內:空閒六小時;每輪或關閉:不跨請求繫結。", "自定义路由组": "自定義路由組", "草稿预演": "草稿預演", "被跳过": "被跳過", "被跳过的账号": "被略過的帳號", "规则": "規則", "规则全局生效,不受原路由池限制;指定模型按自己的路由选账号,网关 Key 权限仍然生效。": "規則全域生效,不受原路由池限制;指定模型按自己的路由選帳號,閘道器 Key 權限仍然生效。", "规则最多 {n} 条。": "規則最多 {n} 條。", "视觉模型接管": "視覺模型接管", "视频输入": "影片輸入", "解除": "解除", "解除全局路由的参与范围限制,继续使用与账号页共用的手动顺序和自动消耗规则;模型独立配置保持不变。": "解除全域路由的參與範圍限制,繼續使用與帳號頁共用的手動順序和自動消耗規則;模型獨立設定保持不變。", "解除全部粘滞": "解除全部黏著", "解除只清除网关的账号绑定,不删除聊天历史、不关闭粘性设置。后续成功请求仍可建立新的绑定;重启网关会清空这些进程本地记录。": "解除只清除閘道器的帳號綁定,不刪除聊天歷史、不關閉黏著設定。後續成功請求仍可建立新的綁定;重新啟動閘道器會清空這些處理程序內的紀錄。", "解除当前模型全部粘滞": "解除目前模型的全部黏著", "解除所有模型的全部会话粘滞。不会终止在途请求,之后的请求会重新选路。": "解除所有模型的全部工作階段黏著。不會終止處理中的請求,之後的請求會重新選路。", "解除这个模型的全部会话粘滞。不会终止在途请求,之后的请求会重新选路。": "解除這個模型的全部工作階段黏著。不會終止處理中的請求,之後的請求會重新選路。", "解除这条会话": "解除這筆工作階段", "触发": "觸發", "触发客户端": "觸發客戶端", "计算中…": "計算中…", "记录所有经过网关的请求,不要求绑定客户端。": "記錄所有經過閘道器的請求,不要求繫結客戶端。", "记录时间": "記錄時間", "设置参与范围": "設定參與範圍", "识别": "識別", "识别客户端": "識別客戶端", "该提供商在当前视图中已停用": "該提供商在目前檢視中已停用", "该提供商没有账号,请先到账号页添加。": "該提供商沒有帳號,請先到帳號頁新增。", "请填写组名和对外模型 ID": "請填寫組名和對外模型 ID", "请检查熔断参数:失败阈值 1~20,时长 10~600 秒,恢复阈值 1~10。": "請檢查斷路器參數:失敗門檻 1~20,時間 10~600 秒,恢復門檻 1~10。", "请求": "請求", "请求 ID 未记录": "請求 ID 未記錄", "请求仍在处理中,当前阶段:{phase}": "請求仍在處理中,當前階段:{phase}", "请求仍在进行": "請求仍在進行", "请求会去哪里": "請求會去哪裡", "请求回放": "請求回放", "请求在途": "請求在途", "请求完成不代表会话关闭;粘滞有效期不是在线状态。": "請求完成不代表會話關閉;粘滯有效期不是線上狀態。", "请求已取消": "請求已取消", "请求当时的配置": "請求當時的配置", "请求成功完成,未发生账号切换": "請求成功完成,未發生帳號切換", "请求成功完成,未记录承载账号": "請求成功完成,未記錄承載帳號", "请求执行": "請求執行", "请求执行回放": "請求執行回放", "请求日志 →": "請求日誌 →", "请求未成功完成": "請求未成功完成", "请求模型": "請求模型", "请求活动范围": "請求活動範圍", "请求状态": "請求狀態", "请求结论": "請求結論", "请求范围": "請求範圍", "请求记录数据库不可用": "請求紀錄資料庫無法使用", "请求跟踪": "請求跟蹤", "请求跟踪内容": "請求跟蹤內容", "请求进入": "請求進入", "请求进入网关": "請求進入閘道器", "请求需要": "請求需要", "请选择模型": "請選擇模型", "读取中…": "讀取中…", "读图结果交回原模型继续回答": "讀圖結果交回原模型繼續回答", "谁参与及先后顺序": "誰參與及先後順序", "调整全局消耗规则": "調整全域消耗規則", "调整到期时间、可用余额及其他消耗规则的优先级": "調整到期時間、可用餘額及其他消耗規則的優先級", "调整后续请求的配置": "調整後續請求的配置", "调整模型顺序": "調整模型順序", "调整积分到期远近及其他消耗规则": "調整積分到期遠近及其他消耗規則", "调用示例": "呼叫示例", "账号 {name} 已{state}": "帳號 {name} 已{state}", "账号全部禁用": "帳號全部停用", "账号启停与账号页同步,立即影响所有路由;策略与排序需保存。": "帳號啟停與帳號頁同步,立即影響所有路由;策略與排序需儲存。", "账号启停与默认规则": "帳號啟停與預設規則", "账号启停操作": "帳號啟停操作", "账号启停立即生效;路由配置保存后生效": "帳號啟停立即生效;路由設定儲存後生效", "账号启停部分完成:成功 {ok} 个,失败 {fail} 个,跳过 {skip} 个。{details}": "帳號啟停部分完成:成功 {ok} 個,失敗 {fail} 個,略過 {skip} 個。{details}", "账号尝试": "帳號嘗試", "账号已禁用": "帳號已停用", "账号已移除": "帳號已移除", "账号操作": "帳號操作", "账号未记录": "帳號未記錄", "账号组": "帳號組", "账号组操作": "帳號群組操作", "账号设置与全局保护另行保存,不属于本页路由草稿。": "帳號設定與全域保護另行儲存,不屬於本頁路由草稿。", "账号设置与所有路由共用,不改变当前路由的参与名单。": "帳號設定與所有路由共用,不改變目前路由的參與名單。", "账号路由设置": "帳號路由設定", "起点是请求本身,不依赖客户端绑定。": "起點是請求本身,不依賴客戶端繫結。", "跟随列表中的最新请求": "跟隨列表中的最新請求", "跨模型组合": "跨模型組合", "路径": "路徑", "路径过多,画布仅展示前 300 条;统计覆盖完整窗口,请筛选模型缩小范围。": "路徑過多,畫布僅展示前 300 條;統計覆蓋完整視窗,請篩選模型縮小範圍。", "路由入口": "路由入口", "路由参与操作": "路由參與操作", "路由工作台": "路由工作臺", "路由工作台不可用": "路由工作區無法使用", "路由快照未记录": "路由快照未記錄", "路由成员操作": "路由成員操作", "路由接口不可用,请确认网关与界面已更新": "路由 API 無法使用,請確認閘道器與介面已更新", "路由接口返回了不完整的数据": "路由 API 回傳了不完整的資料", "路由数据正在更新,请稍后重试": "路由資料正在更新,請稍後重試", "路由模式": "路由模式", "路由画布": "路由畫布", "路由策略改为{value}": "路由策略改為{value}", "路由类型": "路由類型", "路由组": "路由群組", "路由组已删除": "路由群組已刪除", "路由视图": "路由檢視", "路由设置": "路由設定", "路由配置": "路由配置", "路由配置列表": "路由配置列表", "路由配置尚未读取": "路由設定尚未讀取", "路由配置已保存": "路由設定已儲存", "路由配置已保存,仅影响后续选路": "路由配置已儲存,僅影響後續選路", "路由配置操作": "路由配置操作", "路由配置版本不可用,请更新网关后重试": "路由配置版本不可用,請更新閘道器後重試", "跳过候选": "跳過候選", "转发前就失败、或旧记录未落库时,只能看到请求本身与配置快照。": "轉發前就失敗、或舊記錄未落庫時,只能看到請求本身與配置快照。", "转发失败的账号暂时休息,避免连续请求反复撞到同一故障。": "轉送失敗的帳號暫時休息,避免連續請求反覆遇到同一故障。", "转换只处理当前账号;之后新增账号按账号页的启用状态使用。不会启用任何已禁用的账号。": "轉換只處理目前帳號;之後新增帳號按帳號頁的啟用狀態使用。不會啟用任何已停用的帳號。", "转换旧版全局参与设置": "轉換舊版全域參與設定", "转换旧版设置": "轉換舊版設定", "转换结果未确认,请重新读取全局配置": "轉換結果未確認,請重新讀取全域設定", "辅助识图 · {n} 次读图": "輔助識圖 · {n} 次讀圖", "辅助识图 · 接管": "輔助識圖 · 接管", "输出 {n} tokens": "輸出 {n} tokens", "过程提示": "過程提示", "运行视图": "執行檢視", "近期 {n} 次请求": "近期 {n} 次請求", "返回全部流向": "返回全部流向", "返回列表": "返回列表", "返回实时": "返回即時", "返回画布": "返回畫布", "还有 {n} 处": "還有 {n} 處", "还没有参与模型": "還沒有參與模型", "还没有参与路由的提供商": "尚無參與路由的提供商", "还没有可用模型,先在账号页添加账号": "還沒有可用模型,先在帳號頁新增帳號", "还没有可用的模型,请先启用模型和对应账号。": "還沒有可用的模型,請先啟用模型和對應帳號。", "还没有规则。压缩请求会按原模型照常转发。": "還沒有規則。壓縮請求會按原模型照常轉發。", "还没有规则。图片会照常交给原模型,看不了的就会报错。": "還沒有規則。圖片會照常交給原模型,看不了的就會報錯。", "还没有规则。标题请求会照常交给原模型。": "還沒有規則。標題請求會照常交給原模型。", "还没有账号,先在账号页添加;有账号的提供商才会出现在这里": "還沒有帳號,先在帳號頁新增;有帳號的提供商才會出現在這裡", "还没选压缩模型": "還沒選壓縮模型", "还没选原模型": "還沒選原模型", "还没选标题模型": "還沒選標題模型", "还没选视觉模型": "還沒選視覺模型", "这一页改的只作用于当前范围": "這一頁改的只作用於當前範圍", "这个客户端目前没有可识别的标题请求": "這個客戶端目前沒有可識別的標題請求", "这个范围内最近的请求。点一条看它当时是怎么选的账号。": "這個範圍內最近的請求。點一條看它當時是怎麼選的帳號。", "这个范围怎么选账号": "這個範圍怎麼選帳號", "这些设置由所有模型共用;提供商与账号的参与范围和顺序在各自视图中独立配置。": "這些設定由所有模型共用;提供商與帳號的參與範圍和順序在各自檢視中獨立設定。", "这份记录来自实际请求,不使用当前账号队列重新推演。": "這份記錄來自實際請求,不使用當前帳號佇列重新推演。", "这是请求当时保存的选路快照,修改当前路由不会改变这份记录。": "這是請求當時儲存的選路快照,修改目前路由不會改變這份紀錄。", "这条会话已解除或过期,不再有活跃绑定。": "這筆工作階段已解除或到期,不再有有效綁定。", "这条规则只改写被识别为标题生成的小请求,普通对话不受影响。": "這條規則只改寫被識別為標題生成的小請求,普通對話不受影響。", "这条规则里的模型收到图片时按选定的方式处理;没被任何规则选中的模型一律原样放行。": "這條規則裡的模型收到圖片時按選定的方式處理;沒被任何規則選中的模型一律原樣放行。", "这条请求使用的路由组已删除,当时的快照仍可查看": "這筆請求使用的路由群組已刪除,當時的快照仍可查看", "这条请求对应的会话当前仍绑定到「{account}」。": "這筆請求對應的工作階段目前仍綁定至「{account}」。", "这条请求没有保存上游尝试明细": "這條請求沒有儲存上游嘗試明細", "这条请求没有保存路由决策": "這筆請求沒有儲存路由決策", "这条请求没有保存路由快照,仍可查看已有的请求和尝试信息。": "這條請求沒有儲存路由快照,仍可檢視已有的請求和嘗試資訊。", "这次尝试的结果": "這次嘗試的結果", "这里只决定是否参与本路由,不改变账号启用状态。": "這裡只決定是否參與本路由,不改變帳號啟用狀態。", "这里的参与范围只影响当前视图;账号启停、并发和限制器属于账号本身,所有模型共用。": "這裡的參與範圍只影響目前檢視;帳號啟停、同時處理和限制器屬於帳號本身,所有模型共用。", "这里的顺序决定实际选路;画布只为查看请求调整位置。": "這裡的順序決定實際選路;畫布只為檢視請求調整位置。", "这里调整的是账号组的全局消耗规则;当前独立路由的账号顺序保持不变。": "這裡調整的是帳號群組的全域消耗規則;目前獨立路由的帳號順序保持不變。", "连线表示参与本路由": "連線表示參與本路由", "连线表示账号组中有已启用账号": "連線表示帳號群組中有已啟用帳號", "连续失败达到阈值时暂时让位,恢复后再重新参与。": "連續失敗達到門檻時暫時讓位,恢復後再重新參與。", "退回原模型": "退回原模型", "退避 {time}": "退避 {time}", "选中": "已選取", "选中流量详情": "選中流量詳情", "选中路径": "選中路徑", "选择一个或多个客户端": "選擇一個或多個客戶端", "选择一条请求查看执行过程": "選擇一條請求檢視執行過程", "选择一条请求查看选路过程": "選擇一筆請求以檢視選路過程", "选择作用范围后配置路由": "選擇作用範圍後配置路由", "选择左侧请求查看选路过程": "選擇左側請求檢視選路過程", "选择模型": "選擇模型", "选择请求模型后查看具体限流状态": "選擇請求模型後檢視具體限流狀態", "选择账号": "選擇帳號", "选择路由入口": "選擇路由入口", "选择预览模型后查看队列": "選擇預覽模型後檢視佇列", "选路原因未记录": "選路原因未記錄", "选路情况": "選路情況", "选路方式": "選路方式", "选路预演": "選路預演", "逐步回放": "逐步回放", "配置作用范围": "配置作用範圍", "配置第 {rank} 顺位;当前可用候选第 {effective} 顺位。": "設定第 {rank} 順位;目前可用候選第 {effective} 順位。", "配置范围": "設定範圍", "配置该模型": "配置該模型", "配置请求的参与范围与优先顺序": "配置請求的參與範圍與優先順序", "配置项": "設定項目", "配置顺位 {n}": "配置順位 {n}", "重新读取": "重新讀取", "重新读取会丢弃当前范围的未保存草稿,其他范围的草稿保留。": "重新讀取會丟棄當前範圍的未儲存草稿,其他範圍的草稿保留。", "重新读取配置": "重新讀取配置", "队列为无会话预演;实际粘性命中和重试顺延以回放为准。": "佇列是不含工作階段黏著的預演;實際黏著命中與重試順延以重播為準。", "队首": "佇列首位", "阶段 {phase} · 已进行 {time}": "階段 {phase} · 已進行 {time}", "限制器跳过": "限制器略過", "隐藏无账号 ({n})": "隱藏無帳號 ({n})", "静止蓝线:选中历史路径": "靜止藍線:選中歷史路徑", "顺位": "順位", "顺序修改即时保存,仅作用于当前视图。": "順序修改即時儲存,僅套用於目前檢視。", "顺序调整不会解除限流;有效粘滞优先于普通账号顺序。": "順序調整不會解除限流;有效粘滯優先於普通帳號順序。", "预演首选": "預演首選", "预览模型": "預覽模型", "首帧": "首幀", "首帧 {time}": "首幀 {time}", "首帧耗时": "首幀耗時", "首帧:{time}": "首幀:{time}", "首选账号": "首選帳號", "默认自动参与;新增可用提供商无需再添加路由,明确停用项保持不变。": "預設自動參與;新增可用提供商無需再新增路由,明確停用項保持不變。", "默认规则": "預設規則", "默认路由": "預設路由", "Agent 配置": "Agent 配置", "Claude Code 按 Opus / Sonnet / Haiku / 子 Agent 分档请求模型;这里把每档指向网关目录里的模型,留空表示不改写该档。": "Claude Code 按 Opus / Sonnet / Haiku / 子 Agent 分檔請求模型;這裡把每檔指向閘道器目錄裡的模型,留空表示不改寫該檔。", "Claude Code 支持多模型菜单和逐模型思考等级;上下文及输入能力由客户端识别,不把自动压缩阈值冒充上下文窗口。": "Claude Code 支援多模型選單及逐模型思考等級;上下文與輸入能力由用戶端辨識,不將自動壓縮門檻當成上下文視窗。", "Claude Code 的 Opus / Sonnet / Haiku / 子 Agent 四档默认都指向上面选的模型;要让某一档用别的模型,在这里单独改。": "Claude Code 的 Opus / Sonnet / Haiku / 子 Agent 四檔預設都指向上面選的模型;要讓某一檔用別的模型,在這裡單獨改。", "Codex 的模型目录支持逐模型上下文、图片和思考档位,不提供可写的逐模型输出上限。": "Codex 的模型目錄支援逐模型上下文、圖片及思考等級,沒有可寫入的逐模型輸出上限。", "Crush 需要明确填写输出上限、图片与思考能力": "Crush 需要明確填寫輸出上限、圖片與思考能力", "DSH 配置目标": "DSH 設定目標", "Kimi Code 只能追加能力声明,不能关闭内置识别的能力。输出上限仅新版 Anthropic 协议生效;旧版不写入思考档位。": "Kimi Code 只能新增能力宣告,無法關閉內建辨識的能力。輸出上限僅在新版 Anthropic 協定生效;舊版不寫入思考等級。", "MCP 服务名称": "MCP 服務名稱", "Skill 目录名": "Skill 目錄名", "Token 上限必须是 1 到 1 亿之间的整数": "Token 上限必須是 1 到 1 億之間的整數", "Zed 的 API Key 仍需在客户端提供商设置中填写;本页不修改系统凭证。": "Zed 的 API Key 仍需在客戶端提供商設定中填寫;本頁不修改系統憑證。", "{id}(不在网关目录)": "{id}(不在閘道器目錄)", "· 走网关": "· 走閘道器", "。这里的开关与还原作用在网关所在的机器上。": "。這裡的開關與還原作用在閘道器所在的機器上。", "一键把本机 AI 客户端接到本地网关:改写它自己的配置文件,保留其它设置": "一鍵把本機 AI 客戶端接到本地閘道器:改寫它自己的配置檔案,保留其它設定", "一键接入": "一鍵接入", "一键设置": "一鍵設定", "上下文": "上下文", "上次应用未完整结束,请先查看恢复预览。": "上次應用未完整結束,請先檢視恢復預覽。", "上游模型 id,例如 raccoon-coder-pro": "上游模型 id,例如 raccoon-coder-pro", "下面是这个客户端文件里现有的配置(只读)。点「从客户端导入」把它收进我的配置,之后就能编辑和切换。": "下面是這個客戶端檔案裡現有的配置(只讀)。點「從客戶端匯入」把它收進我的配置,之後就能編輯和切換。", "不写入": "不寫入", "不要添加 /v1/messages;客户端会自行追加请求路径。": "不要新增 /v1/messages;客戶端會自行追加請求路徑。", "与客户端一致": "與客戶端一致", "个 · 已安装": "個 · 已安裝", "中转": "中轉", "仅修改所选 MCP 条目,保留其它配置和注释;保存不会启动服务。": "僅修改所選 MCP 條目,保留其它配置和註釋;儲存不會啟動服務。", "仅可读取": "僅可讀取", "从客户端导入": "從客戶端匯入", "从网关目录选择": "從閘道器目錄選擇", "从网关目录选择模型": "從閘道器目錄選擇模型", "会用最近一次备份覆盖它的配置文件。这一步不会改动你在本页存的配置列表。": "會用最近一次備份覆蓋它的配置檔案。這一步不會改動你在本頁存的配置列表。", "低": "低", "使用中": "使用中", "使用此配置": "使用此配置", "使用此配置时设为默认,其他模型仍可在客户端选择。": "使用此設定時設為預設模型,其他模型仍可在用戶端選擇。", "使用真实模型 ID,不要填写模型展示名。": "使用真實模型 ID,不要填寫模型展示名。", "使用网关 Key": "使用閘道器 Key", "保存会直接修改客户端配置;确认前展示差异,写入前自动备份。": "儲存會直接修改客戶端配置;確認前展示差異,寫入前自動備份。", "保存修改": "儲存修改", "保存只记录方案,不修改客户端。应用时会另外展示文件差异并请求确认。": "儲存只記錄方案,不修改客戶端。應用時會另外展示檔案差異並請求確認。", "保存后可在配置列表中切换,不影响当前使用的配置。": "儲存後可在設定清單中切換,不影響目前使用的設定。", "保存后同步更新客户端;写入前可查看改动,并自动备份。": "儲存後同步更新用戶端;寫入前可查看變更,並自動備份。", "保存方案": "儲存方案", "保存方案不会切换客户端;应用后改变实际默认模型。": "儲存方案不會切換客戶端;應用後改變實際預設模型。", "保存方案不会切换客户端;选择“应用并设为默认”才改变实际默认模型。": "儲存方案不會切換客戶端;選擇“應用並設為預設”才改變實際預設模型。", "保存时自动写入完整的 /chat/completions 路径。": "儲存時自動寫入完整的 /chat/completions 路徑。", "保存路径": "儲存路徑", "保留导入的认证": "保留匯入的認證", "保留现有认证": "保留現有驗證", "修改后点击「使用此配置」才会更新客户端。": "修改後點選「使用此設定」才會更新用戶端。", "停用后将从客户端可选项中关闭此配置,其他配置不受影响。": "停用後將在用戶端選項中關閉此設定,其他設定不受影響。", "停用配置": "停用設定", "全选搜索结果": "全選搜尋結果", "全部配置(全局覆盖)": "全部設定(全域覆寫)", "共": "共", "关闭后丢弃本次修改,不会保存配置或改动客户端。": "關閉後捨棄本次修改,不會儲存設定或改動用戶端。", "关闭后丢弃本次草稿,不会保存空方案,也不会修改客户端。": "關閉後丟棄本次草稿,不會儲存空方案,也不會修改客戶端。", "内容已经一致,无需写入": "內容已經一致,無需寫入", "写入中…": "寫入中…", "写入后需要重开会话才生效": "寫入後需要重開會話才生效", "写入失败:{reason}": "寫入失敗:{reason}", "写入客户端": "寫入客戶端", "写入文件": "寫入檔案", "写入预览": "寫入預覽", "删除 MCP": "刪除 MCP", "删除 Skill": "刪除 Skill", "删除只移除 SKILL.md,辅助文件保留在原目录;不会执行其中的脚本。": "刪除只移除 SKILL.md,輔助檔案保留在原目錄;不會執行其中的指令碼。", "删除客户端配置": "刪除客戶端配置", "删除已保存方案?": "刪除已儲存方案?", "删除新建文件": "刪除新建檔案", "删除方案": "刪除方案", "删除配置": "刪除設定", "删除配置?": "刪除設定?", "动态表达式、独立作用域或全局覆盖的 MCP 为只读,请在 DSH 中编辑。": "使用動態運算式、獨立作用域或全域覆寫的 MCP 為唯讀,請在 DSH 中編輯。", "单配置": "單配置", "单配置文件": "單配置檔案", "另一项配置操作尚未完成": "另一項配置操作尚未完成", "只保存变量引用,不修改系统环境;请在启动客户端的环境里设置变量值。": "只儲存變數引用,不修改系統環境;請在啟動客戶端的環境裡設定變數值。", "只删除 Agent2API 中的方案,不修改客户端当前配置。": "只刪除 Agent2API 中的方案,不修改客戶端當前配置。", "只改 enabled 与默认项,其余条目原样保留": "只改 enabled 與預設項,其餘條目原樣保留", "只改属于我们的那几个键,其它设置原样保留": "只改屬於我們的那幾個鍵,其它設定原樣保留", "可先新增配置,安装后再使用": "可先新增設定,安裝後再使用", "可同时启用多条;切换只改 enabled 与默认项": "可同時啟用多條;切換隻改 enabled 與預設項", "可搜索并多选模型;上下文、输出上限和能力分别从网关目录自动填入。": "可搜尋並多選模型;上下文、輸出上限和能力分別從閘道目錄自動填入。", "可选模型": "可選模型", "同一时刻只有一套生效;写入 = 把这一套整段写进客户端文件": "同一時刻只有一套生效;寫入 = 把這一套整段寫進客戶端檔案", "启用 {name}": "啟用 {name}", "启用此配置": "啟用此設定", "启用配置": "啟用設定", "图形化管理客户端原生配置;保存方案与应用配置分开。": "圖形化管理客戶端原生配置;儲存方案與應用配置分開。", "图片输入": "圖片輸入", "在客户端管理认证": "在客戶端管理認證", "填写服务根地址,不要附加 /v1beta 或 generateContent 路径。": "填寫服務根地址,不要附加 /v1beta 或 generateContent 路徑。", "处理中…": "處理中…", "备注": "備註", "多套配置": "多套配置", "多配置 · 已启用 {n}": "多配置 · 已啟用 {n}", "多配置文件": "多配置檔案", "子 Agent": "子 Agent", "安装或初始化后可重新检测;自定义安装位置可指定配置路径。": "安裝或初始化後可重新檢測;自定義安裝位置可指定配置路徑。", "完整配置文件路径": "完整配置檔案路徑", "官方直连": "官方直連", "客户端列表加载失败:{reason}": "客戶端列表載入失敗:{reason}", "客户端列表响应无效": "客戶端列表響應無效", "客户端协议": "客戶端協議", "客户端原生 MCP 配置(JSON)": "客戶端原生 MCP 配置(JSON)", "客户端原生配置": "客戶端原生配置", "客户端官方配置说明": "客戶端官方配置說明", "客户端实际配置": "客戶端實際配置", "客户端必须实际使用同一个配置文件;本页不改变客户端启动参数。": "客戶端必須實際使用同一個配置檔案;本頁不改變客戶端啟動引數。", "客户端文件已有外部修改,自动恢复会拒绝覆盖。": "客戶端檔案已有外部修改,自動恢復會拒絕覆蓋。", "客户端条目启用状态": "客戶端條目啟用狀態", "客户端清单": "客戶端清單", "客户端管理分类": "客戶端管理分類", "客户端自己的设置优先;这里写的是写入时带进去的初值": "客戶端自己的設定優先;這裡寫的是寫入時帶進去的初值", "客户端资源已保存并校验": "客戶端資源已儲存並校驗", "客户端选项": "用戶端選項", "客户端配置写入后未通过校验": "客戶端配置寫入後未通過校驗", "客户端配置已经一致,无需写入": "客戶端配置已經一致,無需寫入", "客户端默认地址": "客戶端預設地址", "密钥在 Agent2API 中加密保存;使用时按客户端要求写入。": "金鑰在 Agent2API 中加密儲存;使用時依用戶端要求寫入。", "密钥已隐藏;绿色为新增,红色为删除。所有实际写入文件都列在这里。": "金鑰已隱藏;綠色為新增,紅色為刪除。所有實際寫入檔案都列在這裡。", "导入模型及客户端未知字段会保留;本页删除方案不会删除客户端条目。": "匯入模型及客戶端未知欄位會保留;本頁刪除方案不會刪除客戶端條目。", "将删除此配置及客户端中的对应条目,其他配置不受影响。": "將刪除此設定及用戶端中的對應項目,其他設定不受影響。", "尚未初始化": "尚未初始化", "尚未支持这个客户端的资源管理": "尚未支援這個客戶端的資源管理", "展开可调整能力;— 表示客户端未声明": "展開可調整能力;— 表示客戶端未宣告", "已保存": "已儲存", "已保存方案": "已儲存方案", "已保存,未应用": "已儲存,未應用", "已写入 {name}": "已寫入 {name}", "已写入 {name};这个客户端只在启动时读配置,重开一个会话才生效": "已寫入 {name};這個客戶端只在啟動時讀配置,重開一個會話才生效", "已删除保存方案,客户端配置未改动": "已刪除儲存方案,客戶端配置未改動", "已安装": "已安裝", "已导入 {n} 套方案": "已匯入 {n} 套方案", "已按备份还原 {name}": "已按備份還原 {name}", "已收进我的配置:{n} 条": "已收進我的配置:{n} 條", "已检测到": "已檢測到", "已还原「{name}」": "已還原「{name}」", "已选择": "已選擇", "已选模型": "已選模型", "已配置": "已配置", "已预填网关地址、协议、Key 与模型;确认后直接写入客户端,不需要先保存方案。": "已預填閘道器地址、協議、Key 與模型;確認後直接寫入客戶端,不需要先儲存方案。", "应用": "應用", "应用中…": "應用中…", "应用到客户端": "應用到客戶端", "应用并设为默认": "應用並設為預設", "应用时使用当前启用的真实 Key;预览会隐藏密钥。": "應用時使用當前啟用的真實 Key;預覽會隱藏金鑰。", "当前环境不支持保存": "當前環境不支援儲存", "当前环境不支持保存(桥接方法缺失)": "當前環境不支援儲存(橋接方法缺失)", "当前环境不支持写入(桥接方法缺失)": "當前環境不支援寫入(橋接方法缺失)", "当前环境不支持客户端接管(桥接方法缺失)": "當前環境不支援客戶端接管(橋接方法缺失)", "当前环境不支持客户端配置": "當前環境不支援客戶端配置", "当前环境不支持导入": "當前環境不支援匯入", "当前环境不支持导入(桥接方法缺失)": "當前環境不支援匯入(橋接方法缺失)", "当前环境不支持应用": "當前環境不支援應用", "当前环境不支持恢复": "當前環境不支援恢復", "当前环境不支持还原(桥接方法缺失)": "當前環境不支援還原(橋接方法缺失)", "当前环境不支持预览": "當前環境不支援預覽", "当前环境无法读取网关模型目录": "當前環境無法讀取閘道器模型目錄", "当前网关未启用 API Key 鉴权;占位值只用于客户端要求非空密钥的场景。": "當前閘道器未啟用 API Key 鑑權;佔位值只用於客戶端要求非空金鑰的場景。", "当前默认": "當前預設", "思考能力": "思考能力", "恢复作用在网关所在机器;密钥已隐藏,不会覆盖应用后的外部修改。": "恢復作用在閘道器所在機器;金鑰已隱藏,不會覆蓋應用後的外部修改。", "恢复自动检测": "恢復自動檢測", "所有操作作用在网关所在机器。": "所有操作作用在閘道器所在機器。", "所选 Key 下没有可用的对话模型,请先启用模型或手动填写。": "所選 Key 下沒有可用的對話模型,請先啟用模型或手動填寫。", "所选 Key 下没有可用的对话模型,请先启用模型或更换 Key。": "所選 Key 下沒有可用的對話模型,請先啟用模型或更換 Key。", "所选 Key 无权使用当前模型,请重新选择": "所選 Key 無權使用當前模型,請重新選擇", "手动添加模型": "手動新增模型", "手机上只能查看与还原接管。改写配置内容请回桌面端": "手機上只能檢視與還原接管。改寫配置內容請回桌面版", "手机端可查看客户端实际配置并撤销上次应用;编辑方案请使用桌面端。": "手機端可檢視客戶端實際配置並撤銷上次應用;編輯方案請使用桌面版。", "手机端可查看模型配置、撤销上次应用,并管理提示词、Skill 与 MCP。": "手機端可檢視模型配置、撤銷上次應用,並管理提示詞、Skill 與 MCP。", "指定配置路径": "指定配置路徑", "按备份还原": "按備份還原", "按备份还原 {name}?": "按備份還原 {name}?", "换 Key 后会按新 Key 的授权重新核对已选模型": "換 Key 後會按新 Key 的授權重新核對已選模型", "接入后使用此默认模型,其它已选模型仍可在客户端切换。": "接入後使用此預設模型,其他已選模型仍可在客戶端切換。", "接入客户端": "接入客戶端", "接入本网关": "接入本閘道器", "接入状态来自客户端配置文件。恢复前显示差异;文件被其他程序修改时拒绝覆盖。": "接入狀態來自客戶端配置檔案。恢復前顯示差異;檔案被其他程式修改時拒絕覆蓋。", "接入端点": "接入端點", "接口基址": "介面基址", "接管会把客户端的 base_url 指向本网关,并在写入前自动备份原文件。": "接管會把客戶端的 base_url 指向本閘道器,並在寫入前自動備份原檔案。", "搜索客户端": "搜尋客戶端", "搜索客户端 / 配置文件…": "搜尋客戶端 / 配置檔案…", "搜索已选模型": "搜尋已選模型", "搜索模型 ID / 展示名…": "搜尋模型 ID / 展示名…", "撤销上次应用": "撤銷上次應用", "操作目标:网关所在机器": "操作目標:閘道器所在機器", "收起更多配置": "收起更多配置", "收起模型选择": "收起模型選擇", "改写网关所在机器上的客户端配置": "改寫閘道器所在機器上的客戶端配置", "改动": "改動", "放弃修改": "放棄修改", "放弃未保存的修改?": "放棄未儲存的修改?", "新增": "新增", "新增 MCP": "新增 MCP", "新增配置": "新增設定", "新建 Skill": "新建 Skill", "新建文件": "新建檔案", "新建方案或导入当前配置;保存后再决定是否应用。": "新建方案或匯入當前配置;儲存後再決定是否應用。", "新建配置": "新建配置", "新建配置方案": "新建配置方案", "新版网页版和桌面版分别保存模型配置;旧版模型设置共享,MCP 始终只写入所选运行方式。": "新版網頁版和桌面版分別儲存模型設定;舊版模型設定共用,MCP 一律只寫入所選執行方式。", "新配置": "新配置", "方案中的密钥加密保存;客户端原生配置可能要求明文。": "方案中的金鑰加密儲存;客戶端原生配置可能要求明文。", "方案名称": "方案名稱", "方案已保存,尚未应用到客户端": "方案已儲存,尚未應用到客戶端", "无改动": "無改動", "无配置": "無配置", "无需认证": "無需認證", "旧版共享设置": "舊版共用設定", "暂无预览": "暫無預覽", "更多配置": "更多配置", "最多选择 {n} 个模型": "最多選擇 {n} 個模型", "最近检测:{time}": "最近檢測:{time}", "有改动": "有改動", "未声明 / 保留": "未宣告 / 保留", "未安装": "未安裝", "未找到客户端程序或配置文件": "未找到客戶端程式或配置檔案", "未接入本网关": "未接入本閘道器", "未接管": "未接管", "未检测到": "未檢測到", "未检测到安装": "未檢測到安裝", "未读取到可识别的客户端配置": "未讀取到可識別的客戶端配置", "未走网关": "未走閘道器", "本机": "本機", "本机服务": "本機服務", "本机没有找到 {name}": "本機沒有找到 {name}", "本机网关": "本機閘道器", "本网关": "本閘道器", "来自客户端文件,只读": "來自客戶端檔案,只讀", "查看文件改动": "查看檔案變更", "桌面版": "桌面版", "模型 ID": "模型 ID", "模型 ID 不能为空或重复": "模型 ID 不能為空或重複", "模型 id": "模型 id", "模型 {n}": "模型 {n}", "模型展示名": "模型展示名", "模型思考等级": "模型思考等級", "模型或客户端不支持所选思考等级": "模型或用戶端不支援所選的思考等級", "模型未声明思考档位,保留客户端默认,不显示猜测选项。": "模型未宣告思考檔位,保留客戶端預設,不顯示猜測選項。", "模型目录响应无效": "模型目錄回應無效", "模型目录读取失败,可手动填写真实模型 ID。": "模型目錄讀取失敗,可手動填寫真實模型 ID。", "模型配置": "模型配置", "模型默认": "模型預設", "正在检测客户端…": "正在檢測客戶端…", "正在生成准确预览…": "正在生成準確預覽…", "正在生成预览…": "正在生成預覽…", "正在读取本机客户端…": "正在讀取本機客戶端…", "正在读取网关模型并填入配置…": "正在讀取閘道器模型並填入配置…", "此处来自磁盘文件,不代表正在运行的旧会话已经重载。": "此處來自磁碟檔案,不代表正在執行的舊會話已經過載。", "此配置未在客户端中使用,删除不会改变当前使用的配置。": "此設定未在用戶端中使用,刪除不會改變目前使用的設定。", "每个客户端可以有": "每個客戶端可以有", "每个模型独立保存能力;展开可调整,未声明的数据不会猜测填写。": "每個模型獨立儲存能力;展開可調整,未宣告的資料不會猜測填寫。", "没有匹配的客户端": "沒有匹配的客戶端", "没有可导入的新条目(可能还没配过,或已经在我的配置里)": "沒有可匯入的新條目(可能還沒配過,或已經在我的配置裡)", "没有新的条目可收(都已在我的配置里)": "沒有新的條目可收(都已在我的配置裡)", "没有新的配置可以导入": "沒有新的配置可以匯入", "没有检测到可接管的客户端": "沒有檢測到可接管的客戶端", "没有选中配置": "未選取設定", "没有选中配置方案": "沒有選中配置方案", "添加到客户端": "新增至用戶端", "点击右上角「新增配置」,添加网关或其他服务": "點選右上角「新增設定」,加入閘道或其他服務", "点击模型展开详细配置;搜索只筛选显示,不会移除模型。": "點擊模型展開詳細配置;搜尋只篩選顯示,不會移除模型。", "版本未识别": "版本未識別", "状态来自配置文件,已打开的会话可能需要重新加载": "狀態來自設定檔,已開啟的對話可能需要重新載入", "环境变量名": "環境變數名", "生成中…": "生成中…", "留空保留 / 未声明": "留空保留 / 未宣告", "留空保留已保存密钥": "留空保留已儲存金鑰", "留空的分档会以 Claude Code 内置模型名请求网关;网关没有同名模型时该档会失败,建议点「一键设置」。": "留空的分檔會以 Claude Code 內建模型名請求閘道器;閘道器沒有同名模型時該檔會失敗,建議點「一鍵設定」。", "留空表示不写入": "留空表示不寫入", "确定按最近一次备份还原「{name}」?": "確定按最近一次備份還原「{name}」?", "确认": "確認", "确认使用": "確認使用", "确认停用": "確認停用", "确认写入": "確認寫入", "确认写入后会同步修改客户端开关;取消不会生效。": "確認寫入後會同步修改客戶端開關;取消不會生效。", "确认写入后更新客户端默认模型;取消不会生效。": "確認寫入後更新客戶端預設模型;取消不會生效。", "确认写入客户端资源": "確認寫入客戶端資源", "确认删除": "確認刪除", "确认删除客户端资源": "確認刪除客戶端資源", "确认后将切换到此配置,原配置会保留在列表中。": "確認後將切換至此設定,原設定會保留在清單中。", "确认后将更新 {name} 的配置文件,原配置会自动备份。": "確認後將更新 {name} 的設定檔,原設定會自動備份。", "确认后将此配置加入客户端,已有配置会保留。": "確認後將此設定加入用戶端,既有設定會保留。", "确认应用": "確認應用", "确认恢复": "確認恢復", "确认接入": "確認接入", "移除模型会写入客户端配置;其它条目和未知字段保留,确认前可查看差异。": "移除模型會寫入客戶端配置;其它條目和未知欄位保留,確認前可檢視差異。", "移除模型:{name}": "移除模型:{name}", "第一把启用的 Key": "第一把啟用的 Key", "第三方中转": "第三方中轉", "编辑 MCP": "編輯 MCP", "编辑 Skill": "編輯 Skill", "编辑客户端配置": "編輯客戶端配置", "编辑配置": "編輯設定", "编辑配置方案": "編輯配置方案", "编辑:{name}": "編輯:{name}", "网关目录共 {n} 个": "閘道器目錄共 {n} 個", "网页版": "網頁版", "自定义路径": "自訂路徑", "行号由后端逐行比对给出": "行號由後端逐行比對給出", "装好后回到这一页点「重新检测」,它会出现在上面的列表里。": "裝好後回到這一頁點「重新檢測」,它會出現在上面的列表裡。", "视频输入": "影片輸入", "解除接入本网关": "解除接入本閘道器", "认证方式": "認證方式", "设为默认": "設為預設", "请先在「网关 Key」页创建并启用一把 Key": "請先在「閘道器 Key」頁建立並啟用一把 Key", "请在 Zed 提供商设置中保存 API Key;本页不修改系统凭证存储。": "請在 Zed 提供商設定中儲存 API Key;本頁不修改系統憑證儲存。", "请填写 API Key": "請填寫 API Key", "请填写方案名称": "請填寫方案名稱", "请填写有效的 http 或 https 地址": "請填寫有效的 http 或 https 地址", "请填写有效的环境变量名": "請填寫有效的環境變數名", "请填写配置名称": "請填寫設定名稱", "请至少添加一个模型": "請至少新增一個模型", "请补全配置后使用": "請補齊設定後使用", "请输入密钥": "請輸入金鑰", "请选择": "請選擇", "请选择模型": "請選擇模型", "读取失败": "讀取失敗", "读取客户端配置失败:{reason}": "讀取客戶端配置失敗:{reason}", "走网关": "走閘道器", "路径属于网关所在机器,不是浏览器所在设备。只改变检测目标,不修改客户端文件。": "路徑屬於閘道器所在機器,不是瀏覽器所在裝置。只改變檢測目標,不修改客戶端檔案。", "输出上限": "輸出上限", "返回编辑": "返回編輯", "还原中…": "還原中…", "还原失败:{reason}": "還原失敗:{reason}", "还没有配置": "還沒有配置", "还没有配置。点「新建配置」建一套指向本机网关的,再写入客户端。": "還沒有配置。點「新建配置」建一套指向本機閘道器的,再寫入客戶端。", "还没有预览。选一套配置后这里会显示写入客户端之后的样子。": "還沒有預覽。選一套配置後這裡會顯示寫入客戶端之後的樣子。", "这个客户端不从网关目录选模型,用右侧的「添加模型」逐个填写。": "這個客戶端不從閘道器目錄選模型,用右側的「新增模型」逐個填寫。", "这个客户端不支持所选协议": "這個客戶端不支援所選協議", "这个客户端不能接入本网关": "這個客戶端不能接入本閘道器", "这个客户端会自己重读配置,写入后开新会话即生效。": "這個客戶端會自己重讀配置,寫入後開新會話即生效。", "这个客户端只在启动时读配置:写入后重开一个会话才生效。": "這個客戶端只在啟動時讀配置:寫入後重開一個會話才生效。", "这个客户端的配置里没有读出地址(可能还没配过,或形状不认识)": "這個客戶端的配置裡沒有讀出地址(可能還沒配過,或形狀不認識)", "这个客户端自己支持多套配置并存": "這個客戶端自己支援多套配置並存", "这个客户端自己管理多套配置,可同时启用多条;切换只改 enabled 与默认项,不动它的模型清单。": "這個客戶端自己管理多套配置,可同時啟用多條;切換隻改 enabled 與預設項,不動它的模型清單。", "这个客户端还没有 MCP": "這個客戶端還沒有 MCP", "这个客户端还没有 Skill": "這個客戶端還沒有 Skill", "这个客户端需要填写模型上下文窗口": "這個客戶端需要填寫模型上下文視窗", "这套配置是干什么用的(只显示在本页)": "這套配置是幹什麼用的(只顯示在本頁)", "这是待应用状态;保存不会立即改变客户端开关。": "這是待應用狀態;儲存不會立即改變客戶端開關。", "这里只调整此模型,不影响其它模型。": "這裡只調整此模型,不影響其他模型。", "这里只选择客户端实际支持的协议,不改变上游提供商协议。": "這裡只選擇客戶端實際支援的協議,不改變上游提供商協議。", "连接方式": "連線方式", "连接配置": "連線配置", "选一个客户端开始": "選一個客戶端開始", "选择 MCP": "選擇 MCP", "选择 Skill": "選擇 Skill", "选择模型": "選擇模型", "选择网关 Key": "選擇閘道器 Key", "选择要接入的模型;确认前展示文件改动,写入前自动备份。": "選擇要接入的模型;確認前顯示檔案變更,寫入前自動備份。", "选择配置目标": "選擇設定目標", "通常以 /v1 结尾,不要附加具体请求路径。": "通常以 /v1 結尾,不要附加具體請求路徑。", "部分已选模型已不可用或所选 Key 无权使用,请移除或更换 Key。": "部分已選模型已不可用或所選 Key 無權使用,請移除或更換 Key。", "配置": "配置", "配置位置与说明": "設定位置與說明", "配置列表": "設定清單", "配置列表格式不匹配,请重启网关后刷新页面": "設定清單格式不符,請重新啟動閘道後重新整理頁面", "配置可读写": "配置可讀寫", "配置名称": "設定名稱", "配置差异": "配置差異", "配置已保存,可在列表中点击使用": "設定已儲存,可在清單中點選使用", "配置已删除": "設定已刪除", "配置已删除,客户端文件已同步更新": "設定已刪除,用戶端檔案已同步更新", "配置已应用并读回校验;请重开客户端或会话": "配置已應用並讀回校驗;請重開客戶端或會話", "配置已恢复并校验": "配置已恢復並校驗", "配置操作": "設定操作", "配置文件已写入并校验;尚未验证 DSH 是否加载,请在所选客户端新建会话确认。": "設定檔已寫入並驗證;尚未確認 DSH 是否載入,請在所選用戶端建立新對話確認。", "配置来源": "配置來源", "重新填入目录能力": "重新填入目錄能力", "重新检测": "重新檢測", "重新生成预览": "重新生成預覽", "需要重新编辑:": "需要重新編輯:", "需重开会话生效": "需重開會話生效", "预览并保存": "預覽並儲存", "预览草稿改动": "預覽草稿改動", "高": "高", "高级选项": "進階選項", "默认模型": "預設模型", "默认模型必须来自模型列表": "預設模型必須來自模型列表", "默认模型思考等级": "預設模型思考等級", "(手机读不到本机文件)": "(手機讀不到本機檔案)", "(本机网关 / 官方直连 / 第三方中转 / 本机服务),随时切换。单配置客户端切换 = 整段覆写并备份原文件;多配置客户端(如 ZCode)只改 enabled 与默认项,它自己的条目一律不动。": "(本機閘道器 / 官方直連 / 第三方中轉 / 本機服務),隨時切換。單配置客戶端切換 = 整段覆寫並備份原檔案;多配置客戶端(如 ZCode)只改 enabled 與預設項,它自己的條目一律不動。", "API Key 无效或无权限": "API Key 無效或無許可權", "API 接口文档": "API 介面文件", "DSH 使用 Agent 页当前选择的配置目标。写入后请在 DSH 中确认工具是否出现,必要时重启对应客户端。": "DSH 使用 Agent 頁目前選擇的設定目標。寫入後請在 DSH 中確認工具是否出現,必要時重新啟動對應用戶端。", "Key 明文只会写入所选客户端的本机配置文件。": "Key 明文只會寫入所選客戶端的本機配置檔案。", "MCP & Skills": "MCP & Skills", "MCP 接入信息": "MCP 接入資訊", "Node.js 无需额外依赖,推荐使用;Python 需要本机有 python。": "Node.js 無需額外依賴,推薦使用;Python 需要本機有 python。", "{name} 接入客户端": "{name} 接入客戶端", "上游提供商": "上游提供商", "上游提供商配置": "上游提供商配置", "上游提供商配置由各接入协议共享,改动后所有协议同时生效。": "上游提供商配置由各接入協議共享,改動後所有協議同時生效。", "上游没有返回结果": "上游沒有返回結果", "上游请求超时": "上游請求超時", "下载图片 {index}": "下載圖片 {index}", "不指定": "不指定", "中文": "中文", "仅搜索": "僅搜尋", "仅支持单选,默认为 Tavily。": "僅支援單選,預設為 Tavily。", "仅显示已启用且至少有一个可用模型的提供商。": "僅顯示已啟用且至少有一個可用模型的提供商。", "仅显示该提供商下已启用的模型。": "僅顯示該提供商下已啟用的模型。", "任务编号或原提交编号,至少提供一项": "任務編號或原提交編號,至少提供一項", "作为远程 MCP 服务,在支持 MCP 的客户端配置里填写地址即可接入。": "作為遠端 MCP 服務,在支援 MCP 的客戶端配置裡填寫地址即可接入。", "使用已有账号生成或编辑图片,支持任务查询与本机文件保存。": "使用已有帳號生成或編輯圖片,支援任務查詢與本機檔案儲存。", "保存能力配置": "儲存能力配置", "保留至 {time}": "保留至 {time}", "共 {count} 项能力": "共 {count} 項能力", "内部请求本站网关时使用的网关 Key;额度、限流与请求日志记在该 Key 上。": "內部請求本站閘道器時使用的閘道器 Key;額度、限流與請求日誌記在該 Key 上。", "内部调用 API Key": "內部呼叫 API Key", "写入失败": "寫入失敗", "写入配置": "寫入配置", "单次图片上限": "單次圖片上限", "卸载失败": "解除安裝失敗", "参考图允许读取的目录": "參考圖允許讀取的目錄", "参考图链接或已生成图片 ID;本地桥接还可传文件路径": "參考圖連結或已生成圖片 ID;本地橋接還可傳檔案路徑", "取消全选": "取消全選", "只保存新文件,不覆盖已有不同内容。目录权限写入客户端配置,更新配置时需要重新确认。": "只儲存新檔案,不覆蓋已有不同內容。目錄許可權寫入客戶端配置,更新配置時需要重新確認。", "可选。留空时不传,由模型映射的「思考覆盖」决定。": "可選。留空時不傳,由模型對映的「思考覆蓋」決定。", "可选,每行一个已有绝对目录。输出目录默认允许读取;其他位置的文件不会读取或上传。": "可選,每行一個已有絕對目錄。輸出目錄預設允許讀取;其他位置的檔案不會讀取或上傳。", "启用 / 停用此服务": "啟用 / 停用此服務", "图片分析": "圖片分析", "图片占用 {used} MiB,生成中预留 {reserved} MiB。": "圖片佔用 {used} MiB,生成中預留 {reserved} MiB。", "图片生成配置": "圖片生成配置", "图片生成配置已保存": "圖片生成配置已儲存", "图片输出目录": "圖片輸出目錄", "在支持远程 MCP 的客户端中填写该地址,并使用网关 Key 作为 Bearer 令牌。": "在支援遠端 MCP 的客戶端中填寫該地址,並使用閘道器 Key 作為 Bearer 權杖。", "复制失败,请手动选择后复制": "複製失敗,請手動選擇後複製", "复制文档": "複製文件", "复用「账号」页的登录态,不需要额外填写搜索密钥。账号停用或删除后不会自动换号。": "複用「帳號」頁的登入態,不需要額外填寫搜尋金鑰。帳號停用或刪除後不會自動換號。", "复用已有账号生图,不改变 Agent 的对话模型。实际调用遵守接入 Key 的模型和提供商权限。": "複用已有帳號生圖,不改變 Agent 的對話模型。實際呼叫遵守接入 Key 的模型和提供商許可權。", "存储上限(MiB)": "儲存上限(MiB)", "安装目标": "安裝目標", "完整的图片要求": "完整的圖片要求", "客户端环境": "客戶端環境", "客户端调用超时设为 120 秒;后台生成超时由服务配置控制,未完成时通过任务编号查询。": "客戶端呼叫超時設為 120 秒;後臺生成超時由服務配置控制,未完成時通過任務編號查詢。", "客户端配置示例": "客戶端配置示例", "密钥已清除": "金鑰已清除", "密钥或账号登录态无效": "金鑰或帳號登入態無效", "密钥提示": "金鑰提示", "将按服务的工具执行超时({seconds} 秒)同步写入客户端配置。": "將按服務的工具執行超時({seconds} 秒)同步寫入客戶端配置。", "将搜索、视觉等能力通过 MCP 或 Skills 接入客户端。": "透過 MCP 或 Skills,讓用戶端使用搜尋、視覺等功能。", "尚未配置图片生成,请先选择可用的生图模型并保存。": "尚未配置圖片生成,請先選擇可用的生圖模型並儲存。", "尚未配置视觉模型,配置前调用方会收到“未配置”错误。": "尚未配置視覺模型,配置前呼叫方會收到“未配置”錯誤。", "工具执行超时": "工具執行超時", "工具执行超时已保存": "工具執行超時已儲存", "工具服务": "工具服務", "已写入 {count} 个客户端配置": "已寫入 {count} 個客戶端配置", "已处理 {count} 个目标": "已處理 {count} 個目標", "已复制": "已複製", "已失效": "已失效", "已安装到 {count} 个客户端": "已安裝到 {count} 個客戶端", "已完成": "已完成", "已完成 {count} 个目标": "已完成 {count} 個目標", "已接入 {count} 个目标": "已接入 {count} 個目標", "已有账号": "已有帳號", "已有账号搜索只支持搜索,不支持网页抓取;请求会使用绑定账号的额度与出网设置。": "已有帳號搜尋只支援搜尋,不支援網頁抓取;請求會使用繫結帳號的額度與出網設定。", "已检查保存的配置,未发起生图;账号实际额度与上游可用性以调用结果为准。": "已檢查儲存的配置,未發起生圖;帳號實際額度與上游可用性以呼叫結果為準。", "已绑定的搜索账号不存在,请重新选择": "已繫結的搜尋帳號不存在,請重新選擇", "已绑定的搜索账号已停用": "已繫結的搜尋帳號已停用", "已绑定账号不可用,请重新选择": "已繫結帳號不可用,請重新選擇", "已过期或清理": "已過期或清理", "已选择 {count} / {total} 个": "已選擇 {count} / {total} 個", "已配置的 API Key 已失效(被删除或禁用),请重新选择并保存。": "已配置的 API Key 已失效(被刪除或停用),請重新選擇並儲存。", "当前提供商插件不支持账号搜索,请更新插件": "當前提供商外掛不支援帳號搜尋,請更新外掛", "当前模型:{provider} / {model}": "當前模型:{provider} / {model}", "当前没有可用的安装目标": "當前沒有可用的安裝目標", "当前没有已安装/已配置的目标": "當前沒有已安裝/已配置的目標", "当前网关 Key 无权使用所选账号搜索来源": "當前閘道器 Key 無權使用所選帳號搜尋來源", "打包为 Agent Skill,由 Agent2API 面板安装到本机客户端目录。": "打包為 Agent Skill,由 Agent2API 面板安裝到本機客戶端目錄。", "批量抓取 1~10 个 URL,使用后台选中的单个抓取提供商。": "批次抓取 1~10 個 URL,使用後臺選中的單個抓取提供商。", "批量搜索 1~10 条查询,并发调用后台选中的提供商后合并重复来源。": "批次搜尋 1~10 條查詢,併發呼叫後臺選中的提供商後合併重複來源。", "批量网页抓取": "批次網頁抓取", "批量网页抓取提供商": "批次網頁抓取提供商", "批量网页搜索": "批次網頁搜尋", "批量网页搜索不可用:所选提供商均未启用或未配置密钥。": "批次網頁搜尋不可用:所選提供商均未啟用或未配置金鑰。", "批量网页搜索不可用:请启用来源并配置密钥或绑定可用账号。": "批次網頁搜尋不可用:請啟用來源並配置金鑰或繫結可用帳號。", "批量网页搜索可用:将使用 {ready},未配置的 {missing} 会自动跳过。": "批次網頁搜尋可用:將使用 {ready},未配置的 {missing} 會自動跳過。", "批量网页搜索可用:所选提供商均已启用并配置密钥。": "批次網頁搜尋可用:所選提供商均已啟用並配置金鑰。", "批量网页搜索可用:所选来源均已启用并配置完成。": "批次網頁搜尋可用:所選來源均已啟用並配置完成。", "批量网页搜索提供商": "批次網頁搜尋提供商", "批量网页搜索至少选择一个提供商": "批次網頁搜尋至少選擇一個提供商", "把 1~10 张图片与提示词交给后台配置的视觉模型,返回模型回复文本。": "把 1~10 張圖片與提示詞交給後臺配置的視覺模型,返回模型回覆文本。", "把下面这段合并到客户端配置的 mcpServers 里,并把 Key 换成你自己的。": "把下面這段合併到客戶端配置的 mcpServers 裡,並把 Key 換成你自己的。", "把图片与提示词交给后台配置的视觉模型分析,并把模型回复返回给调用方的大模型。": "把圖片與提示詞交給後臺配置的視覺模型分析,並把模型回覆返回給呼叫方的大模型。", "抓取:{name}": "抓取:{name}", "按参考图修改,仅在配置了可用编辑模型时提供。": "按參考圖修改,僅在配置了可用編輯模型時提供。", "按描述使用已配置的模型生图,默认一张,会消耗账号额度。": "按描述使用已配置的模型生圖,預設一張,會消耗帳號額度。", "接入协议": "接入協議", "接入方式": "接入方式", "提供 REST API,任何能发 HTTP 请求的程序都可以携带网关 Key 直接调用。": "提供 REST API,任何能發 HTTP 請求的程式都可以攜帶閘道器 Key 直接呼叫。", "提供商尚未配置密钥": "提供商尚未配置金鑰", "提供商尚未配置有效密钥": "提供商尚未配置有效金鑰", "提供商插件暂不可用": "提供商外掛暫不可用", "提供商插件未安装或未启用": "提供商外掛未安裝或未啟用", "提供商暂不可用或配置有误": "提供商暫不可用或配置有誤", "提供商选择": "提供商選擇", "提示词,描述要让模型在图片中查看的内容": "提示詞,描述要讓模型在圖片中檢視的內容", "插件搜索能力声明不完整,请更新插件": "外掛搜尋能力宣告不完整,請更新外掛", "插件返回的搜索来源格式不正确": "外掛返回的搜尋來源格式不正確", "搜索、视觉与生图共用网关配置。本机客户端的 MCP 安装在桌面端完成。": "搜尋、視覺與生圖共用閘道器配置。本機客戶端的 MCP 安裝在桌面版完成。", "搜索参数不符合该来源的要求": "搜尋引數不符合該來源的要求", "搜索提供商没有返回来源": "搜尋提供商沒有返回來源", "搜索服务拒绝了该账号,请检查账号权限": "搜尋服務拒絕了該帳號,請檢查帳號許可權", "搜索来源配置不完整": "搜尋來源配置不完整", "搜索请求超时": "搜尋請求超時", "搜索账号不属于该提供商,请重新选择": "搜尋帳號不屬於該提供商,請重新選擇", "搜索账号登录态已失效,请重新登录": "搜尋帳號登入態已失效,請重新登入", "搜索额度已用完或触发限流": "搜尋額度已用完或觸發限流", "支持多选。每次搜索会并发调用所选提供商并合并重复来源。": "支援多選。每次搜尋會併發呼叫所選提供商併合並重復來源。", "无法确认插件搜索能力,请更新或重启提供商插件": "無法確認外掛搜尋能力,請更新或重啟提供商外掛", "暂无生图记录,连接 MCP 后即可让 Agent 生成图片。": "暫無生圖記錄,連線 MCP 後即可讓 Agent 生成圖片。", "暴露的工具": "暴露的工具", "更新时间": "更新時間", "最大生成并发": "最大生成併發", "最近生成记录": "最近生成記錄", "服务与协议": "服務與協議", "服务入口": "服務入口", "服务名称": "服務名稱", "服务地址": "服務地址", "服务状态已更新": "服務狀態已更新", "服务端强制单次工具执行的超时上限(同一服务的 Skill / MCP / API 共用)。安装 MCP 时会按此值写入客户端配置;修改后需在客户端重新「更新」配置并重进会话才会生效。": "服務端強制單次工具執行的超時上限(同一服務的 Skill / MCP / API 共用)。安裝 MCP 時會按此值寫入客戶端配置;修改後需在客戶端重新「更新」配置並重進會話才會生效。", "服务端强制单次工具执行的超时上限(同一服务的 Skill / MCP 共用)。安装 MCP 时会按此值写入客户端配置;修改后需在客户端重新「更新」配置并重进会话才会生效。": "服務端強制單次工具執行的超時上限(同一服務的 Skill / MCP 共用)。安裝 MCP 時會按此值寫入客戶端配置;修改後需在客戶端重新「更新」配置並重進會話才會生效。", "服务能力": "服務能力", "服务配置": "服務配置", "未选择账号": "未選擇帳號", "本地桥接": "本地橋接", "本地桥接会在本机运行一个 node 脚本,支持直接传本地图片路径,推荐在桌面端使用。": "本地橋接會在本機執行一個 node 指令碼,支援直接傳本地圖片路徑,推薦在桌面版使用。", "本地桥接需要 Node.js 18 或更新版本,自动读取授权目录的参考图并保存生成结果;HTTP 接入只返回下载地址。": "本地橋接需要 Node.js 18 或更新版本,自動讀取授權目錄的參考圖並儲存生成結果;HTTP 接入只返回下載地址。", "本机接入": "本機接入", "本次提交的唯一编号,断线重试使用原编号": "本次提交的唯一編號,斷線重試使用原編號", "查询原任务并取回图片,不再次生图或扣费。": "查詢原任務並取回圖片,不再次生圖或扣費。", "查询生成结果": "查詢生成結果", "检查配置": "檢查配置", "正在加载安装目标…": "正在載入安裝目標…", "正在加载工具服务…": "正在載入工具服務…", "正在加载工具服务配置…": "正在載入工具服務配置…", "每条搜索词最多 {count} 字": "每條搜尋詞最多 {count} 字", "没有匹配的工具服务": "沒有匹配的工具服務", "没有可用的工具服务": "沒有可用的工具服務", "没有可用的生图模型,请先添加账号、启用对应插件并更新模型目录。": "沒有可用的生圖模型,請先新增帳號、啟用對應外掛並更新模型目錄。", "没有可用的网关 Key": "沒有可用的閘道器 Key", "没有可绑定的启用账号,请先到「账号」页添加或启用。": "沒有可繫結的啟用帳號,請先到「帳號」頁新增或啟用。", "没有可配置的提供商": "沒有可配置的提供商", "清理这次生成的临时图片?已保存到本机的文件不会被删除,原提交编号也不会重新生图。": "清理這次生成的臨時圖片?已儲存到本機的檔案不會被刪除,原提交編號也不會重新生圖。", "清除密钥": "清除金鑰", "清除配置": "清除配置", "点击「复制文档」可复制整份 Markdown 文档,直接发给对接方即可。": "點擊「複製文件」可複製整份 Markdown 文件,直接發給對接方即可。", "生图模型": "生圖模型", "生图账号": "生圖帳號", "生成中": "生成中", "生成较慢时先返回任务编号。断线后查询原任务,不自动重画;超时不代表没有扣费。": "生成較慢時先返回任務編號。斷線後查詢原任務,不自動重畫;超時不代表沒有扣費。", "确定清除提供商 {name} 的 API Key?清除后该提供商将不可用,直到重新保存新密钥。": "確定清除提供商 {name} 的 API Key?清除後該提供商將不可用,直到重新儲存新金鑰。", "移除 {name} 配置": "移除 {name} 配置", "空白的 API Key 不会覆盖已保存的密钥。": "空白的 API Key 不會覆蓋已儲存的金鑰。", "管理可供客户端安装和运行的工具服务,并配置上游提供商与能力。": "管理可供客戶端安裝和執行的工具服務,並配置上游提供商與能力。", "结果不确定": "結果不確定", "结果保留(小时)": "結果保留(小時)", "编辑 {name}": "編輯 {name}", "编辑可使用不同模型;未配置可用编辑模型时,不向 Agent 提供编辑工具。": "編輯可使用不同模型;未配置可用編輯模型時,不向 Agent 提供編輯工具。", "编辑提供商 {name}": "編輯提供商 {name}", "编辑模型": "編輯模型", "网络搜索": "網路搜尋", "网络搜索与视觉分析:网关侧配置,改完立即生效。本机客户端的安装在桌面端完成。": "網路搜尋與視覺分析:閘道器側配置,改完立即生效。本機客戶端的安裝在桌面版完成。", "聚合 Tavily、Querit、Firecrawl、Ollama Web Search,提供批量网页搜索与网页抓取能力。": "聚合 Tavily、Querit、Firecrawl、Ollama Web Search,提供批次網頁搜尋與網頁抓取能力。", "聚合标准搜索服务及已有 WorkBuddy、Kiro 账号的搜索能力;网页抓取仍使用标准服务。": "聚合標準搜尋服務及已有 WorkBuddy、Kiro 帳號的搜尋能力;網頁抓取仍使用標準服務。", "能力提供商配置已保存": "能力提供商配置已儲存", "能力数量": "能力數量", "自动选择仅在所选提供商内遵守现有路由;固定账号仍受停用、冷却与额度限制,不会自动换号。": "自動選擇僅在所選提供商內遵守現有路由;固定帳號仍受停用、冷卻與額度限制,不會自動換號。", "自动选择账号": "自動選擇帳號", "至少选择一个搜索提供商": "至少選擇一個搜尋提供商", "获取 API Key": "獲取 API Key", "要分析的图片(1~10 张),每张为 http(s) URL 或图片 data URI": "要分析的圖片(1~10 張),每張為 http(s) URL 或圖片 data URI", "要抓取并提取正文的网页 URL(1~10 个)": "要抓取並提取正文的網頁 URL(1~10 個)", "要搜索的查询,每条并发执行(1~10 条)": "要搜尋的查詢,每條併發執行(1~10 條)", "视觉分析": "視覺分析", "视觉服务配置已保存": "視覺服務配置已儲存", "视觉服务配置已清除": "視覺服務配置已清除", "视觉模型配置": "視覺模型配置", "视觉链路测试失败": "視覺鏈路測試失敗", "视觉链路连通:耗时 {duration}ms": "視覺鏈路連通:耗時 {duration}ms", "触发上游限流": "觸發上游限流", "该协议已停用,已接入的客户端会收到服务停用错误。": "該協議已停用,已接入的客戶端會收到服務停用錯誤。", "该协议通过 Agent2API 面板安装到本机客户端目录。": "該協議通過 Agent2API 面板安裝到本機客戶端目錄。", "该提供商不支持网页抓取": "該提供商不支援網頁抓取", "该搜索来源使用 API Key,不接受账号绑定": "該搜尋來源使用 API Key,不接受帳號繫結", "该搜索来源使用已有账号,不接受 API Key": "該搜尋來源使用已有帳號,不接受 API Key", "请先选择 API Key": "請先選擇 API Key", "请先选择提供商": "請先選擇提供商", "请先选择搜索使用的账号": "請先選擇搜尋使用的帳號", "请求参数无效": "請求引數無效", "请至少选择一个目标": "請至少選擇一個目標", "请选择 API Key": "請選擇 API Key", "请选择内部调用 API Key": "請選擇內部呼叫 API Key", "请选择图片输出目录": "請選擇圖片輸出目錄", "请选择提供商与上游模型": "請選擇提供商與上游模型", "调用用的 API Key": "呼叫用的 API Key", "账号搜索暂不可用,请检查账号及插件状态": "帳號搜尋暫不可用,請檢查帳號及外掛狀態", "账号搜索配置不完整,请重新选择账号或更新插件": "帳號搜尋配置不完整,請重新選擇帳號或更新外掛", "超时 {seconds}s": "超時 {seconds}s", "输入新密钥;留空保持不变": "輸入新金鑰;留空保持不變", "运行时": "執行時", "还没有可用的提供商,请先在「账号」页添加账号并在「模型管理」页确认有已启用的模型。": "還沒有可用的提供商,請先在「帳號」頁新增帳號並在「模型管理」頁確認有已啟用的模型。", "还没有可用的提供商,请先在桌面端添加账号并确认有已启用的模型。": "還沒有可用的提供商,請先在桌面版新增帳號並確認有已啟用的模型。", "这是后台生成任务的时间上限。单次 MCP 调用最多等待 20 秒,未完成时返回任务编号;查询不会重新生图。": "這是後臺生成任務的時間上限。單次 MCP 呼叫最多等待 20 秒,未完成時返回任務編號;查詢不會重新生圖。", "这里管理的是「客户端能用什么」:服务是否对外提供、上游提供商与密钥、视觉分析用哪个模型。": "這裡管理的是「客戶端能用什麼」:服務是否對外提供、上游提供商與金鑰、視覺分析用哪個模型。", "远程 HTTP": "遠端 HTTP", "远程 HTTP 只接受图片 URL 或 data URI,不需要本机安装 node。": "遠端 HTTP 只接受圖片 URL 或 data URI,不需要本機安裝 node。", "连接成功:{count} 条结果,耗时 {duration}ms": "連線成功:{count} 條結果,耗時 {duration}ms", "连接测试失败": "連線測試失敗", "选择处理图片的上游提供商与模型。调用时会用内部 Key 经本站网关请求该模型,协议转换、重试与故障转移全部复用网关。": "選擇處理圖片的上游提供商與模型。呼叫時會用內部 Key 經本站閘道器請求該模型,協議轉換、重試與故障轉移全部複用閘道器。", "选择安装目标、运行时与调用用的 API Key。Skill 包与密钥只写入所选客户端的本机目录。": "選擇安裝目標、執行時與呼叫用的 API Key。Skill 包與金鑰只寫入所選客戶端的本機目錄。", "选择已有目录,图片只会写入此目录及其子目录": "選擇已有目錄,圖片只會寫入此目錄及其子目錄", "选择目录": "選擇目錄", "选择要从中移除的客户端,未勾选的客户端保持不变。": "選擇要從中移除的客戶端,未勾選的客戶端保持不變。", "选择要写入 MCP 配置的客户端。配置只动本服务那一项,客户端原有的其它 MCP 服务保持不变。": "選擇要寫入 MCP 配置的客戶端。配置只動本服務那一項,客戶端原有的其它 MCP 服務保持不變。", "配置搜索与抓取所使用的上游提供商。调用方不再传递 provider,运行时始终使用这里保存的设置。": "配置搜尋與抓取所使用的上游提供商。呼叫方不再傳遞 provider,執行時始終使用這裡儲存的設定。", "默认只生成一张。空间不足时先拒绝请求,不消耗生图额度;只清理过期结果,已保存到本机目录的文件不受影响。": "預設只生成一張。空間不足時先拒絕請求,不消耗生圖額度;只清理過期結果,已儲存到本機目錄的檔案不受影響。", " 到 {file}": " 到 {file}", " 正文已改:{edited}(其余段用官方原文)。": " 正文已改:{edited}(其餘段用官方原文)。", "(无 id)": "(無 id)", "/v1 拒绝无 Key 请求": "/v1 拒絕無 Key 請求", "0 B": "0 B", "100%(默认)": "100%(預設)", "<本机IP>": "<本機IP>", "ALTCHA(本地验证)": "ALTCHA(本機驗證)", "Access Key ID": "Access Key ID", "Agent2API 手机端": "Agent2API 手機端", "Android 应用(APK)": "Android 應用(APK)", "Cline 上游按请求头判定「调用方是不是 Cline 自家产品」:X-CLIENT-TYPE: cline-sdk 是硬门槛(缺了它免费池模型一律 403),版本号与平台标识让请求更贴近官方客户端的形态。这里列出的是网关默认会发的头:改某一行的值 = 覆盖默认值(也可以新增默认清单之外的自定义头);把值清空保存 = 这个头不发送;在界面删掉被改过的行 = 回落默认值。改完点「保存」,下一个 Cline 请求立即生效。不懂某一行的含义就不要动它 —— 伪装头的价值在「与官方客户端逐字一致」。": "Cline 上游按請求頭判定「呼叫方是不是 Cline 自家產品」:X-CLIENT-TYPE: cline-sdk 是硬門檻(缺了它免費池模型一律 403),版本號與平臺標識讓請求更貼近官方客戶端的形態。這裡列出的是閘道器預設會發的頭:改某一行的值 = 覆蓋預設值(也可以新增預設清單之外的自定義頭);把值清空儲存 = 這個頭不傳送;在介面刪掉被改過的行 = 回落預設值。改完點「儲存」,下一個 Cline 請求立即生效。不懂某一行的含義就不要動它 —— 偽裝頭的價值在「與官方客戶端逐字一致」。", "Cline 伪装头": "Cline 偽裝頭", "Cline 伪装头已刷新": "Cline 偽裝頭已重新整理", "Docker 容器": "Docker 容器", "Endpoint": "Endpoint", "Endpoint 填 https://<账户ID>.r2.cloudflarestorage.com,Region 固定填 auto。": "Endpoint 填 https://<帳戶ID>.r2.cloudflarestorage.com,Region 固定填 auto。", "Endpoint 填 https://cos.ap-guangzhou.myqcloud.com,Region 填 ap-guangzhou(按实际地域改)。": "Endpoint 填 https://cos.ap-guangzhou.myqcloud.com,Region 填 ap-guangzhou(按實際地域改)。", "Endpoint 填 https://obs.cn-north-4.myhuaweicloud.com,Region 填 cn-north-4(按实际地域改)。": "Endpoint 填 https://obs.cn-north-4.myhuaweicloud.com,Region 填 cn-north-4(按實際地域改)。", "Endpoint 填 https://oss-cn-hangzhou.aliyuncs.com,Region 填 cn-hangzhou(按实际地域改)。": "Endpoint 填 https://oss-cn-hangzhou.aliyuncs.com,Region 填 cn-hangzhou(按實際地域改)。", "Endpoint 形如 http://192.168.1.10:9000(自建通常用 http);Region 一般填 us-east-1。": "Endpoint 形如 http://192.168.1.10:9000(自建通常用 http);Region 一般填 us-east-1。", "Endpoint 留空即走 AWS 官方地址;Region 必须与桶所在区域一致。": "Endpoint 留空即走 AWS 官方地址;Region 必須與桶所在區域一致。", "KB": "KB", "Linux 安装包(deb)": "Linux 安裝包(deb)", "Logo 不能超过 2 MiB": "Logo 不能超過 2 MiB", "Logo 仅支持 PNG、JPG、WebP 图片": "Logo 僅支援 PNG、JPG、WebP 圖片", "Nextcloud": "Nextcloud", "OpenAI 新版 API 用 developer 角色取代 system 承载指令,新版 OpenAI SDK 与部分客户端发的对话里会出现 role 为 developer 的消息;不少 OpenAI 兼容上游(尤其是自定义提供商的透传路径)不认识这个角色,收到就报 400。开启本项后,网关在每次转发前把 developer 角色的消息改写为 system —— 两类角色在 OpenAI 语义上等价(OpenAI 自己的迁移指南也是这么映射的),改写不影响对话内容与语义;对本来就只认 system 的各家内置上游同样无害。默认开启;关掉后 developer 消息会原样发往上游,不认识它的上游会报「角色不存在」一类的错误。": "OpenAI 新版 API 用 developer 角色取代 system 承載指令,新版 OpenAI SDK 與部分客戶端發的對話裡會出現 role 為 developer 的訊息;不少 OpenAI 相容上游(尤其是自定義提供商的透傳路徑)不認識這個角色,收到就報 400。開啟本項後,閘道器在每次轉發前把 developer 角色的訊息改寫為 system —— 兩類角色在 OpenAI 語義上等價(OpenAI 自己的遷移指南也是這麼對映的),改寫不影響對話內容與語義;對本來就只認 system 的各家內建上游同樣無害。預設開啟;關掉後 developer 訊息會原樣發往上游,不認識它的上游會報「角色不存在」一類的錯誤。", "QQ 群 · Telegram": "QQ 群 · Telegram", "S3 兼容存储": "S3 相容儲存", "Safari 没有安装按钮:点底部的「分享」,选「添加到主屏幕」,再点「添加」。": "Safari 沒有安裝按鈕:點底部的「分享」,選「新增到主螢幕」,再點「新增」。", "Secret Access Key": "Secret Access Key", "Token 读数量级": "Token 讀數量級", "UTF-8 文本文件路径。留空用内置默认;只在「替换 / 追加」下读取。": "UTF-8 文本檔案路徑。留空用內建預設;只在「替換 / 追加」下讀取。", "UTF-8 文本文件路径,留空用内置默认提示词(通用编码助手提示词,不含任何会被上游拦截的模板句)。只在「替换 / 追加」模式下生效,透传模式不读它。": "UTF-8 文本檔案路徑,留空用內建預設提示詞(通用編碼助手提示詞,不含任何會被上游攔截的模板句)。只在「替換 / 追加」模式下生效,透傳模式不讀它。", "WebView / 浏览器内核": "WebView / 瀏覽器核心", "Windows 安装包(NSIS)": "Windows 安裝包(NSIS)", "Windows 服务": "Windows 服務", "ZCode 套餐池(Start Plan)通道每条请求都要消耗一个当次铸造的人机验证令牌(一次性,2 分钟过期),库存低于该值时界面自动补铸到它。默认 3 个。调大能吸收突发并发,但用不掉的令牌 2 分钟就过期作废,烧的是上游风控配额。可填 1–10。": "ZCode 套餐池(Start Plan)通道每條請求都要消耗一個當次鑄造的人機驗證權杖(一次性,2 分鐘過期),庫存低於該值時介面自動補鑄到它。預設 3 個。調大能吸收突發併發,但用不掉的權杖 2 分鐘就過期作廢,燒的是上游風控配額。可填 1–10。", "ZCode 客户端版本号": "ZCode 客戶端版本號", "ZCode 活动套餐通道每条请求都要消耗一个当次铸造的人机验证令牌(一次性,2 分钟过期),库存低于该值时界面自动补铸到它。默认 3 个。调大能吸收突发并发,但用不掉的令牌 2 分钟就过期作废,烧的是上游风控配额。可填 1–10。": "ZCode 活動套餐通道每條請求都要消耗一個當次鑄造的人機驗證權杖(一次性,2 分鐘過期),庫存低於該值時介面自動補鑄到它。預設 3 個。調大能吸收突發併發,但用不掉的權杖 2 分鐘就過期作廢,燒的是上游風控配額。可填 1–10。", "ZCode 版本号已刷新": "ZCode 版本號已重新整理", "ZCode 的活动套餐(限时体验礼包)由上游按**客户端版本号**决定下不下发:探测接口只在版本号达到当期门槛时才返回套餐列表,版本落后时回一份空列表(不是报错,所以界面上看起来像「没有活动」)。2026-10 那期实测:3.16.0 及以下全空,3.16.1 起才有礼包。插件内置的默认值会随活动更新,但上游每期可能再抬高一档 —— 那时如果官方客户端里能看到活动、这里却探测为空,就在这里填官方客户端当前的版本号(形如 3.16.2)。环境变量 ZCODE_APP_VERSION 优先级更高。": "ZCode 的活動套餐(限時體驗禮包)由上游按**客戶端版本號**決定下不下發:探測介面只在版本號達到當期門檻時才返回套餐列表,版本落後時回一份空列表(不是報錯,所以介面上看起來像「沒有活動」)。2026-10 那期實測:3.16.0 及以下全空,3.16.1 起才有禮包。外掛內建的預設值會隨活動更新,但上游每期可能再抬高一檔 —— 那時如果官方客戶端裡能看到活動、這裡卻探測為空,就在這裡填官方客戶端當前的版本號(形如 3.16.2)。環境變數 ZCODE_APP_VERSION 優先順序更高。", "ZCode「套餐池(Start Plan)」通道的每条推理请求都要附一个当次铸造的阿里云无痕验证令牌(一次性、约 2 分钟过期):令牌由界面里的铸造守卫静默铸好、推给网关入池,转发时逐条取用。这里的三个值管的是补货节奏:①「库存目标」= 库存低于它守卫才补铸、补到它为止,默认 3 个;②「轮询间隔」= 守卫多久看一次库存,默认 2500 毫秒,只影响反应速度(库存够用时不会多铸);③「单轮铸造上限」= 发现缺货时一轮最多铸几个,默认 1 个(连铸之间固定隔 500 毫秒)。请求密集、请求日志里连续出现「需要人机验证令牌」的 503 时,把目标与单轮上限适当调大、轮询调快,能让池子跟得上消耗 —— 代价是上游(阿里云)对铸造频率有风控,铸得越多越快越容易触发限流,且用不掉的令牌 2 分钟即过期作废、等于白烧配额,所以建议小步调。保存后对下一轮补货立即生效,不用重启。": "ZCode「套餐池(Start Plan)」通道的每條推理請求都要附一個當次鑄造的阿里雲無痕驗證權杖(一次性、約 2 分鐘過期):權杖由介面裡的鑄造守衛靜默鑄好、推給閘道器入池,轉發時逐條取用。這裡的三個值管的是補貨節奏:①「庫存目標」= 庫存低於它守衛才補鑄、補到它為止,預設 3 個;②「輪詢間隔」= 守衛多久看一次庫存,預設 2500 毫秒,隻影響反應速度(庫存夠用時不會多鑄);③「單輪鑄造上限」= 發現缺貨時一輪最多鑄幾個,預設 1 個(連鑄之間固定隔 500 毫秒)。請求密集、請求日誌裡連續出現「需要人機驗證權杖」的 503 時,把目標與單輪上限適當調大、輪詢調快,能讓池子跟得上消耗 —— 代價是上游(阿里雲)對鑄造頻率有風控,鑄得越多越快越容易觸發限流,且用不掉的權杖 2 分鐘即過期作廢、等於白燒配額,所以建議小步調。儲存後對下一輪補貨立即生效,不用重啟。", "ZCode「活动套餐」通道的每条推理请求都要附一个当次铸造的阿里云无痕验证令牌(一次性、约 2 分钟过期):令牌由界面里的铸造守卫静默铸好、推给网关入池,转发时逐条取用。这里的三个值管的是补货节奏:①「库存目标」= 库存低于它守卫才补铸、补到它为止,默认 3 个;②「轮询间隔」= 守卫多久看一次库存,默认 2500 毫秒,只影响反应速度(库存够用时不会多铸);③「单轮铸造上限」= 发现缺货时一轮最多铸几个,默认 1 个(连铸之间固定隔 500 毫秒)。请求密集、请求日志里连续出现「需要人机验证令牌」的 503 时,把目标与单轮上限适当调大、轮询调快,能让池子跟得上消耗 —— 代价是上游(阿里云)对铸造频率有风控,铸得越多越快越容易触发限流,且用不掉的令牌 2 分钟即过期作废、等于白烧配额,所以建议小步调。保存后对下一轮补货立即生效,不用重启。": "ZCode「活動套餐」通道的每條推理請求都要附一個當次鑄造的阿里雲無痕驗證權杖(一次性、約 2 分鐘過期):權杖由介面裡的鑄造守衛靜默鑄好、推給閘道器入池,轉發時逐條取用。這裡的三個值管的是補貨節奏:①「庫存目標」= 庫存低於它守衛才補鑄、補到它為止,預設 3 個;②「輪詢間隔」= 守衛多久看一次庫存,預設 2500 毫秒,隻影響反應速度(庫存夠用時不會多鑄);③「單輪鑄造上限」= 發現缺貨時一輪最多鑄幾個,預設 1 個(連鑄之間固定隔 500 毫秒)。請求密集、請求日誌裡連續出現「需要人機驗證權杖」的 503 時,把目標與單輪上限適當調大、輪詢調快,能讓池子跟得上消耗 —— 代價是上游(阿里雲)對鑄造頻率有風控,鑄得越多越快越容易觸發限流,且用不掉的權杖 2 分鐘即過期作廢、等於白燒配額,所以建議小步調。儲存後對下一輪補貨立即生效,不用重啟。", "beta 版": "beta 版", "iOS 应用": "iOS 應用", "models.dev 元数据": "models.dev 後設資料", "models.dev 元数据已更新({count} 条)": "models.dev 後設資料已更新({count} 條)", "models.dev 是一个开源的模型资料库(社区维护),这里用它补齐「上游没告诉我们」的模型能力:上下文窗口、最大输出、工具调用、图片、视频、是否支持思考,以及这个模型认识哪些思考档位。优先级是:你在「模型能力」里手工改的值 > 上游清单自己声明的值 > models.dev 的值 —— 它只填上游没声明的空位,从不推翻上游已声明的。网关随包内嵌了一份快照,所以离线、首次启动、访问不通时也有数据;开启时会按「模型目录刷新」任务的间隔联网更新(同一轮里一并刷新,也可在这里立即刷新)。关闭只停联网刷新,已经拿到的数据继续用。": "models.dev 是一個開源的模型資料庫(社群維護),這裡用它補齊「上游沒告訴我們」的模型能力:上下文視窗、最大輸出、工具呼叫、圖片、影片、是否支援思考,以及這個模型認識哪些思考檔位。優先順序是:你在「模型能力」裡手工改的值 > 上游清單自己宣告的值 > models.dev 的值 —— 它只填上游沒宣告的空位,從不推翻上游已宣告的。閘道器隨包內嵌了一份快照,所以離線、首次啟動、存取不通時也有資料;開啟時會按「模型目錄重新整理」任務的間隔聯網更新(同一輪裡一併重新整理,也可在這裡立即重新整理)。關閉只停聯網重新整理,已經拿到的資料繼續用。", "models.dev 模型元数据": "models.dev 模型後設資料", "systemd 服务": "systemd 服務", "{count} 条": "{count} 條", "{count} 条 · 来自{origin}{at} · {mode}": "{count} 條 · 來自{origin}{at} · {mode}", "{count} 条规则,按列表顺序执行": "{count} 條規則,按列表順序執行", "{d} 天 {h} 小时": "{d} 天 {h} 小時", "{h} 小时 {m} 分钟": "{h} 小時 {m} 分鐘", "{label} 提示词文件": "{label} 提示詞檔案", "{label} 的提示词模式": "{label} 的提示詞模式", "{label}({message})": "{label}({message})", "{lines} 行、{chars} 字符(按当前草稿计)": "{lines} 行、{chars} 字元(按當前草稿計)", "{minutes} 分钟": "{minutes} 分鐘", "{models} 同时出现在两块设置里,会按「辅助识图」处理。想改的话,把其中一个从这边的模型名单里去掉。": "{models} 同時出現在兩塊設定裡,會按「輔助識圖」處理。想改的話,把其中一個從這邊的模型名單裡去掉。", "{mode}生效:上游收到的 system 来自{source}{lines}。": "{mode}生效:上游收到的 system 來自{source}{lines}。", "{m} 分 {s} 秒": "{m} 分 {s} 秒", "{m} 分钟": "{m} 分鐘", "{noun}不能为空(可填 {min}–{max})": "{noun}不能為空(可填 {min}–{max})", "{noun}必须在 {min}–{max} 之间(当前填的是 {text})": "{noun}必須在 {min}–{max} 之間(當前填的是 {text})", "{noun}必须是整数": "{noun}必須是整數", "{n} B": "{n} B", "{n} GB": "{n} GB", "{n} KB": "{n} KB", "{n} MB": "{n} MB", "{n} 个头将随每个 Cline 请求发送": "{n} 個頭將隨每個 Cline 請求傳送", "{n} 台可选 · 点此切换": "{n} 臺可選 · 點此切換", "{n} 项 · {shown} 显示": "{n} 項 · {shown} 顯示", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "{total} 個選單 · 顯示 {shown} · 隱藏 {hidden} · {groups} 個分組", "{way}的适用模型": "{way}的適用模型", "…": "…", "⚠️ 密钥警告": "⚠️ 金鑰警告", "⚠️ 已关闭「{label}」的机器人校验": "⚠️ 已關閉「{label}」的機器人校驗", "⚠️ 机器人校验已关闭": "⚠️ 機器人校驗已關閉", "✅ Cline 伪装头已保存": "✅ Cline 偽裝頭已儲存", "✅ ZCode 版本号已保存": "✅ ZCode 版本號已儲存", "✅ models.dev 模型元数据已开启": "✅ models.dev 模型後設資料已開啟", "✅ 云同步设置已保存": "✅ 雲同步設定已儲存", "✅ 会话图片压缩已开启": "✅ 會話圖片壓縮已開啟", "✅ 出站指纹脱敏已开启": "✅ 出站指紋脫敏已開啟", "✅ 密码已修改,其他设备的登录已失效": "✅ 密碼已修改,其他裝置的登入已失效", "✅ 导入完成:{summary}": "✅ 匯入完成:{summary}", "✅ 已上传到云端({size})": "✅ 已上傳到雲端({size})", "✅ 已为「{label}」装上网关自带提示词": "✅ 已為「{label}」裝上閘道器自帶提示詞", "✅ 已从云端恢复{note}": "✅ 已從雲端恢復{note}", "✅ 已保存:{label}": "✅ 已儲存:{label}", "✅ 已保存:{label} {value}": "✅ 已儲存:{label} {value}", "✅ 已保存:指定错误码直接换号": "✅ 已儲存:指定錯誤碼直接換號", "✅ 已保留 {days} 天": "✅ 已保留 {days} 天", "✅ 已保留 {days} 天,超出部分已清理": "✅ 已保留 {days} 天,超出部分已清理", "✅ 已加密备份 {n} 张表({size}),包含恢复密钥:{file}": "✅ 已加密備份 {n} 張表({size}),包含恢復金鑰:{file}", "✅ 已备份 {n} 张表({size})到 {file}": "✅ 已備份 {n} 張表({size})到 {file}", "✅ 已导入账号密钥,请继续下载": "✅ 已匯入帳號金鑰,請繼續下載", "✅ 已导出 {count} 个账号{note}{file}": "✅ 已匯出 {count} 個帳號{note}{file}", "✅ 已开启「{label}」的机器人校验": "✅ 已開啟「{label}」的機器人校驗", "✅ 已恢复 {n} 张表": "✅ 已恢復 {n} 張表", "✅ 已恢复 {n} 张表{note}": "✅ 已恢復 {n} 張表{note}", "✅ 已改用 k / M / B 缩写": "✅ 已改用 k / M / B 縮寫", "✅ 已改用本地量级词(万 / 亿式)": "✅ 已改用本地量級詞(萬 / 億式)", "✅ 已自动创建网关 Key「默认」(可在「网关 Key」页查看)": "✅ 已自動建立閘道器 Key「預設」(可在「閘道器 Key」頁檢視)", "✅ 已解除内容拦截降级": "✅ 已解除內容攔截降級", "✅ 开发者角色兼容已开启": "✅ 開發者角色相容已開啟", "✅ 指纹脱敏设置已保存": "✅ 指紋脫敏設定已儲存", "✅ 数量上限已设为 {count} 条": "✅ 數量上限已設為 {count} 筆", "✅ 数量上限已设为 {count} 条,超出部分已清理": "✅ 數量上限已設為 {count} 筆,超出部分已清理", "✅ 机器人校验已开启": "✅ 機器人校驗已開啟", "✅ 第三方模型回答完自动折叠过程已开启": "✅ 第三方模型回答完自動摺疊過程已開啟", "✅ 设置已保存,应用正在重启…": "✅ 設定已儲存,應用正在重啟…", "✅ 调试模式已关闭": "✅ 除錯模式已關閉", "✅ 调试模式已开启": "✅ 除錯模式已開啟", "✅ 路由设置已保存": "✅ 路由設定已儲存", "✅ 连接成功:{path}": "✅ 連線成功:{path}", "、{n} 个自定义提供商": "、{n} 個自定義提供商", "。事件日志、请求明细、调试报文与面板登录态保持不变。替换前会自动把当前业务数据备份到配置目录的 backups/ 下。": "。事件日誌、請求明細、除錯報文與面板登入態保持不變。替換前會自動把當前業務資料備份到配置目錄的 backups/ 下。", "「{label}」将从 {previous} 天改为 {days} 天。": "「{label}」將從 {previous} 天改為 {days} 天。", "「{label}」将从 {previous} 条改为 {count} 条。": "「{label}」將從 {previous} 筆改為 {count} 筆。", "「{label}」改用内置默认提示词": "「{label}」改用內建預設提示詞", "「{label}」的提示词文件已更新": "「{label}」的提示詞檔案已更新", "「{label}」的提示词正文已更新": "「{label}」的提示詞正文已更新", "「{label}」的模式改为「{mode}」": "「{label}」的模式改為「{mode}」", "「{label}」的网关自带提示词已改回官方原文": "「{label}」的閘道器自帶提示詞已改回官方原文", "「{label}」的网关自带提示词正文已更新": "「{label}」的閘道器自帶提示詞正文已更新", "「模型管理」里每个能力的来源标记(上游 / models.dev / 已覆盖)读的就是这份数据;映射弹窗的思考档位下拉也按这里的数据只列该模型真实认识的档位。": "「模型管理」裡每個能力的來源標記(上游 / models.dev / 已覆蓋)讀的就是這份資料;對映彈窗的思考檔位下拉也按這裡的資料只列該模型真實認識的檔位。", "「用哪份提示词」本来是按上游分别决定的事,所以每家可以有自己的模式、提示词文件与正文:不在这里列出的提供商一律沿用上面那份默认设置,「跟随默认」把这一家取消、回到默认。带「网关自带」那一行的家(目前是 ZCode 两家)默认就列在这里 —— 那一段是网关自己装上去的文本,不来自客户端也不来自提示词文件,默认开启、可以关掉,也可以改它的正文(改过的那一段以你的文本为准);关掉后还能不能通过上游校验,取决于上游当下的口径,行内说明了实测依据。「模式 / 提示词文件 / 正文」管的是客户端自己的 system 怎么处理,与那个开关是两件事。": "「用哪份提示詞」本來是按上游分別決定的事,所以每家可以有自己的模式、提示詞檔案與正文:不在這裡列出的提供商一律沿用上面那份預設設定,「跟隨預設」把這一家取消、回到預設。帶「閘道器自帶」那一行的家(目前是 ZCode 兩家)預設就列在這裡 —— 那一段是閘道器自己裝上去的文本,不來自客戶端也不來自提示詞檔案,預設開啟、可以關掉,也可以改它的正文(改過的那一段以你的文本為準);關掉後還能不能通過上游校驗,取決於上游當下的口徑,行內說明了實測依據。「模式 / 提示詞檔案 / 正文」管的是客戶端自己的 system 怎麼處理,與那個開關是兩件事。", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "「設定」是固定項,含它的分組不能整組隱藏;可以單獨隱藏組內其它選單", "「请求日志」页的逐条请求记录,默认 99999 天(近似全量保留),可填 1–99999 天。": "「請求日誌」頁的逐條請求記錄,預設 99999 天(近似全量保留),可填 1–99999 天。", "「请求日志」页的逐条请求记录,默认 99999 天,可填 1–99999 天;同时受数量上限限制。": "「請求日誌」頁的逐筆請求記錄,預設 99999 天,可填 1–99999 天;同時受數量上限限制。", "一个 .a2ab 文件即可跨机器恢复,账号、网关 Key、GitHub 令牌与云同步凭据无需另行复制密钥。插件程序与库外文件不在整库备份范围。": "一個 .a2ab 檔案即可跨機器恢復,帳號、閘道器 Key、GitHub 權杖與雲同步憑據無需另行復制金鑰。外掛程式與庫外檔案不在整庫備份範圍。", "一段内置装配": "一段內建裝配", "三档数据各自独立计时,超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件;请求日志是网关每次转发到上游的逐条记录;按天聚合供报表页的热力图与按天趋势使用。请求日志与按天聚合默认 99999 天(约 274 年,效果上等于全量保留),事件日志默认 30 天。把某一档改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。三档的可填范围均为 1–99999 天。": "三檔資料各自獨立計時,超出保留天數的部分會被刪除:事件日誌是登入、帳號切換、429 切換這類系統事件;請求日誌是閘道器每次轉發到上游的逐條記錄;按天聚合供報表頁的熱力圖與按天趨勢使用。請求日誌與按天聚合預設 99999 天(約 274 年,效果上等於全量保留),事件日誌預設 30 天。把某一檔改小(例如 30 天改成 7 天)儲存後會立即刪除超出的歷史資料,此操作不可恢復;改大或保持不變不會刪除任何資料。三檔的可填範圍均為 1–99999 天。", "三段各自成块,所以分开编辑": "三段各自成塊,所以分開編輯", "三段必须各自成块(上游按结构校验,并成一段会被回 405),所以这里分开编辑。动态段里的运行值写成占位符,发请求时才替换:{cwd} 工作目录、{platform} 平台、{shell} shell、{os_version} 系统版本、{git} 是否 git 仓库、{provider} 提供方标识、{model} 模型名。清空某一段 = 那一段恢复官方原文。": "三段必須各自成塊(上游按結構校驗,併成一段會被回 405),所以這裡分開編輯。動態段裡的執行值寫成佔位符,發請求時才替換:{cwd} 工作目錄、{platform} 平臺、{shell} shell、{os_version} 系統版本、{git} 是否 git 倉庫、{provider} 提供方標識、{model} 模型名。清空某一段 = 那一段恢復官方原文。", "上传": "上傳", "上传 Logo": "上傳 Logo", "上传中…": "上傳中…", "上传内容含加密后的账号凭证与网关配置": "上傳內容含加密後的帳號憑證與閘道器配置", "上传到云端": "上傳到雲端", "上传失败:{message}": "上傳失敗:{message}", "上次同步:{time}({action})": "上次同步:{time}({action})", "上次成功刷新的结果(存在本机数据库里)": "上次成功重新整理的結果(存在本機資料庫裡)", "上游 CLI 版本": "上游 CLI 版本", "上游客户端版本": "上游客戶端版本", "上游按": "上游按", "上游按「结构」校验身份:三段必须各自成块,所以这里分开编辑三段(不能合成一段)。动态段里的运行值写成占位符,发请求时才替换:{cwd} 工作目录、{platform} 平台、{shell} shell、{os_version} 系统版本、{git} 是否 git 仓库、{provider} 提供方标识、{model} 模型名。清空某一段 = 那一段恢复官方原文。第三段发出时前面会自带一个空行(官方形状)。": "上游按「結構」校驗身份:三段必須各自成塊,所以這裡分開編輯三段(不能合成一段)。動態段裡的執行值寫成佔位符,發請求時才替換:{cwd} 工作目錄、{platform} 平臺、{shell} shell、{os_version} 系統版本、{git} 是否 git 倉庫、{provider} 提供方標識、{model} 模型名。清空某一段 = 那一段恢復官方原文。第三段發出時前面會自帶一個空行(官方形狀)。", "上游未配置": "上游未配置", "上游模型繁忙时会先排队(回一句「建议 N 秒后再来」):网关等一会儿再发同一请求,最多等几次。默认 2 次,可填 0–10;填 0 表示不等待,排队直接返回 503 并说明「不是登录态或额度问题」。": "上游模型繁忙時會先排隊(回一句「建議 N 秒後再來」):閘道器等一會兒再發同一請求,最多等幾次。預設 2 次,可填 0–10;填 0 表示不等待,排隊直接返回 503 並說明「不是登入態或額度問題」。", "上游用「逐字精确匹配」的方式审核请求体(不是语义审核):客户端注入的固定模板句、计费头字段名、以及某些裸错误码出现在报文里就会整单拦截,返回 400。开启本项后,网关在每次转发前改写这些指纹 —— 表头键值整段删除,承载语义的模板句只换一个词(如 official CLI for Claude → official CLI tool for Claude),对话内容与语义都不受影响。规则集是内置的,不需要也无法维护词表。关掉本项后客户端模板会原样发往上游,可能重新出现模板句被误拦的报错。": "上游用「逐字精確匹配」的方式稽核請求體(不是語義稽核):客戶端注入的固定模板句、計費頭欄位名、以及某些裸錯誤碼出現在報文裡就會整單攔截,返回 400。開啟本項後,閘道器在每次轉發前改寫這些指紋 —— 表頭鍵值整段刪除,承載語義的模板句只換一個詞(如 official CLI for Claude → official CLI tool for Claude),對話內容與語義都不受影響。規則集是內建的,不需要也無法維護詞表。關掉本項後客戶端模板會原樣發往上游,可能重新出現模板句被誤攔的報錯。", "上游请求四个阶段各自的等待上限(秒,1~3600):①「连接中超时」= 建立 TCP/TLS 连接或代理隧道的最大等待,默认 30 秒;②「等待响应超时」= 请求发出后等上游响应头的最大时间,默认 300 秒 —— 网关请求上游恒带 stream,响应头在 SSE 建立时就到达,与模型思考多久无关;③「流式响应空闲超时」= 流式响应相邻两块数据之间允许的最大空闲,收到新数据即重新计时,默认 300 秒 —— 上游长时间不吐数据即判定连接僵死并断开;④「非流式响应超时」= 读完整份非流式响应体的总预算(一次性计时、不重置),默认 300 秒。四项都是「等待上限」,只要数据还在来,正常的流式回答就一直往下传。保存后对下一个请求立即生效,不用重启。": "上游請求四個階段各自的等待上限(秒,1~3600):①「連線中超時」= 建立 TCP/TLS 連線或代理隧道的最大等待,預設 30 秒;②「等待響應超時」= 請求發出後等上游響應頭的最大時間,預設 300 秒 —— 閘道器請求上游恆帶 stream,響應頭在 SSE 建立時就到達,與模型思考多久無關;③「流式響應空閒超時」= 流式響應相鄰兩塊資料之間允許的最大空閒,收到新資料即重新計時,預設 300 秒 —— 上游長時間不吐資料即判定連線僵死並斷開;④「非流式響應超時」= 讀完整份非流式響應體的總預算(一次性計時、不重置),預設 300 秒。四項都是「等待上限」,只要資料還在來,正常的流式回答就一直往下傳。儲存後對下一個請求立即生效,不用重啟。", "上游调试报文": "上游除錯報文", "上移": "上移", "上移规则": "上移規則", "下次自动重试:{time}": "下次自動重試:{time}", "下游正文": "下游正文", "下移": "下移", "下移规则": "下移規則", "下载失败:{message}": "下載失敗:{message}", "不一致": "不一致", "不做会话识别,每条请求都重新按策略选路。": "不做會話識別,每條請求都重新按策略選路。", "不做图片兼容": "不做圖片相容", "不可用": "不可用", "不在这里列出的提供商都用上面的全局配置;「跟随默认」取消这一家的单独配置。带「网关自带」的家列在这里:那段文本是网关自己装上去的(可关、可改正文),与「模式」是两件事。": "不在這裡列出的提供商都用上面的全域配置;「跟隨預設」取消這一家的單獨配置。帶「閘道器自帶」的家列在這裡:那段文本是閘道器自己裝上去的(可關、可改正文),與「模式」是兩件事。", "与网关同源的面板;完整管理功能在桌面端": "與網關同源的面板;完整管理功能在桌面版", "两张开关分别管桌面端(应用内窗口,也包含开启局域网访问后从其他设备访问的那份面板)与网页端(Docker / 服务端自托管的浏览器面板)。默认都开启;桌面端只在本机使用、嫌验证耗时可以关掉,网页端暴露在网络上,建议保持开启。": "兩張開關分別管桌面版(應用內視窗,也包含開啟區域網路存取後從其他裝置存取的那份面板)與網頁端(Docker / 服務端自託管的瀏覽器面板)。預設都開啟;桌面版只在本機使用、嫌驗證耗時可以關掉,網頁端暴露在網路上,建議保持開啟。", "两次输入的备份密码不一致": "兩次輸入的備份密碼不一致", "两次输入的新密码不一致": "兩次輸入的新密碼不一致", "两次重试之间的等待时间,两项共用,可填 0–300 秒。": "兩次重試之間的等待時間,兩項共用,可填 0–300 秒。", "两种方式不会互相自动切换。": "兩種方式不會互相自動切換。", "两组设置分别用于桌面端托管的网页管理面板与网页端(Docker / 服务端)的浏览器面板。是否可被其他设备访问取决于网络访问与防火墙设置,不限于局域网。两端默认都开启人机验证,建议保持开启。": "兩組設定分別用於桌面端代管的網頁管理面板與網頁端(Docker / 伺服器端)的瀏覽器面板。是否可被其他裝置存取取決於網路存取與防火牆設定,不限於區域網路。兩端預設都開啟人機驗證,建議保持開啟。", "中转丢失原始标识时,无法自动推断背后的软件。": "中轉丟失原始標識時,無法自動推斷背後的軟體。", "为了安全,开启前需要先注册一个": "為了安全,開啟前需要先註冊一個", "主进程未返回启动设置,请更新桌面端后重试": "主程序未返回啟動設定,請更新桌面版後重試", "主进程桥不可用": "主程序橋不可用", "主题": "主題", "也可以从请求详情直接添加规则。": "也可以從請求詳情直接新增規則。", "事件日志": "事件日誌", "事件日志保留天数": "事件日誌保留天數", "云同步": "雲同步", "产品名": "產品名", "产品名不能包含斜杠或版本号,请改用前缀匹配": "產品名不能包含斜槓或版本號,請改用字首匹配", "人机验证": "人機驗證", "人机验证失败": "人機驗證失敗", "人机验证已完成": "人機驗證已完成", "人机验证还在计算,请稍候": "人機驗證還在計算,請稍候", "仅在同一会话、同一问题和相同权限范围内复用;追问新细节会重新识读。缓存只存在本机内存。": "僅在同一會話、同一問題和相同許可權範圍內複用;追問新細節會重新識讀。快取只存在本機記憶體。", "仅在账号、配置、签到或余额等实质内容变化时上传;导出时间或查询时间单独变化不会触发上传。": "僅在帳號、設定、簽到或餘額等實質內容變更時上傳;匯出時間或查詢時間單獨變更不會觸發上傳。", "仅处理本次转发副本,不修改客户端选择,也不删除当前或历史图片。": "僅處理本次轉發副本,不修改客戶端選擇,也不刪除當前或歷史圖片。", "仅影响面板登录与注册,不影响 API Key 调用。保存后生效,已登录会话不会退出。": "僅影響面板登入與註冊,不影響 API Key 呼叫。儲存後生效,已登入的工作階段不會登出。", "仅本机": "僅本機", "仅用现有数据、不联网刷新": "僅用現有資料、不聯網重新整理", "从云端恢复": "從雲端恢復", "从桌面图标启动,全屏、无地址栏。想卸载:长按图标删除,或清除浏览器站点数据。": "從桌面圖示啟動,全屏、無位址列。想解除安裝:長按圖示刪除,或清除瀏覽器站點資料。", "优先使用当前路由内的视觉模型": "優先使用當前路由內的視覺模型", "优先在当前路由内找可用的视觉模型,找不到就用 {model} 直接回答,不再回到原模型。": "優先在目前路由內找可用的視覺模型,找不到就用 {model} 直接回答,不再回到原模型。", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "會恢復預設的分組、順序與顯隱設定。你自建的分組會被刪除(組內選單不會丟)。", "会话图片压缩设置已刷新": "會話圖片壓縮設定已重新整理", "位置": "位置", "位置与端口": "位置與連接埠", "使用 Rust 正则语法,保存时由后端校验;不支持环视和反向引用。": "使用 Rust 正則語法,儲存時由後端校驗;不支援環視和反向引用。", "使用中文单位(亿 / 万)": "使用中文單位(億 / 萬)", "使用本地量级词(万 / 亿式)": "使用本地量級詞(萬 / 億式)", "使用默认值": "使用預設值", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "側邊欄佈局模組未載入(ui/sidebar-layout.js 應在 app.js 之前引入)。", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "側邊欄沒有顯示任何選單。到「設定 → 顯示 → 側邊欄選單」裡開啟需要的項。", "侧边栏菜单": "側邊欄選單", "保存上游原始报文(请求头、请求体、响应头、响应体)": "儲存上游原始報文(請求頭、請求體、響應頭、響應體)", "保存单独配置": "儲存單獨配置", "保存后以这份为准(优先于上面的文件);清空回到文件 / 内置默认。": "儲存後以這份為準(優先於上面的檔案);清空回到檔案 / 內建預設。", "保存后以这里的文本为准": "儲存後以這裡的文本為準", "保存后只对之后的新请求生效;两种方式不会互相自动切换。": "儲存後只對之後的新請求生效;兩種方式不會互相自動切換。", "保存后对下一轮补货立即生效,不用重启。守卫跑在应用界面里:轻量模式关窗销毁界面期间无法铸造,走套餐池(Start Plan)通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。": "儲存後對下一輪補貨立即生效,不用重啟。守衛跑在應用介面裡:輕量模式關窗銷燬介面期間無法鑄造,走套餐池(Start Plan)通道的請求會以 503 落進請求日誌(寫明原因),重新開啟介面即自動恢復。", "保存后对下一轮补货立即生效,不用重启。守卫跑在应用界面里:轻量模式关窗销毁界面期间无法铸造,走活动套餐通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。": "儲存後對下一輪補貨立即生效,不用重啟。守衛跑在應用介面裡:輕量模式關窗銷燬介面期間無法鑄造,走活動套餐通道的請求會以 503 落進請求日誌(寫明原因),重新開啟介面即自動恢復。", "保存后应用将重启以生效。": "儲存後應用將重啟以生效。", "保存后状态读取立即生效。后台不会自动生成令牌;需要人机验证时,在账号的「套餐明细」中主动开始验证。模型请求免验证时无需保持界面打开。": "儲存後狀態讀取立即生效。背景不會自動產生權杖;需要人機驗證時,在帳號的「套餐明細」中主動開始驗證。模型請求免驗證時無需保持介面開啟。", "保存后立即生效,不用重启(下一个请求就用新模式)。": "儲存後立即生效,不用重啟(下一個請求就用新模式)。", "保存后立即生效,不用重启:策略与粘性作用于**下一次**转发的选路,进行中的请求不受影响。": "儲存後立即生效,不用重啟:策略與粘性作用於**下一次**轉發的選路,進行中的請求不受影響。", "保存后立即生效,不用重启;次数用尽仍失败时,错误原样返回给客户端。": "儲存後立即生效,不用重啟;次數用盡仍失敗時,錯誤原樣返回給客戶端。", "保存后立即生效,不用重启;超时按上游失败处理(计入请求日志的「错误」列,并按「请求重试」的设置决定是否重试)。": "儲存後立即生效,不用重啟;超時按上游失敗處理(計入請求日誌的「錯誤」列,並按「請求重試」的設定決定是否重試)。", "保存后立即生效:保留天数和数量上限同时生效,调小任一项会立即清理超出的历史数据,且不可恢复。": "儲存後立即生效:保留天數和數量上限同時生效,調小任一項會立即清理超出的歷史資料,且無法還原。", "保存后立即生效:改小保留天数会立刻删除超出的历史数据,且不可恢复。": "儲存後立即生效:改小保留天數會立刻刪除超出的歷史資料,且不可恢復。", "保存在当前网关,登录页也会公开显示。不会更改安装包、快捷方式、系统托盘图标或软件版本信息。": "儲存在目前的閘道,登入頁也會公開顯示。不會更改安裝套件、捷徑、系統匣圖示或軟體版本資訊。", "保存并重启": "儲存並重啟", "保存设置": "儲存設定", "保持当前路由范围,不跳到其他路由组。": "保持目前路由範圍,不跳到其他路由組。", "保活换行丢弃": "保活換行丟棄", "保留原图和对话,由视觉模型直接回答本次请求。": "保留原圖和對話,由視覺模型直接回答本次請求。", "保留原图,选择视觉模型": "保留原圖,選擇視覺模型", "保留图片中的文字、代码、数字、布局与状态。识读失败就停止,不删图后继续回答。": "保留圖片中的文字、程式碼、數字、佈局與狀態。識讀失敗就停止,不刪圖後繼續回答。", "保留天数已刷新": "保留天數已重新整理", "保留旧版配置兼容,当前不会自动连铸。每次点击「开始验证」只取得一枚令牌,失败或取消后停止。": "保留舊版設定相容,目前不會自動連續產生權杖。每次點擊「開始驗證」只取得一枚權杖,失敗或取消後停止。", "保留草稿并读取最新设置": "保留草稿並讀取最新設定", "修改密码": "修改密碼", "修改密码需要输入当前密码;修改成功后,其他设备 / 浏览器上的登录会立即失效,当前这条会话保留。": "修改密碼需要輸入當前密碼;修改成功後,其他裝置 / 瀏覽器上的登入會立即失效,當前這條會話保留。", "修改模型单独配置": "修改模型單獨配置", "值": "值", "值与默认值相同的行不占覆盖(存的是「改过的键」,不是全量配置);值留空保存表示这个头不发送,删除改过的行表示回落默认值。改完立即生效,不用重启。": "值與預設值相同的行不佔覆蓋(存的是「改過的鍵」,不是全量配置);值留空儲存表示這個頭不傳送,刪除改過的行表示回落預設值。改完立即生效,不用重啟。", "值(留空 = 不发送)": "值(留空 = 不傳送)", "停止并说明原因": "停止並說明原因", "像素": "畫素", "允许其他设备访问前,需要设置面板管理员账号与密码。注册完成后会继续开启流程并重启应用。": "允許其他裝置存取前,需要設定面板管理員帳號與密碼。註冊完成後會繼續開啟流程並重新啟動應用程式。", "允许其他设备访问网关": "允許其他裝置存取閘道", "允许局域网内的设备访问网关": "允許區域網路內的裝置存取閘道器", "允许无 Key 裸跑": "允許無 Key 裸跑", "允许浏览器里的页面跨来源调用网关(/v1/*)": "允許瀏覽器裡的頁面跨來源呼叫閘道器(/v1/*)", "允许的域名": "允許的網域", "先发送原图,明确拒图后补救": "先發送原圖,明確拒圖後補救", "先在当前路由范围内找可用的视觉模型,这次请求由视觉模型直接回答,不回原模型;{fallback}": "先在當前路由範圍內找可用的視覺模型,這次請求由視覺模型直接回答,不回原模型;{fallback}", "先把图片交给视觉模型读一遍,再让原模型结合读到的内容回答。": "先把圖片交給視覺模型讀一遍,再讓原模型結合讀到的內容回答。", "全局配置": "全域配置", "全部已配置": "全部已配置", "全部数据(账号、事件日志、请求记录、调试报文、设置)保存在配置目录下的 agent2api.db 这一个 SQLite 数据库里。备份时只需拷贝这个文件;更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "全部資料(帳號、事件日誌、請求記錄、除錯報文、設定)儲存在配置目錄下的 agent2api.db 這一個 SQLite 資料庫裡。備份時只需複製這個檔案;更換儲存位置請設定環境變數 AGENT2API_PROXY_HOME 後重啟程式。", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 中,加密密钥单独保存在库外。跨机器备份请使用「整库备份 / 恢复」,不要只复制数据库。更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "全部資料(帳號、事件日誌、請求記錄、除錯報文、設定)統一儲存在配置目錄下的 agent2api.db 中,加密金鑰單獨儲存在庫外。跨機器備份請使用「整庫備份 / 恢復」,不要只複製資料庫。更換儲存位置請設定環境變數 AGENT2API_PROXY_HOME 後重啟程式。", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 这一个 SQLite 数据库里。备份时只需拷贝这个文件;更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "全部資料(帳號、事件日誌、請求記錄、除錯報文、設定)統一儲存在配置目錄下的 agent2api.db 這一個 SQLite 資料庫裡。備份時只需複製這個檔案;更換儲存位置請設定環境變數 AGENT2API_PROXY_HOME 後重啟程式。", "全部角色": "全部角色", "全部角色沿用原有行为,包含思考内容和工具参数;指定角色时只改消息正文,未选角色及思考内容、工具参数保持原样。": "全部角色沿用原有行為,包含思考內容和工具參數;指定角色時只改訊息正文,未選角色及思考內容、工具參數保持原樣。", "共享视觉模型已变更,请重新确认并保存,避免把图片交给未经确认的模型。": "共享視覺模型已變更,請重新確認並儲存,避免把圖片交給未經確認的模型。", "共用设置:{providers}": "共用設定:{providers}", "关闭后不再提供网页管理面板,本机桌面程序仍可正常管理;已开启的 API 转发不受影响。": "關閉後不再提供網頁管理面板,本機桌面程式仍可正常管理;已開啟的 API 轉發不受影響。", "关闭后手动上传 / 下载也会被拒绝。": "關閉後手動上傳 / 下載也會被拒絕。", "关闭后网关只监听 127.0.0.1,其他设备将无法直接连接,网页管理面板也会一并关闭。已配置的网关 Key 与账号不受影响。": "關閉後閘道只監聽 127.0.0.1,其他裝置將無法直接連線,網頁管理面板也會一併關閉。已設定的閘道 Key 與帳號不受影響。", "关闭后网关回到只监听 127.0.0.1,局域网内的设备将无法继续访问;已配置的网关 Key 与账号都不受影响。": "關閉後網關回到只監聽 127.0.0.1,區域網路內的裝置將無法繼續存取;已配置的閘道器 Key 與帳號都不受影響。", "关闭后,管理界面不再从局域网提供,只有本机的桌面程序可以管理;已开启的 API 转发不受影响。": "關閉後,管理介面不再從區域網路提供,只有本機的桌面程式可以管理;已開啟的 API 轉發不受影響。", "关闭局域网访问": "關閉區域網路存取", "关闭并重启": "關閉並重啟", "关闭思考": "關閉思考", "关闭窗口即退出程序,后台转发随之中断": "關閉視窗即退出程式,後臺轉發隨之中斷", "关闭窗口时最小化到托盘": "關閉視窗時最小化到托盤", "关闭窗口时程序不退出,转发继续在后台运行;退出请用托盘菜单": "關閉視窗時程式不退出,轉發繼續在後臺執行;退出請用托盤選單", "关闭网络访问": "關閉網路存取", "其余沿用上面的全局配置": "其餘沿用上面的全域配置", "兼容处理最长等待": "相容處理最長等待", "兼容处理最长等待(秒)": "相容處理最長等待(秒)", "内容拦截降级": "內容攔截降級", "内置客户端": "內建客戶端", "内置规则": "內建規則", "内置识别、自定义规则与来源声明": "內建識別、自定義規則與來源宣告", "内置软件标识规则": "內建軟體標識規則", "内置默认": "內建預設", "内置默认提示词": "內建預設提示詞", "再输入一次新密码": "再輸入一次新密碼", "凭据类请求头已脱敏。": "憑據類請求頭已脫敏。", "凭证只保存在这台手机上,按服务器分别存放": "憑證只儲存在這臺手機上,按伺服器分別存放", "出问题时把这一页截图,或点「复制全部信息」把文本贴进反馈,一般就能定位到大致原因。": "出問題時把這一頁截圖,或點「複製全部資訊」把文本貼進反饋,一般就能定位到大致原因。", "分享图标在 Safari 底部工具栏中间": "分享圖示在 Safari 底部工具欄中間", "分组名": "分組名", "分组名,例如「常用」": "分組名,例如「常用」", "切换视觉模型": "切換視覺模型", "切换视觉模型 · 视觉模型回答": "切換視覺模型 · 視覺模型回答", "切换视觉模型配置": "切換視覺模型配置", "切换账号重试次数": "切換帳號重試次數", "刚刚从 models.dev 拉到的最新数据": "剛剛從 models.dev 拉到的最新資料", "删除 {code}": "刪除 {code}", "删除分组": "刪除分組", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "刪除分組「{name}」?組內 {n} 個選單會移到「{target}」,不會丟。", "删除匹配内容": "刪除匹配內容", "删除后不再接受这个分类的来源声明,历史记录保留原来的名称和用量。": "刪除後不再接受這個分類的來源宣告,歷史記錄保留原來的名稱和用量。", "删除后,新请求不再使用这条规则;历史记录保持不变。": "刪除後,新請求不再使用這條規則;歷史記錄保持不變。", "删除客户端分类": "刪除客戶端分類", "删除状态码 {code}": "刪除狀態碼 {code}", "删除空分组「{name}」?": "刪除空分組「{name}」?", "删除识别规则": "刪除識別規則", "删除这个分组(组内菜单移到第一组)": "刪除這個分組(組內選單移到第一組)", "刷新": "重新整理", "刷新失败:{message}": "重新整理失敗:{message}", "前台运行": "前臺執行", "前缀": "字首", "剥离上游审核黑名单指纹(改写请求体里的模板句与表头)": "剝離上游稽核黑名單指紋(改寫請求體裡的模板句與表頭)", "功能建议": "功能建議", "加入备选": "加入備選", "加密备份必填,旧 SQL 可留空": "加密備份必填,舊 SQL 可留空", "包含": "包含", "包含日志与调试报文": "包含日誌與除錯報文", "包含:{items}": "包含:{items}", "匹配内容": "匹配內容", "匹配内容不能为空,且最多 {max} 个字符": "匹配內容不能為空,且最多 {max} 個字元", "匹配内容不能为空,最长 256 个字符": "匹配內容不能為空,最長 256 個字元", "匹配原文含零宽空格,词表预览用 \\u{200b} 标出;编辑时保留该字符。": "匹配原文含零寬空格,詞表預覽用 \\u{200b} 標出;編輯時保留該字元。", "匹配方式": "匹配方式", "区域(Region)": "區域(Region)", "华为云 OBS": "華為雲 OBS", "单独指定视觉模型": "單獨指定視覺模型", "单轮铸造上限": "單輪鑄造上限", "占用大小": "佔用大小", "历史未记录识别依据": "歷史未記錄識別依據", "原因未知": "原因未知", "原来的「全局方式 + 模型单独配置」已按相同意思自动填成下面的模型名单,可以照用也可以重新调整;改动一处之后就会按新形式存下来。": "原來的「全域方式 + 模型單獨設定」已按相同意思自動填成下面的模型名單,可以照用也可以重新調整;改動一處之後就會按新形式存下來。", "原模型不能直接看图": "原模型不能直接看圖", "原模型根据识读内容回答": "原模型根據識讀內容回答", "去反馈": "去反饋", "去申请": "去申請", "反馈与需求": "反饋與需求", "发现缺货时一轮最多铸几个(连铸之间固定隔 500 毫秒)。默认 1 个:SDK 同一实例连铸容易互相干扰。调大补货更快,但单轮连铸越多越容易触发上游风控。可填 1–5。": "發現缺貨時一輪最多鑄幾個(連鑄之間固定隔 500 毫秒)。預設 1 個:SDK 同一例項連鑄容易互相干擾。調大補貨更快,但單輪連鑄越多越容易觸發上游風控。可填 1–5。", "取消勾选后只备份业务数据(账号、配置与余额记录),文件显著变小;事件日志、请求统计与调试报文不会进备份文件。": "取消勾選後只備份業務資料(帳號、配置與餘額記錄),檔案顯著變小;事件日誌、請求統計與除錯報文不會進備份檔案。", "变更网页管理面板": "變更網頁管理面板", "只列单独配置过的家,其余沿用上面的全局配置": "只列單獨配置過的家,其餘沿用上面的全域配置", "只对「排队制」的上游生效:模型繁忙时上游不报错,只回一句「建议 N 秒后再来」,网关按建议时长等一会儿再发同一请求,等满次数仍排不上才把「排队中」作为错误返回(HTTP 503,文案会说明这不是登录态或额度问题)。等待发生在首个字节之前,吃的是「等待响应超时」那份预算 —— 两项设置一起决定一次请求最多卡多久;排队不会标记账号限额、也不会换账号(换谁都一样在排队)。保存后对下一个请求立即生效,不用重启。": "只對「排隊制」的上游生效:模型繁忙時上游不報錯,只回一句「建議 N 秒後再來」,閘道器按建議時長等一會兒再發同一請求,等滿次數仍排不上才把「排隊中」作為錯誤返回(HTTP 503,文案會說明這不是登入態或額度問題)。等待發生在首個位元組之前,吃的是「等待響應超時」那份預算 —— 兩項設定一起決定一次請求最多卡多久;排隊不會標記帳號限額、也不會換帳號(換誰都一樣在排隊)。儲存後對下一個請求立即生效,不用重啟。", "只影响识读那一步的思考深度。": "隻影響識讀那一步的思考深度。", "只影响读图那一步的思考深度;两块设置统一用这个选择。": "只影響讀圖那一步的思考深度;兩塊設定統一用這個選擇。", "只有已安装、启用并声明了设置项的提供商会出现在这里。可前往插件页检查安装与启用状态。": "只有已安裝、啟用並宣告了設定項目的供應商會出現在這裡。可前往外掛頁檢查安裝與啟用狀態。", "只沿用模型与思考等级,不借用视觉服务的内部 Key;仍受当前请求权限限制。": "只沿用模型與思考等級,不借用視覺服務的內部 Key;仍受當前請求許可權限制。", "只清掉这个浏览器存的 Key,不影响网关": "只清掉這個瀏覽器存的 Key,不影響閘道器", "只覆盖指定提供商的指定模型,其余跟随全局。": "只覆蓋指定提供商的指定模型,其餘跟隨全域。", "可识别标识": "可識別標識", "可跨提供商多选;只处理这些模型看不了的图片。": "可跨提供商多選;只處理這些模型看不了的圖片。", "可跨提供商多选;这些模型的请求会整体改交视觉模型。": "可跨提供商多選;這些模型的請求會整體改交視覺模型。", "可选。部分服务(如中国科技云数据胶囊)会按 User-Agent 校验凭据绑定的客户端类型,此时填写包含该类型名的字符串(例如 rclone/v1.67.0)。留空则维持默认。": "可選。部分服務(如中國科技雲資料膠囊)會按 User-Agent 校驗憑據繫結的客戶端型別,此時填寫包含該型別名的字串(例如 rclone/v1.67.0)。留空則維持預設。", "合计只累加当前筛选后可见的账号,筛选、搜索一改数字就跟着变。": "合計只累加目前篩選後可見的帳號,篩選、搜尋一改數字就跟著變。", "合计按整组统计(默认):不受筛选、搜索影响,被筛掉与已禁用的账号也计入。": "合計按整組統計(預設):不受篩選、搜尋影響,被篩掉與已停用的帳號也計入。", "同一会话、同一问题、相同权限范围内复用;追问新细节会重新识读。": "同一對話、同一問題、相同權限範圍內重用;追問新細節會重新識讀。", "同一会话、同一问题、相同权限范围内复用;追问新细节会重新识读,缓存只在本机内存。": "同一會話、同一問題、相同許可權範圍內複用;追問新細節會重新識讀,快取只在本機記憶體。", "同一会话在 5 分钟内尽量跟住同一个账号;停了 5 分钟再发就算新会话。多数场景用它 —— 多轮对话少换号,也不至于把账号焊死。": "同一會話在 5 分鐘內儘量跟住同一個帳號;停了 5 分鐘再發就算新會話。多數場景用它 —— 多輪對話少換號,也不至於把帳號焊死。", "同一会话在 6 小时内跟住同一个账号;适合一坐几个小时的长会话,上游的上下文缓存能吃到更多。": "同一會話在 6 小時內跟住同一個帳號;適合一坐幾個小時的長會話,上游的上下文快取能吃到更多。", "同一提供商的同一模型不能重复配置": "同一提供商的同一模型不能重複配置", "同一账号重试次数": "同一帳號重試次數", "同时开放网页管理面板": "同時開放網頁管理面板", "同步密码": "同步密碼", "名单最多 {max} 个状态码": "名單最多 {max} 個狀態碼", "后端没有返回版本信息": "後端沒有返回版本資訊", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "含固定項「設定」,不可整組隱藏(可以單獨隱藏組內其它選單)", "启动与托盘": "啟動與托盤", "启动时间": "啟動時間", "启用云同步": "啟用雲同步", "启用图片兼容": "啟用圖片相容", "启用规则": "啟用規則", "启用规则:{name}": "啟用規則:{name}", "命中依据:{header} · {pattern}": "命中依據:{header} · {pattern}", "命中这些上游状态码的失败不在同一账号重发,直接换下一个账号继续试(换号占用「切换账号重试次数」,换满仍失败才把错误原样返回给客户端)。输入 100–599 的状态码后回车添加,点 × 或退格删除;默认 402(积分不足)。清空全部表示任何错误都照常重试。": "命中這些上游狀態碼的失敗不在同一帳號重發,直接換下一個帳號繼續試(換號佔用「切換帳號重試次數」,換滿仍失敗才把錯誤原樣返回給客戶端)。輸入 100–599 的狀態碼後回車新增,點 × 或退格刪除;預設 402(積分不足)。清空全部表示任何錯誤都照常重試。", "品牌 Logo": "品牌 Logo", "品牌设置": "品牌設定", "品牌设置已保存": "品牌設定已儲存", "品牌预览": "品牌預覽", "哪些模型用这种方式": "哪些模型用這種方式", "固定": "固定", "图标经 Magpie 引入,未单独记录 Lobe Icons 的图标版本;以上版本仅用于核对许可。": "圖示經 Magpie 引入,未單獨記錄 Lobe Icons 的圖示版本;以上版本僅用於核對授權。", "图片与相关对话将交给配置的视觉模型处理,可能增加等待时间和费用。请确认这些服务可以接收你的图片。": "圖片與相關對話將交給配置的視覺模型處理,可能增加等待時間和費用。請確認這些服務可以接收你的圖片。", "图片先交给 {model} 识读,再由原模型回答这次请求。": "圖片先交給 {model} 識讀,再由原模型回答這次請求。", "图片兼容": "圖片相容", "图片兼容当前是关闭的:下面两块设置照样能改、会被保留,但不会对任何请求生效。": "圖片相容目前是關閉的:下面兩塊設定照樣能改、會被保留,但不會對任何請求生效。", "图片兼容设置已保存,仅对新请求生效。": "圖片相容設定已儲存,僅對新請求生效。", "图片兼容设置读取失败": "圖片相容設定讀取失敗", "图片压缩": "圖片壓縮", "图片最长边超过这个值就等比缩小(只缩不放)。默认 2048,可填 256–8192 —— 多数视觉模型在这个量级已经够用,调小更省流量、但细节会丢。": "圖片最長邊超過這個值就等比縮小(只縮不放)。預設 2048,可填 256–8192 —— 多數視覺模型在這個量級已經夠用,調小更省流量、但細節會丟。", "图片能力未知时": "圖片能力未知時", "图片过大、格式错误或下载失败不会被当作模型不支持图片。": "圖片過大、格式錯誤或下載失敗不會被當作模型不支援圖片。", "在同一个账号上原地重发几次(不含首发;整条请求共用一份,用完后换来的账号只发一次就继续换)。可填 0–10,0 表示失败立即换号。": "在同一個帳號上原地重發幾次(不含首發;整條請求共用一份,用完後換來的帳號只發一次就繼續換)。可填 0–10,0 表示失敗立即換號。", "在这里直接编辑提示词正文:保存后以这份文本为准(优先于上面的提示词文件),清空则回到文件 / 内置默认。改一个字不必再去编辑器里开文件。": "在這裡直接編輯提示詞正文:儲存後以這份文本為準(優先於上面的提示詞檔案),清空則回到檔案 / 內建預設。改一個字不必再去編輯器裡開檔案。", "在途请求": "在途請求", "地址格式不对。填「IP 或域名:端口」,可带 http:// 或 https://,例如 192.168.1.23:3065": "地址格式不對。填「IP 或域名:連接埠」,可帶 http:// 或 https://,例如 192.168.1.23:3065", "坚果云": "堅果雲", "坚果云需使用「第三方应用密码」(账户信息 → 安全选项里生成),地址必须是 /dav/ 下的目录。": "堅果雲需使用「第三方應用密碼」(帳戶資訊 → 安全選項裡生成),地址必須是 /dav/ 下的目錄。", "填「IP 或域名:端口」。协议可写 http:// 或 https://,不写默认 http;http 不写端口默认 3065,https 默认 443。地址里的 /m、/v1 会自动去掉。": "填「IP 或域名:連接埠」。協議可寫 http:// 或 https://,不寫預設 http;http 不寫連接埠預設 3065,https 預設 443。地址裡的 /m、/v1 會自動去掉。", "处理方式": "處理方式", "处理示意": "處理示意", "备份中…": "備份中…", "备份包含账号凭证、网关 Key、GitHub 令牌与云同步凭据的恢复密钥,整个文件受备份密码保护。请分开保管文件与密码;忘记密码无法恢复。": "備份包含帳號憑證、閘道器 Key、GitHub 權杖與雲同步憑據的恢復金鑰,整個檔案受備份密碼保護。請分開保管檔案與密碼;忘記密碼無法恢復。", "备份密码": "備份密碼", "备份密码不能超过 1024 字节": "備份密碼不能超過 1024 位元組", "备份密码至少需要 12 位,建议使用较长且不重复的密码": "備份密碼至少需要 12 位,建議使用較長且不重複的密碼", "备份整库": "備份整庫", "备份文件内含全部账号凭证、网关 API Key 与面板管理员凭据,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "備份檔案內含全部帳號憑證、閘道器 API Key 與面板管理員憑據,可直接用於登入。請妥善保管,不要外傳或上傳到公共位置。", "备选模型": "備選模型", "备选顺序 · 从上到下依次尝试": "備選順序 · 從上到下依次嘗試", "复制全部信息": "複製全部資訊", "复制给客户端": "複製給客戶端", "复用与备选、单独配置、兼容细节": "複用與備選、單獨配置、相容細節", "复用相同图片的识读结果": "複用相同圖片的識讀結果", "外观": "外觀", "外观 · 接入 · 关于": "外觀 · 接入 · 關於", "多个客户端标识冲突": "多個客戶端標識衝突", "天": "天", "天数": "天數", "失败 {n} 个": "失敗 {n} 個", "失败 {n} 个:{detail}": "失敗 {n} 個:{detail}", "失败后最多再换几个账号试(填 N = 最多换 N 个,首发那个不算)。换到同一家名下另一个账号、或换到另一家,都各算一次;换满仍失败就返回错误。可填 0–10,0 表示失败立即报错。": "失敗後最多再換幾個帳號試(填 N = 最多換 N 個,首發那個不算)。換到同一家名下另一個帳號、或換到另一家,都各算一次;換滿仍失敗就返回錯誤。可填 0–10,0 表示失敗立即報錯。", "如果主库已被替换到一半,替换前的数据在 backups/ 目录里仍可整文件拷回。": "如果主庫已被替換到一半,替換前的資料在 backups/ 目錄裡仍可整檔案拷回。", "存储桶(Bucket)": "儲存桶(Bucket)", "存储概况已刷新": "儲存概況已重新整理", "安全": "安全", "安装到主屏幕": "安裝到主螢幕", "安装到桌面": "安裝到桌面", "安装包形态": "安裝包形態", "完全相同": "完全相同", "官方原文只有一句:声明自己是 ZCode。": "官方原文只有一句:宣告自己是 ZCode。", "实际处理:": "實際處理:", "客户端 system 原样出站。": "客戶端 system 原樣出站。", "客户端 system 原样出站(只靠指纹脱敏改写模板句)。": "客戶端 system 原樣出站(只靠指紋脫敏改寫模板句)。", "客户端专用请求头": "客戶端專用請求頭", "客户端名称": "客戶端名稱", "客户端名称不能为空,最长 80 个字符": "客戶端名稱不能為空,最長 80 個字元", "客户端名称重复或与内置名称冲突": "客戶端名稱重複或與內建名稱衝突", "客户端标识无效或重复": "客戶端標識無效或重複", "客户端识别": "客戶端識別", "客户端识别入口尚未就绪,请刷新页面后重试": "客戶端識別入口尚未就緒,請重新整理頁面後重試", "客户端识别设置读取失败": "客戶端識別設定讀取失敗", "客户端(Claude Code / Codex 等 CLI)会在 system 提示词里注入几十句固定模板,上游按逐字匹配审核,命中就整单拦截(HTTP 400)。指纹脱敏能改写实测命中过的那几句,但换一个客户端版本就可能冒出新的。这里可以把 system 整段换成网关自己那份:①「透传」= 不动客户端 system(默认,行为与之前完全一致);②「替换」= 删掉客户端所有 system / developer 消息,换成网关的提示词(客户端项目规范随之消失);③「追加」= 在开头连续 system 块之后插入一条网关提示词,既有消息逐字不动(客户端规范与网关提示词并用)。那份提示词有两个来源:提示词文件(留空用内置默认),或直接在界面上编辑正文 —— 编辑过就以那份正文为准(优先于文件),清空则回到文件 / 内置默认。另外,透传 / 追加模式下撞了内容拦截(多半是指纹误报)时,网关会自动换一段最小中性提示词重试一次,并把「降级期」开到次日 00:00 —— 期间所有请求直接带中性提示词出门,不再先撞一次 400;这里能看见并提前解除它。上面几项是**默认值**:想给某个提供商单独配,用下面的「按提供商」加一行(带「网关自带」的家默认就列在那里)—— 不同的上游对这些内容的接受程度不一样。": "客戶端(Claude Code / Codex 等 CLI)會在 system 提示詞裡注入幾十句固定模板,上游按逐字匹配稽核,命中就整單攔截(HTTP 400)。指紋脫敏能改寫實測命中過的那幾句,但換一個客戶端版本就可能冒出新的。這裡可以把 system 整段換成閘道器自己那份:①「透傳」= 不動客戶端 system(預設,行為與之前完全一致);②「替換」= 刪掉客戶端所有 system / developer 訊息,換成閘道器的提示詞(客戶端專案規範隨之消失);③「追加」= 在開頭連續 system 塊之後插入一條閘道器提示詞,既有訊息逐字不動(客戶端規範與閘道器提示詞並用)。那份提示詞有兩個來源:提示詞檔案(留空用內建預設),或直接在介面上編輯正文 —— 編輯過就以那份正文為準(優先於檔案),清空則回到檔案 / 內建預設。另外,透傳 / 追加模式下撞了內容攔截(多半是指紋誤報)時,閘道器會自動換一段最小中性提示詞重試一次,並把「降級期」開到次日 00:00 —— 期間所有請求直接帶中性提示詞出門,不再先撞一次 400;這裡能看見並提前解除它。上面幾項是**預設值**:想給某個提供商單獨配,用下面的「按提供商」加一行(帶「閘道器自帶」的家預設就列在那裡)—— 不同的上游對這些內容的接受程度不一樣。", "客户端(Claude Code / Codex 等 CLI)会往 system 里塞几十句固定模板,上游逐字审核,命中就整单拦截(HTTP 400)。「模式」决定网关怎么处理这份 system:透传 = 原样不动(默认);替换 = 删掉客户端的 system / developer,换成网关提示词;追加 = 保留客户端内容,只在最前面插一条网关提示词。网关提示词来自「提示词文件」或界面里编辑的正文(正文优先,清空回到文件 / 内置默认)。撞上拦截时会自动改用一段最小中性提示词,次日 00:00 自动恢复,也可以随时解除。": "客戶端(Claude Code / Codex 等 CLI)會往 system 裡塞幾十句固定模板,上游逐字稽核,命中就整單攔截(HTTP 400)。「模式」決定閘道器怎麼處理這份 system:透傳 = 原樣不動(預設);替換 = 刪掉客戶端的 system / developer,換成閘道器提示詞;追加 = 保留客戶端內容,只在最前面插一條閘道器提示詞。閘道器提示詞來自「提示詞檔案」或介面裡編輯的正文(正文優先,清空回到檔案 / 內建預設)。撞上攔截時會自動改用一段最小中性提示詞,次日 00:00 自動恢復,也可以隨時解除。", "家之间仍按优先级,只有同一家内部轮流用各账号 —— 想优先用某几家、又不愿把某一家的某个账号焊死时用它。": "家之間仍按優先順序,只有同一家內部輪流用各帳號 —— 想優先用某幾家、又不願把某一家的某個帳號焊死時用它。", "家内轮询": "家內輪詢", "容器内更新": "容器內更新", "密码、文件或密钥校验失败时不会替换主库;替换阶段失败会自动尝试还原,实际结果以上方错误说明为准。": "密碼、檔案或金鑰校驗失敗時不會替換主庫;替換階段失敗會自動嘗試還原,實際結果以上方錯誤說明為準。", "密码加密 · 包含恢复密钥": "密碼加密 · 包含恢復金鑰", "密码至少 8 位": "密碼至少 8 位", "对话里内嵌的 base64 大图(截图、照片)既撑大请求体,也拉高按像素折算的上游计费。开启后,网关在转发前把超过阈值的图等比缩到长边上限、重新存成 JPEG —— 只改发给上游的副本,请求日志里保存的仍是你发来的原图。同一张原图在多轮对话里重复出现时复用上一次的压缩结果,不会每轮重算。http 链接图片、GIF 动图、SVG 一律不动;压完反而更大的图也保留原图。只作用在对话场景,生图与图片编辑不受影响。默认开启;不想要的话把开关关掉即可。": "對話裡內嵌的 base64 大圖(截圖、照片)既撐大請求體,也拉高按畫素折算的上游計費。開啟後,閘道器在轉發前把超過閾值的圖等比縮到長邊上限、重新存成 JPEG —— 只改發給上游的副本,請求日誌裡儲存的仍是你發來的原圖。同一張原圖在多輪對話裡重複出現時複用上一次的壓縮結果,不會每輪重算。http 連結圖片、GIF 動圖、SVG 一律不動;壓完反而更大的圖也保留原圖。只作用在對話場景,生圖與圖片編輯不受影響。預設開啟;不想要的話把開關關掉即可。", "导入前会把本机的 account.key 改名备份(account.key.bak-时间戳),不会直接删除。": "匯入前會把本機的 account.key 改名備份(account.key.bak-時間戳),不會直接刪除。", "导入完成:{summary}": "匯入完成:{summary}", "导入密钥失败:{message}": "匯入金鑰失敗:{message}", "导入密钥并继续": "匯入金鑰並繼續", "导入账号": "匯入帳號", "导出中…": "匯出中…", "导出会把全部账号与自定义提供商定义写入一个 JSON 文件,可以拷到另一台机器上导入后继续使用。导入采用合并策略:同提供商下按业务身份(UID / userId / apiKey 等)去重 —— 已存在的账号只更新凭证,保留本机原有的优先级顺序;新账号追加到转发顺序末尾,不会抢占当前正在使用的账号;自定义提供商定义按 id 合并,本机缺失时自动补建。": "匯出會把全部帳號與自定義提供商定義寫入一個 JSON 檔案,可以拷到另一臺機器上匯入後繼續使用。匯入採用合併策略:同提供商下按業務身份(UID / userId / apiKey 等)去重 —— 已存在的帳號只更新憑證,保留本機原有的優先順序順序;新帳號追加到轉發順序末尾,不會搶佔當前正在使用的帳號;自定義提供商定義按 id 合併,本機缺失時自動補建。", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义": "匯出檔案內含 accessToken / refreshToken / apiKey 等憑證與自定義提供商定義", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "匯出檔案內含 accessToken / refreshToken / apiKey 等憑證與自定義提供商定義,可直接用於登入。請妥善保管,不要外傳或上傳到公共位置。", "导出账号": "匯出帳號", "将数据库和恢复凭证所需的密钥一起保存为密码加密的 .a2ab 备份,可在 Windows、macOS 或 Linux 上恢复,无需手工复制密钥。恢复时整体替换账号、配置、日志与桌面设置,并使用目标机器的密钥重新加密凭证,不覆盖本机已有钥匙。可取消包含日志以减小文件;旧 .sql 备份仍可导入。恢复前自动保留安全备份,完成后需要重新登录管理面板。": "將資料庫和恢復憑證所需的金鑰一起儲存為密碼加密的 .a2ab 備份,可在 Windows、macOS 或 Linux 上恢復,無需手工複製金鑰。恢復時整體替換帳號、配置、日誌與桌面設定,並使用目標機器的金鑰重新加密憑證,不覆蓋本機已有鑰匙。可取消包含日誌以減小檔案;舊 .sql 備份仍可匯入。恢復前自動保留安全備份,完成後需要重新登入管理面板。", "尚未注册管理员。开启「网关 → 网络访问 → 允许其他设备访问网关」时会引导注册,也可以从登录页注册。": "尚未註冊管理員。開啟「閘道 → 網路存取 → 允許其他裝置存取閘道」時會引導註冊,也可以從登入頁註冊。", "尚未注册管理员:管理接口不需要登录。开启「允许局域网访问」时会引导注册,也可以从登录页注册。": "尚未註冊管理員:管理介面不需要登入。開啟「允許區域網路存取」時會引導註冊,也可以從登入頁註冊。", "尚未配置视觉分析模型": "尚未配置視覺分析模型", "局域网开放后,管理接口要求登录。请设置管理员账号与密码,注册完成会直接继续开启流程。": "區域網路開放後,管理介面要求登入。請設定管理員帳號與密碼,註冊完成會直接繼續開啟流程。", "局域网访问": "區域網路存取", "工具用法与环境说明那一大段。": "工具用法與環境說明那一大段。", "已为「{label}」单独配置提示词": "已為「{label}」單獨配置提示詞", "已作为独立应用运行": "已作為獨立應用執行", "已使用本机密钥重新加密 {n} 项凭证,原有密钥未被覆盖。": "已使用本機金鑰重新加密 {n} 項憑證,原有金鑰未被覆蓋。", "已保存 {count} / {limit} 条报文(超出后丢弃最旧的)。": "已儲存 {count} / {limit} 條報文(超出後丟棄最舊的)。", "已保存的值不符合当前插件规则,请修改或恢复默认值。": "已儲存的值不符合目前外掛規則,請修改或還原預設值。", "已保存,留空则不修改": "已儲存,留空則不修改", "已保存,留空沿用": "已儲存,留空沿用", "已关闭": "已關閉", "已关闭 models.dev 联网刷新": "已關閉 models.dev 聯網重新整理", "已关闭。{note}": "已關閉。{note}", "已关闭「{label}」的网关自带提示词:能否通过上游校验取决于上游当前口径": "已關閉「{label}」的閘道器自帶提示詞:能否通過上游校驗取決於上游當前口徑", "已关闭会话图片压缩": "已關閉會話圖片壓縮", "已关闭出站指纹脱敏": "已關閉出站指紋脫敏", "已关闭开发者角色兼容": "已關閉開發者角色相容", "已关闭第三方模型回答完自动折叠过程": "已關閉第三方模型回答完自動摺疊過程", "已关闭网关跨域访问": "已關閉閘道器跨域存取", "已关闭:不额外补阶段标记,由客户端决定过程展示。": "已關閉:不額外補階段標記,由客戶端決定過程展示。", "已删除分组「{name}」": "已刪除分組「{name}」", "已取消「{label}」的单独配置": "已取消「{label}」的單獨配置", "已取消安装": "已取消安裝", "已取消导入": "已取消匯入", "已取消导出": "已取消匯出", "已取消恢复": "已取消恢復", "已启用 {count} 条规则,应用于{scope}。": "已啟用 {count} 條規則,應用於{scope}。", "已启用登录": "已啟用登入", "已复制全部版本信息": "已複製全部版本資訊", "已应用": "已應用", "已开启": "已開啟", "已开启:为正常完成的 Codex 回答补阶段标记。": "已開啟:為正常完成的 Codex 回答補階段標記。", "已开启:其他设备把 API 地址指向 {url}{panel}。": "已開啟:其他裝置把 API 地址指向 {url}{panel}。", "已开启:监听 0.0.0.0,允许其他设备访问。": "已開啟:監聽 0.0.0.0,允許其他裝置存取。", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "已恢復預設分組:概覽 / 轉發鏈路 / 診斷 / 系統", "已截断": "已截斷", "已指定出口": "已指定出口", "已接管": "已接管", "已改回内置默认提示词": "已改回內建預設提示詞", "已新建分组「{name}」,点组头的 + 把菜单移进来": "已新建分組「{name}」,點組頭的 + 把選單移進來", "已清掉「{label}」界面编辑的正文": "已清掉「{label}」介面編輯的正文", "已清掉界面编辑的提示词(回落文件 / 内置默认)": "已清掉介面編輯的提示詞(回落檔案 / 內建預設)", "已清空,回落插件内置默认值": "已清空,回落外掛內建預設值", "已清除本机保存的 API Key": "已清除本機儲存的 API Key", "已生效": "已生效", "已用时 {time}": "已用時 {time}", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。": "已自動切換到最小中性提示詞(撞了上游內容攔截,多半是 system 指紋誤報),到 {until} 自動解除。", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "已自動切換到最小中性提示詞(撞了上游內容攔截,多半是 system 指紋誤報),到 {until} 自動解除。期間本模式自己的提示詞不會發出;把提示詞改好後可以立即解除。", "已自动改用最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。": "已自動改用最小中性提示詞(撞了上游內容攔截,多半是 system 指紋誤報),到 {until} 自動解除。", "已自定义": "已自訂", "已运行": "已執行", "已退出登录": "已退出登入", "已隐藏": "已隱藏", "巴西葡萄牙语": "巴西葡萄牙語", "希望接入新的提供商或模型": "希望接入新的提供商或模型", "库中 schema": "庫中 schema", "库主文件的大小(不含运行期间的 WAL 临时文件,退出时已自动并回)。": "庫主檔案的大小(不含執行期間的 WAL 臨時檔案,退出時已自動並回)。", "库存目标": "庫存目標", "应用提供商": "應用提供商", "应用版本:{version}": "應用版本:{version}", "应用状态": "應用狀態", "应用窗口": "應用視窗", "建立上游 TCP/TLS 连接或代理隧道的最大等待时间(秒),默认 30 秒,范围 1~3600。": "建立上游 TCP/TLS 連線或代理隧道的最大等待時間(秒),預設 30 秒,範圍 1~3600。", "开发构建": "開發構建", "开发者角色兼容": "開發者角色相容", "开发者角色兼容设置已刷新": "開發者角色相容設定已重新整理", "开启前需要注册面板管理员,已注册会跳过此步骤。管理接口需要管理员会话或网关 Key;API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。": "開啟前需要註冊面板管理員,已註冊會略過此步驟。管理介面需要管理員工作階段或閘道 Key;API 呼叫需要已啟用的閘道 Key,沒有時會自動建立一把「預設」Key。", "开启后新发生的请求才会被记录(已经过去的请求补不回来)。报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "開啟後新發生的請求才會被記錄(已經過去的請求補不回來)。報文統一存放在本地資料庫裡,只保留最近 500 條(超出後丟棄最舊的),條數見左側「資料 → 資料儲存」的「除錯報文」。", "开启后新发生的请求才会被记录(已经过去的请求补不回来),请求日志的「预览对话」也随之开始保存原始正文。上游报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "開啟後新發生的請求才會被記錄(已經過去的請求補不回來),請求日誌的「預覽對話」也隨之開始儲存原始正文。上游報文統一存放在本地資料庫裡,只保留最近 500 條(超出後丟棄最舊的),條數見左側「資料 → 資料儲存」的「除錯報文」。", "开启后监听所有 IPv4 网卡(0.0.0.0),并不局限于局域网,也不会自动开放到公网;实际访问范围取决于网络与防火墙设置。修改后需要重启应用。": "開啟後監聽所有 IPv4 網路介面卡(0.0.0.0),並不侷限於區域網路,也不會自動開放到公網;實際存取範圍取決於網路與防火牆設定。修改後需要重新啟動應用程式。", "开启后网关将监听所有 IPv4 网卡(0.0.0.0),访问范围不再限于本机,也不局限于局域网。是否能从公网访问取决于网络与防火墙设置。": "開啟後閘道將監聽所有 IPv4 網路介面卡(0.0.0.0),存取範圍不再限於本機,也不侷限於區域網路。是否能從公網存取取決於網路與防火牆設定。", "开启后网关将监听所有网卡,同一局域网内的设备即可把 API 地址指向本机 IP 一起使用;管理接口从此要求管理员会话或网关 Key,转发接口在没有一把启用的 Key 时也会拒绝服务(届时会自动创建一把名为「默认」的 Key)。": "開啟後閘道器將監聽所有網路卡,同一區域網路內的裝置即可把 API 地址指向本機 IP 一起使用;管理介面從此要求管理員會話或閘道器 Key,轉發介面在沒有一把啟用的 Key 時也會拒絕服務(屆時會自動建立一把名為「預設」的 Key)。", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 套餐池(Start Plan)」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "開啟後,關閉視窗不只是隱藏,而是把介面視窗整個銷燬:底層的 WebView2 六個常駐程序(約 200MB 記憶體)隨之退出,閘道器轉發、定時簽到、餘額查詢都在後臺程序裡繼續,不受影響;需要介面時點托盤圖示重新開啟(WebView 冷啟動約 1 秒)。注意:介面銷燬期間「ZCode 套餐池(Start Plan)」通道的驗證碼權杖由介面鑄造,無法補充 —— 走該通道的請求會以 503 落進請求日誌(寫明原因),重新開啟介面即自動恢復。此開關只在「關閉視窗時最小化到托盤」開啟時有意義,最小化視窗不受影響。", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 活动套餐」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。与「开机自动启动」同时开启时,开机后也不建界面(只留托盘与后台进程),点托盘才打开 —— 效果与关窗后一致。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "開啟後,關閉視窗不只是隱藏,而是把介面視窗整個銷燬:底層的 WebView2 六個常駐程序(約 200MB 記憶體)隨之退出,閘道器轉發、定時簽到、餘額查詢都在後臺程序裡繼續,不受影響;需要介面時點托盤圖示重新開啟(WebView 冷啟動約 1 秒)。注意:介面銷燬期間「ZCode 活動套餐」通道的驗證碼權杖由介面鑄造,無法補充 —— 走該通道的請求會以 503 落進請求日誌(寫明原因),重新開啟介面即自動恢復。與「開機自動啟動」同時開啟時,開機後也不建介面(只留托盤與後臺程序),點托盤才打開 —— 效果與關窗後一致。此開關只在「關閉視窗時最小化到托盤」開啟時有意義,最小化視窗不受影響。", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 活动套餐」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "開啟後,關閉視窗不只是隱藏,而是把介面視窗整個銷燬:底層的 WebView2 六個常駐程序(約 200MB 記憶體)隨之退出,閘道器轉發、定時簽到、餘額查詢都在後臺程序裡繼續,不受影響;需要介面時點托盤圖示重新開啟(WebView 冷啟動約 1 秒)。注意:介面銷燬期間「ZCode 活動套餐」通道的驗證碼權杖由介面鑄造,無法補充 —— 走該通道的請求會以 503 落進請求日誌(寫明原因),重新開啟介面即自動恢復。此開關只在「關閉視窗時最小化到托盤」開啟時有意義,最小化視窗不受影響。", "开启后,关闭窗口会销毁界面并释放 WebView 进程,网关转发、定时签到、余额查询仍在后台继续。ZCode 模型请求免验证时不受影响;上游要求人机验证时,需要重新打开界面,在账号的「套餐明细」中主动完成验证。此开关只在「关闭窗口时最小化到托盘」开启时有意义。": "開啟後,關閉視窗會銷毀介面並釋放 WebView 程序,閘道轉發、定時簽到、餘額查詢仍在背景繼續。ZCode 模型請求免驗證時不受影響;上游要求人機驗證時,需要重新開啟介面,在帳號的「套餐明細」中主動完成驗證。此開關只在「關閉視窗時最小化到系統匣」開啟時有意義。", "开启后,新发生的请求会保存上游调试报文与下游正文,历史请求无法补录。上游调试报文只保留最近 500 条;两侧条数可在「数据 → 数据存储」查看。关闭开关不会删除已保存的报文,可在请求日志中选择「仅清空报文原文」一起清理。": "開啟後,新發生的請求會儲存上游除錯報文與下游正文,歷史請求無法補錄。上游除錯報文只保留最近 500 條;兩側條數可在「資料 → 資料儲存」檢視。關閉開關不會刪除已儲存的報文,可在請求日誌中選擇「僅清空報文原文」一起清理。", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。": "開啟後,登入頁在瀏覽器後臺自動完成驗證(對真人無感),而指令碼每次嘗試都要先算一道題 —— 暴力破解與搶注的成本顯著上升。僅影響面板的登入 / 註冊,與 API 客戶端的 API Key 無關。", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。桌面端与网页端各自独立:桌面端主要服务本机与局域网,网页端(Docker / 服务端)直接暴露在网络上的登录页风险更高,建议保持开启。": "開啟後,登入頁在瀏覽器後臺自動完成驗證(對真人無感),而指令碼每次嘗試都要先算一道題 —— 暴力破解與搶注的成本顯著上升。僅影響面板的登入 / 註冊,與 API 客戶端的 API Key 無關。桌面版與網頁端各自獨立:桌面版主要服務本機與區域網路,網頁端(Docker / 服務端)直接暴露在網路上的登入頁風險更高,建議保持開啟。", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "開啟後,閘道器會把每次轉發**發給上游的請求**(請求頭 + 請求體)與**上游返回的響應**(狀態碼 + 響應頭 + 響應體)完整儲存到本地,供請求日誌頁的「詳情」檢視。請求頭裡的 Authorization、Cookie、API Key 等憑據欄位一律替換成 [redacted],不會明文落盤;請求體與響應體按原樣儲存(可能包含你的對話內容)。報文只保留最近 500 條,超出後丟棄最舊的。這是排障用的臨時開關,不需要時建議關閉。", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看;请求日志详情的「预览对话」也依赖本开关 —— 它保存的是客户端发来的请求体与网关下发的响应体(两侧各截断到 128 KiB),不开这个开关时预览对话没有数据可看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。上游报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "開啟後,閘道器會把每次轉發**發給上游的請求**(請求頭 + 請求體)與**上游返回的響應**(狀態碼 + 響應頭 + 響應體)完整儲存到本地,供請求日誌頁的「詳情」檢視;請求日誌詳情的「預覽對話」也依賴本開關 —— 它儲存的是客戶端發來的請求體與閘道器下發的響應體(兩側各截斷到 128 KiB),不開這個開關時預覽對話沒有資料可看。請求頭裡的 Authorization、Cookie、API Key 等憑據欄位一律替換成 [redacted],不會明文落盤;請求體與響應體按原樣儲存(可能包含你的對話內容)。上游報文只保留最近 500 條,超出後丟棄最舊的。這是排障用的臨時開關,不需要時建議關閉。", "开启后,能连接到网关的设备可通过浏览器访问网页管理面板,需使用管理员账号登录。访问范围与网关相同,并不局限于局域网。": "開啟後,能連線到閘道的裝置可透過瀏覽器存取網頁管理面板,需使用管理員帳號登入。存取範圍與閘道相同,並不侷限於區域網路。", "开启后,调用方可以用专用请求头声明已登记的客户端名称。这不是身份认证,只用于日志和统计,不会获得额外权限。": "開啟後,呼叫方可以用專用請求頭宣告已登記的客戶端名稱。這不是身份認證,只用於日誌和統計,不會獲得額外許可權。", "开启局域网访问": "開啟區域網路存取", "开启来源声明": "開啟來源宣告", "开启网络访问": "開啟網路存取", "开放后,局域网内其他设备的浏览器打开本机 IP 即可进入管理面板(需管理员账号登录)。": "開放後,區域網路內其他裝置的瀏覽器開啟本機 IP 即可進入管理面板(需管理員帳號登入)。", "开机自动启动": "開機自動啟動", "开源许可": "開源授權", "开(最多 {n} 轮)": "開(最多 {n} 輪)", "归属客户端": "歸屬客戶端", "当前三段都是官方原文。": "當前三段都是官方原文。", "当前不可用": "當前不可用", "当前后端不支持词表编辑与提供商范围,请更新后端后重试。": "當前後端不支援詞表編輯與提供商範圍,請更新後端後重試。", "当前固定为浅色模式,不随系统变化。": "當前固定為淺色模式,不隨系統變化。", "当前固定为深色模式,不随系统变化。": "當前固定為深色模式,不隨系統變化。", "当前密码": "當前密碼", "当前已改过:{edited}。": "當前已改過:{edited}。", "当前形态": "當前形態", "当前按 100% 显示(默认比例)。": "當前按 100% 顯示(預設比例)。", "当前按 k / M 缩写显示(如 1.20M / 8.4k)。": "當前按 k / M 縮寫顯示(如 1.20M / 8.4k)。", "当前按 {n}% 显示。": "當前按 {n}% 顯示。", "当前按「万 / 亿」式本地量级词显示(如 1.2亿 / 8400万)。": "當前按「萬 / 億」式本地量級詞顯示(如 1.2億 / 8400萬)。", "当前是透传模式:存下来也不会发出,切成「替换 / 追加」之后才生效。": "當前是透傳模式:存下來也不會發出,切成「替換 / 追加」之後才生效。", "当前显示为「1.20M / 8.4k / 1.2B」这类英文缩写。": "目前顯示為「1.20M / 8.4k / 1.2B」這類英文縮寫。", "当前显示为「1.2亿 / 8400万」这类中文量级。": "當前顯示為「1.2億 / 8400萬」這類中文量級。", "当前样本结果:{name}": "當前樣本結果:{name}", "当前正在使用": "目前正在使用", "当前浏览器以管理员身份登录着本面板。「退出登录」会撤销这台设备的登录会话(30 天内的自动续期一并失效),需要重新输入账号密码;其他已登录的设备不受影响。": "當前瀏覽器以管理員身份登入著本面板。「退出登入」會撤銷這臺裝置的登入會話(30 天內的自動續期一併失效),需要重新輸入帳號密碼;其他已登入的裝置不受影響。", "当前版本不支持品牌设置": "目前版本不支援品牌設定", "当前环境不支持局域网访问设置": "當前環境不支援區域網路存取設定", "当前环境不支持整库备份": "當前環境不支援整庫備份", "当前环境不支持整库备份(仅桌面端可用)": "當前環境不支援整庫備份(僅桌面版可用)", "当前环境不支持整库恢复": "當前環境不支援整庫恢復", "当前环境不支持整库恢复(仅桌面端可用)": "當前環境不支援整庫恢復(僅桌面版可用)", "当前环境不支持网络访问设置": "目前環境不支援網路存取設定", "当前环境不支持读取版本信息(桥接方法缺失)": "當前環境不支援讀取版本資訊(橋接方法缺失)", "当前生效值:{value}": "目前生效值:{value}", "当前生效的正文来自{source}{file}。保存后这一份会盖过提示词文件与内置默认{note}。": "當前生效的正文來自{source}{file}。儲存後這一份會蓋過提示詞檔案與內建預設{note}。", "当前界面": "當前介面", "当前管理员:{name}": "當前管理員:{name}", "当前设置已保存": "當前設定已儲存", "当前跟随操作系统的深浅色设置,系统切换时界面会自动跟上。": "當前跟隨作業系統的深淺色設定,系統切換時介面會自動跟上。", "当前路由内的可用视觉模型": "當前路由內的可用視覺模型", "待迁移旧数据": "待遷移舊資料", "待配置": "待配置", "忘记密码时无法在界面里找回:需要停掉程序后,从数据库删除管理员记录(kv 表的 panelAdmin 键),重启后按首次使用重新注册。具体命令与各形态的库文件路径见 docs 目录下的「重置管理员」文档。": "忘記密碼時無法在介面裡找回:需要停掉程式後,從資料庫刪除管理員記錄(kv 表的 panelAdmin 鍵),重啟後按首次使用重新註冊。具體命令與各形態的庫檔案路徑見 docs 目錄下的「重置管理員」文件。", "思考等级、图片能力未知、等待上限": "思考等級、圖片能力未知、等待上限", "总耗时 {time}": "總耗時 {time}", "恢复中…": "恢復中…", "恢复中,请稍候…": "恢復中,請稍候…", "恢复仍在进行中…": "恢復仍在進行中…", "恢复失败": "恢復失敗", "恢复失败:{message}": "恢復失敗:{message}", "恢复完成": "恢復完成", "恢复官方原文": "恢復官方原文", "恢复插件默认值": "還原外掛預設值", "恢复整库": "恢復整庫", "恢复整库备份": "恢復整庫備份", "恢复期间请不要关闭应用或退出登录 —— 中途中断会让数据停在一个不完整的状态。完成后本页会自动刷新。": "恢復期間請不要關閉應用或退出登入 —— 中途中斷會讓資料停在一個不完整的狀態。完成後本頁會自動重新整理。", "恢复没有完成": "恢復沒有完成", "恢复进度": "恢復進度", "恢复默认": "恢復預設", "恢复默认 Logo": "還原預設 Logo", "恢复默认侧边栏": "恢復預設側邊欄", "恢复默认品牌": "還原預設品牌", "恢复默认词表": "恢復預設詞表", "想回到原来那份,把这里清空再保存即可(不会删掉你配的文件路径)。": "想回到原來那份,把這裡清空再儲存即可(不會刪掉你配的檔案路徑)。", "想要的新功能或改进想法": "想要的新功能或改進想法", "所有未单独配置的提供商都用这一份": "所有未單獨配置的提供商都用這一份", "所有菜单都已在这一组": "所有選單都已在這一組", "手机端只做查看与高频操作;添加账号、编辑凭证、改写客户端配置仍需桌面端。": "手機端只做檢視與高頻操作;新增帳號、編輯憑證、改寫客戶端配置仍需桌面版。", "手机端可管理所连接网关的账号、签到与插件,并使用提供商声明的动态登录入口;其余既有添加入口、编辑凭证和改写客户端配置仍需桌面面板。": "手機端可管理所連線閘道的帳號、簽到與外掛,並使用提供商宣告的動態登入入口;其餘既有新增入口、編輯憑證及改寫用戶端設定仍需桌面面板。", "手机端可管理所连接网关的账号、签到与插件;添加账号、编辑凭证、改写客户端配置仍需桌面端。": "手機端可管理所連線閘道器的帳號、簽到與外掛;新增帳號、編輯憑證、改寫客戶端配置仍需桌面版。", "托管网页界面": "託管網頁介面", "找不到可用视觉模型时": "找不到可用視覺模型時", "找不到可用视觉模型时会先停止并说明原因。": "找不到可用視覺模型時會先停止並說明原因。", "找不到就停止并说明原因。": "找不到就停止並說明原因。", "找不到就按指定备选顺序尝试(还没加备选)。": "找不到就按指定備選順序嘗試(還沒加備選)。", "找不到就按顺序试这 {count} 个备选(先是 {model})。": "找不到就按順序試這 {count} 個備選(先是 {model})。", "把 Base URL 复制给客户端": "把 Base URL 複製給客戶端", "把地址里的 your-server 与 USERNAME 换成你自己的;目录不存在时会自动创建。": "把地址裡的 your-server 與 USERNAME 換成你自己的;目錄不存在時會自動建立。", "把整份数据库(账号、网关配置、事件日志、请求统计、调试报文与桌面设置)导出成一个 SQL 文件,恢复时整体替换本机全部数据 —— 与上面「账号导入 / 导出」的逐条合并是两种语义:恢复会连配置、日志与当前启用状态一起换成备份那台机器的状态。导出默认包含日志与调试报文(文件可能很大),不需要时可以取消勾选只备业务数据。恢复前会自动把当前数据备份到配置目录的 backups/ 下,恢复后需要重新登录管理面板。": "把整份資料庫(帳號、閘道器配置、事件日誌、請求統計、除錯報文與桌面設定)匯出成一個 SQL 檔案,恢復時整體替換本機全部資料 —— 與上面「帳號匯入 / 匯出」的逐條合併是兩種語義:恢復會連配置、日誌與當前啟用狀態一起換成備份那臺機器的狀態。匯出預設包含日誌與除錯報文(檔案可能很大),不需要時可以取消勾選只備業務資料。恢復前會自動把當前資料備份到配置目錄的 backups/ 下,恢復後需要重新登入管理面板。", "把整次请求交给视觉模型,由它直接回答,不再回到原模型。": "把整次請求交給視覺模型,由它直接回答,不再回到原模型。", "把菜单移入 {name}": "把選單移入 {name}", "把菜单移入「{name}」": "把選單移入「{name}」", "把账号、网关配置、自定义提供商、Agent 配置、代理池 / 订阅、签到与余额记录同步到 WebDAV 或 S3 兼容存储,换台机器后一键取回。事件日志、请求明细、调试报文与面板登录态不在同步范围内(它们是本机的运行痕迹)。上传的账号凭证仍是加密形态,解密用的账号密钥由「同步密码」单独加密后一并上传 —— 同步密码不会保存到云端,换机下载时需要重新输入。": "把帳號、閘道器配置、自定義提供商、Agent 配置、代理池 / 訂閱、簽到與餘額記錄同步到 WebDAV 或 S3 相容儲存,換臺機器後一鍵取回。事件日誌、請求明細、除錯報文與面板登入態不在同步範圍內(它們是本機的執行痕跡)。上傳的帳號憑證仍是加密形態,解密用的帳號金鑰由「同步密碼」單獨加密後一併上傳 —— 同步密碼不會儲存到雲端,換機下載時需要重新輸入。", "把路径里的主目录显示成 ~,截图分享时不暴露用户名": "把路徑裡的主目錄顯示成 ~,截圖分享時不暴露使用者名稱", "把路径里的主目录(如 C:\\Users\\你的用户名)显示成 ~,截图分享时不暴露用户名。只影响本页显示与复制,不改任何文件。": "把路徑裡的主目錄(如 C:\\Users\\你的使用者名稱)顯示成 ~,截圖分享時不暴露使用者名稱。隻影響本頁顯示與複製,不改任何檔案。", "报表天数": "報表天數", "报表页的热力图与按天趋势,默认 99999 天(近似全量保留),可填 1–99999 天。": "報表頁的熱力圖與按天趨勢,預設 99999 天(近似全量保留),可填 1–99999 天。", "拖动分组 {name}": "拖動分組 {name}", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "拖動左側 ⠿ 調整順序(選單可以跨組拖);撥開關控制顯隱;點分組名可重新命名;組頭的 + 把別的選單移進來;眼睛按鈕隱藏整組。改動即時生效並記住,左側側邊欄就是結果。鍵盤也能排序:把手聚焦後按 Alt+↑ / ↓。", "拖动菜单 {name}": "拖動選單 {name}", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "拖動調整分組順序(Alt+↑ / ↓ 也可)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "拖動調整順序,可跨組(Alt+↑ / ↓ 也可)", "指定备选仍受当前请求权限和路由范围限制,路由组请求不会跳到组外。不会转为辅助识图继续。": "指定備選仍受當前請求許可權和路由範圍限制,路由組請求不會跳到組外。不會轉為輔助識圖繼續。", "指定提供商": "指定提供商", "指定角色": "指定角色", "指定错误码直接换号": "指定錯誤碼直接換號", "指纹脱敏": "指紋脫敏", "指纹脱敏会在转发前按词表顺序改写请求消息中的文本,包括对话内容、思考内容和工具调用参数。默认词表包含客户端模板句与计费表头的精确替换、正则删除规则,可以新增、编辑、删除、启停和调整顺序;替换内容留空表示删除匹配内容。默认应用全部提供商,也可指定多家。改动只作用于发给上游的副本,响应内容不变。编辑后点击「保存设置」,下一次请求生效;清空词表表示不做任何指纹改写,恢复默认只重置词表。": "指紋脫敏會在轉發前按詞表順序改寫請求訊息中的文本,包括對話內容、思考內容和工具呼叫引數。預設詞表包含客戶端模板句與計費表頭的精確替換、正則刪除規則,可以新增、編輯、刪除、啟停和調整順序;替換內容留空表示刪除匹配內容。預設應用全部提供商,也可指定多家。改動只作用於發給上游的副本,響應內容不變。編輯後點擊「儲存設定」,下一次請求生效;清空詞表表示不做任何指紋改寫,恢復預設只重置詞表。", "指纹脱敏设置仅本次运行生效,写入数据库失败,请检查配置目录": "指紋脫敏設定僅本次執行生效,寫入資料庫失敗,請檢查配置目錄", "指纹脱敏设置已刷新": "指紋脫敏設定已重新整理", "按下面两块设置处理图片;关闭后设置全部保留。": "依下面兩塊設定處理圖片;關閉後設定全部保留。", "按列表自上而下匹配": "按列表自上而下匹配", "按列表自上而下匹配,位于来源声明之后、内置规则之前;可用于给难认的标识钉规则。": "按列表自上而下匹配,位於來源宣告之後、內建規則之前;可用於給難認的標識釘規則。", "按原文精确匹配,区分大小写;不会自动去掉首尾空白。": "按原文精確匹配,區分大小寫;不會自動去掉首尾空白。", "按天聚合保留天数": "按天聚合保留天數", "按指定备选顺序尝试": "按指定備選順序嘗試", "按提供商查看和调整专属选项": "依供應商查看與調整專屬選項", "按提供商筛选设置": "依供應商篩選設定", "按提供商管理专属选项,作用于当前网关中该提供商的所有账号。": "依供應商管理專屬選項,套用至目前閘道中該供應商的所有帳號。", "按提供商配置": "按提供商配置", "按每条请求的软件标识识别客户端,不依赖 API Key。规则修改只影响新请求,内置规则随软件更新,自定义规则参与备份与云同步。": "按每條請求的軟體標識識別客戶端,不依賴 API Key。規則修改隻影響新請求,內建規則隨軟體更新,自定義規則參與備份與雲同步。", "换一台服务器": "換一臺伺服器", "排队等待": "排隊等待", "排队等待次数": "排隊等待次數", "排队等待秒数": "排隊等待秒數", "排队等待设置已刷新": "排隊等待設定已重新整理", "探测与领取时会用 {version} 作为客户端版本号": "探測與領取時會用 {version} 作為客戶端版本號", "接入": "接入", "接受调用方来源声明": "接受呼叫方來源宣告", "接管回答的模型": "接管回答的模型", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "控制主側邊欄顯示哪些選單、按什麼順序、怎麼分組。隱藏隻影響導航顯示,不會撤銷頁面存取許可權;被隱藏的頁面仍可通過地址直接開啟。", "控制报表与请求日志里 Token 读数的写法:开启后按「万 / 亿」式的本地量级词显示(简体为万 / 亿,繁体为萬 / 億,日文为万 / 億,韩文为만 / 억),关闭则用 k / M 缩写(与上游文档、接口字段的写法一致)。英文 / 葡语的本地量级词就是 k / M,这项对它们没有区别。只影响显示口径,不改变任何统计与存储的数值。": "控制報表與請求日誌裡 Token 讀數的寫法:開啟後按「萬 / 億」式的本地量級詞顯示(簡體為萬 / 億,繁體為萬 / 億,日文為萬 / 億,韓文為만 / 억),關閉則用 k / M 縮寫(與上游文件、介面欄位的寫法一致)。英文 / 葡語的本地量級詞就是 k / M,這項對它們沒有區別。隻影響顯示口徑,不改變任何統計與儲存的數值。", "控制报表与请求日志里 Token 读数的写法:开启后按中文量级显示(1.2亿 / 8400万),关闭则用 k / M / B 缩写(与上游文档、接口字段的写法一致)。这只影响显示口径,不改变任何统计与存储的数值。": "控制報表與請求日誌裡 Token 讀數的寫法:開啟後按中文量級顯示(1.2億 / 8400萬),關閉則用 k / M / B 縮寫(與上游文件、介面欄位的寫法一致)。這只影響顯示口徑,不改變任何統計與儲存的數值。", "控制界面的深浅色,与左侧边栏底部的三个主题按钮是同一个设置(改哪一处,另一处立刻跟上)。「跟随系统」会随操作系统当前的浅色 / 深色自动切换,并在系统主题变化时即时跟上;选「浅色」或「深色」则把界面固定在该模式,不再随系统变化。窗口标题栏的深浅色会一并同步,不会出现深色界面配一条浅色标题栏的情况。": "控制介面的深淺色,與左側邊欄底部的三個主題按鈕是同一個設定(改哪一處,另一處立刻跟上)。「跟隨系統」會隨作業系統當前的淺色 / 深色自動切換,並在系統主題變化時即時跟上;選「淺色」或「深色」則把介面固定在該模式,不再隨系統變化。視窗標題欄的深淺色會一併同步,不會出現深色介面配一條淺色標題欄的情況。", "提供商与模型": "提供商與模型", "提供商专属设置": "供應商專屬設定", "提供商当前不可用,未保存的修改已保留;恢复插件后可继续编辑。": "供應商目前無法使用,尚未儲存的修改已保留;恢復外掛後可繼續編輯。", "提供商设置已保存": "供應商設定已儲存", "提供商设置返回格式无效,请刷新后重试": "供應商設定回傳格式無效,請重新整理後再試。", "提建议": "提建議", "提示词文件": "提示詞檔案", "提示词文件已更新": "提示詞檔案已更新", "提示词正文": "提示詞正文", "提示词正文已更新": "提示詞正文已更新", "插件或设置已变化,请放弃修改并刷新后重新编辑。": "外掛或設定已變更,請放棄修改並重新整理後再編輯。", "操作系统": "作業系統", "支持 .a2ab 加密备份和旧 .sql 文件;旧 SQL 不包含恢复密钥,跨机器导入仍需原机密钥。": "支援 .a2ab 加密備份和舊 .sql 檔案;舊 SQL 不包含恢復金鑰,跨機器匯入仍需原機金鑰。", "支持 PNG、JPG、WebP,最大 2 MiB、4096 × 4096 像素;自动缩小至 512 像素以内,建议使用正方形图片。": "支援 PNG、JPG、WebP,最大 2 MiB、4096 × 4096 像素;自動縮小至 512 像素以內,建議使用正方形圖片。", "改动仍保存在本机,修复网络或凭据后下一次改动会自动重试,也可以手动点「上传到云端」。": "改動仍儲存在本機,修復網路或憑據後下一次改動會自動重試,也可以手動點「上傳到雲端」。", "改动仍保存在本机,系统会延长等待并自动重试;修复网络或凭据后,也可以手动点「上传到云端」。": "變更仍儲存在本機,系統會延長等待並自動重試;修復網路或憑證後,也可以手動點「上傳到雲端」。", "改完立即生效,不用重启(下一个请求就用新模式)。降级是自动的临时状态,解除后本模式自己的提示词立刻恢复。": "改完立即生效,不用重啟(下一個請求就用新模式)。降級是自動的臨時狀態,解除後本模式自己的提示詞立刻恢復。", "放大或缩小整个界面(文字与控件一起变),效果与浏览器 Ctrl +/- 相同:共 11 档,立即生效并记住。": "放大或縮小整個介面(文字與控制元件一起變),效果與瀏覽器 Ctrl +/- 相同:共 11 檔,立即生效並記住。", "放弃修改并刷新": "放棄修改並重新整理", "数据": "資料", "数据保留": "資料保留", "数据保留设置已刷新": "資料保留設定已重新整理", "数据存储": "資料儲存", "数据库 schema": "資料庫 schema", "数据库不可用": "資料庫不可用", "数据库与恢复密钥一起加密保存。密码不会保存在应用或备份中,忘记后无法恢复,请妥善保管。": "資料庫與恢復金鑰一起加密儲存。密碼不會儲存在應用或備份中,忘記後無法恢復,請妥善保管。", "数据库主文件与 WAL 文件的总占用,与请求日志清理弹窗采用同一口径;清理后可压缩数据库回收空闲空间。": "資料庫主檔案與 WAL 檔案的總佔用,與請求日誌清理彈窗採用同一口徑;清理後可壓縮資料庫回收空閒空間。", "数据库文件": "資料庫檔案", "数据目录": "資料目錄", "数据统一保存在配置目录下的 agent2api.db;如需更换位置,请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "資料統一儲存在配置目錄下的 agent2api.db;如需更換位置,請設定環境變數 AGENT2API_PROXY_HOME 後重啟程式。", "整体替换": "整體替換", "整库备份 / 恢复": "整庫備份 / 恢復", "整库恢复失败": "整庫恢復失敗", "整库恢复完成": "整庫恢復完成", "整次请求交给 {model} 直接回答,不再回到原模型。": "整次請求交給 {model} 直接回答,不再回到原模型。", "新分组名": "新分組名", "新增 {added} 个、更新 {updated} 个{suffix}{note}": "新增 {added} 個、更新 {updated} 個{suffix}{note}", "新增脱敏规则": "新增脫敏規則", "新增规则": "新增規則", "新安装和升级后默认关闭。先配置再开启,关闭后保留配置。": "新安裝和升級後預設關閉。先配置再開啟,關閉後保留配置。", "新密码": "新密碼", "新密码不能与当前密码相同": "新密碼不能與當前密碼相同", "新密码至少 8 位": "新密碼至少 8 位", "新建分组": "新建分組", "新建客户端分类": "新建客戶端分類", "无效或重复的标识请求头:{headers}": "無效或重複的標識請求頭:{headers}", "无法读取品牌设置": "無法讀取品牌設定", "无法读取图片,请重新选择": "無法讀取圖片,請重新選擇", "日志与请求日志同时受保留天数和数量上限限制。日志默认 30 天、10000 条,各级别按比例保留;调试详情最多保留 3 天。请求日志默认 99999 天、1000000 条(100 万),超出后从最旧的记录开始清理,并同步删除对应原始正文。按天聚合默认 99999 天,只按天数保留,不受请求日志数量清理影响。天数可填 1–99999,数量可填 1–100000000。调小任一设置并确认后立即清理,且不可恢复。": "日誌與請求日誌同時受保留天數和數量上限限制。日誌預設 30 天、10000 筆,各層級按比例保留;除錯詳情最多保留 3 天。請求日誌預設 99999 天、1000000 筆(100 萬),超出後從最舊的記錄開始清理,並同步刪除對應原始本文。每日彙總預設 99999 天,只按天數保留,不受請求日誌數量清理影響。天數可填 1–99999,數量可填 1–100000000。調小任一設定並確認後立即清理,且無法還原。", "日志保留数量上限": "日誌保留數量上限", "日志文件": "日誌檔案", "日语": "日語", "显示 {name}": "顯示 {name}", "显示分组 {name}": "顯示分組 {name}", "显示名称": "顯示名稱", "显示名称最多 64 个字符": "顯示名稱最多 64 個字元", "显示模式": "顯示模式", "显示这一组": "顯示這一組", "暂无可编辑的提供商设置": "暫無可編輯的供應商設定", "暂无自定义规则,正在使用内置识别。": "暫無自定義規則,正在使用內建識別。", "暂无自定义规则,正在使用内置识别。也可以从请求详情直接添加规则。": "暫無自定義規則,正在使用內建識別。也可以從請求詳情直接新增規則。", "暂未获取到本机访问地址,请使用其他设备能连接到的本机 IP 与网关端口。": "暫時無法取得本機存取位址,請使用其他裝置能連線到的本機 IP 與閘道連接埠。", "更新": "更新", "更新出网线路": "更新出網線路", "更新通道": "更新通道", "替换": "替換", "替换 = 客户端 system / developer 消息全部删掉,换成网关的提示词;追加 = 保留客户端内容,只在开头 system 块之后多插一条。两者都只改发给上游的副本,客户端看到的响应不变。": "替換 = 客戶端 system / developer 訊息全部刪掉,換成閘道器的提示詞;追加 = 保留客戶端內容,只在開頭 system 塊之後多插一條。兩者都只改發給上游的副本,客戶端看到的響應不變。", "替换为网关提示词": "替換為閘道器提示詞", "替换内容": "替換內容", "替换内容最多 {max} 个字符": "替換內容最多 {max} 個字元", "替换前会自动把当前数据备份到配置目录的 backups/ 文件夹。": "替換前會自動把當前資料備份到配置目錄的 backups/ 資料夾。", "替换前的数据已自动备份为 {name}(在数据目录的 backups/ 下,可整文件拷回)": "替換前的資料已自動備份為 {name}(在資料目錄的 backups/ 下,可整檔案拷回)", "替换并恢复": "替換並恢復", "最多 64 个字符,留空恢复为 Agent2API。": "最多 64 個字元,留空還原為 Agent2API。", "最多 {count} 个备选;备选仍受当前请求权限与路由范围限制,不会跳到路由组外,也不会转为辅助识图。": "最多 {count} 個備選;備選仍受當前請求許可權與路由範圍限制,不會跳到路由組外,也不會轉為輔助識圖。", "最小自动上传间隔": "最小自動上傳間隔", "最近 {window} 条请求中,{scanned} 条有识别依据,{matched} 条符合条件,{applied} 条会采用本规则。": "最近 {window} 條請求中,{scanned} 條有識別依據,{matched} 條符合條件,{applied} 條會採用本規則。", "有未保存的修改": "有未儲存的修改", "有未保存的改动:保存后才能同步(测试连接不受影响)。": "有未儲存的改動:儲存後才能同步(測試連線不受影響)。", "有近期套餐池请求时读取库存状态的间隔,默认 2500 毫秒,可填 1000–30000。没有近期请求时降低读取频率,轮询不会发起验证码。": "有近期套餐池請求時讀取庫存狀態的間隔,預設 2500 毫秒,可填 1000–30000。沒有近期請求時降低讀取頻率,輪詢不會發起驗證碼。", "服务商": "服務商", "服务器地址": "伺服器地址", "服务端密钥加密保存,不会返回浏览器;切回 ALTCHA 后会保留,方便再次启用。": "伺服器金鑰加密儲存,不會回傳瀏覽器;切回 ALTCHA 後會保留,方便再次啟用。", "服务端密钥(Secret Key)": "伺服器金鑰(Secret Key)", "期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "期間本模式自己的提示詞不會發出;把提示詞改好後可以立即解除。", "未保存": "未儲存", "未匹配已知客户端": "未匹配已知客戶端", "未单独配置:模式、提示词文件与正文都跟随上面的全局配置(当前「{mode}」)。": "未單獨配置:模式、提示詞檔案與正文都跟隨上面的全域配置(當前「{mode}」)。", "未启用": "未啟用", "未开启轻量模式:关窗仅隐藏窗口,界面进程常驻内存,随时打开不等待": "未開啟輕量模式:關窗僅隱藏視窗,介面程序常駐記憶體,隨時開啟不等待", "未开启,developer 角色消息会原样发往上游,不认识该角色的上游会报错(400)。": "未開啟,developer 角色訊息會原樣發往上游,不認識該角色的上游會報錯(400)。", "未开启,客户端 system 模板会原样发往上游,可能被内容审核误拦(400)。": "未開啟,客戶端 system 模板會原樣發往上游,可能被內容稽核誤攔(400)。", "未开启,浏览器跨域无法直连网关。": "未開啟,瀏覽器跨域無法直連閘道器。", "未开启,转发时不保存任何原始报文。": "未開啟,轉發時不儲存任何原始報文。", "未开启:网关只监听 127.0.0.1,仅本机可以访问。": "未開啟:閘道器只監聽 127.0.0.1,僅本機可以存取。", "未注册": "未註冊", "未注册闸门": "未註冊閘門", "未知原因": "未知原因", "未知来源": "未知來源", "未知设备": "未知裝置", "未知账号": "未知帳號", "未能读取 Cline 伪装头设置,请稍后重试": "未能讀取 Cline 偽裝頭設定,請稍後重試", "未能读取 ZCode 版本号设置,请稍后重试": "未能讀取 ZCode 版本號設定,請稍後重試", "未能读取 models.dev 元数据状态,请稍后重试": "未能讀取 models.dev 後設資料狀態,請稍後重試", "未能读取云同步设置,请稍后重试。": "未能讀取雲同步設定,請稍後重試。", "未能读取保存后的指纹脱敏设置": "未能讀取儲存後的指紋脫敏設定", "未能读取开发者角色兼容设置,请稍后重试": "未能讀取開發者角色相容設定,請稍後重試", "未能读取指纹脱敏设置,请稍后重试": "未能讀取指紋脫敏設定,請稍後重試", "未能读取机器人校验设置": "未能讀取機器人驗證設定", "未能读取第三方模型回答完自动折叠过程设置,请稍后重试": "未能讀取第三方模型回答完自動摺疊過程設定,請稍後重試", "未能读取系统提示词设置,请稍后重试": "未能讀取系統提示詞設定,請稍後重試", "未能读取网关跨域访问设置,请稍后重试": "未能讀取閘道器跨域存取設定,請稍後重試", "未能读取网络访问设置,请稍后重试": "無法讀取網路存取設定,請稍後重試", "未能读取调试模式设置,请稍后重试": "未能讀取除錯模式設定,請稍後重試", "未能读取账户信息,请稍后重试": "未能讀取帳戶資訊,請稍後重試", "未设置,使用插件内置的默认版本号": "未設定,使用外掛內建的預設版本號", "未采用本规则,请检查开关、来源声明或规则顺序": "未採用本規則,請檢查開關、來源宣告或規則順序", "本地账号、配置、签到与余额记录变化后自动上传(合并 1 秒内的连续改动,最长 10 秒传一次;内容没变时不发请求)。": "本地帳號、配置、簽到與餘額記錄變化後自動上傳(合併 1 秒內的連續改動,最長 10 秒傳一次;內容沒變時不發請求)。", "本机 API 地址": "本機 API 位址", "本机 APK 版本": "本機 APK 版本", "本机全部数据会被备份整体替换,恢复前自动保留安全备份,完成后需要重新登录管理面板。本机已有密钥不会被覆盖。": "本機全部資料會被備份整體替換,恢復前自動保留安全備份,完成後需要重新登入管理面板。本機已有金鑰不會被覆蓋。", "本机应用版本": "本機應用版本", "本机界面版本": "本機介面版本", "本机的业务数据(账号、配置、Agent 配置、代理池 / 订阅、签到与余额记录)将上传并": "本機的業務資料(帳號、配置、Agent 配置、代理池 / 訂閱、簽到與餘額記錄)將上傳並", "本机的全部数据(账号、网关配置、日志统计与桌面设置)将被所选备份文件": "本機的全部資料(帳號、閘道器配置、日誌統計與桌面設定)將被所選備份檔案", "本机的账号、网关配置、Agent 配置、代理池 / 订阅、签到与余额记录将被远端快照": "本機的帳號、閘道器配置、Agent 配置、代理池 / 訂閱、簽到與餘額記錄將被遠端快照", "本次无需刷新": "本次無需重新整理", "本软件不提供任何担保,可按 AGPL-3.0 修改与分发;通过网络提供修改版服务时须向用户提供对应源码。": "本軟體不提供任何擔保,可按 AGPL-3.0 修改與分發;透過網路提供修改版服務時須向使用者提供對應原始碼。", "本项目的 AGPL-3.0 许可不替代这些第三方许可。名称与标识的商标权归各自权利人所有。": "本專案的 AGPL-3.0 授權不取代這些第三方授權。名稱與標誌的商標權歸各自權利人所有。", "机器人校验": "機器人校驗", "机器人校验设置已保存": "機器人驗證設定已儲存", "条数": "筆數", "来源声明": "來源宣告", "来源声明当前关闭,这条规则不会生效。请先在客户端识别设置中开启。": "來源聲明當前關閉,這條規則不會生效。請先在客戶端識別設定中開啟。", "来源声明无效或未登记,本次已忽略。": "來源宣告無效或未登記,本次已忽略。", "来源声明未启用,本次已忽略。": "來源宣告未啟用,本次已忽略。", "来源版本": "來源版本", "来源设备:{device}": "來源裝置:{device}", "来自 {device},生成于 {time}": "來自 {device},生成於 {time}", "架构": "架構", "查看、安装和管理所连接网关的插件": "檢視、安裝和管理所連線閘道器的外掛", "查看内置客户端({n})": "檢視內建客戶端({n})", "查询管理员状态失败:{message}": "查詢管理員狀態失敗:{message}", "校验身份:这三段必须各自成块排在最前(实测:三段并成一段会被回 405 / 3012)。因此这里按段编辑,不能合成一段。改过的段以你的文本为准,没改的段继续用官方原文;清空某一段 = 那一段恢复官方原文。": "校驗身份:這三段必須各自成塊排在最前(實測:三段併成一段會被回 405 / 3012)。因此這裡按段編輯,不能合成一段。改過的段以你的文本為準,沒改的段繼續用官方原文;清空某一段 = 那一段恢復官方原文。", "桌面端": "桌面版", "桌面端登录 / 注册验证": "桌面端登入 / 註冊驗證", "桌面端:登录 / 注册需要 ALTCHA 人机验证": "桌面版:登入 / 註冊需要 ALTCHA 人機驗證", "桌面端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "桌面版:登入 / 註冊需要 ALTCHA 人機驗證(當前正在使用)", "桌面运行时不可用,暂时无法保存": "桌面執行時不可用,暫時無法儲存", "档案": "檔案", "检测中…": "檢測中…", "概览": "概覽", "模型不能直接看图时,按你选择的方式处理。原生支持图片的请求直接转发,不增加识图调用。": "模型不能直接看圖時,按你選擇的方式處理。原生支援圖片的請求直接轉發,不增加識圖呼叫。", "模型单独配置": "模型單獨配置", "模型目录没写明是否支持图片时按这里处理。": "模型目錄沒寫明是否支援圖片時依這裡處理。", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。下面两块分别选好「哪些模型」和「用哪只模型」即可;没配到的模型、以及本来就能看图的模型,一律原样放行。这里的改动立即生效,不需要保存。": "模型看不了圖片時只有兩種辦法:讓別的模型替它讀圖,或者把整次請求直接交給能看圖的模型。下面兩塊分別選好「哪些模型」和「用哪隻模型」即可;沒配到的模型、以及本來就能看圖的模型,一律原樣放行。這裡的改動立即生效,不需要儲存。", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。没配到的模型、以及本来就能看图的模型,一律原样放行;每个请求只用其中一种方式,不会两种串着做,处理失败也不会改走另一种。改动立即生效,不需要保存。": "模型看不了圖片時只有兩種辦法:讓別的模型替它讀圖,或者把整次請求直接交給能看圖的模型。沒配到的模型、以及本來就能看圖的模型,一律原樣放行;每個請求只用其中一種方式,不會兩種串著做,處理失敗也不會改走另一種。改動立即生效,不需要儲存。", "模型自己看不了图片时,按下面选好的方式处理;能直接看图的请求原样放行,不会多一次识图调用。": "模型自己看不了圖片時,按下面選好的方式處理;能直接看圖的請求原樣放行,不會多一次識圖呼叫。", "模型请求是否需要验证码由 ZCode 上游配置决定,领取验证与模型请求免验证分别处理。后台只检查配置和库存,不自动运行验证码或弹出拼图;需要验证时,在账号的「套餐明细」中点击「开始验证」。验证令牌一次性使用,短时间内过期,失败或取消后不会自动重试。": "模型請求是否需要驗證碼由 ZCode 上游設定決定,領取驗證與模型請求免驗證分別處理。背景只檢查設定和庫存,不自動執行驗證碼或彈出拼圖;需要驗證時,在帳號的「套餐明細」中點擊「開始驗證」。驗證權杖僅能使用一次,短時間內失效,失敗或取消後不會自動重試。", "模式": "模式", "模式改为「{mode}」": "模式改為「{mode}」", "次": "次", "次日 00:00": "次日 00:00", "正则表达式": "正規表示式", "正在保存上游原始报文:": "正在儲存上游原始報文:", "正在修改…": "正在修改…", "正在剥离出站请求里的审核指纹:表头键值整段删除,模板句最小改写。": "正在剝離出站請求裡的稽核指紋:表頭鍵值整段刪除,模板句最小改寫。", "正在安装…": "正在安裝…", "正在应答跨源请求:浏览器跨域请求可直连 /v1/*。": "正在應答跨源請求:瀏覽器跨域請求可直連 /v1/*。", "正在归一角色:developer 角色消息转发前改写为 system。": "正在歸一角色:developer 角色訊息轉發前改寫為 system。", "正在恢复…": "正在恢復…", "正在恢复整库": "正在恢復整庫", "正在注册…": "正在註冊…", "正在联网更新": "正在聯網更新", "正在读取提供商设置…": "正在讀取供應商設定…", "正式版": "正式版", "每个请求只会用到其中一种方式,不会两种串着做;处理失败也不会改走另一种。配了哪只视觉模型,那次请求的图片就会交给它。": "每個請求只會用到其中一種方式,不會兩種串著做;處理失敗也不會改走另一種。配了哪隻視覺模型,那次請求的圖片就會交給它。", "每条请求轮换到下一个可用账号;新会话交给当前最闲的那位。适合想把手里的号摊开用、不让某一个一直扛。": "每條請求輪換到下一個可用帳號;新會話交給當前最閒的那位。適合想把手裡的號攤開用、不讓某一個一直扛。", "每条请求都重新按策略选路 —— 行为与「关闭」一致,仅保留会话识别的记录。": "每條請求都重新按策略選路 —— 行為與「關閉」一致,僅保留會話識別的記錄。", "每次等待的时长,默认 0 = 跟随上游建议(实测 9~30 秒,上游没给建议时用 15 秒)。可填 0–120 秒强制一个固定时长。": "每次等待的時長,預設 0 = 跟隨上游建議(實測 9~30 秒,上游沒給建議時用 15 秒)。可填 0–120 秒強制一個固定時長。", "每行一个域名,不填协议、端口或路径;与 Cloudflare 中的配置一致,服务端按完整域名匹配。手机 App 使用所连接网关的域名。": "每行一個網域,不填通訊協定、連接埠或路徑;與 Cloudflare 中的設定一致,伺服器按完整網域比對。手機 App 使用所連線閘道的網域。", "毫秒": "毫秒", "沟通方式 / 上下文管理 + Environment 段。": "溝通方式 / 上下文管理 + Environment 段。", "没有可导出的账号": "沒有可匯出的帳號", "没有可用视觉模型时": "沒有可用視覺模型時", "没有已确认支持图片的模型,请先在模型管理中确认。": "沒有已確認支援圖片的模型,請先在模型管理中確認。", "没能读到「{label}」的当前值,改为 {count} 条可能会删除超出的历史数据。": "未能讀取「{label}」的目前值,改為 {count} 筆可能會刪除超出的歷史資料。", "没能读到「{label}」的当前值,改为 {days} 天可能会删除超出的历史数据。": "沒能讀到「{label}」的當前值,改為 {days} 天可能會刪除超出的歷史資料。", "沿用对应方式的视觉模型配置,不额外维护一份模型列表。": "沿用對應方式的視覺模型配置,不額外維護一份模型列表。", "沿用工具服务的视觉分析模型": "沿用工具服務的視覺分析模型", "沿用工具服务的视觉分析模型(未配置)": "沿用工具服務的視覺分析模型(未設定)", "注册并开启": "註冊並開啟", "注册管理员账号": "註冊管理員帳號", "注意:这一家的「网关自带」开关现在是关的,改过的正文要等开关打开才生效。": "注意:這一家的「閘道器自帶」開關現在是關的,改過的正文要等開關開啟才生效。", "流式响应相邻数据之间允许的最大空闲时间(秒),收到新数据后重新计时,默认 300 秒,范围 1~3600。": "流式響應相鄰資料之間允許的最大空閒時間(秒),收到新資料後重新計時,預設 300 秒,範圍 1~3600。", "流式响应空闲超时": "流式響應空閒超時", "测试连接": "測試連線", "浏览器 / PWA": "瀏覽器 / PWA", "浏览器只在 https 或 localhost 下提供离线缓存;局域网 http 访问不影响正常使用": "瀏覽器只在 https 或 localhost 下提供離線快取;區域網路 http 存取不影響正常使用", "浏览器在本地完成计算,不需要第三方密钥,也不依赖外部验证服务。": "瀏覽器在本機完成計算,不需要第三方金鑰,也不依賴外部驗證服務。", "浏览器标签页": "瀏覽器標籤頁", "浏览器面板": "瀏覽器面板", "消息角色": "訊息角色", "添加备选模型": "新增備選模型", "添加提供商": "新增提供商", "添加提供商…": "新增提供商…", "添加模型单独配置": "新增模型單獨配置", "添加自定义头": "新增自定義頭", "添加要单独配置的提供商": "新增要單獨配置的提供商", "添加配置": "新增配置", "清空(用内置默认值)": "清空(用內建預設值)", "清除本机凭证": "清除本機憑證", "清除这里的正文": "清除這裡的正文", "源代码": "原始碼", "点下面的入口会用系统默认浏览器打开 GitHub 的对应表单(需要 GitHub 账号,模板已预设好,填完直接提交即可)。": "點下面的入口會用系統預設瀏覽器開啟 GitHub 的對應表單(需要 GitHub 帳號,模板已預設好,填完直接提交即可)。", "点击重命名": "點擊重新命名", "点此添加或切换服务器": "點此新增或切換伺服器", "点此添加服务器": "點此新增伺服器", "版本": "版本", "版本信息": "版本資訊", "版本信息 · 所连网关环境": "版本資訊 · 所連閘道器環境", "版权声明": "版權聲明", "状态码 {code} 已在名单里": "狀態碼 {code} 已在名單裡", "状态码必须是 {min}–{max} 的整数(收到: {text})": "狀態碼必須是 {min}–{max} 的整數(收到: {text})", "环境": "環境", "环境变量 ZCODE_APP_VERSION={value} 正在生效,上面填的值暂不生效": "環境變數 ZCODE_APP_VERSION={value} 正在生效,上面填的值暫不生效", "现在会这样处理:": "現在會這樣處理:", "生成时间:{time}": "生成時間:{time}", "生效顺序:有效的来源声明优先,然后按顺序匹配自定义规则,最后使用内置规则。中转丢失原始标识时,无法自动推断背后的软件。": "生效順序:有效的來源宣告優先,然後按順序匹配自定義規則,最後使用內建規則。中轉丟失原始標識時,無法自動推斷背後的軟體。", "用 models.dev 补齐上游没声明的模型能力与思考档位(联网刷新,内嵌快照始终生效)": "用 models.dev 補齊上游沒宣告的模型能力與思考檔位(聯網重新整理,內嵌快照始終生效)", "用于加密上云的账号密钥。请自己记牢 —— 它不保存到云端,换机下载时必须输入同一个密码,否则账号数据无法解密。": "用於加密上雲的帳號金鑰。請自己記牢 —— 它不儲存到雲端,換機下載時必須輸入同一個密碼,否則帳號資料無法解密。", "用哪只模型识图": "用哪隻模型識圖", "用浏览器菜单里的「添加到主屏幕」把这一页装成 App:全屏打开、没有地址栏,和原生应用一样。": "用瀏覽器選單裡的「新增到主螢幕」把這一頁裝成 App:全屏開啟、沒有位址列,和原生應用一樣。", "由 Cloudflare 提供验证,需要浏览器与网关均能连接 Cloudflare。验证失败或服务不可用时不会自动放行。": "由 Cloudflare 提供驗證,需要瀏覽器與閘道均能連線至 Cloudflare。驗證失敗或服務無法使用時不會自動放行。", "由 {source} 覆盖,手动设置暂不生效": "由 {source} 覆寫,手動設定暫不生效", "界面缩放": "介面縮放", "界面缩放比例": "介面縮放比例", "界面语言": "介面語言", "界面语言。可选简体中文、繁體中文、English、日本語、한국어、Português (Brasil),或「跟随系统」(按浏览器 / 系统的语言列表自动选)。切换后整页立即刷新;该偏好只存在本机(localStorage),不影响账号、密钥与转发。": "介面語言。可選簡體中文、繁體中文、English、日本語、한국어、Português (Brasil),或「跟隨系統」(按瀏覽器 / 系統的語言列表自動選)。切換後整頁立即重新整理;該偏好只存在本機(localStorage),不影響帳號、金鑰與轉發。", "界面语言只保存在本机(localStorage)。切换后整页立即刷新,不影响账号、密钥与转发。": "介面語言只儲存在本機(localStorage)。切換後整頁立即重新整理,不影響帳號、金鑰與轉發。", "界面里编辑的正文": "介面裡編輯的正文", "留空 = 用内置默认提示词": "留空 = 用內建預設提示詞", "留空 = 用插件内置的默认版本号(每期活动由插件跟随官方更新)。只有遇到「官方客户端里能看到活动、这里探测为空」时才需要填:那种情况几乎都是上游抬高了版本门槛,而版本落后的表现是一份空列表而不是报错。按官方客户端当前版本填(形如 3.16.2),保存后回到套餐明细刷新一次即刻生效。环境变量 ZCODE_APP_VERSION 若已设置,优先级高于这里。": "留空 = 用外掛內建的預設版本號(每期活動由外掛跟隨官方更新)。只有遇到「官方客戶端裡能看到活動、這裡探測為空」時才需要填:那種情況幾乎都是上游抬高了版本門檻,而版本落後的表現是一份空列表而不是報錯。按官方客戶端當前版本填(形如 3.16.2),儲存後回到套餐明細重新整理一次即刻生效。環境變數 ZCODE_APP_VERSION 若已設定,優先順序高於這裡。", "留空使用 AWS 官方地址": "留空使用 AWS 官方地址", "留空使用默认": "留空使用預設", "留空表示删除匹配内容;替换内容按原文写入,$ 不作为捕获组引用。": "留空表示刪除匹配內容;替換內容按原文寫入,$ 不作為捕獲組引用。", "登录 / 注册需要通过 ALTCHA 人机验证(工作量证明)": "登入 / 註冊需要通過 ALTCHA 人機驗證(工作量證明)", "登录 / 账号切换 / 429 切换等系统事件,可填 1–3650 天。": "登入 / 帳號切換 / 429 切換等系統事件,可填 1–3650 天。", "登录 / 账号切换 / 429 切换等系统事件,可填 1–99999 天。": "登入 / 帳號切換 / 429 切換等系統事件,可填 1–99999 天。", "登录 Agent2API": "登入 Agent2API", "登录 {name}": "登入 {name}", "登录人机验证": "登入人機驗證", "百分比类读数(如 OpenCode Go、Antigravity)不能相加,组头显示的是组内最低剩余比例。": "百分比類讀數(如 OpenCode Go、Antigravity)不能相加,組頭顯示的是組內最低剩餘比例。", "监听地址": "監聽地址", "目前展示仓库已登记的图标来源许可,不代表完整的第三方依赖清单。": "目前顯示儲存庫已登記的圖示來源授權,不代表完整的第三方相依套件清單。", "目标路径:{path}": "目標路徑:{path}", "直接按上面的设置兼容": "直接按上面的設定相容", "直接按当前方式兼容": "直接按當前方式相容", "知道了": "知道了", "确定": "確定", "确定后加入当前草稿,点击「保存设置」才会生效。": "確定後加入當前草稿,點擊「儲存設定」才會生效。", "确定继续?": "確定繼續?", "确认上传": "確認上傳", "确认图片处理授权": "確認圖片處理授權", "确认备份密码": "確認備份密碼", "确认并保存": "確認並儲存", "确认新密码": "確認新密碼", "确认缩减数据保留": "確認縮減資料保留", "确认缩短保留天数": "確認縮短保留天數", "示例请求头": "示例請求頭", "社区与支持": "社群與支援", "离线缓存未启用": "離線快取未啟用", "积分合计只统计当前筛选出来的账号": "積分合計只統計目前篩選出來的帳號", "移入「{name}」": "移入「{name}」", "程序路径": "程式路徑", "空 = 不要这一份,回落提示词文件 / 内置默认提示词。": "空 = 不要這一份,回落提示詞檔案 / 內建預設提示詞。", "空分组 · 点组头的 + 把菜单移进来": "空分組 · 點組頭的 + 把選單移進來", "立即解除": "立即解除", "站点密钥(Site Key)": "網站金鑰(Site Key)", "第一段": "第一段", "第一段(身份句)": "第一段(身份句)", "第三方应用密码": "第三方應用密碼", "第三方开源许可": "第三方開源授權", "第三方模型回答完自动折叠过程": "第三方模型回答完自動摺疊過程", "第三方模型回答完自动折叠过程设置已刷新": "第三方模型回答完自動摺疊過程設定已重新整理", "第三段": "第三段", "第三段(动态段)": "第三段(動態段)", "第二段": "第二段", "第二段(稳定段)": "第二段(穩定段)", "等待上限需在 5–120 秒之间": "等待上限需在 5–120 秒之間", "等待响应超时": "等待響應超時", "等待期间请求日志的状态列会显示「排队中」阶段,详情弹窗的「内部重试」里能逐次看到等待时长;等待用尽后返回 HTTP 503(不是 401/429:既不会刷新凭证,也不会把账号标成限额)。": "等待期間請求日誌的狀態列會顯示「排隊中」階段,詳情彈窗的「內部重試」裡能逐次看到等待時長;等待用盡後返回 HTTP 503(不是 401/429:既不會重新整理憑證,也不會把帳號標成限額)。", "等比放大或缩小整个界面(文字、控件、间距一起变),效果与浏览器按 Ctrl +/- 相同:80%–130%、5% 一档。窗口本身不缩放,变的是页面内容的显示比例,设置立即生效并记住,下次启动直接按这个比例打开。放得越大可视范围越小,窗口较窄或表格较宽时不建议调得太大。": "等比放大或縮小整個介面(文字、控制元件、間距一起變),效果與瀏覽器按 Ctrl +/- 相同:80%–130%、5% 一檔。視窗本身不縮放,變的是頁面內容的顯示比例,設定立即生效並記住,下次啟動直接按這個比例開啟。放得越大可視範圍越小,視窗較窄或表格較寬時不建議調得太大。", "简体中文": "簡體中文", "管理员已注册": "管理員已註冊", "管理员账号": "管理員帳號", "管理插件": "管理外掛", "精确文本": "精確文本", "系统": "系統", "系统提示词模式": "系統提示詞模式", "系统提示词设置已刷新": "系統提示詞設定已重新整理", "累计请求": "累計請求", "繁体中文": "繁體中文", "约 {n} 字符": "約 {n} 字元", "结构": "結構", "给 Codex 的响应补阶段标记,回答完后像官方模型一样把推理与命令过程折叠起来": "給 Codex 的響應補階段標記,回答完後像官方模型一樣把推理與命令過程摺疊起來", "继续并清理": "繼續並清理", "编辑提示词正文 · {label}": "編輯提示詞正文 · {label}", "编辑提示词正文 · 全局": "編輯提示詞正文 · 全域", "编辑正文": "編輯正文", "编辑网关自带提示词 · {label}": "編輯閘道器自帶提示詞 · {label}", "编辑脱敏规则": "編輯脫敏規則", "编辑识别规则": "編輯識別規則", "缩放后重新存成 JPEG 时用的质量。默认 80,可填 40–95;数值越小体积越小、画质越差。": "縮放後重新存成 JPEG 時用的質量。預設 80,可填 40–95;數值越小體積越小、畫質越差。", "缩放比例": "縮放比例", "网关": "閘道器", "网关 Key 数量": "閘道器 Key 數量", "网关尚未就绪": "閘道尚未就緒", "网关状态": "閘道器狀態", "网关自带": "閘道器自帶", "网关跨域访问已开启": "閘道器跨域存取已開啟", "网关跨域访问设置已刷新": "閘道器跨域存取設定已重新整理", "网关跨域访问(CORS)": "閘道器跨域存取(CORS)", "网关面(/v1/*)默认不应答浏览器跨源请求:页面直连会被预检拦下,只报「无法连接 API」。注意来源是 * —— 未配「网关 Key」时任何网页都能借本机网关打上游,故默认关闭;只给自己用的话,让页面与网关同源(本地反代 /v1)更稳妥。面板接口(/api/*)不受影响。": "閘道器面(/v1/*)預設不應答瀏覽器跨源請求:頁面直連會被預檢攔下,只報「無法連線 API」。注意來源是 * —— 未配「閘道器 Key」時任何網頁都能借本機閘道器打上游,故預設關閉;只給自己用的話,讓頁面與網關同源(本地反代 /v1)更穩妥。面板介面(/api/*)不受影響。", "网络访问": "網路存取", "网页端": "網頁端", "网页端登录 / 注册验证": "網頁端登入 / 註冊驗證", "网页端的界面缩放由浏览器自己控制(Ctrl + / Ctrl -,或浏览器菜单里的缩放),此项不可调。": "網頁端的介面縮放由瀏覽器自己控制(Ctrl + / Ctrl -,或瀏覽器選單裡的縮放),此項不可調。", "网页端:登录 / 注册需要 ALTCHA 人机验证": "網頁端:登入 / 註冊需要 ALTCHA 人機驗證", "网页端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "網頁端:登入 / 註冊需要 ALTCHA 人機驗證(當前正在使用)", "网页管理地址": "網頁管理位址", "群晖 NAS": "群暉 NAS", "群晖需在「控制面板 → 应用程序门户 → WebDAV」里启用服务,端口默认 5005(HTTP)/ 5006(HTTPS)。": "群暉需在「控制面板 → 應用程式門戶 → WebDAV」裡啟用服務,連接埠預設 5005(HTTP)/ 5006(HTTPS)。", "脱敏词表": "脫敏詞表", "腾讯云 COS": "騰訊雲 COS", "自动同步": "自動同步", "自动同步上次失败": "自動同步上次失敗", "自动续写": "自動續寫", "自定义 User-Agent": "自定義 User-Agent", "自定义 · {name}": "自定義 · {name}", "自定义头匹配规则": "自定義頭匹配規則", "自定义客户端分类": "自定義客戶端分類", "自定义客户端数量已达上限": "自定義客戶端數量已達上限", "自定义提供商 {id}": "自定義提供商 {id}", "自定义网站和应用界面中显示的名称与 Logo。": "自訂網站和應用程式介面中顯示的名稱與 Logo。", "自定义识别规则": "自定義識別規則", "自愈保护": "自愈保護", "至少 12 位": "至少 12 位", "至少 8 位,换机下载时需要": "至少 8 位,換機下載時需要", "至少要保留一个分组": "至少要保留一個分組", "英语": "英語", "范围 5–120 秒,并受原请求时限约束。": "範圍 5–120 秒,並受原請求時限約束。", "范围为 5–120 秒,并受原请求时限约束。图片过大、格式错误或下载失败不会被当作模型不支持图片。": "範圍為 5–120 秒,並受原請求時限約束。圖片過大、格式錯誤或下載失敗不會被當作模型不支援圖片。", "被更高优先级覆盖": "被更高優先順序覆蓋", "被环境变量覆盖": "被環境變數覆蓋", "装上{size}的官方身份提示词": "裝上{size}的官方身份提示詞", "装成 App 后从桌面图标直接进入:全屏打开、没有地址栏。": "裝成 App 後從桌面圖示直接進入:全屏開啟、沒有位址列。", "覆盖": "覆蓋", "规则 / 匹配方式": "規則 / 匹配方式", "规则可以增删改、启停和调整顺序;替换内容留空表示删除匹配内容。恢复默认只重置词表,不改开关和提供商范围。": "規則可以增刪改、啟停和調整順序;替換內容留空表示刪除匹配內容。恢復預設只重置詞表,不改開關和提供商範圍。", "规则名称": "規則名稱", "规则名称不能为空,且最多 {max} 个字符": "規則名稱不能為空,且最多 {max} 個字元", "规则已保存,对后续请求生效;当前历史记录未修改。": "規則已儲存,對後續請求生效;當前歷史記錄未修改。", "规则忽略大小写,只影响新请求的日志与统计,不改变模型选择或权限。": "規則忽略大小寫,隻影響新請求的日誌與統計,不改變模型選擇或許可權。", "规则编号:{id}": "規則編號:{id}", "视觉模型": "視覺模型", "视觉模型先识读图片,再由原模型分析和回答。": "視覺模型先識讀圖片,再由原模型分析和回答。", "视觉模型来源": "視覺模型來源", "视觉模型的思考等级": "視覺模型的思考等級", "视觉模型直接回答": "視覺模型直接回答", "视觉模型识读图片": "視覺模型識讀圖片", "解码后小于这个体积的图片保持原样。默认 512KB,可填 0–10240;填 0 表示所有内嵌图片都过一遍。": "解碼後小於這個體積的圖片保持原樣。預設 512KB,可填 0–10240;填 0 表示所有內嵌圖片都過一遍。", "解除失败:{message}": "解除失敗:{message}", "触发阈值": "觸發閾值", "计数": "計數", "计量单位": "計量單位", "让 Codex 在收到最终答案后收起中间过程。仅为严格识别的 Codex Responses 请求补阶段标记,报表归类和来源声明不影响此判断。正常结束且没有工具调用的非空回答才补 final_answer,工具调用前的说明补 commentary;错误、截断、缺少结束信号或未知结束原因不补最终答案标记。默认关闭,不改变回答文字,也不减少模型思考或用量。": "讓 Codex 在收到最終答案後收起中間過程。僅為嚴格識別的 Codex Responses 請求補階段標記,報表歸類和來源宣告不影響此判斷。正常結束且沒有工具呼叫的非空回答才補 final_answer,工具呼叫前的說明補 commentary;錯誤、截斷、缺少結束訊號或未知結束原因不補最終答案標記。預設關閉,不改變回答文字,也不減少模型思考或用量。", "许可原文": "授權原文", "许可原文已随软件内置,无需联网即可查看;打开项目来源链接需要联网。": "授權原文已隨軟體內建,無需連網即可檢視;開啟專案來源連結需要連網。", "许可核对版本": "授權核對版本", "设置不可隐藏(隐藏了只能清缓存找回来)": "設定不可隱藏(隱藏了只能清快取找回來)", "设置备份密码": "設定備份密碼", "设置识别规则": "設定識別規則", "访问时请使用目标设备能连接到的地址;这里显示的本机地址不代表公网可达。": "存取時請使用目標裝置能連線到的位址;這裡顯示的本機位址不代表可從公網連線。", "识别依据": "識別依據", "识别规则数量已达上限": "識別規則數量已達上限", "识别顺序": "識別順序", "识读会保留图片里的文字、代码、数字、布局与状态;识读失败就停止,不删图后继续回答。": "識讀會保留圖片裡的文字、程式碼、數字、佈局與狀態;識讀失敗就停止,不刪圖後繼續回答。", "识读这张图用哪只模型,第一项是「MCP & Skills」里配好的那只。": "識讀這張圖用哪隻模型,第一項是「MCP & Skills」裡配好的那隻。", "词表为空,不会改写任何指纹。可以新增规则或恢复默认词表。": "詞表為空,不會改寫任何指紋。可以新增規則或恢復預設詞表。", "该提供商暂无可编辑的专属设置": "此供應商暫無可編輯的專屬設定", "详细日志": "詳細日誌", "语言设置": "語言設定", "请先保存设置再同步": "請先儲存設定再同步", "请先在 Cloudflare 创建 Turnstile 组件,建议选择 Managed 模式,并添加面板实际使用的域名。": "請先在 Cloudflare 建立 Turnstile 元件,建議選擇 Managed 模式,並新增面板實際使用的網域。", "请填一个分组名": "請填一個分組名", "请填写管理员账号(64 字符以内)": "請填寫管理員帳號(64 字元以內)", "请求发出后等待上游响应头的最大时间(秒),默认 300 秒,范围 1~3600。": "請求發出後等待上游響應頭的最大時間(秒),預設 300 秒,範圍 1~3600。", "请求已断开,但恢复仍在后台进行 —— 请等待进度弹窗给出结果": "請求已斷開,但恢復仍在後臺進行 —— 請等待進度彈窗給出結果", "请求带有不同软件的标识,未自动归类;可用自定义规则明确归属。": "請求帶有不同軟體的標識,未自動歸類;可用自定義規則明確歸屬。", "请求提供商 / 模型支持": "請求提供商 / 模型支援", "请求日志保留天数": "請求日誌保留天數", "请求日志保留数量上限": "請求日誌保留數量上限", "请求记录": "請求記錄", "请求超时": "請求超時", "请求转发到上游失败时(服务器瞬时错误、连接失败,以及 WorkBuddy 的 11-128 敏感词拦截),网关会等一段间隔后再发一次。次数分两档,管的是两件事:①「同一账号重试次数」在同一账号上原地重发几次 —— 一般是提示词被上游拦截、或链路瞬时抖动,等一会儿重发往往就好了;②「切换账号重试次数」这份请求最多再换几个账号试 —— 首发的那个账号不算,每换一个扣一次,不分是不是同一家(换到同一家的下一个账号也算一次),换满还失败就把错误返回给客户端。两项都设为 0 表示失败不重试、直接报错。注意账号级限额(429)不占这里的换号次数 —— 那类失败走「冷却该账号并换下一个账号」的降级,与这里的重试是两条路。另有「指定错误码直接换号」名单(默认 402):命中名单的上游状态码不在同一账号重发,直接按队列换下一个账号继续试(换号也占「切换账号重试次数」),换满仍失败才把错误返回给客户端。": "請求轉發到上游失敗時(伺服器瞬時錯誤、連線失敗,以及 WorkBuddy 的 11-128 敏感詞攔截),閘道器會等一段間隔後再發一次。次數分兩檔,管的是兩件事:①「同一帳號重試次數」在同一帳號上原地重發幾次 —— 一般是提示詞被上游攔截、或鏈路瞬時抖動,等一會兒重發往往就好了;②「切換帳號重試次數」這份請求最多再換幾個帳號試 —— 首發的那個帳號不算,每換一個扣一次,不分是不是同一家(換到同一家的下一個帳號也算一次),換滿還失敗就把錯誤返回給客戶端。兩項都設為 0 表示失敗不重試、直接報錯。注意帳號級限額(429)不佔這裡的換號次數 —— 那類失敗走「冷卻該帳號並換下一個帳號」的降級,與這裡的重試是兩條路。另有「指定錯誤碼直接換號」名單(預設 402):命中名單的上游狀態碼不在同一帳號重發,直接按佇列換下一個帳號繼續試(換號也佔「切換帳號重試次數」),換滿仍失敗才把錯誤返回給客戶端。", "请求重试": "請求重試", "请至少选择一个提供商": "請至少選擇一個提供商", "请输入同步密码": "請輸入同步密碼", "请输入当前密码": "請輸入當前密碼", "请输入服务端密钥": "請輸入伺服器金鑰", "请选择可用的标识请求头": "請選擇可用的標識請求頭", "请选择归属客户端": "請選擇歸屬客戶端", "读取云同步设置失败:{message}": "讀取雲同步設定失敗:{message}", "读取失败:{message}": "讀取失敗:{message}", "读取完整非流式响应体允许的最大时间(秒),默认 300 秒,范围 1~3600。": "讀取完整非流式響應體允許的最大時間(秒),預設 300 秒,範圍 1~3600。", "读取网关信息失败:{message}": "讀取閘道器資訊失敗:{message}", "读取远端…": "讀取遠端…", "读取远端信息失败:{message}": "讀取遠端資訊失敗:{message}", "调用方声明": "呼叫方宣告", "调试报文": "除錯報文", "调试模式": "除錯模式", "调试模式设置已刷新": "除錯模式設定已重新整理", "负载均衡": "負載均衡", "账号列表": "帳號列表", "账号导入 / 导出": "帳號匯入 / 匯出", "账号路由": "帳號路由", "账号页表格的两项显示偏好,只存在本机(localStorage),不影响账号数据与转发。「积分合计只统计当前筛选出来的账号」:账号页每一家的分组带右侧有一枚「可用合计」,默认按整组求和 —— 不受筛选、搜索影响,被筛掉的账号也计入(余额是资产,禁用也只表示不参与转发,额度仍在账上)。打开这一项后改为只累加当前可见的行:例如筛出 1 个 100 积分的账号,合计就是 100,而不是同组两个账号之和 1,000。分页不参与这个口径 —— 翻页看的是同一份结果的不同屏,合计不随页码变化。「隐藏账号名」与表头「账号」旁边那颗眼睛是同一个开关:打开后账号列的名字整体显示成星号,适合截图分享时遮挡账号。": "帳號頁表格的兩項顯示偏好,只存在本機(localStorage),不影響帳號資料與轉發。「積分合計只統計目前篩選出來的帳號」:帳號頁每一家的分組帶右側有一枚「可用合計」,預設按整組求和 —— 不受篩選、搜尋影響,被篩掉的帳號也計入(餘額是資產,停用也只表示不參與轉發,額度仍在帳上)。開啟這一項後改為只累加目前可見的列:例如篩出 1 個 100 積分的帳號,合計就是 100,而不是同組兩個帳號之和 1,000。分頁不參與這個口徑 —— 翻頁看的是同一份結果的不同螢幕,合計不隨頁碼變化。「隱藏帳號名」與表頭「帳號」旁邊那顆眼睛是同一個開關:開啟後帳號欄的名字整體顯示成星號,適合截圖分享時遮蔽帳號。", "账户": "帳戶", "超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件。把天数改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。可填范围为 1–3650 天。请求日志 / 按天聚合 / 签到记录已全量保留、不再自动删除,要清历史请到对应页面手动清空。": "超出保留天數的部分會被刪除:事件日誌是登入、帳號切換、429 切換這類系統事件。把天數改小(例如 30 天改成 7 天)儲存後會立即刪除超出的歷史資料,此操作不可恢復;改大或保持不變不會刪除任何資料。可填範圍為 1–3650 天。請求日誌 / 按天聚合 / 簽到記錄已全量保留、不再自動刪除,要清歷史請到對應頁面手動清空。", "超出的历史数据会被立即删除,且不可恢复。": "超出的歷史資料會被立即刪除,且不可恢復。", "超时": "超時", "超时设置已刷新": "超時設定已重新整理", "跟随模型配置": "跟隨模型配置", "跟随系统 · 浅色 · 深色": "跟隨系統 · 淺色 · 深色", "跟随默认": "跟隨預設", "跨域访问": "跨域存取", "路由": "路由", "路由组只使用组内成员;普通路由只使用参与范围内的账号和模型。": "路由組只使用組內成員;普通路由只使用參與範圍內的帳號和模型。", "路由设置已刷新": "路由設定已重新整理", "跳过 {n} 个": "跳過 {n} 個", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;负载均衡是每条请求换下一位,把负载摊到各个账号上。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护默认生效,不需要配置:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时),被 429 的账号垫底排到队尾一圈,余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 恢复后自动回到队列。": "轉發一個請求時按什麼順序挑帳號:①「路由策略」決定排隊規則 —— 順序優先是排第 1 的接走所有請求、直到它不能答(限流 / 故障 / 額度盡)才輪到下一位;負載均衡是每條請求換下一位,把負載攤到各個帳號上。②「會話粘性」讓同一會話(相同的模型 + 相同的開頭訊息)儘量跟住同一個帳號 —— 多輪對話的上下文快取能複用、少換號少浪費;自動檔粘 5 分鐘、會話內檔粘 6 小時、每輪與關閉都不粘。帳號的排隊位次(帳號表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由還有三層自愈保護預設生效,不需要配置:轉發失敗的帳號退避休息一會兒(15 分鐘起步翻倍、封頂 1 小時),被 429 的帳號墊底排到隊尾一圈,餘額不足 / Token 週期用量到頂的帳號由限制器攔下 —— 恢復後自動回到佇列。", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;负载均衡是每条请求换下一位,把负载摊到各个账号上。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时)、被 429 的账号垫底排到队尾 30 分钟、余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 前两层可以在下面按需开关,限制器由账号的「限制器」设置管。": "轉發一個請求時按什麼順序挑帳號:①「路由策略」決定排隊規則 —— 順序優先是排第 1 的接走所有請求、直到它不能答(限流 / 故障 / 額度盡)才輪到下一位;負載均衡是每條請求換下一位,把負載攤到各個帳號上。②「會話粘性」讓同一會話(相同的模型 + 相同的開頭訊息)儘量跟住同一個帳號 —— 多輪對話的上下文快取能複用、少換號少浪費;自動檔粘 5 分鐘、會話內檔粘 6 小時、每輪與關閉都不粘。帳號的排隊位次(帳號表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由還有三層自愈保護:轉發失敗的帳號退避休息一會兒(15 分鐘起步翻倍、封頂 1 小時)、被 429 的帳號墊底排到隊尾 30 分鐘、餘額不足 / Token 週期用量到頂的帳號由限制器攔下 —— 前兩層可以在下面按需開關,限制器由帳號的「限制器」設定管。", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;轮流均摊是每条请求换下一位,雨露均沾;余额优先是用量占比最低的先用,「谁空谁上」。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护默认生效,不需要配置:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时),被 429 的账号垫底排到队尾一圈,余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 恢复后自动回到队列。": "轉發一個請求時按什麼順序挑帳號:①「路由策略」決定排隊規則 —— 順序優先是排第 1 的接走所有請求、直到它不能答(限流 / 故障 / 額度盡)才輪到下一位;輪流均攤是每條請求換下一位,雨露均霑;餘額優先是用量佔比最低的先用,「誰空誰上」。②「會話粘性」讓同一會話(相同的模型 + 相同的開頭訊息)儘量跟住同一個帳號 —— 多輪對話的上下文快取能複用、少換號少浪費;自動檔粘 5 分鐘、會話內檔粘 6 小時、每輪與關閉都不粘。帳號的排隊位次(帳號表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由還有三層自愈保護預設生效,不需要配置:轉發失敗的帳號退避休息一會兒(15 分鐘起步翻倍、封頂 1 小時),被 429 的帳號墊底排到隊尾一圈,餘額不足 / Token 週期用量到頂的帳號由限制器攔下 —— 恢復後自動回到佇列。", "转发前压缩对话里内嵌的大图(只改发给上游的副本,生图与图片编辑不受影响)": "轉發前壓縮對話裡內嵌的大圖(只改發給上游的副本,生圖與圖片編輯不受影響)", "转发前将 developer 角色消息转换为 system,兼容不支持 developer 角色的 OpenAI 兼容上游": "轉發前將 developer 角色訊息轉換為 system,相容不支援 developer 角色的 OpenAI 相容上游", "转发失败的账号休息一会儿再回来:15 分钟起步,连续失败翻倍,封顶 1 小时;成功一次立即恢复。目的是「让这次失败先凉一会儿」,免得一条条地反复撞同一个坏账号。": "轉發失敗的帳號休息一會兒再回來:15 分鐘起步,連續失敗翻倍,封頂 1 小時;成功一次立即恢復。目的是「讓這次失敗先涼一會兒」,免得一條條地反覆撞同一個壞帳號。", "转发链路": "轉發鏈路", "转发链路 · 诊断 · 系统": "轉發鏈路 · 診斷 · 系統", "轮询间隔": "輪詢間隔", "软件标识超过 1 KB,已截断保存;匹配仅使用保留部分。": "軟體標識超過 1 KB,已截斷儲存;匹配僅使用保留部分。", "软件版本": "軟體版本", "轻量模式": "輕量模式", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 套餐池(Start Plan)通道不可用,相关请求会在请求日志里注明原因": "輕量模式已開啟:關窗即銷燬介面程序(釋放約 200MB 記憶體),閘道器在後臺繼續;介面銷燬期間 ZCode 套餐池(Start Plan)通道不可用,相關請求會在請求日誌裡註明原因", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 活动套餐通道不可用,相关请求会在请求日志里注明原因": "輕量模式已開啟:關窗即銷燬介面程序(釋放約 200MB 記憶體),閘道器在後臺繼續;介面銷燬期間 ZCode 活動套餐通道不可用,相關請求會在請求日誌裡註明原因", "轻量模式(关窗释放界面内存)": "輕量模式(關窗釋放介面記憶體)", "辅助识图": "輔助識圖", "辅助识图 · 原模型回答": "輔助識圖 · 原模型回答", "辅助识图保留原模型回答;切换视觉模型会让视觉模型直接回答。本次授权也包含已设置的模型单独配置。": "輔助識圖保留原模型回答;切換視覺模型會讓視覺模型直接回答。本次授權也包含已設定的模型單獨配置。", "辅助识图或切换视觉模型,默认关闭": "輔助識圖或切換視覺模型,預設關閉", "辅助识图配置": "輔助識圖配置", "输入同步密码": "輸入同步密碼", "输入当前登录用的密码": "輸入目前登入用的密碼", "输入状态码,回车添加": "輸入狀態碼,回車新增", "运行形态": "執行形態", "近期没有命中样本,不代表未来请求不会命中。": "近期沒有命中樣本,不代表未來請求不會命中。", "还原": "還原", "还有额度时被 429 的账号排到队尾,30 分钟后自动回到队列(成功转发一次也会立即回来)。它标记的是「疑似共享池被别人抢」,不是「这个账号本身有问题」。⚠️ 注意它与路由策略的配合:在「家内轮询」下,队尾意味着这一家整体被往后排 —— 如果某个提供商的账号被批量限流,它们会集体沉到队尾,那个家可能长时间轮不到。这时可以关掉本项,让 429 过的账号只受冷却约束(冷却到点自动回来)。": "還有額度時被 429 的帳號排到隊尾,30 分鐘後自動回到佇列(成功轉發一次也會立即回來)。它標記的是「疑似共享池被別人搶」,不是「這個帳號本身有問題」。⚠️ 注意它與路由策略的配合:在「家內輪詢」下,隊尾意味著這一家整體被往後排 —— 如果某個提供商的帳號被批次限流,它們會集體沉到隊尾,那個家可能長時間輪不到。這時可以關掉本項,讓 429 過的帳號只受冷卻約束(冷卻到點自動回來)。", "还没有可用的视觉模型。": "還沒有可用的視覺模型。", "还没有可用的视觉模型。可以在「MCP & Skills」里配好那只视觉分析模型,或把上面的「视觉模型」换成某一只具体模型。": "還沒有可用的視覺模型。可以在「MCP & Skills」裡配好那隻視覺分析模型,或把上面的「視覺模型」換成某一隻具體模型。", "还没有同步过。": "還沒有同步過。", "还没有备选模型": "還沒有備選模型", "还没有添加服务器。点右上角「添加」,填入网关所在机器的 IP 或域名与端口。": "還沒有新增伺服器。點右上角「新增」,填入閘道器所在機器的 IP 或域名與連接埠。", "还没有装载任何数据。": "還沒有裝載任何資料。", "还没有读到版本信息": "還沒有讀到版本資訊", "还没有选择模型,这块设置暂时不起作用。": "還沒有選擇模型,這塊設定暫時不起作用。", "这一份就是「替换 / 追加」模式下网关要发的 system 正文。": "這一份就是「替換 / 追加」模式下閘道器要發的 system 正文。", "这一项已隐藏": "這一項已隱藏", "这一项正在显示": "這一項正在顯示", "这些名称可以直接写进来源声明,不能编辑。": "這些名稱可以直接寫進來源宣告,不能編輯。", "这些模型的请求交给当前路由内可用的视觉模型回答,不再回到原模型。": "這些模型的請求交給目前路由內可用的視覺模型回答,不再回到原模型。", "这些模型看到图片时,先把图片交给 {model} 读一遍,再由它们自己结合读到的内容回答。": "這些模型看到圖片時,先把圖片交給 {model} 讀一遍,再由它們自己結合讀到的內容回答。", "这些模型看到图片时,先把图片交给「沿用工具服务的视觉分析模型」读一遍,再由它们自己结合读到的内容回答。": "這些模型看到圖片時,先把圖片交給「沿用工具服務的視覺分析模型」讀一遍,再由它們自己結合讀到的內容回答。", "这只模型只负责看图,最终仍由原模型回答。": "這隻模型只負責看圖,最終仍由原模型回答。", "这只模型已经在备选里了。": "這隻模型已經在備選裡了。", "这只模型直接接收图片与对话,完成本次回答。": "這隻模型直接接收圖片與對話,完成本次回答。", "这台网关未启用机器人校验": "這臺網關未啟用機器人校驗", "这台网关没有管理员,用一把已启用的 API Key 访问。": "這臺網關沒有管理員,用一把已啟用的 API Key 存取。", "这条历史请求没有保存识别依据,不能据此自动创建规则。": "這條歷史請求沒有儲存識別依據,不能據此自動建立規則。", "这条规则已被删除,请关闭编辑后重新添加。": "這條規則已被刪除,請關閉編輯後重新新增。", "这条配置将对 {model} 生效。": "這條配置將對 {model} 生效。", "这次请求由视觉模型直接回答,不回原模型;{fallback}": "這次請求由視覺模型直接回答,不回原模型;{fallback}", "这里只列出已保存的提供商配置;未配置的提供商沿用全局设置,可从下拉框手动添加。用户保存的模式、文件和正文优先于全局设置,「跟随默认」只取消该提供商的模式、文件和正文覆盖。ZCode 套餐池默认由插件按三块装配,客户端系统正文合入第三块,不会自动创建替换规则;手动修改的网关提示词段或关闭开关仍以用户配置为准,能否被接受取决于上游规则。": "這裡只列出已儲存的提供者設定;未設定的提供者沿用全域設定,可從下拉選單手動新增。使用者儲存的模式、檔案與本文優先於全域設定,「跟隨預設」只取消該提供者的模式、檔案與本文覆寫。ZCode 套餐池預設由外掛按三塊組裝,客戶端系統本文合入第三塊,不會自動建立替換規則;手動修改的閘道提示詞段或關閉開關仍以使用者設定為準,能否被接受取決於上游規則。", "进程 PID": "程序 PID", "远程根目录": "遠端根目錄", "远端同一路径下的旧快照。事件日志、请求明细与调试报文不会上传。": "遠端同一路徑下的舊快照。事件日誌、請求明細與除錯報文不會上傳。", "远端已有一份快照,将被覆盖": "遠端已有一份快照,將被覆蓋", "远端快照使用了另一把账号密钥,但没有携带密钥文件,无法在本机解密。请在原来那台机器上重新上传一次。": "遠端快照使用了另一把帳號金鑰,但沒有攜帶金鑰檔案,無法在本機解密。請在原來那臺機器上重新上傳一次。", "远端快照使用的账号密钥与本机不同。请输入上传那台机器设置的同步密码,用它解出密钥装到本机后再继续下载。": "遠端快照使用的帳號金鑰與本機不同。請輸入上傳那臺機器設定的同步密碼,用它解出金鑰裝到本機後再繼續下載。", "远端数据与当前版本不兼容": "遠端資料與當前版本不相容", "远端该路径下还没有快照,本次是首次上传。": "遠端該路徑下還沒有快照,本次是首次上傳。", "远端路径:{path}": "遠端路徑:{path}", "远端还没有可下载的同步数据": "遠端還沒有可下載的同步資料", "连不上这台网关。确认地址与端口正确、网关已启动,且已开启「局域网访问」;用 https 时还要确认证书有效": "連不上這臺網關。確認地址與連接埠正確、閘道器已啟動,且已開啟「區域網路存取」;用 https 時還要確認證書有效", "连不上这台网关。请确认地址、端口与防火墙设置,网关需已启动;桌面端请在「设置 → 网关 → 网络访问」开启「允许其他设备访问网关」。使用 HTTPS 时还需确认证书有效。": "無法連線到這台閘道。請確認位址、連接埠與防火牆設定,閘道需已啟動;桌面端請在「設定 → 閘道 → 網路存取」開啟「允許其他裝置存取閘道」。使用 HTTPS 時還需確認憑證有效。", "连接中超时": "連線中超時", "连接失败:{message}": "連線失敗:{message}", "连续失败到阈值后把这个账号整个打开(默认关)。与失败退避的分工:退避管「单次失败先凉一会儿」,惩罚轻、自动恢复;熔断管「这个账号现在整体不对劲,别再一条条地试」,要连续成功若干次才关。打开期间该账号被跳过,除非全场只剩它 —— 那时仍放行试一次。": "連續失敗到閾值後把這個帳號整個開啟(預設關)。與失敗退避的分工:退避管「單次失敗先涼一會兒」,懲罰輕、自動恢復;熔斷管「這個帳號現在整體不對勁,別再一條條地試」,要連續成功若干次才關。開啟期間該帳號被跳過,除非全場只剩它 —— 那時仍放行試一次。", "追加": "追加", "追加网关提示词": "追加閘道器提示詞", "退出失败:{message}": "退出失敗:{message}", "退出登录": "退出登入", "退出这台服务器的登录,不影响其他服务器": "退出這臺伺服器的登入,不影響其他伺服器", "选好接管回答的视觉模型后这块设置才会生效。": "選好接管回答的視覺模型後這塊設定才會生效。", "选好模型后这条配置才会生效。": "選好模型後這條配置才會生效。", "选好视觉模型后这块设置才会生效。": "選好視覺模型後這塊設定才會生效。", "选定提供商": "選定供應商", "选择一个或多个模型": "選擇一個或多個模型", "选择位置并加密备份": "選擇位置並加密備份", "选择备份文件并恢复": "選擇備份檔案並恢復", "选择提供商(可多选)": "選擇提供商(可多選)", "选路规则": "選路規則", "选项与默认值由已启用插件提供;你保存的覆盖值不会被插件更新替换。": "選項與預設值由已啟用外掛提供;你儲存的覆寫值不會被外掛更新取代。", "选项与默认值由插件提供,你保存的修改不会被插件更新覆盖。切换提供商不会丢失未保存的修改。": "選項與預設值由外掛提供,你儲存的修改不會被外掛更新覆寫。切換供應商不會遺失尚未儲存的修改。", "透传": "透傳", "透传 = 不动客户端 system;替换 = 删掉客户端的 system / developer,换成网关提示词;追加 = 保留客户端内容,在最前面多插一条。": "透傳 = 不動客戶端 system;替換 = 刪掉客戶端的 system / developer,換成閘道器提示詞;追加 = 保留客戶端內容,在最前面多插一條。", "透传客户端 system": "透傳客戶端 system", "透传客户端 system(默认)": "透傳客戶端 system(預設)", "通常是网络问题,点右侧重试": "通常是網路問題,點右側重試", "通用": "通用", "遇到 Bug、报错或异常行为": "遇到 Bug、報錯或異常行為", "配置目录下的 agent2api.db(账号、日志、请求记录、调试报文与设置都在里面)。": "配置目錄下的 agent2api.db(帳號、日誌、請求記錄、除錯報文與設定都在裡面)。", "采用本规则": "採用本規則", "重启后生效,不影响当前操作": "重啟後生效,不影響當前操作", "重命名": "重新命名", "重命名只更新分类显示名,不拆分历史用量,也不重新归类历史请求。": "重新命名只更新分類顯示名,不拆分歷史用量,也不重新歸類歷史請求。", "重命名客户端分类": "重新命名客戶端分類", "重复清理": "重複清理", "重复清理直到不再变化(仅正则删除)": "重複清理直到不再變化(僅正則刪除)", "重新读取会替换当前未保存的草稿。": "重新讀取會替換當前未儲存的草稿。", "重新读取设置": "重新讀取設定", "重编码质量": "重編碼質量", "重置会清空管理员账号与密码,面板将回到「未注册」状态。": "重置會清空管理員帳號與密碼,面板將回到「未註冊」狀態。", "重置管理员": "重置管理員", "重试设置已刷新": "重試設定已重新整理", "重试间隔": "重試間隔", "铸造守卫每隔多久看一次库存(毫秒)。只影响发现缺货的反应速度 —— 库存够用时轮询不会铸造任何令牌。默认 2500 毫秒,可填 1000–30000。": "鑄造守衛每隔多久看一次庫存(毫秒)。隻影響發現缺貨的反應速度 —— 庫存夠用時輪詢不會鑄造任何權杖。預設 2500 毫秒,可填 1000–30000。", "长边像素上限": "長邊畫素上限", "问题反馈": "問題反饋", "阿里云 OSS": "阿里雲 OSS", "限流中账号": "限流中帳號", "随包内嵌的快照(发版时的那份)": "隨包內嵌的快照(發版時的那份)", "随软件更新": "隨軟體更新", "隐藏 {name}": "隱藏 {name}", "隐藏分组 {name}": "隱藏分組 {name}", "隐藏用户名": "隱藏使用者名稱", "隐藏账号名(显示成星号)": "隱藏帳號名(顯示成星號)", "隐藏这一组": "隱藏這一組", "非流式响应超时": "非流式響應超時", "面板登录": "面板登入", "面板端口": "面板連接埠", "面板管理员账号": "面板管理員帳號", "韩语": "韓語", "项目来源": "專案來源", "预览不发送模型请求,也不修改历史记录。": "預覽不傳送模型請求,也不修改歷史記錄。", "预览中…": "預覽中…", "预览匹配": "預覽匹配", "预设": "預設", "首选不可用时再依次尝试备选。": "首選不可用時再依次嘗試備選。", "首选不可用时再依次尝试;留空则停止并说明原因。": "首選不可用時再依次嘗試;留空則停止並說明原因。", "验证方式": "驗證方式", "验证码令牌池": "驗證碼權杖池", "验证码令牌池设置已刷新": "驗證碼權杖池設定已重新整理", "验证码库存的参考目标,默认 3 个,可填 1–10。只影响库存状态展示,不会因为低于目标自动生成令牌或弹出验证码。": "驗證碼庫存的參考目標,預設 3 個,可填 1–10。只影響庫存狀態顯示,不會因為低於目標自動產生權杖或彈出驗證碼。", "高级设置": "進階設定", "默认 10000 条,按日志级别分配保留容量,超出后清理最旧的记录;同时受保留天数限制。": "預設 10000 筆,按日誌層級分配保留容量,超出後清理最舊的記錄;同時受保留天數限制。", "默认 1000000 条(100 万),超出后清理最旧的请求记录及其原始正文,不影响按天聚合报表;同时受保留天数限制。": "預設 1000000 筆(100 萬),超出後清理最舊的請求記錄及其原始本文,不影響每日彙總報表;同時受保留天數限制。", "默认 5 分钟。间隔内的变化合并为最新快照,到期后上传;手动上传不受限制。失败后会延长等待并自动重试。": "預設 5 分鐘。間隔內的變更合併為最新快照,到期後上傳;手動上傳不受限制。失敗後會延長等待並自動重試。", "默认仅本机可访问(127.0.0.1)。开启后监听所有 IPv4 网卡(0.0.0.0),访问范围由网络与防火墙决定,不限于局域网,也不会自动开放到公网。开启前必须注册面板管理员;管理接口需要管理员会话或网关 Key,API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。「同时开放网页管理面板」默认关闭,开启后可从其他设备的浏览器登录管理;关闭它不影响 API 转发和本机桌面管理。修改任一开关都需要重启应用。": "預設僅本機可存取(127.0.0.1)。開啟後監聽所有 IPv4 網路介面卡(0.0.0.0),存取範圍由網路與防火牆決定,不限於區域網路,也不會自動開放到公網。開啟前必須註冊面板管理員;管理介面需要管理員工作階段或閘道 Key,API 呼叫需要已啟用的閘道 Key,沒有時會自動建立一把「預設」Key。「同時開放網頁管理面板」預設關閉,開啟後可從其他裝置的瀏覽器登入管理;關閉它不影響 API 轉發和本機桌面管理。修改任一開關都需要重新啟動應用程式。", "默认值通常够用,出问题时才需要调": "預設值通常夠用,出問題時才需要調", "默认关闭。开启后下一次 Codex 请求立即生效,不用重启;只对 Codex 来源的 /v1/responses 请求补阶段标记,其它客户端与 /v1/chat/completions 不受影响。": "預設關閉。開啟後下一次 Codex 請求立即生效,不用重啟;只對 Codex 來源的 /v1/responses 請求補階段標記,其它客戶端與 /v1/chat/completions 不受影響。", "默认关闭。改动立即生效,不用重启;关闭期间的跨源请求会被预检拦下。": "預設關閉。改動立即生效,不用重啟;關閉期間的跨源請求會被預檢攔下。", "默认关闭窗口不会退出程序,而是把窗口缩到系统托盘,转发继续在后台运行(OpenAI 客户端不受影响);要彻底退出程序,请在托盘图标上右键选「退出」。关掉这个开关后,点关闭按钮即退出程序、转发随之中断。「开机自动启动」开启后,登录系统时会自动启动本程序(通常直接驻留托盘),不需要手动打开。": "預設關閉視窗不會退出程式,而是把視窗縮到系統托盤,轉發繼續在後臺執行(OpenAI 客戶端不受影響);要徹底退出程式,請在托盤圖示上右鍵選「退出」。關掉這個開關後,點關閉按鈕即退出程式、轉發隨之中斷。「開機自動啟動」開啟後,登入系統時會自動啟動本程式(通常直接駐留托盤),不需要手動開啟。", "默认关闭,先配置好再开启;关闭后配置会保留。": "預設關閉,先配置好再開啟;關閉後配置會保留。", "默认应用全部提供商(包含之后新增的插件与自定义提供商)。指定范围后,未选中的提供商不做指纹脱敏;清空选择自动回到全部提供商。": "預設應用全部提供商(包含之後新增的外掛與自定義提供商)。指定範圍後,未選中的提供商不做指紋脫敏;清空選擇自動回到全部提供商。", "默认开启。只改 role 字段本身,消息内容与顺序都不动;本项只改发给上游的副本,客户端看到的响应内容不变。": "預設開啟。只改 role 欄位本身,訊息內容與順序都不動;本項只改發給上游的副本,客戶端看到的響應內容不變。", "默认开启。只改发给上游的副本,客户端看到的响应与原图都不变;请求日志里保存的是客户端发来的原图,不是压缩后的版本。只作用在对话链路,生图 / 图片编辑不经过这里。改完对下一个请求立即生效,不用重启。": "預設開啟。只改發給上游的副本,客戶端看到的響應與原圖都不變;請求日誌裡儲存的是客戶端發來的原圖,不是壓縮後的版本。只作用在對話鏈路,生圖 / 圖片編輯不經過這裡。改完對下一個請求立即生效,不用重啟。", "默认开启。命中明细会记进请求日志的「敏」标签(悬停可看命中了哪几条规则)。本项只改发给上游的副本,客户端看到的响应内容不变。": "預設開啟。命中明細會記進請求日誌的「敏」標籤(懸停可看命中了哪幾條規則)。本項只改發給上游的副本,客戶端看到的響應內容不變。", "默认开启并应用全部提供商。编辑词表或应用范围后点击「保存设置」,下一次请求立即生效,不用重启。命中明细仍记进请求日志的「敏」标签。": "預設開啟並應用全部提供商。編輯詞表或應用範圍後點擊「儲存設定」,下一次請求立即生效,不用重啟。命中明細仍記進請求日誌的「敏」標籤。", "默认网关只监听 127.0.0.1,只有本机能访问。开启后网关改听所有网卡,同一局域网内的设备可以把 API 地址指向本机 IP 一起使用。出于安全考虑,开启前必须先注册一个面板管理员:管理接口从此要求管理员会话或网关 Key,模型额度不会对局域网裸奔;一把启用的网关 Key 都没有时,转发接口也会拒绝服务,直到创建第一把。改动需要重启应用生效。「同时开放网页管理面板」把管理界面也出给局域网(其他设备的浏览器打开本机 IP 即可管理),默认关闭 —— 桌面端的面板仍只由本程序自己出。": "預設閘道器只監聽 127.0.0.1,只有本機能存取。開啟後閘道器改聽所有網路卡,同一區域網路內的裝置可以把 API 地址指向本機 IP 一起使用。出於安全考慮,開啟前必須先註冊一個面板管理員:管理介面從此要求管理員會話或閘道器 Key,模型額度不會對區域網路裸奔;一把啟用的閘道器 Key 都沒有時,轉發介面也會拒絕服務,直到建立第一把。改動需要重啟應用生效。「同時開放網頁管理面板」把管理介面也出給區域網路(其他裝置的瀏覽器開啟本機 IP 即可管理),預設關閉 —— 桌面版的面板仍只由本程式自己出。", "({n} 个整组隐藏)": "({n} 個整組隱藏)", "({n} 行)": "({n} 行)", "({n} 项被覆盖)": "({n} 項被覆蓋)", "(全部为默认值)": "(全部為預設值)", "(官方原文)": "(官方原文)", "(已存一份正文,{n} 行;切成「替换 / 追加」后生效)": "(已存一份正文,{n} 行;切成「替換 / 追加」後生效)", "(已改)": "(已改)", "(已注册过会跳过这一步,直接生效)。": "(已註冊過會跳過這一步,直接生效)。", "(当前生效的就是这一份,{n} 行)": "(當前生效的就是這一份,{n} 行)", "(文件:{path})": "(檔案:{path})", "(未生效)": "(未生效)", ",{items}": ",{items}", ",{time}": ",{time}", ",以及代理池 / 订阅里可能存在的代理凭据。请使用只有你能访问的私有存储;账号密钥由同步密码单独加密,泄露存储本身不等于泄露账号。": ",以及代理池 / 訂閱裡可能存在的代理憑據。請使用只有你能存取的私有儲存;帳號金鑰由同步密碼單獨加密,洩露儲存本身不等於洩露帳號。", ",包括恢复后需要重新登录管理面板。": ",包括恢復後需要重新登入管理面板。", ",可直接用于登录。请妥善保管,不要外传或上传到公共位置。": ",可直接用於登入。請妥善保管,不要外傳或上傳到公共位置。", ",文件里后续的改动在清空这里之前不再生效": ",檔案裡後續的改動在清空這裡之前不再生效", ",替换前的数据已备份为 {name}": ",替換前的資料已備份為 {name}", ",自定义提供商新增 {added} 个、更新 {updated} 个": ",自定義提供商新增 {added} 個、更新 {updated} 個", ";开关关闭时词表不执行": ";開關關閉時詞表不執行", ";网页管理面板已一并开放(浏览器打开同一地址)": ";網頁管理面板已一併開放(瀏覽器開啟同一地址)", "AI 调整后的 JSON({n} 字符)": "AI 調整後的 JSON({n} 字元)", "CodeArts 的账号余额还剩多少?": "CodeArts 的帳號餘額還剩多少?", "Enter 发送 · Shift+Enter 换行": "Enter 傳送 · Shift+Enter 換行", "JSON 文件会以文本发送给当前对话模型,其中的凭证也会保存在这条会话里。": "JSON 檔案會以文字傳送給目前對話模型,其中的憑證也會保存在這條會話裡。", "[已省略 {n} 字符的 JSON]": "[已省略 {n} 字元的 JSON]", "attachment 与 content 只能给一个": "attachment 與 content 只能給一個", "section 只能是 models / mappings / both": "section 只能是 models / mappings / both", "{n} / {total}": "{n} / {total}", "{n} 个候选,{m} 个跳过": "{n} 個候選,{m} 個略過", "{n} 个账号正在限流:": "{n} 個帳號正在限流:", "{n} 家": "{n} 家", "{n} 条改动": "{n} 條改動", "{n} 条映射": "{n} 條對應", "{n} 条请求日志": "{n} 筆請求記錄", "{n} 条运行日志": "{n} 筆執行記錄", "{requests} 次请求,{tokens} Token": "{requests} 次請求,{tokens} Token", "✓ 完成": "✓ 完成", "✗ 失败": "✗ 失敗", "「{name}」是空文件。": "「{name}」是空檔案。", "「{name}」看起来是二进制文件,助手只接收 JSON 文本。": "「{name}」看起來是二進位檔案,助手只接收 JSON 文字。", "「{name}」超过 {n} MB,换一张小一点的。": "「{name}」超過 {n} MB,換一張小一點的。", "「{name}」超过 {n} MB,请换一个小一点的 JSON 文件。": "「{name}」超過 {n} MB,請換一個小一點的 JSON 檔案。", "「{name}」超过 {n} MB,请换一个小一点的 JSON 文件,或去添加账号页导入。": "「{name}」超過 {n} MB,請換一個小一點的 JSON 檔案,或去新增帳號頁匯入。", "一次最多 {n} 个文件。": "一次最多 {n} 個檔案。", "一次最多 {n} 个文件,多出的没有添加。": "一次最多 {n} 個檔案,多出的沒有加入。", "一次最多 {n} 张图片。": "一次最多 {n} 張圖片。", "一次最多 {n} 张图片,多出的没有添加。": "一次最多 {n} 張圖片,多出的未新增。", "上面四个快捷查询直接读网关数据,不经过模型": "上面四個快捷查詢直接讀閘道器資料,不經過模型", "下载图片": "下載圖片", "不指定,交给映射绑定": "不指定,交給對映繫結", "今天用了 {tokens} Token,共 {requests} 次请求。": "今天用了 {tokens} Token,共 {requests} 次請求。", "今天用了多少 Token?": "今天用了多少 Token?", "会话响应不完整": "工作階段回應不完整", "会话里的选择优先于这里的默认值": "會話裡的選擇優先於這裡的預設值", "余额是缓存读数,点账号详情里的「刷新凭证」可触发实时查询。": "餘額是快取讀數,點帳號詳情裡的「重新整理憑證」可觸發即時查詢。", "作为 system 消息注入": "作為 system 訊息注入", "保存位置": "儲存位置", "保存图片失败:{message}": "儲存圖片失敗:{message}", "保存思考等級失敗:{message}": "儲存思考等級失敗:{message}", "保存思考等级失败:{message}": "儲存思考等級失敗:{message}", "修改上传或已生成的图片,支持多张参考图。": "修改上傳或已生成的圖片,支援多張參考圖。", "修改文件": "修改檔案", "修改模型能力": "修改模型能力", "共 {n} 个模型条目。": "共 {n} 個模型條目。", "共 {n} 个模型条目。映射与改名请在桌面端「模型管理」里做。": "共 {n} 個模型條目。對映與改名請在桌面版「模型管理」裡做。", "共 {n} 个账号,前 {m} 个的余额读数:": "共 {n} 個帳號,前 {m} 個的餘額讀數:", "内容": "內容", "凭证会保存到网关;同一提供商下同一身份的账号会更新原凭证。文件若是整库导出的 accounts 数组,会按文件里的账号批量导入。": "憑證會保存到閘道;同一提供商下同一身分的帳號會更新原憑證。檔案若是整庫匯出的 accounts 陣列,會按檔案裡的帳號批次匯入。", "分叉": "分叉", "分叉会话失败:{message}": "分叉會話失敗:{message}", "分支": "分支", "删除会话失败:{message}": "刪除工作階段失敗:{message}", "删除消息": "刪除訊息", "删除这条对话": "刪除這段對話", "删除这条对话?": "刪除這條對話?", "删除这条消息?模型消息关联的工具结果也会一并删除。": "刪除這條訊息?模型訊息關聯的工具結果也會一併刪除。", "助手设置": "助手設定", "助手设置没读出来,暂时存不了对话模型 —— 看输入框下方的提示。": "助手設定沒讀出來,暫時存不了對話模型 —— 看輸入框下方的提示。", "助手设置没读出来,暂时存不了对话模型。": "助手設定沒讀出來,暫時存不了對話模型。", "助手设置没读出来,暂时存不了思考等级 —— 看输入框下方的提示。": "助手設定讀不出來,暫時存不了思考等級 —— 看輸入框下方的提示。", "助手设置没读出来,暂时存不了思考等级。": "助手設定沒讀出來,暫時存不了思考等級。", "助手设置没读出来,现在还不能发消息 —— 点右上角「助手设置」看看。": "助手設定沒讀出來,現在還不能發訊息 —— 點右上角「助手設定」看看。", "助手设置没读出来,现在还不能发消息 —— 看输入框下方的提示。": "助手設定沒讀出來,現在還不能發訊息 —— 看輸入框下方的提示。", "勾选即注入": "勾選即注入", "单张参考图不能超过 10 MiB": "單張參考圖不能超過 10 MiB", "历史会话": "工作階段歷史", "历史对话": "歷史對話", "原先在「设置 → AI 助手」的配置都搬到这里了": "原先在「設定 → AI 助手」的配置都搬到這裡了", "原始 ID 的默认绑定不能删除,请关闭它的开关": "原始 ID 的預設綁定不能刪除,請關閉它的開關", "原始报文或对话正文已省略": "原始通訊資料或對話內文已省略", "参数": "引數", "参数 {name} 只能是:{values}": "參數 {name} 只能是:{values}", "参数 {name} 必须是不小于 {min} 的整数": "參數 {name} 必須是不小於 {min} 的整數", "参数 {name} 必须是不超过 {max} 个字符的字符串": "參數 {name} 必須是不超過 {max} 個字元的字串", "参数 {name} 必须是布尔值": "參數 {name} 必須是布林值", "参数 {name} 必须是有效日期(YYYY-MM-DD)": "參數 {name} 必須是有效日期(YYYY-MM-DD)", "参数 {name} 必须是毫秒时间戳": "參數 {name} 必須是毫秒時間戳記", "参数不完整(需要 provider / id / alias / action)": "參數不完整(需要 provider / id / alias / action)", "参考图仅支持 PNG、JPEG、WebP": "參考圖僅支援 PNG、JPEG、WebP", "参考图会交给图片编辑工具,当前对话模型不会读取图片。": "參考圖會交給圖片編輯工具,目前對話模型不會讀取圖片。", "参考图片列表不能为空": "參考圖片清單不能為空", "参考图片编号不存在": "參考圖片編號不存在", "参考图片请使用附件编号、已生成图片 ID 或 HTTP(S) 链接": "參考圖片請使用附件編號、已生成圖片 ID 或 HTTP(S) 連結", "发消息或做任务…(Enter 发送,Shift+Enter 换行,可粘贴图片或 JSON 文件)": "傳訊息或做任務…(Enter 傳送,Shift+Enter 換行,可貼上圖片或 JSON 檔案)", "发消息或做任务…(Enter 发送,Shift+Enter 换行,可粘贴图片)": "發訊息或做任務…(Enter 傳送,Shift+Enter 換行,可貼上圖片)", "发起模型测试": "發起模型測試", "受限": "受限", "变更前确认": "變更前確認", "只支持图片和 JSON 凭证文件(.json / .info)": "只支援圖片和 JSON 憑證檔案(.json / .info)", "只支持图片和 JSON 凭证文件(.json / .info);「{name}」已跳过。": "只支援圖片和 JSON 憑證檔案(.json / .info);「{name}」已略過。", "只支持图片文件(PNG / JPG / WebP / GIF)。": "只支援圖片檔案(PNG / JPG / WebP / GIF)。", "只读 · 不会改动配置": "只讀 · 不會改動配置", "只跳过确认,不扩大工具权限;每次执行仍会记录在对话里。": "只跳過確認,不擴大工具許可權;每次執行仍會記錄在對話裡。", "各账号余额还剩多少?": "各帳號餘額還剩多少?", "启用 / 禁用模型": "啟用 / 停用模型", "启用 / 禁用账号": "啟用 / 停用帳號", "命令": "命令", "哪些模型在多家重复了?": "哪些模型在多家重複了?", "图片 {n}": "圖片 {n}", "图片工具包含不支持的参数:{name}": "圖片工具包含不支援的參數:{name}", "图片工具没有返回可显示的图片": "圖片工具沒有傳回可顯示的圖片", "图片工具缺少当前会话": "圖片工具缺少目前工作階段", "图片工具需要提示词和图片模型": "圖片工具需要提示詞與圖片模型", "完全访问": "完全存取", "完全访问已开启:改动类工具会直接执行,不再弹出确认卡。": "完全存取已開啟:改動類工具會直接執行,不再彈出確認卡。", "完整对话在桌面端「AI 助手」页": "完整對話在桌面版「AI 助手」頁", "实时余额查询会请求上游,并可能触发已配置的自动禁用规则。": "即時餘額查詢會請求上游,並可能觸發已設定的自動停用規則。", "对指定模型发一次真实请求,回报连通性与耗时。": "對指定模型發一次真實請求,回報連通性與耗時。", "对话由网关转发到上游模型,用量计入请求日志": "對話由閘道器轉發到上游模型,用量計入請求日誌", "导入账号文件": "匯入帳號檔案", "将导入一个账号:": "將匯入一個帳號:", "就绪": "就緒", "工具「{name}」未获授权,未执行。": "工具「{name}」未獲授權,未執行。", "工具调用已达本轮上限,已停止继续执行。": "工具呼叫已達本輪上限,已停止繼續執行。", "已从这条消息分叉为新对话": "已從這條訊息分叉為新對話", "已停止": "已停止", "已停止生成": "已停止生成", "已全部勾选": "已全部勾選", "已切换到变更前确认": "已切換到變更前確認", "已切换到完全访问": "已切換到完全存取", "已启用的模型": "已啟用的模型", "已完成 {n} 项改动": "已完成 {n} 項變更", "已完成 {n} 项,剩余 {m} 项未执行": "已完成 {n} 項,其餘 {m} 項未執行", "已导入账号「{name}」": "已匯入帳號「{name}」", "已生成 {n} 张图片": "已生成 {n} 張圖片", "已调用": "已呼叫", "开关模型的对外可用性,不改其它属性。": "開關模型的對外可用性,不改其它屬性。", "开始日期不能晚于结束日期": "開始日期不能晚於結束日期", "开始时间必须早于结束时间": "開始時間必須早於結束時間", "当前一个工具都没勾选,助手只能纯聊天。点右上角「助手设置」勾上需要的工具。": "當前一個工具都沒勾選,助手只能純聊天。點右上角「助手設定」勾上需要的工具。", "当前安装包未包含原生图片保存能力,请更新应用。": "當前安裝包未包含原生圖片儲存能力,請更新應用。", "当前客户端缺少读取接口:{name}": "目前用戶端缺少讀取介面:{name}", "当前对话没有可读取的文本附件:请先把 JSON 文件发给助手": "目前對話沒有可讀取的文字附件:請先把 JSON 檔案傳給助手", "当前模型没有声明图片能力,图可能发不上去。": "當前模型沒有宣告圖片能力,圖可能發不上去。", "当前没有同名模型分布在多家。": "當前沒有同名模型分佈在多家。", "当前:已关闭(助手收不到任何系统提示词,工具定义照发)": "當前:已關閉(助手收不到任何系統提示詞,工具定義照發)", "当前:已开启 · 使用内置默认提示词": "當前:已開啟 · 使用內建預設提示詞", "快捷查询走本地网关,不消耗额度": "快捷查詢走本地閘道器,不消耗額度", "思考等级已切换": "思考等級已切換", "思考过程": "思考過程", "思考:跟随模型": "思考:跟隨模型", "总请求": "總請求", "成功率": "成功率", "我可以直接查网关里的真实数据:余额、模型重复、今日用量、限流账号。": "我可以直接查閘道器裡的真實資料:餘額、模型重複、今日用量、限流帳號。", "打开会话失败:{message}": "開啟工作階段失敗:{message}", "执行中": "執行中", "执行结果": "執行結果", "批量导入:新增 {added}、更新 {updated}、失败 {failed}": "批次匯入:新增 {added}、更新 {updated}、失敗 {failed}", "找到 {n} 组同名模型:": "找到 {n} 組同名模型:", "把凭证文件交给对应提供商解析并落库;同身份账号会更新凭证。": "把憑證檔案交給對應提供商解析並落庫;同身分帳號會更新憑證。", "把重复的模型加上家名前缀区分开": "把重複的模型加上家名字首區分開", "拒绝": "拒絕", "按提供商名称查询模型、能力、来源与映射,支持自定义提供商。": "依提供商名稱查詢模型、能力、來源與對應,支援自訂提供商。", "按提示词生成图片。": "按提示詞生成圖片。", "按提示词编辑参考图片。": "按提示詞編輯參考圖片。", "按文件内容判断": "按檔案內容判斷", "按文本生成图片,结果直接显示在对话中。": "按文字生成圖片,結果直接顯示在對話中。", "推理等级": "推理等級", "提供商 id「{provider}」格式不正确": "提供商 id「{provider}」格式不正確", "提供商「{name}」匹配到多家,请使用提供商 ID:{list}": "提供商「{name}」符合多筆項目,請使用提供商 ID:{list}", "改上下文窗口 / 最大输出 Token / 工具调用等能力位。": "改上下文視窗 / 最大輸出 Token / 工具呼叫等能力位。", "改动先列清单": "改動先列清單", "改动直接执行": "改動直接執行", "改动类 · 默认需要确认": "改動類 · 預設需要確認", "改动类工具先列清单,等你点「执行」": "改動類工具先列清單,等你點「執行」", "改动类工具直接执行,不再询问": "改動類工具直接執行,不再詢問", "改回变更前确认": "改回變更前確認", "改某一家的整组顺位(先试哪一家)。": "改某一家的整組順位(先試哪一家)。", "改账号在全局队列里的名次,决定主备与切换顺序。": "改帳號在全域佇列裡的名次,決定主備與切換順序。", "数量": "數量", "文件内容是空的": "檔案內容是空的", "文件过大({n} 字符):请先用 read_attachment 分段查看,或改用添加账号页导入": "檔案過大({n} 字元):請先用 read_attachment 分段查看,或改用新增帳號頁匯入", "新增 / 删除映射名,支持批量加前缀与同名合并到多家。": "新增 / 刪除對映名,支援批次加字首與同名合併到多家。", "新建会话": "建立工作階段", "新建对话时使用": "新建對話時使用", "无法判断这些凭证属于哪家提供商。请先问用户,或用 provider 指定(常见 id:{list})": "無法判斷這些憑證屬於哪家提供商。請先問使用者,或用 provider 指定(常見 id:{list})", "无法读取图片": "無法讀取圖片", "映射": "對映", "最高": "最高", "有什么可以帮你?可以问配置、查余额、让我改模型设置。": "有什麼可以幫你?可以問配置、查餘額、讓我改模型設定。", "未命名对话": "未命名對話", "未知的工具:{name}": "未知的工具:{name}", "未选择": "未選擇", "权限模式": "權限模式", "极低": "極低", "查看 API Key 详情必须指定 API Key 身份": "檢視 API Key 詳情必須指定 API Key 身份", "查看图片": "查看圖片", "查看模型候选账号、跳过原因和当前路由策略。": "查看模型候選帳號、略過原因和目前路由策略。", "查询凭证、插件和定时任务等运行事件的脱敏摘要。": "查詢憑證、外掛和排程工作等執行事件的去識別化摘要。", "查询生产请求的 Token 用量、成功率、排行和趋势。": "查詢正式請求的 Token 用量、成功率、排行和趨勢。", "查询用量报表": "查詢用量報表", "查询请求日志": "查詢請求記錄", "查询请求状态、耗时、账号、错误与重试,不读取对话正文。": "查詢請求狀態、耗時、帳號、錯誤與重試,不讀取對話內文。", "查询账号": "查詢帳號", "查询账号余额": "查詢帳號餘額", "查询路由队列": "查詢路由佇列", "查询运行日志": "查詢執行記錄", "标题总结失败:{message}": "標題總結失敗:{message}", "标题总结提示词": "標題總結提示詞", "标题总结模型": "標題總結模型", "标题总结设置已保存": "標題總結設定已儲存", "模型「{model}」当前不在可用列表中,请重新选择;也可到「模型管理」或「插件」页检查是否已启用。": "模型「{model}」目前不在可用清單中,請重新選擇;也可到「模型管理」或「外掛」頁檢查是否已啟用。", "模型不支持时会自动忽略": "模型不支援時會自動忽略", "模型名称": "模型名稱", "模型响应未完整结束,请重试;未执行其中的工具调用。": "模型回應未完整結束,請重試;未執行其中的工具呼叫。", "模型对话": "模型對話", "模型没有返回内容": "模型沒有返回內容", "正在思考…": "正在思考…", "正在执行": "正在執行", "正在生成,点右侧按钮可停止": "正在生成,點右側按鈕可停止", "正在读取可用模型…": "正在讀取可用模型…", "正在读取图片…": "正在讀取圖片…", "没有可用的模型": "沒有可用的模型", "没有已启用的模型,请先在「模型管理」里启用": "沒有已啟用的模型,請先在「模型管理」裡啟用", "没有找到提供商「{name}」,请先不填 provider 查询,或用 keyword 搜索": "找不到提供商「{name}」,請先不填 provider 查詢,或用 keyword 搜尋", "没有找到附件「{ref}」:编号从 1 开始,也可以用文件名": "沒有找到附件「{ref}」:編號從 1 開始,也可以用檔案名稱", "没有提供要修改的项目": "未提供要修改的項目", "测一下当前最快的模型通不通": "測一下當前最快的模型通不通", "浏览": "瀏覽", "消息操作": "訊息操作", "深度推理": "深度推理", "添加图片": "新增圖片", "添加图片或 JSON 文件(也可粘贴或拖入)": "新增圖片或 JSON 檔案(也可貼上或拖入)", "添加图片或文件": "新增圖片或檔案", "添加图片(也可粘贴或拖入)": "新增圖片(也可貼上或拖入)", "清空全部": "清空全部", "清空历史失败:{message}": "清空歷史失敗:{message}", "现在有哪些账号被限流?": "現在有哪些帳號被限流?", "现在没有账号被限流。": "現在沒有帳號被限流。", "生成图片": "生成圖片", "生成的图片": "生成的圖片", "用户目录": "使用者目錄", "看看哪些模型在多家重复了": "看看哪些模型在多家重複了", "禁用会把账号移出转发队列,线路可能因此断供。": "停用會把帳號移出轉發佇列,線路可能因此斷供。", "移除图片 {n}": "移除圖片 {n}", "移除文件「{name}」": "移除檔案「{name}」", "终端": "終端", "编辑图片": "編輯圖片", "编辑消息": "編輯訊息", "聊天附件 {ref}": "聊天附件 {ref}", "自定义提供商模块未就绪(请刷新界面后重试)": "自訂提供商模組尚未就緒(請重新整理介面後重試)", "自由对话请用桌面端…": "自由對話請用桌面版…", "获取模型列表": "獲取模型列表", "获取账号列表": "取得帳號清單", "获取账号详情": "取得帳號詳細資料", "要改配置的话,桌面端的助手支持完整对话与工具调用。": "要改配置的話,桌面版的助手支援完整對話與工具呼叫。", "计划": "計畫", "设置模型映射 ID": "設定模型對映 ID", "请先上传参考图片,或先生成一张图片": "請先上傳參考圖片,或先生成一張圖片", "请提供 attachment 或 content": "請提供 attachment 或 content", "读取 {name}": "讀取 {name}", "读取 {name}({from}-{to} 字符)": "讀取 {name}({from}-{to} 字元)", "读取凭证状态、限流、并发、代理和限制器的本地快照。": "讀取憑證狀態、限流、並行連線、代理和限制器的本機快照。", "读取历史会话失败:{message}": "讀取歷史工作階段失敗:{message}", "读取响应不完整:{name}": "讀取回應不完整:{name}", "读取图片失败": "讀取圖片失敗", "读取图片失败:{message}": "讀取圖片失敗:{message}", "读取文件失败:{message}": "讀取檔案失敗:{message}", "读取模型清单": "讀取模型清單", "读取模型清单失败": "讀取模型清單失敗", "读取聊天里上传的 JSON / .info 文件,支持分页。": "讀取聊天裡上傳的 JSON / .info 檔案,支援分頁。", "读取账号、启用状态、优先级与隐藏原因,支持筛选和分页。": "讀取帳號、啟用狀態、優先順序與隱藏原因,支援篩選和分頁。", "读取账号列表": "讀取帳號列表", "读取附件": "讀取附件", "读各提供商的模型清单、映射名与启用状态。": "讀各提供商的模型清單、對映名與啟用狀態。", "读各账号的额度 / 剩余用量。": "讀各帳號的額度 / 剩餘用量。", "调整提供商顺位": "調整提供商順位", "调整账号优先级": "調整帳號優先順序", "账号「{name}」匹配到多条记录,请使用账号 ID:{ids}": "帳號「{name}」符合多筆記錄,請使用帳號 ID:{ids}", "账号额度": "帳號額度", "走本地网关 · 消耗所选账号额度": "走本地閘道器 · 消耗所選帳號額度", "跟随对话模型": "跟隨對話模型", "跟随模型": "跟隨模型", "跟随模型(不指定)": "跟隨模型(不指定)", "跟随网关设置": "跟隨閘道器設定", "返回": "返回", "还没有历史对话": "還沒有歷史對話", "还没有账号。": "還沒有帳號。", "还没有选择对话模型:在输入框右下角选一个,或点右上角「助手设置」。": "還沒有選擇對話模型:在輸入框右下角選一個,或點右上角「助手設定」。", "还没有配置默认模型": "還沒有配置預設模型", "这一版网关还没有 AI 助手接口(HTTP 404),请升级网关后重试。": "這個版本的閘道還沒有 AI 助手介面(HTTP 404),請升級閘道後重試。", "这一版网关还没有 AI 助手接口(HTTP 404):后端还是旧的,重新编译 / 重启客户端后再试。{message}": "這一版閘道器還沒有 AI 助手介面(HTTP 404):後端還是舊的,重新編譯 / 重啟客戶端後再試。{message}", "这一轮来回已达 {n} 次上限,我先停下等你指示(可以换个说法,或拆成几步让我做)。": "這一輪來回已達 {n} 次上限,我先停下等你指示(可以換個說法,或拆成幾步讓我做)。", "这个查询还没有实现。": "這個查詢還沒有實現。", "这条会话没能存进历史:{message}": "這段工作階段沒能存進歷史:{message}", "这次工具调用没有保存完成结果,历史回放不会重新执行。": "這次工具呼叫沒有儲存完成結果,歷史回放不會重新執行。", "这里只改本次会话用的模型,不会改网关里保存的默认值。": "這裡只改本次會話用的模型,不會改閘道器裡儲存的預設值。", "连接网关失败({base}):{message}": "連線閘道器失敗({base}):{message}", "选择 API Key": "選擇 API Key", "选择 API Key…": "選擇 API Key…", "选择对话模型": "選擇對話模型", "配置响应不完整": "配置響應不完整", "问点什么…": "問點什麼…", "项目": "專案", "额度窗口": "額度週期", "首轮回答完成后自动总结;这会调用所选模型并消耗额度。": "首輪迴答完成後自動總結;這會呼叫所選模型並消耗額度。", "默认行为": "預設行為", " · 检查于 {time}": " · 檢查於 {time}", " 已发布(当前 {current}),更新日志如下:": " 已釋出(當前 {current}),更新日誌如下:", "Agent2API 一直在更新,是因为有人在背后持续投入。如果它帮到了你,欢迎请作者喝杯咖啡。": "Agent2API 一直在更新,是因為有人在背後持續投入。如果它幫到了你,歡迎請作者喝杯咖啡。", "GitHub Token 未填写": "GitHub Token 未填寫", "GitHub 令牌": "GitHub 權杖", "GitHub 加速前缀": "GitHub 加速字首", "GitHub 接口限流中,请在 {seconds} 秒后重试": "GitHub API 限流中,請在 {seconds} 秒後重試", "GitHub 接口限流中,请在「插件设置」的「GitHub 令牌」中填写凭证,以提高请求限额。": "GitHub API 限流中,請在「外掛設定」的「GitHub 權杖」中填寫憑證,以提高請求限額。", "GitHub 接口限流中,请在「更新设置」的「GitHub 令牌」中填写凭证,以提高请求限额。": "GitHub API 限流中,請在「更新設定」的「GitHub 權杖」中填寫憑證,以提高請求限額。", "GitHub 接口限流中,请稍后重试": "GitHub API 限流中,請稍後重試", "GitHub 源「{source}」限流,{seconds} 秒后可重试(上游未提供恢复时间)": "GitHub 來源「{source}」限流,{seconds} 秒後可重試(上游未提供恢復時間)", "GitHub 源「{source}」限流,请在 {seconds} 秒后重试": "GitHub 來源「{source}」限流,請在 {seconds} 秒後重試", "GitHub 访问方式": "GitHub 存取方式", "GitHub 访问设置已保存": "GitHub 存取設定已儲存", "QQ 群": "QQ 群", "QQ 群 / Telegram 都在这里": "QQ 群 / Telegram 都在這裡", "QQ 群 {n}": "QQ 群 {n}", "Telegram 群": "Telegram 群", "Windows 服务一键更新会核验官方更新包,再由独立升级进程停止服务、备份替换并重新启动。账号与配置保留,确认新版运行后页面自动刷新。": "Windows 服務一鍵更新會驗證官方更新套件,再由獨立升級程序停止服務、備份替換並重新啟動。帳號與設定保留,確認新版執行後頁面自動重新整理。", "Windows 服务升级权限或目录保护不符合要求。请以管理员身份重跑新版 install-service.ps1;自定义服务账号或外部托管环境请按原方式升级。": "Windows 服務升級權限或目錄保護不符合要求。請以管理員身分重新執行新版 install-service.ps1;自訂服務帳號或外部託管環境請按原方式升級。", "Windows 服务部署需要手动升级。请解压新版服务端包,以管理员身份运行 install-service.ps1;账号与配置会保留。": "Windows 服務部署需要手動升級。請解壓縮新版伺服器套件,以管理員身分執行 install-service.ps1;帳號與設定會保留。", "beta 版可能不稳定。两项同时开启时,按版本号选择最高版本,不会降级;安装到正式版或 beta 版后仍保留关注选择。": "beta 版可能不穩定。兩項同時開啟時,按版本號選擇最高版本,不會降級;安裝到正式版或 beta 版後仍保留關注選擇。", "systemd 一键更新由受限升级程序完成:下载、核验官方校验值、备份替换、重启并确认版本。网关保持普通账号运行,账号与配置不变。": "systemd 一鍵更新由受限升級程式完成:下載、驗證官方校驗值、備份替換、重新啟動並確認版本。閘道保持一般帳號執行,帳號與設定不變。", "{message};其他线路可重新检查": "{message};其他線路可重新檢查", "{ms} 毫秒": "{ms} 毫秒", "{seconds} 秒后可重试": "{seconds} 秒後可重試", "{version} 已就位,服务正在重启,页面会在恢复后自动刷新…({seconds}s)": "{version} 已就位,服務正在重啟,頁面會在恢復後自動重新整理…({seconds}s)", "{version}(预发布)": "{version}(預釋出)", "✅ GitHub 令牌已保存(加密存储,界面不再显示)": "✅ GitHub 權杖已儲存(加密儲存,介面不再顯示)", "✅ 已加入 beta 版,之后的检查会包含 beta 版": "✅ 已加入 beta 版,之後的檢查會包含 beta 版", "✅ 已清除界面保存的 GitHub 令牌(环境变量若配置过则继续生效)": "✅ 已清除介面儲存的 GitHub 權杖(環境變數若配置過則繼續生效)", "✅ 已退出 beta 版,之后的检查只看正式版": "✅ 已退出 beta 版,之後的檢查只看正式版", "✅ 数据升级完成({n} 项)": "✅ 資料升級完成({n} 項)", "✅ 更新出网已切换为 {label}": "✅ 更新出網已切換為 {label}", "✅ 更新出网已切换为直连": "✅ 更新出網已切換為直連", "✅ 自动检查更新已保存": "✅ 自動檢查更新已儲存", "一键更新": "一鍵更新", "一键更新入口不可用,请刷新页面后重试。": "一鍵更新入口無法使用,請重新整理頁面後重試。", "一键更新服务端?": "一鍵更新伺服器?", "一键更新组件不可用或权限配置不正确。请使用新版安装包执行 sudo bash install.sh --upgrade 修复。": "一鍵更新元件無法使用或權限設定不正確。請使用新版安裝套件執行 sudo bash install.sh --upgrade 修復。", "上次 GitHub 限流的等待时间已结束,可重新检查": "上次 GitHub 限流的等待時間已結束,可重新檢查", "上次结果:{state}": "上次結果:{state}", "上游未提供恢复时间,按 GitHub 建议短暂等待": "上游未提供恢復時間,按 GitHub 建議短暫等待", "下载中": "下載中", "下载失败": "下載失敗", "下载失败:{error}": "下載失敗:{error}", "下载已取消,可重新点击「下载并安装」。": "下載已取消,可重新點擊「下載並安裝」。", "下载已取消,可重新点击「下载并更新」。": "下載已取消,可重新點擊「下載並更新」。", "下载并安装": "下載並安裝", "下载并更新": "下載並更新", "下载服务端包": "下載伺服器套件", "不支持此类请求": "不支援此類請求", "与 gh-proxy.com 属于同一服务的备用线路。": "與 gh-proxy.com 屬於同一服務的備用線路。", "与网关的软件更新和插件共用设置;APK 下载由手机联网,GitHub 令牌不会发送给加速站。": "與閘道器的軟體更新和外掛共用設定;APK 下載由手機聯網,GitHub 權杖不會發送給加速站。", "与软件更新共用出网代理和 GitHub 凭证,修改任意一处都会同步生效。": "與軟體更新共用出口代理和 GitHub 憑證,修改任意一處都會同步生效。", "个人开发并开源维护,免费使用,也不会收集你的账号数据。如果它帮到了你,欢迎到项目仓库点个 Star 支持一下。": "個人開發並開源維護,免費使用,也不會收集你的帳號資料。如果它幫到了你,歡迎到專案倉庫點個 Star 支援一下。", "仅 beta 版": "僅 beta 版", "仅官方源": "僅官方源", "仅插件索引和文件下载,不支持版本查询": "僅外掛索引和檔案下載,不支援版本查詢", "仅正式版": "僅正式版", "仓库暂无发布版本。{at}": "倉庫暫無釋出版本。{at}", "代理列表读取失败": "代理列表讀取失敗", "令牌已生效,但写入磁盘失败(重启后会丢失)": "權杖已生效,但寫入磁碟失敗(重啟後會丟失)", "以上状态来自网关;APK 下载会由手机按本机网络重新选择通道。": "以上狀態來自閘道;APK 下載會由手機按本機網路重新選擇通道。", "优先使用加速源,访问失败后回退官方源;不会绕过 GitHub 限流冷却。": "優先使用加速源,存取失敗後回退官方源;不會繞過 GitHub 限流冷卻。", "优先加速源": "優先加速來源", "优先访问官方源,连接失败后尝试加速源;短期记住成功的源,定期恢复官方优先。": "優先存取官方源,連線失敗後嘗試加速源;短期記住成功的源,定期恢復官方優先。", "允许本机自动检查": "允許本機自動檢查", "先使用指定加速源,失败后尝试其他已启用的加速源,最后回退官方源。": "先使用指定加速來源,失敗後嘗試其他已啟用的加速來源,最後退回官方來源。", "关于作者": "關於作者", "关注 beta 版更新": "關注 beta 版更新", "关注正式版更新": "關注正式版更新", "出网线路与 GitHub 令牌设置": "出網線路與 GitHub 權杖設定", "出网线路已切换,但写入磁盘失败(重启后会恢复原线路)": "出網線路已切換,但寫入磁碟失敗(重啟後會恢復原線路)", "分别探测版本查询、插件索引和文件下载,选择最快返回有效内容的源;成功线路短期复用,失败自动切换。": "分別探測版本查詢、外掛索引和檔案下載,選擇最快回傳有效內容的來源;成功線路短期重用,失敗自動切換。", "分钟({min} ~ {max})": "分鐘({min} ~ {max})", "到 GitHub 发布页下载": "到 GitHub 釋出頁下載", "到点自动向 GitHub 查询新版本,查到就走「检测到更新」弹窗;关闭后「检查更新」按钮仍可手动触发": "到點自動向 GitHub 查詢新版本,查到就走「檢測到更新」彈窗;關閉後「檢查更新」按鈕仍可手動觸發", "加入 beta 版": "加入 beta 版", "加入交流群": "加入交流群", "加速源优先": "加速源優先", "单独设置": "單獨設定", "即将满员": "即將滿員", "即将满员,请优先加3群、4群": "即將滿員,請優先加3群、4群", "去更新": "去更新", "发布页上没有 {wanted} 这个文件": "釋出頁上沒有 {wanted} 這個檔案", "发布页上没有对应本机架构的服务端更新包": "釋出頁上沒有對應本機架構的服務端更新包", "发布页上的文件被更新源的访问方式过滤掉了,请检查「更新设置」里的 GitHub 访问方式": "釋出頁上的檔案被更新源的存取方式過濾掉了,請檢查「更新設定」裡的 GitHub 存取方式", "发现新版本 {latest}(当前 {current})。{at}": "發現新版本 {latest}(當前 {current})。{at}", "发现新版本 {latest}(当前 {current})。{reason}{at}": "發現新版本 {latest}(目前 {current})。{reason}{at}", "发现新版本 {latest}(当前 {current}),但该版本没有提供容器内更新包({reason});请在宿主机执行 docker compose pull && docker compose up -d 升级。{at}": "發現新版本 {latest}(當前 {current}),但該版本沒有提供容器內更新包({reason});請在宿主機執行 docker compose pull && docker compose up -d 升級。{at}", "发现新版本 {latest}(当前 {current}),但这一版没有提供本机安装包({reason});可到 GitHub 发布页手动下载。{at}": "發現新版本 {latest}(當前 {current}),但這一版沒有提供本機安裝包({reason});可到 GitHub 釋出頁手動下載。{at}", "取消下载": "取消下載", "取消失败:{error}": "取消失敗:{error}", "只访问 GitHub 官方源,仍使用所选出网代理。": "只存取 GitHub 官方源,仍使用所選出網代理。", "可安装": "可安裝", "启动失败": "啟動失敗", "启动安装程序失败:{error}": "啟動安裝程式失敗:{error}", "启用加速源 {source}": "啟用加速來源 {source}", "在 GitHub 查看完整说明": "在 GitHub 檢視完整說明", "在 QQ 里搜索群号即可加入。": "在 QQ 裡搜尋群號即可加入。", "在宿主机执行 docker compose pull && docker compose up -d 即可升级。": "在宿主機執行 docker compose pull && docker compose up -d 即可升級。", "在浏览器中打开": "在瀏覽器中開啟", "在浏览器中打开 GitHub 发布页": "在瀏覽器中開啟 GitHub 釋出頁", "在浏览器中打开项目仓库,点 Star 支持作者": "在瀏覽器中開啟專案倉庫,點 Star 支援作者", "在默认浏览器中打开 GitHub 的令牌创建页(备注已预设,无需勾选任何权限,直接点 Generate token)": "在預設瀏覽器中開啟 GitHub 的權杖建立頁(備註已預設,無需勾選任何許可權,直接點 Generate token)", "填写后检查限额 60 → 5000 次/小时(创建令牌无需勾选任何权限)": "填寫後檢查限額 60 → 5000 次/小時(建立權杖無需勾選任何許可權)", "填写支持 Raw、Release 和 GitHub API 的 HTTPS 加速站前缀,留空恢复默认。": "填寫支援 Raw、Release 和 GitHub API 的 HTTPS 加速站字首,留空恢復預設。", "复制群号 {group}": "複製群號 {group}", "安装中": "安裝中", "安装包": "安裝包", "安装包已下载完成,正在启动安装程序(需要管理员权限,会弹出 UAC 确认框)…": "安裝包已下載完成,正在啟動安裝程式(需要管理員許可權,會彈出 UAC 確認框)…", "安装包已下载完成,正在启动新的 AppImage…": "安裝包已下載完成,正在啟動新的 AppImage…", "安装包已下载完成,正在打开系统安装器…": "安裝包已下載完成,正在開啟系統安裝器…", "安装包已下载完成,正在挂载磁盘映像…": "安裝包已下載完成,正在掛載磁碟映像…", "安装包已就绪:{name}。点击「安装并重启」后会启动新的 AppImage;把它移动到你的应用目录并替换旧文件即完成升级(本程序会先退出以释放文件占用)。": "安裝包已就緒:{name}。點擊「安裝並重啟」後會啟動新的 AppImage;把它移動到你的應用目錄並替換舊檔案即完成升級(本程式會先退出以釋放檔案佔用)。", "安装包已就绪:{name}。点击「安装并重启」后需要管理员权限,会弹出 UAC 确认框。": "安裝包已就緒:{name}。點擊「安裝並重啟」後需要管理員許可權,會彈出 UAC 確認框。", "安装包已就绪:{name}。点击「打开安装包」后会交给系统安装器,按提示输入密码即可完成安装(本程序无需退出)。": "安裝包已就緒:{name}。點擊「開啟安裝包」後會交給系統安裝器,按提示輸入密碼即可完成安裝(本程式無需退出)。", "安装包已就绪:{name}。点击「打开安装包」后会挂载磁盘映像,把应用拖进「应用程序」即可完成安装。": "安裝包已就緒:{name}。點擊「開啟安裝包」後會掛載磁碟映像,把應用拖進「應用程式」即可完成安裝。", "安装包已挂载,请在弹出的窗口里把应用拖进「应用程序」完成安装。安装完成后重新打开本程序即可。": "安裝包已掛載,請在彈出的窗口裡把應用拖進「應用程式」完成安裝。安裝完成後重新開啟本程式即可。", "安装失败": "安裝失敗", "安装失败:{error}": "安裝失敗:{error}", "安装并重启": "安裝並重啟", "安装程序已启动,本程序将退出以便完成覆盖安装。安装程序需要管理员权限,会弹出 UAC 确认框,请选择「是」。": "安裝程式已啟動,本程式將退出以便完成覆蓋安裝。安裝程式需要管理員許可權,會彈出 UAC 確認框,請選擇「是」。", "官方源": "官方來源", "容器内更新:更新包从 GitHub 发布页下载,校验 sha256 后由面板替换容器内的程序与界面文件,再重启服务(容器由 restart 策略拉起,页面会自动刷新)。更新的是容器里的文件,compose 里的镜像标签不变 —— 之后执行 docker compose pull && up -d 会使用镜像里的版本。检查更新与下载的出网线路、GitHub 令牌都在「更新设置」里。": "容器內更新:更新包從 GitHub 釋出頁下載,校驗 sha256 後由面板替換容器內的程式與介面檔案,再重啟服務(容器由 restart 策略拉起,頁面會自動重新整理)。更新的是容器裡的檔案,compose 裡的映象標籤不變 —— 之後執行 docker compose pull && up -d 會使用映象裡的版本。檢查更新與下載的出網線路、GitHub 權杖都在「更新設定」裡。", "将更新至 {version}。下载和校验完成后会短暂停止服务、替换程序并自动重启;账号与配置会保留。确认后无需再次点击安装。": "將更新至 {version}。下載和驗證完成後會短暫停止服務、替換程式並自動重新啟動;帳號與設定會保留。確認後無需再次點擊安裝。", "已加密存储在本地,不显示具体值;粘贴新令牌可覆盖": "已加密儲存在本地,不顯示具體值;貼上新權杖可覆蓋", "已取消": "已取消", "已填写": "已填寫", "已填写(粘贴新令牌可覆盖)": "已填寫(貼上新權杖可覆蓋)", "已打开系统安装器,请在它弹出的窗口里完成安装。安装完成后重新打开本程序即可。": "已開啟系統安裝器,請在它彈出的窗口裡完成安裝。安裝完成後重新開啟本程式即可。", "已是最新": "已是最新", "已更新至 {version},服务已恢复。": "已更新至 {version},服務已恢復。", "已替换为 {version},正在重启服务…": "已替換為 {version},正在重啟服務…", "已配置 GITHUB_TOKEN 环境变量,界面保存的令牌优先于它": "已配置 GITHUB_TOKEN 環境變數,介面儲存的權杖優先於它", "开启后只更新到 beta 版(预发布),取版本最高的一个;beta 版可能不稳定。开启期间不会因为正式版发布而自动切回正式版 —— 想切回请关闭本开关。关闭后只更新到正式版,且不会降级到版本号更低的版本。": "開啟後只更新到 beta 版(預釋出),取版本最高的一個;beta 版可能不穩定。開啟期間不會因為正式版釋出而自動切回正式版 —— 想切回請關閉本開關。關閉後只更新到正式版,且不會降級到版本號更低的版本。", "开始更新": "開始更新", "当前 Windows 服务尚未接入一键更新。请解压新版服务端包,以管理员身份运行一次 install-service.ps1,原有账号、目录、端口和配置会保留。": "目前 Windows 服務尚未接入一鍵更新。請解壓縮新版伺服器套件,以管理員身分執行一次 install-service.ps1,原有帳號、目錄、連接埠和設定會保留。", "当前下载通道:{source}": "目前下載通道:{source}", "当前为直接运行的服务端,请停止程序后替换服务端包,再重新启动。": "目前為直接執行的伺服器,請停止程式後替換伺服器套件,再重新啟動。", "当前关注:{channels}": "目前關注:{channels}", "当前安装尚未接入一键更新。请下载新版服务端包,执行一次 sudo bash install.sh --upgrade;之后即可在面板更新。": "目前安裝尚未接入一鍵更新。請下載新版伺服器套件,執行一次 sudo bash install.sh --upgrade;之後即可在面板更新。", "当前已是最新版本({current})。{at}": "當前已是最新版本({current})。{at}", "当前版本": "當前版本", "当前系统或架构暂不支持面板自动安装,请查看发布页。": "目前系統或架構暫不支援面板自動安裝,請查看發布頁。", "当前线路不可用:{error};请重新选择代理或切回直连": "當前線路不可用:{error};請重新選擇代理或切回直連", "当前网关仍使用旧版单源设置,升级网关后可管理多个加速源。": "目前閘道仍使用舊版單一來源設定,升級閘道後可管理多個加速來源。", "当前需要手动升级": "目前需要手動升級", "当前:自动检查关闭": "目前:自動檢查關閉", "当前:自动检查开启,每 {n} 分钟": "目前:自動檢查開啟,每 {n} 分鐘", "待重启": "待重啟", "待重新检查": "待重新檢查", "微信赞赏": "微信贊賞", "微信赞赏码": "微信贊賞碼", "打开 GitHub 令牌页面": "開啟 GitHub 權杖頁面", "打开安装包": "開啟安裝包", "打开链接失败:{error}": "開啟連結失敗:{error}", "指定代理": "指定代理", "指定加速源优先": "指定加速來源優先", "按上游返回时间": "按上游回傳時間", "插件索引": "外掛索引", "插件默认跟随这里的更新通道、自动检查和间隔;可在插件设置中单独设置。": "插件預設跟隨這裡的更新通道、自動檢查和間隔;可在插件設定中單獨設定。", "支付宝": "支付寶", "支付宝收款码": "支付寶收款碼", "支持作者": "支持作者", "支持版本查询": "支援版本查詢", "收藏项目": "收藏專案", "数据升级失败:{error}(旧数据仍在原处,下次启动会自动重试)": "資料升級失敗:{error}(舊資料仍在原處,下次啟動會自動重試)", "数据升级未全部完成(已导入 {n} 项,仍有数据待导入,下次启动会自动重试)": "資料升級未全部完成(已匯入 {n} 項,仍有資料待匯入,下次啟動會自動重試)", "数据升级:没有需要导入的旧数据": "資料升級:沒有需要匯入的舊資料", "文件下载": "檔案下載", "新版本 ": "新版本 ", "无法开始更新:{error}": "無法開始更新:{error}", "无法比较": "無法比較", "无法解密": "無法解密", "无法读取更新信息": "無法讀取更新資訊", "显示的是当前网络下的响应耗时,不代表长期稳定性或完整下载速度。未探测的源会在实际更新时检查。": "顯示的是目前網路下的回應耗時,不代表長期穩定性或完整下載速度。未探測的來源會在實際更新時檢查。", "暂未确认服务恢复,请检查服务器状态后刷新页面;不会自动重复安装。": "暫未確認服務恢復,請檢查伺服器狀態後重新整理頁面;不會自動重複安裝。", "更新任务已结束,但当前运行版本与目标不一致,请检查服务日志。": "更新工作已結束,但目前執行版本與目標不一致,請檢查服務日誌。", "更新出网代理": "更新出網代理", "更新包从 GitHub Release 获取。自动模式按实际请求选择可用通道,失败后换源;镜像安装包必须匹配官方校验值,取不到时仅使用原始源。加速源、代理和令牌在「更新设置」中配置,指定代理失效不会静默直连。": "更新套件從 GitHub Release 取得。自動模式按實際請求選擇可用通道,失敗後換來源;鏡像安裝套件必須符合官方校驗值,取不到時僅使用原始來源。加速來源、代理和權杖在「更新設定」中設定,指定代理失效不會默默改為直連。", "更新包从 GitHub Release 获取,下载后交给本平台安装器。GitHub 访问方式、加速前缀、出网代理和令牌在「更新设置」中配置。默认官方优先,连接失败后尝试加速源;镜像安装包必须匹配官方校验值,取不到时仅使用原始源。指定代理失效会明确报错,不会静默改走直连。": "更新包從 GitHub Release 獲取,下載後交給本平臺安裝器。GitHub 存取方式、加速字首、出網代理和權杖在「更新設定」中配置。預設官方優先,連線失敗後嘗試加速源;映象安裝包必須匹配官方校驗值,取不到時僅使用原始源。指定代理失效會明確報錯,不會靜默改走直連。", "更新包从 GitHub 发布页下载,下载完成后可直接启动安装程序并自动重启本程序。安装包会先校验来源域名与文件完整性。检查更新与下载安装包的出网线路、GitHub 令牌都在「更新设置」里:线路默认直连(直连失败时自动借 Clash Verge 的混合端口重试一次),选定指定出口后只走该出口;填写 GitHub 令牌可把检查限额从 60 次/小时提高到 5000 次/小时。": "更新包從 GitHub 釋出頁下載,下載完成後可直接啟動安裝程式並自動重啟本程式。安裝包會先校驗來源域名與檔案完整性。檢查更新與下載安裝包的出網線路、GitHub 權杖都在「更新設定」裡:線路預設直連(直連失敗時自動借 Clash Verge 的混合連接埠重試一次),選定指定出口後只走該出口;填寫 GitHub 權杖可把檢查限額從 60 次/小時提高到 5000 次/小時。", "更新包已就绪:{name}。点「安装并重启」后,面板会校验并替换容器内的程序与界面文件,然后重启服务(页面会自动刷新)。": "更新包已就緒:{name}。點「安裝並重啟」後,面板會校驗並替換容器內的程式與介面檔案,然後重啟服務(頁面會自動重新整理)。", "更新失败": "更新失敗", "更新失败:{error}": "更新失敗:{error}", "更新完成": "更新完成", "更新已应用到容器内,重启服务后生效。{at}": "更新已應用到容器內,重啟服務後生效。{at}", "更新已应用到容器内,重启服务后生效。{at}(本次检查失败:{error})": "更新已應用到容器內,重啟服務後生效。{at}(本次檢查失敗:{error})", "更新日志": "更新日誌", "更新设置": "更新設定", "更新进行中": "更新進行中", "更新通道已保存": "更新通道已儲存", "更新通道已改变,请重新检查更新。": "更新通道已改變,請重新檢查更新。", "替换完成,正在重启服务…": "替換完成,正在重啟服務…", "最多保留 6 个 HTTPS 加速源;自定义源可关闭版本查询支持。": "最多保留 6 個 HTTPS 加速來源;自訂來源可關閉版本查詢支援。", "最新发布版本为 {latest},但当前版本号「{current}」无法解析,未做新旧判断。{at}": "最新發布版本為 {latest},但當前版本號「{current}」無法解析,未做新舊判斷。{at}", "最新版本": "最新版本", "最近采用": "最近採用", "有新版本": "有新版本", "服务正在重启,页面会在恢复后自动刷新…({seconds}s)": "服務正在重啟,頁面會在恢復後自動重新整理…({seconds}s)", "服务端压缩包": "伺服器壓縮套件", "未找到适用的更新包": "未找到適用的更新套件", "未找到适用的更新包。需要:{wanted};发布页包含的文件类型:{seen}。": "未找到適用的更新套件。需要:{wanted};發布頁包含的檔案類型:{seen}。", "未探测": "未探測", "未检查": "未檢查", "本工具由": "本工具由", "查看发布页": "查看發布頁", "校验中": "驗證中", "检查中": "檢查中", "检查中…": "檢查中…", "检查失败": "檢查失敗", "检查更新": "檢查更新", "检查更新与下载安装包使用所选线路;未选择代理时先直连,失败后尝试 Clash Verge 混合端口;指定代理不可用时不会自动改走直连。": "檢查更新與下載安裝包使用所選線路;未選擇代理時先直連,失敗後嘗試 Clash Verge 混合連接埠;指定代理無法使用時不會自動改走直連。", "检查更新与下载安装包使用所选线路;未选择代理时直连,指定代理不可用时不会自动改走直连。": "檢查更新與下載安裝包使用所選線路;未選擇代理時直連,指定代理不可用時不會自動改走直連。", "检查更新与下载安装包走哪条线路(当前:{current});选择即保存。选项来自「网络代理」页;直连失败时会自动借 Clash 混合端口重试一次,选定指定代理后只走它": "檢查更新與下載安裝包走哪條線路(當前:{current});選擇即儲存。選項來自「網路代理」頁;直連失敗時會自動借 Clash 混合連接埠重試一次,選定指定代理後只走它", "检查更新失败:{error}": "檢查更新失敗:{error}", "检查更新失败:{error}(以下版本与更新日志来自上次成功检查,检查于 {time})": "檢查更新失敗:{error}(以下版本與更新日誌來自上次成功檢查,檢查於 {time})", "检查计划": "檢查計畫", "检查间隔必须是 {min} ~ {max} 分钟": "檢查間隔必須是 {min} ~ {max} 分鐘", "检查间隔(分钟)": "檢查間隔(分鐘)", "检测到更新": "檢測到更新", "检测到自定义程序或界面路径,一键更新不会覆盖这些位置。请按原部署方式升级。": "偵測到自訂程式或介面路徑,一鍵更新不會覆蓋這些位置。請按原部署方式升級。", "正在下载 {name}:{percent}%({received} / {total} MB)": "正在下載 {name}:{percent}%({received} / {total} MB)", "正在下载 {version} 的服务端更新包…": "正在下載 {version} 的伺服器更新套件…", "正在下载安装包…(下载完成后会交给系统安装器,按提示输入密码即可完成安装)": "正在下載安裝包…(下載完成後會交給系統安裝器,按提示輸入密碼即可完成安裝)", "正在下载安装包…(下载完成后会启动新的 AppImage;把它替换掉旧文件即完成升级)": "正在下載安裝包…(下載完成後會啟動新的 AppImage;把它替換掉舊檔案即完成升級)", "正在下载安装包…(下载完成后会挂载磁盘映像,把应用拖进「应用程序」即可完成安装)": "正在下載安裝包…(下載完成後會掛載磁碟映像,把應用拖進「應用程式」即可完成安裝)", "正在下载安装包…(下载完成后启动安装程序需要管理员权限,会弹出 UAC 确认框)": "正在下載安裝包…(下載完成後啟動安裝程式需要管理員許可權,會彈出 UAC 確認框)", "正在下载服务端更新包…(下载完成后由面板完成替换,重启容器内的服务后生效)": "正在下載服務端更新包…(下載完成後由面板完成替換,重啟容器內的服務後生效)", "正在取消下载…": "正在取消下載…", "正在备份并替换服务端程序与界面,请勿关闭服务器…": "正在備份並替換伺服器程式與介面,請勿關閉伺服器…", "正在把旧数据导入 SQLite 数据库(旧文件会保留,不会删除)…": "正在把舊資料匯入 SQLite 資料庫(舊檔案會保留,不會刪除)…", "正在查询 GitHub 上的最新发布版本…": "正在查詢 GitHub 上的最新發布版本…", "正在校验并替换容器内的程序与界面文件…": "正在校驗並替換容器內的程式與介面檔案…", "正在独立核验官方更新包,校验通过前不会修改现有程序…": "正在獨立驗證官方更新套件,驗證通過前不會修改現有程式…", "正在选择下载通道…": "正在選擇下載通道…", "正在重启服务并确认新版本,页面恢复后会自动刷新…": "正在重新啟動服務並確認新版本,頁面恢復後會自動重新整理…", "正式版与 beta 版": "正式版與 beta 版", "没有可下载的安装包": "沒有可下載的安裝包", "没有可下载的安装包:{reason}": "沒有可下載的安裝包:{reason}", "没有启用的加速源,将只使用官方源。": "沒有啟用的加速來源,將只使用官方來源。", "沿用已记录的恢复时间": "沿用已記錄的恢復時間", "点击「检查更新」后,这里会显示最新版本的更新说明。": "點擊「檢查更新」後,這裡會顯示最新版本的更新說明。", "点击「检查更新」查询 GitHub 上的最新发布版本。": "點擊「檢查更新」查詢 GitHub 上的最新發布版本。", "点击「检查更新」查询最新发布版本。": "點擊「檢查更新」查詢最新發布版本。", "点击在浏览器中打开": "點擊在瀏覽器中開啟", "点击复制群号": "點擊複製群號", "版本 {version} · 按 GitHub 访问设置下载安装包": "版本 {version} · 按 GitHub 存取設定下載安裝包", "版本查询": "版本查詢", "版本查询、插件索引、文件下载": "版本查詢、外掛索引、檔案下載", "状态来自最近一次实际请求,并非实时测速。过期后标为待重新检查;限流只暂停对应线路,其他线路仍可使用。": "狀態來自最近一次實際請求,並非即時測速。過期後標為待重新檢查;限流只暫停對應線路,其他線路仍可使用。", "环境变量": "環境變數", "立即重启": "立即重啟", "等待恢复": "等待恢復", "管理员已关闭面板一键更新,请使用手动升级方式。": "管理員已關閉面板一鍵更新,請使用手動升級方式。", "粘贴 GitHub 令牌(ghp_… / github_pat_…)": "貼上 GitHub 權杖(ghp_… / github_pat_…)", "网关已关闭自动检查,此处只做手动检查": "閘道已關閉自動檢查,此處只做手動檢查", "群号": "群號", "群号:{group}": "群號:{group}", "自动检查更新": "自動檢查更新", "自动选择最快可用源": "自動選擇最快可用來源", "自动(官方优先)": "自動(官方優先)", "自定义加速前缀": "自訂加速前綴", "至少需要关注正式版或 beta 版中的一个通道": "至少需要關注正式版或 beta 版中的一個通道", "补充内置备用源": "補充內建備用來源", "记录于 {time}": "記錄於 {time}", "请先粘贴 GitHub 令牌": "請先貼上 GitHub 權杖", "请检查服务日志": "請檢查服務日誌", "读取下载进度失败:{error}": "讀取下載進度失敗:{error}", "读取中": "讀取中", "赞赏完全自愿,不解锁任何功能,也不影响正常使用。": "贊賞完全自願,不解鎖任何功能,也不影響正常使用。", "赞赏方式": "贊賞方式", "跟随软件": "跟隨軟體", "跳过此次更新": "跳過此次更新", "软件更新": "軟體更新", "软件更新与插件共用此设置;GitHub 令牌仅发送给官方 API。镜像安装包需要官方校验值,镜像插件包需要可信签名。": "軟體更新與外掛共用此設定;GitHub 權杖僅傳送給官方 API。鏡像安裝套件需要官方校驗值,鏡像外掛套件需要可信簽章。", "软件版本检查设置不可用": "軟體版本檢查設定無法使用。", "返回内容异常": "回傳內容異常", "这一版只有 {seen},没有本机需要的 {wanted}": "這一版只有 {seen},沒有本機需要的 {wanted}", "这一版没有为当前平台提供安装包": "這一版沒有為當前平臺提供安裝包", "这一版没有发布本机需要的安装包({wanted})": "這一版沒有釋出本機需要的安裝包({wanted})", "这一版没有提供容器内更新包": "這一版沒有提供容器內更新包", "这一版没有提供容器内更新包:{reason}": "這一版沒有提供容器內更新包:{reason}", "这一版没有提供本机安装包": "這一版沒有提供本機安裝包", "这一版还没有上传任何文件(构建可能失败,或仍在打包上传)": "這一版還沒有上傳任何檔案(構建可能失敗,或仍在打包上傳)", "这个版本没有填写发布说明。": "這個版本沒有填寫釋出說明。", "连接超时": "連線逾時", "通道已切换,但写入磁盘失败(重启后会回到原设置)": "通道已切換,但寫入磁碟失敗(重啟後會回到原設定)", "遇到问题或有使用心得,欢迎到群里交流。": "遇到問題或有使用心得,歡迎到群裡交流。", "重启中": "重啟中", "重新粘贴保存一次即可自愈": "重新貼上儲存一次即可自愈", "重试下载": "重試下載", "链接地址不受支持": "連結地址不受支援", "限流冷却中": "限流冷卻中", "面板自动安装": "面板自動安裝", "预发布": "預釋出", "默认开启;即使当前使用 beta 版,也可收到版本号更高的正式版更新。": "預設開啟;即使目前使用 beta 版,也可收到版本號更高的正式版更新。", "默认跟随软件的正式版和 beta 关注选择;单独设置只影响插件。始终按版本号选择更新,不会降级。": "預設跟隨軟體的正式版和 beta 關注選擇;單獨設定只影響插件。始終按版本號選擇更新,不會降級。", "默认跟随软件的自动检查和间隔。关闭自动检查也会暂停插件自动更新和自动下载;手动检查与安装不受影响。": "預設跟隨軟體的自動檢查和間隔。關閉自動檢查也會暫停插件自動更新和自動下載;手動檢查與安裝不受影響。", "(检查于 {time})": "(檢查於 {time})", "API Key 列表": "API Key 列表", "Key 已停用": "Key 已停用", "Key 已删除": "Key 已刪除", "Key 已启用": "Key 已啟用", "Key 至少需要 8 个字符": "Key 至少需要 8 個字元", "✅ Key 已创建,记得复制给客户端": "✅ Key 已建立,記得複製給客戶端", "✅ 可用范围已保存": "✅ 可用範圍已儲存", "不限制": "不限制", "不限制提供商与模型": "不限制提供商與模型", "与": "與", "例如 Cursor / 公司电脑": "例如 Cursor / 公司電腦", "保存失败:{reason}": "儲存失敗:{reason}", "保存范围": "儲存範圍", "创建": "建立", "创建于 {time}": "創建於 {time}", "创建时间": "建立時間", "删除网关 Key": "刪除閘道器 Key", "助手图片工具": "助手圖片工具", "助手标题总结": "助手標題總結", "可用提供商": "可用提供商", "可用提供商:{names}": "可用提供商:{names}", "可用模型": "可用模型", "可用模型:{names}": "可用模型:{names}", "可用范围": "可用範圍", "可用范围 · {name}": "可用範圍 · {name}", "启用「{name}」": "啟用「{name}」", "复制 Key": "複製 Key", "客户端请求带上 ": "客戶端請求帶上 ", "客户端请求需带 ": "客戶端請求需帶 ", "已删除": "已刪除", "已启用鉴权 · {n} 把 Key 生效": "已啟用鑑權 · {n} 把 Key 生效", "当前不限制:这把 Key 可以用全部提供商与全部对外模型": "當前不限制:這把 Key 可以用全部提供商與全部對外模型", "所选 API Key 已不可用": "所選 API Key 已不可用", "所选 API Key 已不可用,请重新选择": "所選 API Key 已不可用,請重新選擇", "提供商:{names}": "提供商:{names}", "搜索模型…": "搜尋模型…", "操作失败:{reason}": "操作失敗:{reason}", "新建 API Key": "新建 API Key", "新建 Key 与设置可用范围(提供商 / 模型白名单)在桌面端完成。": "新建 Key 與設定可用範圍(提供商 / 模型白名單)在桌面版完成。", "日活保活": "日活保活", "显示": "顯示", "未启用鉴权": "未啟用鑑權", "未命名": "未命名", "未提供客户端标识": "未提供客戶端標識", "未知客户端": "未知客戶端", "模型调用使用所选 Key 的权限,日志记录 Key 名称,不保存密钥值。": "模型呼叫使用所選 Key 的權限,日誌記錄 Key 名稱,不儲存密鑰值。", "模型:{names}": "模型:{names}", "正在读取 API Key…": "正在讀取 API Key…", "没有匹配的选项": "沒有匹配的選項", "没有可用的 API Key,请先在「网关 Key」页创建并启用": "沒有可用的 API Key,請先在「網關 Key」頁建立並啟用", "留空 = 不限制": "留空 = 不限制", "留空自动生成;手填至少 8 个字符": "留空自動生成;手填至少 8 個字元", "留空表示不限制;同时设置时请求需同时满足两个条件(模型在白名单内且路由到允许的提供商)。 「可用模型」的候选跟着上面勾选的提供商走:没勾提供商时它是空的(还没有约束范围), 勾了几家就列出这几家能收的全部对外名。": "留空表示不限制;同時設定時請求需同時滿足兩個條件(模型在白名單內且路由到允許的提供商)。 「可用模型」的候選跟著上面勾選的提供商走:沒勾提供商時它是空的(還沒有約束範圍), 勾了幾家就列出這幾家能收的全部對外名。", "确定删除 Key「{name}」?使用它的客户端会立刻无法访问。": "確定刪除 Key「{name}」?使用它的客戶端會立刻無法存取。", "确定删除「{name}」?用这把 Key 的客户端会立即失效。": "確定刪除「{name}」?用這把 Key 的客戶端會立即失效。", "网关 Key 表": "閘道器 Key 表", "自动记住本次选择,下次打开继续使用;Key 被停用或删除后需重新选择。": "自動記住本次選擇,下次開啟繼續使用;Key 被停用或刪除後需重新選擇。", "请先在上面选择可用提供商": "請先在上面選擇可用提供商", "读取 Key 列表失败:{reason}": "讀取 Key 列表失敗:{reason}", "还没有 Key。去桌面端「网关 Key」页新建一把。": "還沒有 Key。去桌面版「閘道器 Key」頁新建一把。", "还没有 Key,当前不鉴权": "還沒有 Key,當前不鑑權", "这几家当前没有可用模型(账号未登录或清单为空)": "這幾家當前沒有可用模型(帳號未登入或清單為空)", "这把 Key 不限制提供商与模型(可用全部上游与全部对外模型)": "這把 Key 不限制提供商與模型(可用全部上游與全部對外模型)", "限制:{text}": "限制:{text}", "隐藏": "隱藏", "(模型候选需先选提供商;不选则沿用当前这几项,保存后仍按模型白名单生效)": "(模型候選需先選提供商;不選則沿用當前這幾項,儲存後仍按模型白名單生效)", "(行内「可用范围」):留空 = 不限制,两个都设时 按交集生效 —— 被限制的模型对这把 Key 表现为「不存在」(拉 /v1/models 也看不到它), 提供它的家不在可用列表里时请求同样被拒。": "(行內「可用範圍」):留空 = 不限制,兩個都設時 按交集生效 —— 被限制的模型對這把 Key 表現為「不存在」(拉 /v1/models 也看不到它), 提供它的家不在可用列表裡時請求同樣被拒。", "+ 新建 Key": "+ 新建 Key", "; 修改后立即生效,本程序自身会自动使用第一把启用的 Key。每把 Key 可单独限制": "; 修改後立即生效,本程式自身會自動使用第一把啟用的 Key。每把 Key 可單獨限制", ";一把启用的 Key 都没有时不鉴权。": ";一把啟用的 Key 都沒有時不鑑權。", ";修改后立即生效。模型测试、助手和日活保活必须选择 Key,受限 Key 不能访问管理接口。每把 Key 可单独限制": ";修改後立即生效。模型測試、助手和日活保活必須選擇 Key,受限 Key 不能存取管理 API。每把 Key 可單獨限制", ";当前必须带 Key。": ";目前必須帶 Key。", " AI 账号专用静态住宅 IP:Scamalytics 低欺诈评分,不限流量,首单 75 折(AGENT2API25)": " AI 帳號專用靜態住宅 IP:Scamalytics 低欺詐評分,不限流量,首單 75 折(AGENT2API25)", " 提供 AI 账号专用的原生静态住宅 IP(Static Residential ISP):IP 来自真实家庭宽带运营商,Scamalytics 低欺诈评分,每个 IP 独享,不限流量,$3.90 起。": " 提供 AI 帳號專用的原生靜態住宅 IP(Static Residential ISP):IP 來自真實家庭寬頻運營商,Scamalytics 低欺詐評分,每個 IP 獨享,不限流量,$3.90 起。", " 那一类由「同步 Clash Verge」 镜像进来(进入本页时会自动同步一次):名称、端口、启用都跟随 Clash, 在 Clash 里改或删,这里跟着变 —— 所以它们只读,改请到 Clash Verge 里改。": " 那一類由「同步 Clash Verge」 映象進來(進入本頁時會自動同步一次):名稱、連接埠、啟用都跟隨 Clash, 在 Clash 裡改或刪,這裡跟著變 —— 所以它們只讀,改請到 Clash Verge 裡改。", "Clash Verge": "Clash Verge", "Clash 同步失败:{msg}": "Clash 同步失敗:{msg}", "Clash 镜像": "Clash 映象", "SOCKS5 用户名和密码不能超过 255 字节": "SOCKS5 使用者名稱和密碼不能超過 255 位元組", "YAML 文件": "YAML 檔案", "{names} 等 {n} 条": "{names} 等 {n} 條", "{n} 个": "{n} 個", "{n} 个出口": "{n} 個出口", "{n} 个账号在用": "{n} 個帳號在用", "{n} 个账号引用": "{n} 個帳號引用", "{n} 条订阅": "{n} 條訂閱", "{percent}%({received} / {total} MB)": "{percent}%({received} / {total} MB)", "✅ {ip}": "✅ {ip}", "✅ 「{name}」出口可用{ip}{took}": "✅ 「{name}」出口可用{ip}{took}", "✅ 内核下载完成,正在启动…": "✅ 核心下載完成,正在啟動…", "✅ 内核已手动导入到 {dir}": "✅ 核心已手動匯入到 {dir}", "✅ 已同步 Clash Verge 出口({n} 项变更)": "✅ 已同步 Clash Verge 出口({n} 項變更)", "✅ 连接成功": "✅ 連線成功", "✅ 连通性测试设置已保存": "✅ 連通性測試設定已儲存", "❌ 「{name}」{error}": "❌ 「{name}」{error}", "❌ 连接失败": "❌ 連線失敗", "「测试」与「批量测试」访问的目标;留空用默认(打 WorkBuddy 上游)。判据是能否拿到 HTTP 响应,不用考虑该网址返回什么内容。": "「測試」與「批次測試」存取的目標;留空用預設(打 WorkBuddy 上游)。判準是能否取得 HTTP 回應,不用考慮該網址回傳什麼內容。", "上传本地文件": "上傳本機檔案", "上次下载失败:{reason}": "上次下載失敗:{reason}", "上次下载已停止,未下载完的临时文件已删除": "上次下載已停止,未下載完的臨時檔案已刪除", "上次同步": "上次同步", "上次测试": "上次測試", "下载": "下載", "下载中…": "下載中…", "下载内核": "下載核心", "下载完成后可启动": "下載完成後可啟動", "下载已经完成,停止没赶上(内核已安装)": "下載已經完成,停止沒趕上(核心已安裝)", "下载线路": "下載線路", "下载线路 / 存放目录没能写进配置(本次下载已按新设置走,重启后会恢复原值)": "下載線路 / 存放目錄沒能寫進配置(本次下載已按新設定走,重啟後會恢復原值)", "不再提供": "不再提供", "不再提醒": "不再提醒", "为降低维护成本、资源占用及合规风险,Agent2API 已停止提供代理订阅与内置代理内核相关功能。": "為降低維護成本、資源佔用及合規風險,Agent2API 已停止提供代理訂閱與內建代理核心相關功能。", "之前使用订阅节点?": "之前使用訂閱節點?", "也可以把二维码截图直接粘贴到弹窗里(Ctrl+V)": "也可以把二維碼截圖直接貼上到彈窗裡(Ctrl+V)", "二维码里没有订阅链接": "二維碼裡沒有訂閱連結", "从图片识别二维码": "從圖片識別二維碼", "代理主机只能填写域名或 IP 地址,不能包含协议、端口或路径": "代理主機只能填寫網域名稱或 IP 位址,不能包含協定、連接埠或路徑", "代理主机地址无效": "代理主機位址無效", "代理修改已保存": "代理修改已儲存", "代理内核": "代理核心", "代理内核未安装(下载内核后,被账号或服务线路引用的节点会自动开监听端口)": "代理核心未安裝(下載核心後,被帳號或服務線路引用的節點會自動開監聽埠)", "代理内核未安装(在「订阅管理」里下载内核后,被账号引用的节点会自动开监听端口)": "代理核心未安裝(在「訂閱管理」裡下載核心後,被帳號引用的節點會自動開監聽埠)", "代理列表": "代理列表", "代理列表加载失败:{reason}": "代理列表載入失敗:{reason}", "代理列表响应异常": "代理列表響應異常", "代理协议只支持 HTTP 或 SOCKS5": "代理協定只支援 HTTP 或 SOCKS5", "代理名称": "代理名稱", "代理名称不能超过 60 个字符": "代理名稱不能超過 60 個字元", "代理已添加": "代理已新增", "代理格式无效,请按示例填写": "代理格式無效,請依範例填寫", "代理池": "代理池", "代理池表": "代理池表", "代理订阅功能已下线": "代理訂閱功能已下線", "代理设置": "代理設定", "代理设置响应异常": "代理設定回應異常", "代理账号和密码不能超过 200 个字符": "代理帳號和密碼不能超過 200 個字元", "代理账号或密码的 URL 编码无效": "代理帳號或密碼的 URL 編碼無效", "以下行未能识别,已留在输入框中;修正后可再次解析。": "以下行未能辨識,已留在輸入框中;修正後可再次解析。", "使用情况": "使用情況", "例如:我的机场": "例如:我的機場", "例如:香港 HTTP 出口": "例如:香港 HTTP 出口", "保存代理": "儲存代理", "保存已有的代理地址,供账号与服务线路按需使用。": "儲存已有的代理地址,供帳號與服務線路按需使用。", "保持原文件": "保持原檔案", "停止下载": "停止下載", "停止下载失败:{reason}": "停止下載失敗:{reason}", "停止请求已发出,但下载还没收手,稍后再看一次进度": "停止請求已發出,但下載還沒收手,稍後再看一次進度", "先把下载的内核放到网关机器的目录,再填写文件或目录的绝对路径。目录内会查找官方包或 mihomo 二进制;远程面板不能读取浏览器电脑的路径。": "先將下載的核心放到閘道機器的目錄,再填寫檔案或目錄的絕對路徑。目錄內會尋找官方壓縮檔或 mihomo 二進位檔;遠端面板不能讀取瀏覽器電腦上的路徑。", "先经过系统代理,再连接到此代理": "先經過系統代理,再連線到此代理", "全选当前筛选出的出口": "全選當前篩選出的出口", "全选所有代理": "全選所有代理", "全选({n} 个)": "全選({n} 個)", "全部协议": "全部協議", "全部提供方": "全部提供方", "全部订阅": "全部訂閱", "关掉这个窗口不会中断下载(它在后台继续跑)—— 要停下就点下面的「停止下载」,未下载完的临时文件会被删除。": "關掉這個視窗不會中斷下載(它在後臺繼續跑)—— 要停下就點下面的「停止下載」,未下載完的臨時檔案會被刪除。", "关闭代理后,引用它的账号回退直连。连通性以最近一次检测结果为准。": "關閉代理後,引用它的帳號回退直連。連通性以最近一次檢測結果為準。", "关闭内核": "關閉核心", "关闭内核失败:{reason}": "關閉核心失敗:{reason}", "其中 {n} 条正被账号使用 —— 删除后那些账号会回退直连。": "其中 {n} 條正被帳號使用 —— 刪除後那些帳號會回退直連。", "其中 {n} 条正被账号使用 —— 删除后需重新设置相关账号的代理,不会自动直连。": "其中 {n} 條正被帳號使用 —— 刪除後需重新設定相關帳號的代理,不會自動直接連線。", "其中 {n} 条是同步来的只读条目(Clash / 订阅):可参与批量测试,删除会跳过": "其中 {n} 條是同步來的只讀條目(Clash / 訂閱):可參與批次測試,刪除會跳過", "其中 {n} 条来自 Clash 同步:可参与批量测试,删除会跳过": "其中 {n} 條來自 Clash 同步:可參與批次測試,刪除會跳過", "内核 {version}": "核心 {version}", "内核 {version}({asset})": "核心 {version}({asset})", "内核下载": "核心下載", "内核下载失败:{reason}": "核心下載失敗:{reason}", "内核二进制 / 配置 / 端口映射都会放在这里,默认 {dir};目录不存在会在下载开始时自动创建。": "核心二進位制 / 配置 / 連接埠對映都會放在這裡,預設 {dir};目錄不存在會在下載開始時自動建立。", "内核启动失败:{reason}": "核心啟動失敗:{reason}", "内核导入仍在后台执行,请刷新状态查看结果": "核心匯入仍在背景執行,請重新整理狀態查看結果", "内核导入任务排队中…": "核心匯入工作排隊中…", "内核导入失败": "核心匯入失敗", "内核导入状态已变化,请刷新后确认": "核心匯入狀態已變更,請重新整理後確認", "内核已停止": "核心已停止", "内核已停止,点「启动内核」拉起": "核心已停止,點「啟動核心」拉起", "内核已关闭(订阅与端口注册表保留,「启动内核」后原位恢复)": "核心已關閉(訂閱與連接埠登錄檔保留,「啟動核心」後原位恢復)", "内核已导入,但启动失败:{reason}": "核心已匯入,但啟動失敗:{reason}", "内核已导入,但存放目录未能保存,重启网关后会恢复原位置": "核心已匯入,但存放目錄未能儲存,重新啟動閘道後會恢復原位置", "内核已手动关闭": "核心已手動關閉", "内核已手动关闭(点「启动内核」拉起)": "核心已手動關閉(點「啟動核心」拉起)", "内核文件必须非空且不超过 {max} MiB": "核心檔案不得為空,且不能超過 {max} MiB", "内核未安装": "核心未安裝", "内核正在启动…": "核心正在啟動…", "内核正在执行操作,请稍后重试": "核心正在執行操作,請稍後重試", "内核没有在超时内停下来": "核心沒有在超時內停下來", "内核目录没能删掉(可能仍被进程占用),稍后重试一次": "核心目錄沒能刪掉(可能仍被程序佔用),稍後重試一次", "内核运行中": "核心執行中", "出口 IP {ip}": "出口 IP {ip}", "出口可用": "出口可用", "出口测试网址": "出口測試網址", "删除代理": "刪除代理", "删除内核": "刪除核心", "删除内核失败:{reason}": "刪除核心失敗:{reason}", "删除订阅": "刪除訂閱", "刷新中…": "重新整理中…", "刷新失败:{reason}": "重新整理失敗:{reason}", "功能调整通知": "功能調整通知", "勾选「{name}」": "勾選「{name}」", "单个添加": "單筆新增", "去获取": "去獲取", "另有 {n} 条是同步来的只读条目(Clash / 订阅),将跳过。": "另有 {n} 條是同步來的只讀條目(Clash / 訂閱),將跳過。", "另有 {n} 条来自 Clash Verge 同步,将跳过(请到 Clash Verge 里删)。": "另有 {n} 條來自 Clash Verge 同步,將跳過(請到 Clash Verge 裡刪)。", "只读:在 Clash Verge 里改": "只讀:在 Clash Verge 裡改", "只读:在「订阅管理」里改": "只讀:在「訂閱管理」裡改", "同步 Clash Verge": "同步 Clash Verge", "同步 Clash Verge 出口": "同步 Clash Verge 出口", "同步中…": "同步中…", "同步失败:{reason}": "同步失敗:{reason}", "名字与端口在 Clash Verge 里改;启用可在本页关闭": "名字與連接埠在 Clash Verge 裡改;啟用可在本頁關閉", "名字与端口跟随订阅与内核;启用可在本页关闭": "名字與連接埠跟隨訂閱與核心;啟用可在本頁關閉", "后台继续": "後臺繼續", "启动内核": "啟動核心", "启用订阅「{name}」": "啟用訂閱「{name}」", "启用这条代理": "啟用這條代理", "启用这条订阅": "啟用這條訂閱", "启用(禁用后,使用此代理的账号请求将失败;仍可测试)": "啟用(停用後,使用此代理的帳號請求將失敗;仍可測試)", "启用(禁用的条目不会被账号使用,被引用时账号回退直连;仍可测试)": "啟用(停用的條目不會被帳號使用,被引用時帳號回退直連;仍可測試)", "启用(禁用的订阅不参与内核同步,它的节点会从代理池移除)": "啟用(停用的訂閱不參與核心同步,它的節點會從代理池移除)", "图片读取失败": "圖片讀取失敗", "地址": "地址", "地址不完整": "位址不完整", "地址由网关所在设备访问;本机代理需运行在该设备上。": "地址由閘道器所在裝置存取;本機代理需執行在該裝置上。", "复制下载链接": "複製下載連結", "复制订阅链接": "複製訂閱連結", "失败 {n} 个({reason})": "失敗 {n} 個({reason})", "存放位置": "存放位置", "存放位置 {dir}": "存放位置 {dir}", "存放位置要填绝对路径,例如 D:\\proxy-kernel": "存放位置要填絕對路徑,例如 D:\\proxy-kernel", "家庭宽带": "家庭寬頻", "导入内核": "匯入核心", "导入并替换": "匯入並替換", "导入来源": "匯入來源", "将替换现有代理内核,运行中的连接会短暂中断。订阅、账号引用与端口映射会保留。是否继续?": "將替換現有代理核心,執行中的連線會短暫中斷。訂閱、帳號參照與連接埠對應會保留。是否繼續?", "展开其余 {n} 个 ▾": "展開其餘 {n} 個 ▾", "已下载?手动导入": "已下載?手動匯入", "已保存。重启内核后,新分配的节点端口才会按新范围来。": "已儲存。重啟核心後,新分配的節點連接埠才會按新範圍來。", "已保存「{name}」": "已儲存「{name}」", "已停止下载内核(未下载完的临时文件已删除)": "已停止下載核心(未下載完的臨時檔案已刪除)", "已删除 {n} 个代理": "已刪除 {n} 個代理", "已删除「{name}」": "已刪除「{name}」", "已删除内核(订阅与账号引用保留,重新下载后会重新分配端口)": "已刪除核心(訂閱與帳號引用保留,重新下載後會重新分配連接埠)", "已删除内核(订阅与账号引用保留;有文件仍被占用,将在下次启动时清理)": "已刪除核心(訂閱與帳號參照保留;有檔案仍被占用,將在下次啟動時清理)", "已刷新「{name}」,正在同步节点…": "已重新整理「{name}」,正在同步節點…", "已同步 {n} 项变更": "已同步 {n} 項變更", "已启用 {n} 个": "已啟用 {n} 個", "已启用「{name}」": "已啟用「{name}」", "已启用「{name}」,正在补建监听端口(内核重建中)": "已啟用「{name}」,正在補建監聽連接埠(核心重建中)", "已在本页禁用(打开开关即恢复)": "已在本頁停用(開啟開關即恢復)", "已新增「{name}」": "已新增「{name}」", "已新增订阅「{name}」,内核正在同步节点…": "已新增訂閱「{name}」,核心正在同步節點…", "已是最新,没有需要同步的变更": "已是最新,沒有需要同步的變更", "已有手动配置不受此次调整影响。你仍可添加 HTTP / SOCKS5 地址,并使用连通性测试。": "已有手動配置不受此次調整影響。你仍可新增 HTTP / SOCKS5 地址,並使用連通性測試。", "已有手动配置和 Clash Verge 端点引用不受影响。仍可添加 HTTP / SOCKS5 地址、同步 Clash Verge 端点并测试连通性;Clash Verge 由你自行安装和运行。": "既有手動設定和 Clash Verge 端點參照不受影響。仍可新增 HTTP / SOCKS5 位址、同步 Clash Verge 端點並測試連線;Clash Verge 由你自行安裝和執行。", "已有账号引用它,但内核还没把监听端口补建出来 —— 稍等片刻,或重新启用这条节点": "已有帳號引用它,但核心還沒把監聽埠補建出來 —— 稍等片刻,或重新啟用這條節點", "已有账号或服务线路引用它,监听端口尚未就绪;请稍等,或检查内核状态": "已有帳號或服務線路引用它,監聽埠尚未就緒;請稍等,或檢查核心狀態", "已禁用": "已停用", "已禁用「{name}」": "已停用「{name}」", "已禁用「{name}」,监听端口正在关闭(内核重建中)": "已停用「{name}」,監聽連接埠正在關閉(核心重建中)", "已禁用(未开监听端口)": "已停用(未開監聽連接埠)", "已移除的订阅": "已移除的訂閱", "已识别 {n} 条 · 已勾选 {selected} 条": "已辨識 {n} 條 · 已勾選 {selected} 條", "已识别 {n} 条代理,跳过 {duplicates} 条重复地址": "已辨識 {n} 條代理,略過 {duplicates} 條重複位址", "已识别订阅链接": "已識別訂閱連結", "已选择「{name}」,保存后导入": "已選擇「{name}」,儲存後匯入", "已配置认证": "已設定驗證", "当前客户端不支持手动导入内核,请更新或刷新页面": "目前用戶端不支援手動匯入核心,請更新或重新整理頁面", "当前没有正在进行的下载": "當前沒有正在進行的下載", "当前环境不支持代理池(桥接方法缺失)": "當前環境不支援代理池(橋接方法缺失)", "当前环境不支持代理测试(桥接方法缺失)": "當前環境不支援代理測試(橋接方法缺失)", "当前环境不支持代理设置(桥接方法缺失)": "目前環境不支援代理設定(橋接方法缺失)", "当前环境不支持同步(桥接方法缺失)": "當前環境不支援同步(橋接方法缺失)", "当前环境不支持启停(桥接方法缺失)": "當前環境不支援啟停(橋接方法缺失)", "当前环境不支持订阅(桥接方法缺失)": "當前環境不支援訂閱(橋接方法缺失)", "当前环境不支持选择文件夹,直接填写绝对路径即可": "當前環境不支援選擇資料夾,直接填寫絕對路徑即可", "当前线路不可用:{error};重新选一条或切回直连": "當前線路不可用:{error};重新選一條或切回直連", "我知道了": "我知道了", "所属订阅已删除,这条节点不会再分配端口 —— 可以删除它": "所屬訂閱已刪除,這條節點不會再分配連接埠 —— 可以刪除它", "手动下载官方内核": "手動下載官方核心", "手动代理与 Clash Verge 同步仍然保留": "手動代理與 Clash Verge 同步仍然保留", "手动代理仍然保留": "手動代理仍然保留", "手动填写的地址与端口": "手動填寫的地址與連接埠", "手动导入内核": "手動匯入核心", "打开文件夹选择框失败:{reason}": "開啟資料夾選擇框失敗:{reason}", "批量删除": "批次刪除", "批量删除代理": "批次刪除代理", "批量测试": "批次測試", "批量测试完成:{ok} 个可用、{failed} 个失败(共 {total} 个)": "批次測試完成:{ok} 個可用、{failed} 個失敗(共 {total} 個)", "批量测试完成:{ok} 个可用(共 {total} 个)": "批次測試完成:{ok} 個可用(共 {total} 個)", "批量测试({n})": "批次測試({n})", "批量添加": "批次新增", "批量添加响应异常,请刷新代理列表确认后再试": "批次新增回應異常,請重新整理代理清單確認後再試", "批量添加完成:新增 {added} 条,重复 {duplicates} 条,失败 {failed} 条": "批次新增完成:新增 {added} 條,重複 {duplicates} 條,失敗 {failed} 條", "批量添加({n})": "批次新增({n})", "按协议筛选": "按協議篩選", "按提供方筛选": "按提供方篩選", "按来源筛选": "按來源篩選", "按需下载(约 20-40MB)": "按需下載(約 20-40MB)", "按需下载(约 20-40MB),只在启用订阅功能时需要": "按需下載(約 20-40MB),只在啟用訂閱功能時需要", "控制端口 {port} · {n} 个节点监听器": "控制連接埠 {port} · {n} 個節點監聽器", "搜索代理": "搜尋代理", "搜索名称 / 地址 / 端口": "搜尋名稱 / 地址 / 連接埠", "搜索节点": "搜尋節點", "支持官方压缩包和解压后的内核二进制;只接受当前版本,SHA-256 校验不通过时不会替换现有内核。": "支援官方壓縮檔和解壓後的核心二進位檔;只接受目前版本,SHA-256 驗證失敗時不會替換現有核心。", "支持手动地址与 Clash Verge 端点同步,不接管代理服务的安装与运行。": "支援手動位址與 Clash Verge 端點同步,不接管代理服務的安裝與執行。", "文件或目录路径": "檔案或目錄路徑", "文件读取失败": "檔案讀取失敗", "新增代理": "新增代理", "新增出口、编辑地址与订阅管理在桌面端完成;手机端做启停与连通性测试。": "新增出口、編輯地址與訂閱管理在桌面版完成;手機端做啟停與連通性測試。", "新增方式": "新增方式", "新增订阅": "新增訂閱", "新解析的代理默认使用非直连": "新解析的代理預設使用非直連", "显示 {n} / 共 {total} 个出口": "顯示 {n} / 共 {total} 個出口", "暂未使用": "暫未使用", "更新中…": "更新中…", "更新出网线路已保存,正在准备监听端口": "更新出網線路已儲存,正在準備監聽埠", "替换代理内核": "替換代理核心", "最近检测": "最近檢測", "有 {n} 个账号正在使用它({names})—— 删除后这些账号会回退直连。": "有 {n} 個帳號正在使用它({names})—— 刪除後這些帳號會回退直連。", "有 {n} 个账号正在使用它({names})—— 删除后需重新设置这些账号的代理,不会自动直连。": "有 {n} 個帳號正在使用它({names})—— 刪除後需重新設定這些帳號的代理,不會自動直接連線。", "有 {n} 个账号正在使用它,删除后这些账号会回退直连。": "有 {n} 個帳號正在使用它,刪除後這些帳號會回退直連。", "有 {n} 个账号正在使用它,删除后需重新设置这些账号的代理,不会自动直连。": "有 {n} 個帳號正在使用它,刪除後需重新設定這些帳號的代理,不會自動直接連線。", "未同步": "未同步", "未检测": "未檢測", "未检测到 Clash Verge:{reason}": "未檢測到 Clash Verge:{reason}", "未测试": "未測試", "未知错误": "未知錯誤", "未选择文件": "未選擇檔案", "本地 YAML 文件": "本地 YAML 檔案", "本地文件": "本地檔案", "本地文件不会自动更新:要更新节点,重新选择文件后保存;不重选则内容保持不变。": "本地檔案不會自動更新:要更新節點,重新選擇檔案後儲存;不重選則內容保持不變。", "本地文件订阅无需更新(要换内容请编辑后重新选择文件)": "本地檔案訂閱無需更新(要換內容請編輯後重新選擇檔案)", "本地文件订阅的内容在导入时固定:节点会由内核起成本地监听器并镜像进代理池,节点数稍等几秒由轮询刷新。": "本地檔案訂閱的內容在匯入時固定:節點會由核心起成本地監聽器並映象進代理池,節點數稍等幾秒由輪詢重新整理。", "本机没有读到 Clash Verge 配置": "本機沒有讀到 Clash Verge 配置", "本页可编辑、可删除": "本頁可編輯、可刪除", "来自 Clash Verge 同步(名称、端口跟随 Clash),请到 Clash Verge 中修改;启用可在本页关闭": "來自 Clash Verge 同步(名稱、連接埠跟隨 Clash),請到 Clash Verge 中修改;啟用可在本頁關閉", "正在下载内核": "正在下載核心", "正在停止…": "正在停止…", "正在安装内核…": "正在安裝核心…", "正在导入…": "正在匯入…", "正在开始…": "正在開始…", "正在校验内核…": "正在驗證核心…", "正在读取并上传文件…": "正在讀取並上傳檔案…", "正在连接 GitHub…": "正在連線 GitHub…", "正常": "正常", "此代理用于{services};删除后这些线路将不可用,不会自动回退直连。": "此代理用於{services};刪除後這些線路將無法使用,不會自動回退直連。", "此代理用于软件 / 插件更新;删除后这些线路将不可用,不会自动回退直连。": "此代理用於軟體 / 外掛更新;刪除後這些線路將不可用,不會自動回退直連。", "每次最多添加 {n} 条代理": "每次最多新增 {n} 條代理", "每行一条,解析后可修改名称、设置非直连并测试,最后保存勾选的代理。": "每行一條,解析後可修改名稱、設定非直連並測試,最後儲存勾選的代理。", "没有匹配「{kw}」的出口": "沒有匹配「{kw}」的出口", "没有匹配当前筛选的出口": "沒有匹配當前篩選的出口", "没有可全选的代理": "沒有可全選的代理", "没有可删除的条目": "沒有可刪除的條目", "没能同步:{reason}": "沒能同步:{reason}", "测试中 {done}/{total}": "測試中 {done}/{total}", "测试失败:{reason}": "測試失敗:{reason}", "测试目标网址": "測試目標網址", "测试结果没能记下:{reason}": "測試結果沒能記下:{reason}", "测试网址要以 http:// 或 https:// 开头": "測試網址要以 http:// 或 https:// 開頭", "测试设置": "測試設定", "添加一个 HTTP 或 SOCKS5 地址,之后可以在账号或服务线路中选择使用。": "新增一個 HTTP 或 SOCKS5 地址,之後可以在帳號或服務線路中選擇使用。", "添加单个": "新增單筆", "添加手动 HTTP / SOCKS5 地址,或同步 Clash Verge 的端点,供账号与服务线路使用。": "新增手動 HTTP / SOCKS5 位址,或同步 Clash Verge 的端點,供帳號與服務線路使用。", "添加第一个代理": "新增第一個代理", "清空已识别": "清空已辨識", "清空筛选": "清空篩選", "确定删除「{name}」?{used}": "確定刪除「{name}」?{used}", "确定删除「{name}」?它在代理池里的节点会一并移除,引用这些节点的账号会回退直连。": "確定刪除「{name}」?它在代理池裡的節點會一併移除,引用這些節點的帳號會回退直連。", "确定删除「{name}」?": "確定刪除「{name}」?", "确定删除已下载的内核{version}?内核文件与端口映射会被移除,订阅节点会失去监听端口(地址列显示「端口准备中」),引用它们的账号会暂时回退直连;订阅本身保留,重新下载内核后会重新分配端口。": "確定刪除已下載的核心{version}?核心檔案與連接埠對應會被移除,訂閱節點會失去監聽埠(位址欄顯示「連接埠準備中」),引用它們的帳號會暫時回退直連;訂閱本身保留,重新下載核心後會重新分配連接埠。", "确定删除选中的 {n} 个代理?": "確定刪除選中的 {n} 個代理?", "禁用后本端不再用它(引用它的账号回退直连),并会关掉它的本地监听端口": "停用後本端不再用它(引用它的帳號回退直連),並會關掉它的本地監聽連接埠", "禁用后本端不再用它(引用它的账号回退直连);端口在 Clash Verge 侧,不受影响": "停用後本端不再用它(引用它的帳號回退直連);連接埠在 Clash Verge 側,不受影響", "立即更新": "立即更新", "端口范围必须是 1-65535 的整数": "連接埠範圍必須是 1-65535 的整數", "第 {line} 行:{error}": "第 {line} 行:{error}", "类型": "型別", "粘贴代理列表后点击「解析」": "貼上代理清單後點選「解析」", "编辑代理": "編輯代理", "编辑订阅": "編輯訂閱", "网关已切换,请重新打开代理弹窗": "閘道已切換,請重新開啟代理視窗", "网关未返回内核导入任务,请刷新状态后确认": "閘道未傳回核心匯入工作,請重新整理狀態後確認", "网关机器上的文件或目录": "閘道機器上的檔案或目錄", "节点": "節點", "节点由内核起成本地监听器,镜像进代理池": "節點由核心起成本地監聽器,映象進代理池", "节点端口范围 {base}–{end}": "節點連接埠範圍 {base}–{end}", "节点端口范围(结束)": "節點連接埠範圍(結束)", "节点端口范围(起始)": "節點連接埠範圍(起始)", "解析": "解析", "订阅": "訂閱", "订阅与 Clash 的出口自动镜像进来": "訂閱與 Clash 的出口自動映象進來", "订阅内容由内核定时刷新(每 24 小时);节点数与同步状态在保存后由轮询刷新,稍等几秒。": "訂閱內容由核心定時重新整理(每 24 小時);節點數與同步狀態在儲存後由輪詢重新整理,稍等幾秒。", "订阅导入与更新、订阅节点管理,以及代理内核的下载、安装和运行。": "訂閱匯入與更新、訂閱節點管理,以及代理核心的下載、安裝和執行。", "订阅来源": "訂閱來源", "订阅管理": "訂閱管理", "订阅管理({n})": "訂閱管理({n})", "订阅节点": "訂閱節點", "订阅节点会在本机各占一个监听端口,从该范围里挑空闲的分配;节点多的大订阅把默认范围({base}-{end})用尽时会报「没有可用的节点端口」,这时把范围调大再重启内核。已分配出去的端口不会因改范围而失效。": "訂閱節點會在本機各佔一個監聽連接埠,從該範圍裡挑空閒的分配;節點多的大型訂閱把預設範圍({base}-{end})用盡時會報「沒有可用的節點連接埠」,這時把範圍調大再重啟核心。已分配出去的連接埠不會因改範圍而失效。", "订阅里的节点会自动同步进下方代理池,账号即可引用。": "訂閱裡的節點會自動同步進下方代理池,帳號即可引用。", "订阅里的节点会自动同步进代理池,账号即可引用。": "訂閱裡的節點會自動同步進代理池,帳號即可引用。", "订阅里的节点会被内核起成本地监听器,镜像到代理池(账号按 id 引用,与本页其它出口同一用法)。内核只在用到订阅时按需下载(约 20-40MB),不随安装包分发。": "訂閱裡的節點會被核心起成本地監聽器,映象到代理池(帳號按 id 引用,與本頁其它出口同一用法)。核心只在用到訂閱時按需下載(約 20-40MB),不隨安裝包分發。", "订阅链接": "訂閱連結", "识别中…": "識別中…", "该节点所属订阅已删除,不会再被同步更新,可手动删除清理": "該節點所屬訂閱已刪除,不會再被同步更新,可手動刪除清理", "该节点来自订阅(名称、端口跟随订阅与内核),请在「订阅管理」里修改;启用可在本页关闭": "該節點來自訂閱(名稱、連接埠跟隨訂閱與核心),請在「訂閱管理」裡修改;啟用可在本頁關閉", "请下载与网关平台一致的官方内核,不是浏览器所在设备的平台。": "請下載與閘道平台一致的官方核心,而不是瀏覽器所在裝置的平台。", "请填写代理名称": "請填寫代理名稱", "请填写已有代理服务的 HTTP / SOCKS5 地址,或自行运行 Clash Verge 后同步端点,并重新为相关账号和服务线路选择代理。": "請填寫既有代理服務的 HTTP / SOCKS5 位址,或自行執行 Clash Verge 後同步端點,並重新為相關帳號和服務線路選擇代理。", "请填写网关机器上的绝对文件或目录路径": "請填寫閘道機器上的檔案或目錄絕對路徑", "请改为填写已有代理服务的 HTTP / SOCKS5 地址,并重新为相关账号和服务线路选择代理。": "請改為填寫已有代理服務的 HTTP / SOCKS5 地址,並重新為相關帳號和服務線路選擇代理。", "请选择要导入的 YAML 文件": "請選擇要匯入的 YAML 檔案", "请选择要导入的内核文件": "請選擇要匯入的核心檔案", "读取失败:{reason}": "讀取失敗:{reason}", "起始端口不能大于结束端口": "起始連接埠不能大於結束連接埠", "跳过 {n} 个(Clash 同步)": "跳過 {n} 個(Clash 同步)", "跳过 {n} 个(同步只读条目)": "跳過 {n} 個(同步只讀條目)", "软件 / 插件更新": "軟體 / 外掛更新", "还没有代理。点右上角「+ 新增代理」手填一个,或在「订阅管理」里导入订阅节点、同步 Clash Verge 的出口。": "還沒有代理。點右上角「+ 新增代理」手填一個,或在「訂閱管理」裡匯入訂閱節點、同步 Clash Verge 的出口。", "还没有代理。点右上角「+ 新增代理」手填一个,或点「同步 Clash Verge」把 Clash 的出口导进来。": "還沒有代理。點右上角「+ 新增代理」手填一個,或點「同步 Clash Verge」把 Clash 的出口導進來。", "还没有出口。在桌面端「网络代理」页新增,或点上面同步 Clash。": "還沒有出口。在桌面版「網路代理」頁新增,或點上面同步 Clash。", "还没有订阅。点右上角「+ 新增订阅」粘贴订阅链接,或从图片识别二维码导入。": "還沒有訂閱。點右上角「+ 新增訂閱」貼上訂閱連結,或從圖片識別二維碼匯入。", "还没有订阅:粘贴订阅链接、导入本地 YAML 文件,或从图片识别二维码。": "還沒有訂閱:貼上訂閱連結、匯入本地 YAML 檔案,或從圖片識別二維碼。", "还没有订阅:粘贴订阅链接,或从图片识别二维码导入。": "還沒有訂閱:貼上訂閱連結,或從圖片識別二維碼匯入。", "还没有账号使用它(端口只在被账号引用时才分配 —— 在账号里选它并保存后,内核会自动开端口)": "還沒有帳號使用它(連接埠只在被帳號引用時才分配 —— 在帳號裡選它並儲存後,核心會自動開埠)", "还没有账号或服务线路使用它;在账号或更新设置中选中并保存后,内核会自动开端口": "還沒有帳號或服務線路使用它;在帳號或更新設定中選取並儲存後,核心會自動開埠", "这是网关机器上的安装目录,留空使用默认位置。导入会复制文件并建立版本目录,不删除原下载文件。": "這是閘道機器上的安裝目錄,留空使用預設位置。匯入會複製檔案並建立版本目錄,不會刪除原下載檔案。", "这条在 Clash Verge 里是停用的,本页启用不生效 —— 到 Clash Verge 里打开它": "這條在 Clash Verge 裡是停用的,本頁啟用不生效 —— 到 Clash Verge 裡開啟它", "这里只连接你提供的代理地址,不接管代理服务的安装与运行。": "這裡只連線你提供的代理地址,不接管代理服務的安裝與執行。", "连接成功": "連線成功", "连通性": "連通性", "连通性测试设置": "連通性測試設定", "选中的 {n} 条都是同步来的只读条目(Clash / 订阅),不能删除": "選中的 {n} 條都是同步來的只讀條目(Clash / 訂閱),不能刪除", "选中的 {n} 条都来自 Clash Verge 同步,不能删除(请到 Clash Verge 里删)": "選中的 {n} 條都來自 Clash Verge 同步,不能刪除(請到 Clash Verge 裡刪)", "选中的代理用于{services};删除后这些线路将不可用,不会自动回退直连。": "選取的代理用於{services};刪除後這些線路將無法使用,不會自動回退直連。", "选择 YAML 文件…": "選擇 YAML 檔案…", "选择内核文件…": "選擇核心檔案…", "选择目录…": "選擇目錄…", "选项来自「网络代理」页(Clash Verge 同步的出口在这里可用;订阅节点要等内核起来才有端口)。选「直连」时连不上会自动借 Clash 混合端口重试一次;选定某条线路后只走它。": "選項來自「網路代理」頁(Clash Verge 同步的出口在這裡可用;訂閱節點要等核心起來才有連接埠)。選「直連」時連不上會自動借 Clash 混合連接埠重試一次;選定某條線路後只走它。", "通过代理访问该网址,检查是否能收到 HTTP 响应。留空沿用网关默认值。": "通過代理存取該網址,檢查是否能收到 HTTP 響應。留空沿用閘道器預設值。", "部分测试结果没能记下:{reason}": "部分測試結果沒能記下:{reason}", "重启内核": "重啟核心", "重新选择文件…": "重新選擇檔案…", "镜像当前出口集合,名称与端口跟随 Clash": "映象當前出口集合,名稱與連接埠跟隨 Clash", "需要干净的出口?": "需要乾淨的出口?", "需要用户名和密码(可选)": "需要使用者名稱和密碼(可選)", "非直连": "非直連", "非直连代理": "非直連代理", "非直连会先经过网关所在设备的系统代理,再连接到此代理;系统代理不可用时不会改走直连。": "非直連會先經過閘道所在裝置的系統代理,再連線到此代理;系統代理無法使用時不會改走直接連線。", "首次购买使用优惠码 AGENT2API25 享 75 折。": "首次購買使用優惠碼 AGENT2API25 享 75 折。", "+ 新增代理": "+ 新增代理", "+ 新增订阅": "+ 新增訂閱", ",": ",", " 或 ": " 或 ", "Anthropic SDK 会自动携带版本头;手写 Messages 请求可使用 2023-06-01。/v1/models 收到该头或 x-api-key 时返回 Anthropic 列表形态。": "Anthropic SDK 會自動攜帶版本頭;手寫 Messages 請求可使用 2023-06-01。/v1/models 收到該頭或 x-api-key 時返回 Anthropic 列表形態。", "Anthropic 业务错误结构示例": "Anthropic 業務錯誤結構示例", "Anthropic 官方 SDK / Claude Code 使用的根地址:": "Anthropic 官方 SDK / Claude Code 使用的根地址:", "Anthropic 标准要求显式填写正整数。网关对缺失或无效值补 8192,但上游模型的实际预算仍可能更低。": "Anthropic 標準要求顯式填寫正整數。閘道器對缺失或無效值補 8192,但上游模型的實際預算仍可能更低。", "Antigravity 支持宽高比 1:1、2:3、3:2、3:4、4:3、4:5、5:4、9:16、16:9、21:9,尺寸会映射到原生 1K / 2K / 4K 档。请求最长边 ≤1792 为 1K,1793–3072 为 2K,3073–4096 为 4K;超过 4096 会被该提供商拒绝。": "Antigravity 支援寬高比 1:1、2:3、3:2、3:4、4:3、4:5、5:4、9:16、16:9、21:9,尺寸會對映到原生 1K / 2K / 4K 檔。請求最長邊 ≤1792 為 1K,1793–3072 為 2K,3073–4096 為 4K;超過 4096 會被該提供商拒絕。", "Antigravity 的 size=auto 生成使用 1:1、1K;参考图编辑使用 1K 且不强制正方形。模型版本可能有更严格的输出限制;宽高比需接近支持值,不能任意指定像素尺寸。": "Antigravity 的 size=auto 生成使用 1:1、1K;參考圖編輯使用 1K 且不強制正方形。模型版本可能有更嚴格的輸出限制;寬高比需接近支援值,不能任意指定畫素尺寸。", "Base URL 填进客户端的「API 地址 / Base URL」栏;对话协议按客户端支持的类型三选一(Chat Completions / Responses / Anthropic Messages),三者共用同一套模型与账号池,可随时切换;鉴权用「网关 Key」页里任一启用 Key。": "Base URL 填進客戶端的「API 地址 / Base URL」欄;對話協議按客戶端支援的型別三選一(Chat Completions / Responses / Anthropic Messages),三者共用同一套模型與帳號池,可隨時切換;鑑權用「閘道器 Key」頁裡任一啟用 Key。", "Chat 流式成功通常以 data: [DONE] 收尾。需要同时处理 delta.content、思考字段和 delta.tool_calls;工具参数可能跨多个增量拼接。": "Chat 流式成功通常以 data: [DONE] 收尾。需要同時處理 delta.content、思考欄位和 delta.tool_calls;工具引數可能跨多個增量拼接。", "Chat、Responses 和图片接口通常返回 error 对象,其中 message 是可读说明,type 是错误类别,code 与 upstream_code 按情况附带。Anthropic 业务错误使用 type=error 的信封;鉴权中间件、无效 JSON 或网关层错误也可能返回通用 error 形态。": "Chat、Responses 和圖片介面通常返回 error 物件,其中 message 是可讀說明,type 是錯誤類別,code 與 upstream_code 按情況附帶。Anthropic 業務錯誤使用 type=error 的信封;鑑權中介軟體、無效 JSON 或閘道器層錯誤也可能返回通用 error 形態。", "Claude Code / Anthropic SDK": "Claude Code / Anthropic SDK", "Claude Code / Anthropic SDK(token 计数:/v1/messages/count_tokens)": "Claude Code / Anthropic SDK(token 計數:/v1/messages/count_tokens)", "Claude Code / Anthropic SDK;模型与账号池和 OpenAI 入口共用。": "Claude Code / Anthropic SDK;模型與帳號池和 OpenAI 入口共用。", "Codex / 新版 OpenAI SDK;无状态转发,历史由客户端携带。": "Codex / 新版 OpenAI SDK;無狀態轉發,歷史由客戶端攜帶。", "Codex、新版 SDK": "Codex、新版 SDK", "GET /health 返回 status=ok 或 degraded。公网安全模式只返回简化探活信息;HTTP 200 或 status=ok 不代表所有提供商在线、账号有额度或图片模型可调用。": "GET /health 返回 status=ok 或 degraded。公網安全模式只返回簡化探活資訊;HTTP 200 或 status=ok 不代表所有提供商線上、帳號有額度或圖片模型可呼叫。", "GET /health、GET /v1/models 和网关临时图片下载不强制检查 Key。模型清单可在配 Key 前读取,但这不能证明 Key 正确;应以携带该 Key 的实际业务请求为准。": "GET /health、GET /v1/models 和閘道器臨時圖片下載不強制檢查 Key。模型清單可在配 Key 前讀取,但這不能證明 Key 正確;應以攜帶該 Key 的實際業務請求為準。", "HTTP(S) 参考图由网关服务器下载,不携带网关 Key 或提供商凭证。外链必须能被网关无额外请求头访问;本机、内网、带用户名密码或不安全重定向地址会被拒绝。受保护图片建议直接上传文件。": "HTTP(S) 參考圖由閘道器伺服器下載,不攜帶閘道器 Key 或提供商憑證。外鏈必須能被閘道器無額外請求頭存取;本機、內網、帶使用者名稱密碼或不安全重定向地址會被拒絕。受保護圖片建議直接上傳檔案。", "JSON 图片引用编辑请求": "JSON 圖片引用編輯請求", "JSON 图片生成请求": "JSON 圖片生成請求", "JSON 的 images 是对象数组,每项只能包含 image_url。接受完整 HTTP(S) URL、data:image/...;base64,...,或先前响应返回的完整网关临时图片链接;不接受裸 base64、相对路径、file_id 或本地文件路径。": "JSON 的 images 是物件陣列,每項只能包含 image_url。接受完整 HTTP(S) URL、data:image/...;base64,...,或先前響應返回的完整閘道器臨時圖片連結;不接受裸 base64、相對路徑、file_id 或本地檔案路徑。", "JSON 请求使用 application/json。图片编辑上传文件时使用 multipart/form-data;curl -F 会自动生成 boundary,不要手动覆盖此请求头。": "JSON 請求使用 application/json。圖片編輯上傳檔案時使用 multipart/form-data;curl -F 會自動生成 boundary,不要手動覆蓋此請求頭。", "Key 缺失、无效、停用,或上游认证失败。网关未收到 Key 时返回 model_api_key_required,无效 Key 返回 invalid_api_key;请检查请求头与「网关 Key」页。": "Key 缺失、無效、停用,或上游驗證失敗。閘道未收到 Key 時回傳 model_api_key_required,無效 Key 回傳 invalid_api_key;請檢查請求標頭與「閘道 Key」頁。", "Key 缺失、无效、停用,或上游认证失败。网关鉴权失败通常为 invalid_api_key;检查请求头与「网关 Key」页,而不是仅重拉模型列表。": "Key 缺失、無效、停用,或上游認證失敗。閘道器鑑權失敗通常為 invalid_api_key;檢查請求頭與「閘道器 Key」頁,而不是僅重拉模型列表。", "LLM 请求": "LLM 請求", "Messages 响应结构": "Messages 響應結構", "Messages 请求": "Messages 請求", "ModelScope 不支持 style、mask 与 input_fidelity;quality 仅接受省略、auto 或 standard,background 仅接受省略、auto 或 opaque,moderation 仅接受省略或 auto。风格与修改目标请写入 prompt。": "ModelScope 不支援 style、mask 與 input_fidelity;quality 僅接受省略、auto 或 standard,background 僅接受省略、auto 或 opaque,moderation 僅接受省略或 auto。風格與修改目標請寫入 prompt。", "ModelScope 使用官方异步任务接口,创建后只查询同一任务,不会为了等待结果重新提交。单次 n=1;size 可省略、设为 auto,或指定边长 64–2048 的 WIDTHxHEIGHT,具体型号可能进一步限制。": "ModelScope 使用官方非同步任務介面,建立後只查詢同一任務,不會為了等待結果重新提交。單次 n=1;size 可省略、設為 auto,或指定邊長 64–2048 的 WIDTHxHEIGHT,具體型號可能進一步限制。", "OpenAI Python SDK 图片示例": "OpenAI Python SDK 圖片示例", "OpenAI SDK 的 base_url 填「接口地址」章节中以 /v1 结尾的 Base URL,不要填完整的 /chat/completions。Anthropic 官方 SDK 与 Claude Code 的 ANTHROPIC_BASE_URL 填网关根地址,不带 /v1;它们会自行追加 /v1/messages。其他客户端是否自动追加 /v1,以其地址栏说明为准。": "OpenAI SDK 的 base_url 填「介面地址」章節中以 /v1 結尾的 Base URL,不要填完整的 /chat/completions。Anthropic 官方 SDK 與 Claude Code 的 ANTHROPIC_BASE_URL 填閘道根位址,不帶 /v1;它們會自行附加 /v1/messages。其他用戶端是否自動附加 /v1,以其位址欄說明為準。", "OpenAI SDK 的 base_url 填上方以 /v1 结尾的 Base URL,不要填完整的 /chat/completions。Anthropic 官方 SDK 与 Claude Code 的 ANTHROPIC_BASE_URL 填网关根地址,不带 /v1;它们会自行追加 /v1/messages。其他客户端是否自动追加 /v1,以其地址栏说明为准。": "OpenAI SDK 的 base_url 填上方以 /v1 結尾的 Base URL,不要填完整的 /chat/completions。Anthropic 官方 SDK 與 Claude Code 的 ANTHROPIC_BASE_URL 填閘道器根地址,不帶 /v1;它們會自行追加 /v1/messages。其他客戶端是否自動追加 /v1,以其位址列說明為準。", "OpenAI 兼容客户端使用此地址;Anthropic 官方 SDK 使用下方说明中的网关根地址。": "OpenAI 相容客戶端使用此地址;Anthropic 官方 SDK 使用下方說明中的閘道器根地址。", "OpenAI 新协议(Codex、新版 SDK)": "OpenAI 新協議(Codex、新版 SDK)", "Python:生成、编辑并保存图片": "Python:生成、編輯並儲存圖片", "Responses 使用 function_call / function_call_output 配对,Anthropic 使用 tool_use / tool_result 配对。协议转换会处理这些格式,但不会替客户端执行自定义函数。上游原生搜索等服务端工具是否可用取决于提供商,不能当成网关统一能力。": "Responses 使用 function_call / function_call_output 配對,Anthropic 使用 tool_use / tool_result 配對。協議轉換會處理這些格式,但不會替客戶端執行自定義函式。上游原生搜尋等服務端工具是否可用取決於提供商,不能當成閘道器統一能力。", "Responses 响应结构": "Responses 響應結構", "Responses 请求": "Responses 請求", "SDK 示例使用的环境变量": "SDK 示例使用的環境變數", "Token 估算响应": "Token 估算響應", "Token 数量估算": "Token 數量估算", "Token 自动续期": "Token 自動續期", "WorkBuddy 走官方图片接口:size 省略或设为 auto 时按 1024x1024 请求;该通道不接受 quality、style、background 与 moderation,请把风格与质量要求写进 prompt。参考图以 data URL 内联在 JSON 请求里发送(不是 multipart),模型 id 由上游目录下发,换版本时以 /v1/models 为准。": "WorkBuddy 走官方圖片介面:size 省略或設為 auto 時按 1024x1024 請求;該通道不接受 quality、style、background 與 moderation,請把風格與質量要求寫進 prompt。參考圖以 data URL 內聯在 JSON 請求裡傳送(不是 multipart),模型 id 由上游目錄下發,換版本時以 /v1/models 為準。", "base64 图片响应结构": "base64 圖片響應結構", "chat 用于三种对话入口;image 用于 /v1/images/generations 和 /v1/images/edits。不要把图片模型提交给对话入口。": "chat 用於三種對話入口;image 用於 /v1/images/generations 和 /v1/images/edits。不要把圖片模型提交給對話入口。", "count_tokens 在本地估算,不调用上游 tokenizer;返回 input_tokens 和 estimated=true。数值用于上下文预算,不用于精确计费,尤其不应当作图片的真实 Token 用量。": "count_tokens 在本地估算,不呼叫上游 tokenizer;返回 input_tokens 和 estimated=true。數值用於上下文預算,不用於精確計費,尤其不應當作圖片的真實 Token 用量。", "curl -F 自动生成 multipart boundary。不要额外设置 Content-Type: application/json 或手写无 boundary 的 multipart/form-data;prompt 使用 --form-string 可避免特殊字符被当作文件上传。": "curl -F 自動生成 multipart boundary。不要額外設定 Content-Type: application/json 或手寫無 boundary 的 multipart/form-data;prompt 使用 --form-string 可避免特殊字元被當作檔案上傳。", "curl 命令": "curl 命令", "response_format=b64_json 时返回不带 data URL 前缀的标准 base64。解码为二进制后保存;网页展示时自行加对应 MIME 类型前缀。": "response_format=b64_json 時返回不帶 data URL 字首的標準 base64。解碼為二進位制後儲存;網頁展示時自行加對應 MIME 型別字首。", "response_format=url 不保证永久地址;网关临时链接与 AI 助手会话中的图片存储是两套机制,不能混用接口或有效期。": "response_format=url 不保證永久地址;閘道器臨時連結與 AI 助手會話中的圖片儲存是兩套機制,不能混用介面或有效期。", "response_format=url 时返回。可能是提供商签名链接,也可能是网关临时下载链接;应直接使用返回值,不要自行拼下载 id。": "response_format=url 時返回。可能是提供商簽名連結,也可能是閘道器臨時下載連結;應直接使用返回值,不要自行拼下載 id。", "stream 默认 false;true 返回 Anthropic 事件流。stop_sequences 映射为停止序列,是否支持取决于上游。": "stream 預設 false;true 返回 Anthropic 事件流。stop_sequences 對映為停止序列,是否支援取決於上游。", "usage 的 prompt_tokens、completion_tokens、total_tokens 表示用量,不等于统一货币价格。上游未提供时可能缺失或为 0。": "usage 的 prompt_tokens、completion_tokens、total_tokens 表示用量,不等於統一貨幣價格。上游未提供時可能缺失或為 0。", "✓ 支持 · ✗ 不支持 · — 无此概念 · ? 未声明": "✓ 支援 · ✗ 不支援 · — 無此概念 · ? 未聲明", "。一把启用的 Key 都没有时不鉴权(默认网关只监听 127.0.0.1;在设置页开启「局域网访问」后监听所有网卡,鉴权与安全闸门随之启用)。": "。一把啟用的 Key 都沒有時不鑑權(預設閘道器只監聽 127.0.0.1;在設定頁開啟「區域網路存取」後監聽所有網路卡,鑑權與安全閘門隨之啟用)。", "。用「网关 Key」页里任一启用的 Key;一把都没有时不鉴权。": "。用「閘道器 Key」頁裡任一啟用的 Key;一把都沒有時不鑑權。", "三种对话协议的流式错误需要检查事件内容与正常结束标记;HTTP 200 本身不足以证明成功。图片接口仅返回非流式 JSON。": "三種對話協議的流式錯誤需要檢查事件內容與正常結束標記;HTTP 200 本身不足以證明成功。圖片介面僅返回非流式 JSON。", "上一章": "上一章", "上传一张或多张参考图,并用提示词描述保留内容与修改目标。": "上傳一張或多張參考圖,並用提示詞描述保留內容與修改目標。", "上传一张本地参考图": "上傳一張本地參考圖", "上传多张参考图": "上傳多張參考圖", "上传本地文件推荐 multipart/form-data;已经有图片 URL 或 base64 时可发送 application/json。除参考图字段外,参数与图片生成相同。": "上傳本地檔案推薦 multipart/form-data;已經有圖片 URL 或 base64 時可傳送 application/json。除參考圖欄位外,引數與圖片生成相同。", "下一章": "下一章", "下表是网关接受的参数范围,不是所有提供商都支持的范围。生成与编辑共用这些字段,具体上游可能进一步拒绝数量、质量、风格、背景或尺寸。": "下表是閘道器接受的引數範圍,不是所有提供商都支援的範圍。生成與編輯共用這些欄位,具體上游可能進一步拒絕數量、質量、風格、背景或尺寸。", "下载并保存网关临时图片": "下載並儲存閘道器臨時圖片", "下载返回原始图片二进制及 image/png、image/jpeg 或 image/webp Content-Type,不是 JSON。不存在或过期返回 404,响应使用 private, no-store 与 nosniff。": "下載返回原始圖片二進位制及 image/png、image/jpeg 或 image/webp Content-Type,不是 JSON。不存在或過期返回 404,響應使用 private, no-store 與 nosniff。", "不受鉴权限制,配 Key 前就能拉": "不受鑑權限制,配 Key 前就能拉", "不强制鉴权;仅用于确认网关可访问,不保证模型或额度可用。": "不強制鑑權;僅用於確認閘道器可存取,不保證模型或額度可用。", "不强制鉴权;携带有效 Key 可查看该 Key 获准使用的模型。": "不強制鑑權;攜帶有效 Key 可檢視該 Key 獲准使用的模型。", "不携带 Anthropic 相关头时,模型接口返回 OpenAI 风格的 object=list、data 数组和 meta 摘要;携带 anthropic-version 或 x-api-key 时,返回 data、has_more、first_id、last_id,并保留能力扩展字段。": "不攜帶 Anthropic 相關頭時,模型介面返回 OpenAI 風格的 object=list、data 陣列和 meta 摘要;攜帶 anthropic-version 或 x-api-key 時,返回 data、has_more、first_id、last_id,並保留能力擴充套件欄位。", "不支持依赖服务端状态的 previous_response_id、conversation、托管提示词 prompt,以及 background=true;请由客户端保存并回传历史,不要调用未实现的 Responses 查询或删除接口。": "不支援依賴服務端狀態的 previous_response_id、conversation、託管提示詞 prompt,以及 background=true;請由客戶端儲存並回傳歷史,不要呼叫未實現的 Responses 查詢或刪除介面。", "不要把 base64 图片塞回对话文本或日志,也不要将“请求超时”理解为“没有扣费”。如需连续编辑,保存结果文件后再作为下一次 image 上传。": "不要把 base64 圖片塞回對話文本或日誌,也不要將“請求超時”理解為“沒有扣費”。如需連續編輯,儲存結果檔案後再作為下一次 image 上傳。", "业务请求的 model 值。owned_by 表示目录条目的归属,不保证每次请求都由该提供商承载;同名模型与映射可能有多个路由。": "業務請求的 model 值。owned_by 表示目錄條目的歸屬,不保證每次請求都由該提供商承載;同名模型與對映可能有多個路由。", "临时图片下载": "臨時圖片下載", "也可使用 x-api-key: YOUR_GATEWAY_KEY,常用于 Anthropic 客户端。两种鉴权头任选一种即可,不要填提供商账号令牌或面板登录令牌。": "也可使用 x-api-key: YOUR_GATEWAY_KEY,常用於 Anthropic 客戶端。兩種鑑權頭任選一種即可,不要填提供商帳號權杖或面板登入權杖。", "仅可省略或设为 stream=false、partial_images=0。当前不支持图片事件流、渐进图片或流式部分结果。未知参数会被拒绝,不会静默忽略。": "僅可省略或設為 stream=false、partial_images=0。當前不支援圖片事件流、漸進圖片或流式部分結果。未知引數會被拒絕,不會靜默忽略。", "仅在上游返回修改后的提示词时保留,不保证每个模型都有。": "僅在上游返回修改後的提示詞時保留,不保證每個模型都有。", "仅在显式指定 output_format=jpeg 时支持,网关按 JPEG 质量参数编码。PNG、WebP 当前不支持此参数。": "僅在顯式指定 output_format=jpeg 時支援,閘道器按 JPEG 質量引數編碼。PNG、WebP 當前不支援此引數。", "仅用于响应返回的网关临时链接;{id} 必须替换为实际下载令牌。": "僅用於響應返回的閘道器臨時連結;{id} 必須替換為實際下載權杖。", "仍从当前网关目录选择对话模型,不要求模型名称一定以 claude 开头。具体能力以实际承载模型为准。": "仍從當前閘道器目錄選擇對話模型,不要求模型名稱一定以 claude 開頭。具體能力以實際承載模型為準。", "估算输入 Token 数量": "估算輸入 Token 數量", "使用 supports_image_editing=true 的图片模型。该接口是参考图编辑、重绘或合成,不是精确遮罩修补;当前不支持 mask 与 input_fidelity,也不支持 file_id。": "使用 supports_image_editing=true 的圖片模型。該介面是參考圖編輯、重繪或合成,不是精確遮罩修補;當前不支援 mask 與 input_fidelity,也不支援 file_id。", "使用与 Chat 相同的对话模型 id 和 Key 授权规则。": "使用與 Chat 相同的對話模型 id 和 Key 授權規則。", "使用同一客户端生成与编辑,并将返回的 base64 保存为图片文件。": "使用同一客戶端生成與編輯,並將返回的 base64 儲存為圖片檔案。", "使用支持工具调用的模型。函数声明、调用结果配对与多模态请求示例见「看图与工具调用」章节。": "使用支援工具呼叫的模型。函式宣告、呼叫結果配對與多模態請求範例見「看圖與工具呼叫」章節。", "使用支持工具调用的模型。函数声明、调用结果配对与多模态请求示例见下一节。": "使用支援工具呼叫的模型。函式宣告、呼叫結果配對與多模態請求示例見下一節。", "使用说明与兼容边界": "使用說明與相容性界線", "健康检查": "健康檢查", "先前网关返回的 /v1/images/files/{id} 完整链接可在未过期时作为 JSON 参考图。不要把 AI 助手内部的 assistant-image:ID 当成对外接口图片 URL。": "先前閘道器返回的 /v1/images/files/{id} 完整連結可在未過期時作為 JSON 參考圖。不要把 AI 助手內部的 assistant-image:ID 當成對外介面圖片 URL。", "先确定网关地址、Key 和模型,再选择客户端支持的协议。": "先確定閘道器地址、Key 和模型,再選擇客戶端支援的協議。", "兼容 Anthropic 消息块与 SSE 事件,支持本地 Token 预算估算。": "相容 Anthropic 訊息塊與 SSE 事件,支援本地 Token 預算估算。", "兼容 Responses 请求与事件格式,适合 Codex 等客户端;不是服务端会话存储。": "相容 Responses 請求與事件格式,適合 Codex 等客戶端;不是服務端會話儲存。", "内置 AI 助手已有 generate_images 与 edit_images 工具,可在助手设置中启用并按确认模式执行。外部 API 客户端不会自动获得这些工具;需要由客户端声明并实际调用图片接口。": "內建 AI 助手已有 generate_images 與 edit_images 工具,可在助手設定中啟用並按確認模式執行。外部 API 客戶端不會自動獲得這些工具;需要由客戶端宣告並實際呼叫圖片介面。", "函数工具使用 Responses 的声明格式;工具结果以 function_call_output 携带相同 call_id。实际工具能力仍依赖模型与提供商。": "函式工具使用 Responses 的宣告格式;工具結果以 function_call_output 攜帶相同 call_id。實際工具能力仍依賴模型與提供商。", "函数工具声明包含 name、description、input_schema;结果在后续 user 消息的 tool_result 块中携带对应 tool_use_id。": "函式工具宣告包含 name、description、input_schema;結果在後續 user 訊息的 tool_result 塊中攜帶對應 tool_use_id。", "分别可能表示请求中断或请求过大。参考图过大时需缩小图片或减少数量,原样重试不会解决;中断的图片任务可能已经消耗额度。": "分別可能表示請求中斷或請求過大。參考圖過大時需縮小圖片或減少數量,原樣重試不會解決;中斷的圖片任務可能已經消耗額度。", "分别控制输出上限与是否流式。stream 默认 false;true 返回 Responses 命名事件。": "分別控制輸出上限與是否流式。stream 預設 false;true 返回 Responses 命名事件。", "分别表示工具调用与思考能力。是否生效仍取决于实际承载模型、提供商和相关设置。": "分別表示工具呼叫與思考能力。是否生效仍取決於實際承載模型、提供商和相關設定。", "分别请求思考档位与结构化输出;能力和可用取值依赖模型。不要因字段被接受就假定上游已经执行。": "分別請求思考檔位與結構化輸出;能力和可用取值依賴模型。不要因欄位被接受就假定上游已經執行。", "协议兼容不保证工具、思考、结构化输出、透明背景或每个尺寸都被所有提供商支持。先查看当前模型能力和插件版本,再核对请求日志的承载提供商与错误摘要。": "協議相容不保證工具、思考、結構化輸出、透明背景或每個尺寸都被所有提供商支援。先檢視當前模型能力和外掛版本,再核對請求日誌的承載提供商與錯誤摘要。", "单图可用 image=@reference.png,多图重复提交 image[]。也兼容 images、images[] 与 image[0] 这类数字索引字段;普通参数不能重复提交。": "單圖可用 image=@reference.png,多圖重複提交 image[]。也相容 images、images[] 與 image[0] 這類數字索引欄位;普通引數不能重複提交。", "单轮可以是字符串;多轮使用消息与工具项数组,客户端应携带必要历史。文本块使用 input_text,图片块使用 input_image。": "單輪可以是字串;多輪使用訊息與工具項陣列,客戶端應攜帶必要歷史。文本塊使用 input_text,圖片塊使用 input_image。", "参考图编辑": "參考圖編輯", "参考图编辑;支持 multipart 文件上传或 JSON 图片引用。": "參考圖編輯;支援 multipart 檔案上傳或 JSON 圖片引用。", "只支持这三种可解码图片格式,校验实际文件内容而不是仅看扩展名;单张最多 10 MiB,边长最多 8192。": "只支援這三種可解碼圖片格式,校驗實際檔案內容而不是僅看副檔名;單張最多 10 MiB,邊長最多 8192。", "可用值为 auto、standard、hd、low、medium、high、xhigh、max。小浣熊与 Antigravity 仅接受省略、auto 或 standard;其他值是否有效取决于 Loomy 的具体模型。": "可用值為 auto、standard、hd、low、medium、high、xhigh、max。小浣熊與 Antigravity 僅接受省略、auto 或 standard;其他值是否有效取決於 Loomy 的具體模型。", "可省略,或使用 auto、WIDTHxHEIGHT,例如 1024x1024。网关校验边长 1–8192,提供商可能进一步限制宽高比与分辨率,不保证精确像素输出。": "可省略,或使用 auto、WIDTHxHEIGHT,例如 1024x1024。閘道器校驗邊長 1–8192,提供商可能進一步限制寬高比與解析度,不保證精確畫素輸出。", "可能是网关内部错误、上游异常、插件未接入、暂无可用账号、图片下载或编码失败。": "可能是閘道內部錯誤、上游異常、外掛未接入、暫無可用帳號、圖片下載或編碼失敗。", "可能是网关内部错误、上游异常、插件未接入、暂无可用账号、图片下载或编码失败。公网模式的 api_key_not_configured 表示必须先配置网关 Key。": "可能是閘道器內部錯誤、上游異常、外掛未接入、暫無可用帳號、圖片下載或編碼失敗。公網模式的 api_key_not_configured 表示必須先配置閘道器 Key。", "可能附带实际输出编码、用量或点数。usage 与 points_consumed 取决于上游,缺失不代表免费;若未要求固定编码,不要默认所有图片都是 PNG。": "可能附帶實際輸出編碼、用量或點數。usage 與 points_consumed 取決於上游,缺失不代表免費;若未要求固定編碼,不要預設所有圖片都是 PNG。", "可选的调用方用户标识,不是网关鉴权 Key,也不能用于指定账号或绕过 Key 的授权范围。是否传递与处理取决于提供商。": "可選的呼叫方使用者標識,不是閘道器鑑權 Key,也不能用於指定帳號或繞過 Key 的授權範圍。是否傳遞與處理取決於提供商。", "启用": "啟用", "图片响应与下载": "圖片響應與下載", "图片响应创建时间,Unix 秒。不要与错误限额恢复字段 reset_at 的毫秒单位混用。": "圖片響應建立時間,Unix 秒。不要與錯誤限額恢復欄位 reset_at 的毫秒單位混用。", "图片生成与共用参数": "圖片生成與共用引數", "图片生成与编辑": "圖片生成與編輯", "图片输入是理解图片,工具调用是由客户端执行动作;二者都需要模型能力支持。": "圖片輸入是理解圖片,工具呼叫是由客戶端執行動作;二者都需要模型能力支援。", "在线模型列表": "線上模型列表", "在线模型列表指自动拉取上游目录;仅有静态模型清单不算在线支持。": "線上模型列表指自動取得上游目錄;僅有靜態模型清單不算線上支援。", "地址速查与请求示例使用当前网关地址。从其他设备访问时,127.0.0.1 指向那台设备自身,必须换成实际可达的网关地址。": "地址速查與請求示例使用當前閘道器地址。從其他裝置存取時,127.0.0.1 指向那臺裝置自身,必須換成實際可達的閘道器地址。", "填进客户端的「API 地址 / Base URL」": "填進客戶端的「API 地址 / Base URL」", "声明函数工具的请求体": "宣告函式工具的請求體", "复制命令": "複製命令", "复制地址": "複製地址", "复制示例": "複製示例", "多图有顺序意义:在 prompt 中明确“第 1 张是主体,第 2 张是风格参考”等关系。编辑不保证逐像素保真,要求保留的主体、文字或布局应明确描述。": "多圖有順序意義:在 prompt 中明確“第 1 張是主體,第 2 張是風格參考”等關係。編輯不保證逐畫素保真,要求保留的主體、文字或佈局應明確描述。", "多数 OpenAI 兼容客户端的默认协议": "多數 OpenAI 相容客戶端的預設協議", "多数兼容客户端的默认协议": "多數相容客戶端的預設協議", "字段 / 状态": "欄位 / 狀態", "字段与限制": "欄位與限制", "安装并使用支持 Images 参数的 OpenAI Python SDK。先按接入章节设置 GATEWAY_KEY 与 IMAGE_MODEL_ID,编辑前确认该模型支持参考图,并准备本地 reference.png。": "安裝並使用支援 Images 引數的 OpenAI Python SDK。先按接入章節設定 GATEWAY_KEY 與 IMAGE_MODEL_ID,編輯前確認該模型支援參考圖,並準備本地 reference.png。", "客户端自动拉取可用模型;不受鉴权限制,配 Key 之前就能拉": "客戶端自動拉取可用模型;不受鑑權限制,配 Key 之前就能拉", "对话协议": "對話協定", "对话协议与上下文预算": "對話協議與上下文預算", "对话协议(按客户端支持的类型选一行)": "對話協議(按客戶端支援的型別選一行)", "对话模型看图请求": "對話模型看圖請求", "小浣熊与 Antigravity 不支持此字段,请在 prompt 中描述风格;Loomy 转交上游,由模型决定是否支持。": "小浣熊與 Antigravity 不支援此欄位,請在 prompt 中描述風格;Loomy 轉交上游,由模型決定是否支援。", "小浣熊与 Antigravity 仅接受省略、auto 或 opaque;不保证所有模型都能生成透明背景。文件转码不会自动抠图。": "小浣熊與 Antigravity 僅接受省略、auto 或 opaque;不保證所有模型都能生成透明背景。檔案轉碼不會自動摳圖。", "小浣熊与 Antigravity 仅接受省略或 auto。该字段不保证上游降低审核强度,内容政策拒绝不会自动重试。": "小浣熊與 Antigravity 僅接受省略或 auto。該欄位不保證上游降低稽核強度,內容政策拒絕不會自動重試。", "小浣熊使用 raccoon-image;Loomy 使用目录中的 kind=image 模型;Antigravity 使用目录中的 gemini-*-image 模型;ModelScope 使用已确认支持的 Qwen-Image、Z-Image 或 Qwen-Image-Edit 型号;WorkBuddy 使用目录中带 text-to-image 或 image-to-image 标签的模型,例如 hunyuan-image-alpha 与 hunyuan-image-alpha-edit。实际 model 值以当前 /v1/models 为准,不要直接复制官方 API 的默认模型名。": "小浣熊使用 raccoon-image;Loomy 使用目錄中的 kind=image 模型;Antigravity 使用目錄中的 gemini-*-image 模型;ModelScope 使用已確認支援的 Qwen-Image、Z-Image 或 Qwen-Image-Edit 型號;WorkBuddy 使用目錄中帶 text-to-image 或 image-to-image 標籤的模型,例如 hunyuan-image-alpha 與 hunyuan-image-alpha-edit。實際 model 值以當前 /v1/models 為準,不要直接複製官方 API 的預設模型名。", "展开目录": "展開目錄", "工具服务 API": "工具服務 API", "工具服务 API 文档": "工具服務 API 文件", "工具服务 API 是网关对外的固定接口,路径以 /api/web-search 开头;不属于 /v1 对话协议,也不是管理面板的管理接口,鉴权同样使用网关 Key。": "工具服務 API 是閘道器對外的固定介面,路徑以 /api/web-search 開頭;不屬於 /v1 對話協議,也不是管理面板的管理介面,鑑權同樣使用閘道器 Key。", "已实现,待实测": "已實作,待實測", "已实现,待实测:仅表示代码已接入,尚未通过真实账号验证。": "已實作,待實測:僅表示程式碼已接入,尚未通過真實帳號驗證。", "建议显式填写图片模型 id。省略时从当前 Key 可用目录中选择支持本次操作的图片模型,不使用对话默认模型;没有对应能力模型时返回 503。": "建議顯式填寫圖片模型 id。省略時從當前 Key 可用目錄中選擇支援本次操作的圖片模型,不使用對話預設模型;沒有對應能力模型時返回 503。", "待实测": "待實測", "必填。使用 user / assistant 角色;content 可为字符串或 text、image、tool_use、tool_result 等内容块。": "必填。使用 user / assistant 角色;content 可為字串或 text、image、tool_use、tool_result 等內容塊。", "必填。包含 role 与 content;常见角色为 system、user、assistant,工具结果使用 tool。文本可直接使用字符串,多模态使用内容块数组。": "必填。包含 role 與 content;常見角色為 system、user、assistant,工具結果使用 tool。文本可直接使用字串,多模態使用內容塊陣列。", "必填且不能为空,最多 32000 个字符。描述主体、构图、风格和修改目标;当前不支持 mask,编辑范围也应在提示词中说明。": "必填且不能為空,最多 32000 個字元。描述主體、構圖、風格和修改目標;當前不支援 mask,編輯範圍也應在提示詞中說明。", "快速验证": "快速驗證", "手机端只读文档。完整的使用说明与部署指引在仓库的 docs/ 目录。": "手機端只讀文件。完整的使用說明與部署指引在倉庫的 docs/ 目錄。", "执行工具后回传结果的请求体": "執行工具後回傳結果的請求體", "找到 {count} 个章节": "找到 {count} 個章節", "排错与限制": "疑難排解與限制", "接入与鉴权": "接入與鑑權", "接入指南": "接入指南", "接入指南与接口参考": "接入指南與 API 參考", "接口参考目录": "介面參考目錄", "接口地址": "介面地址", "推荐使用 Authorization: Bearer YOUR_GATEWAY_KEY;Key 来自「网关 Key」页,并且必须处于启用状态。": "推薦使用 Authorization: Bearer YOUR_GATEWAY_KEY;Key 來自「閘道器 Key」頁,並且必須處於啟用狀態。", "推荐显式指定当前目录中的对话模型 id。省略时尝试网关默认模型;默认选择也受该 Key 的授权范围限制。": "推薦顯式指定當前目錄中的對話模型 id。省略時嘗試閘道器預設模型;預設選擇也受該 Key 的授權範圍限制。", "描述输入与输出模态,例如 text、image、video。字段缺失不表示自动支持其他文件、音频或服务端上传接口。": "描述輸入與輸出模態,例如 text、image、video。欄位缺失不表示自動支援其他檔案、音訊或服務端上傳介面。", "提供商插件": "提供商外掛", "提供商能力": "提供商能力", "提供商能力适配表": "提供商能力適配表", "搜索文档": "搜尋文件", "搜索文档、参数或接口…": "搜尋文件、參數或 API…", "收起全部": "收起全部", "收起目录": "收合目錄", "文本生成图片;JSON 请求,非流式返回 base64 或下载链接。": "文本生成圖片;JSON 請求,非流式返回 base64 或下載連結。", "文档内容": "文件內容", "文档目录": "文件目錄", "无此概念": "無此概念", "映射为思考档位与结构化输出请求;支持范围以目标模型为准。": "對映為思考檔位與結構化輸出請求;支援範圍以目標模型為準。", "未声明表示插件没有提供明确结论,不等于不支持。": "未聲明表示外掛沒有提供明確結論,不等於不支援。", "未声明表示网关本体或插件没有提供明确结论,不等于不支持。": "未宣告表示閘道本體或外掛沒有提供明確結論,不等於不支援。", "本体订阅": "本體訂閱", "本地上下文预算估算,返回 estimated=true;不是上游精确分词。": "本地上下文預算估算,返回 estimated=true;不是上游精確分詞。", "本机免鉴权模式没有启用 Key 时可调用;启用任意 Key 后,受保护接口都要携带有效 Key。公网安全模式没有配置 Key 时会拒绝受保护的 /v1 请求,并返回 503 api_key_not_configured。": "本機免鑑權模式沒有啟用 Key 時可呼叫;啟用任意 Key 後,受保護介面都要攜帶有效 Key。公網安全模式沒有配置 Key 時會拒絕受保護的 /v1 請求,並返回 503 api_key_not_configured。", "本页只说明实际提供的接口,不等于完整复刻 OpenAI / Anthropic 服务。未列出的 Files、Batch、图片 variations、服务端会话存储等端点不要假定可用。": "本頁只說明實際提供的介面,不等於完整復刻 OpenAI / Anthropic 服務。未列出的 Files、Batch、圖片 variations、服務端會話儲存等端點不要假定可用。", "本页说明对外的 /v1 接口,不是管理面板的 /api 接口。三种对话协议共用模型目录、模型映射、账号池和网关 Key,但请求与响应格式不同。": "本頁說明對外的 /v1 介面,不是管理面板的 /api 介面。三種對話協議共用模型目錄、模型對映、帳號池和閘道器 Key,但請求與響應格式不同。", "查看当前网关的客户端地址和各接口路径,一键复制后即可使用。": "查看目前閘道的用戶端位址和各 API 路徑,一鍵複製後即可使用。", "根据文字提示生成图片。请求使用 JSON,生成与编辑均只支持非流式响应。": "根據文字提示生成圖片。請求使用 JSON,生成與編輯均只支援非流式響應。", "检查网关是否可访问": "檢查閘道器是否可存取", "模型不存在、已关闭或不在 Key 授权范围,常附 model_not_found;也可能是路径错误,或临时图片下载链接已过期。": "模型不存在、已關閉或不在 Key 授權範圍,常附 model_not_found;也可能是路徑錯誤,或臨時圖片下載連結已過期。", "模型列表": "模型列表", "模型发现与健康检查": "模型發現與健康檢查", "模型清单": "模型清單", "模型清单与健康检查": "模型清單與健康檢查", "模型清单反映当前账号、模型启停与映射配置。不带 Key 时可读取公开清单;携带 Key 时必须有效,返回内容按该 Key 的授权范围过滤,无效 Key 返回 401。": "模型清單反映目前帳號、模型啟停與映射設定。不帶 Key 時可讀取公開清單;攜帶 Key 時必須有效,回傳內容依該 Key 的授權範圍篩選,無效 Key 回傳 401。", "模型清单反映当前账号、模型启停与映射配置;携带有效网关 Key 时进一步按该 Key 的授权范围过滤。不带 Key 或 Key 无效时仍可读取未按该 Key 收窄的清单。": "模型清單反映當前帳號、模型啟停與對映配置;攜帶有效閘道器 Key 時進一步按該 Key 的授權範圍過濾。不帶 Key 或 Key 無效時仍可讀取未按該 Key 收窄的清單。", "模型清单结构示例": "模型清單結構示例", "模型调用始终需要启用且可用的网关 API Key,即使只在本机使用也不能免鉴权。管理员登录会话只用于管理面板,不能代替模型调用的 Key。": "模型呼叫始終需要啟用且可用的閘道 API Key,即使只在本機使用也不能免驗證。管理員登入工作階段只用於管理面板,不能代替模型呼叫的 Key。", "每把 Key 的可用模型、可用提供商限制同样适用于生图和编辑图。模型名称使用 /v1/models 中的 id 或已配置的映射名,不要直接使用展示名称。": "每把 Key 的可用模型、可用提供商限制同樣適用於生圖和編輯圖。模型名稱使用 /v1/models 中的 id 或已配置的對映名,不要直接使用展示名稱。", "没有找到匹配的文档": "找不到符合的文件", "流式以 message_start 开始,经 content_block_start / content_block_delta / content_block_stop,最终 message_delta 与 message_stop 收尾;不要按 Chat 的 [DONE] 规则解析。": "流式以 message_start 開始,經 content_block_start / content_block_delta / content_block_stop,最終 message_delta 與 message_stop 收尾;不要按 Chat 的 [DONE] 規則解析。", "流式包含 response.created、response.output_text.delta 和最终 response.completed 等事件;错误可能以 response.failed 结束。输出预算不足时检查 incomplete 状态与 incomplete_details。": "流式包含 response.created、response.output_text.delta 和最終 response.completed 等事件;錯誤可能以 response.failed 結束。輸出預算不足時檢查 incomplete 狀態與 incomplete_details。", "流式对话请求": "流式對話請求", "流式开始后 HTTP 状态码无法再改;即使已经收到 200,也要检查流内错误、结束原因及是否正常收尾,不能把断流视为成功。": "流式開始後 HTTP 狀態碼無法再改;即使已經收到 200,也要檢查流內錯誤、結束原因及是否正常收尾,不能把斷流視為成功。", "流式用量可请求 include_usage=true;最终是否返回用量取决于上游,不应假设每个增量都有 usage。": "流式用量可請求 include_usage=true;最終是否返回用量取決於上游,不應假設每個增量都有 usage。", "清除搜索": "清除搜尋", "点击章节展开参数、示例和兼容边界;示例只供复制,不会在本页发起模型请求或消耗额度。": "點擊章節展開引數、示例和相容邊界;示例只供複製,不會在本頁發起模型請求或消耗額度。", "生图可能消耗账号额度。先使用 n=1 和较小尺寸确认能力,内容政策拒绝或结果不确定时不要自动重复提交。": "生圖可能消耗帳號額度。先使用 n=1 和較小尺寸確認能力,內容政策拒絕或結果不確定時不要自動重複提交。", "生成、编辑与对话接口共用网关 Key;完整鉴权规则、模型能力和请求示例见下方章节。": "生成、編輯與對話介面共用閘道器 Key;完整鑑權規則、模型能力和請求示例見下方章節。", "生成、编辑与对话接口共用网关 Key;鉴权规则、模型能力和请求示例可从文档目录查阅。": "生成、編輯與對話 API 共用閘道 Key;驗證規則、模型能力和請求範例可從文件目錄查閱。", "生成与编辑返回同一结构;base64 适合直接保存,URL 适合短期获取。": "生成與編輯返回同一結構;base64 適合直接儲存,URL 適合短期獲取。", "用于请求思考配置或档位,由网关映射到目标模型;不保证所有 Anthropic 原生特性在跨协议转发时完全等价。": "用於請求思考配置或檔位,由閘道器對映到目標模型;不保證所有 Anthropic 原生特性在跨協議轉發時完全等價。", "的 Key:请求带 ": "的 Key:請求帶 ", "目前小浣熊、Loomy、Antigravity、ModelScope、WorkBuddy 已接入图片生成;Loomy、Antigravity、ModelScope 与 WorkBuddy 同时接入参考图编辑,小浣熊暂不支持编辑。需要当前提供商插件包含对应能力,并且账号、模型和 Key 授权可用。": "目前小浣熊、Loomy、Antigravity、ModelScope、WorkBuddy 已接入圖片生成;Loomy、Antigravity、ModelScope 與 WorkBuddy 同時接入參考圖編輯,小浣熊暫不支援編輯。需要當前提供商外掛包含對應能力,並且帳號、模型和 Key 授權可用。", "目录声明的上下文与最大输出预算,可能省略。预算和余额不是同一概念,也不能替代上游的实际限制。": "目錄宣告的上下文與最大輸出預算,可能省略。預算和餘額不是同一概念,也不能替代上游的實際限制。", "看图与工具调用": "看圖與工具呼叫", "看图请求使用对话模型,并确认 supports_images=true。Chat 使用 text 与 image_url 内容块,图片值可为上游支持的 HTTP(S) URL 或 data URL;可用格式与大小取决于目标模型。「参考图编辑」章节的上传限制不应直接套用到所有对话模型。": "看圖請求使用對話模型,並確認 supports_images=true。Chat 使用 text 與 image_url 內容區塊,圖片值可為上游支援的 HTTP(S) URL 或 data URL;可用格式與大小取決於目標模型。「參考圖編輯」章節的上傳限制不應直接套用到所有對話模型。", "看图请求使用对话模型,并确认 supports_images=true。Chat 使用 text 与 image_url 内容块,图片值可为上游支持的 HTTP(S) URL 或 data URL;可用格式与大小取决于目标模型。下方编辑图的上传限制不应直接套用到所有对话模型。": "看圖請求使用對話模型,並確認 supports_images=true。Chat 使用 text 與 image_url 內容塊,圖片值可為上游支援的 HTTP(S) URL 或 data URL;可用格式與大小取決於目標模型。下方編輯圖的上傳限制不應直接套用到所有對話模型。", "示例仅供复制,不会在本页发起请求或消耗额度。": "範例僅供複製,不會在本頁發出請求或消耗額度。", "示例显式设置 max_retries=0,避免 SDK 对超时或 5xx 自动重新提交收费任务;timeout=300.0 仅是客户端等待示例,不会改变网关或上游的超时配置。": "示例顯式設定 max_retries=0,避免 SDK 對超時或 5xx 自動重新提交收費任務;timeout=300.0 僅是客戶端等待示例,不會改變閘道器或上游的超時配置。", "章节导航": "章節導覽", "类型 / 范围": "型別 / 範圍", "系统说明是顶层字段,不要放进 messages 的 system 角色;支持文本或 text 块数组。": "系統說明是頂層欄位,不要放進 messages 的 system 角色;支援文本或 text 塊陣列。", "系统说明,对应 Chat 的 system 消息;需要时每次请求重新携带。": "系統說明,對應 Chat 的 system 訊息;需要時每次請求重新攜帶。", "结合 HTTP 状态、错误内容与请求日志判断问题;不要盲目重试收费请求。": "結合 HTTP 狀態、錯誤內容與請求日誌判斷問題;不要盲目重試收費請求。", "编辑请求上传总大小最多 16 MiB。参考图转为 data URL 后,内联图片与最终 JSON 请求还受 14 MiB 上限;base64 约增加三分之一体积,因此多张各小于 10 MiB 也可能超限。": "編輯請求上傳總大小最多 16 MiB。參考圖轉為 data URL 後,內聯圖片與最終 JSON 請求還受 14 MiB 上限;base64 約增加三分之一體積,因此多張各小於 10 MiB 也可能超限。", "网关临时 URL 响应结构": "閘道器臨時 URL 響應結構", "网关临时下载不要求 Authorization,链接中的随机令牌就是访问凭据,任何拿到链接的人都能下载。请将链接视为敏感信息,重要结果及时保存,不要当作长期文件存储。": "閘道器臨時下載不要求 Authorization,連結中的隨機權杖就是存取憑據,任何拿到連結的人都能下載。請將連結視為敏感資訊,重要結果及時儲存,不要當作長期檔案儲存。", "网关临时图片仅保存在内存,生成后 1 小时过期,网关重启后立即失效。缓存总容量 128 MiB;缓存满时会返回错误并建议改用 b64_json。上游签名链接的有效期由提供商决定。": "閘道器臨時圖片僅儲存在記憶體,生成後 1 小時過期,閘道器重啟後立即失效。快取總容量 128 MiB;快取滿時會返回錯誤並建議改用 b64_json。上游簽名連結的有效期由提供商決定。", "网关内置的安全重试与客户端 SDK 的重试是两层独立行为。图片客户端建议关闭自动重试;即使网关已停止重试,SDK 仍可能重新提交整条请求。": "閘道器內建的安全重試與客戶端 SDK 的重試是兩層獨立行為。圖片客戶端建議關閉自動重試;即使閘道器已停止重試,SDK 仍可能重新提交整條請求。", "网关可将实际图片转换为指定文件编码。省略时保留上游图片格式;需要固定扩展名时建议显式填写。JPEG 无法保留透明通道。": "閘道器可將實際圖片轉換為指定檔案編碼。省略時保留上游圖片格式;需要固定副檔名時建議顯式填寫。JPEG 無法保留透明通道。", "网关始终无状态,响应中的 store=false。即使请求 store=true,也不会保存可供后续检索的 Responses 对象。": "閘道器始終無狀態,響應中的 store=false。即使請求 store=true,也不會儲存可供後續檢索的 Responses 物件。", "网关接受 1–10,默认 1;Antigravity 与 ModelScope 仅支持 n=1。上游返回数量不足时网关报错,不会为了凑数再次调用图片生成。": "閘道器接受 1–10,預設 1;Antigravity 與 ModelScope 僅支援 n=1。上游返回數量不足時閘道器報錯,不會為了湊數再次呼叫圖片生成。", "网关接受 1–10,默认 1;Antigravity 仅支持 n=1。上游返回数量不足时网关报错,不会为了凑数再次调用图片生成。": "閘道器接受 1–10,預設 1;Antigravity 僅支援 n=1。上游返回數量不足時閘道器報錯,不會為了湊數再次呼叫圖片生成。", "网关最多接受 16 张参考图。Antigravity 的 gemini-2.5-* 模型最多 3 张,其他当前接入的 Antigravity 图片模型最多 14 张;Loomy 还可能受上游模型限制。": "閘道器最多接受 16 張參考圖。Antigravity 的 gemini-2.5-* 模型最多 3 張,其他當前接入的 Antigravity 圖片模型最多 14 張;Loomy 還可能受上游模型限制。", "网关最多接受 16 张参考图。Antigravity 的 gemini-2.5-* 模型最多 3 张,其他当前接入的 Antigravity 图片模型最多 14 张;ModelScope 接受 1–3 张参考图;Loomy 还可能受上游模型限制。": "閘道器最多接受 16 張參考圖。Antigravity 的 gemini-2.5-* 模型最多 3 張,其他當前接入的 Antigravity 圖片模型最多 14 張;ModelScope 接受 1–3 張參考圖;Loomy 還可能受上游模型限制。", "网关需要下载或转换输出时,单张图片最多 32 MiB、边长最多 8192,并使用有界解码。请求 output_format 会按实际图片转码,而不是只修改文件扩展名。": "閘道器需要下載或轉換輸出時,單張圖片最多 32 MiB、邊長最多 8192,並使用有界解碼。請求 output_format 會按實際圖片轉碼,而不是隻修改副檔名。", "网络搜索与网页抓取的 REST 接口,使用网关 Key 鉴权;不属于 /v1 对话协议。": "網路搜尋與網頁抓取的 REST 介面,使用閘道器 Key 鑑權;不屬於 /v1 對話協議。", "能力由当前插件版本申报,表示适配支持情况,不代表账号额度或当前可用性。": "能力由目前外掛版本申報,表示適配支援情況,不代表帳號額度或目前可用性。", "能力由当前网关本体或插件版本申报,表示适配支持情况,不代表账号额度或当前可用性。": "能力由目前閘道本體或外掛版本申報,表示適配支援情況,不代表帳號額度或目前可用性。", "自定义函数工具通过 tools 声明。模型返回 tool_calls 后,客户端校验参数、执行函数,再把 assistant 工具调用和 role=tool 结果一起放入下一次 messages;tool_call_id 必须对应,不能遗漏并行调用的结果。": "自定義函式工具通過 tools 宣告。模型返回 tool_calls 後,客戶端校驗引數、執行函式,再把 assistant 工具呼叫和 role=tool 結果一起放入下一次 messages;tool_call_id 必須對應,不能遺漏並行呼叫的結果。", "表示当前目录与插件声明支持参考图编辑。编辑前检查此字段,不要仅凭模型名称包含 image 判断。": "表示當前目錄與外掛宣告支援參考圖編輯。編輯前檢查此欄位,不要僅憑模型名稱包含 image 判斷。", "表示支持图片输入,不等于支持生成图片。对话模型可用于看图;编辑模型也可能声明此字段。": "表示支援圖片輸入,不等於支援生成圖片。對話模型可用於看圖;編輯模型也可能宣告此欄位。", "表示目录条目属于生图模型。调用还需要当前插件已接入生成能力,且存在获准使用的可用账号。": "表示目錄條目屬於生圖模型。呼叫還需要當前外掛已接入生成能力,且存在獲准使用的可用帳號。", "试试接口路径、参数名或其他关键词。": "試試 API 路徑、參數名稱或其他關鍵字。", "详细接口参考": "詳細介面參考", "请求与响应示例": "請求與回應範例", "请求参数、模型能力或协议形态不支持。图片相关 code 可能为 invalid_image_input、image_generation_not_supported 或 image_editing_not_supported;修改请求后再发。": "請求引數、模型能力或協議形態不支援。圖片相關 code 可能為 invalid_image_input、image_generation_not_supported 或 image_editing_not_supported;修改請求後再發。", "请求带 ": "請求帶 ", "请求示例适用于 Bash / Git Bash。YOUR_GATEWAY_KEY、CHAT_MODEL_ID、IMAGE_MODEL_ID 和图片占位地址都需要替换;返回示例仅展示结构,能力位、Token 数量和时间戳不是当前网关的实测值。": "請求示例適用於 Bash / Git Bash。YOUR_GATEWAY_KEY、CHAT_MODEL_ID、IMAGE_MODEL_ID 和圖片佔位地址都需要替換;返回示例僅展示結構,能力位、Token 數量和時間戳不是當前閘道器的實測值。", "读取提供商能力表失败:{error}": "讀取提供商能力表失敗:{error}", "读取插件能力表失败:{error}": "讀取外掛能力表失敗:{error}", "读取获准使用的模型": "讀取獲准使用的模型", "输出 Token 上限,具体支持字段和预算以模型为准。不要同时设置冲突的上限;达到上限时 finish_reason 可能为 length。": "輸出 Token 上限,具體支援欄位和預算以模型為準。不要同時設定衝突的上限;達到上限時 finish_reason 可能為 length。", "通用对话入口,适合大多数 OpenAI 兼容客户端。": "通用對話入口,適合大多數 OpenAI 相容客戶端。", "通用错误结构示例": "通用錯誤結構示例", "通过能力字段选择正确模型;健康检查只说明网关可访问。": "通過能力欄位選擇正確模型;健康檢查只說明閘道器可存取。", "遇到“图片请求可能已消耗额度,未自动重试”或“上游已生成”等提示,先核对请求日志与上游结果。客户端超时、断线或取消不代表上游撤销任务;自动重发可能再次扣费。": "遇到“圖片請求可能已消耗額度,未自動重試”或“上游已生成”等提示,先核對請求日誌與上游結果。客戶端超時、斷線或取消不代表上游撤銷任務;自動重發可能再次扣費。", "采样参数,是否支持和有效范围由提供商与模型决定。协议兼容不代表每家上游都支持全部调参项。": "取樣引數,是否支援和有效範圍由提供商與模型決定。協議相容不代表每家上游都支援全部調參項。", "鉴权用「网关 Key」页里任一": "鑑權用「閘道器 Key」頁裡任一", "错误、限额与兼容边界": "錯誤、限額與相容邊界", "限流、额度不足或当前无可用账号窗口。能确定恢复时间时可能返回 Retry-After(秒)、reset_at(Unix 毫秒)与 reset_at_text;这些字段不是每次都有。": "限流、額度不足或當前無可用帳號視窗。能確定恢復時間時可能返回 Retry-After(秒)、reset_at(Unix 毫秒)與 reset_at_text;這些欄位不是每次都有。", "非流式响应读取 choices[].message;流式响应读取 choices[].delta。每次请求由客户端携带 messages 历史,网关不会根据上一条响应 id 自动恢复对话。": "非流式響應讀取 choices[].message;流式響應讀取 choices[].delta。每次請求由客戶端攜帶 messages 歷史,閘道器不會根據上一條響應 id 自動恢復對話。", "非流式对话响应": "非流式對話響應", "非流式对话请求": "非流式對話請求", "非流式返回 object=response、status、output 数组与 output_text。output 也可能包含 reasoning 或 function_call,不能只读取数组第一项。": "非流式返回 object=response、status、output 陣列與 output_text。output 也可能包含 reasoning 或 function_call,不能只讀取陣列第一項。", "非流式返回 type=message、content 块数组、stop_reason 与 usage。content 可能同时包含文本、思考与工具调用,应该按 type 遍历。": "非流式返回 type=message、content 塊陣列、stop_reason 與 usage。content 可能同時包含文本、思考與工具呼叫,應該按 type 遍歷。", "领取类": "領取類", "默认 b64_json,返回可直接解码的图片 base64;url 返回上游签名链接或网关临时下载链接。不是图片文件编码。": "預設 b64_json,返回可直接解碼的圖片 base64;url 返回上游簽名連結或閘道器臨時下載連結。不是圖片檔案編碼。", "默认 false,返回完整 JSON;true 返回 text/event-stream。curl 查看流式输出时添加 -N,客户端应按完整 SSE 事件解析而不是按网络分块解析。": "預設 false,返回完整 JSON;true 返回 text/event-stream。curl 檢視流式輸出時新增 -N,客戶端應按完整 SSE 事件解析而不是按網路分塊解析。", "24 小时总用量": "24 小時總用量", "24 小时整体命中率": "24 小時整體命中率", "24 小时请求数": "24 小時請求數", "30 天": "30 天", "7 天": "7 天", "API Key 分布": "API Key 分布", "Key": "Key", "Token": "Token", "Top 提供商": "Top 提供商", "Top 模型": "Top 模型", "Top 账号": "Top 帳號", "{date} · {tokens} tokens · {n} 次请求": "{date} · {tokens} tokens · {n} 次請求", "{date} · 无请求": "{date} · 無請求", "{model}:{tokens} tokens": "{model}:{tokens} tokens", "{m}月": "{m}月", "{m}月{d}日 周{wd}": "{m}月{d}日 周{wd}", "{name} · {tokens} tokens · {n} 次请求 · {pct}": "{name} · {tokens} tokens · {n} 次請求 · {pct}", "{name}:{tokens} tokens · 占 {pct}%": "{name}:{tokens} tokens · 佔 {pct}%", "{n} 个账号启用 · {m} 个限流中": "{n} 個帳號啟用 · {m} 個限流中", "{n} 个账号正在限流,转发会自动跳过它们": "{n} 個帳號正在限流,轉發會自動跳過它們", "{n} 天": "{n} 天", "{n} 家提供商": "{n} 家提供商", "{n} 次请求": "{n} 次請求", "{n} 项": "{n} 項", "{n} 项低于 {threshold}%,已合并为“其他”": "{n} 項低於 {threshold}%,已合併為“其他”", "{start} ~ {end}": "{start} ~ {end}", "{title}显示数量": "{title}顯示數量", "{tokens} tokens · 占 {pct}": "{tokens} tokens · 佔 {pct}", "…还有 {n} 个模型": "…還有 {n} 個模型", "…还有 {n} 项": "…還有 {n} 項", "一": "一", "三": "三", "二": "二", "五": "五", "仅在饼图合并,右侧列表完整保留每个项目": "僅在圓餅圖合併,右側清單完整保留每個項目", "仅调整两个饼图,右侧列表始终完整显示": "僅調整兩個圓餅圖,右側清單始終完整顯示", "仅调整这两张图的展示,所有用量仍计入总 Token,占比保持不变": "僅調整這兩張圖的展示,所有用量仍計入總 Token,佔比保持不變", "今天": "今天", "今天都签完了": "今天都簽完了", "今日签到 {done} / {total}": "今日簽到 {done} / {total}", "今日签到 {done}/{total}": "今日簽到 {done}/{total}", "今日请求": "今日請求", "全部用量": "全部用量", "六": "六", "其他 {pct} · {n} 项,仅在饼图合并": "其他 {pct} · {n} 項,僅在圓餅圖合併", "其他({n} 项)": "其他({n} 項)", "其余 {n} 项": "其餘 {n} 項", "前 {n} 名": "前 {n} 名", "前 {n} 名占全部用量 {pct}": "前 {n} 名占全部用量 {pct}", "区间共 {n} 天": "區間共 {n} 天", "区间内累计": "區間內累計", "占比低于": "佔比低於", "占输入 Token 的 {rate}": "占輸入 Token 的 {rate}", "历史明细不完整": "歷史明細不完整", "另 {n} 项": "另 {n} 項", "可用账号": "可用帳號", "右轴": "右軸", "合并只作用于饼图。低于阈值的扇区归入“其他”,右侧列表完整保留每个项目,总量和占比不变。": "合併只作用於圓餅圖。低於門檻的扇區歸入「其他」,右側清單完整保留每個項目,總量和占比不變。", "合并小项": "合併小項", "合计": "合計", "含今天在内往前数": "含今天在內往前數", "命中 {hit} / 输入 {input}": "命中 {hit} / 輸入 {input}", "命中率": "命中率", "命中率 = 缓存读取 Token / 输入 Token(promptTokens)。窗口越短越贴近「此刻」:上游把缓存读取与输入分开上报时,该比值合法地可能超过 100%,此处不夹取值、如实展示。": "命中率 = 快取讀取 Token / 輸入 Token(promptTokens)。視窗越短越貼近「此刻」:上游把快取讀取與輸入分開上報時,該比值合法地可能超過 100%,此處不夾取值、如實展示。", "命中率 {rate}(命中 {hit} / 输入 {input})": "命中率 {rate}(命中 {hit} / 輸入 {input})", "四": "四", "图表显示": "圖表顯示", "图表类型": "圖表類型", "在右侧展开“其他”查看明细": "在右側展開“其他”檢視明細", "天有调用": "天有呼叫", "失败 {n} 次": "失敗 {n} 次", "小项合并阈值": "小項合併閾值", "展开其他明细": "展開其他明細", "左轴": "左軸", "开启“合并小项”后,低于阈值的项目合并为灰色“其他”,可在右侧展开明细。合并只影响展示,总 Token 和占比不变。": "開啟“合併小項”後,低於閾值的專案合併為灰色“其他”,可在右側展開明細。合併隻影響展示,總 Token 和佔比不變。", "开始日期": "開始日期", "当前连续天数": "當前連續天數", "总 Token": "總 Token", "总 Token:{tokens}": "總 Token:{tokens}", "总 Token:{tokens}({n} 次请求)": "總 Token:{tokens}({n} 次請求)", "总请求数": "總請求數", "总量不变": "總量不變", "悬停查看完整读数与分项": "懸停查看完整讀數與分項", "成功率 {rate}": "成功率 {rate}", "成功率 {rate} · 失败 {n} 次": "成功率 {rate} · 失敗 {n} 次", "成功请求数": "成功請求數", "所选范围内暂无请求": "所選範圍內暫無請求", "所选范围内每个提供商各消耗了多少 Token,按 Token 用量从多到少排。同一个模型名可能有多家都能提供,网关按设置页「转发路由」的优先级依次尝试,所以占比也反映了实际落到谁身上。百分比按本区间的总 Token 数算(这一块只看用量,请求次数与成功率在概览卡片里)。「未知」是指那批请求没记下承载它的提供商 —— 主要是记录提供商这个功能上线之前的旧明细,其次是请求在选定上游之前就失败了(请求体非法、模型不存在、没有可用账号)。这一维与账号那一维不同:旧明细里根本没有「哪家承载」的信息(早期版本只有单一上游,但那是配置事实而非逐条记录),所以无法回算,旧数据会一直留在「未知」里;此后新产生的请求都会记上具体的提供商。": "所選範圍內每個提供商各消耗了多少 Token,按 Token 用量從多到少排。同一個模型名可能有多家都能提供,閘道器按設定頁「轉發路由」的優先順序依次嘗試,所以佔比也反映了實際落到誰身上。百分比按本區間的總 Token 數算(這一塊只看用量,請求次數與成功率在概覽卡片裡)。「未知」是指那批請求沒記下承載它的提供商 —— 主要是記錄提供商這個功能上線之前的舊明細,其次是請求在選定上游之前就失敗了(請求體非法、模型不存在、沒有可用帳號)。這一維與帳號那一維不同:舊明細里根本沒有「哪家承載」的資訊(早期版本只有單一上游,但那是配置事實而非逐條記錄),所以無法回算,舊資料會一直留在「未知」裡;此後新產生的請求都會記上具體的提供商。", "所选范围内每个提供商各消耗了多少 Token,按用量从多到少排,扇区角度即占比。同一个模型名可能有多家都能提供,网关按设置页「转发路由」的优先级依次尝试,所以占比也反映了实际落到谁身上。中心是这一维的合计(等于概览里的总 Token),右侧每行给出该提供商的 Token 用量与百分比。「未知」是指那批请求没记下承载它的提供商 —— 主要是记录提供商这个功能上线之前的旧明细,其次是请求在选定上游之前就失败了。": "所選範圍內每個提供商各消耗了多少 Token,按用量從多到少排,扇區角度即佔比。同一個模型名可能有多家都能提供,閘道器按設定頁「轉發路由」的優先順序依次嘗試,所以佔比也反映了實際落到誰身上。中心是這一維的合計(等於概覽裡的總 Token),右側每行給出該提供商的 Token 用量與百分比。「未知」是指那批請求沒記下承載它的提供商 —— 主要是記錄提供商這個功能上線之前的舊明細,其次是請求在選定上游之前就失敗了。", "所选范围内每个模型各消耗了多少 Token,按用量从多到少排,扇区角度即占比。中心是这一维的合计(等于概览里的总 Token),右侧每行给出该模型的 Token 用量与百分比。扇区内的百分比只在 ≥3% 时标出,更小的会挤成一团 —— 完整读数在右侧列表与悬停气泡里。颜色按用量排名分配:最大的那段是红色,依次往后;同一份报表里换个维度看,配色口径不变。": "所選範圍內每個模型各消耗了多少 Token,按用量從多到少排,扇區角度即佔比。中心是這一維的合計(等於概覽裡的總 Token),右側每行給出該模型的 Token 用量與百分比。扇區內的百分比只在 ≥3% 時標出,更小的會擠成一團 —— 完整讀數在右側列表與懸停氣泡裡。顏色按用量排名分配:最大的那段是紅色,依次往後;同一份報表裡換個維度看,配色口徑不變。", "所选范围内每个账号各消耗了多少 Token,按 Token 用量从多到少排。账号是比提供商更细的一维:同一家可以挂多个账号,转发时按优先级在候选链上依次尝试,所以这里反映的是「具体哪个登录态在出力」。百分比按本区间的总 Token 数算(这一块只看用量,请求次数与成功率在概览卡片里)。「未知账号」是指那批请求没有账号身份:走默认登录态转发(未配置账号列表)时会这样;这一维上线前写出的旧聚合行也没有账号明细,但它们会在升级导入旧数据时按明细自动补算回来 —— 只有明细已被手动清理掉的那几天补不回来,仍留在「未知账号」里,那是确实无从恢复的部分。": "所選範圍內每個帳號各消耗了多少 Token,按 Token 用量從多到少排。帳號是比提供商更細的一維:同一家可以掛多個帳號,轉發時按優先順序在候選鏈上依次嘗試,所以這裡反映的是「具體哪個登入態在出力」。百分比按本區間的總 Token 數算(這一塊只看用量,請求次數與成功率在概覽卡片裡)。「未知帳號」是指那批請求沒有帳號身份:走預設登入態轉發(未配置帳號列表)時會這樣;這一維上線前寫出的舊聚合行也沒有帳號明細,但它們會在升級匯入舊資料時按明細自動補算回來 —— 只有明細已被手動清理掉的那幾天補不回來,仍留在「未知帳號」裡,那是確實無從恢復的部分。", "所选范围内还没有提供商用量": "所選範圍內還沒有提供商用量", "所选范围内还没有模型用量": "所選範圍內還沒有模型用量", "所选范围内还没有请求记录": "所選範圍內還沒有請求記錄", "所选范围内还没有账号用量": "所選範圍內還沒有帳號用量", "折线": "折線", "报表时间范围": "報表時間範圍", "按 Token 用量从多到少排列,扇区角度表示占比。占比不低于 3% 的扇区显示百分比,所有项目的完整读数保留在右侧列表与悬停提示中。": "按 Token 用量從多到少排列,扇區角度表示占比。占比不低於 3% 的扇區顯示百分比,所有項目的完整讀數保留在右側清單與懸停提示中。", "按 Token 统计": "按 Token 統計", "按天 Token 用量": "按天 Token 用量", "按天 Token 趋势": "按天 Token 趨勢", "按日统计": "按日統計", "按本地整点统计": "按本地整點統計", "按本地整点,无请求的整点不标注": "按本地整點,無請求的整點不標註", "按每条请求的软件标识和识别规则统计,不依赖 API Key,也不代表设备或用户数。待确认的软件统一计入“其它”;规则修改不重新归类历史请求。": "按每條請求的軟體標識和識別規則統計,不依賴 API Key,也不代表裝置或使用者數。待確認的軟體統一計入“其它”;規則修改不重新歸類歷史請求。", "提供商用": "提供商用", "提供商用占比": "提供商用佔比", "提供商用量": "提供商用量", "提供商用量占比": "提供商用量佔比", "提供商:{text}": "提供商:{text}", "收起其他明细": "收起其他明細", "方格为本地自然日,无请求显示为空槽": "方格為本地自然日,無請求顯示為空槽", "无请求的整点按 0% 计,但不写读数": "無請求的整點按 0% 計,但不寫讀數", "日": "日", "日均": "日均", "日均 {value}": "日均 {value}", "时间范围。「今天」是本地自然日今天 0 点到现在;「昨天」是昨天一整天(0 点到 24 点);「近 7 天 / 近 30 天」含今天在内往前数,即今天与之前的 6 / 29 天,不是「不含今天的 7 / 30 天」。": "時間範圍。「今天」是本地自然日今天 0 點到現在;「昨天」是昨天一整天(0 點到 24 點);「近 7 天 / 近 30 天」含今天在內往前數,即今天與之前的 6 / 29 天,不是「不含今天的 7 / 30 天」。", "昨天": "昨天", "暂无可签到账号": "暫無可簽到帳號", "暂无热力图数据": "暫無熱力圖資料", "暂无缓存趋势数据": "暫無快取趨勢資料", "暂无趋势数据": "暫無趨勢資料", "最近一次请求使用的模型": "最近一次請求使用的模型", "最近整点命中率": "最近整點命中率", "最近请求": "最近請求", "最近请求 {n} 条": "最近請求 {n} 條", "未知模型": "未知模型", "未配置上游": "未配置上游", "本月": "本月", "查看用量、调用来源与缓存表现": "查看用量、呼叫來源與快取表現", "柱状": "長條", "模型与提供商共用此设置": "模型與提供商共用此設定", "模型用量": "模型用量", "模型用量占比": "模型用量佔比", "每天的总 Token 用量(输入 + 输出)。柱顶标出当天的读数;区间很长、柱子挤到放不下时只标最高的那几天,其余悬停柱子即可读到。": "每天的總 Token 用量(輸入 + 輸出)。柱頂標出當天的讀數;區間很長、柱子擠到放不下時只標最高的那幾天,其餘懸停柱子即可讀到。", "活跃": "活躍", "活跃天数": "活躍天數", "活跃热力图": "活躍熱力圖", "用量分布": "用量分布", "用量趋势": "用量趨勢", "的项目合并为“其他”": "的專案合併為“其他”", "筛选统计项目": "篩選統計項目", "管理": "管理", "累计": "累計", "累计请求 {n} 条": "累計請求 {n} 條", "结束日期": "結束日期", "结束日期(含当天)": "結束日期(含當天)", "统计区间加载中": "統計區間載入中", "统计报表": "統計報表", "统计概览": "統計概覽", "缓存命中率": "快取命中率", "缓存读取属于输入读数,不额外计入总 Token": "快取讀取屬於輸入讀數,不額外計入總 Token", "缓存读取属于输入,不重复计入总 Token": "快取讀取屬於輸入,不重複計入總 Token", "自定义区间": "自定義區間", "请求日志只展示仍保留的明细;清理明细不会减少日报中的历史用量。": "請求日誌只展示仍保留的明細;清理明細不會減少日報中的歷史用量。", "读取 {hit} ÷ 输入 {input}": "讀取 {hit} ÷ 輸入 {input}", "读取报表失败:{error}": "讀取報表失敗:{error}", "账号分布": "帳號分佈", "账号用量": "帳號用量", "起始日期(含当天)": "起始日期(含當天)", "输入": "輸入", "输入 + 输出": "輸入 + 輸出", "输入 Token": "輸入 Token", "输出": "輸出", "输出 Token": "輸出 Token", "运行中": "執行中", "近 1 小时": "近 1 小時", "近 10 分钟": "近 10 分鐘", "近 24 小时": "近 24 小時", "近 24 小时缓存命中率与总 Token 趋势": "近 24 小時快取命中率與總 Token 趨勢", "近 24 小时缓存命中率趋势": "近 24 小時快取命中率趨勢", "近 30 天": "近 30 天", "近 365 天 · 不随上方日期筛选变化": "近 365 天 · 不隨上方日期篩選變化", "近 365 天活跃热力图": "近 365 天活躍熱力圖", "近 365 天,按天 Token 用量着色(档位按本窗口峰值自动定)": "近 365 天,按天 Token 用量著色(檔位按本視窗峰值自動定)", "近 7 天": "近 7 天", "还有 {n} 个待签": "還有 {n} 個待籤", "还没有添加账号": "還沒有新增帳號", "还没有请求记录": "還沒有請求記錄", "连续天数": "連續天數", "饼图不合并小项": "圓餅圖不合併小項", "饼图小于 {threshold}% 归入其他": "圓餅圖小於 {threshold}% 歸入其他", "饼图显示": "圓餅圖顯示", " · ": " · ", " · {n} 个账号今日重试已用完": " · {n} 個帳號今日重試已用完", " · {n} 个账号等窗口重试": " · {n} 個帳號等視窗重試", " · 上次执行:{time}": " · 上次執行:{time}", " · 补签 {time}": " · 補籤 {time}", " · 补签在主签到区间结束后执行": " · 補簽在主簽到區間結束後執行", " · 连登 {n} 天": " · 連登 {n} 天", "AgentArts 服务声明": "AgentArts 服務聲明", "MiniMax Code 国内版每日签到 · 同地区签名账号接口读取七日面板并领取今日积分;已领取不重复领,奖励以官方返回为准": "MiniMax Code 國內版每日簽到 · 同地區簽名帳號介面讀取七日面板並領取今日點數;已領取不重複領取,獎勵以官方回傳為準", "MiniMax Code 国际版每日签到 · 同地区签名账号接口读取七日面板并领取今日积分;已领取不重复领,奖励以官方返回为准": "MiniMax Code 國際版每日簽到 · 同地區簽名帳號介面讀取七日面板並領取今日點數;已領取不重複領取,獎勵以官方回傳為準", "QuWork 每日奖励:先查询领取状态,再领取并回查;结果不明时不重复提交。": "QuWork 每日獎勵:先查詢領取狀態,再領取並回查;結果不明時不重複提交。", "SOLO 的 checkin_credits 领取 · 按自然日 0 点刷新": "SOLO 的 checkin_credits 領取 · 按自然日 0 點重新整理", "Sonus 等限时活动 · 资格、额度和有效期以官方返回为准": "Sonus 等限時活動 · 資格、額度和有效期以官方回傳為準", "UMID 组件安装失败:{error}": "UMID 元件安裝失敗:{error}", "UMID 组件已安装,可重新签到。": "UMID 元件已安裝,可重新簽到。", "UMID 组件管理接口不可用,请刷新页面或更新网关。": "UMID 元件管理介面無法使用,請重新整理頁面或更新閘道。", "WorkBuddy 国内版 · {n} 个账号": "WorkBuddy 國內版 · {n} 個帳號", "WorkBuddy 国内版 · 查询任务树后一键点亮 / 领奖 · 含开学季与猫猫旅行 · 点击行展开明细": "WorkBuddy 國內版 · 查詢任務樹後一鍵點亮/領獎 · 含開學季與貓貓旅行 · 點擊行展開明細", "WorkBuddy 国际版保活模型,按顺序回退": "WorkBuddy 國際版保活模型,按順序回退", "WorkBuddy 国际版日活任务的免费模型 · 全局一份,与条目无关": "WorkBuddy 國際版日活任務的免費模型 · 全域一份,與條目無關", "ZCode 自动领取验证": "ZCode 自動領取驗證", "{date}(每天 {time})": "{date}(每天 {time})", "{done} / {total} 个账号已签": "{done} / {total} 個帳號已簽", "{done}/{total} 已签": "{done}/{total} 已籤", "{label} ×{count}({reason})": "{label} ×{count}({reason})", "{name}定时补签开关": "{name}定時補籤開關", "{name}签到时间": "{name}簽到時間", "{n} 个平台": "{n} 個平臺", "{n} 个平台 · {groups} 组签到时间": "{n} 個平臺 · {groups} 組簽到時間", "{n} 个计划 · 北京时间 UTC+8": "{n} 個計劃 · 北京時間 UTC+8", "{n} 个账号今天的重试次数已用完": "{n} 個帳號今天的重試次數已用完", "{n} 个账号等待窗口或活动": "{n} 個帳號等待視窗或活動", "{n} 积分": "{n} 積分", "{n} 项可完成": "{n} 項可完成", "{n} 项待领": "{n} 項待領", "{points} 积分": "{points} 積分", "{total} 个账号 · {done} 个已签": "{total} 個帳號 · {done} 個已籤", "{total} 账号 · {done} 已签": "{total} 帳號 · {done} 已籤", "{total} 项任务 · {pending} 项可完成": "{total} 項任務 · {pending} 項可完成", "✅ UMID 组件已安装,下轮签到即可领取国际版积分": "✅ UMID 元件已安裝,下輪簽到即可領取國際版積分", "✅ {message}": "✅ {message}", "✅ 定时签到已开启": "✅ 定時簽到已開啟", "✅ 开学季任务执行完成": "✅ 開學季任務執行完成", "✅ 成长任务执行完成:积分 +{credit} 能量 +{energy}": "✅ 成長任務執行完成:積分 +{credit} 能量 +{energy}", "✅ 新手福利领取完成": "✅ 新手福利領取完成", "✅ 新手福利领取完成,累计 {n} 积分": "✅ 新手福利領取完成,累計 {n} 積分", "✅ 签到完成:{succeeded}/{total} 个账号成功领取{active}": "✅ 簽到完成:{succeeded}/{total} 個帳號成功領取{active}", "「保活模型链」是 WorkBuddy 国际版领日活时用来保活的免费模型,按顺序逐个尝试、 第一个成功即止;清空提交恢复缺省({defaults})。 当天去重 + 幂等领取:重复执行只会拿到「已领取」,不会重复加分。": "「保活模型鏈」是 WorkBuddy 國際版領日活時用來保活的免費模型,按順序逐個嘗試、 第一個成功即止;清空提交恢復預設({defaults})。 當天去重 + 冪等領取:重複執行只會拿到「已領取」,不會重複加分。", "「保活模型链」是 WorkBuddy 国际版领日活时用来保活的免费模型,按顺序逐个尝试、 第一个成功即止;清空清单并保存 = 恢复缺省链(当前缺省:{defaults})。 当天去重 + 幂等领取:重复执行只会拿到「已领取」,不会重复加分。": "「保活模型鏈」是 WorkBuddy 國際版領日活時用來保活的免費模型,按順序逐個嘗試、 第一個成功即止;清空清單並儲存 = 恢復預設鏈(當前預設:{defaults})。 當天去重 + 冪等領取:重複執行只會拿到「已領取」,不會重複加分。", "「免费领积分」的每日任务 · 逐个领取": "「免費領積分」的每日任務 · 逐個領取", "一次性福利 · 已领取状态保存在网关,领完无需重复查询 · 点击行展开任务清单": "一次性福利 · 已領取狀態儲存在閘道,領完無需重複查詢 · 點擊行展開任務清單", "一次性福利 · 签到后自动查询并领取,领完记在本机不再查上游 · 点击行展开任务清单": "一次性福利 · 簽到後自動查詢並領取,領完記在本機不再查上游 · 點擊行展開任務清單", "一次性福利已全部结清": "一次性福利已全部結清", "一次性福利已结清": "一次性福利已結清", "一次性福利已结清,无需重复查询": "一次性福利已結清,無需重複查詢", "一次领当天全部奖励(每日签到 + 新人礼) · 幂等由上游保证": "一次領當天全部獎勵(每日簽到 + 新人禮) · 冪等由上游保證", "一趟推进一步,与签到排程互相独立": "一趟推進一步,與簽到排程互相獨立", "一键安装组件": "一鍵安裝元件", "一键完成": "一鍵完成", "一键领取({n})": "一鍵領取({n})", "上一轮({time}):{n} 个动作,+{credit} 积分": "上一輪({time}):{n} 個動作,+{credit} 積分", "上次 {time}": "上次 {time}", "上次执行:{line}": "上次執行:{line}", "上次执行:{time}": "上次執行:{time}", "上次签到时间": "上次簽到時間", "上次领取 {time} · 领取需通过滑块验证码": "上次領取 {time} · 領取需通過滑塊驗證碼", "上游窗口不同的家各自定时,留空 = 用内置专属时刻(没有就跟上面的每天时刻)": "上游視窗不同的家各自定時,留空 = 用內建專屬時刻(沒有就跟上面的每天時刻)", "下一账号:{time}": "下一帳號:{time}", "下次 {date}": "下次 {date}", "下次 {date} · 点此管理条目": "下次 {date} · 點此管理條目", "下次 {time}": "下次 {time}", "下次执行:{time}": "下次執行:{time}", "下次检查:{time}": "下次檢查:{time}", "下次自动执行": "下次自動執行", "不参与每日签到": "不參與每日簽到", "不参与每日签到:{list}。CodeArts 的一次性奖励在下方「新手福利」,它与 ZCode 的每日/套餐福利领取见「活动福利」。": "不參與每日簽到:{list}。CodeArts 的一次性獎勵在下方「新手福利」,它與 ZCode 的每日/套餐福利領取見「活動福利」。", "不参与每日签到:{list}。CodeArts 的一次性奖励在下方「新手福利」,它的每日福利就在上方「每日签到」里;ZCode 的套餐领取见「活动福利」。": "不參與每日簽到:{list}。CodeArts 的一次性獎勵在下方「新手福利」,它的每日福利就在上方「每日簽到」裡;ZCode 的套餐領取見「活動福利」。", "不参与签到": "不參與簽到", "不可领": "不可領", "不自动重试等待中的活动": "不自動重試等待中的活動", "不适用": "不適用", "与国内版同一套任务接口 · 站点不同": "與國內版同一套任務介面 · 站點不同", "与国内版同一套链路 · 站点不同、令牌不通用": "與國內版同一套鏈路 · 站點不同、權杖不通用", "与定时补签不同,仅处理窗口未开或活动暂未下发。": "與定時補籤不同,僅處理視窗未開或活動暫未下發。", "与新人积分独立,不购买付费套餐、不自动续费": "與新人積分獨立,不購買付費方案、不自動續費", "专属或自定义时间作为区间起点,沿用默认区间长度;每天重新随机,重启不改变当天安排。": "專屬或自定義時間作為區間起點,沿用預設區間長度;每天重新隨機,重啟不改變當天安排。", "个账号不参与": "個帳號不參與", "主签到区间结束后等待 {n} 分钟": "主簽到區間結束後等待 {n} 分鐘", "主签到后等待 {n} 分钟": "主簽到後等待 {n} 分鐘", "主签到后等待(分钟)": "主簽到後等待(分鐘)", "主签到已执行": "主簽到已執行", "主签到已执行不等于每个账号都已领取成功;账号结果请查看签到记录。": "主簽到已執行不等於每個帳號都已領取成功;帳號結果請檢視簽到記錄。", "仅处理窗口未开或活动暂未下发的账号,不对所有错误反复执行。": "僅處理視窗未開或活動暫未下發的帳號,不對所有錯誤反覆執行。", "仅开通官方报价为 0 元的个人体验套餐,固定关闭自动续费;奖励另行领取": "僅開通官方報價為 0 元的個人體驗方案,固定關閉自動續費;獎勵另行領取", "仅提交你填写的权益,不购买套餐;兑换码激活可能需要原客户端的设备标识。": "僅提交你填寫的權益,不購買套餐;兌換碼啟用可能需要原用戶端的裝置識別。", "今天 · 北京时间自然日": "今天 · 北京時間自然日", "今天不再自动重试,明天自动重置。要现在再试一次,用签到计划里的「立即执行」。": "今天不再自動重試,明天自動重置。要現在再試一次,用簽到計劃裡的「立即執行」。", "今天已执行:{list}": "今天已執行:{list}", "今天已执行:{times}": "今天已執行:{times}", "今天已领": "今天已領", "今天已领 {n} 份": "今天已領 {n} 份", "今天已领取 {n} 份": "今天已領取 {n} 份", "今天已领取但读数尚未同步:{plans}": "今天已領取但讀數尚未同步:{plans}", "今天未领": "今天未領", "今天未领 · 上次领取 {time}": "今天未領 · 上次領取 {time}", "今天没有需要签到的账号": "今天沒有需要簽到的帳號", "今天的账号都签完了。": "今天的帳號都簽完了。", "今天还没有账号签到,切到「全部」看看哪些还没签。": "今天還沒有帳號簽到,切到「全部」看看哪些還沒簽。", "今天还没有账号领到过,切到「全部」看看还能领什么。": "今天還沒有帳號領到過,切到「全部」看看還能領什麼。", "今天还没有领取": "今天還沒有領取", "今天(北京时间 {day})已领取 · 官方确认到账 {n} 项 · 明天可再领": "今天(北京時間 {day})已領取 · 官方確認到賬 {n} 項 · 明天可再領", "今日主签到": "今日主簽到", "今日已执行": "今日已執行", "今日已派出": "今日已派出", "今日已签": "今日已籤", "今日已领取": "今日已領取", "今日已领取豆包工作签到奖励,已由官方确认": "今日已領取豆包工作簽到獎勵,已由官方確認", "今日签到": "今日簽到", "今日签到任务尚未满足领取条件": "今日簽到任務尚未滿足領取條件", "今日签到进度": "今日簽到進度", "从未签到": "從未簽到", "从清单里移除": "從清單裡移除", "体验套餐": "體驗套餐", "例如:每日自动签到": "例如:每日自動簽到", "保存计划": "儲存計劃", "保活": "保活", "保活 + 领取": "保活 + 領取", "保活 API Key 已保存": "保活 API Key 已儲存", "保活 {n}": "保活 {n}", "保活+领取": "保活+領取", "保活中…": "保活中…", "保活成功": "保活成功", "保活模型链": "保活模型鏈", "保活模型链为全局配置,猫猫旅行有独立的开关与时刻。": "保活模型鏈為全域配置,貓貓旅行有獨立的開關與時刻。", "先创建签到计划,再为它设置定时补签。": "先建立簽到計劃,再為它設定定時補籤。", "先查询活动,再选择要领取的奖励;不会购买或订阅套餐": "先查詢活動,再選擇要領取的獎勵;不會購買或訂閱方案", "免费体验套餐": "免費體驗方案", "免费套餐已开通并确认生效": "免費方案已開通並確認生效", "兑换中…": "兌換中…", "兑换权益": "兌換權益", "兑换结果待确认,请到官方客户端核对;不会重复提交": "兌換結果待確認,請到官方用戶端核對;不會重複提交", "兑换请求未得到确认,请到官方客户端核对;不要重复提交": "兌換請求未獲確認,請到官方用戶端核對;不要重複提交", "全选": "全選", "全部 {n} 家": "全部 {n} 家", "全部完成": "全部完成", "全部时间": "全部時間", "全部查询": "全部查詢", "全部签到": "全部簽到", "全部类型": "全部類型", "全部结果": "全部結果", "全部账号均可签到": "全部帳號均可簽到", "全部领取": "全部領取", "共 {n} 条": "共 {n} 條", "关着:不自动巡检(仍可手动巡检)": "關著:不自動巡檢(仍可手動巡檢)", "关着:所有条目都不执行": "關著:所有條目都不執行", "关闭活动窗口重试不会关闭定时补签。插件提供下次重试时刻时,以插件返回的时间为准。": "關閉活動視窗重試不會關閉定時補籤。外掛提供下次重試時刻時,以外掛返回的時間為準。", "其他自动任务": "其他自動任務", "凭据不可用": "憑據不可用", "凭证不可用": "憑證無法使用", "凭证需刷新": "憑證需更新", "切换任务后,左侧只保留有账号的提供商": "切換任務後,左側只保留有帳號的提供商", "删除失败:{error}": "刪除失敗:{error}", "删除定时条目": "刪除定時條目", "删除定时签到条目": "刪除定時簽到條目", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活并在网页通道建会话点亮日活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;CodeArts 领当日的运营福利(领取 → 确认 → 回读核实,自动执行受每天 6 次 / 间隔 10 分钟的写请求限流);OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "到點後自動簽到勾選提供商的可用帳號(WorkBuddy 國內版走每日簽到介面,國際版走每日活躍任務:探測活動、領日活獎勵、再用免費模型保活並在網頁通道建會話點亮日活;小浣熊走桌面版每日積分鏈路;AutoClaw 走官方客戶端的每日簽到任務;Qoder 中國版走活動領取,沒被下發活動的帳號會得到中性提示;Qoder 國際版要先帶裝置風控身份(本機 Qoder 客戶端 / qodercli 的 UMID 元件生成)才能看到「每日 100 Credits」活動,缺元件時會得到明確的說明而不是報錯;Trae 領 SOLO 的每日簽到積分(按自然日 0 點重置),上游沒對該帳號開活動、或憑據裡沒有裝置號時得到的是「未領取 + 具體原因」而不是報錯;Loomy 每天替帳號打一次首次登入積分;KukuAI 領「免費領積分」的每日任務;CodeArts 領當日的運營福利(領取 → 確認 → 回讀核實,自動執行受每天 6 次 / 間隔 10 分鐘的寫請求限流);OfficeAce 果辦一次領當天全部獎勵(每日簽到 + 新人禮))。錯過時點開機後會自動補籤,不會因為當時沒開機而漏掉。各家簽到介面都是冪等的,重複執行不會重複領取。", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;CodeArts 领当日的运营福利(领取 → 确认 → 回读核实,自动执行受每天 6 次 / 间隔 10 分钟的写请求限流);OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "到點後自動簽到勾選提供商的可用帳號(WorkBuddy 國內版走每日簽到介面,國際版走每日活躍任務:探測活動、領日活獎勵、再用免費模型保活;小浣熊走桌面版每日積分鏈路;AutoClaw 走官方客戶端的每日簽到任務;Qoder 中國版走活動領取,沒被下發活動的帳號會得到中性提示;Qoder 國際版要先帶裝置風控身份(本機 Qoder 客戶端 / qodercli 的 UMID 元件生成)才能看到「每日 100 Credits」活動,缺元件時會得到明確的說明而不是報錯;Trae 領 SOLO 的每日簽到積分(按自然日 0 點重置),上游沒對該帳號開活動、或憑據裡沒有裝置號時得到的是「未領取 + 具體原因」而不是報錯;Loomy 每天替帳號打一次首次登入積分;KukuAI 領「免費領積分」的每日任務;CodeArts 領當日的運營福利(領取 → 確認 → 回讀核實,自動執行受每天 6 次 / 間隔 10 分鐘的寫請求限流);OfficeAce 果辦一次領當天全部獎勵(每日簽到 + 新人禮))。錯過時點開機後會自動補籤,不會因為當時沒開機而漏掉。各家簽到介面都是冪等的,重複執行不會重複領取。", "到点后自动签到勾选提供商的可用账号(WorkBuddy 国内版走每日签到接口,国际版走每日活跃任务:探测活动、领日活奖励、再用免费模型保活;小浣熊走桌面端每日积分链路;AutoClaw 走官方客户端的每日签到任务;Qoder 中国版走活动领取,没被下发活动的账号会得到中性提示;Qoder 国际版要先带设备风控身份(本机 Qoder 客户端 / qodercli 的 UMID 组件生成)才能看到「每日 100 Credits」活动,缺组件时会得到明确的说明而不是报错;Trae 领 SOLO 的每日签到积分(按自然日 0 点重置),上游没对该账号开活动、或凭据里没有设备号时得到的是「未领取 + 具体原因」而不是报错;Loomy 每天替账号打一次首次登录积分;KukuAI 领「免费领积分」的每日任务;OfficeAce 果办一次领当天全部奖励(每日签到 + 新人礼))。错过时点开机后会自动补签,不会因为当时没开机而漏掉。各家签到接口都是幂等的,重复执行不会重复领取。": "到點後自動簽到勾選提供商的可用帳號(WorkBuddy 國內版走每日簽到介面,國際版走每日活躍任務:探測活動、領日活獎勵、再用免費模型保活;小浣熊走桌面版每日積分鏈路;AutoClaw 走官方客戶端的每日簽到任務;Qoder 中國版走活動領取,沒被下發活動的帳號會得到中性提示;Qoder 國際版要先帶裝置風控身份(本機 Qoder 客戶端 / qodercli 的 UMID 元件生成)才能看到「每日 100 Credits」活動,缺元件時會得到明確的說明而不是報錯;Trae 領 SOLO 的每日簽到積分(按自然日 0 點重置),上游沒對該帳號開活動、或憑據裡沒有裝置號時得到的是「未領取 + 具體原因」而不是報錯;Loomy 每天替帳號打一次首次登入積分;KukuAI 領「免費領積分」的每日任務;OfficeAce 果辦一次領當天全部獎勵(每日簽到 + 新人禮))。錯過時點開機後會自動補籤,不會因為當時沒開機而漏掉。各家簽到介面都是冪等的,重複執行不會重複領取。", "到点待执行": "到點待執行", "到点时逐个签到,已勾 {n} / {total} 家": "到點時逐個簽到,已勾 {n} / {total} 家", "北京时间 · 已启用 {n} 个签到计划": "北京時間 · 已啟用 {n} 個簽到計劃", "北京时间 · 每天重复 · 随设置更新": "北京時間 · 每天重複 · 隨設定更新", "北京时间 · 逗号分隔 · 最多 6 条 · 到点后最多晚 30 秒执行;错过时点开机后会补跑一轮。": "北京時間 · 逗號分隔 · 最多 6 條 · 到點後最多晚 30 秒執行;錯過時點開機後會補跑一輪。", "北京时间 · 错过区间会补跑未执行账号,重启保留当天安排;任务在网关执行,关闭手机不影响排程。": "北京時間 · 錯過區間會補跑未執行帳號,重啟保留當天安排;任務在閘道器執行,關閉手機不影響排程。", "北京时间 · 错过时点开机后会自动补签": "北京時間 · 錯過時點開機後會自動補籤", "北京时间 · 错过时点开机后会自动补签。任务在网关执行,关闭手机不影响排程。": "北京時間 · 錯過時點開機後會自動補籤。任務在閘道器執行,關閉手機不影響排程。", "区间内陆续签到": "區間內陸續簽到", "区间结束后等待(分钟)": "區間結束後等待(分鐘)", "单账号签到不受范围限制": "單帳號簽到不受範圍限制", "原套餐已到期或冻结,请在官方客户端处理;这里不会续费或变更套餐": "原方案已到期或凍結,請在官方用戶端處理;這裡不會續費或變更方案", "去插件页安装签到能力": "去外掛頁安裝簽到能力", "去领取": "去領取", "发放中": "發放中", "发放失败": "發放失敗", "取消验证": "取消驗證", "另有 {n} 个账号不参与": "另有 {n} 個帳號不參與", "另有 {n} 个账号不参与每日签到": "另有 {n} 個帳號不參與每日簽到", "只列当前任务里有账号的提供商。": "只列出目前任務裡有帳號的提供商。", "只重试这些账号,不会重签整个计划。具体原因见签到记录。": "只重試這些帳號,不會重籤整個計劃。具體原因見簽到記錄。", "只领取已完成任务的奖励(幂等,重复点不会重复入账)": "只領取已完成任務的獎勵(冪等,重複點不會重複入帳)", "可使用管理员凭据调用:": "可使用管理員憑證呼叫:", "可完成": "可完成", "可派出": "可派出", "可选 · 缺省显示时刻": "可選 · 預設顯示時刻", "可领": "可領", "可领取 {n} 项": "可領取 {n} 項", "可领奖": "可領獎", "各家区间起点": "各家區間起點", "各家时刻": "各家時刻", "同时控制定时签到、定时补签和活动窗口重试;猫猫旅行独立运行。": "同時控制定時簽到、定時補籤和活動視窗重試;貓貓旅行獨立執行。", "名称(可选)": "名稱(可選)", "后端未返回 UMID 组件安装结果": "後端未傳回 UMID 元件安裝結果", "后端未返回 UMID 组件状态": "後端未傳回 UMID 元件狀態", "后端未返回定时签到数据": "後端未返回定時簽到資料", "后端未返回巡检结果": "後端未返回巡檢結果", "后端未返回新手福利数据": "後端未返回新手福利資料", "后端未返回有效的套餐状态": "後端未回傳有效的方案狀態", "后端未返回权益兑换结果": "後端未回傳權益兌換結果", "后端未返回活动福利数据": "後端未回傳活動福利資料", "后端未返回签到中心数据": "後端未返回簽到中心資料", "启用的条目按各自时刻执行": "啟用的條目按各自時刻執行", "启用的计划在各自区间内随机签到": "啟用的計劃在各自區間內隨機簽到", "启用签到计划 {name}": "啟用簽到計劃 {name}", "国际版签到需要 UMID 组件生成设备风控身份(本机未检测到)。": "國際版簽到需要 UMID 元件生成裝置風控身份(本機未檢測到)。", "在桌面端设置": "在桌面版設定", "在网关安装组件": "在閘道器安裝元件", "在途": "在途", "基本设置": "基本設定", "填入缺省链": "填入預設鏈", "填写你已有的兑换码或订单号": "填寫你已有的兌換碼或訂單號", "填好时刻与签到范围后点「保存」;名称可以留空(界面显示时刻)": "填好時刻與簽到範圍後點「儲存」;名稱可以留空(介面顯示時刻)", "失败 {n}": "失敗 {n}", "奖励与权益 · 资格、额度和有效期以官方返回为准": "獎勵與權益 · 資格、額度和有效期以官方回傳為準", "套餐已冻结": "方案已凍結", "套餐已到期": "方案已到期", "套餐已开通,无需重复操作": "方案已開通,無需重複操作", "套餐明细": "套餐明細", "套餐明细 — {name}": "套餐明細 — {name}", "套餐查询凭证已过期,请先到账号页刷新凭证;此查询不会自动续期": "方案查詢憑證已過期,請先到帳號頁更新憑證;此查詢不會自動續期", "套餐领取": "套餐領取", "安装 Qoder 客户端或 qodercli 后即可(无需重启网关)。": "安裝 Qoder 客戶端或 qodercli 後即可(無需重啟閘道器)。", "安装中…": "安裝中…", "安装后仍未检测到 UMID 组件,请重新检查。": "安裝後仍未偵測到 UMID 元件,請重新檢查。", "安装插件并添加账号后,支持的签到与福利会自动显示": "安裝外掛並新增帳號後,支援的簽到與福利會自動顯示", "官方客户端的每日签到任务": "官方客戶端的每日簽到任務", "官方拒绝套餐查询,请检查账号授权;这不一定表示 Token 已过期": "官方拒絕方案查詢,請檢查帳號授權;這不一定表示 Token 已過期", "官方显示自动续费已开启,请到官方客户端检查": "官方顯示自動續費已開啟,請到官方用戶端檢查", "官方未返回明确的套餐状态,暂不能开通": "官方未回傳明確的方案狀態,暫時無法開通", "定时签到": "定時簽到", "定时签到和定时补签分开管理。补签沿用对应签到计划的平台范围,不重复领取已完成的账号。": "定時簽到和定時補籤分開管理。補籤沿用對應簽到計劃的平臺範圍,不重複領取已完成的帳號。", "定时签到已关闭": "定時簽到已關閉", "定时签到总开关": "定時簽到總開關", "定时补签": "定時補籤", "实际发放:{time}": "實際發放:{time}", "实际时间由网关计算,晚窗口的平台会顺延补签;只处理当天未签到账号。": "實際時間由閘道器計算,晚視窗的平臺會順延補籤;只處理當天未簽到帳號。", "实际签到安排": "實際簽到安排", "实际补签": "實際補籤", "实际补签取「主签到时间加等待间隔」与「补签不早于」中较晚的时刻。": "實際補籤取「主簽到時間加等待間隔」與「補籤不早於」中較晚的時刻。", "对应主签到:{times}": "對應主簽到:{times}", "对应签到计划 · 沿用 {n} 个平台范围,只补未签到账号": "對應簽到計劃 · 沿用 {n} 個平臺範圍,只補未簽到帳號", "对应签到计划:{name}": "對應簽到計劃:{name}", "尚未开始": "尚未開始", "尚未开通套餐,可开通免费体验套餐": "尚未開通方案,可開通免費體驗方案", "尚未执行": "尚未執行", "尚未查询": "尚未查詢", "尚未查询任务状态": "尚未查詢任務狀態", "尚未查询活动": "尚未查詢活動", "尝试领取": "嘗試領取", "展开": "展開", "巡检一次": "巡檢一次", "巡检中…": "巡檢中…", "巡检失败:{reason}": "巡檢失敗:{reason}", "已保存:{label}": "已儲存:{label}", "已保存:保活模型链": "已儲存:保活模型鏈", "已保存:定时条目": "已儲存:定時條目", "已保存:猫猫旅行排程": "已儲存:貓貓旅行排程", "已全部领取": "已全部領取", "已删除 {n} 条签到记录": "已刪除 {n} 條簽到記錄", "已删除定时条目": "已刪除定時條目", "已发放": "已發放", "已完成活跃上报(连登已点亮),但活动未开启(本次没有可领的奖励)": "已完成活躍上報(連登已點亮),但活動未開啟(本次沒有可領的獎勵)", "已就绪": "已就緒", "已开始批量签到": "已開始批次簽到", "已开通": "已開通", "已得 {earned} / {total} 积分": "已得 {earned} / {total} 積分", "已执行 {n} / {total} 个平台": "已執行 {n} / {total} 個平臺", "已执行 {n} / {total} 个账号": "已執行 {n} / {total} 個帳號", "已抽 {n} 次": "已抽 {n} 次", "已提交「{label}」的签到": "已提交「{label}」的簽到", "已暂停": "已暫停", "已有结果 {checked} / 共 {total} 个账号": "已有結果 {checked} / 共 {total} 個帳號", "已有结果 {checked} / 共 {total} 个账号 · {pending} 项待领": "已有結果 {checked} / 共 {total} 個帳號 · {pending} 項待領", "已查 {checked} / {total} 个账号": "已查 {checked} / {total} 個帳號", "已确认不自动续费": "已確認不自動續費", "已确认领取": "已確認領取", "已签": "已籤", "已签到自动跳过": "已簽到自動跳過", "已结束": "已結束", "已选 {n} / {total} 个平台": "已選 {n} / {total} 個平臺", "已领": "已領", "已领 {claimed}/{total} · 累计 {earned} 积分": "已領 {claimed}/{total} · 累計 {earned} 積分", "已领 {done} / {total} 份套餐": "已領 {done} / {total} 份方案", "已领养": "已領養", "已领取": "已領取", "已领取「{name}」": "已領取「{name}」", "带设备风控身份领取「每日 100 Credits」 · 需要 UMID 组件": "帶裝置風控身份領取「每日 100 Credits」 · 需要 UMID 元件", "平台与签到时间": "平臺與簽到時間", "平台与随机签到区间": "平臺與隨機簽到區間", "平台专属": "平臺專屬", "平台专属时间": "平臺專屬時間", "平台专属时间由网关提供。自定义时间会覆盖专属时间,提前执行可能遇到窗口未开。": "平臺專屬時間由閘道器提供。自定義時間會覆蓋專屬時間,提前執行可能遇到視窗未開。", "平台批次": "平臺批次", "开关": "開關", "开启定时补签": "開啟定時補籤", "开启活动窗口重试": "開啟活動視窗重試", "开始 {time}": "開始 {time}", "开学季 + 抽奖": "開學季 + 抽獎", "开学季任务": "開學季任務", "开学季执行失败:{error}": "開學季執行失敗:{error}", "开学季执行完成:{message}": "開學季執行完成:{message}", "开学季活动": "開學季活動", "开着:启用的条目按各自时刻执行": "開著:啟用的條目按各自時刻執行", "开着:按下面的时刻自动巡检": "開著:按下面的時刻自動巡檢", "开通中…": "開通中…", "开通免费套餐": "開通免費方案", "开通未得到确认,请重新查询套餐状态;不会自动重试开通": "開通未獲確認,請重新查詢方案狀態;不會自動重試開通", "开通结果待确认": "開通結果待確認", "开通请求仍在处理或结果待确认,请稍后查询,不要重复提交": "開通請求仍在處理或結果待確認,請稍後查詢,不要重複提交", "当前余额读数里没有套餐清单": "當前餘額讀數里沒有套餐清單", "当前没有可领取的套餐": "當前沒有可領取的套餐", "当前没有等待窗口或活动下发的账号。": "當前沒有等待視窗或活動下發的帳號。", "当前活动未提供每日签到任务": "目前活動未提供每日簽到任務", "当前网关中,补签等待间隔与活动重试间隔共用;修改间隔会同步影响两者,开关与重试次数仍分别设置。": "當前閘道器中,補籤等待間隔與活動重試間隔共用;修改間隔會同步影響兩者,開關與重試次數仍分別設定。", "当前账号暂不符合该活动的领取条件": "目前帳號暫不符合該活動的領取條件", "当前账号未下发豆包工作签到活动,无需反复领取": "目前帳號尚未獲得豆包工作簽到活動,無需反覆領取", "待发放": "待發放", "待完成": "待完成", "待执行": "待執行", "待签": "待籤", "待领取": "待領取", "待领新手福利": "待領新手福利", "总开关": "總開關", "总开关已关闭": "總開關已關閉", "总开关已关闭 · 在「定时签到」页打开": "總開關已關閉 · 在「定時簽到」頁開啟", "成功 {n}": "成功 {n}", "成长任务": "成長任務", "成长任务完成({done} 项成功、{failed} 项失败),积分 +{credit} 能量 +{energy}": "成長任務完成({done} 項成功、{failed} 項失敗),積分 +{credit} 能量 +{energy}", "成长任务执行失败:{error}": "成長任務執行失敗:{error}", "成长任务都完成了。": "成長任務都完成了。", "我已阅读并同意以下服务声明,仅授权开通零元体验套餐,不自动续费": "我已閱讀並同意以下服務聲明,僅授權開通零元體驗方案,不自動續費", "截止 {time}": "截止 {time}", "所有定时签到条目均已暂停": "所有定時簽到條目均已暫停", "所有时间按北京时间计算。每个账号每天随机安排一次,重启保留当天安排;错过区间时会补跑未执行账号。": "所有時間按北京時間計算。每個帳號每天隨機安排一次,重啟保留當天安排;錯過區間時會補跑未執行帳號。", "所有时间按北京时间计算。网关启动后会补跑当天已到点、尚未执行的签到,不会提前执行未来时点。": "所有時間按北京時間計算。閘道器啟動後會補跑當天已到點、尚未執行的簽到,不會提前執行未來時點。", "手动签到": "手動簽到", "执行失败:{error}": "執行失敗:{error}", "执行完成": "執行完成", "执行完成:{n} 项,{failed} 项失败": "執行完成:{n} 項,{failed} 項失敗", "执行并抽奖": "執行並抽獎", "执行开学季任务并抽空抽奖机会(分享 / 对话 / 专家事件)": "執行開學季任務並抽空抽獎機會(分享/對話/專家事件)", "执行规则": "執行規則", "把缺省链填进清单,再点「保存」生效": "把預設鏈填進清單,再點「儲存」生效", "抽奖机会 {n} 次": "抽獎機會 {n} 次", "按住拖动调整顺序": "按住拖動調整順序", "按住拖动,调整这个模型在链里的顺序": "按住拖動,調整這個模型在鏈裡的順序", "按完成状态筛选": "按完成狀態篩選", "按序逐个尝试,共 {n} 个": "按序逐個嘗試,共 {n} 個", "按签到状态筛选": "按簽到狀態篩選", "按结果筛选": "按結果篩選", "按顺序尝试免费模型,一行一个;清空并保存恢复默认链。": "按順序嘗試免費模型,一行一個;清空並儲存恢復預設鏈。", "按领取状态筛选": "按領取狀態篩選", "授权被拒绝": "授權遭拒", "探测 + 领取 + 保活 · 与定时签到同一套组合": "探測 + 領取 + 保活 · 與定時簽到同一套組合", "探测活动并领取日活奖励 · 不做保活": "探測活動並領取日活獎勵 · 不做保活", "接单 + 点亮 + 领奖(只处理已实测沉淀的任务)": "接單+點亮+領獎(只處理已實測沉澱的任務)", "插件未就绪,范围仍保留": "外掛未就緒,範圍仍保留", "搜索平台": "搜尋平臺", "搜索签到平台": "搜尋簽到平臺", "搜索账号 / 说明": "搜尋帳號 / 說明", "搜账号 / 收益 / 错误 / 触发原因": "搜帳號 / 收益 / 錯誤 / 觸發原因", "收起": "收起", "收起平台": "收起平臺", "收起新建": "收起新建", "新建定时条目": "新建定時條目", "新建签到计划": "新建簽到計劃", "新手任务": "新手任務", "新手福利": "新手福利", "新手福利与活动": "新手福利與活動", "新手福利是一次性任务:领完就没了,重复点不会重复加分。": "新手福利是一次性任務:領完就沒了,重複點不會重複加分。", "新手福利有 {n} 项领取失败,可重试": "新手福利有 {n} 項領取失敗,可重試", "新手福利都领完了。": "新手福利都領完了。", "新手福利领取失败 {n} 项": "新手福利領取失敗 {n} 項", "新用户积分": "新用戶積分", "新计划默认开启补签和活动窗口重试;保存后可到「定时补签」页单独调整。": "新計劃預設開啟補籤和活動視窗重試;儲存後可到「定時補籤」頁單獨調整。", "无": "無", "无独立签到接口 · 每天替账号打一次登录信息(即当日魔粒)": "無獨立簽到介面 · 每天替帳號打一次登入資訊(即當日魔粒)", "无独立签到接口 · 每天替账号打一次首次登录积分": "無獨立簽到介面 · 每天替帳號打一次首次登入積分", "无账号": "無帳號", "时刻": "時刻", "时间范围": "時間範圍", "暂不可领": "暫不可領", "暂不可领(未满足条件)": "暫不可領(未滿足條件)", "暂不支持": "暫不支援", "暂无可领取福利": "暫無可領取福利", "暂无启用的条目": "暫無啟用的項目", "暂无启用的条目 · 点此添加": "暫無啟用的條目 · 點此新增", "暂无月度赠送记录": "暫無月度贈送記錄", "暂无活动": "暫無活動", "最多重试次数(0 = 关闭)": "最多重試次數(0 = 關閉)", "最近一轮:成功 {n} · 保活 {active} · 失败 {failed}": "最近一輪:成功 {n} · 保活 {active} · 失敗 {failed}", "最近执行:{time}": "最近執行:{time}", "最近结果:成功 {n} · 保活 {active} · 失败 {failed}": "最近結果:成功 {n} · 保活 {active} · 失敗 {failed}", "月度赠送": "月度贈送", "有平台到点待执行": "有平臺到點待執行", "有未保存的改动": "有未儲存的改動", "未勾选提供商": "未勾選提供商", "未安排下次执行": "未安排下次執行", "未完成,请查看签到记录": "未完成,請查看簽到紀錄", "未开启": "未開啟", "未开通": "未開通", "未执行开通,请查询套餐状态查看原因": "未執行開通,請查詢方案狀態查看原因", "未解锁": "未解鎖", "未领养(领养需先完成当日对话量)": "未領養(領養需先完成當日對話量)", "未领取": "未領取", "本地台账里今天还没领过;活动期内每天发一份新套餐": "本地臺賬裡今天還沒領過;活動期內每天發一份新套餐", "本地台账里今天(北京时间)领过的套餐:{plans}": "本地臺賬裡今天(北京時間)領過的套餐:{plans}", "本次签到结果的记录时间:{time}(本机时区)": "本次簽到結果的記錄時間:{time}(本機時區)", "本次自动领取未完成验证,请在套餐明细中手动领取": "本次自動領取未完成驗證,請在方案明細中手動領取", "本轮已跳过": "本輪已跳過", "本轮已跳过:{reason}": "本輪已跳過:{reason}", "权益兑换成功,重新查询可查看最新记录": "權益兌換成功,重新查詢可查看最新記錄", "权益兑换未成功": "權益兌換未成功", "权益兑换码 / 订单号": "權益兌換碼 / 訂單號", "条启用": "條啟用", "来源说明中的时刻是定时条目的名称或基准时刻,不是本次执行时间": "來源說明中的時刻是定時條目的名稱或基準時刻,不是本次執行時間", "果办免费体验套餐": "果辦免費體驗方案", "果办套餐接口不可用,请更新主程序和提供商插件": "果辦方案介面無法使用,請更新主程式和提供商外掛", "果办服务声明": "果辦服務聲明", "查看平台": "檢視平臺", "查看签到记录": "檢視簽到記錄", "查看账号": "檢視帳號", "查询于 {time}": "查詢於 {time}", "查询任务": "查詢任務", "查询任务树后一键点亮 / 领奖 · 含开学季与猫猫旅行 · 点击行展开明细": "查詢任務樹後一鍵點亮 / 領獎 · 含開學季與貓貓旅行 · 點擊行展開明細", "查询任务树并一键点亮 / 领奖(含开学季与猫猫旅行)": "查詢任務樹並一鍵點亮/領獎(含開學季與貓貓旅行)", "查询只读取套餐状态,点击开通后才会执行": "查詢僅讀取方案狀態,點擊開通後才會執行", "查询后查看任务清单,仅执行插件标记为支持的任务": "查詢後檢視任務清單,僅執行外掛標記為支援的任務", "查询失败:{error}": "查詢失敗:{error}", "查询套餐": "查詢方案", "查询活动": "查詢活動", "查询结果": "查詢結果", "桌面端每日积分链路": "桌面版每日積分鏈路", "模型链已保存": "模型鏈已儲存", "次数按账号每天单独计算:重试到上限的账号今天不再重试,明天自动重置。": "次數按帳號每天單獨計算:重試到上限的帳號今天不再重試,明天自動重置。", "正在为本次领取验证;若出现滑块,请手动完成": "正在為本次領取進行驗證;若出現滑塊,請手動完成", "正在读取 UMID 组件状态…": "正在讀取 UMID 元件狀態…", "正在读取定时签到数据…": "正在讀取定時簽到資料…", "正在读取签到数据…": "正在讀取簽到資料…", "正在读取签到记录…": "正在讀取簽到記錄…", "每个签到计划对应一组补签设置": "每個簽到計劃對應一組補籤設定", "每个账号每天在区间内随机执行一次;开始与结束相同则按固定时刻执行。": "每個帳號每天在區間內隨機執行一次;開始與結束相同則按固定時刻執行。", "每天 {time}": "每天 {time}", "每天 {time} · {scope}": "每天 {time} · {scope}", "每天定点巡检 · 一趟推进一步 · 与签到排程互相独立": "每天定點巡檢 · 一趟推進一步 · 與簽到排程互相獨立", "每天执行": "每天執行", "每天按这里的时刻自动巡检一遍 WorkBuddy 国内版账号:没有猫就领养、在家就派出、到站就领奖。一趟只推进一步,所以建议留两个时刻(早上派出、晚上领奖)。企业版与国际版账号自动跳过。": "每天按這裡的時刻自動巡檢一遍 WorkBuddy 國內版帳號:沒有貓就領養、在家就派出、到站就領獎。一趟只推進一步,所以建議留兩個時刻(早上派出、晚上領獎)。企業版與國際版帳號自動跳過。", "每天时刻": "每天時刻", "每天时刻(北京时间)": "每天時刻(北京時間)", "每天自动执行": "每天自動執行", "每天补查一次": "每天補查一次", "每天补查一轮,只处理今天未签到的账号。": "每天補查一輪,只處理今天未簽到的帳號。", "每执行一次签到 · 每个账号一条明细 · 结果与收益以后端落账为准": "每執行一次簽到 · 每個帳號一條明細 · 結果與收益以後端落賬為準", "每日活动签到(+100 积分,已领则中性提示)": "每日活動簽到(+100 積分,已領則中性提示)", "每日活跃任务 · 网页会话保活点亮日活,领取才加积分 · 两者可分开执行": "每日活躍任務 · 網頁會話保活點亮日活,領取才加積分 · 兩者可分開執行", "每日登录积分 · 顺带领取会员活动 · 访客账号无积分体系(跳过)": "每日登入積分 · 順帶領取會員活動 · 訪客帳號無積分體系(跳過)", "每日福利 · 领取 → 确认 → 回读核实 · 按北京时间自然日重置": "每日福利 · 領取 → 確認 → 回讀核實 · 按北京時間自然日重置", "每日签到": "每日簽到", "每日签到积分": "每日簽到積分", "每条条目各有时刻与范围 · 各自当天去重 · 错过时点开机自动补签": "每條條目各有時刻與範圍 · 各自當天去重 · 錯過時點開機自動補籤", "每账号一条明细": "每帳號一筆明細", "每账号一条明细 · 点此查看「签到记录」": "每帳號一條明細 · 點此檢視「簽到記錄」", "每账号每天最多重试(次)": "每帳號每天最多重試(次)", "没有专属时间的平台跟随默认时间;已有专属或自定义时间的平台不会被覆盖。": "沒有專屬時間的平臺跟隨預設時間;已有專屬或自定義時間的平臺不會被覆蓋。", "没有匹配的平台": "沒有匹配的平臺", "没有可执行账号": "沒有可執行帳號", "没有可签到的账号": "沒有可簽到的帳號", "没有可领套餐的账号(ZCode 未添加)。": "沒有可領套餐的帳號(ZCode 未新增)。", "没有可领福利的账号(CodeArts / ZCode 未添加)。": "沒有可領福利的帳號(CodeArts / ZCode 未新增)。", "没有支持成长任务的账号": "沒有支援成長任務的帳號", "没有支持成长任务的账号(需要 WorkBuddy 国内版)。": "沒有支援成長任務的帳號(需要 WorkBuddy 國內版)。", "没有支持新手福利的账号": "沒有支援新手福利的帳號", "没有支持新手福利的账号 —— 目前有 Loomy、小浣熊、CodeArts 三家。": "沒有支援新手福利的帳號 —— 目前有 Loomy、小浣熊、CodeArts 三家。", "没有支持新手福利的账号。": "沒有支援新手福利的帳號。", "没有支持活动福利的账号,请添加账号并更新提供商插件。": "沒有支援活動福利的帳號,請新增帳號並更新提供商外掛。", "没有符合条件的账号。": "沒有符合條件的帳號。", "没有符合筛选条件的签到记录": "沒有符合篩選條件的簽到記錄", "没有需要执行的任务": "沒有需要執行的任務", "活动奖励领取成功": "活動獎勵領取成功", "活动尚未开始(上游接口未部署)": "活動尚未開始(上游介面未部署)", "活动开始:{time}": "活動開始:{time}", "活动按自然日发新套餐,每天可领一次": "活動按自然日發新套餐,每天可領一次", "活动期内每天可再领一份 · 领取需完成滑块验证": "活動期內每天可再領一份 · 領取需完成滑塊驗證", "活动未开放或已结束,请重新查询": "活動尚未開放或已結束,請重新查詢", "活动福利": "活動福利", "活动福利接口不可用,请更新网关后重试": "活動福利介面無法使用,請更新閘道後重試", "活动窗口重试": "活動視窗重試", "活动窗口重试已关闭,等待窗口或活动下发的账号不会自动再试。": "活動視窗重試已關閉,等待視窗或活動下發的帳號不會自動再試。", "活动领取未成功,请重新查询后再试": "活動領取未成功,請重新查詢後再試", "活动(campaign)领取 · 每天 10:00 刷新": "活動(campaign)領取 · 每天 10:00 重新整理", "活跃上报与保活均未成功,且活动未开启": "活躍上報與保活均未成功,且活動未開啟", "活跃上报完成,但保活未成功且活动未开启": "活躍上報完成,但保活未成功且活動未開啟", "活跃上报完成,但活动未开启": "活躍上報完成,但活動未開啟", "活跃上报成功": "活躍上報成功", "活跃保活失败": "活躍保活失敗", "活跃保活完成": "活躍保活完成", "活跃保活完成,但活动未开启": "活躍保活完成,但活動未開啟", "活跃保活完成,但活跃上报失败且活动未开启": "活躍保活完成,但活躍上報失敗且活動未開啟", "添加条目": "新增條目", "添加模型": "新增模型", "清单为空 —— 保存后恢复缺省链": "清單為空 —— 儲存後恢復預設鏈", "清单里已经有「{name}」": "清單裡已經有「{name}」", "清空全部签到记录": "清空全部簽到記錄", "清空失败:{error}": "清空失敗:{error}", "清空筛选结果": "清空篩選結果", "清空签到记录": "清空簽到記錄", "滚动 24 小时签到;按插件返回的时间等待下一次领取,不以自然日重复领取": "滾動 24 小時簽到;依外掛回傳的時間等待下一次領取,不以自然日重複領取", "点「套餐明细」看领到了哪几份、什么时候生效;活动期内每天可再领": "點「套餐明細」看領到了哪幾份、什麼時候生效;活動期內每天可再領", "点击查询后查看任务,领取操作由网关执行": "點擊查詢後檢視任務,領取操作由閘道器執行", "点击行展开账号明细 · 单账号签到不受范围限制": "點擊行展開帳號明細 · 單帳號簽到不受範圍限制", "点进去查看任务并领取": "點進去檢視任務並領取", "状态未确认": "狀態未確認", "独立链路 · 只提供手动入口 · 不进自动签到": "獨立鏈路 · 只提供手動入口 · 不進自動簽到", "猫猫旅行": "貓貓旅行", "猫猫旅行一趟": "貓貓旅行一趟", "猫猫旅行失败:{error}": "貓貓旅行失敗:{error}", "猫猫旅行失败:{message}": "貓貓旅行失敗:{message}", "猫猫旅行定时排程": "貓貓旅行定時排程", "猫猫旅行:{message}": "貓貓旅行:{message}", "猫猫旅行:{n} 个动作,+{credit} 积分": "貓貓旅行:{n} 個動作,+{credit} 積分", "猫猫旅行:{n} 个动作,+{credit} 积分,{failed} 个失败": "貓貓旅行:{n} 個動作,+{credit} 積分,{failed} 個失敗", "用免费模型与网页会话维持账号活跃 · 不领取奖励": "用免費模型與網頁會話維持帳號活躍 · 不領取獎勵", "由官方按期自动发放,这里只展示记录,不重复领取。": "由官方按期自動發放,這裡僅展示記錄,不重複領取。", "确定删除「{name}」?删除后到点不再执行。": "確定刪除「{name}」?刪除後到點不再執行。", "确定删除「{name}」?删除后到点不再执行。": "確定刪除「{name}」?刪除後到點不再執行。", "确定删除「{name}」?对应的定时补签与活动重试也会一并移除,签到记录保留。": "確定刪除「{name}」?對應的定時補籤與活動重試也會一併移除,簽到記錄保留。", "确定删除当前筛选命中的 {n} 条签到记录?清空后无法恢复。": "確定刪除當前篩選命中的 {n} 條簽到記錄?清空後無法恢復。", "确定清空全部签到记录?清空后无法恢复。": "確定清空全部簽到記錄?清空後無法恢復。", "确定清空全部签到记录?清空后无法恢复。": "確定清空全部簽到記錄?清空後無法恢復。", "确定清空当前筛选出的签到记录?清空后无法恢复。": "確定清空當前篩選出的簽到記錄?清空後無法恢復。", "确认兑换": "確認兌換", "确认把这份权益兑换到当前账号?兑换后可能无法撤销。": "確認將這份權益兌換到目前帳號?兌換後可能無法撤銷。", "福利与套餐的逐项领取在桌面端签到中心完成": "福利與套餐的逐項領取在桌面版簽到中心完成", "移除 {name}": "移除 {name}", "窗口重试间隔(分钟,0 = 关闭)": "視窗重試間隔(分鐘,0 = 關閉)", "立即全部签到": "立即全部簽到", "立即巡检全部": "立即巡檢全部", "立即执行「{name}」会手动签到整个计划范围,不等待平台时点。窗口未开的平台可能仍无法领取。": "立即執行「{name}」會手動簽到整個計劃範圍,不等待平臺時點。視窗未開的平臺可能仍無法領取。", "等待时点": "等待時點", "等待签到区间": "等待簽到區間", "等待签到时间": "等待簽到時間", "签到": "簽到", "签到与补签计划已暂停,配置仍保留;手动执行不受总开关影响。": "簽到與補籤計劃已暫停,配置仍保留;手動執行不受總開關影響。", "签到中…": "簽到中…", "签到中心分区": "簽到中心分割槽", "签到中心标签页": "簽到中心標籤頁", "签到功能分类": "簽到功能分類", "签到区间": "簽到區間", "签到失败:{error}": "簽到失敗:{error}", "签到完成:{succeeded}/{total} 成功{active},{failed} 个失败": "簽到完成:{succeeded}/{total} 成功{active},{failed} 個失敗", "签到完成:{success}/{total} 成功,保活 {active},失败 {failed}": "簽到完成:{success}/{total} 成功,保活 {active},失敗 {failed}", "签到成功": "簽到成功", "签到提供商": "簽到提供商", "签到日期按北京时间计算": "簽到日期按北京時間計算", "签到时间": "簽到時間", "签到类型": "簽到類型", "签到范围": "簽到範圍", "签到触发时刻": "簽到觸發時刻", "签到计划": "簽到計劃", "签到记录": "簽到記錄", "签到记录时间范围": "簽到記錄時間範圍", "签到记录表": "簽到記錄表", "管理定时签到": "管理定時簽到", "累计签到记录": "累計簽到記錄", "结束时间不能早于开始时间,暂不支持跨天区间。": "結束時間不能早於開始時間,暫不支援跨天區間。", "结算于 {time}": "結算於 {time}", "编辑定时条目": "編輯定時條目", "编辑签到计划": "編輯簽到計劃", "缺少套餐开通凭证,请通过果办网页登录补齐授权": "缺少方案開通憑證,請透過果辦網頁登入補齊授權", "缺少开通凭证": "缺少開通憑證", "网关设备组件": "閘道裝置元件", "能量 {energy} · 连登 {streak} 天": "能量 {energy} · 連登 {streak} 天", "能量 {n}": "能量 {n}", "能量 {value}": "能量 {value}", "腾讯每日签到接口 · 仅国内版": "騰訊每日簽到介面 · 僅國內版", "自动巡检": "自動巡檢", "自动巡检已暂停:{reason}": "自動巡檢已暫停:{reason}", "自动执行已开启": "自動執行已開啟", "自动执行已暂停": "自動執行已暫停", "自动执行总开关": "自動執行總開關", "自动签到已关闭": "自動簽到已關閉", "自动签到已开启": "自動簽到已開啟", "自动签到执行中…": "自動簽到執行中…", "自定义时间": "自定義時間", "至少勾一家才能保存(不勾等于这条条目不签到)": "至少勾一家才能儲存(不勾等於這條條目不簽到)", "补签不早于": "補籤不早於", "补签不早于 {time}": "補籤不早於 {time}", "补签单独设置,只检查今天还没有签到的账号。": "補簽單獨設定,只檢查今天還沒有簽到的帳號。", "补签取「主签到区间结束加等待间隔」与「补签不早于」中较晚的时刻,不会提前补签尚未轮到的账号。": "補籤取「主簽到區間結束加等待間隔」與「補籤不早於」中較晚的時刻,不會提前補籤尚未輪到的帳號。", "补签在主签到区间结束后执行,只补未签到账号。": "補簽在主簽到區間結束後執行,只補未簽到帳號。", "补签已关闭": "補籤已關閉", "补签已关闭,不影响主签到;开启后会自动生成各平台的补签安排。": "補籤已關閉,不影響主簽到;開啟後會自動生成各平臺的補籤安排。", "补签已开启": "補籤已開啟", "补签时刻(只补今天没签上的账号,清空 = 关闭)": "補籤時刻(只補今天沒簽上的帳號,清空 = 關閉)", "补签检查": "補籤檢查", "补签计划": "補籤計劃", "触发会话活跃并观测积分变化;未观测到新发放时不会标为已签到": "觸發工作階段活躍並觀測積分變化;未觀測到新發放時不會標為已簽到", "计划名称": "計劃名稱", "订单 {order} · 第 {period} 期": "訂單 {order} · 第 {period} 期", "设备校验未就绪,部分活动可能不显示:{reason}": "裝置驗證尚未就緒,部分活動可能不會顯示:{reason}", "设置各平台每天的签到时间,按窗口分批执行。": "設定各平臺每天的簽到時間,按視窗分批執行。", "设置定时补签": "設定定時補籤", "设置每天的签到区间,各账号在区间内随机错峰执行。": "設定每天的簽到區間,各帳號在區間內隨機錯峰執行。", "设置活动窗口重试": "設定活動視窗重試", "设置补签": "設定補籤", "该权益已兑换,无需重复提交": "該權益已兌換,無需重複提交", "该活动已领取,无需重复领取": "該活動已領取,無需重複領取", "该账号当前没有可领取的限时活动": "該帳號目前沒有可領取的限時活動", "请填写 1–6 个 HH:MM 时刻,以逗号分隔": "請填寫 1–6 個 HH:MM 時刻,以逗號分隔", "请填写合法区间,结束不早于开始,并至少选择一家提供商。": "請填寫合法區間,結束不早於開始,並至少選擇一家提供商。", "请填写合法时刻并至少选择一家提供商": "請填寫合法時刻並至少選擇一家提供商", "请检查时间、间隔和次数是否在允许范围内。": "請檢查時間、間隔和次數是否在允許範圍內。", "请至少选择一个签到平台": "請至少選擇一個簽到平臺", "读取定时签到数据失败:{error}": "讀取定時簽到資料失敗:{error}", "读取签到数据失败:{error}": "讀取簽到資料失敗:{error}", "读取签到记录失败:{error}": "讀取簽到記錄失敗:{error}", "调整重试": "調整重試", "豆包工作今日领取仍未确认,请前往官方客户端查看;再次点击仅查询结果,不会重复领取": "豆包工作今日領取仍未確認,請前往官方用戶端查看;再次點擊僅查詢結果,不會重複領取", "豆包工作签到奖励已领取,已回查确认": "豆包工作簽到獎勵已領取,已回查確認", "豆包工作领取结果待确认,稍后只查询结果,不会重复提交领取": "豆包工作領取結果待確認,稍後只查詢結果,不會重複提交領取", "账号未使用官方果办网关地址,无法在此开通免费套餐": "帳號未使用官方果辦閘道位址,無法在此開通免費方案", "资格、额度与有效期以官方返回为准 · 领取不会购买或订阅套餐": "資格、額度與有效期以官方返回為準 · 領取不會購買或訂閱套餐", "跟随默认时间": "跟隨預設時間", "跳过 {n}": "跳過 {n}", "运营活动交付(领取 → 确认 → 回读核实)· 领的是套餐赠送积分": "運營活動交付(領取 → 確認 → 回讀核實)· 領的是套餐贈送積分", "还有 {n} 个平台未执行": "還有 {n} 個平臺未執行", "还没执行过": "還沒執行過", "还没有可签到的提供商。签到能力随提供商插件包提供,装好并添加账号后这里就会出现。": "還沒有可簽到的提供商。簽到能力隨提供商外掛包提供,裝好並新增帳號後這裡就會出現。", "还没有可签到的提供商。请安装或启用所连接网关的提供商插件。": "還沒有可簽到的提供商。請安裝或啟用所連線閘道器的提供商外掛。", "还没有可签到的账号。账号与插件均保存在所连接的网关上。": "還沒有可簽到的帳號。帳號與外掛均儲存在所連線的閘道器上。", "还没有定时条目 —— 点「添加条目」建一条,或到「签到中心」手动签到。": "還沒有定時條目 —— 點「新增條目」建一條,或到「簽到中心」手動簽到。", "还没有定时条目,添加一条或到签到中心手动签到": "還沒有定時條目,新增一條或到簽到中心手動簽到", "还没有签到计划,先选择平台和默认时间。": "還沒有簽到計劃,先選擇平臺和預設時間。", "还没有签到记录 —— 手动签到或等定时条目执行后,明细会出现在这里。": "還沒有簽到記錄 —— 手動簽到或等定時條目執行後,明細會出現在這裡。", "还没有记录": "還沒有記錄", "还没有账号完成全部任务,切到「全部」看看可完成的项。": "還沒有帳號完成全部任務,切到「全部」看看可完成的項。", "还没有账号领完新手福利,切到「全部」看看待领的项。": "還沒有帳號領完新手福利,切到「全部」看看待領的項。", "还没签到过": "還沒簽到過", "这个账号没有新手任务": "這個帳號沒有新手任務", "这段时间里还没有签到记录": "這段時間裡還沒有簽到記錄", "这里只修改定时签到;补签和活动重试配置保持原样,在「定时补签」页单独设置。": "這裡只修改定時簽到;補籤和活動重試配置保持原樣,在「定時補籤」頁單獨設定。", "这里只管理签到时间;补签与活动窗口重试在独立页设置。": "這裡只管理簽到時間;補籤與活動視窗重試在獨立頁設定。", "连登 {days} 天": "連登 {days} 天", "连登 {n} 天": "連登 {n} 天", "选填": "選填", "选择 {name}": "選擇 {name}", "选择平台后显示实际签到时间": "選擇平臺後顯示實際簽到時間", "部分": "部分", "都领到了,暂无待领的账号。": "都領到了,暫無待領的帳號。", "重新查询": "重新查詢", "重新检查": "重新檢查", "重签": "重籤", "重试": "重試", "重试关闭": "重試關閉", "重试已暂停": "重試已暫停", "重试开启": "重試開啟", "重试间隔(分钟)": "重試間隔(分鐘)", "间隔 {gap} 分钟 · 每账号每天最多重试 {limit} 次": "間隔 {gap} 分鐘 · 每帳號每天最多重試 {limit} 次", "间隔填 0 会关闭活动窗口重试;定时补签仍至少等待 1 分钟,不会一起关闭。": "間隔填 0 會關閉活動視窗重試;定時補籤仍至少等待 1 分鐘,不會一起關閉。", "限时体验套餐 · 领取需滑块验证码 · 逐份查看与领取": "限時體驗套餐 · 領取需滑塊驗證碼 · 逐份檢視與領取", "限时体验套餐(start-plan),活动期内每天一份 · 领取需滑块验证码": "限時體驗套餐(start-plan),活動期內每天一份 · 領取需滑塊驗證碼", "限时活动": "限時活動", "限时活动与体验套餐": "限時活動與體驗套餐", "限时活动与体验套餐 · 今天已领 {n} 份": "限時活動與體驗套餐 · 今天已領 {n} 份", "限时活动与体验套餐 · 查询后逐项领取 · 不影响每日签到": "限時活動與體驗方案 · 查詢後逐項領取 · 不影響每日簽到", "随机签到开始": "隨機簽到開始", "随机签到结束": "隨機簽到結束", "随签到计划暂停": "隨簽到計劃暫停", "需人工处理": "需人工處理", "需真实操作": "需真實操作", "需要人工验证": "需要人工驗證", "非活动期": "非活動期", "页面由手机端提供,签到能力由所连接网关的插件提供": "頁面由手機端提供,簽到能力由所連線閘道器的外掛提供", "项": "項", "预计发放:{time}": "預計發放:{time}", "领取": "領取", "领取中": "領取中", "领取中…": "領取中…", "领取免费 CodingPlan(按需:套餐有效时只回读额度)": "領取免費 CodingPlan(按需:方案有效時只回讀額度)", "领取后 {days} 天有效": "領取後 {days} 天有效", "领取失败": "領取失敗", "领取失败:{error}": "領取失敗:{error}", "领取奖励": "領取獎勵", "领取完成:{n} 项,+{points} 积分,{failed} 项失败": "領取完成:{n} 項,+{points} 積分,{failed} 項失敗", "领取成功:{planId}": "領取成功:{planId}", "领取截止:{time}": "領取截止:{time}", "领取时间:{time}": "領取時間:{time}", "领取福利": "領取福利", "领取结果待确认": "領取結果待確認", "领取结果待确认,请稍后查询;不会重复提交领取": "領取結果待確認,請稍後查詢;不會重複提交領取", "领取被拒绝": "領取被拒絕", "领取通常需要过一次滑块验证;活动套餐多为当天稍晚生效,领取后可在桌面端「账号」里看套餐明细。": "領取通常需要過一次滑塊驗證;活動套餐多為當天稍晚生效,領取後可在桌面版「帳號」裡看套餐明細。", "领取需要时会打开官方人机验证;活动套餐额度与编码套餐额度独立。": "領取需要時會開啟官方人機驗證;活動套餐額度與編碼套餐額度獨立。", "领取验证任务已结束,请到套餐明细查看结果": "領取驗證任務已結束,請到方案明細查看結果", "额度到期:{time}": "額度到期:{time}", "验证凭据正在提交,领取结果请查看签到记录": "正在提交驗證憑據,領取結果請查看簽到紀錄", "验证提交结果未确认,请查看签到记录,勿重复领取": "驗證提交結果尚未確認,請查看簽到紀錄,勿重複領取", "验证码组件加载失败,请重试": "驗證碼元件載入失敗,請重試", "验证码组件加载超时,请重试": "驗證碼元件載入超時,請重試", "验证码组件未加载,请重试": "驗證碼元件未載入,請重試", "默认 {time} · {n} 个平台 · {groups} 组签到时间": "預設 {time} · {n} 個平臺 · {groups} 組簽到時間", "默认使用第一把可用 API Key,想换就在上面选一把": "預設使用第一把可用 API Key,想換就在上面選一把", "默认签到时间": "預設簽到時間", "(专属 {time})": "(專屬 {time})", "(共 {n} 个账号)": "(共 {n} 個帳號)", "(已跑)": "(已跑)", "(插件未就绪,保留原配置)": "(外掛未就緒,保留原配置)", "(能量 / 连登读数本次未取到)": "(能量/連登讀數本次未取到)", ",日活保活 {n} 个": ",日活保活 {n} 個", " 字段": " 欄位", " 的 ": " 的 ", "{enabled} / {total} 个已开启": "{enabled} / {total} 個已開啟", "{name}开关": "{name}開關", "{name}间隔": "{name}間隔", "{name}间隔必须是 {min}–{max} 分钟的整数": "{name}間隔必須是 {min}–{max} 分鐘的整數", "{n} 秒后": "{n} 秒後", "✅ {task}:{summary}": "✅ {task}:{summary}", "✅ 已更新「{label}」": "✅ 已更新「{label}」", "「{name}」已执行": "「{name}」已執行", "上次执行 {time}": "上次執行 {time}", "上次执行 {time}({result})": "上次執行 {time}({result})", "上次执行中断,没有完整结果;请核对账号状态": "上次執行中斷,沒有完整結果;請核對帳號狀態", "下次执行 {time}": "下次執行 {time}", "下次执行 {time}({relative})": "下次執行 {time}({relative})", "仅维护过期或即将过期的凭证": "僅維護過期或即將過期的憑證", "仅记录状态与结果,不展示密钥或令牌。": "僅記錄狀態與結果,不展示金鑰或權杖。", "仅重试失败项": "僅重試失敗項", "仅重试这一项": "僅重試這一項", "任务正在执行中,请稍候": "任務正在執行中,請稍候", "任务清单": "任務清單", "任务配置保存在 ": "任務配置儲存在 ", "停留在「报表」页时按此间隔重新拉取统计数据;页面不可见时不请求。": "停留在「報表」頁時按此間隔重新拉取統計資料;頁面不可見時不請求。", "停留在「日志」页时按此间隔重新拉取系统事件;页面不可见时不请求。": "停留在「日誌」頁時按此間隔重新拉取系統事件;頁面不可見時不請求。", "停留在「请求日志」页时按此间隔重新拉取请求日志;页面不可见时不请求。": "停留在「請求日誌」頁時按此間隔重新拉取請求日誌;頁面不可見時不請求。", "全部触发方式": "全部觸發方式", "全部跳过": "全部跳過", "共 {n} 次执行": "共 {n} 次執行", "关闭自动维护不影响手动执行,也不影响对话请求所需的按需续期。": "關閉自動維護不影響手動執行,也不影響對話請求所需的按需續期。", "冷却中,{relative}重试": "冷卻中,{relative}重試", "冷却至 {time}": "冷卻至 {time}", "凭证变化": "憑證變化", "凭证已更新": "憑證已更新", "凭证未过期或临期": "憑證未過期或臨期", "凭证维护": "憑證維護", "凭证自动维护": "憑證自動維護", "分": "分", "分钟执行一次": "分鐘執行一次", "刚刚已执行,请稍后重试": "剛剛已執行,請稍後重試", "刷新前有效期": "重新整理前有效期", "刷新后有效期": "重新整理後有效期", "刷新记录": "重新整理記錄", "即将执行": "即將執行", "原因 / 说明": "原因 / 說明", "去账号页处理": "去帳號頁處理", "只刷新过期或即将过期的账号凭证": "只重新整理過期或即將過期的帳號憑證", "可填 {min}–{max}": "可填 {min}–{max}", "可填 {min}–{max} {unit}": "可填 {min}–{max} {unit}", "可填 {min}–{max} {unit}(默认 {def} {unit})": "可填 {min}–{max} {unit}(預設 {def} {unit})", "后台任务": "後臺任務", "固定模型清单": "固定模型清單", "失败重试": "失敗重試", "定时任务已刷新": "定時任務已重新整理", "定时查询积分": "定時查詢積分", "定期向 GitHub 查询最新发布版本,默认每 20 分钟一次。检查结果、排期和限流冷却跨重启保留;手动检查也会合并重复请求并遵守冷却。开关与间隔在「软件更新」面板的「更新设置」弹窗里配置(定时任务页不再渲染这一条)。": "定期向 GitHub 查詢最新發布版本,預設每 20 分鐘一次。檢查結果、排期和限流冷卻跨重啟保留;手動檢查也會合並重復請求並遵守冷卻。開關與間隔在「軟體更新」面板的「更新設定」彈窗裡配置(定時任務頁不再渲染這一條)。", "定期拉取最新模型清单,重启沿用排期与缓存。客户端读取模型列表的后台刷新也遵守本任务开关、间隔和失败冷却;手动获取模型可提前刷新。": "定期拉取最新模型清單,重啟沿用排期與快取。客戶端讀取模型列表的後臺重新整理也遵守本任務開關、間隔和失敗冷卻;手動獲取模型可提前重新整理。", "定期拉取最新模型清单,重启沿用排期与缓存。客户端读取模型列表的后台刷新也遵守本任务开关、间隔和失败冷却;手动获取模型可提前刷新。同一轮顺带刷新 models.dev 模型元数据(能力位与思考档位,可在设置页单独关闭)。": "定期拉取最新模型清單,重啟沿用排期與快取。客戶端讀取模型列表的後臺重新整理也遵守本任務開關、間隔和失敗冷卻;手動獲取模型可提前重新整理。同一輪順帶重新整理 models.dev 模型後設資料(能力位與思考檔位,可在設定頁單獨關閉)。", "定期获取各提供商的最新模型清单": "定期獲取各提供商的最新模型清單", "定期遍历账号,只刷新已过期或临期的凭证。重启后沿用上次排期,失败账号在冷却后重试;转发需要的按需续期不受此开关影响。": "定期遍歷帳號,只重新整理已過期或臨期的憑證。重啟後沿用上次排期,失敗帳號在冷卻後重試;轉發需要的按需續期不受此開關影響。", "客户端触发": "客戶端觸發", "尚未执行维护": "尚未執行維護", "尚未执行维护,自动或手动执行后会显示结果": "尚未執行維護,自動或手動執行後會顯示結果", "已{action}「{name}」": "已{action}「{name}」", "已在设置里关闭 models.dev 模型元数据": "已在設定裡關閉 models.dev 模型後設資料", "已执行": "已執行", "已更新 {n} 条": "已更新 {n} 條", "已更新间隔": "已更新間隔", "已续期并确认凭证更新": "已續期並確認憑證更新", "已获取最新模型目录": "已獲取最新模型目錄", "建议重试时间": "建議重試時間", "开启": "開啟", "当前没有可用的目录账号": "當前沒有可用的目錄帳號", "成功提供商": "成功提供商", "成功账号": "成功帳號", "手动触发": "手動觸發", "执行中断": "執行中斷", "执行中断,结果可能已部分生效,请先核对账号状态": "執行中斷,結果可能已部分生效,請先核對帳號狀態", "执行失败:{reason}": "執行失敗:{reason}", "执行时的结果快照,不随账号后续变化而改变": "執行時的結果快照,不隨帳號後續變化而改變", "执行时间": "執行時間", "执行明细": "執行明細", "执行汇总": "執行彙總", "执行间隔(分钟)": "執行間隔(分鐘)", "报表自动刷新": "報表自動重新整理", "指定账号不属于该提供商、未启用或没有可用凭证": "指定帳號不屬於該提供商、未啟用或沒有可用憑證", "提供商当前不可用,未执行目录更新": "提供商當前不可用,未執行目錄更新", "搜索账号或提供商": "搜尋帳號或提供商", "收起明细": "收起明細", "改动立即生效,不需要重启程序": "改動立即生效,不需要重啟程式", "改间隔": "改間隔", "无失败项": "無失敗項", "日志页自动刷新": "日誌頁自動重新整理", "明细状态筛选": "明細狀態篩選", "暂无维护记录,首次执行后会自动保存": "暫無維護記錄,首次執行後會自動儲存", "暂无记录": "暫無記錄", "最近一次": "最近一次", "有失败项": "有失敗項", "有效期已延长": "有效期已延長", "未使用账号": "未使用帳號", "未变更": "未變更", "未注册的提供商": "未註冊的提供商", "未返回失败原因": "未返回失敗原因", "本次无需更新,沿用现有状态": "本次無需更新,沿用現有狀態", "本轮共 {n} 项": "本輪共 {n} 項", "本轮没有符合条件的项目": "本輪沒有符合條件的項目", "查看凭证与模型目录的每次维护结果,失败和跳过都有原因": "檢視憑證與模型目錄的每次維護結果,失敗和跳過都有原因", "查看原因": "檢視原因", "查看明细": "檢視明細", "查看详情": "檢視詳情", "模型基础信息": "模型基礎資訊", "模型目录": "模型目錄", "模型目录刷新": "模型目錄重新整理", "模型目录更新": "模型目錄更新", "正在加载定时任务…": "正在載入定時任務…", "正在读取维护记录…": "正在讀取維護記錄…", "此前仅有汇总,尚无逐项记录": "此前僅有彙總,尚無逐項記錄", "每 {n} {unit}": "每 {n} {unit}", "每 {n} 分钟": "每 {n} 分鐘", "没有可显示的定时任务。后端未返回任务清单,请确认网关正在运行。": "沒有可顯示的定時任務。後端未返回任務清單,請確認閘道器正在執行。", "没有可维护的任务": "沒有可維護的任務", "没有后台任务": "沒有後臺任務", "没有符合筛选条件的维护记录": "沒有符合篩選條件的維護記錄", "沿用缓存或当前没有可用的目录来源": "沿用快取或當前沒有可用的目錄來源", "沿用缓存,尚未到刷新时间": "沿用快取,尚未到重新整理時間", "状态每 20 秒自动同步": "狀態每 20 秒自動同步", "由页面按间隔自动刷新": "由頁面按間隔自動重新整理", "登录授权已失效,需要重新登录该账号": "登入授權已失效,需要重新登入該帳號", "目录最近更新时间": "目錄最近更新時間", "立即执行": "立即執行", "立即检查": "立即檢查", "维护已完成,结果已保存": "維護已完成,結果已儲存", "维护已开始,结果会自动更新,可离开此页": "維護已開始,結果會自動更新,可離開此頁", "维护已执行,但完整结果未能保存;请先核对账号状态,不要反复执行": "維護已執行,但完整結果未能儲存;請先核對帳號狀態,不要反覆執行", "维护已结束,有失败项,请查看明细": "維護已結束,有失敗項,請檢視明細", "维护接口不可用,请更新网关并重新打开页面": "維護介面不可用,請更新閘道器並重新開啟頁面", "维护正在执行,完成后会显示逐项结果": "維護正在執行,完成後會顯示逐項結果", "维护类型": "維護類型", "维护记录保留 {days} 天,最多 {count} 次;仅保存结果,不保存密钥或令牌。": "維護記錄保留 {days} 天,最多 {count} 次;僅儲存結果,不儲存金鑰或權杖。", "维护设置": "維護設定", "维护设置未能保存到数据库,请检查磁盘空间和权限": "維護設定未能儲存至資料庫,請檢查磁碟空間與權限", "自动和手动维护,统一在这里查看": "自動和手動維護,統一在這裡檢視", "自动维护与手动执行共用同一份结果记录": "自動維護與手動執行共用同一份結果記錄", "自动维护已关闭": "自動維護已關閉", "自动触发": "自動觸發", "触发方式": "觸發方式", "该提供商不支持主动刷新凭证(没有续期手段)": "該提供商不支援主動重新整理憑證(沒有續期手段)", "该提供商使用固定模型清单": "該提供商使用固定模型清單", "该次执行未完成,没有完整明细": "該次執行未完成,沒有完整明細", "请求日志页自动刷新": "請求日誌頁自動重新整理", "账号已不存在,未执行维护": "帳號已不存在,未執行維護", "软件版本检查": "軟體版本檢查", "还没有执行记录": "還沒有執行記錄", "逐个提供商更新模型目录,模型基础信息单独列出结果": "逐個提供商更新模型目錄,模型基礎資訊單獨列出結果", "部分失败": "部分失敗", "部分设置可能已保存,请核对后重试:{reason}": "部分設定可能已儲存,請核對後重試:{reason}", "重新加载": "重新載入", "重试生成新记录,不覆盖本次结果": "重試生成新記錄,不覆蓋本次結果", "间隔不能为空(可填 {min}–{max} {unit})": "間隔不能為空(可填 {min}–{max} {unit})", "间隔必须在 {min}–{max} {unit} 之间(当前填的是 {value})": "間隔必須在 {min}–{max} {unit} 之間(當前填的是 {value})", "间隔必须是 {min}–{max} 的整数": "間隔必須是 {min}–{max} 的整數", "间隔必须是整数": "間隔必須是整數", "页面刷新由浏览器执行,只在页面打开时生效": "頁面重新整理由瀏覽器執行,只在頁面開啟時生效", "页面自动刷新": "頁面自動重新整理", "debug 及以上": "debug 及以上", "info 及以上": "info 及以上", "warn 及以上": "warn 及以上", "{matched} / {total} 条": "{matched} / {total} 筆", "{minutes} 分 {seconds} 秒": "{minutes} 分 {seconds} 秒", "{n} 个启动失败": "{n} 個啟動失敗", "{n} 个已就绪": "{n} 個已就緒", "{n} 个等待恢复": "{n} 個等待恢復", "{n} 条": "{n} 筆", "{n} 毫秒": "{n} 毫秒", "✅ 已导出 {count} 条日志到 {file}": "✅ 已匯出 {count} 筆日誌至 {file}", "上游": "上游", "上游接口请求": "上游 API 請求", "事件摘要": "事件摘要", "事件日志时间范围": "事件日誌時間範圍", "事件详情": "事件詳情", "仅 error": "僅 error", "仅显示调试记录,供排查问题使用。": "僅顯示偵錯紀錄,供排查問題使用。", "仅错误": "僅錯誤", "余额查询失败": "餘額查詢失敗", "余额查询完成": "餘額查詢完成", "余额查询未配置": "餘額查詢未設定", "信息": "資訊", "信息及以上": "資訊及以上", "全部事件": "全部事件", "全部分类": "全部分類", "全部级别": "全部層級", "共享运行环境尚未就绪,不代表这个插件本身损坏。请在插件页查看加载诊断。": "共用執行環境尚未就緒,不代表這個外掛本身損壞。請在外掛頁查看載入診斷。", "关联标识": "關聯識別碼", "出站参数归一": "出站參數正規化", "分类": "分類", "分页按折叠后的组数计算": "分頁按摺疊後的群組數計算", "加载插件": "載入外掛", "原始消息": "原始訊息", "原始记录": "原始紀錄", "原始记录 {n} 条": "原始紀錄 {n} 筆", "发生时间": "發生時間", "各阶段耗时": "各階段耗時", "启动结果": "啟動結果", "启动超时": "啟動逾時", "启动进程": "啟動程序", "处理建议": "處理建議", "复制原始记录": "複製原始紀錄", "复制失败": "複製失敗", "复制当前筛选结果": "複製目前篩選結果", "复制本页原始记录": "複製本頁原始紀錄", "导出": "匯出", "导出当前筛选": "匯出目前篩選", "已复制 {n} 条日志": "已複製 {n} 筆日誌", "已暂停刷新": "已暫停重新整理", "恢复刷新": "恢復重新整理", "折叠重复日志": "摺疊重複日誌", "按分类筛选": "按分類篩選", "按最低级别筛选": "按最低層級篩選", "插件名称": "外掛名稱", "插件启动失败": "外掛啟動失敗", "插件启动存在异常": "外掛啟動存在異常", "插件启动完成,{n} 个已就绪": "外掛啟動完成,{n} 個已就緒", "插件启动超时": "外掛啟動逾時", "插件已就绪": "外掛已就緒", "插件已恢复运行": "外掛已恢復執行", "插件暂不可用,等待运行环境恢复": "外掛暫時無法使用,等待執行環境恢復", "插件暂时无法使用": "外掛暫時無法使用", "插件未能就绪": "外掛未能就緒", "插件未能正常停止": "外掛未能正常停止", "插件编号": "外掛識別碼", "插件进程已退出": "外掛程序已結束", "搜索关键字": "搜尋關鍵字", "搜索插件、消息、提供商或账号": "搜尋外掛、訊息、提供商或帳號", "搜索插件、消息、提供商或账号…": "搜尋外掛、訊息、提供商或帳號…", "搜索消息、提供商或账号": "搜尋訊息、提供商或帳號", "搜索消息、提供商或账号…": "搜尋訊息、提供商或帳號…", "搜索消息关键词": "搜尋訊息關鍵字", "搜索消息关键词…": "搜尋訊息關鍵字…", "操作失败:{error}": "操作失敗:{error}", "日志视图": "日誌檢視", "日志详情": "日誌詳情", "日志详情视图": "日誌詳情檢視", "显示 {groups} 组 · 原始记录 {entries} 条": "顯示 {groups} 組 · 原始紀錄 {entries} 筆", "显示启动汇总和需要关注的事件;单个插件的正常启动记录在“全部事件”中。": "顯示啟動彙整和需要注意的事件;個別外掛的正常啟動紀錄在「全部事件」中。", "显示所有已保留的事件;技术信息可在详情中查看。": "顯示所有已保留的事件;技術資訊可在詳情中查看。", "暂停刷新": "暫停重新整理", "暂无日志": "暫無日誌", "暂无日志可导出": "暫無日誌可匯出", "有 {n} 条新日志": "有 {n} 筆新日誌", "服务": "服務", "未记录插件名称": "未記錄外掛名稱", "本次启动超过等待时限。请在插件页查看加载诊断,确认后重新加载。": "本次啟動超過等待時限。請在外掛頁查看載入診斷,確認後重新載入。", "查看日志详情:{message}": "查看日誌詳情:{message}", "查看最新": "查看最新", "模型 {model}": "模型 {model}", "次数": "次數", "正在加载日志…": "正在載入日誌…", "没有符合条件的日志": "沒有符合條件的日誌", "没有符合筛选条件的日志": "沒有符合篩選條件的日誌", "清空中…": "清空中…", "清空当前筛选": "清空目前篩選", "清空运行日志": "清空執行日誌", "状态码": "狀態碼", "用时 {duration}": "耗時 {duration}", "登记提供商": "登錄提供商", "相关功能暂不可用,原因见详情": "相關功能暫時無法使用,原因請見詳情", "确定清空全部运行日志?清空后无法恢复。": "確定清空全部執行日誌?清空後無法恢復。", "确定清空当前筛选出的 {count} 条日志?清空后无法恢复。": "確定清空目前篩選出的 {count} 筆日誌?清空後無法恢復。", "系统事件": "系統事件", "级别": "層級", "结束阅读": "結束閱讀", "结果未确认": "結果未確認", "脱敏": "去識別化", "自动刷新": "自動重新整理", "自动刷新已关闭": "自動重新整理已關閉", "自动签到": "自動簽到", "补充系统消息": "補充系統訊息", "警告": "警告", "警告 {n}": "警告 {n}", "警告及以上": "警告與錯誤", "计费接口请求": "計費 API 請求", "详细信息": "詳細資訊", "请在插件页查看加载诊断,确认原因后重新加载。": "請在外掛頁查看載入診斷,確認原因後重新載入。", "读取日志失败": "讀取日誌失敗", "调试": "偵錯", "调试 {n}": "偵錯 {n}", "调试详情": "偵錯詳情", "调试采集未开启,仅显示已保留的记录。可在设置中开启调试模式。": "偵錯收集未開啟,僅顯示已保留的紀錄。可在設定中開啟偵錯模式以收集新紀錄。", "运行日志已清空": "執行日誌已清空", "部分插件暂不可用。请在插件页查看异常插件的加载诊断。": "部分外掛暫時無法使用。請在外掛頁查看異常外掛的載入診斷。", "重要事件": "重要事件", "错误": "錯誤", "错误 {n}": "錯誤 {n}", "阅读模式": "閱讀模式", "阅读模式,列表保持不动": "閱讀模式,清單保持不動", "附加数据": "附加資料", " · {n} 进行中": " · {n} 進行中", " · 会话粘住": " · 會話粘住", "

    无响应原文
    ": "
    無響應原文
    ", "
    无法解析响应内容
    ": "
    無法解析響應內容
    ", "
    无法解析请求体(不是含 messages 数组的 JSON)
    ": "
    無法解析請求體(不是含 messages 陣列的 JSON)
    ", "
    无请求原文
    ": "
    無請求原文
    ", "
    调用工具 {name}
    ": "
    呼叫工具 {name}
    ", "响应原文": "響應原文", "思考过程": "思考過程", "请求原文": "請求原文", "HTTP {status},但响应体阶段出错": "HTTP {status},但響應體階段出錯", "HTTP {status},但响应体阶段出错:见错误列": "HTTP {status},但響應體階段出錯:見錯誤列", "{duration} / 首帧 {first}": "{duration} / 首幀 {first}", "{m}分{s}秒": "{m}分{s}秒", "{n}秒": "{n}秒", "{s}秒{ms}ms": "{s}秒{ms}ms", "↻ {n} 次": "↻ {n} 次", "↻ 重试 {n} 次": "↻ 重試 {n} 次", "✅ 压缩完成": "✅ 壓縮完成", "「仅看进行中」开启时,状态固定为进行中": "「僅看進行中」開啟時,狀態固定為進行中", "上游模型繁忙,请求已排进上游队列;网关正按上游建议的时长等待后重发(不是登录态或额度问题)": "上游模型繁忙,請求已排進上游佇列;閘道器正按上游建議的時長等待後重發(不是登入態或額度問題)", "上游没有返回积分消耗": "上游沒有返回積分消耗", "上游状态码: {status}": "上游狀態碼: {status}", "上游请求已发出,正在等第一个字节到达(模型的思考时间也在这段)": "上游請求已發出,正在等第一個位元組到達(模型的思考時間也在這段)", "上游返回错误": "上游返回錯誤", "下游请求的模型:{model}": "下游請求的模型:{model}", "仅清空报文原文": "僅清空報文原文", "仅看进行中": "僅看進行中", "令牌": "權杖", "体积": "體積", "供应商": "供應商", "供应商归属规则": "供應商歸屬規則", "保存中…": "儲存中…", "保存归属规则": "儲存歸屬規則", "保留 {count} 条请求记录 · 将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "保留 {count} 條請求記錄 · 將清理上游除錯報文 {upstream} 條、下游正文 {downstream} 條 · 資料庫佔用 {db}", "保留 {count} 条请求记录;将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。用量统计与报表不变。": "保留 {count} 條請求記錄;將清理上游除錯報文 {upstream} 條、下游正文 {downstream} 條。用量統計與報表不變。", "保留统计行与报表,只抹掉请求 / 响应正文。清理后详情弹窗的「预览对话」将无原文可看,统计数字分毫不动。": "保留統計行與報表,只抹掉請求 / 響應正文。清理後詳情彈窗的「預覽對話」將無原文可看,統計數字分毫不動。", "保留草稿并读取最新设置": "保留草稿並讀取最新設定", "保留请求记录、用量统计与报表,同时清理上游调试报文和下游请求 / 响应正文。清理后「预览对话」与「原始报文」不再保留原文。有筛选时只清理命中请求的报文;无筛选时清空两侧全部报文。此操作无法恢复。": "保留請求記錄、用量統計與報表,同時清理上游除錯報文和下游請求 / 響應正文。清理後「預覽對話」與「原始報文」不再保留原文。有篩選時只清理命中請求的報文;無篩選時清空兩側全部報文。此操作無法恢復。", "全部删除": "全部刪除", "全部提供商": "全部提供商", "全部模型": "全部模型", "全部状态": "全部狀態", "全部请求数据": "全部請求資料", "共 {images} 张图片,复用 {cached} 张识读结果": "共 {images} 張圖片,複用 {cached} 張識讀結果", "共 {n} 次尝试": "共 {n} 次嘗試", "共 {n} 次尝试,最终由 {provider} 承载": "共 {n} 次嘗試,最終由 {provider} 承載", "其它": "其它", "内容按原样保存,请求头中的凭据字段已替换为 [redacted]": "內容按原樣儲存,請求頭中的憑據欄位已替換為 [redacted]", "内部重试": "內部重試", "切换视觉模型": "切換視覺模型", "切换路径:": "切換路徑:", "列表数据已刷新,请重试(关闭后重新打开这条详情)": "列表資料已重新整理,請重試(關閉後重新開啟這條詳情)", "删除归属规则": "刪除歸屬規則", "删除日志记录本身。当前有筛选时只删命中的条目,按天聚合报表不受影响;无筛选时清空全部并重置报表。此方式无法恢复。": "刪除日誌記錄本身。當前有篩選時只刪命中的條目,按天聚合報表不受影響;無篩選時清空全部並重置報表。此方式無法恢復。", "删除请求记录,并同步清理对应的上游调试报文与下游正文。有筛选时只删除命中的记录,按天聚合报表不受影响;无筛选时清空全部并重置报表。此操作无法恢复。": "刪除請求記錄,並同步清理對應的上游除錯報文與下游正文。有篩選時只刪除命中的記錄,按天聚合報表不受影響;無篩選時清空全部並重置報表。此操作無法恢復。", "加载更早的请求": "載入更早的請求", "压缩中…": "壓縮中…", "压缩失败:{message}": "壓縮失敗:{message}", "压缩已在后台开始,完成后会自动提示": "壓縮已在後臺開始,完成後會自動提示", "压缩已在进行中": "壓縮已在進行中", "压缩已在进行中,接上它的进度等待完成": "壓縮已在進行中,接上它的進度等待完成", "压缩数据库": "壓縮資料庫", "压缩正在后台执行,完成后自动恢复": "壓縮正在後臺執行,完成後自動恢復", "原始报文": "原始報文", "原模型": "原模型", "发给上游的模型": "發給上游的模型", "取消": "取消", "另有 {missing} 次尝试未记录明细(只保留最早的 {kept} 条)": "另有 {missing} 次嘗試未記錄明細(只保留最早的 {kept} 條)", "另有 {n} 个词命中": "另有 {n} 個詞命中", "只显示正在转发中的请求(状态列按阶段显示:连接中 / 等待响应 / 响应中 / 重试中,用时列显示已用时)": "只顯示正在轉發中的請求(狀態列按階段顯示:連線中 / 等待響應 / 響應中 / 重試中,用時列顯示已用時)", "只看失败": "只看失敗", "只看成功": "只看成功", "只看进行中": "只看進行中", "命中了敏感词": "命中了敏感詞", "命中依据:{header} · {pattern}": "命中依據:{header} · {pattern}", "命中的敏感词": "命中的敏感詞", "命中规则:{provider} → {client}": "命中規則:{provider} → {client}", "响应中": "響應中", "响应体": "響應體", "响应头": "響應頭", "回收已删除数据占用的磁盘空间(checkpoint + VACUUM,后台执行)": "回收已刪除資料佔用的磁碟空間(checkpoint + VACUUM,後臺執行)", "图片处理用时:{n} 秒": "圖片處理用時:{n} 秒", "在设置 → 通用里开启「调试模式」后,新发生的请求才会保存报文": "在設定 → 通用裡開啟「除錯模式」後,新發生的請求才會儲存報文", "在路由页查看": "在路由頁檢視", "在途 {n}": "在途 {n}", "处理中": "處理中", "失败": "失敗", "失败请求不记录用量": "失敗請求不記錄用量", "失败({status}):{error}": "失敗({status}):{error}", "失败:{error}": "失敗:{error}", "实际发给上游 {bytes} 字节": "實際發給上游 {bytes} 位元組", "客户端": "客戶端", "客户端请求的模型": "客戶端請求的模型", "将删除 {count} 条日志 · 其中 {raw} 条仍带报文原文 · 数据库占用 {db}": "將刪除 {count} 條日誌 · 其中 {raw} 條仍帶報文原文 · 資料庫佔用 {db}", "将删除 {count} 条请求记录 · 同步清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "將刪除 {count} 條請求記錄 · 同步清理上游除錯報文 {upstream} 條、下游正文 {downstream} 條 · 資料庫佔用 {db}", "将删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "將刪除 {count} 條請求記錄,並清理上游除錯報文 {upstream} 條、下游正文 {downstream} 條。", "尝试 {n} ·": "嘗試 {n} ·", "尝试明细": "嘗試明細", "尝试次数": "嘗試次數", "尝试链": "嘗試鏈", "工具结果": "工具結果", "工具结果 · {id}": "工具結果 · {id}", "工具结果图片": "工具結果圖片", "已删除 {count} 条": "已刪除 {count} 條", "已删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "已刪除 {count} 條請求記錄,並清理上游除錯報文 {upstream} 條、下游正文 {downstream} 條。", "已受理终止:上游连接已断开,列表稍后刷新为「请求已被手动终止」": "已受理終止:上游連線已斷開,列表稍後重新整理為「請求已被手動終止」", "已完成": "已完成", "已抹掉 {count} 条报文原文": "已抹掉 {count} 條報文原文", "已清理上游调试报文 {upstream} 条、下游正文 {downstream} 条;请求记录与报表已保留。": "已清理上游除錯報文 {upstream} 條、下游正文 {downstream} 條;請求記錄與報表已保留。", "已用时(请求仍在转发中)": "已用時(請求仍在轉發中)", "开启调试模式后仅记录新请求,历史对话无法补录;关闭不会删除已有记录。": "開啟偵錯模式後僅記錄新請求,歷史對話無法補錄;關閉不會刪除已有記錄。", "归属客户端": "歸屬客戶端", "当前筛选下没有记录": "當前篩選下沒有記錄", "当前筛选范围": "當前篩選範圍", "当前网关未提供上游 / 下游清理统计,请更新网关后再清理。": "當前閘道器未提供上游 / 下游清理統計,請更新閘道器後再清理。", "成功": "成功", "成功({status})": "成功({status})", "所属请求": "所屬請求", "执行清理": "執行清理", "报文超过单条上限,请求体 / 响应体已按上限截断": "報文超過單條上限,請求體 / 響應體已按上限截斷", "抹掉原文": "抹掉原文", "按提供商筛选": "按提供商篩選", "按提供商筛选(只列日志里出现过的)": "按提供商篩選(只列日誌裡出現過的)", "按时间倒序,全量保留": "按時間倒序,全量保留", "按模型筛选": "按模型篩選", "按模型筛选(只列日志里出现过的;精确匹配模型名)": "按模型篩選(只列日誌裡出現過的;精確匹配模型名)", "按请求结果筛选": "按請求結果篩選", "换号链:{chain}": "換號鏈:{chain}", "排队中": "排隊中", "提供商 / 账号": "提供商 / 帳號", "提供商: {provider}": "提供商: {provider}", "提示": "提示", "搜索供应商": "搜尋供應商", "搜索客户端": "搜尋客戶端", "敏": "敏", "敏感词": "敏感詞", "数据库占用包含主文件与 WAL 文件;清理后可点击「压缩数据库」回收空闲空间。": "資料庫佔用包含主檔案與 WAL 檔案;清理後可點擊「壓縮資料庫」回收空閒空間。", "断开上游连接,明细记为「请求已被手动终止」": "斷開上游連線,明細記為「請求已被手動終止」", "无报文原文(未开启「调试模式」,或已被清理)": "無報文原文(未開啟「除錯模式」,或已被清理)", "无结果记录": "無結果記錄", "旧版本保存的正文可能已截断,无法恢复缺失内容": "舊版本儲存的正文可能已截斷,無法恢復缺失內容", "时间": "時間", "暂无请求日志": "暫無請求日誌", "暂无请求日志,网关还没有转发过请求": "暫無請求日誌,閘道器還沒有轉發過請求", "最终归属(记账时的客户端)": "最終歸屬(記賬時的客戶端)", "最终承载:{picked}": "最終承載:{picked}", "有重试": "有重試", "未改写,保留识别结果": "未改寫,保留識別結果", "本次请求消耗 {credit} 积分": "本次請求消耗 {credit} 積分", "本轮尝试失败,正在退避等待或切换到下一个账号": "本輪嘗試失敗,正在退避等待或切換到下一個帳號", "来源客户端": "來源客戶端", "来源客户端:{client}": "來源客戶端:{client}", "查看该请求的上游原始报文": "檢視該請求的上游原始報文", "模型": "模型", "模型映射:{from} → {to}": "模型對映:{from} → {to}", "模型测试": "模型測試", "模型管理页操作列那颗「测试」发起的请求:与真实请求同一条转发链路,但不计入报表统计": "模型管理頁操作列那顆「測試」發起的請求:與真實請求同一條轉發鏈路,但不計入報表統計", "正在加载请求日志…": "正在載入請求日誌…", "正在统计…": "正在統計…", "正文超过单条上限,可能已被截断": "正文超過單條上限,可能已被截斷", "没有符合筛选条件的请求": "沒有符合篩選條件的請求", "添加自定义头匹配规则…": "新增自定義頭匹配規則…", "清理": "清理", "清理中…": "清理中…", "清理失败:{message}": "清理失敗:{message}", "清理方式": "清理方式", "清理请求已返回,但结果数据不完整,请刷新后确认。": "清理請求已返回,但結果資料不完整,請重新整理後確認。", "清理请求日志": "清理請求日誌", "清理预览数据不完整": "清理預覽資料不完整", "清空两侧原文": "清空兩側原文", "生产请求": "生產請求", "生成速度:输出 token ÷ 流式段用时(总用时 − 首响);流式段不足总用时一半时按总用时计": "生成速度:輸出 token ÷ 流式段用時(總用時 − 首響);流式段不足總用時一半時按總用時計", "用时": "用時", "用量": "用量", "确定对{scope}执行「{label}」?
    {summary}
    此操作无法恢复。": "確定對{scope}執行「{label}」?
    {summary}
    此操作無法恢復。", "确定对全部请求日志执行「{label}」?将处理 {count} 条,此操作无法恢复。": "確定對全部請求日誌執行「{label}」?將處理 {count} 條,此操作無法恢復。", "确定按当前筛选执行「{label}」?将处理 {count} 条,此操作无法恢复。": "確定按當前篩選執行「{label}」?將處理 {count} 條,此操作無法恢復。", "确定终止这条正在转发的请求?
    上游连接会立即断开,明细将记为「请求已被手动终止」。": "確定終止這條正在轉發的請求?
    上游連線會立即斷開,明細將記為「請求已被手動終止」。", "等待响应": "等待響應", "策略 {strategy} · 会话粘性 {sticky}{hit}": "策略 {strategy} · 會話粘性 {sticky}{hit}", "终止": "終止", "终止失败:{error}": "終止失敗:{error}", "终止请求": "終止請求", "结果": "結果", "缓存读取: - / 命中率: -": "快取讀取: - / 命中率: -", "缓存读取: {cache} / 命中率: {rate}": "快取讀取: {cache} / 命中率: {rate}", "编辑这条头匹配规则…": "編輯這條頭匹配規則…", "耗时": "耗時", "脱敏命中:{words}": "脫敏命中:{words}", "自定义 · {name}": "自定義 · {name}", "被跳过:": "被跳過:", "设置识别规则": "設定識別規則", "识别到 User-Agent,但不属于已知的客户端类型:{ua}": "識別到 User-Agent,但不屬於已知的客戶端型別:{ua}", "识别结果(请求头识别出的真实客户端)": "識別結果(請求頭識別出的真實客戶端)", "识图用量按实际视觉账号单独记录,不混入原模型的回答用量。": "識圖用量按實際視覺帳號單獨記錄,不混入原模型的回答用量。", "该供应商已有归属规则,保存将覆盖它": "該供應商已有歸屬規則,儲存將覆蓋它", "详情": "詳情", "详情内容": "詳情內容", "请求体": "請求體", "请求图片": "請求圖片", "请求在任何账号接手之前就失败了": "請求在任何帳號接手之前就失敗了", "请求头": "請求頭", "请求头识别为 {identified},已改写归属为 {client}": "請求頭識別為 {identified},已改寫歸屬為 {client}", "请求已受理,正在选路、取凭证、建立上游连接": "請求已受理,正在選路、取憑證、建立上游連線", "请求日志列表": "請求日誌列表", "请求日志时间范围": "請求日誌時間範圍", "请求日志表": "請求日誌表", "请求正在转发中,用时列显示的是已用时": "請求正在轉發中,用時列顯示的是已用時", "请求筛选": "請求篩選", "请求详情": "請求詳情", "请选择供应商": "請選擇供應商", "请选择归属客户端": "請選擇歸屬客戶端", "读取请求日志失败,详见控制台": "讀取請求日誌失敗,詳見控制台", "路由回放": "路由回放", "转发到上游的模型:{model}": "轉發到上游的模型:{model}", "轮次": "輪次", "辅助识图": "輔助識圖", "辅助识图调用": "輔助識圖呼叫", "输入 Token": "輸入 Token", "输入 {input} · 输出 {output} · 总计 {total} · 缓存读 {cache}": "輸入 {input} · 輸出 {output} · 總計 {total} · 快取讀 {cache}", "输出 Token": "輸出 Token", "这条报文由旧版本截断保存,缺失内容无法恢复": "這條報文由舊版本截斷儲存,缺失內容無法恢復", "这条明细是一次模型测试(人工发起):走的是真实转发链路,但不计入报表统计": "這條明細是一次模型測試(人工發起):走的是真實轉發鏈路,但不計入報表統計", "这条明细没有记录提供商(旧数据或请求未走到转发)": "這條明細沒有記錄提供商(舊資料或請求未走到轉發)", "这条明细没有记录来源客户端(旧数据、模型测试,或请求未带 User-Agent)": "這條明細沒有記錄來源客戶端(舊資料、模型測試,或請求未帶 User-Agent)", "这条记录命中了敏感词,但没有留下命中明细": "這條記錄命中了敏感詞,但沒有留下命中明細", "这条记录的尝试明细未采集(该字段上线前的旧数据,或请求在转发前就失败)": "這條記錄的嘗試明細未採集(該欄位上線前的舊資料,或請求在轉發前就失敗)", "这条请求没有保存这一段报文": "這條請求沒有儲存這一段報文", "这条请求没有记录供应商(旧数据或未走到转发),不能从这里改归属": "這條請求沒有記錄供應商(舊資料或未走到轉發),不能從這裡改歸屬", "进入「{phase}」阶段已持续 {time}": "進入「{phase}」階段已持續 {time}", "进行中": "進行中", "进行中…": "進行中…", "连接中": "連線中", "选择供应商": "選擇供應商", "选择归属客户端": "選擇歸屬客戶端", "速度": "速度", "重试 {n}": "重試 {n}", "重试 {n} 次": "重試 {n} 次", "重试中": "重試中", "重试次数": "重試次數", "面板内发起的模型调用,消耗额度并记录 Key,不计入生产报表": "面板內發起的模型呼叫,消耗額度並記錄 Key,不計入正式流量報表", "预览对话": "預覽對話", "预览读取失败": "預覽讀取失敗", "预览读取失败:{error}": "預覽讀取失敗:{error}", "额外识图用量:{n} Token": "額外識圖用量:{n} Token", "首响": "首響", "首响 {time}": "首響 {time}", "首响:上游首帧到达的耗时": "首響:上游首幀到達的耗時", "首响:上游首帧到达的耗时(请求仍在转发中)": "首響:上游首幀到達的耗時(請求仍在轉發中)", "首帧已到,上游内容正在下发": "首幀已到,上游內容正在下發", "默认归属客户端": "預設歸屬客戶端", "(请求仍在转发中)": "(請求仍在轉發中)", "(账号:{account})": "(帳號:{account})", ",{n}毫秒后重试": ",{n}毫秒後重試", ",{n}秒后重试": ",{n}秒後重試", "{name}的列设置": "{name}的列設定", "「{label}」列的对齐": "「{label}」列的對齊", "中": "中", "共 0 条": "共 0 條", "共 {total} 条 · 当前第 {start}–{end} 条": "共 {total} 條 · 當前第 {start}–{end} 條", "共 {total} 条(全部显示)": "共 {total} 條(全部顯示)", "列": "列", "列设置": "列設定", "右": "右", "对齐": "對齊", "左": "左", "当前只有一页": "當前只有一頁", "拖动 ⋮⋮ 调整顺序": "拖動 ⋮⋮ 調整順序", "按住拖动调整列顺序": "按住拖動調整列順序", "显示「{label}」列": "顯示「{label}」列", "条": "條", "每页": "每頁", "每页条数": "每頁條數", "调整「{name}」的列:显示 / 隐藏、顺序、对齐": "調整「{name}」的列:顯示 / 隱藏、順序、對齊", "跳至": "跳至", "跳转到指定页": "跳轉到指定頁", "跳转到第 1–{pageCount} 页": "跳轉到第 1–{pageCount} 頁", "这一列已隐藏": "這一列已隱藏", "这一列正在显示": "這一列正在顯示", "页": "頁", "PID:{pid}": "PID:{pid}", "{label} · {port}": "{label} · {port}", "。已经把这个地址填进其它工具(Claude Code、Cherry Studio 等)的,需要一并改成新地址,否则那些工具会连不上。": "。已經把這個地址填進其它工具(Claude Code、Cherry Studio 等)的,需要一併改成新地址,否則那些工具會連不上。", "与当前端口相同,无需重启": "與當前連接埠相同,無需重啟", "例如 3066": "例如 3066", "即将结束以下进程:": "即將結束以下程序:", "已结束进程 {name}(PID {pid}),端口已释放": "已結束程序 {name}(PID {pid}),連接埠已釋放", "当前状态": "當前狀態", "当前端口 {port},网关运行正常。": "當前連接埠 {port},閘道器執行正常。", "换端口后要改的地方": "換連接埠後要改的地方", "新端口": "新連接埠", "更换端口": "更換連接埠", "更换网关端口": "更換閘道器連接埠", "本地网关正在监听 {url},可直接调用 OpenAI 兼容接口": "本地閘道器正在監聽 {url},可直接呼叫 OpenAI 相容介面", "校验中…": "校驗中…", "正在检查… · {port}": "正在檢查… · {port}", "正在确认网关是否已就绪": "正在確認閘道器是否已就緒", "正在重启…": "正在重啟…", "端口 {port} 上没有查到监听进程,请改用「更换端口」": "連接埠 {port} 上沒有查到監聽程序,請改用「更換連接埠」", "端口号": "連接埠號", "端口已改为 {port},正在重启…": "連接埠已改為 {port},正在重啟…", "端口已释放。现在重启程序让网关用这个端口启动?": "連接埠已釋放。現在重啟程式讓閘道器用這個連接埠啟動?", "端口需在 1024-65535 之间": "連接埠需在 1024-65535 之間", "端口需在 1024-65535 之间。1023 及以下是系统保留范围,普通程序无法监听。": "連接埠需在 1024-65535 之間。1023 及以下是系統保留範圍,普通程式無法監聽。", "结束中…": "結束中…", "结束占用端口的进程": "結束佔用連接埠的程序", "结束占用进程": "結束佔用程序", "结束失败:{reason}": "結束失敗:{reason}", "结束它会强制退出该程序未保存的数据。确认继续?": "結束它會強制退出該程式未儲存的資料。確認繼續?", "结束进程": "結束程序", "网关启动中… · {port}": "閘道器啟動中… · {port}", "网关启动失败": "閘道器啟動失敗", "网关地址会变成 ": "閘道器地址會變成 ", "网关运行中 · {port}": "閘道器執行中 · {port}", "该端口不可用": "該連接埠不可用", "路径:{path}": "路徑:{path}", "进程名:{name}": "程序名:{name}", "进程已结束,但端口仍被占用,建议改用「更换端口」": "程序已結束,但連接埠仍被佔用,建議改用「更換連接埠」", "重启": "重啟", "重启中…": "重啟中…", "重启失败:{reason}": "重啟失敗:{reason}", "重启程序": "重啟程式", "(未知)": "(未知)" }); diff --git a/desktop-tauri/ui/i18n/en/requests.js b/desktop-tauri/ui/i18n/en/requests.js index 2e8946b8..4d9ec2bc 100644 --- a/desktop-tauri/ui/i18n/en/requests.js +++ b/desktop-tauri/ui/i18n/en/requests.js @@ -1,2 +1,2 @@ /* Agent2API 词典构建产物:en/requests —— 由 desktop-tauri/i18n/build.mjs 生成,请勿手改;源头是 i18n-src/*.json */ -window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { " · {n} 进行中": " · {n} in progress", " · 会话粘住": " · session stuck", "
    无响应原文
    ": "
    No raw response
    ", "
    无法解析响应内容
    ": "
    Unable to parse response content
    ", "
    无法解析请求体(不是含 messages 数组的 JSON)
    ": "
    Unable to parse request body (not JSON with a messages array)
    ", "
    无请求原文
    ": "
    No raw request
    ", "
    调用工具 {name}
    ": "
    Tool call {name}
    ", "响应原文": "Raw response", "思考过程": "Reasoning process", "请求原文": "Raw request", "HTTP {status},但响应体阶段出错": "HTTP {status}, but the response body phase failed", "HTTP {status},但响应体阶段出错:见错误列": "HTTP {status}, but the response body phase failed: see the error column", "{duration} / 首帧 {first}": "{duration} / TTFB {first}", "{m}分{s}秒": "{m}m {s}s", "{n}秒": "{n}s", "{s}秒{ms}ms": "{s}s {ms}ms", "↻ {n} 次": "↻ {n} times", "↻ 重试 {n} 次": "↻ Retried {n} times", "✅ 压缩完成": "✅ Vacuum complete", "「仅看进行中」开启时,状态固定为进行中": "When \"In progress only\" is on, the status is pinned to In progress", "上游模型繁忙,请求已排进上游队列;网关正按上游建议的时长等待后重发(不是登录态或额度问题)": "Upstream model is busy; the request is queued upstream and the Gateway will resend it after the wait suggested by the upstream (not a login-session or quota problem)", "上游没有返回积分消耗": "The upstream did not report points consumption", "上游状态码: {status}": "Upstream status code: {status}", "上游请求已发出,正在等第一个字节到达(模型的思考时间也在这段)": "Upstream request sent, waiting for the first byte to arrive (model thinking time is included here)", "上游返回错误": "Upstream returned an error", "下游请求的模型:{model}": "Model requested downstream: {model}", "仅清空报文原文": "Clear raw payloads only", "仅看进行中": "In progress only", "令牌": "Tokens", "体积": "Size", "保留 {count} 条请求记录 · 将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "Keep {count} request records · Clear {upstream} upstream debug payloads and {downstream} downstream bodies · Database size {db}", "保留 {count} 条请求记录;将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。用量统计与报表不变。": "Keeps {count} request records; clears {upstream} upstream debug payloads and {downstream} downstream bodies. Usage statistics and reports remain unchanged.", "保留统计行与报表,只抹掉请求 / 响应正文。清理后详情弹窗的「预览对话」将无原文可看,统计数字分毫不动。": "Keeps stats rows and reports, and only wipes the request / response bodies. After clearing, \"Conversation preview\" in the detail dialog will have no raw content to show and the stats numbers stay exactly the same.", "保留请求记录、用量统计与报表,同时清理上游调试报文和下游请求 / 响应正文。清理后「预览对话」与「原始报文」不再保留原文。有筛选时只清理命中请求的报文;无筛选时清空两侧全部报文。此操作无法恢复。": "Keeps request records, usage statistics, and reports while clearing upstream debug payloads and downstream request / response bodies. Conversation preview and Raw payload will no longer contain the original content. With filters active, only payloads for matching requests are cleared; without filters, all payloads on both sides are cleared. This cannot be undone.", "全部删除": "Delete all", "全部提供商": "All providers", "全部模型": "All models", "全部状态": "All statuses", "全部请求数据": "all request data", "共 {images} 张图片,复用 {cached} 张识读结果": "{images} images; {cached} readings reused", "共 {n} 次尝试": "{n} attempts total", "共 {n} 次尝试,最终由 {provider} 承载": "{n} attempts total, finally served by {provider}", "其它": "Other", "内容按原样保存,请求头中的凭据字段已替换为 [redacted]": "Content is saved as-is; credential fields in the request headers have been replaced with [redacted]", "内部重试": "Internal retry", "切换路径:": "Switch path:", "列表数据已刷新,请重试(关闭后重新打开这条详情)": "List data has been refreshed; please try again (close and reopen this detail)", "删除日志记录本身。当前有筛选时只删命中的条目,按天聚合报表不受影响;无筛选时清空全部并重置报表。此方式无法恢复。": "Deletes the log records themselves. With filters active, only matching entries are deleted and daily aggregate reports are unaffected; with no filters, everything is cleared and reports are reset. This cannot be undone.", "删除请求记录,并同步清理对应的上游调试报文与下游正文。有筛选时只删除命中的记录,按天聚合报表不受影响;无筛选时清空全部并重置报表。此操作无法恢复。": "Deletes request records together with their upstream debug payloads and downstream bodies. With filters active, only matching records are deleted and daily reports are preserved; without filters, all data is cleared and reports are reset. This cannot be undone.", "压缩中…": "Vacuuming…", "压缩失败:{message}": "Vacuum failed: {message}", "压缩已在后台开始,完成后会自动提示": "Vacuum started in the background; you will be notified when it completes", "压缩已在进行中": "Vacuum already in progress", "压缩已在进行中,接上它的进度等待完成": "Vacuum already in progress; joining it and waiting for it to finish", "压缩数据库": "Vacuum database", "压缩正在后台执行,完成后自动恢复": "Vacuum is running in the background; it resumes automatically when it completes", "原始报文": "Raw payload", "原模型": "Original model", "另有 {missing} 次尝试未记录明细(只保留最早的 {kept} 条)": "{missing} more attempts have no details recorded (only the earliest {kept} are kept)", "另有 {n} 个词命中": "{n} more words hit", "只显示正在转发中的请求(状态列按阶段显示:连接中 / 等待响应 / 响应中 / 重试中,用时列显示已用时)": "Only shows requests currently being forwarded (the status column shows the phase: Connecting / Awaiting response / Streaming / Retrying; the duration column shows elapsed time)", "只看失败": "Failed only", "只看成功": "Success only", "只看进行中": "In progress only", "命中了敏感词": "Sensitive word hit", "命中的敏感词": "Sensitive words hit", "响应中": "Streaming", "响应体": "Response body", "响应头": "Response headers", "回收已删除数据占用的磁盘空间(checkpoint + VACUUM,后台执行)": "Reclaims the disk space used by deleted data (checkpoint + VACUUM, runs in the background)", "图片处理用时:{n} 秒": "Image processing time: {n} seconds", "在设置 → 通用里开启「调试模式」后,新发生的请求才会保存报文": "Raw payloads are only saved for requests made after \"Debug mode\" is enabled in Settings → General", "在路由页查看": "View on the Routing page", "处理中": "Processing", "失败请求不记录用量": "Usage is not recorded for failed requests", "失败({status}):{error}": "Failed ({status}): {error}", "失败:{error}": "Failed: {error}", "实际发给上游 {bytes} 字节": "{bytes} bytes actually sent upstream", "客户端": "Client", "将删除 {count} 条日志 · 其中 {raw} 条仍带报文原文 · 数据库占用 {db}": "Will delete {count} logs · {raw} of them still carry raw payloads · database size {db}", "将删除 {count} 条请求记录 · 同步清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "Delete {count} request records · Clear {upstream} upstream debug payloads and {downstream} downstream bodies · Database size {db}", "将删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "Deletes {count} request records and clears {upstream} upstream debug payloads and {downstream} downstream bodies.", "尝试 {n} ·": "Attempt {n} ·", "尝试明细": "Attempt details", "尝试次数": "Attempts", "工具结果": "Tool result", "工具结果 · {id}": "Tool result · {id}", "工具结果图片": "Tool result image", "已删除 {count} 条": "{count} logs deleted", "已删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "Deleted {count} request records and cleared {upstream} upstream debug payloads and {downstream} downstream bodies.", "已受理终止:上游连接已断开,列表稍后刷新为「请求已被手动终止」": "Abort accepted: the upstream connection is closed; the list will refresh to \"Request manually aborted\" shortly", "已抹掉 {count} 条报文原文": "Raw payloads wiped for {count} logs", "已清理上游调试报文 {upstream} 条、下游正文 {downstream} 条;请求记录与报表已保留。": "Cleared {upstream} upstream debug payloads and {downstream} downstream bodies; request records and reports were preserved.", "已用时(请求仍在转发中)": "Elapsed time (request is still being forwarded)", "开启调试模式后仅记录新请求,历史对话无法补录;关闭不会删除已有记录。": "Debug mode records only new requests; past conversations cannot be recovered. Turning it off does not delete existing records.", "当前筛选范围": "the current filter results", "当前网关未提供上游 / 下游清理统计,请更新网关后再清理。": "This gateway does not provide upstream / downstream cleanup counts. Update the gateway before clearing data.", "成功": "Success", "成功({status})": "Success ({status})", "所属请求": "Parent request", "执行清理": "Run clear", "报文超过单条上限,请求体 / 响应体已按上限截断": "Payload exceeds the per-record limit; the request / response bodies have been truncated to the limit", "抹掉原文": "Wipe raw payloads", "按提供商筛选": "Filter by provider", "按提供商筛选(只列日志里出现过的)": "Filter by provider (only lists providers seen in the logs)", "按时间倒序,全量保留": "Reverse chronological order; kept in full", "按模型筛选": "Filter by model", "按模型筛选(只列日志里出现过的;精确匹配模型名)": "Filter by model (only lists models seen in the logs; matches the exact model name)", "按请求结果筛选": "Filter by request result", "排队中": "Queued", "提供商 / 账号": "Provider / Account", "提供商: {provider}": "Provider: {provider}", "提示": "Notice", "敏": "SW", "敏感词": "Sensitive words", "数据库占用包含主文件与 WAL 文件;清理后可点击「压缩数据库」回收空闲空间。": "Database size includes the main file and WAL file. After clearing data, use Vacuum database to reclaim unused space.", "断开上游连接,明细记为「请求已被手动终止」": "Disconnects the upstream connection and records the detail as \"Request manually aborted\"", "无报文原文(未开启「调试模式」,或已被清理)": "No raw payload (debug mode was off, or it has been cleared)", "无结果记录": "No result recorded", "旧版本保存的正文可能已截断,无法恢复缺失内容": "The body saved by an older version may be truncated; missing content cannot be recovered", "时间": "Time", "暂无请求日志,网关还没有转发过请求": "No request logs yet; the Gateway hasn't forwarded any requests", "最终承载:{picked}": "Finally served by: {picked}", "本次请求消耗 {credit} 积分": "Points consumed by this request: {credit}", "本轮尝试失败,正在退避等待或切换到下一个账号": "This attempt failed; backing off or switching to the next account", "来源客户端:{client}": "Source client: {client}", "查看该请求的上游原始报文": "View the raw upstream payload for this request", "模型": "Model", "模型测试": "Model test", "模型管理页操作列那颗「测试」发起的请求:与真实请求同一条转发链路,但不计入报表统计": "Requests started by the \"Test\" button in the action column of the Model Management page: the same forwarding path as real requests, but not counted in reports", "正在加载请求日志…": "Loading request logs…", "正在统计…": "Calculating…", "正文超过单条上限,可能已被截断": "Body exceeds the per-record limit and may have been truncated", "没有符合筛选条件的请求": "No requests match the current filters", "清理": "Clear", "清理中…": "Clearing…", "清理失败:{message}": "Clear failed: {message}", "清理方式": "Clear mode", "清理请求已返回,但结果数据不完整,请刷新后确认。": "The cleanup request returned incomplete result data. Refresh to confirm the outcome.", "清理请求日志": "Clear request logs", "清理预览数据不完整": "Cleanup preview data is incomplete", "清空两侧原文": "Clear both sides", "生产请求": "Production requests", "生成速度:输出 token ÷ 流式段用时(总用时 − 首响);流式段不足总用时一半时按总用时计": "Generation speed: output tokens ÷ streaming time (total duration − TTFB); falls back to total duration when the streaming window is under half the request", "用时": "Duration", "用量": "Usage", "确定对{scope}执行「{label}」?
    {summary}
    此操作无法恢复。": "Run {label} on {scope}?
    {summary}
    This cannot be undone.", "确定对全部请求日志执行「{label}」?将处理 {count} 条,此操作无法恢复。": "Run \"{label}\" on all request logs? This will process {count} entries and cannot be undone.", "确定按当前筛选执行「{label}」?将处理 {count} 条,此操作无法恢复。": "Run \"{label}\" on the current filter results? This will process {count} entries and cannot be undone.", "确定终止这条正在转发的请求?
    上游连接会立即断开,明细将记为「请求已被手动终止」。": "Abort this request that is being forwarded?
    The upstream connection will be closed immediately and the detail will be recorded as \"Request manually aborted\".", "等待响应": "Awaiting response", "策略 {strategy} · 会话粘性 {sticky}{hit}": "Strategy {strategy} · Stickiness {sticky}{hit}", "终止": "Abort", "终止失败:{error}": "Abort failed: {error}", "终止请求": "Abort request", "结果": "Result", "缓存读取: - / 命中率: -": "Cache reads: - / Hit rate: -", "缓存读取: {cache} / 命中率: {rate}": "Cache reads: {cache} / Hit rate: {rate}", "耗时": "Duration", "被跳过:": "Skipped: ", "识别到 User-Agent,但不属于已知的客户端类型:{ua}": "User-Agent present but not a known client type: {ua}", "识图用量按实际视觉账号单独记录,不混入原模型的回答用量。": "Vision usage is recorded separately against the actual vision account, not mixed with the original model's answer usage.", "详情": "Details", "详情内容": "Detail content", "请求体": "Request body", "请求图片": "Request image", "请求在任何账号接手之前就失败了": "The request failed before any account picked it up", "请求头": "Request headers", "请求已受理,正在选路、取凭证、建立上游连接": "Request accepted; selecting a route, fetching credentials, and establishing the upstream connection", "请求日志列表": "Request Logs", "请求日志时间范围": "Request Logs time range", "请求日志表": "Request Logs table", "请求正在转发中,用时列显示的是已用时": "The request is being forwarded; the duration column shows elapsed time", "请求筛选": "Request filters", "请求详情": "Request details", "读取请求日志失败,详见控制台": "Failed to load request logs; see the console for details", "路由回放": "Routing replay", "转发到上游的模型:{model}": "Model forwarded to the upstream: {model}", "轮次": "Round", "辅助识图调用": "Assisted image reading call", "输入 {input} · 输出 {output} · 总计 {total} · 缓存读 {cache}": "Input {input} · Output {output} · Total {total} · Cache reads {cache}", "这条报文由旧版本截断保存,缺失内容无法恢复": "This payload was truncated by an older version; missing content cannot be recovered", "这条明细是一次模型测试(人工发起):走的是真实转发链路,但不计入报表统计": "This detail row is a model test (manually started): it takes the same forwarding path as real requests but is not counted in reports", "这条明细没有记录提供商(旧数据或请求未走到转发)": "No provider is recorded for this detail row (old data, or the request never reached forwarding)", "这条明细没有记录来源客户端(旧数据、模型测试,或请求未带 User-Agent)": "No source client recorded for this entry (legacy data, model test, or request without User-Agent)", "这条记录命中了敏感词,但没有留下命中明细": "This record hit a sensitive word, but no hit details were kept", "这条记录的尝试明细未采集(该字段上线前的旧数据,或请求在转发前就失败)": "Attempt details were not collected for this record (old data from before this field existed, or the request failed before forwarding)", "这条请求没有保存这一段报文": "This request did not save this payload section", "进入「{phase}」阶段已持续 {time}": "In \"{phase}\" phase for {time}", "进行中": "In progress", "进行中…": "In progress…", "连接中": "Connecting", "速度": "Speed", "重试 {n}": "Retry {n}", "重试中": "Retrying", "重试次数": "Retries", "面板内发起的模型调用,消耗额度并记录 Key,不计入生产报表": "Model call started from the panel; uses quota and records the API Key, but is excluded from production reports", "预览对话": "Conversation preview", "预览读取失败": "Failed to load preview", "预览读取失败:{error}": "Failed to load preview: {error}", "额外识图用量:{n} Token": "Additional vision usage: {n} tokens", "首响 {time}": "TTFB {time}", "首响:上游首帧到达的耗时": "TTFB: time to first byte from the upstream", "首响:上游首帧到达的耗时(请求仍在转发中)": "TTFB: time to first byte from the upstream (request is still being forwarded)", "首帧已到,上游内容正在下发": "First byte received; upstream content is streaming in", "(请求仍在转发中)": "(request is still being forwarded)", "(账号:{account})": "(Account: {account})", ",{n}毫秒后重试": ", retry in {n}ms", ",{n}秒后重试": ", retry in {n}s" }); +window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { " · {n} 进行中": " · {n} in progress", " · 会话粘住": " · session stuck", "
    无响应原文
    ": "
    No raw response
    ", "
    无法解析响应内容
    ": "
    Unable to parse response content
    ", "
    无法解析请求体(不是含 messages 数组的 JSON)
    ": "
    Unable to parse request body (not JSON with a messages array)
    ", "
    无请求原文
    ": "
    No raw request
    ", "
    调用工具 {name}
    ": "
    Tool call {name}
    ", "响应原文": "Raw response", "思考过程": "Reasoning process", "请求原文": "Raw request", "HTTP {status},但响应体阶段出错": "HTTP {status}, but the response body phase failed", "HTTP {status},但响应体阶段出错:见错误列": "HTTP {status}, but the response body phase failed: see the error column", "{duration} / 首帧 {first}": "{duration} / TTFB {first}", "{m}分{s}秒": "{m}m {s}s", "{n}秒": "{n}s", "{s}秒{ms}ms": "{s}s {ms}ms", "↻ {n} 次": "↻ {n} times", "↻ 重试 {n} 次": "↻ Retried {n} times", "✅ 压缩完成": "✅ Vacuum complete", "「仅看进行中」开启时,状态固定为进行中": "When \"In progress only\" is on, the status is pinned to In progress", "上游模型繁忙,请求已排进上游队列;网关正按上游建议的时长等待后重发(不是登录态或额度问题)": "Upstream model is busy; the request is queued upstream and the Gateway will resend it after the wait suggested by the upstream (not a login-session or quota problem)", "上游没有返回积分消耗": "The upstream did not report points consumption", "上游状态码: {status}": "Upstream status code: {status}", "上游请求已发出,正在等第一个字节到达(模型的思考时间也在这段)": "Upstream request sent, waiting for the first byte to arrive (model thinking time is included here)", "上游返回错误": "Upstream returned an error", "下游请求的模型:{model}": "Model requested downstream: {model}", "仅清空报文原文": "Clear raw payloads only", "仅看进行中": "In progress only", "令牌": "Tokens", "体积": "Size", "供应商": "Provider", "供应商归属规则": "Provider attribution rules", "保存中…": "Saving…", "保存归属规则": "Save attribution rule", "保留 {count} 条请求记录 · 将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "Keep {count} request records · Clear {upstream} upstream debug payloads and {downstream} downstream bodies · Database size {db}", "保留 {count} 条请求记录;将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。用量统计与报表不变。": "Keeps {count} request records; clears {upstream} upstream debug payloads and {downstream} downstream bodies. Usage statistics and reports remain unchanged.", "保留统计行与报表,只抹掉请求 / 响应正文。清理后详情弹窗的「预览对话」将无原文可看,统计数字分毫不动。": "Keeps stats rows and reports, and only wipes the request / response bodies. After clearing, \"Conversation preview\" in the detail dialog will have no raw content to show and the stats numbers stay exactly the same.", "保留草稿并读取最新设置": "Keep draft and reload latest settings", "保留请求记录、用量统计与报表,同时清理上游调试报文和下游请求 / 响应正文。清理后「预览对话」与「原始报文」不再保留原文。有筛选时只清理命中请求的报文;无筛选时清空两侧全部报文。此操作无法恢复。": "Keeps request records, usage statistics, and reports while clearing upstream debug payloads and downstream request / response bodies. Conversation preview and Raw payload will no longer contain the original content. With filters active, only payloads for matching requests are cleared; without filters, all payloads on both sides are cleared. This cannot be undone.", "全部删除": "Delete all", "全部提供商": "All providers", "全部模型": "All models", "全部状态": "All statuses", "全部请求数据": "all request data", "共 {images} 张图片,复用 {cached} 张识读结果": "{images} images; {cached} readings reused", "共 {n} 次尝试": "{n} attempts total", "共 {n} 次尝试,最终由 {provider} 承载": "{n} attempts total, finally served by {provider}", "其它": "Other", "内容按原样保存,请求头中的凭据字段已替换为 [redacted]": "Content is saved as-is; credential fields in the request headers have been replaced with [redacted]", "内部重试": "Internal retry", "切换视觉模型": "Vision model reroute", "切换路径:": "Switch path:", "列表数据已刷新,请重试(关闭后重新打开这条详情)": "List data has been refreshed; please try again (close and reopen this detail)", "删除归属规则": "Delete attribution rule", "删除日志记录本身。当前有筛选时只删命中的条目,按天聚合报表不受影响;无筛选时清空全部并重置报表。此方式无法恢复。": "Deletes the log records themselves. With filters active, only matching entries are deleted and daily aggregate reports are unaffected; with no filters, everything is cleared and reports are reset. This cannot be undone.", "删除请求记录,并同步清理对应的上游调试报文与下游正文。有筛选时只删除命中的记录,按天聚合报表不受影响;无筛选时清空全部并重置报表。此操作无法恢复。": "Deletes request records together with their upstream debug payloads and downstream bodies. With filters active, only matching records are deleted and daily reports are preserved; without filters, all data is cleared and reports are reset. This cannot be undone.", "压缩中…": "Vacuuming…", "压缩失败:{message}": "Vacuum failed: {message}", "压缩已在后台开始,完成后会自动提示": "Vacuum started in the background; you will be notified when it completes", "压缩已在进行中": "Vacuum already in progress", "压缩已在进行中,接上它的进度等待完成": "Vacuum already in progress; joining it and waiting for it to finish", "压缩数据库": "Vacuum database", "压缩正在后台执行,完成后自动恢复": "Vacuum is running in the background; it resumes automatically when it completes", "原始报文": "Raw payload", "原模型": "Original model", "取消": "Cancel", "另有 {missing} 次尝试未记录明细(只保留最早的 {kept} 条)": "{missing} more attempts have no details recorded (only the earliest {kept} are kept)", "另有 {n} 个词命中": "{n} more words hit", "只显示正在转发中的请求(状态列按阶段显示:连接中 / 等待响应 / 响应中 / 重试中,用时列显示已用时)": "Only shows requests currently being forwarded (the status column shows the phase: Connecting / Awaiting response / Streaming / Retrying; the duration column shows elapsed time)", "只看失败": "Failed only", "只看成功": "Success only", "只看进行中": "In progress only", "命中了敏感词": "Sensitive word hit", "命中依据:{header} · {pattern}": "Matched on: {header} · {pattern}", "命中的敏感词": "Sensitive words hit", "命中规则:{provider} → {client}": "Matched rule: {provider} → {client}", "响应中": "Streaming", "响应体": "Response body", "响应头": "Response headers", "回收已删除数据占用的磁盘空间(checkpoint + VACUUM,后台执行)": "Reclaims the disk space used by deleted data (checkpoint + VACUUM, runs in the background)", "图片处理用时:{n} 秒": "Image processing time: {n} seconds", "在设置 → 通用里开启「调试模式」后,新发生的请求才会保存报文": "Raw payloads are only saved for requests made after \"Debug mode\" is enabled in Settings → General", "在路由页查看": "View on the Routing page", "处理中": "Processing", "失败": "Failed", "失败请求不记录用量": "Usage is not recorded for failed requests", "失败({status}):{error}": "Failed ({status}): {error}", "失败:{error}": "Failed: {error}", "实际发给上游 {bytes} 字节": "{bytes} bytes actually sent upstream", "客户端": "Client", "将删除 {count} 条日志 · 其中 {raw} 条仍带报文原文 · 数据库占用 {db}": "Will delete {count} logs · {raw} of them still carry raw payloads · database size {db}", "将删除 {count} 条请求记录 · 同步清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "Delete {count} request records · Clear {upstream} upstream debug payloads and {downstream} downstream bodies · Database size {db}", "将删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "Deletes {count} request records and clears {upstream} upstream debug payloads and {downstream} downstream bodies.", "尝试 {n} ·": "Attempt {n} ·", "尝试明细": "Attempt details", "尝试次数": "Attempts", "工具结果": "Tool result", "工具结果 · {id}": "Tool result · {id}", "工具结果图片": "Tool result image", "已删除 {count} 条": "{count} logs deleted", "已删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "Deleted {count} request records and cleared {upstream} upstream debug payloads and {downstream} downstream bodies.", "已受理终止:上游连接已断开,列表稍后刷新为「请求已被手动终止」": "Abort accepted: the upstream connection is closed; the list will refresh to \"Request manually aborted\" shortly", "已完成": "Completed", "已抹掉 {count} 条报文原文": "Raw payloads wiped for {count} logs", "已清理上游调试报文 {upstream} 条、下游正文 {downstream} 条;请求记录与报表已保留。": "Cleared {upstream} upstream debug payloads and {downstream} downstream bodies; request records and reports were preserved.", "已用时(请求仍在转发中)": "Elapsed time (request is still being forwarded)", "开启调试模式后仅记录新请求,历史对话无法补录;关闭不会删除已有记录。": "Debug mode records only new requests; past conversations cannot be recovered. Turning it off does not delete existing records.", "归属客户端": "Client", "当前筛选范围": "the current filter results", "当前网关未提供上游 / 下游清理统计,请更新网关后再清理。": "This gateway does not provide upstream / downstream cleanup counts. Update the gateway before clearing data.", "成功": "Success", "成功({status})": "Success ({status})", "所属请求": "Parent request", "执行清理": "Run clear", "报文超过单条上限,请求体 / 响应体已按上限截断": "Payload exceeds the per-record limit; the request / response bodies have been truncated to the limit", "抹掉原文": "Wipe raw payloads", "按提供商筛选": "Filter by provider", "按提供商筛选(只列日志里出现过的)": "Filter by provider (only lists providers seen in the logs)", "按时间倒序,全量保留": "Reverse chronological order; kept in full", "按模型筛选": "Filter by model", "按模型筛选(只列日志里出现过的;精确匹配模型名)": "Filter by model (only lists models seen in the logs; matches the exact model name)", "按请求结果筛选": "Filter by request result", "排队中": "Queued", "提供商 / 账号": "Provider / Account", "提供商: {provider}": "Provider: {provider}", "提示": "Notice", "搜索供应商": "Search providers", "搜索客户端": "Search clients", "敏": "SW", "敏感词": "Sensitive words", "数据库占用包含主文件与 WAL 文件;清理后可点击「压缩数据库」回收空闲空间。": "Database size includes the main file and WAL file. After clearing data, use Vacuum database to reclaim unused space.", "断开上游连接,明细记为「请求已被手动终止」": "Disconnects the upstream connection and records the detail as \"Request manually aborted\"", "无报文原文(未开启「调试模式」,或已被清理)": "No raw payload (debug mode was off, or it has been cleared)", "无结果记录": "No result recorded", "旧版本保存的正文可能已截断,无法恢复缺失内容": "The body saved by an older version may be truncated; missing content cannot be recovered", "时间": "Time", "暂无请求日志,网关还没有转发过请求": "No request logs yet; the Gateway hasn't forwarded any requests", "最终归属(记账时的客户端)": "Final attribution (the client recorded for accounting)", "最终承载:{picked}": "Finally served by: {picked}", "未改写,保留识别结果": "Not rewritten; the identified client is kept", "本次请求消耗 {credit} 积分": "Points consumed by this request: {credit}", "本轮尝试失败,正在退避等待或切换到下一个账号": "This attempt failed; backing off or switching to the next account", "来源客户端:{client}": "Source client: {client}", "查看该请求的上游原始报文": "View the raw upstream payload for this request", "模型": "Model", "模型测试": "Model test", "模型管理页操作列那颗「测试」发起的请求:与真实请求同一条转发链路,但不计入报表统计": "Requests started by the \"Test\" button in the action column of the Model Management page: the same forwarding path as real requests, but not counted in reports", "正在加载请求日志…": "Loading request logs…", "正在统计…": "Calculating…", "正文超过单条上限,可能已被截断": "Body exceeds the per-record limit and may have been truncated", "没有符合筛选条件的请求": "No requests match the current filters", "添加自定义头匹配规则…": "Add a custom header rule…", "清理": "Clear", "清理中…": "Clearing…", "清理失败:{message}": "Clear failed: {message}", "清理方式": "Clear mode", "清理请求已返回,但结果数据不完整,请刷新后确认。": "The cleanup request returned incomplete result data. Refresh to confirm the outcome.", "清理请求日志": "Clear request logs", "清理预览数据不完整": "Cleanup preview data is incomplete", "清空两侧原文": "Clear both sides", "生产请求": "Production requests", "生成速度:输出 token ÷ 流式段用时(总用时 − 首响);流式段不足总用时一半时按总用时计": "Generation speed: output tokens ÷ streaming time (total duration − TTFB); falls back to total duration when the streaming window is under half the request", "用时": "Duration", "用量": "Usage", "确定对{scope}执行「{label}」?
    {summary}
    此操作无法恢复。": "Run {label} on {scope}?
    {summary}
    This cannot be undone.", "确定对全部请求日志执行「{label}」?将处理 {count} 条,此操作无法恢复。": "Run \"{label}\" on all request logs? This will process {count} entries and cannot be undone.", "确定按当前筛选执行「{label}」?将处理 {count} 条,此操作无法恢复。": "Run \"{label}\" on the current filter results? This will process {count} entries and cannot be undone.", "确定终止这条正在转发的请求?
    上游连接会立即断开,明细将记为「请求已被手动终止」。": "Abort this request that is being forwarded?
    The upstream connection will be closed immediately and the detail will be recorded as \"Request manually aborted\".", "等待响应": "Awaiting response", "策略 {strategy} · 会话粘性 {sticky}{hit}": "Strategy {strategy} · Stickiness {sticky}{hit}", "终止": "Abort", "终止失败:{error}": "Abort failed: {error}", "终止请求": "Abort request", "结果": "Result", "缓存读取: - / 命中率: -": "Cache reads: - / Hit rate: -", "缓存读取: {cache} / 命中率: {rate}": "Cache reads: {cache} / Hit rate: {rate}", "编辑这条头匹配规则…": "Edit this header rule…", "耗时": "Duration", "自定义 · {name}": "Custom · {name}", "被跳过:": "Skipped: ", "设置识别规则": "Set identification rules", "识别到 User-Agent,但不属于已知的客户端类型:{ua}": "User-Agent present but not a known client type: {ua}", "识别结果(请求头识别出的真实客户端)": "Identification result (the real client recognized from request headers)", "识图用量按实际视觉账号单独记录,不混入原模型的回答用量。": "Vision usage is recorded separately against the actual vision account, not mixed with the original model's answer usage.", "该供应商已有归属规则,保存将覆盖它": "This provider already has an attribution rule; saving overwrites it", "详情": "Details", "详情内容": "Detail content", "请求体": "Request body", "请求图片": "Request image", "请求在任何账号接手之前就失败了": "The request failed before any account picked it up", "请求头": "Request headers", "请求头识别为 {identified},已改写归属为 {client}": "Identified as {identified} from request headers; attribution rewritten to {client}", "请求已受理,正在选路、取凭证、建立上游连接": "Request accepted; selecting a route, fetching credentials, and establishing the upstream connection", "请求日志列表": "Request Logs", "请求日志时间范围": "Request Logs time range", "请求日志表": "Request Logs table", "请求正在转发中,用时列显示的是已用时": "The request is being forwarded; the duration column shows elapsed time", "请求筛选": "Request filters", "请求详情": "Request details", "请选择供应商": "Select a provider", "请选择归属客户端": "Select a client", "读取请求日志失败,详见控制台": "Failed to load request logs; see the console for details", "路由回放": "Routing replay", "转发到上游的模型:{model}": "Model forwarded to the upstream: {model}", "轮次": "Round", "辅助识图": "Assisted image reading", "辅助识图调用": "Assisted image reading call", "输入 {input} · 输出 {output} · 总计 {total} · 缓存读 {cache}": "Input {input} · Output {output} · Total {total} · Cache reads {cache}", "这条报文由旧版本截断保存,缺失内容无法恢复": "This payload was truncated by an older version; missing content cannot be recovered", "这条明细是一次模型测试(人工发起):走的是真实转发链路,但不计入报表统计": "This detail row is a model test (manually started): it takes the same forwarding path as real requests but is not counted in reports", "这条明细没有记录提供商(旧数据或请求未走到转发)": "No provider is recorded for this detail row (old data, or the request never reached forwarding)", "这条明细没有记录来源客户端(旧数据、模型测试,或请求未带 User-Agent)": "No source client recorded for this entry (legacy data, model test, or request without User-Agent)", "这条记录命中了敏感词,但没有留下命中明细": "This record hit a sensitive word, but no hit details were kept", "这条记录的尝试明细未采集(该字段上线前的旧数据,或请求在转发前就失败)": "Attempt details were not collected for this record (old data from before this field existed, or the request failed before forwarding)", "这条请求没有保存这一段报文": "This request did not save this payload section", "这条请求没有记录供应商(旧数据或未走到转发),不能从这里改归属": "No provider recorded for this request (legacy data or it never reached forwarding); attribution cannot be changed here", "进入「{phase}」阶段已持续 {time}": "In \"{phase}\" phase for {time}", "进行中": "In progress", "进行中…": "In progress…", "连接中": "Connecting", "选择供应商": "Select provider", "选择归属客户端": "Select client", "速度": "Speed", "重试 {n}": "Retry {n}", "重试中": "Retrying", "重试次数": "Retries", "面板内发起的模型调用,消耗额度并记录 Key,不计入生产报表": "Model call started from the panel; uses quota and records the API Key, but is excluded from production reports", "预览对话": "Conversation preview", "预览读取失败": "Failed to load preview", "预览读取失败:{error}": "Failed to load preview: {error}", "额外识图用量:{n} Token": "Additional vision usage: {n} tokens", "首响 {time}": "TTFB {time}", "首响:上游首帧到达的耗时": "TTFB: time to first byte from the upstream", "首响:上游首帧到达的耗时(请求仍在转发中)": "TTFB: time to first byte from the upstream (request is still being forwarded)", "首帧已到,上游内容正在下发": "First byte received; upstream content is streaming in", "默认归属客户端": "Default attribution client", "(请求仍在转发中)": "(request is still being forwarded)", "(账号:{account})": "(Account: {account})", ",{n}毫秒后重试": ", retry in {n}ms", ",{n}秒后重试": ", retry in {n}s" }); diff --git a/desktop-tauri/ui/i18n/en/settings.js b/desktop-tauri/ui/i18n/en/settings.js index 6f0325df..a156d850 100644 --- a/desktop-tauri/ui/i18n/en/settings.js +++ b/desktop-tauri/ui/i18n/en/settings.js @@ -1,2 +1,2 @@ /* Agent2API 词典构建产物:en/settings —— 由 desktop-tauri/i18n/build.mjs 生成,请勿手改;源头是 i18n-src/*.json */ -window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { " 到 {file}": " to {file}", " 正文已改:{edited}(其余段用官方原文)。": " Text edited: {edited} (the remaining blocks use the official text).", "(无 id)": "(no id)", "/v1 拒绝无 Key 请求": "/v1 rejects keyless requests", "0 B": "0 B", "100%(默认)": "100% (default)", "<本机IP>": "", "ALTCHA(本地验证)": "ALTCHA (local verification)", "Access Key ID": "Access Key ID", "Agent2API 手机端": "Agent2API Mobile", "Android 应用(APK)": "Android app (APK)", "Cline 上游按请求头判定「调用方是不是 Cline 自家产品」:X-CLIENT-TYPE: cline-sdk 是硬门槛(缺了它免费池模型一律 403),版本号与平台标识让请求更贴近官方客户端的形态。这里列出的是网关默认会发的头:改某一行的值 = 覆盖默认值(也可以新增默认清单之外的自定义头);把值清空保存 = 这个头不发送;在界面删掉被改过的行 = 回落默认值。改完点「保存」,下一个 Cline 请求立即生效。不懂某一行的含义就不要动它 —— 伪装头的价值在「与官方客户端逐字一致」。": "The Cline upstream decides from the request headers whether the caller is one of Cline's own products: X-CLIENT-TYPE: cline-sdk is a hard requirement (without it, free-pool models always return 403), and the version number and platform identifier make the request look closer to the official client. Listed here are the headers the gateway sends by default: editing a row's value overrides the default (you can also add custom headers beyond the default list); saving an empty value means this header is not sent; deleting an edited row in the UI reverts it to the default. Click \"Save\" when done and the next Cline request picks it up immediately. Do not touch a row you do not understand — the value of spoofed headers lies in being word-for-word identical to the official client.", "Cline 伪装头": "Cline Spoofed Headers", "Cline 伪装头已刷新": "Cline spoofed headers refreshed", "Docker 容器": "Docker container", "Endpoint": "Endpoint", "Endpoint 填 https://<账户ID>.r2.cloudflarestorage.com,Region 固定填 auto。": "Set Endpoint to https://.r2.cloudflarestorage.com and Region to auto.", "Endpoint 填 https://cos.ap-guangzhou.myqcloud.com,Region 填 ap-guangzhou(按实际地域改)。": "Set Endpoint to https://cos.ap-guangzhou.myqcloud.com and Region to ap-guangzhou (change to your actual region).", "Endpoint 填 https://obs.cn-north-4.myhuaweicloud.com,Region 填 cn-north-4(按实际地域改)。": "Set Endpoint to https://obs.cn-north-4.myhuaweicloud.com and Region to cn-north-4 (change to your actual region).", "Endpoint 填 https://oss-cn-hangzhou.aliyuncs.com,Region 填 cn-hangzhou(按实际地域改)。": "Set Endpoint to https://oss-cn-hangzhou.aliyuncs.com and Region to cn-hangzhou (change to your actual region).", "Endpoint 形如 http://192.168.1.10:9000(自建通常用 http);Region 一般填 us-east-1。": "Endpoint looks like http://192.168.1.10:9000 (self-hosted usually uses http); Region is typically us-east-1.", "Endpoint 留空即走 AWS 官方地址;Region 必须与桶所在区域一致。": "Leave Endpoint empty to use the official AWS address; Region must match the bucket's region.", "KB": "KB", "Linux 安装包(deb)": "Linux package (deb)", "Logo 不能超过 2 MiB": "The logo must not exceed 2 MiB", "Logo 仅支持 PNG、JPG、WebP 图片": "Only PNG, JPG and WebP images are supported for logos", "Nextcloud": "Nextcloud", "OpenAI 新版 API 用 developer 角色取代 system 承载指令,新版 OpenAI SDK 与部分客户端发的对话里会出现 role 为 developer 的消息;不少 OpenAI 兼容上游(尤其是自定义提供商的透传路径)不认识这个角色,收到就报 400。开启本项后,网关在每次转发前把 developer 角色的消息改写为 system —— 两类角色在 OpenAI 语义上等价(OpenAI 自己的迁移指南也是这么映射的),改写不影响对话内容与语义;对本来就只认 system 的各家内置上游同样无害。默认开启;关掉后 developer 消息会原样发往上游,不认识它的上游会报「角色不存在」一类的错误。": "The newer OpenAI API carries instructions in a developer role instead of system, so conversations sent by current OpenAI SDKs and some clients contain messages with role \"developer\". Many OpenAI-compatible upstreams (especially the passthrough path of custom providers) do not recognize that role and reject the whole request with 400. When enabled, the gateway rewrites developer-role messages to system before every forward — the two roles are equivalent in OpenAI semantics (OpenAI's own migration guide maps them the same way), so the rewrite changes neither content nor meaning, and it is harmless to the built-in upstreams that only accept system anyway. Enabled by default; when off, developer messages go upstream as-is and upstreams that do not know the role return \"unknown role\"-style errors.", "QQ 群 · Telegram": "QQ groups · Telegram", "S3 兼容存储": "S3-compatible storage", "Safari 没有安装按钮:点底部的「分享」,选「添加到主屏幕」,再点「添加」。": "Safari has no install button: tap Share at the bottom, choose \"Add to Home Screen\", then tap \"Add\".", "Secret Access Key": "Secret Access Key", "Token 读数量级": "Token Readout Scale", "UTF-8 文本文件路径,留空用内置默认提示词(通用编码助手提示词,不含任何会被上游拦截的模板句)。只在「替换 / 追加」模式下生效,透传模式不读它。": "Path to a UTF-8 text file. Leave empty to use the built-in default prompt (a general coding-assistant prompt with no template sentences the upstream would block). Only applies in Replace / Append mode; passthrough mode does not read it.", "WebView / 浏览器内核": "WebView / browser engine", "Windows 安装包(NSIS)": "Windows installer (NSIS)", "Windows 服务": "Windows service", "ZCode 套餐池(Start Plan)通道每条请求都要消耗一个当次铸造的人机验证令牌(一次性,2 分钟过期),库存低于该值时界面自动补铸到它。默认 3 个。调大能吸收突发并发,但用不掉的令牌 2 分钟就过期作废,烧的是上游风控配额。可填 1–10。": "Every request on the ZCode plan-pool (Start Plan) channel consumes a freshly minted CAPTCHA token (one-shot, expires in 2 minutes); when stock falls below this value the UI mints more up to it. Default 3. A larger value absorbs bursts, but unused tokens expire after 2 minutes and burn the upstream risk-control quota. Allowed 1-10.", "ZCode「套餐池(Start Plan)」通道的每条推理请求都要附一个当次铸造的阿里云无痕验证令牌(一次性、约 2 分钟过期):令牌由界面里的铸造守卫静默铸好、推给网关入池,转发时逐条取用。这里的三个值管的是补货节奏:①「库存目标」= 库存低于它守卫才补铸、补到它为止,默认 3 个;②「轮询间隔」= 守卫多久看一次库存,默认 2500 毫秒,只影响反应速度(库存够用时不会多铸);③「单轮铸造上限」= 发现缺货时一轮最多铸几个,默认 1 个(连铸之间固定隔 500 毫秒)。请求密集、请求日志里连续出现「需要人机验证令牌」的 503 时,把目标与单轮上限适当调大、轮询调快,能让池子跟得上消耗 —— 代价是上游(阿里云)对铸造频率有风控,铸得越多越快越容易触发限流,且用不掉的令牌 2 分钟即过期作废、等于白烧配额,所以建议小步调。保存后对下一轮补货立即生效,不用重启。": "Every inference request on the ZCode \"Plan pool (Start Plan)\" channel must carry a freshly minted Aliyun invisible-CAPTCHA token (one-shot, expires in about 2 minutes): tokens are minted silently by the mint guard in the UI and pushed into the gateway pool, from which forwarding takes one per request. The three values here govern the restocking rhythm: ① \"Stock target\" = the guard mints more only when stock falls below it, up to it (default 3); ② \"Polling interval\" = how often the guard checks stock, default 2500 ms (only affects reaction speed — no extra minting while stock is sufficient); ③ \"Per-round mint cap\" = the most tokens minted in one round upon a shortage, default 1 (consecutive mints are fixed 500 ms apart). When requests are dense and the request log keeps showing 503 \"needs a CAPTCHA token\", raise the target and per-round cap and poll faster so the pool keeps up — the trade-off is that the upstream (Aliyun) rate-limits minting: the more and faster you mint, the likelier you trip the limit, and unused tokens expire within 2 minutes anyway, effectively burning quota — so adjust in small steps. Saving takes effect on the next restock round, no restart needed.", "beta 版": "Beta release", "iOS 应用": "iOS app", "models.dev 元数据": "models.dev metadata", "models.dev 元数据已更新({count} 条)": "models.dev metadata updated ({count} entries)", "models.dev 是一个开源的模型资料库(社区维护),这里用它补齐「上游没告诉我们」的模型能力:上下文窗口、最大输出、工具调用、图片、视频、是否支持思考,以及这个模型认识哪些思考档位。优先级是:你在「模型能力」里手工改的值 > 上游清单自己声明的值 > models.dev 的值 —— 它只填上游没声明的空位,从不推翻上游已声明的。网关随包内嵌了一份快照,所以离线、首次启动、访问不通时也有数据;开启时会按「模型目录刷新」任务的间隔联网更新(同一轮里一并刷新,也可在这里立即刷新)。关闭只停联网刷新,已经拿到的数据继续用。": "models.dev is an open-source, community-maintained model database. It fills in what the upstream never told us: context window, max output, tool calling, images, video, reasoning support, and which reasoning levels the model actually accepts. Priority: values you edited by hand under \"Model capabilities\" > what the upstream catalog declares > models.dev — it only fills gaps the upstream left, and never overrides a declared value. A snapshot ships inside the app, so offline, first-run and blocked-network cases still have data; while enabled it refreshes online on the \"Model catalog refresh\" schedule (in the same round, or on demand here). Turning it off only stops the online refresh; existing data stays in use.", "models.dev 模型元数据": "models.dev model metadata", "systemd 服务": "systemd service", "{count} 条": "{count} entries", "{count} 条 · 来自{origin}{at} · {mode}": "{count} entries · from {origin}{at} · {mode}", "{count} 条规则,按列表顺序执行": "{count} rules, executed in list order", "{d} 天 {h} 小时": "{d}d {h}h", "{h} 小时 {m} 分钟": "{h}h {m}m", "{label} 提示词文件": "{label} prompt file", "{label} 的提示词模式": "{label} prompt mode", "{label}({message})": "{label} ({message})", "{lines} 行、{chars} 字符(按当前草稿计)": "{lines} lines, {chars} characters (based on the current draft)", "{minutes} 分钟": "{minutes} minutes", "{models} 同时出现在两块设置里,会按「辅助识图」处理。想改的话,把其中一个从这边的模型名单里去掉。": "{models} appears in both blocks and will be handled by assisted image reading. To change that, remove it from one of the model lists.", "{mode}生效:上游收到的 system 来自{source}{lines}。": "{mode} in effect: the system prompt sent upstream comes from {source}{lines}.", "{m} 分钟": "{m}m", "{noun}不能为空(可填 {min}–{max})": "{noun} cannot be empty (allowed range: {min}–{max})", "{noun}必须在 {min}–{max} 之间(当前填的是 {text})": "{noun} must be between {min} and {max} (currently entered: {text})", "{noun}必须是整数": "{noun} must be an integer", "{n} B": "{n} B", "{n} GB": "{n} GB", "{n} KB": "{n} KB", "{n} MB": "{n} MB", "{n} 个头将随每个 Cline 请求发送": "{n} headers will be sent with every Cline request", "{n} 台可选 · 点此切换": "{n} servers · tap to switch", "{n} 项 · {shown} 显示": "{n} items · {shown} shown", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "{total} menus · {shown} shown · {hidden} hidden · {groups} groups", "{way}的适用模型": "Models for {way}", "⚠️ 密钥警告": "⚠️ Key warning", "⚠️ 已关闭「{label}」的机器人校验": "⚠️ Bot check disabled for \"{label}\"", "⚠️ 机器人校验已关闭": "⚠️ Captcha disabled", "✅ Cline 伪装头已保存": "✅ Cline spoofed headers saved", "✅ models.dev 模型元数据已开启": "✅ models.dev model metadata enabled", "✅ 云同步设置已保存": "✅ Cloud sync settings saved", "✅ 会话图片压缩已开启": "✅ Image compression is on", "✅ 出站指纹脱敏已开启": "✅ Fingerprint masking enabled", "✅ 密码已修改,其他设备的登录已失效": "✅ Password changed. Sign-ins on other devices have been revoked", "✅ 导入完成:{summary}": "✅ Import complete: {summary}", "✅ 已上传到云端({size})": "✅ Uploaded to the cloud ({size})", "✅ 已为「{label}」装上网关自带提示词": "✅ Gateway-provided prompt installed for \"{label}\"", "✅ 已从云端恢复{note}": "✅ Restored from the cloud{note}", "✅ 已保存:{label}": "✅ Saved: {label}", "✅ 已保存:{label} {value}": "✅ Saved: {label} {value}", "✅ 已保存:指定错误码直接换号": "✅ Saved: Switch Accounts on Specified Error Codes", "✅ 已保留 {days} 天": "✅ Kept for {days} days", "✅ 已保留 {days} 天,超出部分已清理": "✅ Kept for {days} days; older data cleared", "✅ 已加密备份 {n} 张表({size}),包含恢复密钥:{file}": "✅ Encrypted backup of {n} tables ({size}), including recovery keys: {file}", "✅ 已备份 {n} 张表({size})到 {file}": "✅ Backed up {n} tables ({size}) to {file}", "✅ 已导入账号密钥,请继续下载": "✅ Account key imported; continue with the download", "✅ 已导出 {count} 个账号{note}{file}": "✅ Exported {count} accounts{note}{file}", "✅ 已开启「{label}」的机器人校验": "✅ Bot check enabled for \"{label}\"", "✅ 已恢复 {n} 张表{note}": "✅ Restored {n} tables{note}", "✅ 已改用 k / M / B 缩写": "✅ Now using k / M / B abbreviations", "✅ 已改用本地量级词(万 / 亿式)": "✅ Now using local magnitude words (万 / 亿-style)", "✅ 已自动创建网关 Key「默认」(可在「网关 Key」页查看)": "✅ Automatically created the gateway key \"Default\" (view it on the \"Gateway Key\" page)", "✅ 已解除内容拦截降级": "✅ Content-block fallback cleared", "✅ 开发者角色兼容已开启": "✅ Developer role compatibility enabled", "✅ 指纹脱敏设置已保存": "✅ Fingerprint masking settings saved", "✅ 数量上限已设为 {count} 条": "✅ Record limit set to {count}", "✅ 数量上限已设为 {count} 条,超出部分已清理": "✅ Record limit set to {count}; excess records removed", "✅ 机器人校验已开启": "✅ Captcha enabled", "✅ 第三方模型回答完自动折叠过程已开启": "✅ Collapse third-party model work after the answer enabled", "✅ 设置已保存,应用正在重启…": "✅ Settings saved, the app is restarting…", "✅ 调试模式已关闭": "✅ Debug mode disabled", "✅ 调试模式已开启": "✅ Debug mode enabled", "✅ 路由设置已保存": "✅ Routing settings saved", "✅ 连接成功:{path}": "✅ Connected: {path}", "、{n} 个自定义提供商": ", {n} custom providers", "。事件日志、请求明细、调试报文与面板登录态保持不变。替换前会自动把当前业务数据备份到配置目录的 backups/ 下。": ". Event logs, request details, debug payloads and panel login state stay untouched. The current business data is backed up to backups/ under the config directory before replacing.", "「{label}」将从 {previous} 天改为 {days} 天。": "\"{label}\" will change from {previous} days to {days} days.", "「{label}」将从 {previous} 条改为 {count} 条。": "\"{label}\" will change from {previous} to {count} records.", "「{label}」改用内置默认提示词": "\"{label}\" now uses the built-in default prompt", "「{label}」的提示词文件已更新": "\"{label}\" prompt file updated", "「{label}」的提示词正文已更新": "\"{label}\" prompt text updated", "「{label}」的模式改为「{mode}」": "\"{label}\" mode changed to \"{mode}\"", "「{label}」的网关自带提示词已改回官方原文": "\"{label}\" gateway-provided prompt restored to the official text", "「{label}」的网关自带提示词正文已更新": "\"{label}\" gateway-provided prompt text updated", "「模型管理」里每个能力的来源标记(上游 / models.dev / 已覆盖)读的就是这份数据;映射弹窗的思考档位下拉也按这里的数据只列该模型真实认识的档位。": "The per-capability source marks in \"Model management\" (upstream / models.dev / overridden) come from this data, and the reasoning-level dropdown in the mapping dialog lists only the levels the model actually accepts, based on it.", "「用哪份提示词」本来是按上游分别决定的事,所以每家可以有自己的模式、提示词文件与正文:不在这里列出的提供商一律沿用上面那份默认设置,「跟随默认」把这一家取消、回到默认。带「网关自带」那一行的家(目前是 ZCode 两家)默认就列在这里 —— 那一段是网关自己装上去的文本,不来自客户端也不来自提示词文件,默认开启、可以关掉,也可以改它的正文(改过的那一段以你的文本为准);关掉后还能不能通过上游校验,取决于上游当下的口径,行内说明了实测依据。「模式 / 提示词文件 / 正文」管的是客户端自己的 system 怎么处理,与那个开关是两件事。": "Which prompt to use is decided per upstream, so each provider can have its own mode, prompt file, and text: providers not listed here all use the default settings above, and \"Follow Default\" removes a provider's override and returns it to the default. Providers with a \"Gateway-Provided Prompt\" row (currently the two ZCode providers) are listed here by default — that text is installed by the gateway itself, comes from neither the client nor a prompt file, is on by default, can be turned off, and its text can be edited (edited blocks use your text); whether it still passes upstream validation after being turned off depends on the upstream's current criteria, and the row's hint documents what was measured. \"Mode / Prompt File / Prompt Text\" controls how the client's own system prompt is handled — a separate matter from that switch.", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "\"Settings\" is pinned, so its group cannot be hidden as a whole; you can still hide its other menus individually", "「请求日志」页的逐条请求记录,默认 99999 天(近似全量保留),可填 1–99999 天。": "Per-request records on the \"Request Logs\" page. Defaults to 99999 days (about 274 years — kept in full for practical purposes); range 1–99999 days.", "「请求日志」页的逐条请求记录,默认 99999 天,可填 1–99999 天;同时受数量上限限制。": "Per-request records on the Request Logs page. Defaults to 99999 days; accepts 1–99999 days. The record limit also applies.", "一个 .a2ab 文件即可跨机器恢复,账号、网关 Key、GitHub 令牌与云同步凭据无需另行复制密钥。插件程序与库外文件不在整库备份范围。": "One .a2ab file restores data on another machine without separately copying keys for accounts, gateway keys, GitHub tokens, or cloud sync credentials. Plugin programs and files outside the database are not included.", "一段内置装配": "a built-in assembly", "三档数据各自独立计时,超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件;请求日志是网关每次转发到上游的逐条记录;按天聚合供报表页的热力图与按天趋势使用。请求日志与按天聚合默认 99999 天(约 274 年,效果上等于全量保留),事件日志默认 30 天。把某一档改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。三档的可填范围均为 1–99999 天。": "The three data types are timed independently; anything beyond its retention period is deleted: event logs are system events such as sign-ins, account switches, and 429 switches; request logs are the per-request records of everything the gateway forwards upstream; the daily aggregates feed the heatmap and daily trends on the Reports page. Request logs and daily aggregates default to 99999 days (about 274 years — kept in full for practical purposes), and event logs default to 30 days. Lowering a value (for example, 30 days to 7 days) and saving deletes the excess historical data immediately, and this cannot be undone; raising it or leaving it unchanged deletes nothing. All three accept 1–99999 days.", "三段各自成块,所以分开编辑": "Three separate blocks, edited separately", "上传": "Upload", "上传 Logo": "Upload logo", "上传中…": "Uploading…", "上传内容含加密后的账号凭证与网关配置": "The upload contains encrypted account credentials and gateway configuration", "上传到云端": "Upload to cloud", "上传失败:{message}": "Upload failed: {message}", "上次同步:{time}({action})": "Last sync: {time} ({action})", "上次成功刷新的结果(存在本机数据库里)": "Result of the last successful refresh (stored in the local database)", "上游 CLI 版本": "Upstream CLI version", "上游客户端版本": "Upstream client version", "上游按": "The upstream checks ", "上游按「结构」校验身份:三段必须各自成块,所以这里分开编辑三段(不能合成一段)。动态段里的运行值写成占位符,发请求时才替换:{cwd} 工作目录、{platform} 平台、{shell} shell、{os_version} 系统版本、{git} 是否 git 仓库、{provider} 提供方标识、{model} 模型名。清空某一段 = 那一段恢复官方原文。第三段发出时前面会自带一个空行(官方形状)。": "The upstream verifies identity by \"structure\": the three blocks must each be a separate block, so they are edited separately here (they cannot be merged into one). Runtime values in the dynamic block are written as placeholders and substituted only when a request is sent: {cwd} working directory, {platform} platform, {shell} shell, {os_version} OS version, {git} whether this is a git repository, {provider} provider identifier, {model} model name. Clearing a block = that block reverts to the official text. A blank line is automatically prepended to the third block when it is sent (the official shape).", "上游未配置": "Upstream not configured", "上游模型繁忙时会先排队(回一句「建议 N 秒后再来」):网关等一会儿再发同一请求,最多等几次。默认 2 次,可填 0–10;填 0 表示不等待,排队直接返回 503 并说明「不是登录态或额度问题」。": "Busy upstream models queue first (replying \"suggest waiting N seconds\"): the gateway waits a while and resends the same request, up to a set number of waits. Default 2; accepts 0–10. 0 means no waiting: a queued response returns 503 directly and states that this is not a sign-in or quota problem.", "上游用「逐字精确匹配」的方式审核请求体(不是语义审核):客户端注入的固定模板句、计费头字段名、以及某些裸错误码出现在报文里就会整单拦截,返回 400。开启本项后,网关在每次转发前改写这些指纹 —— 表头键值整段删除,承载语义的模板句只换一个词(如 official CLI for Claude → official CLI tool for Claude),对话内容与语义都不受影响。规则集是内置的,不需要也无法维护词表。关掉本项后客户端模板会原样发往上游,可能重新出现模板句被误拦的报错。": "The upstream reviews request bodies by exact word-for-word matching (not semantic review): fixed template sentences injected by the client, billing header field names, and certain bare error codes in the payload cause the entire request to be blocked with 400. With this option on, the gateway rewrites those fingerprints before every forward — header key/value pairs are deleted entirely, and template sentences that carry meaning have a single word swapped (e.g. official CLI for Claude → official CLI tool for Claude); the conversation content and meaning are unaffected. The rule set is built in — there is no word list to maintain, and none can be. With this option off, client templates go upstream as-is and template-sentence false blocks may reappear.", "上游请求四个阶段各自的等待上限(秒,1~3600):①「连接中超时」= 建立 TCP/TLS 连接或代理隧道的最大等待,默认 30 秒;②「等待响应超时」= 请求发出后等上游响应头的最大时间,默认 300 秒 —— 网关请求上游恒带 stream,响应头在 SSE 建立时就到达,与模型思考多久无关;③「流式响应空闲超时」= 流式响应相邻两块数据之间允许的最大空闲,收到新数据即重新计时,默认 300 秒 —— 上游长时间不吐数据即判定连接僵死并断开;④「非流式响应超时」= 读完整份非流式响应体的总预算(一次性计时、不重置),默认 300 秒。四项都是「等待上限」,只要数据还在来,正常的流式回答就一直往下传。保存后对下一个请求立即生效,不用重启。": "The upstream wait limit for each of the four request stages (seconds, 1–3600): (1) \"Connect Timeout\" = the maximum wait to establish the TCP/TLS connection or proxy tunnel, default 30 seconds; (2) \"Response Headers Timeout\" = the maximum time to wait for the upstream's response headers after the request is sent, default 300 seconds — gateway requests always use stream, and the response headers arrive as soon as the SSE stream is established, regardless of how long the model thinks; (3) \"Stream Idle Timeout\" = the maximum idle gap allowed between adjacent chunks of a streaming response, the timer restarting on each new chunk, default 300 seconds — if the upstream sends no data for a long time, the connection is judged dead and disconnected; (4) \"Non-Streaming Timeout\" = the total budget for reading a complete non-streaming response body (a single timer that is not reset), default 300 seconds. All four are wait limits: as long as data keeps arriving, a normal streaming answer keeps flowing. Changes take effect on the next request without a restart.", "上游调试报文": "Upstream debug payloads", "上移": "Move up", "上移规则": "Move rule up", "下次自动重试:{time}": "Next automatic retry: {time}", "下游正文": "Downstream bodies", "下移": "Move down", "下移规则": "Move rule down", "下载失败:{message}": "Download failed: {message}", "不一致": "Mismatch", "不做会话识别,每条请求都重新按策略选路。": "No session detection: every request is routed by strategy from scratch.", "不做图片兼容": "Do not adapt images", "不可用": "Unavailable", "与网关同源的面板;完整管理功能在桌面端": "A panel served by the same gateway; full management lives on desktop", "两张开关分别管桌面端(应用内窗口,也包含开启局域网访问后从其他设备访问的那份面板)与网页端(Docker / 服务端自托管的浏览器面板)。默认都开启;桌面端只在本机使用、嫌验证耗时可以关掉,网页端暴露在网络上,建议保持开启。": "The two switches cover the desktop side (the in-app window, including the panel reached from other devices when LAN access is on) and the web side (the browser panel hosted by Docker / server). Both default to on. Turn the desktop one off if you only use it locally and find the check slow; keep the web one on, since that page is exposed to the network.", "两次输入的备份密码不一致": "The backup passwords do not match", "两次输入的新密码不一致": "The new passwords do not match", "两次重试之间的等待时间,两项共用,可填 0–300 秒。": "Wait time between two retries, shared by both settings. Range: 0–300 seconds.", "两种方式不会互相自动切换。": "The two modes never switch to each other automatically.", "两组设置分别用于桌面端托管的网页管理面板与网页端(Docker / 服务端)的浏览器面板。是否可被其他设备访问取决于网络访问与防火墙设置,不限于局域网。两端默认都开启人机验证,建议保持开启。": "The two groups apply to the web panel hosted by the desktop app and the browser panel hosted by Docker / server. Access from other devices depends on network access and firewall settings and is not limited to the LAN. Human verification is enabled by default for both; keeping it enabled is recommended.", "为了安全,开启前需要先注册一个": "For security, you need to register a ", "主进程未返回启动设置,请更新桌面端后重试": "The main process did not return startup settings. Update the desktop app and try again.", "主进程桥不可用": "Main process bridge unavailable", "主题": "Theme", "事件日志": "Event logs", "事件日志保留天数": "Event Log Retention Days", "云同步": "Cloud sync", "产品名": "Product name", "产品名不能包含斜杠或版本号,请改用前缀匹配": "Product names cannot include slashes or versions. Use prefix matching.", "人机验证": "Human verification", "人机验证失败": "Human verification failed", "人机验证已完成": "Human verification complete", "人机验证还在计算,请稍候": "Human verification is still running, please wait", "仅在同一会话、同一问题和相同权限范围内复用;追问新细节会重新识读。缓存只存在本机内存。": "Results are reused only within the same conversation, question and permission scope. New questions trigger a fresh reading. The cache is kept only in local memory.", "仅在账号、配置、签到或余额等实质内容变化时上传;导出时间或查询时间单独变化不会触发上传。": "Upload only when account data, settings, check-in results or balances change. Changes to export or query timestamps alone do not trigger an upload.", "仅处理本次转发副本,不修改客户端选择,也不删除当前或历史图片。": "Only this forwarded copy is changed. The client's selection and all current and historical images are preserved.", "仅影响面板登录与注册,不影响 API Key 调用。保存后生效,已登录会话不会退出。": "Only affects panel sign-in and registration, not API key requests. Changes take effect after saving and do not sign out existing sessions.", "仅本机": "This device only", "仅用现有数据、不联网刷新": "Using existing data only, no online refresh", "从云端恢复": "Restore from cloud", "从桌面图标启动,全屏、无地址栏。想卸载:长按图标删除,或清除浏览器站点数据。": "Launch it from the home screen icon: full screen, no address bar. To uninstall, long-press the icon and remove it, or clear the browser's site data.", "优先使用当前路由内的视觉模型": "Prefer vision models in the current route", "优先在当前路由内找可用的视觉模型,找不到就用 {model} 直接回答,不再回到原模型。": "An available vision model inside the current route is preferred; if there is none, {model} answers directly instead of the original model.", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "This restores the default groups, order and visibility. Groups you created are removed (their menus are kept).", "会话图片压缩设置已刷新": "Image compression settings refreshed", "位置": "Location", "位置与端口": "Location and ports", "使用 Rust 正则语法,保存时由后端校验;不支持环视和反向引用。": "Uses Rust regular expression syntax, validated by the backend when saving. Lookaround and backreferences are not supported.", "使用中文单位(亿 / 万)": "Use Chinese units (yi / wan)", "使用本地量级词(万 / 亿式)": "Use local magnitude words (万 / 亿-style)", "使用默认值": "Using defaults", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "The sidebar layout module did not load (ui/sidebar-layout.js must be included before app.js).", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "No menus are shown in the sidebar. Turn on the ones you need under Settings → Display → Sidebar menus.", "侧边栏菜单": "Sidebar menus", "保存上游原始报文(请求头、请求体、响应头、响应体)": "Save raw upstream payloads (request headers, request body, response headers, response body)", "保存单独配置": "Save model override", "保存后以这里的文本为准": "The text here takes precedence once saved", "保存后对下一轮补货立即生效,不用重启。守卫跑在应用界面里:轻量模式关窗销毁界面期间无法铸造,走套餐池(Start Plan)通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。": "Saving takes effect on the next restock round, no restart needed. The guard runs inside the app UI: while lightweight mode has destroyed the UI after a window close, no tokens can be minted — requests on the plan-pool (Start Plan) channel land in the request log as 503 (with the reason); reopen the UI and minting recovers automatically.", "保存后应用将重启以生效。": "The app will restart after saving for this to take effect.", "保存后状态读取立即生效。后台不会自动生成令牌;需要人机验证时,在账号的「套餐明细」中主动开始验证。模型请求免验证时无需保持界面打开。": "Status polling settings take effect immediately after saving. No tokens are generated automatically. Start required verification in the account’s Plan details. You do not need to keep the interface open when model requests are exempt from verification.", "保存后立即生效,不用重启:策略与粘性作用于**下一次**转发的选路,进行中的请求不受影响。": "Takes effect on save, no restart: strategy and stickiness apply to the **next** forwarded request; in-flight requests are unaffected.", "保存后立即生效,不用重启;次数用尽仍失败时,错误原样返回给客户端。": "Takes effect immediately after saving, no restart needed; if all attempts are exhausted and the request still fails, the error is returned to the client as-is.", "保存后立即生效,不用重启;超时按上游失败处理(计入请求日志的「错误」列,并按「请求重试」的设置决定是否重试)。": "Takes effect immediately after saving, no restart needed; a timeout is treated as an upstream failure (counted in the \"Error\" column of the request logs, and retried according to the \"Request Retries\" settings).", "保存后立即生效:保留天数和数量上限同时生效,调小任一项会立即清理超出的历史数据,且不可恢复。": "Takes effect immediately after saving. Both retention days and record limits apply; lowering either immediately removes excess historical data and cannot be undone.", "保存后立即生效:改小保留天数会立刻删除超出的历史数据,且不可恢复。": "Takes effect immediately after saving: lowering the retention days deletes the excess historical data at once, and this cannot be undone.", "保存在当前网关,登录页也会公开显示。不会更改安装包、快捷方式、系统托盘图标或软件版本信息。": "Saved on the current gateway and displayed publicly on the sign-in page. Does not change the installer, shortcuts, system tray icon or software version information.", "保存并重启": "Save & Restart", "保存设置": "Save settings", "保持当前路由范围,不跳到其他路由组。": "Stays within the current route and never jumps to another route group.", "保活换行丢弃": "Strip keepalive newlines", "保留原图和对话,由视觉模型直接回答本次请求。": "Keep the original images and conversation, and let a vision model answer this request directly.", "保留原图,选择视觉模型": "Keep the images and select a vision model", "保留图片中的文字、代码、数字、布局与状态。识读失败就停止,不删图后继续回答。": "Preserve text, code, numbers, layout and state in the images. Stop if reading fails; never remove images and continue answering.", "保留天数已刷新": "Retention days refreshed", "保留旧版配置兼容,当前不会自动连铸。每次点击「开始验证」只取得一枚令牌,失败或取消后停止。": "Kept for compatibility with older settings. Tokens are not minted automatically in batches. Each Start verification action obtains one token and stops on failure or cancellation.", "保留草稿并读取最新设置": "Keep draft and reload settings", "修改密码": "Change password", "修改密码需要输入当前密码;修改成功后,其他设备 / 浏览器上的登录会立即失效,当前这条会话保留。": "Changing the password requires the current one. After success, sign-ins on other devices and browsers are revoked immediately; this session stays active.", "值": "Value", "值与默认值相同的行不占覆盖(存的是「改过的键」,不是全量配置);值留空保存表示这个头不发送,删除改过的行表示回落默认值。改完立即生效,不用重启。": "Rows whose value equals the default do not count as overrides (only changed keys are stored, not the whole configuration); saving an empty value means this header is not sent, and deleting an edited row reverts it to the default. Changes take effect immediately, no restart needed.", "值(留空 = 不发送)": "Value (empty = not sent)", "停止并说明原因": "Stop and explain why", "像素": "px", "允许其他设备访问前,需要设置面板管理员账号与密码。注册完成后会继续开启流程并重启应用。": "Set a panel administrator username and password before allowing access from other devices. After registration, network access will be enabled and the app will restart.", "允许其他设备访问网关": "Allow other devices to access the gateway", "允许局域网内的设备访问网关": "Allow devices on the LAN to access the gateway", "允许无 Key 裸跑": "Allow running without keys", "允许浏览器里的页面跨来源调用网关(/v1/*)": "Allow pages in a browser to call the gateway cross-origin (/v1/*)", "允许的域名": "Allowed hostnames", "先发送原图,明确拒图后补救": "Send original images first; adapt only after an explicit rejection", "先把图片交给视觉模型读一遍,再让原模型结合读到的内容回答。": "The vision model reads the image first, then the original model answers using what was read.", "全局配置": "Global Configuration", "全部已配置": "All configured", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 中,加密密钥单独保存在库外。跨机器备份请使用「整库备份 / 恢复」,不要只复制数据库。更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "Accounts, event logs, request records, debug payloads, and settings are stored in agent2api.db. Encryption keys are stored separately. To move between machines, use Full database backup / restore rather than copying only the database. To change the directory, set AGENT2API_PROXY_HOME and restart.", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 这一个 SQLite 数据库里。备份时只需拷贝这个文件;更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "All data (accounts, event logs, request records, debug payloads, and settings) is kept in a single SQLite database, agent2api.db, in the configuration directory. To back up, just copy this file; to change its location, set the AGENT2API_PROXY_HOME environment variable and restart the app.", "全部角色": "All roles", "全部角色沿用原有行为,包含思考内容和工具参数;指定角色时只改消息正文,未选角色及思考内容、工具参数保持原样。": "All roles keeps the existing behavior, including reasoning content and tool arguments. Selected roles rewrites only message content; unselected roles, reasoning content and tool arguments remain unchanged.", "共享视觉模型已变更,请重新确认并保存,避免把图片交给未经确认的模型。": "The shared vision model changed. Confirm and save again before sending images to the new model.", "共用设置:{providers}": "Shared settings: {providers}", "关闭后不再提供网页管理面板,本机桌面程序仍可正常管理;已开启的 API 转发不受影响。": "The web management panel will no longer be served. You can still manage the gateway in the local desktop app, and API forwarding is not affected.", "关闭后手动上传 / 下载也会被拒绝。": "When off, manual upload/download is rejected too.", "关闭后网关只监听 127.0.0.1,其他设备将无法直接连接,网页管理面板也会一并关闭。已配置的网关 Key 与账号不受影响。": "The gateway will listen only on 127.0.0.1, preventing direct connections from other devices. The web management panel will also be disabled. Existing gateway keys and accounts are not affected.", "关闭后网关回到只监听 127.0.0.1,局域网内的设备将无法继续访问;已配置的网关 Key 与账号都不受影响。": "Once disabled, the gateway goes back to listening only on 127.0.0.1 and devices on the LAN can no longer reach it; configured gateway keys and accounts are unaffected.", "关闭后,管理界面不再从局域网提供,只有本机的桌面程序可以管理;已开启的 API 转发不受影响。": "Once disabled, the admin UI is no longer exposed over the LAN — only the desktop app on this machine can manage it; API forwarding that is already enabled is unaffected.", "关闭局域网访问": "Disable LAN Access", "关闭并重启": "Close & Restart", "关闭思考": "Disable reasoning", "关闭窗口即退出程序,后台转发随之中断": "Closing the window quits the app, and background forwarding stops with it", "关闭窗口时最小化到托盘": "Minimize to tray when the window is closed", "关闭窗口时程序不退出,转发继续在后台运行;退出请用托盘菜单": "Closing the window does not quit the app; forwarding keeps running in the background. To quit, use the tray menu", "关闭网络访问": "Disable network access", "兼容处理最长等待": "Longest wait for compatibility processing", "兼容处理最长等待(秒)": "Maximum image adaptation wait (seconds)", "内容拦截降级": "Content-block fallback", "内置识别、自定义规则与来源声明": "Built-in identification, custom rules, and origin declarations", "内置软件标识规则": "Built-in User-Agent rule", "内置默认": "Built-in defaults", "内置默认提示词": "the built-in default prompt", "再输入一次新密码": "Re-enter the new password", "凭据类请求头已脱敏。": "Credential request headers have been redacted.", "凭证只保存在这台手机上,按服务器分别存放": "Credentials are stored only on this phone, separately for each server", "出问题时把这一页截图,或点「复制全部信息」把文本贴进反馈,一般就能定位到大致原因。": "When something goes wrong, screenshot this page or use \"Copy all info\" and paste the text into your report — that is usually enough to narrow down the cause.", "分享图标在 Safari 底部工具栏中间": "The Share icon sits in the middle of Safari's bottom toolbar", "分组名": "Group name", "分组名,例如「常用」": "Group name, e.g. \"Favorites\"", "切换视觉模型": "Switch to a vision model", "切换视觉模型 · 视觉模型回答": "Switch models · Vision model answers", "切换视觉模型配置": "Vision model switching settings", "切换账号重试次数": "Account-Switch Retries", "刚刚从 models.dev 拉到的最新数据": "Fresh data just fetched from models.dev", "删除 {code}": "Delete {code}", "删除分组": "Delete group", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "Delete group \"{name}\"? Its {n} menus will move to \"{target}\" — nothing is lost.", "删除匹配内容": "Delete matched text", "删除后不再接受这个分类的来源声明,历史记录保留原来的名称和用量。": "Origin declarations for this category will no longer be accepted. Historical records retain their original names and usage.", "删除后,新请求不再使用这条规则;历史记录保持不变。": "New requests will no longer use this rule. Historical records stay unchanged.", "删除客户端分类": "Delete client category", "删除状态码 {code}": "Delete status code {code}", "删除空分组「{name}」?": "Delete the empty group \"{name}\"?", "删除识别规则": "Delete identification rule", "删除这个分组(组内菜单移到第一组)": "Delete this group (its menus move to the first group)", "刷新": "Refresh", "刷新失败:{message}": "Refresh failed: {message}", "前台运行": "Foreground process", "前缀": "Prefix", "剥离上游审核黑名单指纹(改写请求体里的模板句与表头)": "Strip upstream review blacklist fingerprints (rewrite template sentences and headers in request bodies)", "功能建议": "Feature Request", "加入备选": "Add as backup", "加密备份必填,旧 SQL 可留空": "Required for encrypted backups; leave blank for legacy SQL", "包含": "Contains", "包含日志与调试报文": "Include logs and debug payloads", "包含:{items}": "Includes: {items}", "匹配内容": "Match pattern", "匹配内容不能为空,且最多 {max} 个字符": "The match pattern is required and must not exceed {max} characters", "匹配内容不能为空,最长 256 个字符": "Enter a match pattern of up to 256 characters", "匹配原文含零宽空格,词表预览用 \\u{200b} 标出;编辑时保留该字符。": "The pattern contains a zero-width space, shown as \\u{200b} in the rule preview. Preserve this character when editing.", "匹配方式": "Match type", "区域(Region)": "Region", "华为云 OBS": "Huawei Cloud OBS", "单独指定视觉模型": "Choose a separate vision model", "单轮铸造上限": "Per-round mint cap", "占用大小": "Size on Disk", "历史未记录识别依据": "Identification evidence was not recorded", "原来的「全局方式 + 模型单独配置」已按相同意思自动填成下面的模型名单,可以照用也可以重新调整;改动一处之后就会按新形式存下来。": "Your previous \"global mode + per-model overrides\" has been filled into the model lists below with the same meaning. Keep it as is or adjust it; once you change anything it is stored in the new form.", "原模型不能直接看图": "The original model cannot read images directly", "原模型根据识读内容回答": "The original model answers using the image description", "去反馈": "Give Feedback", "去申请": "Submit a Request", "反馈与需求": "Feedback & Requests", "发现缺货时一轮最多铸几个(连铸之间固定隔 500 毫秒)。默认 1 个:SDK 同一实例连铸容易互相干扰。调大补货更快,但单轮连铸越多越容易触发上游风控。可填 1–5。": "How many tokens a single round may mint when a shortage is found (fixed 500 ms between back-to-back mints). Default 1: consecutive mints on one SDK instance tend to interfere with each other. A larger value restocks faster, but the more mints per round, the easier it trips the upstream risk control. 1–5 accepted.", "取消勾选后只备份业务数据(账号、配置与余额记录),文件显著变小;事件日志、请求统计与调试报文不会进备份文件。": "Unchecked, only business data is backed up (accounts, configuration, balance records) and the file shrinks considerably; event logs, request stats, and debug payloads are left out.", "变更网页管理面板": "Change Web Admin Panel", "只列单独配置过的家,其余沿用上面的全局配置": "Only providers configured individually are listed; the rest use the global configuration above", "只对「排队制」的上游生效:模型繁忙时上游不报错,只回一句「建议 N 秒后再来」,网关按建议时长等一会儿再发同一请求,等满次数仍排不上才把「排队中」作为错误返回(HTTP 503,文案会说明这不是登录态或额度问题)。等待发生在首个字节之前,吃的是「等待响应超时」那份预算 —— 两项设置一起决定一次请求最多卡多久;排队不会标记账号限额、也不会换账号(换谁都一样在排队)。保存后对下一个请求立即生效,不用重启。": "Applies only to queueing upstreams : when a model is busy the upstream raises no error, it just replies \"suggest waiting N seconds\"; the gateway waits for the suggested duration and resends the same request, and only when the wait count is exhausted is \"queueing\" returned as an error (HTTP 503, with text explaining that this is not a sign-in or quota problem). The wait happens before the first byte and comes out of the \"Response Headers Timeout\" budget — together the two settings determine how long one request can stall at most; queueing does not mark the account as rate-limited and does not switch accounts (everyone is queueing). Takes effect on the next request after saving, no restart needed.", "只影响读图那一步的思考深度;两块设置统一用这个选择。": "Only affects how deeply the image-reading step thinks; both blocks share this choice.", "只有已安装、启用并声明了设置项的提供商会出现在这里。可前往插件页检查安装与启用状态。": "Only providers with an installed, enabled plugin that declares settings appear here. Check installation and activation on the Plugins page.", "只沿用模型与思考等级,不借用视觉服务的内部 Key;仍受当前请求权限限制。": "Only the model and reasoning level are reused, not the vision service's internal Key. The current request's permissions still apply.", "只清掉这个浏览器存的 Key,不影响网关": "Only clears the key stored in this browser; the gateway is untouched", "只覆盖指定提供商的指定模型,其余跟随全局。": "Override only the selected model from the selected provider; all others follow the global settings.", "可跨提供商多选;只处理这些模型看不了的图片。": "Multi-select across providers; only images these models cannot read are handled.", "可跨提供商多选;这些模型的请求会整体改交视觉模型。": "Multi-select across providers; requests from these models are handed over to the vision model as a whole.", "可选。部分服务(如中国科技云数据胶囊)会按 User-Agent 校验凭据绑定的客户端类型,此时填写包含该类型名的字符串(例如 rclone/v1.67.0)。留空则维持默认。": "Optional. Some services (such as CSTCloud Data Capsule) validate the credential's bound client type via the User-Agent; if so, enter a string containing that type name (for example rclone/v1.67.0). Leave blank to keep the default.", "合计只累加当前筛选后可见的账号,筛选、搜索一改数字就跟着变。": "Totals only add up accounts visible under the current filter; changing the filter or search changes the number.", "合计按整组统计(默认):不受筛选、搜索影响,被筛掉与已禁用的账号也计入。": "Totals cover the whole group (default): filtering and search do not change them, and filtered-out or disabled accounts still count.", "同一会话、同一问题、相同权限范围内复用;追问新细节会重新识读。": "Reused within the same session, question and permission scope; asking about new details triggers a fresh read.", "同一会话在 5 分钟内尽量跟住同一个账号;停了 5 分钟再发就算新会话。多数场景用它 —— 多轮对话少换号,也不至于把账号焊死。": "The same session tries to stay on one account for 5 minutes; pausing longer than 5 minutes starts a new session. The choice for most cases — fewer account switches in multi-turn chats, without pinning an account.", "同一会话在 6 小时内跟住同一个账号;适合一坐几个小时的长会话,上游的上下文缓存能吃到更多。": "The same session stays on one account for up to 6 hours; suited to marathon sessions — the upstream context cache gets reused much more.", "同一提供商的同一模型不能重复配置": "The same provider and model cannot have duplicate overrides", "同一账号重试次数": "Same-Account Retries", "同时开放网页管理面板": "Also expose the web admin panel", "同步密码": "Sync password", "名单最多 {max} 个状态码": "At most {max} status codes", "后端没有返回版本信息": "The backend returned no version info", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "Contains the pinned \"Settings\" menu, so the group cannot be hidden as a whole (you can still hide its other menus individually)", "启动与托盘": "Startup & Tray", "启动时间": "Started at", "启用云同步": "Enable cloud sync", "启用图片兼容": "Enable image compatibility", "启用规则": "Enable rule", "启用规则:{name}": "Enable rule: {name}", "命中依据:{header} · {pattern}": "Matched evidence: {header} · {pattern}", "命中这些上游状态码的失败不在同一账号重发,直接换下一个账号继续试(换号占用「切换账号重试次数」,换满仍失败才把错误原样返回给客户端)。输入 100–599 的状态码后回车添加,点 × 或退格删除;默认 402(积分不足)。清空全部表示任何错误都照常重试。": "Failures matching these upstream status codes are not retried on the same account — the gateway switches to the next account and keeps trying (an account switch consumes an \"Account-Switch Retries\" slot; only when those are exhausted is the error returned to the client as-is). Type a status code from 100–599 and press Enter to add it; click × or press Backspace to delete one. Default: 402 (insufficient points). Clearing the list means any error is retried as usual.", "品牌 Logo": "Brand logo", "品牌设置": "Brand settings", "品牌设置已保存": "Brand settings saved", "品牌预览": "Brand preview", "哪些模型用这种方式": "Which models use this way", "固定": "Pinned", "图标经 Magpie 引入,未单独记录 Lobe Icons 的图标版本;以上版本仅用于核对许可。": "These icons were obtained through Magpie. The Lobe Icons asset revision was not recorded separately; the revision above was used only to verify the license.", "图片与相关对话将交给配置的视觉模型处理,可能增加等待时间和费用。请确认这些服务可以接收你的图片。": "Images and relevant conversation will be sent to the configured vision models, which may increase latency and cost. Confirm that these services may receive your images.", "图片兼容": "Image compatibility", "图片兼容当前是关闭的:下面两块设置照样能改、会被保留,但不会对任何请求生效。": "Image compatibility is currently off: the two blocks below can still be edited and are kept, but nothing here applies to any request.", "图片兼容设置已保存,仅对新请求生效。": "Image compatibility settings saved. They apply only to new requests.", "图片兼容设置读取失败": "Failed to load image compatibility settings", "图片压缩": "Image compression", "图片最长边超过这个值就等比缩小(只缩不放)。默认 2048,可填 256–8192 —— 多数视觉模型在这个量级已经够用,调小更省流量、但细节会丢。": "Images whose longest edge exceeds this value are scaled down proportionally (never enlarged). Default 2048, range 256-8192 — most vision models are fine at this size; a smaller value saves bandwidth but loses detail.", "图片能力未知时": "When image capability is unknown", "图片过大、格式错误或下载失败不会被当作模型不支持图片。": "Oversized, malformed or undownloadable images are not treated as unsupported by the model.", "在同一个账号上原地重发几次(不含首发;整条请求共用一份,用完后换来的账号只发一次就继续换)。可填 0–10,0 表示失败立即换号。": "How many times to resend in place on the same account (not counting the first send; the whole request shares one pool, and once it is used up, any account switched to gets only one send before switching continues). Accepts 0–10; 0 means switch accounts immediately on failure.", "在这里直接编辑提示词正文:保存后以这份文本为准(优先于上面的提示词文件),清空则回到文件 / 内置默认。改一个字不必再去编辑器里开文件。": "Edit the prompt text right here: after saving, this text takes precedence (over the prompt file above), and clearing it falls back to the file / built-in default. No need to open a file in an editor just to change one word.", "在途请求": "In-flight requests", "地址格式不对。填「IP 或域名:端口」,可带 http:// 或 https://,例如 192.168.1.23:3065": "Invalid address. Enter \"IP or domain:port\", optionally with http:// or https:// — e.g. 192.168.1.23:3065", "坚果云": "Jianguoyun (Nutstore)", "坚果云需使用「第三方应用密码」(账户信息 → 安全选项里生成),地址必须是 /dav/ 下的目录。": "Jianguoyun requires an app-specific password (generate it under Account info → Security), and the URL must point to a directory under /dav/.", "填「IP 或域名:端口」。协议可写 http:// 或 https://,不写默认 http;http 不写端口默认 3065,https 默认 443。地址里的 /m、/v1 会自动去掉。": "Enter \"IP or domain:port\". The scheme may be http:// or https:// (http is assumed if omitted). Without a port, http defaults to 3065 and https to 443. Any /m or /v1 in the address is stripped automatically.", "处理方式": "Processing mode", "处理示意": "How it works", "备份中…": "Backing up…", "备份包含账号凭证、网关 Key、GitHub 令牌与云同步凭据的恢复密钥,整个文件受备份密码保护。请分开保管文件与密码;忘记密码无法恢复。": "The backup contains recovery keys for account credentials, gateway keys, GitHub tokens, and cloud sync credentials. The whole file is protected by the backup password. Store the file and password separately; without the password, restoration is impossible.", "备份密码": "Backup password", "备份密码不能超过 1024 字节": "The backup password must not exceed 1024 bytes", "备份密码至少需要 12 位,建议使用较长且不重复的密码": "Use at least 12 characters; a long, unique password is recommended", "备份整库": "Back up database", "备份文件内含全部账号凭证、网关 API Key 与面板管理员凭据,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "The backup file contains every account credential, the gateway API keys, and the panel admin credentials — enough to log in directly. Keep it safe; do not share it or upload it anywhere public.", "备选模型": "Backup model", "复制全部信息": "Copy all info", "复制给客户端": "Copy for your client", "复用相同图片的识读结果": "Reuse readings of identical images", "外观": "Appearance", "外观 · 接入 · 关于": "Appearance · Access · About", "多个客户端标识冲突": "Conflicting client identifiers", "天": "days", "天数": "Days", "失败 {n} 个": "failed: {n}", "失败 {n} 个:{detail}": "Failed: {n}; {detail}", "失败后最多再换几个账号试(填 N = 最多换 N 个,首发那个不算)。换到同一家名下另一个账号、或换到另一家,都各算一次;换满仍失败就返回错误。可填 0–10,0 表示失败立即报错。": "How many more accounts to try on failure (N = switch to at most N accounts; the account that made the first attempt does not count). Switching to another account under the same provider and switching to a different provider each count as one; once the limit is reached and the request still fails, an error is returned. Accepts 0–10; 0 means report the error immediately on failure.", "存储桶(Bucket)": "Bucket", "存储概况已刷新": "Storage overview refreshed", "安全": "Security", "安装到主屏幕": "Add to Home Screen", "安装到桌面": "Install as app", "安装包形态": "Installer kind", "完全相同": "Exact match", "官方原文只有一句:声明自己是 ZCode。": "The official text is a single sentence: a declaration that it is ZCode.", "实际处理:": "What actually happens: ", "客户端 system 原样出站。": "The client's system prompt goes out as-is.", "客户端 system 原样出站(只靠指纹脱敏改写模板句)。": "The client's system prompt goes out as-is (only fingerprint masking rewrites template sentences).", "客户端专用请求头": "Client-specific header", "客户端名称": "Client name", "客户端名称不能为空,最长 80 个字符": "Enter a client name of up to 80 characters", "客户端名称重复或与内置名称冲突": "Client name is duplicated or conflicts with a built-in name", "客户端标识无效或重复": "Invalid or duplicate client identifier", "客户端识别": "Client identification", "客户端识别入口尚未就绪,请刷新页面后重试": "Client identification is not ready. Refresh the page and try again.", "客户端识别设置读取失败": "Failed to load client identification settings", "客户端(Claude Code / Codex 等 CLI)会在 system 提示词里注入几十句固定模板,上游按逐字匹配审核,命中就整单拦截(HTTP 400)。指纹脱敏能改写实测命中过的那几句,但换一个客户端版本就可能冒出新的。这里可以把 system 整段换成网关自己那份:①「透传」= 不动客户端 system(默认,行为与之前完全一致);②「替换」= 删掉客户端所有 system / developer 消息,换成网关的提示词(客户端项目规范随之消失);③「追加」= 在开头连续 system 块之后插入一条网关提示词,既有消息逐字不动(客户端规范与网关提示词并用)。那份提示词有两个来源:提示词文件(留空用内置默认),或直接在界面上编辑正文 —— 编辑过就以那份正文为准(优先于文件),清空则回到文件 / 内置默认。另外,透传 / 追加模式下撞了内容拦截(多半是指纹误报)时,网关会自动换一段最小中性提示词重试一次,并把「降级期」开到次日 00:00 —— 期间所有请求直接带中性提示词出门,不再先撞一次 400;这里能看见并提前解除它。上面几项是**默认值**:想给某个提供商单独配,用下面的「按提供商」加一行(带「网关自带」的家默认就列在那里)—— 不同的上游对这些内容的接受程度不一样。": "Clients (CLI tools such as Claude Code / Codex) inject dozens of fixed template sentences into the system prompt, and the upstream reviews them by word-for-word matching — a hit blocks the whole request (HTTP 400). Fingerprint masking can rewrite the sentences observed to be hit, but a different client version may introduce new ones. Here you can replace the whole system prompt with the gateway's own one: (1) \"Passthrough\" = leave the client's system prompt untouched (the default, identical to the previous behavior); (2) \"Replace\" = delete all client system / developer messages and substitute the gateway's prompt (the client's project instructions disappear with them); (3) \"Append\" = insert one gateway prompt after the leading consecutive system blocks, leaving existing messages word-for-word intact (the client's instructions and the gateway prompt are used together). That prompt has two sources: a prompt file (leave empty for the built-in default), or editing the text right in the UI — an edited text takes precedence (over the file), and clearing it goes back to the file / built-in default. Also, in Passthrough / Append mode, if content blocking is hit (usually a fingerprint false positive), the gateway automatically retries once with a minimal neutral prompt and extends the \"fallback period\" to 00:00 the next day — during that period every request goes out with the neutral prompt directly, with no 400 hit first; you can see it here and clear it early. The items above are **defaults**: to configure a single provider, add a row under \"Per-Provider Configuration\" below (providers with \"Gateway-Provided Prompt\" are listed there by default) — different upstreams tolerate these differently.", "家之间仍按优先级,只有同一家内部轮流用各账号 —— 想优先用某几家、又不愿把某一家的某个账号焊死时用它。": "Providers still follow priority; only accounts within the same provider take turns. For preferring a few providers without pinning any single account.", "家内轮询": "Per-provider rotation", "容器内更新": "In-container update", "密码、文件或密钥校验失败时不会替换主库;替换阶段失败会自动尝试还原,实际结果以上方错误说明为准。": "Password, file, or key validation failures leave the main database unchanged. If replacement fails, restoration is attempted automatically; the error above reports the actual outcome.", "密码加密 · 包含恢复密钥": "Password encrypted · Recovery keys included", "密码至少 8 位": "Password must be at least 8 characters", "对话里内嵌的 base64 大图(截图、照片)既撑大请求体,也拉高按像素折算的上游计费。开启后,网关在转发前把超过阈值的图等比缩到长边上限、重新存成 JPEG —— 只改发给上游的副本,请求日志里保存的仍是你发来的原图。同一张原图在多轮对话里重复出现时复用上一次的压缩结果,不会每轮重算。http 链接图片、GIF 动图、SVG 一律不动;压完反而更大的图也保留原图。只作用在对话场景,生图与图片编辑不受影响。默认开启;不想要的话把开关关掉即可。": "Large base64 images embedded in a conversation (screenshots, photos) both bloat the request body and raise upstream billing, which is computed from pixels. When enabled, the gateway scales images above the threshold down to the long-edge limit and re-encodes them as JPEG before forwarding — only the copy sent upstream is changed; the request log still stores the original you sent. When the same original image reappears across turns, the previous compressed result is reused instead of recomputed. Images referenced by http links, animated GIFs and SVGs are never touched; an image that would grow after re-encoding is kept as-is. Applies to chat only — image generation and editing are unaffected. On by default; turn the switch off if you do not want it.", "导入前会把本机的 account.key 改名备份(account.key.bak-时间戳),不会直接删除。": "The local account.key is renamed to a backup (account.key.bak-) before importing; it is never deleted.", "导入完成:{summary}": "Import complete: {summary}", "导入密钥失败:{message}": "Key import failed: {message}", "导入密钥并继续": "Import key and continue", "导入账号": "Import Accounts", "导出中…": "Exporting…", "导出会把全部账号与自定义提供商定义写入一个 JSON 文件,可以拷到另一台机器上导入后继续使用。导入采用合并策略:同提供商下按业务身份(UID / userId / apiKey 等)去重 —— 已存在的账号只更新凭证,保留本机原有的优先级顺序;新账号追加到转发顺序末尾,不会抢占当前正在使用的账号;自定义提供商定义按 id 合并,本机缺失时自动补建。": "Export writes all accounts and custom provider definitions to a JSON file that can be copied to another machine and imported for continued use. Import merges: within the same provider, accounts are deduplicated by business identity (UID / userId / apiKey, etc.) — existing accounts only get their credentials updated and keep this machine's existing priority order; new accounts are appended to the end of the forwarding order and never displace the account currently in use; custom provider definitions are merged by id and created automatically when missing locally.", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义": "The export file contains credentials such as accessToken / refreshToken / apiKey along with custom provider definitions", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "The export file contains credentials such as accessToken / refreshToken / apiKey along with custom provider definitions, and can be used to sign in directly. Keep it safe; do not share it or upload it to a public location.", "导出账号": "Export Accounts", "将数据库和恢复凭证所需的密钥一起保存为密码加密的 .a2ab 备份,可在 Windows、macOS 或 Linux 上恢复,无需手工复制密钥。恢复时整体替换账号、配置、日志与桌面设置,并使用目标机器的密钥重新加密凭证,不覆盖本机已有钥匙。可取消包含日志以减小文件;旧 .sql 备份仍可导入。恢复前自动保留安全备份,完成后需要重新登录管理面板。": "Save the database and required recovery keys in a password-encrypted .a2ab backup. Restore it on Windows, macOS, or Linux without manually copying keys. Restoration replaces accounts, configuration, logs, and desktop settings, and re-encrypts credentials with the destination keys without overwriting them. Exclude logs to reduce file size. Legacy .sql imports remain supported. A safety backup is created before replacement; sign in again afterward.", "尚未注册管理员。开启「网关 → 网络访问 → 允许其他设备访问网关」时会引导注册,也可以从登录页注册。": "No administrator is registered yet. Enabling Gateway → Network access → Allow other devices to access the gateway guides you through registration. You can also register from the sign-in page.", "尚未注册管理员:管理接口不需要登录。开启「允许局域网访问」时会引导注册,也可以从登录页注册。": "No administrator registered: the management API does not require sign-in. Enabling \"Allow LAN access\" walks you through registration; you can also register from the login page.", "尚未配置视觉分析模型": "No vision analysis model is configured", "局域网开放后,管理接口要求登录。请设置管理员账号与密码,注册完成会直接继续开启流程。": "Once LAN access is on, the admin API requires signing in. Set an admin account and password; registration finishes and the enablement flow continues automatically.", "局域网访问": "LAN Access", "工具用法与环境说明那一大段。": "The long block covering tool usage and environment notes.", "已为「{label}」单独配置提示词": "Prompt configured individually for \"{label}\"", "已作为独立应用运行": "Standalone app", "已使用本机密钥重新加密 {n} 项凭证,原有密钥未被覆盖。": "Re-encrypted {n} credentials with local keys. Existing keys were not overwritten.", "已保存 {count} / {limit} 条报文(超出后丢弃最旧的)。": "{count} / {limit} payloads saved (oldest discarded when the limit is exceeded).", "已保存的值不符合当前插件规则,请修改或恢复默认值。": "The saved value does not meet the current plugin rules. Edit it or restore the default.", "已保存,留空则不修改": "Saved; leave blank to keep unchanged", "已保存,留空沿用": "Saved; leave blank to keep", "已关闭": "Disabled", "已关闭 models.dev 联网刷新": "Online refresh for models.dev turned off", "已关闭。{note}": "Disabled. {note}", "已关闭「{label}」的网关自带提示词:能否通过上游校验取决于上游当前口径": "Turned off the gateway-provided prompt for \"{label}\": whether it passes upstream validation depends on the upstream's current criteria", "已关闭会话图片压缩": "Image compression disabled", "已关闭出站指纹脱敏": "Fingerprint masking disabled", "已关闭开发者角色兼容": "Developer role compatibility disabled", "已关闭第三方模型回答完自动折叠过程": "Collapse third-party model work after the answer disabled", "已关闭网关跨域访问": "Gateway CORS disabled", "已关闭:不额外补阶段标记,由客户端决定过程展示。": "Disabled: no extra phase markers; the client controls how work is displayed.", "已删除分组「{name}」": "Deleted group \"{name}\"", "已取消「{label}」的单独配置": "Individual configuration removed for \"{label}\"", "已取消安装": "Installation cancelled", "已取消导入": "Import canceled", "已取消导出": "Export canceled", "已取消恢复": "Restore canceled", "已启用 {count} 条规则,应用于{scope}。": "{count} rules enabled, applied to {scope}.", "已启用登录": "Sign-in enabled", "已复制全部版本信息": "Copied all version info", "已应用": "Applied", "已开启": "Enabled", "已开启:为正常完成的 Codex 回答补阶段标记。": "Enabled: add phase markers to normally completed Codex replies.", "已开启:其他设备把 API 地址指向 {url}{panel}。": "Enabled: on other devices, point the API address to {url}{panel}.", "已开启:监听 0.0.0.0,允许其他设备访问。": "Enabled: listening on 0.0.0.0 to allow access from other devices.", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "Restored the default groups: Overview / Forwarding / Diagnostics / System", "已截断": "Truncated", "已指定出口": "Pinned egress", "已接管": "Managed", "已改回内置默认提示词": "Reverted to the built-in default prompt", "已新建分组「{name}」,点组头的 + 把菜单移进来": "Created group \"{name}\" — use + on its header to move menus in", "已清掉「{label}」界面编辑的正文": "Cleared the UI-edited text for \"{label}\"", "已清掉界面编辑的提示词(回落文件 / 内置默认)": "Cleared the UI-edited prompt (falls back to the file / built-in default)", "已清除本机保存的 API Key": "Removed the API key stored in this browser", "已生效": "In Effect", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。": "Switched automatically to a minimal neutral prompt (an upstream content block — most likely a system-prompt fingerprint false positive); lifts automatically at {until}.", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "Automatically switched to a minimal neutral prompt (upstream content blocking was hit, most likely a false positive on system fingerprints); it clears automatically at {until}. During this period this mode's own prompt is not sent; once you have fixed the prompt you can clear it immediately.", "已自定义": "Customized", "已运行": "Uptime", "已退出登录": "Signed out", "已隐藏": "Hidden", "巴西葡萄牙语": "Brazilian Portuguese", "希望接入新的提供商或模型": "A new provider or model you would like supported", "库中 schema": "Schema in database", "库主文件的大小(不含运行期间的 WAL 临时文件,退出时已自动并回)。": "Size of the database's main file (excluding WAL temp files created while running, which are merged back in automatically on exit).", "库存目标": "Stock target", "应用提供商": "Apply to providers", "应用版本:{version}": "App version: {version}", "应用状态": "App status", "应用窗口": "App window", "建立上游 TCP/TLS 连接或代理隧道的最大等待时间(秒),默认 30 秒,范围 1~3600。": "Maximum time to establish the upstream TCP/TLS connection or proxy tunnel (seconds). Default 30 seconds, range 1–3600.", "开发构建": "Debug build", "开发者角色兼容": "Developer role compat", "开发者角色兼容设置已刷新": "Developer role compatibility setting refreshed", "开启前需要注册面板管理员,已注册会跳过此步骤。管理接口需要管理员会话或网关 Key;API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。": "A panel administrator must be registered before enabling this; existing administrators skip this step. Management endpoints require an admin session or gateway key. API calls require an enabled gateway key; a default key is created automatically if none is available.", "开启后新发生的请求才会被记录(已经过去的请求补不回来)。报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "Only requests that happen after turning this on are recorded (past ones can't be backfilled). Payloads live in the local database and only the most recent 500 are kept (the oldest are dropped beyond that); the count shows under \"Data → Data storage\" on the left as \"Debug payloads\".", "开启后新发生的请求才会被记录(已经过去的请求补不回来),请求日志的「预览对话」也随之开始保存原始正文。上游报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "Only requests that occur after this is enabled are recorded (past requests cannot be recovered), and the \"Conversation preview\" in request logs also starts saving raw bodies. Upstream payloads are stored in the local database, keeping only the most recent 500 (the oldest are discarded when the limit is exceeded); the count is shown under \"Data → Data Storage\" → \"Debug Payloads\".", "开启后监听所有 IPv4 网卡(0.0.0.0),并不局限于局域网,也不会自动开放到公网;实际访问范围取决于网络与防火墙设置。修改后需要重启应用。": "Enabling this listens on all IPv4 interfaces (0.0.0.0), not just the LAN, but does not automatically expose the gateway to the internet. Actual access depends on your network and firewall settings. Changes require an app restart.", "开启后网关将监听所有 IPv4 网卡(0.0.0.0),访问范围不再限于本机,也不局限于局域网。是否能从公网访问取决于网络与防火墙设置。": "The gateway will listen on all IPv4 interfaces (0.0.0.0). Access is no longer limited to this machine or to the LAN. Public internet access depends on your network and firewall settings.", "开启后网关将监听所有网卡,同一局域网内的设备即可把 API 地址指向本机 IP 一起使用;管理接口从此要求管理员会话或网关 Key,转发接口在没有一把启用的 Key 时也会拒绝服务(届时会自动创建一把名为「默认」的 Key)。": "Once enabled, the gateway listens on all network interfaces, and devices on the same LAN can point the API address at this machine's IP to share it; the admin API then requires an admin session or a gateway key, and the forwarding API refuses service when no key is enabled (a key named \"Default\" is created automatically at that point).", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 套餐池(Start Plan)」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "When enabled, closing the window does not just hide it — the entire UI window is destroyed: the six resident WebView2 processes (about 200 MB of memory) exit, while gateway forwarding, scheduled check-ins and balance queries keep running in the background process, unaffected; click the tray icon to reopen the UI when needed (WebView cold start takes about 1 second). Note: while the UI is destroyed, CAPTCHA tokens for the ZCode \"Plan pool (Start Plan)\" channel are minted by the UI and cannot be replenished — requests on that channel land in the request log as 503 (with the reason), and reopening the UI restores minting automatically. This switch only matters when \"Minimize to tray on close\" is enabled; minimizing the window is unaffected.", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 活动套餐」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "Once enabled, closing the window does not merely hide it — the UI window is destroyed entirely: WebView2's six resident processes (about 200MB of memory) exit with it, while gateway forwarding, scheduled check-ins, and balance queries keep running in the background process, unaffected; to get the UI back, click the tray icon (a cold WebView start takes about 1 second). Note: while the UI is destroyed, the verification-code tokens for the \"ZCode activity plan\" channel are minted by the UI and cannot be replenished — requests going through that channel land in the request logs as 503 (with the reason stated), and reopening the UI restores them automatically. This switch only matters when \"Minimize to tray when the window is closed\" is on; minimizing the window is unaffected.", "开启后,关闭窗口会销毁界面并释放 WebView 进程,网关转发、定时签到、余额查询仍在后台继续。ZCode 模型请求免验证时不受影响;上游要求人机验证时,需要重新打开界面,在账号的「套餐明细」中主动完成验证。此开关只在「关闭窗口时最小化到托盘」开启时有意义。": "When enabled, closing the window destroys the interface and releases WebView processes. Forwarding, scheduled check-ins and balance queries continue in the background. ZCode requests exempt from verification are unaffected. If verification is required, reopen the interface and complete it in the account’s Plan details. This setting applies only when closing minimizes the app to the tray.", "开启后,新发生的请求会保存上游调试报文与下游正文,历史请求无法补录。上游调试报文只保留最近 500 条;两侧条数可在「数据 → 数据存储」查看。关闭开关不会删除已保存的报文,可在请求日志中选择「仅清空报文原文」一起清理。": "New requests save upstream debug payloads and downstream bodies after this is enabled; past requests cannot be backfilled. Only the most recent 500 upstream debug payloads are kept. Counts for both sides are shown under Data → Data storage. Turning this off does not delete saved payloads; choose Clear raw payloads only in request logs to clear both sides together.", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。": "Once enabled, the sign-in page completes verification in the browser in the background (imperceptible to a real person), while every scripted attempt must first solve a challenge — brute-forcing and mass registration become significantly more expensive. This only affects panel sign-in / registration, not the API keys used by API clients.", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。桌面端与网页端各自独立:桌面端主要服务本机与局域网,网页端(Docker / 服务端)直接暴露在网络上的登录页风险更高,建议保持开启。": "When on, the login page solves the challenge in the background (invisible to humans) while every scripted attempt must compute one first — brute force and account squatting become far more expensive. It only affects panel sign-in / registration, not API keys used by clients. Desktop and web are independent: the desktop page mostly serves this machine and the LAN, while the web page (Docker / server) is exposed to the network and benefits more from staying on.", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "When on, the gateway stores every forward's **request to the upstream** (headers + body) and the **upstream response** (status code + headers + body) locally in full, for the \"Details\" view on the request logs page. Credential fields in request headers — Authorization, Cookie, API Key, and the like — are always replaced with [redacted] and never hit the disk in plain text; request and response bodies are stored as-is (they may contain your conversations). Only the most recent 500 payloads are kept; the oldest are dropped beyond that. This is a temporary troubleshooting switch — keep it off when you don't need it.", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看;请求日志详情的「预览对话」也依赖本开关 —— 它保存的是客户端发来的请求体与网关下发的响应体(两侧各截断到 128 KiB),不开这个开关时预览对话没有数据可看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。上游报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "Once enabled, the gateway saves every forward's **request to the upstream** (request headers + request body) and **the upstream's response** (status code + response headers + response body) in full locally, for viewing under \"Details\" on the request logs page; the \"Conversation preview\" in request details also depends on this switch — it saves the client's request body and the gateway's response body (each truncated to 128 KiB), and with the switch off there is no data to preview. Credential fields in request headers such as Authorization, Cookie, and API Key are always replaced with [redacted] and never written to disk in plain text; request and response bodies are saved as-is (they may contain your conversation content). Only the most recent 500 upstream payloads are kept; older ones are discarded. This is a temporary switch for troubleshooting — turn it off when you no longer need it.", "开启后,能连接到网关的设备可通过浏览器访问网页管理面板,需使用管理员账号登录。访问范围与网关相同,并不局限于局域网。": "Devices that can reach the gateway will be able to open the web management panel in a browser and sign in with an administrator account. Its access scope is the same as the gateway's and is not limited to the LAN.", "开启后,调用方可以用专用请求头声明已登记的客户端名称。这不是身份认证,只用于日志和统计,不会获得额外权限。": "When enabled, callers can declare a registered client name using the dedicated header. This is not authentication: it only affects logs and statistics and grants no additional permissions.", "开启局域网访问": "Enable LAN Access", "开启来源声明": "Enable origin declarations", "开启网络访问": "Enable network access", "开放后,局域网内其他设备的浏览器打开本机 IP 即可进入管理面板(需管理员账号登录)。": "Once enabled, other devices on the LAN can open this machine's IP in a browser to reach the admin panel (signing in with an admin account is required).", "开机自动启动": "Launch at startup", "开源许可": "Open-source license", "开(最多 {n} 轮)": "On (up to {n} rounds)", "归属客户端": "Assigned client", "当前三段都是官方原文。": "All three blocks are currently the official text.", "当前不可用": "Currently unavailable", "当前后端不支持词表编辑与提供商范围,请更新后端后重试。": "This backend does not support editable rules or provider scope. Update the backend and try again.", "当前固定为浅色模式,不随系统变化。": "Currently fixed to Light mode; it does not follow the system.", "当前固定为深色模式,不随系统变化。": "Currently fixed to Dark mode; it does not follow the system.", "当前密码": "Current password", "当前已改过:{edited}。": "Edited so far: {edited}.", "当前形态": "Running as", "当前按 100% 显示(默认比例)。": "Currently displayed at 100% (the default).", "当前按 k / M 缩写显示(如 1.20M / 8.4k)。": "Currently shown with k / M abbreviations (e.g. 1.20M / 8.4k).", "当前按 {n}% 显示。": "Currently displayed at {n}%.", "当前按「万 / 亿」式本地量级词显示(如 1.2亿 / 8400万)。": "Currently shown with 万 / 亿-style local magnitude words (e.g. 1.2亿 / 8400万).", "当前是透传模式:存下来也不会发出,切成「替换 / 追加」之后才生效。": "Currently in Passthrough mode: saving it will not send it; it takes effect only after switching to \"Replace / Append\".", "当前显示为「1.20M / 8.4k / 1.2B」这类英文缩写。": "Currently shown with k / M / B abbreviations (e.g. 1.20M / 8.4k / 1.2B).", "当前显示为「1.2亿 / 8400万」这类中文量级。": "Currently shown as \"1.2亿 / 8400万\"-style Chinese magnitudes.", "当前样本结果:{name}": "Current sample result: {name}", "当前正在使用": "Currently in use", "当前浏览器以管理员身份登录着本面板。「退出登录」会撤销这台设备的登录会话(30 天内的自动续期一并失效),需要重新输入账号密码;其他已登录的设备不受影响。": "This browser is currently signed in to the panel as an administrator. \"Sign Out\" revokes this device's session (automatic renewals within 30 days are voided too) and the account and password must be entered again; other signed-in devices are unaffected.", "当前版本不支持品牌设置": "This version does not support brand settings", "当前环境不支持局域网访问设置": "This environment does not support LAN access settings", "当前环境不支持整库备份": "Full-database backup is not available in this environment", "当前环境不支持整库备份(仅桌面端可用)": "Full-database backup is not available here (desktop only)", "当前环境不支持整库恢复": "Full-database restore is not available in this environment", "当前环境不支持整库恢复(仅桌面端可用)": "Full-database restore is not available here (desktop only)", "当前环境不支持网络访问设置": "Network access settings are not supported in this environment", "当前环境不支持读取版本信息(桥接方法缺失)": "This environment cannot read version info (bridge method missing)", "当前生效值:{value}": "Effective value: {value}", "当前生效的正文来自{source}{file}。保存后这一份会盖过提示词文件与内置默认{note}。": "The active text comes from {source}{file}. Once saved, this copy overrides the prompt file and the built-in default{note}.", "当前界面": "Current interface", "当前管理员:{name}": "Signed in as: {name}", "当前设置已保存": "Current settings are saved", "当前跟随操作系统的深浅色设置,系统切换时界面会自动跟上。": "Currently following the operating system's light / dark setting; the UI follows along automatically when the system switches.", "当前路由内的可用视觉模型": "Available vision models in the current route", "待迁移旧数据": "Legacy data pending migration", "待配置": "Not configured", "忘记密码时无法在界面里找回:需要停掉程序后,从数据库删除管理员记录(kv 表的 panelAdmin 键),重启后按首次使用重新注册。具体命令与各形态的库文件路径见 docs 目录下的「重置管理员」文档。": "If you forget the password it cannot be recovered in the UI: stop the program, delete the administrator record from the database (the panelAdmin key in the kv table), then restart and register again as on first use. Commands and the database path for each deployment form are in the \"Reset administrator\" document under docs.", "思考等级、图片能力未知、等待上限": "Reasoning level, unknown image capability, wait limit", "恢复中…": "Restoring…", "恢复失败:{message}": "Restore failed: {message}", "恢复官方原文": "Restore Official Text", "恢复插件默认值": "Restore plugin default", "恢复整库": "Restore database", "恢复整库备份": "Restore full backup", "恢复默认": "Restore Defaults", "恢复默认 Logo": "Restore default logo", "恢复默认侧边栏": "Restore default sidebar", "恢复默认品牌": "Restore default brand", "恢复默认词表": "Restore default rules", "想回到原来那份,把这里清空再保存即可(不会删掉你配的文件路径)。": "To go back to the previous one, clear this and save (the file path you configured is not deleted).", "想要的新功能或改进想法": "A new feature or improvement you would like to see", "所有未单独配置的提供商都用这一份": "Used by every provider that is not configured individually", "所有菜单都已在这一组": "Every menu is already in this group", "手机端可管理所连接网关的账号、签到与插件,并使用提供商声明的动态登录入口;其余既有添加入口、编辑凭证和改写客户端配置仍需桌面面板。": "The mobile app manages accounts, check-in and plugins on the connected gateway and supports sign-in through providers’ declared dynamic methods. Other existing add-account entry points, credential editing and client configuration changes still require the desktop panel.", "托管网页界面": "Serves web UI", "把地址里的 your-server 与 USERNAME 换成你自己的;目录不存在时会自动创建。": "Replace your-server and USERNAME in the URL with your own; the directory is created automatically if missing.", "把整份数据库(账号、网关配置、事件日志、请求统计、调试报文与桌面设置)导出成一个 SQL 文件,恢复时整体替换本机全部数据 —— 与上面「账号导入 / 导出」的逐条合并是两种语义:恢复会连配置、日志与当前启用状态一起换成备份那台机器的状态。导出默认包含日志与调试报文(文件可能很大),不需要时可以取消勾选只备业务数据。恢复前会自动把当前数据备份到配置目录的 backups/ 下,恢复后需要重新登录管理面板。": "Exports the entire database (accounts, gateway config, event logs, request stats, debug payloads, desktop settings) into one SQL file; restoring wholesale-replaces all local data. This is a different semantic from the \"Account import / export\" above, which merges item by item: a restore swaps config, logs, and enabled states to whatever the backup machine had. The export includes logs and debug payloads by default (the file can be large); uncheck to back up business data only. Before a restore, the current data is automatically backed up to backups/ under the config directory, and you will need to log in to the panel again afterwards.", "把整次请求交给视觉模型,由它直接回答,不再回到原模型。": "The whole request goes to the vision model, which answers directly instead of the original model.", "把菜单移入 {name}": "Move a menu into {name}", "把菜单移入「{name}」": "Move a menu into \"{name}\"", "把账号、网关配置、自定义提供商、Agent 配置、代理池 / 订阅、签到与余额记录同步到 WebDAV 或 S3 兼容存储,换台机器后一键取回。事件日志、请求明细、调试报文与面板登录态不在同步范围内(它们是本机的运行痕迹)。上传的账号凭证仍是加密形态,解密用的账号密钥由「同步密码」单独加密后一并上传 —— 同步密码不会保存到云端,换机下载时需要重新输入。": "Sync accounts, gateway configuration, custom providers, Agent profiles, proxy pool / subscriptions, and check-in and balance records to WebDAV or S3-compatible storage, then pull them back on another machine in one click. Event logs, request details, debug payloads and panel login state are out of scope (they are this machine's runtime traces). Uploaded account credentials stay encrypted; the account key that decrypts them is itself encrypted with the sync password and uploaded alongside — the sync password is never stored in the cloud, so you must re-enter it when restoring on another machine.", "把路径里的主目录显示成 ~,截图分享时不暴露用户名": "Shows the home directory in paths as ~ so screenshots do not reveal your username", "把路径里的主目录(如 C:\\Users\\你的用户名)显示成 ~,截图分享时不暴露用户名。只影响本页显示与复制,不改任何文件。": "Shows the home directory in paths (e.g. C:\\Users\\your-name) as ~ so screenshots do not reveal your username. Only affects this page and its copied text; no files are changed.", "报表天数": "Report Days", "报表页的热力图与按天趋势,默认 99999 天(近似全量保留),可填 1–99999 天。": "The heatmap and daily trends on the Reports page. Defaults to 99999 days (about 274 years — kept in full for practical purposes); range 1–99999 days.", "拖动分组 {name}": "Drag group {name}", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "Drag the ⠿ handle to reorder (menus can move across groups); use the switches to show or hide; click a group name to rename it; the + on a group header moves another menu into it; the eye button hides a whole group. Changes apply instantly and are remembered — the sidebar on the left is the result. Keyboard: focus a handle and press Alt+↑ / ↓.", "拖动菜单 {name}": "Drag menu {name}", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "Drag to reorder groups (Alt+↑ / ↓ also works)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "Drag to reorder, across groups too (Alt+↑ / ↓ also works)", "指定备选仍受当前请求权限和路由范围限制,路由组请求不会跳到组外。不会转为辅助识图继续。": "Designated fallbacks remain subject to the current permissions and route scope. Route-group requests never leave the group. This mode never falls back to assisted image reading.", "指定提供商": "Selected providers", "指定角色": "Selected roles", "指定错误码直接换号": "Switch Accounts on Specified Error Codes", "指纹脱敏": "Fingerprint sanitizing", "指纹脱敏会在转发前按词表顺序改写请求消息中的文本,包括对话内容、思考内容和工具调用参数。默认词表包含客户端模板句与计费表头的精确替换、正则删除规则,可以新增、编辑、删除、启停和调整顺序;替换内容留空表示删除匹配内容。默认应用全部提供商,也可指定多家。改动只作用于发给上游的副本,响应内容不变。编辑后点击「保存设置」,下一次请求生效;清空词表表示不做任何指纹改写,恢复默认只重置词表。": "Before forwarding, fingerprint masking applies rules in list order to message text, including conversation content, reasoning content and tool-call arguments. The default rules contain exact replacements and regular-expression deletions for client templates and billing headers. You can add, edit, delete, enable, disable and reorder rules; an empty replacement deletes the matched text. All providers are selected by default, or you can select specific providers. Only the outbound copy is modified; responses are unchanged. Click Save settings to apply changes to the next request. An empty rule list performs no fingerprint rewriting, and restoring defaults resets only the rules.", "指纹脱敏设置仅本次运行生效,写入数据库失败,请检查配置目录": "Fingerprint masking settings apply only to this run. Database writing failed; check the configuration directory.", "指纹脱敏设置已刷新": "Fingerprint masking settings refreshed", "按下面两块设置处理图片;关闭后设置全部保留。": "Images are handled by the two blocks below; turning this off keeps all of the settings.", "按原文精确匹配,区分大小写;不会自动去掉首尾空白。": "Matches the exact text, case-sensitively. Leading and trailing whitespace is preserved.", "按天聚合保留天数": "Daily aggregate retention (days)", "按指定备选顺序尝试": "Try designated fallbacks in order", "按提供商查看和调整专属选项": "View and adjust provider-specific options", "按提供商筛选设置": "Filter settings by provider", "按提供商管理专属选项,作用于当前网关中该提供商的所有账号。": "Manage provider-specific options. Changes apply to all accounts for that provider on the current gateway.", "按提供商配置": "Per-Provider Configuration", "按每条请求的软件标识识别客户端,不依赖 API Key。规则修改只影响新请求,内置规则随软件更新,自定义规则参与备份与云同步。": "Identify each request by its software identifiers, independently of API keys. Rule changes affect new requests only. Built-in rules update with the app; custom rules are included in backups and cloud sync.", "换一台服务器": "Switch server", "排队等待": "Queueing", "排队等待次数": "Queue Wait Count", "排队等待秒数": "Queue Wait Seconds", "排队等待设置已刷新": "Queueing settings refreshed", "接入": "Access", "接受调用方来源声明": "Accept caller origin declarations", "接管回答的模型": "Model that takes over the answer", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "Choose which menus the sidebar shows, in what order, and how they are grouped. Hiding only affects navigation — it does not revoke access, and hidden pages can still be opened by URL.", "控制报表与请求日志里 Token 读数的写法:开启后按「万 / 亿」式的本地量级词显示(简体为万 / 亿,繁体为萬 / 億,日文为万 / 億,韩文为만 / 억),关闭则用 k / M 缩写(与上游文档、接口字段的写法一致)。英文 / 葡语的本地量级词就是 k / M,这项对它们没有区别。只影响显示口径,不改变任何统计与存储的数值。": "Controls how Token counts are written in reports and request logs: when on, values are shown with 万 / 亿-style local magnitude words (万 / 亿 in Simplified Chinese, 萬 / 億 in Traditional Chinese, 万 / 億 in Japanese, 만 / 억 in Korean); when off, k / M abbreviations are used (matching how upstream docs and API fields write them). For English / Portuguese the local magnitude words are k / M, so this makes no difference to them. This only affects how values are displayed; no statistics or stored numbers change.", "控制报表与请求日志里 Token 读数的写法:开启后按中文量级显示(1.2亿 / 8400万),关闭则用 k / M / B 缩写(与上游文档、接口字段的写法一致)。这只影响显示口径,不改变任何统计与存储的数值。": "Controls how token counts read in reports and request logs: on shows Chinese magnitudes (1.2亿 / 8400万), off uses k / M / B abbreviations (consistent with upstream docs and API fields). This only changes the display; no statistics or stored numbers are affected.", "控制界面的深浅色,与左侧边栏底部的三个主题按钮是同一个设置(改哪一处,另一处立刻跟上)。「跟随系统」会随操作系统当前的浅色 / 深色自动切换,并在系统主题变化时即时跟上;选「浅色」或「深色」则把界面固定在该模式,不再随系统变化。窗口标题栏的深浅色会一并同步,不会出现深色界面配一条浅色标题栏的情况。": "Controls the UI's light / dark colors; it is the same setting as the three theme buttons at the bottom of the left sidebar (change either one and the other follows immediately). \"System\" switches automatically with the operating system's current light / dark setting and follows changes as they happen; choosing \"Light\" or \"Dark\" pins the UI to that mode regardless of the system. The window title bar's light / dark color stays in sync too, so you never end up with a dark UI under a light title bar.", "提供商与模型": "Provider and model", "提供商专属设置": "Provider-specific settings", "提供商当前不可用,未保存的修改已保留;恢复插件后可继续编辑。": "The provider is unavailable. Unsaved edits are kept; restore the plugin to continue editing.", "提供商设置已保存": "Provider settings saved", "提供商设置返回格式无效,请刷新后重试": "The provider settings response is invalid. Refresh and try again.", "提建议": "Make a Suggestion", "提示词文件": "Prompt File", "提示词文件已更新": "Prompt file updated", "提示词正文": "Prompt Text", "提示词正文已更新": "Prompt text updated", "插件或设置已变化,请放弃修改并刷新后重新编辑。": "The plugin or settings changed. Discard your edits and refresh before editing again.", "操作系统": "Operating system", "支持 .a2ab 加密备份和旧 .sql 文件;旧 SQL 不包含恢复密钥,跨机器导入仍需原机密钥。": "Supports encrypted .a2ab backups and legacy .sql files. Legacy SQL does not include recovery keys, so another machine still needs the original keys.", "支持 PNG、JPG、WebP,最大 2 MiB、4096 × 4096 像素;自动缩小至 512 像素以内,建议使用正方形图片。": "Supports PNG, JPG and WebP up to 2 MiB and 4096 × 4096 pixels. Images are resized to fit within 512 pixels. Square images are recommended.", "改动仍保存在本机,修复网络或凭据后下一次改动会自动重试,也可以手动点「上传到云端」。": "Your changes are still saved locally. After fixing the network or credentials, the next change retries automatically, or click \"Upload to cloud\" manually.", "改动仍保存在本机,系统会延长等待并自动重试;修复网络或凭据后,也可以手动点「上传到云端」。": "Your changes remain saved locally. The system will retry automatically with a longer delay. After fixing the network or credentials, you can also select \"Upload to cloud\" manually.", "改完立即生效,不用重启(下一个请求就用新模式)。降级是自动的临时状态,解除后本模式自己的提示词立刻恢复。": "Takes effect immediately after the change, no restart needed (the next request uses the new mode). The fallback is an automatic temporary state; once cleared, this mode's own prompt is restored immediately.", "放大或缩小整个界面(文字与控件一起变),效果与浏览器 Ctrl +/- 相同:共 11 档,立即生效并记住。": "Zoom the whole interface in or out (text and controls scale together), equivalent to Ctrl +/- in a browser: 11 steps, applied immediately and remembered.", "放弃修改并刷新": "Discard edits and refresh", "数据": "Data", "数据保留": "Data Retention", "数据保留设置已刷新": "Data retention settings refreshed", "数据存储": "Data Storage", "数据库 schema": "Database schema", "数据库不可用": "Database unavailable", "数据库与恢复密钥一起加密保存。密码不会保存在应用或备份中,忘记后无法恢复,请妥善保管。": "The database and recovery keys are encrypted together. The password is not stored in the application or backup. Keep it safe: without it, restoration is impossible.", "数据库主文件与 WAL 文件的总占用,与请求日志清理弹窗采用同一口径;清理后可压缩数据库回收空闲空间。": "Total size of the database main file and WAL file, using the same calculation as the request cleanup dialog. After clearing data, vacuum the database to reclaim unused space.", "数据库文件": "Database file", "数据目录": "Data directory", "数据统一保存在配置目录下的 agent2api.db;如需更换位置,请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "Data is kept in agent2api.db in the configuration directory; to change the location, set the AGENT2API_PROXY_HOME environment variable and restart the app.", "整体替换": "wholesale-replaced", "整库备份 / 恢复": "Full-database backup / restore", "整次请求交给 {model} 直接回答,不再回到原模型。": "The whole request goes to {model}, which answers directly instead of the original model.", "新分组名": "New group name", "新增 {added} 个、更新 {updated} 个{suffix}{note}": "{added} added, {updated} updated{suffix}{note}", "新增脱敏规则": "Add masking rule", "新增规则": "Add rule", "新安装和升级后默认关闭。先配置再开启,关闭后保留配置。": "Off by default for new installations and upgrades. Configure before enabling; disabling keeps your settings.", "新密码": "New password", "新密码不能与当前密码相同": "New password must differ from the current one", "新密码至少 8 位": "Password must be at least 8 characters", "新建分组": "New group", "新建客户端分类": "New client category", "无效或重复的标识请求头:{headers}": "Invalid or duplicate identity headers: {headers}", "无法读取品牌设置": "Could not read brand settings", "无法读取图片,请重新选择": "Could not read the image. Select it again.", "日志与请求日志同时受保留天数和数量上限限制。日志默认 30 天、10000 条,各级别按比例保留;调试详情最多保留 3 天。请求日志默认 99999 天、1000000 条(100 万),超出后从最旧的记录开始清理,并同步删除对应原始正文。按天聚合默认 99999 天,只按天数保留,不受请求日志数量清理影响。天数可填 1–99999,数量可填 1–100000000。调小任一设置并确认后立即清理,且不可恢复。": "Logs and request logs are limited by both retention days and record count. Logs default to 30 days and 10,000 records, with capacity allocated proportionally by level; debug details are kept for at most 3 days. Request logs default to 99999 days and 1,000,000 records; excess records are removed oldest first together with their raw bodies. Daily aggregates default to 99999 days and are limited only by days; request log count cleanup does not affect them. Days accept 1–99999 and counts accept 1–100000000. Lowering any setting and confirming immediately removes excess data, which cannot be recovered.", "日志保留数量上限": "Log record limit", "日志文件": "Log file", "日语": "Japanese", "显示 {name}": "Show {name}", "显示分组 {name}": "Show group {name}", "显示名称": "Display name", "显示名称最多 64 个字符": "The display name can contain up to 64 characters", "显示模式": "Theme", "显示这一组": "Show this group", "暂无可编辑的提供商设置": "No editable provider settings", "暂无自定义规则,正在使用内置识别。也可以从请求详情直接添加规则。": "No custom rules; built-in identification is active. You can also add a rule from request details.", "暂未获取到本机访问地址,请使用其他设备能连接到的本机 IP 与网关端口。": "The local access address is not available yet. Use this machine's IP and gateway port that the other device can reach.", "更新": "Update", "更新出网线路": "Update egress route", "更新通道": "Update channel", "替换": "Replace", "替换 = 客户端 system / developer 消息全部删掉,换成网关的提示词;追加 = 保留客户端内容,只在开头 system 块之后多插一条。两者都只改发给上游的副本,客户端看到的响应不变。": "Replace = delete all client system / developer messages and substitute the gateway's prompt; Append = keep the client's content and just insert one extra prompt after the leading system blocks. Both only change the copy sent upstream; the response the client sees is unchanged.", "替换为网关提示词": "Replace with gateway prompt", "替换内容": "Replacement text", "替换内容最多 {max} 个字符": "Replacement text must not exceed {max} characters", "替换前会自动把当前数据备份到配置目录的 backups/ 文件夹。": "Before the replace, the current data is automatically backed up to the backups/ folder under the config directory.", "替换并恢复": "Replace and restore", "最多 64 个字符,留空恢复为 Agent2API。": "Up to 64 characters. Leave blank to restore Agent2API.", "最小自动上传间隔": "Minimum automatic upload interval", "最近 {window} 条请求中,{scanned} 条有识别依据,{matched} 条符合条件,{applied} 条会采用本规则。": "Of the latest {window} requests, {scanned} have evidence, {matched} match, and {applied} would use this rule.", "有未保存的修改": "There are unsaved changes", "有未保存的改动:保存后才能同步(测试连接不受影响)。": "Unsaved changes: save first to sync (testing the connection is unaffected).", "有近期套餐池请求时读取库存状态的间隔,默认 2500 毫秒,可填 1000–30000。没有近期请求时降低读取频率,轮询不会发起验证码。": "Stock polling interval while Start Plan requests are recent: 2500 ms by default, from 1000 to 30000. Polling slows down when idle and never triggers verification.", "服务商": "Provider", "服务器地址": "Server URL", "服务端密钥加密保存,不会返回浏览器;切回 ALTCHA 后会保留,方便再次启用。": "The secret key is stored encrypted and never returned to the browser. It is kept when switching back to ALTCHA so you can enable Turnstile again later.", "服务端密钥(Secret Key)": "Secret Key", "期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "While this mode is on, its own prompt is not sent; lift it as soon as your prompt is fixed.", "未保存": "Unsaved", "未匹配已知客户端": "No known client matched", "未单独配置:模式、提示词文件与正文都跟随上面的全局配置(当前「{mode}」)。": "Not configured individually: mode, prompt file, and text all follow the global configuration above (currently \"{mode}\").", "未启用": "Disabled", "未开启轻量模式:关窗仅隐藏窗口,界面进程常驻内存,随时打开不等待": "Lightweight mode off: closing the window only hides it, the UI process stays in memory, and it opens instantly", "未开启,developer 角色消息会原样发往上游,不认识该角色的上游会报错(400)。": "Off: developer-role messages are sent upstream as-is; upstreams that do not know the role return an error (400).", "未开启,客户端 system 模板会原样发往上游,可能被内容审核误拦(400)。": "Off: client system templates go upstream as-is and may be falsely blocked by content review (400).", "未开启,浏览器跨域无法直连网关。": "Off: browsers cannot reach the gateway cross-origin.", "未开启,转发时不保存任何原始报文。": "Off: no raw payloads are saved while forwarding.", "未开启:网关只监听 127.0.0.1,仅本机可以访问。": "Off: the gateway listens only on 127.0.0.1 and is reachable only from this machine.", "未注册": "Not registered", "未注册闸门": "Unregistered gate", "未知原因": "Unknown reason", "未知来源": "Unknown source", "未知设备": "Unknown device", "未知账号": "Unknown account", "未能读取 Cline 伪装头设置,请稍后重试": "Could not read the Cline spoofed header settings. Please try again later.", "未能读取 models.dev 元数据状态,请稍后重试": "Could not read the models.dev metadata state. Please try again later.", "未能读取云同步设置,请稍后重试。": "Could not read cloud sync settings. Please try again later.", "未能读取保存后的指纹脱敏设置": "Could not read the saved fingerprint masking settings", "未能读取开发者角色兼容设置,请稍后重试": "Could not read the developer role compatibility setting, please try again later", "未能读取指纹脱敏设置,请稍后重试": "Could not read the fingerprint masking settings. Please try again later.", "未能读取机器人校验设置": "Could not read bot verification settings", "未能读取第三方模型回答完自动折叠过程设置,请稍后重试": "Could not read the third-party reasoning collapse setting, please try again later", "未能读取系统提示词设置,请稍后重试": "Could not read the system prompt settings. Please try again later.", "未能读取网关跨域访问设置,请稍后重试": "Could not read the gateway CORS settings. Please try again later.", "未能读取网络访问设置,请稍后重试": "Could not load network access settings. Please try again later.", "未能读取调试模式设置,请稍后重试": "Could not read the debug mode settings. Please try again later.", "未能读取账户信息,请稍后重试": "Could not read account information, please try again later", "未采用本规则,请检查开关、来源声明或规则顺序": "This rule was not used. Check its switch, caller declarations, or rule order.", "本地账号、配置、签到与余额记录变化后自动上传(合并 1 秒内的连续改动,最长 10 秒传一次;内容没变时不发请求)。": "Automatically upload after local account, configuration, check-in and balance record changes (changes within 1 second are merged, at most one upload every 10 seconds; no request is sent when nothing changed).", "本机 API 地址": "This device's API address", "本机 APK 版本": "Local APK version", "本机全部数据会被备份整体替换,恢复前自动保留安全备份,完成后需要重新登录管理面板。本机已有密钥不会被覆盖。": "All local database data will be replaced. A safety backup is saved first, and you must sign in again afterward. Existing local keys will not be overwritten.", "本机应用版本": "Local app version", "本机界面版本": "Local UI version", "本机的业务数据(账号、配置、Agent 配置、代理池 / 订阅、签到与余额记录)将上传并": "This machine's business data (accounts, configuration, Agent profiles, proxy pool / subscriptions, check-in and balance records) will be uploaded and", "本机的全部数据(账号、网关配置、日志统计与桌面设置)将被所选备份文件": "All data on this machine (accounts, gateway config, log stats, and desktop settings) will be ", "本机的账号、网关配置、Agent 配置、代理池 / 订阅、签到与余额记录将被远端快照": "This machine's accounts, gateway configuration, Agent profiles, proxy pool / subscriptions, and check-in and balance records will be replaced by the remote snapshot", "本次无需刷新": "No refresh needed this time", "本软件不提供任何担保,可按 AGPL-3.0 修改与分发;通过网络提供修改版服务时须向用户提供对应源码。": "This software comes without warranty and may be modified and distributed under AGPL-3.0. Modified network services must offer their Corresponding Source to users.", "本项目的 AGPL-3.0 许可不替代这些第三方许可。名称与标识的商标权归各自权利人所有。": "This project's AGPL-3.0 license does not replace these third-party licenses. Trademark rights in names and logos belong to their respective owners.", "机器人校验": "Captcha", "机器人校验设置已保存": "Bot verification settings saved", "条数": "Record count", "来源声明当前关闭,这条规则不会生效。请先在客户端识别设置中开启。": "Caller declarations are disabled, so this rule will not apply. Enable them in client identification settings first.", "来源声明无效或未登记,本次已忽略。": "The origin declaration was invalid or unregistered and was ignored.", "来源声明未启用,本次已忽略。": "Origin declarations are disabled and were ignored.", "来源版本": "Source revision", "来源设备:{device}": "Source device: {device}", "来自 {device},生成于 {time}": "From {device}, created at {time}", "架构": "Architecture", "查看内置客户端({n})": "View built-in clients ({n})", "查询管理员状态失败:{message}": "Failed to check admin status: {message}", "校验身份:这三段必须各自成块排在最前(实测:三段并成一段会被回 405 / 3012)。因此这里按段编辑,不能合成一段。改过的段以你的文本为准,没改的段继续用官方原文;清空某一段 = 那一段恢复官方原文。": "for identity: the three blocks must each be a separate block placed at the very top (measured: merging the three into one returns 405 / 3012). So they are edited per block here; they cannot be merged into one. Edited blocks use your text; unedited blocks keep the official text; clearing a block reverts that block to the official text.", "桌面端": "Desktop app", "桌面端登录 / 注册验证": "Desktop sign-in / registration verification", "桌面端:登录 / 注册需要 ALTCHA 人机验证": "Desktop: sign-in / registration requires ALTCHA proof-of-work", "桌面端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "Desktop: sign-in / registration requires ALTCHA proof-of-work (in use now)", "桌面运行时不可用,暂时无法保存": "Desktop runtime unavailable; cannot save right now", "档案": "Profile", "检测中…": "Checking…", "概览": "Overview", "模型不能直接看图时,按你选择的方式处理。原生支持图片的请求直接转发,不增加识图调用。": "When a model cannot read images, use your selected mode. Native image-capable requests pass through without an extra vision call.", "模型单独配置": "Per-model overrides", "模型目录没写明是否支持图片时按这里处理。": "Used when the model catalog does not say whether images are supported.", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。下面两块分别选好「哪些模型」和「用哪只模型」即可;没配到的模型、以及本来就能看图的模型,一律原样放行。这里的改动立即生效,不需要保存。": "A model that cannot read images has only two options: let another model read the image for it, or hand the whole request to a model that can. Choose the models and the vision model in the two blocks below. Anything not covered here — including models that already read images — passes through untouched. Changes here take effect immediately; there is nothing to save.", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。没配到的模型、以及本来就能看图的模型,一律原样放行;每个请求只用其中一种方式,不会两种串着做,处理失败也不会改走另一种。改动立即生效,不需要保存。": "A model that cannot read images has only two options: let another model read the image for it, or hand the whole request to a model that can. Anything not covered here — including models that already read images — passes through untouched. Each request uses exactly one of the two ways; they are never chained, and a failure does not fall back to the other. Changes take effect immediately; there is nothing to save.", "模型请求是否需要验证码由 ZCode 上游配置决定,领取验证与模型请求免验证分别处理。后台只检查配置和库存,不自动运行验证码或弹出拼图;需要验证时,在账号的「套餐明细」中点击「开始验证」。验证令牌一次性使用,短时间内过期,失败或取消后不会自动重试。": "ZCode upstream settings determine whether model requests need verification, independently of plan claims. The background only checks settings and stock; it never runs verification or opens a puzzle automatically. Start required verification in the account’s Plan details. Tokens are single-use, expire shortly, and are not retried automatically after failure or cancellation.", "模式": "Mode", "模式改为「{mode}」": "Mode changed to \"{mode}\"", "次": "times", "次日 00:00": "00:00 the next day", "正则表达式": "Regular expression", "正在保存上游原始报文:": "Saving raw upstream payloads:", "正在修改…": "Changing…", "正在剥离出站请求里的审核指纹:表头键值整段删除,模板句最小改写。": "Stripping review fingerprints from outbound requests: header key/value pairs are deleted entirely, and template sentences get minimal rewrites.", "正在安装…": "Installing…", "正在应答跨源请求:浏览器跨域请求可直连 /v1/*。": "Answering cross-origin requests: browsers can reach /v1/* directly cross-origin.", "正在归一角色:developer 角色消息转发前改写为 system。": "Normalizing roles: developer-role messages are rewritten to system before forwarding.", "正在注册…": "Registering…", "正在联网更新": "Updating online", "正在读取提供商设置…": "Loading provider settings…", "正式版": "Stable", "每个请求只会用到其中一种方式,不会两种串着做;处理失败也不会改走另一种。配了哪只视觉模型,那次请求的图片就会交给它。": "Each request uses exactly one of the two ways; they are never chained and a failure does not fall back to the other. Whichever vision model is configured is the one that receives the images for that request.", "每条请求轮换到下一个可用账号;新会话交给当前最闲的那位。适合想把手里的号摊开用、不让某一个一直扛。": "Rotates to the next usable account on every request; a new session goes to whoever is least busy. For spreading usage across accounts instead of letting one carry everything.", "每条请求都重新按策略选路 —— 行为与「关闭」一致,仅保留会话识别的记录。": "Every request is routed by strategy from scratch — same behavior as \"Off\", only the session records are kept.", "每次等待的时长,默认 0 = 跟随上游建议(实测 9~30 秒,上游没给建议时用 15 秒)。可填 0–120 秒强制一个固定时长。": "Duration of each wait. Default 0 = follow the upstream's suggestion (measured 9–30 seconds; 15 seconds when the upstream gives none). Accepts 0–120 seconds to force a fixed duration.", "每行一个域名,不填协议、端口或路径;与 Cloudflare 中的配置一致,服务端按完整域名匹配。手机 App 使用所连接网关的域名。": "Enter one hostname per line, without a scheme, port or path. Match your Cloudflare configuration; the server requires an exact hostname match. The mobile app uses the connected gateway's hostname.", "毫秒": "ms", "沟通方式 / 上下文管理 + Environment 段。": "The communication style / context management + Environment block.", "没有可导出的账号": "No accounts to export", "没有可用视觉模型时": "When no vision model is available", "没有已确认支持图片的模型,请先在模型管理中确认。": "No model is confirmed to support images. Confirm its capability in Model Management first.", "没能读到「{label}」的当前值,改为 {count} 条可能会删除超出的历史数据。": "Could not read the current value of \"{label}\". Setting it to {count} records may delete excess historical data.", "没能读到「{label}」的当前值,改为 {days} 天可能会删除超出的历史数据。": "Could not read the current value of \"{label}\"; changing it to {days} days may delete excess historical data.", "沿用对应方式的视觉模型配置,不额外维护一份模型列表。": "Reuse the vision configuration for that mode; no separate model list is needed.", "沿用工具服务的视觉分析模型": "Reuse the tool service's vision analysis model", "沿用工具服务的视觉分析模型(未配置)": "Vision model from the tool service (not configured)", "注册并开启": "Register & Enable", "注册管理员账号": "Register Admin Account", "注意:这一家的「网关自带」开关现在是关的,改过的正文要等开关打开才生效。": "Note: this provider's \"Gateway-Provided Prompt\" switch is currently off; edited text takes effect only after the switch is turned on.", "流式响应相邻数据之间允许的最大空闲时间(秒),收到新数据后重新计时,默认 300 秒,范围 1~3600。": "Maximum idle time allowed between adjacent chunks of a streaming response (seconds); the timer restarts on each new chunk. Default 300 seconds, range 1–3600.", "流式响应空闲超时": "Stream Idle Timeout", "测试连接": "Test connection", "浏览器 / PWA": "Browser / PWA", "浏览器只在 https 或 localhost 下提供离线缓存;局域网 http 访问不影响正常使用": "Browsers only offer offline caching over https or localhost. Accessing over plain http on the LAN still works normally.", "浏览器在本地完成计算,不需要第三方密钥,也不依赖外部验证服务。": "The browser performs the computation locally. No third-party keys or external verification service are required.", "浏览器标签页": "Browser tab", "浏览器面板": "Browser panel", "消息角色": "Message roles", "添加备选模型": "Add fallback model", "添加提供商": "Add Provider", "添加提供商…": "Add provider…", "添加自定义头": "Add Custom Header", "添加要单独配置的提供商": "Add a provider to configure individually", "清除本机凭证": "Clear local credentials", "清除这里的正文": "Clear Text Here", "源代码": "Source code", "点下面的入口会用系统默认浏览器打开 GitHub 的对应表单(需要 GitHub 账号,模板已预设好,填完直接提交即可)。": "The entries below open the matching GitHub form in your system's default browser (a GitHub account is required; the template is preset, so just fill it in and submit).", "点击重命名": "Click to rename", "点此添加或切换服务器": "Tap to add or switch servers", "点此添加服务器": "Tap to add a server", "版本": "Version", "版本信息": "Version info", "版本信息 · 所连网关环境": "Version info · connected gateway", "版权声明": "Copyright notice", "状态码 {code} 已在名单里": "Status code {code} is already in the list", "状态码必须是 {min}–{max} 的整数(收到: {text})": "Status code must be an integer from {min} to {max} (received: {text})", "环境": "Environment", "生成时间:{time}": "Created at: {time}", "生效顺序:有效的来源声明优先,然后按顺序匹配自定义规则,最后使用内置规则。中转丢失原始标识时,无法自动推断背后的软件。": "Priority: valid origin declaration, custom rules in order, then built-in rules. If a relay removes the original identifier, the original software cannot be inferred automatically.", "用 models.dev 补齐上游没声明的模型能力与思考档位(联网刷新,内嵌快照始终生效)": "Fill in model capabilities and reasoning levels the upstream never declares, using models.dev (refreshed online; the bundled snapshot always applies)", "用于加密上云的账号密钥。请自己记牢 —— 它不保存到云端,换机下载时必须输入同一个密码,否则账号数据无法解密。": "Used to encrypt the account key that goes to the cloud. Remember it — it is not stored in the cloud, and you must enter the same password when restoring on another machine, otherwise the account data cannot be decrypted.", "用哪只模型识图": "Which model reads the image", "用浏览器菜单里的「添加到主屏幕」把这一页装成 App:全屏打开、没有地址栏,和原生应用一样。": "Use \"Add to Home Screen\" in the browser menu to install this page as an app: full screen, no address bar, just like a native app.", "由 Cloudflare 提供验证,需要浏览器与网关均能连接 Cloudflare。验证失败或服务不可用时不会自动放行。": "Verification is provided by Cloudflare. Both the browser and gateway must be able to reach Cloudflare. Failed verification or an unavailable service will not allow access.", "由 {source} 覆盖,手动设置暂不生效": "Overridden by {source}; the manual setting is not currently active", "界面缩放": "Interface Zoom", "界面缩放比例": "Interface Zoom Level", "界面语言": "Interface Language", "界面语言。可选简体中文、繁體中文、English、日本語、한국어、Português (Brasil),或「跟随系统」(按浏览器 / 系统的语言列表自动选)。切换后整页立即刷新;该偏好只存在本机(localStorage),不影响账号、密钥与转发。": "Interface language. Choices: 简体中文, 繁體中文, English, 日本語, 한국어, Português (Brasil), or System (picked automatically from the browser / system language list). Switching reloads the whole page immediately; the preference is stored only on this machine (localStorage) and does not affect accounts, keys, or forwarding.", "界面语言只保存在本机(localStorage)。切换后整页立即刷新,不影响账号、密钥与转发。": "The interface language is stored only on this machine (localStorage). Switching reloads the whole page immediately and does not affect accounts, keys, or forwarding.", "界面里编辑的正文": "the text edited in the UI", "留空 = 用内置默认提示词": "Leave empty = use the built-in default prompt", "留空使用 AWS 官方地址": "Leave blank to use the official AWS address", "留空使用默认": "Leave blank to use the default", "留空表示删除匹配内容;替换内容按原文写入,$ 不作为捕获组引用。": "Leave empty to delete matched text. Replacement text is inserted literally; $ is not a capture-group reference.", "登录 / 注册需要通过 ALTCHA 人机验证(工作量证明)": "Require ALTCHA human verification (proof of work) for sign-in / registration", "登录 / 账号切换 / 429 切换等系统事件,可填 1–99999 天。": "System events such as sign-ins, account switches, and 429 switches. Range: 1–99999 days.", "登录 Agent2API": "Sign in to Agent2API", "登录 {name}": "Sign in to {name}", "登录人机验证": "Login CAPTCHA", "百分比类读数(如 OpenCode Go、Antigravity)不能相加,组头显示的是组内最低剩余比例。": "Percentage readings (such as OpenCode Go or Antigravity) cannot be summed; the band shows the group's lowest remaining percentage.", "监听地址": "Listen address", "目前展示仓库已登记的图标来源许可,不代表完整的第三方依赖清单。": "This list contains the icon source licenses currently recorded in the repository, not a complete inventory of third-party dependencies.", "目标路径:{path}": "Target path: {path}", "直接按上面的设置兼容": "Apply the settings above right away", "直接按当前方式兼容": "Apply the selected mode directly", "知道了": "Got it", "确定": "Confirm", "确定后加入当前草稿,点击「保存设置」才会生效。": "Confirm adds the rule to the draft. Click Save settings to apply it.", "确定继续?": " Continue?", "确认上传": "Confirm upload", "确认图片处理授权": "Confirm image processing consent", "确认备份密码": "Confirm backup password", "确认并保存": "Confirm and save", "确认新密码": "Confirm new password", "确认缩减数据保留": "Confirm reduced data retention", "确认缩短保留天数": "Confirm Shorter Retention", "社区与支持": "Community & support", "离线缓存未启用": "Offline cache is off", "积分合计只统计当前筛选出来的账号": "Only sum accounts visible under the current filter", "移入「{name}」": "Move into \"{name}\"", "程序路径": "Executable path", "空 = 不要这一份,回落提示词文件 / 内置默认提示词。": "Empty = do not keep this copy; falls back to the prompt file / built-in default prompt.", "空分组 · 点组头的 + 把菜单移进来": "Empty group · use + on the header to move menus in", "立即解除": "Clear Now", "站点密钥(Site Key)": "Site Key", "第一段": "Block 1", "第一段(身份句)": "Block 1 (identity sentence)", "第三方应用密码": "App-specific password", "第三方开源许可": "Third-party open-source licenses", "第三方模型回答完自动折叠过程": "Collapse third-party model work after the answer", "第三方模型回答完自动折叠过程设置已刷新": "Third-party reasoning collapse setting refreshed", "第三段": "Block 3", "第三段(动态段)": "Block 3 (dynamic block)", "第二段": "Block 2", "第二段(稳定段)": "Block 2 (stable block)", "等待响应超时": "Response Headers Timeout", "等待期间请求日志的状态列会显示「排队中」阶段,详情弹窗的「内部重试」里能逐次看到等待时长;等待用尽后返回 HTTP 503(不是 401/429:既不会刷新凭证,也不会把账号标成限额)。": "While waiting, the status column in the request logs shows a \"Queueing\" phase, and the \"Internal Retries\" section of the detail dialog lists each wait duration; when the waits run out, HTTP 503 is returned (not 401/429: credentials are not refreshed and the account is not marked as rate-limited).", "等比放大或缩小整个界面(文字、控件、间距一起变),效果与浏览器按 Ctrl +/- 相同:80%–130%、5% 一档。窗口本身不缩放,变的是页面内容的显示比例,设置立即生效并记住,下次启动直接按这个比例打开。放得越大可视范围越小,窗口较窄或表格较宽时不建议调得太大。": "Zoom the whole interface proportionally (text, controls, and spacing scale together), equivalent to Ctrl +/- in a browser: 80%–130% in 5% steps. The window itself does not resize — what changes is the page content's display scale; the setting applies immediately and is remembered, so the next launch opens at this scale. The larger the scale, the less you can see at once; with a narrow window or wide tables, do not set it too high.", "简体中文": "Simplified Chinese", "管理员已注册": "Admin registered", "管理员账号": "Administrator account", "管理插件": "Manage plugins", "精确文本": "Exact text", "系统提示词模式": "System Prompt Mode", "系统提示词设置已刷新": "System prompt settings refreshed", "累计请求": "Total requests", "繁体中文": "Traditional Chinese", "约 {n} 字符": "approx. {n} characters", "结构": "structure ", "给 Codex 的响应补阶段标记,回答完后像官方模型一样把推理与命令过程折叠起来": "Add phase markers to Codex responses so reasoning and commands collapse after the answer, like official models", "继续并清理": "Continue & Clean Up", "编辑提示词正文 · {label}": "Edit Prompt Text · {label}", "编辑提示词正文 · 全局": "Edit Prompt Text · Global", "编辑正文": "Edit Text", "编辑网关自带提示词 · {label}": "Edit Gateway-Provided Prompt · {label}", "编辑脱敏规则": "Edit masking rule", "编辑识别规则": "Edit identification rule", "缩放后重新存成 JPEG 时用的质量。默认 80,可填 40–95;数值越小体积越小、画质越差。": "JPEG quality used when re-encoding the scaled image. Default 80, range 40-95; lower means a smaller file and lower quality.", "缩放比例": "Zoom Level", "网关": "Gateway", "网关 Key 数量": "Gateway key count", "网关尚未就绪": "The gateway is not ready yet", "网关自带": "Gateway-Provided Prompt", "网关跨域访问已开启": "Gateway CORS enabled", "网关跨域访问设置已刷新": "Gateway CORS settings refreshed", "网关跨域访问(CORS)": "Gateway CORS", "网关面(/v1/*)默认不应答浏览器跨源请求:页面直连会被预检拦下,只报「无法连接 API」。注意来源是 * —— 未配「网关 Key」时任何网页都能借本机网关打上游,故默认关闭;只给自己用的话,让页面与网关同源(本地反代 /v1)更稳妥。面板接口(/api/*)不受影响。": "The gateway endpoints (/v1/*) do not answer browser cross-origin requests by default: a page connecting directly is stopped by the preflight and only reports \"cannot connect to the API\". Note that the allowed origin is * — with no gateway key configured, any web page could use this machine's gateway to hit upstreams, which is why the default is off; if you only use it yourself, serving the page from the same origin as the gateway (a local reverse proxy for /v1) is safer. The panel API (/api/*) is unaffected.", "网络访问": "Network access", "网页端": "Web", "网页端登录 / 注册验证": "Web sign-in / registration verification", "网页端的界面缩放由浏览器自己控制(Ctrl + / Ctrl -,或浏览器菜单里的缩放),此项不可调。": "In the web build, interface zoom is controlled by the browser itself (Ctrl + / Ctrl -, or the zoom entry in the browser menu); this setting is not adjustable.", "网页端:登录 / 注册需要 ALTCHA 人机验证": "Web: sign-in / registration requires ALTCHA proof-of-work", "网页端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "Web: sign-in / registration requires ALTCHA proof-of-work (in use now)", "网页管理地址": "Web management address", "群晖 NAS": "Synology NAS", "群晖需在「控制面板 → 应用程序门户 → WebDAV」里启用服务,端口默认 5005(HTTP)/ 5006(HTTPS)。": "On Synology, enable the service under Control Panel → Application Portal → WebDAV; the default ports are 5005 (HTTP) / 5006 (HTTPS).", "脱敏词表": "Masking rules", "腾讯云 COS": "Tencent Cloud COS", "自动同步": "Auto sync", "自动同步上次失败": "Last auto sync failed", "自动续写": "Auto continuation", "自定义 User-Agent": "Custom User-Agent", "自定义客户端分类": "Custom client categories", "自定义客户端数量已达上限": "Custom client limit reached", "自定义提供商 {id}": "Custom provider {id}", "自定义网站和应用界面中显示的名称与 Logo。": "Customize the name and logo displayed on the website and in the application.", "自定义识别规则": "Custom identification rules", "自愈保护": "Self-healing guards", "至少 12 位": "At least 12 characters", "至少 8 位,换机下载时需要": "At least 8 characters; needed when restoring on another machine", "至少要保留一个分组": "At least one group must remain", "英语": "English", "范围 5–120 秒,并受原请求时限约束。": "Range 5–120 seconds, also bounded by the original request timeout.", "范围为 5–120 秒,并受原请求时限约束。图片过大、格式错误或下载失败不会被当作模型不支持图片。": "Allowed range: 5–120 seconds, also limited by the original request timeout. Oversized images, invalid formats and download failures are not treated as missing image support.", "被更高优先级覆盖": "Overridden by higher priority", "装上{size}的官方身份提示词": "Install the official identity prompt ({size})", "装成 App 后从桌面图标直接进入:全屏打开、没有地址栏。": "Installed as an app it opens straight from the home screen icon: full screen, no address bar.", "覆盖": "overwrite", "规则 / 匹配方式": "Rule / match type", "规则可以增删改、启停和调整顺序;替换内容留空表示删除匹配内容。恢复默认只重置词表,不改开关和提供商范围。": "Add, edit, delete, enable, disable and reorder rules. An empty replacement deletes matched text. Restoring defaults resets only the rules, not the switch or provider scope.", "规则名称": "Rule name", "规则名称不能为空,且最多 {max} 个字符": "The rule name is required and must not exceed {max} characters", "规则已保存,对后续请求生效;当前历史记录未修改。": "Rule saved for future requests. This historical record was not changed.", "规则忽略大小写,只影响新请求的日志与统计,不改变模型选择或权限。": "Rules ignore case and affect only logs and statistics for new requests, not model selection or permissions.", "规则编号:{id}": "Rule ID: {id}", "视觉模型": "Vision model", "视觉模型先识读图片,再由原模型分析和回答。": "A vision model reads the images first, then the original model analyzes and answers.", "视觉模型来源": "Vision model source", "视觉模型的思考等级": "Reasoning level of the vision model", "视觉模型直接回答": "The vision model answers directly", "视觉模型识读图片": "The vision model reads the images", "解码后小于这个体积的图片保持原样。默认 512KB,可填 0–10240;填 0 表示所有内嵌图片都过一遍。": "Images smaller than this size after decoding are kept as-is. Default 512KB, range 0-10240; 0 processes every inline image.", "解除失败:{message}": "Failed to clear the fallback: {message}", "触发阈值": "Trigger threshold", "计数": "Counts", "计量单位": "Number notation", "让 Codex 在收到最终答案后收起中间过程。仅为严格识别的 Codex Responses 请求补阶段标记,报表归类和来源声明不影响此判断。正常结束且没有工具调用的非空回答才补 final_answer,工具调用前的说明补 commentary;错误、截断、缺少结束信号或未知结束原因不补最终答案标记。默认关闭,不改变回答文字,也不减少模型思考或用量。": "Let Codex collapse intermediate work after the final answer. Phase markers are added only to strictly identified Codex Responses requests, independently of report categories and client declarations. Only non-empty, normally completed replies without tool calls receive final_answer; text before tool calls receives commentary. Errors, truncation, missing completion signals and unknown finish reasons never receive a final-answer marker. Off by default; answer text, model reasoning and usage are unchanged.", "许可原文": "Original license text", "许可原文已随软件内置,无需联网即可查看;打开项目来源链接需要联网。": "License texts are bundled with the app and available offline. Opening project source links requires an internet connection.", "许可核对版本": "Revision used to verify the license", "设置不可隐藏(隐藏了只能清缓存找回来)": "\"Settings\" cannot be hidden (you would have to clear storage to get it back)", "设置备份密码": "Set backup password", "设置识别规则": "Set identification rule", "访问时请使用目标设备能连接到的地址;这里显示的本机地址不代表公网可达。": "Use an address reachable from the connecting device. The local address shown here does not imply public internet reachability.", "识别依据": "Identification evidence", "识别规则数量已达上限": "Identification rule limit reached", "词表为空,不会改写任何指纹。可以新增规则或恢复默认词表。": "The rule list is empty; no fingerprints will be rewritten. Add a rule or restore the defaults.", "该提供商暂无可编辑的专属设置": "This provider has no editable settings", "详细日志": "Verbose logs", "语言设置": "Language Settings", "请先保存设置再同步": "Save the settings before syncing", "请先在 Cloudflare 创建 Turnstile 组件,建议选择 Managed 模式,并添加面板实际使用的域名。": "Create a Turnstile widget in Cloudflare first. Managed mode is recommended. Add the actual domain names used to access the panel.", "请填一个分组名": "Please enter a group name", "请填写管理员账号(64 字符以内)": "Enter an admin account (up to 64 characters)", "请求发出后等待上游响应头的最大时间(秒),默认 300 秒,范围 1~3600。": "Maximum time to wait for the upstream's response headers after the request is sent (seconds). Default 300 seconds, range 1–3600.", "请求带有不同软件的标识,未自动归类;可用自定义规则明确归属。": "The request contains identifiers for different applications and was not classified automatically. Use a custom rule to assign it.", "请求提供商 / 模型支持": "Provider / Model Support Request", "请求日志保留天数": "Request log retention (days)", "请求日志保留数量上限": "Request log record limit", "请求记录": "Request Records", "请求超时": "Request Timeouts", "请求转发到上游失败时(服务器瞬时错误、连接失败,以及 WorkBuddy 的 11-128 敏感词拦截),网关会等一段间隔后再发一次。次数分两档,管的是两件事:①「同一账号重试次数」在同一账号上原地重发几次 —— 一般是提示词被上游拦截、或链路瞬时抖动,等一会儿重发往往就好了;②「切换账号重试次数」这份请求最多再换几个账号试 —— 首发的那个账号不算,每换一个扣一次,不分是不是同一家(换到同一家的下一个账号也算一次),换满还失败就把错误返回给客户端。两项都设为 0 表示失败不重试、直接报错。注意账号级限额(429)不占这里的换号次数 —— 那类失败走「冷却该账号并换下一个账号」的降级,与这里的重试是两条路。另有「指定错误码直接换号」名单(默认 402):命中名单的上游状态码不在同一账号重发,直接按队列换下一个账号继续试(换号也占「切换账号重试次数」),换满仍失败才把错误返回给客户端。": "When forwarding a request to an upstream fails (transient server errors, connection failures, and WorkBuddy's 11-128 sensitive-word blocking), the gateway waits for an interval and sends it once more. The counts come in two tiers covering two different things: (1) \"Same-Account Retries\" resends in place on the same account a few times — usually the prompt was blocked by the upstream or the link flickered, and resending after a wait tends to succeed; (2) \"Account-Switch Retries\" is how many more accounts this request may try — the account that sent it first does not count, each switch costs one, regardless of whether it is the same provider (switching to the next account of the same provider also counts), and when the switches are exhausted and it still fails, the error is returned to the client. Setting both to 0 means no retries on failure — error out immediately. Note that account-level throttling (429) does not consume these account switches — that kind of failure goes through the \"cool down the account and move to the next one\" fallback, a separate path from the retries here. There is also the \"Switch Accounts on Specified Error Codes\" list (default 402): upstream status codes on the list are not retried on the same account; the gateway switches to the next account in the queue and keeps trying (the switch also consumes an \"Account-Switch Retries\" slot), and only when those are exhausted is the error returned to the client.", "请求重试": "Request Retries", "请至少选择一个提供商": "Select at least one provider", "请输入同步密码": "Enter the sync password", "请输入当前密码": "Please enter your current password", "请输入服务端密钥": "Enter the secret key", "请选择可用的标识请求头": "Select an available identity header", "请选择归属客户端": "Select the client to assign", "读取云同步设置失败:{message}": "Failed to read cloud sync settings: {message}", "读取失败:{message}": "Failed to read: {message}", "读取完整非流式响应体允许的最大时间(秒),默认 300 秒,范围 1~3600。": "Maximum time allowed to read a complete non-streaming response body (seconds). Default 300 seconds, range 1–3600.", "读取网关信息失败:{message}": "Failed to read gateway info: {message}", "读取远端…": "Reading remote…", "读取远端信息失败:{message}": "Failed to read remote info: {message}", "调用方声明": "Caller declaration", "调试报文": "Debug Payloads", "调试模式": "Debug mode", "调试模式设置已刷新": "Debug mode settings refreshed", "负载均衡": "Load balancing", "账号列表": "Account list", "账号导入 / 导出": "Account Import / Export", "账号路由": "Account routing", "账号页表格的两项显示偏好,只存在本机(localStorage),不影响账号数据与转发。「积分合计只统计当前筛选出来的账号」:账号页每一家的分组带右侧有一枚「可用合计」,默认按整组求和 —— 不受筛选、搜索影响,被筛掉的账号也计入(余额是资产,禁用也只表示不参与转发,额度仍在账上)。打开这一项后改为只累加当前可见的行:例如筛出 1 个 100 积分的账号,合计就是 100,而不是同组两个账号之和 1,000。分页不参与这个口径 —— 翻页看的是同一份结果的不同屏,合计不随页码变化。「隐藏账号名」与表头「账号」旁边那颗眼睛是同一个开关:打开后账号列的名字整体显示成星号,适合截图分享时遮挡账号。": "Two display preferences for the accounts table. They are stored only on this machine (localStorage) and never affect account data or forwarding. \"Only sum accounts visible under the current filter\": each provider band on the accounts page shows a \"Total available\" badge, and by default it sums the whole group — filtering and search do not change it, and accounts filtered out still count (balance is an asset; disabling an account only keeps it out of forwarding, the credit stays). Turn this on to add up only the rows currently visible: filter down to one account with 100 credits and the total reads 100, not 1,000 (the sum of two accounts in that group). Paging does not take part in this rule — pages are just different screens of the same result, so the total does not change as you flip pages. \"Hide account names\" is the same switch as the eye next to the \"Account\" column header: when on, names in the account column are shown as asterisks, handy for screenshots.", "账户": "Account", "超出的历史数据会被立即删除,且不可恢复。": "Excess historical data will be deleted immediately and cannot be recovered.", "超时": "Timeout", "超时设置已刷新": "Timeout settings refreshed", "跟随模型配置": "Follow model settings", "跟随系统 · 浅色 · 深色": "System · Light · Dark", "跟随默认": "Follow Default", "跨域访问": "CORS", "路由": "Routing", "路由组只使用组内成员;普通路由只使用参与范围内的账号和模型。": "Route groups use only their members. Ordinary routes use only accounts and models within their participation scope.", "路由设置已刷新": "Routing settings refreshed", "跳过 {n} 个": "skipped: {n}", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;负载均衡是每条请求换下一位,把负载摊到各个账号上。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时)、被 429 的账号垫底排到队尾 30 分钟、余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 前两层可以在下面按需开关,限制器由账号的「限制器」设置管。": "How accounts are picked when forwarding a request: ① \"Routing strategy\" sets the queueing rule — Strict order means position 1 takes every request until it can't answer (rate-limited / failing / out of quota) before the next one steps in; Load balancing rotates to the next account on every request, spreading the load across accounts. ② \"Session stickiness\" keeps the same session (same model + same opening messages) on one account wherever possible — multi-turn conversations reuse the upstream context cache, fewer account switches, less waste; Auto sticks for 5 minutes, In-session for 6 hours, Per turn and Off don't stick. The queue position (first column of the accounts table) is the foundation under every strategy; strategies are layered on top of it. Routing also has three self-healing guards: accounts that fail to forward back off for a while (starting at 15 minutes, doubling per failure, capped at 1 hour), accounts 429'd despite having quota go to the back of the queue for 30 minutes, and accounts out of quota or over their per-period token cap are held by the limiter — the first two can be toggled below as needed; the limiter is governed by each account's \"Limiter\" settings.", "转发前压缩对话里内嵌的大图(只改发给上游的副本,生图与图片编辑不受影响)": "Compress large inline images in conversations before forwarding (only the copy sent upstream changes; image generation and editing are unaffected)", "转发前将 developer 角色消息转换为 system,兼容不支持 developer 角色的 OpenAI 兼容上游": "Convert developer-role messages to system before forwarding, for OpenAI-compatible upstreams that do not support the developer role", "转发失败的账号休息一会儿再回来:15 分钟起步,连续失败翻倍,封顶 1 小时;成功一次立即恢复。目的是「让这次失败先凉一会儿」,免得一条条地反复撞同一个坏账号。": "An account that fails to forward rests for a while before coming back: starting at 15 minutes, doubling per consecutive failure, capped at 1 hour; one success restores it immediately. The point is to let a failure cool off instead of hammering the same bad account request after request.", "转发链路": "Forwarding", "轮询间隔": "Poll interval", "软件标识超过 1 KB,已截断保存;匹配仅使用保留部分。": "The software identifier exceeded 1 KB and was truncated. Matching uses only the retained portion.", "软件版本": "Software version", "轻量模式": "Lightweight mode", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 套餐池(Start Plan)通道不可用,相关请求会在请求日志里注明原因": "Lightweight mode is on: closing the window destroys the UI process (freeing about 200 MB of memory) while the gateway continues in the background; while the UI is destroyed, the ZCode plan-pool (Start Plan) channel is unavailable and affected requests will note the reason in the request log", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 活动套餐通道不可用,相关请求会在请求日志里注明原因": "Lightweight mode on: closing the window destroys the UI process (freeing about 200MB of memory) while the gateway keeps running in the background; while the UI is destroyed, the ZCode activity-plan channel is unavailable, and affected requests are noted in the request logs with the reason", "轻量模式(关窗释放界面内存)": "Lightweight mode (releases UI memory when the window is closed)", "辅助识图": "Assisted image reading", "辅助识图 · 原模型回答": "Assisted reading · Original model answers", "辅助识图保留原模型回答;切换视觉模型会让视觉模型直接回答。本次授权也包含已设置的模型单独配置。": "Assisted reading keeps the original answering model; switching lets the vision model answer directly. This consent also covers your per-model overrides.", "辅助识图或切换视觉模型,默认关闭": "Assisted reading or vision model switching, off by default", "辅助识图配置": "Assisted image reading settings", "输入同步密码": "Enter sync password", "输入当前登录用的密码": "Enter your current password", "输入状态码,回车添加": "Enter a status code and press Enter", "运行形态": "Deployment", "近期没有命中样本,不代表未来请求不会命中。": "No recent samples matched; future requests may still match.", "还原": "Revert", "还有额度时被 429 的账号排到队尾,30 分钟后自动回到队列(成功转发一次也会立即回来)。它标记的是「疑似共享池被别人抢」,不是「这个账号本身有问题」。⚠️ 注意它与路由策略的配合:在「家内轮询」下,队尾意味着这一家整体被往后排 —— 如果某个提供商的账号被批量限流,它们会集体沉到队尾,那个家可能长时间轮不到。这时可以关掉本项,让 429 过的账号只受冷却约束(冷却到点自动回来)。": "An account with quota left that gets 429'd goes to the back of the queue and returns automatically after 30 minutes (one successful forward also brings it right back). This marks \"the shared pool is probably being drained by someone else\", not \"this account is broken\". ⚠️ Mind the interplay with the routing strategy: under \"Per-provider rotation\", the back of the queue means the whole provider gets pushed back — if one provider's accounts are rate-limited en masse, they all sink to the back and that provider may not be reached for a long time. Turn this off in that case, so 429'd accounts are only bound by cooldown (they come back automatically when it expires).", "还没有可用的视觉模型。": "No vision model is available yet.", "还没有同步过。": "Not synced yet.", "还没有添加服务器。点右上角「添加」,填入网关所在机器的 IP 或域名与端口。": "No servers yet. Tap \"Add\" at the top right and enter the IP or domain and port of the machine running the gateway.", "还没有装载任何数据。": "No data loaded yet.", "还没有读到版本信息": "Version info has not been loaded yet", "还没有选择模型,这块设置暂时不起作用。": "No models selected yet, so this block does nothing for now.", "这一份就是「替换 / 追加」模式下网关要发的 system 正文。": "This is the system text the gateway sends in Replace / Append mode.", "这一项已隐藏": "This item is hidden", "这一项正在显示": "This item is visible", "这些模型的请求交给当前路由内可用的视觉模型回答,不再回到原模型。": "Requests from these models are answered by an available vision model in the current route instead of the original model.", "这些模型看到图片时,先把图片交给 {model} 读一遍,再由它们自己结合读到的内容回答。": "When these models see an image, {model} reads it first, and they answer using what was read.", "这些模型看到图片时,先把图片交给「沿用工具服务的视觉分析模型」读一遍,再由它们自己结合读到的内容回答。": "When these models see an image, the vision model from the tool service reads it first, and they answer using what was read.", "这只模型只负责看图,最终仍由原模型回答。": "This model only reads the image; the original model still answers.", "这只模型直接接收图片与对话,完成本次回答。": "This model receives the images and the conversation and produces this answer itself.", "这台网关未启用机器人校验": "This gateway does not require bot verification", "这台网关没有管理员,用一把已启用的 API Key 访问。": "This gateway has no admin account. Access it with an enabled API key.", "这条历史请求没有保存识别依据,不能据此自动创建规则。": "This historical request has no saved identification evidence, so it cannot be used to create a rule automatically.", "这条规则已被删除,请关闭编辑后重新添加。": "This rule was deleted. Close the editor and add it again.", "这里只列出已保存的提供商配置;未配置的提供商沿用全局设置,可从下拉框手动添加。用户保存的模式、文件和正文优先于全局设置,「跟随默认」只取消该提供商的模式、文件和正文覆盖。ZCode 套餐池默认由插件按三块装配,客户端系统正文合入第三块,不会自动创建替换规则;手动修改的网关提示词段或关闭开关仍以用户配置为准,能否被接受取决于上游规则。": "Only saved provider settings are listed here. Unconfigured providers follow the global settings and can be added manually from the dropdown. Saved modes, files and prompt text override the global settings; Follow Default removes only that provider's mode, file and text overrides. For ZCode's Start Plan, the plugin assembles three blocks by default and merges the client's system text into the third, without creating a replacement rule. Manually edited gateway prompt blocks and a disabled assembly switch still take precedence; acceptance depends on the upstream rules.", "进程 PID": "Process PID", "远程根目录": "Remote root directory", "远端同一路径下的旧快照。事件日志、请求明细与调试报文不会上传。": "the old snapshot at the same remote path. Event logs, request details and debug payloads are not uploaded.", "远端已有一份快照,将被覆盖": "A snapshot already exists on the remote and will be overwritten", "远端快照使用了另一把账号密钥,但没有携带密钥文件,无法在本机解密。请在原来那台机器上重新上传一次。": "The remote snapshot uses a different account key but does not include the key file, so it cannot be decrypted here. Re-upload once from the original machine.", "远端快照使用的账号密钥与本机不同。请输入上传那台机器设置的同步密码,用它解出密钥装到本机后再继续下载。": "The remote snapshot uses a different account key than this machine. Enter the sync password set on the uploading machine to decrypt the key and install it here, then continue the download.", "远端数据与当前版本不兼容": "Remote data is incompatible with this version", "远端该路径下还没有快照,本次是首次上传。": "No snapshot exists at that remote path yet; this is the first upload.", "远端路径:{path}": "Remote path: {path}", "远端还没有可下载的同步数据": "No sync data available to download on the remote", "连不上这台网关。确认地址与端口正确、网关已启动,且已开启「局域网访问」;用 https 时还要确认证书有效": "Cannot reach this gateway. Check the address and port, that the gateway is running, and that \"LAN access\" is enabled; for https also check that the certificate is valid.", "连不上这台网关。请确认地址、端口与防火墙设置,网关需已启动;桌面端请在「设置 → 网关 → 网络访问」开启「允许其他设备访问网关」。使用 HTTPS 时还需确认证书有效。": "Cannot reach this gateway. Check the address, port, and firewall settings, and make sure the gateway is running. For the desktop app, enable Allow other devices to access the gateway under Settings → Gateway → Network access. For HTTPS, also check that the certificate is valid.", "连接中超时": "Connect Timeout", "连接失败:{message}": "Connection failed: {message}", "连续失败到阈值后把这个账号整个打开(默认关)。与失败退避的分工:退避管「单次失败先凉一会儿」,惩罚轻、自动恢复;熔断管「这个账号现在整体不对劲,别再一条条地试」,要连续成功若干次才关。打开期间该账号被跳过,除非全场只剩它 —— 那时仍放行试一次。": "Trips this account off entirely after consecutive failures reach a threshold (off by default). Division of labor with failure backoff: backoff means \"let a single failure cool off\" — light penalty, automatic recovery; the circuit breaker means \"this account is misbehaving as a whole, stop trying it one request at a time\" and takes several consecutive successes to close. While open, the account is skipped — unless it is the only one left, in which case it still gets one try.", "追加": "Append", "追加网关提示词": "Append gateway prompt", "退出失败:{message}": "Sign-out failed: {message}", "退出登录": "Sign Out", "退出这台服务器的登录,不影响其他服务器": "Sign out of this server only; others are unaffected", "选好接管回答的视觉模型后这块设置才会生效。": "This block takes effect once a vision model to answer is chosen.", "选好视觉模型后这块设置才会生效。": "This block takes effect once a vision model is chosen.", "选定提供商": "Selected provider", "选择一个或多个模型": "Select one or more models", "选择位置并加密备份": "Choose location and encrypt backup", "选择备份文件并恢复": "Choose a backup file and restore", "选择提供商(可多选)": "Select providers (multiple allowed)", "选路规则": "Selection rules", "选项与默认值由已启用插件提供;你保存的覆盖值不会被插件更新替换。": "Enabled plugins provide these options and defaults. Plugin updates do not replace your saved overrides.", "选项与默认值由插件提供,你保存的修改不会被插件更新覆盖。切换提供商不会丢失未保存的修改。": "Options and defaults come from plugins. Plugin updates do not overwrite your saved changes. Switching providers keeps unsaved edits.", "透传": "Passthrough", "透传客户端 system": "Passthrough client system", "透传客户端 system(默认)": "Passthrough client system (default)", "通常是网络问题,点右侧重试": "Usually a network issue — tap Retry on the right", "通用": "General", "遇到 Bug、报错或异常行为": "Bugs, errors, or unexpected behavior", "配置目录下的 agent2api.db(账号、日志、请求记录、调试报文与设置都在里面)。": "agent2api.db in the configuration directory (it holds accounts, logs, request records, debug payloads, and settings).", "采用本规则": "Uses this rule", "重启后生效,不影响当前操作": "Takes effect after a restart; nothing you're doing is interrupted", "重命名": "Rename", "重命名只更新分类显示名,不拆分历史用量,也不重新归类历史请求。": "Renaming changes only the category label, without splitting past usage or reclassifying historical requests.", "重命名客户端分类": "Rename client category", "重复清理": "Repeat cleanup", "重复清理直到不再变化(仅正则删除)": "Repeat until unchanged (regular-expression deletion only)", "重新读取会替换当前未保存的草稿。": "Reloading replaces the current unsaved draft.", "重新读取设置": "Reload settings", "重编码质量": "Re-encode quality", "重置会清空管理员账号与密码,面板将回到「未注册」状态。": "Reset clears the administrator account and password, returning the panel to the \"not registered\" state.", "重置管理员": "Reset administrator", "重试设置已刷新": "Retry settings refreshed", "重试间隔": "Retry Interval", "铸造守卫每隔多久看一次库存(毫秒)。只影响发现缺货的反应速度 —— 库存够用时轮询不会铸造任何令牌。默认 2500 毫秒,可填 1000–30000。": "How often the minting guard checks the stock (milliseconds). It only affects how quickly a shortage is noticed — with enough stock, the poll mints nothing. Default 2500 ms; 1000–30000 accepted.", "长边像素上限": "Max long-edge pixels", "问题反馈": "Bug Report", "阿里云 OSS": "Alibaba Cloud OSS", "限流中账号": "Rate-limited accounts", "随包内嵌的快照(发版时的那份)": "Snapshot bundled with the app (the one from the last release)", "隐藏 {name}": "Hide {name}", "隐藏分组 {name}": "Hide group {name}", "隐藏用户名": "Hide username", "隐藏账号名(显示成星号)": "Hide account names (show asterisks)", "隐藏这一组": "Hide this group", "非流式响应超时": "Non-Streaming Timeout", "面板登录": "Panel login", "面板端口": "Panel port", "面板管理员账号": "panel admin account", "韩语": "Korean", "项目来源": "Project source", "预览不发送模型请求,也不修改历史记录。": "Preview does not call a model or modify historical records.", "预览中…": "Previewing…", "预览匹配": "Preview matches", "预设": "Preset", "首选不可用时再依次尝试备选。": "If the first choice is unavailable, the backups are tried in order.", "首选不可用时再依次尝试;留空则停止并说明原因。": "Tried in order when the first choice is unavailable; leave empty to stop and explain why.", "验证方式": "Verification method", "验证码令牌池": "Captcha token pool", "验证码令牌池设置已刷新": "Captcha token pool settings refreshed", "验证码库存的参考目标,默认 3 个,可填 1–10。只影响库存状态展示,不会因为低于目标自动生成令牌或弹出验证码。": "Reference stock target: 3 by default, from 1 to 10. It only affects the stock display; falling below it never generates tokens or opens verification automatically.", "高级设置": "Advanced settings", "默认 10000 条,按日志级别分配保留容量,超出后清理最旧的记录;同时受保留天数限制。": "Defaults to 10,000 records, with capacity allocated by log level. The oldest excess records are removed; retention days also apply.", "默认 1000000 条(100 万),超出后清理最旧的请求记录及其原始正文,不影响按天聚合报表;同时受保留天数限制。": "Defaults to 1,000,000 records. The oldest excess request records and their raw bodies are removed without affecting daily aggregate reports; retention days also apply.", "默认 5 分钟。间隔内的变化合并为最新快照,到期后上传;手动上传不受限制。失败后会延长等待并自动重试。": "Defaults to 5 minutes. Changes during the interval are merged into the latest snapshot and uploaded when it is due. Manual uploads are not limited. Failed attempts are retried automatically with a longer delay.", "默认仅本机可访问(127.0.0.1)。开启后监听所有 IPv4 网卡(0.0.0.0),访问范围由网络与防火墙决定,不限于局域网,也不会自动开放到公网。开启前必须注册面板管理员;管理接口需要管理员会话或网关 Key,API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。「同时开放网页管理面板」默认关闭,开启后可从其他设备的浏览器登录管理;关闭它不影响 API 转发和本机桌面管理。修改任一开关都需要重启应用。": "By default, only this machine can connect (127.0.0.1). Enabling this listens on all IPv4 interfaces (0.0.0.0); access depends on your network and firewall, is not limited to the LAN, and is not automatically opened to the internet. A panel administrator must be registered first. Management endpoints require an admin session or gateway key; API calls require an enabled gateway key, with a default key created automatically if needed. The web management panel is off by default. Enable it to sign in from another device's browser; disabling it does not affect API forwarding or local desktop management. Either switch requires an app restart.", "默认值通常够用,出问题时才需要调": "The defaults are usually fine; only tune these when something goes wrong", "默认关闭。开启后下一次 Codex 请求立即生效,不用重启;只对 Codex 来源的 /v1/responses 请求补阶段标记,其它客户端与 /v1/chat/completions 不受影响。": "Off by default. Enabling takes effect on the next Codex request without a restart; phase markers are only added to Codex-origin /v1/responses requests, other clients and /v1/chat/completions are unaffected.", "默认关闭。改动立即生效,不用重启;关闭期间的跨源请求会被预检拦下。": "Off by default. Changes take effect immediately, no restart needed; while off, cross-origin requests are stopped by the preflight.", "默认关闭窗口不会退出程序,而是把窗口缩到系统托盘,转发继续在后台运行(OpenAI 客户端不受影响);要彻底退出程序,请在托盘图标上右键选「退出」。关掉这个开关后,点关闭按钮即退出程序、转发随之中断。「开机自动启动」开启后,登录系统时会自动启动本程序(通常直接驻留托盘),不需要手动打开。": "By default, closing the window does not quit the app; it shrinks the window to the system tray and forwarding keeps running in the background (OpenAI clients are unaffected). To quit the app completely, right-click the tray icon and choose \"Exit\". With this switch off, clicking the close button quits the app and forwarding stops with it. With \"Launch at startup\" on, the app starts automatically when you sign in to the system (usually staying in the tray), so you do not need to open it manually.", "默认应用全部提供商(包含之后新增的插件与自定义提供商)。指定范围后,未选中的提供商不做指纹脱敏;清空选择自动回到全部提供商。": "Applies to all providers by default, including plugins and custom providers added later. With a selected scope, other providers are not masked. Clearing the selection returns to all providers.", "默认开启。只改 role 字段本身,消息内容与顺序都不动;本项只改发给上游的副本,客户端看到的响应内容不变。": "Enabled by default. Only the role field changes — message content and order stay untouched; this only rewrites the copy sent upstream, and what the client sees never changes.", "默认开启。只改发给上游的副本,客户端看到的响应与原图都不变;请求日志里保存的是客户端发来的原图,不是压缩后的版本。只作用在对话链路,生图 / 图片编辑不经过这里。改完对下一个请求立即生效,不用重启。": "On by default. Only the copy sent upstream is changed; the response and the original image seen by the client stay the same, and the request log stores the original image from the client rather than the compressed version. Applies to the chat path only — image generation and editing do not go through it. Changes take effect on the next request, no restart needed.", "默认开启。命中明细会记进请求日志的「敏」标签(悬停可看命中了哪几条规则)。本项只改发给上游的副本,客户端看到的响应内容不变。": "On by default. Hits are recorded in the request log's \"sensitive\" tag (hover to see which rules matched). This only changes the copy sent upstream; the response content the client sees is unchanged.", "默认开启并应用全部提供商。编辑词表或应用范围后点击「保存设置」,下一次请求立即生效,不用重启。命中明细仍记进请求日志的「敏」标签。": "Enabled for all providers by default. Edit rules or provider scope and click Save settings; the next request uses the changes without restarting. Rule hits are still recorded in the request log's masking tag.", "默认网关只监听 127.0.0.1,只有本机能访问。开启后网关改听所有网卡,同一局域网内的设备可以把 API 地址指向本机 IP 一起使用。出于安全考虑,开启前必须先注册一个面板管理员:管理接口从此要求管理员会话或网关 Key,模型额度不会对局域网裸奔;一把启用的网关 Key 都没有时,转发接口也会拒绝服务,直到创建第一把。改动需要重启应用生效。「同时开放网页管理面板」把管理界面也出给局域网(其他设备的浏览器打开本机 IP 即可管理),默认关闭 —— 桌面端的面板仍只由本程序自己出。": "By default the gateway listens only on 127.0.0.1 and only this machine can reach it. Once enabled, the gateway listens on all network interfaces, and devices on the same LAN can point the API address at this machine's IP to share it. For security, you must first register a panel administrator: the admin API then requires an admin session or a gateway key, so model quotas are not left wide open to the LAN; and when no gateway key is enabled, the forwarding API refuses service too, until the first one is created. The change requires an app restart to take effect. \"Also serve the web admin panel\" exposes the admin UI to the LAN as well (other devices can open this machine's IP in a browser to manage it); it is off by default — the desktop build still serves the panel only from this app itself.", "({n} 个整组隐藏)": " ({n} groups hidden)", "({n} 行)": " ({n} lines)", "({n} 项被覆盖)": " ({n} overridden)", "(全部为默认值)": " (all defaults)", "(官方原文)": "(official text)", "(已存一份正文,{n} 行;切成「替换 / 追加」后生效)": " (a text copy is saved, {n} lines; takes effect after switching to \"Replace / Append\")", "(已改)": "(edited)", "(已注册过会跳过这一步,直接生效)。": " before enabling this (if you have already registered, this step is skipped and the change takes effect directly).", "(当前生效的就是这一份,{n} 行)": " (this is the active copy, {n} lines)", "(文件:{path})": " (file: {path})", "(未生效)": "(not in effect)", ",{items}": ", {items}", ",{time}": ", {time}", ",以及代理池 / 订阅里可能存在的代理凭据。请使用只有你能访问的私有存储;账号密钥由同步密码单独加密,泄露存储本身不等于泄露账号。": ", plus any proxy credentials that may exist in the proxy pool / subscriptions. Use private storage only you can access; the account key is encrypted separately with the sync password, so leaking the storage alone does not expose your accounts.", ",包括恢复后需要重新登录管理面板。": " with the selected backup file, including the admin re-login after restore.", ",可直接用于登录。请妥善保管,不要外传或上传到公共位置。": ", and it can be used to sign in directly. Keep it safe; do not share it or upload it to a public location.", ",文件里后续的改动在清空这里之前不再生效": "; later changes to the file will not take effect until this is cleared", ",替换前的数据已备份为 {name}": ", the pre-replace data was backed up as {name}", ",自定义提供商新增 {added} 个、更新 {updated} 个": ", custom providers: {added} added, {updated} updated", ";开关关闭时词表不执行": "; rules do not run while masking is disabled", ";网页管理面板已一并开放(浏览器打开同一地址)": "; the web admin panel is also open (open the same address in a browser)" }); +window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { " 到 {file}": " to {file}", " 正文已改:{edited}(其余段用官方原文)。": " Text edited: {edited} (the remaining blocks use the official text).", "(无 id)": "(no id)", "/v1 拒绝无 Key 请求": "/v1 rejects keyless requests", "0 B": "0 B", "100%(默认)": "100% (default)", "<本机IP>": "", "ALTCHA(本地验证)": "ALTCHA (local verification)", "Access Key ID": "Access Key ID", "Agent2API 手机端": "Agent2API Mobile", "Android 应用(APK)": "Android app (APK)", "Cline 上游按请求头判定「调用方是不是 Cline 自家产品」:X-CLIENT-TYPE: cline-sdk 是硬门槛(缺了它免费池模型一律 403),版本号与平台标识让请求更贴近官方客户端的形态。这里列出的是网关默认会发的头:改某一行的值 = 覆盖默认值(也可以新增默认清单之外的自定义头);把值清空保存 = 这个头不发送;在界面删掉被改过的行 = 回落默认值。改完点「保存」,下一个 Cline 请求立即生效。不懂某一行的含义就不要动它 —— 伪装头的价值在「与官方客户端逐字一致」。": "The Cline upstream decides from the request headers whether the caller is one of Cline's own products: X-CLIENT-TYPE: cline-sdk is a hard requirement (without it, free-pool models always return 403), and the version number and platform identifier make the request look closer to the official client. Listed here are the headers the gateway sends by default: editing a row's value overrides the default (you can also add custom headers beyond the default list); saving an empty value means this header is not sent; deleting an edited row in the UI reverts it to the default. Click \"Save\" when done and the next Cline request picks it up immediately. Do not touch a row you do not understand — the value of spoofed headers lies in being word-for-word identical to the official client.", "Cline 伪装头": "Cline Spoofed Headers", "Cline 伪装头已刷新": "Cline spoofed headers refreshed", "Docker 容器": "Docker container", "Endpoint": "Endpoint", "Endpoint 填 https://<账户ID>.r2.cloudflarestorage.com,Region 固定填 auto。": "Set Endpoint to https://.r2.cloudflarestorage.com and Region to auto.", "Endpoint 填 https://cos.ap-guangzhou.myqcloud.com,Region 填 ap-guangzhou(按实际地域改)。": "Set Endpoint to https://cos.ap-guangzhou.myqcloud.com and Region to ap-guangzhou (change to your actual region).", "Endpoint 填 https://obs.cn-north-4.myhuaweicloud.com,Region 填 cn-north-4(按实际地域改)。": "Set Endpoint to https://obs.cn-north-4.myhuaweicloud.com and Region to cn-north-4 (change to your actual region).", "Endpoint 填 https://oss-cn-hangzhou.aliyuncs.com,Region 填 cn-hangzhou(按实际地域改)。": "Set Endpoint to https://oss-cn-hangzhou.aliyuncs.com and Region to cn-hangzhou (change to your actual region).", "Endpoint 形如 http://192.168.1.10:9000(自建通常用 http);Region 一般填 us-east-1。": "Endpoint looks like http://192.168.1.10:9000 (self-hosted usually uses http); Region is typically us-east-1.", "Endpoint 留空即走 AWS 官方地址;Region 必须与桶所在区域一致。": "Leave Endpoint empty to use the official AWS address; Region must match the bucket's region.", "KB": "KB", "Linux 安装包(deb)": "Linux package (deb)", "Logo 不能超过 2 MiB": "The logo must not exceed 2 MiB", "Logo 仅支持 PNG、JPG、WebP 图片": "Only PNG, JPG and WebP images are supported for logos", "Nextcloud": "Nextcloud", "OpenAI 新版 API 用 developer 角色取代 system 承载指令,新版 OpenAI SDK 与部分客户端发的对话里会出现 role 为 developer 的消息;不少 OpenAI 兼容上游(尤其是自定义提供商的透传路径)不认识这个角色,收到就报 400。开启本项后,网关在每次转发前把 developer 角色的消息改写为 system —— 两类角色在 OpenAI 语义上等价(OpenAI 自己的迁移指南也是这么映射的),改写不影响对话内容与语义;对本来就只认 system 的各家内置上游同样无害。默认开启;关掉后 developer 消息会原样发往上游,不认识它的上游会报「角色不存在」一类的错误。": "The newer OpenAI API carries instructions in a developer role instead of system, so conversations sent by current OpenAI SDKs and some clients contain messages with role \"developer\". Many OpenAI-compatible upstreams (especially the passthrough path of custom providers) do not recognize that role and reject the whole request with 400. When enabled, the gateway rewrites developer-role messages to system before every forward — the two roles are equivalent in OpenAI semantics (OpenAI's own migration guide maps them the same way), so the rewrite changes neither content nor meaning, and it is harmless to the built-in upstreams that only accept system anyway. Enabled by default; when off, developer messages go upstream as-is and upstreams that do not know the role return \"unknown role\"-style errors.", "QQ 群 · Telegram": "QQ groups · Telegram", "S3 兼容存储": "S3-compatible storage", "Safari 没有安装按钮:点底部的「分享」,选「添加到主屏幕」,再点「添加」。": "Safari has no install button: tap Share at the bottom, choose \"Add to Home Screen\", then tap \"Add\".", "Secret Access Key": "Secret Access Key", "Token 读数量级": "Token Readout Scale", "UTF-8 文本文件路径,留空用内置默认提示词(通用编码助手提示词,不含任何会被上游拦截的模板句)。只在「替换 / 追加」模式下生效,透传模式不读它。": "Path to a UTF-8 text file. Leave empty to use the built-in default prompt (a general coding-assistant prompt with no template sentences the upstream would block). Only applies in Replace / Append mode; passthrough mode does not read it.", "WebView / 浏览器内核": "WebView / browser engine", "Windows 安装包(NSIS)": "Windows installer (NSIS)", "Windows 服务": "Windows service", "ZCode 套餐池(Start Plan)通道每条请求都要消耗一个当次铸造的人机验证令牌(一次性,2 分钟过期),库存低于该值时界面自动补铸到它。默认 3 个。调大能吸收突发并发,但用不掉的令牌 2 分钟就过期作废,烧的是上游风控配额。可填 1–10。": "Every request on the ZCode plan-pool (Start Plan) channel consumes a freshly minted CAPTCHA token (one-shot, expires in 2 minutes); when stock falls below this value the UI mints more up to it. Default 3. A larger value absorbs bursts, but unused tokens expire after 2 minutes and burn the upstream risk-control quota. Allowed 1-10.", "ZCode「套餐池(Start Plan)」通道的每条推理请求都要附一个当次铸造的阿里云无痕验证令牌(一次性、约 2 分钟过期):令牌由界面里的铸造守卫静默铸好、推给网关入池,转发时逐条取用。这里的三个值管的是补货节奏:①「库存目标」= 库存低于它守卫才补铸、补到它为止,默认 3 个;②「轮询间隔」= 守卫多久看一次库存,默认 2500 毫秒,只影响反应速度(库存够用时不会多铸);③「单轮铸造上限」= 发现缺货时一轮最多铸几个,默认 1 个(连铸之间固定隔 500 毫秒)。请求密集、请求日志里连续出现「需要人机验证令牌」的 503 时,把目标与单轮上限适当调大、轮询调快,能让池子跟得上消耗 —— 代价是上游(阿里云)对铸造频率有风控,铸得越多越快越容易触发限流,且用不掉的令牌 2 分钟即过期作废、等于白烧配额,所以建议小步调。保存后对下一轮补货立即生效,不用重启。": "Every inference request on the ZCode \"Plan pool (Start Plan)\" channel must carry a freshly minted Aliyun invisible-CAPTCHA token (one-shot, expires in about 2 minutes): tokens are minted silently by the mint guard in the UI and pushed into the gateway pool, from which forwarding takes one per request. The three values here govern the restocking rhythm: ① \"Stock target\" = the guard mints more only when stock falls below it, up to it (default 3); ② \"Polling interval\" = how often the guard checks stock, default 2500 ms (only affects reaction speed — no extra minting while stock is sufficient); ③ \"Per-round mint cap\" = the most tokens minted in one round upon a shortage, default 1 (consecutive mints are fixed 500 ms apart). When requests are dense and the request log keeps showing 503 \"needs a CAPTCHA token\", raise the target and per-round cap and poll faster so the pool keeps up — the trade-off is that the upstream (Aliyun) rate-limits minting: the more and faster you mint, the likelier you trip the limit, and unused tokens expire within 2 minutes anyway, effectively burning quota — so adjust in small steps. Saving takes effect on the next restock round, no restart needed.", "beta 版": "Beta release", "iOS 应用": "iOS app", "models.dev 元数据": "models.dev metadata", "models.dev 元数据已更新({count} 条)": "models.dev metadata updated ({count} entries)", "models.dev 是一个开源的模型资料库(社区维护),这里用它补齐「上游没告诉我们」的模型能力:上下文窗口、最大输出、工具调用、图片、视频、是否支持思考,以及这个模型认识哪些思考档位。优先级是:你在「模型能力」里手工改的值 > 上游清单自己声明的值 > models.dev 的值 —— 它只填上游没声明的空位,从不推翻上游已声明的。网关随包内嵌了一份快照,所以离线、首次启动、访问不通时也有数据;开启时会按「模型目录刷新」任务的间隔联网更新(同一轮里一并刷新,也可在这里立即刷新)。关闭只停联网刷新,已经拿到的数据继续用。": "models.dev is an open-source, community-maintained model database. It fills in what the upstream never told us: context window, max output, tool calling, images, video, reasoning support, and which reasoning levels the model actually accepts. Priority: values you edited by hand under \"Model capabilities\" > what the upstream catalog declares > models.dev — it only fills gaps the upstream left, and never overrides a declared value. A snapshot ships inside the app, so offline, first-run and blocked-network cases still have data; while enabled it refreshes online on the \"Model catalog refresh\" schedule (in the same round, or on demand here). Turning it off only stops the online refresh; existing data stays in use.", "models.dev 模型元数据": "models.dev model metadata", "systemd 服务": "systemd service", "{count} 条": "{count} entries", "{count} 条 · 来自{origin}{at} · {mode}": "{count} entries · from {origin}{at} · {mode}", "{count} 条规则,按列表顺序执行": "{count} rules, executed in list order", "{d} 天 {h} 小时": "{d}d {h}h", "{h} 小时 {m} 分钟": "{h}h {m}m", "{label} 提示词文件": "{label} prompt file", "{label} 的提示词模式": "{label} prompt mode", "{label}({message})": "{label} ({message})", "{lines} 行、{chars} 字符(按当前草稿计)": "{lines} lines, {chars} characters (based on the current draft)", "{minutes} 分钟": "{minutes} minutes", "{models} 同时出现在两块设置里,会按「辅助识图」处理。想改的话,把其中一个从这边的模型名单里去掉。": "{models} appears in both blocks and will be handled by assisted image reading. To change that, remove it from one of the model lists.", "{mode}生效:上游收到的 system 来自{source}{lines}。": "{mode} in effect: the system prompt sent upstream comes from {source}{lines}.", "{m} 分钟": "{m}m", "{noun}不能为空(可填 {min}–{max})": "{noun} cannot be empty (allowed range: {min}–{max})", "{noun}必须在 {min}–{max} 之间(当前填的是 {text})": "{noun} must be between {min} and {max} (currently entered: {text})", "{noun}必须是整数": "{noun} must be an integer", "{n} B": "{n} B", "{n} GB": "{n} GB", "{n} KB": "{n} KB", "{n} MB": "{n} MB", "{n} 个头将随每个 Cline 请求发送": "{n} headers will be sent with every Cline request", "{n} 台可选 · 点此切换": "{n} servers · tap to switch", "{n} 项 · {shown} 显示": "{n} items · {shown} shown", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "{total} menus · {shown} shown · {hidden} hidden · {groups} groups", "{way}的适用模型": "Models for {way}", "⚠️ 密钥警告": "⚠️ Key warning", "⚠️ 已关闭「{label}」的机器人校验": "⚠️ Bot check disabled for \"{label}\"", "⚠️ 机器人校验已关闭": "⚠️ Captcha disabled", "✅ Cline 伪装头已保存": "✅ Cline spoofed headers saved", "✅ models.dev 模型元数据已开启": "✅ models.dev model metadata enabled", "✅ 云同步设置已保存": "✅ Cloud sync settings saved", "✅ 会话图片压缩已开启": "✅ Image compression is on", "✅ 出站指纹脱敏已开启": "✅ Fingerprint masking enabled", "✅ 密码已修改,其他设备的登录已失效": "✅ Password changed. Sign-ins on other devices have been revoked", "✅ 导入完成:{summary}": "✅ Import complete: {summary}", "✅ 已上传到云端({size})": "✅ Uploaded to the cloud ({size})", "✅ 已为「{label}」装上网关自带提示词": "✅ Gateway-provided prompt installed for \"{label}\"", "✅ 已从云端恢复{note}": "✅ Restored from the cloud{note}", "✅ 已保存:{label}": "✅ Saved: {label}", "✅ 已保存:{label} {value}": "✅ Saved: {label} {value}", "✅ 已保存:指定错误码直接换号": "✅ Saved: Switch Accounts on Specified Error Codes", "✅ 已保留 {days} 天": "✅ Kept for {days} days", "✅ 已保留 {days} 天,超出部分已清理": "✅ Kept for {days} days; older data cleared", "✅ 已加密备份 {n} 张表({size}),包含恢复密钥:{file}": "✅ Encrypted backup of {n} tables ({size}), including recovery keys: {file}", "✅ 已备份 {n} 张表({size})到 {file}": "✅ Backed up {n} tables ({size}) to {file}", "✅ 已导入账号密钥,请继续下载": "✅ Account key imported; continue with the download", "✅ 已导出 {count} 个账号{note}{file}": "✅ Exported {count} accounts{note}{file}", "✅ 已开启「{label}」的机器人校验": "✅ Bot check enabled for \"{label}\"", "✅ 已恢复 {n} 张表{note}": "✅ Restored {n} tables{note}", "✅ 已改用 k / M / B 缩写": "✅ Now using k / M / B abbreviations", "✅ 已改用本地量级词(万 / 亿式)": "✅ Now using local magnitude words (万 / 亿-style)", "✅ 已自动创建网关 Key「默认」(可在「网关 Key」页查看)": "✅ Automatically created the gateway key \"Default\" (view it on the \"Gateway Key\" page)", "✅ 已解除内容拦截降级": "✅ Content-block fallback cleared", "✅ 开发者角色兼容已开启": "✅ Developer role compatibility enabled", "✅ 指纹脱敏设置已保存": "✅ Fingerprint masking settings saved", "✅ 数量上限已设为 {count} 条": "✅ Record limit set to {count}", "✅ 数量上限已设为 {count} 条,超出部分已清理": "✅ Record limit set to {count}; excess records removed", "✅ 机器人校验已开启": "✅ Captcha enabled", "✅ 第三方模型回答完自动折叠过程已开启": "✅ Collapse third-party model work after the answer enabled", "✅ 设置已保存,应用正在重启…": "✅ Settings saved, the app is restarting…", "✅ 调试模式已关闭": "✅ Debug mode disabled", "✅ 调试模式已开启": "✅ Debug mode enabled", "✅ 路由设置已保存": "✅ Routing settings saved", "✅ 连接成功:{path}": "✅ Connected: {path}", "、{n} 个自定义提供商": ", {n} custom providers", "。事件日志、请求明细、调试报文与面板登录态保持不变。替换前会自动把当前业务数据备份到配置目录的 backups/ 下。": ". Event logs, request details, debug payloads and panel login state stay untouched. The current business data is backed up to backups/ under the config directory before replacing.", "「{label}」将从 {previous} 天改为 {days} 天。": "\"{label}\" will change from {previous} days to {days} days.", "「{label}」将从 {previous} 条改为 {count} 条。": "\"{label}\" will change from {previous} to {count} records.", "「{label}」改用内置默认提示词": "\"{label}\" now uses the built-in default prompt", "「{label}」的提示词文件已更新": "\"{label}\" prompt file updated", "「{label}」的提示词正文已更新": "\"{label}\" prompt text updated", "「{label}」的模式改为「{mode}」": "\"{label}\" mode changed to \"{mode}\"", "「{label}」的网关自带提示词已改回官方原文": "\"{label}\" gateway-provided prompt restored to the official text", "「{label}」的网关自带提示词正文已更新": "\"{label}\" gateway-provided prompt text updated", "「模型管理」里每个能力的来源标记(上游 / models.dev / 已覆盖)读的就是这份数据;映射弹窗的思考档位下拉也按这里的数据只列该模型真实认识的档位。": "The per-capability source marks in \"Model management\" (upstream / models.dev / overridden) come from this data, and the reasoning-level dropdown in the mapping dialog lists only the levels the model actually accepts, based on it.", "「用哪份提示词」本来是按上游分别决定的事,所以每家可以有自己的模式、提示词文件与正文:不在这里列出的提供商一律沿用上面那份默认设置,「跟随默认」把这一家取消、回到默认。带「网关自带」那一行的家(目前是 ZCode 两家)默认就列在这里 —— 那一段是网关自己装上去的文本,不来自客户端也不来自提示词文件,默认开启、可以关掉,也可以改它的正文(改过的那一段以你的文本为准);关掉后还能不能通过上游校验,取决于上游当下的口径,行内说明了实测依据。「模式 / 提示词文件 / 正文」管的是客户端自己的 system 怎么处理,与那个开关是两件事。": "Which prompt to use is decided per upstream, so each provider can have its own mode, prompt file, and text: providers not listed here all use the default settings above, and \"Follow Default\" removes a provider's override and returns it to the default. Providers with a \"Gateway-Provided Prompt\" row (currently the two ZCode providers) are listed here by default — that text is installed by the gateway itself, comes from neither the client nor a prompt file, is on by default, can be turned off, and its text can be edited (edited blocks use your text); whether it still passes upstream validation after being turned off depends on the upstream's current criteria, and the row's hint documents what was measured. \"Mode / Prompt File / Prompt Text\" controls how the client's own system prompt is handled — a separate matter from that switch.", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "\"Settings\" is pinned, so its group cannot be hidden as a whole; you can still hide its other menus individually", "「请求日志」页的逐条请求记录,默认 99999 天(近似全量保留),可填 1–99999 天。": "Per-request records on the \"Request Logs\" page. Defaults to 99999 days (about 274 years — kept in full for practical purposes); range 1–99999 days.", "「请求日志」页的逐条请求记录,默认 99999 天,可填 1–99999 天;同时受数量上限限制。": "Per-request records on the Request Logs page. Defaults to 99999 days; accepts 1–99999 days. The record limit also applies.", "一个 .a2ab 文件即可跨机器恢复,账号、网关 Key、GitHub 令牌与云同步凭据无需另行复制密钥。插件程序与库外文件不在整库备份范围。": "One .a2ab file restores data on another machine without separately copying keys for accounts, gateway keys, GitHub tokens, or cloud sync credentials. Plugin programs and files outside the database are not included.", "一段内置装配": "a built-in assembly", "三档数据各自独立计时,超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件;请求日志是网关每次转发到上游的逐条记录;按天聚合供报表页的热力图与按天趋势使用。请求日志与按天聚合默认 99999 天(约 274 年,效果上等于全量保留),事件日志默认 30 天。把某一档改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。三档的可填范围均为 1–99999 天。": "The three data types are timed independently; anything beyond its retention period is deleted: event logs are system events such as sign-ins, account switches, and 429 switches; request logs are the per-request records of everything the gateway forwards upstream; the daily aggregates feed the heatmap and daily trends on the Reports page. Request logs and daily aggregates default to 99999 days (about 274 years — kept in full for practical purposes), and event logs default to 30 days. Lowering a value (for example, 30 days to 7 days) and saving deletes the excess historical data immediately, and this cannot be undone; raising it or leaving it unchanged deletes nothing. All three accept 1–99999 days.", "三段各自成块,所以分开编辑": "Three separate blocks, edited separately", "上传": "Upload", "上传 Logo": "Upload logo", "上传中…": "Uploading…", "上传内容含加密后的账号凭证与网关配置": "The upload contains encrypted account credentials and gateway configuration", "上传到云端": "Upload to cloud", "上传失败:{message}": "Upload failed: {message}", "上次同步:{time}({action})": "Last sync: {time} ({action})", "上次成功刷新的结果(存在本机数据库里)": "Result of the last successful refresh (stored in the local database)", "上游 CLI 版本": "Upstream CLI version", "上游客户端版本": "Upstream client version", "上游按": "The upstream checks ", "上游按「结构」校验身份:三段必须各自成块,所以这里分开编辑三段(不能合成一段)。动态段里的运行值写成占位符,发请求时才替换:{cwd} 工作目录、{platform} 平台、{shell} shell、{os_version} 系统版本、{git} 是否 git 仓库、{provider} 提供方标识、{model} 模型名。清空某一段 = 那一段恢复官方原文。第三段发出时前面会自带一个空行(官方形状)。": "The upstream verifies identity by \"structure\": the three blocks must each be a separate block, so they are edited separately here (they cannot be merged into one). Runtime values in the dynamic block are written as placeholders and substituted only when a request is sent: {cwd} working directory, {platform} platform, {shell} shell, {os_version} OS version, {git} whether this is a git repository, {provider} provider identifier, {model} model name. Clearing a block = that block reverts to the official text. A blank line is automatically prepended to the third block when it is sent (the official shape).", "上游未配置": "Upstream not configured", "上游模型繁忙时会先排队(回一句「建议 N 秒后再来」):网关等一会儿再发同一请求,最多等几次。默认 2 次,可填 0–10;填 0 表示不等待,排队直接返回 503 并说明「不是登录态或额度问题」。": "Busy upstream models queue first (replying \"suggest waiting N seconds\"): the gateway waits a while and resends the same request, up to a set number of waits. Default 2; accepts 0–10. 0 means no waiting: a queued response returns 503 directly and states that this is not a sign-in or quota problem.", "上游用「逐字精确匹配」的方式审核请求体(不是语义审核):客户端注入的固定模板句、计费头字段名、以及某些裸错误码出现在报文里就会整单拦截,返回 400。开启本项后,网关在每次转发前改写这些指纹 —— 表头键值整段删除,承载语义的模板句只换一个词(如 official CLI for Claude → official CLI tool for Claude),对话内容与语义都不受影响。规则集是内置的,不需要也无法维护词表。关掉本项后客户端模板会原样发往上游,可能重新出现模板句被误拦的报错。": "The upstream reviews request bodies by exact word-for-word matching (not semantic review): fixed template sentences injected by the client, billing header field names, and certain bare error codes in the payload cause the entire request to be blocked with 400. With this option on, the gateway rewrites those fingerprints before every forward — header key/value pairs are deleted entirely, and template sentences that carry meaning have a single word swapped (e.g. official CLI for Claude → official CLI tool for Claude); the conversation content and meaning are unaffected. The rule set is built in — there is no word list to maintain, and none can be. With this option off, client templates go upstream as-is and template-sentence false blocks may reappear.", "上游请求四个阶段各自的等待上限(秒,1~3600):①「连接中超时」= 建立 TCP/TLS 连接或代理隧道的最大等待,默认 30 秒;②「等待响应超时」= 请求发出后等上游响应头的最大时间,默认 300 秒 —— 网关请求上游恒带 stream,响应头在 SSE 建立时就到达,与模型思考多久无关;③「流式响应空闲超时」= 流式响应相邻两块数据之间允许的最大空闲,收到新数据即重新计时,默认 300 秒 —— 上游长时间不吐数据即判定连接僵死并断开;④「非流式响应超时」= 读完整份非流式响应体的总预算(一次性计时、不重置),默认 300 秒。四项都是「等待上限」,只要数据还在来,正常的流式回答就一直往下传。保存后对下一个请求立即生效,不用重启。": "The upstream wait limit for each of the four request stages (seconds, 1–3600): (1) \"Connect Timeout\" = the maximum wait to establish the TCP/TLS connection or proxy tunnel, default 30 seconds; (2) \"Response Headers Timeout\" = the maximum time to wait for the upstream's response headers after the request is sent, default 300 seconds — gateway requests always use stream, and the response headers arrive as soon as the SSE stream is established, regardless of how long the model thinks; (3) \"Stream Idle Timeout\" = the maximum idle gap allowed between adjacent chunks of a streaming response, the timer restarting on each new chunk, default 300 seconds — if the upstream sends no data for a long time, the connection is judged dead and disconnected; (4) \"Non-Streaming Timeout\" = the total budget for reading a complete non-streaming response body (a single timer that is not reset), default 300 seconds. All four are wait limits: as long as data keeps arriving, a normal streaming answer keeps flowing. Changes take effect on the next request without a restart.", "上游调试报文": "Upstream debug payloads", "上移": "Move up", "上移规则": "Move rule up", "下次自动重试:{time}": "Next automatic retry: {time}", "下游正文": "Downstream bodies", "下移": "Move down", "下移规则": "Move rule down", "下载失败:{message}": "Download failed: {message}", "不一致": "Mismatch", "不做会话识别,每条请求都重新按策略选路。": "No session detection: every request is routed by strategy from scratch.", "不做图片兼容": "Do not adapt images", "不可用": "Unavailable", "与网关同源的面板;完整管理功能在桌面端": "A panel served by the same gateway; full management lives on desktop", "两张开关分别管桌面端(应用内窗口,也包含开启局域网访问后从其他设备访问的那份面板)与网页端(Docker / 服务端自托管的浏览器面板)。默认都开启;桌面端只在本机使用、嫌验证耗时可以关掉,网页端暴露在网络上,建议保持开启。": "The two switches cover the desktop side (the in-app window, including the panel reached from other devices when LAN access is on) and the web side (the browser panel hosted by Docker / server). Both default to on. Turn the desktop one off if you only use it locally and find the check slow; keep the web one on, since that page is exposed to the network.", "两次输入的备份密码不一致": "The backup passwords do not match", "两次输入的新密码不一致": "The new passwords do not match", "两次重试之间的等待时间,两项共用,可填 0–300 秒。": "Wait time between two retries, shared by both settings. Range: 0–300 seconds.", "两种方式不会互相自动切换。": "The two modes never switch to each other automatically.", "两组设置分别用于桌面端托管的网页管理面板与网页端(Docker / 服务端)的浏览器面板。是否可被其他设备访问取决于网络访问与防火墙设置,不限于局域网。两端默认都开启人机验证,建议保持开启。": "The two groups apply to the web panel hosted by the desktop app and the browser panel hosted by Docker / server. Access from other devices depends on network access and firewall settings and is not limited to the LAN. Human verification is enabled by default for both; keeping it enabled is recommended.", "为了安全,开启前需要先注册一个": "For security, you need to register a ", "主进程未返回启动设置,请更新桌面端后重试": "The main process did not return startup settings. Update the desktop app and try again.", "主进程桥不可用": "Main process bridge unavailable", "主题": "Theme", "事件日志": "Event logs", "事件日志保留天数": "Event Log Retention Days", "云同步": "Cloud sync", "产品名": "Product name", "产品名不能包含斜杠或版本号,请改用前缀匹配": "Product names cannot include slashes or versions. Use prefix matching.", "人机验证": "Human verification", "人机验证失败": "Human verification failed", "人机验证已完成": "Human verification complete", "人机验证还在计算,请稍候": "Human verification is still running, please wait", "仅在同一会话、同一问题和相同权限范围内复用;追问新细节会重新识读。缓存只存在本机内存。": "Results are reused only within the same conversation, question and permission scope. New questions trigger a fresh reading. The cache is kept only in local memory.", "仅在账号、配置、签到或余额等实质内容变化时上传;导出时间或查询时间单独变化不会触发上传。": "Upload only when account data, settings, check-in results or balances change. Changes to export or query timestamps alone do not trigger an upload.", "仅处理本次转发副本,不修改客户端选择,也不删除当前或历史图片。": "Only this forwarded copy is changed. The client's selection and all current and historical images are preserved.", "仅影响面板登录与注册,不影响 API Key 调用。保存后生效,已登录会话不会退出。": "Only affects panel sign-in and registration, not API key requests. Changes take effect after saving and do not sign out existing sessions.", "仅本机": "This device only", "仅用现有数据、不联网刷新": "Using existing data only, no online refresh", "从云端恢复": "Restore from cloud", "从桌面图标启动,全屏、无地址栏。想卸载:长按图标删除,或清除浏览器站点数据。": "Launch it from the home screen icon: full screen, no address bar. To uninstall, long-press the icon and remove it, or clear the browser's site data.", "优先使用当前路由内的视觉模型": "Prefer vision models in the current route", "优先在当前路由内找可用的视觉模型,找不到就用 {model} 直接回答,不再回到原模型。": "An available vision model inside the current route is preferred; if there is none, {model} answers directly instead of the original model.", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "This restores the default groups, order and visibility. Groups you created are removed (their menus are kept).", "会话图片压缩设置已刷新": "Image compression settings refreshed", "位置": "Location", "位置与端口": "Location and ports", "使用 Rust 正则语法,保存时由后端校验;不支持环视和反向引用。": "Uses Rust regular expression syntax, validated by the backend when saving. Lookaround and backreferences are not supported.", "使用中文单位(亿 / 万)": "Use Chinese units (yi / wan)", "使用本地量级词(万 / 亿式)": "Use local magnitude words (万 / 亿-style)", "使用默认值": "Using defaults", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "The sidebar layout module did not load (ui/sidebar-layout.js must be included before app.js).", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "No menus are shown in the sidebar. Turn on the ones you need under Settings → Display → Sidebar menus.", "侧边栏菜单": "Sidebar menus", "保存上游原始报文(请求头、请求体、响应头、响应体)": "Save raw upstream payloads (request headers, request body, response headers, response body)", "保存单独配置": "Save model override", "保存后以这里的文本为准": "The text here takes precedence once saved", "保存后对下一轮补货立即生效,不用重启。守卫跑在应用界面里:轻量模式关窗销毁界面期间无法铸造,走套餐池(Start Plan)通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。": "Saving takes effect on the next restock round, no restart needed. The guard runs inside the app UI: while lightweight mode has destroyed the UI after a window close, no tokens can be minted — requests on the plan-pool (Start Plan) channel land in the request log as 503 (with the reason); reopen the UI and minting recovers automatically.", "保存后应用将重启以生效。": "The app will restart after saving for this to take effect.", "保存后状态读取立即生效。后台不会自动生成令牌;需要人机验证时,在账号的「套餐明细」中主动开始验证。模型请求免验证时无需保持界面打开。": "Status polling settings take effect immediately after saving. No tokens are generated automatically. Start required verification in the account’s Plan details. You do not need to keep the interface open when model requests are exempt from verification.", "保存后立即生效,不用重启:策略与粘性作用于**下一次**转发的选路,进行中的请求不受影响。": "Takes effect on save, no restart: strategy and stickiness apply to the **next** forwarded request; in-flight requests are unaffected.", "保存后立即生效,不用重启;次数用尽仍失败时,错误原样返回给客户端。": "Takes effect immediately after saving, no restart needed; if all attempts are exhausted and the request still fails, the error is returned to the client as-is.", "保存后立即生效,不用重启;超时按上游失败处理(计入请求日志的「错误」列,并按「请求重试」的设置决定是否重试)。": "Takes effect immediately after saving, no restart needed; a timeout is treated as an upstream failure (counted in the \"Error\" column of the request logs, and retried according to the \"Request Retries\" settings).", "保存后立即生效:保留天数和数量上限同时生效,调小任一项会立即清理超出的历史数据,且不可恢复。": "Takes effect immediately after saving. Both retention days and record limits apply; lowering either immediately removes excess historical data and cannot be undone.", "保存后立即生效:改小保留天数会立刻删除超出的历史数据,且不可恢复。": "Takes effect immediately after saving: lowering the retention days deletes the excess historical data at once, and this cannot be undone.", "保存在当前网关,登录页也会公开显示。不会更改安装包、快捷方式、系统托盘图标或软件版本信息。": "Saved on the current gateway and displayed publicly on the sign-in page. Does not change the installer, shortcuts, system tray icon or software version information.", "保存并重启": "Save & Restart", "保存设置": "Save settings", "保持当前路由范围,不跳到其他路由组。": "Stays within the current route and never jumps to another route group.", "保活换行丢弃": "Strip keepalive newlines", "保留原图和对话,由视觉模型直接回答本次请求。": "Keep the original images and conversation, and let a vision model answer this request directly.", "保留原图,选择视觉模型": "Keep the images and select a vision model", "保留图片中的文字、代码、数字、布局与状态。识读失败就停止,不删图后继续回答。": "Preserve text, code, numbers, layout and state in the images. Stop if reading fails; never remove images and continue answering.", "保留天数已刷新": "Retention days refreshed", "保留旧版配置兼容,当前不会自动连铸。每次点击「开始验证」只取得一枚令牌,失败或取消后停止。": "Kept for compatibility with older settings. Tokens are not minted automatically in batches. Each Start verification action obtains one token and stops on failure or cancellation.", "保留草稿并读取最新设置": "Keep draft and reload settings", "修改密码": "Change password", "修改密码需要输入当前密码;修改成功后,其他设备 / 浏览器上的登录会立即失效,当前这条会话保留。": "Changing the password requires the current one. After success, sign-ins on other devices and browsers are revoked immediately; this session stays active.", "值": "Value", "值与默认值相同的行不占覆盖(存的是「改过的键」,不是全量配置);值留空保存表示这个头不发送,删除改过的行表示回落默认值。改完立即生效,不用重启。": "Rows whose value equals the default do not count as overrides (only changed keys are stored, not the whole configuration); saving an empty value means this header is not sent, and deleting an edited row reverts it to the default. Changes take effect immediately, no restart needed.", "值(留空 = 不发送)": "Value (empty = not sent)", "停止并说明原因": "Stop and explain why", "像素": "px", "允许其他设备访问前,需要设置面板管理员账号与密码。注册完成后会继续开启流程并重启应用。": "Set a panel administrator username and password before allowing access from other devices. After registration, network access will be enabled and the app will restart.", "允许其他设备访问网关": "Allow other devices to access the gateway", "允许局域网内的设备访问网关": "Allow devices on the LAN to access the gateway", "允许无 Key 裸跑": "Allow running without keys", "允许浏览器里的页面跨来源调用网关(/v1/*)": "Allow pages in a browser to call the gateway cross-origin (/v1/*)", "允许的域名": "Allowed hostnames", "先发送原图,明确拒图后补救": "Send original images first; adapt only after an explicit rejection", "先把图片交给视觉模型读一遍,再让原模型结合读到的内容回答。": "The vision model reads the image first, then the original model answers using what was read.", "全局配置": "Global Configuration", "全部已配置": "All configured", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 中,加密密钥单独保存在库外。跨机器备份请使用「整库备份 / 恢复」,不要只复制数据库。更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "Accounts, event logs, request records, debug payloads, and settings are stored in agent2api.db. Encryption keys are stored separately. To move between machines, use Full database backup / restore rather than copying only the database. To change the directory, set AGENT2API_PROXY_HOME and restart.", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 这一个 SQLite 数据库里。备份时只需拷贝这个文件;更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "All data (accounts, event logs, request records, debug payloads, and settings) is kept in a single SQLite database, agent2api.db, in the configuration directory. To back up, just copy this file; to change its location, set the AGENT2API_PROXY_HOME environment variable and restart the app.", "全部角色": "All roles", "全部角色沿用原有行为,包含思考内容和工具参数;指定角色时只改消息正文,未选角色及思考内容、工具参数保持原样。": "All roles keeps the existing behavior, including reasoning content and tool arguments. Selected roles rewrites only message content; unselected roles, reasoning content and tool arguments remain unchanged.", "共享视觉模型已变更,请重新确认并保存,避免把图片交给未经确认的模型。": "The shared vision model changed. Confirm and save again before sending images to the new model.", "共用设置:{providers}": "Shared settings: {providers}", "关闭后不再提供网页管理面板,本机桌面程序仍可正常管理;已开启的 API 转发不受影响。": "The web management panel will no longer be served. You can still manage the gateway in the local desktop app, and API forwarding is not affected.", "关闭后手动上传 / 下载也会被拒绝。": "When off, manual upload/download is rejected too.", "关闭后网关只监听 127.0.0.1,其他设备将无法直接连接,网页管理面板也会一并关闭。已配置的网关 Key 与账号不受影响。": "The gateway will listen only on 127.0.0.1, preventing direct connections from other devices. The web management panel will also be disabled. Existing gateway keys and accounts are not affected.", "关闭后网关回到只监听 127.0.0.1,局域网内的设备将无法继续访问;已配置的网关 Key 与账号都不受影响。": "Once disabled, the gateway goes back to listening only on 127.0.0.1 and devices on the LAN can no longer reach it; configured gateway keys and accounts are unaffected.", "关闭后,管理界面不再从局域网提供,只有本机的桌面程序可以管理;已开启的 API 转发不受影响。": "Once disabled, the admin UI is no longer exposed over the LAN — only the desktop app on this machine can manage it; API forwarding that is already enabled is unaffected.", "关闭局域网访问": "Disable LAN Access", "关闭并重启": "Close & Restart", "关闭思考": "Disable reasoning", "关闭窗口即退出程序,后台转发随之中断": "Closing the window quits the app, and background forwarding stops with it", "关闭窗口时最小化到托盘": "Minimize to tray when the window is closed", "关闭窗口时程序不退出,转发继续在后台运行;退出请用托盘菜单": "Closing the window does not quit the app; forwarding keeps running in the background. To quit, use the tray menu", "关闭网络访问": "Disable network access", "兼容处理最长等待": "Longest wait for compatibility processing", "兼容处理最长等待(秒)": "Maximum image adaptation wait (seconds)", "内容拦截降级": "Content-block fallback", "内置识别、自定义规则与来源声明": "Built-in identification, custom rules, and origin declarations", "内置软件标识规则": "Built-in User-Agent rule", "内置默认": "Built-in defaults", "内置默认提示词": "the built-in default prompt", "再输入一次新密码": "Re-enter the new password", "凭据类请求头已脱敏。": "Credential request headers have been redacted.", "凭证只保存在这台手机上,按服务器分别存放": "Credentials are stored only on this phone, separately for each server", "出问题时把这一页截图,或点「复制全部信息」把文本贴进反馈,一般就能定位到大致原因。": "When something goes wrong, screenshot this page or use \"Copy all info\" and paste the text into your report — that is usually enough to narrow down the cause.", "分享图标在 Safari 底部工具栏中间": "The Share icon sits in the middle of Safari's bottom toolbar", "分组名": "Group name", "分组名,例如「常用」": "Group name, e.g. \"Favorites\"", "切换视觉模型": "Switch to a vision model", "切换视觉模型 · 视觉模型回答": "Switch models · Vision model answers", "切换视觉模型配置": "Vision model switching settings", "切换账号重试次数": "Account-Switch Retries", "刚刚从 models.dev 拉到的最新数据": "Fresh data just fetched from models.dev", "删除 {code}": "Delete {code}", "删除分组": "Delete group", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "Delete group \"{name}\"? Its {n} menus will move to \"{target}\" — nothing is lost.", "删除匹配内容": "Delete matched text", "删除后不再接受这个分类的来源声明,历史记录保留原来的名称和用量。": "Origin declarations for this category will no longer be accepted. Historical records retain their original names and usage.", "删除后,新请求不再使用这条规则;历史记录保持不变。": "New requests will no longer use this rule. Historical records stay unchanged.", "删除客户端分类": "Delete client category", "删除状态码 {code}": "Delete status code {code}", "删除空分组「{name}」?": "Delete the empty group \"{name}\"?", "删除识别规则": "Delete identification rule", "删除这个分组(组内菜单移到第一组)": "Delete this group (its menus move to the first group)", "刷新": "Refresh", "刷新失败:{message}": "Refresh failed: {message}", "前台运行": "Foreground process", "前缀": "Prefix", "剥离上游审核黑名单指纹(改写请求体里的模板句与表头)": "Strip upstream review blacklist fingerprints (rewrite template sentences and headers in request bodies)", "功能建议": "Feature Request", "加入备选": "Add as backup", "加密备份必填,旧 SQL 可留空": "Required for encrypted backups; leave blank for legacy SQL", "包含": "Contains", "包含日志与调试报文": "Include logs and debug payloads", "包含:{items}": "Includes: {items}", "匹配内容": "Match pattern", "匹配内容不能为空,且最多 {max} 个字符": "The match pattern is required and must not exceed {max} characters", "匹配内容不能为空,最长 256 个字符": "Enter a match pattern of up to 256 characters", "匹配原文含零宽空格,词表预览用 \\u{200b} 标出;编辑时保留该字符。": "The pattern contains a zero-width space, shown as \\u{200b} in the rule preview. Preserve this character when editing.", "匹配方式": "Match type", "区域(Region)": "Region", "华为云 OBS": "Huawei Cloud OBS", "单独指定视觉模型": "Choose a separate vision model", "单轮铸造上限": "Per-round mint cap", "占用大小": "Size on Disk", "历史未记录识别依据": "Identification evidence was not recorded", "原来的「全局方式 + 模型单独配置」已按相同意思自动填成下面的模型名单,可以照用也可以重新调整;改动一处之后就会按新形式存下来。": "Your previous \"global mode + per-model overrides\" has been filled into the model lists below with the same meaning. Keep it as is or adjust it; once you change anything it is stored in the new form.", "原模型不能直接看图": "The original model cannot read images directly", "原模型根据识读内容回答": "The original model answers using the image description", "去反馈": "Give Feedback", "去申请": "Submit a Request", "反馈与需求": "Feedback & Requests", "发现缺货时一轮最多铸几个(连铸之间固定隔 500 毫秒)。默认 1 个:SDK 同一实例连铸容易互相干扰。调大补货更快,但单轮连铸越多越容易触发上游风控。可填 1–5。": "How many tokens a single round may mint when a shortage is found (fixed 500 ms between back-to-back mints). Default 1: consecutive mints on one SDK instance tend to interfere with each other. A larger value restocks faster, but the more mints per round, the easier it trips the upstream risk control. 1–5 accepted.", "取消勾选后只备份业务数据(账号、配置与余额记录),文件显著变小;事件日志、请求统计与调试报文不会进备份文件。": "Unchecked, only business data is backed up (accounts, configuration, balance records) and the file shrinks considerably; event logs, request stats, and debug payloads are left out.", "变更网页管理面板": "Change Web Admin Panel", "只列单独配置过的家,其余沿用上面的全局配置": "Only providers configured individually are listed; the rest use the global configuration above", "只对「排队制」的上游生效:模型繁忙时上游不报错,只回一句「建议 N 秒后再来」,网关按建议时长等一会儿再发同一请求,等满次数仍排不上才把「排队中」作为错误返回(HTTP 503,文案会说明这不是登录态或额度问题)。等待发生在首个字节之前,吃的是「等待响应超时」那份预算 —— 两项设置一起决定一次请求最多卡多久;排队不会标记账号限额、也不会换账号(换谁都一样在排队)。保存后对下一个请求立即生效,不用重启。": "Applies only to queueing upstreams : when a model is busy the upstream raises no error, it just replies \"suggest waiting N seconds\"; the gateway waits for the suggested duration and resends the same request, and only when the wait count is exhausted is \"queueing\" returned as an error (HTTP 503, with text explaining that this is not a sign-in or quota problem). The wait happens before the first byte and comes out of the \"Response Headers Timeout\" budget — together the two settings determine how long one request can stall at most; queueing does not mark the account as rate-limited and does not switch accounts (everyone is queueing). Takes effect on the next request after saving, no restart needed.", "只影响读图那一步的思考深度;两块设置统一用这个选择。": "Only affects how deeply the image-reading step thinks; both blocks share this choice.", "只有已安装、启用并声明了设置项的提供商会出现在这里。可前往插件页检查安装与启用状态。": "Only providers with an installed, enabled plugin that declares settings appear here. Check installation and activation on the Plugins page.", "只沿用模型与思考等级,不借用视觉服务的内部 Key;仍受当前请求权限限制。": "Only the model and reasoning level are reused, not the vision service's internal Key. The current request's permissions still apply.", "只清掉这个浏览器存的 Key,不影响网关": "Only clears the key stored in this browser; the gateway is untouched", "只覆盖指定提供商的指定模型,其余跟随全局。": "Override only the selected model from the selected provider; all others follow the global settings.", "可跨提供商多选;只处理这些模型看不了的图片。": "Multi-select across providers; only images these models cannot read are handled.", "可跨提供商多选;这些模型的请求会整体改交视觉模型。": "Multi-select across providers; requests from these models are handed over to the vision model as a whole.", "可选。部分服务(如中国科技云数据胶囊)会按 User-Agent 校验凭据绑定的客户端类型,此时填写包含该类型名的字符串(例如 rclone/v1.67.0)。留空则维持默认。": "Optional. Some services (such as CSTCloud Data Capsule) validate the credential's bound client type via the User-Agent; if so, enter a string containing that type name (for example rclone/v1.67.0). Leave blank to keep the default.", "合计只累加当前筛选后可见的账号,筛选、搜索一改数字就跟着变。": "Totals only add up accounts visible under the current filter; changing the filter or search changes the number.", "合计按整组统计(默认):不受筛选、搜索影响,被筛掉与已禁用的账号也计入。": "Totals cover the whole group (default): filtering and search do not change them, and filtered-out or disabled accounts still count.", "同一会话、同一问题、相同权限范围内复用;追问新细节会重新识读。": "Reused within the same session, question and permission scope; asking about new details triggers a fresh read.", "同一会话在 5 分钟内尽量跟住同一个账号;停了 5 分钟再发就算新会话。多数场景用它 —— 多轮对话少换号,也不至于把账号焊死。": "The same session tries to stay on one account for 5 minutes; pausing longer than 5 minutes starts a new session. The choice for most cases — fewer account switches in multi-turn chats, without pinning an account.", "同一会话在 6 小时内跟住同一个账号;适合一坐几个小时的长会话,上游的上下文缓存能吃到更多。": "The same session stays on one account for up to 6 hours; suited to marathon sessions — the upstream context cache gets reused much more.", "同一提供商的同一模型不能重复配置": "The same provider and model cannot have duplicate overrides", "同一账号重试次数": "Same-Account Retries", "同时开放网页管理面板": "Also expose the web admin panel", "同步密码": "Sync password", "名单最多 {max} 个状态码": "At most {max} status codes", "后端没有返回版本信息": "The backend returned no version info", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "Contains the pinned \"Settings\" menu, so the group cannot be hidden as a whole (you can still hide its other menus individually)", "启动与托盘": "Startup & Tray", "启动时间": "Started at", "启用云同步": "Enable cloud sync", "启用图片兼容": "Enable image compatibility", "启用规则": "Enable rule", "启用规则:{name}": "Enable rule: {name}", "命中依据:{header} · {pattern}": "Matched evidence: {header} · {pattern}", "命中这些上游状态码的失败不在同一账号重发,直接换下一个账号继续试(换号占用「切换账号重试次数」,换满仍失败才把错误原样返回给客户端)。输入 100–599 的状态码后回车添加,点 × 或退格删除;默认 402(积分不足)。清空全部表示任何错误都照常重试。": "Failures matching these upstream status codes are not retried on the same account — the gateway switches to the next account and keeps trying (an account switch consumes an \"Account-Switch Retries\" slot; only when those are exhausted is the error returned to the client as-is). Type a status code from 100–599 and press Enter to add it; click × or press Backspace to delete one. Default: 402 (insufficient points). Clearing the list means any error is retried as usual.", "品牌 Logo": "Brand logo", "品牌设置": "Brand settings", "品牌设置已保存": "Brand settings saved", "品牌预览": "Brand preview", "哪些模型用这种方式": "Which models use this way", "固定": "Pinned", "图标经 Magpie 引入,未单独记录 Lobe Icons 的图标版本;以上版本仅用于核对许可。": "These icons were obtained through Magpie. The Lobe Icons asset revision was not recorded separately; the revision above was used only to verify the license.", "图片与相关对话将交给配置的视觉模型处理,可能增加等待时间和费用。请确认这些服务可以接收你的图片。": "Images and relevant conversation will be sent to the configured vision models, which may increase latency and cost. Confirm that these services may receive your images.", "图片兼容": "Image compatibility", "图片兼容当前是关闭的:下面两块设置照样能改、会被保留,但不会对任何请求生效。": "Image compatibility is currently off: the two blocks below can still be edited and are kept, but nothing here applies to any request.", "图片兼容设置已保存,仅对新请求生效。": "Image compatibility settings saved. They apply only to new requests.", "图片兼容设置读取失败": "Failed to load image compatibility settings", "图片压缩": "Image compression", "图片最长边超过这个值就等比缩小(只缩不放)。默认 2048,可填 256–8192 —— 多数视觉模型在这个量级已经够用,调小更省流量、但细节会丢。": "Images whose longest edge exceeds this value are scaled down proportionally (never enlarged). Default 2048, range 256-8192 — most vision models are fine at this size; a smaller value saves bandwidth but loses detail.", "图片能力未知时": "When image capability is unknown", "图片过大、格式错误或下载失败不会被当作模型不支持图片。": "Oversized, malformed or undownloadable images are not treated as unsupported by the model.", "在同一个账号上原地重发几次(不含首发;整条请求共用一份,用完后换来的账号只发一次就继续换)。可填 0–10,0 表示失败立即换号。": "How many times to resend in place on the same account (not counting the first send; the whole request shares one pool, and once it is used up, any account switched to gets only one send before switching continues). Accepts 0–10; 0 means switch accounts immediately on failure.", "在这里直接编辑提示词正文:保存后以这份文本为准(优先于上面的提示词文件),清空则回到文件 / 内置默认。改一个字不必再去编辑器里开文件。": "Edit the prompt text right here: after saving, this text takes precedence (over the prompt file above), and clearing it falls back to the file / built-in default. No need to open a file in an editor just to change one word.", "在途请求": "In-flight requests", "地址格式不对。填「IP 或域名:端口」,可带 http:// 或 https://,例如 192.168.1.23:3065": "Invalid address. Enter \"IP or domain:port\", optionally with http:// or https:// — e.g. 192.168.1.23:3065", "坚果云": "Jianguoyun (Nutstore)", "坚果云需使用「第三方应用密码」(账户信息 → 安全选项里生成),地址必须是 /dav/ 下的目录。": "Jianguoyun requires an app-specific password (generate it under Account info → Security), and the URL must point to a directory under /dav/.", "填「IP 或域名:端口」。协议可写 http:// 或 https://,不写默认 http;http 不写端口默认 3065,https 默认 443。地址里的 /m、/v1 会自动去掉。": "Enter \"IP or domain:port\". The scheme may be http:// or https:// (http is assumed if omitted). Without a port, http defaults to 3065 and https to 443. Any /m or /v1 in the address is stripped automatically.", "处理方式": "Processing mode", "处理示意": "How it works", "备份中…": "Backing up…", "备份包含账号凭证、网关 Key、GitHub 令牌与云同步凭据的恢复密钥,整个文件受备份密码保护。请分开保管文件与密码;忘记密码无法恢复。": "The backup contains recovery keys for account credentials, gateway keys, GitHub tokens, and cloud sync credentials. The whole file is protected by the backup password. Store the file and password separately; without the password, restoration is impossible.", "备份密码": "Backup password", "备份密码不能超过 1024 字节": "The backup password must not exceed 1024 bytes", "备份密码至少需要 12 位,建议使用较长且不重复的密码": "Use at least 12 characters; a long, unique password is recommended", "备份整库": "Back up database", "备份文件内含全部账号凭证、网关 API Key 与面板管理员凭据,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "The backup file contains every account credential, the gateway API keys, and the panel admin credentials — enough to log in directly. Keep it safe; do not share it or upload it anywhere public.", "备选模型": "Backup model", "复制全部信息": "Copy all info", "复制给客户端": "Copy for your client", "复用相同图片的识读结果": "Reuse readings of identical images", "外观": "Appearance", "外观 · 接入 · 关于": "Appearance · Access · About", "多个客户端标识冲突": "Conflicting client identifiers", "天": "days", "天数": "Days", "失败 {n} 个": "failed: {n}", "失败 {n} 个:{detail}": "Failed: {n}; {detail}", "失败后最多再换几个账号试(填 N = 最多换 N 个,首发那个不算)。换到同一家名下另一个账号、或换到另一家,都各算一次;换满仍失败就返回错误。可填 0–10,0 表示失败立即报错。": "How many more accounts to try on failure (N = switch to at most N accounts; the account that made the first attempt does not count). Switching to another account under the same provider and switching to a different provider each count as one; once the limit is reached and the request still fails, an error is returned. Accepts 0–10; 0 means report the error immediately on failure.", "存储桶(Bucket)": "Bucket", "存储概况已刷新": "Storage overview refreshed", "安全": "Security", "安装到主屏幕": "Add to Home Screen", "安装到桌面": "Install as app", "安装包形态": "Installer kind", "完全相同": "Exact match", "官方原文只有一句:声明自己是 ZCode。": "The official text is a single sentence: a declaration that it is ZCode.", "实际处理:": "What actually happens: ", "客户端 system 原样出站。": "The client's system prompt goes out as-is.", "客户端 system 原样出站(只靠指纹脱敏改写模板句)。": "The client's system prompt goes out as-is (only fingerprint masking rewrites template sentences).", "客户端专用请求头": "Client-specific header", "客户端名称": "Client name", "客户端名称不能为空,最长 80 个字符": "Enter a client name of up to 80 characters", "客户端名称重复或与内置名称冲突": "Client name is duplicated or conflicts with a built-in name", "客户端标识无效或重复": "Invalid or duplicate client identifier", "客户端识别": "Client identification", "客户端识别入口尚未就绪,请刷新页面后重试": "Client identification is not ready. Refresh the page and try again.", "客户端识别设置读取失败": "Failed to load client identification settings", "客户端(Claude Code / Codex 等 CLI)会在 system 提示词里注入几十句固定模板,上游按逐字匹配审核,命中就整单拦截(HTTP 400)。指纹脱敏能改写实测命中过的那几句,但换一个客户端版本就可能冒出新的。这里可以把 system 整段换成网关自己那份:①「透传」= 不动客户端 system(默认,行为与之前完全一致);②「替换」= 删掉客户端所有 system / developer 消息,换成网关的提示词(客户端项目规范随之消失);③「追加」= 在开头连续 system 块之后插入一条网关提示词,既有消息逐字不动(客户端规范与网关提示词并用)。那份提示词有两个来源:提示词文件(留空用内置默认),或直接在界面上编辑正文 —— 编辑过就以那份正文为准(优先于文件),清空则回到文件 / 内置默认。另外,透传 / 追加模式下撞了内容拦截(多半是指纹误报)时,网关会自动换一段最小中性提示词重试一次,并把「降级期」开到次日 00:00 —— 期间所有请求直接带中性提示词出门,不再先撞一次 400;这里能看见并提前解除它。上面几项是**默认值**:想给某个提供商单独配,用下面的「按提供商」加一行(带「网关自带」的家默认就列在那里)—— 不同的上游对这些内容的接受程度不一样。": "Clients (CLI tools such as Claude Code / Codex) inject dozens of fixed template sentences into the system prompt, and the upstream reviews them by word-for-word matching — a hit blocks the whole request (HTTP 400). Fingerprint masking can rewrite the sentences observed to be hit, but a different client version may introduce new ones. Here you can replace the whole system prompt with the gateway's own one: (1) \"Passthrough\" = leave the client's system prompt untouched (the default, identical to the previous behavior); (2) \"Replace\" = delete all client system / developer messages and substitute the gateway's prompt (the client's project instructions disappear with them); (3) \"Append\" = insert one gateway prompt after the leading consecutive system blocks, leaving existing messages word-for-word intact (the client's instructions and the gateway prompt are used together). That prompt has two sources: a prompt file (leave empty for the built-in default), or editing the text right in the UI — an edited text takes precedence (over the file), and clearing it goes back to the file / built-in default. Also, in Passthrough / Append mode, if content blocking is hit (usually a fingerprint false positive), the gateway automatically retries once with a minimal neutral prompt and extends the \"fallback period\" to 00:00 the next day — during that period every request goes out with the neutral prompt directly, with no 400 hit first; you can see it here and clear it early. The items above are **defaults**: to configure a single provider, add a row under \"Per-Provider Configuration\" below (providers with \"Gateway-Provided Prompt\" are listed there by default) — different upstreams tolerate these differently.", "家之间仍按优先级,只有同一家内部轮流用各账号 —— 想优先用某几家、又不愿把某一家的某个账号焊死时用它。": "Providers still follow priority; only accounts within the same provider take turns. For preferring a few providers without pinning any single account.", "家内轮询": "Per-provider rotation", "容器内更新": "In-container update", "密码、文件或密钥校验失败时不会替换主库;替换阶段失败会自动尝试还原,实际结果以上方错误说明为准。": "Password, file, or key validation failures leave the main database unchanged. If replacement fails, restoration is attempted automatically; the error above reports the actual outcome.", "密码加密 · 包含恢复密钥": "Password encrypted · Recovery keys included", "密码至少 8 位": "Password must be at least 8 characters", "对话里内嵌的 base64 大图(截图、照片)既撑大请求体,也拉高按像素折算的上游计费。开启后,网关在转发前把超过阈值的图等比缩到长边上限、重新存成 JPEG —— 只改发给上游的副本,请求日志里保存的仍是你发来的原图。同一张原图在多轮对话里重复出现时复用上一次的压缩结果,不会每轮重算。http 链接图片、GIF 动图、SVG 一律不动;压完反而更大的图也保留原图。只作用在对话场景,生图与图片编辑不受影响。默认开启;不想要的话把开关关掉即可。": "Large base64 images embedded in a conversation (screenshots, photos) both bloat the request body and raise upstream billing, which is computed from pixels. When enabled, the gateway scales images above the threshold down to the long-edge limit and re-encodes them as JPEG before forwarding — only the copy sent upstream is changed; the request log still stores the original you sent. When the same original image reappears across turns, the previous compressed result is reused instead of recomputed. Images referenced by http links, animated GIFs and SVGs are never touched; an image that would grow after re-encoding is kept as-is. Applies to chat only — image generation and editing are unaffected. On by default; turn the switch off if you do not want it.", "导入前会把本机的 account.key 改名备份(account.key.bak-时间戳),不会直接删除。": "The local account.key is renamed to a backup (account.key.bak-) before importing; it is never deleted.", "导入完成:{summary}": "Import complete: {summary}", "导入密钥失败:{message}": "Key import failed: {message}", "导入密钥并继续": "Import key and continue", "导入账号": "Import Accounts", "导出中…": "Exporting…", "导出会把全部账号与自定义提供商定义写入一个 JSON 文件,可以拷到另一台机器上导入后继续使用。导入采用合并策略:同提供商下按业务身份(UID / userId / apiKey 等)去重 —— 已存在的账号只更新凭证,保留本机原有的优先级顺序;新账号追加到转发顺序末尾,不会抢占当前正在使用的账号;自定义提供商定义按 id 合并,本机缺失时自动补建。": "Export writes all accounts and custom provider definitions to a JSON file that can be copied to another machine and imported for continued use. Import merges: within the same provider, accounts are deduplicated by business identity (UID / userId / apiKey, etc.) — existing accounts only get their credentials updated and keep this machine's existing priority order; new accounts are appended to the end of the forwarding order and never displace the account currently in use; custom provider definitions are merged by id and created automatically when missing locally.", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义": "The export file contains credentials such as accessToken / refreshToken / apiKey along with custom provider definitions", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "The export file contains credentials such as accessToken / refreshToken / apiKey along with custom provider definitions, and can be used to sign in directly. Keep it safe; do not share it or upload it to a public location.", "导出账号": "Export Accounts", "将数据库和恢复凭证所需的密钥一起保存为密码加密的 .a2ab 备份,可在 Windows、macOS 或 Linux 上恢复,无需手工复制密钥。恢复时整体替换账号、配置、日志与桌面设置,并使用目标机器的密钥重新加密凭证,不覆盖本机已有钥匙。可取消包含日志以减小文件;旧 .sql 备份仍可导入。恢复前自动保留安全备份,完成后需要重新登录管理面板。": "Save the database and required recovery keys in a password-encrypted .a2ab backup. Restore it on Windows, macOS, or Linux without manually copying keys. Restoration replaces accounts, configuration, logs, and desktop settings, and re-encrypts credentials with the destination keys without overwriting them. Exclude logs to reduce file size. Legacy .sql imports remain supported. A safety backup is created before replacement; sign in again afterward.", "尚未注册管理员。开启「网关 → 网络访问 → 允许其他设备访问网关」时会引导注册,也可以从登录页注册。": "No administrator is registered yet. Enabling Gateway → Network access → Allow other devices to access the gateway guides you through registration. You can also register from the sign-in page.", "尚未注册管理员:管理接口不需要登录。开启「允许局域网访问」时会引导注册,也可以从登录页注册。": "No administrator registered: the management API does not require sign-in. Enabling \"Allow LAN access\" walks you through registration; you can also register from the login page.", "尚未配置视觉分析模型": "No vision analysis model is configured", "局域网开放后,管理接口要求登录。请设置管理员账号与密码,注册完成会直接继续开启流程。": "Once LAN access is on, the admin API requires signing in. Set an admin account and password; registration finishes and the enablement flow continues automatically.", "局域网访问": "LAN Access", "工具用法与环境说明那一大段。": "The long block covering tool usage and environment notes.", "已为「{label}」单独配置提示词": "Prompt configured individually for \"{label}\"", "已作为独立应用运行": "Standalone app", "已使用本机密钥重新加密 {n} 项凭证,原有密钥未被覆盖。": "Re-encrypted {n} credentials with local keys. Existing keys were not overwritten.", "已保存 {count} / {limit} 条报文(超出后丢弃最旧的)。": "{count} / {limit} payloads saved (oldest discarded when the limit is exceeded).", "已保存的值不符合当前插件规则,请修改或恢复默认值。": "The saved value does not meet the current plugin rules. Edit it or restore the default.", "已保存,留空则不修改": "Saved; leave blank to keep unchanged", "已保存,留空沿用": "Saved; leave blank to keep", "已关闭": "Disabled", "已关闭 models.dev 联网刷新": "Online refresh for models.dev turned off", "已关闭。{note}": "Disabled. {note}", "已关闭「{label}」的网关自带提示词:能否通过上游校验取决于上游当前口径": "Turned off the gateway-provided prompt for \"{label}\": whether it passes upstream validation depends on the upstream's current criteria", "已关闭会话图片压缩": "Image compression disabled", "已关闭出站指纹脱敏": "Fingerprint masking disabled", "已关闭开发者角色兼容": "Developer role compatibility disabled", "已关闭第三方模型回答完自动折叠过程": "Collapse third-party model work after the answer disabled", "已关闭网关跨域访问": "Gateway CORS disabled", "已关闭:不额外补阶段标记,由客户端决定过程展示。": "Disabled: no extra phase markers; the client controls how work is displayed.", "已删除分组「{name}」": "Deleted group \"{name}\"", "已取消「{label}」的单独配置": "Individual configuration removed for \"{label}\"", "已取消安装": "Installation cancelled", "已取消导入": "Import canceled", "已取消导出": "Export canceled", "已取消恢复": "Restore canceled", "已启用 {count} 条规则,应用于{scope}。": "{count} rules enabled, applied to {scope}.", "已启用登录": "Sign-in enabled", "已复制全部版本信息": "Copied all version info", "已应用": "Applied", "已开启": "Enabled", "已开启:为正常完成的 Codex 回答补阶段标记。": "Enabled: add phase markers to normally completed Codex replies.", "已开启:其他设备把 API 地址指向 {url}{panel}。": "Enabled: on other devices, point the API address to {url}{panel}.", "已开启:监听 0.0.0.0,允许其他设备访问。": "Enabled: listening on 0.0.0.0 to allow access from other devices.", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "Restored the default groups: Overview / Forwarding / Diagnostics / System", "已截断": "Truncated", "已指定出口": "Pinned egress", "已接管": "Managed", "已改回内置默认提示词": "Reverted to the built-in default prompt", "已新建分组「{name}」,点组头的 + 把菜单移进来": "Created group \"{name}\" — use + on its header to move menus in", "已清掉「{label}」界面编辑的正文": "Cleared the UI-edited text for \"{label}\"", "已清掉界面编辑的提示词(回落文件 / 内置默认)": "Cleared the UI-edited prompt (falls back to the file / built-in default)", "已清除本机保存的 API Key": "Removed the API key stored in this browser", "已生效": "In Effect", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。": "Switched automatically to a minimal neutral prompt (an upstream content block — most likely a system-prompt fingerprint false positive); lifts automatically at {until}.", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "Automatically switched to a minimal neutral prompt (upstream content blocking was hit, most likely a false positive on system fingerprints); it clears automatically at {until}. During this period this mode's own prompt is not sent; once you have fixed the prompt you can clear it immediately.", "已自定义": "Customized", "已运行": "Uptime", "已退出登录": "Signed out", "已隐藏": "Hidden", "巴西葡萄牙语": "Brazilian Portuguese", "希望接入新的提供商或模型": "A new provider or model you would like supported", "库中 schema": "Schema in database", "库主文件的大小(不含运行期间的 WAL 临时文件,退出时已自动并回)。": "Size of the database's main file (excluding WAL temp files created while running, which are merged back in automatically on exit).", "库存目标": "Stock target", "应用提供商": "Apply to providers", "应用版本:{version}": "App version: {version}", "应用状态": "App status", "应用窗口": "App window", "建立上游 TCP/TLS 连接或代理隧道的最大等待时间(秒),默认 30 秒,范围 1~3600。": "Maximum time to establish the upstream TCP/TLS connection or proxy tunnel (seconds). Default 30 seconds, range 1–3600.", "开发构建": "Debug build", "开发者角色兼容": "Developer role compat", "开发者角色兼容设置已刷新": "Developer role compatibility setting refreshed", "开启前需要注册面板管理员,已注册会跳过此步骤。管理接口需要管理员会话或网关 Key;API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。": "A panel administrator must be registered before enabling this; existing administrators skip this step. Management endpoints require an admin session or gateway key. API calls require an enabled gateway key; a default key is created automatically if none is available.", "开启后新发生的请求才会被记录(已经过去的请求补不回来)。报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "Only requests that happen after turning this on are recorded (past ones can't be backfilled). Payloads live in the local database and only the most recent 500 are kept (the oldest are dropped beyond that); the count shows under \"Data → Data storage\" on the left as \"Debug payloads\".", "开启后新发生的请求才会被记录(已经过去的请求补不回来),请求日志的「预览对话」也随之开始保存原始正文。上游报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "Only requests that occur after this is enabled are recorded (past requests cannot be recovered), and the \"Conversation preview\" in request logs also starts saving raw bodies. Upstream payloads are stored in the local database, keeping only the most recent 500 (the oldest are discarded when the limit is exceeded); the count is shown under \"Data → Data Storage\" → \"Debug Payloads\".", "开启后监听所有 IPv4 网卡(0.0.0.0),并不局限于局域网,也不会自动开放到公网;实际访问范围取决于网络与防火墙设置。修改后需要重启应用。": "Enabling this listens on all IPv4 interfaces (0.0.0.0), not just the LAN, but does not automatically expose the gateway to the internet. Actual access depends on your network and firewall settings. Changes require an app restart.", "开启后网关将监听所有 IPv4 网卡(0.0.0.0),访问范围不再限于本机,也不局限于局域网。是否能从公网访问取决于网络与防火墙设置。": "The gateway will listen on all IPv4 interfaces (0.0.0.0). Access is no longer limited to this machine or to the LAN. Public internet access depends on your network and firewall settings.", "开启后网关将监听所有网卡,同一局域网内的设备即可把 API 地址指向本机 IP 一起使用;管理接口从此要求管理员会话或网关 Key,转发接口在没有一把启用的 Key 时也会拒绝服务(届时会自动创建一把名为「默认」的 Key)。": "Once enabled, the gateway listens on all network interfaces, and devices on the same LAN can point the API address at this machine's IP to share it; the admin API then requires an admin session or a gateway key, and the forwarding API refuses service when no key is enabled (a key named \"Default\" is created automatically at that point).", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 套餐池(Start Plan)」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "When enabled, closing the window does not just hide it — the entire UI window is destroyed: the six resident WebView2 processes (about 200 MB of memory) exit, while gateway forwarding, scheduled check-ins and balance queries keep running in the background process, unaffected; click the tray icon to reopen the UI when needed (WebView cold start takes about 1 second). Note: while the UI is destroyed, CAPTCHA tokens for the ZCode \"Plan pool (Start Plan)\" channel are minted by the UI and cannot be replenished — requests on that channel land in the request log as 503 (with the reason), and reopening the UI restores minting automatically. This switch only matters when \"Minimize to tray on close\" is enabled; minimizing the window is unaffected.", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 活动套餐」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "Once enabled, closing the window does not merely hide it — the UI window is destroyed entirely: WebView2's six resident processes (about 200MB of memory) exit with it, while gateway forwarding, scheduled check-ins, and balance queries keep running in the background process, unaffected; to get the UI back, click the tray icon (a cold WebView start takes about 1 second). Note: while the UI is destroyed, the verification-code tokens for the \"ZCode activity plan\" channel are minted by the UI and cannot be replenished — requests going through that channel land in the request logs as 503 (with the reason stated), and reopening the UI restores them automatically. This switch only matters when \"Minimize to tray when the window is closed\" is on; minimizing the window is unaffected.", "开启后,关闭窗口会销毁界面并释放 WebView 进程,网关转发、定时签到、余额查询仍在后台继续。ZCode 模型请求免验证时不受影响;上游要求人机验证时,需要重新打开界面,在账号的「套餐明细」中主动完成验证。此开关只在「关闭窗口时最小化到托盘」开启时有意义。": "When enabled, closing the window destroys the interface and releases WebView processes. Forwarding, scheduled check-ins and balance queries continue in the background. ZCode requests exempt from verification are unaffected. If verification is required, reopen the interface and complete it in the account’s Plan details. This setting applies only when closing minimizes the app to the tray.", "开启后,新发生的请求会保存上游调试报文与下游正文,历史请求无法补录。上游调试报文只保留最近 500 条;两侧条数可在「数据 → 数据存储」查看。关闭开关不会删除已保存的报文,可在请求日志中选择「仅清空报文原文」一起清理。": "New requests save upstream debug payloads and downstream bodies after this is enabled; past requests cannot be backfilled. Only the most recent 500 upstream debug payloads are kept. Counts for both sides are shown under Data → Data storage. Turning this off does not delete saved payloads; choose Clear raw payloads only in request logs to clear both sides together.", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。": "Once enabled, the sign-in page completes verification in the browser in the background (imperceptible to a real person), while every scripted attempt must first solve a challenge — brute-forcing and mass registration become significantly more expensive. This only affects panel sign-in / registration, not the API keys used by API clients.", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。桌面端与网页端各自独立:桌面端主要服务本机与局域网,网页端(Docker / 服务端)直接暴露在网络上的登录页风险更高,建议保持开启。": "When on, the login page solves the challenge in the background (invisible to humans) while every scripted attempt must compute one first — brute force and account squatting become far more expensive. It only affects panel sign-in / registration, not API keys used by clients. Desktop and web are independent: the desktop page mostly serves this machine and the LAN, while the web page (Docker / server) is exposed to the network and benefits more from staying on.", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "When on, the gateway stores every forward's **request to the upstream** (headers + body) and the **upstream response** (status code + headers + body) locally in full, for the \"Details\" view on the request logs page. Credential fields in request headers — Authorization, Cookie, API Key, and the like — are always replaced with [redacted] and never hit the disk in plain text; request and response bodies are stored as-is (they may contain your conversations). Only the most recent 500 payloads are kept; the oldest are dropped beyond that. This is a temporary troubleshooting switch — keep it off when you don't need it.", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看;请求日志详情的「预览对话」也依赖本开关 —— 它保存的是客户端发来的请求体与网关下发的响应体(两侧各截断到 128 KiB),不开这个开关时预览对话没有数据可看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。上游报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "Once enabled, the gateway saves every forward's **request to the upstream** (request headers + request body) and **the upstream's response** (status code + response headers + response body) in full locally, for viewing under \"Details\" on the request logs page; the \"Conversation preview\" in request details also depends on this switch — it saves the client's request body and the gateway's response body (each truncated to 128 KiB), and with the switch off there is no data to preview. Credential fields in request headers such as Authorization, Cookie, and API Key are always replaced with [redacted] and never written to disk in plain text; request and response bodies are saved as-is (they may contain your conversation content). Only the most recent 500 upstream payloads are kept; older ones are discarded. This is a temporary switch for troubleshooting — turn it off when you no longer need it.", "开启后,能连接到网关的设备可通过浏览器访问网页管理面板,需使用管理员账号登录。访问范围与网关相同,并不局限于局域网。": "Devices that can reach the gateway will be able to open the web management panel in a browser and sign in with an administrator account. Its access scope is the same as the gateway's and is not limited to the LAN.", "开启后,调用方可以用专用请求头声明已登记的客户端名称。这不是身份认证,只用于日志和统计,不会获得额外权限。": "When enabled, callers can declare a registered client name using the dedicated header. This is not authentication: it only affects logs and statistics and grants no additional permissions.", "开启局域网访问": "Enable LAN Access", "开启来源声明": "Enable origin declarations", "开启网络访问": "Enable network access", "开放后,局域网内其他设备的浏览器打开本机 IP 即可进入管理面板(需管理员账号登录)。": "Once enabled, other devices on the LAN can open this machine's IP in a browser to reach the admin panel (signing in with an admin account is required).", "开机自动启动": "Launch at startup", "开源许可": "Open-source license", "开(最多 {n} 轮)": "On (up to {n} rounds)", "归属客户端": "Assigned client", "当前三段都是官方原文。": "All three blocks are currently the official text.", "当前不可用": "Currently unavailable", "当前后端不支持词表编辑与提供商范围,请更新后端后重试。": "This backend does not support editable rules or provider scope. Update the backend and try again.", "当前固定为浅色模式,不随系统变化。": "Currently fixed to Light mode; it does not follow the system.", "当前固定为深色模式,不随系统变化。": "Currently fixed to Dark mode; it does not follow the system.", "当前密码": "Current password", "当前已改过:{edited}。": "Edited so far: {edited}.", "当前形态": "Running as", "当前按 100% 显示(默认比例)。": "Currently displayed at 100% (the default).", "当前按 k / M 缩写显示(如 1.20M / 8.4k)。": "Currently shown with k / M abbreviations (e.g. 1.20M / 8.4k).", "当前按 {n}% 显示。": "Currently displayed at {n}%.", "当前按「万 / 亿」式本地量级词显示(如 1.2亿 / 8400万)。": "Currently shown with 万 / 亿-style local magnitude words (e.g. 1.2亿 / 8400万).", "当前是透传模式:存下来也不会发出,切成「替换 / 追加」之后才生效。": "Currently in Passthrough mode: saving it will not send it; it takes effect only after switching to \"Replace / Append\".", "当前显示为「1.20M / 8.4k / 1.2B」这类英文缩写。": "Currently shown with k / M / B abbreviations (e.g. 1.20M / 8.4k / 1.2B).", "当前显示为「1.2亿 / 8400万」这类中文量级。": "Currently shown as \"1.2亿 / 8400万\"-style Chinese magnitudes.", "当前样本结果:{name}": "Current sample result: {name}", "当前正在使用": "Currently in use", "当前浏览器以管理员身份登录着本面板。「退出登录」会撤销这台设备的登录会话(30 天内的自动续期一并失效),需要重新输入账号密码;其他已登录的设备不受影响。": "This browser is currently signed in to the panel as an administrator. \"Sign Out\" revokes this device's session (automatic renewals within 30 days are voided too) and the account and password must be entered again; other signed-in devices are unaffected.", "当前版本不支持品牌设置": "This version does not support brand settings", "当前环境不支持局域网访问设置": "This environment does not support LAN access settings", "当前环境不支持整库备份": "Full-database backup is not available in this environment", "当前环境不支持整库备份(仅桌面端可用)": "Full-database backup is not available here (desktop only)", "当前环境不支持整库恢复": "Full-database restore is not available in this environment", "当前环境不支持整库恢复(仅桌面端可用)": "Full-database restore is not available here (desktop only)", "当前环境不支持网络访问设置": "Network access settings are not supported in this environment", "当前环境不支持读取版本信息(桥接方法缺失)": "This environment cannot read version info (bridge method missing)", "当前生效值:{value}": "Effective value: {value}", "当前生效的正文来自{source}{file}。保存后这一份会盖过提示词文件与内置默认{note}。": "The active text comes from {source}{file}. Once saved, this copy overrides the prompt file and the built-in default{note}.", "当前界面": "Current interface", "当前管理员:{name}": "Signed in as: {name}", "当前设置已保存": "Current settings are saved", "当前跟随操作系统的深浅色设置,系统切换时界面会自动跟上。": "Currently following the operating system's light / dark setting; the UI follows along automatically when the system switches.", "当前路由内的可用视觉模型": "Available vision models in the current route", "待迁移旧数据": "Legacy data pending migration", "待配置": "Not configured", "忘记密码时无法在界面里找回:需要停掉程序后,从数据库删除管理员记录(kv 表的 panelAdmin 键),重启后按首次使用重新注册。具体命令与各形态的库文件路径见 docs 目录下的「重置管理员」文档。": "If you forget the password it cannot be recovered in the UI: stop the program, delete the administrator record from the database (the panelAdmin key in the kv table), then restart and register again as on first use. Commands and the database path for each deployment form are in the \"Reset administrator\" document under docs.", "思考等级、图片能力未知、等待上限": "Reasoning level, unknown image capability, wait limit", "恢复中…": "Restoring…", "恢复失败:{message}": "Restore failed: {message}", "恢复官方原文": "Restore Official Text", "恢复插件默认值": "Restore plugin default", "恢复整库": "Restore database", "恢复整库备份": "Restore full backup", "恢复默认": "Restore Defaults", "恢复默认 Logo": "Restore default logo", "恢复默认侧边栏": "Restore default sidebar", "恢复默认品牌": "Restore default brand", "恢复默认词表": "Restore default rules", "想回到原来那份,把这里清空再保存即可(不会删掉你配的文件路径)。": "To go back to the previous one, clear this and save (the file path you configured is not deleted).", "想要的新功能或改进想法": "A new feature or improvement you would like to see", "所有未单独配置的提供商都用这一份": "Used by every provider that is not configured individually", "所有菜单都已在这一组": "Every menu is already in this group", "手机端可管理所连接网关的账号、签到与插件,并使用提供商声明的动态登录入口;其余既有添加入口、编辑凭证和改写客户端配置仍需桌面面板。": "The mobile app manages accounts, check-in and plugins on the connected gateway and supports sign-in through providers’ declared dynamic methods. Other existing add-account entry points, credential editing and client configuration changes still require the desktop panel.", "托管网页界面": "Serves web UI", "把地址里的 your-server 与 USERNAME 换成你自己的;目录不存在时会自动创建。": "Replace your-server and USERNAME in the URL with your own; the directory is created automatically if missing.", "把整份数据库(账号、网关配置、事件日志、请求统计、调试报文与桌面设置)导出成一个 SQL 文件,恢复时整体替换本机全部数据 —— 与上面「账号导入 / 导出」的逐条合并是两种语义:恢复会连配置、日志与当前启用状态一起换成备份那台机器的状态。导出默认包含日志与调试报文(文件可能很大),不需要时可以取消勾选只备业务数据。恢复前会自动把当前数据备份到配置目录的 backups/ 下,恢复后需要重新登录管理面板。": "Exports the entire database (accounts, gateway config, event logs, request stats, debug payloads, desktop settings) into one SQL file; restoring wholesale-replaces all local data. This is a different semantic from the \"Account import / export\" above, which merges item by item: a restore swaps config, logs, and enabled states to whatever the backup machine had. The export includes logs and debug payloads by default (the file can be large); uncheck to back up business data only. Before a restore, the current data is automatically backed up to backups/ under the config directory, and you will need to log in to the panel again afterwards.", "把整次请求交给视觉模型,由它直接回答,不再回到原模型。": "The whole request goes to the vision model, which answers directly instead of the original model.", "把菜单移入 {name}": "Move a menu into {name}", "把菜单移入「{name}」": "Move a menu into \"{name}\"", "把账号、网关配置、自定义提供商、Agent 配置、代理池 / 订阅、签到与余额记录同步到 WebDAV 或 S3 兼容存储,换台机器后一键取回。事件日志、请求明细、调试报文与面板登录态不在同步范围内(它们是本机的运行痕迹)。上传的账号凭证仍是加密形态,解密用的账号密钥由「同步密码」单独加密后一并上传 —— 同步密码不会保存到云端,换机下载时需要重新输入。": "Sync accounts, gateway configuration, custom providers, Agent profiles, proxy pool / subscriptions, and check-in and balance records to WebDAV or S3-compatible storage, then pull them back on another machine in one click. Event logs, request details, debug payloads and panel login state are out of scope (they are this machine's runtime traces). Uploaded account credentials stay encrypted; the account key that decrypts them is itself encrypted with the sync password and uploaded alongside — the sync password is never stored in the cloud, so you must re-enter it when restoring on another machine.", "把路径里的主目录显示成 ~,截图分享时不暴露用户名": "Shows the home directory in paths as ~ so screenshots do not reveal your username", "把路径里的主目录(如 C:\\Users\\你的用户名)显示成 ~,截图分享时不暴露用户名。只影响本页显示与复制,不改任何文件。": "Shows the home directory in paths (e.g. C:\\Users\\your-name) as ~ so screenshots do not reveal your username. Only affects this page and its copied text; no files are changed.", "报表天数": "Report Days", "报表页的热力图与按天趋势,默认 99999 天(近似全量保留),可填 1–99999 天。": "The heatmap and daily trends on the Reports page. Defaults to 99999 days (about 274 years — kept in full for practical purposes); range 1–99999 days.", "拖动分组 {name}": "Drag group {name}", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "Drag the ⠿ handle to reorder (menus can move across groups); use the switches to show or hide; click a group name to rename it; the + on a group header moves another menu into it; the eye button hides a whole group. Changes apply instantly and are remembered — the sidebar on the left is the result. Keyboard: focus a handle and press Alt+↑ / ↓.", "拖动菜单 {name}": "Drag menu {name}", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "Drag to reorder groups (Alt+↑ / ↓ also works)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "Drag to reorder, across groups too (Alt+↑ / ↓ also works)", "指定备选仍受当前请求权限和路由范围限制,路由组请求不会跳到组外。不会转为辅助识图继续。": "Designated fallbacks remain subject to the current permissions and route scope. Route-group requests never leave the group. This mode never falls back to assisted image reading.", "指定提供商": "Selected providers", "指定角色": "Selected roles", "指定错误码直接换号": "Switch Accounts on Specified Error Codes", "指纹脱敏": "Fingerprint sanitizing", "指纹脱敏会在转发前按词表顺序改写请求消息中的文本,包括对话内容、思考内容和工具调用参数。默认词表包含客户端模板句与计费表头的精确替换、正则删除规则,可以新增、编辑、删除、启停和调整顺序;替换内容留空表示删除匹配内容。默认应用全部提供商,也可指定多家。改动只作用于发给上游的副本,响应内容不变。编辑后点击「保存设置」,下一次请求生效;清空词表表示不做任何指纹改写,恢复默认只重置词表。": "Before forwarding, fingerprint masking applies rules in list order to message text, including conversation content, reasoning content and tool-call arguments. The default rules contain exact replacements and regular-expression deletions for client templates and billing headers. You can add, edit, delete, enable, disable and reorder rules; an empty replacement deletes the matched text. All providers are selected by default, or you can select specific providers. Only the outbound copy is modified; responses are unchanged. Click Save settings to apply changes to the next request. An empty rule list performs no fingerprint rewriting, and restoring defaults resets only the rules.", "指纹脱敏设置仅本次运行生效,写入数据库失败,请检查配置目录": "Fingerprint masking settings apply only to this run. Database writing failed; check the configuration directory.", "指纹脱敏设置已刷新": "Fingerprint masking settings refreshed", "按下面两块设置处理图片;关闭后设置全部保留。": "Images are handled by the two blocks below; turning this off keeps all of the settings.", "按列表自上而下匹配,位于来源声明之后、内置规则之前;可用于给难认的标识钉规则。": "Matched top-down in list order, after caller declarations and before builtin rules; use it to pin hard-to-recognize clients.", "按原文精确匹配,区分大小写;不会自动去掉首尾空白。": "Matches the exact text, case-sensitively. Leading and trailing whitespace is preserved.", "按天聚合保留天数": "Daily aggregate retention (days)", "按指定备选顺序尝试": "Try designated fallbacks in order", "按提供商查看和调整专属选项": "View and adjust provider-specific options", "按提供商筛选设置": "Filter settings by provider", "按提供商管理专属选项,作用于当前网关中该提供商的所有账号。": "Manage provider-specific options. Changes apply to all accounts for that provider on the current gateway.", "按提供商配置": "Per-Provider Configuration", "按每条请求的软件标识识别客户端,不依赖 API Key。规则修改只影响新请求,内置规则随软件更新,自定义规则参与备份与云同步。": "Identify each request by its software identifiers, independently of API keys. Rule changes affect new requests only. Built-in rules update with the app; custom rules are included in backups and cloud sync.", "换一台服务器": "Switch server", "排队等待": "Queueing", "排队等待次数": "Queue Wait Count", "排队等待秒数": "Queue Wait Seconds", "排队等待设置已刷新": "Queueing settings refreshed", "接入": "Access", "接受调用方来源声明": "Accept caller origin declarations", "接管回答的模型": "Model that takes over the answer", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "Choose which menus the sidebar shows, in what order, and how they are grouped. Hiding only affects navigation — it does not revoke access, and hidden pages can still be opened by URL.", "控制报表与请求日志里 Token 读数的写法:开启后按「万 / 亿」式的本地量级词显示(简体为万 / 亿,繁体为萬 / 億,日文为万 / 億,韩文为만 / 억),关闭则用 k / M 缩写(与上游文档、接口字段的写法一致)。英文 / 葡语的本地量级词就是 k / M,这项对它们没有区别。只影响显示口径,不改变任何统计与存储的数值。": "Controls how Token counts are written in reports and request logs: when on, values are shown with 万 / 亿-style local magnitude words (万 / 亿 in Simplified Chinese, 萬 / 億 in Traditional Chinese, 万 / 億 in Japanese, 만 / 억 in Korean); when off, k / M abbreviations are used (matching how upstream docs and API fields write them). For English / Portuguese the local magnitude words are k / M, so this makes no difference to them. This only affects how values are displayed; no statistics or stored numbers change.", "控制报表与请求日志里 Token 读数的写法:开启后按中文量级显示(1.2亿 / 8400万),关闭则用 k / M / B 缩写(与上游文档、接口字段的写法一致)。这只影响显示口径,不改变任何统计与存储的数值。": "Controls how token counts read in reports and request logs: on shows Chinese magnitudes (1.2亿 / 8400万), off uses k / M / B abbreviations (consistent with upstream docs and API fields). This only changes the display; no statistics or stored numbers are affected.", "控制界面的深浅色,与左侧边栏底部的三个主题按钮是同一个设置(改哪一处,另一处立刻跟上)。「跟随系统」会随操作系统当前的浅色 / 深色自动切换,并在系统主题变化时即时跟上;选「浅色」或「深色」则把界面固定在该模式,不再随系统变化。窗口标题栏的深浅色会一并同步,不会出现深色界面配一条浅色标题栏的情况。": "Controls the UI's light / dark colors; it is the same setting as the three theme buttons at the bottom of the left sidebar (change either one and the other follows immediately). \"System\" switches automatically with the operating system's current light / dark setting and follows changes as they happen; choosing \"Light\" or \"Dark\" pins the UI to that mode regardless of the system. The window title bar's light / dark color stays in sync too, so you never end up with a dark UI under a light title bar.", "提供商与模型": "Provider and model", "提供商专属设置": "Provider-specific settings", "提供商当前不可用,未保存的修改已保留;恢复插件后可继续编辑。": "The provider is unavailable. Unsaved edits are kept; restore the plugin to continue editing.", "提供商设置已保存": "Provider settings saved", "提供商设置返回格式无效,请刷新后重试": "The provider settings response is invalid. Refresh and try again.", "提建议": "Make a Suggestion", "提示词文件": "Prompt File", "提示词文件已更新": "Prompt file updated", "提示词正文": "Prompt Text", "提示词正文已更新": "Prompt text updated", "插件或设置已变化,请放弃修改并刷新后重新编辑。": "The plugin or settings changed. Discard your edits and refresh before editing again.", "操作系统": "Operating system", "支持 .a2ab 加密备份和旧 .sql 文件;旧 SQL 不包含恢复密钥,跨机器导入仍需原机密钥。": "Supports encrypted .a2ab backups and legacy .sql files. Legacy SQL does not include recovery keys, so another machine still needs the original keys.", "支持 PNG、JPG、WebP,最大 2 MiB、4096 × 4096 像素;自动缩小至 512 像素以内,建议使用正方形图片。": "Supports PNG, JPG and WebP up to 2 MiB and 4096 × 4096 pixels. Images are resized to fit within 512 pixels. Square images are recommended.", "改动仍保存在本机,修复网络或凭据后下一次改动会自动重试,也可以手动点「上传到云端」。": "Your changes are still saved locally. After fixing the network or credentials, the next change retries automatically, or click \"Upload to cloud\" manually.", "改动仍保存在本机,系统会延长等待并自动重试;修复网络或凭据后,也可以手动点「上传到云端」。": "Your changes remain saved locally. The system will retry automatically with a longer delay. After fixing the network or credentials, you can also select \"Upload to cloud\" manually.", "改完立即生效,不用重启(下一个请求就用新模式)。降级是自动的临时状态,解除后本模式自己的提示词立刻恢复。": "Takes effect immediately after the change, no restart needed (the next request uses the new mode). The fallback is an automatic temporary state; once cleared, this mode's own prompt is restored immediately.", "放大或缩小整个界面(文字与控件一起变),效果与浏览器 Ctrl +/- 相同:共 11 档,立即生效并记住。": "Zoom the whole interface in or out (text and controls scale together), equivalent to Ctrl +/- in a browser: 11 steps, applied immediately and remembered.", "放弃修改并刷新": "Discard edits and refresh", "数据": "Data", "数据保留": "Data Retention", "数据保留设置已刷新": "Data retention settings refreshed", "数据存储": "Data Storage", "数据库 schema": "Database schema", "数据库不可用": "Database unavailable", "数据库与恢复密钥一起加密保存。密码不会保存在应用或备份中,忘记后无法恢复,请妥善保管。": "The database and recovery keys are encrypted together. The password is not stored in the application or backup. Keep it safe: without it, restoration is impossible.", "数据库主文件与 WAL 文件的总占用,与请求日志清理弹窗采用同一口径;清理后可压缩数据库回收空闲空间。": "Total size of the database main file and WAL file, using the same calculation as the request cleanup dialog. After clearing data, vacuum the database to reclaim unused space.", "数据库文件": "Database file", "数据目录": "Data directory", "数据统一保存在配置目录下的 agent2api.db;如需更换位置,请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "Data is kept in agent2api.db in the configuration directory; to change the location, set the AGENT2API_PROXY_HOME environment variable and restart the app.", "整体替换": "wholesale-replaced", "整库备份 / 恢复": "Full-database backup / restore", "整次请求交给 {model} 直接回答,不再回到原模型。": "The whole request goes to {model}, which answers directly instead of the original model.", "新分组名": "New group name", "新增 {added} 个、更新 {updated} 个{suffix}{note}": "{added} added, {updated} updated{suffix}{note}", "新增脱敏规则": "Add masking rule", "新增规则": "Add rule", "新安装和升级后默认关闭。先配置再开启,关闭后保留配置。": "Off by default for new installations and upgrades. Configure before enabling; disabling keeps your settings.", "新密码": "New password", "新密码不能与当前密码相同": "New password must differ from the current one", "新密码至少 8 位": "Password must be at least 8 characters", "新建分组": "New group", "新建客户端分类": "New client category", "无效或重复的标识请求头:{headers}": "Invalid or duplicate identity headers: {headers}", "无法读取品牌设置": "Could not read brand settings", "无法读取图片,请重新选择": "Could not read the image. Select it again.", "日志与请求日志同时受保留天数和数量上限限制。日志默认 30 天、10000 条,各级别按比例保留;调试详情最多保留 3 天。请求日志默认 99999 天、1000000 条(100 万),超出后从最旧的记录开始清理,并同步删除对应原始正文。按天聚合默认 99999 天,只按天数保留,不受请求日志数量清理影响。天数可填 1–99999,数量可填 1–100000000。调小任一设置并确认后立即清理,且不可恢复。": "Logs and request logs are limited by both retention days and record count. Logs default to 30 days and 10,000 records, with capacity allocated proportionally by level; debug details are kept for at most 3 days. Request logs default to 99999 days and 1,000,000 records; excess records are removed oldest first together with their raw bodies. Daily aggregates default to 99999 days and are limited only by days; request log count cleanup does not affect them. Days accept 1–99999 and counts accept 1–100000000. Lowering any setting and confirming immediately removes excess data, which cannot be recovered.", "日志保留数量上限": "Log record limit", "日志文件": "Log file", "日语": "Japanese", "显示 {name}": "Show {name}", "显示分组 {name}": "Show group {name}", "显示名称": "Display name", "显示名称最多 64 个字符": "The display name can contain up to 64 characters", "显示模式": "Theme", "显示这一组": "Show this group", "暂无可编辑的提供商设置": "No editable provider settings", "暂无自定义规则,正在使用内置识别。也可以从请求详情直接添加规则。": "No custom rules; built-in identification is active. You can also add a rule from request details.", "暂未获取到本机访问地址,请使用其他设备能连接到的本机 IP 与网关端口。": "The local access address is not available yet. Use this machine's IP and gateway port that the other device can reach.", "更新": "Update", "更新出网线路": "Update egress route", "更新通道": "Update channel", "替换": "Replace", "替换 = 客户端 system / developer 消息全部删掉,换成网关的提示词;追加 = 保留客户端内容,只在开头 system 块之后多插一条。两者都只改发给上游的副本,客户端看到的响应不变。": "Replace = delete all client system / developer messages and substitute the gateway's prompt; Append = keep the client's content and just insert one extra prompt after the leading system blocks. Both only change the copy sent upstream; the response the client sees is unchanged.", "替换为网关提示词": "Replace with gateway prompt", "替换内容": "Replacement text", "替换内容最多 {max} 个字符": "Replacement text must not exceed {max} characters", "替换前会自动把当前数据备份到配置目录的 backups/ 文件夹。": "Before the replace, the current data is automatically backed up to the backups/ folder under the config directory.", "替换并恢复": "Replace and restore", "最多 64 个字符,留空恢复为 Agent2API。": "Up to 64 characters. Leave blank to restore Agent2API.", "最小自动上传间隔": "Minimum automatic upload interval", "最近 {window} 条请求中,{scanned} 条有识别依据,{matched} 条符合条件,{applied} 条会采用本规则。": "Of the latest {window} requests, {scanned} have evidence, {matched} match, and {applied} would use this rule.", "有未保存的修改": "There are unsaved changes", "有未保存的改动:保存后才能同步(测试连接不受影响)。": "Unsaved changes: save first to sync (testing the connection is unaffected).", "有近期套餐池请求时读取库存状态的间隔,默认 2500 毫秒,可填 1000–30000。没有近期请求时降低读取频率,轮询不会发起验证码。": "Stock polling interval while Start Plan requests are recent: 2500 ms by default, from 1000 to 30000. Polling slows down when idle and never triggers verification.", "服务商": "Provider", "服务器地址": "Server URL", "服务端密钥加密保存,不会返回浏览器;切回 ALTCHA 后会保留,方便再次启用。": "The secret key is stored encrypted and never returned to the browser. It is kept when switching back to ALTCHA so you can enable Turnstile again later.", "服务端密钥(Secret Key)": "Secret Key", "期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "While this mode is on, its own prompt is not sent; lift it as soon as your prompt is fixed.", "未保存": "Unsaved", "未匹配已知客户端": "No known client matched", "未单独配置:模式、提示词文件与正文都跟随上面的全局配置(当前「{mode}」)。": "Not configured individually: mode, prompt file, and text all follow the global configuration above (currently \"{mode}\").", "未启用": "Disabled", "未开启轻量模式:关窗仅隐藏窗口,界面进程常驻内存,随时打开不等待": "Lightweight mode off: closing the window only hides it, the UI process stays in memory, and it opens instantly", "未开启,developer 角色消息会原样发往上游,不认识该角色的上游会报错(400)。": "Off: developer-role messages are sent upstream as-is; upstreams that do not know the role return an error (400).", "未开启,客户端 system 模板会原样发往上游,可能被内容审核误拦(400)。": "Off: client system templates go upstream as-is and may be falsely blocked by content review (400).", "未开启,浏览器跨域无法直连网关。": "Off: browsers cannot reach the gateway cross-origin.", "未开启,转发时不保存任何原始报文。": "Off: no raw payloads are saved while forwarding.", "未开启:网关只监听 127.0.0.1,仅本机可以访问。": "Off: the gateway listens only on 127.0.0.1 and is reachable only from this machine.", "未注册": "Not registered", "未注册闸门": "Unregistered gate", "未知原因": "Unknown reason", "未知来源": "Unknown source", "未知设备": "Unknown device", "未知账号": "Unknown account", "未能读取 Cline 伪装头设置,请稍后重试": "Could not read the Cline spoofed header settings. Please try again later.", "未能读取 models.dev 元数据状态,请稍后重试": "Could not read the models.dev metadata state. Please try again later.", "未能读取云同步设置,请稍后重试。": "Could not read cloud sync settings. Please try again later.", "未能读取保存后的指纹脱敏设置": "Could not read the saved fingerprint masking settings", "未能读取开发者角色兼容设置,请稍后重试": "Could not read the developer role compatibility setting, please try again later", "未能读取指纹脱敏设置,请稍后重试": "Could not read the fingerprint masking settings. Please try again later.", "未能读取机器人校验设置": "Could not read bot verification settings", "未能读取第三方模型回答完自动折叠过程设置,请稍后重试": "Could not read the third-party reasoning collapse setting, please try again later", "未能读取系统提示词设置,请稍后重试": "Could not read the system prompt settings. Please try again later.", "未能读取网关跨域访问设置,请稍后重试": "Could not read the gateway CORS settings. Please try again later.", "未能读取网络访问设置,请稍后重试": "Could not load network access settings. Please try again later.", "未能读取调试模式设置,请稍后重试": "Could not read the debug mode settings. Please try again later.", "未能读取账户信息,请稍后重试": "Could not read account information, please try again later", "未采用本规则,请检查开关、来源声明或规则顺序": "This rule was not used. Check its switch, caller declarations, or rule order.", "本地账号、配置、签到与余额记录变化后自动上传(合并 1 秒内的连续改动,最长 10 秒传一次;内容没变时不发请求)。": "Automatically upload after local account, configuration, check-in and balance record changes (changes within 1 second are merged, at most one upload every 10 seconds; no request is sent when nothing changed).", "本机 API 地址": "This device's API address", "本机 APK 版本": "Local APK version", "本机全部数据会被备份整体替换,恢复前自动保留安全备份,完成后需要重新登录管理面板。本机已有密钥不会被覆盖。": "All local database data will be replaced. A safety backup is saved first, and you must sign in again afterward. Existing local keys will not be overwritten.", "本机应用版本": "Local app version", "本机界面版本": "Local UI version", "本机的业务数据(账号、配置、Agent 配置、代理池 / 订阅、签到与余额记录)将上传并": "This machine's business data (accounts, configuration, Agent profiles, proxy pool / subscriptions, check-in and balance records) will be uploaded and", "本机的全部数据(账号、网关配置、日志统计与桌面设置)将被所选备份文件": "All data on this machine (accounts, gateway config, log stats, and desktop settings) will be ", "本机的账号、网关配置、Agent 配置、代理池 / 订阅、签到与余额记录将被远端快照": "This machine's accounts, gateway configuration, Agent profiles, proxy pool / subscriptions, and check-in and balance records will be replaced by the remote snapshot", "本次无需刷新": "No refresh needed this time", "本软件不提供任何担保,可按 AGPL-3.0 修改与分发;通过网络提供修改版服务时须向用户提供对应源码。": "This software comes without warranty and may be modified and distributed under AGPL-3.0. Modified network services must offer their Corresponding Source to users.", "本项目的 AGPL-3.0 许可不替代这些第三方许可。名称与标识的商标权归各自权利人所有。": "This project's AGPL-3.0 license does not replace these third-party licenses. Trademark rights in names and logos belong to their respective owners.", "机器人校验": "Captcha", "机器人校验设置已保存": "Bot verification settings saved", "条数": "Record count", "来源声明当前关闭,这条规则不会生效。请先在客户端识别设置中开启。": "Caller declarations are disabled, so this rule will not apply. Enable them in client identification settings first.", "来源声明无效或未登记,本次已忽略。": "The origin declaration was invalid or unregistered and was ignored.", "来源声明未启用,本次已忽略。": "Origin declarations are disabled and were ignored.", "来源版本": "Source revision", "来源设备:{device}": "Source device: {device}", "来自 {device},生成于 {time}": "From {device}, created at {time}", "架构": "Architecture", "查看内置客户端({n})": "View built-in clients ({n})", "查询管理员状态失败:{message}": "Failed to check admin status: {message}", "校验身份:这三段必须各自成块排在最前(实测:三段并成一段会被回 405 / 3012)。因此这里按段编辑,不能合成一段。改过的段以你的文本为准,没改的段继续用官方原文;清空某一段 = 那一段恢复官方原文。": "for identity: the three blocks must each be a separate block placed at the very top (measured: merging the three into one returns 405 / 3012). So they are edited per block here; they cannot be merged into one. Edited blocks use your text; unedited blocks keep the official text; clearing a block reverts that block to the official text.", "桌面端": "Desktop app", "桌面端登录 / 注册验证": "Desktop sign-in / registration verification", "桌面端:登录 / 注册需要 ALTCHA 人机验证": "Desktop: sign-in / registration requires ALTCHA proof-of-work", "桌面端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "Desktop: sign-in / registration requires ALTCHA proof-of-work (in use now)", "桌面运行时不可用,暂时无法保存": "Desktop runtime unavailable; cannot save right now", "档案": "Profile", "检测中…": "Checking…", "概览": "Overview", "模型不能直接看图时,按你选择的方式处理。原生支持图片的请求直接转发,不增加识图调用。": "When a model cannot read images, use your selected mode. Native image-capable requests pass through without an extra vision call.", "模型单独配置": "Per-model overrides", "模型目录没写明是否支持图片时按这里处理。": "Used when the model catalog does not say whether images are supported.", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。下面两块分别选好「哪些模型」和「用哪只模型」即可;没配到的模型、以及本来就能看图的模型,一律原样放行。这里的改动立即生效,不需要保存。": "A model that cannot read images has only two options: let another model read the image for it, or hand the whole request to a model that can. Choose the models and the vision model in the two blocks below. Anything not covered here — including models that already read images — passes through untouched. Changes here take effect immediately; there is nothing to save.", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。没配到的模型、以及本来就能看图的模型,一律原样放行;每个请求只用其中一种方式,不会两种串着做,处理失败也不会改走另一种。改动立即生效,不需要保存。": "A model that cannot read images has only two options: let another model read the image for it, or hand the whole request to a model that can. Anything not covered here — including models that already read images — passes through untouched. Each request uses exactly one of the two ways; they are never chained, and a failure does not fall back to the other. Changes take effect immediately; there is nothing to save.", "模型请求是否需要验证码由 ZCode 上游配置决定,领取验证与模型请求免验证分别处理。后台只检查配置和库存,不自动运行验证码或弹出拼图;需要验证时,在账号的「套餐明细」中点击「开始验证」。验证令牌一次性使用,短时间内过期,失败或取消后不会自动重试。": "ZCode upstream settings determine whether model requests need verification, independently of plan claims. The background only checks settings and stock; it never runs verification or opens a puzzle automatically. Start required verification in the account’s Plan details. Tokens are single-use, expire shortly, and are not retried automatically after failure or cancellation.", "模式": "Mode", "模式改为「{mode}」": "Mode changed to \"{mode}\"", "次": "times", "次日 00:00": "00:00 the next day", "正则表达式": "Regular expression", "正在保存上游原始报文:": "Saving raw upstream payloads:", "正在修改…": "Changing…", "正在剥离出站请求里的审核指纹:表头键值整段删除,模板句最小改写。": "Stripping review fingerprints from outbound requests: header key/value pairs are deleted entirely, and template sentences get minimal rewrites.", "正在安装…": "Installing…", "正在应答跨源请求:浏览器跨域请求可直连 /v1/*。": "Answering cross-origin requests: browsers can reach /v1/* directly cross-origin.", "正在归一角色:developer 角色消息转发前改写为 system。": "Normalizing roles: developer-role messages are rewritten to system before forwarding.", "正在注册…": "Registering…", "正在联网更新": "Updating online", "正在读取提供商设置…": "Loading provider settings…", "正式版": "Stable", "每个请求只会用到其中一种方式,不会两种串着做;处理失败也不会改走另一种。配了哪只视觉模型,那次请求的图片就会交给它。": "Each request uses exactly one of the two ways; they are never chained and a failure does not fall back to the other. Whichever vision model is configured is the one that receives the images for that request.", "每条请求轮换到下一个可用账号;新会话交给当前最闲的那位。适合想把手里的号摊开用、不让某一个一直扛。": "Rotates to the next usable account on every request; a new session goes to whoever is least busy. For spreading usage across accounts instead of letting one carry everything.", "每条请求都重新按策略选路 —— 行为与「关闭」一致,仅保留会话识别的记录。": "Every request is routed by strategy from scratch — same behavior as \"Off\", only the session records are kept.", "每次等待的时长,默认 0 = 跟随上游建议(实测 9~30 秒,上游没给建议时用 15 秒)。可填 0–120 秒强制一个固定时长。": "Duration of each wait. Default 0 = follow the upstream's suggestion (measured 9–30 seconds; 15 seconds when the upstream gives none). Accepts 0–120 seconds to force a fixed duration.", "每行一个域名,不填协议、端口或路径;与 Cloudflare 中的配置一致,服务端按完整域名匹配。手机 App 使用所连接网关的域名。": "Enter one hostname per line, without a scheme, port or path. Match your Cloudflare configuration; the server requires an exact hostname match. The mobile app uses the connected gateway's hostname.", "毫秒": "ms", "沟通方式 / 上下文管理 + Environment 段。": "The communication style / context management + Environment block.", "没有可导出的账号": "No accounts to export", "没有可用视觉模型时": "When no vision model is available", "没有已确认支持图片的模型,请先在模型管理中确认。": "No model is confirmed to support images. Confirm its capability in Model Management first.", "没能读到「{label}」的当前值,改为 {count} 条可能会删除超出的历史数据。": "Could not read the current value of \"{label}\". Setting it to {count} records may delete excess historical data.", "没能读到「{label}」的当前值,改为 {days} 天可能会删除超出的历史数据。": "Could not read the current value of \"{label}\"; changing it to {days} days may delete excess historical data.", "沿用对应方式的视觉模型配置,不额外维护一份模型列表。": "Reuse the vision configuration for that mode; no separate model list is needed.", "沿用工具服务的视觉分析模型": "Reuse the tool service's vision analysis model", "沿用工具服务的视觉分析模型(未配置)": "Vision model from the tool service (not configured)", "注册并开启": "Register & Enable", "注册管理员账号": "Register Admin Account", "注意:这一家的「网关自带」开关现在是关的,改过的正文要等开关打开才生效。": "Note: this provider's \"Gateway-Provided Prompt\" switch is currently off; edited text takes effect only after the switch is turned on.", "流式响应相邻数据之间允许的最大空闲时间(秒),收到新数据后重新计时,默认 300 秒,范围 1~3600。": "Maximum idle time allowed between adjacent chunks of a streaming response (seconds); the timer restarts on each new chunk. Default 300 seconds, range 1–3600.", "流式响应空闲超时": "Stream Idle Timeout", "测试连接": "Test connection", "浏览器 / PWA": "Browser / PWA", "浏览器只在 https 或 localhost 下提供离线缓存;局域网 http 访问不影响正常使用": "Browsers only offer offline caching over https or localhost. Accessing over plain http on the LAN still works normally.", "浏览器在本地完成计算,不需要第三方密钥,也不依赖外部验证服务。": "The browser performs the computation locally. No third-party keys or external verification service are required.", "浏览器标签页": "Browser tab", "浏览器面板": "Browser panel", "消息角色": "Message roles", "添加备选模型": "Add fallback model", "添加提供商": "Add Provider", "添加提供商…": "Add provider…", "添加自定义头": "Add Custom Header", "添加要单独配置的提供商": "Add a provider to configure individually", "清除本机凭证": "Clear local credentials", "清除这里的正文": "Clear Text Here", "源代码": "Source code", "点下面的入口会用系统默认浏览器打开 GitHub 的对应表单(需要 GitHub 账号,模板已预设好,填完直接提交即可)。": "The entries below open the matching GitHub form in your system's default browser (a GitHub account is required; the template is preset, so just fill it in and submit).", "点击重命名": "Click to rename", "点此添加或切换服务器": "Tap to add or switch servers", "点此添加服务器": "Tap to add a server", "版本": "Version", "版本信息": "Version info", "版本信息 · 所连网关环境": "Version info · connected gateway", "版权声明": "Copyright notice", "状态码 {code} 已在名单里": "Status code {code} is already in the list", "状态码必须是 {min}–{max} 的整数(收到: {text})": "Status code must be an integer from {min} to {max} (received: {text})", "环境": "Environment", "生成时间:{time}": "Created at: {time}", "生效顺序:有效的来源声明优先,然后按顺序匹配自定义规则,最后使用内置规则。中转丢失原始标识时,无法自动推断背后的软件。": "Priority: valid origin declaration, custom rules in order, then built-in rules. If a relay removes the original identifier, the original software cannot be inferred automatically.", "用 models.dev 补齐上游没声明的模型能力与思考档位(联网刷新,内嵌快照始终生效)": "Fill in model capabilities and reasoning levels the upstream never declares, using models.dev (refreshed online; the bundled snapshot always applies)", "用于加密上云的账号密钥。请自己记牢 —— 它不保存到云端,换机下载时必须输入同一个密码,否则账号数据无法解密。": "Used to encrypt the account key that goes to the cloud. Remember it — it is not stored in the cloud, and you must enter the same password when restoring on another machine, otherwise the account data cannot be decrypted.", "用哪只模型识图": "Which model reads the image", "用浏览器菜单里的「添加到主屏幕」把这一页装成 App:全屏打开、没有地址栏,和原生应用一样。": "Use \"Add to Home Screen\" in the browser menu to install this page as an app: full screen, no address bar, just like a native app.", "由 Cloudflare 提供验证,需要浏览器与网关均能连接 Cloudflare。验证失败或服务不可用时不会自动放行。": "Verification is provided by Cloudflare. Both the browser and gateway must be able to reach Cloudflare. Failed verification or an unavailable service will not allow access.", "由 {source} 覆盖,手动设置暂不生效": "Overridden by {source}; the manual setting is not currently active", "界面缩放": "Interface Zoom", "界面缩放比例": "Interface Zoom Level", "界面语言": "Interface Language", "界面语言。可选简体中文、繁體中文、English、日本語、한국어、Português (Brasil),或「跟随系统」(按浏览器 / 系统的语言列表自动选)。切换后整页立即刷新;该偏好只存在本机(localStorage),不影响账号、密钥与转发。": "Interface language. Choices: 简体中文, 繁體中文, English, 日本語, 한국어, Português (Brasil), or System (picked automatically from the browser / system language list). Switching reloads the whole page immediately; the preference is stored only on this machine (localStorage) and does not affect accounts, keys, or forwarding.", "界面语言只保存在本机(localStorage)。切换后整页立即刷新,不影响账号、密钥与转发。": "The interface language is stored only on this machine (localStorage). Switching reloads the whole page immediately and does not affect accounts, keys, or forwarding.", "界面里编辑的正文": "the text edited in the UI", "留空 = 用内置默认提示词": "Leave empty = use the built-in default prompt", "留空使用 AWS 官方地址": "Leave blank to use the official AWS address", "留空使用默认": "Leave blank to use the default", "留空表示删除匹配内容;替换内容按原文写入,$ 不作为捕获组引用。": "Leave empty to delete matched text. Replacement text is inserted literally; $ is not a capture-group reference.", "登录 / 注册需要通过 ALTCHA 人机验证(工作量证明)": "Require ALTCHA human verification (proof of work) for sign-in / registration", "登录 / 账号切换 / 429 切换等系统事件,可填 1–99999 天。": "System events such as sign-ins, account switches, and 429 switches. Range: 1–99999 days.", "登录 Agent2API": "Sign in to Agent2API", "登录 {name}": "Sign in to {name}", "登录人机验证": "Login CAPTCHA", "百分比类读数(如 OpenCode Go、Antigravity)不能相加,组头显示的是组内最低剩余比例。": "Percentage readings (such as OpenCode Go or Antigravity) cannot be summed; the band shows the group's lowest remaining percentage.", "监听地址": "Listen address", "目前展示仓库已登记的图标来源许可,不代表完整的第三方依赖清单。": "This list contains the icon source licenses currently recorded in the repository, not a complete inventory of third-party dependencies.", "目标路径:{path}": "Target path: {path}", "直接按上面的设置兼容": "Apply the settings above right away", "直接按当前方式兼容": "Apply the selected mode directly", "知道了": "Got it", "确定": "Confirm", "确定后加入当前草稿,点击「保存设置」才会生效。": "Confirm adds the rule to the draft. Click Save settings to apply it.", "确定继续?": " Continue?", "确认上传": "Confirm upload", "确认图片处理授权": "Confirm image processing consent", "确认备份密码": "Confirm backup password", "确认并保存": "Confirm and save", "确认新密码": "Confirm new password", "确认缩减数据保留": "Confirm reduced data retention", "确认缩短保留天数": "Confirm Shorter Retention", "社区与支持": "Community & support", "离线缓存未启用": "Offline cache is off", "积分合计只统计当前筛选出来的账号": "Only sum accounts visible under the current filter", "移入「{name}」": "Move into \"{name}\"", "程序路径": "Executable path", "空 = 不要这一份,回落提示词文件 / 内置默认提示词。": "Empty = do not keep this copy; falls back to the prompt file / built-in default prompt.", "空分组 · 点组头的 + 把菜单移进来": "Empty group · use + on the header to move menus in", "立即解除": "Clear Now", "站点密钥(Site Key)": "Site Key", "第一段": "Block 1", "第一段(身份句)": "Block 1 (identity sentence)", "第三方应用密码": "App-specific password", "第三方开源许可": "Third-party open-source licenses", "第三方模型回答完自动折叠过程": "Collapse third-party model work after the answer", "第三方模型回答完自动折叠过程设置已刷新": "Third-party reasoning collapse setting refreshed", "第三段": "Block 3", "第三段(动态段)": "Block 3 (dynamic block)", "第二段": "Block 2", "第二段(稳定段)": "Block 2 (stable block)", "等待响应超时": "Response Headers Timeout", "等待期间请求日志的状态列会显示「排队中」阶段,详情弹窗的「内部重试」里能逐次看到等待时长;等待用尽后返回 HTTP 503(不是 401/429:既不会刷新凭证,也不会把账号标成限额)。": "While waiting, the status column in the request logs shows a \"Queueing\" phase, and the \"Internal Retries\" section of the detail dialog lists each wait duration; when the waits run out, HTTP 503 is returned (not 401/429: credentials are not refreshed and the account is not marked as rate-limited).", "等比放大或缩小整个界面(文字、控件、间距一起变),效果与浏览器按 Ctrl +/- 相同:80%–130%、5% 一档。窗口本身不缩放,变的是页面内容的显示比例,设置立即生效并记住,下次启动直接按这个比例打开。放得越大可视范围越小,窗口较窄或表格较宽时不建议调得太大。": "Zoom the whole interface proportionally (text, controls, and spacing scale together), equivalent to Ctrl +/- in a browser: 80%–130% in 5% steps. The window itself does not resize — what changes is the page content's display scale; the setting applies immediately and is remembered, so the next launch opens at this scale. The larger the scale, the less you can see at once; with a narrow window or wide tables, do not set it too high.", "简体中文": "Simplified Chinese", "管理员已注册": "Admin registered", "管理员账号": "Administrator account", "管理插件": "Manage plugins", "精确文本": "Exact text", "系统提示词模式": "System Prompt Mode", "系统提示词设置已刷新": "System prompt settings refreshed", "累计请求": "Total requests", "繁体中文": "Traditional Chinese", "约 {n} 字符": "approx. {n} characters", "结构": "structure ", "给 Codex 的响应补阶段标记,回答完后像官方模型一样把推理与命令过程折叠起来": "Add phase markers to Codex responses so reasoning and commands collapse after the answer, like official models", "继续并清理": "Continue & Clean Up", "编辑提示词正文 · {label}": "Edit Prompt Text · {label}", "编辑提示词正文 · 全局": "Edit Prompt Text · Global", "编辑正文": "Edit Text", "编辑网关自带提示词 · {label}": "Edit Gateway-Provided Prompt · {label}", "编辑脱敏规则": "Edit masking rule", "编辑识别规则": "Edit identification rule", "缩放后重新存成 JPEG 时用的质量。默认 80,可填 40–95;数值越小体积越小、画质越差。": "JPEG quality used when re-encoding the scaled image. Default 80, range 40-95; lower means a smaller file and lower quality.", "缩放比例": "Zoom Level", "网关": "Gateway", "网关 Key 数量": "Gateway key count", "网关尚未就绪": "The gateway is not ready yet", "网关自带": "Gateway-Provided Prompt", "网关跨域访问已开启": "Gateway CORS enabled", "网关跨域访问设置已刷新": "Gateway CORS settings refreshed", "网关跨域访问(CORS)": "Gateway CORS", "网关面(/v1/*)默认不应答浏览器跨源请求:页面直连会被预检拦下,只报「无法连接 API」。注意来源是 * —— 未配「网关 Key」时任何网页都能借本机网关打上游,故默认关闭;只给自己用的话,让页面与网关同源(本地反代 /v1)更稳妥。面板接口(/api/*)不受影响。": "The gateway endpoints (/v1/*) do not answer browser cross-origin requests by default: a page connecting directly is stopped by the preflight and only reports \"cannot connect to the API\". Note that the allowed origin is * — with no gateway key configured, any web page could use this machine's gateway to hit upstreams, which is why the default is off; if you only use it yourself, serving the page from the same origin as the gateway (a local reverse proxy for /v1) is safer. The panel API (/api/*) is unaffected.", "网络访问": "Network access", "网页端": "Web", "网页端登录 / 注册验证": "Web sign-in / registration verification", "网页端的界面缩放由浏览器自己控制(Ctrl + / Ctrl -,或浏览器菜单里的缩放),此项不可调。": "In the web build, interface zoom is controlled by the browser itself (Ctrl + / Ctrl -, or the zoom entry in the browser menu); this setting is not adjustable.", "网页端:登录 / 注册需要 ALTCHA 人机验证": "Web: sign-in / registration requires ALTCHA proof-of-work", "网页端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "Web: sign-in / registration requires ALTCHA proof-of-work (in use now)", "网页管理地址": "Web management address", "群晖 NAS": "Synology NAS", "群晖需在「控制面板 → 应用程序门户 → WebDAV」里启用服务,端口默认 5005(HTTP)/ 5006(HTTPS)。": "On Synology, enable the service under Control Panel → Application Portal → WebDAV; the default ports are 5005 (HTTP) / 5006 (HTTPS).", "脱敏词表": "Masking rules", "腾讯云 COS": "Tencent Cloud COS", "自动同步": "Auto sync", "自动同步上次失败": "Last auto sync failed", "自动续写": "Auto continuation", "自定义 User-Agent": "Custom User-Agent", "自定义 · {name}": "Custom · {name}", "自定义头匹配规则": "Custom header rules", "自定义客户端分类": "Custom client categories", "自定义客户端数量已达上限": "Custom client limit reached", "自定义提供商 {id}": "Custom provider {id}", "自定义网站和应用界面中显示的名称与 Logo。": "Customize the name and logo displayed on the website and in the application.", "自定义识别规则": "Custom identification rules", "自愈保护": "Self-healing guards", "至少 12 位": "At least 12 characters", "至少 8 位,换机下载时需要": "At least 8 characters; needed when restoring on another machine", "至少要保留一个分组": "At least one group must remain", "英语": "English", "范围 5–120 秒,并受原请求时限约束。": "Range 5–120 seconds, also bounded by the original request timeout.", "范围为 5–120 秒,并受原请求时限约束。图片过大、格式错误或下载失败不会被当作模型不支持图片。": "Allowed range: 5–120 seconds, also limited by the original request timeout. Oversized images, invalid formats and download failures are not treated as missing image support.", "被更高优先级覆盖": "Overridden by higher priority", "装上{size}的官方身份提示词": "Install the official identity prompt ({size})", "装成 App 后从桌面图标直接进入:全屏打开、没有地址栏。": "Installed as an app it opens straight from the home screen icon: full screen, no address bar.", "覆盖": "overwrite", "规则 / 匹配方式": "Rule / match type", "规则可以增删改、启停和调整顺序;替换内容留空表示删除匹配内容。恢复默认只重置词表,不改开关和提供商范围。": "Add, edit, delete, enable, disable and reorder rules. An empty replacement deletes matched text. Restoring defaults resets only the rules, not the switch or provider scope.", "规则名称": "Rule name", "规则名称不能为空,且最多 {max} 个字符": "The rule name is required and must not exceed {max} characters", "规则已保存,对后续请求生效;当前历史记录未修改。": "Rule saved for future requests. This historical record was not changed.", "规则忽略大小写,只影响新请求的日志与统计,不改变模型选择或权限。": "Rules ignore case and affect only logs and statistics for new requests, not model selection or permissions.", "规则编号:{id}": "Rule ID: {id}", "视觉模型": "Vision model", "视觉模型先识读图片,再由原模型分析和回答。": "A vision model reads the images first, then the original model analyzes and answers.", "视觉模型来源": "Vision model source", "视觉模型的思考等级": "Reasoning level of the vision model", "视觉模型直接回答": "The vision model answers directly", "视觉模型识读图片": "The vision model reads the images", "解码后小于这个体积的图片保持原样。默认 512KB,可填 0–10240;填 0 表示所有内嵌图片都过一遍。": "Images smaller than this size after decoding are kept as-is. Default 512KB, range 0-10240; 0 processes every inline image.", "解除失败:{message}": "Failed to clear the fallback: {message}", "触发阈值": "Trigger threshold", "计数": "Counts", "计量单位": "Number notation", "让 Codex 在收到最终答案后收起中间过程。仅为严格识别的 Codex Responses 请求补阶段标记,报表归类和来源声明不影响此判断。正常结束且没有工具调用的非空回答才补 final_answer,工具调用前的说明补 commentary;错误、截断、缺少结束信号或未知结束原因不补最终答案标记。默认关闭,不改变回答文字,也不减少模型思考或用量。": "Let Codex collapse intermediate work after the final answer. Phase markers are added only to strictly identified Codex Responses requests, independently of report categories and client declarations. Only non-empty, normally completed replies without tool calls receive final_answer; text before tool calls receives commentary. Errors, truncation, missing completion signals and unknown finish reasons never receive a final-answer marker. Off by default; answer text, model reasoning and usage are unchanged.", "许可原文": "Original license text", "许可原文已随软件内置,无需联网即可查看;打开项目来源链接需要联网。": "License texts are bundled with the app and available offline. Opening project source links requires an internet connection.", "许可核对版本": "Revision used to verify the license", "设置不可隐藏(隐藏了只能清缓存找回来)": "\"Settings\" cannot be hidden (you would have to clear storage to get it back)", "设置备份密码": "Set backup password", "设置识别规则": "Set identification rule", "访问时请使用目标设备能连接到的地址;这里显示的本机地址不代表公网可达。": "Use an address reachable from the connecting device. The local address shown here does not imply public internet reachability.", "识别依据": "Identification evidence", "识别规则数量已达上限": "Identification rule limit reached", "词表为空,不会改写任何指纹。可以新增规则或恢复默认词表。": "The rule list is empty; no fingerprints will be rewritten. Add a rule or restore the defaults.", "该提供商暂无可编辑的专属设置": "This provider has no editable settings", "详细日志": "Verbose logs", "语言设置": "Language Settings", "请先保存设置再同步": "Save the settings before syncing", "请先在 Cloudflare 创建 Turnstile 组件,建议选择 Managed 模式,并添加面板实际使用的域名。": "Create a Turnstile widget in Cloudflare first. Managed mode is recommended. Add the actual domain names used to access the panel.", "请填一个分组名": "Please enter a group name", "请填写管理员账号(64 字符以内)": "Enter an admin account (up to 64 characters)", "请求发出后等待上游响应头的最大时间(秒),默认 300 秒,范围 1~3600。": "Maximum time to wait for the upstream's response headers after the request is sent (seconds). Default 300 seconds, range 1–3600.", "请求带有不同软件的标识,未自动归类;可用自定义规则明确归属。": "The request contains identifiers for different applications and was not classified automatically. Use a custom rule to assign it.", "请求提供商 / 模型支持": "Provider / Model Support Request", "请求日志保留天数": "Request log retention (days)", "请求日志保留数量上限": "Request log record limit", "请求记录": "Request Records", "请求超时": "Request Timeouts", "请求转发到上游失败时(服务器瞬时错误、连接失败,以及 WorkBuddy 的 11-128 敏感词拦截),网关会等一段间隔后再发一次。次数分两档,管的是两件事:①「同一账号重试次数」在同一账号上原地重发几次 —— 一般是提示词被上游拦截、或链路瞬时抖动,等一会儿重发往往就好了;②「切换账号重试次数」这份请求最多再换几个账号试 —— 首发的那个账号不算,每换一个扣一次,不分是不是同一家(换到同一家的下一个账号也算一次),换满还失败就把错误返回给客户端。两项都设为 0 表示失败不重试、直接报错。注意账号级限额(429)不占这里的换号次数 —— 那类失败走「冷却该账号并换下一个账号」的降级,与这里的重试是两条路。另有「指定错误码直接换号」名单(默认 402):命中名单的上游状态码不在同一账号重发,直接按队列换下一个账号继续试(换号也占「切换账号重试次数」),换满仍失败才把错误返回给客户端。": "When forwarding a request to an upstream fails (transient server errors, connection failures, and WorkBuddy's 11-128 sensitive-word blocking), the gateway waits for an interval and sends it once more. The counts come in two tiers covering two different things: (1) \"Same-Account Retries\" resends in place on the same account a few times — usually the prompt was blocked by the upstream or the link flickered, and resending after a wait tends to succeed; (2) \"Account-Switch Retries\" is how many more accounts this request may try — the account that sent it first does not count, each switch costs one, regardless of whether it is the same provider (switching to the next account of the same provider also counts), and when the switches are exhausted and it still fails, the error is returned to the client. Setting both to 0 means no retries on failure — error out immediately. Note that account-level throttling (429) does not consume these account switches — that kind of failure goes through the \"cool down the account and move to the next one\" fallback, a separate path from the retries here. There is also the \"Switch Accounts on Specified Error Codes\" list (default 402): upstream status codes on the list are not retried on the same account; the gateway switches to the next account in the queue and keeps trying (the switch also consumes an \"Account-Switch Retries\" slot), and only when those are exhausted is the error returned to the client.", "请求重试": "Request Retries", "请至少选择一个提供商": "Select at least one provider", "请输入同步密码": "Enter the sync password", "请输入当前密码": "Please enter your current password", "请输入服务端密钥": "Enter the secret key", "请选择可用的标识请求头": "Select an available identity header", "请选择归属客户端": "Select the client to assign", "读取云同步设置失败:{message}": "Failed to read cloud sync settings: {message}", "读取失败:{message}": "Failed to read: {message}", "读取完整非流式响应体允许的最大时间(秒),默认 300 秒,范围 1~3600。": "Maximum time allowed to read a complete non-streaming response body (seconds). Default 300 seconds, range 1–3600.", "读取网关信息失败:{message}": "Failed to read gateway info: {message}", "读取远端…": "Reading remote…", "读取远端信息失败:{message}": "Failed to read remote info: {message}", "调用方声明": "Caller declaration", "调试报文": "Debug Payloads", "调试模式": "Debug mode", "调试模式设置已刷新": "Debug mode settings refreshed", "负载均衡": "Load balancing", "账号列表": "Account list", "账号导入 / 导出": "Account Import / Export", "账号路由": "Account routing", "账号页表格的两项显示偏好,只存在本机(localStorage),不影响账号数据与转发。「积分合计只统计当前筛选出来的账号」:账号页每一家的分组带右侧有一枚「可用合计」,默认按整组求和 —— 不受筛选、搜索影响,被筛掉的账号也计入(余额是资产,禁用也只表示不参与转发,额度仍在账上)。打开这一项后改为只累加当前可见的行:例如筛出 1 个 100 积分的账号,合计就是 100,而不是同组两个账号之和 1,000。分页不参与这个口径 —— 翻页看的是同一份结果的不同屏,合计不随页码变化。「隐藏账号名」与表头「账号」旁边那颗眼睛是同一个开关:打开后账号列的名字整体显示成星号,适合截图分享时遮挡账号。": "Two display preferences for the accounts table. They are stored only on this machine (localStorage) and never affect account data or forwarding. \"Only sum accounts visible under the current filter\": each provider band on the accounts page shows a \"Total available\" badge, and by default it sums the whole group — filtering and search do not change it, and accounts filtered out still count (balance is an asset; disabling an account only keeps it out of forwarding, the credit stays). Turn this on to add up only the rows currently visible: filter down to one account with 100 credits and the total reads 100, not 1,000 (the sum of two accounts in that group). Paging does not take part in this rule — pages are just different screens of the same result, so the total does not change as you flip pages. \"Hide account names\" is the same switch as the eye next to the \"Account\" column header: when on, names in the account column are shown as asterisks, handy for screenshots.", "账户": "Account", "超出的历史数据会被立即删除,且不可恢复。": "Excess historical data will be deleted immediately and cannot be recovered.", "超时": "Timeout", "超时设置已刷新": "Timeout settings refreshed", "跟随模型配置": "Follow model settings", "跟随系统 · 浅色 · 深色": "System · Light · Dark", "跟随默认": "Follow Default", "跨域访问": "CORS", "路由": "Routing", "路由组只使用组内成员;普通路由只使用参与范围内的账号和模型。": "Route groups use only their members. Ordinary routes use only accounts and models within their participation scope.", "路由设置已刷新": "Routing settings refreshed", "跳过 {n} 个": "skipped: {n}", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;负载均衡是每条请求换下一位,把负载摊到各个账号上。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时)、被 429 的账号垫底排到队尾 30 分钟、余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 前两层可以在下面按需开关,限制器由账号的「限制器」设置管。": "How accounts are picked when forwarding a request: ① \"Routing strategy\" sets the queueing rule — Strict order means position 1 takes every request until it can't answer (rate-limited / failing / out of quota) before the next one steps in; Load balancing rotates to the next account on every request, spreading the load across accounts. ② \"Session stickiness\" keeps the same session (same model + same opening messages) on one account wherever possible — multi-turn conversations reuse the upstream context cache, fewer account switches, less waste; Auto sticks for 5 minutes, In-session for 6 hours, Per turn and Off don't stick. The queue position (first column of the accounts table) is the foundation under every strategy; strategies are layered on top of it. Routing also has three self-healing guards: accounts that fail to forward back off for a while (starting at 15 minutes, doubling per failure, capped at 1 hour), accounts 429'd despite having quota go to the back of the queue for 30 minutes, and accounts out of quota or over their per-period token cap are held by the limiter — the first two can be toggled below as needed; the limiter is governed by each account's \"Limiter\" settings.", "转发前压缩对话里内嵌的大图(只改发给上游的副本,生图与图片编辑不受影响)": "Compress large inline images in conversations before forwarding (only the copy sent upstream changes; image generation and editing are unaffected)", "转发前将 developer 角色消息转换为 system,兼容不支持 developer 角色的 OpenAI 兼容上游": "Convert developer-role messages to system before forwarding, for OpenAI-compatible upstreams that do not support the developer role", "转发失败的账号休息一会儿再回来:15 分钟起步,连续失败翻倍,封顶 1 小时;成功一次立即恢复。目的是「让这次失败先凉一会儿」,免得一条条地反复撞同一个坏账号。": "An account that fails to forward rests for a while before coming back: starting at 15 minutes, doubling per consecutive failure, capped at 1 hour; one success restores it immediately. The point is to let a failure cool off instead of hammering the same bad account request after request.", "转发链路": "Forwarding", "轮询间隔": "Poll interval", "软件标识超过 1 KB,已截断保存;匹配仅使用保留部分。": "The software identifier exceeded 1 KB and was truncated. Matching uses only the retained portion.", "软件版本": "Software version", "轻量模式": "Lightweight mode", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 套餐池(Start Plan)通道不可用,相关请求会在请求日志里注明原因": "Lightweight mode is on: closing the window destroys the UI process (freeing about 200 MB of memory) while the gateway continues in the background; while the UI is destroyed, the ZCode plan-pool (Start Plan) channel is unavailable and affected requests will note the reason in the request log", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 活动套餐通道不可用,相关请求会在请求日志里注明原因": "Lightweight mode on: closing the window destroys the UI process (freeing about 200MB of memory) while the gateway keeps running in the background; while the UI is destroyed, the ZCode activity-plan channel is unavailable, and affected requests are noted in the request logs with the reason", "轻量模式(关窗释放界面内存)": "Lightweight mode (releases UI memory when the window is closed)", "辅助识图": "Assisted image reading", "辅助识图 · 原模型回答": "Assisted reading · Original model answers", "辅助识图保留原模型回答;切换视觉模型会让视觉模型直接回答。本次授权也包含已设置的模型单独配置。": "Assisted reading keeps the original answering model; switching lets the vision model answer directly. This consent also covers your per-model overrides.", "辅助识图或切换视觉模型,默认关闭": "Assisted reading or vision model switching, off by default", "辅助识图配置": "Assisted image reading settings", "输入同步密码": "Enter sync password", "输入当前登录用的密码": "Enter your current password", "输入状态码,回车添加": "Enter a status code and press Enter", "运行形态": "Deployment", "近期没有命中样本,不代表未来请求不会命中。": "No recent samples matched; future requests may still match.", "还原": "Revert", "还有额度时被 429 的账号排到队尾,30 分钟后自动回到队列(成功转发一次也会立即回来)。它标记的是「疑似共享池被别人抢」,不是「这个账号本身有问题」。⚠️ 注意它与路由策略的配合:在「家内轮询」下,队尾意味着这一家整体被往后排 —— 如果某个提供商的账号被批量限流,它们会集体沉到队尾,那个家可能长时间轮不到。这时可以关掉本项,让 429 过的账号只受冷却约束(冷却到点自动回来)。": "An account with quota left that gets 429'd goes to the back of the queue and returns automatically after 30 minutes (one successful forward also brings it right back). This marks \"the shared pool is probably being drained by someone else\", not \"this account is broken\". ⚠️ Mind the interplay with the routing strategy: under \"Per-provider rotation\", the back of the queue means the whole provider gets pushed back — if one provider's accounts are rate-limited en masse, they all sink to the back and that provider may not be reached for a long time. Turn this off in that case, so 429'd accounts are only bound by cooldown (they come back automatically when it expires).", "还没有可用的视觉模型。": "No vision model is available yet.", "还没有同步过。": "Not synced yet.", "还没有添加服务器。点右上角「添加」,填入网关所在机器的 IP 或域名与端口。": "No servers yet. Tap \"Add\" at the top right and enter the IP or domain and port of the machine running the gateway.", "还没有装载任何数据。": "No data loaded yet.", "还没有读到版本信息": "Version info has not been loaded yet", "还没有选择模型,这块设置暂时不起作用。": "No models selected yet, so this block does nothing for now.", "这一份就是「替换 / 追加」模式下网关要发的 system 正文。": "This is the system text the gateway sends in Replace / Append mode.", "这一项已隐藏": "This item is hidden", "这一项正在显示": "This item is visible", "这些模型的请求交给当前路由内可用的视觉模型回答,不再回到原模型。": "Requests from these models are answered by an available vision model in the current route instead of the original model.", "这些模型看到图片时,先把图片交给 {model} 读一遍,再由它们自己结合读到的内容回答。": "When these models see an image, {model} reads it first, and they answer using what was read.", "这些模型看到图片时,先把图片交给「沿用工具服务的视觉分析模型」读一遍,再由它们自己结合读到的内容回答。": "When these models see an image, the vision model from the tool service reads it first, and they answer using what was read.", "这只模型只负责看图,最终仍由原模型回答。": "This model only reads the image; the original model still answers.", "这只模型直接接收图片与对话,完成本次回答。": "This model receives the images and the conversation and produces this answer itself.", "这台网关未启用机器人校验": "This gateway does not require bot verification", "这台网关没有管理员,用一把已启用的 API Key 访问。": "This gateway has no admin account. Access it with an enabled API key.", "这条历史请求没有保存识别依据,不能据此自动创建规则。": "This historical request has no saved identification evidence, so it cannot be used to create a rule automatically.", "这条规则已被删除,请关闭编辑后重新添加。": "This rule was deleted. Close the editor and add it again.", "这里只列出已保存的提供商配置;未配置的提供商沿用全局设置,可从下拉框手动添加。用户保存的模式、文件和正文优先于全局设置,「跟随默认」只取消该提供商的模式、文件和正文覆盖。ZCode 套餐池默认由插件按三块装配,客户端系统正文合入第三块,不会自动创建替换规则;手动修改的网关提示词段或关闭开关仍以用户配置为准,能否被接受取决于上游规则。": "Only saved provider settings are listed here. Unconfigured providers follow the global settings and can be added manually from the dropdown. Saved modes, files and prompt text override the global settings; Follow Default removes only that provider's mode, file and text overrides. For ZCode's Start Plan, the plugin assembles three blocks by default and merges the client's system text into the third, without creating a replacement rule. Manually edited gateway prompt blocks and a disabled assembly switch still take precedence; acceptance depends on the upstream rules.", "进程 PID": "Process PID", "远程根目录": "Remote root directory", "远端同一路径下的旧快照。事件日志、请求明细与调试报文不会上传。": "the old snapshot at the same remote path. Event logs, request details and debug payloads are not uploaded.", "远端已有一份快照,将被覆盖": "A snapshot already exists on the remote and will be overwritten", "远端快照使用了另一把账号密钥,但没有携带密钥文件,无法在本机解密。请在原来那台机器上重新上传一次。": "The remote snapshot uses a different account key but does not include the key file, so it cannot be decrypted here. Re-upload once from the original machine.", "远端快照使用的账号密钥与本机不同。请输入上传那台机器设置的同步密码,用它解出密钥装到本机后再继续下载。": "The remote snapshot uses a different account key than this machine. Enter the sync password set on the uploading machine to decrypt the key and install it here, then continue the download.", "远端数据与当前版本不兼容": "Remote data is incompatible with this version", "远端该路径下还没有快照,本次是首次上传。": "No snapshot exists at that remote path yet; this is the first upload.", "远端路径:{path}": "Remote path: {path}", "远端还没有可下载的同步数据": "No sync data available to download on the remote", "连不上这台网关。确认地址与端口正确、网关已启动,且已开启「局域网访问」;用 https 时还要确认证书有效": "Cannot reach this gateway. Check the address and port, that the gateway is running, and that \"LAN access\" is enabled; for https also check that the certificate is valid.", "连不上这台网关。请确认地址、端口与防火墙设置,网关需已启动;桌面端请在「设置 → 网关 → 网络访问」开启「允许其他设备访问网关」。使用 HTTPS 时还需确认证书有效。": "Cannot reach this gateway. Check the address, port, and firewall settings, and make sure the gateway is running. For the desktop app, enable Allow other devices to access the gateway under Settings → Gateway → Network access. For HTTPS, also check that the certificate is valid.", "连接中超时": "Connect Timeout", "连接失败:{message}": "Connection failed: {message}", "连续失败到阈值后把这个账号整个打开(默认关)。与失败退避的分工:退避管「单次失败先凉一会儿」,惩罚轻、自动恢复;熔断管「这个账号现在整体不对劲,别再一条条地试」,要连续成功若干次才关。打开期间该账号被跳过,除非全场只剩它 —— 那时仍放行试一次。": "Trips this account off entirely after consecutive failures reach a threshold (off by default). Division of labor with failure backoff: backoff means \"let a single failure cool off\" — light penalty, automatic recovery; the circuit breaker means \"this account is misbehaving as a whole, stop trying it one request at a time\" and takes several consecutive successes to close. While open, the account is skipped — unless it is the only one left, in which case it still gets one try.", "追加": "Append", "追加网关提示词": "Append gateway prompt", "退出失败:{message}": "Sign-out failed: {message}", "退出登录": "Sign Out", "退出这台服务器的登录,不影响其他服务器": "Sign out of this server only; others are unaffected", "选好接管回答的视觉模型后这块设置才会生效。": "This block takes effect once a vision model to answer is chosen.", "选好视觉模型后这块设置才会生效。": "This block takes effect once a vision model is chosen.", "选定提供商": "Selected provider", "选择一个或多个模型": "Select one or more models", "选择位置并加密备份": "Choose location and encrypt backup", "选择备份文件并恢复": "Choose a backup file and restore", "选择提供商(可多选)": "Select providers (multiple allowed)", "选路规则": "Selection rules", "选项与默认值由已启用插件提供;你保存的覆盖值不会被插件更新替换。": "Enabled plugins provide these options and defaults. Plugin updates do not replace your saved overrides.", "选项与默认值由插件提供,你保存的修改不会被插件更新覆盖。切换提供商不会丢失未保存的修改。": "Options and defaults come from plugins. Plugin updates do not overwrite your saved changes. Switching providers keeps unsaved edits.", "透传": "Passthrough", "透传客户端 system": "Passthrough client system", "透传客户端 system(默认)": "Passthrough client system (default)", "通常是网络问题,点右侧重试": "Usually a network issue — tap Retry on the right", "通用": "General", "遇到 Bug、报错或异常行为": "Bugs, errors, or unexpected behavior", "配置目录下的 agent2api.db(账号、日志、请求记录、调试报文与设置都在里面)。": "agent2api.db in the configuration directory (it holds accounts, logs, request records, debug payloads, and settings).", "采用本规则": "Uses this rule", "重启后生效,不影响当前操作": "Takes effect after a restart; nothing you're doing is interrupted", "重命名": "Rename", "重命名只更新分类显示名,不拆分历史用量,也不重新归类历史请求。": "Renaming changes only the category label, without splitting past usage or reclassifying historical requests.", "重命名客户端分类": "Rename client category", "重复清理": "Repeat cleanup", "重复清理直到不再变化(仅正则删除)": "Repeat until unchanged (regular-expression deletion only)", "重新读取会替换当前未保存的草稿。": "Reloading replaces the current unsaved draft.", "重新读取设置": "Reload settings", "重编码质量": "Re-encode quality", "重置会清空管理员账号与密码,面板将回到「未注册」状态。": "Reset clears the administrator account and password, returning the panel to the \"not registered\" state.", "重置管理员": "Reset administrator", "重试设置已刷新": "Retry settings refreshed", "重试间隔": "Retry Interval", "铸造守卫每隔多久看一次库存(毫秒)。只影响发现缺货的反应速度 —— 库存够用时轮询不会铸造任何令牌。默认 2500 毫秒,可填 1000–30000。": "How often the minting guard checks the stock (milliseconds). It only affects how quickly a shortage is noticed — with enough stock, the poll mints nothing. Default 2500 ms; 1000–30000 accepted.", "长边像素上限": "Max long-edge pixels", "问题反馈": "Bug Report", "阿里云 OSS": "Alibaba Cloud OSS", "限流中账号": "Rate-limited accounts", "随包内嵌的快照(发版时的那份)": "Snapshot bundled with the app (the one from the last release)", "隐藏 {name}": "Hide {name}", "隐藏分组 {name}": "Hide group {name}", "隐藏用户名": "Hide username", "隐藏账号名(显示成星号)": "Hide account names (show asterisks)", "隐藏这一组": "Hide this group", "非流式响应超时": "Non-Streaming Timeout", "面板登录": "Panel login", "面板端口": "Panel port", "面板管理员账号": "panel admin account", "韩语": "Korean", "项目来源": "Project source", "预览不发送模型请求,也不修改历史记录。": "Preview does not call a model or modify historical records.", "预览中…": "Previewing…", "预览匹配": "Preview matches", "预设": "Preset", "首选不可用时再依次尝试备选。": "If the first choice is unavailable, the backups are tried in order.", "首选不可用时再依次尝试;留空则停止并说明原因。": "Tried in order when the first choice is unavailable; leave empty to stop and explain why.", "验证方式": "Verification method", "验证码令牌池": "Captcha token pool", "验证码令牌池设置已刷新": "Captcha token pool settings refreshed", "验证码库存的参考目标,默认 3 个,可填 1–10。只影响库存状态展示,不会因为低于目标自动生成令牌或弹出验证码。": "Reference stock target: 3 by default, from 1 to 10. It only affects the stock display; falling below it never generates tokens or opens verification automatically.", "高级设置": "Advanced settings", "默认 10000 条,按日志级别分配保留容量,超出后清理最旧的记录;同时受保留天数限制。": "Defaults to 10,000 records, with capacity allocated by log level. The oldest excess records are removed; retention days also apply.", "默认 1000000 条(100 万),超出后清理最旧的请求记录及其原始正文,不影响按天聚合报表;同时受保留天数限制。": "Defaults to 1,000,000 records. The oldest excess request records and their raw bodies are removed without affecting daily aggregate reports; retention days also apply.", "默认 5 分钟。间隔内的变化合并为最新快照,到期后上传;手动上传不受限制。失败后会延长等待并自动重试。": "Defaults to 5 minutes. Changes during the interval are merged into the latest snapshot and uploaded when it is due. Manual uploads are not limited. Failed attempts are retried automatically with a longer delay.", "默认仅本机可访问(127.0.0.1)。开启后监听所有 IPv4 网卡(0.0.0.0),访问范围由网络与防火墙决定,不限于局域网,也不会自动开放到公网。开启前必须注册面板管理员;管理接口需要管理员会话或网关 Key,API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。「同时开放网页管理面板」默认关闭,开启后可从其他设备的浏览器登录管理;关闭它不影响 API 转发和本机桌面管理。修改任一开关都需要重启应用。": "By default, only this machine can connect (127.0.0.1). Enabling this listens on all IPv4 interfaces (0.0.0.0); access depends on your network and firewall, is not limited to the LAN, and is not automatically opened to the internet. A panel administrator must be registered first. Management endpoints require an admin session or gateway key; API calls require an enabled gateway key, with a default key created automatically if needed. The web management panel is off by default. Enable it to sign in from another device's browser; disabling it does not affect API forwarding or local desktop management. Either switch requires an app restart.", "默认值通常够用,出问题时才需要调": "The defaults are usually fine; only tune these when something goes wrong", "默认关闭。开启后下一次 Codex 请求立即生效,不用重启;只对 Codex 来源的 /v1/responses 请求补阶段标记,其它客户端与 /v1/chat/completions 不受影响。": "Off by default. Enabling takes effect on the next Codex request without a restart; phase markers are only added to Codex-origin /v1/responses requests, other clients and /v1/chat/completions are unaffected.", "默认关闭。改动立即生效,不用重启;关闭期间的跨源请求会被预检拦下。": "Off by default. Changes take effect immediately, no restart needed; while off, cross-origin requests are stopped by the preflight.", "默认关闭窗口不会退出程序,而是把窗口缩到系统托盘,转发继续在后台运行(OpenAI 客户端不受影响);要彻底退出程序,请在托盘图标上右键选「退出」。关掉这个开关后,点关闭按钮即退出程序、转发随之中断。「开机自动启动」开启后,登录系统时会自动启动本程序(通常直接驻留托盘),不需要手动打开。": "By default, closing the window does not quit the app; it shrinks the window to the system tray and forwarding keeps running in the background (OpenAI clients are unaffected). To quit the app completely, right-click the tray icon and choose \"Exit\". With this switch off, clicking the close button quits the app and forwarding stops with it. With \"Launch at startup\" on, the app starts automatically when you sign in to the system (usually staying in the tray), so you do not need to open it manually.", "默认应用全部提供商(包含之后新增的插件与自定义提供商)。指定范围后,未选中的提供商不做指纹脱敏;清空选择自动回到全部提供商。": "Applies to all providers by default, including plugins and custom providers added later. With a selected scope, other providers are not masked. Clearing the selection returns to all providers.", "默认开启。只改 role 字段本身,消息内容与顺序都不动;本项只改发给上游的副本,客户端看到的响应内容不变。": "Enabled by default. Only the role field changes — message content and order stay untouched; this only rewrites the copy sent upstream, and what the client sees never changes.", "默认开启。只改发给上游的副本,客户端看到的响应与原图都不变;请求日志里保存的是客户端发来的原图,不是压缩后的版本。只作用在对话链路,生图 / 图片编辑不经过这里。改完对下一个请求立即生效,不用重启。": "On by default. Only the copy sent upstream is changed; the response and the original image seen by the client stay the same, and the request log stores the original image from the client rather than the compressed version. Applies to the chat path only — image generation and editing do not go through it. Changes take effect on the next request, no restart needed.", "默认开启。命中明细会记进请求日志的「敏」标签(悬停可看命中了哪几条规则)。本项只改发给上游的副本,客户端看到的响应内容不变。": "On by default. Hits are recorded in the request log's \"sensitive\" tag (hover to see which rules matched). This only changes the copy sent upstream; the response content the client sees is unchanged.", "默认开启并应用全部提供商。编辑词表或应用范围后点击「保存设置」,下一次请求立即生效,不用重启。命中明细仍记进请求日志的「敏」标签。": "Enabled for all providers by default. Edit rules or provider scope and click Save settings; the next request uses the changes without restarting. Rule hits are still recorded in the request log's masking tag.", "默认网关只监听 127.0.0.1,只有本机能访问。开启后网关改听所有网卡,同一局域网内的设备可以把 API 地址指向本机 IP 一起使用。出于安全考虑,开启前必须先注册一个面板管理员:管理接口从此要求管理员会话或网关 Key,模型额度不会对局域网裸奔;一把启用的网关 Key 都没有时,转发接口也会拒绝服务,直到创建第一把。改动需要重启应用生效。「同时开放网页管理面板」把管理界面也出给局域网(其他设备的浏览器打开本机 IP 即可管理),默认关闭 —— 桌面端的面板仍只由本程序自己出。": "By default the gateway listens only on 127.0.0.1 and only this machine can reach it. Once enabled, the gateway listens on all network interfaces, and devices on the same LAN can point the API address at this machine's IP to share it. For security, you must first register a panel administrator: the admin API then requires an admin session or a gateway key, so model quotas are not left wide open to the LAN; and when no gateway key is enabled, the forwarding API refuses service too, until the first one is created. The change requires an app restart to take effect. \"Also serve the web admin panel\" exposes the admin UI to the LAN as well (other devices can open this machine's IP in a browser to manage it); it is off by default — the desktop build still serves the panel only from this app itself.", "({n} 个整组隐藏)": " ({n} groups hidden)", "({n} 行)": " ({n} lines)", "({n} 项被覆盖)": " ({n} overridden)", "(全部为默认值)": " (all defaults)", "(官方原文)": "(official text)", "(已存一份正文,{n} 行;切成「替换 / 追加」后生效)": " (a text copy is saved, {n} lines; takes effect after switching to \"Replace / Append\")", "(已改)": "(edited)", "(已注册过会跳过这一步,直接生效)。": " before enabling this (if you have already registered, this step is skipped and the change takes effect directly).", "(当前生效的就是这一份,{n} 行)": " (this is the active copy, {n} lines)", "(文件:{path})": " (file: {path})", "(未生效)": "(not in effect)", ",{items}": ", {items}", ",{time}": ", {time}", ",以及代理池 / 订阅里可能存在的代理凭据。请使用只有你能访问的私有存储;账号密钥由同步密码单独加密,泄露存储本身不等于泄露账号。": ", plus any proxy credentials that may exist in the proxy pool / subscriptions. Use private storage only you can access; the account key is encrypted separately with the sync password, so leaking the storage alone does not expose your accounts.", ",包括恢复后需要重新登录管理面板。": " with the selected backup file, including the admin re-login after restore.", ",可直接用于登录。请妥善保管,不要外传或上传到公共位置。": ", and it can be used to sign in directly. Keep it safe; do not share it or upload it to a public location.", ",文件里后续的改动在清空这里之前不再生效": "; later changes to the file will not take effect until this is cleared", ",替换前的数据已备份为 {name}": ", the pre-replace data was backed up as {name}", ",自定义提供商新增 {added} 个、更新 {updated} 个": ", custom providers: {added} added, {updated} updated", ";开关关闭时词表不执行": "; rules do not run while masking is disabled", ";网页管理面板已一并开放(浏览器打开同一地址)": "; the web admin panel is also open (open the same address in a browser)" }); diff --git a/desktop-tauri/ui/i18n/ja/requests.js b/desktop-tauri/ui/i18n/ja/requests.js index 81f197b0..4f72118c 100644 --- a/desktop-tauri/ui/i18n/ja/requests.js +++ b/desktop-tauri/ui/i18n/ja/requests.js @@ -1,2 +1,2 @@ /* Agent2API 词典构建产物:ja/requests —— 由 desktop-tauri/i18n/build.mjs 生成,请勿手改;源头是 i18n-src/*.json */ -window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { " · {n} 进行中": " · 処理中 {n} 件", " · 会话粘住": " · セッション粘着", "
    无响应原文
    ": "
    レスポンス原文がありません
    ", "
    无法解析响应内容
    ": "
    レスポンスの内容を解析できません
    ", "
    无法解析请求体(不是含 messages 数组的 JSON)
    ": "
    リクエストボディを解析できません(messages 配列を含む JSON ではありません)
    ", "
    无请求原文
    ": "
    リクエスト原文がありません
    ", "
    调用工具 {name}
    ": "
    ツール呼び出し {name}
    ", "响应原文": "レスポンス原文", "思考过程": "思考プロセス", "请求原文": "リクエスト原文", "HTTP {status},但响应体阶段出错": "HTTP {status} ですが、レスポンスボディ段階でエラー", "HTTP {status},但响应体阶段出错:见错误列": "HTTP {status} ですが、レスポンスボディ段階でエラー:エラー列を参照", "{duration} / 首帧 {first}": "{duration} / 初回応答 {first}", "{m}分{s}秒": "{m}分{s}秒", "{n}秒": "{n}秒", "{s}秒{ms}ms": "{s}秒{ms}ms", "↻ {n} 次": "↻ {n} 回", "↻ 重试 {n} 次": "↻ リトライ {n} 回", "✅ 压缩完成": "✅ 圧縮が完了しました", "「仅看进行中」开启时,状态固定为进行中": "「処理中のみ表示」が有効な間、ステータスは処理中に固定されます", "上游模型繁忙,请求已排进上游队列;网关正按上游建议的时长等待后重发(不是登录态或额度问题)": "アップストリームのモデルが混雑しているため、リクエストはアップストリームのキューに入りました。ゲートウェイはアップストリームが推奨した時間だけ待ってから再送信します(ログイン状態やクォータの問題ではありません)", "上游没有返回积分消耗": "アップストリームがポイント消費を返していません", "上游状态码: {status}": "アップストリームのステータスコード:{status}", "上游请求已发出,正在等第一个字节到达(模型的思考时间也在这段)": "アップストリームへのリクエストは送信済みで、最初のバイトの到着を待っています(モデルの思考時間もこの段階に含まれます)", "上游返回错误": "アップストリームがエラーを返しました", "下游请求的模型:{model}": "ダウンストリームが要求したモデル:{model}", "仅清空报文原文": "原文のみクリア", "仅看进行中": "処理中のみ表示", "令牌": "トークン", "体积": "サイズ", "保留 {count} 条请求记录 · 将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "リクエスト記録 {count} 件を保持 · アップストリーム {upstream} 件、ダウンストリーム本文 {downstream} 件を削除 · DB サイズ {db}", "保留 {count} 条请求记录;将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。用量统计与报表不变。": "リクエスト記録 {count} 件を保持し、アップストリームのデバッグペイロード {upstream} 件とダウンストリーム本文 {downstream} 件を削除します。使用量統計とレポートは変わりません。", "保留统计行与报表,只抹掉请求 / 响应正文。清理后详情弹窗的「预览对话」将无原文可看,统计数字分毫不动。": "統計行とレポートはそのままに、リクエスト / レスポンス本文だけを消去します。クリア後は詳細ダイアログの「会話プレビュー」で原文を確認できなくなりますが、統計数値は一切変わりません。", "保留请求记录、用量统计与报表,同时清理上游调试报文和下游请求 / 响应正文。清理后「预览对话」与「原始报文」不再保留原文。有筛选时只清理命中请求的报文;无筛选时清空两侧全部报文。此操作无法恢复。": "リクエスト記録、使用量統計、レポートを保持したまま、アップストリームのデバッグペイロードとダウンストリームのリクエスト / レスポンス本文を削除します。「会話プレビュー」と「生ペイロード」に原文は残りません。絞り込み中は一致するリクエストのペイロードのみ、絞り込みがない場合は両側のすべてのペイロードを削除します。この操作は元に戻せません。", "全部删除": "すべて削除", "全部提供商": "すべてのプロバイダー", "全部模型": "すべてのモデル", "全部状态": "すべてのステータス", "全部请求数据": "すべてのリクエストデータ", "共 {images} 张图片,复用 {cached} 张识读结果": "画像 {images} 枚、読み取り結果 {cached} 件を再利用", "共 {n} 次尝试": "計 {n} 回の試行", "共 {n} 次尝试,最终由 {provider} 承载": "計 {n} 回の試行、最終的に {provider} が処理しました", "其它": "その他", "内容按原样保存,请求头中的凭据字段已替换为 [redacted]": "内容はそのまま保存され、リクエストヘッダー内の認証情報フィールドは [redacted] に置き換えられています", "内部重试": "内部リトライ", "切换路径:": "切替経路:", "列表数据已刷新,请重试(关闭后重新打开这条详情)": "リストのデータが更新されました。もう一度お試しください(閉じてからこの詳細を開き直してください)", "删除日志记录本身。当前有筛选时只删命中的条目,按天聚合报表不受影响;无筛选时清空全部并重置报表。此方式无法恢复。": "ログレコード自体を削除します。フィルター適用中はヒットした項目だけを削除し、日別集計レポートには影響しません。フィルターなしの場合はすべてをクリアしてレポートをリセットします。この方法では元に戻せません。", "删除请求记录,并同步清理对应的上游调试报文与下游正文。有筛选时只删除命中的记录,按天聚合报表不受影响;无筛选时清空全部并重置报表。此操作无法恢复。": "リクエスト記録と、それに対応するアップストリームのデバッグペイロードおよびダウンストリーム本文を削除します。絞り込み中は一致する記録のみ削除し、日別レポートは保持します。絞り込みがない場合はすべて削除し、レポートもリセットします。この操作は元に戻せません。", "压缩中…": "圧縮中…", "压缩失败:{message}": "圧縮に失敗しました:{message}", "压缩已在后台开始,完成后会自动提示": "圧縮はバックグラウンドで開始されました。完了すると自動で通知されます", "压缩已在进行中": "圧縮はすでに実行中です", "压缩已在进行中,接上它的进度等待完成": "圧縮はすでに実行中です。既存の進捗を引き継いで完了を待ちます", "压缩数据库": "データベース圧縮", "压缩正在后台执行,完成后自动恢复": "圧縮はバックグラウンドで実行中です。完了すると自動的に復帰します", "原始报文": "生ペイロード", "原模型": "元のモデル", "另有 {missing} 次尝试未记录明细(只保留最早的 {kept} 条)": "ほかに {missing} 回の試行は明細が記録されていません(古い方から {kept} 件のみ保持)", "另有 {n} 个词命中": "ほかに {n} 語がヒット", "只显示正在转发中的请求(状态列按阶段显示:连接中 / 等待响应 / 响应中 / 重试中,用时列显示已用时)": "転送中のリクエストのみ表示します(ステータス列は段階ごとに表示:接続中 / 応答待ち / 応答中 / リトライ中、所要時間列は経過時間を表示)", "只看失败": "失敗のみ", "只看成功": "成功のみ", "只看进行中": "処理中のみ", "命中了敏感词": "センシティブワードにヒット", "命中的敏感词": "ヒットしたセンシティブワード", "响应中": "応答中", "响应体": "レスポンスボディ", "响应头": "レスポンスヘッダー", "回收已删除数据占用的磁盘空间(checkpoint + VACUUM,后台执行)": "削除済みデータが占有していたディスク領域を回収します(checkpoint + VACUUM、バックグラウンドで実行)", "图片处理用时:{n} 秒": "画像処理時間:{n} 秒", "在设置 → 通用里开启「调试模式」后,新发生的请求才会保存报文": "設定 → 一般で「デバッグモード」を有効にすると、以降の新しいリクエストでのみペイロードが保存されます", "在路由页查看": "ルーティングページで表示", "处理中": "処理中", "失败请求不记录用量": "失敗したリクエストは使用量を記録しません", "失败({status}):{error}": "失敗({status}):{error}", "失败:{error}": "失敗:{error}", "实际发给上游 {bytes} 字节": "実際にアップストリームへ送信した {bytes} バイト", "客户端": "クライアント", "将删除 {count} 条日志 · 其中 {raw} 条仍带报文原文 · 数据库占用 {db}": "{count} 件のログを削除 · うち {raw} 件はペイロード原文あり · DB サイズ {db}", "将删除 {count} 条请求记录 · 同步清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "リクエスト記録 {count} 件を削除 · アップストリーム {upstream} 件、ダウンストリーム本文 {downstream} 件も削除 · DB サイズ {db}", "将删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "リクエスト記録 {count} 件と、アップストリームのデバッグペイロード {upstream} 件、ダウンストリーム本文 {downstream} 件を削除します。", "尝试 {n} ·": "試行 {n} ·", "尝试明细": "試行明細", "尝试次数": "試行回数", "工具结果": "ツール結果", "工具结果 · {id}": "ツール結果 · {id}", "工具结果图片": "ツール結果の画像", "已删除 {count} 条": "{count} 件を削除しました", "已删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "リクエスト記録 {count} 件と、アップストリームのデバッグペイロード {upstream} 件、ダウンストリーム本文 {downstream} 件を削除しました。", "已受理终止:上游连接已断开,列表稍后刷新为「请求已被手动终止」": "中断を受け付けました:アップストリーム接続は切断されました。リストはまもなく「リクエストは手動で中断されました」に更新されます", "已抹掉 {count} 条报文原文": "{count} 件のペイロード原文を消去しました", "已清理上游调试报文 {upstream} 条、下游正文 {downstream} 条;请求记录与报表已保留。": "アップストリームのデバッグペイロード {upstream} 件とダウンストリーム本文 {downstream} 件を削除しました。リクエスト記録とレポートは保持されています。", "已用时(请求仍在转发中)": "経過時間(リクエストは転送中)", "开启调试模式后仅记录新请求,历史对话无法补录;关闭不会删除已有记录。": "デバッグモードでは有効化後の新しいリクエストのみ記録され、過去の会話は復元できません。無効にしても既存の記録は削除されません。", "当前筛选范围": "現在の絞り込み範囲", "当前网关未提供上游 / 下游清理统计,请更新网关后再清理。": "現在のゲートウェイはアップストリーム / ダウンストリームのクリア件数を提供していません。ゲートウェイを更新してからクリアしてください。", "成功": "成功", "成功({status})": "成功({status})", "所属请求": "元のリクエスト", "执行清理": "クリアを実行", "报文超过单条上限,请求体 / 响应体已按上限截断": "ペイロードが 1 件あたりの上限を超えたため、リクエストボディ / レスポンスボディは上限で切り詰められています", "抹掉原文": "原文を消去", "按提供商筛选": "プロバイダーで絞り込み", "按提供商筛选(只列日志里出现过的)": "プロバイダーで絞り込み(ログに出現したもののみ表示)", "按时间倒序,全量保留": "時系列の新しい順、全量保持", "按模型筛选": "モデルで絞り込み", "按模型筛选(只列日志里出现过的;精确匹配模型名)": "モデルで絞り込み(ログに出現したもののみ表示;モデル名は完全一致)", "按请求结果筛选": "リクエスト結果で絞り込み", "排队中": "キュー中", "提供商 / 账号": "プロバイダー / アカウント", "提供商: {provider}": "プロバイダー:{provider}", "提示": "備考", "敏": "敏", "敏感词": "センシティブワード", "数据库占用包含主文件与 WAL 文件;清理后可点击「压缩数据库」回收空闲空间。": "DB サイズにはメインファイルと WAL ファイルを含みます。クリア後は「データベース圧縮」で未使用領域を回収できます。", "断开上游连接,明细记为「请求已被手动终止」": "アップストリーム接続を切断します。明細には「リクエストは手動で中断されました」と記録されます", "无报文原文(未开启「调试模式」,或已被清理)": "原文ペイロードがありません(デバッグモードが無効だったか、クリア済みです)", "无结果记录": "結果の記録なし", "旧版本保存的正文可能已截断,无法恢复缺失内容": "旧バージョンで保存された本文は切り詰められている可能性があり、欠落した内容は復元できません", "时间": "時刻", "暂无请求日志,网关还没有转发过请求": "リクエストログはまだありません。ゲートウェイはまだリクエストを転送したことがありません", "最终承载:{picked}": "最終的に処理:{picked}", "本次请求消耗 {credit} 积分": "このリクエストのポイント消費:{credit}", "本轮尝试失败,正在退避等待或切换到下一个账号": "今回の試行は失敗し、バックオフ待機中または次のアカウントへの切り替え中です", "来源客户端:{client}": "接続元クライアント:{client}", "查看该请求的上游原始报文": "このリクエストのアップストリーム生ペイロードを表示", "模型": "モデル", "模型测试": "モデルテスト", "模型管理页操作列那颗「测试」发起的请求:与真实请求同一条转发链路,但不计入报表统计": "モデル管理ページの操作列にある「テスト」から発行されたリクエスト:実際のリクエストと同じ転送経路を通りますが、レポート統計には含まれません", "正在加载请求日志…": "リクエストログを読み込んでいます…", "正在统计…": "統計中…", "正文超过单条上限,可能已被截断": "本文が 1 件あたりの上限を超えているため、切り詰められている可能性があります", "没有符合筛选条件的请求": "絞り込み条件に一致するリクエストがありません", "清理": "クリア", "清理中…": "クリア中…", "清理失败:{message}": "クリアに失敗しました:{message}", "清理方式": "クリア方法", "清理请求已返回,但结果数据不完整,请刷新后确认。": "クリア要求の結果データが不完全です。更新して結果を確認してください。", "清理请求日志": "リクエストログをクリア", "清理预览数据不完整": "クリアのプレビューデータが不完全です", "清空两侧原文": "両側の原文を削除", "生产请求": "本番リクエスト", "生成速度:输出 token ÷ 流式段用时(总用时 − 首响);流式段不足总用时一半时按总用时计": "生成速度:出力トークン ÷ ストリーミング時間(所要時間 − 初回応答)。ストリーミング時間が所要時間の半分未満の場合は所要時間で計算", "用时": "所要時間", "用量": "使用量", "确定对{scope}执行「{label}」?
    {summary}
    此操作无法恢复。": "{scope}に対して「{label}」を実行しますか?
    {summary}
    この操作は元に戻せません。", "确定对全部请求日志执行「{label}」?将处理 {count} 条,此操作无法恢复。": "すべてのリクエストログに対して「{label}」を実行しますか?{count} 件を処理します。この操作は元に戻せません。", "确定按当前筛选执行「{label}」?将处理 {count} 条,此操作无法恢复。": "現在の絞り込み条件で「{label}」を実行しますか?{count} 件を処理します。この操作は元に戻せません。", "确定终止这条正在转发的请求?
    上游连接会立即断开,明细将记为「请求已被手动终止」。": "この転送中のリクエストを中断しますか?
    アップストリーム接続はすぐに切断され、明細には「リクエストは手動で中断されました」と記録されます。", "等待响应": "応答待ち", "策略 {strategy} · 会话粘性 {sticky}{hit}": "戦略 {strategy} · セッション粘着 {sticky}{hit}", "终止": "中断", "终止失败:{error}": "中断に失敗しました:{error}", "终止请求": "リクエストを中断", "结果": "結果", "缓存读取: - / 命中率: -": "キャッシュ読み取り:- / ヒット率:-", "缓存读取: {cache} / 命中率: {rate}": "キャッシュ読み取り:{cache} / ヒット率:{rate}", "耗时": "所要時間", "被跳过:": "スキップ:", "识别到 User-Agent,但不属于已知的客户端类型:{ua}": "User-Agent はありますが、既知のクライアント種別ではありません:{ua}", "识图用量按实际视觉账号单独记录,不混入原模型的回答用量。": "画像読み取りの使用量は実際の視覚アカウントに個別記録され、元のモデルの回答使用量には混在しません。", "详情": "詳細", "详情内容": "詳細の内容", "请求体": "リクエストボディ", "请求图片": "リクエストの画像", "请求在任何账号接手之前就失败了": "リクエストはどのアカウントが引き継ぐ前に失敗しました", "请求头": "リクエストヘッダー", "请求已受理,正在选路、取凭证、建立上游连接": "リクエストを受け付けました。経路の選択、認証情報の取得、アップストリーム接続の確立を進めています", "请求日志列表": "リクエストログ一覧", "请求日志时间范围": "リクエストログの時間範囲", "请求日志表": "リクエストログテーブル", "请求正在转发中,用时列显示的是已用时": "リクエストは転送中です。所要時間列には経過時間が表示されます", "请求筛选": "リクエストの絞り込み", "请求详情": "リクエスト詳細", "读取请求日志失败,详见控制台": "リクエストログの読み込みに失敗しました。詳細はコンソールを確認してください", "路由回放": "ルーティングリプレイ", "转发到上游的模型:{model}": "アップストリームへ転送するモデル:{model}", "轮次": "回目", "辅助识图调用": "補助画像読み取り呼び出し", "输入 {input} · 输出 {output} · 总计 {total} · 缓存读 {cache}": "入力 {input} · 出力 {output} · 合計 {total} · キャッシュ読み取り {cache}", "这条报文由旧版本截断保存,缺失内容无法恢复": "このペイロードは旧バージョンで切り詰めて保存されたため、欠落した内容は復元できません", "这条明细是一次模型测试(人工发起):走的是真实转发链路,但不计入报表统计": "この明細はモデルテスト(手動実行)です:実際の転送経路を通りますが、レポート統計には含まれません", "这条明细没有记录提供商(旧数据或请求未走到转发)": "この明細にはプロバイダーが記録されていません(旧データか、リクエストが転送まで到達しなかったため)", "这条明细没有记录来源客户端(旧数据、模型测试,或请求未带 User-Agent)": "この記録には接続元クライアントがありません(旧データ、モデルテスト、または User-Agent なしのリクエスト)", "这条记录命中了敏感词,但没有留下命中明细": "この記録はセンシティブワードにヒットしましたが、ヒット明細が残っていません", "这条记录的尝试明细未采集(该字段上线前的旧数据,或请求在转发前就失败)": "この記録の試行明細は収集されていません(このフィールドの実装前の旧データか、リクエストが転送前に失敗したため)", "这条请求没有保存这一段报文": "このリクエストではこの区間のペイロードが保存されていません", "进入「{phase}」阶段已持续 {time}": "「{phase}」段階に入ってから {time} 経過", "进行中": "処理中", "进行中…": "処理中…", "连接中": "接続中", "速度": "速度", "重试 {n}": "リトライ {n}", "重试中": "リトライ中", "重试次数": "リトライ回数", "面板内发起的模型调用,消耗额度并记录 Key,不计入生产报表": "パネルから開始したモデル呼び出しです。クォータを消費し、API Key を記録しますが、本番レポートには含めません", "预览对话": "会話プレビュー", "预览读取失败": "プレビューの読み込みに失敗しました", "预览读取失败:{error}": "プレビューの読み込みに失敗しました:{error}", "额外识图用量:{n} Token": "追加の画像読み取り使用量:{n} トークン", "首响 {time}": "初回応答 {time}", "首响:上游首帧到达的耗时": "初回応答:アップストリームの初回フレーム到達までの所要時間", "首响:上游首帧到达的耗时(请求仍在转发中)": "初回応答:アップストリームの初回フレーム到達までの所要時間(リクエストは転送中)", "首帧已到,上游内容正在下发": "初回フレームが到着し、アップストリームの内容を受信しています", "(请求仍在转发中)": "(リクエストは転送中)", "(账号:{account})": "(アカウント:{account})", ",{n}毫秒后重试": "、{n}ミリ秒後にリトライ", ",{n}秒后重试": "、{n}秒後にリトライ" }); +window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { " · {n} 进行中": " · 処理中 {n} 件", " · 会话粘住": " · セッション粘着", "
    无响应原文
    ": "
    レスポンス原文がありません
    ", "
    无法解析响应内容
    ": "
    レスポンスの内容を解析できません
    ", "
    无法解析请求体(不是含 messages 数组的 JSON)
    ": "
    リクエストボディを解析できません(messages 配列を含む JSON ではありません)
    ", "
    无请求原文
    ": "
    リクエスト原文がありません
    ", "
    调用工具 {name}
    ": "
    ツール呼び出し {name}
    ", "响应原文": "レスポンス原文", "思考过程": "思考プロセス", "请求原文": "リクエスト原文", "HTTP {status},但响应体阶段出错": "HTTP {status} ですが、レスポンスボディ段階でエラー", "HTTP {status},但响应体阶段出错:见错误列": "HTTP {status} ですが、レスポンスボディ段階でエラー:エラー列を参照", "{duration} / 首帧 {first}": "{duration} / 初回応答 {first}", "{m}分{s}秒": "{m}分{s}秒", "{n}秒": "{n}秒", "{s}秒{ms}ms": "{s}秒{ms}ms", "↻ {n} 次": "↻ {n} 回", "↻ 重试 {n} 次": "↻ リトライ {n} 回", "✅ 压缩完成": "✅ 圧縮が完了しました", "「仅看进行中」开启时,状态固定为进行中": "「処理中のみ表示」が有効な間、ステータスは処理中に固定されます", "上游模型繁忙,请求已排进上游队列;网关正按上游建议的时长等待后重发(不是登录态或额度问题)": "アップストリームのモデルが混雑しているため、リクエストはアップストリームのキューに入りました。ゲートウェイはアップストリームが推奨した時間だけ待ってから再送信します(ログイン状態やクォータの問題ではありません)", "上游没有返回积分消耗": "アップストリームがポイント消費を返していません", "上游状态码: {status}": "アップストリームのステータスコード:{status}", "上游请求已发出,正在等第一个字节到达(模型的思考时间也在这段)": "アップストリームへのリクエストは送信済みで、最初のバイトの到着を待っています(モデルの思考時間もこの段階に含まれます)", "上游返回错误": "アップストリームがエラーを返しました", "下游请求的模型:{model}": "ダウンストリームが要求したモデル:{model}", "仅清空报文原文": "原文のみクリア", "仅看进行中": "処理中のみ表示", "令牌": "トークン", "体积": "サイズ", "供应商": "プロバイダー", "供应商归属规则": "プロバイダー帰属ルール", "保存中…": "保存中…", "保存归属规则": "帰属ルールを保存", "保留 {count} 条请求记录 · 将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "リクエスト記録 {count} 件を保持 · アップストリーム {upstream} 件、ダウンストリーム本文 {downstream} 件を削除 · DB サイズ {db}", "保留 {count} 条请求记录;将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。用量统计与报表不变。": "リクエスト記録 {count} 件を保持し、アップストリームのデバッグペイロード {upstream} 件とダウンストリーム本文 {downstream} 件を削除します。使用量統計とレポートは変わりません。", "保留统计行与报表,只抹掉请求 / 响应正文。清理后详情弹窗的「预览对话」将无原文可看,统计数字分毫不动。": "統計行とレポートはそのままに、リクエスト / レスポンス本文だけを消去します。クリア後は詳細ダイアログの「会話プレビュー」で原文を確認できなくなりますが、統計数値は一切変わりません。", "保留草稿并读取最新设置": "下書きを保持して最新設定を読み込む", "保留请求记录、用量统计与报表,同时清理上游调试报文和下游请求 / 响应正文。清理后「预览对话」与「原始报文」不再保留原文。有筛选时只清理命中请求的报文;无筛选时清空两侧全部报文。此操作无法恢复。": "リクエスト記録、使用量統計、レポートを保持したまま、アップストリームのデバッグペイロードとダウンストリームのリクエスト / レスポンス本文を削除します。「会話プレビュー」と「生ペイロード」に原文は残りません。絞り込み中は一致するリクエストのペイロードのみ、絞り込みがない場合は両側のすべてのペイロードを削除します。この操作は元に戻せません。", "全部删除": "すべて削除", "全部提供商": "すべてのプロバイダー", "全部模型": "すべてのモデル", "全部状态": "すべてのステータス", "全部请求数据": "すべてのリクエストデータ", "共 {images} 张图片,复用 {cached} 张识读结果": "画像 {images} 枚、読み取り結果 {cached} 件を再利用", "共 {n} 次尝试": "計 {n} 回の試行", "共 {n} 次尝试,最终由 {provider} 承载": "計 {n} 回の試行、最終的に {provider} が処理しました", "其它": "その他", "内容按原样保存,请求头中的凭据字段已替换为 [redacted]": "内容はそのまま保存され、リクエストヘッダー内の認証情報フィールドは [redacted] に置き換えられています", "内部重试": "内部リトライ", "切换视觉模型": "視覚モデルへ切替", "切换路径:": "切替経路:", "列表数据已刷新,请重试(关闭后重新打开这条详情)": "リストのデータが更新されました。もう一度お試しください(閉じてからこの詳細を開き直してください)", "删除归属规则": "帰属ルールを削除", "删除日志记录本身。当前有筛选时只删命中的条目,按天聚合报表不受影响;无筛选时清空全部并重置报表。此方式无法恢复。": "ログレコード自体を削除します。フィルター適用中はヒットした項目だけを削除し、日別集計レポートには影響しません。フィルターなしの場合はすべてをクリアしてレポートをリセットします。この方法では元に戻せません。", "删除请求记录,并同步清理对应的上游调试报文与下游正文。有筛选时只删除命中的记录,按天聚合报表不受影响;无筛选时清空全部并重置报表。此操作无法恢复。": "リクエスト記録と、それに対応するアップストリームのデバッグペイロードおよびダウンストリーム本文を削除します。絞り込み中は一致する記録のみ削除し、日別レポートは保持します。絞り込みがない場合はすべて削除し、レポートもリセットします。この操作は元に戻せません。", "压缩中…": "圧縮中…", "压缩失败:{message}": "圧縮に失敗しました:{message}", "压缩已在后台开始,完成后会自动提示": "圧縮はバックグラウンドで開始されました。完了すると自動で通知されます", "压缩已在进行中": "圧縮はすでに実行中です", "压缩已在进行中,接上它的进度等待完成": "圧縮はすでに実行中です。既存の進捗を引き継いで完了を待ちます", "压缩数据库": "データベース圧縮", "压缩正在后台执行,完成后自动恢复": "圧縮はバックグラウンドで実行中です。完了すると自動的に復帰します", "原始报文": "生ペイロード", "原模型": "元のモデル", "取消": "キャンセル", "另有 {missing} 次尝试未记录明细(只保留最早的 {kept} 条)": "ほかに {missing} 回の試行は明細が記録されていません(古い方から {kept} 件のみ保持)", "另有 {n} 个词命中": "ほかに {n} 語がヒット", "只显示正在转发中的请求(状态列按阶段显示:连接中 / 等待响应 / 响应中 / 重试中,用时列显示已用时)": "転送中のリクエストのみ表示します(ステータス列は段階ごとに表示:接続中 / 応答待ち / 応答中 / リトライ中、所要時間列は経過時間を表示)", "只看失败": "失敗のみ", "只看成功": "成功のみ", "只看进行中": "処理中のみ", "命中了敏感词": "センシティブワードにヒット", "命中依据:{header} · {pattern}": "識別根拠:{header} · {pattern}", "命中的敏感词": "ヒットしたセンシティブワード", "命中规则:{provider} → {client}": "適用ルール:{provider} → {client}", "响应中": "応答中", "响应体": "レスポンスボディ", "响应头": "レスポンスヘッダー", "回收已删除数据占用的磁盘空间(checkpoint + VACUUM,后台执行)": "削除済みデータが占有していたディスク領域を回収します(checkpoint + VACUUM、バックグラウンドで実行)", "图片处理用时:{n} 秒": "画像処理時間:{n} 秒", "在设置 → 通用里开启「调试模式」后,新发生的请求才会保存报文": "設定 → 一般で「デバッグモード」を有効にすると、以降の新しいリクエストでのみペイロードが保存されます", "在路由页查看": "ルーティングページで表示", "处理中": "処理中", "失败": "失敗", "失败请求不记录用量": "失敗したリクエストは使用量を記録しません", "失败({status}):{error}": "失敗({status}):{error}", "失败:{error}": "失敗:{error}", "实际发给上游 {bytes} 字节": "実際にアップストリームへ送信した {bytes} バイト", "客户端": "クライアント", "将删除 {count} 条日志 · 其中 {raw} 条仍带报文原文 · 数据库占用 {db}": "{count} 件のログを削除 · うち {raw} 件はペイロード原文あり · DB サイズ {db}", "将删除 {count} 条请求记录 · 同步清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "リクエスト記録 {count} 件を削除 · アップストリーム {upstream} 件、ダウンストリーム本文 {downstream} 件も削除 · DB サイズ {db}", "将删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "リクエスト記録 {count} 件と、アップストリームのデバッグペイロード {upstream} 件、ダウンストリーム本文 {downstream} 件を削除します。", "尝试 {n} ·": "試行 {n} ·", "尝试明细": "試行明細", "尝试次数": "試行回数", "工具结果": "ツール結果", "工具结果 · {id}": "ツール結果 · {id}", "工具结果图片": "ツール結果の画像", "已删除 {count} 条": "{count} 件を削除しました", "已删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "リクエスト記録 {count} 件と、アップストリームのデバッグペイロード {upstream} 件、ダウンストリーム本文 {downstream} 件を削除しました。", "已受理终止:上游连接已断开,列表稍后刷新为「请求已被手动终止」": "中断を受け付けました:アップストリーム接続は切断されました。リストはまもなく「リクエストは手動で中断されました」に更新されます", "已完成": "完了", "已抹掉 {count} 条报文原文": "{count} 件のペイロード原文を消去しました", "已清理上游调试报文 {upstream} 条、下游正文 {downstream} 条;请求记录与报表已保留。": "アップストリームのデバッグペイロード {upstream} 件とダウンストリーム本文 {downstream} 件を削除しました。リクエスト記録とレポートは保持されています。", "已用时(请求仍在转发中)": "経過時間(リクエストは転送中)", "开启调试模式后仅记录新请求,历史对话无法补录;关闭不会删除已有记录。": "デバッグモードでは有効化後の新しいリクエストのみ記録され、過去の会話は復元できません。無効にしても既存の記録は削除されません。", "归属客户端": "クライアント", "当前筛选范围": "現在の絞り込み範囲", "当前网关未提供上游 / 下游清理统计,请更新网关后再清理。": "現在のゲートウェイはアップストリーム / ダウンストリームのクリア件数を提供していません。ゲートウェイを更新してからクリアしてください。", "成功": "成功", "成功({status})": "成功({status})", "所属请求": "元のリクエスト", "执行清理": "クリアを実行", "报文超过单条上限,请求体 / 响应体已按上限截断": "ペイロードが 1 件あたりの上限を超えたため、リクエストボディ / レスポンスボディは上限で切り詰められています", "抹掉原文": "原文を消去", "按提供商筛选": "プロバイダーで絞り込み", "按提供商筛选(只列日志里出现过的)": "プロバイダーで絞り込み(ログに出現したもののみ表示)", "按时间倒序,全量保留": "時系列の新しい順、全量保持", "按模型筛选": "モデルで絞り込み", "按模型筛选(只列日志里出现过的;精确匹配模型名)": "モデルで絞り込み(ログに出現したもののみ表示;モデル名は完全一致)", "按请求结果筛选": "リクエスト結果で絞り込み", "排队中": "キュー中", "提供商 / 账号": "プロバイダー / アカウント", "提供商: {provider}": "プロバイダー:{provider}", "提示": "備考", "搜索供应商": "プロバイダーを検索", "搜索客户端": "クライアントを検索", "敏": "敏", "敏感词": "センシティブワード", "数据库占用包含主文件与 WAL 文件;清理后可点击「压缩数据库」回收空闲空间。": "DB サイズにはメインファイルと WAL ファイルを含みます。クリア後は「データベース圧縮」で未使用領域を回収できます。", "断开上游连接,明细记为「请求已被手动终止」": "アップストリーム接続を切断します。明細には「リクエストは手動で中断されました」と記録されます", "无报文原文(未开启「调试模式」,或已被清理)": "原文ペイロードがありません(デバッグモードが無効だったか、クリア済みです)", "无结果记录": "結果の記録なし", "旧版本保存的正文可能已截断,无法恢复缺失内容": "旧バージョンで保存された本文は切り詰められている可能性があり、欠落した内容は復元できません", "时间": "時刻", "暂无请求日志,网关还没有转发过请求": "リクエストログはまだありません。ゲートウェイはまだリクエストを転送したことがありません", "最终归属(记账时的客户端)": "最終的な帰属(記録時に使用するクライアント)", "最终承载:{picked}": "最終的に処理:{picked}", "未改写,保留识别结果": "書き換えなし、識別結果を保持", "本次请求消耗 {credit} 积分": "このリクエストのポイント消費:{credit}", "本轮尝试失败,正在退避等待或切换到下一个账号": "今回の試行は失敗し、バックオフ待機中または次のアカウントへの切り替え中です", "来源客户端:{client}": "接続元クライアント:{client}", "查看该请求的上游原始报文": "このリクエストのアップストリーム生ペイロードを表示", "模型": "モデル", "模型测试": "モデルテスト", "模型管理页操作列那颗「测试」发起的请求:与真实请求同一条转发链路,但不计入报表统计": "モデル管理ページの操作列にある「テスト」から発行されたリクエスト:実際のリクエストと同じ転送経路を通りますが、レポート統計には含まれません", "正在加载请求日志…": "リクエストログを読み込んでいます…", "正在统计…": "統計中…", "正文超过单条上限,可能已被截断": "本文が 1 件あたりの上限を超えているため、切り詰められている可能性があります", "没有符合筛选条件的请求": "絞り込み条件に一致するリクエストがありません", "添加自定义头匹配规则…": "カスタムヘッダールールを追加…", "清理": "クリア", "清理中…": "クリア中…", "清理失败:{message}": "クリアに失敗しました:{message}", "清理方式": "クリア方法", "清理请求已返回,但结果数据不完整,请刷新后确认。": "クリア要求の結果データが不完全です。更新して結果を確認してください。", "清理请求日志": "リクエストログをクリア", "清理预览数据不完整": "クリアのプレビューデータが不完全です", "清空两侧原文": "両側の原文を削除", "生产请求": "本番リクエスト", "生成速度:输出 token ÷ 流式段用时(总用时 − 首响);流式段不足总用时一半时按总用时计": "生成速度:出力トークン ÷ ストリーミング時間(所要時間 − 初回応答)。ストリーミング時間が所要時間の半分未満の場合は所要時間で計算", "用时": "所要時間", "用量": "使用量", "确定对{scope}执行「{label}」?
    {summary}
    此操作无法恢复。": "{scope}に対して「{label}」を実行しますか?
    {summary}
    この操作は元に戻せません。", "确定对全部请求日志执行「{label}」?将处理 {count} 条,此操作无法恢复。": "すべてのリクエストログに対して「{label}」を実行しますか?{count} 件を処理します。この操作は元に戻せません。", "确定按当前筛选执行「{label}」?将处理 {count} 条,此操作无法恢复。": "現在の絞り込み条件で「{label}」を実行しますか?{count} 件を処理します。この操作は元に戻せません。", "确定终止这条正在转发的请求?
    上游连接会立即断开,明细将记为「请求已被手动终止」。": "この転送中のリクエストを中断しますか?
    アップストリーム接続はすぐに切断され、明細には「リクエストは手動で中断されました」と記録されます。", "等待响应": "応答待ち", "策略 {strategy} · 会话粘性 {sticky}{hit}": "戦略 {strategy} · セッション粘着 {sticky}{hit}", "终止": "中断", "终止失败:{error}": "中断に失敗しました:{error}", "终止请求": "リクエストを中断", "结果": "結果", "缓存读取: - / 命中率: -": "キャッシュ読み取り:- / ヒット率:-", "缓存读取: {cache} / 命中率: {rate}": "キャッシュ読み取り:{cache} / ヒット率:{rate}", "编辑这条头匹配规则…": "このヘッダールールを編集…", "耗时": "所要時間", "自定义 · {name}": "カスタム · {name}", "被跳过:": "スキップ:", "设置识别规则": "識別ルールを設定", "识别到 User-Agent,但不属于已知的客户端类型:{ua}": "User-Agent はありますが、既知のクライアント種別ではありません:{ua}", "识别结果(请求头识别出的真实客户端)": "識別結果(ヘッダーから識別された実際のクライアント)", "识图用量按实际视觉账号单独记录,不混入原模型的回答用量。": "画像読み取りの使用量は実際の視覚アカウントに個別記録され、元のモデルの回答使用量には混在しません。", "该供应商已有归属规则,保存将覆盖它": "このプロバイダーには既に帰属ルールがあり、保存すると上書きされます", "详情": "詳細", "详情内容": "詳細の内容", "请求体": "リクエストボディ", "请求图片": "リクエストの画像", "请求在任何账号接手之前就失败了": "リクエストはどのアカウントが引き継ぐ前に失敗しました", "请求头": "リクエストヘッダー", "请求头识别为 {identified},已改写归属为 {client}": "リクエストヘッダーでは {identified} と識別され、帰属先は {client} に書き換えられました", "请求已受理,正在选路、取凭证、建立上游连接": "リクエストを受け付けました。経路の選択、認証情報の取得、アップストリーム接続の確立を進めています", "请求日志列表": "リクエストログ一覧", "请求日志时间范围": "リクエストログの時間範囲", "请求日志表": "リクエストログテーブル", "请求正在转发中,用时列显示的是已用时": "リクエストは転送中です。所要時間列には経過時間が表示されます", "请求筛选": "リクエストの絞り込み", "请求详情": "リクエスト詳細", "请选择供应商": "プロバイダーを選択してください", "请选择归属客户端": "クライアントを選択してください", "读取请求日志失败,详见控制台": "リクエストログの読み込みに失敗しました。詳細はコンソールを確認してください", "路由回放": "ルーティングリプレイ", "转发到上游的模型:{model}": "アップストリームへ転送するモデル:{model}", "轮次": "回目", "辅助识图": "補助画像認識", "辅助识图调用": "補助画像読み取り呼び出し", "输入 {input} · 输出 {output} · 总计 {total} · 缓存读 {cache}": "入力 {input} · 出力 {output} · 合計 {total} · キャッシュ読み取り {cache}", "这条报文由旧版本截断保存,缺失内容无法恢复": "このペイロードは旧バージョンで切り詰めて保存されたため、欠落した内容は復元できません", "这条明细是一次模型测试(人工发起):走的是真实转发链路,但不计入报表统计": "この明細はモデルテスト(手動実行)です:実際の転送経路を通りますが、レポート統計には含まれません", "这条明细没有记录提供商(旧数据或请求未走到转发)": "この明細にはプロバイダーが記録されていません(旧データか、リクエストが転送まで到達しなかったため)", "这条明细没有记录来源客户端(旧数据、模型测试,或请求未带 User-Agent)": "この記録には接続元クライアントがありません(旧データ、モデルテスト、または User-Agent なしのリクエスト)", "这条记录命中了敏感词,但没有留下命中明细": "この記録はセンシティブワードにヒットしましたが、ヒット明細が残っていません", "这条记录的尝试明细未采集(该字段上线前的旧数据,或请求在转发前就失败)": "この記録の試行明細は収集されていません(このフィールドの実装前の旧データか、リクエストが転送前に失敗したため)", "这条请求没有保存这一段报文": "このリクエストではこの区間のペイロードが保存されていません", "这条请求没有记录供应商(旧数据或未走到转发),不能从这里改归属": "このリクエストにはプロバイダーの記録がなく(旧データまたは転送未遂)、ここでは帰属を変更できません", "进入「{phase}」阶段已持续 {time}": "「{phase}」段階に入ってから {time} 経過", "进行中": "処理中", "进行中…": "処理中…", "连接中": "接続中", "选择供应商": "プロバイダーを選択", "选择归属客户端": "クライアントを選択", "速度": "速度", "重试 {n}": "リトライ {n}", "重试中": "リトライ中", "重试次数": "リトライ回数", "面板内发起的模型调用,消耗额度并记录 Key,不计入生产报表": "パネルから開始したモデル呼び出しです。クォータを消費し、API Key を記録しますが、本番レポートには含めません", "预览对话": "会話プレビュー", "预览读取失败": "プレビューの読み込みに失敗しました", "预览读取失败:{error}": "プレビューの読み込みに失敗しました:{error}", "额外识图用量:{n} Token": "追加の画像読み取り使用量:{n} トークン", "首响 {time}": "初回応答 {time}", "首响:上游首帧到达的耗时": "初回応答:アップストリームの初回フレーム到達までの所要時間", "首响:上游首帧到达的耗时(请求仍在转发中)": "初回応答:アップストリームの初回フレーム到達までの所要時間(リクエストは転送中)", "首帧已到,上游内容正在下发": "初回フレームが到着し、アップストリームの内容を受信しています", "默认归属客户端": "既定の帰属クライアント", "(请求仍在转发中)": "(リクエストは転送中)", "(账号:{account})": "(アカウント:{account})", ",{n}毫秒后重试": "、{n}ミリ秒後にリトライ", ",{n}秒后重试": "、{n}秒後にリトライ" }); diff --git a/desktop-tauri/ui/i18n/ja/settings.js b/desktop-tauri/ui/i18n/ja/settings.js index 2edda431..c2ac5eb2 100644 --- a/desktop-tauri/ui/i18n/ja/settings.js +++ b/desktop-tauri/ui/i18n/ja/settings.js @@ -1,2 +1,2 @@ /* Agent2API 词典构建产物:ja/settings —— 由 desktop-tauri/i18n/build.mjs 生成,请勿手改;源头是 i18n-src/*.json */ -window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { " 到 {file}": " {file} へ", " 正文已改:{edited}(其余段用官方原文)。": " 本文変更あり:{edited}(残りの段は公式原文を使用)。", "(无 id)": "(id なし)", "/v1 拒绝无 Key 请求": "/v1 はキーなしのリクエストを拒否", "0 B": "0 B", "100%(默认)": "100%(デフォルト)", "<本机IP>": "<本機の IP>", "ALTCHA(本地验证)": "ALTCHA(ローカル認証)", "Access Key ID": "Access Key ID", "Agent2API 手机端": "Agent2API モバイル", "Android 应用(APK)": "Android アプリ(APK)", "Cline 上游按请求头判定「调用方是不是 Cline 自家产品」:X-CLIENT-TYPE: cline-sdk 是硬门槛(缺了它免费池模型一律 403),版本号与平台标识让请求更贴近官方客户端的形态。这里列出的是网关默认会发的头:改某一行的值 = 覆盖默认值(也可以新增默认清单之外的自定义头);把值清空保存 = 这个头不发送;在界面删掉被改过的行 = 回落默认值。改完点「保存」,下一个 Cline 请求立即生效。不懂某一行的含义就不要动它 —— 伪装头的价值在「与官方客户端逐字一致」。": "Cline のアップストリームはリクエストヘッダーで「呼び出し元が Cline 自社製品かどうか」を判定します:X-CLIENT-TYPE: cline-sdk は必須条件で(これが欠けると無料プールのモデルは一律 403)、バージョン番号とプラットフォーム識別子がリクエストを公式クライアントの形に近づけます。ここに並ぶのはゲートウェイがデフォルトで送信するヘッダーです:いずれかの行の値を変更 = デフォルト値を上書き(デフォルト一覧にないカスタムヘッダーの追加も可);値を空にして保存 = そのヘッダーを送信しない;画面で変更した行を削除 = デフォルト値にフォールバック。変更後は「保存」をクリックすると、次の Cline リクエストから即時有効です。各行の意味が分からない場合は触らないでください —— 偽装ヘッダーの価値は「公式クライアントとの逐語一致」にあります。", "Cline 伪装头": "Cline 偽装ヘッダー", "Cline 伪装头已刷新": "Cline 偽装ヘッダーを更新しました", "Docker 容器": "Docker コンテナ", "Endpoint": "Endpoint", "Endpoint 填 https://<账户ID>.r2.cloudflarestorage.com,Region 固定填 auto。": "Endpoint に https://<アカウントID>.r2.cloudflarestorage.com を、Region には auto を指定します。", "Endpoint 填 https://cos.ap-guangzhou.myqcloud.com,Region 填 ap-guangzhou(按实际地域改)。": "Endpoint に https://cos.ap-guangzhou.myqcloud.com を、Region には ap-guangzhou を指定します(実際のリージョンに合わせて変更)。", "Endpoint 填 https://obs.cn-north-4.myhuaweicloud.com,Region 填 cn-north-4(按实际地域改)。": "Endpoint に https://obs.cn-north-4.myhuaweicloud.com を、Region には cn-north-4 を指定します(実際のリージョンに合わせて変更)。", "Endpoint 填 https://oss-cn-hangzhou.aliyuncs.com,Region 填 cn-hangzhou(按实际地域改)。": "Endpoint に https://oss-cn-hangzhou.aliyuncs.com を、Region には cn-hangzhou を指定します(実際のリージョンに合わせて変更)。", "Endpoint 形如 http://192.168.1.10:9000(自建通常用 http);Region 一般填 us-east-1。": "Endpoint は http://192.168.1.10:9000 のような形式(自前ホストでは通常 http)で、Region は通常 us-east-1 です。", "Endpoint 留空即走 AWS 官方地址;Region 必须与桶所在区域一致。": "Endpoint を空欄にすると AWS 公式アドレスを使用します。Region はバケットのリージョンと一致させてください。", "KB": "KB", "Linux 安装包(deb)": "Linux パッケージ(deb)", "Logo 不能超过 2 MiB": "ロゴは 2 MiB 以下にしてください", "Logo 仅支持 PNG、JPG、WebP 图片": "ロゴには PNG、JPG、WebP 画像のみ使用できます", "Nextcloud": "Nextcloud", "OpenAI 新版 API 用 developer 角色取代 system 承载指令,新版 OpenAI SDK 与部分客户端发的对话里会出现 role 为 developer 的消息;不少 OpenAI 兼容上游(尤其是自定义提供商的透传路径)不认识这个角色,收到就报 400。开启本项后,网关在每次转发前把 developer 角色的消息改写为 system —— 两类角色在 OpenAI 语义上等价(OpenAI 自己的迁移指南也是这么映射的),改写不影响对话内容与语义;对本来就只认 system 的各家内置上游同样无害。默认开启;关掉后 developer 消息会原样发往上游,不认识它的上游会报「角色不存在」一类的错误。": "新版の OpenAI API は system に代わって developer ロールで指示を伝えるため、最新の OpenAI SDK や一部クライアントが送る会話には role が developer のメッセージが含まれます。多くの OpenAI 互換アップストリーム(特にカスタムプロバイダーの透過パス)はこのロールを認識せず、受け取ると 400 を返します。有効にすると、ゲートウェイは毎回の転送前に developer ロールのメッセージを system に書き換えます —— 両ロールは OpenAI のセマンティクス上で等価(OpenAI 自身の移行ガイドも同じマッピング)なので、書き換えは会話の内容と意味に影響しません。もともと system しか受け付けない内蔵アップストリームにとっても無害です。デフォルトは有効。無効にすると developer メッセージはそのまま送られ、このロールを認識しないアップストリームは「ロールが存在しない」系のエラーを返します。", "QQ 群 · Telegram": "QQ グループ · Telegram", "S3 兼容存储": "S3 互換ストレージ", "Safari 没有安装按钮:点底部的「分享」,选「添加到主屏幕」,再点「添加」。": "Safari にはインストールボタンがありません。下部の「共有」→「ホーム画面に追加」→「追加」の順にタップしてください。", "Secret Access Key": "Secret Access Key", "Token 读数量级": "Token の数値表記", "UTF-8 文本文件路径,留空用内置默认提示词(通用编码助手提示词,不含任何会被上游拦截的模板句)。只在「替换 / 追加」模式下生效,透传模式不读它。": "UTF-8 テキストファイルのパス。空欄なら内蔵のデフォルトシステムプロンプトを使用(汎用コーディングアシスタント用プロンプトで、アップストリームにブロックされるテンプレート文は含みません)。「置換 / 追加」モードでのみ有効で、パススルーモードでは読み込まれません。", "WebView / 浏览器内核": "WebView / ブラウザエンジン", "Windows 安装包(NSIS)": "Windows インストーラー(NSIS)", "Windows 服务": "Windows サービス", "ZCode 套餐池(Start Plan)通道每条请求都要消耗一个当次铸造的人机验证令牌(一次性,2 分钟过期),库存低于该值时界面自动补铸到它。默认 3 个。调大能吸收突发并发,但用不掉的令牌 2 分钟就过期作废,烧的是上游风控配额。可填 1–10。": "ZCode プランプール(Start Plan)経路の各リクエストは、その場で生成された CAPTCHA トークン(1 回限り、2 分で失効)を 1 個消費します。在庫がこの値を下回ると、UI がこの値まで自動補充します。既定は 3。大きくすると突発的な同時実行を吸収できますが、使い切れなかったトークンは 2 分で失効し、上流のリスク管理クォータを消耗します。1〜10 を指定できます。", "ZCode「套餐池(Start Plan)」通道的每条推理请求都要附一个当次铸造的阿里云无痕验证令牌(一次性、约 2 分钟过期):令牌由界面里的铸造守卫静默铸好、推给网关入池,转发时逐条取用。这里的三个值管的是补货节奏:①「库存目标」= 库存低于它守卫才补铸、补到它为止,默认 3 个;②「轮询间隔」= 守卫多久看一次库存,默认 2500 毫秒,只影响反应速度(库存够用时不会多铸);③「单轮铸造上限」= 发现缺货时一轮最多铸几个,默认 1 个(连铸之间固定隔 500 毫秒)。请求密集、请求日志里连续出现「需要人机验证令牌」的 503 时,把目标与单轮上限适当调大、轮询调快,能让池子跟得上消耗 —— 代价是上游(阿里云)对铸造频率有风控,铸得越多越快越容易触发限流,且用不掉的令牌 2 分钟即过期作废、等于白烧配额,所以建议小步调。保存后对下一轮补货立即生效,不用重启。": "ZCode「プランプール(Start Plan)」経路の各推論リクエストには、その場で生成された Aliyun インビジブル CAPTCHA トークン(1 回限り、約 2 分で失効)を添える必要があります:トークンは UI 内のミントガードが静かに生成してゲートウェイのプールへ入れ、転送時にリクエストごとに取り出します。ここの 3 つの値は補充のリズムを管理します:①「在庫目標」= 在庫がこの値を下回ったときだけこの値まで補充(既定 3);②「ポーリング間隔」= ガードが在庫を確認する間隔、既定 2500 ミリ秒(反応速度にのみ影響。在庫が十分なら余計に生成しません);③「1 ラウンドの生成上限」= 在庫切れを検出した 1 ラウンドで生成する最大数、既定 1(連続生成の間は固定 500 ミリ秒)。リクエストが密で、リクエストログに「CAPTCHA トークンが必要」の 503 が続く場合は、目標と 1 ラウンド上限を適度に上げ、ポーリングを速めるとプールが消費に追いつきます —— ただし上流(Aliyun)は生成頻度にリスク管理があり、多く速く生成するほど制限に触れやすく、使い切れなかったトークンは 2 分で失効してクォータの無駄になるため、小刻みな調整を推奨します。保存すると次の補充ラウンドから即時反映、再起動不要。", "beta 版": "beta 版", "iOS 应用": "iOS アプリ", "models.dev 元数据": "models.dev メタデータ", "models.dev 元数据已更新({count} 条)": "models.dev メタデータを更新しました({count} 件)", "models.dev 是一个开源的模型资料库(社区维护),这里用它补齐「上游没告诉我们」的模型能力:上下文窗口、最大输出、工具调用、图片、视频、是否支持思考,以及这个模型认识哪些思考档位。优先级是:你在「模型能力」里手工改的值 > 上游清单自己声明的值 > models.dev 的值 —— 它只填上游没声明的空位,从不推翻上游已声明的。网关随包内嵌了一份快照,所以离线、首次启动、访问不通时也有数据;开启时会按「模型目录刷新」任务的间隔联网更新(同一轮里一并刷新,也可在这里立即刷新)。关闭只停联网刷新,已经拿到的数据继续用。": "models.dev はコミュニティが維持するオープンソースのモデルデータベースです。上流が教えてくれなかった情報(コンテキスト長、最大出力、ツール呼び出し、画像、動画、推論の可否、およびそのモデルが実際に受け付ける推論レベル)をここで補います。優先順位は「モデル能力」で手動変更した値 > 上流カタログの宣言値 > models.dev の値 —— 上流が宣言した値を覆すことはなく、空欄だけを埋めます。スナップショットを同梱しているため、オフライン・初回起動・通信不可でもデータがあります。有効時は「モデルカタログ更新」タスクの間隔でオンライン更新します(同じ回でまとめて、またはここで即時)。オフにするとオンライン更新だけが止まり、取得済みのデータは引き続き使われます。", "models.dev 模型元数据": "models.dev モデルメタデータ", "systemd 服务": "systemd サービス", "{count} 条": "{count} 件", "{count} 条 · 来自{origin}{at} · {mode}": "{count} 件 · 出典: {origin}{at} · {mode}", "{count} 条规则,按列表顺序执行": "{count} 件のルールを一覧順に実行", "{d} 天 {h} 小时": "{d} 日 {h} 時間", "{h} 小时 {m} 分钟": "{h} 時間 {m} 分", "{label} 提示词文件": "{label} のシステムプロンプトファイル", "{label} 的提示词模式": "{label} のシステムプロンプトモード", "{label}({message})": "{label}({message})", "{lines} 行、{chars} 字符(按当前草稿计)": "{lines} 行、{chars} 文字(現在の下書きで算出)", "{minutes} 分钟": "{minutes} 分", "{models} 同时出现在两块设置里,会按「辅助识图」处理。想改的话,把其中一个从这边的模型名单里去掉。": "{models} が両方のブロックに入っています。この場合は「補助読み取り」で処理されます。変更するには、どちらかのモデル一覧から外してください。", "{mode}生效:上游收到的 system 来自{source}{lines}。": "{mode}が有効:アップストリームが受け取る system の出所は{source}{lines}。", "{m} 分钟": "{m} 分", "{noun}不能为空(可填 {min}–{max})": "{noun}は空にできません({min}–{max} を入力できます)", "{noun}必须在 {min}–{max} 之间(当前填的是 {text})": "{noun}は {min}–{max} の範囲で入力してください(現在の入力値:{text})", "{noun}必须是整数": "{noun}は整数でなければなりません", "{n} B": "{n} B", "{n} GB": "{n} GB", "{n} KB": "{n} KB", "{n} MB": "{n} MB", "{n} 个头将随每个 Cline 请求发送": "{n} 個のヘッダーが各 Cline リクエストとともに送信されます", "{n} 台可选 · 点此切换": "{n} 台 · タップして切り替え", "{n} 项 · {shown} 显示": "{n} 項目 · {shown} 表示", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "メニュー {total} 件 · 表示 {shown} · 非表示 {hidden} · グループ {groups} 件", "{way}的适用模型": "{way}の対象モデル", "⚠️ 密钥警告": "⚠️ キーの警告", "⚠️ 已关闭「{label}」的机器人校验": "⚠️「{label}」のボット対策を無効にしました", "⚠️ 机器人校验已关闭": "⚠️ ロボット検証をオフにしました", "✅ Cline 伪装头已保存": "✅ Cline 偽装ヘッダーを保存しました", "✅ models.dev 模型元数据已开启": "✅ models.dev モデルメタデータを有効にしました", "✅ 云同步设置已保存": "✅ クラウド同期の設定を保存しました", "✅ 会话图片压缩已开启": "✅ 画像圧縮を有効にしました", "✅ 出站指纹脱敏已开启": "✅ フィンガープリントのマスキングをオンにしました", "✅ 密码已修改,其他设备的登录已失效": "✅ パスワードを変更しました。他の端末のログインは無効になりました", "✅ 导入完成:{summary}": "✅ インポート完了:{summary}", "✅ 已上传到云端({size})": "✅ クラウドにアップロードしました({size})", "✅ 已为「{label}」装上网关自带提示词": "✅ 「{label}」にゲートウェイ内蔵のシステムプロンプトを適用しました", "✅ 已从云端恢复{note}": "✅ クラウドから復元しました{note}", "✅ 已保存:{label}": "✅ 保存しました:{label}", "✅ 已保存:{label} {value}": "✅ 保存しました:{label} {value}", "✅ 已保存:指定错误码直接换号": "✅ 保存しました:指定エラーコードで直接アカウント切替", "✅ 已保留 {days} 天": "✅ {days} 日間保持しました", "✅ 已保留 {days} 天,超出部分已清理": "✅ {days} 日間保持し、超過分を削除しました", "✅ 已加密备份 {n} 张表({size}),包含恢复密钥:{file}": "✅ {n} テーブルを暗号化バックアップしました({size})。復元鍵を含む:{file}", "✅ 已备份 {n} 张表({size})到 {file}": "✅ {n} テーブル({size})を {file} へバックアップしました", "✅ 已导入账号密钥,请继续下载": "✅ アカウントキーをインポートしました。ダウンロードを続けてください", "✅ 已导出 {count} 个账号{note}{file}": "✅ {count} 件のアカウントをエクスポートしました{note}{file}", "✅ 已开启「{label}」的机器人校验": "✅「{label}」のボット対策を有効にしました", "✅ 已恢复 {n} 张表{note}": "✅ {n} テーブルを復元しました{note}", "✅ 已改用 k / M / B 缩写": "✅ k / M / B の略記に切り替えました", "✅ 已改用本地量级词(万 / 亿式)": "✅ ローカル量級語(万 / 億式)に切り替えました", "✅ 已自动创建网关 Key「默认」(可在「网关 Key」页查看)": "✅ ゲートウェイキー「デフォルト」を自動作成しました(「ゲートウェイキー」ページで確認できます)", "✅ 已解除内容拦截降级": "✅ コンテンツブロックのフォールバックを解除しました", "✅ 开发者角色兼容已开启": "✅ developer ロール互換を有効にしました", "✅ 指纹脱敏设置已保存": "✅ フィンガープリントのマスキング設定を保存しました", "✅ 数量上限已设为 {count} 条": "✅ 件数上限を {count} 件に設定しました", "✅ 数量上限已设为 {count} 条,超出部分已清理": "✅ 件数上限を {count} 件に設定し、超過分を削除しました", "✅ 机器人校验已开启": "✅ ロボット検証をオンにしました", "✅ 第三方模型回答完自动折叠过程已开启": "✅ サードパーティモデルの回答後の工程の自動折りたたみを有効にしました", "✅ 设置已保存,应用正在重启…": "✅ 設定を保存しました。アプリを再起動しています…", "✅ 调试模式已关闭": "✅ デバッグモードをオフにしました", "✅ 调试模式已开启": "✅ デバッグモードをオンにしました", "✅ 路由设置已保存": "ルーティング設定を保存しました", "✅ 连接成功:{path}": "✅ 接続に成功しました:{path}", "、{n} 个自定义提供商": "、カスタムプロバイダー {n} 件", "。事件日志、请求明细、调试报文与面板登录态保持不变。替换前会自动把当前业务数据备份到配置目录的 backups/ 下。": "。イベントログ・リクエスト明細・デバッグ通信記録・パネルのログイン状態は変更されません。置き換え前に現在の業務データを設定ディレクトリの backups/ に自動でバックアップします。", "「{label}」将从 {previous} 天改为 {days} 天。": "「{label}」を {previous} 日から {days} 日へ変更します。", "「{label}」将从 {previous} 条改为 {count} 条。": "「{label}」を {previous} 件から {count} 件に変更します。", "「{label}」改用内置默认提示词": "「{label}」を内蔵のデフォルトシステムプロンプトに切り替えました", "「{label}」的提示词文件已更新": "「{label}」のシステムプロンプトファイルを更新しました", "「{label}」的提示词正文已更新": "「{label}」のシステムプロンプト本文を更新しました", "「{label}」的模式改为「{mode}」": "「{label}」のモードを「{mode}」に変更しました", "「{label}」的网关自带提示词已改回官方原文": "「{label}」のゲートウェイ内蔵システムプロンプトを公式原文に戻しました", "「{label}」的网关自带提示词正文已更新": "「{label}」のゲートウェイ内蔵システムプロンプトの本文を更新しました", "「模型管理」里每个能力的来源标记(上游 / models.dev / 已覆盖)读的就是这份数据;映射弹窗的思考档位下拉也按这里的数据只列该模型真实认识的档位。": "「モデル管理」の各能力の出典表示(上流 / models.dev / 上書き済み)はこのデータを読んでいます。マッピングダイアログの推論レベル選択も、ここに基づいてそのモデルが実際に受け付けるレベルだけを並べます。", "「用哪份提示词」本来是按上游分别决定的事,所以每家可以有自己的模式、提示词文件与正文:不在这里列出的提供商一律沿用上面那份默认设置,「跟随默认」把这一家取消、回到默认。带「网关自带」那一行的家(目前是 ZCode 两家)默认就列在这里 —— 那一段是网关自己装上去的文本,不来自客户端也不来自提示词文件,默认开启、可以关掉,也可以改它的正文(改过的那一段以你的文本为准);关掉后还能不能通过上游校验,取决于上游当下的口径,行内说明了实测依据。「模式 / 提示词文件 / 正文」管的是客户端自己的 system 怎么处理,与那个开关是两件事。": "「どのシステムプロンプトを使うか」は本来アップストリームごとに決める話なので、各プロバイダーが独自のモード・システムプロンプトファイル・本文を持てます:ここに表示されないプロバイダーはすべて上記のデフォルト設定を引き継ぎ、「デフォルトに従う」でそのプロバイダーの設定を解除してデフォルトに戻します。「ゲートウェイ内蔵」の行があるプロバイダー(現在は ZCode の 2 社)はデフォルトでここに表示されます —— その部分はゲートウェイが自ら組み込むテキストで、クライアントからもシステムプロンプトファイルからも来ません。デフォルトはオンで、オフにもでき、本文も変更できます(変更した部分はあなたのテキストが優先)。オフにした後でアップストリームの検証を通過できるかは、アップストリームの現時点の基準次第です(行内に実測の根拠を記載)。「モード / システムプロンプトファイル / 本文」はクライアント自身の system をどう扱うかの設定で、あのスイッチとは別物です。", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "「設定」は固定項目のため、そのグループはまとめて非表示にできません。他のメニューは個別に非表示にできます", "「请求日志」页的逐条请求记录,默认 99999 天(近似全量保留),可填 1–99999 天。": "「リクエストログ」ページのリクエストごとの記録。既定は 99999 日(ほぼ全量保持)で、1〜99999 日を指定できます。", "「请求日志」页的逐条请求记录,默认 99999 天,可填 1–99999 天;同时受数量上限限制。": "「リクエストログ」ページのリクエストごとの記録。既定は 99999 日で、1–99999 日を指定できます。件数上限も適用されます。", "一个 .a2ab 文件即可跨机器恢复,账号、网关 Key、GitHub 令牌与云同步凭据无需另行复制密钥。插件程序与库外文件不在整库备份范围。": "1 つの .a2ab ファイルで別端末に復元でき、アカウント、ゲートウェイ Key、GitHub トークン、クラウド同期認証情報の鍵を別途コピーする必要はありません。プラグインのプログラムとデータベース外のファイルは対象外です。", "一段内置装配": "内蔵の定型ブロック", "三档数据各自独立计时,超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件;请求日志是网关每次转发到上游的逐条记录;按天聚合供报表页的热力图与按天趋势使用。请求日志与按天聚合默认 99999 天(约 274 年,效果上等于全量保留),事件日志默认 30 天。把某一档改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。三档的可填范围均为 1–99999 天。": "3 種類のデータはそれぞれ独立して計時され、保存日数を超えた部分は削除されます:イベントログはログイン、アカウント切替、429 切替といったシステムイベント;リクエストログはゲートウェイがアップストリームへ転送するたびの記録;日次集計はレポートページのヒートマップと日次トレンドに使われます。リクエストログと日次集計の既定は 99999 日(約 274 年、実質的に全量保持)、イベントログの既定は 30 日です。いずれかを小さくして(例:30 日→7 日)保存すると、超えた履歴データは即座に削除され、元に戻せません。大きくするか変更しない場合は何も削除されません。3 つとも指定できる範囲は 1〜99999 日です。", "三段各自成块,所以分开编辑": "3 つの段はそれぞれ独立したブロックになるため、分けて編集します", "上传": "アップロード", "上传 Logo": "ロゴをアップロード", "上传中…": "アップロード中…", "上传内容含加密后的账号凭证与网关配置": "アップロード内容には暗号化されたアカウント認証情報とゲートウェイ設定が含まれます", "上传到云端": "クラウドへアップロード", "上传失败:{message}": "アップロードに失敗しました:{message}", "上次同步:{time}({action})": "前回の同期:{time}({action})", "上次成功刷新的结果(存在本机数据库里)": "前回の更新に成功した結果(ローカルデータベースに保存)", "上游 CLI 版本": "上流 CLI のバージョン", "上游客户端版本": "上流クライアントのバージョン", "上游按": "アップストリームは", "上游按「结构」校验身份:三段必须各自成块,所以这里分开编辑三段(不能合成一段)。动态段里的运行值写成占位符,发请求时才替换:{cwd} 工作目录、{platform} 平台、{shell} shell、{os_version} 系统版本、{git} 是否 git 仓库、{provider} 提供方标识、{model} 模型名。清空某一段 = 那一段恢复官方原文。第三段发出时前面会自带一个空行(官方形状)。": "アップストリームは「構造」で身元を検証します:3 つの段はそれぞれ独立したブロックとして並ぶ必要があるため、ここでは 3 つの段を別々に編集します(1 段にまとめることはできません)。動的段の実行値はプレースホルダーとして記述し、リクエスト送信時に置換されます:{cwd} 作業ディレクトリ、{platform} プラットフォーム、{shell} シェル、{os_version} OS バージョン、{git} git リポジトリかどうか、{provider} 提供元識別子、{model} モデル名。ある段を空にする = その段は公式原文に戻ります。第 3 段は送信時に先頭へ空行が 1 つ自動的に付きます(公式の形状)。", "上游未配置": "上流が未設定", "上游模型繁忙时会先排队(回一句「建议 N 秒后再来」):网关等一会儿再发同一请求,最多等几次。默认 2 次,可填 0–10;填 0 表示不等待,排队直接返回 503 并说明「不是登录态或额度问题」。": "アップストリームのモデルが混雑していると、まずキューイングされます(「N 秒後に再試行することをおすすめします」と返ってくる形で):ゲートウェイはしばらく待ってから同じリクエストを再送し、最大で数回まで待ちます。デフォルトは 2 回で、0–10 を入力できます。0 を入力すると待たずに、キューイングが直接 503 を返し「ログイン状態やクォータの問題ではない」と説明します。", "上游用「逐字精确匹配」的方式审核请求体(不是语义审核):客户端注入的固定模板句、计费头字段名、以及某些裸错误码出现在报文里就会整单拦截,返回 400。开启本项后,网关在每次转发前改写这些指纹 —— 表头键值整段删除,承载语义的模板句只换一个词(如 official CLI for Claude → official CLI tool for Claude),对话内容与语义都不受影响。规则集是内置的,不需要也无法维护词表。关掉本项后客户端模板会原样发往上游,可能重新出现模板句被误拦的报错。": "アップストリームはリクエスト本文を「逐語完全一致」で審査します(意味的な審査ではありません):クライアントが注入する固定テンプレート文、課金ヘッダーのフィールド名、および一部の裸のエラーコードがメッセージに現れると、リクエスト全体がブロックされ 400 が返ります。本項目をオンにすると、ゲートウェイは転送のたびにこれらのフィンガープリントを書き換えます —— ヘッダーのキーと値は丸ごと削除し、意味を担うテンプレート文は 1 語だけ置き換えます(例:official CLI for Claude → official CLI tool for Claude)。会話の内容と意味は一切影響を受けません。ルールセットは内蔵で、単語リストを保守する必要もできません。本項目をオフにするとクライアントのテンプレートがそのままアップストリームへ送られ、テンプレート文が誤ってブロックされるエラーが再発する可能性があります。", "上游请求四个阶段各自的等待上限(秒,1~3600):①「连接中超时」= 建立 TCP/TLS 连接或代理隧道的最大等待,默认 30 秒;②「等待响应超时」= 请求发出后等上游响应头的最大时间,默认 300 秒 —— 网关请求上游恒带 stream,响应头在 SSE 建立时就到达,与模型思考多久无关;③「流式响应空闲超时」= 流式响应相邻两块数据之间允许的最大空闲,收到新数据即重新计时,默认 300 秒 —— 上游长时间不吐数据即判定连接僵死并断开;④「非流式响应超时」= 读完整份非流式响应体的总预算(一次性计时、不重置),默认 300 秒。四项都是「等待上限」,只要数据还在来,正常的流式回答就一直往下传。保存后对下一个请求立即生效,不用重启。": "アップストリームリクエストの 4 段階それぞれの待機上限(秒、1~3600):①「接続タイムアウト」= TCP/TLS 接続またはプロキシトンネルを確立する最大待機時間、デフォルト 30 秒;②「応答待ちタイムアウト」= リクエスト送出後、アップストリームのレスポンスヘッダーを待つ最大時間、デフォルト 300 秒 —— ゲートウェイはアップストリームへのリクエストに常に stream を付け、レスポンスヘッダーは SSE の確立時点で到着するため、モデルがどれだけ考えるかとは無関係です;③「ストリーミング応答アイドルタイムアウト」= ストリーミング応答の隣接する 2 つのデータ間に許される最大アイドル時間で、新しいデータを受信すると計時がリセットされます、デフォルト 300 秒 —— アップストリームが長時間データを出さなければ接続が死んだと判定して切断します;④「非ストリーミング応答タイムアウト」= 非ストリーミング応答本文全体を読み切る総予算(一度だけ計時、リセットなし)、デフォルト 300 秒。4 項目はいずれも「待機上限」で、データが流れ続けている限り、正常なストリーミング応答はそのまま流れ続けます。保存後は次のリクエストから即時有効で、再起動は不要です。", "上游调试报文": "アップストリームのデバッグペイロード", "上移": "上へ", "上移规则": "ルールを上へ移動", "下次自动重试:{time}": "次の自動再試行:{time}", "下游正文": "ダウンストリーム本文", "下移": "下へ", "下移规则": "ルールを下へ移動", "下载失败:{message}": "ダウンロードに失敗しました:{message}", "不一致": "不一致", "不做会话识别,每条请求都重新按策略选路。": "セッションを識別せず、リクエストごとに戦略に従って選び直します。", "不做图片兼容": "画像互換処理を行わない", "不可用": "利用不可", "与网关同源的面板;完整管理功能在桌面端": "ゲートウェイと同一オリジンのパネルです。詳細な管理はデスクトップ版で行います", "两张开关分别管桌面端(应用内窗口,也包含开启局域网访问后从其他设备访问的那份面板)与网页端(Docker / 服务端自托管的浏览器面板)。默认都开启;桌面端只在本机使用、嫌验证耗时可以关掉,网页端暴露在网络上,建议保持开启。": "2 つのスイッチはデスクトップ側(アプリ内ウィンドウ。LAN アクセス有効時に他端末から開くパネルも含む)と Web 側(Docker / サーバーが配信するブラウザパネル)を個別に制御します。既定はどちらも有効です。ローカル専用で認証の待ち時間が気になる場合はデスクトップ側を切っても構いませんが、ネットワークに露出する Web 側は有効のままを推奨します。", "两次输入的备份密码不一致": "バックアップのパスワードが一致しません", "两次输入的新密码不一致": "新しいパスワードが一致しません", "两次重试之间的等待时间,两项共用,可填 0–300 秒。": "2 回のリトライ間の待機時間。2 項目で共用し、0–300 秒を入力できます。", "两种方式不会互相自动切换。": "2つの方式が自動で切り替わることはありません。", "两组设置分别用于桌面端托管的网页管理面板与网页端(Docker / 服务端)的浏览器面板。是否可被其他设备访问取决于网络访问与防火墙设置,不限于局域网。两端默认都开启人机验证,建议保持开启。": "2 つの設定グループは、デスクトップアプリが配信する Web 管理パネルと、Docker / サーバーが配信するブラウザーパネルにそれぞれ適用されます。他の端末からのアクセスはネットワークアクセスとファイアウォールの設定で決まり、LAN に限定されません。人間であることの確認はどちらも既定で有効です。有効のままにすることを推奨します。", "为了安全,开启前需要先注册一个": "安全のため、オンにする前に", "主进程未返回启动设置,请更新桌面端后重试": "メインプロセスが起動設定を返しませんでした。デスクトップアプリを更新してから再試行してください", "主进程桥不可用": "メインプロセスのブリッジを利用できません", "主题": "テーマ", "事件日志": "イベントログ", "事件日志保留天数": "イベントログの保存日数", "云同步": "クラウド同期", "产品名": "製品名", "产品名不能包含斜杠或版本号,请改用前缀匹配": "製品名にスラッシュやバージョン番号は含められません。前方一致を使用してください。", "人机验证": "人間確認", "人机验证失败": "人間確認に失敗しました", "人机验证已完成": "人間確認が完了しました", "人机验证还在计算,请稍候": "人間確認を計算中です。しばらくお待ちください", "仅在同一会话、同一问题和相同权限范围内复用;追问新细节会重新识读。缓存只存在本机内存。": "同じ会話・質問・権限範囲内でのみ結果を再利用します。新しい詳細を尋ねると再度読み取ります。キャッシュはローカルメモリにのみ保持されます。", "仅在账号、配置、签到或余额等实质内容变化时上传;导出时间或查询时间单独变化不会触发上传。": "アカウント、設定、チェックイン結果、残高などの実質的な内容が変わった場合のみアップロードします。エクスポート時刻や照会時刻だけの変更ではアップロードしません。", "仅处理本次转发副本,不修改客户端选择,也不删除当前或历史图片。": "今回転送するコピーのみを処理します。クライアントの選択は変更せず、現在および過去の画像も削除しません。", "仅影响面板登录与注册,不影响 API Key 调用。保存后生效,已登录会话不会退出。": "パネルのログインと登録にのみ適用され、API キーによる呼び出しには影響しません。保存後すぐに有効になり、既存のセッションはログアウトされません。", "仅本机": "この端末のみ", "仅用现有数据、不联网刷新": "既存データのみ使用、オンライン更新なし", "从云端恢复": "クラウドから復元", "从桌面图标启动,全屏、无地址栏。想卸载:长按图标删除,或清除浏览器站点数据。": "ホーム画面のアイコンから起動します。全画面・アドレスバーなし。削除するにはアイコンを長押しして削除するか、ブラウザのサイトデータを消去してください。", "优先使用当前路由内的视觉模型": "現在のルート内の視覚モデルを優先", "优先在当前路由内找可用的视觉模型,找不到就用 {model} 直接回答,不再回到原模型。": "現在のルート内で使える視覚モデルを優先し、なければ {model} が元のモデルの代わりに直接回答します。", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "グループ・順序・表示設定を既定に戻します。作成したグループは削除されます(メニューは失われません)。", "会话图片压缩设置已刷新": "画像圧縮の設定を再読み込みしました", "位置": "場所", "位置与端口": "場所とポート", "使用 Rust 正则语法,保存时由后端校验;不支持环视和反向引用。": "Rust の正規表現構文を使用し、保存時にバックエンドで検証します。先読み・後読みと後方参照は使用できません。", "使用中文单位(亿 / 万)": "中国語の単位を使う(億 / 万)", "使用本地量级词(万 / 亿式)": "ローカル量級語(万 / 億式)を使用", "使用默认值": "既定値を使用", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "サイドバーのレイアウトモジュールが読み込まれていません(ui/sidebar-layout.js を app.js より前に読み込む必要があります)。", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "サイドバーにメニューが表示されていません。「設定 → 表示 → サイドバーのメニュー」で必要な項目をオンにしてください。", "侧边栏菜单": "サイドバーのメニュー", "保存上游原始报文(请求头、请求体、响应头、响应体)": "アップストリームの生メッセージを保存(リクエストヘッダー、リクエストボディ、レスポンスヘッダー、レスポンスボディ)", "保存单独配置": "モデル別設定を保存", "保存后以这里的文本为准": "保存後はここのテキストが優先されます", "保存后对下一轮补货立即生效,不用重启。守卫跑在应用界面里:轻量模式关窗销毁界面期间无法铸造,走套餐池(Start Plan)通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。": "保存すると次の補充ラウンドから即時反映され、再起動は不要です。ガードはアプリの UI 内で動作します:軽量モードでウィンドウを閉じて UI が破棄されている間はトークンを生成できず、プランプール(Start Plan)経路のリクエストは理由付きで 503 としてリクエストログに記録されます。UI を開き直すと自動的に復旧します。", "保存后应用将重启以生效。": "保存後、有効にするためアプリが再起動します。", "保存后状态读取立即生效。后台不会自动生成令牌;需要人机验证时,在账号的「套餐明细」中主动开始验证。模型请求免验证时无需保持界面打开。": "保存後、状態取得の設定はすぐに反映されます。トークンは自動生成しません。認証が必要な場合はアカウントの「プラン詳細」で開始してください。モデルリクエストが認証不要の場合、画面を開いたままにする必要はありません。", "保存后立即生效,不用重启:策略与粘性作用于**下一次**转发的选路,进行中的请求不受影响。": "保存するとすぐ反映、再起動不要:戦略と粘着は**次の**転送の選択から効き、処理中のリクエストには影響しません。", "保存后立即生效,不用重启;次数用尽仍失败时,错误原样返回给客户端。": "保存後は即時有効で再起動は不要です。回数を使い切ってもなお失敗する場合、エラーはそのままクライアントへ返されます。", "保存后立即生效,不用重启;超时按上游失败处理(计入请求日志的「错误」列,并按「请求重试」的设置决定是否重试)。": "保存後は即時有効で再起動は不要です。タイムアウトはアップストリームの失敗として扱われます(リクエストログの「エラー」列に計上され、「リクエストリトライ」の設定に従ってリトライするかどうかが決まります)。", "保存后立即生效:保留天数和数量上限同时生效,调小任一项会立即清理超出的历史数据,且不可恢复。": "保存後すぐに有効になります。保存日数と件数上限の両方が適用され、いずれかを減らすと超過した履歴データが直ちに削除されます。元に戻すことはできません。", "保存后立即生效:改小保留天数会立刻删除超出的历史数据,且不可恢复。": "保存後は即時有効:保存日数を小さくすると超過した履歴データがすぐに削除され、元に戻せません。", "保存在当前网关,登录页也会公开显示。不会更改安装包、快捷方式、系统托盘图标或软件版本信息。": "現在のゲートウェイに保存され、ログイン画面にも公開表示されます。インストーラー、ショートカット、システムトレイのアイコン、ソフトウェアのバージョン情報は変更しません。", "保存并重启": "保存して再起動", "保存设置": "設定を保存", "保持当前路由范围,不跳到其他路由组。": "現在のルート範囲を保ち、他のルートグループには移りません。", "保活换行丢弃": "keepalive 改行の除去", "保留原图和对话,由视觉模型直接回答本次请求。": "元の画像と会話を保持し、視覚モデルが今回のリクエストに直接回答します。", "保留原图,选择视觉模型": "元の画像を保持し、視覚モデルを選択", "保留图片中的文字、代码、数字、布局与状态。识读失败就停止,不删图后继续回答。": "画像内の文字、コード、数値、配置、状態を保持します。読み取りに失敗した場合は停止し、画像を削除して回答を続けることはありません。", "保留天数已刷新": "保存日数を更新しました", "保留旧版配置兼容,当前不会自动连铸。每次点击「开始验证」只取得一枚令牌,失败或取消后停止。": "旧設定との互換性のために保持します。トークンの自動連続生成は行いません。「認証を開始」を押すたびにトークンを一つ取得し、失敗またはキャンセルで停止します。", "保留草稿并读取最新设置": "下書きを保持して最新設定を読み込む", "修改密码": "パスワード変更", "修改密码需要输入当前密码;修改成功后,其他设备 / 浏览器上的登录会立即失效,当前这条会话保留。": "パスワード変更には現在のパスワードが必要です。成功すると他の端末・ブラウザのログインは即座に無効になり、このセッションだけが残ります。", "值": "値", "值与默认值相同的行不占覆盖(存的是「改过的键」,不是全量配置);值留空保存表示这个头不发送,删除改过的行表示回落默认值。改完立即生效,不用重启。": "デフォルト値と同じ行は上書きとして扱われません(保存されるのは「変更されたキー」であり、全量の設定ではありません)。値を空にして保存するとそのヘッダーは送信されず、変更した行を削除するとデフォルト値にフォールバックします。変更後は即時有効で、再起動は不要です。", "值(留空 = 不发送)": "値(空欄 = 送信しない)", "停止并说明原因": "停止して理由を表示", "像素": "px", "允许其他设备访问前,需要设置面板管理员账号与密码。注册完成后会继续开启流程并重启应用。": "他の端末からのアクセスを許可する前に、パネル管理者のユーザー名とパスワードを設定してください。登録完了後に有効化を続行し、アプリを再起動します。", "允许其他设备访问网关": "他の端末からゲートウェイへのアクセスを許可", "允许局域网内的设备访问网关": "LAN 内のデバイスにゲートウェイへのアクセスを許可", "允许无 Key 裸跑": "キーなし実行を許可", "允许浏览器里的页面跨来源调用网关(/v1/*)": "ブラウザー内のページからクロスオリジンでゲートウェイを呼び出すことを許可(/v1/*)", "允许的域名": "許可するホスト名", "先发送原图,明确拒图后补救": "まず元の画像を送信し、明確に拒否された場合のみ互換処理", "先把图片交给视觉模型读一遍,再让原模型结合读到的内容回答。": "まず視覚モデルに画像を読ませ、読み取った内容を踏まえて元のモデルが回答します。", "全局配置": "グローバル設定", "全部已配置": "すべて設定済み", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 中,加密密钥单独保存在库外。跨机器备份请使用「整库备份 / 恢复」,不要只复制数据库。更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "アカウント、ログ、リクエスト記録、デバッグデータ、設定は agent2api.db に保存され、暗号鍵は別に保存されます。端末間の移行にはデータベースだけをコピーせず、全体バックアップ / 復元を使用してください。保存先を変更するには AGENT2API_PROXY_HOME を設定して再起動します。", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 这一个 SQLite 数据库里。备份时只需拷贝这个文件;更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "すべてのデータ(アカウント、イベントログ、リクエスト記録、デバッグメッセージ、設定)は、設定ディレクトリ配下の agent2api.db という単一の SQLite データベースにまとめて保存されます。バックアップ時はこのファイルをコピーするだけで済みます。保存場所を変更する場合は、環境変数 AGENT2API_PROXY_HOME を設定してからプログラムを再起動してください。", "全部角色": "すべてのロール", "全部角色沿用原有行为,包含思考内容和工具参数;指定角色时只改消息正文,未选角色及思考内容、工具参数保持原样。": "すべてのロールでは、推論内容とツール引数を含む従来の動作を維持します。ロールを指定するとメッセージ本文のみを書き換え、未選択のロール、推論内容、ツール引数は変更しません。", "共享视觉模型已变更,请重新确认并保存,避免把图片交给未经确认的模型。": "共有の視覚モデルが変更されました。未確認のモデルに画像を送信しないよう、再度確認して保存してください。", "共用设置:{providers}": "共有設定:{providers}", "关闭后不再提供网页管理面板,本机桌面程序仍可正常管理;已开启的 API 转发不受影响。": "無効にすると Web 管理パネルの配信を停止します。本機のデスクトップアプリでは引き続き管理でき、API 転送には影響しません。", "关闭后手动上传 / 下载也会被拒绝。": "オフにすると手動のアップロード / ダウンロードも拒否されます。", "关闭后网关只监听 127.0.0.1,其他设备将无法直接连接,网页管理面板也会一并关闭。已配置的网关 Key 与账号不受影响。": "無効にすると、ゲートウェイは 127.0.0.1 のみで待ち受け、他の端末から直接接続できなくなります。Web 管理パネルも無効になります。既存のゲートウェイキーとアカウントには影響しません。", "关闭后网关回到只监听 127.0.0.1,局域网内的设备将无法继续访问;已配置的网关 Key 与账号都不受影响。": "オフにするとゲートウェイは 127.0.0.1 のみの待ち受けに戻り、LAN 内のデバイスはアクセスできなくなります。設定済みのゲートウェイキーとアカウントは影響を受けません。", "关闭后,管理界面不再从局域网提供,只有本机的桌面程序可以管理;已开启的 API 转发不受影响。": "オフにすると、管理画面は LAN に公開されなくなり、本機のデスクトップアプリからのみ管理できます。有効になっている API 転送は影響を受けません。", "关闭局域网访问": "LAN アクセスをオフにする", "关闭并重启": "閉じて再起動", "关闭思考": "推論を無効化", "关闭窗口即退出程序,后台转发随之中断": "ウィンドウを閉じるとプログラムが終了し、バックグラウンドの転送も中断されます", "关闭窗口时最小化到托盘": "ウィンドウを閉じたときはトレイに最小化", "关闭窗口时程序不退出,转发继续在后台运行;退出请用托盘菜单": "ウィンドウを閉じてもプログラムは終了せず、転送はバックグラウンドで継続します。終了するにはトレイのメニューから操作してください", "关闭网络访问": "ネットワークアクセスを無効化", "兼容处理最长等待": "互換処理の最大待ち時間", "兼容处理最长等待(秒)": "互換処理の最大待ち時間(秒)", "内容拦截降级": "コンテンツブロックのフォールバック", "内置识别、自定义规则与来源声明": "内蔵識別、カスタムルール、呼び出し元の申告", "内置软件标识规则": "内蔵ソフトウェア識別ルール", "内置默认": "組み込みのデフォルト", "内置默认提示词": "内蔵のデフォルトシステムプロンプト", "再输入一次新密码": "新しいパスワードをもう一度入力", "凭据类请求头已脱敏。": "認証情報系のリクエストヘッダーはマスキング済みです。", "凭证只保存在这台手机上,按服务器分别存放": "認証情報はこの端末にのみ保存され、サーバーごとに分けて管理されます", "出问题时把这一页截图,或点「复制全部信息」把文本贴进反馈,一般就能定位到大致原因。": "問題が起きたらこのページをスクリーンショットするか、「すべての情報をコピー」でテキストを報告に貼ってください。大抵の原因はそれで絞り込めます。", "分享图标在 Safari 底部工具栏中间": "共有アイコンは Safari 下部ツールバーの中央にあります", "分组名": "グループ名", "分组名,例如「常用」": "グループ名(例:「よく使う」)", "切换视觉模型": "視覚モデルに切り替え", "切换视觉模型 · 视觉模型回答": "モデル切り替え · 視覚モデルが回答", "切换视觉模型配置": "視覚モデル切り替え設定", "切换账号重试次数": "アカウント切替のリトライ回数", "刚刚从 models.dev 拉到的最新数据": "models.dev から取得したばかりの最新データ", "删除 {code}": "{code} を削除", "删除分组": "グループを削除", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "グループ「{name}」を削除しますか?{n} 件のメニューは「{target}」へ移動するので失われません。", "删除匹配内容": "一致した内容を削除", "删除后不再接受这个分类的来源声明,历史记录保留原来的名称和用量。": "削除後はこの分類の申告を受け付けません。過去の記録には元の名前と使用量が残ります。", "删除后,新请求不再使用这条规则;历史记录保持不变。": "削除後は新しいリクエストにこのルールを使用しません。過去の記録は変わりません。", "删除客户端分类": "クライアント分類を削除", "删除状态码 {code}": "ステータスコード {code} を削除", "删除空分组「{name}」?": "空のグループ「{name}」を削除しますか?", "删除识别规则": "識別ルールを削除", "删除这个分组(组内菜单移到第一组)": "このグループを削除(メニューは最初のグループへ移動)", "刷新": "更新", "刷新失败:{message}": "更新に失敗しました: {message}", "前台运行": "フォアグラウンド実行", "前缀": "前方一致", "剥离上游审核黑名单指纹(改写请求体里的模板句与表头)": "アップストリーム審査のブラックリストフィンガープリントを除去(リクエスト本文のテンプレート文とヘッダーを書き換え)", "功能建议": "機能提案", "加入备选": "バックアップに追加", "加密备份必填,旧 SQL 可留空": "暗号化バックアップでは必須、旧 SQL では空欄可", "包含": "部分一致", "包含日志与调试报文": "ログとデバッグペイロードを含める", "包含:{items}": "含まれるもの:{items}", "匹配内容": "一致パターン", "匹配内容不能为空,且最多 {max} 个字符": "一致パターンは必須です。{max} 文字以内で入力してください", "匹配内容不能为空,最长 256 个字符": "一致条件は必須です。256文字以内で入力してください", "匹配原文含零宽空格,词表预览用 \\u{200b} 标出;编辑时保留该字符。": "パターンにゼロ幅スペースが含まれています。一覧では \\u{200b} と表示します。編集時はこの文字を保持してください。", "匹配方式": "一致方式", "区域(Region)": "リージョン(Region)", "华为云 OBS": "Huawei Cloud OBS", "单独指定视觉模型": "視覚モデルを個別に指定", "单轮铸造上限": "1 回の発行上限", "占用大小": "使用サイズ", "历史未记录识别依据": "過去の識別根拠は未記録です", "原来的「全局方式 + 模型单独配置」已按相同意思自动填成下面的模型名单,可以照用也可以重新调整;改动一处之后就会按新形式存下来。": "以前の「全体方式 + モデル個別設定」を同じ意味のまま下のモデル一覧に反映しました。そのまま使っても調整しても構いません。どこか 1 か所でも変更すると新しい形式で保存されます。", "原模型不能直接看图": "元のモデルは画像を直接認識できません", "原模型根据识读内容回答": "元のモデルが読み取り内容に基づいて回答", "去反馈": "フィードバックする", "去申请": "申請する", "反馈与需求": "フィードバックと要望", "发现缺货时一轮最多铸几个(连铸之间固定隔 500 毫秒)。默认 1 个:SDK 同一实例连铸容易互相干扰。调大补货更快,但单轮连铸越多越容易触发上游风控。可填 1–5。": "品切れ検知時に 1 回で最大いくつ発行するか(連続発行の間は固定で 500 ミリ秒あける)。既定は 1:同じ SDK インスタンスでの連続発行は干渉しやすいためです。大きくすると補充は速くなりますが、1 回に多く発行するほど上流のリスク制御に引っかかりやすくなります。1–5 を指定可。", "取消勾选后只备份业务数据(账号、配置与余额记录),文件显著变小;事件日志、请求统计与调试报文不会进备份文件。": "チェックを外すと業務データ(アカウント・設定・残高記録)だけをバックアップし、ファイルはかなり小さくなります。イベントログ・リクエスト統計・デバッグペイロードはバックアップに入りません。", "变更网页管理面板": "Web 管理パネルの変更", "只列单独配置过的家,其余沿用上面的全局配置": "個別に設定したものだけを表示し、それ以外は上記のグローバル設定を引き継ぎます", "只对「排队制」的上游生效:模型繁忙时上游不报错,只回一句「建议 N 秒后再来」,网关按建议时长等一会儿再发同一请求,等满次数仍排不上才把「排队中」作为错误返回(HTTP 503,文案会说明这不是登录态或额度问题)。等待发生在首个字节之前,吃的是「等待响应超时」那份预算 —— 两项设置一起决定一次请求最多卡多久;排队不会标记账号限额、也不会换账号(换谁都一样在排队)。保存后对下一个请求立即生效,不用重启。": "「キューイング方式」のアップストリームにのみ有効です:モデルが混雑しているとき、アップストリームはエラーを返さず「N 秒後に再試行することをおすすめします」とだけ返します。ゲートウェイは推奨された時間だけ待ってから同じリクエストを再送し、規定回数まで待っても順番が回ってこない場合にのみ「キューイング中」をエラーとして返します(HTTP 503。メッセージにはこれがログイン状態やクォータの問題ではないことが明記されます)。待機は最初のバイトより前に発生し、「応答待ちタイムアウト」の予算を消費します —— 2 つの設定が合わさって 1 つのリクエストが最大どれだけ停滞しうるかを決めます。キューイングはアカウントをレート制限としてマークせず、アカウントの切り替えも行いません(誰に切り替えても同じようにキューイングされます)。保存後は次のリクエストから即時有効で、再起動は不要です。", "只影响读图那一步的思考深度;两块设置统一用这个选择。": "画像を読む手順の思考の深さだけに影響します。2 つのブロックで共通の設定です。", "只有已安装、启用并声明了设置项的提供商会出现在这里。可前往插件页检查安装与启用状态。": "インストール済みで有効なプラグインが設定項目を提供している場合のみ表示されます。プラグインページでインストールと有効化の状態を確認できます。", "只沿用模型与思考等级,不借用视觉服务的内部 Key;仍受当前请求权限限制。": "モデルと推論レベルのみを利用し、視覚サービスの内部 Key は使用しません。現在のリクエストの権限制限が適用されます。", "只清掉这个浏览器存的 Key,不影响网关": "このブラウザに保存された Key のみ削除します。ゲートウェイには影響しません", "只覆盖指定提供商的指定模型,其余跟随全局。": "指定したプロバイダーの指定モデルのみを上書きし、それ以外は全体設定に従います。", "可跨提供商多选;只处理这些模型看不了的图片。": "プロバイダーをまたいで複数選択できます。これらのモデルが読めない画像だけを処理します。", "可跨提供商多选;这些模型的请求会整体改交视觉模型。": "プロバイダーをまたいで複数選択できます。これらのモデルへのリクエストは丸ごと視覚モデルに渡します。", "可选。部分服务(如中国科技云数据胶囊)会按 User-Agent 校验凭据绑定的客户端类型,此时填写包含该类型名的字符串(例如 rclone/v1.67.0)。留空则维持默认。": "任意。一部のサービス(例:中国科技云データカプセル)は User-Agent で認証情報に紐づいたクライアント種別を検証します。その場合は種別名を含む文字列(例:rclone/v1.67.0)を入力してください。空欄なら既定のままです。", "合计只累加当前筛选后可见的账号,筛选、搜索一改数字就跟着变。": "合計は現在の絞り込みで表示中のアカウントのみを合算します。絞り込みや検索を変えると数字も変わります。", "合计按整组统计(默认):不受筛选、搜索影响,被筛掉与已禁用的账号也计入。": "合計はグループ全体で計算します(既定)。絞り込みや検索の影響を受けず、除外されたアカウントや無効なアカウントも含まれます。", "同一会话、同一问题、相同权限范围内复用;追问新细节会重新识读。": "同じセッション・同じ質問・同じ権限範囲内で再利用します。新しい詳細を尋ねると読み直します。", "同一会话在 5 分钟内尽量跟住同一个账号;停了 5 分钟再发就算新会话。多数场景用它 —— 多轮对话少换号,也不至于把账号焊死。": "同じセッションは 5 分以内ならできるだけ同じアカウントを使い続け、5 分空くと新しいセッション扱い。多くの場面におすすめ —— 連続対話でアカウントが頻繁に切り替わらず、特定アカウントに固定もされません。", "同一会话在 6 小时内跟住同一个账号;适合一坐几个小时的长会话,上游的上下文缓存能吃到更多。": "同じセッションは最大 6 時間同じアカウントを使い続けます。何時間も続く長丁場に最適で、アップストリームのコンテキストキャッシュをより多く活かせます。", "同一提供商的同一模型不能重复配置": "同じプロバイダーの同じモデルを重複設定できません", "同一账号重试次数": "同一アカウントのリトライ回数", "同时开放网页管理面板": "Web 管理パネルも同時に公開", "同步密码": "同期パスワード", "名单最多 {max} 个状态码": "リストに入れられるステータスコードは最大 {max} 個", "后端没有返回版本信息": "バックエンドがバージョン情報を返しませんでした", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "固定項目「設定」を含むため、グループごと非表示にはできません(他のメニューは個別に非表示にできます)", "启动与托盘": "起動とトレイ", "启动时间": "起動時刻", "启用云同步": "クラウド同期を有効にする", "启用图片兼容": "画像互換処理を有効化", "启用规则": "ルールを有効化", "启用规则:{name}": "ルールを有効化:{name}", "命中依据:{header} · {pattern}": "一致した根拠:{header} · {pattern}", "命中这些上游状态码的失败不在同一账号重发,直接换下一个账号继续试(换号占用「切换账号重试次数」,换满仍失败才把错误原样返回给客户端)。输入 100–599 的状态码后回车添加,点 × 或退格删除;默认 402(积分不足)。清空全部表示任何错误都照常重试。": "これらのアップストリームステータスコードに該当する失敗は、同一アカウントでの再送を行わず、次のアカウントに切り替えて試行を続けます(アカウント切替は「アカウント切替のリトライ回数」を消費し、使い切ってもなお失敗する場合にのみエラーがそのままクライアントへ返されます)。100–599 のステータスコードを入力して Enter で追加、× または Backspace で削除します。デフォルトは 402(ポイント残高不足)。すべてクリアすると、あらゆるエラーで通常どおりリトライします。", "品牌 Logo": "ブランドロゴ", "品牌设置": "ブランド設定", "品牌设置已保存": "ブランド設定を保存しました", "品牌预览": "ブランドのプレビュー", "哪些模型用这种方式": "この方式を使うモデル", "固定": "固定", "图标经 Magpie 引入,未单独记录 Lobe Icons 的图标版本;以上版本仅用于核对许可。": "アイコンは Magpie 経由で導入されています。Lobe Icons のアイコン自体のリビジョンは個別に記録されておらず、上記はライセンス確認のみに使用したリビジョンです。", "图片与相关对话将交给配置的视觉模型处理,可能增加等待时间和费用。请确认这些服务可以接收你的图片。": "画像と関連する会話を設定済みの視覚モデルに送信します。待ち時間や費用が増える場合があります。これらのサービスへの画像送信を許可するか確認してください。", "图片兼容": "画像互換処理", "图片兼容当前是关闭的:下面两块设置照样能改、会被保留,但不会对任何请求生效。": "画像互換は現在オフです。下の 2 つのブロックは編集でき内容も残りますが、どのリクエストにも適用されません。", "图片兼容设置已保存,仅对新请求生效。": "画像互換設定を保存しました。新しいリクエストにのみ適用されます。", "图片兼容设置读取失败": "画像互換設定を読み込めませんでした", "图片压缩": "画像圧縮", "图片最长边超过这个值就等比缩小(只缩不放)。默认 2048,可填 256–8192 —— 多数视觉模型在这个量级已经够用,调小更省流量、但细节会丢。": "画像の長辺がこの値を超えると縦横比を保って縮小します(拡大はしません)。既定 2048、256〜8192 で指定できます。多くのビジョンモデルはこの大きさで十分で、小さくすると通信量は減りますが細部が失われます。", "图片能力未知时": "画像対応が不明な場合", "图片过大、格式错误或下载失败不会被当作模型不支持图片。": "画像が大きすぎる、形式が不正、ダウンロード失敗といった場合は「モデルが画像非対応」とは扱いません。", "在同一个账号上原地重发几次(不含首发;整条请求共用一份,用完后换来的账号只发一次就继续换)。可填 0–10,0 表示失败立即换号。": "同じアカウントでそのまま何回再送するか(初回は含みません。1 つのリクエスト全体で 1 つの回数を共用し、使い切った後に切り替えたアカウントでは 1 回送信するごとに次の切替へ進みます)。0–10 を入力でき、0 は失敗時に即座にアカウントを切り替えることを意味します。", "在这里直接编辑提示词正文:保存后以这份文本为准(优先于上面的提示词文件),清空则回到文件 / 内置默认。改一个字不必再去编辑器里开文件。": "ここでシステムプロンプトの本文を直接編集できます:保存後はこのテキストが優先されます(上記のシステムプロンプトファイルより優先)。クリアするとファイル / 内蔵デフォルトに戻ります。1 文字の変更のためにエディターでファイルを開く必要はもうありません。", "在途请求": "処理中のリクエスト", "地址格式不对。填「IP 或域名:端口」,可带 http:// 或 https://,例如 192.168.1.23:3065": "アドレスの形式が正しくありません。「IP またはドメイン:ポート」で入力してください(http:// または https:// も可)。例: 192.168.1.23:3065", "坚果云": "Jianguoyun(Nutstore)", "坚果云需使用「第三方应用密码」(账户信息 → 安全选项里生成),地址必须是 /dav/ 下的目录。": "Jianguoyun では「サードパーティアプリのパスワード」(アカウント情報 → セキュリティで生成)が必要で、URL は /dav/ 配下のディレクトリを指定してください。", "填「IP 或域名:端口」。协议可写 http:// 或 https://,不写默认 http;http 不写端口默认 3065,https 默认 443。地址里的 /m、/v1 会自动去掉。": "「IP またはドメイン:ポート」を入力してください。プロトコルは http:// または https:// が使えます(省略時は http)。ポートを省略すると http は 3065、https は 443 になります。アドレス内の /m、/v1 は自動的に除去されます。", "处理方式": "処理方式", "处理示意": "処理の流れ", "备份中…": "バックアップ中…", "备份包含账号凭证、网关 Key、GitHub 令牌与云同步凭据的恢复密钥,整个文件受备份密码保护。请分开保管文件与密码;忘记密码无法恢复。": "アカウント認証情報、ゲートウェイ Key、GitHub トークン、クラウド同期認証情報の復元鍵を含み、ファイル全体がバックアップのパスワードで保護されます。ファイルとパスワードは別々に保管してください。パスワードを忘れると復元できません。", "备份密码": "バックアップのパスワード", "备份密码不能超过 1024 字节": "バックアップのパスワードは 1024 バイト以内にしてください", "备份密码至少需要 12 位,建议使用较长且不重复的密码": "12 文字以上の長く使い回していないパスワードを推奨します", "备份整库": "データベースをバックアップ", "备份文件内含全部账号凭证、网关 API Key 与面板管理员凭据,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "バックアップファイルには全アカウントの認証情報・ゲートウェイ API キー・管理パネルの管理者認証情報が入っており、そのままログインに使えます。厳重に保管し、外部に漏らしたり公開場所へアップロードしたりしないでください。", "备选模型": "バックアップモデル", "复制全部信息": "すべての情報をコピー", "复制给客户端": "クライアント用にコピー", "复用相同图片的识读结果": "同じ画像の読み取り結果を再利用", "外观": "外観", "外观 · 接入 · 关于": "外観 · 接続 · 情報", "多个客户端标识冲突": "複数のクライアント識別情報が競合", "天": "日", "天数": "日数", "失败 {n} 个": "失敗 {n} 件", "失败 {n} 个:{detail}": "失敗 {n} 件:{detail}", "失败后最多再换几个账号试(填 N = 最多换 N 个,首发那个不算)。换到同一家名下另一个账号、或换到另一家,都各算一次;换满仍失败就返回错误。可填 0–10,0 表示失败立即报错。": "失敗後に最大であと何個のアカウントに切り替えて試すか(N を入力 = 最大 N 個まで切替。初回のアカウントは含みません)。同じプロバイダー配下の別のアカウントへの切替も、別のプロバイダーへの切替もそれぞれ 1 回と数えます。使い切ってもなお失敗する場合はエラーを返します。0–10 を入力でき、0 は失敗時に即座にエラーを返すことを意味します。", "存储桶(Bucket)": "バケット(Bucket)", "存储概况已刷新": "ストレージ概要を更新しました", "安全": "セキュリティ", "安装到主屏幕": "ホーム画面に追加", "安装到桌面": "アプリとしてインストール", "安装包形态": "インストーラの種類", "完全相同": "完全一致", "官方原文只有一句:声明自己是 ZCode。": "公式原文は 1 文だけです:自分が ZCode であることを宣言します。", "实际处理:": "実際の処理:", "客户端 system 原样出站。": "クライアントの system をそのまま送信します。", "客户端 system 原样出站(只靠指纹脱敏改写模板句)。": "クライアントの system をそのまま送信します(テンプレート文の書き換えはフィンガープリントのマスキングのみ)。", "客户端专用请求头": "クライアント専用ヘッダー", "客户端名称": "クライアント名", "客户端名称不能为空,最长 80 个字符": "クライアント名は必須です。80文字以内で入力してください", "客户端名称重复或与内置名称冲突": "クライアント名が重複しているか、内蔵名と競合しています", "客户端标识无效或重复": "クライアント識別情報が無効または重複", "客户端识别": "クライアント識別", "客户端识别入口尚未就绪,请刷新页面后重试": "クライアント識別の準備ができていません。ページを更新して再試行してください。", "客户端识别设置读取失败": "クライアント識別設定を読み込めませんでした", "客户端(Claude Code / Codex 等 CLI)会在 system 提示词里注入几十句固定模板,上游按逐字匹配审核,命中就整单拦截(HTTP 400)。指纹脱敏能改写实测命中过的那几句,但换一个客户端版本就可能冒出新的。这里可以把 system 整段换成网关自己那份:①「透传」= 不动客户端 system(默认,行为与之前完全一致);②「替换」= 删掉客户端所有 system / developer 消息,换成网关的提示词(客户端项目规范随之消失);③「追加」= 在开头连续 system 块之后插入一条网关提示词,既有消息逐字不动(客户端规范与网关提示词并用)。那份提示词有两个来源:提示词文件(留空用内置默认),或直接在界面上编辑正文 —— 编辑过就以那份正文为准(优先于文件),清空则回到文件 / 内置默认。另外,透传 / 追加模式下撞了内容拦截(多半是指纹误报)时,网关会自动换一段最小中性提示词重试一次,并把「降级期」开到次日 00:00 —— 期间所有请求直接带中性提示词出门,不再先撞一次 400;这里能看见并提前解除它。上面几项是**默认值**:想给某个提供商单独配,用下面的「按提供商」加一行(带「网关自带」的家默认就列在那里)—— 不同的上游对这些内容的接受程度不一样。": "クライアント(Claude Code / Codex などの CLI)は system プロンプトに数十文の固定テンプレートを注入し、アップストリームは逐語一致で審査するため、ヒットするとリクエスト全体がブロックされます(HTTP 400)。フィンガープリントのマスキングは実測でヒットした数文を書き換えられますが、クライアントのバージョンが変わると新しい文が現れる可能性があります。ここでは system 全体をゲートウェイ自身のものに差し替えられます:①「パススルー」= クライアントの system に手を加えない(デフォルト。挙動は従来と完全に同じ);②「置換」= クライアントのすべての system / developer メッセージを削除し、ゲートウェイのシステムプロンプトに差し替える(クライアントのプロジェクト規約も同時に消えます);③「追加」= 先頭に連続する system ブロックの後ろにゲートウェイのシステムプロンプトを 1 件挿入し、既存のメッセージは逐語のまま(クライアントの規約とゲートウェイのシステムプロンプトを併用)。そのシステムプロンプトには 2 つのソースがあります:システムプロンプトファイル(空欄なら内蔵デフォルトを使用)、または画面上で本文を直接編集 —— 編集した場合はその本文が優先され(ファイルより優先)、クリアするとファイル / 内蔵デフォルトに戻ります。また、パススルー / 追加モードでコンテンツブロックに当たった場合(多くはフィンガープリントの誤検知)、ゲートウェイは自動的に最小限の中立システムプロンプトに切り替えて 1 回リトライし、「フォールバック期間」を翌日 00:00 まで設定します —— 期間中はすべてのリクエストが中立プロンプトを直接携えて送信され、400 に当たることはなくなります。ここでその状態を確認し、前倒しで解除できます。上記の項目は**デフォルト値**です:特定のプロバイダーに個別設定したい場合は、下の「プロバイダー別設定」で行を追加してください(「ゲートウェイ内蔵」があるプロバイダーはデフォルトでそこに表示されます)—— アップストリームによってこれらの内容の受け入れ具合は異なります。", "家之间仍按优先级,只有同一家内部轮流用各账号 —— 想优先用某几家、又不愿把某一家的某个账号焊死时用它。": "プロバイダー間は優先度どおり、同じプロバイダー内だけでアカウントを順送りします —— いくつかのプロバイダーを優先しつつ、特定アカウントに固定したくないときに。", "家内轮询": "プロバイダー内ローテーション", "容器内更新": "コンテナ内更新", "密码、文件或密钥校验失败时不会替换主库;替换阶段失败会自动尝试还原,实际结果以上方错误说明为准。": "パスワード、ファイル、鍵の検証に失敗した場合、メインデータベースは変更されません。置換に失敗した場合は自動で元に戻す処理を試みます。実際の結果は上のエラー表示を確認してください。", "密码加密 · 包含恢复密钥": "パスワード暗号化 · 復元鍵を含む", "密码至少 8 位": "パスワードは 8 文字以上", "对话里内嵌的 base64 大图(截图、照片)既撑大请求体,也拉高按像素折算的上游计费。开启后,网关在转发前把超过阈值的图等比缩到长边上限、重新存成 JPEG —— 只改发给上游的副本,请求日志里保存的仍是你发来的原图。同一张原图在多轮对话里重复出现时复用上一次的压缩结果,不会每轮重算。http 链接图片、GIF 动图、SVG 一律不动;压完反而更大的图也保留原图。只作用在对话场景,生图与图片编辑不受影响。默认开启;不想要的话把开关关掉即可。": "会話に埋め込まれた大きな base64 画像(スクリーンショットや写真)はリクエストボディを膨らませ、ピクセル数に応じて課金される上流のコストも押し上げます。有効にすると、転送前にしきい値を超える画像を長辺上限まで縮小し JPEG で再エンコードします。変更されるのは上流へ送るコピーだけで、リクエストログには送信元の原画像が保存されます。同じ原画像が複数ターンで再送される場合は、前回の圧縮結果を再利用し毎回計算し直しません。http リンクの画像、アニメーション GIF、SVG は一切変更しません。再エンコードで逆に大きくなる画像も原画像のままです。チャットのみに作用し、画像生成と画像編集には影響しません。既定では有効です。不要ならスイッチを切ってください。", "导入前会把本机的 account.key 改名备份(account.key.bak-时间戳),不会直接删除。": "インポート前にローカルの account.key を account.key.bak-<タイムスタンプ> に改名して退避します(削除はしません)。", "导入完成:{summary}": "インポート完了:{summary}", "导入密钥失败:{message}": "キーのインポートに失敗しました:{message}", "导入密钥并继续": "キーをインポートして続行", "导入账号": "アカウントをインポート", "导出中…": "エクスポート中…", "导出会把全部账号与自定义提供商定义写入一个 JSON 文件,可以拷到另一台机器上导入后继续使用。导入采用合并策略:同提供商下按业务身份(UID / userId / apiKey 等)去重 —— 已存在的账号只更新凭证,保留本机原有的优先级顺序;新账号追加到转发顺序末尾,不会抢占当前正在使用的账号;自定义提供商定义按 id 合并,本机缺失时自动补建。": "エクスポートはすべてのアカウントとカスタムプロバイダー定義を 1 つの JSON ファイルに書き出し、別のマシンにコピーしてインポートすればそのまま使い続けられます。インポートはマージ方式を採用します:同じプロバイダー配下では業務上の身元(UID / userId / apiKey など)で重複を排除 —— 既存のアカウントは認証情報のみ更新し、本機の優先順はそのまま維持します。新しいアカウントは転送順の末尾に追加され、現在使用中のアカウントを奪いません。カスタムプロバイダー定義は id 単位でマージし、本機にない場合は自動的に作成します。", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义": "エクスポートファイルには accessToken / refreshToken / apiKey などの認証情報とカスタムプロバイダー定義が含まれます", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "エクスポートファイルには accessToken / refreshToken / apiKey などの認証情報とカスタムプロバイダー定義が含まれ、そのままログインに使用できます。厳重に保管し、第三者に渡したり公共の場所へアップロードしたりしないでください。", "导出账号": "アカウントをエクスポート", "将数据库和恢复凭证所需的密钥一起保存为密码加密的 .a2ab 备份,可在 Windows、macOS 或 Linux 上恢复,无需手工复制密钥。恢复时整体替换账号、配置、日志与桌面设置,并使用目标机器的密钥重新加密凭证,不覆盖本机已有钥匙。可取消包含日志以减小文件;旧 .sql 备份仍可导入。恢复前自动保留安全备份,完成后需要重新登录管理面板。": "データベースと復元鍵をパスワードで暗号化した .a2ab にまとめ、Windows、macOS、Linux で鍵を手動コピーせず復元できます。アカウント、設定、ログ、デスクトップ設定を全体置換し、移行先の鍵で認証情報を再暗号化します。既存の鍵は上書きしません。ログを除外して容量を減らせます。旧 .sql も読み込めます。事前に安全バックアップを作成し、完了後は再ログインが必要です。", "尚未注册管理员。开启「网关 → 网络访问 → 允许其他设备访问网关」时会引导注册,也可以从登录页注册。": "管理者はまだ登録されていません。「ゲートウェイ → ネットワークアクセス → 他の端末からゲートウェイへのアクセスを許可」を有効にすると登録に進みます。ログインページからも登録できます。", "尚未注册管理员:管理接口不需要登录。开启「允许局域网访问」时会引导注册,也可以从登录页注册。": "管理者が未登録です:管理 API にログインは不要です。「LAN アクセスを許可」を有効にすると登録へ案内されます。ログインページから登録することもできます。", "尚未配置视觉分析模型": "視覚分析モデルが未設定です", "局域网开放后,管理接口要求登录。请设置管理员账号与密码,注册完成会直接继续开启流程。": "LAN に公開すると、管理インターフェースはログインを要求します。管理者アカウントとパスワードを設定してください。登録が完了すると、そのまま有効化の処理を続行します。", "局域网访问": "LAN アクセス", "工具用法与环境说明那一大段。": "ツールの使い方と環境説明の大きなかたまりです。", "已为「{label}」单独配置提示词": "「{label}」にシステムプロンプトを個別設定しました", "已作为独立应用运行": "独立アプリとして実行中", "已使用本机密钥重新加密 {n} 项凭证,原有密钥未被覆盖。": "{n} 件の認証情報をこの端末の鍵で再暗号化しました。既存の鍵は上書きしていません。", "已保存 {count} / {limit} 条报文(超出后丢弃最旧的)。": "{count} / {limit} 件のメッセージを保存済み(超過分は古いものから破棄)。", "已保存的值不符合当前插件规则,请修改或恢复默认值。": "保存済みの値が現在のプラグインの規則に合いません。変更するか既定値に戻してください。", "已保存,留空则不修改": "保存済み。空欄なら変更しません", "已保存,留空沿用": "保存済み(空欄ならそのまま使用)", "已关闭": "オフ", "已关闭 models.dev 联网刷新": "models.dev のオンライン更新をオフにしました", "已关闭。{note}": "オフです。{note}", "已关闭「{label}」的网关自带提示词:能否通过上游校验取决于上游当前口径": "「{label}」のゲートウェイ内蔵システムプロンプトをオフにしました:アップストリームの検証を通過できるかはアップストリームの現在の基準次第です", "已关闭会话图片压缩": "画像圧縮を無効にしました", "已关闭出站指纹脱敏": "フィンガープリントのマスキングをオフにしました", "已关闭开发者角色兼容": "developer ロール互換を無効にしました", "已关闭第三方模型回答完自动折叠过程": "サードパーティモデルの回答後の工程の自動折りたたみを無効にしました", "已关闭网关跨域访问": "ゲートウェイの CORS アクセスをオフにしました", "已关闭:不额外补阶段标记,由客户端决定过程展示。": "無効:フェーズマーカーを追加せず、作業の表示はクライアントに任せます。", "已删除分组「{name}」": "グループ「{name}」を削除しました", "已取消「{label}」的单独配置": "「{label}」の個別設定を解除しました", "已取消安装": "インストールをキャンセルしました", "已取消导入": "インポートをキャンセルしました", "已取消导出": "エクスポートをキャンセルしました", "已取消恢复": "復元をキャンセルしました", "已启用 {count} 条规则,应用于{scope}。": "{count} 件のルールが有効です。適用先:{scope}。", "已启用登录": "ログイン有効", "已复制全部版本信息": "バージョン情報をすべてコピーしました", "已应用": "適用済み", "已开启": "オン", "已开启:为正常完成的 Codex 回答补阶段标记。": "有効:正常に完了した Codex の回答にフェーズマーカーを補います。", "已开启:其他设备把 API 地址指向 {url}{panel}。": "オン:他のデバイスが API アドレスを {url} に向ければ一緒に使えます{panel}。", "已开启:监听 0.0.0.0,允许其他设备访问。": "有効:0.0.0.0 で待ち受け、他の端末からのアクセスを許可しています。", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "既定のグループに戻しました:概要 / 転送経路 / 診断 / システム", "已截断": "切り詰め済み", "已指定出口": "出口を指定", "已接管": "引き継ぎ済み", "已改回内置默认提示词": "内蔵のデフォルトシステムプロンプトに戻しました", "已新建分组「{name}」,点组头的 + 把菜单移进来": "グループ「{name}」を作成しました。見出しの + でメニューを移動できます", "已清掉「{label}」界面编辑的正文": "「{label}」の画面で編集した本文をクリアしました", "已清掉界面编辑的提示词(回落文件 / 内置默认)": "画面で編集したシステムプロンプトをクリアしました(ファイル / 内蔵デフォルトにフォールバック)", "已清除本机保存的 API Key": "このブラウザに保存された API Key を削除しました", "已生效": "有効", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。": "最小限の中立的なプロンプトへ自動切替しました(アップストリームのコンテンツブロックに当たったもので、多くは system 指紋の誤検知です)。{until} に自動解除されます。", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "最小限の中立システムプロンプトに自動的に切り替えました(アップストリームのコンテンツブロックに当たりました。多くは system のフィンガープリントの誤検知です)。{until} に自動解除されます。期間中は本モード自身のシステムプロンプトは送信されません。システムプロンプトを修正すればすぐに解除できます。", "已自定义": "カスタマイズ済み", "已运行": "稼働時間", "已退出登录": "ログアウトしました", "已隐藏": "非表示", "巴西葡萄牙语": "ブラジルポルトガル語", "希望接入新的提供商或模型": "新しいプロバイダーやモデルへの対応を希望", "库中 schema": "DB 内 schema", "库主文件的大小(不含运行期间的 WAL 临时文件,退出时已自动并回)。": "データベース本体ファイルのサイズ(実行中の WAL 一時ファイルは含みません。終了時に自動でマージし直されます)。", "库存目标": "在庫目標", "应用提供商": "適用するプロバイダー", "应用版本:{version}": "アプリのバージョン:{version}", "应用状态": "アプリの状態", "应用窗口": "アプリウィンドウ", "建立上游 TCP/TLS 连接或代理隧道的最大等待时间(秒),默认 30 秒,范围 1~3600。": "アップストリームへの TCP/TLS 接続またはプロキシトンネルを確立する最大待機時間(秒)。デフォルト 30 秒、範囲 1~3600。", "开发构建": "開発ビルド", "开发者角色兼容": "developer ロール互換", "开发者角色兼容设置已刷新": "developer ロール互換の設定を更新しました", "开启前需要注册面板管理员,已注册会跳过此步骤。管理接口需要管理员会话或网关 Key;API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。": "有効化する前にパネル管理者の登録が必要です。登録済みの場合はこの手順をスキップします。管理 API には管理者セッションまたはゲートウェイキーが必要です。API 呼び出しには有効なゲートウェイキーが必要で、存在しない場合はデフォルトキーが自動作成されます。", "开启后新发生的请求才会被记录(已经过去的请求补不回来)。报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "オン以降に発生したリクエストだけが記録されます(過去の分は遡って取得できません)。ペイロードはローカルデータベースに保存され、直近 500 件のみ保持(超過分は古いものから破棄)。件数は左の「データ → データ保存」の「デバッグペイロード」に表示されます。", "开启后新发生的请求才会被记录(已经过去的请求补不回来),请求日志的「预览对话」也随之开始保存原始正文。上游报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "オンにした後に発生したリクエストのみ記録されます(過去のリクエストは遡って記録できません)。リクエストログの「会話プレビュー」もこれを機に原文の保存を開始します。アップストリームのメッセージはローカルデータベースにまとめて保存され、直近 500 件のみ保持します(超過分は古いものから破棄)。件数は左側の「データ → データストレージ」の「デバッグメッセージ」で確認できます。", "开启后监听所有 IPv4 网卡(0.0.0.0),并不局限于局域网,也不会自动开放到公网;实际访问范围取决于网络与防火墙设置。修改后需要重启应用。": "有効にすると、すべての IPv4 インターフェース(0.0.0.0)で待ち受けます。LAN 限定ではありませんが、自動でインターネットに公開されるわけではありません。実際のアクセス範囲はネットワークとファイアウォールの設定で決まります。変更にはアプリの再起動が必要です。", "开启后网关将监听所有 IPv4 网卡(0.0.0.0),访问范围不再限于本机,也不局限于局域网。是否能从公网访问取决于网络与防火墙设置。": "ゲートウェイはすべての IPv4 インターフェース(0.0.0.0)で待ち受けます。アクセス範囲は本機や LAN に限定されません。インターネットからアクセスできるかどうかは、ネットワークとファイアウォールの設定で決まります。", "开启后网关将监听所有网卡,同一局域网内的设备即可把 API 地址指向本机 IP 一起使用;管理接口从此要求管理员会话或网关 Key,转发接口在没有一把启用的 Key 时也会拒绝服务(届时会自动创建一把名为「默认」的 Key)。": "オンにするとゲートウェイはすべてのネットワークアダプターで待ち受け、同じ LAN 内のデバイスから API アドレスを本機の IP に向けて一緒に利用できるようになります。管理インターフェースは管理者セッションまたはゲートウェイキーを要求するようになり、転送インターフェースは有効なキーが 1 つもない場合もサービスを拒否します(その際は「デフォルト」という名前のキーが自動作成されます)。", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 套餐池(Start Plan)」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "有効にすると、ウィンドウを閉じるのは隠すだけでなく UI ウィンドウ全体を破棄します:常駐する 6 つの WebView2 プロセス(約 200MB のメモリ)が終了し、ゲートウェイ転送・定時チェックイン・残高照会はバックグラウンドプロセスで影響なく継続します;UI が必要になったらトレイアイコンをクリックして開き直します(WebView のコールドスタートは約 1 秒)。注意:UI が破棄されている間、ZCode「プランプール(Start Plan)」経路の CAPTCHA トークンは UI が生成するため補充できず、その経路のリクエストは理由付きで 503 としてリクエストログに記録されます。UI を開き直すと自動的に復旧します。このスイッチは「閉じるときにトレイへ最小化」が有効なときにのみ意味があり、最小化したウィンドウには影響しません。", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 活动套餐」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "オンにすると、ウィンドウを閉じるのは単なる非表示ではなく、UI ウィンドウ全体を破棄します:基盤の WebView2 の常駐プロセス 6 つ(約 200MB のメモリ)も終了し、ゲートウェイの転送、定期チェックイン、残高照会はバックグラウンドプロセスで引き続き動作し、影響を受けません。UI が必要なときはトレイアイコンをクリックして開き直します(WebView のコールドスタートは約 1 秒)。注意:UI 破棄中は「ZCode アクティブプラン」チャネルの認証コードトークンが UI によって生成されるため補給できません —— このチャネルを通るリクエストは 503 となって理由とともにリクエストログに記録され、UI を開き直すと自動的に復旧します。このスイッチは「ウィンドウを閉じたときはトレイに最小化」がオンのときのみ意味を持ち、ウィンドウの最小化は影響を受けません。", "开启后,关闭窗口会销毁界面并释放 WebView 进程,网关转发、定时签到、余额查询仍在后台继续。ZCode 模型请求免验证时不受影响;上游要求人机验证时,需要重新打开界面,在账号的「套餐明细」中主动完成验证。此开关只在「关闭窗口时最小化到托盘」开启时有意义。": "有効にすると、ウィンドウを閉じる際に画面を破棄し WebView プロセスを解放します。転送、定時チェックイン、残高照会は継続します。認証不要の ZCode リクエストは影響を受けません。認証が必要な場合は画面を開き直して「プラン詳細」で認証してください。トレイへの最小化が有効な場合のみ適用されます。", "开启后,新发生的请求会保存上游调试报文与下游正文,历史请求无法补录。上游调试报文只保留最近 500 条;两侧条数可在「数据 → 数据存储」查看。关闭开关不会删除已保存的报文,可在请求日志中选择「仅清空报文原文」一起清理。": "有効にすると、新しいリクエストのアップストリームのデバッグペイロードとダウンストリーム本文を保存します。過去のリクエストは補完できません。アップストリームのデバッグペイロードは最新 500 件のみ保持します。両側の件数は「データ → データ保存」で確認できます。無効にしても保存済みのペイロードは削除されません。リクエストログの「原文のみクリア」で両側をまとめて削除できます。", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。": "オンにすると、ログインページはブラウザーのバックグラウンドで自動的に検証を完了します(人間には気づかれません)が、スクリプトは試行のたびにまず問題を 1 問解く必要があります —— ブルートフォース攻撃と大量登録のコストが大幅に上がります。影響するのはパネルのログイン / 登録のみで、API クライアントの API Key とは無関係です。", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。桌面端与网页端各自独立:桌面端主要服务本机与局域网,网页端(Docker / 服务端)直接暴露在网络上的登录页风险更高,建议保持开启。": "有効にすると、ログインページはバックグラウンドで認証を完了します(人間には意識されません)が、スクリプトによる試行は毎回 1 問解く必要があり、総当たりやアカウントの先取りのコストが大幅に上がります。影響するのはパネルのログイン / 登録のみで、API クライアントの API Key とは無関係です。デスクトップと Web は独立しています。デスクトップは主に本機と LAN 向け、Web(Docker / サーバー)はネットワークに露出するため有効のままを推奨します。", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "オンにすると、ゲートウェイは転送ごとに**アップストリームへ送ったリクエスト**(ヘッダー + ボディ)と**アップストリームからの応答**(ステータスコード + ヘッダー + ボディ)をローカルに丸ごと保存し、リクエストログページの「詳細」で確認できます。リクエストヘッダーの Authorization・Cookie・API キーなどの認証フィールドはすべて [redacted] に置き換わり、平文では保存されません。リクエスト / レスポンスのボディはそのまま保存されます(あなたの対話内容が含まれる場合があります)。ペイロードは直近 500 件のみ保持し、超過分は古いものから破棄します。トラブルシュート用の一時スイッチなので、不要なときはオフを推奨します。", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看;请求日志详情的「预览对话」也依赖本开关 —— 它保存的是客户端发来的请求体与网关下发的响应体(两侧各截断到 128 KiB),不开这个开关时预览对话没有数据可看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。上游报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "オンにすると、ゲートウェイは転送のたびに**アップストリームへ送るリクエスト**(リクエストヘッダー + リクエストボディ)と**アップストリームが返すレスポンス**(ステータスコード + レスポンスヘッダー + レスポンスボディ)を完全にローカルへ保存し、リクエストログページの「詳細」で確認できるようにします。リクエスト詳細の「会話プレビュー」もこのスイッチに依存します —— 保存するのはクライアントから届いたリクエストボディとゲートウェイが返したレスポンスボディ(いずれも 128 KiB で切り詰め)で、スイッチがオフのときはプレビューできるデータがありません。リクエストヘッダー内の Authorization、Cookie、API Key などの認証情報フィールドは一律 [redacted] に置き換えられ、平文でディスクに残りません。リクエストボディとレスポンスボディはそのまま保存されます(会話内容が含まれる場合があります)。アップストリームのメッセージは直近 500 件のみ保持し、超過分は古いものから破棄します。これはトラブルシューティング用の一時的なスイッチですので、不要なときはオフにすることをおすすめします。", "开启后,能连接到网关的设备可通过浏览器访问网页管理面板,需使用管理员账号登录。访问范围与网关相同,并不局限于局域网。": "有効にすると、ゲートウェイに接続できる端末からブラウザーで Web 管理パネルを開き、管理者アカウントでログインできます。アクセス範囲はゲートウェイと同じで、LAN に限定されません。", "开启后,调用方可以用专用请求头声明已登记的客户端名称。这不是身份认证,只用于日志和统计,不会获得额外权限。": "有効にすると、呼び出し元は専用ヘッダーで登録済みクライアント名を申告できます。これは認証ではなく、ログと統計にのみ使用され、追加の権限は付与されません。", "开启局域网访问": "LAN アクセスをオンにする", "开启来源声明": "呼び出し元の申告を有効にする", "开启网络访问": "ネットワークアクセスを有効化", "开放后,局域网内其他设备的浏览器打开本机 IP 即可进入管理面板(需管理员账号登录)。": "公開後は、LAN 内の他のデバイスのブラウザーで本機の IP を開くだけで管理パネルに入れます(管理者アカウントでのログインが必要)。", "开机自动启动": "自動起動", "开源许可": "オープンソースライセンス", "开(最多 {n} 轮)": "オン(最大 {n} ラウンド)", "归属客户端": "分類先クライアント", "当前三段都是官方原文。": "現在、3 つの段はすべて公式原文です。", "当前不可用": "現在利用できません", "当前后端不支持词表编辑与提供商范围,请更新后端后重试。": "現在のバックエンドはルール編集とプロバイダー範囲に対応していません。バックエンドを更新してください。", "当前固定为浅色模式,不随系统变化。": "現在はライトモードに固定されており、システムには連動しません。", "当前固定为深色模式,不随系统变化。": "現在はダークモードに固定されており、システムには連動しません。", "当前密码": "現在のパスワード", "当前已改过:{edited}。": "現在の変更箇所:{edited}。", "当前形态": "実行形態", "当前按 100% 显示(默认比例)。": "現在は 100% で表示中(デフォルト比率)。", "当前按 k / M 缩写显示(如 1.20M / 8.4k)。": "現在は k / M 略記で表示中(例:1.20M / 8.4k)。", "当前按 {n}% 显示。": "現在は {n}% で表示中。", "当前按「万 / 亿」式本地量级词显示(如 1.2亿 / 8400万)。": "現在は「万 / 億」式のローカル量級語で表示中(例:1.2億 / 8400万)。", "当前是透传模式:存下来也不会发出,切成「替换 / 追加」之后才生效。": "現在はパススルーモードです:保存しても送信されず、「置換 / 追加」に切り替えてから有効になります。", "当前显示为「1.20M / 8.4k / 1.2B」这类英文缩写。": "現在は「1.20M / 8.4k / 1.2B」のような英語略記で表示しています。", "当前显示为「1.2亿 / 8400万」这类中文量级。": "現在は「1.2億 / 8400万」のような中国語の桁表記で表示されています。", "当前样本结果:{name}": "現在のサンプル結果:{name}", "当前正在使用": "現在使用中", "当前浏览器以管理员身份登录着本面板。「退出登录」会撤销这台设备的登录会话(30 天内的自动续期一并失效),需要重新输入账号密码;其他已登录的设备不受影响。": "現在のブラウザーは管理者としてこのパネルにログインしています。「ログアウト」はこのデバイスのログインセッションを取り消し(30 日以内の自動更新も無効になります)、アカウントとパスワードの再入力が必要です。他のログイン済みデバイスは影響を受けません。", "当前版本不支持品牌设置": "このバージョンはブランド設定に対応していません", "当前环境不支持局域网访问设置": "現在の環境は LAN アクセス設定に対応していません", "当前环境不支持整库备份": "この環境ではデータベース全体のバックアップは使えません", "当前环境不支持整库备份(仅桌面端可用)": "この環境ではデータベース全体のバックアップは使えません(デスクトップ版のみ)", "当前环境不支持整库恢复": "この環境ではデータベース全体の復元は使えません", "当前环境不支持整库恢复(仅桌面端可用)": "この環境ではデータベース全体の復元は使えません(デスクトップ版のみ)", "当前环境不支持网络访问设置": "現在の環境ではネットワークアクセス設定を利用できません", "当前环境不支持读取版本信息(桥接方法缺失)": "この環境ではバージョン情報を取得できません(ブリッジメソッドが見つかりません)", "当前生效值:{value}": "現在の有効値:{value}", "当前生效的正文来自{source}{file}。保存后这一份会盖过提示词文件与内置默认{note}。": "現在有効な本文の出所は{source}です{file}。保存するとこの本文がシステムプロンプトファイルと内蔵デフォルトより優先されます{note}。", "当前界面": "現在の画面", "当前管理员:{name}": "現在の管理者:{name}", "当前设置已保存": "現在の設定は保存済みです", "当前跟随操作系统的深浅色设置,系统切换时界面会自动跟上。": "現在は OS のライト / ダーク設定に連動しており、システムの切替時に UI も自動的に追従します。", "当前路由内的可用视觉模型": "現在のルート内で利用可能な視覚モデル", "待迁移旧数据": "移行待ちの旧データ", "待配置": "未設定", "忘记密码时无法在界面里找回:需要停掉程序后,从数据库删除管理员记录(kv 表的 panelAdmin 键),重启后按首次使用重新注册。具体命令与各形态的库文件路径见 docs 目录下的「重置管理员」文档。": "パスワードを忘れた場合、画面から復旧することはできません。プログラムを停止し、データベースから管理者レコード(kv テーブルの panelAdmin キー)を削除してから再起動し、初回と同様に登録し直してください。具体的なコマンドと形態別のデータベースパスは docs の「管理者のリセット」を参照してください。", "思考等级、图片能力未知、等待上限": "思考レベル、画像対応が不明な場合、待ち時間の上限", "恢复中…": "復元中…", "恢复失败:{message}": "復元に失敗:{message}", "恢复官方原文": "公式原文に戻す", "恢复插件默认值": "プラグインの既定値に戻す", "恢复整库": "データベースを復元", "恢复整库备份": "全体バックアップを復元", "恢复默认": "デフォルトに戻す", "恢复默认 Logo": "標準のロゴに戻す", "恢复默认侧边栏": "サイドバーを既定に戻す", "恢复默认品牌": "標準のブランドに戻す", "恢复默认词表": "デフォルトのルールに戻す", "想回到原来那份,把这里清空再保存即可(不会删掉你配的文件路径)。": "元のものに戻したい場合は、ここを空にして保存するだけです(設定したファイルパスは削除されません)。", "想要的新功能或改进想法": "実現したい新機能や改善のアイデア", "所有未单独配置的提供商都用这一份": "個別設定していないすべてのプロバイダーがこれを使用します", "所有菜单都已在这一组": "すべてのメニューがこのグループにあります", "手机端可管理所连接网关的账号、签到与插件,并使用提供商声明的动态登录入口;其余既有添加入口、编辑凭证和改写客户端配置仍需桌面面板。": "モバイル版は接続先ゲートウェイのアカウント、チェックイン、プラグインを管理し、プロバイダーが宣言した動的ログイン方式を利用できます。その他の既存の追加機能、認証情報の編集、クライアント設定の変更にはデスクトップパネルが必要です。", "托管网页界面": "Web UI を配信", "把地址里的 your-server 与 USERNAME 换成你自己的;目录不存在时会自动创建。": "URL 内の your-server と USERNAME を自分の環境に置き換えてください。ディレクトリが無い場合は自動で作成します。", "把整份数据库(账号、网关配置、事件日志、请求统计、调试报文与桌面设置)导出成一个 SQL 文件,恢复时整体替换本机全部数据 —— 与上面「账号导入 / 导出」的逐条合并是两种语义:恢复会连配置、日志与当前启用状态一起换成备份那台机器的状态。导出默认包含日志与调试报文(文件可能很大),不需要时可以取消勾选只备业务数据。恢复前会自动把当前数据备份到配置目录的 backups/ 下,恢复后需要重新登录管理面板。": "データベース全体(アカウント・ゲートウェイ設定・イベントログ・リクエスト統計・デバッグペイロード・デスクトップ設定)を 1 つの SQL ファイルに書き出し、復元時はこのマシンの全データをまるごと置き換えます —— 上の「アカウントのインポート / エクスポート」とは意味が別で、あちらは 1 件ずつのマージ、復元は設定・ログ・有効状態までバックアップしたマシンの状態にそっくり入れ替わります。書き出しは既定でログとデバッグペイロードを含みます(ファイルは大きくなりがち)。不要ならチェックを外して業務データだけにできます。復元の直前には現在のデータを設定フォルダの backups/ へ自動バックアップし、復元後は管理パネルへ再ログインが必要です。", "把整次请求交给视觉模型,由它直接回答,不再回到原模型。": "リクエスト全体を視覚モデルに渡し、元のモデルに戻らず直接回答します。", "把菜单移入 {name}": "メニューを {name} へ移動", "把菜单移入「{name}」": "メニューを「{name}」へ移動", "把账号、网关配置、自定义提供商、Agent 配置、代理池 / 订阅、签到与余额记录同步到 WebDAV 或 S3 兼容存储,换台机器后一键取回。事件日志、请求明细、调试报文与面板登录态不在同步范围内(它们是本机的运行痕迹)。上传的账号凭证仍是加密形态,解密用的账号密钥由「同步密码」单独加密后一并上传 —— 同步密码不会保存到云端,换机下载时需要重新输入。": "アカウント、ゲートウェイ設定、カスタムプロバイダー、Agent 設定、プロキシプール / サブスクリプション、チェックインと残高の記録を WebDAV または S3 互換ストレージに同期し、別のマシンでワンクリックで復元できます。イベントログ、リクエスト明細、デバッグ通信記録、パネルのログイン状態は対象外です(これらは本機の実行履歴です)。アップロードされるアカウント認証情報は暗号化されたままで、復号に使うアカウントキーは「同期パスワード」で別途暗号化して一緒にアップロードします。同期パスワードはクラウドに保存されないため、別のマシンで復元する際に再入力が必要です。", "把路径里的主目录显示成 ~,截图分享时不暴露用户名": "パス内のホームディレクトリを ~ と表示し、スクリーンショットでユーザー名が漏れないようにします", "把路径里的主目录(如 C:\\Users\\你的用户名)显示成 ~,截图分享时不暴露用户名。只影响本页显示与复制,不改任何文件。": "パス内のホームディレクトリ(例: C:\\Users\\ユーザー名)を ~ と表示し、スクリーンショットでユーザー名が漏れないようにします。このページの表示とコピーだけに影響し、ファイルは変更しません。", "报表天数": "レポートの日数", "报表页的热力图与按天趋势,默认 99999 天(近似全量保留),可填 1–99999 天。": "レポートページのヒートマップと日次トレンド。既定は 99999 日(ほぼ全量保持)で、1〜99999 日を指定できます。", "拖动分组 {name}": "グループ {name} をドラッグ", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "左側の ⠿ をドラッグして順序を変更(メニューはグループをまたげます)。スイッチで表示/非表示、グループ名をクリックで名前変更、グループ見出しの + で他のメニューを移動、目のボタンでグループごと非表示。変更は即座に反映され保存されます(左のサイドバーが結果です)。キーボード操作:ハンドルにフォーカスして Alt+↑ / ↓。", "拖动菜单 {name}": "メニュー {name} をドラッグ", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "ドラッグでグループの順序を変更(Alt+↑ / ↓ でも可)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "ドラッグで順序を変更、グループをまたげます(Alt+↑ / ↓ でも可)", "指定备选仍受当前请求权限和路由范围限制,路由组请求不会跳到组外。不会转为辅助识图继续。": "指定した代替モデルにも現在の権限とルート範囲が適用されます。ルートグループ外には転送せず、補助画像読み取りに切り替えて続行することもありません。", "指定提供商": "指定したプロバイダー", "指定角色": "指定したロール", "指定错误码直接换号": "指定エラーコードで直接アカウント切替", "指纹脱敏": "フィンガープリント除去", "指纹脱敏会在转发前按词表顺序改写请求消息中的文本,包括对话内容、思考内容和工具调用参数。默认词表包含客户端模板句与计费表头的精确替换、正则删除规则,可以新增、编辑、删除、启停和调整顺序;替换内容留空表示删除匹配内容。默认应用全部提供商,也可指定多家。改动只作用于发给上游的副本,响应内容不变。编辑后点击「保存设置」,下一次请求生效;清空词表表示不做任何指纹改写,恢复默认只重置词表。": "転送前にルールの順序でメッセージのテキストを変更します。会話、思考内容、ツール呼び出し引数が対象です。デフォルトにはクライアントの定型文と課金ヘッダーを対象にした完全一致の置換と正規表現の削除が含まれます。ルールの追加、編集、削除、有効・無効の切り替え、並べ替えが可能です。置換内容が空なら一致部分を削除します。デフォルトですべてのプロバイダーに適用し、複数の指定も可能です。アップストリームに送るコピーのみを変更し、応答は変更しません。「設定を保存」を押すと次のリクエストから有効です。空の一覧では何も変更せず、デフォルト復元はルールだけをリセットします。", "指纹脱敏设置仅本次运行生效,写入数据库失败,请检查配置目录": "設定は今回の実行中のみ有効です。データベースへの書き込みに失敗しました。設定ディレクトリを確認してください。", "指纹脱敏设置已刷新": "フィンガープリントのマスキング設定を更新しました", "按下面两块设置处理图片;关闭后设置全部保留。": "下の 2 つのブロックの設定で画像を処理します。オフにしても設定はすべて残ります。", "按原文精确匹配,区分大小写;不会自动去掉首尾空白。": "大文字・小文字を区別して原文と完全一致で比較します。前後の空白は削除しません。", "按天聚合保留天数": "日次集計の保持日数", "按指定备选顺序尝试": "指定した代替モデルを順番に試す", "按提供商查看和调整专属选项": "プロバイダー固有の設定を確認・変更", "按提供商筛选设置": "プロバイダーで設定を絞り込む", "按提供商管理专属选项,作用于当前网关中该提供商的所有账号。": "プロバイダー固有の設定を管理します。変更は現在のゲートウェイにある、そのプロバイダーのすべてのアカウントに適用されます。", "按提供商配置": "プロバイダー別設定", "按每条请求的软件标识识别客户端,不依赖 API Key。规则修改只影响新请求,内置规则随软件更新,自定义规则参与备份与云同步。": "各リクエストのソフトウェア識別情報を使用し、API Keyには依存しません。ルール変更は新しいリクエストにのみ適用されます。内蔵ルールはアプリ更新に追従し、カスタムルールはバックアップとクラウド同期の対象です。", "换一台服务器": "別のサーバーに切り替える", "排队等待": "キューイング待機", "排队等待次数": "キューイングの待機回数", "排队等待秒数": "キューイングの待機秒数", "排队等待设置已刷新": "キューイング待機設定を更新しました", "接入": "接続", "接受调用方来源声明": "呼び出し元の申告を受け付ける", "接管回答的模型": "回答を引き継ぐモデル", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "サイドバーに表示するメニュー、その順序、グループ分けを設定します。非表示はナビゲーションの表示だけに影響し、アクセス権は失われません。非表示にしたページも URL から直接開けます。", "控制报表与请求日志里 Token 读数的写法:开启后按「万 / 亿」式的本地量级词显示(简体为万 / 亿,繁体为萬 / 億,日文为万 / 億,韩文为만 / 억),关闭则用 k / M 缩写(与上游文档、接口字段的写法一致)。英文 / 葡语的本地量级词就是 k / M,这项对它们没有区别。只影响显示口径,不改变任何统计与存储的数值。": "レポートとリクエストログにおける Token の数値表記を制御します:オンにすると「万 / 億」式のローカル量級語で表示し(簡体字は万 / 亿、繁体字は萬 / 億、日本語は万 / 億、韓国語は만 / 억)、オフにすると k / M 略記を使用します(アップストリームのドキュメントやインターフェースのフィールド表記と一致)。英語 / ポルトガル語ではローカル量級語がそのまま k / M なので、この項目による違いはありません。影響するのは表示の形式のみで、統計や保存される数値は変わりません。", "控制报表与请求日志里 Token 读数的写法:开启后按中文量级显示(1.2亿 / 8400万),关闭则用 k / M / B 缩写(与上游文档、接口字段的写法一致)。这只影响显示口径,不改变任何统计与存储的数值。": "レポートとリクエストログの Token 表記を切り替えます。オンでは中国語の数量単位(1.2億 / 8400万)、オフでは k / M / B の略記(上流のドキュメントや API フィールドと同じ書き方)で表示します。表示だけが変わり、統計値や保存値は変わりません。", "控制界面的深浅色,与左侧边栏底部的三个主题按钮是同一个设置(改哪一处,另一处立刻跟上)。「跟随系统」会随操作系统当前的浅色 / 深色自动切换,并在系统主题变化时即时跟上;选「浅色」或「深色」则把界面固定在该模式,不再随系统变化。窗口标题栏的深浅色会一并同步,不会出现深色界面配一条浅色标题栏的情况。": "UI のライト / ダークを制御します。左サイドバー下部の 3 つのテーマボタンと同じ設定です(どちらを変更しても、もう一方にすぐ反映されます)。「システム」は OS の現在のライト / ダークに自動で切り替わり、システムテーマの変化にも即座に追従します。「ライト」または「ダーク」を選ぶと UI はそのモードに固定され、システムには連動しなくなります。ウィンドウタイトルバーのライト / ダークも一緒に同期され、ダークの UI にライトのタイトルバーが付くようなことはありません。", "提供商与模型": "プロバイダーとモデル", "提供商专属设置": "プロバイダー固有の設定", "提供商当前不可用,未保存的修改已保留;恢复插件后可继续编辑。": "現在このプロバイダーを利用できません。未保存の編集は保持されています。プラグインが復旧すると編集を続けられます。", "提供商设置已保存": "プロバイダー設定を保存しました", "提供商设置返回格式无效,请刷新后重试": "プロバイダー設定の応答形式が無効です。更新してから再試行してください。", "提建议": "提案する", "提示词文件": "システムプロンプトファイル", "提示词文件已更新": "システムプロンプトファイルを更新しました", "提示词正文": "システムプロンプト本文", "提示词正文已更新": "システムプロンプト本文を更新しました", "插件或设置已变化,请放弃修改并刷新后重新编辑。": "プラグインまたは設定が変更されました。変更を破棄して更新し、再度編集してください。", "操作系统": "オペレーティングシステム", "支持 .a2ab 加密备份和旧 .sql 文件;旧 SQL 不包含恢复密钥,跨机器导入仍需原机密钥。": "暗号化された .a2ab と旧 .sql に対応しています。旧 SQL には復元鍵が含まれないため、別端末への移行には元の端末の鍵が必要です。", "支持 PNG、JPG、WebP,最大 2 MiB、4096 × 4096 像素;自动缩小至 512 像素以内,建议使用正方形图片。": "PNG、JPG、WebP に対応。最大 2 MiB、4096 × 4096 ピクセルです。512 ピクセル以内に自動縮小します。正方形の画像を推奨します。", "改动仍保存在本机,修复网络或凭据后下一次改动会自动重试,也可以手动点「上传到云端」。": "変更は本機に保存されています。ネットワークや認証情報を修正すれば次回の変更で自動的に再試行されます。手動で「クラウドへアップロード」を押すこともできます。", "改动仍保存在本机,系统会延长等待并自动重试;修复网络或凭据后,也可以手动点「上传到云端」。": "変更はこの端末に保存されています。待機時間を延ばして自動再試行します。ネットワークや認証情報を修正した後、「クラウドにアップロード」を手動で選ぶこともできます。", "改完立即生效,不用重启(下一个请求就用新模式)。降级是自动的临时状态,解除后本模式自己的提示词立刻恢复。": "変更後は即時有効で再起動は不要です(次のリクエストから新しいモードが適用されます)。フォールバックは自動的な一時状態で、解除されると本モード自身のシステムプロンプトがすぐに復帰します。", "放大或缩小整个界面(文字与控件一起变),效果与浏览器 Ctrl +/- 相同:共 11 档,立即生效并记住。": "UI 全体を拡大または縮小します(文字とコントロールが一緒に変化)。効果はブラウザーの Ctrl +/- と同じ:全 11 段階で、即時有効かつ記憶されます。", "放弃修改并刷新": "変更を破棄して更新", "数据": "データ", "数据保留": "データ保持", "数据保留设置已刷新": "データ保持設定を更新しました", "数据存储": "データストレージ", "数据库 schema": "データベース schema", "数据库不可用": "データベース利用不可", "数据库与恢复密钥一起加密保存。密码不会保存在应用或备份中,忘记后无法恢复,请妥善保管。": "データベースと復元鍵を一緒に暗号化します。パスワードはアプリにもバックアップにも保存されません。忘れると復元できないため、大切に保管してください。", "数据库主文件与 WAL 文件的总占用,与请求日志清理弹窗采用同一口径;清理后可压缩数据库回收空闲空间。": "データベースのメインファイルと WAL ファイルの合計サイズです。リクエストログのクリア画面と同じ計算方法です。クリア後はデータベースを圧縮して未使用領域を回収できます。", "数据库文件": "データベースファイル", "数据目录": "データディレクトリ", "数据统一保存在配置目录下的 agent2api.db;如需更换位置,请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "データは設定ディレクトリ配下の agent2api.db にまとめて保存されます。場所を変更する場合は、環境変数 AGENT2API_PROXY_HOME を設定してからプログラムを再起動してください。", "整体替换": "まるごと置き換え", "整库备份 / 恢复": "データベース全体のバックアップ / 復元", "整次请求交给 {model} 直接回答,不再回到原模型。": "リクエスト全体を {model} に渡し、元のモデルに戻らず直接回答します。", "新分组名": "新しいグループ名", "新增 {added} 个、更新 {updated} 个{suffix}{note}": "新規 {added} 件、更新 {updated} 件{suffix}{note}", "新增脱敏规则": "マスキングルールを追加", "新增规则": "ルールを追加", "新安装和升级后默认关闭。先配置再开启,关闭后保留配置。": "新規インストール時とアップグレード後はデフォルトで無効です。設定してから有効にしてください。無効にしても設定は保持されます。", "新密码": "新しいパスワード", "新密码不能与当前密码相同": "新しいパスワードは現在のものと異なる必要があります", "新密码至少 8 位": "パスワードは 8 文字以上にしてください", "新建分组": "グループを追加", "新建客户端分类": "クライアント分類を新規作成", "无效或重复的标识请求头:{headers}": "無効または重複した識別ヘッダー:{headers}", "无法读取品牌设置": "ブランド設定を読み取れません", "无法读取图片,请重新选择": "画像を読み取れません。選び直してください", "日志与请求日志同时受保留天数和数量上限限制。日志默认 30 天、10000 条,各级别按比例保留;调试详情最多保留 3 天。请求日志默认 99999 天、1000000 条(100 万),超出后从最旧的记录开始清理,并同步删除对应原始正文。按天聚合默认 99999 天,只按天数保留,不受请求日志数量清理影响。天数可填 1–99999,数量可填 1–100000000。调小任一设置并确认后立即清理,且不可恢复。": "ログとリクエストログには保存日数と件数上限の両方が適用されます。ログの既定は 30 日・10000 件で、レベルごとに比例配分して保持します。デバッグ詳細は最大 3 日です。リクエストログの既定は 99999 日・1000000 件(100 万件)で、超過分は古い記録から対応する元の本文とともに削除します。日次集計の既定は 99999 日で、日数のみで保持し、リクエストログの件数による削除には影響されません。日数は 1–99999、件数は 1–100000000 を指定できます。設定を減らして確認すると直ちに削除され、元に戻すことはできません。", "日志保留数量上限": "ログの保存件数上限", "日志文件": "ログファイル", "日语": "日本語", "显示 {name}": "{name} を表示", "显示分组 {name}": "グループ {name} を表示", "显示名称": "表示名", "显示名称最多 64 个字符": "表示名は最大 64 文字です", "显示模式": "表示モード", "显示这一组": "このグループを表示", "暂无可编辑的提供商设置": "編集可能なプロバイダー設定はありません", "暂无自定义规则,正在使用内置识别。也可以从请求详情直接添加规则。": "カスタムルールはありません。内蔵識別を使用中です。リクエスト詳細からもルールを追加できます。", "暂未获取到本机访问地址,请使用其他设备能连接到的本机 IP 与网关端口。": "この端末のアクセスアドレスをまだ取得できていません。他の端末から到達できる本機の IP とゲートウェイのポートを使用してください。", "更新": "更新", "更新出网线路": "更新の出口経路", "更新通道": "更新チャネル", "替换": "置換", "替换 = 客户端 system / developer 消息全部删掉,换成网关的提示词;追加 = 保留客户端内容,只在开头 system 块之后多插一条。两者都只改发给上游的副本,客户端看到的响应不变。": "置換 = クライアントの system / developer メッセージをすべて削除し、ゲートウェイのシステムプロンプトに差し替えます。追加 = クライアントの内容を保持し、先頭の system ブロックの後ろに 1 件挿入するだけ。どちらもアップストリームへ送るコピーのみを変更し、クライアントが見るレスポンスは変わりません。", "替换为网关提示词": "ゲートウェイのシステムプロンプトに置換", "替换内容": "置換内容", "替换内容最多 {max} 个字符": "置換内容は {max} 文字以内で入力してください", "替换前会自动把当前数据备份到配置目录的 backups/ 文件夹。": "置き換えの直前、現在のデータを設定フォルダの backups/ へ自動バックアップします。", "替换并恢复": "置き換えて復元", "最多 64 个字符,留空恢复为 Agent2API。": "最大 64 文字。空欄にすると Agent2API に戻ります。", "最小自动上传间隔": "自動アップロードの最小間隔", "最近 {window} 条请求中,{scanned} 条有识别依据,{matched} 条符合条件,{applied} 条会采用本规则。": "直近{window}件のうち、{scanned}件に識別根拠があり、{matched}件が条件に一致し、{applied}件にこのルールが適用されます。", "有未保存的修改": "未保存の変更があります", "有未保存的改动:保存后才能同步(测试连接不受影响)。": "未保存の変更があります。同期するには先に保存してください(接続テストは可能です)。", "有近期套餐池请求时读取库存状态的间隔,默认 2500 毫秒,可填 1000–30000。没有近期请求时降低读取频率,轮询不会发起验证码。": "最近の Start Plan リクエストがある場合の在庫取得間隔です。既定は 2500 ミリ秒、範囲は 1000~30000 です。リクエストがない場合は頻度を下げ、ポーリングで認証を開始しません。", "服务商": "プロバイダー", "服务器地址": "サーバーアドレス", "服务端密钥加密保存,不会返回浏览器;切回 ALTCHA 后会保留,方便再次启用。": "シークレットキーは暗号化して保存され、ブラウザーには返されません。ALTCHA に戻しても保持されるため、後から再び有効にできます。", "服务端密钥(Secret Key)": "シークレットキー(Secret Key)", "期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "このモードの間、独自のプロンプトは送信されません。プロンプトを修正できたらすぐ解除できます。", "未保存": "未保存", "未匹配已知客户端": "既知のクライアントに一致しません", "未单独配置:模式、提示词文件与正文都跟随上面的全局配置(当前「{mode}」)。": "個別設定なし:モード、システムプロンプトファイル、本文はいずれも上記のグローバル設定に従います(現在は「{mode}」)。", "未启用": "無効", "未开启轻量模式:关窗仅隐藏窗口,界面进程常驻内存,随时打开不等待": "軽量モードはオフ:ウィンドウを閉じても非表示になるだけで、UI プロセスはメモリに常駐し、いつでも待ち時間なく開けます", "未开启,developer 角色消息会原样发往上游,不认识该角色的上游会报错(400)。": "無効:developer ロールのメッセージはそのままアップストリームへ送られ、このロールを認識しないアップストリームはエラー(400)を返します。", "未开启,客户端 system 模板会原样发往上游,可能被内容审核误拦(400)。": "オフの場合、クライアントの system テンプレートはそのままアップストリームへ送られ、コンテンツ審査で誤ってブロックされる(400)可能性があります。", "未开启,浏览器跨域无法直连网关。": "オフの場合、ブラウザーから CORS でゲートウェイに直接接続できません。", "未开启,转发时不保存任何原始报文。": "オフの場合、転送時に生のメッセージは一切保存されません。", "未开启:网关只监听 127.0.0.1,仅本机可以访问。": "オフ:ゲートウェイは 127.0.0.1 のみで待ち受け、本機からのみアクセスできます。", "未注册": "未登録", "未注册闸门": "未登録ゲート", "未知原因": "不明な原因", "未知来源": "不明な出典", "未知设备": "不明なデバイス", "未知账号": "不明なアカウント", "未能读取 Cline 伪装头设置,请稍后重试": "Cline 偽装ヘッダー設定を読み込めませんでした。しばらくしてから再試行してください", "未能读取 models.dev 元数据状态,请稍后重试": "models.dev メタデータの状態を取得できませんでした。しばらくして再試行してください。", "未能读取云同步设置,请稍后重试。": "クラウド同期の設定を読み取れませんでした。しばらくしてから再試行してください。", "未能读取保存后的指纹脱敏设置": "保存後のマスキング設定を読み取れませんでした", "未能读取开发者角色兼容设置,请稍后重试": "developer ロール互換の設定を読み取れませんでした。しばらくしてから再試行してください", "未能读取指纹脱敏设置,请稍后重试": "フィンガープリントのマスキング設定を読み込めませんでした。しばらくしてから再試行してください", "未能读取机器人校验设置": "ボット対策の設定を読み取れませんでした", "未能读取第三方模型回答完自动折叠过程设置,请稍后重试": "サードパーティモデルの回答後の工程の自動折りたたみ設定を読み取れませんでした。しばらくしてから再試行してください", "未能读取系统提示词设置,请稍后重试": "システムプロンプト設定を読み込めませんでした。しばらくしてから再試行してください", "未能读取网关跨域访问设置,请稍后重试": "ゲートウェイの CORS アクセス設定を読み込めませんでした。しばらくしてから再試行してください", "未能读取网络访问设置,请稍后重试": "ネットワークアクセス設定を読み込めませんでした。しばらくしてから再試行してください。", "未能读取调试模式设置,请稍后重试": "デバッグモード設定を読み込めませんでした。しばらくしてから再試行してください", "未能读取账户信息,请稍后重试": "アカウント情報を取得できませんでした。しばらくしてから再試行してください", "未采用本规则,请检查开关、来源声明或规则顺序": "このルールは適用されません。スイッチ、呼び出し元の申告、ルール順序を確認してください。", "本地账号、配置、签到与余额记录变化后自动上传(合并 1 秒内的连续改动,最长 10 秒传一次;内容没变时不发请求)。": "ローカルのアカウント・設定・チェックイン・残高記録の変更後に自動アップロードします(1 秒以内の連続変更はまとめ、最大 10 秒に 1 回。内容が変わっていなければリクエストしません)。", "本机 API 地址": "この端末の API アドレス", "本机 APK 版本": "この端末の APK バージョン", "本机全部数据会被备份整体替换,恢复前自动保留安全备份,完成后需要重新登录管理面板。本机已有密钥不会被覆盖。": "この端末のデータベース内の全データが置き換わります。事前に安全バックアップを保存し、完了後は再ログインが必要です。既存の鍵は上書きしません。", "本机应用版本": "この端末のアプリバージョン", "本机界面版本": "この端末の UI バージョン", "本机的业务数据(账号、配置、Agent 配置、代理池 / 订阅、签到与余额记录)将上传并": "本機の業務データ(アカウント・設定・Agent 設定・プロキシプール / サブスクリプション・チェックインと残高の記録)をアップロードし、", "本机的全部数据(账号、网关配置、日志统计与桌面设置)将被所选备份文件": "このマシンの全データ(アカウント・ゲートウェイ設定・ログ統計・デスクトップ設定)は、選択したバックアップファイルで", "本机的账号、网关配置、Agent 配置、代理池 / 订阅、签到与余额记录将被远端快照": "本機のアカウント・ゲートウェイ設定・Agent 設定・プロキシプール / サブスクリプション・チェックインと残高の記録は、リモートのスナップショットで", "本次无需刷新": "今回は更新の必要がありません", "本软件不提供任何担保,可按 AGPL-3.0 修改与分发;通过网络提供修改版服务时须向用户提供对应源码。": "本ソフトウェアは無保証で、AGPL-3.0 に従い改変・配布できます。改変版をネットワークサービスとして提供する場合は、利用者に対応するソースを提供してください。", "本项目的 AGPL-3.0 许可不替代这些第三方许可。名称与标识的商标权归各自权利人所有。": "本プロジェクトの AGPL-3.0 ライセンスは、これらのサードパーティライセンスに代わるものではありません。名称とロゴの商標権は、それぞれの権利者に帰属します。", "机器人校验": "ロボット検証", "机器人校验设置已保存": "ボット対策の設定を保存しました", "条数": "件数", "来源声明当前关闭,这条规则不会生效。请先在客户端识别设置中开启。": "呼び出し元の申告は無効なため、このルールは適用されません。先にクライアント識別設定で有効にしてください。", "来源声明无效或未登记,本次已忽略。": "申告が無効または未登録のため無視しました。", "来源声明未启用,本次已忽略。": "呼び出し元の申告は無効のため無視しました。", "来源版本": "出典のリビジョン", "来源设备:{device}": "取得元デバイス:{device}", "来自 {device},生成于 {time}": "{device} から、{time} に作成", "架构": "アーキテクチャ", "查看内置客户端({n})": "内蔵クライアントを表示({n})", "查询管理员状态失败:{message}": "管理者状態の照会に失敗しました:{message}", "校验身份:这三段必须各自成块排在最前(实测:三段并成一段会被回 405 / 3012)。因此这里按段编辑,不能合成一段。改过的段以你的文本为准,没改的段继续用官方原文;清空某一段 = 那一段恢复官方原文。": "で身元を検証します:この 3 つの段はそれぞれ独立したブロックとして先頭に並ぶ必要があります(実測:3 段をまとめて 1 段にすると 405 / 3012 が返ります)。そのためここでは段ごとに編集し、1 段にまとめることはできません。変更した段はあなたのテキストが優先され、変更していない段は引き続き公式原文を使用します。ある段を空にする = その段は公式原文に戻ります。", "桌面端": "デスクトップ版", "桌面端登录 / 注册验证": "デスクトップ版のログイン / 登録時の認証", "桌面端:登录 / 注册需要 ALTCHA 人机验证": "デスクトップ:ログイン / 登録に ALTCHA の認証が必要", "桌面端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "デスクトップ:ログイン / 登録に ALTCHA の認証が必要(現在使用中)", "桌面运行时不可用,暂时无法保存": "デスクトップランタイムが利用できないため、保存できません", "档案": "プロファイル", "检测中…": "確認中…", "概览": "概要", "模型不能直接看图时,按你选择的方式处理。原生支持图片的请求直接转发,不增加识图调用。": "モデルが画像を直接認識できない場合に、選択した方式で処理します。画像に対応するモデルへのリクエストは追加の読み取りを行わず、そのまま転送します。", "模型单独配置": "モデル別設定", "模型目录没写明是否支持图片时按这里处理。": "モデル一覧に画像対応の記載がない場合の扱いです。", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。下面两块分别选好「哪些模型」和「用哪只模型」即可;没配到的模型、以及本来就能看图的模型,一律原样放行。这里的改动立即生效,不需要保存。": "画像を読めないモデルへの対処は 2 通りだけです。別のモデルに読ませるか、リクエスト全体を画像を読めるモデルに渡すかです。下の 2 つのブロックで「対象のモデル」と「使うモデル」を選んでください。ここに含まれないモデルと、もともと画像を読めるモデルはそのまま通します。ここの変更はすぐ反映され、保存は不要です。", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。没配到的模型、以及本来就能看图的模型,一律原样放行;每个请求只用其中一种方式,不会两种串着做,处理失败也不会改走另一种。改动立即生效,不需要保存。": "画像を読めないモデルへの対処は 2 通りだけです。別のモデルに読ませるか、リクエスト全体を画像を読めるモデルに渡すかです。ここに含まれないモデルと、もともと画像を読めるモデルはそのまま通します。1 つのリクエストで使う方式は 1 つだけで、2 つを続けて実行することはなく、失敗してももう一方には切り替えません。ここの変更はすぐ反映され、保存は不要です。", "模型请求是否需要验证码由 ZCode 上游配置决定,领取验证与模型请求免验证分别处理。后台只检查配置和库存,不自动运行验证码或弹出拼图;需要验证时,在账号的「套餐明细」中点击「开始验证」。验证令牌一次性使用,短时间内过期,失败或取消后不会自动重试。": "モデルリクエストの認証要否は ZCode の上流設定で決まり、プラン受け取りの認証とは別に扱います。バックグラウンドは設定と在庫のみを確認し、認証やパズルを自動表示しません。必要な場合は「プラン詳細」で「認証を開始」を押してください。トークンは一度のみ使用でき短時間で失効し、失敗やキャンセル後は自動再試行しません。", "模式": "モード", "模式改为「{mode}」": "モードを「{mode}」に変更しました", "次": "回", "次日 00:00": "翌日 00:00", "正则表达式": "正規表現", "正在保存上游原始报文:": "アップストリームの生メッセージを保存中:", "正在修改…": "変更中…", "正在剥离出站请求里的审核指纹:表头键值整段删除,模板句最小改写。": "送信リクエスト内の審査フィンガープリントを除去しています:ヘッダーのキーと値は丸ごと削除し、テンプレート文は最小限に書き換えます。", "正在安装…": "インストール中…", "正在应答跨源请求:浏览器跨域请求可直连 /v1/*。": "クロスオリジンリクエストに応答中:ブラウザーからの CORS リクエストは /v1/* に直接接続できます。", "正在归一角色:developer 角色消息转发前改写为 system。": "ロールを正規化中:developer ロールのメッセージは転送前に system に書き換えられます。", "正在注册…": "登録中…", "正在联网更新": "オンラインで更新中", "正在读取提供商设置…": "プロバイダー設定を読み込み中…", "正式版": "正式版", "每个请求只会用到其中一种方式,不会两种串着做;处理失败也不会改走另一种。配了哪只视觉模型,那次请求的图片就会交给它。": "1 つのリクエストで使う方式は 1 つだけです。2 つを続けて実行することはなく、失敗してももう一方には切り替えません。設定した視覚モデルに、そのリクエストの画像が渡されます。", "每条请求轮换到下一个可用账号;新会话交给当前最闲的那位。适合想把手里的号摊开用、不让某一个一直扛。": "リクエストごとに次の利用可能なアカウントへ順送りし、新しいセッションはいちばん暇なアカウントに任せます。手持ちのアカウントをまんべんなく使いたいときに。", "每条请求都重新按策略选路 —— 行为与「关闭」一致,仅保留会话识别的记录。": "リクエストごとに戦略に従って選び直します —— 動作は「オフ」と同じで、セッションの記録だけが残ります。", "每次等待的时长,默认 0 = 跟随上游建议(实测 9~30 秒,上游没给建议时用 15 秒)。可填 0–120 秒强制一个固定时长。": "1 回の待機時間。デフォルト 0 = アップストリームの推奨に従う(実測 9~30 秒、アップストリームが推奨を示さない場合は 15 秒)。0–120 秒を入力して固定の待機時間を強制することもできます。", "每行一个域名,不填协议、端口或路径;与 Cloudflare 中的配置一致,服务端按完整域名匹配。手机 App 使用所连接网关的域名。": "1 行に 1 つのホスト名を入力し、プロトコル・ポート・パスは含めないでください。Cloudflare の設定と一致させてください。サーバーはホスト名を完全一致で確認します。モバイルアプリは接続先ゲートウェイのホスト名を使用します。", "毫秒": "ミリ秒", "沟通方式 / 上下文管理 + Environment 段。": "コミュニケーション方針 / コンテキスト管理 + Environment の段です。", "没有可导出的账号": "エクスポートできるアカウントがありません", "没有可用视觉模型时": "利用可能な視覚モデルがない場合", "没有已确认支持图片的模型,请先在模型管理中确认。": "画像対応が確認済みのモデルがありません。先にモデル管理で確認してください。", "没能读到「{label}」的当前值,改为 {count} 条可能会删除超出的历史数据。": "「{label}」の現在値を読み取れませんでした。{count} 件に変更すると、超過した履歴データが削除される可能性があります。", "没能读到「{label}」的当前值,改为 {days} 天可能会删除超出的历史数据。": "「{label}」の現在値を読み取れませんでした。{days} 日に変更すると超過した履歴データが削除される可能性があります。", "沿用对应方式的视觉模型配置,不额外维护一份模型列表。": "該当する方式の視覚モデル設定を利用します。別のモデル一覧は不要です。", "沿用工具服务的视觉分析模型": "ツールサービスの視覚分析モデルを利用", "沿用工具服务的视觉分析模型(未配置)": "ツールサービスの視覚モデルを使う(未設定)", "注册并开启": "登録してオンにする", "注册管理员账号": "管理者アカウントを登録", "注意:这一家的「网关自带」开关现在是关的,改过的正文要等开关打开才生效。": "注意:このプロバイダーの「ゲートウェイ内蔵」スイッチは現在オフです。変更した本文はスイッチをオンにするまで有効になりません。", "流式响应相邻数据之间允许的最大空闲时间(秒),收到新数据后重新计时,默认 300 秒,范围 1~3600。": "ストリーミング応答の隣接するデータ間に許される最大アイドル時間(秒)。新しいデータを受信すると計時がリセットされます。デフォルト 300 秒、範囲 1~3600。", "流式响应空闲超时": "ストリーミング応答アイドルタイムアウト", "测试连接": "接続テスト", "浏览器 / PWA": "ブラウザ / PWA", "浏览器只在 https 或 localhost 下提供离线缓存;局域网 http 访问不影响正常使用": "ブラウザは https または localhost でのみオフラインキャッシュを提供します。LAN の http アクセスでも通常どおり使えます。", "浏览器在本地完成计算,不需要第三方密钥,也不依赖外部验证服务。": "ブラウザー内で計算を行います。外部サービスのキーや認証サービスは不要です。", "浏览器标签页": "ブラウザのタブ", "浏览器面板": "ブラウザパネル", "消息角色": "メッセージのロール", "添加备选模型": "代替モデルを追加", "添加提供商": "プロバイダーを追加", "添加提供商…": "プロバイダーを追加…", "添加自定义头": "カスタムヘッダーを追加", "添加要单独配置的提供商": "個別設定するプロバイダーを追加", "清除本机凭证": "この端末の認証情報を削除", "清除这里的正文": "ここの本文をクリア", "源代码": "ソースコード", "点下面的入口会用系统默认浏览器打开 GitHub 的对应表单(需要 GitHub 账号,模板已预设好,填完直接提交即可)。": "下のリンクをクリックすると、システムのデフォルトブラウザーで GitHub の該当フォームが開きます(GitHub アカウントが必要。テンプレートは用意済みなので、記入してそのまま送信するだけです)。", "点击重命名": "クリックで名前を変更", "点此添加或切换服务器": "タップしてサーバーを追加・切り替え", "点此添加服务器": "タップしてサーバーを追加", "版本": "バージョン", "版本信息": "バージョン情報", "版本信息 · 所连网关环境": "バージョン情報 · 接続中のゲートウェイ", "版权声明": "著作権表示", "状态码 {code} 已在名单里": "ステータスコード {code} はすでにリストにあります", "状态码必须是 {min}–{max} 的整数(收到: {text})": "ステータスコードは {min}–{max} の整数でなければなりません(受信値:{text})", "环境": "環境", "生成时间:{time}": "作成日時:{time}", "生效顺序:有效的来源声明优先,然后按顺序匹配自定义规则,最后使用内置规则。中转丢失原始标识时,无法自动推断背后的软件。": "適用順序:有効な申告、カスタムルールの順序、内蔵ルール。中継で元の識別情報が失われた場合、元のソフトウェアを自動推定することはできません。", "用 models.dev 补齐上游没声明的模型能力与思考档位(联网刷新,内嵌快照始终生效)": "上流が宣言していないモデル能力と推論レベルを models.dev で補完する(オンライン更新。同梱スナップショットは常に有効)", "用于加密上云的账号密钥。请自己记牢 —— 它不保存到云端,换机下载时必须输入同一个密码,否则账号数据无法解密。": "クラウドに送るアカウントキーの暗号化に使います。忘れないでください —— クラウドには保存されず、別のマシンで復元する際に同じパスワードを入力しないとアカウントデータを復号できません。", "用哪只模型识图": "画像を読むモデル", "用浏览器菜单里的「添加到主屏幕」把这一页装成 App:全屏打开、没有地址栏,和原生应用一样。": "ブラウザメニューの「ホーム画面に追加」でこのページをアプリとして入れられます。全画面・アドレスバーなしで、ネイティブアプリと同じ感覚です。", "由 Cloudflare 提供验证,需要浏览器与网关均能连接 Cloudflare。验证失败或服务不可用时不会自动放行。": "Cloudflare が認証を提供します。ブラウザーとゲートウェイの両方から Cloudflare に接続できる必要があります。認証失敗やサービス停止時にアクセスを許可することはありません。", "由 {source} 覆盖,手动设置暂不生效": "{source} が優先され、手動設定は現在適用されていません", "界面缩放": "UI ズーム", "界面缩放比例": "UI ズーム比率", "界面语言": "表示言語", "界面语言。可选简体中文、繁體中文、English、日本語、한국어、Português (Brasil),或「跟随系统」(按浏览器 / 系统的语言列表自动选)。切换后整页立即刷新;该偏好只存在本机(localStorage),不影响账号、密钥与转发。": "表示言語。簡体字中国語、繁體中文、English、日本語、한국어、Português (Brasil)、または「システム」(ブラウザー / システムの言語リストに従って自動選択)から選べます。切り替えるとページ全体が即座に再読み込みされます。この設定は本機(localStorage)にのみ保存され、アカウント、キー、転送には影響しません。", "界面语言只保存在本机(localStorage)。切换后整页立即刷新,不影响账号、密钥与转发。": "表示言語は本機(localStorage)にのみ保存されます。切り替えるとページ全体が即座に再読み込みされ、アカウント、キー、転送には影響しません。", "界面里编辑的正文": "画面で編集した本文", "留空 = 用内置默认提示词": "空欄 = 内蔵のデフォルトシステムプロンプトを使用", "留空使用 AWS 官方地址": "空欄なら AWS 公式アドレスを使用", "留空使用默认": "空欄なら既定値を使用", "留空表示删除匹配内容;替换内容按原文写入,$ 不作为捕获组引用。": "空欄なら一致部分を削除します。置換内容はそのまま書き込み、$ をキャプチャグループ参照として扱いません。", "登录 / 注册需要通过 ALTCHA 人机验证(工作量证明)": "ログイン / 登録には ALTCHA の人間検証(プルーフ・オブ・ワーク)が必要です", "登录 / 账号切换 / 429 切换等系统事件,可填 1–3650 天。": "ログイン / アカウント切替 / 429 切替などのシステムイベント。1–3650 日の範囲で入力できます。", "登录 / 账号切换 / 429 切换等系统事件,可填 1–99999 天。": "ログイン / アカウント切り替え / 429 切り替えなどのシステムイベント。1〜99999 日で指定できます。", "登录 Agent2API": "Agent2API にログイン", "登录 {name}": "{name} にログイン", "登录人机验证": "ログイン CAPTCHA", "百分比类读数(如 OpenCode Go、Antigravity)不能相加,组头显示的是组内最低剩余比例。": "パーセント表示の読み取り値(OpenCode Go、Antigravity など)は合算できないため、帯にはグループ内で最も低い残り割合を表示します。", "监听地址": "待受アドレス", "目前展示仓库已登记的图标来源许可,不代表完整的第三方依赖清单。": "現在表示しているのは、リポジトリに登録済みのアイコン出典のライセンスです。サードパーティ依存関係の完全な一覧ではありません。", "目标路径:{path}": "保存先パス:{path}", "直接按上面的设置兼容": "上の設定でそのまま互換処理する", "直接按当前方式兼容": "選択した方式で直接処理", "知道了": "了解", "确定": "確定", "确定后加入当前草稿,点击「保存设置」才会生效。": "確定すると下書きに追加します。「設定を保存」を押すと有効になります。", "确定继续?": "続行しますか?", "确认上传": "アップロードを確認", "确认图片处理授权": "画像処理の許可を確認", "确认备份密码": "バックアップのパスワードを確認", "确认并保存": "確認して保存", "确认新密码": "新しいパスワード(確認)", "确认缩减数据保留": "データ保持の縮小を確認", "确认缩短保留天数": "保存日数の短縮を確認", "社区与支持": "コミュニティとサポート", "离线缓存未启用": "オフラインキャッシュは無効です", "积分合计只统计当前筛选出来的账号": "ポイント合計を現在の絞り込み結果のみで計算する", "移入「{name}」": "「{name}」へ移動", "程序路径": "実行ファイルのパス", "空 = 不要这一份,回落提示词文件 / 内置默认提示词。": "空 = この本文を使用せず、システムプロンプトファイル / 内蔵デフォルトにフォールバックします。", "空分组 · 点组头的 + 把菜单移进来": "空のグループ · 見出しの + でメニューを移動できます", "立即解除": "今すぐ解除", "站点密钥(Site Key)": "サイトキー(Site Key)", "第一段": "第 1 段", "第一段(身份句)": "第 1 段(アイデンティティ文)", "第三方应用密码": "サードパーティアプリのパスワード", "第三方开源许可": "サードパーティのオープンソースライセンス", "第三方模型回答完自动折叠过程": "サードパーティモデルの回答後の工程を自動で折りたたむ", "第三方模型回答完自动折叠过程设置已刷新": "サードパーティモデルの回答後の工程の自動折りたたみ設定を更新しました", "第三段": "第 3 段", "第三段(动态段)": "第 3 段(動的段)", "第二段": "第 2 段", "第二段(稳定段)": "第 2 段(安定段)", "等待响应超时": "応答待ちタイムアウト", "等待期间请求日志的状态列会显示「排队中」阶段,详情弹窗的「内部重试」里能逐次看到等待时长;等待用尽后返回 HTTP 503(不是 401/429:既不会刷新凭证,也不会把账号标成限额)。": "待機中はリクエストログのステータス列に「キューイング中」の段階が表示され、詳細ダイアログの「内部リトライ」で待機時間を 1 回ずつ確認できます。待機を使い切ると HTTP 503 を返します(401/429 ではありません:認証情報の更新も、アカウントをレート制限としてマークすることも行いません)。", "等比放大或缩小整个界面(文字、控件、间距一起变),效果与浏览器按 Ctrl +/- 相同:80%–130%、5% 一档。窗口本身不缩放,变的是页面内容的显示比例,设置立即生效并记住,下次启动直接按这个比例打开。放得越大可视范围越小,窗口较窄或表格较宽时不建议调得太大。": "UI 全体を等比で拡大または縮小します(文字、コントロール、余白が一緒に変化)。効果はブラウザーで Ctrl +/- を押した場合と同じ:80%–130%、5% 刻み。ウィンドウ自体は拡大縮小されず、変わるのはページ内容の表示比率です。設定は即時有効かつ記憶され、次回起動時はその比率で直接開きます。大きくするほど表示できる範囲は狭くなるため、ウィンドウが狭い場合やテーブルが広い場合はあまり大きくしすぎないことをおすすめします。", "简体中文": "簡体字中国語", "管理员已注册": "管理者登録済み", "管理员账号": "管理者アカウント", "管理插件": "プラグインを管理", "精确文本": "完全一致テキスト", "系统提示词模式": "システムプロンプトモード", "系统提示词设置已刷新": "システムプロンプト設定を更新しました", "累计请求": "累計リクエスト", "繁体中文": "繁体字中国語", "约 {n} 字符": "約 {n} 文字", "结构": "構造", "给 Codex 的响应补阶段标记,回答完后像官方模型一样把推理与命令过程折叠起来": "Codex へのレスポンスにフェーズマーカーを補い、回答後に公式モデルと同様に推論とコマンドの工程を折りたたむ", "继续并清理": "続行して削除", "编辑提示词正文 · {label}": "システムプロンプト本文を編集 · {label}", "编辑提示词正文 · 全局": "システムプロンプト本文を編集 · グローバル", "编辑正文": "本文を編集", "编辑网关自带提示词 · {label}": "ゲートウェイ内蔵システムプロンプトを編集 · {label}", "编辑脱敏规则": "マスキングルールを編集", "编辑识别规则": "識別ルールを編集", "缩放后重新存成 JPEG 时用的质量。默认 80,可填 40–95;数值越小体积越小、画质越差。": "縮小後の画像を JPEG で保存し直すときの品質です。既定 80、40〜95 で指定できます。小さいほど容量は減りますが画質が落ちます。", "缩放比例": "ズーム比率", "网关": "ゲートウェイ", "网关 Key 数量": "ゲートウェイキー数", "网关尚未就绪": "ゲートウェイの準備ができていません", "网关自带": "ゲートウェイ内蔵", "网关跨域访问已开启": "ゲートウェイの CORS アクセスをオンにしました", "网关跨域访问设置已刷新": "ゲートウェイの CORS アクセス設定を更新しました", "网关跨域访问(CORS)": "ゲートウェイの CORS アクセス(クロスオリジン)", "网关面(/v1/*)默认不应答浏览器跨源请求:页面直连会被预检拦下,只报「无法连接 API」。注意来源是 * —— 未配「网关 Key」时任何网页都能借本机网关打上游,故默认关闭;只给自己用的话,让页面与网关同源(本地反代 /v1)更稳妥。面板接口(/api/*)不受影响。": "ゲートウェイ側(/v1/*)はデフォルトでブラウザーのクロスオリジンリクエストに応答しません:ページから直接接続するとプリフライトで拒否され、「API に接続できません」としか表示されません。許可オリジンが * である点に注意 —— 「ゲートウェイキー」を設定していない場合、どんな Web ページでも本機のゲートウェイ経由でアップストリームへアクセスできてしまうため、デフォルトではオフです。自分の利用だけであれば、ページとゲートウェイを同一オリジンにする(ローカルで /v1 をリバースプロキシする)ほうが安全です。パネルのインターフェース(/api/*)は影響を受けません。", "网络访问": "ネットワークアクセス", "网页端": "Web", "网页端登录 / 注册验证": "Web 版のログイン / 登録時の認証", "网页端的界面缩放由浏览器自己控制(Ctrl + / Ctrl -,或浏览器菜单里的缩放),此项不可调。": "Web 版の UI ズームはブラウザー側で制御します(Ctrl + / Ctrl -、またはブラウザーメニューのズーム)。この項目は調整できません。", "网页端:登录 / 注册需要 ALTCHA 人机验证": "Web:ログイン / 登録に ALTCHA の認証が必要", "网页端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "Web:ログイン / 登録に ALTCHA の認証が必要(現在使用中)", "网页管理地址": "Web 管理アドレス", "群晖 NAS": "Synology NAS", "群晖需在「控制面板 → 应用程序门户 → WebDAV」里启用服务,端口默认 5005(HTTP)/ 5006(HTTPS)。": "Synology では「コントロールパネル → アプリケーションポータル → WebDAV」でサービスを有効にしてください。既定のポートは 5005(HTTP)/ 5006(HTTPS)です。", "脱敏词表": "マスキングルール", "腾讯云 COS": "Tencent Cloud COS", "自动同步": "自動同期", "自动同步上次失败": "前回の自動同期に失敗しました", "自动续写": "自動継続生成", "自定义 User-Agent": "カスタム User-Agent", "自定义客户端分类": "カスタムクライアント分類", "自定义客户端数量已达上限": "カスタムクライアント数が上限に達しました", "自定义提供商 {id}": "カスタムプロバイダー {id}", "自定义网站和应用界面中显示的名称与 Logo。": "Web サイトとアプリの画面に表示する名前とロゴを変更します。", "自定义识别规则": "カスタム識別ルール", "自愈保护": "自動回復ガード", "至少 12 位": "12 文字以上", "至少 8 位,换机下载时需要": "8 文字以上。別のマシンでの復元時に必要", "至少要保留一个分组": "グループは最低 1 つ必要です", "英语": "英語", "范围 5–120 秒,并受原请求时限约束。": "範囲は 5~120 秒で、元のリクエストの制限時間にも従います。", "范围为 5–120 秒,并受原请求时限约束。图片过大、格式错误或下载失败不会被当作模型不支持图片。": "5~120秒の範囲で指定し、元のリクエストの制限時間も適用されます。画像サイズ超過、形式エラー、ダウンロード失敗は画像非対応として扱いません。", "被更高优先级覆盖": "優先度の高い設定で上書き", "装上{size}的官方身份提示词": "{size}の公式アイデンティティプロンプトを適用", "装成 App 后从桌面图标直接进入:全屏打开、没有地址栏。": "アプリとして入れるとホーム画面のアイコンから直接開けます。全画面・アドレスバーなし。", "覆盖": "上書き", "规则 / 匹配方式": "ルール / 一致方式", "规则可以增删改、启停和调整顺序;替换内容留空表示删除匹配内容。恢复默认只重置词表,不改开关和提供商范围。": "ルールの追加、編集、削除、有効化、無効化、並べ替えが可能です。置換内容が空なら一致部分を削除します。デフォルト復元はルールのみをリセットし、スイッチとプロバイダー範囲は変更しません。", "规则名称": "ルール名", "规则名称不能为空,且最多 {max} 个字符": "ルール名は必須です。{max} 文字以内で入力してください", "规则已保存,对后续请求生效;当前历史记录未修改。": "ルールを保存しました。以後のリクエストに適用され、現在の過去記録は変更されていません。", "规则忽略大小写,只影响新请求的日志与统计,不改变模型选择或权限。": "ルールは大文字・小文字を区別せず、新しいリクエストのログと統計にのみ適用されます。モデル選択や権限は変わりません。", "规则编号:{id}": "ルールID:{id}", "视觉模型": "視覚モデル", "视觉模型先识读图片,再由原模型分析和回答。": "視覚モデルが画像を読み取った後、元のモデルが分析して回答します。", "视觉模型来源": "視覚モデルの指定方法", "视觉模型的思考等级": "視覚モデルの思考レベル", "视觉模型直接回答": "視覚モデルが直接回答", "视觉模型识读图片": "視覚モデルが画像を読み取り", "解码后小于这个体积的图片保持原样。默认 512KB,可填 0–10240;填 0 表示所有内嵌图片都过一遍。": "デコード後のサイズがこの値を下回る画像はそのまま送ります。既定 512KB、0〜10240 で指定できます。0 にするとすべてのインライン画像を処理します。", "解除失败:{message}": "解除に失敗しました:{message}", "触发阈值": "適用しきい値", "计数": "カウント", "计量单位": "表記単位", "让 Codex 在收到最终答案后收起中间过程。仅为严格识别的 Codex Responses 请求补阶段标记,报表归类和来源声明不影响此判断。正常结束且没有工具调用的非空回答才补 final_answer,工具调用前的说明补 commentary;错误、截断、缺少结束信号或未知结束原因不补最终答案标记。默认关闭,不改变回答文字,也不减少模型思考或用量。": "Codex が最終回答を受け取った後、中間の作業を折りたためるようにします。厳密に識別した Codex の Responses リクエストにのみフェーズを補い、レポートの分類やクライアントの自己申告には左右されません。正常終了し、ツール呼び出しのない空でない回答にだけ final_answer を付け、ツール呼び出し前の説明には commentary を付けます。エラー、切り詰め、完了通知の欠落、不明な終了理由には最終回答マーカーを付けません。既定はオフで、回答本文、モデルの推論、使用量は変わりません。", "许可原文": "ライセンス原文", "许可原文已随软件内置,无需联网即可查看;打开项目来源链接需要联网。": "ライセンス原文はアプリに同梱されており、オフラインで閲覧できます。プロジェクトの出典リンクを開くにはインターネット接続が必要です。", "许可核对版本": "ライセンス確認に使用したリビジョン", "设置不可隐藏(隐藏了只能清缓存找回来)": "「設定」は非表示にできません(戻すにはデータの削除が必要になります)", "设置备份密码": "バックアップのパスワードを設定", "设置识别规则": "識別ルールを設定", "访问时请使用目标设备能连接到的地址;这里显示的本机地址不代表公网可达。": "接続元の端末から到達できるアドレスを使用してください。ここに表示されるアドレスは、インターネットからの到達を保証するものではありません。", "识别依据": "識別根拠", "识别规则数量已达上限": "識別ルール数が上限に達しました", "词表为空,不会改写任何指纹。可以新增规则或恢复默认词表。": "ルールが空のためフィンガープリントを変更しません。ルールを追加するかデフォルトに戻してください。", "该提供商暂无可编辑的专属设置": "このプロバイダーには編集可能な固有設定がありません", "详细日志": "詳細ログ", "语言设置": "言語設定", "请先保存设置再同步": "同期する前に設定を保存してください", "请先在 Cloudflare 创建 Turnstile 组件,建议选择 Managed 模式,并添加面板实际使用的域名。": "まず Cloudflare で Turnstile ウィジェットを作成してください。Managed モードを推奨します。パネルで実際に使用するドメインを追加してください。", "请填一个分组名": "グループ名を入力してください", "请填写管理员账号(64 字符以内)": "管理者アカウントを入力してください(64 文字以内)", "请求发出后等待上游响应头的最大时间(秒),默认 300 秒,范围 1~3600。": "リクエスト送出後、アップストリームのレスポンスヘッダーを待つ最大時間(秒)。デフォルト 300 秒、範囲 1~3600。", "请求带有不同软件的标识,未自动归类;可用自定义规则明确归属。": "異なるソフトウェアの識別情報が含まれるため、自動分類しませんでした。カスタムルールで分類先を指定できます。", "请求提供商 / 模型支持": "プロバイダー / モデルの対応をリクエスト", "请求日志保留天数": "リクエストログ保持日数", "请求日志保留数量上限": "リクエストログの保存件数上限", "请求记录": "リクエスト記録", "请求超时": "リクエストタイムアウト", "请求转发到上游失败时(服务器瞬时错误、连接失败,以及 WorkBuddy 的 11-128 敏感词拦截),网关会等一段间隔后再发一次。次数分两档,管的是两件事:①「同一账号重试次数」在同一账号上原地重发几次 —— 一般是提示词被上游拦截、或链路瞬时抖动,等一会儿重发往往就好了;②「切换账号重试次数」这份请求最多再换几个账号试 —— 首发的那个账号不算,每换一个扣一次,不分是不是同一家(换到同一家的下一个账号也算一次),换满还失败就把错误返回给客户端。两项都设为 0 表示失败不重试、直接报错。注意账号级限额(429)不占这里的换号次数 —— 那类失败走「冷却该账号并换下一个账号」的降级,与这里的重试是两条路。另有「指定错误码直接换号」名单(默认 402):命中名单的上游状态码不在同一账号重发,直接按队列换下一个账号继续试(换号也占「切换账号重试次数」),换满仍失败才把错误返回给客户端。": "アップストリームへの転送が失敗した場合(サーバーの一時的なエラー、接続失敗、および WorkBuddy の 11-128 センシティブワードブロック)、ゲートウェイは一定の間隔を置いてからもう一度送信します。回数は 2 系統に分かれ、それぞれ別のことを司ります:①「同一アカウントのリトライ回数」は同じアカウントでそのまま何回再送するか —— 多くはシステムプロンプトがアップストリームでブロックされた、または経路の一時的な揺らぎで、しばらく待って再送すれば直ることがよくあります;②「アカウント切替のリトライ回数」はこのリクエストであと最大何個のアカウントに切り替えて試すか —— 初回のアカウントは含まず、切り替えるたびに 1 回消費し、同じプロバイダーかどうかは問いません(同じプロバイダーの次のアカウントへの切替も 1 回と数えます)。使い切ってもなお失敗する場合はエラーをクライアントへ返します。両方とも 0 にすると、失敗時にリトライせず直接エラーを返します。注意:アカウント単位のレート制限(429)はここの切替回数を消費しません —— その種の失敗は「そのアカウントを冷却して次のアカウントへ」というフォールバックを通り、ここのリトライとは別ルートです。また「指定エラーコードで直接アカウント切替」リスト(デフォルト 402)があります:リストに該当するアップストリームのステータスコードは同一アカウントでの再送を行わず、キューの次のアカウントへ直接切り替えて試行を続けます(切替は「アカウント切替のリトライ回数」を消費します)。使い切ってもなお失敗する場合にのみ、エラーがクライアントへ返されます。", "请求重试": "リクエストリトライ", "请至少选择一个提供商": "プロバイダーを1つ以上選択してください", "请输入同步密码": "同期パスワードを入力してください", "请输入当前密码": "現在のパスワードを入力してください", "请输入服务端密钥": "シークレットキーを入力してください", "请选择可用的标识请求头": "使用可能な識別ヘッダーを選択してください", "请选择归属客户端": "分類先のクライアントを選択してください", "读取云同步设置失败:{message}": "クラウド同期の設定を読み取れませんでした:{message}", "读取失败:{message}": "読み込みに失敗しました: {message}", "读取完整非流式响应体允许的最大时间(秒),默认 300 秒,范围 1~3600。": "非ストリーミングレスポンスボディ全体を読み切るために許される最大時間(秒)。デフォルト 300 秒、範囲 1~3600。", "读取网关信息失败:{message}": "ゲートウェイ情報の読み込みに失敗しました: {message}", "读取远端…": "リモートを読み取り中…", "读取远端信息失败:{message}": "リモート情報の取得に失敗しました:{message}", "调用方声明": "呼び出し元の申告", "调试报文": "デバッグメッセージ", "调试模式": "デバッグモード", "调试模式设置已刷新": "デバッグモード設定を更新しました", "负载均衡": "負荷分散", "账号列表": "アカウント一覧", "账号导入 / 导出": "アカウントのインポート / エクスポート", "账号路由": "アカウントルーティング", "账号页表格的两项显示偏好,只存在本机(localStorage),不影响账号数据与转发。「积分合计只统计当前筛选出来的账号」:账号页每一家的分组带右侧有一枚「可用合计」,默认按整组求和 —— 不受筛选、搜索影响,被筛掉的账号也计入(余额是资产,禁用也只表示不参与转发,额度仍在账上)。打开这一项后改为只累加当前可见的行:例如筛出 1 个 100 积分的账号,合计就是 100,而不是同组两个账号之和 1,000。分页不参与这个口径 —— 翻页看的是同一份结果的不同屏,合计不随页码变化。「隐藏账号名」与表头「账号」旁边那颗眼睛是同一个开关:打开后账号列的名字整体显示成星号,适合截图分享时遮挡账号。": "アカウント一覧表の表示設定です。本機のみ(localStorage)に保存され、アカウントデータや転送には影響しません。「ポイント合計を現在の絞り込み結果のみで計算する」:アカウントページの各プロバイダ帯の右側に「利用可能合計」があります。既定ではグループ全体を合算し、絞り込みや検索の影響を受けず、除外されたアカウントも含まれます(残高は資産であり、無効化は転送に参加しないだけで、ポイントは残ります)。この項目をオンにすると、現在表示中の行だけを合算します。たとえば 100 ポイントのアカウント 1 件に絞り込むと合計は 100 になり、同じグループの 2 件の合計 1,000 にはなりません。ページ送りはこの計算に含まれません。ページは同じ結果を別の画面で見ているだけなので、ページを変えても合計は変わりません。「アカウント名を隠す」は表の「アカウント」列の横にある目のアイコンと同じスイッチです。オンにするとアカウント列の名前がアスタリスクで表示され、スクリーンショットの共有時に隠せます。", "账户": "アカウント", "超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件。把天数改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。可填范围为 1–3650 天。请求日志 / 按天聚合 / 签到记录已全量保留、不再自动删除,要清历史请到对应页面手动清空。": "保存期間を超えた部分は削除されます:イベントログはログイン、アカウント切替、429 切替といったシステムイベントです。日数を小さくして(例:30 日→7 日)保存すると、超えた履歴データは即座に削除され、元に戻せません。大きくするか変更しない場合は何も削除されません。設定できる範囲は 1〜3650 日です。リクエストログ / 日次集計 / チェックイン記録は全量保持となり自動削除されません。履歴を消すには、それぞれのページで手動でクリアしてください。", "超出的历史数据会被立即删除,且不可恢复。": "超過した履歴データはすぐに削除され、元に戻せません。", "超时": "タイムアウト", "超时设置已刷新": "タイムアウト設定を更新しました", "跟随模型配置": "モデル設定に従う", "跟随系统 · 浅色 · 深色": "システム · ライト · ダーク", "跟随默认": "デフォルトに従う", "跨域访问": "CORS", "路由": "ルーティング", "路由组只使用组内成员;普通路由只使用参与范围内的账号和模型。": "ルートグループはグループ内のメンバーのみを使用し、通常のルートは参加範囲内のアカウントとモデルのみを使用します。", "路由设置已刷新": "ルーティング設定を再読み込みしました", "跳过 {n} 个": "スキップ {n} 件", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;负载均衡是每条请求换下一位,把负载摊到各个账号上。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时)、被 429 的账号垫底排到队尾 30 分钟、余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 前两层可以在下面按需开关,限制器由账号的「限制器」设置管。": "リクエストの転送時にアカウントをどんな順で選ぶか:①「ルーティング戦略」が並びの規則を決めます —— 順序優先は 1 番手が答えられなくなる(レート制限 / 障害 / 枠切れ)まで全リクエストを受け持ち、そこで次に回ります。負荷分散はリクエストごとに次のアカウントへ回し、負荷を各アカウントに分散します。②「セッション粘着」は同じセッション(同じモデル + 同じ冒頭メッセージ)をできるだけ同じアカウントにひも付けます —— 連続対話ではアップストリームのコンテキストキャッシュを再利用でき、アカウントの切り替えも浪費も減ります。自動は 5 分、セッション単位は 6 時間粘着し、毎ターンとオフは粘着しません。アカウントの並び順(アカウント表の 1 列目)はどの戦略でも土台で、戦略はその上に重なります。さらにルーティングには 3 つの自動回復ガードがあります:転送に失敗したアカウントはしばらく退避し(15 分から始まり失敗のたびに倍増、上限 1 時間)、枠が残ったまま 429 を受けたアカウントは 30 分間最後尾へ回り、枠切れ / 期間トークン上限に達したアカウントはリミッターに止められます —— 前の 2 つは下で必要に応じてオン / オフでき、リミッターは各アカウントの「リミッター」設定に従います。", "转发前压缩对话里内嵌的大图(只改发给上游的副本,生图与图片编辑不受影响)": "転送前に会話へ埋め込まれた大きな画像を圧縮(変更されるのは上流へ送るコピーだけ。画像生成と画像編集には影響しません)", "转发前将 developer 角色消息转换为 system,兼容不支持 developer 角色的 OpenAI 兼容上游": "転送前に developer ロールのメッセージを system に変換し、developer ロール非対応の OpenAI 互換アップストリームにも対応", "转发失败的账号休息一会儿再回来:15 分钟起步,连续失败翻倍,封顶 1 小时;成功一次立即恢复。目的是「让这次失败先凉一会儿」,免得一条条地反复撞同一个坏账号。": "転送に失敗したアカウントはしばらく休んでから戻ります:初回 15 分、連続失敗で倍増、上限 1 時間。1 回成功すれば即復帰。「いったん失敗を冷ます」ためのもので、同じ不調アカウントにリクエストを連打しないための仕組みです。", "转发链路": "転送経路", "轮询间隔": "ポーリング間隔", "软件标识超过 1 KB,已截断保存;匹配仅使用保留部分。": "ソフトウェア識別情報が1 KBを超えたため切り詰めて保存しました。一致判定には保存部分のみを使用します。", "软件版本": "ソフトウェアバージョン", "轻量模式": "軽量モード", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 套餐池(Start Plan)通道不可用,相关请求会在请求日志里注明原因": "軽量モードが有効です:ウィンドウを閉じると UI プロセスを破棄し(約 200MB のメモリを解放)、ゲートウェイはバックグラウンドで継続します。UI が破棄されている間、ZCode プランプール(Start Plan)経路は利用できず、該当リクエストはリクエストログに理由が記録されます", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 活动套餐通道不可用,相关请求会在请求日志里注明原因": "軽量モードがオン:ウィンドウを閉じると UI プロセスを破棄し(約 200MB のメモリを解放)、ゲートウェイはバックグラウンドで継続します。UI 破棄期間中は ZCode アクティブプランチャネルは利用できず、該当するリクエストは理由がリクエストログに記録されます", "轻量模式(关窗释放界面内存)": "軽量モード(閉じると UI のメモリを解放)", "辅助识图": "補助画像読み取り", "辅助识图 · 原模型回答": "補助読み取り · 元のモデルが回答", "辅助识图保留原模型回答;切换视觉模型会让视觉模型直接回答。本次授权也包含已设置的模型单独配置。": "補助読み取りでは元のモデルが回答し、モデル切り替えでは視覚モデルが直接回答します。この許可には設定済みのモデル別設定も含まれます。", "辅助识图或切换视觉模型,默认关闭": "補助画像読み取り・視覚モデル切り替え(デフォルト無効)", "辅助识图配置": "補助画像読み取り設定", "输入同步密码": "同期パスワードを入力", "输入当前登录用的密码": "現在のログインパスワードを入力", "输入状态码,回车添加": "ステータスコードを入力し、Enter で追加", "运行形态": "実行形態", "近期没有命中样本,不代表未来请求不会命中。": "最近の一致サンプルはありませんが、今後のリクエストが一致する可能性はあります。", "还原": "元に戻す", "还有额度时被 429 的账号排到队尾,30 分钟后自动回到队列(成功转发一次也会立即回来)。它标记的是「疑似共享池被别人抢」,不是「这个账号本身有问题」。⚠️ 注意它与路由策略的配合:在「家内轮询」下,队尾意味着这一家整体被往后排 —— 如果某个提供商的账号被批量限流,它们会集体沉到队尾,那个家可能长时间轮不到。这时可以关掉本项,让 429 过的账号只受冷却约束(冷却到点自动回来)。": "枠が残っているのに 429 を食らったアカウントは最後尾に回り、30 分後に自動復帰します(1 回でも転送が成功すればすぐ戻る)。これは「共有プールを他の人に取られている疑い」を示すもので、「このアカウント自体の問題」ではありません。⚠️ ルーティング戦略との組み合わせに注意:「プロバイダー内ローテーション」では最後尾 = プロバイダーごと後ろへ回ることを意味します —— あるプロバイダーのアカウントがまとめてレート制限されると全員が最後尾に沈み、そのプロバイダーが長く回ってこない可能性があります。その場合は本項をオフにして、429 済みアカウントをクールダウンだけに任せるとよいでしょう(時間が来れば自動で戻ります)。", "还没有可用的视觉模型。": "利用できる視覚モデルがまだありません。", "还没有同步过。": "まだ同期していません。", "还没有添加服务器。点右上角「添加」,填入网关所在机器的 IP 或域名与端口。": "サーバーがまだありません。右上の「追加」から、ゲートウェイが動作するマシンの IP またはドメインとポートを入力してください。", "还没有装载任何数据。": "まだデータが読み込まれていません。", "还没有读到版本信息": "バージョン情報をまだ読み込んでいません", "还没有选择模型,这块设置暂时不起作用。": "モデルが未選択のため、このブロックは今のところ何も行いません。", "这一份就是「替换 / 追加」模式下网关要发的 system 正文。": "これが「置換 / 追加」モードでゲートウェイが送信する system の本文です。", "这一项已隐藏": "この項目は非表示です", "这一项正在显示": "この項目は表示中です", "这些模型的请求交给当前路由内可用的视觉模型回答,不再回到原模型。": "これらのモデルへのリクエストは、現在のルート内で使える視覚モデルが元のモデルの代わりに回答します。", "这些模型看到图片时,先把图片交给 {model} 读一遍,再由它们自己结合读到的内容回答。": "これらのモデルが画像を受け取ると、まず {model} に読ませ、読み取った内容を踏まえて元のモデルが回答します。", "这些模型看到图片时,先把图片交给「沿用工具服务的视觉分析模型」读一遍,再由它们自己结合读到的内容回答。": "これらのモデルが画像を受け取ると、まずツールサービス側の視覚モデルに読ませ、読み取った内容を踏まえて元のモデルが回答します。", "这只模型只负责看图,最终仍由原模型回答。": "このモデルは画像を読むだけで、最終的な回答は元のモデルが行います。", "这只模型直接接收图片与对话,完成本次回答。": "このモデルが画像と会話を直接受け取り、今回の回答を行います。", "这台网关未启用机器人校验": "このゲートウェイではボット確認が無効です", "这台网关没有管理员,用一把已启用的 API Key 访问。": "このゲートウェイには管理者がいません。有効な API Key でアクセスしてください。", "这条历史请求没有保存识别依据,不能据此自动创建规则。": "この過去のリクエストには識別根拠が保存されていないため、自動でルールを作成できません。", "这条规则已被删除,请关闭编辑后重新添加。": "このルールは削除されました。編集画面を閉じて追加し直してください。", "这里只列出已保存的提供商配置;未配置的提供商沿用全局设置,可从下拉框手动添加。用户保存的模式、文件和正文优先于全局设置,「跟随默认」只取消该提供商的模式、文件和正文覆盖。ZCode 套餐池默认由插件按三块装配,客户端系统正文合入第三块,不会自动创建替换规则;手动修改的网关提示词段或关闭开关仍以用户配置为准,能否被接受取决于上游规则。": "保存済みのプロバイダー設定だけを表示します。未設定のプロバイダーは全体設定に従い、ドロップダウンから手動で追加できます。保存したモード・ファイル・本文は全体設定より優先されます。「デフォルトに従う」は、そのプロバイダーのモード・ファイル・本文の上書きだけを解除します。ZCode の Start Plan は既定でプラグインが 3 ブロックを組み立て、クライアントの system 本文を第 3 ブロックにまとめます。置換ルールは自動作成しません。手動で編集したゲートウェイのプロンプト段や組み立てスイッチのオフ設定はそのまま優先され、受け付けられるかは上流のルール次第です。", "进程 PID": "プロセス PID", "远程根目录": "リモートのルートディレクトリ", "远端同一路径下的旧快照。事件日志、请求明细与调试报文不会上传。": "同じリモートパスにある古いスナップショットを上書きします。イベントログ・リクエスト明細・デバッグ通信記録はアップロードされません。", "远端已有一份快照,将被覆盖": "リモートに既存のスナップショットがあり、上書きされます", "远端快照使用了另一把账号密钥,但没有携带密钥文件,无法在本机解密。请在原来那台机器上重新上传一次。": "リモートのスナップショットは別のアカウントキーを使用していますが、キーファイルが含まれていないため本機では復号できません。元のマシンからもう一度アップロードしてください。", "远端快照使用的账号密钥与本机不同。请输入上传那台机器设置的同步密码,用它解出密钥装到本机后再继续下载。": "リモートのスナップショットは本機と異なるアカウントキーを使用しています。アップロードしたマシンで設定した同期パスワードを入力し、キーを復号して本機に導入してからダウンロードを続けてください。", "远端数据与当前版本不兼容": "リモートのデータは現在のバージョンと互換性がありません", "远端该路径下还没有快照,本次是首次上传。": "そのリモートパスにはまだスナップショットがありません。今回が初回のアップロードです。", "远端路径:{path}": "リモートパス:{path}", "远端还没有可下载的同步数据": "リモートにダウンロード可能な同期データがありません", "连不上这台网关。确认地址与端口正确、网关已启动,且已开启「局域网访问」;用 https 时还要确认证书有效": "このゲートウェイに接続できません。アドレスとポートが正しいこと、ゲートウェイが起動していること、「LAN アクセス」が有効なことを確認してください。https の場合は証明書が有効かも確認してください。", "连不上这台网关。请确认地址、端口与防火墙设置,网关需已启动;桌面端请在「设置 → 网关 → 网络访问」开启「允许其他设备访问网关」。使用 HTTPS 时还需确认证书有效。": "このゲートウェイに接続できません。アドレス、ポート、ファイアウォールの設定とゲートウェイの起動状態を確認してください。デスクトップ版では「設定 → ゲートウェイ → ネットワークアクセス」で「他の端末からゲートウェイへのアクセスを許可」を有効にしてください。HTTPS を使う場合は証明書の有効性も確認してください。", "连接中超时": "接続タイムアウト", "连接失败:{message}": "接続に失敗しました:{message}", "连续失败到阈值后把这个账号整个打开(默认关)。与失败退避的分工:退避管「单次失败先凉一会儿」,惩罚轻、自动恢复;熔断管「这个账号现在整体不对劲,别再一条条地试」,要连续成功若干次才关。打开期间该账号被跳过,除非全场只剩它 —— 那时仍放行试一次。": "連続失敗がしきい値に達したらアカウント全体を切り離します(既定はオフ)。失敗バックオフとの役割分担:バックオフは「1 回の失敗をいったん冷ます」軽い罰で自動復帰、サーキットブレーカーは「このアカウントは全体としておかしい、1 件ずつ試すのはやめよう」で、連続成功が数回続かないと閉じません。開いている間そのアカウントはスキップされますが、他に使えるものがなければ 1 回だけ試します。", "追加": "追加", "追加网关提示词": "ゲートウェイのシステムプロンプトを追加", "退出失败:{message}": "ログアウトに失敗しました:{message}", "退出登录": "ログアウト", "退出这台服务器的登录,不影响其他服务器": "このサーバーのみログアウトします。他への影響はありません", "选好接管回答的视觉模型后这块设置才会生效。": "回答を引き継ぐ視覚モデルを選ぶとこのブロックが有効になります。", "选好视觉模型后这块设置才会生效。": "視覚モデルを選ぶとこのブロックが有効になります。", "选定提供商": "選択したプロバイダー", "选择一个或多个模型": "1 つ以上のモデルを選択", "选择位置并加密备份": "保存先を選択して暗号化バックアップ", "选择备份文件并恢复": "バックアップファイルを選んで復元", "选择提供商(可多选)": "プロバイダーを選択(複数可)", "选路规则": "選択ルール", "选项与默认值由已启用插件提供;你保存的覆盖值不会被插件更新替换。": "有効なプラグインが項目と既定値を提供します。プラグインの更新で保存済みの設定が上書きされることはありません。", "选项与默认值由插件提供,你保存的修改不会被插件更新覆盖。切换提供商不会丢失未保存的修改。": "設定項目と既定値はプラグインが提供します。保存した変更はプラグイン更新で上書きされません。プロバイダーを切り替えても未保存の編集は保持されます。", "透传": "パススルー", "透传客户端 system": "クライアントの system をパススルー", "透传客户端 system(默认)": "クライアントの system をパススルー(デフォルト)", "通常是网络问题,点右侧重试": "多くはネットワークの問題です。右の再試行を押してください", "通用": "一般", "遇到 Bug、报错或异常行为": "Bug、エラー、異常動作が発生した場合", "配置目录下的 agent2api.db(账号、日志、请求记录、调试报文与设置都在里面)。": "設定ディレクトリ配下の agent2api.db(アカウント、ログ、リクエスト記録、デバッグメッセージ、設定がすべて入っています)。", "采用本规则": "このルールを適用", "重启后生效,不影响当前操作": "再起動で反映されます。作業中の内容には影響しません", "重命名": "名前を変更", "重命名只更新分类显示名,不拆分历史用量,也不重新归类历史请求。": "名前の変更は分類の表示名のみを更新します。過去の使用量を分割したり、リクエストを再分類したりしません。", "重命名客户端分类": "クライアント分類の名前を変更", "重复清理": "繰り返し削除", "重复清理直到不再变化(仅正则删除)": "変化がなくなるまで繰り返す(正規表現の削除のみ)", "重新读取会替换当前未保存的草稿。": "再読み込みすると、現在の未保存の下書きが置き換えられます。", "重新读取设置": "設定を再読み込み", "重编码质量": "再エンコード品質", "重置会清空管理员账号与密码,面板将回到「未注册」状态。": "リセットすると管理者アカウントとパスワードが消去され、パネルは「未登録」状態に戻ります。", "重置管理员": "管理者のリセット", "重试设置已刷新": "リトライ設定を更新しました", "重试间隔": "リトライ間隔", "铸造守卫每隔多久看一次库存(毫秒)。只影响发现缺货的反应速度 —— 库存够用时轮询不会铸造任何令牌。默认 2500 毫秒,可填 1000–30000。": "発行ガードが在庫を何ミリ秒ごとに確認するか。品切れの検知速度にだけ影響します —— 在庫が足りているときはポーリングしても何も発行しません。既定 2500 ミリ秒、1000–30000 を指定可。", "长边像素上限": "長辺の上限(ピクセル)", "问题反馈": "問題のフィードバック", "阿里云 OSS": "Alibaba Cloud OSS", "限流中账号": "レート制限中のアカウント", "随包内嵌的快照(发版时的那份)": "アプリ同梱のスナップショット(リリース時のもの)", "隐藏 {name}": "{name} を非表示", "隐藏分组 {name}": "グループ {name} を非表示", "隐藏用户名": "ユーザー名を隠す", "隐藏账号名(显示成星号)": "アカウント名を隠す(アスタリスク表示)", "隐藏这一组": "このグループを非表示", "非流式响应超时": "非ストリーミング応答タイムアウト", "面板登录": "パネルログイン", "面板端口": "パネルポート", "面板管理员账号": "パネル管理者アカウント", "韩语": "韓国語", "项目来源": "プロジェクトの出典", "预览不发送模型请求,也不修改历史记录。": "プレビューはモデルを呼び出さず、過去の記録も変更しません。", "预览中…": "プレビュー中…", "预览匹配": "一致結果をプレビュー", "预设": "プリセット", "首选不可用时再依次尝试备选。": "第一候補が使えないときは、バックアップを順に試します。", "首选不可用时再依次尝试;留空则停止并说明原因。": "第一候補が使えないときに順に試します。空にすると停止して理由を説明します。", "验证方式": "認証方式", "验证码令牌池": "CAPTCHA トークンプール", "验证码令牌池设置已刷新": "CAPTCHA トークンプール設定を再読み込みしました", "验证码库存的参考目标,默认 3 个,可填 1–10。只影响库存状态展示,不会因为低于目标自动生成令牌或弹出验证码。": "在庫表示の目安です。既定は 3、範囲は 1~10 です。表示のみに影響し、目標未満でもトークンを自動生成したり認証画面を開いたりしません。", "高级设置": "詳細設定", "默认 10000 条,按日志级别分配保留容量,超出后清理最旧的记录;同时受保留天数限制。": "既定は 10000 件です。ログレベルごとに容量を配分し、超過分は古い記録から削除します。保存日数の制限も適用されます。", "默认 1000000 条(100 万),超出后清理最旧的请求记录及其原始正文,不影响按天聚合报表;同时受保留天数限制。": "既定は 1000000 件(100 万件)です。超過分は古いリクエスト記録と元の本文から削除し、日次集計レポートには影響しません。保存日数の制限も適用されます。", "默认 5 分钟。间隔内的变化合并为最新快照,到期后上传;手动上传不受限制。失败后会延长等待并自动重试。": "既定は 5 分です。待機中の変更は最新のスナップショットにまとめ、間隔が経過してからアップロードします。手動アップロードは制限されません。失敗時は待機時間を延ばして自動再試行します。", "默认仅本机可访问(127.0.0.1)。开启后监听所有 IPv4 网卡(0.0.0.0),访问范围由网络与防火墙决定,不限于局域网,也不会自动开放到公网。开启前必须注册面板管理员;管理接口需要管理员会话或网关 Key,API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。「同时开放网页管理面板」默认关闭,开启后可从其他设备的浏览器登录管理;关闭它不影响 API 转发和本机桌面管理。修改任一开关都需要重启应用。": "既定では本機のみからアクセスできます(127.0.0.1)。有効にするとすべての IPv4 インターフェース(0.0.0.0)で待ち受け、アクセス範囲はネットワークとファイアウォールで決まります。LAN 限定ではなく、インターネットへの自動公開もしません。事前にパネル管理者の登録が必要です。管理 API には管理者セッションまたはゲートウェイキー、API 呼び出しには有効なゲートウェイキーが必要で、なければデフォルトキーを自動作成します。Web 管理パネルは既定で無効です。有効にすると他の端末のブラウザーからログインして管理できます。無効にしても API 転送と本機での管理には影響しません。どちらのスイッチも変更にはアプリの再起動が必要です。", "默认值通常够用,出问题时才需要调": "既定値でたいてい足ります。問題が出たときだけ調整してください", "默认关闭。开启后下一次 Codex 请求立即生效,不用重启;只对 Codex 来源的 /v1/responses 请求补阶段标记,其它客户端与 /v1/chat/completions 不受影响。": "デフォルトはオフ。有効にすると次回の Codex リクエストから再起動なしで反映されます。フェーズマーカーは Codex 由来の /v1/responses リクエストにのみ補われ、その他のクライアントと /v1/chat/completions は影響を受けません。", "默认关闭。改动立即生效,不用重启;关闭期间的跨源请求会被预检拦下。": "デフォルトはオフ。変更は即時有効で再起動は不要です。オフの間のクロスオリジンリクエストはプリフライトで拒否されます。", "默认关闭窗口不会退出程序,而是把窗口缩到系统托盘,转发继续在后台运行(OpenAI 客户端不受影响);要彻底退出程序,请在托盘图标上右键选「退出」。关掉这个开关后,点关闭按钮即退出程序、转发随之中断。「开机自动启动」开启后,登录系统时会自动启动本程序(通常直接驻留托盘),不需要手动打开。": "デフォルトでは、ウィンドウを閉じてもプログラムは終了せず、ウィンドウがシステムトレイに縮小され、転送はバックグラウンドで継続します(OpenAI クライアントは影響を受けません)。プログラムを完全に終了するには、トレイアイコンを右クリックして「終了」を選んでください。このスイッチをオフにすると、閉じるボタンを押した時点でプログラムが終了し、転送も中断されます。「自動起動」をオンにすると、システムへのログイン時に本プログラムが自動起動します(通常はそのままトレイに常駐します)。手動で開く必要はありません。", "默认应用全部提供商(包含之后新增的插件与自定义提供商)。指定范围后,未选中的提供商不做指纹脱敏;清空选择自动回到全部提供商。": "デフォルトでは今後追加するプラグインとカスタムプロバイダーを含むすべてに適用します。範囲を指定すると未選択のプロバイダーは処理しません。選択を空にするとすべてに戻ります。", "默认开启。只改 role 字段本身,消息内容与顺序都不动;本项只改发给上游的副本,客户端看到的响应内容不变。": "デフォルトは有効。role フィールドだけを書き換え、メッセージの内容と順序はそのまま。送信する副本だけが対象で、クライアントが見る応答は変わりません。", "默认开启。只改发给上游的副本,客户端看到的响应与原图都不变;请求日志里保存的是客户端发来的原图,不是压缩后的版本。只作用在对话链路,生图 / 图片编辑不经过这里。改完对下一个请求立即生效,不用重启。": "既定では有効です。変更されるのは上流へ送るコピーだけで、クライアントが見る応答と原画像は変わりません。リクエストログに保存されるのはクライアントが送った原画像で、圧縮後のものではありません。チャット経路のみに作用し、画像生成と画像編集はここを通りません。変更は次のリクエストから有効で、再起動は不要です。", "默认开启。命中明细会记进请求日志的「敏」标签(悬停可看命中了哪几条规则)。本项只改发给上游的副本,客户端看到的响应内容不变。": "デフォルトはオン。ヒットした明細はリクエストログの「敏」タグに記録されます(ホバーするとどのルールにヒットしたか確認できます)。本項目はアップストリームへ送るコピーのみを変更し、クライアントが見るレスポンス内容は変わりません。", "默认开启并应用全部提供商。编辑词表或应用范围后点击「保存设置」,下一次请求立即生效,不用重启。命中明细仍记进请求日志的「敏」标签。": "デフォルトで有効、すべてのプロバイダーに適用します。ルールや適用範囲を編集して「設定を保存」を押すと再起動なしで次のリクエストから有効です。一致情報は引き続きリクエストログのマスキングタグに記録します。", "默认网关只监听 127.0.0.1,只有本机能访问。开启后网关改听所有网卡,同一局域网内的设备可以把 API 地址指向本机 IP 一起使用。出于安全考虑,开启前必须先注册一个面板管理员:管理接口从此要求管理员会话或网关 Key,模型额度不会对局域网裸奔;一把启用的网关 Key 都没有时,转发接口也会拒绝服务,直到创建第一把。改动需要重启应用生效。「同时开放网页管理面板」把管理界面也出给局域网(其他设备的浏览器打开本机 IP 即可管理),默认关闭 —— 桌面端的面板仍只由本程序自己出。": "デフォルトでは、ゲートウェイは 127.0.0.1 のみで待ち受け、本機からのみアクセスできます。オンにするとゲートウェイはすべてのネットワークアダプターで待ち受けるようになり、同じ LAN 内のデバイスは API アドレスを本機の IP に向けて一緒に利用できます。セキュリティ上の理由から、オンにする前にまずパネル管理者を登録する必要があります:管理インターフェースは管理者セッションまたはゲートウェイキーを要求するようになり、モデルのクォータが LAN に無防備に晒されることはありません。有効なゲートウェイキーが 1 つもない場合、最初の 1 つを作成するまで転送インターフェースもサービスを拒否します。変更の反映にはアプリの再起動が必要です。「Web 管理パネルも同時に公開」は管理画面も LAN に公開します(他のデバイスのブラウザーで本機の IP を開けば管理できます)。デフォルトはオフ —— デスクトップ版のパネルは引き続き本プログラム自身のみが提供します。", "({n} 个整组隐藏)": "({n} グループを非表示)", "({n} 行)": "({n} 行)", "({n} 项被覆盖)": "({n} 項目を上書き)", "(全部为默认值)": "(すべてデフォルト値)", "(官方原文)": "(公式原文)", "(已存一份正文,{n} 行;切成「替换 / 追加」后生效)": "(本文を保存済み、{n} 行。「置換 / 追加」に切り替えると有効になります)", "(已改)": "(変更済み)", "(已注册过会跳过这一步,直接生效)。": "を登録する必要があります(登録済みの場合はこの手順をスキップし、そのまま有効になります)。", "(当前生效的就是这一份,{n} 行)": "(現在有効なのはこの本文、{n} 行)", "(文件:{path})": "(ファイル:{path})", "(未生效)": "(未適用)", ",{items}": "、{items}", ",{time}": "、{time}", ",以及代理池 / 订阅里可能存在的代理凭据。请使用只有你能访问的私有存储;账号密钥由同步密码单独加密,泄露存储本身不等于泄露账号。": "、およびプロキシプール / サブスクリプションに存在しうるプロキシ認証情報が含まれます。自分だけがアクセスできるプライベートなストレージを使用してください。アカウントキーは同期パスワードで別途暗号化されているため、ストレージが漏れてもアカウントが漏れるわけではありません。", ",包括恢复后需要重新登录管理面板。": "まるごと置き換えられます。復元後は管理パネルへの再ログインが必要です。", ",可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "、そのままログインに使用できます。厳重に保管し、第三者に渡したり公共の場所へアップロードしたりしないでください。", ",文件里后续的改动在清空这里之前不再生效": "。ファイル側の以降の変更はここをクリアするまで有効になりません", ",替换前的数据已备份为 {name}": "、置き換え前のデータは {name} としてバックアップ済みです", ",自定义提供商新增 {added} 个、更新 {updated} 个": "、カスタムプロバイダーは新規 {added} 件、更新 {updated} 件", ";开关关闭时词表不执行": ";無効時はルールを実行しません", ";网页管理面板已一并开放(浏览器打开同一地址)": ";Web 管理パネルも併せて公開されています(ブラウザーで同じアドレスを開いてください)" }); +window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { " 到 {file}": " {file} へ", " 正文已改:{edited}(其余段用官方原文)。": " 本文変更あり:{edited}(残りの段は公式原文を使用)。", "(无 id)": "(id なし)", "/v1 拒绝无 Key 请求": "/v1 はキーなしのリクエストを拒否", "0 B": "0 B", "100%(默认)": "100%(デフォルト)", "<本机IP>": "<本機の IP>", "ALTCHA(本地验证)": "ALTCHA(ローカル認証)", "Access Key ID": "Access Key ID", "Agent2API 手机端": "Agent2API モバイル", "Android 应用(APK)": "Android アプリ(APK)", "Cline 上游按请求头判定「调用方是不是 Cline 自家产品」:X-CLIENT-TYPE: cline-sdk 是硬门槛(缺了它免费池模型一律 403),版本号与平台标识让请求更贴近官方客户端的形态。这里列出的是网关默认会发的头:改某一行的值 = 覆盖默认值(也可以新增默认清单之外的自定义头);把值清空保存 = 这个头不发送;在界面删掉被改过的行 = 回落默认值。改完点「保存」,下一个 Cline 请求立即生效。不懂某一行的含义就不要动它 —— 伪装头的价值在「与官方客户端逐字一致」。": "Cline のアップストリームはリクエストヘッダーで「呼び出し元が Cline 自社製品かどうか」を判定します:X-CLIENT-TYPE: cline-sdk は必須条件で(これが欠けると無料プールのモデルは一律 403)、バージョン番号とプラットフォーム識別子がリクエストを公式クライアントの形に近づけます。ここに並ぶのはゲートウェイがデフォルトで送信するヘッダーです:いずれかの行の値を変更 = デフォルト値を上書き(デフォルト一覧にないカスタムヘッダーの追加も可);値を空にして保存 = そのヘッダーを送信しない;画面で変更した行を削除 = デフォルト値にフォールバック。変更後は「保存」をクリックすると、次の Cline リクエストから即時有効です。各行の意味が分からない場合は触らないでください —— 偽装ヘッダーの価値は「公式クライアントとの逐語一致」にあります。", "Cline 伪装头": "Cline 偽装ヘッダー", "Cline 伪装头已刷新": "Cline 偽装ヘッダーを更新しました", "Docker 容器": "Docker コンテナ", "Endpoint": "Endpoint", "Endpoint 填 https://<账户ID>.r2.cloudflarestorage.com,Region 固定填 auto。": "Endpoint に https://<アカウントID>.r2.cloudflarestorage.com を、Region には auto を指定します。", "Endpoint 填 https://cos.ap-guangzhou.myqcloud.com,Region 填 ap-guangzhou(按实际地域改)。": "Endpoint に https://cos.ap-guangzhou.myqcloud.com を、Region には ap-guangzhou を指定します(実際のリージョンに合わせて変更)。", "Endpoint 填 https://obs.cn-north-4.myhuaweicloud.com,Region 填 cn-north-4(按实际地域改)。": "Endpoint に https://obs.cn-north-4.myhuaweicloud.com を、Region には cn-north-4 を指定します(実際のリージョンに合わせて変更)。", "Endpoint 填 https://oss-cn-hangzhou.aliyuncs.com,Region 填 cn-hangzhou(按实际地域改)。": "Endpoint に https://oss-cn-hangzhou.aliyuncs.com を、Region には cn-hangzhou を指定します(実際のリージョンに合わせて変更)。", "Endpoint 形如 http://192.168.1.10:9000(自建通常用 http);Region 一般填 us-east-1。": "Endpoint は http://192.168.1.10:9000 のような形式(自前ホストでは通常 http)で、Region は通常 us-east-1 です。", "Endpoint 留空即走 AWS 官方地址;Region 必须与桶所在区域一致。": "Endpoint を空欄にすると AWS 公式アドレスを使用します。Region はバケットのリージョンと一致させてください。", "KB": "KB", "Linux 安装包(deb)": "Linux パッケージ(deb)", "Logo 不能超过 2 MiB": "ロゴは 2 MiB 以下にしてください", "Logo 仅支持 PNG、JPG、WebP 图片": "ロゴには PNG、JPG、WebP 画像のみ使用できます", "Nextcloud": "Nextcloud", "OpenAI 新版 API 用 developer 角色取代 system 承载指令,新版 OpenAI SDK 与部分客户端发的对话里会出现 role 为 developer 的消息;不少 OpenAI 兼容上游(尤其是自定义提供商的透传路径)不认识这个角色,收到就报 400。开启本项后,网关在每次转发前把 developer 角色的消息改写为 system —— 两类角色在 OpenAI 语义上等价(OpenAI 自己的迁移指南也是这么映射的),改写不影响对话内容与语义;对本来就只认 system 的各家内置上游同样无害。默认开启;关掉后 developer 消息会原样发往上游,不认识它的上游会报「角色不存在」一类的错误。": "新版の OpenAI API は system に代わって developer ロールで指示を伝えるため、最新の OpenAI SDK や一部クライアントが送る会話には role が developer のメッセージが含まれます。多くの OpenAI 互換アップストリーム(特にカスタムプロバイダーの透過パス)はこのロールを認識せず、受け取ると 400 を返します。有効にすると、ゲートウェイは毎回の転送前に developer ロールのメッセージを system に書き換えます —— 両ロールは OpenAI のセマンティクス上で等価(OpenAI 自身の移行ガイドも同じマッピング)なので、書き換えは会話の内容と意味に影響しません。もともと system しか受け付けない内蔵アップストリームにとっても無害です。デフォルトは有効。無効にすると developer メッセージはそのまま送られ、このロールを認識しないアップストリームは「ロールが存在しない」系のエラーを返します。", "QQ 群 · Telegram": "QQ グループ · Telegram", "S3 兼容存储": "S3 互換ストレージ", "Safari 没有安装按钮:点底部的「分享」,选「添加到主屏幕」,再点「添加」。": "Safari にはインストールボタンがありません。下部の「共有」→「ホーム画面に追加」→「追加」の順にタップしてください。", "Secret Access Key": "Secret Access Key", "Token 读数量级": "Token の数値表記", "UTF-8 文本文件路径,留空用内置默认提示词(通用编码助手提示词,不含任何会被上游拦截的模板句)。只在「替换 / 追加」模式下生效,透传模式不读它。": "UTF-8 テキストファイルのパス。空欄なら内蔵のデフォルトシステムプロンプトを使用(汎用コーディングアシスタント用プロンプトで、アップストリームにブロックされるテンプレート文は含みません)。「置換 / 追加」モードでのみ有効で、パススルーモードでは読み込まれません。", "WebView / 浏览器内核": "WebView / ブラウザエンジン", "Windows 安装包(NSIS)": "Windows インストーラー(NSIS)", "Windows 服务": "Windows サービス", "ZCode 套餐池(Start Plan)通道每条请求都要消耗一个当次铸造的人机验证令牌(一次性,2 分钟过期),库存低于该值时界面自动补铸到它。默认 3 个。调大能吸收突发并发,但用不掉的令牌 2 分钟就过期作废,烧的是上游风控配额。可填 1–10。": "ZCode プランプール(Start Plan)経路の各リクエストは、その場で生成された CAPTCHA トークン(1 回限り、2 分で失効)を 1 個消費します。在庫がこの値を下回ると、UI がこの値まで自動補充します。既定は 3。大きくすると突発的な同時実行を吸収できますが、使い切れなかったトークンは 2 分で失効し、上流のリスク管理クォータを消耗します。1〜10 を指定できます。", "ZCode「套餐池(Start Plan)」通道的每条推理请求都要附一个当次铸造的阿里云无痕验证令牌(一次性、约 2 分钟过期):令牌由界面里的铸造守卫静默铸好、推给网关入池,转发时逐条取用。这里的三个值管的是补货节奏:①「库存目标」= 库存低于它守卫才补铸、补到它为止,默认 3 个;②「轮询间隔」= 守卫多久看一次库存,默认 2500 毫秒,只影响反应速度(库存够用时不会多铸);③「单轮铸造上限」= 发现缺货时一轮最多铸几个,默认 1 个(连铸之间固定隔 500 毫秒)。请求密集、请求日志里连续出现「需要人机验证令牌」的 503 时,把目标与单轮上限适当调大、轮询调快,能让池子跟得上消耗 —— 代价是上游(阿里云)对铸造频率有风控,铸得越多越快越容易触发限流,且用不掉的令牌 2 分钟即过期作废、等于白烧配额,所以建议小步调。保存后对下一轮补货立即生效,不用重启。": "ZCode「プランプール(Start Plan)」経路の各推論リクエストには、その場で生成された Aliyun インビジブル CAPTCHA トークン(1 回限り、約 2 分で失効)を添える必要があります:トークンは UI 内のミントガードが静かに生成してゲートウェイのプールへ入れ、転送時にリクエストごとに取り出します。ここの 3 つの値は補充のリズムを管理します:①「在庫目標」= 在庫がこの値を下回ったときだけこの値まで補充(既定 3);②「ポーリング間隔」= ガードが在庫を確認する間隔、既定 2500 ミリ秒(反応速度にのみ影響。在庫が十分なら余計に生成しません);③「1 ラウンドの生成上限」= 在庫切れを検出した 1 ラウンドで生成する最大数、既定 1(連続生成の間は固定 500 ミリ秒)。リクエストが密で、リクエストログに「CAPTCHA トークンが必要」の 503 が続く場合は、目標と 1 ラウンド上限を適度に上げ、ポーリングを速めるとプールが消費に追いつきます —— ただし上流(Aliyun)は生成頻度にリスク管理があり、多く速く生成するほど制限に触れやすく、使い切れなかったトークンは 2 分で失効してクォータの無駄になるため、小刻みな調整を推奨します。保存すると次の補充ラウンドから即時反映、再起動不要。", "beta 版": "beta 版", "iOS 应用": "iOS アプリ", "models.dev 元数据": "models.dev メタデータ", "models.dev 元数据已更新({count} 条)": "models.dev メタデータを更新しました({count} 件)", "models.dev 是一个开源的模型资料库(社区维护),这里用它补齐「上游没告诉我们」的模型能力:上下文窗口、最大输出、工具调用、图片、视频、是否支持思考,以及这个模型认识哪些思考档位。优先级是:你在「模型能力」里手工改的值 > 上游清单自己声明的值 > models.dev 的值 —— 它只填上游没声明的空位,从不推翻上游已声明的。网关随包内嵌了一份快照,所以离线、首次启动、访问不通时也有数据;开启时会按「模型目录刷新」任务的间隔联网更新(同一轮里一并刷新,也可在这里立即刷新)。关闭只停联网刷新,已经拿到的数据继续用。": "models.dev はコミュニティが維持するオープンソースのモデルデータベースです。上流が教えてくれなかった情報(コンテキスト長、最大出力、ツール呼び出し、画像、動画、推論の可否、およびそのモデルが実際に受け付ける推論レベル)をここで補います。優先順位は「モデル能力」で手動変更した値 > 上流カタログの宣言値 > models.dev の値 —— 上流が宣言した値を覆すことはなく、空欄だけを埋めます。スナップショットを同梱しているため、オフライン・初回起動・通信不可でもデータがあります。有効時は「モデルカタログ更新」タスクの間隔でオンライン更新します(同じ回でまとめて、またはここで即時)。オフにするとオンライン更新だけが止まり、取得済みのデータは引き続き使われます。", "models.dev 模型元数据": "models.dev モデルメタデータ", "systemd 服务": "systemd サービス", "{count} 条": "{count} 件", "{count} 条 · 来自{origin}{at} · {mode}": "{count} 件 · 出典: {origin}{at} · {mode}", "{count} 条规则,按列表顺序执行": "{count} 件のルールを一覧順に実行", "{d} 天 {h} 小时": "{d} 日 {h} 時間", "{h} 小时 {m} 分钟": "{h} 時間 {m} 分", "{label} 提示词文件": "{label} のシステムプロンプトファイル", "{label} 的提示词模式": "{label} のシステムプロンプトモード", "{label}({message})": "{label}({message})", "{lines} 行、{chars} 字符(按当前草稿计)": "{lines} 行、{chars} 文字(現在の下書きで算出)", "{minutes} 分钟": "{minutes} 分", "{models} 同时出现在两块设置里,会按「辅助识图」处理。想改的话,把其中一个从这边的模型名单里去掉。": "{models} が両方のブロックに入っています。この場合は「補助読み取り」で処理されます。変更するには、どちらかのモデル一覧から外してください。", "{mode}生效:上游收到的 system 来自{source}{lines}。": "{mode}が有効:アップストリームが受け取る system の出所は{source}{lines}。", "{m} 分钟": "{m} 分", "{noun}不能为空(可填 {min}–{max})": "{noun}は空にできません({min}–{max} を入力できます)", "{noun}必须在 {min}–{max} 之间(当前填的是 {text})": "{noun}は {min}–{max} の範囲で入力してください(現在の入力値:{text})", "{noun}必须是整数": "{noun}は整数でなければなりません", "{n} B": "{n} B", "{n} GB": "{n} GB", "{n} KB": "{n} KB", "{n} MB": "{n} MB", "{n} 个头将随每个 Cline 请求发送": "{n} 個のヘッダーが各 Cline リクエストとともに送信されます", "{n} 台可选 · 点此切换": "{n} 台 · タップして切り替え", "{n} 项 · {shown} 显示": "{n} 項目 · {shown} 表示", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "メニュー {total} 件 · 表示 {shown} · 非表示 {hidden} · グループ {groups} 件", "{way}的适用模型": "{way}の対象モデル", "⚠️ 密钥警告": "⚠️ キーの警告", "⚠️ 已关闭「{label}」的机器人校验": "⚠️「{label}」のボット対策を無効にしました", "⚠️ 机器人校验已关闭": "⚠️ ロボット検証をオフにしました", "✅ Cline 伪装头已保存": "✅ Cline 偽装ヘッダーを保存しました", "✅ models.dev 模型元数据已开启": "✅ models.dev モデルメタデータを有効にしました", "✅ 云同步设置已保存": "✅ クラウド同期の設定を保存しました", "✅ 会话图片压缩已开启": "✅ 画像圧縮を有効にしました", "✅ 出站指纹脱敏已开启": "✅ フィンガープリントのマスキングをオンにしました", "✅ 密码已修改,其他设备的登录已失效": "✅ パスワードを変更しました。他の端末のログインは無効になりました", "✅ 导入完成:{summary}": "✅ インポート完了:{summary}", "✅ 已上传到云端({size})": "✅ クラウドにアップロードしました({size})", "✅ 已为「{label}」装上网关自带提示词": "✅ 「{label}」にゲートウェイ内蔵のシステムプロンプトを適用しました", "✅ 已从云端恢复{note}": "✅ クラウドから復元しました{note}", "✅ 已保存:{label}": "✅ 保存しました:{label}", "✅ 已保存:{label} {value}": "✅ 保存しました:{label} {value}", "✅ 已保存:指定错误码直接换号": "✅ 保存しました:指定エラーコードで直接アカウント切替", "✅ 已保留 {days} 天": "✅ {days} 日間保持しました", "✅ 已保留 {days} 天,超出部分已清理": "✅ {days} 日間保持し、超過分を削除しました", "✅ 已加密备份 {n} 张表({size}),包含恢复密钥:{file}": "✅ {n} テーブルを暗号化バックアップしました({size})。復元鍵を含む:{file}", "✅ 已备份 {n} 张表({size})到 {file}": "✅ {n} テーブル({size})を {file} へバックアップしました", "✅ 已导入账号密钥,请继续下载": "✅ アカウントキーをインポートしました。ダウンロードを続けてください", "✅ 已导出 {count} 个账号{note}{file}": "✅ {count} 件のアカウントをエクスポートしました{note}{file}", "✅ 已开启「{label}」的机器人校验": "✅「{label}」のボット対策を有効にしました", "✅ 已恢复 {n} 张表{note}": "✅ {n} テーブルを復元しました{note}", "✅ 已改用 k / M / B 缩写": "✅ k / M / B の略記に切り替えました", "✅ 已改用本地量级词(万 / 亿式)": "✅ ローカル量級語(万 / 億式)に切り替えました", "✅ 已自动创建网关 Key「默认」(可在「网关 Key」页查看)": "✅ ゲートウェイキー「デフォルト」を自動作成しました(「ゲートウェイキー」ページで確認できます)", "✅ 已解除内容拦截降级": "✅ コンテンツブロックのフォールバックを解除しました", "✅ 开发者角色兼容已开启": "✅ developer ロール互換を有効にしました", "✅ 指纹脱敏设置已保存": "✅ フィンガープリントのマスキング設定を保存しました", "✅ 数量上限已设为 {count} 条": "✅ 件数上限を {count} 件に設定しました", "✅ 数量上限已设为 {count} 条,超出部分已清理": "✅ 件数上限を {count} 件に設定し、超過分を削除しました", "✅ 机器人校验已开启": "✅ ロボット検証をオンにしました", "✅ 第三方模型回答完自动折叠过程已开启": "✅ サードパーティモデルの回答後の工程の自動折りたたみを有効にしました", "✅ 设置已保存,应用正在重启…": "✅ 設定を保存しました。アプリを再起動しています…", "✅ 调试模式已关闭": "✅ デバッグモードをオフにしました", "✅ 调试模式已开启": "✅ デバッグモードをオンにしました", "✅ 路由设置已保存": "ルーティング設定を保存しました", "✅ 连接成功:{path}": "✅ 接続に成功しました:{path}", "、{n} 个自定义提供商": "、カスタムプロバイダー {n} 件", "。事件日志、请求明细、调试报文与面板登录态保持不变。替换前会自动把当前业务数据备份到配置目录的 backups/ 下。": "。イベントログ・リクエスト明細・デバッグ通信記録・パネルのログイン状態は変更されません。置き換え前に現在の業務データを設定ディレクトリの backups/ に自動でバックアップします。", "「{label}」将从 {previous} 天改为 {days} 天。": "「{label}」を {previous} 日から {days} 日へ変更します。", "「{label}」将从 {previous} 条改为 {count} 条。": "「{label}」を {previous} 件から {count} 件に変更します。", "「{label}」改用内置默认提示词": "「{label}」を内蔵のデフォルトシステムプロンプトに切り替えました", "「{label}」的提示词文件已更新": "「{label}」のシステムプロンプトファイルを更新しました", "「{label}」的提示词正文已更新": "「{label}」のシステムプロンプト本文を更新しました", "「{label}」的模式改为「{mode}」": "「{label}」のモードを「{mode}」に変更しました", "「{label}」的网关自带提示词已改回官方原文": "「{label}」のゲートウェイ内蔵システムプロンプトを公式原文に戻しました", "「{label}」的网关自带提示词正文已更新": "「{label}」のゲートウェイ内蔵システムプロンプトの本文を更新しました", "「模型管理」里每个能力的来源标记(上游 / models.dev / 已覆盖)读的就是这份数据;映射弹窗的思考档位下拉也按这里的数据只列该模型真实认识的档位。": "「モデル管理」の各能力の出典表示(上流 / models.dev / 上書き済み)はこのデータを読んでいます。マッピングダイアログの推論レベル選択も、ここに基づいてそのモデルが実際に受け付けるレベルだけを並べます。", "「用哪份提示词」本来是按上游分别决定的事,所以每家可以有自己的模式、提示词文件与正文:不在这里列出的提供商一律沿用上面那份默认设置,「跟随默认」把这一家取消、回到默认。带「网关自带」那一行的家(目前是 ZCode 两家)默认就列在这里 —— 那一段是网关自己装上去的文本,不来自客户端也不来自提示词文件,默认开启、可以关掉,也可以改它的正文(改过的那一段以你的文本为准);关掉后还能不能通过上游校验,取决于上游当下的口径,行内说明了实测依据。「模式 / 提示词文件 / 正文」管的是客户端自己的 system 怎么处理,与那个开关是两件事。": "「どのシステムプロンプトを使うか」は本来アップストリームごとに決める話なので、各プロバイダーが独自のモード・システムプロンプトファイル・本文を持てます:ここに表示されないプロバイダーはすべて上記のデフォルト設定を引き継ぎ、「デフォルトに従う」でそのプロバイダーの設定を解除してデフォルトに戻します。「ゲートウェイ内蔵」の行があるプロバイダー(現在は ZCode の 2 社)はデフォルトでここに表示されます —— その部分はゲートウェイが自ら組み込むテキストで、クライアントからもシステムプロンプトファイルからも来ません。デフォルトはオンで、オフにもでき、本文も変更できます(変更した部分はあなたのテキストが優先)。オフにした後でアップストリームの検証を通過できるかは、アップストリームの現時点の基準次第です(行内に実測の根拠を記載)。「モード / システムプロンプトファイル / 本文」はクライアント自身の system をどう扱うかの設定で、あのスイッチとは別物です。", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "「設定」は固定項目のため、そのグループはまとめて非表示にできません。他のメニューは個別に非表示にできます", "「请求日志」页的逐条请求记录,默认 99999 天(近似全量保留),可填 1–99999 天。": "「リクエストログ」ページのリクエストごとの記録。既定は 99999 日(ほぼ全量保持)で、1〜99999 日を指定できます。", "「请求日志」页的逐条请求记录,默认 99999 天,可填 1–99999 天;同时受数量上限限制。": "「リクエストログ」ページのリクエストごとの記録。既定は 99999 日で、1–99999 日を指定できます。件数上限も適用されます。", "一个 .a2ab 文件即可跨机器恢复,账号、网关 Key、GitHub 令牌与云同步凭据无需另行复制密钥。插件程序与库外文件不在整库备份范围。": "1 つの .a2ab ファイルで別端末に復元でき、アカウント、ゲートウェイ Key、GitHub トークン、クラウド同期認証情報の鍵を別途コピーする必要はありません。プラグインのプログラムとデータベース外のファイルは対象外です。", "一段内置装配": "内蔵の定型ブロック", "三档数据各自独立计时,超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件;请求日志是网关每次转发到上游的逐条记录;按天聚合供报表页的热力图与按天趋势使用。请求日志与按天聚合默认 99999 天(约 274 年,效果上等于全量保留),事件日志默认 30 天。把某一档改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。三档的可填范围均为 1–99999 天。": "3 種類のデータはそれぞれ独立して計時され、保存日数を超えた部分は削除されます:イベントログはログイン、アカウント切替、429 切替といったシステムイベント;リクエストログはゲートウェイがアップストリームへ転送するたびの記録;日次集計はレポートページのヒートマップと日次トレンドに使われます。リクエストログと日次集計の既定は 99999 日(約 274 年、実質的に全量保持)、イベントログの既定は 30 日です。いずれかを小さくして(例:30 日→7 日)保存すると、超えた履歴データは即座に削除され、元に戻せません。大きくするか変更しない場合は何も削除されません。3 つとも指定できる範囲は 1〜99999 日です。", "三段各自成块,所以分开编辑": "3 つの段はそれぞれ独立したブロックになるため、分けて編集します", "上传": "アップロード", "上传 Logo": "ロゴをアップロード", "上传中…": "アップロード中…", "上传内容含加密后的账号凭证与网关配置": "アップロード内容には暗号化されたアカウント認証情報とゲートウェイ設定が含まれます", "上传到云端": "クラウドへアップロード", "上传失败:{message}": "アップロードに失敗しました:{message}", "上次同步:{time}({action})": "前回の同期:{time}({action})", "上次成功刷新的结果(存在本机数据库里)": "前回の更新に成功した結果(ローカルデータベースに保存)", "上游 CLI 版本": "上流 CLI のバージョン", "上游客户端版本": "上流クライアントのバージョン", "上游按": "アップストリームは", "上游按「结构」校验身份:三段必须各自成块,所以这里分开编辑三段(不能合成一段)。动态段里的运行值写成占位符,发请求时才替换:{cwd} 工作目录、{platform} 平台、{shell} shell、{os_version} 系统版本、{git} 是否 git 仓库、{provider} 提供方标识、{model} 模型名。清空某一段 = 那一段恢复官方原文。第三段发出时前面会自带一个空行(官方形状)。": "アップストリームは「構造」で身元を検証します:3 つの段はそれぞれ独立したブロックとして並ぶ必要があるため、ここでは 3 つの段を別々に編集します(1 段にまとめることはできません)。動的段の実行値はプレースホルダーとして記述し、リクエスト送信時に置換されます:{cwd} 作業ディレクトリ、{platform} プラットフォーム、{shell} シェル、{os_version} OS バージョン、{git} git リポジトリかどうか、{provider} 提供元識別子、{model} モデル名。ある段を空にする = その段は公式原文に戻ります。第 3 段は送信時に先頭へ空行が 1 つ自動的に付きます(公式の形状)。", "上游未配置": "上流が未設定", "上游模型繁忙时会先排队(回一句「建议 N 秒后再来」):网关等一会儿再发同一请求,最多等几次。默认 2 次,可填 0–10;填 0 表示不等待,排队直接返回 503 并说明「不是登录态或额度问题」。": "アップストリームのモデルが混雑していると、まずキューイングされます(「N 秒後に再試行することをおすすめします」と返ってくる形で):ゲートウェイはしばらく待ってから同じリクエストを再送し、最大で数回まで待ちます。デフォルトは 2 回で、0–10 を入力できます。0 を入力すると待たずに、キューイングが直接 503 を返し「ログイン状態やクォータの問題ではない」と説明します。", "上游用「逐字精确匹配」的方式审核请求体(不是语义审核):客户端注入的固定模板句、计费头字段名、以及某些裸错误码出现在报文里就会整单拦截,返回 400。开启本项后,网关在每次转发前改写这些指纹 —— 表头键值整段删除,承载语义的模板句只换一个词(如 official CLI for Claude → official CLI tool for Claude),对话内容与语义都不受影响。规则集是内置的,不需要也无法维护词表。关掉本项后客户端模板会原样发往上游,可能重新出现模板句被误拦的报错。": "アップストリームはリクエスト本文を「逐語完全一致」で審査します(意味的な審査ではありません):クライアントが注入する固定テンプレート文、課金ヘッダーのフィールド名、および一部の裸のエラーコードがメッセージに現れると、リクエスト全体がブロックされ 400 が返ります。本項目をオンにすると、ゲートウェイは転送のたびにこれらのフィンガープリントを書き換えます —— ヘッダーのキーと値は丸ごと削除し、意味を担うテンプレート文は 1 語だけ置き換えます(例:official CLI for Claude → official CLI tool for Claude)。会話の内容と意味は一切影響を受けません。ルールセットは内蔵で、単語リストを保守する必要もできません。本項目をオフにするとクライアントのテンプレートがそのままアップストリームへ送られ、テンプレート文が誤ってブロックされるエラーが再発する可能性があります。", "上游请求四个阶段各自的等待上限(秒,1~3600):①「连接中超时」= 建立 TCP/TLS 连接或代理隧道的最大等待,默认 30 秒;②「等待响应超时」= 请求发出后等上游响应头的最大时间,默认 300 秒 —— 网关请求上游恒带 stream,响应头在 SSE 建立时就到达,与模型思考多久无关;③「流式响应空闲超时」= 流式响应相邻两块数据之间允许的最大空闲,收到新数据即重新计时,默认 300 秒 —— 上游长时间不吐数据即判定连接僵死并断开;④「非流式响应超时」= 读完整份非流式响应体的总预算(一次性计时、不重置),默认 300 秒。四项都是「等待上限」,只要数据还在来,正常的流式回答就一直往下传。保存后对下一个请求立即生效,不用重启。": "アップストリームリクエストの 4 段階それぞれの待機上限(秒、1~3600):①「接続タイムアウト」= TCP/TLS 接続またはプロキシトンネルを確立する最大待機時間、デフォルト 30 秒;②「応答待ちタイムアウト」= リクエスト送出後、アップストリームのレスポンスヘッダーを待つ最大時間、デフォルト 300 秒 —— ゲートウェイはアップストリームへのリクエストに常に stream を付け、レスポンスヘッダーは SSE の確立時点で到着するため、モデルがどれだけ考えるかとは無関係です;③「ストリーミング応答アイドルタイムアウト」= ストリーミング応答の隣接する 2 つのデータ間に許される最大アイドル時間で、新しいデータを受信すると計時がリセットされます、デフォルト 300 秒 —— アップストリームが長時間データを出さなければ接続が死んだと判定して切断します;④「非ストリーミング応答タイムアウト」= 非ストリーミング応答本文全体を読み切る総予算(一度だけ計時、リセットなし)、デフォルト 300 秒。4 項目はいずれも「待機上限」で、データが流れ続けている限り、正常なストリーミング応答はそのまま流れ続けます。保存後は次のリクエストから即時有効で、再起動は不要です。", "上游调试报文": "アップストリームのデバッグペイロード", "上移": "上へ", "上移规则": "ルールを上へ移動", "下次自动重试:{time}": "次の自動再試行:{time}", "下游正文": "ダウンストリーム本文", "下移": "下へ", "下移规则": "ルールを下へ移動", "下载失败:{message}": "ダウンロードに失敗しました:{message}", "不一致": "不一致", "不做会话识别,每条请求都重新按策略选路。": "セッションを識別せず、リクエストごとに戦略に従って選び直します。", "不做图片兼容": "画像互換処理を行わない", "不可用": "利用不可", "与网关同源的面板;完整管理功能在桌面端": "ゲートウェイと同一オリジンのパネルです。詳細な管理はデスクトップ版で行います", "两张开关分别管桌面端(应用内窗口,也包含开启局域网访问后从其他设备访问的那份面板)与网页端(Docker / 服务端自托管的浏览器面板)。默认都开启;桌面端只在本机使用、嫌验证耗时可以关掉,网页端暴露在网络上,建议保持开启。": "2 つのスイッチはデスクトップ側(アプリ内ウィンドウ。LAN アクセス有効時に他端末から開くパネルも含む)と Web 側(Docker / サーバーが配信するブラウザパネル)を個別に制御します。既定はどちらも有効です。ローカル専用で認証の待ち時間が気になる場合はデスクトップ側を切っても構いませんが、ネットワークに露出する Web 側は有効のままを推奨します。", "两次输入的备份密码不一致": "バックアップのパスワードが一致しません", "两次输入的新密码不一致": "新しいパスワードが一致しません", "两次重试之间的等待时间,两项共用,可填 0–300 秒。": "2 回のリトライ間の待機時間。2 項目で共用し、0–300 秒を入力できます。", "两种方式不会互相自动切换。": "2つの方式が自動で切り替わることはありません。", "两组设置分别用于桌面端托管的网页管理面板与网页端(Docker / 服务端)的浏览器面板。是否可被其他设备访问取决于网络访问与防火墙设置,不限于局域网。两端默认都开启人机验证,建议保持开启。": "2 つの設定グループは、デスクトップアプリが配信する Web 管理パネルと、Docker / サーバーが配信するブラウザーパネルにそれぞれ適用されます。他の端末からのアクセスはネットワークアクセスとファイアウォールの設定で決まり、LAN に限定されません。人間であることの確認はどちらも既定で有効です。有効のままにすることを推奨します。", "为了安全,开启前需要先注册一个": "安全のため、オンにする前に", "主进程未返回启动设置,请更新桌面端后重试": "メインプロセスが起動設定を返しませんでした。デスクトップアプリを更新してから再試行してください", "主进程桥不可用": "メインプロセスのブリッジを利用できません", "主题": "テーマ", "事件日志": "イベントログ", "事件日志保留天数": "イベントログの保存日数", "云同步": "クラウド同期", "产品名": "製品名", "产品名不能包含斜杠或版本号,请改用前缀匹配": "製品名にスラッシュやバージョン番号は含められません。前方一致を使用してください。", "人机验证": "人間確認", "人机验证失败": "人間確認に失敗しました", "人机验证已完成": "人間確認が完了しました", "人机验证还在计算,请稍候": "人間確認を計算中です。しばらくお待ちください", "仅在同一会话、同一问题和相同权限范围内复用;追问新细节会重新识读。缓存只存在本机内存。": "同じ会話・質問・権限範囲内でのみ結果を再利用します。新しい詳細を尋ねると再度読み取ります。キャッシュはローカルメモリにのみ保持されます。", "仅在账号、配置、签到或余额等实质内容变化时上传;导出时间或查询时间单独变化不会触发上传。": "アカウント、設定、チェックイン結果、残高などの実質的な内容が変わった場合のみアップロードします。エクスポート時刻や照会時刻だけの変更ではアップロードしません。", "仅处理本次转发副本,不修改客户端选择,也不删除当前或历史图片。": "今回転送するコピーのみを処理します。クライアントの選択は変更せず、現在および過去の画像も削除しません。", "仅影响面板登录与注册,不影响 API Key 调用。保存后生效,已登录会话不会退出。": "パネルのログインと登録にのみ適用され、API キーによる呼び出しには影響しません。保存後すぐに有効になり、既存のセッションはログアウトされません。", "仅本机": "この端末のみ", "仅用现有数据、不联网刷新": "既存データのみ使用、オンライン更新なし", "从云端恢复": "クラウドから復元", "从桌面图标启动,全屏、无地址栏。想卸载:长按图标删除,或清除浏览器站点数据。": "ホーム画面のアイコンから起動します。全画面・アドレスバーなし。削除するにはアイコンを長押しして削除するか、ブラウザのサイトデータを消去してください。", "优先使用当前路由内的视觉模型": "現在のルート内の視覚モデルを優先", "优先在当前路由内找可用的视觉模型,找不到就用 {model} 直接回答,不再回到原模型。": "現在のルート内で使える視覚モデルを優先し、なければ {model} が元のモデルの代わりに直接回答します。", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "グループ・順序・表示設定を既定に戻します。作成したグループは削除されます(メニューは失われません)。", "会话图片压缩设置已刷新": "画像圧縮の設定を再読み込みしました", "位置": "場所", "位置与端口": "場所とポート", "使用 Rust 正则语法,保存时由后端校验;不支持环视和反向引用。": "Rust の正規表現構文を使用し、保存時にバックエンドで検証します。先読み・後読みと後方参照は使用できません。", "使用中文单位(亿 / 万)": "中国語の単位を使う(億 / 万)", "使用本地量级词(万 / 亿式)": "ローカル量級語(万 / 億式)を使用", "使用默认值": "既定値を使用", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "サイドバーのレイアウトモジュールが読み込まれていません(ui/sidebar-layout.js を app.js より前に読み込む必要があります)。", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "サイドバーにメニューが表示されていません。「設定 → 表示 → サイドバーのメニュー」で必要な項目をオンにしてください。", "侧边栏菜单": "サイドバーのメニュー", "保存上游原始报文(请求头、请求体、响应头、响应体)": "アップストリームの生メッセージを保存(リクエストヘッダー、リクエストボディ、レスポンスヘッダー、レスポンスボディ)", "保存单独配置": "モデル別設定を保存", "保存后以这里的文本为准": "保存後はここのテキストが優先されます", "保存后对下一轮补货立即生效,不用重启。守卫跑在应用界面里:轻量模式关窗销毁界面期间无法铸造,走套餐池(Start Plan)通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。": "保存すると次の補充ラウンドから即時反映され、再起動は不要です。ガードはアプリの UI 内で動作します:軽量モードでウィンドウを閉じて UI が破棄されている間はトークンを生成できず、プランプール(Start Plan)経路のリクエストは理由付きで 503 としてリクエストログに記録されます。UI を開き直すと自動的に復旧します。", "保存后应用将重启以生效。": "保存後、有効にするためアプリが再起動します。", "保存后状态读取立即生效。后台不会自动生成令牌;需要人机验证时,在账号的「套餐明细」中主动开始验证。模型请求免验证时无需保持界面打开。": "保存後、状態取得の設定はすぐに反映されます。トークンは自動生成しません。認証が必要な場合はアカウントの「プラン詳細」で開始してください。モデルリクエストが認証不要の場合、画面を開いたままにする必要はありません。", "保存后立即生效,不用重启:策略与粘性作用于**下一次**转发的选路,进行中的请求不受影响。": "保存するとすぐ反映、再起動不要:戦略と粘着は**次の**転送の選択から効き、処理中のリクエストには影響しません。", "保存后立即生效,不用重启;次数用尽仍失败时,错误原样返回给客户端。": "保存後は即時有効で再起動は不要です。回数を使い切ってもなお失敗する場合、エラーはそのままクライアントへ返されます。", "保存后立即生效,不用重启;超时按上游失败处理(计入请求日志的「错误」列,并按「请求重试」的设置决定是否重试)。": "保存後は即時有効で再起動は不要です。タイムアウトはアップストリームの失敗として扱われます(リクエストログの「エラー」列に計上され、「リクエストリトライ」の設定に従ってリトライするかどうかが決まります)。", "保存后立即生效:保留天数和数量上限同时生效,调小任一项会立即清理超出的历史数据,且不可恢复。": "保存後すぐに有効になります。保存日数と件数上限の両方が適用され、いずれかを減らすと超過した履歴データが直ちに削除されます。元に戻すことはできません。", "保存后立即生效:改小保留天数会立刻删除超出的历史数据,且不可恢复。": "保存後は即時有効:保存日数を小さくすると超過した履歴データがすぐに削除され、元に戻せません。", "保存在当前网关,登录页也会公开显示。不会更改安装包、快捷方式、系统托盘图标或软件版本信息。": "現在のゲートウェイに保存され、ログイン画面にも公開表示されます。インストーラー、ショートカット、システムトレイのアイコン、ソフトウェアのバージョン情報は変更しません。", "保存并重启": "保存して再起動", "保存设置": "設定を保存", "保持当前路由范围,不跳到其他路由组。": "現在のルート範囲を保ち、他のルートグループには移りません。", "保活换行丢弃": "keepalive 改行の除去", "保留原图和对话,由视觉模型直接回答本次请求。": "元の画像と会話を保持し、視覚モデルが今回のリクエストに直接回答します。", "保留原图,选择视觉模型": "元の画像を保持し、視覚モデルを選択", "保留图片中的文字、代码、数字、布局与状态。识读失败就停止,不删图后继续回答。": "画像内の文字、コード、数値、配置、状態を保持します。読み取りに失敗した場合は停止し、画像を削除して回答を続けることはありません。", "保留天数已刷新": "保存日数を更新しました", "保留旧版配置兼容,当前不会自动连铸。每次点击「开始验证」只取得一枚令牌,失败或取消后停止。": "旧設定との互換性のために保持します。トークンの自動連続生成は行いません。「認証を開始」を押すたびにトークンを一つ取得し、失敗またはキャンセルで停止します。", "保留草稿并读取最新设置": "下書きを保持して最新設定を読み込む", "修改密码": "パスワード変更", "修改密码需要输入当前密码;修改成功后,其他设备 / 浏览器上的登录会立即失效,当前这条会话保留。": "パスワード変更には現在のパスワードが必要です。成功すると他の端末・ブラウザのログインは即座に無効になり、このセッションだけが残ります。", "值": "値", "值与默认值相同的行不占覆盖(存的是「改过的键」,不是全量配置);值留空保存表示这个头不发送,删除改过的行表示回落默认值。改完立即生效,不用重启。": "デフォルト値と同じ行は上書きとして扱われません(保存されるのは「変更されたキー」であり、全量の設定ではありません)。値を空にして保存するとそのヘッダーは送信されず、変更した行を削除するとデフォルト値にフォールバックします。変更後は即時有効で、再起動は不要です。", "值(留空 = 不发送)": "値(空欄 = 送信しない)", "停止并说明原因": "停止して理由を表示", "像素": "px", "允许其他设备访问前,需要设置面板管理员账号与密码。注册完成后会继续开启流程并重启应用。": "他の端末からのアクセスを許可する前に、パネル管理者のユーザー名とパスワードを設定してください。登録完了後に有効化を続行し、アプリを再起動します。", "允许其他设备访问网关": "他の端末からゲートウェイへのアクセスを許可", "允许局域网内的设备访问网关": "LAN 内のデバイスにゲートウェイへのアクセスを許可", "允许无 Key 裸跑": "キーなし実行を許可", "允许浏览器里的页面跨来源调用网关(/v1/*)": "ブラウザー内のページからクロスオリジンでゲートウェイを呼び出すことを許可(/v1/*)", "允许的域名": "許可するホスト名", "先发送原图,明确拒图后补救": "まず元の画像を送信し、明確に拒否された場合のみ互換処理", "先把图片交给视觉模型读一遍,再让原模型结合读到的内容回答。": "まず視覚モデルに画像を読ませ、読み取った内容を踏まえて元のモデルが回答します。", "全局配置": "グローバル設定", "全部已配置": "すべて設定済み", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 中,加密密钥单独保存在库外。跨机器备份请使用「整库备份 / 恢复」,不要只复制数据库。更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "アカウント、ログ、リクエスト記録、デバッグデータ、設定は agent2api.db に保存され、暗号鍵は別に保存されます。端末間の移行にはデータベースだけをコピーせず、全体バックアップ / 復元を使用してください。保存先を変更するには AGENT2API_PROXY_HOME を設定して再起動します。", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 这一个 SQLite 数据库里。备份时只需拷贝这个文件;更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "すべてのデータ(アカウント、イベントログ、リクエスト記録、デバッグメッセージ、設定)は、設定ディレクトリ配下の agent2api.db という単一の SQLite データベースにまとめて保存されます。バックアップ時はこのファイルをコピーするだけで済みます。保存場所を変更する場合は、環境変数 AGENT2API_PROXY_HOME を設定してからプログラムを再起動してください。", "全部角色": "すべてのロール", "全部角色沿用原有行为,包含思考内容和工具参数;指定角色时只改消息正文,未选角色及思考内容、工具参数保持原样。": "すべてのロールでは、推論内容とツール引数を含む従来の動作を維持します。ロールを指定するとメッセージ本文のみを書き換え、未選択のロール、推論内容、ツール引数は変更しません。", "共享视觉模型已变更,请重新确认并保存,避免把图片交给未经确认的模型。": "共有の視覚モデルが変更されました。未確認のモデルに画像を送信しないよう、再度確認して保存してください。", "共用设置:{providers}": "共有設定:{providers}", "关闭后不再提供网页管理面板,本机桌面程序仍可正常管理;已开启的 API 转发不受影响。": "無効にすると Web 管理パネルの配信を停止します。本機のデスクトップアプリでは引き続き管理でき、API 転送には影響しません。", "关闭后手动上传 / 下载也会被拒绝。": "オフにすると手動のアップロード / ダウンロードも拒否されます。", "关闭后网关只监听 127.0.0.1,其他设备将无法直接连接,网页管理面板也会一并关闭。已配置的网关 Key 与账号不受影响。": "無効にすると、ゲートウェイは 127.0.0.1 のみで待ち受け、他の端末から直接接続できなくなります。Web 管理パネルも無効になります。既存のゲートウェイキーとアカウントには影響しません。", "关闭后网关回到只监听 127.0.0.1,局域网内的设备将无法继续访问;已配置的网关 Key 与账号都不受影响。": "オフにするとゲートウェイは 127.0.0.1 のみの待ち受けに戻り、LAN 内のデバイスはアクセスできなくなります。設定済みのゲートウェイキーとアカウントは影響を受けません。", "关闭后,管理界面不再从局域网提供,只有本机的桌面程序可以管理;已开启的 API 转发不受影响。": "オフにすると、管理画面は LAN に公開されなくなり、本機のデスクトップアプリからのみ管理できます。有効になっている API 転送は影響を受けません。", "关闭局域网访问": "LAN アクセスをオフにする", "关闭并重启": "閉じて再起動", "关闭思考": "推論を無効化", "关闭窗口即退出程序,后台转发随之中断": "ウィンドウを閉じるとプログラムが終了し、バックグラウンドの転送も中断されます", "关闭窗口时最小化到托盘": "ウィンドウを閉じたときはトレイに最小化", "关闭窗口时程序不退出,转发继续在后台运行;退出请用托盘菜单": "ウィンドウを閉じてもプログラムは終了せず、転送はバックグラウンドで継続します。終了するにはトレイのメニューから操作してください", "关闭网络访问": "ネットワークアクセスを無効化", "兼容处理最长等待": "互換処理の最大待ち時間", "兼容处理最长等待(秒)": "互換処理の最大待ち時間(秒)", "内容拦截降级": "コンテンツブロックのフォールバック", "内置识别、自定义规则与来源声明": "内蔵識別、カスタムルール、呼び出し元の申告", "内置软件标识规则": "内蔵ソフトウェア識別ルール", "内置默认": "組み込みのデフォルト", "内置默认提示词": "内蔵のデフォルトシステムプロンプト", "再输入一次新密码": "新しいパスワードをもう一度入力", "凭据类请求头已脱敏。": "認証情報系のリクエストヘッダーはマスキング済みです。", "凭证只保存在这台手机上,按服务器分别存放": "認証情報はこの端末にのみ保存され、サーバーごとに分けて管理されます", "出问题时把这一页截图,或点「复制全部信息」把文本贴进反馈,一般就能定位到大致原因。": "問題が起きたらこのページをスクリーンショットするか、「すべての情報をコピー」でテキストを報告に貼ってください。大抵の原因はそれで絞り込めます。", "分享图标在 Safari 底部工具栏中间": "共有アイコンは Safari 下部ツールバーの中央にあります", "分组名": "グループ名", "分组名,例如「常用」": "グループ名(例:「よく使う」)", "切换视觉模型": "視覚モデルに切り替え", "切换视觉模型 · 视觉模型回答": "モデル切り替え · 視覚モデルが回答", "切换视觉模型配置": "視覚モデル切り替え設定", "切换账号重试次数": "アカウント切替のリトライ回数", "刚刚从 models.dev 拉到的最新数据": "models.dev から取得したばかりの最新データ", "删除 {code}": "{code} を削除", "删除分组": "グループを削除", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "グループ「{name}」を削除しますか?{n} 件のメニューは「{target}」へ移動するので失われません。", "删除匹配内容": "一致した内容を削除", "删除后不再接受这个分类的来源声明,历史记录保留原来的名称和用量。": "削除後はこの分類の申告を受け付けません。過去の記録には元の名前と使用量が残ります。", "删除后,新请求不再使用这条规则;历史记录保持不变。": "削除後は新しいリクエストにこのルールを使用しません。過去の記録は変わりません。", "删除客户端分类": "クライアント分類を削除", "删除状态码 {code}": "ステータスコード {code} を削除", "删除空分组「{name}」?": "空のグループ「{name}」を削除しますか?", "删除识别规则": "識別ルールを削除", "删除这个分组(组内菜单移到第一组)": "このグループを削除(メニューは最初のグループへ移動)", "刷新": "更新", "刷新失败:{message}": "更新に失敗しました: {message}", "前台运行": "フォアグラウンド実行", "前缀": "前方一致", "剥离上游审核黑名单指纹(改写请求体里的模板句与表头)": "アップストリーム審査のブラックリストフィンガープリントを除去(リクエスト本文のテンプレート文とヘッダーを書き換え)", "功能建议": "機能提案", "加入备选": "バックアップに追加", "加密备份必填,旧 SQL 可留空": "暗号化バックアップでは必須、旧 SQL では空欄可", "包含": "部分一致", "包含日志与调试报文": "ログとデバッグペイロードを含める", "包含:{items}": "含まれるもの:{items}", "匹配内容": "一致パターン", "匹配内容不能为空,且最多 {max} 个字符": "一致パターンは必須です。{max} 文字以内で入力してください", "匹配内容不能为空,最长 256 个字符": "一致条件は必須です。256文字以内で入力してください", "匹配原文含零宽空格,词表预览用 \\u{200b} 标出;编辑时保留该字符。": "パターンにゼロ幅スペースが含まれています。一覧では \\u{200b} と表示します。編集時はこの文字を保持してください。", "匹配方式": "一致方式", "区域(Region)": "リージョン(Region)", "华为云 OBS": "Huawei Cloud OBS", "单独指定视觉模型": "視覚モデルを個別に指定", "单轮铸造上限": "1 回の発行上限", "占用大小": "使用サイズ", "历史未记录识别依据": "過去の識別根拠は未記録です", "原来的「全局方式 + 模型单独配置」已按相同意思自动填成下面的模型名单,可以照用也可以重新调整;改动一处之后就会按新形式存下来。": "以前の「全体方式 + モデル個別設定」を同じ意味のまま下のモデル一覧に反映しました。そのまま使っても調整しても構いません。どこか 1 か所でも変更すると新しい形式で保存されます。", "原模型不能直接看图": "元のモデルは画像を直接認識できません", "原模型根据识读内容回答": "元のモデルが読み取り内容に基づいて回答", "去反馈": "フィードバックする", "去申请": "申請する", "反馈与需求": "フィードバックと要望", "发现缺货时一轮最多铸几个(连铸之间固定隔 500 毫秒)。默认 1 个:SDK 同一实例连铸容易互相干扰。调大补货更快,但单轮连铸越多越容易触发上游风控。可填 1–5。": "品切れ検知時に 1 回で最大いくつ発行するか(連続発行の間は固定で 500 ミリ秒あける)。既定は 1:同じ SDK インスタンスでの連続発行は干渉しやすいためです。大きくすると補充は速くなりますが、1 回に多く発行するほど上流のリスク制御に引っかかりやすくなります。1–5 を指定可。", "取消勾选后只备份业务数据(账号、配置与余额记录),文件显著变小;事件日志、请求统计与调试报文不会进备份文件。": "チェックを外すと業務データ(アカウント・設定・残高記録)だけをバックアップし、ファイルはかなり小さくなります。イベントログ・リクエスト統計・デバッグペイロードはバックアップに入りません。", "变更网页管理面板": "Web 管理パネルの変更", "只列单独配置过的家,其余沿用上面的全局配置": "個別に設定したものだけを表示し、それ以外は上記のグローバル設定を引き継ぎます", "只对「排队制」的上游生效:模型繁忙时上游不报错,只回一句「建议 N 秒后再来」,网关按建议时长等一会儿再发同一请求,等满次数仍排不上才把「排队中」作为错误返回(HTTP 503,文案会说明这不是登录态或额度问题)。等待发生在首个字节之前,吃的是「等待响应超时」那份预算 —— 两项设置一起决定一次请求最多卡多久;排队不会标记账号限额、也不会换账号(换谁都一样在排队)。保存后对下一个请求立即生效,不用重启。": "「キューイング方式」のアップストリームにのみ有効です:モデルが混雑しているとき、アップストリームはエラーを返さず「N 秒後に再試行することをおすすめします」とだけ返します。ゲートウェイは推奨された時間だけ待ってから同じリクエストを再送し、規定回数まで待っても順番が回ってこない場合にのみ「キューイング中」をエラーとして返します(HTTP 503。メッセージにはこれがログイン状態やクォータの問題ではないことが明記されます)。待機は最初のバイトより前に発生し、「応答待ちタイムアウト」の予算を消費します —— 2 つの設定が合わさって 1 つのリクエストが最大どれだけ停滞しうるかを決めます。キューイングはアカウントをレート制限としてマークせず、アカウントの切り替えも行いません(誰に切り替えても同じようにキューイングされます)。保存後は次のリクエストから即時有効で、再起動は不要です。", "只影响读图那一步的思考深度;两块设置统一用这个选择。": "画像を読む手順の思考の深さだけに影響します。2 つのブロックで共通の設定です。", "只有已安装、启用并声明了设置项的提供商会出现在这里。可前往插件页检查安装与启用状态。": "インストール済みで有効なプラグインが設定項目を提供している場合のみ表示されます。プラグインページでインストールと有効化の状態を確認できます。", "只沿用模型与思考等级,不借用视觉服务的内部 Key;仍受当前请求权限限制。": "モデルと推論レベルのみを利用し、視覚サービスの内部 Key は使用しません。現在のリクエストの権限制限が適用されます。", "只清掉这个浏览器存的 Key,不影响网关": "このブラウザに保存された Key のみ削除します。ゲートウェイには影響しません", "只覆盖指定提供商的指定模型,其余跟随全局。": "指定したプロバイダーの指定モデルのみを上書きし、それ以外は全体設定に従います。", "可跨提供商多选;只处理这些模型看不了的图片。": "プロバイダーをまたいで複数選択できます。これらのモデルが読めない画像だけを処理します。", "可跨提供商多选;这些模型的请求会整体改交视觉模型。": "プロバイダーをまたいで複数選択できます。これらのモデルへのリクエストは丸ごと視覚モデルに渡します。", "可选。部分服务(如中国科技云数据胶囊)会按 User-Agent 校验凭据绑定的客户端类型,此时填写包含该类型名的字符串(例如 rclone/v1.67.0)。留空则维持默认。": "任意。一部のサービス(例:中国科技云データカプセル)は User-Agent で認証情報に紐づいたクライアント種別を検証します。その場合は種別名を含む文字列(例:rclone/v1.67.0)を入力してください。空欄なら既定のままです。", "合计只累加当前筛选后可见的账号,筛选、搜索一改数字就跟着变。": "合計は現在の絞り込みで表示中のアカウントのみを合算します。絞り込みや検索を変えると数字も変わります。", "合计按整组统计(默认):不受筛选、搜索影响,被筛掉与已禁用的账号也计入。": "合計はグループ全体で計算します(既定)。絞り込みや検索の影響を受けず、除外されたアカウントや無効なアカウントも含まれます。", "同一会话、同一问题、相同权限范围内复用;追问新细节会重新识读。": "同じセッション・同じ質問・同じ権限範囲内で再利用します。新しい詳細を尋ねると読み直します。", "同一会话在 5 分钟内尽量跟住同一个账号;停了 5 分钟再发就算新会话。多数场景用它 —— 多轮对话少换号,也不至于把账号焊死。": "同じセッションは 5 分以内ならできるだけ同じアカウントを使い続け、5 分空くと新しいセッション扱い。多くの場面におすすめ —— 連続対話でアカウントが頻繁に切り替わらず、特定アカウントに固定もされません。", "同一会话在 6 小时内跟住同一个账号;适合一坐几个小时的长会话,上游的上下文缓存能吃到更多。": "同じセッションは最大 6 時間同じアカウントを使い続けます。何時間も続く長丁場に最適で、アップストリームのコンテキストキャッシュをより多く活かせます。", "同一提供商的同一模型不能重复配置": "同じプロバイダーの同じモデルを重複設定できません", "同一账号重试次数": "同一アカウントのリトライ回数", "同时开放网页管理面板": "Web 管理パネルも同時に公開", "同步密码": "同期パスワード", "名单最多 {max} 个状态码": "リストに入れられるステータスコードは最大 {max} 個", "后端没有返回版本信息": "バックエンドがバージョン情報を返しませんでした", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "固定項目「設定」を含むため、グループごと非表示にはできません(他のメニューは個別に非表示にできます)", "启动与托盘": "起動とトレイ", "启动时间": "起動時刻", "启用云同步": "クラウド同期を有効にする", "启用图片兼容": "画像互換処理を有効化", "启用规则": "ルールを有効化", "启用规则:{name}": "ルールを有効化:{name}", "命中依据:{header} · {pattern}": "一致した根拠:{header} · {pattern}", "命中这些上游状态码的失败不在同一账号重发,直接换下一个账号继续试(换号占用「切换账号重试次数」,换满仍失败才把错误原样返回给客户端)。输入 100–599 的状态码后回车添加,点 × 或退格删除;默认 402(积分不足)。清空全部表示任何错误都照常重试。": "これらのアップストリームステータスコードに該当する失敗は、同一アカウントでの再送を行わず、次のアカウントに切り替えて試行を続けます(アカウント切替は「アカウント切替のリトライ回数」を消費し、使い切ってもなお失敗する場合にのみエラーがそのままクライアントへ返されます)。100–599 のステータスコードを入力して Enter で追加、× または Backspace で削除します。デフォルトは 402(ポイント残高不足)。すべてクリアすると、あらゆるエラーで通常どおりリトライします。", "品牌 Logo": "ブランドロゴ", "品牌设置": "ブランド設定", "品牌设置已保存": "ブランド設定を保存しました", "品牌预览": "ブランドのプレビュー", "哪些模型用这种方式": "この方式を使うモデル", "固定": "固定", "图标经 Magpie 引入,未单独记录 Lobe Icons 的图标版本;以上版本仅用于核对许可。": "アイコンは Magpie 経由で導入されています。Lobe Icons のアイコン自体のリビジョンは個別に記録されておらず、上記はライセンス確認のみに使用したリビジョンです。", "图片与相关对话将交给配置的视觉模型处理,可能增加等待时间和费用。请确认这些服务可以接收你的图片。": "画像と関連する会話を設定済みの視覚モデルに送信します。待ち時間や費用が増える場合があります。これらのサービスへの画像送信を許可するか確認してください。", "图片兼容": "画像互換処理", "图片兼容当前是关闭的:下面两块设置照样能改、会被保留,但不会对任何请求生效。": "画像互換は現在オフです。下の 2 つのブロックは編集でき内容も残りますが、どのリクエストにも適用されません。", "图片兼容设置已保存,仅对新请求生效。": "画像互換設定を保存しました。新しいリクエストにのみ適用されます。", "图片兼容设置读取失败": "画像互換設定を読み込めませんでした", "图片压缩": "画像圧縮", "图片最长边超过这个值就等比缩小(只缩不放)。默认 2048,可填 256–8192 —— 多数视觉模型在这个量级已经够用,调小更省流量、但细节会丢。": "画像の長辺がこの値を超えると縦横比を保って縮小します(拡大はしません)。既定 2048、256〜8192 で指定できます。多くのビジョンモデルはこの大きさで十分で、小さくすると通信量は減りますが細部が失われます。", "图片能力未知时": "画像対応が不明な場合", "图片过大、格式错误或下载失败不会被当作模型不支持图片。": "画像が大きすぎる、形式が不正、ダウンロード失敗といった場合は「モデルが画像非対応」とは扱いません。", "在同一个账号上原地重发几次(不含首发;整条请求共用一份,用完后换来的账号只发一次就继续换)。可填 0–10,0 表示失败立即换号。": "同じアカウントでそのまま何回再送するか(初回は含みません。1 つのリクエスト全体で 1 つの回数を共用し、使い切った後に切り替えたアカウントでは 1 回送信するごとに次の切替へ進みます)。0–10 を入力でき、0 は失敗時に即座にアカウントを切り替えることを意味します。", "在这里直接编辑提示词正文:保存后以这份文本为准(优先于上面的提示词文件),清空则回到文件 / 内置默认。改一个字不必再去编辑器里开文件。": "ここでシステムプロンプトの本文を直接編集できます:保存後はこのテキストが優先されます(上記のシステムプロンプトファイルより優先)。クリアするとファイル / 内蔵デフォルトに戻ります。1 文字の変更のためにエディターでファイルを開く必要はもうありません。", "在途请求": "処理中のリクエスト", "地址格式不对。填「IP 或域名:端口」,可带 http:// 或 https://,例如 192.168.1.23:3065": "アドレスの形式が正しくありません。「IP またはドメイン:ポート」で入力してください(http:// または https:// も可)。例: 192.168.1.23:3065", "坚果云": "Jianguoyun(Nutstore)", "坚果云需使用「第三方应用密码」(账户信息 → 安全选项里生成),地址必须是 /dav/ 下的目录。": "Jianguoyun では「サードパーティアプリのパスワード」(アカウント情報 → セキュリティで生成)が必要で、URL は /dav/ 配下のディレクトリを指定してください。", "填「IP 或域名:端口」。协议可写 http:// 或 https://,不写默认 http;http 不写端口默认 3065,https 默认 443。地址里的 /m、/v1 会自动去掉。": "「IP またはドメイン:ポート」を入力してください。プロトコルは http:// または https:// が使えます(省略時は http)。ポートを省略すると http は 3065、https は 443 になります。アドレス内の /m、/v1 は自動的に除去されます。", "处理方式": "処理方式", "处理示意": "処理の流れ", "备份中…": "バックアップ中…", "备份包含账号凭证、网关 Key、GitHub 令牌与云同步凭据的恢复密钥,整个文件受备份密码保护。请分开保管文件与密码;忘记密码无法恢复。": "アカウント認証情報、ゲートウェイ Key、GitHub トークン、クラウド同期認証情報の復元鍵を含み、ファイル全体がバックアップのパスワードで保護されます。ファイルとパスワードは別々に保管してください。パスワードを忘れると復元できません。", "备份密码": "バックアップのパスワード", "备份密码不能超过 1024 字节": "バックアップのパスワードは 1024 バイト以内にしてください", "备份密码至少需要 12 位,建议使用较长且不重复的密码": "12 文字以上の長く使い回していないパスワードを推奨します", "备份整库": "データベースをバックアップ", "备份文件内含全部账号凭证、网关 API Key 与面板管理员凭据,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "バックアップファイルには全アカウントの認証情報・ゲートウェイ API キー・管理パネルの管理者認証情報が入っており、そのままログインに使えます。厳重に保管し、外部に漏らしたり公開場所へアップロードしたりしないでください。", "备选模型": "バックアップモデル", "复制全部信息": "すべての情報をコピー", "复制给客户端": "クライアント用にコピー", "复用相同图片的识读结果": "同じ画像の読み取り結果を再利用", "外观": "外観", "外观 · 接入 · 关于": "外観 · 接続 · 情報", "多个客户端标识冲突": "複数のクライアント識別情報が競合", "天": "日", "天数": "日数", "失败 {n} 个": "失敗 {n} 件", "失败 {n} 个:{detail}": "失敗 {n} 件:{detail}", "失败后最多再换几个账号试(填 N = 最多换 N 个,首发那个不算)。换到同一家名下另一个账号、或换到另一家,都各算一次;换满仍失败就返回错误。可填 0–10,0 表示失败立即报错。": "失敗後に最大であと何個のアカウントに切り替えて試すか(N を入力 = 最大 N 個まで切替。初回のアカウントは含みません)。同じプロバイダー配下の別のアカウントへの切替も、別のプロバイダーへの切替もそれぞれ 1 回と数えます。使い切ってもなお失敗する場合はエラーを返します。0–10 を入力でき、0 は失敗時に即座にエラーを返すことを意味します。", "存储桶(Bucket)": "バケット(Bucket)", "存储概况已刷新": "ストレージ概要を更新しました", "安全": "セキュリティ", "安装到主屏幕": "ホーム画面に追加", "安装到桌面": "アプリとしてインストール", "安装包形态": "インストーラの種類", "完全相同": "完全一致", "官方原文只有一句:声明自己是 ZCode。": "公式原文は 1 文だけです:自分が ZCode であることを宣言します。", "实际处理:": "実際の処理:", "客户端 system 原样出站。": "クライアントの system をそのまま送信します。", "客户端 system 原样出站(只靠指纹脱敏改写模板句)。": "クライアントの system をそのまま送信します(テンプレート文の書き換えはフィンガープリントのマスキングのみ)。", "客户端专用请求头": "クライアント専用ヘッダー", "客户端名称": "クライアント名", "客户端名称不能为空,最长 80 个字符": "クライアント名は必須です。80文字以内で入力してください", "客户端名称重复或与内置名称冲突": "クライアント名が重複しているか、内蔵名と競合しています", "客户端标识无效或重复": "クライアント識別情報が無効または重複", "客户端识别": "クライアント識別", "客户端识别入口尚未就绪,请刷新页面后重试": "クライアント識別の準備ができていません。ページを更新して再試行してください。", "客户端识别设置读取失败": "クライアント識別設定を読み込めませんでした", "客户端(Claude Code / Codex 等 CLI)会在 system 提示词里注入几十句固定模板,上游按逐字匹配审核,命中就整单拦截(HTTP 400)。指纹脱敏能改写实测命中过的那几句,但换一个客户端版本就可能冒出新的。这里可以把 system 整段换成网关自己那份:①「透传」= 不动客户端 system(默认,行为与之前完全一致);②「替换」= 删掉客户端所有 system / developer 消息,换成网关的提示词(客户端项目规范随之消失);③「追加」= 在开头连续 system 块之后插入一条网关提示词,既有消息逐字不动(客户端规范与网关提示词并用)。那份提示词有两个来源:提示词文件(留空用内置默认),或直接在界面上编辑正文 —— 编辑过就以那份正文为准(优先于文件),清空则回到文件 / 内置默认。另外,透传 / 追加模式下撞了内容拦截(多半是指纹误报)时,网关会自动换一段最小中性提示词重试一次,并把「降级期」开到次日 00:00 —— 期间所有请求直接带中性提示词出门,不再先撞一次 400;这里能看见并提前解除它。上面几项是**默认值**:想给某个提供商单独配,用下面的「按提供商」加一行(带「网关自带」的家默认就列在那里)—— 不同的上游对这些内容的接受程度不一样。": "クライアント(Claude Code / Codex などの CLI)は system プロンプトに数十文の固定テンプレートを注入し、アップストリームは逐語一致で審査するため、ヒットするとリクエスト全体がブロックされます(HTTP 400)。フィンガープリントのマスキングは実測でヒットした数文を書き換えられますが、クライアントのバージョンが変わると新しい文が現れる可能性があります。ここでは system 全体をゲートウェイ自身のものに差し替えられます:①「パススルー」= クライアントの system に手を加えない(デフォルト。挙動は従来と完全に同じ);②「置換」= クライアントのすべての system / developer メッセージを削除し、ゲートウェイのシステムプロンプトに差し替える(クライアントのプロジェクト規約も同時に消えます);③「追加」= 先頭に連続する system ブロックの後ろにゲートウェイのシステムプロンプトを 1 件挿入し、既存のメッセージは逐語のまま(クライアントの規約とゲートウェイのシステムプロンプトを併用)。そのシステムプロンプトには 2 つのソースがあります:システムプロンプトファイル(空欄なら内蔵デフォルトを使用)、または画面上で本文を直接編集 —— 編集した場合はその本文が優先され(ファイルより優先)、クリアするとファイル / 内蔵デフォルトに戻ります。また、パススルー / 追加モードでコンテンツブロックに当たった場合(多くはフィンガープリントの誤検知)、ゲートウェイは自動的に最小限の中立システムプロンプトに切り替えて 1 回リトライし、「フォールバック期間」を翌日 00:00 まで設定します —— 期間中はすべてのリクエストが中立プロンプトを直接携えて送信され、400 に当たることはなくなります。ここでその状態を確認し、前倒しで解除できます。上記の項目は**デフォルト値**です:特定のプロバイダーに個別設定したい場合は、下の「プロバイダー別設定」で行を追加してください(「ゲートウェイ内蔵」があるプロバイダーはデフォルトでそこに表示されます)—— アップストリームによってこれらの内容の受け入れ具合は異なります。", "家之间仍按优先级,只有同一家内部轮流用各账号 —— 想优先用某几家、又不愿把某一家的某个账号焊死时用它。": "プロバイダー間は優先度どおり、同じプロバイダー内だけでアカウントを順送りします —— いくつかのプロバイダーを優先しつつ、特定アカウントに固定したくないときに。", "家内轮询": "プロバイダー内ローテーション", "容器内更新": "コンテナ内更新", "密码、文件或密钥校验失败时不会替换主库;替换阶段失败会自动尝试还原,实际结果以上方错误说明为准。": "パスワード、ファイル、鍵の検証に失敗した場合、メインデータベースは変更されません。置換に失敗した場合は自動で元に戻す処理を試みます。実際の結果は上のエラー表示を確認してください。", "密码加密 · 包含恢复密钥": "パスワード暗号化 · 復元鍵を含む", "密码至少 8 位": "パスワードは 8 文字以上", "对话里内嵌的 base64 大图(截图、照片)既撑大请求体,也拉高按像素折算的上游计费。开启后,网关在转发前把超过阈值的图等比缩到长边上限、重新存成 JPEG —— 只改发给上游的副本,请求日志里保存的仍是你发来的原图。同一张原图在多轮对话里重复出现时复用上一次的压缩结果,不会每轮重算。http 链接图片、GIF 动图、SVG 一律不动;压完反而更大的图也保留原图。只作用在对话场景,生图与图片编辑不受影响。默认开启;不想要的话把开关关掉即可。": "会話に埋め込まれた大きな base64 画像(スクリーンショットや写真)はリクエストボディを膨らませ、ピクセル数に応じて課金される上流のコストも押し上げます。有効にすると、転送前にしきい値を超える画像を長辺上限まで縮小し JPEG で再エンコードします。変更されるのは上流へ送るコピーだけで、リクエストログには送信元の原画像が保存されます。同じ原画像が複数ターンで再送される場合は、前回の圧縮結果を再利用し毎回計算し直しません。http リンクの画像、アニメーション GIF、SVG は一切変更しません。再エンコードで逆に大きくなる画像も原画像のままです。チャットのみに作用し、画像生成と画像編集には影響しません。既定では有効です。不要ならスイッチを切ってください。", "导入前会把本机的 account.key 改名备份(account.key.bak-时间戳),不会直接删除。": "インポート前にローカルの account.key を account.key.bak-<タイムスタンプ> に改名して退避します(削除はしません)。", "导入完成:{summary}": "インポート完了:{summary}", "导入密钥失败:{message}": "キーのインポートに失敗しました:{message}", "导入密钥并继续": "キーをインポートして続行", "导入账号": "アカウントをインポート", "导出中…": "エクスポート中…", "导出会把全部账号与自定义提供商定义写入一个 JSON 文件,可以拷到另一台机器上导入后继续使用。导入采用合并策略:同提供商下按业务身份(UID / userId / apiKey 等)去重 —— 已存在的账号只更新凭证,保留本机原有的优先级顺序;新账号追加到转发顺序末尾,不会抢占当前正在使用的账号;自定义提供商定义按 id 合并,本机缺失时自动补建。": "エクスポートはすべてのアカウントとカスタムプロバイダー定義を 1 つの JSON ファイルに書き出し、別のマシンにコピーしてインポートすればそのまま使い続けられます。インポートはマージ方式を採用します:同じプロバイダー配下では業務上の身元(UID / userId / apiKey など)で重複を排除 —— 既存のアカウントは認証情報のみ更新し、本機の優先順はそのまま維持します。新しいアカウントは転送順の末尾に追加され、現在使用中のアカウントを奪いません。カスタムプロバイダー定義は id 単位でマージし、本機にない場合は自動的に作成します。", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义": "エクスポートファイルには accessToken / refreshToken / apiKey などの認証情報とカスタムプロバイダー定義が含まれます", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "エクスポートファイルには accessToken / refreshToken / apiKey などの認証情報とカスタムプロバイダー定義が含まれ、そのままログインに使用できます。厳重に保管し、第三者に渡したり公共の場所へアップロードしたりしないでください。", "导出账号": "アカウントをエクスポート", "将数据库和恢复凭证所需的密钥一起保存为密码加密的 .a2ab 备份,可在 Windows、macOS 或 Linux 上恢复,无需手工复制密钥。恢复时整体替换账号、配置、日志与桌面设置,并使用目标机器的密钥重新加密凭证,不覆盖本机已有钥匙。可取消包含日志以减小文件;旧 .sql 备份仍可导入。恢复前自动保留安全备份,完成后需要重新登录管理面板。": "データベースと復元鍵をパスワードで暗号化した .a2ab にまとめ、Windows、macOS、Linux で鍵を手動コピーせず復元できます。アカウント、設定、ログ、デスクトップ設定を全体置換し、移行先の鍵で認証情報を再暗号化します。既存の鍵は上書きしません。ログを除外して容量を減らせます。旧 .sql も読み込めます。事前に安全バックアップを作成し、完了後は再ログインが必要です。", "尚未注册管理员。开启「网关 → 网络访问 → 允许其他设备访问网关」时会引导注册,也可以从登录页注册。": "管理者はまだ登録されていません。「ゲートウェイ → ネットワークアクセス → 他の端末からゲートウェイへのアクセスを許可」を有効にすると登録に進みます。ログインページからも登録できます。", "尚未注册管理员:管理接口不需要登录。开启「允许局域网访问」时会引导注册,也可以从登录页注册。": "管理者が未登録です:管理 API にログインは不要です。「LAN アクセスを許可」を有効にすると登録へ案内されます。ログインページから登録することもできます。", "尚未配置视觉分析模型": "視覚分析モデルが未設定です", "局域网开放后,管理接口要求登录。请设置管理员账号与密码,注册完成会直接继续开启流程。": "LAN に公開すると、管理インターフェースはログインを要求します。管理者アカウントとパスワードを設定してください。登録が完了すると、そのまま有効化の処理を続行します。", "局域网访问": "LAN アクセス", "工具用法与环境说明那一大段。": "ツールの使い方と環境説明の大きなかたまりです。", "已为「{label}」单独配置提示词": "「{label}」にシステムプロンプトを個別設定しました", "已作为独立应用运行": "独立アプリとして実行中", "已使用本机密钥重新加密 {n} 项凭证,原有密钥未被覆盖。": "{n} 件の認証情報をこの端末の鍵で再暗号化しました。既存の鍵は上書きしていません。", "已保存 {count} / {limit} 条报文(超出后丢弃最旧的)。": "{count} / {limit} 件のメッセージを保存済み(超過分は古いものから破棄)。", "已保存的值不符合当前插件规则,请修改或恢复默认值。": "保存済みの値が現在のプラグインの規則に合いません。変更するか既定値に戻してください。", "已保存,留空则不修改": "保存済み。空欄なら変更しません", "已保存,留空沿用": "保存済み(空欄ならそのまま使用)", "已关闭": "オフ", "已关闭 models.dev 联网刷新": "models.dev のオンライン更新をオフにしました", "已关闭。{note}": "オフです。{note}", "已关闭「{label}」的网关自带提示词:能否通过上游校验取决于上游当前口径": "「{label}」のゲートウェイ内蔵システムプロンプトをオフにしました:アップストリームの検証を通過できるかはアップストリームの現在の基準次第です", "已关闭会话图片压缩": "画像圧縮を無効にしました", "已关闭出站指纹脱敏": "フィンガープリントのマスキングをオフにしました", "已关闭开发者角色兼容": "developer ロール互換を無効にしました", "已关闭第三方模型回答完自动折叠过程": "サードパーティモデルの回答後の工程の自動折りたたみを無効にしました", "已关闭网关跨域访问": "ゲートウェイの CORS アクセスをオフにしました", "已关闭:不额外补阶段标记,由客户端决定过程展示。": "無効:フェーズマーカーを追加せず、作業の表示はクライアントに任せます。", "已删除分组「{name}」": "グループ「{name}」を削除しました", "已取消「{label}」的单独配置": "「{label}」の個別設定を解除しました", "已取消安装": "インストールをキャンセルしました", "已取消导入": "インポートをキャンセルしました", "已取消导出": "エクスポートをキャンセルしました", "已取消恢复": "復元をキャンセルしました", "已启用 {count} 条规则,应用于{scope}。": "{count} 件のルールが有効です。適用先:{scope}。", "已启用登录": "ログイン有効", "已复制全部版本信息": "バージョン情報をすべてコピーしました", "已应用": "適用済み", "已开启": "オン", "已开启:为正常完成的 Codex 回答补阶段标记。": "有効:正常に完了した Codex の回答にフェーズマーカーを補います。", "已开启:其他设备把 API 地址指向 {url}{panel}。": "オン:他のデバイスが API アドレスを {url} に向ければ一緒に使えます{panel}。", "已开启:监听 0.0.0.0,允许其他设备访问。": "有効:0.0.0.0 で待ち受け、他の端末からのアクセスを許可しています。", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "既定のグループに戻しました:概要 / 転送経路 / 診断 / システム", "已截断": "切り詰め済み", "已指定出口": "出口を指定", "已接管": "引き継ぎ済み", "已改回内置默认提示词": "内蔵のデフォルトシステムプロンプトに戻しました", "已新建分组「{name}」,点组头的 + 把菜单移进来": "グループ「{name}」を作成しました。見出しの + でメニューを移動できます", "已清掉「{label}」界面编辑的正文": "「{label}」の画面で編集した本文をクリアしました", "已清掉界面编辑的提示词(回落文件 / 内置默认)": "画面で編集したシステムプロンプトをクリアしました(ファイル / 内蔵デフォルトにフォールバック)", "已清除本机保存的 API Key": "このブラウザに保存された API Key を削除しました", "已生效": "有効", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。": "最小限の中立的なプロンプトへ自動切替しました(アップストリームのコンテンツブロックに当たったもので、多くは system 指紋の誤検知です)。{until} に自動解除されます。", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "最小限の中立システムプロンプトに自動的に切り替えました(アップストリームのコンテンツブロックに当たりました。多くは system のフィンガープリントの誤検知です)。{until} に自動解除されます。期間中は本モード自身のシステムプロンプトは送信されません。システムプロンプトを修正すればすぐに解除できます。", "已自定义": "カスタマイズ済み", "已运行": "稼働時間", "已退出登录": "ログアウトしました", "已隐藏": "非表示", "巴西葡萄牙语": "ブラジルポルトガル語", "希望接入新的提供商或模型": "新しいプロバイダーやモデルへの対応を希望", "库中 schema": "DB 内 schema", "库主文件的大小(不含运行期间的 WAL 临时文件,退出时已自动并回)。": "データベース本体ファイルのサイズ(実行中の WAL 一時ファイルは含みません。終了時に自動でマージし直されます)。", "库存目标": "在庫目標", "应用提供商": "適用するプロバイダー", "应用版本:{version}": "アプリのバージョン:{version}", "应用状态": "アプリの状態", "应用窗口": "アプリウィンドウ", "建立上游 TCP/TLS 连接或代理隧道的最大等待时间(秒),默认 30 秒,范围 1~3600。": "アップストリームへの TCP/TLS 接続またはプロキシトンネルを確立する最大待機時間(秒)。デフォルト 30 秒、範囲 1~3600。", "开发构建": "開発ビルド", "开发者角色兼容": "developer ロール互換", "开发者角色兼容设置已刷新": "developer ロール互換の設定を更新しました", "开启前需要注册面板管理员,已注册会跳过此步骤。管理接口需要管理员会话或网关 Key;API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。": "有効化する前にパネル管理者の登録が必要です。登録済みの場合はこの手順をスキップします。管理 API には管理者セッションまたはゲートウェイキーが必要です。API 呼び出しには有効なゲートウェイキーが必要で、存在しない場合はデフォルトキーが自動作成されます。", "开启后新发生的请求才会被记录(已经过去的请求补不回来)。报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "オン以降に発生したリクエストだけが記録されます(過去の分は遡って取得できません)。ペイロードはローカルデータベースに保存され、直近 500 件のみ保持(超過分は古いものから破棄)。件数は左の「データ → データ保存」の「デバッグペイロード」に表示されます。", "开启后新发生的请求才会被记录(已经过去的请求补不回来),请求日志的「预览对话」也随之开始保存原始正文。上游报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "オンにした後に発生したリクエストのみ記録されます(過去のリクエストは遡って記録できません)。リクエストログの「会話プレビュー」もこれを機に原文の保存を開始します。アップストリームのメッセージはローカルデータベースにまとめて保存され、直近 500 件のみ保持します(超過分は古いものから破棄)。件数は左側の「データ → データストレージ」の「デバッグメッセージ」で確認できます。", "开启后监听所有 IPv4 网卡(0.0.0.0),并不局限于局域网,也不会自动开放到公网;实际访问范围取决于网络与防火墙设置。修改后需要重启应用。": "有効にすると、すべての IPv4 インターフェース(0.0.0.0)で待ち受けます。LAN 限定ではありませんが、自動でインターネットに公開されるわけではありません。実際のアクセス範囲はネットワークとファイアウォールの設定で決まります。変更にはアプリの再起動が必要です。", "开启后网关将监听所有 IPv4 网卡(0.0.0.0),访问范围不再限于本机,也不局限于局域网。是否能从公网访问取决于网络与防火墙设置。": "ゲートウェイはすべての IPv4 インターフェース(0.0.0.0)で待ち受けます。アクセス範囲は本機や LAN に限定されません。インターネットからアクセスできるかどうかは、ネットワークとファイアウォールの設定で決まります。", "开启后网关将监听所有网卡,同一局域网内的设备即可把 API 地址指向本机 IP 一起使用;管理接口从此要求管理员会话或网关 Key,转发接口在没有一把启用的 Key 时也会拒绝服务(届时会自动创建一把名为「默认」的 Key)。": "オンにするとゲートウェイはすべてのネットワークアダプターで待ち受け、同じ LAN 内のデバイスから API アドレスを本機の IP に向けて一緒に利用できるようになります。管理インターフェースは管理者セッションまたはゲートウェイキーを要求するようになり、転送インターフェースは有効なキーが 1 つもない場合もサービスを拒否します(その際は「デフォルト」という名前のキーが自動作成されます)。", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 套餐池(Start Plan)」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "有効にすると、ウィンドウを閉じるのは隠すだけでなく UI ウィンドウ全体を破棄します:常駐する 6 つの WebView2 プロセス(約 200MB のメモリ)が終了し、ゲートウェイ転送・定時チェックイン・残高照会はバックグラウンドプロセスで影響なく継続します;UI が必要になったらトレイアイコンをクリックして開き直します(WebView のコールドスタートは約 1 秒)。注意:UI が破棄されている間、ZCode「プランプール(Start Plan)」経路の CAPTCHA トークンは UI が生成するため補充できず、その経路のリクエストは理由付きで 503 としてリクエストログに記録されます。UI を開き直すと自動的に復旧します。このスイッチは「閉じるときにトレイへ最小化」が有効なときにのみ意味があり、最小化したウィンドウには影響しません。", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 活动套餐」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "オンにすると、ウィンドウを閉じるのは単なる非表示ではなく、UI ウィンドウ全体を破棄します:基盤の WebView2 の常駐プロセス 6 つ(約 200MB のメモリ)も終了し、ゲートウェイの転送、定期チェックイン、残高照会はバックグラウンドプロセスで引き続き動作し、影響を受けません。UI が必要なときはトレイアイコンをクリックして開き直します(WebView のコールドスタートは約 1 秒)。注意:UI 破棄中は「ZCode アクティブプラン」チャネルの認証コードトークンが UI によって生成されるため補給できません —— このチャネルを通るリクエストは 503 となって理由とともにリクエストログに記録され、UI を開き直すと自動的に復旧します。このスイッチは「ウィンドウを閉じたときはトレイに最小化」がオンのときのみ意味を持ち、ウィンドウの最小化は影響を受けません。", "开启后,关闭窗口会销毁界面并释放 WebView 进程,网关转发、定时签到、余额查询仍在后台继续。ZCode 模型请求免验证时不受影响;上游要求人机验证时,需要重新打开界面,在账号的「套餐明细」中主动完成验证。此开关只在「关闭窗口时最小化到托盘」开启时有意义。": "有効にすると、ウィンドウを閉じる際に画面を破棄し WebView プロセスを解放します。転送、定時チェックイン、残高照会は継続します。認証不要の ZCode リクエストは影響を受けません。認証が必要な場合は画面を開き直して「プラン詳細」で認証してください。トレイへの最小化が有効な場合のみ適用されます。", "开启后,新发生的请求会保存上游调试报文与下游正文,历史请求无法补录。上游调试报文只保留最近 500 条;两侧条数可在「数据 → 数据存储」查看。关闭开关不会删除已保存的报文,可在请求日志中选择「仅清空报文原文」一起清理。": "有効にすると、新しいリクエストのアップストリームのデバッグペイロードとダウンストリーム本文を保存します。過去のリクエストは補完できません。アップストリームのデバッグペイロードは最新 500 件のみ保持します。両側の件数は「データ → データ保存」で確認できます。無効にしても保存済みのペイロードは削除されません。リクエストログの「原文のみクリア」で両側をまとめて削除できます。", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。": "オンにすると、ログインページはブラウザーのバックグラウンドで自動的に検証を完了します(人間には気づかれません)が、スクリプトは試行のたびにまず問題を 1 問解く必要があります —— ブルートフォース攻撃と大量登録のコストが大幅に上がります。影響するのはパネルのログイン / 登録のみで、API クライアントの API Key とは無関係です。", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。桌面端与网页端各自独立:桌面端主要服务本机与局域网,网页端(Docker / 服务端)直接暴露在网络上的登录页风险更高,建议保持开启。": "有効にすると、ログインページはバックグラウンドで認証を完了します(人間には意識されません)が、スクリプトによる試行は毎回 1 問解く必要があり、総当たりやアカウントの先取りのコストが大幅に上がります。影響するのはパネルのログイン / 登録のみで、API クライアントの API Key とは無関係です。デスクトップと Web は独立しています。デスクトップは主に本機と LAN 向け、Web(Docker / サーバー)はネットワークに露出するため有効のままを推奨します。", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "オンにすると、ゲートウェイは転送ごとに**アップストリームへ送ったリクエスト**(ヘッダー + ボディ)と**アップストリームからの応答**(ステータスコード + ヘッダー + ボディ)をローカルに丸ごと保存し、リクエストログページの「詳細」で確認できます。リクエストヘッダーの Authorization・Cookie・API キーなどの認証フィールドはすべて [redacted] に置き換わり、平文では保存されません。リクエスト / レスポンスのボディはそのまま保存されます(あなたの対話内容が含まれる場合があります)。ペイロードは直近 500 件のみ保持し、超過分は古いものから破棄します。トラブルシュート用の一時スイッチなので、不要なときはオフを推奨します。", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看;请求日志详情的「预览对话」也依赖本开关 —— 它保存的是客户端发来的请求体与网关下发的响应体(两侧各截断到 128 KiB),不开这个开关时预览对话没有数据可看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。上游报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "オンにすると、ゲートウェイは転送のたびに**アップストリームへ送るリクエスト**(リクエストヘッダー + リクエストボディ)と**アップストリームが返すレスポンス**(ステータスコード + レスポンスヘッダー + レスポンスボディ)を完全にローカルへ保存し、リクエストログページの「詳細」で確認できるようにします。リクエスト詳細の「会話プレビュー」もこのスイッチに依存します —— 保存するのはクライアントから届いたリクエストボディとゲートウェイが返したレスポンスボディ(いずれも 128 KiB で切り詰め)で、スイッチがオフのときはプレビューできるデータがありません。リクエストヘッダー内の Authorization、Cookie、API Key などの認証情報フィールドは一律 [redacted] に置き換えられ、平文でディスクに残りません。リクエストボディとレスポンスボディはそのまま保存されます(会話内容が含まれる場合があります)。アップストリームのメッセージは直近 500 件のみ保持し、超過分は古いものから破棄します。これはトラブルシューティング用の一時的なスイッチですので、不要なときはオフにすることをおすすめします。", "开启后,能连接到网关的设备可通过浏览器访问网页管理面板,需使用管理员账号登录。访问范围与网关相同,并不局限于局域网。": "有効にすると、ゲートウェイに接続できる端末からブラウザーで Web 管理パネルを開き、管理者アカウントでログインできます。アクセス範囲はゲートウェイと同じで、LAN に限定されません。", "开启后,调用方可以用专用请求头声明已登记的客户端名称。这不是身份认证,只用于日志和统计,不会获得额外权限。": "有効にすると、呼び出し元は専用ヘッダーで登録済みクライアント名を申告できます。これは認証ではなく、ログと統計にのみ使用され、追加の権限は付与されません。", "开启局域网访问": "LAN アクセスをオンにする", "开启来源声明": "呼び出し元の申告を有効にする", "开启网络访问": "ネットワークアクセスを有効化", "开放后,局域网内其他设备的浏览器打开本机 IP 即可进入管理面板(需管理员账号登录)。": "公開後は、LAN 内の他のデバイスのブラウザーで本機の IP を開くだけで管理パネルに入れます(管理者アカウントでのログインが必要)。", "开机自动启动": "自動起動", "开源许可": "オープンソースライセンス", "开(最多 {n} 轮)": "オン(最大 {n} ラウンド)", "归属客户端": "分類先クライアント", "当前三段都是官方原文。": "現在、3 つの段はすべて公式原文です。", "当前不可用": "現在利用できません", "当前后端不支持词表编辑与提供商范围,请更新后端后重试。": "現在のバックエンドはルール編集とプロバイダー範囲に対応していません。バックエンドを更新してください。", "当前固定为浅色模式,不随系统变化。": "現在はライトモードに固定されており、システムには連動しません。", "当前固定为深色模式,不随系统变化。": "現在はダークモードに固定されており、システムには連動しません。", "当前密码": "現在のパスワード", "当前已改过:{edited}。": "現在の変更箇所:{edited}。", "当前形态": "実行形態", "当前按 100% 显示(默认比例)。": "現在は 100% で表示中(デフォルト比率)。", "当前按 k / M 缩写显示(如 1.20M / 8.4k)。": "現在は k / M 略記で表示中(例:1.20M / 8.4k)。", "当前按 {n}% 显示。": "現在は {n}% で表示中。", "当前按「万 / 亿」式本地量级词显示(如 1.2亿 / 8400万)。": "現在は「万 / 億」式のローカル量級語で表示中(例:1.2億 / 8400万)。", "当前是透传模式:存下来也不会发出,切成「替换 / 追加」之后才生效。": "現在はパススルーモードです:保存しても送信されず、「置換 / 追加」に切り替えてから有効になります。", "当前显示为「1.20M / 8.4k / 1.2B」这类英文缩写。": "現在は「1.20M / 8.4k / 1.2B」のような英語略記で表示しています。", "当前显示为「1.2亿 / 8400万」这类中文量级。": "現在は「1.2億 / 8400万」のような中国語の桁表記で表示されています。", "当前样本结果:{name}": "現在のサンプル結果:{name}", "当前正在使用": "現在使用中", "当前浏览器以管理员身份登录着本面板。「退出登录」会撤销这台设备的登录会话(30 天内的自动续期一并失效),需要重新输入账号密码;其他已登录的设备不受影响。": "現在のブラウザーは管理者としてこのパネルにログインしています。「ログアウト」はこのデバイスのログインセッションを取り消し(30 日以内の自動更新も無効になります)、アカウントとパスワードの再入力が必要です。他のログイン済みデバイスは影響を受けません。", "当前版本不支持品牌设置": "このバージョンはブランド設定に対応していません", "当前环境不支持局域网访问设置": "現在の環境は LAN アクセス設定に対応していません", "当前环境不支持整库备份": "この環境ではデータベース全体のバックアップは使えません", "当前环境不支持整库备份(仅桌面端可用)": "この環境ではデータベース全体のバックアップは使えません(デスクトップ版のみ)", "当前环境不支持整库恢复": "この環境ではデータベース全体の復元は使えません", "当前环境不支持整库恢复(仅桌面端可用)": "この環境ではデータベース全体の復元は使えません(デスクトップ版のみ)", "当前环境不支持网络访问设置": "現在の環境ではネットワークアクセス設定を利用できません", "当前环境不支持读取版本信息(桥接方法缺失)": "この環境ではバージョン情報を取得できません(ブリッジメソッドが見つかりません)", "当前生效值:{value}": "現在の有効値:{value}", "当前生效的正文来自{source}{file}。保存后这一份会盖过提示词文件与内置默认{note}。": "現在有効な本文の出所は{source}です{file}。保存するとこの本文がシステムプロンプトファイルと内蔵デフォルトより優先されます{note}。", "当前界面": "現在の画面", "当前管理员:{name}": "現在の管理者:{name}", "当前设置已保存": "現在の設定は保存済みです", "当前跟随操作系统的深浅色设置,系统切换时界面会自动跟上。": "現在は OS のライト / ダーク設定に連動しており、システムの切替時に UI も自動的に追従します。", "当前路由内的可用视觉模型": "現在のルート内で利用可能な視覚モデル", "待迁移旧数据": "移行待ちの旧データ", "待配置": "未設定", "忘记密码时无法在界面里找回:需要停掉程序后,从数据库删除管理员记录(kv 表的 panelAdmin 键),重启后按首次使用重新注册。具体命令与各形态的库文件路径见 docs 目录下的「重置管理员」文档。": "パスワードを忘れた場合、画面から復旧することはできません。プログラムを停止し、データベースから管理者レコード(kv テーブルの panelAdmin キー)を削除してから再起動し、初回と同様に登録し直してください。具体的なコマンドと形態別のデータベースパスは docs の「管理者のリセット」を参照してください。", "思考等级、图片能力未知、等待上限": "思考レベル、画像対応が不明な場合、待ち時間の上限", "恢复中…": "復元中…", "恢复失败:{message}": "復元に失敗:{message}", "恢复官方原文": "公式原文に戻す", "恢复插件默认值": "プラグインの既定値に戻す", "恢复整库": "データベースを復元", "恢复整库备份": "全体バックアップを復元", "恢复默认": "デフォルトに戻す", "恢复默认 Logo": "標準のロゴに戻す", "恢复默认侧边栏": "サイドバーを既定に戻す", "恢复默认品牌": "標準のブランドに戻す", "恢复默认词表": "デフォルトのルールに戻す", "想回到原来那份,把这里清空再保存即可(不会删掉你配的文件路径)。": "元のものに戻したい場合は、ここを空にして保存するだけです(設定したファイルパスは削除されません)。", "想要的新功能或改进想法": "実現したい新機能や改善のアイデア", "所有未单独配置的提供商都用这一份": "個別設定していないすべてのプロバイダーがこれを使用します", "所有菜单都已在这一组": "すべてのメニューがこのグループにあります", "手机端可管理所连接网关的账号、签到与插件,并使用提供商声明的动态登录入口;其余既有添加入口、编辑凭证和改写客户端配置仍需桌面面板。": "モバイル版は接続先ゲートウェイのアカウント、チェックイン、プラグインを管理し、プロバイダーが宣言した動的ログイン方式を利用できます。その他の既存の追加機能、認証情報の編集、クライアント設定の変更にはデスクトップパネルが必要です。", "托管网页界面": "Web UI を配信", "把地址里的 your-server 与 USERNAME 换成你自己的;目录不存在时会自动创建。": "URL 内の your-server と USERNAME を自分の環境に置き換えてください。ディレクトリが無い場合は自動で作成します。", "把整份数据库(账号、网关配置、事件日志、请求统计、调试报文与桌面设置)导出成一个 SQL 文件,恢复时整体替换本机全部数据 —— 与上面「账号导入 / 导出」的逐条合并是两种语义:恢复会连配置、日志与当前启用状态一起换成备份那台机器的状态。导出默认包含日志与调试报文(文件可能很大),不需要时可以取消勾选只备业务数据。恢复前会自动把当前数据备份到配置目录的 backups/ 下,恢复后需要重新登录管理面板。": "データベース全体(アカウント・ゲートウェイ設定・イベントログ・リクエスト統計・デバッグペイロード・デスクトップ設定)を 1 つの SQL ファイルに書き出し、復元時はこのマシンの全データをまるごと置き換えます —— 上の「アカウントのインポート / エクスポート」とは意味が別で、あちらは 1 件ずつのマージ、復元は設定・ログ・有効状態までバックアップしたマシンの状態にそっくり入れ替わります。書き出しは既定でログとデバッグペイロードを含みます(ファイルは大きくなりがち)。不要ならチェックを外して業務データだけにできます。復元の直前には現在のデータを設定フォルダの backups/ へ自動バックアップし、復元後は管理パネルへ再ログインが必要です。", "把整次请求交给视觉模型,由它直接回答,不再回到原模型。": "リクエスト全体を視覚モデルに渡し、元のモデルに戻らず直接回答します。", "把菜单移入 {name}": "メニューを {name} へ移動", "把菜单移入「{name}」": "メニューを「{name}」へ移動", "把账号、网关配置、自定义提供商、Agent 配置、代理池 / 订阅、签到与余额记录同步到 WebDAV 或 S3 兼容存储,换台机器后一键取回。事件日志、请求明细、调试报文与面板登录态不在同步范围内(它们是本机的运行痕迹)。上传的账号凭证仍是加密形态,解密用的账号密钥由「同步密码」单独加密后一并上传 —— 同步密码不会保存到云端,换机下载时需要重新输入。": "アカウント、ゲートウェイ設定、カスタムプロバイダー、Agent 設定、プロキシプール / サブスクリプション、チェックインと残高の記録を WebDAV または S3 互換ストレージに同期し、別のマシンでワンクリックで復元できます。イベントログ、リクエスト明細、デバッグ通信記録、パネルのログイン状態は対象外です(これらは本機の実行履歴です)。アップロードされるアカウント認証情報は暗号化されたままで、復号に使うアカウントキーは「同期パスワード」で別途暗号化して一緒にアップロードします。同期パスワードはクラウドに保存されないため、別のマシンで復元する際に再入力が必要です。", "把路径里的主目录显示成 ~,截图分享时不暴露用户名": "パス内のホームディレクトリを ~ と表示し、スクリーンショットでユーザー名が漏れないようにします", "把路径里的主目录(如 C:\\Users\\你的用户名)显示成 ~,截图分享时不暴露用户名。只影响本页显示与复制,不改任何文件。": "パス内のホームディレクトリ(例: C:\\Users\\ユーザー名)を ~ と表示し、スクリーンショットでユーザー名が漏れないようにします。このページの表示とコピーだけに影響し、ファイルは変更しません。", "报表天数": "レポートの日数", "报表页的热力图与按天趋势,默认 99999 天(近似全量保留),可填 1–99999 天。": "レポートページのヒートマップと日次トレンド。既定は 99999 日(ほぼ全量保持)で、1〜99999 日を指定できます。", "拖动分组 {name}": "グループ {name} をドラッグ", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "左側の ⠿ をドラッグして順序を変更(メニューはグループをまたげます)。スイッチで表示/非表示、グループ名をクリックで名前変更、グループ見出しの + で他のメニューを移動、目のボタンでグループごと非表示。変更は即座に反映され保存されます(左のサイドバーが結果です)。キーボード操作:ハンドルにフォーカスして Alt+↑ / ↓。", "拖动菜单 {name}": "メニュー {name} をドラッグ", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "ドラッグでグループの順序を変更(Alt+↑ / ↓ でも可)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "ドラッグで順序を変更、グループをまたげます(Alt+↑ / ↓ でも可)", "指定备选仍受当前请求权限和路由范围限制,路由组请求不会跳到组外。不会转为辅助识图继续。": "指定した代替モデルにも現在の権限とルート範囲が適用されます。ルートグループ外には転送せず、補助画像読み取りに切り替えて続行することもありません。", "指定提供商": "指定したプロバイダー", "指定角色": "指定したロール", "指定错误码直接换号": "指定エラーコードで直接アカウント切替", "指纹脱敏": "フィンガープリント除去", "指纹脱敏会在转发前按词表顺序改写请求消息中的文本,包括对话内容、思考内容和工具调用参数。默认词表包含客户端模板句与计费表头的精确替换、正则删除规则,可以新增、编辑、删除、启停和调整顺序;替换内容留空表示删除匹配内容。默认应用全部提供商,也可指定多家。改动只作用于发给上游的副本,响应内容不变。编辑后点击「保存设置」,下一次请求生效;清空词表表示不做任何指纹改写,恢复默认只重置词表。": "転送前にルールの順序でメッセージのテキストを変更します。会話、思考内容、ツール呼び出し引数が対象です。デフォルトにはクライアントの定型文と課金ヘッダーを対象にした完全一致の置換と正規表現の削除が含まれます。ルールの追加、編集、削除、有効・無効の切り替え、並べ替えが可能です。置換内容が空なら一致部分を削除します。デフォルトですべてのプロバイダーに適用し、複数の指定も可能です。アップストリームに送るコピーのみを変更し、応答は変更しません。「設定を保存」を押すと次のリクエストから有効です。空の一覧では何も変更せず、デフォルト復元はルールだけをリセットします。", "指纹脱敏设置仅本次运行生效,写入数据库失败,请检查配置目录": "設定は今回の実行中のみ有効です。データベースへの書き込みに失敗しました。設定ディレクトリを確認してください。", "指纹脱敏设置已刷新": "フィンガープリントのマスキング設定を更新しました", "按下面两块设置处理图片;关闭后设置全部保留。": "下の 2 つのブロックの設定で画像を処理します。オフにしても設定はすべて残ります。", "按列表自上而下匹配,位于来源声明之后、内置规则之前;可用于给难认的标识钉规则。": "リストの上から順に照合し、発信元宣言の後・内蔵ルールの前に適用します。識別しにくいクライアントの固定に使えます。", "按原文精确匹配,区分大小写;不会自动去掉首尾空白。": "大文字・小文字を区別して原文と完全一致で比較します。前後の空白は削除しません。", "按天聚合保留天数": "日次集計の保持日数", "按指定备选顺序尝试": "指定した代替モデルを順番に試す", "按提供商查看和调整专属选项": "プロバイダー固有の設定を確認・変更", "按提供商筛选设置": "プロバイダーで設定を絞り込む", "按提供商管理专属选项,作用于当前网关中该提供商的所有账号。": "プロバイダー固有の設定を管理します。変更は現在のゲートウェイにある、そのプロバイダーのすべてのアカウントに適用されます。", "按提供商配置": "プロバイダー別設定", "按每条请求的软件标识识别客户端,不依赖 API Key。规则修改只影响新请求,内置规则随软件更新,自定义规则参与备份与云同步。": "各リクエストのソフトウェア識別情報を使用し、API Keyには依存しません。ルール変更は新しいリクエストにのみ適用されます。内蔵ルールはアプリ更新に追従し、カスタムルールはバックアップとクラウド同期の対象です。", "换一台服务器": "別のサーバーに切り替える", "排队等待": "キューイング待機", "排队等待次数": "キューイングの待機回数", "排队等待秒数": "キューイングの待機秒数", "排队等待设置已刷新": "キューイング待機設定を更新しました", "接入": "接続", "接受调用方来源声明": "呼び出し元の申告を受け付ける", "接管回答的模型": "回答を引き継ぐモデル", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "サイドバーに表示するメニュー、その順序、グループ分けを設定します。非表示はナビゲーションの表示だけに影響し、アクセス権は失われません。非表示にしたページも URL から直接開けます。", "控制报表与请求日志里 Token 读数的写法:开启后按「万 / 亿」式的本地量级词显示(简体为万 / 亿,繁体为萬 / 億,日文为万 / 億,韩文为만 / 억),关闭则用 k / M 缩写(与上游文档、接口字段的写法一致)。英文 / 葡语的本地量级词就是 k / M,这项对它们没有区别。只影响显示口径,不改变任何统计与存储的数值。": "レポートとリクエストログにおける Token の数値表記を制御します:オンにすると「万 / 億」式のローカル量級語で表示し(簡体字は万 / 亿、繁体字は萬 / 億、日本語は万 / 億、韓国語は만 / 억)、オフにすると k / M 略記を使用します(アップストリームのドキュメントやインターフェースのフィールド表記と一致)。英語 / ポルトガル語ではローカル量級語がそのまま k / M なので、この項目による違いはありません。影響するのは表示の形式のみで、統計や保存される数値は変わりません。", "控制报表与请求日志里 Token 读数的写法:开启后按中文量级显示(1.2亿 / 8400万),关闭则用 k / M / B 缩写(与上游文档、接口字段的写法一致)。这只影响显示口径,不改变任何统计与存储的数值。": "レポートとリクエストログの Token 表記を切り替えます。オンでは中国語の数量単位(1.2億 / 8400万)、オフでは k / M / B の略記(上流のドキュメントや API フィールドと同じ書き方)で表示します。表示だけが変わり、統計値や保存値は変わりません。", "控制界面的深浅色,与左侧边栏底部的三个主题按钮是同一个设置(改哪一处,另一处立刻跟上)。「跟随系统」会随操作系统当前的浅色 / 深色自动切换,并在系统主题变化时即时跟上;选「浅色」或「深色」则把界面固定在该模式,不再随系统变化。窗口标题栏的深浅色会一并同步,不会出现深色界面配一条浅色标题栏的情况。": "UI のライト / ダークを制御します。左サイドバー下部の 3 つのテーマボタンと同じ設定です(どちらを変更しても、もう一方にすぐ反映されます)。「システム」は OS の現在のライト / ダークに自動で切り替わり、システムテーマの変化にも即座に追従します。「ライト」または「ダーク」を選ぶと UI はそのモードに固定され、システムには連動しなくなります。ウィンドウタイトルバーのライト / ダークも一緒に同期され、ダークの UI にライトのタイトルバーが付くようなことはありません。", "提供商与模型": "プロバイダーとモデル", "提供商专属设置": "プロバイダー固有の設定", "提供商当前不可用,未保存的修改已保留;恢复插件后可继续编辑。": "現在このプロバイダーを利用できません。未保存の編集は保持されています。プラグインが復旧すると編集を続けられます。", "提供商设置已保存": "プロバイダー設定を保存しました", "提供商设置返回格式无效,请刷新后重试": "プロバイダー設定の応答形式が無効です。更新してから再試行してください。", "提建议": "提案する", "提示词文件": "システムプロンプトファイル", "提示词文件已更新": "システムプロンプトファイルを更新しました", "提示词正文": "システムプロンプト本文", "提示词正文已更新": "システムプロンプト本文を更新しました", "插件或设置已变化,请放弃修改并刷新后重新编辑。": "プラグインまたは設定が変更されました。変更を破棄して更新し、再度編集してください。", "操作系统": "オペレーティングシステム", "支持 .a2ab 加密备份和旧 .sql 文件;旧 SQL 不包含恢复密钥,跨机器导入仍需原机密钥。": "暗号化された .a2ab と旧 .sql に対応しています。旧 SQL には復元鍵が含まれないため、別端末への移行には元の端末の鍵が必要です。", "支持 PNG、JPG、WebP,最大 2 MiB、4096 × 4096 像素;自动缩小至 512 像素以内,建议使用正方形图片。": "PNG、JPG、WebP に対応。最大 2 MiB、4096 × 4096 ピクセルです。512 ピクセル以内に自動縮小します。正方形の画像を推奨します。", "改动仍保存在本机,修复网络或凭据后下一次改动会自动重试,也可以手动点「上传到云端」。": "変更は本機に保存されています。ネットワークや認証情報を修正すれば次回の変更で自動的に再試行されます。手動で「クラウドへアップロード」を押すこともできます。", "改动仍保存在本机,系统会延长等待并自动重试;修复网络或凭据后,也可以手动点「上传到云端」。": "変更はこの端末に保存されています。待機時間を延ばして自動再試行します。ネットワークや認証情報を修正した後、「クラウドにアップロード」を手動で選ぶこともできます。", "改完立即生效,不用重启(下一个请求就用新模式)。降级是自动的临时状态,解除后本模式自己的提示词立刻恢复。": "変更後は即時有効で再起動は不要です(次のリクエストから新しいモードが適用されます)。フォールバックは自動的な一時状態で、解除されると本モード自身のシステムプロンプトがすぐに復帰します。", "放大或缩小整个界面(文字与控件一起变),效果与浏览器 Ctrl +/- 相同:共 11 档,立即生效并记住。": "UI 全体を拡大または縮小します(文字とコントロールが一緒に変化)。効果はブラウザーの Ctrl +/- と同じ:全 11 段階で、即時有効かつ記憶されます。", "放弃修改并刷新": "変更を破棄して更新", "数据": "データ", "数据保留": "データ保持", "数据保留设置已刷新": "データ保持設定を更新しました", "数据存储": "データストレージ", "数据库 schema": "データベース schema", "数据库不可用": "データベース利用不可", "数据库与恢复密钥一起加密保存。密码不会保存在应用或备份中,忘记后无法恢复,请妥善保管。": "データベースと復元鍵を一緒に暗号化します。パスワードはアプリにもバックアップにも保存されません。忘れると復元できないため、大切に保管してください。", "数据库主文件与 WAL 文件的总占用,与请求日志清理弹窗采用同一口径;清理后可压缩数据库回收空闲空间。": "データベースのメインファイルと WAL ファイルの合計サイズです。リクエストログのクリア画面と同じ計算方法です。クリア後はデータベースを圧縮して未使用領域を回収できます。", "数据库文件": "データベースファイル", "数据目录": "データディレクトリ", "数据统一保存在配置目录下的 agent2api.db;如需更换位置,请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "データは設定ディレクトリ配下の agent2api.db にまとめて保存されます。場所を変更する場合は、環境変数 AGENT2API_PROXY_HOME を設定してからプログラムを再起動してください。", "整体替换": "まるごと置き換え", "整库备份 / 恢复": "データベース全体のバックアップ / 復元", "整次请求交给 {model} 直接回答,不再回到原模型。": "リクエスト全体を {model} に渡し、元のモデルに戻らず直接回答します。", "新分组名": "新しいグループ名", "新增 {added} 个、更新 {updated} 个{suffix}{note}": "新規 {added} 件、更新 {updated} 件{suffix}{note}", "新增脱敏规则": "マスキングルールを追加", "新增规则": "ルールを追加", "新安装和升级后默认关闭。先配置再开启,关闭后保留配置。": "新規インストール時とアップグレード後はデフォルトで無効です。設定してから有効にしてください。無効にしても設定は保持されます。", "新密码": "新しいパスワード", "新密码不能与当前密码相同": "新しいパスワードは現在のものと異なる必要があります", "新密码至少 8 位": "パスワードは 8 文字以上にしてください", "新建分组": "グループを追加", "新建客户端分类": "クライアント分類を新規作成", "无效或重复的标识请求头:{headers}": "無効または重複した識別ヘッダー:{headers}", "无法读取品牌设置": "ブランド設定を読み取れません", "无法读取图片,请重新选择": "画像を読み取れません。選び直してください", "日志与请求日志同时受保留天数和数量上限限制。日志默认 30 天、10000 条,各级别按比例保留;调试详情最多保留 3 天。请求日志默认 99999 天、1000000 条(100 万),超出后从最旧的记录开始清理,并同步删除对应原始正文。按天聚合默认 99999 天,只按天数保留,不受请求日志数量清理影响。天数可填 1–99999,数量可填 1–100000000。调小任一设置并确认后立即清理,且不可恢复。": "ログとリクエストログには保存日数と件数上限の両方が適用されます。ログの既定は 30 日・10000 件で、レベルごとに比例配分して保持します。デバッグ詳細は最大 3 日です。リクエストログの既定は 99999 日・1000000 件(100 万件)で、超過分は古い記録から対応する元の本文とともに削除します。日次集計の既定は 99999 日で、日数のみで保持し、リクエストログの件数による削除には影響されません。日数は 1–99999、件数は 1–100000000 を指定できます。設定を減らして確認すると直ちに削除され、元に戻すことはできません。", "日志保留数量上限": "ログの保存件数上限", "日志文件": "ログファイル", "日语": "日本語", "显示 {name}": "{name} を表示", "显示分组 {name}": "グループ {name} を表示", "显示名称": "表示名", "显示名称最多 64 个字符": "表示名は最大 64 文字です", "显示模式": "表示モード", "显示这一组": "このグループを表示", "暂无可编辑的提供商设置": "編集可能なプロバイダー設定はありません", "暂无自定义规则,正在使用内置识别。也可以从请求详情直接添加规则。": "カスタムルールはありません。内蔵識別を使用中です。リクエスト詳細からもルールを追加できます。", "暂未获取到本机访问地址,请使用其他设备能连接到的本机 IP 与网关端口。": "この端末のアクセスアドレスをまだ取得できていません。他の端末から到達できる本機の IP とゲートウェイのポートを使用してください。", "更新": "更新", "更新出网线路": "更新の出口経路", "更新通道": "更新チャネル", "替换": "置換", "替换 = 客户端 system / developer 消息全部删掉,换成网关的提示词;追加 = 保留客户端内容,只在开头 system 块之后多插一条。两者都只改发给上游的副本,客户端看到的响应不变。": "置換 = クライアントの system / developer メッセージをすべて削除し、ゲートウェイのシステムプロンプトに差し替えます。追加 = クライアントの内容を保持し、先頭の system ブロックの後ろに 1 件挿入するだけ。どちらもアップストリームへ送るコピーのみを変更し、クライアントが見るレスポンスは変わりません。", "替换为网关提示词": "ゲートウェイのシステムプロンプトに置換", "替换内容": "置換内容", "替换内容最多 {max} 个字符": "置換内容は {max} 文字以内で入力してください", "替换前会自动把当前数据备份到配置目录的 backups/ 文件夹。": "置き換えの直前、現在のデータを設定フォルダの backups/ へ自動バックアップします。", "替换并恢复": "置き換えて復元", "最多 64 个字符,留空恢复为 Agent2API。": "最大 64 文字。空欄にすると Agent2API に戻ります。", "最小自动上传间隔": "自動アップロードの最小間隔", "最近 {window} 条请求中,{scanned} 条有识别依据,{matched} 条符合条件,{applied} 条会采用本规则。": "直近{window}件のうち、{scanned}件に識別根拠があり、{matched}件が条件に一致し、{applied}件にこのルールが適用されます。", "有未保存的修改": "未保存の変更があります", "有未保存的改动:保存后才能同步(测试连接不受影响)。": "未保存の変更があります。同期するには先に保存してください(接続テストは可能です)。", "有近期套餐池请求时读取库存状态的间隔,默认 2500 毫秒,可填 1000–30000。没有近期请求时降低读取频率,轮询不会发起验证码。": "最近の Start Plan リクエストがある場合の在庫取得間隔です。既定は 2500 ミリ秒、範囲は 1000~30000 です。リクエストがない場合は頻度を下げ、ポーリングで認証を開始しません。", "服务商": "プロバイダー", "服务器地址": "サーバーアドレス", "服务端密钥加密保存,不会返回浏览器;切回 ALTCHA 后会保留,方便再次启用。": "シークレットキーは暗号化して保存され、ブラウザーには返されません。ALTCHA に戻しても保持されるため、後から再び有効にできます。", "服务端密钥(Secret Key)": "シークレットキー(Secret Key)", "期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "このモードの間、独自のプロンプトは送信されません。プロンプトを修正できたらすぐ解除できます。", "未保存": "未保存", "未匹配已知客户端": "既知のクライアントに一致しません", "未单独配置:模式、提示词文件与正文都跟随上面的全局配置(当前「{mode}」)。": "個別設定なし:モード、システムプロンプトファイル、本文はいずれも上記のグローバル設定に従います(現在は「{mode}」)。", "未启用": "無効", "未开启轻量模式:关窗仅隐藏窗口,界面进程常驻内存,随时打开不等待": "軽量モードはオフ:ウィンドウを閉じても非表示になるだけで、UI プロセスはメモリに常駐し、いつでも待ち時間なく開けます", "未开启,developer 角色消息会原样发往上游,不认识该角色的上游会报错(400)。": "無効:developer ロールのメッセージはそのままアップストリームへ送られ、このロールを認識しないアップストリームはエラー(400)を返します。", "未开启,客户端 system 模板会原样发往上游,可能被内容审核误拦(400)。": "オフの場合、クライアントの system テンプレートはそのままアップストリームへ送られ、コンテンツ審査で誤ってブロックされる(400)可能性があります。", "未开启,浏览器跨域无法直连网关。": "オフの場合、ブラウザーから CORS でゲートウェイに直接接続できません。", "未开启,转发时不保存任何原始报文。": "オフの場合、転送時に生のメッセージは一切保存されません。", "未开启:网关只监听 127.0.0.1,仅本机可以访问。": "オフ:ゲートウェイは 127.0.0.1 のみで待ち受け、本機からのみアクセスできます。", "未注册": "未登録", "未注册闸门": "未登録ゲート", "未知原因": "不明な原因", "未知来源": "不明な出典", "未知设备": "不明なデバイス", "未知账号": "不明なアカウント", "未能读取 Cline 伪装头设置,请稍后重试": "Cline 偽装ヘッダー設定を読み込めませんでした。しばらくしてから再試行してください", "未能读取 models.dev 元数据状态,请稍后重试": "models.dev メタデータの状態を取得できませんでした。しばらくして再試行してください。", "未能读取云同步设置,请稍后重试。": "クラウド同期の設定を読み取れませんでした。しばらくしてから再試行してください。", "未能读取保存后的指纹脱敏设置": "保存後のマスキング設定を読み取れませんでした", "未能读取开发者角色兼容设置,请稍后重试": "developer ロール互換の設定を読み取れませんでした。しばらくしてから再試行してください", "未能读取指纹脱敏设置,请稍后重试": "フィンガープリントのマスキング設定を読み込めませんでした。しばらくしてから再試行してください", "未能读取机器人校验设置": "ボット対策の設定を読み取れませんでした", "未能读取第三方模型回答完自动折叠过程设置,请稍后重试": "サードパーティモデルの回答後の工程の自動折りたたみ設定を読み取れませんでした。しばらくしてから再試行してください", "未能读取系统提示词设置,请稍后重试": "システムプロンプト設定を読み込めませんでした。しばらくしてから再試行してください", "未能读取网关跨域访问设置,请稍后重试": "ゲートウェイの CORS アクセス設定を読み込めませんでした。しばらくしてから再試行してください", "未能读取网络访问设置,请稍后重试": "ネットワークアクセス設定を読み込めませんでした。しばらくしてから再試行してください。", "未能读取调试模式设置,请稍后重试": "デバッグモード設定を読み込めませんでした。しばらくしてから再試行してください", "未能读取账户信息,请稍后重试": "アカウント情報を取得できませんでした。しばらくしてから再試行してください", "未采用本规则,请检查开关、来源声明或规则顺序": "このルールは適用されません。スイッチ、呼び出し元の申告、ルール順序を確認してください。", "本地账号、配置、签到与余额记录变化后自动上传(合并 1 秒内的连续改动,最长 10 秒传一次;内容没变时不发请求)。": "ローカルのアカウント・設定・チェックイン・残高記録の変更後に自動アップロードします(1 秒以内の連続変更はまとめ、最大 10 秒に 1 回。内容が変わっていなければリクエストしません)。", "本机 API 地址": "この端末の API アドレス", "本机 APK 版本": "この端末の APK バージョン", "本机全部数据会被备份整体替换,恢复前自动保留安全备份,完成后需要重新登录管理面板。本机已有密钥不会被覆盖。": "この端末のデータベース内の全データが置き換わります。事前に安全バックアップを保存し、完了後は再ログインが必要です。既存の鍵は上書きしません。", "本机应用版本": "この端末のアプリバージョン", "本机界面版本": "この端末の UI バージョン", "本机的业务数据(账号、配置、Agent 配置、代理池 / 订阅、签到与余额记录)将上传并": "本機の業務データ(アカウント・設定・Agent 設定・プロキシプール / サブスクリプション・チェックインと残高の記録)をアップロードし、", "本机的全部数据(账号、网关配置、日志统计与桌面设置)将被所选备份文件": "このマシンの全データ(アカウント・ゲートウェイ設定・ログ統計・デスクトップ設定)は、選択したバックアップファイルで", "本机的账号、网关配置、Agent 配置、代理池 / 订阅、签到与余额记录将被远端快照": "本機のアカウント・ゲートウェイ設定・Agent 設定・プロキシプール / サブスクリプション・チェックインと残高の記録は、リモートのスナップショットで", "本次无需刷新": "今回は更新の必要がありません", "本软件不提供任何担保,可按 AGPL-3.0 修改与分发;通过网络提供修改版服务时须向用户提供对应源码。": "本ソフトウェアは無保証で、AGPL-3.0 に従い改変・配布できます。改変版をネットワークサービスとして提供する場合は、利用者に対応するソースを提供してください。", "本项目的 AGPL-3.0 许可不替代这些第三方许可。名称与标识的商标权归各自权利人所有。": "本プロジェクトの AGPL-3.0 ライセンスは、これらのサードパーティライセンスに代わるものではありません。名称とロゴの商標権は、それぞれの権利者に帰属します。", "机器人校验": "ロボット検証", "机器人校验设置已保存": "ボット対策の設定を保存しました", "条数": "件数", "来源声明当前关闭,这条规则不会生效。请先在客户端识别设置中开启。": "呼び出し元の申告は無効なため、このルールは適用されません。先にクライアント識別設定で有効にしてください。", "来源声明无效或未登记,本次已忽略。": "申告が無効または未登録のため無視しました。", "来源声明未启用,本次已忽略。": "呼び出し元の申告は無効のため無視しました。", "来源版本": "出典のリビジョン", "来源设备:{device}": "取得元デバイス:{device}", "来自 {device},生成于 {time}": "{device} から、{time} に作成", "架构": "アーキテクチャ", "查看内置客户端({n})": "内蔵クライアントを表示({n})", "查询管理员状态失败:{message}": "管理者状態の照会に失敗しました:{message}", "校验身份:这三段必须各自成块排在最前(实测:三段并成一段会被回 405 / 3012)。因此这里按段编辑,不能合成一段。改过的段以你的文本为准,没改的段继续用官方原文;清空某一段 = 那一段恢复官方原文。": "で身元を検証します:この 3 つの段はそれぞれ独立したブロックとして先頭に並ぶ必要があります(実測:3 段をまとめて 1 段にすると 405 / 3012 が返ります)。そのためここでは段ごとに編集し、1 段にまとめることはできません。変更した段はあなたのテキストが優先され、変更していない段は引き続き公式原文を使用します。ある段を空にする = その段は公式原文に戻ります。", "桌面端": "デスクトップ版", "桌面端登录 / 注册验证": "デスクトップ版のログイン / 登録時の認証", "桌面端:登录 / 注册需要 ALTCHA 人机验证": "デスクトップ:ログイン / 登録に ALTCHA の認証が必要", "桌面端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "デスクトップ:ログイン / 登録に ALTCHA の認証が必要(現在使用中)", "桌面运行时不可用,暂时无法保存": "デスクトップランタイムが利用できないため、保存できません", "档案": "プロファイル", "检测中…": "確認中…", "概览": "概要", "模型不能直接看图时,按你选择的方式处理。原生支持图片的请求直接转发,不增加识图调用。": "モデルが画像を直接認識できない場合に、選択した方式で処理します。画像に対応するモデルへのリクエストは追加の読み取りを行わず、そのまま転送します。", "模型单独配置": "モデル別設定", "模型目录没写明是否支持图片时按这里处理。": "モデル一覧に画像対応の記載がない場合の扱いです。", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。下面两块分别选好「哪些模型」和「用哪只模型」即可;没配到的模型、以及本来就能看图的模型,一律原样放行。这里的改动立即生效,不需要保存。": "画像を読めないモデルへの対処は 2 通りだけです。別のモデルに読ませるか、リクエスト全体を画像を読めるモデルに渡すかです。下の 2 つのブロックで「対象のモデル」と「使うモデル」を選んでください。ここに含まれないモデルと、もともと画像を読めるモデルはそのまま通します。ここの変更はすぐ反映され、保存は不要です。", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。没配到的模型、以及本来就能看图的模型,一律原样放行;每个请求只用其中一种方式,不会两种串着做,处理失败也不会改走另一种。改动立即生效,不需要保存。": "画像を読めないモデルへの対処は 2 通りだけです。別のモデルに読ませるか、リクエスト全体を画像を読めるモデルに渡すかです。ここに含まれないモデルと、もともと画像を読めるモデルはそのまま通します。1 つのリクエストで使う方式は 1 つだけで、2 つを続けて実行することはなく、失敗してももう一方には切り替えません。ここの変更はすぐ反映され、保存は不要です。", "模型请求是否需要验证码由 ZCode 上游配置决定,领取验证与模型请求免验证分别处理。后台只检查配置和库存,不自动运行验证码或弹出拼图;需要验证时,在账号的「套餐明细」中点击「开始验证」。验证令牌一次性使用,短时间内过期,失败或取消后不会自动重试。": "モデルリクエストの認証要否は ZCode の上流設定で決まり、プラン受け取りの認証とは別に扱います。バックグラウンドは設定と在庫のみを確認し、認証やパズルを自動表示しません。必要な場合は「プラン詳細」で「認証を開始」を押してください。トークンは一度のみ使用でき短時間で失効し、失敗やキャンセル後は自動再試行しません。", "模式": "モード", "模式改为「{mode}」": "モードを「{mode}」に変更しました", "次": "回", "次日 00:00": "翌日 00:00", "正则表达式": "正規表現", "正在保存上游原始报文:": "アップストリームの生メッセージを保存中:", "正在修改…": "変更中…", "正在剥离出站请求里的审核指纹:表头键值整段删除,模板句最小改写。": "送信リクエスト内の審査フィンガープリントを除去しています:ヘッダーのキーと値は丸ごと削除し、テンプレート文は最小限に書き換えます。", "正在安装…": "インストール中…", "正在应答跨源请求:浏览器跨域请求可直连 /v1/*。": "クロスオリジンリクエストに応答中:ブラウザーからの CORS リクエストは /v1/* に直接接続できます。", "正在归一角色:developer 角色消息转发前改写为 system。": "ロールを正規化中:developer ロールのメッセージは転送前に system に書き換えられます。", "正在注册…": "登録中…", "正在联网更新": "オンラインで更新中", "正在读取提供商设置…": "プロバイダー設定を読み込み中…", "正式版": "正式版", "每个请求只会用到其中一种方式,不会两种串着做;处理失败也不会改走另一种。配了哪只视觉模型,那次请求的图片就会交给它。": "1 つのリクエストで使う方式は 1 つだけです。2 つを続けて実行することはなく、失敗してももう一方には切り替えません。設定した視覚モデルに、そのリクエストの画像が渡されます。", "每条请求轮换到下一个可用账号;新会话交给当前最闲的那位。适合想把手里的号摊开用、不让某一个一直扛。": "リクエストごとに次の利用可能なアカウントへ順送りし、新しいセッションはいちばん暇なアカウントに任せます。手持ちのアカウントをまんべんなく使いたいときに。", "每条请求都重新按策略选路 —— 行为与「关闭」一致,仅保留会话识别的记录。": "リクエストごとに戦略に従って選び直します —— 動作は「オフ」と同じで、セッションの記録だけが残ります。", "每次等待的时长,默认 0 = 跟随上游建议(实测 9~30 秒,上游没给建议时用 15 秒)。可填 0–120 秒强制一个固定时长。": "1 回の待機時間。デフォルト 0 = アップストリームの推奨に従う(実測 9~30 秒、アップストリームが推奨を示さない場合は 15 秒)。0–120 秒を入力して固定の待機時間を強制することもできます。", "每行一个域名,不填协议、端口或路径;与 Cloudflare 中的配置一致,服务端按完整域名匹配。手机 App 使用所连接网关的域名。": "1 行に 1 つのホスト名を入力し、プロトコル・ポート・パスは含めないでください。Cloudflare の設定と一致させてください。サーバーはホスト名を完全一致で確認します。モバイルアプリは接続先ゲートウェイのホスト名を使用します。", "毫秒": "ミリ秒", "沟通方式 / 上下文管理 + Environment 段。": "コミュニケーション方針 / コンテキスト管理 + Environment の段です。", "没有可导出的账号": "エクスポートできるアカウントがありません", "没有可用视觉模型时": "利用可能な視覚モデルがない場合", "没有已确认支持图片的模型,请先在模型管理中确认。": "画像対応が確認済みのモデルがありません。先にモデル管理で確認してください。", "没能读到「{label}」的当前值,改为 {count} 条可能会删除超出的历史数据。": "「{label}」の現在値を読み取れませんでした。{count} 件に変更すると、超過した履歴データが削除される可能性があります。", "没能读到「{label}」的当前值,改为 {days} 天可能会删除超出的历史数据。": "「{label}」の現在値を読み取れませんでした。{days} 日に変更すると超過した履歴データが削除される可能性があります。", "沿用对应方式的视觉模型配置,不额外维护一份模型列表。": "該当する方式の視覚モデル設定を利用します。別のモデル一覧は不要です。", "沿用工具服务的视觉分析模型": "ツールサービスの視覚分析モデルを利用", "沿用工具服务的视觉分析模型(未配置)": "ツールサービスの視覚モデルを使う(未設定)", "注册并开启": "登録してオンにする", "注册管理员账号": "管理者アカウントを登録", "注意:这一家的「网关自带」开关现在是关的,改过的正文要等开关打开才生效。": "注意:このプロバイダーの「ゲートウェイ内蔵」スイッチは現在オフです。変更した本文はスイッチをオンにするまで有効になりません。", "流式响应相邻数据之间允许的最大空闲时间(秒),收到新数据后重新计时,默认 300 秒,范围 1~3600。": "ストリーミング応答の隣接するデータ間に許される最大アイドル時間(秒)。新しいデータを受信すると計時がリセットされます。デフォルト 300 秒、範囲 1~3600。", "流式响应空闲超时": "ストリーミング応答アイドルタイムアウト", "测试连接": "接続テスト", "浏览器 / PWA": "ブラウザ / PWA", "浏览器只在 https 或 localhost 下提供离线缓存;局域网 http 访问不影响正常使用": "ブラウザは https または localhost でのみオフラインキャッシュを提供します。LAN の http アクセスでも通常どおり使えます。", "浏览器在本地完成计算,不需要第三方密钥,也不依赖外部验证服务。": "ブラウザー内で計算を行います。外部サービスのキーや認証サービスは不要です。", "浏览器标签页": "ブラウザのタブ", "浏览器面板": "ブラウザパネル", "消息角色": "メッセージのロール", "添加备选模型": "代替モデルを追加", "添加提供商": "プロバイダーを追加", "添加提供商…": "プロバイダーを追加…", "添加自定义头": "カスタムヘッダーを追加", "添加要单独配置的提供商": "個別設定するプロバイダーを追加", "清除本机凭证": "この端末の認証情報を削除", "清除这里的正文": "ここの本文をクリア", "源代码": "ソースコード", "点下面的入口会用系统默认浏览器打开 GitHub 的对应表单(需要 GitHub 账号,模板已预设好,填完直接提交即可)。": "下のリンクをクリックすると、システムのデフォルトブラウザーで GitHub の該当フォームが開きます(GitHub アカウントが必要。テンプレートは用意済みなので、記入してそのまま送信するだけです)。", "点击重命名": "クリックで名前を変更", "点此添加或切换服务器": "タップしてサーバーを追加・切り替え", "点此添加服务器": "タップしてサーバーを追加", "版本": "バージョン", "版本信息": "バージョン情報", "版本信息 · 所连网关环境": "バージョン情報 · 接続中のゲートウェイ", "版权声明": "著作権表示", "状态码 {code} 已在名单里": "ステータスコード {code} はすでにリストにあります", "状态码必须是 {min}–{max} 的整数(收到: {text})": "ステータスコードは {min}–{max} の整数でなければなりません(受信値:{text})", "环境": "環境", "生成时间:{time}": "作成日時:{time}", "生效顺序:有效的来源声明优先,然后按顺序匹配自定义规则,最后使用内置规则。中转丢失原始标识时,无法自动推断背后的软件。": "適用順序:有効な申告、カスタムルールの順序、内蔵ルール。中継で元の識別情報が失われた場合、元のソフトウェアを自動推定することはできません。", "用 models.dev 补齐上游没声明的模型能力与思考档位(联网刷新,内嵌快照始终生效)": "上流が宣言していないモデル能力と推論レベルを models.dev で補完する(オンライン更新。同梱スナップショットは常に有効)", "用于加密上云的账号密钥。请自己记牢 —— 它不保存到云端,换机下载时必须输入同一个密码,否则账号数据无法解密。": "クラウドに送るアカウントキーの暗号化に使います。忘れないでください —— クラウドには保存されず、別のマシンで復元する際に同じパスワードを入力しないとアカウントデータを復号できません。", "用哪只模型识图": "画像を読むモデル", "用浏览器菜单里的「添加到主屏幕」把这一页装成 App:全屏打开、没有地址栏,和原生应用一样。": "ブラウザメニューの「ホーム画面に追加」でこのページをアプリとして入れられます。全画面・アドレスバーなしで、ネイティブアプリと同じ感覚です。", "由 Cloudflare 提供验证,需要浏览器与网关均能连接 Cloudflare。验证失败或服务不可用时不会自动放行。": "Cloudflare が認証を提供します。ブラウザーとゲートウェイの両方から Cloudflare に接続できる必要があります。認証失敗やサービス停止時にアクセスを許可することはありません。", "由 {source} 覆盖,手动设置暂不生效": "{source} が優先され、手動設定は現在適用されていません", "界面缩放": "UI ズーム", "界面缩放比例": "UI ズーム比率", "界面语言": "表示言語", "界面语言。可选简体中文、繁體中文、English、日本語、한국어、Português (Brasil),或「跟随系统」(按浏览器 / 系统的语言列表自动选)。切换后整页立即刷新;该偏好只存在本机(localStorage),不影响账号、密钥与转发。": "表示言語。簡体字中国語、繁體中文、English、日本語、한국어、Português (Brasil)、または「システム」(ブラウザー / システムの言語リストに従って自動選択)から選べます。切り替えるとページ全体が即座に再読み込みされます。この設定は本機(localStorage)にのみ保存され、アカウント、キー、転送には影響しません。", "界面语言只保存在本机(localStorage)。切换后整页立即刷新,不影响账号、密钥与转发。": "表示言語は本機(localStorage)にのみ保存されます。切り替えるとページ全体が即座に再読み込みされ、アカウント、キー、転送には影響しません。", "界面里编辑的正文": "画面で編集した本文", "留空 = 用内置默认提示词": "空欄 = 内蔵のデフォルトシステムプロンプトを使用", "留空使用 AWS 官方地址": "空欄なら AWS 公式アドレスを使用", "留空使用默认": "空欄なら既定値を使用", "留空表示删除匹配内容;替换内容按原文写入,$ 不作为捕获组引用。": "空欄なら一致部分を削除します。置換内容はそのまま書き込み、$ をキャプチャグループ参照として扱いません。", "登录 / 注册需要通过 ALTCHA 人机验证(工作量证明)": "ログイン / 登録には ALTCHA の人間検証(プルーフ・オブ・ワーク)が必要です", "登录 / 账号切换 / 429 切换等系统事件,可填 1–3650 天。": "ログイン / アカウント切替 / 429 切替などのシステムイベント。1–3650 日の範囲で入力できます。", "登录 / 账号切换 / 429 切换等系统事件,可填 1–99999 天。": "ログイン / アカウント切り替え / 429 切り替えなどのシステムイベント。1〜99999 日で指定できます。", "登录 Agent2API": "Agent2API にログイン", "登录 {name}": "{name} にログイン", "登录人机验证": "ログイン CAPTCHA", "百分比类读数(如 OpenCode Go、Antigravity)不能相加,组头显示的是组内最低剩余比例。": "パーセント表示の読み取り値(OpenCode Go、Antigravity など)は合算できないため、帯にはグループ内で最も低い残り割合を表示します。", "监听地址": "待受アドレス", "目前展示仓库已登记的图标来源许可,不代表完整的第三方依赖清单。": "現在表示しているのは、リポジトリに登録済みのアイコン出典のライセンスです。サードパーティ依存関係の完全な一覧ではありません。", "目标路径:{path}": "保存先パス:{path}", "直接按上面的设置兼容": "上の設定でそのまま互換処理する", "直接按当前方式兼容": "選択した方式で直接処理", "知道了": "了解", "确定": "確定", "确定后加入当前草稿,点击「保存设置」才会生效。": "確定すると下書きに追加します。「設定を保存」を押すと有効になります。", "确定继续?": "続行しますか?", "确认上传": "アップロードを確認", "确认图片处理授权": "画像処理の許可を確認", "确认备份密码": "バックアップのパスワードを確認", "确认并保存": "確認して保存", "确认新密码": "新しいパスワード(確認)", "确认缩减数据保留": "データ保持の縮小を確認", "确认缩短保留天数": "保存日数の短縮を確認", "社区与支持": "コミュニティとサポート", "离线缓存未启用": "オフラインキャッシュは無効です", "积分合计只统计当前筛选出来的账号": "ポイント合計を現在の絞り込み結果のみで計算する", "移入「{name}」": "「{name}」へ移動", "程序路径": "実行ファイルのパス", "空 = 不要这一份,回落提示词文件 / 内置默认提示词。": "空 = この本文を使用せず、システムプロンプトファイル / 内蔵デフォルトにフォールバックします。", "空分组 · 点组头的 + 把菜单移进来": "空のグループ · 見出しの + でメニューを移動できます", "立即解除": "今すぐ解除", "站点密钥(Site Key)": "サイトキー(Site Key)", "第一段": "第 1 段", "第一段(身份句)": "第 1 段(アイデンティティ文)", "第三方应用密码": "サードパーティアプリのパスワード", "第三方开源许可": "サードパーティのオープンソースライセンス", "第三方模型回答完自动折叠过程": "サードパーティモデルの回答後の工程を自動で折りたたむ", "第三方模型回答完自动折叠过程设置已刷新": "サードパーティモデルの回答後の工程の自動折りたたみ設定を更新しました", "第三段": "第 3 段", "第三段(动态段)": "第 3 段(動的段)", "第二段": "第 2 段", "第二段(稳定段)": "第 2 段(安定段)", "等待响应超时": "応答待ちタイムアウト", "等待期间请求日志的状态列会显示「排队中」阶段,详情弹窗的「内部重试」里能逐次看到等待时长;等待用尽后返回 HTTP 503(不是 401/429:既不会刷新凭证,也不会把账号标成限额)。": "待機中はリクエストログのステータス列に「キューイング中」の段階が表示され、詳細ダイアログの「内部リトライ」で待機時間を 1 回ずつ確認できます。待機を使い切ると HTTP 503 を返します(401/429 ではありません:認証情報の更新も、アカウントをレート制限としてマークすることも行いません)。", "等比放大或缩小整个界面(文字、控件、间距一起变),效果与浏览器按 Ctrl +/- 相同:80%–130%、5% 一档。窗口本身不缩放,变的是页面内容的显示比例,设置立即生效并记住,下次启动直接按这个比例打开。放得越大可视范围越小,窗口较窄或表格较宽时不建议调得太大。": "UI 全体を等比で拡大または縮小します(文字、コントロール、余白が一緒に変化)。効果はブラウザーで Ctrl +/- を押した場合と同じ:80%–130%、5% 刻み。ウィンドウ自体は拡大縮小されず、変わるのはページ内容の表示比率です。設定は即時有効かつ記憶され、次回起動時はその比率で直接開きます。大きくするほど表示できる範囲は狭くなるため、ウィンドウが狭い場合やテーブルが広い場合はあまり大きくしすぎないことをおすすめします。", "简体中文": "簡体字中国語", "管理员已注册": "管理者登録済み", "管理员账号": "管理者アカウント", "管理插件": "プラグインを管理", "精确文本": "完全一致テキスト", "系统提示词模式": "システムプロンプトモード", "系统提示词设置已刷新": "システムプロンプト設定を更新しました", "累计请求": "累計リクエスト", "繁体中文": "繁体字中国語", "约 {n} 字符": "約 {n} 文字", "结构": "構造", "给 Codex 的响应补阶段标记,回答完后像官方模型一样把推理与命令过程折叠起来": "Codex へのレスポンスにフェーズマーカーを補い、回答後に公式モデルと同様に推論とコマンドの工程を折りたたむ", "继续并清理": "続行して削除", "编辑提示词正文 · {label}": "システムプロンプト本文を編集 · {label}", "编辑提示词正文 · 全局": "システムプロンプト本文を編集 · グローバル", "编辑正文": "本文を編集", "编辑网关自带提示词 · {label}": "ゲートウェイ内蔵システムプロンプトを編集 · {label}", "编辑脱敏规则": "マスキングルールを編集", "编辑识别规则": "識別ルールを編集", "缩放后重新存成 JPEG 时用的质量。默认 80,可填 40–95;数值越小体积越小、画质越差。": "縮小後の画像を JPEG で保存し直すときの品質です。既定 80、40〜95 で指定できます。小さいほど容量は減りますが画質が落ちます。", "缩放比例": "ズーム比率", "网关": "ゲートウェイ", "网关 Key 数量": "ゲートウェイキー数", "网关尚未就绪": "ゲートウェイの準備ができていません", "网关自带": "ゲートウェイ内蔵", "网关跨域访问已开启": "ゲートウェイの CORS アクセスをオンにしました", "网关跨域访问设置已刷新": "ゲートウェイの CORS アクセス設定を更新しました", "网关跨域访问(CORS)": "ゲートウェイの CORS アクセス(クロスオリジン)", "网关面(/v1/*)默认不应答浏览器跨源请求:页面直连会被预检拦下,只报「无法连接 API」。注意来源是 * —— 未配「网关 Key」时任何网页都能借本机网关打上游,故默认关闭;只给自己用的话,让页面与网关同源(本地反代 /v1)更稳妥。面板接口(/api/*)不受影响。": "ゲートウェイ側(/v1/*)はデフォルトでブラウザーのクロスオリジンリクエストに応答しません:ページから直接接続するとプリフライトで拒否され、「API に接続できません」としか表示されません。許可オリジンが * である点に注意 —— 「ゲートウェイキー」を設定していない場合、どんな Web ページでも本機のゲートウェイ経由でアップストリームへアクセスできてしまうため、デフォルトではオフです。自分の利用だけであれば、ページとゲートウェイを同一オリジンにする(ローカルで /v1 をリバースプロキシする)ほうが安全です。パネルのインターフェース(/api/*)は影響を受けません。", "网络访问": "ネットワークアクセス", "网页端": "Web", "网页端登录 / 注册验证": "Web 版のログイン / 登録時の認証", "网页端的界面缩放由浏览器自己控制(Ctrl + / Ctrl -,或浏览器菜单里的缩放),此项不可调。": "Web 版の UI ズームはブラウザー側で制御します(Ctrl + / Ctrl -、またはブラウザーメニューのズーム)。この項目は調整できません。", "网页端:登录 / 注册需要 ALTCHA 人机验证": "Web:ログイン / 登録に ALTCHA の認証が必要", "网页端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "Web:ログイン / 登録に ALTCHA の認証が必要(現在使用中)", "网页管理地址": "Web 管理アドレス", "群晖 NAS": "Synology NAS", "群晖需在「控制面板 → 应用程序门户 → WebDAV」里启用服务,端口默认 5005(HTTP)/ 5006(HTTPS)。": "Synology では「コントロールパネル → アプリケーションポータル → WebDAV」でサービスを有効にしてください。既定のポートは 5005(HTTP)/ 5006(HTTPS)です。", "脱敏词表": "マスキングルール", "腾讯云 COS": "Tencent Cloud COS", "自动同步": "自動同期", "自动同步上次失败": "前回の自動同期に失敗しました", "自动续写": "自動継続生成", "自定义 User-Agent": "カスタム User-Agent", "自定义 · {name}": "カスタム · {name}", "自定义头匹配规则": "カスタムヘッダールール", "自定义客户端分类": "カスタムクライアント分類", "自定义客户端数量已达上限": "カスタムクライアント数が上限に達しました", "自定义提供商 {id}": "カスタムプロバイダー {id}", "自定义网站和应用界面中显示的名称与 Logo。": "Web サイトとアプリの画面に表示する名前とロゴを変更します。", "自定义识别规则": "カスタム識別ルール", "自愈保护": "自動回復ガード", "至少 12 位": "12 文字以上", "至少 8 位,换机下载时需要": "8 文字以上。別のマシンでの復元時に必要", "至少要保留一个分组": "グループは最低 1 つ必要です", "英语": "英語", "范围 5–120 秒,并受原请求时限约束。": "範囲は 5~120 秒で、元のリクエストの制限時間にも従います。", "范围为 5–120 秒,并受原请求时限约束。图片过大、格式错误或下载失败不会被当作模型不支持图片。": "5~120秒の範囲で指定し、元のリクエストの制限時間も適用されます。画像サイズ超過、形式エラー、ダウンロード失敗は画像非対応として扱いません。", "被更高优先级覆盖": "優先度の高い設定で上書き", "装上{size}的官方身份提示词": "{size}の公式アイデンティティプロンプトを適用", "装成 App 后从桌面图标直接进入:全屏打开、没有地址栏。": "アプリとして入れるとホーム画面のアイコンから直接開けます。全画面・アドレスバーなし。", "覆盖": "上書き", "规则 / 匹配方式": "ルール / 一致方式", "规则可以增删改、启停和调整顺序;替换内容留空表示删除匹配内容。恢复默认只重置词表,不改开关和提供商范围。": "ルールの追加、編集、削除、有効化、無効化、並べ替えが可能です。置換内容が空なら一致部分を削除します。デフォルト復元はルールのみをリセットし、スイッチとプロバイダー範囲は変更しません。", "规则名称": "ルール名", "规则名称不能为空,且最多 {max} 个字符": "ルール名は必須です。{max} 文字以内で入力してください", "规则已保存,对后续请求生效;当前历史记录未修改。": "ルールを保存しました。以後のリクエストに適用され、現在の過去記録は変更されていません。", "规则忽略大小写,只影响新请求的日志与统计,不改变模型选择或权限。": "ルールは大文字・小文字を区別せず、新しいリクエストのログと統計にのみ適用されます。モデル選択や権限は変わりません。", "规则编号:{id}": "ルールID:{id}", "视觉模型": "視覚モデル", "视觉模型先识读图片,再由原模型分析和回答。": "視覚モデルが画像を読み取った後、元のモデルが分析して回答します。", "视觉模型来源": "視覚モデルの指定方法", "视觉模型的思考等级": "視覚モデルの思考レベル", "视觉模型直接回答": "視覚モデルが直接回答", "视觉模型识读图片": "視覚モデルが画像を読み取り", "解码后小于这个体积的图片保持原样。默认 512KB,可填 0–10240;填 0 表示所有内嵌图片都过一遍。": "デコード後のサイズがこの値を下回る画像はそのまま送ります。既定 512KB、0〜10240 で指定できます。0 にするとすべてのインライン画像を処理します。", "解除失败:{message}": "解除に失敗しました:{message}", "触发阈值": "適用しきい値", "计数": "カウント", "计量单位": "表記単位", "让 Codex 在收到最终答案后收起中间过程。仅为严格识别的 Codex Responses 请求补阶段标记,报表归类和来源声明不影响此判断。正常结束且没有工具调用的非空回答才补 final_answer,工具调用前的说明补 commentary;错误、截断、缺少结束信号或未知结束原因不补最终答案标记。默认关闭,不改变回答文字,也不减少模型思考或用量。": "Codex が最終回答を受け取った後、中間の作業を折りたためるようにします。厳密に識別した Codex の Responses リクエストにのみフェーズを補い、レポートの分類やクライアントの自己申告には左右されません。正常終了し、ツール呼び出しのない空でない回答にだけ final_answer を付け、ツール呼び出し前の説明には commentary を付けます。エラー、切り詰め、完了通知の欠落、不明な終了理由には最終回答マーカーを付けません。既定はオフで、回答本文、モデルの推論、使用量は変わりません。", "许可原文": "ライセンス原文", "许可原文已随软件内置,无需联网即可查看;打开项目来源链接需要联网。": "ライセンス原文はアプリに同梱されており、オフラインで閲覧できます。プロジェクトの出典リンクを開くにはインターネット接続が必要です。", "许可核对版本": "ライセンス確認に使用したリビジョン", "设置不可隐藏(隐藏了只能清缓存找回来)": "「設定」は非表示にできません(戻すにはデータの削除が必要になります)", "设置备份密码": "バックアップのパスワードを設定", "设置识别规则": "識別ルールを設定", "访问时请使用目标设备能连接到的地址;这里显示的本机地址不代表公网可达。": "接続元の端末から到達できるアドレスを使用してください。ここに表示されるアドレスは、インターネットからの到達を保証するものではありません。", "识别依据": "識別根拠", "识别规则数量已达上限": "識別ルール数が上限に達しました", "词表为空,不会改写任何指纹。可以新增规则或恢复默认词表。": "ルールが空のためフィンガープリントを変更しません。ルールを追加するかデフォルトに戻してください。", "该提供商暂无可编辑的专属设置": "このプロバイダーには編集可能な固有設定がありません", "详细日志": "詳細ログ", "语言设置": "言語設定", "请先保存设置再同步": "同期する前に設定を保存してください", "请先在 Cloudflare 创建 Turnstile 组件,建议选择 Managed 模式,并添加面板实际使用的域名。": "まず Cloudflare で Turnstile ウィジェットを作成してください。Managed モードを推奨します。パネルで実際に使用するドメインを追加してください。", "请填一个分组名": "グループ名を入力してください", "请填写管理员账号(64 字符以内)": "管理者アカウントを入力してください(64 文字以内)", "请求发出后等待上游响应头的最大时间(秒),默认 300 秒,范围 1~3600。": "リクエスト送出後、アップストリームのレスポンスヘッダーを待つ最大時間(秒)。デフォルト 300 秒、範囲 1~3600。", "请求带有不同软件的标识,未自动归类;可用自定义规则明确归属。": "異なるソフトウェアの識別情報が含まれるため、自動分類しませんでした。カスタムルールで分類先を指定できます。", "请求提供商 / 模型支持": "プロバイダー / モデルの対応をリクエスト", "请求日志保留天数": "リクエストログ保持日数", "请求日志保留数量上限": "リクエストログの保存件数上限", "请求记录": "リクエスト記録", "请求超时": "リクエストタイムアウト", "请求转发到上游失败时(服务器瞬时错误、连接失败,以及 WorkBuddy 的 11-128 敏感词拦截),网关会等一段间隔后再发一次。次数分两档,管的是两件事:①「同一账号重试次数」在同一账号上原地重发几次 —— 一般是提示词被上游拦截、或链路瞬时抖动,等一会儿重发往往就好了;②「切换账号重试次数」这份请求最多再换几个账号试 —— 首发的那个账号不算,每换一个扣一次,不分是不是同一家(换到同一家的下一个账号也算一次),换满还失败就把错误返回给客户端。两项都设为 0 表示失败不重试、直接报错。注意账号级限额(429)不占这里的换号次数 —— 那类失败走「冷却该账号并换下一个账号」的降级,与这里的重试是两条路。另有「指定错误码直接换号」名单(默认 402):命中名单的上游状态码不在同一账号重发,直接按队列换下一个账号继续试(换号也占「切换账号重试次数」),换满仍失败才把错误返回给客户端。": "アップストリームへの転送が失敗した場合(サーバーの一時的なエラー、接続失敗、および WorkBuddy の 11-128 センシティブワードブロック)、ゲートウェイは一定の間隔を置いてからもう一度送信します。回数は 2 系統に分かれ、それぞれ別のことを司ります:①「同一アカウントのリトライ回数」は同じアカウントでそのまま何回再送するか —— 多くはシステムプロンプトがアップストリームでブロックされた、または経路の一時的な揺らぎで、しばらく待って再送すれば直ることがよくあります;②「アカウント切替のリトライ回数」はこのリクエストであと最大何個のアカウントに切り替えて試すか —— 初回のアカウントは含まず、切り替えるたびに 1 回消費し、同じプロバイダーかどうかは問いません(同じプロバイダーの次のアカウントへの切替も 1 回と数えます)。使い切ってもなお失敗する場合はエラーをクライアントへ返します。両方とも 0 にすると、失敗時にリトライせず直接エラーを返します。注意:アカウント単位のレート制限(429)はここの切替回数を消費しません —— その種の失敗は「そのアカウントを冷却して次のアカウントへ」というフォールバックを通り、ここのリトライとは別ルートです。また「指定エラーコードで直接アカウント切替」リスト(デフォルト 402)があります:リストに該当するアップストリームのステータスコードは同一アカウントでの再送を行わず、キューの次のアカウントへ直接切り替えて試行を続けます(切替は「アカウント切替のリトライ回数」を消費します)。使い切ってもなお失敗する場合にのみ、エラーがクライアントへ返されます。", "请求重试": "リクエストリトライ", "请至少选择一个提供商": "プロバイダーを1つ以上選択してください", "请输入同步密码": "同期パスワードを入力してください", "请输入当前密码": "現在のパスワードを入力してください", "请输入服务端密钥": "シークレットキーを入力してください", "请选择可用的标识请求头": "使用可能な識別ヘッダーを選択してください", "请选择归属客户端": "分類先のクライアントを選択してください", "读取云同步设置失败:{message}": "クラウド同期の設定を読み取れませんでした:{message}", "读取失败:{message}": "読み込みに失敗しました: {message}", "读取完整非流式响应体允许的最大时间(秒),默认 300 秒,范围 1~3600。": "非ストリーミングレスポンスボディ全体を読み切るために許される最大時間(秒)。デフォルト 300 秒、範囲 1~3600。", "读取网关信息失败:{message}": "ゲートウェイ情報の読み込みに失敗しました: {message}", "读取远端…": "リモートを読み取り中…", "读取远端信息失败:{message}": "リモート情報の取得に失敗しました:{message}", "调用方声明": "呼び出し元の申告", "调试报文": "デバッグメッセージ", "调试模式": "デバッグモード", "调试模式设置已刷新": "デバッグモード設定を更新しました", "负载均衡": "負荷分散", "账号列表": "アカウント一覧", "账号导入 / 导出": "アカウントのインポート / エクスポート", "账号路由": "アカウントルーティング", "账号页表格的两项显示偏好,只存在本机(localStorage),不影响账号数据与转发。「积分合计只统计当前筛选出来的账号」:账号页每一家的分组带右侧有一枚「可用合计」,默认按整组求和 —— 不受筛选、搜索影响,被筛掉的账号也计入(余额是资产,禁用也只表示不参与转发,额度仍在账上)。打开这一项后改为只累加当前可见的行:例如筛出 1 个 100 积分的账号,合计就是 100,而不是同组两个账号之和 1,000。分页不参与这个口径 —— 翻页看的是同一份结果的不同屏,合计不随页码变化。「隐藏账号名」与表头「账号」旁边那颗眼睛是同一个开关:打开后账号列的名字整体显示成星号,适合截图分享时遮挡账号。": "アカウント一覧表の表示設定です。本機のみ(localStorage)に保存され、アカウントデータや転送には影響しません。「ポイント合計を現在の絞り込み結果のみで計算する」:アカウントページの各プロバイダ帯の右側に「利用可能合計」があります。既定ではグループ全体を合算し、絞り込みや検索の影響を受けず、除外されたアカウントも含まれます(残高は資産であり、無効化は転送に参加しないだけで、ポイントは残ります)。この項目をオンにすると、現在表示中の行だけを合算します。たとえば 100 ポイントのアカウント 1 件に絞り込むと合計は 100 になり、同じグループの 2 件の合計 1,000 にはなりません。ページ送りはこの計算に含まれません。ページは同じ結果を別の画面で見ているだけなので、ページを変えても合計は変わりません。「アカウント名を隠す」は表の「アカウント」列の横にある目のアイコンと同じスイッチです。オンにするとアカウント列の名前がアスタリスクで表示され、スクリーンショットの共有時に隠せます。", "账户": "アカウント", "超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件。把天数改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。可填范围为 1–3650 天。请求日志 / 按天聚合 / 签到记录已全量保留、不再自动删除,要清历史请到对应页面手动清空。": "保存期間を超えた部分は削除されます:イベントログはログイン、アカウント切替、429 切替といったシステムイベントです。日数を小さくして(例:30 日→7 日)保存すると、超えた履歴データは即座に削除され、元に戻せません。大きくするか変更しない場合は何も削除されません。設定できる範囲は 1〜3650 日です。リクエストログ / 日次集計 / チェックイン記録は全量保持となり自動削除されません。履歴を消すには、それぞれのページで手動でクリアしてください。", "超出的历史数据会被立即删除,且不可恢复。": "超過した履歴データはすぐに削除され、元に戻せません。", "超时": "タイムアウト", "超时设置已刷新": "タイムアウト設定を更新しました", "跟随模型配置": "モデル設定に従う", "跟随系统 · 浅色 · 深色": "システム · ライト · ダーク", "跟随默认": "デフォルトに従う", "跨域访问": "CORS", "路由": "ルーティング", "路由组只使用组内成员;普通路由只使用参与范围内的账号和模型。": "ルートグループはグループ内のメンバーのみを使用し、通常のルートは参加範囲内のアカウントとモデルのみを使用します。", "路由设置已刷新": "ルーティング設定を再読み込みしました", "跳过 {n} 个": "スキップ {n} 件", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;负载均衡是每条请求换下一位,把负载摊到各个账号上。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时)、被 429 的账号垫底排到队尾 30 分钟、余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 前两层可以在下面按需开关,限制器由账号的「限制器」设置管。": "リクエストの転送時にアカウントをどんな順で選ぶか:①「ルーティング戦略」が並びの規則を決めます —— 順序優先は 1 番手が答えられなくなる(レート制限 / 障害 / 枠切れ)まで全リクエストを受け持ち、そこで次に回ります。負荷分散はリクエストごとに次のアカウントへ回し、負荷を各アカウントに分散します。②「セッション粘着」は同じセッション(同じモデル + 同じ冒頭メッセージ)をできるだけ同じアカウントにひも付けます —— 連続対話ではアップストリームのコンテキストキャッシュを再利用でき、アカウントの切り替えも浪費も減ります。自動は 5 分、セッション単位は 6 時間粘着し、毎ターンとオフは粘着しません。アカウントの並び順(アカウント表の 1 列目)はどの戦略でも土台で、戦略はその上に重なります。さらにルーティングには 3 つの自動回復ガードがあります:転送に失敗したアカウントはしばらく退避し(15 分から始まり失敗のたびに倍増、上限 1 時間)、枠が残ったまま 429 を受けたアカウントは 30 分間最後尾へ回り、枠切れ / 期間トークン上限に達したアカウントはリミッターに止められます —— 前の 2 つは下で必要に応じてオン / オフでき、リミッターは各アカウントの「リミッター」設定に従います。", "转发前压缩对话里内嵌的大图(只改发给上游的副本,生图与图片编辑不受影响)": "転送前に会話へ埋め込まれた大きな画像を圧縮(変更されるのは上流へ送るコピーだけ。画像生成と画像編集には影響しません)", "转发前将 developer 角色消息转换为 system,兼容不支持 developer 角色的 OpenAI 兼容上游": "転送前に developer ロールのメッセージを system に変換し、developer ロール非対応の OpenAI 互換アップストリームにも対応", "转发失败的账号休息一会儿再回来:15 分钟起步,连续失败翻倍,封顶 1 小时;成功一次立即恢复。目的是「让这次失败先凉一会儿」,免得一条条地反复撞同一个坏账号。": "転送に失敗したアカウントはしばらく休んでから戻ります:初回 15 分、連続失敗で倍増、上限 1 時間。1 回成功すれば即復帰。「いったん失敗を冷ます」ためのもので、同じ不調アカウントにリクエストを連打しないための仕組みです。", "转发链路": "転送経路", "轮询间隔": "ポーリング間隔", "软件标识超过 1 KB,已截断保存;匹配仅使用保留部分。": "ソフトウェア識別情報が1 KBを超えたため切り詰めて保存しました。一致判定には保存部分のみを使用します。", "软件版本": "ソフトウェアバージョン", "轻量模式": "軽量モード", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 套餐池(Start Plan)通道不可用,相关请求会在请求日志里注明原因": "軽量モードが有効です:ウィンドウを閉じると UI プロセスを破棄し(約 200MB のメモリを解放)、ゲートウェイはバックグラウンドで継続します。UI が破棄されている間、ZCode プランプール(Start Plan)経路は利用できず、該当リクエストはリクエストログに理由が記録されます", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 活动套餐通道不可用,相关请求会在请求日志里注明原因": "軽量モードがオン:ウィンドウを閉じると UI プロセスを破棄し(約 200MB のメモリを解放)、ゲートウェイはバックグラウンドで継続します。UI 破棄期間中は ZCode アクティブプランチャネルは利用できず、該当するリクエストは理由がリクエストログに記録されます", "轻量模式(关窗释放界面内存)": "軽量モード(閉じると UI のメモリを解放)", "辅助识图": "補助画像読み取り", "辅助识图 · 原模型回答": "補助読み取り · 元のモデルが回答", "辅助识图保留原模型回答;切换视觉模型会让视觉模型直接回答。本次授权也包含已设置的模型单独配置。": "補助読み取りでは元のモデルが回答し、モデル切り替えでは視覚モデルが直接回答します。この許可には設定済みのモデル別設定も含まれます。", "辅助识图或切换视觉模型,默认关闭": "補助画像読み取り・視覚モデル切り替え(デフォルト無効)", "辅助识图配置": "補助画像読み取り設定", "输入同步密码": "同期パスワードを入力", "输入当前登录用的密码": "現在のログインパスワードを入力", "输入状态码,回车添加": "ステータスコードを入力し、Enter で追加", "运行形态": "実行形態", "近期没有命中样本,不代表未来请求不会命中。": "最近の一致サンプルはありませんが、今後のリクエストが一致する可能性はあります。", "还原": "元に戻す", "还有额度时被 429 的账号排到队尾,30 分钟后自动回到队列(成功转发一次也会立即回来)。它标记的是「疑似共享池被别人抢」,不是「这个账号本身有问题」。⚠️ 注意它与路由策略的配合:在「家内轮询」下,队尾意味着这一家整体被往后排 —— 如果某个提供商的账号被批量限流,它们会集体沉到队尾,那个家可能长时间轮不到。这时可以关掉本项,让 429 过的账号只受冷却约束(冷却到点自动回来)。": "枠が残っているのに 429 を食らったアカウントは最後尾に回り、30 分後に自動復帰します(1 回でも転送が成功すればすぐ戻る)。これは「共有プールを他の人に取られている疑い」を示すもので、「このアカウント自体の問題」ではありません。⚠️ ルーティング戦略との組み合わせに注意:「プロバイダー内ローテーション」では最後尾 = プロバイダーごと後ろへ回ることを意味します —— あるプロバイダーのアカウントがまとめてレート制限されると全員が最後尾に沈み、そのプロバイダーが長く回ってこない可能性があります。その場合は本項をオフにして、429 済みアカウントをクールダウンだけに任せるとよいでしょう(時間が来れば自動で戻ります)。", "还没有可用的视觉模型。": "利用できる視覚モデルがまだありません。", "还没有同步过。": "まだ同期していません。", "还没有添加服务器。点右上角「添加」,填入网关所在机器的 IP 或域名与端口。": "サーバーがまだありません。右上の「追加」から、ゲートウェイが動作するマシンの IP またはドメインとポートを入力してください。", "还没有装载任何数据。": "まだデータが読み込まれていません。", "还没有读到版本信息": "バージョン情報をまだ読み込んでいません", "还没有选择模型,这块设置暂时不起作用。": "モデルが未選択のため、このブロックは今のところ何も行いません。", "这一份就是「替换 / 追加」模式下网关要发的 system 正文。": "これが「置換 / 追加」モードでゲートウェイが送信する system の本文です。", "这一项已隐藏": "この項目は非表示です", "这一项正在显示": "この項目は表示中です", "这些模型的请求交给当前路由内可用的视觉模型回答,不再回到原模型。": "これらのモデルへのリクエストは、現在のルート内で使える視覚モデルが元のモデルの代わりに回答します。", "这些模型看到图片时,先把图片交给 {model} 读一遍,再由它们自己结合读到的内容回答。": "これらのモデルが画像を受け取ると、まず {model} に読ませ、読み取った内容を踏まえて元のモデルが回答します。", "这些模型看到图片时,先把图片交给「沿用工具服务的视觉分析模型」读一遍,再由它们自己结合读到的内容回答。": "これらのモデルが画像を受け取ると、まずツールサービス側の視覚モデルに読ませ、読み取った内容を踏まえて元のモデルが回答します。", "这只模型只负责看图,最终仍由原模型回答。": "このモデルは画像を読むだけで、最終的な回答は元のモデルが行います。", "这只模型直接接收图片与对话,完成本次回答。": "このモデルが画像と会話を直接受け取り、今回の回答を行います。", "这台网关未启用机器人校验": "このゲートウェイではボット確認が無効です", "这台网关没有管理员,用一把已启用的 API Key 访问。": "このゲートウェイには管理者がいません。有効な API Key でアクセスしてください。", "这条历史请求没有保存识别依据,不能据此自动创建规则。": "この過去のリクエストには識別根拠が保存されていないため、自動でルールを作成できません。", "这条规则已被删除,请关闭编辑后重新添加。": "このルールは削除されました。編集画面を閉じて追加し直してください。", "这里只列出已保存的提供商配置;未配置的提供商沿用全局设置,可从下拉框手动添加。用户保存的模式、文件和正文优先于全局设置,「跟随默认」只取消该提供商的模式、文件和正文覆盖。ZCode 套餐池默认由插件按三块装配,客户端系统正文合入第三块,不会自动创建替换规则;手动修改的网关提示词段或关闭开关仍以用户配置为准,能否被接受取决于上游规则。": "保存済みのプロバイダー設定だけを表示します。未設定のプロバイダーは全体設定に従い、ドロップダウンから手動で追加できます。保存したモード・ファイル・本文は全体設定より優先されます。「デフォルトに従う」は、そのプロバイダーのモード・ファイル・本文の上書きだけを解除します。ZCode の Start Plan は既定でプラグインが 3 ブロックを組み立て、クライアントの system 本文を第 3 ブロックにまとめます。置換ルールは自動作成しません。手動で編集したゲートウェイのプロンプト段や組み立てスイッチのオフ設定はそのまま優先され、受け付けられるかは上流のルール次第です。", "进程 PID": "プロセス PID", "远程根目录": "リモートのルートディレクトリ", "远端同一路径下的旧快照。事件日志、请求明细与调试报文不会上传。": "同じリモートパスにある古いスナップショットを上書きします。イベントログ・リクエスト明細・デバッグ通信記録はアップロードされません。", "远端已有一份快照,将被覆盖": "リモートに既存のスナップショットがあり、上書きされます", "远端快照使用了另一把账号密钥,但没有携带密钥文件,无法在本机解密。请在原来那台机器上重新上传一次。": "リモートのスナップショットは別のアカウントキーを使用していますが、キーファイルが含まれていないため本機では復号できません。元のマシンからもう一度アップロードしてください。", "远端快照使用的账号密钥与本机不同。请输入上传那台机器设置的同步密码,用它解出密钥装到本机后再继续下载。": "リモートのスナップショットは本機と異なるアカウントキーを使用しています。アップロードしたマシンで設定した同期パスワードを入力し、キーを復号して本機に導入してからダウンロードを続けてください。", "远端数据与当前版本不兼容": "リモートのデータは現在のバージョンと互換性がありません", "远端该路径下还没有快照,本次是首次上传。": "そのリモートパスにはまだスナップショットがありません。今回が初回のアップロードです。", "远端路径:{path}": "リモートパス:{path}", "远端还没有可下载的同步数据": "リモートにダウンロード可能な同期データがありません", "连不上这台网关。确认地址与端口正确、网关已启动,且已开启「局域网访问」;用 https 时还要确认证书有效": "このゲートウェイに接続できません。アドレスとポートが正しいこと、ゲートウェイが起動していること、「LAN アクセス」が有効なことを確認してください。https の場合は証明書が有効かも確認してください。", "连不上这台网关。请确认地址、端口与防火墙设置,网关需已启动;桌面端请在「设置 → 网关 → 网络访问」开启「允许其他设备访问网关」。使用 HTTPS 时还需确认证书有效。": "このゲートウェイに接続できません。アドレス、ポート、ファイアウォールの設定とゲートウェイの起動状態を確認してください。デスクトップ版では「設定 → ゲートウェイ → ネットワークアクセス」で「他の端末からゲートウェイへのアクセスを許可」を有効にしてください。HTTPS を使う場合は証明書の有効性も確認してください。", "连接中超时": "接続タイムアウト", "连接失败:{message}": "接続に失敗しました:{message}", "连续失败到阈值后把这个账号整个打开(默认关)。与失败退避的分工:退避管「单次失败先凉一会儿」,惩罚轻、自动恢复;熔断管「这个账号现在整体不对劲,别再一条条地试」,要连续成功若干次才关。打开期间该账号被跳过,除非全场只剩它 —— 那时仍放行试一次。": "連続失敗がしきい値に達したらアカウント全体を切り離します(既定はオフ)。失敗バックオフとの役割分担:バックオフは「1 回の失敗をいったん冷ます」軽い罰で自動復帰、サーキットブレーカーは「このアカウントは全体としておかしい、1 件ずつ試すのはやめよう」で、連続成功が数回続かないと閉じません。開いている間そのアカウントはスキップされますが、他に使えるものがなければ 1 回だけ試します。", "追加": "追加", "追加网关提示词": "ゲートウェイのシステムプロンプトを追加", "退出失败:{message}": "ログアウトに失敗しました:{message}", "退出登录": "ログアウト", "退出这台服务器的登录,不影响其他服务器": "このサーバーのみログアウトします。他への影響はありません", "选好接管回答的视觉模型后这块设置才会生效。": "回答を引き継ぐ視覚モデルを選ぶとこのブロックが有効になります。", "选好视觉模型后这块设置才会生效。": "視覚モデルを選ぶとこのブロックが有効になります。", "选定提供商": "選択したプロバイダー", "选择一个或多个模型": "1 つ以上のモデルを選択", "选择位置并加密备份": "保存先を選択して暗号化バックアップ", "选择备份文件并恢复": "バックアップファイルを選んで復元", "选择提供商(可多选)": "プロバイダーを選択(複数可)", "选路规则": "選択ルール", "选项与默认值由已启用插件提供;你保存的覆盖值不会被插件更新替换。": "有効なプラグインが項目と既定値を提供します。プラグインの更新で保存済みの設定が上書きされることはありません。", "选项与默认值由插件提供,你保存的修改不会被插件更新覆盖。切换提供商不会丢失未保存的修改。": "設定項目と既定値はプラグインが提供します。保存した変更はプラグイン更新で上書きされません。プロバイダーを切り替えても未保存の編集は保持されます。", "透传": "パススルー", "透传客户端 system": "クライアントの system をパススルー", "透传客户端 system(默认)": "クライアントの system をパススルー(デフォルト)", "通常是网络问题,点右侧重试": "多くはネットワークの問題です。右の再試行を押してください", "通用": "一般", "遇到 Bug、报错或异常行为": "Bug、エラー、異常動作が発生した場合", "配置目录下的 agent2api.db(账号、日志、请求记录、调试报文与设置都在里面)。": "設定ディレクトリ配下の agent2api.db(アカウント、ログ、リクエスト記録、デバッグメッセージ、設定がすべて入っています)。", "采用本规则": "このルールを適用", "重启后生效,不影响当前操作": "再起動で反映されます。作業中の内容には影響しません", "重命名": "名前を変更", "重命名只更新分类显示名,不拆分历史用量,也不重新归类历史请求。": "名前の変更は分類の表示名のみを更新します。過去の使用量を分割したり、リクエストを再分類したりしません。", "重命名客户端分类": "クライアント分類の名前を変更", "重复清理": "繰り返し削除", "重复清理直到不再变化(仅正则删除)": "変化がなくなるまで繰り返す(正規表現の削除のみ)", "重新读取会替换当前未保存的草稿。": "再読み込みすると、現在の未保存の下書きが置き換えられます。", "重新读取设置": "設定を再読み込み", "重编码质量": "再エンコード品質", "重置会清空管理员账号与密码,面板将回到「未注册」状态。": "リセットすると管理者アカウントとパスワードが消去され、パネルは「未登録」状態に戻ります。", "重置管理员": "管理者のリセット", "重试设置已刷新": "リトライ設定を更新しました", "重试间隔": "リトライ間隔", "铸造守卫每隔多久看一次库存(毫秒)。只影响发现缺货的反应速度 —— 库存够用时轮询不会铸造任何令牌。默认 2500 毫秒,可填 1000–30000。": "発行ガードが在庫を何ミリ秒ごとに確認するか。品切れの検知速度にだけ影響します —— 在庫が足りているときはポーリングしても何も発行しません。既定 2500 ミリ秒、1000–30000 を指定可。", "长边像素上限": "長辺の上限(ピクセル)", "问题反馈": "問題のフィードバック", "阿里云 OSS": "Alibaba Cloud OSS", "限流中账号": "レート制限中のアカウント", "随包内嵌的快照(发版时的那份)": "アプリ同梱のスナップショット(リリース時のもの)", "隐藏 {name}": "{name} を非表示", "隐藏分组 {name}": "グループ {name} を非表示", "隐藏用户名": "ユーザー名を隠す", "隐藏账号名(显示成星号)": "アカウント名を隠す(アスタリスク表示)", "隐藏这一组": "このグループを非表示", "非流式响应超时": "非ストリーミング応答タイムアウト", "面板登录": "パネルログイン", "面板端口": "パネルポート", "面板管理员账号": "パネル管理者アカウント", "韩语": "韓国語", "项目来源": "プロジェクトの出典", "预览不发送模型请求,也不修改历史记录。": "プレビューはモデルを呼び出さず、過去の記録も変更しません。", "预览中…": "プレビュー中…", "预览匹配": "一致結果をプレビュー", "预设": "プリセット", "首选不可用时再依次尝试备选。": "第一候補が使えないときは、バックアップを順に試します。", "首选不可用时再依次尝试;留空则停止并说明原因。": "第一候補が使えないときに順に試します。空にすると停止して理由を説明します。", "验证方式": "認証方式", "验证码令牌池": "CAPTCHA トークンプール", "验证码令牌池设置已刷新": "CAPTCHA トークンプール設定を再読み込みしました", "验证码库存的参考目标,默认 3 个,可填 1–10。只影响库存状态展示,不会因为低于目标自动生成令牌或弹出验证码。": "在庫表示の目安です。既定は 3、範囲は 1~10 です。表示のみに影響し、目標未満でもトークンを自動生成したり認証画面を開いたりしません。", "高级设置": "詳細設定", "默认 10000 条,按日志级别分配保留容量,超出后清理最旧的记录;同时受保留天数限制。": "既定は 10000 件です。ログレベルごとに容量を配分し、超過分は古い記録から削除します。保存日数の制限も適用されます。", "默认 1000000 条(100 万),超出后清理最旧的请求记录及其原始正文,不影响按天聚合报表;同时受保留天数限制。": "既定は 1000000 件(100 万件)です。超過分は古いリクエスト記録と元の本文から削除し、日次集計レポートには影響しません。保存日数の制限も適用されます。", "默认 5 分钟。间隔内的变化合并为最新快照,到期后上传;手动上传不受限制。失败后会延长等待并自动重试。": "既定は 5 分です。待機中の変更は最新のスナップショットにまとめ、間隔が経過してからアップロードします。手動アップロードは制限されません。失敗時は待機時間を延ばして自動再試行します。", "默认仅本机可访问(127.0.0.1)。开启后监听所有 IPv4 网卡(0.0.0.0),访问范围由网络与防火墙决定,不限于局域网,也不会自动开放到公网。开启前必须注册面板管理员;管理接口需要管理员会话或网关 Key,API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。「同时开放网页管理面板」默认关闭,开启后可从其他设备的浏览器登录管理;关闭它不影响 API 转发和本机桌面管理。修改任一开关都需要重启应用。": "既定では本機のみからアクセスできます(127.0.0.1)。有効にするとすべての IPv4 インターフェース(0.0.0.0)で待ち受け、アクセス範囲はネットワークとファイアウォールで決まります。LAN 限定ではなく、インターネットへの自動公開もしません。事前にパネル管理者の登録が必要です。管理 API には管理者セッションまたはゲートウェイキー、API 呼び出しには有効なゲートウェイキーが必要で、なければデフォルトキーを自動作成します。Web 管理パネルは既定で無効です。有効にすると他の端末のブラウザーからログインして管理できます。無効にしても API 転送と本機での管理には影響しません。どちらのスイッチも変更にはアプリの再起動が必要です。", "默认值通常够用,出问题时才需要调": "既定値でたいてい足ります。問題が出たときだけ調整してください", "默认关闭。开启后下一次 Codex 请求立即生效,不用重启;只对 Codex 来源的 /v1/responses 请求补阶段标记,其它客户端与 /v1/chat/completions 不受影响。": "デフォルトはオフ。有効にすると次回の Codex リクエストから再起動なしで反映されます。フェーズマーカーは Codex 由来の /v1/responses リクエストにのみ補われ、その他のクライアントと /v1/chat/completions は影響を受けません。", "默认关闭。改动立即生效,不用重启;关闭期间的跨源请求会被预检拦下。": "デフォルトはオフ。変更は即時有効で再起動は不要です。オフの間のクロスオリジンリクエストはプリフライトで拒否されます。", "默认关闭窗口不会退出程序,而是把窗口缩到系统托盘,转发继续在后台运行(OpenAI 客户端不受影响);要彻底退出程序,请在托盘图标上右键选「退出」。关掉这个开关后,点关闭按钮即退出程序、转发随之中断。「开机自动启动」开启后,登录系统时会自动启动本程序(通常直接驻留托盘),不需要手动打开。": "デフォルトでは、ウィンドウを閉じてもプログラムは終了せず、ウィンドウがシステムトレイに縮小され、転送はバックグラウンドで継続します(OpenAI クライアントは影響を受けません)。プログラムを完全に終了するには、トレイアイコンを右クリックして「終了」を選んでください。このスイッチをオフにすると、閉じるボタンを押した時点でプログラムが終了し、転送も中断されます。「自動起動」をオンにすると、システムへのログイン時に本プログラムが自動起動します(通常はそのままトレイに常駐します)。手動で開く必要はありません。", "默认应用全部提供商(包含之后新增的插件与自定义提供商)。指定范围后,未选中的提供商不做指纹脱敏;清空选择自动回到全部提供商。": "デフォルトでは今後追加するプラグインとカスタムプロバイダーを含むすべてに適用します。範囲を指定すると未選択のプロバイダーは処理しません。選択を空にするとすべてに戻ります。", "默认开启。只改 role 字段本身,消息内容与顺序都不动;本项只改发给上游的副本,客户端看到的响应内容不变。": "デフォルトは有効。role フィールドだけを書き換え、メッセージの内容と順序はそのまま。送信する副本だけが対象で、クライアントが見る応答は変わりません。", "默认开启。只改发给上游的副本,客户端看到的响应与原图都不变;请求日志里保存的是客户端发来的原图,不是压缩后的版本。只作用在对话链路,生图 / 图片编辑不经过这里。改完对下一个请求立即生效,不用重启。": "既定では有効です。変更されるのは上流へ送るコピーだけで、クライアントが見る応答と原画像は変わりません。リクエストログに保存されるのはクライアントが送った原画像で、圧縮後のものではありません。チャット経路のみに作用し、画像生成と画像編集はここを通りません。変更は次のリクエストから有効で、再起動は不要です。", "默认开启。命中明细会记进请求日志的「敏」标签(悬停可看命中了哪几条规则)。本项只改发给上游的副本,客户端看到的响应内容不变。": "デフォルトはオン。ヒットした明細はリクエストログの「敏」タグに記録されます(ホバーするとどのルールにヒットしたか確認できます)。本項目はアップストリームへ送るコピーのみを変更し、クライアントが見るレスポンス内容は変わりません。", "默认开启并应用全部提供商。编辑词表或应用范围后点击「保存设置」,下一次请求立即生效,不用重启。命中明细仍记进请求日志的「敏」标签。": "デフォルトで有効、すべてのプロバイダーに適用します。ルールや適用範囲を編集して「設定を保存」を押すと再起動なしで次のリクエストから有効です。一致情報は引き続きリクエストログのマスキングタグに記録します。", "默认网关只监听 127.0.0.1,只有本机能访问。开启后网关改听所有网卡,同一局域网内的设备可以把 API 地址指向本机 IP 一起使用。出于安全考虑,开启前必须先注册一个面板管理员:管理接口从此要求管理员会话或网关 Key,模型额度不会对局域网裸奔;一把启用的网关 Key 都没有时,转发接口也会拒绝服务,直到创建第一把。改动需要重启应用生效。「同时开放网页管理面板」把管理界面也出给局域网(其他设备的浏览器打开本机 IP 即可管理),默认关闭 —— 桌面端的面板仍只由本程序自己出。": "デフォルトでは、ゲートウェイは 127.0.0.1 のみで待ち受け、本機からのみアクセスできます。オンにするとゲートウェイはすべてのネットワークアダプターで待ち受けるようになり、同じ LAN 内のデバイスは API アドレスを本機の IP に向けて一緒に利用できます。セキュリティ上の理由から、オンにする前にまずパネル管理者を登録する必要があります:管理インターフェースは管理者セッションまたはゲートウェイキーを要求するようになり、モデルのクォータが LAN に無防備に晒されることはありません。有効なゲートウェイキーが 1 つもない場合、最初の 1 つを作成するまで転送インターフェースもサービスを拒否します。変更の反映にはアプリの再起動が必要です。「Web 管理パネルも同時に公開」は管理画面も LAN に公開します(他のデバイスのブラウザーで本機の IP を開けば管理できます)。デフォルトはオフ —— デスクトップ版のパネルは引き続き本プログラム自身のみが提供します。", "({n} 个整组隐藏)": "({n} グループを非表示)", "({n} 行)": "({n} 行)", "({n} 项被覆盖)": "({n} 項目を上書き)", "(全部为默认值)": "(すべてデフォルト値)", "(官方原文)": "(公式原文)", "(已存一份正文,{n} 行;切成「替换 / 追加」后生效)": "(本文を保存済み、{n} 行。「置換 / 追加」に切り替えると有効になります)", "(已改)": "(変更済み)", "(已注册过会跳过这一步,直接生效)。": "を登録する必要があります(登録済みの場合はこの手順をスキップし、そのまま有効になります)。", "(当前生效的就是这一份,{n} 行)": "(現在有効なのはこの本文、{n} 行)", "(文件:{path})": "(ファイル:{path})", "(未生效)": "(未適用)", ",{items}": "、{items}", ",{time}": "、{time}", ",以及代理池 / 订阅里可能存在的代理凭据。请使用只有你能访问的私有存储;账号密钥由同步密码单独加密,泄露存储本身不等于泄露账号。": "、およびプロキシプール / サブスクリプションに存在しうるプロキシ認証情報が含まれます。自分だけがアクセスできるプライベートなストレージを使用してください。アカウントキーは同期パスワードで別途暗号化されているため、ストレージが漏れてもアカウントが漏れるわけではありません。", ",包括恢复后需要重新登录管理面板。": "まるごと置き換えられます。復元後は管理パネルへの再ログインが必要です。", ",可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "、そのままログインに使用できます。厳重に保管し、第三者に渡したり公共の場所へアップロードしたりしないでください。", ",文件里后续的改动在清空这里之前不再生效": "。ファイル側の以降の変更はここをクリアするまで有効になりません", ",替换前的数据已备份为 {name}": "、置き換え前のデータは {name} としてバックアップ済みです", ",自定义提供商新增 {added} 个、更新 {updated} 个": "、カスタムプロバイダーは新規 {added} 件、更新 {updated} 件", ";开关关闭时词表不执行": ";無効時はルールを実行しません", ";网页管理面板已一并开放(浏览器打开同一地址)": ";Web 管理パネルも併せて公開されています(ブラウザーで同じアドレスを開いてください)" }); diff --git a/desktop-tauri/ui/i18n/ko/requests.js b/desktop-tauri/ui/i18n/ko/requests.js index 0f2c6947..400721fc 100644 --- a/desktop-tauri/ui/i18n/ko/requests.js +++ b/desktop-tauri/ui/i18n/ko/requests.js @@ -1,2 +1,2 @@ /* Agent2API 词典构建产物:ko/requests —— 由 desktop-tauri/i18n/build.mjs 生成,请勿手改;源头是 i18n-src/*.json */ -window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { " · {n} 进行中": " · {n} 처리 중", " · 会话粘住": " · 세션 고정", "
    无响应原文
    ": "
    응답 원문 없음
    ", "
    无法解析响应内容
    ": "
    응답 내용을 파싱할 수 없음
    ", "
    无法解析请求体(不是含 messages 数组的 JSON)
    ": "
    요청 본문을 파싱할 수 없음(messages 배열을 포함한 JSON이 아님)
    ", "
    无请求原文
    ": "
    요청 원문 없음
    ", "
    调用工具 {name}
    ": "
    도구 호출 {name}
    ", "响应原文": "응답 원문", "思考过程": "사고 과정", "请求原文": "요청 원문", "HTTP {status},但响应体阶段出错": "HTTP {status}이지만 응답 본문 단계에서 오류 발생", "HTTP {status},但响应体阶段出错:见错误列": "HTTP {status}이지만 응답 본문 단계에서 오류 발생: 오류 열 참조", "{duration} / 首帧 {first}": "{duration} / 첫 프레임 {first}", "{m}分{s}秒": "{m}분 {s}초", "{n}秒": "{n}초", "{s}秒{ms}ms": "{s}초{ms}ms", "↻ {n} 次": "↻ {n}회", "↻ 重试 {n} 次": "↻ 재시도 {n}회", "✅ 压缩完成": "✅ 압축 완료", "「仅看进行中」开启时,状态固定为进行中": "「처리 중만 보기」가 켜져 있으면 상태는 처리 중으로 고정됩니다", "上游模型繁忙,请求已排进上游队列;网关正按上游建议的时长等待后重发(不是登录态或额度问题)": "업스트림 모델이 혼잡하여 요청이 업스트림 대기열에 들어갔습니다. 게이트웨이는 업스트림이 권장한 시간만큼 기다린 뒤 다시 전송합니다(로그인 상태나 할당량 문제가 아닙니다)", "上游没有返回积分消耗": "업스트림이 포인트 사용량을 반환하지 않았습니다", "上游状态码: {status}": "업스트림 상태 코드: {status}", "上游请求已发出,正在等第一个字节到达(模型的思考时间也在这段)": "업스트림 요청을 보냈고 첫 바이트가 도착하기를 기다리는 중입니다(모델의 사고 시간도 이 구간에 포함됩니다)", "上游返回错误": "업스트림이 오류를 반환했습니다", "下游请求的模型:{model}": "다운스트림 요청 모델: {model}", "仅清空报文原文": "원문만 비우기", "仅看进行中": "처리 중만 보기", "令牌": "Token", "体积": "크기", "保留 {count} 条请求记录 · 将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "요청 기록 {count}건 유지 · 업스트림 {upstream}건, 다운스트림 본문 {downstream}건 삭제 · DB 크기 {db}", "保留 {count} 条请求记录;将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。用量统计与报表不变。": "요청 기록 {count}건을 유지하고 업스트림 디버그 페이로드 {upstream}건과 다운스트림 본문 {downstream}건을 삭제합니다. 사용량 통계와 보고서는 변경되지 않습니다.", "保留统计行与报表,只抹掉请求 / 响应正文。清理后详情弹窗的「预览对话」将无原文可看,统计数字分毫不动。": "통계 행과 리포트는 유지하고 요청 / 응답 본문만 지웁니다. 정리 후 상세 대화상자의 「대화 미리보기」에서는 볼 원문이 없어지고, 통계 수치는 전혀 변하지 않습니다.", "保留请求记录、用量统计与报表,同时清理上游调试报文和下游请求 / 响应正文。清理后「预览对话」与「原始报文」不再保留原文。有筛选时只清理命中请求的报文;无筛选时清空两侧全部报文。此操作无法恢复。": "요청 기록, 사용량 통계 및 보고서를 유지하면서 업스트림 디버그 페이로드와 다운스트림 요청 / 응답 본문을 삭제합니다. 정리 후 대화 미리보기와 원시 페이로드에 원문이 남지 않습니다. 필터가 있으면 일치하는 요청의 페이로드만, 필터가 없으면 양쪽의 모든 페이로드를 삭제합니다. 이 작업은 되돌릴 수 없습니다.", "全部删除": "모두 삭제", "全部提供商": "모든 제공자", "全部模型": "모든 모델", "全部状态": "모든 상태", "全部请求数据": "전체 요청 데이터", "共 {images} 张图片,复用 {cached} 张识读结果": "이미지 {images}개, 읽기 결과 {cached}개 재사용", "共 {n} 次尝试": "총 {n}회 시도", "共 {n} 次尝试,最终由 {provider} 承载": "총 {n}회 시도, 최종적으로 {provider}에서 처리됨", "其它": "기타", "内容按原样保存,请求头中的凭据字段已替换为 [redacted]": "내용은 원본 그대로 저장되며, 요청 헤더의 자격 증명 필드는 [redacted]로 대체되었습니다", "内部重试": "내부 재시도", "切换路径:": "전환 경로: ", "列表数据已刷新,请重试(关闭后重新打开这条详情)": "목록 데이터가 갱신되었습니다. 다시 시도하세요(닫은 후 이 상세를 다시 열어 주세요)", "删除日志记录本身。当前有筛选时只删命中的条目,按天聚合报表不受影响;无筛选时清空全部并重置报表。此方式无法恢复。": "로그 레코드 자체를 삭제합니다. 현재 필터가 있으면 적중한 항목만 삭제하며 일별 집계 리포트는 영향을 받지 않습니다. 필터가 없으면 전부 비우고 리포트를 초기화합니다. 이 방식은 복구할 수 없습니다.", "删除请求记录,并同步清理对应的上游调试报文与下游正文。有筛选时只删除命中的记录,按天聚合报表不受影响;无筛选时清空全部并重置报表。此操作无法恢复。": "요청 기록과 해당 업스트림 디버그 페이로드 및 다운스트림 본문을 함께 삭제합니다. 필터가 있으면 일치하는 기록만 삭제하고 일별 보고서는 유지합니다. 필터가 없으면 모두 삭제하고 보고서를 초기화합니다. 이 작업은 되돌릴 수 없습니다.", "压缩中…": "압축 중…", "压缩失败:{message}": "압축 실패: {message}", "压缩已在后台开始,完成后会自动提示": "압축이 백그라운드에서 시작되었습니다. 완료되면 자동으로 알려드립니다", "压缩已在进行中": "압축이 이미 진행 중입니다", "压缩已在进行中,接上它的进度等待完成": "압축이 이미 진행 중입니다. 기존 진행 상황에 이어 완료를 기다립니다", "压缩数据库": "DB 압축", "压缩正在后台执行,完成后自动恢复": "압축이 백그라운드에서 실행 중입니다. 완료되면 자동으로 복원됩니다", "原始报文": "원시 페이로드", "原模型": "원래 모델", "另有 {missing} 次尝试未记录明细(只保留最早的 {kept} 条)": "그 외 {missing}회 시도는 상세가 기록되지 않았습니다(가장 이른 {kept}건만 보관)", "另有 {n} 个词命中": "그 외 {n}개 단어 적중", "只显示正在转发中的请求(状态列按阶段显示:连接中 / 等待响应 / 响应中 / 重试中,用时列显示已用时)": "포워딩 중인 요청만 표시합니다(상태 열은 단계별로 표시: 연결 중 / 응답 대기 / 응답 중 / 재시도 중, 소요 시간 열은 경과 시간 표시)", "只看失败": "실패만 보기", "只看成功": "성공만 보기", "只看进行中": "처리 중만 보기", "命中了敏感词": "민감 단어 적중", "命中的敏感词": "적중한 민감 단어", "响应中": "응답 중", "响应体": "응답 본문", "响应头": "응답 헤더", "回收已删除数据占用的磁盘空间(checkpoint + VACUUM,后台执行)": "삭제된 데이터가 차지한 디스크 공간 회수(checkpoint + VACUUM, 백그라운드 실행)", "图片处理用时:{n} 秒": "이미지 처리 시간: {n}초", "在设置 → 通用里开启「调试模式」后,新发生的请求才会保存报文": "설정 → 일반에서 「디버그 모드」를 켜야 새로 발생하는 요청부터 페이로드가 저장됩니다", "在路由页查看": "라우팅 페이지에서 보기", "处理中": "처리 중", "失败请求不记录用量": "실패한 요청은 사용량을 기록하지 않음", "失败({status}):{error}": "실패({status}): {error}", "失败:{error}": "실패: {error}", "实际发给上游 {bytes} 字节": "업스트림에 실제 전송한 {bytes} 바이트", "客户端": "클라이언트", "将删除 {count} 条日志 · 其中 {raw} 条仍带报文原文 · 数据库占用 {db}": "{count}건의 로그를 삭제합니다 · 그중 {raw}건은 페이로드 원문이 남아 있음 · DB 크기 {db}", "将删除 {count} 条请求记录 · 同步清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "요청 기록 {count}건 삭제 · 업스트림 {upstream}건, 다운스트림 본문 {downstream}건 함께 삭제 · DB 크기 {db}", "将删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "요청 기록 {count}건과 업스트림 디버그 페이로드 {upstream}건, 다운스트림 본문 {downstream}건을 삭제합니다.", "尝试 {n} ·": "시도 {n} ·", "尝试明细": "시도 상세", "尝试次数": "시도 횟수", "工具结果": "도구 결과", "工具结果 · {id}": "도구 결과 · {id}", "工具结果图片": "도구 결과 이미지", "已删除 {count} 条": "{count}건 삭제됨", "已删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "요청 기록 {count}건과 업스트림 디버그 페이로드 {upstream}건, 다운스트림 본문 {downstream}건을 삭제했습니다.", "已受理终止:上游连接已断开,列表稍后刷新为「请求已被手动终止」": "중단 요청 접수됨: 업스트림 연결이 끊어졌으며, 목록은 잠시 후 「요청이 수동으로 중단됨」으로 갱신됩니다", "已抹掉 {count} 条报文原文": "{count}건의 페이로드 원문을 지웠습니다", "已清理上游调试报文 {upstream} 条、下游正文 {downstream} 条;请求记录与报表已保留。": "업스트림 디버그 페이로드 {upstream}건과 다운스트림 본문 {downstream}건을 삭제했습니다. 요청 기록과 보고서는 유지되었습니다.", "已用时(请求仍在转发中)": "경과 시간(요청이 아직 포워딩 중)", "开启调试模式后仅记录新请求,历史对话无法补录;关闭不会删除已有记录。": "디버그 모드를 켠 뒤의 새 요청만 기록되며, 이전 대화는 복구할 수 없습니다. 꺼도 기존 기록은 삭제되지 않습니다.", "当前筛选范围": "현재 필터 범위", "当前网关未提供上游 / 下游清理统计,请更新网关后再清理。": "현재 게이트웨이는 업스트림 / 다운스트림 정리 건수를 제공하지 않습니다. 게이트웨이를 업데이트한 뒤 정리하세요.", "成功": "성공", "成功({status})": "성공({status})", "所属请求": "상위 요청", "执行清理": "정리 실행", "报文超过单条上限,请求体 / 响应体已按上限截断": "페이로드가 단일 항목 상한을 초과하여 요청 본문 / 응답 본문이 상한에 맞춰 잘렸습니다", "抹掉原文": "원문 지우기", "按提供商筛选": "제공자별 필터", "按提供商筛选(只列日志里出现过的)": "제공자별 필터(로그에 나타난 제공자만 표시)", "按时间倒序,全量保留": "최신순 정렬, 전량 보존", "按模型筛选": "모델별 필터", "按模型筛选(只列日志里出现过的;精确匹配模型名)": "모델별 필터(로그에 나타난 모델만 표시; 모델 이름 정확히 일치)", "按请求结果筛选": "요청 결과별 필터", "排队中": "대기 중", "提供商 / 账号": "제공자 / 계정", "提供商: {provider}": "제공자: {provider}", "提示": "비고", "敏": "민", "敏感词": "민감 단어", "数据库占用包含主文件与 WAL 文件;清理后可点击「压缩数据库」回收空闲空间。": "DB 크기에는 주 파일과 WAL 파일이 포함됩니다. 정리 후 DB 압축을 실행하여 사용하지 않는 공간을 회수할 수 있습니다.", "断开上游连接,明细记为「请求已被手动终止」": "업스트림 연결을 끊고 상세에 「요청이 수동으로 중단됨」으로 기록됩니다", "无报文原文(未开启「调试模式」,或已被清理)": "원문 페이로드 없음(디버그 모드가 꺼져 있었거나 정리되었음)", "无结果记录": "결과 미기록", "旧版本保存的正文可能已截断,无法恢复缺失内容": "이전 버전에서 저장한 본문이 잘렸을 수 있으며 누락된 내용은 복구할 수 없습니다", "时间": "시각", "暂无请求日志,网关还没有转发过请求": "아직 요청 로그가 없습니다. 게이트웨이가 아직 요청을 포워딩한 적이 없습니다", "最终承载:{picked}": "최종 처리: {picked}", "本次请求消耗 {credit} 积分": "이 요청의 포인트 사용량: {credit}", "本轮尝试失败,正在退避等待或切换到下一个账号": "이번 시도가 실패하여 백오프 대기 중이거나 다음 계정으로 전환 중입니다", "来源客户端:{client}": "요청 클라이언트: {client}", "查看该请求的上游原始报文": "이 요청의 업스트림 원시 페이로드 보기", "模型": "모델", "模型测试": "모델 테스트", "模型管理页操作列那颗「测试」发起的请求:与真实请求同一条转发链路,但不计入报表统计": "모델 관리 페이지 작업 열의 「테스트」로 시작된 요청: 실제 요청과 같은 포워딩 경로를 사용하지만 리포트 통계에는 포함되지 않습니다", "正在加载请求日志…": "요청 로그 불러오는 중…", "正在统计…": "집계 중…", "正文超过单条上限,可能已被截断": "본문이 단일 항목 상한을 초과하여 잘렸을 수 있습니다", "没有符合筛选条件的请求": "필터 조건에 맞는 요청이 없습니다", "清理": "정리", "清理中…": "정리 중…", "清理失败:{message}": "정리 실패: {message}", "清理方式": "정리 방식", "清理请求已返回,但结果数据不完整,请刷新后确认。": "정리 요청의 결과 데이터가 불완전합니다. 새로 고침하여 결과를 확인하세요.", "清理请求日志": "요청 로그 정리", "清理预览数据不完整": "정리 미리보기 데이터가 불완전합니다", "清空两侧原文": "양쪽 원문 삭제", "生产请求": "실제 요청", "生成速度:输出 token ÷ 流式段用时(总用时 − 首响);流式段不足总用时一半时按总用时计": "생성 속도: 출력 토큰 ÷ 스트리밍 시간(소요 시간 − 첫 응답). 스트리밍 시간이 소요 시간의 절반 미만이면 소요 시간으로 계산", "用时": "소요 시간", "用量": "사용량", "确定对{scope}执行「{label}」?
    {summary}
    此操作无法恢复。": "{scope}에 {label} 작업을 실행할까요?
    {summary}
    이 작업은 되돌릴 수 없습니다.", "确定对全部请求日志执行「{label}」?将处理 {count} 条,此操作无法恢复。": "전체 요청 로그에 「{label}」 작업을 실행할까요? {count}건을 처리하며, 이 작업은 복구할 수 없습니다.", "确定按当前筛选执行「{label}」?将处理 {count} 条,此操作无法恢复。": "현재 필터 기준으로 「{label}」 작업을 실행할까요? {count}건을 처리하며, 이 작업은 복구할 수 없습니다.", "确定终止这条正在转发的请求?
    上游连接会立即断开,明细将记为「请求已被手动终止」。": "포워딩 중인 이 요청을 중단할까요?
    업스트림 연결이 즉시 끊어지며, 상세에 「요청이 수동으로 중단됨」으로 기록됩니다.", "等待响应": "응답 대기", "策略 {strategy} · 会话粘性 {sticky}{hit}": "전략 {strategy} · 세션 고정 {sticky}{hit}", "终止": "중단", "终止失败:{error}": "중단 실패: {error}", "终止请求": "요청 중단", "结果": "결과", "缓存读取: - / 命中率: -": "캐시 읽기: - / 적중률: -", "缓存读取: {cache} / 命中率: {rate}": "캐시 읽기: {cache} / 적중률: {rate}", "耗时": "소요 시간", "被跳过:": "건너뜀: ", "识别到 User-Agent,但不属于已知的客户端类型:{ua}": "User-Agent가 있지만 알려진 클라이언트 유형이 아닙니다: {ua}", "识图用量按实际视觉账号单独记录,不混入原模型的回答用量。": "이미지 읽기 사용량은 실제 비전 계정에 별도로 기록하며 원래 모델의 답변 사용량에 합산하지 않습니다.", "详情": "상세", "详情内容": "상세 내용", "请求体": "요청 본문", "请求图片": "요청 이미지", "请求在任何账号接手之前就失败了": "요청이 어떤 계정도 넘겨받기 전에 실패했습니다", "请求头": "요청 헤더", "请求已受理,正在选路、取凭证、建立上游连接": "요청이 접수되었습니다. 경로를 선택하고 자격 증명을 가져와 업스트림 연결을 수립하는 중입니다", "请求日志列表": "요청 로그 목록", "请求日志时间范围": "요청 로그 시간 범위", "请求日志表": "요청 로그 표", "请求正在转发中,用时列显示的是已用时": "요청이 포워딩 중이며, 소요 시간 열에는 경과 시간이 표시됩니다", "请求筛选": "요청 필터", "请求详情": "요청 상세", "读取请求日志失败,详见控制台": "요청 로그를 읽지 못했습니다. 자세한 내용은 콘솔을 확인하세요", "路由回放": "라우팅 리플레이", "转发到上游的模型:{model}": "업스트림으로 포워딩된 모델: {model}", "轮次": "회차", "辅助识图调用": "보조 이미지 읽기 호출", "输入 {input} · 输出 {output} · 总计 {total} · 缓存读 {cache}": "입력 {input} · 출력 {output} · 합계 {total} · 캐시 읽기 {cache}", "这条报文由旧版本截断保存,缺失内容无法恢复": "이 페이로드는 이전 버전에서 잘린 상태로 저장되어 누락된 내용을 복구할 수 없습니다", "这条明细是一次模型测试(人工发起):走的是真实转发链路,但不计入报表统计": "이 상세는 모델 테스트(수동 실행)입니다: 실제 포워딩 경로를 사용하지만 리포트 통계에는 포함되지 않습니다", "这条明细没有记录提供商(旧数据或请求未走到转发)": "이 상세에는 제공자가 기록되지 않았습니다(오래된 데이터이거나 요청이 포워딩 단계까지 가지 못함)", "这条明细没有记录来源客户端(旧数据、模型测试,或请求未带 User-Agent)": "이 기록에는 요청 클라이언트가 없습니다(이전 데이터, 모델 테스트 또는 User-Agent 없는 요청)", "这条记录命中了敏感词,但没有留下命中明细": "이 레코드는 민감 단어에 적중했지만 적중 상세가 남아 있지 않습니다", "这条记录的尝试明细未采集(该字段上线前的旧数据,或请求在转发前就失败)": "이 레코드의 시도 상세가 수집되지 않았습니다(이 필드 도입 전의 오래된 데이터이거나 요청이 포워딩 전에 실패함)", "这条请求没有保存这一段报文": "이 요청은 이 구간의 페이로드를 저장하지 않았습니다", "进入「{phase}」阶段已持续 {time}": "「{phase}」 단계에 진입한 뒤 {time} 경과", "进行中": "처리 중", "进行中…": "처리 중…", "连接中": "연결 중", "速度": "속도", "重试 {n}": "재시도 {n}", "重试中": "재시도 중", "重试次数": "재시도 횟수", "面板内发起的模型调用,消耗额度并记录 Key,不计入生产报表": "패널에서 시작한 모델 호출입니다. 할당량을 사용하고 API Key를 기록하지만 프로덕션 보고서에는 포함하지 않습니다", "预览对话": "대화 미리보기", "预览读取失败": "미리보기 읽기 실패", "预览读取失败:{error}": "미리보기 읽기 실패: {error}", "额外识图用量:{n} Token": "추가 이미지 읽기 사용량: {n} 토큰", "首响 {time}": "첫 응답 {time}", "首响:上游首帧到达的耗时": "첫 응답: 업스트림 첫 프레임 도착까지 걸린 시간", "首响:上游首帧到达的耗时(请求仍在转发中)": "첫 응답: 업스트림 첫 프레임 도착까지 걸린 시간(요청이 아직 포워딩 중)", "首帧已到,上游内容正在下发": "첫 프레임이 도착하여 업스트림 콘텐츠를 내려보내는 중입니다", "(请求仍在转发中)": "(요청이 아직 포워딩 중)", "(账号:{account})": "(계정: {account})", ",{n}毫秒后重试": ", {n}밀리초 후 재시도", ",{n}秒后重试": ", {n}초 후 재시도" }); +window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { " · {n} 进行中": " · {n} 처리 중", " · 会话粘住": " · 세션 고정", "
    无响应原文
    ": "
    응답 원문 없음
    ", "
    无法解析响应内容
    ": "
    응답 내용을 파싱할 수 없음
    ", "
    无法解析请求体(不是含 messages 数组的 JSON)
    ": "
    요청 본문을 파싱할 수 없음(messages 배열을 포함한 JSON이 아님)
    ", "
    无请求原文
    ": "
    요청 원문 없음
    ", "
    调用工具 {name}
    ": "
    도구 호출 {name}
    ", "响应原文": "응답 원문", "思考过程": "사고 과정", "请求原文": "요청 원문", "HTTP {status},但响应体阶段出错": "HTTP {status}이지만 응답 본문 단계에서 오류 발생", "HTTP {status},但响应体阶段出错:见错误列": "HTTP {status}이지만 응답 본문 단계에서 오류 발생: 오류 열 참조", "{duration} / 首帧 {first}": "{duration} / 첫 프레임 {first}", "{m}分{s}秒": "{m}분 {s}초", "{n}秒": "{n}초", "{s}秒{ms}ms": "{s}초{ms}ms", "↻ {n} 次": "↻ {n}회", "↻ 重试 {n} 次": "↻ 재시도 {n}회", "✅ 压缩完成": "✅ 압축 완료", "「仅看进行中」开启时,状态固定为进行中": "「처리 중만 보기」가 켜져 있으면 상태는 처리 중으로 고정됩니다", "上游模型繁忙,请求已排进上游队列;网关正按上游建议的时长等待后重发(不是登录态或额度问题)": "업스트림 모델이 혼잡하여 요청이 업스트림 대기열에 들어갔습니다. 게이트웨이는 업스트림이 권장한 시간만큼 기다린 뒤 다시 전송합니다(로그인 상태나 할당량 문제가 아닙니다)", "上游没有返回积分消耗": "업스트림이 포인트 사용량을 반환하지 않았습니다", "上游状态码: {status}": "업스트림 상태 코드: {status}", "上游请求已发出,正在等第一个字节到达(模型的思考时间也在这段)": "업스트림 요청을 보냈고 첫 바이트가 도착하기를 기다리는 중입니다(모델의 사고 시간도 이 구간에 포함됩니다)", "上游返回错误": "업스트림이 오류를 반환했습니다", "下游请求的模型:{model}": "다운스트림 요청 모델: {model}", "仅清空报文原文": "원문만 비우기", "仅看进行中": "처리 중만 보기", "令牌": "Token", "体积": "크기", "供应商": "공급자", "供应商归属规则": "공급자 귀속 규칙", "保存中…": "저장 중…", "保存归属规则": "귀속 규칙 저장", "保留 {count} 条请求记录 · 将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "요청 기록 {count}건 유지 · 업스트림 {upstream}건, 다운스트림 본문 {downstream}건 삭제 · DB 크기 {db}", "保留 {count} 条请求记录;将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。用量统计与报表不变。": "요청 기록 {count}건을 유지하고 업스트림 디버그 페이로드 {upstream}건과 다운스트림 본문 {downstream}건을 삭제합니다. 사용량 통계와 보고서는 변경되지 않습니다.", "保留统计行与报表,只抹掉请求 / 响应正文。清理后详情弹窗的「预览对话」将无原文可看,统计数字分毫不动。": "통계 행과 리포트는 유지하고 요청 / 응답 본문만 지웁니다. 정리 후 상세 대화상자의 「대화 미리보기」에서는 볼 원문이 없어지고, 통계 수치는 전혀 변하지 않습니다.", "保留草稿并读取最新设置": "임시 보관 후 최신 설정 다시 읽기", "保留请求记录、用量统计与报表,同时清理上游调试报文和下游请求 / 响应正文。清理后「预览对话」与「原始报文」不再保留原文。有筛选时只清理命中请求的报文;无筛选时清空两侧全部报文。此操作无法恢复。": "요청 기록, 사용량 통계 및 보고서를 유지하면서 업스트림 디버그 페이로드와 다운스트림 요청 / 응답 본문을 삭제합니다. 정리 후 대화 미리보기와 원시 페이로드에 원문이 남지 않습니다. 필터가 있으면 일치하는 요청의 페이로드만, 필터가 없으면 양쪽의 모든 페이로드를 삭제합니다. 이 작업은 되돌릴 수 없습니다.", "全部删除": "모두 삭제", "全部提供商": "모든 제공자", "全部模型": "모든 모델", "全部状态": "모든 상태", "全部请求数据": "전체 요청 데이터", "共 {images} 张图片,复用 {cached} 张识读结果": "이미지 {images}개, 읽기 결과 {cached}개 재사용", "共 {n} 次尝试": "총 {n}회 시도", "共 {n} 次尝试,最终由 {provider} 承载": "총 {n}회 시도, 최종적으로 {provider}에서 처리됨", "其它": "기타", "内容按原样保存,请求头中的凭据字段已替换为 [redacted]": "내용은 원본 그대로 저장되며, 요청 헤더의 자격 증명 필드는 [redacted]로 대체되었습니다", "内部重试": "내부 재시도", "切换视觉模型": "비전 모델 전환", "切换路径:": "전환 경로: ", "列表数据已刷新,请重试(关闭后重新打开这条详情)": "목록 데이터가 갱신되었습니다. 다시 시도하세요(닫은 후 이 상세를 다시 열어 주세요)", "删除归属规则": "귀속 규칙 삭제", "删除日志记录本身。当前有筛选时只删命中的条目,按天聚合报表不受影响;无筛选时清空全部并重置报表。此方式无法恢复。": "로그 레코드 자체를 삭제합니다. 현재 필터가 있으면 적중한 항목만 삭제하며 일별 집계 리포트는 영향을 받지 않습니다. 필터가 없으면 전부 비우고 리포트를 초기화합니다. 이 방식은 복구할 수 없습니다.", "删除请求记录,并同步清理对应的上游调试报文与下游正文。有筛选时只删除命中的记录,按天聚合报表不受影响;无筛选时清空全部并重置报表。此操作无法恢复。": "요청 기록과 해당 업스트림 디버그 페이로드 및 다운스트림 본문을 함께 삭제합니다. 필터가 있으면 일치하는 기록만 삭제하고 일별 보고서는 유지합니다. 필터가 없으면 모두 삭제하고 보고서를 초기화합니다. 이 작업은 되돌릴 수 없습니다.", "压缩中…": "압축 중…", "压缩失败:{message}": "압축 실패: {message}", "压缩已在后台开始,完成后会自动提示": "압축이 백그라운드에서 시작되었습니다. 완료되면 자동으로 알려드립니다", "压缩已在进行中": "압축이 이미 진행 중입니다", "压缩已在进行中,接上它的进度等待完成": "압축이 이미 진행 중입니다. 기존 진행 상황에 이어 완료를 기다립니다", "压缩数据库": "DB 압축", "压缩正在后台执行,完成后自动恢复": "압축이 백그라운드에서 실행 중입니다. 완료되면 자동으로 복원됩니다", "原始报文": "원시 페이로드", "原模型": "원래 모델", "取消": "취소", "另有 {missing} 次尝试未记录明细(只保留最早的 {kept} 条)": "그 외 {missing}회 시도는 상세가 기록되지 않았습니다(가장 이른 {kept}건만 보관)", "另有 {n} 个词命中": "그 외 {n}개 단어 적중", "只显示正在转发中的请求(状态列按阶段显示:连接中 / 等待响应 / 响应中 / 重试中,用时列显示已用时)": "포워딩 중인 요청만 표시합니다(상태 열은 단계별로 표시: 연결 중 / 응답 대기 / 응답 중 / 재시도 중, 소요 시간 열은 경과 시간 표시)", "只看失败": "실패만 보기", "只看成功": "성공만 보기", "只看进行中": "처리 중만 보기", "命中了敏感词": "민감 단어 적중", "命中依据:{header} · {pattern}": "판정 근거: {header} · {pattern}", "命中的敏感词": "적중한 민감 단어", "命中规则:{provider} → {client}": "적용 규칙: {provider} → {client}", "响应中": "응답 중", "响应体": "응답 본문", "响应头": "응답 헤더", "回收已删除数据占用的磁盘空间(checkpoint + VACUUM,后台执行)": "삭제된 데이터가 차지한 디스크 공간 회수(checkpoint + VACUUM, 백그라운드 실행)", "图片处理用时:{n} 秒": "이미지 처리 시간: {n}초", "在设置 → 通用里开启「调试模式」后,新发生的请求才会保存报文": "설정 → 일반에서 「디버그 모드」를 켜야 새로 발생하는 요청부터 페이로드가 저장됩니다", "在路由页查看": "라우팅 페이지에서 보기", "处理中": "처리 중", "失败": "실패", "失败请求不记录用量": "실패한 요청은 사용량을 기록하지 않음", "失败({status}):{error}": "실패({status}): {error}", "失败:{error}": "실패: {error}", "实际发给上游 {bytes} 字节": "업스트림에 실제 전송한 {bytes} 바이트", "客户端": "클라이언트", "将删除 {count} 条日志 · 其中 {raw} 条仍带报文原文 · 数据库占用 {db}": "{count}건의 로그를 삭제합니다 · 그중 {raw}건은 페이로드 원문이 남아 있음 · DB 크기 {db}", "将删除 {count} 条请求记录 · 同步清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "요청 기록 {count}건 삭제 · 업스트림 {upstream}건, 다운스트림 본문 {downstream}건 함께 삭제 · DB 크기 {db}", "将删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "요청 기록 {count}건과 업스트림 디버그 페이로드 {upstream}건, 다운스트림 본문 {downstream}건을 삭제합니다.", "尝试 {n} ·": "시도 {n} ·", "尝试明细": "시도 상세", "尝试次数": "시도 횟수", "工具结果": "도구 결과", "工具结果 · {id}": "도구 결과 · {id}", "工具结果图片": "도구 결과 이미지", "已删除 {count} 条": "{count}건 삭제됨", "已删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "요청 기록 {count}건과 업스트림 디버그 페이로드 {upstream}건, 다운스트림 본문 {downstream}건을 삭제했습니다.", "已受理终止:上游连接已断开,列表稍后刷新为「请求已被手动终止」": "중단 요청 접수됨: 업스트림 연결이 끊어졌으며, 목록은 잠시 후 「요청이 수동으로 중단됨」으로 갱신됩니다", "已完成": "완료", "已抹掉 {count} 条报文原文": "{count}건의 페이로드 원문을 지웠습니다", "已清理上游调试报文 {upstream} 条、下游正文 {downstream} 条;请求记录与报表已保留。": "업스트림 디버그 페이로드 {upstream}건과 다운스트림 본문 {downstream}건을 삭제했습니다. 요청 기록과 보고서는 유지되었습니다.", "已用时(请求仍在转发中)": "경과 시간(요청이 아직 포워딩 중)", "开启调试模式后仅记录新请求,历史对话无法补录;关闭不会删除已有记录。": "디버그 모드를 켠 뒤의 새 요청만 기록되며, 이전 대화는 복구할 수 없습니다. 꺼도 기존 기록은 삭제되지 않습니다.", "归属客户端": "클라이언트", "当前筛选范围": "현재 필터 범위", "当前网关未提供上游 / 下游清理统计,请更新网关后再清理。": "현재 게이트웨이는 업스트림 / 다운스트림 정리 건수를 제공하지 않습니다. 게이트웨이를 업데이트한 뒤 정리하세요.", "成功": "성공", "成功({status})": "성공({status})", "所属请求": "상위 요청", "执行清理": "정리 실행", "报文超过单条上限,请求体 / 响应体已按上限截断": "페이로드가 단일 항목 상한을 초과하여 요청 본문 / 응답 본문이 상한에 맞춰 잘렸습니다", "抹掉原文": "원문 지우기", "按提供商筛选": "제공자별 필터", "按提供商筛选(只列日志里出现过的)": "제공자별 필터(로그에 나타난 제공자만 표시)", "按时间倒序,全量保留": "최신순 정렬, 전량 보존", "按模型筛选": "모델별 필터", "按模型筛选(只列日志里出现过的;精确匹配模型名)": "모델별 필터(로그에 나타난 모델만 표시; 모델 이름 정확히 일치)", "按请求结果筛选": "요청 결과별 필터", "排队中": "대기 중", "提供商 / 账号": "제공자 / 계정", "提供商: {provider}": "제공자: {provider}", "提示": "비고", "搜索供应商": "공급자 검색", "搜索客户端": "클라이언트 검색", "敏": "민", "敏感词": "민감 단어", "数据库占用包含主文件与 WAL 文件;清理后可点击「压缩数据库」回收空闲空间。": "DB 크기에는 주 파일과 WAL 파일이 포함됩니다. 정리 후 DB 압축을 실행하여 사용하지 않는 공간을 회수할 수 있습니다.", "断开上游连接,明细记为「请求已被手动终止」": "업스트림 연결을 끊고 상세에 「요청이 수동으로 중단됨」으로 기록됩니다", "无报文原文(未开启「调试模式」,或已被清理)": "원문 페이로드 없음(디버그 모드가 꺼져 있었거나 정리되었음)", "无结果记录": "결과 미기록", "旧版本保存的正文可能已截断,无法恢复缺失内容": "이전 버전에서 저장한 본문이 잘렸을 수 있으며 누락된 내용은 복구할 수 없습니다", "时间": "시각", "暂无请求日志,网关还没有转发过请求": "아직 요청 로그가 없습니다. 게이트웨이가 아직 요청을 포워딩한 적이 없습니다", "最终归属(记账时的客户端)": "최종 귀속(기록 시 클라이언트)", "最终承载:{picked}": "최종 처리: {picked}", "未改写,保留识别结果": "변경 없음, 식별 결과 유지", "本次请求消耗 {credit} 积分": "이 요청의 포인트 사용량: {credit}", "本轮尝试失败,正在退避等待或切换到下一个账号": "이번 시도가 실패하여 백오프 대기 중이거나 다음 계정으로 전환 중입니다", "来源客户端:{client}": "요청 클라이언트: {client}", "查看该请求的上游原始报文": "이 요청의 업스트림 원시 페이로드 보기", "模型": "모델", "模型测试": "모델 테스트", "模型管理页操作列那颗「测试」发起的请求:与真实请求同一条转发链路,但不计入报表统计": "모델 관리 페이지 작업 열의 「테스트」로 시작된 요청: 실제 요청과 같은 포워딩 경로를 사용하지만 리포트 통계에는 포함되지 않습니다", "正在加载请求日志…": "요청 로그 불러오는 중…", "正在统计…": "집계 중…", "正文超过单条上限,可能已被截断": "본문이 단일 항목 상한을 초과하여 잘렸을 수 있습니다", "没有符合筛选条件的请求": "필터 조건에 맞는 요청이 없습니다", "添加自定义头匹配规则…": "사용자 지정 헤더 규칙 추가…", "清理": "정리", "清理中…": "정리 중…", "清理失败:{message}": "정리 실패: {message}", "清理方式": "정리 방식", "清理请求已返回,但结果数据不完整,请刷新后确认。": "정리 요청의 결과 데이터가 불완전합니다. 새로 고침하여 결과를 확인하세요.", "清理请求日志": "요청 로그 정리", "清理预览数据不完整": "정리 미리보기 데이터가 불완전합니다", "清空两侧原文": "양쪽 원문 삭제", "生产请求": "실제 요청", "生成速度:输出 token ÷ 流式段用时(总用时 − 首响);流式段不足总用时一半时按总用时计": "생성 속도: 출력 토큰 ÷ 스트리밍 시간(소요 시간 − 첫 응답). 스트리밍 시간이 소요 시간의 절반 미만이면 소요 시간으로 계산", "用时": "소요 시간", "用量": "사용량", "确定对{scope}执行「{label}」?
    {summary}
    此操作无法恢复。": "{scope}에 {label} 작업을 실행할까요?
    {summary}
    이 작업은 되돌릴 수 없습니다.", "确定对全部请求日志执行「{label}」?将处理 {count} 条,此操作无法恢复。": "전체 요청 로그에 「{label}」 작업을 실행할까요? {count}건을 처리하며, 이 작업은 복구할 수 없습니다.", "确定按当前筛选执行「{label}」?将处理 {count} 条,此操作无法恢复。": "현재 필터 기준으로 「{label}」 작업을 실행할까요? {count}건을 처리하며, 이 작업은 복구할 수 없습니다.", "确定终止这条正在转发的请求?
    上游连接会立即断开,明细将记为「请求已被手动终止」。": "포워딩 중인 이 요청을 중단할까요?
    업스트림 연결이 즉시 끊어지며, 상세에 「요청이 수동으로 중단됨」으로 기록됩니다.", "等待响应": "응답 대기", "策略 {strategy} · 会话粘性 {sticky}{hit}": "전략 {strategy} · 세션 고정 {sticky}{hit}", "终止": "중단", "终止失败:{error}": "중단 실패: {error}", "终止请求": "요청 중단", "结果": "결과", "缓存读取: - / 命中率: -": "캐시 읽기: - / 적중률: -", "缓存读取: {cache} / 命中率: {rate}": "캐시 읽기: {cache} / 적중률: {rate}", "编辑这条头匹配规则…": "이 헤더 규칙 편집…", "耗时": "소요 시간", "自定义 · {name}": "사용자 지정 · {name}", "被跳过:": "건너뜀: ", "设置识别规则": "식별 규칙 설정", "识别到 User-Agent,但不属于已知的客户端类型:{ua}": "User-Agent가 있지만 알려진 클라이언트 유형이 아닙니다: {ua}", "识别结果(请求头识别出的真实客户端)": "식별 결과(헤더에서 식별된 실제 클라이언트)", "识图用量按实际视觉账号单独记录,不混入原模型的回答用量。": "이미지 읽기 사용량은 실제 비전 계정에 별도로 기록하며 원래 모델의 답변 사용량에 합산하지 않습니다.", "该供应商已有归属规则,保存将覆盖它": "이 공급자에는 이미 귀속 규칙이 있으며 저장 시 덮어씁니다", "详情": "상세", "详情内容": "상세 내용", "请求体": "요청 본문", "请求图片": "요청 이미지", "请求在任何账号接手之前就失败了": "요청이 어떤 계정도 넘겨받기 전에 실패했습니다", "请求头": "요청 헤더", "请求头识别为 {identified},已改写归属为 {client}": "요청 헤더에서는 {identified}로 식별되었으며 귀속은 {client}로 변경되었습니다", "请求已受理,正在选路、取凭证、建立上游连接": "요청이 접수되었습니다. 경로를 선택하고 자격 증명을 가져와 업스트림 연결을 수립하는 중입니다", "请求日志列表": "요청 로그 목록", "请求日志时间范围": "요청 로그 시간 범위", "请求日志表": "요청 로그 표", "请求正在转发中,用时列显示的是已用时": "요청이 포워딩 중이며, 소요 시간 열에는 경과 시간이 표시됩니다", "请求筛选": "요청 필터", "请求详情": "요청 상세", "请选择供应商": "공급자를 선택하세요", "请选择归属客户端": "클라이언트를 선택하세요", "读取请求日志失败,详见控制台": "요청 로그를 읽지 못했습니다. 자세한 내용은 콘솔을 확인하세요", "路由回放": "라우팅 리플레이", "转发到上游的模型:{model}": "업스트림으로 포워딩된 모델: {model}", "轮次": "회차", "辅助识图": "보조 이미지 인식", "辅助识图调用": "보조 이미지 읽기 호출", "输入 {input} · 输出 {output} · 总计 {total} · 缓存读 {cache}": "입력 {input} · 출력 {output} · 합계 {total} · 캐시 읽기 {cache}", "这条报文由旧版本截断保存,缺失内容无法恢复": "이 페이로드는 이전 버전에서 잘린 상태로 저장되어 누락된 내용을 복구할 수 없습니다", "这条明细是一次模型测试(人工发起):走的是真实转发链路,但不计入报表统计": "이 상세는 모델 테스트(수동 실행)입니다: 실제 포워딩 경로를 사용하지만 리포트 통계에는 포함되지 않습니다", "这条明细没有记录提供商(旧数据或请求未走到转发)": "이 상세에는 제공자가 기록되지 않았습니다(오래된 데이터이거나 요청이 포워딩 단계까지 가지 못함)", "这条明细没有记录来源客户端(旧数据、模型测试,或请求未带 User-Agent)": "이 기록에는 요청 클라이언트가 없습니다(이전 데이터, 모델 테스트 또는 User-Agent 없는 요청)", "这条记录命中了敏感词,但没有留下命中明细": "이 레코드는 민감 단어에 적중했지만 적중 상세가 남아 있지 않습니다", "这条记录的尝试明细未采集(该字段上线前的旧数据,或请求在转发前就失败)": "이 레코드의 시도 상세가 수집되지 않았습니다(이 필드 도입 전의 오래된 데이터이거나 요청이 포워딩 전에 실패함)", "这条请求没有保存这一段报文": "이 요청은 이 구간의 페이로드를 저장하지 않았습니다", "这条请求没有记录供应商(旧数据或未走到转发),不能从这里改归属": "이 요청에는 공급자 기록이 없어(구 데이터 또는 전달 미도달) 여기서 귀속을 변경할 수 없습니다", "进入「{phase}」阶段已持续 {time}": "「{phase}」 단계에 진입한 뒤 {time} 경과", "进行中": "처리 중", "进行中…": "처리 중…", "连接中": "연결 중", "选择供应商": "공급자 선택", "选择归属客户端": "클라이언트 선택", "速度": "속도", "重试 {n}": "재시도 {n}", "重试中": "재시도 중", "重试次数": "재시도 횟수", "面板内发起的模型调用,消耗额度并记录 Key,不计入生产报表": "패널에서 시작한 모델 호출입니다. 할당량을 사용하고 API Key를 기록하지만 프로덕션 보고서에는 포함하지 않습니다", "预览对话": "대화 미리보기", "预览读取失败": "미리보기 읽기 실패", "预览读取失败:{error}": "미리보기 읽기 실패: {error}", "额外识图用量:{n} Token": "추가 이미지 읽기 사용량: {n} 토큰", "首响 {time}": "첫 응답 {time}", "首响:上游首帧到达的耗时": "첫 응답: 업스트림 첫 프레임 도착까지 걸린 시간", "首响:上游首帧到达的耗时(请求仍在转发中)": "첫 응답: 업스트림 첫 프레임 도착까지 걸린 시간(요청이 아직 포워딩 중)", "首帧已到,上游内容正在下发": "첫 프레임이 도착하여 업스트림 콘텐츠를 내려보내는 중입니다", "默认归属客户端": "기본 귀속 클라이언트", "(请求仍在转发中)": "(요청이 아직 포워딩 중)", "(账号:{account})": "(계정: {account})", ",{n}毫秒后重试": ", {n}밀리초 후 재시도", ",{n}秒后重试": ", {n}초 후 재시도" }); diff --git a/desktop-tauri/ui/i18n/ko/settings.js b/desktop-tauri/ui/i18n/ko/settings.js index 04b883fd..f38fdd54 100644 --- a/desktop-tauri/ui/i18n/ko/settings.js +++ b/desktop-tauri/ui/i18n/ko/settings.js @@ -1,2 +1,2 @@ /* Agent2API 词典构建产物:ko/settings —— 由 desktop-tauri/i18n/build.mjs 生成,请勿手改;源头是 i18n-src/*.json */ -window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { " 到 {file}": " → {file}", " 正文已改:{edited}(其余段用官方原文)。": " 본문 수정됨: {edited}(나머지 단락은 공식 원문 사용).", "(无 id)": "(id 없음)", "/v1 拒绝无 Key 请求": "/v1은 키 없는 요청 거부", "0 B": "0 B", "100%(默认)": "100%(기본값)", "<本机IP>": "<로컬 IP>", "ALTCHA(本地验证)": "ALTCHA(로컬 인증)", "Access Key ID": "Access Key ID", "Agent2API 手机端": "Agent2API 모바일", "Android 应用(APK)": "Android 앱(APK)", "Cline 上游按请求头判定「调用方是不是 Cline 自家产品」:X-CLIENT-TYPE: cline-sdk 是硬门槛(缺了它免费池模型一律 403),版本号与平台标识让请求更贴近官方客户端的形态。这里列出的是网关默认会发的头:改某一行的值 = 覆盖默认值(也可以新增默认清单之外的自定义头);把值清空保存 = 这个头不发送;在界面删掉被改过的行 = 回落默认值。改完点「保存」,下一个 Cline 请求立即生效。不懂某一行的含义就不要动它 —— 伪装头的价值在「与官方客户端逐字一致」。": "Cline 업스트림은 요청 헤더로 「호출자가 Cline 자사 제품인지」를 판별합니다. X-CLIENT-TYPE: cline-sdk는 필수 조건이며(이게 없으면 무료 풀 모델은 모두 403), 버전 번호와 플랫폼 식별자는 요청을 공식 클라이언트의 형태에 더 가깝게 만듭니다. 여기에 나열된 것은 게이트웨이가 기본으로 보내는 헤더입니다. 특정 행의 값을 바꾸면 기본값을 덮어쓰고(기본 목록에 없는 사용자 지정 헤더도 추가할 수 있습니다), 값을 비워 저장하면 그 헤더를 보내지 않으며, 화면에서 수정된 행을 삭제하면 기본값으로 돌아갑니다. 수정 후 「저장」을 누르면 다음 Cline 요청부터 즉시 적용됩니다. 의미를 모르는 행은 건드리지 마세요. 위장 헤더의 가치는 「공식 클라이언트와 글자 하나까지 동일」한 데 있습니다.", "Cline 伪装头": "Cline 위장 헤더", "Cline 伪装头已刷新": "Cline 위장 헤더를 새로 고쳤습니다", "Docker 容器": "Docker 컨테이너", "Endpoint": "Endpoint", "Endpoint 填 https://<账户ID>.r2.cloudflarestorage.com,Region 固定填 auto。": "Endpoint에 https://<계정 ID>.r2.cloudflarestorage.com 을, Region에는 auto를 입력하세요.", "Endpoint 填 https://cos.ap-guangzhou.myqcloud.com,Region 填 ap-guangzhou(按实际地域改)。": "Endpoint에 https://cos.ap-guangzhou.myqcloud.com 을, Region에는 ap-guangzhou를 입력하세요(실제 리전에 맞게 변경).", "Endpoint 填 https://obs.cn-north-4.myhuaweicloud.com,Region 填 cn-north-4(按实际地域改)。": "Endpoint에 https://obs.cn-north-4.myhuaweicloud.com 을, Region에는 cn-north-4를 입력하세요(실제 리전에 맞게 변경).", "Endpoint 填 https://oss-cn-hangzhou.aliyuncs.com,Region 填 cn-hangzhou(按实际地域改)。": "Endpoint에 https://oss-cn-hangzhou.aliyuncs.com 을, Region에는 cn-hangzhou를 입력하세요(실제 리전에 맞게 변경).", "Endpoint 形如 http://192.168.1.10:9000(自建通常用 http);Region 一般填 us-east-1。": "Endpoint는 http://192.168.1.10:9000 형식이며(자체 호스팅은 보통 http), Region은 일반적으로 us-east-1입니다.", "Endpoint 留空即走 AWS 官方地址;Region 必须与桶所在区域一致。": "Endpoint를 비워 두면 AWS 공식 주소를 사용합니다. Region은 버킷의 리전과 일치해야 합니다.", "KB": "KB", "Linux 安装包(deb)": "Linux 패키지(deb)", "Logo 不能超过 2 MiB": "로고는 2 MiB를 초과할 수 없습니다", "Logo 仅支持 PNG、JPG、WebP 图片": "로고는 PNG, JPG, WebP 이미지만 지원합니다", "Nextcloud": "Nextcloud", "OpenAI 新版 API 用 developer 角色取代 system 承载指令,新版 OpenAI SDK 与部分客户端发的对话里会出现 role 为 developer 的消息;不少 OpenAI 兼容上游(尤其是自定义提供商的透传路径)不认识这个角色,收到就报 400。开启本项后,网关在每次转发前把 developer 角色的消息改写为 system —— 两类角色在 OpenAI 语义上等价(OpenAI 自己的迁移指南也是这么映射的),改写不影响对话内容与语义;对本来就只认 system 的各家内置上游同样无害。默认开启;关掉后 developer 消息会原样发往上游,不认识它的上游会报「角色不存在」一类的错误。": "새 버전 OpenAI API는 system 대신 developer 역할로 지시를 전달하므로, 최신 OpenAI SDK와 일부 클라이언트가 보내는 대화에 role이 developer인 메시지가 포함됩니다. 많은 OpenAI 호환 업스트림(특히 커스텀 제공자의 투과 경로)은 이 역할을 인식하지 못해 받자마자 400을 반환합니다. 이 항목을 켜면 게이트웨이가 매 전달 전에 developer 역할 메시지를 system으로 수정합니다 — 두 역할은 OpenAI 의미론에서 동등하고(OpenAI 자체 마이그레이션 가이드도 같은 매핑을 사용), 수정은 대화 내용과 의미에 영향을 주지 않으며, 애초에 system만 받는 내장 업스트림에도 무해합니다. 기본값은 켜짐. 끄면 developer 메시지가 그대로 업스트림으로 전송되며, 이 역할을 모르는 업스트림은 \"역할이 존재하지 않는다\"류의 오류를 반환합니다.", "QQ 群 · Telegram": "QQ 그룹 · Telegram", "S3 兼容存储": "S3 호환 스토리지", "Safari 没有安装按钮:点底部的「分享」,选「添加到主屏幕」,再点「添加」。": "Safari에는 설치 버튼이 없습니다. 하단의 「공유」 → 「홈 화면에 추가」 → 「추가」 순서로 누르세요.", "Secret Access Key": "Secret Access Key", "Token 读数量级": "Token 수치 표기", "UTF-8 文本文件路径,留空用内置默认提示词(通用编码助手提示词,不含任何会被上游拦截的模板句)。只在「替换 / 追加」模式下生效,透传模式不读它。": "UTF-8 텍스트 파일 경로입니다. 비워 두면 내장 기본 시스템 프롬프트를 사용합니다(범용 코딩 어시스턴트 프롬프트로, 업스트림에 차단될 만한 템플릿 문구가 없습니다). 「교체 / 추가」 모드에서만 적용되며, 패스스루 모드에서는 읽지 않습니다.", "WebView / 浏览器内核": "WebView / 브라우저 엔진", "Windows 安装包(NSIS)": "Windows 설치 프로그램(NSIS)", "Windows 服务": "Windows 서비스", "ZCode 套餐池(Start Plan)通道每条请求都要消耗一个当次铸造的人机验证令牌(一次性,2 分钟过期),库存低于该值时界面自动补铸到它。默认 3 个。调大能吸收突发并发,但用不掉的令牌 2 分钟就过期作废,烧的是上游风控配额。可填 1–10。": "ZCode 플랜 풀 (Start Plan) 채널의 각 요청은 그때그때 생성된 캡차 토큰(1회용, 2분 후 만료)을 하나 소비하며, 재고가 이 값 아래로 내려가면 UI가 이 값까지 자동으로 보충합니다. 기본값 3. 크게 잡으면 갑작스러운 동시 요청을 흡수하지만, 쓰지 못한 토큰은 2분 만에 만료되어 상류의 리스크 관리 쿼터를 태웁니다. 1–10을 입력할 수 있습니다.", "ZCode「套餐池(Start Plan)」通道的每条推理请求都要附一个当次铸造的阿里云无痕验证令牌(一次性、约 2 分钟过期):令牌由界面里的铸造守卫静默铸好、推给网关入池,转发时逐条取用。这里的三个值管的是补货节奏:①「库存目标」= 库存低于它守卫才补铸、补到它为止,默认 3 个;②「轮询间隔」= 守卫多久看一次库存,默认 2500 毫秒,只影响反应速度(库存够用时不会多铸);③「单轮铸造上限」= 发现缺货时一轮最多铸几个,默认 1 个(连铸之间固定隔 500 毫秒)。请求密集、请求日志里连续出现「需要人机验证令牌」的 503 时,把目标与单轮上限适当调大、轮询调快,能让池子跟得上消耗 —— 代价是上游(阿里云)对铸造频率有风控,铸得越多越快越容易触发限流,且用不掉的令牌 2 分钟即过期作废、等于白烧配额,所以建议小步调。保存后对下一轮补货立即生效,不用重启。": "ZCode \"플랜 풀 (Start Plan)\" 채널의 모든 추론 요청에는 그때그때 생성된 Aliyun 인비저블 캡차 토큰(1회용, 약 2분 후 만료)을 붙여야 합니다: 토큰은 UI 안의 민트 가드가 조용히 생성해 게이트웨이 풀에 밀어넣고, 포워딩은 요청마다 하나씩 꺼내 씁니다. 여기의 세 값은 보충 리듬을 관리합니다: ① \"재고 목표\" = 재고가 이 값 아래로 내려갈 때만 이 값까지 보충(기본 3); ② \"폴링 간격\" = 가드가 재고를 확인하는 주기, 기본 2500ms(반응 속도에만 영향 — 재고가 충분하면 굳이 더 만들지 않음); ③ \"1회 생성 한도\" = 재고 부족 발견 시 한 라운드에 최대 몇 개까지 만들지, 기본 1(연속 생성 사이는 고정 500ms). 요청이 많고 요청 로그에 \"캡차 토큰 필요\" 503이 계속 나온다면 목표와 1회 한도를 적당히 올리고 폴링을 빠르게 하면 풀이 소비를 따라갑니다 — 대가로 상류(Aliyun)는 생성 빈도에 리스크 관리를 두어 많이 빠르게 만들수록 제한에 걸리기 쉽고, 쓰지 못한 토큰은 어차피 2분 만에 만료되어 쿼터를 낭비하므로 조금씩 조정을 권장합니다. 저장하면 다음 보충 라운드부터 즉시 적용되며 재시작이 필요 없습니다.", "beta 版": "beta 버전", "iOS 应用": "iOS 앱", "models.dev 元数据": "models.dev 메타데이터", "models.dev 元数据已更新({count} 条)": "models.dev 메타데이터를 갱신했습니다({count}건)", "models.dev 是一个开源的模型资料库(社区维护),这里用它补齐「上游没告诉我们」的模型能力:上下文窗口、最大输出、工具调用、图片、视频、是否支持思考,以及这个模型认识哪些思考档位。优先级是:你在「模型能力」里手工改的值 > 上游清单自己声明的值 > models.dev 的值 —— 它只填上游没声明的空位,从不推翻上游已声明的。网关随包内嵌了一份快照,所以离线、首次启动、访问不通时也有数据;开启时会按「模型目录刷新」任务的间隔联网更新(同一轮里一并刷新,也可在这里立即刷新)。关闭只停联网刷新,已经拿到的数据继续用。": "models.dev는 커뮤니티가 유지하는 오픈소스 모델 데이터베이스입니다. 업스트림이 알려주지 않은 정보(컨텍스트 창, 최대 출력, 도구 호출, 이미지, 동영상, 추론 지원 여부, 그리고 이 모델이 실제로 받는 추론 레벨)를 여기서 채웁니다. 우선순위는 「모델 능력」에서 직접 수정한 값 > 업스트림 카탈로그의 선언값 > models.dev 값이며, 업스트림이 선언한 값을 뒤집지 않고 빈 자리만 채웁니다. 스냅샷이 앱에 내장되어 있어 오프라인·최초 실행·통신 불가 상황에서도 데이터가 있습니다. 켜져 있으면 「모델 카탈로그 새로고침」 주기에 맞춰 온라인으로 갱신합니다(같은 회차에 함께, 또는 여기서 즉시). 끄면 온라인 갱신만 멈추고 이미 받은 데이터는 계속 사용됩니다.", "models.dev 模型元数据": "models.dev 모델 메타데이터", "systemd 服务": "systemd 서비스", "{count} 条": "{count}건", "{count} 条 · 来自{origin}{at} · {mode}": "{count}건 · 출처: {origin}{at} · {mode}", "{count} 条规则,按列表顺序执行": "규칙 {count}개, 목록 순서대로 실행", "{d} 天 {h} 小时": "{d}일 {h}시간", "{h} 小时 {m} 分钟": "{h}시간 {m}분", "{label} 提示词文件": "{label} 시스템 프롬프트 파일", "{label} 的提示词模式": "{label}의 시스템 프롬프트 모드", "{label}({message})": "{label}({message})", "{lines} 行、{chars} 字符(按当前草稿计)": "{lines}행, {chars}자(현재 초안 기준)", "{minutes} 分钟": "{minutes}분", "{models} 同时出现在两块设置里,会按「辅助识图」处理。想改的话,把其中一个从这边的模型名单里去掉。": "{models}이(가) 두 블록에 모두 있습니다. 이 경우 \"보조 이미지 읽기\"로 처리됩니다. 바꾸려면 한쪽 모델 목록에서 빼세요.", "{mode}生效:上游收到的 system 来自{source}{lines}。": "{mode} 적용: 업스트림이 받는 system은 {source}에서 가져옵니다{lines}.", "{m} 分钟": "{m}분", "{noun}不能为空(可填 {min}–{max})": "{noun} 값은 비워 둘 수 없습니다({min}–{max} 입력 가능)", "{noun}必须在 {min}–{max} 之间(当前填的是 {text})": "{noun} 값은 {min}–{max} 사이여야 합니다(현재 입력: {text})", "{noun}必须是整数": "{noun} 값은 정수여야 합니다", "{n} B": "{n} B", "{n} GB": "{n} GB", "{n} KB": "{n} KB", "{n} MB": "{n} MB", "{n} 个头将随每个 Cline 请求发送": "헤더 {n}개가 모든 Cline 요청과 함께 전송됩니다", "{n} 台可选 · 点此切换": "{n}대 · 눌러서 전환", "{n} 项 · {shown} 显示": "{n}개 · {shown}개 표시", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "메뉴 {total}개 · 표시 {shown} · 숨김 {hidden} · 그룹 {groups}개", "{way}的适用模型": "{way}의 대상 모델", "⚠️ 密钥警告": "⚠️ 키 경고", "⚠️ 已关闭「{label}」的机器人校验": "⚠️ \"{label}\"의 봇 확인을 껐습니다", "⚠️ 机器人校验已关闭": "⚠️ 로봇 검증이 꺼져 있습니다", "✅ Cline 伪装头已保存": "✅ Cline 위장 헤더가 저장되었습니다", "✅ models.dev 模型元数据已开启": "✅ models.dev 모델 메타데이터를 켰습니다", "✅ 云同步设置已保存": "✅ 클라우드 동기화 설정이 저장되었습니다", "✅ 会话图片压缩已开启": "✅ 이미지 압축을 켰습니다", "✅ 出站指纹脱敏已开启": "✅ 아웃바운드 핑거프린트 마스킹이 켜졌습니다", "✅ 密码已修改,其他设备的登录已失效": "✅ 비밀번호를 변경했습니다. 다른 기기의 로그인은 해제되었습니다", "✅ 导入完成:{summary}": "✅ 가져오기 완료: {summary}", "✅ 已上传到云端({size})": "✅ 클라우드에 업로드했습니다({size})", "✅ 已为「{label}」装上网关自带提示词": "✅ 「{label}」에 게이트웨이 내장 시스템 프롬프트를 설치했습니다", "✅ 已从云端恢复{note}": "✅ 클라우드에서 복원했습니다{note}", "✅ 已保存:{label}": "✅ 저장됨: {label}", "✅ 已保存:{label} {value}": "✅ 저장됨: {label} {value}", "✅ 已保存:指定错误码直接换号": "✅ 저장됨: 지정 오류 코드 즉시 계정 전환", "✅ 已保留 {days} 天": "✅ {days}일 보관합니다", "✅ 已保留 {days} 天,超出部分已清理": "✅ {days}일 보관하며, 초과분은 정리했습니다", "✅ 已加密备份 {n} 张表({size}),包含恢复密钥:{file}": "✅ 테이블 {n}개 암호화 백업 완료({size}), 복원 키 포함: {file}", "✅ 已备份 {n} 张表({size})到 {file}": "✅ 테이블 {n}개({size})를 {file}(으)로 백업했습니다", "✅ 已导入账号密钥,请继续下载": "✅ 계정 키를 가져왔습니다. 계속 다운로드하세요", "✅ 已导出 {count} 个账号{note}{file}": "✅ 계정 {count}개를 내보냈습니다{note}{file}", "✅ 已开启「{label}」的机器人校验": "✅ \"{label}\"의 봇 확인을 켰습니다", "✅ 已恢复 {n} 张表{note}": "✅ 테이블 {n}개를 복원했습니다{note}", "✅ 已改用 k / M / B 缩写": "✅ k / M / B 약어로 변경했습니다", "✅ 已改用本地量级词(万 / 亿式)": "✅ 로컬 규모 단어(만 / 억 단위)로 전환했습니다", "✅ 已自动创建网关 Key「默认」(可在「网关 Key」页查看)": "✅ 게이트웨이 키 「기본」을 자동으로 만들었습니다(「게이트웨이 키」 페이지에서 확인할 수 있습니다)", "✅ 已解除内容拦截降级": "✅ 콘텐츠 차단 폴백을 해제했습니다", "✅ 开发者角色兼容已开启": "✅ 개발자 역할 호환이 켜졌습니다", "✅ 指纹脱敏设置已保存": "✅ 지문 마스킹 설정을 저장했습니다", "✅ 数量上限已设为 {count} 条": "✅ 건수 상한을 {count}건으로 설정했습니다", "✅ 数量上限已设为 {count} 条,超出部分已清理": "✅ 건수 상한을 {count}건으로 설정하고 초과분을 삭제했습니다", "✅ 机器人校验已开启": "✅ 로봇 검증이 켜졌습니다", "✅ 第三方模型回答完自动折叠过程已开启": "✅ 타사 모델의 답변 후 과정 자동 접기를 켰습니다", "✅ 设置已保存,应用正在重启…": "✅ 설정이 저장되었습니다. 앱을 다시 시작하는 중…", "✅ 调试模式已关闭": "✅ 디버그 모드가 꺼졌습니다", "✅ 调试模式已开启": "✅ 디버그 모드가 켜졌습니다", "✅ 路由设置已保存": "라우팅 설정이 저장되었습니다", "✅ 连接成功:{path}": "✅ 연결 성공: {path}", "、{n} 个自定义提供商": ", 커스텀 제공자 {n}개", "。事件日志、请求明细、调试报文与面板登录态保持不变。替换前会自动把当前业务数据备份到配置目录的 backups/ 下。": ". 이벤트 로그, 요청 상세, 디버그 패킷, 패널 로그인 상태는 그대로 유지됩니다. 교체 전에 현재 업무 데이터를 설정 디렉터리의 backups/ 에 자동으로 백업합니다.", "「{label}」将从 {previous} 天改为 {days} 天。": "「{label}」이(가) {previous}일에서 {days}일로 변경됩니다.", "「{label}」将从 {previous} 条改为 {count} 条。": "「{label}」을(를) {previous}건에서 {count}건으로 변경합니다.", "「{label}」改用内置默认提示词": "「{label}」이(가) 내장 기본 시스템 프롬프트로 전환되었습니다", "「{label}」的提示词文件已更新": "「{label}」의 시스템 프롬프트 파일이 업데이트되었습니다", "「{label}」的提示词正文已更新": "「{label}」의 시스템 프롬프트 본문이 업데이트되었습니다", "「{label}」的模式改为「{mode}」": "「{label}」의 모드가 「{mode}」(으)로 변경되었습니다", "「{label}」的网关自带提示词已改回官方原文": "「{label}」의 게이트웨이 내장 시스템 프롬프트를 공식 원문으로 되돌렸습니다", "「{label}」的网关自带提示词正文已更新": "「{label}」의 게이트웨이 내장 시스템 프롬프트 본문이 업데이트되었습니다", "「模型管理」里每个能力的来源标记(上游 / models.dev / 已覆盖)读的就是这份数据;映射弹窗的思考档位下拉也按这里的数据只列该模型真实认识的档位。": "「모델 관리」의 각 능력 출처 표시(업스트림 / models.dev / 직접 설정)가 이 데이터를 읽습니다. 매핑 대화상자의 추론 레벨 목록도 이 데이터를 기준으로 해당 모델이 실제로 받는 레벨만 표시합니다.", "「用哪份提示词」本来是按上游分别决定的事,所以每家可以有自己的模式、提示词文件与正文:不在这里列出的提供商一律沿用上面那份默认设置,「跟随默认」把这一家取消、回到默认。带「网关自带」那一行的家(目前是 ZCode 两家)默认就列在这里 —— 那一段是网关自己装上去的文本,不来自客户端也不来自提示词文件,默认开启、可以关掉,也可以改它的正文(改过的那一段以你的文本为准);关掉后还能不能通过上游校验,取决于上游当下的口径,行内说明了实测依据。「模式 / 提示词文件 / 正文」管的是客户端自己的 system 怎么处理,与那个开关是两件事。": "「어느 프롬프트를 쓸지」는 원래 업스트림별로 결정하는 일이므로, 제공자마다 자체 모드와 시스템 프롬프트 파일, 본문을 가질 수 있습니다. 여기에 나열되지 않은 제공자는 모두 위의 기본 설정을 따르며, 「기본값 따르기」를 선택하면 해당 제공자의 개별 설정이 취소되고 기본값으로 돌아갑니다. 「게이트웨이 내장」 항목이 있는 제공자(현재 ZCode 두 곳)는 기본적으로 여기에 나열됩니다. 그 단락은 게이트웨이가 직접 설치한 텍스트로, 클라이언트에서도 시스템 프롬프트 파일에서도 온 것이 아닙니다. 기본적으로 켜져 있으며 끌 수 있고 본문도 수정할 수 있습니다(수정한 단락은 입력한 텍스트가 우선). 끈 뒤에도 업스트림 검증을 통과할 수 있는지는 업스트림의 현재 기준에 달려 있으며, 실측 근거는 행 안에 설명되어 있습니다. 「모드 / 시스템 프롬프트 파일 / 본문」은 클라이언트 자체의 system을 어떻게 처리할지를 다루며, 그 스위치와는 별개의 일입니다.", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "\"설정\"은 고정 항목이라 그 그룹을 통째로 숨길 수 없습니다. 다른 메뉴는 개별로 숨길 수 있습니다", "「请求日志」页的逐条请求记录,默认 99999 天(近似全量保留),可填 1–99999 天。": "「요청 로그」페이지의 요청별 기록. 기본 99999일(거의 전체 보관)이며 1~99999일까지 입력할 수 있습니다.", "「请求日志」页的逐条请求记录,默认 99999 天,可填 1–99999 天;同时受数量上限限制。": "「요청 로그」페이지의 요청별 기록입니다. 기본값은 99999일이며 1–99999일을 입력할 수 있습니다. 건수 상한도 적용됩니다.", "一个 .a2ab 文件即可跨机器恢复,账号、网关 Key、GitHub 令牌与云同步凭据无需另行复制密钥。插件程序与库外文件不在整库备份范围。": ".a2ab 파일 하나로 다른 기기에 복원할 수 있으며 계정, 게이트웨이 Key, GitHub 토큰 및 클라우드 동기화 자격 증명의 키를 별도로 복사할 필요가 없습니다. 플러그인 프로그램과 데이터베이스 외부 파일은 포함되지 않습니다.", "一段内置装配": "내장 기본 구성", "三档数据各自独立计时,超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件;请求日志是网关每次转发到上游的逐条记录;按天聚合供报表页的热力图与按天趋势使用。请求日志与按天聚合默认 99999 天(约 274 年,效果上等于全量保留),事件日志默认 30 天。把某一档改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。三档的可填范围均为 1–99999 天。": "세 가지 데이터는 각각 독립적으로 계산되며, 보관 일수를 초과한 부분은 삭제됩니다: 이벤트 로그는 로그인, 계정 전환, 429 전환 같은 시스템 이벤트이고, 요청 로그는 게이트웨이가 업스트림으로 전달할 때마다 남기는 기록이며, 일별 집계는 리포트 페이지의 히트맵과 일별 추세에 사용됩니다. 요청 로그와 일별 집계의 기본값은 99999일(약 274년, 사실상 전량 보관)이고 이벤트 로그의 기본값은 30일입니다. 어느 하나를 줄여(예: 30일 → 7일) 저장하면 초과된 과거 데이터가 즉시 삭제되며 되돌릴 수 없습니다. 늘리거나 그대로 두면 아무것도 삭제되지 않습니다. 세 항목 모두 입력 범위는 1~99999일입니다.", "三段各自成块,所以分开编辑": "세 단락이 각각 별도 블록이라 따로 편집합니다", "上传": "업로드", "上传 Logo": "로고 업로드", "上传中…": "업로드 중…", "上传内容含加密后的账号凭证与网关配置": "업로드 내용에는 암호화된 계정 자격 증명과 게이트웨이 설정이 포함됩니다", "上传到云端": "클라우드로 업로드", "上传失败:{message}": "업로드 실패: {message}", "上次同步:{time}({action})": "마지막 동기화: {time} ({action})", "上次成功刷新的结果(存在本机数据库里)": "마지막으로 성공한 새로고침 결과(로컬 데이터베이스에 저장)", "上游 CLI 版本": "업스트림 CLI 버전", "上游客户端版本": "업스트림 클라이언트 버전", "上游按": "업스트림이 ", "上游按「结构」校验身份:三段必须各自成块,所以这里分开编辑三段(不能合成一段)。动态段里的运行值写成占位符,发请求时才替换:{cwd} 工作目录、{platform} 平台、{shell} shell、{os_version} 系统版本、{git} 是否 git 仓库、{provider} 提供方标识、{model} 模型名。清空某一段 = 那一段恢复官方原文。第三段发出时前面会自带一个空行(官方形状)。": "업스트림은 「구조」로 신원을 검증합니다. 세 단락이 각각 별도 블록이어야 하므로 여기서는 세 단락을 따로 편집합니다(하나로 합칠 수 없습니다). 동적 단락의 런타임 값은 플레이스홀더로 작성하며 요청을 보낼 때 치환됩니다: {cwd} 작업 디렉터리, {platform} 플랫폼, {shell} shell, {os_version} OS 버전, {git} git 저장소 여부, {provider} 제공자 식별자, {model} 모델 이름. 단락을 비우면 그 단락은 공식 원문으로 복원됩니다. 세 번째 단락은 전송 시 앞에 빈 줄이 하나 자동으로 붙습니다(공식 형태).", "上游未配置": "업스트림 미설정", "上游模型繁忙时会先排队(回一句「建议 N 秒后再来」):网关等一会儿再发同一请求,最多等几次。默认 2 次,可填 0–10;填 0 表示不等待,排队直接返回 503 并说明「不是登录态或额度问题」。": "업스트림 모델이 바쁘면 먼저 큐잉합니다(「N초 후에 다시 오세요」라고 응답하며). 게이트웨이는 잠시 기다렸다가 같은 요청을 다시 보내며, 최대 몇 번까지 기다립니다. 기본값 2회, 0–10 입력 가능하며, 0은 기다리지 않고 큐잉을 곧바로 503으로 반환하면서 「로그인 상태나 할당량 문제가 아닙니다」라고 설명합니다.", "上游用「逐字精确匹配」的方式审核请求体(不是语义审核):客户端注入的固定模板句、计费头字段名、以及某些裸错误码出现在报文里就会整单拦截,返回 400。开启本项后,网关在每次转发前改写这些指纹 —— 表头键值整段删除,承载语义的模板句只换一个词(如 official CLI for Claude → official CLI tool for Claude),对话内容与语义都不受影响。规则集是内置的,不需要也无法维护词表。关掉本项后客户端模板会原样发往上游,可能重新出现模板句被误拦的报错。": "업스트림은 요청 본문을 「글자 단위 정확 일치」 방식으로 검사합니다(의미 검사가 아닙니다). 클라이언트가 주입한 고정 템플릿 문구, 과금 헤더 필드 이름, 일부 날것의 오류 코드가 메시지에 나타나면 요청 전체가 차단되어 400을 반환합니다. 이 항목을 켜면 게이트웨이가 전달 전에 이런 핑거프린트를 매번 다시 씁니다. 헤더 키-값은 통째로 삭제하고, 의미를 담은 템플릿 문구는 단어 하나만 바꿉니다(예: official CLI for Claude → official CLI tool for Claude). 대화 내용과 의미는 영향을 받지 않습니다. 규칙 집합은 내장되어 있어 단어 목록을 유지할 필요도, 할 수도 없습니다. 이 항목을 끄면 클라이언트 템플릿이 그대로 업스트림으로 전송되어 템플릿 문구가 잘못 차단되는 오류가 다시 나타날 수 있습니다.", "上游请求四个阶段各自的等待上限(秒,1~3600):①「连接中超时」= 建立 TCP/TLS 连接或代理隧道的最大等待,默认 30 秒;②「等待响应超时」= 请求发出后等上游响应头的最大时间,默认 300 秒 —— 网关请求上游恒带 stream,响应头在 SSE 建立时就到达,与模型思考多久无关;③「流式响应空闲超时」= 流式响应相邻两块数据之间允许的最大空闲,收到新数据即重新计时,默认 300 秒 —— 上游长时间不吐数据即判定连接僵死并断开;④「非流式响应超时」= 读完整份非流式响应体的总预算(一次性计时、不重置),默认 300 秒。四项都是「等待上限」,只要数据还在来,正常的流式回答就一直往下传。保存后对下一个请求立即生效,不用重启。": "업스트림 요청의 네 단계별 대기 상한(초, 1~3600)입니다. ①「연결 타임아웃」= TCP/TLS 연결 또는 프록시 터널을 설정할 때 기다리는 최대 시간, 기본 30초. ②「응답 대기 타임아웃」= 요청을 보낸 뒤 업스트림 응답 헤더를 기다리는 최대 시간, 기본 300초. 게이트웨이는 업스트림에 항상 stream으로 요청하므로 응답 헤더는 SSE가 연결될 때 도착하며 모델이 얼마나 오래 생각하는지와는 무관합니다. ③「스트리밍 응답 유휴 타임아웃」= 스트리밍 응답의 인접한 두 데이터 블록 사이에 허용되는 최대 유휴 시간으로, 새 데이터를 받으면 다시 시간을 재며, 기본 300초입니다. 업스트림이 오랫동안 데이터를 내보내지 않으면 연결이 멈춘 것으로 판단해 끊습니다. ④「비스트리밍 응답 타임아웃」= 비스트리밍 응답 본문 전체를 읽는 총 예산(한 번만 시간을 재고 재설정하지 않음), 기본 300초. 네 항목 모두 「대기 상한」이며, 데이터가 계속 오는 한 정상적인 스트리밍 응답은 계속 전달됩니다. 저장 후 다음 요청부터 즉시 적용되며 재시작이 필요 없습니다.", "上游调试报文": "업스트림 디버그 페이로드", "上移": "위로", "上移规则": "규칙 위로 이동", "下次自动重试:{time}": "다음 자동 재시도: {time}", "下游正文": "다운스트림 본문", "下移": "아래로", "下移规则": "규칙 아래로 이동", "下载失败:{message}": "다운로드 실패: {message}", "不一致": "불일치", "不做会话识别,每条请求都重新按策略选路。": "세션을 식별하지 않고 요청마다 전략에 따라 다시 선택합니다.", "不做图片兼容": "이미지 호환 처리 안 함", "不可用": "사용 불가", "与网关同源的面板;完整管理功能在桌面端": "게이트웨이와 같은 출처의 패널입니다. 전체 관리는 데스크톱에서 하세요", "两张开关分别管桌面端(应用内窗口,也包含开启局域网访问后从其他设备访问的那份面板)与网页端(Docker / 服务端自托管的浏览器面板)。默认都开启;桌面端只在本机使用、嫌验证耗时可以关掉,网页端暴露在网络上,建议保持开启。": "두 스위치는 데스크톱 쪽(앱 내 창, LAN 액세스가 켜졌을 때 다른 기기에서 여는 패널 포함)과 웹 쪽(Docker / 서버가 호스팅하는 브라우저 패널)을 따로 제어합니다. 기본값은 둘 다 켜짐입니다. 로컬에서만 쓰고 인증 대기 시간이 부담되면 데스크톱 쪽을 꺼도 되지만, 네트워크에 노출되는 웹 쪽은 켜 두는 것을 권장합니다.", "两次输入的备份密码不一致": "두 번 입력한 백업 비밀번호가 일치하지 않습니다", "两次输入的新密码不一致": "새 비밀번호가 일치하지 않습니다", "两次重试之间的等待时间,两项共用,可填 0–300 秒。": "두 재시도 사이의 대기 시간이며 두 항목이 공유합니다. 0–300초를 입력할 수 있습니다.", "两种方式不会互相自动切换。": "두 방식 사이에서 자동으로 전환하지 않습니다.", "两组设置分别用于桌面端托管的网页管理面板与网页端(Docker / 服务端)的浏览器面板。是否可被其他设备访问取决于网络访问与防火墙设置,不限于局域网。两端默认都开启人机验证,建议保持开启。": "두 설정 그룹은 데스크톱 앱이 제공하는 웹 관리 패널과 Docker / 서버가 제공하는 브라우저 패널에 각각 적용됩니다. 다른 기기의 접근 가능 여부는 네트워크 접근과 방화벽 설정에 따라 달라지며 LAN으로 제한되지 않습니다. 두 환경 모두 사람 확인이 기본으로 켜져 있으며, 계속 켜 두는 것을 권장합니다.", "为了安全,开启前需要先注册一个": "보안을 위해, 켜기 전에 다음을 먼저 등록해야 합니다: ", "主进程未返回启动设置,请更新桌面端后重试": "메인 프로세스가 시작 설정을 반환하지 않았습니다. 데스크톱 앱을 업데이트한 후 다시 시도하세요", "主进程桥不可用": "메인 프로세스 브리지를 사용할 수 없습니다", "主题": "테마", "事件日志": "이벤트 로그", "事件日志保留天数": "이벤트 로그 보관 일수", "云同步": "클라우드 동기화", "产品名": "제품 이름", "产品名不能包含斜杠或版本号,请改用前缀匹配": "제품 이름에 슬래시나 버전을 포함할 수 없습니다. 접두사 일치를 사용하세요.", "人机验证": "사람 확인", "人机验证失败": "사람 확인 실패", "人机验证已完成": "사람 확인 완료", "人机验证还在计算,请稍候": "사람 확인을 계산 중입니다. 잠시 기다려 주세요", "仅在同一会话、同一问题和相同权限范围内复用;追问新细节会重新识读。缓存只存在本机内存。": "동일한 대화, 질문 및 권한 범위에서만 결과를 재사용합니다. 새로운 세부 사항을 질문하면 다시 읽습니다. 캐시는 로컬 메모리에만 보관됩니다.", "仅在账号、配置、签到或余额等实质内容变化时上传;导出时间或查询时间单独变化不会触发上传。": "계정, 설정, 체크인 결과, 잔액 등 실제 내용이 변경된 경우에만 업로드합니다. 내보내기 시각이나 조회 시각만 변경되면 업로드하지 않습니다.", "仅处理本次转发副本,不修改客户端选择,也不删除当前或历史图片。": "이번 전달 사본만 처리합니다. 클라이언트의 선택을 변경하거나 현재 또는 이전 이미지를 삭제하지 않습니다.", "仅影响面板登录与注册,不影响 API Key 调用。保存后生效,已登录会话不会退出。": "패널 로그인과 가입에만 적용되며 API 키 호출에는 영향을 주지 않습니다. 저장하면 적용되고 기존 로그인 세션은 유지됩니다.", "仅本机": "이 기기만", "仅用现有数据、不联网刷新": "보유 데이터만 사용, 온라인 갱신 안 함", "从云端恢复": "클라우드에서 복원", "从桌面图标启动,全屏、无地址栏。想卸载:长按图标删除,或清除浏览器站点数据。": "홈 화면 아이콘으로 실행합니다. 전체 화면, 주소 표시줄 없음. 삭제하려면 아이콘을 길게 눌러 제거하거나 브라우저 사이트 데이터를 지우세요.", "优先使用当前路由内的视觉模型": "현재 라우트의 비전 모델 우선 사용", "优先在当前路由内找可用的视觉模型,找不到就用 {model} 直接回答,不再回到原模型。": "현재 라우트 안에서 쓸 수 있는 비전 모델을 우선 사용하고, 없으면 {model}이(가) 원래 모델 대신 바로 답합니다.", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "그룹·순서·표시 설정을 기본값으로 되돌립니다. 직접 만든 그룹은 삭제됩니다(메뉴는 유지됩니다).", "会话图片压缩设置已刷新": "이미지 압축 설정을 새로 고쳤습니다", "位置": "위치", "位置与端口": "위치 및 포트", "使用 Rust 正则语法,保存时由后端校验;不支持环视和反向引用。": "Rust 정규식 문법을 사용하며 저장 시 백엔드에서 검증합니다. 전후방 탐색과 역참조는 지원하지 않습니다.", "使用中文单位(亿 / 万)": "중국어 단위 사용 (억 / 만)", "使用本地量级词(万 / 亿式)": "로컬 규모 단어 사용(만 / 억 단위)", "使用默认值": "기본값 사용 중", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "사이드바 레이아웃 모듈이 로드되지 않았습니다(ui/sidebar-layout.js는 app.js보다 먼저 포함되어야 합니다).", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "사이드바에 표시되는 메뉴가 없습니다. 설정 → 표시 → 사이드바 메뉴에서 필요한 항목을 켜세요.", "侧边栏菜单": "사이드바 메뉴", "保存上游原始报文(请求头、请求体、响应头、响应体)": "업스트림 원본 메시지 저장(요청 헤더, 요청 본문, 응답 헤더, 응답 본문)", "保存单独配置": "모델별 설정 저장", "保存后以这里的文本为准": "저장하면 여기의 텍스트가 우선합니다", "保存后对下一轮补货立即生效,不用重启。守卫跑在应用界面里:轻量模式关窗销毁界面期间无法铸造,走套餐池(Start Plan)通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。": "저장하면 다음 보충 라운드부터 즉시 적용되며 재시작은 필요 없습니다. 가드는 앱 UI 안에서 동작합니다: 경량 모드로 창을 닫아 UI가 파괴된 동안에는 토큰을 생성할 수 없으며, 플랜 풀 (Start Plan) 채널의 요청은 사유와 함께 503으로 요청 로그에 기록됩니다. UI를 다시 열면 자동으로 복구됩니다.", "保存后应用将重启以生效。": "저장 후 적용을 위해 앱이 다시 시작됩니다.", "保存后状态读取立即生效。后台不会自动生成令牌;需要人机验证时,在账号的「套餐明细」中主动开始验证。模型请求免验证时无需保持界面打开。": "저장 후 상태 조회 설정이 즉시 적용됩니다. 토큰은 자동으로 생성하지 않습니다. 인증이 필요하면 계정의 「플랜 상세」에서 직접 시작하세요. 모델 요청에 인증이 필요 없으면 화면을 열어 둘 필요가 없습니다.", "保存后立即生效,不用重启:策略与粘性作用于**下一次**转发的选路,进行中的请求不受影响。": "저장 즉시 적용, 재시작 불필요: 전략과 고정은 **다음** 전송의 선택부터 적용되며 진행 중인 요청에는 영향이 없습니다.", "保存后立即生效,不用重启;次数用尽仍失败时,错误原样返回给客户端。": "저장 후 재시작 없이 즉시 적용됩니다. 횟수를 다 써도 실패하면 오류가 그대로 클라이언트에 반환됩니다.", "保存后立即生效,不用重启;超时按上游失败处理(计入请求日志的「错误」列,并按「请求重试」的设置决定是否重试)。": "저장 후 재시작 없이 즉시 적용됩니다. 타임아웃은 업스트림 실패로 처리됩니다(요청 로그의 「오류」 열에 집계되며, 「요청 재시도」 설정에 따라 재시도 여부가 결정됩니다).", "保存后立即生效:保留天数和数量上限同时生效,调小任一项会立即清理超出的历史数据,且不可恢复。": "저장 즉시 적용됩니다. 보관 일수와 건수 상한이 함께 적용되며 어느 하나를 줄이면 초과한 과거 데이터가 즉시 삭제됩니다. 복구할 수 없습니다.", "保存后立即生效:改小保留天数会立刻删除超出的历史数据,且不可恢复。": "저장 후 즉시 적용됩니다. 보관 일수를 줄이면 초과된 과거 데이터가 즉시 삭제되며 복구할 수 없습니다.", "保存在当前网关,登录页也会公开显示。不会更改安装包、快捷方式、系统托盘图标或软件版本信息。": "현재 게이트웨이에 저장되며 로그인 페이지에도 공개 표시됩니다. 설치 파일, 바로가기, 시스템 트레이 아이콘 또는 소프트웨어 버전 정보는 변경하지 않습니다.", "保存并重启": "저장 후 재시작", "保存设置": "설정 저장", "保持当前路由范围,不跳到其他路由组。": "현재 라우트 범위를 유지하며 다른 라우트 그룹으로 넘어가지 않습니다.", "保活换行丢弃": "keepalive 개행 제거", "保留原图和对话,由视觉模型直接回答本次请求。": "원본 이미지와 대화를 유지하고 비전 모델이 이번 요청에 직접 답변합니다.", "保留原图,选择视觉模型": "원본 이미지를 유지하고 비전 모델 선택", "保留图片中的文字、代码、数字、布局与状态。识读失败就停止,不删图后继续回答。": "이미지의 텍스트, 코드, 숫자, 배치 및 상태를 보존합니다. 읽기에 실패하면 중지하며 이미지를 삭제한 채 답변을 계속하지 않습니다.", "保留天数已刷新": "보관 일수를 새로 고쳤습니다", "保留旧版配置兼容,当前不会自动连铸。每次点击「开始验证」只取得一枚令牌,失败或取消后停止。": "이전 설정과의 호환성을 위해 유지합니다. 토큰을 자동으로 연속 생성하지 않습니다. 「인증 시작」을 누를 때마다 토큰 하나만 가져오며 실패하거나 취소하면 중지합니다.", "保留草稿并读取最新设置": "초안을 유지하고 최신 설정 불러오기", "修改密码": "비밀번호 변경", "修改密码需要输入当前密码;修改成功后,其他设备 / 浏览器上的登录会立即失效,当前这条会话保留。": "비밀번호 변경에는 현재 비밀번호가 필요합니다. 성공하면 다른 기기·브라우저의 로그인은 즉시 해제되고 현재 세션만 유지됩니다.", "值": "값", "值与默认值相同的行不占覆盖(存的是「改过的键」,不是全量配置);值留空保存表示这个头不发送,删除改过的行表示回落默认值。改完立即生效,不用重启。": "기본값과 같은 값의 행은 덮어쓰기에 포함되지 않습니다(저장되는 것은 「수정된 키」이며 전체 설정이 아닙니다). 값을 비워 저장하면 해당 헤더를 전송하지 않고, 수정한 행을 삭제하면 기본값으로 돌아갑니다. 수정 후 재시작 없이 즉시 적용됩니다.", "值(留空 = 不发送)": "값(비우면 = 전송 안 함)", "停止并说明原因": "중지하고 이유 표시", "像素": "px", "允许其他设备访问前,需要设置面板管理员账号与密码。注册完成后会继续开启流程并重启应用。": "다른 기기의 접근을 허용하기 전에 패널 관리자 계정과 비밀번호를 설정하세요. 등록이 완료되면 네트워크 접근을 켜고 앱을 다시 시작합니다.", "允许其他设备访问网关": "다른 기기의 게이트웨이 접근 허용", "允许局域网内的设备访问网关": "LAN 내 기기의 게이트웨이 접근 허용", "允许无 Key 裸跑": "키 없이 실행 허용", "允许浏览器里的页面跨来源调用网关(/v1/*)": "브라우저 페이지가 교차 출처로 게이트웨이를 호출하도록 허용(/v1/*)", "允许的域名": "허용된 호스트 이름", "先发送原图,明确拒图后补救": "원본 이미지를 먼저 보내고 명시적으로 거부된 경우에만 호환 처리", "先把图片交给视觉模型读一遍,再让原模型结合读到的内容回答。": "먼저 비전 모델이 이미지를 읽고, 원래 모델이 읽은 내용을 바탕으로 답합니다.", "全局配置": "전역 설정", "全部已配置": "모두 설정됨", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 中,加密密钥单独保存在库外。跨机器备份请使用「整库备份 / 恢复」,不要只复制数据库。更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "계정, 로그, 요청 기록, 디버그 데이터 및 설정은 agent2api.db에 저장되며 암호화 키는 별도로 보관됩니다. 기기 간 이동에는 데이터베이스만 복사하지 말고 전체 백업 / 복원을 사용하세요. 저장 위치를 변경하려면 AGENT2API_PROXY_HOME을 설정한 후 앱을 다시 시작하세요.", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 这一个 SQLite 数据库里。备份时只需拷贝这个文件;更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "모든 데이터(계정, 이벤트 로그, 요청 기록, 디버그 메시지, 설정)는 구성 디렉터리의 agent2api.db라는 하나의 SQLite 데이터베이스에 통합 저장됩니다. 백업할 때는 이 파일만 복사하면 됩니다. 저장 위치를 바꾸려면 환경 변수 AGENT2API_PROXY_HOME을 설정한 후 프로그램을 다시 시작하세요.", "全部角色": "모든 역할", "全部角色沿用原有行为,包含思考内容和工具参数;指定角色时只改消息正文,未选角色及思考内容、工具参数保持原样。": "모든 역할은 추론 내용과 도구 인수를 포함하는 기존 동작을 유지합니다. 역할을 지정하면 메시지 본문만 수정하며 선택하지 않은 역할, 추론 내용과 도구 인수는 그대로 유지합니다.", "共享视觉模型已变更,请重新确认并保存,避免把图片交给未经确认的模型。": "공유 비전 모델이 변경되었습니다. 확인하지 않은 모델에 이미지를 보내지 않도록 다시 확인하고 저장하세요.", "共用设置:{providers}": "공유 설정: {providers}", "关闭后不再提供网页管理面板,本机桌面程序仍可正常管理;已开启的 API 转发不受影响。": "끄면 웹 관리 패널 제공을 중단합니다. 이 기기의 데스크톱 앱에서는 계속 관리할 수 있으며, API 전달에는 영향이 없습니다.", "关闭后手动上传 / 下载也会被拒绝。": "끄면 수동 업로드/다운로드도 거부됩니다.", "关闭后网关只监听 127.0.0.1,其他设备将无法直接连接,网页管理面板也会一并关闭。已配置的网关 Key 与账号不受影响。": "끄면 게이트웨이가 127.0.0.1에서만 수신하므로 다른 기기에서 직접 연결할 수 없으며, 웹 관리 패널도 함께 꺼집니다. 기존 게이트웨이 키와 계정에는 영향이 없습니다.", "关闭后网关回到只监听 127.0.0.1,局域网内的设备将无法继续访问;已配置的网关 Key 与账号都不受影响。": "끄면 게이트웨이가 다시 127.0.0.1만 수신하며 LAN 내 기기는 더 이상 접근할 수 없습니다. 이미 설정한 게이트웨이 키와 계정은 영향을 받지 않습니다.", "关闭后,管理界面不再从局域网提供,只有本机的桌面程序可以管理;已开启的 API 转发不受影响。": "끄면 관리 화면이 더 이상 LAN에 제공되지 않고 로컬 데스크톱 앱에서만 관리할 수 있습니다. 이미 켜 둔 API 포워딩은 영향을 받지 않습니다.", "关闭局域网访问": "LAN 접근 끄기", "关闭并重启": "닫고 재시작", "关闭思考": "추론 비활성화", "关闭窗口即退出程序,后台转发随之中断": "창을 닫으면 프로그램이 종료되고 백그라운드 포워딩도 중단됩니다", "关闭窗口时最小化到托盘": "창을 닫을 때 트레이로 최소화", "关闭窗口时程序不退出,转发继续在后台运行;退出请用托盘菜单": "창을 닫아도 프로그램이 종료되지 않고 포워딩이 백그라운드에서 계속 실행됩니다. 종료하려면 트레이 메뉴를 사용하세요", "关闭网络访问": "네트워크 접근 끄기", "兼容处理最长等待": "호환 처리 최대 대기", "兼容处理最长等待(秒)": "호환 처리 최대 대기 시간(초)", "内容拦截降级": "콘텐츠 차단 폴백", "内置识别、自定义规则与来源声明": "내장 식별, 사용자 규칙 및 출처 선언", "内置软件标识规则": "내장 소프트웨어 식별 규칙", "内置默认": "내장 기본값", "内置默认提示词": "내장 기본 시스템 프롬프트", "再输入一次新密码": "새 비밀번호를 한 번 더 입력하세요", "凭据类请求头已脱敏。": "자격 증명 계열 요청 헤더는 마스킹되었습니다.", "凭证只保存在这台手机上,按服务器分别存放": "자격 증명은 이 기기에만 저장되며 서버별로 따로 보관됩니다", "出问题时把这一页截图,或点「复制全部信息」把文本贴进反馈,一般就能定位到大致原因。": "문제가 생기면 이 페이지를 캡처하거나 \"모든 정보 복사\"로 텍스트를 복사해 제보에 붙여 주세요. 대개 그것만으로 원인을 좁힐 수 있습니다.", "分享图标在 Safari 底部工具栏中间": "공유 아이콘은 Safari 하단 도구 막대 가운데에 있습니다", "分组名": "그룹 이름", "分组名,例如「常用」": "그룹 이름, 예: \"즐겨찾기\"", "切换视觉模型": "비전 모델로 전환", "切换视觉模型 · 视觉模型回答": "모델 전환 · 비전 모델이 답변", "切换视觉模型配置": "비전 모델 전환 설정", "切换账号重试次数": "계정 전환 재시도 횟수", "刚刚从 models.dev 拉到的最新数据": "models.dev에서 방금 가져온 최신 데이터", "删除 {code}": "{code} 삭제", "删除分组": "그룹 삭제", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "그룹 \"{name}\"을(를) 삭제할까요? 메뉴 {n}개는 \"{target}\"(으)로 이동하며 사라지지 않습니다.", "删除匹配内容": "일치한 내용 삭제", "删除后不再接受这个分类的来源声明,历史记录保留原来的名称和用量。": "삭제 후 이 분류의 출처 선언은 허용되지 않습니다. 과거 기록은 원래 이름과 사용량을 유지합니다.", "删除后,新请求不再使用这条规则;历史记录保持不变。": "삭제 후 새 요청에는 이 규칙이 사용되지 않습니다. 과거 기록은 유지됩니다.", "删除客户端分类": "클라이언트 분류 삭제", "删除状态码 {code}": "상태 코드 {code} 삭제", "删除空分组「{name}」?": "빈 그룹 \"{name}\"을(를) 삭제할까요?", "删除识别规则": "식별 규칙 삭제", "删除这个分组(组内菜单移到第一组)": "이 그룹 삭제(메뉴는 첫 그룹으로 이동)", "刷新": "새로고침", "刷新失败:{message}": "새로고침 실패: {message}", "前台运行": "포그라운드 실행", "前缀": "접두사", "剥离上游审核黑名单指纹(改写请求体里的模板句与表头)": "업스트림 검열 블랙리스트 핑거프린트 제거(요청 본문의 템플릿 문구와 헤더 재작성)", "功能建议": "기능 제안", "加入备选": "대체 모델로 추가", "加密备份必填,旧 SQL 可留空": "암호화 백업은 필수, 기존 SQL은 비워도 됩니다", "包含": "포함", "包含日志与调试报文": "로그와 디버그 페이로드 포함", "包含:{items}": "포함: {items}", "匹配内容": "일치 패턴", "匹配内容不能为空,且最多 {max} 个字符": "일치 패턴은 필수이며 최대 {max}자까지 입력할 수 있습니다", "匹配内容不能为空,最长 256 个字符": "일치 조건을 256자 이내로 입력하세요", "匹配原文含零宽空格,词表预览用 \\u{200b} 标出;编辑时保留该字符。": "패턴에 너비가 없는 공백이 포함되어 있습니다. 미리보기에서는 \\u{200b}로 표시하며 편집 시 해당 문자를 유지하세요.", "匹配方式": "일치 방식", "区域(Region)": "리전(Region)", "华为云 OBS": "화웨이 클라우드 OBS", "单独指定视觉模型": "비전 모델 별도 지정", "单轮铸造上限": "회당 발행 한도", "占用大小": "사용 용량", "历史未记录识别依据": "과거 식별 근거가 기록되지 않음", "原来的「全局方式 + 模型单独配置」已按相同意思自动填成下面的模型名单,可以照用也可以重新调整;改动一处之后就会按新形式存下来。": "이전의 \"전역 방식 + 모델별 개별 설정\"을 같은 의미로 아래 모델 목록에 채워 넣었습니다. 그대로 쓰거나 다시 조정해도 됩니다. 한 곳이라도 바꾸면 새 형식으로 저장됩니다.", "原模型不能直接看图": "원래 모델이 이미지를 직접 읽을 수 없음", "原模型根据识读内容回答": "원래 모델이 이미지 설명을 바탕으로 답변", "去反馈": "신고하기", "去申请": "신청하기", "反馈与需求": "피드백 및 요청", "发现缺货时一轮最多铸几个(连铸之间固定隔 500 毫秒)。默认 1 个:SDK 同一实例连铸容易互相干扰。调大补货更快,但单轮连铸越多越容易触发上游风控。可填 1–5。": "부족 발견 시 한 번에 최대 몇 개까지 발행할지 정합니다(연속 발행 사이는 고정 500 밀리초). 기본값은 1: 같은 SDK 인스턴스에서 연속 발행하면 서로 간섭하기 쉽기 때문입니다. 크게 하면 보충이 빨라지지만 한 번에 많이 발행할수록 업스트림 리스크 관리에 걸리기 쉽습니다. 1–5 입력 가능.", "取消勾选后只备份业务数据(账号、配置与余额记录),文件显著变小;事件日志、请求统计与调试报文不会进备份文件。": "체크를 해제하면 업무 데이터(계정, 설정, 잔액 기록)만 백업되어 파일이 훨씬 작아집니다. 이벤트 로그, 요청 통계, 디버그 페이로드는 백업에 포함되지 않습니다.", "变更网页管理面板": "웹 관리 패널 변경", "只列单独配置过的家,其余沿用上面的全局配置": "개별 설정한 제공자만 표시되며, 나머지는 위의 전역 설정을 따릅니다", "只对「排队制」的上游生效:模型繁忙时上游不报错,只回一句「建议 N 秒后再来」,网关按建议时长等一会儿再发同一请求,等满次数仍排不上才把「排队中」作为错误返回(HTTP 503,文案会说明这不是登录态或额度问题)。等待发生在首个字节之前,吃的是「等待响应超时」那份预算 —— 两项设置一起决定一次请求最多卡多久;排队不会标记账号限额、也不会换账号(换谁都一样在排队)。保存后对下一个请求立即生效,不用重启。": "「큐잉 방식」 업스트림에만 적용됩니다. 모델이 바쁠 때 업스트림은 오류를 내지 않고 「N초 후에 다시 오세요」라고만 응답합니다. 게이트웨이는 안내된 시간만큼 기다렸다가 같은 요청을 다시 보내며, 횟수를 다 채울 때까지 큐에 들어가지 못하면 「큐잉 중」을 오류로 반환합니다(HTTP 503, 이는 로그인 상태나 할당량 문제가 아니라는 설명이 함께 표시됩니다). 대기는 첫 바이트 이전에 발생하며 「응답 대기 타임아웃」 예산을 소모합니다. 두 설정이 함께 요청 하나가 최대 얼마나 지연될 수 있는지를 결정합니다. 큐잉은 계정에 할당량 초과를 표시하지 않고 계정도 바꾸지 않습니다(누구든 마찬가지로 큐에 대기합니다). 저장 후 다음 요청부터 즉시 적용되며 재시작이 필요 없습니다.", "只影响读图那一步的思考深度;两块设置统一用这个选择。": "이미지를 읽는 단계의 사고 깊이에만 영향을 줍니다. 두 블록이 이 선택을 함께 사용합니다.", "只有已安装、启用并声明了设置项的提供商会出现在这里。可前往插件页检查安装与启用状态。": "설치 및 활성화된 플러그인이 설정 항목을 제공하는 경우에만 여기에 표시됩니다. 플러그인 페이지에서 설치 및 활성화 상태를 확인하세요.", "只沿用模型与思考等级,不借用视觉服务的内部 Key;仍受当前请求权限限制。": "모델과 추론 수준만 재사용하고 비전 서비스의 내부 Key는 사용하지 않습니다. 현재 요청의 권한 제한이 그대로 적용됩니다.", "只清掉这个浏览器存的 Key,不影响网关": "이 브라우저에 저장된 Key만 삭제합니다. 게이트웨이는 영향 없음", "只覆盖指定提供商的指定模型,其余跟随全局。": "지정한 제공업체의 지정 모델에만 적용하며 나머지는 전역 설정을 따릅니다.", "可跨提供商多选;只处理这些模型看不了的图片。": "제공자를 넘어 여러 개 선택할 수 있습니다. 이 모델들이 읽지 못하는 이미지만 처리합니다.", "可跨提供商多选;这些模型的请求会整体改交视觉模型。": "제공자를 넘어 여러 개 선택할 수 있습니다. 이 모델들의 요청은 통째로 비전 모델에 넘깁니다.", "可选。部分服务(如中国科技云数据胶囊)会按 User-Agent 校验凭据绑定的客户端类型,此时填写包含该类型名的字符串(例如 rclone/v1.67.0)。留空则维持默认。": "선택 사항. 일부 서비스(예: 중국과학기술망 데이터 캡슐)는 User-Agent로 자격 증명에 연결된 클라이언트 유형을 검증합니다. 이 경우 유형 이름이 포함된 문자열(예: rclone/v1.67.0)을 입력하세요. 비워 두면 기본값이 유지됩니다.", "合计只累加当前筛选后可见的账号,筛选、搜索一改数字就跟着变。": "합계는 현재 필터에서 보이는 계정만 더합니다. 필터나 검색을 바꾸면 숫자도 함께 바뀝니다.", "合计按整组统计(默认):不受筛选、搜索影响,被筛掉与已禁用的账号也计入。": "합계는 전체 그룹 기준입니다(기본값). 필터와 검색의 영향을 받지 않으며, 필터에서 제외된 계정과 비활성 계정도 포함됩니다.", "同一会话、同一问题、相同权限范围内复用;追问新细节会重新识读。": "같은 세션, 같은 질문, 같은 권한 범위 안에서 재사용합니다. 새로운 세부를 물으면 다시 읽습니다.", "同一会话在 5 分钟内尽量跟住同一个账号;停了 5 分钟再发就算新会话。多数场景用它 —— 多轮对话少换号,也不至于把账号焊死。": "같은 세션은 5 분 안에 가능한 한 같은 계정을 유지하고, 5 분 이상 비면 새 세션으로 간주합니다. 대부분의 상황에 권장 — 여러 턴의 대화에서 계정이 자주 바뀌지 않으면서 특정 계정에 고정되지도 않습니다.", "同一会话在 6 小时内跟住同一个账号;适合一坐几个小时的长会话,上游的上下文缓存能吃到更多。": "같은 세션은 최대 6 시간 동안 같은 계정을 유지합니다. 몇 시간씩 이어지는 긴 세션에 적합하며, 업스트림 컨텍스트 캐시를 훨씬 더 활용할 수 있습니다.", "同一提供商的同一模型不能重复配置": "동일한 제공업체의 동일한 모델을 중복 설정할 수 없습니다", "同一账号重试次数": "동일 계정 재시도 횟수", "同时开放网页管理面板": "웹 관리 패널도 함께 공개", "同步密码": "동기화 비밀번호", "名单最多 {max} 个状态码": "목록에는 상태 코드를 최대 {max}개까지 넣을 수 있습니다", "后端没有返回版本信息": "백엔드가 버전 정보를 반환하지 않았습니다", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "고정 항목 \"설정\"이 있어 그룹 전체를 숨길 수 없습니다(다른 메뉴는 개별로 숨길 수 있습니다)", "启动与托盘": "시작 및 트레이", "启动时间": "시작 시각", "启用云同步": "클라우드 동기화 사용", "启用图片兼容": "이미지 호환 처리 활성화", "启用规则": "규칙 활성화", "启用规则:{name}": "규칙 활성화: {name}", "命中依据:{header} · {pattern}": "일치 근거: {header} · {pattern}", "命中这些上游状态码的失败不在同一账号重发,直接换下一个账号继续试(换号占用「切换账号重试次数」,换满仍失败才把错误原样返回给客户端)。输入 100–599 的状态码后回车添加,点 × 或退格删除;默认 402(积分不足)。清空全部表示任何错误都照常重试。": "이 업스트림 상태 코드에 해당하는 실패는 같은 계정에서 다시 보내지 않고 바로 다음 계정으로 넘어가 계속 시도합니다(계정 전환은 「계정 전환 재시도 횟수」를 소모하며, 횟수를 다 써도 실패하면 오류가 그대로 클라이언트에 반환됩니다). 100–599 사이의 상태 코드를 입력하고 Enter를 누르면 추가되고, ×를 누르거나 백스페이스로 삭제합니다. 기본값은 402(크레딧 부족)입니다. 모두 비우면 모든 오류를 평소처럼 재시도합니다.", "品牌 Logo": "브랜드 로고", "品牌设置": "브랜드 설정", "品牌设置已保存": "브랜드 설정을 저장했습니다", "品牌预览": "브랜드 미리 보기", "哪些模型用这种方式": "이 방식을 쓸 모델", "固定": "고정", "图标经 Magpie 引入,未单独记录 Lobe Icons 的图标版本;以上版本仅用于核对许可。": "아이콘은 Magpie를 통해 도입되었습니다. Lobe Icons 아이콘 자체의 리비전은 별도로 기록되지 않았으며, 위 리비전은 라이선스 확인에만 사용되었습니다.", "图片与相关对话将交给配置的视觉模型处理,可能增加等待时间和费用。请确认这些服务可以接收你的图片。": "이미지와 관련 대화가 설정된 비전 모델로 전송되며 대기 시간과 비용이 늘어날 수 있습니다. 해당 서비스에 이미지를 보내도 되는지 확인하세요.", "图片兼容": "이미지 호환 처리", "图片兼容当前是关闭的:下面两块设置照样能改、会被保留,但不会对任何请求生效。": "이미지 호환이 현재 꺼져 있습니다. 아래 두 블록은 그대로 수정할 수 있고 유지되지만 어떤 요청에도 적용되지 않습니다.", "图片兼容设置已保存,仅对新请求生效。": "이미지 호환 설정을 저장했습니다. 새 요청에만 적용됩니다.", "图片兼容设置读取失败": "이미지 호환 설정을 불러오지 못했습니다", "图片压缩": "이미지 압축", "图片最长边超过这个值就等比缩小(只缩不放)。默认 2048,可填 256–8192 —— 多数视觉模型在这个量级已经够用,调小更省流量、但细节会丢。": "이미지의 긴 변이 이 값을 넘으면 비율을 유지해 축소합니다(확대하지 않음). 기본 2048, 256~8192까지 지정할 수 있습니다. 대부분의 비전 모델에는 이 크기면 충분하며, 작게 잡으면 트래픽은 줄지만 세부 묘사가 사라집니다.", "图片能力未知时": "이미지 지원 여부를 알 수 없을 때", "图片过大、格式错误或下载失败不会被当作模型不支持图片。": "이미지가 너무 크거나 형식이 잘못되었거나 내려받기에 실패한 경우는 모델이 이미지를 지원하지 않는 것으로 보지 않습니다.", "在同一个账号上原地重发几次(不含首发;整条请求共用一份,用完后换来的账号只发一次就继续换)。可填 0–10,0 表示失败立即换号。": "같은 계정에서 제자리로 재전송하는 횟수입니다(최초 전송은 제외. 요청 전체가 이 횟수를 공유하며, 소진 후 전환된 계정은 한 번만 보내고 다시 전환합니다). 0–10 입력 가능하며, 0이면 실패 시 즉시 계정을 전환합니다.", "在这里直接编辑提示词正文:保存后以这份文本为准(优先于上面的提示词文件),清空则回到文件 / 内置默认。改一个字不必再去编辑器里开文件。": "여기서 시스템 프롬프트 본문을 직접 편집합니다. 저장하면 이 텍스트가 우선하며(위의 시스템 프롬프트 파일보다 우선), 비우면 파일 / 내장 기본값으로 돌아갑니다. 한 글자만 고치려고 편집기에서 파일을 열 필요가 없습니다.", "在途请求": "처리 중 요청", "地址格式不对。填「IP 或域名:端口」,可带 http:// 或 https://,例如 192.168.1.23:3065": "주소 형식이 올바르지 않습니다. \"IP 또는 도메인:포트\"로 입력하세요 (http:// 또는 https:// 사용 가능). 예: 192.168.1.23:3065", "坚果云": "Jianguoyun(Nutstore)", "坚果云需使用「第三方应用密码」(账户信息 → 安全选项里生成),地址必须是 /dav/ 下的目录。": "Jianguoyun은 '타사 앱 비밀번호'(계정 정보 → 보안에서 생성)를 사용해야 하며, 주소는 /dav/ 아래 디렉터리여야 합니다.", "填「IP 或域名:端口」。协议可写 http:// 或 https://,不写默认 http;http 不写端口默认 3065,https 默认 443。地址里的 /m、/v1 会自动去掉。": "\"IP 또는 도메인:포트\"를 입력하세요. 프로토콜은 http:// 또는 https://를 쓸 수 있으며(생략 시 http), 포트를 생략하면 http는 3065, https는 443이 됩니다. 주소의 /m, /v1은 자동으로 제거됩니다.", "处理方式": "처리 방식", "处理示意": "처리 흐름", "备份中…": "백업 중…", "备份包含账号凭证、网关 Key、GitHub 令牌与云同步凭据的恢复密钥,整个文件受备份密码保护。请分开保管文件与密码;忘记密码无法恢复。": "백업에는 계정 자격 증명, 게이트웨이 Key, GitHub 토큰 및 클라우드 동기화 자격 증명의 복원 키가 포함되며 파일 전체가 백업 비밀번호로 보호됩니다. 파일과 비밀번호를 따로 보관하세요. 비밀번호를 잊으면 복원할 수 없습니다.", "备份密码": "백업 비밀번호", "备份密码不能超过 1024 字节": "백업 비밀번호는 1024바이트를 초과할 수 없습니다", "备份密码至少需要 12 位,建议使用较长且不重复的密码": "12자 이상이 필요하며 길고 재사용하지 않는 비밀번호를 권장합니다", "备份整库": "데이터베이스 백업", "备份文件内含全部账号凭证、网关 API Key 与面板管理员凭据,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "백업 파일에는 모든 계정 자격 증명, 게이트웨이 API 키, 패널 관리자 자격 증명이 들어 있어 그대로 로그인에 사용할 수 있습니다. 안전하게 보관하고 외부로 유출하거나 공개된 곳에 업로드하지 마세요.", "备选模型": "대체 모델", "复制全部信息": "모든 정보 복사", "复制给客户端": "클라이언트용으로 복사", "复用相同图片的识读结果": "동일한 이미지의 읽기 결과 재사용", "外观": "화면", "外观 · 接入 · 关于": "화면 · 연결 · 정보", "多个客户端标识冲突": "여러 클라이언트 식별 정보 충돌", "天": "일", "天数": "일수", "失败 {n} 个": "실패 {n}개", "失败 {n} 个:{detail}": "실패 {n}개: {detail}", "失败后最多再换几个账号试(填 N = 最多换 N 个,首发那个不算)。换到同一家名下另一个账号、或换到另一家,都各算一次;换满仍失败就返回错误。可填 0–10,0 表示失败立即报错。": "실패 후 최대 몇 개의 계정으로 더 시도할지 정합니다(N 입력 = 최대 N개 전환, 최초 계정은 제외). 같은 제공자의 다른 계정으로 바꾸거나 다른 제공자로 바꾸는 것 모두 1회로 계산하며, 횟수를 다 써도 실패하면 오류를 반환합니다. 0–10 입력 가능하며, 0이면 실패 시 즉시 오류를 반환합니다.", "存储桶(Bucket)": "버킷(Bucket)", "存储概况已刷新": "저장소 개요를 새로 고쳤습니다", "安全": "보안", "安装到主屏幕": "홈 화면에 추가", "安装到桌面": "앱으로 설치", "安装包形态": "설치 프로그램 종류", "完全相同": "완전 일치", "官方原文只有一句:声明自己是 ZCode。": "공식 원문은 한 문장뿐입니다: 자신이 ZCode임을 선언합니다.", "实际处理:": "실제 처리: ", "客户端 system 原样出站。": "클라이언트 system을 그대로 전송합니다.", "客户端 system 原样出站(只靠指纹脱敏改写模板句)。": "클라이언트 system을 그대로 전송합니다(핑거프린트 마스킹으로 템플릿 문구만 재작성).", "客户端专用请求头": "클라이언트 전용 헤더", "客户端名称": "클라이언트 이름", "客户端名称不能为空,最长 80 个字符": "클라이언트 이름을 80자 이내로 입력하세요", "客户端名称重复或与内置名称冲突": "클라이언트 이름이 중복되거나 내장 이름과 충돌함", "客户端标识无效或重复": "클라이언트 식별 정보가 잘못되었거나 중복됨", "客户端识别": "클라이언트 식별", "客户端识别入口尚未就绪,请刷新页面后重试": "클라이언트 식별 기능이 준비되지 않았습니다. 페이지를 새로고침한 뒤 다시 시도하세요.", "客户端识别设置读取失败": "클라이언트 식별 설정을 불러오지 못했습니다", "客户端(Claude Code / Codex 等 CLI)会在 system 提示词里注入几十句固定模板,上游按逐字匹配审核,命中就整单拦截(HTTP 400)。指纹脱敏能改写实测命中过的那几句,但换一个客户端版本就可能冒出新的。这里可以把 system 整段换成网关自己那份:①「透传」= 不动客户端 system(默认,行为与之前完全一致);②「替换」= 删掉客户端所有 system / developer 消息,换成网关的提示词(客户端项目规范随之消失);③「追加」= 在开头连续 system 块之后插入一条网关提示词,既有消息逐字不动(客户端规范与网关提示词并用)。那份提示词有两个来源:提示词文件(留空用内置默认),或直接在界面上编辑正文 —— 编辑过就以那份正文为准(优先于文件),清空则回到文件 / 内置默认。另外,透传 / 追加模式下撞了内容拦截(多半是指纹误报)时,网关会自动换一段最小中性提示词重试一次,并把「降级期」开到次日 00:00 —— 期间所有请求直接带中性提示词出门,不再先撞一次 400;这里能看见并提前解除它。上面几项是**默认值**:想给某个提供商单独配,用下面的「按提供商」加一行(带「网关自带」的家默认就列在那里)—— 不同的上游对这些内容的接受程度不一样。": "클라이언트(Claude Code / Codex 등 CLI)는 system 프롬프트에 수십 개의 고정 템플릿 문구를 주입하며, 업스트림은 글자 단위 일치로 검사해 걸리면 요청 전체를 차단합니다(HTTP 400). 핑거프린트 마스킹은 실측으로 걸렸던 몇 문장을 재작성할 수 있지만, 클라이언트 버전이 바뀌면 새로운 문구가 나타날 수 있습니다. 여기서는 system 전체를 게이트웨이의 것으로 바꿀 수 있습니다. ①「패스스루」= 클라이언트 system을 건드리지 않습니다(기본값, 이전과 동일한 동작). ②「교체」= 클라이언트의 모든 system / developer 메시지를 삭제하고 게이트웨이 시스템 프롬프트로 바꿉니다(클라이언트 프로젝트 규칙도 함께 사라집니다). ③「추가」= 맨 앞의 연속된 system 블록 뒤에 게이트웨이 시스템 프롬프트 한 건을 삽입하고 기존 메시지는 그대로 둡니다(클라이언트 규칙과 게이트웨이 시스템 프롬프트를 함께 사용). 이 시스템 프롬프트에는 두 가지 출처가 있습니다. 시스템 프롬프트 파일(비워 두면 내장 기본값 사용) 또는 화면에서 직접 본문 편집 — 편집한 경우 그 본문이 우선하며(파일보다 우선) 비우면 파일 / 내장 기본값으로 돌아갑니다. 또한 패스스루 / 추가 모드에서 콘텐츠 차단(대부분 핑거프린트 오탐)에 걸리면 게이트웨이가 자동으로 최소한의 중립 시스템 프롬프트로 한 번 재시도하고 「폴백 기간」을 다음 날 00:00까지 켭니다. 기간 중에는 모든 요청이 중립 시스템 프롬프트를 달고 나가며 400에 먼저 부딪히지 않습니다. 여기서 이 상태를 확인하고 미리 해제할 수 있습니다. 위 항목들은 **기본값**입니다. 특정 제공자에 따로 설정하려면 아래 「제공자별 설정」에서 행을 추가하세요(「게이트웨이 내장」이 있는 제공자는 기본으로 거기에 나열됩니다). 업스트림마다 이런 내용을 받아들이는 정도가 다릅니다.", "家之间仍按优先级,只有同一家内部轮流用各账号 —— 想优先用某几家、又不愿把某一家的某个账号焊死时用它。": "제공자 간에는 우선순위를 따르고, 같은 제공자 내에서만 계정이 순환합니다 — 몇몇 제공자를 우선하되 특정 계정에 고정하고 싶지 않을 때 사용합니다.", "家内轮询": "제공자 내 순환", "容器内更新": "컨테이너 내 업데이트", "密码、文件或密钥校验失败时不会替换主库;替换阶段失败会自动尝试还原,实际结果以上方错误说明为准。": "비밀번호, 파일 또는 키 검증에 실패하면 원본 데이터베이스는 변경되지 않습니다. 교체 단계에서 실패하면 자동 복구를 시도하며 실제 결과는 위 오류 설명에 표시됩니다.", "密码加密 · 包含恢复密钥": "비밀번호 암호화 · 복원 키 포함", "密码至少 8 位": "비밀번호는 8자리 이상", "对话里内嵌的 base64 大图(截图、照片)既撑大请求体,也拉高按像素折算的上游计费。开启后,网关在转发前把超过阈值的图等比缩到长边上限、重新存成 JPEG —— 只改发给上游的副本,请求日志里保存的仍是你发来的原图。同一张原图在多轮对话里重复出现时复用上一次的压缩结果,不会每轮重算。http 链接图片、GIF 动图、SVG 一律不动;压完反而更大的图也保留原图。只作用在对话场景,生图与图片编辑不受影响。默认开启;不想要的话把开关关掉即可。": "대화에 포함된 큰 base64 이미지(스크린샷, 사진)는 요청 본문을 키울 뿐 아니라 픽셀 기준으로 과금되는 상류 비용도 높입니다. 켜면 포워딩 전에 임계값을 넘는 이미지를 긴 변 한도까지 축소하고 JPEG으로 다시 인코딩합니다. 바뀌는 것은 상류로 보내는 사본뿐이며, 요청 로그에는 보낸 원본 이미지가 그대로 저장됩니다. 같은 원본 이미지가 여러 턴에 걸쳐 다시 실리면 이전 압축 결과를 재사용하고 매번 다시 계산하지 않습니다. http 링크 이미지, 애니메이션 GIF, SVG는 전혀 건드리지 않고, 다시 인코딩하면 오히려 커지는 이미지도 원본 그대로 둡니다. 대화에만 적용되며 이미지 생성과 편집에는 영향을 주지 않습니다. 기본값은 켜짐이며, 원하지 않으면 스위치를 끄면 됩니다.", "导入前会把本机的 account.key 改名备份(account.key.bak-时间戳),不会直接删除。": "가져오기 전에 로컬 account.key를 account.key.bak-<타임스탬프>로 이름을 바꿔 백업하며, 삭제하지는 않습니다.", "导入完成:{summary}": "가져오기 완료: {summary}", "导入密钥失败:{message}": "키 가져오기 실패: {message}", "导入密钥并继续": "키 가져오고 계속", "导入账号": "계정 가져오기", "导出中…": "내보내는 중…", "导出会把全部账号与自定义提供商定义写入一个 JSON 文件,可以拷到另一台机器上导入后继续使用。导入采用合并策略:同提供商下按业务身份(UID / userId / apiKey 等)去重 —— 已存在的账号只更新凭证,保留本机原有的优先级顺序;新账号追加到转发顺序末尾,不会抢占当前正在使用的账号;自定义提供商定义按 id 合并,本机缺失时自动补建。": "내보내기는 모든 계정과 커스텀 제공자 정의를 하나의 JSON 파일에 기록하며, 다른 컴퓨터로 복사해 가져온 뒤 계속 사용할 수 있습니다. 가져오기는 병합 방식을 사용합니다. 같은 제공자 아래에서는 비즈니스 신원(UID / userId / apiKey 등)으로 중복을 제거합니다. 이미 있는 계정은 자격 증명만 업데이트하고 이 컴퓨터의 기존 우선순위 순서를 유지하며, 새 계정은 포워딩 순서 끝에 추가되어 현재 사용 중인 계정을 밀어내지 않습니다. 커스텀 제공자 정의는 id 기준으로 병합하고, 이 컴퓨터에 없으면 자동으로 생성합니다.", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义": "내보내기 파일에 accessToken / refreshToken / apiKey 등 자격 증명과 커스텀 제공자 정의가 포함됩니다", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "내보내기 파일에는 accessToken / refreshToken / apiKey 등 자격 증명과 커스텀 제공자 정의가 포함되어 있으며, 바로 로그인에 사용할 수 있습니다. 안전하게 보관하고 외부에 전달하거나 공공장소에 업로드하지 마세요.", "导出账号": "계정 내보내기", "将数据库和恢复凭证所需的密钥一起保存为密码加密的 .a2ab 备份,可在 Windows、macOS 或 Linux 上恢复,无需手工复制密钥。恢复时整体替换账号、配置、日志与桌面设置,并使用目标机器的密钥重新加密凭证,不覆盖本机已有钥匙。可取消包含日志以减小文件;旧 .sql 备份仍可导入。恢复前自动保留安全备份,完成后需要重新登录管理面板。": "데이터베이스와 복원 키를 비밀번호로 암호화한 .a2ab 백업에 저장해 Windows, macOS 또는 Linux에서 키를 수동 복사하지 않고 복원합니다. 계정, 구성, 로그와 데스크톱 설정을 전체 교체하고 대상 기기의 키로 자격 증명을 다시 암호화합니다. 기존 키는 덮어쓰지 않습니다. 로그를 제외해 용량을 줄일 수 있으며 기존 .sql 가져오기도 지원합니다. 교체 전 안전 백업을 보관하고 완료 후 다시 로그인해야 합니다.", "尚未注册管理员。开启「网关 → 网络访问 → 允许其他设备访问网关」时会引导注册,也可以从登录页注册。": "아직 관리자가 등록되지 않았습니다. 「게이트웨이 → 네트워크 접근 → 다른 기기의 게이트웨이 접근 허용」을 켜면 등록 안내가 표시됩니다. 로그인 페이지에서도 등록할 수 있습니다.", "尚未注册管理员:管理接口不需要登录。开启「允许局域网访问」时会引导注册,也可以从登录页注册。": "관리자가 등록되지 않았습니다: 관리 API에는 로그인이 필요하지 않습니다. \"LAN 액세스 허용\"을 켜면 등록으로 안내되며, 로그인 페이지에서도 등록할 수 있습니다.", "尚未配置视觉分析模型": "시각 분석 모델이 설정되지 않았습니다", "局域网开放后,管理接口要求登录。请设置管理员账号与密码,注册完成会直接继续开启流程。": "LAN에 공개하면 관리 인터페이스가 로그인을 요구합니다. 관리자 계정과 비밀번호를 설정하세요. 등록이 완료되면 바로 이어서 활성화 절차가 진행됩니다.", "局域网访问": "LAN 접근", "工具用法与环境说明那一大段。": "도구 사용법과 환경 설명에 해당하는 긴 단락입니다.", "已为「{label}」单独配置提示词": "「{label}」에 시스템 프롬프트를 개별 설정했습니다", "已作为独立应用运行": "독립 앱으로 실행 중", "已使用本机密钥重新加密 {n} 项凭证,原有密钥未被覆盖。": "자격 증명 {n}개를 로컬 키로 다시 암호화했습니다. 기존 키는 덮어쓰지 않았습니다.", "已保存 {count} / {limit} 条报文(超出后丢弃最旧的)。": "메시지 {count} / {limit}건을 저장했습니다(초과분은 오래된 것부터 버립니다).", "已保存的值不符合当前插件规则,请修改或恢复默认值。": "저장된 값이 현재 플러그인 규칙에 맞지 않습니다. 수정하거나 기본값을 복원하세요.", "已保存,留空则不修改": "저장됨. 비워 두면 변경하지 않습니다", "已保存,留空沿用": "저장됨, 비워 두면 유지", "已关闭": "꺼짐", "已关闭 models.dev 联网刷新": "models.dev 온라인 갱신을 껐습니다", "已关闭。{note}": "꺼짐. {note}", "已关闭「{label}」的网关自带提示词:能否通过上游校验取决于上游当前口径": "「{label}」의 게이트웨이 내장 시스템 프롬프트를 껐습니다: 업스트림 검증 통과 여부는 업스트림의 현재 기준에 따라 달라집니다", "已关闭会话图片压缩": "이미지 압축을 껐습니다", "已关闭出站指纹脱敏": "아웃바운드 핑거프린트 마스킹을 껐습니다", "已关闭开发者角色兼容": "개발자 역할 호환이 꺼졌습니다", "已关闭第三方模型回答完自动折叠过程": "타사 모델의 답변 후 과정 자동 접기를 껐습니다", "已关闭网关跨域访问": "게이트웨이 CORS 접근을 껐습니다", "已关闭:不额外补阶段标记,由客户端决定过程展示。": "꺼짐: 단계 표시를 추가하지 않으며 과정 표시는 클라이언트가 결정합니다.", "已删除分组「{name}」": "그룹 \"{name}\"을(를) 삭제했습니다", "已取消「{label}」的单独配置": "「{label}」의 개별 설정을 취소했습니다", "已取消安装": "설치를 취소했습니다", "已取消导入": "가져오기를 취소했습니다", "已取消导出": "내보내기를 취소했습니다", "已取消恢复": "복원이 취소되었습니다", "已启用 {count} 条规则,应用于{scope}。": "규칙 {count}개 활성화, 적용 대상: {scope}.", "已启用登录": "로그인 사용 중", "已复制全部版本信息": "모든 버전 정보를 복사했습니다", "已应用": "반영됨", "已开启": "켜짐", "已开启:为正常完成的 Codex 回答补阶段标记。": "켜짐: 정상 완료된 Codex 답변에 단계 표시를 추가합니다.", "已开启:其他设备把 API 地址指向 {url}{panel}。": "켜짐: 다른 기기에서 API 주소를 {url}(으)로 지정하면 됩니다{panel}.", "已开启:监听 0.0.0.0,允许其他设备访问。": "켜짐: 0.0.0.0에서 수신하여 다른 기기의 접근을 허용합니다.", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "기본 그룹으로 복원했습니다: 개요 / 전달 경로 / 진단 / 시스템", "已截断": "잘림", "已指定出口": "출구 지정됨", "已接管": "인계됨", "已改回内置默认提示词": "내장 기본 시스템 프롬프트로 되돌렸습니다", "已新建分组「{name}」,点组头的 + 把菜单移进来": "그룹 \"{name}\"을(를) 만들었습니다. 머리의 +로 메뉴를 가져오세요", "已清掉「{label}」界面编辑的正文": "「{label}」의 화면 편집 본문을 삭제했습니다", "已清掉界面编辑的提示词(回落文件 / 内置默认)": "화면에서 편집한 시스템 프롬프트를 삭제했습니다(파일 / 내장 기본값으로 폴백)", "已清除本机保存的 API Key": "이 브라우저에 저장된 API Key를 삭제했습니다", "已生效": "적용됨", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。": "최소 중립 프롬프트로 자동 전환했습니다(업스트림 콘텐츠 차단에 걸린 것으로, 대부분 system 지문 오탐입니다). {until} 에 자동 해제됩니다.", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "최소 중립 시스템 프롬프트로 자동 전환했습니다(업스트림 콘텐츠 차단에 걸렸으며 대부분 system 핑거프린트 오탐입니다). {until}에 자동 해제됩니다. 기간 중에는 이 모드의 시스템 프롬프트가 전송되지 않습니다. 시스템 프롬프트를 수정한 뒤 즉시 해제할 수 있습니다.", "已自定义": "사용자 지정됨", "已运行": "가동 시간", "已退出登录": "로그아웃했습니다", "已隐藏": "숨김", "巴西葡萄牙语": "브라질 포르투갈어", "希望接入新的提供商或模型": "새 제공자나 모델 연동을 원함", "库中 schema": "DB 내 schema", "库主文件的大小(不含运行期间的 WAL 临时文件,退出时已自动并回)。": "DB 본체 파일의 크기입니다(실행 중의 WAL 임시 파일은 포함하지 않으며, 종료 시 자동으로 병합됩니다).", "库存目标": "재고 목표", "应用提供商": "적용 제공자", "应用版本:{version}": "앱 버전: {version}", "应用状态": "앱 상태", "应用窗口": "앱 창", "建立上游 TCP/TLS 连接或代理隧道的最大等待时间(秒),默认 30 秒,范围 1~3600。": "업스트림 TCP/TLS 연결 또는 프록시 터널을 설정할 때 기다리는 최대 시간(초). 기본 30초, 범위 1~3600.", "开发构建": "개발 빌드", "开发者角色兼容": "developer 역할 호환", "开发者角色兼容设置已刷新": "개발자 역할 호환 설정이 새로 고쳐졌습니다", "开启前需要注册面板管理员,已注册会跳过此步骤。管理接口需要管理员会话或网关 Key;API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。": "켜기 전에 패널 관리자를 등록해야 하며, 이미 등록된 경우 이 단계를 건너뜁니다. 관리 API에는 관리자 세션 또는 게이트웨이 키가 필요합니다. API 호출에는 활성화된 게이트웨이 키가 필요하며, 없으면 기본 키를 자동으로 생성합니다.", "开启后新发生的请求才会被记录(已经过去的请求补不回来)。报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "켠 이후에 발생한 요청만 기록됩니다(과거 요청은 소급되지 않음). 페이로드는 로컬 데이터베이스에 저장되며 최근 500 건만 유지합니다(초과분은 오래된 것부터 버림). 건수는 왼쪽 \"데이터 → 데이터 저장\"의 \"디버그 페이로드\"에서 볼 수 있습니다.", "开启后新发生的请求才会被记录(已经过去的请求补不回来),请求日志的「预览对话」也随之开始保存原始正文。上游报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "켜면 이후 새로 발생하는 요청만 기록됩니다(이미 지나간 요청은 소급 기록되지 않습니다). 요청 로그의 「대화 미리보기」도 이때부터 원문을 저장하기 시작합니다. 업스트림 메시지는 로컬 데이터베이스에 통합 저장되며 최근 500건만 보관합니다(초과분은 오래된 것부터 버립니다). 건수는 왼쪽 「데이터 → 데이터 저장」의 「디버그 메시지」에서 확인할 수 있습니다.", "开启后监听所有 IPv4 网卡(0.0.0.0),并不局限于局域网,也不会自动开放到公网;实际访问范围取决于网络与防火墙设置。修改后需要重启应用。": "켜면 모든 IPv4 인터페이스(0.0.0.0)에서 수신합니다. 접근 범위는 LAN으로 제한되지 않지만 인터넷에 자동으로 공개되지는 않습니다. 실제 접근 범위는 네트워크와 방화벽 설정에 따라 달라집니다. 변경 후 앱을 다시 시작해야 합니다.", "开启后网关将监听所有 IPv4 网卡(0.0.0.0),访问范围不再限于本机,也不局限于局域网。是否能从公网访问取决于网络与防火墙设置。": "게이트웨이가 모든 IPv4 인터페이스(0.0.0.0)에서 수신합니다. 접근 범위는 이 기기나 LAN으로 제한되지 않습니다. 인터넷에서 접근할 수 있는지는 네트워크와 방화벽 설정에 따라 달라집니다.", "开启后网关将监听所有网卡,同一局域网内的设备即可把 API 地址指向本机 IP 一起使用;管理接口从此要求管理员会话或网关 Key,转发接口在没有一把启用的 Key 时也会拒绝服务(届时会自动创建一把名为「默认」的 Key)。": "켜면 게이트웨이가 모든 네트워크 인터페이스를 수신하며, 같은 LAN의 기기에서 API 주소를 로컬 IP로 지정해 함께 사용할 수 있습니다. 관리 인터페이스는 이때부터 관리자 세션 또는 게이트웨이 키를 요구하고, 포워딩 인터페이스도 활성화된 키가 하나도 없으면 서비스를 거부합니다(이때 「기본」이라는 키가 자동 생성됩니다).", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 套餐池(Start Plan)」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "켜면 창을 닫는 것이 단순히 숨기는 것이 아니라 UI 창 전체를 파괴합니다: 상주하는 6개의 WebView2 프로세스(약 200MB 메모리)가 종료되고, 게이트웨이 포워딩·예정된 체크인·잔액 조회는 백그라운드 프로세스에서 영향 없이 계속됩니다; UI가 필요하면 트레이 아이콘을 클릭해 다시 엽니다(WebView 콜드 스타트 약 1초). 주의: UI가 파괴된 동안 ZCode \"플랜 풀 (Start Plan)\" 채널의 캡차 토큰은 UI가 생성하므로 보충할 수 없으며, 해당 채널의 요청은 사유와 함께 503으로 요청 로그에 기록됩니다. UI를 다시 열면 자동으로 복구됩니다. 이 스위치는 \"닫을 때 트레이로 최소화\"가 켜져 있을 때만 의미가 있으며, 최소화된 창에는 영향이 없습니다.", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 活动套餐」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "켜면 창을 닫을 때 단순히 숨기는 것이 아니라 인터페이스 창을 통째로 파괴합니다. 기반이 되는 WebView2 상주 프로세스 6개(약 200MB 메모리)도 함께 종료되며, 게이트웨이 포워딩, 예약 출석 체크, 잔액 조회는 백그라운드 프로세스에서 계속 실행되어 영향을 받지 않습니다. 인터페이스가 필요하면 트레이 아이콘을 클릭해 다시 열면 됩니다(WebView 콜드 스타트 약 1초). 주의: 인터페이스가 파괴된 동안 「ZCode 활동 요금제」 채널의 인증 코드 토큰은 인터페이스가 발급하므로 보충할 수 없습니다. 이 채널을 사용하는 요청은 503으로 요청 로그에 기록되며(사유 표시), 인터페이스를 다시 열면 자동으로 복구됩니다. 이 스위치는 「창을 닫을 때 트레이로 최소화」가 켜져 있을 때만 의미가 있으며, 창 최소화는 영향을 받지 않습니다.", "开启后,关闭窗口会销毁界面并释放 WebView 进程,网关转发、定时签到、余额查询仍在后台继续。ZCode 模型请求免验证时不受影响;上游要求人机验证时,需要重新打开界面,在账号的「套餐明细」中主动完成验证。此开关只在「关闭窗口时最小化到托盘」开启时有意义。": "활성화하면 창을 닫을 때 화면과 WebView 프로세스를 해제합니다. 요청 전달, 예약 출석 및 잔액 조회는 백그라운드에서 계속됩니다. 인증이 필요 없는 ZCode 요청에는 영향이 없습니다. 인증이 필요하면 화면을 다시 열고 계정의 「플랜 상세」에서 완료하세요. 창을 닫을 때 트레이로 최소화하는 설정이 켜져 있을 때만 적용됩니다.", "开启后,新发生的请求会保存上游调试报文与下游正文,历史请求无法补录。上游调试报文只保留最近 500 条;两侧条数可在「数据 → 数据存储」查看。关闭开关不会删除已保存的报文,可在请求日志中选择「仅清空报文原文」一起清理。": "켜면 새 요청의 업스트림 디버그 페이로드와 다운스트림 본문을 저장합니다. 이전 요청은 복원할 수 없습니다. 업스트림 디버그 페이로드는 최근 500건만 보관합니다. 양쪽 건수는 데이터 → 데이터 저장소에서 확인할 수 있습니다. 끄더라도 저장된 페이로드는 삭제되지 않습니다. 요청 로그에서 원문만 비우기를 선택하면 양쪽을 함께 정리할 수 있습니다.", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。": "켜면 로그인 페이지가 브라우저 백그라운드에서 자동으로 검증을 완료합니다(실제 사람은 느낄 수 없음). 반면 스크립트는 시도할 때마다 문제를 풀어야 하므로 무차별 대입 공격과 선점 등록의 비용이 크게 올라갑니다. 패널의 로그인 / 가입에만 영향을 주며 API 클라이언트의 API Key와는 무관합니다.", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。桌面端与网页端各自独立:桌面端主要服务本机与局域网,网页端(Docker / 服务端)直接暴露在网络上的登录页风险更高,建议保持开启。": "켜면 로그인 페이지가 백그라운드에서 인증을 마칩니다(사람에게는 보이지 않음). 반면 스크립트 시도는 매번 문제를 하나 풀어야 하므로 무차별 대입과 계정 선점 비용이 크게 올라갑니다. 패널의 로그인 / 등록에만 영향을 주며 API 클라이언트의 API Key와는 무관합니다. 데스크톱과 웹은 서로 독립적입니다. 데스크톱은 주로 이 컴퓨터와 LAN을 대상으로 하고, 웹(Docker / 서버)은 네트워크에 노출되므로 켜 두는 것을 권장합니다.", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "켜면 게이트웨이가 전송마다 **업스트림으로 보낸 요청**(헤더 + 본문)과 **업스트림이 돌려준 응답**(상태 코드 + 헤더 + 본문)을 로컬에 통째로 저장해 요청 로그 페이지의 \"상세\"에서 볼 수 있게 합니다. 요청 헤더의 Authorization, Cookie, API 키 등 자격 증명 필드는 모두 [redacted] 로 대체되어 평문으로 저장되지 않으며, 요청 / 응답 본문은 원본 그대로 저장됩니다(대화 내용이 포함될 수 있음). 페이로드는 최근 500 건만 유지하고 초과분은 오래된 것부터 버립니다. 문제 해결용 임시 스위치이므로 필요 없을 때는 끄는 것을 권장합니다.", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看;请求日志详情的「预览对话」也依赖本开关 —— 它保存的是客户端发来的请求体与网关下发的响应体(两侧各截断到 128 KiB),不开这个开关时预览对话没有数据可看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。上游报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "켜면 게이트웨이가 각 전달 시 **업스트림으로 보낸 요청**(요청 헤더 + 요청 본문)과 **업스트림이 반환한 응답**(상태 코드 + 응답 헤더 + 응답 본문)을 로컬에 그대로 저장하여 요청 로그 페이지의 「상세」에서 볼 수 있게 합니다. 요청 상세의 「대화 미리보기」도 이 스위치에 의존합니다 —— 저장되는 것은 클라이언트가 보낸 요청 본문과 게이트웨이가 내려보낸 응답 본문(각각 128 KiB로 잘림)이며, 스위치가 꺼져 있으면 미리 볼 데이터가 없습니다. 요청 헤더의 Authorization, Cookie, API Key 등 자격 증명 필드는 모두 [redacted]로 치환되어 평문으로 디스크에 기록되지 않습니다. 요청 본문과 응답 본문은 원본 그대로 저장됩니다(대화 내용이 포함될 수 있습니다). 업스트림 메시지는 최근 500건만 보관하며 초과분은 오래된 것부터 버립니다. 장애 진단용 임시 스위치이므로 필요 없으면 끄는 것을 권장합니다.", "开启后,能连接到网关的设备可通过浏览器访问网页管理面板,需使用管理员账号登录。访问范围与网关相同,并不局限于局域网。": "켜면 게이트웨이에 연결할 수 있는 기기에서 브라우저로 웹 관리 패널에 접근하고 관리자 계정으로 로그인할 수 있습니다. 접근 범위는 게이트웨이와 같으며 LAN으로 제한되지 않습니다.", "开启后,调用方可以用专用请求头声明已登记的客户端名称。这不是身份认证,只用于日志和统计,不会获得额外权限。": "켜면 호출자가 전용 헤더로 등록된 클라이언트 이름을 선언할 수 있습니다. 인증 기능이 아니며 로그와 통계에만 사용되고 추가 권한을 부여하지 않습니다.", "开启局域网访问": "LAN 접근 켜기", "开启来源声明": "출처 선언 켜기", "开启网络访问": "네트워크 접근 켜기", "开放后,局域网内其他设备的浏览器打开本机 IP 即可进入管理面板(需管理员账号登录)。": "공개하면 LAN 내 다른 기기의 브라우저에서 로컬 IP를 열면 관리 패널에 들어갈 수 있습니다(관리자 계정 로그인 필요).", "开机自动启动": "자동 시작", "开源许可": "오픈 소스 라이선스", "开(最多 {n} 轮)": "켜짐(최대 {n}회)", "归属客户端": "분류할 클라이언트", "当前三段都是官方原文。": "현재 세 단락 모두 공식 원문입니다.", "当前不可用": "현재 사용할 수 없음", "当前后端不支持词表编辑与提供商范围,请更新后端后重试。": "현재 백엔드는 규칙 편집과 제공자 범위를 지원하지 않습니다. 백엔드를 업데이트한 후 다시 시도하세요.", "当前固定为浅色模式,不随系统变化。": "현재 라이트 모드로 고정되어 있으며 시스템 설정을 따르지 않습니다.", "当前固定为深色模式,不随系统变化。": "현재 다크 모드로 고정되어 있으며 시스템 설정을 따르지 않습니다.", "当前密码": "현재 비밀번호", "当前已改过:{edited}。": "현재 수정된 단락: {edited}.", "当前形态": "실행 형태", "当前按 100% 显示(默认比例)。": "현재 100%로 표시됩니다(기본 비율).", "当前按 k / M 缩写显示(如 1.20M / 8.4k)。": "현재 k / M 축약으로 표시됩니다(예: 1.20M / 8.4k).", "当前按 {n}% 显示。": "현재 {n}%로 표시됩니다.", "当前按「万 / 亿」式本地量级词显示(如 1.2亿 / 8400万)。": "현재 「만 / 억」 단위의 로컬 규모 단어로 표시됩니다(예: 1.2억 / 8400만).", "当前是透传模式:存下来也不会发出,切成「替换 / 追加」之后才生效。": "현재 패스스루 모드입니다. 저장해도 전송되지 않으며, 「교체 / 추가」로 전환한 후에 적용됩니다.", "当前显示为「1.20M / 8.4k / 1.2B」这类英文缩写。": "현재 \"1.20M / 8.4k / 1.2B\" 같은 영문 약어로 표시 중입니다.", "当前显示为「1.2亿 / 8400万」这类中文量级。": "현재는 \"1.2억 / 8400만\" 같은 중국어 단위 표기로 표시됩니다.", "当前样本结果:{name}": "현재 샘플 결과: {name}", "当前正在使用": "현재 사용 중", "当前浏览器以管理员身份登录着本面板。「退出登录」会撤销这台设备的登录会话(30 天内的自动续期一并失效),需要重新输入账号密码;其他已登录的设备不受影响。": "현재 브라우저가 관리자로 이 패널에 로그인되어 있습니다. 「로그아웃」은 이 기기의 로그인 세션을 해제하며(30일 이내의 자동 갱신도 함께 무효화), 계정과 비밀번호를 다시 입력해야 합니다. 이미 로그인한 다른 기기는 영향을 받지 않습니다.", "当前版本不支持品牌设置": "현재 버전은 브랜드 설정을 지원하지 않습니다", "当前环境不支持局域网访问设置": "현재 환경에서는 LAN 접근 설정을 지원하지 않습니다", "当前环境不支持整库备份": "이 환경에서는 전체 DB 백업을 지원하지 않습니다", "当前环境不支持整库备份(仅桌面端可用)": "이 환경에서는 전체 DB 백업을 지원하지 않습니다(데스크톱 전용)", "当前环境不支持整库恢复": "이 환경에서는 전체 DB 복원을 지원하지 않습니다", "当前环境不支持整库恢复(仅桌面端可用)": "이 환경에서는 전체 DB 복원을 지원하지 않습니다(데스크톱 전용)", "当前环境不支持网络访问设置": "현재 환경에서는 네트워크 접근 설정을 지원하지 않습니다", "当前环境不支持读取版本信息(桥接方法缺失)": "이 환경에서는 버전 정보를 읽을 수 없습니다(브리지 메서드 없음)", "当前生效值:{value}": "현재 적용 값: {value}", "当前生效的正文来自{source}{file}。保存后这一份会盖过提示词文件与内置默认{note}。": "현재 적용 중인 본문은 {source}에서 가져옵니다{file}. 저장하면 이 본문이 시스템 프롬프트 파일과 내장 기본값을 덮어씁니다{note}.", "当前界面": "현재 화면", "当前管理员:{name}": "현재 관리자: {name}", "当前设置已保存": "현재 설정이 저장되었습니다", "当前跟随操作系统的深浅色设置,系统切换时界面会自动跟上。": "현재 운영 체제의 라이트/다크 설정을 따르며, 시스템이 전환되면 인터페이스도 자동으로 따라갑니다.", "当前路由内的可用视觉模型": "현재 라우트에서 사용 가능한 비전 모델", "待迁移旧数据": "이전 대기 중인 레거시 데이터", "待配置": "미설정", "忘记密码时无法在界面里找回:需要停掉程序后,从数据库删除管理员记录(kv 表的 panelAdmin 键),重启后按首次使用重新注册。具体命令与各形态的库文件路径见 docs 目录下的「重置管理员」文档。": "비밀번호를 잊으면 화면에서 복구할 수 없습니다. 프로그램을 중지한 뒤 데이터베이스에서 관리자 레코드(kv 테이블의 panelAdmin 키)를 삭제하고, 재시작 후 최초 사용처럼 다시 등록하세요. 구체적인 명령과 형태별 데이터베이스 경로는 docs의 \"관리자 재설정\" 문서를 참고하세요.", "思考等级、图片能力未知、等待上限": "사고 수준, 이미지 지원 불명, 대기 상한", "恢复中…": "복원 중…", "恢复失败:{message}": "복원 실패: {message}", "恢复官方原文": "공식 원문으로 복원", "恢复插件默认值": "플러그인 기본값 복원", "恢复整库": "데이터베이스 복원", "恢复整库备份": "전체 백업 복원", "恢复默认": "기본값으로 복원", "恢复默认 Logo": "기본 로고로 복원", "恢复默认侧边栏": "사이드바 기본값 복원", "恢复默认品牌": "기본 브랜드로 복원", "恢复默认词表": "기본 규칙 복원", "想回到原来那份,把这里清空再保存即可(不会删掉你配的文件路径)。": "원래 본문으로 돌아가려면 여기를 비우고 저장하면 됩니다(설정한 파일 경로는 삭제되지 않습니다).", "想要的新功能或改进想法": "원하는 새 기능이나 개선 아이디어", "所有未单独配置的提供商都用这一份": "개별 설정하지 않은 모든 제공자가 이 설정을 사용합니다", "所有菜单都已在这一组": "모든 메뉴가 이미 이 그룹에 있습니다", "手机端可管理所连接网关的账号、签到与插件,并使用提供商声明的动态登录入口;其余既有添加入口、编辑凭证和改写客户端配置仍需桌面面板。": "모바일 앱에서 연결된 게이트웨이의 계정, 출석, 플러그인을 관리하고 제공업체가 선언한 동적 로그인 방식을 사용할 수 있습니다. 그 밖의 기존 계정 추가 기능, 인증 정보 편집, 클라이언트 설정 변경은 데스크톱 패널이 필요합니다.", "托管网页界面": "웹 UI 제공", "把地址里的 your-server 与 USERNAME 换成你自己的;目录不存在时会自动创建。": "주소의 your-server와 USERNAME을 자신의 값으로 바꾸세요. 디렉터리가 없으면 자동으로 만듭니다.", "把整份数据库(账号、网关配置、事件日志、请求统计、调试报文与桌面设置)导出成一个 SQL 文件,恢复时整体替换本机全部数据 —— 与上面「账号导入 / 导出」的逐条合并是两种语义:恢复会连配置、日志与当前启用状态一起换成备份那台机器的状态。导出默认包含日志与调试报文(文件可能很大),不需要时可以取消勾选只备业务数据。恢复前会自动把当前数据备份到配置目录的 backups/ 下,恢复后需要重新登录管理面板。": "데이터베이스 전체(계정, 게이트웨이 설정, 이벤트 로그, 요청 통계, 디버그 페이로드, 데스크톱 설정)를 SQL 파일 하나로 내보내고, 복원 시 이 PC의 모든 데이터를 통째로 교체합니다 — 위의 \"계정 가져오기 / 내보내기\"의 건별 병합과는 다른 의미입니다. 복원은 설정, 로그, 활성화 상태까지 백업한 그 PC의 상태로 바꿔치기합니다. 내보내기는 기본적으로 로그와 디버그 페이로드를 포함하며(파일이 커질 수 있음), 필요 없으면 체크를 해제해 업무 데이터만 백업할 수 있습니다. 복원 직전에 현재 데이터를 설정 디렉터리의 backups/ 에 자동 백업하며, 복원 후에는 패널에 다시 로그인해야 합니다.", "把整次请求交给视觉模型,由它直接回答,不再回到原模型。": "요청 전체를 비전 모델에 넘겨 원래 모델로 돌아가지 않고 바로 답합니다.", "把菜单移入 {name}": "메뉴를 {name}(으)로 이동", "把菜单移入「{name}」": "메뉴를 \"{name}\"(으)로 이동", "把账号、网关配置、自定义提供商、Agent 配置、代理池 / 订阅、签到与余额记录同步到 WebDAV 或 S3 兼容存储,换台机器后一键取回。事件日志、请求明细、调试报文与面板登录态不在同步范围内(它们是本机的运行痕迹)。上传的账号凭证仍是加密形态,解密用的账号密钥由「同步密码」单独加密后一并上传 —— 同步密码不会保存到云端,换机下载时需要重新输入。": "계정, 게이트웨이 설정, 사용자 지정 공급자, Agent 설정, 프록시 풀/구독, 체크인 및 잔액 기록을 WebDAV 또는 S3 호환 스토리지에 동기화하고 다른 컴퓨터에서 한 번에 복원합니다. 이벤트 로그, 요청 상세, 디버그 패킷, 패널 로그인 상태는 대상이 아닙니다(이 컴퓨터의 실행 기록입니다). 업로드되는 계정 자격 증명은 암호화된 상태로 유지되며, 이를 복호화하는 계정 키는 '동기화 비밀번호'로 별도 암호화해 함께 업로드합니다. 동기화 비밀번호는 클라우드에 저장되지 않으므로 다른 컴퓨터에서 복원할 때 다시 입력해야 합니다.", "把路径里的主目录显示成 ~,截图分享时不暴露用户名": "경로의 홈 디렉터리를 ~ 로 표시해 캡처를 공유할 때 사용자 이름이 드러나지 않게 합니다", "把路径里的主目录(如 C:\\Users\\你的用户名)显示成 ~,截图分享时不暴露用户名。只影响本页显示与复制,不改任何文件。": "경로의 홈 디렉터리(예: C:\\Users\\사용자이름)를 ~ 로 표시해 캡처를 공유할 때 사용자 이름이 드러나지 않게 합니다. 이 페이지 표시와 복사에만 영향을 주며 파일은 변경하지 않습니다.", "报表天数": "리포트 일수", "报表页的热力图与按天趋势,默认 99999 天(近似全量保留),可填 1–99999 天。": "리포트 페이지의 히트맵과 일별 추세. 기본 99999일(거의 전체 보관)이며 1~99999일까지 입력할 수 있습니다.", "拖动分组 {name}": "그룹 {name} 끌기", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "왼쪽 ⠿를 끌어 순서를 바꾸세요(메뉴는 그룹 간 이동 가능). 스위치로 표시/숨김, 그룹 이름을 클릭해 이름 변경, 그룹 머리의 +로 다른 메뉴를 가져오기, 눈 버튼으로 그룹 전체 숨기기. 변경은 즉시 적용·저장되며 왼쪽 사이드바가 결과입니다. 키보드: 핸들에 포커스 후 Alt+↑ / ↓.", "拖动菜单 {name}": "메뉴 {name} 끌기", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "끌어서 그룹 순서 변경(Alt+↑ / ↓ 도 가능)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "끌어서 순서 변경, 그룹 간 이동 가능(Alt+↑ / ↓ 도 가능)", "指定备选仍受当前请求权限和路由范围限制,路由组请求不会跳到组外。不会转为辅助识图继续。": "지정한 예비 모델에도 현재 권한과 라우트 범위 제한이 적용됩니다. 라우트 그룹 밖으로 나가지 않으며 보조 이미지 읽기로 전환하지 않습니다.", "指定提供商": "선택한 제공자", "指定角色": "선택한 역할", "指定错误码直接换号": "지정 오류 코드 즉시 계정 전환", "指纹脱敏": "지문 마스킹", "指纹脱敏会在转发前按词表顺序改写请求消息中的文本,包括对话内容、思考内容和工具调用参数。默认词表包含客户端模板句与计费表头的精确替换、正则删除规则,可以新增、编辑、删除、启停和调整顺序;替换内容留空表示删除匹配内容。默认应用全部提供商,也可指定多家。改动只作用于发给上游的副本,响应内容不变。编辑后点击「保存设置」,下一次请求生效;清空词表表示不做任何指纹改写,恢复默认只重置词表。": "전달 전에 규칙 순서대로 요청 메시지의 텍스트를 수정합니다. 대화 내용, 추론 내용, 도구 호출 인수가 대상입니다. 기본 규칙은 클라이언트 템플릿 문장과 과금 헤더의 정확한 텍스트 치환 및 정규식 삭제를 포함합니다. 규칙을 추가, 편집, 삭제, 활성화, 비활성화하거나 순서를 변경할 수 있습니다. 치환 내용을 비우면 일치 부분을 삭제합니다. 기본적으로 모든 제공자에 적용하며 여러 제공자를 지정할 수도 있습니다. 업스트림으로 보내는 사본만 수정하고 응답은 변경하지 않습니다. 설정 저장을 누르면 다음 요청부터 적용됩니다. 빈 규칙 목록은 아무 내용도 수정하지 않으며 기본값 복원은 규칙만 초기화합니다.", "指纹脱敏设置仅本次运行生效,写入数据库失败,请检查配置目录": "설정은 이번 실행 중에만 적용됩니다. 데이터베이스 기록에 실패했습니다. 설정 디렉터리를 확인하세요.", "指纹脱敏设置已刷新": "핑거프린트 마스킹 설정을 새로 고쳤습니다", "按下面两块设置处理图片;关闭后设置全部保留。": "아래 두 블록의 설정으로 이미지를 처리합니다. 끄더라도 설정은 모두 남습니다.", "按原文精确匹配,区分大小写;不会自动去掉首尾空白。": "대소문자를 구분하여 원문과 정확하게 일치시킵니다. 앞뒤 공백은 제거하지 않습니다.", "按天聚合保留天数": "일일 집계 보존 일수", "按指定备选顺序尝试": "지정한 예비 모델을 순서대로 시도", "按提供商查看和调整专属选项": "제공자별 전용 옵션 확인 및 조정", "按提供商筛选设置": "제공자별 설정 필터", "按提供商管理专属选项,作用于当前网关中该提供商的所有账号。": "제공자별 전용 옵션을 관리합니다. 변경 사항은 현재 게이트웨이에 있는 해당 제공자의 모든 계정에 적용됩니다.", "按提供商配置": "제공자별 설정", "按每条请求的软件标识识别客户端,不依赖 API Key。规则修改只影响新请求,内置规则随软件更新,自定义规则参与备份与云同步。": "API Key와 무관하게 각 요청의 소프트웨어 식별 정보로 구분합니다. 규칙 변경은 새 요청에만 적용됩니다. 내장 규칙은 앱과 함께 업데이트되고 사용자 규칙은 백업 및 클라우드 동기화에 포함됩니다.", "换一台服务器": "다른 서버로 전환", "排队等待": "큐잉 대기", "排队等待次数": "큐잉 대기 횟수", "排队等待秒数": "큐잉 대기 시간(초)", "排队等待设置已刷新": "큐잉 대기 설정을 새로 고쳤습니다", "接入": "연결", "接受调用方来源声明": "호출자의 출처 선언 허용", "接管回答的模型": "답변을 이어받을 모델", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "사이드바에 표시할 메뉴, 순서, 그룹을 설정합니다. 숨김은 탐색 표시에만 영향을 주며 접근 권한을 회수하지 않습니다. 숨긴 페이지도 주소로 직접 열 수 있습니다.", "控制报表与请求日志里 Token 读数的写法:开启后按「万 / 亿」式的本地量级词显示(简体为万 / 亿,繁体为萬 / 億,日文为万 / 億,韩文为만 / 억),关闭则用 k / M 缩写(与上游文档、接口字段的写法一致)。英文 / 葡语的本地量级词就是 k / M,这项对它们没有区别。只影响显示口径,不改变任何统计与存储的数值。": "리포트와 요청 로그에서 Token 수치를 쓰는 방식을 제어합니다. 켜면 「만 / 억」 단위의 로컬 규모 단어로 표시하고(중국어 간체는 万 / 亿, 중국어 번체는 萬 / 億, 일본어는 万 / 億, 한국어는 만 / 억), 끄면 k / M 축약을 사용합니다(업스트림 문서와 인터페이스 필드의 표기와 동일). 영어 / 포르투갈어의 로컬 규모 단어는 k / M이므로 이 항목은 이들 언어에 차이가 없습니다. 표시 방식에만 영향을 주며 통계와 저장된 수치는 바뀌지 않습니다.", "控制报表与请求日志里 Token 读数的写法:开启后按中文量级显示(1.2亿 / 8400万),关闭则用 k / M / B 缩写(与上游文档、接口字段的写法一致)。这只影响显示口径,不改变任何统计与存储的数值。": "보고서와 요청 로그의 Token 표기 방식을 바꿉니다. 켜면 중국어 단위(1.2억 / 8400만), 끄면 k / M / B 약어(업스트림 문서와 API 필드와 같은 표기)로 표시합니다. 표시 방식만 바뀌며 통계와 저장 값은 달라지지 않습니다.", "控制界面的深浅色,与左侧边栏底部的三个主题按钮是同一个设置(改哪一处,另一处立刻跟上)。「跟随系统」会随操作系统当前的浅色 / 深色自动切换,并在系统主题变化时即时跟上;选「浅色」或「深色」则把界面固定在该模式,不再随系统变化。窗口标题栏的深浅色会一并同步,不会出现深色界面配一条浅色标题栏的情况。": "인터페이스의 라이트/다크를 제어하며, 왼쪽 사이드바 하단의 테마 버튼 세 개와 같은 설정입니다(어느 쪽을 바꾸든 다른 쪽이 즉시 따라갑니다). 「시스템」은 운영 체제의 현재 라이트 / 다크 설정에 따라 자동으로 전환되고 시스템 테마가 바뀌면 즉시 따라갑니다. 「라이트」나 「다크」를 선택하면 인터페이스가 해당 모드로 고정되어 시스템 설정을 따르지 않습니다. 창 제목 표시줄의 색상도 함께 동기화되어, 다크 인터페이스에 라이트 제목 표시줄이 붙는 일은 없습니다.", "提供商与模型": "제공업체 및 모델", "提供商专属设置": "제공자별 설정", "提供商当前不可用,未保存的修改已保留;恢复插件后可继续编辑。": "현재 제공자를 사용할 수 없습니다. 저장하지 않은 수정 내용은 유지되며, 플러그인이 복구되면 계속 편집할 수 있습니다.", "提供商设置已保存": "제공자 설정을 저장했습니다", "提供商设置返回格式无效,请刷新后重试": "제공자 설정 응답 형식이 올바르지 않습니다. 새로 고친 후 다시 시도하세요.", "提建议": "제안하기", "提示词文件": "시스템 프롬프트 파일", "提示词文件已更新": "시스템 프롬프트 파일이 업데이트되었습니다", "提示词正文": "시스템 프롬프트 본문", "提示词正文已更新": "시스템 프롬프트 본문이 업데이트되었습니다", "插件或设置已变化,请放弃修改并刷新后重新编辑。": "플러그인 또는 설정이 변경되었습니다. 변경을 취소하고 새로 고친 뒤 다시 편집하세요.", "操作系统": "운영 체제", "支持 .a2ab 加密备份和旧 .sql 文件;旧 SQL 不包含恢复密钥,跨机器导入仍需原机密钥。": "암호화된 .a2ab 백업과 기존 .sql을 지원합니다. 기존 SQL에는 복원 키가 없어 다른 기기로 가져올 때 원래 키가 필요합니다.", "支持 PNG、JPG、WebP,最大 2 MiB、4096 × 4096 像素;自动缩小至 512 像素以内,建议使用正方形图片。": "PNG, JPG, WebP를 지원하며 최대 2 MiB, 4096 × 4096 픽셀입니다. 512 픽셀 이내로 자동 축소합니다. 정사각형 이미지를 권장합니다.", "改动仍保存在本机,修复网络或凭据后下一次改动会自动重试,也可以手动点「上传到云端」。": "변경 사항은 로컬에 저장되어 있습니다. 네트워크나 자격 증명을 고치면 다음 변경 시 자동으로 다시 시도하며, '클라우드로 업로드'를 직접 눌러도 됩니다.", "改动仍保存在本机,系统会延长等待并自动重试;修复网络或凭据后,也可以手动点「上传到云端」。": "변경 사항은 이 기기에 저장되어 있습니다. 대기 시간을 늘려 자동으로 재시도합니다. 네트워크나 인증 정보를 수정한 뒤 「클라우드에 업로드」를 수동으로 선택할 수도 있습니다.", "改完立即生效,不用重启(下一个请求就用新模式)。降级是自动的临时状态,解除后本模式自己的提示词立刻恢复。": "수정 후 재시작 없이 즉시 적용됩니다(다음 요청부터 새 모드가 사용됩니다). 폴백은 자동으로 생기는 임시 상태이며, 해제하면 이 모드의 시스템 프롬프트가 즉시 복구됩니다.", "放大或缩小整个界面(文字与控件一起变),效果与浏览器 Ctrl +/- 相同:共 11 档,立即生效并记住。": "인터페이스 전체를 확대하거나 축소합니다(텍스트와 컨트롤이 함께 바뀜). 효과는 브라우저의 Ctrl +/-와 동일합니다. 총 11단계이며 즉시 적용되고 기억됩니다.", "放弃修改并刷新": "변경 취소 후 새로 고침", "数据": "데이터", "数据保留": "데이터 보관", "数据保留设置已刷新": "데이터 보관 설정을 새로 고쳤습니다", "数据存储": "데이터 저장", "数据库 schema": "데이터베이스 schema", "数据库不可用": "데이터베이스 사용 불가", "数据库与恢复密钥一起加密保存。密码不会保存在应用或备份中,忘记后无法恢复,请妥善保管。": "데이터베이스와 복원 키를 함께 암호화합니다. 비밀번호는 앱이나 백업에 저장되지 않습니다. 잊으면 복원할 수 없으니 안전하게 보관하세요.", "数据库主文件与 WAL 文件的总占用,与请求日志清理弹窗采用同一口径;清理后可压缩数据库回收空闲空间。": "데이터베이스 주 파일과 WAL 파일의 총 크기로, 요청 로그 정리 화면과 같은 계산 기준을 사용합니다. 정리 후 데이터베이스를 압축하여 사용하지 않는 공간을 회수할 수 있습니다.", "数据库文件": "데이터베이스 파일", "数据目录": "데이터 디렉터리", "数据统一保存在配置目录下的 agent2api.db;如需更换位置,请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "데이터는 구성 디렉터리의 agent2api.db에 통합 저장됩니다. 위치를 바꾸려면 환경 변수 AGENT2API_PROXY_HOME을 설정한 후 프로그램을 다시 시작하세요.", "整体替换": "통째로 교체", "整库备份 / 恢复": "전체 DB 백업 / 복원", "整次请求交给 {model} 直接回答,不再回到原模型。": "요청 전체를 {model}에 넘겨 원래 모델로 돌아가지 않고 바로 답합니다.", "新分组名": "새 그룹 이름", "新增 {added} 个、更新 {updated} 个{suffix}{note}": "{added}개 추가, {updated}개 업데이트{suffix}{note}", "新增脱敏规则": "마스킹 규칙 추가", "新增规则": "규칙 추가", "新安装和升级后默认关闭。先配置再开启,关闭后保留配置。": "신규 설치 및 업그레이드 후에는 기본적으로 꺼져 있습니다. 먼저 설정한 뒤 켜세요. 꺼도 설정은 유지됩니다.", "新密码": "새 비밀번호", "新密码不能与当前密码相同": "새 비밀번호는 현재 비밀번호와 달라야 합니다", "新密码至少 8 位": "비밀번호는 8자 이상이어야 합니다", "新建分组": "그룹 추가", "新建客户端分类": "새 클라이언트 분류", "无效或重复的标识请求头:{headers}": "잘못되었거나 중복된 식별 헤더: {headers}", "无法读取品牌设置": "브랜드 설정을 읽을 수 없습니다", "无法读取图片,请重新选择": "이미지를 읽을 수 없습니다. 다시 선택하세요", "日志与请求日志同时受保留天数和数量上限限制。日志默认 30 天、10000 条,各级别按比例保留;调试详情最多保留 3 天。请求日志默认 99999 天、1000000 条(100 万),超出后从最旧的记录开始清理,并同步删除对应原始正文。按天聚合默认 99999 天,只按天数保留,不受请求日志数量清理影响。天数可填 1–99999,数量可填 1–100000000。调小任一设置并确认后立即清理,且不可恢复。": "로그와 요청 로그에는 보관 일수와 건수 상한이 함께 적용됩니다. 로그의 기본값은 30일, 10000건이며 수준별로 비례 배분하여 보관합니다. 디버그 상세는 최대 3일 보관합니다. 요청 로그의 기본값은 99999일, 1000000건(100만 건)이며 초과분은 가장 오래된 기록부터 해당 원문과 함께 삭제합니다. 일별 집계의 기본값은 99999일로 일수만 적용되며 요청 로그 건수에 따른 삭제의 영향을 받지 않습니다. 일수는 1–99999, 건수는 1–100000000을 입력할 수 있습니다. 설정을 줄이고 확인하면 즉시 삭제되며 복구할 수 없습니다.", "日志保留数量上限": "로그 보관 건수 상한", "日志文件": "로그 파일", "日语": "일본어", "显示 {name}": "{name} 표시", "显示分组 {name}": "그룹 {name} 표시", "显示名称": "표시 이름", "显示名称最多 64 个字符": "표시 이름은 최대 64자입니다", "显示模式": "테마", "显示这一组": "이 그룹 표시", "暂无可编辑的提供商设置": "편집할 수 있는 제공자 설정이 없습니다", "暂无自定义规则,正在使用内置识别。也可以从请求详情直接添加规则。": "사용자 규칙이 없어 내장 식별을 사용 중입니다. 요청 상세에서도 규칙을 추가할 수 있습니다.", "暂未获取到本机访问地址,请使用其他设备能连接到的本机 IP 与网关端口。": "아직 이 기기의 접속 주소를 가져오지 못했습니다. 다른 기기에서 연결할 수 있는 이 기기의 IP와 게이트웨이 포트를 사용하세요.", "更新": "업데이트", "更新出网线路": "업데이트 출구 경로", "更新通道": "업데이트 채널", "替换": "교체", "替换 = 客户端 system / developer 消息全部删掉,换成网关的提示词;追加 = 保留客户端内容,只在开头 system 块之后多插一条。两者都只改发给上游的副本,客户端看到的响应不变。": "교체 = 클라이언트의 system / developer 메시지를 모두 삭제하고 게이트웨이 시스템 프롬프트로 바꿉니다. 추가 = 클라이언트 내용을 유지하고 맨 앞 system 블록 뒤에 한 건만 더 삽입합니다. 둘 다 업스트림으로 보내는 사본만 바꾸며 클라이언트가 받는 응답은 달라지지 않습니다.", "替换为网关提示词": "게이트웨이 시스템 프롬프트로 교체", "替换内容": "치환 내용", "替换内容最多 {max} 个字符": "치환 내용은 최대 {max}자까지 입력할 수 있습니다", "替换前会自动把当前数据备份到配置目录的 backups/ 文件夹。": "교체 직전에 현재 데이터를 설정 디렉터리의 backups/ 폴더에 자동 백업합니다.", "替换并恢复": "교체하고 복원", "最多 64 个字符,留空恢复为 Agent2API。": "최대 64자입니다. 비워 두면 Agent2API로 복원됩니다.", "最小自动上传间隔": "최소 자동 업로드 간격", "最近 {window} 条请求中,{scanned} 条有识别依据,{matched} 条符合条件,{applied} 条会采用本规则。": "최근 요청 {window}개 중 {scanned}개에 식별 근거가 있고, {matched}개가 조건과 일치하며, {applied}개에 이 규칙이 적용됩니다.", "有未保存的修改": "저장되지 않은 변경 사항이 있습니다", "有未保存的改动:保存后才能同步(测试连接不受影响)。": "저장되지 않은 변경 사항이 있습니다. 동기화하려면 먼저 저장하세요(연결 테스트는 가능).", "有近期套餐池请求时读取库存状态的间隔,默认 2500 毫秒,可填 1000–30000。没有近期请求时降低读取频率,轮询不会发起验证码。": "최근 Start Plan 요청이 있을 때 재고 상태 조회 간격입니다. 기본값은 2500밀리초이며 1000–30000 범위입니다. 최근 요청이 없으면 조회 빈도를 낮추며 폴링으로 인증을 시작하지 않습니다.", "服务商": "공급자", "服务器地址": "서버 주소", "服务端密钥加密保存,不会返回浏览器;切回 ALTCHA 后会保留,方便再次启用。": "비밀 키는 암호화하여 저장하며 브라우저로 반환하지 않습니다. ALTCHA로 전환해도 보관되므로 나중에 다시 활성화할 수 있습니다.", "服务端密钥(Secret Key)": "비밀 키(Secret Key)", "期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "이 모드 동안 자체 프롬프트는 전송되지 않습니다. 프롬프트를 고친 뒤 즉시 해제할 수 있습니다.", "未保存": "저장되지 않음", "未匹配已知客户端": "알려진 클라이언트와 일치하지 않음", "未单独配置:模式、提示词文件与正文都跟随上面的全局配置(当前「{mode}」)。": "개별 설정 없음: 모드, 시스템 프롬프트 파일과 본문 모두 위의 전역 설정을 따릅니다(현재 「{mode}」).", "未启用": "사용 안 함", "未开启轻量模式:关窗仅隐藏窗口,界面进程常驻内存,随时打开不等待": "경량 모드 꺼짐: 창을 닫아도 창만 숨겨지고 인터페이스 프로세스가 메모리에 상주하여 언제든 기다림 없이 열립니다", "未开启,developer 角色消息会原样发往上游,不认识该角色的上游会报错(400)。": "꺼짐: developer 역할 메시지가 그대로 업스트림으로 전송되며, 이 역할을 모르는 업스트림은 오류(400)를 반환합니다.", "未开启,客户端 system 模板会原样发往上游,可能被内容审核误拦(400)。": "꺼져 있어 클라이언트 system 템플릿이 그대로 업스트림으로 전송되어 콘텐츠 검열에 오탐으로 차단될 수 있습니다(400).", "未开启,浏览器跨域无法直连网关。": "꺼져 있어 브라우저에서 CORS로 게이트웨이에 직접 연결할 수 없습니다.", "未开启,转发时不保存任何原始报文。": "꺼져 있어 전달 시 원본 메시지를 일절 저장하지 않습니다.", "未开启:网关只监听 127.0.0.1,仅本机可以访问。": "꺼짐: 게이트웨이가 127.0.0.1만 수신하여 로컬에서만 접근할 수 있습니다.", "未注册": "미등록", "未注册闸门": "미등록 게이트", "未知原因": "알 수 없는 사유", "未知来源": "알 수 없는 출처", "未知设备": "알 수 없는 기기", "未知账号": "알 수 없는 계정", "未能读取 Cline 伪装头设置,请稍后重试": "Cline 위장 헤더 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요", "未能读取 models.dev 元数据状态,请稍后重试": "models.dev 메타데이터 상태를 읽지 못했습니다. 잠시 후 다시 시도하세요.", "未能读取云同步设置,请稍后重试。": "클라우드 동기화 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요.", "未能读取保存后的指纹脱敏设置": "저장된 지문 마스킹 설정을 읽지 못했습니다", "未能读取开发者角色兼容设置,请稍后重试": "개발자 역할 호환 설정을 읽지 못했습니다. 잠시 후 다시 시도해 주세요", "未能读取指纹脱敏设置,请稍后重试": "핑거프린트 마스킹 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요", "未能读取机器人校验设置": "봇 인증 설정을 읽지 못했습니다", "未能读取第三方模型回答完自动折叠过程设置,请稍后重试": "타사 모델의 답변 후 과정 자동 접기 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요", "未能读取系统提示词设置,请稍后重试": "시스템 프롬프트 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요", "未能读取网关跨域访问设置,请稍后重试": "게이트웨이 CORS 접근 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요", "未能读取网络访问设置,请稍后重试": "네트워크 접근 설정을 불러오지 못했습니다. 잠시 후 다시 시도하세요.", "未能读取调试模式设置,请稍后重试": "디버그 모드 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요", "未能读取账户信息,请稍后重试": "계정 정보를 읽지 못했습니다. 잠시 후 다시 시도하세요", "未采用本规则,请检查开关、来源声明或规则顺序": "이 규칙이 적용되지 않았습니다. 스위치, 출처 선언 또는 규칙 순서를 확인하세요.", "本地账号、配置、签到与余额记录变化后自动上传(合并 1 秒内的连续改动,最长 10 秒传一次;内容没变时不发请求)。": "로컬 계정, 설정, 체크인, 잔액 기록이 변경되면 자동 업로드합니다(1초 이내 연속 변경은 병합, 최대 10초에 한 번. 내용이 그대로면 요청을 보내지 않습니다).", "本机 API 地址": "이 기기의 API 주소", "本机 APK 版本": "이 기기 APK 버전", "本机全部数据会被备份整体替换,恢复前自动保留安全备份,完成后需要重新登录管理面板。本机已有密钥不会被覆盖。": "로컬 데이터베이스의 모든 데이터가 백업으로 교체됩니다. 먼저 안전 백업을 보관하고 완료 후 다시 로그인해야 합니다. 기존 로컬 키는 덮어쓰지 않습니다.", "本机应用版本": "이 기기의 앱 버전", "本机界面版本": "이 기기 UI 버전", "本机的业务数据(账号、配置、Agent 配置、代理池 / 订阅、签到与余额记录)将上传并": "이 컴퓨터의 업무 데이터(계정, 설정, Agent 설정, 프록시 풀/구독, 체크인 및 잔액 기록)를 업로드하여", "本机的全部数据(账号、网关配置、日志统计与桌面设置)将被所选备份文件": "이 PC의 모든 데이터(계정, 게이트웨이 설정, 로그 통계, 데스크톱 설정)는 선택한 백업 파일로", "本机的账号、网关配置、Agent 配置、代理池 / 订阅、签到与余额记录将被远端快照": "이 컴퓨터의 계정, 게이트웨이 설정, Agent 설정, 프록시 풀/구독, 체크인 및 잔액 기록이 원격 스냅샷으로", "本次无需刷新": "이번에는 새로고침이 필요하지 않습니다", "本软件不提供任何担保,可按 AGPL-3.0 修改与分发;通过网络提供修改版服务时须向用户提供对应源码。": "이 소프트웨어는 보증 없이 제공되며 AGPL-3.0에 따라 수정·배포할 수 있습니다. 수정된 네트워크 서비스는 사용자에게 대응 소스를 제공해야 합니다.", "本项目的 AGPL-3.0 许可不替代这些第三方许可。名称与标识的商标权归各自权利人所有。": "이 프로젝트의 AGPL-3.0 라이선스는 이러한 타사 라이선스를 대체하지 않습니다. 이름과 로고의 상표권은 각 권리자에게 있습니다.", "机器人校验": "로봇 검증", "机器人校验设置已保存": "봇 인증 설정을 저장했습니다", "条数": "건수", "来源声明当前关闭,这条规则不会生效。请先在客户端识别设置中开启。": "출처 선언이 꺼져 있어 이 규칙은 적용되지 않습니다. 클라이언트 식별 설정에서 먼저 켜세요.", "来源声明无效或未登记,本次已忽略。": "출처 선언이 잘못되었거나 등록되지 않아 무시했습니다.", "来源声明未启用,本次已忽略。": "출처 선언이 꺼져 있어 무시했습니다.", "来源版本": "출처 리비전", "来源设备:{device}": "원본 기기: {device}", "来自 {device},生成于 {time}": "{device}에서 {time}에 생성", "架构": "아키텍처", "查看内置客户端({n})": "내장 클라이언트 보기 ({n})", "查询管理员状态失败:{message}": "관리자 상태 조회 실패: {message}", "校验身份:这三段必须各自成块排在最前(实测:三段并成一段会被回 405 / 3012)。因此这里按段编辑,不能合成一段。改过的段以你的文本为准,没改的段继续用官方原文;清空某一段 = 那一段恢复官方原文。": "를 기준으로 신원을 검증합니다: 이 세 단락은 각각 별도 블록으로 맨 앞에 있어야 합니다(실측: 세 단락을 하나로 합치면 405 / 3012가 반환됩니다). 따라서 단락별로 편집하며 하나로 합칠 수 없습니다. 수정한 단락은 입력한 텍스트가 우선하고, 수정하지 않은 단락은 계속 공식 원문을 사용합니다. 단락을 비우면 그 단락은 공식 원문으로 복원됩니다.", "桌面端": "데스크톱 앱", "桌面端登录 / 注册验证": "데스크톱 로그인 / 가입 인증", "桌面端:登录 / 注册需要 ALTCHA 人机验证": "데스크톱: 로그인 / 등록에 ALTCHA 인증 필요", "桌面端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "데스크톱: 로그인 / 등록에 ALTCHA 인증 필요(현재 사용 중)", "桌面运行时不可用,暂时无法保存": "데스크톱 런타임을 사용할 수 없어 지금은 저장할 수 없습니다", "档案": "프로필", "检测中…": "확인 중…", "概览": "개요", "模型不能直接看图时,按你选择的方式处理。原生支持图片的请求直接转发,不增加识图调用。": "모델이 이미지를 직접 읽을 수 없을 때 선택한 방식으로 처리합니다. 이미지 지원 모델의 요청은 추가 호출 없이 그대로 전달됩니다.", "模型单独配置": "모델별 설정", "模型目录没写明是否支持图片时按这里处理。": "모델 목록에 이미지 지원 여부가 없을 때 여기 설정을 따릅니다.", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。下面两块分别选好「哪些模型」和「用哪只模型」即可;没配到的模型、以及本来就能看图的模型,一律原样放行。这里的改动立即生效,不需要保存。": "이미지를 읽지 못하는 모델을 다루는 방법은 두 가지뿐입니다. 다른 모델이 대신 읽게 하거나, 요청 전체를 이미지를 읽을 수 있는 모델에 넘기는 것입니다. 아래 두 블록에서 \"어떤 모델\"과 \"어느 모델로\"를 고르면 됩니다. 여기에 포함되지 않은 모델과 원래 이미지를 읽을 수 있는 모델은 그대로 통과합니다. 여기서의 변경은 즉시 적용되며 저장이 필요 없습니다.", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。没配到的模型、以及本来就能看图的模型,一律原样放行;每个请求只用其中一种方式,不会两种串着做,处理失败也不会改走另一种。改动立即生效,不需要保存。": "이미지를 읽지 못하는 모델을 다루는 방법은 두 가지뿐입니다. 다른 모델이 대신 읽게 하거나, 요청 전체를 이미지를 읽을 수 있는 모델에 넘기는 것입니다. 여기에 포함되지 않은 모델과 원래 이미지를 읽을 수 있는 모델은 그대로 통과합니다. 요청마다 두 방식 중 하나만 사용하며, 두 방식을 이어서 실행하지 않고 실패해도 다른 방식으로 넘어가지 않습니다. 여기서의 변경은 즉시 적용되며 저장이 필요 없습니다.", "模型请求是否需要验证码由 ZCode 上游配置决定,领取验证与模型请求免验证分别处理。后台只检查配置和库存,不自动运行验证码或弹出拼图;需要验证时,在账号的「套餐明细」中点击「开始验证」。验证令牌一次性使用,短时间内过期,失败或取消后不会自动重试。": "모델 요청의 인증 필요 여부는 ZCode 업스트림 설정으로 결정하며 플랜 수령 인증과 별도로 처리합니다. 백그라운드는 설정과 재고만 확인하며 인증을 실행하거나 퍼즐을 자동으로 띄우지 않습니다. 필요하면 계정의 「플랜 상세」에서 「인증 시작」을 누르세요. 토큰은 한 번만 사용되며 짧은 시간 후 만료되고 실패나 취소 후 자동 재시도하지 않습니다.", "模式": "모드", "模式改为「{mode}」": "모드를 「{mode}」(으)로 변경", "次": "회", "次日 00:00": "다음 날 00:00", "正则表达式": "정규식", "正在保存上游原始报文:": "업스트림 원본 메시지를 저장하는 중: ", "正在修改…": "변경 중…", "正在剥离出站请求里的审核指纹:表头键值整段删除,模板句最小改写。": "아웃바운드 요청의 검열 핑거프린트를 제거하는 중: 헤더 키-값은 통째로 삭제하고 템플릿 문구는 최소한으로 재작성합니다.", "正在安装…": "설치 중…", "正在应答跨源请求:浏览器跨域请求可直连 /v1/*。": "교차 출처 요청에 응답 중: 브라우저의 CORS 요청이 /v1/*에 직접 연결될 수 있습니다.", "正在归一角色:developer 角色消息转发前改写为 system。": "역할 정규화 중: developer 역할 메시지는 전달 전에 system으로 수정됩니다.", "正在注册…": "등록 중…", "正在联网更新": "온라인으로 갱신 중", "正在读取提供商设置…": "제공자 설정을 불러오는 중…", "正式版": "정식 버전", "每个请求只会用到其中一种方式,不会两种串着做;处理失败也不会改走另一种。配了哪只视觉模型,那次请求的图片就会交给它。": "요청마다 두 방식 중 하나만 사용합니다. 두 방식을 이어서 실행하지 않고, 실패해도 다른 방식으로 넘어가지 않습니다. 설정한 비전 모델에 해당 요청의 이미지가 전달됩니다.", "每条请求轮换到下一个可用账号;新会话交给当前最闲的那位。适合想把手里的号摊开用、不让某一个一直扛。": "요청마다 다음 사용 가능한 계정으로 순환하고, 새 세션은 현재 한가한 계정에 맡깁니다. 보유 계정을 고르게 쓰고 특정 계정에 부하가 몰리지 않게 하고 싶을 때 적합합니다.", "每条请求都重新按策略选路 —— 行为与「关闭」一致,仅保留会话识别的记录。": "요청마다 전략에 따라 다시 선택합니다 — 동작은 \"끄기\"와 같으며 세션 기록만 유지됩니다.", "每次等待的时长,默认 0 = 跟随上游建议(实测 9~30 秒,上游没给建议时用 15 秒)。可填 0–120 秒强制一个固定时长。": "대기 1회의 길이입니다. 기본값 0 = 업스트림 권장 시간을 따릅니다(실측 9~30초, 업스트림이 권장 시간을 주지 않으면 15초 사용). 0–120초를 입력하면 고정 시간으로 강제할 수 있습니다.", "每行一个域名,不填协议、端口或路径;与 Cloudflare 中的配置一致,服务端按完整域名匹配。手机 App 使用所连接网关的域名。": "프로토콜, 포트, 경로 없이 한 줄에 호스트 이름 하나씩 입력하세요. Cloudflare 설정과 일치해야 하며 서버는 전체 호스트 이름이 정확히 일치하는지 확인합니다. 모바일 앱은 연결된 게이트웨이의 호스트 이름을 사용합니다.", "毫秒": "밀리초", "沟通方式 / 上下文管理 + Environment 段。": "커뮤니케이션 방식 / 컨텍스트 관리 + Environment 단락.", "没有可导出的账号": "내보낼 계정이 없습니다", "没有可用视觉模型时": "사용 가능한 비전 모델이 없을 때", "没有已确认支持图片的模型,请先在模型管理中确认。": "이미지 지원이 확인된 모델이 없습니다. 먼저 모델 관리에서 확인하세요.", "没能读到「{label}」的当前值,改为 {count} 条可能会删除超出的历史数据。": "「{label}」의 현재 값을 읽지 못했습니다. {count}건으로 변경하면 초과한 과거 데이터가 삭제될 수 있습니다.", "没能读到「{label}」的当前值,改为 {days} 天可能会删除超出的历史数据。": "「{label}」의 현재 값을 읽지 못했습니다. {days}일로 변경하면 초과된 과거 데이터가 삭제될 수 있습니다.", "沿用对应方式的视觉模型配置,不额外维护一份模型列表。": "해당 방식의 비전 모델 설정을 사용하며 별도의 모델 목록은 관리하지 않습니다.", "沿用工具服务的视觉分析模型": "도구 서비스의 시각 분석 모델 재사용", "沿用工具服务的视觉分析模型(未配置)": "도구 서비스의 비전 모델 사용(미설정)", "注册并开启": "등록하고 켜기", "注册管理员账号": "관리자 계정 등록", "注意:这一家的「网关自带」开关现在是关的,改过的正文要等开关打开才生效。": "주의: 이 제공자의 「게이트웨이 내장」 스위치가 현재 꺼져 있습니다. 수정한 본문은 스위치를 켠 후에야 적용됩니다.", "流式响应相邻数据之间允许的最大空闲时间(秒),收到新数据后重新计时,默认 300 秒,范围 1~3600。": "스트리밍 응답에서 인접한 데이터 사이에 허용되는 최대 유휴 시간(초). 새 데이터가 오면 다시 시간을 재며, 기본 300초, 범위 1~3600.", "流式响应空闲超时": "스트리밍 응답 유휴 타임아웃", "测试连接": "연결 테스트", "浏览器 / PWA": "브라우저 / PWA", "浏览器只在 https 或 localhost 下提供离线缓存;局域网 http 访问不影响正常使用": "브라우저는 https 또는 localhost에서만 오프라인 캐시를 제공합니다. LAN의 http 접속에서도 평소대로 사용할 수 있습니다.", "浏览器在本地完成计算,不需要第三方密钥,也不依赖外部验证服务。": "브라우저에서 로컬로 계산합니다. 타사 키나 외부 인증 서비스가 필요하지 않습니다.", "浏览器标签页": "브라우저 탭", "浏览器面板": "브라우저 패널", "消息角色": "메시지 역할", "添加备选模型": "예비 모델 추가", "添加提供商": "제공자 추가", "添加提供商…": "제공자 추가…", "添加自定义头": "사용자 지정 헤더 추가", "添加要单独配置的提供商": "개별 설정할 제공자 추가", "清除本机凭证": "이 기기의 자격 증명 삭제", "清除这里的正文": "여기의 본문 지우기", "源代码": "소스 코드", "点下面的入口会用系统默认浏览器打开 GitHub 的对应表单(需要 GitHub 账号,模板已预设好,填完直接提交即可)。": "아래 항목을 클릭하면 시스템 기본 브라우저에서 GitHub의 해당 양식이 열립니다(GitHub 계정 필요, 템플릿이 미리 채워져 있으므로 작성 후 바로 제출하면 됩니다).", "点击重命名": "클릭하여 이름 변경", "点此添加或切换服务器": "눌러서 서버 추가 또는 전환", "点此添加服务器": "눌러서 서버 추가", "版本": "버전", "版本信息": "버전 정보", "版本信息 · 所连网关环境": "버전 정보 · 연결된 게이트웨이", "版权声明": "저작권 고지", "状态码 {code} 已在名单里": "상태 코드 {code}는 이미 목록에 있습니다", "状态码必须是 {min}–{max} 的整数(收到: {text})": "상태 코드는 {min}–{max} 범위의 정수여야 합니다(입력값: {text})", "环境": "환경", "生成时间:{time}": "생성 시간: {time}", "生效顺序:有效的来源声明优先,然后按顺序匹配自定义规则,最后使用内置规则。中转丢失原始标识时,无法自动推断背后的软件。": "우선순위는 유효한 출처 선언, 사용자 규칙 순서, 내장 규칙 순입니다. 중계 과정에서 원래 식별 정보가 사라지면 원래 소프트웨어를 자동으로 추론할 수 없습니다.", "用 models.dev 补齐上游没声明的模型能力与思考档位(联网刷新,内嵌快照始终生效)": "업스트림이 선언하지 않은 모델 능력과 추론 레벨을 models.dev로 채웁니다(온라인 새로고침, 내장 스냅샷은 항상 적용)", "用于加密上云的账号密钥。请自己记牢 —— 它不保存到云端,换机下载时必须输入同一个密码,否则账号数据无法解密。": "클라우드로 보내는 계정 키를 암호화하는 데 사용합니다. 반드시 기억하세요 — 클라우드에 저장되지 않으며, 다른 컴퓨터에서 복원할 때 같은 비밀번호를 입력해야 계정 데이터를 복호화할 수 있습니다.", "用哪只模型识图": "이미지를 읽을 모델", "用浏览器菜单里的「添加到主屏幕」把这一页装成 App:全屏打开、没有地址栏,和原生应用一样。": "브라우저 메뉴의 「홈 화면에 추가」로 이 페이지를 앱처럼 설치할 수 있습니다. 전체 화면, 주소 표시줄 없이 네이티브 앱과 같습니다.", "由 Cloudflare 提供验证,需要浏览器与网关均能连接 Cloudflare。验证失败或服务不可用时不会自动放行。": "Cloudflare에서 인증을 제공합니다. 브라우저와 게이트웨이 모두 Cloudflare에 연결할 수 있어야 합니다. 인증 실패나 서비스 장애 시 자동으로 접근을 허용하지 않습니다.", "由 {source} 覆盖,手动设置暂不生效": "{source}가 우선 적용되어 수동 설정은 현재 적용되지 않습니다", "界面缩放": "인터페이스 줌", "界面缩放比例": "인터페이스 줌 비율", "界面语言": "인터페이스 언어", "界面语言。可选简体中文、繁體中文、English、日本語、한국어、Português (Brasil),或「跟随系统」(按浏览器 / 系统的语言列表自动选)。切换后整页立即刷新;该偏好只存在本机(localStorage),不影响账号、密钥与转发。": "인터페이스 언어입니다. 중국어 간체, 중국어 번체, English, 日本語, 한국어, Português (Brasil) 또는 「시스템」(브라우저 / 시스템 언어 목록에 따라 자동 선택)을 선택할 수 있습니다. 전환하면 페이지 전체가 즉시 새로 고침됩니다. 이 설정은 이 컴퓨터에만 저장되며(localStorage) 계정, 키, 포워딩에는 영향을 주지 않습니다.", "界面语言只保存在本机(localStorage)。切换后整页立即刷新,不影响账号、密钥与转发。": "인터페이스 언어는 이 컴퓨터에만 저장됩니다(localStorage). 전환하면 페이지 전체가 즉시 새로 고침되며 계정, 키, 포워딩에는 영향을 주지 않습니다.", "界面里编辑的正文": "화면에서 편집한 본문", "留空 = 用内置默认提示词": "비워 두면 = 내장 기본 시스템 프롬프트 사용", "留空使用 AWS 官方地址": "비워 두면 AWS 공식 주소 사용", "留空使用默认": "비워 두면 기본값 사용", "留空表示删除匹配内容;替换内容按原文写入,$ 不作为捕获组引用。": "비우면 일치한 내용을 삭제합니다. 치환 내용은 그대로 삽입하며 $를 캡처 그룹 참조로 처리하지 않습니다.", "登录 / 注册需要通过 ALTCHA 人机验证(工作量证明)": "로그인 / 가입에는 ALTCHA 인간 검증(작업 증명)이 필요합니다", "登录 / 账号切换 / 429 切换等系统事件,可填 1–3650 天。": "로그인 / 계정 전환 / 429 전환 등 시스템 이벤트이며, 1–3650일을 입력할 수 있습니다.", "登录 / 账号切换 / 429 切换等系统事件,可填 1–99999 天。": "로그인 / 계정 전환 / 429 전환 등 시스템 이벤트. 1~99999일까지 입력할 수 있습니다.", "登录 Agent2API": "Agent2API 로그인", "登录 {name}": "{name}에 로그인", "登录人机验证": "로그인 CAPTCHA", "百分比类读数(如 OpenCode Go、Antigravity)不能相加,组头显示的是组内最低剩余比例。": "백분율 읽기(예: OpenCode Go, Antigravity)는 합산할 수 없으므로 그룹 띠에는 그룹 내 가장 낮은 잔여 비율이 표시됩니다.", "监听地址": "수신 주소", "目前展示仓库已登记的图标来源许可,不代表完整的第三方依赖清单。": "현재 목록에는 저장소에 등록된 아이콘 출처의 라이선스만 표시됩니다. 전체 타사 의존성 목록은 아닙니다.", "目标路径:{path}": "대상 경로: {path}", "直接按上面的设置兼容": "위 설정대로 바로 호환 처리", "直接按当前方式兼容": "현재 방식으로 바로 호환 처리", "知道了": "확인", "确定": "확인", "确定后加入当前草稿,点击「保存设置」才会生效。": "확인하면 현재 초안에 추가합니다. 설정 저장을 눌러야 적용됩니다.", "确定继续?": "계속할까요?", "确认上传": "업로드 확인", "确认图片处理授权": "이미지 처리 권한 확인", "确认备份密码": "백업 비밀번호 확인", "确认并保存": "확인 후 저장", "确认新密码": "새 비밀번호 확인", "确认缩减数据保留": "데이터 보관 축소 확인", "确认缩短保留天数": "보관 일수 단축 확인", "社区与支持": "커뮤니티 및 지원", "离线缓存未启用": "오프라인 캐시가 꺼져 있습니다", "积分合计只统计当前筛选出来的账号": "포인트 합계를 현재 필터에 표시된 계정만으로 계산", "移入「{name}」": "\"{name}\"(으)로 이동", "程序路径": "실행 파일 경로", "空 = 不要这一份,回落提示词文件 / 内置默认提示词。": "비우면 = 이 본문을 사용하지 않고 시스템 프롬프트 파일 / 내장 기본 시스템 프롬프트로 폴백합니다.", "空分组 · 点组头的 + 把菜单移进来": "빈 그룹 · 머리의 +로 메뉴를 가져오세요", "立即解除": "즉시 해제", "站点密钥(Site Key)": "사이트 키(Site Key)", "第一段": "첫 번째 단락", "第一段(身份句)": "첫 번째 단락(아이덴티티 문장)", "第三方应用密码": "타사 앱 비밀번호", "第三方开源许可": "타사 오픈 소스 라이선스", "第三方模型回答完自动折叠过程": "타사 모델의 답변 후 과정 자동 접기", "第三方模型回答完自动折叠过程设置已刷新": "타사 모델의 답변 후 과정 자동 접기 설정을 새로 고쳤습니다", "第三段": "세 번째 단락", "第三段(动态段)": "세 번째 단락(동적 단락)", "第二段": "두 번째 단락", "第二段(稳定段)": "두 번째 단락(고정 단락)", "等待响应超时": "응답 대기 타임아웃", "等待期间请求日志的状态列会显示「排队中」阶段,详情弹窗的「内部重试」里能逐次看到等待时长;等待用尽后返回 HTTP 503(不是 401/429:既不会刷新凭证,也不会把账号标成限额)。": "대기 중에는 요청 로그의 상태 열에 「큐잉 중」 단계가 표시되고, 상세 팝업의 「내부 재시도」에서 회차별 대기 시간을 볼 수 있습니다. 대기가 소진되면 HTTP 503을 반환합니다(401/429가 아닙니다: 자격 증명을 갱신하지도, 계정을 할당량 초과로 표시하지도 않습니다).", "等比放大或缩小整个界面(文字、控件、间距一起变),效果与浏览器按 Ctrl +/- 相同:80%–130%、5% 一档。窗口本身不缩放,变的是页面内容的显示比例,设置立即生效并记住,下次启动直接按这个比例打开。放得越大可视范围越小,窗口较窄或表格较宽时不建议调得太大。": "인터페이스 전체를 비율에 맞춰 확대하거나 축소합니다(텍스트, 컨트롤, 간격이 함께 바뀜). 효과는 브라우저에서 Ctrl +/-를 누른 것과 같습니다: 80%–130%, 5% 단위. 창 자체는 확대되지 않고 페이지 내용의 표시 비율만 바뀝니다. 설정은 즉시 적용되고 기억되어 다음 시작 시 이 비율로 열립니다. 크게 할수록 보이는 범위가 좁아지므로 창이 좁거나 표가 넓을 때는 너무 크게 하지 않는 것이 좋습니다.", "简体中文": "중국어 간체", "管理员已注册": "관리자 등록됨", "管理员账号": "관리자 계정", "管理插件": "플러그인 관리", "精确文本": "정확한 텍스트", "系统提示词模式": "시스템 프롬프트 모드", "系统提示词设置已刷新": "시스템 프롬프트 설정을 새로 고쳤습니다", "累计请求": "누적 요청", "繁体中文": "중국어 번체", "约 {n} 字符": "약 {n}자", "结构": "구조", "给 Codex 的响应补阶段标记,回答完后像官方模型一样把推理与命令过程折叠起来": "Codex 응답에 단계 표시를 보강해 답변 후 공식 모델처럼 추론과 명령 과정을 접기", "继续并清理": "계속하고 정리", "编辑提示词正文 · {label}": "시스템 프롬프트 본문 편집 · {label}", "编辑提示词正文 · 全局": "시스템 프롬프트 본문 편집 · 전역", "编辑正文": "본문 편집", "编辑网关自带提示词 · {label}": "게이트웨이 내장 시스템 프롬프트 편집 · {label}", "编辑脱敏规则": "마스킹 규칙 편집", "编辑识别规则": "식별 규칙 편집", "缩放后重新存成 JPEG 时用的质量。默认 80,可填 40–95;数值越小体积越小、画质越差。": "축소한 이미지를 JPEG로 다시 저장할 때 쓰는 품질입니다. 기본 80, 40~95까지 지정할 수 있으며, 낮을수록 용량은 줄지만 화질이 떨어집니다.", "缩放比例": "줌 비율", "网关": "게이트웨이", "网关 Key 数量": "게이트웨이 키 수", "网关尚未就绪": "게이트웨이가 아직 준비되지 않았습니다", "网关自带": "게이트웨이 내장", "网关跨域访问已开启": "게이트웨이 CORS 접근이 켜졌습니다", "网关跨域访问设置已刷新": "게이트웨이 CORS 접근 설정을 새로 고쳤습니다", "网关跨域访问(CORS)": "게이트웨이 CORS 접근", "网关面(/v1/*)默认不应答浏览器跨源请求:页面直连会被预检拦下,只报「无法连接 API」。注意来源是 * —— 未配「网关 Key」时任何网页都能借本机网关打上游,故默认关闭;只给自己用的话,让页面与网关同源(本地反代 /v1)更稳妥。面板接口(/api/*)不受影响。": "게이트웨이 API(/v1/*)는 기본적으로 브라우저의 교차 출처 요청에 응답하지 않습니다. 페이지에서 직접 연결하면 프리플라이트에 막히고 「API에 연결할 수 없음」만 표시됩니다. 출처가 *이므로 「게이트웨이 키」를 설정하지 않으면 어떤 웹 페이지든 로컬 게이트웨이를 거쳐 업스트림을 호출할 수 있기에 기본적으로 꺼져 있습니다. 혼자만 사용한다면 페이지와 게이트웨이를 같은 출처로 두는 편(로컬 리버스 프록시 /v1)이 더 안전합니다. 패널 인터페이스(/api/*)는 영향을 받지 않습니다.", "网络访问": "네트워크 접근", "网页端": "웹", "网页端登录 / 注册验证": "웹 로그인 / 가입 인증", "网页端的界面缩放由浏览器自己控制(Ctrl + / Ctrl -,或浏览器菜单里的缩放),此项不可调。": "웹 버전의 인터페이스 줌은 브라우저가 직접 제어하며(Ctrl + / Ctrl -, 또는 브라우저 메뉴의 줌), 이 항목은 조정할 수 없습니다.", "网页端:登录 / 注册需要 ALTCHA 人机验证": "웹: 로그인 / 등록에 ALTCHA 인증 필요", "网页端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "웹: 로그인 / 등록에 ALTCHA 인증 필요(현재 사용 중)", "网页管理地址": "웹 관리 주소", "群晖 NAS": "Synology NAS", "群晖需在「控制面板 → 应用程序门户 → WebDAV」里启用服务,端口默认 5005(HTTP)/ 5006(HTTPS)。": "Synology는 '제어판 → 응용 프로그램 포털 → WebDAV'에서 서비스를 활성화하세요. 기본 포트는 5005(HTTP)/5006(HTTPS)입니다.", "脱敏词表": "마스킹 규칙", "腾讯云 COS": "텐센트 클라우드 COS", "自动同步": "자동 동기화", "自动同步上次失败": "마지막 자동 동기화 실패", "自动续写": "자동 이어쓰기", "自定义 User-Agent": "사용자 정의 User-Agent", "自定义客户端分类": "사용자 지정 클라이언트 분류", "自定义客户端数量已达上限": "사용자 지정 클라이언트 수가 한도에 도달함", "自定义提供商 {id}": "커스텀 제공자 {id}", "自定义网站和应用界面中显示的名称与 Logo。": "웹사이트와 앱 화면에 표시할 이름과 로고를 변경합니다.", "自定义识别规则": "사용자 지정 식별 규칙", "自愈保护": "자가 복구 보호", "至少 12 位": "12자 이상", "至少 8 位,换机下载时需要": "8자 이상, 다른 컴퓨터에서 복원할 때 필요", "至少要保留一个分组": "그룹은 최소 하나 남아야 합니다", "英语": "영어", "范围 5–120 秒,并受原请求时限约束。": "범위 5–120초이며 원래 요청 제한 시간에도 묶입니다.", "范围为 5–120 秒,并受原请求时限约束。图片过大、格式错误或下载失败不会被当作模型不支持图片。": "5~120초 범위이며 원래 요청의 제한 시간도 적용됩니다. 이미지 크기 초과, 형식 오류 또는 다운로드 실패를 이미지 미지원으로 판단하지 않습니다.", "被更高优先级覆盖": "더 높은 우선순위가 적용됨", "装上{size}的官方身份提示词": "공식 아이덴티티 프롬프트 설치({size})", "装成 App 后从桌面图标直接进入:全屏打开、没有地址栏。": "앱으로 설치하면 홈 화면 아이콘에서 바로 열립니다. 전체 화면, 주소 표시줄 없음.", "覆盖": "덮어쓰기", "规则 / 匹配方式": "규칙 / 일치 방식", "规则可以增删改、启停和调整顺序;替换内容留空表示删除匹配内容。恢复默认只重置词表,不改开关和提供商范围。": "규칙 추가, 편집, 삭제, 활성화, 비활성화 및 순서 변경이 가능합니다. 치환 내용을 비우면 일치 부분을 삭제합니다. 기본값 복원은 규칙만 초기화하고 스위치와 제공자 범위는 변경하지 않습니다.", "规则名称": "규칙 이름", "规则名称不能为空,且最多 {max} 个字符": "규칙 이름은 필수이며 최대 {max}자까지 입력할 수 있습니다", "规则已保存,对后续请求生效;当前历史记录未修改。": "규칙이 저장되어 이후 요청에 적용됩니다. 현재 과거 기록은 변경되지 않았습니다.", "规则忽略大小写,只影响新请求的日志与统计,不改变模型选择或权限。": "규칙은 대소문자를 구분하지 않으며 새 요청의 로그와 통계에만 적용됩니다. 모델 선택이나 권한은 바뀌지 않습니다.", "规则编号:{id}": "규칙 ID: {id}", "视觉模型": "비전 모델", "视觉模型先识读图片,再由原模型分析和回答。": "비전 모델이 먼저 이미지를 읽고 원래 모델이 분석하여 답변합니다.", "视觉模型来源": "비전 모델 출처", "视觉模型的思考等级": "비전 모델의 사고 수준", "视觉模型直接回答": "비전 모델이 직접 답변", "视觉模型识读图片": "비전 모델이 이미지를 읽음", "解码后小于这个体积的图片保持原样。默认 512KB,可填 0–10240;填 0 表示所有内嵌图片都过一遍。": "디코딩 후 크기가 이 값보다 작은 이미지는 그대로 둡니다. 기본 512KB, 0~10240까지 지정할 수 있으며, 0이면 모든 인라인 이미지를 처리합니다.", "解除失败:{message}": "해제 실패: {message}", "触发阈值": "적용 임계값", "计数": "집계", "计量单位": "표기 단위", "让 Codex 在收到最终答案后收起中间过程。仅为严格识别的 Codex Responses 请求补阶段标记,报表归类和来源声明不影响此判断。正常结束且没有工具调用的非空回答才补 final_answer,工具调用前的说明补 commentary;错误、截断、缺少结束信号或未知结束原因不补最终答案标记。默认关闭,不改变回答文字,也不减少模型思考或用量。": "Codex가 최종 답변을 받은 뒤 중간 과정을 접을 수 있게 합니다. 엄격하게 식별된 Codex Responses 요청에만 단계 표시를 추가하며, 보고서 분류나 클라이언트의 출처 선언에는 영향을 받지 않습니다. 정상 종료되고 도구 호출이 없는 비어 있지 않은 답변에만 final_answer를, 도구 호출 전 설명에는 commentary를 붙입니다. 오류, 잘림, 종료 신호 누락 또는 알 수 없는 종료 사유에는 최종 답변 표시를 붙이지 않습니다. 기본값은 꺼짐이며 답변 내용, 모델의 추론과 사용량은 바뀌지 않습니다.", "许可原文": "라이선스 원문", "许可原文已随软件内置,无需联网即可查看;打开项目来源链接需要联网。": "라이선스 원문은 앱에 포함되어 있어 오프라인으로 볼 수 있습니다. 프로젝트 출처 링크를 열려면 인터넷 연결이 필요합니다.", "许可核对版本": "라이선스 확인에 사용한 리비전", "设置不可隐藏(隐藏了只能清缓存找回来)": "\"설정\"은 숨길 수 없습니다(숨기면 저장소를 지워야 되돌릴 수 있습니다)", "设置备份密码": "백업 비밀번호 설정", "设置识别规则": "식별 규칙 설정", "访问时请使用目标设备能连接到的地址;这里显示的本机地址不代表公网可达。": "접속하는 기기에서 연결할 수 있는 주소를 사용하세요. 여기에 표시된 주소가 인터넷에서 접근 가능함을 의미하지는 않습니다.", "识别依据": "식별 근거", "识别规则数量已达上限": "식별 규칙 수가 한도에 도달함", "词表为空,不会改写任何指纹。可以新增规则或恢复默认词表。": "규칙 목록이 비어 있어 지문을 수정하지 않습니다. 규칙을 추가하거나 기본 규칙을 복원하세요.", "该提供商暂无可编辑的专属设置": "이 제공자에는 편집할 수 있는 전용 설정이 없습니다", "详细日志": "상세 로그", "语言设置": "언어 설정", "请先保存设置再同步": "동기화하기 전에 설정을 저장하세요", "请先在 Cloudflare 创建 Turnstile 组件,建议选择 Managed 模式,并添加面板实际使用的域名。": "먼저 Cloudflare에서 Turnstile 위젯을 만드세요. Managed 모드를 권장하며 패널에서 실제로 사용하는 도메인을 추가하세요.", "请填一个分组名": "그룹 이름을 입력하세요", "请填写管理员账号(64 字符以内)": "관리자 계정을 입력하세요(64자 이내)", "请求发出后等待上游响应头的最大时间(秒),默认 300 秒,范围 1~3600。": "요청을 보낸 뒤 업스트림 응답 헤더를 기다리는 최대 시간(초). 기본 300초, 범위 1~3600.", "请求带有不同软件的标识,未自动归类;可用自定义规则明确归属。": "요청에 서로 다른 소프트웨어 식별 정보가 있어 자동 분류하지 않았습니다. 사용자 규칙으로 분류를 지정할 수 있습니다.", "请求提供商 / 模型支持": "제공자 / 모델 지원 요청", "请求日志保留天数": "요청 로그 보존 일수", "请求日志保留数量上限": "요청 로그 보관 건수 상한", "请求记录": "요청 기록", "请求超时": "요청 타임아웃", "请求转发到上游失败时(服务器瞬时错误、连接失败,以及 WorkBuddy 的 11-128 敏感词拦截),网关会等一段间隔后再发一次。次数分两档,管的是两件事:①「同一账号重试次数」在同一账号上原地重发几次 —— 一般是提示词被上游拦截、或链路瞬时抖动,等一会儿重发往往就好了;②「切换账号重试次数」这份请求最多再换几个账号试 —— 首发的那个账号不算,每换一个扣一次,不分是不是同一家(换到同一家的下一个账号也算一次),换满还失败就把错误返回给客户端。两项都设为 0 表示失败不重试、直接报错。注意账号级限额(429)不占这里的换号次数 —— 那类失败走「冷却该账号并换下一个账号」的降级,与这里的重试是两条路。另有「指定错误码直接换号」名单(默认 402):命中名单的上游状态码不在同一账号重发,直接按队列换下一个账号继续试(换号也占「切换账号重试次数」),换满仍失败才把错误返回给客户端。": "업스트림으로 전달이 실패하면(서버의 일시적 오류, 연결 실패, WorkBuddy의 11-128 금칙어 차단) 게이트웨이가 일정 간격을 기다린 뒤 한 번 더 보냅니다. 횟수는 두 가지로 나뉘며 서로 다른 일을 담당합니다. ①「동일 계정 재시도 횟수」는 같은 계정에서 제자리로 몇 번 재전송할지를 정합니다. 보통 시스템 프롬프트가 업스트림에 차단되었거나 경로가 순간적으로 흔들린 경우로, 잠시 후 다시 보내면 대개 해결됩니다. ②「계정 전환 재시도 횟수」는 이 요청이 최대 몇 개의 계정으로 더 시도할지를 정합니다. 최초 전송 계정은 제외하고 계정을 바꿀 때마다 1회씩 차감되며, 같은 제공자인지 여부는 따지지 않습니다(같은 제공자의 다음 계정으로 바꿔도 1회로 계산). 횟수를 다 써도 실패하면 오류를 클라이언트에 반환합니다. 두 항목을 모두 0으로 설정하면 실패 시 재시도하지 않고 바로 오류를 반환합니다. 계정 단위 할당량 초과(429)는 여기의 계정 전환 횟수를 소모하지 않습니다. 그런 실패는 「해당 계정을 쿨다운하고 다음 계정으로 전환」하는 폴백 경로를 타며, 여기의 재시도와는 별개입니다. 또한 「지정 오류 코드 즉시 계정 전환」 목록(기본 402)이 있습니다. 목록에 해당하는 업스트림 상태 코드는 같은 계정에서 재전송하지 않고 바로 큐의 다음 계정으로 넘어가 계속 시도하며(계정 전환도 「계정 전환 재시도 횟수」를 소모), 횟수를 다 써도 실패하면 오류를 클라이언트에 반환합니다.", "请求重试": "요청 재시도", "请至少选择一个提供商": "제공자를 하나 이상 선택하세요", "请输入同步密码": "동기화 비밀번호를 입력하세요", "请输入当前密码": "현재 비밀번호를 입력하세요", "请输入服务端密钥": "비밀 키를 입력하세요", "请选择可用的标识请求头": "사용 가능한 식별 헤더를 선택하세요", "请选择归属客户端": "분류할 클라이언트를 선택하세요", "读取云同步设置失败:{message}": "클라우드 동기화 설정을 읽지 못했습니다: {message}", "读取失败:{message}": "읽기 실패: {message}", "读取完整非流式响应体允许的最大时间(秒),默认 300 秒,范围 1~3600。": "비스트리밍 응답 본문 전체를 읽는 데 허용되는 최대 시간(초). 기본 300초, 범위 1~3600.", "读取网关信息失败:{message}": "게이트웨이 정보 읽기 실패: {message}", "读取远端…": "원격 읽는 중…", "读取远端信息失败:{message}": "원격 정보를 읽지 못했습니다: {message}", "调用方声明": "호출자 선언", "调试报文": "디버그 메시지", "调试模式": "디버그 모드", "调试模式设置已刷新": "디버그 모드 설정을 새로 고쳤습니다", "负载均衡": "부하 분산", "账号列表": "계정 목록", "账号导入 / 导出": "계정 가져오기 / 내보내기", "账号路由": "계정 라우팅", "账号页表格的两项显示偏好,只存在本机(localStorage),不影响账号数据与转发。「积分合计只统计当前筛选出来的账号」:账号页每一家的分组带右侧有一枚「可用合计」,默认按整组求和 —— 不受筛选、搜索影响,被筛掉的账号也计入(余额是资产,禁用也只表示不参与转发,额度仍在账上)。打开这一项后改为只累加当前可见的行:例如筛出 1 个 100 积分的账号,合计就是 100,而不是同组两个账号之和 1,000。分页不参与这个口径 —— 翻页看的是同一份结果的不同屏,合计不随页码变化。「隐藏账号名」与表头「账号」旁边那颗眼睛是同一个开关:打开后账号列的名字整体显示成星号,适合截图分享时遮挡账号。": "계정 표의 표시 설정 두 가지입니다. 이 컴퓨터에만 저장되며(localStorage) 계정 데이터나 포워딩에는 영향을 주지 않습니다. \"포인트 합계를 현재 필터에 표시된 계정만으로 계산\": 계정 페이지의 각 제공자 그룹 띠 오른쪽에 \"사용 가능 합계\"가 있습니다. 기본값은 그룹 전체를 합산하며 필터와 검색의 영향을 받지 않고, 필터에서 제외된 계정도 포함됩니다(잔액은 자산이며, 비활성화는 포워딩에 참여하지 않는다는 뜻일 뿐 포인트는 그대로 남습니다). 이 항목을 켜면 현재 보이는 행만 더합니다. 예를 들어 100포인트 계정 하나로 필터링하면 합계는 100이며, 같은 그룹 두 계정의 합인 1,000이 아닙니다. 페이지 나누기는 이 계산에 포함되지 않습니다. 페이지는 같은 결과를 다른 화면에서 보는 것일 뿐이므로 페이지를 넘겨도 합계는 바뀌지 않습니다. \"계정 이름 숨기기\"는 표의 \"계정\" 열 옆 눈 아이콘과 같은 스위치입니다. 켜면 계정 열의 이름이 별표로 표시되어 스크린샷 공유 시 가릴 수 있습니다.", "账户": "계정", "超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件。把天数改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。可填范围为 1–3650 天。请求日志 / 按天聚合 / 签到记录已全量保留、不再自动删除,要清历史请到对应页面手动清空。": "보존 기간을 초과한 부분은 삭제됩니다: 이벤트 로그는 로그인, 계정 전환, 429 전환 같은 시스템 이벤트입니다. 일수를 줄여(예: 30일 → 7일) 저장하면 초과된 기록이 즉시 삭제되며 되돌릴 수 없습니다. 늘리거나 그대로 두면 아무것도 삭제되지 않습니다. 입력 범위는 1–3650일입니다. 요청 로그 / 일별 집계 / 출석 기록은 전량 보존되어 자동 삭제되지 않습니다. 기록을 지우려면 해당 페이지에서 직접 비워 주세요.", "超出的历史数据会被立即删除,且不可恢复。": "초과된 과거 데이터는 즉시 삭제되며 복구할 수 없습니다.", "超时": "타임아웃", "超时设置已刷新": "타임아웃 설정을 새로 고쳤습니다", "跟随模型配置": "모델 설정 따르기", "跟随系统 · 浅色 · 深色": "시스템 · 라이트 · 다크", "跟随默认": "기본값 따르기", "跨域访问": "CORS", "路由": "라우팅", "路由组只使用组内成员;普通路由只使用参与范围内的账号和模型。": "라우트 그룹은 그룹 내 구성원만 사용하고 일반 라우트는 참여 범위 내 계정과 모델만 사용합니다.", "路由设置已刷新": "라우팅 설정을 새로고침했습니다", "跳过 {n} 个": "{n}개 건너뜀", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;负载均衡是每条请求换下一位,把负载摊到各个账号上。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时)、被 429 的账号垫底排到队尾 30 分钟、余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 前两层可以在下面按需开关,限制器由账号的「限制器」设置管。": "요청 전송 시 계정을 어떤 순서로 고르는지: ① \"라우팅 전략\"이 대기 규칙을 정합니다 — 순서 우선은 1 번째 계정이 응답하지 못하게 될 때(레이트 리밋 / 장애 / 잔여량 소진)까지 모든 요청을 처리하고 그다음으로 넘어갑니다. 부하 분산은 요청마다 다음 계정으로 돌려 부하를 여러 계정에 나눕니다. ② \"세션 고정\"은 같은 세션(같은 모델 + 같은 첫 메시지)을 가능한 한 같은 계정에 묶어 둡니다 — 여러 턴 대화에서 업스트림 컨텍스트 캐시를 재사용해 계정 교체와 낭비가 줄어듭니다. 자동은 5 분, 세션 내는 6 시간 고정하며, 매 턴과 끄기는 고정하지 않습니다. 계정의 대기 순번(계정 표의 1 열)은 모든 전략의 기반이고 전략은 그 위에서 작동합니다. 라우팅에는 자가 복구 보호가 3 겹 있습니다: 전송 실패한 계정은 잠시 물러나고(15 분부터 시작해 실패마다 2 배, 최대 1 시간), 잔여량이 있는데 429 를 받은 계정은 30 분간 맨 뒤로 가며, 잔여량 소진 / 기간 토큰 한도 도달 계정은 리미터가 가로막습니다 — 앞의 2 가지는 아래에서 필요에 따라 켜고 끌 수 있고, 리미터는 각 계정의 \"리미터\" 설정이 관할합니다.", "转发前压缩对话里内嵌的大图(只改发给上游的副本,生图与图片编辑不受影响)": "포워딩 전에 대화에 포함된 큰 이미지를 압축합니다(상류로 보내는 사본만 변경되며, 이미지 생성과 편집에는 영향 없음)", "转发前将 developer 角色消息转换为 system,兼容不支持 developer 角色的 OpenAI 兼容上游": "전달 전에 developer 역할 메시지를 system으로 변환하여 developer 역할을 지원하지 않는 OpenAI 호환 업스트림과 호환", "转发失败的账号休息一会儿再回来:15 分钟起步,连续失败翻倍,封顶 1 小时;成功一次立即恢复。目的是「让这次失败先凉一会儿」,免得一条条地反复撞同一个坏账号。": "전송에 실패한 계정은 잠시 쉬고 돌아옵니다: 15 분부터 시작해 연속 실패마다 2 배, 최대 1 시간. 한 번 성공하면 즉시 복구됩니다. \"실패를 잠시 식히는\" 것이 목적으로, 같은 불량 계정을 요청마다 반복해서 두드리지 않게 합니다.", "转发链路": "전달 경로", "轮询间隔": "폴링 간격", "软件标识超过 1 KB,已截断保存;匹配仅使用保留部分。": "소프트웨어 식별 정보가 1 KB를 초과하여 잘라 저장했습니다. 일치 판정에는 저장된 부분만 사용합니다.", "软件版本": "소프트웨어 버전", "轻量模式": "경량 모드", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 套餐池(Start Plan)通道不可用,相关请求会在请求日志里注明原因": "경량 모드가 켜져 있습니다: 창을 닫으면 UI 프로세스가 파괴되고(약 200MB 메모리 해제) 게이트웨이는 백그라운드에서 계속됩니다. UI가 파괴된 동안 ZCode 플랜 풀 (Start Plan) 채널을 사용할 수 없으며, 해당 요청은 요청 로그에 사유가 기록됩니다", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 活动套餐通道不可用,相关请求会在请求日志里注明原因": "경량 모드 켜짐: 창을 닫으면 인터페이스 프로세스가 파괴되고(약 200MB 메모리 해제) 게이트웨이는 백그라운드에서 계속됩니다. 인터페이스가 파괴된 동안에는 ZCode 활동 요금제 채널을 사용할 수 없으며, 관련 요청은 요청 로그에 사유가 기록됩니다", "轻量模式(关窗释放界面内存)": "경량 모드(창을 닫아 인터페이스 메모리 해제)", "辅助识图": "보조 이미지 읽기", "辅助识图 · 原模型回答": "보조 읽기 · 원래 모델이 답변", "辅助识图保留原模型回答;切换视觉模型会让视觉模型直接回答。本次授权也包含已设置的模型单独配置。": "보조 읽기는 원래 모델이 답변하며 모델 전환은 비전 모델이 직접 답변합니다. 이번 권한 확인에는 모델별 설정도 포함됩니다.", "辅助识图或切换视觉模型,默认关闭": "보조 이미지 읽기 또는 비전 모델 전환, 기본 꺼짐", "辅助识图配置": "보조 이미지 읽기 설정", "输入同步密码": "동기화 비밀번호 입력", "输入当前登录用的密码": "현재 로그인 비밀번호를 입력하세요", "输入状态码,回车添加": "상태 코드를 입력하고 Enter로 추가", "运行形态": "실행 형태", "近期没有命中样本,不代表未来请求不会命中。": "최근 일치하는 샘플이 없어도 이후 요청은 일치할 수 있습니다.", "还原": "되돌리기", "还有额度时被 429 的账号排到队尾,30 分钟后自动回到队列(成功转发一次也会立即回来)。它标记的是「疑似共享池被别人抢」,不是「这个账号本身有问题」。⚠️ 注意它与路由策略的配合:在「家内轮询」下,队尾意味着这一家整体被往后排 —— 如果某个提供商的账号被批量限流,它们会集体沉到队尾,那个家可能长时间轮不到。这时可以关掉本项,让 429 过的账号只受冷却约束(冷却到点自动回来)。": "잔여량이 남아 있는데 429 응답을 받은 계정은 맨 뒤로 밀렸다가 30 분 후 자동으로 복귀합니다(전송 한 번 성공 시 즉시 복귀). 이는 \"공유 풀을 남이 가져가고 있는 것으로 의심\"을 표시하는 것이지 \"이 계정 자체의 문제\"가 아닙니다. ⚠️ 라우팅 전략과의 조합에 주의: \"제공자 내 순환\"에서는 맨 뒤 = 제공자 전체가 뒤로 밀린다는 뜻 — 한 제공자의 계정들이 일괄 레이트 리밋을 당하면 전부 맨 뒤로 가라앉아 그 제공자가 오랫동안 순서가 오지 않을 수 있습니다. 이럴 때는 이 항목을 꺼서 429 를 받은 계정이 쿨다운 규칙만 따르도록 하면 좋습니다(쿨다운이 끝나면 자동 복귀).", "还没有可用的视觉模型。": "아직 사용할 수 있는 비전 모델이 없습니다.", "还没有同步过。": "아직 동기화한 적이 없습니다.", "还没有添加服务器。点右上角「添加」,填入网关所在机器的 IP 或域名与端口。": "서버가 없습니다. 오른쪽 위 \"추가\"를 눌러 게이트웨이가 실행 중인 기기의 IP 또는 도메인과 포트를 입력하세요.", "还没有装载任何数据。": "아직 로드된 데이터가 없습니다.", "还没有读到版本信息": "버전 정보를 아직 읽지 못했습니다", "还没有选择模型,这块设置暂时不起作用。": "모델을 아직 선택하지 않아 이 블록은 지금 아무 동작도 하지 않습니다.", "这一份就是「替换 / 追加」模式下网关要发的 system 正文。": "이 본문이 「교체 / 추가」 모드에서 게이트웨이가 보낼 system 본문입니다.", "这一项已隐藏": "이 항목은 숨겨져 있습니다", "这一项正在显示": "이 항목은 표시 중입니다", "这些模型的请求交给当前路由内可用的视觉模型回答,不再回到原模型。": "이 모델들의 요청은 현재 라우트에서 쓸 수 있는 비전 모델이 원래 모델 대신 답합니다.", "这些模型看到图片时,先把图片交给 {model} 读一遍,再由它们自己结合读到的内容回答。": "이 모델들이 이미지를 받으면 먼저 {model}이(가) 읽고, 읽은 내용을 바탕으로 원래 모델이 답합니다.", "这些模型看到图片时,先把图片交给「沿用工具服务的视觉分析模型」读一遍,再由它们自己结合读到的内容回答。": "이 모델들이 이미지를 받으면 먼저 도구 서비스의 비전 모델이 읽고, 읽은 내용을 바탕으로 원래 모델이 답합니다.", "这只模型只负责看图,最终仍由原模型回答。": "이 모델은 이미지만 읽고 최종 답변은 원래 모델이 합니다.", "这只模型直接接收图片与对话,完成本次回答。": "이 모델이 이미지와 대화를 직접 받아 이번 답변을 완성합니다.", "这台网关未启用机器人校验": "이 게이트웨이는 봇 확인을 사용하지 않습니다", "这台网关没有管理员,用一把已启用的 API Key 访问。": "이 게이트웨이에는 관리자가 없습니다. 활성화된 API Key로 접속하세요.", "这条历史请求没有保存识别依据,不能据此自动创建规则。": "이 과거 요청에는 식별 근거가 저장되지 않아 이를 바탕으로 규칙을 자동 생성할 수 없습니다.", "这条规则已被删除,请关闭编辑后重新添加。": "이 규칙이 삭제되었습니다. 편집기를 닫고 다시 추가하세요.", "这里只列出已保存的提供商配置;未配置的提供商沿用全局设置,可从下拉框手动添加。用户保存的模式、文件和正文优先于全局设置,「跟随默认」只取消该提供商的模式、文件和正文覆盖。ZCode 套餐池默认由插件按三块装配,客户端系统正文合入第三块,不会自动创建替换规则;手动修改的网关提示词段或关闭开关仍以用户配置为准,能否被接受取决于上游规则。": "저장된 제공자 설정만 표시합니다. 설정하지 않은 제공자는 전역 설정을 따르며 드롭다운에서 수동으로 추가할 수 있습니다. 저장한 모드, 파일, 본문은 전역 설정보다 우선합니다. 「기본값 따르기」는 해당 제공자의 모드, 파일, 본문 재정의만 해제합니다. ZCode Start Plan은 기본적으로 플러그인이 세 블록을 구성하고 클라이언트의 system 본문을 세 번째 블록에 합칩니다. 대체 규칙은 자동으로 만들지 않습니다. 수동으로 수정한 게이트웨이 프롬프트 블록이나 구성 스위치를 끈 설정은 그대로 우선 적용되며, 허용 여부는 업스트림 규칙에 따라 달라집니다.", "进程 PID": "프로세스 PID", "远程根目录": "원격 루트 디렉터리", "远端同一路径下的旧快照。事件日志、请求明细与调试报文不会上传。": "같은 원격 경로의 이전 스냅샷을 덮어씁니다. 이벤트 로그, 요청 상세, 디버그 패킷은 업로드되지 않습니다.", "远端已有一份快照,将被覆盖": "원격에 이미 스냅샷이 있으며 덮어씁니다", "远端快照使用了另一把账号密钥,但没有携带密钥文件,无法在本机解密。请在原来那台机器上重新上传一次。": "원격 스냅샷이 다른 계정 키를 사용하지만 키 파일이 포함되어 있지 않아 이 컴퓨터에서 복호화할 수 없습니다. 원래 컴퓨터에서 다시 업로드하세요.", "远端快照使用的账号密钥与本机不同。请输入上传那台机器设置的同步密码,用它解出密钥装到本机后再继续下载。": "원격 스냅샷은 이 컴퓨터와 다른 계정 키를 사용합니다. 업로드한 컴퓨터에서 설정한 동기화 비밀번호를 입력해 키를 복호화하고 이 컴퓨터에 설치한 뒤 다운로드를 계속하세요.", "远端数据与当前版本不兼容": "원격 데이터가 현재 버전과 호환되지 않습니다", "远端该路径下还没有快照,本次是首次上传。": "해당 원격 경로에 아직 스냅샷이 없습니다. 이번이 첫 업로드입니다.", "远端路径:{path}": "원격 경로: {path}", "远端还没有可下载的同步数据": "원격에 다운로드할 동기화 데이터가 없습니다", "连不上这台网关。确认地址与端口正确、网关已启动,且已开启「局域网访问」;用 https 时还要确认证书有效": "이 게이트웨이에 연결할 수 없습니다. 주소와 포트가 올바른지, 게이트웨이가 실행 중인지, \"LAN 접근\"이 켜져 있는지 확인하세요. https를 쓰는 경우 인증서가 유효한지도 확인하세요.", "连不上这台网关。请确认地址、端口与防火墙设置,网关需已启动;桌面端请在「设置 → 网关 → 网络访问」开启「允许其他设备访问网关」。使用 HTTPS 时还需确认证书有效。": "이 게이트웨이에 연결할 수 없습니다. 주소, 포트, 방화벽 설정을 확인하고 게이트웨이가 실행 중인지 확인하세요. 데스크톱 앱에서는 「설정 → 게이트웨이 → 네트워크 접근」에서 「다른 기기의 게이트웨이 접근 허용」을 켜세요. HTTPS를 사용하는 경우 인증서가 유효한지도 확인하세요.", "连接中超时": "연결 타임아웃", "连接失败:{message}": "연결 실패: {message}", "连续失败到阈值后把这个账号整个打开(默认关)。与失败退避的分工:退避管「单次失败先凉一会儿」,惩罚轻、自动恢复;熔断管「这个账号现在整体不对劲,别再一条条地试」,要连续成功若干次才关。打开期间该账号被跳过,除非全场只剩它 —— 那时仍放行试一次。": "연속 실패가 임계값에 도달하면 이 계정 전체를 차단합니다(기본값 꺼짐). 실패 백오프와의 역할 분담: 백오프는 \"단일 실패를 잠시 식히는\" 가벼운 처벌로 자동 복구되고, 서킷 브레이커는 \"이 계정이 전반적으로 이상하니 하나씩 시도하지 말 것\"으로, 연속 성공이 여러 번 이어져야 닫힙니다. 차단 중에는 해당 계정이 건너뛰어지지만, 남은 것이 이것뿐이면 한 번은 시도해 봅니다.", "追加": "추가", "追加网关提示词": "게이트웨이 시스템 프롬프트 추가", "退出失败:{message}": "로그아웃 실패: {message}", "退出登录": "로그아웃", "退出这台服务器的登录,不影响其他服务器": "이 서버에서만 로그아웃합니다. 다른 서버는 영향 없음", "选好接管回答的视觉模型后这块设置才会生效。": "답변을 이어받을 비전 모델을 고르면 이 블록이 적용됩니다.", "选好视觉模型后这块设置才会生效。": "비전 모델을 고르면 이 블록이 적용됩니다.", "选定提供商": "선택한 제공자", "选择一个或多个模型": "모델을 하나 이상 선택", "选择位置并加密备份": "저장 위치 선택 및 암호화 백업", "选择备份文件并恢复": "백업 파일을 선택해 복원", "选择提供商(可多选)": "제공자 선택(복수 선택 가능)", "选路规则": "선택 규칙", "选项与默认值由已启用插件提供;你保存的覆盖值不会被插件更新替换。": "활성화된 플러그인이 옵션과 기본값을 제공합니다. 플러그인을 업데이트해도 저장한 사용자 설정은 바뀌지 않습니다.", "选项与默认值由插件提供,你保存的修改不会被插件更新覆盖。切换提供商不会丢失未保存的修改。": "옵션과 기본값은 플러그인이 제공합니다. 플러그인 업데이트는 저장한 변경 사항을 덮어쓰지 않습니다. 제공자를 전환해도 저장하지 않은 수정 내용은 유지됩니다.", "透传": "패스스루", "透传客户端 system": "클라이언트 system 패스스루", "透传客户端 system(默认)": "클라이언트 system 패스스루(기본값)", "通常是网络问题,点右侧重试": "대개 네트워크 문제입니다. 오른쪽 재시도를 누르세요", "通用": "일반", "遇到 Bug、报错或异常行为": "버그, 오류 또는 비정상 동작 발생 시", "配置目录下的 agent2api.db(账号、日志、请求记录、调试报文与设置都在里面)。": "구성 디렉터리의 agent2api.db입니다(계정, 로그, 요청 기록, 디버그 메시지와 설정이 모두 들어 있습니다).", "采用本规则": "이 규칙 적용", "重启后生效,不影响当前操作": "재시작하면 적용됩니다. 하던 작업은 중단되지 않습니다", "重命名": "이름 변경", "重命名只更新分类显示名,不拆分历史用量,也不重新归类历史请求。": "이름 변경은 분류 표시명만 바꾸며 과거 사용량을 분리하거나 요청을 재분류하지 않습니다.", "重命名客户端分类": "클라이언트 분류 이름 변경", "重复清理": "반복 삭제", "重复清理直到不再变化(仅正则删除)": "변화가 없을 때까지 반복(정규식 삭제만 가능)", "重新读取会替换当前未保存的草稿。": "다시 불러오면 현재 저장하지 않은 초안이 바뀝니다.", "重新读取设置": "설정 다시 불러오기", "重编码质量": "재인코딩 품질", "重置会清空管理员账号与密码,面板将回到「未注册」状态。": "재설정하면 관리자 계정과 비밀번호가 지워지고 패널이 \"미등록\" 상태로 돌아갑니다.", "重置管理员": "관리자 재설정", "重试设置已刷新": "재시도 설정을 새로 고쳤습니다", "重试间隔": "재시도 간격", "铸造守卫每隔多久看一次库存(毫秒)。只影响发现缺货的反应速度 —— 库存够用时轮询不会铸造任何令牌。默认 2500 毫秒,可填 1000–30000。": "발행 가드가 재고를 몇 밀리초마다 확인할지 정합니다. 부족 발견 반응 속도에만 영향을 주며 — 재고가 충분하면 폴링해도 아무 토큰도 발행하지 않습니다. 기본값 2500 밀리초, 1000–30000 입력 가능.", "长边像素上限": "긴 변 최대 픽셀", "问题反馈": "문제 신고", "阿里云 OSS": "알리바바 클라우드 OSS", "限流中账号": "속도 제한 중 계정", "随包内嵌的快照(发版时的那份)": "앱에 내장된 스냅샷(릴리스 시점 기준)", "隐藏 {name}": "{name} 숨기기", "隐藏分组 {name}": "그룹 {name} 숨기기", "隐藏用户名": "사용자 이름 숨기기", "隐藏账号名(显示成星号)": "계정 이름 숨기기(별표로 표시)", "隐藏这一组": "이 그룹 숨기기", "非流式响应超时": "비스트리밍 응답 타임아웃", "面板登录": "패널 로그인", "面板端口": "패널 포트", "面板管理员账号": "패널 관리자 계정", "韩语": "한국어", "项目来源": "프로젝트 출처", "预览不发送模型请求,也不修改历史记录。": "미리보기는 모델을 호출하거나 과거 기록을 변경하지 않습니다.", "预览中…": "미리 보는 중…", "预览匹配": "일치 결과 미리보기", "预设": "프리셋", "首选不可用时再依次尝试备选。": "첫 선택을 쓸 수 없으면 대체 모델을 차례로 시도합니다.", "首选不可用时再依次尝试;留空则停止并说明原因。": "첫 선택을 쓸 수 없을 때 차례로 시도합니다. 비워 두면 중단하고 이유를 설명합니다.", "验证方式": "인증 방식", "验证码令牌池": "캡차 토큰 풀", "验证码令牌池设置已刷新": "캡차 토큰 풀 설정을 새로고침했습니다", "验证码库存的参考目标,默认 3 个,可填 1–10。只影响库存状态展示,不会因为低于目标自动生成令牌或弹出验证码。": "재고 표시 기준 목표입니다. 기본값은 3개이며 1–10 범위입니다. 상태 표시에만 영향을 주며 목표보다 적어도 토큰을 자동으로 생성하거나 인증 창을 띄우지 않습니다.", "高级设置": "고급 설정", "默认 10000 条,按日志级别分配保留容量,超出后清理最旧的记录;同时受保留天数限制。": "기본값은 10000건이며 로그 수준별로 보관 용량을 배분합니다. 초과분은 가장 오래된 기록부터 삭제하며 보관 일수 제한도 적용됩니다.", "默认 1000000 条(100 万),超出后清理最旧的请求记录及其原始正文,不影响按天聚合报表;同时受保留天数限制。": "기본값은 1000000건(100만 건)입니다. 초과하면 가장 오래된 요청 기록과 원문을 삭제하며 일별 집계 보고서에는 영향을 주지 않습니다. 보관 일수 제한도 적용됩니다.", "默认 5 分钟。间隔内的变化合并为最新快照,到期后上传;手动上传不受限制。失败后会延长等待并自动重试。": "기본값은 5분입니다. 대기 중 변경 사항은 최신 스냅샷으로 합쳐 간격이 지난 뒤 업로드합니다. 수동 업로드에는 제한이 없습니다. 실패하면 대기 시간을 늘려 자동으로 재시도합니다.", "默认仅本机可访问(127.0.0.1)。开启后监听所有 IPv4 网卡(0.0.0.0),访问范围由网络与防火墙决定,不限于局域网,也不会自动开放到公网。开启前必须注册面板管理员;管理接口需要管理员会话或网关 Key,API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。「同时开放网页管理面板」默认关闭,开启后可从其他设备的浏览器登录管理;关闭它不影响 API 转发和本机桌面管理。修改任一开关都需要重启应用。": "기본적으로 이 기기에서만 접근할 수 있습니다(127.0.0.1). 켜면 모든 IPv4 인터페이스(0.0.0.0)에서 수신하며 접근 범위는 네트워크와 방화벽 설정으로 결정됩니다. LAN으로 제한되지 않으며 인터넷에 자동 공개되지도 않습니다. 먼저 패널 관리자를 등록해야 합니다. 관리 API에는 관리자 세션 또는 게이트웨이 키가, API 호출에는 활성화된 게이트웨이 키가 필요합니다. 키가 없으면 기본 키를 자동 생성합니다. 웹 관리 패널은 기본적으로 꺼져 있으며, 켜면 다른 기기의 브라우저에서 로그인하여 관리할 수 있습니다. 꺼도 API 전달과 로컬 데스크톱 관리에는 영향이 없습니다. 어느 스위치든 변경 후 앱을 다시 시작해야 합니다.", "默认值通常够用,出问题时才需要调": "기본값으로 대부분 충분하며, 문제가 생겼을 때만 조정하세요", "默认关闭。开启后下一次 Codex 请求立即生效,不用重启;只对 Codex 来源的 /v1/responses 请求补阶段标记,其它客户端与 /v1/chat/completions 不受影响。": "기본값은 꺼짐입니다. 켜면 다음 Codex 요청부터 재시작 없이 적용되며, 단계 표시는 Codex 출처 /v1/responses 요청에만 보강되고 다른 클라이언트와 /v1/chat/completions는 영향을 받지 않습니다.", "默认关闭。改动立即生效,不用重启;关闭期间的跨源请求会被预检拦下。": "기본적으로 꺼져 있습니다. 변경 사항은 재시작 없이 즉시 적용되며, 꺼져 있는 동안의 교차 출처 요청은 프리플라이트에 걸립니다.", "默认关闭窗口不会退出程序,而是把窗口缩到系统托盘,转发继续在后台运行(OpenAI 客户端不受影响);要彻底退出程序,请在托盘图标上右键选「退出」。关掉这个开关后,点关闭按钮即退出程序、转发随之中断。「开机自动启动」开启后,登录系统时会自动启动本程序(通常直接驻留托盘),不需要手动打开。": "기본적으로 창을 닫아도 프로그램이 종료되지 않고 창이 시스템 트레이로 최소화되며 포워딩은 백그라운드에서 계속 실행됩니다(OpenAI 클라이언트는 영향을 받지 않습니다). 프로그램을 완전히 종료하려면 트레이 아이콘을 마우스 오른쪽 버튼으로 클릭하고 「종료」를 선택하세요. 이 스위치를 끄면 닫기 버튼을 누르는 즉시 프로그램이 종료되고 포워딩도 중단됩니다. 「자동 시작」을 켜면 시스템 로그인 시 이 프로그램이 자동으로 실행되며(보통 바로 트레이에 상주), 수동으로 열 필요가 없습니다.", "默认应用全部提供商(包含之后新增的插件与自定义提供商)。指定范围后,未选中的提供商不做指纹脱敏;清空选择自动回到全部提供商。": "기본적으로 이후 추가한 플러그인 및 사용자 지정 제공자를 포함한 모든 제공자에 적용합니다. 범위를 지정하면 선택하지 않은 제공자는 마스킹하지 않습니다. 선택을 비우면 전체 제공자로 돌아갑니다.", "默认开启。只改 role 字段本身,消息内容与顺序都不动;本项只改发给上游的副本,客户端看到的响应内容不变。": "기본값은 켜짐. role 필드만 수정하며 메시지 내용과 순서는 그대로입니다. 업스트림으로 보내는 사본에만 적용되고 클라이언트가 보는 응답은 변하지 않습니다.", "默认开启。只改发给上游的副本,客户端看到的响应与原图都不变;请求日志里保存的是客户端发来的原图,不是压缩后的版本。只作用在对话链路,生图 / 图片编辑不经过这里。改完对下一个请求立即生效,不用重启。": "기본값은 켜짐입니다. 바뀌는 것은 상류로 보내는 사본뿐이며, 클라이언트가 보는 응답과 원본 이미지는 그대로입니다. 요청 로그에는 압축본이 아니라 클라이언트가 보낸 원본 이미지가 저장됩니다. 대화 경로에만 적용되며 이미지 생성과 편집은 여기를 거치지 않습니다. 변경은 다음 요청부터 적용되며 재시작이 필요 없습니다.", "默认开启。命中明细会记进请求日志的「敏」标签(悬停可看命中了哪几条规则)。本项只改发给上游的副本,客户端看到的响应内容不变。": "기본적으로 켜져 있습니다. 적중 내역은 요청 로그의 「민감」 태그에 기록됩니다(마우스를 올리면 어떤 규칙에 걸렸는지 볼 수 있습니다). 이 항목은 업스트림으로 보내는 사본만 바꾸며 클라이언트가 받는 응답 내용은 달라지지 않습니다.", "默认开启并应用全部提供商。编辑词表或应用范围后点击「保存设置」,下一次请求立即生效,不用重启。命中明细仍记进请求日志的「敏」标签。": "기본적으로 활성화되어 모든 제공자에 적용됩니다. 규칙이나 범위를 편집한 후 설정 저장을 누르면 재시작 없이 다음 요청부터 적용됩니다. 일치 내역은 요청 로그의 마스킹 태그에 계속 기록됩니다.", "默认网关只监听 127.0.0.1,只有本机能访问。开启后网关改听所有网卡,同一局域网内的设备可以把 API 地址指向本机 IP 一起使用。出于安全考虑,开启前必须先注册一个面板管理员:管理接口从此要求管理员会话或网关 Key,模型额度不会对局域网裸奔;一把启用的网关 Key 都没有时,转发接口也会拒绝服务,直到创建第一把。改动需要重启应用生效。「同时开放网页管理面板」把管理界面也出给局域网(其他设备的浏览器打开本机 IP 即可管理),默认关闭 —— 桌面端的面板仍只由本程序自己出。": "기본적으로 게이트웨이는 127.0.0.1만 수신하며 로컬에서만 접근할 수 있습니다. 켜면 게이트웨이가 모든 네트워크 인터페이스를 수신하고, 같은 LAN의 기기에서 API 주소를 로컬 IP로 지정해 함께 사용할 수 있습니다. 보안을 위해 켜기 전에 패널 관리자를 먼저 등록해야 합니다. 관리 인터페이스는 이때부터 관리자 세션 또는 게이트웨이 키를 요구하므로 모델 할당량이 LAN에 무방비로 노출되지 않습니다. 활성화된 게이트웨이 키가 하나도 없으면 첫 키를 만들 때까지 포워딩 인터페이스도 서비스를 거부합니다. 변경 사항은 앱을 다시 시작해야 적용됩니다. 「웹 관리 패널도 함께 공개」는 관리 화면까지 LAN에 공개하며(다른 기기의 브라우저에서 로컬 IP를 열면 관리 가능), 기본적으로 꺼져 있습니다. 데스크톱 패널은 계속 이 프로그램에서만 제공됩니다.", "({n} 个整组隐藏)": " (그룹 {n}개 전체 숨김)", "({n} 行)": "({n}행)", "({n} 项被覆盖)": "({n}개 덮어씀)", "(全部为默认值)": "(모두 기본값)", "(官方原文)": "(공식 원문)", "(已存一份正文,{n} 行;切成「替换 / 追加」后生效)": "(저장된 본문 있음, {n}행; 「교체 / 추가」로 전환하면 적용)", "(已改)": "(수정됨)", "(已注册过会跳过这一步,直接生效)。": "(이미 등록한 경우 이 단계를 건너뛰고 바로 적용됩니다).", "(当前生效的就是这一份,{n} 行)": "(현재 적용 중인 본문, {n}행)", "(文件:{path})": "(파일: {path})", "(未生效)": "(미적용)", ",{items}": ", {items}", ",{time}": ", {time}", ",以及代理池 / 订阅里可能存在的代理凭据。请使用只有你能访问的私有存储;账号密钥由同步密码单独加密,泄露存储本身不等于泄露账号。": ", 그리고 프록시 풀/구독에 있을 수 있는 프록시 자격 증명이 포함됩니다. 본인만 접근할 수 있는 전용 스토리지를 사용하세요. 계정 키는 동기화 비밀번호로 별도 암호화되므로 스토리지가 유출되어도 계정이 유출되지는 않습니다.", ",包括恢复后需要重新登录管理面板。": " 통째로 교체됩니다. 복원 후에는 패널에 다시 로그인해야 합니다.", ",可直接用于登录。请妥善保管,不要外传或上传到公共位置。": ", 바로 로그인에 사용할 수 있습니다. 안전하게 보관하고 외부에 전달하거나 공공장소에 업로드하지 마세요.", ",文件里后续的改动在清空这里之前不再生效": ", 파일의 이후 변경 사항은 여기를 비우기 전까지 적용되지 않습니다", ",替换前的数据已备份为 {name}": ", 교체 전 데이터는 {name}(으)로 백업되어 있습니다", ",自定义提供商新增 {added} 个、更新 {updated} 个": ", 커스텀 제공자 {added}개 추가, {updated}개 업데이트", ";开关关闭时词表不执行": "; 스위치가 꺼져 있으면 규칙을 실행하지 않습니다", ";网页管理面板已一并开放(浏览器打开同一地址)": "; 웹 관리 패널도 함께 공개되었습니다(브라우저에서 같은 주소를 여세요)" }); +window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { " 到 {file}": " → {file}", " 正文已改:{edited}(其余段用官方原文)。": " 본문 수정됨: {edited}(나머지 단락은 공식 원문 사용).", "(无 id)": "(id 없음)", "/v1 拒绝无 Key 请求": "/v1은 키 없는 요청 거부", "0 B": "0 B", "100%(默认)": "100%(기본값)", "<本机IP>": "<로컬 IP>", "ALTCHA(本地验证)": "ALTCHA(로컬 인증)", "Access Key ID": "Access Key ID", "Agent2API 手机端": "Agent2API 모바일", "Android 应用(APK)": "Android 앱(APK)", "Cline 上游按请求头判定「调用方是不是 Cline 自家产品」:X-CLIENT-TYPE: cline-sdk 是硬门槛(缺了它免费池模型一律 403),版本号与平台标识让请求更贴近官方客户端的形态。这里列出的是网关默认会发的头:改某一行的值 = 覆盖默认值(也可以新增默认清单之外的自定义头);把值清空保存 = 这个头不发送;在界面删掉被改过的行 = 回落默认值。改完点「保存」,下一个 Cline 请求立即生效。不懂某一行的含义就不要动它 —— 伪装头的价值在「与官方客户端逐字一致」。": "Cline 업스트림은 요청 헤더로 「호출자가 Cline 자사 제품인지」를 판별합니다. X-CLIENT-TYPE: cline-sdk는 필수 조건이며(이게 없으면 무료 풀 모델은 모두 403), 버전 번호와 플랫폼 식별자는 요청을 공식 클라이언트의 형태에 더 가깝게 만듭니다. 여기에 나열된 것은 게이트웨이가 기본으로 보내는 헤더입니다. 특정 행의 값을 바꾸면 기본값을 덮어쓰고(기본 목록에 없는 사용자 지정 헤더도 추가할 수 있습니다), 값을 비워 저장하면 그 헤더를 보내지 않으며, 화면에서 수정된 행을 삭제하면 기본값으로 돌아갑니다. 수정 후 「저장」을 누르면 다음 Cline 요청부터 즉시 적용됩니다. 의미를 모르는 행은 건드리지 마세요. 위장 헤더의 가치는 「공식 클라이언트와 글자 하나까지 동일」한 데 있습니다.", "Cline 伪装头": "Cline 위장 헤더", "Cline 伪装头已刷新": "Cline 위장 헤더를 새로 고쳤습니다", "Docker 容器": "Docker 컨테이너", "Endpoint": "Endpoint", "Endpoint 填 https://<账户ID>.r2.cloudflarestorage.com,Region 固定填 auto。": "Endpoint에 https://<계정 ID>.r2.cloudflarestorage.com 을, Region에는 auto를 입력하세요.", "Endpoint 填 https://cos.ap-guangzhou.myqcloud.com,Region 填 ap-guangzhou(按实际地域改)。": "Endpoint에 https://cos.ap-guangzhou.myqcloud.com 을, Region에는 ap-guangzhou를 입력하세요(실제 리전에 맞게 변경).", "Endpoint 填 https://obs.cn-north-4.myhuaweicloud.com,Region 填 cn-north-4(按实际地域改)。": "Endpoint에 https://obs.cn-north-4.myhuaweicloud.com 을, Region에는 cn-north-4를 입력하세요(실제 리전에 맞게 변경).", "Endpoint 填 https://oss-cn-hangzhou.aliyuncs.com,Region 填 cn-hangzhou(按实际地域改)。": "Endpoint에 https://oss-cn-hangzhou.aliyuncs.com 을, Region에는 cn-hangzhou를 입력하세요(실제 리전에 맞게 변경).", "Endpoint 形如 http://192.168.1.10:9000(自建通常用 http);Region 一般填 us-east-1。": "Endpoint는 http://192.168.1.10:9000 형식이며(자체 호스팅은 보통 http), Region은 일반적으로 us-east-1입니다.", "Endpoint 留空即走 AWS 官方地址;Region 必须与桶所在区域一致。": "Endpoint를 비워 두면 AWS 공식 주소를 사용합니다. Region은 버킷의 리전과 일치해야 합니다.", "KB": "KB", "Linux 安装包(deb)": "Linux 패키지(deb)", "Logo 不能超过 2 MiB": "로고는 2 MiB를 초과할 수 없습니다", "Logo 仅支持 PNG、JPG、WebP 图片": "로고는 PNG, JPG, WebP 이미지만 지원합니다", "Nextcloud": "Nextcloud", "OpenAI 新版 API 用 developer 角色取代 system 承载指令,新版 OpenAI SDK 与部分客户端发的对话里会出现 role 为 developer 的消息;不少 OpenAI 兼容上游(尤其是自定义提供商的透传路径)不认识这个角色,收到就报 400。开启本项后,网关在每次转发前把 developer 角色的消息改写为 system —— 两类角色在 OpenAI 语义上等价(OpenAI 自己的迁移指南也是这么映射的),改写不影响对话内容与语义;对本来就只认 system 的各家内置上游同样无害。默认开启;关掉后 developer 消息会原样发往上游,不认识它的上游会报「角色不存在」一类的错误。": "새 버전 OpenAI API는 system 대신 developer 역할로 지시를 전달하므로, 최신 OpenAI SDK와 일부 클라이언트가 보내는 대화에 role이 developer인 메시지가 포함됩니다. 많은 OpenAI 호환 업스트림(특히 커스텀 제공자의 투과 경로)은 이 역할을 인식하지 못해 받자마자 400을 반환합니다. 이 항목을 켜면 게이트웨이가 매 전달 전에 developer 역할 메시지를 system으로 수정합니다 — 두 역할은 OpenAI 의미론에서 동등하고(OpenAI 자체 마이그레이션 가이드도 같은 매핑을 사용), 수정은 대화 내용과 의미에 영향을 주지 않으며, 애초에 system만 받는 내장 업스트림에도 무해합니다. 기본값은 켜짐. 끄면 developer 메시지가 그대로 업스트림으로 전송되며, 이 역할을 모르는 업스트림은 \"역할이 존재하지 않는다\"류의 오류를 반환합니다.", "QQ 群 · Telegram": "QQ 그룹 · Telegram", "S3 兼容存储": "S3 호환 스토리지", "Safari 没有安装按钮:点底部的「分享」,选「添加到主屏幕」,再点「添加」。": "Safari에는 설치 버튼이 없습니다. 하단의 「공유」 → 「홈 화면에 추가」 → 「추가」 순서로 누르세요.", "Secret Access Key": "Secret Access Key", "Token 读数量级": "Token 수치 표기", "UTF-8 文本文件路径,留空用内置默认提示词(通用编码助手提示词,不含任何会被上游拦截的模板句)。只在「替换 / 追加」模式下生效,透传模式不读它。": "UTF-8 텍스트 파일 경로입니다. 비워 두면 내장 기본 시스템 프롬프트를 사용합니다(범용 코딩 어시스턴트 프롬프트로, 업스트림에 차단될 만한 템플릿 문구가 없습니다). 「교체 / 추가」 모드에서만 적용되며, 패스스루 모드에서는 읽지 않습니다.", "WebView / 浏览器内核": "WebView / 브라우저 엔진", "Windows 安装包(NSIS)": "Windows 설치 프로그램(NSIS)", "Windows 服务": "Windows 서비스", "ZCode 套餐池(Start Plan)通道每条请求都要消耗一个当次铸造的人机验证令牌(一次性,2 分钟过期),库存低于该值时界面自动补铸到它。默认 3 个。调大能吸收突发并发,但用不掉的令牌 2 分钟就过期作废,烧的是上游风控配额。可填 1–10。": "ZCode 플랜 풀 (Start Plan) 채널의 각 요청은 그때그때 생성된 캡차 토큰(1회용, 2분 후 만료)을 하나 소비하며, 재고가 이 값 아래로 내려가면 UI가 이 값까지 자동으로 보충합니다. 기본값 3. 크게 잡으면 갑작스러운 동시 요청을 흡수하지만, 쓰지 못한 토큰은 2분 만에 만료되어 상류의 리스크 관리 쿼터를 태웁니다. 1–10을 입력할 수 있습니다.", "ZCode「套餐池(Start Plan)」通道的每条推理请求都要附一个当次铸造的阿里云无痕验证令牌(一次性、约 2 分钟过期):令牌由界面里的铸造守卫静默铸好、推给网关入池,转发时逐条取用。这里的三个值管的是补货节奏:①「库存目标」= 库存低于它守卫才补铸、补到它为止,默认 3 个;②「轮询间隔」= 守卫多久看一次库存,默认 2500 毫秒,只影响反应速度(库存够用时不会多铸);③「单轮铸造上限」= 发现缺货时一轮最多铸几个,默认 1 个(连铸之间固定隔 500 毫秒)。请求密集、请求日志里连续出现「需要人机验证令牌」的 503 时,把目标与单轮上限适当调大、轮询调快,能让池子跟得上消耗 —— 代价是上游(阿里云)对铸造频率有风控,铸得越多越快越容易触发限流,且用不掉的令牌 2 分钟即过期作废、等于白烧配额,所以建议小步调。保存后对下一轮补货立即生效,不用重启。": "ZCode \"플랜 풀 (Start Plan)\" 채널의 모든 추론 요청에는 그때그때 생성된 Aliyun 인비저블 캡차 토큰(1회용, 약 2분 후 만료)을 붙여야 합니다: 토큰은 UI 안의 민트 가드가 조용히 생성해 게이트웨이 풀에 밀어넣고, 포워딩은 요청마다 하나씩 꺼내 씁니다. 여기의 세 값은 보충 리듬을 관리합니다: ① \"재고 목표\" = 재고가 이 값 아래로 내려갈 때만 이 값까지 보충(기본 3); ② \"폴링 간격\" = 가드가 재고를 확인하는 주기, 기본 2500ms(반응 속도에만 영향 — 재고가 충분하면 굳이 더 만들지 않음); ③ \"1회 생성 한도\" = 재고 부족 발견 시 한 라운드에 최대 몇 개까지 만들지, 기본 1(연속 생성 사이는 고정 500ms). 요청이 많고 요청 로그에 \"캡차 토큰 필요\" 503이 계속 나온다면 목표와 1회 한도를 적당히 올리고 폴링을 빠르게 하면 풀이 소비를 따라갑니다 — 대가로 상류(Aliyun)는 생성 빈도에 리스크 관리를 두어 많이 빠르게 만들수록 제한에 걸리기 쉽고, 쓰지 못한 토큰은 어차피 2분 만에 만료되어 쿼터를 낭비하므로 조금씩 조정을 권장합니다. 저장하면 다음 보충 라운드부터 즉시 적용되며 재시작이 필요 없습니다.", "beta 版": "beta 버전", "iOS 应用": "iOS 앱", "models.dev 元数据": "models.dev 메타데이터", "models.dev 元数据已更新({count} 条)": "models.dev 메타데이터를 갱신했습니다({count}건)", "models.dev 是一个开源的模型资料库(社区维护),这里用它补齐「上游没告诉我们」的模型能力:上下文窗口、最大输出、工具调用、图片、视频、是否支持思考,以及这个模型认识哪些思考档位。优先级是:你在「模型能力」里手工改的值 > 上游清单自己声明的值 > models.dev 的值 —— 它只填上游没声明的空位,从不推翻上游已声明的。网关随包内嵌了一份快照,所以离线、首次启动、访问不通时也有数据;开启时会按「模型目录刷新」任务的间隔联网更新(同一轮里一并刷新,也可在这里立即刷新)。关闭只停联网刷新,已经拿到的数据继续用。": "models.dev는 커뮤니티가 유지하는 오픈소스 모델 데이터베이스입니다. 업스트림이 알려주지 않은 정보(컨텍스트 창, 최대 출력, 도구 호출, 이미지, 동영상, 추론 지원 여부, 그리고 이 모델이 실제로 받는 추론 레벨)를 여기서 채웁니다. 우선순위는 「모델 능력」에서 직접 수정한 값 > 업스트림 카탈로그의 선언값 > models.dev 값이며, 업스트림이 선언한 값을 뒤집지 않고 빈 자리만 채웁니다. 스냅샷이 앱에 내장되어 있어 오프라인·최초 실행·통신 불가 상황에서도 데이터가 있습니다. 켜져 있으면 「모델 카탈로그 새로고침」 주기에 맞춰 온라인으로 갱신합니다(같은 회차에 함께, 또는 여기서 즉시). 끄면 온라인 갱신만 멈추고 이미 받은 데이터는 계속 사용됩니다.", "models.dev 模型元数据": "models.dev 모델 메타데이터", "systemd 服务": "systemd 서비스", "{count} 条": "{count}건", "{count} 条 · 来自{origin}{at} · {mode}": "{count}건 · 출처: {origin}{at} · {mode}", "{count} 条规则,按列表顺序执行": "규칙 {count}개, 목록 순서대로 실행", "{d} 天 {h} 小时": "{d}일 {h}시간", "{h} 小时 {m} 分钟": "{h}시간 {m}분", "{label} 提示词文件": "{label} 시스템 프롬프트 파일", "{label} 的提示词模式": "{label}의 시스템 프롬프트 모드", "{label}({message})": "{label}({message})", "{lines} 行、{chars} 字符(按当前草稿计)": "{lines}행, {chars}자(현재 초안 기준)", "{minutes} 分钟": "{minutes}분", "{models} 同时出现在两块设置里,会按「辅助识图」处理。想改的话,把其中一个从这边的模型名单里去掉。": "{models}이(가) 두 블록에 모두 있습니다. 이 경우 \"보조 이미지 읽기\"로 처리됩니다. 바꾸려면 한쪽 모델 목록에서 빼세요.", "{mode}生效:上游收到的 system 来自{source}{lines}。": "{mode} 적용: 업스트림이 받는 system은 {source}에서 가져옵니다{lines}.", "{m} 分钟": "{m}분", "{noun}不能为空(可填 {min}–{max})": "{noun} 값은 비워 둘 수 없습니다({min}–{max} 입력 가능)", "{noun}必须在 {min}–{max} 之间(当前填的是 {text})": "{noun} 값은 {min}–{max} 사이여야 합니다(현재 입력: {text})", "{noun}必须是整数": "{noun} 값은 정수여야 합니다", "{n} B": "{n} B", "{n} GB": "{n} GB", "{n} KB": "{n} KB", "{n} MB": "{n} MB", "{n} 个头将随每个 Cline 请求发送": "헤더 {n}개가 모든 Cline 요청과 함께 전송됩니다", "{n} 台可选 · 点此切换": "{n}대 · 눌러서 전환", "{n} 项 · {shown} 显示": "{n}개 · {shown}개 표시", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "메뉴 {total}개 · 표시 {shown} · 숨김 {hidden} · 그룹 {groups}개", "{way}的适用模型": "{way}의 대상 모델", "⚠️ 密钥警告": "⚠️ 키 경고", "⚠️ 已关闭「{label}」的机器人校验": "⚠️ \"{label}\"의 봇 확인을 껐습니다", "⚠️ 机器人校验已关闭": "⚠️ 로봇 검증이 꺼져 있습니다", "✅ Cline 伪装头已保存": "✅ Cline 위장 헤더가 저장되었습니다", "✅ models.dev 模型元数据已开启": "✅ models.dev 모델 메타데이터를 켰습니다", "✅ 云同步设置已保存": "✅ 클라우드 동기화 설정이 저장되었습니다", "✅ 会话图片压缩已开启": "✅ 이미지 압축을 켰습니다", "✅ 出站指纹脱敏已开启": "✅ 아웃바운드 핑거프린트 마스킹이 켜졌습니다", "✅ 密码已修改,其他设备的登录已失效": "✅ 비밀번호를 변경했습니다. 다른 기기의 로그인은 해제되었습니다", "✅ 导入完成:{summary}": "✅ 가져오기 완료: {summary}", "✅ 已上传到云端({size})": "✅ 클라우드에 업로드했습니다({size})", "✅ 已为「{label}」装上网关自带提示词": "✅ 「{label}」에 게이트웨이 내장 시스템 프롬프트를 설치했습니다", "✅ 已从云端恢复{note}": "✅ 클라우드에서 복원했습니다{note}", "✅ 已保存:{label}": "✅ 저장됨: {label}", "✅ 已保存:{label} {value}": "✅ 저장됨: {label} {value}", "✅ 已保存:指定错误码直接换号": "✅ 저장됨: 지정 오류 코드 즉시 계정 전환", "✅ 已保留 {days} 天": "✅ {days}일 보관합니다", "✅ 已保留 {days} 天,超出部分已清理": "✅ {days}일 보관하며, 초과분은 정리했습니다", "✅ 已加密备份 {n} 张表({size}),包含恢复密钥:{file}": "✅ 테이블 {n}개 암호화 백업 완료({size}), 복원 키 포함: {file}", "✅ 已备份 {n} 张表({size})到 {file}": "✅ 테이블 {n}개({size})를 {file}(으)로 백업했습니다", "✅ 已导入账号密钥,请继续下载": "✅ 계정 키를 가져왔습니다. 계속 다운로드하세요", "✅ 已导出 {count} 个账号{note}{file}": "✅ 계정 {count}개를 내보냈습니다{note}{file}", "✅ 已开启「{label}」的机器人校验": "✅ \"{label}\"의 봇 확인을 켰습니다", "✅ 已恢复 {n} 张表{note}": "✅ 테이블 {n}개를 복원했습니다{note}", "✅ 已改用 k / M / B 缩写": "✅ k / M / B 약어로 변경했습니다", "✅ 已改用本地量级词(万 / 亿式)": "✅ 로컬 규모 단어(만 / 억 단위)로 전환했습니다", "✅ 已自动创建网关 Key「默认」(可在「网关 Key」页查看)": "✅ 게이트웨이 키 「기본」을 자동으로 만들었습니다(「게이트웨이 키」 페이지에서 확인할 수 있습니다)", "✅ 已解除内容拦截降级": "✅ 콘텐츠 차단 폴백을 해제했습니다", "✅ 开发者角色兼容已开启": "✅ 개발자 역할 호환이 켜졌습니다", "✅ 指纹脱敏设置已保存": "✅ 지문 마스킹 설정을 저장했습니다", "✅ 数量上限已设为 {count} 条": "✅ 건수 상한을 {count}건으로 설정했습니다", "✅ 数量上限已设为 {count} 条,超出部分已清理": "✅ 건수 상한을 {count}건으로 설정하고 초과분을 삭제했습니다", "✅ 机器人校验已开启": "✅ 로봇 검증이 켜졌습니다", "✅ 第三方模型回答完自动折叠过程已开启": "✅ 타사 모델의 답변 후 과정 자동 접기를 켰습니다", "✅ 设置已保存,应用正在重启…": "✅ 설정이 저장되었습니다. 앱을 다시 시작하는 중…", "✅ 调试模式已关闭": "✅ 디버그 모드가 꺼졌습니다", "✅ 调试模式已开启": "✅ 디버그 모드가 켜졌습니다", "✅ 路由设置已保存": "라우팅 설정이 저장되었습니다", "✅ 连接成功:{path}": "✅ 연결 성공: {path}", "、{n} 个自定义提供商": ", 커스텀 제공자 {n}개", "。事件日志、请求明细、调试报文与面板登录态保持不变。替换前会自动把当前业务数据备份到配置目录的 backups/ 下。": ". 이벤트 로그, 요청 상세, 디버그 패킷, 패널 로그인 상태는 그대로 유지됩니다. 교체 전에 현재 업무 데이터를 설정 디렉터리의 backups/ 에 자동으로 백업합니다.", "「{label}」将从 {previous} 天改为 {days} 天。": "「{label}」이(가) {previous}일에서 {days}일로 변경됩니다.", "「{label}」将从 {previous} 条改为 {count} 条。": "「{label}」을(를) {previous}건에서 {count}건으로 변경합니다.", "「{label}」改用内置默认提示词": "「{label}」이(가) 내장 기본 시스템 프롬프트로 전환되었습니다", "「{label}」的提示词文件已更新": "「{label}」의 시스템 프롬프트 파일이 업데이트되었습니다", "「{label}」的提示词正文已更新": "「{label}」의 시스템 프롬프트 본문이 업데이트되었습니다", "「{label}」的模式改为「{mode}」": "「{label}」의 모드가 「{mode}」(으)로 변경되었습니다", "「{label}」的网关自带提示词已改回官方原文": "「{label}」의 게이트웨이 내장 시스템 프롬프트를 공식 원문으로 되돌렸습니다", "「{label}」的网关自带提示词正文已更新": "「{label}」의 게이트웨이 내장 시스템 프롬프트 본문이 업데이트되었습니다", "「模型管理」里每个能力的来源标记(上游 / models.dev / 已覆盖)读的就是这份数据;映射弹窗的思考档位下拉也按这里的数据只列该模型真实认识的档位。": "「모델 관리」의 각 능력 출처 표시(업스트림 / models.dev / 직접 설정)가 이 데이터를 읽습니다. 매핑 대화상자의 추론 레벨 목록도 이 데이터를 기준으로 해당 모델이 실제로 받는 레벨만 표시합니다.", "「用哪份提示词」本来是按上游分别决定的事,所以每家可以有自己的模式、提示词文件与正文:不在这里列出的提供商一律沿用上面那份默认设置,「跟随默认」把这一家取消、回到默认。带「网关自带」那一行的家(目前是 ZCode 两家)默认就列在这里 —— 那一段是网关自己装上去的文本,不来自客户端也不来自提示词文件,默认开启、可以关掉,也可以改它的正文(改过的那一段以你的文本为准);关掉后还能不能通过上游校验,取决于上游当下的口径,行内说明了实测依据。「模式 / 提示词文件 / 正文」管的是客户端自己的 system 怎么处理,与那个开关是两件事。": "「어느 프롬프트를 쓸지」는 원래 업스트림별로 결정하는 일이므로, 제공자마다 자체 모드와 시스템 프롬프트 파일, 본문을 가질 수 있습니다. 여기에 나열되지 않은 제공자는 모두 위의 기본 설정을 따르며, 「기본값 따르기」를 선택하면 해당 제공자의 개별 설정이 취소되고 기본값으로 돌아갑니다. 「게이트웨이 내장」 항목이 있는 제공자(현재 ZCode 두 곳)는 기본적으로 여기에 나열됩니다. 그 단락은 게이트웨이가 직접 설치한 텍스트로, 클라이언트에서도 시스템 프롬프트 파일에서도 온 것이 아닙니다. 기본적으로 켜져 있으며 끌 수 있고 본문도 수정할 수 있습니다(수정한 단락은 입력한 텍스트가 우선). 끈 뒤에도 업스트림 검증을 통과할 수 있는지는 업스트림의 현재 기준에 달려 있으며, 실측 근거는 행 안에 설명되어 있습니다. 「모드 / 시스템 프롬프트 파일 / 본문」은 클라이언트 자체의 system을 어떻게 처리할지를 다루며, 그 스위치와는 별개의 일입니다.", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "\"설정\"은 고정 항목이라 그 그룹을 통째로 숨길 수 없습니다. 다른 메뉴는 개별로 숨길 수 있습니다", "「请求日志」页的逐条请求记录,默认 99999 天(近似全量保留),可填 1–99999 天。": "「요청 로그」페이지의 요청별 기록. 기본 99999일(거의 전체 보관)이며 1~99999일까지 입력할 수 있습니다.", "「请求日志」页的逐条请求记录,默认 99999 天,可填 1–99999 天;同时受数量上限限制。": "「요청 로그」페이지의 요청별 기록입니다. 기본값은 99999일이며 1–99999일을 입력할 수 있습니다. 건수 상한도 적용됩니다.", "一个 .a2ab 文件即可跨机器恢复,账号、网关 Key、GitHub 令牌与云同步凭据无需另行复制密钥。插件程序与库外文件不在整库备份范围。": ".a2ab 파일 하나로 다른 기기에 복원할 수 있으며 계정, 게이트웨이 Key, GitHub 토큰 및 클라우드 동기화 자격 증명의 키를 별도로 복사할 필요가 없습니다. 플러그인 프로그램과 데이터베이스 외부 파일은 포함되지 않습니다.", "一段内置装配": "내장 기본 구성", "三档数据各自独立计时,超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件;请求日志是网关每次转发到上游的逐条记录;按天聚合供报表页的热力图与按天趋势使用。请求日志与按天聚合默认 99999 天(约 274 年,效果上等于全量保留),事件日志默认 30 天。把某一档改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。三档的可填范围均为 1–99999 天。": "세 가지 데이터는 각각 독립적으로 계산되며, 보관 일수를 초과한 부분은 삭제됩니다: 이벤트 로그는 로그인, 계정 전환, 429 전환 같은 시스템 이벤트이고, 요청 로그는 게이트웨이가 업스트림으로 전달할 때마다 남기는 기록이며, 일별 집계는 리포트 페이지의 히트맵과 일별 추세에 사용됩니다. 요청 로그와 일별 집계의 기본값은 99999일(약 274년, 사실상 전량 보관)이고 이벤트 로그의 기본값은 30일입니다. 어느 하나를 줄여(예: 30일 → 7일) 저장하면 초과된 과거 데이터가 즉시 삭제되며 되돌릴 수 없습니다. 늘리거나 그대로 두면 아무것도 삭제되지 않습니다. 세 항목 모두 입력 범위는 1~99999일입니다.", "三段各自成块,所以分开编辑": "세 단락이 각각 별도 블록이라 따로 편집합니다", "上传": "업로드", "上传 Logo": "로고 업로드", "上传中…": "업로드 중…", "上传内容含加密后的账号凭证与网关配置": "업로드 내용에는 암호화된 계정 자격 증명과 게이트웨이 설정이 포함됩니다", "上传到云端": "클라우드로 업로드", "上传失败:{message}": "업로드 실패: {message}", "上次同步:{time}({action})": "마지막 동기화: {time} ({action})", "上次成功刷新的结果(存在本机数据库里)": "마지막으로 성공한 새로고침 결과(로컬 데이터베이스에 저장)", "上游 CLI 版本": "업스트림 CLI 버전", "上游客户端版本": "업스트림 클라이언트 버전", "上游按": "업스트림이 ", "上游按「结构」校验身份:三段必须各自成块,所以这里分开编辑三段(不能合成一段)。动态段里的运行值写成占位符,发请求时才替换:{cwd} 工作目录、{platform} 平台、{shell} shell、{os_version} 系统版本、{git} 是否 git 仓库、{provider} 提供方标识、{model} 模型名。清空某一段 = 那一段恢复官方原文。第三段发出时前面会自带一个空行(官方形状)。": "업스트림은 「구조」로 신원을 검증합니다. 세 단락이 각각 별도 블록이어야 하므로 여기서는 세 단락을 따로 편집합니다(하나로 합칠 수 없습니다). 동적 단락의 런타임 값은 플레이스홀더로 작성하며 요청을 보낼 때 치환됩니다: {cwd} 작업 디렉터리, {platform} 플랫폼, {shell} shell, {os_version} OS 버전, {git} git 저장소 여부, {provider} 제공자 식별자, {model} 모델 이름. 단락을 비우면 그 단락은 공식 원문으로 복원됩니다. 세 번째 단락은 전송 시 앞에 빈 줄이 하나 자동으로 붙습니다(공식 형태).", "上游未配置": "업스트림 미설정", "上游模型繁忙时会先排队(回一句「建议 N 秒后再来」):网关等一会儿再发同一请求,最多等几次。默认 2 次,可填 0–10;填 0 表示不等待,排队直接返回 503 并说明「不是登录态或额度问题」。": "업스트림 모델이 바쁘면 먼저 큐잉합니다(「N초 후에 다시 오세요」라고 응답하며). 게이트웨이는 잠시 기다렸다가 같은 요청을 다시 보내며, 최대 몇 번까지 기다립니다. 기본값 2회, 0–10 입력 가능하며, 0은 기다리지 않고 큐잉을 곧바로 503으로 반환하면서 「로그인 상태나 할당량 문제가 아닙니다」라고 설명합니다.", "上游用「逐字精确匹配」的方式审核请求体(不是语义审核):客户端注入的固定模板句、计费头字段名、以及某些裸错误码出现在报文里就会整单拦截,返回 400。开启本项后,网关在每次转发前改写这些指纹 —— 表头键值整段删除,承载语义的模板句只换一个词(如 official CLI for Claude → official CLI tool for Claude),对话内容与语义都不受影响。规则集是内置的,不需要也无法维护词表。关掉本项后客户端模板会原样发往上游,可能重新出现模板句被误拦的报错。": "업스트림은 요청 본문을 「글자 단위 정확 일치」 방식으로 검사합니다(의미 검사가 아닙니다). 클라이언트가 주입한 고정 템플릿 문구, 과금 헤더 필드 이름, 일부 날것의 오류 코드가 메시지에 나타나면 요청 전체가 차단되어 400을 반환합니다. 이 항목을 켜면 게이트웨이가 전달 전에 이런 핑거프린트를 매번 다시 씁니다. 헤더 키-값은 통째로 삭제하고, 의미를 담은 템플릿 문구는 단어 하나만 바꿉니다(예: official CLI for Claude → official CLI tool for Claude). 대화 내용과 의미는 영향을 받지 않습니다. 규칙 집합은 내장되어 있어 단어 목록을 유지할 필요도, 할 수도 없습니다. 이 항목을 끄면 클라이언트 템플릿이 그대로 업스트림으로 전송되어 템플릿 문구가 잘못 차단되는 오류가 다시 나타날 수 있습니다.", "上游请求四个阶段各自的等待上限(秒,1~3600):①「连接中超时」= 建立 TCP/TLS 连接或代理隧道的最大等待,默认 30 秒;②「等待响应超时」= 请求发出后等上游响应头的最大时间,默认 300 秒 —— 网关请求上游恒带 stream,响应头在 SSE 建立时就到达,与模型思考多久无关;③「流式响应空闲超时」= 流式响应相邻两块数据之间允许的最大空闲,收到新数据即重新计时,默认 300 秒 —— 上游长时间不吐数据即判定连接僵死并断开;④「非流式响应超时」= 读完整份非流式响应体的总预算(一次性计时、不重置),默认 300 秒。四项都是「等待上限」,只要数据还在来,正常的流式回答就一直往下传。保存后对下一个请求立即生效,不用重启。": "업스트림 요청의 네 단계별 대기 상한(초, 1~3600)입니다. ①「연결 타임아웃」= TCP/TLS 연결 또는 프록시 터널을 설정할 때 기다리는 최대 시간, 기본 30초. ②「응답 대기 타임아웃」= 요청을 보낸 뒤 업스트림 응답 헤더를 기다리는 최대 시간, 기본 300초. 게이트웨이는 업스트림에 항상 stream으로 요청하므로 응답 헤더는 SSE가 연결될 때 도착하며 모델이 얼마나 오래 생각하는지와는 무관합니다. ③「스트리밍 응답 유휴 타임아웃」= 스트리밍 응답의 인접한 두 데이터 블록 사이에 허용되는 최대 유휴 시간으로, 새 데이터를 받으면 다시 시간을 재며, 기본 300초입니다. 업스트림이 오랫동안 데이터를 내보내지 않으면 연결이 멈춘 것으로 판단해 끊습니다. ④「비스트리밍 응답 타임아웃」= 비스트리밍 응답 본문 전체를 읽는 총 예산(한 번만 시간을 재고 재설정하지 않음), 기본 300초. 네 항목 모두 「대기 상한」이며, 데이터가 계속 오는 한 정상적인 스트리밍 응답은 계속 전달됩니다. 저장 후 다음 요청부터 즉시 적용되며 재시작이 필요 없습니다.", "上游调试报文": "업스트림 디버그 페이로드", "上移": "위로", "上移规则": "규칙 위로 이동", "下次自动重试:{time}": "다음 자동 재시도: {time}", "下游正文": "다운스트림 본문", "下移": "아래로", "下移规则": "규칙 아래로 이동", "下载失败:{message}": "다운로드 실패: {message}", "不一致": "불일치", "不做会话识别,每条请求都重新按策略选路。": "세션을 식별하지 않고 요청마다 전략에 따라 다시 선택합니다.", "不做图片兼容": "이미지 호환 처리 안 함", "不可用": "사용 불가", "与网关同源的面板;完整管理功能在桌面端": "게이트웨이와 같은 출처의 패널입니다. 전체 관리는 데스크톱에서 하세요", "两张开关分别管桌面端(应用内窗口,也包含开启局域网访问后从其他设备访问的那份面板)与网页端(Docker / 服务端自托管的浏览器面板)。默认都开启;桌面端只在本机使用、嫌验证耗时可以关掉,网页端暴露在网络上,建议保持开启。": "두 스위치는 데스크톱 쪽(앱 내 창, LAN 액세스가 켜졌을 때 다른 기기에서 여는 패널 포함)과 웹 쪽(Docker / 서버가 호스팅하는 브라우저 패널)을 따로 제어합니다. 기본값은 둘 다 켜짐입니다. 로컬에서만 쓰고 인증 대기 시간이 부담되면 데스크톱 쪽을 꺼도 되지만, 네트워크에 노출되는 웹 쪽은 켜 두는 것을 권장합니다.", "两次输入的备份密码不一致": "두 번 입력한 백업 비밀번호가 일치하지 않습니다", "两次输入的新密码不一致": "새 비밀번호가 일치하지 않습니다", "两次重试之间的等待时间,两项共用,可填 0–300 秒。": "두 재시도 사이의 대기 시간이며 두 항목이 공유합니다. 0–300초를 입력할 수 있습니다.", "两种方式不会互相自动切换。": "두 방식 사이에서 자동으로 전환하지 않습니다.", "两组设置分别用于桌面端托管的网页管理面板与网页端(Docker / 服务端)的浏览器面板。是否可被其他设备访问取决于网络访问与防火墙设置,不限于局域网。两端默认都开启人机验证,建议保持开启。": "두 설정 그룹은 데스크톱 앱이 제공하는 웹 관리 패널과 Docker / 서버가 제공하는 브라우저 패널에 각각 적용됩니다. 다른 기기의 접근 가능 여부는 네트워크 접근과 방화벽 설정에 따라 달라지며 LAN으로 제한되지 않습니다. 두 환경 모두 사람 확인이 기본으로 켜져 있으며, 계속 켜 두는 것을 권장합니다.", "为了安全,开启前需要先注册一个": "보안을 위해, 켜기 전에 다음을 먼저 등록해야 합니다: ", "主进程未返回启动设置,请更新桌面端后重试": "메인 프로세스가 시작 설정을 반환하지 않았습니다. 데스크톱 앱을 업데이트한 후 다시 시도하세요", "主进程桥不可用": "메인 프로세스 브리지를 사용할 수 없습니다", "主题": "테마", "事件日志": "이벤트 로그", "事件日志保留天数": "이벤트 로그 보관 일수", "云同步": "클라우드 동기화", "产品名": "제품 이름", "产品名不能包含斜杠或版本号,请改用前缀匹配": "제품 이름에 슬래시나 버전을 포함할 수 없습니다. 접두사 일치를 사용하세요.", "人机验证": "사람 확인", "人机验证失败": "사람 확인 실패", "人机验证已完成": "사람 확인 완료", "人机验证还在计算,请稍候": "사람 확인을 계산 중입니다. 잠시 기다려 주세요", "仅在同一会话、同一问题和相同权限范围内复用;追问新细节会重新识读。缓存只存在本机内存。": "동일한 대화, 질문 및 권한 범위에서만 결과를 재사용합니다. 새로운 세부 사항을 질문하면 다시 읽습니다. 캐시는 로컬 메모리에만 보관됩니다.", "仅在账号、配置、签到或余额等实质内容变化时上传;导出时间或查询时间单独变化不会触发上传。": "계정, 설정, 체크인 결과, 잔액 등 실제 내용이 변경된 경우에만 업로드합니다. 내보내기 시각이나 조회 시각만 변경되면 업로드하지 않습니다.", "仅处理本次转发副本,不修改客户端选择,也不删除当前或历史图片。": "이번 전달 사본만 처리합니다. 클라이언트의 선택을 변경하거나 현재 또는 이전 이미지를 삭제하지 않습니다.", "仅影响面板登录与注册,不影响 API Key 调用。保存后生效,已登录会话不会退出。": "패널 로그인과 가입에만 적용되며 API 키 호출에는 영향을 주지 않습니다. 저장하면 적용되고 기존 로그인 세션은 유지됩니다.", "仅本机": "이 기기만", "仅用现有数据、不联网刷新": "보유 데이터만 사용, 온라인 갱신 안 함", "从云端恢复": "클라우드에서 복원", "从桌面图标启动,全屏、无地址栏。想卸载:长按图标删除,或清除浏览器站点数据。": "홈 화면 아이콘으로 실행합니다. 전체 화면, 주소 표시줄 없음. 삭제하려면 아이콘을 길게 눌러 제거하거나 브라우저 사이트 데이터를 지우세요.", "优先使用当前路由内的视觉模型": "현재 라우트의 비전 모델 우선 사용", "优先在当前路由内找可用的视觉模型,找不到就用 {model} 直接回答,不再回到原模型。": "현재 라우트 안에서 쓸 수 있는 비전 모델을 우선 사용하고, 없으면 {model}이(가) 원래 모델 대신 바로 답합니다.", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "그룹·순서·표시 설정을 기본값으로 되돌립니다. 직접 만든 그룹은 삭제됩니다(메뉴는 유지됩니다).", "会话图片压缩设置已刷新": "이미지 압축 설정을 새로 고쳤습니다", "位置": "위치", "位置与端口": "위치 및 포트", "使用 Rust 正则语法,保存时由后端校验;不支持环视和反向引用。": "Rust 정규식 문법을 사용하며 저장 시 백엔드에서 검증합니다. 전후방 탐색과 역참조는 지원하지 않습니다.", "使用中文单位(亿 / 万)": "중국어 단위 사용 (억 / 만)", "使用本地量级词(万 / 亿式)": "로컬 규모 단어 사용(만 / 억 단위)", "使用默认值": "기본값 사용 중", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "사이드바 레이아웃 모듈이 로드되지 않았습니다(ui/sidebar-layout.js는 app.js보다 먼저 포함되어야 합니다).", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "사이드바에 표시되는 메뉴가 없습니다. 설정 → 표시 → 사이드바 메뉴에서 필요한 항목을 켜세요.", "侧边栏菜单": "사이드바 메뉴", "保存上游原始报文(请求头、请求体、响应头、响应体)": "업스트림 원본 메시지 저장(요청 헤더, 요청 본문, 응답 헤더, 응답 본문)", "保存单独配置": "모델별 설정 저장", "保存后以这里的文本为准": "저장하면 여기의 텍스트가 우선합니다", "保存后对下一轮补货立即生效,不用重启。守卫跑在应用界面里:轻量模式关窗销毁界面期间无法铸造,走套餐池(Start Plan)通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。": "저장하면 다음 보충 라운드부터 즉시 적용되며 재시작은 필요 없습니다. 가드는 앱 UI 안에서 동작합니다: 경량 모드로 창을 닫아 UI가 파괴된 동안에는 토큰을 생성할 수 없으며, 플랜 풀 (Start Plan) 채널의 요청은 사유와 함께 503으로 요청 로그에 기록됩니다. UI를 다시 열면 자동으로 복구됩니다.", "保存后应用将重启以生效。": "저장 후 적용을 위해 앱이 다시 시작됩니다.", "保存后状态读取立即生效。后台不会自动生成令牌;需要人机验证时,在账号的「套餐明细」中主动开始验证。模型请求免验证时无需保持界面打开。": "저장 후 상태 조회 설정이 즉시 적용됩니다. 토큰은 자동으로 생성하지 않습니다. 인증이 필요하면 계정의 「플랜 상세」에서 직접 시작하세요. 모델 요청에 인증이 필요 없으면 화면을 열어 둘 필요가 없습니다.", "保存后立即生效,不用重启:策略与粘性作用于**下一次**转发的选路,进行中的请求不受影响。": "저장 즉시 적용, 재시작 불필요: 전략과 고정은 **다음** 전송의 선택부터 적용되며 진행 중인 요청에는 영향이 없습니다.", "保存后立即生效,不用重启;次数用尽仍失败时,错误原样返回给客户端。": "저장 후 재시작 없이 즉시 적용됩니다. 횟수를 다 써도 실패하면 오류가 그대로 클라이언트에 반환됩니다.", "保存后立即生效,不用重启;超时按上游失败处理(计入请求日志的「错误」列,并按「请求重试」的设置决定是否重试)。": "저장 후 재시작 없이 즉시 적용됩니다. 타임아웃은 업스트림 실패로 처리됩니다(요청 로그의 「오류」 열에 집계되며, 「요청 재시도」 설정에 따라 재시도 여부가 결정됩니다).", "保存后立即生效:保留天数和数量上限同时生效,调小任一项会立即清理超出的历史数据,且不可恢复。": "저장 즉시 적용됩니다. 보관 일수와 건수 상한이 함께 적용되며 어느 하나를 줄이면 초과한 과거 데이터가 즉시 삭제됩니다. 복구할 수 없습니다.", "保存后立即生效:改小保留天数会立刻删除超出的历史数据,且不可恢复。": "저장 후 즉시 적용됩니다. 보관 일수를 줄이면 초과된 과거 데이터가 즉시 삭제되며 복구할 수 없습니다.", "保存在当前网关,登录页也会公开显示。不会更改安装包、快捷方式、系统托盘图标或软件版本信息。": "현재 게이트웨이에 저장되며 로그인 페이지에도 공개 표시됩니다. 설치 파일, 바로가기, 시스템 트레이 아이콘 또는 소프트웨어 버전 정보는 변경하지 않습니다.", "保存并重启": "저장 후 재시작", "保存设置": "설정 저장", "保持当前路由范围,不跳到其他路由组。": "현재 라우트 범위를 유지하며 다른 라우트 그룹으로 넘어가지 않습니다.", "保活换行丢弃": "keepalive 개행 제거", "保留原图和对话,由视觉模型直接回答本次请求。": "원본 이미지와 대화를 유지하고 비전 모델이 이번 요청에 직접 답변합니다.", "保留原图,选择视觉模型": "원본 이미지를 유지하고 비전 모델 선택", "保留图片中的文字、代码、数字、布局与状态。识读失败就停止,不删图后继续回答。": "이미지의 텍스트, 코드, 숫자, 배치 및 상태를 보존합니다. 읽기에 실패하면 중지하며 이미지를 삭제한 채 답변을 계속하지 않습니다.", "保留天数已刷新": "보관 일수를 새로 고쳤습니다", "保留旧版配置兼容,当前不会自动连铸。每次点击「开始验证」只取得一枚令牌,失败或取消后停止。": "이전 설정과의 호환성을 위해 유지합니다. 토큰을 자동으로 연속 생성하지 않습니다. 「인증 시작」을 누를 때마다 토큰 하나만 가져오며 실패하거나 취소하면 중지합니다.", "保留草稿并读取最新设置": "초안을 유지하고 최신 설정 불러오기", "修改密码": "비밀번호 변경", "修改密码需要输入当前密码;修改成功后,其他设备 / 浏览器上的登录会立即失效,当前这条会话保留。": "비밀번호 변경에는 현재 비밀번호가 필요합니다. 성공하면 다른 기기·브라우저의 로그인은 즉시 해제되고 현재 세션만 유지됩니다.", "值": "값", "值与默认值相同的行不占覆盖(存的是「改过的键」,不是全量配置);值留空保存表示这个头不发送,删除改过的行表示回落默认值。改完立即生效,不用重启。": "기본값과 같은 값의 행은 덮어쓰기에 포함되지 않습니다(저장되는 것은 「수정된 키」이며 전체 설정이 아닙니다). 값을 비워 저장하면 해당 헤더를 전송하지 않고, 수정한 행을 삭제하면 기본값으로 돌아갑니다. 수정 후 재시작 없이 즉시 적용됩니다.", "值(留空 = 不发送)": "값(비우면 = 전송 안 함)", "停止并说明原因": "중지하고 이유 표시", "像素": "px", "允许其他设备访问前,需要设置面板管理员账号与密码。注册完成后会继续开启流程并重启应用。": "다른 기기의 접근을 허용하기 전에 패널 관리자 계정과 비밀번호를 설정하세요. 등록이 완료되면 네트워크 접근을 켜고 앱을 다시 시작합니다.", "允许其他设备访问网关": "다른 기기의 게이트웨이 접근 허용", "允许局域网内的设备访问网关": "LAN 내 기기의 게이트웨이 접근 허용", "允许无 Key 裸跑": "키 없이 실행 허용", "允许浏览器里的页面跨来源调用网关(/v1/*)": "브라우저 페이지가 교차 출처로 게이트웨이를 호출하도록 허용(/v1/*)", "允许的域名": "허용된 호스트 이름", "先发送原图,明确拒图后补救": "원본 이미지를 먼저 보내고 명시적으로 거부된 경우에만 호환 처리", "先把图片交给视觉模型读一遍,再让原模型结合读到的内容回答。": "먼저 비전 모델이 이미지를 읽고, 원래 모델이 읽은 내용을 바탕으로 답합니다.", "全局配置": "전역 설정", "全部已配置": "모두 설정됨", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 中,加密密钥单独保存在库外。跨机器备份请使用「整库备份 / 恢复」,不要只复制数据库。更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "계정, 로그, 요청 기록, 디버그 데이터 및 설정은 agent2api.db에 저장되며 암호화 키는 별도로 보관됩니다. 기기 간 이동에는 데이터베이스만 복사하지 말고 전체 백업 / 복원을 사용하세요. 저장 위치를 변경하려면 AGENT2API_PROXY_HOME을 설정한 후 앱을 다시 시작하세요.", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 这一个 SQLite 数据库里。备份时只需拷贝这个文件;更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "모든 데이터(계정, 이벤트 로그, 요청 기록, 디버그 메시지, 설정)는 구성 디렉터리의 agent2api.db라는 하나의 SQLite 데이터베이스에 통합 저장됩니다. 백업할 때는 이 파일만 복사하면 됩니다. 저장 위치를 바꾸려면 환경 변수 AGENT2API_PROXY_HOME을 설정한 후 프로그램을 다시 시작하세요.", "全部角色": "모든 역할", "全部角色沿用原有行为,包含思考内容和工具参数;指定角色时只改消息正文,未选角色及思考内容、工具参数保持原样。": "모든 역할은 추론 내용과 도구 인수를 포함하는 기존 동작을 유지합니다. 역할을 지정하면 메시지 본문만 수정하며 선택하지 않은 역할, 추론 내용과 도구 인수는 그대로 유지합니다.", "共享视觉模型已变更,请重新确认并保存,避免把图片交给未经确认的模型。": "공유 비전 모델이 변경되었습니다. 확인하지 않은 모델에 이미지를 보내지 않도록 다시 확인하고 저장하세요.", "共用设置:{providers}": "공유 설정: {providers}", "关闭后不再提供网页管理面板,本机桌面程序仍可正常管理;已开启的 API 转发不受影响。": "끄면 웹 관리 패널 제공을 중단합니다. 이 기기의 데스크톱 앱에서는 계속 관리할 수 있으며, API 전달에는 영향이 없습니다.", "关闭后手动上传 / 下载也会被拒绝。": "끄면 수동 업로드/다운로드도 거부됩니다.", "关闭后网关只监听 127.0.0.1,其他设备将无法直接连接,网页管理面板也会一并关闭。已配置的网关 Key 与账号不受影响。": "끄면 게이트웨이가 127.0.0.1에서만 수신하므로 다른 기기에서 직접 연결할 수 없으며, 웹 관리 패널도 함께 꺼집니다. 기존 게이트웨이 키와 계정에는 영향이 없습니다.", "关闭后网关回到只监听 127.0.0.1,局域网内的设备将无法继续访问;已配置的网关 Key 与账号都不受影响。": "끄면 게이트웨이가 다시 127.0.0.1만 수신하며 LAN 내 기기는 더 이상 접근할 수 없습니다. 이미 설정한 게이트웨이 키와 계정은 영향을 받지 않습니다.", "关闭后,管理界面不再从局域网提供,只有本机的桌面程序可以管理;已开启的 API 转发不受影响。": "끄면 관리 화면이 더 이상 LAN에 제공되지 않고 로컬 데스크톱 앱에서만 관리할 수 있습니다. 이미 켜 둔 API 포워딩은 영향을 받지 않습니다.", "关闭局域网访问": "LAN 접근 끄기", "关闭并重启": "닫고 재시작", "关闭思考": "추론 비활성화", "关闭窗口即退出程序,后台转发随之中断": "창을 닫으면 프로그램이 종료되고 백그라운드 포워딩도 중단됩니다", "关闭窗口时最小化到托盘": "창을 닫을 때 트레이로 최소화", "关闭窗口时程序不退出,转发继续在后台运行;退出请用托盘菜单": "창을 닫아도 프로그램이 종료되지 않고 포워딩이 백그라운드에서 계속 실행됩니다. 종료하려면 트레이 메뉴를 사용하세요", "关闭网络访问": "네트워크 접근 끄기", "兼容处理最长等待": "호환 처리 최대 대기", "兼容处理最长等待(秒)": "호환 처리 최대 대기 시간(초)", "内容拦截降级": "콘텐츠 차단 폴백", "内置识别、自定义规则与来源声明": "내장 식별, 사용자 규칙 및 출처 선언", "内置软件标识规则": "내장 소프트웨어 식별 규칙", "内置默认": "내장 기본값", "内置默认提示词": "내장 기본 시스템 프롬프트", "再输入一次新密码": "새 비밀번호를 한 번 더 입력하세요", "凭据类请求头已脱敏。": "자격 증명 계열 요청 헤더는 마스킹되었습니다.", "凭证只保存在这台手机上,按服务器分别存放": "자격 증명은 이 기기에만 저장되며 서버별로 따로 보관됩니다", "出问题时把这一页截图,或点「复制全部信息」把文本贴进反馈,一般就能定位到大致原因。": "문제가 생기면 이 페이지를 캡처하거나 \"모든 정보 복사\"로 텍스트를 복사해 제보에 붙여 주세요. 대개 그것만으로 원인을 좁힐 수 있습니다.", "分享图标在 Safari 底部工具栏中间": "공유 아이콘은 Safari 하단 도구 막대 가운데에 있습니다", "分组名": "그룹 이름", "分组名,例如「常用」": "그룹 이름, 예: \"즐겨찾기\"", "切换视觉模型": "비전 모델로 전환", "切换视觉模型 · 视觉模型回答": "모델 전환 · 비전 모델이 답변", "切换视觉模型配置": "비전 모델 전환 설정", "切换账号重试次数": "계정 전환 재시도 횟수", "刚刚从 models.dev 拉到的最新数据": "models.dev에서 방금 가져온 최신 데이터", "删除 {code}": "{code} 삭제", "删除分组": "그룹 삭제", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "그룹 \"{name}\"을(를) 삭제할까요? 메뉴 {n}개는 \"{target}\"(으)로 이동하며 사라지지 않습니다.", "删除匹配内容": "일치한 내용 삭제", "删除后不再接受这个分类的来源声明,历史记录保留原来的名称和用量。": "삭제 후 이 분류의 출처 선언은 허용되지 않습니다. 과거 기록은 원래 이름과 사용량을 유지합니다.", "删除后,新请求不再使用这条规则;历史记录保持不变。": "삭제 후 새 요청에는 이 규칙이 사용되지 않습니다. 과거 기록은 유지됩니다.", "删除客户端分类": "클라이언트 분류 삭제", "删除状态码 {code}": "상태 코드 {code} 삭제", "删除空分组「{name}」?": "빈 그룹 \"{name}\"을(를) 삭제할까요?", "删除识别规则": "식별 규칙 삭제", "删除这个分组(组内菜单移到第一组)": "이 그룹 삭제(메뉴는 첫 그룹으로 이동)", "刷新": "새로고침", "刷新失败:{message}": "새로고침 실패: {message}", "前台运行": "포그라운드 실행", "前缀": "접두사", "剥离上游审核黑名单指纹(改写请求体里的模板句与表头)": "업스트림 검열 블랙리스트 핑거프린트 제거(요청 본문의 템플릿 문구와 헤더 재작성)", "功能建议": "기능 제안", "加入备选": "대체 모델로 추가", "加密备份必填,旧 SQL 可留空": "암호화 백업은 필수, 기존 SQL은 비워도 됩니다", "包含": "포함", "包含日志与调试报文": "로그와 디버그 페이로드 포함", "包含:{items}": "포함: {items}", "匹配内容": "일치 패턴", "匹配内容不能为空,且最多 {max} 个字符": "일치 패턴은 필수이며 최대 {max}자까지 입력할 수 있습니다", "匹配内容不能为空,最长 256 个字符": "일치 조건을 256자 이내로 입력하세요", "匹配原文含零宽空格,词表预览用 \\u{200b} 标出;编辑时保留该字符。": "패턴에 너비가 없는 공백이 포함되어 있습니다. 미리보기에서는 \\u{200b}로 표시하며 편집 시 해당 문자를 유지하세요.", "匹配方式": "일치 방식", "区域(Region)": "리전(Region)", "华为云 OBS": "화웨이 클라우드 OBS", "单独指定视觉模型": "비전 모델 별도 지정", "单轮铸造上限": "회당 발행 한도", "占用大小": "사용 용량", "历史未记录识别依据": "과거 식별 근거가 기록되지 않음", "原来的「全局方式 + 模型单独配置」已按相同意思自动填成下面的模型名单,可以照用也可以重新调整;改动一处之后就会按新形式存下来。": "이전의 \"전역 방식 + 모델별 개별 설정\"을 같은 의미로 아래 모델 목록에 채워 넣었습니다. 그대로 쓰거나 다시 조정해도 됩니다. 한 곳이라도 바꾸면 새 형식으로 저장됩니다.", "原模型不能直接看图": "원래 모델이 이미지를 직접 읽을 수 없음", "原模型根据识读内容回答": "원래 모델이 이미지 설명을 바탕으로 답변", "去反馈": "신고하기", "去申请": "신청하기", "反馈与需求": "피드백 및 요청", "发现缺货时一轮最多铸几个(连铸之间固定隔 500 毫秒)。默认 1 个:SDK 同一实例连铸容易互相干扰。调大补货更快,但单轮连铸越多越容易触发上游风控。可填 1–5。": "부족 발견 시 한 번에 최대 몇 개까지 발행할지 정합니다(연속 발행 사이는 고정 500 밀리초). 기본값은 1: 같은 SDK 인스턴스에서 연속 발행하면 서로 간섭하기 쉽기 때문입니다. 크게 하면 보충이 빨라지지만 한 번에 많이 발행할수록 업스트림 리스크 관리에 걸리기 쉽습니다. 1–5 입력 가능.", "取消勾选后只备份业务数据(账号、配置与余额记录),文件显著变小;事件日志、请求统计与调试报文不会进备份文件。": "체크를 해제하면 업무 데이터(계정, 설정, 잔액 기록)만 백업되어 파일이 훨씬 작아집니다. 이벤트 로그, 요청 통계, 디버그 페이로드는 백업에 포함되지 않습니다.", "变更网页管理面板": "웹 관리 패널 변경", "只列单独配置过的家,其余沿用上面的全局配置": "개별 설정한 제공자만 표시되며, 나머지는 위의 전역 설정을 따릅니다", "只对「排队制」的上游生效:模型繁忙时上游不报错,只回一句「建议 N 秒后再来」,网关按建议时长等一会儿再发同一请求,等满次数仍排不上才把「排队中」作为错误返回(HTTP 503,文案会说明这不是登录态或额度问题)。等待发生在首个字节之前,吃的是「等待响应超时」那份预算 —— 两项设置一起决定一次请求最多卡多久;排队不会标记账号限额、也不会换账号(换谁都一样在排队)。保存后对下一个请求立即生效,不用重启。": "「큐잉 방식」 업스트림에만 적용됩니다. 모델이 바쁠 때 업스트림은 오류를 내지 않고 「N초 후에 다시 오세요」라고만 응답합니다. 게이트웨이는 안내된 시간만큼 기다렸다가 같은 요청을 다시 보내며, 횟수를 다 채울 때까지 큐에 들어가지 못하면 「큐잉 중」을 오류로 반환합니다(HTTP 503, 이는 로그인 상태나 할당량 문제가 아니라는 설명이 함께 표시됩니다). 대기는 첫 바이트 이전에 발생하며 「응답 대기 타임아웃」 예산을 소모합니다. 두 설정이 함께 요청 하나가 최대 얼마나 지연될 수 있는지를 결정합니다. 큐잉은 계정에 할당량 초과를 표시하지 않고 계정도 바꾸지 않습니다(누구든 마찬가지로 큐에 대기합니다). 저장 후 다음 요청부터 즉시 적용되며 재시작이 필요 없습니다.", "只影响读图那一步的思考深度;两块设置统一用这个选择。": "이미지를 읽는 단계의 사고 깊이에만 영향을 줍니다. 두 블록이 이 선택을 함께 사용합니다.", "只有已安装、启用并声明了设置项的提供商会出现在这里。可前往插件页检查安装与启用状态。": "설치 및 활성화된 플러그인이 설정 항목을 제공하는 경우에만 여기에 표시됩니다. 플러그인 페이지에서 설치 및 활성화 상태를 확인하세요.", "只沿用模型与思考等级,不借用视觉服务的内部 Key;仍受当前请求权限限制。": "모델과 추론 수준만 재사용하고 비전 서비스의 내부 Key는 사용하지 않습니다. 현재 요청의 권한 제한이 그대로 적용됩니다.", "只清掉这个浏览器存的 Key,不影响网关": "이 브라우저에 저장된 Key만 삭제합니다. 게이트웨이는 영향 없음", "只覆盖指定提供商的指定模型,其余跟随全局。": "지정한 제공업체의 지정 모델에만 적용하며 나머지는 전역 설정을 따릅니다.", "可跨提供商多选;只处理这些模型看不了的图片。": "제공자를 넘어 여러 개 선택할 수 있습니다. 이 모델들이 읽지 못하는 이미지만 처리합니다.", "可跨提供商多选;这些模型的请求会整体改交视觉模型。": "제공자를 넘어 여러 개 선택할 수 있습니다. 이 모델들의 요청은 통째로 비전 모델에 넘깁니다.", "可选。部分服务(如中国科技云数据胶囊)会按 User-Agent 校验凭据绑定的客户端类型,此时填写包含该类型名的字符串(例如 rclone/v1.67.0)。留空则维持默认。": "선택 사항. 일부 서비스(예: 중국과학기술망 데이터 캡슐)는 User-Agent로 자격 증명에 연결된 클라이언트 유형을 검증합니다. 이 경우 유형 이름이 포함된 문자열(예: rclone/v1.67.0)을 입력하세요. 비워 두면 기본값이 유지됩니다.", "合计只累加当前筛选后可见的账号,筛选、搜索一改数字就跟着变。": "합계는 현재 필터에서 보이는 계정만 더합니다. 필터나 검색을 바꾸면 숫자도 함께 바뀝니다.", "合计按整组统计(默认):不受筛选、搜索影响,被筛掉与已禁用的账号也计入。": "합계는 전체 그룹 기준입니다(기본값). 필터와 검색의 영향을 받지 않으며, 필터에서 제외된 계정과 비활성 계정도 포함됩니다.", "同一会话、同一问题、相同权限范围内复用;追问新细节会重新识读。": "같은 세션, 같은 질문, 같은 권한 범위 안에서 재사용합니다. 새로운 세부를 물으면 다시 읽습니다.", "同一会话在 5 分钟内尽量跟住同一个账号;停了 5 分钟再发就算新会话。多数场景用它 —— 多轮对话少换号,也不至于把账号焊死。": "같은 세션은 5 분 안에 가능한 한 같은 계정을 유지하고, 5 분 이상 비면 새 세션으로 간주합니다. 대부분의 상황에 권장 — 여러 턴의 대화에서 계정이 자주 바뀌지 않으면서 특정 계정에 고정되지도 않습니다.", "同一会话在 6 小时内跟住同一个账号;适合一坐几个小时的长会话,上游的上下文缓存能吃到更多。": "같은 세션은 최대 6 시간 동안 같은 계정을 유지합니다. 몇 시간씩 이어지는 긴 세션에 적합하며, 업스트림 컨텍스트 캐시를 훨씬 더 활용할 수 있습니다.", "同一提供商的同一模型不能重复配置": "동일한 제공업체의 동일한 모델을 중복 설정할 수 없습니다", "同一账号重试次数": "동일 계정 재시도 횟수", "同时开放网页管理面板": "웹 관리 패널도 함께 공개", "同步密码": "동기화 비밀번호", "名单最多 {max} 个状态码": "목록에는 상태 코드를 최대 {max}개까지 넣을 수 있습니다", "后端没有返回版本信息": "백엔드가 버전 정보를 반환하지 않았습니다", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "고정 항목 \"설정\"이 있어 그룹 전체를 숨길 수 없습니다(다른 메뉴는 개별로 숨길 수 있습니다)", "启动与托盘": "시작 및 트레이", "启动时间": "시작 시각", "启用云同步": "클라우드 동기화 사용", "启用图片兼容": "이미지 호환 처리 활성화", "启用规则": "규칙 활성화", "启用规则:{name}": "규칙 활성화: {name}", "命中依据:{header} · {pattern}": "일치 근거: {header} · {pattern}", "命中这些上游状态码的失败不在同一账号重发,直接换下一个账号继续试(换号占用「切换账号重试次数」,换满仍失败才把错误原样返回给客户端)。输入 100–599 的状态码后回车添加,点 × 或退格删除;默认 402(积分不足)。清空全部表示任何错误都照常重试。": "이 업스트림 상태 코드에 해당하는 실패는 같은 계정에서 다시 보내지 않고 바로 다음 계정으로 넘어가 계속 시도합니다(계정 전환은 「계정 전환 재시도 횟수」를 소모하며, 횟수를 다 써도 실패하면 오류가 그대로 클라이언트에 반환됩니다). 100–599 사이의 상태 코드를 입력하고 Enter를 누르면 추가되고, ×를 누르거나 백스페이스로 삭제합니다. 기본값은 402(크레딧 부족)입니다. 모두 비우면 모든 오류를 평소처럼 재시도합니다.", "品牌 Logo": "브랜드 로고", "品牌设置": "브랜드 설정", "品牌设置已保存": "브랜드 설정을 저장했습니다", "品牌预览": "브랜드 미리 보기", "哪些模型用这种方式": "이 방식을 쓸 모델", "固定": "고정", "图标经 Magpie 引入,未单独记录 Lobe Icons 的图标版本;以上版本仅用于核对许可。": "아이콘은 Magpie를 통해 도입되었습니다. Lobe Icons 아이콘 자체의 리비전은 별도로 기록되지 않았으며, 위 리비전은 라이선스 확인에만 사용되었습니다.", "图片与相关对话将交给配置的视觉模型处理,可能增加等待时间和费用。请确认这些服务可以接收你的图片。": "이미지와 관련 대화가 설정된 비전 모델로 전송되며 대기 시간과 비용이 늘어날 수 있습니다. 해당 서비스에 이미지를 보내도 되는지 확인하세요.", "图片兼容": "이미지 호환 처리", "图片兼容当前是关闭的:下面两块设置照样能改、会被保留,但不会对任何请求生效。": "이미지 호환이 현재 꺼져 있습니다. 아래 두 블록은 그대로 수정할 수 있고 유지되지만 어떤 요청에도 적용되지 않습니다.", "图片兼容设置已保存,仅对新请求生效。": "이미지 호환 설정을 저장했습니다. 새 요청에만 적용됩니다.", "图片兼容设置读取失败": "이미지 호환 설정을 불러오지 못했습니다", "图片压缩": "이미지 압축", "图片最长边超过这个值就等比缩小(只缩不放)。默认 2048,可填 256–8192 —— 多数视觉模型在这个量级已经够用,调小更省流量、但细节会丢。": "이미지의 긴 변이 이 값을 넘으면 비율을 유지해 축소합니다(확대하지 않음). 기본 2048, 256~8192까지 지정할 수 있습니다. 대부분의 비전 모델에는 이 크기면 충분하며, 작게 잡으면 트래픽은 줄지만 세부 묘사가 사라집니다.", "图片能力未知时": "이미지 지원 여부를 알 수 없을 때", "图片过大、格式错误或下载失败不会被当作模型不支持图片。": "이미지가 너무 크거나 형식이 잘못되었거나 내려받기에 실패한 경우는 모델이 이미지를 지원하지 않는 것으로 보지 않습니다.", "在同一个账号上原地重发几次(不含首发;整条请求共用一份,用完后换来的账号只发一次就继续换)。可填 0–10,0 表示失败立即换号。": "같은 계정에서 제자리로 재전송하는 횟수입니다(최초 전송은 제외. 요청 전체가 이 횟수를 공유하며, 소진 후 전환된 계정은 한 번만 보내고 다시 전환합니다). 0–10 입력 가능하며, 0이면 실패 시 즉시 계정을 전환합니다.", "在这里直接编辑提示词正文:保存后以这份文本为准(优先于上面的提示词文件),清空则回到文件 / 内置默认。改一个字不必再去编辑器里开文件。": "여기서 시스템 프롬프트 본문을 직접 편집합니다. 저장하면 이 텍스트가 우선하며(위의 시스템 프롬프트 파일보다 우선), 비우면 파일 / 내장 기본값으로 돌아갑니다. 한 글자만 고치려고 편집기에서 파일을 열 필요가 없습니다.", "在途请求": "처리 중 요청", "地址格式不对。填「IP 或域名:端口」,可带 http:// 或 https://,例如 192.168.1.23:3065": "주소 형식이 올바르지 않습니다. \"IP 또는 도메인:포트\"로 입력하세요 (http:// 또는 https:// 사용 가능). 예: 192.168.1.23:3065", "坚果云": "Jianguoyun(Nutstore)", "坚果云需使用「第三方应用密码」(账户信息 → 安全选项里生成),地址必须是 /dav/ 下的目录。": "Jianguoyun은 '타사 앱 비밀번호'(계정 정보 → 보안에서 생성)를 사용해야 하며, 주소는 /dav/ 아래 디렉터리여야 합니다.", "填「IP 或域名:端口」。协议可写 http:// 或 https://,不写默认 http;http 不写端口默认 3065,https 默认 443。地址里的 /m、/v1 会自动去掉。": "\"IP 또는 도메인:포트\"를 입력하세요. 프로토콜은 http:// 또는 https://를 쓸 수 있으며(생략 시 http), 포트를 생략하면 http는 3065, https는 443이 됩니다. 주소의 /m, /v1은 자동으로 제거됩니다.", "处理方式": "처리 방식", "处理示意": "처리 흐름", "备份中…": "백업 중…", "备份包含账号凭证、网关 Key、GitHub 令牌与云同步凭据的恢复密钥,整个文件受备份密码保护。请分开保管文件与密码;忘记密码无法恢复。": "백업에는 계정 자격 증명, 게이트웨이 Key, GitHub 토큰 및 클라우드 동기화 자격 증명의 복원 키가 포함되며 파일 전체가 백업 비밀번호로 보호됩니다. 파일과 비밀번호를 따로 보관하세요. 비밀번호를 잊으면 복원할 수 없습니다.", "备份密码": "백업 비밀번호", "备份密码不能超过 1024 字节": "백업 비밀번호는 1024바이트를 초과할 수 없습니다", "备份密码至少需要 12 位,建议使用较长且不重复的密码": "12자 이상이 필요하며 길고 재사용하지 않는 비밀번호를 권장합니다", "备份整库": "데이터베이스 백업", "备份文件内含全部账号凭证、网关 API Key 与面板管理员凭据,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "백업 파일에는 모든 계정 자격 증명, 게이트웨이 API 키, 패널 관리자 자격 증명이 들어 있어 그대로 로그인에 사용할 수 있습니다. 안전하게 보관하고 외부로 유출하거나 공개된 곳에 업로드하지 마세요.", "备选模型": "대체 모델", "复制全部信息": "모든 정보 복사", "复制给客户端": "클라이언트용으로 복사", "复用相同图片的识读结果": "동일한 이미지의 읽기 결과 재사용", "外观": "화면", "外观 · 接入 · 关于": "화면 · 연결 · 정보", "多个客户端标识冲突": "여러 클라이언트 식별 정보 충돌", "天": "일", "天数": "일수", "失败 {n} 个": "실패 {n}개", "失败 {n} 个:{detail}": "실패 {n}개: {detail}", "失败后最多再换几个账号试(填 N = 最多换 N 个,首发那个不算)。换到同一家名下另一个账号、或换到另一家,都各算一次;换满仍失败就返回错误。可填 0–10,0 表示失败立即报错。": "실패 후 최대 몇 개의 계정으로 더 시도할지 정합니다(N 입력 = 최대 N개 전환, 최초 계정은 제외). 같은 제공자의 다른 계정으로 바꾸거나 다른 제공자로 바꾸는 것 모두 1회로 계산하며, 횟수를 다 써도 실패하면 오류를 반환합니다. 0–10 입력 가능하며, 0이면 실패 시 즉시 오류를 반환합니다.", "存储桶(Bucket)": "버킷(Bucket)", "存储概况已刷新": "저장소 개요를 새로 고쳤습니다", "安全": "보안", "安装到主屏幕": "홈 화면에 추가", "安装到桌面": "앱으로 설치", "安装包形态": "설치 프로그램 종류", "完全相同": "완전 일치", "官方原文只有一句:声明自己是 ZCode。": "공식 원문은 한 문장뿐입니다: 자신이 ZCode임을 선언합니다.", "实际处理:": "실제 처리: ", "客户端 system 原样出站。": "클라이언트 system을 그대로 전송합니다.", "客户端 system 原样出站(只靠指纹脱敏改写模板句)。": "클라이언트 system을 그대로 전송합니다(핑거프린트 마스킹으로 템플릿 문구만 재작성).", "客户端专用请求头": "클라이언트 전용 헤더", "客户端名称": "클라이언트 이름", "客户端名称不能为空,最长 80 个字符": "클라이언트 이름을 80자 이내로 입력하세요", "客户端名称重复或与内置名称冲突": "클라이언트 이름이 중복되거나 내장 이름과 충돌함", "客户端标识无效或重复": "클라이언트 식별 정보가 잘못되었거나 중복됨", "客户端识别": "클라이언트 식별", "客户端识别入口尚未就绪,请刷新页面后重试": "클라이언트 식별 기능이 준비되지 않았습니다. 페이지를 새로고침한 뒤 다시 시도하세요.", "客户端识别设置读取失败": "클라이언트 식별 설정을 불러오지 못했습니다", "客户端(Claude Code / Codex 等 CLI)会在 system 提示词里注入几十句固定模板,上游按逐字匹配审核,命中就整单拦截(HTTP 400)。指纹脱敏能改写实测命中过的那几句,但换一个客户端版本就可能冒出新的。这里可以把 system 整段换成网关自己那份:①「透传」= 不动客户端 system(默认,行为与之前完全一致);②「替换」= 删掉客户端所有 system / developer 消息,换成网关的提示词(客户端项目规范随之消失);③「追加」= 在开头连续 system 块之后插入一条网关提示词,既有消息逐字不动(客户端规范与网关提示词并用)。那份提示词有两个来源:提示词文件(留空用内置默认),或直接在界面上编辑正文 —— 编辑过就以那份正文为准(优先于文件),清空则回到文件 / 内置默认。另外,透传 / 追加模式下撞了内容拦截(多半是指纹误报)时,网关会自动换一段最小中性提示词重试一次,并把「降级期」开到次日 00:00 —— 期间所有请求直接带中性提示词出门,不再先撞一次 400;这里能看见并提前解除它。上面几项是**默认值**:想给某个提供商单独配,用下面的「按提供商」加一行(带「网关自带」的家默认就列在那里)—— 不同的上游对这些内容的接受程度不一样。": "클라이언트(Claude Code / Codex 등 CLI)는 system 프롬프트에 수십 개의 고정 템플릿 문구를 주입하며, 업스트림은 글자 단위 일치로 검사해 걸리면 요청 전체를 차단합니다(HTTP 400). 핑거프린트 마스킹은 실측으로 걸렸던 몇 문장을 재작성할 수 있지만, 클라이언트 버전이 바뀌면 새로운 문구가 나타날 수 있습니다. 여기서는 system 전체를 게이트웨이의 것으로 바꿀 수 있습니다. ①「패스스루」= 클라이언트 system을 건드리지 않습니다(기본값, 이전과 동일한 동작). ②「교체」= 클라이언트의 모든 system / developer 메시지를 삭제하고 게이트웨이 시스템 프롬프트로 바꿉니다(클라이언트 프로젝트 규칙도 함께 사라집니다). ③「추가」= 맨 앞의 연속된 system 블록 뒤에 게이트웨이 시스템 프롬프트 한 건을 삽입하고 기존 메시지는 그대로 둡니다(클라이언트 규칙과 게이트웨이 시스템 프롬프트를 함께 사용). 이 시스템 프롬프트에는 두 가지 출처가 있습니다. 시스템 프롬프트 파일(비워 두면 내장 기본값 사용) 또는 화면에서 직접 본문 편집 — 편집한 경우 그 본문이 우선하며(파일보다 우선) 비우면 파일 / 내장 기본값으로 돌아갑니다. 또한 패스스루 / 추가 모드에서 콘텐츠 차단(대부분 핑거프린트 오탐)에 걸리면 게이트웨이가 자동으로 최소한의 중립 시스템 프롬프트로 한 번 재시도하고 「폴백 기간」을 다음 날 00:00까지 켭니다. 기간 중에는 모든 요청이 중립 시스템 프롬프트를 달고 나가며 400에 먼저 부딪히지 않습니다. 여기서 이 상태를 확인하고 미리 해제할 수 있습니다. 위 항목들은 **기본값**입니다. 특정 제공자에 따로 설정하려면 아래 「제공자별 설정」에서 행을 추가하세요(「게이트웨이 내장」이 있는 제공자는 기본으로 거기에 나열됩니다). 업스트림마다 이런 내용을 받아들이는 정도가 다릅니다.", "家之间仍按优先级,只有同一家内部轮流用各账号 —— 想优先用某几家、又不愿把某一家的某个账号焊死时用它。": "제공자 간에는 우선순위를 따르고, 같은 제공자 내에서만 계정이 순환합니다 — 몇몇 제공자를 우선하되 특정 계정에 고정하고 싶지 않을 때 사용합니다.", "家内轮询": "제공자 내 순환", "容器内更新": "컨테이너 내 업데이트", "密码、文件或密钥校验失败时不会替换主库;替换阶段失败会自动尝试还原,实际结果以上方错误说明为准。": "비밀번호, 파일 또는 키 검증에 실패하면 원본 데이터베이스는 변경되지 않습니다. 교체 단계에서 실패하면 자동 복구를 시도하며 실제 결과는 위 오류 설명에 표시됩니다.", "密码加密 · 包含恢复密钥": "비밀번호 암호화 · 복원 키 포함", "密码至少 8 位": "비밀번호는 8자리 이상", "对话里内嵌的 base64 大图(截图、照片)既撑大请求体,也拉高按像素折算的上游计费。开启后,网关在转发前把超过阈值的图等比缩到长边上限、重新存成 JPEG —— 只改发给上游的副本,请求日志里保存的仍是你发来的原图。同一张原图在多轮对话里重复出现时复用上一次的压缩结果,不会每轮重算。http 链接图片、GIF 动图、SVG 一律不动;压完反而更大的图也保留原图。只作用在对话场景,生图与图片编辑不受影响。默认开启;不想要的话把开关关掉即可。": "대화에 포함된 큰 base64 이미지(스크린샷, 사진)는 요청 본문을 키울 뿐 아니라 픽셀 기준으로 과금되는 상류 비용도 높입니다. 켜면 포워딩 전에 임계값을 넘는 이미지를 긴 변 한도까지 축소하고 JPEG으로 다시 인코딩합니다. 바뀌는 것은 상류로 보내는 사본뿐이며, 요청 로그에는 보낸 원본 이미지가 그대로 저장됩니다. 같은 원본 이미지가 여러 턴에 걸쳐 다시 실리면 이전 압축 결과를 재사용하고 매번 다시 계산하지 않습니다. http 링크 이미지, 애니메이션 GIF, SVG는 전혀 건드리지 않고, 다시 인코딩하면 오히려 커지는 이미지도 원본 그대로 둡니다. 대화에만 적용되며 이미지 생성과 편집에는 영향을 주지 않습니다. 기본값은 켜짐이며, 원하지 않으면 스위치를 끄면 됩니다.", "导入前会把本机的 account.key 改名备份(account.key.bak-时间戳),不会直接删除。": "가져오기 전에 로컬 account.key를 account.key.bak-<타임스탬프>로 이름을 바꿔 백업하며, 삭제하지는 않습니다.", "导入完成:{summary}": "가져오기 완료: {summary}", "导入密钥失败:{message}": "키 가져오기 실패: {message}", "导入密钥并继续": "키 가져오고 계속", "导入账号": "계정 가져오기", "导出中…": "내보내는 중…", "导出会把全部账号与自定义提供商定义写入一个 JSON 文件,可以拷到另一台机器上导入后继续使用。导入采用合并策略:同提供商下按业务身份(UID / userId / apiKey 等)去重 —— 已存在的账号只更新凭证,保留本机原有的优先级顺序;新账号追加到转发顺序末尾,不会抢占当前正在使用的账号;自定义提供商定义按 id 合并,本机缺失时自动补建。": "내보내기는 모든 계정과 커스텀 제공자 정의를 하나의 JSON 파일에 기록하며, 다른 컴퓨터로 복사해 가져온 뒤 계속 사용할 수 있습니다. 가져오기는 병합 방식을 사용합니다. 같은 제공자 아래에서는 비즈니스 신원(UID / userId / apiKey 등)으로 중복을 제거합니다. 이미 있는 계정은 자격 증명만 업데이트하고 이 컴퓨터의 기존 우선순위 순서를 유지하며, 새 계정은 포워딩 순서 끝에 추가되어 현재 사용 중인 계정을 밀어내지 않습니다. 커스텀 제공자 정의는 id 기준으로 병합하고, 이 컴퓨터에 없으면 자동으로 생성합니다.", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义": "내보내기 파일에 accessToken / refreshToken / apiKey 등 자격 증명과 커스텀 제공자 정의가 포함됩니다", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "내보내기 파일에는 accessToken / refreshToken / apiKey 등 자격 증명과 커스텀 제공자 정의가 포함되어 있으며, 바로 로그인에 사용할 수 있습니다. 안전하게 보관하고 외부에 전달하거나 공공장소에 업로드하지 마세요.", "导出账号": "계정 내보내기", "将数据库和恢复凭证所需的密钥一起保存为密码加密的 .a2ab 备份,可在 Windows、macOS 或 Linux 上恢复,无需手工复制密钥。恢复时整体替换账号、配置、日志与桌面设置,并使用目标机器的密钥重新加密凭证,不覆盖本机已有钥匙。可取消包含日志以减小文件;旧 .sql 备份仍可导入。恢复前自动保留安全备份,完成后需要重新登录管理面板。": "데이터베이스와 복원 키를 비밀번호로 암호화한 .a2ab 백업에 저장해 Windows, macOS 또는 Linux에서 키를 수동 복사하지 않고 복원합니다. 계정, 구성, 로그와 데스크톱 설정을 전체 교체하고 대상 기기의 키로 자격 증명을 다시 암호화합니다. 기존 키는 덮어쓰지 않습니다. 로그를 제외해 용량을 줄일 수 있으며 기존 .sql 가져오기도 지원합니다. 교체 전 안전 백업을 보관하고 완료 후 다시 로그인해야 합니다.", "尚未注册管理员。开启「网关 → 网络访问 → 允许其他设备访问网关」时会引导注册,也可以从登录页注册。": "아직 관리자가 등록되지 않았습니다. 「게이트웨이 → 네트워크 접근 → 다른 기기의 게이트웨이 접근 허용」을 켜면 등록 안내가 표시됩니다. 로그인 페이지에서도 등록할 수 있습니다.", "尚未注册管理员:管理接口不需要登录。开启「允许局域网访问」时会引导注册,也可以从登录页注册。": "관리자가 등록되지 않았습니다: 관리 API에는 로그인이 필요하지 않습니다. \"LAN 액세스 허용\"을 켜면 등록으로 안내되며, 로그인 페이지에서도 등록할 수 있습니다.", "尚未配置视觉分析模型": "시각 분석 모델이 설정되지 않았습니다", "局域网开放后,管理接口要求登录。请设置管理员账号与密码,注册完成会直接继续开启流程。": "LAN에 공개하면 관리 인터페이스가 로그인을 요구합니다. 관리자 계정과 비밀번호를 설정하세요. 등록이 완료되면 바로 이어서 활성화 절차가 진행됩니다.", "局域网访问": "LAN 접근", "工具用法与环境说明那一大段。": "도구 사용법과 환경 설명에 해당하는 긴 단락입니다.", "已为「{label}」单独配置提示词": "「{label}」에 시스템 프롬프트를 개별 설정했습니다", "已作为独立应用运行": "독립 앱으로 실행 중", "已使用本机密钥重新加密 {n} 项凭证,原有密钥未被覆盖。": "자격 증명 {n}개를 로컬 키로 다시 암호화했습니다. 기존 키는 덮어쓰지 않았습니다.", "已保存 {count} / {limit} 条报文(超出后丢弃最旧的)。": "메시지 {count} / {limit}건을 저장했습니다(초과분은 오래된 것부터 버립니다).", "已保存的值不符合当前插件规则,请修改或恢复默认值。": "저장된 값이 현재 플러그인 규칙에 맞지 않습니다. 수정하거나 기본값을 복원하세요.", "已保存,留空则不修改": "저장됨. 비워 두면 변경하지 않습니다", "已保存,留空沿用": "저장됨, 비워 두면 유지", "已关闭": "꺼짐", "已关闭 models.dev 联网刷新": "models.dev 온라인 갱신을 껐습니다", "已关闭。{note}": "꺼짐. {note}", "已关闭「{label}」的网关自带提示词:能否通过上游校验取决于上游当前口径": "「{label}」의 게이트웨이 내장 시스템 프롬프트를 껐습니다: 업스트림 검증 통과 여부는 업스트림의 현재 기준에 따라 달라집니다", "已关闭会话图片压缩": "이미지 압축을 껐습니다", "已关闭出站指纹脱敏": "아웃바운드 핑거프린트 마스킹을 껐습니다", "已关闭开发者角色兼容": "개발자 역할 호환이 꺼졌습니다", "已关闭第三方模型回答完自动折叠过程": "타사 모델의 답변 후 과정 자동 접기를 껐습니다", "已关闭网关跨域访问": "게이트웨이 CORS 접근을 껐습니다", "已关闭:不额外补阶段标记,由客户端决定过程展示。": "꺼짐: 단계 표시를 추가하지 않으며 과정 표시는 클라이언트가 결정합니다.", "已删除分组「{name}」": "그룹 \"{name}\"을(를) 삭제했습니다", "已取消「{label}」的单独配置": "「{label}」의 개별 설정을 취소했습니다", "已取消安装": "설치를 취소했습니다", "已取消导入": "가져오기를 취소했습니다", "已取消导出": "내보내기를 취소했습니다", "已取消恢复": "복원이 취소되었습니다", "已启用 {count} 条规则,应用于{scope}。": "규칙 {count}개 활성화, 적용 대상: {scope}.", "已启用登录": "로그인 사용 중", "已复制全部版本信息": "모든 버전 정보를 복사했습니다", "已应用": "반영됨", "已开启": "켜짐", "已开启:为正常完成的 Codex 回答补阶段标记。": "켜짐: 정상 완료된 Codex 답변에 단계 표시를 추가합니다.", "已开启:其他设备把 API 地址指向 {url}{panel}。": "켜짐: 다른 기기에서 API 주소를 {url}(으)로 지정하면 됩니다{panel}.", "已开启:监听 0.0.0.0,允许其他设备访问。": "켜짐: 0.0.0.0에서 수신하여 다른 기기의 접근을 허용합니다.", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "기본 그룹으로 복원했습니다: 개요 / 전달 경로 / 진단 / 시스템", "已截断": "잘림", "已指定出口": "출구 지정됨", "已接管": "인계됨", "已改回内置默认提示词": "내장 기본 시스템 프롬프트로 되돌렸습니다", "已新建分组「{name}」,点组头的 + 把菜单移进来": "그룹 \"{name}\"을(를) 만들었습니다. 머리의 +로 메뉴를 가져오세요", "已清掉「{label}」界面编辑的正文": "「{label}」의 화면 편집 본문을 삭제했습니다", "已清掉界面编辑的提示词(回落文件 / 内置默认)": "화면에서 편집한 시스템 프롬프트를 삭제했습니다(파일 / 내장 기본값으로 폴백)", "已清除本机保存的 API Key": "이 브라우저에 저장된 API Key를 삭제했습니다", "已生效": "적용됨", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。": "최소 중립 프롬프트로 자동 전환했습니다(업스트림 콘텐츠 차단에 걸린 것으로, 대부분 system 지문 오탐입니다). {until} 에 자동 해제됩니다.", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "최소 중립 시스템 프롬프트로 자동 전환했습니다(업스트림 콘텐츠 차단에 걸렸으며 대부분 system 핑거프린트 오탐입니다). {until}에 자동 해제됩니다. 기간 중에는 이 모드의 시스템 프롬프트가 전송되지 않습니다. 시스템 프롬프트를 수정한 뒤 즉시 해제할 수 있습니다.", "已自定义": "사용자 지정됨", "已运行": "가동 시간", "已退出登录": "로그아웃했습니다", "已隐藏": "숨김", "巴西葡萄牙语": "브라질 포르투갈어", "希望接入新的提供商或模型": "새 제공자나 모델 연동을 원함", "库中 schema": "DB 내 schema", "库主文件的大小(不含运行期间的 WAL 临时文件,退出时已自动并回)。": "DB 본체 파일의 크기입니다(실행 중의 WAL 임시 파일은 포함하지 않으며, 종료 시 자동으로 병합됩니다).", "库存目标": "재고 목표", "应用提供商": "적용 제공자", "应用版本:{version}": "앱 버전: {version}", "应用状态": "앱 상태", "应用窗口": "앱 창", "建立上游 TCP/TLS 连接或代理隧道的最大等待时间(秒),默认 30 秒,范围 1~3600。": "업스트림 TCP/TLS 연결 또는 프록시 터널을 설정할 때 기다리는 최대 시간(초). 기본 30초, 범위 1~3600.", "开发构建": "개발 빌드", "开发者角色兼容": "developer 역할 호환", "开发者角色兼容设置已刷新": "개발자 역할 호환 설정이 새로 고쳐졌습니다", "开启前需要注册面板管理员,已注册会跳过此步骤。管理接口需要管理员会话或网关 Key;API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。": "켜기 전에 패널 관리자를 등록해야 하며, 이미 등록된 경우 이 단계를 건너뜁니다. 관리 API에는 관리자 세션 또는 게이트웨이 키가 필요합니다. API 호출에는 활성화된 게이트웨이 키가 필요하며, 없으면 기본 키를 자동으로 생성합니다.", "开启后新发生的请求才会被记录(已经过去的请求补不回来)。报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "켠 이후에 발생한 요청만 기록됩니다(과거 요청은 소급되지 않음). 페이로드는 로컬 데이터베이스에 저장되며 최근 500 건만 유지합니다(초과분은 오래된 것부터 버림). 건수는 왼쪽 \"데이터 → 데이터 저장\"의 \"디버그 페이로드\"에서 볼 수 있습니다.", "开启后新发生的请求才会被记录(已经过去的请求补不回来),请求日志的「预览对话」也随之开始保存原始正文。上游报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "켜면 이후 새로 발생하는 요청만 기록됩니다(이미 지나간 요청은 소급 기록되지 않습니다). 요청 로그의 「대화 미리보기」도 이때부터 원문을 저장하기 시작합니다. 업스트림 메시지는 로컬 데이터베이스에 통합 저장되며 최근 500건만 보관합니다(초과분은 오래된 것부터 버립니다). 건수는 왼쪽 「데이터 → 데이터 저장」의 「디버그 메시지」에서 확인할 수 있습니다.", "开启后监听所有 IPv4 网卡(0.0.0.0),并不局限于局域网,也不会自动开放到公网;实际访问范围取决于网络与防火墙设置。修改后需要重启应用。": "켜면 모든 IPv4 인터페이스(0.0.0.0)에서 수신합니다. 접근 범위는 LAN으로 제한되지 않지만 인터넷에 자동으로 공개되지는 않습니다. 실제 접근 범위는 네트워크와 방화벽 설정에 따라 달라집니다. 변경 후 앱을 다시 시작해야 합니다.", "开启后网关将监听所有 IPv4 网卡(0.0.0.0),访问范围不再限于本机,也不局限于局域网。是否能从公网访问取决于网络与防火墙设置。": "게이트웨이가 모든 IPv4 인터페이스(0.0.0.0)에서 수신합니다. 접근 범위는 이 기기나 LAN으로 제한되지 않습니다. 인터넷에서 접근할 수 있는지는 네트워크와 방화벽 설정에 따라 달라집니다.", "开启后网关将监听所有网卡,同一局域网内的设备即可把 API 地址指向本机 IP 一起使用;管理接口从此要求管理员会话或网关 Key,转发接口在没有一把启用的 Key 时也会拒绝服务(届时会自动创建一把名为「默认」的 Key)。": "켜면 게이트웨이가 모든 네트워크 인터페이스를 수신하며, 같은 LAN의 기기에서 API 주소를 로컬 IP로 지정해 함께 사용할 수 있습니다. 관리 인터페이스는 이때부터 관리자 세션 또는 게이트웨이 키를 요구하고, 포워딩 인터페이스도 활성화된 키가 하나도 없으면 서비스를 거부합니다(이때 「기본」이라는 키가 자동 생성됩니다).", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 套餐池(Start Plan)」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "켜면 창을 닫는 것이 단순히 숨기는 것이 아니라 UI 창 전체를 파괴합니다: 상주하는 6개의 WebView2 프로세스(약 200MB 메모리)가 종료되고, 게이트웨이 포워딩·예정된 체크인·잔액 조회는 백그라운드 프로세스에서 영향 없이 계속됩니다; UI가 필요하면 트레이 아이콘을 클릭해 다시 엽니다(WebView 콜드 스타트 약 1초). 주의: UI가 파괴된 동안 ZCode \"플랜 풀 (Start Plan)\" 채널의 캡차 토큰은 UI가 생성하므로 보충할 수 없으며, 해당 채널의 요청은 사유와 함께 503으로 요청 로그에 기록됩니다. UI를 다시 열면 자동으로 복구됩니다. 이 스위치는 \"닫을 때 트레이로 최소화\"가 켜져 있을 때만 의미가 있으며, 최소화된 창에는 영향이 없습니다.", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 活动套餐」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "켜면 창을 닫을 때 단순히 숨기는 것이 아니라 인터페이스 창을 통째로 파괴합니다. 기반이 되는 WebView2 상주 프로세스 6개(약 200MB 메모리)도 함께 종료되며, 게이트웨이 포워딩, 예약 출석 체크, 잔액 조회는 백그라운드 프로세스에서 계속 실행되어 영향을 받지 않습니다. 인터페이스가 필요하면 트레이 아이콘을 클릭해 다시 열면 됩니다(WebView 콜드 스타트 약 1초). 주의: 인터페이스가 파괴된 동안 「ZCode 활동 요금제」 채널의 인증 코드 토큰은 인터페이스가 발급하므로 보충할 수 없습니다. 이 채널을 사용하는 요청은 503으로 요청 로그에 기록되며(사유 표시), 인터페이스를 다시 열면 자동으로 복구됩니다. 이 스위치는 「창을 닫을 때 트레이로 최소화」가 켜져 있을 때만 의미가 있으며, 창 최소화는 영향을 받지 않습니다.", "开启后,关闭窗口会销毁界面并释放 WebView 进程,网关转发、定时签到、余额查询仍在后台继续。ZCode 模型请求免验证时不受影响;上游要求人机验证时,需要重新打开界面,在账号的「套餐明细」中主动完成验证。此开关只在「关闭窗口时最小化到托盘」开启时有意义。": "활성화하면 창을 닫을 때 화면과 WebView 프로세스를 해제합니다. 요청 전달, 예약 출석 및 잔액 조회는 백그라운드에서 계속됩니다. 인증이 필요 없는 ZCode 요청에는 영향이 없습니다. 인증이 필요하면 화면을 다시 열고 계정의 「플랜 상세」에서 완료하세요. 창을 닫을 때 트레이로 최소화하는 설정이 켜져 있을 때만 적용됩니다.", "开启后,新发生的请求会保存上游调试报文与下游正文,历史请求无法补录。上游调试报文只保留最近 500 条;两侧条数可在「数据 → 数据存储」查看。关闭开关不会删除已保存的报文,可在请求日志中选择「仅清空报文原文」一起清理。": "켜면 새 요청의 업스트림 디버그 페이로드와 다운스트림 본문을 저장합니다. 이전 요청은 복원할 수 없습니다. 업스트림 디버그 페이로드는 최근 500건만 보관합니다. 양쪽 건수는 데이터 → 데이터 저장소에서 확인할 수 있습니다. 끄더라도 저장된 페이로드는 삭제되지 않습니다. 요청 로그에서 원문만 비우기를 선택하면 양쪽을 함께 정리할 수 있습니다.", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。": "켜면 로그인 페이지가 브라우저 백그라운드에서 자동으로 검증을 완료합니다(실제 사람은 느낄 수 없음). 반면 스크립트는 시도할 때마다 문제를 풀어야 하므로 무차별 대입 공격과 선점 등록의 비용이 크게 올라갑니다. 패널의 로그인 / 가입에만 영향을 주며 API 클라이언트의 API Key와는 무관합니다.", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。桌面端与网页端各自独立:桌面端主要服务本机与局域网,网页端(Docker / 服务端)直接暴露在网络上的登录页风险更高,建议保持开启。": "켜면 로그인 페이지가 백그라운드에서 인증을 마칩니다(사람에게는 보이지 않음). 반면 스크립트 시도는 매번 문제를 하나 풀어야 하므로 무차별 대입과 계정 선점 비용이 크게 올라갑니다. 패널의 로그인 / 등록에만 영향을 주며 API 클라이언트의 API Key와는 무관합니다. 데스크톱과 웹은 서로 독립적입니다. 데스크톱은 주로 이 컴퓨터와 LAN을 대상으로 하고, 웹(Docker / 서버)은 네트워크에 노출되므로 켜 두는 것을 권장합니다.", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "켜면 게이트웨이가 전송마다 **업스트림으로 보낸 요청**(헤더 + 본문)과 **업스트림이 돌려준 응답**(상태 코드 + 헤더 + 본문)을 로컬에 통째로 저장해 요청 로그 페이지의 \"상세\"에서 볼 수 있게 합니다. 요청 헤더의 Authorization, Cookie, API 키 등 자격 증명 필드는 모두 [redacted] 로 대체되어 평문으로 저장되지 않으며, 요청 / 응답 본문은 원본 그대로 저장됩니다(대화 내용이 포함될 수 있음). 페이로드는 최근 500 건만 유지하고 초과분은 오래된 것부터 버립니다. 문제 해결용 임시 스위치이므로 필요 없을 때는 끄는 것을 권장합니다.", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看;请求日志详情的「预览对话」也依赖本开关 —— 它保存的是客户端发来的请求体与网关下发的响应体(两侧各截断到 128 KiB),不开这个开关时预览对话没有数据可看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。上游报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "켜면 게이트웨이가 각 전달 시 **업스트림으로 보낸 요청**(요청 헤더 + 요청 본문)과 **업스트림이 반환한 응답**(상태 코드 + 응답 헤더 + 응답 본문)을 로컬에 그대로 저장하여 요청 로그 페이지의 「상세」에서 볼 수 있게 합니다. 요청 상세의 「대화 미리보기」도 이 스위치에 의존합니다 —— 저장되는 것은 클라이언트가 보낸 요청 본문과 게이트웨이가 내려보낸 응답 본문(각각 128 KiB로 잘림)이며, 스위치가 꺼져 있으면 미리 볼 데이터가 없습니다. 요청 헤더의 Authorization, Cookie, API Key 등 자격 증명 필드는 모두 [redacted]로 치환되어 평문으로 디스크에 기록되지 않습니다. 요청 본문과 응답 본문은 원본 그대로 저장됩니다(대화 내용이 포함될 수 있습니다). 업스트림 메시지는 최근 500건만 보관하며 초과분은 오래된 것부터 버립니다. 장애 진단용 임시 스위치이므로 필요 없으면 끄는 것을 권장합니다.", "开启后,能连接到网关的设备可通过浏览器访问网页管理面板,需使用管理员账号登录。访问范围与网关相同,并不局限于局域网。": "켜면 게이트웨이에 연결할 수 있는 기기에서 브라우저로 웹 관리 패널에 접근하고 관리자 계정으로 로그인할 수 있습니다. 접근 범위는 게이트웨이와 같으며 LAN으로 제한되지 않습니다.", "开启后,调用方可以用专用请求头声明已登记的客户端名称。这不是身份认证,只用于日志和统计,不会获得额外权限。": "켜면 호출자가 전용 헤더로 등록된 클라이언트 이름을 선언할 수 있습니다. 인증 기능이 아니며 로그와 통계에만 사용되고 추가 권한을 부여하지 않습니다.", "开启局域网访问": "LAN 접근 켜기", "开启来源声明": "출처 선언 켜기", "开启网络访问": "네트워크 접근 켜기", "开放后,局域网内其他设备的浏览器打开本机 IP 即可进入管理面板(需管理员账号登录)。": "공개하면 LAN 내 다른 기기의 브라우저에서 로컬 IP를 열면 관리 패널에 들어갈 수 있습니다(관리자 계정 로그인 필요).", "开机自动启动": "자동 시작", "开源许可": "오픈 소스 라이선스", "开(最多 {n} 轮)": "켜짐(최대 {n}회)", "归属客户端": "분류할 클라이언트", "当前三段都是官方原文。": "현재 세 단락 모두 공식 원문입니다.", "当前不可用": "현재 사용할 수 없음", "当前后端不支持词表编辑与提供商范围,请更新后端后重试。": "현재 백엔드는 규칙 편집과 제공자 범위를 지원하지 않습니다. 백엔드를 업데이트한 후 다시 시도하세요.", "当前固定为浅色模式,不随系统变化。": "현재 라이트 모드로 고정되어 있으며 시스템 설정을 따르지 않습니다.", "当前固定为深色模式,不随系统变化。": "현재 다크 모드로 고정되어 있으며 시스템 설정을 따르지 않습니다.", "当前密码": "현재 비밀번호", "当前已改过:{edited}。": "현재 수정된 단락: {edited}.", "当前形态": "실행 형태", "当前按 100% 显示(默认比例)。": "현재 100%로 표시됩니다(기본 비율).", "当前按 k / M 缩写显示(如 1.20M / 8.4k)。": "현재 k / M 축약으로 표시됩니다(예: 1.20M / 8.4k).", "当前按 {n}% 显示。": "현재 {n}%로 표시됩니다.", "当前按「万 / 亿」式本地量级词显示(如 1.2亿 / 8400万)。": "현재 「만 / 억」 단위의 로컬 규모 단어로 표시됩니다(예: 1.2억 / 8400만).", "当前是透传模式:存下来也不会发出,切成「替换 / 追加」之后才生效。": "현재 패스스루 모드입니다. 저장해도 전송되지 않으며, 「교체 / 추가」로 전환한 후에 적용됩니다.", "当前显示为「1.20M / 8.4k / 1.2B」这类英文缩写。": "현재 \"1.20M / 8.4k / 1.2B\" 같은 영문 약어로 표시 중입니다.", "当前显示为「1.2亿 / 8400万」这类中文量级。": "현재는 \"1.2억 / 8400만\" 같은 중국어 단위 표기로 표시됩니다.", "当前样本结果:{name}": "현재 샘플 결과: {name}", "当前正在使用": "현재 사용 중", "当前浏览器以管理员身份登录着本面板。「退出登录」会撤销这台设备的登录会话(30 天内的自动续期一并失效),需要重新输入账号密码;其他已登录的设备不受影响。": "현재 브라우저가 관리자로 이 패널에 로그인되어 있습니다. 「로그아웃」은 이 기기의 로그인 세션을 해제하며(30일 이내의 자동 갱신도 함께 무효화), 계정과 비밀번호를 다시 입력해야 합니다. 이미 로그인한 다른 기기는 영향을 받지 않습니다.", "当前版本不支持品牌设置": "현재 버전은 브랜드 설정을 지원하지 않습니다", "当前环境不支持局域网访问设置": "현재 환경에서는 LAN 접근 설정을 지원하지 않습니다", "当前环境不支持整库备份": "이 환경에서는 전체 DB 백업을 지원하지 않습니다", "当前环境不支持整库备份(仅桌面端可用)": "이 환경에서는 전체 DB 백업을 지원하지 않습니다(데스크톱 전용)", "当前环境不支持整库恢复": "이 환경에서는 전체 DB 복원을 지원하지 않습니다", "当前环境不支持整库恢复(仅桌面端可用)": "이 환경에서는 전체 DB 복원을 지원하지 않습니다(데스크톱 전용)", "当前环境不支持网络访问设置": "현재 환경에서는 네트워크 접근 설정을 지원하지 않습니다", "当前环境不支持读取版本信息(桥接方法缺失)": "이 환경에서는 버전 정보를 읽을 수 없습니다(브리지 메서드 없음)", "当前生效值:{value}": "현재 적용 값: {value}", "当前生效的正文来自{source}{file}。保存后这一份会盖过提示词文件与内置默认{note}。": "현재 적용 중인 본문은 {source}에서 가져옵니다{file}. 저장하면 이 본문이 시스템 프롬프트 파일과 내장 기본값을 덮어씁니다{note}.", "当前界面": "현재 화면", "当前管理员:{name}": "현재 관리자: {name}", "当前设置已保存": "현재 설정이 저장되었습니다", "当前跟随操作系统的深浅色设置,系统切换时界面会自动跟上。": "현재 운영 체제의 라이트/다크 설정을 따르며, 시스템이 전환되면 인터페이스도 자동으로 따라갑니다.", "当前路由内的可用视觉模型": "현재 라우트에서 사용 가능한 비전 모델", "待迁移旧数据": "이전 대기 중인 레거시 데이터", "待配置": "미설정", "忘记密码时无法在界面里找回:需要停掉程序后,从数据库删除管理员记录(kv 表的 panelAdmin 键),重启后按首次使用重新注册。具体命令与各形态的库文件路径见 docs 目录下的「重置管理员」文档。": "비밀번호를 잊으면 화면에서 복구할 수 없습니다. 프로그램을 중지한 뒤 데이터베이스에서 관리자 레코드(kv 테이블의 panelAdmin 키)를 삭제하고, 재시작 후 최초 사용처럼 다시 등록하세요. 구체적인 명령과 형태별 데이터베이스 경로는 docs의 \"관리자 재설정\" 문서를 참고하세요.", "思考等级、图片能力未知、等待上限": "사고 수준, 이미지 지원 불명, 대기 상한", "恢复中…": "복원 중…", "恢复失败:{message}": "복원 실패: {message}", "恢复官方原文": "공식 원문으로 복원", "恢复插件默认值": "플러그인 기본값 복원", "恢复整库": "데이터베이스 복원", "恢复整库备份": "전체 백업 복원", "恢复默认": "기본값으로 복원", "恢复默认 Logo": "기본 로고로 복원", "恢复默认侧边栏": "사이드바 기본값 복원", "恢复默认品牌": "기본 브랜드로 복원", "恢复默认词表": "기본 규칙 복원", "想回到原来那份,把这里清空再保存即可(不会删掉你配的文件路径)。": "원래 본문으로 돌아가려면 여기를 비우고 저장하면 됩니다(설정한 파일 경로는 삭제되지 않습니다).", "想要的新功能或改进想法": "원하는 새 기능이나 개선 아이디어", "所有未单独配置的提供商都用这一份": "개별 설정하지 않은 모든 제공자가 이 설정을 사용합니다", "所有菜单都已在这一组": "모든 메뉴가 이미 이 그룹에 있습니다", "手机端可管理所连接网关的账号、签到与插件,并使用提供商声明的动态登录入口;其余既有添加入口、编辑凭证和改写客户端配置仍需桌面面板。": "모바일 앱에서 연결된 게이트웨이의 계정, 출석, 플러그인을 관리하고 제공업체가 선언한 동적 로그인 방식을 사용할 수 있습니다. 그 밖의 기존 계정 추가 기능, 인증 정보 편집, 클라이언트 설정 변경은 데스크톱 패널이 필요합니다.", "托管网页界面": "웹 UI 제공", "把地址里的 your-server 与 USERNAME 换成你自己的;目录不存在时会自动创建。": "주소의 your-server와 USERNAME을 자신의 값으로 바꾸세요. 디렉터리가 없으면 자동으로 만듭니다.", "把整份数据库(账号、网关配置、事件日志、请求统计、调试报文与桌面设置)导出成一个 SQL 文件,恢复时整体替换本机全部数据 —— 与上面「账号导入 / 导出」的逐条合并是两种语义:恢复会连配置、日志与当前启用状态一起换成备份那台机器的状态。导出默认包含日志与调试报文(文件可能很大),不需要时可以取消勾选只备业务数据。恢复前会自动把当前数据备份到配置目录的 backups/ 下,恢复后需要重新登录管理面板。": "데이터베이스 전체(계정, 게이트웨이 설정, 이벤트 로그, 요청 통계, 디버그 페이로드, 데스크톱 설정)를 SQL 파일 하나로 내보내고, 복원 시 이 PC의 모든 데이터를 통째로 교체합니다 — 위의 \"계정 가져오기 / 내보내기\"의 건별 병합과는 다른 의미입니다. 복원은 설정, 로그, 활성화 상태까지 백업한 그 PC의 상태로 바꿔치기합니다. 내보내기는 기본적으로 로그와 디버그 페이로드를 포함하며(파일이 커질 수 있음), 필요 없으면 체크를 해제해 업무 데이터만 백업할 수 있습니다. 복원 직전에 현재 데이터를 설정 디렉터리의 backups/ 에 자동 백업하며, 복원 후에는 패널에 다시 로그인해야 합니다.", "把整次请求交给视觉模型,由它直接回答,不再回到原模型。": "요청 전체를 비전 모델에 넘겨 원래 모델로 돌아가지 않고 바로 답합니다.", "把菜单移入 {name}": "메뉴를 {name}(으)로 이동", "把菜单移入「{name}」": "메뉴를 \"{name}\"(으)로 이동", "把账号、网关配置、自定义提供商、Agent 配置、代理池 / 订阅、签到与余额记录同步到 WebDAV 或 S3 兼容存储,换台机器后一键取回。事件日志、请求明细、调试报文与面板登录态不在同步范围内(它们是本机的运行痕迹)。上传的账号凭证仍是加密形态,解密用的账号密钥由「同步密码」单独加密后一并上传 —— 同步密码不会保存到云端,换机下载时需要重新输入。": "계정, 게이트웨이 설정, 사용자 지정 공급자, Agent 설정, 프록시 풀/구독, 체크인 및 잔액 기록을 WebDAV 또는 S3 호환 스토리지에 동기화하고 다른 컴퓨터에서 한 번에 복원합니다. 이벤트 로그, 요청 상세, 디버그 패킷, 패널 로그인 상태는 대상이 아닙니다(이 컴퓨터의 실행 기록입니다). 업로드되는 계정 자격 증명은 암호화된 상태로 유지되며, 이를 복호화하는 계정 키는 '동기화 비밀번호'로 별도 암호화해 함께 업로드합니다. 동기화 비밀번호는 클라우드에 저장되지 않으므로 다른 컴퓨터에서 복원할 때 다시 입력해야 합니다.", "把路径里的主目录显示成 ~,截图分享时不暴露用户名": "경로의 홈 디렉터리를 ~ 로 표시해 캡처를 공유할 때 사용자 이름이 드러나지 않게 합니다", "把路径里的主目录(如 C:\\Users\\你的用户名)显示成 ~,截图分享时不暴露用户名。只影响本页显示与复制,不改任何文件。": "경로의 홈 디렉터리(예: C:\\Users\\사용자이름)를 ~ 로 표시해 캡처를 공유할 때 사용자 이름이 드러나지 않게 합니다. 이 페이지 표시와 복사에만 영향을 주며 파일은 변경하지 않습니다.", "报表天数": "리포트 일수", "报表页的热力图与按天趋势,默认 99999 天(近似全量保留),可填 1–99999 天。": "리포트 페이지의 히트맵과 일별 추세. 기본 99999일(거의 전체 보관)이며 1~99999일까지 입력할 수 있습니다.", "拖动分组 {name}": "그룹 {name} 끌기", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "왼쪽 ⠿를 끌어 순서를 바꾸세요(메뉴는 그룹 간 이동 가능). 스위치로 표시/숨김, 그룹 이름을 클릭해 이름 변경, 그룹 머리의 +로 다른 메뉴를 가져오기, 눈 버튼으로 그룹 전체 숨기기. 변경은 즉시 적용·저장되며 왼쪽 사이드바가 결과입니다. 키보드: 핸들에 포커스 후 Alt+↑ / ↓.", "拖动菜单 {name}": "메뉴 {name} 끌기", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "끌어서 그룹 순서 변경(Alt+↑ / ↓ 도 가능)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "끌어서 순서 변경, 그룹 간 이동 가능(Alt+↑ / ↓ 도 가능)", "指定备选仍受当前请求权限和路由范围限制,路由组请求不会跳到组外。不会转为辅助识图继续。": "지정한 예비 모델에도 현재 권한과 라우트 범위 제한이 적용됩니다. 라우트 그룹 밖으로 나가지 않으며 보조 이미지 읽기로 전환하지 않습니다.", "指定提供商": "선택한 제공자", "指定角色": "선택한 역할", "指定错误码直接换号": "지정 오류 코드 즉시 계정 전환", "指纹脱敏": "지문 마스킹", "指纹脱敏会在转发前按词表顺序改写请求消息中的文本,包括对话内容、思考内容和工具调用参数。默认词表包含客户端模板句与计费表头的精确替换、正则删除规则,可以新增、编辑、删除、启停和调整顺序;替换内容留空表示删除匹配内容。默认应用全部提供商,也可指定多家。改动只作用于发给上游的副本,响应内容不变。编辑后点击「保存设置」,下一次请求生效;清空词表表示不做任何指纹改写,恢复默认只重置词表。": "전달 전에 규칙 순서대로 요청 메시지의 텍스트를 수정합니다. 대화 내용, 추론 내용, 도구 호출 인수가 대상입니다. 기본 규칙은 클라이언트 템플릿 문장과 과금 헤더의 정확한 텍스트 치환 및 정규식 삭제를 포함합니다. 규칙을 추가, 편집, 삭제, 활성화, 비활성화하거나 순서를 변경할 수 있습니다. 치환 내용을 비우면 일치 부분을 삭제합니다. 기본적으로 모든 제공자에 적용하며 여러 제공자를 지정할 수도 있습니다. 업스트림으로 보내는 사본만 수정하고 응답은 변경하지 않습니다. 설정 저장을 누르면 다음 요청부터 적용됩니다. 빈 규칙 목록은 아무 내용도 수정하지 않으며 기본값 복원은 규칙만 초기화합니다.", "指纹脱敏设置仅本次运行生效,写入数据库失败,请检查配置目录": "설정은 이번 실행 중에만 적용됩니다. 데이터베이스 기록에 실패했습니다. 설정 디렉터리를 확인하세요.", "指纹脱敏设置已刷新": "핑거프린트 마스킹 설정을 새로 고쳤습니다", "按下面两块设置处理图片;关闭后设置全部保留。": "아래 두 블록의 설정으로 이미지를 처리합니다. 끄더라도 설정은 모두 남습니다.", "按列表自上而下匹配,位于来源声明之后、内置规则之前;可用于给难认的标识钉规则。": "목록 위에서 아래로 순서대로 매칭되며, 발신 선언 뒤·내장 규칙 앞에 적용됩니다. 식별하기 어려운 클라이언트를 고정하는 데 사용합니다.", "按原文精确匹配,区分大小写;不会自动去掉首尾空白。": "대소문자를 구분하여 원문과 정확하게 일치시킵니다. 앞뒤 공백은 제거하지 않습니다.", "按天聚合保留天数": "일일 집계 보존 일수", "按指定备选顺序尝试": "지정한 예비 모델을 순서대로 시도", "按提供商查看和调整专属选项": "제공자별 전용 옵션 확인 및 조정", "按提供商筛选设置": "제공자별 설정 필터", "按提供商管理专属选项,作用于当前网关中该提供商的所有账号。": "제공자별 전용 옵션을 관리합니다. 변경 사항은 현재 게이트웨이에 있는 해당 제공자의 모든 계정에 적용됩니다.", "按提供商配置": "제공자별 설정", "按每条请求的软件标识识别客户端,不依赖 API Key。规则修改只影响新请求,内置规则随软件更新,自定义规则参与备份与云同步。": "API Key와 무관하게 각 요청의 소프트웨어 식별 정보로 구분합니다. 규칙 변경은 새 요청에만 적용됩니다. 내장 규칙은 앱과 함께 업데이트되고 사용자 규칙은 백업 및 클라우드 동기화에 포함됩니다.", "换一台服务器": "다른 서버로 전환", "排队等待": "큐잉 대기", "排队等待次数": "큐잉 대기 횟수", "排队等待秒数": "큐잉 대기 시간(초)", "排队等待设置已刷新": "큐잉 대기 설정을 새로 고쳤습니다", "接入": "연결", "接受调用方来源声明": "호출자의 출처 선언 허용", "接管回答的模型": "답변을 이어받을 모델", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "사이드바에 표시할 메뉴, 순서, 그룹을 설정합니다. 숨김은 탐색 표시에만 영향을 주며 접근 권한을 회수하지 않습니다. 숨긴 페이지도 주소로 직접 열 수 있습니다.", "控制报表与请求日志里 Token 读数的写法:开启后按「万 / 亿」式的本地量级词显示(简体为万 / 亿,繁体为萬 / 億,日文为万 / 億,韩文为만 / 억),关闭则用 k / M 缩写(与上游文档、接口字段的写法一致)。英文 / 葡语的本地量级词就是 k / M,这项对它们没有区别。只影响显示口径,不改变任何统计与存储的数值。": "리포트와 요청 로그에서 Token 수치를 쓰는 방식을 제어합니다. 켜면 「만 / 억」 단위의 로컬 규모 단어로 표시하고(중국어 간체는 万 / 亿, 중국어 번체는 萬 / 億, 일본어는 万 / 億, 한국어는 만 / 억), 끄면 k / M 축약을 사용합니다(업스트림 문서와 인터페이스 필드의 표기와 동일). 영어 / 포르투갈어의 로컬 규모 단어는 k / M이므로 이 항목은 이들 언어에 차이가 없습니다. 표시 방식에만 영향을 주며 통계와 저장된 수치는 바뀌지 않습니다.", "控制报表与请求日志里 Token 读数的写法:开启后按中文量级显示(1.2亿 / 8400万),关闭则用 k / M / B 缩写(与上游文档、接口字段的写法一致)。这只影响显示口径,不改变任何统计与存储的数值。": "보고서와 요청 로그의 Token 표기 방식을 바꿉니다. 켜면 중국어 단위(1.2억 / 8400만), 끄면 k / M / B 약어(업스트림 문서와 API 필드와 같은 표기)로 표시합니다. 표시 방식만 바뀌며 통계와 저장 값은 달라지지 않습니다.", "控制界面的深浅色,与左侧边栏底部的三个主题按钮是同一个设置(改哪一处,另一处立刻跟上)。「跟随系统」会随操作系统当前的浅色 / 深色自动切换,并在系统主题变化时即时跟上;选「浅色」或「深色」则把界面固定在该模式,不再随系统变化。窗口标题栏的深浅色会一并同步,不会出现深色界面配一条浅色标题栏的情况。": "인터페이스의 라이트/다크를 제어하며, 왼쪽 사이드바 하단의 테마 버튼 세 개와 같은 설정입니다(어느 쪽을 바꾸든 다른 쪽이 즉시 따라갑니다). 「시스템」은 운영 체제의 현재 라이트 / 다크 설정에 따라 자동으로 전환되고 시스템 테마가 바뀌면 즉시 따라갑니다. 「라이트」나 「다크」를 선택하면 인터페이스가 해당 모드로 고정되어 시스템 설정을 따르지 않습니다. 창 제목 표시줄의 색상도 함께 동기화되어, 다크 인터페이스에 라이트 제목 표시줄이 붙는 일은 없습니다.", "提供商与模型": "제공업체 및 모델", "提供商专属设置": "제공자별 설정", "提供商当前不可用,未保存的修改已保留;恢复插件后可继续编辑。": "현재 제공자를 사용할 수 없습니다. 저장하지 않은 수정 내용은 유지되며, 플러그인이 복구되면 계속 편집할 수 있습니다.", "提供商设置已保存": "제공자 설정을 저장했습니다", "提供商设置返回格式无效,请刷新后重试": "제공자 설정 응답 형식이 올바르지 않습니다. 새로 고친 후 다시 시도하세요.", "提建议": "제안하기", "提示词文件": "시스템 프롬프트 파일", "提示词文件已更新": "시스템 프롬프트 파일이 업데이트되었습니다", "提示词正文": "시스템 프롬프트 본문", "提示词正文已更新": "시스템 프롬프트 본문이 업데이트되었습니다", "插件或设置已变化,请放弃修改并刷新后重新编辑。": "플러그인 또는 설정이 변경되었습니다. 변경을 취소하고 새로 고친 뒤 다시 편집하세요.", "操作系统": "운영 체제", "支持 .a2ab 加密备份和旧 .sql 文件;旧 SQL 不包含恢复密钥,跨机器导入仍需原机密钥。": "암호화된 .a2ab 백업과 기존 .sql을 지원합니다. 기존 SQL에는 복원 키가 없어 다른 기기로 가져올 때 원래 키가 필요합니다.", "支持 PNG、JPG、WebP,最大 2 MiB、4096 × 4096 像素;自动缩小至 512 像素以内,建议使用正方形图片。": "PNG, JPG, WebP를 지원하며 최대 2 MiB, 4096 × 4096 픽셀입니다. 512 픽셀 이내로 자동 축소합니다. 정사각형 이미지를 권장합니다.", "改动仍保存在本机,修复网络或凭据后下一次改动会自动重试,也可以手动点「上传到云端」。": "변경 사항은 로컬에 저장되어 있습니다. 네트워크나 자격 증명을 고치면 다음 변경 시 자동으로 다시 시도하며, '클라우드로 업로드'를 직접 눌러도 됩니다.", "改动仍保存在本机,系统会延长等待并自动重试;修复网络或凭据后,也可以手动点「上传到云端」。": "변경 사항은 이 기기에 저장되어 있습니다. 대기 시간을 늘려 자동으로 재시도합니다. 네트워크나 인증 정보를 수정한 뒤 「클라우드에 업로드」를 수동으로 선택할 수도 있습니다.", "改完立即生效,不用重启(下一个请求就用新模式)。降级是自动的临时状态,解除后本模式自己的提示词立刻恢复。": "수정 후 재시작 없이 즉시 적용됩니다(다음 요청부터 새 모드가 사용됩니다). 폴백은 자동으로 생기는 임시 상태이며, 해제하면 이 모드의 시스템 프롬프트가 즉시 복구됩니다.", "放大或缩小整个界面(文字与控件一起变),效果与浏览器 Ctrl +/- 相同:共 11 档,立即生效并记住。": "인터페이스 전체를 확대하거나 축소합니다(텍스트와 컨트롤이 함께 바뀜). 효과는 브라우저의 Ctrl +/-와 동일합니다. 총 11단계이며 즉시 적용되고 기억됩니다.", "放弃修改并刷新": "변경 취소 후 새로 고침", "数据": "데이터", "数据保留": "데이터 보관", "数据保留设置已刷新": "데이터 보관 설정을 새로 고쳤습니다", "数据存储": "데이터 저장", "数据库 schema": "데이터베이스 schema", "数据库不可用": "데이터베이스 사용 불가", "数据库与恢复密钥一起加密保存。密码不会保存在应用或备份中,忘记后无法恢复,请妥善保管。": "데이터베이스와 복원 키를 함께 암호화합니다. 비밀번호는 앱이나 백업에 저장되지 않습니다. 잊으면 복원할 수 없으니 안전하게 보관하세요.", "数据库主文件与 WAL 文件的总占用,与请求日志清理弹窗采用同一口径;清理后可压缩数据库回收空闲空间。": "데이터베이스 주 파일과 WAL 파일의 총 크기로, 요청 로그 정리 화면과 같은 계산 기준을 사용합니다. 정리 후 데이터베이스를 압축하여 사용하지 않는 공간을 회수할 수 있습니다.", "数据库文件": "데이터베이스 파일", "数据目录": "데이터 디렉터리", "数据统一保存在配置目录下的 agent2api.db;如需更换位置,请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "데이터는 구성 디렉터리의 agent2api.db에 통합 저장됩니다. 위치를 바꾸려면 환경 변수 AGENT2API_PROXY_HOME을 설정한 후 프로그램을 다시 시작하세요.", "整体替换": "통째로 교체", "整库备份 / 恢复": "전체 DB 백업 / 복원", "整次请求交给 {model} 直接回答,不再回到原模型。": "요청 전체를 {model}에 넘겨 원래 모델로 돌아가지 않고 바로 답합니다.", "新分组名": "새 그룹 이름", "新增 {added} 个、更新 {updated} 个{suffix}{note}": "{added}개 추가, {updated}개 업데이트{suffix}{note}", "新增脱敏规则": "마스킹 규칙 추가", "新增规则": "규칙 추가", "新安装和升级后默认关闭。先配置再开启,关闭后保留配置。": "신규 설치 및 업그레이드 후에는 기본적으로 꺼져 있습니다. 먼저 설정한 뒤 켜세요. 꺼도 설정은 유지됩니다.", "新密码": "새 비밀번호", "新密码不能与当前密码相同": "새 비밀번호는 현재 비밀번호와 달라야 합니다", "新密码至少 8 位": "비밀번호는 8자 이상이어야 합니다", "新建分组": "그룹 추가", "新建客户端分类": "새 클라이언트 분류", "无效或重复的标识请求头:{headers}": "잘못되었거나 중복된 식별 헤더: {headers}", "无法读取品牌设置": "브랜드 설정을 읽을 수 없습니다", "无法读取图片,请重新选择": "이미지를 읽을 수 없습니다. 다시 선택하세요", "日志与请求日志同时受保留天数和数量上限限制。日志默认 30 天、10000 条,各级别按比例保留;调试详情最多保留 3 天。请求日志默认 99999 天、1000000 条(100 万),超出后从最旧的记录开始清理,并同步删除对应原始正文。按天聚合默认 99999 天,只按天数保留,不受请求日志数量清理影响。天数可填 1–99999,数量可填 1–100000000。调小任一设置并确认后立即清理,且不可恢复。": "로그와 요청 로그에는 보관 일수와 건수 상한이 함께 적용됩니다. 로그의 기본값은 30일, 10000건이며 수준별로 비례 배분하여 보관합니다. 디버그 상세는 최대 3일 보관합니다. 요청 로그의 기본값은 99999일, 1000000건(100만 건)이며 초과분은 가장 오래된 기록부터 해당 원문과 함께 삭제합니다. 일별 집계의 기본값은 99999일로 일수만 적용되며 요청 로그 건수에 따른 삭제의 영향을 받지 않습니다. 일수는 1–99999, 건수는 1–100000000을 입력할 수 있습니다. 설정을 줄이고 확인하면 즉시 삭제되며 복구할 수 없습니다.", "日志保留数量上限": "로그 보관 건수 상한", "日志文件": "로그 파일", "日语": "일본어", "显示 {name}": "{name} 표시", "显示分组 {name}": "그룹 {name} 표시", "显示名称": "표시 이름", "显示名称最多 64 个字符": "표시 이름은 최대 64자입니다", "显示模式": "테마", "显示这一组": "이 그룹 표시", "暂无可编辑的提供商设置": "편집할 수 있는 제공자 설정이 없습니다", "暂无自定义规则,正在使用内置识别。也可以从请求详情直接添加规则。": "사용자 규칙이 없어 내장 식별을 사용 중입니다. 요청 상세에서도 규칙을 추가할 수 있습니다.", "暂未获取到本机访问地址,请使用其他设备能连接到的本机 IP 与网关端口。": "아직 이 기기의 접속 주소를 가져오지 못했습니다. 다른 기기에서 연결할 수 있는 이 기기의 IP와 게이트웨이 포트를 사용하세요.", "更新": "업데이트", "更新出网线路": "업데이트 출구 경로", "更新通道": "업데이트 채널", "替换": "교체", "替换 = 客户端 system / developer 消息全部删掉,换成网关的提示词;追加 = 保留客户端内容,只在开头 system 块之后多插一条。两者都只改发给上游的副本,客户端看到的响应不变。": "교체 = 클라이언트의 system / developer 메시지를 모두 삭제하고 게이트웨이 시스템 프롬프트로 바꿉니다. 추가 = 클라이언트 내용을 유지하고 맨 앞 system 블록 뒤에 한 건만 더 삽입합니다. 둘 다 업스트림으로 보내는 사본만 바꾸며 클라이언트가 받는 응답은 달라지지 않습니다.", "替换为网关提示词": "게이트웨이 시스템 프롬프트로 교체", "替换内容": "치환 내용", "替换内容最多 {max} 个字符": "치환 내용은 최대 {max}자까지 입력할 수 있습니다", "替换前会自动把当前数据备份到配置目录的 backups/ 文件夹。": "교체 직전에 현재 데이터를 설정 디렉터리의 backups/ 폴더에 자동 백업합니다.", "替换并恢复": "교체하고 복원", "最多 64 个字符,留空恢复为 Agent2API。": "최대 64자입니다. 비워 두면 Agent2API로 복원됩니다.", "最小自动上传间隔": "최소 자동 업로드 간격", "最近 {window} 条请求中,{scanned} 条有识别依据,{matched} 条符合条件,{applied} 条会采用本规则。": "최근 요청 {window}개 중 {scanned}개에 식별 근거가 있고, {matched}개가 조건과 일치하며, {applied}개에 이 규칙이 적용됩니다.", "有未保存的修改": "저장되지 않은 변경 사항이 있습니다", "有未保存的改动:保存后才能同步(测试连接不受影响)。": "저장되지 않은 변경 사항이 있습니다. 동기화하려면 먼저 저장하세요(연결 테스트는 가능).", "有近期套餐池请求时读取库存状态的间隔,默认 2500 毫秒,可填 1000–30000。没有近期请求时降低读取频率,轮询不会发起验证码。": "최근 Start Plan 요청이 있을 때 재고 상태 조회 간격입니다. 기본값은 2500밀리초이며 1000–30000 범위입니다. 최근 요청이 없으면 조회 빈도를 낮추며 폴링으로 인증을 시작하지 않습니다.", "服务商": "공급자", "服务器地址": "서버 주소", "服务端密钥加密保存,不会返回浏览器;切回 ALTCHA 后会保留,方便再次启用。": "비밀 키는 암호화하여 저장하며 브라우저로 반환하지 않습니다. ALTCHA로 전환해도 보관되므로 나중에 다시 활성화할 수 있습니다.", "服务端密钥(Secret Key)": "비밀 키(Secret Key)", "期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "이 모드 동안 자체 프롬프트는 전송되지 않습니다. 프롬프트를 고친 뒤 즉시 해제할 수 있습니다.", "未保存": "저장되지 않음", "未匹配已知客户端": "알려진 클라이언트와 일치하지 않음", "未单独配置:模式、提示词文件与正文都跟随上面的全局配置(当前「{mode}」)。": "개별 설정 없음: 모드, 시스템 프롬프트 파일과 본문 모두 위의 전역 설정을 따릅니다(현재 「{mode}」).", "未启用": "사용 안 함", "未开启轻量模式:关窗仅隐藏窗口,界面进程常驻内存,随时打开不等待": "경량 모드 꺼짐: 창을 닫아도 창만 숨겨지고 인터페이스 프로세스가 메모리에 상주하여 언제든 기다림 없이 열립니다", "未开启,developer 角色消息会原样发往上游,不认识该角色的上游会报错(400)。": "꺼짐: developer 역할 메시지가 그대로 업스트림으로 전송되며, 이 역할을 모르는 업스트림은 오류(400)를 반환합니다.", "未开启,客户端 system 模板会原样发往上游,可能被内容审核误拦(400)。": "꺼져 있어 클라이언트 system 템플릿이 그대로 업스트림으로 전송되어 콘텐츠 검열에 오탐으로 차단될 수 있습니다(400).", "未开启,浏览器跨域无法直连网关。": "꺼져 있어 브라우저에서 CORS로 게이트웨이에 직접 연결할 수 없습니다.", "未开启,转发时不保存任何原始报文。": "꺼져 있어 전달 시 원본 메시지를 일절 저장하지 않습니다.", "未开启:网关只监听 127.0.0.1,仅本机可以访问。": "꺼짐: 게이트웨이가 127.0.0.1만 수신하여 로컬에서만 접근할 수 있습니다.", "未注册": "미등록", "未注册闸门": "미등록 게이트", "未知原因": "알 수 없는 사유", "未知来源": "알 수 없는 출처", "未知设备": "알 수 없는 기기", "未知账号": "알 수 없는 계정", "未能读取 Cline 伪装头设置,请稍后重试": "Cline 위장 헤더 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요", "未能读取 models.dev 元数据状态,请稍后重试": "models.dev 메타데이터 상태를 읽지 못했습니다. 잠시 후 다시 시도하세요.", "未能读取云同步设置,请稍后重试。": "클라우드 동기화 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요.", "未能读取保存后的指纹脱敏设置": "저장된 지문 마스킹 설정을 읽지 못했습니다", "未能读取开发者角色兼容设置,请稍后重试": "개발자 역할 호환 설정을 읽지 못했습니다. 잠시 후 다시 시도해 주세요", "未能读取指纹脱敏设置,请稍后重试": "핑거프린트 마스킹 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요", "未能读取机器人校验设置": "봇 인증 설정을 읽지 못했습니다", "未能读取第三方模型回答完自动折叠过程设置,请稍后重试": "타사 모델의 답변 후 과정 자동 접기 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요", "未能读取系统提示词设置,请稍后重试": "시스템 프롬프트 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요", "未能读取网关跨域访问设置,请稍后重试": "게이트웨이 CORS 접근 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요", "未能读取网络访问设置,请稍后重试": "네트워크 접근 설정을 불러오지 못했습니다. 잠시 후 다시 시도하세요.", "未能读取调试模式设置,请稍后重试": "디버그 모드 설정을 읽지 못했습니다. 잠시 후 다시 시도하세요", "未能读取账户信息,请稍后重试": "계정 정보를 읽지 못했습니다. 잠시 후 다시 시도하세요", "未采用本规则,请检查开关、来源声明或规则顺序": "이 규칙이 적용되지 않았습니다. 스위치, 출처 선언 또는 규칙 순서를 확인하세요.", "本地账号、配置、签到与余额记录变化后自动上传(合并 1 秒内的连续改动,最长 10 秒传一次;内容没变时不发请求)。": "로컬 계정, 설정, 체크인, 잔액 기록이 변경되면 자동 업로드합니다(1초 이내 연속 변경은 병합, 최대 10초에 한 번. 내용이 그대로면 요청을 보내지 않습니다).", "本机 API 地址": "이 기기의 API 주소", "本机 APK 版本": "이 기기 APK 버전", "本机全部数据会被备份整体替换,恢复前自动保留安全备份,完成后需要重新登录管理面板。本机已有密钥不会被覆盖。": "로컬 데이터베이스의 모든 데이터가 백업으로 교체됩니다. 먼저 안전 백업을 보관하고 완료 후 다시 로그인해야 합니다. 기존 로컬 키는 덮어쓰지 않습니다.", "本机应用版本": "이 기기의 앱 버전", "本机界面版本": "이 기기 UI 버전", "本机的业务数据(账号、配置、Agent 配置、代理池 / 订阅、签到与余额记录)将上传并": "이 컴퓨터의 업무 데이터(계정, 설정, Agent 설정, 프록시 풀/구독, 체크인 및 잔액 기록)를 업로드하여", "本机的全部数据(账号、网关配置、日志统计与桌面设置)将被所选备份文件": "이 PC의 모든 데이터(계정, 게이트웨이 설정, 로그 통계, 데스크톱 설정)는 선택한 백업 파일로", "本机的账号、网关配置、Agent 配置、代理池 / 订阅、签到与余额记录将被远端快照": "이 컴퓨터의 계정, 게이트웨이 설정, Agent 설정, 프록시 풀/구독, 체크인 및 잔액 기록이 원격 스냅샷으로", "本次无需刷新": "이번에는 새로고침이 필요하지 않습니다", "本软件不提供任何担保,可按 AGPL-3.0 修改与分发;通过网络提供修改版服务时须向用户提供对应源码。": "이 소프트웨어는 보증 없이 제공되며 AGPL-3.0에 따라 수정·배포할 수 있습니다. 수정된 네트워크 서비스는 사용자에게 대응 소스를 제공해야 합니다.", "本项目的 AGPL-3.0 许可不替代这些第三方许可。名称与标识的商标权归各自权利人所有。": "이 프로젝트의 AGPL-3.0 라이선스는 이러한 타사 라이선스를 대체하지 않습니다. 이름과 로고의 상표권은 각 권리자에게 있습니다.", "机器人校验": "로봇 검증", "机器人校验设置已保存": "봇 인증 설정을 저장했습니다", "条数": "건수", "来源声明当前关闭,这条规则不会生效。请先在客户端识别设置中开启。": "출처 선언이 꺼져 있어 이 규칙은 적용되지 않습니다. 클라이언트 식별 설정에서 먼저 켜세요.", "来源声明无效或未登记,本次已忽略。": "출처 선언이 잘못되었거나 등록되지 않아 무시했습니다.", "来源声明未启用,本次已忽略。": "출처 선언이 꺼져 있어 무시했습니다.", "来源版本": "출처 리비전", "来源设备:{device}": "원본 기기: {device}", "来自 {device},生成于 {time}": "{device}에서 {time}에 생성", "架构": "아키텍처", "查看内置客户端({n})": "내장 클라이언트 보기 ({n})", "查询管理员状态失败:{message}": "관리자 상태 조회 실패: {message}", "校验身份:这三段必须各自成块排在最前(实测:三段并成一段会被回 405 / 3012)。因此这里按段编辑,不能合成一段。改过的段以你的文本为准,没改的段继续用官方原文;清空某一段 = 那一段恢复官方原文。": "를 기준으로 신원을 검증합니다: 이 세 단락은 각각 별도 블록으로 맨 앞에 있어야 합니다(실측: 세 단락을 하나로 합치면 405 / 3012가 반환됩니다). 따라서 단락별로 편집하며 하나로 합칠 수 없습니다. 수정한 단락은 입력한 텍스트가 우선하고, 수정하지 않은 단락은 계속 공식 원문을 사용합니다. 단락을 비우면 그 단락은 공식 원문으로 복원됩니다.", "桌面端": "데스크톱 앱", "桌面端登录 / 注册验证": "데스크톱 로그인 / 가입 인증", "桌面端:登录 / 注册需要 ALTCHA 人机验证": "데스크톱: 로그인 / 등록에 ALTCHA 인증 필요", "桌面端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "데스크톱: 로그인 / 등록에 ALTCHA 인증 필요(현재 사용 중)", "桌面运行时不可用,暂时无法保存": "데스크톱 런타임을 사용할 수 없어 지금은 저장할 수 없습니다", "档案": "프로필", "检测中…": "확인 중…", "概览": "개요", "模型不能直接看图时,按你选择的方式处理。原生支持图片的请求直接转发,不增加识图调用。": "모델이 이미지를 직접 읽을 수 없을 때 선택한 방식으로 처리합니다. 이미지 지원 모델의 요청은 추가 호출 없이 그대로 전달됩니다.", "模型单独配置": "모델별 설정", "模型目录没写明是否支持图片时按这里处理。": "모델 목록에 이미지 지원 여부가 없을 때 여기 설정을 따릅니다.", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。下面两块分别选好「哪些模型」和「用哪只模型」即可;没配到的模型、以及本来就能看图的模型,一律原样放行。这里的改动立即生效,不需要保存。": "이미지를 읽지 못하는 모델을 다루는 방법은 두 가지뿐입니다. 다른 모델이 대신 읽게 하거나, 요청 전체를 이미지를 읽을 수 있는 모델에 넘기는 것입니다. 아래 두 블록에서 \"어떤 모델\"과 \"어느 모델로\"를 고르면 됩니다. 여기에 포함되지 않은 모델과 원래 이미지를 읽을 수 있는 모델은 그대로 통과합니다. 여기서의 변경은 즉시 적용되며 저장이 필요 없습니다.", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。没配到的模型、以及本来就能看图的模型,一律原样放行;每个请求只用其中一种方式,不会两种串着做,处理失败也不会改走另一种。改动立即生效,不需要保存。": "이미지를 읽지 못하는 모델을 다루는 방법은 두 가지뿐입니다. 다른 모델이 대신 읽게 하거나, 요청 전체를 이미지를 읽을 수 있는 모델에 넘기는 것입니다. 여기에 포함되지 않은 모델과 원래 이미지를 읽을 수 있는 모델은 그대로 통과합니다. 요청마다 두 방식 중 하나만 사용하며, 두 방식을 이어서 실행하지 않고 실패해도 다른 방식으로 넘어가지 않습니다. 여기서의 변경은 즉시 적용되며 저장이 필요 없습니다.", "模型请求是否需要验证码由 ZCode 上游配置决定,领取验证与模型请求免验证分别处理。后台只检查配置和库存,不自动运行验证码或弹出拼图;需要验证时,在账号的「套餐明细」中点击「开始验证」。验证令牌一次性使用,短时间内过期,失败或取消后不会自动重试。": "모델 요청의 인증 필요 여부는 ZCode 업스트림 설정으로 결정하며 플랜 수령 인증과 별도로 처리합니다. 백그라운드는 설정과 재고만 확인하며 인증을 실행하거나 퍼즐을 자동으로 띄우지 않습니다. 필요하면 계정의 「플랜 상세」에서 「인증 시작」을 누르세요. 토큰은 한 번만 사용되며 짧은 시간 후 만료되고 실패나 취소 후 자동 재시도하지 않습니다.", "模式": "모드", "模式改为「{mode}」": "모드를 「{mode}」(으)로 변경", "次": "회", "次日 00:00": "다음 날 00:00", "正则表达式": "정규식", "正在保存上游原始报文:": "업스트림 원본 메시지를 저장하는 중: ", "正在修改…": "변경 중…", "正在剥离出站请求里的审核指纹:表头键值整段删除,模板句最小改写。": "아웃바운드 요청의 검열 핑거프린트를 제거하는 중: 헤더 키-값은 통째로 삭제하고 템플릿 문구는 최소한으로 재작성합니다.", "正在安装…": "설치 중…", "正在应答跨源请求:浏览器跨域请求可直连 /v1/*。": "교차 출처 요청에 응답 중: 브라우저의 CORS 요청이 /v1/*에 직접 연결될 수 있습니다.", "正在归一角色:developer 角色消息转发前改写为 system。": "역할 정규화 중: developer 역할 메시지는 전달 전에 system으로 수정됩니다.", "正在注册…": "등록 중…", "正在联网更新": "온라인으로 갱신 중", "正在读取提供商设置…": "제공자 설정을 불러오는 중…", "正式版": "정식 버전", "每个请求只会用到其中一种方式,不会两种串着做;处理失败也不会改走另一种。配了哪只视觉模型,那次请求的图片就会交给它。": "요청마다 두 방식 중 하나만 사용합니다. 두 방식을 이어서 실행하지 않고, 실패해도 다른 방식으로 넘어가지 않습니다. 설정한 비전 모델에 해당 요청의 이미지가 전달됩니다.", "每条请求轮换到下一个可用账号;新会话交给当前最闲的那位。适合想把手里的号摊开用、不让某一个一直扛。": "요청마다 다음 사용 가능한 계정으로 순환하고, 새 세션은 현재 한가한 계정에 맡깁니다. 보유 계정을 고르게 쓰고 특정 계정에 부하가 몰리지 않게 하고 싶을 때 적합합니다.", "每条请求都重新按策略选路 —— 行为与「关闭」一致,仅保留会话识别的记录。": "요청마다 전략에 따라 다시 선택합니다 — 동작은 \"끄기\"와 같으며 세션 기록만 유지됩니다.", "每次等待的时长,默认 0 = 跟随上游建议(实测 9~30 秒,上游没给建议时用 15 秒)。可填 0–120 秒强制一个固定时长。": "대기 1회의 길이입니다. 기본값 0 = 업스트림 권장 시간을 따릅니다(실측 9~30초, 업스트림이 권장 시간을 주지 않으면 15초 사용). 0–120초를 입력하면 고정 시간으로 강제할 수 있습니다.", "每行一个域名,不填协议、端口或路径;与 Cloudflare 中的配置一致,服务端按完整域名匹配。手机 App 使用所连接网关的域名。": "프로토콜, 포트, 경로 없이 한 줄에 호스트 이름 하나씩 입력하세요. Cloudflare 설정과 일치해야 하며 서버는 전체 호스트 이름이 정확히 일치하는지 확인합니다. 모바일 앱은 연결된 게이트웨이의 호스트 이름을 사용합니다.", "毫秒": "밀리초", "沟通方式 / 上下文管理 + Environment 段。": "커뮤니케이션 방식 / 컨텍스트 관리 + Environment 단락.", "没有可导出的账号": "내보낼 계정이 없습니다", "没有可用视觉模型时": "사용 가능한 비전 모델이 없을 때", "没有已确认支持图片的模型,请先在模型管理中确认。": "이미지 지원이 확인된 모델이 없습니다. 먼저 모델 관리에서 확인하세요.", "没能读到「{label}」的当前值,改为 {count} 条可能会删除超出的历史数据。": "「{label}」의 현재 값을 읽지 못했습니다. {count}건으로 변경하면 초과한 과거 데이터가 삭제될 수 있습니다.", "没能读到「{label}」的当前值,改为 {days} 天可能会删除超出的历史数据。": "「{label}」의 현재 값을 읽지 못했습니다. {days}일로 변경하면 초과된 과거 데이터가 삭제될 수 있습니다.", "沿用对应方式的视觉模型配置,不额外维护一份模型列表。": "해당 방식의 비전 모델 설정을 사용하며 별도의 모델 목록은 관리하지 않습니다.", "沿用工具服务的视觉分析模型": "도구 서비스의 시각 분석 모델 재사용", "沿用工具服务的视觉分析模型(未配置)": "도구 서비스의 비전 모델 사용(미설정)", "注册并开启": "등록하고 켜기", "注册管理员账号": "관리자 계정 등록", "注意:这一家的「网关自带」开关现在是关的,改过的正文要等开关打开才生效。": "주의: 이 제공자의 「게이트웨이 내장」 스위치가 현재 꺼져 있습니다. 수정한 본문은 스위치를 켠 후에야 적용됩니다.", "流式响应相邻数据之间允许的最大空闲时间(秒),收到新数据后重新计时,默认 300 秒,范围 1~3600。": "스트리밍 응답에서 인접한 데이터 사이에 허용되는 최대 유휴 시간(초). 새 데이터가 오면 다시 시간을 재며, 기본 300초, 범위 1~3600.", "流式响应空闲超时": "스트리밍 응답 유휴 타임아웃", "测试连接": "연결 테스트", "浏览器 / PWA": "브라우저 / PWA", "浏览器只在 https 或 localhost 下提供离线缓存;局域网 http 访问不影响正常使用": "브라우저는 https 또는 localhost에서만 오프라인 캐시를 제공합니다. LAN의 http 접속에서도 평소대로 사용할 수 있습니다.", "浏览器在本地完成计算,不需要第三方密钥,也不依赖外部验证服务。": "브라우저에서 로컬로 계산합니다. 타사 키나 외부 인증 서비스가 필요하지 않습니다.", "浏览器标签页": "브라우저 탭", "浏览器面板": "브라우저 패널", "消息角色": "메시지 역할", "添加备选模型": "예비 모델 추가", "添加提供商": "제공자 추가", "添加提供商…": "제공자 추가…", "添加自定义头": "사용자 지정 헤더 추가", "添加要单独配置的提供商": "개별 설정할 제공자 추가", "清除本机凭证": "이 기기의 자격 증명 삭제", "清除这里的正文": "여기의 본문 지우기", "源代码": "소스 코드", "点下面的入口会用系统默认浏览器打开 GitHub 的对应表单(需要 GitHub 账号,模板已预设好,填完直接提交即可)。": "아래 항목을 클릭하면 시스템 기본 브라우저에서 GitHub의 해당 양식이 열립니다(GitHub 계정 필요, 템플릿이 미리 채워져 있으므로 작성 후 바로 제출하면 됩니다).", "点击重命名": "클릭하여 이름 변경", "点此添加或切换服务器": "눌러서 서버 추가 또는 전환", "点此添加服务器": "눌러서 서버 추가", "版本": "버전", "版本信息": "버전 정보", "版本信息 · 所连网关环境": "버전 정보 · 연결된 게이트웨이", "版权声明": "저작권 고지", "状态码 {code} 已在名单里": "상태 코드 {code}는 이미 목록에 있습니다", "状态码必须是 {min}–{max} 的整数(收到: {text})": "상태 코드는 {min}–{max} 범위의 정수여야 합니다(입력값: {text})", "环境": "환경", "生成时间:{time}": "생성 시간: {time}", "生效顺序:有效的来源声明优先,然后按顺序匹配自定义规则,最后使用内置规则。中转丢失原始标识时,无法自动推断背后的软件。": "우선순위는 유효한 출처 선언, 사용자 규칙 순서, 내장 규칙 순입니다. 중계 과정에서 원래 식별 정보가 사라지면 원래 소프트웨어를 자동으로 추론할 수 없습니다.", "用 models.dev 补齐上游没声明的模型能力与思考档位(联网刷新,内嵌快照始终生效)": "업스트림이 선언하지 않은 모델 능력과 추론 레벨을 models.dev로 채웁니다(온라인 새로고침, 내장 스냅샷은 항상 적용)", "用于加密上云的账号密钥。请自己记牢 —— 它不保存到云端,换机下载时必须输入同一个密码,否则账号数据无法解密。": "클라우드로 보내는 계정 키를 암호화하는 데 사용합니다. 반드시 기억하세요 — 클라우드에 저장되지 않으며, 다른 컴퓨터에서 복원할 때 같은 비밀번호를 입력해야 계정 데이터를 복호화할 수 있습니다.", "用哪只模型识图": "이미지를 읽을 모델", "用浏览器菜单里的「添加到主屏幕」把这一页装成 App:全屏打开、没有地址栏,和原生应用一样。": "브라우저 메뉴의 「홈 화면에 추가」로 이 페이지를 앱처럼 설치할 수 있습니다. 전체 화면, 주소 표시줄 없이 네이티브 앱과 같습니다.", "由 Cloudflare 提供验证,需要浏览器与网关均能连接 Cloudflare。验证失败或服务不可用时不会自动放行。": "Cloudflare에서 인증을 제공합니다. 브라우저와 게이트웨이 모두 Cloudflare에 연결할 수 있어야 합니다. 인증 실패나 서비스 장애 시 자동으로 접근을 허용하지 않습니다.", "由 {source} 覆盖,手动设置暂不生效": "{source}가 우선 적용되어 수동 설정은 현재 적용되지 않습니다", "界面缩放": "인터페이스 줌", "界面缩放比例": "인터페이스 줌 비율", "界面语言": "인터페이스 언어", "界面语言。可选简体中文、繁體中文、English、日本語、한국어、Português (Brasil),或「跟随系统」(按浏览器 / 系统的语言列表自动选)。切换后整页立即刷新;该偏好只存在本机(localStorage),不影响账号、密钥与转发。": "인터페이스 언어입니다. 중국어 간체, 중국어 번체, English, 日本語, 한국어, Português (Brasil) 또는 「시스템」(브라우저 / 시스템 언어 목록에 따라 자동 선택)을 선택할 수 있습니다. 전환하면 페이지 전체가 즉시 새로 고침됩니다. 이 설정은 이 컴퓨터에만 저장되며(localStorage) 계정, 키, 포워딩에는 영향을 주지 않습니다.", "界面语言只保存在本机(localStorage)。切换后整页立即刷新,不影响账号、密钥与转发。": "인터페이스 언어는 이 컴퓨터에만 저장됩니다(localStorage). 전환하면 페이지 전체가 즉시 새로 고침되며 계정, 키, 포워딩에는 영향을 주지 않습니다.", "界面里编辑的正文": "화면에서 편집한 본문", "留空 = 用内置默认提示词": "비워 두면 = 내장 기본 시스템 프롬프트 사용", "留空使用 AWS 官方地址": "비워 두면 AWS 공식 주소 사용", "留空使用默认": "비워 두면 기본값 사용", "留空表示删除匹配内容;替换内容按原文写入,$ 不作为捕获组引用。": "비우면 일치한 내용을 삭제합니다. 치환 내용은 그대로 삽입하며 $를 캡처 그룹 참조로 처리하지 않습니다.", "登录 / 注册需要通过 ALTCHA 人机验证(工作量证明)": "로그인 / 가입에는 ALTCHA 인간 검증(작업 증명)이 필요합니다", "登录 / 账号切换 / 429 切换等系统事件,可填 1–3650 天。": "로그인 / 계정 전환 / 429 전환 등 시스템 이벤트이며, 1–3650일을 입력할 수 있습니다.", "登录 / 账号切换 / 429 切换等系统事件,可填 1–99999 天。": "로그인 / 계정 전환 / 429 전환 등 시스템 이벤트. 1~99999일까지 입력할 수 있습니다.", "登录 Agent2API": "Agent2API 로그인", "登录 {name}": "{name}에 로그인", "登录人机验证": "로그인 CAPTCHA", "百分比类读数(如 OpenCode Go、Antigravity)不能相加,组头显示的是组内最低剩余比例。": "백분율 읽기(예: OpenCode Go, Antigravity)는 합산할 수 없으므로 그룹 띠에는 그룹 내 가장 낮은 잔여 비율이 표시됩니다.", "监听地址": "수신 주소", "目前展示仓库已登记的图标来源许可,不代表完整的第三方依赖清单。": "현재 목록에는 저장소에 등록된 아이콘 출처의 라이선스만 표시됩니다. 전체 타사 의존성 목록은 아닙니다.", "目标路径:{path}": "대상 경로: {path}", "直接按上面的设置兼容": "위 설정대로 바로 호환 처리", "直接按当前方式兼容": "현재 방식으로 바로 호환 처리", "知道了": "확인", "确定": "확인", "确定后加入当前草稿,点击「保存设置」才会生效。": "확인하면 현재 초안에 추가합니다. 설정 저장을 눌러야 적용됩니다.", "确定继续?": "계속할까요?", "确认上传": "업로드 확인", "确认图片处理授权": "이미지 처리 권한 확인", "确认备份密码": "백업 비밀번호 확인", "确认并保存": "확인 후 저장", "确认新密码": "새 비밀번호 확인", "确认缩减数据保留": "데이터 보관 축소 확인", "确认缩短保留天数": "보관 일수 단축 확인", "社区与支持": "커뮤니티 및 지원", "离线缓存未启用": "오프라인 캐시가 꺼져 있습니다", "积分合计只统计当前筛选出来的账号": "포인트 합계를 현재 필터에 표시된 계정만으로 계산", "移入「{name}」": "\"{name}\"(으)로 이동", "程序路径": "실행 파일 경로", "空 = 不要这一份,回落提示词文件 / 内置默认提示词。": "비우면 = 이 본문을 사용하지 않고 시스템 프롬프트 파일 / 내장 기본 시스템 프롬프트로 폴백합니다.", "空分组 · 点组头的 + 把菜单移进来": "빈 그룹 · 머리의 +로 메뉴를 가져오세요", "立即解除": "즉시 해제", "站点密钥(Site Key)": "사이트 키(Site Key)", "第一段": "첫 번째 단락", "第一段(身份句)": "첫 번째 단락(아이덴티티 문장)", "第三方应用密码": "타사 앱 비밀번호", "第三方开源许可": "타사 오픈 소스 라이선스", "第三方模型回答完自动折叠过程": "타사 모델의 답변 후 과정 자동 접기", "第三方模型回答完自动折叠过程设置已刷新": "타사 모델의 답변 후 과정 자동 접기 설정을 새로 고쳤습니다", "第三段": "세 번째 단락", "第三段(动态段)": "세 번째 단락(동적 단락)", "第二段": "두 번째 단락", "第二段(稳定段)": "두 번째 단락(고정 단락)", "等待响应超时": "응답 대기 타임아웃", "等待期间请求日志的状态列会显示「排队中」阶段,详情弹窗的「内部重试」里能逐次看到等待时长;等待用尽后返回 HTTP 503(不是 401/429:既不会刷新凭证,也不会把账号标成限额)。": "대기 중에는 요청 로그의 상태 열에 「큐잉 중」 단계가 표시되고, 상세 팝업의 「내부 재시도」에서 회차별 대기 시간을 볼 수 있습니다. 대기가 소진되면 HTTP 503을 반환합니다(401/429가 아닙니다: 자격 증명을 갱신하지도, 계정을 할당량 초과로 표시하지도 않습니다).", "等比放大或缩小整个界面(文字、控件、间距一起变),效果与浏览器按 Ctrl +/- 相同:80%–130%、5% 一档。窗口本身不缩放,变的是页面内容的显示比例,设置立即生效并记住,下次启动直接按这个比例打开。放得越大可视范围越小,窗口较窄或表格较宽时不建议调得太大。": "인터페이스 전체를 비율에 맞춰 확대하거나 축소합니다(텍스트, 컨트롤, 간격이 함께 바뀜). 효과는 브라우저에서 Ctrl +/-를 누른 것과 같습니다: 80%–130%, 5% 단위. 창 자체는 확대되지 않고 페이지 내용의 표시 비율만 바뀝니다. 설정은 즉시 적용되고 기억되어 다음 시작 시 이 비율로 열립니다. 크게 할수록 보이는 범위가 좁아지므로 창이 좁거나 표가 넓을 때는 너무 크게 하지 않는 것이 좋습니다.", "简体中文": "중국어 간체", "管理员已注册": "관리자 등록됨", "管理员账号": "관리자 계정", "管理插件": "플러그인 관리", "精确文本": "정확한 텍스트", "系统提示词模式": "시스템 프롬프트 모드", "系统提示词设置已刷新": "시스템 프롬프트 설정을 새로 고쳤습니다", "累计请求": "누적 요청", "繁体中文": "중국어 번체", "约 {n} 字符": "약 {n}자", "结构": "구조", "给 Codex 的响应补阶段标记,回答完后像官方模型一样把推理与命令过程折叠起来": "Codex 응답에 단계 표시를 보강해 답변 후 공식 모델처럼 추론과 명령 과정을 접기", "继续并清理": "계속하고 정리", "编辑提示词正文 · {label}": "시스템 프롬프트 본문 편집 · {label}", "编辑提示词正文 · 全局": "시스템 프롬프트 본문 편집 · 전역", "编辑正文": "본문 편집", "编辑网关自带提示词 · {label}": "게이트웨이 내장 시스템 프롬프트 편집 · {label}", "编辑脱敏规则": "마스킹 규칙 편집", "编辑识别规则": "식별 규칙 편집", "缩放后重新存成 JPEG 时用的质量。默认 80,可填 40–95;数值越小体积越小、画质越差。": "축소한 이미지를 JPEG로 다시 저장할 때 쓰는 품질입니다. 기본 80, 40~95까지 지정할 수 있으며, 낮을수록 용량은 줄지만 화질이 떨어집니다.", "缩放比例": "줌 비율", "网关": "게이트웨이", "网关 Key 数量": "게이트웨이 키 수", "网关尚未就绪": "게이트웨이가 아직 준비되지 않았습니다", "网关自带": "게이트웨이 내장", "网关跨域访问已开启": "게이트웨이 CORS 접근이 켜졌습니다", "网关跨域访问设置已刷新": "게이트웨이 CORS 접근 설정을 새로 고쳤습니다", "网关跨域访问(CORS)": "게이트웨이 CORS 접근", "网关面(/v1/*)默认不应答浏览器跨源请求:页面直连会被预检拦下,只报「无法连接 API」。注意来源是 * —— 未配「网关 Key」时任何网页都能借本机网关打上游,故默认关闭;只给自己用的话,让页面与网关同源(本地反代 /v1)更稳妥。面板接口(/api/*)不受影响。": "게이트웨이 API(/v1/*)는 기본적으로 브라우저의 교차 출처 요청에 응답하지 않습니다. 페이지에서 직접 연결하면 프리플라이트에 막히고 「API에 연결할 수 없음」만 표시됩니다. 출처가 *이므로 「게이트웨이 키」를 설정하지 않으면 어떤 웹 페이지든 로컬 게이트웨이를 거쳐 업스트림을 호출할 수 있기에 기본적으로 꺼져 있습니다. 혼자만 사용한다면 페이지와 게이트웨이를 같은 출처로 두는 편(로컬 리버스 프록시 /v1)이 더 안전합니다. 패널 인터페이스(/api/*)는 영향을 받지 않습니다.", "网络访问": "네트워크 접근", "网页端": "웹", "网页端登录 / 注册验证": "웹 로그인 / 가입 인증", "网页端的界面缩放由浏览器自己控制(Ctrl + / Ctrl -,或浏览器菜单里的缩放),此项不可调。": "웹 버전의 인터페이스 줌은 브라우저가 직접 제어하며(Ctrl + / Ctrl -, 또는 브라우저 메뉴의 줌), 이 항목은 조정할 수 없습니다.", "网页端:登录 / 注册需要 ALTCHA 人机验证": "웹: 로그인 / 등록에 ALTCHA 인증 필요", "网页端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "웹: 로그인 / 등록에 ALTCHA 인증 필요(현재 사용 중)", "网页管理地址": "웹 관리 주소", "群晖 NAS": "Synology NAS", "群晖需在「控制面板 → 应用程序门户 → WebDAV」里启用服务,端口默认 5005(HTTP)/ 5006(HTTPS)。": "Synology는 '제어판 → 응용 프로그램 포털 → WebDAV'에서 서비스를 활성화하세요. 기본 포트는 5005(HTTP)/5006(HTTPS)입니다.", "脱敏词表": "마스킹 규칙", "腾讯云 COS": "텐센트 클라우드 COS", "自动同步": "자동 동기화", "自动同步上次失败": "마지막 자동 동기화 실패", "自动续写": "자동 이어쓰기", "自定义 User-Agent": "사용자 정의 User-Agent", "自定义 · {name}": "사용자 지정 · {name}", "自定义头匹配规则": "사용자 지정 헤더 규칙", "自定义客户端分类": "사용자 지정 클라이언트 분류", "自定义客户端数量已达上限": "사용자 지정 클라이언트 수가 한도에 도달함", "自定义提供商 {id}": "커스텀 제공자 {id}", "自定义网站和应用界面中显示的名称与 Logo。": "웹사이트와 앱 화면에 표시할 이름과 로고를 변경합니다.", "自定义识别规则": "사용자 지정 식별 규칙", "自愈保护": "자가 복구 보호", "至少 12 位": "12자 이상", "至少 8 位,换机下载时需要": "8자 이상, 다른 컴퓨터에서 복원할 때 필요", "至少要保留一个分组": "그룹은 최소 하나 남아야 합니다", "英语": "영어", "范围 5–120 秒,并受原请求时限约束。": "범위 5–120초이며 원래 요청 제한 시간에도 묶입니다.", "范围为 5–120 秒,并受原请求时限约束。图片过大、格式错误或下载失败不会被当作模型不支持图片。": "5~120초 범위이며 원래 요청의 제한 시간도 적용됩니다. 이미지 크기 초과, 형식 오류 또는 다운로드 실패를 이미지 미지원으로 판단하지 않습니다.", "被更高优先级覆盖": "더 높은 우선순위가 적용됨", "装上{size}的官方身份提示词": "공식 아이덴티티 프롬프트 설치({size})", "装成 App 后从桌面图标直接进入:全屏打开、没有地址栏。": "앱으로 설치하면 홈 화면 아이콘에서 바로 열립니다. 전체 화면, 주소 표시줄 없음.", "覆盖": "덮어쓰기", "规则 / 匹配方式": "규칙 / 일치 방식", "规则可以增删改、启停和调整顺序;替换内容留空表示删除匹配内容。恢复默认只重置词表,不改开关和提供商范围。": "규칙 추가, 편집, 삭제, 활성화, 비활성화 및 순서 변경이 가능합니다. 치환 내용을 비우면 일치 부분을 삭제합니다. 기본값 복원은 규칙만 초기화하고 스위치와 제공자 범위는 변경하지 않습니다.", "规则名称": "규칙 이름", "规则名称不能为空,且最多 {max} 个字符": "규칙 이름은 필수이며 최대 {max}자까지 입력할 수 있습니다", "规则已保存,对后续请求生效;当前历史记录未修改。": "규칙이 저장되어 이후 요청에 적용됩니다. 현재 과거 기록은 변경되지 않았습니다.", "规则忽略大小写,只影响新请求的日志与统计,不改变模型选择或权限。": "규칙은 대소문자를 구분하지 않으며 새 요청의 로그와 통계에만 적용됩니다. 모델 선택이나 권한은 바뀌지 않습니다.", "规则编号:{id}": "규칙 ID: {id}", "视觉模型": "비전 모델", "视觉模型先识读图片,再由原模型分析和回答。": "비전 모델이 먼저 이미지를 읽고 원래 모델이 분석하여 답변합니다.", "视觉模型来源": "비전 모델 출처", "视觉模型的思考等级": "비전 모델의 사고 수준", "视觉模型直接回答": "비전 모델이 직접 답변", "视觉模型识读图片": "비전 모델이 이미지를 읽음", "解码后小于这个体积的图片保持原样。默认 512KB,可填 0–10240;填 0 表示所有内嵌图片都过一遍。": "디코딩 후 크기가 이 값보다 작은 이미지는 그대로 둡니다. 기본 512KB, 0~10240까지 지정할 수 있으며, 0이면 모든 인라인 이미지를 처리합니다.", "解除失败:{message}": "해제 실패: {message}", "触发阈值": "적용 임계값", "计数": "집계", "计量单位": "표기 단위", "让 Codex 在收到最终答案后收起中间过程。仅为严格识别的 Codex Responses 请求补阶段标记,报表归类和来源声明不影响此判断。正常结束且没有工具调用的非空回答才补 final_answer,工具调用前的说明补 commentary;错误、截断、缺少结束信号或未知结束原因不补最终答案标记。默认关闭,不改变回答文字,也不减少模型思考或用量。": "Codex가 최종 답변을 받은 뒤 중간 과정을 접을 수 있게 합니다. 엄격하게 식별된 Codex Responses 요청에만 단계 표시를 추가하며, 보고서 분류나 클라이언트의 출처 선언에는 영향을 받지 않습니다. 정상 종료되고 도구 호출이 없는 비어 있지 않은 답변에만 final_answer를, 도구 호출 전 설명에는 commentary를 붙입니다. 오류, 잘림, 종료 신호 누락 또는 알 수 없는 종료 사유에는 최종 답변 표시를 붙이지 않습니다. 기본값은 꺼짐이며 답변 내용, 모델의 추론과 사용량은 바뀌지 않습니다.", "许可原文": "라이선스 원문", "许可原文已随软件内置,无需联网即可查看;打开项目来源链接需要联网。": "라이선스 원문은 앱에 포함되어 있어 오프라인으로 볼 수 있습니다. 프로젝트 출처 링크를 열려면 인터넷 연결이 필요합니다.", "许可核对版本": "라이선스 확인에 사용한 리비전", "设置不可隐藏(隐藏了只能清缓存找回来)": "\"설정\"은 숨길 수 없습니다(숨기면 저장소를 지워야 되돌릴 수 있습니다)", "设置备份密码": "백업 비밀번호 설정", "设置识别规则": "식별 규칙 설정", "访问时请使用目标设备能连接到的地址;这里显示的本机地址不代表公网可达。": "접속하는 기기에서 연결할 수 있는 주소를 사용하세요. 여기에 표시된 주소가 인터넷에서 접근 가능함을 의미하지는 않습니다.", "识别依据": "식별 근거", "识别规则数量已达上限": "식별 규칙 수가 한도에 도달함", "词表为空,不会改写任何指纹。可以新增规则或恢复默认词表。": "규칙 목록이 비어 있어 지문을 수정하지 않습니다. 규칙을 추가하거나 기본 규칙을 복원하세요.", "该提供商暂无可编辑的专属设置": "이 제공자에는 편집할 수 있는 전용 설정이 없습니다", "详细日志": "상세 로그", "语言设置": "언어 설정", "请先保存设置再同步": "동기화하기 전에 설정을 저장하세요", "请先在 Cloudflare 创建 Turnstile 组件,建议选择 Managed 模式,并添加面板实际使用的域名。": "먼저 Cloudflare에서 Turnstile 위젯을 만드세요. Managed 모드를 권장하며 패널에서 실제로 사용하는 도메인을 추가하세요.", "请填一个分组名": "그룹 이름을 입력하세요", "请填写管理员账号(64 字符以内)": "관리자 계정을 입력하세요(64자 이내)", "请求发出后等待上游响应头的最大时间(秒),默认 300 秒,范围 1~3600。": "요청을 보낸 뒤 업스트림 응답 헤더를 기다리는 최대 시간(초). 기본 300초, 범위 1~3600.", "请求带有不同软件的标识,未自动归类;可用自定义规则明确归属。": "요청에 서로 다른 소프트웨어 식별 정보가 있어 자동 분류하지 않았습니다. 사용자 규칙으로 분류를 지정할 수 있습니다.", "请求提供商 / 模型支持": "제공자 / 모델 지원 요청", "请求日志保留天数": "요청 로그 보존 일수", "请求日志保留数量上限": "요청 로그 보관 건수 상한", "请求记录": "요청 기록", "请求超时": "요청 타임아웃", "请求转发到上游失败时(服务器瞬时错误、连接失败,以及 WorkBuddy 的 11-128 敏感词拦截),网关会等一段间隔后再发一次。次数分两档,管的是两件事:①「同一账号重试次数」在同一账号上原地重发几次 —— 一般是提示词被上游拦截、或链路瞬时抖动,等一会儿重发往往就好了;②「切换账号重试次数」这份请求最多再换几个账号试 —— 首发的那个账号不算,每换一个扣一次,不分是不是同一家(换到同一家的下一个账号也算一次),换满还失败就把错误返回给客户端。两项都设为 0 表示失败不重试、直接报错。注意账号级限额(429)不占这里的换号次数 —— 那类失败走「冷却该账号并换下一个账号」的降级,与这里的重试是两条路。另有「指定错误码直接换号」名单(默认 402):命中名单的上游状态码不在同一账号重发,直接按队列换下一个账号继续试(换号也占「切换账号重试次数」),换满仍失败才把错误返回给客户端。": "업스트림으로 전달이 실패하면(서버의 일시적 오류, 연결 실패, WorkBuddy의 11-128 금칙어 차단) 게이트웨이가 일정 간격을 기다린 뒤 한 번 더 보냅니다. 횟수는 두 가지로 나뉘며 서로 다른 일을 담당합니다. ①「동일 계정 재시도 횟수」는 같은 계정에서 제자리로 몇 번 재전송할지를 정합니다. 보통 시스템 프롬프트가 업스트림에 차단되었거나 경로가 순간적으로 흔들린 경우로, 잠시 후 다시 보내면 대개 해결됩니다. ②「계정 전환 재시도 횟수」는 이 요청이 최대 몇 개의 계정으로 더 시도할지를 정합니다. 최초 전송 계정은 제외하고 계정을 바꿀 때마다 1회씩 차감되며, 같은 제공자인지 여부는 따지지 않습니다(같은 제공자의 다음 계정으로 바꿔도 1회로 계산). 횟수를 다 써도 실패하면 오류를 클라이언트에 반환합니다. 두 항목을 모두 0으로 설정하면 실패 시 재시도하지 않고 바로 오류를 반환합니다. 계정 단위 할당량 초과(429)는 여기의 계정 전환 횟수를 소모하지 않습니다. 그런 실패는 「해당 계정을 쿨다운하고 다음 계정으로 전환」하는 폴백 경로를 타며, 여기의 재시도와는 별개입니다. 또한 「지정 오류 코드 즉시 계정 전환」 목록(기본 402)이 있습니다. 목록에 해당하는 업스트림 상태 코드는 같은 계정에서 재전송하지 않고 바로 큐의 다음 계정으로 넘어가 계속 시도하며(계정 전환도 「계정 전환 재시도 횟수」를 소모), 횟수를 다 써도 실패하면 오류를 클라이언트에 반환합니다.", "请求重试": "요청 재시도", "请至少选择一个提供商": "제공자를 하나 이상 선택하세요", "请输入同步密码": "동기화 비밀번호를 입력하세요", "请输入当前密码": "현재 비밀번호를 입력하세요", "请输入服务端密钥": "비밀 키를 입력하세요", "请选择可用的标识请求头": "사용 가능한 식별 헤더를 선택하세요", "请选择归属客户端": "분류할 클라이언트를 선택하세요", "读取云同步设置失败:{message}": "클라우드 동기화 설정을 읽지 못했습니다: {message}", "读取失败:{message}": "읽기 실패: {message}", "读取完整非流式响应体允许的最大时间(秒),默认 300 秒,范围 1~3600。": "비스트리밍 응답 본문 전체를 읽는 데 허용되는 최대 시간(초). 기본 300초, 범위 1~3600.", "读取网关信息失败:{message}": "게이트웨이 정보 읽기 실패: {message}", "读取远端…": "원격 읽는 중…", "读取远端信息失败:{message}": "원격 정보를 읽지 못했습니다: {message}", "调用方声明": "호출자 선언", "调试报文": "디버그 메시지", "调试模式": "디버그 모드", "调试模式设置已刷新": "디버그 모드 설정을 새로 고쳤습니다", "负载均衡": "부하 분산", "账号列表": "계정 목록", "账号导入 / 导出": "계정 가져오기 / 내보내기", "账号路由": "계정 라우팅", "账号页表格的两项显示偏好,只存在本机(localStorage),不影响账号数据与转发。「积分合计只统计当前筛选出来的账号」:账号页每一家的分组带右侧有一枚「可用合计」,默认按整组求和 —— 不受筛选、搜索影响,被筛掉的账号也计入(余额是资产,禁用也只表示不参与转发,额度仍在账上)。打开这一项后改为只累加当前可见的行:例如筛出 1 个 100 积分的账号,合计就是 100,而不是同组两个账号之和 1,000。分页不参与这个口径 —— 翻页看的是同一份结果的不同屏,合计不随页码变化。「隐藏账号名」与表头「账号」旁边那颗眼睛是同一个开关:打开后账号列的名字整体显示成星号,适合截图分享时遮挡账号。": "계정 표의 표시 설정 두 가지입니다. 이 컴퓨터에만 저장되며(localStorage) 계정 데이터나 포워딩에는 영향을 주지 않습니다. \"포인트 합계를 현재 필터에 표시된 계정만으로 계산\": 계정 페이지의 각 제공자 그룹 띠 오른쪽에 \"사용 가능 합계\"가 있습니다. 기본값은 그룹 전체를 합산하며 필터와 검색의 영향을 받지 않고, 필터에서 제외된 계정도 포함됩니다(잔액은 자산이며, 비활성화는 포워딩에 참여하지 않는다는 뜻일 뿐 포인트는 그대로 남습니다). 이 항목을 켜면 현재 보이는 행만 더합니다. 예를 들어 100포인트 계정 하나로 필터링하면 합계는 100이며, 같은 그룹 두 계정의 합인 1,000이 아닙니다. 페이지 나누기는 이 계산에 포함되지 않습니다. 페이지는 같은 결과를 다른 화면에서 보는 것일 뿐이므로 페이지를 넘겨도 합계는 바뀌지 않습니다. \"계정 이름 숨기기\"는 표의 \"계정\" 열 옆 눈 아이콘과 같은 스위치입니다. 켜면 계정 열의 이름이 별표로 표시되어 스크린샷 공유 시 가릴 수 있습니다.", "账户": "계정", "超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件。把天数改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。可填范围为 1–3650 天。请求日志 / 按天聚合 / 签到记录已全量保留、不再自动删除,要清历史请到对应页面手动清空。": "보존 기간을 초과한 부분은 삭제됩니다: 이벤트 로그는 로그인, 계정 전환, 429 전환 같은 시스템 이벤트입니다. 일수를 줄여(예: 30일 → 7일) 저장하면 초과된 기록이 즉시 삭제되며 되돌릴 수 없습니다. 늘리거나 그대로 두면 아무것도 삭제되지 않습니다. 입력 범위는 1–3650일입니다. 요청 로그 / 일별 집계 / 출석 기록은 전량 보존되어 자동 삭제되지 않습니다. 기록을 지우려면 해당 페이지에서 직접 비워 주세요.", "超出的历史数据会被立即删除,且不可恢复。": "초과된 과거 데이터는 즉시 삭제되며 복구할 수 없습니다.", "超时": "타임아웃", "超时设置已刷新": "타임아웃 설정을 새로 고쳤습니다", "跟随模型配置": "모델 설정 따르기", "跟随系统 · 浅色 · 深色": "시스템 · 라이트 · 다크", "跟随默认": "기본값 따르기", "跨域访问": "CORS", "路由": "라우팅", "路由组只使用组内成员;普通路由只使用参与范围内的账号和模型。": "라우트 그룹은 그룹 내 구성원만 사용하고 일반 라우트는 참여 범위 내 계정과 모델만 사용합니다.", "路由设置已刷新": "라우팅 설정을 새로고침했습니다", "跳过 {n} 个": "{n}개 건너뜀", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;负载均衡是每条请求换下一位,把负载摊到各个账号上。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时)、被 429 的账号垫底排到队尾 30 分钟、余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 前两层可以在下面按需开关,限制器由账号的「限制器」设置管。": "요청 전송 시 계정을 어떤 순서로 고르는지: ① \"라우팅 전략\"이 대기 규칙을 정합니다 — 순서 우선은 1 번째 계정이 응답하지 못하게 될 때(레이트 리밋 / 장애 / 잔여량 소진)까지 모든 요청을 처리하고 그다음으로 넘어갑니다. 부하 분산은 요청마다 다음 계정으로 돌려 부하를 여러 계정에 나눕니다. ② \"세션 고정\"은 같은 세션(같은 모델 + 같은 첫 메시지)을 가능한 한 같은 계정에 묶어 둡니다 — 여러 턴 대화에서 업스트림 컨텍스트 캐시를 재사용해 계정 교체와 낭비가 줄어듭니다. 자동은 5 분, 세션 내는 6 시간 고정하며, 매 턴과 끄기는 고정하지 않습니다. 계정의 대기 순번(계정 표의 1 열)은 모든 전략의 기반이고 전략은 그 위에서 작동합니다. 라우팅에는 자가 복구 보호가 3 겹 있습니다: 전송 실패한 계정은 잠시 물러나고(15 분부터 시작해 실패마다 2 배, 최대 1 시간), 잔여량이 있는데 429 를 받은 계정은 30 분간 맨 뒤로 가며, 잔여량 소진 / 기간 토큰 한도 도달 계정은 리미터가 가로막습니다 — 앞의 2 가지는 아래에서 필요에 따라 켜고 끌 수 있고, 리미터는 각 계정의 \"리미터\" 설정이 관할합니다.", "转发前压缩对话里内嵌的大图(只改发给上游的副本,生图与图片编辑不受影响)": "포워딩 전에 대화에 포함된 큰 이미지를 압축합니다(상류로 보내는 사본만 변경되며, 이미지 생성과 편집에는 영향 없음)", "转发前将 developer 角色消息转换为 system,兼容不支持 developer 角色的 OpenAI 兼容上游": "전달 전에 developer 역할 메시지를 system으로 변환하여 developer 역할을 지원하지 않는 OpenAI 호환 업스트림과 호환", "转发失败的账号休息一会儿再回来:15 分钟起步,连续失败翻倍,封顶 1 小时;成功一次立即恢复。目的是「让这次失败先凉一会儿」,免得一条条地反复撞同一个坏账号。": "전송에 실패한 계정은 잠시 쉬고 돌아옵니다: 15 분부터 시작해 연속 실패마다 2 배, 최대 1 시간. 한 번 성공하면 즉시 복구됩니다. \"실패를 잠시 식히는\" 것이 목적으로, 같은 불량 계정을 요청마다 반복해서 두드리지 않게 합니다.", "转发链路": "전달 경로", "轮询间隔": "폴링 간격", "软件标识超过 1 KB,已截断保存;匹配仅使用保留部分。": "소프트웨어 식별 정보가 1 KB를 초과하여 잘라 저장했습니다. 일치 판정에는 저장된 부분만 사용합니다.", "软件版本": "소프트웨어 버전", "轻量模式": "경량 모드", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 套餐池(Start Plan)通道不可用,相关请求会在请求日志里注明原因": "경량 모드가 켜져 있습니다: 창을 닫으면 UI 프로세스가 파괴되고(약 200MB 메모리 해제) 게이트웨이는 백그라운드에서 계속됩니다. UI가 파괴된 동안 ZCode 플랜 풀 (Start Plan) 채널을 사용할 수 없으며, 해당 요청은 요청 로그에 사유가 기록됩니다", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 活动套餐通道不可用,相关请求会在请求日志里注明原因": "경량 모드 켜짐: 창을 닫으면 인터페이스 프로세스가 파괴되고(약 200MB 메모리 해제) 게이트웨이는 백그라운드에서 계속됩니다. 인터페이스가 파괴된 동안에는 ZCode 활동 요금제 채널을 사용할 수 없으며, 관련 요청은 요청 로그에 사유가 기록됩니다", "轻量模式(关窗释放界面内存)": "경량 모드(창을 닫아 인터페이스 메모리 해제)", "辅助识图": "보조 이미지 읽기", "辅助识图 · 原模型回答": "보조 읽기 · 원래 모델이 답변", "辅助识图保留原模型回答;切换视觉模型会让视觉模型直接回答。本次授权也包含已设置的模型单独配置。": "보조 읽기는 원래 모델이 답변하며 모델 전환은 비전 모델이 직접 답변합니다. 이번 권한 확인에는 모델별 설정도 포함됩니다.", "辅助识图或切换视觉模型,默认关闭": "보조 이미지 읽기 또는 비전 모델 전환, 기본 꺼짐", "辅助识图配置": "보조 이미지 읽기 설정", "输入同步密码": "동기화 비밀번호 입력", "输入当前登录用的密码": "현재 로그인 비밀번호를 입력하세요", "输入状态码,回车添加": "상태 코드를 입력하고 Enter로 추가", "运行形态": "실행 형태", "近期没有命中样本,不代表未来请求不会命中。": "최근 일치하는 샘플이 없어도 이후 요청은 일치할 수 있습니다.", "还原": "되돌리기", "还有额度时被 429 的账号排到队尾,30 分钟后自动回到队列(成功转发一次也会立即回来)。它标记的是「疑似共享池被别人抢」,不是「这个账号本身有问题」。⚠️ 注意它与路由策略的配合:在「家内轮询」下,队尾意味着这一家整体被往后排 —— 如果某个提供商的账号被批量限流,它们会集体沉到队尾,那个家可能长时间轮不到。这时可以关掉本项,让 429 过的账号只受冷却约束(冷却到点自动回来)。": "잔여량이 남아 있는데 429 응답을 받은 계정은 맨 뒤로 밀렸다가 30 분 후 자동으로 복귀합니다(전송 한 번 성공 시 즉시 복귀). 이는 \"공유 풀을 남이 가져가고 있는 것으로 의심\"을 표시하는 것이지 \"이 계정 자체의 문제\"가 아닙니다. ⚠️ 라우팅 전략과의 조합에 주의: \"제공자 내 순환\"에서는 맨 뒤 = 제공자 전체가 뒤로 밀린다는 뜻 — 한 제공자의 계정들이 일괄 레이트 리밋을 당하면 전부 맨 뒤로 가라앉아 그 제공자가 오랫동안 순서가 오지 않을 수 있습니다. 이럴 때는 이 항목을 꺼서 429 를 받은 계정이 쿨다운 규칙만 따르도록 하면 좋습니다(쿨다운이 끝나면 자동 복귀).", "还没有可用的视觉模型。": "아직 사용할 수 있는 비전 모델이 없습니다.", "还没有同步过。": "아직 동기화한 적이 없습니다.", "还没有添加服务器。点右上角「添加」,填入网关所在机器的 IP 或域名与端口。": "서버가 없습니다. 오른쪽 위 \"추가\"를 눌러 게이트웨이가 실행 중인 기기의 IP 또는 도메인과 포트를 입력하세요.", "还没有装载任何数据。": "아직 로드된 데이터가 없습니다.", "还没有读到版本信息": "버전 정보를 아직 읽지 못했습니다", "还没有选择模型,这块设置暂时不起作用。": "모델을 아직 선택하지 않아 이 블록은 지금 아무 동작도 하지 않습니다.", "这一份就是「替换 / 追加」模式下网关要发的 system 正文。": "이 본문이 「교체 / 추가」 모드에서 게이트웨이가 보낼 system 본문입니다.", "这一项已隐藏": "이 항목은 숨겨져 있습니다", "这一项正在显示": "이 항목은 표시 중입니다", "这些模型的请求交给当前路由内可用的视觉模型回答,不再回到原模型。": "이 모델들의 요청은 현재 라우트에서 쓸 수 있는 비전 모델이 원래 모델 대신 답합니다.", "这些模型看到图片时,先把图片交给 {model} 读一遍,再由它们自己结合读到的内容回答。": "이 모델들이 이미지를 받으면 먼저 {model}이(가) 읽고, 읽은 내용을 바탕으로 원래 모델이 답합니다.", "这些模型看到图片时,先把图片交给「沿用工具服务的视觉分析模型」读一遍,再由它们自己结合读到的内容回答。": "이 모델들이 이미지를 받으면 먼저 도구 서비스의 비전 모델이 읽고, 읽은 내용을 바탕으로 원래 모델이 답합니다.", "这只模型只负责看图,最终仍由原模型回答。": "이 모델은 이미지만 읽고 최종 답변은 원래 모델이 합니다.", "这只模型直接接收图片与对话,完成本次回答。": "이 모델이 이미지와 대화를 직접 받아 이번 답변을 완성합니다.", "这台网关未启用机器人校验": "이 게이트웨이는 봇 확인을 사용하지 않습니다", "这台网关没有管理员,用一把已启用的 API Key 访问。": "이 게이트웨이에는 관리자가 없습니다. 활성화된 API Key로 접속하세요.", "这条历史请求没有保存识别依据,不能据此自动创建规则。": "이 과거 요청에는 식별 근거가 저장되지 않아 이를 바탕으로 규칙을 자동 생성할 수 없습니다.", "这条规则已被删除,请关闭编辑后重新添加。": "이 규칙이 삭제되었습니다. 편집기를 닫고 다시 추가하세요.", "这里只列出已保存的提供商配置;未配置的提供商沿用全局设置,可从下拉框手动添加。用户保存的模式、文件和正文优先于全局设置,「跟随默认」只取消该提供商的模式、文件和正文覆盖。ZCode 套餐池默认由插件按三块装配,客户端系统正文合入第三块,不会自动创建替换规则;手动修改的网关提示词段或关闭开关仍以用户配置为准,能否被接受取决于上游规则。": "저장된 제공자 설정만 표시합니다. 설정하지 않은 제공자는 전역 설정을 따르며 드롭다운에서 수동으로 추가할 수 있습니다. 저장한 모드, 파일, 본문은 전역 설정보다 우선합니다. 「기본값 따르기」는 해당 제공자의 모드, 파일, 본문 재정의만 해제합니다. ZCode Start Plan은 기본적으로 플러그인이 세 블록을 구성하고 클라이언트의 system 본문을 세 번째 블록에 합칩니다. 대체 규칙은 자동으로 만들지 않습니다. 수동으로 수정한 게이트웨이 프롬프트 블록이나 구성 스위치를 끈 설정은 그대로 우선 적용되며, 허용 여부는 업스트림 규칙에 따라 달라집니다.", "进程 PID": "프로세스 PID", "远程根目录": "원격 루트 디렉터리", "远端同一路径下的旧快照。事件日志、请求明细与调试报文不会上传。": "같은 원격 경로의 이전 스냅샷을 덮어씁니다. 이벤트 로그, 요청 상세, 디버그 패킷은 업로드되지 않습니다.", "远端已有一份快照,将被覆盖": "원격에 이미 스냅샷이 있으며 덮어씁니다", "远端快照使用了另一把账号密钥,但没有携带密钥文件,无法在本机解密。请在原来那台机器上重新上传一次。": "원격 스냅샷이 다른 계정 키를 사용하지만 키 파일이 포함되어 있지 않아 이 컴퓨터에서 복호화할 수 없습니다. 원래 컴퓨터에서 다시 업로드하세요.", "远端快照使用的账号密钥与本机不同。请输入上传那台机器设置的同步密码,用它解出密钥装到本机后再继续下载。": "원격 스냅샷은 이 컴퓨터와 다른 계정 키를 사용합니다. 업로드한 컴퓨터에서 설정한 동기화 비밀번호를 입력해 키를 복호화하고 이 컴퓨터에 설치한 뒤 다운로드를 계속하세요.", "远端数据与当前版本不兼容": "원격 데이터가 현재 버전과 호환되지 않습니다", "远端该路径下还没有快照,本次是首次上传。": "해당 원격 경로에 아직 스냅샷이 없습니다. 이번이 첫 업로드입니다.", "远端路径:{path}": "원격 경로: {path}", "远端还没有可下载的同步数据": "원격에 다운로드할 동기화 데이터가 없습니다", "连不上这台网关。确认地址与端口正确、网关已启动,且已开启「局域网访问」;用 https 时还要确认证书有效": "이 게이트웨이에 연결할 수 없습니다. 주소와 포트가 올바른지, 게이트웨이가 실행 중인지, \"LAN 접근\"이 켜져 있는지 확인하세요. https를 쓰는 경우 인증서가 유효한지도 확인하세요.", "连不上这台网关。请确认地址、端口与防火墙设置,网关需已启动;桌面端请在「设置 → 网关 → 网络访问」开启「允许其他设备访问网关」。使用 HTTPS 时还需确认证书有效。": "이 게이트웨이에 연결할 수 없습니다. 주소, 포트, 방화벽 설정을 확인하고 게이트웨이가 실행 중인지 확인하세요. 데스크톱 앱에서는 「설정 → 게이트웨이 → 네트워크 접근」에서 「다른 기기의 게이트웨이 접근 허용」을 켜세요. HTTPS를 사용하는 경우 인증서가 유효한지도 확인하세요.", "连接中超时": "연결 타임아웃", "连接失败:{message}": "연결 실패: {message}", "连续失败到阈值后把这个账号整个打开(默认关)。与失败退避的分工:退避管「单次失败先凉一会儿」,惩罚轻、自动恢复;熔断管「这个账号现在整体不对劲,别再一条条地试」,要连续成功若干次才关。打开期间该账号被跳过,除非全场只剩它 —— 那时仍放行试一次。": "연속 실패가 임계값에 도달하면 이 계정 전체를 차단합니다(기본값 꺼짐). 실패 백오프와의 역할 분담: 백오프는 \"단일 실패를 잠시 식히는\" 가벼운 처벌로 자동 복구되고, 서킷 브레이커는 \"이 계정이 전반적으로 이상하니 하나씩 시도하지 말 것\"으로, 연속 성공이 여러 번 이어져야 닫힙니다. 차단 중에는 해당 계정이 건너뛰어지지만, 남은 것이 이것뿐이면 한 번은 시도해 봅니다.", "追加": "추가", "追加网关提示词": "게이트웨이 시스템 프롬프트 추가", "退出失败:{message}": "로그아웃 실패: {message}", "退出登录": "로그아웃", "退出这台服务器的登录,不影响其他服务器": "이 서버에서만 로그아웃합니다. 다른 서버는 영향 없음", "选好接管回答的视觉模型后这块设置才会生效。": "답변을 이어받을 비전 모델을 고르면 이 블록이 적용됩니다.", "选好视觉模型后这块设置才会生效。": "비전 모델을 고르면 이 블록이 적용됩니다.", "选定提供商": "선택한 제공자", "选择一个或多个模型": "모델을 하나 이상 선택", "选择位置并加密备份": "저장 위치 선택 및 암호화 백업", "选择备份文件并恢复": "백업 파일을 선택해 복원", "选择提供商(可多选)": "제공자 선택(복수 선택 가능)", "选路规则": "선택 규칙", "选项与默认值由已启用插件提供;你保存的覆盖值不会被插件更新替换。": "활성화된 플러그인이 옵션과 기본값을 제공합니다. 플러그인을 업데이트해도 저장한 사용자 설정은 바뀌지 않습니다.", "选项与默认值由插件提供,你保存的修改不会被插件更新覆盖。切换提供商不会丢失未保存的修改。": "옵션과 기본값은 플러그인이 제공합니다. 플러그인 업데이트는 저장한 변경 사항을 덮어쓰지 않습니다. 제공자를 전환해도 저장하지 않은 수정 내용은 유지됩니다.", "透传": "패스스루", "透传客户端 system": "클라이언트 system 패스스루", "透传客户端 system(默认)": "클라이언트 system 패스스루(기본값)", "通常是网络问题,点右侧重试": "대개 네트워크 문제입니다. 오른쪽 재시도를 누르세요", "通用": "일반", "遇到 Bug、报错或异常行为": "버그, 오류 또는 비정상 동작 발생 시", "配置目录下的 agent2api.db(账号、日志、请求记录、调试报文与设置都在里面)。": "구성 디렉터리의 agent2api.db입니다(계정, 로그, 요청 기록, 디버그 메시지와 설정이 모두 들어 있습니다).", "采用本规则": "이 규칙 적용", "重启后生效,不影响当前操作": "재시작하면 적용됩니다. 하던 작업은 중단되지 않습니다", "重命名": "이름 변경", "重命名只更新分类显示名,不拆分历史用量,也不重新归类历史请求。": "이름 변경은 분류 표시명만 바꾸며 과거 사용량을 분리하거나 요청을 재분류하지 않습니다.", "重命名客户端分类": "클라이언트 분류 이름 변경", "重复清理": "반복 삭제", "重复清理直到不再变化(仅正则删除)": "변화가 없을 때까지 반복(정규식 삭제만 가능)", "重新读取会替换当前未保存的草稿。": "다시 불러오면 현재 저장하지 않은 초안이 바뀝니다.", "重新读取设置": "설정 다시 불러오기", "重编码质量": "재인코딩 품질", "重置会清空管理员账号与密码,面板将回到「未注册」状态。": "재설정하면 관리자 계정과 비밀번호가 지워지고 패널이 \"미등록\" 상태로 돌아갑니다.", "重置管理员": "관리자 재설정", "重试设置已刷新": "재시도 설정을 새로 고쳤습니다", "重试间隔": "재시도 간격", "铸造守卫每隔多久看一次库存(毫秒)。只影响发现缺货的反应速度 —— 库存够用时轮询不会铸造任何令牌。默认 2500 毫秒,可填 1000–30000。": "발행 가드가 재고를 몇 밀리초마다 확인할지 정합니다. 부족 발견 반응 속도에만 영향을 주며 — 재고가 충분하면 폴링해도 아무 토큰도 발행하지 않습니다. 기본값 2500 밀리초, 1000–30000 입력 가능.", "长边像素上限": "긴 변 최대 픽셀", "问题反馈": "문제 신고", "阿里云 OSS": "알리바바 클라우드 OSS", "限流中账号": "속도 제한 중 계정", "随包内嵌的快照(发版时的那份)": "앱에 내장된 스냅샷(릴리스 시점 기준)", "隐藏 {name}": "{name} 숨기기", "隐藏分组 {name}": "그룹 {name} 숨기기", "隐藏用户名": "사용자 이름 숨기기", "隐藏账号名(显示成星号)": "계정 이름 숨기기(별표로 표시)", "隐藏这一组": "이 그룹 숨기기", "非流式响应超时": "비스트리밍 응답 타임아웃", "面板登录": "패널 로그인", "面板端口": "패널 포트", "面板管理员账号": "패널 관리자 계정", "韩语": "한국어", "项目来源": "프로젝트 출처", "预览不发送模型请求,也不修改历史记录。": "미리보기는 모델을 호출하거나 과거 기록을 변경하지 않습니다.", "预览中…": "미리 보는 중…", "预览匹配": "일치 결과 미리보기", "预设": "프리셋", "首选不可用时再依次尝试备选。": "첫 선택을 쓸 수 없으면 대체 모델을 차례로 시도합니다.", "首选不可用时再依次尝试;留空则停止并说明原因。": "첫 선택을 쓸 수 없을 때 차례로 시도합니다. 비워 두면 중단하고 이유를 설명합니다.", "验证方式": "인증 방식", "验证码令牌池": "캡차 토큰 풀", "验证码令牌池设置已刷新": "캡차 토큰 풀 설정을 새로고침했습니다", "验证码库存的参考目标,默认 3 个,可填 1–10。只影响库存状态展示,不会因为低于目标自动生成令牌或弹出验证码。": "재고 표시 기준 목표입니다. 기본값은 3개이며 1–10 범위입니다. 상태 표시에만 영향을 주며 목표보다 적어도 토큰을 자동으로 생성하거나 인증 창을 띄우지 않습니다.", "高级设置": "고급 설정", "默认 10000 条,按日志级别分配保留容量,超出后清理最旧的记录;同时受保留天数限制。": "기본값은 10000건이며 로그 수준별로 보관 용량을 배분합니다. 초과분은 가장 오래된 기록부터 삭제하며 보관 일수 제한도 적용됩니다.", "默认 1000000 条(100 万),超出后清理最旧的请求记录及其原始正文,不影响按天聚合报表;同时受保留天数限制。": "기본값은 1000000건(100만 건)입니다. 초과하면 가장 오래된 요청 기록과 원문을 삭제하며 일별 집계 보고서에는 영향을 주지 않습니다. 보관 일수 제한도 적용됩니다.", "默认 5 分钟。间隔内的变化合并为最新快照,到期后上传;手动上传不受限制。失败后会延长等待并自动重试。": "기본값은 5분입니다. 대기 중 변경 사항은 최신 스냅샷으로 합쳐 간격이 지난 뒤 업로드합니다. 수동 업로드에는 제한이 없습니다. 실패하면 대기 시간을 늘려 자동으로 재시도합니다.", "默认仅本机可访问(127.0.0.1)。开启后监听所有 IPv4 网卡(0.0.0.0),访问范围由网络与防火墙决定,不限于局域网,也不会自动开放到公网。开启前必须注册面板管理员;管理接口需要管理员会话或网关 Key,API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。「同时开放网页管理面板」默认关闭,开启后可从其他设备的浏览器登录管理;关闭它不影响 API 转发和本机桌面管理。修改任一开关都需要重启应用。": "기본적으로 이 기기에서만 접근할 수 있습니다(127.0.0.1). 켜면 모든 IPv4 인터페이스(0.0.0.0)에서 수신하며 접근 범위는 네트워크와 방화벽 설정으로 결정됩니다. LAN으로 제한되지 않으며 인터넷에 자동 공개되지도 않습니다. 먼저 패널 관리자를 등록해야 합니다. 관리 API에는 관리자 세션 또는 게이트웨이 키가, API 호출에는 활성화된 게이트웨이 키가 필요합니다. 키가 없으면 기본 키를 자동 생성합니다. 웹 관리 패널은 기본적으로 꺼져 있으며, 켜면 다른 기기의 브라우저에서 로그인하여 관리할 수 있습니다. 꺼도 API 전달과 로컬 데스크톱 관리에는 영향이 없습니다. 어느 스위치든 변경 후 앱을 다시 시작해야 합니다.", "默认值通常够用,出问题时才需要调": "기본값으로 대부분 충분하며, 문제가 생겼을 때만 조정하세요", "默认关闭。开启后下一次 Codex 请求立即生效,不用重启;只对 Codex 来源的 /v1/responses 请求补阶段标记,其它客户端与 /v1/chat/completions 不受影响。": "기본값은 꺼짐입니다. 켜면 다음 Codex 요청부터 재시작 없이 적용되며, 단계 표시는 Codex 출처 /v1/responses 요청에만 보강되고 다른 클라이언트와 /v1/chat/completions는 영향을 받지 않습니다.", "默认关闭。改动立即生效,不用重启;关闭期间的跨源请求会被预检拦下。": "기본적으로 꺼져 있습니다. 변경 사항은 재시작 없이 즉시 적용되며, 꺼져 있는 동안의 교차 출처 요청은 프리플라이트에 걸립니다.", "默认关闭窗口不会退出程序,而是把窗口缩到系统托盘,转发继续在后台运行(OpenAI 客户端不受影响);要彻底退出程序,请在托盘图标上右键选「退出」。关掉这个开关后,点关闭按钮即退出程序、转发随之中断。「开机自动启动」开启后,登录系统时会自动启动本程序(通常直接驻留托盘),不需要手动打开。": "기본적으로 창을 닫아도 프로그램이 종료되지 않고 창이 시스템 트레이로 최소화되며 포워딩은 백그라운드에서 계속 실행됩니다(OpenAI 클라이언트는 영향을 받지 않습니다). 프로그램을 완전히 종료하려면 트레이 아이콘을 마우스 오른쪽 버튼으로 클릭하고 「종료」를 선택하세요. 이 스위치를 끄면 닫기 버튼을 누르는 즉시 프로그램이 종료되고 포워딩도 중단됩니다. 「자동 시작」을 켜면 시스템 로그인 시 이 프로그램이 자동으로 실행되며(보통 바로 트레이에 상주), 수동으로 열 필요가 없습니다.", "默认应用全部提供商(包含之后新增的插件与自定义提供商)。指定范围后,未选中的提供商不做指纹脱敏;清空选择自动回到全部提供商。": "기본적으로 이후 추가한 플러그인 및 사용자 지정 제공자를 포함한 모든 제공자에 적용합니다. 범위를 지정하면 선택하지 않은 제공자는 마스킹하지 않습니다. 선택을 비우면 전체 제공자로 돌아갑니다.", "默认开启。只改 role 字段本身,消息内容与顺序都不动;本项只改发给上游的副本,客户端看到的响应内容不变。": "기본값은 켜짐. role 필드만 수정하며 메시지 내용과 순서는 그대로입니다. 업스트림으로 보내는 사본에만 적용되고 클라이언트가 보는 응답은 변하지 않습니다.", "默认开启。只改发给上游的副本,客户端看到的响应与原图都不变;请求日志里保存的是客户端发来的原图,不是压缩后的版本。只作用在对话链路,生图 / 图片编辑不经过这里。改完对下一个请求立即生效,不用重启。": "기본값은 켜짐입니다. 바뀌는 것은 상류로 보내는 사본뿐이며, 클라이언트가 보는 응답과 원본 이미지는 그대로입니다. 요청 로그에는 압축본이 아니라 클라이언트가 보낸 원본 이미지가 저장됩니다. 대화 경로에만 적용되며 이미지 생성과 편집은 여기를 거치지 않습니다. 변경은 다음 요청부터 적용되며 재시작이 필요 없습니다.", "默认开启。命中明细会记进请求日志的「敏」标签(悬停可看命中了哪几条规则)。本项只改发给上游的副本,客户端看到的响应内容不变。": "기본적으로 켜져 있습니다. 적중 내역은 요청 로그의 「민감」 태그에 기록됩니다(마우스를 올리면 어떤 규칙에 걸렸는지 볼 수 있습니다). 이 항목은 업스트림으로 보내는 사본만 바꾸며 클라이언트가 받는 응답 내용은 달라지지 않습니다.", "默认开启并应用全部提供商。编辑词表或应用范围后点击「保存设置」,下一次请求立即生效,不用重启。命中明细仍记进请求日志的「敏」标签。": "기본적으로 활성화되어 모든 제공자에 적용됩니다. 규칙이나 범위를 편집한 후 설정 저장을 누르면 재시작 없이 다음 요청부터 적용됩니다. 일치 내역은 요청 로그의 마스킹 태그에 계속 기록됩니다.", "默认网关只监听 127.0.0.1,只有本机能访问。开启后网关改听所有网卡,同一局域网内的设备可以把 API 地址指向本机 IP 一起使用。出于安全考虑,开启前必须先注册一个面板管理员:管理接口从此要求管理员会话或网关 Key,模型额度不会对局域网裸奔;一把启用的网关 Key 都没有时,转发接口也会拒绝服务,直到创建第一把。改动需要重启应用生效。「同时开放网页管理面板」把管理界面也出给局域网(其他设备的浏览器打开本机 IP 即可管理),默认关闭 —— 桌面端的面板仍只由本程序自己出。": "기본적으로 게이트웨이는 127.0.0.1만 수신하며 로컬에서만 접근할 수 있습니다. 켜면 게이트웨이가 모든 네트워크 인터페이스를 수신하고, 같은 LAN의 기기에서 API 주소를 로컬 IP로 지정해 함께 사용할 수 있습니다. 보안을 위해 켜기 전에 패널 관리자를 먼저 등록해야 합니다. 관리 인터페이스는 이때부터 관리자 세션 또는 게이트웨이 키를 요구하므로 모델 할당량이 LAN에 무방비로 노출되지 않습니다. 활성화된 게이트웨이 키가 하나도 없으면 첫 키를 만들 때까지 포워딩 인터페이스도 서비스를 거부합니다. 변경 사항은 앱을 다시 시작해야 적용됩니다. 「웹 관리 패널도 함께 공개」는 관리 화면까지 LAN에 공개하며(다른 기기의 브라우저에서 로컬 IP를 열면 관리 가능), 기본적으로 꺼져 있습니다. 데스크톱 패널은 계속 이 프로그램에서만 제공됩니다.", "({n} 个整组隐藏)": " (그룹 {n}개 전체 숨김)", "({n} 行)": "({n}행)", "({n} 项被覆盖)": "({n}개 덮어씀)", "(全部为默认值)": "(모두 기본값)", "(官方原文)": "(공식 원문)", "(已存一份正文,{n} 行;切成「替换 / 追加」后生效)": "(저장된 본문 있음, {n}행; 「교체 / 추가」로 전환하면 적용)", "(已改)": "(수정됨)", "(已注册过会跳过这一步,直接生效)。": "(이미 등록한 경우 이 단계를 건너뛰고 바로 적용됩니다).", "(当前生效的就是这一份,{n} 行)": "(현재 적용 중인 본문, {n}행)", "(文件:{path})": "(파일: {path})", "(未生效)": "(미적용)", ",{items}": ", {items}", ",{time}": ", {time}", ",以及代理池 / 订阅里可能存在的代理凭据。请使用只有你能访问的私有存储;账号密钥由同步密码单独加密,泄露存储本身不等于泄露账号。": ", 그리고 프록시 풀/구독에 있을 수 있는 프록시 자격 증명이 포함됩니다. 본인만 접근할 수 있는 전용 스토리지를 사용하세요. 계정 키는 동기화 비밀번호로 별도 암호화되므로 스토리지가 유출되어도 계정이 유출되지는 않습니다.", ",包括恢复后需要重新登录管理面板。": " 통째로 교체됩니다. 복원 후에는 패널에 다시 로그인해야 합니다.", ",可直接用于登录。请妥善保管,不要外传或上传到公共位置。": ", 바로 로그인에 사용할 수 있습니다. 안전하게 보관하고 외부에 전달하거나 공공장소에 업로드하지 마세요.", ",文件里后续的改动在清空这里之前不再生效": ", 파일의 이후 변경 사항은 여기를 비우기 전까지 적용되지 않습니다", ",替换前的数据已备份为 {name}": ", 교체 전 데이터는 {name}(으)로 백업되어 있습니다", ",自定义提供商新增 {added} 个、更新 {updated} 个": ", 커스텀 제공자 {added}개 추가, {updated}개 업데이트", ";开关关闭时词表不执行": "; 스위치가 꺼져 있으면 규칙을 실행하지 않습니다", ";网页管理面板已一并开放(浏览器打开同一地址)": "; 웹 관리 패널도 함께 공개되었습니다(브라우저에서 같은 주소를 여세요)" }); diff --git a/desktop-tauri/ui/i18n/pt-BR/requests.js b/desktop-tauri/ui/i18n/pt-BR/requests.js index 87a07224..ac5e5a8f 100644 --- a/desktop-tauri/ui/i18n/pt-BR/requests.js +++ b/desktop-tauri/ui/i18n/pt-BR/requests.js @@ -1,2 +1,2 @@ /* Agent2API 词典构建产物:pt-BR/requests —— 由 desktop-tauri/i18n/build.mjs 生成,请勿手改;源头是 i18n-src/*.json */ -window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { " · {n} 进行中": " · {n} em andamento", " · 会话粘住": " · sessão presa", "
    无响应原文
    ": "
    Sem resposta original
    ", "
    无法解析响应内容
    ": "
    Não foi possível interpretar o conteúdo da resposta
    ", "
    无法解析请求体(不是含 messages 数组的 JSON)
    ": "
    Não foi possível interpretar o corpo da requisição (não é um JSON com um array messages)
    ", "
    无请求原文
    ": "
    Sem requisição original
    ", "
    调用工具 {name}
    ": "
    Chamada de ferramenta {name}
    ", "响应原文": "Resposta original", "思考过程": "Processo de raciocínio", "请求原文": "Requisição original", "HTTP {status},但响应体阶段出错": "HTTP {status}, mas o erro ocorreu na fase do corpo da resposta", "HTTP {status},但响应体阶段出错:见错误列": "HTTP {status}, mas o erro ocorreu na fase do corpo da resposta: ver a coluna Erro", "{duration} / 首帧 {first}": "{duration} / 1ª resposta {first}", "{m}分{s}秒": "{m}min {s}s", "{n}秒": "{n}s", "{s}秒{ms}ms": "{s}s{ms}ms", "↻ {n} 次": "↻ {n}x", "↻ 重试 {n} 次": "↻ {n} retries", "✅ 压缩完成": "✅ Compactação concluída", "「仅看进行中」开启时,状态固定为进行中": "Com “Somente em andamento” ativado, o status fica fixo em Em andamento", "上游模型繁忙,请求已排进上游队列;网关正按上游建议的时长等待后重发(不是登录态或额度问题)": "O modelo do upstream está ocupado e a requisição entrou na fila do upstream; o Gateway aguarda o tempo sugerido pelo upstream antes de reenviar (não é problema de estado de login nem de cota)", "上游没有返回积分消耗": "O upstream não informou o consumo de pontos", "上游状态码: {status}": "Status do upstream: {status}", "上游请求已发出,正在等第一个字节到达(模型的思考时间也在这段)": "A requisição foi enviada ao upstream; aguardando a chegada do primeiro byte (o tempo de raciocínio do modelo também faz parte disso)", "上游返回错误": "O upstream retornou um erro", "下游请求的模型:{model}": "Modelo solicitado pelo downstream: {model}", "仅清空报文原文": "Limpar apenas os payloads", "仅看进行中": "Somente em andamento", "令牌": "Tokens", "体积": "Tamanho", "保留 {count} 条请求记录 · 将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "Preservar {count} registros · Limpar {upstream} payloads do upstream e {downstream} corpos do downstream · Tamanho do banco {db}", "保留 {count} 条请求记录;将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。用量统计与报表不变。": "Preserva {count} registros de requisições e limpa {upstream} payloads de depuração do upstream e {downstream} corpos do downstream. As estatísticas de uso e os relatórios permanecem inalterados.", "保留统计行与报表,只抹掉请求 / 响应正文。清理后详情弹窗的「预览对话」将无原文可看,统计数字分毫不动。": "Mantém as linhas de estatísticas e os relatórios e apaga apenas o corpo da requisição / da resposta. Após a limpeza, a “Prévia da conversa” no diálogo de detalhes não terá mais o texto original; os números das estatísticas não mudam em nada.", "保留请求记录、用量统计与报表,同时清理上游调试报文和下游请求 / 响应正文。清理后「预览对话」与「原始报文」不再保留原文。有筛选时只清理命中请求的报文;无筛选时清空两侧全部报文。此操作无法恢复。": "Preserva os registros de requisições, as estatísticas de uso e os relatórios, mas limpa os payloads de depuração do upstream e os corpos de requisição / resposta do downstream. A prévia da conversa e o payload bruto deixam de conter o conteúdo original. Com filtros, limpa apenas os payloads das requisições correspondentes; sem filtros, limpa todos os payloads dos dois lados. Esta ação não pode ser desfeita.", "全部删除": "Excluir tudo", "全部提供商": "Todos os provedores", "全部模型": "Todos os modelos", "全部状态": "Todos os status", "全部请求数据": "todos os dados de requisições", "共 {images} 张图片,复用 {cached} 张识读结果": "{images} imagens; {cached} leituras reutilizadas", "共 {n} 次尝试": "{n} tentativas no total", "共 {n} 次尝试,最终由 {provider} 承载": "{n} tentativas no total; a última foi atendida por {provider}", "其它": "Outro", "内容按原样保存,请求头中的凭据字段已替换为 [redacted]": "Conteúdo salvo como está; os campos de credenciais nos cabeçalhos da requisição foram substituídos por [redacted]", "内部重试": "Retries internos", "切换路径:": "Caminho de troca: ", "列表数据已刷新,请重试(关闭后重新打开这条详情)": "Os dados da lista foram atualizados; tente novamente (feche e reabra este detalhe)", "删除日志记录本身。当前有筛选时只删命中的条目,按天聚合报表不受影响;无筛选时清空全部并重置报表。此方式无法恢复。": "Exclui os próprios registros de log. Com filtros ativos, exclui apenas os itens correspondentes e os relatórios agregados por dia não são afetados; sem filtros, limpa tudo e redefine os relatórios. Esta ação não pode ser desfeita.", "删除请求记录,并同步清理对应的上游调试报文与下游正文。有筛选时只删除命中的记录,按天聚合报表不受影响;无筛选时清空全部并重置报表。此操作无法恢复。": "Exclui os registros de requisições junto com os payloads de depuração do upstream e os corpos do downstream correspondentes. Com filtros, exclui apenas os registros correspondentes e preserva os relatórios diários; sem filtros, limpa tudo e redefine os relatórios. Esta ação não pode ser desfeita.", "压缩中…": "Compactando…", "压缩失败:{message}": "Falha na compactação: {message}", "压缩已在后台开始,完成后会自动提示": "A compactação começou em segundo plano; você será avisado quando ela terminar", "压缩已在进行中": "A compactação já está em andamento", "压缩已在进行中,接上它的进度等待完成": "A compactação já está em andamento; retomando o progresso dela e aguardando a conclusão", "压缩数据库": "Compactar banco de dados", "压缩正在后台执行,完成后自动恢复": "A compactação está em execução em segundo plano; tudo volta ao normal automaticamente quando ela terminar", "原始报文": "Payload bruto", "原模型": "Modelo original", "另有 {missing} 次尝试未记录明细(只保留最早的 {kept} 条)": "Mais {missing} tentativas sem detalhes registrados (mantidas apenas as {kept} primeiras)", "另有 {n} 个词命中": "Mais {n} palavras atingidas", "只显示正在转发中的请求(状态列按阶段显示:连接中 / 等待响应 / 响应中 / 重试中,用时列显示已用时)": "Mostra apenas requisições em encaminhamento (a coluna Status mostra a fase: Conectando / Aguardando resposta / Respondendo / Retentando; a coluna Duração mostra o tempo decorrido)", "只看失败": "Somente falhas", "只看成功": "Somente sucessos", "只看进行中": "Somente em andamento", "命中了敏感词": "Atingiu uma palavra sensível", "命中的敏感词": "Palavras sensíveis atingidas", "响应中": "Respondendo", "响应体": "Corpo da resposta", "响应头": "Cabeçalhos da resposta", "回收已删除数据占用的磁盘空间(checkpoint + VACUUM,后台执行)": "Recupera o espaço em disco ocupado por dados excluídos (checkpoint + VACUUM, em segundo plano)", "图片处理用时:{n} 秒": "Tempo de processamento de imagens: {n} segundos", "在设置 → 通用里开启「调试模式」后,新发生的请求才会保存报文": "Ative o “Modo debug” em Configurações → Geral para que novas requisições passem a salvar o payload", "在路由页查看": "Ver na página de roteamento", "处理中": "Processando", "失败请求不记录用量": "Requisições com falha não registram uso", "失败({status}):{error}": "Falhou ({status}): {error}", "失败:{error}": "Falhou: {error}", "实际发给上游 {bytes} 字节": "{bytes} bytes enviados de fato ao upstream", "客户端": "Cliente", "将删除 {count} 条日志 · 其中 {raw} 条仍带报文原文 · 数据库占用 {db}": "Serão excluídos {count} logs · {raw} ainda com payload · tamanho do banco: {db}", "将删除 {count} 条请求记录 · 同步清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "Excluir {count} registros · Limpar {upstream} payloads do upstream e {downstream} corpos do downstream · Tamanho do banco {db}", "将删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "Exclui {count} registros de requisições e limpa {upstream} payloads de depuração do upstream e {downstream} corpos do downstream.", "尝试 {n} ·": "Tentativa {n} ·", "尝试明细": "Detalhes das tentativas", "尝试次数": "Tentativas", "工具结果": "Resultado da ferramenta", "工具结果 · {id}": "Resultado da ferramenta · {id}", "工具结果图片": "Imagem do resultado da ferramenta", "已删除 {count} 条": "{count} registros excluídos", "已删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "Foram excluídos {count} registros de requisições e limpos {upstream} payloads de depuração do upstream e {downstream} corpos do downstream.", "已受理终止:上游连接已断开,列表稍后刷新为「请求已被手动终止」": "Abortagem aceita: a conexão com o upstream foi encerrada; a lista será atualizada em instantes como “Requisição abortada manualmente”", "已抹掉 {count} 条报文原文": "{count} payloads removidos", "已清理上游调试报文 {upstream} 条、下游正文 {downstream} 条;请求记录与报表已保留。": "Foram limpos {upstream} payloads de depuração do upstream e {downstream} corpos do downstream; os registros de requisições e os relatórios foram preservados.", "已用时(请求仍在转发中)": "Tempo decorrido (a requisição ainda está sendo encaminhada)", "开启调试模式后仅记录新请求,历史对话无法补录;关闭不会删除已有记录。": "O modo de depuração registra apenas novas requisições; conversas anteriores não podem ser recuperadas. Desativá-lo não exclui os registros existentes.", "当前筛选范围": "os resultados dos filtros atuais", "当前网关未提供上游 / 下游清理统计,请更新网关后再清理。": "Este gateway não fornece contagens de limpeza do upstream / downstream. Atualize o gateway antes de limpar os dados.", "成功": "Sucesso", "成功({status})": "Sucesso ({status})", "所属请求": "Solicitação principal", "执行清理": "Executar limpeza", "报文超过单条上限,请求体 / 响应体已按上限截断": "O payload ultrapassou o limite por registro; o corpo da requisição / da resposta foi truncado no limite", "抹掉原文": "Remover payloads", "按提供商筛选": "Filtrar por provedor", "按提供商筛选(只列日志里出现过的)": "Filtrar por provedor (lista apenas os que aparecem nos logs)", "按时间倒序,全量保留": "Ordem cronológica inversa; mantido integralmente", "按模型筛选": "Filtrar por modelo", "按模型筛选(只列日志里出现过的;精确匹配模型名)": "Filtrar por modelo (lista apenas os que aparecem nos logs; correspondência exata com o nome do modelo)", "按请求结果筛选": "Filtrar pelo resultado da requisição", "排队中": "Na fila", "提供商 / 账号": "Provedor / Conta", "提供商: {provider}": "Provedor: {provider}", "提示": "Aviso", "敏": "PS", "敏感词": "Palavras sensíveis", "数据库占用包含主文件与 WAL 文件;清理后可点击「压缩数据库」回收空闲空间。": "O tamanho do banco inclui o arquivo principal e o arquivo WAL. Após a limpeza, use Compactar banco de dados para recuperar o espaço livre.", "断开上游连接,明细记为「请求已被手动终止」": "Encerra a conexão com o upstream e registra nos detalhes como “Requisição abortada manualmente”", "无报文原文(未开启「调试模式」,或已被清理)": "Sem payload original (o modo de depuração estava desativado, ou o conteúdo foi limpo)", "无结果记录": "Sem resultado registrado", "旧版本保存的正文可能已截断,无法恢复缺失内容": "O corpo salvo por uma versão antiga pode estar truncado; o conteúdo ausente não pode ser recuperado", "时间": "Data/hora", "暂无请求日志,网关还没有转发过请求": "Ainda não há logs de requisições; o Gateway ainda não encaminhou nenhuma requisição", "最终承载:{picked}": "Atendida por fim por: {picked}", "本次请求消耗 {credit} 积分": "Pontos consumidos por esta requisição: {credit}", "本轮尝试失败,正在退避等待或切换到下一个账号": "Esta rodada falhou; aguardando o backoff ou trocando para a próxima conta", "来源客户端:{client}": "Cliente de origem: {client}", "查看该请求的上游原始报文": "Ver o payload bruto do upstream desta requisição", "模型": "Modelo", "模型测试": "Teste de modelo", "模型管理页操作列那颗「测试」发起的请求:与真实请求同一条转发链路,但不计入报表统计": "Requisição iniciada pelo “Teste” na coluna de ações da página de gerenciamento de modelos: usa a mesma rota de encaminhamento das requisições reais, mas não entra nas estatísticas dos relatórios", "正在加载请求日志…": "Carregando logs de requisições…", "正在统计…": "Calculando…", "正文超过单条上限,可能已被截断": "O texto ultrapassou o limite por registro e pode ter sido truncado", "没有符合筛选条件的请求": "Nenhuma requisição corresponde aos filtros", "清理": "Limpar", "清理中…": "Limpando…", "清理失败:{message}": "Falha na limpeza: {message}", "清理方式": "Modo de limpeza", "清理请求已返回,但结果数据不完整,请刷新后确认。": "A requisição de limpeza retornou dados de resultado incompletos. Atualize para confirmar o resultado.", "清理请求日志": "Limpar logs de requisições", "清理预览数据不完整": "Os dados da prévia de limpeza estão incompletos", "清空两侧原文": "Limpar os dois lados", "生产请求": "Requisições de produção", "生成速度:输出 token ÷ 流式段用时(总用时 − 首响);流式段不足总用时一半时按总用时计": "Velocidade de geração: tokens de saída ÷ tempo de streaming (duração total − 1ª resposta); usa a duração total quando a janela de streaming é menor que metade da requisição", "用时": "Duração", "用量": "Uso", "确定对{scope}执行「{label}」?
    {summary}
    此操作无法恢复。": "Executar {label} em {scope}?
    {summary}
    Esta ação não pode ser desfeita.", "确定对全部请求日志执行「{label}」?将处理 {count} 条,此操作无法恢复。": "Confirmar “{label}” em todos os logs de requisições? Serão processados {count} registros. Esta ação não pode ser desfeita.", "确定按当前筛选执行「{label}」?将处理 {count} 条,此操作无法恢复。": "Confirmar “{label}” com os filtros atuais? Serão processados {count} registros. Esta ação não pode ser desfeita.", "确定终止这条正在转发的请求?
    上游连接会立即断开,明细将记为「请求已被手动终止」。": "Tem certeza de que deseja abortar esta requisição em encaminhamento?
    A conexão com o upstream será encerrada imediatamente e os detalhes serão registrados como “Requisição abortada manualmente”.", "等待响应": "Aguardando resposta", "策略 {strategy} · 会话粘性 {sticky}{hit}": "Estratégia {strategy} · Aderência {sticky}{hit}", "终止": "Abortar", "终止失败:{error}": "Falha ao abortar: {error}", "终止请求": "Abortar requisição", "结果": "Resultado", "缓存读取: - / 命中率: -": "Leituras de cache: - / taxa de acerto: -", "缓存读取: {cache} / 命中率: {rate}": "Leituras de cache: {cache} / taxa de acerto: {rate}", "耗时": "Duração", "被跳过:": "Puladas: ", "识别到 User-Agent,但不属于已知的客户端类型:{ua}": "User-Agent detectado, mas não é um tipo de cliente conhecido: {ua}", "识图用量按实际视觉账号单独记录,不混入原模型的回答用量。": "O uso visual é registrado separadamente na conta de visão utilizada, sem se misturar ao uso da resposta do modelo original.", "详情": "Detalhes", "详情内容": "Conteúdo dos detalhes", "请求体": "Corpo da requisição", "请求图片": "Imagem da requisição", "请求在任何账号接手之前就失败了": "A requisição falhou antes de qualquer conta assumi-la", "请求头": "Cabeçalhos da requisição", "请求已受理,正在选路、取凭证、建立上游连接": "Requisição aceita; selecionando rota, obtendo credenciais e estabelecendo a conexão com o upstream", "请求日志列表": "Lista de logs de requisições", "请求日志时间范围": "Período dos logs de requisições", "请求日志表": "Tabela de logs de requisições", "请求正在转发中,用时列显示的是已用时": "A requisição está sendo encaminhada; a coluna Duração mostra o tempo decorrido", "请求筛选": "Filtros de requisições", "请求详情": "Detalhes da requisição", "读取请求日志失败,详见控制台": "Falha ao ler os logs de requisições; veja o console", "路由回放": "Replay de roteamento", "转发到上游的模型:{model}": "Modelo encaminhado ao upstream: {model}", "轮次": "Rodada", "辅助识图调用": "Chamada de leitura assistida", "输入 {input} · 输出 {output} · 总计 {total} · 缓存读 {cache}": "Entrada {input} · Saída {output} · Total {total} · Leitura de cache {cache}", "这条报文由旧版本截断保存,缺失内容无法恢复": "Este payload foi truncado por uma versão antiga; o conteúdo ausente não pode ser recuperado", "这条明细是一次模型测试(人工发起):走的是真实转发链路,但不计入报表统计": "Este detalhe é um teste de modelo (iniciado manualmente): usa a mesma rota de encaminhamento das requisições reais, mas não entra nas estatísticas dos relatórios", "这条明细没有记录提供商(旧数据或请求未走到转发)": "Este detalhe não registrou provedor (dados antigos ou a requisição falhou antes do encaminhamento)", "这条明细没有记录来源客户端(旧数据、模型测试,或请求未带 User-Agent)": "Nenhum cliente de origem registrado nesta entrada (dados antigos, teste de modelo ou solicitação sem User-Agent)", "这条记录命中了敏感词,但没有留下命中明细": "Este registro atingiu palavras sensíveis, mas não deixou detalhes das ocorrências", "这条记录的尝试明细未采集(该字段上线前的旧数据,或请求在转发前就失败)": "Os detalhes das tentativas deste registro não foram coletados (dados antigos, de antes do lançamento deste campo, ou a requisição falhou antes do encaminhamento)", "这条请求没有保存这一段报文": "Esta requisição não salvou este trecho do payload", "进入「{phase}」阶段已持续 {time}": "Na fase “{phase}” há {time}", "进行中": "Em andamento", "进行中…": "Em andamento…", "连接中": "Conectando", "速度": "Velocidade", "重试 {n}": "Retry {n}", "重试中": "Retentando", "重试次数": "Retries", "面板内发起的模型调用,消耗额度并记录 Key,不计入生产报表": "Chamada de modelo iniciada pelo painel; usa cota e registra a API Key, mas não entra nos relatórios de produção", "预览对话": "Prévia da conversa", "预览读取失败": "Falha ao ler a prévia", "预览读取失败:{error}": "Falha ao ler a prévia: {error}", "额外识图用量:{n} Token": "Uso visual adicional: {n} tokens", "首响 {time}": "1ª resposta {time}", "首响:上游首帧到达的耗时": "1ª resposta: tempo até o primeiro frame do upstream chegar", "首响:上游首帧到达的耗时(请求仍在转发中)": "1ª resposta: tempo até o primeiro frame do upstream chegar (a requisição ainda está sendo encaminhada)", "首帧已到,上游内容正在下发": "O primeiro frame chegou; o upstream está enviando o conteúdo", "(请求仍在转发中)": "(a requisição ainda está sendo encaminhada)", "(账号:{account})": "(conta: {account})", ",{n}毫秒后重试": ", retry em {n}ms", ",{n}秒后重试": ", retry em {n}s" }); +window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { " · {n} 进行中": " · {n} em andamento", " · 会话粘住": " · sessão presa", "
    无响应原文
    ": "
    Sem resposta original
    ", "
    无法解析响应内容
    ": "
    Não foi possível interpretar o conteúdo da resposta
    ", "
    无法解析请求体(不是含 messages 数组的 JSON)
    ": "
    Não foi possível interpretar o corpo da requisição (não é um JSON com um array messages)
    ", "
    无请求原文
    ": "
    Sem requisição original
    ", "
    调用工具 {name}
    ": "
    Chamada de ferramenta {name}
    ", "响应原文": "Resposta original", "思考过程": "Processo de raciocínio", "请求原文": "Requisição original", "HTTP {status},但响应体阶段出错": "HTTP {status}, mas o erro ocorreu na fase do corpo da resposta", "HTTP {status},但响应体阶段出错:见错误列": "HTTP {status}, mas o erro ocorreu na fase do corpo da resposta: ver a coluna Erro", "{duration} / 首帧 {first}": "{duration} / 1ª resposta {first}", "{m}分{s}秒": "{m}min {s}s", "{n}秒": "{n}s", "{s}秒{ms}ms": "{s}s{ms}ms", "↻ {n} 次": "↻ {n}x", "↻ 重试 {n} 次": "↻ {n} retries", "✅ 压缩完成": "✅ Compactação concluída", "「仅看进行中」开启时,状态固定为进行中": "Com “Somente em andamento” ativado, o status fica fixo em Em andamento", "上游模型繁忙,请求已排进上游队列;网关正按上游建议的时长等待后重发(不是登录态或额度问题)": "O modelo do upstream está ocupado e a requisição entrou na fila do upstream; o Gateway aguarda o tempo sugerido pelo upstream antes de reenviar (não é problema de estado de login nem de cota)", "上游没有返回积分消耗": "O upstream não informou o consumo de pontos", "上游状态码: {status}": "Status do upstream: {status}", "上游请求已发出,正在等第一个字节到达(模型的思考时间也在这段)": "A requisição foi enviada ao upstream; aguardando a chegada do primeiro byte (o tempo de raciocínio do modelo também faz parte disso)", "上游返回错误": "O upstream retornou um erro", "下游请求的模型:{model}": "Modelo solicitado pelo downstream: {model}", "仅清空报文原文": "Limpar apenas os payloads", "仅看进行中": "Somente em andamento", "令牌": "Tokens", "体积": "Tamanho", "供应商": "Provedor", "供应商归属规则": "Regras de atribuição por provedor", "保存中…": "Salvando…", "保存归属规则": "Salvar regra de atribuição", "保留 {count} 条请求记录 · 将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "Preservar {count} registros · Limpar {upstream} payloads do upstream e {downstream} corpos do downstream · Tamanho do banco {db}", "保留 {count} 条请求记录;将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。用量统计与报表不变。": "Preserva {count} registros de requisições e limpa {upstream} payloads de depuração do upstream e {downstream} corpos do downstream. As estatísticas de uso e os relatórios permanecem inalterados.", "保留统计行与报表,只抹掉请求 / 响应正文。清理后详情弹窗的「预览对话」将无原文可看,统计数字分毫不动。": "Mantém as linhas de estatísticas e os relatórios e apaga apenas o corpo da requisição / da resposta. Após a limpeza, a “Prévia da conversa” no diálogo de detalhes não terá mais o texto original; os números das estatísticas não mudam em nada.", "保留草稿并读取最新设置": "Manter rascunho e recarregar as configurações", "保留请求记录、用量统计与报表,同时清理上游调试报文和下游请求 / 响应正文。清理后「预览对话」与「原始报文」不再保留原文。有筛选时只清理命中请求的报文;无筛选时清空两侧全部报文。此操作无法恢复。": "Preserva os registros de requisições, as estatísticas de uso e os relatórios, mas limpa os payloads de depuração do upstream e os corpos de requisição / resposta do downstream. A prévia da conversa e o payload bruto deixam de conter o conteúdo original. Com filtros, limpa apenas os payloads das requisições correspondentes; sem filtros, limpa todos os payloads dos dois lados. Esta ação não pode ser desfeita.", "全部删除": "Excluir tudo", "全部提供商": "Todos os provedores", "全部模型": "Todos os modelos", "全部状态": "Todos os status", "全部请求数据": "todos os dados de requisições", "共 {images} 张图片,复用 {cached} 张识读结果": "{images} imagens; {cached} leituras reutilizadas", "共 {n} 次尝试": "{n} tentativas no total", "共 {n} 次尝试,最终由 {provider} 承载": "{n} tentativas no total; a última foi atendida por {provider}", "其它": "Outro", "内容按原样保存,请求头中的凭据字段已替换为 [redacted]": "Conteúdo salvo como está; os campos de credenciais nos cabeçalhos da requisição foram substituídos por [redacted]", "内部重试": "Retries internos", "切换视觉模型": "Alternar para modelo de visão", "切换路径:": "Caminho de troca: ", "列表数据已刷新,请重试(关闭后重新打开这条详情)": "Os dados da lista foram atualizados; tente novamente (feche e reabra este detalhe)", "删除归属规则": "Excluir regra de atribuição", "删除日志记录本身。当前有筛选时只删命中的条目,按天聚合报表不受影响;无筛选时清空全部并重置报表。此方式无法恢复。": "Exclui os próprios registros de log. Com filtros ativos, exclui apenas os itens correspondentes e os relatórios agregados por dia não são afetados; sem filtros, limpa tudo e redefine os relatórios. Esta ação não pode ser desfeita.", "删除请求记录,并同步清理对应的上游调试报文与下游正文。有筛选时只删除命中的记录,按天聚合报表不受影响;无筛选时清空全部并重置报表。此操作无法恢复。": "Exclui os registros de requisições junto com os payloads de depuração do upstream e os corpos do downstream correspondentes. Com filtros, exclui apenas os registros correspondentes e preserva os relatórios diários; sem filtros, limpa tudo e redefine os relatórios. Esta ação não pode ser desfeita.", "压缩中…": "Compactando…", "压缩失败:{message}": "Falha na compactação: {message}", "压缩已在后台开始,完成后会自动提示": "A compactação começou em segundo plano; você será avisado quando ela terminar", "压缩已在进行中": "A compactação já está em andamento", "压缩已在进行中,接上它的进度等待完成": "A compactação já está em andamento; retomando o progresso dela e aguardando a conclusão", "压缩数据库": "Compactar banco de dados", "压缩正在后台执行,完成后自动恢复": "A compactação está em execução em segundo plano; tudo volta ao normal automaticamente quando ela terminar", "原始报文": "Payload bruto", "原模型": "Modelo original", "取消": "Cancelar", "另有 {missing} 次尝试未记录明细(只保留最早的 {kept} 条)": "Mais {missing} tentativas sem detalhes registrados (mantidas apenas as {kept} primeiras)", "另有 {n} 个词命中": "Mais {n} palavras atingidas", "只显示正在转发中的请求(状态列按阶段显示:连接中 / 等待响应 / 响应中 / 重试中,用时列显示已用时)": "Mostra apenas requisições em encaminhamento (a coluna Status mostra a fase: Conectando / Aguardando resposta / Respondendo / Retentando; a coluna Duração mostra o tempo decorrido)", "只看失败": "Somente falhas", "只看成功": "Somente sucessos", "只看进行中": "Somente em andamento", "命中了敏感词": "Atingiu uma palavra sensível", "命中依据:{header} · {pattern}": "Base da correspondência: {header} · {pattern}", "命中的敏感词": "Palavras sensíveis atingidas", "命中规则:{provider} → {client}": "Regra aplicada: {provider} → {client}", "响应中": "Respondendo", "响应体": "Corpo da resposta", "响应头": "Cabeçalhos da resposta", "回收已删除数据占用的磁盘空间(checkpoint + VACUUM,后台执行)": "Recupera o espaço em disco ocupado por dados excluídos (checkpoint + VACUUM, em segundo plano)", "图片处理用时:{n} 秒": "Tempo de processamento de imagens: {n} segundos", "在设置 → 通用里开启「调试模式」后,新发生的请求才会保存报文": "Ative o “Modo debug” em Configurações → Geral para que novas requisições passem a salvar o payload", "在路由页查看": "Ver na página de roteamento", "处理中": "Processando", "失败": "Falhou", "失败请求不记录用量": "Requisições com falha não registram uso", "失败({status}):{error}": "Falhou ({status}): {error}", "失败:{error}": "Falhou: {error}", "实际发给上游 {bytes} 字节": "{bytes} bytes enviados de fato ao upstream", "客户端": "Cliente", "将删除 {count} 条日志 · 其中 {raw} 条仍带报文原文 · 数据库占用 {db}": "Serão excluídos {count} logs · {raw} ainda com payload · tamanho do banco: {db}", "将删除 {count} 条请求记录 · 同步清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "Excluir {count} registros · Limpar {upstream} payloads do upstream e {downstream} corpos do downstream · Tamanho do banco {db}", "将删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "Exclui {count} registros de requisições e limpa {upstream} payloads de depuração do upstream e {downstream} corpos do downstream.", "尝试 {n} ·": "Tentativa {n} ·", "尝试明细": "Detalhes das tentativas", "尝试次数": "Tentativas", "工具结果": "Resultado da ferramenta", "工具结果 · {id}": "Resultado da ferramenta · {id}", "工具结果图片": "Imagem do resultado da ferramenta", "已删除 {count} 条": "{count} registros excluídos", "已删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "Foram excluídos {count} registros de requisições e limpos {upstream} payloads de depuração do upstream e {downstream} corpos do downstream.", "已受理终止:上游连接已断开,列表稍后刷新为「请求已被手动终止」": "Abortagem aceita: a conexão com o upstream foi encerrada; a lista será atualizada em instantes como “Requisição abortada manualmente”", "已完成": "Concluído", "已抹掉 {count} 条报文原文": "{count} payloads removidos", "已清理上游调试报文 {upstream} 条、下游正文 {downstream} 条;请求记录与报表已保留。": "Foram limpos {upstream} payloads de depuração do upstream e {downstream} corpos do downstream; os registros de requisições e os relatórios foram preservados.", "已用时(请求仍在转发中)": "Tempo decorrido (a requisição ainda está sendo encaminhada)", "开启调试模式后仅记录新请求,历史对话无法补录;关闭不会删除已有记录。": "O modo de depuração registra apenas novas requisições; conversas anteriores não podem ser recuperadas. Desativá-lo não exclui os registros existentes.", "归属客户端": "Cliente", "当前筛选范围": "os resultados dos filtros atuais", "当前网关未提供上游 / 下游清理统计,请更新网关后再清理。": "Este gateway não fornece contagens de limpeza do upstream / downstream. Atualize o gateway antes de limpar os dados.", "成功": "Sucesso", "成功({status})": "Sucesso ({status})", "所属请求": "Solicitação principal", "执行清理": "Executar limpeza", "报文超过单条上限,请求体 / 响应体已按上限截断": "O payload ultrapassou o limite por registro; o corpo da requisição / da resposta foi truncado no limite", "抹掉原文": "Remover payloads", "按提供商筛选": "Filtrar por provedor", "按提供商筛选(只列日志里出现过的)": "Filtrar por provedor (lista apenas os que aparecem nos logs)", "按时间倒序,全量保留": "Ordem cronológica inversa; mantido integralmente", "按模型筛选": "Filtrar por modelo", "按模型筛选(只列日志里出现过的;精确匹配模型名)": "Filtrar por modelo (lista apenas os que aparecem nos logs; correspondência exata com o nome do modelo)", "按请求结果筛选": "Filtrar pelo resultado da requisição", "排队中": "Na fila", "提供商 / 账号": "Provedor / Conta", "提供商: {provider}": "Provedor: {provider}", "提示": "Aviso", "搜索供应商": "Pesquisar provedores", "搜索客户端": "Pesquisar clientes", "敏": "PS", "敏感词": "Palavras sensíveis", "数据库占用包含主文件与 WAL 文件;清理后可点击「压缩数据库」回收空闲空间。": "O tamanho do banco inclui o arquivo principal e o arquivo WAL. Após a limpeza, use Compactar banco de dados para recuperar o espaço livre.", "断开上游连接,明细记为「请求已被手动终止」": "Encerra a conexão com o upstream e registra nos detalhes como “Requisição abortada manualmente”", "无报文原文(未开启「调试模式」,或已被清理)": "Sem payload original (o modo de depuração estava desativado, ou o conteúdo foi limpo)", "无结果记录": "Sem resultado registrado", "旧版本保存的正文可能已截断,无法恢复缺失内容": "O corpo salvo por uma versão antiga pode estar truncado; o conteúdo ausente não pode ser recuperado", "时间": "Data/hora", "暂无请求日志,网关还没有转发过请求": "Ainda não há logs de requisições; o Gateway ainda não encaminhou nenhuma requisição", "最终归属(记账时的客户端)": "Atribuição final (o cliente registrado na contabilização)", "最终承载:{picked}": "Atendida por fim por: {picked}", "未改写,保留识别结果": "Não reescrita; o cliente identificado é mantido", "本次请求消耗 {credit} 积分": "Pontos consumidos por esta requisição: {credit}", "本轮尝试失败,正在退避等待或切换到下一个账号": "Esta rodada falhou; aguardando o backoff ou trocando para a próxima conta", "来源客户端:{client}": "Cliente de origem: {client}", "查看该请求的上游原始报文": "Ver o payload bruto do upstream desta requisição", "模型": "Modelo", "模型测试": "Teste de modelo", "模型管理页操作列那颗「测试」发起的请求:与真实请求同一条转发链路,但不计入报表统计": "Requisição iniciada pelo “Teste” na coluna de ações da página de gerenciamento de modelos: usa a mesma rota de encaminhamento das requisições reais, mas não entra nas estatísticas dos relatórios", "正在加载请求日志…": "Carregando logs de requisições…", "正在统计…": "Calculando…", "正文超过单条上限,可能已被截断": "O texto ultrapassou o limite por registro e pode ter sido truncado", "没有符合筛选条件的请求": "Nenhuma requisição corresponde aos filtros", "添加自定义头匹配规则…": "Adicionar regra de cabeçalho personalizada…", "清理": "Limpar", "清理中…": "Limpando…", "清理失败:{message}": "Falha na limpeza: {message}", "清理方式": "Modo de limpeza", "清理请求已返回,但结果数据不完整,请刷新后确认。": "A requisição de limpeza retornou dados de resultado incompletos. Atualize para confirmar o resultado.", "清理请求日志": "Limpar logs de requisições", "清理预览数据不完整": "Os dados da prévia de limpeza estão incompletos", "清空两侧原文": "Limpar os dois lados", "生产请求": "Requisições de produção", "生成速度:输出 token ÷ 流式段用时(总用时 − 首响);流式段不足总用时一半时按总用时计": "Velocidade de geração: tokens de saída ÷ tempo de streaming (duração total − 1ª resposta); usa a duração total quando a janela de streaming é menor que metade da requisição", "用时": "Duração", "用量": "Uso", "确定对{scope}执行「{label}」?
    {summary}
    此操作无法恢复。": "Executar {label} em {scope}?
    {summary}
    Esta ação não pode ser desfeita.", "确定对全部请求日志执行「{label}」?将处理 {count} 条,此操作无法恢复。": "Confirmar “{label}” em todos os logs de requisições? Serão processados {count} registros. Esta ação não pode ser desfeita.", "确定按当前筛选执行「{label}」?将处理 {count} 条,此操作无法恢复。": "Confirmar “{label}” com os filtros atuais? Serão processados {count} registros. Esta ação não pode ser desfeita.", "确定终止这条正在转发的请求?
    上游连接会立即断开,明细将记为「请求已被手动终止」。": "Tem certeza de que deseja abortar esta requisição em encaminhamento?
    A conexão com o upstream será encerrada imediatamente e os detalhes serão registrados como “Requisição abortada manualmente”.", "等待响应": "Aguardando resposta", "策略 {strategy} · 会话粘性 {sticky}{hit}": "Estratégia {strategy} · Aderência {sticky}{hit}", "终止": "Abortar", "终止失败:{error}": "Falha ao abortar: {error}", "终止请求": "Abortar requisição", "结果": "Resultado", "缓存读取: - / 命中率: -": "Leituras de cache: - / taxa de acerto: -", "缓存读取: {cache} / 命中率: {rate}": "Leituras de cache: {cache} / taxa de acerto: {rate}", "编辑这条头匹配规则…": "Editar esta regra de cabeçalho…", "耗时": "Duração", "自定义 · {name}": "Personalizado · {name}", "被跳过:": "Puladas: ", "设置识别规则": "Definir regras de identificação", "识别到 User-Agent,但不属于已知的客户端类型:{ua}": "User-Agent detectado, mas não é um tipo de cliente conhecido: {ua}", "识别结果(请求头识别出的真实客户端)": "Resultado da identificação (o cliente real reconhecido pelos cabeçalhos)", "识图用量按实际视觉账号单独记录,不混入原模型的回答用量。": "O uso visual é registrado separadamente na conta de visão utilizada, sem se misturar ao uso da resposta do modelo original.", "该供应商已有归属规则,保存将覆盖它": "Este provedor já tem uma regra de atribuição; salvar vai substituí-la", "详情": "Detalhes", "详情内容": "Conteúdo dos detalhes", "请求体": "Corpo da requisição", "请求图片": "Imagem da requisição", "请求在任何账号接手之前就失败了": "A requisição falhou antes de qualquer conta assumi-la", "请求头": "Cabeçalhos da requisição", "请求头识别为 {identified},已改写归属为 {client}": "Identificado como {identified} pelos cabeçalhos da requisição; atribuição reescrita para {client}", "请求已受理,正在选路、取凭证、建立上游连接": "Requisição aceita; selecionando rota, obtendo credenciais e estabelecendo a conexão com o upstream", "请求日志列表": "Lista de logs de requisições", "请求日志时间范围": "Período dos logs de requisições", "请求日志表": "Tabela de logs de requisições", "请求正在转发中,用时列显示的是已用时": "A requisição está sendo encaminhada; a coluna Duração mostra o tempo decorrido", "请求筛选": "Filtros de requisições", "请求详情": "Detalhes da requisição", "请选择供应商": "Selecione um provedor", "请选择归属客户端": "Selecione um cliente", "读取请求日志失败,详见控制台": "Falha ao ler os logs de requisições; veja o console", "路由回放": "Replay de roteamento", "转发到上游的模型:{model}": "Modelo encaminhado ao upstream: {model}", "轮次": "Rodada", "辅助识图": "Leitura de imagem assistida", "辅助识图调用": "Chamada de leitura assistida", "输入 {input} · 输出 {output} · 总计 {total} · 缓存读 {cache}": "Entrada {input} · Saída {output} · Total {total} · Leitura de cache {cache}", "这条报文由旧版本截断保存,缺失内容无法恢复": "Este payload foi truncado por uma versão antiga; o conteúdo ausente não pode ser recuperado", "这条明细是一次模型测试(人工发起):走的是真实转发链路,但不计入报表统计": "Este detalhe é um teste de modelo (iniciado manualmente): usa a mesma rota de encaminhamento das requisições reais, mas não entra nas estatísticas dos relatórios", "这条明细没有记录提供商(旧数据或请求未走到转发)": "Este detalhe não registrou provedor (dados antigos ou a requisição falhou antes do encaminhamento)", "这条明细没有记录来源客户端(旧数据、模型测试,或请求未带 User-Agent)": "Nenhum cliente de origem registrado nesta entrada (dados antigos, teste de modelo ou solicitação sem User-Agent)", "这条记录命中了敏感词,但没有留下命中明细": "Este registro atingiu palavras sensíveis, mas não deixou detalhes das ocorrências", "这条记录的尝试明细未采集(该字段上线前的旧数据,或请求在转发前就失败)": "Os detalhes das tentativas deste registro não foram coletados (dados antigos, de antes do lançamento deste campo, ou a requisição falhou antes do encaminhamento)", "这条请求没有保存这一段报文": "Esta requisição não salvou este trecho do payload", "这条请求没有记录供应商(旧数据或未走到转发),不能从这里改归属": "Esta requisição não tem provedor registrado (dados antigos ou nunca chegou ao encaminhamento); a atribuição não pode ser alterada aqui", "进入「{phase}」阶段已持续 {time}": "Na fase “{phase}” há {time}", "进行中": "Em andamento", "进行中…": "Em andamento…", "连接中": "Conectando", "选择供应商": "Selecionar provedor", "选择归属客户端": "Selecionar cliente", "速度": "Velocidade", "重试 {n}": "Retry {n}", "重试中": "Retentando", "重试次数": "Retries", "面板内发起的模型调用,消耗额度并记录 Key,不计入生产报表": "Chamada de modelo iniciada pelo painel; usa cota e registra a API Key, mas não entra nos relatórios de produção", "预览对话": "Prévia da conversa", "预览读取失败": "Falha ao ler a prévia", "预览读取失败:{error}": "Falha ao ler a prévia: {error}", "额外识图用量:{n} Token": "Uso visual adicional: {n} tokens", "首响 {time}": "1ª resposta {time}", "首响:上游首帧到达的耗时": "1ª resposta: tempo até o primeiro frame do upstream chegar", "首响:上游首帧到达的耗时(请求仍在转发中)": "1ª resposta: tempo até o primeiro frame do upstream chegar (a requisição ainda está sendo encaminhada)", "首帧已到,上游内容正在下发": "O primeiro frame chegou; o upstream está enviando o conteúdo", "默认归属客户端": "Cliente de atribuição padrão", "(请求仍在转发中)": "(a requisição ainda está sendo encaminhada)", "(账号:{account})": "(conta: {account})", ",{n}毫秒后重试": ", retry em {n}ms", ",{n}秒后重试": ", retry em {n}s" }); diff --git a/desktop-tauri/ui/i18n/pt-BR/settings.js b/desktop-tauri/ui/i18n/pt-BR/settings.js index 72f490f5..3dd48faa 100644 --- a/desktop-tauri/ui/i18n/pt-BR/settings.js +++ b/desktop-tauri/ui/i18n/pt-BR/settings.js @@ -1,2 +1,2 @@ /* Agent2API 词典构建产物:pt-BR/settings —— 由 desktop-tauri/i18n/build.mjs 生成,请勿手改;源头是 i18n-src/*.json */ -window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { " 到 {file}": " para {file}", " 正文已改:{edited}(其余段用官方原文)。": " Texto alterado: {edited} (os demais blocos usam o texto oficial).", "(无 id)": "(sem id)", "/v1 拒绝无 Key 请求": "/v1 rejeita requisições sem chave", "0 B": "0 B", "100%(默认)": "100% (padrão)", "<本机IP>": "", "ALTCHA(本地验证)": "ALTCHA (verificação local)", "Access Key ID": "Access Key ID", "Agent2API 手机端": "Agent2API Mobile", "Android 应用(APK)": "Aplicativo Android (APK)", "Cline 上游按请求头判定「调用方是不是 Cline 自家产品」:X-CLIENT-TYPE: cline-sdk 是硬门槛(缺了它免费池模型一律 403),版本号与平台标识让请求更贴近官方客户端的形态。这里列出的是网关默认会发的头:改某一行的值 = 覆盖默认值(也可以新增默认清单之外的自定义头);把值清空保存 = 这个头不发送;在界面删掉被改过的行 = 回落默认值。改完点「保存」,下一个 Cline 请求立即生效。不懂某一行的含义就不要动它 —— 伪装头的价值在「与官方客户端逐字一致」。": "O upstream da Cline decide pelos cabeçalhos da requisição se o chamador é um produto da própria Cline: X-CLIENT-TYPE: cline-sdk é um requisito obrigatório (sem ele, os modelos do pool gratuito retornam 403 sempre), e o número de versão e o identificador de plataforma aproximam a requisição do formato do cliente oficial. Os cabeçalhos listados aqui são os que o gateway envia por padrão: alterar o valor de uma linha = sobrescrever o padrão (também é possível adicionar cabeçalhos personalizados além da lista padrão); salvar com o valor vazio = esse cabeçalho não é enviado; excluir na interface uma linha alterada = voltar ao padrão. Ao terminar, clique em “Salvar” e a próxima requisição da Cline já usará as mudanças. Se você não entende o significado de uma linha, não a altere — o valor dos cabeçalhos spoofed está em ser idêntico palavra por palavra ao cliente oficial.", "Cline 伪装头": "Cabeçalhos spoofed do Cline", "Cline 伪装头已刷新": "Cabeçalhos spoofed do Cline atualizados", "Docker 容器": "Contêiner Docker", "Endpoint": "Endpoint", "Endpoint 填 https://<账户ID>.r2.cloudflarestorage.com,Region 固定填 auto。": "Defina o Endpoint como https://.r2.cloudflarestorage.com e a Region como auto.", "Endpoint 填 https://cos.ap-guangzhou.myqcloud.com,Region 填 ap-guangzhou(按实际地域改)。": "Defina o Endpoint como https://cos.ap-guangzhou.myqcloud.com e a Region como ap-guangzhou (ajuste para a sua região).", "Endpoint 填 https://obs.cn-north-4.myhuaweicloud.com,Region 填 cn-north-4(按实际地域改)。": "Defina o Endpoint como https://obs.cn-north-4.myhuaweicloud.com e a Region como cn-north-4 (ajuste para a sua região).", "Endpoint 填 https://oss-cn-hangzhou.aliyuncs.com,Region 填 cn-hangzhou(按实际地域改)。": "Defina o Endpoint como https://oss-cn-hangzhou.aliyuncs.com e a Region como cn-hangzhou (ajuste para a sua região).", "Endpoint 形如 http://192.168.1.10:9000(自建通常用 http);Region 一般填 us-east-1。": "O Endpoint tem o formato http://192.168.1.10:9000 (auto-hospedado geralmente usa http); a Region costuma ser us-east-1.", "Endpoint 留空即走 AWS 官方地址;Region 必须与桶所在区域一致。": "Deixe o Endpoint vazio para usar o endereço oficial da AWS; a Region deve corresponder à região do bucket.", "KB": "KB", "Linux 安装包(deb)": "Pacote Linux (deb)", "Logo 不能超过 2 MiB": "O logo não pode exceder 2 MiB", "Logo 仅支持 PNG、JPG、WebP 图片": "O logo aceita apenas imagens PNG, JPG e WebP", "Nextcloud": "Nextcloud", "OpenAI 新版 API 用 developer 角色取代 system 承载指令,新版 OpenAI SDK 与部分客户端发的对话里会出现 role 为 developer 的消息;不少 OpenAI 兼容上游(尤其是自定义提供商的透传路径)不认识这个角色,收到就报 400。开启本项后,网关在每次转发前把 developer 角色的消息改写为 system —— 两类角色在 OpenAI 语义上等价(OpenAI 自己的迁移指南也是这么映射的),改写不影响对话内容与语义;对本来就只认 system 的各家内置上游同样无害。默认开启;关掉后 developer 消息会原样发往上游,不认识它的上游会报「角色不存在」一类的错误。": "A API mais recente da OpenAI carrega instruções num papel developer em vez de system, então conversas enviadas por SDKs OpenAI atuais e alguns clientes contêm mensagens com role \"developer\". Muitos upstreams compatíveis com OpenAI (especialmente o caminho de passagem dos provedores personalizados) não reconhecem esse papel e rejeitam a solicitação inteira com 400. Quando ativado, o gateway reescreve mensagens do papel developer para system antes de cada encaminhamento — os dois papéis são equivalentes na semântica da OpenAI (o próprio guia de migração da OpenAI faz o mesmo mapeamento), então a reescrita não altera conteúdo nem significado, e é inofensiva aos upstreams integrados que só aceitam system. Ativado por padrão; desativado, as mensagens developer vão para o upstream como estão e upstreams que não conhecem o papel retornam erros do tipo \"papel inexistente\".", "QQ 群 · Telegram": "Grupos do QQ · Telegram", "S3 兼容存储": "Armazenamento compatível com S3", "Safari 没有安装按钮:点底部的「分享」,选「添加到主屏幕」,再点「添加」。": "O Safari não tem botão de instalar: toque em Compartilhar na parte de baixo, escolha \"Adicionar à Tela de Início\" e toque em \"Adicionar\".", "Secret Access Key": "Secret Access Key", "Token 读数量级": "Escala de leitura de Token", "UTF-8 文本文件路径,留空用内置默认提示词(通用编码助手提示词,不含任何会被上游拦截的模板句)。只在「替换 / 追加」模式下生效,透传模式不读它。": "Caminho de um arquivo de texto UTF-8; deixe vazio para usar o system prompt padrão integrado (um system prompt genérico de assistente de código, sem nenhuma frase de template que o upstream bloqueie). Só tem efeito nos modos “Substituir / Anexar”; o modo Passthrough não o lê.", "WebView / 浏览器内核": "WebView / motor do navegador", "Windows 安装包(NSIS)": "Instalador do Windows (NSIS)", "Windows 服务": "Serviço do Windows", "ZCode 套餐池(Start Plan)通道每条请求都要消耗一个当次铸造的人机验证令牌(一次性,2 分钟过期),库存低于该值时界面自动补铸到它。默认 3 个。调大能吸收突发并发,但用不掉的令牌 2 分钟就过期作废,烧的是上游风控配额。可填 1–10。": "Cada solicitação no canal do pool de planos do ZCode (Start Plan) consome um token de CAPTCHA recém-cunhado (de uso único, expira em 2 minutos); quando o estoque cair abaixo deste valor, a interface cunha mais até ele. Padrão 3. Um valor maior absorve picos, mas tokens não usados expiram em 2 minutos e queimam a cota de controle de risco do upstream. Aceita 1-10.", "ZCode「套餐池(Start Plan)」通道的每条推理请求都要附一个当次铸造的阿里云无痕验证令牌(一次性、约 2 分钟过期):令牌由界面里的铸造守卫静默铸好、推给网关入池,转发时逐条取用。这里的三个值管的是补货节奏:①「库存目标」= 库存低于它守卫才补铸、补到它为止,默认 3 个;②「轮询间隔」= 守卫多久看一次库存,默认 2500 毫秒,只影响反应速度(库存够用时不会多铸);③「单轮铸造上限」= 发现缺货时一轮最多铸几个,默认 1 个(连铸之间固定隔 500 毫秒)。请求密集、请求日志里连续出现「需要人机验证令牌」的 503 时,把目标与单轮上限适当调大、轮询调快,能让池子跟得上消耗 —— 代价是上游(阿里云)对铸造频率有风控,铸得越多越快越容易触发限流,且用不掉的令牌 2 分钟即过期作废、等于白烧配额,所以建议小步调。保存后对下一轮补货立即生效,不用重启。": "Cada solicitação de inferência no canal \"Pool de planos (Start Plan)\" do ZCode deve carregar um token invisível de CAPTCHA da Aliyun recém-cunhado (de uso único, expira em cerca de 2 minutos): os tokens são cunhados silenciosamente pelo guardião de cunhagem na interface e empurrados para o pool do gateway, de onde o encaminhamento toma um por solicitação. Os três valores aqui governam o ritmo de reposição: ① \"Meta de estoque\" = o guardião só cunha mais quando o estoque cai abaixo dela, até ela (padrão 3); ② \"Intervalo de sondagem\" = com que frequência o guardião verifica o estoque, padrão 2500 ms (afeta apenas a velocidade de reação — não cunha além quando o estoque basta); ③ \"Limite de cunhagem por rodada\" = o máximo de tokens cunhados em uma rodada ao detectar falta, padrão 1 (cunhagens consecutivas são fixadas a 500 ms). Quando as solicitações forem densas e o registro mostrar 503 \"precisa de token de CAPTCHA\" em sequência, aumente a meta e o limite por rodada e acelere a sondagem para o pool acompanhar — a contrapartida é que o upstream (Aliyun) limita a frequência de cunhagem: quanto mais e mais rápido cunhar, maior a chance de esbarrar no limite, e tokens não usados expiram em 2 minutos de qualquer forma, queimando cota à toa — ajuste em passos pequenos. Salvar entra em vigor na próxima rodada de reposição, sem reinício.", "beta 版": "Versão beta", "iOS 应用": "Aplicativo iOS", "models.dev 元数据": "Metadados models.dev", "models.dev 元数据已更新({count} 条)": "Metadados do models.dev atualizados ({count} entradas)", "models.dev 是一个开源的模型资料库(社区维护),这里用它补齐「上游没告诉我们」的模型能力:上下文窗口、最大输出、工具调用、图片、视频、是否支持思考,以及这个模型认识哪些思考档位。优先级是:你在「模型能力」里手工改的值 > 上游清单自己声明的值 > models.dev 的值 —— 它只填上游没声明的空位,从不推翻上游已声明的。网关随包内嵌了一份快照,所以离线、首次启动、访问不通时也有数据;开启时会按「模型目录刷新」任务的间隔联网更新(同一轮里一并刷新,也可在这里立即刷新)。关闭只停联网刷新,已经拿到的数据继续用。": "O models.dev é um banco de dados de modelos aberto e mantido pela comunidade. Ele preenche o que o upstream não informa: janela de contexto, saída máxima, chamada de ferramentas, imagem, vídeo, suporte a raciocínio e quais níveis de raciocínio o modelo realmente aceita. Prioridade: valores que você editou em \"Capacidades do modelo\" > o que o catálogo do upstream declara > models.dev — ele só preenche lacunas deixadas pelo upstream e nunca sobrepõe um valor declarado. Um snapshot vem embutido no app, então offline, primeira execução e rede bloqueada continuam tendo dados; quando ativado, atualiza online no intervalo da tarefa \"Atualização do catálogo de modelos\" (na mesma rodada, ou sob demanda aqui). Desativar apenas interrompe a atualização online; os dados já obtidos continuam em uso.", "models.dev 模型元数据": "Metadados de modelos do models.dev", "systemd 服务": "Serviço systemd", "{count} 条": "{count} entradas", "{count} 条 · 来自{origin}{at} · {mode}": "{count} entradas · de {origin}{at} · {mode}", "{count} 条规则,按列表顺序执行": "{count} regras, executadas na ordem da lista", "{d} 天 {h} 小时": "{d}d {h}h", "{h} 小时 {m} 分钟": "{h}h {m}min", "{label} 提示词文件": "Arquivo de prompt de {label}", "{label} 的提示词模式": "Modo de prompt de {label}", "{label}({message})": "{label} ({message})", "{lines} 行、{chars} 字符(按当前草稿计)": "{lines} linhas, {chars} caracteres (com base no rascunho atual)", "{minutes} 分钟": "{minutes} minutos", "{models} 同时出现在两块设置里,会按「辅助识图」处理。想改的话,把其中一个从这边的模型名单里去掉。": "{models} aparece nos dois blocos e será tratado por leitura assistida de imagem. Para mudar isso, remova-o de uma das listas.", "{mode}生效:上游收到的 system 来自{source}{lines}。": "Modo {mode} ativo: o system enviado ao upstream vem de {source}{lines}.", "{m} 分钟": "{m}min", "{noun}不能为空(可填 {min}–{max})": "{noun}: não pode ficar em branco (valores aceitos: {min}–{max})", "{noun}必须在 {min}–{max} 之间(当前填的是 {text})": "{noun}: deve estar entre {min} e {max} (valor atual: {text})", "{noun}必须是整数": "{noun}: deve ser um número inteiro", "{n} B": "{n} B", "{n} GB": "{n} GB", "{n} KB": "{n} KB", "{n} MB": "{n} MB", "{n} 个头将随每个 Cline 请求发送": "{n} cabeçalhos serão enviados em cada requisição da Cline", "{n} 台可选 · 点此切换": "{n} servidores · toque para trocar", "{n} 项 · {shown} 显示": "{n} itens · {shown} visíveis", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "{total} menus · {shown} visíveis · {hidden} ocultos · {groups} grupos", "{way}的适用模型": "Modelos para {way}", "⚠️ 密钥警告": "⚠️ Aviso de chaves", "⚠️ 已关闭「{label}」的机器人校验": "⚠️ Verificação de bot desativada para \"{label}\"", "⚠️ 机器人校验已关闭": "⚠️ Captcha desativado", "✅ Cline 伪装头已保存": "✅ Cabeçalhos spoofed do Cline salvos", "✅ models.dev 模型元数据已开启": "✅ Metadados de modelos do models.dev ativados", "✅ 云同步设置已保存": "✅ Configurações de sincronização na nuvem salvas", "✅ 会话图片压缩已开启": "✅ Compressão de imagens ativada", "✅ 出站指纹脱敏已开启": "✅ Mascaramento de fingerprint de saída ativado", "✅ 密码已修改,其他设备的登录已失效": "✅ Senha alterada. Os acessos em outros dispositivos foram revogados", "✅ 导入完成:{summary}": "✅ Importação concluída: {summary}", "✅ 已上传到云端({size})": "✅ Enviado para a nuvem ({size})", "✅ 已为「{label}」装上网关自带提示词": "✅ System prompt interno do gateway instalado para “{label}”", "✅ 已从云端恢复{note}": "✅ Restaurado da nuvem{note}", "✅ 已保存:{label}": "✅ Salvo: {label}", "✅ 已保存:{label} {value}": "✅ Salvo: {label} {value}", "✅ 已保存:指定错误码直接换号": "✅ Salvo: troca de conta direta em códigos de erro especificados", "✅ 已保留 {days} 天": "✅ Retenção definida para {days} dias", "✅ 已保留 {days} 天,超出部分已清理": "✅ Retenção definida para {days} dias; o excedente foi removido", "✅ 已加密备份 {n} 张表({size}),包含恢复密钥:{file}": "✅ Backup criptografado de {n} tabelas ({size}), com chaves de recuperação: {file}", "✅ 已备份 {n} 张表({size})到 {file}": "✅ {n} tabelas ({size}) backupadas em {file}", "✅ 已导入账号密钥,请继续下载": "✅ Chave da conta importada; continue o download", "✅ 已导出 {count} 个账号{note}{file}": "✅ {count} contas exportadas{note}{file}", "✅ 已开启「{label}」的机器人校验": "✅ Verificação de bot ativada para \"{label}\"", "✅ 已恢复 {n} 张表{note}": "✅ {n} tabelas restauradas{note}", "✅ 已改用 k / M / B 缩写": "✅ Agora usando abreviações k / M / B", "✅ 已改用本地量级词(万 / 亿式)": "✅ Agora usando magnitudes locais (k / M)", "✅ 已自动创建网关 Key「默认」(可在「网关 Key」页查看)": "✅ Chave do gateway “Padrão” criada automaticamente (veja na página “Chave do gateway”)", "✅ 已解除内容拦截降级": "✅ Fallback de bloqueio de conteúdo removido", "✅ 开发者角色兼容已开启": "✅ Compatibilidade com papel developer ativada", "✅ 指纹脱敏设置已保存": "✅ Configurações de mascaramento salvas", "✅ 数量上限已设为 {count} 条": "✅ Limite definido para {count} registros", "✅ 数量上限已设为 {count} 条,超出部分已清理": "✅ Limite definido para {count} registros; excedentes removidos", "✅ 机器人校验已开启": "✅ Captcha ativado", "✅ 第三方模型回答完自动折叠过程已开启": "✅ Recolhimento automático do trabalho de modelos de terceiros após a resposta ativado", "✅ 设置已保存,应用正在重启…": "✅ Configurações salvas; o aplicativo está reiniciando…", "✅ 调试模式已关闭": "✅ Modo debug desativado", "✅ 调试模式已开启": "✅ Modo debug ativado", "✅ 路由设置已保存": "Configurações de roteamento salvas", "✅ 连接成功:{path}": "✅ Conectado: {path}", "、{n} 个自定义提供商": ", {n} provedores personalizados", "。事件日志、请求明细、调试报文与面板登录态保持不变。替换前会自动把当前业务数据备份到配置目录的 backups/ 下。": ". Logs de eventos, detalhes de requisições, pacotes de depuração e o estado de login do painel permanecem intactos. Os dados de negócio atuais são copiados para backups/ no diretório de configuração antes da substituição.", "「{label}」将从 {previous} 天改为 {days} 天。": "“{label}” passará de {previous} para {days} dias.", "「{label}」将从 {previous} 条改为 {count} 条。": "“{label}” passará de {previous} para {count} registros.", "「{label}」改用内置默认提示词": "“{label}” agora usa o system prompt padrão integrado", "「{label}」的提示词文件已更新": "Arquivo de prompt de “{label}” atualizado", "「{label}」的提示词正文已更新": "Texto do prompt de “{label}” atualizado", "「{label}」的模式改为「{mode}」": "Modo de “{label}” alterado para “{mode}”", "「{label}」的网关自带提示词已改回官方原文": "O system prompt interno do gateway de “{label}” foi revertido para o texto oficial", "「{label}」的网关自带提示词正文已更新": "Texto do system prompt interno do gateway de “{label}” atualizado", "「模型管理」里每个能力的来源标记(上游 / models.dev / 已覆盖)读的就是这份数据;映射弹窗的思考档位下拉也按这里的数据只列该模型真实认识的档位。": "As marcas de origem por capacidade em \"Gerenciamento de modelos\" (upstream / models.dev / substituído) vêm destes dados, e a lista de níveis de raciocínio no diálogo de mapeamento mostra apenas os níveis que o modelo realmente aceita, com base neles.", "「用哪份提示词」本来是按上游分别决定的事,所以每家可以有自己的模式、提示词文件与正文:不在这里列出的提供商一律沿用上面那份默认设置,「跟随默认」把这一家取消、回到默认。带「网关自带」那一行的家(目前是 ZCode 两家)默认就列在这里 —— 那一段是网关自己装上去的文本,不来自客户端也不来自提示词文件,默认开启、可以关掉,也可以改它的正文(改过的那一段以你的文本为准);关掉后还能不能通过上游校验,取决于上游当下的口径,行内说明了实测依据。「模式 / 提示词文件 / 正文」管的是客户端自己的 system 怎么处理,与那个开关是两件事。": "Qual prompt usar é uma decisão tomada por upstream, então cada provedor pode ter seu próprio modo, arquivo de prompt e texto: provedores não listados aqui seguem a configuração padrão acima, e “Seguir padrão” remove a configuração individual desse provedor, voltando ao padrão. Os provedores com a linha “Interno do gateway” (atualmente os dois da ZCode) já aparecem aqui por padrão — esse trecho é um texto instalado pelo próprio gateway, que não vem do cliente nem de um arquivo de prompt, fica ativado por padrão, pode ser desativado e também pode ter o texto editado (os trechos editados usam o seu texto); se ele ainda passa na validação do upstream depois de desativado depende dos critérios atuais do upstream, e a própria linha documenta a base dos testes. “Modo / arquivo de prompt / texto” trata de como o system do próprio cliente é processado — é uma coisa separada daquele switch.", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "\"Configurações\" é fixo, então o grupo dele não pode ser ocultado inteiro; os outros menus podem ser ocultados individualmente", "「请求日志」页的逐条请求记录,默认 99999 天(近似全量保留),可填 1–99999 天。": "Registros de cada requisição na página “Logs de requisições”. Padrão de 99999 dias (retenção praticamente total); aceita de 1 a 99999 dias.", "「请求日志」页的逐条请求记录,默认 99999 天,可填 1–99999 天;同时受数量上限限制。": "Registros por requisição na página de logs de requisições. Padrão de 99999 dias; aceita 1–99999 dias. O limite de registros também se aplica.", "一个 .a2ab 文件即可跨机器恢复,账号、网关 Key、GitHub 令牌与云同步凭据无需另行复制密钥。插件程序与库外文件不在整库备份范围。": "Um único arquivo .a2ab restaura os dados em outra máquina, sem copiar separadamente as chaves de contas, keys do gateway, tokens do GitHub ou credenciais de sincronização. Programas de plugins e arquivos fora do banco não estão incluídos.", "一段内置装配": "um conjunto integrado", "三档数据各自独立计时,超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件;请求日志是网关每次转发到上游的逐条记录;按天聚合供报表页的热力图与按天趋势使用。请求日志与按天聚合默认 99999 天(约 274 年,效果上等于全量保留),事件日志默认 30 天。把某一档改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。三档的可填范围均为 1–99999 天。": "Os três tipos de dados são contados de forma independente e o que excede o período de retenção é excluído: os logs de eventos são eventos do sistema, como login, troca de conta e switch 429; os logs de requisições são o registro de cada encaminhamento do gateway ao upstream; os agregados diários alimentam o mapa de calor e as tendências diárias da página de relatórios. Logs de requisições e agregados diários têm padrão de 99999 dias (cerca de 274 anos — na prática, retenção total), e os logs de eventos, de 30 dias. Reduzir qualquer um deles (por exemplo, de 30 para 7 dias) e salvar exclui imediatamente os dados históricos excedentes, sem possibilidade de recuperação; aumentar ou manter o valor não exclui nada. Os três aceitam de 1 a 99999 dias.", "三段各自成块,所以分开编辑": "Os três blocos são separados, por isso a edição é individual", "上传": "Enviar", "上传 Logo": "Enviar logo", "上传中…": "Enviando…", "上传内容含加密后的账号凭证与网关配置": "O envio contém credenciais de conta criptografadas e configuração do gateway", "上传到云端": "Enviar para a nuvem", "上传失败:{message}": "Falha no envio: {message}", "上次同步:{time}({action})": "Última sincronização: {time} ({action})", "上次成功刷新的结果(存在本机数据库里)": "Resultado da última atualização bem-sucedida (guardado no banco local)", "上游 CLI 版本": "Versão da CLI upstream", "上游客户端版本": "Versão do cliente upstream", "上游按": "O upstream valida a identidade pela ", "上游按「结构」校验身份:三段必须各自成块,所以这里分开编辑三段(不能合成一段)。动态段里的运行值写成占位符,发请求时才替换:{cwd} 工作目录、{platform} 平台、{shell} shell、{os_version} 系统版本、{git} 是否 git 仓库、{provider} 提供方标识、{model} 模型名。清空某一段 = 那一段恢复官方原文。第三段发出时前面会自带一个空行(官方形状)。": "O upstream valida a identidade por “estrutura”: os três blocos precisam ser blocos separados, então os três são editados aqui individualmente (não é possível fundi-los em um só). Valores de execução no bloco dinâmico são escritos como placeholders e substituídos apenas no envio da requisição: {cwd} diretório de trabalho, {platform} plataforma, {shell} shell, {os_version} versão do sistema, {git} se é um repositório git, {provider} identificador do provedor, {model} nome do modelo. Limpar um bloco = aquele bloco volta ao texto oficial. O terceiro bloco é enviado com uma linha em branco na frente (o formato oficial).", "上游未配置": "Upstream não configurado", "上游模型繁忙时会先排队(回一句「建议 N 秒后再来」):网关等一会儿再发同一请求,最多等几次。默认 2 次,可填 0–10;填 0 表示不等待,排队直接返回 503 并说明「不是登录态或额度问题」。": "Quando o modelo no upstream está ocupado, ele primeiro entra na fila (respondendo “recomendamos voltar em N segundos”): o gateway aguarda um pouco e reenvia a mesma requisição, até um número máximo de esperas. Padrão 2; valores aceitos 0–10; 0 significa não esperar — a fila retorna 503 diretamente, informando que “não é um problema de login nem de cota”.", "上游用「逐字精确匹配」的方式审核请求体(不是语义审核):客户端注入的固定模板句、计费头字段名、以及某些裸错误码出现在报文里就会整单拦截,返回 400。开启本项后,网关在每次转发前改写这些指纹 —— 表头键值整段删除,承载语义的模板句只换一个词(如 official CLI for Claude → official CLI tool for Claude),对话内容与语义都不受影响。规则集是内置的,不需要也无法维护词表。关掉本项后客户端模板会原样发往上游,可能重新出现模板句被误拦的报错。": "O upstream revisa o corpo da requisição por “correspondência exata, palavra por palavra” (não é revisão semântica): frases de template fixas injetadas pelo cliente, nomes de campos de cabeçalhos de cobrança e certos códigos de erro soltos, se aparecerem no payload, bloqueiam a requisição inteira com retorno 400. Com esta opção ativada, o gateway reescreve esses fingerprints antes de cada encaminhamento — pares de chave/valor de cabeçalho são removidos por completo e frases de template que carregam significado têm apenas uma palavra trocada (por exemplo, official CLI for Claude → official CLI tool for Claude), sem afetar o conteúdo nem o significado da conversa. O conjunto de regras é integrado; não há lista de palavras a manter, nem seria possível. Com a opção desativada, os templates do cliente vão ao upstream como estão e podem voltar a ocorrer bloqueios indevidos de frases de template.", "上游请求四个阶段各自的等待上限(秒,1~3600):①「连接中超时」= 建立 TCP/TLS 连接或代理隧道的最大等待,默认 30 秒;②「等待响应超时」= 请求发出后等上游响应头的最大时间,默认 300 秒 —— 网关请求上游恒带 stream,响应头在 SSE 建立时就到达,与模型思考多久无关;③「流式响应空闲超时」= 流式响应相邻两块数据之间允许的最大空闲,收到新数据即重新计时,默认 300 秒 —— 上游长时间不吐数据即判定连接僵死并断开;④「非流式响应超时」= 读完整份非流式响应体的总预算(一次性计时、不重置),默认 300 秒。四项都是「等待上限」,只要数据还在来,正常的流式回答就一直往下传。保存后对下一个请求立即生效,不用重启。": "Limites de espera de cada uma das quatro fases da requisição ao upstream (segundos, 1~3600): ① “Timeout de conexão” = espera máxima para estabelecer a conexão TCP/TLS ou o túnel de proxy, padrão 30 segundos; ② “Timeout de espera de resposta” = tempo máximo de espera pelos cabeçalhos de resposta do upstream após o envio da requisição, padrão 300 segundos — as requisições do gateway ao upstream sempre usam stream, e os cabeçalhos de resposta chegam quando o SSE é estabelecido, independentemente de quanto tempo o modelo pense; ③ “Timeout de inatividade do streaming” = inatividade máxima permitida entre dois blocos adjacentes de uma resposta em streaming, com a contagem reiniciada a cada novo dado recebido, padrão 300 segundos — se o upstream ficar muito tempo sem enviar dados, a conexão é considerada travada e é encerrada; ④ “Timeout de resposta não streaming” = orçamento total para ler o corpo inteiro de uma resposta não streaming (contagem única, sem reinício), padrão 300 segundos. Os quatro são limites de espera: enquanto os dados continuarem chegando, uma resposta em streaming normal segue fluindo. Depois de salvar, os valores passam a valer para a próxima requisição, sem reiniciar.", "上游调试报文": "Payloads de depuração do upstream", "上移": "Mover para cima", "上移规则": "Mover regra para cima", "下次自动重试:{time}": "Próxima tentativa automática: {time}", "下游正文": "Corpos do downstream", "下移": "Mover para baixo", "下移规则": "Mover regra para baixo", "下载失败:{message}": "Falha no download: {message}", "不一致": "Divergente", "不做会话识别,每条请求都重新按策略选路。": "Sem detecção de sessão: cada requisição é roteada pela estratégia do zero.", "不做图片兼容": "Não adaptar imagens", "不可用": "Indisponível", "与网关同源的面板;完整管理功能在桌面端": "Painel servido pelo próprio gateway; o gerenciamento completo fica no desktop", "两张开关分别管桌面端(应用内窗口,也包含开启局域网访问后从其他设备访问的那份面板)与网页端(Docker / 服务端自托管的浏览器面板)。默认都开启;桌面端只在本机使用、嫌验证耗时可以关掉,网页端暴露在网络上,建议保持开启。": "Os dois interruptores controlam o lado desktop (a janela do aplicativo, incluindo o painel aberto em outros dispositivos quando o acesso pela LAN está ativo) e o lado web (o painel de navegador hospedado pelo Docker / servidor). Ambos vêm ativados. Desative o do desktop se usar apenas localmente e a verificação incomodar; mantenha o da web ativado, pois aquela página fica exposta à rede.", "两次输入的备份密码不一致": "As senhas do backup não coincidem", "两次输入的新密码不一致": "As novas senhas não coincidem", "两次重试之间的等待时间,两项共用,可填 0–300 秒。": "Tempo de espera entre duas tentativas, compartilhado pelas duas opções; valores de 0–300 segundos.", "两种方式不会互相自动切换。": "Os dois modos nunca alternam entre si automaticamente.", "两组设置分别用于桌面端托管的网页管理面板与网页端(Docker / 服务端)的浏览器面板。是否可被其他设备访问取决于网络访问与防火墙设置,不限于局域网。两端默认都开启人机验证,建议保持开启。": "Os dois grupos se aplicam ao painel web hospedado pelo aplicativo desktop e ao painel no navegador hospedado por Docker / servidor. O acesso de outros dispositivos depende das configurações de acesso pela rede e firewall e não se limita à rede local. A verificação humana vem ativada nos dois casos; recomendamos mantê-la ativada.", "为了安全,开启前需要先注册一个": "Por segurança, antes de ativar é preciso registrar uma ", "主进程未返回启动设置,请更新桌面端后重试": "O processo principal não retornou as configurações de inicialização; atualize o aplicativo desktop e tente novamente.", "主进程桥不可用": "Ponte com o processo principal indisponível", "主题": "Tema", "事件日志": "Logs de eventos", "事件日志保留天数": "Dias de retenção dos logs de eventos", "云同步": "Sincronização na nuvem", "产品名": "Nome do produto", "产品名不能包含斜杠或版本号,请改用前缀匹配": "Nomes de produto não podem incluir barras ou versões. Use correspondência por prefixo.", "人机验证": "Verificação humana", "人机验证失败": "Falha na verificação humana", "人机验证已完成": "Verificação humana concluída", "人机验证还在计算,请稍候": "A verificação humana ainda está sendo calculada, aguarde", "仅在同一会话、同一问题和相同权限范围内复用;追问新细节会重新识读。缓存只存在本机内存。": "Os resultados só são reutilizados na mesma conversa, pergunta e escopo de permissões. Novas perguntas geram uma nova leitura. O cache fica apenas na memória local.", "仅在账号、配置、签到或余额等实质内容变化时上传;导出时间或查询时间单独变化不会触发上传。": "O upload só ocorre quando há mudanças reais nas contas, configurações, resultados de check-in ou saldos. Alterações apenas nos horários de exportação ou consulta não geram uploads.", "仅处理本次转发副本,不修改客户端选择,也不删除当前或历史图片。": "Apenas a cópia encaminhada é alterada. A seleção do cliente e todas as imagens atuais e anteriores são preservadas.", "仅影响面板登录与注册,不影响 API Key 调用。保存后生效,已登录会话不会退出。": "Afeta apenas o login e o cadastro no painel, não chamadas com chaves de API. Entra em vigor ao salvar e mantém as sessões existentes.", "仅本机": "Somente este dispositivo", "仅用现有数据、不联网刷新": "Usando apenas os dados existentes, sem atualização online", "从云端恢复": "Restaurar da nuvem", "从桌面图标启动,全屏、无地址栏。想卸载:长按图标删除,或清除浏览器站点数据。": "Abra pelo ícone na tela inicial: em tela cheia, sem barra de endereço. Para desinstalar, mantenha o ícone pressionado e remova, ou limpe os dados do site no navegador.", "优先使用当前路由内的视觉模型": "Priorizar modelos de visão da rota atual", "优先在当前路由内找可用的视觉模型,找不到就用 {model} 直接回答,不再回到原模型。": "Prefere um modelo de visão disponível na rota atual; se não houver, {model} responde direto no lugar do modelo original.", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "Restaura os grupos, a ordem e a visibilidade padrão. Grupos criados por você são removidos (os menus são mantidos).", "会话图片压缩设置已刷新": "Configurações de compressão de imagens atualizadas", "位置": "Local", "位置与端口": "Local e portas", "使用 Rust 正则语法,保存时由后端校验;不支持环视和反向引用。": "Usa a sintaxe de expressões regulares do Rust, validada pelo backend ao salvar. Lookaround e referências anteriores não são suportados.", "使用中文单位(亿 / 万)": "Usar unidades chinesas (yi / wan)", "使用本地量级词(万 / 亿式)": "Usar magnitudes locais (estilo k / M)", "使用默认值": "Usando os padrões", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "O módulo de layout da barra lateral não foi carregado (ui/sidebar-layout.js deve vir antes de app.js).", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "Nenhum menu aparece na barra lateral. Ative os que precisar em Configurações → Exibição → Menus da barra lateral.", "侧边栏菜单": "Menus da barra lateral", "保存上游原始报文(请求头、请求体、响应头、响应体)": "Salvar payloads brutos do upstream (cabeçalhos da requisição, corpo da requisição, cabeçalhos da resposta, corpo da resposta)", "保存单独配置": "Salvar configuração do modelo", "保存后以这里的文本为准": "Após salvar, este texto passa a valer", "保存后对下一轮补货立即生效,不用重启。守卫跑在应用界面里:轻量模式关窗销毁界面期间无法铸造,走套餐池(Start Plan)通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。": "Salvar entra em vigor na próxima rodada de reposição, sem reinício. O guardião roda dentro da interface do aplicativo: enquanto o modo leve tiver destruído a interface após fechar a janela, não é possível cunhar tokens — solicitações no canal do pool de planos (Start Plan) caem no registro de solicitações como 503 (com o motivo); reabra a interface e a cunhagem se recupera automaticamente.", "保存后应用将重启以生效。": "O aplicativo será reiniciado após salvar para que isso tenha efeito.", "保存后状态读取立即生效。后台不会自动生成令牌;需要人机验证时,在账号的「套餐明细」中主动开始验证。模型请求免验证时无需保持界面打开。": "As configurações de consulta de status entram em vigor após salvar. Nenhum token é gerado automaticamente. Inicie a verificação necessária nos detalhes do plano da conta. Não é preciso manter a interface aberta quando o modelo dispensa verificação.", "保存后立即生效,不用重启:策略与粘性作用于**下一次**转发的选路,进行中的请求不受影响。": "Vale na hora ao salvar, sem reiniciar: estratégia e aderência valem para a escolha da **próxima** requisição encaminhada; requisições em andamento não são afetadas.", "保存后立即生效,不用重启;次数用尽仍失败时,错误原样返回给客户端。": "Passa a valer imediatamente após salvar, sem reiniciar; se as tentativas se esgotarem e ainda houver falha, o erro é retornado ao cliente como está.", "保存后立即生效,不用重启;超时按上游失败处理(计入请求日志的「错误」列,并按「请求重试」的设置决定是否重试)。": "Passa a valer imediatamente após salvar, sem reiniciar; o timeout é tratado como falha do upstream (contabilizado na coluna “Erro” dos logs de requisições e sujeito às configurações de “Retry de requisições” para nova tentativa).", "保存后立即生效:保留天数和数量上限同时生效,调小任一项会立即清理超出的历史数据,且不可恢复。": "Entra em vigor imediatamente após salvar. Os dias de retenção e o limite de registros se aplicam juntos; reduzir qualquer um remove imediatamente os dados históricos excedentes, sem possibilidade de recuperação.", "保存后立即生效:改小保留天数会立刻删除超出的历史数据,且不可恢复。": "Passa a valer imediatamente após salvar: reduzir os dias de retenção exclui na hora os dados históricos excedentes, sem possibilidade de recuperação.", "保存在当前网关,登录页也会公开显示。不会更改安装包、快捷方式、系统托盘图标或软件版本信息。": "Salvo no gateway atual e exibido publicamente na página de login. Não altera o instalador, os atalhos, o ícone da bandeja do sistema nem as informações de versão.", "保存并重启": "Salvar e reiniciar", "保存设置": "Salvar configurações", "保持当前路由范围,不跳到其他路由组。": "Mantém o escopo da rota atual e não pula para outro grupo de rotas.", "保活换行丢弃": "Descartar quebras keepalive", "保留原图和对话,由视觉模型直接回答本次请求。": "Preserve as imagens originais e a conversa para que um modelo de visão responda diretamente a esta solicitação.", "保留原图,选择视觉模型": "Preservar imagens e escolher um modelo de visão", "保留图片中的文字、代码、数字、布局与状态。识读失败就停止,不删图后继续回答。": "Preserve texto, código, números, disposição e estado nas imagens. Pare se a leitura falhar; nunca remova imagens para continuar respondendo.", "保留天数已刷新": "Dias de retenção atualizados", "保留旧版配置兼容,当前不会自动连铸。每次点击「开始验证」只取得一枚令牌,失败或取消后停止。": "Mantido para compatibilidade com configurações antigas. Não há geração automática em lote. Cada ação Iniciar verificação obtém um token e para em caso de falha ou cancelamento.", "保留草稿并读取最新设置": "Manter rascunho e recarregar configurações", "修改密码": "Alterar senha", "修改密码需要输入当前密码;修改成功后,其他设备 / 浏览器上的登录会立即失效,当前这条会话保留。": "Alterar a senha exige a senha atual. Após o sucesso, os acessos em outros dispositivos e navegadores são revogados imediatamente; esta sessão permanece ativa.", "值": "Valor", "值与默认值相同的行不占覆盖(存的是「改过的键」,不是全量配置);值留空保存表示这个头不发送,删除改过的行表示回落默认值。改完立即生效,不用重启。": "Linhas com valor igual ao padrão não contam como sobrescrita (o que é armazenado são as “chaves alteradas”, não a configuração completa); salvar com o valor vazio significa que esse cabeçalho não é enviado, e excluir uma linha alterada significa voltar ao valor padrão. As mudanças passam a valer na hora, sem reiniciar.", "值(留空 = 不发送)": "Valor (vazio = não enviar)", "停止并说明原因": "Parar e explicar o motivo", "像素": "px", "允许其他设备访问前,需要设置面板管理员账号与密码。注册完成后会继续开启流程并重启应用。": "Defina um usuário e uma senha de administrador do painel antes de permitir acesso de outros dispositivos. Após o registro, o acesso pela rede será ativado e o aplicativo será reiniciado.", "允许其他设备访问网关": "Permitir que outros dispositivos acessem o gateway", "允许局域网内的设备访问网关": "Permitir que dispositivos na LAN acessem o gateway", "允许无 Key 裸跑": "Permitir execução sem chaves", "允许浏览器里的页面跨来源调用网关(/v1/*)": "Permitir que páginas do navegador chamem o gateway de outra origem (/v1/*)", "允许的域名": "Hostnames permitidos", "先发送原图,明确拒图后补救": "Enviar originais primeiro; adaptar somente após rejeição explícita", "先把图片交给视觉模型读一遍,再让原模型结合读到的内容回答。": "O modelo de visão lê a imagem primeiro e o modelo original responde usando o que foi lido.", "全局配置": "Configuração global", "全部已配置": "Tudo já configurado", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 中,加密密钥单独保存在库外。跨机器备份请使用「整库备份 / 恢复」,不要只复制数据库。更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "Contas, logs, requisições, dados de depuração e configurações ficam no agent2api.db. As chaves ficam separadas. Para transferir dados entre máquinas, use Backup / restauração do banco inteiro, em vez de copiar só o banco. Para mudar o diretório, defina AGENT2API_PROXY_HOME e reinicie.", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 这一个 SQLite 数据库里。备份时只需拷贝这个文件;更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "Todos os dados (contas, logs de eventos, registros de requisições, payloads de debug e configurações) ficam em um único banco de dados SQLite, o agent2api.db, no diretório de configuração. Para fazer backup, basta copiar esse arquivo; para mudar o local de armazenamento, defina a variável de ambiente AGENT2API_PROXY_HOME e reinicie o programa.", "全部角色": "Todos os papéis", "全部角色沿用原有行为,包含思考内容和工具参数;指定角色时只改消息正文,未选角色及思考内容、工具参数保持原样。": "Todos os papéis mantém o comportamento existente, incluindo o raciocínio e os argumentos de ferramentas. Com papéis selecionados, apenas o conteúdo das mensagens é alterado; papéis não selecionados, raciocínio e argumentos de ferramentas permanecem intactos.", "共享视觉模型已变更,请重新确认并保存,避免把图片交给未经确认的模型。": "O modelo de visão compartilhado mudou. Confirme e salve novamente antes de enviar imagens ao novo modelo.", "共用设置:{providers}": "Configurações compartilhadas: {providers}", "关闭后不再提供网页管理面板,本机桌面程序仍可正常管理;已开启的 API 转发不受影响。": "O painel web deixará de ser servido. O gerenciamento pelo aplicativo desktop local continuará disponível, e o encaminhamento da API não será afetado.", "关闭后手动上传 / 下载也会被拒绝。": "Quando desativado, envio/download manual também é recusado.", "关闭后网关只监听 127.0.0.1,其他设备将无法直接连接,网页管理面板也会一并关闭。已配置的网关 Key 与账号不受影响。": "Ao desativar, o gateway escutará apenas em 127.0.0.1, impedindo conexões diretas de outros dispositivos. O painel web também será desativado. As chaves do gateway e contas existentes não serão afetadas.", "关闭后网关回到只监听 127.0.0.1,局域网内的设备将无法继续访问;已配置的网关 Key 与账号都不受影响。": "Após desativar, o gateway volta a escutar apenas 127.0.0.1 e os dispositivos da LAN deixam de conseguir acessá-lo; as chaves do gateway e as contas já configuradas não são afetadas.", "关闭后,管理界面不再从局域网提供,只有本机的桌面程序可以管理;已开启的 API 转发不受影响。": "Após desativar, a interface de administração deixa de ser servida na LAN e só o programa desktop local pode gerenciá-la; o encaminhamento de API já ativado não é afetado.", "关闭局域网访问": "Desativar acesso LAN", "关闭并重启": "Desativar e reiniciar", "关闭思考": "Desativar raciocínio", "关闭窗口即退出程序,后台转发随之中断": "Fechar a janela encerra o programa e o encaminhamento em segundo plano é interrompido", "关闭窗口时最小化到托盘": "Minimizar para a bandeja ao fechar a janela", "关闭窗口时程序不退出,转发继续在后台运行;退出请用托盘菜单": "Fechar a janela não encerra o programa; o encaminhamento continua rodando em segundo plano. Para sair, use o menu da bandeja", "关闭网络访问": "Desativar acesso pela rede", "兼容处理最长等待": "Espera máxima do processamento de compatibilidade", "兼容处理最长等待(秒)": "Espera máxima para adaptação (segundos)", "内容拦截降级": "Fallback de bloqueio de conteúdo", "内置识别、自定义规则与来源声明": "Identificação integrada, regras personalizadas e declarações de origem", "内置软件标识规则": "Regra integrada de identificação", "内置默认": "Padrões integrados", "内置默认提示词": "System prompt padrão integrado", "再输入一次新密码": "Digite a nova senha novamente", "凭据类请求头已脱敏。": "Os cabeçalhos de requisição com credenciais foram mascarados.", "凭证只保存在这台手机上,按服务器分别存放": "As credenciais ficam apenas neste celular, separadas por servidor", "出问题时把这一页截图,或点「复制全部信息」把文本贴进反馈,一般就能定位到大致原因。": "Quando algo der errado, tire um print desta página ou use \"Copiar todas as informações\" e cole o texto no relato — normalmente isso já basta para identificar a causa.", "分享图标在 Safari 底部工具栏中间": "O ícone de Compartilhar fica no meio da barra inferior do Safari", "分组名": "Nome do grupo", "分组名,例如「常用」": "Nome do grupo, ex.: \"Favoritos\"", "切换视觉模型": "Trocar para um modelo de visão", "切换视觉模型 · 视觉模型回答": "Trocar modelo · O modelo de visão responde", "切换视觉模型配置": "Configuração de troca de modelo de visão", "切换账号重试次数": "Retries trocando de conta", "刚刚从 models.dev 拉到的最新数据": "Dados recém-buscados do models.dev", "删除 {code}": "Remover {code}", "删除分组": "Excluir grupo", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "Excluir o grupo \"{name}\"? Os {n} menus vão para \"{target}\" — nada é perdido.", "删除匹配内容": "Excluir texto correspondente", "删除后不再接受这个分类的来源声明,历史记录保留原来的名称和用量。": "Declarações desta categoria não serão mais aceitas. Os registros históricos mantêm os nomes e o uso originais.", "删除后,新请求不再使用这条规则;历史记录保持不变。": "Novas requisições deixarão de usar esta regra. Os registros históricos permanecem inalterados.", "删除客户端分类": "Excluir categoria de cliente", "删除状态码 {code}": "Remover o status code {code}", "删除空分组「{name}」?": "Excluir o grupo vazio \"{name}\"?", "删除识别规则": "Excluir regra de identificação", "删除这个分组(组内菜单移到第一组)": "Excluir este grupo (os menus vão para o primeiro grupo)", "刷新": "Atualizar", "刷新失败:{message}": "Falha na atualização: {message}", "前台运行": "Execução em primeiro plano", "前缀": "Prefixo", "剥离上游审核黑名单指纹(改写请求体里的模板句与表头)": "Remover fingerprints da lista de bloqueio da revisão do upstream (reescrever frases de template e cabeçalhos no corpo da requisição)", "功能建议": "Sugestões de funcionalidades", "加入备选": "Adicionar como alternativo", "加密备份必填,旧 SQL 可留空": "Obrigatória para backup criptografado; opcional para SQL antigo", "包含": "Contém", "包含日志与调试报文": "Incluir logs e payloads de depuração", "包含:{items}": "Inclui: {items}", "匹配内容": "Padrão de correspondência", "匹配内容不能为空,且最多 {max} 个字符": "O padrão é obrigatório e deve ter no máximo {max} caracteres", "匹配内容不能为空,最长 256 个字符": "Informe um padrão com até 256 caracteres", "匹配原文含零宽空格,词表预览用 \\u{200b} 标出;编辑时保留该字符。": "O padrão contém um espaço de largura zero, exibido como \\u{200b} na prévia. Preserve esse caractere ao editar.", "匹配方式": "Tipo de correspondência", "区域(Region)": "Região (Region)", "华为云 OBS": "Huawei Cloud OBS", "单独指定视觉模型": "Escolher um modelo de visão separado", "单轮铸造上限": "Limite de cunhagem por rodada", "占用大小": "Tamanho ocupado", "历史未记录识别依据": "Evidência de identificação não registrada", "原来的「全局方式 + 模型单独配置」已按相同意思自动填成下面的模型名单,可以照用也可以重新调整;改动一处之后就会按新形式存下来。": "O seu antigo \"modo global + ajustes por modelo\" foi preenchido nas listas de modelos abaixo com o mesmo significado. Use como está ou ajuste; ao alterar qualquer coisa, passa a ser gravado no novo formato.", "原模型不能直接看图": "O modelo original não consegue ler imagens diretamente", "原模型根据识读内容回答": "O modelo original responde com base na descrição", "去反馈": "Enviar feedback", "去申请": "Enviar solicitação", "反馈与需求": "Feedback e solicitações", "发现缺货时一轮最多铸几个(连铸之间固定隔 500 毫秒)。默认 1 个:SDK 同一实例连铸容易互相干扰。调大补货更快,但单轮连铸越多越容易触发上游风控。可填 1–5。": "Quantos tokens uma mesma rodada pode cunhar ao detectar falta (intervalo fixo de 500 ms entre cunhagens seguidas). Padrão 1: cunhagens seguidas na mesma instância do SDK tendem a se interferir. Um valor maior repõe mais rápido, mas quanto mais cunhagens por rodada, mais fácil acionar o controle de risco do upstream. Aceita 1–5.", "取消勾选后只备份业务数据(账号、配置与余额记录),文件显著变小;事件日志、请求统计与调试报文不会进备份文件。": "Desmarcado, só os dados de negócio entram no backup (contas, configuração e registros de saldo) e o arquivo fica bem menor; logs de eventos, estatísticas de requisições e payloads de depuração ficam de fora.", "变更网页管理面板": "Alterar o painel de administração web", "只列单独配置过的家,其余沿用上面的全局配置": "Só lista os provedores com configuração individual; os demais seguem a configuração global acima", "只对「排队制」的上游生效:模型繁忙时上游不报错,只回一句「建议 N 秒后再来」,网关按建议时长等一会儿再发同一请求,等满次数仍排不上才把「排队中」作为错误返回(HTTP 503,文案会说明这不是登录态或额度问题)。等待发生在首个字节之前,吃的是「等待响应超时」那份预算 —— 两项设置一起决定一次请求最多卡多久;排队不会标记账号限额、也不会换账号(换谁都一样在排队)。保存后对下一个请求立即生效,不用重启。": "Só tem efeito em upstreams com “sistema de fila” : quando o modelo está ocupado, o upstream não retorna erro, apenas responde “recomendamos voltar em N segundos”; o gateway espera o tempo sugerido e reenvia a mesma requisição, e só quando o número de esperas se esgota a “fila” é devolvida como erro (HTTP 503, com um texto explicando que não é um problema de login nem de cota). A espera acontece antes do primeiro byte e consome o orçamento do “Timeout de espera de resposta” — as duas configurações, juntas, determinam quanto tempo no máximo uma requisição pode ficar travada; a fila não marca a conta como limitada nem troca de conta (todos estão igualmente na fila). Passa a valer para a próxima requisição após salvar, sem reiniciar.", "只影响读图那一步的思考深度;两块设置统一用这个选择。": "Afeta apenas a profundidade de raciocínio na etapa de leitura da imagem; os dois blocos compartilham esta escolha.", "只有已安装、启用并声明了设置项的提供商会出现在这里。可前往插件页检查安装与启用状态。": "Aparecem aqui apenas provedores com um plugin instalado e ativado que declare opções de configuração. Confira a instalação e a ativação na página Plugins.", "只沿用模型与思考等级,不借用视觉服务的内部 Key;仍受当前请求权限限制。": "Apenas o modelo e o nível de raciocínio são reutilizados, não a Key interna do serviço de visão. As permissões da solicitação atual continuam valendo.", "只清掉这个浏览器存的 Key,不影响网关": "Remove apenas a chave salva neste navegador; o gateway não é afetado", "只覆盖指定提供商的指定模型,其余跟随全局。": "Substitui apenas a configuração do modelo e provedor selecionados; os demais seguem a configuração global.", "可跨提供商多选;只处理这些模型看不了的图片。": "Seleção múltipla entre provedores; só são tratadas as imagens que esses modelos não conseguem ler.", "可跨提供商多选;这些模型的请求会整体改交视觉模型。": "Seleção múltipla entre provedores; as requisições desses modelos são entregues inteiras ao modelo de visão.", "可选。部分服务(如中国科技云数据胶囊)会按 User-Agent 校验凭据绑定的客户端类型,此时填写包含该类型名的字符串(例如 rclone/v1.67.0)。留空则维持默认。": "Opcional. Alguns serviços (como o CSTCloud Data Capsule) validam pelo User-Agent o tipo de cliente vinculado à credencial; nesse caso, informe uma string que contenha o nome do tipo (por exemplo, rclone/v1.67.0). Deixe em branco para manter o padrão.", "合计只累加当前筛选后可见的账号,筛选、搜索一改数字就跟着变。": "O total soma apenas as contas visíveis no filtro atual; mudar o filtro ou a busca altera o número.", "合计按整组统计(默认):不受筛选、搜索影响,被筛掉与已禁用的账号也计入。": "O total abrange o grupo inteiro (padrão): filtros e busca não o alteram, e contas filtradas ou desativadas ainda contam.", "同一会话、同一问题、相同权限范围内复用;追问新细节会重新识读。": "Reutilizado na mesma sessão, pergunta e escopo de permissão; perguntar novos detalhes força nova leitura.", "同一会话在 5 分钟内尽量跟住同一个账号;停了 5 分钟再发就算新会话。多数场景用它 —— 多轮对话少换号,也不至于把账号焊死。": "A mesma sessão tenta ficar na mesma conta por 5 minutos; pausar mais de 5 minutos conta como sessão nova. A escolha para a maioria dos casos — menos troca de conta em conversas de vários turnos, sem prender uma conta.", "同一会话在 6 小时内跟住同一个账号;适合一坐几个小时的长会话,上游的上下文缓存能吃到更多。": "A mesma sessão fica na mesma conta por até 6 horas; ideal para sessões longas de horas — o cache de contexto do upstream é aproveitado bem mais.", "同一提供商的同一模型不能重复配置": "O mesmo provedor e modelo não podem ter configurações duplicadas", "同一账号重试次数": "Retries na mesma conta", "同时开放网页管理面板": "Também abrir o painel de administração web", "同步密码": "Senha de sincronização", "名单最多 {max} 个状态码": "No máximo {max} status codes na lista", "后端没有返回版本信息": "O backend não retornou informações de versão", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "Contém o item fixo \"Configurações\", então o grupo não pode ser ocultado inteiro (os outros menus podem ser ocultados individualmente)", "启动与托盘": "Inicialização e bandeja", "启动时间": "Iniciado em", "启用云同步": "Ativar sincronização na nuvem", "启用图片兼容": "Ativar compatibilidade de imagens", "启用规则": "Ativar regra", "启用规则:{name}": "Ativar regra: {name}", "命中依据:{header} · {pattern}": "Evidência correspondente: {header} · {pattern}", "命中这些上游状态码的失败不在同一账号重发,直接换下一个账号继续试(换号占用「切换账号重试次数」,换满仍失败才把错误原样返回给客户端)。输入 100–599 的状态码后回车添加,点 × 或退格删除;默认 402(积分不足)。清空全部表示任何错误都照常重试。": "Falhas que correspondam a esses status codes do upstream não são reenviadas na mesma conta: o gateway passa direto para a próxima conta e continua tentando (a troca de conta consome uma das “Retries trocando de conta”; só quando elas se esgotam e a falha persiste é que o erro é retornado ao cliente como está). Digite um status code de 100–599 e pressione Enter para adicionar; clique em × ou use Backspace para remover. Padrão: 402 (pontos insuficientes). Limpar tudo significa que qualquer erro é tratado com o retry normal.", "品牌 Logo": "Logo da marca", "品牌设置": "Configurações da marca", "品牌设置已保存": "Configurações da marca salvas", "品牌预览": "Prévia da marca", "哪些模型用这种方式": "Quais modelos usam esta forma", "固定": "Fixo", "图标经 Magpie 引入,未单独记录 Lobe Icons 的图标版本;以上版本仅用于核对许可。": "Os ícones foram obtidos por meio do Magpie. A revisão dos ícones do Lobe Icons não foi registrada separadamente; a revisão acima foi usada apenas para verificar a licença.", "图片与相关对话将交给配置的视觉模型处理,可能增加等待时间和费用。请确认这些服务可以接收你的图片。": "As imagens e a conversa relevante serão enviadas aos modelos de visão configurados, o que pode aumentar a espera e o custo. Confirme que esses serviços podem receber suas imagens.", "图片兼容": "Compatibilidade de imagens", "图片兼容当前是关闭的:下面两块设置照样能改、会被保留,但不会对任何请求生效。": "A compatibilidade de imagens está desligada: os dois blocos abaixo continuam editáveis e são mantidos, mas nada disso vale para qualquer requisição.", "图片兼容设置已保存,仅对新请求生效。": "Configuração de compatibilidade de imagens salva. Ela se aplica apenas a novas solicitações.", "图片兼容设置读取失败": "Falha ao carregar a configuração de compatibilidade de imagens", "图片压缩": "Compressão de imagens", "图片最长边超过这个值就等比缩小(只缩不放)。默认 2048,可填 256–8192 —— 多数视觉模型在这个量级已经够用,调小更省流量、但细节会丢。": "Imagens cujo lado maior excede este valor são reduzidas proporcionalmente (nunca ampliadas). Padrão 2048, faixa 256–8192 — a maioria dos modelos de visão já fica bem nesse tamanho; um valor menor economiza tráfego, mas perde detalhes.", "图片能力未知时": "Quando o suporte a imagens for desconhecido", "图片过大、格式错误或下载失败不会被当作模型不支持图片。": "Imagem grande demais, formato inválido ou falha no download não contam como modelo sem suporte a imagens.", "在同一个账号上原地重发几次(不含首发;整条请求共用一份,用完后换来的账号只发一次就继续换)。可填 0–10,0 表示失败立即换号。": "Quantas vezes o gateway reenvia na própria conta (sem contar o primeiro envio; a requisição inteira compartilha um único saldo e, esgotado ele, cada conta obtida na troca envia uma vez e a troca segue). Valores de 0–10; 0 significa trocar de conta imediatamente após a falha.", "在这里直接编辑提示词正文:保存后以这份文本为准(优先于上面的提示词文件),清空则回到文件 / 内置默认。改一个字不必再去编辑器里开文件。": "Edite o texto do prompt diretamente aqui: após salvar, este texto passa a valer (com prioridade sobre o arquivo de prompt acima); se você limpar, volta para o arquivo / padrão integrado. Não é preciso abrir um arquivo em um editor só para mudar uma palavra.", "在途请求": "Requisições em andamento", "地址格式不对。填「IP 或域名:端口」,可带 http:// 或 https://,例如 192.168.1.23:3065": "Endereço inválido. Informe \"IP ou domínio:porta\", opcionalmente com http:// ou https:// — por exemplo 192.168.1.23:3065", "坚果云": "Jianguoyun (Nutstore)", "坚果云需使用「第三方应用密码」(账户信息 → 安全选项里生成),地址必须是 /dav/ 下的目录。": "O Jianguoyun exige uma senha de aplicativo (gerada em Informações da conta → Segurança) e o endereço deve apontar para um diretório em /dav/.", "填「IP 或域名:端口」。协议可写 http:// 或 https://,不写默认 http;http 不写端口默认 3065,https 默认 443。地址里的 /m、/v1 会自动去掉。": "Informe \"IP ou domínio:porta\". O protocolo pode ser http:// ou https:// (http é assumido se omitido). Sem porta, http usa 3065 e https usa 443. Qualquer /m ou /v1 no endereço é removido automaticamente.", "处理方式": "Modo de processamento", "处理示意": "Como funciona", "备份中…": "Fazendo backup…", "备份包含账号凭证、网关 Key、GitHub 令牌与云同步凭据的恢复密钥,整个文件受备份密码保护。请分开保管文件与密码;忘记密码无法恢复。": "O backup inclui chaves de recuperação de contas, keys do gateway, tokens do GitHub e credenciais de sincronização. O arquivo inteiro é protegido pela senha do backup. Guarde arquivo e senha separadamente; sem a senha, não é possível restaurar.", "备份密码": "Senha do backup", "备份密码不能超过 1024 字节": "A senha do backup não pode exceder 1024 bytes", "备份密码至少需要 12 位,建议使用较长且不重复的密码": "Use ao menos 12 caracteres; recomendamos uma senha longa e exclusiva", "备份整库": "Fazer backup do banco", "备份文件内含全部账号凭证、网关 API Key 与面板管理员凭据,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "O arquivo de backup contém todas as credenciais de contas, as chaves de API do gateway e as credenciais de administrador do painel — dá para logar com ele diretamente. Guarde com cuidado; não compartilhe nem envie para lugar público.", "备选模型": "Modelo alternativo", "复制全部信息": "Copiar todas as informações", "复制给客户端": "Copiar para o cliente", "复用相同图片的识读结果": "Reutilizar a leitura de imagens idênticas", "外观": "Aparência", "外观 · 接入 · 关于": "Aparência · Acesso · Sobre", "多个客户端标识冲突": "Identificadores de clientes conflitantes", "天": "dias", "天数": "Dias", "失败 {n} 个": "Falhas: {n}", "失败 {n} 个:{detail}": "Falhas: {n} — {detail}", "失败后最多再换几个账号试(填 N = 最多换 N 个,首发那个不算)。换到同一家名下另一个账号、或换到另一家,都各算一次;换满仍失败就返回错误。可填 0–10,0 表示失败立即报错。": "Quantas contas a mais tentar em caso de falha (preencha N = trocar por até N contas; a que fez o primeiro envio não conta). Trocar para outra conta do mesmo provedor ou para outro provedor conta igualmente como uma troca; se o limite se esgotar e a falha persistir, um erro é retornado. Valores de 0–10; 0 significa retornar o erro imediatamente após a falha.", "存储桶(Bucket)": "Bucket", "存储概况已刷新": "Visão geral do armazenamento atualizada", "安全": "Segurança", "安装到主屏幕": "Adicionar à tela inicial", "安装到桌面": "Instalar como app", "安装包形态": "Tipo de instalador", "完全相同": "Correspondência exata", "官方原文只有一句:声明自己是 ZCode。": "O texto oficial tem apenas uma frase: declara que ele é o ZCode.", "实际处理:": "O que acontece na prática: ", "客户端 system 原样出站。": "O system do cliente é enviado como está.", "客户端 system 原样出站(只靠指纹脱敏改写模板句)。": "O system do cliente é enviado como está (somente o mascaramento de fingerprint reescreve frases de template).", "客户端专用请求头": "Cabeçalho específico do cliente", "客户端名称": "Nome do cliente", "客户端名称不能为空,最长 80 个字符": "Informe um nome de cliente com até 80 caracteres", "客户端名称重复或与内置名称冲突": "Nome de cliente duplicado ou em conflito com um nome integrado", "客户端标识无效或重复": "Identificador de cliente inválido ou duplicado", "客户端识别": "Identificação de clientes", "客户端识别入口尚未就绪,请刷新页面后重试": "A identificação de clientes ainda não está pronta. Atualize a página e tente novamente.", "客户端识别设置读取失败": "Falha ao carregar configurações de identificação", "客户端(Claude Code / Codex 等 CLI)会在 system 提示词里注入几十句固定模板,上游按逐字匹配审核,命中就整单拦截(HTTP 400)。指纹脱敏能改写实测命中过的那几句,但换一个客户端版本就可能冒出新的。这里可以把 system 整段换成网关自己那份:①「透传」= 不动客户端 system(默认,行为与之前完全一致);②「替换」= 删掉客户端所有 system / developer 消息,换成网关的提示词(客户端项目规范随之消失);③「追加」= 在开头连续 system 块之后插入一条网关提示词,既有消息逐字不动(客户端规范与网关提示词并用)。那份提示词有两个来源:提示词文件(留空用内置默认),或直接在界面上编辑正文 —— 编辑过就以那份正文为准(优先于文件),清空则回到文件 / 内置默认。另外,透传 / 追加模式下撞了内容拦截(多半是指纹误报)时,网关会自动换一段最小中性提示词重试一次,并把「降级期」开到次日 00:00 —— 期间所有请求直接带中性提示词出门,不再先撞一次 400;这里能看见并提前解除它。上面几项是**默认值**:想给某个提供商单独配,用下面的「按提供商」加一行(带「网关自带」的家默认就列在那里)—— 不同的上游对这些内容的接受程度不一样。": "Os clientes (ferramentas CLI como Claude Code / Codex) injetam dezenas de frases de template fixas no system prompt, e o upstream as revisa por correspondência palavra por palavra: um acerto bloqueia a requisição inteira (HTTP 400). O mascaramento de fingerprint consegue reescrever as frases que foram bloqueadas nos testes, mas uma versão diferente do cliente pode trazer novas. Aqui é possível substituir o system inteiro pelo do próprio gateway: ① “Passthrough” = não mexe no system do cliente (padrão, comportamento idêntico ao anterior); ② “Substituir” = apaga todas as mensagens system / developer do cliente e coloca o prompt do gateway (as instruções de projeto do cliente desaparecem junto); ③ “Anexar” = insere um prompt do gateway depois dos blocos system consecutivos do início, deixando as mensagens existentes palavra por palavra intactas (as instruções do cliente e o prompt do gateway são usados juntos). Esse prompt tem duas origens: o arquivo de prompt (deixe vazio para usar o padrão integrado) ou a edição direta do texto na interface — se editado, vale o texto editado (com prioridade sobre o arquivo); se limpo, volta para o arquivo / padrão integrado. Além disso, nos modos Passthrough / Anexar, quando há bloqueio de conteúdo (geralmente um falso positivo de fingerprint), o gateway tenta de novo automaticamente com um system prompt neutro mínimo e estende o “período de fallback” até 00:00 do dia seguinte — nesse período, todas as requisições saem direto com o prompt neutro, sem bater primeiro em um 400; aqui você pode ver e encerrar o fallback antecipadamente. Os itens acima são **valores padrão**: para configurar um provedor específico, adicione uma linha em “Por provedor” abaixo (os provedores com “Interno do gateway” já aparecem lá por padrão) — cada upstream tolera esses conteúdos de forma diferente.", "家之间仍按优先级,只有同一家内部轮流用各账号 —— 想优先用某几家、又不愿把某一家的某个账号焊死时用它。": "Os provedores seguem a prioridade; só as contas dentro do mesmo provedor se alternam. Para preferir alguns provedores sem prender nenhuma conta específica.", "家内轮询": "Rodízio por provedor", "容器内更新": "Atualização no contêiner", "密码、文件或密钥校验失败时不会替换主库;替换阶段失败会自动尝试还原,实际结果以上方错误说明为准。": "Falhas na validação da senha, do arquivo ou das chaves não alteram o banco principal. Se a substituição falhar, a restauração será tentada automaticamente; o erro acima informa o resultado real.", "密码加密 · 包含恢复密钥": "Criptografado com senha · Chaves incluídas", "密码至少 8 位": "A senha deve ter pelo menos 8 caracteres", "对话里内嵌的 base64 大图(截图、照片)既撑大请求体,也拉高按像素折算的上游计费。开启后,网关在转发前把超过阈值的图等比缩到长边上限、重新存成 JPEG —— 只改发给上游的副本,请求日志里保存的仍是你发来的原图。同一张原图在多轮对话里重复出现时复用上一次的压缩结果,不会每轮重算。http 链接图片、GIF 动图、SVG 一律不动;压完反而更大的图也保留原图。只作用在对话场景,生图与图片编辑不受影响。默认开启;不想要的话把开关关掉即可。": "Imagens base64 grandes embutidas na conversa (capturas de tela, fotos) incham o corpo da requisição e elevam a cobrança do provedor, calculada por pixel. Quando ativado, o gateway reduz as imagens acima do limite até o tamanho máximo do lado maior e as recodifica em JPEG antes de encaminhar — apenas a cópia enviada ao provedor é alterada; o log de requisições continua guardando o original que você enviou. Quando a mesma imagem original reaparece ao longo dos turnos, o resultado comprimido anterior é reaproveitado em vez de recalculado. Imagens referenciadas por links http, GIFs animados e SVGs nunca são tocados; uma imagem que ficaria maior após a recodificação é mantida como está. Aplica-se apenas ao chat — geração e edição de imagens não são afetadas. Ativado por padrão; desative o interruptor se não quiser.", "导入前会把本机的 account.key 改名备份(account.key.bak-时间戳),不会直接删除。": "Antes de importar, o account.key local é renomeado para backup (account.key.bak-); ele nunca é excluído.", "导入完成:{summary}": "Importação concluída: {summary}", "导入密钥失败:{message}": "Falha ao importar a chave: {message}", "导入密钥并继续": "Importar chave e continuar", "导入账号": "Importar contas", "导出中…": "Exportando…", "导出会把全部账号与自定义提供商定义写入一个 JSON 文件,可以拷到另一台机器上导入后继续使用。导入采用合并策略:同提供商下按业务身份(UID / userId / apiKey 等)去重 —— 已存在的账号只更新凭证,保留本机原有的优先级顺序;新账号追加到转发顺序末尾,不会抢占当前正在使用的账号;自定义提供商定义按 id 合并,本机缺失时自动补建。": "A exportação grava todas as contas e definições de provedores personalizados em um arquivo JSON, que pode ser copiado para outra máquina e importado para continuar usando. A importação usa uma estratégia de mesclagem: dentro do mesmo provedor, as contas são deduplicadas pela identidade de negócio (UID / userId / apiKey etc.) — contas já existentes têm apenas as credenciais atualizadas e mantêm a ordem de prioridade original desta máquina; contas novas são anexadas ao final da ordem de encaminhamento e não tomam o lugar da conta em uso no momento; as definições de provedores personalizados são mescladas por id e criadas automaticamente quando ausentes nesta máquina.", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义": "O arquivo exportado contém credenciais como accessToken / refreshToken / apiKey e definições de provedores personalizados", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "O arquivo exportado contém credenciais como accessToken / refreshToken / apiKey e definições de provedores personalizados, e pode ser usado diretamente para login. Guarde-o com cuidado; não o compartilhe nem o envie para locais públicos.", "导出账号": "Exportar contas", "将数据库和恢复凭证所需的密钥一起保存为密码加密的 .a2ab 备份,可在 Windows、macOS 或 Linux 上恢复,无需手工复制密钥。恢复时整体替换账号、配置、日志与桌面设置,并使用目标机器的密钥重新加密凭证,不覆盖本机已有钥匙。可取消包含日志以减小文件;旧 .sql 备份仍可导入。恢复前自动保留安全备份,完成后需要重新登录管理面板。": "Salve o banco e as chaves de recuperação em um backup .a2ab criptografado por senha, restaurável no Windows, macOS ou Linux sem copiar chaves manualmente. A restauração substitui contas, configurações, logs e preferências do desktop, recriptografando as credenciais com as chaves do destino sem sobrescrevê-las. Exclua logs para reduzir o arquivo. A importação de .sql antigo continua disponível. Um backup de segurança é criado antes e é necessário entrar novamente no painel.", "尚未注册管理员。开启「网关 → 网络访问 → 允许其他设备访问网关」时会引导注册,也可以从登录页注册。": "Nenhum administrador foi registrado. Ativar Gateway → Acesso pela rede → Permitir que outros dispositivos acessem o gateway inicia o registro. Você também pode se registrar pela página de login.", "尚未注册管理员:管理接口不需要登录。开启「允许局域网访问」时会引导注册,也可以从登录页注册。": "Nenhum administrador registrado: a API de gerenciamento não exige login. Ativar \"Permitir acesso pela LAN\" conduz ao registro; você também pode registrar pela página de login.", "尚未配置视觉分析模型": "Nenhum modelo de análise visual configurado", "局域网开放后,管理接口要求登录。请设置管理员账号与密码,注册完成会直接继续开启流程。": "Com o acesso LAN ativado, a interface de administração exige login. Defina a conta de administrador e a senha; concluído o registro, o fluxo de ativação continua automaticamente.", "局域网访问": "Acesso LAN", "工具用法与环境说明那一大段。": "O bloco grande de uso das ferramentas e descrição do ambiente.", "已为「{label}」单独配置提示词": "Prompt configurado individualmente para “{label}”", "已作为独立应用运行": "App independente", "已使用本机密钥重新加密 {n} 项凭证,原有密钥未被覆盖。": "{n} credenciais recriptografadas com as chaves locais. As chaves existentes não foram sobrescritas.", "已保存 {count} / {limit} 条报文(超出后丢弃最旧的)。": "{count} / {limit} payloads salvos (os mais antigos são descartados quando o limite é excedido).", "已保存的值不符合当前插件规则,请修改或恢复默认值。": "O valor salvo não atende às regras atuais do plugin. Edite-o ou restaure o padrão.", "已保存,留空则不修改": "Salva; deixe em branco para manter", "已保存,留空沿用": "Salvo; deixe em branco para manter", "已关闭": "Desativado", "已关闭 models.dev 联网刷新": "Atualização online do models.dev desativada", "已关闭。{note}": "Desativado. {note}", "已关闭「{label}」的网关自带提示词:能否通过上游校验取决于上游当前口径": "System prompt interno do gateway de “{label}” desativado: se ele passa na validação do upstream depende dos critérios atuais do upstream", "已关闭会话图片压缩": "Compressão de imagens desativada", "已关闭出站指纹脱敏": "Mascaramento de fingerprint de saída desativado", "已关闭开发者角色兼容": "Compatibilidade com papel developer desativada", "已关闭第三方模型回答完自动折叠过程": "Recolhimento automático do trabalho de modelos de terceiros após a resposta desativado", "已关闭网关跨域访问": "CORS do gateway desativado", "已关闭:不额外补阶段标记,由客户端决定过程展示。": "Desativado: sem marcadores extras; o cliente controla a exibição do trabalho.", "已删除分组「{name}」": "Grupo \"{name}\" excluído", "已取消「{label}」的单独配置": "Configuração individual de “{label}” removida", "已取消安装": "Instalação cancelada", "已取消导入": "Importação cancelada", "已取消导出": "Exportação cancelada", "已取消恢复": "Restauração cancelada", "已启用 {count} 条规则,应用于{scope}。": "{count} regras ativadas, aplicadas a {scope}.", "已启用登录": "Login ativado", "已复制全部版本信息": "Todas as informações de versão foram copiadas", "已应用": "Aplicado", "已开启": "Ativado", "已开启:为正常完成的 Codex 回答补阶段标记。": "Ativado: adiciona marcadores de fase às respostas do Codex concluídas normalmente.", "已开启:其他设备把 API 地址指向 {url}{panel}。": "Ativado: em outros dispositivos, aponte o endereço da API para {url}{panel}.", "已开启:监听 0.0.0.0,允许其他设备访问。": "Ativado: escutando em 0.0.0.0 para permitir acesso de outros dispositivos.", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "Grupos padrão restaurados: Visão geral / Encaminhamento / Diagnóstico / Sistema", "已截断": "Truncado", "已指定出口": "Saída fixada", "已接管": "Assumido pelo gateway", "已改回内置默认提示词": "Revertido para o system prompt padrão integrado", "已新建分组「{name}」,点组头的 + 把菜单移进来": "Grupo \"{name}\" criado — use + no cabeçalho para mover menus", "已清掉「{label}」界面编辑的正文": "Texto editado na interface de “{label}” removido", "已清掉界面编辑的提示词(回落文件 / 内置默认)": "Prompt editado na interface removido (volta para o arquivo / padrão integrado)", "已清除本机保存的 API Key": "A API key salva neste navegador foi removida", "已生效": "Em vigor", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。": "Mudou automaticamente para um prompt neutro mínimo (bateu num bloqueio de conteúdo do upstream — na maioria das vezes um falso positivo da impressão digital do system); levanta sozinho em {until}.", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "Mudança automática para o system prompt neutro mínimo (houve bloqueio de conteúdo no upstream, provavelmente um falso positivo de fingerprint do system); o fallback será encerrado automaticamente em {until}. Durante esse período, o prompt próprio deste modo não é enviado; depois de corrigir o prompt, é possível encerrar o fallback imediatamente.", "已自定义": "Personalizado", "已运行": "Tempo de atividade", "已退出登录": "Sessão encerrada", "已隐藏": "Oculto", "巴西葡萄牙语": "Português (Brasil)", "希望接入新的提供商或模型": "Quero integrar um novo provedor ou modelo", "库中 schema": "Schema no banco", "库主文件的大小(不含运行期间的 WAL 临时文件,退出时已自动并回)。": "Tamanho do arquivo principal do banco (não inclui os arquivos temporários WAL em tempo de execução, que já são incorporados automaticamente ao sair).", "库存目标": "Meta de estoque", "应用提供商": "Aplicar aos provedores", "应用版本:{version}": "Versão do app: {version}", "应用状态": "Status do app", "应用窗口": "Janela do aplicativo", "建立上游 TCP/TLS 连接或代理隧道的最大等待时间(秒),默认 30 秒,范围 1~3600。": "Tempo máximo de espera para estabelecer a conexão TCP/TLS ou o túnel de proxy com o upstream (segundos), padrão 30 segundos, faixa 1~3600.", "开发构建": "Build de desenvolvimento", "开发者角色兼容": "Compatibilidade de papel developer", "开发者角色兼容设置已刷新": "Configuração de compatibilidade com papel developer atualizada", "开启前需要注册面板管理员,已注册会跳过此步骤。管理接口需要管理员会话或网关 Key;API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。": "É necessário registrar um administrador do painel antes de ativar. Se já houver um, esta etapa será ignorada. A API de gerenciamento exige uma sessão de administrador ou chave do gateway. Chamadas à API exigem uma chave do gateway ativa; se não houver nenhuma, uma chave padrão será criada automaticamente.", "开启后新发生的请求才会被记录(已经过去的请求补不回来)。报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "Só requisições que acontecerem depois de ligar são registradas (as passadas não podem ser recuperadas). Os payloads ficam no banco de dados local e só os 500 mais recentes são mantidos (os mais antigos são descartados); a contagem aparece em \"Dados → Armazenamento de dados\", à esquerda, como \"Payloads de depuração\".", "开启后新发生的请求才会被记录(已经过去的请求补不回来),请求日志的「预览对话」也随之开始保存原始正文。上游报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "Com isto ativado, apenas requisições novas são registradas (as requisições passadas não podem ser recuperadas), e a “Prévia da conversa” nos logs de requisições também passa a salvar os corpos originais. Os payloads de upstream ficam no banco de dados local, mantendo somente os 500 mais recentes (os mais antigos são descartados quando o limite é excedido); a contagem aparece em “Payloads de debug”, na seção “Dados → Armazenamento de dados”, à esquerda.", "开启后监听所有 IPv4 网卡(0.0.0.0),并不局限于局域网,也不会自动开放到公网;实际访问范围取决于网络与防火墙设置。修改后需要重启应用。": "Ao ativar, o gateway escuta em todas as interfaces IPv4 (0.0.0.0), não apenas na rede local, mas não é exposto automaticamente à internet. O acesso real depende das configurações de rede e firewall. Alterações exigem reiniciar o aplicativo.", "开启后网关将监听所有 IPv4 网卡(0.0.0.0),访问范围不再限于本机,也不局限于局域网。是否能从公网访问取决于网络与防火墙设置。": "O gateway passará a escutar em todas as interfaces IPv4 (0.0.0.0). O acesso não ficará restrito a esta máquina nem à rede local. O acesso pela internet depende das configurações de rede e firewall.", "开启后网关将监听所有网卡,同一局域网内的设备即可把 API 地址指向本机 IP 一起使用;管理接口从此要求管理员会话或网关 Key,转发接口在没有一把启用的 Key 时也会拒绝服务(届时会自动创建一把名为「默认」的 Key)。": "Após ativar, o gateway passa a escutar todas as interfaces de rede e dispositivos na mesma LAN podem usar a API apontando o endereço para o IP desta máquina; a interface de administração passa a exigir sessão de administrador ou chave do gateway, e a interface de encaminhamento também recusa atendimento enquanto não houver nenhuma chave ativa (nesse caso, uma chave chamada “Padrão” é criada automaticamente).", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 套餐池(Start Plan)」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "Quando ativado, fechar a janela não apenas a esconde — toda a janela da interface é destruída: os seis processos residentes do WebView2 (cerca de 200 MB de memória) saem, enquanto o encaminhamento do gateway, os check-ins agendados e as consultas de saldo continuam no processo de segundo plano, sem impacto; clique no ícone da bandeja para reabrir a interface quando necessário (o arranque a frio do WebView leva cerca de 1 segundo). Nota: enquanto a interface estiver destruída, os tokens de CAPTCHA do canal \"Pool de planos (Start Plan)\" do ZCode são cunhados pela interface e não podem ser repostos — solicitações nesse canal caem no registro como 503 (com o motivo), e reabrir a interface restaura a cunhagem automaticamente. Este interruptor só importa quando \"Minimizar para a bandeja ao fechar\" estiver ativado; minimizar a janela não é afetado.", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 活动套餐」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "Com isto ativado, fechar a janela não é apenas ocultá-la: a janela da interface é destruída por completo — os seis processos residentes do WebView2 por baixo dela (cerca de 200MB de memória) são encerrados junto, enquanto o encaminhamento do gateway, o check-in agendado e a consulta de saldo continuam nos processos em segundo plano, sem serem afetados; quando precisar da interface, clique no ícone da bandeja para reabri-la (a inicialização a frio do WebView leva cerca de 1 segundo). Atenção: enquanto a interface está destruída, os tokens de captcha do canal do Plano de evento da ZCode são forjados pela interface e não podem ser repostos — requisições por esse canal caem nos logs de requisições com status 503 (com o motivo registrado) e se recuperam automaticamente ao reabrir a interface. Este switch só faz sentido quando “Minimizar para a bandeja ao fechar a janela” está ativado; minimizar a janela não é afetado.", "开启后,关闭窗口会销毁界面并释放 WebView 进程,网关转发、定时签到、余额查询仍在后台继续。ZCode 模型请求免验证时不受影响;上游要求人机验证时,需要重新打开界面,在账号的「套餐明细」中主动完成验证。此开关只在「关闭窗口时最小化到托盘」开启时有意义。": "Quando habilitado, fechar a janela libera a interface e os processos WebView. Encaminhamento, check-ins agendados e consultas de saldo continuam em segundo plano. Solicitações ZCode sem verificação não são afetadas. Quando exigida, reabra a interface e conclua a verificação nos detalhes do plano da conta. Aplica-se somente quando fechar minimiza o aplicativo para a bandeja.", "开启后,新发生的请求会保存上游调试报文与下游正文,历史请求无法补录。上游调试报文只保留最近 500 条;两侧条数可在「数据 → 数据存储」查看。关闭开关不会删除已保存的报文,可在请求日志中选择「仅清空报文原文」一起清理。": "Após ativar, novas requisições salvam os payloads de depuração do upstream e os corpos do downstream; requisições anteriores não podem ser recuperadas. Apenas os 500 payloads mais recentes do upstream são mantidos. As contagens dos dois lados aparecem em Dados → Armazenamento de dados. Desativar não exclui os payloads salvos; selecione Limpar apenas os payloads nos logs de requisições para limpar os dois lados juntos.", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。": "Com isto ativado, a página de login conclui a verificação automaticamente em segundo plano no navegador (imperceptível para pessoas reais), enquanto cada tentativa de script precisa resolver um desafio — o custo de força bruta e de registro em massa sobe bastante. Afeta apenas o login / registro do painel, nada a ver com a API Key dos clientes de API.", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。桌面端与网页端各自独立:桌面端主要服务本机与局域网,网页端(Docker / 服务端)直接暴露在网络上的登录页风险更高,建议保持开启。": "Quando ativado, a página de login resolve o desafio em segundo plano (invisível para pessoas), enquanto cada tentativa automatizada precisa calcular um antes — força bruta e registro indevido ficam bem mais caros. Afeta apenas o login / registro do painel, não as API keys dos clientes. Desktop e web são independentes: o desktop atende principalmente esta máquina e a LAN, enquanto o web (Docker / servidor) fica exposto à rede e se beneficia mais de permanecer ativado.", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "Quando ligado, o gateway salva localmente, por inteiro, **a requisição enviada ao upstream** (cabeçalhos + corpo) e **a resposta do upstream** (código de status + cabeçalhos + corpo) de cada encaminhamento, para a visualização em \"Detalhes\" na página de logs de requisições. Campos de credenciais nos cabeçalhos — Authorization, Cookie, API Key e afins — são sempre trocados por [redacted] e nunca tocam o disco em texto puro; corpos de requisição e resposta ficam como estão (podem conter suas conversas). Só os 500 payloads mais recentes ficam guardados; os mais antigos são descartados. É um interruptor temporário para diagnóstico — mantenha desligado quando não precisar.", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看;请求日志详情的「预览对话」也依赖本开关 —— 它保存的是客户端发来的请求体与网关下发的响应体(两侧各截断到 128 KiB),不开这个开关时预览对话没有数据可看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。上游报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "Com isto ativado, o gateway salva localmente, na íntegra, **as requisições enviadas ao upstream** (cabeçalhos + corpo) e **as respostas retornadas pelo upstream** (status code + cabeçalhos + corpo) de cada encaminhamento, para consulta em “Detalhes” na página de logs de requisições; a “Prévia da conversa” nos detalhes da requisição também depende deste switch — ela salva o corpo da requisição do cliente e o corpo da resposta do gateway (cada um truncado em 128 KiB), e com o switch desativado não há dados para pré-visualizar. Campos de credenciais nos cabeçalhos, como Authorization, Cookie e API Key, são sempre substituídos por [redacted] e nunca gravados em texto puro; corpos de requisição e de resposta são salvos como estão (podem conter o conteúdo das suas conversas). Só os 500 payloads de upstream mais recentes são mantidos; os mais antigos são descartados quando o limite é excedido. É um switch temporário para diagnóstico; recomenda-se desativá-lo quando não for necessário.", "开启后,能连接到网关的设备可通过浏览器访问网页管理面板,需使用管理员账号登录。访问范围与网关相同,并不局限于局域网。": "Dispositivos que conseguem alcançar o gateway poderão abrir o painel web no navegador e entrar com uma conta de administrador. O alcance de acesso é o mesmo do gateway e não se limita à rede local.", "开启后,调用方可以用专用请求头声明已登记的客户端名称。这不是身份认证,只用于日志和统计,不会获得额外权限。": "Quando ativado, o solicitante pode declarar um cliente registrado pelo cabeçalho dedicado. Isso não autentica a identidade: afeta apenas logs e estatísticas, sem conceder permissões adicionais.", "开启局域网访问": "Ativar acesso LAN", "开启来源声明": "Ativar declarações de origem", "开启网络访问": "Ativar acesso pela rede", "开放后,局域网内其他设备的浏览器打开本机 IP 即可进入管理面板(需管理员账号登录)。": "Após abrir, o navegador de outros dispositivos na LAN pode acessar o painel de administração abrindo o IP desta máquina (é preciso entrar com a conta de administrador).", "开机自动启动": "Iniciar com o sistema", "开源许可": "Licença de código aberto", "开(最多 {n} 轮)": "Ligado (até {n} rodadas)", "归属客户端": "Cliente atribuído", "当前三段都是官方原文。": "No momento, os três blocos estão com o texto oficial.", "当前不可用": "Indisponível no momento", "当前后端不支持词表编辑与提供商范围,请更新后端后重试。": "Este backend não suporta edição de regras nem escopo de provedores. Atualize o backend e tente novamente.", "当前固定为浅色模式,不随系统变化。": "No momento, fixo no modo claro, sem seguir o sistema.", "当前固定为深色模式,不随系统变化。": "No momento, fixo no modo escuro, sem seguir o sistema.", "当前密码": "Senha atual", "当前已改过:{edited}。": "Editados no momento: {edited}.", "当前形态": "Forma de execução", "当前按 100% 显示(默认比例)。": "Exibindo no momento a 100% (proporção padrão).", "当前按 k / M 缩写显示(如 1.20M / 8.4k)。": "Exibindo no momento com abreviações k / M (ex.: 1.20M / 8.4k).", "当前按 {n}% 显示。": "Exibindo no momento a {n}%.", "当前按「万 / 亿」式本地量级词显示(如 1.2亿 / 8400万)。": "Exibindo no momento com magnitudes locais no estilo k / M (ex.: 120M / 84M).", "当前是透传模式:存下来也不会发出,切成「替换 / 追加」之后才生效。": "No momento, o modo é Passthrough: mesmo salvando, o texto não é enviado; só passa a valer após mudar para “Substituir / Anexar”.", "当前显示为「1.20M / 8.4k / 1.2B」这类英文缩写。": "Exibindo no momento com abreviações k / M / B (ex.: 1.20M / 8.4k / 1.2B).", "当前显示为「1.2亿 / 8400万」这类中文量级。": "Atualmente exibido como magnitudes chinesas no estilo \"1.2亿 / 8400万\".", "当前样本结果:{name}": "Resultado da amostra atual: {name}", "当前正在使用": "Em uso", "当前浏览器以管理员身份登录着本面板。「退出登录」会撤销这台设备的登录会话(30 天内的自动续期一并失效),需要重新输入账号密码;其他已登录的设备不受影响。": "Este navegador está conectado a este painel como administrador. “Sair” revoga a sessão de login deste dispositivo (a renovação automática dentro de 30 dias também é invalidada) e será preciso digitar usuário e senha novamente; outros dispositivos já conectados não são afetados.", "当前版本不支持品牌设置": "Esta versão não oferece suporte às configurações da marca", "当前环境不支持局域网访问设置": "O ambiente atual não oferece suporte à configuração de acesso LAN", "当前环境不支持整库备份": "O backup do banco completo não está disponível neste ambiente", "当前环境不支持整库备份(仅桌面端可用)": "Backup do banco completo não está disponível aqui (somente desktop)", "当前环境不支持整库恢复": "A restauração do banco completo não está disponível neste ambiente", "当前环境不支持整库恢复(仅桌面端可用)": "Restauração do banco completo não está disponível aqui (somente desktop)", "当前环境不支持网络访问设置": "As configurações de acesso pela rede não estão disponíveis neste ambiente", "当前环境不支持读取版本信息(桥接方法缺失)": "Este ambiente não consegue ler as informações de versão (método de ponte ausente)", "当前生效值:{value}": "Valor em uso: {value}", "当前生效的正文来自{source}{file}。保存后这一份会盖过提示词文件与内置默认{note}。": "O texto em vigor no momento vem de {source}{file}. Após salvar, ele prevalece sobre o arquivo de prompt e o padrão integrado{note}.", "当前界面": "Interface atual", "当前管理员:{name}": "Conectado como: {name}", "当前设置已保存": "As configurações atuais estão salvas", "当前跟随操作系统的深浅色设置,系统切换时界面会自动跟上。": "No momento, seguindo o tema claro / escuro do sistema operacional; quando o sistema mudar, a interface acompanha automaticamente.", "当前路由内的可用视觉模型": "Modelos de visão disponíveis na rota atual", "待迁移旧数据": "Dados antigos pendentes de migração", "待配置": "Não configurado", "忘记密码时无法在界面里找回:需要停掉程序后,从数据库删除管理员记录(kv 表的 panelAdmin 键),重启后按首次使用重新注册。具体命令与各形态的库文件路径见 docs 目录下的「重置管理员」文档。": "Se você esquecer a senha, ela não pode ser recuperada pela interface: pare o programa, exclua o registro do administrador no banco (a chave panelAdmin na tabela kv), reinicie e registre novamente como no primeiro uso. Os comandos e o caminho do banco em cada forma de instalação estão no documento \"Redefinir administrador\" em docs.", "思考等级、图片能力未知、等待上限": "Nível de raciocínio, capacidade de imagem desconhecida, limite de espera", "恢复中…": "Restaurando…", "恢复失败:{message}": "Falha na restauração: {message}", "恢复官方原文": "Restaurar o texto oficial", "恢复插件默认值": "Restaurar padrão do plugin", "恢复整库": "Restaurar o banco", "恢复整库备份": "Restaurar backup completo", "恢复默认": "Restaurar padrões", "恢复默认 Logo": "Restaurar logo padrão", "恢复默认侧边栏": "Restaurar barra lateral padrão", "恢复默认品牌": "Restaurar marca padrão", "恢复默认词表": "Restaurar regras padrão", "想回到原来那份,把这里清空再保存即可(不会删掉你配的文件路径)。": "Para voltar ao texto anterior, basta limpar este campo e salvar (o caminho de arquivo que você configurou não é apagado).", "想要的新功能或改进想法": "Funcionalidades novas ou melhorias que você gostaria de ver", "所有未单独配置的提供商都用这一份": "Todos os provedores sem configuração individual usam esta", "所有菜单都已在这一组": "Todos os menus já estão neste grupo", "手机端可管理所连接网关的账号、签到与插件,并使用提供商声明的动态登录入口;其余既有添加入口、编辑凭证和改写客户端配置仍需桌面面板。": "O aplicativo móvel gerencia contas, check-in e plugins no gateway conectado e permite login pelos métodos dinâmicos declarados pelos provedores. Outras entradas existentes para adicionar contas, editar credenciais e alterar configurações de clientes ainda exigem o painel desktop.", "托管网页界面": "Serve a interface web", "把地址里的 your-server 与 USERNAME 换成你自己的;目录不存在时会自动创建。": "Substitua your-server e USERNAME na URL pelos seus dados; o diretório é criado automaticamente se não existir.", "把整份数据库(账号、网关配置、事件日志、请求统计、调试报文与桌面设置)导出成一个 SQL 文件,恢复时整体替换本机全部数据 —— 与上面「账号导入 / 导出」的逐条合并是两种语义:恢复会连配置、日志与当前启用状态一起换成备份那台机器的状态。导出默认包含日志与调试报文(文件可能很大),不需要时可以取消勾选只备业务数据。恢复前会自动把当前数据备份到配置目录的 backups/ 下,恢复后需要重新登录管理面板。": "Exporta o banco inteiro (contas, configuração do gateway, logs de eventos, estatísticas de requisições, payloads de depuração e configurações do desktop) em um arquivo SQL; a restauração substitui todos os dados locais por inteiro. É uma semântica diferente do \"Importar / exportar contas\" acima, que mescla item a item: restaurar troca configuração, logs e estados de ativação para o que a máquina do backup tinha. A exportação inclui logs e payloads de depuração por padrão (o arquivo pode ser grande); desmarque para guardar só os dados de negócio. Antes de restaurar, os dados atuais são automaticamente backupados em backups/ no diretório de configuração, e você precisará logar no painel de novo depois.", "把整次请求交给视觉模型,由它直接回答,不再回到原模型。": "A requisição inteira vai para o modelo de visão, que responde direto no lugar do modelo original.", "把菜单移入 {name}": "Mover um menu para {name}", "把菜单移入「{name}」": "Mover um menu para \"{name}\"", "把账号、网关配置、自定义提供商、Agent 配置、代理池 / 订阅、签到与余额记录同步到 WebDAV 或 S3 兼容存储,换台机器后一键取回。事件日志、请求明细、调试报文与面板登录态不在同步范围内(它们是本机的运行痕迹)。上传的账号凭证仍是加密形态,解密用的账号密钥由「同步密码」单独加密后一并上传 —— 同步密码不会保存到云端,换机下载时需要重新输入。": "Sincronize contas, configuração do gateway, provedores personalizados, perfis do Agent, pool de proxies / assinaturas e registros de check-in e saldo com WebDAV ou armazenamento compatível com S3, e recupere tudo em outra máquina com um clique. Logs de eventos, detalhes de requisições, pacotes de depuração e o estado de login do painel ficam de fora (são vestígios de execução desta máquina). As credenciais das contas enviadas permanecem criptografadas; a chave que as descriptografa é criptografada com a senha de sincronização e enviada junto — a senha nunca é armazenada na nuvem, então você precisa digitá-la novamente ao restaurar em outra máquina.", "把路径里的主目录显示成 ~,截图分享时不暴露用户名": "Mostra o diretório pessoal nos caminhos como ~, para que prints não revelem seu nome de usuário", "把路径里的主目录(如 C:\\Users\\你的用户名)显示成 ~,截图分享时不暴露用户名。只影响本页显示与复制,不改任何文件。": "Mostra o diretório pessoal nos caminhos (ex.: C:\\Users\\seu-nome) como ~, para que prints não revelem seu nome de usuário. Afeta apenas esta página e o texto copiado; nenhum arquivo é alterado.", "报表天数": "Dias do relatório", "报表页的热力图与按天趋势,默认 99999 天(近似全量保留),可填 1–99999 天。": "O mapa de calor e as tendências diárias da página de relatórios. Padrão de 99999 dias (retenção praticamente total); aceita de 1 a 99999 dias.", "拖动分组 {name}": "Arrastar grupo {name}", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "Arraste o ⠿ para reordenar (menus podem mudar de grupo); use os interruptores para mostrar ou ocultar; clique no nome do grupo para renomear; o + no cabeçalho move outro menu para o grupo; o botão de olho oculta o grupo inteiro. As mudanças valem na hora e ficam salvas — a barra lateral à esquerda é o resultado. Teclado: foque a alça e pressione Alt+↑ / ↓.", "拖动菜单 {name}": "Arrastar menu {name}", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "Arraste para reordenar os grupos (Alt+↑ / ↓ também funciona)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "Arraste para reordenar, inclusive entre grupos (Alt+↑ / ↓ também funciona)", "指定备选仍受当前请求权限和路由范围限制,路由组请求不会跳到组外。不会转为辅助识图继续。": "As alternativas continuam sujeitas às permissões e à rota atuais. Solicitações de um grupo nunca saem dele. Este modo nunca muda para leitura assistida de imagens.", "指定提供商": "Provedores selecionados", "指定角色": "Papéis selecionados", "指定错误码直接换号": "Troca de conta direta em códigos de erro especificados", "指纹脱敏": "Sanitização de fingerprint", "指纹脱敏会在转发前按词表顺序改写请求消息中的文本,包括对话内容、思考内容和工具调用参数。默认词表包含客户端模板句与计费表头的精确替换、正则删除规则,可以新增、编辑、删除、启停和调整顺序;替换内容留空表示删除匹配内容。默认应用全部提供商,也可指定多家。改动只作用于发给上游的副本,响应内容不变。编辑后点击「保存设置」,下一次请求生效;清空词表表示不做任何指纹改写,恢复默认只重置词表。": "Antes de encaminhar, o mascaramento aplica as regras na ordem da lista ao texto das mensagens, incluindo conversa, raciocínio e argumentos de chamadas de ferramentas. As regras padrão incluem substituições exatas e exclusões por expressão regular de modelos do cliente e cabeçalhos de cobrança. Você pode adicionar, editar, excluir, ativar, desativar e reordenar regras; uma substituição vazia exclui o texto correspondente. Por padrão, aplica-se a todos os provedores, ou você pode selecionar vários. Apenas a cópia enviada ao upstream é alterada; as respostas não mudam. Clique em Salvar configurações para aplicar à próxima requisição. Uma lista vazia não altera fingerprints, e restaurar o padrão redefine apenas as regras.", "指纹脱敏设置仅本次运行生效,写入数据库失败,请检查配置目录": "As configurações valem somente nesta execução. A gravação no banco falhou; verifique o diretório de configuração.", "指纹脱敏设置已刷新": "Configurações de mascaramento de fingerprint atualizadas", "按下面两块设置处理图片;关闭后设置全部保留。": "As imagens são tratadas pelos dois blocos abaixo; desligar mantém todas as configurações.", "按原文精确匹配,区分大小写;不会自动去掉首尾空白。": "Corresponde ao texto exato, diferenciando maiúsculas e minúsculas. Os espaços iniciais e finais são preservados.", "按天聚合保留天数": "Retenção dos agregados diários (dias)", "按指定备选顺序尝试": "Tentar alternativas na ordem definida", "按提供商查看和调整专属选项": "Veja e ajuste opções específicas de cada provedor", "按提供商筛选设置": "Filtrar configurações por provedor", "按提供商管理专属选项,作用于当前网关中该提供商的所有账号。": "Gerencie opções específicas por provedor. As alterações se aplicam a todas as contas desse provedor no gateway atual.", "按提供商配置": "Por provedor", "按每条请求的软件标识识别客户端,不依赖 API Key。规则修改只影响新请求,内置规则随软件更新,自定义规则参与备份与云同步。": "Identifique cada requisição pelos identificadores do software, sem depender de API Key. Alterações afetam apenas novas requisições. Regras integradas acompanham o app; regras personalizadas entram no backup e na sincronização.", "换一台服务器": "Trocar de servidor", "排队等待": "Espera na fila", "排队等待次数": "Tentativas de espera na fila", "排队等待秒数": "Segundos de espera na fila", "排队等待设置已刷新": "Configurações de espera na fila atualizadas", "接入": "Acesso", "接受调用方来源声明": "Aceitar declarações de origem do solicitante", "接管回答的模型": "Modelo que assume a resposta", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "Define quais menus a barra lateral mostra, em que ordem e como são agrupados. Ocultar afeta apenas a navegação — não revoga acesso, e páginas ocultas continuam abrindo pela URL.", "控制报表与请求日志里 Token 读数的写法:开启后按「万 / 亿」式的本地量级词显示(简体为万 / 亿,繁体为萬 / 億,日文为万 / 億,韩文为만 / 억),关闭则用 k / M 缩写(与上游文档、接口字段的写法一致)。英文 / 葡语的本地量级词就是 k / M,这项对它们没有区别。只影响显示口径,不改变任何统计与存储的数值。": "Controla como o Token é exibido no relatório e nos logs de requisições: quando ativado, exibe com magnitudes locais no estilo “k / M” (chinês simplificado: 万 / 亿; chinês tradicional: 萬 / 億; japonês: 万 / 億; coreano: 만 / 억); quando desativado, usa abreviações k / M (igual à forma usada na documentação e nos campos da API do upstream). Para inglês e português, as magnitudes locais são exatamente k / M, então esta opção não faz diferença para eles. Afeta apenas a forma de exibição; não altera nenhum valor de estatística ou de armazenamento.", "控制报表与请求日志里 Token 读数的写法:开启后按中文量级显示(1.2亿 / 8400万),关闭则用 k / M / B 缩写(与上游文档、接口字段的写法一致)。这只影响显示口径,不改变任何统计与存储的数值。": "Controla como as contagens de token aparecem nos relatórios e no log de requisições: ativado mostra magnitudes chinesas (1.2亿 / 8400万), desativado usa abreviações k / M / B (iguais às dos documentos e campos de API do upstream). Isso altera apenas a exibição; nenhum número estatístico ou armazenado muda.", "控制界面的深浅色,与左侧边栏底部的三个主题按钮是同一个设置(改哪一处,另一处立刻跟上)。「跟随系统」会随操作系统当前的浅色 / 深色自动切换,并在系统主题变化时即时跟上;选「浅色」或「深色」则把界面固定在该模式,不再随系统变化。窗口标题栏的深浅色会一并同步,不会出现深色界面配一条浅色标题栏的情况。": "Controla o tema claro / escuro da interface; é a mesma configuração dos três botões de tema no rodapé da barra lateral esquerda (mudar em um lugar reflete imediatamente no outro). “Sistema” acompanha automaticamente o tema claro / escuro atual do sistema operacional e reage na hora a mudanças no tema do sistema; escolher “Claro” ou “Escuro” fixa a interface nesse modo, sem seguir o sistema. A barra de título da janela acompanha junto, então não ocorre de a interface ficar escura com uma barra de título clara.", "提供商与模型": "Provedor e modelo", "提供商专属设置": "Configurações específicas do provedor", "提供商当前不可用,未保存的修改已保留;恢复插件后可继续编辑。": "O provedor está indisponível. As edições não salvas foram mantidas; restaure o plugin para continuar editando.", "提供商设置已保存": "Configurações do provedor salvas", "提供商设置返回格式无效,请刷新后重试": "A resposta das configurações do provedor é inválida. Atualize e tente novamente.", "提建议": "Enviar sugestão", "提示词文件": "Arquivo de prompt", "提示词文件已更新": "Arquivo de prompt atualizado", "提示词正文": "Texto do prompt", "提示词正文已更新": "Texto do prompt atualizado", "插件或设置已变化,请放弃修改并刷新后重新编辑。": "O plugin ou as configurações mudaram. Descarte suas alterações e atualize antes de editar novamente.", "操作系统": "Sistema operacional", "支持 .a2ab 加密备份和旧 .sql 文件;旧 SQL 不包含恢复密钥,跨机器导入仍需原机密钥。": "Aceita backups .a2ab criptografados e .sql antigos. O SQL antigo não inclui chaves de recuperação; a importação em outra máquina ainda precisa das chaves originais.", "支持 PNG、JPG、WebP,最大 2 MiB、4096 × 4096 像素;自动缩小至 512 像素以内,建议使用正方形图片。": "Aceita PNG, JPG e WebP de até 2 MiB e 4096 × 4096 pixels. As imagens são reduzidas para até 512 pixels. Recomendamos imagens quadradas.", "改动仍保存在本机,修复网络或凭据后下一次改动会自动重试,也可以手动点「上传到云端」。": "Suas alterações continuam salvas localmente. Depois de corrigir a rede ou as credenciais, a próxima alteração tenta de novo automaticamente, ou clique em \"Enviar para a nuvem\".", "改动仍保存在本机,系统会延长等待并自动重试;修复网络或凭据后,也可以手动点「上传到云端」。": "As alterações continuam salvas neste dispositivo. O sistema tentará novamente automaticamente após uma espera maior. Depois de corrigir a rede ou as credenciais, você também pode clicar em “Enviar para a nuvem” manualmente.", "改完立即生效,不用重启(下一个请求就用新模式)。降级是自动的临时状态,解除后本模式自己的提示词立刻恢复。": "As mudanças passam a valer na hora, sem reiniciar (a próxima requisição já usa o novo modo). O fallback é um estado temporário automático; depois de encerrado, o prompt próprio deste modo volta imediatamente.", "放大或缩小整个界面(文字与控件一起变),效果与浏览器 Ctrl +/- 相同:共 11 档,立即生效并记住。": "Amplia ou reduz a interface inteira (texto e controles juntos), com o mesmo efeito de Ctrl +/- no navegador: 11 níveis; a mudança vale na hora e é memorizada.", "放弃修改并刷新": "Descartar alterações e atualizar", "数据": "Dados", "数据保留": "Retenção de dados", "数据保留设置已刷新": "Configurações de retenção de dados atualizadas", "数据存储": "Armazenamento de dados", "数据库 schema": "Schema do banco", "数据库不可用": "Banco de dados indisponível", "数据库与恢复密钥一起加密保存。密码不会保存在应用或备份中,忘记后无法恢复,请妥善保管。": "O banco e as chaves são criptografados juntos. A senha não fica no aplicativo nem no backup. Guarde-a com cuidado: sem ela, não é possível restaurar.", "数据库主文件与 WAL 文件的总占用,与请求日志清理弹窗采用同一口径;清理后可压缩数据库回收空闲空间。": "Tamanho total do arquivo principal do banco e do arquivo WAL, usando o mesmo cálculo do diálogo de limpeza de requisições. Após a limpeza, compacte o banco para recuperar o espaço livre.", "数据库文件": "Arquivo do banco", "数据目录": "Diretório de dados", "数据统一保存在配置目录下的 agent2api.db;如需更换位置,请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "Os dados ficam todos em agent2api.db, no diretório de configuração; para mudar de local, defina a variável de ambiente AGENT2API_PROXY_HOME e reinicie o programa.", "整体替换": "substituídos por inteiro", "整库备份 / 恢复": "Backup / restauração do banco completo", "整次请求交给 {model} 直接回答,不再回到原模型。": "A requisição inteira vai para {model}, que responde direto no lugar do modelo original.", "新分组名": "Nome do novo grupo", "新增 {added} 个、更新 {updated} 个{suffix}{note}": "{added} adicionadas, {updated} atualizadas{suffix}{note}", "新增脱敏规则": "Adicionar regra de mascaramento", "新增规则": "Adicionar regra", "新安装和升级后默认关闭。先配置再开启,关闭后保留配置。": "Desativado por padrão em novas instalações e atualizações. Configure antes de ativar; desativar mantém a configuração.", "新密码": "Nova senha", "新密码不能与当前密码相同": "A nova senha deve ser diferente da atual", "新密码至少 8 位": "A senha deve ter pelo menos 8 caracteres", "新建分组": "Novo grupo", "新建客户端分类": "Nova categoria de cliente", "无效或重复的标识请求头:{headers}": "Cabeçalhos de identificação inválidos ou duplicados: {headers}", "无法读取品牌设置": "Não foi possível ler as configurações da marca", "无法读取图片,请重新选择": "Não foi possível ler a imagem. Selecione-a novamente.", "日志与请求日志同时受保留天数和数量上限限制。日志默认 30 天、10000 条,各级别按比例保留;调试详情最多保留 3 天。请求日志默认 99999 天、1000000 条(100 万),超出后从最旧的记录开始清理,并同步删除对应原始正文。按天聚合默认 99999 天,只按天数保留,不受请求日志数量清理影响。天数可填 1–99999,数量可填 1–100000000。调小任一设置并确认后立即清理,且不可恢复。": "Logs e logs de requisições são limitados tanto pelos dias de retenção quanto pela quantidade de registros. Os logs têm padrão de 30 dias e 10.000 registros, com capacidade distribuída proporcionalmente por nível; detalhes de depuração são mantidos por no máximo 3 dias. Os logs de requisições têm padrão de 99999 dias e 1.000.000 de registros; o excedente é removido dos mais antigos para os mais novos junto com seus corpos originais. Os agregados diários têm padrão de 99999 dias e são limitados apenas pelos dias; a limpeza por quantidade dos logs de requisições não os afeta. Os dias aceitam 1–99999 e a quantidade aceita 1–100000000. Reduzir qualquer configuração e confirmar remove o excedente imediatamente, sem possibilidade de recuperação.", "日志保留数量上限": "Limite de registros de log", "日志文件": "Arquivo de log", "日语": "japonês", "显示 {name}": "Mostrar {name}", "显示分组 {name}": "Mostrar grupo {name}", "显示名称": "Nome de exibição", "显示名称最多 64 个字符": "O nome de exibição pode ter até 64 caracteres", "显示模式": "Modo de exibição", "显示这一组": "Mostrar este grupo", "暂无可编辑的提供商设置": "Nenhuma configuração de provedor editável", "暂无自定义规则,正在使用内置识别。也可以从请求详情直接添加规则。": "Sem regras personalizadas; a identificação integrada está ativa. Você também pode adicionar regras nos detalhes da requisição.", "暂未获取到本机访问地址,请使用其他设备能连接到的本机 IP 与网关端口。": "O endereço de acesso desta máquina ainda não está disponível. Use o IP desta máquina e a porta do gateway que o outro dispositivo consiga alcançar.", "更新": "Atualizar", "更新出网线路": "Rota de saída da atualização", "更新通道": "Canal de atualização", "替换": "Substituir", "替换 = 客户端 system / developer 消息全部删掉,换成网关的提示词;追加 = 保留客户端内容,只在开头 system 块之后多插一条。两者都只改发给上游的副本,客户端看到的响应不变。": "Substituir = todas as mensagens system / developer do cliente são apagadas e trocadas pelo prompt do gateway; Anexar = o conteúdo do cliente é mantido e apenas um item a mais é inserido depois dos blocos system do início. Os dois alteram somente a cópia enviada ao upstream; a resposta que o cliente vê não muda.", "替换为网关提示词": "Substituir pelo prompt do gateway", "替换内容": "Texto de substituição", "替换内容最多 {max} 个字符": "O texto de substituição deve ter no máximo {max} caracteres", "替换前会自动把当前数据备份到配置目录的 backups/ 文件夹。": "Antes da substituição, os dados atuais são automaticamente backupados na pasta backups/ do diretório de configuração.", "替换并恢复": "Substituir e restaurar", "最多 64 个字符,留空恢复为 Agent2API。": "Até 64 caracteres. Deixe em branco para restaurar Agent2API.", "最小自动上传间隔": "Intervalo mínimo de upload automático", "最近 {window} 条请求中,{scanned} 条有识别依据,{matched} 条符合条件,{applied} 条会采用本规则。": "Das últimas {window} requisições, {scanned} têm evidências, {matched} correspondem e {applied} usariam esta regra.", "有未保存的修改": "Há alterações não salvas", "有未保存的改动:保存后才能同步(测试连接不受影响)。": "Alterações não salvas: salve antes de sincronizar (o teste de conexão não é afetado).", "有近期套餐池请求时读取库存状态的间隔,默认 2500 毫秒,可填 1000–30000。没有近期请求时降低读取频率,轮询不会发起验证码。": "Intervalo de consulta do estoque com solicitações Start Plan recentes: padrão de 2500 ms, entre 1000 e 30000. A frequência diminui quando ocioso e nunca inicia verificação.", "服务商": "Provedor", "服务器地址": "Endereço do servidor", "服务端密钥加密保存,不会返回浏览器;切回 ALTCHA 后会保留,方便再次启用。": "A chave secreta é armazenada criptografada e nunca é devolvida ao navegador. Ela é mantida ao voltar para ALTCHA para facilitar a reativação.", "服务端密钥(Secret Key)": "Chave secreta (Secret Key)", "期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "Enquanto este modo estiver ativo, o prompt próprio dele não é enviado; levante assim que ajustar o seu prompt.", "未保存": "Não salvo", "未匹配已知客户端": "Nenhum cliente conhecido identificado", "未单独配置:模式、提示词文件与正文都跟随上面的全局配置(当前「{mode}」)。": "Sem configuração individual: modo, arquivo de prompt e texto seguem a configuração global acima (no momento, “{mode}”).", "未启用": "Desativado", "未开启轻量模式:关窗仅隐藏窗口,界面进程常驻内存,随时打开不等待": "Modo leve desativado: fechar a janela apenas a oculta, o processo da interface permanece na memória e reabrir é instantâneo", "未开启,developer 角色消息会原样发往上游,不认识该角色的上游会报错(400)。": "Desativado: mensagens com papel developer vão para o upstream como estão; upstreams que não conhecem o papel retornam erro (400).", "未开启,客户端 system 模板会原样发往上游,可能被内容审核误拦(400)。": "Desativado: os templates do system do cliente vão ao upstream como estão e podem ser bloqueados por engano na revisão de conteúdo (400).", "未开启,浏览器跨域无法直连网关。": "Desativado: o navegador não consegue se conectar diretamente ao gateway de outra origem.", "未开启,转发时不保存任何原始报文。": "Desativado: nenhum payload bruto é salvo durante o encaminhamento.", "未开启:网关只监听 127.0.0.1,仅本机可以访问。": "Desativado: o gateway escuta apenas 127.0.0.1 e somente esta máquina pode acessá-lo.", "未注册": "Não registrado", "未注册闸门": "Bloqueio de não registrado", "未知原因": "Motivo desconhecido", "未知来源": "Origem desconhecida", "未知设备": "Dispositivo desconhecido", "未知账号": "Conta desconhecida", "未能读取 Cline 伪装头设置,请稍后重试": "Não foi possível ler as configurações de cabeçalhos spoofed do Cline; tente novamente mais tarde", "未能读取 models.dev 元数据状态,请稍后重试": "Não foi possível ler o estado dos metadados do models.dev. Tente novamente mais tarde.", "未能读取云同步设置,请稍后重试。": "Não foi possível ler as configurações de sincronização na nuvem. Tente novamente mais tarde.", "未能读取保存后的指纹脱敏设置": "Não foi possível ler as configurações de mascaramento salvas", "未能读取开发者角色兼容设置,请稍后重试": "Não foi possível ler a configuração de compatibilidade com papel developer, tente novamente mais tarde", "未能读取指纹脱敏设置,请稍后重试": "Não foi possível ler as configurações de mascaramento de fingerprint; tente novamente mais tarde", "未能读取机器人校验设置": "Não foi possível ler as configurações de verificação de bots", "未能读取第三方模型回答完自动折叠过程设置,请稍后重试": "Não foi possível ler a configuração de recolhimento do trabalho de modelos de terceiros; tente novamente mais tarde", "未能读取系统提示词设置,请稍后重试": "Não foi possível ler as configurações do system prompt; tente novamente mais tarde", "未能读取网关跨域访问设置,请稍后重试": "Não foi possível ler as configurações de CORS do gateway; tente novamente mais tarde", "未能读取网络访问设置,请稍后重试": "Não foi possível carregar as configurações de acesso pela rede. Tente novamente mais tarde.", "未能读取调试模式设置,请稍后重试": "Não foi possível ler as configurações do modo debug; tente novamente mais tarde", "未能读取账户信息,请稍后重试": "Não foi possível ler as informações da conta. Tente novamente mais tarde", "未采用本规则,请检查开关、来源声明或规则顺序": "Esta regra não foi usada. Verifique a ativação, as declarações de origem ou a ordem das regras.", "本地账号、配置、签到与余额记录变化后自动上传(合并 1 秒内的连续改动,最长 10 秒传一次;内容没变时不发请求)。": "Envia automaticamente após alterações locais em contas, configuração, check-in e registros de saldo (alterações em até 1 segundo são agrupadas, no máximo um envio a cada 10 segundos; nenhuma requisição é feita se nada mudou).", "本机 API 地址": "Endereço da API deste dispositivo", "本机 APK 版本": "Versão do APK neste aparelho", "本机全部数据会被备份整体替换,恢复前自动保留安全备份,完成后需要重新登录管理面板。本机已有密钥不会被覆盖。": "Todos os dados do banco local serão substituídos pelo backup. Um backup de segurança é salvo antes, e será preciso entrar novamente. As chaves locais existentes não serão sobrescritas.", "本机应用版本": "Versão do app neste aparelho", "本机界面版本": "Versão da interface neste aparelho", "本机的业务数据(账号、配置、Agent 配置、代理池 / 订阅、签到与余额记录)将上传并": "Os dados de negócio desta máquina (contas, configuração, perfis do Agent, pool de proxies / assinaturas, registros de check-in e saldo) serão enviados e", "本机的全部数据(账号、网关配置、日志统计与桌面设置)将被所选备份文件": "Todos os dados desta máquina (contas, configuração do gateway, estatísticas de logs e configurações do desktop) serão ", "本机的账号、网关配置、Agent 配置、代理池 / 订阅、签到与余额记录将被远端快照": "As contas, a configuração do gateway, os perfis do Agent, o pool de proxies / assinaturas e os registros de check-in e saldo desta máquina serão substituídos pelo snapshot remoto", "本次无需刷新": "Nenhuma atualização necessária desta vez", "本软件不提供任何担保,可按 AGPL-3.0 修改与分发;通过网络提供修改版服务时须向用户提供对应源码。": "Este software não oferece garantia e pode ser modificado e distribuído sob AGPL-3.0. Serviços de rede modificados devem oferecer aos usuários o código-fonte correspondente.", "本项目的 AGPL-3.0 许可不替代这些第三方许可。名称与标识的商标权归各自权利人所有。": "A licença AGPL-3.0 deste projeto não substitui estas licenças de terceiros. Os direitos de marca sobre nomes e logotipos pertencem aos respectivos titulares.", "机器人校验": "Captcha", "机器人校验设置已保存": "Configurações de verificação de bots salvas", "条数": "Quantidade de registros", "来源声明当前关闭,这条规则不会生效。请先在客户端识别设置中开启。": "As declarações de origem estão desativadas; esta regra não será aplicada. Ative-as nas configurações de identificação.", "来源声明无效或未登记,本次已忽略。": "A declaração de origem é inválida ou não registrada e foi ignorada.", "来源声明未启用,本次已忽略。": "As declarações de origem estão desativadas e foram ignoradas.", "来源版本": "Revisão de origem", "来源设备:{device}": "Dispositivo de origem: {device}", "来自 {device},生成于 {time}": "De {device}, criado em {time}", "架构": "Arquitetura", "查看内置客户端({n})": "Ver clientes integrados ({n})", "查询管理员状态失败:{message}": "Falha ao consultar o status do administrador: {message}", "校验身份:这三段必须各自成块排在最前(实测:三段并成一段会被回 405 / 3012)。因此这里按段编辑,不能合成一段。改过的段以你的文本为准,没改的段继续用官方原文;清空某一段 = 那一段恢复官方原文。": ": os três blocos precisam vir no início, cada um como um bloco separado (testado: três blocos fundidos em um só retornam 405 / 3012). Por isso a edição aqui é por bloco — não é possível fundi-los. Blocos alterados usam o seu texto; os não alterados continuam com o texto oficial; limpar um bloco = aquele bloco volta ao texto oficial.", "桌面端": "Aplicativo desktop", "桌面端登录 / 注册验证": "Verificação de login / cadastro no desktop", "桌面端:登录 / 注册需要 ALTCHA 人机验证": "Desktop: login / registro exige verificação ALTCHA", "桌面端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "Desktop: login / registro exige verificação ALTCHA (em uso agora)", "桌面运行时不可用,暂时无法保存": "Runtime do desktop indisponível; não é possível salvar agora", "档案": "Perfil", "检测中…": "Verificando…", "概览": "Visão geral", "模型不能直接看图时,按你选择的方式处理。原生支持图片的请求直接转发,不增加识图调用。": "Quando o modelo não puder ler imagens, use o modo escolhido. Solicitações a modelos com suporte nativo seguem diretamente, sem uma chamada visual extra.", "模型单独配置": "Configuração por modelo", "模型目录没写明是否支持图片时按这里处理。": "Usado quando o catálogo não informa se o modelo aceita imagens.", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。下面两块分别选好「哪些模型」和「用哪只模型」即可;没配到的模型、以及本来就能看图的模型,一律原样放行。这里的改动立即生效,不需要保存。": "Um modelo que não consegue ler imagens tem apenas duas saídas: deixar outro modelo ler a imagem por ele, ou entregar a requisição inteira a um modelo que consiga. Escolha os modelos e o modelo de visão nos dois blocos abaixo. O que não estiver aqui — inclusive modelos que já leem imagens — passa sem alteração. As mudanças aqui valem na hora; não há nada a salvar.", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。没配到的模型、以及本来就能看图的模型,一律原样放行;每个请求只用其中一种方式,不会两种串着做,处理失败也不会改走另一种。改动立即生效,不需要保存。": "Um modelo que não consegue ler imagens tem apenas duas saídas: deixar outro modelo ler a imagem por ele, ou entregar a requisição inteira a um modelo que consiga. O que não estiver aqui — inclusive modelos que já leem imagens — passa sem alteração. Cada requisição usa apenas uma das duas formas; elas nunca se encadeiam e uma falha não cai na outra. As mudanças aqui valem na hora; não há nada a salvar.", "模型请求是否需要验证码由 ZCode 上游配置决定,领取验证与模型请求免验证分别处理。后台只检查配置和库存,不自动运行验证码或弹出拼图;需要验证时,在账号的「套餐明细」中点击「开始验证」。验证令牌一次性使用,短时间内过期,失败或取消后不会自动重试。": "As configurações do provedor ZCode determinam se o modelo exige verificação, separadamente do resgate de planos. O processo em segundo plano só consulta configurações e estoque; nunca executa verificação nem abre um quebra-cabeça automaticamente. Inicie-a nos detalhes do plano da conta. Tokens são de uso único, expiram rapidamente e não são repetidos após falha ou cancelamento.", "模式": "Modo", "模式改为「{mode}」": "Modo alterado para “{mode}”", "次": "vezes", "次日 00:00": "00:00 do dia seguinte", "正则表达式": "Expressão regular", "正在保存上游原始报文:": "Salvando payloads brutos do upstream:", "正在修改…": "Alterando…", "正在剥离出站请求里的审核指纹:表头键值整段删除,模板句最小改写。": "Removendo os fingerprints de revisão das requisições de saída: pares chave/valor de cabeçalho excluídos por completo, frases de template com reescrita mínima.", "正在安装…": "Instalando…", "正在应答跨源请求:浏览器跨域请求可直连 /v1/*。": "Respondendo a requisições de outra origem: requisições de navegador com CORS podem se conectar diretamente a /v1/*.", "正在归一角色:developer 角色消息转发前改写为 system。": "Normalizando papéis: mensagens com papel developer são reescritas para system antes do encaminhamento.", "正在注册…": "Registrando…", "正在联网更新": "Atualizando online", "正在读取提供商设置…": "Carregando configurações de provedores…", "正式版": "Estável", "每个请求只会用到其中一种方式,不会两种串着做;处理失败也不会改走另一种。配了哪只视觉模型,那次请求的图片就会交给它。": "Cada requisição usa apenas uma das duas formas; elas nunca se encadeiam e uma falha não cai na outra. O modelo de visão configurado é quem recebe as imagens daquela requisição.", "每条请求轮换到下一个可用账号;新会话交给当前最闲的那位。适合想把手里的号摊开用、不让某一个一直扛。": "Alterna para a próxima conta utilizável a cada requisição; uma sessão nova vai para quem estiver mais livre. Para distribuir o uso entre as contas em vez de deixar uma carregar tudo.", "每条请求都重新按策略选路 —— 行为与「关闭」一致,仅保留会话识别的记录。": "Cada requisição é roteada pela estratégia do zero — mesmo comportamento de \"Desligado\", apenas os registros de sessão são mantidos.", "每次等待的时长,默认 0 = 跟随上游建议(实测 9~30 秒,上游没给建议时用 15 秒)。可填 0–120 秒强制一个固定时长。": "Duração de cada espera; padrão 0 = seguir a sugestão do upstream (medido: 9~30 segundos; quando o upstream não sugere nada, usa 15 segundos). Aceita 0–120 segundos para forçar uma duração fixa.", "每行一个域名,不填协议、端口或路径;与 Cloudflare 中的配置一致,服务端按完整域名匹配。手机 App 使用所连接网关的域名。": "Informe um hostname por linha, sem protocolo, porta ou caminho. Use os mesmos valores da Cloudflare; o servidor exige correspondência exata. O aplicativo móvel usa o hostname do gateway conectado.", "毫秒": "ms", "沟通方式 / 上下文管理 + Environment 段。": "O bloco de estilo de comunicação / gestão de contexto + Environment.", "没有可导出的账号": "Não há contas para exportar", "没有可用视觉模型时": "Quando não houver modelo de visão disponível", "没有已确认支持图片的模型,请先在模型管理中确认。": "Nenhum modelo tem suporte a imagens confirmado. Confirme a capacidade em Gerenciamento de Modelos primeiro.", "没能读到「{label}」的当前值,改为 {count} 条可能会删除超出的历史数据。": "Não foi possível ler o valor atual de “{label}”. Definir {count} registros pode excluir os dados históricos excedentes.", "没能读到「{label}」的当前值,改为 {days} 天可能会删除超出的历史数据。": "Não foi possível ler o valor atual de “{label}”; mudar para {days} dias pode excluir dados históricos excedentes.", "沿用对应方式的视觉模型配置,不额外维护一份模型列表。": "Reutiliza a configuração visual desse modo, sem manter outra lista de modelos.", "沿用工具服务的视觉分析模型": "Reutilizar o modelo de análise visual do serviço de ferramentas", "沿用工具服务的视觉分析模型(未配置)": "Modelo de visão do serviço de ferramentas (não configurado)", "注册并开启": "Registrar e ativar", "注册管理员账号": "Registrar conta de administrador", "注意:这一家的「网关自带」开关现在是关的,改过的正文要等开关打开才生效。": "Atenção: o switch “Interno do gateway” deste provedor está desativado; o texto alterado só passa a valer quando o switch for ativado.", "流式响应相邻数据之间允许的最大空闲时间(秒),收到新数据后重新计时,默认 300 秒,范围 1~3600。": "Tempo máximo de inatividade permitido entre dados adjacentes de uma resposta em streaming (segundos), com a contagem reiniciada a cada novo dado recebido; padrão 300 segundos, faixa 1~3600.", "流式响应空闲超时": "Timeout de inatividade do streaming", "测试连接": "Testar conexão", "浏览器 / PWA": "Navegador / PWA", "浏览器只在 https 或 localhost 下提供离线缓存;局域网 http 访问不影响正常使用": "Os navegadores só oferecem cache offline em https ou localhost. O acesso por http na LAN continua funcionando normalmente.", "浏览器在本地完成计算,不需要第三方密钥,也不依赖外部验证服务。": "O navegador faz o cálculo localmente. Não exige chaves de terceiros nem serviços externos de verificação.", "浏览器标签页": "Aba do navegador", "浏览器面板": "Painel no navegador", "消息角色": "Papéis das mensagens", "添加备选模型": "Adicionar modelo alternativo", "添加提供商": "Adicionar provedor", "添加提供商…": "Adicionar provedor…", "添加自定义头": "Adicionar cabeçalho personalizado", "添加要单独配置的提供商": "Adicionar provedor para configurar individualmente", "清除本机凭证": "Limpar credenciais locais", "清除这里的正文": "Limpar o texto deste campo", "源代码": "Código-fonte", "点下面的入口会用系统默认浏览器打开 GitHub 的对应表单(需要 GitHub 账号,模板已预设好,填完直接提交即可)。": "Os atalhos abaixo abrem o formulário correspondente no GitHub usando o navegador padrão do sistema (é preciso ter uma conta GitHub; o template já vem preenchido, basta completar e enviar).", "点击重命名": "Clique para renomear", "点此添加或切换服务器": "Toque para adicionar ou trocar de servidor", "点此添加服务器": "Toque para adicionar um servidor", "版本": "Versão", "版本信息": "Informações de versão", "版本信息 · 所连网关环境": "Informações de versão · gateway conectado", "版权声明": "Aviso de copyright", "状态码 {code} 已在名单里": "O status code {code} já está na lista", "状态码必须是 {min}–{max} 的整数(收到: {text})": "O status code deve ser um número inteiro de {min}–{max} (recebido: {text})", "环境": "Ambiente", "生成时间:{time}": "Criado em: {time}", "生效顺序:有效的来源声明优先,然后按顺序匹配自定义规则,最后使用内置规则。中转丢失原始标识时,无法自动推断背后的软件。": "Prioridade: declaração válida, regras personalizadas em ordem e regras integradas. Se um intermediário remover o identificador original, não será possível inferir automaticamente o software de origem.", "用 models.dev 补齐上游没声明的模型能力与思考档位(联网刷新,内嵌快照始终生效)": "Preenche capacidades e níveis de raciocínio que o upstream não declara, usando o models.dev (atualização online; o snapshot embutido sempre vale)", "用于加密上云的账号密钥。请自己记牢 —— 它不保存到云端,换机下载时必须输入同一个密码,否则账号数据无法解密。": "Usada para criptografar a chave da conta enviada à nuvem. Memorize-a — ela não é armazenada na nuvem e você precisa digitar a mesma senha ao restaurar em outra máquina, caso contrário os dados das contas não poderão ser descriptografados.", "用哪只模型识图": "Qual modelo lê a imagem", "用浏览器菜单里的「添加到主屏幕」把这一页装成 App:全屏打开、没有地址栏,和原生应用一样。": "Use \"Adicionar à Tela de Início\" no menu do navegador para instalar esta página como app: tela cheia, sem barra de endereço, igual a um app nativo.", "由 Cloudflare 提供验证,需要浏览器与网关均能连接 Cloudflare。验证失败或服务不可用时不会自动放行。": "A verificação é fornecida pela Cloudflare. O navegador e o gateway precisam acessar a Cloudflare. Uma falha na verificação ou indisponibilidade do serviço não libera o acesso.", "由 {source} 覆盖,手动设置暂不生效": "Substituído por {source}; a configuração manual não está ativa no momento", "界面缩放": "Zoom da interface", "界面缩放比例": "Nível de zoom da interface", "界面语言": "Idioma da interface", "界面语言。可选简体中文、繁體中文、English、日本語、한국어、Português (Brasil),或「跟随系统」(按浏览器 / 系统的语言列表自动选)。切换后整页立即刷新;该偏好只存在本机(localStorage),不影响账号、密钥与转发。": "Idioma da interface. Opções: 简体中文, 繁體中文, English, 日本語, 한국어, Português (Brasil), ou “Sistema” (seleção automática pela lista de idiomas do navegador / sistema). Após a troca, a página inteira é atualizada na hora; essa preferência fica apenas nesta máquina (localStorage) e não afeta contas, chaves nem o encaminhamento.", "界面语言只保存在本机(localStorage)。切换后整页立即刷新,不影响账号、密钥与转发。": "O idioma da interface fica salvo apenas nesta máquina (localStorage). Após a troca, a página inteira é atualizada na hora; não afeta contas, chaves nem o encaminhamento.", "界面里编辑的正文": "Texto editado na interface", "留空 = 用内置默认提示词": "Vazio = usar o system prompt padrão integrado", "留空使用 AWS 官方地址": "Deixe em branco para usar o endereço oficial da AWS", "留空使用默认": "Deixe em branco para usar o padrão", "留空表示删除匹配内容;替换内容按原文写入,$ 不作为捕获组引用。": "Deixe vazio para excluir o texto correspondente. A substituição é inserida literalmente; $ não referencia grupos de captura.", "登录 / 注册需要通过 ALTCHA 人机验证(工作量证明)": "Login / registro exigem a verificação humana ALTCHA (proof of work)", "登录 / 账号切换 / 429 切换等系统事件,可填 1–3650 天。": "Eventos do sistema como login / troca de conta / troca por 429; intervalo de 1–3650 dias.", "登录 / 账号切换 / 429 切换等系统事件,可填 1–99999 天。": "Eventos de sistema como login, troca de conta e switch 429. Aceita de 1 a 99999 dias.", "登录 Agent2API": "Entrar no Agent2API", "登录 {name}": "Entrar em {name}", "登录人机验证": "CAPTCHA de login", "百分比类读数(如 OpenCode Go、Antigravity)不能相加,组头显示的是组内最低剩余比例。": "Leituras percentuais (como OpenCode Go ou Antigravity) não podem ser somadas; a faixa mostra a menor porcentagem restante do grupo.", "监听地址": "Endereço de escuta", "目前展示仓库已登记的图标来源许可,不代表完整的第三方依赖清单。": "Esta lista contém as licenças das fontes de ícones atualmente registradas no repositório, não um inventário completo das dependências de terceiros.", "目标路径:{path}": "Caminho de destino: {path}", "直接按上面的设置兼容": "Aplicar as configurações acima direto", "直接按当前方式兼容": "Aplicar diretamente o modo selecionado", "知道了": "Entendi", "确定": "Confirmar", "确定后加入当前草稿,点击「保存设置」才会生效。": "Confirmar adiciona a regra ao rascunho. Clique em Salvar configurações para aplicá-la.", "确定继续?": "Confirmar e continuar?", "确认上传": "Confirmar envio", "确认图片处理授权": "Confirmar autorização para processar imagens", "确认备份密码": "Confirmar senha do backup", "确认并保存": "Confirmar e salvar", "确认新密码": "Confirmar nova senha", "确认缩减数据保留": "Confirmar redução da retenção de dados", "确认缩短保留天数": "Confirmar a redução dos dias de retenção", "社区与支持": "Comunidade e suporte", "离线缓存未启用": "O cache offline está desativado", "积分合计只统计当前筛选出来的账号": "Somar apenas as contas visíveis no filtro atual", "移入「{name}」": "Mover para \"{name}\"", "程序路径": "Caminho do executável", "空 = 不要这一份,回落提示词文件 / 内置默认提示词。": "Vazio = não usar este texto e voltar para o arquivo de prompt / system prompt padrão integrado.", "空分组 · 点组头的 + 把菜单移进来": "Grupo vazio · use + no cabeçalho para mover menus", "立即解除": "Encerrar agora", "站点密钥(Site Key)": "Chave do site (Site Key)", "第一段": "Primeiro bloco", "第一段(身份句)": "Primeiro bloco (frase de identidade)", "第三方应用密码": "Senha de aplicativo", "第三方开源许可": "Licenças de código aberto de terceiros", "第三方模型回答完自动折叠过程": "Recolher automaticamente o trabalho de modelos de terceiros após a resposta", "第三方模型回答完自动折叠过程设置已刷新": "Configuração de recolhimento do trabalho de modelos de terceiros atualizada", "第三段": "Terceiro bloco", "第三段(动态段)": "Terceiro bloco (dinâmico)", "第二段": "Segundo bloco", "第二段(稳定段)": "Segundo bloco (estável)", "等待响应超时": "Timeout de espera de resposta", "等待期间请求日志的状态列会显示「排队中」阶段,详情弹窗的「内部重试」里能逐次看到等待时长;等待用尽后返回 HTTP 503(不是 401/429:既不会刷新凭证,也不会把账号标成限额)。": "Durante a espera, a coluna de status dos logs de requisições mostra a fase “Na fila”, e o diálogo de detalhes, em “Retries internos”, mostra a duração de cada espera uma a uma; quando as esperas se esgotam, é retornado HTTP 503 (não 401/429: nem atualiza credenciais, nem marca a conta como limitada).", "等比放大或缩小整个界面(文字、控件、间距一起变),效果与浏览器按 Ctrl +/- 相同:80%–130%、5% 一档。窗口本身不缩放,变的是页面内容的显示比例,设置立即生效并记住,下次启动直接按这个比例打开。放得越大可视范围越小,窗口较窄或表格较宽时不建议调得太大。": "Amplia ou reduz a interface inteira proporcionalmente (texto, controles e espaçamentos juntos), com o mesmo efeito de Ctrl +/- no navegador: 80%–130%, em passos de 5%. A janela em si não é redimensionada; o que muda é a proporção de exibição do conteúdo da página. A configuração vale imediatamente e é memorizada, e a próxima inicialização já abre nesta proporção. Quanto maior o zoom, menor a área visível; com janelas estreitas ou tabelas largas, não é recomendável aumentá-lo demais.", "简体中文": "chinês simplificado", "管理员已注册": "Administrador registrado", "管理员账号": "Conta de administrador", "管理插件": "Gerenciar plugins", "精确文本": "Texto exato", "系统提示词模式": "Modo do system prompt", "系统提示词设置已刷新": "Configurações do system prompt atualizadas", "累计请求": "Requisições totais", "繁体中文": "chinês tradicional", "约 {n} 字符": "cerca de {n} caracteres", "结构": "estrutura", "给 Codex 的响应补阶段标记,回答完后像官方模型一样把推理与命令过程折叠起来": "Adicionar marcadores de fase às respostas do Codex para recolher o raciocínio e os comandos após a resposta, como nos modelos oficiais", "继续并清理": "Continuar e limpar", "编辑提示词正文 · {label}": "Editar o texto do prompt · {label}", "编辑提示词正文 · 全局": "Editar o texto do prompt · Global", "编辑正文": "Editar texto", "编辑网关自带提示词 · {label}": "Editar o system prompt interno do gateway · {label}", "编辑脱敏规则": "Editar regra de mascaramento", "编辑识别规则": "Editar regra de identificação", "缩放后重新存成 JPEG 时用的质量。默认 80,可填 40–95;数值越小体积越小、画质越差。": "Qualidade JPEG usada ao recodificar a imagem reduzida. Padrão 80, faixa 40–95; menor significa arquivo menor e qualidade pior.", "缩放比例": "Nível de zoom", "网关": "Gateway", "网关 Key 数量": "Quantidade de chaves do gateway", "网关尚未就绪": "O gateway ainda não está pronto", "网关自带": "Interno do gateway", "网关跨域访问已开启": "CORS do gateway ativado", "网关跨域访问设置已刷新": "Configurações de CORS do gateway atualizadas", "网关跨域访问(CORS)": "Acesso de outra origem ao gateway (CORS)", "网关面(/v1/*)默认不应答浏览器跨源请求:页面直连会被预检拦下,只报「无法连接 API」。注意来源是 * —— 未配「网关 Key」时任何网页都能借本机网关打上游,故默认关闭;只给自己用的话,让页面与网关同源(本地反代 /v1)更稳妥。面板接口(/api/*)不受影响。": "A API do gateway (/v1/*) não responde por padrão a requisições de outra origem feitas por navegador: a conexão direta da página é barrada no preflight e só mostra “não foi possível conectar à API”. Atenção: a origem é * — sem uma “Chave do gateway” configurada, qualquer página pode usar o gateway local para atingir o upstream; por isso o padrão é desativado. Se for só para você, é mais seguro deixar a página e o gateway na mesma origem (proxy reverso local em /v1). A API do painel (/api/*) não é afetada.", "网络访问": "Acesso pela rede", "网页端": "Web", "网页端登录 / 注册验证": "Verificação de login / cadastro na web", "网页端的界面缩放由浏览器自己控制(Ctrl + / Ctrl -,或浏览器菜单里的缩放),此项不可调。": "No painel web, o zoom da interface é controlado pelo próprio navegador (Ctrl + / Ctrl -, ou o zoom no menu do navegador); esta opção não pode ser ajustada.", "网页端:登录 / 注册需要 ALTCHA 人机验证": "Web: login / registro exige verificação ALTCHA", "网页端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "Web: login / registro exige verificação ALTCHA (em uso agora)", "网页管理地址": "Endereço do painel web", "群晖 NAS": "Synology NAS", "群晖需在「控制面板 → 应用程序门户 → WebDAV」里启用服务,端口默认 5005(HTTP)/ 5006(HTTPS)。": "No Synology, ative o serviço em Painel de Controle → Portal de Aplicativos → WebDAV; as portas padrão são 5005 (HTTP) / 5006 (HTTPS).", "脱敏词表": "Regras de mascaramento", "腾讯云 COS": "Tencent Cloud COS", "自动同步": "Sincronização automática", "自动同步上次失败": "A última sincronização automática falhou", "自动续写": "Continuação automática", "自定义 User-Agent": "User-Agent personalizado", "自定义客户端分类": "Categorias de clientes personalizadas", "自定义客户端数量已达上限": "Limite de clientes personalizados atingido", "自定义提供商 {id}": "Provedor personalizado {id}", "自定义网站和应用界面中显示的名称与 Logo。": "Personalize o nome e o logo exibidos no site e na interface do aplicativo.", "自定义识别规则": "Regras de identificação personalizadas", "自愈保护": "Proteções de autorrecuperação", "至少 12 位": "Ao menos 12 caracteres", "至少 8 位,换机下载时需要": "Pelo menos 8 caracteres; necessário ao restaurar em outra máquina", "至少要保留一个分组": "Pelo menos um grupo deve permanecer", "英语": "inglês", "范围 5–120 秒,并受原请求时限约束。": "Faixa de 5 a 120 segundos, também limitada pelo tempo da requisição original.", "范围为 5–120 秒,并受原请求时限约束。图片过大、格式错误或下载失败不会被当作模型不支持图片。": "Intervalo permitido: 5–120 segundos, limitado também pelo tempo da solicitação original. Imagens grandes, formatos inválidos e falhas de download não são tratados como falta de suporte a imagens.", "被更高优先级覆盖": "Substituída por prioridade superior", "装上{size}的官方身份提示词": "Instalar o system prompt de identidade oficial ({size})", "装成 App 后从桌面图标直接进入:全屏打开、没有地址栏。": "Instalado como app, ele abre direto pelo ícone da tela inicial: em tela cheia, sem barra de endereço.", "覆盖": "sobrescrever", "规则 / 匹配方式": "Regra / tipo de correspondência", "规则可以增删改、启停和调整顺序;替换内容留空表示删除匹配内容。恢复默认只重置词表,不改开关和提供商范围。": "Adicione, edite, exclua, ative, desative e reordene regras. A substituição vazia exclui o texto correspondente. Restaurar o padrão redefine apenas as regras, sem alterar o interruptor nem o escopo de provedores.", "规则名称": "Nome da regra", "规则名称不能为空,且最多 {max} 个字符": "O nome da regra é obrigatório e deve ter no máximo {max} caracteres", "规则已保存,对后续请求生效;当前历史记录未修改。": "Regra salva para requisições futuras. Este registro histórico não foi alterado.", "规则忽略大小写,只影响新请求的日志与统计,不改变模型选择或权限。": "As regras ignoram maiúsculas e minúsculas e afetam apenas logs e estatísticas de novas requisições, sem alterar modelos ou permissões.", "规则编号:{id}": "ID da regra: {id}", "视觉模型": "Modelo de visão", "视觉模型先识读图片,再由原模型分析和回答。": "Um modelo de visão lê as imagens primeiro; depois, o modelo original analisa e responde.", "视觉模型来源": "Origem do modelo de visão", "视觉模型的思考等级": "Nível de raciocínio do modelo de visão", "视觉模型直接回答": "O modelo de visão responde diretamente", "视觉模型识读图片": "O modelo de visão lê as imagens", "解码后小于这个体积的图片保持原样。默认 512KB,可填 0–10240;填 0 表示所有内嵌图片都过一遍。": "Imagens menores que este tamanho após a decodificação são mantidas como estão. Padrão 512KB, faixa 0–10240; 0 processa todas as imagens embutidas.", "解除失败:{message}": "Falha ao encerrar: {message}", "触发阈值": "Limite de acionamento", "计数": "Contagens", "计量单位": "Notação numérica", "让 Codex 在收到最终答案后收起中间过程。仅为严格识别的 Codex Responses 请求补阶段标记,报表归类和来源声明不影响此判断。正常结束且没有工具调用的非空回答才补 final_answer,工具调用前的说明补 commentary;错误、截断、缺少结束信号或未知结束原因不补最终答案标记。默认关闭,不改变回答文字,也不减少模型思考或用量。": "Permite que o Codex recolha o trabalho intermediário após a resposta final. Os marcadores de fase são adicionados somente a requisições Responses identificadas estritamente como Codex, independentemente das categorias dos relatórios ou das declarações do cliente. Apenas respostas não vazias, concluídas normalmente e sem chamadas de ferramentas recebem final_answer; explicações antes das chamadas recebem commentary. Erros, truncamento, ausência de sinal de conclusão e motivos de término desconhecidos não recebem marcador de resposta final. Desativado por padrão; não altera o texto, o raciocínio do modelo nem o consumo.", "许可原文": "Texto original da licença", "许可原文已随软件内置,无需联网即可查看;打开项目来源链接需要联网。": "Os textos das licenças estão incluídos no aplicativo e podem ser consultados offline. Abrir os links de origem dos projetos requer conexão com a internet.", "许可核对版本": "Revisão usada para verificar a licença", "设置不可隐藏(隐藏了只能清缓存找回来)": "\"Configurações\" não pode ser ocultado (seria preciso limpar o armazenamento para recuperá-lo)", "设置备份密码": "Definir senha do backup", "设置识别规则": "Definir regra de identificação", "访问时请使用目标设备能连接到的地址;这里显示的本机地址不代表公网可达。": "Use um endereço alcançável pelo dispositivo que vai se conectar. O endereço local exibido aqui não garante acesso pela internet.", "识别依据": "Evidência de identificação", "识别规则数量已达上限": "Limite de regras de identificação atingido", "词表为空,不会改写任何指纹。可以新增规则或恢复默认词表。": "A lista está vazia; nenhum fingerprint será alterado. Adicione uma regra ou restaure o padrão.", "该提供商暂无可编辑的专属设置": "Este provedor não tem configurações editáveis", "详细日志": "Logs detalhados", "语言设置": "Configurações de idioma", "请先保存设置再同步": "Salve as configurações antes de sincronizar", "请先在 Cloudflare 创建 Turnstile 组件,建议选择 Managed 模式,并添加面板实际使用的域名。": "Primeiro crie um widget Turnstile na Cloudflare. Recomendamos o modo Managed. Adicione os domínios usados para acessar o painel.", "请填一个分组名": "Informe um nome de grupo", "请填写管理员账号(64 字符以内)": "Preencha a conta de administrador (até 64 caracteres)", "请求发出后等待上游响应头的最大时间(秒),默认 300 秒,范围 1~3600。": "Tempo máximo de espera pelos cabeçalhos de resposta do upstream após o envio da requisição (segundos), padrão 300 segundos, faixa 1~3600.", "请求带有不同软件的标识,未自动归类;可用自定义规则明确归属。": "A requisição contém identificadores de aplicativos diferentes e não foi classificada automaticamente. Use uma regra personalizada para atribuí-la.", "请求提供商 / 模型支持": "Solicitar suporte a provedor / modelo", "请求日志保留天数": "Retenção dos logs de requisições (dias)", "请求日志保留数量上限": "Limite de registros de requisições", "请求记录": "Registros de requisições", "请求超时": "Timeout de requisição", "请求转发到上游失败时(服务器瞬时错误、连接失败,以及 WorkBuddy 的 11-128 敏感词拦截),网关会等一段间隔后再发一次。次数分两档,管的是两件事:①「同一账号重试次数」在同一账号上原地重发几次 —— 一般是提示词被上游拦截、或链路瞬时抖动,等一会儿重发往往就好了;②「切换账号重试次数」这份请求最多再换几个账号试 —— 首发的那个账号不算,每换一个扣一次,不分是不是同一家(换到同一家的下一个账号也算一次),换满还失败就把错误返回给客户端。两项都设为 0 表示失败不重试、直接报错。注意账号级限额(429)不占这里的换号次数 —— 那类失败走「冷却该账号并换下一个账号」的降级,与这里的重试是两条路。另有「指定错误码直接换号」名单(默认 402):命中名单的上游状态码不在同一账号重发,直接按队列换下一个账号继续试(换号也占「切换账号重试次数」),换满仍失败才把错误返回给客户端。": "Quando o encaminhamento ao upstream falha (erro momentâneo do servidor, falha de conexão e bloqueio por palavra sensível 11-128 do WorkBuddy), o gateway espera um intervalo e envia de novo. As tentativas se dividem em duas opções, que tratam de duas coisas: ① “Retries na mesma conta” — quantas vezes reenviar na própria conta; normalmente é o prompt bloqueado pelo upstream ou uma oscilação momentânea do link, e reenviar depois de um tempo costuma resolver; ② “Retries trocando de conta” — por quantas contas a mais esta requisição pode tentar; a conta do primeiro envio não conta, cada troca desconta uma, independentemente de ser o mesmo provedor (trocar para a conta seguinte do mesmo provedor também conta), e se o limite se esgotar com falha, o erro é retornado ao cliente. Definir ambas como 0 significa não tentar de novo em caso de falha e retornar o erro direto. Atenção: o limite no nível da conta (429) não consome as trocas de conta daqui — esse tipo de falha segue o fallback de “esfriar a conta e passar para a próxima”, um caminho diferente do retry daqui. Existe ainda a lista de “Troca de conta direta em códigos de erro especificados” (padrão 402): falhas que correspondem aos status codes do upstream da lista não são reenviadas na mesma conta — o gateway passa direto para a próxima conta da fila e continua tentando (a troca também consome “Retries trocando de conta”), e só quando elas se esgotam com falha é que o erro é retornado ao cliente.", "请求重试": "Retry de requisições", "请至少选择一个提供商": "Selecione pelo menos um provedor", "请输入同步密码": "Digite a senha de sincronização", "请输入当前密码": "Digite a senha atual", "请输入服务端密钥": "Digite a chave secreta", "请选择可用的标识请求头": "Selecione um cabeçalho de identificação disponível", "请选择归属客户端": "Selecione o cliente de destino", "读取云同步设置失败:{message}": "Falha ao ler as configurações de sincronização na nuvem: {message}", "读取失败:{message}": "Falha ao ler: {message}", "读取完整非流式响应体允许的最大时间(秒),默认 300 秒,范围 1~3600。": "Tempo máximo permitido para ler o corpo completo de uma resposta não streaming (segundos), padrão 300 segundos, faixa 1~3600.", "读取网关信息失败:{message}": "Falha ao ler as informações do gateway: {message}", "读取远端…": "Lendo o remoto…", "读取远端信息失败:{message}": "Falha ao ler as informações remotas: {message}", "调用方声明": "Declaração do solicitante", "调试报文": "Payloads de debug", "调试模式": "Modo de depuração", "调试模式设置已刷新": "Configurações do modo debug atualizadas", "负载均衡": "Balanceamento de carga", "账号列表": "Lista de contas", "账号导入 / 导出": "Importar / exportar contas", "账号路由": "Roteamento de contas", "账号页表格的两项显示偏好,只存在本机(localStorage),不影响账号数据与转发。「积分合计只统计当前筛选出来的账号」:账号页每一家的分组带右侧有一枚「可用合计」,默认按整组求和 —— 不受筛选、搜索影响,被筛掉的账号也计入(余额是资产,禁用也只表示不参与转发,额度仍在账上)。打开这一项后改为只累加当前可见的行:例如筛出 1 个 100 积分的账号,合计就是 100,而不是同组两个账号之和 1,000。分页不参与这个口径 —— 翻页看的是同一份结果的不同屏,合计不随页码变化。「隐藏账号名」与表头「账号」旁边那颗眼睛是同一个开关:打开后账号列的名字整体显示成星号,适合截图分享时遮挡账号。": "Duas preferências de exibição da tabela de contas. Ficam apenas nesta máquina (localStorage) e não afetam dados de conta nem o encaminhamento. \"Somar apenas as contas visíveis no filtro atual\": cada faixa de provedor na página de contas mostra um selo \"Total disponível\" e, por padrão, ele soma o grupo inteiro — filtros e busca não o alteram, e contas filtradas ainda contam (saldo é ativo; desativar apenas mantém a conta fora do encaminhamento, o crédito permanece). Ative para somar apenas as linhas visíveis: filtre até uma conta com 100 créditos e o total mostra 100, não 1.000 (a soma das duas contas do grupo). A paginação não participa desta regra — páginas são apenas telas diferentes do mesmo resultado, então o total não muda ao virar páginas. \"Ocultar nomes das contas\" é o mesmo botão do olho ao lado do cabeçalho \"Conta\": quando ativado, os nomes na coluna de contas aparecem como asteriscos, útil para capturas de tela.", "账户": "Conta", "超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件。把天数改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。可填范围为 1–3650 天。请求日志 / 按天聚合 / 签到记录已全量保留、不再自动删除,要清历史请到对应页面手动清空。": "Qualquer coisa além do período de retenção é excluída: os logs de eventos são eventos do sistema, como login, troca de conta e switch 429. Diminuir o valor (por exemplo, de 30 para 7 dias) e salvar exclui imediatamente os dados históricos excedentes, e isso não pode ser desfeito; aumentar ou manter o valor não exclui nada. O intervalo permitido é de 1–3650 dias. Logs de requisições, agregados diários e registros de check-in agora são mantidos integralmente e nunca excluídos automaticamente; para limpar o histórico, use a página correspondente.", "超出的历史数据会被立即删除,且不可恢复。": "Os dados históricos excedentes serão excluídos imediatamente, sem possibilidade de recuperação.", "超时": "Timeout", "超时设置已刷新": "Configurações de timeout atualizadas", "跟随模型配置": "Seguir configuração do modelo", "跟随系统 · 浅色 · 深色": "Sistema · Claro · Escuro", "跟随默认": "Seguir padrão", "跨域访问": "CORS", "路由": "Roteamento", "路由组只使用组内成员;普通路由只使用参与范围内的账号和模型。": "Grupos de rotas usam apenas seus membros. Rotas comuns usam apenas contas e modelos dentro do escopo de participação.", "路由设置已刷新": "Configurações de roteamento atualizadas", "跳过 {n} 个": "Ignorados: {n}", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;负载均衡是每条请求换下一位,把负载摊到各个账号上。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时)、被 429 的账号垫底排到队尾 30 分钟、余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 前两层可以在下面按需开关,限制器由账号的「限制器」设置管。": "Em que ordem as contas são escolhidas ao encaminhar uma requisição: ① a \"Estratégia de roteamento\" define a regra da fila — na Ordem estrita, a posição 1 atende todas as requisições até não conseguir responder (limite / falha / cota esgotada) antes de passar à próxima; no Balanceamento de carga, cada requisição vai para a próxima conta, espalhando a carga. ② A \"Aderência de sessão\" mantém a mesma sessão (mesmo modelo + mesmas mensagens iniciais) na mesma conta sempre que possível — conversas de vários turnos reutilizam o cache de contexto do upstream, menos trocas de conta e menos desperdício; Automático gruda por 5 minutos, Na sessão por 6 horas, Por turno e Desligado não grudam. A posição na fila (primeira coluna da tabela de contas) é a base de toda estratégia; as estratégias se aplicam por cima. O roteamento ainda tem três proteções de autorrecuperação: contas que falham no encaminhamento recuam um pouco (15 minutos iniciais, dobrando a cada falha, teto de 1 hora), contas 429 com cota vão para o fim da fila por 30 minutos, e contas sem cota / acima do limite de tokens do período são seguradas pelo limitador — as duas primeiras podem ser ligadas e desligadas abaixo conforme a necessidade; o limitador é governado pela configuração \"Limitador\" de cada conta.", "转发前压缩对话里内嵌的大图(只改发给上游的副本,生图与图片编辑不受影响)": "Comprimir imagens embutidas grandes nas conversas antes de encaminhar (só a cópia enviada ao provedor muda; geração e edição de imagens não são afetadas)", "转发前将 developer 角色消息转换为 system,兼容不支持 developer 角色的 OpenAI 兼容上游": "Converte mensagens com papel developer para system antes do encaminhamento, para upstreams compatíveis com OpenAI que não suportam o papel developer", "转发失败的账号休息一会儿再回来:15 分钟起步,连续失败翻倍,封顶 1 小时;成功一次立即恢复。目的是「让这次失败先凉一会儿」,免得一条条地反复撞同一个坏账号。": "Uma conta que falha no encaminhamento descansa um pouco antes de voltar: começa em 15 minutos, dobra a cada falha consecutiva, com teto de 1 hora; um único sucesso a restaura na hora. A ideia é deixar a falha esfriar em vez de martelar a mesma conta ruim requisição após requisição.", "转发链路": "Encaminhamento", "轮询间隔": "Intervalo de polling", "软件标识超过 1 KB,已截断保存;匹配仅使用保留部分。": "O identificador excedeu 1 KB e foi truncado. A correspondência usa apenas a parte preservada.", "软件版本": "Versão do software", "轻量模式": "Modo leve", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 套餐池(Start Plan)通道不可用,相关请求会在请求日志里注明原因": "O modo leve está ativado: fechar a janela destrói o processo da interface (liberando cerca de 200 MB de memória) enquanto o gateway continua em segundo plano; com a interface destruída, o canal do pool de planos do ZCode (Start Plan) fica indisponível e as solicitações afetadas registrarão o motivo no log de solicitações", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 活动套餐通道不可用,相关请求会在请求日志里注明原因": "Modo leve ativado: fechar a janela destrói o processo da interface (libera cerca de 200MB de memória) e o gateway continua em segundo plano; enquanto a interface está destruída, o canal do Plano de evento da ZCode fica indisponível e as requisições relacionadas registram o motivo nos logs de requisições", "轻量模式(关窗释放界面内存)": "Modo leve (liberar a memória da interface ao fechar a janela)", "辅助识图": "Leitura assistida de imagens", "辅助识图 · 原模型回答": "Leitura assistida · O modelo original responde", "辅助识图保留原模型回答;切换视觉模型会让视觉模型直接回答。本次授权也包含已设置的模型单独配置。": "A leitura assistida mantém o modelo original para responder; a troca permite que o modelo de visão responda diretamente. Esta autorização também inclui as configurações por modelo.", "辅助识图或切换视觉模型,默认关闭": "Leitura assistida ou troca de modelo de visão, desativada por padrão", "辅助识图配置": "Configuração de leitura assistida", "输入同步密码": "Digitar senha de sincronização", "输入当前登录用的密码": "Digite a senha de login atual", "输入状态码,回车添加": "Digite o status code e pressione Enter para adicionar", "运行形态": "Forma de execução", "近期没有命中样本,不代表未来请求不会命中。": "Nenhuma amostra recente correspondeu; requisições futuras ainda podem corresponder.", "还原": "Restaurar", "还有额度时被 429 的账号排到队尾,30 分钟后自动回到队列(成功转发一次也会立即回来)。它标记的是「疑似共享池被别人抢」,不是「这个账号本身有问题」。⚠️ 注意它与路由策略的配合:在「家内轮询」下,队尾意味着这一家整体被往后排 —— 如果某个提供商的账号被批量限流,它们会集体沉到队尾,那个家可能长时间轮不到。这时可以关掉本项,让 429 过的账号只受冷却约束(冷却到点自动回来)。": "Uma conta com cota que recebe 429 vai para o fim da fila e volta automaticamente após 30 minutos (um encaminhamento bem-sucedido também a traz de volta na hora). Isso sinaliza \"provavelmente o pool compartilhado está sendo drenado por outro\", e não \"esta conta está com problema\". ⚠️ Atenção à interação com a estratégia de roteamento: no \"Rodízio por provedor\", o fim da fila significa que o provedor inteiro é empurrado para trás — se as contas de um provedor forem limitadas em massa, todas afundam para o fim e aquele provedor pode não ser alcançado por muito tempo. Nesse caso desligue isto, deixando as contas 429 sujeitas só ao cooldown (elas voltam sozinhas quando ele expira).", "还没有可用的视觉模型。": "Ainda não há modelo de visão disponível.", "还没有同步过。": "Ainda não sincronizado.", "还没有添加服务器。点右上角「添加」,填入网关所在机器的 IP 或域名与端口。": "Nenhum servidor ainda. Toque em \"Adicionar\" no canto superior direito e informe o IP ou domínio e a porta da máquina que roda o gateway.", "还没有装载任何数据。": "Nenhum dado carregado ainda.", "还没有读到版本信息": "As informações de versão ainda não foram carregadas", "还没有选择模型,这块设置暂时不起作用。": "Nenhum modelo selecionado, então este bloco ainda não faz nada.", "这一份就是「替换 / 追加」模式下网关要发的 system 正文。": "Este é o texto do system que o gateway envia nos modos “Substituir / Anexar”.", "这一项已隐藏": "Este item está oculto", "这一项正在显示": "Este item está visível", "这些模型的请求交给当前路由内可用的视觉模型回答,不再回到原模型。": "As requisições desses modelos são respondidas por um modelo de visão disponível na rota atual, no lugar do modelo original.", "这些模型看到图片时,先把图片交给 {model} 读一遍,再由它们自己结合读到的内容回答。": "Quando esses modelos recebem uma imagem, {model} a lê primeiro, e eles respondem com base no que foi lido.", "这些模型看到图片时,先把图片交给「沿用工具服务的视觉分析模型」读一遍,再由它们自己结合读到的内容回答。": "Quando esses modelos recebem uma imagem, o modelo de visão do serviço de ferramentas a lê primeiro, e eles respondem com base no que foi lido.", "这只模型只负责看图,最终仍由原模型回答。": "Este modelo apenas lê a imagem; quem responde continua sendo o modelo original.", "这只模型直接接收图片与对话,完成本次回答。": "Este modelo recebe as imagens e a conversa e produz esta resposta.", "这台网关未启用机器人校验": "Este gateway não exige verificação de bot", "这台网关没有管理员,用一把已启用的 API Key 访问。": "Este gateway não tem administrador. Acesse com uma API key ativa.", "这条历史请求没有保存识别依据,不能据此自动创建规则。": "Esta requisição histórica não tem evidências de identificação salvas e não pode gerar uma regra automaticamente.", "这条规则已被删除,请关闭编辑后重新添加。": "Esta regra foi excluída. Feche o editor e adicione-a novamente.", "这里只列出已保存的提供商配置;未配置的提供商沿用全局设置,可从下拉框手动添加。用户保存的模式、文件和正文优先于全局设置,「跟随默认」只取消该提供商的模式、文件和正文覆盖。ZCode 套餐池默认由插件按三块装配,客户端系统正文合入第三块,不会自动创建替换规则;手动修改的网关提示词段或关闭开关仍以用户配置为准,能否被接受取决于上游规则。": "Somente as configurações de provedores já salvas aparecem aqui. Provedores não configurados seguem as configurações globais e podem ser adicionados manualmente na lista. Modos, arquivos e textos salvos têm prioridade sobre os globais; Seguir padrão remove apenas essas substituições do provedor. Para o Start Plan da ZCode, o plugin monta três blocos por padrão e incorpora o system do cliente ao terceiro, sem criar uma regra de substituição automaticamente. Blocos do prompt do gateway editados manualmente e a opção de desativar a montagem continuam tendo prioridade; a aceitação depende das regras do upstream.", "进程 PID": "PID do processo", "远程根目录": "Diretório raiz remoto", "远端同一路径下的旧快照。事件日志、请求明细与调试报文不会上传。": "o snapshot antigo no mesmo caminho remoto. Logs de eventos, detalhes de requisições e pacotes de depuração não são enviados.", "远端已有一份快照,将被覆盖": "Já existe um snapshot no remoto e ele será sobrescrito", "远端快照使用了另一把账号密钥,但没有携带密钥文件,无法在本机解密。请在原来那台机器上重新上传一次。": "O snapshot remoto usa uma chave de conta diferente, mas não inclui o arquivo de chave, então não pode ser descriptografado aqui. Envie novamente a partir da máquina original.", "远端快照使用的账号密钥与本机不同。请输入上传那台机器设置的同步密码,用它解出密钥装到本机后再继续下载。": "O snapshot remoto usa uma chave de conta diferente desta máquina. Digite a senha de sincronização definida na máquina que enviou para descriptografar a chave e instalá-la aqui, depois continue o download.", "远端数据与当前版本不兼容": "Os dados remotos são incompatíveis com esta versão", "远端该路径下还没有快照,本次是首次上传。": "Ainda não há snapshot nesse caminho remoto; este é o primeiro envio.", "远端路径:{path}": "Caminho remoto: {path}", "远端还没有可下载的同步数据": "Não há dados de sincronização para baixar no remoto", "连不上这台网关。确认地址与端口正确、网关已启动,且已开启「局域网访问」;用 https 时还要确认证书有效": "Não foi possível alcançar este gateway. Confira o endereço e a porta, se o gateway está rodando e se o \"Acesso pela rede local\" está ativo; no caso de https, confira também se o certificado é válido.", "连不上这台网关。请确认地址、端口与防火墙设置,网关需已启动;桌面端请在「设置 → 网关 → 网络访问」开启「允许其他设备访问网关」。使用 HTTPS 时还需确认证书有效。": "Não foi possível alcançar este gateway. Verifique o endereço, a porta, o firewall e se o gateway está em execução. No aplicativo desktop, ative Permitir que outros dispositivos acessem o gateway em Configurações → Gateway → Acesso pela rede. Para HTTPS, verifique também se o certificado é válido.", "连接中超时": "Timeout de conexão", "连接失败:{message}": "Falha na conexão: {message}", "连续失败到阈值后把这个账号整个打开(默认关)。与失败退避的分工:退避管「单次失败先凉一会儿」,惩罚轻、自动恢复;熔断管「这个账号现在整体不对劲,别再一条条地试」,要连续成功若干次才关。打开期间该账号被跳过,除非全场只剩它 —— 那时仍放行试一次。": "Desliga esta conta por inteiro depois que as falhas consecutivas atingem um limiar (desligado por padrão). Divisão de papéis com o recuo por falha: o recuo cuida de \"deixar uma falha única esfriar\" — penalidade leve, recuperação automática; o disjuntor cuida de \"esta conta está ruim como um todo, pare de tentar uma a uma\" e só fecha após vários sucessos consecutivos. Enquanto aberto, a conta é pulada — a menos que seja a única restante; nesse caso ela ainda recebe uma tentativa.", "追加": "Anexar", "追加网关提示词": "Anexar prompt do gateway", "退出失败:{message}": "Falha ao sair: {message}", "退出登录": "Sair", "退出这台服务器的登录,不影响其他服务器": "Sai apenas deste servidor; os demais não são afetados", "选好接管回答的视觉模型后这块设置才会生效。": "Este bloco passa a valer quando um modelo de visão para responder é escolhido.", "选好视觉模型后这块设置才会生效。": "Este bloco passa a valer quando um modelo de visão é escolhido.", "选定提供商": "Provedor selecionado", "选择一个或多个模型": "Selecione um ou mais modelos", "选择位置并加密备份": "Escolher local e criptografar backup", "选择备份文件并恢复": "Escolher um arquivo de backup e restaurar", "选择提供商(可多选)": "Selecionar provedores (múltipla seleção)", "选路规则": "Regras de seleção", "选项与默认值由已启用插件提供;你保存的覆盖值不会被插件更新替换。": "Os plugins ativados fornecem estas opções e valores padrão. Atualizações do plugin não substituem suas configurações salvas.", "选项与默认值由插件提供,你保存的修改不会被插件更新覆盖。切换提供商不会丢失未保存的修改。": "As opções e os valores padrão vêm dos plugins. Atualizações de plugins não sobrescrevem suas alterações salvas. Trocar de provedor mantém as edições não salvas.", "透传": "Passthrough", "透传客户端 system": "Passthrough do system do cliente", "透传客户端 system(默认)": "Passthrough do system do cliente (padrão)", "通常是网络问题,点右侧重试": "Normalmente é um problema de rede — toque em Repetir", "通用": "Geral", "遇到 Bug、报错或异常行为": "Bugs, erros ou comportamentos anormais", "配置目录下的 agent2api.db(账号、日志、请求记录、调试报文与设置都在里面)。": "O agent2api.db no diretório de configuração (contas, logs, registros de requisições, payloads de debug e configurações ficam todos nele).", "采用本规则": "Usa esta regra", "重启后生效,不影响当前操作": "Entra em vigor após reiniciar; nada do que você está fazendo é interrompido", "重命名": "Renomear", "重命名只更新分类显示名,不拆分历史用量,也不重新归类历史请求。": "Renomear altera apenas o nome exibido, sem dividir o uso anterior ou reclassificar requisições históricas.", "重命名客户端分类": "Renomear categoria de cliente", "重复清理": "Repetir limpeza", "重复清理直到不再变化(仅正则删除)": "Repetir até não haver mudanças (somente exclusão por expressão regular)", "重新读取会替换当前未保存的草稿。": "Recarregar substitui o rascunho atual não salvo.", "重新读取设置": "Recarregar configuração", "重编码质量": "Qualidade de recodificação", "重置会清空管理员账号与密码,面板将回到「未注册」状态。": "A redefinição apaga a conta e a senha do administrador e devolve o painel ao estado \"não registrado\".", "重置管理员": "Redefinir administrador", "重试设置已刷新": "Configurações de retry atualizadas", "重试间隔": "Intervalo entre retries", "铸造守卫每隔多久看一次库存(毫秒)。只影响发现缺货的反应速度 —— 库存够用时轮询不会铸造任何令牌。默认 2500 毫秒,可填 1000–30000。": "De quanto em quanto tempo o guarda de cunhagem olha o estoque (milissegundos). Afeta só a rapidez de perceber a falta — com estoque suficiente, o polling não cunha nada. Padrão 2500 ms; aceita 1000–30000.", "长边像素上限": "Limite do lado maior (px)", "问题反馈": "Relatar um problema", "阿里云 OSS": "Alibaba Cloud OSS", "限流中账号": "Contas limitadas", "随包内嵌的快照(发版时的那份)": "Snapshot embutido no app (o da versão lançada)", "隐藏 {name}": "Ocultar {name}", "隐藏分组 {name}": "Ocultar grupo {name}", "隐藏用户名": "Ocultar nome de usuário", "隐藏账号名(显示成星号)": "Ocultar nomes das contas (mostrar asteriscos)", "隐藏这一组": "Ocultar este grupo", "非流式响应超时": "Timeout de resposta não streaming", "面板登录": "Login do painel", "面板端口": "Porta do painel", "面板管理员账号": "conta de administrador do painel", "韩语": "coreano", "项目来源": "Origem do projeto", "预览不发送模型请求,也不修改历史记录。": "A prévia não chama modelos nem modifica registros históricos.", "预览中…": "Gerando prévia…", "预览匹配": "Pré-visualizar correspondências", "预设": "Predefinição", "首选不可用时再依次尝试备选。": "Se a primeira opção não estiver disponível, os alternativos são tentados em ordem.", "首选不可用时再依次尝试;留空则停止并说明原因。": "Tentados em ordem quando a primeira opção não estiver disponível; vazio significa parar e explicar o motivo.", "验证方式": "Método de verificação", "验证码令牌池": "Pool de tokens de captcha", "验证码令牌池设置已刷新": "Configurações do pool de tokens de captcha atualizadas", "验证码库存的参考目标,默认 3 个,可填 1–10。只影响库存状态展示,不会因为低于目标自动生成令牌或弹出验证码。": "Meta de referência do estoque: padrão 3, entre 1 e 10. Afeta apenas a exibição; ficar abaixo da meta nunca gera tokens nem abre a verificação automaticamente.", "高级设置": "Configurações avançadas", "默认 10000 条,按日志级别分配保留容量,超出后清理最旧的记录;同时受保留天数限制。": "Padrão de 10.000 registros, com capacidade distribuída por nível de log. Os registros excedentes mais antigos são removidos; os dias de retenção também se aplicam.", "默认 1000000 条(100 万),超出后清理最旧的请求记录及其原始正文,不影响按天聚合报表;同时受保留天数限制。": "Padrão de 1.000.000 de registros. Os registros excedentes mais antigos e seus corpos originais são removidos sem afetar os relatórios agregados diários; os dias de retenção também se aplicam.", "默认 5 分钟。间隔内的变化合并为最新快照,到期后上传;手动上传不受限制。失败后会延长等待并自动重试。": "O padrão é 5 minutos. As alterações durante o intervalo são reunidas no snapshot mais recente e enviadas ao final da espera. Uploads manuais não são limitados. Em caso de falha, o sistema aumenta a espera e tenta novamente automaticamente.", "默认仅本机可访问(127.0.0.1)。开启后监听所有 IPv4 网卡(0.0.0.0),访问范围由网络与防火墙决定,不限于局域网,也不会自动开放到公网。开启前必须注册面板管理员;管理接口需要管理员会话或网关 Key,API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。「同时开放网页管理面板」默认关闭,开启后可从其他设备的浏览器登录管理;关闭它不影响 API 转发和本机桌面管理。修改任一开关都需要重启应用。": "Por padrão, somente esta máquina pode acessar (127.0.0.1). Ao ativar, o gateway escuta em todas as interfaces IPv4 (0.0.0.0); o acesso depende da rede e do firewall, não se limita à rede local e não é aberto automaticamente à internet. É necessário registrar um administrador do painel antes. A API de gerenciamento exige uma sessão de administrador ou chave do gateway; chamadas à API exigem uma chave ativa, criada automaticamente como padrão se necessário. O painel web fica desativado por padrão. Ative-o para entrar pelo navegador de outro dispositivo; desativá-lo não afeta o encaminhamento da API nem o gerenciamento desktop local. Alterar qualquer uma das opções exige reiniciar o aplicativo.", "默认值通常够用,出问题时才需要调": "Os padrões costumam bastar; ajuste só quando algo der errado", "默认关闭。开启后下一次 Codex 请求立即生效,不用重启;只对 Codex 来源的 /v1/responses 请求补阶段标记,其它客户端与 /v1/chat/completions 不受影响。": "Desativado por padrão. Ao ativar, vale já na próxima requisição do Codex, sem reiniciar; os marcadores de fase são adicionados apenas a requisições /v1/responses com origem Codex, e outros clientes e /v1/chat/completions não são afetados.", "默认关闭。改动立即生效,不用重启;关闭期间的跨源请求会被预检拦下。": "Desativado por padrão. As mudanças valem na hora, sem reiniciar; enquanto estiver desativado, as requisições de outra origem são barradas no preflight.", "默认关闭窗口不会退出程序,而是把窗口缩到系统托盘,转发继续在后台运行(OpenAI 客户端不受影响);要彻底退出程序,请在托盘图标上右键选「退出」。关掉这个开关后,点关闭按钮即退出程序、转发随之中断。「开机自动启动」开启后,登录系统时会自动启动本程序(通常直接驻留托盘),不需要手动打开。": "Por padrão, fechar a janela não encerra o programa: ela é recolhida para a bandeja do sistema e o encaminhamento continua rodando em segundo plano (clientes OpenAI não são afetados). Para encerrar o programa de vez, clique com o botão direito no ícone da bandeja e escolha “Sair”. Com este switch desativado, clicar no botão de fechar encerra o programa e o encaminhamento é interrompido. Com “Iniciar com o sistema” ativado, o programa inicia automaticamente ao entrar no sistema (normalmente já na bandeja), sem precisar abri-lo manualmente.", "默认应用全部提供商(包含之后新增的插件与自定义提供商)。指定范围后,未选中的提供商不做指纹脱敏;清空选择自动回到全部提供商。": "Aplica-se a todos os provedores por padrão, incluindo plugins e provedores personalizados adicionados depois. Ao selecionar um escopo, os outros provedores não são mascarados. Limpar a seleção volta a todos os provedores.", "默认开启。只改 role 字段本身,消息内容与顺序都不动;本项只改发给上游的副本,客户端看到的响应内容不变。": "Ativado por padrão. Só o campo role muda — conteúdo e ordem das mensagens ficam intactos; isto reescreve apenas a cópia enviada ao upstream, e o que o cliente vê nunca muda.", "默认开启。只改发给上游的副本,客户端看到的响应与原图都不变;请求日志里保存的是客户端发来的原图,不是压缩后的版本。只作用在对话链路,生图 / 图片编辑不经过这里。改完对下一个请求立即生效,不用重启。": "Ativado por padrão. Apenas a cópia enviada ao provedor é alterada; a resposta e a imagem original vista pelo cliente permanecem iguais, e o log de requisições guarda a imagem original do cliente, não a versão comprimida. Aplica-se somente ao caminho de chat — geração e edição de imagens não passam por aqui. As alterações valem a partir da próxima requisição, sem reiniciar.", "默认开启。命中明细会记进请求日志的「敏」标签(悬停可看命中了哪几条规则)。本项只改发给上游的副本,客户端看到的响应内容不变。": "Ativado por padrão. Os detalhes das ocorrências são registrados na tag “PS” dos logs de requisições (passe o mouse para ver quais regras foram acionadas). Esta opção altera apenas a cópia enviada ao upstream; o conteúdo da resposta que o cliente vê não muda.", "默认开启并应用全部提供商。编辑词表或应用范围后点击「保存设置」,下一次请求立即生效,不用重启。命中明细仍记进请求日志的「敏」标签。": "Ativado para todos os provedores por padrão. Edite as regras ou o escopo e clique em Salvar configurações; a próxima requisição usa as alterações sem reiniciar. As correspondências continuam registradas na etiqueta de mascaramento do log.", "默认网关只监听 127.0.0.1,只有本机能访问。开启后网关改听所有网卡,同一局域网内的设备可以把 API 地址指向本机 IP 一起使用。出于安全考虑,开启前必须先注册一个面板管理员:管理接口从此要求管理员会话或网关 Key,模型额度不会对局域网裸奔;一把启用的网关 Key 都没有时,转发接口也会拒绝服务,直到创建第一把。改动需要重启应用生效。「同时开放网页管理面板」把管理界面也出给局域网(其他设备的浏览器打开本机 IP 即可管理),默认关闭 —— 桌面端的面板仍只由本程序自己出。": "Por padrão, o gateway escuta apenas 127.0.0.1 e só esta máquina tem acesso. Ao ativar, o gateway passa a escutar todas as interfaces de rede e dispositivos na mesma LAN podem usar a API apontando o endereço para o IP desta máquina. Por segurança, antes de ativar é obrigatório registrar um administrador do painel: a interface de administração passa a exigir sessão de administrador ou chave do gateway, e a cota dos modelos não fica exposta na LAN; quando não há nenhuma chave do gateway ativa, a interface de encaminhamento também recusa atendimento até que a primeira seja criada. A mudança exige reiniciar o aplicativo para ter efeito. “Também abrir o painel de administração web” disponibiliza a interface de administração na LAN (o navegador de outros dispositivos abre o IP desta máquina para gerenciar); desativado por padrão — o painel do desktop continua sendo servido apenas pelo próprio programa.", "({n} 个整组隐藏)": " ({n} grupos ocultos)", "({n} 行)": " ({n} linhas)", "({n} 项被覆盖)": " ({n} itens sobrescritos)", "(全部为默认值)": " (todos com valores padrão)", "(官方原文)": " (texto oficial)", "(已存一份正文,{n} 行;切成「替换 / 追加」后生效)": " (há um texto salvo, {n} linhas; passa a valer ao mudar para “Substituir / Anexar”)", "(已改)": " (alterado)", "(已注册过会跳过这一步,直接生效)。": " (se já estiver registrado, esta etapa é ignorada e a ativação é imediata).", "(当前生效的就是这一份,{n} 行)": " (esta é a versão em vigor, {n} linhas)", "(文件:{path})": " (arquivo: {path})", "(未生效)": "(sem efeito)", ",{items}": ", {items}", ",{time}": ", {time}", ",以及代理池 / 订阅里可能存在的代理凭据。请使用只有你能访问的私有存储;账号密钥由同步密码单独加密,泄露存储本身不等于泄露账号。": ", além de eventuais credenciais de proxy no pool de proxies / assinaturas. Use armazenamento privado acessível apenas por você; a chave da conta é criptografada separadamente com a senha de sincronização, então vazar o armazenamento não expõe suas contas.", ",包括恢复后需要重新登录管理面板。": " pelo arquivo de backup selecionado, inclusive o novo login no painel após a restauração.", ",可直接用于登录。请妥善保管,不要外传或上传到公共位置。": ", e pode ser usado diretamente para login. Guarde-o com cuidado; não o compartilhe nem o envie para locais públicos.", ",文件里后续的改动在清空这里之前不再生效": ", e alterações posteriores no arquivo deixam de valer até que este campo seja limpo", ",替换前的数据已备份为 {name}": ", os dados pré-substituição foram backupados como {name}", ",自定义提供商新增 {added} 个、更新 {updated} 个": ", provedores personalizados: {added} adicionados, {updated} atualizados", ";开关关闭时词表不执行": "; as regras não são executadas quando o mascaramento está desativado", ";网页管理面板已一并开放(浏览器打开同一地址)": "; o painel de administração web também está aberto (acesse pelo mesmo endereço no navegador)" }); +window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { " 到 {file}": " para {file}", " 正文已改:{edited}(其余段用官方原文)。": " Texto alterado: {edited} (os demais blocos usam o texto oficial).", "(无 id)": "(sem id)", "/v1 拒绝无 Key 请求": "/v1 rejeita requisições sem chave", "0 B": "0 B", "100%(默认)": "100% (padrão)", "<本机IP>": "", "ALTCHA(本地验证)": "ALTCHA (verificação local)", "Access Key ID": "Access Key ID", "Agent2API 手机端": "Agent2API Mobile", "Android 应用(APK)": "Aplicativo Android (APK)", "Cline 上游按请求头判定「调用方是不是 Cline 自家产品」:X-CLIENT-TYPE: cline-sdk 是硬门槛(缺了它免费池模型一律 403),版本号与平台标识让请求更贴近官方客户端的形态。这里列出的是网关默认会发的头:改某一行的值 = 覆盖默认值(也可以新增默认清单之外的自定义头);把值清空保存 = 这个头不发送;在界面删掉被改过的行 = 回落默认值。改完点「保存」,下一个 Cline 请求立即生效。不懂某一行的含义就不要动它 —— 伪装头的价值在「与官方客户端逐字一致」。": "O upstream da Cline decide pelos cabeçalhos da requisição se o chamador é um produto da própria Cline: X-CLIENT-TYPE: cline-sdk é um requisito obrigatório (sem ele, os modelos do pool gratuito retornam 403 sempre), e o número de versão e o identificador de plataforma aproximam a requisição do formato do cliente oficial. Os cabeçalhos listados aqui são os que o gateway envia por padrão: alterar o valor de uma linha = sobrescrever o padrão (também é possível adicionar cabeçalhos personalizados além da lista padrão); salvar com o valor vazio = esse cabeçalho não é enviado; excluir na interface uma linha alterada = voltar ao padrão. Ao terminar, clique em “Salvar” e a próxima requisição da Cline já usará as mudanças. Se você não entende o significado de uma linha, não a altere — o valor dos cabeçalhos spoofed está em ser idêntico palavra por palavra ao cliente oficial.", "Cline 伪装头": "Cabeçalhos spoofed do Cline", "Cline 伪装头已刷新": "Cabeçalhos spoofed do Cline atualizados", "Docker 容器": "Contêiner Docker", "Endpoint": "Endpoint", "Endpoint 填 https://<账户ID>.r2.cloudflarestorage.com,Region 固定填 auto。": "Defina o Endpoint como https://.r2.cloudflarestorage.com e a Region como auto.", "Endpoint 填 https://cos.ap-guangzhou.myqcloud.com,Region 填 ap-guangzhou(按实际地域改)。": "Defina o Endpoint como https://cos.ap-guangzhou.myqcloud.com e a Region como ap-guangzhou (ajuste para a sua região).", "Endpoint 填 https://obs.cn-north-4.myhuaweicloud.com,Region 填 cn-north-4(按实际地域改)。": "Defina o Endpoint como https://obs.cn-north-4.myhuaweicloud.com e a Region como cn-north-4 (ajuste para a sua região).", "Endpoint 填 https://oss-cn-hangzhou.aliyuncs.com,Region 填 cn-hangzhou(按实际地域改)。": "Defina o Endpoint como https://oss-cn-hangzhou.aliyuncs.com e a Region como cn-hangzhou (ajuste para a sua região).", "Endpoint 形如 http://192.168.1.10:9000(自建通常用 http);Region 一般填 us-east-1。": "O Endpoint tem o formato http://192.168.1.10:9000 (auto-hospedado geralmente usa http); a Region costuma ser us-east-1.", "Endpoint 留空即走 AWS 官方地址;Region 必须与桶所在区域一致。": "Deixe o Endpoint vazio para usar o endereço oficial da AWS; a Region deve corresponder à região do bucket.", "KB": "KB", "Linux 安装包(deb)": "Pacote Linux (deb)", "Logo 不能超过 2 MiB": "O logo não pode exceder 2 MiB", "Logo 仅支持 PNG、JPG、WebP 图片": "O logo aceita apenas imagens PNG, JPG e WebP", "Nextcloud": "Nextcloud", "OpenAI 新版 API 用 developer 角色取代 system 承载指令,新版 OpenAI SDK 与部分客户端发的对话里会出现 role 为 developer 的消息;不少 OpenAI 兼容上游(尤其是自定义提供商的透传路径)不认识这个角色,收到就报 400。开启本项后,网关在每次转发前把 developer 角色的消息改写为 system —— 两类角色在 OpenAI 语义上等价(OpenAI 自己的迁移指南也是这么映射的),改写不影响对话内容与语义;对本来就只认 system 的各家内置上游同样无害。默认开启;关掉后 developer 消息会原样发往上游,不认识它的上游会报「角色不存在」一类的错误。": "A API mais recente da OpenAI carrega instruções num papel developer em vez de system, então conversas enviadas por SDKs OpenAI atuais e alguns clientes contêm mensagens com role \"developer\". Muitos upstreams compatíveis com OpenAI (especialmente o caminho de passagem dos provedores personalizados) não reconhecem esse papel e rejeitam a solicitação inteira com 400. Quando ativado, o gateway reescreve mensagens do papel developer para system antes de cada encaminhamento — os dois papéis são equivalentes na semântica da OpenAI (o próprio guia de migração da OpenAI faz o mesmo mapeamento), então a reescrita não altera conteúdo nem significado, e é inofensiva aos upstreams integrados que só aceitam system. Ativado por padrão; desativado, as mensagens developer vão para o upstream como estão e upstreams que não conhecem o papel retornam erros do tipo \"papel inexistente\".", "QQ 群 · Telegram": "Grupos do QQ · Telegram", "S3 兼容存储": "Armazenamento compatível com S3", "Safari 没有安装按钮:点底部的「分享」,选「添加到主屏幕」,再点「添加」。": "O Safari não tem botão de instalar: toque em Compartilhar na parte de baixo, escolha \"Adicionar à Tela de Início\" e toque em \"Adicionar\".", "Secret Access Key": "Secret Access Key", "Token 读数量级": "Escala de leitura de Token", "UTF-8 文本文件路径,留空用内置默认提示词(通用编码助手提示词,不含任何会被上游拦截的模板句)。只在「替换 / 追加」模式下生效,透传模式不读它。": "Caminho de um arquivo de texto UTF-8; deixe vazio para usar o system prompt padrão integrado (um system prompt genérico de assistente de código, sem nenhuma frase de template que o upstream bloqueie). Só tem efeito nos modos “Substituir / Anexar”; o modo Passthrough não o lê.", "WebView / 浏览器内核": "WebView / motor do navegador", "Windows 安装包(NSIS)": "Instalador do Windows (NSIS)", "Windows 服务": "Serviço do Windows", "ZCode 套餐池(Start Plan)通道每条请求都要消耗一个当次铸造的人机验证令牌(一次性,2 分钟过期),库存低于该值时界面自动补铸到它。默认 3 个。调大能吸收突发并发,但用不掉的令牌 2 分钟就过期作废,烧的是上游风控配额。可填 1–10。": "Cada solicitação no canal do pool de planos do ZCode (Start Plan) consome um token de CAPTCHA recém-cunhado (de uso único, expira em 2 minutos); quando o estoque cair abaixo deste valor, a interface cunha mais até ele. Padrão 3. Um valor maior absorve picos, mas tokens não usados expiram em 2 minutos e queimam a cota de controle de risco do upstream. Aceita 1-10.", "ZCode「套餐池(Start Plan)」通道的每条推理请求都要附一个当次铸造的阿里云无痕验证令牌(一次性、约 2 分钟过期):令牌由界面里的铸造守卫静默铸好、推给网关入池,转发时逐条取用。这里的三个值管的是补货节奏:①「库存目标」= 库存低于它守卫才补铸、补到它为止,默认 3 个;②「轮询间隔」= 守卫多久看一次库存,默认 2500 毫秒,只影响反应速度(库存够用时不会多铸);③「单轮铸造上限」= 发现缺货时一轮最多铸几个,默认 1 个(连铸之间固定隔 500 毫秒)。请求密集、请求日志里连续出现「需要人机验证令牌」的 503 时,把目标与单轮上限适当调大、轮询调快,能让池子跟得上消耗 —— 代价是上游(阿里云)对铸造频率有风控,铸得越多越快越容易触发限流,且用不掉的令牌 2 分钟即过期作废、等于白烧配额,所以建议小步调。保存后对下一轮补货立即生效,不用重启。": "Cada solicitação de inferência no canal \"Pool de planos (Start Plan)\" do ZCode deve carregar um token invisível de CAPTCHA da Aliyun recém-cunhado (de uso único, expira em cerca de 2 minutos): os tokens são cunhados silenciosamente pelo guardião de cunhagem na interface e empurrados para o pool do gateway, de onde o encaminhamento toma um por solicitação. Os três valores aqui governam o ritmo de reposição: ① \"Meta de estoque\" = o guardião só cunha mais quando o estoque cai abaixo dela, até ela (padrão 3); ② \"Intervalo de sondagem\" = com que frequência o guardião verifica o estoque, padrão 2500 ms (afeta apenas a velocidade de reação — não cunha além quando o estoque basta); ③ \"Limite de cunhagem por rodada\" = o máximo de tokens cunhados em uma rodada ao detectar falta, padrão 1 (cunhagens consecutivas são fixadas a 500 ms). Quando as solicitações forem densas e o registro mostrar 503 \"precisa de token de CAPTCHA\" em sequência, aumente a meta e o limite por rodada e acelere a sondagem para o pool acompanhar — a contrapartida é que o upstream (Aliyun) limita a frequência de cunhagem: quanto mais e mais rápido cunhar, maior a chance de esbarrar no limite, e tokens não usados expiram em 2 minutos de qualquer forma, queimando cota à toa — ajuste em passos pequenos. Salvar entra em vigor na próxima rodada de reposição, sem reinício.", "beta 版": "Versão beta", "iOS 应用": "Aplicativo iOS", "models.dev 元数据": "Metadados models.dev", "models.dev 元数据已更新({count} 条)": "Metadados do models.dev atualizados ({count} entradas)", "models.dev 是一个开源的模型资料库(社区维护),这里用它补齐「上游没告诉我们」的模型能力:上下文窗口、最大输出、工具调用、图片、视频、是否支持思考,以及这个模型认识哪些思考档位。优先级是:你在「模型能力」里手工改的值 > 上游清单自己声明的值 > models.dev 的值 —— 它只填上游没声明的空位,从不推翻上游已声明的。网关随包内嵌了一份快照,所以离线、首次启动、访问不通时也有数据;开启时会按「模型目录刷新」任务的间隔联网更新(同一轮里一并刷新,也可在这里立即刷新)。关闭只停联网刷新,已经拿到的数据继续用。": "O models.dev é um banco de dados de modelos aberto e mantido pela comunidade. Ele preenche o que o upstream não informa: janela de contexto, saída máxima, chamada de ferramentas, imagem, vídeo, suporte a raciocínio e quais níveis de raciocínio o modelo realmente aceita. Prioridade: valores que você editou em \"Capacidades do modelo\" > o que o catálogo do upstream declara > models.dev — ele só preenche lacunas deixadas pelo upstream e nunca sobrepõe um valor declarado. Um snapshot vem embutido no app, então offline, primeira execução e rede bloqueada continuam tendo dados; quando ativado, atualiza online no intervalo da tarefa \"Atualização do catálogo de modelos\" (na mesma rodada, ou sob demanda aqui). Desativar apenas interrompe a atualização online; os dados já obtidos continuam em uso.", "models.dev 模型元数据": "Metadados de modelos do models.dev", "systemd 服务": "Serviço systemd", "{count} 条": "{count} entradas", "{count} 条 · 来自{origin}{at} · {mode}": "{count} entradas · de {origin}{at} · {mode}", "{count} 条规则,按列表顺序执行": "{count} regras, executadas na ordem da lista", "{d} 天 {h} 小时": "{d}d {h}h", "{h} 小时 {m} 分钟": "{h}h {m}min", "{label} 提示词文件": "Arquivo de prompt de {label}", "{label} 的提示词模式": "Modo de prompt de {label}", "{label}({message})": "{label} ({message})", "{lines} 行、{chars} 字符(按当前草稿计)": "{lines} linhas, {chars} caracteres (com base no rascunho atual)", "{minutes} 分钟": "{minutes} minutos", "{models} 同时出现在两块设置里,会按「辅助识图」处理。想改的话,把其中一个从这边的模型名单里去掉。": "{models} aparece nos dois blocos e será tratado por leitura assistida de imagem. Para mudar isso, remova-o de uma das listas.", "{mode}生效:上游收到的 system 来自{source}{lines}。": "Modo {mode} ativo: o system enviado ao upstream vem de {source}{lines}.", "{m} 分钟": "{m}min", "{noun}不能为空(可填 {min}–{max})": "{noun}: não pode ficar em branco (valores aceitos: {min}–{max})", "{noun}必须在 {min}–{max} 之间(当前填的是 {text})": "{noun}: deve estar entre {min} e {max} (valor atual: {text})", "{noun}必须是整数": "{noun}: deve ser um número inteiro", "{n} B": "{n} B", "{n} GB": "{n} GB", "{n} KB": "{n} KB", "{n} MB": "{n} MB", "{n} 个头将随每个 Cline 请求发送": "{n} cabeçalhos serão enviados em cada requisição da Cline", "{n} 台可选 · 点此切换": "{n} servidores · toque para trocar", "{n} 项 · {shown} 显示": "{n} itens · {shown} visíveis", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "{total} menus · {shown} visíveis · {hidden} ocultos · {groups} grupos", "{way}的适用模型": "Modelos para {way}", "⚠️ 密钥警告": "⚠️ Aviso de chaves", "⚠️ 已关闭「{label}」的机器人校验": "⚠️ Verificação de bot desativada para \"{label}\"", "⚠️ 机器人校验已关闭": "⚠️ Captcha desativado", "✅ Cline 伪装头已保存": "✅ Cabeçalhos spoofed do Cline salvos", "✅ models.dev 模型元数据已开启": "✅ Metadados de modelos do models.dev ativados", "✅ 云同步设置已保存": "✅ Configurações de sincronização na nuvem salvas", "✅ 会话图片压缩已开启": "✅ Compressão de imagens ativada", "✅ 出站指纹脱敏已开启": "✅ Mascaramento de fingerprint de saída ativado", "✅ 密码已修改,其他设备的登录已失效": "✅ Senha alterada. Os acessos em outros dispositivos foram revogados", "✅ 导入完成:{summary}": "✅ Importação concluída: {summary}", "✅ 已上传到云端({size})": "✅ Enviado para a nuvem ({size})", "✅ 已为「{label}」装上网关自带提示词": "✅ System prompt interno do gateway instalado para “{label}”", "✅ 已从云端恢复{note}": "✅ Restaurado da nuvem{note}", "✅ 已保存:{label}": "✅ Salvo: {label}", "✅ 已保存:{label} {value}": "✅ Salvo: {label} {value}", "✅ 已保存:指定错误码直接换号": "✅ Salvo: troca de conta direta em códigos de erro especificados", "✅ 已保留 {days} 天": "✅ Retenção definida para {days} dias", "✅ 已保留 {days} 天,超出部分已清理": "✅ Retenção definida para {days} dias; o excedente foi removido", "✅ 已加密备份 {n} 张表({size}),包含恢复密钥:{file}": "✅ Backup criptografado de {n} tabelas ({size}), com chaves de recuperação: {file}", "✅ 已备份 {n} 张表({size})到 {file}": "✅ {n} tabelas ({size}) backupadas em {file}", "✅ 已导入账号密钥,请继续下载": "✅ Chave da conta importada; continue o download", "✅ 已导出 {count} 个账号{note}{file}": "✅ {count} contas exportadas{note}{file}", "✅ 已开启「{label}」的机器人校验": "✅ Verificação de bot ativada para \"{label}\"", "✅ 已恢复 {n} 张表{note}": "✅ {n} tabelas restauradas{note}", "✅ 已改用 k / M / B 缩写": "✅ Agora usando abreviações k / M / B", "✅ 已改用本地量级词(万 / 亿式)": "✅ Agora usando magnitudes locais (k / M)", "✅ 已自动创建网关 Key「默认」(可在「网关 Key」页查看)": "✅ Chave do gateway “Padrão” criada automaticamente (veja na página “Chave do gateway”)", "✅ 已解除内容拦截降级": "✅ Fallback de bloqueio de conteúdo removido", "✅ 开发者角色兼容已开启": "✅ Compatibilidade com papel developer ativada", "✅ 指纹脱敏设置已保存": "✅ Configurações de mascaramento salvas", "✅ 数量上限已设为 {count} 条": "✅ Limite definido para {count} registros", "✅ 数量上限已设为 {count} 条,超出部分已清理": "✅ Limite definido para {count} registros; excedentes removidos", "✅ 机器人校验已开启": "✅ Captcha ativado", "✅ 第三方模型回答完自动折叠过程已开启": "✅ Recolhimento automático do trabalho de modelos de terceiros após a resposta ativado", "✅ 设置已保存,应用正在重启…": "✅ Configurações salvas; o aplicativo está reiniciando…", "✅ 调试模式已关闭": "✅ Modo debug desativado", "✅ 调试模式已开启": "✅ Modo debug ativado", "✅ 路由设置已保存": "Configurações de roteamento salvas", "✅ 连接成功:{path}": "✅ Conectado: {path}", "、{n} 个自定义提供商": ", {n} provedores personalizados", "。事件日志、请求明细、调试报文与面板登录态保持不变。替换前会自动把当前业务数据备份到配置目录的 backups/ 下。": ". Logs de eventos, detalhes de requisições, pacotes de depuração e o estado de login do painel permanecem intactos. Os dados de negócio atuais são copiados para backups/ no diretório de configuração antes da substituição.", "「{label}」将从 {previous} 天改为 {days} 天。": "“{label}” passará de {previous} para {days} dias.", "「{label}」将从 {previous} 条改为 {count} 条。": "“{label}” passará de {previous} para {count} registros.", "「{label}」改用内置默认提示词": "“{label}” agora usa o system prompt padrão integrado", "「{label}」的提示词文件已更新": "Arquivo de prompt de “{label}” atualizado", "「{label}」的提示词正文已更新": "Texto do prompt de “{label}” atualizado", "「{label}」的模式改为「{mode}」": "Modo de “{label}” alterado para “{mode}”", "「{label}」的网关自带提示词已改回官方原文": "O system prompt interno do gateway de “{label}” foi revertido para o texto oficial", "「{label}」的网关自带提示词正文已更新": "Texto do system prompt interno do gateway de “{label}” atualizado", "「模型管理」里每个能力的来源标记(上游 / models.dev / 已覆盖)读的就是这份数据;映射弹窗的思考档位下拉也按这里的数据只列该模型真实认识的档位。": "As marcas de origem por capacidade em \"Gerenciamento de modelos\" (upstream / models.dev / substituído) vêm destes dados, e a lista de níveis de raciocínio no diálogo de mapeamento mostra apenas os níveis que o modelo realmente aceita, com base neles.", "「用哪份提示词」本来是按上游分别决定的事,所以每家可以有自己的模式、提示词文件与正文:不在这里列出的提供商一律沿用上面那份默认设置,「跟随默认」把这一家取消、回到默认。带「网关自带」那一行的家(目前是 ZCode 两家)默认就列在这里 —— 那一段是网关自己装上去的文本,不来自客户端也不来自提示词文件,默认开启、可以关掉,也可以改它的正文(改过的那一段以你的文本为准);关掉后还能不能通过上游校验,取决于上游当下的口径,行内说明了实测依据。「模式 / 提示词文件 / 正文」管的是客户端自己的 system 怎么处理,与那个开关是两件事。": "Qual prompt usar é uma decisão tomada por upstream, então cada provedor pode ter seu próprio modo, arquivo de prompt e texto: provedores não listados aqui seguem a configuração padrão acima, e “Seguir padrão” remove a configuração individual desse provedor, voltando ao padrão. Os provedores com a linha “Interno do gateway” (atualmente os dois da ZCode) já aparecem aqui por padrão — esse trecho é um texto instalado pelo próprio gateway, que não vem do cliente nem de um arquivo de prompt, fica ativado por padrão, pode ser desativado e também pode ter o texto editado (os trechos editados usam o seu texto); se ele ainda passa na validação do upstream depois de desativado depende dos critérios atuais do upstream, e a própria linha documenta a base dos testes. “Modo / arquivo de prompt / texto” trata de como o system do próprio cliente é processado — é uma coisa separada daquele switch.", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "\"Configurações\" é fixo, então o grupo dele não pode ser ocultado inteiro; os outros menus podem ser ocultados individualmente", "「请求日志」页的逐条请求记录,默认 99999 天(近似全量保留),可填 1–99999 天。": "Registros de cada requisição na página “Logs de requisições”. Padrão de 99999 dias (retenção praticamente total); aceita de 1 a 99999 dias.", "「请求日志」页的逐条请求记录,默认 99999 天,可填 1–99999 天;同时受数量上限限制。": "Registros por requisição na página de logs de requisições. Padrão de 99999 dias; aceita 1–99999 dias. O limite de registros também se aplica.", "一个 .a2ab 文件即可跨机器恢复,账号、网关 Key、GitHub 令牌与云同步凭据无需另行复制密钥。插件程序与库外文件不在整库备份范围。": "Um único arquivo .a2ab restaura os dados em outra máquina, sem copiar separadamente as chaves de contas, keys do gateway, tokens do GitHub ou credenciais de sincronização. Programas de plugins e arquivos fora do banco não estão incluídos.", "一段内置装配": "um conjunto integrado", "三档数据各自独立计时,超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件;请求日志是网关每次转发到上游的逐条记录;按天聚合供报表页的热力图与按天趋势使用。请求日志与按天聚合默认 99999 天(约 274 年,效果上等于全量保留),事件日志默认 30 天。把某一档改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。三档的可填范围均为 1–99999 天。": "Os três tipos de dados são contados de forma independente e o que excede o período de retenção é excluído: os logs de eventos são eventos do sistema, como login, troca de conta e switch 429; os logs de requisições são o registro de cada encaminhamento do gateway ao upstream; os agregados diários alimentam o mapa de calor e as tendências diárias da página de relatórios. Logs de requisições e agregados diários têm padrão de 99999 dias (cerca de 274 anos — na prática, retenção total), e os logs de eventos, de 30 dias. Reduzir qualquer um deles (por exemplo, de 30 para 7 dias) e salvar exclui imediatamente os dados históricos excedentes, sem possibilidade de recuperação; aumentar ou manter o valor não exclui nada. Os três aceitam de 1 a 99999 dias.", "三段各自成块,所以分开编辑": "Os três blocos são separados, por isso a edição é individual", "上传": "Enviar", "上传 Logo": "Enviar logo", "上传中…": "Enviando…", "上传内容含加密后的账号凭证与网关配置": "O envio contém credenciais de conta criptografadas e configuração do gateway", "上传到云端": "Enviar para a nuvem", "上传失败:{message}": "Falha no envio: {message}", "上次同步:{time}({action})": "Última sincronização: {time} ({action})", "上次成功刷新的结果(存在本机数据库里)": "Resultado da última atualização bem-sucedida (guardado no banco local)", "上游 CLI 版本": "Versão da CLI upstream", "上游客户端版本": "Versão do cliente upstream", "上游按": "O upstream valida a identidade pela ", "上游按「结构」校验身份:三段必须各自成块,所以这里分开编辑三段(不能合成一段)。动态段里的运行值写成占位符,发请求时才替换:{cwd} 工作目录、{platform} 平台、{shell} shell、{os_version} 系统版本、{git} 是否 git 仓库、{provider} 提供方标识、{model} 模型名。清空某一段 = 那一段恢复官方原文。第三段发出时前面会自带一个空行(官方形状)。": "O upstream valida a identidade por “estrutura”: os três blocos precisam ser blocos separados, então os três são editados aqui individualmente (não é possível fundi-los em um só). Valores de execução no bloco dinâmico são escritos como placeholders e substituídos apenas no envio da requisição: {cwd} diretório de trabalho, {platform} plataforma, {shell} shell, {os_version} versão do sistema, {git} se é um repositório git, {provider} identificador do provedor, {model} nome do modelo. Limpar um bloco = aquele bloco volta ao texto oficial. O terceiro bloco é enviado com uma linha em branco na frente (o formato oficial).", "上游未配置": "Upstream não configurado", "上游模型繁忙时会先排队(回一句「建议 N 秒后再来」):网关等一会儿再发同一请求,最多等几次。默认 2 次,可填 0–10;填 0 表示不等待,排队直接返回 503 并说明「不是登录态或额度问题」。": "Quando o modelo no upstream está ocupado, ele primeiro entra na fila (respondendo “recomendamos voltar em N segundos”): o gateway aguarda um pouco e reenvia a mesma requisição, até um número máximo de esperas. Padrão 2; valores aceitos 0–10; 0 significa não esperar — a fila retorna 503 diretamente, informando que “não é um problema de login nem de cota”.", "上游用「逐字精确匹配」的方式审核请求体(不是语义审核):客户端注入的固定模板句、计费头字段名、以及某些裸错误码出现在报文里就会整单拦截,返回 400。开启本项后,网关在每次转发前改写这些指纹 —— 表头键值整段删除,承载语义的模板句只换一个词(如 official CLI for Claude → official CLI tool for Claude),对话内容与语义都不受影响。规则集是内置的,不需要也无法维护词表。关掉本项后客户端模板会原样发往上游,可能重新出现模板句被误拦的报错。": "O upstream revisa o corpo da requisição por “correspondência exata, palavra por palavra” (não é revisão semântica): frases de template fixas injetadas pelo cliente, nomes de campos de cabeçalhos de cobrança e certos códigos de erro soltos, se aparecerem no payload, bloqueiam a requisição inteira com retorno 400. Com esta opção ativada, o gateway reescreve esses fingerprints antes de cada encaminhamento — pares de chave/valor de cabeçalho são removidos por completo e frases de template que carregam significado têm apenas uma palavra trocada (por exemplo, official CLI for Claude → official CLI tool for Claude), sem afetar o conteúdo nem o significado da conversa. O conjunto de regras é integrado; não há lista de palavras a manter, nem seria possível. Com a opção desativada, os templates do cliente vão ao upstream como estão e podem voltar a ocorrer bloqueios indevidos de frases de template.", "上游请求四个阶段各自的等待上限(秒,1~3600):①「连接中超时」= 建立 TCP/TLS 连接或代理隧道的最大等待,默认 30 秒;②「等待响应超时」= 请求发出后等上游响应头的最大时间,默认 300 秒 —— 网关请求上游恒带 stream,响应头在 SSE 建立时就到达,与模型思考多久无关;③「流式响应空闲超时」= 流式响应相邻两块数据之间允许的最大空闲,收到新数据即重新计时,默认 300 秒 —— 上游长时间不吐数据即判定连接僵死并断开;④「非流式响应超时」= 读完整份非流式响应体的总预算(一次性计时、不重置),默认 300 秒。四项都是「等待上限」,只要数据还在来,正常的流式回答就一直往下传。保存后对下一个请求立即生效,不用重启。": "Limites de espera de cada uma das quatro fases da requisição ao upstream (segundos, 1~3600): ① “Timeout de conexão” = espera máxima para estabelecer a conexão TCP/TLS ou o túnel de proxy, padrão 30 segundos; ② “Timeout de espera de resposta” = tempo máximo de espera pelos cabeçalhos de resposta do upstream após o envio da requisição, padrão 300 segundos — as requisições do gateway ao upstream sempre usam stream, e os cabeçalhos de resposta chegam quando o SSE é estabelecido, independentemente de quanto tempo o modelo pense; ③ “Timeout de inatividade do streaming” = inatividade máxima permitida entre dois blocos adjacentes de uma resposta em streaming, com a contagem reiniciada a cada novo dado recebido, padrão 300 segundos — se o upstream ficar muito tempo sem enviar dados, a conexão é considerada travada e é encerrada; ④ “Timeout de resposta não streaming” = orçamento total para ler o corpo inteiro de uma resposta não streaming (contagem única, sem reinício), padrão 300 segundos. Os quatro são limites de espera: enquanto os dados continuarem chegando, uma resposta em streaming normal segue fluindo. Depois de salvar, os valores passam a valer para a próxima requisição, sem reiniciar.", "上游调试报文": "Payloads de depuração do upstream", "上移": "Mover para cima", "上移规则": "Mover regra para cima", "下次自动重试:{time}": "Próxima tentativa automática: {time}", "下游正文": "Corpos do downstream", "下移": "Mover para baixo", "下移规则": "Mover regra para baixo", "下载失败:{message}": "Falha no download: {message}", "不一致": "Divergente", "不做会话识别,每条请求都重新按策略选路。": "Sem detecção de sessão: cada requisição é roteada pela estratégia do zero.", "不做图片兼容": "Não adaptar imagens", "不可用": "Indisponível", "与网关同源的面板;完整管理功能在桌面端": "Painel servido pelo próprio gateway; o gerenciamento completo fica no desktop", "两张开关分别管桌面端(应用内窗口,也包含开启局域网访问后从其他设备访问的那份面板)与网页端(Docker / 服务端自托管的浏览器面板)。默认都开启;桌面端只在本机使用、嫌验证耗时可以关掉,网页端暴露在网络上,建议保持开启。": "Os dois interruptores controlam o lado desktop (a janela do aplicativo, incluindo o painel aberto em outros dispositivos quando o acesso pela LAN está ativo) e o lado web (o painel de navegador hospedado pelo Docker / servidor). Ambos vêm ativados. Desative o do desktop se usar apenas localmente e a verificação incomodar; mantenha o da web ativado, pois aquela página fica exposta à rede.", "两次输入的备份密码不一致": "As senhas do backup não coincidem", "两次输入的新密码不一致": "As novas senhas não coincidem", "两次重试之间的等待时间,两项共用,可填 0–300 秒。": "Tempo de espera entre duas tentativas, compartilhado pelas duas opções; valores de 0–300 segundos.", "两种方式不会互相自动切换。": "Os dois modos nunca alternam entre si automaticamente.", "两组设置分别用于桌面端托管的网页管理面板与网页端(Docker / 服务端)的浏览器面板。是否可被其他设备访问取决于网络访问与防火墙设置,不限于局域网。两端默认都开启人机验证,建议保持开启。": "Os dois grupos se aplicam ao painel web hospedado pelo aplicativo desktop e ao painel no navegador hospedado por Docker / servidor. O acesso de outros dispositivos depende das configurações de acesso pela rede e firewall e não se limita à rede local. A verificação humana vem ativada nos dois casos; recomendamos mantê-la ativada.", "为了安全,开启前需要先注册一个": "Por segurança, antes de ativar é preciso registrar uma ", "主进程未返回启动设置,请更新桌面端后重试": "O processo principal não retornou as configurações de inicialização; atualize o aplicativo desktop e tente novamente.", "主进程桥不可用": "Ponte com o processo principal indisponível", "主题": "Tema", "事件日志": "Logs de eventos", "事件日志保留天数": "Dias de retenção dos logs de eventos", "云同步": "Sincronização na nuvem", "产品名": "Nome do produto", "产品名不能包含斜杠或版本号,请改用前缀匹配": "Nomes de produto não podem incluir barras ou versões. Use correspondência por prefixo.", "人机验证": "Verificação humana", "人机验证失败": "Falha na verificação humana", "人机验证已完成": "Verificação humana concluída", "人机验证还在计算,请稍候": "A verificação humana ainda está sendo calculada, aguarde", "仅在同一会话、同一问题和相同权限范围内复用;追问新细节会重新识读。缓存只存在本机内存。": "Os resultados só são reutilizados na mesma conversa, pergunta e escopo de permissões. Novas perguntas geram uma nova leitura. O cache fica apenas na memória local.", "仅在账号、配置、签到或余额等实质内容变化时上传;导出时间或查询时间单独变化不会触发上传。": "O upload só ocorre quando há mudanças reais nas contas, configurações, resultados de check-in ou saldos. Alterações apenas nos horários de exportação ou consulta não geram uploads.", "仅处理本次转发副本,不修改客户端选择,也不删除当前或历史图片。": "Apenas a cópia encaminhada é alterada. A seleção do cliente e todas as imagens atuais e anteriores são preservadas.", "仅影响面板登录与注册,不影响 API Key 调用。保存后生效,已登录会话不会退出。": "Afeta apenas o login e o cadastro no painel, não chamadas com chaves de API. Entra em vigor ao salvar e mantém as sessões existentes.", "仅本机": "Somente este dispositivo", "仅用现有数据、不联网刷新": "Usando apenas os dados existentes, sem atualização online", "从云端恢复": "Restaurar da nuvem", "从桌面图标启动,全屏、无地址栏。想卸载:长按图标删除,或清除浏览器站点数据。": "Abra pelo ícone na tela inicial: em tela cheia, sem barra de endereço. Para desinstalar, mantenha o ícone pressionado e remova, ou limpe os dados do site no navegador.", "优先使用当前路由内的视觉模型": "Priorizar modelos de visão da rota atual", "优先在当前路由内找可用的视觉模型,找不到就用 {model} 直接回答,不再回到原模型。": "Prefere um modelo de visão disponível na rota atual; se não houver, {model} responde direto no lugar do modelo original.", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "Restaura os grupos, a ordem e a visibilidade padrão. Grupos criados por você são removidos (os menus são mantidos).", "会话图片压缩设置已刷新": "Configurações de compressão de imagens atualizadas", "位置": "Local", "位置与端口": "Local e portas", "使用 Rust 正则语法,保存时由后端校验;不支持环视和反向引用。": "Usa a sintaxe de expressões regulares do Rust, validada pelo backend ao salvar. Lookaround e referências anteriores não são suportados.", "使用中文单位(亿 / 万)": "Usar unidades chinesas (yi / wan)", "使用本地量级词(万 / 亿式)": "Usar magnitudes locais (estilo k / M)", "使用默认值": "Usando os padrões", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "O módulo de layout da barra lateral não foi carregado (ui/sidebar-layout.js deve vir antes de app.js).", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "Nenhum menu aparece na barra lateral. Ative os que precisar em Configurações → Exibição → Menus da barra lateral.", "侧边栏菜单": "Menus da barra lateral", "保存上游原始报文(请求头、请求体、响应头、响应体)": "Salvar payloads brutos do upstream (cabeçalhos da requisição, corpo da requisição, cabeçalhos da resposta, corpo da resposta)", "保存单独配置": "Salvar configuração do modelo", "保存后以这里的文本为准": "Após salvar, este texto passa a valer", "保存后对下一轮补货立即生效,不用重启。守卫跑在应用界面里:轻量模式关窗销毁界面期间无法铸造,走套餐池(Start Plan)通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。": "Salvar entra em vigor na próxima rodada de reposição, sem reinício. O guardião roda dentro da interface do aplicativo: enquanto o modo leve tiver destruído a interface após fechar a janela, não é possível cunhar tokens — solicitações no canal do pool de planos (Start Plan) caem no registro de solicitações como 503 (com o motivo); reabra a interface e a cunhagem se recupera automaticamente.", "保存后应用将重启以生效。": "O aplicativo será reiniciado após salvar para que isso tenha efeito.", "保存后状态读取立即生效。后台不会自动生成令牌;需要人机验证时,在账号的「套餐明细」中主动开始验证。模型请求免验证时无需保持界面打开。": "As configurações de consulta de status entram em vigor após salvar. Nenhum token é gerado automaticamente. Inicie a verificação necessária nos detalhes do plano da conta. Não é preciso manter a interface aberta quando o modelo dispensa verificação.", "保存后立即生效,不用重启:策略与粘性作用于**下一次**转发的选路,进行中的请求不受影响。": "Vale na hora ao salvar, sem reiniciar: estratégia e aderência valem para a escolha da **próxima** requisição encaminhada; requisições em andamento não são afetadas.", "保存后立即生效,不用重启;次数用尽仍失败时,错误原样返回给客户端。": "Passa a valer imediatamente após salvar, sem reiniciar; se as tentativas se esgotarem e ainda houver falha, o erro é retornado ao cliente como está.", "保存后立即生效,不用重启;超时按上游失败处理(计入请求日志的「错误」列,并按「请求重试」的设置决定是否重试)。": "Passa a valer imediatamente após salvar, sem reiniciar; o timeout é tratado como falha do upstream (contabilizado na coluna “Erro” dos logs de requisições e sujeito às configurações de “Retry de requisições” para nova tentativa).", "保存后立即生效:保留天数和数量上限同时生效,调小任一项会立即清理超出的历史数据,且不可恢复。": "Entra em vigor imediatamente após salvar. Os dias de retenção e o limite de registros se aplicam juntos; reduzir qualquer um remove imediatamente os dados históricos excedentes, sem possibilidade de recuperação.", "保存后立即生效:改小保留天数会立刻删除超出的历史数据,且不可恢复。": "Passa a valer imediatamente após salvar: reduzir os dias de retenção exclui na hora os dados históricos excedentes, sem possibilidade de recuperação.", "保存在当前网关,登录页也会公开显示。不会更改安装包、快捷方式、系统托盘图标或软件版本信息。": "Salvo no gateway atual e exibido publicamente na página de login. Não altera o instalador, os atalhos, o ícone da bandeja do sistema nem as informações de versão.", "保存并重启": "Salvar e reiniciar", "保存设置": "Salvar configurações", "保持当前路由范围,不跳到其他路由组。": "Mantém o escopo da rota atual e não pula para outro grupo de rotas.", "保活换行丢弃": "Descartar quebras keepalive", "保留原图和对话,由视觉模型直接回答本次请求。": "Preserve as imagens originais e a conversa para que um modelo de visão responda diretamente a esta solicitação.", "保留原图,选择视觉模型": "Preservar imagens e escolher um modelo de visão", "保留图片中的文字、代码、数字、布局与状态。识读失败就停止,不删图后继续回答。": "Preserve texto, código, números, disposição e estado nas imagens. Pare se a leitura falhar; nunca remova imagens para continuar respondendo.", "保留天数已刷新": "Dias de retenção atualizados", "保留旧版配置兼容,当前不会自动连铸。每次点击「开始验证」只取得一枚令牌,失败或取消后停止。": "Mantido para compatibilidade com configurações antigas. Não há geração automática em lote. Cada ação Iniciar verificação obtém um token e para em caso de falha ou cancelamento.", "保留草稿并读取最新设置": "Manter rascunho e recarregar configurações", "修改密码": "Alterar senha", "修改密码需要输入当前密码;修改成功后,其他设备 / 浏览器上的登录会立即失效,当前这条会话保留。": "Alterar a senha exige a senha atual. Após o sucesso, os acessos em outros dispositivos e navegadores são revogados imediatamente; esta sessão permanece ativa.", "值": "Valor", "值与默认值相同的行不占覆盖(存的是「改过的键」,不是全量配置);值留空保存表示这个头不发送,删除改过的行表示回落默认值。改完立即生效,不用重启。": "Linhas com valor igual ao padrão não contam como sobrescrita (o que é armazenado são as “chaves alteradas”, não a configuração completa); salvar com o valor vazio significa que esse cabeçalho não é enviado, e excluir uma linha alterada significa voltar ao valor padrão. As mudanças passam a valer na hora, sem reiniciar.", "值(留空 = 不发送)": "Valor (vazio = não enviar)", "停止并说明原因": "Parar e explicar o motivo", "像素": "px", "允许其他设备访问前,需要设置面板管理员账号与密码。注册完成后会继续开启流程并重启应用。": "Defina um usuário e uma senha de administrador do painel antes de permitir acesso de outros dispositivos. Após o registro, o acesso pela rede será ativado e o aplicativo será reiniciado.", "允许其他设备访问网关": "Permitir que outros dispositivos acessem o gateway", "允许局域网内的设备访问网关": "Permitir que dispositivos na LAN acessem o gateway", "允许无 Key 裸跑": "Permitir execução sem chaves", "允许浏览器里的页面跨来源调用网关(/v1/*)": "Permitir que páginas do navegador chamem o gateway de outra origem (/v1/*)", "允许的域名": "Hostnames permitidos", "先发送原图,明确拒图后补救": "Enviar originais primeiro; adaptar somente após rejeição explícita", "先把图片交给视觉模型读一遍,再让原模型结合读到的内容回答。": "O modelo de visão lê a imagem primeiro e o modelo original responde usando o que foi lido.", "全局配置": "Configuração global", "全部已配置": "Tudo já configurado", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 中,加密密钥单独保存在库外。跨机器备份请使用「整库备份 / 恢复」,不要只复制数据库。更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "Contas, logs, requisições, dados de depuração e configurações ficam no agent2api.db. As chaves ficam separadas. Para transferir dados entre máquinas, use Backup / restauração do banco inteiro, em vez de copiar só o banco. Para mudar o diretório, defina AGENT2API_PROXY_HOME e reinicie.", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 这一个 SQLite 数据库里。备份时只需拷贝这个文件;更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "Todos os dados (contas, logs de eventos, registros de requisições, payloads de debug e configurações) ficam em um único banco de dados SQLite, o agent2api.db, no diretório de configuração. Para fazer backup, basta copiar esse arquivo; para mudar o local de armazenamento, defina a variável de ambiente AGENT2API_PROXY_HOME e reinicie o programa.", "全部角色": "Todos os papéis", "全部角色沿用原有行为,包含思考内容和工具参数;指定角色时只改消息正文,未选角色及思考内容、工具参数保持原样。": "Todos os papéis mantém o comportamento existente, incluindo o raciocínio e os argumentos de ferramentas. Com papéis selecionados, apenas o conteúdo das mensagens é alterado; papéis não selecionados, raciocínio e argumentos de ferramentas permanecem intactos.", "共享视觉模型已变更,请重新确认并保存,避免把图片交给未经确认的模型。": "O modelo de visão compartilhado mudou. Confirme e salve novamente antes de enviar imagens ao novo modelo.", "共用设置:{providers}": "Configurações compartilhadas: {providers}", "关闭后不再提供网页管理面板,本机桌面程序仍可正常管理;已开启的 API 转发不受影响。": "O painel web deixará de ser servido. O gerenciamento pelo aplicativo desktop local continuará disponível, e o encaminhamento da API não será afetado.", "关闭后手动上传 / 下载也会被拒绝。": "Quando desativado, envio/download manual também é recusado.", "关闭后网关只监听 127.0.0.1,其他设备将无法直接连接,网页管理面板也会一并关闭。已配置的网关 Key 与账号不受影响。": "Ao desativar, o gateway escutará apenas em 127.0.0.1, impedindo conexões diretas de outros dispositivos. O painel web também será desativado. As chaves do gateway e contas existentes não serão afetadas.", "关闭后网关回到只监听 127.0.0.1,局域网内的设备将无法继续访问;已配置的网关 Key 与账号都不受影响。": "Após desativar, o gateway volta a escutar apenas 127.0.0.1 e os dispositivos da LAN deixam de conseguir acessá-lo; as chaves do gateway e as contas já configuradas não são afetadas.", "关闭后,管理界面不再从局域网提供,只有本机的桌面程序可以管理;已开启的 API 转发不受影响。": "Após desativar, a interface de administração deixa de ser servida na LAN e só o programa desktop local pode gerenciá-la; o encaminhamento de API já ativado não é afetado.", "关闭局域网访问": "Desativar acesso LAN", "关闭并重启": "Desativar e reiniciar", "关闭思考": "Desativar raciocínio", "关闭窗口即退出程序,后台转发随之中断": "Fechar a janela encerra o programa e o encaminhamento em segundo plano é interrompido", "关闭窗口时最小化到托盘": "Minimizar para a bandeja ao fechar a janela", "关闭窗口时程序不退出,转发继续在后台运行;退出请用托盘菜单": "Fechar a janela não encerra o programa; o encaminhamento continua rodando em segundo plano. Para sair, use o menu da bandeja", "关闭网络访问": "Desativar acesso pela rede", "兼容处理最长等待": "Espera máxima do processamento de compatibilidade", "兼容处理最长等待(秒)": "Espera máxima para adaptação (segundos)", "内容拦截降级": "Fallback de bloqueio de conteúdo", "内置识别、自定义规则与来源声明": "Identificação integrada, regras personalizadas e declarações de origem", "内置软件标识规则": "Regra integrada de identificação", "内置默认": "Padrões integrados", "内置默认提示词": "System prompt padrão integrado", "再输入一次新密码": "Digite a nova senha novamente", "凭据类请求头已脱敏。": "Os cabeçalhos de requisição com credenciais foram mascarados.", "凭证只保存在这台手机上,按服务器分别存放": "As credenciais ficam apenas neste celular, separadas por servidor", "出问题时把这一页截图,或点「复制全部信息」把文本贴进反馈,一般就能定位到大致原因。": "Quando algo der errado, tire um print desta página ou use \"Copiar todas as informações\" e cole o texto no relato — normalmente isso já basta para identificar a causa.", "分享图标在 Safari 底部工具栏中间": "O ícone de Compartilhar fica no meio da barra inferior do Safari", "分组名": "Nome do grupo", "分组名,例如「常用」": "Nome do grupo, ex.: \"Favoritos\"", "切换视觉模型": "Trocar para um modelo de visão", "切换视觉模型 · 视觉模型回答": "Trocar modelo · O modelo de visão responde", "切换视觉模型配置": "Configuração de troca de modelo de visão", "切换账号重试次数": "Retries trocando de conta", "刚刚从 models.dev 拉到的最新数据": "Dados recém-buscados do models.dev", "删除 {code}": "Remover {code}", "删除分组": "Excluir grupo", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "Excluir o grupo \"{name}\"? Os {n} menus vão para \"{target}\" — nada é perdido.", "删除匹配内容": "Excluir texto correspondente", "删除后不再接受这个分类的来源声明,历史记录保留原来的名称和用量。": "Declarações desta categoria não serão mais aceitas. Os registros históricos mantêm os nomes e o uso originais.", "删除后,新请求不再使用这条规则;历史记录保持不变。": "Novas requisições deixarão de usar esta regra. Os registros históricos permanecem inalterados.", "删除客户端分类": "Excluir categoria de cliente", "删除状态码 {code}": "Remover o status code {code}", "删除空分组「{name}」?": "Excluir o grupo vazio \"{name}\"?", "删除识别规则": "Excluir regra de identificação", "删除这个分组(组内菜单移到第一组)": "Excluir este grupo (os menus vão para o primeiro grupo)", "刷新": "Atualizar", "刷新失败:{message}": "Falha na atualização: {message}", "前台运行": "Execução em primeiro plano", "前缀": "Prefixo", "剥离上游审核黑名单指纹(改写请求体里的模板句与表头)": "Remover fingerprints da lista de bloqueio da revisão do upstream (reescrever frases de template e cabeçalhos no corpo da requisição)", "功能建议": "Sugestões de funcionalidades", "加入备选": "Adicionar como alternativo", "加密备份必填,旧 SQL 可留空": "Obrigatória para backup criptografado; opcional para SQL antigo", "包含": "Contém", "包含日志与调试报文": "Incluir logs e payloads de depuração", "包含:{items}": "Inclui: {items}", "匹配内容": "Padrão de correspondência", "匹配内容不能为空,且最多 {max} 个字符": "O padrão é obrigatório e deve ter no máximo {max} caracteres", "匹配内容不能为空,最长 256 个字符": "Informe um padrão com até 256 caracteres", "匹配原文含零宽空格,词表预览用 \\u{200b} 标出;编辑时保留该字符。": "O padrão contém um espaço de largura zero, exibido como \\u{200b} na prévia. Preserve esse caractere ao editar.", "匹配方式": "Tipo de correspondência", "区域(Region)": "Região (Region)", "华为云 OBS": "Huawei Cloud OBS", "单独指定视觉模型": "Escolher um modelo de visão separado", "单轮铸造上限": "Limite de cunhagem por rodada", "占用大小": "Tamanho ocupado", "历史未记录识别依据": "Evidência de identificação não registrada", "原来的「全局方式 + 模型单独配置」已按相同意思自动填成下面的模型名单,可以照用也可以重新调整;改动一处之后就会按新形式存下来。": "O seu antigo \"modo global + ajustes por modelo\" foi preenchido nas listas de modelos abaixo com o mesmo significado. Use como está ou ajuste; ao alterar qualquer coisa, passa a ser gravado no novo formato.", "原模型不能直接看图": "O modelo original não consegue ler imagens diretamente", "原模型根据识读内容回答": "O modelo original responde com base na descrição", "去反馈": "Enviar feedback", "去申请": "Enviar solicitação", "反馈与需求": "Feedback e solicitações", "发现缺货时一轮最多铸几个(连铸之间固定隔 500 毫秒)。默认 1 个:SDK 同一实例连铸容易互相干扰。调大补货更快,但单轮连铸越多越容易触发上游风控。可填 1–5。": "Quantos tokens uma mesma rodada pode cunhar ao detectar falta (intervalo fixo de 500 ms entre cunhagens seguidas). Padrão 1: cunhagens seguidas na mesma instância do SDK tendem a se interferir. Um valor maior repõe mais rápido, mas quanto mais cunhagens por rodada, mais fácil acionar o controle de risco do upstream. Aceita 1–5.", "取消勾选后只备份业务数据(账号、配置与余额记录),文件显著变小;事件日志、请求统计与调试报文不会进备份文件。": "Desmarcado, só os dados de negócio entram no backup (contas, configuração e registros de saldo) e o arquivo fica bem menor; logs de eventos, estatísticas de requisições e payloads de depuração ficam de fora.", "变更网页管理面板": "Alterar o painel de administração web", "只列单独配置过的家,其余沿用上面的全局配置": "Só lista os provedores com configuração individual; os demais seguem a configuração global acima", "只对「排队制」的上游生效:模型繁忙时上游不报错,只回一句「建议 N 秒后再来」,网关按建议时长等一会儿再发同一请求,等满次数仍排不上才把「排队中」作为错误返回(HTTP 503,文案会说明这不是登录态或额度问题)。等待发生在首个字节之前,吃的是「等待响应超时」那份预算 —— 两项设置一起决定一次请求最多卡多久;排队不会标记账号限额、也不会换账号(换谁都一样在排队)。保存后对下一个请求立即生效,不用重启。": "Só tem efeito em upstreams com “sistema de fila” : quando o modelo está ocupado, o upstream não retorna erro, apenas responde “recomendamos voltar em N segundos”; o gateway espera o tempo sugerido e reenvia a mesma requisição, e só quando o número de esperas se esgota a “fila” é devolvida como erro (HTTP 503, com um texto explicando que não é um problema de login nem de cota). A espera acontece antes do primeiro byte e consome o orçamento do “Timeout de espera de resposta” — as duas configurações, juntas, determinam quanto tempo no máximo uma requisição pode ficar travada; a fila não marca a conta como limitada nem troca de conta (todos estão igualmente na fila). Passa a valer para a próxima requisição após salvar, sem reiniciar.", "只影响读图那一步的思考深度;两块设置统一用这个选择。": "Afeta apenas a profundidade de raciocínio na etapa de leitura da imagem; os dois blocos compartilham esta escolha.", "只有已安装、启用并声明了设置项的提供商会出现在这里。可前往插件页检查安装与启用状态。": "Aparecem aqui apenas provedores com um plugin instalado e ativado que declare opções de configuração. Confira a instalação e a ativação na página Plugins.", "只沿用模型与思考等级,不借用视觉服务的内部 Key;仍受当前请求权限限制。": "Apenas o modelo e o nível de raciocínio são reutilizados, não a Key interna do serviço de visão. As permissões da solicitação atual continuam valendo.", "只清掉这个浏览器存的 Key,不影响网关": "Remove apenas a chave salva neste navegador; o gateway não é afetado", "只覆盖指定提供商的指定模型,其余跟随全局。": "Substitui apenas a configuração do modelo e provedor selecionados; os demais seguem a configuração global.", "可跨提供商多选;只处理这些模型看不了的图片。": "Seleção múltipla entre provedores; só são tratadas as imagens que esses modelos não conseguem ler.", "可跨提供商多选;这些模型的请求会整体改交视觉模型。": "Seleção múltipla entre provedores; as requisições desses modelos são entregues inteiras ao modelo de visão.", "可选。部分服务(如中国科技云数据胶囊)会按 User-Agent 校验凭据绑定的客户端类型,此时填写包含该类型名的字符串(例如 rclone/v1.67.0)。留空则维持默认。": "Opcional. Alguns serviços (como o CSTCloud Data Capsule) validam pelo User-Agent o tipo de cliente vinculado à credencial; nesse caso, informe uma string que contenha o nome do tipo (por exemplo, rclone/v1.67.0). Deixe em branco para manter o padrão.", "合计只累加当前筛选后可见的账号,筛选、搜索一改数字就跟着变。": "O total soma apenas as contas visíveis no filtro atual; mudar o filtro ou a busca altera o número.", "合计按整组统计(默认):不受筛选、搜索影响,被筛掉与已禁用的账号也计入。": "O total abrange o grupo inteiro (padrão): filtros e busca não o alteram, e contas filtradas ou desativadas ainda contam.", "同一会话、同一问题、相同权限范围内复用;追问新细节会重新识读。": "Reutilizado na mesma sessão, pergunta e escopo de permissão; perguntar novos detalhes força nova leitura.", "同一会话在 5 分钟内尽量跟住同一个账号;停了 5 分钟再发就算新会话。多数场景用它 —— 多轮对话少换号,也不至于把账号焊死。": "A mesma sessão tenta ficar na mesma conta por 5 minutos; pausar mais de 5 minutos conta como sessão nova. A escolha para a maioria dos casos — menos troca de conta em conversas de vários turnos, sem prender uma conta.", "同一会话在 6 小时内跟住同一个账号;适合一坐几个小时的长会话,上游的上下文缓存能吃到更多。": "A mesma sessão fica na mesma conta por até 6 horas; ideal para sessões longas de horas — o cache de contexto do upstream é aproveitado bem mais.", "同一提供商的同一模型不能重复配置": "O mesmo provedor e modelo não podem ter configurações duplicadas", "同一账号重试次数": "Retries na mesma conta", "同时开放网页管理面板": "Também abrir o painel de administração web", "同步密码": "Senha de sincronização", "名单最多 {max} 个状态码": "No máximo {max} status codes na lista", "后端没有返回版本信息": "O backend não retornou informações de versão", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "Contém o item fixo \"Configurações\", então o grupo não pode ser ocultado inteiro (os outros menus podem ser ocultados individualmente)", "启动与托盘": "Inicialização e bandeja", "启动时间": "Iniciado em", "启用云同步": "Ativar sincronização na nuvem", "启用图片兼容": "Ativar compatibilidade de imagens", "启用规则": "Ativar regra", "启用规则:{name}": "Ativar regra: {name}", "命中依据:{header} · {pattern}": "Evidência correspondente: {header} · {pattern}", "命中这些上游状态码的失败不在同一账号重发,直接换下一个账号继续试(换号占用「切换账号重试次数」,换满仍失败才把错误原样返回给客户端)。输入 100–599 的状态码后回车添加,点 × 或退格删除;默认 402(积分不足)。清空全部表示任何错误都照常重试。": "Falhas que correspondam a esses status codes do upstream não são reenviadas na mesma conta: o gateway passa direto para a próxima conta e continua tentando (a troca de conta consome uma das “Retries trocando de conta”; só quando elas se esgotam e a falha persiste é que o erro é retornado ao cliente como está). Digite um status code de 100–599 e pressione Enter para adicionar; clique em × ou use Backspace para remover. Padrão: 402 (pontos insuficientes). Limpar tudo significa que qualquer erro é tratado com o retry normal.", "品牌 Logo": "Logo da marca", "品牌设置": "Configurações da marca", "品牌设置已保存": "Configurações da marca salvas", "品牌预览": "Prévia da marca", "哪些模型用这种方式": "Quais modelos usam esta forma", "固定": "Fixo", "图标经 Magpie 引入,未单独记录 Lobe Icons 的图标版本;以上版本仅用于核对许可。": "Os ícones foram obtidos por meio do Magpie. A revisão dos ícones do Lobe Icons não foi registrada separadamente; a revisão acima foi usada apenas para verificar a licença.", "图片与相关对话将交给配置的视觉模型处理,可能增加等待时间和费用。请确认这些服务可以接收你的图片。": "As imagens e a conversa relevante serão enviadas aos modelos de visão configurados, o que pode aumentar a espera e o custo. Confirme que esses serviços podem receber suas imagens.", "图片兼容": "Compatibilidade de imagens", "图片兼容当前是关闭的:下面两块设置照样能改、会被保留,但不会对任何请求生效。": "A compatibilidade de imagens está desligada: os dois blocos abaixo continuam editáveis e são mantidos, mas nada disso vale para qualquer requisição.", "图片兼容设置已保存,仅对新请求生效。": "Configuração de compatibilidade de imagens salva. Ela se aplica apenas a novas solicitações.", "图片兼容设置读取失败": "Falha ao carregar a configuração de compatibilidade de imagens", "图片压缩": "Compressão de imagens", "图片最长边超过这个值就等比缩小(只缩不放)。默认 2048,可填 256–8192 —— 多数视觉模型在这个量级已经够用,调小更省流量、但细节会丢。": "Imagens cujo lado maior excede este valor são reduzidas proporcionalmente (nunca ampliadas). Padrão 2048, faixa 256–8192 — a maioria dos modelos de visão já fica bem nesse tamanho; um valor menor economiza tráfego, mas perde detalhes.", "图片能力未知时": "Quando o suporte a imagens for desconhecido", "图片过大、格式错误或下载失败不会被当作模型不支持图片。": "Imagem grande demais, formato inválido ou falha no download não contam como modelo sem suporte a imagens.", "在同一个账号上原地重发几次(不含首发;整条请求共用一份,用完后换来的账号只发一次就继续换)。可填 0–10,0 表示失败立即换号。": "Quantas vezes o gateway reenvia na própria conta (sem contar o primeiro envio; a requisição inteira compartilha um único saldo e, esgotado ele, cada conta obtida na troca envia uma vez e a troca segue). Valores de 0–10; 0 significa trocar de conta imediatamente após a falha.", "在这里直接编辑提示词正文:保存后以这份文本为准(优先于上面的提示词文件),清空则回到文件 / 内置默认。改一个字不必再去编辑器里开文件。": "Edite o texto do prompt diretamente aqui: após salvar, este texto passa a valer (com prioridade sobre o arquivo de prompt acima); se você limpar, volta para o arquivo / padrão integrado. Não é preciso abrir um arquivo em um editor só para mudar uma palavra.", "在途请求": "Requisições em andamento", "地址格式不对。填「IP 或域名:端口」,可带 http:// 或 https://,例如 192.168.1.23:3065": "Endereço inválido. Informe \"IP ou domínio:porta\", opcionalmente com http:// ou https:// — por exemplo 192.168.1.23:3065", "坚果云": "Jianguoyun (Nutstore)", "坚果云需使用「第三方应用密码」(账户信息 → 安全选项里生成),地址必须是 /dav/ 下的目录。": "O Jianguoyun exige uma senha de aplicativo (gerada em Informações da conta → Segurança) e o endereço deve apontar para um diretório em /dav/.", "填「IP 或域名:端口」。协议可写 http:// 或 https://,不写默认 http;http 不写端口默认 3065,https 默认 443。地址里的 /m、/v1 会自动去掉。": "Informe \"IP ou domínio:porta\". O protocolo pode ser http:// ou https:// (http é assumido se omitido). Sem porta, http usa 3065 e https usa 443. Qualquer /m ou /v1 no endereço é removido automaticamente.", "处理方式": "Modo de processamento", "处理示意": "Como funciona", "备份中…": "Fazendo backup…", "备份包含账号凭证、网关 Key、GitHub 令牌与云同步凭据的恢复密钥,整个文件受备份密码保护。请分开保管文件与密码;忘记密码无法恢复。": "O backup inclui chaves de recuperação de contas, keys do gateway, tokens do GitHub e credenciais de sincronização. O arquivo inteiro é protegido pela senha do backup. Guarde arquivo e senha separadamente; sem a senha, não é possível restaurar.", "备份密码": "Senha do backup", "备份密码不能超过 1024 字节": "A senha do backup não pode exceder 1024 bytes", "备份密码至少需要 12 位,建议使用较长且不重复的密码": "Use ao menos 12 caracteres; recomendamos uma senha longa e exclusiva", "备份整库": "Fazer backup do banco", "备份文件内含全部账号凭证、网关 API Key 与面板管理员凭据,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "O arquivo de backup contém todas as credenciais de contas, as chaves de API do gateway e as credenciais de administrador do painel — dá para logar com ele diretamente. Guarde com cuidado; não compartilhe nem envie para lugar público.", "备选模型": "Modelo alternativo", "复制全部信息": "Copiar todas as informações", "复制给客户端": "Copiar para o cliente", "复用相同图片的识读结果": "Reutilizar a leitura de imagens idênticas", "外观": "Aparência", "外观 · 接入 · 关于": "Aparência · Acesso · Sobre", "多个客户端标识冲突": "Identificadores de clientes conflitantes", "天": "dias", "天数": "Dias", "失败 {n} 个": "Falhas: {n}", "失败 {n} 个:{detail}": "Falhas: {n} — {detail}", "失败后最多再换几个账号试(填 N = 最多换 N 个,首发那个不算)。换到同一家名下另一个账号、或换到另一家,都各算一次;换满仍失败就返回错误。可填 0–10,0 表示失败立即报错。": "Quantas contas a mais tentar em caso de falha (preencha N = trocar por até N contas; a que fez o primeiro envio não conta). Trocar para outra conta do mesmo provedor ou para outro provedor conta igualmente como uma troca; se o limite se esgotar e a falha persistir, um erro é retornado. Valores de 0–10; 0 significa retornar o erro imediatamente após a falha.", "存储桶(Bucket)": "Bucket", "存储概况已刷新": "Visão geral do armazenamento atualizada", "安全": "Segurança", "安装到主屏幕": "Adicionar à tela inicial", "安装到桌面": "Instalar como app", "安装包形态": "Tipo de instalador", "完全相同": "Correspondência exata", "官方原文只有一句:声明自己是 ZCode。": "O texto oficial tem apenas uma frase: declara que ele é o ZCode.", "实际处理:": "O que acontece na prática: ", "客户端 system 原样出站。": "O system do cliente é enviado como está.", "客户端 system 原样出站(只靠指纹脱敏改写模板句)。": "O system do cliente é enviado como está (somente o mascaramento de fingerprint reescreve frases de template).", "客户端专用请求头": "Cabeçalho específico do cliente", "客户端名称": "Nome do cliente", "客户端名称不能为空,最长 80 个字符": "Informe um nome de cliente com até 80 caracteres", "客户端名称重复或与内置名称冲突": "Nome de cliente duplicado ou em conflito com um nome integrado", "客户端标识无效或重复": "Identificador de cliente inválido ou duplicado", "客户端识别": "Identificação de clientes", "客户端识别入口尚未就绪,请刷新页面后重试": "A identificação de clientes ainda não está pronta. Atualize a página e tente novamente.", "客户端识别设置读取失败": "Falha ao carregar configurações de identificação", "客户端(Claude Code / Codex 等 CLI)会在 system 提示词里注入几十句固定模板,上游按逐字匹配审核,命中就整单拦截(HTTP 400)。指纹脱敏能改写实测命中过的那几句,但换一个客户端版本就可能冒出新的。这里可以把 system 整段换成网关自己那份:①「透传」= 不动客户端 system(默认,行为与之前完全一致);②「替换」= 删掉客户端所有 system / developer 消息,换成网关的提示词(客户端项目规范随之消失);③「追加」= 在开头连续 system 块之后插入一条网关提示词,既有消息逐字不动(客户端规范与网关提示词并用)。那份提示词有两个来源:提示词文件(留空用内置默认),或直接在界面上编辑正文 —— 编辑过就以那份正文为准(优先于文件),清空则回到文件 / 内置默认。另外,透传 / 追加模式下撞了内容拦截(多半是指纹误报)时,网关会自动换一段最小中性提示词重试一次,并把「降级期」开到次日 00:00 —— 期间所有请求直接带中性提示词出门,不再先撞一次 400;这里能看见并提前解除它。上面几项是**默认值**:想给某个提供商单独配,用下面的「按提供商」加一行(带「网关自带」的家默认就列在那里)—— 不同的上游对这些内容的接受程度不一样。": "Os clientes (ferramentas CLI como Claude Code / Codex) injetam dezenas de frases de template fixas no system prompt, e o upstream as revisa por correspondência palavra por palavra: um acerto bloqueia a requisição inteira (HTTP 400). O mascaramento de fingerprint consegue reescrever as frases que foram bloqueadas nos testes, mas uma versão diferente do cliente pode trazer novas. Aqui é possível substituir o system inteiro pelo do próprio gateway: ① “Passthrough” = não mexe no system do cliente (padrão, comportamento idêntico ao anterior); ② “Substituir” = apaga todas as mensagens system / developer do cliente e coloca o prompt do gateway (as instruções de projeto do cliente desaparecem junto); ③ “Anexar” = insere um prompt do gateway depois dos blocos system consecutivos do início, deixando as mensagens existentes palavra por palavra intactas (as instruções do cliente e o prompt do gateway são usados juntos). Esse prompt tem duas origens: o arquivo de prompt (deixe vazio para usar o padrão integrado) ou a edição direta do texto na interface — se editado, vale o texto editado (com prioridade sobre o arquivo); se limpo, volta para o arquivo / padrão integrado. Além disso, nos modos Passthrough / Anexar, quando há bloqueio de conteúdo (geralmente um falso positivo de fingerprint), o gateway tenta de novo automaticamente com um system prompt neutro mínimo e estende o “período de fallback” até 00:00 do dia seguinte — nesse período, todas as requisições saem direto com o prompt neutro, sem bater primeiro em um 400; aqui você pode ver e encerrar o fallback antecipadamente. Os itens acima são **valores padrão**: para configurar um provedor específico, adicione uma linha em “Por provedor” abaixo (os provedores com “Interno do gateway” já aparecem lá por padrão) — cada upstream tolera esses conteúdos de forma diferente.", "家之间仍按优先级,只有同一家内部轮流用各账号 —— 想优先用某几家、又不愿把某一家的某个账号焊死时用它。": "Os provedores seguem a prioridade; só as contas dentro do mesmo provedor se alternam. Para preferir alguns provedores sem prender nenhuma conta específica.", "家内轮询": "Rodízio por provedor", "容器内更新": "Atualização no contêiner", "密码、文件或密钥校验失败时不会替换主库;替换阶段失败会自动尝试还原,实际结果以上方错误说明为准。": "Falhas na validação da senha, do arquivo ou das chaves não alteram o banco principal. Se a substituição falhar, a restauração será tentada automaticamente; o erro acima informa o resultado real.", "密码加密 · 包含恢复密钥": "Criptografado com senha · Chaves incluídas", "密码至少 8 位": "A senha deve ter pelo menos 8 caracteres", "对话里内嵌的 base64 大图(截图、照片)既撑大请求体,也拉高按像素折算的上游计费。开启后,网关在转发前把超过阈值的图等比缩到长边上限、重新存成 JPEG —— 只改发给上游的副本,请求日志里保存的仍是你发来的原图。同一张原图在多轮对话里重复出现时复用上一次的压缩结果,不会每轮重算。http 链接图片、GIF 动图、SVG 一律不动;压完反而更大的图也保留原图。只作用在对话场景,生图与图片编辑不受影响。默认开启;不想要的话把开关关掉即可。": "Imagens base64 grandes embutidas na conversa (capturas de tela, fotos) incham o corpo da requisição e elevam a cobrança do provedor, calculada por pixel. Quando ativado, o gateway reduz as imagens acima do limite até o tamanho máximo do lado maior e as recodifica em JPEG antes de encaminhar — apenas a cópia enviada ao provedor é alterada; o log de requisições continua guardando o original que você enviou. Quando a mesma imagem original reaparece ao longo dos turnos, o resultado comprimido anterior é reaproveitado em vez de recalculado. Imagens referenciadas por links http, GIFs animados e SVGs nunca são tocados; uma imagem que ficaria maior após a recodificação é mantida como está. Aplica-se apenas ao chat — geração e edição de imagens não são afetadas. Ativado por padrão; desative o interruptor se não quiser.", "导入前会把本机的 account.key 改名备份(account.key.bak-时间戳),不会直接删除。": "Antes de importar, o account.key local é renomeado para backup (account.key.bak-); ele nunca é excluído.", "导入完成:{summary}": "Importação concluída: {summary}", "导入密钥失败:{message}": "Falha ao importar a chave: {message}", "导入密钥并继续": "Importar chave e continuar", "导入账号": "Importar contas", "导出中…": "Exportando…", "导出会把全部账号与自定义提供商定义写入一个 JSON 文件,可以拷到另一台机器上导入后继续使用。导入采用合并策略:同提供商下按业务身份(UID / userId / apiKey 等)去重 —— 已存在的账号只更新凭证,保留本机原有的优先级顺序;新账号追加到转发顺序末尾,不会抢占当前正在使用的账号;自定义提供商定义按 id 合并,本机缺失时自动补建。": "A exportação grava todas as contas e definições de provedores personalizados em um arquivo JSON, que pode ser copiado para outra máquina e importado para continuar usando. A importação usa uma estratégia de mesclagem: dentro do mesmo provedor, as contas são deduplicadas pela identidade de negócio (UID / userId / apiKey etc.) — contas já existentes têm apenas as credenciais atualizadas e mantêm a ordem de prioridade original desta máquina; contas novas são anexadas ao final da ordem de encaminhamento e não tomam o lugar da conta em uso no momento; as definições de provedores personalizados são mescladas por id e criadas automaticamente quando ausentes nesta máquina.", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义": "O arquivo exportado contém credenciais como accessToken / refreshToken / apiKey e definições de provedores personalizados", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "O arquivo exportado contém credenciais como accessToken / refreshToken / apiKey e definições de provedores personalizados, e pode ser usado diretamente para login. Guarde-o com cuidado; não o compartilhe nem o envie para locais públicos.", "导出账号": "Exportar contas", "将数据库和恢复凭证所需的密钥一起保存为密码加密的 .a2ab 备份,可在 Windows、macOS 或 Linux 上恢复,无需手工复制密钥。恢复时整体替换账号、配置、日志与桌面设置,并使用目标机器的密钥重新加密凭证,不覆盖本机已有钥匙。可取消包含日志以减小文件;旧 .sql 备份仍可导入。恢复前自动保留安全备份,完成后需要重新登录管理面板。": "Salve o banco e as chaves de recuperação em um backup .a2ab criptografado por senha, restaurável no Windows, macOS ou Linux sem copiar chaves manualmente. A restauração substitui contas, configurações, logs e preferências do desktop, recriptografando as credenciais com as chaves do destino sem sobrescrevê-las. Exclua logs para reduzir o arquivo. A importação de .sql antigo continua disponível. Um backup de segurança é criado antes e é necessário entrar novamente no painel.", "尚未注册管理员。开启「网关 → 网络访问 → 允许其他设备访问网关」时会引导注册,也可以从登录页注册。": "Nenhum administrador foi registrado. Ativar Gateway → Acesso pela rede → Permitir que outros dispositivos acessem o gateway inicia o registro. Você também pode se registrar pela página de login.", "尚未注册管理员:管理接口不需要登录。开启「允许局域网访问」时会引导注册,也可以从登录页注册。": "Nenhum administrador registrado: a API de gerenciamento não exige login. Ativar \"Permitir acesso pela LAN\" conduz ao registro; você também pode registrar pela página de login.", "尚未配置视觉分析模型": "Nenhum modelo de análise visual configurado", "局域网开放后,管理接口要求登录。请设置管理员账号与密码,注册完成会直接继续开启流程。": "Com o acesso LAN ativado, a interface de administração exige login. Defina a conta de administrador e a senha; concluído o registro, o fluxo de ativação continua automaticamente.", "局域网访问": "Acesso LAN", "工具用法与环境说明那一大段。": "O bloco grande de uso das ferramentas e descrição do ambiente.", "已为「{label}」单独配置提示词": "Prompt configurado individualmente para “{label}”", "已作为独立应用运行": "App independente", "已使用本机密钥重新加密 {n} 项凭证,原有密钥未被覆盖。": "{n} credenciais recriptografadas com as chaves locais. As chaves existentes não foram sobrescritas.", "已保存 {count} / {limit} 条报文(超出后丢弃最旧的)。": "{count} / {limit} payloads salvos (os mais antigos são descartados quando o limite é excedido).", "已保存的值不符合当前插件规则,请修改或恢复默认值。": "O valor salvo não atende às regras atuais do plugin. Edite-o ou restaure o padrão.", "已保存,留空则不修改": "Salva; deixe em branco para manter", "已保存,留空沿用": "Salvo; deixe em branco para manter", "已关闭": "Desativado", "已关闭 models.dev 联网刷新": "Atualização online do models.dev desativada", "已关闭。{note}": "Desativado. {note}", "已关闭「{label}」的网关自带提示词:能否通过上游校验取决于上游当前口径": "System prompt interno do gateway de “{label}” desativado: se ele passa na validação do upstream depende dos critérios atuais do upstream", "已关闭会话图片压缩": "Compressão de imagens desativada", "已关闭出站指纹脱敏": "Mascaramento de fingerprint de saída desativado", "已关闭开发者角色兼容": "Compatibilidade com papel developer desativada", "已关闭第三方模型回答完自动折叠过程": "Recolhimento automático do trabalho de modelos de terceiros após a resposta desativado", "已关闭网关跨域访问": "CORS do gateway desativado", "已关闭:不额外补阶段标记,由客户端决定过程展示。": "Desativado: sem marcadores extras; o cliente controla a exibição do trabalho.", "已删除分组「{name}」": "Grupo \"{name}\" excluído", "已取消「{label}」的单独配置": "Configuração individual de “{label}” removida", "已取消安装": "Instalação cancelada", "已取消导入": "Importação cancelada", "已取消导出": "Exportação cancelada", "已取消恢复": "Restauração cancelada", "已启用 {count} 条规则,应用于{scope}。": "{count} regras ativadas, aplicadas a {scope}.", "已启用登录": "Login ativado", "已复制全部版本信息": "Todas as informações de versão foram copiadas", "已应用": "Aplicado", "已开启": "Ativado", "已开启:为正常完成的 Codex 回答补阶段标记。": "Ativado: adiciona marcadores de fase às respostas do Codex concluídas normalmente.", "已开启:其他设备把 API 地址指向 {url}{panel}。": "Ativado: em outros dispositivos, aponte o endereço da API para {url}{panel}.", "已开启:监听 0.0.0.0,允许其他设备访问。": "Ativado: escutando em 0.0.0.0 para permitir acesso de outros dispositivos.", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "Grupos padrão restaurados: Visão geral / Encaminhamento / Diagnóstico / Sistema", "已截断": "Truncado", "已指定出口": "Saída fixada", "已接管": "Assumido pelo gateway", "已改回内置默认提示词": "Revertido para o system prompt padrão integrado", "已新建分组「{name}」,点组头的 + 把菜单移进来": "Grupo \"{name}\" criado — use + no cabeçalho para mover menus", "已清掉「{label}」界面编辑的正文": "Texto editado na interface de “{label}” removido", "已清掉界面编辑的提示词(回落文件 / 内置默认)": "Prompt editado na interface removido (volta para o arquivo / padrão integrado)", "已清除本机保存的 API Key": "A API key salva neste navegador foi removida", "已生效": "Em vigor", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。": "Mudou automaticamente para um prompt neutro mínimo (bateu num bloqueio de conteúdo do upstream — na maioria das vezes um falso positivo da impressão digital do system); levanta sozinho em {until}.", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "Mudança automática para o system prompt neutro mínimo (houve bloqueio de conteúdo no upstream, provavelmente um falso positivo de fingerprint do system); o fallback será encerrado automaticamente em {until}. Durante esse período, o prompt próprio deste modo não é enviado; depois de corrigir o prompt, é possível encerrar o fallback imediatamente.", "已自定义": "Personalizado", "已运行": "Tempo de atividade", "已退出登录": "Sessão encerrada", "已隐藏": "Oculto", "巴西葡萄牙语": "Português (Brasil)", "希望接入新的提供商或模型": "Quero integrar um novo provedor ou modelo", "库中 schema": "Schema no banco", "库主文件的大小(不含运行期间的 WAL 临时文件,退出时已自动并回)。": "Tamanho do arquivo principal do banco (não inclui os arquivos temporários WAL em tempo de execução, que já são incorporados automaticamente ao sair).", "库存目标": "Meta de estoque", "应用提供商": "Aplicar aos provedores", "应用版本:{version}": "Versão do app: {version}", "应用状态": "Status do app", "应用窗口": "Janela do aplicativo", "建立上游 TCP/TLS 连接或代理隧道的最大等待时间(秒),默认 30 秒,范围 1~3600。": "Tempo máximo de espera para estabelecer a conexão TCP/TLS ou o túnel de proxy com o upstream (segundos), padrão 30 segundos, faixa 1~3600.", "开发构建": "Build de desenvolvimento", "开发者角色兼容": "Compatibilidade de papel developer", "开发者角色兼容设置已刷新": "Configuração de compatibilidade com papel developer atualizada", "开启前需要注册面板管理员,已注册会跳过此步骤。管理接口需要管理员会话或网关 Key;API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。": "É necessário registrar um administrador do painel antes de ativar. Se já houver um, esta etapa será ignorada. A API de gerenciamento exige uma sessão de administrador ou chave do gateway. Chamadas à API exigem uma chave do gateway ativa; se não houver nenhuma, uma chave padrão será criada automaticamente.", "开启后新发生的请求才会被记录(已经过去的请求补不回来)。报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "Só requisições que acontecerem depois de ligar são registradas (as passadas não podem ser recuperadas). Os payloads ficam no banco de dados local e só os 500 mais recentes são mantidos (os mais antigos são descartados); a contagem aparece em \"Dados → Armazenamento de dados\", à esquerda, como \"Payloads de depuração\".", "开启后新发生的请求才会被记录(已经过去的请求补不回来),请求日志的「预览对话」也随之开始保存原始正文。上游报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "Com isto ativado, apenas requisições novas são registradas (as requisições passadas não podem ser recuperadas), e a “Prévia da conversa” nos logs de requisições também passa a salvar os corpos originais. Os payloads de upstream ficam no banco de dados local, mantendo somente os 500 mais recentes (os mais antigos são descartados quando o limite é excedido); a contagem aparece em “Payloads de debug”, na seção “Dados → Armazenamento de dados”, à esquerda.", "开启后监听所有 IPv4 网卡(0.0.0.0),并不局限于局域网,也不会自动开放到公网;实际访问范围取决于网络与防火墙设置。修改后需要重启应用。": "Ao ativar, o gateway escuta em todas as interfaces IPv4 (0.0.0.0), não apenas na rede local, mas não é exposto automaticamente à internet. O acesso real depende das configurações de rede e firewall. Alterações exigem reiniciar o aplicativo.", "开启后网关将监听所有 IPv4 网卡(0.0.0.0),访问范围不再限于本机,也不局限于局域网。是否能从公网访问取决于网络与防火墙设置。": "O gateway passará a escutar em todas as interfaces IPv4 (0.0.0.0). O acesso não ficará restrito a esta máquina nem à rede local. O acesso pela internet depende das configurações de rede e firewall.", "开启后网关将监听所有网卡,同一局域网内的设备即可把 API 地址指向本机 IP 一起使用;管理接口从此要求管理员会话或网关 Key,转发接口在没有一把启用的 Key 时也会拒绝服务(届时会自动创建一把名为「默认」的 Key)。": "Após ativar, o gateway passa a escutar todas as interfaces de rede e dispositivos na mesma LAN podem usar a API apontando o endereço para o IP desta máquina; a interface de administração passa a exigir sessão de administrador ou chave do gateway, e a interface de encaminhamento também recusa atendimento enquanto não houver nenhuma chave ativa (nesse caso, uma chave chamada “Padrão” é criada automaticamente).", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 套餐池(Start Plan)」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "Quando ativado, fechar a janela não apenas a esconde — toda a janela da interface é destruída: os seis processos residentes do WebView2 (cerca de 200 MB de memória) saem, enquanto o encaminhamento do gateway, os check-ins agendados e as consultas de saldo continuam no processo de segundo plano, sem impacto; clique no ícone da bandeja para reabrir a interface quando necessário (o arranque a frio do WebView leva cerca de 1 segundo). Nota: enquanto a interface estiver destruída, os tokens de CAPTCHA do canal \"Pool de planos (Start Plan)\" do ZCode são cunhados pela interface e não podem ser repostos — solicitações nesse canal caem no registro como 503 (com o motivo), e reabrir a interface restaura a cunhagem automaticamente. Este interruptor só importa quando \"Minimizar para a bandeja ao fechar\" estiver ativado; minimizar a janela não é afetado.", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 活动套餐」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "Com isto ativado, fechar a janela não é apenas ocultá-la: a janela da interface é destruída por completo — os seis processos residentes do WebView2 por baixo dela (cerca de 200MB de memória) são encerrados junto, enquanto o encaminhamento do gateway, o check-in agendado e a consulta de saldo continuam nos processos em segundo plano, sem serem afetados; quando precisar da interface, clique no ícone da bandeja para reabri-la (a inicialização a frio do WebView leva cerca de 1 segundo). Atenção: enquanto a interface está destruída, os tokens de captcha do canal do Plano de evento da ZCode são forjados pela interface e não podem ser repostos — requisições por esse canal caem nos logs de requisições com status 503 (com o motivo registrado) e se recuperam automaticamente ao reabrir a interface. Este switch só faz sentido quando “Minimizar para a bandeja ao fechar a janela” está ativado; minimizar a janela não é afetado.", "开启后,关闭窗口会销毁界面并释放 WebView 进程,网关转发、定时签到、余额查询仍在后台继续。ZCode 模型请求免验证时不受影响;上游要求人机验证时,需要重新打开界面,在账号的「套餐明细」中主动完成验证。此开关只在「关闭窗口时最小化到托盘」开启时有意义。": "Quando habilitado, fechar a janela libera a interface e os processos WebView. Encaminhamento, check-ins agendados e consultas de saldo continuam em segundo plano. Solicitações ZCode sem verificação não são afetadas. Quando exigida, reabra a interface e conclua a verificação nos detalhes do plano da conta. Aplica-se somente quando fechar minimiza o aplicativo para a bandeja.", "开启后,新发生的请求会保存上游调试报文与下游正文,历史请求无法补录。上游调试报文只保留最近 500 条;两侧条数可在「数据 → 数据存储」查看。关闭开关不会删除已保存的报文,可在请求日志中选择「仅清空报文原文」一起清理。": "Após ativar, novas requisições salvam os payloads de depuração do upstream e os corpos do downstream; requisições anteriores não podem ser recuperadas. Apenas os 500 payloads mais recentes do upstream são mantidos. As contagens dos dois lados aparecem em Dados → Armazenamento de dados. Desativar não exclui os payloads salvos; selecione Limpar apenas os payloads nos logs de requisições para limpar os dois lados juntos.", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。": "Com isto ativado, a página de login conclui a verificação automaticamente em segundo plano no navegador (imperceptível para pessoas reais), enquanto cada tentativa de script precisa resolver um desafio — o custo de força bruta e de registro em massa sobe bastante. Afeta apenas o login / registro do painel, nada a ver com a API Key dos clientes de API.", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。桌面端与网页端各自独立:桌面端主要服务本机与局域网,网页端(Docker / 服务端)直接暴露在网络上的登录页风险更高,建议保持开启。": "Quando ativado, a página de login resolve o desafio em segundo plano (invisível para pessoas), enquanto cada tentativa automatizada precisa calcular um antes — força bruta e registro indevido ficam bem mais caros. Afeta apenas o login / registro do painel, não as API keys dos clientes. Desktop e web são independentes: o desktop atende principalmente esta máquina e a LAN, enquanto o web (Docker / servidor) fica exposto à rede e se beneficia mais de permanecer ativado.", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "Quando ligado, o gateway salva localmente, por inteiro, **a requisição enviada ao upstream** (cabeçalhos + corpo) e **a resposta do upstream** (código de status + cabeçalhos + corpo) de cada encaminhamento, para a visualização em \"Detalhes\" na página de logs de requisições. Campos de credenciais nos cabeçalhos — Authorization, Cookie, API Key e afins — são sempre trocados por [redacted] e nunca tocam o disco em texto puro; corpos de requisição e resposta ficam como estão (podem conter suas conversas). Só os 500 payloads mais recentes ficam guardados; os mais antigos são descartados. É um interruptor temporário para diagnóstico — mantenha desligado quando não precisar.", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看;请求日志详情的「预览对话」也依赖本开关 —— 它保存的是客户端发来的请求体与网关下发的响应体(两侧各截断到 128 KiB),不开这个开关时预览对话没有数据可看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。上游报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "Com isto ativado, o gateway salva localmente, na íntegra, **as requisições enviadas ao upstream** (cabeçalhos + corpo) e **as respostas retornadas pelo upstream** (status code + cabeçalhos + corpo) de cada encaminhamento, para consulta em “Detalhes” na página de logs de requisições; a “Prévia da conversa” nos detalhes da requisição também depende deste switch — ela salva o corpo da requisição do cliente e o corpo da resposta do gateway (cada um truncado em 128 KiB), e com o switch desativado não há dados para pré-visualizar. Campos de credenciais nos cabeçalhos, como Authorization, Cookie e API Key, são sempre substituídos por [redacted] e nunca gravados em texto puro; corpos de requisição e de resposta são salvos como estão (podem conter o conteúdo das suas conversas). Só os 500 payloads de upstream mais recentes são mantidos; os mais antigos são descartados quando o limite é excedido. É um switch temporário para diagnóstico; recomenda-se desativá-lo quando não for necessário.", "开启后,能连接到网关的设备可通过浏览器访问网页管理面板,需使用管理员账号登录。访问范围与网关相同,并不局限于局域网。": "Dispositivos que conseguem alcançar o gateway poderão abrir o painel web no navegador e entrar com uma conta de administrador. O alcance de acesso é o mesmo do gateway e não se limita à rede local.", "开启后,调用方可以用专用请求头声明已登记的客户端名称。这不是身份认证,只用于日志和统计,不会获得额外权限。": "Quando ativado, o solicitante pode declarar um cliente registrado pelo cabeçalho dedicado. Isso não autentica a identidade: afeta apenas logs e estatísticas, sem conceder permissões adicionais.", "开启局域网访问": "Ativar acesso LAN", "开启来源声明": "Ativar declarações de origem", "开启网络访问": "Ativar acesso pela rede", "开放后,局域网内其他设备的浏览器打开本机 IP 即可进入管理面板(需管理员账号登录)。": "Após abrir, o navegador de outros dispositivos na LAN pode acessar o painel de administração abrindo o IP desta máquina (é preciso entrar com a conta de administrador).", "开机自动启动": "Iniciar com o sistema", "开源许可": "Licença de código aberto", "开(最多 {n} 轮)": "Ligado (até {n} rodadas)", "归属客户端": "Cliente atribuído", "当前三段都是官方原文。": "No momento, os três blocos estão com o texto oficial.", "当前不可用": "Indisponível no momento", "当前后端不支持词表编辑与提供商范围,请更新后端后重试。": "Este backend não suporta edição de regras nem escopo de provedores. Atualize o backend e tente novamente.", "当前固定为浅色模式,不随系统变化。": "No momento, fixo no modo claro, sem seguir o sistema.", "当前固定为深色模式,不随系统变化。": "No momento, fixo no modo escuro, sem seguir o sistema.", "当前密码": "Senha atual", "当前已改过:{edited}。": "Editados no momento: {edited}.", "当前形态": "Forma de execução", "当前按 100% 显示(默认比例)。": "Exibindo no momento a 100% (proporção padrão).", "当前按 k / M 缩写显示(如 1.20M / 8.4k)。": "Exibindo no momento com abreviações k / M (ex.: 1.20M / 8.4k).", "当前按 {n}% 显示。": "Exibindo no momento a {n}%.", "当前按「万 / 亿」式本地量级词显示(如 1.2亿 / 8400万)。": "Exibindo no momento com magnitudes locais no estilo k / M (ex.: 120M / 84M).", "当前是透传模式:存下来也不会发出,切成「替换 / 追加」之后才生效。": "No momento, o modo é Passthrough: mesmo salvando, o texto não é enviado; só passa a valer após mudar para “Substituir / Anexar”.", "当前显示为「1.20M / 8.4k / 1.2B」这类英文缩写。": "Exibindo no momento com abreviações k / M / B (ex.: 1.20M / 8.4k / 1.2B).", "当前显示为「1.2亿 / 8400万」这类中文量级。": "Atualmente exibido como magnitudes chinesas no estilo \"1.2亿 / 8400万\".", "当前样本结果:{name}": "Resultado da amostra atual: {name}", "当前正在使用": "Em uso", "当前浏览器以管理员身份登录着本面板。「退出登录」会撤销这台设备的登录会话(30 天内的自动续期一并失效),需要重新输入账号密码;其他已登录的设备不受影响。": "Este navegador está conectado a este painel como administrador. “Sair” revoga a sessão de login deste dispositivo (a renovação automática dentro de 30 dias também é invalidada) e será preciso digitar usuário e senha novamente; outros dispositivos já conectados não são afetados.", "当前版本不支持品牌设置": "Esta versão não oferece suporte às configurações da marca", "当前环境不支持局域网访问设置": "O ambiente atual não oferece suporte à configuração de acesso LAN", "当前环境不支持整库备份": "O backup do banco completo não está disponível neste ambiente", "当前环境不支持整库备份(仅桌面端可用)": "Backup do banco completo não está disponível aqui (somente desktop)", "当前环境不支持整库恢复": "A restauração do banco completo não está disponível neste ambiente", "当前环境不支持整库恢复(仅桌面端可用)": "Restauração do banco completo não está disponível aqui (somente desktop)", "当前环境不支持网络访问设置": "As configurações de acesso pela rede não estão disponíveis neste ambiente", "当前环境不支持读取版本信息(桥接方法缺失)": "Este ambiente não consegue ler as informações de versão (método de ponte ausente)", "当前生效值:{value}": "Valor em uso: {value}", "当前生效的正文来自{source}{file}。保存后这一份会盖过提示词文件与内置默认{note}。": "O texto em vigor no momento vem de {source}{file}. Após salvar, ele prevalece sobre o arquivo de prompt e o padrão integrado{note}.", "当前界面": "Interface atual", "当前管理员:{name}": "Conectado como: {name}", "当前设置已保存": "As configurações atuais estão salvas", "当前跟随操作系统的深浅色设置,系统切换时界面会自动跟上。": "No momento, seguindo o tema claro / escuro do sistema operacional; quando o sistema mudar, a interface acompanha automaticamente.", "当前路由内的可用视觉模型": "Modelos de visão disponíveis na rota atual", "待迁移旧数据": "Dados antigos pendentes de migração", "待配置": "Não configurado", "忘记密码时无法在界面里找回:需要停掉程序后,从数据库删除管理员记录(kv 表的 panelAdmin 键),重启后按首次使用重新注册。具体命令与各形态的库文件路径见 docs 目录下的「重置管理员」文档。": "Se você esquecer a senha, ela não pode ser recuperada pela interface: pare o programa, exclua o registro do administrador no banco (a chave panelAdmin na tabela kv), reinicie e registre novamente como no primeiro uso. Os comandos e o caminho do banco em cada forma de instalação estão no documento \"Redefinir administrador\" em docs.", "思考等级、图片能力未知、等待上限": "Nível de raciocínio, capacidade de imagem desconhecida, limite de espera", "恢复中…": "Restaurando…", "恢复失败:{message}": "Falha na restauração: {message}", "恢复官方原文": "Restaurar o texto oficial", "恢复插件默认值": "Restaurar padrão do plugin", "恢复整库": "Restaurar o banco", "恢复整库备份": "Restaurar backup completo", "恢复默认": "Restaurar padrões", "恢复默认 Logo": "Restaurar logo padrão", "恢复默认侧边栏": "Restaurar barra lateral padrão", "恢复默认品牌": "Restaurar marca padrão", "恢复默认词表": "Restaurar regras padrão", "想回到原来那份,把这里清空再保存即可(不会删掉你配的文件路径)。": "Para voltar ao texto anterior, basta limpar este campo e salvar (o caminho de arquivo que você configurou não é apagado).", "想要的新功能或改进想法": "Funcionalidades novas ou melhorias que você gostaria de ver", "所有未单独配置的提供商都用这一份": "Todos os provedores sem configuração individual usam esta", "所有菜单都已在这一组": "Todos os menus já estão neste grupo", "手机端可管理所连接网关的账号、签到与插件,并使用提供商声明的动态登录入口;其余既有添加入口、编辑凭证和改写客户端配置仍需桌面面板。": "O aplicativo móvel gerencia contas, check-in e plugins no gateway conectado e permite login pelos métodos dinâmicos declarados pelos provedores. Outras entradas existentes para adicionar contas, editar credenciais e alterar configurações de clientes ainda exigem o painel desktop.", "托管网页界面": "Serve a interface web", "把地址里的 your-server 与 USERNAME 换成你自己的;目录不存在时会自动创建。": "Substitua your-server e USERNAME na URL pelos seus dados; o diretório é criado automaticamente se não existir.", "把整份数据库(账号、网关配置、事件日志、请求统计、调试报文与桌面设置)导出成一个 SQL 文件,恢复时整体替换本机全部数据 —— 与上面「账号导入 / 导出」的逐条合并是两种语义:恢复会连配置、日志与当前启用状态一起换成备份那台机器的状态。导出默认包含日志与调试报文(文件可能很大),不需要时可以取消勾选只备业务数据。恢复前会自动把当前数据备份到配置目录的 backups/ 下,恢复后需要重新登录管理面板。": "Exporta o banco inteiro (contas, configuração do gateway, logs de eventos, estatísticas de requisições, payloads de depuração e configurações do desktop) em um arquivo SQL; a restauração substitui todos os dados locais por inteiro. É uma semântica diferente do \"Importar / exportar contas\" acima, que mescla item a item: restaurar troca configuração, logs e estados de ativação para o que a máquina do backup tinha. A exportação inclui logs e payloads de depuração por padrão (o arquivo pode ser grande); desmarque para guardar só os dados de negócio. Antes de restaurar, os dados atuais são automaticamente backupados em backups/ no diretório de configuração, e você precisará logar no painel de novo depois.", "把整次请求交给视觉模型,由它直接回答,不再回到原模型。": "A requisição inteira vai para o modelo de visão, que responde direto no lugar do modelo original.", "把菜单移入 {name}": "Mover um menu para {name}", "把菜单移入「{name}」": "Mover um menu para \"{name}\"", "把账号、网关配置、自定义提供商、Agent 配置、代理池 / 订阅、签到与余额记录同步到 WebDAV 或 S3 兼容存储,换台机器后一键取回。事件日志、请求明细、调试报文与面板登录态不在同步范围内(它们是本机的运行痕迹)。上传的账号凭证仍是加密形态,解密用的账号密钥由「同步密码」单独加密后一并上传 —— 同步密码不会保存到云端,换机下载时需要重新输入。": "Sincronize contas, configuração do gateway, provedores personalizados, perfis do Agent, pool de proxies / assinaturas e registros de check-in e saldo com WebDAV ou armazenamento compatível com S3, e recupere tudo em outra máquina com um clique. Logs de eventos, detalhes de requisições, pacotes de depuração e o estado de login do painel ficam de fora (são vestígios de execução desta máquina). As credenciais das contas enviadas permanecem criptografadas; a chave que as descriptografa é criptografada com a senha de sincronização e enviada junto — a senha nunca é armazenada na nuvem, então você precisa digitá-la novamente ao restaurar em outra máquina.", "把路径里的主目录显示成 ~,截图分享时不暴露用户名": "Mostra o diretório pessoal nos caminhos como ~, para que prints não revelem seu nome de usuário", "把路径里的主目录(如 C:\\Users\\你的用户名)显示成 ~,截图分享时不暴露用户名。只影响本页显示与复制,不改任何文件。": "Mostra o diretório pessoal nos caminhos (ex.: C:\\Users\\seu-nome) como ~, para que prints não revelem seu nome de usuário. Afeta apenas esta página e o texto copiado; nenhum arquivo é alterado.", "报表天数": "Dias do relatório", "报表页的热力图与按天趋势,默认 99999 天(近似全量保留),可填 1–99999 天。": "O mapa de calor e as tendências diárias da página de relatórios. Padrão de 99999 dias (retenção praticamente total); aceita de 1 a 99999 dias.", "拖动分组 {name}": "Arrastar grupo {name}", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "Arraste o ⠿ para reordenar (menus podem mudar de grupo); use os interruptores para mostrar ou ocultar; clique no nome do grupo para renomear; o + no cabeçalho move outro menu para o grupo; o botão de olho oculta o grupo inteiro. As mudanças valem na hora e ficam salvas — a barra lateral à esquerda é o resultado. Teclado: foque a alça e pressione Alt+↑ / ↓.", "拖动菜单 {name}": "Arrastar menu {name}", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "Arraste para reordenar os grupos (Alt+↑ / ↓ também funciona)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "Arraste para reordenar, inclusive entre grupos (Alt+↑ / ↓ também funciona)", "指定备选仍受当前请求权限和路由范围限制,路由组请求不会跳到组外。不会转为辅助识图继续。": "As alternativas continuam sujeitas às permissões e à rota atuais. Solicitações de um grupo nunca saem dele. Este modo nunca muda para leitura assistida de imagens.", "指定提供商": "Provedores selecionados", "指定角色": "Papéis selecionados", "指定错误码直接换号": "Troca de conta direta em códigos de erro especificados", "指纹脱敏": "Sanitização de fingerprint", "指纹脱敏会在转发前按词表顺序改写请求消息中的文本,包括对话内容、思考内容和工具调用参数。默认词表包含客户端模板句与计费表头的精确替换、正则删除规则,可以新增、编辑、删除、启停和调整顺序;替换内容留空表示删除匹配内容。默认应用全部提供商,也可指定多家。改动只作用于发给上游的副本,响应内容不变。编辑后点击「保存设置」,下一次请求生效;清空词表表示不做任何指纹改写,恢复默认只重置词表。": "Antes de encaminhar, o mascaramento aplica as regras na ordem da lista ao texto das mensagens, incluindo conversa, raciocínio e argumentos de chamadas de ferramentas. As regras padrão incluem substituições exatas e exclusões por expressão regular de modelos do cliente e cabeçalhos de cobrança. Você pode adicionar, editar, excluir, ativar, desativar e reordenar regras; uma substituição vazia exclui o texto correspondente. Por padrão, aplica-se a todos os provedores, ou você pode selecionar vários. Apenas a cópia enviada ao upstream é alterada; as respostas não mudam. Clique em Salvar configurações para aplicar à próxima requisição. Uma lista vazia não altera fingerprints, e restaurar o padrão redefine apenas as regras.", "指纹脱敏设置仅本次运行生效,写入数据库失败,请检查配置目录": "As configurações valem somente nesta execução. A gravação no banco falhou; verifique o diretório de configuração.", "指纹脱敏设置已刷新": "Configurações de mascaramento de fingerprint atualizadas", "按下面两块设置处理图片;关闭后设置全部保留。": "As imagens são tratadas pelos dois blocos abaixo; desligar mantém todas as configurações.", "按列表自上而下匹配,位于来源声明之后、内置规则之前;可用于给难认的标识钉规则。": "Correspondência de cima para baixo na ordem da lista, após as declarações de origem e antes das regras internas; use para fixar clientes difíceis de reconhecer.", "按原文精确匹配,区分大小写;不会自动去掉首尾空白。": "Corresponde ao texto exato, diferenciando maiúsculas e minúsculas. Os espaços iniciais e finais são preservados.", "按天聚合保留天数": "Retenção dos agregados diários (dias)", "按指定备选顺序尝试": "Tentar alternativas na ordem definida", "按提供商查看和调整专属选项": "Veja e ajuste opções específicas de cada provedor", "按提供商筛选设置": "Filtrar configurações por provedor", "按提供商管理专属选项,作用于当前网关中该提供商的所有账号。": "Gerencie opções específicas por provedor. As alterações se aplicam a todas as contas desse provedor no gateway atual.", "按提供商配置": "Por provedor", "按每条请求的软件标识识别客户端,不依赖 API Key。规则修改只影响新请求,内置规则随软件更新,自定义规则参与备份与云同步。": "Identifique cada requisição pelos identificadores do software, sem depender de API Key. Alterações afetam apenas novas requisições. Regras integradas acompanham o app; regras personalizadas entram no backup e na sincronização.", "换一台服务器": "Trocar de servidor", "排队等待": "Espera na fila", "排队等待次数": "Tentativas de espera na fila", "排队等待秒数": "Segundos de espera na fila", "排队等待设置已刷新": "Configurações de espera na fila atualizadas", "接入": "Acesso", "接受调用方来源声明": "Aceitar declarações de origem do solicitante", "接管回答的模型": "Modelo que assume a resposta", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "Define quais menus a barra lateral mostra, em que ordem e como são agrupados. Ocultar afeta apenas a navegação — não revoga acesso, e páginas ocultas continuam abrindo pela URL.", "控制报表与请求日志里 Token 读数的写法:开启后按「万 / 亿」式的本地量级词显示(简体为万 / 亿,繁体为萬 / 億,日文为万 / 億,韩文为만 / 억),关闭则用 k / M 缩写(与上游文档、接口字段的写法一致)。英文 / 葡语的本地量级词就是 k / M,这项对它们没有区别。只影响显示口径,不改变任何统计与存储的数值。": "Controla como o Token é exibido no relatório e nos logs de requisições: quando ativado, exibe com magnitudes locais no estilo “k / M” (chinês simplificado: 万 / 亿; chinês tradicional: 萬 / 億; japonês: 万 / 億; coreano: 만 / 억); quando desativado, usa abreviações k / M (igual à forma usada na documentação e nos campos da API do upstream). Para inglês e português, as magnitudes locais são exatamente k / M, então esta opção não faz diferença para eles. Afeta apenas a forma de exibição; não altera nenhum valor de estatística ou de armazenamento.", "控制报表与请求日志里 Token 读数的写法:开启后按中文量级显示(1.2亿 / 8400万),关闭则用 k / M / B 缩写(与上游文档、接口字段的写法一致)。这只影响显示口径,不改变任何统计与存储的数值。": "Controla como as contagens de token aparecem nos relatórios e no log de requisições: ativado mostra magnitudes chinesas (1.2亿 / 8400万), desativado usa abreviações k / M / B (iguais às dos documentos e campos de API do upstream). Isso altera apenas a exibição; nenhum número estatístico ou armazenado muda.", "控制界面的深浅色,与左侧边栏底部的三个主题按钮是同一个设置(改哪一处,另一处立刻跟上)。「跟随系统」会随操作系统当前的浅色 / 深色自动切换,并在系统主题变化时即时跟上;选「浅色」或「深色」则把界面固定在该模式,不再随系统变化。窗口标题栏的深浅色会一并同步,不会出现深色界面配一条浅色标题栏的情况。": "Controla o tema claro / escuro da interface; é a mesma configuração dos três botões de tema no rodapé da barra lateral esquerda (mudar em um lugar reflete imediatamente no outro). “Sistema” acompanha automaticamente o tema claro / escuro atual do sistema operacional e reage na hora a mudanças no tema do sistema; escolher “Claro” ou “Escuro” fixa a interface nesse modo, sem seguir o sistema. A barra de título da janela acompanha junto, então não ocorre de a interface ficar escura com uma barra de título clara.", "提供商与模型": "Provedor e modelo", "提供商专属设置": "Configurações específicas do provedor", "提供商当前不可用,未保存的修改已保留;恢复插件后可继续编辑。": "O provedor está indisponível. As edições não salvas foram mantidas; restaure o plugin para continuar editando.", "提供商设置已保存": "Configurações do provedor salvas", "提供商设置返回格式无效,请刷新后重试": "A resposta das configurações do provedor é inválida. Atualize e tente novamente.", "提建议": "Enviar sugestão", "提示词文件": "Arquivo de prompt", "提示词文件已更新": "Arquivo de prompt atualizado", "提示词正文": "Texto do prompt", "提示词正文已更新": "Texto do prompt atualizado", "插件或设置已变化,请放弃修改并刷新后重新编辑。": "O plugin ou as configurações mudaram. Descarte suas alterações e atualize antes de editar novamente.", "操作系统": "Sistema operacional", "支持 .a2ab 加密备份和旧 .sql 文件;旧 SQL 不包含恢复密钥,跨机器导入仍需原机密钥。": "Aceita backups .a2ab criptografados e .sql antigos. O SQL antigo não inclui chaves de recuperação; a importação em outra máquina ainda precisa das chaves originais.", "支持 PNG、JPG、WebP,最大 2 MiB、4096 × 4096 像素;自动缩小至 512 像素以内,建议使用正方形图片。": "Aceita PNG, JPG e WebP de até 2 MiB e 4096 × 4096 pixels. As imagens são reduzidas para até 512 pixels. Recomendamos imagens quadradas.", "改动仍保存在本机,修复网络或凭据后下一次改动会自动重试,也可以手动点「上传到云端」。": "Suas alterações continuam salvas localmente. Depois de corrigir a rede ou as credenciais, a próxima alteração tenta de novo automaticamente, ou clique em \"Enviar para a nuvem\".", "改动仍保存在本机,系统会延长等待并自动重试;修复网络或凭据后,也可以手动点「上传到云端」。": "As alterações continuam salvas neste dispositivo. O sistema tentará novamente automaticamente após uma espera maior. Depois de corrigir a rede ou as credenciais, você também pode clicar em “Enviar para a nuvem” manualmente.", "改完立即生效,不用重启(下一个请求就用新模式)。降级是自动的临时状态,解除后本模式自己的提示词立刻恢复。": "As mudanças passam a valer na hora, sem reiniciar (a próxima requisição já usa o novo modo). O fallback é um estado temporário automático; depois de encerrado, o prompt próprio deste modo volta imediatamente.", "放大或缩小整个界面(文字与控件一起变),效果与浏览器 Ctrl +/- 相同:共 11 档,立即生效并记住。": "Amplia ou reduz a interface inteira (texto e controles juntos), com o mesmo efeito de Ctrl +/- no navegador: 11 níveis; a mudança vale na hora e é memorizada.", "放弃修改并刷新": "Descartar alterações e atualizar", "数据": "Dados", "数据保留": "Retenção de dados", "数据保留设置已刷新": "Configurações de retenção de dados atualizadas", "数据存储": "Armazenamento de dados", "数据库 schema": "Schema do banco", "数据库不可用": "Banco de dados indisponível", "数据库与恢复密钥一起加密保存。密码不会保存在应用或备份中,忘记后无法恢复,请妥善保管。": "O banco e as chaves são criptografados juntos. A senha não fica no aplicativo nem no backup. Guarde-a com cuidado: sem ela, não é possível restaurar.", "数据库主文件与 WAL 文件的总占用,与请求日志清理弹窗采用同一口径;清理后可压缩数据库回收空闲空间。": "Tamanho total do arquivo principal do banco e do arquivo WAL, usando o mesmo cálculo do diálogo de limpeza de requisições. Após a limpeza, compacte o banco para recuperar o espaço livre.", "数据库文件": "Arquivo do banco", "数据目录": "Diretório de dados", "数据统一保存在配置目录下的 agent2api.db;如需更换位置,请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "Os dados ficam todos em agent2api.db, no diretório de configuração; para mudar de local, defina a variável de ambiente AGENT2API_PROXY_HOME e reinicie o programa.", "整体替换": "substituídos por inteiro", "整库备份 / 恢复": "Backup / restauração do banco completo", "整次请求交给 {model} 直接回答,不再回到原模型。": "A requisição inteira vai para {model}, que responde direto no lugar do modelo original.", "新分组名": "Nome do novo grupo", "新增 {added} 个、更新 {updated} 个{suffix}{note}": "{added} adicionadas, {updated} atualizadas{suffix}{note}", "新增脱敏规则": "Adicionar regra de mascaramento", "新增规则": "Adicionar regra", "新安装和升级后默认关闭。先配置再开启,关闭后保留配置。": "Desativado por padrão em novas instalações e atualizações. Configure antes de ativar; desativar mantém a configuração.", "新密码": "Nova senha", "新密码不能与当前密码相同": "A nova senha deve ser diferente da atual", "新密码至少 8 位": "A senha deve ter pelo menos 8 caracteres", "新建分组": "Novo grupo", "新建客户端分类": "Nova categoria de cliente", "无效或重复的标识请求头:{headers}": "Cabeçalhos de identificação inválidos ou duplicados: {headers}", "无法读取品牌设置": "Não foi possível ler as configurações da marca", "无法读取图片,请重新选择": "Não foi possível ler a imagem. Selecione-a novamente.", "日志与请求日志同时受保留天数和数量上限限制。日志默认 30 天、10000 条,各级别按比例保留;调试详情最多保留 3 天。请求日志默认 99999 天、1000000 条(100 万),超出后从最旧的记录开始清理,并同步删除对应原始正文。按天聚合默认 99999 天,只按天数保留,不受请求日志数量清理影响。天数可填 1–99999,数量可填 1–100000000。调小任一设置并确认后立即清理,且不可恢复。": "Logs e logs de requisições são limitados tanto pelos dias de retenção quanto pela quantidade de registros. Os logs têm padrão de 30 dias e 10.000 registros, com capacidade distribuída proporcionalmente por nível; detalhes de depuração são mantidos por no máximo 3 dias. Os logs de requisições têm padrão de 99999 dias e 1.000.000 de registros; o excedente é removido dos mais antigos para os mais novos junto com seus corpos originais. Os agregados diários têm padrão de 99999 dias e são limitados apenas pelos dias; a limpeza por quantidade dos logs de requisições não os afeta. Os dias aceitam 1–99999 e a quantidade aceita 1–100000000. Reduzir qualquer configuração e confirmar remove o excedente imediatamente, sem possibilidade de recuperação.", "日志保留数量上限": "Limite de registros de log", "日志文件": "Arquivo de log", "日语": "japonês", "显示 {name}": "Mostrar {name}", "显示分组 {name}": "Mostrar grupo {name}", "显示名称": "Nome de exibição", "显示名称最多 64 个字符": "O nome de exibição pode ter até 64 caracteres", "显示模式": "Modo de exibição", "显示这一组": "Mostrar este grupo", "暂无可编辑的提供商设置": "Nenhuma configuração de provedor editável", "暂无自定义规则,正在使用内置识别。也可以从请求详情直接添加规则。": "Sem regras personalizadas; a identificação integrada está ativa. Você também pode adicionar regras nos detalhes da requisição.", "暂未获取到本机访问地址,请使用其他设备能连接到的本机 IP 与网关端口。": "O endereço de acesso desta máquina ainda não está disponível. Use o IP desta máquina e a porta do gateway que o outro dispositivo consiga alcançar.", "更新": "Atualizar", "更新出网线路": "Rota de saída da atualização", "更新通道": "Canal de atualização", "替换": "Substituir", "替换 = 客户端 system / developer 消息全部删掉,换成网关的提示词;追加 = 保留客户端内容,只在开头 system 块之后多插一条。两者都只改发给上游的副本,客户端看到的响应不变。": "Substituir = todas as mensagens system / developer do cliente são apagadas e trocadas pelo prompt do gateway; Anexar = o conteúdo do cliente é mantido e apenas um item a mais é inserido depois dos blocos system do início. Os dois alteram somente a cópia enviada ao upstream; a resposta que o cliente vê não muda.", "替换为网关提示词": "Substituir pelo prompt do gateway", "替换内容": "Texto de substituição", "替换内容最多 {max} 个字符": "O texto de substituição deve ter no máximo {max} caracteres", "替换前会自动把当前数据备份到配置目录的 backups/ 文件夹。": "Antes da substituição, os dados atuais são automaticamente backupados na pasta backups/ do diretório de configuração.", "替换并恢复": "Substituir e restaurar", "最多 64 个字符,留空恢复为 Agent2API。": "Até 64 caracteres. Deixe em branco para restaurar Agent2API.", "最小自动上传间隔": "Intervalo mínimo de upload automático", "最近 {window} 条请求中,{scanned} 条有识别依据,{matched} 条符合条件,{applied} 条会采用本规则。": "Das últimas {window} requisições, {scanned} têm evidências, {matched} correspondem e {applied} usariam esta regra.", "有未保存的修改": "Há alterações não salvas", "有未保存的改动:保存后才能同步(测试连接不受影响)。": "Alterações não salvas: salve antes de sincronizar (o teste de conexão não é afetado).", "有近期套餐池请求时读取库存状态的间隔,默认 2500 毫秒,可填 1000–30000。没有近期请求时降低读取频率,轮询不会发起验证码。": "Intervalo de consulta do estoque com solicitações Start Plan recentes: padrão de 2500 ms, entre 1000 e 30000. A frequência diminui quando ocioso e nunca inicia verificação.", "服务商": "Provedor", "服务器地址": "Endereço do servidor", "服务端密钥加密保存,不会返回浏览器;切回 ALTCHA 后会保留,方便再次启用。": "A chave secreta é armazenada criptografada e nunca é devolvida ao navegador. Ela é mantida ao voltar para ALTCHA para facilitar a reativação.", "服务端密钥(Secret Key)": "Chave secreta (Secret Key)", "期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "Enquanto este modo estiver ativo, o prompt próprio dele não é enviado; levante assim que ajustar o seu prompt.", "未保存": "Não salvo", "未匹配已知客户端": "Nenhum cliente conhecido identificado", "未单独配置:模式、提示词文件与正文都跟随上面的全局配置(当前「{mode}」)。": "Sem configuração individual: modo, arquivo de prompt e texto seguem a configuração global acima (no momento, “{mode}”).", "未启用": "Desativado", "未开启轻量模式:关窗仅隐藏窗口,界面进程常驻内存,随时打开不等待": "Modo leve desativado: fechar a janela apenas a oculta, o processo da interface permanece na memória e reabrir é instantâneo", "未开启,developer 角色消息会原样发往上游,不认识该角色的上游会报错(400)。": "Desativado: mensagens com papel developer vão para o upstream como estão; upstreams que não conhecem o papel retornam erro (400).", "未开启,客户端 system 模板会原样发往上游,可能被内容审核误拦(400)。": "Desativado: os templates do system do cliente vão ao upstream como estão e podem ser bloqueados por engano na revisão de conteúdo (400).", "未开启,浏览器跨域无法直连网关。": "Desativado: o navegador não consegue se conectar diretamente ao gateway de outra origem.", "未开启,转发时不保存任何原始报文。": "Desativado: nenhum payload bruto é salvo durante o encaminhamento.", "未开启:网关只监听 127.0.0.1,仅本机可以访问。": "Desativado: o gateway escuta apenas 127.0.0.1 e somente esta máquina pode acessá-lo.", "未注册": "Não registrado", "未注册闸门": "Bloqueio de não registrado", "未知原因": "Motivo desconhecido", "未知来源": "Origem desconhecida", "未知设备": "Dispositivo desconhecido", "未知账号": "Conta desconhecida", "未能读取 Cline 伪装头设置,请稍后重试": "Não foi possível ler as configurações de cabeçalhos spoofed do Cline; tente novamente mais tarde", "未能读取 models.dev 元数据状态,请稍后重试": "Não foi possível ler o estado dos metadados do models.dev. Tente novamente mais tarde.", "未能读取云同步设置,请稍后重试。": "Não foi possível ler as configurações de sincronização na nuvem. Tente novamente mais tarde.", "未能读取保存后的指纹脱敏设置": "Não foi possível ler as configurações de mascaramento salvas", "未能读取开发者角色兼容设置,请稍后重试": "Não foi possível ler a configuração de compatibilidade com papel developer, tente novamente mais tarde", "未能读取指纹脱敏设置,请稍后重试": "Não foi possível ler as configurações de mascaramento de fingerprint; tente novamente mais tarde", "未能读取机器人校验设置": "Não foi possível ler as configurações de verificação de bots", "未能读取第三方模型回答完自动折叠过程设置,请稍后重试": "Não foi possível ler a configuração de recolhimento do trabalho de modelos de terceiros; tente novamente mais tarde", "未能读取系统提示词设置,请稍后重试": "Não foi possível ler as configurações do system prompt; tente novamente mais tarde", "未能读取网关跨域访问设置,请稍后重试": "Não foi possível ler as configurações de CORS do gateway; tente novamente mais tarde", "未能读取网络访问设置,请稍后重试": "Não foi possível carregar as configurações de acesso pela rede. Tente novamente mais tarde.", "未能读取调试模式设置,请稍后重试": "Não foi possível ler as configurações do modo debug; tente novamente mais tarde", "未能读取账户信息,请稍后重试": "Não foi possível ler as informações da conta. Tente novamente mais tarde", "未采用本规则,请检查开关、来源声明或规则顺序": "Esta regra não foi usada. Verifique a ativação, as declarações de origem ou a ordem das regras.", "本地账号、配置、签到与余额记录变化后自动上传(合并 1 秒内的连续改动,最长 10 秒传一次;内容没变时不发请求)。": "Envia automaticamente após alterações locais em contas, configuração, check-in e registros de saldo (alterações em até 1 segundo são agrupadas, no máximo um envio a cada 10 segundos; nenhuma requisição é feita se nada mudou).", "本机 API 地址": "Endereço da API deste dispositivo", "本机 APK 版本": "Versão do APK neste aparelho", "本机全部数据会被备份整体替换,恢复前自动保留安全备份,完成后需要重新登录管理面板。本机已有密钥不会被覆盖。": "Todos os dados do banco local serão substituídos pelo backup. Um backup de segurança é salvo antes, e será preciso entrar novamente. As chaves locais existentes não serão sobrescritas.", "本机应用版本": "Versão do app neste aparelho", "本机界面版本": "Versão da interface neste aparelho", "本机的业务数据(账号、配置、Agent 配置、代理池 / 订阅、签到与余额记录)将上传并": "Os dados de negócio desta máquina (contas, configuração, perfis do Agent, pool de proxies / assinaturas, registros de check-in e saldo) serão enviados e", "本机的全部数据(账号、网关配置、日志统计与桌面设置)将被所选备份文件": "Todos os dados desta máquina (contas, configuração do gateway, estatísticas de logs e configurações do desktop) serão ", "本机的账号、网关配置、Agent 配置、代理池 / 订阅、签到与余额记录将被远端快照": "As contas, a configuração do gateway, os perfis do Agent, o pool de proxies / assinaturas e os registros de check-in e saldo desta máquina serão substituídos pelo snapshot remoto", "本次无需刷新": "Nenhuma atualização necessária desta vez", "本软件不提供任何担保,可按 AGPL-3.0 修改与分发;通过网络提供修改版服务时须向用户提供对应源码。": "Este software não oferece garantia e pode ser modificado e distribuído sob AGPL-3.0. Serviços de rede modificados devem oferecer aos usuários o código-fonte correspondente.", "本项目的 AGPL-3.0 许可不替代这些第三方许可。名称与标识的商标权归各自权利人所有。": "A licença AGPL-3.0 deste projeto não substitui estas licenças de terceiros. Os direitos de marca sobre nomes e logotipos pertencem aos respectivos titulares.", "机器人校验": "Captcha", "机器人校验设置已保存": "Configurações de verificação de bots salvas", "条数": "Quantidade de registros", "来源声明当前关闭,这条规则不会生效。请先在客户端识别设置中开启。": "As declarações de origem estão desativadas; esta regra não será aplicada. Ative-as nas configurações de identificação.", "来源声明无效或未登记,本次已忽略。": "A declaração de origem é inválida ou não registrada e foi ignorada.", "来源声明未启用,本次已忽略。": "As declarações de origem estão desativadas e foram ignoradas.", "来源版本": "Revisão de origem", "来源设备:{device}": "Dispositivo de origem: {device}", "来自 {device},生成于 {time}": "De {device}, criado em {time}", "架构": "Arquitetura", "查看内置客户端({n})": "Ver clientes integrados ({n})", "查询管理员状态失败:{message}": "Falha ao consultar o status do administrador: {message}", "校验身份:这三段必须各自成块排在最前(实测:三段并成一段会被回 405 / 3012)。因此这里按段编辑,不能合成一段。改过的段以你的文本为准,没改的段继续用官方原文;清空某一段 = 那一段恢复官方原文。": ": os três blocos precisam vir no início, cada um como um bloco separado (testado: três blocos fundidos em um só retornam 405 / 3012). Por isso a edição aqui é por bloco — não é possível fundi-los. Blocos alterados usam o seu texto; os não alterados continuam com o texto oficial; limpar um bloco = aquele bloco volta ao texto oficial.", "桌面端": "Aplicativo desktop", "桌面端登录 / 注册验证": "Verificação de login / cadastro no desktop", "桌面端:登录 / 注册需要 ALTCHA 人机验证": "Desktop: login / registro exige verificação ALTCHA", "桌面端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "Desktop: login / registro exige verificação ALTCHA (em uso agora)", "桌面运行时不可用,暂时无法保存": "Runtime do desktop indisponível; não é possível salvar agora", "档案": "Perfil", "检测中…": "Verificando…", "概览": "Visão geral", "模型不能直接看图时,按你选择的方式处理。原生支持图片的请求直接转发,不增加识图调用。": "Quando o modelo não puder ler imagens, use o modo escolhido. Solicitações a modelos com suporte nativo seguem diretamente, sem uma chamada visual extra.", "模型单独配置": "Configuração por modelo", "模型目录没写明是否支持图片时按这里处理。": "Usado quando o catálogo não informa se o modelo aceita imagens.", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。下面两块分别选好「哪些模型」和「用哪只模型」即可;没配到的模型、以及本来就能看图的模型,一律原样放行。这里的改动立即生效,不需要保存。": "Um modelo que não consegue ler imagens tem apenas duas saídas: deixar outro modelo ler a imagem por ele, ou entregar a requisição inteira a um modelo que consiga. Escolha os modelos e o modelo de visão nos dois blocos abaixo. O que não estiver aqui — inclusive modelos que já leem imagens — passa sem alteração. As mudanças aqui valem na hora; não há nada a salvar.", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。没配到的模型、以及本来就能看图的模型,一律原样放行;每个请求只用其中一种方式,不会两种串着做,处理失败也不会改走另一种。改动立即生效,不需要保存。": "Um modelo que não consegue ler imagens tem apenas duas saídas: deixar outro modelo ler a imagem por ele, ou entregar a requisição inteira a um modelo que consiga. O que não estiver aqui — inclusive modelos que já leem imagens — passa sem alteração. Cada requisição usa apenas uma das duas formas; elas nunca se encadeiam e uma falha não cai na outra. As mudanças aqui valem na hora; não há nada a salvar.", "模型请求是否需要验证码由 ZCode 上游配置决定,领取验证与模型请求免验证分别处理。后台只检查配置和库存,不自动运行验证码或弹出拼图;需要验证时,在账号的「套餐明细」中点击「开始验证」。验证令牌一次性使用,短时间内过期,失败或取消后不会自动重试。": "As configurações do provedor ZCode determinam se o modelo exige verificação, separadamente do resgate de planos. O processo em segundo plano só consulta configurações e estoque; nunca executa verificação nem abre um quebra-cabeça automaticamente. Inicie-a nos detalhes do plano da conta. Tokens são de uso único, expiram rapidamente e não são repetidos após falha ou cancelamento.", "模式": "Modo", "模式改为「{mode}」": "Modo alterado para “{mode}”", "次": "vezes", "次日 00:00": "00:00 do dia seguinte", "正则表达式": "Expressão regular", "正在保存上游原始报文:": "Salvando payloads brutos do upstream:", "正在修改…": "Alterando…", "正在剥离出站请求里的审核指纹:表头键值整段删除,模板句最小改写。": "Removendo os fingerprints de revisão das requisições de saída: pares chave/valor de cabeçalho excluídos por completo, frases de template com reescrita mínima.", "正在安装…": "Instalando…", "正在应答跨源请求:浏览器跨域请求可直连 /v1/*。": "Respondendo a requisições de outra origem: requisições de navegador com CORS podem se conectar diretamente a /v1/*.", "正在归一角色:developer 角色消息转发前改写为 system。": "Normalizando papéis: mensagens com papel developer são reescritas para system antes do encaminhamento.", "正在注册…": "Registrando…", "正在联网更新": "Atualizando online", "正在读取提供商设置…": "Carregando configurações de provedores…", "正式版": "Estável", "每个请求只会用到其中一种方式,不会两种串着做;处理失败也不会改走另一种。配了哪只视觉模型,那次请求的图片就会交给它。": "Cada requisição usa apenas uma das duas formas; elas nunca se encadeiam e uma falha não cai na outra. O modelo de visão configurado é quem recebe as imagens daquela requisição.", "每条请求轮换到下一个可用账号;新会话交给当前最闲的那位。适合想把手里的号摊开用、不让某一个一直扛。": "Alterna para a próxima conta utilizável a cada requisição; uma sessão nova vai para quem estiver mais livre. Para distribuir o uso entre as contas em vez de deixar uma carregar tudo.", "每条请求都重新按策略选路 —— 行为与「关闭」一致,仅保留会话识别的记录。": "Cada requisição é roteada pela estratégia do zero — mesmo comportamento de \"Desligado\", apenas os registros de sessão são mantidos.", "每次等待的时长,默认 0 = 跟随上游建议(实测 9~30 秒,上游没给建议时用 15 秒)。可填 0–120 秒强制一个固定时长。": "Duração de cada espera; padrão 0 = seguir a sugestão do upstream (medido: 9~30 segundos; quando o upstream não sugere nada, usa 15 segundos). Aceita 0–120 segundos para forçar uma duração fixa.", "每行一个域名,不填协议、端口或路径;与 Cloudflare 中的配置一致,服务端按完整域名匹配。手机 App 使用所连接网关的域名。": "Informe um hostname por linha, sem protocolo, porta ou caminho. Use os mesmos valores da Cloudflare; o servidor exige correspondência exata. O aplicativo móvel usa o hostname do gateway conectado.", "毫秒": "ms", "沟通方式 / 上下文管理 + Environment 段。": "O bloco de estilo de comunicação / gestão de contexto + Environment.", "没有可导出的账号": "Não há contas para exportar", "没有可用视觉模型时": "Quando não houver modelo de visão disponível", "没有已确认支持图片的模型,请先在模型管理中确认。": "Nenhum modelo tem suporte a imagens confirmado. Confirme a capacidade em Gerenciamento de Modelos primeiro.", "没能读到「{label}」的当前值,改为 {count} 条可能会删除超出的历史数据。": "Não foi possível ler o valor atual de “{label}”. Definir {count} registros pode excluir os dados históricos excedentes.", "没能读到「{label}」的当前值,改为 {days} 天可能会删除超出的历史数据。": "Não foi possível ler o valor atual de “{label}”; mudar para {days} dias pode excluir dados históricos excedentes.", "沿用对应方式的视觉模型配置,不额外维护一份模型列表。": "Reutiliza a configuração visual desse modo, sem manter outra lista de modelos.", "沿用工具服务的视觉分析模型": "Reutilizar o modelo de análise visual do serviço de ferramentas", "沿用工具服务的视觉分析模型(未配置)": "Modelo de visão do serviço de ferramentas (não configurado)", "注册并开启": "Registrar e ativar", "注册管理员账号": "Registrar conta de administrador", "注意:这一家的「网关自带」开关现在是关的,改过的正文要等开关打开才生效。": "Atenção: o switch “Interno do gateway” deste provedor está desativado; o texto alterado só passa a valer quando o switch for ativado.", "流式响应相邻数据之间允许的最大空闲时间(秒),收到新数据后重新计时,默认 300 秒,范围 1~3600。": "Tempo máximo de inatividade permitido entre dados adjacentes de uma resposta em streaming (segundos), com a contagem reiniciada a cada novo dado recebido; padrão 300 segundos, faixa 1~3600.", "流式响应空闲超时": "Timeout de inatividade do streaming", "测试连接": "Testar conexão", "浏览器 / PWA": "Navegador / PWA", "浏览器只在 https 或 localhost 下提供离线缓存;局域网 http 访问不影响正常使用": "Os navegadores só oferecem cache offline em https ou localhost. O acesso por http na LAN continua funcionando normalmente.", "浏览器在本地完成计算,不需要第三方密钥,也不依赖外部验证服务。": "O navegador faz o cálculo localmente. Não exige chaves de terceiros nem serviços externos de verificação.", "浏览器标签页": "Aba do navegador", "浏览器面板": "Painel no navegador", "消息角色": "Papéis das mensagens", "添加备选模型": "Adicionar modelo alternativo", "添加提供商": "Adicionar provedor", "添加提供商…": "Adicionar provedor…", "添加自定义头": "Adicionar cabeçalho personalizado", "添加要单独配置的提供商": "Adicionar provedor para configurar individualmente", "清除本机凭证": "Limpar credenciais locais", "清除这里的正文": "Limpar o texto deste campo", "源代码": "Código-fonte", "点下面的入口会用系统默认浏览器打开 GitHub 的对应表单(需要 GitHub 账号,模板已预设好,填完直接提交即可)。": "Os atalhos abaixo abrem o formulário correspondente no GitHub usando o navegador padrão do sistema (é preciso ter uma conta GitHub; o template já vem preenchido, basta completar e enviar).", "点击重命名": "Clique para renomear", "点此添加或切换服务器": "Toque para adicionar ou trocar de servidor", "点此添加服务器": "Toque para adicionar um servidor", "版本": "Versão", "版本信息": "Informações de versão", "版本信息 · 所连网关环境": "Informações de versão · gateway conectado", "版权声明": "Aviso de copyright", "状态码 {code} 已在名单里": "O status code {code} já está na lista", "状态码必须是 {min}–{max} 的整数(收到: {text})": "O status code deve ser um número inteiro de {min}–{max} (recebido: {text})", "环境": "Ambiente", "生成时间:{time}": "Criado em: {time}", "生效顺序:有效的来源声明优先,然后按顺序匹配自定义规则,最后使用内置规则。中转丢失原始标识时,无法自动推断背后的软件。": "Prioridade: declaração válida, regras personalizadas em ordem e regras integradas. Se um intermediário remover o identificador original, não será possível inferir automaticamente o software de origem.", "用 models.dev 补齐上游没声明的模型能力与思考档位(联网刷新,内嵌快照始终生效)": "Preenche capacidades e níveis de raciocínio que o upstream não declara, usando o models.dev (atualização online; o snapshot embutido sempre vale)", "用于加密上云的账号密钥。请自己记牢 —— 它不保存到云端,换机下载时必须输入同一个密码,否则账号数据无法解密。": "Usada para criptografar a chave da conta enviada à nuvem. Memorize-a — ela não é armazenada na nuvem e você precisa digitar a mesma senha ao restaurar em outra máquina, caso contrário os dados das contas não poderão ser descriptografados.", "用哪只模型识图": "Qual modelo lê a imagem", "用浏览器菜单里的「添加到主屏幕」把这一页装成 App:全屏打开、没有地址栏,和原生应用一样。": "Use \"Adicionar à Tela de Início\" no menu do navegador para instalar esta página como app: tela cheia, sem barra de endereço, igual a um app nativo.", "由 Cloudflare 提供验证,需要浏览器与网关均能连接 Cloudflare。验证失败或服务不可用时不会自动放行。": "A verificação é fornecida pela Cloudflare. O navegador e o gateway precisam acessar a Cloudflare. Uma falha na verificação ou indisponibilidade do serviço não libera o acesso.", "由 {source} 覆盖,手动设置暂不生效": "Substituído por {source}; a configuração manual não está ativa no momento", "界面缩放": "Zoom da interface", "界面缩放比例": "Nível de zoom da interface", "界面语言": "Idioma da interface", "界面语言。可选简体中文、繁體中文、English、日本語、한국어、Português (Brasil),或「跟随系统」(按浏览器 / 系统的语言列表自动选)。切换后整页立即刷新;该偏好只存在本机(localStorage),不影响账号、密钥与转发。": "Idioma da interface. Opções: 简体中文, 繁體中文, English, 日本語, 한국어, Português (Brasil), ou “Sistema” (seleção automática pela lista de idiomas do navegador / sistema). Após a troca, a página inteira é atualizada na hora; essa preferência fica apenas nesta máquina (localStorage) e não afeta contas, chaves nem o encaminhamento.", "界面语言只保存在本机(localStorage)。切换后整页立即刷新,不影响账号、密钥与转发。": "O idioma da interface fica salvo apenas nesta máquina (localStorage). Após a troca, a página inteira é atualizada na hora; não afeta contas, chaves nem o encaminhamento.", "界面里编辑的正文": "Texto editado na interface", "留空 = 用内置默认提示词": "Vazio = usar o system prompt padrão integrado", "留空使用 AWS 官方地址": "Deixe em branco para usar o endereço oficial da AWS", "留空使用默认": "Deixe em branco para usar o padrão", "留空表示删除匹配内容;替换内容按原文写入,$ 不作为捕获组引用。": "Deixe vazio para excluir o texto correspondente. A substituição é inserida literalmente; $ não referencia grupos de captura.", "登录 / 注册需要通过 ALTCHA 人机验证(工作量证明)": "Login / registro exigem a verificação humana ALTCHA (proof of work)", "登录 / 账号切换 / 429 切换等系统事件,可填 1–3650 天。": "Eventos do sistema como login / troca de conta / troca por 429; intervalo de 1–3650 dias.", "登录 / 账号切换 / 429 切换等系统事件,可填 1–99999 天。": "Eventos de sistema como login, troca de conta e switch 429. Aceita de 1 a 99999 dias.", "登录 Agent2API": "Entrar no Agent2API", "登录 {name}": "Entrar em {name}", "登录人机验证": "CAPTCHA de login", "百分比类读数(如 OpenCode Go、Antigravity)不能相加,组头显示的是组内最低剩余比例。": "Leituras percentuais (como OpenCode Go ou Antigravity) não podem ser somadas; a faixa mostra a menor porcentagem restante do grupo.", "监听地址": "Endereço de escuta", "目前展示仓库已登记的图标来源许可,不代表完整的第三方依赖清单。": "Esta lista contém as licenças das fontes de ícones atualmente registradas no repositório, não um inventário completo das dependências de terceiros.", "目标路径:{path}": "Caminho de destino: {path}", "直接按上面的设置兼容": "Aplicar as configurações acima direto", "直接按当前方式兼容": "Aplicar diretamente o modo selecionado", "知道了": "Entendi", "确定": "Confirmar", "确定后加入当前草稿,点击「保存设置」才会生效。": "Confirmar adiciona a regra ao rascunho. Clique em Salvar configurações para aplicá-la.", "确定继续?": "Confirmar e continuar?", "确认上传": "Confirmar envio", "确认图片处理授权": "Confirmar autorização para processar imagens", "确认备份密码": "Confirmar senha do backup", "确认并保存": "Confirmar e salvar", "确认新密码": "Confirmar nova senha", "确认缩减数据保留": "Confirmar redução da retenção de dados", "确认缩短保留天数": "Confirmar a redução dos dias de retenção", "社区与支持": "Comunidade e suporte", "离线缓存未启用": "O cache offline está desativado", "积分合计只统计当前筛选出来的账号": "Somar apenas as contas visíveis no filtro atual", "移入「{name}」": "Mover para \"{name}\"", "程序路径": "Caminho do executável", "空 = 不要这一份,回落提示词文件 / 内置默认提示词。": "Vazio = não usar este texto e voltar para o arquivo de prompt / system prompt padrão integrado.", "空分组 · 点组头的 + 把菜单移进来": "Grupo vazio · use + no cabeçalho para mover menus", "立即解除": "Encerrar agora", "站点密钥(Site Key)": "Chave do site (Site Key)", "第一段": "Primeiro bloco", "第一段(身份句)": "Primeiro bloco (frase de identidade)", "第三方应用密码": "Senha de aplicativo", "第三方开源许可": "Licenças de código aberto de terceiros", "第三方模型回答完自动折叠过程": "Recolher automaticamente o trabalho de modelos de terceiros após a resposta", "第三方模型回答完自动折叠过程设置已刷新": "Configuração de recolhimento do trabalho de modelos de terceiros atualizada", "第三段": "Terceiro bloco", "第三段(动态段)": "Terceiro bloco (dinâmico)", "第二段": "Segundo bloco", "第二段(稳定段)": "Segundo bloco (estável)", "等待响应超时": "Timeout de espera de resposta", "等待期间请求日志的状态列会显示「排队中」阶段,详情弹窗的「内部重试」里能逐次看到等待时长;等待用尽后返回 HTTP 503(不是 401/429:既不会刷新凭证,也不会把账号标成限额)。": "Durante a espera, a coluna de status dos logs de requisições mostra a fase “Na fila”, e o diálogo de detalhes, em “Retries internos”, mostra a duração de cada espera uma a uma; quando as esperas se esgotam, é retornado HTTP 503 (não 401/429: nem atualiza credenciais, nem marca a conta como limitada).", "等比放大或缩小整个界面(文字、控件、间距一起变),效果与浏览器按 Ctrl +/- 相同:80%–130%、5% 一档。窗口本身不缩放,变的是页面内容的显示比例,设置立即生效并记住,下次启动直接按这个比例打开。放得越大可视范围越小,窗口较窄或表格较宽时不建议调得太大。": "Amplia ou reduz a interface inteira proporcionalmente (texto, controles e espaçamentos juntos), com o mesmo efeito de Ctrl +/- no navegador: 80%–130%, em passos de 5%. A janela em si não é redimensionada; o que muda é a proporção de exibição do conteúdo da página. A configuração vale imediatamente e é memorizada, e a próxima inicialização já abre nesta proporção. Quanto maior o zoom, menor a área visível; com janelas estreitas ou tabelas largas, não é recomendável aumentá-lo demais.", "简体中文": "chinês simplificado", "管理员已注册": "Administrador registrado", "管理员账号": "Conta de administrador", "管理插件": "Gerenciar plugins", "精确文本": "Texto exato", "系统提示词模式": "Modo do system prompt", "系统提示词设置已刷新": "Configurações do system prompt atualizadas", "累计请求": "Requisições totais", "繁体中文": "chinês tradicional", "约 {n} 字符": "cerca de {n} caracteres", "结构": "estrutura", "给 Codex 的响应补阶段标记,回答完后像官方模型一样把推理与命令过程折叠起来": "Adicionar marcadores de fase às respostas do Codex para recolher o raciocínio e os comandos após a resposta, como nos modelos oficiais", "继续并清理": "Continuar e limpar", "编辑提示词正文 · {label}": "Editar o texto do prompt · {label}", "编辑提示词正文 · 全局": "Editar o texto do prompt · Global", "编辑正文": "Editar texto", "编辑网关自带提示词 · {label}": "Editar o system prompt interno do gateway · {label}", "编辑脱敏规则": "Editar regra de mascaramento", "编辑识别规则": "Editar regra de identificação", "缩放后重新存成 JPEG 时用的质量。默认 80,可填 40–95;数值越小体积越小、画质越差。": "Qualidade JPEG usada ao recodificar a imagem reduzida. Padrão 80, faixa 40–95; menor significa arquivo menor e qualidade pior.", "缩放比例": "Nível de zoom", "网关": "Gateway", "网关 Key 数量": "Quantidade de chaves do gateway", "网关尚未就绪": "O gateway ainda não está pronto", "网关自带": "Interno do gateway", "网关跨域访问已开启": "CORS do gateway ativado", "网关跨域访问设置已刷新": "Configurações de CORS do gateway atualizadas", "网关跨域访问(CORS)": "Acesso de outra origem ao gateway (CORS)", "网关面(/v1/*)默认不应答浏览器跨源请求:页面直连会被预检拦下,只报「无法连接 API」。注意来源是 * —— 未配「网关 Key」时任何网页都能借本机网关打上游,故默认关闭;只给自己用的话,让页面与网关同源(本地反代 /v1)更稳妥。面板接口(/api/*)不受影响。": "A API do gateway (/v1/*) não responde por padrão a requisições de outra origem feitas por navegador: a conexão direta da página é barrada no preflight e só mostra “não foi possível conectar à API”. Atenção: a origem é * — sem uma “Chave do gateway” configurada, qualquer página pode usar o gateway local para atingir o upstream; por isso o padrão é desativado. Se for só para você, é mais seguro deixar a página e o gateway na mesma origem (proxy reverso local em /v1). A API do painel (/api/*) não é afetada.", "网络访问": "Acesso pela rede", "网页端": "Web", "网页端登录 / 注册验证": "Verificação de login / cadastro na web", "网页端的界面缩放由浏览器自己控制(Ctrl + / Ctrl -,或浏览器菜单里的缩放),此项不可调。": "No painel web, o zoom da interface é controlado pelo próprio navegador (Ctrl + / Ctrl -, ou o zoom no menu do navegador); esta opção não pode ser ajustada.", "网页端:登录 / 注册需要 ALTCHA 人机验证": "Web: login / registro exige verificação ALTCHA", "网页端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "Web: login / registro exige verificação ALTCHA (em uso agora)", "网页管理地址": "Endereço do painel web", "群晖 NAS": "Synology NAS", "群晖需在「控制面板 → 应用程序门户 → WebDAV」里启用服务,端口默认 5005(HTTP)/ 5006(HTTPS)。": "No Synology, ative o serviço em Painel de Controle → Portal de Aplicativos → WebDAV; as portas padrão são 5005 (HTTP) / 5006 (HTTPS).", "脱敏词表": "Regras de mascaramento", "腾讯云 COS": "Tencent Cloud COS", "自动同步": "Sincronização automática", "自动同步上次失败": "A última sincronização automática falhou", "自动续写": "Continuação automática", "自定义 User-Agent": "User-Agent personalizado", "自定义 · {name}": "Personalizado · {name}", "自定义头匹配规则": "Regras de cabeçalho personalizadas", "自定义客户端分类": "Categorias de clientes personalizadas", "自定义客户端数量已达上限": "Limite de clientes personalizados atingido", "自定义提供商 {id}": "Provedor personalizado {id}", "自定义网站和应用界面中显示的名称与 Logo。": "Personalize o nome e o logo exibidos no site e na interface do aplicativo.", "自定义识别规则": "Regras de identificação personalizadas", "自愈保护": "Proteções de autorrecuperação", "至少 12 位": "Ao menos 12 caracteres", "至少 8 位,换机下载时需要": "Pelo menos 8 caracteres; necessário ao restaurar em outra máquina", "至少要保留一个分组": "Pelo menos um grupo deve permanecer", "英语": "inglês", "范围 5–120 秒,并受原请求时限约束。": "Faixa de 5 a 120 segundos, também limitada pelo tempo da requisição original.", "范围为 5–120 秒,并受原请求时限约束。图片过大、格式错误或下载失败不会被当作模型不支持图片。": "Intervalo permitido: 5–120 segundos, limitado também pelo tempo da solicitação original. Imagens grandes, formatos inválidos e falhas de download não são tratados como falta de suporte a imagens.", "被更高优先级覆盖": "Substituída por prioridade superior", "装上{size}的官方身份提示词": "Instalar o system prompt de identidade oficial ({size})", "装成 App 后从桌面图标直接进入:全屏打开、没有地址栏。": "Instalado como app, ele abre direto pelo ícone da tela inicial: em tela cheia, sem barra de endereço.", "覆盖": "sobrescrever", "规则 / 匹配方式": "Regra / tipo de correspondência", "规则可以增删改、启停和调整顺序;替换内容留空表示删除匹配内容。恢复默认只重置词表,不改开关和提供商范围。": "Adicione, edite, exclua, ative, desative e reordene regras. A substituição vazia exclui o texto correspondente. Restaurar o padrão redefine apenas as regras, sem alterar o interruptor nem o escopo de provedores.", "规则名称": "Nome da regra", "规则名称不能为空,且最多 {max} 个字符": "O nome da regra é obrigatório e deve ter no máximo {max} caracteres", "规则已保存,对后续请求生效;当前历史记录未修改。": "Regra salva para requisições futuras. Este registro histórico não foi alterado.", "规则忽略大小写,只影响新请求的日志与统计,不改变模型选择或权限。": "As regras ignoram maiúsculas e minúsculas e afetam apenas logs e estatísticas de novas requisições, sem alterar modelos ou permissões.", "规则编号:{id}": "ID da regra: {id}", "视觉模型": "Modelo de visão", "视觉模型先识读图片,再由原模型分析和回答。": "Um modelo de visão lê as imagens primeiro; depois, o modelo original analisa e responde.", "视觉模型来源": "Origem do modelo de visão", "视觉模型的思考等级": "Nível de raciocínio do modelo de visão", "视觉模型直接回答": "O modelo de visão responde diretamente", "视觉模型识读图片": "O modelo de visão lê as imagens", "解码后小于这个体积的图片保持原样。默认 512KB,可填 0–10240;填 0 表示所有内嵌图片都过一遍。": "Imagens menores que este tamanho após a decodificação são mantidas como estão. Padrão 512KB, faixa 0–10240; 0 processa todas as imagens embutidas.", "解除失败:{message}": "Falha ao encerrar: {message}", "触发阈值": "Limite de acionamento", "计数": "Contagens", "计量单位": "Notação numérica", "让 Codex 在收到最终答案后收起中间过程。仅为严格识别的 Codex Responses 请求补阶段标记,报表归类和来源声明不影响此判断。正常结束且没有工具调用的非空回答才补 final_answer,工具调用前的说明补 commentary;错误、截断、缺少结束信号或未知结束原因不补最终答案标记。默认关闭,不改变回答文字,也不减少模型思考或用量。": "Permite que o Codex recolha o trabalho intermediário após a resposta final. Os marcadores de fase são adicionados somente a requisições Responses identificadas estritamente como Codex, independentemente das categorias dos relatórios ou das declarações do cliente. Apenas respostas não vazias, concluídas normalmente e sem chamadas de ferramentas recebem final_answer; explicações antes das chamadas recebem commentary. Erros, truncamento, ausência de sinal de conclusão e motivos de término desconhecidos não recebem marcador de resposta final. Desativado por padrão; não altera o texto, o raciocínio do modelo nem o consumo.", "许可原文": "Texto original da licença", "许可原文已随软件内置,无需联网即可查看;打开项目来源链接需要联网。": "Os textos das licenças estão incluídos no aplicativo e podem ser consultados offline. Abrir os links de origem dos projetos requer conexão com a internet.", "许可核对版本": "Revisão usada para verificar a licença", "设置不可隐藏(隐藏了只能清缓存找回来)": "\"Configurações\" não pode ser ocultado (seria preciso limpar o armazenamento para recuperá-lo)", "设置备份密码": "Definir senha do backup", "设置识别规则": "Definir regra de identificação", "访问时请使用目标设备能连接到的地址;这里显示的本机地址不代表公网可达。": "Use um endereço alcançável pelo dispositivo que vai se conectar. O endereço local exibido aqui não garante acesso pela internet.", "识别依据": "Evidência de identificação", "识别规则数量已达上限": "Limite de regras de identificação atingido", "词表为空,不会改写任何指纹。可以新增规则或恢复默认词表。": "A lista está vazia; nenhum fingerprint será alterado. Adicione uma regra ou restaure o padrão.", "该提供商暂无可编辑的专属设置": "Este provedor não tem configurações editáveis", "详细日志": "Logs detalhados", "语言设置": "Configurações de idioma", "请先保存设置再同步": "Salve as configurações antes de sincronizar", "请先在 Cloudflare 创建 Turnstile 组件,建议选择 Managed 模式,并添加面板实际使用的域名。": "Primeiro crie um widget Turnstile na Cloudflare. Recomendamos o modo Managed. Adicione os domínios usados para acessar o painel.", "请填一个分组名": "Informe um nome de grupo", "请填写管理员账号(64 字符以内)": "Preencha a conta de administrador (até 64 caracteres)", "请求发出后等待上游响应头的最大时间(秒),默认 300 秒,范围 1~3600。": "Tempo máximo de espera pelos cabeçalhos de resposta do upstream após o envio da requisição (segundos), padrão 300 segundos, faixa 1~3600.", "请求带有不同软件的标识,未自动归类;可用自定义规则明确归属。": "A requisição contém identificadores de aplicativos diferentes e não foi classificada automaticamente. Use uma regra personalizada para atribuí-la.", "请求提供商 / 模型支持": "Solicitar suporte a provedor / modelo", "请求日志保留天数": "Retenção dos logs de requisições (dias)", "请求日志保留数量上限": "Limite de registros de requisições", "请求记录": "Registros de requisições", "请求超时": "Timeout de requisição", "请求转发到上游失败时(服务器瞬时错误、连接失败,以及 WorkBuddy 的 11-128 敏感词拦截),网关会等一段间隔后再发一次。次数分两档,管的是两件事:①「同一账号重试次数」在同一账号上原地重发几次 —— 一般是提示词被上游拦截、或链路瞬时抖动,等一会儿重发往往就好了;②「切换账号重试次数」这份请求最多再换几个账号试 —— 首发的那个账号不算,每换一个扣一次,不分是不是同一家(换到同一家的下一个账号也算一次),换满还失败就把错误返回给客户端。两项都设为 0 表示失败不重试、直接报错。注意账号级限额(429)不占这里的换号次数 —— 那类失败走「冷却该账号并换下一个账号」的降级,与这里的重试是两条路。另有「指定错误码直接换号」名单(默认 402):命中名单的上游状态码不在同一账号重发,直接按队列换下一个账号继续试(换号也占「切换账号重试次数」),换满仍失败才把错误返回给客户端。": "Quando o encaminhamento ao upstream falha (erro momentâneo do servidor, falha de conexão e bloqueio por palavra sensível 11-128 do WorkBuddy), o gateway espera um intervalo e envia de novo. As tentativas se dividem em duas opções, que tratam de duas coisas: ① “Retries na mesma conta” — quantas vezes reenviar na própria conta; normalmente é o prompt bloqueado pelo upstream ou uma oscilação momentânea do link, e reenviar depois de um tempo costuma resolver; ② “Retries trocando de conta” — por quantas contas a mais esta requisição pode tentar; a conta do primeiro envio não conta, cada troca desconta uma, independentemente de ser o mesmo provedor (trocar para a conta seguinte do mesmo provedor também conta), e se o limite se esgotar com falha, o erro é retornado ao cliente. Definir ambas como 0 significa não tentar de novo em caso de falha e retornar o erro direto. Atenção: o limite no nível da conta (429) não consome as trocas de conta daqui — esse tipo de falha segue o fallback de “esfriar a conta e passar para a próxima”, um caminho diferente do retry daqui. Existe ainda a lista de “Troca de conta direta em códigos de erro especificados” (padrão 402): falhas que correspondem aos status codes do upstream da lista não são reenviadas na mesma conta — o gateway passa direto para a próxima conta da fila e continua tentando (a troca também consome “Retries trocando de conta”), e só quando elas se esgotam com falha é que o erro é retornado ao cliente.", "请求重试": "Retry de requisições", "请至少选择一个提供商": "Selecione pelo menos um provedor", "请输入同步密码": "Digite a senha de sincronização", "请输入当前密码": "Digite a senha atual", "请输入服务端密钥": "Digite a chave secreta", "请选择可用的标识请求头": "Selecione um cabeçalho de identificação disponível", "请选择归属客户端": "Selecione o cliente de destino", "读取云同步设置失败:{message}": "Falha ao ler as configurações de sincronização na nuvem: {message}", "读取失败:{message}": "Falha ao ler: {message}", "读取完整非流式响应体允许的最大时间(秒),默认 300 秒,范围 1~3600。": "Tempo máximo permitido para ler o corpo completo de uma resposta não streaming (segundos), padrão 300 segundos, faixa 1~3600.", "读取网关信息失败:{message}": "Falha ao ler as informações do gateway: {message}", "读取远端…": "Lendo o remoto…", "读取远端信息失败:{message}": "Falha ao ler as informações remotas: {message}", "调用方声明": "Declaração do solicitante", "调试报文": "Payloads de debug", "调试模式": "Modo de depuração", "调试模式设置已刷新": "Configurações do modo debug atualizadas", "负载均衡": "Balanceamento de carga", "账号列表": "Lista de contas", "账号导入 / 导出": "Importar / exportar contas", "账号路由": "Roteamento de contas", "账号页表格的两项显示偏好,只存在本机(localStorage),不影响账号数据与转发。「积分合计只统计当前筛选出来的账号」:账号页每一家的分组带右侧有一枚「可用合计」,默认按整组求和 —— 不受筛选、搜索影响,被筛掉的账号也计入(余额是资产,禁用也只表示不参与转发,额度仍在账上)。打开这一项后改为只累加当前可见的行:例如筛出 1 个 100 积分的账号,合计就是 100,而不是同组两个账号之和 1,000。分页不参与这个口径 —— 翻页看的是同一份结果的不同屏,合计不随页码变化。「隐藏账号名」与表头「账号」旁边那颗眼睛是同一个开关:打开后账号列的名字整体显示成星号,适合截图分享时遮挡账号。": "Duas preferências de exibição da tabela de contas. Ficam apenas nesta máquina (localStorage) e não afetam dados de conta nem o encaminhamento. \"Somar apenas as contas visíveis no filtro atual\": cada faixa de provedor na página de contas mostra um selo \"Total disponível\" e, por padrão, ele soma o grupo inteiro — filtros e busca não o alteram, e contas filtradas ainda contam (saldo é ativo; desativar apenas mantém a conta fora do encaminhamento, o crédito permanece). Ative para somar apenas as linhas visíveis: filtre até uma conta com 100 créditos e o total mostra 100, não 1.000 (a soma das duas contas do grupo). A paginação não participa desta regra — páginas são apenas telas diferentes do mesmo resultado, então o total não muda ao virar páginas. \"Ocultar nomes das contas\" é o mesmo botão do olho ao lado do cabeçalho \"Conta\": quando ativado, os nomes na coluna de contas aparecem como asteriscos, útil para capturas de tela.", "账户": "Conta", "超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件。把天数改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。可填范围为 1–3650 天。请求日志 / 按天聚合 / 签到记录已全量保留、不再自动删除,要清历史请到对应页面手动清空。": "Qualquer coisa além do período de retenção é excluída: os logs de eventos são eventos do sistema, como login, troca de conta e switch 429. Diminuir o valor (por exemplo, de 30 para 7 dias) e salvar exclui imediatamente os dados históricos excedentes, e isso não pode ser desfeito; aumentar ou manter o valor não exclui nada. O intervalo permitido é de 1–3650 dias. Logs de requisições, agregados diários e registros de check-in agora são mantidos integralmente e nunca excluídos automaticamente; para limpar o histórico, use a página correspondente.", "超出的历史数据会被立即删除,且不可恢复。": "Os dados históricos excedentes serão excluídos imediatamente, sem possibilidade de recuperação.", "超时": "Timeout", "超时设置已刷新": "Configurações de timeout atualizadas", "跟随模型配置": "Seguir configuração do modelo", "跟随系统 · 浅色 · 深色": "Sistema · Claro · Escuro", "跟随默认": "Seguir padrão", "跨域访问": "CORS", "路由": "Roteamento", "路由组只使用组内成员;普通路由只使用参与范围内的账号和模型。": "Grupos de rotas usam apenas seus membros. Rotas comuns usam apenas contas e modelos dentro do escopo de participação.", "路由设置已刷新": "Configurações de roteamento atualizadas", "跳过 {n} 个": "Ignorados: {n}", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;负载均衡是每条请求换下一位,把负载摊到各个账号上。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时)、被 429 的账号垫底排到队尾 30 分钟、余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 前两层可以在下面按需开关,限制器由账号的「限制器」设置管。": "Em que ordem as contas são escolhidas ao encaminhar uma requisição: ① a \"Estratégia de roteamento\" define a regra da fila — na Ordem estrita, a posição 1 atende todas as requisições até não conseguir responder (limite / falha / cota esgotada) antes de passar à próxima; no Balanceamento de carga, cada requisição vai para a próxima conta, espalhando a carga. ② A \"Aderência de sessão\" mantém a mesma sessão (mesmo modelo + mesmas mensagens iniciais) na mesma conta sempre que possível — conversas de vários turnos reutilizam o cache de contexto do upstream, menos trocas de conta e menos desperdício; Automático gruda por 5 minutos, Na sessão por 6 horas, Por turno e Desligado não grudam. A posição na fila (primeira coluna da tabela de contas) é a base de toda estratégia; as estratégias se aplicam por cima. O roteamento ainda tem três proteções de autorrecuperação: contas que falham no encaminhamento recuam um pouco (15 minutos iniciais, dobrando a cada falha, teto de 1 hora), contas 429 com cota vão para o fim da fila por 30 minutos, e contas sem cota / acima do limite de tokens do período são seguradas pelo limitador — as duas primeiras podem ser ligadas e desligadas abaixo conforme a necessidade; o limitador é governado pela configuração \"Limitador\" de cada conta.", "转发前压缩对话里内嵌的大图(只改发给上游的副本,生图与图片编辑不受影响)": "Comprimir imagens embutidas grandes nas conversas antes de encaminhar (só a cópia enviada ao provedor muda; geração e edição de imagens não são afetadas)", "转发前将 developer 角色消息转换为 system,兼容不支持 developer 角色的 OpenAI 兼容上游": "Converte mensagens com papel developer para system antes do encaminhamento, para upstreams compatíveis com OpenAI que não suportam o papel developer", "转发失败的账号休息一会儿再回来:15 分钟起步,连续失败翻倍,封顶 1 小时;成功一次立即恢复。目的是「让这次失败先凉一会儿」,免得一条条地反复撞同一个坏账号。": "Uma conta que falha no encaminhamento descansa um pouco antes de voltar: começa em 15 minutos, dobra a cada falha consecutiva, com teto de 1 hora; um único sucesso a restaura na hora. A ideia é deixar a falha esfriar em vez de martelar a mesma conta ruim requisição após requisição.", "转发链路": "Encaminhamento", "轮询间隔": "Intervalo de polling", "软件标识超过 1 KB,已截断保存;匹配仅使用保留部分。": "O identificador excedeu 1 KB e foi truncado. A correspondência usa apenas a parte preservada.", "软件版本": "Versão do software", "轻量模式": "Modo leve", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 套餐池(Start Plan)通道不可用,相关请求会在请求日志里注明原因": "O modo leve está ativado: fechar a janela destrói o processo da interface (liberando cerca de 200 MB de memória) enquanto o gateway continua em segundo plano; com a interface destruída, o canal do pool de planos do ZCode (Start Plan) fica indisponível e as solicitações afetadas registrarão o motivo no log de solicitações", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 活动套餐通道不可用,相关请求会在请求日志里注明原因": "Modo leve ativado: fechar a janela destrói o processo da interface (libera cerca de 200MB de memória) e o gateway continua em segundo plano; enquanto a interface está destruída, o canal do Plano de evento da ZCode fica indisponível e as requisições relacionadas registram o motivo nos logs de requisições", "轻量模式(关窗释放界面内存)": "Modo leve (liberar a memória da interface ao fechar a janela)", "辅助识图": "Leitura assistida de imagens", "辅助识图 · 原模型回答": "Leitura assistida · O modelo original responde", "辅助识图保留原模型回答;切换视觉模型会让视觉模型直接回答。本次授权也包含已设置的模型单独配置。": "A leitura assistida mantém o modelo original para responder; a troca permite que o modelo de visão responda diretamente. Esta autorização também inclui as configurações por modelo.", "辅助识图或切换视觉模型,默认关闭": "Leitura assistida ou troca de modelo de visão, desativada por padrão", "辅助识图配置": "Configuração de leitura assistida", "输入同步密码": "Digitar senha de sincronização", "输入当前登录用的密码": "Digite a senha de login atual", "输入状态码,回车添加": "Digite o status code e pressione Enter para adicionar", "运行形态": "Forma de execução", "近期没有命中样本,不代表未来请求不会命中。": "Nenhuma amostra recente correspondeu; requisições futuras ainda podem corresponder.", "还原": "Restaurar", "还有额度时被 429 的账号排到队尾,30 分钟后自动回到队列(成功转发一次也会立即回来)。它标记的是「疑似共享池被别人抢」,不是「这个账号本身有问题」。⚠️ 注意它与路由策略的配合:在「家内轮询」下,队尾意味着这一家整体被往后排 —— 如果某个提供商的账号被批量限流,它们会集体沉到队尾,那个家可能长时间轮不到。这时可以关掉本项,让 429 过的账号只受冷却约束(冷却到点自动回来)。": "Uma conta com cota que recebe 429 vai para o fim da fila e volta automaticamente após 30 minutos (um encaminhamento bem-sucedido também a traz de volta na hora). Isso sinaliza \"provavelmente o pool compartilhado está sendo drenado por outro\", e não \"esta conta está com problema\". ⚠️ Atenção à interação com a estratégia de roteamento: no \"Rodízio por provedor\", o fim da fila significa que o provedor inteiro é empurrado para trás — se as contas de um provedor forem limitadas em massa, todas afundam para o fim e aquele provedor pode não ser alcançado por muito tempo. Nesse caso desligue isto, deixando as contas 429 sujeitas só ao cooldown (elas voltam sozinhas quando ele expira).", "还没有可用的视觉模型。": "Ainda não há modelo de visão disponível.", "还没有同步过。": "Ainda não sincronizado.", "还没有添加服务器。点右上角「添加」,填入网关所在机器的 IP 或域名与端口。": "Nenhum servidor ainda. Toque em \"Adicionar\" no canto superior direito e informe o IP ou domínio e a porta da máquina que roda o gateway.", "还没有装载任何数据。": "Nenhum dado carregado ainda.", "还没有读到版本信息": "As informações de versão ainda não foram carregadas", "还没有选择模型,这块设置暂时不起作用。": "Nenhum modelo selecionado, então este bloco ainda não faz nada.", "这一份就是「替换 / 追加」模式下网关要发的 system 正文。": "Este é o texto do system que o gateway envia nos modos “Substituir / Anexar”.", "这一项已隐藏": "Este item está oculto", "这一项正在显示": "Este item está visível", "这些模型的请求交给当前路由内可用的视觉模型回答,不再回到原模型。": "As requisições desses modelos são respondidas por um modelo de visão disponível na rota atual, no lugar do modelo original.", "这些模型看到图片时,先把图片交给 {model} 读一遍,再由它们自己结合读到的内容回答。": "Quando esses modelos recebem uma imagem, {model} a lê primeiro, e eles respondem com base no que foi lido.", "这些模型看到图片时,先把图片交给「沿用工具服务的视觉分析模型」读一遍,再由它们自己结合读到的内容回答。": "Quando esses modelos recebem uma imagem, o modelo de visão do serviço de ferramentas a lê primeiro, e eles respondem com base no que foi lido.", "这只模型只负责看图,最终仍由原模型回答。": "Este modelo apenas lê a imagem; quem responde continua sendo o modelo original.", "这只模型直接接收图片与对话,完成本次回答。": "Este modelo recebe as imagens e a conversa e produz esta resposta.", "这台网关未启用机器人校验": "Este gateway não exige verificação de bot", "这台网关没有管理员,用一把已启用的 API Key 访问。": "Este gateway não tem administrador. Acesse com uma API key ativa.", "这条历史请求没有保存识别依据,不能据此自动创建规则。": "Esta requisição histórica não tem evidências de identificação salvas e não pode gerar uma regra automaticamente.", "这条规则已被删除,请关闭编辑后重新添加。": "Esta regra foi excluída. Feche o editor e adicione-a novamente.", "这里只列出已保存的提供商配置;未配置的提供商沿用全局设置,可从下拉框手动添加。用户保存的模式、文件和正文优先于全局设置,「跟随默认」只取消该提供商的模式、文件和正文覆盖。ZCode 套餐池默认由插件按三块装配,客户端系统正文合入第三块,不会自动创建替换规则;手动修改的网关提示词段或关闭开关仍以用户配置为准,能否被接受取决于上游规则。": "Somente as configurações de provedores já salvas aparecem aqui. Provedores não configurados seguem as configurações globais e podem ser adicionados manualmente na lista. Modos, arquivos e textos salvos têm prioridade sobre os globais; Seguir padrão remove apenas essas substituições do provedor. Para o Start Plan da ZCode, o plugin monta três blocos por padrão e incorpora o system do cliente ao terceiro, sem criar uma regra de substituição automaticamente. Blocos do prompt do gateway editados manualmente e a opção de desativar a montagem continuam tendo prioridade; a aceitação depende das regras do upstream.", "进程 PID": "PID do processo", "远程根目录": "Diretório raiz remoto", "远端同一路径下的旧快照。事件日志、请求明细与调试报文不会上传。": "o snapshot antigo no mesmo caminho remoto. Logs de eventos, detalhes de requisições e pacotes de depuração não são enviados.", "远端已有一份快照,将被覆盖": "Já existe um snapshot no remoto e ele será sobrescrito", "远端快照使用了另一把账号密钥,但没有携带密钥文件,无法在本机解密。请在原来那台机器上重新上传一次。": "O snapshot remoto usa uma chave de conta diferente, mas não inclui o arquivo de chave, então não pode ser descriptografado aqui. Envie novamente a partir da máquina original.", "远端快照使用的账号密钥与本机不同。请输入上传那台机器设置的同步密码,用它解出密钥装到本机后再继续下载。": "O snapshot remoto usa uma chave de conta diferente desta máquina. Digite a senha de sincronização definida na máquina que enviou para descriptografar a chave e instalá-la aqui, depois continue o download.", "远端数据与当前版本不兼容": "Os dados remotos são incompatíveis com esta versão", "远端该路径下还没有快照,本次是首次上传。": "Ainda não há snapshot nesse caminho remoto; este é o primeiro envio.", "远端路径:{path}": "Caminho remoto: {path}", "远端还没有可下载的同步数据": "Não há dados de sincronização para baixar no remoto", "连不上这台网关。确认地址与端口正确、网关已启动,且已开启「局域网访问」;用 https 时还要确认证书有效": "Não foi possível alcançar este gateway. Confira o endereço e a porta, se o gateway está rodando e se o \"Acesso pela rede local\" está ativo; no caso de https, confira também se o certificado é válido.", "连不上这台网关。请确认地址、端口与防火墙设置,网关需已启动;桌面端请在「设置 → 网关 → 网络访问」开启「允许其他设备访问网关」。使用 HTTPS 时还需确认证书有效。": "Não foi possível alcançar este gateway. Verifique o endereço, a porta, o firewall e se o gateway está em execução. No aplicativo desktop, ative Permitir que outros dispositivos acessem o gateway em Configurações → Gateway → Acesso pela rede. Para HTTPS, verifique também se o certificado é válido.", "连接中超时": "Timeout de conexão", "连接失败:{message}": "Falha na conexão: {message}", "连续失败到阈值后把这个账号整个打开(默认关)。与失败退避的分工:退避管「单次失败先凉一会儿」,惩罚轻、自动恢复;熔断管「这个账号现在整体不对劲,别再一条条地试」,要连续成功若干次才关。打开期间该账号被跳过,除非全场只剩它 —— 那时仍放行试一次。": "Desliga esta conta por inteiro depois que as falhas consecutivas atingem um limiar (desligado por padrão). Divisão de papéis com o recuo por falha: o recuo cuida de \"deixar uma falha única esfriar\" — penalidade leve, recuperação automática; o disjuntor cuida de \"esta conta está ruim como um todo, pare de tentar uma a uma\" e só fecha após vários sucessos consecutivos. Enquanto aberto, a conta é pulada — a menos que seja a única restante; nesse caso ela ainda recebe uma tentativa.", "追加": "Anexar", "追加网关提示词": "Anexar prompt do gateway", "退出失败:{message}": "Falha ao sair: {message}", "退出登录": "Sair", "退出这台服务器的登录,不影响其他服务器": "Sai apenas deste servidor; os demais não são afetados", "选好接管回答的视觉模型后这块设置才会生效。": "Este bloco passa a valer quando um modelo de visão para responder é escolhido.", "选好视觉模型后这块设置才会生效。": "Este bloco passa a valer quando um modelo de visão é escolhido.", "选定提供商": "Provedor selecionado", "选择一个或多个模型": "Selecione um ou mais modelos", "选择位置并加密备份": "Escolher local e criptografar backup", "选择备份文件并恢复": "Escolher um arquivo de backup e restaurar", "选择提供商(可多选)": "Selecionar provedores (múltipla seleção)", "选路规则": "Regras de seleção", "选项与默认值由已启用插件提供;你保存的覆盖值不会被插件更新替换。": "Os plugins ativados fornecem estas opções e valores padrão. Atualizações do plugin não substituem suas configurações salvas.", "选项与默认值由插件提供,你保存的修改不会被插件更新覆盖。切换提供商不会丢失未保存的修改。": "As opções e os valores padrão vêm dos plugins. Atualizações de plugins não sobrescrevem suas alterações salvas. Trocar de provedor mantém as edições não salvas.", "透传": "Passthrough", "透传客户端 system": "Passthrough do system do cliente", "透传客户端 system(默认)": "Passthrough do system do cliente (padrão)", "通常是网络问题,点右侧重试": "Normalmente é um problema de rede — toque em Repetir", "通用": "Geral", "遇到 Bug、报错或异常行为": "Bugs, erros ou comportamentos anormais", "配置目录下的 agent2api.db(账号、日志、请求记录、调试报文与设置都在里面)。": "O agent2api.db no diretório de configuração (contas, logs, registros de requisições, payloads de debug e configurações ficam todos nele).", "采用本规则": "Usa esta regra", "重启后生效,不影响当前操作": "Entra em vigor após reiniciar; nada do que você está fazendo é interrompido", "重命名": "Renomear", "重命名只更新分类显示名,不拆分历史用量,也不重新归类历史请求。": "Renomear altera apenas o nome exibido, sem dividir o uso anterior ou reclassificar requisições históricas.", "重命名客户端分类": "Renomear categoria de cliente", "重复清理": "Repetir limpeza", "重复清理直到不再变化(仅正则删除)": "Repetir até não haver mudanças (somente exclusão por expressão regular)", "重新读取会替换当前未保存的草稿。": "Recarregar substitui o rascunho atual não salvo.", "重新读取设置": "Recarregar configuração", "重编码质量": "Qualidade de recodificação", "重置会清空管理员账号与密码,面板将回到「未注册」状态。": "A redefinição apaga a conta e a senha do administrador e devolve o painel ao estado \"não registrado\".", "重置管理员": "Redefinir administrador", "重试设置已刷新": "Configurações de retry atualizadas", "重试间隔": "Intervalo entre retries", "铸造守卫每隔多久看一次库存(毫秒)。只影响发现缺货的反应速度 —— 库存够用时轮询不会铸造任何令牌。默认 2500 毫秒,可填 1000–30000。": "De quanto em quanto tempo o guarda de cunhagem olha o estoque (milissegundos). Afeta só a rapidez de perceber a falta — com estoque suficiente, o polling não cunha nada. Padrão 2500 ms; aceita 1000–30000.", "长边像素上限": "Limite do lado maior (px)", "问题反馈": "Relatar um problema", "阿里云 OSS": "Alibaba Cloud OSS", "限流中账号": "Contas limitadas", "随包内嵌的快照(发版时的那份)": "Snapshot embutido no app (o da versão lançada)", "隐藏 {name}": "Ocultar {name}", "隐藏分组 {name}": "Ocultar grupo {name}", "隐藏用户名": "Ocultar nome de usuário", "隐藏账号名(显示成星号)": "Ocultar nomes das contas (mostrar asteriscos)", "隐藏这一组": "Ocultar este grupo", "非流式响应超时": "Timeout de resposta não streaming", "面板登录": "Login do painel", "面板端口": "Porta do painel", "面板管理员账号": "conta de administrador do painel", "韩语": "coreano", "项目来源": "Origem do projeto", "预览不发送模型请求,也不修改历史记录。": "A prévia não chama modelos nem modifica registros históricos.", "预览中…": "Gerando prévia…", "预览匹配": "Pré-visualizar correspondências", "预设": "Predefinição", "首选不可用时再依次尝试备选。": "Se a primeira opção não estiver disponível, os alternativos são tentados em ordem.", "首选不可用时再依次尝试;留空则停止并说明原因。": "Tentados em ordem quando a primeira opção não estiver disponível; vazio significa parar e explicar o motivo.", "验证方式": "Método de verificação", "验证码令牌池": "Pool de tokens de captcha", "验证码令牌池设置已刷新": "Configurações do pool de tokens de captcha atualizadas", "验证码库存的参考目标,默认 3 个,可填 1–10。只影响库存状态展示,不会因为低于目标自动生成令牌或弹出验证码。": "Meta de referência do estoque: padrão 3, entre 1 e 10. Afeta apenas a exibição; ficar abaixo da meta nunca gera tokens nem abre a verificação automaticamente.", "高级设置": "Configurações avançadas", "默认 10000 条,按日志级别分配保留容量,超出后清理最旧的记录;同时受保留天数限制。": "Padrão de 10.000 registros, com capacidade distribuída por nível de log. Os registros excedentes mais antigos são removidos; os dias de retenção também se aplicam.", "默认 1000000 条(100 万),超出后清理最旧的请求记录及其原始正文,不影响按天聚合报表;同时受保留天数限制。": "Padrão de 1.000.000 de registros. Os registros excedentes mais antigos e seus corpos originais são removidos sem afetar os relatórios agregados diários; os dias de retenção também se aplicam.", "默认 5 分钟。间隔内的变化合并为最新快照,到期后上传;手动上传不受限制。失败后会延长等待并自动重试。": "O padrão é 5 minutos. As alterações durante o intervalo são reunidas no snapshot mais recente e enviadas ao final da espera. Uploads manuais não são limitados. Em caso de falha, o sistema aumenta a espera e tenta novamente automaticamente.", "默认仅本机可访问(127.0.0.1)。开启后监听所有 IPv4 网卡(0.0.0.0),访问范围由网络与防火墙决定,不限于局域网,也不会自动开放到公网。开启前必须注册面板管理员;管理接口需要管理员会话或网关 Key,API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。「同时开放网页管理面板」默认关闭,开启后可从其他设备的浏览器登录管理;关闭它不影响 API 转发和本机桌面管理。修改任一开关都需要重启应用。": "Por padrão, somente esta máquina pode acessar (127.0.0.1). Ao ativar, o gateway escuta em todas as interfaces IPv4 (0.0.0.0); o acesso depende da rede e do firewall, não se limita à rede local e não é aberto automaticamente à internet. É necessário registrar um administrador do painel antes. A API de gerenciamento exige uma sessão de administrador ou chave do gateway; chamadas à API exigem uma chave ativa, criada automaticamente como padrão se necessário. O painel web fica desativado por padrão. Ative-o para entrar pelo navegador de outro dispositivo; desativá-lo não afeta o encaminhamento da API nem o gerenciamento desktop local. Alterar qualquer uma das opções exige reiniciar o aplicativo.", "默认值通常够用,出问题时才需要调": "Os padrões costumam bastar; ajuste só quando algo der errado", "默认关闭。开启后下一次 Codex 请求立即生效,不用重启;只对 Codex 来源的 /v1/responses 请求补阶段标记,其它客户端与 /v1/chat/completions 不受影响。": "Desativado por padrão. Ao ativar, vale já na próxima requisição do Codex, sem reiniciar; os marcadores de fase são adicionados apenas a requisições /v1/responses com origem Codex, e outros clientes e /v1/chat/completions não são afetados.", "默认关闭。改动立即生效,不用重启;关闭期间的跨源请求会被预检拦下。": "Desativado por padrão. As mudanças valem na hora, sem reiniciar; enquanto estiver desativado, as requisições de outra origem são barradas no preflight.", "默认关闭窗口不会退出程序,而是把窗口缩到系统托盘,转发继续在后台运行(OpenAI 客户端不受影响);要彻底退出程序,请在托盘图标上右键选「退出」。关掉这个开关后,点关闭按钮即退出程序、转发随之中断。「开机自动启动」开启后,登录系统时会自动启动本程序(通常直接驻留托盘),不需要手动打开。": "Por padrão, fechar a janela não encerra o programa: ela é recolhida para a bandeja do sistema e o encaminhamento continua rodando em segundo plano (clientes OpenAI não são afetados). Para encerrar o programa de vez, clique com o botão direito no ícone da bandeja e escolha “Sair”. Com este switch desativado, clicar no botão de fechar encerra o programa e o encaminhamento é interrompido. Com “Iniciar com o sistema” ativado, o programa inicia automaticamente ao entrar no sistema (normalmente já na bandeja), sem precisar abri-lo manualmente.", "默认应用全部提供商(包含之后新增的插件与自定义提供商)。指定范围后,未选中的提供商不做指纹脱敏;清空选择自动回到全部提供商。": "Aplica-se a todos os provedores por padrão, incluindo plugins e provedores personalizados adicionados depois. Ao selecionar um escopo, os outros provedores não são mascarados. Limpar a seleção volta a todos os provedores.", "默认开启。只改 role 字段本身,消息内容与顺序都不动;本项只改发给上游的副本,客户端看到的响应内容不变。": "Ativado por padrão. Só o campo role muda — conteúdo e ordem das mensagens ficam intactos; isto reescreve apenas a cópia enviada ao upstream, e o que o cliente vê nunca muda.", "默认开启。只改发给上游的副本,客户端看到的响应与原图都不变;请求日志里保存的是客户端发来的原图,不是压缩后的版本。只作用在对话链路,生图 / 图片编辑不经过这里。改完对下一个请求立即生效,不用重启。": "Ativado por padrão. Apenas a cópia enviada ao provedor é alterada; a resposta e a imagem original vista pelo cliente permanecem iguais, e o log de requisições guarda a imagem original do cliente, não a versão comprimida. Aplica-se somente ao caminho de chat — geração e edição de imagens não passam por aqui. As alterações valem a partir da próxima requisição, sem reiniciar.", "默认开启。命中明细会记进请求日志的「敏」标签(悬停可看命中了哪几条规则)。本项只改发给上游的副本,客户端看到的响应内容不变。": "Ativado por padrão. Os detalhes das ocorrências são registrados na tag “PS” dos logs de requisições (passe o mouse para ver quais regras foram acionadas). Esta opção altera apenas a cópia enviada ao upstream; o conteúdo da resposta que o cliente vê não muda.", "默认开启并应用全部提供商。编辑词表或应用范围后点击「保存设置」,下一次请求立即生效,不用重启。命中明细仍记进请求日志的「敏」标签。": "Ativado para todos os provedores por padrão. Edite as regras ou o escopo e clique em Salvar configurações; a próxima requisição usa as alterações sem reiniciar. As correspondências continuam registradas na etiqueta de mascaramento do log.", "默认网关只监听 127.0.0.1,只有本机能访问。开启后网关改听所有网卡,同一局域网内的设备可以把 API 地址指向本机 IP 一起使用。出于安全考虑,开启前必须先注册一个面板管理员:管理接口从此要求管理员会话或网关 Key,模型额度不会对局域网裸奔;一把启用的网关 Key 都没有时,转发接口也会拒绝服务,直到创建第一把。改动需要重启应用生效。「同时开放网页管理面板」把管理界面也出给局域网(其他设备的浏览器打开本机 IP 即可管理),默认关闭 —— 桌面端的面板仍只由本程序自己出。": "Por padrão, o gateway escuta apenas 127.0.0.1 e só esta máquina tem acesso. Ao ativar, o gateway passa a escutar todas as interfaces de rede e dispositivos na mesma LAN podem usar a API apontando o endereço para o IP desta máquina. Por segurança, antes de ativar é obrigatório registrar um administrador do painel: a interface de administração passa a exigir sessão de administrador ou chave do gateway, e a cota dos modelos não fica exposta na LAN; quando não há nenhuma chave do gateway ativa, a interface de encaminhamento também recusa atendimento até que a primeira seja criada. A mudança exige reiniciar o aplicativo para ter efeito. “Também abrir o painel de administração web” disponibiliza a interface de administração na LAN (o navegador de outros dispositivos abre o IP desta máquina para gerenciar); desativado por padrão — o painel do desktop continua sendo servido apenas pelo próprio programa.", "({n} 个整组隐藏)": " ({n} grupos ocultos)", "({n} 行)": " ({n} linhas)", "({n} 项被覆盖)": " ({n} itens sobrescritos)", "(全部为默认值)": " (todos com valores padrão)", "(官方原文)": " (texto oficial)", "(已存一份正文,{n} 行;切成「替换 / 追加」后生效)": " (há um texto salvo, {n} linhas; passa a valer ao mudar para “Substituir / Anexar”)", "(已改)": " (alterado)", "(已注册过会跳过这一步,直接生效)。": " (se já estiver registrado, esta etapa é ignorada e a ativação é imediata).", "(当前生效的就是这一份,{n} 行)": " (esta é a versão em vigor, {n} linhas)", "(文件:{path})": " (arquivo: {path})", "(未生效)": "(sem efeito)", ",{items}": ", {items}", ",{time}": ", {time}", ",以及代理池 / 订阅里可能存在的代理凭据。请使用只有你能访问的私有存储;账号密钥由同步密码单独加密,泄露存储本身不等于泄露账号。": ", além de eventuais credenciais de proxy no pool de proxies / assinaturas. Use armazenamento privado acessível apenas por você; a chave da conta é criptografada separadamente com a senha de sincronização, então vazar o armazenamento não expõe suas contas.", ",包括恢复后需要重新登录管理面板。": " pelo arquivo de backup selecionado, inclusive o novo login no painel após a restauração.", ",可直接用于登录。请妥善保管,不要外传或上传到公共位置。": ", e pode ser usado diretamente para login. Guarde-o com cuidado; não o compartilhe nem o envie para locais públicos.", ",文件里后续的改动在清空这里之前不再生效": ", e alterações posteriores no arquivo deixam de valer até que este campo seja limpo", ",替换前的数据已备份为 {name}": ", os dados pré-substituição foram backupados como {name}", ",自定义提供商新增 {added} 个、更新 {updated} 个": ", provedores personalizados: {added} adicionados, {updated} atualizados", ";开关关闭时词表不执行": "; as regras não são executadas quando o mascaramento está desativado", ";网页管理面板已一并开放(浏览器打开同一地址)": "; o painel de administração web também está aberto (acesse pelo mesmo endereço no navegador)" }); diff --git a/desktop-tauri/ui/i18n/zh-Hant/requests.js b/desktop-tauri/ui/i18n/zh-Hant/requests.js index ea4971de..d5040ff3 100644 --- a/desktop-tauri/ui/i18n/zh-Hant/requests.js +++ b/desktop-tauri/ui/i18n/zh-Hant/requests.js @@ -1,2 +1,2 @@ /* Agent2API 词典构建产物:zh-Hant/requests —— 由 desktop-tauri/i18n/build.mjs 生成,请勿手改;源头是 i18n-src/*.json */ -window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { " · {n} 进行中": " · {n} 進行中", " · 会话粘住": " · 會話粘住", "
    无响应原文
    ": "
    無響應原文
    ", "
    无法解析响应内容
    ": "
    無法解析響應內容
    ", "
    无法解析请求体(不是含 messages 数组的 JSON)
    ": "
    無法解析請求體(不是含 messages 陣列的 JSON)
    ", "
    无请求原文
    ": "
    無請求原文
    ", "
    调用工具 {name}
    ": "
    呼叫工具 {name}
    ", "响应原文": "響應原文", "思考过程": "思考過程", "请求原文": "請求原文", "HTTP {status},但响应体阶段出错": "HTTP {status},但響應體階段出錯", "HTTP {status},但响应体阶段出错:见错误列": "HTTP {status},但響應體階段出錯:見錯誤列", "{duration} / 首帧 {first}": "{duration} / 首幀 {first}", "{m}分{s}秒": "{m}分{s}秒", "{n}秒": "{n}秒", "{s}秒{ms}ms": "{s}秒{ms}ms", "↻ {n} 次": "↻ {n} 次", "↻ 重试 {n} 次": "↻ 重試 {n} 次", "✅ 压缩完成": "✅ 壓縮完成", "「仅看进行中」开启时,状态固定为进行中": "「僅看進行中」開啟時,狀態固定為進行中", "上游模型繁忙,请求已排进上游队列;网关正按上游建议的时长等待后重发(不是登录态或额度问题)": "上游模型繁忙,請求已排進上游佇列;閘道器正按上游建議的時長等待後重發(不是登入態或額度問題)", "上游没有返回积分消耗": "上游沒有返回積分消耗", "上游状态码: {status}": "上游狀態碼: {status}", "上游请求已发出,正在等第一个字节到达(模型的思考时间也在这段)": "上游請求已發出,正在等第一個位元組到達(模型的思考時間也在這段)", "上游返回错误": "上游返回錯誤", "下游请求的模型:{model}": "下游請求的模型:{model}", "仅清空报文原文": "僅清空報文原文", "仅看进行中": "僅看進行中", "令牌": "權杖", "体积": "體積", "保留 {count} 条请求记录 · 将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "保留 {count} 條請求記錄 · 將清理上游除錯報文 {upstream} 條、下游正文 {downstream} 條 · 資料庫佔用 {db}", "保留 {count} 条请求记录;将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。用量统计与报表不变。": "保留 {count} 條請求記錄;將清理上游除錯報文 {upstream} 條、下游正文 {downstream} 條。用量統計與報表不變。", "保留统计行与报表,只抹掉请求 / 响应正文。清理后详情弹窗的「预览对话」将无原文可看,统计数字分毫不动。": "保留統計行與報表,只抹掉請求 / 響應正文。清理後詳情彈窗的「預覽對話」將無原文可看,統計數字分毫不動。", "保留请求记录、用量统计与报表,同时清理上游调试报文和下游请求 / 响应正文。清理后「预览对话」与「原始报文」不再保留原文。有筛选时只清理命中请求的报文;无筛选时清空两侧全部报文。此操作无法恢复。": "保留請求記錄、用量統計與報表,同時清理上游除錯報文和下游請求 / 響應正文。清理後「預覽對話」與「原始報文」不再保留原文。有篩選時只清理命中請求的報文;無篩選時清空兩側全部報文。此操作無法恢復。", "全部删除": "全部刪除", "全部提供商": "全部提供商", "全部模型": "全部模型", "全部状态": "全部狀態", "全部请求数据": "全部請求資料", "共 {images} 张图片,复用 {cached} 张识读结果": "共 {images} 張圖片,複用 {cached} 張識讀結果", "共 {n} 次尝试": "共 {n} 次嘗試", "共 {n} 次尝试,最终由 {provider} 承载": "共 {n} 次嘗試,最終由 {provider} 承載", "其它": "其它", "内容按原样保存,请求头中的凭据字段已替换为 [redacted]": "內容按原樣儲存,請求頭中的憑據欄位已替換為 [redacted]", "内部重试": "內部重試", "切换路径:": "切換路徑:", "列表数据已刷新,请重试(关闭后重新打开这条详情)": "列表資料已重新整理,請重試(關閉後重新開啟這條詳情)", "删除日志记录本身。当前有筛选时只删命中的条目,按天聚合报表不受影响;无筛选时清空全部并重置报表。此方式无法恢复。": "刪除日誌記錄本身。當前有篩選時只刪命中的條目,按天聚合報表不受影響;無篩選時清空全部並重置報表。此方式無法恢復。", "删除请求记录,并同步清理对应的上游调试报文与下游正文。有筛选时只删除命中的记录,按天聚合报表不受影响;无筛选时清空全部并重置报表。此操作无法恢复。": "刪除請求記錄,並同步清理對應的上游除錯報文與下游正文。有篩選時只刪除命中的記錄,按天聚合報表不受影響;無篩選時清空全部並重置報表。此操作無法恢復。", "加载更早的请求": "載入更早的請求", "压缩中…": "壓縮中…", "压缩失败:{message}": "壓縮失敗:{message}", "压缩已在后台开始,完成后会自动提示": "壓縮已在後臺開始,完成後會自動提示", "压缩已在进行中": "壓縮已在進行中", "压缩已在进行中,接上它的进度等待完成": "壓縮已在進行中,接上它的進度等待完成", "压缩数据库": "壓縮資料庫", "压缩正在后台执行,完成后自动恢复": "壓縮正在後臺執行,完成後自動恢復", "原始报文": "原始報文", "原模型": "原模型", "发给上游的模型": "發給上游的模型", "另有 {missing} 次尝试未记录明细(只保留最早的 {kept} 条)": "另有 {missing} 次嘗試未記錄明細(只保留最早的 {kept} 條)", "另有 {n} 个词命中": "另有 {n} 個詞命中", "只显示正在转发中的请求(状态列按阶段显示:连接中 / 等待响应 / 响应中 / 重试中,用时列显示已用时)": "只顯示正在轉發中的請求(狀態列按階段顯示:連線中 / 等待響應 / 響應中 / 重試中,用時列顯示已用時)", "只看失败": "只看失敗", "只看成功": "只看成功", "只看进行中": "只看進行中", "命中了敏感词": "命中了敏感詞", "命中的敏感词": "命中的敏感詞", "响应中": "響應中", "响应体": "響應體", "响应头": "響應頭", "回收已删除数据占用的磁盘空间(checkpoint + VACUUM,后台执行)": "回收已刪除資料佔用的磁碟空間(checkpoint + VACUUM,後臺執行)", "图片处理用时:{n} 秒": "圖片處理用時:{n} 秒", "在设置 → 通用里开启「调试模式」后,新发生的请求才会保存报文": "在設定 → 通用裡開啟「除錯模式」後,新發生的請求才會儲存報文", "在路由页查看": "在路由頁檢視", "在途 {n}": "在途 {n}", "处理中": "處理中", "失败请求不记录用量": "失敗請求不記錄用量", "失败({status}):{error}": "失敗({status}):{error}", "失败:{error}": "失敗:{error}", "实际发给上游 {bytes} 字节": "實際發給上游 {bytes} 位元組", "客户端": "客戶端", "客户端请求的模型": "客戶端請求的模型", "将删除 {count} 条日志 · 其中 {raw} 条仍带报文原文 · 数据库占用 {db}": "將刪除 {count} 條日誌 · 其中 {raw} 條仍帶報文原文 · 資料庫佔用 {db}", "将删除 {count} 条请求记录 · 同步清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "將刪除 {count} 條請求記錄 · 同步清理上游除錯報文 {upstream} 條、下游正文 {downstream} 條 · 資料庫佔用 {db}", "将删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "將刪除 {count} 條請求記錄,並清理上游除錯報文 {upstream} 條、下游正文 {downstream} 條。", "尝试 {n} ·": "嘗試 {n} ·", "尝试明细": "嘗試明細", "尝试次数": "嘗試次數", "尝试链": "嘗試鏈", "工具结果": "工具結果", "工具结果 · {id}": "工具結果 · {id}", "工具结果图片": "工具結果圖片", "已删除 {count} 条": "已刪除 {count} 條", "已删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "已刪除 {count} 條請求記錄,並清理上游除錯報文 {upstream} 條、下游正文 {downstream} 條。", "已受理终止:上游连接已断开,列表稍后刷新为「请求已被手动终止」": "已受理終止:上游連線已斷開,列表稍後重新整理為「請求已被手動終止」", "已抹掉 {count} 条报文原文": "已抹掉 {count} 條報文原文", "已清理上游调试报文 {upstream} 条、下游正文 {downstream} 条;请求记录与报表已保留。": "已清理上游除錯報文 {upstream} 條、下游正文 {downstream} 條;請求記錄與報表已保留。", "已用时(请求仍在转发中)": "已用時(請求仍在轉發中)", "开启调试模式后仅记录新请求,历史对话无法补录;关闭不会删除已有记录。": "開啟偵錯模式後僅記錄新請求,歷史對話無法補錄;關閉不會刪除已有記錄。", "当前筛选下没有记录": "當前篩選下沒有記錄", "当前筛选范围": "當前篩選範圍", "当前网关未提供上游 / 下游清理统计,请更新网关后再清理。": "當前閘道器未提供上游 / 下游清理統計,請更新閘道器後再清理。", "成功": "成功", "成功({status})": "成功({status})", "所属请求": "所屬請求", "执行清理": "執行清理", "报文超过单条上限,请求体 / 响应体已按上限截断": "報文超過單條上限,請求體 / 響應體已按上限截斷", "抹掉原文": "抹掉原文", "按提供商筛选": "按提供商篩選", "按提供商筛选(只列日志里出现过的)": "按提供商篩選(只列日誌裡出現過的)", "按时间倒序,全量保留": "按時間倒序,全量保留", "按模型筛选": "按模型篩選", "按模型筛选(只列日志里出现过的;精确匹配模型名)": "按模型篩選(只列日誌裡出現過的;精確匹配模型名)", "按请求结果筛选": "按請求結果篩選", "换号链:{chain}": "換號鏈:{chain}", "排队中": "排隊中", "提供商 / 账号": "提供商 / 帳號", "提供商: {provider}": "提供商: {provider}", "提示": "提示", "敏": "敏", "敏感词": "敏感詞", "数据库占用包含主文件与 WAL 文件;清理后可点击「压缩数据库」回收空闲空间。": "資料庫佔用包含主檔案與 WAL 檔案;清理後可點擊「壓縮資料庫」回收空閒空間。", "断开上游连接,明细记为「请求已被手动终止」": "斷開上游連線,明細記為「請求已被手動終止」", "无报文原文(未开启「调试模式」,或已被清理)": "無報文原文(未開啟「除錯模式」,或已被清理)", "无结果记录": "無結果記錄", "旧版本保存的正文可能已截断,无法恢复缺失内容": "舊版本儲存的正文可能已截斷,無法恢復缺失內容", "时间": "時間", "暂无请求日志": "暫無請求日誌", "暂无请求日志,网关还没有转发过请求": "暫無請求日誌,閘道器還沒有轉發過請求", "最终承载:{picked}": "最終承載:{picked}", "有重试": "有重試", "本次请求消耗 {credit} 积分": "本次請求消耗 {credit} 積分", "本轮尝试失败,正在退避等待或切换到下一个账号": "本輪嘗試失敗,正在退避等待或切換到下一個帳號", "来源客户端": "來源客戶端", "来源客户端:{client}": "來源客戶端:{client}", "查看该请求的上游原始报文": "檢視該請求的上游原始報文", "模型": "模型", "模型映射:{from} → {to}": "模型對映:{from} → {to}", "模型测试": "模型測試", "模型管理页操作列那颗「测试」发起的请求:与真实请求同一条转发链路,但不计入报表统计": "模型管理頁操作列那顆「測試」發起的請求:與真實請求同一條轉發鏈路,但不計入報表統計", "正在加载请求日志…": "正在載入請求日誌…", "正在统计…": "正在統計…", "正文超过单条上限,可能已被截断": "正文超過單條上限,可能已被截斷", "没有符合筛选条件的请求": "沒有符合篩選條件的請求", "清理": "清理", "清理中…": "清理中…", "清理失败:{message}": "清理失敗:{message}", "清理方式": "清理方式", "清理请求已返回,但结果数据不完整,请刷新后确认。": "清理請求已返回,但結果資料不完整,請重新整理後確認。", "清理请求日志": "清理請求日誌", "清理预览数据不完整": "清理預覽資料不完整", "清空两侧原文": "清空兩側原文", "生产请求": "生產請求", "生成速度:输出 token ÷ 流式段用时(总用时 − 首响);流式段不足总用时一半时按总用时计": "生成速度:輸出 token ÷ 流式段用時(總用時 − 首響);流式段不足總用時一半時按總用時計", "用时": "用時", "用量": "用量", "确定对{scope}执行「{label}」?
    {summary}
    此操作无法恢复。": "確定對{scope}執行「{label}」?
    {summary}
    此操作無法恢復。", "确定对全部请求日志执行「{label}」?将处理 {count} 条,此操作无法恢复。": "確定對全部請求日誌執行「{label}」?將處理 {count} 條,此操作無法恢復。", "确定按当前筛选执行「{label}」?将处理 {count} 条,此操作无法恢复。": "確定按當前篩選執行「{label}」?將處理 {count} 條,此操作無法恢復。", "确定终止这条正在转发的请求?
    上游连接会立即断开,明细将记为「请求已被手动终止」。": "確定終止這條正在轉發的請求?
    上游連線會立即斷開,明細將記為「請求已被手動終止」。", "等待响应": "等待響應", "策略 {strategy} · 会话粘性 {sticky}{hit}": "策略 {strategy} · 會話粘性 {sticky}{hit}", "终止": "終止", "终止失败:{error}": "終止失敗:{error}", "终止请求": "終止請求", "结果": "結果", "缓存读取: - / 命中率: -": "快取讀取: - / 命中率: -", "缓存读取: {cache} / 命中率: {rate}": "快取讀取: {cache} / 命中率: {rate}", "耗时": "耗時", "脱敏命中:{words}": "脫敏命中:{words}", "被跳过:": "被跳過:", "识别到 User-Agent,但不属于已知的客户端类型:{ua}": "識別到 User-Agent,但不屬於已知的客戶端型別:{ua}", "识图用量按实际视觉账号单独记录,不混入原模型的回答用量。": "識圖用量按實際視覺帳號單獨記錄,不混入原模型的回答用量。", "详情": "詳情", "详情内容": "詳情內容", "请求体": "請求體", "请求图片": "請求圖片", "请求在任何账号接手之前就失败了": "請求在任何帳號接手之前就失敗了", "请求头": "請求頭", "请求已受理,正在选路、取凭证、建立上游连接": "請求已受理,正在選路、取憑證、建立上游連線", "请求日志列表": "請求日誌列表", "请求日志时间范围": "請求日誌時間範圍", "请求日志表": "請求日誌表", "请求正在转发中,用时列显示的是已用时": "請求正在轉發中,用時列顯示的是已用時", "请求筛选": "請求篩選", "请求详情": "請求詳情", "读取请求日志失败,详见控制台": "讀取請求日誌失敗,詳見控制台", "路由回放": "路由回放", "转发到上游的模型:{model}": "轉發到上游的模型:{model}", "轮次": "輪次", "辅助识图调用": "輔助識圖呼叫", "输入 Token": "輸入 Token", "输入 {input} · 输出 {output} · 总计 {total} · 缓存读 {cache}": "輸入 {input} · 輸出 {output} · 總計 {total} · 快取讀 {cache}", "输出 Token": "輸出 Token", "这条报文由旧版本截断保存,缺失内容无法恢复": "這條報文由舊版本截斷儲存,缺失內容無法恢復", "这条明细是一次模型测试(人工发起):走的是真实转发链路,但不计入报表统计": "這條明細是一次模型測試(人工發起):走的是真實轉發鏈路,但不計入報表統計", "这条明细没有记录提供商(旧数据或请求未走到转发)": "這條明細沒有記錄提供商(舊資料或請求未走到轉發)", "这条明细没有记录来源客户端(旧数据、模型测试,或请求未带 User-Agent)": "這條明細沒有記錄來源客戶端(舊資料、模型測試,或請求未帶 User-Agent)", "这条记录命中了敏感词,但没有留下命中明细": "這條記錄命中了敏感詞,但沒有留下命中明細", "这条记录的尝试明细未采集(该字段上线前的旧数据,或请求在转发前就失败)": "這條記錄的嘗試明細未採集(該欄位上線前的舊資料,或請求在轉發前就失敗)", "这条请求没有保存这一段报文": "這條請求沒有儲存這一段報文", "进入「{phase}」阶段已持续 {time}": "進入「{phase}」階段已持續 {time}", "进行中": "進行中", "进行中…": "進行中…", "连接中": "連線中", "速度": "速度", "重试 {n}": "重試 {n}", "重试 {n} 次": "重試 {n} 次", "重试中": "重試中", "重试次数": "重試次數", "面板内发起的模型调用,消耗额度并记录 Key,不计入生产报表": "面板內發起的模型呼叫,消耗額度並記錄 Key,不計入正式流量報表", "预览对话": "預覽對話", "预览读取失败": "預覽讀取失敗", "预览读取失败:{error}": "預覽讀取失敗:{error}", "额外识图用量:{n} Token": "額外識圖用量:{n} Token", "首响": "首響", "首响 {time}": "首響 {time}", "首响:上游首帧到达的耗时": "首響:上游首幀到達的耗時", "首响:上游首帧到达的耗时(请求仍在转发中)": "首響:上游首幀到達的耗時(請求仍在轉發中)", "首帧已到,上游内容正在下发": "首幀已到,上游內容正在下發", "(请求仍在转发中)": "(請求仍在轉發中)", "(账号:{account})": "(帳號:{account})", ",{n}毫秒后重试": ",{n}毫秒後重試", ",{n}秒后重试": ",{n}秒後重試" }); +window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { " · {n} 进行中": " · {n} 進行中", " · 会话粘住": " · 會話粘住", "
    无响应原文
    ": "
    無響應原文
    ", "
    无法解析响应内容
    ": "
    無法解析響應內容
    ", "
    无法解析请求体(不是含 messages 数组的 JSON)
    ": "
    無法解析請求體(不是含 messages 陣列的 JSON)
    ", "
    无请求原文
    ": "
    無請求原文
    ", "
    调用工具 {name}
    ": "
    呼叫工具 {name}
    ", "响应原文": "響應原文", "思考过程": "思考過程", "请求原文": "請求原文", "HTTP {status},但响应体阶段出错": "HTTP {status},但響應體階段出錯", "HTTP {status},但响应体阶段出错:见错误列": "HTTP {status},但響應體階段出錯:見錯誤列", "{duration} / 首帧 {first}": "{duration} / 首幀 {first}", "{m}分{s}秒": "{m}分{s}秒", "{n}秒": "{n}秒", "{s}秒{ms}ms": "{s}秒{ms}ms", "↻ {n} 次": "↻ {n} 次", "↻ 重试 {n} 次": "↻ 重試 {n} 次", "✅ 压缩完成": "✅ 壓縮完成", "「仅看进行中」开启时,状态固定为进行中": "「僅看進行中」開啟時,狀態固定為進行中", "上游模型繁忙,请求已排进上游队列;网关正按上游建议的时长等待后重发(不是登录态或额度问题)": "上游模型繁忙,請求已排進上游佇列;閘道器正按上游建議的時長等待後重發(不是登入態或額度問題)", "上游没有返回积分消耗": "上游沒有返回積分消耗", "上游状态码: {status}": "上游狀態碼: {status}", "上游请求已发出,正在等第一个字节到达(模型的思考时间也在这段)": "上游請求已發出,正在等第一個位元組到達(模型的思考時間也在這段)", "上游返回错误": "上游返回錯誤", "下游请求的模型:{model}": "下游請求的模型:{model}", "仅清空报文原文": "僅清空報文原文", "仅看进行中": "僅看進行中", "令牌": "權杖", "体积": "體積", "供应商": "供應商", "供应商归属规则": "供應商歸屬規則", "保存中…": "儲存中…", "保存归属规则": "儲存歸屬規則", "保留 {count} 条请求记录 · 将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "保留 {count} 條請求記錄 · 將清理上游除錯報文 {upstream} 條、下游正文 {downstream} 條 · 資料庫佔用 {db}", "保留 {count} 条请求记录;将清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。用量统计与报表不变。": "保留 {count} 條請求記錄;將清理上游除錯報文 {upstream} 條、下游正文 {downstream} 條。用量統計與報表不變。", "保留统计行与报表,只抹掉请求 / 响应正文。清理后详情弹窗的「预览对话」将无原文可看,统计数字分毫不动。": "保留統計行與報表,只抹掉請求 / 響應正文。清理後詳情彈窗的「預覽對話」將無原文可看,統計數字分毫不動。", "保留草稿并读取最新设置": "保留草稿並讀取最新設定", "保留请求记录、用量统计与报表,同时清理上游调试报文和下游请求 / 响应正文。清理后「预览对话」与「原始报文」不再保留原文。有筛选时只清理命中请求的报文;无筛选时清空两侧全部报文。此操作无法恢复。": "保留請求記錄、用量統計與報表,同時清理上游除錯報文和下游請求 / 響應正文。清理後「預覽對話」與「原始報文」不再保留原文。有篩選時只清理命中請求的報文;無篩選時清空兩側全部報文。此操作無法恢復。", "全部删除": "全部刪除", "全部提供商": "全部提供商", "全部模型": "全部模型", "全部状态": "全部狀態", "全部请求数据": "全部請求資料", "共 {images} 张图片,复用 {cached} 张识读结果": "共 {images} 張圖片,複用 {cached} 張識讀結果", "共 {n} 次尝试": "共 {n} 次嘗試", "共 {n} 次尝试,最终由 {provider} 承载": "共 {n} 次嘗試,最終由 {provider} 承載", "其它": "其它", "内容按原样保存,请求头中的凭据字段已替换为 [redacted]": "內容按原樣儲存,請求頭中的憑據欄位已替換為 [redacted]", "内部重试": "內部重試", "切换视觉模型": "切換視覺模型", "切换路径:": "切換路徑:", "列表数据已刷新,请重试(关闭后重新打开这条详情)": "列表資料已重新整理,請重試(關閉後重新開啟這條詳情)", "删除归属规则": "刪除歸屬規則", "删除日志记录本身。当前有筛选时只删命中的条目,按天聚合报表不受影响;无筛选时清空全部并重置报表。此方式无法恢复。": "刪除日誌記錄本身。當前有篩選時只刪命中的條目,按天聚合報表不受影響;無篩選時清空全部並重置報表。此方式無法恢復。", "删除请求记录,并同步清理对应的上游调试报文与下游正文。有筛选时只删除命中的记录,按天聚合报表不受影响;无筛选时清空全部并重置报表。此操作无法恢复。": "刪除請求記錄,並同步清理對應的上游除錯報文與下游正文。有篩選時只刪除命中的記錄,按天聚合報表不受影響;無篩選時清空全部並重置報表。此操作無法恢復。", "加载更早的请求": "載入更早的請求", "压缩中…": "壓縮中…", "压缩失败:{message}": "壓縮失敗:{message}", "压缩已在后台开始,完成后会自动提示": "壓縮已在後臺開始,完成後會自動提示", "压缩已在进行中": "壓縮已在進行中", "压缩已在进行中,接上它的进度等待完成": "壓縮已在進行中,接上它的進度等待完成", "压缩数据库": "壓縮資料庫", "压缩正在后台执行,完成后自动恢复": "壓縮正在後臺執行,完成後自動恢復", "原始报文": "原始報文", "原模型": "原模型", "发给上游的模型": "發給上游的模型", "取消": "取消", "另有 {missing} 次尝试未记录明细(只保留最早的 {kept} 条)": "另有 {missing} 次嘗試未記錄明細(只保留最早的 {kept} 條)", "另有 {n} 个词命中": "另有 {n} 個詞命中", "只显示正在转发中的请求(状态列按阶段显示:连接中 / 等待响应 / 响应中 / 重试中,用时列显示已用时)": "只顯示正在轉發中的請求(狀態列按階段顯示:連線中 / 等待響應 / 響應中 / 重試中,用時列顯示已用時)", "只看失败": "只看失敗", "只看成功": "只看成功", "只看进行中": "只看進行中", "命中了敏感词": "命中了敏感詞", "命中依据:{header} · {pattern}": "命中依據:{header} · {pattern}", "命中的敏感词": "命中的敏感詞", "命中规则:{provider} → {client}": "命中規則:{provider} → {client}", "响应中": "響應中", "响应体": "響應體", "响应头": "響應頭", "回收已删除数据占用的磁盘空间(checkpoint + VACUUM,后台执行)": "回收已刪除資料佔用的磁碟空間(checkpoint + VACUUM,後臺執行)", "图片处理用时:{n} 秒": "圖片處理用時:{n} 秒", "在设置 → 通用里开启「调试模式」后,新发生的请求才会保存报文": "在設定 → 通用裡開啟「除錯模式」後,新發生的請求才會儲存報文", "在路由页查看": "在路由頁檢視", "在途 {n}": "在途 {n}", "处理中": "處理中", "失败": "失敗", "失败请求不记录用量": "失敗請求不記錄用量", "失败({status}):{error}": "失敗({status}):{error}", "失败:{error}": "失敗:{error}", "实际发给上游 {bytes} 字节": "實際發給上游 {bytes} 位元組", "客户端": "客戶端", "客户端请求的模型": "客戶端請求的模型", "将删除 {count} 条日志 · 其中 {raw} 条仍带报文原文 · 数据库占用 {db}": "將刪除 {count} 條日誌 · 其中 {raw} 條仍帶報文原文 · 資料庫佔用 {db}", "将删除 {count} 条请求记录 · 同步清理上游调试报文 {upstream} 条、下游正文 {downstream} 条 · 数据库占用 {db}": "將刪除 {count} 條請求記錄 · 同步清理上游除錯報文 {upstream} 條、下游正文 {downstream} 條 · 資料庫佔用 {db}", "将删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "將刪除 {count} 條請求記錄,並清理上游除錯報文 {upstream} 條、下游正文 {downstream} 條。", "尝试 {n} ·": "嘗試 {n} ·", "尝试明细": "嘗試明細", "尝试次数": "嘗試次數", "尝试链": "嘗試鏈", "工具结果": "工具結果", "工具结果 · {id}": "工具結果 · {id}", "工具结果图片": "工具結果圖片", "已删除 {count} 条": "已刪除 {count} 條", "已删除 {count} 条请求记录,并清理上游调试报文 {upstream} 条、下游正文 {downstream} 条。": "已刪除 {count} 條請求記錄,並清理上游除錯報文 {upstream} 條、下游正文 {downstream} 條。", "已受理终止:上游连接已断开,列表稍后刷新为「请求已被手动终止」": "已受理終止:上游連線已斷開,列表稍後重新整理為「請求已被手動終止」", "已完成": "已完成", "已抹掉 {count} 条报文原文": "已抹掉 {count} 條報文原文", "已清理上游调试报文 {upstream} 条、下游正文 {downstream} 条;请求记录与报表已保留。": "已清理上游除錯報文 {upstream} 條、下游正文 {downstream} 條;請求記錄與報表已保留。", "已用时(请求仍在转发中)": "已用時(請求仍在轉發中)", "开启调试模式后仅记录新请求,历史对话无法补录;关闭不会删除已有记录。": "開啟偵錯模式後僅記錄新請求,歷史對話無法補錄;關閉不會刪除已有記錄。", "归属客户端": "歸屬客戶端", "当前筛选下没有记录": "當前篩選下沒有記錄", "当前筛选范围": "當前篩選範圍", "当前网关未提供上游 / 下游清理统计,请更新网关后再清理。": "當前閘道器未提供上游 / 下游清理統計,請更新閘道器後再清理。", "成功": "成功", "成功({status})": "成功({status})", "所属请求": "所屬請求", "执行清理": "執行清理", "报文超过单条上限,请求体 / 响应体已按上限截断": "報文超過單條上限,請求體 / 響應體已按上限截斷", "抹掉原文": "抹掉原文", "按提供商筛选": "按提供商篩選", "按提供商筛选(只列日志里出现过的)": "按提供商篩選(只列日誌裡出現過的)", "按时间倒序,全量保留": "按時間倒序,全量保留", "按模型筛选": "按模型篩選", "按模型筛选(只列日志里出现过的;精确匹配模型名)": "按模型篩選(只列日誌裡出現過的;精確匹配模型名)", "按请求结果筛选": "按請求結果篩選", "换号链:{chain}": "換號鏈:{chain}", "排队中": "排隊中", "提供商 / 账号": "提供商 / 帳號", "提供商: {provider}": "提供商: {provider}", "提示": "提示", "搜索供应商": "搜尋供應商", "搜索客户端": "搜尋客戶端", "敏": "敏", "敏感词": "敏感詞", "数据库占用包含主文件与 WAL 文件;清理后可点击「压缩数据库」回收空闲空间。": "資料庫佔用包含主檔案與 WAL 檔案;清理後可點擊「壓縮資料庫」回收空閒空間。", "断开上游连接,明细记为「请求已被手动终止」": "斷開上游連線,明細記為「請求已被手動終止」", "无报文原文(未开启「调试模式」,或已被清理)": "無報文原文(未開啟「除錯模式」,或已被清理)", "无结果记录": "無結果記錄", "旧版本保存的正文可能已截断,无法恢复缺失内容": "舊版本儲存的正文可能已截斷,無法恢復缺失內容", "时间": "時間", "暂无请求日志": "暫無請求日誌", "暂无请求日志,网关还没有转发过请求": "暫無請求日誌,閘道器還沒有轉發過請求", "最终归属(记账时的客户端)": "最終歸屬(記賬時的客戶端)", "最终承载:{picked}": "最終承載:{picked}", "有重试": "有重試", "未改写,保留识别结果": "未改寫,保留識別結果", "本次请求消耗 {credit} 积分": "本次請求消耗 {credit} 積分", "本轮尝试失败,正在退避等待或切换到下一个账号": "本輪嘗試失敗,正在退避等待或切換到下一個帳號", "来源客户端": "來源客戶端", "来源客户端:{client}": "來源客戶端:{client}", "查看该请求的上游原始报文": "檢視該請求的上游原始報文", "模型": "模型", "模型映射:{from} → {to}": "模型對映:{from} → {to}", "模型测试": "模型測試", "模型管理页操作列那颗「测试」发起的请求:与真实请求同一条转发链路,但不计入报表统计": "模型管理頁操作列那顆「測試」發起的請求:與真實請求同一條轉發鏈路,但不計入報表統計", "正在加载请求日志…": "正在載入請求日誌…", "正在统计…": "正在統計…", "正文超过单条上限,可能已被截断": "正文超過單條上限,可能已被截斷", "没有符合筛选条件的请求": "沒有符合篩選條件的請求", "添加自定义头匹配规则…": "新增自定義頭匹配規則…", "清理": "清理", "清理中…": "清理中…", "清理失败:{message}": "清理失敗:{message}", "清理方式": "清理方式", "清理请求已返回,但结果数据不完整,请刷新后确认。": "清理請求已返回,但結果資料不完整,請重新整理後確認。", "清理请求日志": "清理請求日誌", "清理预览数据不完整": "清理預覽資料不完整", "清空两侧原文": "清空兩側原文", "生产请求": "生產請求", "生成速度:输出 token ÷ 流式段用时(总用时 − 首响);流式段不足总用时一半时按总用时计": "生成速度:輸出 token ÷ 流式段用時(總用時 − 首響);流式段不足總用時一半時按總用時計", "用时": "用時", "用量": "用量", "确定对{scope}执行「{label}」?
    {summary}
    此操作无法恢复。": "確定對{scope}執行「{label}」?
    {summary}
    此操作無法恢復。", "确定对全部请求日志执行「{label}」?将处理 {count} 条,此操作无法恢复。": "確定對全部請求日誌執行「{label}」?將處理 {count} 條,此操作無法恢復。", "确定按当前筛选执行「{label}」?将处理 {count} 条,此操作无法恢复。": "確定按當前篩選執行「{label}」?將處理 {count} 條,此操作無法恢復。", "确定终止这条正在转发的请求?
    上游连接会立即断开,明细将记为「请求已被手动终止」。": "確定終止這條正在轉發的請求?
    上游連線會立即斷開,明細將記為「請求已被手動終止」。", "等待响应": "等待響應", "策略 {strategy} · 会话粘性 {sticky}{hit}": "策略 {strategy} · 會話粘性 {sticky}{hit}", "终止": "終止", "终止失败:{error}": "終止失敗:{error}", "终止请求": "終止請求", "结果": "結果", "缓存读取: - / 命中率: -": "快取讀取: - / 命中率: -", "缓存读取: {cache} / 命中率: {rate}": "快取讀取: {cache} / 命中率: {rate}", "编辑这条头匹配规则…": "編輯這條頭匹配規則…", "耗时": "耗時", "脱敏命中:{words}": "脫敏命中:{words}", "自定义 · {name}": "自定義 · {name}", "被跳过:": "被跳過:", "设置识别规则": "設定識別規則", "识别到 User-Agent,但不属于已知的客户端类型:{ua}": "識別到 User-Agent,但不屬於已知的客戶端型別:{ua}", "识别结果(请求头识别出的真实客户端)": "識別結果(請求頭識別出的真實客戶端)", "识图用量按实际视觉账号单独记录,不混入原模型的回答用量。": "識圖用量按實際視覺帳號單獨記錄,不混入原模型的回答用量。", "该供应商已有归属规则,保存将覆盖它": "該供應商已有歸屬規則,儲存將覆蓋它", "详情": "詳情", "详情内容": "詳情內容", "请求体": "請求體", "请求图片": "請求圖片", "请求在任何账号接手之前就失败了": "請求在任何帳號接手之前就失敗了", "请求头": "請求頭", "请求头识别为 {identified},已改写归属为 {client}": "請求頭識別為 {identified},已改寫歸屬為 {client}", "请求已受理,正在选路、取凭证、建立上游连接": "請求已受理,正在選路、取憑證、建立上游連線", "请求日志列表": "請求日誌列表", "请求日志时间范围": "請求日誌時間範圍", "请求日志表": "請求日誌表", "请求正在转发中,用时列显示的是已用时": "請求正在轉發中,用時列顯示的是已用時", "请求筛选": "請求篩選", "请求详情": "請求詳情", "请选择供应商": "請選擇供應商", "请选择归属客户端": "請選擇歸屬客戶端", "读取请求日志失败,详见控制台": "讀取請求日誌失敗,詳見控制台", "路由回放": "路由回放", "转发到上游的模型:{model}": "轉發到上游的模型:{model}", "轮次": "輪次", "辅助识图": "輔助識圖", "辅助识图调用": "輔助識圖呼叫", "输入 Token": "輸入 Token", "输入 {input} · 输出 {output} · 总计 {total} · 缓存读 {cache}": "輸入 {input} · 輸出 {output} · 總計 {total} · 快取讀 {cache}", "输出 Token": "輸出 Token", "这条报文由旧版本截断保存,缺失内容无法恢复": "這條報文由舊版本截斷儲存,缺失內容無法恢復", "这条明细是一次模型测试(人工发起):走的是真实转发链路,但不计入报表统计": "這條明細是一次模型測試(人工發起):走的是真實轉發鏈路,但不計入報表統計", "这条明细没有记录提供商(旧数据或请求未走到转发)": "這條明細沒有記錄提供商(舊資料或請求未走到轉發)", "这条明细没有记录来源客户端(旧数据、模型测试,或请求未带 User-Agent)": "這條明細沒有記錄來源客戶端(舊資料、模型測試,或請求未帶 User-Agent)", "这条记录命中了敏感词,但没有留下命中明细": "這條記錄命中了敏感詞,但沒有留下命中明細", "这条记录的尝试明细未采集(该字段上线前的旧数据,或请求在转发前就失败)": "這條記錄的嘗試明細未採集(該欄位上線前的舊資料,或請求在轉發前就失敗)", "这条请求没有保存这一段报文": "這條請求沒有儲存這一段報文", "这条请求没有记录供应商(旧数据或未走到转发),不能从这里改归属": "這條請求沒有記錄供應商(舊資料或未走到轉發),不能從這裡改歸屬", "进入「{phase}」阶段已持续 {time}": "進入「{phase}」階段已持續 {time}", "进行中": "進行中", "进行中…": "進行中…", "连接中": "連線中", "选择供应商": "選擇供應商", "选择归属客户端": "選擇歸屬客戶端", "速度": "速度", "重试 {n}": "重試 {n}", "重试 {n} 次": "重試 {n} 次", "重试中": "重試中", "重试次数": "重試次數", "面板内发起的模型调用,消耗额度并记录 Key,不计入生产报表": "面板內發起的模型呼叫,消耗額度並記錄 Key,不計入正式流量報表", "预览对话": "預覽對話", "预览读取失败": "預覽讀取失敗", "预览读取失败:{error}": "預覽讀取失敗:{error}", "额外识图用量:{n} Token": "額外識圖用量:{n} Token", "首响": "首響", "首响 {time}": "首響 {time}", "首响:上游首帧到达的耗时": "首響:上游首幀到達的耗時", "首响:上游首帧到达的耗时(请求仍在转发中)": "首響:上游首幀到達的耗時(請求仍在轉發中)", "首帧已到,上游内容正在下发": "首幀已到,上游內容正在下發", "默认归属客户端": "預設歸屬客戶端", "(请求仍在转发中)": "(請求仍在轉發中)", "(账号:{account})": "(帳號:{account})", ",{n}毫秒后重试": ",{n}毫秒後重試", ",{n}秒后重试": ",{n}秒後重試" }); diff --git a/desktop-tauri/ui/i18n/zh-Hant/settings.js b/desktop-tauri/ui/i18n/zh-Hant/settings.js index b90aa4a9..160780c0 100644 --- a/desktop-tauri/ui/i18n/zh-Hant/settings.js +++ b/desktop-tauri/ui/i18n/zh-Hant/settings.js @@ -1,2 +1,2 @@ /* Agent2API 词典构建产物:zh-Hant/settings —— 由 desktop-tauri/i18n/build.mjs 生成,请勿手改;源头是 i18n-src/*.json */ -window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { " 到 {file}": " 到 {file}", " 正文已改:{edited}(其余段用官方原文)。": " 正文已改:{edited}(其餘段用官方原文)。", "(无 id)": "(無 id)", "/v1 拒绝无 Key 请求": "/v1 拒絕無 Key 請求", "0 B": "0 B", "100%(默认)": "100%(預設)", "<本机IP>": "<本機IP>", "ALTCHA(本地验证)": "ALTCHA(本機驗證)", "Access Key ID": "Access Key ID", "Agent2API 手机端": "Agent2API 手機端", "Android 应用(APK)": "Android 應用(APK)", "Cline 上游按请求头判定「调用方是不是 Cline 自家产品」:X-CLIENT-TYPE: cline-sdk 是硬门槛(缺了它免费池模型一律 403),版本号与平台标识让请求更贴近官方客户端的形态。这里列出的是网关默认会发的头:改某一行的值 = 覆盖默认值(也可以新增默认清单之外的自定义头);把值清空保存 = 这个头不发送;在界面删掉被改过的行 = 回落默认值。改完点「保存」,下一个 Cline 请求立即生效。不懂某一行的含义就不要动它 —— 伪装头的价值在「与官方客户端逐字一致」。": "Cline 上游按請求頭判定「呼叫方是不是 Cline 自家產品」:X-CLIENT-TYPE: cline-sdk 是硬門檻(缺了它免費池模型一律 403),版本號與平臺標識讓請求更貼近官方客戶端的形態。這裡列出的是閘道器預設會發的頭:改某一行的值 = 覆蓋預設值(也可以新增預設清單之外的自定義頭);把值清空儲存 = 這個頭不傳送;在介面刪掉被改過的行 = 回落預設值。改完點「儲存」,下一個 Cline 請求立即生效。不懂某一行的含義就不要動它 —— 偽裝頭的價值在「與官方客戶端逐字一致」。", "Cline 伪装头": "Cline 偽裝頭", "Cline 伪装头已刷新": "Cline 偽裝頭已重新整理", "Docker 容器": "Docker 容器", "Endpoint": "Endpoint", "Endpoint 填 https://<账户ID>.r2.cloudflarestorage.com,Region 固定填 auto。": "Endpoint 填 https://<帳戶ID>.r2.cloudflarestorage.com,Region 固定填 auto。", "Endpoint 填 https://cos.ap-guangzhou.myqcloud.com,Region 填 ap-guangzhou(按实际地域改)。": "Endpoint 填 https://cos.ap-guangzhou.myqcloud.com,Region 填 ap-guangzhou(按實際地域改)。", "Endpoint 填 https://obs.cn-north-4.myhuaweicloud.com,Region 填 cn-north-4(按实际地域改)。": "Endpoint 填 https://obs.cn-north-4.myhuaweicloud.com,Region 填 cn-north-4(按實際地域改)。", "Endpoint 填 https://oss-cn-hangzhou.aliyuncs.com,Region 填 cn-hangzhou(按实际地域改)。": "Endpoint 填 https://oss-cn-hangzhou.aliyuncs.com,Region 填 cn-hangzhou(按實際地域改)。", "Endpoint 形如 http://192.168.1.10:9000(自建通常用 http);Region 一般填 us-east-1。": "Endpoint 形如 http://192.168.1.10:9000(自建通常用 http);Region 一般填 us-east-1。", "Endpoint 留空即走 AWS 官方地址;Region 必须与桶所在区域一致。": "Endpoint 留空即走 AWS 官方地址;Region 必須與桶所在區域一致。", "KB": "KB", "Linux 安装包(deb)": "Linux 安裝包(deb)", "Logo 不能超过 2 MiB": "Logo 不能超過 2 MiB", "Logo 仅支持 PNG、JPG、WebP 图片": "Logo 僅支援 PNG、JPG、WebP 圖片", "Nextcloud": "Nextcloud", "OpenAI 新版 API 用 developer 角色取代 system 承载指令,新版 OpenAI SDK 与部分客户端发的对话里会出现 role 为 developer 的消息;不少 OpenAI 兼容上游(尤其是自定义提供商的透传路径)不认识这个角色,收到就报 400。开启本项后,网关在每次转发前把 developer 角色的消息改写为 system —— 两类角色在 OpenAI 语义上等价(OpenAI 自己的迁移指南也是这么映射的),改写不影响对话内容与语义;对本来就只认 system 的各家内置上游同样无害。默认开启;关掉后 developer 消息会原样发往上游,不认识它的上游会报「角色不存在」一类的错误。": "OpenAI 新版 API 用 developer 角色取代 system 承載指令,新版 OpenAI SDK 與部分客戶端發的對話裡會出現 role 為 developer 的訊息;不少 OpenAI 相容上游(尤其是自定義提供商的透傳路徑)不認識這個角色,收到就報 400。開啟本項後,閘道器在每次轉發前把 developer 角色的訊息改寫為 system —— 兩類角色在 OpenAI 語義上等價(OpenAI 自己的遷移指南也是這麼對映的),改寫不影響對話內容與語義;對本來就只認 system 的各家內建上游同樣無害。預設開啟;關掉後 developer 訊息會原樣發往上游,不認識它的上游會報「角色不存在」一類的錯誤。", "QQ 群 · Telegram": "QQ 群 · Telegram", "S3 兼容存储": "S3 相容儲存", "Safari 没有安装按钮:点底部的「分享」,选「添加到主屏幕」,再点「添加」。": "Safari 沒有安裝按鈕:點底部的「分享」,選「新增到主螢幕」,再點「新增」。", "Secret Access Key": "Secret Access Key", "Token 读数量级": "Token 讀數量級", "UTF-8 文本文件路径。留空用内置默认;只在「替换 / 追加」下读取。": "UTF-8 文本檔案路徑。留空用內建預設;只在「替換 / 追加」下讀取。", "UTF-8 文本文件路径,留空用内置默认提示词(通用编码助手提示词,不含任何会被上游拦截的模板句)。只在「替换 / 追加」模式下生效,透传模式不读它。": "UTF-8 文本檔案路徑,留空用內建預設提示詞(通用編碼助手提示詞,不含任何會被上游攔截的模板句)。只在「替換 / 追加」模式下生效,透傳模式不讀它。", "WebView / 浏览器内核": "WebView / 瀏覽器核心", "Windows 安装包(NSIS)": "Windows 安裝包(NSIS)", "Windows 服务": "Windows 服務", "ZCode 套餐池(Start Plan)通道每条请求都要消耗一个当次铸造的人机验证令牌(一次性,2 分钟过期),库存低于该值时界面自动补铸到它。默认 3 个。调大能吸收突发并发,但用不掉的令牌 2 分钟就过期作废,烧的是上游风控配额。可填 1–10。": "ZCode 套餐池(Start Plan)通道每條請求都要消耗一個當次鑄造的人機驗證權杖(一次性,2 分鐘過期),庫存低於該值時介面自動補鑄到它。預設 3 個。調大能吸收突發併發,但用不掉的權杖 2 分鐘就過期作廢,燒的是上游風控配額。可填 1–10。", "ZCode 客户端版本号": "ZCode 客戶端版本號", "ZCode 活动套餐通道每条请求都要消耗一个当次铸造的人机验证令牌(一次性,2 分钟过期),库存低于该值时界面自动补铸到它。默认 3 个。调大能吸收突发并发,但用不掉的令牌 2 分钟就过期作废,烧的是上游风控配额。可填 1–10。": "ZCode 活動套餐通道每條請求都要消耗一個當次鑄造的人機驗證權杖(一次性,2 分鐘過期),庫存低於該值時介面自動補鑄到它。預設 3 個。調大能吸收突發併發,但用不掉的權杖 2 分鐘就過期作廢,燒的是上游風控配額。可填 1–10。", "ZCode 版本号已刷新": "ZCode 版本號已重新整理", "ZCode 的活动套餐(限时体验礼包)由上游按**客户端版本号**决定下不下发:探测接口只在版本号达到当期门槛时才返回套餐列表,版本落后时回一份空列表(不是报错,所以界面上看起来像「没有活动」)。2026-10 那期实测:3.16.0 及以下全空,3.16.1 起才有礼包。插件内置的默认值会随活动更新,但上游每期可能再抬高一档 —— 那时如果官方客户端里能看到活动、这里却探测为空,就在这里填官方客户端当前的版本号(形如 3.16.2)。环境变量 ZCODE_APP_VERSION 优先级更高。": "ZCode 的活動套餐(限時體驗禮包)由上游按**客戶端版本號**決定下不下發:探測介面只在版本號達到當期門檻時才返回套餐列表,版本落後時回一份空列表(不是報錯,所以介面上看起來像「沒有活動」)。2026-10 那期實測:3.16.0 及以下全空,3.16.1 起才有禮包。外掛內建的預設值會隨活動更新,但上游每期可能再抬高一檔 —— 那時如果官方客戶端裡能看到活動、這裡卻探測為空,就在這裡填官方客戶端當前的版本號(形如 3.16.2)。環境變數 ZCODE_APP_VERSION 優先順序更高。", "ZCode「套餐池(Start Plan)」通道的每条推理请求都要附一个当次铸造的阿里云无痕验证令牌(一次性、约 2 分钟过期):令牌由界面里的铸造守卫静默铸好、推给网关入池,转发时逐条取用。这里的三个值管的是补货节奏:①「库存目标」= 库存低于它守卫才补铸、补到它为止,默认 3 个;②「轮询间隔」= 守卫多久看一次库存,默认 2500 毫秒,只影响反应速度(库存够用时不会多铸);③「单轮铸造上限」= 发现缺货时一轮最多铸几个,默认 1 个(连铸之间固定隔 500 毫秒)。请求密集、请求日志里连续出现「需要人机验证令牌」的 503 时,把目标与单轮上限适当调大、轮询调快,能让池子跟得上消耗 —— 代价是上游(阿里云)对铸造频率有风控,铸得越多越快越容易触发限流,且用不掉的令牌 2 分钟即过期作废、等于白烧配额,所以建议小步调。保存后对下一轮补货立即生效,不用重启。": "ZCode「套餐池(Start Plan)」通道的每條推理請求都要附一個當次鑄造的阿里雲無痕驗證權杖(一次性、約 2 分鐘過期):權杖由介面裡的鑄造守衛靜默鑄好、推給閘道器入池,轉發時逐條取用。這裡的三個值管的是補貨節奏:①「庫存目標」= 庫存低於它守衛才補鑄、補到它為止,預設 3 個;②「輪詢間隔」= 守衛多久看一次庫存,預設 2500 毫秒,隻影響反應速度(庫存夠用時不會多鑄);③「單輪鑄造上限」= 發現缺貨時一輪最多鑄幾個,預設 1 個(連鑄之間固定隔 500 毫秒)。請求密集、請求日誌裡連續出現「需要人機驗證權杖」的 503 時,把目標與單輪上限適當調大、輪詢調快,能讓池子跟得上消耗 —— 代價是上游(阿里雲)對鑄造頻率有風控,鑄得越多越快越容易觸發限流,且用不掉的權杖 2 分鐘即過期作廢、等於白燒配額,所以建議小步調。儲存後對下一輪補貨立即生效,不用重啟。", "ZCode「活动套餐」通道的每条推理请求都要附一个当次铸造的阿里云无痕验证令牌(一次性、约 2 分钟过期):令牌由界面里的铸造守卫静默铸好、推给网关入池,转发时逐条取用。这里的三个值管的是补货节奏:①「库存目标」= 库存低于它守卫才补铸、补到它为止,默认 3 个;②「轮询间隔」= 守卫多久看一次库存,默认 2500 毫秒,只影响反应速度(库存够用时不会多铸);③「单轮铸造上限」= 发现缺货时一轮最多铸几个,默认 1 个(连铸之间固定隔 500 毫秒)。请求密集、请求日志里连续出现「需要人机验证令牌」的 503 时,把目标与单轮上限适当调大、轮询调快,能让池子跟得上消耗 —— 代价是上游(阿里云)对铸造频率有风控,铸得越多越快越容易触发限流,且用不掉的令牌 2 分钟即过期作废、等于白烧配额,所以建议小步调。保存后对下一轮补货立即生效,不用重启。": "ZCode「活動套餐」通道的每條推理請求都要附一個當次鑄造的阿里雲無痕驗證權杖(一次性、約 2 分鐘過期):權杖由介面裡的鑄造守衛靜默鑄好、推給閘道器入池,轉發時逐條取用。這裡的三個值管的是補貨節奏:①「庫存目標」= 庫存低於它守衛才補鑄、補到它為止,預設 3 個;②「輪詢間隔」= 守衛多久看一次庫存,預設 2500 毫秒,隻影響反應速度(庫存夠用時不會多鑄);③「單輪鑄造上限」= 發現缺貨時一輪最多鑄幾個,預設 1 個(連鑄之間固定隔 500 毫秒)。請求密集、請求日誌裡連續出現「需要人機驗證權杖」的 503 時,把目標與單輪上限適當調大、輪詢調快,能讓池子跟得上消耗 —— 代價是上游(阿里雲)對鑄造頻率有風控,鑄得越多越快越容易觸發限流,且用不掉的權杖 2 分鐘即過期作廢、等於白燒配額,所以建議小步調。儲存後對下一輪補貨立即生效,不用重啟。", "beta 版": "beta 版", "iOS 应用": "iOS 應用", "models.dev 元数据": "models.dev 後設資料", "models.dev 元数据已更新({count} 条)": "models.dev 後設資料已更新({count} 條)", "models.dev 是一个开源的模型资料库(社区维护),这里用它补齐「上游没告诉我们」的模型能力:上下文窗口、最大输出、工具调用、图片、视频、是否支持思考,以及这个模型认识哪些思考档位。优先级是:你在「模型能力」里手工改的值 > 上游清单自己声明的值 > models.dev 的值 —— 它只填上游没声明的空位,从不推翻上游已声明的。网关随包内嵌了一份快照,所以离线、首次启动、访问不通时也有数据;开启时会按「模型目录刷新」任务的间隔联网更新(同一轮里一并刷新,也可在这里立即刷新)。关闭只停联网刷新,已经拿到的数据继续用。": "models.dev 是一個開源的模型資料庫(社群維護),這裡用它補齊「上游沒告訴我們」的模型能力:上下文視窗、最大輸出、工具呼叫、圖片、影片、是否支援思考,以及這個模型認識哪些思考檔位。優先順序是:你在「模型能力」裡手工改的值 > 上游清單自己宣告的值 > models.dev 的值 —— 它只填上游沒宣告的空位,從不推翻上游已宣告的。閘道器隨包內嵌了一份快照,所以離線、首次啟動、存取不通時也有資料;開啟時會按「模型目錄重新整理」任務的間隔聯網更新(同一輪裡一併重新整理,也可在這裡立即重新整理)。關閉只停聯網重新整理,已經拿到的資料繼續用。", "models.dev 模型元数据": "models.dev 模型後設資料", "systemd 服务": "systemd 服務", "{count} 条": "{count} 條", "{count} 条 · 来自{origin}{at} · {mode}": "{count} 條 · 來自{origin}{at} · {mode}", "{count} 条规则,按列表顺序执行": "{count} 條規則,按列表順序執行", "{d} 天 {h} 小时": "{d} 天 {h} 小時", "{h} 小时 {m} 分钟": "{h} 小時 {m} 分鐘", "{label} 提示词文件": "{label} 提示詞檔案", "{label} 的提示词模式": "{label} 的提示詞模式", "{label}({message})": "{label}({message})", "{lines} 行、{chars} 字符(按当前草稿计)": "{lines} 行、{chars} 字元(按當前草稿計)", "{minutes} 分钟": "{minutes} 分鐘", "{models} 同时出现在两块设置里,会按「辅助识图」处理。想改的话,把其中一个从这边的模型名单里去掉。": "{models} 同時出現在兩塊設定裡,會按「輔助識圖」處理。想改的話,把其中一個從這邊的模型名單裡去掉。", "{mode}生效:上游收到的 system 来自{source}{lines}。": "{mode}生效:上游收到的 system 來自{source}{lines}。", "{m} 分 {s} 秒": "{m} 分 {s} 秒", "{m} 分钟": "{m} 分鐘", "{noun}不能为空(可填 {min}–{max})": "{noun}不能為空(可填 {min}–{max})", "{noun}必须在 {min}–{max} 之间(当前填的是 {text})": "{noun}必須在 {min}–{max} 之間(當前填的是 {text})", "{noun}必须是整数": "{noun}必須是整數", "{n} B": "{n} B", "{n} GB": "{n} GB", "{n} KB": "{n} KB", "{n} MB": "{n} MB", "{n} 个头将随每个 Cline 请求发送": "{n} 個頭將隨每個 Cline 請求傳送", "{n} 台可选 · 点此切换": "{n} 臺可選 · 點此切換", "{n} 项 · {shown} 显示": "{n} 項 · {shown} 顯示", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "{total} 個選單 · 顯示 {shown} · 隱藏 {hidden} · {groups} 個分組", "{way}的适用模型": "{way}的適用模型", "…": "…", "⚠️ 密钥警告": "⚠️ 金鑰警告", "⚠️ 已关闭「{label}」的机器人校验": "⚠️ 已關閉「{label}」的機器人校驗", "⚠️ 机器人校验已关闭": "⚠️ 機器人校驗已關閉", "✅ Cline 伪装头已保存": "✅ Cline 偽裝頭已儲存", "✅ ZCode 版本号已保存": "✅ ZCode 版本號已儲存", "✅ models.dev 模型元数据已开启": "✅ models.dev 模型後設資料已開啟", "✅ 云同步设置已保存": "✅ 雲同步設定已儲存", "✅ 会话图片压缩已开启": "✅ 會話圖片壓縮已開啟", "✅ 出站指纹脱敏已开启": "✅ 出站指紋脫敏已開啟", "✅ 密码已修改,其他设备的登录已失效": "✅ 密碼已修改,其他裝置的登入已失效", "✅ 导入完成:{summary}": "✅ 匯入完成:{summary}", "✅ 已上传到云端({size})": "✅ 已上傳到雲端({size})", "✅ 已为「{label}」装上网关自带提示词": "✅ 已為「{label}」裝上閘道器自帶提示詞", "✅ 已从云端恢复{note}": "✅ 已從雲端恢復{note}", "✅ 已保存:{label}": "✅ 已儲存:{label}", "✅ 已保存:{label} {value}": "✅ 已儲存:{label} {value}", "✅ 已保存:指定错误码直接换号": "✅ 已儲存:指定錯誤碼直接換號", "✅ 已保留 {days} 天": "✅ 已保留 {days} 天", "✅ 已保留 {days} 天,超出部分已清理": "✅ 已保留 {days} 天,超出部分已清理", "✅ 已加密备份 {n} 张表({size}),包含恢复密钥:{file}": "✅ 已加密備份 {n} 張表({size}),包含恢復金鑰:{file}", "✅ 已备份 {n} 张表({size})到 {file}": "✅ 已備份 {n} 張表({size})到 {file}", "✅ 已导入账号密钥,请继续下载": "✅ 已匯入帳號金鑰,請繼續下載", "✅ 已导出 {count} 个账号{note}{file}": "✅ 已匯出 {count} 個帳號{note}{file}", "✅ 已开启「{label}」的机器人校验": "✅ 已開啟「{label}」的機器人校驗", "✅ 已恢复 {n} 张表": "✅ 已恢復 {n} 張表", "✅ 已恢复 {n} 张表{note}": "✅ 已恢復 {n} 張表{note}", "✅ 已改用 k / M / B 缩写": "✅ 已改用 k / M / B 縮寫", "✅ 已改用本地量级词(万 / 亿式)": "✅ 已改用本地量級詞(萬 / 億式)", "✅ 已自动创建网关 Key「默认」(可在「网关 Key」页查看)": "✅ 已自動建立閘道器 Key「預設」(可在「閘道器 Key」頁檢視)", "✅ 已解除内容拦截降级": "✅ 已解除內容攔截降級", "✅ 开发者角色兼容已开启": "✅ 開發者角色相容已開啟", "✅ 指纹脱敏设置已保存": "✅ 指紋脫敏設定已儲存", "✅ 数量上限已设为 {count} 条": "✅ 數量上限已設為 {count} 筆", "✅ 数量上限已设为 {count} 条,超出部分已清理": "✅ 數量上限已設為 {count} 筆,超出部分已清理", "✅ 机器人校验已开启": "✅ 機器人校驗已開啟", "✅ 第三方模型回答完自动折叠过程已开启": "✅ 第三方模型回答完自動摺疊過程已開啟", "✅ 设置已保存,应用正在重启…": "✅ 設定已儲存,應用正在重啟…", "✅ 调试模式已关闭": "✅ 除錯模式已關閉", "✅ 调试模式已开启": "✅ 除錯模式已開啟", "✅ 路由设置已保存": "✅ 路由設定已儲存", "✅ 连接成功:{path}": "✅ 連線成功:{path}", "、{n} 个自定义提供商": "、{n} 個自定義提供商", "。事件日志、请求明细、调试报文与面板登录态保持不变。替换前会自动把当前业务数据备份到配置目录的 backups/ 下。": "。事件日誌、請求明細、除錯報文與面板登入態保持不變。替換前會自動把當前業務資料備份到配置目錄的 backups/ 下。", "「{label}」将从 {previous} 天改为 {days} 天。": "「{label}」將從 {previous} 天改為 {days} 天。", "「{label}」将从 {previous} 条改为 {count} 条。": "「{label}」將從 {previous} 筆改為 {count} 筆。", "「{label}」改用内置默认提示词": "「{label}」改用內建預設提示詞", "「{label}」的提示词文件已更新": "「{label}」的提示詞檔案已更新", "「{label}」的提示词正文已更新": "「{label}」的提示詞正文已更新", "「{label}」的模式改为「{mode}」": "「{label}」的模式改為「{mode}」", "「{label}」的网关自带提示词已改回官方原文": "「{label}」的閘道器自帶提示詞已改回官方原文", "「{label}」的网关自带提示词正文已更新": "「{label}」的閘道器自帶提示詞正文已更新", "「模型管理」里每个能力的来源标记(上游 / models.dev / 已覆盖)读的就是这份数据;映射弹窗的思考档位下拉也按这里的数据只列该模型真实认识的档位。": "「模型管理」裡每個能力的來源標記(上游 / models.dev / 已覆蓋)讀的就是這份資料;對映彈窗的思考檔位下拉也按這裡的資料只列該模型真實認識的檔位。", "「用哪份提示词」本来是按上游分别决定的事,所以每家可以有自己的模式、提示词文件与正文:不在这里列出的提供商一律沿用上面那份默认设置,「跟随默认」把这一家取消、回到默认。带「网关自带」那一行的家(目前是 ZCode 两家)默认就列在这里 —— 那一段是网关自己装上去的文本,不来自客户端也不来自提示词文件,默认开启、可以关掉,也可以改它的正文(改过的那一段以你的文本为准);关掉后还能不能通过上游校验,取决于上游当下的口径,行内说明了实测依据。「模式 / 提示词文件 / 正文」管的是客户端自己的 system 怎么处理,与那个开关是两件事。": "「用哪份提示詞」本來是按上游分別決定的事,所以每家可以有自己的模式、提示詞檔案與正文:不在這裡列出的提供商一律沿用上面那份預設設定,「跟隨預設」把這一家取消、回到預設。帶「閘道器自帶」那一行的家(目前是 ZCode 兩家)預設就列在這裡 —— 那一段是閘道器自己裝上去的文本,不來自客戶端也不來自提示詞檔案,預設開啟、可以關掉,也可以改它的正文(改過的那一段以你的文本為準);關掉後還能不能通過上游校驗,取決於上游當下的口徑,行內說明了實測依據。「模式 / 提示詞檔案 / 正文」管的是客戶端自己的 system 怎麼處理,與那個開關是兩件事。", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "「設定」是固定項,含它的分組不能整組隱藏;可以單獨隱藏組內其它選單", "「请求日志」页的逐条请求记录,默认 99999 天(近似全量保留),可填 1–99999 天。": "「請求日誌」頁的逐條請求記錄,預設 99999 天(近似全量保留),可填 1–99999 天。", "「请求日志」页的逐条请求记录,默认 99999 天,可填 1–99999 天;同时受数量上限限制。": "「請求日誌」頁的逐筆請求記錄,預設 99999 天,可填 1–99999 天;同時受數量上限限制。", "一个 .a2ab 文件即可跨机器恢复,账号、网关 Key、GitHub 令牌与云同步凭据无需另行复制密钥。插件程序与库外文件不在整库备份范围。": "一個 .a2ab 檔案即可跨機器恢復,帳號、閘道器 Key、GitHub 權杖與雲同步憑據無需另行復制金鑰。外掛程式與庫外檔案不在整庫備份範圍。", "一段内置装配": "一段內建裝配", "三档数据各自独立计时,超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件;请求日志是网关每次转发到上游的逐条记录;按天聚合供报表页的热力图与按天趋势使用。请求日志与按天聚合默认 99999 天(约 274 年,效果上等于全量保留),事件日志默认 30 天。把某一档改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。三档的可填范围均为 1–99999 天。": "三檔資料各自獨立計時,超出保留天數的部分會被刪除:事件日誌是登入、帳號切換、429 切換這類系統事件;請求日誌是閘道器每次轉發到上游的逐條記錄;按天聚合供報表頁的熱力圖與按天趨勢使用。請求日誌與按天聚合預設 99999 天(約 274 年,效果上等於全量保留),事件日誌預設 30 天。把某一檔改小(例如 30 天改成 7 天)儲存後會立即刪除超出的歷史資料,此操作不可恢復;改大或保持不變不會刪除任何資料。三檔的可填範圍均為 1–99999 天。", "三段各自成块,所以分开编辑": "三段各自成塊,所以分開編輯", "三段必须各自成块(上游按结构校验,并成一段会被回 405),所以这里分开编辑。动态段里的运行值写成占位符,发请求时才替换:{cwd} 工作目录、{platform} 平台、{shell} shell、{os_version} 系统版本、{git} 是否 git 仓库、{provider} 提供方标识、{model} 模型名。清空某一段 = 那一段恢复官方原文。": "三段必須各自成塊(上游按結構校驗,併成一段會被回 405),所以這裡分開編輯。動態段裡的執行值寫成佔位符,發請求時才替換:{cwd} 工作目錄、{platform} 平臺、{shell} shell、{os_version} 系統版本、{git} 是否 git 倉庫、{provider} 提供方標識、{model} 模型名。清空某一段 = 那一段恢復官方原文。", "上传": "上傳", "上传 Logo": "上傳 Logo", "上传中…": "上傳中…", "上传内容含加密后的账号凭证与网关配置": "上傳內容含加密後的帳號憑證與閘道器配置", "上传到云端": "上傳到雲端", "上传失败:{message}": "上傳失敗:{message}", "上次同步:{time}({action})": "上次同步:{time}({action})", "上次成功刷新的结果(存在本机数据库里)": "上次成功重新整理的結果(存在本機資料庫裡)", "上游 CLI 版本": "上游 CLI 版本", "上游客户端版本": "上游客戶端版本", "上游按": "上游按", "上游按「结构」校验身份:三段必须各自成块,所以这里分开编辑三段(不能合成一段)。动态段里的运行值写成占位符,发请求时才替换:{cwd} 工作目录、{platform} 平台、{shell} shell、{os_version} 系统版本、{git} 是否 git 仓库、{provider} 提供方标识、{model} 模型名。清空某一段 = 那一段恢复官方原文。第三段发出时前面会自带一个空行(官方形状)。": "上游按「結構」校驗身份:三段必須各自成塊,所以這裡分開編輯三段(不能合成一段)。動態段裡的執行值寫成佔位符,發請求時才替換:{cwd} 工作目錄、{platform} 平臺、{shell} shell、{os_version} 系統版本、{git} 是否 git 倉庫、{provider} 提供方標識、{model} 模型名。清空某一段 = 那一段恢復官方原文。第三段發出時前面會自帶一個空行(官方形狀)。", "上游未配置": "上游未配置", "上游模型繁忙时会先排队(回一句「建议 N 秒后再来」):网关等一会儿再发同一请求,最多等几次。默认 2 次,可填 0–10;填 0 表示不等待,排队直接返回 503 并说明「不是登录态或额度问题」。": "上游模型繁忙時會先排隊(回一句「建議 N 秒後再來」):閘道器等一會兒再發同一請求,最多等幾次。預設 2 次,可填 0–10;填 0 表示不等待,排隊直接返回 503 並說明「不是登入態或額度問題」。", "上游用「逐字精确匹配」的方式审核请求体(不是语义审核):客户端注入的固定模板句、计费头字段名、以及某些裸错误码出现在报文里就会整单拦截,返回 400。开启本项后,网关在每次转发前改写这些指纹 —— 表头键值整段删除,承载语义的模板句只换一个词(如 official CLI for Claude → official CLI tool for Claude),对话内容与语义都不受影响。规则集是内置的,不需要也无法维护词表。关掉本项后客户端模板会原样发往上游,可能重新出现模板句被误拦的报错。": "上游用「逐字精確匹配」的方式稽核請求體(不是語義稽核):客戶端注入的固定模板句、計費頭欄位名、以及某些裸錯誤碼出現在報文裡就會整單攔截,返回 400。開啟本項後,閘道器在每次轉發前改寫這些指紋 —— 表頭鍵值整段刪除,承載語義的模板句只換一個詞(如 official CLI for Claude → official CLI tool for Claude),對話內容與語義都不受影響。規則集是內建的,不需要也無法維護詞表。關掉本項後客戶端模板會原樣發往上游,可能重新出現模板句被誤攔的報錯。", "上游请求四个阶段各自的等待上限(秒,1~3600):①「连接中超时」= 建立 TCP/TLS 连接或代理隧道的最大等待,默认 30 秒;②「等待响应超时」= 请求发出后等上游响应头的最大时间,默认 300 秒 —— 网关请求上游恒带 stream,响应头在 SSE 建立时就到达,与模型思考多久无关;③「流式响应空闲超时」= 流式响应相邻两块数据之间允许的最大空闲,收到新数据即重新计时,默认 300 秒 —— 上游长时间不吐数据即判定连接僵死并断开;④「非流式响应超时」= 读完整份非流式响应体的总预算(一次性计时、不重置),默认 300 秒。四项都是「等待上限」,只要数据还在来,正常的流式回答就一直往下传。保存后对下一个请求立即生效,不用重启。": "上游請求四個階段各自的等待上限(秒,1~3600):①「連線中超時」= 建立 TCP/TLS 連線或代理隧道的最大等待,預設 30 秒;②「等待響應超時」= 請求發出後等上游響應頭的最大時間,預設 300 秒 —— 閘道器請求上游恆帶 stream,響應頭在 SSE 建立時就到達,與模型思考多久無關;③「流式響應空閒超時」= 流式響應相鄰兩塊資料之間允許的最大空閒,收到新資料即重新計時,預設 300 秒 —— 上游長時間不吐資料即判定連線僵死並斷開;④「非流式響應超時」= 讀完整份非流式響應體的總預算(一次性計時、不重置),預設 300 秒。四項都是「等待上限」,只要資料還在來,正常的流式回答就一直往下傳。儲存後對下一個請求立即生效,不用重啟。", "上游调试报文": "上游除錯報文", "上移": "上移", "上移规则": "上移規則", "下次自动重试:{time}": "下次自動重試:{time}", "下游正文": "下游正文", "下移": "下移", "下移规则": "下移規則", "下载失败:{message}": "下載失敗:{message}", "不一致": "不一致", "不做会话识别,每条请求都重新按策略选路。": "不做會話識別,每條請求都重新按策略選路。", "不做图片兼容": "不做圖片相容", "不可用": "不可用", "不在这里列出的提供商都用上面的全局配置;「跟随默认」取消这一家的单独配置。带「网关自带」的家列在这里:那段文本是网关自己装上去的(可关、可改正文),与「模式」是两件事。": "不在這裡列出的提供商都用上面的全域配置;「跟隨預設」取消這一家的單獨配置。帶「閘道器自帶」的家列在這裡:那段文本是閘道器自己裝上去的(可關、可改正文),與「模式」是兩件事。", "与网关同源的面板;完整管理功能在桌面端": "與網關同源的面板;完整管理功能在桌面版", "两张开关分别管桌面端(应用内窗口,也包含开启局域网访问后从其他设备访问的那份面板)与网页端(Docker / 服务端自托管的浏览器面板)。默认都开启;桌面端只在本机使用、嫌验证耗时可以关掉,网页端暴露在网络上,建议保持开启。": "兩張開關分別管桌面版(應用內視窗,也包含開啟區域網路存取後從其他裝置存取的那份面板)與網頁端(Docker / 服務端自託管的瀏覽器面板)。預設都開啟;桌面版只在本機使用、嫌驗證耗時可以關掉,網頁端暴露在網路上,建議保持開啟。", "两次输入的备份密码不一致": "兩次輸入的備份密碼不一致", "两次输入的新密码不一致": "兩次輸入的新密碼不一致", "两次重试之间的等待时间,两项共用,可填 0–300 秒。": "兩次重試之間的等待時間,兩項共用,可填 0–300 秒。", "两种方式不会互相自动切换。": "兩種方式不會互相自動切換。", "两组设置分别用于桌面端托管的网页管理面板与网页端(Docker / 服务端)的浏览器面板。是否可被其他设备访问取决于网络访问与防火墙设置,不限于局域网。两端默认都开启人机验证,建议保持开启。": "兩組設定分別用於桌面端代管的網頁管理面板與網頁端(Docker / 伺服器端)的瀏覽器面板。是否可被其他裝置存取取決於網路存取與防火牆設定,不限於區域網路。兩端預設都開啟人機驗證,建議保持開啟。", "中转丢失原始标识时,无法自动推断背后的软件。": "中轉丟失原始標識時,無法自動推斷背後的軟體。", "为了安全,开启前需要先注册一个": "為了安全,開啟前需要先註冊一個", "主进程未返回启动设置,请更新桌面端后重试": "主程序未返回啟動設定,請更新桌面版後重試", "主进程桥不可用": "主程序橋不可用", "主题": "主題", "也可以从请求详情直接添加规则。": "也可以從請求詳情直接新增規則。", "事件日志": "事件日誌", "事件日志保留天数": "事件日誌保留天數", "云同步": "雲同步", "产品名": "產品名", "产品名不能包含斜杠或版本号,请改用前缀匹配": "產品名不能包含斜槓或版本號,請改用字首匹配", "人机验证": "人機驗證", "人机验证失败": "人機驗證失敗", "人机验证已完成": "人機驗證已完成", "人机验证还在计算,请稍候": "人機驗證還在計算,請稍候", "仅在同一会话、同一问题和相同权限范围内复用;追问新细节会重新识读。缓存只存在本机内存。": "僅在同一會話、同一問題和相同許可權範圍內複用;追問新細節會重新識讀。快取只存在本機記憶體。", "仅在账号、配置、签到或余额等实质内容变化时上传;导出时间或查询时间单独变化不会触发上传。": "僅在帳號、設定、簽到或餘額等實質內容變更時上傳;匯出時間或查詢時間單獨變更不會觸發上傳。", "仅处理本次转发副本,不修改客户端选择,也不删除当前或历史图片。": "僅處理本次轉發副本,不修改客戶端選擇,也不刪除當前或歷史圖片。", "仅影响面板登录与注册,不影响 API Key 调用。保存后生效,已登录会话不会退出。": "僅影響面板登入與註冊,不影響 API Key 呼叫。儲存後生效,已登入的工作階段不會登出。", "仅本机": "僅本機", "仅用现有数据、不联网刷新": "僅用現有資料、不聯網重新整理", "从云端恢复": "從雲端恢復", "从桌面图标启动,全屏、无地址栏。想卸载:长按图标删除,或清除浏览器站点数据。": "從桌面圖示啟動,全屏、無位址列。想解除安裝:長按圖示刪除,或清除瀏覽器站點資料。", "优先使用当前路由内的视觉模型": "優先使用當前路由內的視覺模型", "优先在当前路由内找可用的视觉模型,找不到就用 {model} 直接回答,不再回到原模型。": "優先在目前路由內找可用的視覺模型,找不到就用 {model} 直接回答,不再回到原模型。", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "會恢復預設的分組、順序與顯隱設定。你自建的分組會被刪除(組內選單不會丟)。", "会话图片压缩设置已刷新": "會話圖片壓縮設定已重新整理", "位置": "位置", "位置与端口": "位置與連接埠", "使用 Rust 正则语法,保存时由后端校验;不支持环视和反向引用。": "使用 Rust 正則語法,儲存時由後端校驗;不支援環視和反向引用。", "使用中文单位(亿 / 万)": "使用中文單位(億 / 萬)", "使用本地量级词(万 / 亿式)": "使用本地量級詞(萬 / 億式)", "使用默认值": "使用預設值", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "側邊欄佈局模組未載入(ui/sidebar-layout.js 應在 app.js 之前引入)。", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "側邊欄沒有顯示任何選單。到「設定 → 顯示 → 側邊欄選單」裡開啟需要的項。", "侧边栏菜单": "側邊欄選單", "保存上游原始报文(请求头、请求体、响应头、响应体)": "儲存上游原始報文(請求頭、請求體、響應頭、響應體)", "保存单独配置": "儲存單獨配置", "保存后以这份为准(优先于上面的文件);清空回到文件 / 内置默认。": "儲存後以這份為準(優先於上面的檔案);清空回到檔案 / 內建預設。", "保存后以这里的文本为准": "儲存後以這裡的文本為準", "保存后只对之后的新请求生效;两种方式不会互相自动切换。": "儲存後只對之後的新請求生效;兩種方式不會互相自動切換。", "保存后对下一轮补货立即生效,不用重启。守卫跑在应用界面里:轻量模式关窗销毁界面期间无法铸造,走套餐池(Start Plan)通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。": "儲存後對下一輪補貨立即生效,不用重啟。守衛跑在應用介面裡:輕量模式關窗銷燬介面期間無法鑄造,走套餐池(Start Plan)通道的請求會以 503 落進請求日誌(寫明原因),重新開啟介面即自動恢復。", "保存后对下一轮补货立即生效,不用重启。守卫跑在应用界面里:轻量模式关窗销毁界面期间无法铸造,走活动套餐通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。": "儲存後對下一輪補貨立即生效,不用重啟。守衛跑在應用介面裡:輕量模式關窗銷燬介面期間無法鑄造,走活動套餐通道的請求會以 503 落進請求日誌(寫明原因),重新開啟介面即自動恢復。", "保存后应用将重启以生效。": "儲存後應用將重啟以生效。", "保存后状态读取立即生效。后台不会自动生成令牌;需要人机验证时,在账号的「套餐明细」中主动开始验证。模型请求免验证时无需保持界面打开。": "儲存後狀態讀取立即生效。背景不會自動產生權杖;需要人機驗證時,在帳號的「套餐明細」中主動開始驗證。模型請求免驗證時無需保持介面開啟。", "保存后立即生效,不用重启(下一个请求就用新模式)。": "儲存後立即生效,不用重啟(下一個請求就用新模式)。", "保存后立即生效,不用重启:策略与粘性作用于**下一次**转发的选路,进行中的请求不受影响。": "儲存後立即生效,不用重啟:策略與粘性作用於**下一次**轉發的選路,進行中的請求不受影響。", "保存后立即生效,不用重启;次数用尽仍失败时,错误原样返回给客户端。": "儲存後立即生效,不用重啟;次數用盡仍失敗時,錯誤原樣返回給客戶端。", "保存后立即生效,不用重启;超时按上游失败处理(计入请求日志的「错误」列,并按「请求重试」的设置决定是否重试)。": "儲存後立即生效,不用重啟;超時按上游失敗處理(計入請求日誌的「錯誤」列,並按「請求重試」的設定決定是否重試)。", "保存后立即生效:保留天数和数量上限同时生效,调小任一项会立即清理超出的历史数据,且不可恢复。": "儲存後立即生效:保留天數和數量上限同時生效,調小任一項會立即清理超出的歷史資料,且無法還原。", "保存后立即生效:改小保留天数会立刻删除超出的历史数据,且不可恢复。": "儲存後立即生效:改小保留天數會立刻刪除超出的歷史資料,且不可恢復。", "保存在当前网关,登录页也会公开显示。不会更改安装包、快捷方式、系统托盘图标或软件版本信息。": "儲存在目前的閘道,登入頁也會公開顯示。不會更改安裝套件、捷徑、系統匣圖示或軟體版本資訊。", "保存并重启": "儲存並重啟", "保存设置": "儲存設定", "保持当前路由范围,不跳到其他路由组。": "保持目前路由範圍,不跳到其他路由組。", "保活换行丢弃": "保活換行丟棄", "保留原图和对话,由视觉模型直接回答本次请求。": "保留原圖和對話,由視覺模型直接回答本次請求。", "保留原图,选择视觉模型": "保留原圖,選擇視覺模型", "保留图片中的文字、代码、数字、布局与状态。识读失败就停止,不删图后继续回答。": "保留圖片中的文字、程式碼、數字、佈局與狀態。識讀失敗就停止,不刪圖後繼續回答。", "保留天数已刷新": "保留天數已重新整理", "保留旧版配置兼容,当前不会自动连铸。每次点击「开始验证」只取得一枚令牌,失败或取消后停止。": "保留舊版設定相容,目前不會自動連續產生權杖。每次點擊「開始驗證」只取得一枚權杖,失敗或取消後停止。", "保留草稿并读取最新设置": "保留草稿並讀取最新設定", "修改密码": "修改密碼", "修改密码需要输入当前密码;修改成功后,其他设备 / 浏览器上的登录会立即失效,当前这条会话保留。": "修改密碼需要輸入當前密碼;修改成功後,其他裝置 / 瀏覽器上的登入會立即失效,當前這條會話保留。", "修改模型单独配置": "修改模型單獨配置", "值": "值", "值与默认值相同的行不占覆盖(存的是「改过的键」,不是全量配置);值留空保存表示这个头不发送,删除改过的行表示回落默认值。改完立即生效,不用重启。": "值與預設值相同的行不佔覆蓋(存的是「改過的鍵」,不是全量配置);值留空儲存表示這個頭不傳送,刪除改過的行表示回落預設值。改完立即生效,不用重啟。", "值(留空 = 不发送)": "值(留空 = 不傳送)", "停止并说明原因": "停止並說明原因", "像素": "畫素", "允许其他设备访问前,需要设置面板管理员账号与密码。注册完成后会继续开启流程并重启应用。": "允許其他裝置存取前,需要設定面板管理員帳號與密碼。註冊完成後會繼續開啟流程並重新啟動應用程式。", "允许其他设备访问网关": "允許其他裝置存取閘道", "允许局域网内的设备访问网关": "允許區域網路內的裝置存取閘道器", "允许无 Key 裸跑": "允許無 Key 裸跑", "允许浏览器里的页面跨来源调用网关(/v1/*)": "允許瀏覽器裡的頁面跨來源呼叫閘道器(/v1/*)", "允许的域名": "允許的網域", "先发送原图,明确拒图后补救": "先發送原圖,明確拒圖後補救", "先在当前路由范围内找可用的视觉模型,这次请求由视觉模型直接回答,不回原模型;{fallback}": "先在當前路由範圍內找可用的視覺模型,這次請求由視覺模型直接回答,不回原模型;{fallback}", "先把图片交给视觉模型读一遍,再让原模型结合读到的内容回答。": "先把圖片交給視覺模型讀一遍,再讓原模型結合讀到的內容回答。", "全局配置": "全域配置", "全部已配置": "全部已配置", "全部数据(账号、事件日志、请求记录、调试报文、设置)保存在配置目录下的 agent2api.db 这一个 SQLite 数据库里。备份时只需拷贝这个文件;更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "全部資料(帳號、事件日誌、請求記錄、除錯報文、設定)儲存在配置目錄下的 agent2api.db 這一個 SQLite 資料庫裡。備份時只需複製這個檔案;更換儲存位置請設定環境變數 AGENT2API_PROXY_HOME 後重啟程式。", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 中,加密密钥单独保存在库外。跨机器备份请使用「整库备份 / 恢复」,不要只复制数据库。更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "全部資料(帳號、事件日誌、請求記錄、除錯報文、設定)統一儲存在配置目錄下的 agent2api.db 中,加密金鑰單獨儲存在庫外。跨機器備份請使用「整庫備份 / 恢復」,不要只複製資料庫。更換儲存位置請設定環境變數 AGENT2API_PROXY_HOME 後重啟程式。", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 这一个 SQLite 数据库里。备份时只需拷贝这个文件;更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "全部資料(帳號、事件日誌、請求記錄、除錯報文、設定)統一儲存在配置目錄下的 agent2api.db 這一個 SQLite 資料庫裡。備份時只需複製這個檔案;更換儲存位置請設定環境變數 AGENT2API_PROXY_HOME 後重啟程式。", "全部角色": "全部角色", "全部角色沿用原有行为,包含思考内容和工具参数;指定角色时只改消息正文,未选角色及思考内容、工具参数保持原样。": "全部角色沿用原有行為,包含思考內容和工具參數;指定角色時只改訊息正文,未選角色及思考內容、工具參數保持原樣。", "共享视觉模型已变更,请重新确认并保存,避免把图片交给未经确认的模型。": "共享視覺模型已變更,請重新確認並儲存,避免把圖片交給未經確認的模型。", "共用设置:{providers}": "共用設定:{providers}", "关闭后不再提供网页管理面板,本机桌面程序仍可正常管理;已开启的 API 转发不受影响。": "關閉後不再提供網頁管理面板,本機桌面程式仍可正常管理;已開啟的 API 轉發不受影響。", "关闭后手动上传 / 下载也会被拒绝。": "關閉後手動上傳 / 下載也會被拒絕。", "关闭后网关只监听 127.0.0.1,其他设备将无法直接连接,网页管理面板也会一并关闭。已配置的网关 Key 与账号不受影响。": "關閉後閘道只監聽 127.0.0.1,其他裝置將無法直接連線,網頁管理面板也會一併關閉。已設定的閘道 Key 與帳號不受影響。", "关闭后网关回到只监听 127.0.0.1,局域网内的设备将无法继续访问;已配置的网关 Key 与账号都不受影响。": "關閉後網關回到只監聽 127.0.0.1,區域網路內的裝置將無法繼續存取;已配置的閘道器 Key 與帳號都不受影響。", "关闭后,管理界面不再从局域网提供,只有本机的桌面程序可以管理;已开启的 API 转发不受影响。": "關閉後,管理介面不再從區域網路提供,只有本機的桌面程式可以管理;已開啟的 API 轉發不受影響。", "关闭局域网访问": "關閉區域網路存取", "关闭并重启": "關閉並重啟", "关闭思考": "關閉思考", "关闭窗口即退出程序,后台转发随之中断": "關閉視窗即退出程式,後臺轉發隨之中斷", "关闭窗口时最小化到托盘": "關閉視窗時最小化到托盤", "关闭窗口时程序不退出,转发继续在后台运行;退出请用托盘菜单": "關閉視窗時程式不退出,轉發繼續在後臺執行;退出請用托盤選單", "关闭网络访问": "關閉網路存取", "其余沿用上面的全局配置": "其餘沿用上面的全域配置", "兼容处理最长等待": "相容處理最長等待", "兼容处理最长等待(秒)": "相容處理最長等待(秒)", "内容拦截降级": "內容攔截降級", "内置客户端": "內建客戶端", "内置规则": "內建規則", "内置识别、自定义规则与来源声明": "內建識別、自定義規則與來源宣告", "内置软件标识规则": "內建軟體標識規則", "内置默认": "內建預設", "内置默认提示词": "內建預設提示詞", "再输入一次新密码": "再輸入一次新密碼", "凭据类请求头已脱敏。": "憑據類請求頭已脫敏。", "凭证只保存在这台手机上,按服务器分别存放": "憑證只儲存在這臺手機上,按伺服器分別存放", "出问题时把这一页截图,或点「复制全部信息」把文本贴进反馈,一般就能定位到大致原因。": "出問題時把這一頁截圖,或點「複製全部資訊」把文本貼進反饋,一般就能定位到大致原因。", "分享图标在 Safari 底部工具栏中间": "分享圖示在 Safari 底部工具欄中間", "分组名": "分組名", "分组名,例如「常用」": "分組名,例如「常用」", "切换视觉模型": "切換視覺模型", "切换视觉模型 · 视觉模型回答": "切換視覺模型 · 視覺模型回答", "切换视觉模型配置": "切換視覺模型配置", "切换账号重试次数": "切換帳號重試次數", "刚刚从 models.dev 拉到的最新数据": "剛剛從 models.dev 拉到的最新資料", "删除 {code}": "刪除 {code}", "删除分组": "刪除分組", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "刪除分組「{name}」?組內 {n} 個選單會移到「{target}」,不會丟。", "删除匹配内容": "刪除匹配內容", "删除后不再接受这个分类的来源声明,历史记录保留原来的名称和用量。": "刪除後不再接受這個分類的來源宣告,歷史記錄保留原來的名稱和用量。", "删除后,新请求不再使用这条规则;历史记录保持不变。": "刪除後,新請求不再使用這條規則;歷史記錄保持不變。", "删除客户端分类": "刪除客戶端分類", "删除状态码 {code}": "刪除狀態碼 {code}", "删除空分组「{name}」?": "刪除空分組「{name}」?", "删除识别规则": "刪除識別規則", "删除这个分组(组内菜单移到第一组)": "刪除這個分組(組內選單移到第一組)", "刷新": "重新整理", "刷新失败:{message}": "重新整理失敗:{message}", "前台运行": "前臺執行", "前缀": "字首", "剥离上游审核黑名单指纹(改写请求体里的模板句与表头)": "剝離上游稽核黑名單指紋(改寫請求體裡的模板句與表頭)", "功能建议": "功能建議", "加入备选": "加入備選", "加密备份必填,旧 SQL 可留空": "加密備份必填,舊 SQL 可留空", "包含": "包含", "包含日志与调试报文": "包含日誌與除錯報文", "包含:{items}": "包含:{items}", "匹配内容": "匹配內容", "匹配内容不能为空,且最多 {max} 个字符": "匹配內容不能為空,且最多 {max} 個字元", "匹配内容不能为空,最长 256 个字符": "匹配內容不能為空,最長 256 個字元", "匹配原文含零宽空格,词表预览用 \\u{200b} 标出;编辑时保留该字符。": "匹配原文含零寬空格,詞表預覽用 \\u{200b} 標出;編輯時保留該字元。", "匹配方式": "匹配方式", "区域(Region)": "區域(Region)", "华为云 OBS": "華為雲 OBS", "单独指定视觉模型": "單獨指定視覺模型", "单轮铸造上限": "單輪鑄造上限", "占用大小": "佔用大小", "历史未记录识别依据": "歷史未記錄識別依據", "原因未知": "原因未知", "原来的「全局方式 + 模型单独配置」已按相同意思自动填成下面的模型名单,可以照用也可以重新调整;改动一处之后就会按新形式存下来。": "原來的「全域方式 + 模型單獨設定」已按相同意思自動填成下面的模型名單,可以照用也可以重新調整;改動一處之後就會按新形式存下來。", "原模型不能直接看图": "原模型不能直接看圖", "原模型根据识读内容回答": "原模型根據識讀內容回答", "去反馈": "去反饋", "去申请": "去申請", "反馈与需求": "反饋與需求", "发现缺货时一轮最多铸几个(连铸之间固定隔 500 毫秒)。默认 1 个:SDK 同一实例连铸容易互相干扰。调大补货更快,但单轮连铸越多越容易触发上游风控。可填 1–5。": "發現缺貨時一輪最多鑄幾個(連鑄之間固定隔 500 毫秒)。預設 1 個:SDK 同一例項連鑄容易互相干擾。調大補貨更快,但單輪連鑄越多越容易觸發上游風控。可填 1–5。", "取消勾选后只备份业务数据(账号、配置与余额记录),文件显著变小;事件日志、请求统计与调试报文不会进备份文件。": "取消勾選後只備份業務資料(帳號、配置與餘額記錄),檔案顯著變小;事件日誌、請求統計與除錯報文不會進備份檔案。", "变更网页管理面板": "變更網頁管理面板", "只列单独配置过的家,其余沿用上面的全局配置": "只列單獨配置過的家,其餘沿用上面的全域配置", "只对「排队制」的上游生效:模型繁忙时上游不报错,只回一句「建议 N 秒后再来」,网关按建议时长等一会儿再发同一请求,等满次数仍排不上才把「排队中」作为错误返回(HTTP 503,文案会说明这不是登录态或额度问题)。等待发生在首个字节之前,吃的是「等待响应超时」那份预算 —— 两项设置一起决定一次请求最多卡多久;排队不会标记账号限额、也不会换账号(换谁都一样在排队)。保存后对下一个请求立即生效,不用重启。": "只對「排隊制」的上游生效:模型繁忙時上游不報錯,只回一句「建議 N 秒後再來」,閘道器按建議時長等一會兒再發同一請求,等滿次數仍排不上才把「排隊中」作為錯誤返回(HTTP 503,文案會說明這不是登入態或額度問題)。等待發生在首個位元組之前,吃的是「等待響應超時」那份預算 —— 兩項設定一起決定一次請求最多卡多久;排隊不會標記帳號限額、也不會換帳號(換誰都一樣在排隊)。儲存後對下一個請求立即生效,不用重啟。", "只影响识读那一步的思考深度。": "隻影響識讀那一步的思考深度。", "只影响读图那一步的思考深度;两块设置统一用这个选择。": "只影響讀圖那一步的思考深度;兩塊設定統一用這個選擇。", "只有已安装、启用并声明了设置项的提供商会出现在这里。可前往插件页检查安装与启用状态。": "只有已安裝、啟用並宣告了設定項目的供應商會出現在這裡。可前往外掛頁檢查安裝與啟用狀態。", "只沿用模型与思考等级,不借用视觉服务的内部 Key;仍受当前请求权限限制。": "只沿用模型與思考等級,不借用視覺服務的內部 Key;仍受當前請求許可權限制。", "只清掉这个浏览器存的 Key,不影响网关": "只清掉這個瀏覽器存的 Key,不影響閘道器", "只覆盖指定提供商的指定模型,其余跟随全局。": "只覆蓋指定提供商的指定模型,其餘跟隨全域。", "可识别标识": "可識別標識", "可跨提供商多选;只处理这些模型看不了的图片。": "可跨提供商多選;只處理這些模型看不了的圖片。", "可跨提供商多选;这些模型的请求会整体改交视觉模型。": "可跨提供商多選;這些模型的請求會整體改交視覺模型。", "可选。部分服务(如中国科技云数据胶囊)会按 User-Agent 校验凭据绑定的客户端类型,此时填写包含该类型名的字符串(例如 rclone/v1.67.0)。留空则维持默认。": "可選。部分服務(如中國科技雲資料膠囊)會按 User-Agent 校驗憑據繫結的客戶端型別,此時填寫包含該型別名的字串(例如 rclone/v1.67.0)。留空則維持預設。", "合计只累加当前筛选后可见的账号,筛选、搜索一改数字就跟着变。": "合計只累加目前篩選後可見的帳號,篩選、搜尋一改數字就跟著變。", "合计按整组统计(默认):不受筛选、搜索影响,被筛掉与已禁用的账号也计入。": "合計按整組統計(預設):不受篩選、搜尋影響,被篩掉與已停用的帳號也計入。", "同一会话、同一问题、相同权限范围内复用;追问新细节会重新识读。": "同一對話、同一問題、相同權限範圍內重用;追問新細節會重新識讀。", "同一会话、同一问题、相同权限范围内复用;追问新细节会重新识读,缓存只在本机内存。": "同一會話、同一問題、相同許可權範圍內複用;追問新細節會重新識讀,快取只在本機記憶體。", "同一会话在 5 分钟内尽量跟住同一个账号;停了 5 分钟再发就算新会话。多数场景用它 —— 多轮对话少换号,也不至于把账号焊死。": "同一會話在 5 分鐘內儘量跟住同一個帳號;停了 5 分鐘再發就算新會話。多數場景用它 —— 多輪對話少換號,也不至於把帳號焊死。", "同一会话在 6 小时内跟住同一个账号;适合一坐几个小时的长会话,上游的上下文缓存能吃到更多。": "同一會話在 6 小時內跟住同一個帳號;適合一坐幾個小時的長會話,上游的上下文快取能吃到更多。", "同一提供商的同一模型不能重复配置": "同一提供商的同一模型不能重複配置", "同一账号重试次数": "同一帳號重試次數", "同时开放网页管理面板": "同時開放網頁管理面板", "同步密码": "同步密碼", "名单最多 {max} 个状态码": "名單最多 {max} 個狀態碼", "后端没有返回版本信息": "後端沒有返回版本資訊", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "含固定項「設定」,不可整組隱藏(可以單獨隱藏組內其它選單)", "启动与托盘": "啟動與托盤", "启动时间": "啟動時間", "启用云同步": "啟用雲同步", "启用图片兼容": "啟用圖片相容", "启用规则": "啟用規則", "启用规则:{name}": "啟用規則:{name}", "命中依据:{header} · {pattern}": "命中依據:{header} · {pattern}", "命中这些上游状态码的失败不在同一账号重发,直接换下一个账号继续试(换号占用「切换账号重试次数」,换满仍失败才把错误原样返回给客户端)。输入 100–599 的状态码后回车添加,点 × 或退格删除;默认 402(积分不足)。清空全部表示任何错误都照常重试。": "命中這些上游狀態碼的失敗不在同一帳號重發,直接換下一個帳號繼續試(換號佔用「切換帳號重試次數」,換滿仍失敗才把錯誤原樣返回給客戶端)。輸入 100–599 的狀態碼後回車新增,點 × 或退格刪除;預設 402(積分不足)。清空全部表示任何錯誤都照常重試。", "品牌 Logo": "品牌 Logo", "品牌设置": "品牌設定", "品牌设置已保存": "品牌設定已儲存", "品牌预览": "品牌預覽", "哪些模型用这种方式": "哪些模型用這種方式", "固定": "固定", "图标经 Magpie 引入,未单独记录 Lobe Icons 的图标版本;以上版本仅用于核对许可。": "圖示經 Magpie 引入,未單獨記錄 Lobe Icons 的圖示版本;以上版本僅用於核對授權。", "图片与相关对话将交给配置的视觉模型处理,可能增加等待时间和费用。请确认这些服务可以接收你的图片。": "圖片與相關對話將交給配置的視覺模型處理,可能增加等待時間和費用。請確認這些服務可以接收你的圖片。", "图片先交给 {model} 识读,再由原模型回答这次请求。": "圖片先交給 {model} 識讀,再由原模型回答這次請求。", "图片兼容": "圖片相容", "图片兼容当前是关闭的:下面两块设置照样能改、会被保留,但不会对任何请求生效。": "圖片相容目前是關閉的:下面兩塊設定照樣能改、會被保留,但不會對任何請求生效。", "图片兼容设置已保存,仅对新请求生效。": "圖片相容設定已儲存,僅對新請求生效。", "图片兼容设置读取失败": "圖片相容設定讀取失敗", "图片压缩": "圖片壓縮", "图片最长边超过这个值就等比缩小(只缩不放)。默认 2048,可填 256–8192 —— 多数视觉模型在这个量级已经够用,调小更省流量、但细节会丢。": "圖片最長邊超過這個值就等比縮小(只縮不放)。預設 2048,可填 256–8192 —— 多數視覺模型在這個量級已經夠用,調小更省流量、但細節會丟。", "图片能力未知时": "圖片能力未知時", "图片过大、格式错误或下载失败不会被当作模型不支持图片。": "圖片過大、格式錯誤或下載失敗不會被當作模型不支援圖片。", "在同一个账号上原地重发几次(不含首发;整条请求共用一份,用完后换来的账号只发一次就继续换)。可填 0–10,0 表示失败立即换号。": "在同一個帳號上原地重發幾次(不含首發;整條請求共用一份,用完後換來的帳號只發一次就繼續換)。可填 0–10,0 表示失敗立即換號。", "在这里直接编辑提示词正文:保存后以这份文本为准(优先于上面的提示词文件),清空则回到文件 / 内置默认。改一个字不必再去编辑器里开文件。": "在這裡直接編輯提示詞正文:儲存後以這份文本為準(優先於上面的提示詞檔案),清空則回到檔案 / 內建預設。改一個字不必再去編輯器裡開檔案。", "在途请求": "在途請求", "地址格式不对。填「IP 或域名:端口」,可带 http:// 或 https://,例如 192.168.1.23:3065": "地址格式不對。填「IP 或域名:連接埠」,可帶 http:// 或 https://,例如 192.168.1.23:3065", "坚果云": "堅果雲", "坚果云需使用「第三方应用密码」(账户信息 → 安全选项里生成),地址必须是 /dav/ 下的目录。": "堅果雲需使用「第三方應用密碼」(帳戶資訊 → 安全選項裡生成),地址必須是 /dav/ 下的目錄。", "填「IP 或域名:端口」。协议可写 http:// 或 https://,不写默认 http;http 不写端口默认 3065,https 默认 443。地址里的 /m、/v1 会自动去掉。": "填「IP 或域名:連接埠」。協議可寫 http:// 或 https://,不寫預設 http;http 不寫連接埠預設 3065,https 預設 443。地址裡的 /m、/v1 會自動去掉。", "处理方式": "處理方式", "处理示意": "處理示意", "备份中…": "備份中…", "备份包含账号凭证、网关 Key、GitHub 令牌与云同步凭据的恢复密钥,整个文件受备份密码保护。请分开保管文件与密码;忘记密码无法恢复。": "備份包含帳號憑證、閘道器 Key、GitHub 權杖與雲同步憑據的恢復金鑰,整個檔案受備份密碼保護。請分開保管檔案與密碼;忘記密碼無法恢復。", "备份密码": "備份密碼", "备份密码不能超过 1024 字节": "備份密碼不能超過 1024 位元組", "备份密码至少需要 12 位,建议使用较长且不重复的密码": "備份密碼至少需要 12 位,建議使用較長且不重複的密碼", "备份整库": "備份整庫", "备份文件内含全部账号凭证、网关 API Key 与面板管理员凭据,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "備份檔案內含全部帳號憑證、閘道器 API Key 與面板管理員憑據,可直接用於登入。請妥善保管,不要外傳或上傳到公共位置。", "备选模型": "備選模型", "备选顺序 · 从上到下依次尝试": "備選順序 · 從上到下依次嘗試", "复制全部信息": "複製全部資訊", "复制给客户端": "複製給客戶端", "复用与备选、单独配置、兼容细节": "複用與備選、單獨配置、相容細節", "复用相同图片的识读结果": "複用相同圖片的識讀結果", "外观": "外觀", "外观 · 接入 · 关于": "外觀 · 接入 · 關於", "多个客户端标识冲突": "多個客戶端標識衝突", "天": "天", "天数": "天數", "失败 {n} 个": "失敗 {n} 個", "失败 {n} 个:{detail}": "失敗 {n} 個:{detail}", "失败后最多再换几个账号试(填 N = 最多换 N 个,首发那个不算)。换到同一家名下另一个账号、或换到另一家,都各算一次;换满仍失败就返回错误。可填 0–10,0 表示失败立即报错。": "失敗後最多再換幾個帳號試(填 N = 最多換 N 個,首發那個不算)。換到同一家名下另一個帳號、或換到另一家,都各算一次;換滿仍失敗就返回錯誤。可填 0–10,0 表示失敗立即報錯。", "如果主库已被替换到一半,替换前的数据在 backups/ 目录里仍可整文件拷回。": "如果主庫已被替換到一半,替換前的資料在 backups/ 目錄裡仍可整檔案拷回。", "存储桶(Bucket)": "儲存桶(Bucket)", "存储概况已刷新": "儲存概況已重新整理", "安全": "安全", "安装到主屏幕": "安裝到主螢幕", "安装到桌面": "安裝到桌面", "安装包形态": "安裝包形態", "完全相同": "完全相同", "官方原文只有一句:声明自己是 ZCode。": "官方原文只有一句:宣告自己是 ZCode。", "实际处理:": "實際處理:", "客户端 system 原样出站。": "客戶端 system 原樣出站。", "客户端 system 原样出站(只靠指纹脱敏改写模板句)。": "客戶端 system 原樣出站(只靠指紋脫敏改寫模板句)。", "客户端专用请求头": "客戶端專用請求頭", "客户端名称": "客戶端名稱", "客户端名称不能为空,最长 80 个字符": "客戶端名稱不能為空,最長 80 個字元", "客户端名称重复或与内置名称冲突": "客戶端名稱重複或與內建名稱衝突", "客户端标识无效或重复": "客戶端標識無效或重複", "客户端识别": "客戶端識別", "客户端识别入口尚未就绪,请刷新页面后重试": "客戶端識別入口尚未就緒,請重新整理頁面後重試", "客户端识别设置读取失败": "客戶端識別設定讀取失敗", "客户端(Claude Code / Codex 等 CLI)会在 system 提示词里注入几十句固定模板,上游按逐字匹配审核,命中就整单拦截(HTTP 400)。指纹脱敏能改写实测命中过的那几句,但换一个客户端版本就可能冒出新的。这里可以把 system 整段换成网关自己那份:①「透传」= 不动客户端 system(默认,行为与之前完全一致);②「替换」= 删掉客户端所有 system / developer 消息,换成网关的提示词(客户端项目规范随之消失);③「追加」= 在开头连续 system 块之后插入一条网关提示词,既有消息逐字不动(客户端规范与网关提示词并用)。那份提示词有两个来源:提示词文件(留空用内置默认),或直接在界面上编辑正文 —— 编辑过就以那份正文为准(优先于文件),清空则回到文件 / 内置默认。另外,透传 / 追加模式下撞了内容拦截(多半是指纹误报)时,网关会自动换一段最小中性提示词重试一次,并把「降级期」开到次日 00:00 —— 期间所有请求直接带中性提示词出门,不再先撞一次 400;这里能看见并提前解除它。上面几项是**默认值**:想给某个提供商单独配,用下面的「按提供商」加一行(带「网关自带」的家默认就列在那里)—— 不同的上游对这些内容的接受程度不一样。": "客戶端(Claude Code / Codex 等 CLI)會在 system 提示詞裡注入幾十句固定模板,上游按逐字匹配稽核,命中就整單攔截(HTTP 400)。指紋脫敏能改寫實測命中過的那幾句,但換一個客戶端版本就可能冒出新的。這裡可以把 system 整段換成閘道器自己那份:①「透傳」= 不動客戶端 system(預設,行為與之前完全一致);②「替換」= 刪掉客戶端所有 system / developer 訊息,換成閘道器的提示詞(客戶端專案規範隨之消失);③「追加」= 在開頭連續 system 塊之後插入一條閘道器提示詞,既有訊息逐字不動(客戶端規範與閘道器提示詞並用)。那份提示詞有兩個來源:提示詞檔案(留空用內建預設),或直接在介面上編輯正文 —— 編輯過就以那份正文為準(優先於檔案),清空則回到檔案 / 內建預設。另外,透傳 / 追加模式下撞了內容攔截(多半是指紋誤報)時,閘道器會自動換一段最小中性提示詞重試一次,並把「降級期」開到次日 00:00 —— 期間所有請求直接帶中性提示詞出門,不再先撞一次 400;這裡能看見並提前解除它。上面幾項是**預設值**:想給某個提供商單獨配,用下面的「按提供商」加一行(帶「閘道器自帶」的家預設就列在那裡)—— 不同的上游對這些內容的接受程度不一樣。", "客户端(Claude Code / Codex 等 CLI)会往 system 里塞几十句固定模板,上游逐字审核,命中就整单拦截(HTTP 400)。「模式」决定网关怎么处理这份 system:透传 = 原样不动(默认);替换 = 删掉客户端的 system / developer,换成网关提示词;追加 = 保留客户端内容,只在最前面插一条网关提示词。网关提示词来自「提示词文件」或界面里编辑的正文(正文优先,清空回到文件 / 内置默认)。撞上拦截时会自动改用一段最小中性提示词,次日 00:00 自动恢复,也可以随时解除。": "客戶端(Claude Code / Codex 等 CLI)會往 system 裡塞幾十句固定模板,上游逐字稽核,命中就整單攔截(HTTP 400)。「模式」決定閘道器怎麼處理這份 system:透傳 = 原樣不動(預設);替換 = 刪掉客戶端的 system / developer,換成閘道器提示詞;追加 = 保留客戶端內容,只在最前面插一條閘道器提示詞。閘道器提示詞來自「提示詞檔案」或介面裡編輯的正文(正文優先,清空回到檔案 / 內建預設)。撞上攔截時會自動改用一段最小中性提示詞,次日 00:00 自動恢復,也可以隨時解除。", "家之间仍按优先级,只有同一家内部轮流用各账号 —— 想优先用某几家、又不愿把某一家的某个账号焊死时用它。": "家之間仍按優先順序,只有同一家內部輪流用各帳號 —— 想優先用某幾家、又不願把某一家的某個帳號焊死時用它。", "家内轮询": "家內輪詢", "容器内更新": "容器內更新", "密码、文件或密钥校验失败时不会替换主库;替换阶段失败会自动尝试还原,实际结果以上方错误说明为准。": "密碼、檔案或金鑰校驗失敗時不會替換主庫;替換階段失敗會自動嘗試還原,實際結果以上方錯誤說明為準。", "密码加密 · 包含恢复密钥": "密碼加密 · 包含恢復金鑰", "密码至少 8 位": "密碼至少 8 位", "对话里内嵌的 base64 大图(截图、照片)既撑大请求体,也拉高按像素折算的上游计费。开启后,网关在转发前把超过阈值的图等比缩到长边上限、重新存成 JPEG —— 只改发给上游的副本,请求日志里保存的仍是你发来的原图。同一张原图在多轮对话里重复出现时复用上一次的压缩结果,不会每轮重算。http 链接图片、GIF 动图、SVG 一律不动;压完反而更大的图也保留原图。只作用在对话场景,生图与图片编辑不受影响。默认开启;不想要的话把开关关掉即可。": "對話裡內嵌的 base64 大圖(截圖、照片)既撐大請求體,也拉高按畫素折算的上游計費。開啟後,閘道器在轉發前把超過閾值的圖等比縮到長邊上限、重新存成 JPEG —— 只改發給上游的副本,請求日誌裡儲存的仍是你發來的原圖。同一張原圖在多輪對話裡重複出現時複用上一次的壓縮結果,不會每輪重算。http 連結圖片、GIF 動圖、SVG 一律不動;壓完反而更大的圖也保留原圖。只作用在對話場景,生圖與圖片編輯不受影響。預設開啟;不想要的話把開關關掉即可。", "导入前会把本机的 account.key 改名备份(account.key.bak-时间戳),不会直接删除。": "匯入前會把本機的 account.key 改名備份(account.key.bak-時間戳),不會直接刪除。", "导入完成:{summary}": "匯入完成:{summary}", "导入密钥失败:{message}": "匯入金鑰失敗:{message}", "导入密钥并继续": "匯入金鑰並繼續", "导入账号": "匯入帳號", "导出中…": "匯出中…", "导出会把全部账号与自定义提供商定义写入一个 JSON 文件,可以拷到另一台机器上导入后继续使用。导入采用合并策略:同提供商下按业务身份(UID / userId / apiKey 等)去重 —— 已存在的账号只更新凭证,保留本机原有的优先级顺序;新账号追加到转发顺序末尾,不会抢占当前正在使用的账号;自定义提供商定义按 id 合并,本机缺失时自动补建。": "匯出會把全部帳號與自定義提供商定義寫入一個 JSON 檔案,可以拷到另一臺機器上匯入後繼續使用。匯入採用合併策略:同提供商下按業務身份(UID / userId / apiKey 等)去重 —— 已存在的帳號只更新憑證,保留本機原有的優先順序順序;新帳號追加到轉發順序末尾,不會搶佔當前正在使用的帳號;自定義提供商定義按 id 合併,本機缺失時自動補建。", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义": "匯出檔案內含 accessToken / refreshToken / apiKey 等憑證與自定義提供商定義", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "匯出檔案內含 accessToken / refreshToken / apiKey 等憑證與自定義提供商定義,可直接用於登入。請妥善保管,不要外傳或上傳到公共位置。", "导出账号": "匯出帳號", "将数据库和恢复凭证所需的密钥一起保存为密码加密的 .a2ab 备份,可在 Windows、macOS 或 Linux 上恢复,无需手工复制密钥。恢复时整体替换账号、配置、日志与桌面设置,并使用目标机器的密钥重新加密凭证,不覆盖本机已有钥匙。可取消包含日志以减小文件;旧 .sql 备份仍可导入。恢复前自动保留安全备份,完成后需要重新登录管理面板。": "將資料庫和恢復憑證所需的金鑰一起儲存為密碼加密的 .a2ab 備份,可在 Windows、macOS 或 Linux 上恢復,無需手工複製金鑰。恢復時整體替換帳號、配置、日誌與桌面設定,並使用目標機器的金鑰重新加密憑證,不覆蓋本機已有鑰匙。可取消包含日誌以減小檔案;舊 .sql 備份仍可匯入。恢復前自動保留安全備份,完成後需要重新登入管理面板。", "尚未注册管理员。开启「网关 → 网络访问 → 允许其他设备访问网关」时会引导注册,也可以从登录页注册。": "尚未註冊管理員。開啟「閘道 → 網路存取 → 允許其他裝置存取閘道」時會引導註冊,也可以從登入頁註冊。", "尚未注册管理员:管理接口不需要登录。开启「允许局域网访问」时会引导注册,也可以从登录页注册。": "尚未註冊管理員:管理介面不需要登入。開啟「允許區域網路存取」時會引導註冊,也可以從登入頁註冊。", "尚未配置视觉分析模型": "尚未配置視覺分析模型", "局域网开放后,管理接口要求登录。请设置管理员账号与密码,注册完成会直接继续开启流程。": "區域網路開放後,管理介面要求登入。請設定管理員帳號與密碼,註冊完成會直接繼續開啟流程。", "局域网访问": "區域網路存取", "工具用法与环境说明那一大段。": "工具用法與環境說明那一大段。", "已为「{label}」单独配置提示词": "已為「{label}」單獨配置提示詞", "已作为独立应用运行": "已作為獨立應用執行", "已使用本机密钥重新加密 {n} 项凭证,原有密钥未被覆盖。": "已使用本機金鑰重新加密 {n} 項憑證,原有金鑰未被覆蓋。", "已保存 {count} / {limit} 条报文(超出后丢弃最旧的)。": "已儲存 {count} / {limit} 條報文(超出後丟棄最舊的)。", "已保存的值不符合当前插件规则,请修改或恢复默认值。": "已儲存的值不符合目前外掛規則,請修改或還原預設值。", "已保存,留空则不修改": "已儲存,留空則不修改", "已保存,留空沿用": "已儲存,留空沿用", "已关闭": "已關閉", "已关闭 models.dev 联网刷新": "已關閉 models.dev 聯網重新整理", "已关闭。{note}": "已關閉。{note}", "已关闭「{label}」的网关自带提示词:能否通过上游校验取决于上游当前口径": "已關閉「{label}」的閘道器自帶提示詞:能否通過上游校驗取決於上游當前口徑", "已关闭会话图片压缩": "已關閉會話圖片壓縮", "已关闭出站指纹脱敏": "已關閉出站指紋脫敏", "已关闭开发者角色兼容": "已關閉開發者角色相容", "已关闭第三方模型回答完自动折叠过程": "已關閉第三方模型回答完自動摺疊過程", "已关闭网关跨域访问": "已關閉閘道器跨域存取", "已关闭:不额外补阶段标记,由客户端决定过程展示。": "已關閉:不額外補階段標記,由客戶端決定過程展示。", "已删除分组「{name}」": "已刪除分組「{name}」", "已取消「{label}」的单独配置": "已取消「{label}」的單獨配置", "已取消安装": "已取消安裝", "已取消导入": "已取消匯入", "已取消导出": "已取消匯出", "已取消恢复": "已取消恢復", "已启用 {count} 条规则,应用于{scope}。": "已啟用 {count} 條規則,應用於{scope}。", "已启用登录": "已啟用登入", "已复制全部版本信息": "已複製全部版本資訊", "已应用": "已應用", "已开启": "已開啟", "已开启:为正常完成的 Codex 回答补阶段标记。": "已開啟:為正常完成的 Codex 回答補階段標記。", "已开启:其他设备把 API 地址指向 {url}{panel}。": "已開啟:其他裝置把 API 地址指向 {url}{panel}。", "已开启:监听 0.0.0.0,允许其他设备访问。": "已開啟:監聽 0.0.0.0,允許其他裝置存取。", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "已恢復預設分組:概覽 / 轉發鏈路 / 診斷 / 系統", "已截断": "已截斷", "已指定出口": "已指定出口", "已接管": "已接管", "已改回内置默认提示词": "已改回內建預設提示詞", "已新建分组「{name}」,点组头的 + 把菜单移进来": "已新建分組「{name}」,點組頭的 + 把選單移進來", "已清掉「{label}」界面编辑的正文": "已清掉「{label}」介面編輯的正文", "已清掉界面编辑的提示词(回落文件 / 内置默认)": "已清掉介面編輯的提示詞(回落檔案 / 內建預設)", "已清空,回落插件内置默认值": "已清空,回落外掛內建預設值", "已清除本机保存的 API Key": "已清除本機儲存的 API Key", "已生效": "已生效", "已用时 {time}": "已用時 {time}", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。": "已自動切換到最小中性提示詞(撞了上游內容攔截,多半是 system 指紋誤報),到 {until} 自動解除。", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "已自動切換到最小中性提示詞(撞了上游內容攔截,多半是 system 指紋誤報),到 {until} 自動解除。期間本模式自己的提示詞不會發出;把提示詞改好後可以立即解除。", "已自动改用最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。": "已自動改用最小中性提示詞(撞了上游內容攔截,多半是 system 指紋誤報),到 {until} 自動解除。", "已自定义": "已自訂", "已运行": "已執行", "已退出登录": "已退出登入", "已隐藏": "已隱藏", "巴西葡萄牙语": "巴西葡萄牙語", "希望接入新的提供商或模型": "希望接入新的提供商或模型", "库中 schema": "庫中 schema", "库主文件的大小(不含运行期间的 WAL 临时文件,退出时已自动并回)。": "庫主檔案的大小(不含執行期間的 WAL 臨時檔案,退出時已自動並回)。", "库存目标": "庫存目標", "应用提供商": "應用提供商", "应用版本:{version}": "應用版本:{version}", "应用状态": "應用狀態", "应用窗口": "應用視窗", "建立上游 TCP/TLS 连接或代理隧道的最大等待时间(秒),默认 30 秒,范围 1~3600。": "建立上游 TCP/TLS 連線或代理隧道的最大等待時間(秒),預設 30 秒,範圍 1~3600。", "开发构建": "開發構建", "开发者角色兼容": "開發者角色相容", "开发者角色兼容设置已刷新": "開發者角色相容設定已重新整理", "开启前需要注册面板管理员,已注册会跳过此步骤。管理接口需要管理员会话或网关 Key;API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。": "開啟前需要註冊面板管理員,已註冊會略過此步驟。管理介面需要管理員工作階段或閘道 Key;API 呼叫需要已啟用的閘道 Key,沒有時會自動建立一把「預設」Key。", "开启后新发生的请求才会被记录(已经过去的请求补不回来)。报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "開啟後新發生的請求才會被記錄(已經過去的請求補不回來)。報文統一存放在本地資料庫裡,只保留最近 500 條(超出後丟棄最舊的),條數見左側「資料 → 資料儲存」的「除錯報文」。", "开启后新发生的请求才会被记录(已经过去的请求补不回来),请求日志的「预览对话」也随之开始保存原始正文。上游报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "開啟後新發生的請求才會被記錄(已經過去的請求補不回來),請求日誌的「預覽對話」也隨之開始儲存原始正文。上游報文統一存放在本地資料庫裡,只保留最近 500 條(超出後丟棄最舊的),條數見左側「資料 → 資料儲存」的「除錯報文」。", "开启后监听所有 IPv4 网卡(0.0.0.0),并不局限于局域网,也不会自动开放到公网;实际访问范围取决于网络与防火墙设置。修改后需要重启应用。": "開啟後監聽所有 IPv4 網路介面卡(0.0.0.0),並不侷限於區域網路,也不會自動開放到公網;實際存取範圍取決於網路與防火牆設定。修改後需要重新啟動應用程式。", "开启后网关将监听所有 IPv4 网卡(0.0.0.0),访问范围不再限于本机,也不局限于局域网。是否能从公网访问取决于网络与防火墙设置。": "開啟後閘道將監聽所有 IPv4 網路介面卡(0.0.0.0),存取範圍不再限於本機,也不侷限於區域網路。是否能從公網存取取決於網路與防火牆設定。", "开启后网关将监听所有网卡,同一局域网内的设备即可把 API 地址指向本机 IP 一起使用;管理接口从此要求管理员会话或网关 Key,转发接口在没有一把启用的 Key 时也会拒绝服务(届时会自动创建一把名为「默认」的 Key)。": "開啟後閘道器將監聽所有網路卡,同一區域網路內的裝置即可把 API 地址指向本機 IP 一起使用;管理介面從此要求管理員會話或閘道器 Key,轉發介面在沒有一把啟用的 Key 時也會拒絕服務(屆時會自動建立一把名為「預設」的 Key)。", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 套餐池(Start Plan)」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "開啟後,關閉視窗不只是隱藏,而是把介面視窗整個銷燬:底層的 WebView2 六個常駐程序(約 200MB 記憶體)隨之退出,閘道器轉發、定時簽到、餘額查詢都在後臺程序裡繼續,不受影響;需要介面時點托盤圖示重新開啟(WebView 冷啟動約 1 秒)。注意:介面銷燬期間「ZCode 套餐池(Start Plan)」通道的驗證碼權杖由介面鑄造,無法補充 —— 走該通道的請求會以 503 落進請求日誌(寫明原因),重新開啟介面即自動恢復。此開關只在「關閉視窗時最小化到托盤」開啟時有意義,最小化視窗不受影響。", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 活动套餐」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。与「开机自动启动」同时开启时,开机后也不建界面(只留托盘与后台进程),点托盘才打开 —— 效果与关窗后一致。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "開啟後,關閉視窗不只是隱藏,而是把介面視窗整個銷燬:底層的 WebView2 六個常駐程序(約 200MB 記憶體)隨之退出,閘道器轉發、定時簽到、餘額查詢都在後臺程序裡繼續,不受影響;需要介面時點托盤圖示重新開啟(WebView 冷啟動約 1 秒)。注意:介面銷燬期間「ZCode 活動套餐」通道的驗證碼權杖由介面鑄造,無法補充 —— 走該通道的請求會以 503 落進請求日誌(寫明原因),重新開啟介面即自動恢復。與「開機自動啟動」同時開啟時,開機後也不建介面(只留托盤與後臺程序),點托盤才打開 —— 效果與關窗後一致。此開關只在「關閉視窗時最小化到托盤」開啟時有意義,最小化視窗不受影響。", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 活动套餐」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "開啟後,關閉視窗不只是隱藏,而是把介面視窗整個銷燬:底層的 WebView2 六個常駐程序(約 200MB 記憶體)隨之退出,閘道器轉發、定時簽到、餘額查詢都在後臺程序裡繼續,不受影響;需要介面時點托盤圖示重新開啟(WebView 冷啟動約 1 秒)。注意:介面銷燬期間「ZCode 活動套餐」通道的驗證碼權杖由介面鑄造,無法補充 —— 走該通道的請求會以 503 落進請求日誌(寫明原因),重新開啟介面即自動恢復。此開關只在「關閉視窗時最小化到托盤」開啟時有意義,最小化視窗不受影響。", "开启后,关闭窗口会销毁界面并释放 WebView 进程,网关转发、定时签到、余额查询仍在后台继续。ZCode 模型请求免验证时不受影响;上游要求人机验证时,需要重新打开界面,在账号的「套餐明细」中主动完成验证。此开关只在「关闭窗口时最小化到托盘」开启时有意义。": "開啟後,關閉視窗會銷毀介面並釋放 WebView 程序,閘道轉發、定時簽到、餘額查詢仍在背景繼續。ZCode 模型請求免驗證時不受影響;上游要求人機驗證時,需要重新開啟介面,在帳號的「套餐明細」中主動完成驗證。此開關只在「關閉視窗時最小化到系統匣」開啟時有意義。", "开启后,新发生的请求会保存上游调试报文与下游正文,历史请求无法补录。上游调试报文只保留最近 500 条;两侧条数可在「数据 → 数据存储」查看。关闭开关不会删除已保存的报文,可在请求日志中选择「仅清空报文原文」一起清理。": "開啟後,新發生的請求會儲存上游除錯報文與下游正文,歷史請求無法補錄。上游除錯報文只保留最近 500 條;兩側條數可在「資料 → 資料儲存」檢視。關閉開關不會刪除已儲存的報文,可在請求日誌中選擇「僅清空報文原文」一起清理。", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。": "開啟後,登入頁在瀏覽器後臺自動完成驗證(對真人無感),而指令碼每次嘗試都要先算一道題 —— 暴力破解與搶注的成本顯著上升。僅影響面板的登入 / 註冊,與 API 客戶端的 API Key 無關。", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。桌面端与网页端各自独立:桌面端主要服务本机与局域网,网页端(Docker / 服务端)直接暴露在网络上的登录页风险更高,建议保持开启。": "開啟後,登入頁在瀏覽器後臺自動完成驗證(對真人無感),而指令碼每次嘗試都要先算一道題 —— 暴力破解與搶注的成本顯著上升。僅影響面板的登入 / 註冊,與 API 客戶端的 API Key 無關。桌面版與網頁端各自獨立:桌面版主要服務本機與區域網路,網頁端(Docker / 服務端)直接暴露在網路上的登入頁風險更高,建議保持開啟。", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "開啟後,閘道器會把每次轉發**發給上游的請求**(請求頭 + 請求體)與**上游返回的響應**(狀態碼 + 響應頭 + 響應體)完整儲存到本地,供請求日誌頁的「詳情」檢視。請求頭裡的 Authorization、Cookie、API Key 等憑據欄位一律替換成 [redacted],不會明文落盤;請求體與響應體按原樣儲存(可能包含你的對話內容)。報文只保留最近 500 條,超出後丟棄最舊的。這是排障用的臨時開關,不需要時建議關閉。", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看;请求日志详情的「预览对话」也依赖本开关 —— 它保存的是客户端发来的请求体与网关下发的响应体(两侧各截断到 128 KiB),不开这个开关时预览对话没有数据可看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。上游报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "開啟後,閘道器會把每次轉發**發給上游的請求**(請求頭 + 請求體)與**上游返回的響應**(狀態碼 + 響應頭 + 響應體)完整儲存到本地,供請求日誌頁的「詳情」檢視;請求日誌詳情的「預覽對話」也依賴本開關 —— 它儲存的是客戶端發來的請求體與閘道器下發的響應體(兩側各截斷到 128 KiB),不開這個開關時預覽對話沒有資料可看。請求頭裡的 Authorization、Cookie、API Key 等憑據欄位一律替換成 [redacted],不會明文落盤;請求體與響應體按原樣儲存(可能包含你的對話內容)。上游報文只保留最近 500 條,超出後丟棄最舊的。這是排障用的臨時開關,不需要時建議關閉。", "开启后,能连接到网关的设备可通过浏览器访问网页管理面板,需使用管理员账号登录。访问范围与网关相同,并不局限于局域网。": "開啟後,能連線到閘道的裝置可透過瀏覽器存取網頁管理面板,需使用管理員帳號登入。存取範圍與閘道相同,並不侷限於區域網路。", "开启后,调用方可以用专用请求头声明已登记的客户端名称。这不是身份认证,只用于日志和统计,不会获得额外权限。": "開啟後,呼叫方可以用專用請求頭宣告已登記的客戶端名稱。這不是身份認證,只用於日誌和統計,不會獲得額外許可權。", "开启局域网访问": "開啟區域網路存取", "开启来源声明": "開啟來源宣告", "开启网络访问": "開啟網路存取", "开放后,局域网内其他设备的浏览器打开本机 IP 即可进入管理面板(需管理员账号登录)。": "開放後,區域網路內其他裝置的瀏覽器開啟本機 IP 即可進入管理面板(需管理員帳號登入)。", "开机自动启动": "開機自動啟動", "开源许可": "開源授權", "开(最多 {n} 轮)": "開(最多 {n} 輪)", "归属客户端": "歸屬客戶端", "当前三段都是官方原文。": "當前三段都是官方原文。", "当前不可用": "當前不可用", "当前后端不支持词表编辑与提供商范围,请更新后端后重试。": "當前後端不支援詞表編輯與提供商範圍,請更新後端後重試。", "当前固定为浅色模式,不随系统变化。": "當前固定為淺色模式,不隨系統變化。", "当前固定为深色模式,不随系统变化。": "當前固定為深色模式,不隨系統變化。", "当前密码": "當前密碼", "当前已改过:{edited}。": "當前已改過:{edited}。", "当前形态": "當前形態", "当前按 100% 显示(默认比例)。": "當前按 100% 顯示(預設比例)。", "当前按 k / M 缩写显示(如 1.20M / 8.4k)。": "當前按 k / M 縮寫顯示(如 1.20M / 8.4k)。", "当前按 {n}% 显示。": "當前按 {n}% 顯示。", "当前按「万 / 亿」式本地量级词显示(如 1.2亿 / 8400万)。": "當前按「萬 / 億」式本地量級詞顯示(如 1.2億 / 8400萬)。", "当前是透传模式:存下来也不会发出,切成「替换 / 追加」之后才生效。": "當前是透傳模式:存下來也不會發出,切成「替換 / 追加」之後才生效。", "当前显示为「1.20M / 8.4k / 1.2B」这类英文缩写。": "目前顯示為「1.20M / 8.4k / 1.2B」這類英文縮寫。", "当前显示为「1.2亿 / 8400万」这类中文量级。": "當前顯示為「1.2億 / 8400萬」這類中文量級。", "当前样本结果:{name}": "當前樣本結果:{name}", "当前正在使用": "目前正在使用", "当前浏览器以管理员身份登录着本面板。「退出登录」会撤销这台设备的登录会话(30 天内的自动续期一并失效),需要重新输入账号密码;其他已登录的设备不受影响。": "當前瀏覽器以管理員身份登入著本面板。「退出登入」會撤銷這臺裝置的登入會話(30 天內的自動續期一併失效),需要重新輸入帳號密碼;其他已登入的裝置不受影響。", "当前版本不支持品牌设置": "目前版本不支援品牌設定", "当前环境不支持局域网访问设置": "當前環境不支援區域網路存取設定", "当前环境不支持整库备份": "當前環境不支援整庫備份", "当前环境不支持整库备份(仅桌面端可用)": "當前環境不支援整庫備份(僅桌面版可用)", "当前环境不支持整库恢复": "當前環境不支援整庫恢復", "当前环境不支持整库恢复(仅桌面端可用)": "當前環境不支援整庫恢復(僅桌面版可用)", "当前环境不支持网络访问设置": "目前環境不支援網路存取設定", "当前环境不支持读取版本信息(桥接方法缺失)": "當前環境不支援讀取版本資訊(橋接方法缺失)", "当前生效值:{value}": "目前生效值:{value}", "当前生效的正文来自{source}{file}。保存后这一份会盖过提示词文件与内置默认{note}。": "當前生效的正文來自{source}{file}。儲存後這一份會蓋過提示詞檔案與內建預設{note}。", "当前界面": "當前介面", "当前管理员:{name}": "當前管理員:{name}", "当前设置已保存": "當前設定已儲存", "当前跟随操作系统的深浅色设置,系统切换时界面会自动跟上。": "當前跟隨作業系統的深淺色設定,系統切換時介面會自動跟上。", "当前路由内的可用视觉模型": "當前路由內的可用視覺模型", "待迁移旧数据": "待遷移舊資料", "待配置": "待配置", "忘记密码时无法在界面里找回:需要停掉程序后,从数据库删除管理员记录(kv 表的 panelAdmin 键),重启后按首次使用重新注册。具体命令与各形态的库文件路径见 docs 目录下的「重置管理员」文档。": "忘記密碼時無法在介面裡找回:需要停掉程式後,從資料庫刪除管理員記錄(kv 表的 panelAdmin 鍵),重啟後按首次使用重新註冊。具體命令與各形態的庫檔案路徑見 docs 目錄下的「重置管理員」文件。", "思考等级、图片能力未知、等待上限": "思考等級、圖片能力未知、等待上限", "总耗时 {time}": "總耗時 {time}", "恢复中…": "恢復中…", "恢复中,请稍候…": "恢復中,請稍候…", "恢复仍在进行中…": "恢復仍在進行中…", "恢复失败": "恢復失敗", "恢复失败:{message}": "恢復失敗:{message}", "恢复完成": "恢復完成", "恢复官方原文": "恢復官方原文", "恢复插件默认值": "還原外掛預設值", "恢复整库": "恢復整庫", "恢复整库备份": "恢復整庫備份", "恢复期间请不要关闭应用或退出登录 —— 中途中断会让数据停在一个不完整的状态。完成后本页会自动刷新。": "恢復期間請不要關閉應用或退出登入 —— 中途中斷會讓資料停在一個不完整的狀態。完成後本頁會自動重新整理。", "恢复没有完成": "恢復沒有完成", "恢复进度": "恢復進度", "恢复默认": "恢復預設", "恢复默认 Logo": "還原預設 Logo", "恢复默认侧边栏": "恢復預設側邊欄", "恢复默认品牌": "還原預設品牌", "恢复默认词表": "恢復預設詞表", "想回到原来那份,把这里清空再保存即可(不会删掉你配的文件路径)。": "想回到原來那份,把這裡清空再儲存即可(不會刪掉你配的檔案路徑)。", "想要的新功能或改进想法": "想要的新功能或改進想法", "所有未单独配置的提供商都用这一份": "所有未單獨配置的提供商都用這一份", "所有菜单都已在这一组": "所有選單都已在這一組", "手机端只做查看与高频操作;添加账号、编辑凭证、改写客户端配置仍需桌面端。": "手機端只做檢視與高頻操作;新增帳號、編輯憑證、改寫客戶端配置仍需桌面版。", "手机端可管理所连接网关的账号、签到与插件,并使用提供商声明的动态登录入口;其余既有添加入口、编辑凭证和改写客户端配置仍需桌面面板。": "手機端可管理所連線閘道的帳號、簽到與外掛,並使用提供商宣告的動態登入入口;其餘既有新增入口、編輯憑證及改寫用戶端設定仍需桌面面板。", "手机端可管理所连接网关的账号、签到与插件;添加账号、编辑凭证、改写客户端配置仍需桌面端。": "手機端可管理所連線閘道器的帳號、簽到與外掛;新增帳號、編輯憑證、改寫客戶端配置仍需桌面版。", "托管网页界面": "託管網頁介面", "找不到可用视觉模型时": "找不到可用視覺模型時", "找不到可用视觉模型时会先停止并说明原因。": "找不到可用視覺模型時會先停止並說明原因。", "找不到就停止并说明原因。": "找不到就停止並說明原因。", "找不到就按指定备选顺序尝试(还没加备选)。": "找不到就按指定備選順序嘗試(還沒加備選)。", "找不到就按顺序试这 {count} 个备选(先是 {model})。": "找不到就按順序試這 {count} 個備選(先是 {model})。", "把 Base URL 复制给客户端": "把 Base URL 複製給客戶端", "把地址里的 your-server 与 USERNAME 换成你自己的;目录不存在时会自动创建。": "把地址裡的 your-server 與 USERNAME 換成你自己的;目錄不存在時會自動建立。", "把整份数据库(账号、网关配置、事件日志、请求统计、调试报文与桌面设置)导出成一个 SQL 文件,恢复时整体替换本机全部数据 —— 与上面「账号导入 / 导出」的逐条合并是两种语义:恢复会连配置、日志与当前启用状态一起换成备份那台机器的状态。导出默认包含日志与调试报文(文件可能很大),不需要时可以取消勾选只备业务数据。恢复前会自动把当前数据备份到配置目录的 backups/ 下,恢复后需要重新登录管理面板。": "把整份資料庫(帳號、閘道器配置、事件日誌、請求統計、除錯報文與桌面設定)匯出成一個 SQL 檔案,恢復時整體替換本機全部資料 —— 與上面「帳號匯入 / 匯出」的逐條合併是兩種語義:恢復會連配置、日誌與當前啟用狀態一起換成備份那臺機器的狀態。匯出預設包含日誌與除錯報文(檔案可能很大),不需要時可以取消勾選只備業務資料。恢復前會自動把當前資料備份到配置目錄的 backups/ 下,恢復後需要重新登入管理面板。", "把整次请求交给视觉模型,由它直接回答,不再回到原模型。": "把整次請求交給視覺模型,由它直接回答,不再回到原模型。", "把菜单移入 {name}": "把選單移入 {name}", "把菜单移入「{name}」": "把選單移入「{name}」", "把账号、网关配置、自定义提供商、Agent 配置、代理池 / 订阅、签到与余额记录同步到 WebDAV 或 S3 兼容存储,换台机器后一键取回。事件日志、请求明细、调试报文与面板登录态不在同步范围内(它们是本机的运行痕迹)。上传的账号凭证仍是加密形态,解密用的账号密钥由「同步密码」单独加密后一并上传 —— 同步密码不会保存到云端,换机下载时需要重新输入。": "把帳號、閘道器配置、自定義提供商、Agent 配置、代理池 / 訂閱、簽到與餘額記錄同步到 WebDAV 或 S3 相容儲存,換臺機器後一鍵取回。事件日誌、請求明細、除錯報文與面板登入態不在同步範圍內(它們是本機的執行痕跡)。上傳的帳號憑證仍是加密形態,解密用的帳號金鑰由「同步密碼」單獨加密後一併上傳 —— 同步密碼不會儲存到雲端,換機下載時需要重新輸入。", "把路径里的主目录显示成 ~,截图分享时不暴露用户名": "把路徑裡的主目錄顯示成 ~,截圖分享時不暴露使用者名稱", "把路径里的主目录(如 C:\\Users\\你的用户名)显示成 ~,截图分享时不暴露用户名。只影响本页显示与复制,不改任何文件。": "把路徑裡的主目錄(如 C:\\Users\\你的使用者名稱)顯示成 ~,截圖分享時不暴露使用者名稱。隻影響本頁顯示與複製,不改任何檔案。", "报表天数": "報表天數", "报表页的热力图与按天趋势,默认 99999 天(近似全量保留),可填 1–99999 天。": "報表頁的熱力圖與按天趨勢,預設 99999 天(近似全量保留),可填 1–99999 天。", "拖动分组 {name}": "拖動分組 {name}", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "拖動左側 ⠿ 調整順序(選單可以跨組拖);撥開關控制顯隱;點分組名可重新命名;組頭的 + 把別的選單移進來;眼睛按鈕隱藏整組。改動即時生效並記住,左側側邊欄就是結果。鍵盤也能排序:把手聚焦後按 Alt+↑ / ↓。", "拖动菜单 {name}": "拖動選單 {name}", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "拖動調整分組順序(Alt+↑ / ↓ 也可)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "拖動調整順序,可跨組(Alt+↑ / ↓ 也可)", "指定备选仍受当前请求权限和路由范围限制,路由组请求不会跳到组外。不会转为辅助识图继续。": "指定備選仍受當前請求許可權和路由範圍限制,路由組請求不會跳到組外。不會轉為輔助識圖繼續。", "指定提供商": "指定提供商", "指定角色": "指定角色", "指定错误码直接换号": "指定錯誤碼直接換號", "指纹脱敏": "指紋脫敏", "指纹脱敏会在转发前按词表顺序改写请求消息中的文本,包括对话内容、思考内容和工具调用参数。默认词表包含客户端模板句与计费表头的精确替换、正则删除规则,可以新增、编辑、删除、启停和调整顺序;替换内容留空表示删除匹配内容。默认应用全部提供商,也可指定多家。改动只作用于发给上游的副本,响应内容不变。编辑后点击「保存设置」,下一次请求生效;清空词表表示不做任何指纹改写,恢复默认只重置词表。": "指紋脫敏會在轉發前按詞表順序改寫請求訊息中的文本,包括對話內容、思考內容和工具呼叫引數。預設詞表包含客戶端模板句與計費表頭的精確替換、正則刪除規則,可以新增、編輯、刪除、啟停和調整順序;替換內容留空表示刪除匹配內容。預設應用全部提供商,也可指定多家。改動只作用於發給上游的副本,響應內容不變。編輯後點擊「儲存設定」,下一次請求生效;清空詞表表示不做任何指紋改寫,恢復預設只重置詞表。", "指纹脱敏设置仅本次运行生效,写入数据库失败,请检查配置目录": "指紋脫敏設定僅本次執行生效,寫入資料庫失敗,請檢查配置目錄", "指纹脱敏设置已刷新": "指紋脫敏設定已重新整理", "按下面两块设置处理图片;关闭后设置全部保留。": "依下面兩塊設定處理圖片;關閉後設定全部保留。", "按列表自上而下匹配": "按列表自上而下匹配", "按原文精确匹配,区分大小写;不会自动去掉首尾空白。": "按原文精確匹配,區分大小寫;不會自動去掉首尾空白。", "按天聚合保留天数": "按天聚合保留天數", "按指定备选顺序尝试": "按指定備選順序嘗試", "按提供商查看和调整专属选项": "依供應商查看與調整專屬選項", "按提供商筛选设置": "依供應商篩選設定", "按提供商管理专属选项,作用于当前网关中该提供商的所有账号。": "依供應商管理專屬選項,套用至目前閘道中該供應商的所有帳號。", "按提供商配置": "按提供商配置", "按每条请求的软件标识识别客户端,不依赖 API Key。规则修改只影响新请求,内置规则随软件更新,自定义规则参与备份与云同步。": "按每條請求的軟體標識識別客戶端,不依賴 API Key。規則修改隻影響新請求,內建規則隨軟體更新,自定義規則參與備份與雲同步。", "换一台服务器": "換一臺伺服器", "排队等待": "排隊等待", "排队等待次数": "排隊等待次數", "排队等待秒数": "排隊等待秒數", "排队等待设置已刷新": "排隊等待設定已重新整理", "探测与领取时会用 {version} 作为客户端版本号": "探測與領取時會用 {version} 作為客戶端版本號", "接入": "接入", "接受调用方来源声明": "接受呼叫方來源宣告", "接管回答的模型": "接管回答的模型", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "控制主側邊欄顯示哪些選單、按什麼順序、怎麼分組。隱藏隻影響導航顯示,不會撤銷頁面存取許可權;被隱藏的頁面仍可通過地址直接開啟。", "控制报表与请求日志里 Token 读数的写法:开启后按「万 / 亿」式的本地量级词显示(简体为万 / 亿,繁体为萬 / 億,日文为万 / 億,韩文为만 / 억),关闭则用 k / M 缩写(与上游文档、接口字段的写法一致)。英文 / 葡语的本地量级词就是 k / M,这项对它们没有区别。只影响显示口径,不改变任何统计与存储的数值。": "控制報表與請求日誌裡 Token 讀數的寫法:開啟後按「萬 / 億」式的本地量級詞顯示(簡體為萬 / 億,繁體為萬 / 億,日文為萬 / 億,韓文為만 / 억),關閉則用 k / M 縮寫(與上游文件、介面欄位的寫法一致)。英文 / 葡語的本地量級詞就是 k / M,這項對它們沒有區別。隻影響顯示口徑,不改變任何統計與儲存的數值。", "控制报表与请求日志里 Token 读数的写法:开启后按中文量级显示(1.2亿 / 8400万),关闭则用 k / M / B 缩写(与上游文档、接口字段的写法一致)。这只影响显示口径,不改变任何统计与存储的数值。": "控制報表與請求日誌裡 Token 讀數的寫法:開啟後按中文量級顯示(1.2億 / 8400萬),關閉則用 k / M / B 縮寫(與上游文件、介面欄位的寫法一致)。這只影響顯示口徑,不改變任何統計與儲存的數值。", "控制界面的深浅色,与左侧边栏底部的三个主题按钮是同一个设置(改哪一处,另一处立刻跟上)。「跟随系统」会随操作系统当前的浅色 / 深色自动切换,并在系统主题变化时即时跟上;选「浅色」或「深色」则把界面固定在该模式,不再随系统变化。窗口标题栏的深浅色会一并同步,不会出现深色界面配一条浅色标题栏的情况。": "控制介面的深淺色,與左側邊欄底部的三個主題按鈕是同一個設定(改哪一處,另一處立刻跟上)。「跟隨系統」會隨作業系統當前的淺色 / 深色自動切換,並在系統主題變化時即時跟上;選「淺色」或「深色」則把介面固定在該模式,不再隨系統變化。視窗標題欄的深淺色會一併同步,不會出現深色介面配一條淺色標題欄的情況。", "提供商与模型": "提供商與模型", "提供商专属设置": "供應商專屬設定", "提供商当前不可用,未保存的修改已保留;恢复插件后可继续编辑。": "供應商目前無法使用,尚未儲存的修改已保留;恢復外掛後可繼續編輯。", "提供商设置已保存": "供應商設定已儲存", "提供商设置返回格式无效,请刷新后重试": "供應商設定回傳格式無效,請重新整理後再試。", "提建议": "提建議", "提示词文件": "提示詞檔案", "提示词文件已更新": "提示詞檔案已更新", "提示词正文": "提示詞正文", "提示词正文已更新": "提示詞正文已更新", "插件或设置已变化,请放弃修改并刷新后重新编辑。": "外掛或設定已變更,請放棄修改並重新整理後再編輯。", "操作系统": "作業系統", "支持 .a2ab 加密备份和旧 .sql 文件;旧 SQL 不包含恢复密钥,跨机器导入仍需原机密钥。": "支援 .a2ab 加密備份和舊 .sql 檔案;舊 SQL 不包含恢復金鑰,跨機器匯入仍需原機金鑰。", "支持 PNG、JPG、WebP,最大 2 MiB、4096 × 4096 像素;自动缩小至 512 像素以内,建议使用正方形图片。": "支援 PNG、JPG、WebP,最大 2 MiB、4096 × 4096 像素;自動縮小至 512 像素以內,建議使用正方形圖片。", "改动仍保存在本机,修复网络或凭据后下一次改动会自动重试,也可以手动点「上传到云端」。": "改動仍儲存在本機,修復網路或憑據後下一次改動會自動重試,也可以手動點「上傳到雲端」。", "改动仍保存在本机,系统会延长等待并自动重试;修复网络或凭据后,也可以手动点「上传到云端」。": "變更仍儲存在本機,系統會延長等待並自動重試;修復網路或憑證後,也可以手動點「上傳到雲端」。", "改完立即生效,不用重启(下一个请求就用新模式)。降级是自动的临时状态,解除后本模式自己的提示词立刻恢复。": "改完立即生效,不用重啟(下一個請求就用新模式)。降級是自動的臨時狀態,解除後本模式自己的提示詞立刻恢復。", "放大或缩小整个界面(文字与控件一起变),效果与浏览器 Ctrl +/- 相同:共 11 档,立即生效并记住。": "放大或縮小整個介面(文字與控制元件一起變),效果與瀏覽器 Ctrl +/- 相同:共 11 檔,立即生效並記住。", "放弃修改并刷新": "放棄修改並重新整理", "数据": "資料", "数据保留": "資料保留", "数据保留设置已刷新": "資料保留設定已重新整理", "数据存储": "資料儲存", "数据库 schema": "資料庫 schema", "数据库不可用": "資料庫不可用", "数据库与恢复密钥一起加密保存。密码不会保存在应用或备份中,忘记后无法恢复,请妥善保管。": "資料庫與恢復金鑰一起加密儲存。密碼不會儲存在應用或備份中,忘記後無法恢復,請妥善保管。", "数据库主文件与 WAL 文件的总占用,与请求日志清理弹窗采用同一口径;清理后可压缩数据库回收空闲空间。": "資料庫主檔案與 WAL 檔案的總佔用,與請求日誌清理彈窗採用同一口徑;清理後可壓縮資料庫回收空閒空間。", "数据库文件": "資料庫檔案", "数据目录": "資料目錄", "数据统一保存在配置目录下的 agent2api.db;如需更换位置,请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "資料統一儲存在配置目錄下的 agent2api.db;如需更換位置,請設定環境變數 AGENT2API_PROXY_HOME 後重啟程式。", "整体替换": "整體替換", "整库备份 / 恢复": "整庫備份 / 恢復", "整库恢复失败": "整庫恢復失敗", "整库恢复完成": "整庫恢復完成", "整次请求交给 {model} 直接回答,不再回到原模型。": "整次請求交給 {model} 直接回答,不再回到原模型。", "新分组名": "新分組名", "新增 {added} 个、更新 {updated} 个{suffix}{note}": "新增 {added} 個、更新 {updated} 個{suffix}{note}", "新增脱敏规则": "新增脫敏規則", "新增规则": "新增規則", "新安装和升级后默认关闭。先配置再开启,关闭后保留配置。": "新安裝和升級後預設關閉。先配置再開啟,關閉後保留配置。", "新密码": "新密碼", "新密码不能与当前密码相同": "新密碼不能與當前密碼相同", "新密码至少 8 位": "新密碼至少 8 位", "新建分组": "新建分組", "新建客户端分类": "新建客戶端分類", "无效或重复的标识请求头:{headers}": "無效或重複的標識請求頭:{headers}", "无法读取品牌设置": "無法讀取品牌設定", "无法读取图片,请重新选择": "無法讀取圖片,請重新選擇", "日志与请求日志同时受保留天数和数量上限限制。日志默认 30 天、10000 条,各级别按比例保留;调试详情最多保留 3 天。请求日志默认 99999 天、1000000 条(100 万),超出后从最旧的记录开始清理,并同步删除对应原始正文。按天聚合默认 99999 天,只按天数保留,不受请求日志数量清理影响。天数可填 1–99999,数量可填 1–100000000。调小任一设置并确认后立即清理,且不可恢复。": "日誌與請求日誌同時受保留天數和數量上限限制。日誌預設 30 天、10000 筆,各層級按比例保留;除錯詳情最多保留 3 天。請求日誌預設 99999 天、1000000 筆(100 萬),超出後從最舊的記錄開始清理,並同步刪除對應原始本文。每日彙總預設 99999 天,只按天數保留,不受請求日誌數量清理影響。天數可填 1–99999,數量可填 1–100000000。調小任一設定並確認後立即清理,且無法還原。", "日志保留数量上限": "日誌保留數量上限", "日志文件": "日誌檔案", "日语": "日語", "显示 {name}": "顯示 {name}", "显示分组 {name}": "顯示分組 {name}", "显示名称": "顯示名稱", "显示名称最多 64 个字符": "顯示名稱最多 64 個字元", "显示模式": "顯示模式", "显示这一组": "顯示這一組", "暂无可编辑的提供商设置": "暫無可編輯的供應商設定", "暂无自定义规则,正在使用内置识别。": "暫無自定義規則,正在使用內建識別。", "暂无自定义规则,正在使用内置识别。也可以从请求详情直接添加规则。": "暫無自定義規則,正在使用內建識別。也可以從請求詳情直接新增規則。", "暂未获取到本机访问地址,请使用其他设备能连接到的本机 IP 与网关端口。": "暫時無法取得本機存取位址,請使用其他裝置能連線到的本機 IP 與閘道連接埠。", "更新": "更新", "更新出网线路": "更新出網線路", "更新通道": "更新通道", "替换": "替換", "替换 = 客户端 system / developer 消息全部删掉,换成网关的提示词;追加 = 保留客户端内容,只在开头 system 块之后多插一条。两者都只改发给上游的副本,客户端看到的响应不变。": "替換 = 客戶端 system / developer 訊息全部刪掉,換成閘道器的提示詞;追加 = 保留客戶端內容,只在開頭 system 塊之後多插一條。兩者都只改發給上游的副本,客戶端看到的響應不變。", "替换为网关提示词": "替換為閘道器提示詞", "替换内容": "替換內容", "替换内容最多 {max} 个字符": "替換內容最多 {max} 個字元", "替换前会自动把当前数据备份到配置目录的 backups/ 文件夹。": "替換前會自動把當前資料備份到配置目錄的 backups/ 資料夾。", "替换前的数据已自动备份为 {name}(在数据目录的 backups/ 下,可整文件拷回)": "替換前的資料已自動備份為 {name}(在資料目錄的 backups/ 下,可整檔案拷回)", "替换并恢复": "替換並恢復", "最多 64 个字符,留空恢复为 Agent2API。": "最多 64 個字元,留空還原為 Agent2API。", "最多 {count} 个备选;备选仍受当前请求权限与路由范围限制,不会跳到路由组外,也不会转为辅助识图。": "最多 {count} 個備選;備選仍受當前請求許可權與路由範圍限制,不會跳到路由組外,也不會轉為輔助識圖。", "最小自动上传间隔": "最小自動上傳間隔", "最近 {window} 条请求中,{scanned} 条有识别依据,{matched} 条符合条件,{applied} 条会采用本规则。": "最近 {window} 條請求中,{scanned} 條有識別依據,{matched} 條符合條件,{applied} 條會採用本規則。", "有未保存的修改": "有未儲存的修改", "有未保存的改动:保存后才能同步(测试连接不受影响)。": "有未儲存的改動:儲存後才能同步(測試連線不受影響)。", "有近期套餐池请求时读取库存状态的间隔,默认 2500 毫秒,可填 1000–30000。没有近期请求时降低读取频率,轮询不会发起验证码。": "有近期套餐池請求時讀取庫存狀態的間隔,預設 2500 毫秒,可填 1000–30000。沒有近期請求時降低讀取頻率,輪詢不會發起驗證碼。", "服务商": "服務商", "服务器地址": "伺服器地址", "服务端密钥加密保存,不会返回浏览器;切回 ALTCHA 后会保留,方便再次启用。": "伺服器金鑰加密儲存,不會回傳瀏覽器;切回 ALTCHA 後會保留,方便再次啟用。", "服务端密钥(Secret Key)": "伺服器金鑰(Secret Key)", "期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "期間本模式自己的提示詞不會發出;把提示詞改好後可以立即解除。", "未保存": "未儲存", "未匹配已知客户端": "未匹配已知客戶端", "未单独配置:模式、提示词文件与正文都跟随上面的全局配置(当前「{mode}」)。": "未單獨配置:模式、提示詞檔案與正文都跟隨上面的全域配置(當前「{mode}」)。", "未启用": "未啟用", "未开启轻量模式:关窗仅隐藏窗口,界面进程常驻内存,随时打开不等待": "未開啟輕量模式:關窗僅隱藏視窗,介面程序常駐記憶體,隨時開啟不等待", "未开启,developer 角色消息会原样发往上游,不认识该角色的上游会报错(400)。": "未開啟,developer 角色訊息會原樣發往上游,不認識該角色的上游會報錯(400)。", "未开启,客户端 system 模板会原样发往上游,可能被内容审核误拦(400)。": "未開啟,客戶端 system 模板會原樣發往上游,可能被內容稽核誤攔(400)。", "未开启,浏览器跨域无法直连网关。": "未開啟,瀏覽器跨域無法直連閘道器。", "未开启,转发时不保存任何原始报文。": "未開啟,轉發時不儲存任何原始報文。", "未开启:网关只监听 127.0.0.1,仅本机可以访问。": "未開啟:閘道器只監聽 127.0.0.1,僅本機可以存取。", "未注册": "未註冊", "未注册闸门": "未註冊閘門", "未知原因": "未知原因", "未知来源": "未知來源", "未知设备": "未知裝置", "未知账号": "未知帳號", "未能读取 Cline 伪装头设置,请稍后重试": "未能讀取 Cline 偽裝頭設定,請稍後重試", "未能读取 ZCode 版本号设置,请稍后重试": "未能讀取 ZCode 版本號設定,請稍後重試", "未能读取 models.dev 元数据状态,请稍后重试": "未能讀取 models.dev 後設資料狀態,請稍後重試", "未能读取云同步设置,请稍后重试。": "未能讀取雲同步設定,請稍後重試。", "未能读取保存后的指纹脱敏设置": "未能讀取儲存後的指紋脫敏設定", "未能读取开发者角色兼容设置,请稍后重试": "未能讀取開發者角色相容設定,請稍後重試", "未能读取指纹脱敏设置,请稍后重试": "未能讀取指紋脫敏設定,請稍後重試", "未能读取机器人校验设置": "未能讀取機器人驗證設定", "未能读取第三方模型回答完自动折叠过程设置,请稍后重试": "未能讀取第三方模型回答完自動摺疊過程設定,請稍後重試", "未能读取系统提示词设置,请稍后重试": "未能讀取系統提示詞設定,請稍後重試", "未能读取网关跨域访问设置,请稍后重试": "未能讀取閘道器跨域存取設定,請稍後重試", "未能读取网络访问设置,请稍后重试": "無法讀取網路存取設定,請稍後重試", "未能读取调试模式设置,请稍后重试": "未能讀取除錯模式設定,請稍後重試", "未能读取账户信息,请稍后重试": "未能讀取帳戶資訊,請稍後重試", "未设置,使用插件内置的默认版本号": "未設定,使用外掛內建的預設版本號", "未采用本规则,请检查开关、来源声明或规则顺序": "未採用本規則,請檢查開關、來源宣告或規則順序", "本地账号、配置、签到与余额记录变化后自动上传(合并 1 秒内的连续改动,最长 10 秒传一次;内容没变时不发请求)。": "本地帳號、配置、簽到與餘額記錄變化後自動上傳(合併 1 秒內的連續改動,最長 10 秒傳一次;內容沒變時不發請求)。", "本机 API 地址": "本機 API 位址", "本机 APK 版本": "本機 APK 版本", "本机全部数据会被备份整体替换,恢复前自动保留安全备份,完成后需要重新登录管理面板。本机已有密钥不会被覆盖。": "本機全部資料會被備份整體替換,恢復前自動保留安全備份,完成後需要重新登入管理面板。本機已有金鑰不會被覆蓋。", "本机应用版本": "本機應用版本", "本机界面版本": "本機介面版本", "本机的业务数据(账号、配置、Agent 配置、代理池 / 订阅、签到与余额记录)将上传并": "本機的業務資料(帳號、配置、Agent 配置、代理池 / 訂閱、簽到與餘額記錄)將上傳並", "本机的全部数据(账号、网关配置、日志统计与桌面设置)将被所选备份文件": "本機的全部資料(帳號、閘道器配置、日誌統計與桌面設定)將被所選備份檔案", "本机的账号、网关配置、Agent 配置、代理池 / 订阅、签到与余额记录将被远端快照": "本機的帳號、閘道器配置、Agent 配置、代理池 / 訂閱、簽到與餘額記錄將被遠端快照", "本次无需刷新": "本次無需重新整理", "本软件不提供任何担保,可按 AGPL-3.0 修改与分发;通过网络提供修改版服务时须向用户提供对应源码。": "本軟體不提供任何擔保,可按 AGPL-3.0 修改與分發;透過網路提供修改版服務時須向使用者提供對應原始碼。", "本项目的 AGPL-3.0 许可不替代这些第三方许可。名称与标识的商标权归各自权利人所有。": "本專案的 AGPL-3.0 授權不取代這些第三方授權。名稱與標誌的商標權歸各自權利人所有。", "机器人校验": "機器人校驗", "机器人校验设置已保存": "機器人驗證設定已儲存", "条数": "筆數", "来源声明": "來源宣告", "来源声明当前关闭,这条规则不会生效。请先在客户端识别设置中开启。": "來源聲明當前關閉,這條規則不會生效。請先在客戶端識別設定中開啟。", "来源声明无效或未登记,本次已忽略。": "來源宣告無效或未登記,本次已忽略。", "来源声明未启用,本次已忽略。": "來源宣告未啟用,本次已忽略。", "来源版本": "來源版本", "来源设备:{device}": "來源裝置:{device}", "来自 {device},生成于 {time}": "來自 {device},生成於 {time}", "架构": "架構", "查看、安装和管理所连接网关的插件": "檢視、安裝和管理所連線閘道器的外掛", "查看内置客户端({n})": "檢視內建客戶端({n})", "查询管理员状态失败:{message}": "查詢管理員狀態失敗:{message}", "校验身份:这三段必须各自成块排在最前(实测:三段并成一段会被回 405 / 3012)。因此这里按段编辑,不能合成一段。改过的段以你的文本为准,没改的段继续用官方原文;清空某一段 = 那一段恢复官方原文。": "校驗身份:這三段必須各自成塊排在最前(實測:三段併成一段會被回 405 / 3012)。因此這裡按段編輯,不能合成一段。改過的段以你的文本為準,沒改的段繼續用官方原文;清空某一段 = 那一段恢復官方原文。", "桌面端": "桌面版", "桌面端登录 / 注册验证": "桌面端登入 / 註冊驗證", "桌面端:登录 / 注册需要 ALTCHA 人机验证": "桌面版:登入 / 註冊需要 ALTCHA 人機驗證", "桌面端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "桌面版:登入 / 註冊需要 ALTCHA 人機驗證(當前正在使用)", "桌面运行时不可用,暂时无法保存": "桌面執行時不可用,暫時無法儲存", "档案": "檔案", "检测中…": "檢測中…", "概览": "概覽", "模型不能直接看图时,按你选择的方式处理。原生支持图片的请求直接转发,不增加识图调用。": "模型不能直接看圖時,按你選擇的方式處理。原生支援圖片的請求直接轉發,不增加識圖呼叫。", "模型单独配置": "模型單獨配置", "模型目录没写明是否支持图片时按这里处理。": "模型目錄沒寫明是否支援圖片時依這裡處理。", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。下面两块分别选好「哪些模型」和「用哪只模型」即可;没配到的模型、以及本来就能看图的模型,一律原样放行。这里的改动立即生效,不需要保存。": "模型看不了圖片時只有兩種辦法:讓別的模型替它讀圖,或者把整次請求直接交給能看圖的模型。下面兩塊分別選好「哪些模型」和「用哪隻模型」即可;沒配到的模型、以及本來就能看圖的模型,一律原樣放行。這裡的改動立即生效,不需要儲存。", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。没配到的模型、以及本来就能看图的模型,一律原样放行;每个请求只用其中一种方式,不会两种串着做,处理失败也不会改走另一种。改动立即生效,不需要保存。": "模型看不了圖片時只有兩種辦法:讓別的模型替它讀圖,或者把整次請求直接交給能看圖的模型。沒配到的模型、以及本來就能看圖的模型,一律原樣放行;每個請求只用其中一種方式,不會兩種串著做,處理失敗也不會改走另一種。改動立即生效,不需要儲存。", "模型自己看不了图片时,按下面选好的方式处理;能直接看图的请求原样放行,不会多一次识图调用。": "模型自己看不了圖片時,按下面選好的方式處理;能直接看圖的請求原樣放行,不會多一次識圖呼叫。", "模型请求是否需要验证码由 ZCode 上游配置决定,领取验证与模型请求免验证分别处理。后台只检查配置和库存,不自动运行验证码或弹出拼图;需要验证时,在账号的「套餐明细」中点击「开始验证」。验证令牌一次性使用,短时间内过期,失败或取消后不会自动重试。": "模型請求是否需要驗證碼由 ZCode 上游設定決定,領取驗證與模型請求免驗證分別處理。背景只檢查設定和庫存,不自動執行驗證碼或彈出拼圖;需要驗證時,在帳號的「套餐明細」中點擊「開始驗證」。驗證權杖僅能使用一次,短時間內失效,失敗或取消後不會自動重試。", "模式": "模式", "模式改为「{mode}」": "模式改為「{mode}」", "次": "次", "次日 00:00": "次日 00:00", "正则表达式": "正規表示式", "正在保存上游原始报文:": "正在儲存上游原始報文:", "正在修改…": "正在修改…", "正在剥离出站请求里的审核指纹:表头键值整段删除,模板句最小改写。": "正在剝離出站請求裡的稽核指紋:表頭鍵值整段刪除,模板句最小改寫。", "正在安装…": "正在安裝…", "正在应答跨源请求:浏览器跨域请求可直连 /v1/*。": "正在應答跨源請求:瀏覽器跨域請求可直連 /v1/*。", "正在归一角色:developer 角色消息转发前改写为 system。": "正在歸一角色:developer 角色訊息轉發前改寫為 system。", "正在恢复…": "正在恢復…", "正在恢复整库": "正在恢復整庫", "正在注册…": "正在註冊…", "正在联网更新": "正在聯網更新", "正在读取提供商设置…": "正在讀取供應商設定…", "正式版": "正式版", "每个请求只会用到其中一种方式,不会两种串着做;处理失败也不会改走另一种。配了哪只视觉模型,那次请求的图片就会交给它。": "每個請求只會用到其中一種方式,不會兩種串著做;處理失敗也不會改走另一種。配了哪隻視覺模型,那次請求的圖片就會交給它。", "每条请求轮换到下一个可用账号;新会话交给当前最闲的那位。适合想把手里的号摊开用、不让某一个一直扛。": "每條請求輪換到下一個可用帳號;新會話交給當前最閒的那位。適合想把手裡的號攤開用、不讓某一個一直扛。", "每条请求都重新按策略选路 —— 行为与「关闭」一致,仅保留会话识别的记录。": "每條請求都重新按策略選路 —— 行為與「關閉」一致,僅保留會話識別的記錄。", "每次等待的时长,默认 0 = 跟随上游建议(实测 9~30 秒,上游没给建议时用 15 秒)。可填 0–120 秒强制一个固定时长。": "每次等待的時長,預設 0 = 跟隨上游建議(實測 9~30 秒,上游沒給建議時用 15 秒)。可填 0–120 秒強制一個固定時長。", "每行一个域名,不填协议、端口或路径;与 Cloudflare 中的配置一致,服务端按完整域名匹配。手机 App 使用所连接网关的域名。": "每行一個網域,不填通訊協定、連接埠或路徑;與 Cloudflare 中的設定一致,伺服器按完整網域比對。手機 App 使用所連線閘道的網域。", "毫秒": "毫秒", "沟通方式 / 上下文管理 + Environment 段。": "溝通方式 / 上下文管理 + Environment 段。", "没有可导出的账号": "沒有可匯出的帳號", "没有可用视觉模型时": "沒有可用視覺模型時", "没有已确认支持图片的模型,请先在模型管理中确认。": "沒有已確認支援圖片的模型,請先在模型管理中確認。", "没能读到「{label}」的当前值,改为 {count} 条可能会删除超出的历史数据。": "未能讀取「{label}」的目前值,改為 {count} 筆可能會刪除超出的歷史資料。", "没能读到「{label}」的当前值,改为 {days} 天可能会删除超出的历史数据。": "沒能讀到「{label}」的當前值,改為 {days} 天可能會刪除超出的歷史資料。", "沿用对应方式的视觉模型配置,不额外维护一份模型列表。": "沿用對應方式的視覺模型配置,不額外維護一份模型列表。", "沿用工具服务的视觉分析模型": "沿用工具服務的視覺分析模型", "沿用工具服务的视觉分析模型(未配置)": "沿用工具服務的視覺分析模型(未設定)", "注册并开启": "註冊並開啟", "注册管理员账号": "註冊管理員帳號", "注意:这一家的「网关自带」开关现在是关的,改过的正文要等开关打开才生效。": "注意:這一家的「閘道器自帶」開關現在是關的,改過的正文要等開關開啟才生效。", "流式响应相邻数据之间允许的最大空闲时间(秒),收到新数据后重新计时,默认 300 秒,范围 1~3600。": "流式響應相鄰資料之間允許的最大空閒時間(秒),收到新資料後重新計時,預設 300 秒,範圍 1~3600。", "流式响应空闲超时": "流式響應空閒超時", "测试连接": "測試連線", "浏览器 / PWA": "瀏覽器 / PWA", "浏览器只在 https 或 localhost 下提供离线缓存;局域网 http 访问不影响正常使用": "瀏覽器只在 https 或 localhost 下提供離線快取;區域網路 http 存取不影響正常使用", "浏览器在本地完成计算,不需要第三方密钥,也不依赖外部验证服务。": "瀏覽器在本機完成計算,不需要第三方金鑰,也不依賴外部驗證服務。", "浏览器标签页": "瀏覽器標籤頁", "浏览器面板": "瀏覽器面板", "消息角色": "訊息角色", "添加备选模型": "新增備選模型", "添加提供商": "新增提供商", "添加提供商…": "新增提供商…", "添加模型单独配置": "新增模型單獨配置", "添加自定义头": "新增自定義頭", "添加要单独配置的提供商": "新增要單獨配置的提供商", "添加配置": "新增配置", "清空(用内置默认值)": "清空(用內建預設值)", "清除本机凭证": "清除本機憑證", "清除这里的正文": "清除這裡的正文", "源代码": "原始碼", "点下面的入口会用系统默认浏览器打开 GitHub 的对应表单(需要 GitHub 账号,模板已预设好,填完直接提交即可)。": "點下面的入口會用系統預設瀏覽器開啟 GitHub 的對應表單(需要 GitHub 帳號,模板已預設好,填完直接提交即可)。", "点击重命名": "點擊重新命名", "点此添加或切换服务器": "點此新增或切換伺服器", "点此添加服务器": "點此新增伺服器", "版本": "版本", "版本信息": "版本資訊", "版本信息 · 所连网关环境": "版本資訊 · 所連閘道器環境", "版权声明": "版權聲明", "状态码 {code} 已在名单里": "狀態碼 {code} 已在名單裡", "状态码必须是 {min}–{max} 的整数(收到: {text})": "狀態碼必須是 {min}–{max} 的整數(收到: {text})", "环境": "環境", "环境变量 ZCODE_APP_VERSION={value} 正在生效,上面填的值暂不生效": "環境變數 ZCODE_APP_VERSION={value} 正在生效,上面填的值暫不生效", "现在会这样处理:": "現在會這樣處理:", "生成时间:{time}": "生成時間:{time}", "生效顺序:有效的来源声明优先,然后按顺序匹配自定义规则,最后使用内置规则。中转丢失原始标识时,无法自动推断背后的软件。": "生效順序:有效的來源宣告優先,然後按順序匹配自定義規則,最後使用內建規則。中轉丟失原始標識時,無法自動推斷背後的軟體。", "用 models.dev 补齐上游没声明的模型能力与思考档位(联网刷新,内嵌快照始终生效)": "用 models.dev 補齊上游沒宣告的模型能力與思考檔位(聯網重新整理,內嵌快照始終生效)", "用于加密上云的账号密钥。请自己记牢 —— 它不保存到云端,换机下载时必须输入同一个密码,否则账号数据无法解密。": "用於加密上雲的帳號金鑰。請自己記牢 —— 它不儲存到雲端,換機下載時必須輸入同一個密碼,否則帳號資料無法解密。", "用哪只模型识图": "用哪隻模型識圖", "用浏览器菜单里的「添加到主屏幕」把这一页装成 App:全屏打开、没有地址栏,和原生应用一样。": "用瀏覽器選單裡的「新增到主螢幕」把這一頁裝成 App:全屏開啟、沒有位址列,和原生應用一樣。", "由 Cloudflare 提供验证,需要浏览器与网关均能连接 Cloudflare。验证失败或服务不可用时不会自动放行。": "由 Cloudflare 提供驗證,需要瀏覽器與閘道均能連線至 Cloudflare。驗證失敗或服務無法使用時不會自動放行。", "由 {source} 覆盖,手动设置暂不生效": "由 {source} 覆寫,手動設定暫不生效", "界面缩放": "介面縮放", "界面缩放比例": "介面縮放比例", "界面语言": "介面語言", "界面语言。可选简体中文、繁體中文、English、日本語、한국어、Português (Brasil),或「跟随系统」(按浏览器 / 系统的语言列表自动选)。切换后整页立即刷新;该偏好只存在本机(localStorage),不影响账号、密钥与转发。": "介面語言。可選簡體中文、繁體中文、English、日本語、한국어、Português (Brasil),或「跟隨系統」(按瀏覽器 / 系統的語言列表自動選)。切換後整頁立即重新整理;該偏好只存在本機(localStorage),不影響帳號、金鑰與轉發。", "界面语言只保存在本机(localStorage)。切换后整页立即刷新,不影响账号、密钥与转发。": "介面語言只儲存在本機(localStorage)。切換後整頁立即重新整理,不影響帳號、金鑰與轉發。", "界面里编辑的正文": "介面裡編輯的正文", "留空 = 用内置默认提示词": "留空 = 用內建預設提示詞", "留空 = 用插件内置的默认版本号(每期活动由插件跟随官方更新)。只有遇到「官方客户端里能看到活动、这里探测为空」时才需要填:那种情况几乎都是上游抬高了版本门槛,而版本落后的表现是一份空列表而不是报错。按官方客户端当前版本填(形如 3.16.2),保存后回到套餐明细刷新一次即刻生效。环境变量 ZCODE_APP_VERSION 若已设置,优先级高于这里。": "留空 = 用外掛內建的預設版本號(每期活動由外掛跟隨官方更新)。只有遇到「官方客戶端裡能看到活動、這裡探測為空」時才需要填:那種情況幾乎都是上游抬高了版本門檻,而版本落後的表現是一份空列表而不是報錯。按官方客戶端當前版本填(形如 3.16.2),儲存後回到套餐明細重新整理一次即刻生效。環境變數 ZCODE_APP_VERSION 若已設定,優先順序高於這裡。", "留空使用 AWS 官方地址": "留空使用 AWS 官方地址", "留空使用默认": "留空使用預設", "留空表示删除匹配内容;替换内容按原文写入,$ 不作为捕获组引用。": "留空表示刪除匹配內容;替換內容按原文寫入,$ 不作為捕獲組引用。", "登录 / 注册需要通过 ALTCHA 人机验证(工作量证明)": "登入 / 註冊需要通過 ALTCHA 人機驗證(工作量證明)", "登录 / 账号切换 / 429 切换等系统事件,可填 1–3650 天。": "登入 / 帳號切換 / 429 切換等系統事件,可填 1–3650 天。", "登录 / 账号切换 / 429 切换等系统事件,可填 1–99999 天。": "登入 / 帳號切換 / 429 切換等系統事件,可填 1–99999 天。", "登录 Agent2API": "登入 Agent2API", "登录 {name}": "登入 {name}", "登录人机验证": "登入人機驗證", "百分比类读数(如 OpenCode Go、Antigravity)不能相加,组头显示的是组内最低剩余比例。": "百分比類讀數(如 OpenCode Go、Antigravity)不能相加,組頭顯示的是組內最低剩餘比例。", "监听地址": "監聽地址", "目前展示仓库已登记的图标来源许可,不代表完整的第三方依赖清单。": "目前顯示儲存庫已登記的圖示來源授權,不代表完整的第三方相依套件清單。", "目标路径:{path}": "目標路徑:{path}", "直接按上面的设置兼容": "直接按上面的設定相容", "直接按当前方式兼容": "直接按當前方式相容", "知道了": "知道了", "确定": "確定", "确定后加入当前草稿,点击「保存设置」才会生效。": "確定後加入當前草稿,點擊「儲存設定」才會生效。", "确定继续?": "確定繼續?", "确认上传": "確認上傳", "确认图片处理授权": "確認圖片處理授權", "确认备份密码": "確認備份密碼", "确认并保存": "確認並儲存", "确认新密码": "確認新密碼", "确认缩减数据保留": "確認縮減資料保留", "确认缩短保留天数": "確認縮短保留天數", "示例请求头": "示例請求頭", "社区与支持": "社群與支援", "离线缓存未启用": "離線快取未啟用", "积分合计只统计当前筛选出来的账号": "積分合計只統計目前篩選出來的帳號", "移入「{name}」": "移入「{name}」", "程序路径": "程式路徑", "空 = 不要这一份,回落提示词文件 / 内置默认提示词。": "空 = 不要這一份,回落提示詞檔案 / 內建預設提示詞。", "空分组 · 点组头的 + 把菜单移进来": "空分組 · 點組頭的 + 把選單移進來", "立即解除": "立即解除", "站点密钥(Site Key)": "網站金鑰(Site Key)", "第一段": "第一段", "第一段(身份句)": "第一段(身份句)", "第三方应用密码": "第三方應用密碼", "第三方开源许可": "第三方開源授權", "第三方模型回答完自动折叠过程": "第三方模型回答完自動摺疊過程", "第三方模型回答完自动折叠过程设置已刷新": "第三方模型回答完自動摺疊過程設定已重新整理", "第三段": "第三段", "第三段(动态段)": "第三段(動態段)", "第二段": "第二段", "第二段(稳定段)": "第二段(穩定段)", "等待上限需在 5–120 秒之间": "等待上限需在 5–120 秒之間", "等待响应超时": "等待響應超時", "等待期间请求日志的状态列会显示「排队中」阶段,详情弹窗的「内部重试」里能逐次看到等待时长;等待用尽后返回 HTTP 503(不是 401/429:既不会刷新凭证,也不会把账号标成限额)。": "等待期間請求日誌的狀態列會顯示「排隊中」階段,詳情彈窗的「內部重試」裡能逐次看到等待時長;等待用盡後返回 HTTP 503(不是 401/429:既不會重新整理憑證,也不會把帳號標成限額)。", "等比放大或缩小整个界面(文字、控件、间距一起变),效果与浏览器按 Ctrl +/- 相同:80%–130%、5% 一档。窗口本身不缩放,变的是页面内容的显示比例,设置立即生效并记住,下次启动直接按这个比例打开。放得越大可视范围越小,窗口较窄或表格较宽时不建议调得太大。": "等比放大或縮小整個介面(文字、控制元件、間距一起變),效果與瀏覽器按 Ctrl +/- 相同:80%–130%、5% 一檔。視窗本身不縮放,變的是頁面內容的顯示比例,設定立即生效並記住,下次啟動直接按這個比例開啟。放得越大可視範圍越小,視窗較窄或表格較寬時不建議調得太大。", "简体中文": "簡體中文", "管理员已注册": "管理員已註冊", "管理员账号": "管理員帳號", "管理插件": "管理外掛", "精确文本": "精確文本", "系统": "系統", "系统提示词模式": "系統提示詞模式", "系统提示词设置已刷新": "系統提示詞設定已重新整理", "累计请求": "累計請求", "繁体中文": "繁體中文", "约 {n} 字符": "約 {n} 字元", "结构": "結構", "给 Codex 的响应补阶段标记,回答完后像官方模型一样把推理与命令过程折叠起来": "給 Codex 的響應補階段標記,回答完後像官方模型一樣把推理與命令過程摺疊起來", "继续并清理": "繼續並清理", "编辑提示词正文 · {label}": "編輯提示詞正文 · {label}", "编辑提示词正文 · 全局": "編輯提示詞正文 · 全域", "编辑正文": "編輯正文", "编辑网关自带提示词 · {label}": "編輯閘道器自帶提示詞 · {label}", "编辑脱敏规则": "編輯脫敏規則", "编辑识别规则": "編輯識別規則", "缩放后重新存成 JPEG 时用的质量。默认 80,可填 40–95;数值越小体积越小、画质越差。": "縮放後重新存成 JPEG 時用的質量。預設 80,可填 40–95;數值越小體積越小、畫質越差。", "缩放比例": "縮放比例", "网关": "閘道器", "网关 Key 数量": "閘道器 Key 數量", "网关尚未就绪": "閘道尚未就緒", "网关状态": "閘道器狀態", "网关自带": "閘道器自帶", "网关跨域访问已开启": "閘道器跨域存取已開啟", "网关跨域访问设置已刷新": "閘道器跨域存取設定已重新整理", "网关跨域访问(CORS)": "閘道器跨域存取(CORS)", "网关面(/v1/*)默认不应答浏览器跨源请求:页面直连会被预检拦下,只报「无法连接 API」。注意来源是 * —— 未配「网关 Key」时任何网页都能借本机网关打上游,故默认关闭;只给自己用的话,让页面与网关同源(本地反代 /v1)更稳妥。面板接口(/api/*)不受影响。": "閘道器面(/v1/*)預設不應答瀏覽器跨源請求:頁面直連會被預檢攔下,只報「無法連線 API」。注意來源是 * —— 未配「閘道器 Key」時任何網頁都能借本機閘道器打上游,故預設關閉;只給自己用的話,讓頁面與網關同源(本地反代 /v1)更穩妥。面板介面(/api/*)不受影響。", "网络访问": "網路存取", "网页端": "網頁端", "网页端登录 / 注册验证": "網頁端登入 / 註冊驗證", "网页端的界面缩放由浏览器自己控制(Ctrl + / Ctrl -,或浏览器菜单里的缩放),此项不可调。": "網頁端的介面縮放由瀏覽器自己控制(Ctrl + / Ctrl -,或瀏覽器選單裡的縮放),此項不可調。", "网页端:登录 / 注册需要 ALTCHA 人机验证": "網頁端:登入 / 註冊需要 ALTCHA 人機驗證", "网页端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "網頁端:登入 / 註冊需要 ALTCHA 人機驗證(當前正在使用)", "网页管理地址": "網頁管理位址", "群晖 NAS": "群暉 NAS", "群晖需在「控制面板 → 应用程序门户 → WebDAV」里启用服务,端口默认 5005(HTTP)/ 5006(HTTPS)。": "群暉需在「控制面板 → 應用程式門戶 → WebDAV」裡啟用服務,連接埠預設 5005(HTTP)/ 5006(HTTPS)。", "脱敏词表": "脫敏詞表", "腾讯云 COS": "騰訊雲 COS", "自动同步": "自動同步", "自动同步上次失败": "自動同步上次失敗", "自动续写": "自動續寫", "自定义 User-Agent": "自定義 User-Agent", "自定义客户端分类": "自定義客戶端分類", "自定义客户端数量已达上限": "自定義客戶端數量已達上限", "自定义提供商 {id}": "自定義提供商 {id}", "自定义网站和应用界面中显示的名称与 Logo。": "自訂網站和應用程式介面中顯示的名稱與 Logo。", "自定义识别规则": "自定義識別規則", "自愈保护": "自愈保護", "至少 12 位": "至少 12 位", "至少 8 位,换机下载时需要": "至少 8 位,換機下載時需要", "至少要保留一个分组": "至少要保留一個分組", "英语": "英語", "范围 5–120 秒,并受原请求时限约束。": "範圍 5–120 秒,並受原請求時限約束。", "范围为 5–120 秒,并受原请求时限约束。图片过大、格式错误或下载失败不会被当作模型不支持图片。": "範圍為 5–120 秒,並受原請求時限約束。圖片過大、格式錯誤或下載失敗不會被當作模型不支援圖片。", "被更高优先级覆盖": "被更高優先順序覆蓋", "被环境变量覆盖": "被環境變數覆蓋", "装上{size}的官方身份提示词": "裝上{size}的官方身份提示詞", "装成 App 后从桌面图标直接进入:全屏打开、没有地址栏。": "裝成 App 後從桌面圖示直接進入:全屏開啟、沒有位址列。", "覆盖": "覆蓋", "规则 / 匹配方式": "規則 / 匹配方式", "规则可以增删改、启停和调整顺序;替换内容留空表示删除匹配内容。恢复默认只重置词表,不改开关和提供商范围。": "規則可以增刪改、啟停和調整順序;替換內容留空表示刪除匹配內容。恢復預設只重置詞表,不改開關和提供商範圍。", "规则名称": "規則名稱", "规则名称不能为空,且最多 {max} 个字符": "規則名稱不能為空,且最多 {max} 個字元", "规则已保存,对后续请求生效;当前历史记录未修改。": "規則已儲存,對後續請求生效;當前歷史記錄未修改。", "规则忽略大小写,只影响新请求的日志与统计,不改变模型选择或权限。": "規則忽略大小寫,隻影響新請求的日誌與統計,不改變模型選擇或許可權。", "规则编号:{id}": "規則編號:{id}", "视觉模型": "視覺模型", "视觉模型先识读图片,再由原模型分析和回答。": "視覺模型先識讀圖片,再由原模型分析和回答。", "视觉模型来源": "視覺模型來源", "视觉模型的思考等级": "視覺模型的思考等級", "视觉模型直接回答": "視覺模型直接回答", "视觉模型识读图片": "視覺模型識讀圖片", "解码后小于这个体积的图片保持原样。默认 512KB,可填 0–10240;填 0 表示所有内嵌图片都过一遍。": "解碼後小於這個體積的圖片保持原樣。預設 512KB,可填 0–10240;填 0 表示所有內嵌圖片都過一遍。", "解除失败:{message}": "解除失敗:{message}", "触发阈值": "觸發閾值", "计数": "計數", "计量单位": "計量單位", "让 Codex 在收到最终答案后收起中间过程。仅为严格识别的 Codex Responses 请求补阶段标记,报表归类和来源声明不影响此判断。正常结束且没有工具调用的非空回答才补 final_answer,工具调用前的说明补 commentary;错误、截断、缺少结束信号或未知结束原因不补最终答案标记。默认关闭,不改变回答文字,也不减少模型思考或用量。": "讓 Codex 在收到最終答案後收起中間過程。僅為嚴格識別的 Codex Responses 請求補階段標記,報表歸類和來源宣告不影響此判斷。正常結束且沒有工具呼叫的非空回答才補 final_answer,工具呼叫前的說明補 commentary;錯誤、截斷、缺少結束訊號或未知結束原因不補最終答案標記。預設關閉,不改變回答文字,也不減少模型思考或用量。", "许可原文": "授權原文", "许可原文已随软件内置,无需联网即可查看;打开项目来源链接需要联网。": "授權原文已隨軟體內建,無需連網即可檢視;開啟專案來源連結需要連網。", "许可核对版本": "授權核對版本", "设置不可隐藏(隐藏了只能清缓存找回来)": "設定不可隱藏(隱藏了只能清快取找回來)", "设置备份密码": "設定備份密碼", "设置识别规则": "設定識別規則", "访问时请使用目标设备能连接到的地址;这里显示的本机地址不代表公网可达。": "存取時請使用目標裝置能連線到的位址;這裡顯示的本機位址不代表可從公網連線。", "识别依据": "識別依據", "识别规则数量已达上限": "識別規則數量已達上限", "识别顺序": "識別順序", "识读会保留图片里的文字、代码、数字、布局与状态;识读失败就停止,不删图后继续回答。": "識讀會保留圖片裡的文字、程式碼、數字、佈局與狀態;識讀失敗就停止,不刪圖後繼續回答。", "识读这张图用哪只模型,第一项是「MCP & Skills」里配好的那只。": "識讀這張圖用哪隻模型,第一項是「MCP & Skills」裡配好的那隻。", "词表为空,不会改写任何指纹。可以新增规则或恢复默认词表。": "詞表為空,不會改寫任何指紋。可以新增規則或恢復預設詞表。", "该提供商暂无可编辑的专属设置": "此供應商暫無可編輯的專屬設定", "详细日志": "詳細日誌", "语言设置": "語言設定", "请先保存设置再同步": "請先儲存設定再同步", "请先在 Cloudflare 创建 Turnstile 组件,建议选择 Managed 模式,并添加面板实际使用的域名。": "請先在 Cloudflare 建立 Turnstile 元件,建議選擇 Managed 模式,並新增面板實際使用的網域。", "请填一个分组名": "請填一個分組名", "请填写管理员账号(64 字符以内)": "請填寫管理員帳號(64 字元以內)", "请求发出后等待上游响应头的最大时间(秒),默认 300 秒,范围 1~3600。": "請求發出後等待上游響應頭的最大時間(秒),預設 300 秒,範圍 1~3600。", "请求已断开,但恢复仍在后台进行 —— 请等待进度弹窗给出结果": "請求已斷開,但恢復仍在後臺進行 —— 請等待進度彈窗給出結果", "请求带有不同软件的标识,未自动归类;可用自定义规则明确归属。": "請求帶有不同軟體的標識,未自動歸類;可用自定義規則明確歸屬。", "请求提供商 / 模型支持": "請求提供商 / 模型支援", "请求日志保留天数": "請求日誌保留天數", "请求日志保留数量上限": "請求日誌保留數量上限", "请求记录": "請求記錄", "请求超时": "請求超時", "请求转发到上游失败时(服务器瞬时错误、连接失败,以及 WorkBuddy 的 11-128 敏感词拦截),网关会等一段间隔后再发一次。次数分两档,管的是两件事:①「同一账号重试次数」在同一账号上原地重发几次 —— 一般是提示词被上游拦截、或链路瞬时抖动,等一会儿重发往往就好了;②「切换账号重试次数」这份请求最多再换几个账号试 —— 首发的那个账号不算,每换一个扣一次,不分是不是同一家(换到同一家的下一个账号也算一次),换满还失败就把错误返回给客户端。两项都设为 0 表示失败不重试、直接报错。注意账号级限额(429)不占这里的换号次数 —— 那类失败走「冷却该账号并换下一个账号」的降级,与这里的重试是两条路。另有「指定错误码直接换号」名单(默认 402):命中名单的上游状态码不在同一账号重发,直接按队列换下一个账号继续试(换号也占「切换账号重试次数」),换满仍失败才把错误返回给客户端。": "請求轉發到上游失敗時(伺服器瞬時錯誤、連線失敗,以及 WorkBuddy 的 11-128 敏感詞攔截),閘道器會等一段間隔後再發一次。次數分兩檔,管的是兩件事:①「同一帳號重試次數」在同一帳號上原地重發幾次 —— 一般是提示詞被上游攔截、或鏈路瞬時抖動,等一會兒重發往往就好了;②「切換帳號重試次數」這份請求最多再換幾個帳號試 —— 首發的那個帳號不算,每換一個扣一次,不分是不是同一家(換到同一家的下一個帳號也算一次),換滿還失敗就把錯誤返回給客戶端。兩項都設為 0 表示失敗不重試、直接報錯。注意帳號級限額(429)不佔這裡的換號次數 —— 那類失敗走「冷卻該帳號並換下一個帳號」的降級,與這裡的重試是兩條路。另有「指定錯誤碼直接換號」名單(預設 402):命中名單的上游狀態碼不在同一帳號重發,直接按佇列換下一個帳號繼續試(換號也佔「切換帳號重試次數」),換滿仍失敗才把錯誤返回給客戶端。", "请求重试": "請求重試", "请至少选择一个提供商": "請至少選擇一個提供商", "请输入同步密码": "請輸入同步密碼", "请输入当前密码": "請輸入當前密碼", "请输入服务端密钥": "請輸入伺服器金鑰", "请选择可用的标识请求头": "請選擇可用的標識請求頭", "请选择归属客户端": "請選擇歸屬客戶端", "读取云同步设置失败:{message}": "讀取雲同步設定失敗:{message}", "读取失败:{message}": "讀取失敗:{message}", "读取完整非流式响应体允许的最大时间(秒),默认 300 秒,范围 1~3600。": "讀取完整非流式響應體允許的最大時間(秒),預設 300 秒,範圍 1~3600。", "读取网关信息失败:{message}": "讀取閘道器資訊失敗:{message}", "读取远端…": "讀取遠端…", "读取远端信息失败:{message}": "讀取遠端資訊失敗:{message}", "调用方声明": "呼叫方宣告", "调试报文": "除錯報文", "调试模式": "除錯模式", "调试模式设置已刷新": "除錯模式設定已重新整理", "负载均衡": "負載均衡", "账号列表": "帳號列表", "账号导入 / 导出": "帳號匯入 / 匯出", "账号路由": "帳號路由", "账号页表格的两项显示偏好,只存在本机(localStorage),不影响账号数据与转发。「积分合计只统计当前筛选出来的账号」:账号页每一家的分组带右侧有一枚「可用合计」,默认按整组求和 —— 不受筛选、搜索影响,被筛掉的账号也计入(余额是资产,禁用也只表示不参与转发,额度仍在账上)。打开这一项后改为只累加当前可见的行:例如筛出 1 个 100 积分的账号,合计就是 100,而不是同组两个账号之和 1,000。分页不参与这个口径 —— 翻页看的是同一份结果的不同屏,合计不随页码变化。「隐藏账号名」与表头「账号」旁边那颗眼睛是同一个开关:打开后账号列的名字整体显示成星号,适合截图分享时遮挡账号。": "帳號頁表格的兩項顯示偏好,只存在本機(localStorage),不影響帳號資料與轉發。「積分合計只統計目前篩選出來的帳號」:帳號頁每一家的分組帶右側有一枚「可用合計」,預設按整組求和 —— 不受篩選、搜尋影響,被篩掉的帳號也計入(餘額是資產,停用也只表示不參與轉發,額度仍在帳上)。開啟這一項後改為只累加目前可見的列:例如篩出 1 個 100 積分的帳號,合計就是 100,而不是同組兩個帳號之和 1,000。分頁不參與這個口徑 —— 翻頁看的是同一份結果的不同螢幕,合計不隨頁碼變化。「隱藏帳號名」與表頭「帳號」旁邊那顆眼睛是同一個開關:開啟後帳號欄的名字整體顯示成星號,適合截圖分享時遮蔽帳號。", "账户": "帳戶", "超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件。把天数改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。可填范围为 1–3650 天。请求日志 / 按天聚合 / 签到记录已全量保留、不再自动删除,要清历史请到对应页面手动清空。": "超出保留天數的部分會被刪除:事件日誌是登入、帳號切換、429 切換這類系統事件。把天數改小(例如 30 天改成 7 天)儲存後會立即刪除超出的歷史資料,此操作不可恢復;改大或保持不變不會刪除任何資料。可填範圍為 1–3650 天。請求日誌 / 按天聚合 / 簽到記錄已全量保留、不再自動刪除,要清歷史請到對應頁面手動清空。", "超出的历史数据会被立即删除,且不可恢复。": "超出的歷史資料會被立即刪除,且不可恢復。", "超时": "超時", "超时设置已刷新": "超時設定已重新整理", "跟随模型配置": "跟隨模型配置", "跟随系统 · 浅色 · 深色": "跟隨系統 · 淺色 · 深色", "跟随默认": "跟隨預設", "跨域访问": "跨域存取", "路由": "路由", "路由组只使用组内成员;普通路由只使用参与范围内的账号和模型。": "路由組只使用組內成員;普通路由只使用參與範圍內的帳號和模型。", "路由设置已刷新": "路由設定已重新整理", "跳过 {n} 个": "跳過 {n} 個", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;负载均衡是每条请求换下一位,把负载摊到各个账号上。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护默认生效,不需要配置:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时),被 429 的账号垫底排到队尾一圈,余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 恢复后自动回到队列。": "轉發一個請求時按什麼順序挑帳號:①「路由策略」決定排隊規則 —— 順序優先是排第 1 的接走所有請求、直到它不能答(限流 / 故障 / 額度盡)才輪到下一位;負載均衡是每條請求換下一位,把負載攤到各個帳號上。②「會話粘性」讓同一會話(相同的模型 + 相同的開頭訊息)儘量跟住同一個帳號 —— 多輪對話的上下文快取能複用、少換號少浪費;自動檔粘 5 分鐘、會話內檔粘 6 小時、每輪與關閉都不粘。帳號的排隊位次(帳號表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由還有三層自愈保護預設生效,不需要配置:轉發失敗的帳號退避休息一會兒(15 分鐘起步翻倍、封頂 1 小時),被 429 的帳號墊底排到隊尾一圈,餘額不足 / Token 週期用量到頂的帳號由限制器攔下 —— 恢復後自動回到佇列。", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;负载均衡是每条请求换下一位,把负载摊到各个账号上。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时)、被 429 的账号垫底排到队尾 30 分钟、余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 前两层可以在下面按需开关,限制器由账号的「限制器」设置管。": "轉發一個請求時按什麼順序挑帳號:①「路由策略」決定排隊規則 —— 順序優先是排第 1 的接走所有請求、直到它不能答(限流 / 故障 / 額度盡)才輪到下一位;負載均衡是每條請求換下一位,把負載攤到各個帳號上。②「會話粘性」讓同一會話(相同的模型 + 相同的開頭訊息)儘量跟住同一個帳號 —— 多輪對話的上下文快取能複用、少換號少浪費;自動檔粘 5 分鐘、會話內檔粘 6 小時、每輪與關閉都不粘。帳號的排隊位次(帳號表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由還有三層自愈保護:轉發失敗的帳號退避休息一會兒(15 分鐘起步翻倍、封頂 1 小時)、被 429 的帳號墊底排到隊尾 30 分鐘、餘額不足 / Token 週期用量到頂的帳號由限制器攔下 —— 前兩層可以在下面按需開關,限制器由帳號的「限制器」設定管。", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;轮流均摊是每条请求换下一位,雨露均沾;余额优先是用量占比最低的先用,「谁空谁上」。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护默认生效,不需要配置:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时),被 429 的账号垫底排到队尾一圈,余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 恢复后自动回到队列。": "轉發一個請求時按什麼順序挑帳號:①「路由策略」決定排隊規則 —— 順序優先是排第 1 的接走所有請求、直到它不能答(限流 / 故障 / 額度盡)才輪到下一位;輪流均攤是每條請求換下一位,雨露均霑;餘額優先是用量佔比最低的先用,「誰空誰上」。②「會話粘性」讓同一會話(相同的模型 + 相同的開頭訊息)儘量跟住同一個帳號 —— 多輪對話的上下文快取能複用、少換號少浪費;自動檔粘 5 分鐘、會話內檔粘 6 小時、每輪與關閉都不粘。帳號的排隊位次(帳號表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由還有三層自愈保護預設生效,不需要配置:轉發失敗的帳號退避休息一會兒(15 分鐘起步翻倍、封頂 1 小時),被 429 的帳號墊底排到隊尾一圈,餘額不足 / Token 週期用量到頂的帳號由限制器攔下 —— 恢復後自動回到佇列。", "转发前压缩对话里内嵌的大图(只改发给上游的副本,生图与图片编辑不受影响)": "轉發前壓縮對話裡內嵌的大圖(只改發給上游的副本,生圖與圖片編輯不受影響)", "转发前将 developer 角色消息转换为 system,兼容不支持 developer 角色的 OpenAI 兼容上游": "轉發前將 developer 角色訊息轉換為 system,相容不支援 developer 角色的 OpenAI 相容上游", "转发失败的账号休息一会儿再回来:15 分钟起步,连续失败翻倍,封顶 1 小时;成功一次立即恢复。目的是「让这次失败先凉一会儿」,免得一条条地反复撞同一个坏账号。": "轉發失敗的帳號休息一會兒再回來:15 分鐘起步,連續失敗翻倍,封頂 1 小時;成功一次立即恢復。目的是「讓這次失敗先涼一會兒」,免得一條條地反覆撞同一個壞帳號。", "转发链路": "轉發鏈路", "转发链路 · 诊断 · 系统": "轉發鏈路 · 診斷 · 系統", "轮询间隔": "輪詢間隔", "软件标识超过 1 KB,已截断保存;匹配仅使用保留部分。": "軟體標識超過 1 KB,已截斷儲存;匹配僅使用保留部分。", "软件版本": "軟體版本", "轻量模式": "輕量模式", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 套餐池(Start Plan)通道不可用,相关请求会在请求日志里注明原因": "輕量模式已開啟:關窗即銷燬介面程序(釋放約 200MB 記憶體),閘道器在後臺繼續;介面銷燬期間 ZCode 套餐池(Start Plan)通道不可用,相關請求會在請求日誌裡註明原因", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 活动套餐通道不可用,相关请求会在请求日志里注明原因": "輕量模式已開啟:關窗即銷燬介面程序(釋放約 200MB 記憶體),閘道器在後臺繼續;介面銷燬期間 ZCode 活動套餐通道不可用,相關請求會在請求日誌裡註明原因", "轻量模式(关窗释放界面内存)": "輕量模式(關窗釋放介面記憶體)", "辅助识图": "輔助識圖", "辅助识图 · 原模型回答": "輔助識圖 · 原模型回答", "辅助识图保留原模型回答;切换视觉模型会让视觉模型直接回答。本次授权也包含已设置的模型单独配置。": "輔助識圖保留原模型回答;切換視覺模型會讓視覺模型直接回答。本次授權也包含已設定的模型單獨配置。", "辅助识图或切换视觉模型,默认关闭": "輔助識圖或切換視覺模型,預設關閉", "辅助识图配置": "輔助識圖配置", "输入同步密码": "輸入同步密碼", "输入当前登录用的密码": "輸入目前登入用的密碼", "输入状态码,回车添加": "輸入狀態碼,回車新增", "运行形态": "執行形態", "近期没有命中样本,不代表未来请求不会命中。": "近期沒有命中樣本,不代表未來請求不會命中。", "还原": "還原", "还有额度时被 429 的账号排到队尾,30 分钟后自动回到队列(成功转发一次也会立即回来)。它标记的是「疑似共享池被别人抢」,不是「这个账号本身有问题」。⚠️ 注意它与路由策略的配合:在「家内轮询」下,队尾意味着这一家整体被往后排 —— 如果某个提供商的账号被批量限流,它们会集体沉到队尾,那个家可能长时间轮不到。这时可以关掉本项,让 429 过的账号只受冷却约束(冷却到点自动回来)。": "還有額度時被 429 的帳號排到隊尾,30 分鐘後自動回到佇列(成功轉發一次也會立即回來)。它標記的是「疑似共享池被別人搶」,不是「這個帳號本身有問題」。⚠️ 注意它與路由策略的配合:在「家內輪詢」下,隊尾意味著這一家整體被往後排 —— 如果某個提供商的帳號被批次限流,它們會集體沉到隊尾,那個家可能長時間輪不到。這時可以關掉本項,讓 429 過的帳號只受冷卻約束(冷卻到點自動回來)。", "还没有可用的视觉模型。": "還沒有可用的視覺模型。", "还没有可用的视觉模型。可以在「MCP & Skills」里配好那只视觉分析模型,或把上面的「视觉模型」换成某一只具体模型。": "還沒有可用的視覺模型。可以在「MCP & Skills」裡配好那隻視覺分析模型,或把上面的「視覺模型」換成某一隻具體模型。", "还没有同步过。": "還沒有同步過。", "还没有备选模型": "還沒有備選模型", "还没有添加服务器。点右上角「添加」,填入网关所在机器的 IP 或域名与端口。": "還沒有新增伺服器。點右上角「新增」,填入閘道器所在機器的 IP 或域名與連接埠。", "还没有装载任何数据。": "還沒有裝載任何資料。", "还没有读到版本信息": "還沒有讀到版本資訊", "还没有选择模型,这块设置暂时不起作用。": "還沒有選擇模型,這塊設定暫時不起作用。", "这一份就是「替换 / 追加」模式下网关要发的 system 正文。": "這一份就是「替換 / 追加」模式下閘道器要發的 system 正文。", "这一项已隐藏": "這一項已隱藏", "这一项正在显示": "這一項正在顯示", "这些名称可以直接写进来源声明,不能编辑。": "這些名稱可以直接寫進來源宣告,不能編輯。", "这些模型的请求交给当前路由内可用的视觉模型回答,不再回到原模型。": "這些模型的請求交給目前路由內可用的視覺模型回答,不再回到原模型。", "这些模型看到图片时,先把图片交给 {model} 读一遍,再由它们自己结合读到的内容回答。": "這些模型看到圖片時,先把圖片交給 {model} 讀一遍,再由它們自己結合讀到的內容回答。", "这些模型看到图片时,先把图片交给「沿用工具服务的视觉分析模型」读一遍,再由它们自己结合读到的内容回答。": "這些模型看到圖片時,先把圖片交給「沿用工具服務的視覺分析模型」讀一遍,再由它們自己結合讀到的內容回答。", "这只模型只负责看图,最终仍由原模型回答。": "這隻模型只負責看圖,最終仍由原模型回答。", "这只模型已经在备选里了。": "這隻模型已經在備選裡了。", "这只模型直接接收图片与对话,完成本次回答。": "這隻模型直接接收圖片與對話,完成本次回答。", "这台网关未启用机器人校验": "這臺網關未啟用機器人校驗", "这台网关没有管理员,用一把已启用的 API Key 访问。": "這臺網關沒有管理員,用一把已啟用的 API Key 存取。", "这条历史请求没有保存识别依据,不能据此自动创建规则。": "這條歷史請求沒有儲存識別依據,不能據此自動建立規則。", "这条规则已被删除,请关闭编辑后重新添加。": "這條規則已被刪除,請關閉編輯後重新新增。", "这条配置将对 {model} 生效。": "這條配置將對 {model} 生效。", "这次请求由视觉模型直接回答,不回原模型;{fallback}": "這次請求由視覺模型直接回答,不回原模型;{fallback}", "这里只列出已保存的提供商配置;未配置的提供商沿用全局设置,可从下拉框手动添加。用户保存的模式、文件和正文优先于全局设置,「跟随默认」只取消该提供商的模式、文件和正文覆盖。ZCode 套餐池默认由插件按三块装配,客户端系统正文合入第三块,不会自动创建替换规则;手动修改的网关提示词段或关闭开关仍以用户配置为准,能否被接受取决于上游规则。": "這裡只列出已儲存的提供者設定;未設定的提供者沿用全域設定,可從下拉選單手動新增。使用者儲存的模式、檔案與本文優先於全域設定,「跟隨預設」只取消該提供者的模式、檔案與本文覆寫。ZCode 套餐池預設由外掛按三塊組裝,客戶端系統本文合入第三塊,不會自動建立替換規則;手動修改的閘道提示詞段或關閉開關仍以使用者設定為準,能否被接受取決於上游規則。", "进程 PID": "程序 PID", "远程根目录": "遠端根目錄", "远端同一路径下的旧快照。事件日志、请求明细与调试报文不会上传。": "遠端同一路徑下的舊快照。事件日誌、請求明細與除錯報文不會上傳。", "远端已有一份快照,将被覆盖": "遠端已有一份快照,將被覆蓋", "远端快照使用了另一把账号密钥,但没有携带密钥文件,无法在本机解密。请在原来那台机器上重新上传一次。": "遠端快照使用了另一把帳號金鑰,但沒有攜帶金鑰檔案,無法在本機解密。請在原來那臺機器上重新上傳一次。", "远端快照使用的账号密钥与本机不同。请输入上传那台机器设置的同步密码,用它解出密钥装到本机后再继续下载。": "遠端快照使用的帳號金鑰與本機不同。請輸入上傳那臺機器設定的同步密碼,用它解出金鑰裝到本機後再繼續下載。", "远端数据与当前版本不兼容": "遠端資料與當前版本不相容", "远端该路径下还没有快照,本次是首次上传。": "遠端該路徑下還沒有快照,本次是首次上傳。", "远端路径:{path}": "遠端路徑:{path}", "远端还没有可下载的同步数据": "遠端還沒有可下載的同步資料", "连不上这台网关。确认地址与端口正确、网关已启动,且已开启「局域网访问」;用 https 时还要确认证书有效": "連不上這臺網關。確認地址與連接埠正確、閘道器已啟動,且已開啟「區域網路存取」;用 https 時還要確認證書有效", "连不上这台网关。请确认地址、端口与防火墙设置,网关需已启动;桌面端请在「设置 → 网关 → 网络访问」开启「允许其他设备访问网关」。使用 HTTPS 时还需确认证书有效。": "無法連線到這台閘道。請確認位址、連接埠與防火牆設定,閘道需已啟動;桌面端請在「設定 → 閘道 → 網路存取」開啟「允許其他裝置存取閘道」。使用 HTTPS 時還需確認憑證有效。", "连接中超时": "連線中超時", "连接失败:{message}": "連線失敗:{message}", "连续失败到阈值后把这个账号整个打开(默认关)。与失败退避的分工:退避管「单次失败先凉一会儿」,惩罚轻、自动恢复;熔断管「这个账号现在整体不对劲,别再一条条地试」,要连续成功若干次才关。打开期间该账号被跳过,除非全场只剩它 —— 那时仍放行试一次。": "連續失敗到閾值後把這個帳號整個開啟(預設關)。與失敗退避的分工:退避管「單次失敗先涼一會兒」,懲罰輕、自動恢復;熔斷管「這個帳號現在整體不對勁,別再一條條地試」,要連續成功若干次才關。開啟期間該帳號被跳過,除非全場只剩它 —— 那時仍放行試一次。", "追加": "追加", "追加网关提示词": "追加閘道器提示詞", "退出失败:{message}": "退出失敗:{message}", "退出登录": "退出登入", "退出这台服务器的登录,不影响其他服务器": "退出這臺伺服器的登入,不影響其他伺服器", "选好接管回答的视觉模型后这块设置才会生效。": "選好接管回答的視覺模型後這塊設定才會生效。", "选好模型后这条配置才会生效。": "選好模型後這條配置才會生效。", "选好视觉模型后这块设置才会生效。": "選好視覺模型後這塊設定才會生效。", "选定提供商": "選定供應商", "选择一个或多个模型": "選擇一個或多個模型", "选择位置并加密备份": "選擇位置並加密備份", "选择备份文件并恢复": "選擇備份檔案並恢復", "选择提供商(可多选)": "選擇提供商(可多選)", "选路规则": "選路規則", "选项与默认值由已启用插件提供;你保存的覆盖值不会被插件更新替换。": "選項與預設值由已啟用外掛提供;你儲存的覆寫值不會被外掛更新取代。", "选项与默认值由插件提供,你保存的修改不会被插件更新覆盖。切换提供商不会丢失未保存的修改。": "選項與預設值由外掛提供,你儲存的修改不會被外掛更新覆寫。切換供應商不會遺失尚未儲存的修改。", "透传": "透傳", "透传 = 不动客户端 system;替换 = 删掉客户端的 system / developer,换成网关提示词;追加 = 保留客户端内容,在最前面多插一条。": "透傳 = 不動客戶端 system;替換 = 刪掉客戶端的 system / developer,換成閘道器提示詞;追加 = 保留客戶端內容,在最前面多插一條。", "透传客户端 system": "透傳客戶端 system", "透传客户端 system(默认)": "透傳客戶端 system(預設)", "通常是网络问题,点右侧重试": "通常是網路問題,點右側重試", "通用": "通用", "遇到 Bug、报错或异常行为": "遇到 Bug、報錯或異常行為", "配置目录下的 agent2api.db(账号、日志、请求记录、调试报文与设置都在里面)。": "配置目錄下的 agent2api.db(帳號、日誌、請求記錄、除錯報文與設定都在裡面)。", "采用本规则": "採用本規則", "重启后生效,不影响当前操作": "重啟後生效,不影響當前操作", "重命名": "重新命名", "重命名只更新分类显示名,不拆分历史用量,也不重新归类历史请求。": "重新命名只更新分類顯示名,不拆分歷史用量,也不重新歸類歷史請求。", "重命名客户端分类": "重新命名客戶端分類", "重复清理": "重複清理", "重复清理直到不再变化(仅正则删除)": "重複清理直到不再變化(僅正則刪除)", "重新读取会替换当前未保存的草稿。": "重新讀取會替換當前未儲存的草稿。", "重新读取设置": "重新讀取設定", "重编码质量": "重編碼質量", "重置会清空管理员账号与密码,面板将回到「未注册」状态。": "重置會清空管理員帳號與密碼,面板將回到「未註冊」狀態。", "重置管理员": "重置管理員", "重试设置已刷新": "重試設定已重新整理", "重试间隔": "重試間隔", "铸造守卫每隔多久看一次库存(毫秒)。只影响发现缺货的反应速度 —— 库存够用时轮询不会铸造任何令牌。默认 2500 毫秒,可填 1000–30000。": "鑄造守衛每隔多久看一次庫存(毫秒)。隻影響發現缺貨的反應速度 —— 庫存夠用時輪詢不會鑄造任何權杖。預設 2500 毫秒,可填 1000–30000。", "长边像素上限": "長邊畫素上限", "问题反馈": "問題反饋", "阿里云 OSS": "阿里雲 OSS", "限流中账号": "限流中帳號", "随包内嵌的快照(发版时的那份)": "隨包內嵌的快照(發版時的那份)", "随软件更新": "隨軟體更新", "隐藏 {name}": "隱藏 {name}", "隐藏分组 {name}": "隱藏分組 {name}", "隐藏用户名": "隱藏使用者名稱", "隐藏账号名(显示成星号)": "隱藏帳號名(顯示成星號)", "隐藏这一组": "隱藏這一組", "非流式响应超时": "非流式響應超時", "面板登录": "面板登入", "面板端口": "面板連接埠", "面板管理员账号": "面板管理員帳號", "韩语": "韓語", "项目来源": "專案來源", "预览不发送模型请求,也不修改历史记录。": "預覽不傳送模型請求,也不修改歷史記錄。", "预览中…": "預覽中…", "预览匹配": "預覽匹配", "预设": "預設", "首选不可用时再依次尝试备选。": "首選不可用時再依次嘗試備選。", "首选不可用时再依次尝试;留空则停止并说明原因。": "首選不可用時再依次嘗試;留空則停止並說明原因。", "验证方式": "驗證方式", "验证码令牌池": "驗證碼權杖池", "验证码令牌池设置已刷新": "驗證碼權杖池設定已重新整理", "验证码库存的参考目标,默认 3 个,可填 1–10。只影响库存状态展示,不会因为低于目标自动生成令牌或弹出验证码。": "驗證碼庫存的參考目標,預設 3 個,可填 1–10。只影響庫存狀態顯示,不會因為低於目標自動產生權杖或彈出驗證碼。", "高级设置": "進階設定", "默认 10000 条,按日志级别分配保留容量,超出后清理最旧的记录;同时受保留天数限制。": "預設 10000 筆,按日誌層級分配保留容量,超出後清理最舊的記錄;同時受保留天數限制。", "默认 1000000 条(100 万),超出后清理最旧的请求记录及其原始正文,不影响按天聚合报表;同时受保留天数限制。": "預設 1000000 筆(100 萬),超出後清理最舊的請求記錄及其原始本文,不影響每日彙總報表;同時受保留天數限制。", "默认 5 分钟。间隔内的变化合并为最新快照,到期后上传;手动上传不受限制。失败后会延长等待并自动重试。": "預設 5 分鐘。間隔內的變更合併為最新快照,到期後上傳;手動上傳不受限制。失敗後會延長等待並自動重試。", "默认仅本机可访问(127.0.0.1)。开启后监听所有 IPv4 网卡(0.0.0.0),访问范围由网络与防火墙决定,不限于局域网,也不会自动开放到公网。开启前必须注册面板管理员;管理接口需要管理员会话或网关 Key,API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。「同时开放网页管理面板」默认关闭,开启后可从其他设备的浏览器登录管理;关闭它不影响 API 转发和本机桌面管理。修改任一开关都需要重启应用。": "預設僅本機可存取(127.0.0.1)。開啟後監聽所有 IPv4 網路介面卡(0.0.0.0),存取範圍由網路與防火牆決定,不限於區域網路,也不會自動開放到公網。開啟前必須註冊面板管理員;管理介面需要管理員工作階段或閘道 Key,API 呼叫需要已啟用的閘道 Key,沒有時會自動建立一把「預設」Key。「同時開放網頁管理面板」預設關閉,開啟後可從其他裝置的瀏覽器登入管理;關閉它不影響 API 轉發和本機桌面管理。修改任一開關都需要重新啟動應用程式。", "默认值通常够用,出问题时才需要调": "預設值通常夠用,出問題時才需要調", "默认关闭。开启后下一次 Codex 请求立即生效,不用重启;只对 Codex 来源的 /v1/responses 请求补阶段标记,其它客户端与 /v1/chat/completions 不受影响。": "預設關閉。開啟後下一次 Codex 請求立即生效,不用重啟;只對 Codex 來源的 /v1/responses 請求補階段標記,其它客戶端與 /v1/chat/completions 不受影響。", "默认关闭。改动立即生效,不用重启;关闭期间的跨源请求会被预检拦下。": "預設關閉。改動立即生效,不用重啟;關閉期間的跨源請求會被預檢攔下。", "默认关闭窗口不会退出程序,而是把窗口缩到系统托盘,转发继续在后台运行(OpenAI 客户端不受影响);要彻底退出程序,请在托盘图标上右键选「退出」。关掉这个开关后,点关闭按钮即退出程序、转发随之中断。「开机自动启动」开启后,登录系统时会自动启动本程序(通常直接驻留托盘),不需要手动打开。": "預設關閉視窗不會退出程式,而是把視窗縮到系統托盤,轉發繼續在後臺執行(OpenAI 客戶端不受影響);要徹底退出程式,請在托盤圖示上右鍵選「退出」。關掉這個開關後,點關閉按鈕即退出程式、轉發隨之中斷。「開機自動啟動」開啟後,登入系統時會自動啟動本程式(通常直接駐留托盤),不需要手動開啟。", "默认关闭,先配置好再开启;关闭后配置会保留。": "預設關閉,先配置好再開啟;關閉後配置會保留。", "默认应用全部提供商(包含之后新增的插件与自定义提供商)。指定范围后,未选中的提供商不做指纹脱敏;清空选择自动回到全部提供商。": "預設應用全部提供商(包含之後新增的外掛與自定義提供商)。指定範圍後,未選中的提供商不做指紋脫敏;清空選擇自動回到全部提供商。", "默认开启。只改 role 字段本身,消息内容与顺序都不动;本项只改发给上游的副本,客户端看到的响应内容不变。": "預設開啟。只改 role 欄位本身,訊息內容與順序都不動;本項只改發給上游的副本,客戶端看到的響應內容不變。", "默认开启。只改发给上游的副本,客户端看到的响应与原图都不变;请求日志里保存的是客户端发来的原图,不是压缩后的版本。只作用在对话链路,生图 / 图片编辑不经过这里。改完对下一个请求立即生效,不用重启。": "預設開啟。只改發給上游的副本,客戶端看到的響應與原圖都不變;請求日誌裡儲存的是客戶端發來的原圖,不是壓縮後的版本。只作用在對話鏈路,生圖 / 圖片編輯不經過這裡。改完對下一個請求立即生效,不用重啟。", "默认开启。命中明细会记进请求日志的「敏」标签(悬停可看命中了哪几条规则)。本项只改发给上游的副本,客户端看到的响应内容不变。": "預設開啟。命中明細會記進請求日誌的「敏」標籤(懸停可看命中了哪幾條規則)。本項只改發給上游的副本,客戶端看到的響應內容不變。", "默认开启并应用全部提供商。编辑词表或应用范围后点击「保存设置」,下一次请求立即生效,不用重启。命中明细仍记进请求日志的「敏」标签。": "預設開啟並應用全部提供商。編輯詞表或應用範圍後點擊「儲存設定」,下一次請求立即生效,不用重啟。命中明細仍記進請求日誌的「敏」標籤。", "默认网关只监听 127.0.0.1,只有本机能访问。开启后网关改听所有网卡,同一局域网内的设备可以把 API 地址指向本机 IP 一起使用。出于安全考虑,开启前必须先注册一个面板管理员:管理接口从此要求管理员会话或网关 Key,模型额度不会对局域网裸奔;一把启用的网关 Key 都没有时,转发接口也会拒绝服务,直到创建第一把。改动需要重启应用生效。「同时开放网页管理面板」把管理界面也出给局域网(其他设备的浏览器打开本机 IP 即可管理),默认关闭 —— 桌面端的面板仍只由本程序自己出。": "預設閘道器只監聽 127.0.0.1,只有本機能存取。開啟後閘道器改聽所有網路卡,同一區域網路內的裝置可以把 API 地址指向本機 IP 一起使用。出於安全考慮,開啟前必須先註冊一個面板管理員:管理介面從此要求管理員會話或閘道器 Key,模型額度不會對區域網路裸奔;一把啟用的閘道器 Key 都沒有時,轉發介面也會拒絕服務,直到建立第一把。改動需要重啟應用生效。「同時開放網頁管理面板」把管理介面也出給區域網路(其他裝置的瀏覽器開啟本機 IP 即可管理),預設關閉 —— 桌面版的面板仍只由本程式自己出。", "({n} 个整组隐藏)": "({n} 個整組隱藏)", "({n} 行)": "({n} 行)", "({n} 项被覆盖)": "({n} 項被覆蓋)", "(全部为默认值)": "(全部為預設值)", "(官方原文)": "(官方原文)", "(已存一份正文,{n} 行;切成「替换 / 追加」后生效)": "(已存一份正文,{n} 行;切成「替換 / 追加」後生效)", "(已改)": "(已改)", "(已注册过会跳过这一步,直接生效)。": "(已註冊過會跳過這一步,直接生效)。", "(当前生效的就是这一份,{n} 行)": "(當前生效的就是這一份,{n} 行)", "(文件:{path})": "(檔案:{path})", "(未生效)": "(未生效)", ",{items}": ",{items}", ",{time}": ",{time}", ",以及代理池 / 订阅里可能存在的代理凭据。请使用只有你能访问的私有存储;账号密钥由同步密码单独加密,泄露存储本身不等于泄露账号。": ",以及代理池 / 訂閱裡可能存在的代理憑據。請使用只有你能存取的私有儲存;帳號金鑰由同步密碼單獨加密,洩露儲存本身不等於洩露帳號。", ",包括恢复后需要重新登录管理面板。": ",包括恢復後需要重新登入管理面板。", ",可直接用于登录。请妥善保管,不要外传或上传到公共位置。": ",可直接用於登入。請妥善保管,不要外傳或上傳到公共位置。", ",文件里后续的改动在清空这里之前不再生效": ",檔案裡後續的改動在清空這裡之前不再生效", ",替换前的数据已备份为 {name}": ",替換前的資料已備份為 {name}", ",自定义提供商新增 {added} 个、更新 {updated} 个": ",自定義提供商新增 {added} 個、更新 {updated} 個", ";开关关闭时词表不执行": ";開關關閉時詞表不執行", ";网页管理面板已一并开放(浏览器打开同一地址)": ";網頁管理面板已一併開放(瀏覽器開啟同一地址)" }); +window.wbI18nDict = window.wbI18nDict || {}; Object.assign(window.wbI18nDict, { " 到 {file}": " 到 {file}", " 正文已改:{edited}(其余段用官方原文)。": " 正文已改:{edited}(其餘段用官方原文)。", "(无 id)": "(無 id)", "/v1 拒绝无 Key 请求": "/v1 拒絕無 Key 請求", "0 B": "0 B", "100%(默认)": "100%(預設)", "<本机IP>": "<本機IP>", "ALTCHA(本地验证)": "ALTCHA(本機驗證)", "Access Key ID": "Access Key ID", "Agent2API 手机端": "Agent2API 手機端", "Android 应用(APK)": "Android 應用(APK)", "Cline 上游按请求头判定「调用方是不是 Cline 自家产品」:X-CLIENT-TYPE: cline-sdk 是硬门槛(缺了它免费池模型一律 403),版本号与平台标识让请求更贴近官方客户端的形态。这里列出的是网关默认会发的头:改某一行的值 = 覆盖默认值(也可以新增默认清单之外的自定义头);把值清空保存 = 这个头不发送;在界面删掉被改过的行 = 回落默认值。改完点「保存」,下一个 Cline 请求立即生效。不懂某一行的含义就不要动它 —— 伪装头的价值在「与官方客户端逐字一致」。": "Cline 上游按請求頭判定「呼叫方是不是 Cline 自家產品」:X-CLIENT-TYPE: cline-sdk 是硬門檻(缺了它免費池模型一律 403),版本號與平臺標識讓請求更貼近官方客戶端的形態。這裡列出的是閘道器預設會發的頭:改某一行的值 = 覆蓋預設值(也可以新增預設清單之外的自定義頭);把值清空儲存 = 這個頭不傳送;在介面刪掉被改過的行 = 回落預設值。改完點「儲存」,下一個 Cline 請求立即生效。不懂某一行的含義就不要動它 —— 偽裝頭的價值在「與官方客戶端逐字一致」。", "Cline 伪装头": "Cline 偽裝頭", "Cline 伪装头已刷新": "Cline 偽裝頭已重新整理", "Docker 容器": "Docker 容器", "Endpoint": "Endpoint", "Endpoint 填 https://<账户ID>.r2.cloudflarestorage.com,Region 固定填 auto。": "Endpoint 填 https://<帳戶ID>.r2.cloudflarestorage.com,Region 固定填 auto。", "Endpoint 填 https://cos.ap-guangzhou.myqcloud.com,Region 填 ap-guangzhou(按实际地域改)。": "Endpoint 填 https://cos.ap-guangzhou.myqcloud.com,Region 填 ap-guangzhou(按實際地域改)。", "Endpoint 填 https://obs.cn-north-4.myhuaweicloud.com,Region 填 cn-north-4(按实际地域改)。": "Endpoint 填 https://obs.cn-north-4.myhuaweicloud.com,Region 填 cn-north-4(按實際地域改)。", "Endpoint 填 https://oss-cn-hangzhou.aliyuncs.com,Region 填 cn-hangzhou(按实际地域改)。": "Endpoint 填 https://oss-cn-hangzhou.aliyuncs.com,Region 填 cn-hangzhou(按實際地域改)。", "Endpoint 形如 http://192.168.1.10:9000(自建通常用 http);Region 一般填 us-east-1。": "Endpoint 形如 http://192.168.1.10:9000(自建通常用 http);Region 一般填 us-east-1。", "Endpoint 留空即走 AWS 官方地址;Region 必须与桶所在区域一致。": "Endpoint 留空即走 AWS 官方地址;Region 必須與桶所在區域一致。", "KB": "KB", "Linux 安装包(deb)": "Linux 安裝包(deb)", "Logo 不能超过 2 MiB": "Logo 不能超過 2 MiB", "Logo 仅支持 PNG、JPG、WebP 图片": "Logo 僅支援 PNG、JPG、WebP 圖片", "Nextcloud": "Nextcloud", "OpenAI 新版 API 用 developer 角色取代 system 承载指令,新版 OpenAI SDK 与部分客户端发的对话里会出现 role 为 developer 的消息;不少 OpenAI 兼容上游(尤其是自定义提供商的透传路径)不认识这个角色,收到就报 400。开启本项后,网关在每次转发前把 developer 角色的消息改写为 system —— 两类角色在 OpenAI 语义上等价(OpenAI 自己的迁移指南也是这么映射的),改写不影响对话内容与语义;对本来就只认 system 的各家内置上游同样无害。默认开启;关掉后 developer 消息会原样发往上游,不认识它的上游会报「角色不存在」一类的错误。": "OpenAI 新版 API 用 developer 角色取代 system 承載指令,新版 OpenAI SDK 與部分客戶端發的對話裡會出現 role 為 developer 的訊息;不少 OpenAI 相容上游(尤其是自定義提供商的透傳路徑)不認識這個角色,收到就報 400。開啟本項後,閘道器在每次轉發前把 developer 角色的訊息改寫為 system —— 兩類角色在 OpenAI 語義上等價(OpenAI 自己的遷移指南也是這麼對映的),改寫不影響對話內容與語義;對本來就只認 system 的各家內建上游同樣無害。預設開啟;關掉後 developer 訊息會原樣發往上游,不認識它的上游會報「角色不存在」一類的錯誤。", "QQ 群 · Telegram": "QQ 群 · Telegram", "S3 兼容存储": "S3 相容儲存", "Safari 没有安装按钮:点底部的「分享」,选「添加到主屏幕」,再点「添加」。": "Safari 沒有安裝按鈕:點底部的「分享」,選「新增到主螢幕」,再點「新增」。", "Secret Access Key": "Secret Access Key", "Token 读数量级": "Token 讀數量級", "UTF-8 文本文件路径。留空用内置默认;只在「替换 / 追加」下读取。": "UTF-8 文本檔案路徑。留空用內建預設;只在「替換 / 追加」下讀取。", "UTF-8 文本文件路径,留空用内置默认提示词(通用编码助手提示词,不含任何会被上游拦截的模板句)。只在「替换 / 追加」模式下生效,透传模式不读它。": "UTF-8 文本檔案路徑,留空用內建預設提示詞(通用編碼助手提示詞,不含任何會被上游攔截的模板句)。只在「替換 / 追加」模式下生效,透傳模式不讀它。", "WebView / 浏览器内核": "WebView / 瀏覽器核心", "Windows 安装包(NSIS)": "Windows 安裝包(NSIS)", "Windows 服务": "Windows 服務", "ZCode 套餐池(Start Plan)通道每条请求都要消耗一个当次铸造的人机验证令牌(一次性,2 分钟过期),库存低于该值时界面自动补铸到它。默认 3 个。调大能吸收突发并发,但用不掉的令牌 2 分钟就过期作废,烧的是上游风控配额。可填 1–10。": "ZCode 套餐池(Start Plan)通道每條請求都要消耗一個當次鑄造的人機驗證權杖(一次性,2 分鐘過期),庫存低於該值時介面自動補鑄到它。預設 3 個。調大能吸收突發併發,但用不掉的權杖 2 分鐘就過期作廢,燒的是上游風控配額。可填 1–10。", "ZCode 客户端版本号": "ZCode 客戶端版本號", "ZCode 活动套餐通道每条请求都要消耗一个当次铸造的人机验证令牌(一次性,2 分钟过期),库存低于该值时界面自动补铸到它。默认 3 个。调大能吸收突发并发,但用不掉的令牌 2 分钟就过期作废,烧的是上游风控配额。可填 1–10。": "ZCode 活動套餐通道每條請求都要消耗一個當次鑄造的人機驗證權杖(一次性,2 分鐘過期),庫存低於該值時介面自動補鑄到它。預設 3 個。調大能吸收突發併發,但用不掉的權杖 2 分鐘就過期作廢,燒的是上游風控配額。可填 1–10。", "ZCode 版本号已刷新": "ZCode 版本號已重新整理", "ZCode 的活动套餐(限时体验礼包)由上游按**客户端版本号**决定下不下发:探测接口只在版本号达到当期门槛时才返回套餐列表,版本落后时回一份空列表(不是报错,所以界面上看起来像「没有活动」)。2026-10 那期实测:3.16.0 及以下全空,3.16.1 起才有礼包。插件内置的默认值会随活动更新,但上游每期可能再抬高一档 —— 那时如果官方客户端里能看到活动、这里却探测为空,就在这里填官方客户端当前的版本号(形如 3.16.2)。环境变量 ZCODE_APP_VERSION 优先级更高。": "ZCode 的活動套餐(限時體驗禮包)由上游按**客戶端版本號**決定下不下發:探測介面只在版本號達到當期門檻時才返回套餐列表,版本落後時回一份空列表(不是報錯,所以介面上看起來像「沒有活動」)。2026-10 那期實測:3.16.0 及以下全空,3.16.1 起才有禮包。外掛內建的預設值會隨活動更新,但上游每期可能再抬高一檔 —— 那時如果官方客戶端裡能看到活動、這裡卻探測為空,就在這裡填官方客戶端當前的版本號(形如 3.16.2)。環境變數 ZCODE_APP_VERSION 優先順序更高。", "ZCode「套餐池(Start Plan)」通道的每条推理请求都要附一个当次铸造的阿里云无痕验证令牌(一次性、约 2 分钟过期):令牌由界面里的铸造守卫静默铸好、推给网关入池,转发时逐条取用。这里的三个值管的是补货节奏:①「库存目标」= 库存低于它守卫才补铸、补到它为止,默认 3 个;②「轮询间隔」= 守卫多久看一次库存,默认 2500 毫秒,只影响反应速度(库存够用时不会多铸);③「单轮铸造上限」= 发现缺货时一轮最多铸几个,默认 1 个(连铸之间固定隔 500 毫秒)。请求密集、请求日志里连续出现「需要人机验证令牌」的 503 时,把目标与单轮上限适当调大、轮询调快,能让池子跟得上消耗 —— 代价是上游(阿里云)对铸造频率有风控,铸得越多越快越容易触发限流,且用不掉的令牌 2 分钟即过期作废、等于白烧配额,所以建议小步调。保存后对下一轮补货立即生效,不用重启。": "ZCode「套餐池(Start Plan)」通道的每條推理請求都要附一個當次鑄造的阿里雲無痕驗證權杖(一次性、約 2 分鐘過期):權杖由介面裡的鑄造守衛靜默鑄好、推給閘道器入池,轉發時逐條取用。這裡的三個值管的是補貨節奏:①「庫存目標」= 庫存低於它守衛才補鑄、補到它為止,預設 3 個;②「輪詢間隔」= 守衛多久看一次庫存,預設 2500 毫秒,隻影響反應速度(庫存夠用時不會多鑄);③「單輪鑄造上限」= 發現缺貨時一輪最多鑄幾個,預設 1 個(連鑄之間固定隔 500 毫秒)。請求密集、請求日誌裡連續出現「需要人機驗證權杖」的 503 時,把目標與單輪上限適當調大、輪詢調快,能讓池子跟得上消耗 —— 代價是上游(阿里雲)對鑄造頻率有風控,鑄得越多越快越容易觸發限流,且用不掉的權杖 2 分鐘即過期作廢、等於白燒配額,所以建議小步調。儲存後對下一輪補貨立即生效,不用重啟。", "ZCode「活动套餐」通道的每条推理请求都要附一个当次铸造的阿里云无痕验证令牌(一次性、约 2 分钟过期):令牌由界面里的铸造守卫静默铸好、推给网关入池,转发时逐条取用。这里的三个值管的是补货节奏:①「库存目标」= 库存低于它守卫才补铸、补到它为止,默认 3 个;②「轮询间隔」= 守卫多久看一次库存,默认 2500 毫秒,只影响反应速度(库存够用时不会多铸);③「单轮铸造上限」= 发现缺货时一轮最多铸几个,默认 1 个(连铸之间固定隔 500 毫秒)。请求密集、请求日志里连续出现「需要人机验证令牌」的 503 时,把目标与单轮上限适当调大、轮询调快,能让池子跟得上消耗 —— 代价是上游(阿里云)对铸造频率有风控,铸得越多越快越容易触发限流,且用不掉的令牌 2 分钟即过期作废、等于白烧配额,所以建议小步调。保存后对下一轮补货立即生效,不用重启。": "ZCode「活動套餐」通道的每條推理請求都要附一個當次鑄造的阿里雲無痕驗證權杖(一次性、約 2 分鐘過期):權杖由介面裡的鑄造守衛靜默鑄好、推給閘道器入池,轉發時逐條取用。這裡的三個值管的是補貨節奏:①「庫存目標」= 庫存低於它守衛才補鑄、補到它為止,預設 3 個;②「輪詢間隔」= 守衛多久看一次庫存,預設 2500 毫秒,隻影響反應速度(庫存夠用時不會多鑄);③「單輪鑄造上限」= 發現缺貨時一輪最多鑄幾個,預設 1 個(連鑄之間固定隔 500 毫秒)。請求密集、請求日誌裡連續出現「需要人機驗證權杖」的 503 時,把目標與單輪上限適當調大、輪詢調快,能讓池子跟得上消耗 —— 代價是上游(阿里雲)對鑄造頻率有風控,鑄得越多越快越容易觸發限流,且用不掉的權杖 2 分鐘即過期作廢、等於白燒配額,所以建議小步調。儲存後對下一輪補貨立即生效,不用重啟。", "beta 版": "beta 版", "iOS 应用": "iOS 應用", "models.dev 元数据": "models.dev 後設資料", "models.dev 元数据已更新({count} 条)": "models.dev 後設資料已更新({count} 條)", "models.dev 是一个开源的模型资料库(社区维护),这里用它补齐「上游没告诉我们」的模型能力:上下文窗口、最大输出、工具调用、图片、视频、是否支持思考,以及这个模型认识哪些思考档位。优先级是:你在「模型能力」里手工改的值 > 上游清单自己声明的值 > models.dev 的值 —— 它只填上游没声明的空位,从不推翻上游已声明的。网关随包内嵌了一份快照,所以离线、首次启动、访问不通时也有数据;开启时会按「模型目录刷新」任务的间隔联网更新(同一轮里一并刷新,也可在这里立即刷新)。关闭只停联网刷新,已经拿到的数据继续用。": "models.dev 是一個開源的模型資料庫(社群維護),這裡用它補齊「上游沒告訴我們」的模型能力:上下文視窗、最大輸出、工具呼叫、圖片、影片、是否支援思考,以及這個模型認識哪些思考檔位。優先順序是:你在「模型能力」裡手工改的值 > 上游清單自己宣告的值 > models.dev 的值 —— 它只填上游沒宣告的空位,從不推翻上游已宣告的。閘道器隨包內嵌了一份快照,所以離線、首次啟動、存取不通時也有資料;開啟時會按「模型目錄重新整理」任務的間隔聯網更新(同一輪裡一併重新整理,也可在這裡立即重新整理)。關閉只停聯網重新整理,已經拿到的資料繼續用。", "models.dev 模型元数据": "models.dev 模型後設資料", "systemd 服务": "systemd 服務", "{count} 条": "{count} 條", "{count} 条 · 来自{origin}{at} · {mode}": "{count} 條 · 來自{origin}{at} · {mode}", "{count} 条规则,按列表顺序执行": "{count} 條規則,按列表順序執行", "{d} 天 {h} 小时": "{d} 天 {h} 小時", "{h} 小时 {m} 分钟": "{h} 小時 {m} 分鐘", "{label} 提示词文件": "{label} 提示詞檔案", "{label} 的提示词模式": "{label} 的提示詞模式", "{label}({message})": "{label}({message})", "{lines} 行、{chars} 字符(按当前草稿计)": "{lines} 行、{chars} 字元(按當前草稿計)", "{minutes} 分钟": "{minutes} 分鐘", "{models} 同时出现在两块设置里,会按「辅助识图」处理。想改的话,把其中一个从这边的模型名单里去掉。": "{models} 同時出現在兩塊設定裡,會按「輔助識圖」處理。想改的話,把其中一個從這邊的模型名單裡去掉。", "{mode}生效:上游收到的 system 来自{source}{lines}。": "{mode}生效:上游收到的 system 來自{source}{lines}。", "{m} 分 {s} 秒": "{m} 分 {s} 秒", "{m} 分钟": "{m} 分鐘", "{noun}不能为空(可填 {min}–{max})": "{noun}不能為空(可填 {min}–{max})", "{noun}必须在 {min}–{max} 之间(当前填的是 {text})": "{noun}必須在 {min}–{max} 之間(當前填的是 {text})", "{noun}必须是整数": "{noun}必須是整數", "{n} B": "{n} B", "{n} GB": "{n} GB", "{n} KB": "{n} KB", "{n} MB": "{n} MB", "{n} 个头将随每个 Cline 请求发送": "{n} 個頭將隨每個 Cline 請求傳送", "{n} 台可选 · 点此切换": "{n} 臺可選 · 點此切換", "{n} 项 · {shown} 显示": "{n} 項 · {shown} 顯示", "{total} 个菜单 · 显示 {shown} · 隐藏 {hidden} · {groups} 个分组": "{total} 個選單 · 顯示 {shown} · 隱藏 {hidden} · {groups} 個分組", "{way}的适用模型": "{way}的適用模型", "…": "…", "⚠️ 密钥警告": "⚠️ 金鑰警告", "⚠️ 已关闭「{label}」的机器人校验": "⚠️ 已關閉「{label}」的機器人校驗", "⚠️ 机器人校验已关闭": "⚠️ 機器人校驗已關閉", "✅ Cline 伪装头已保存": "✅ Cline 偽裝頭已儲存", "✅ ZCode 版本号已保存": "✅ ZCode 版本號已儲存", "✅ models.dev 模型元数据已开启": "✅ models.dev 模型後設資料已開啟", "✅ 云同步设置已保存": "✅ 雲同步設定已儲存", "✅ 会话图片压缩已开启": "✅ 會話圖片壓縮已開啟", "✅ 出站指纹脱敏已开启": "✅ 出站指紋脫敏已開啟", "✅ 密码已修改,其他设备的登录已失效": "✅ 密碼已修改,其他裝置的登入已失效", "✅ 导入完成:{summary}": "✅ 匯入完成:{summary}", "✅ 已上传到云端({size})": "✅ 已上傳到雲端({size})", "✅ 已为「{label}」装上网关自带提示词": "✅ 已為「{label}」裝上閘道器自帶提示詞", "✅ 已从云端恢复{note}": "✅ 已從雲端恢復{note}", "✅ 已保存:{label}": "✅ 已儲存:{label}", "✅ 已保存:{label} {value}": "✅ 已儲存:{label} {value}", "✅ 已保存:指定错误码直接换号": "✅ 已儲存:指定錯誤碼直接換號", "✅ 已保留 {days} 天": "✅ 已保留 {days} 天", "✅ 已保留 {days} 天,超出部分已清理": "✅ 已保留 {days} 天,超出部分已清理", "✅ 已加密备份 {n} 张表({size}),包含恢复密钥:{file}": "✅ 已加密備份 {n} 張表({size}),包含恢復金鑰:{file}", "✅ 已备份 {n} 张表({size})到 {file}": "✅ 已備份 {n} 張表({size})到 {file}", "✅ 已导入账号密钥,请继续下载": "✅ 已匯入帳號金鑰,請繼續下載", "✅ 已导出 {count} 个账号{note}{file}": "✅ 已匯出 {count} 個帳號{note}{file}", "✅ 已开启「{label}」的机器人校验": "✅ 已開啟「{label}」的機器人校驗", "✅ 已恢复 {n} 张表": "✅ 已恢復 {n} 張表", "✅ 已恢复 {n} 张表{note}": "✅ 已恢復 {n} 張表{note}", "✅ 已改用 k / M / B 缩写": "✅ 已改用 k / M / B 縮寫", "✅ 已改用本地量级词(万 / 亿式)": "✅ 已改用本地量級詞(萬 / 億式)", "✅ 已自动创建网关 Key「默认」(可在「网关 Key」页查看)": "✅ 已自動建立閘道器 Key「預設」(可在「閘道器 Key」頁檢視)", "✅ 已解除内容拦截降级": "✅ 已解除內容攔截降級", "✅ 开发者角色兼容已开启": "✅ 開發者角色相容已開啟", "✅ 指纹脱敏设置已保存": "✅ 指紋脫敏設定已儲存", "✅ 数量上限已设为 {count} 条": "✅ 數量上限已設為 {count} 筆", "✅ 数量上限已设为 {count} 条,超出部分已清理": "✅ 數量上限已設為 {count} 筆,超出部分已清理", "✅ 机器人校验已开启": "✅ 機器人校驗已開啟", "✅ 第三方模型回答完自动折叠过程已开启": "✅ 第三方模型回答完自動摺疊過程已開啟", "✅ 设置已保存,应用正在重启…": "✅ 設定已儲存,應用正在重啟…", "✅ 调试模式已关闭": "✅ 除錯模式已關閉", "✅ 调试模式已开启": "✅ 除錯模式已開啟", "✅ 路由设置已保存": "✅ 路由設定已儲存", "✅ 连接成功:{path}": "✅ 連線成功:{path}", "、{n} 个自定义提供商": "、{n} 個自定義提供商", "。事件日志、请求明细、调试报文与面板登录态保持不变。替换前会自动把当前业务数据备份到配置目录的 backups/ 下。": "。事件日誌、請求明細、除錯報文與面板登入態保持不變。替換前會自動把當前業務資料備份到配置目錄的 backups/ 下。", "「{label}」将从 {previous} 天改为 {days} 天。": "「{label}」將從 {previous} 天改為 {days} 天。", "「{label}」将从 {previous} 条改为 {count} 条。": "「{label}」將從 {previous} 筆改為 {count} 筆。", "「{label}」改用内置默认提示词": "「{label}」改用內建預設提示詞", "「{label}」的提示词文件已更新": "「{label}」的提示詞檔案已更新", "「{label}」的提示词正文已更新": "「{label}」的提示詞正文已更新", "「{label}」的模式改为「{mode}」": "「{label}」的模式改為「{mode}」", "「{label}」的网关自带提示词已改回官方原文": "「{label}」的閘道器自帶提示詞已改回官方原文", "「{label}」的网关自带提示词正文已更新": "「{label}」的閘道器自帶提示詞正文已更新", "「模型管理」里每个能力的来源标记(上游 / models.dev / 已覆盖)读的就是这份数据;映射弹窗的思考档位下拉也按这里的数据只列该模型真实认识的档位。": "「模型管理」裡每個能力的來源標記(上游 / models.dev / 已覆蓋)讀的就是這份資料;對映彈窗的思考檔位下拉也按這裡的資料只列該模型真實認識的檔位。", "「用哪份提示词」本来是按上游分别决定的事,所以每家可以有自己的模式、提示词文件与正文:不在这里列出的提供商一律沿用上面那份默认设置,「跟随默认」把这一家取消、回到默认。带「网关自带」那一行的家(目前是 ZCode 两家)默认就列在这里 —— 那一段是网关自己装上去的文本,不来自客户端也不来自提示词文件,默认开启、可以关掉,也可以改它的正文(改过的那一段以你的文本为准);关掉后还能不能通过上游校验,取决于上游当下的口径,行内说明了实测依据。「模式 / 提示词文件 / 正文」管的是客户端自己的 system 怎么处理,与那个开关是两件事。": "「用哪份提示詞」本來是按上游分別決定的事,所以每家可以有自己的模式、提示詞檔案與正文:不在這裡列出的提供商一律沿用上面那份預設設定,「跟隨預設」把這一家取消、回到預設。帶「閘道器自帶」那一行的家(目前是 ZCode 兩家)預設就列在這裡 —— 那一段是閘道器自己裝上去的文本,不來自客戶端也不來自提示詞檔案,預設開啟、可以關掉,也可以改它的正文(改過的那一段以你的文本為準);關掉後還能不能通過上游校驗,取決於上游當下的口徑,行內說明了實測依據。「模式 / 提示詞檔案 / 正文」管的是客戶端自己的 system 怎麼處理,與那個開關是兩件事。", "「设置」是固定项,含它的分组不能整组隐藏;可以单独隐藏组内其它菜单": "「設定」是固定項,含它的分組不能整組隱藏;可以單獨隱藏組內其它選單", "「请求日志」页的逐条请求记录,默认 99999 天(近似全量保留),可填 1–99999 天。": "「請求日誌」頁的逐條請求記錄,預設 99999 天(近似全量保留),可填 1–99999 天。", "「请求日志」页的逐条请求记录,默认 99999 天,可填 1–99999 天;同时受数量上限限制。": "「請求日誌」頁的逐筆請求記錄,預設 99999 天,可填 1–99999 天;同時受數量上限限制。", "一个 .a2ab 文件即可跨机器恢复,账号、网关 Key、GitHub 令牌与云同步凭据无需另行复制密钥。插件程序与库外文件不在整库备份范围。": "一個 .a2ab 檔案即可跨機器恢復,帳號、閘道器 Key、GitHub 權杖與雲同步憑據無需另行復制金鑰。外掛程式與庫外檔案不在整庫備份範圍。", "一段内置装配": "一段內建裝配", "三档数据各自独立计时,超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件;请求日志是网关每次转发到上游的逐条记录;按天聚合供报表页的热力图与按天趋势使用。请求日志与按天聚合默认 99999 天(约 274 年,效果上等于全量保留),事件日志默认 30 天。把某一档改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。三档的可填范围均为 1–99999 天。": "三檔資料各自獨立計時,超出保留天數的部分會被刪除:事件日誌是登入、帳號切換、429 切換這類系統事件;請求日誌是閘道器每次轉發到上游的逐條記錄;按天聚合供報表頁的熱力圖與按天趨勢使用。請求日誌與按天聚合預設 99999 天(約 274 年,效果上等於全量保留),事件日誌預設 30 天。把某一檔改小(例如 30 天改成 7 天)儲存後會立即刪除超出的歷史資料,此操作不可恢復;改大或保持不變不會刪除任何資料。三檔的可填範圍均為 1–99999 天。", "三段各自成块,所以分开编辑": "三段各自成塊,所以分開編輯", "三段必须各自成块(上游按结构校验,并成一段会被回 405),所以这里分开编辑。动态段里的运行值写成占位符,发请求时才替换:{cwd} 工作目录、{platform} 平台、{shell} shell、{os_version} 系统版本、{git} 是否 git 仓库、{provider} 提供方标识、{model} 模型名。清空某一段 = 那一段恢复官方原文。": "三段必須各自成塊(上游按結構校驗,併成一段會被回 405),所以這裡分開編輯。動態段裡的執行值寫成佔位符,發請求時才替換:{cwd} 工作目錄、{platform} 平臺、{shell} shell、{os_version} 系統版本、{git} 是否 git 倉庫、{provider} 提供方標識、{model} 模型名。清空某一段 = 那一段恢復官方原文。", "上传": "上傳", "上传 Logo": "上傳 Logo", "上传中…": "上傳中…", "上传内容含加密后的账号凭证与网关配置": "上傳內容含加密後的帳號憑證與閘道器配置", "上传到云端": "上傳到雲端", "上传失败:{message}": "上傳失敗:{message}", "上次同步:{time}({action})": "上次同步:{time}({action})", "上次成功刷新的结果(存在本机数据库里)": "上次成功重新整理的結果(存在本機資料庫裡)", "上游 CLI 版本": "上游 CLI 版本", "上游客户端版本": "上游客戶端版本", "上游按": "上游按", "上游按「结构」校验身份:三段必须各自成块,所以这里分开编辑三段(不能合成一段)。动态段里的运行值写成占位符,发请求时才替换:{cwd} 工作目录、{platform} 平台、{shell} shell、{os_version} 系统版本、{git} 是否 git 仓库、{provider} 提供方标识、{model} 模型名。清空某一段 = 那一段恢复官方原文。第三段发出时前面会自带一个空行(官方形状)。": "上游按「結構」校驗身份:三段必須各自成塊,所以這裡分開編輯三段(不能合成一段)。動態段裡的執行值寫成佔位符,發請求時才替換:{cwd} 工作目錄、{platform} 平臺、{shell} shell、{os_version} 系統版本、{git} 是否 git 倉庫、{provider} 提供方標識、{model} 模型名。清空某一段 = 那一段恢復官方原文。第三段發出時前面會自帶一個空行(官方形狀)。", "上游未配置": "上游未配置", "上游模型繁忙时会先排队(回一句「建议 N 秒后再来」):网关等一会儿再发同一请求,最多等几次。默认 2 次,可填 0–10;填 0 表示不等待,排队直接返回 503 并说明「不是登录态或额度问题」。": "上游模型繁忙時會先排隊(回一句「建議 N 秒後再來」):閘道器等一會兒再發同一請求,最多等幾次。預設 2 次,可填 0–10;填 0 表示不等待,排隊直接返回 503 並說明「不是登入態或額度問題」。", "上游用「逐字精确匹配」的方式审核请求体(不是语义审核):客户端注入的固定模板句、计费头字段名、以及某些裸错误码出现在报文里就会整单拦截,返回 400。开启本项后,网关在每次转发前改写这些指纹 —— 表头键值整段删除,承载语义的模板句只换一个词(如 official CLI for Claude → official CLI tool for Claude),对话内容与语义都不受影响。规则集是内置的,不需要也无法维护词表。关掉本项后客户端模板会原样发往上游,可能重新出现模板句被误拦的报错。": "上游用「逐字精確匹配」的方式稽核請求體(不是語義稽核):客戶端注入的固定模板句、計費頭欄位名、以及某些裸錯誤碼出現在報文裡就會整單攔截,返回 400。開啟本項後,閘道器在每次轉發前改寫這些指紋 —— 表頭鍵值整段刪除,承載語義的模板句只換一個詞(如 official CLI for Claude → official CLI tool for Claude),對話內容與語義都不受影響。規則集是內建的,不需要也無法維護詞表。關掉本項後客戶端模板會原樣發往上游,可能重新出現模板句被誤攔的報錯。", "上游请求四个阶段各自的等待上限(秒,1~3600):①「连接中超时」= 建立 TCP/TLS 连接或代理隧道的最大等待,默认 30 秒;②「等待响应超时」= 请求发出后等上游响应头的最大时间,默认 300 秒 —— 网关请求上游恒带 stream,响应头在 SSE 建立时就到达,与模型思考多久无关;③「流式响应空闲超时」= 流式响应相邻两块数据之间允许的最大空闲,收到新数据即重新计时,默认 300 秒 —— 上游长时间不吐数据即判定连接僵死并断开;④「非流式响应超时」= 读完整份非流式响应体的总预算(一次性计时、不重置),默认 300 秒。四项都是「等待上限」,只要数据还在来,正常的流式回答就一直往下传。保存后对下一个请求立即生效,不用重启。": "上游請求四個階段各自的等待上限(秒,1~3600):①「連線中超時」= 建立 TCP/TLS 連線或代理隧道的最大等待,預設 30 秒;②「等待響應超時」= 請求發出後等上游響應頭的最大時間,預設 300 秒 —— 閘道器請求上游恆帶 stream,響應頭在 SSE 建立時就到達,與模型思考多久無關;③「流式響應空閒超時」= 流式響應相鄰兩塊資料之間允許的最大空閒,收到新資料即重新計時,預設 300 秒 —— 上游長時間不吐資料即判定連線僵死並斷開;④「非流式響應超時」= 讀完整份非流式響應體的總預算(一次性計時、不重置),預設 300 秒。四項都是「等待上限」,只要資料還在來,正常的流式回答就一直往下傳。儲存後對下一個請求立即生效,不用重啟。", "上游调试报文": "上游除錯報文", "上移": "上移", "上移规则": "上移規則", "下次自动重试:{time}": "下次自動重試:{time}", "下游正文": "下游正文", "下移": "下移", "下移规则": "下移規則", "下载失败:{message}": "下載失敗:{message}", "不一致": "不一致", "不做会话识别,每条请求都重新按策略选路。": "不做會話識別,每條請求都重新按策略選路。", "不做图片兼容": "不做圖片相容", "不可用": "不可用", "不在这里列出的提供商都用上面的全局配置;「跟随默认」取消这一家的单独配置。带「网关自带」的家列在这里:那段文本是网关自己装上去的(可关、可改正文),与「模式」是两件事。": "不在這裡列出的提供商都用上面的全域配置;「跟隨預設」取消這一家的單獨配置。帶「閘道器自帶」的家列在這裡:那段文本是閘道器自己裝上去的(可關、可改正文),與「模式」是兩件事。", "与网关同源的面板;完整管理功能在桌面端": "與網關同源的面板;完整管理功能在桌面版", "两张开关分别管桌面端(应用内窗口,也包含开启局域网访问后从其他设备访问的那份面板)与网页端(Docker / 服务端自托管的浏览器面板)。默认都开启;桌面端只在本机使用、嫌验证耗时可以关掉,网页端暴露在网络上,建议保持开启。": "兩張開關分別管桌面版(應用內視窗,也包含開啟區域網路存取後從其他裝置存取的那份面板)與網頁端(Docker / 服務端自託管的瀏覽器面板)。預設都開啟;桌面版只在本機使用、嫌驗證耗時可以關掉,網頁端暴露在網路上,建議保持開啟。", "两次输入的备份密码不一致": "兩次輸入的備份密碼不一致", "两次输入的新密码不一致": "兩次輸入的新密碼不一致", "两次重试之间的等待时间,两项共用,可填 0–300 秒。": "兩次重試之間的等待時間,兩項共用,可填 0–300 秒。", "两种方式不会互相自动切换。": "兩種方式不會互相自動切換。", "两组设置分别用于桌面端托管的网页管理面板与网页端(Docker / 服务端)的浏览器面板。是否可被其他设备访问取决于网络访问与防火墙设置,不限于局域网。两端默认都开启人机验证,建议保持开启。": "兩組設定分別用於桌面端代管的網頁管理面板與網頁端(Docker / 伺服器端)的瀏覽器面板。是否可被其他裝置存取取決於網路存取與防火牆設定,不限於區域網路。兩端預設都開啟人機驗證,建議保持開啟。", "中转丢失原始标识时,无法自动推断背后的软件。": "中轉丟失原始標識時,無法自動推斷背後的軟體。", "为了安全,开启前需要先注册一个": "為了安全,開啟前需要先註冊一個", "主进程未返回启动设置,请更新桌面端后重试": "主程序未返回啟動設定,請更新桌面版後重試", "主进程桥不可用": "主程序橋不可用", "主题": "主題", "也可以从请求详情直接添加规则。": "也可以從請求詳情直接新增規則。", "事件日志": "事件日誌", "事件日志保留天数": "事件日誌保留天數", "云同步": "雲同步", "产品名": "產品名", "产品名不能包含斜杠或版本号,请改用前缀匹配": "產品名不能包含斜槓或版本號,請改用字首匹配", "人机验证": "人機驗證", "人机验证失败": "人機驗證失敗", "人机验证已完成": "人機驗證已完成", "人机验证还在计算,请稍候": "人機驗證還在計算,請稍候", "仅在同一会话、同一问题和相同权限范围内复用;追问新细节会重新识读。缓存只存在本机内存。": "僅在同一會話、同一問題和相同許可權範圍內複用;追問新細節會重新識讀。快取只存在本機記憶體。", "仅在账号、配置、签到或余额等实质内容变化时上传;导出时间或查询时间单独变化不会触发上传。": "僅在帳號、設定、簽到或餘額等實質內容變更時上傳;匯出時間或查詢時間單獨變更不會觸發上傳。", "仅处理本次转发副本,不修改客户端选择,也不删除当前或历史图片。": "僅處理本次轉發副本,不修改客戶端選擇,也不刪除當前或歷史圖片。", "仅影响面板登录与注册,不影响 API Key 调用。保存后生效,已登录会话不会退出。": "僅影響面板登入與註冊,不影響 API Key 呼叫。儲存後生效,已登入的工作階段不會登出。", "仅本机": "僅本機", "仅用现有数据、不联网刷新": "僅用現有資料、不聯網重新整理", "从云端恢复": "從雲端恢復", "从桌面图标启动,全屏、无地址栏。想卸载:长按图标删除,或清除浏览器站点数据。": "從桌面圖示啟動,全屏、無位址列。想解除安裝:長按圖示刪除,或清除瀏覽器站點資料。", "优先使用当前路由内的视觉模型": "優先使用當前路由內的視覺模型", "优先在当前路由内找可用的视觉模型,找不到就用 {model} 直接回答,不再回到原模型。": "優先在目前路由內找可用的視覺模型,找不到就用 {model} 直接回答,不再回到原模型。", "会恢复默认的分组、顺序与显隐设置。你自建的分组会被删除(组内菜单不会丢)。": "會恢復預設的分組、順序與顯隱設定。你自建的分組會被刪除(組內選單不會丟)。", "会话图片压缩设置已刷新": "會話圖片壓縮設定已重新整理", "位置": "位置", "位置与端口": "位置與連接埠", "使用 Rust 正则语法,保存时由后端校验;不支持环视和反向引用。": "使用 Rust 正則語法,儲存時由後端校驗;不支援環視和反向引用。", "使用中文单位(亿 / 万)": "使用中文單位(億 / 萬)", "使用本地量级词(万 / 亿式)": "使用本地量級詞(萬 / 億式)", "使用默认值": "使用預設值", "侧边栏布局模块未加载(ui/sidebar-layout.js 应在 app.js 之前引入)。": "側邊欄佈局模組未載入(ui/sidebar-layout.js 應在 app.js 之前引入)。", "侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。": "側邊欄沒有顯示任何選單。到「設定 → 顯示 → 側邊欄選單」裡開啟需要的項。", "侧边栏菜单": "側邊欄選單", "保存上游原始报文(请求头、请求体、响应头、响应体)": "儲存上游原始報文(請求頭、請求體、響應頭、響應體)", "保存单独配置": "儲存單獨配置", "保存后以这份为准(优先于上面的文件);清空回到文件 / 内置默认。": "儲存後以這份為準(優先於上面的檔案);清空回到檔案 / 內建預設。", "保存后以这里的文本为准": "儲存後以這裡的文本為準", "保存后只对之后的新请求生效;两种方式不会互相自动切换。": "儲存後只對之後的新請求生效;兩種方式不會互相自動切換。", "保存后对下一轮补货立即生效,不用重启。守卫跑在应用界面里:轻量模式关窗销毁界面期间无法铸造,走套餐池(Start Plan)通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。": "儲存後對下一輪補貨立即生效,不用重啟。守衛跑在應用介面裡:輕量模式關窗銷燬介面期間無法鑄造,走套餐池(Start Plan)通道的請求會以 503 落進請求日誌(寫明原因),重新開啟介面即自動恢復。", "保存后对下一轮补货立即生效,不用重启。守卫跑在应用界面里:轻量模式关窗销毁界面期间无法铸造,走活动套餐通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。": "儲存後對下一輪補貨立即生效,不用重啟。守衛跑在應用介面裡:輕量模式關窗銷燬介面期間無法鑄造,走活動套餐通道的請求會以 503 落進請求日誌(寫明原因),重新開啟介面即自動恢復。", "保存后应用将重启以生效。": "儲存後應用將重啟以生效。", "保存后状态读取立即生效。后台不会自动生成令牌;需要人机验证时,在账号的「套餐明细」中主动开始验证。模型请求免验证时无需保持界面打开。": "儲存後狀態讀取立即生效。背景不會自動產生權杖;需要人機驗證時,在帳號的「套餐明細」中主動開始驗證。模型請求免驗證時無需保持介面開啟。", "保存后立即生效,不用重启(下一个请求就用新模式)。": "儲存後立即生效,不用重啟(下一個請求就用新模式)。", "保存后立即生效,不用重启:策略与粘性作用于**下一次**转发的选路,进行中的请求不受影响。": "儲存後立即生效,不用重啟:策略與粘性作用於**下一次**轉發的選路,進行中的請求不受影響。", "保存后立即生效,不用重启;次数用尽仍失败时,错误原样返回给客户端。": "儲存後立即生效,不用重啟;次數用盡仍失敗時,錯誤原樣返回給客戶端。", "保存后立即生效,不用重启;超时按上游失败处理(计入请求日志的「错误」列,并按「请求重试」的设置决定是否重试)。": "儲存後立即生效,不用重啟;超時按上游失敗處理(計入請求日誌的「錯誤」列,並按「請求重試」的設定決定是否重試)。", "保存后立即生效:保留天数和数量上限同时生效,调小任一项会立即清理超出的历史数据,且不可恢复。": "儲存後立即生效:保留天數和數量上限同時生效,調小任一項會立即清理超出的歷史資料,且無法還原。", "保存后立即生效:改小保留天数会立刻删除超出的历史数据,且不可恢复。": "儲存後立即生效:改小保留天數會立刻刪除超出的歷史資料,且不可恢復。", "保存在当前网关,登录页也会公开显示。不会更改安装包、快捷方式、系统托盘图标或软件版本信息。": "儲存在目前的閘道,登入頁也會公開顯示。不會更改安裝套件、捷徑、系統匣圖示或軟體版本資訊。", "保存并重启": "儲存並重啟", "保存设置": "儲存設定", "保持当前路由范围,不跳到其他路由组。": "保持目前路由範圍,不跳到其他路由組。", "保活换行丢弃": "保活換行丟棄", "保留原图和对话,由视觉模型直接回答本次请求。": "保留原圖和對話,由視覺模型直接回答本次請求。", "保留原图,选择视觉模型": "保留原圖,選擇視覺模型", "保留图片中的文字、代码、数字、布局与状态。识读失败就停止,不删图后继续回答。": "保留圖片中的文字、程式碼、數字、佈局與狀態。識讀失敗就停止,不刪圖後繼續回答。", "保留天数已刷新": "保留天數已重新整理", "保留旧版配置兼容,当前不会自动连铸。每次点击「开始验证」只取得一枚令牌,失败或取消后停止。": "保留舊版設定相容,目前不會自動連續產生權杖。每次點擊「開始驗證」只取得一枚權杖,失敗或取消後停止。", "保留草稿并读取最新设置": "保留草稿並讀取最新設定", "修改密码": "修改密碼", "修改密码需要输入当前密码;修改成功后,其他设备 / 浏览器上的登录会立即失效,当前这条会话保留。": "修改密碼需要輸入當前密碼;修改成功後,其他裝置 / 瀏覽器上的登入會立即失效,當前這條會話保留。", "修改模型单独配置": "修改模型單獨配置", "值": "值", "值与默认值相同的行不占覆盖(存的是「改过的键」,不是全量配置);值留空保存表示这个头不发送,删除改过的行表示回落默认值。改完立即生效,不用重启。": "值與預設值相同的行不佔覆蓋(存的是「改過的鍵」,不是全量配置);值留空儲存表示這個頭不傳送,刪除改過的行表示回落預設值。改完立即生效,不用重啟。", "值(留空 = 不发送)": "值(留空 = 不傳送)", "停止并说明原因": "停止並說明原因", "像素": "畫素", "允许其他设备访问前,需要设置面板管理员账号与密码。注册完成后会继续开启流程并重启应用。": "允許其他裝置存取前,需要設定面板管理員帳號與密碼。註冊完成後會繼續開啟流程並重新啟動應用程式。", "允许其他设备访问网关": "允許其他裝置存取閘道", "允许局域网内的设备访问网关": "允許區域網路內的裝置存取閘道器", "允许无 Key 裸跑": "允許無 Key 裸跑", "允许浏览器里的页面跨来源调用网关(/v1/*)": "允許瀏覽器裡的頁面跨來源呼叫閘道器(/v1/*)", "允许的域名": "允許的網域", "先发送原图,明确拒图后补救": "先發送原圖,明確拒圖後補救", "先在当前路由范围内找可用的视觉模型,这次请求由视觉模型直接回答,不回原模型;{fallback}": "先在當前路由範圍內找可用的視覺模型,這次請求由視覺模型直接回答,不回原模型;{fallback}", "先把图片交给视觉模型读一遍,再让原模型结合读到的内容回答。": "先把圖片交給視覺模型讀一遍,再讓原模型結合讀到的內容回答。", "全局配置": "全域配置", "全部已配置": "全部已配置", "全部数据(账号、事件日志、请求记录、调试报文、设置)保存在配置目录下的 agent2api.db 这一个 SQLite 数据库里。备份时只需拷贝这个文件;更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "全部資料(帳號、事件日誌、請求記錄、除錯報文、設定)儲存在配置目錄下的 agent2api.db 這一個 SQLite 資料庫裡。備份時只需複製這個檔案;更換儲存位置請設定環境變數 AGENT2API_PROXY_HOME 後重啟程式。", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 中,加密密钥单独保存在库外。跨机器备份请使用「整库备份 / 恢复」,不要只复制数据库。更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "全部資料(帳號、事件日誌、請求記錄、除錯報文、設定)統一儲存在配置目錄下的 agent2api.db 中,加密金鑰單獨儲存在庫外。跨機器備份請使用「整庫備份 / 恢復」,不要只複製資料庫。更換儲存位置請設定環境變數 AGENT2API_PROXY_HOME 後重啟程式。", "全部数据(账号、事件日志、请求记录、调试报文、设置)统一保存在配置目录下的 agent2api.db 这一个 SQLite 数据库里。备份时只需拷贝这个文件;更换保存位置请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "全部資料(帳號、事件日誌、請求記錄、除錯報文、設定)統一儲存在配置目錄下的 agent2api.db 這一個 SQLite 資料庫裡。備份時只需複製這個檔案;更換儲存位置請設定環境變數 AGENT2API_PROXY_HOME 後重啟程式。", "全部角色": "全部角色", "全部角色沿用原有行为,包含思考内容和工具参数;指定角色时只改消息正文,未选角色及思考内容、工具参数保持原样。": "全部角色沿用原有行為,包含思考內容和工具參數;指定角色時只改訊息正文,未選角色及思考內容、工具參數保持原樣。", "共享视觉模型已变更,请重新确认并保存,避免把图片交给未经确认的模型。": "共享視覺模型已變更,請重新確認並儲存,避免把圖片交給未經確認的模型。", "共用设置:{providers}": "共用設定:{providers}", "关闭后不再提供网页管理面板,本机桌面程序仍可正常管理;已开启的 API 转发不受影响。": "關閉後不再提供網頁管理面板,本機桌面程式仍可正常管理;已開啟的 API 轉發不受影響。", "关闭后手动上传 / 下载也会被拒绝。": "關閉後手動上傳 / 下載也會被拒絕。", "关闭后网关只监听 127.0.0.1,其他设备将无法直接连接,网页管理面板也会一并关闭。已配置的网关 Key 与账号不受影响。": "關閉後閘道只監聽 127.0.0.1,其他裝置將無法直接連線,網頁管理面板也會一併關閉。已設定的閘道 Key 與帳號不受影響。", "关闭后网关回到只监听 127.0.0.1,局域网内的设备将无法继续访问;已配置的网关 Key 与账号都不受影响。": "關閉後網關回到只監聽 127.0.0.1,區域網路內的裝置將無法繼續存取;已配置的閘道器 Key 與帳號都不受影響。", "关闭后,管理界面不再从局域网提供,只有本机的桌面程序可以管理;已开启的 API 转发不受影响。": "關閉後,管理介面不再從區域網路提供,只有本機的桌面程式可以管理;已開啟的 API 轉發不受影響。", "关闭局域网访问": "關閉區域網路存取", "关闭并重启": "關閉並重啟", "关闭思考": "關閉思考", "关闭窗口即退出程序,后台转发随之中断": "關閉視窗即退出程式,後臺轉發隨之中斷", "关闭窗口时最小化到托盘": "關閉視窗時最小化到托盤", "关闭窗口时程序不退出,转发继续在后台运行;退出请用托盘菜单": "關閉視窗時程式不退出,轉發繼續在後臺執行;退出請用托盤選單", "关闭网络访问": "關閉網路存取", "其余沿用上面的全局配置": "其餘沿用上面的全域配置", "兼容处理最长等待": "相容處理最長等待", "兼容处理最长等待(秒)": "相容處理最長等待(秒)", "内容拦截降级": "內容攔截降級", "内置客户端": "內建客戶端", "内置规则": "內建規則", "内置识别、自定义规则与来源声明": "內建識別、自定義規則與來源宣告", "内置软件标识规则": "內建軟體標識規則", "内置默认": "內建預設", "内置默认提示词": "內建預設提示詞", "再输入一次新密码": "再輸入一次新密碼", "凭据类请求头已脱敏。": "憑據類請求頭已脫敏。", "凭证只保存在这台手机上,按服务器分别存放": "憑證只儲存在這臺手機上,按伺服器分別存放", "出问题时把这一页截图,或点「复制全部信息」把文本贴进反馈,一般就能定位到大致原因。": "出問題時把這一頁截圖,或點「複製全部資訊」把文本貼進反饋,一般就能定位到大致原因。", "分享图标在 Safari 底部工具栏中间": "分享圖示在 Safari 底部工具欄中間", "分组名": "分組名", "分组名,例如「常用」": "分組名,例如「常用」", "切换视觉模型": "切換視覺模型", "切换视觉模型 · 视觉模型回答": "切換視覺模型 · 視覺模型回答", "切换视觉模型配置": "切換視覺模型配置", "切换账号重试次数": "切換帳號重試次數", "刚刚从 models.dev 拉到的最新数据": "剛剛從 models.dev 拉到的最新資料", "删除 {code}": "刪除 {code}", "删除分组": "刪除分組", "删除分组「{name}」?组内 {n} 个菜单会移到「{target}」,不会丢。": "刪除分組「{name}」?組內 {n} 個選單會移到「{target}」,不會丟。", "删除匹配内容": "刪除匹配內容", "删除后不再接受这个分类的来源声明,历史记录保留原来的名称和用量。": "刪除後不再接受這個分類的來源宣告,歷史記錄保留原來的名稱和用量。", "删除后,新请求不再使用这条规则;历史记录保持不变。": "刪除後,新請求不再使用這條規則;歷史記錄保持不變。", "删除客户端分类": "刪除客戶端分類", "删除状态码 {code}": "刪除狀態碼 {code}", "删除空分组「{name}」?": "刪除空分組「{name}」?", "删除识别规则": "刪除識別規則", "删除这个分组(组内菜单移到第一组)": "刪除這個分組(組內選單移到第一組)", "刷新": "重新整理", "刷新失败:{message}": "重新整理失敗:{message}", "前台运行": "前臺執行", "前缀": "字首", "剥离上游审核黑名单指纹(改写请求体里的模板句与表头)": "剝離上游稽核黑名單指紋(改寫請求體裡的模板句與表頭)", "功能建议": "功能建議", "加入备选": "加入備選", "加密备份必填,旧 SQL 可留空": "加密備份必填,舊 SQL 可留空", "包含": "包含", "包含日志与调试报文": "包含日誌與除錯報文", "包含:{items}": "包含:{items}", "匹配内容": "匹配內容", "匹配内容不能为空,且最多 {max} 个字符": "匹配內容不能為空,且最多 {max} 個字元", "匹配内容不能为空,最长 256 个字符": "匹配內容不能為空,最長 256 個字元", "匹配原文含零宽空格,词表预览用 \\u{200b} 标出;编辑时保留该字符。": "匹配原文含零寬空格,詞表預覽用 \\u{200b} 標出;編輯時保留該字元。", "匹配方式": "匹配方式", "区域(Region)": "區域(Region)", "华为云 OBS": "華為雲 OBS", "单独指定视觉模型": "單獨指定視覺模型", "单轮铸造上限": "單輪鑄造上限", "占用大小": "佔用大小", "历史未记录识别依据": "歷史未記錄識別依據", "原因未知": "原因未知", "原来的「全局方式 + 模型单独配置」已按相同意思自动填成下面的模型名单,可以照用也可以重新调整;改动一处之后就会按新形式存下来。": "原來的「全域方式 + 模型單獨設定」已按相同意思自動填成下面的模型名單,可以照用也可以重新調整;改動一處之後就會按新形式存下來。", "原模型不能直接看图": "原模型不能直接看圖", "原模型根据识读内容回答": "原模型根據識讀內容回答", "去反馈": "去反饋", "去申请": "去申請", "反馈与需求": "反饋與需求", "发现缺货时一轮最多铸几个(连铸之间固定隔 500 毫秒)。默认 1 个:SDK 同一实例连铸容易互相干扰。调大补货更快,但单轮连铸越多越容易触发上游风控。可填 1–5。": "發現缺貨時一輪最多鑄幾個(連鑄之間固定隔 500 毫秒)。預設 1 個:SDK 同一例項連鑄容易互相干擾。調大補貨更快,但單輪連鑄越多越容易觸發上游風控。可填 1–5。", "取消勾选后只备份业务数据(账号、配置与余额记录),文件显著变小;事件日志、请求统计与调试报文不会进备份文件。": "取消勾選後只備份業務資料(帳號、配置與餘額記錄),檔案顯著變小;事件日誌、請求統計與除錯報文不會進備份檔案。", "变更网页管理面板": "變更網頁管理面板", "只列单独配置过的家,其余沿用上面的全局配置": "只列單獨配置過的家,其餘沿用上面的全域配置", "只对「排队制」的上游生效:模型繁忙时上游不报错,只回一句「建议 N 秒后再来」,网关按建议时长等一会儿再发同一请求,等满次数仍排不上才把「排队中」作为错误返回(HTTP 503,文案会说明这不是登录态或额度问题)。等待发生在首个字节之前,吃的是「等待响应超时」那份预算 —— 两项设置一起决定一次请求最多卡多久;排队不会标记账号限额、也不会换账号(换谁都一样在排队)。保存后对下一个请求立即生效,不用重启。": "只對「排隊制」的上游生效:模型繁忙時上游不報錯,只回一句「建議 N 秒後再來」,閘道器按建議時長等一會兒再發同一請求,等滿次數仍排不上才把「排隊中」作為錯誤返回(HTTP 503,文案會說明這不是登入態或額度問題)。等待發生在首個位元組之前,吃的是「等待響應超時」那份預算 —— 兩項設定一起決定一次請求最多卡多久;排隊不會標記帳號限額、也不會換帳號(換誰都一樣在排隊)。儲存後對下一個請求立即生效,不用重啟。", "只影响识读那一步的思考深度。": "隻影響識讀那一步的思考深度。", "只影响读图那一步的思考深度;两块设置统一用这个选择。": "只影響讀圖那一步的思考深度;兩塊設定統一用這個選擇。", "只有已安装、启用并声明了设置项的提供商会出现在这里。可前往插件页检查安装与启用状态。": "只有已安裝、啟用並宣告了設定項目的供應商會出現在這裡。可前往外掛頁檢查安裝與啟用狀態。", "只沿用模型与思考等级,不借用视觉服务的内部 Key;仍受当前请求权限限制。": "只沿用模型與思考等級,不借用視覺服務的內部 Key;仍受當前請求許可權限制。", "只清掉这个浏览器存的 Key,不影响网关": "只清掉這個瀏覽器存的 Key,不影響閘道器", "只覆盖指定提供商的指定模型,其余跟随全局。": "只覆蓋指定提供商的指定模型,其餘跟隨全域。", "可识别标识": "可識別標識", "可跨提供商多选;只处理这些模型看不了的图片。": "可跨提供商多選;只處理這些模型看不了的圖片。", "可跨提供商多选;这些模型的请求会整体改交视觉模型。": "可跨提供商多選;這些模型的請求會整體改交視覺模型。", "可选。部分服务(如中国科技云数据胶囊)会按 User-Agent 校验凭据绑定的客户端类型,此时填写包含该类型名的字符串(例如 rclone/v1.67.0)。留空则维持默认。": "可選。部分服務(如中國科技雲資料膠囊)會按 User-Agent 校驗憑據繫結的客戶端型別,此時填寫包含該型別名的字串(例如 rclone/v1.67.0)。留空則維持預設。", "合计只累加当前筛选后可见的账号,筛选、搜索一改数字就跟着变。": "合計只累加目前篩選後可見的帳號,篩選、搜尋一改數字就跟著變。", "合计按整组统计(默认):不受筛选、搜索影响,被筛掉与已禁用的账号也计入。": "合計按整組統計(預設):不受篩選、搜尋影響,被篩掉與已停用的帳號也計入。", "同一会话、同一问题、相同权限范围内复用;追问新细节会重新识读。": "同一對話、同一問題、相同權限範圍內重用;追問新細節會重新識讀。", "同一会话、同一问题、相同权限范围内复用;追问新细节会重新识读,缓存只在本机内存。": "同一會話、同一問題、相同許可權範圍內複用;追問新細節會重新識讀,快取只在本機記憶體。", "同一会话在 5 分钟内尽量跟住同一个账号;停了 5 分钟再发就算新会话。多数场景用它 —— 多轮对话少换号,也不至于把账号焊死。": "同一會話在 5 分鐘內儘量跟住同一個帳號;停了 5 分鐘再發就算新會話。多數場景用它 —— 多輪對話少換號,也不至於把帳號焊死。", "同一会话在 6 小时内跟住同一个账号;适合一坐几个小时的长会话,上游的上下文缓存能吃到更多。": "同一會話在 6 小時內跟住同一個帳號;適合一坐幾個小時的長會話,上游的上下文快取能吃到更多。", "同一提供商的同一模型不能重复配置": "同一提供商的同一模型不能重複配置", "同一账号重试次数": "同一帳號重試次數", "同时开放网页管理面板": "同時開放網頁管理面板", "同步密码": "同步密碼", "名单最多 {max} 个状态码": "名單最多 {max} 個狀態碼", "后端没有返回版本信息": "後端沒有返回版本資訊", "含固定项「设置」,不可整组隐藏(可以单独隐藏组内其它菜单)": "含固定項「設定」,不可整組隱藏(可以單獨隱藏組內其它選單)", "启动与托盘": "啟動與托盤", "启动时间": "啟動時間", "启用云同步": "啟用雲同步", "启用图片兼容": "啟用圖片相容", "启用规则": "啟用規則", "启用规则:{name}": "啟用規則:{name}", "命中依据:{header} · {pattern}": "命中依據:{header} · {pattern}", "命中这些上游状态码的失败不在同一账号重发,直接换下一个账号继续试(换号占用「切换账号重试次数」,换满仍失败才把错误原样返回给客户端)。输入 100–599 的状态码后回车添加,点 × 或退格删除;默认 402(积分不足)。清空全部表示任何错误都照常重试。": "命中這些上游狀態碼的失敗不在同一帳號重發,直接換下一個帳號繼續試(換號佔用「切換帳號重試次數」,換滿仍失敗才把錯誤原樣返回給客戶端)。輸入 100–599 的狀態碼後回車新增,點 × 或退格刪除;預設 402(積分不足)。清空全部表示任何錯誤都照常重試。", "品牌 Logo": "品牌 Logo", "品牌设置": "品牌設定", "品牌设置已保存": "品牌設定已儲存", "品牌预览": "品牌預覽", "哪些模型用这种方式": "哪些模型用這種方式", "固定": "固定", "图标经 Magpie 引入,未单独记录 Lobe Icons 的图标版本;以上版本仅用于核对许可。": "圖示經 Magpie 引入,未單獨記錄 Lobe Icons 的圖示版本;以上版本僅用於核對授權。", "图片与相关对话将交给配置的视觉模型处理,可能增加等待时间和费用。请确认这些服务可以接收你的图片。": "圖片與相關對話將交給配置的視覺模型處理,可能增加等待時間和費用。請確認這些服務可以接收你的圖片。", "图片先交给 {model} 识读,再由原模型回答这次请求。": "圖片先交給 {model} 識讀,再由原模型回答這次請求。", "图片兼容": "圖片相容", "图片兼容当前是关闭的:下面两块设置照样能改、会被保留,但不会对任何请求生效。": "圖片相容目前是關閉的:下面兩塊設定照樣能改、會被保留,但不會對任何請求生效。", "图片兼容设置已保存,仅对新请求生效。": "圖片相容設定已儲存,僅對新請求生效。", "图片兼容设置读取失败": "圖片相容設定讀取失敗", "图片压缩": "圖片壓縮", "图片最长边超过这个值就等比缩小(只缩不放)。默认 2048,可填 256–8192 —— 多数视觉模型在这个量级已经够用,调小更省流量、但细节会丢。": "圖片最長邊超過這個值就等比縮小(只縮不放)。預設 2048,可填 256–8192 —— 多數視覺模型在這個量級已經夠用,調小更省流量、但細節會丟。", "图片能力未知时": "圖片能力未知時", "图片过大、格式错误或下载失败不会被当作模型不支持图片。": "圖片過大、格式錯誤或下載失敗不會被當作模型不支援圖片。", "在同一个账号上原地重发几次(不含首发;整条请求共用一份,用完后换来的账号只发一次就继续换)。可填 0–10,0 表示失败立即换号。": "在同一個帳號上原地重發幾次(不含首發;整條請求共用一份,用完後換來的帳號只發一次就繼續換)。可填 0–10,0 表示失敗立即換號。", "在这里直接编辑提示词正文:保存后以这份文本为准(优先于上面的提示词文件),清空则回到文件 / 内置默认。改一个字不必再去编辑器里开文件。": "在這裡直接編輯提示詞正文:儲存後以這份文本為準(優先於上面的提示詞檔案),清空則回到檔案 / 內建預設。改一個字不必再去編輯器裡開檔案。", "在途请求": "在途請求", "地址格式不对。填「IP 或域名:端口」,可带 http:// 或 https://,例如 192.168.1.23:3065": "地址格式不對。填「IP 或域名:連接埠」,可帶 http:// 或 https://,例如 192.168.1.23:3065", "坚果云": "堅果雲", "坚果云需使用「第三方应用密码」(账户信息 → 安全选项里生成),地址必须是 /dav/ 下的目录。": "堅果雲需使用「第三方應用密碼」(帳戶資訊 → 安全選項裡生成),地址必須是 /dav/ 下的目錄。", "填「IP 或域名:端口」。协议可写 http:// 或 https://,不写默认 http;http 不写端口默认 3065,https 默认 443。地址里的 /m、/v1 会自动去掉。": "填「IP 或域名:連接埠」。協議可寫 http:// 或 https://,不寫預設 http;http 不寫連接埠預設 3065,https 預設 443。地址裡的 /m、/v1 會自動去掉。", "处理方式": "處理方式", "处理示意": "處理示意", "备份中…": "備份中…", "备份包含账号凭证、网关 Key、GitHub 令牌与云同步凭据的恢复密钥,整个文件受备份密码保护。请分开保管文件与密码;忘记密码无法恢复。": "備份包含帳號憑證、閘道器 Key、GitHub 權杖與雲同步憑據的恢復金鑰,整個檔案受備份密碼保護。請分開保管檔案與密碼;忘記密碼無法恢復。", "备份密码": "備份密碼", "备份密码不能超过 1024 字节": "備份密碼不能超過 1024 位元組", "备份密码至少需要 12 位,建议使用较长且不重复的密码": "備份密碼至少需要 12 位,建議使用較長且不重複的密碼", "备份整库": "備份整庫", "备份文件内含全部账号凭证、网关 API Key 与面板管理员凭据,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "備份檔案內含全部帳號憑證、閘道器 API Key 與面板管理員憑據,可直接用於登入。請妥善保管,不要外傳或上傳到公共位置。", "备选模型": "備選模型", "备选顺序 · 从上到下依次尝试": "備選順序 · 從上到下依次嘗試", "复制全部信息": "複製全部資訊", "复制给客户端": "複製給客戶端", "复用与备选、单独配置、兼容细节": "複用與備選、單獨配置、相容細節", "复用相同图片的识读结果": "複用相同圖片的識讀結果", "外观": "外觀", "外观 · 接入 · 关于": "外觀 · 接入 · 關於", "多个客户端标识冲突": "多個客戶端標識衝突", "天": "天", "天数": "天數", "失败 {n} 个": "失敗 {n} 個", "失败 {n} 个:{detail}": "失敗 {n} 個:{detail}", "失败后最多再换几个账号试(填 N = 最多换 N 个,首发那个不算)。换到同一家名下另一个账号、或换到另一家,都各算一次;换满仍失败就返回错误。可填 0–10,0 表示失败立即报错。": "失敗後最多再換幾個帳號試(填 N = 最多換 N 個,首發那個不算)。換到同一家名下另一個帳號、或換到另一家,都各算一次;換滿仍失敗就返回錯誤。可填 0–10,0 表示失敗立即報錯。", "如果主库已被替换到一半,替换前的数据在 backups/ 目录里仍可整文件拷回。": "如果主庫已被替換到一半,替換前的資料在 backups/ 目錄裡仍可整檔案拷回。", "存储桶(Bucket)": "儲存桶(Bucket)", "存储概况已刷新": "儲存概況已重新整理", "安全": "安全", "安装到主屏幕": "安裝到主螢幕", "安装到桌面": "安裝到桌面", "安装包形态": "安裝包形態", "完全相同": "完全相同", "官方原文只有一句:声明自己是 ZCode。": "官方原文只有一句:宣告自己是 ZCode。", "实际处理:": "實際處理:", "客户端 system 原样出站。": "客戶端 system 原樣出站。", "客户端 system 原样出站(只靠指纹脱敏改写模板句)。": "客戶端 system 原樣出站(只靠指紋脫敏改寫模板句)。", "客户端专用请求头": "客戶端專用請求頭", "客户端名称": "客戶端名稱", "客户端名称不能为空,最长 80 个字符": "客戶端名稱不能為空,最長 80 個字元", "客户端名称重复或与内置名称冲突": "客戶端名稱重複或與內建名稱衝突", "客户端标识无效或重复": "客戶端標識無效或重複", "客户端识别": "客戶端識別", "客户端识别入口尚未就绪,请刷新页面后重试": "客戶端識別入口尚未就緒,請重新整理頁面後重試", "客户端识别设置读取失败": "客戶端識別設定讀取失敗", "客户端(Claude Code / Codex 等 CLI)会在 system 提示词里注入几十句固定模板,上游按逐字匹配审核,命中就整单拦截(HTTP 400)。指纹脱敏能改写实测命中过的那几句,但换一个客户端版本就可能冒出新的。这里可以把 system 整段换成网关自己那份:①「透传」= 不动客户端 system(默认,行为与之前完全一致);②「替换」= 删掉客户端所有 system / developer 消息,换成网关的提示词(客户端项目规范随之消失);③「追加」= 在开头连续 system 块之后插入一条网关提示词,既有消息逐字不动(客户端规范与网关提示词并用)。那份提示词有两个来源:提示词文件(留空用内置默认),或直接在界面上编辑正文 —— 编辑过就以那份正文为准(优先于文件),清空则回到文件 / 内置默认。另外,透传 / 追加模式下撞了内容拦截(多半是指纹误报)时,网关会自动换一段最小中性提示词重试一次,并把「降级期」开到次日 00:00 —— 期间所有请求直接带中性提示词出门,不再先撞一次 400;这里能看见并提前解除它。上面几项是**默认值**:想给某个提供商单独配,用下面的「按提供商」加一行(带「网关自带」的家默认就列在那里)—— 不同的上游对这些内容的接受程度不一样。": "客戶端(Claude Code / Codex 等 CLI)會在 system 提示詞裡注入幾十句固定模板,上游按逐字匹配稽核,命中就整單攔截(HTTP 400)。指紋脫敏能改寫實測命中過的那幾句,但換一個客戶端版本就可能冒出新的。這裡可以把 system 整段換成閘道器自己那份:①「透傳」= 不動客戶端 system(預設,行為與之前完全一致);②「替換」= 刪掉客戶端所有 system / developer 訊息,換成閘道器的提示詞(客戶端專案規範隨之消失);③「追加」= 在開頭連續 system 塊之後插入一條閘道器提示詞,既有訊息逐字不動(客戶端規範與閘道器提示詞並用)。那份提示詞有兩個來源:提示詞檔案(留空用內建預設),或直接在介面上編輯正文 —— 編輯過就以那份正文為準(優先於檔案),清空則回到檔案 / 內建預設。另外,透傳 / 追加模式下撞了內容攔截(多半是指紋誤報)時,閘道器會自動換一段最小中性提示詞重試一次,並把「降級期」開到次日 00:00 —— 期間所有請求直接帶中性提示詞出門,不再先撞一次 400;這裡能看見並提前解除它。上面幾項是**預設值**:想給某個提供商單獨配,用下面的「按提供商」加一行(帶「閘道器自帶」的家預設就列在那裡)—— 不同的上游對這些內容的接受程度不一樣。", "客户端(Claude Code / Codex 等 CLI)会往 system 里塞几十句固定模板,上游逐字审核,命中就整单拦截(HTTP 400)。「模式」决定网关怎么处理这份 system:透传 = 原样不动(默认);替换 = 删掉客户端的 system / developer,换成网关提示词;追加 = 保留客户端内容,只在最前面插一条网关提示词。网关提示词来自「提示词文件」或界面里编辑的正文(正文优先,清空回到文件 / 内置默认)。撞上拦截时会自动改用一段最小中性提示词,次日 00:00 自动恢复,也可以随时解除。": "客戶端(Claude Code / Codex 等 CLI)會往 system 裡塞幾十句固定模板,上游逐字稽核,命中就整單攔截(HTTP 400)。「模式」決定閘道器怎麼處理這份 system:透傳 = 原樣不動(預設);替換 = 刪掉客戶端的 system / developer,換成閘道器提示詞;追加 = 保留客戶端內容,只在最前面插一條閘道器提示詞。閘道器提示詞來自「提示詞檔案」或介面裡編輯的正文(正文優先,清空回到檔案 / 內建預設)。撞上攔截時會自動改用一段最小中性提示詞,次日 00:00 自動恢復,也可以隨時解除。", "家之间仍按优先级,只有同一家内部轮流用各账号 —— 想优先用某几家、又不愿把某一家的某个账号焊死时用它。": "家之間仍按優先順序,只有同一家內部輪流用各帳號 —— 想優先用某幾家、又不願把某一家的某個帳號焊死時用它。", "家内轮询": "家內輪詢", "容器内更新": "容器內更新", "密码、文件或密钥校验失败时不会替换主库;替换阶段失败会自动尝试还原,实际结果以上方错误说明为准。": "密碼、檔案或金鑰校驗失敗時不會替換主庫;替換階段失敗會自動嘗試還原,實際結果以上方錯誤說明為準。", "密码加密 · 包含恢复密钥": "密碼加密 · 包含恢復金鑰", "密码至少 8 位": "密碼至少 8 位", "对话里内嵌的 base64 大图(截图、照片)既撑大请求体,也拉高按像素折算的上游计费。开启后,网关在转发前把超过阈值的图等比缩到长边上限、重新存成 JPEG —— 只改发给上游的副本,请求日志里保存的仍是你发来的原图。同一张原图在多轮对话里重复出现时复用上一次的压缩结果,不会每轮重算。http 链接图片、GIF 动图、SVG 一律不动;压完反而更大的图也保留原图。只作用在对话场景,生图与图片编辑不受影响。默认开启;不想要的话把开关关掉即可。": "對話裡內嵌的 base64 大圖(截圖、照片)既撐大請求體,也拉高按畫素折算的上游計費。開啟後,閘道器在轉發前把超過閾值的圖等比縮到長邊上限、重新存成 JPEG —— 只改發給上游的副本,請求日誌裡儲存的仍是你發來的原圖。同一張原圖在多輪對話裡重複出現時複用上一次的壓縮結果,不會每輪重算。http 連結圖片、GIF 動圖、SVG 一律不動;壓完反而更大的圖也保留原圖。只作用在對話場景,生圖與圖片編輯不受影響。預設開啟;不想要的話把開關關掉即可。", "导入前会把本机的 account.key 改名备份(account.key.bak-时间戳),不会直接删除。": "匯入前會把本機的 account.key 改名備份(account.key.bak-時間戳),不會直接刪除。", "导入完成:{summary}": "匯入完成:{summary}", "导入密钥失败:{message}": "匯入金鑰失敗:{message}", "导入密钥并继续": "匯入金鑰並繼續", "导入账号": "匯入帳號", "导出中…": "匯出中…", "导出会把全部账号与自定义提供商定义写入一个 JSON 文件,可以拷到另一台机器上导入后继续使用。导入采用合并策略:同提供商下按业务身份(UID / userId / apiKey 等)去重 —— 已存在的账号只更新凭证,保留本机原有的优先级顺序;新账号追加到转发顺序末尾,不会抢占当前正在使用的账号;自定义提供商定义按 id 合并,本机缺失时自动补建。": "匯出會把全部帳號與自定義提供商定義寫入一個 JSON 檔案,可以拷到另一臺機器上匯入後繼續使用。匯入採用合併策略:同提供商下按業務身份(UID / userId / apiKey 等)去重 —— 已存在的帳號只更新憑證,保留本機原有的優先順序順序;新帳號追加到轉發順序末尾,不會搶佔當前正在使用的帳號;自定義提供商定義按 id 合併,本機缺失時自動補建。", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义": "匯出檔案內含 accessToken / refreshToken / apiKey 等憑證與自定義提供商定義", "导出文件内含 accessToken / refreshToken / apiKey 等凭证与自定义提供商定义,可直接用于登录。请妥善保管,不要外传或上传到公共位置。": "匯出檔案內含 accessToken / refreshToken / apiKey 等憑證與自定義提供商定義,可直接用於登入。請妥善保管,不要外傳或上傳到公共位置。", "导出账号": "匯出帳號", "将数据库和恢复凭证所需的密钥一起保存为密码加密的 .a2ab 备份,可在 Windows、macOS 或 Linux 上恢复,无需手工复制密钥。恢复时整体替换账号、配置、日志与桌面设置,并使用目标机器的密钥重新加密凭证,不覆盖本机已有钥匙。可取消包含日志以减小文件;旧 .sql 备份仍可导入。恢复前自动保留安全备份,完成后需要重新登录管理面板。": "將資料庫和恢復憑證所需的金鑰一起儲存為密碼加密的 .a2ab 備份,可在 Windows、macOS 或 Linux 上恢復,無需手工複製金鑰。恢復時整體替換帳號、配置、日誌與桌面設定,並使用目標機器的金鑰重新加密憑證,不覆蓋本機已有鑰匙。可取消包含日誌以減小檔案;舊 .sql 備份仍可匯入。恢復前自動保留安全備份,完成後需要重新登入管理面板。", "尚未注册管理员。开启「网关 → 网络访问 → 允许其他设备访问网关」时会引导注册,也可以从登录页注册。": "尚未註冊管理員。開啟「閘道 → 網路存取 → 允許其他裝置存取閘道」時會引導註冊,也可以從登入頁註冊。", "尚未注册管理员:管理接口不需要登录。开启「允许局域网访问」时会引导注册,也可以从登录页注册。": "尚未註冊管理員:管理介面不需要登入。開啟「允許區域網路存取」時會引導註冊,也可以從登入頁註冊。", "尚未配置视觉分析模型": "尚未配置視覺分析模型", "局域网开放后,管理接口要求登录。请设置管理员账号与密码,注册完成会直接继续开启流程。": "區域網路開放後,管理介面要求登入。請設定管理員帳號與密碼,註冊完成會直接繼續開啟流程。", "局域网访问": "區域網路存取", "工具用法与环境说明那一大段。": "工具用法與環境說明那一大段。", "已为「{label}」单独配置提示词": "已為「{label}」單獨配置提示詞", "已作为独立应用运行": "已作為獨立應用執行", "已使用本机密钥重新加密 {n} 项凭证,原有密钥未被覆盖。": "已使用本機金鑰重新加密 {n} 項憑證,原有金鑰未被覆蓋。", "已保存 {count} / {limit} 条报文(超出后丢弃最旧的)。": "已儲存 {count} / {limit} 條報文(超出後丟棄最舊的)。", "已保存的值不符合当前插件规则,请修改或恢复默认值。": "已儲存的值不符合目前外掛規則,請修改或還原預設值。", "已保存,留空则不修改": "已儲存,留空則不修改", "已保存,留空沿用": "已儲存,留空沿用", "已关闭": "已關閉", "已关闭 models.dev 联网刷新": "已關閉 models.dev 聯網重新整理", "已关闭。{note}": "已關閉。{note}", "已关闭「{label}」的网关自带提示词:能否通过上游校验取决于上游当前口径": "已關閉「{label}」的閘道器自帶提示詞:能否通過上游校驗取決於上游當前口徑", "已关闭会话图片压缩": "已關閉會話圖片壓縮", "已关闭出站指纹脱敏": "已關閉出站指紋脫敏", "已关闭开发者角色兼容": "已關閉開發者角色相容", "已关闭第三方模型回答完自动折叠过程": "已關閉第三方模型回答完自動摺疊過程", "已关闭网关跨域访问": "已關閉閘道器跨域存取", "已关闭:不额外补阶段标记,由客户端决定过程展示。": "已關閉:不額外補階段標記,由客戶端決定過程展示。", "已删除分组「{name}」": "已刪除分組「{name}」", "已取消「{label}」的单独配置": "已取消「{label}」的單獨配置", "已取消安装": "已取消安裝", "已取消导入": "已取消匯入", "已取消导出": "已取消匯出", "已取消恢复": "已取消恢復", "已启用 {count} 条规则,应用于{scope}。": "已啟用 {count} 條規則,應用於{scope}。", "已启用登录": "已啟用登入", "已复制全部版本信息": "已複製全部版本資訊", "已应用": "已應用", "已开启": "已開啟", "已开启:为正常完成的 Codex 回答补阶段标记。": "已開啟:為正常完成的 Codex 回答補階段標記。", "已开启:其他设备把 API 地址指向 {url}{panel}。": "已開啟:其他裝置把 API 地址指向 {url}{panel}。", "已开启:监听 0.0.0.0,允许其他设备访问。": "已開啟:監聽 0.0.0.0,允許其他裝置存取。", "已恢复默认分组:概览 / 转发链路 / 诊断 / 系统": "已恢復預設分組:概覽 / 轉發鏈路 / 診斷 / 系統", "已截断": "已截斷", "已指定出口": "已指定出口", "已接管": "已接管", "已改回内置默认提示词": "已改回內建預設提示詞", "已新建分组「{name}」,点组头的 + 把菜单移进来": "已新建分組「{name}」,點組頭的 + 把選單移進來", "已清掉「{label}」界面编辑的正文": "已清掉「{label}」介面編輯的正文", "已清掉界面编辑的提示词(回落文件 / 内置默认)": "已清掉介面編輯的提示詞(回落檔案 / 內建預設)", "已清空,回落插件内置默认值": "已清空,回落外掛內建預設值", "已清除本机保存的 API Key": "已清除本機儲存的 API Key", "已生效": "已生效", "已用时 {time}": "已用時 {time}", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。": "已自動切換到最小中性提示詞(撞了上游內容攔截,多半是 system 指紋誤報),到 {until} 自動解除。", "已自动切换到最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "已自動切換到最小中性提示詞(撞了上游內容攔截,多半是 system 指紋誤報),到 {until} 自動解除。期間本模式自己的提示詞不會發出;把提示詞改好後可以立即解除。", "已自动改用最小中性提示词(撞了上游内容拦截,多半是 system 指纹误报),到 {until} 自动解除。": "已自動改用最小中性提示詞(撞了上游內容攔截,多半是 system 指紋誤報),到 {until} 自動解除。", "已自定义": "已自訂", "已运行": "已執行", "已退出登录": "已退出登入", "已隐藏": "已隱藏", "巴西葡萄牙语": "巴西葡萄牙語", "希望接入新的提供商或模型": "希望接入新的提供商或模型", "库中 schema": "庫中 schema", "库主文件的大小(不含运行期间的 WAL 临时文件,退出时已自动并回)。": "庫主檔案的大小(不含執行期間的 WAL 臨時檔案,退出時已自動並回)。", "库存目标": "庫存目標", "应用提供商": "應用提供商", "应用版本:{version}": "應用版本:{version}", "应用状态": "應用狀態", "应用窗口": "應用視窗", "建立上游 TCP/TLS 连接或代理隧道的最大等待时间(秒),默认 30 秒,范围 1~3600。": "建立上游 TCP/TLS 連線或代理隧道的最大等待時間(秒),預設 30 秒,範圍 1~3600。", "开发构建": "開發構建", "开发者角色兼容": "開發者角色相容", "开发者角色兼容设置已刷新": "開發者角色相容設定已重新整理", "开启前需要注册面板管理员,已注册会跳过此步骤。管理接口需要管理员会话或网关 Key;API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。": "開啟前需要註冊面板管理員,已註冊會略過此步驟。管理介面需要管理員工作階段或閘道 Key;API 呼叫需要已啟用的閘道 Key,沒有時會自動建立一把「預設」Key。", "开启后新发生的请求才会被记录(已经过去的请求补不回来)。报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "開啟後新發生的請求才會被記錄(已經過去的請求補不回來)。報文統一存放在本地資料庫裡,只保留最近 500 條(超出後丟棄最舊的),條數見左側「資料 → 資料儲存」的「除錯報文」。", "开启后新发生的请求才会被记录(已经过去的请求补不回来),请求日志的「预览对话」也随之开始保存原始正文。上游报文统一存放在本地数据库里,只保留最近 500 条(超出后丢弃最旧的),条数见左侧「数据 → 数据存储」的「调试报文」。": "開啟後新發生的請求才會被記錄(已經過去的請求補不回來),請求日誌的「預覽對話」也隨之開始儲存原始正文。上游報文統一存放在本地資料庫裡,只保留最近 500 條(超出後丟棄最舊的),條數見左側「資料 → 資料儲存」的「除錯報文」。", "开启后监听所有 IPv4 网卡(0.0.0.0),并不局限于局域网,也不会自动开放到公网;实际访问范围取决于网络与防火墙设置。修改后需要重启应用。": "開啟後監聽所有 IPv4 網路介面卡(0.0.0.0),並不侷限於區域網路,也不會自動開放到公網;實際存取範圍取決於網路與防火牆設定。修改後需要重新啟動應用程式。", "开启后网关将监听所有 IPv4 网卡(0.0.0.0),访问范围不再限于本机,也不局限于局域网。是否能从公网访问取决于网络与防火墙设置。": "開啟後閘道將監聽所有 IPv4 網路介面卡(0.0.0.0),存取範圍不再限於本機,也不侷限於區域網路。是否能從公網存取取決於網路與防火牆設定。", "开启后网关将监听所有网卡,同一局域网内的设备即可把 API 地址指向本机 IP 一起使用;管理接口从此要求管理员会话或网关 Key,转发接口在没有一把启用的 Key 时也会拒绝服务(届时会自动创建一把名为「默认」的 Key)。": "開啟後閘道器將監聽所有網路卡,同一區域網路內的裝置即可把 API 地址指向本機 IP 一起使用;管理介面從此要求管理員會話或閘道器 Key,轉發介面在沒有一把啟用的 Key 時也會拒絕服務(屆時會自動建立一把名為「預設」的 Key)。", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 套餐池(Start Plan)」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "開啟後,關閉視窗不只是隱藏,而是把介面視窗整個銷燬:底層的 WebView2 六個常駐程序(約 200MB 記憶體)隨之退出,閘道器轉發、定時簽到、餘額查詢都在後臺程序裡繼續,不受影響;需要介面時點托盤圖示重新開啟(WebView 冷啟動約 1 秒)。注意:介面銷燬期間「ZCode 套餐池(Start Plan)」通道的驗證碼權杖由介面鑄造,無法補充 —— 走該通道的請求會以 503 落進請求日誌(寫明原因),重新開啟介面即自動恢復。此開關只在「關閉視窗時最小化到托盤」開啟時有意義,最小化視窗不受影響。", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 活动套餐」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。与「开机自动启动」同时开启时,开机后也不建界面(只留托盘与后台进程),点托盘才打开 —— 效果与关窗后一致。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "開啟後,關閉視窗不只是隱藏,而是把介面視窗整個銷燬:底層的 WebView2 六個常駐程序(約 200MB 記憶體)隨之退出,閘道器轉發、定時簽到、餘額查詢都在後臺程序裡繼續,不受影響;需要介面時點托盤圖示重新開啟(WebView 冷啟動約 1 秒)。注意:介面銷燬期間「ZCode 活動套餐」通道的驗證碼權杖由介面鑄造,無法補充 —— 走該通道的請求會以 503 落進請求日誌(寫明原因),重新開啟介面即自動恢復。與「開機自動啟動」同時開啟時,開機後也不建介面(只留托盤與後臺程序),點托盤才打開 —— 效果與關窗後一致。此開關只在「關閉視窗時最小化到托盤」開啟時有意義,最小化視窗不受影響。", "开启后,关闭窗口不只是隐藏,而是把界面窗口整个销毁:底层的 WebView2 六个常驻进程(约 200MB 内存)随之退出,网关转发、定时签到、余额查询都在后台进程里继续,不受影响;需要界面时点托盘图标重新打开(WebView 冷启动约 1 秒)。注意:界面销毁期间「ZCode 活动套餐」通道的验证码令牌由界面铸造,无法补充 —— 走该通道的请求会以 503 落进请求日志(写明原因),重新打开界面即自动恢复。此开关只在「关闭窗口时最小化到托盘」开启时有意义,最小化窗口不受影响。": "開啟後,關閉視窗不只是隱藏,而是把介面視窗整個銷燬:底層的 WebView2 六個常駐程序(約 200MB 記憶體)隨之退出,閘道器轉發、定時簽到、餘額查詢都在後臺程序裡繼續,不受影響;需要介面時點托盤圖示重新開啟(WebView 冷啟動約 1 秒)。注意:介面銷燬期間「ZCode 活動套餐」通道的驗證碼權杖由介面鑄造,無法補充 —— 走該通道的請求會以 503 落進請求日誌(寫明原因),重新開啟介面即自動恢復。此開關只在「關閉視窗時最小化到托盤」開啟時有意義,最小化視窗不受影響。", "开启后,关闭窗口会销毁界面并释放 WebView 进程,网关转发、定时签到、余额查询仍在后台继续。ZCode 模型请求免验证时不受影响;上游要求人机验证时,需要重新打开界面,在账号的「套餐明细」中主动完成验证。此开关只在「关闭窗口时最小化到托盘」开启时有意义。": "開啟後,關閉視窗會銷毀介面並釋放 WebView 程序,閘道轉發、定時簽到、餘額查詢仍在背景繼續。ZCode 模型請求免驗證時不受影響;上游要求人機驗證時,需要重新開啟介面,在帳號的「套餐明細」中主動完成驗證。此開關只在「關閉視窗時最小化到系統匣」開啟時有意義。", "开启后,新发生的请求会保存上游调试报文与下游正文,历史请求无法补录。上游调试报文只保留最近 500 条;两侧条数可在「数据 → 数据存储」查看。关闭开关不会删除已保存的报文,可在请求日志中选择「仅清空报文原文」一起清理。": "開啟後,新發生的請求會儲存上游除錯報文與下游正文,歷史請求無法補錄。上游除錯報文只保留最近 500 條;兩側條數可在「資料 → 資料儲存」檢視。關閉開關不會刪除已儲存的報文,可在請求日誌中選擇「僅清空報文原文」一起清理。", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。": "開啟後,登入頁在瀏覽器後臺自動完成驗證(對真人無感),而指令碼每次嘗試都要先算一道題 —— 暴力破解與搶注的成本顯著上升。僅影響面板的登入 / 註冊,與 API 客戶端的 API Key 無關。", "开启后,登录页在浏览器后台自动完成验证(对真人无感),而脚本每次尝试都要先算一道题 —— 暴力破解与抢注的成本显著上升。仅影响面板的登录 / 注册,与 API 客户端的 API Key 无关。桌面端与网页端各自独立:桌面端主要服务本机与局域网,网页端(Docker / 服务端)直接暴露在网络上的登录页风险更高,建议保持开启。": "開啟後,登入頁在瀏覽器後臺自動完成驗證(對真人無感),而指令碼每次嘗試都要先算一道題 —— 暴力破解與搶注的成本顯著上升。僅影響面板的登入 / 註冊,與 API 客戶端的 API Key 無關。桌面版與網頁端各自獨立:桌面版主要服務本機與區域網路,網頁端(Docker / 服務端)直接暴露在網路上的登入頁風險更高,建議保持開啟。", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "開啟後,閘道器會把每次轉發**發給上游的請求**(請求頭 + 請求體)與**上游返回的響應**(狀態碼 + 響應頭 + 響應體)完整儲存到本地,供請求日誌頁的「詳情」檢視。請求頭裡的 Authorization、Cookie、API Key 等憑據欄位一律替換成 [redacted],不會明文落盤;請求體與響應體按原樣儲存(可能包含你的對話內容)。報文只保留最近 500 條,超出後丟棄最舊的。這是排障用的臨時開關,不需要時建議關閉。", "开启后,网关会把每次转发**发给上游的请求**(请求头 + 请求体)与**上游返回的响应**(状态码 + 响应头 + 响应体)完整保存到本地,供请求日志页的「详情」查看;请求日志详情的「预览对话」也依赖本开关 —— 它保存的是客户端发来的请求体与网关下发的响应体(两侧各截断到 128 KiB),不开这个开关时预览对话没有数据可看。请求头里的 Authorization、Cookie、API Key 等凭据字段一律替换成 [redacted],不会明文落盘;请求体与响应体按原样保存(可能包含你的对话内容)。上游报文只保留最近 500 条,超出后丢弃最旧的。这是排障用的临时开关,不需要时建议关闭。": "開啟後,閘道器會把每次轉發**發給上游的請求**(請求頭 + 請求體)與**上游返回的響應**(狀態碼 + 響應頭 + 響應體)完整儲存到本地,供請求日誌頁的「詳情」檢視;請求日誌詳情的「預覽對話」也依賴本開關 —— 它儲存的是客戶端發來的請求體與閘道器下發的響應體(兩側各截斷到 128 KiB),不開這個開關時預覽對話沒有資料可看。請求頭裡的 Authorization、Cookie、API Key 等憑據欄位一律替換成 [redacted],不會明文落盤;請求體與響應體按原樣儲存(可能包含你的對話內容)。上游報文只保留最近 500 條,超出後丟棄最舊的。這是排障用的臨時開關,不需要時建議關閉。", "开启后,能连接到网关的设备可通过浏览器访问网页管理面板,需使用管理员账号登录。访问范围与网关相同,并不局限于局域网。": "開啟後,能連線到閘道的裝置可透過瀏覽器存取網頁管理面板,需使用管理員帳號登入。存取範圍與閘道相同,並不侷限於區域網路。", "开启后,调用方可以用专用请求头声明已登记的客户端名称。这不是身份认证,只用于日志和统计,不会获得额外权限。": "開啟後,呼叫方可以用專用請求頭宣告已登記的客戶端名稱。這不是身份認證,只用於日誌和統計,不會獲得額外許可權。", "开启局域网访问": "開啟區域網路存取", "开启来源声明": "開啟來源宣告", "开启网络访问": "開啟網路存取", "开放后,局域网内其他设备的浏览器打开本机 IP 即可进入管理面板(需管理员账号登录)。": "開放後,區域網路內其他裝置的瀏覽器開啟本機 IP 即可進入管理面板(需管理員帳號登入)。", "开机自动启动": "開機自動啟動", "开源许可": "開源授權", "开(最多 {n} 轮)": "開(最多 {n} 輪)", "归属客户端": "歸屬客戶端", "当前三段都是官方原文。": "當前三段都是官方原文。", "当前不可用": "當前不可用", "当前后端不支持词表编辑与提供商范围,请更新后端后重试。": "當前後端不支援詞表編輯與提供商範圍,請更新後端後重試。", "当前固定为浅色模式,不随系统变化。": "當前固定為淺色模式,不隨系統變化。", "当前固定为深色模式,不随系统变化。": "當前固定為深色模式,不隨系統變化。", "当前密码": "當前密碼", "当前已改过:{edited}。": "當前已改過:{edited}。", "当前形态": "當前形態", "当前按 100% 显示(默认比例)。": "當前按 100% 顯示(預設比例)。", "当前按 k / M 缩写显示(如 1.20M / 8.4k)。": "當前按 k / M 縮寫顯示(如 1.20M / 8.4k)。", "当前按 {n}% 显示。": "當前按 {n}% 顯示。", "当前按「万 / 亿」式本地量级词显示(如 1.2亿 / 8400万)。": "當前按「萬 / 億」式本地量級詞顯示(如 1.2億 / 8400萬)。", "当前是透传模式:存下来也不会发出,切成「替换 / 追加」之后才生效。": "當前是透傳模式:存下來也不會發出,切成「替換 / 追加」之後才生效。", "当前显示为「1.20M / 8.4k / 1.2B」这类英文缩写。": "目前顯示為「1.20M / 8.4k / 1.2B」這類英文縮寫。", "当前显示为「1.2亿 / 8400万」这类中文量级。": "當前顯示為「1.2億 / 8400萬」這類中文量級。", "当前样本结果:{name}": "當前樣本結果:{name}", "当前正在使用": "目前正在使用", "当前浏览器以管理员身份登录着本面板。「退出登录」会撤销这台设备的登录会话(30 天内的自动续期一并失效),需要重新输入账号密码;其他已登录的设备不受影响。": "當前瀏覽器以管理員身份登入著本面板。「退出登入」會撤銷這臺裝置的登入會話(30 天內的自動續期一併失效),需要重新輸入帳號密碼;其他已登入的裝置不受影響。", "当前版本不支持品牌设置": "目前版本不支援品牌設定", "当前环境不支持局域网访问设置": "當前環境不支援區域網路存取設定", "当前环境不支持整库备份": "當前環境不支援整庫備份", "当前环境不支持整库备份(仅桌面端可用)": "當前環境不支援整庫備份(僅桌面版可用)", "当前环境不支持整库恢复": "當前環境不支援整庫恢復", "当前环境不支持整库恢复(仅桌面端可用)": "當前環境不支援整庫恢復(僅桌面版可用)", "当前环境不支持网络访问设置": "目前環境不支援網路存取設定", "当前环境不支持读取版本信息(桥接方法缺失)": "當前環境不支援讀取版本資訊(橋接方法缺失)", "当前生效值:{value}": "目前生效值:{value}", "当前生效的正文来自{source}{file}。保存后这一份会盖过提示词文件与内置默认{note}。": "當前生效的正文來自{source}{file}。儲存後這一份會蓋過提示詞檔案與內建預設{note}。", "当前界面": "當前介面", "当前管理员:{name}": "當前管理員:{name}", "当前设置已保存": "當前設定已儲存", "当前跟随操作系统的深浅色设置,系统切换时界面会自动跟上。": "當前跟隨作業系統的深淺色設定,系統切換時介面會自動跟上。", "当前路由内的可用视觉模型": "當前路由內的可用視覺模型", "待迁移旧数据": "待遷移舊資料", "待配置": "待配置", "忘记密码时无法在界面里找回:需要停掉程序后,从数据库删除管理员记录(kv 表的 panelAdmin 键),重启后按首次使用重新注册。具体命令与各形态的库文件路径见 docs 目录下的「重置管理员」文档。": "忘記密碼時無法在介面裡找回:需要停掉程式後,從資料庫刪除管理員記錄(kv 表的 panelAdmin 鍵),重啟後按首次使用重新註冊。具體命令與各形態的庫檔案路徑見 docs 目錄下的「重置管理員」文件。", "思考等级、图片能力未知、等待上限": "思考等級、圖片能力未知、等待上限", "总耗时 {time}": "總耗時 {time}", "恢复中…": "恢復中…", "恢复中,请稍候…": "恢復中,請稍候…", "恢复仍在进行中…": "恢復仍在進行中…", "恢复失败": "恢復失敗", "恢复失败:{message}": "恢復失敗:{message}", "恢复完成": "恢復完成", "恢复官方原文": "恢復官方原文", "恢复插件默认值": "還原外掛預設值", "恢复整库": "恢復整庫", "恢复整库备份": "恢復整庫備份", "恢复期间请不要关闭应用或退出登录 —— 中途中断会让数据停在一个不完整的状态。完成后本页会自动刷新。": "恢復期間請不要關閉應用或退出登入 —— 中途中斷會讓資料停在一個不完整的狀態。完成後本頁會自動重新整理。", "恢复没有完成": "恢復沒有完成", "恢复进度": "恢復進度", "恢复默认": "恢復預設", "恢复默认 Logo": "還原預設 Logo", "恢复默认侧边栏": "恢復預設側邊欄", "恢复默认品牌": "還原預設品牌", "恢复默认词表": "恢復預設詞表", "想回到原来那份,把这里清空再保存即可(不会删掉你配的文件路径)。": "想回到原來那份,把這裡清空再儲存即可(不會刪掉你配的檔案路徑)。", "想要的新功能或改进想法": "想要的新功能或改進想法", "所有未单独配置的提供商都用这一份": "所有未單獨配置的提供商都用這一份", "所有菜单都已在这一组": "所有選單都已在這一組", "手机端只做查看与高频操作;添加账号、编辑凭证、改写客户端配置仍需桌面端。": "手機端只做檢視與高頻操作;新增帳號、編輯憑證、改寫客戶端配置仍需桌面版。", "手机端可管理所连接网关的账号、签到与插件,并使用提供商声明的动态登录入口;其余既有添加入口、编辑凭证和改写客户端配置仍需桌面面板。": "手機端可管理所連線閘道的帳號、簽到與外掛,並使用提供商宣告的動態登入入口;其餘既有新增入口、編輯憑證及改寫用戶端設定仍需桌面面板。", "手机端可管理所连接网关的账号、签到与插件;添加账号、编辑凭证、改写客户端配置仍需桌面端。": "手機端可管理所連線閘道器的帳號、簽到與外掛;新增帳號、編輯憑證、改寫客戶端配置仍需桌面版。", "托管网页界面": "託管網頁介面", "找不到可用视觉模型时": "找不到可用視覺模型時", "找不到可用视觉模型时会先停止并说明原因。": "找不到可用視覺模型時會先停止並說明原因。", "找不到就停止并说明原因。": "找不到就停止並說明原因。", "找不到就按指定备选顺序尝试(还没加备选)。": "找不到就按指定備選順序嘗試(還沒加備選)。", "找不到就按顺序试这 {count} 个备选(先是 {model})。": "找不到就按順序試這 {count} 個備選(先是 {model})。", "把 Base URL 复制给客户端": "把 Base URL 複製給客戶端", "把地址里的 your-server 与 USERNAME 换成你自己的;目录不存在时会自动创建。": "把地址裡的 your-server 與 USERNAME 換成你自己的;目錄不存在時會自動建立。", "把整份数据库(账号、网关配置、事件日志、请求统计、调试报文与桌面设置)导出成一个 SQL 文件,恢复时整体替换本机全部数据 —— 与上面「账号导入 / 导出」的逐条合并是两种语义:恢复会连配置、日志与当前启用状态一起换成备份那台机器的状态。导出默认包含日志与调试报文(文件可能很大),不需要时可以取消勾选只备业务数据。恢复前会自动把当前数据备份到配置目录的 backups/ 下,恢复后需要重新登录管理面板。": "把整份資料庫(帳號、閘道器配置、事件日誌、請求統計、除錯報文與桌面設定)匯出成一個 SQL 檔案,恢復時整體替換本機全部資料 —— 與上面「帳號匯入 / 匯出」的逐條合併是兩種語義:恢復會連配置、日誌與當前啟用狀態一起換成備份那臺機器的狀態。匯出預設包含日誌與除錯報文(檔案可能很大),不需要時可以取消勾選只備業務資料。恢復前會自動把當前資料備份到配置目錄的 backups/ 下,恢復後需要重新登入管理面板。", "把整次请求交给视觉模型,由它直接回答,不再回到原模型。": "把整次請求交給視覺模型,由它直接回答,不再回到原模型。", "把菜单移入 {name}": "把選單移入 {name}", "把菜单移入「{name}」": "把選單移入「{name}」", "把账号、网关配置、自定义提供商、Agent 配置、代理池 / 订阅、签到与余额记录同步到 WebDAV 或 S3 兼容存储,换台机器后一键取回。事件日志、请求明细、调试报文与面板登录态不在同步范围内(它们是本机的运行痕迹)。上传的账号凭证仍是加密形态,解密用的账号密钥由「同步密码」单独加密后一并上传 —— 同步密码不会保存到云端,换机下载时需要重新输入。": "把帳號、閘道器配置、自定義提供商、Agent 配置、代理池 / 訂閱、簽到與餘額記錄同步到 WebDAV 或 S3 相容儲存,換臺機器後一鍵取回。事件日誌、請求明細、除錯報文與面板登入態不在同步範圍內(它們是本機的執行痕跡)。上傳的帳號憑證仍是加密形態,解密用的帳號金鑰由「同步密碼」單獨加密後一併上傳 —— 同步密碼不會儲存到雲端,換機下載時需要重新輸入。", "把路径里的主目录显示成 ~,截图分享时不暴露用户名": "把路徑裡的主目錄顯示成 ~,截圖分享時不暴露使用者名稱", "把路径里的主目录(如 C:\\Users\\你的用户名)显示成 ~,截图分享时不暴露用户名。只影响本页显示与复制,不改任何文件。": "把路徑裡的主目錄(如 C:\\Users\\你的使用者名稱)顯示成 ~,截圖分享時不暴露使用者名稱。隻影響本頁顯示與複製,不改任何檔案。", "报表天数": "報表天數", "报表页的热力图与按天趋势,默认 99999 天(近似全量保留),可填 1–99999 天。": "報表頁的熱力圖與按天趨勢,預設 99999 天(近似全量保留),可填 1–99999 天。", "拖动分组 {name}": "拖動分組 {name}", "拖动左侧 ⠿ 调整顺序(菜单可以跨组拖);拨开关控制显隐;点分组名可重命名;组头的 + 把别的菜单移进来;眼睛按钮隐藏整组。改动即时生效并记住,左侧侧边栏就是结果。键盘也能排序:把手聚焦后按 Alt+↑ / ↓。": "拖動左側 ⠿ 調整順序(選單可以跨組拖);撥開關控制顯隱;點分組名可重新命名;組頭的 + 把別的選單移進來;眼睛按鈕隱藏整組。改動即時生效並記住,左側側邊欄就是結果。鍵盤也能排序:把手聚焦後按 Alt+↑ / ↓。", "拖动菜单 {name}": "拖動選單 {name}", "拖动调整分组顺序(Alt+↑ / ↓ 也可)": "拖動調整分組順序(Alt+↑ / ↓ 也可)", "拖动调整顺序,可跨组(Alt+↑ / ↓ 也可)": "拖動調整順序,可跨組(Alt+↑ / ↓ 也可)", "指定备选仍受当前请求权限和路由范围限制,路由组请求不会跳到组外。不会转为辅助识图继续。": "指定備選仍受當前請求許可權和路由範圍限制,路由組請求不會跳到組外。不會轉為輔助識圖繼續。", "指定提供商": "指定提供商", "指定角色": "指定角色", "指定错误码直接换号": "指定錯誤碼直接換號", "指纹脱敏": "指紋脫敏", "指纹脱敏会在转发前按词表顺序改写请求消息中的文本,包括对话内容、思考内容和工具调用参数。默认词表包含客户端模板句与计费表头的精确替换、正则删除规则,可以新增、编辑、删除、启停和调整顺序;替换内容留空表示删除匹配内容。默认应用全部提供商,也可指定多家。改动只作用于发给上游的副本,响应内容不变。编辑后点击「保存设置」,下一次请求生效;清空词表表示不做任何指纹改写,恢复默认只重置词表。": "指紋脫敏會在轉發前按詞表順序改寫請求訊息中的文本,包括對話內容、思考內容和工具呼叫引數。預設詞表包含客戶端模板句與計費表頭的精確替換、正則刪除規則,可以新增、編輯、刪除、啟停和調整順序;替換內容留空表示刪除匹配內容。預設應用全部提供商,也可指定多家。改動只作用於發給上游的副本,響應內容不變。編輯後點擊「儲存設定」,下一次請求生效;清空詞表表示不做任何指紋改寫,恢復預設只重置詞表。", "指纹脱敏设置仅本次运行生效,写入数据库失败,请检查配置目录": "指紋脫敏設定僅本次執行生效,寫入資料庫失敗,請檢查配置目錄", "指纹脱敏设置已刷新": "指紋脫敏設定已重新整理", "按下面两块设置处理图片;关闭后设置全部保留。": "依下面兩塊設定處理圖片;關閉後設定全部保留。", "按列表自上而下匹配": "按列表自上而下匹配", "按列表自上而下匹配,位于来源声明之后、内置规则之前;可用于给难认的标识钉规则。": "按列表自上而下匹配,位於來源宣告之後、內建規則之前;可用於給難認的標識釘規則。", "按原文精确匹配,区分大小写;不会自动去掉首尾空白。": "按原文精確匹配,區分大小寫;不會自動去掉首尾空白。", "按天聚合保留天数": "按天聚合保留天數", "按指定备选顺序尝试": "按指定備選順序嘗試", "按提供商查看和调整专属选项": "依供應商查看與調整專屬選項", "按提供商筛选设置": "依供應商篩選設定", "按提供商管理专属选项,作用于当前网关中该提供商的所有账号。": "依供應商管理專屬選項,套用至目前閘道中該供應商的所有帳號。", "按提供商配置": "按提供商配置", "按每条请求的软件标识识别客户端,不依赖 API Key。规则修改只影响新请求,内置规则随软件更新,自定义规则参与备份与云同步。": "按每條請求的軟體標識識別客戶端,不依賴 API Key。規則修改隻影響新請求,內建規則隨軟體更新,自定義規則參與備份與雲同步。", "换一台服务器": "換一臺伺服器", "排队等待": "排隊等待", "排队等待次数": "排隊等待次數", "排队等待秒数": "排隊等待秒數", "排队等待设置已刷新": "排隊等待設定已重新整理", "探测与领取时会用 {version} 作为客户端版本号": "探測與領取時會用 {version} 作為客戶端版本號", "接入": "接入", "接受调用方来源声明": "接受呼叫方來源宣告", "接管回答的模型": "接管回答的模型", "控制主侧边栏显示哪些菜单、按什么顺序、怎么分组。隐藏只影响导航显示,不会撤销页面访问权限;被隐藏的页面仍可通过地址直接打开。": "控制主側邊欄顯示哪些選單、按什麼順序、怎麼分組。隱藏隻影響導航顯示,不會撤銷頁面存取許可權;被隱藏的頁面仍可通過地址直接開啟。", "控制报表与请求日志里 Token 读数的写法:开启后按「万 / 亿」式的本地量级词显示(简体为万 / 亿,繁体为萬 / 億,日文为万 / 億,韩文为만 / 억),关闭则用 k / M 缩写(与上游文档、接口字段的写法一致)。英文 / 葡语的本地量级词就是 k / M,这项对它们没有区别。只影响显示口径,不改变任何统计与存储的数值。": "控制報表與請求日誌裡 Token 讀數的寫法:開啟後按「萬 / 億」式的本地量級詞顯示(簡體為萬 / 億,繁體為萬 / 億,日文為萬 / 億,韓文為만 / 억),關閉則用 k / M 縮寫(與上游文件、介面欄位的寫法一致)。英文 / 葡語的本地量級詞就是 k / M,這項對它們沒有區別。隻影響顯示口徑,不改變任何統計與儲存的數值。", "控制报表与请求日志里 Token 读数的写法:开启后按中文量级显示(1.2亿 / 8400万),关闭则用 k / M / B 缩写(与上游文档、接口字段的写法一致)。这只影响显示口径,不改变任何统计与存储的数值。": "控制報表與請求日誌裡 Token 讀數的寫法:開啟後按中文量級顯示(1.2億 / 8400萬),關閉則用 k / M / B 縮寫(與上游文件、介面欄位的寫法一致)。這只影響顯示口徑,不改變任何統計與儲存的數值。", "控制界面的深浅色,与左侧边栏底部的三个主题按钮是同一个设置(改哪一处,另一处立刻跟上)。「跟随系统」会随操作系统当前的浅色 / 深色自动切换,并在系统主题变化时即时跟上;选「浅色」或「深色」则把界面固定在该模式,不再随系统变化。窗口标题栏的深浅色会一并同步,不会出现深色界面配一条浅色标题栏的情况。": "控制介面的深淺色,與左側邊欄底部的三個主題按鈕是同一個設定(改哪一處,另一處立刻跟上)。「跟隨系統」會隨作業系統當前的淺色 / 深色自動切換,並在系統主題變化時即時跟上;選「淺色」或「深色」則把介面固定在該模式,不再隨系統變化。視窗標題欄的深淺色會一併同步,不會出現深色介面配一條淺色標題欄的情況。", "提供商与模型": "提供商與模型", "提供商专属设置": "供應商專屬設定", "提供商当前不可用,未保存的修改已保留;恢复插件后可继续编辑。": "供應商目前無法使用,尚未儲存的修改已保留;恢復外掛後可繼續編輯。", "提供商设置已保存": "供應商設定已儲存", "提供商设置返回格式无效,请刷新后重试": "供應商設定回傳格式無效,請重新整理後再試。", "提建议": "提建議", "提示词文件": "提示詞檔案", "提示词文件已更新": "提示詞檔案已更新", "提示词正文": "提示詞正文", "提示词正文已更新": "提示詞正文已更新", "插件或设置已变化,请放弃修改并刷新后重新编辑。": "外掛或設定已變更,請放棄修改並重新整理後再編輯。", "操作系统": "作業系統", "支持 .a2ab 加密备份和旧 .sql 文件;旧 SQL 不包含恢复密钥,跨机器导入仍需原机密钥。": "支援 .a2ab 加密備份和舊 .sql 檔案;舊 SQL 不包含恢復金鑰,跨機器匯入仍需原機金鑰。", "支持 PNG、JPG、WebP,最大 2 MiB、4096 × 4096 像素;自动缩小至 512 像素以内,建议使用正方形图片。": "支援 PNG、JPG、WebP,最大 2 MiB、4096 × 4096 像素;自動縮小至 512 像素以內,建議使用正方形圖片。", "改动仍保存在本机,修复网络或凭据后下一次改动会自动重试,也可以手动点「上传到云端」。": "改動仍儲存在本機,修復網路或憑據後下一次改動會自動重試,也可以手動點「上傳到雲端」。", "改动仍保存在本机,系统会延长等待并自动重试;修复网络或凭据后,也可以手动点「上传到云端」。": "變更仍儲存在本機,系統會延長等待並自動重試;修復網路或憑證後,也可以手動點「上傳到雲端」。", "改完立即生效,不用重启(下一个请求就用新模式)。降级是自动的临时状态,解除后本模式自己的提示词立刻恢复。": "改完立即生效,不用重啟(下一個請求就用新模式)。降級是自動的臨時狀態,解除後本模式自己的提示詞立刻恢復。", "放大或缩小整个界面(文字与控件一起变),效果与浏览器 Ctrl +/- 相同:共 11 档,立即生效并记住。": "放大或縮小整個介面(文字與控制元件一起變),效果與瀏覽器 Ctrl +/- 相同:共 11 檔,立即生效並記住。", "放弃修改并刷新": "放棄修改並重新整理", "数据": "資料", "数据保留": "資料保留", "数据保留设置已刷新": "資料保留設定已重新整理", "数据存储": "資料儲存", "数据库 schema": "資料庫 schema", "数据库不可用": "資料庫不可用", "数据库与恢复密钥一起加密保存。密码不会保存在应用或备份中,忘记后无法恢复,请妥善保管。": "資料庫與恢復金鑰一起加密儲存。密碼不會儲存在應用或備份中,忘記後無法恢復,請妥善保管。", "数据库主文件与 WAL 文件的总占用,与请求日志清理弹窗采用同一口径;清理后可压缩数据库回收空闲空间。": "資料庫主檔案與 WAL 檔案的總佔用,與請求日誌清理彈窗採用同一口徑;清理後可壓縮資料庫回收空閒空間。", "数据库文件": "資料庫檔案", "数据目录": "資料目錄", "数据统一保存在配置目录下的 agent2api.db;如需更换位置,请设置环境变量 AGENT2API_PROXY_HOME 后重启程序。": "資料統一儲存在配置目錄下的 agent2api.db;如需更換位置,請設定環境變數 AGENT2API_PROXY_HOME 後重啟程式。", "整体替换": "整體替換", "整库备份 / 恢复": "整庫備份 / 恢復", "整库恢复失败": "整庫恢復失敗", "整库恢复完成": "整庫恢復完成", "整次请求交给 {model} 直接回答,不再回到原模型。": "整次請求交給 {model} 直接回答,不再回到原模型。", "新分组名": "新分組名", "新增 {added} 个、更新 {updated} 个{suffix}{note}": "新增 {added} 個、更新 {updated} 個{suffix}{note}", "新增脱敏规则": "新增脫敏規則", "新增规则": "新增規則", "新安装和升级后默认关闭。先配置再开启,关闭后保留配置。": "新安裝和升級後預設關閉。先配置再開啟,關閉後保留配置。", "新密码": "新密碼", "新密码不能与当前密码相同": "新密碼不能與當前密碼相同", "新密码至少 8 位": "新密碼至少 8 位", "新建分组": "新建分組", "新建客户端分类": "新建客戶端分類", "无效或重复的标识请求头:{headers}": "無效或重複的標識請求頭:{headers}", "无法读取品牌设置": "無法讀取品牌設定", "无法读取图片,请重新选择": "無法讀取圖片,請重新選擇", "日志与请求日志同时受保留天数和数量上限限制。日志默认 30 天、10000 条,各级别按比例保留;调试详情最多保留 3 天。请求日志默认 99999 天、1000000 条(100 万),超出后从最旧的记录开始清理,并同步删除对应原始正文。按天聚合默认 99999 天,只按天数保留,不受请求日志数量清理影响。天数可填 1–99999,数量可填 1–100000000。调小任一设置并确认后立即清理,且不可恢复。": "日誌與請求日誌同時受保留天數和數量上限限制。日誌預設 30 天、10000 筆,各層級按比例保留;除錯詳情最多保留 3 天。請求日誌預設 99999 天、1000000 筆(100 萬),超出後從最舊的記錄開始清理,並同步刪除對應原始本文。每日彙總預設 99999 天,只按天數保留,不受請求日誌數量清理影響。天數可填 1–99999,數量可填 1–100000000。調小任一設定並確認後立即清理,且無法還原。", "日志保留数量上限": "日誌保留數量上限", "日志文件": "日誌檔案", "日语": "日語", "显示 {name}": "顯示 {name}", "显示分组 {name}": "顯示分組 {name}", "显示名称": "顯示名稱", "显示名称最多 64 个字符": "顯示名稱最多 64 個字元", "显示模式": "顯示模式", "显示这一组": "顯示這一組", "暂无可编辑的提供商设置": "暫無可編輯的供應商設定", "暂无自定义规则,正在使用内置识别。": "暫無自定義規則,正在使用內建識別。", "暂无自定义规则,正在使用内置识别。也可以从请求详情直接添加规则。": "暫無自定義規則,正在使用內建識別。也可以從請求詳情直接新增規則。", "暂未获取到本机访问地址,请使用其他设备能连接到的本机 IP 与网关端口。": "暫時無法取得本機存取位址,請使用其他裝置能連線到的本機 IP 與閘道連接埠。", "更新": "更新", "更新出网线路": "更新出網線路", "更新通道": "更新通道", "替换": "替換", "替换 = 客户端 system / developer 消息全部删掉,换成网关的提示词;追加 = 保留客户端内容,只在开头 system 块之后多插一条。两者都只改发给上游的副本,客户端看到的响应不变。": "替換 = 客戶端 system / developer 訊息全部刪掉,換成閘道器的提示詞;追加 = 保留客戶端內容,只在開頭 system 塊之後多插一條。兩者都只改發給上游的副本,客戶端看到的響應不變。", "替换为网关提示词": "替換為閘道器提示詞", "替换内容": "替換內容", "替换内容最多 {max} 个字符": "替換內容最多 {max} 個字元", "替换前会自动把当前数据备份到配置目录的 backups/ 文件夹。": "替換前會自動把當前資料備份到配置目錄的 backups/ 資料夾。", "替换前的数据已自动备份为 {name}(在数据目录的 backups/ 下,可整文件拷回)": "替換前的資料已自動備份為 {name}(在資料目錄的 backups/ 下,可整檔案拷回)", "替换并恢复": "替換並恢復", "最多 64 个字符,留空恢复为 Agent2API。": "最多 64 個字元,留空還原為 Agent2API。", "最多 {count} 个备选;备选仍受当前请求权限与路由范围限制,不会跳到路由组外,也不会转为辅助识图。": "最多 {count} 個備選;備選仍受當前請求許可權與路由範圍限制,不會跳到路由組外,也不會轉為輔助識圖。", "最小自动上传间隔": "最小自動上傳間隔", "最近 {window} 条请求中,{scanned} 条有识别依据,{matched} 条符合条件,{applied} 条会采用本规则。": "最近 {window} 條請求中,{scanned} 條有識別依據,{matched} 條符合條件,{applied} 條會採用本規則。", "有未保存的修改": "有未儲存的修改", "有未保存的改动:保存后才能同步(测试连接不受影响)。": "有未儲存的改動:儲存後才能同步(測試連線不受影響)。", "有近期套餐池请求时读取库存状态的间隔,默认 2500 毫秒,可填 1000–30000。没有近期请求时降低读取频率,轮询不会发起验证码。": "有近期套餐池請求時讀取庫存狀態的間隔,預設 2500 毫秒,可填 1000–30000。沒有近期請求時降低讀取頻率,輪詢不會發起驗證碼。", "服务商": "服務商", "服务器地址": "伺服器地址", "服务端密钥加密保存,不会返回浏览器;切回 ALTCHA 后会保留,方便再次启用。": "伺服器金鑰加密儲存,不會回傳瀏覽器;切回 ALTCHA 後會保留,方便再次啟用。", "服务端密钥(Secret Key)": "伺服器金鑰(Secret Key)", "期间本模式自己的提示词不会发出;把提示词改好后可以立即解除。": "期間本模式自己的提示詞不會發出;把提示詞改好後可以立即解除。", "未保存": "未儲存", "未匹配已知客户端": "未匹配已知客戶端", "未单独配置:模式、提示词文件与正文都跟随上面的全局配置(当前「{mode}」)。": "未單獨配置:模式、提示詞檔案與正文都跟隨上面的全域配置(當前「{mode}」)。", "未启用": "未啟用", "未开启轻量模式:关窗仅隐藏窗口,界面进程常驻内存,随时打开不等待": "未開啟輕量模式:關窗僅隱藏視窗,介面程序常駐記憶體,隨時開啟不等待", "未开启,developer 角色消息会原样发往上游,不认识该角色的上游会报错(400)。": "未開啟,developer 角色訊息會原樣發往上游,不認識該角色的上游會報錯(400)。", "未开启,客户端 system 模板会原样发往上游,可能被内容审核误拦(400)。": "未開啟,客戶端 system 模板會原樣發往上游,可能被內容稽核誤攔(400)。", "未开启,浏览器跨域无法直连网关。": "未開啟,瀏覽器跨域無法直連閘道器。", "未开启,转发时不保存任何原始报文。": "未開啟,轉發時不儲存任何原始報文。", "未开启:网关只监听 127.0.0.1,仅本机可以访问。": "未開啟:閘道器只監聽 127.0.0.1,僅本機可以存取。", "未注册": "未註冊", "未注册闸门": "未註冊閘門", "未知原因": "未知原因", "未知来源": "未知來源", "未知设备": "未知裝置", "未知账号": "未知帳號", "未能读取 Cline 伪装头设置,请稍后重试": "未能讀取 Cline 偽裝頭設定,請稍後重試", "未能读取 ZCode 版本号设置,请稍后重试": "未能讀取 ZCode 版本號設定,請稍後重試", "未能读取 models.dev 元数据状态,请稍后重试": "未能讀取 models.dev 後設資料狀態,請稍後重試", "未能读取云同步设置,请稍后重试。": "未能讀取雲同步設定,請稍後重試。", "未能读取保存后的指纹脱敏设置": "未能讀取儲存後的指紋脫敏設定", "未能读取开发者角色兼容设置,请稍后重试": "未能讀取開發者角色相容設定,請稍後重試", "未能读取指纹脱敏设置,请稍后重试": "未能讀取指紋脫敏設定,請稍後重試", "未能读取机器人校验设置": "未能讀取機器人驗證設定", "未能读取第三方模型回答完自动折叠过程设置,请稍后重试": "未能讀取第三方模型回答完自動摺疊過程設定,請稍後重試", "未能读取系统提示词设置,请稍后重试": "未能讀取系統提示詞設定,請稍後重試", "未能读取网关跨域访问设置,请稍后重试": "未能讀取閘道器跨域存取設定,請稍後重試", "未能读取网络访问设置,请稍后重试": "無法讀取網路存取設定,請稍後重試", "未能读取调试模式设置,请稍后重试": "未能讀取除錯模式設定,請稍後重試", "未能读取账户信息,请稍后重试": "未能讀取帳戶資訊,請稍後重試", "未设置,使用插件内置的默认版本号": "未設定,使用外掛內建的預設版本號", "未采用本规则,请检查开关、来源声明或规则顺序": "未採用本規則,請檢查開關、來源宣告或規則順序", "本地账号、配置、签到与余额记录变化后自动上传(合并 1 秒内的连续改动,最长 10 秒传一次;内容没变时不发请求)。": "本地帳號、配置、簽到與餘額記錄變化後自動上傳(合併 1 秒內的連續改動,最長 10 秒傳一次;內容沒變時不發請求)。", "本机 API 地址": "本機 API 位址", "本机 APK 版本": "本機 APK 版本", "本机全部数据会被备份整体替换,恢复前自动保留安全备份,完成后需要重新登录管理面板。本机已有密钥不会被覆盖。": "本機全部資料會被備份整體替換,恢復前自動保留安全備份,完成後需要重新登入管理面板。本機已有金鑰不會被覆蓋。", "本机应用版本": "本機應用版本", "本机界面版本": "本機介面版本", "本机的业务数据(账号、配置、Agent 配置、代理池 / 订阅、签到与余额记录)将上传并": "本機的業務資料(帳號、配置、Agent 配置、代理池 / 訂閱、簽到與餘額記錄)將上傳並", "本机的全部数据(账号、网关配置、日志统计与桌面设置)将被所选备份文件": "本機的全部資料(帳號、閘道器配置、日誌統計與桌面設定)將被所選備份檔案", "本机的账号、网关配置、Agent 配置、代理池 / 订阅、签到与余额记录将被远端快照": "本機的帳號、閘道器配置、Agent 配置、代理池 / 訂閱、簽到與餘額記錄將被遠端快照", "本次无需刷新": "本次無需重新整理", "本软件不提供任何担保,可按 AGPL-3.0 修改与分发;通过网络提供修改版服务时须向用户提供对应源码。": "本軟體不提供任何擔保,可按 AGPL-3.0 修改與分發;透過網路提供修改版服務時須向使用者提供對應原始碼。", "本项目的 AGPL-3.0 许可不替代这些第三方许可。名称与标识的商标权归各自权利人所有。": "本專案的 AGPL-3.0 授權不取代這些第三方授權。名稱與標誌的商標權歸各自權利人所有。", "机器人校验": "機器人校驗", "机器人校验设置已保存": "機器人驗證設定已儲存", "条数": "筆數", "来源声明": "來源宣告", "来源声明当前关闭,这条规则不会生效。请先在客户端识别设置中开启。": "來源聲明當前關閉,這條規則不會生效。請先在客戶端識別設定中開啟。", "来源声明无效或未登记,本次已忽略。": "來源宣告無效或未登記,本次已忽略。", "来源声明未启用,本次已忽略。": "來源宣告未啟用,本次已忽略。", "来源版本": "來源版本", "来源设备:{device}": "來源裝置:{device}", "来自 {device},生成于 {time}": "來自 {device},生成於 {time}", "架构": "架構", "查看、安装和管理所连接网关的插件": "檢視、安裝和管理所連線閘道器的外掛", "查看内置客户端({n})": "檢視內建客戶端({n})", "查询管理员状态失败:{message}": "查詢管理員狀態失敗:{message}", "校验身份:这三段必须各自成块排在最前(实测:三段并成一段会被回 405 / 3012)。因此这里按段编辑,不能合成一段。改过的段以你的文本为准,没改的段继续用官方原文;清空某一段 = 那一段恢复官方原文。": "校驗身份:這三段必須各自成塊排在最前(實測:三段併成一段會被回 405 / 3012)。因此這裡按段編輯,不能合成一段。改過的段以你的文本為準,沒改的段繼續用官方原文;清空某一段 = 那一段恢復官方原文。", "桌面端": "桌面版", "桌面端登录 / 注册验证": "桌面端登入 / 註冊驗證", "桌面端:登录 / 注册需要 ALTCHA 人机验证": "桌面版:登入 / 註冊需要 ALTCHA 人機驗證", "桌面端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "桌面版:登入 / 註冊需要 ALTCHA 人機驗證(當前正在使用)", "桌面运行时不可用,暂时无法保存": "桌面執行時不可用,暫時無法儲存", "档案": "檔案", "检测中…": "檢測中…", "概览": "概覽", "模型不能直接看图时,按你选择的方式处理。原生支持图片的请求直接转发,不增加识图调用。": "模型不能直接看圖時,按你選擇的方式處理。原生支援圖片的請求直接轉發,不增加識圖呼叫。", "模型单独配置": "模型單獨配置", "模型目录没写明是否支持图片时按这里处理。": "模型目錄沒寫明是否支援圖片時依這裡處理。", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。下面两块分别选好「哪些模型」和「用哪只模型」即可;没配到的模型、以及本来就能看图的模型,一律原样放行。这里的改动立即生效,不需要保存。": "模型看不了圖片時只有兩種辦法:讓別的模型替它讀圖,或者把整次請求直接交給能看圖的模型。下面兩塊分別選好「哪些模型」和「用哪隻模型」即可;沒配到的模型、以及本來就能看圖的模型,一律原樣放行。這裡的改動立即生效,不需要儲存。", "模型看不了图片时只有两种办法:让别的模型替它读图,或者把整次请求直接交给能看图的模型。没配到的模型、以及本来就能看图的模型,一律原样放行;每个请求只用其中一种方式,不会两种串着做,处理失败也不会改走另一种。改动立即生效,不需要保存。": "模型看不了圖片時只有兩種辦法:讓別的模型替它讀圖,或者把整次請求直接交給能看圖的模型。沒配到的模型、以及本來就能看圖的模型,一律原樣放行;每個請求只用其中一種方式,不會兩種串著做,處理失敗也不會改走另一種。改動立即生效,不需要儲存。", "模型自己看不了图片时,按下面选好的方式处理;能直接看图的请求原样放行,不会多一次识图调用。": "模型自己看不了圖片時,按下面選好的方式處理;能直接看圖的請求原樣放行,不會多一次識圖呼叫。", "模型请求是否需要验证码由 ZCode 上游配置决定,领取验证与模型请求免验证分别处理。后台只检查配置和库存,不自动运行验证码或弹出拼图;需要验证时,在账号的「套餐明细」中点击「开始验证」。验证令牌一次性使用,短时间内过期,失败或取消后不会自动重试。": "模型請求是否需要驗證碼由 ZCode 上游設定決定,領取驗證與模型請求免驗證分別處理。背景只檢查設定和庫存,不自動執行驗證碼或彈出拼圖;需要驗證時,在帳號的「套餐明細」中點擊「開始驗證」。驗證權杖僅能使用一次,短時間內失效,失敗或取消後不會自動重試。", "模式": "模式", "模式改为「{mode}」": "模式改為「{mode}」", "次": "次", "次日 00:00": "次日 00:00", "正则表达式": "正規表示式", "正在保存上游原始报文:": "正在儲存上游原始報文:", "正在修改…": "正在修改…", "正在剥离出站请求里的审核指纹:表头键值整段删除,模板句最小改写。": "正在剝離出站請求裡的稽核指紋:表頭鍵值整段刪除,模板句最小改寫。", "正在安装…": "正在安裝…", "正在应答跨源请求:浏览器跨域请求可直连 /v1/*。": "正在應答跨源請求:瀏覽器跨域請求可直連 /v1/*。", "正在归一角色:developer 角色消息转发前改写为 system。": "正在歸一角色:developer 角色訊息轉發前改寫為 system。", "正在恢复…": "正在恢復…", "正在恢复整库": "正在恢復整庫", "正在注册…": "正在註冊…", "正在联网更新": "正在聯網更新", "正在读取提供商设置…": "正在讀取供應商設定…", "正式版": "正式版", "每个请求只会用到其中一种方式,不会两种串着做;处理失败也不会改走另一种。配了哪只视觉模型,那次请求的图片就会交给它。": "每個請求只會用到其中一種方式,不會兩種串著做;處理失敗也不會改走另一種。配了哪隻視覺模型,那次請求的圖片就會交給它。", "每条请求轮换到下一个可用账号;新会话交给当前最闲的那位。适合想把手里的号摊开用、不让某一个一直扛。": "每條請求輪換到下一個可用帳號;新會話交給當前最閒的那位。適合想把手裡的號攤開用、不讓某一個一直扛。", "每条请求都重新按策略选路 —— 行为与「关闭」一致,仅保留会话识别的记录。": "每條請求都重新按策略選路 —— 行為與「關閉」一致,僅保留會話識別的記錄。", "每次等待的时长,默认 0 = 跟随上游建议(实测 9~30 秒,上游没给建议时用 15 秒)。可填 0–120 秒强制一个固定时长。": "每次等待的時長,預設 0 = 跟隨上游建議(實測 9~30 秒,上游沒給建議時用 15 秒)。可填 0–120 秒強制一個固定時長。", "每行一个域名,不填协议、端口或路径;与 Cloudflare 中的配置一致,服务端按完整域名匹配。手机 App 使用所连接网关的域名。": "每行一個網域,不填通訊協定、連接埠或路徑;與 Cloudflare 中的設定一致,伺服器按完整網域比對。手機 App 使用所連線閘道的網域。", "毫秒": "毫秒", "沟通方式 / 上下文管理 + Environment 段。": "溝通方式 / 上下文管理 + Environment 段。", "没有可导出的账号": "沒有可匯出的帳號", "没有可用视觉模型时": "沒有可用視覺模型時", "没有已确认支持图片的模型,请先在模型管理中确认。": "沒有已確認支援圖片的模型,請先在模型管理中確認。", "没能读到「{label}」的当前值,改为 {count} 条可能会删除超出的历史数据。": "未能讀取「{label}」的目前值,改為 {count} 筆可能會刪除超出的歷史資料。", "没能读到「{label}」的当前值,改为 {days} 天可能会删除超出的历史数据。": "沒能讀到「{label}」的當前值,改為 {days} 天可能會刪除超出的歷史資料。", "沿用对应方式的视觉模型配置,不额外维护一份模型列表。": "沿用對應方式的視覺模型配置,不額外維護一份模型列表。", "沿用工具服务的视觉分析模型": "沿用工具服務的視覺分析模型", "沿用工具服务的视觉分析模型(未配置)": "沿用工具服務的視覺分析模型(未設定)", "注册并开启": "註冊並開啟", "注册管理员账号": "註冊管理員帳號", "注意:这一家的「网关自带」开关现在是关的,改过的正文要等开关打开才生效。": "注意:這一家的「閘道器自帶」開關現在是關的,改過的正文要等開關開啟才生效。", "流式响应相邻数据之间允许的最大空闲时间(秒),收到新数据后重新计时,默认 300 秒,范围 1~3600。": "流式響應相鄰資料之間允許的最大空閒時間(秒),收到新資料後重新計時,預設 300 秒,範圍 1~3600。", "流式响应空闲超时": "流式響應空閒超時", "测试连接": "測試連線", "浏览器 / PWA": "瀏覽器 / PWA", "浏览器只在 https 或 localhost 下提供离线缓存;局域网 http 访问不影响正常使用": "瀏覽器只在 https 或 localhost 下提供離線快取;區域網路 http 存取不影響正常使用", "浏览器在本地完成计算,不需要第三方密钥,也不依赖外部验证服务。": "瀏覽器在本機完成計算,不需要第三方金鑰,也不依賴外部驗證服務。", "浏览器标签页": "瀏覽器標籤頁", "浏览器面板": "瀏覽器面板", "消息角色": "訊息角色", "添加备选模型": "新增備選模型", "添加提供商": "新增提供商", "添加提供商…": "新增提供商…", "添加模型单独配置": "新增模型單獨配置", "添加自定义头": "新增自定義頭", "添加要单独配置的提供商": "新增要單獨配置的提供商", "添加配置": "新增配置", "清空(用内置默认值)": "清空(用內建預設值)", "清除本机凭证": "清除本機憑證", "清除这里的正文": "清除這裡的正文", "源代码": "原始碼", "点下面的入口会用系统默认浏览器打开 GitHub 的对应表单(需要 GitHub 账号,模板已预设好,填完直接提交即可)。": "點下面的入口會用系統預設瀏覽器開啟 GitHub 的對應表單(需要 GitHub 帳號,模板已預設好,填完直接提交即可)。", "点击重命名": "點擊重新命名", "点此添加或切换服务器": "點此新增或切換伺服器", "点此添加服务器": "點此新增伺服器", "版本": "版本", "版本信息": "版本資訊", "版本信息 · 所连网关环境": "版本資訊 · 所連閘道器環境", "版权声明": "版權聲明", "状态码 {code} 已在名单里": "狀態碼 {code} 已在名單裡", "状态码必须是 {min}–{max} 的整数(收到: {text})": "狀態碼必須是 {min}–{max} 的整數(收到: {text})", "环境": "環境", "环境变量 ZCODE_APP_VERSION={value} 正在生效,上面填的值暂不生效": "環境變數 ZCODE_APP_VERSION={value} 正在生效,上面填的值暫不生效", "现在会这样处理:": "現在會這樣處理:", "生成时间:{time}": "生成時間:{time}", "生效顺序:有效的来源声明优先,然后按顺序匹配自定义规则,最后使用内置规则。中转丢失原始标识时,无法自动推断背后的软件。": "生效順序:有效的來源宣告優先,然後按順序匹配自定義規則,最後使用內建規則。中轉丟失原始標識時,無法自動推斷背後的軟體。", "用 models.dev 补齐上游没声明的模型能力与思考档位(联网刷新,内嵌快照始终生效)": "用 models.dev 補齊上游沒宣告的模型能力與思考檔位(聯網重新整理,內嵌快照始終生效)", "用于加密上云的账号密钥。请自己记牢 —— 它不保存到云端,换机下载时必须输入同一个密码,否则账号数据无法解密。": "用於加密上雲的帳號金鑰。請自己記牢 —— 它不儲存到雲端,換機下載時必須輸入同一個密碼,否則帳號資料無法解密。", "用哪只模型识图": "用哪隻模型識圖", "用浏览器菜单里的「添加到主屏幕」把这一页装成 App:全屏打开、没有地址栏,和原生应用一样。": "用瀏覽器選單裡的「新增到主螢幕」把這一頁裝成 App:全屏開啟、沒有位址列,和原生應用一樣。", "由 Cloudflare 提供验证,需要浏览器与网关均能连接 Cloudflare。验证失败或服务不可用时不会自动放行。": "由 Cloudflare 提供驗證,需要瀏覽器與閘道均能連線至 Cloudflare。驗證失敗或服務無法使用時不會自動放行。", "由 {source} 覆盖,手动设置暂不生效": "由 {source} 覆寫,手動設定暫不生效", "界面缩放": "介面縮放", "界面缩放比例": "介面縮放比例", "界面语言": "介面語言", "界面语言。可选简体中文、繁體中文、English、日本語、한국어、Português (Brasil),或「跟随系统」(按浏览器 / 系统的语言列表自动选)。切换后整页立即刷新;该偏好只存在本机(localStorage),不影响账号、密钥与转发。": "介面語言。可選簡體中文、繁體中文、English、日本語、한국어、Português (Brasil),或「跟隨系統」(按瀏覽器 / 系統的語言列表自動選)。切換後整頁立即重新整理;該偏好只存在本機(localStorage),不影響帳號、金鑰與轉發。", "界面语言只保存在本机(localStorage)。切换后整页立即刷新,不影响账号、密钥与转发。": "介面語言只儲存在本機(localStorage)。切換後整頁立即重新整理,不影響帳號、金鑰與轉發。", "界面里编辑的正文": "介面裡編輯的正文", "留空 = 用内置默认提示词": "留空 = 用內建預設提示詞", "留空 = 用插件内置的默认版本号(每期活动由插件跟随官方更新)。只有遇到「官方客户端里能看到活动、这里探测为空」时才需要填:那种情况几乎都是上游抬高了版本门槛,而版本落后的表现是一份空列表而不是报错。按官方客户端当前版本填(形如 3.16.2),保存后回到套餐明细刷新一次即刻生效。环境变量 ZCODE_APP_VERSION 若已设置,优先级高于这里。": "留空 = 用外掛內建的預設版本號(每期活動由外掛跟隨官方更新)。只有遇到「官方客戶端裡能看到活動、這裡探測為空」時才需要填:那種情況幾乎都是上游抬高了版本門檻,而版本落後的表現是一份空列表而不是報錯。按官方客戶端當前版本填(形如 3.16.2),儲存後回到套餐明細重新整理一次即刻生效。環境變數 ZCODE_APP_VERSION 若已設定,優先順序高於這裡。", "留空使用 AWS 官方地址": "留空使用 AWS 官方地址", "留空使用默认": "留空使用預設", "留空表示删除匹配内容;替换内容按原文写入,$ 不作为捕获组引用。": "留空表示刪除匹配內容;替換內容按原文寫入,$ 不作為捕獲組引用。", "登录 / 注册需要通过 ALTCHA 人机验证(工作量证明)": "登入 / 註冊需要通過 ALTCHA 人機驗證(工作量證明)", "登录 / 账号切换 / 429 切换等系统事件,可填 1–3650 天。": "登入 / 帳號切換 / 429 切換等系統事件,可填 1–3650 天。", "登录 / 账号切换 / 429 切换等系统事件,可填 1–99999 天。": "登入 / 帳號切換 / 429 切換等系統事件,可填 1–99999 天。", "登录 Agent2API": "登入 Agent2API", "登录 {name}": "登入 {name}", "登录人机验证": "登入人機驗證", "百分比类读数(如 OpenCode Go、Antigravity)不能相加,组头显示的是组内最低剩余比例。": "百分比類讀數(如 OpenCode Go、Antigravity)不能相加,組頭顯示的是組內最低剩餘比例。", "监听地址": "監聽地址", "目前展示仓库已登记的图标来源许可,不代表完整的第三方依赖清单。": "目前顯示儲存庫已登記的圖示來源授權,不代表完整的第三方相依套件清單。", "目标路径:{path}": "目標路徑:{path}", "直接按上面的设置兼容": "直接按上面的設定相容", "直接按当前方式兼容": "直接按當前方式相容", "知道了": "知道了", "确定": "確定", "确定后加入当前草稿,点击「保存设置」才会生效。": "確定後加入當前草稿,點擊「儲存設定」才會生效。", "确定继续?": "確定繼續?", "确认上传": "確認上傳", "确认图片处理授权": "確認圖片處理授權", "确认备份密码": "確認備份密碼", "确认并保存": "確認並儲存", "确认新密码": "確認新密碼", "确认缩减数据保留": "確認縮減資料保留", "确认缩短保留天数": "確認縮短保留天數", "示例请求头": "示例請求頭", "社区与支持": "社群與支援", "离线缓存未启用": "離線快取未啟用", "积分合计只统计当前筛选出来的账号": "積分合計只統計目前篩選出來的帳號", "移入「{name}」": "移入「{name}」", "程序路径": "程式路徑", "空 = 不要这一份,回落提示词文件 / 内置默认提示词。": "空 = 不要這一份,回落提示詞檔案 / 內建預設提示詞。", "空分组 · 点组头的 + 把菜单移进来": "空分組 · 點組頭的 + 把選單移進來", "立即解除": "立即解除", "站点密钥(Site Key)": "網站金鑰(Site Key)", "第一段": "第一段", "第一段(身份句)": "第一段(身份句)", "第三方应用密码": "第三方應用密碼", "第三方开源许可": "第三方開源授權", "第三方模型回答完自动折叠过程": "第三方模型回答完自動摺疊過程", "第三方模型回答完自动折叠过程设置已刷新": "第三方模型回答完自動摺疊過程設定已重新整理", "第三段": "第三段", "第三段(动态段)": "第三段(動態段)", "第二段": "第二段", "第二段(稳定段)": "第二段(穩定段)", "等待上限需在 5–120 秒之间": "等待上限需在 5–120 秒之間", "等待响应超时": "等待響應超時", "等待期间请求日志的状态列会显示「排队中」阶段,详情弹窗的「内部重试」里能逐次看到等待时长;等待用尽后返回 HTTP 503(不是 401/429:既不会刷新凭证,也不会把账号标成限额)。": "等待期間請求日誌的狀態列會顯示「排隊中」階段,詳情彈窗的「內部重試」裡能逐次看到等待時長;等待用盡後返回 HTTP 503(不是 401/429:既不會重新整理憑證,也不會把帳號標成限額)。", "等比放大或缩小整个界面(文字、控件、间距一起变),效果与浏览器按 Ctrl +/- 相同:80%–130%、5% 一档。窗口本身不缩放,变的是页面内容的显示比例,设置立即生效并记住,下次启动直接按这个比例打开。放得越大可视范围越小,窗口较窄或表格较宽时不建议调得太大。": "等比放大或縮小整個介面(文字、控制元件、間距一起變),效果與瀏覽器按 Ctrl +/- 相同:80%–130%、5% 一檔。視窗本身不縮放,變的是頁面內容的顯示比例,設定立即生效並記住,下次啟動直接按這個比例開啟。放得越大可視範圍越小,視窗較窄或表格較寬時不建議調得太大。", "简体中文": "簡體中文", "管理员已注册": "管理員已註冊", "管理员账号": "管理員帳號", "管理插件": "管理外掛", "精确文本": "精確文本", "系统": "系統", "系统提示词模式": "系統提示詞模式", "系统提示词设置已刷新": "系統提示詞設定已重新整理", "累计请求": "累計請求", "繁体中文": "繁體中文", "约 {n} 字符": "約 {n} 字元", "结构": "結構", "给 Codex 的响应补阶段标记,回答完后像官方模型一样把推理与命令过程折叠起来": "給 Codex 的響應補階段標記,回答完後像官方模型一樣把推理與命令過程摺疊起來", "继续并清理": "繼續並清理", "编辑提示词正文 · {label}": "編輯提示詞正文 · {label}", "编辑提示词正文 · 全局": "編輯提示詞正文 · 全域", "编辑正文": "編輯正文", "编辑网关自带提示词 · {label}": "編輯閘道器自帶提示詞 · {label}", "编辑脱敏规则": "編輯脫敏規則", "编辑识别规则": "編輯識別規則", "缩放后重新存成 JPEG 时用的质量。默认 80,可填 40–95;数值越小体积越小、画质越差。": "縮放後重新存成 JPEG 時用的質量。預設 80,可填 40–95;數值越小體積越小、畫質越差。", "缩放比例": "縮放比例", "网关": "閘道器", "网关 Key 数量": "閘道器 Key 數量", "网关尚未就绪": "閘道尚未就緒", "网关状态": "閘道器狀態", "网关自带": "閘道器自帶", "网关跨域访问已开启": "閘道器跨域存取已開啟", "网关跨域访问设置已刷新": "閘道器跨域存取設定已重新整理", "网关跨域访问(CORS)": "閘道器跨域存取(CORS)", "网关面(/v1/*)默认不应答浏览器跨源请求:页面直连会被预检拦下,只报「无法连接 API」。注意来源是 * —— 未配「网关 Key」时任何网页都能借本机网关打上游,故默认关闭;只给自己用的话,让页面与网关同源(本地反代 /v1)更稳妥。面板接口(/api/*)不受影响。": "閘道器面(/v1/*)預設不應答瀏覽器跨源請求:頁面直連會被預檢攔下,只報「無法連線 API」。注意來源是 * —— 未配「閘道器 Key」時任何網頁都能借本機閘道器打上游,故預設關閉;只給自己用的話,讓頁面與網關同源(本地反代 /v1)更穩妥。面板介面(/api/*)不受影響。", "网络访问": "網路存取", "网页端": "網頁端", "网页端登录 / 注册验证": "網頁端登入 / 註冊驗證", "网页端的界面缩放由浏览器自己控制(Ctrl + / Ctrl -,或浏览器菜单里的缩放),此项不可调。": "網頁端的介面縮放由瀏覽器自己控制(Ctrl + / Ctrl -,或瀏覽器選單裡的縮放),此項不可調。", "网页端:登录 / 注册需要 ALTCHA 人机验证": "網頁端:登入 / 註冊需要 ALTCHA 人機驗證", "网页端:登录 / 注册需要 ALTCHA 人机验证(当前正在使用)": "網頁端:登入 / 註冊需要 ALTCHA 人機驗證(當前正在使用)", "网页管理地址": "網頁管理位址", "群晖 NAS": "群暉 NAS", "群晖需在「控制面板 → 应用程序门户 → WebDAV」里启用服务,端口默认 5005(HTTP)/ 5006(HTTPS)。": "群暉需在「控制面板 → 應用程式門戶 → WebDAV」裡啟用服務,連接埠預設 5005(HTTP)/ 5006(HTTPS)。", "脱敏词表": "脫敏詞表", "腾讯云 COS": "騰訊雲 COS", "自动同步": "自動同步", "自动同步上次失败": "自動同步上次失敗", "自动续写": "自動續寫", "自定义 User-Agent": "自定義 User-Agent", "自定义 · {name}": "自定義 · {name}", "自定义头匹配规则": "自定義頭匹配規則", "自定义客户端分类": "自定義客戶端分類", "自定义客户端数量已达上限": "自定義客戶端數量已達上限", "自定义提供商 {id}": "自定義提供商 {id}", "自定义网站和应用界面中显示的名称与 Logo。": "自訂網站和應用程式介面中顯示的名稱與 Logo。", "自定义识别规则": "自定義識別規則", "自愈保护": "自愈保護", "至少 12 位": "至少 12 位", "至少 8 位,换机下载时需要": "至少 8 位,換機下載時需要", "至少要保留一个分组": "至少要保留一個分組", "英语": "英語", "范围 5–120 秒,并受原请求时限约束。": "範圍 5–120 秒,並受原請求時限約束。", "范围为 5–120 秒,并受原请求时限约束。图片过大、格式错误或下载失败不会被当作模型不支持图片。": "範圍為 5–120 秒,並受原請求時限約束。圖片過大、格式錯誤或下載失敗不會被當作模型不支援圖片。", "被更高优先级覆盖": "被更高優先順序覆蓋", "被环境变量覆盖": "被環境變數覆蓋", "装上{size}的官方身份提示词": "裝上{size}的官方身份提示詞", "装成 App 后从桌面图标直接进入:全屏打开、没有地址栏。": "裝成 App 後從桌面圖示直接進入:全屏開啟、沒有位址列。", "覆盖": "覆蓋", "规则 / 匹配方式": "規則 / 匹配方式", "规则可以增删改、启停和调整顺序;替换内容留空表示删除匹配内容。恢复默认只重置词表,不改开关和提供商范围。": "規則可以增刪改、啟停和調整順序;替換內容留空表示刪除匹配內容。恢復預設只重置詞表,不改開關和提供商範圍。", "规则名称": "規則名稱", "规则名称不能为空,且最多 {max} 个字符": "規則名稱不能為空,且最多 {max} 個字元", "规则已保存,对后续请求生效;当前历史记录未修改。": "規則已儲存,對後續請求生效;當前歷史記錄未修改。", "规则忽略大小写,只影响新请求的日志与统计,不改变模型选择或权限。": "規則忽略大小寫,隻影響新請求的日誌與統計,不改變模型選擇或許可權。", "规则编号:{id}": "規則編號:{id}", "视觉模型": "視覺模型", "视觉模型先识读图片,再由原模型分析和回答。": "視覺模型先識讀圖片,再由原模型分析和回答。", "视觉模型来源": "視覺模型來源", "视觉模型的思考等级": "視覺模型的思考等級", "视觉模型直接回答": "視覺模型直接回答", "视觉模型识读图片": "視覺模型識讀圖片", "解码后小于这个体积的图片保持原样。默认 512KB,可填 0–10240;填 0 表示所有内嵌图片都过一遍。": "解碼後小於這個體積的圖片保持原樣。預設 512KB,可填 0–10240;填 0 表示所有內嵌圖片都過一遍。", "解除失败:{message}": "解除失敗:{message}", "触发阈值": "觸發閾值", "计数": "計數", "计量单位": "計量單位", "让 Codex 在收到最终答案后收起中间过程。仅为严格识别的 Codex Responses 请求补阶段标记,报表归类和来源声明不影响此判断。正常结束且没有工具调用的非空回答才补 final_answer,工具调用前的说明补 commentary;错误、截断、缺少结束信号或未知结束原因不补最终答案标记。默认关闭,不改变回答文字,也不减少模型思考或用量。": "讓 Codex 在收到最終答案後收起中間過程。僅為嚴格識別的 Codex Responses 請求補階段標記,報表歸類和來源宣告不影響此判斷。正常結束且沒有工具呼叫的非空回答才補 final_answer,工具呼叫前的說明補 commentary;錯誤、截斷、缺少結束訊號或未知結束原因不補最終答案標記。預設關閉,不改變回答文字,也不減少模型思考或用量。", "许可原文": "授權原文", "许可原文已随软件内置,无需联网即可查看;打开项目来源链接需要联网。": "授權原文已隨軟體內建,無需連網即可檢視;開啟專案來源連結需要連網。", "许可核对版本": "授權核對版本", "设置不可隐藏(隐藏了只能清缓存找回来)": "設定不可隱藏(隱藏了只能清快取找回來)", "设置备份密码": "設定備份密碼", "设置识别规则": "設定識別規則", "访问时请使用目标设备能连接到的地址;这里显示的本机地址不代表公网可达。": "存取時請使用目標裝置能連線到的位址;這裡顯示的本機位址不代表可從公網連線。", "识别依据": "識別依據", "识别规则数量已达上限": "識別規則數量已達上限", "识别顺序": "識別順序", "识读会保留图片里的文字、代码、数字、布局与状态;识读失败就停止,不删图后继续回答。": "識讀會保留圖片裡的文字、程式碼、數字、佈局與狀態;識讀失敗就停止,不刪圖後繼續回答。", "识读这张图用哪只模型,第一项是「MCP & Skills」里配好的那只。": "識讀這張圖用哪隻模型,第一項是「MCP & Skills」裡配好的那隻。", "词表为空,不会改写任何指纹。可以新增规则或恢复默认词表。": "詞表為空,不會改寫任何指紋。可以新增規則或恢復預設詞表。", "该提供商暂无可编辑的专属设置": "此供應商暫無可編輯的專屬設定", "详细日志": "詳細日誌", "语言设置": "語言設定", "请先保存设置再同步": "請先儲存設定再同步", "请先在 Cloudflare 创建 Turnstile 组件,建议选择 Managed 模式,并添加面板实际使用的域名。": "請先在 Cloudflare 建立 Turnstile 元件,建議選擇 Managed 模式,並新增面板實際使用的網域。", "请填一个分组名": "請填一個分組名", "请填写管理员账号(64 字符以内)": "請填寫管理員帳號(64 字元以內)", "请求发出后等待上游响应头的最大时间(秒),默认 300 秒,范围 1~3600。": "請求發出後等待上游響應頭的最大時間(秒),預設 300 秒,範圍 1~3600。", "请求已断开,但恢复仍在后台进行 —— 请等待进度弹窗给出结果": "請求已斷開,但恢復仍在後臺進行 —— 請等待進度彈窗給出結果", "请求带有不同软件的标识,未自动归类;可用自定义规则明确归属。": "請求帶有不同軟體的標識,未自動歸類;可用自定義規則明確歸屬。", "请求提供商 / 模型支持": "請求提供商 / 模型支援", "请求日志保留天数": "請求日誌保留天數", "请求日志保留数量上限": "請求日誌保留數量上限", "请求记录": "請求記錄", "请求超时": "請求超時", "请求转发到上游失败时(服务器瞬时错误、连接失败,以及 WorkBuddy 的 11-128 敏感词拦截),网关会等一段间隔后再发一次。次数分两档,管的是两件事:①「同一账号重试次数」在同一账号上原地重发几次 —— 一般是提示词被上游拦截、或链路瞬时抖动,等一会儿重发往往就好了;②「切换账号重试次数」这份请求最多再换几个账号试 —— 首发的那个账号不算,每换一个扣一次,不分是不是同一家(换到同一家的下一个账号也算一次),换满还失败就把错误返回给客户端。两项都设为 0 表示失败不重试、直接报错。注意账号级限额(429)不占这里的换号次数 —— 那类失败走「冷却该账号并换下一个账号」的降级,与这里的重试是两条路。另有「指定错误码直接换号」名单(默认 402):命中名单的上游状态码不在同一账号重发,直接按队列换下一个账号继续试(换号也占「切换账号重试次数」),换满仍失败才把错误返回给客户端。": "請求轉發到上游失敗時(伺服器瞬時錯誤、連線失敗,以及 WorkBuddy 的 11-128 敏感詞攔截),閘道器會等一段間隔後再發一次。次數分兩檔,管的是兩件事:①「同一帳號重試次數」在同一帳號上原地重發幾次 —— 一般是提示詞被上游攔截、或鏈路瞬時抖動,等一會兒重發往往就好了;②「切換帳號重試次數」這份請求最多再換幾個帳號試 —— 首發的那個帳號不算,每換一個扣一次,不分是不是同一家(換到同一家的下一個帳號也算一次),換滿還失敗就把錯誤返回給客戶端。兩項都設為 0 表示失敗不重試、直接報錯。注意帳號級限額(429)不佔這裡的換號次數 —— 那類失敗走「冷卻該帳號並換下一個帳號」的降級,與這裡的重試是兩條路。另有「指定錯誤碼直接換號」名單(預設 402):命中名單的上游狀態碼不在同一帳號重發,直接按佇列換下一個帳號繼續試(換號也佔「切換帳號重試次數」),換滿仍失敗才把錯誤返回給客戶端。", "请求重试": "請求重試", "请至少选择一个提供商": "請至少選擇一個提供商", "请输入同步密码": "請輸入同步密碼", "请输入当前密码": "請輸入當前密碼", "请输入服务端密钥": "請輸入伺服器金鑰", "请选择可用的标识请求头": "請選擇可用的標識請求頭", "请选择归属客户端": "請選擇歸屬客戶端", "读取云同步设置失败:{message}": "讀取雲同步設定失敗:{message}", "读取失败:{message}": "讀取失敗:{message}", "读取完整非流式响应体允许的最大时间(秒),默认 300 秒,范围 1~3600。": "讀取完整非流式響應體允許的最大時間(秒),預設 300 秒,範圍 1~3600。", "读取网关信息失败:{message}": "讀取閘道器資訊失敗:{message}", "读取远端…": "讀取遠端…", "读取远端信息失败:{message}": "讀取遠端資訊失敗:{message}", "调用方声明": "呼叫方宣告", "调试报文": "除錯報文", "调试模式": "除錯模式", "调试模式设置已刷新": "除錯模式設定已重新整理", "负载均衡": "負載均衡", "账号列表": "帳號列表", "账号导入 / 导出": "帳號匯入 / 匯出", "账号路由": "帳號路由", "账号页表格的两项显示偏好,只存在本机(localStorage),不影响账号数据与转发。「积分合计只统计当前筛选出来的账号」:账号页每一家的分组带右侧有一枚「可用合计」,默认按整组求和 —— 不受筛选、搜索影响,被筛掉的账号也计入(余额是资产,禁用也只表示不参与转发,额度仍在账上)。打开这一项后改为只累加当前可见的行:例如筛出 1 个 100 积分的账号,合计就是 100,而不是同组两个账号之和 1,000。分页不参与这个口径 —— 翻页看的是同一份结果的不同屏,合计不随页码变化。「隐藏账号名」与表头「账号」旁边那颗眼睛是同一个开关:打开后账号列的名字整体显示成星号,适合截图分享时遮挡账号。": "帳號頁表格的兩項顯示偏好,只存在本機(localStorage),不影響帳號資料與轉發。「積分合計只統計目前篩選出來的帳號」:帳號頁每一家的分組帶右側有一枚「可用合計」,預設按整組求和 —— 不受篩選、搜尋影響,被篩掉的帳號也計入(餘額是資產,停用也只表示不參與轉發,額度仍在帳上)。開啟這一項後改為只累加目前可見的列:例如篩出 1 個 100 積分的帳號,合計就是 100,而不是同組兩個帳號之和 1,000。分頁不參與這個口徑 —— 翻頁看的是同一份結果的不同螢幕,合計不隨頁碼變化。「隱藏帳號名」與表頭「帳號」旁邊那顆眼睛是同一個開關:開啟後帳號欄的名字整體顯示成星號,適合截圖分享時遮蔽帳號。", "账户": "帳戶", "超出保留天数的部分会被删除:事件日志是登录、账号切换、429 切换这类系统事件。把天数改小(例如 30 天改成 7 天)保存后会立即删除超出的历史数据,此操作不可恢复;改大或保持不变不会删除任何数据。可填范围为 1–3650 天。请求日志 / 按天聚合 / 签到记录已全量保留、不再自动删除,要清历史请到对应页面手动清空。": "超出保留天數的部分會被刪除:事件日誌是登入、帳號切換、429 切換這類系統事件。把天數改小(例如 30 天改成 7 天)儲存後會立即刪除超出的歷史資料,此操作不可恢復;改大或保持不變不會刪除任何資料。可填範圍為 1–3650 天。請求日誌 / 按天聚合 / 簽到記錄已全量保留、不再自動刪除,要清歷史請到對應頁面手動清空。", "超出的历史数据会被立即删除,且不可恢复。": "超出的歷史資料會被立即刪除,且不可恢復。", "超时": "超時", "超时设置已刷新": "超時設定已重新整理", "跟随模型配置": "跟隨模型配置", "跟随系统 · 浅色 · 深色": "跟隨系統 · 淺色 · 深色", "跟随默认": "跟隨預設", "跨域访问": "跨域存取", "路由": "路由", "路由组只使用组内成员;普通路由只使用参与范围内的账号和模型。": "路由組只使用組內成員;普通路由只使用參與範圍內的帳號和模型。", "路由设置已刷新": "路由設定已重新整理", "跳过 {n} 个": "跳過 {n} 個", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;负载均衡是每条请求换下一位,把负载摊到各个账号上。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护默认生效,不需要配置:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时),被 429 的账号垫底排到队尾一圈,余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 恢复后自动回到队列。": "轉發一個請求時按什麼順序挑帳號:①「路由策略」決定排隊規則 —— 順序優先是排第 1 的接走所有請求、直到它不能答(限流 / 故障 / 額度盡)才輪到下一位;負載均衡是每條請求換下一位,把負載攤到各個帳號上。②「會話粘性」讓同一會話(相同的模型 + 相同的開頭訊息)儘量跟住同一個帳號 —— 多輪對話的上下文快取能複用、少換號少浪費;自動檔粘 5 分鐘、會話內檔粘 6 小時、每輪與關閉都不粘。帳號的排隊位次(帳號表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由還有三層自愈保護預設生效,不需要配置:轉發失敗的帳號退避休息一會兒(15 分鐘起步翻倍、封頂 1 小時),被 429 的帳號墊底排到隊尾一圈,餘額不足 / Token 週期用量到頂的帳號由限制器攔下 —— 恢復後自動回到佇列。", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;负载均衡是每条请求换下一位,把负载摊到各个账号上。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时)、被 429 的账号垫底排到队尾 30 分钟、余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 前两层可以在下面按需开关,限制器由账号的「限制器」设置管。": "轉發一個請求時按什麼順序挑帳號:①「路由策略」決定排隊規則 —— 順序優先是排第 1 的接走所有請求、直到它不能答(限流 / 故障 / 額度盡)才輪到下一位;負載均衡是每條請求換下一位,把負載攤到各個帳號上。②「會話粘性」讓同一會話(相同的模型 + 相同的開頭訊息)儘量跟住同一個帳號 —— 多輪對話的上下文快取能複用、少換號少浪費;自動檔粘 5 分鐘、會話內檔粘 6 小時、每輪與關閉都不粘。帳號的排隊位次(帳號表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由還有三層自愈保護:轉發失敗的帳號退避休息一會兒(15 分鐘起步翻倍、封頂 1 小時)、被 429 的帳號墊底排到隊尾 30 分鐘、餘額不足 / Token 週期用量到頂的帳號由限制器攔下 —— 前兩層可以在下面按需開關,限制器由帳號的「限制器」設定管。", "转发一个请求时按什么顺序挑账号:①「路由策略」决定排队规则 —— 顺序优先是排第 1 的接走所有请求、直到它不能答(限流 / 故障 / 额度尽)才轮到下一位;轮流均摊是每条请求换下一位,雨露均沾;余额优先是用量占比最低的先用,「谁空谁上」。②「会话粘性」让同一会话(相同的模型 + 相同的开头消息)尽量跟住同一个账号 —— 多轮对话的上下文缓存能复用、少换号少浪费;自动档粘 5 分钟、会话内档粘 6 小时、每轮与关闭都不粘。账号的排队位次(账号表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由还有三层自愈保护默认生效,不需要配置:转发失败的账号退避休息一会儿(15 分钟起步翻倍、封顶 1 小时),被 429 的账号垫底排到队尾一圈,余额不足 / Token 周期用量到顶的账号由限制器拦下 —— 恢复后自动回到队列。": "轉發一個請求時按什麼順序挑帳號:①「路由策略」決定排隊規則 —— 順序優先是排第 1 的接走所有請求、直到它不能答(限流 / 故障 / 額度盡)才輪到下一位;輪流均攤是每條請求換下一位,雨露均霑;餘額優先是用量佔比最低的先用,「誰空誰上」。②「會話粘性」讓同一會話(相同的模型 + 相同的開頭訊息)儘量跟住同一個帳號 —— 多輪對話的上下文快取能複用、少換號少浪費;自動檔粘 5 分鐘、會話內檔粘 6 小時、每輪與關閉都不粘。帳號的排隊位次(帳號表的第一列)在所有策略下都是地基,策略在它之上再排。此外路由還有三層自愈保護預設生效,不需要配置:轉發失敗的帳號退避休息一會兒(15 分鐘起步翻倍、封頂 1 小時),被 429 的帳號墊底排到隊尾一圈,餘額不足 / Token 週期用量到頂的帳號由限制器攔下 —— 恢復後自動回到佇列。", "转发前压缩对话里内嵌的大图(只改发给上游的副本,生图与图片编辑不受影响)": "轉發前壓縮對話裡內嵌的大圖(只改發給上游的副本,生圖與圖片編輯不受影響)", "转发前将 developer 角色消息转换为 system,兼容不支持 developer 角色的 OpenAI 兼容上游": "轉發前將 developer 角色訊息轉換為 system,相容不支援 developer 角色的 OpenAI 相容上游", "转发失败的账号休息一会儿再回来:15 分钟起步,连续失败翻倍,封顶 1 小时;成功一次立即恢复。目的是「让这次失败先凉一会儿」,免得一条条地反复撞同一个坏账号。": "轉發失敗的帳號休息一會兒再回來:15 分鐘起步,連續失敗翻倍,封頂 1 小時;成功一次立即恢復。目的是「讓這次失敗先涼一會兒」,免得一條條地反覆撞同一個壞帳號。", "转发链路": "轉發鏈路", "转发链路 · 诊断 · 系统": "轉發鏈路 · 診斷 · 系統", "轮询间隔": "輪詢間隔", "软件标识超过 1 KB,已截断保存;匹配仅使用保留部分。": "軟體標識超過 1 KB,已截斷儲存;匹配僅使用保留部分。", "软件版本": "軟體版本", "轻量模式": "輕量模式", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 套餐池(Start Plan)通道不可用,相关请求会在请求日志里注明原因": "輕量模式已開啟:關窗即銷燬介面程序(釋放約 200MB 記憶體),閘道器在後臺繼續;介面銷燬期間 ZCode 套餐池(Start Plan)通道不可用,相關請求會在請求日誌裡註明原因", "轻量模式已开启:关窗即销毁界面进程(释放约 200MB 内存),网关在后台继续;界面销毁期间 ZCode 活动套餐通道不可用,相关请求会在请求日志里注明原因": "輕量模式已開啟:關窗即銷燬介面程序(釋放約 200MB 記憶體),閘道器在後臺繼續;介面銷燬期間 ZCode 活動套餐通道不可用,相關請求會在請求日誌裡註明原因", "轻量模式(关窗释放界面内存)": "輕量模式(關窗釋放介面記憶體)", "辅助识图": "輔助識圖", "辅助识图 · 原模型回答": "輔助識圖 · 原模型回答", "辅助识图保留原模型回答;切换视觉模型会让视觉模型直接回答。本次授权也包含已设置的模型单独配置。": "輔助識圖保留原模型回答;切換視覺模型會讓視覺模型直接回答。本次授權也包含已設定的模型單獨配置。", "辅助识图或切换视觉模型,默认关闭": "輔助識圖或切換視覺模型,預設關閉", "辅助识图配置": "輔助識圖配置", "输入同步密码": "輸入同步密碼", "输入当前登录用的密码": "輸入目前登入用的密碼", "输入状态码,回车添加": "輸入狀態碼,回車新增", "运行形态": "執行形態", "近期没有命中样本,不代表未来请求不会命中。": "近期沒有命中樣本,不代表未來請求不會命中。", "还原": "還原", "还有额度时被 429 的账号排到队尾,30 分钟后自动回到队列(成功转发一次也会立即回来)。它标记的是「疑似共享池被别人抢」,不是「这个账号本身有问题」。⚠️ 注意它与路由策略的配合:在「家内轮询」下,队尾意味着这一家整体被往后排 —— 如果某个提供商的账号被批量限流,它们会集体沉到队尾,那个家可能长时间轮不到。这时可以关掉本项,让 429 过的账号只受冷却约束(冷却到点自动回来)。": "還有額度時被 429 的帳號排到隊尾,30 分鐘後自動回到佇列(成功轉發一次也會立即回來)。它標記的是「疑似共享池被別人搶」,不是「這個帳號本身有問題」。⚠️ 注意它與路由策略的配合:在「家內輪詢」下,隊尾意味著這一家整體被往後排 —— 如果某個提供商的帳號被批次限流,它們會集體沉到隊尾,那個家可能長時間輪不到。這時可以關掉本項,讓 429 過的帳號只受冷卻約束(冷卻到點自動回來)。", "还没有可用的视觉模型。": "還沒有可用的視覺模型。", "还没有可用的视觉模型。可以在「MCP & Skills」里配好那只视觉分析模型,或把上面的「视觉模型」换成某一只具体模型。": "還沒有可用的視覺模型。可以在「MCP & Skills」裡配好那隻視覺分析模型,或把上面的「視覺模型」換成某一隻具體模型。", "还没有同步过。": "還沒有同步過。", "还没有备选模型": "還沒有備選模型", "还没有添加服务器。点右上角「添加」,填入网关所在机器的 IP 或域名与端口。": "還沒有新增伺服器。點右上角「新增」,填入閘道器所在機器的 IP 或域名與連接埠。", "还没有装载任何数据。": "還沒有裝載任何資料。", "还没有读到版本信息": "還沒有讀到版本資訊", "还没有选择模型,这块设置暂时不起作用。": "還沒有選擇模型,這塊設定暫時不起作用。", "这一份就是「替换 / 追加」模式下网关要发的 system 正文。": "這一份就是「替換 / 追加」模式下閘道器要發的 system 正文。", "这一项已隐藏": "這一項已隱藏", "这一项正在显示": "這一項正在顯示", "这些名称可以直接写进来源声明,不能编辑。": "這些名稱可以直接寫進來源宣告,不能編輯。", "这些模型的请求交给当前路由内可用的视觉模型回答,不再回到原模型。": "這些模型的請求交給目前路由內可用的視覺模型回答,不再回到原模型。", "这些模型看到图片时,先把图片交给 {model} 读一遍,再由它们自己结合读到的内容回答。": "這些模型看到圖片時,先把圖片交給 {model} 讀一遍,再由它們自己結合讀到的內容回答。", "这些模型看到图片时,先把图片交给「沿用工具服务的视觉分析模型」读一遍,再由它们自己结合读到的内容回答。": "這些模型看到圖片時,先把圖片交給「沿用工具服務的視覺分析模型」讀一遍,再由它們自己結合讀到的內容回答。", "这只模型只负责看图,最终仍由原模型回答。": "這隻模型只負責看圖,最終仍由原模型回答。", "这只模型已经在备选里了。": "這隻模型已經在備選裡了。", "这只模型直接接收图片与对话,完成本次回答。": "這隻模型直接接收圖片與對話,完成本次回答。", "这台网关未启用机器人校验": "這臺網關未啟用機器人校驗", "这台网关没有管理员,用一把已启用的 API Key 访问。": "這臺網關沒有管理員,用一把已啟用的 API Key 存取。", "这条历史请求没有保存识别依据,不能据此自动创建规则。": "這條歷史請求沒有儲存識別依據,不能據此自動建立規則。", "这条规则已被删除,请关闭编辑后重新添加。": "這條規則已被刪除,請關閉編輯後重新新增。", "这条配置将对 {model} 生效。": "這條配置將對 {model} 生效。", "这次请求由视觉模型直接回答,不回原模型;{fallback}": "這次請求由視覺模型直接回答,不回原模型;{fallback}", "这里只列出已保存的提供商配置;未配置的提供商沿用全局设置,可从下拉框手动添加。用户保存的模式、文件和正文优先于全局设置,「跟随默认」只取消该提供商的模式、文件和正文覆盖。ZCode 套餐池默认由插件按三块装配,客户端系统正文合入第三块,不会自动创建替换规则;手动修改的网关提示词段或关闭开关仍以用户配置为准,能否被接受取决于上游规则。": "這裡只列出已儲存的提供者設定;未設定的提供者沿用全域設定,可從下拉選單手動新增。使用者儲存的模式、檔案與本文優先於全域設定,「跟隨預設」只取消該提供者的模式、檔案與本文覆寫。ZCode 套餐池預設由外掛按三塊組裝,客戶端系統本文合入第三塊,不會自動建立替換規則;手動修改的閘道提示詞段或關閉開關仍以使用者設定為準,能否被接受取決於上游規則。", "进程 PID": "程序 PID", "远程根目录": "遠端根目錄", "远端同一路径下的旧快照。事件日志、请求明细与调试报文不会上传。": "遠端同一路徑下的舊快照。事件日誌、請求明細與除錯報文不會上傳。", "远端已有一份快照,将被覆盖": "遠端已有一份快照,將被覆蓋", "远端快照使用了另一把账号密钥,但没有携带密钥文件,无法在本机解密。请在原来那台机器上重新上传一次。": "遠端快照使用了另一把帳號金鑰,但沒有攜帶金鑰檔案,無法在本機解密。請在原來那臺機器上重新上傳一次。", "远端快照使用的账号密钥与本机不同。请输入上传那台机器设置的同步密码,用它解出密钥装到本机后再继续下载。": "遠端快照使用的帳號金鑰與本機不同。請輸入上傳那臺機器設定的同步密碼,用它解出金鑰裝到本機後再繼續下載。", "远端数据与当前版本不兼容": "遠端資料與當前版本不相容", "远端该路径下还没有快照,本次是首次上传。": "遠端該路徑下還沒有快照,本次是首次上傳。", "远端路径:{path}": "遠端路徑:{path}", "远端还没有可下载的同步数据": "遠端還沒有可下載的同步資料", "连不上这台网关。确认地址与端口正确、网关已启动,且已开启「局域网访问」;用 https 时还要确认证书有效": "連不上這臺網關。確認地址與連接埠正確、閘道器已啟動,且已開啟「區域網路存取」;用 https 時還要確認證書有效", "连不上这台网关。请确认地址、端口与防火墙设置,网关需已启动;桌面端请在「设置 → 网关 → 网络访问」开启「允许其他设备访问网关」。使用 HTTPS 时还需确认证书有效。": "無法連線到這台閘道。請確認位址、連接埠與防火牆設定,閘道需已啟動;桌面端請在「設定 → 閘道 → 網路存取」開啟「允許其他裝置存取閘道」。使用 HTTPS 時還需確認憑證有效。", "连接中超时": "連線中超時", "连接失败:{message}": "連線失敗:{message}", "连续失败到阈值后把这个账号整个打开(默认关)。与失败退避的分工:退避管「单次失败先凉一会儿」,惩罚轻、自动恢复;熔断管「这个账号现在整体不对劲,别再一条条地试」,要连续成功若干次才关。打开期间该账号被跳过,除非全场只剩它 —— 那时仍放行试一次。": "連續失敗到閾值後把這個帳號整個開啟(預設關)。與失敗退避的分工:退避管「單次失敗先涼一會兒」,懲罰輕、自動恢復;熔斷管「這個帳號現在整體不對勁,別再一條條地試」,要連續成功若干次才關。開啟期間該帳號被跳過,除非全場只剩它 —— 那時仍放行試一次。", "追加": "追加", "追加网关提示词": "追加閘道器提示詞", "退出失败:{message}": "退出失敗:{message}", "退出登录": "退出登入", "退出这台服务器的登录,不影响其他服务器": "退出這臺伺服器的登入,不影響其他伺服器", "选好接管回答的视觉模型后这块设置才会生效。": "選好接管回答的視覺模型後這塊設定才會生效。", "选好模型后这条配置才会生效。": "選好模型後這條配置才會生效。", "选好视觉模型后这块设置才会生效。": "選好視覺模型後這塊設定才會生效。", "选定提供商": "選定供應商", "选择一个或多个模型": "選擇一個或多個模型", "选择位置并加密备份": "選擇位置並加密備份", "选择备份文件并恢复": "選擇備份檔案並恢復", "选择提供商(可多选)": "選擇提供商(可多選)", "选路规则": "選路規則", "选项与默认值由已启用插件提供;你保存的覆盖值不会被插件更新替换。": "選項與預設值由已啟用外掛提供;你儲存的覆寫值不會被外掛更新取代。", "选项与默认值由插件提供,你保存的修改不会被插件更新覆盖。切换提供商不会丢失未保存的修改。": "選項與預設值由外掛提供,你儲存的修改不會被外掛更新覆寫。切換供應商不會遺失尚未儲存的修改。", "透传": "透傳", "透传 = 不动客户端 system;替换 = 删掉客户端的 system / developer,换成网关提示词;追加 = 保留客户端内容,在最前面多插一条。": "透傳 = 不動客戶端 system;替換 = 刪掉客戶端的 system / developer,換成閘道器提示詞;追加 = 保留客戶端內容,在最前面多插一條。", "透传客户端 system": "透傳客戶端 system", "透传客户端 system(默认)": "透傳客戶端 system(預設)", "通常是网络问题,点右侧重试": "通常是網路問題,點右側重試", "通用": "通用", "遇到 Bug、报错或异常行为": "遇到 Bug、報錯或異常行為", "配置目录下的 agent2api.db(账号、日志、请求记录、调试报文与设置都在里面)。": "配置目錄下的 agent2api.db(帳號、日誌、請求記錄、除錯報文與設定都在裡面)。", "采用本规则": "採用本規則", "重启后生效,不影响当前操作": "重啟後生效,不影響當前操作", "重命名": "重新命名", "重命名只更新分类显示名,不拆分历史用量,也不重新归类历史请求。": "重新命名只更新分類顯示名,不拆分歷史用量,也不重新歸類歷史請求。", "重命名客户端分类": "重新命名客戶端分類", "重复清理": "重複清理", "重复清理直到不再变化(仅正则删除)": "重複清理直到不再變化(僅正則刪除)", "重新读取会替换当前未保存的草稿。": "重新讀取會替換當前未儲存的草稿。", "重新读取设置": "重新讀取設定", "重编码质量": "重編碼質量", "重置会清空管理员账号与密码,面板将回到「未注册」状态。": "重置會清空管理員帳號與密碼,面板將回到「未註冊」狀態。", "重置管理员": "重置管理員", "重试设置已刷新": "重試設定已重新整理", "重试间隔": "重試間隔", "铸造守卫每隔多久看一次库存(毫秒)。只影响发现缺货的反应速度 —— 库存够用时轮询不会铸造任何令牌。默认 2500 毫秒,可填 1000–30000。": "鑄造守衛每隔多久看一次庫存(毫秒)。隻影響發現缺貨的反應速度 —— 庫存夠用時輪詢不會鑄造任何權杖。預設 2500 毫秒,可填 1000–30000。", "长边像素上限": "長邊畫素上限", "问题反馈": "問題反饋", "阿里云 OSS": "阿里雲 OSS", "限流中账号": "限流中帳號", "随包内嵌的快照(发版时的那份)": "隨包內嵌的快照(發版時的那份)", "随软件更新": "隨軟體更新", "隐藏 {name}": "隱藏 {name}", "隐藏分组 {name}": "隱藏分組 {name}", "隐藏用户名": "隱藏使用者名稱", "隐藏账号名(显示成星号)": "隱藏帳號名(顯示成星號)", "隐藏这一组": "隱藏這一組", "非流式响应超时": "非流式響應超時", "面板登录": "面板登入", "面板端口": "面板連接埠", "面板管理员账号": "面板管理員帳號", "韩语": "韓語", "项目来源": "專案來源", "预览不发送模型请求,也不修改历史记录。": "預覽不傳送模型請求,也不修改歷史記錄。", "预览中…": "預覽中…", "预览匹配": "預覽匹配", "预设": "預設", "首选不可用时再依次尝试备选。": "首選不可用時再依次嘗試備選。", "首选不可用时再依次尝试;留空则停止并说明原因。": "首選不可用時再依次嘗試;留空則停止並說明原因。", "验证方式": "驗證方式", "验证码令牌池": "驗證碼權杖池", "验证码令牌池设置已刷新": "驗證碼權杖池設定已重新整理", "验证码库存的参考目标,默认 3 个,可填 1–10。只影响库存状态展示,不会因为低于目标自动生成令牌或弹出验证码。": "驗證碼庫存的參考目標,預設 3 個,可填 1–10。只影響庫存狀態顯示,不會因為低於目標自動產生權杖或彈出驗證碼。", "高级设置": "進階設定", "默认 10000 条,按日志级别分配保留容量,超出后清理最旧的记录;同时受保留天数限制。": "預設 10000 筆,按日誌層級分配保留容量,超出後清理最舊的記錄;同時受保留天數限制。", "默认 1000000 条(100 万),超出后清理最旧的请求记录及其原始正文,不影响按天聚合报表;同时受保留天数限制。": "預設 1000000 筆(100 萬),超出後清理最舊的請求記錄及其原始本文,不影響每日彙總報表;同時受保留天數限制。", "默认 5 分钟。间隔内的变化合并为最新快照,到期后上传;手动上传不受限制。失败后会延长等待并自动重试。": "預設 5 分鐘。間隔內的變更合併為最新快照,到期後上傳;手動上傳不受限制。失敗後會延長等待並自動重試。", "默认仅本机可访问(127.0.0.1)。开启后监听所有 IPv4 网卡(0.0.0.0),访问范围由网络与防火墙决定,不限于局域网,也不会自动开放到公网。开启前必须注册面板管理员;管理接口需要管理员会话或网关 Key,API 调用需要启用的网关 Key,没有时会自动创建一把「默认」Key。「同时开放网页管理面板」默认关闭,开启后可从其他设备的浏览器登录管理;关闭它不影响 API 转发和本机桌面管理。修改任一开关都需要重启应用。": "預設僅本機可存取(127.0.0.1)。開啟後監聽所有 IPv4 網路介面卡(0.0.0.0),存取範圍由網路與防火牆決定,不限於區域網路,也不會自動開放到公網。開啟前必須註冊面板管理員;管理介面需要管理員工作階段或閘道 Key,API 呼叫需要已啟用的閘道 Key,沒有時會自動建立一把「預設」Key。「同時開放網頁管理面板」預設關閉,開啟後可從其他裝置的瀏覽器登入管理;關閉它不影響 API 轉發和本機桌面管理。修改任一開關都需要重新啟動應用程式。", "默认值通常够用,出问题时才需要调": "預設值通常夠用,出問題時才需要調", "默认关闭。开启后下一次 Codex 请求立即生效,不用重启;只对 Codex 来源的 /v1/responses 请求补阶段标记,其它客户端与 /v1/chat/completions 不受影响。": "預設關閉。開啟後下一次 Codex 請求立即生效,不用重啟;只對 Codex 來源的 /v1/responses 請求補階段標記,其它客戶端與 /v1/chat/completions 不受影響。", "默认关闭。改动立即生效,不用重启;关闭期间的跨源请求会被预检拦下。": "預設關閉。改動立即生效,不用重啟;關閉期間的跨源請求會被預檢攔下。", "默认关闭窗口不会退出程序,而是把窗口缩到系统托盘,转发继续在后台运行(OpenAI 客户端不受影响);要彻底退出程序,请在托盘图标上右键选「退出」。关掉这个开关后,点关闭按钮即退出程序、转发随之中断。「开机自动启动」开启后,登录系统时会自动启动本程序(通常直接驻留托盘),不需要手动打开。": "預設關閉視窗不會退出程式,而是把視窗縮到系統托盤,轉發繼續在後臺執行(OpenAI 客戶端不受影響);要徹底退出程式,請在托盤圖示上右鍵選「退出」。關掉這個開關後,點關閉按鈕即退出程式、轉發隨之中斷。「開機自動啟動」開啟後,登入系統時會自動啟動本程式(通常直接駐留托盤),不需要手動開啟。", "默认关闭,先配置好再开启;关闭后配置会保留。": "預設關閉,先配置好再開啟;關閉後配置會保留。", "默认应用全部提供商(包含之后新增的插件与自定义提供商)。指定范围后,未选中的提供商不做指纹脱敏;清空选择自动回到全部提供商。": "預設應用全部提供商(包含之後新增的外掛與自定義提供商)。指定範圍後,未選中的提供商不做指紋脫敏;清空選擇自動回到全部提供商。", "默认开启。只改 role 字段本身,消息内容与顺序都不动;本项只改发给上游的副本,客户端看到的响应内容不变。": "預設開啟。只改 role 欄位本身,訊息內容與順序都不動;本項只改發給上游的副本,客戶端看到的響應內容不變。", "默认开启。只改发给上游的副本,客户端看到的响应与原图都不变;请求日志里保存的是客户端发来的原图,不是压缩后的版本。只作用在对话链路,生图 / 图片编辑不经过这里。改完对下一个请求立即生效,不用重启。": "預設開啟。只改發給上游的副本,客戶端看到的響應與原圖都不變;請求日誌裡儲存的是客戶端發來的原圖,不是壓縮後的版本。只作用在對話鏈路,生圖 / 圖片編輯不經過這裡。改完對下一個請求立即生效,不用重啟。", "默认开启。命中明细会记进请求日志的「敏」标签(悬停可看命中了哪几条规则)。本项只改发给上游的副本,客户端看到的响应内容不变。": "預設開啟。命中明細會記進請求日誌的「敏」標籤(懸停可看命中了哪幾條規則)。本項只改發給上游的副本,客戶端看到的響應內容不變。", "默认开启并应用全部提供商。编辑词表或应用范围后点击「保存设置」,下一次请求立即生效,不用重启。命中明细仍记进请求日志的「敏」标签。": "預設開啟並應用全部提供商。編輯詞表或應用範圍後點擊「儲存設定」,下一次請求立即生效,不用重啟。命中明細仍記進請求日誌的「敏」標籤。", "默认网关只监听 127.0.0.1,只有本机能访问。开启后网关改听所有网卡,同一局域网内的设备可以把 API 地址指向本机 IP 一起使用。出于安全考虑,开启前必须先注册一个面板管理员:管理接口从此要求管理员会话或网关 Key,模型额度不会对局域网裸奔;一把启用的网关 Key 都没有时,转发接口也会拒绝服务,直到创建第一把。改动需要重启应用生效。「同时开放网页管理面板」把管理界面也出给局域网(其他设备的浏览器打开本机 IP 即可管理),默认关闭 —— 桌面端的面板仍只由本程序自己出。": "預設閘道器只監聽 127.0.0.1,只有本機能存取。開啟後閘道器改聽所有網路卡,同一區域網路內的裝置可以把 API 地址指向本機 IP 一起使用。出於安全考慮,開啟前必須先註冊一個面板管理員:管理介面從此要求管理員會話或閘道器 Key,模型額度不會對區域網路裸奔;一把啟用的閘道器 Key 都沒有時,轉發介面也會拒絕服務,直到建立第一把。改動需要重啟應用生效。「同時開放網頁管理面板」把管理介面也出給區域網路(其他裝置的瀏覽器開啟本機 IP 即可管理),預設關閉 —— 桌面版的面板仍只由本程式自己出。", "({n} 个整组隐藏)": "({n} 個整組隱藏)", "({n} 行)": "({n} 行)", "({n} 项被覆盖)": "({n} 項被覆蓋)", "(全部为默认值)": "(全部為預設值)", "(官方原文)": "(官方原文)", "(已存一份正文,{n} 行;切成「替换 / 追加」后生效)": "(已存一份正文,{n} 行;切成「替換 / 追加」後生效)", "(已改)": "(已改)", "(已注册过会跳过这一步,直接生效)。": "(已註冊過會跳過這一步,直接生效)。", "(当前生效的就是这一份,{n} 行)": "(當前生效的就是這一份,{n} 行)", "(文件:{path})": "(檔案:{path})", "(未生效)": "(未生效)", ",{items}": ",{items}", ",{time}": ",{time}", ",以及代理池 / 订阅里可能存在的代理凭据。请使用只有你能访问的私有存储;账号密钥由同步密码单独加密,泄露存储本身不等于泄露账号。": ",以及代理池 / 訂閱裡可能存在的代理憑據。請使用只有你能存取的私有儲存;帳號金鑰由同步密碼單獨加密,洩露儲存本身不等於洩露帳號。", ",包括恢复后需要重新登录管理面板。": ",包括恢復後需要重新登入管理面板。", ",可直接用于登录。请妥善保管,不要外传或上传到公共位置。": ",可直接用於登入。請妥善保管,不要外傳或上傳到公共位置。", ",文件里后续的改动在清空这里之前不再生效": ",檔案裡後續的改動在清空這裡之前不再生效", ",替换前的数据已备份为 {name}": ",替換前的資料已備份為 {name}", ",自定义提供商新增 {added} 个、更新 {updated} 个": ",自定義提供商新增 {added} 個、更新 {updated} 個", ";开关关闭时词表不执行": ";開關關閉時詞表不執行", ";网页管理面板已一并开放(浏览器打开同一地址)": ";網頁管理面板已一併開放(瀏覽器開啟同一地址)" }); diff --git a/desktop-tauri/ui/islands/ui.css b/desktop-tauri/ui/islands/ui.css index e1377d9a..92b3c551 100644 --- a/desktop-tauri/ui/islands/ui.css +++ b/desktop-tauri/ui/islands/ui.css @@ -1 +1 @@ -@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){:root,:host{--shimmer-angle:20deg}*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0;--scroll-fade-t:0px;--scroll-fade-b:0px;--scroll-fade-s:0px;--scroll-fade-e:0px;--scroll-fade-mask:initial;--shimmer-image:initial;--shimmer-text-fill:initial}}}@layer theme{:root,:host{--font-sans:var(--ui-font-sans);--font-mono:var(--ui-font-mono);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-wide:.025em;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--radius-xs:6px;--radius-sm:8px;--radius-md:10px;--radius-lg:14px;--radius-xl:18px;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--radius-pill:999px;--shadow-1:var(--ui-shadow-1);--shadow-2:var(--ui-shadow-2);--shadow-3:var(--ui-shadow-3)}}@layer base{*,:before,:after{box-sizing:border-box}button,input,select,textarea{font:inherit}button:not(:disabled),[role=button]:not(:disabled){cursor:pointer}button:disabled{cursor:not-allowed}[hidden]:not([hidden=until-found]){display:none!important}}@layer components{.tip-q{border:1px solid var(--ui-border-strong);width:16px;height:16px;color:var(--ui-muted-foreground);cursor:help;border-radius:999px;flex:none;place-items:center;font-size:10.5px;font-weight:700;line-height:1;display:inline-grid}.tip-q:hover,.tip-q:focus-visible,.tip-q.active{border-color:var(--ui-primary);background:var(--ui-primary-soft);color:var(--ui-primary-fg)}.tip-q:focus-visible{box-shadow:var(--ui-focus-ring);outline:none}[data-slot=button][data-on=true],[data-slot=button][aria-pressed=true],[data-slot=button][data-active=true]{border-color:var(--ui-primary-bd);background:var(--ui-primary-soft);color:var(--ui-primary-fg)}.col-grip{cursor:col-resize;z-index:3;width:9px;height:100%;position:absolute;top:0;right:-4px}.col-grip:after{content:"";background:var(--ui-border-strong);width:1px;height:20px;position:absolute;top:50%;left:4px;transform:translateY(-50%)}.col-grip.active:after{background:var(--ui-primary);width:2px;left:3.5px}.col-grip-end{right:0}body.col-resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}[data-selection-indicator]{pointer-events:none;opacity:0;transition:none;position:absolute;top:0;left:0}[data-selection-indicator][data-ready=true]{opacity:1}[data-selection-indicator][data-animate=true]{transition:transform .15s cubic-bezier(.2,.8,.2,1),width .15s cubic-bezier(.2,.8,.2,1),height .15s cubic-bezier(.2,.8,.2,1)}[data-slot=segmented-thumb]{border-radius:var(--radius-sm);background:var(--ui-card);box-shadow:var(--ui-shadow-1)}[data-slot=nav-list-indicator]{z-index:-1;border:1px solid var(--ui-selection-border,var(--ui-nav-selected-border));border-radius:var(--radius-md);background:var(--ui-selection-bg,var(--ui-nav-selected-bg));box-shadow:var(--ui-selection-shadow,none)}[data-slot=nav-item][data-sliding][data-active]{background:0 0;border-color:#0000}[data-slot=nav-item][data-sliding]{transition:color .15s ease-out}@media(prefers-reduced-motion:reduce){[data-selection-indicator][data-animate=true]{transition:none}}.field-grid{grid-template-columns:repeat(auto-fit,minmax(178px,1fr));gap:10px;display:grid}.field{border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-inset);min-width:0;padding:12px 13px}.field .label{color:var(--text-3);align-items:center;gap:6px;margin-bottom:4px;font-size:11.5px;display:flex}.field .value{word-break:break-all;font-size:13px;font-weight:600;line-height:1.5}.field .value.mono{font-family:var(--font-mono);font-size:12.5px;font-weight:500}.field .value .sub{color:var(--text-3);font-size:11.5px;font-weight:400}.field code{font-family:var(--font-mono);font-size:12.5px}.copy-btn{border-radius:var(--r-xs);width:21px;height:21px;box-shadow:none;color:var(--text-3);background:0 0;border:1px solid #0000;flex:none;justify-content:center;align-items:center;font-size:12px;display:inline-flex}.copy-btn:hover:not(:disabled){background:var(--surface-3);border-color:var(--border);color:var(--primary)}.copy-btn.done{color:var(--ok)}.detail{color:var(--text-2);font-size:12px;line-height:1.65}.hint{color:var(--text-2);font-size:11.5px;line-height:1.7}.hint code{border:1px solid var(--border);border-radius:var(--r-xs);background:var(--surface-3);padding:1px 5px}.hint strong,.detail strong{color:var(--text)}.empty{color:var(--text-3);text-align:center;padding:30px 16px;font-size:12.5px}.field-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.field-row>label,.field-row>[data-slot=field]>[data-slot=field-label]{color:var(--text-2);white-space:nowrap;font-size:12.5px}.check,.radio{color:var(--text-2);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:7px;font-size:12.5px;display:inline-flex}.check input,.radio input{accent-color:var(--primary);cursor:pointer;width:14px;height:14px;margin:0}.switch{color:var(--text-2);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:9px;font-size:12.5px;display:inline-flex}.toolbar{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:10px 12px;padding:12px 16px;display:flex}.toolbar .group{align-items:center;gap:6px;min-width:0;display:inline-flex}.toolbar .group>.label{color:var(--text-3);white-space:nowrap;font-size:11.5px}.toolbar .actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:7px;margin-left:auto;display:flex}.toolbar .divider{background:var(--border);flex:none;width:1px;height:18px}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-2);margin-bottom:14px;position:relative;overflow:clip}.panel-head{border-bottom:1px solid var(--hairline);flex-wrap:wrap;align-items:center;gap:9px;padding:12px 16px;display:flex}.panel-head h2{font-size:13.5px;font-weight:650}.panel-head .panel-sub{color:var(--text-3);font-size:11.5px}.panel-body{flex-direction:column;gap:12px;padding:14px 16px;display:flex}.panel-foot{border-top:1px solid var(--hairline);background:var(--surface-inset);color:var(--text-2);flex-wrap:wrap;align-items:center;gap:10px;padding:9px 16px;font-size:11.5px;line-height:1.6;display:flex}.shell{grid-template-columns:var(--sidebar-w) minmax(0,1fr);grid-template-rows:minmax(0,1fr);height:100vh;display:grid;overflow:hidden}body.has-titlebar .shell{height:calc(100vh - var(--titlebar-h))}.sidebar{z-index:5;background:var(--sidebar-bg);border-right:1px solid var(--sidebar-border);flex-direction:column;gap:12px;padding:14px 12px 10px;display:flex;position:relative}.brand{border-bottom:1px solid var(--sidebar-border);justify-content:center;align-items:center;gap:10px;padding:2px 4px 12px;display:flex}.brand-logo{flex:none;place-items:center;display:grid}.brand-logo svg{display:block}.brand-text{min-width:0}.brand h1{white-space:nowrap;font-size:18px;font-weight:650;line-height:1.35}.nav{flex-direction:column;flex:auto;gap:2px;min-height:0;padding-bottom:4px;display:flex;overflow-y:auto}.nav-group-label{color:var(--sidebar-muted);letter-spacing:.09em;text-transform:uppercase;padding:8px 8px 5px;font-size:10.5px;font-weight:600}.nav-group-label:first-child{padding-top:0}.nav-empty{border:1px dashed var(--sidebar-border);border-radius:var(--r-sm);color:var(--sidebar-muted);text-align:center;margin:4px 2px;padding:10px 9px;font-size:11px;line-height:1.7}.sidebar-foot{border-top:1px solid var(--sidebar-border);flex-direction:column;flex:none;gap:8px;padding-top:10px;display:flex}.sidebar-status{border:1px solid var(--sidebar-border);border-radius:var(--r-sm);background:var(--surface);color:var(--sidebar-fg);flex-direction:column;gap:5px;padding:7px 10px;font-size:11.5px;line-height:1.4;display:flex}.status-line{align-items:center;gap:7px;min-width:0;display:flex}.sidebar-status .txt{text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums;min-width:0;overflow:hidden}.status-actions{flex-wrap:wrap;gap:4px;margin-top:3px;display:flex}.status-actions button{white-space:nowrap;flex:auto;min-width:0}.main{flex-direction:column;min-width:0;display:flex;position:relative;overflow:hidden}.topbar{height:var(--topbar-h);padding:0 max(var(--pad),calc((100% - var(--content-max)) / 2));border-bottom:1px solid var(--hairline);background:0 0;flex:none;align-items:center;gap:10px;display:flex}.crumb{min-width:0;color:var(--text-3);align-items:center;gap:7px;font-size:12px;display:flex}.crumb .sep{opacity:.5}.crumb .cur{color:var(--text);font-size:13px;font-weight:650}.topbar-actions{align-items:center;gap:7px;display:flex}.content{min-height:0;padding:var(--pad) var(--pad) 0;flex-direction:column;flex:auto;display:flex;overflow:hidden}.content-inner{width:100%;max-width:var(--content-max);flex-direction:column;flex:1;min-height:0;margin:0 auto;display:flex}@media(min-width:768px)and (max-width:900px){.nav-item{justify-content:center;padding:9px 0}.nav-item [data-slot=nav-item-label],.nav-item .count{display:none}#theme-switch [data-slot=segmented-control]{flex-direction:column}}.nav-item .ico svg{display:block}.panel-fold:not([data-open])>.panel-head{border-bottom:0}.acct-filter-body>.group{flex-direction:column;gap:6px;display:flex}.acct-filter-body>.group>.label{color:var(--ui-muted-foreground);font-size:11.5px;font-weight:600}.acct-filter-body>.divider{display:none}.acct-filter-body>.group>:not(.label),.model-filter-body>*,.proxy-filter-body>*{width:100%;min-width:0;max-width:none}.proxy-filter-body>.ml-auto{text-align:left;margin-left:0}.acct-filter-body [data-slot=segmented-control],.model-filter-body [data-slot=segmented-control],.proxy-filter-body [data-slot=segmented-control]{width:100%}.acct-filter-body [data-slot=segmented-control]>[data-slot=segmented-item],.model-filter-body [data-slot=segmented-control]>[data-slot=segmented-item],.proxy-filter-body [data-slot=segmented-control]>[data-slot=segmented-item]{flex:1 1 0;justify-content:center;min-width:0}@media(max-width:767px){.acct-filter-open{flex:1 1 0;min-width:0}.sidebar{height:100%;position:relative;transform:none}.sidebar .nav-item .label,.sidebar .nav-group-label,.sidebar .brand-text,.sidebar .sidebar-status .txt{display:block}.sidebar .nav-item{justify-content:flex-start}.sidebar .sidebar-status{align-items:flex-start}.sidebar .status-line{justify-content:flex-start}.sidebar .status-actions{display:flex}}.badge.tag.running,.badge.tag.phase-connecting,.badge.tag.phase-streaming{border-color:var(--ui-success-bd);background:var(--ui-success-soft);color:var(--ui-success)}.badge.tag.phase-waiting{border-color:var(--ui-info-bd);background:var(--ui-info-soft);color:var(--ui-info)}.badge.tag.phase-retrying,.badge.tag.phase-queued{border-color:var(--ui-warning-bd);background:var(--ui-warning-soft);color:var(--ui-warning)}.badge.tag.sensitive{border-color:var(--ui-sensitive-bd);background:var(--ui-sensitive-soft);color:var(--ui-sensitive)}.ck-schedule-main{gap:14px;min-width:0;display:grid}.ck-schedule-heading{justify-content:space-between;align-items:center;gap:12px;min-width:0;display:flex}.ck-schedule-heading h2{font-size:16px;font-weight:650}.ck-schedule-heading p{color:var(--text-3);margin-top:4px;font-size:12px;line-height:1.6}.ck-schedule-master-content{align-items:center;gap:18px;display:flex}.ck-schedule-master-copy{flex:1;min-width:0}.ck-schedule-title{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.ck-schedule-title h2{font-size:13.5px;font-weight:600}.ck-schedule-master-copy p{color:var(--text-3);margin-top:5px;font-size:11.5px}.ck-schedule-next{border-left:1px solid var(--border);flex:none;gap:2px;padding-left:18px;display:grid}.ck-schedule-next span,.ck-schedule-next small{color:var(--text-3);font-size:11px}.ck-schedule-next strong{color:var(--primary-fg);font-family:var(--font-mono);font-size:15px;font-weight:600}.ck-schedule-paused{border-top:1px solid var(--hairline);background:var(--surface-2);color:var(--text-3);padding:9px 16px;font-size:11.5px}.ck-schedule-section-heading{justify-content:space-between;align-items:center;gap:12px;padding-top:2px;display:flex}.ck-schedule-section-heading h3{font-size:13px;font-weight:600}.ck-schedule-section-heading>span{color:var(--text-3);font-size:11px}.ck-schedule-plan-head{justify-content:space-between}.ck-schedule-plan-name{flex-wrap:wrap;flex:1;align-items:center;gap:7px;min-width:0;display:flex}.ck-schedule-plan-name h3{overflow-wrap:anywhere;font-size:14px;font-weight:600}.ck-schedule-plan-name p{color:var(--text-3);flex-basis:100%;font-size:11.5px;line-height:1.6}.ck-schedule-plan-actions{flex-wrap:wrap;flex:none;align-items:center;gap:5px;display:flex}.ck-schedule-plan-actions [data-slot=switch]{margin-right:9px}.ck-schedule-plan-content{gap:12px;display:grid}.ck-schedule-today{color:var(--text-3);flex-wrap:wrap;align-items:center;gap:10px;font-size:11.5px;display:flex}.ck-schedule-today strong{color:var(--text-2);font-weight:500}.ck-schedule-time-groups{grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));align-items:start;gap:10px;display:grid}.ck-schedule-group{border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-2);min-width:0;padding:12px}.ck-schedule-group-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.ck-schedule-group-head strong{font-size:17px;font-weight:600;line-height:1.3}.ck-schedule-group-meta{color:var(--text-3);flex-wrap:wrap;align-items:center;gap:8px;margin-top:6px;font-size:11px;display:flex}.ck-schedule-group-logos{flex-wrap:wrap;align-items:center;gap:5px;min-height:30px;margin:11px 0;display:flex}.ck-schedule-group-logos>span{color:var(--text-3);font-size:11px}.ck-schedule-group-foot{border-top:1px solid var(--border);color:var(--text-3);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-top:10px;padding-top:7px;font-size:11px;display:flex}.ck-schedule-group-details{padding-top:5px}.ck-schedule-group-detail{border-bottom:1px solid var(--hairline);color:var(--text-2);justify-content:space-between;align-items:flex-start;gap:10px;padding:6px 0;font-size:11.5px;display:flex}.ck-schedule-group-detail:last-child{border-bottom:0}.ck-schedule-group-detail>span{overflow-wrap:anywhere}.ck-schedule-group-detail>small{color:var(--text-3);text-align:right;flex:none;font-size:10.5px}.ck-schedule-detail-progress{margin-top:2px;display:block}.ck-schedule-plan-note{color:var(--text-3);justify-content:space-between;align-items:center;gap:10px;font-size:11px;display:flex}.ck-schedule-plan-footer{background:var(--surface-2)}.ck-schedule-plan-footer [data-slot=button]{margin-left:auto}.ck-schedule-rules h3{font-size:12.5px;font-weight:600}.ck-schedule-rules [data-slot=card-content]{color:var(--text-3);gap:5px;font-size:11.5px;line-height:1.7;display:grid}.ck-schedule-rules [data-slot=button]{justify-self:start}.ck-schedule-extras{gap:12px;display:grid}.ck-schedule-extras .ck-region-row{margin-top:0}.ck-schedule-empty{justify-items:start;gap:12px;padding:26px 16px;display:grid}.ck-schedule-hint{color:var(--text-3);font-size:11.5px;line-height:1.7}.ck-schedule-error{color:var(--danger);font-size:11.5px;line-height:1.6}.ck-schedule-editor-dialog{width:min(1000px,100vw - 48px)}.ck-schedule-editor-body{grid-template-columns:minmax(0,1fr) 270px;gap:0;padding:0;display:grid}.ck-schedule-editor-fields{min-width:0;padding:0 20px 18px}.ck-schedule-form-section{border-bottom:1px solid var(--hairline);padding:18px 0}.ck-schedule-form-section h3,.ck-schedule-preview h3{font-size:12.5px;font-weight:600}.ck-schedule-basic-fields{grid-template-columns:minmax(0,1fr) 128px 128px;gap:12px;margin:13px 0 7px;display:grid}.ck-schedule-field{color:var(--text-2);align-items:stretch;gap:6px;font-size:12px;font-weight:400;display:grid}.ck-schedule-field small{color:var(--text-3);margin-left:4px;font-size:10.5px;font-weight:400}.ck-schedule-form-title{justify-content:space-between;align-items:center;gap:10px;display:flex}.ck-schedule-form-title>span{color:var(--text-3);font-size:11px}.ck-schedule-picker-tools{align-items:center;gap:7px;margin:13px 0 10px;display:flex}.ck-schedule-picker-tools>input{flex:1}.ck-schedule-picker{gap:6px;max-height:350px;padding:1px 4px 1px 1px;display:grid;overflow:auto}.ck-schedule-picker-row{border:1px solid var(--border);border-radius:var(--r-xs);align-items:center;gap:12px;min-width:0;padding:7px 9px;display:flex}.ck-schedule-picker-row.selected{border-color:var(--primary-bd);background:var(--primary-soft)}.ck-schedule-picker-label{cursor:pointer;flex:1;align-items:center;gap:9px;min-width:0;font-weight:400;display:flex}.ck-schedule-picker-name{overflow-wrap:anywhere;min-width:0;font-size:12px}.ck-schedule-picker-name small{color:var(--text-3);font-size:10px;display:block}.ck-schedule-picker-time{flex-direction:column;flex:none;align-items:center;gap:3px;display:flex}.ck-schedule-picker-time input{width:108px}.ck-schedule-picker-time>span,.ck-schedule-picker-time>small{color:var(--text-3);font-size:10px}.ck-schedule-picker-time [data-slot=button]{height:18px;font-size:10px}.ck-schedule-editor-note{border:1px solid var(--border);border-radius:var(--r-xs);background:var(--surface-2);color:var(--text-3);padding:10px 12px;font-size:11px;line-height:1.7}.ck-schedule-editor-fields>.ck-schedule-editor-note{margin-top:14px}.ck-schedule-preview{border-left:1px solid var(--border);background:var(--surface-2);min-width:0;padding:18px 16px}.ck-schedule-preview>p{color:var(--text-3);margin-top:5px;font-size:11px;line-height:1.7}.ck-schedule-preview-groups{gap:13px;margin:20px 0;display:grid}.ck-schedule-preview-group{border-left:2px solid var(--primary-bd);flex-wrap:wrap;align-items:center;gap:7px;padding-left:11px;display:flex}.ck-schedule-preview-group>strong{font-size:17px;font-weight:600}.ck-schedule-preview-group>div{color:var(--text-3);overflow-wrap:anywhere;flex-basis:100%;font-size:11px;line-height:1.75}.ck-schedule-preview .ck-schedule-preview-note{border-top:1px solid var(--border);margin-top:16px;padding-top:12px}.ck-schedule-footer-note{color:var(--text-3);margin-right:auto;font-size:11px}.ck-makeup-rule{color:var(--text-2);flex-wrap:wrap;align-items:center;gap:14px;font-size:11.5px;display:flex}.ck-makeup-group-providers{color:var(--text-3);overflow-wrap:anywhere;margin-top:10px;font-size:11.5px;line-height:1.75}.ck-activity-retry-notice{color:var(--text-3);flex-wrap:wrap;align-items:center;gap:10px;font-size:11.5px;display:flex}.ck-activity-retry-notice [data-slot=button]{margin-left:auto}.ck-makeup-editor-dialog{width:min(700px,100vw - 48px)}.ck-makeup-setting{justify-content:space-between;align-items:center;gap:14px;display:flex}.ck-makeup-setting h3{font-size:12.5px;font-weight:600}.ck-makeup-setting p{color:var(--text-3);margin-top:4px;font-size:11.5px;line-height:1.7}.ck-makeup-editor-fields{grid-template-columns:1fr 1fr;gap:16px;display:grid}.ck-makeup-preview-table{table-layout:fixed;font-size:11.5px}.ck-makeup-preview-table th:first-child{width:58%}.ck-makeup-preview-table td{overflow-wrap:anywhere;vertical-align:top}@media(max-width:1000px){.ck-schedule-editor-body{grid-template-columns:minmax(0,1fr) 235px}.ck-schedule-next{padding-left:12px}.ck-schedule-master-content{gap:12px}}@media(max-width:767px){.ck-schedule-heading{flex-wrap:wrap;align-items:flex-start}.ck-schedule-master-content{flex-wrap:wrap}.ck-schedule-master-copy{flex-basis:calc(100% - 52px)}.ck-schedule-master-content>[data-slot=switch]{order:2}.ck-schedule-next{border-left:0;border-top:1px solid var(--border);flex-wrap:wrap;flex-basis:100%;order:3;align-items:center;gap:5px 9px;padding:10px 0 0;display:flex}.ck-schedule-next small{flex-basis:100%}.ck-schedule-plan-actions{flex-basis:100%;justify-content:flex-end}.ck-schedule-plan-actions [data-slot=switch]{margin-right:auto}.ck-schedule-plan-note{flex-wrap:wrap;align-items:flex-start}.ck-schedule-editor-dialog,.ck-makeup-editor-dialog{width:calc(100vw - 24px)}.ck-schedule-editor-body{grid-template-columns:minmax(0,1fr)}.ck-schedule-preview{border-left:0;border-top:1px solid var(--border)}.ck-schedule-basic-fields{grid-template-columns:minmax(0,1fr);gap:12px}.ck-schedule-picker-label [data-slot=avatar]{display:none}.ck-schedule-picker-time input{width:112px}.ck-schedule-footer-note{display:none}.ck-makeup-preview-table th:first-child{width:48%}}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.\!fixed{position:fixed!important}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{inset-inline:0}.top-0{top:0}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.top-4{top:calc(var(--spacing) * 4)}.right-0{right:0}.right-1{right:var(--spacing)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-5{right:calc(var(--spacing) * 5)}.bottom-0{bottom:0}.bottom-5{bottom:calc(var(--spacing) * 5)}.bottom-\[calc\(78px\+env\(safe-area-inset-bottom\,0px\)\)\]{bottom:calc(78px + env(safe-area-inset-bottom,0px))}.left-0{left:0}.left-1\/2{left:50%}.isolate{isolation:isolate}.z-10{z-index:10}.z-30{z-index:30}.z-35{z-index:35}.z-40{z-index:40}.z-\[1\]{z-index:1}.z-\[2\]{z-index:2}.z-\[35\]{z-index:35}.z-\[38\]{z-index:38}.z-\[90\]{z-index:90}.z-\[100\]{z-index:100}.z-\[2147482900\]{z-index:2147482900}.order-first{order:-9999}.order-last{order:9999}.col-start-1{grid-column-start:1}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.m-0{margin:0}.m-auto{margin:auto}.mx-3{margin-inline:calc(var(--spacing) * 3)}.mx-3\.5{margin-inline:calc(var(--spacing) * 3.5)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-auto{margin-inline:auto}.my-1{margin-block:var(--spacing)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-3\.5{margin-top:calc(var(--spacing) * 3.5)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-\[22px\]{margin-top:22px}.mt-auto{margin-top:auto}.mt-px{margin-top:1px}.mr-1{margin-right:var(--spacing)}.mr-auto{margin-right:auto}.mb-1{margin-bottom:var(--spacing)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\.5{margin-bottom:calc(var(--spacing) * 2.5)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-\[5px\]{margin-bottom:5px}.mb-\[18px\]{margin-bottom:18px}.mb-\[26px\]{margin-bottom:26px}.ml-1{margin-left:var(--spacing)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-2\.5{margin-left:calc(var(--spacing) * 2.5)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-\[50px\]{margin-left:50px}.ml-auto{margin-left:auto}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-\[5px\]{width:5px;height:5px}.size-\[7px\]{width:7px;height:7px}.size-\[10px\]{width:10px;height:10px}.size-\[15px\]{width:15px;height:15px}.size-\[17px\]{width:17px;height:17px}.size-\[21px\]{width:21px;height:21px}.size-\[22px\]{width:22px;height:22px}.size-\[26px\]{width:26px;height:26px}.size-full{width:100%;height:100%}.h-1{height:var(--spacing)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-\[3px\]{height:3px}.h-\[14px\]{height:14px}.h-\[21px\]{height:21px}.h-\[22px\]{height:22px}.h-\[26px\]{height:26px}.h-\[30px\]{height:30px}.h-\[34px\]{height:34px}.h-\[46px\]{height:46px}.h-\[min\(720px\,calc\(100vh-48px\)\)\]{height:min(720px,100vh - 48px)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-24{max-height:calc(var(--spacing) * 24)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-\[32vh\]{max-height:32vh}.max-h-\[36vh\]{max-height:36vh}.max-h-\[40vh\]{max-height:40vh}.max-h-\[46vh\]{max-height:46vh}.max-h-\[84px\]{max-height:84px}.max-h-\[85svh\]{max-height:85svh}.max-h-\[168px\]{max-height:168px}.max-h-\[210px\]{max-height:210px}.max-h-\[220px\]{max-height:220px}.max-h-\[280px\]{max-height:280px}.max-h-\[320px\]{max-height:320px}.max-h-\[420px\]{max-height:420px}.max-h-\[440px\]{max-height:440px}.max-h-\[640px\]{max-height:640px}.max-h-\[calc\(100vh-48px\)\]{max-height:calc(100vh - 48px)}.max-h-\[min\(48vh\,460px\)\]{max-height:min(48vh,460px)}.max-h-\[min\(70vh\,560px\)\]{max-height:min(70vh,560px)}.max-h-\[min\(260px\,var\(--available-height\)\)\]{max-height:min(260px,var(--available-height))}.max-h-\[min\(300px\,var\(--available-height\)\)\]{max-height:min(300px,var(--available-height))}.min-h-0{min-height:0}.min-h-5{min-height:calc(var(--spacing) * 5)}.min-h-7{min-height:calc(var(--spacing) * 7)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-10{min-height:calc(var(--spacing) * 10)}.min-h-26{min-height:calc(var(--spacing) * 26)}.min-h-80{min-height:calc(var(--spacing) * 80)}.min-h-\[18px\]{min-height:18px}.min-h-\[19px\]{min-height:19px}.min-h-\[21px\]{min-height:21px}.min-h-\[26px\]{min-height:26px}.min-h-\[30px\]{min-height:30px}.min-h-\[64px\]{min-height:64px}.min-h-\[200px\]{min-height:200px}.min-h-\[300px\]{min-height:300px}.min-h-\[320px\]{min-height:320px}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-9\.5{width:calc(var(--spacing) * 9.5)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-20{width:calc(var(--spacing) * 20)}.w-56{width:calc(var(--spacing) * 56)}.w-\[6\%\]{width:6%}.w-\[8\%\]{width:8%}.w-\[9\%\]{width:9%}.w-\[13\%\]{width:13%}.w-\[15\%\]{width:15%}.w-\[16\%\]{width:16%}.w-\[18\%\]{width:18%}.w-\[20\%\]{width:20%}.w-\[21\%\]{width:21%}.w-\[26px\]{width:26px}.w-\[30px\]{width:30px}.w-\[52px\]{width:52px}.w-\[74\%\]{width:74%}.w-\[76px\]{width:76px}.w-\[78px\]{width:78px}.w-\[84px\]{width:84px}.w-\[86px\]{width:86px}.w-\[92px\]{width:92px}.w-\[96px\]{width:96px}.w-\[108px\]{width:108px}.w-\[110px\]{width:110px}.w-\[120px\]{width:120px}.w-\[128px\]{width:128px}.w-\[132px\]{width:132px}.w-\[140px\]{width:140px}.w-\[160px\]{width:160px}.w-\[172px\]{width:172px}.w-\[180px\]{width:180px}.w-\[190px\]{width:190px}.w-\[196px\]{width:196px}.w-\[200px\]{width:200px}.w-\[220px\]{width:220px}.w-\[228px\]{width:228px}.w-\[240px\]{width:240px}.w-\[260px\]{width:260px}.w-\[276px\]{width:276px}.w-\[288px\]{width:288px}.w-\[320px\]{width:320px}.w-\[336px\]{width:336px}.w-\[clamp\(150px\,22vw\,240px\)\]{width:clamp(150px,22vw,240px)}.w-\[max\(var\(--anchor-width\)\,220px\)\]{width:max(var(--anchor-width),220px)}.w-\[min\(260px\,100\%\)\]{width:min(260px,100%)}.w-\[min\(280px\,86vw\)\]{width:min(280px,86vw)}.w-\[min\(320px\,100\%\)\]{width:min(320px,100%)}.w-\[min\(340px\,86vw\)\]{width:min(340px,86vw)}.w-\[min\(380px\,calc\(100vw-40px\)\)\]{width:min(380px,100vw - 40px)}.w-\[min\(400px\,100\%\)\]{width:min(400px,100%)}.w-\[min\(408px\,94vw\)\]{width:min(408px,94vw)}.w-\[min\(440px\,calc\(100vw-48px\)\)\]{width:min(440px,100vw - 48px)}.w-\[min\(460px\,calc\(100vw-48px\)\)\]{width:min(460px,100vw - 48px)}.w-\[min\(480px\,94vw\)\]{width:min(480px,94vw)}.w-\[min\(480px\,calc\(100vw-48px\)\)\]{width:min(480px,100vw - 48px)}.w-\[min\(520px\,calc\(100vw-16px\)\)\]{width:min(520px,100vw - 16px)}.w-\[min\(520px\,calc\(100vw-24px\)\)\]{width:min(520px,100vw - 24px)}.w-\[min\(520px\,calc\(100vw-48px\)\)\]{width:min(520px,100vw - 48px)}.w-\[min\(540px\,calc\(100vw-48px\)\)\]{width:min(540px,100vw - 48px)}.w-\[min\(560px\,calc\(100vw-24px\)\)\]{width:min(560px,100vw - 24px)}.w-\[min\(560px\,calc\(100vw-32px\)\)\]{width:min(560px,100vw - 32px)}.w-\[min\(560px\,calc\(100vw-48px\)\)\]{width:min(560px,100vw - 48px)}.w-\[min\(600px\,calc\(100vw-32px\)\)\]{width:min(600px,100vw - 32px)}.w-\[min\(600px\,calc\(100vw-40px\)\)\]{width:min(600px,100vw - 40px)}.w-\[min\(607px\,calc\(100vw-48px\)\)\]{width:min(607px,100vw - 48px)}.w-\[min\(620px\,calc\(100vw-40px\)\)\]{width:min(620px,100vw - 40px)}.w-\[min\(620px\,calc\(100vw-48px\)\)\]{width:min(620px,100vw - 48px)}.w-\[min\(640px\,calc\(100vw-24px\)\)\]{width:min(640px,100vw - 24px)}.w-\[min\(640px\,calc\(100vw-48px\)\)\]{width:min(640px,100vw - 48px)}.w-\[min\(680px\,calc\(100vw-40px\)\)\]{width:min(680px,100vw - 40px)}.w-\[min\(680px\,calc\(100vw-48px\)\)\]{width:min(680px,100vw - 48px)}.w-\[min\(700px\,calc\(100vw-48px\)\)\]{width:min(700px,100vw - 48px)}.w-\[min\(760px\,calc\(100vw-48px\)\)\]{width:min(760px,100vw - 48px)}.w-\[min\(800px\,calc\(100vw-48px\)\)\]{width:min(800px,100vw - 48px)}.w-\[min\(820px\,calc\(100vw-48px\)\)\]{width:min(820px,100vw - 48px)}.w-\[min\(860px\,calc\(100vw-48px\)\)\]{width:min(860px,100vw - 48px)}.w-\[min\(880px\,calc\(100vw-48px\)\)\]{width:min(880px,100vw - 48px)}.w-\[min\(900px\,calc\(100vw-48px\)\)\]{width:min(900px,100vw - 48px)}.w-\[min\(920px\,calc\(100vw-48px\)\)\]{width:min(920px,100vw - 48px)}.w-\[min\(1000px\,calc\(100vw-32px\)\)\]{width:min(1000px,100vw - 32px)}.w-\[min\(1000px\,calc\(100vw-48px\)\)\]{width:min(1000px,100vw - 48px)}.w-\[min\(1012px\,calc\(100vw-48px\)\)\]{width:min(1012px,100vw - 48px)}.w-\[min\(1100px\,calc\(100vw-48px\)\)\]{width:min(1100px,100vw - 48px)}.w-\[min\(1120px\,calc\(100vw-48px\)\)\]{width:min(1120px,100vw - 48px)}.w-\[min\(var\(--anchor-width\)\,var\(--available-width\)\)\]{width:min(var(--anchor-width),var(--available-width))}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.max-w-2xl{max-width:var(--container-2xl)}.max-w-36{max-width:calc(var(--spacing) * 36)}.max-w-44{max-width:calc(var(--spacing) * 44)}.max-w-\[52em\]{max-width:52em}.max-w-\[62ch\]{max-width:62ch}.max-w-\[64ch\]{max-width:64ch}.max-w-\[72ch\]{max-width:72ch}.max-w-\[78ch\]{max-width:78ch}.max-w-\[84vw\]{max-width:84vw}.max-w-\[92px\]{max-width:92px}.max-w-\[110px\]{max-width:110px}.max-w-\[130px\]{max-width:130px}.max-w-\[132px\]{max-width:132px}.max-w-\[160px\]{max-width:160px}.max-w-\[180px\]{max-width:180px}.max-w-\[200px\]{max-width:200px}.max-w-\[220px\]{max-width:220px}.max-w-\[240px\]{max-width:240px}.max-w-\[260px\]{max-width:260px}.max-w-\[300px\]{max-width:300px}.max-w-\[320px\]{max-width:320px}.max-w-\[340px\]{max-width:340px}.max-w-\[380px\]{max-width:380px}.max-w-\[420px\]{max-width:420px}.max-w-\[500px\]{max-width:500px}.max-w-\[540px\]{max-width:540px}.max-w-\[560px\]{max-width:560px}.max-w-\[620px\]{max-width:620px}.max-w-\[720px\]{max-width:720px}.max-w-\[760px\]{max-width:760px}.max-w-\[900px\]{max-width:900px}.max-w-\[1180px\]{max-width:1180px}.max-w-\[min\(320px\,calc\(100vw-16px\)\)\]{max-width:min(320px,100vw - 16px)}.max-w-\[min\(900px\,calc\(100vw-16px\)\)\]{max-width:min(900px,100vw - 16px)}.max-w-\[var\(--available-width\)\]{max-width:var(--available-width)}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-none{max-width:none}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:0}.min-w-4{min-width:calc(var(--spacing) * 4)}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-24{min-width:calc(var(--spacing) * 24)}.min-w-36{min-width:calc(var(--spacing) * 36)}.min-w-40{min-width:calc(var(--spacing) * 40)}.min-w-\[110px\]{min-width:110px}.min-w-\[120px\]{min-width:120px}.min-w-\[124px\]{min-width:124px}.min-w-\[132px\]{min-width:132px}.min-w-\[140px\]{min-width:140px}.min-w-\[145px\]{min-width:145px}.min-w-\[150px\]{min-width:150px}.min-w-\[170px\]{min-width:170px}.min-w-\[180px\]{min-width:180px}.min-w-\[190px\]{min-width:190px}.min-w-\[220px\]{min-width:220px}.min-w-\[230px\]{min-width:230px}.min-w-\[250px\]{min-width:250px}.min-w-\[560px\]{min-width:560px}.min-w-\[820px\]{min-width:820px}.min-w-\[860px\]{min-width:860px}.min-w-\[min\(var\(--anchor-width\)\,var\(--available-width\)\)\]{min-width:min(var(--anchor-width),var(--available-width))}.flex-1{flex:1}.flex-\[1_1_200px\]{flex:200px}.flex-auto{flex:auto}.flex-none{flex:none}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.basis-40{flex-basis:calc(var(--spacing) * 40)}.basis-52{flex-basis:calc(var(--spacing) * 52)}.basis-full{flex-basis:100%}.table-fixed{table-layout:fixed}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0\.5{--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-1px\]{--tw-translate-y:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-grab{cursor:grab}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.\[scrollbar-gutter\:stable\]{scrollbar-gutter:stable}.list-none{list-style-type:none}.\[grid-template-columns\:repeat\(auto-fit\,minmax\(min\(430px\,100\%\)\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(min(430px,100%),1fr))}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[1fr_24px_1fr\]{grid-template-columns:1fr 24px 1fr}.grid-cols-\[14px_minmax\(0\,1fr\)\]{grid-template-columns:14px minmax(0,1fr)}.grid-cols-\[16px_15px_minmax\(0\,1fr\)\]{grid-template-columns:16px 15px minmax(0,1fr)}.grid-cols-\[16px_15px_minmax\(0\,1fr\)_132px_16px\]{grid-template-columns:16px 15px minmax(0,1fr) 132px 16px}.grid-cols-\[18px_17px_minmax\(0\,1fr\)_auto\]{grid-template-columns:18px 17px minmax(0,1fr) auto}.grid-cols-\[18px_minmax\(78px\,1fr\)_44px_minmax\(106px\,auto\)\]{grid-template-columns:18px minmax(78px,1fr) 44px minmax(106px,auto)}.grid-cols-\[120px_minmax\(0\,1fr\)\]{grid-template-columns:120px minmax(0,1fr)}.grid-cols-\[auto_minmax\(0\,1fr\)\]{grid-template-columns:auto minmax(0,1fr)}.grid-cols-\[repeat\(auto-fit\,minmax\(min\(178px\,100\%\)\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(min(178px,100%),1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.place-items-center{place-items:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0{gap:0}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-3\.5{gap:calc(var(--spacing) * 3.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-\[5px\]{gap:5px}.gap-\[6px\]{gap:6px}.gap-\[7px\]{gap:7px}.gap-\[18px\]{gap:18px}.gap-px{gap:1px}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-1\.5{column-gap:calc(var(--spacing) * 1.5)}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-2\.5{column-gap:calc(var(--spacing) * 2.5)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-x-7{column-gap:calc(var(--spacing) * 7)}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-1{row-gap:var(--spacing)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-3{row-gap:calc(var(--spacing) * 3)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--ui-border)}:where(.divide-hairline>:not(:last-child)){border-color:var(--ui-hairline)}.self-center{align-self:center}.self-start{align-self:flex-start}.justify-self-center{justify-self:center}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:.25rem}.rounded-\[1px\]{border-radius:1px}.rounded-\[3px\]{border-radius:3px}.rounded-\[7px\]{border-radius:7px}.rounded-\[10px\]{border-radius:10px}.rounded-\[inherit\]{border-radius:inherit}.rounded-\[var\(--r-xs\)\]{border-radius:var(--r-xs)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:14px}.rounded-md{border-radius:10px}.rounded-none{border-radius:0}.rounded-pill{border-radius:999px}.rounded-sm{border-radius:8px}.rounded-xs{border-radius:6px}.rounded-t-xl{border-top-left-radius:18px;border-top-right-radius:18px}.rounded-l-xl{border-top-left-radius:18px;border-bottom-left-radius:18px}.rounded-r-xl{border-top-right-radius:18px;border-bottom-right-radius:18px}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-black\/10{border-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.border-black\/10{border-color:color-mix(in oklab,var(--color-black) 10%,transparent)}}.border-border{border-color:var(--ui-border)}.border-border-strong{border-color:var(--ui-border-strong)}.border-cn-bd{border-color:var(--ui-cn-bd)}.border-control-border{border-color:var(--ui-control-border)}.border-destructive{border-color:var(--ui-destructive)}.border-destructive-bd{border-color:var(--ui-destructive-bd)}.border-hairline{border-color:var(--ui-hairline)}.border-info-bd{border-color:var(--ui-info-bd)}.border-intl-bd{border-color:var(--ui-intl-bd)}.border-primary{border-color:var(--ui-primary)}.border-primary-bd{border-color:var(--ui-primary-bd)}.border-sensitive-bd{border-color:var(--ui-sensitive-bd)}.border-sidebar-border{border-color:var(--ui-sidebar-border)}.border-success-bd{border-color:var(--ui-success-bd)}.border-transparent{border-color:#0000}.border-warning-bd{border-color:var(--ui-warning-bd)}.bg-\[\#808080\]{background-color:gray}.bg-\[var\(--ui-table-head-bg\)\]{background-color:var(--ui-table-head-bg)}.bg-background{background-color:var(--ui-background)}.bg-border{background-color:var(--ui-border)}.bg-border-strong{background-color:var(--ui-border-strong)}.bg-cn-soft{background-color:var(--ui-cn-soft)}.bg-control{background-color:var(--ui-control-bg)}.bg-current{background-color:currentColor}.bg-destructive{background-color:var(--ui-destructive)}.bg-destructive-soft{background-color:var(--ui-destructive-soft)}.bg-hairline{background-color:var(--ui-hairline)}.bg-info-soft{background-color:var(--ui-info-soft)}.bg-intl-soft{background-color:var(--ui-intl-soft)}.bg-mask{background-color:var(--ui-mask)}.bg-muted-foreground{background-color:var(--ui-muted-foreground)}.bg-primary{background-color:var(--ui-primary)}.bg-primary-foreground{background-color:var(--ui-primary-foreground)}.bg-primary-on{background-color:var(--ui-primary-on)}.bg-primary-soft{background-color:var(--ui-primary-soft)}.bg-rail-bg{background-color:var(--ui-rail-bg)}.bg-raised{background-color:var(--ui-raised)}.bg-secondary{background-color:var(--ui-secondary)}.bg-sensitive-soft{background-color:var(--ui-sensitive-soft)}.bg-sidebar{background-color:var(--ui-sidebar)}.bg-skeleton-base{background-color:var(--ui-skeleton-base)}.bg-success{background-color:var(--ui-success)}.bg-success-soft{background-color:var(--ui-success-soft)}.bg-surface{background-color:var(--ui-surface)}.bg-surface-2{background-color:var(--ui-surface-2)}.bg-surface-3{background-color:var(--ui-surface-3)}.bg-surface-inset{background-color:var(--ui-surface-inset)}.bg-transparent{background-color:#0000}.bg-warning{background-color:var(--ui-warning)}.bg-warning-soft{background-color:var(--ui-warning-soft)}.fill-sidebar{fill:var(--ui-sidebar)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:0}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-\[5px\]{padding:5px}.p-\[10px_12px\]{padding:10px 12px}.p-\[36px_34px_30px\]{padding:36px 34px 30px}.px-0{padding-inline:0}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-7{padding-inline:calc(var(--spacing) * 7)}.px-\[5px\]{padding-inline:5px}.px-\[9px\]{padding-inline:9px}.py-0{padding-block:0}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-\[3px\]{padding-block:3px}.py-\[5px\]{padding-block:5px}.py-\[7px\]{padding-block:7px}.py-\[11px\]{padding-block:11px}.py-\[13px\]{padding-block:13px}.py-\[15px\]{padding-block:15px}.py-\[18px\]{padding-block:18px}.py-\[26px\]{padding-block:26px}.py-px{padding-block:1px}.pt-1{padding-top:var(--spacing)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-3\.5{padding-top:calc(var(--spacing) * 3.5)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-7{padding-top:calc(var(--spacing) * 7)}.pt-\[9px\]{padding-top:9px}.pr-1\.5{padding-right:calc(var(--spacing) * 1.5)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-2\.5{padding-right:calc(var(--spacing) * 2.5)}.pr-3\.5{padding-right:calc(var(--spacing) * 3.5)}.pr-7{padding-right:calc(var(--spacing) * 7)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pr-\[9px\]{padding-right:9px}.pb-1{padding-bottom:var(--spacing)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-2\.5{padding-bottom:calc(var(--spacing) * 2.5)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-\[7px\]{padding-bottom:7px}.pb-\[9px\]{padding-bottom:9px}.pb-\[env\(safe-area-inset-bottom\,0px\)\]{padding-bottom:env(safe-area-inset-bottom,0px)}.pb-\[max\(12px\,env\(safe-area-inset-bottom\)\)\]{padding-bottom:max(12px,env(safe-area-inset-bottom))}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-\[9px\]{padding-left:9px}.pl-\[11px\]{padding-left:11px}.pl-\[18px\]{padding-left:18px}.pl-\[84px\]{padding-left:84px}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-top{vertical-align:top}.\[font-family\:inherit\]{font-family:inherit}.font-mono{font-family:var(--ui-font-mono)}.font-sans{font-family:var(--ui-font-sans)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[font-size\:inherit\]{font-size:inherit}.text-\[9px\]{font-size:9px}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-\[12\.5px\]{font-size:12.5px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15\.5px\]{font-size:15.5px}.text-\[15px\]{font-size:15px}.text-\[20px\]{font-size:20px}.text-\[21px\]{font-size:21px}.text-\[22px\]{font-size:22px}.text-\[26px\]{font-size:26px}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-\[1\.4\]{--tw-leading:1.4;line-height:1.4}.leading-\[1\.5\]{--tw-leading:1.5;line-height:1.5}.leading-\[1\.6\]{--tw-leading:1.6;line-height:1.6}.leading-\[1\.7\]{--tw-leading:1.7;line-height:1.7}.leading-\[1\.8\]{--tw-leading:1.8;line-height:1.8}.leading-\[1\.9\]{--tw-leading:1.9;line-height:1.9}.leading-\[1\.55\]{--tw-leading:1.55;line-height:1.55}.leading-\[1\.65\]{--tw-leading:1.65;line-height:1.65}.leading-\[1\.85\]{--tw-leading:1.85;line-height:1.85}.leading-\[14px\]{--tw-leading:14px;line-height:14px}.leading-\[18px\]{--tw-leading:18px;line-height:18px}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[-0\.022em\]{--tw-tracking:-.022em;letter-spacing:-.022em}.tracking-\[\.02em\]{--tw-tracking:.02em;letter-spacing:.02em}.tracking-\[\.04em\]{--tw-tracking:.04em;letter-spacing:.04em}.tracking-\[\.05em\]{--tw-tracking:.05em;letter-spacing:.05em}.tracking-\[\.09em\]{--tw-tracking:.09em;letter-spacing:.09em}.tracking-\[0\.2px\]{--tw-tracking:.2px;letter-spacing:.2px}.tracking-\[0\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.tracking-\[inherit\]{--tw-tracking:inherit;letter-spacing:inherit}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-cn{color:var(--ui-cn)}.text-destructive{color:var(--ui-destructive)}.text-foreground{color:var(--ui-foreground)}.text-info{color:var(--ui-info)}.text-inherit{color:inherit}.text-intl{color:var(--ui-intl)}.text-muted-foreground{color:var(--ui-muted-foreground)}.text-primary{color:var(--ui-primary)}.text-primary-fg{color:var(--ui-primary-fg)}.text-primary-foreground{color:var(--ui-primary-foreground)}.text-primary-on{color:var(--ui-primary-on)}.text-secondary-foreground{color:var(--ui-secondary-foreground)}.text-sensitive{color:var(--ui-sensitive)}.text-sidebar-fg{color:var(--ui-sidebar-fg)}.text-sidebar-foreground{color:var(--ui-sidebar-foreground)}.text-sidebar-muted{color:var(--ui-sidebar-muted)}.text-subtle{color:var(--ui-text-2)}.text-success{color:var(--ui-success)}.text-warning{color:var(--ui-warning)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.\[font-variant-numeric\:tabular-nums\]{font-variant-numeric:tabular-nums}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.opacity-35{opacity:.35}.opacity-40{opacity:.4}.opacity-45{opacity:.45}.opacity-50{opacity:.5}.opacity-55{opacity:.55}.opacity-75{opacity:.75}.opacity-\[\.58\]{opacity:.58}.shadow-1{--tw-shadow:var(--ui-shadow-1);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-3{--tw-shadow:var(--ui-shadow-3);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-glow{--tw-shadow:var(--ui-glow);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-\[3px\]{--tw-backdrop-blur:blur(3px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition-\[background-color\,border-color\,color\,transform\,box-shadow\]{transition-property:background-color,border-color,color,transform,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[background-color\,border-color\,color\]{transition-property:background-color,border-color,color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[background-color\,color\]{transition-property:background-color,color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[border-color\,box-shadow\]{transition-property:border-color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[opacity\,transform\]{transition-property:opacity,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-\[120ms\]{--tw-duration:.12s;transition-duration:.12s}.duration-\[150ms\]{--tw-duration:.15s;transition-duration:.15s}.duration-\[180ms\]{--tw-duration:.18s;transition-duration:.18s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.\[transition-timing-function\:cubic-bezier\(\.2\,\.9\,\.3\,1\)\]{transition-timing-function:cubic-bezier(.2,.9,.3,1)}.\[transition-timing-function\:cubic-bezier\(\.3\,1\.4\,\.6\,1\)\]{transition-timing-function:cubic-bezier(.3,1.4,.6,1)}.\[transition-timing-function\:cubic-bezier\(\.32\,\.9\,\.3\,1\)\]{transition-timing-function:cubic-bezier(.32,.9,.3,1)}.fill-mode-forwards{--tw-animation-fill-mode:forwards;animation-fill-mode:forwards}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.select-text{-webkit-user-select:text;user-select:text}.\!paused{animation-play-state:paused!important}.\[animation-duration\:0\.7s\]{animation-duration:.7s}.\[overflow-anchor\:none\]{overflow-anchor:none}.paused{animation-play-state:paused}.running{animation-play-state:running}.group-has-\[\>input\]\/input-group\:pt-1\.5:is(:where(.group\/input-group):has(>input) *){padding-top:calc(var(--spacing) * 1.5)}.group-has-\[\>input\]\/input-group\:pb-1\.5:is(:where(.group\/input-group):has(>input) *){padding-bottom:calc(var(--spacing) * 1.5)}.group-aria-\[checked\=indeterminate\]\/checkbox\:block:is(:where(.group\/checkbox)[aria-checked=indeterminate] *){display:block}.group-aria-\[checked\=indeterminate\]\/checkbox\:hidden:is(:where(.group\/checkbox)[aria-checked=indeterminate] *){display:none}.group-data-panel-open\:rotate-180:is(:where(.group)[data-panel-open] *){rotate:180deg}.group-data-\[disabled\=true\]\/input-group\:opacity-50:is(:where(.group\/input-group)[data-disabled=true] *){opacity:.5}.group-data-\[size\=sm\]\/card\:p-3:is(:where(.group\/card)[data-size=sm] *){padding:calc(var(--spacing) * 3)}.group-data-\[size\=sm\]\/card\:px-3:is(:where(.group\/card)[data-size=sm] *){padding-inline:calc(var(--spacing) * 3)}.group-data-\[size\=sm\]\/card\:py-2:is(:where(.group\/card)[data-size=sm] *){padding-block:calc(var(--spacing) * 2)}.group-data-open\/fold\:rotate-90:is(:is(:where(.group\/fold):where([data-state=open]),:where(.group\/fold):where([data-open]:not([data-open=false]))) *){rotate:90deg}.group-data-checked\/card\:text-primary-fg:is(:is(:where(.group\/card):where([data-state=checked]),:where(.group\/card):where([data-checked]:not([data-checked=false]))) *){color:var(--ui-primary-fg)}.group-data-checked\/seg\:bg-surface-2:is(:is(:where(.group\/seg):where([data-state=checked]),:where(.group\/seg):where([data-checked]:not([data-checked=false]))) *){background-color:var(--ui-surface-2)}.group-data-checked\/seg\:text-foreground:is(:is(:where(.group\/seg):where([data-state=checked]),:where(.group\/seg):where([data-checked]:not([data-checked=false]))) *){color:var(--ui-foreground)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-foreground::file-selector-button{color:var(--ui-foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--ui-muted-foreground)}.first\:border-t-0:first-child{border-top-style:var(--tw-border-style);border-top-width:0}.first\:pt-0:first-child{padding-top:0}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.empty\:hidden:empty{display:none}@media(hover:hover){.hover\:border-border-strong:hover{border-color:var(--ui-border-strong)}.hover\:border-control-border-hover:hover{border-color:var(--ui-control-border-hover)}.hover\:border-primary:hover{border-color:var(--ui-primary)}.hover\:border-primary-hover:hover{border-color:var(--ui-primary-hover)}.hover\:bg-control-hover:hover{background-color:var(--ui-control-hover)}.hover\:bg-destructive:hover{background-color:var(--ui-destructive)}.hover\:bg-destructive-hover:hover{background-color:var(--ui-destructive-hover)}.hover\:bg-destructive-soft:hover{background-color:var(--ui-destructive-soft)}.hover\:bg-nav-hover:hover{background-color:var(--ui-nav-hover)}.hover\:bg-primary-hover:hover{background-color:var(--ui-primary-hover)}.hover\:bg-primary-tint:hover{background-color:var(--ui-primary-tint)}.hover\:bg-secondary\/80:hover{background-color:var(--ui-secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--ui-secondary) 80%,transparent)}}.hover\:bg-transparent:hover{background-color:#0000}.hover\:text-destructive:hover{color:var(--ui-destructive)}.hover\:text-foreground:hover{color:var(--ui-foreground)}.hover\:text-primary-fg:hover{color:var(--ui-primary-fg)}.hover\:text-white:hover{color:var(--color-white)}.hover\:no-underline:hover{text-decoration-line:none}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}}.focus\:border-0:focus{border-style:var(--tw-border-style);border-width:0}.focus\:border-primary:focus{border-color:var(--ui-primary)}.focus\:shadow-focus:focus{--tw-shadow:var(--ui-focus-ring);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:shadow-none:focus{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:border-primary:focus-visible{border-color:var(--ui-primary)}.focus-visible\:shadow-focus:focus-visible{--tw-shadow:var(--ui-focus-ring);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:translate-y-0:active{--tw-translate-y:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.active\:translate-y-\[0\.5px\]:active{--tw-translate-y:.5px;translate:var(--tw-translate-x) var(--tw-translate-y)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-default:disabled{cursor:default}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-surface-3:disabled{background-color:var(--ui-surface-3)}.disabled\:text-muted-foreground:disabled{color:var(--ui-muted-foreground)}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-45:disabled{opacity:.45}.disabled\:opacity-100:disabled{opacity:1}.disabled\:shadow-none:disabled{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:where([data-panel-open]) .in-data-panel-open\:rotate-90{rotate:90deg}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:border-primary:has([data-slot=input-group-control]:focus-visible){border-color:var(--ui-primary)}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:shadow-focus:has([data-slot=input-group-control]:focus-visible){--tw-shadow:var(--ui-focus-ring);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.has-\[\[data-slot\=input-group-control\]\:hover\:not\(\:focus-visible\)\]\:border-control-border-hover:has([data-slot=input-group-control]:hover:not(:focus-visible)){border-color:var(--ui-control-border-hover)}.has-\[\[data-slot\=item-content\]\]\:justify-start:has([data-slot=item-content]){justify-content:flex-start}.has-\[\>\[data-align\=block-end\]\]\:h-auto:has(>[data-align=block-end]){height:auto}.has-\[\>\[data-align\=block-end\]\]\:flex-col:has(>[data-align=block-end]){flex-direction:column}.has-\[\>\[data-align\=block-start\]\]\:h-auto:has(>[data-align=block-start]){height:auto}.has-\[\>\[data-align\=block-start\]\]\:flex-col:has(>[data-align=block-start]){flex-direction:column}.has-\[\>button\]\:-mr-1:has(>button){margin-right:calc(var(--spacing) * -1)}.has-\[\>button\]\:-ml-1:has(>button){margin-left:calc(var(--spacing) * -1)}.has-\[\>textarea\]\:h-auto:has(>textarea){height:auto}.data-anchor-hidden\:pointer-events-none[data-anchor-hidden]{pointer-events:none}.data-anchor-hidden\:invisible[data-anchor-hidden]{visibility:hidden}.data-anchor-hidden\:hidden[data-anchor-hidden]{display:none}.data-ending-style\:opacity-0[data-ending-style]{opacity:0}.data-error\:invisible[data-error]{visibility:hidden}.data-limited\:hidden[data-limited]{display:none}.data-loading\:invisible[data-loading]{visibility:hidden}.data-popup-open\:rotate-180[data-popup-open]{rotate:180deg}.data-pressed\:border-primary-bd[data-pressed]{border-color:var(--ui-primary-bd)}.data-pressed\:bg-primary-soft[data-pressed]{background-color:var(--ui-primary-soft)}.data-pressed\:font-semibold[data-pressed]{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.data-pressed\:text-primary-fg[data-pressed]{color:var(--ui-primary-fg)}@media(hover:hover){.data-pressed\:hover\:bg-primary-tint[data-pressed]:hover{background-color:var(--ui-primary-tint)}}.data-\[active\]\:border-nav-selected-border[data-active]{border-color:var(--ui-nav-selected-border)}.data-\[active\]\:border-transparent[data-active]{border-color:#0000}.data-\[active\]\:bg-nav-selected-bg[data-active]{background-color:var(--ui-nav-selected-bg)}.data-\[active\]\:bg-transparent[data-active]{background-color:#0000}.data-\[active\]\:font-medium[data-active]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[active\]\:text-nav-selected-fg[data-active]{color:var(--ui-nav-selected-fg)}@media(hover:hover){.data-\[active\]\:hover\:bg-transparent[data-active]:hover{background-color:#0000}}.data-\[highlighted\]\:bg-nav-hover[data-highlighted]{background-color:var(--ui-nav-hover)}.data-\[indeterminate\]\:w-1\/3[data-indeterminate]{width:33.3333%}.data-\[indeterminate\]\:animate-pulse[data-indeterminate]{animation:var(--animate-pulse)}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--ui-muted-foreground)}.data-\[selected\]\:bg-primary-soft[data-selected]{background-color:var(--ui-primary-soft)}.data-\[selected\]\:font-semibold[data-selected]{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.data-\[selected\]\:text-primary-fg[data-selected]{color:var(--ui-primary-fg)}.data-\[highlighted\]\:data-\[selected\]\:bg-primary-tint[data-highlighted][data-selected]{background-color:var(--ui-primary-tint)}.data-\[side\=bottom\]\:-top-1[data-side=bottom]{top:calc(var(--spacing) * -1)}.data-\[side\=top\]\:-bottom-1[data-side=top]{bottom:calc(var(--spacing) * -1)}.data-\[type\=error\]\:border-destructive-bd[data-type=error]{border-color:var(--ui-destructive-bd)}.data-\[type\=error\]\:text-destructive[data-type=error]{color:var(--ui-destructive)}.data-\[type\=success\]\:border-success-bd[data-type=success]{border-color:var(--ui-success-bd)}.data-\[type\=success\]\:text-success[data-type=success]{color:var(--ui-success)}.data-\[type\=warning\]\:border-warning-bd[data-type=warning]{border-color:var(--ui-warning-bd)}.data-\[type\=warning\]\:text-warning[data-type=warning]{color:var(--ui-warning)}@media(prefers-reduced-motion:reduce){.motion-reduce\:animate-none{animation:none}.motion-reduce\:transition-none{transition-property:none}}@media not all and (min-width:767px){.max-\[767px\]\:inline-flex{display:inline-flex}.max-\[767px\]\:h-10{height:calc(var(--spacing) * 10)}.max-\[767px\]\:min-h-10{min-height:calc(var(--spacing) * 10)}.max-\[767px\]\:w-\[calc\(100vw-24px\)\]{width:calc(100vw - 24px)}.max-\[767px\]\:flex-col{flex-direction:column}.max-\[767px\]\:items-stretch{align-items:stretch}.max-\[767px\]\:gap-2{gap:calc(var(--spacing) * 2)}.max-\[767px\]\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.max-\[767px\]\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media not all and (min-width:40rem){.max-sm\:px-5{padding-inline:calc(var(--spacing) * 5)}.max-sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}}@media(min-width:768px){.min-\[768px\]\:w-\[240px\]{width:240px}.min-\[768px\]\:w-auto{width:auto}.min-\[768px\]\:max-w-\[200px\]{max-width:200px}.min-\[768px\]\:min-w-\[130px\]{min-width:130px}.min-\[768px\]\:flex-none{flex:none}.min-\[768px\]\:flex-row{flex-direction:row}.min-\[768px\]\:items-center{align-items:center}.min-\[768px\]\:gap-2\.5{gap:calc(var(--spacing) * 2.5)}}@media(min-width:900px){.min-\[900px\]\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:40rem){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(min-width:64rem){.lg\:grid-cols-\[minmax\(300px\,0\.8fr\)_minmax\(0\,1\.2fr\)\]{grid-template-columns:minmax(300px,.8fr) minmax(0,1.2fr)}.lg\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.lg\:border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.lg\:pt-0{padding-top:0}.lg\:pl-6{padding-left:calc(var(--spacing) * 6)}}@media(min-width:80rem){.xl\:col-start-2{grid-column-start:2}.xl\:row-start-1{grid-row-start:1}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-\[minmax\(0\,1fr\)_minmax\(340px\,500px\)\]{grid-template-columns:minmax(0,1fr) minmax(340px,500px)}}.data-open\:animate-in:where([data-state=open]),.data-open\:animate-in:where([data-open]:not([data-open=false])){animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-open\:fade-in-0:where([data-state=open]),.data-open\:fade-in-0:where([data-open]:not([data-open=false])){--tw-enter-opacity:0}.data-open\:zoom-in-95:where([data-state=open]),.data-open\:zoom-in-95:where([data-open]:not([data-open=false])){--tw-enter-scale:.95}.data-open\:slide-in-from-bottom:where([data-state=open]),.data-open\:slide-in-from-bottom:where([data-open]:not([data-open=false])){--tw-enter-translate-y:100%}.data-open\:slide-in-from-left:where([data-state=open]),.data-open\:slide-in-from-left:where([data-open]:not([data-open=false])){--tw-enter-translate-x:-100%}.data-open\:slide-in-from-right:where([data-state=open]),.data-open\:slide-in-from-right:where([data-open]:not([data-open=false])){--tw-enter-translate-x:100%}.data-open\:slide-in-from-top-1:where([data-state=open]),.data-open\:slide-in-from-top-1:where([data-open]:not([data-open=false])){--tw-enter-translate-y:calc(1*var(--spacing)*-1)}.data-open\:zoom-in-\[\.985\]:where([data-state=open]),.data-open\:zoom-in-\[\.985\]:where([data-open]:not([data-open=false])){--tw-enter-scale:.985}.data-closed\:animate-out:where([data-state=closed]),.data-closed\:animate-out:where([data-closed]:not([data-closed=false])){animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-closed\:fade-out-0:where([data-state=closed]),.data-closed\:fade-out-0:where([data-closed]:not([data-closed=false])){--tw-exit-opacity:0}.data-closed\:fill-mode-forwards:where([data-state=closed]),.data-closed\:fill-mode-forwards:where([data-closed]:not([data-closed=false])){--tw-animation-fill-mode:forwards;animation-fill-mode:forwards}.data-closed\:zoom-out-95:where([data-state=closed]),.data-closed\:zoom-out-95:where([data-closed]:not([data-closed=false])){--tw-exit-scale:.95}.data-closed\:slide-out-to-bottom:where([data-state=closed]),.data-closed\:slide-out-to-bottom:where([data-closed]:not([data-closed=false])){--tw-exit-translate-y:100%}.data-closed\:slide-out-to-left:where([data-state=closed]),.data-closed\:slide-out-to-left:where([data-closed]:not([data-closed=false])){--tw-exit-translate-x:-100%}.data-closed\:slide-out-to-right:where([data-state=closed]),.data-closed\:slide-out-to-right:where([data-closed]:not([data-closed=false])){--tw-exit-translate-x:100%}.data-checked\:translate-x-\[10px\]:where([data-state=checked]),.data-checked\:translate-x-\[10px\]:where([data-checked]:not([data-checked=false])){--tw-translate-x:10px;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-checked\:translate-x-\[17px\]:where([data-state=checked]),.data-checked\:translate-x-\[17px\]:where([data-checked]:not([data-checked=false])){--tw-translate-x:17px;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-checked\:translate-x-\[18px\]:where([data-state=checked]),.data-checked\:translate-x-\[18px\]:where([data-checked]:not([data-checked=false])){--tw-translate-x:18px;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-checked\:border-primary:where([data-state=checked]),.data-checked\:border-primary:where([data-checked]:not([data-checked=false])){border-color:var(--ui-primary)}.data-checked\:bg-primary:where([data-state=checked]),.data-checked\:bg-primary:where([data-checked]:not([data-checked=false])){background-color:var(--ui-primary)}.data-checked\:bg-primary-soft:where([data-state=checked]),.data-checked\:bg-primary-soft:where([data-checked]:not([data-checked=false])){background-color:var(--ui-primary-soft)}.data-checked\:bg-success:where([data-state=checked]),.data-checked\:bg-success:where([data-checked]:not([data-checked=false])){background-color:var(--ui-success)}.data-checked\:bg-transparent:where([data-state=checked]),.data-checked\:bg-transparent:where([data-checked]:not([data-checked=false])){background-color:#0000}.data-checked\:text-foreground:where([data-state=checked]),.data-checked\:text-foreground:where([data-checked]:not([data-checked=false])){color:var(--ui-foreground)}.data-checked\:text-primary-fg:where([data-state=checked]),.data-checked\:text-primary-fg:where([data-checked]:not([data-checked=false])){color:var(--ui-primary-fg)}@media(hover:hover){:is(.data-checked\:hover\:bg-transparent:where([data-state=checked]),.data-checked\:hover\:bg-transparent:where([data-checked]:not([data-checked=false]))):hover{background-color:#0000}}.data-unchecked\:hidden:where([data-state=unchecked]),.data-unchecked\:hidden:where([data-unchecked]:not([data-unchecked=false])){display:none}.data-\[zero\=true\]\:data-unchecked\:opacity-45[data-zero=true]:where([data-state=unchecked]),.data-\[zero\=true\]\:data-unchecked\:opacity-45[data-zero=true]:where([data-unchecked]:not([data-unchecked=false])){opacity:.45}.data-disabled\:pointer-events-none:where([data-disabled=true]),.data-disabled\:pointer-events-none:where([data-disabled]:not([data-disabled=false])){pointer-events:none}.data-disabled\:cursor-default:where([data-disabled=true]),.data-disabled\:cursor-default:where([data-disabled]:not([data-disabled=false])){cursor:default}.data-disabled\:cursor-not-allowed:where([data-disabled=true]),.data-disabled\:cursor-not-allowed:where([data-disabled]:not([data-disabled=false])){cursor:not-allowed}.data-disabled\:bg-control:where([data-disabled=true]),.data-disabled\:bg-control:where([data-disabled]:not([data-disabled=false])){background-color:var(--ui-control-bg)}.data-disabled\:font-normal:where([data-disabled=true]),.data-disabled\:font-normal:where([data-disabled]:not([data-disabled=false])){--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.data-disabled\:text-muted-foreground:where([data-disabled=true]),.data-disabled\:text-muted-foreground:where([data-disabled]:not([data-disabled=false])){color:var(--ui-muted-foreground)}.data-disabled\:opacity-40:where([data-disabled=true]),.data-disabled\:opacity-40:where([data-disabled]:not([data-disabled=false])){opacity:.4}.data-disabled\:opacity-45:where([data-disabled=true]),.data-disabled\:opacity-45:where([data-disabled]:not([data-disabled=false])){opacity:.45}.data-disabled\:opacity-50:where([data-disabled=true]),.data-disabled\:opacity-50:where([data-disabled]:not([data-disabled=false])){opacity:.5}.data-disabled\:opacity-60:where([data-disabled=true]),.data-disabled\:opacity-60:where([data-disabled]:not([data-disabled=false])){opacity:.6}.\[\&_\*\]\:pointer-events-none *{pointer-events:none}.\[\&_\[data-slot\=segmented-item\]\]\:h-7 [data-slot=segmented-item]{height:calc(var(--spacing) * 7)}.\[\&_\[data-slot\=segmented-item\]\]\:h-8 [data-slot=segmented-item]{height:calc(var(--spacing) * 8)}.\[\&_\[data-slot\=segmented-item\]\]\:px-3 [data-slot=segmented-item]{padding-inline:calc(var(--spacing) * 3)}.\[\&_\[data-slot\=segmented-item\]\]\:text-\[12\.5px\] [data-slot=segmented-item]{font-size:12.5px}.\[\&_h2\]\:flex-1 h2{flex:1}.\[\&_h2\]\:text-\[14\.5px\] h2{font-size:14.5px}.\[\&_h2\]\:text-\[15px\] h2{font-size:15px}.\[\&_h2\]\:font-semibold h2{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.\[\&_h3\]\:text-\[12\.5px\] h3{font-size:12.5px}.\[\&_h3\]\:font-semibold h3{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.\[\&_p\]\:text-xs p{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&_p\]\:leading-\[1\.65\] p{--tw-leading:1.65;line-height:1.65}.\[\&_p\]\:text-subtle p{color:var(--ui-text-2)}.\[\&_strong\]\:font-semibold strong{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.\[\&_strong\]\:text-destructive strong{color:var(--ui-destructive)}.\[\&_strong\]\:text-foreground strong{color:var(--ui-foreground)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\>td\]\:border-b-0 tr:last-child>td,.\[\&_tr\:last-child\>th\]\:border-b-0 tr:last-child>th{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.\[\&\>\*\]\:w-full>*{width:100%}.\[\&\>\*\]\:max-w-none>*{max-width:none}.\[\&\>\*\]\:min-w-0>*{min-width:0}.\[\&\>\*\]\:shrink-0>*{flex-shrink:0}.\[\&\>\:first-child\]\:break-words>:first-child{overflow-wrap:break-word}.\[\&\>\:first-child\]\:whitespace-normal>:first-child{white-space:normal}.has-\[\>\[data-align\=block-end\]\]\:\[\&\>\[data-slot\=input-group-control\]\]\:pt-1\.5:has(>[data-align=block-end])>[data-slot=input-group-control]{padding-top:calc(var(--spacing) * 1.5)}.has-\[\>\[data-align\=block-start\]\]\:\[\&\>\[data-slot\=input-group-control\]\]\:pb-1\.5:has(>[data-align=block-start])>[data-slot=input-group-control]{padding-bottom:calc(var(--spacing) * 1.5)}.has-\[\>\[data-align\=inline-end\]\]\:\[\&\>\[data-slot\=input-group-control\]\]\:pr-1\.5:has(>[data-align=inline-end])>[data-slot=input-group-control]{padding-right:calc(var(--spacing) * 1.5)}.has-\[\>\[data-align\=inline-start\]\]\:\[\&\>\[data-slot\=input-group-control\]\]\:pl-1\.5:has(>[data-align=inline-start])>[data-slot=input-group-control]{padding-left:calc(var(--spacing) * 1.5)}.\[\&\>span\]\:min-w-0>span{min-width:0}.\[\&\>span\]\:truncate>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[\&\>svg\]\:block>svg{display:block}@media(hover:hover){.hover\:\[\&\>td\]\:bg-control-hover:hover>td{background-color:var(--ui-control-hover)}.hover\:\[\&\>td\]\:bg-transparent:hover>td{background-color:#0000}}.pv-row:hover .\[\.pv-row\:hover_\&_\[data-slot\=nav-item-count\]\]\:invisible [data-slot=nav-item-count]{visibility:hidden}[hidden][hidden]:not([hidden=until-found]){display:none!important}#theme-switch [data-slot=segmented-item]{text-align:center;white-space:normal;flex:1 1 0;justify-content:center;min-width:0;height:auto;min-height:24px;padding:3px 4px;line-height:1.4}@media(min-width:768px)and (max-width:900px){#theme-switch [data-slot=segmented-item]{flex:none}}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}@property --scroll-fade-t{syntax:"";inherits:false;initial-value:0}@property --scroll-fade-b{syntax:"";inherits:false;initial-value:0}@property --scroll-fade-s{syntax:"";inherits:false;initial-value:0}@property --scroll-fade-e{syntax:"";inherits:false;initial-value:0}@property --scroll-fade-mask{syntax:"*";inherits:false}@property --shimmer-angle{syntax:"";inherits:true;initial-value:20deg}@property --shimmer-image{syntax:"*";inherits:false}@property --shimmer-text-fill{syntax:"*";inherits:false}@media(prefers-reduced-motion:reduce){.shimmer{-webkit-text-fill-color:currentColor;background-image:none;animation:none}}[data-slot=nav-item]{gap:9px;height:auto;min-height:30px;padding:6px 8px;font-size:12.5px;font-weight:400;line-height:1.25}[data-slot=sidebar] [data-slot=nav-item],[data-slot=nav-list] [data-slot=nav-item],.page[data-page=gateway] .prov-rail [data-slot=nav-item]{height:auto;min-height:30px;padding:6px 8px}[data-slot=nav-item][data-active]{color:var(--ui-nav-selected-fg);font-weight:500}[data-slot=nav-list],.rail-scroll{gap:1px}[data-slot=sidebar-group-label],.nav-group-label,.rail-label{letter-spacing:0;text-transform:none;color:var(--text-3);padding:10px 8px 5px;font-size:10.5px;font-weight:500}.rail-label:after{display:none}@media(max-width:767px){[data-slot=nav-item],[data-slot=sidebar] [data-slot=nav-item],[data-slot=nav-list] [data-slot=nav-item],.page[data-page=gateway] .prov-rail [data-slot=nav-item]{min-height:44px;padding:8px 10px}}:root{--ui-radius:14px;--ui-font-sans:"Public Sans", "Segoe UI", "Microsoft YaHei", "Microsoft YaHei UI", system-ui, sans-serif;--ui-font-mono:Consolas, "Cascadia Mono", "Courier New", monospace;--ui-background:oklch(97.8% .00265 286.35);--ui-foreground:oklch(14.5% 0 0);--ui-card:oklch(100% 0 0);--ui-card-foreground:oklch(14.5% 0 0);--ui-popover:oklch(100% 0 0);--ui-popover-foreground:oklch(14.5% 0 0);--ui-primary:oklch(60.3% .218 257.3);--ui-primary-foreground:oklch(100% 0 0);--ui-secondary:oklch(95% 0 0);--ui-secondary-foreground:oklch(42% .16 250);--ui-muted:oklch(97% 0 0);--ui-muted-foreground:oklch(49% 0 0);--ui-accent:var(--ui-primary)}@supports (color:color-mix(in lab,red,red)){:root{--ui-accent:color-mix(in srgb, var(--ui-primary) 10%, white)}}:root{--ui-accent-foreground:oklch(14.5% 0 0);--ui-destructive:oklch(57.7% .245 27.325);--ui-destructive-foreground:oklch(98.5% 0 0);--ui-success:oklch(59.6% .145 163.225);--ui-success-foreground:oklch(98.5% 0 0);--ui-warning:oklch(68.1% .162 75.834);--ui-warning-foreground:oklch(14.5% 0 0);--ui-info:oklch(58.8% .158 241.966);--ui-info-foreground:oklch(98.5% 0 0);--ui-neutral:oklch(70.8% 0 0);--ui-neutral-foreground:oklch(14.5% 0 0);--ui-border:oklch(14.5% 0 0/.1);--ui-input:oklch(93% 0 0);--ui-ring:oklch(70.8% .16 249.003);--ui-primary-soft:var(--ui-primary)}@supports (color:color-mix(in lab,red,red)){:root{--ui-primary-soft:color-mix(in srgb, var(--ui-primary) 10%, white)}}:root{--ui-primary-fg:oklch(48% .2 257.3);--ui-primary-bd:var(--ui-primary)}@supports (color:color-mix(in lab,red,red)){:root{--ui-primary-bd:color-mix(in srgb, var(--ui-primary) 28%, white)}}:root{--ui-primary-tint:var(--ui-primary)}@supports (color:color-mix(in lab,red,red)){:root{--ui-primary-tint:color-mix(in srgb, var(--ui-primary) 16%, transparent)}}:root{--ui-primary-hover:oklch(54.3% .218 257.3);--ui-primary-on:var(--ui-surface)}@supports (color:color-mix(in lab,red,red)){:root{--ui-primary-on:color-mix(in srgb, var(--ui-surface) 8%, white)}}:root{--ui-surface:oklch(100% 0 0);--ui-surface-2:oklch(97.67% .00265 286.35);--ui-surface-inset:oklch(93.517% .00535 286.3);--ui-raised:oklch(100% 0 0);--ui-border-strong:oklch(14.5% 0 0/.2);--ui-hairline:oklch(14.5% 0 0/.08);--ui-mask:#00000075;--ui-destructive-soft:var(--ui-destructive)}@supports (color:color-mix(in lab,red,red)){:root{--ui-destructive-soft:color-mix(in srgb, var(--ui-destructive) 10%, white)}}:root{--ui-destructive-bd:var(--ui-destructive)}@supports (color:color-mix(in lab,red,red)){:root{--ui-destructive-bd:color-mix(in srgb, var(--ui-destructive) 28%, white)}}:root{--ui-destructive-hover:var(--ui-destructive)}@supports (color:color-mix(in lab,red,red)){:root{--ui-destructive-hover:color-mix(in srgb, var(--ui-destructive) 22%, var(--ui-surface))}}:root{--ui-success-soft:var(--ui-success)}@supports (color:color-mix(in lab,red,red)){:root{--ui-success-soft:color-mix(in srgb, var(--ui-success) 10%, white)}}:root{--ui-success-bd:var(--ui-success)}@supports (color:color-mix(in lab,red,red)){:root{--ui-success-bd:color-mix(in srgb, var(--ui-success) 28%, white)}}:root{--ui-warning-soft:var(--ui-warning)}@supports (color:color-mix(in lab,red,red)){:root{--ui-warning-soft:color-mix(in srgb, var(--ui-warning) 10%, white)}}:root{--ui-warning-bd:var(--ui-warning)}@supports (color:color-mix(in lab,red,red)){:root{--ui-warning-bd:color-mix(in srgb, var(--ui-warning) 28%, white)}}:root{--ui-info-soft:var(--ui-info)}@supports (color:color-mix(in lab,red,red)){:root{--ui-info-soft:color-mix(in srgb, var(--ui-info) 10%, white)}}:root{--ui-info-bd:var(--ui-info)}@supports (color:color-mix(in lab,red,red)){:root{--ui-info-bd:color-mix(in srgb, var(--ui-info) 28%, white)}}:root{--ui-cn:oklch(57.7% .245 27.325);--ui-cn-soft:var(--ui-cn)}@supports (color:color-mix(in lab,red,red)){:root{--ui-cn-soft:color-mix(in srgb, var(--ui-cn) 10%, white)}}:root{--ui-cn-bd:var(--ui-cn)}@supports (color:color-mix(in lab,red,red)){:root{--ui-cn-bd:color-mix(in srgb, var(--ui-cn) 28%, white)}}:root{--ui-intl:oklch(52% .16 268);--ui-intl-soft:var(--ui-intl)}@supports (color:color-mix(in lab,red,red)){:root{--ui-intl-soft:color-mix(in srgb, var(--ui-intl) 10%, white)}}:root{--ui-intl-bd:var(--ui-intl)}@supports (color:color-mix(in lab,red,red)){:root{--ui-intl-bd:color-mix(in srgb, var(--ui-intl) 28%, white)}}:root{--ui-sensitive:oklch(45% .18 305);--ui-sensitive-soft:oklch(55% .18 305/.14);--ui-sensitive-bd:oklch(55% .18 305/.32);--ui-control-bg:oklch(95.815% 0 0);--ui-control-hover:oklch(93.214% .00536 286.3);--ui-control-border:oklch(14.5% 0 0/.14);--ui-control-border-hover:oklch(14.5% 0 0/.24);--ui-surface-3:oklch(95% 0 0);--ui-text-2:oklch(37% 0 0);--ui-nav-hover:oklch(14.5% 0 0/.05);--ui-sidebar-bg:oklch(92.123% .0046 258.33);--ui-sidebar-fg:oklch(43.287% .01676 258.37);--ui-sidebar-muted:oklch(51.2% .02088 261.29);--ui-rail-bg:oklch(95.5% .004 286);--ui-nav-selected-bg:var(--ui-primary);--ui-nav-selected-border:var(--ui-primary);--ui-nav-selected-fg:var(--ui-primary-foreground);--ui-nav-count-bg:oklch(84.405% .05294 251.09);--ui-table-bg:var(--ui-surface);--ui-table-head-bg:var(--ui-surface);--ui-row-hover:var(--ui-surface-2);--ui-chart-1:oklch(72% .18 250);--ui-chart-2:oklch(65% .15 200);--ui-chart-3:oklch(70% .12 280);--ui-chart-4:oklch(68% .19 325);--ui-chart-5:oklch(68% .16 155);--ui-sidebar:var(--ui-sidebar-bg);--ui-sidebar-foreground:var(--ui-sidebar-fg);--ui-sidebar-primary:oklch(64% .197 253.892);--ui-sidebar-primary-foreground:oklch(100% 0 0);--ui-sidebar-accent:var(--ui-primary)}@supports (color:color-mix(in lab,red,red)){:root{--ui-sidebar-accent:color-mix(in srgb, var(--ui-primary) 10%, white)}}:root{--ui-sidebar-accent-foreground:oklch(57.9% .196 255.909);--ui-sidebar-border:var(--ui-border-strong);--ui-sidebar-ring:oklch(58% .2 250);--ui-skeleton-base:oklch(97% 0 0);--ui-skeleton-highlight:oklch(98.5% 0 0);--ui-shadow-1:0 1px 2px oklch(14.5% 0 0/.05);--ui-shadow-2:0 1px 3px oklch(14.5% 0 0/.06), 0 10px 26px -16px oklch(14.5% 0 0/.2);--ui-shadow-3:0 2px 8px oklch(14.5% 0 0/.07), 0 22px 54px -22px oklch(14.5% 0 0/.26);--ui-glow:0 1px 2px oklch(14.5% 0 0/.06), 0 10px 22px -12px var(--ui-primary)}@supports (color:color-mix(in lab,red,red)){:root{--ui-glow:0 1px 2px oklch(14.5% 0 0/.06), 0 10px 22px -12px color-mix(in srgb, var(--ui-primary) 45%, transparent)}}:root{--ui-focus-ring:0 0 0 3px var(--ui-primary)}@supports (color:color-mix(in lab,red,red)){:root{--ui-focus-ring:0 0 0 3px color-mix(in srgb, var(--ui-primary) 25%, transparent)}}:root[data-theme=dark]{--ui-background:oklch(0% 0 0);--ui-foreground:oklch(96.5% 0 0);--ui-card:oklch(19.212% .00399 286.02);--ui-card-foreground:oklch(96.5% 0 0);--ui-popover:oklch(30% .005 286);--ui-popover-foreground:oklch(96.5% 0 0);--ui-primary:oklch(62.3% .206 255.3);--ui-primary-foreground:oklch(100% 0 0);--ui-secondary:oklch(33.5% 0 0);--ui-secondary-foreground:oklch(90% .05 250);--ui-muted:oklch(30.5% 0 0);--ui-muted-foreground:oklch(78% 0 0);--ui-accent:var(--ui-primary);--ui-accent-foreground:oklch(100% 0 0);--ui-destructive:oklch(70.4% .191 22.216);--ui-destructive-foreground:oklch(98.5% 0 0);--ui-success:oklch(69.6% .17 162.48);--ui-success-foreground:oklch(14.5% 0 0);--ui-warning:oklch(76.9% .188 70.08);--ui-warning-foreground:oklch(14.5% 0 0);--ui-info:oklch(61.3% .14 239.919);--ui-info-foreground:oklch(14.5% 0 0);--ui-neutral:oklch(76% 0 0);--ui-neutral-foreground:oklch(15.5% 0 0);--ui-border:oklch(100% 0 0/.1);--ui-input:oklch(100% 0 0/.17);--ui-ring:oklch(55.4% .148 250.726);--ui-primary-soft:oklch(62.3% .206 255.3/.15);--ui-primary-fg:oklch(75% .12 255.3);--ui-primary-bd:oklch(62.3% .206 255.3/.38);--ui-primary-tint:var(--ui-primary)}@supports (color:color-mix(in lab,red,red)){:root[data-theme=dark]{--ui-primary-tint:color-mix(in srgb, var(--ui-primary) 16%, transparent)}}:root[data-theme=dark]{--ui-primary-hover:oklch(68% .206 255.3);--ui-primary-on:var(--ui-surface)}@supports (color:color-mix(in lab,red,red)){:root[data-theme=dark]{--ui-primary-on:color-mix(in srgb, var(--ui-surface) 8%, white)}}:root[data-theme=dark]{--ui-surface:oklch(19.212% .00399 286.02);--ui-surface-2:oklch(28.254% .00726 285.93);--ui-surface-inset:oklch(21.5% .005 286);--ui-raised:oklch(30% .005 286);--ui-border-strong:oklch(100% 0 0/.2);--ui-hairline:oklch(100% 0 0/.09);--ui-mask:#00000075;--ui-destructive-soft:oklch(70.4% .191 22.216/.14);--ui-destructive-bd:oklch(70.4% .191 22.216/.32);--ui-destructive-hover:var(--ui-destructive)}@supports (color:color-mix(in lab,red,red)){:root[data-theme=dark]{--ui-destructive-hover:color-mix(in srgb, var(--ui-destructive) 22%, var(--ui-surface))}}:root[data-theme=dark]{--ui-success-soft:oklch(69.6% .17 162.48/.14);--ui-success-bd:oklch(69.6% .17 162.48/.32);--ui-warning-soft:oklch(76.9% .188 70.08/.14);--ui-warning-bd:oklch(76.9% .188 70.08/.32);--ui-info-soft:oklch(61.3% .14 239.919/.14);--ui-info-bd:oklch(61.3% .14 239.919/.32);--ui-cn:oklch(70.4% .191 22.216);--ui-cn-soft:oklch(70.4% .191 22.216/.14);--ui-cn-bd:oklch(70.4% .191 22.216/.32);--ui-intl:oklch(68% .14 268);--ui-intl-soft:oklch(68% .14 268/.14);--ui-intl-bd:oklch(68% .14 268/.32);--ui-sensitive:oklch(82% .12 305);--ui-sensitive-soft:oklch(70% .16 305/.16);--ui-sensitive-bd:oklch(70% .16 305/.34);--ui-control-bg:oklch(36.572% .0085 285.97);--ui-control-hover:oklch(40.758% .00993 285.95);--ui-control-border:oklch(100% 0 0/.15);--ui-control-border-hover:oklch(100% 0 0/.25);--ui-surface-3:oklch(32.737% .0105 285.81);--ui-text-2:oklch(85% 0 0);--ui-nav-hover:oklch(100% 0 0/.06);--ui-sidebar-bg:oklch(19.212% .00399 286.02);--ui-sidebar-fg:oklch(79.794% .01342 266.68);--ui-sidebar-muted:oklch(67.832% .0176 262.73);--ui-rail-bg:oklch(24% .005 286);--ui-nav-selected-bg:var(--ui-primary);--ui-nav-selected-border:var(--ui-primary);--ui-nav-selected-fg:var(--ui-primary-foreground);--ui-nav-count-bg:oklch(43.273% .06483 250.27);--ui-chart-1:oklch(76% .14 250);--ui-chart-2:oklch(76% .13 200);--ui-chart-3:oklch(76% .13 285);--ui-chart-4:oklch(75% .16 325);--ui-chart-5:oklch(76% .14 155);--ui-sidebar:var(--ui-sidebar-bg);--ui-sidebar-foreground:var(--ui-sidebar-fg);--ui-sidebar-primary:oklch(58.8% .123 246.488);--ui-sidebar-primary-foreground:oklch(100% 0 0);--ui-sidebar-accent:oklch(100% 0 0/.09);--ui-sidebar-accent-foreground:var(--ui-primary);--ui-sidebar-border:var(--ui-border-strong);--ui-sidebar-ring:oklch(70% .17 250);--ui-skeleton-base:oklch(33.5% 0 0);--ui-skeleton-highlight:oklch(44% 0 0);--ui-shadow-1:0 1px 2px oklch(0% 0 0/.4);--ui-shadow-2:0 1px 2px oklch(0% 0 0/.4), 0 12px 28px -18px oklch(0% 0 0/.8);--ui-shadow-3:0 2px 10px oklch(0% 0 0/.45), 0 26px 60px -24px oklch(0% 0 0/.85);--ui-glow:0 1px 2px oklch(0% 0 0/.4), 0 10px 22px -14px oklch(62.3% .206 255.3/.5);--ui-focus-ring:0 0 0 3px oklch(62.3% .206 255.3/.3)}@media(prefers-color-scheme:dark){:root[data-theme=system]{--ui-background:oklch(0% 0 0);--ui-foreground:oklch(96.5% 0 0);--ui-card:oklch(19.212% .00399 286.02);--ui-card-foreground:oklch(96.5% 0 0);--ui-popover:oklch(30% .005 286);--ui-popover-foreground:oklch(96.5% 0 0);--ui-primary:oklch(62.3% .206 255.3);--ui-primary-foreground:oklch(100% 0 0);--ui-secondary:oklch(33.5% 0 0);--ui-secondary-foreground:oklch(90% .05 250);--ui-muted:oklch(30.5% 0 0);--ui-muted-foreground:oklch(78% 0 0);--ui-accent:var(--ui-primary);--ui-accent-foreground:oklch(100% 0 0);--ui-destructive:oklch(70.4% .191 22.216);--ui-destructive-foreground:oklch(98.5% 0 0);--ui-success:oklch(69.6% .17 162.48);--ui-success-foreground:oklch(14.5% 0 0);--ui-warning:oklch(76.9% .188 70.08);--ui-warning-foreground:oklch(14.5% 0 0);--ui-info:oklch(61.3% .14 239.919);--ui-info-foreground:oklch(14.5% 0 0);--ui-neutral:oklch(76% 0 0);--ui-neutral-foreground:oklch(15.5% 0 0);--ui-border:oklch(100% 0 0/.1);--ui-input:oklch(100% 0 0/.17);--ui-ring:oklch(55.4% .148 250.726);--ui-primary-soft:oklch(62.3% .206 255.3/.15);--ui-primary-fg:oklch(75% .12 255.3);--ui-primary-bd:oklch(62.3% .206 255.3/.38);--ui-primary-tint:var(--ui-primary)}@supports (color:color-mix(in lab,red,red)){:root[data-theme=system]{--ui-primary-tint:color-mix(in srgb, var(--ui-primary) 16%, transparent)}}:root[data-theme=system]{--ui-primary-hover:oklch(68% .206 255.3);--ui-primary-on:var(--ui-surface)}@supports (color:color-mix(in lab,red,red)){:root[data-theme=system]{--ui-primary-on:color-mix(in srgb, var(--ui-surface) 8%, white)}}:root[data-theme=system]{--ui-surface:oklch(19.212% .00399 286.02);--ui-surface-2:oklch(28.254% .00726 285.93);--ui-surface-inset:oklch(21.5% .005 286);--ui-raised:oklch(30% .005 286);--ui-border-strong:oklch(100% 0 0/.2);--ui-hairline:oklch(100% 0 0/.09);--ui-mask:#00000075;--ui-destructive-soft:oklch(70.4% .191 22.216/.14);--ui-destructive-bd:oklch(70.4% .191 22.216/.32);--ui-destructive-hover:var(--ui-destructive)}@supports (color:color-mix(in lab,red,red)){:root[data-theme=system]{--ui-destructive-hover:color-mix(in srgb, var(--ui-destructive) 22%, var(--ui-surface))}}:root[data-theme=system]{--ui-success-soft:oklch(69.6% .17 162.48/.14);--ui-success-bd:oklch(69.6% .17 162.48/.32);--ui-warning-soft:oklch(76.9% .188 70.08/.14);--ui-warning-bd:oklch(76.9% .188 70.08/.32);--ui-info-soft:oklch(61.3% .14 239.919/.14);--ui-info-bd:oklch(61.3% .14 239.919/.32);--ui-cn:oklch(70.4% .191 22.216);--ui-cn-soft:oklch(70.4% .191 22.216/.14);--ui-cn-bd:oklch(70.4% .191 22.216/.32);--ui-intl:oklch(68% .14 268);--ui-intl-soft:oklch(68% .14 268/.14);--ui-intl-bd:oklch(68% .14 268/.32);--ui-sensitive:oklch(82% .12 305);--ui-sensitive-soft:oklch(70% .16 305/.16);--ui-sensitive-bd:oklch(70% .16 305/.34);--ui-control-bg:oklch(36.572% .0085 285.97);--ui-control-hover:oklch(40.758% .00993 285.95);--ui-control-border:oklch(100% 0 0/.15);--ui-control-border-hover:oklch(100% 0 0/.25);--ui-surface-3:oklch(32.737% .0105 285.81);--ui-text-2:oklch(85% 0 0);--ui-nav-hover:oklch(100% 0 0/.06);--ui-sidebar-bg:oklch(19.212% .00399 286.02);--ui-sidebar-fg:oklch(79.794% .01342 266.68);--ui-sidebar-muted:oklch(67.832% .0176 262.73);--ui-rail-bg:oklch(24% .005 286);--ui-nav-selected-bg:var(--ui-primary);--ui-nav-selected-border:var(--ui-primary);--ui-nav-selected-fg:var(--ui-primary-foreground);--ui-nav-count-bg:oklch(43.273% .06483 250.27);--ui-chart-1:oklch(76% .14 250);--ui-chart-2:oklch(76% .13 200);--ui-chart-3:oklch(76% .13 285);--ui-chart-4:oklch(75% .16 325);--ui-chart-5:oklch(76% .14 155);--ui-sidebar:var(--ui-sidebar-bg);--ui-sidebar-foreground:var(--ui-sidebar-fg);--ui-sidebar-primary:oklch(58.8% .123 246.488);--ui-sidebar-primary-foreground:oklch(100% 0 0);--ui-sidebar-accent:oklch(100% 0 0/.09);--ui-sidebar-accent-foreground:var(--ui-primary);--ui-sidebar-border:var(--ui-border-strong);--ui-sidebar-ring:oklch(70% .17 250);--ui-skeleton-base:oklch(33.5% 0 0);--ui-skeleton-highlight:oklch(44% 0 0);--ui-shadow-1:0 1px 2px oklch(0% 0 0/.4);--ui-shadow-2:0 1px 2px oklch(0% 0 0/.4), 0 12px 28px -18px oklch(0% 0 0/.8);--ui-shadow-3:0 2px 10px oklch(0% 0 0/.45), 0 26px 60px -24px oklch(0% 0 0/.85);--ui-glow:0 1px 2px oklch(0% 0 0/.4), 0 10px 22px -14px oklch(62.3% .206 255.3/.5);--ui-focus-ring:0 0 0 3px oklch(62.3% .206 255.3/.3)}}:root{--font-sans:var(--ui-font-sans);--font-mono:var(--ui-font-mono);--bg:var(--ui-background);--surface:var(--ui-surface);--surface-2:var(--ui-surface-2);--surface-3:var(--ui-surface-3);--surface-raised:var(--ui-raised);--surface-inset:var(--ui-surface-inset);--table-bg:var(--ui-table-bg);--table-head-bg:var(--ui-table-head-bg);--row-hover:var(--ui-row-hover);--border:var(--ui-border);--border-strong:var(--ui-border-strong);--hairline:var(--ui-hairline);--control-bg:var(--ui-control-bg);--control:var(--ui-control-bg);--control-hover:var(--ui-control-hover);--control-border:var(--ui-control-border);--control-border-hover:var(--ui-control-border-hover);--sidebar-bg:var(--ui-sidebar-bg);--sidebar-border:var(--ui-sidebar-border);--sidebar-fg:var(--ui-sidebar-fg);--sidebar-muted:var(--ui-sidebar-muted);--rail-bg:var(--ui-rail-bg);--nav-hover:var(--ui-nav-hover);--nav-selected-bg:var(--ui-nav-selected-bg);--nav-selected-border:var(--ui-nav-selected-border);--nav-selected-fg:var(--ui-nav-selected-fg);--nav-count-bg:var(--ui-nav-count-bg);--text:var(--ui-foreground);--text-2:var(--ui-text-2);--text-3:var(--ui-muted-foreground);--primary:var(--ui-primary);--primary-hover:var(--ui-primary-hover);--primary-soft:var(--ui-primary-soft);--primary-bd:var(--ui-primary-bd);--primary-fg:var(--ui-primary-fg);--ok:var(--ui-success);--ok-soft:var(--ui-success-soft);--ok-bd:var(--ui-success-bd);--warn:var(--ui-warning);--warn-soft:var(--ui-warning-soft);--warn-bd:var(--ui-warning-bd);--danger:var(--ui-destructive);--danger-soft:var(--ui-destructive-soft);--danger-bd:var(--ui-destructive-bd);--info:var(--ui-info);--info-soft:var(--ui-info-soft);--info-bd:var(--ui-info-bd);--cn:var(--ui-cn);--cn-soft:var(--ui-cn-soft);--cn-bd:var(--ui-cn-bd);--intl:var(--ui-intl);--intl-soft:var(--ui-intl-soft);--intl-bd:var(--ui-intl-bd);--radius:var(--radius-lg);--r-xs:var(--radius-xs);--r-sm:var(--radius-sm);--r-md:var(--radius-md);--r-lg:var(--radius-lg);--r-xl:var(--radius-xl);--r-pill:var(--radius-pill);--shadow-1:var(--ui-shadow-1);--shadow-2:var(--ui-shadow-2);--shadow-3:var(--ui-shadow-3);--glow:var(--ui-glow);--ring:var(--ui-focus-ring)}.page.active[data-page=docs]{padding-bottom:var(--pad);flex-direction:column;display:flex;overflow:hidden}.docs-browser{border:1px solid var(--ui-border);border-radius:var(--ui-radius);background:var(--ui-surface);flex:1;min-width:0;min-height:0;display:flex;overflow:hidden;container:documentation/inline-size}.docs-layout{flex:1;grid-template-rows:minmax(0,1fr);grid-template-columns:224px minmax(0,1fr);width:100%;min-width:0;min-height:0;display:grid}.docs-sidebar{border-right:1px solid var(--ui-border);background:var(--ui-rail-bg);flex-direction:column;min-width:0;min-height:0;display:flex}.docs-sidebar-head{border-bottom:1px solid var(--ui-border);flex:none;padding:18px 12px 14px}.docs-sidebar-title{color:var(--ui-foreground);padding:0 3px;font-size:14px;font-weight:650}.docs-sidebar-caption{color:var(--ui-muted-foreground);margin-top:5px;padding:0 3px;font-size:11.5px;line-height:1.6}.docs-search{margin-top:14px}.docs-search input::-webkit-search-cancel-button{display:none}.docs-menu-toggle{display:none}.docs-navigation{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-gutter:stable;flex-direction:column;flex:1;gap:16px;min-height:0;padding:12px 8px 20px;display:flex;overflow-y:auto}.docs-nav-group{flex:none;min-width:0}.docs-nav-group .docs-group-head{border:1px solid var(--ui-border);border-radius:calc(var(--ui-radius) * .5);background:var(--ui-surface);color:var(--ui-foreground);letter-spacing:0;text-transform:none;align-items:center;gap:8px;padding:8px 10px;font-size:12px;font-weight:650;line-height:1.6;display:flex}.docs-group-head>span{overflow-wrap:anywhere;min-width:0}.docs-group-icon{width:16px;height:16px;color:var(--ui-primary-fg);flex:none}.docs-nav-chapters{border-left:1px solid var(--ui-border-strong);margin-top:6px;margin-left:17px;padding-left:12px}.docs-nav-item{gap:7px;padding:7px 8px}.docs-nav-item:before{content:"";border-top:1px solid var(--ui-border-strong);width:9px;position:absolute;top:50%;left:-13px}.docs-chapter-icon{width:14px;height:14px;color:var(--ui-muted-foreground)}.docs-nav-item[data-active] .docs-chapter-icon{color:inherit}.docs-nav-item[data-active]:before{border-color:var(--ui-primary)}.docs-nav-item [data-slot=nav-item-label]{white-space:normal;overflow-wrap:anywhere;line-height:1.6;overflow:visible}.docs-search-summary{color:var(--ui-muted-foreground);padding:0 8px;font-size:11.5px}.docs-search-empty{padding:16px 8px}.docs-search-empty [data-slot=empty-title]{font-size:12.5px}.docs-article{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-gutter:stable;overflow-anchor:none;min-width:0;min-height:0;padding:clamp(22px,3cqi,40px);overflow:auto}.docs-article-inner{min-width:0;max-width:920px;margin:0 auto}.docs-article-head{border-bottom:1px solid var(--ui-border);flex-direction:column;align-items:flex-start;gap:12px;margin-bottom:24px;padding-bottom:24px;display:flex}.docs-breadcrumb{color:var(--ui-muted-foreground);flex-wrap:wrap;align-items:center;gap:8px;font-size:11.5px;line-height:1.6;display:flex}.docs-article-head h2{color:var(--ui-foreground);letter-spacing:-.025em;overflow-wrap:anywhere;outline:none;margin:2px 0 0;font-size:clamp(21px,2.4cqi,28px);font-weight:650;line-height:1.35}.docs-article-head p{color:var(--ui-muted-foreground);margin:0;font-size:13px;line-height:1.85}.docs-article-path{border:1px solid var(--ui-border);border-radius:calc(var(--ui-radius) * .5);background:var(--ui-surface-inset);max-width:100%;color:var(--ui-text-2);font-family:var(--ui-font-mono);overflow-wrap:anywhere;padding:6px 10px;font-size:11.5px;line-height:1.75}.docs-reference,.docs-block,.docs-prose{flex-direction:column;min-width:0;display:flex}.docs-reference{gap:28px}.docs-block,.docs-prose{gap:14px}.docs-prose p,.docs-points{color:var(--ui-text-2);overflow-wrap:anywhere;margin:0;font-size:13px;line-height:1.9}.docs-block h3{color:var(--ui-foreground);margin:0;font-size:15px;font-weight:650;line-height:1.6}.docs-points{flex-direction:column;gap:10px;padding-left:20px;list-style:outside;display:flex}.docs-block>[data-slot=table-container]{border:1px solid var(--ui-border);border-radius:calc(var(--ui-radius) * .6)}.docs-block [data-slot=table-cell],.docs-block [data-slot=table-head]{padding:10px 12px}.docs-block [data-slot=table-head]{background:var(--ui-table-head-bg)}.docs-block [data-slot=table-row]:last-child [data-slot=table-cell]{border-bottom:0}.docs-example-note{color:var(--ui-muted-foreground);margin:-6px 0 0;font-size:11.5px;line-height:1.8}.docs-example-head h4{overflow-wrap:anywhere;min-width:0}.docs-addresses{margin-bottom:0}.docs-addresses .panel-head h3{color:var(--ui-foreground);margin:0;font-size:14px;font-weight:650}.docs-pagination{border-top:1px solid var(--ui-border);grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:36px;padding-top:20px;display:grid}.docs-pagination>div{min-width:0}.docs-page-link{white-space:normal;text-align:left;flex-direction:column;align-items:flex-start;gap:5px;width:100%;height:auto;padding:12px 0 12px 30px;display:flex;position:relative}.docs-page-link-label{color:var(--ui-muted-foreground);font-size:11px;font-weight:400}.docs-page-link-title{color:var(--ui-primary-fg);overflow-wrap:anywhere;font-size:12.5px;line-height:1.6}.docs-page-link-arrow{color:var(--ui-muted-foreground);position:absolute;top:50%;left:8px;transform:translateY(-50%)}.docs-page-link-next{text-align:right;align-items:flex-end;padding:12px 30px 12px 0}.docs-page-link-next .docs-page-link-arrow{left:auto;right:8px}.docs-mobile-page .docs-browser{border:0;border-radius:0}@container documentation (max-width:700px){.docs-layout{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr)}.docs-sidebar{border-right:0;border-bottom:1px solid var(--ui-border);grid-column:1/-1}.docs-sidebar-head{border-bottom:0;padding:10px 12px}.docs-sidebar-title,.docs-sidebar-caption{display:none}.docs-search{margin-top:0}.docs-menu-toggle{justify-content:flex-start;width:100%;height:auto;min-height:36px;margin-top:6px;padding:5px 2px;display:flex}.docs-menu-current{text-align:left;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.docs-menu-action{color:var(--ui-muted-foreground);flex:none;font-size:11px}.docs-navigation{display:none}.docs-browser[data-menu-open=true] .docs-navigation{border-top:1px solid var(--ui-border);max-height:min(40vh,340px);display:flex}.docs-nav-item{padding-top:9px;padding-bottom:9px}.docs-article{grid-column:1/-1;padding:20px 16px 28px}.docs-article-head{gap:10px;margin-bottom:20px;padding-bottom:20px}.docs-reference{gap:24px}.docs-pagination{gap:10px}}@media(max-width:767px){.page.active[data-page=docs]{padding-bottom:12px}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}.acct-settings-dialog{width:min(920px,calc(100vw - 40px));height:min(660px,calc(100dvh - 88px));min-height:0}:where(.acct-settings-dialog) :where(h1,h2,h3,h4,p){margin:0}.acct-settings-dialog [data-slot=dialog-header],.acct-settings-dialog [data-slot=dialog-footer]{flex:none}.acct-dlg-header{display:flex;align-items:center;gap:11px;padding:12px 44px 12px 16px}.acct-dlg-avatar{display:flex;align-items:center;justify-content:center;width:30px;height:30px;flex:none;border-radius:var(--radius-sm);background:var(--primary-soft);color:var(--primary-fg)}.acct-dlg-icon{display:inline-flex;align-items:center;justify-content:center;flex:none}.acct-dlg-icon svg{display:block}.acct-dlg-identity{min-width:0}.acct-dlg-title-row{display:flex;align-items:center;gap:8px}.acct-dlg-header .acct-dlg-title-row h2{flex:none;font-size:14px;font-weight:600;letter-spacing:-.01em}.acct-dlg-title-row [data-slot=badge]{font-size:10.5px;font-weight:500}.acct-dlg-identity p{display:flex;align-items:center;gap:6px;margin-top:3px;color:var(--text-3);font-size:11.5px}.acct-dlg-identity p>span:first-child{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.acct-dlg-title-dot{opacity:.5}.acct-dlg-account-state{display:inline-flex;align-items:center;gap:5px;flex:none;color:var(--ok)}.acct-dlg-account-state.off{color:var(--text-3)}.acct-dlg-account-state>span{width:5px;height:5px}.acct-dlg-body{flex:1;min-height:0;padding:0;gap:0;overflow:hidden}.acct-dlg{display:flex;flex:1;min-height:0}.acct-dlg-rail{flex:0 0 172px;min-height:0;gap:0;padding:8px 10px 10px;background:var(--surface-2);border-color:var(--hairline)}.acct-dlg-nav{min-height:0;flex:1;overflow-y:auto;overflow-x:hidden;gap:1px}.acct-dlg-nav [data-slot=nav-item]>.acct-dlg-icon{color:var(--text-3)}.acct-dlg-nav [data-slot=nav-item]:not([data-active]):hover{background:var(--nav-hover)}.acct-dlg-nav [data-slot=nav-item][data-active]>.acct-dlg-icon{color:#fff}.acct-dlg-nav-label{display:flex;align-items:center;justify-content:space-between;gap:8px;flex:none;padding:10px 8px 5px;font-size:10.5px;font-weight:500;color:var(--text-3)}.acct-dlg-nav-label>span{padding:0 4px;border:1px solid var(--hairline);border-radius:var(--radius-pill);font-size:9.5px}.acct-dlg-nav-divider{border-top:1px solid var(--hairline);margin:9px 8px;flex:none}.acct-dlg-dirty-dot{width:5px;height:5px;flex:none;border-radius:50%;background:var(--primary)}.acct-dlg-nav [data-slot=nav-item][data-active] .acct-dlg-dirty-dot{background:#fff}.acct-dlg-rail-context{flex:none;margin-top:auto;padding:11px 8px 2px;border-top:1px solid var(--hairline)}.acct-dlg-rail-context strong{display:flex;align-items:center;gap:6px;font-size:11.5px;font-weight:500;color:var(--text-2);overflow-wrap:anywhere}.acct-dlg-rail-context p{font-size:10.5px;color:var(--text-3);margin-top:4px}.acct-dlg-main{display:flex;flex-direction:column;flex:1;min-width:0;min-height:0}.acct-dlg-pane-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex:none;padding:14px 22px 10px}.acct-dlg-pane-head h3{font-size:14px;font-weight:600;letter-spacing:-.01em}.acct-dlg-pane-head p{font-size:11.5px;color:var(--text-3);line-height:1.5;margin-top:2px}.acct-dlg-scope{display:inline-flex;align-items:center;gap:5px;flex:none;margin-top:2px;font-size:11px;color:var(--text-3);white-space:nowrap}.acct-dlg-scope.shared{color:var(--warn)}.acct-dlg-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:2px 22px 22px;scrollbar-gutter:stable;overscroll-behavior:contain}.acct-dlg-pane{display:block;min-width:0}.acct-dlg-group-wrap{margin-top:15px}.acct-dlg-group-wrap:first-child{margin-top:6px}.acct-dlg-group-label{display:flex;align-items:center;gap:8px;margin:0 4px 5px;font-size:11px;font-weight:500;color:var(--text-3)}.acct-dlg-group-wrap+.acct-dlg-group-label{margin-top:15px}.acct-dlg-group-label .acct-dlg-label-action{margin-left:auto;display:inline-flex;align-items:center;gap:6px}.acct-dlg-group{display:block;overflow:hidden;border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--surface)}.acct-dlg-group>*{margin-top:0;margin-bottom:0}.acct-dlg-group>*+*{border-top:1px solid var(--hairline)}.acct-dlg-group>[data-slot=field],.acct-dlg-group>[data-slot=field-group],.acct-dlg-group>.acct-dlg-readonly,.acct-dlg-group>.acct-dlg-inline-note,.acct-dlg-group>.acct-dlg-block,.acct-dlg-group>.acct-dlg-endpoint,.acct-dlg-group>.acct-dlg-model-link,.acct-dlg-group>p{padding:10px 14px}.acct-dlg-group>[data-slot=field]{min-height:44px}.acct-dlg-group>.acct-dlg-field-grid{padding:12px 14px}.acct-dlg-field>[data-slot=field-label],.acct-dlg-field-head>[data-slot=field-label]{color:var(--text-2);font-size:11.5px;font-weight:400}.acct-dlg-field{gap:7px}.acct-dlg-field-head{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:18px}.acct-dlg-field [data-slot=field-description],.acct-dlg-toggle-field [data-slot=field-description],.acct-dlg-concurrency [data-slot=field-description]{font-size:11.5px;line-height:1.5;color:var(--text-3)}.acct-settings-dialog [data-slot=input],.acct-settings-dialog [data-slot=input-group],.acct-settings-dialog [data-slot=combobox-trigger],.acct-settings-dialog [data-slot=select-trigger]{height:28px;min-width:0;font-size:12.5px}.acct-settings-dialog [data-slot=input-group-control]{height:26px;min-width:0}.acct-dlg-field>[data-slot=select-trigger]{width:100%}.acct-dlg-clear{height:20px;padding:0;color:var(--text-3);font-size:11px;font-weight:400}.acct-dlg-clear:hover{color:var(--danger);background:transparent}.acct-dlg-readonly{display:flex;align-items:flex-start;gap:12px;font-size:11.5px;color:var(--text-3)}.acct-dlg-readonly code{margin-left:auto;font-family:var(--font-mono);overflow-wrap:anywhere;text-align:right;color:var(--text-2)}.acct-dlg-toggle-field{flex-direction:row;align-items:center;justify-content:space-between;gap:18px}.acct-dlg-toggle-field>[data-slot=switch],.acct-dlg-concurrency>[data-slot=input]{flex:none}.acct-dlg-toggle-field>div{min-width:0}.acct-dlg-toggle-field [data-slot=field-label],.acct-dlg-concurrency [data-slot=field-label]{font-size:12.5px;font-weight:400;color:var(--text)}.acct-dlg-toggle-field [data-slot=field-description],.acct-dlg-concurrency [data-slot=field-description]{margin-top:2px}.acct-dlg-concurrency{flex-direction:row;align-items:center;justify-content:space-between;gap:16px}.acct-dlg-concurrency [data-slot=input]{width:74px;text-align:right;font-variant-numeric:tabular-nums}.acct-dlg-hint{margin:7px 4px 0;text-align:right}.acct-dlg-group-note{display:flex;align-items:flex-start;gap:7px;margin:9px 4px 0;font-size:11.5px;line-height:1.55;color:var(--text-3)}.acct-dlg-group-note .acct-dlg-icon{margin-top:1.5px}.acct-dlg-group-note a{color:var(--primary-fg);text-decoration:none}.acct-dlg-group-note a:hover{text-decoration:underline}.acct-dlg-inline-note{display:flex;align-items:flex-start;gap:7px;font-size:11.5px;line-height:1.55;color:var(--text-3)}.acct-dlg-inline-note>.acct-dlg-icon{margin-top:1.5px}.acct-dlg-inline-note.warning{color:var(--warn)}.acct-dlg-choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.acct-dlg-choice{display:flex;align-items:center;gap:9px;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer}.acct-dlg-choice[data-selected]{border-color:var(--primary-bd);background:var(--primary-soft)}.acct-dlg-choice:has(:focus-visible){box-shadow:var(--ring)}.acct-dlg-choice>span:not([data-slot]){display:flex;flex-direction:column;gap:2px;min-width:0}.acct-dlg-choice strong{font-size:12.5px;font-weight:500}.acct-dlg-choice[data-selected] strong{color:var(--primary-fg)}.acct-dlg-choice small{color:var(--text-3);font-size:11px;font-weight:400}.acct-proxy-form{padding:10px 14px}.acct-dlg-scope-notice{display:flex;align-items:flex-start;gap:8px;padding:10px 13px;font-size:11.5px;line-height:1.55}.acct-dlg-scope-notice>.acct-dlg-icon{margin-top:1.5px}.acct-dlg-scope-notice strong{font-size:12px;font-weight:500}.acct-dlg-scope-notice p{font-size:11.5px;color:var(--text-2);margin-top:3px}.acct-dlg-field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-width:0}.acct-dlg-field-full{grid-column:1 / -1}.acct-dlg-endpoint{display:flex;flex-direction:column;gap:3px}.acct-dlg-endpoint>span{font-size:10.5px;color:var(--text-3)}.acct-dlg-endpoint code{font-size:11.5px;color:var(--text-2);overflow-wrap:anywhere}.acct-dlg-model-link{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--text-3);font-size:11.5px}.acct-dlg-model-link>button{padding:0;font-size:11.5px;height:auto;min-height:22px}.acct-dlg-advanced{border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--surface);overflow:hidden}.acct-dlg-advanced-trigger{display:flex;align-items:center;gap:8px;width:100%;height:auto;min-height:40px;padding:10px 14px;border-radius:var(--radius-md);color:var(--text-2);font-size:12px}.acct-dlg-advanced-trigger small{margin-left:auto;font-size:11px;font-weight:400;color:var(--text-3)}.acct-dlg-advanced-trigger>.acct-dlg-icon:last-child{transition:transform .15s}.acct-dlg-advanced-trigger[data-panel-open]>.acct-dlg-icon:last-child{transform:rotate(90deg)}.acct-dlg-advanced-content{padding:0 14px 12px}.acct-dlg-advanced-content>[data-slot=field]{padding:10px 0 0}.acct-dlg-advanced-note{margin-top:10px;border-radius:var(--radius-sm);background:var(--surface-inset);padding:9px 11px;font-size:11px}.acct-dlg-danger{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:14px;padding:10px 14px;border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--surface)}.acct-dlg-danger h3{font-size:12.5px;font-weight:400;color:var(--danger)}.acct-dlg-danger p{font-size:11.5px;color:var(--text-3);margin-top:2px}.acct-dlg-delete{color:var(--danger);border-color:var(--danger-bd);background:transparent}.acct-dlg-delete:hover{background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}.acct-dlg-related{display:flex;align-items:center;gap:10px;margin-top:14px;padding:10px 14px;border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--surface)}.acct-dlg-related>.acct-dlg-icon{color:var(--text-3)}.acct-dlg-related>div:not(.acct-dlg-icon){min-width:0}.acct-dlg-related h3{font-size:12px;font-weight:400;color:var(--text-2)}.acct-dlg-related p{font-size:11.5px;color:var(--text-3);margin-top:2px}.acct-dlg-related>button{margin-left:auto;flex:none;padding:0;font-size:11.5px;height:auto;min-height:22px}.acct-dlg-route-context{margin-top:14px;padding-top:12px;border-top:1px solid var(--hairline)}.acct-limiter-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:6px 4px 8px}.acct-limiter-lead{margin:0 4px;font-size:11.5px;color:var(--text-3)}.acct-limiter-group{padding:10px 14px;border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--surface)}.acct-limiter-group+.acct-limiter-group{margin-top:10px}.acct-limiter-head{display:flex;flex-wrap:wrap;align-items:center;gap:9px}.acct-limiter-condition{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:8px;padding:9px 11px;border-radius:var(--radius-sm);background:var(--surface-inset)}.acct-limiter-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:8px}.acct-limiter-expression{font-size:11.5px;color:var(--text-3)}.acct-usage-toggle{min-height:44px}.acct-usage-toggle [data-slot=field-label]{font-size:12.5px;font-weight:400;color:var(--text-2)}.acct-usage-interval{min-height:40px}.acct-usage-interval [data-slot=field-label]{color:var(--text-2);font-size:11.5px}.acct-settings-dialog .acct-usage-interval [data-slot=input]{max-width:88px}.acct-settings-dialog .acct-usage-interval [data-slot=select-trigger]{width:88px}.acct-dlg-footer{justify-content:space-between;gap:16px;padding:11px 16px;background:var(--surface)}.acct-dlg-save-state{display:flex;align-items:center;gap:8px;min-width:0;color:var(--text-3)}.acct-dlg-save-state>.acct-dlg-icon{flex:none}.acct-dlg-save-state strong{display:block;font-size:11.5px;font-weight:500;color:var(--text-2);overflow-wrap:anywhere}.acct-dlg-save-state p{font-size:10.5px;margin-top:2px}.acct-dlg-save-state.dirty>.acct-dlg-icon{color:var(--primary-fg)}.acct-dlg-footer-actions{display:flex;align-items:center;gap:8px;flex:none}.acct-dlg-footer-actions button{height:29px;min-width:68px}.acct-settings-dialog .detail{font-size:11.5px;line-height:1.55;color:var(--text-3)}.acct-settings-dialog .field-row{gap:10px;min-height:30px}.acct-settings-dialog .acct-dlg-main .field-row>label,.acct-settings-dialog .acct-dlg-main .field-row>[data-slot=field]>[data-slot=field-label]{width:auto;flex:initial;text-align:left;white-space:normal;font-size:11.5px;color:var(--text-2)}@media(max-width:950px){.acct-dlg-rail{flex-basis:156px}.acct-dlg-pane-head,.acct-dlg-scroll{padding-left:18px;padding-right:18px}.acct-dlg-field-grid,.acct-dlg-choice-grid{grid-template-columns:1fr}}@media(max-width:767px){.acct-settings-dialog{width:calc(100vw - 24px);height:min(660px,calc(100dvh - 48px))}.acct-dlg-header{padding:10px 40px 10px 12px}.acct-dlg{flex-direction:column}.acct-dlg-rail{flex:none;border-right:0;border-bottom:1px solid var(--hairline);padding:6px 10px}.acct-dlg-nav{flex-direction:row;gap:2px;overflow-y:hidden;overflow-x:auto}.acct-dlg-nav [data-slot=nav-item]{width:auto;min-width:76px;flex:none;height:28px;min-height:28px;padding:0 10px;font-size:12px}.acct-dlg-nav-label,.acct-dlg-rail-context{display:none}.acct-dlg-nav-divider{border-top:0;border-left:1px solid var(--hairline);margin:4px 6px}.acct-dlg-pane-head{padding-top:12px;padding-bottom:8px}.acct-dlg-footer{padding:9px 14px}.acct-settings-dialog [data-slot=input]{font-size:13px}}@media(max-width:480px){.acct-dlg-pane-head{flex-wrap:wrap;gap:6px}.acct-dlg-scope{margin-top:0}.acct-dlg-pane-head,.acct-dlg-scroll{padding-left:14px;padding-right:14px}.acct-dlg-danger,.acct-dlg-model-link{flex-wrap:wrap}.acct-dlg-save-state>.acct-dlg-icon{display:none}.acct-dlg-footer-actions button{min-width:0;padding-left:12px;padding-right:12px}}@media(max-height:620px)and (min-width:768px){.acct-settings-dialog{height:calc(100dvh - 48px)}.acct-dlg-header{padding-top:9px;padding-bottom:9px}.acct-dlg-pane-head{padding-top:11px;padding-bottom:8px}.acct-dlg-footer{padding-top:8px;padding-bottom:8px}.acct-dlg-rail-context{display:none}}.usage-window-cell{display:block;width:100%;min-width:0;container:account-quota / inline-size}.usage-window-quota{display:block;width:100%;max-width:320px;margin-inline:auto;text-align:left;font-variant-numeric:tabular-nums}.usage-window-top{display:flex;align-items:center;gap:6px;min-width:0;margin-bottom:7px}.usage-window-plan{max-width:55%;padding-inline:6px;font-size:10px;text-overflow:ellipsis}.usage-window-status{display:inline-flex;align-items:center;gap:4px;min-width:0;margin-left:auto;font-size:10px;white-space:nowrap}.usage-window-status>span:last-child{overflow:hidden;text-overflow:ellipsis}.usage-window-status.ok,.usage-window-item.ok .usage-window-value,.usage-window-reset-value.ok{color:var(--ok)}.usage-window-status.warn,.usage-window-item.warn .usage-window-value,.usage-window-reset-value.warn{color:var(--warn)}.usage-window-status.muted,.usage-window-item.muted .usage-window-value,.usage-window-reset-value.muted{color:var(--text-3)}.usage-window-grid{display:grid;grid-template-columns:repeat(var(--quota-columns),minmax(0,1fr));border:1px solid var(--hairline);border-radius:var(--r-sm);overflow:hidden}.usage-window-group{display:block;min-width:0;padding:7px 10px}.usage-window-group+.usage-window-group{border-left:1px solid var(--hairline)}.usage-window-group-name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:5px;color:var(--text-2);font-size:10.5px;font-weight:600}.usage-window-item{display:block;min-width:0}.usage-window-item+.usage-window-item{margin-top:7px}.usage-window-line{display:flex;justify-content:space-between;align-items:baseline;gap:5px;min-width:0;line-height:1.4}.usage-window-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-3);font-size:10px}.usage-window-value{flex:0 1 auto;min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;font-size:11.5px;font-weight:600;white-space:nowrap}.usage-window-item.muted .usage-window-value{font-weight:500}.usage-window-grid.ungrouped .usage-window-line{display:block}.usage-window-grid.ungrouped .usage-window-label{display:block;margin-bottom:3px}.usage-window-grid.ungrouped .usage-window-value{font-size:15px}.usage-window-grid.compact{display:block}.usage-window-grid.compact .usage-window-group+.usage-window-group{border-left:none;border-top:1px solid var(--hairline)}.usage-window-grid.compact .usage-window-item+.usage-window-item{margin-top:6px}.usage-window-grid.compact .usage-window-line{display:flex}.usage-window-grid.compact .usage-window-label{display:inline;margin-bottom:0}.usage-window-grid.compact .usage-window-value{font-size:11.5px}.usage-window-foot{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:2px 7px;margin-top:4px;color:var(--text-3);font-size:10px}.usage-window-updated{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.usage-window-detail{height:22px;margin-left:auto;padding:0 3px;font-size:10px;gap:3px}.usage-window-caret{transition:transform .15s ease}.usage-window-detail[aria-expanded=true]{color:var(--primary-fg)}.usage-window-detail[aria-expanded=true] .usage-window-caret{transform:rotate(180deg)}.usage-window-credit{display:block;margin-top:5px}.usage-window-credit .usage-toggle{width:100%;margin-inline:0}.usage-window-pop{width:300px;max-width:calc(100vw - 24px)}.usage-window-pop-body{overflow-y:auto;padding:10px 13px 12px}.usage-window-reset+.usage-window-reset{border-top:1px solid var(--hairline);margin-top:8px;padding-top:8px}.usage-window-reset-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;color:var(--text-2);font-size:11px}.usage-window-reset-head>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.usage-window-reset-value{flex:none;font-weight:600}.usage-window-reset time,.usage-window-reset-unknown{display:block;margin-top:2px;color:var(--text-3);font-size:10.5px}.usage-window-supplementary,.usage-window-explanation{border-top:1px solid var(--hairline);margin-top:10px;padding-top:9px}.usage-window-supplementary p{margin:3px 0;font-size:11px;color:var(--text-2);overflow-wrap:anywhere}.usage-window-warning{margin:8px 0 0;font-size:11px;color:var(--warn);overflow-wrap:anywhere}.usage-window-explanation{font-size:10.5px}@container account-quota (max-width: 259px){.usage-window-grid{grid-template-columns:1fr}.usage-window-group+.usage-window-group{border-left:none;border-top:1px solid var(--hairline)}.usage-window-grid.ungrouped .usage-window-line{display:flex}.usage-window-grid.ungrouped .usage-window-label{margin-bottom:0}.usage-window-grid.ungrouped .usage-window-value{font-size:11.5px}.usage-window-caption{display:none}}@container account-quota (max-width: 159px){.usage-window-plan{max-width:70%}.usage-window-status>span:last-child{display:none}.usage-window-foot,.usage-window-detail{font-size:9px}}.acct-add-dialog [data-slot=dialog-header],.acct-add-form-dialog [data-slot=dialog-header]{padding:12px 44px 12px 16px;gap:11px;border-color:var(--hairline)}.acct-add-dialog [data-slot=dialog-title],.acct-add-form-dialog [data-slot=dialog-title]{flex:none;font-size:14px;font-weight:600;letter-spacing:-.01em}.acct-add-head-mark{display:grid;place-items:center;width:26px;height:26px;flex:none;border-radius:var(--radius-sm);background:var(--surface-3);color:var(--text-2);font-size:11px;font-weight:600}.acct-add-head-mark img{width:18px;height:18px;object-fit:contain}.acct-add-dialog [data-slot=dialog-body]{flex:1;min-height:0;padding:0 22px 20px;gap:0;overflow-y:auto}.acct-add-form-dialog [data-slot=dialog-body]{padding:0 20px 18px;gap:0}.acct-add-form-dialog [data-slot=dialog-footer]{padding:11px 16px;background:var(--surface);border-color:var(--hairline)}.acct-add-form-dialog [data-slot=dialog-footer]:not(:has(.acct-add-foot-host>*)){display:none}.acct-add-foot-mount{display:flex;flex:1 1 auto;min-width:0}.acct-add-foot-host,.acct-add-foot-slot{display:flex;align-items:center;justify-content:space-between;gap:16px;flex:1 1 auto;min-width:0}.acct-add-foot-note{min-width:0;display:flex;flex-direction:column;gap:3px;font-size:11.5px;line-height:1.5;color:var(--text-3)}.acct-add-foot-note .detail,.acct-add-foot-note>span{font-size:11.5px;line-height:1.5;color:var(--text-3)}.acct-add-foot-note .err,.acct-add-foot-note .sms-hint.err{color:var(--danger)}.acct-add-foot-buttons{display:flex;align-items:center;gap:8px;flex:none}.acct-add-foot-buttons>button{min-height:29px}.acct-add-foot-inline{display:flex;align-items:center;justify-content:space-between;gap:16px}.acct-add-dialog .add-group,.acct-add-form-dialog .add-group{display:block;margin-top:15px}.acct-add-dialog .add-group:first-child,.acct-add-form-dialog .add-group:first-child{margin-top:8px}.add-group-label{display:flex;align-items:center;gap:8px;margin:0 4px 5px;font-size:11px;font-weight:500;color:var(--text-3)}.add-group-label .label-action{margin-left:auto;display:inline-flex;align-items:center;gap:6px}.add-group-box{border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--surface);overflow:hidden}.add-group-box>*{margin:0}.add-group-box>*+*{border-top:1px solid var(--hairline)}.add-group-box>*:where(:not([data-slot=segmented-control],[data-slot=select-trigger],[data-slot=input],[data-slot=textarea])){padding:10px 14px}.add-group-box>[data-slot=segmented-control],.add-group-box>[data-slot=select-trigger],.add-group-box>[data-slot=input],.add-group-box>[data-slot=textarea]{margin:10px 14px;max-width:calc(100% - 28px)}.add-group-box>p,.add-group-box>.detail{font-size:11.5px;line-height:1.55;color:var(--text-3)}.acct-add-form-dialog .add-group-box .field-row:has([data-slot=input],[data-slot=textarea],[data-slot=input-group]){display:block}.acct-add-form-dialog .add-group-box .field-row:has([data-slot=input],[data-slot=textarea],[data-slot=input-group])>label,.acct-add-form-dialog .add-group-box .field-row:has([data-slot=input],[data-slot=textarea],[data-slot=input-group])>[data-slot=field]>[data-slot=field-label]{display:block;width:auto;margin-bottom:6px;font-size:11.5px;font-weight:400;color:var(--text-2);white-space:normal;text-align:left}.acct-add-form-dialog .add-group-box .field-row>input,.acct-add-form-dialog .add-group-box .field-row>textarea,.acct-add-form-dialog .add-group-box .field-row>[data-slot=input],.acct-add-form-dialog .add-group-box .field-row>[data-slot=textarea],.acct-add-form-dialog .add-group-box .field-row>[data-slot=input-group]{width:100%}.acct-add-form-dialog .add-group-box .field-row+.field-row{margin-top:8px}.acct-add-form-dialog .add-group-box .field-row:has(>button){display:flex;flex-wrap:wrap;align-items:center;gap:8px}.acct-add-form-dialog .add-login-setting-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px 16px;min-width:0}.acct-add-form-dialog label.add-login-setting-row{flex-wrap:nowrap}.acct-add-form-dialog .add-login-setting-row>[data-slot=segmented-control]{flex:none}.acct-add-form-dialog [data-slot=input],.acct-add-form-dialog [data-slot=textarea],.acct-add-form-dialog [data-slot=input-group],.acct-add-form-dialog [data-slot=select-trigger]{font-size:12.5px}.acct-add-dialog .add-pick-row{display:flex;align-items:center;gap:12px}.acct-add-dialog .add-provider-search{width:240px;flex:none;margin-left:auto}.acct-add-dialog .add-group-box>.add-pick-row{padding:10px 14px}.acct-add-dialog .add-provider-band{grid-column:1 / -1;display:flex;align-items:center;gap:8px;margin-top:4px;padding:12px 6px 7px;border-top:0;border-bottom:1px solid var(--hairline);background:color-mix(in srgb,var(--surface) 96%,var(--surface-2));font-size:11px;color:var(--text-3)}.acct-add-dialog .add-provider-grid>.add-provider-band:first-child{margin-top:0;border-top:0;padding-top:10px}.acct-add-dialog .add-provider-grid>.add-provider-band:not(:first-child){margin-top:6px}.acct-add-dialog .add-provider-band-name{font-size:12px;font-weight:600;color:var(--text-2)}.acct-add-dialog .add-provider-band-stat{padding:1px 7px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--text-3);font-size:10px;line-height:1.6;font-variant-numeric:tabular-nums}.acct-add-dialog .add-provider-band-only{height:24px;padding:0 8px;border-radius:var(--r-pill);font-size:11px;color:var(--text-3)}.acct-add-dialog .add-provider-band-only:hover{background:var(--surface-2);color:var(--text)}.acct-add-dialog .add-provider-grid{height:580px;display:grid;grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:8px;align-content:start;padding:10px 12px;overflow-y:auto;scrollbar-gutter:stable}.acct-add-dialog .add-provider-grid:has(>.add-provider-band){padding-top:0}.acct-add-dialog .add-provider-card{display:flex;align-items:center;gap:10px;min-height:62px;height:auto;padding:9px 11px;border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--surface);text-align:left}.acct-add-dialog .add-provider-card:hover{border-color:var(--primary);background:var(--primary-soft)}.acct-add-dialog .add-provider-card:focus-visible{box-shadow:var(--ring)}.acct-add-dialog .add-provider-card.is-new,.acct-add-dialog .add-provider-card.is-new:hover{border-style:dashed;background:transparent}.acct-add-dialog .add-provider-logo{width:30px;height:30px;flex:none;border-radius:var(--radius-sm);background:var(--surface-3);font-size:12px}.acct-add-dialog .add-provider-card.is-new .add-provider-logo{background:transparent;border:1px dashed var(--control-border);color:var(--text-3)}.acct-add-dialog .add-provider-logo.has-icon img{width:22px;height:22px}.acct-add-dialog .add-provider-info{gap:2px}.acct-add-dialog .add-provider-name{font-size:12.5px;font-weight:500}.acct-add-dialog .add-provider-meta{font-size:11px;line-height:1.35;color:var(--text-3)}.acct-add-dialog .add-provider-go{font-size:15px;color:var(--text-3)}.acct-add-dialog .add-provider-card:hover .add-provider-go{color:var(--primary-fg)}.acct-add-dialog .add-provider-empty{grid-column:1 / -1;padding:18px 14px;font-size:12px;color:var(--text-3)}.acct-add-dialog [data-slot=segmented-control],.acct-add-form-dialog .acct-add-dialog [data-slot=segmented-item],.acct-add-form-dialog [data-slot=segmented-item]{font-size:12px}.acct-add-form-dialog .add-provider-block{display:block;gap:0}.acct-add-form-dialog [data-slot=dialog-section]{display:block;border:0;background:transparent;padding:0;gap:0}.acct-add-form-dialog [data-slot=dialog-section]>h3{display:none}.acct-add-form-dialog [data-slot=dialog-section]>.add-panel-head{display:block;margin:15px 4px 5px}.acct-add-form-dialog [data-slot=dialog-section]>.add-panel-head b,.acct-add-form-dialog [data-slot=dialog-section]>.add-panel-head h3{font-size:11px;font-weight:500;color:var(--text-3)}.acct-add-form-dialog [data-slot=dialog-section]>.add-panel-head>span{display:block;margin-top:2px;font-size:11.5px;line-height:1.5;color:var(--text-3)}.acct-add-form-dialog .add-form{display:block;border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--surface);overflow:hidden;gap:0}.acct-add-form-dialog .add-field{grid-template-columns:84px minmax(0,1fr);align-items:center;gap:5px 12px;padding:11px 14px}.acct-add-form-dialog .add-field+.add-field{border-top:1px solid var(--hairline)}.acct-add-form-dialog .add-field>label{font-size:11.5px;font-weight:400;color:var(--text-2)}.acct-add-form-dialog .add-field>.hint{font-size:11px;line-height:1.5;color:var(--text-3)}.acct-add-form-dialog .add-form+.add-form{margin-top:10px}.acct-add-form-dialog .add-group-box>.sms-form{padding:0}.acct-add-form-dialog .sms-form{display:block;padding:0}.acct-add-form-dialog .sms-field{grid-template-columns:84px minmax(0,1fr);gap:12px;padding:11px 14px}.acct-add-form-dialog .sms-field+.sms-field{border-top:1px solid var(--hairline)}.acct-add-form-dialog .sms-field>.lb{font-size:11.5px;color:var(--text-2)}.acct-add-form-dialog .sms-foot{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-left:84px;padding:11px 14px 11px 0;border-top:1px solid var(--hairline)}.acct-add-form-dialog .add-foot-hint{font-size:11.5px;color:var(--text-3)}.acct-add-form-dialog .add-foot-hint.err{color:var(--danger)}.acct-add-form-dialog .add-foot-actions{display:flex;align-items:center;gap:8px;flex:none}.acct-add-form-dialog .add-foot-actions>button{min-height:29px}.acct-add-form-dialog .compact-account-login{gap:10px}.acct-add-form-dialog .compact-login-methods [data-slot=segmented-item]{min-height:28px;border-radius:var(--radius-sm);font-size:12px}.acct-add-form-dialog .compact-login-description{margin-top:0}.acct-add-form-dialog .compact-login-description p{font-size:11.5px;line-height:1.6}.acct-add-form-dialog .compact-login-field{margin-top:0;gap:6px}.acct-add-form-dialog .compact-login-field [data-slot=label]{font-size:11.5px;font-weight:400}.acct-add-form-dialog .compact-login-field [data-slot=input-group],.acct-add-form-dialog .compact-login-field>[data-slot=input]{height:28px}.acct-add-form-dialog .compact-login-field [data-slot=input-group] [data-slot=input-group-control]{height:26px}.acct-add-form-dialog .compact-login-hint{font-size:11.5px;line-height:1.5}.acct-add-form-dialog .compact-login-guide{margin-top:0;border-radius:var(--radius-sm);font-size:11.5px;line-height:1.6}.acct-add-form-dialog .compact-login-proxy{margin-top:0;border-top:1px solid var(--hairline)}.acct-add-form-dialog .compact-login-proxy-trigger{height:30px;margin-top:0;font-size:11.5px}.acct-add-form-dialog .compact-login-actions{flex:none}.acct-add-form-dialog .compact-login-actions>button{min-height:29px}.acct-add-form-dialog .compact-login-security{font-size:10.5px}.acct-add-form-dialog .add-group-box>div.border-l-2{border-left:0;padding-left:0;gap:6px}.acct-add-form-dialog .add-group-box>div.border-l-2>span{font-size:11.5px;color:var(--text-2)}@media(max-width:900px){.acct-add-dialog [data-slot=dialog-body]{padding-left:16px;padding-right:16px}.acct-add-dialog .add-pick-row{flex-wrap:wrap}.acct-add-dialog .add-provider-search{width:100%;margin-left:0}.acct-add-dialog .add-provider-grid{height:418px}.acct-add-form-dialog .add-field,.acct-add-form-dialog .sms-field{grid-template-columns:76px minmax(0,1fr)}.acct-add-form-dialog .sms-foot{margin-left:76px}}@media(max-width:560px){.acct-add-form-dialog .add-field,.acct-add-form-dialog .sms-field{grid-template-columns:1fr;gap:6px}.acct-add-form-dialog .add-field>label{justify-content:flex-start}.acct-add-form-dialog .sms-foot{margin-left:0}.acct-add-foot-host{flex-wrap:wrap}}.page-auto-refresh{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px;min-width:0;font-size:12px}.page-auto-refresh-settings,.page-auto-refresh-label,.page-auto-refresh-interval{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}.page-auto-refresh-label{color:var(--ui-foreground);font-size:12px;font-weight:500}.page-auto-refresh-interval{margin-left:3px;color:var(--ui-muted-foreground);font-size:12px;font-weight:400}.page-auto-refresh-interval[data-disabled]{opacity:.55}.page-auto-refresh input.page-auto-refresh-input{width:58px;max-width:58px;min-width:0;height:30px;padding:0 5px;text-align:center;font-size:12px;font-variant-numeric:tabular-nums}.page-auto-refresh-button{flex:none}.page-auto-refresh-error{color:var(--ui-destructive);font-size:11px}.page-auto-refresh-settings[aria-busy=true]{cursor:progress}.page-auto-refresh[data-touch]{width:100%;gap:8px 12px}.page-auto-refresh[data-touch] input.page-auto-refresh-input{height:36px;font-size:16px}@media(max-width:767px){.page-auto-refresh input.page-auto-refresh-input{height:36px;font-size:16px}}.topbar:has(#page-refresh-actions:not(:empty)){height:auto;min-height:var(--topbar-h);flex-wrap:wrap;padding-top:8px;padding-bottom:8px}#page-refresh-actions{display:flex;align-items:center;justify-content:flex-end;margin-left:4px}#page-refresh-actions:empty{display:none}@media(max-width:1100px){.topbar:has(#page-refresh-actions:not(:empty)) #topbar-status{display:none}}@media(max-width:767px){.topbar:has(#page-refresh-actions:not(:empty)) .mobile-menu-btn{top:25px}#page-refresh-actions:not(:empty){flex:1 1 100%;margin-left:0;padding-bottom:2px}}.routing-config-shell.is-plain{background:var(--rail-bg);background-image:none;grid-template-columns:205px minmax(0,1fr) minmax(0,1fr)}.routing-hits{display:flex;flex-direction:column;gap:8px;min-width:0;min-height:0;overflow-y:auto}.routing-hits-head{display:flex;align-items:center;gap:8px;padding:0 4px}.routing-hits-head h3{margin:0;font-size:13px;font-weight:600}.routing-hits-head>span{color:var(--text-3);font-size:12px;font-variant-numeric:tabular-nums}.routing-hits-head>button{height:auto;margin-left:auto;padding:0;font-size:11.5px;font-weight:400}.routing-hits-list{display:flex;flex-direction:column;overflow:hidden;border-radius:var(--r-lg);background:var(--surface)}.routing-hits-row{display:flex;flex-direction:column;gap:4px;padding:11px 14px}.routing-hits-row+.routing-hits-row{border-top:1px solid var(--hairline)}.routing-hits-flow{display:flex;align-items:center;gap:6px;min-width:0;font-size:12.5px}.routing-hits-flow .ico{flex:none;color:var(--text-3)}.routing-hits-from,.routing-hits-to{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.routing-hits-from{color:var(--text-2)}.routing-hits-to{color:var(--primary-fg)}.routing-hits-meta{display:flex;align-items:center;gap:8px;color:var(--text-3);font-size:11.5px;font-variant-numeric:tabular-nums}.routing-hits-account{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.routing-hits-status{margin-left:auto;flex:none}.routing-hits-empty{margin:0;padding:22px 14px;color:var(--text-3);font-size:12px;text-align:center}@media(max-width:1280px){.routing-config-shell.is-plain{grid-template-columns:205px minmax(0,1fr)}.routing-hits{display:none}}.rp-panel{display:flex;flex-direction:column;gap:22px;min-width:0}.rp-head{display:flex;align-items:flex-start;gap:16px}.rp-head-text{flex:1;min-width:0}.rp-head h2{margin:0;font-size:17px;font-weight:600;letter-spacing:-.01em}.rp-lede{margin:4px 0 0;max-width:62ch;color:var(--text-3);font-size:12.5px;line-height:1.7}.rp-enable{display:flex;flex:none;align-items:center;gap:8px;padding-top:6px;color:var(--text-3);font-size:12px}.rp-section{display:flex;flex-direction:column;gap:8px;min-width:0}.rp-section-head{display:flex;align-items:center;gap:8px;padding:0 4px}.rp-section-head h3{margin:0;font-size:13px;font-weight:600}.rp-section-count{color:var(--text-3);font-size:12px;font-variant-numeric:tabular-nums}.rp-section-action{margin-left:auto}.rp-rows{display:flex;flex-direction:column;overflow:hidden;border-radius:var(--r-lg);background:var(--surface)}.rp-rows>*{border:0}.rp-rows>*+*{border-top:1px solid var(--hairline)}.rp-row{display:flex;align-items:center;gap:12px;width:100%;padding:12px 16px;border:0;background:transparent;color:var(--text);font:inherit;text-align:left;cursor:pointer;transition:background-color .15s ease-out}.rp-row:hover{background:var(--nav-hover)}.rp-row[data-off]{opacity:.55}.rp-row-main{display:flex;flex:1;flex-direction:column;gap:3px;min-width:0}.rp-row-title{font-size:13px;font-weight:500}.rp-row-detail{display:flex;align-items:center;flex-wrap:wrap;gap:6px;color:var(--text-3);font-size:12px}.rp-row-target{color:var(--primary-fg)}.rp-row-side{display:flex;flex:none;align-items:center;gap:8px;color:var(--text-3);font-size:11.5px}.rp-caret{display:flex;flex:none;color:var(--text-3)}.rp-empty{margin:0;padding:24px 16px;color:var(--text-3);font-size:12.5px;line-height:1.7;text-align:center}.rp-loading{display:flex;align-items:center;justify-content:center;gap:8px;min-height:140px;color:var(--text-3);font-size:12px}.rp-note{margin:0;color:var(--text-3);font-size:11.5px;line-height:1.6}.rp-foot{display:flex;align-items:center;gap:10px}.rp-foot-state{color:var(--text-3);font-size:11.5px}.rp-foot-actions{display:flex;align-items:center;gap:8px;margin-left:auto}.rp-field{display:flex;flex-direction:column;gap:8px;min-width:0}.rp-field>label{display:flex;align-items:center;gap:6px;color:var(--text-3);font-size:11.5px}.rp-switch-row{display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:var(--r-lg);background:var(--surface-inset)}.rp-switch-row>span{font-size:13px}.rp-switch-row>small{margin-left:auto;color:var(--text-3);font-size:12px}.maintenance-page{display:flex;min-height:0;flex:1;flex-direction:column;gap:12px;overflow-y:auto;padding:var(--pad);color:var(--text)}.maintenance-page>*{flex-shrink:0}.maintenance-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}.maintenance-heading h2{margin:0;font-size:20px;font-weight:600;letter-spacing:-.01em}.maintenance-heading p{margin:4px 0 0;color:var(--text-3);font-size:12px;line-height:1.6}.maintenance-heading-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.maintenance-summary{flex:none}.maintenance-summary-table{min-width:1060px}.maintenance-summary-table td{padding:10px 12px}.maintenance-summary-table td:first-child{padding-left:16px}.maintenance-summary-table tbody tr:last-child>td{border-bottom:0}.maintenance-summary-name{font-size:13px;font-weight:500;white-space:nowrap}.maintenance-summary-line{color:var(--text-3);font-size:11.5px;font-variant-numeric:tabular-nums;white-space:nowrap}.maintenance-summary-actions{white-space:nowrap;text-align:right}.maintenance-summary-actions>*+*{margin-left:6px}.maintenance-summary-block{display:flex;flex-direction:column;gap:8px;padding:14px 16px}.maintenance-summary-block-head{display:flex;align-items:center;gap:10px}.maintenance-summary-block-head .maintenance-summary-name{flex:1 1 auto;min-width:0}.maintenance-summary-block-actions{display:flex;justify-content:flex-end;gap:6px}.maintenance-divided{border-top:1px solid var(--hairline)}.maintenance-status{display:inline-flex;align-items:center;gap:6px;color:var(--text-2);font-size:12px;white-space:nowrap}.maintenance-counts{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px;color:var(--text-3);font-size:12px;white-space:nowrap}.maintenance-counts b{color:var(--text);font-weight:500;font-variant-numeric:tabular-nums}.maintenance-counts-bad b{color:var(--danger)}.maintenance-counts-sep{opacity:.4}.maintenance-sep{opacity:.45;padding:0 5px}.maintenance-cooldown{display:inline-block;margin-left:8px;color:var(--warn)}.maintenance-num{font-variant-numeric:tabular-nums}.maintenance-push{margin-left:auto}.maintenance-records{display:flex;flex:1;min-height:360px;flex-direction:column}.maintenance-toolbar{display:flex;flex:none;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 16px;border-bottom:1px solid var(--hairline)}.maintenance-toolbar-title{flex:none;font-size:13px;font-weight:500}.maintenance-toolbar-sub{flex:none;color:var(--text-3);font-size:11.5px}.maintenance-search{margin-left:auto;width:100%;max-width:240px}.maintenance-toolbar>[data-slot=segmented-control]{max-width:100%;overflow-x:auto}.maintenance-scroll{min-height:0;flex:1}.maintenance-history-table{min-width:900px}.maintenance-history-table th:first-child,.maintenance-history-table td:first-child{padding-left:16px}.maintenance-history-table th:last-child,.maintenance-history-table td:last-child{padding-right:16px}.maintenance-history-table th{font-size:11px;font-weight:400;letter-spacing:0}.maintenance-history-table tbody tr:last-child>td{border-bottom:0}.maintenance-retry-label{display:block;margin-top:2px;color:var(--text-3);font-size:11px}.maintenance-foot{display:flex;flex:none;flex-wrap:wrap;align-items:center;gap:10px;padding:9px 16px;border-top:1px solid var(--hairline);color:var(--text-3);font-size:11.5px}.maintenance-foot-spinner{color:var(--text-3)}.maintenance-detail-filters{display:flex;flex-wrap:wrap;align-items:center;gap:12px;overflow-x:auto}.maintenance-detail-scroll{min-height:0;flex:1}.maintenance-detail-table{min-width:760px}.maintenance-detail-table th{font-size:11px;font-weight:400;letter-spacing:0}.maintenance-detail-table tbody tr:last-child>td{border-bottom:0}.maintenance-detail-table .maintenance-reason{max-width:340px;min-width:160px;white-space:normal;overflow-wrap:anywhere;line-height:1.6}.maintenance-metadata{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-top:12px;border-top:1px solid var(--hairline);color:var(--text-3);font-size:12px}.maintenance-detail-footer{display:flex;align-items:center;gap:10px;flex-wrap:wrap;color:var(--text-3);font-size:11.5px}.maintenance-facts{display:grid;grid-template-columns:1fr 1fr;gap:14px 24px;margin:0}.maintenance-facts dt{color:var(--text-3);font-size:11.5px}.maintenance-facts dd{margin:2px 0 0;font-size:12.5px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.maintenance-setting-group{overflow:hidden;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-2)}.maintenance-setting{padding:14px 16px}.maintenance-setting-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:12px}.maintenance-setting h3{margin:0;font-size:13px;font-weight:500}.maintenance-setting-heading p{margin:2px 0 0;color:var(--text-3);font-size:11.5px;line-height:1.6}.maintenance-muted{margin:0;color:var(--text-3);font-size:11.5px;line-height:1.65}@media(max-width:700px){.maintenance-page{gap:10px;padding:0}.maintenance-heading h2{display:none}.maintenance-heading p{margin-top:0}.maintenance-heading-actions{width:100%;justify-content:flex-end}.maintenance-summary-block{padding:12px 14px}.maintenance-toolbar{padding:10px 12px;gap:8px}.maintenance-toolbar-sub{display:none}.maintenance-toolbar>[data-slot=segmented-control]{width:100%;justify-content:center}.maintenance-search{max-width:none}.maintenance-records{min-height:0}.maintenance-history-cards{display:flex;flex:1;min-height:0;flex-direction:column;overflow-y:auto}.maintenance-run-card{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:14px 16px;border-bottom:1px solid var(--hairline)}.maintenance-run-card-heading{display:flex;width:100%;align-items:center;justify-content:space-between;gap:10px;font-size:13px}.maintenance-run-card-heading strong{font-weight:500}.maintenance-run-card>.maintenance-muted{font-size:11.5px}.maintenance-foot{padding:9px 12px}.maintenance-facts{grid-template-columns:1fr}}@media(min-width:701px){.maintenance-history-cards{display:none}}@media(max-width:1099px){.maintenance-foot-note,.maintenance-toolbar-sub{display:none}} +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){:root,:host{--shimmer-angle:20deg}*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0;--scroll-fade-t:0px;--scroll-fade-b:0px;--scroll-fade-s:0px;--scroll-fade-e:0px;--scroll-fade-mask:initial;--shimmer-image:initial;--shimmer-text-fill:initial}}}@layer theme{:root,:host{--font-sans:var(--ui-font-sans);--font-mono:var(--ui-font-mono);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-wide:.025em;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--radius-xs:6px;--radius-sm:8px;--radius-md:10px;--radius-lg:14px;--radius-xl:18px;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--radius-pill:999px;--shadow-1:var(--ui-shadow-1);--shadow-2:var(--ui-shadow-2);--shadow-3:var(--ui-shadow-3)}}@layer base{*,:before,:after{box-sizing:border-box}button,input,select,textarea{font:inherit}button:not(:disabled),[role=button]:not(:disabled){cursor:pointer}button:disabled{cursor:not-allowed}[hidden]:not([hidden=until-found]){display:none!important}}@layer components{.tip-q{border:1px solid var(--ui-border-strong);width:16px;height:16px;color:var(--ui-muted-foreground);cursor:help;border-radius:999px;flex:none;place-items:center;font-size:10.5px;font-weight:700;line-height:1;display:inline-grid}.tip-q:hover,.tip-q:focus-visible,.tip-q.active{border-color:var(--ui-primary);background:var(--ui-primary-soft);color:var(--ui-primary-fg)}.tip-q:focus-visible{box-shadow:var(--ui-focus-ring);outline:none}[data-slot=button][data-on=true],[data-slot=button][aria-pressed=true],[data-slot=button][data-active=true]{border-color:var(--ui-primary-bd);background:var(--ui-primary-soft);color:var(--ui-primary-fg)}.col-grip{cursor:col-resize;z-index:3;width:9px;height:100%;position:absolute;top:0;right:-4px}.col-grip:after{content:"";background:var(--ui-border-strong);width:1px;height:20px;position:absolute;top:50%;left:4px;transform:translateY(-50%)}.col-grip.active:after{background:var(--ui-primary);width:2px;left:3.5px}.col-grip-end{right:0}body.col-resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}[data-selection-indicator]{pointer-events:none;opacity:0;transition:none;position:absolute;top:0;left:0}[data-selection-indicator][data-ready=true]{opacity:1}[data-selection-indicator][data-animate=true]{transition:transform .15s cubic-bezier(.2,.8,.2,1),width .15s cubic-bezier(.2,.8,.2,1),height .15s cubic-bezier(.2,.8,.2,1)}[data-slot=segmented-thumb]{border-radius:var(--radius-sm);background:var(--ui-card);box-shadow:var(--ui-shadow-1)}[data-slot=nav-list-indicator]{z-index:-1;border:1px solid var(--ui-selection-border,var(--ui-nav-selected-border));border-radius:var(--radius-md);background:var(--ui-selection-bg,var(--ui-nav-selected-bg));box-shadow:var(--ui-selection-shadow,none)}[data-slot=nav-item][data-sliding][data-active]{background:0 0;border-color:#0000}[data-slot=nav-item][data-sliding]{transition:color .15s ease-out}@media(prefers-reduced-motion:reduce){[data-selection-indicator][data-animate=true]{transition:none}}.field-grid{grid-template-columns:repeat(auto-fit,minmax(178px,1fr));gap:10px;display:grid}.field{border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-inset);min-width:0;padding:12px 13px}.field .label{color:var(--text-3);align-items:center;gap:6px;margin-bottom:4px;font-size:11.5px;display:flex}.field .value{word-break:break-all;font-size:13px;font-weight:600;line-height:1.5}.field .value.mono{font-family:var(--font-mono);font-size:12.5px;font-weight:500}.field .value .sub{color:var(--text-3);font-size:11.5px;font-weight:400}.field code{font-family:var(--font-mono);font-size:12.5px}.copy-btn{border-radius:var(--r-xs);width:21px;height:21px;box-shadow:none;color:var(--text-3);background:0 0;border:1px solid #0000;flex:none;justify-content:center;align-items:center;font-size:12px;display:inline-flex}.copy-btn:hover:not(:disabled){background:var(--surface-3);border-color:var(--border);color:var(--primary)}.copy-btn.done{color:var(--ok)}.detail{color:var(--text-2);font-size:12px;line-height:1.65}.hint{color:var(--text-2);font-size:11.5px;line-height:1.7}.hint code{border:1px solid var(--border);border-radius:var(--r-xs);background:var(--surface-3);padding:1px 5px}.hint strong,.detail strong{color:var(--text)}.empty{color:var(--text-3);text-align:center;padding:30px 16px;font-size:12.5px}.field-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.field-row>label,.field-row>[data-slot=field]>[data-slot=field-label]{color:var(--text-2);white-space:nowrap;font-size:12.5px}.check,.radio{color:var(--text-2);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:7px;font-size:12.5px;display:inline-flex}.check input,.radio input{accent-color:var(--primary);cursor:pointer;width:14px;height:14px;margin:0}.switch{color:var(--text-2);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:9px;font-size:12.5px;display:inline-flex}.toolbar{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:10px 12px;padding:12px 16px;display:flex}.toolbar .group{align-items:center;gap:6px;min-width:0;display:inline-flex}.toolbar .group>.label{color:var(--text-3);white-space:nowrap;font-size:11.5px}.toolbar .actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:7px;margin-left:auto;display:flex}.toolbar .divider{background:var(--border);flex:none;width:1px;height:18px}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-2);margin-bottom:14px;position:relative;overflow:clip}.panel-head{border-bottom:1px solid var(--hairline);flex-wrap:wrap;align-items:center;gap:9px;padding:12px 16px;display:flex}.panel-head h2{font-size:13.5px;font-weight:650}.panel-head .panel-sub{color:var(--text-3);font-size:11.5px}.panel-body{flex-direction:column;gap:12px;padding:14px 16px;display:flex}.panel-foot{border-top:1px solid var(--hairline);background:var(--surface-inset);color:var(--text-2);flex-wrap:wrap;align-items:center;gap:10px;padding:9px 16px;font-size:11.5px;line-height:1.6;display:flex}.shell{grid-template-columns:var(--sidebar-w) minmax(0,1fr);grid-template-rows:minmax(0,1fr);height:100vh;display:grid;overflow:hidden}body.has-titlebar .shell{height:calc(100vh - var(--titlebar-h))}.sidebar{z-index:5;background:var(--sidebar-bg);border-right:1px solid var(--sidebar-border);flex-direction:column;gap:12px;padding:14px 12px 10px;display:flex;position:relative}.brand{border-bottom:1px solid var(--sidebar-border);justify-content:center;align-items:center;gap:10px;padding:2px 4px 12px;display:flex}.brand-logo{flex:none;place-items:center;display:grid}.brand-logo svg{display:block}.brand-text{min-width:0}.brand h1{white-space:nowrap;font-size:18px;font-weight:650;line-height:1.35}.nav{flex-direction:column;flex:auto;gap:2px;min-height:0;padding-bottom:4px;display:flex;overflow-y:auto}.nav-group-label{color:var(--sidebar-muted);letter-spacing:.09em;text-transform:uppercase;padding:8px 8px 5px;font-size:10.5px;font-weight:600}.nav-group-label:first-child{padding-top:0}.nav-empty{border:1px dashed var(--sidebar-border);border-radius:var(--r-sm);color:var(--sidebar-muted);text-align:center;margin:4px 2px;padding:10px 9px;font-size:11px;line-height:1.7}.sidebar-foot{border-top:1px solid var(--sidebar-border);flex-direction:column;flex:none;gap:8px;padding-top:10px;display:flex}.sidebar-status{border:1px solid var(--sidebar-border);border-radius:var(--r-sm);background:var(--surface);color:var(--sidebar-fg);flex-direction:column;gap:5px;padding:7px 10px;font-size:11.5px;line-height:1.4;display:flex}.status-line{align-items:center;gap:7px;min-width:0;display:flex}.sidebar-status .txt{text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums;min-width:0;overflow:hidden}.status-actions{flex-wrap:wrap;gap:4px;margin-top:3px;display:flex}.status-actions button{white-space:nowrap;flex:auto;min-width:0}.main{flex-direction:column;min-width:0;display:flex;position:relative;overflow:hidden}.topbar{height:var(--topbar-h);padding:0 max(var(--pad),calc((100% - var(--content-max)) / 2));border-bottom:1px solid var(--hairline);background:0 0;flex:none;align-items:center;gap:10px;display:flex}.crumb{min-width:0;color:var(--text-3);align-items:center;gap:7px;font-size:12px;display:flex}.crumb .sep{opacity:.5}.crumb .cur{color:var(--text);font-size:13px;font-weight:650}.topbar-actions{align-items:center;gap:7px;display:flex}.content{min-height:0;padding:var(--pad) var(--pad) 0;flex-direction:column;flex:auto;display:flex;overflow:hidden}.content-inner{width:100%;max-width:var(--content-max);flex-direction:column;flex:1;min-height:0;margin:0 auto;display:flex}@media(min-width:768px)and (max-width:900px){.nav-item{justify-content:center;padding:9px 0}.nav-item [data-slot=nav-item-label],.nav-item .count{display:none}#theme-switch [data-slot=segmented-control]{flex-direction:column}}.nav-item .ico svg{display:block}.panel-fold:not([data-open])>.panel-head{border-bottom:0}.acct-filter-body>.group{flex-direction:column;gap:6px;display:flex}.acct-filter-body>.group>.label{color:var(--ui-muted-foreground);font-size:11.5px;font-weight:600}.acct-filter-body>.divider{display:none}.acct-filter-body>.group>:not(.label),.model-filter-body>*,.proxy-filter-body>*{width:100%;min-width:0;max-width:none}.proxy-filter-body>.ml-auto{text-align:left;margin-left:0}.acct-filter-body [data-slot=segmented-control],.model-filter-body [data-slot=segmented-control],.proxy-filter-body [data-slot=segmented-control]{width:100%}.acct-filter-body [data-slot=segmented-control]>[data-slot=segmented-item],.model-filter-body [data-slot=segmented-control]>[data-slot=segmented-item],.proxy-filter-body [data-slot=segmented-control]>[data-slot=segmented-item]{flex:1 1 0;justify-content:center;min-width:0}@media(max-width:767px){.acct-filter-open{flex:1 1 0;min-width:0}.sidebar{height:100%;position:relative;transform:none}.sidebar .nav-item .label,.sidebar .nav-group-label,.sidebar .brand-text,.sidebar .sidebar-status .txt{display:block}.sidebar .nav-item{justify-content:flex-start}.sidebar .sidebar-status{align-items:flex-start}.sidebar .status-line{justify-content:flex-start}.sidebar .status-actions{display:flex}}.badge.tag.running,.badge.tag.phase-connecting,.badge.tag.phase-streaming{border-color:var(--ui-success-bd);background:var(--ui-success-soft);color:var(--ui-success)}.badge.tag.phase-waiting{border-color:var(--ui-info-bd);background:var(--ui-info-soft);color:var(--ui-info)}.badge.tag.phase-retrying,.badge.tag.phase-queued{border-color:var(--ui-warning-bd);background:var(--ui-warning-soft);color:var(--ui-warning)}.badge.tag.sensitive{border-color:var(--ui-sensitive-bd);background:var(--ui-sensitive-soft);color:var(--ui-sensitive)}.ck-schedule-main{gap:14px;min-width:0;display:grid}.ck-schedule-heading{justify-content:space-between;align-items:center;gap:12px;min-width:0;display:flex}.ck-schedule-heading h2{font-size:16px;font-weight:650}.ck-schedule-heading p{color:var(--text-3);margin-top:4px;font-size:12px;line-height:1.6}.ck-schedule-master-content{align-items:center;gap:18px;display:flex}.ck-schedule-master-copy{flex:1;min-width:0}.ck-schedule-title{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.ck-schedule-title h2{font-size:13.5px;font-weight:600}.ck-schedule-master-copy p{color:var(--text-3);margin-top:5px;font-size:11.5px}.ck-schedule-next{border-left:1px solid var(--border);flex:none;gap:2px;padding-left:18px;display:grid}.ck-schedule-next span,.ck-schedule-next small{color:var(--text-3);font-size:11px}.ck-schedule-next strong{color:var(--primary-fg);font-family:var(--font-mono);font-size:15px;font-weight:600}.ck-schedule-paused{border-top:1px solid var(--hairline);background:var(--surface-2);color:var(--text-3);padding:9px 16px;font-size:11.5px}.ck-schedule-section-heading{justify-content:space-between;align-items:center;gap:12px;padding-top:2px;display:flex}.ck-schedule-section-heading h3{font-size:13px;font-weight:600}.ck-schedule-section-heading>span{color:var(--text-3);font-size:11px}.ck-schedule-plan-head{justify-content:space-between}.ck-schedule-plan-name{flex-wrap:wrap;flex:1;align-items:center;gap:7px;min-width:0;display:flex}.ck-schedule-plan-name h3{overflow-wrap:anywhere;font-size:14px;font-weight:600}.ck-schedule-plan-name p{color:var(--text-3);flex-basis:100%;font-size:11.5px;line-height:1.6}.ck-schedule-plan-actions{flex-wrap:wrap;flex:none;align-items:center;gap:5px;display:flex}.ck-schedule-plan-actions [data-slot=switch]{margin-right:9px}.ck-schedule-plan-content{gap:12px;display:grid}.ck-schedule-today{color:var(--text-3);flex-wrap:wrap;align-items:center;gap:10px;font-size:11.5px;display:flex}.ck-schedule-today strong{color:var(--text-2);font-weight:500}.ck-schedule-time-groups{grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));align-items:start;gap:10px;display:grid}.ck-schedule-group{border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-2);min-width:0;padding:12px}.ck-schedule-group-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.ck-schedule-group-head strong{font-size:17px;font-weight:600;line-height:1.3}.ck-schedule-group-meta{color:var(--text-3);flex-wrap:wrap;align-items:center;gap:8px;margin-top:6px;font-size:11px;display:flex}.ck-schedule-group-logos{flex-wrap:wrap;align-items:center;gap:5px;min-height:30px;margin:11px 0;display:flex}.ck-schedule-group-logos>span{color:var(--text-3);font-size:11px}.ck-schedule-group-foot{border-top:1px solid var(--border);color:var(--text-3);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-top:10px;padding-top:7px;font-size:11px;display:flex}.ck-schedule-group-details{padding-top:5px}.ck-schedule-group-detail{border-bottom:1px solid var(--hairline);color:var(--text-2);justify-content:space-between;align-items:flex-start;gap:10px;padding:6px 0;font-size:11.5px;display:flex}.ck-schedule-group-detail:last-child{border-bottom:0}.ck-schedule-group-detail>span{overflow-wrap:anywhere}.ck-schedule-group-detail>small{color:var(--text-3);text-align:right;flex:none;font-size:10.5px}.ck-schedule-detail-progress{margin-top:2px;display:block}.ck-schedule-plan-note{color:var(--text-3);justify-content:space-between;align-items:center;gap:10px;font-size:11px;display:flex}.ck-schedule-plan-footer{background:var(--surface-2)}.ck-schedule-plan-footer [data-slot=button]{margin-left:auto}.ck-schedule-rules h3{font-size:12.5px;font-weight:600}.ck-schedule-rules [data-slot=card-content]{color:var(--text-3);gap:5px;font-size:11.5px;line-height:1.7;display:grid}.ck-schedule-rules [data-slot=button]{justify-self:start}.ck-schedule-extras{gap:12px;display:grid}.ck-schedule-extras .ck-region-row{margin-top:0}.ck-schedule-empty{justify-items:start;gap:12px;padding:26px 16px;display:grid}.ck-schedule-hint{color:var(--text-3);font-size:11.5px;line-height:1.7}.ck-schedule-error{color:var(--danger);font-size:11.5px;line-height:1.6}.ck-schedule-editor-dialog{width:min(1000px,100vw - 48px)}.ck-schedule-editor-body{grid-template-columns:minmax(0,1fr) 270px;gap:0;padding:0;display:grid}.ck-schedule-editor-fields{min-width:0;padding:0 20px 18px}.ck-schedule-form-section{border-bottom:1px solid var(--hairline);padding:18px 0}.ck-schedule-form-section h3,.ck-schedule-preview h3{font-size:12.5px;font-weight:600}.ck-schedule-basic-fields{grid-template-columns:minmax(0,1fr) 128px 128px;gap:12px;margin:13px 0 7px;display:grid}.ck-schedule-field{color:var(--text-2);align-items:stretch;gap:6px;font-size:12px;font-weight:400;display:grid}.ck-schedule-field small{color:var(--text-3);margin-left:4px;font-size:10.5px;font-weight:400}.ck-schedule-form-title{justify-content:space-between;align-items:center;gap:10px;display:flex}.ck-schedule-form-title>span{color:var(--text-3);font-size:11px}.ck-schedule-picker-tools{align-items:center;gap:7px;margin:13px 0 10px;display:flex}.ck-schedule-picker-tools>input{flex:1}.ck-schedule-picker{gap:6px;max-height:350px;padding:1px 4px 1px 1px;display:grid;overflow:auto}.ck-schedule-picker-row{border:1px solid var(--border);border-radius:var(--r-xs);align-items:center;gap:12px;min-width:0;padding:7px 9px;display:flex}.ck-schedule-picker-row.selected{border-color:var(--primary-bd);background:var(--primary-soft)}.ck-schedule-picker-label{cursor:pointer;flex:1;align-items:center;gap:9px;min-width:0;font-weight:400;display:flex}.ck-schedule-picker-name{overflow-wrap:anywhere;min-width:0;font-size:12px}.ck-schedule-picker-name small{color:var(--text-3);font-size:10px;display:block}.ck-schedule-picker-time{flex-direction:column;flex:none;align-items:center;gap:3px;display:flex}.ck-schedule-picker-time input{width:108px}.ck-schedule-picker-time>span,.ck-schedule-picker-time>small{color:var(--text-3);font-size:10px}.ck-schedule-picker-time [data-slot=button]{height:18px;font-size:10px}.ck-schedule-editor-note{border:1px solid var(--border);border-radius:var(--r-xs);background:var(--surface-2);color:var(--text-3);padding:10px 12px;font-size:11px;line-height:1.7}.ck-schedule-editor-fields>.ck-schedule-editor-note{margin-top:14px}.ck-schedule-preview{border-left:1px solid var(--border);background:var(--surface-2);min-width:0;padding:18px 16px}.ck-schedule-preview>p{color:var(--text-3);margin-top:5px;font-size:11px;line-height:1.7}.ck-schedule-preview-groups{gap:13px;margin:20px 0;display:grid}.ck-schedule-preview-group{border-left:2px solid var(--primary-bd);flex-wrap:wrap;align-items:center;gap:7px;padding-left:11px;display:flex}.ck-schedule-preview-group>strong{font-size:17px;font-weight:600}.ck-schedule-preview-group>div{color:var(--text-3);overflow-wrap:anywhere;flex-basis:100%;font-size:11px;line-height:1.75}.ck-schedule-preview .ck-schedule-preview-note{border-top:1px solid var(--border);margin-top:16px;padding-top:12px}.ck-schedule-footer-note{color:var(--text-3);margin-right:auto;font-size:11px}.ck-makeup-rule{color:var(--text-2);flex-wrap:wrap;align-items:center;gap:14px;font-size:11.5px;display:flex}.ck-makeup-group-providers{color:var(--text-3);overflow-wrap:anywhere;margin-top:10px;font-size:11.5px;line-height:1.75}.ck-activity-retry-notice{color:var(--text-3);flex-wrap:wrap;align-items:center;gap:10px;font-size:11.5px;display:flex}.ck-activity-retry-notice [data-slot=button]{margin-left:auto}.ck-makeup-editor-dialog{width:min(700px,100vw - 48px)}.ck-makeup-setting{justify-content:space-between;align-items:center;gap:14px;display:flex}.ck-makeup-setting h3{font-size:12.5px;font-weight:600}.ck-makeup-setting p{color:var(--text-3);margin-top:4px;font-size:11.5px;line-height:1.7}.ck-makeup-editor-fields{grid-template-columns:1fr 1fr;gap:16px;display:grid}.ck-makeup-preview-table{table-layout:fixed;font-size:11.5px}.ck-makeup-preview-table th:first-child{width:58%}.ck-makeup-preview-table td{overflow-wrap:anywhere;vertical-align:top}@media(max-width:1000px){.ck-schedule-editor-body{grid-template-columns:minmax(0,1fr) 235px}.ck-schedule-next{padding-left:12px}.ck-schedule-master-content{gap:12px}}@media(max-width:767px){.ck-schedule-heading{flex-wrap:wrap;align-items:flex-start}.ck-schedule-master-content{flex-wrap:wrap}.ck-schedule-master-copy{flex-basis:calc(100% - 52px)}.ck-schedule-master-content>[data-slot=switch]{order:2}.ck-schedule-next{border-left:0;border-top:1px solid var(--border);flex-wrap:wrap;flex-basis:100%;order:3;align-items:center;gap:5px 9px;padding:10px 0 0;display:flex}.ck-schedule-next small{flex-basis:100%}.ck-schedule-plan-actions{flex-basis:100%;justify-content:flex-end}.ck-schedule-plan-actions [data-slot=switch]{margin-right:auto}.ck-schedule-plan-note{flex-wrap:wrap;align-items:flex-start}.ck-schedule-editor-dialog,.ck-makeup-editor-dialog{width:calc(100vw - 24px)}.ck-schedule-editor-body{grid-template-columns:minmax(0,1fr)}.ck-schedule-preview{border-left:0;border-top:1px solid var(--border)}.ck-schedule-basic-fields{grid-template-columns:minmax(0,1fr);gap:12px}.ck-schedule-picker-label [data-slot=avatar]{display:none}.ck-schedule-picker-time input{width:112px}.ck-schedule-footer-note{display:none}.ck-makeup-preview-table th:first-child{width:48%}}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.\!fixed{position:fixed!important}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{inset-inline:0}.top-0{top:0}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.top-4{top:calc(var(--spacing) * 4)}.right-0{right:0}.right-1{right:var(--spacing)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-5{right:calc(var(--spacing) * 5)}.bottom-0{bottom:0}.bottom-5{bottom:calc(var(--spacing) * 5)}.bottom-\[calc\(78px\+env\(safe-area-inset-bottom\,0px\)\)\]{bottom:calc(78px + env(safe-area-inset-bottom,0px))}.left-0{left:0}.left-1\/2{left:50%}.isolate{isolation:isolate}.z-10{z-index:10}.z-30{z-index:30}.z-35{z-index:35}.z-40{z-index:40}.z-\[1\]{z-index:1}.z-\[2\]{z-index:2}.z-\[35\]{z-index:35}.z-\[38\]{z-index:38}.z-\[90\]{z-index:90}.z-\[100\]{z-index:100}.z-\[2147482900\]{z-index:2147482900}.order-first{order:-9999}.order-last{order:9999}.col-start-1{grid-column-start:1}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.m-0{margin:0}.m-auto{margin:auto}.mx-3{margin-inline:calc(var(--spacing) * 3)}.mx-3\.5{margin-inline:calc(var(--spacing) * 3.5)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-auto{margin-inline:auto}.my-1{margin-block:var(--spacing)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-3\.5{margin-top:calc(var(--spacing) * 3.5)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-\[22px\]{margin-top:22px}.mt-auto{margin-top:auto}.mt-px{margin-top:1px}.mr-1{margin-right:var(--spacing)}.mr-auto{margin-right:auto}.mb-1{margin-bottom:var(--spacing)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\.5{margin-bottom:calc(var(--spacing) * 2.5)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-\[5px\]{margin-bottom:5px}.mb-\[18px\]{margin-bottom:18px}.mb-\[26px\]{margin-bottom:26px}.ml-1{margin-left:var(--spacing)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-2\.5{margin-left:calc(var(--spacing) * 2.5)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-\[50px\]{margin-left:50px}.ml-auto{margin-left:auto}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-\[5px\]{width:5px;height:5px}.size-\[7px\]{width:7px;height:7px}.size-\[10px\]{width:10px;height:10px}.size-\[15px\]{width:15px;height:15px}.size-\[17px\]{width:17px;height:17px}.size-\[21px\]{width:21px;height:21px}.size-\[22px\]{width:22px;height:22px}.size-\[26px\]{width:26px;height:26px}.size-full{width:100%;height:100%}.h-1{height:var(--spacing)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-\[3px\]{height:3px}.h-\[14px\]{height:14px}.h-\[21px\]{height:21px}.h-\[22px\]{height:22px}.h-\[26px\]{height:26px}.h-\[30px\]{height:30px}.h-\[34px\]{height:34px}.h-\[46px\]{height:46px}.h-\[min\(720px\,calc\(100vh-48px\)\)\]{height:min(720px,100vh - 48px)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-24{max-height:calc(var(--spacing) * 24)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-\[32vh\]{max-height:32vh}.max-h-\[36vh\]{max-height:36vh}.max-h-\[40vh\]{max-height:40vh}.max-h-\[46vh\]{max-height:46vh}.max-h-\[84px\]{max-height:84px}.max-h-\[85svh\]{max-height:85svh}.max-h-\[168px\]{max-height:168px}.max-h-\[210px\]{max-height:210px}.max-h-\[220px\]{max-height:220px}.max-h-\[280px\]{max-height:280px}.max-h-\[320px\]{max-height:320px}.max-h-\[420px\]{max-height:420px}.max-h-\[440px\]{max-height:440px}.max-h-\[640px\]{max-height:640px}.max-h-\[calc\(100vh-48px\)\]{max-height:calc(100vh - 48px)}.max-h-\[min\(48vh\,460px\)\]{max-height:min(48vh,460px)}.max-h-\[min\(70vh\,560px\)\]{max-height:min(70vh,560px)}.max-h-\[min\(260px\,var\(--available-height\)\)\]{max-height:min(260px,var(--available-height))}.max-h-\[min\(300px\,var\(--available-height\)\)\]{max-height:min(300px,var(--available-height))}.min-h-0{min-height:0}.min-h-5{min-height:calc(var(--spacing) * 5)}.min-h-7{min-height:calc(var(--spacing) * 7)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-10{min-height:calc(var(--spacing) * 10)}.min-h-26{min-height:calc(var(--spacing) * 26)}.min-h-80{min-height:calc(var(--spacing) * 80)}.min-h-\[18px\]{min-height:18px}.min-h-\[19px\]{min-height:19px}.min-h-\[21px\]{min-height:21px}.min-h-\[26px\]{min-height:26px}.min-h-\[30px\]{min-height:30px}.min-h-\[64px\]{min-height:64px}.min-h-\[200px\]{min-height:200px}.min-h-\[300px\]{min-height:300px}.min-h-\[320px\]{min-height:320px}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-9\.5{width:calc(var(--spacing) * 9.5)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-20{width:calc(var(--spacing) * 20)}.w-56{width:calc(var(--spacing) * 56)}.w-\[6\%\]{width:6%}.w-\[8\%\]{width:8%}.w-\[9\%\]{width:9%}.w-\[13\%\]{width:13%}.w-\[15\%\]{width:15%}.w-\[16\%\]{width:16%}.w-\[18\%\]{width:18%}.w-\[20\%\]{width:20%}.w-\[21\%\]{width:21%}.w-\[26px\]{width:26px}.w-\[30px\]{width:30px}.w-\[52px\]{width:52px}.w-\[74\%\]{width:74%}.w-\[76px\]{width:76px}.w-\[78px\]{width:78px}.w-\[84px\]{width:84px}.w-\[86px\]{width:86px}.w-\[92px\]{width:92px}.w-\[96px\]{width:96px}.w-\[108px\]{width:108px}.w-\[110px\]{width:110px}.w-\[120px\]{width:120px}.w-\[128px\]{width:128px}.w-\[132px\]{width:132px}.w-\[140px\]{width:140px}.w-\[160px\]{width:160px}.w-\[172px\]{width:172px}.w-\[180px\]{width:180px}.w-\[190px\]{width:190px}.w-\[196px\]{width:196px}.w-\[200px\]{width:200px}.w-\[220px\]{width:220px}.w-\[228px\]{width:228px}.w-\[240px\]{width:240px}.w-\[260px\]{width:260px}.w-\[276px\]{width:276px}.w-\[288px\]{width:288px}.w-\[320px\]{width:320px}.w-\[336px\]{width:336px}.w-\[clamp\(150px\,22vw\,240px\)\]{width:clamp(150px,22vw,240px)}.w-\[max\(var\(--anchor-width\)\,220px\)\]{width:max(var(--anchor-width),220px)}.w-\[min\(240px\,100\%\)\]{width:min(240px,100%)}.w-\[min\(260px\,100\%\)\]{width:min(260px,100%)}.w-\[min\(280px\,86vw\)\]{width:min(280px,86vw)}.w-\[min\(320px\,100\%\)\]{width:min(320px,100%)}.w-\[min\(340px\,86vw\)\]{width:min(340px,86vw)}.w-\[min\(380px\,calc\(100vw-40px\)\)\]{width:min(380px,100vw - 40px)}.w-\[min\(400px\,100\%\)\]{width:min(400px,100%)}.w-\[min\(408px\,94vw\)\]{width:min(408px,94vw)}.w-\[min\(440px\,calc\(100vw-48px\)\)\]{width:min(440px,100vw - 48px)}.w-\[min\(460px\,calc\(100vw-48px\)\)\]{width:min(460px,100vw - 48px)}.w-\[min\(480px\,94vw\)\]{width:min(480px,94vw)}.w-\[min\(480px\,calc\(100vw-24px\)\)\]{width:min(480px,100vw - 24px)}.w-\[min\(480px\,calc\(100vw-48px\)\)\]{width:min(480px,100vw - 48px)}.w-\[min\(520px\,calc\(100vw-16px\)\)\]{width:min(520px,100vw - 16px)}.w-\[min\(520px\,calc\(100vw-24px\)\)\]{width:min(520px,100vw - 24px)}.w-\[min\(520px\,calc\(100vw-48px\)\)\]{width:min(520px,100vw - 48px)}.w-\[min\(540px\,calc\(100vw-48px\)\)\]{width:min(540px,100vw - 48px)}.w-\[min\(560px\,calc\(100vw-24px\)\)\]{width:min(560px,100vw - 24px)}.w-\[min\(560px\,calc\(100vw-32px\)\)\]{width:min(560px,100vw - 32px)}.w-\[min\(560px\,calc\(100vw-48px\)\)\]{width:min(560px,100vw - 48px)}.w-\[min\(600px\,calc\(100vw-32px\)\)\]{width:min(600px,100vw - 32px)}.w-\[min\(600px\,calc\(100vw-40px\)\)\]{width:min(600px,100vw - 40px)}.w-\[min\(607px\,calc\(100vw-48px\)\)\]{width:min(607px,100vw - 48px)}.w-\[min\(620px\,calc\(100vw-40px\)\)\]{width:min(620px,100vw - 40px)}.w-\[min\(620px\,calc\(100vw-48px\)\)\]{width:min(620px,100vw - 48px)}.w-\[min\(640px\,calc\(100vw-24px\)\)\]{width:min(640px,100vw - 24px)}.w-\[min\(640px\,calc\(100vw-48px\)\)\]{width:min(640px,100vw - 48px)}.w-\[min\(680px\,calc\(100vw-40px\)\)\]{width:min(680px,100vw - 40px)}.w-\[min\(680px\,calc\(100vw-48px\)\)\]{width:min(680px,100vw - 48px)}.w-\[min\(700px\,calc\(100vw-48px\)\)\]{width:min(700px,100vw - 48px)}.w-\[min\(760px\,calc\(100vw-48px\)\)\]{width:min(760px,100vw - 48px)}.w-\[min\(800px\,calc\(100vw-48px\)\)\]{width:min(800px,100vw - 48px)}.w-\[min\(820px\,calc\(100vw-48px\)\)\]{width:min(820px,100vw - 48px)}.w-\[min\(860px\,calc\(100vw-48px\)\)\]{width:min(860px,100vw - 48px)}.w-\[min\(880px\,calc\(100vw-48px\)\)\]{width:min(880px,100vw - 48px)}.w-\[min\(900px\,calc\(100vw-48px\)\)\]{width:min(900px,100vw - 48px)}.w-\[min\(920px\,calc\(100vw-48px\)\)\]{width:min(920px,100vw - 48px)}.w-\[min\(1000px\,calc\(100vw-32px\)\)\]{width:min(1000px,100vw - 32px)}.w-\[min\(1000px\,calc\(100vw-48px\)\)\]{width:min(1000px,100vw - 48px)}.w-\[min\(1012px\,calc\(100vw-48px\)\)\]{width:min(1012px,100vw - 48px)}.w-\[min\(1100px\,calc\(100vw-48px\)\)\]{width:min(1100px,100vw - 48px)}.w-\[min\(1120px\,calc\(100vw-48px\)\)\]{width:min(1120px,100vw - 48px)}.w-\[min\(var\(--anchor-width\)\,var\(--available-width\)\)\]{width:min(var(--anchor-width),var(--available-width))}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.max-w-2xl{max-width:var(--container-2xl)}.max-w-36{max-width:calc(var(--spacing) * 36)}.max-w-44{max-width:calc(var(--spacing) * 44)}.max-w-\[52em\]{max-width:52em}.max-w-\[62ch\]{max-width:62ch}.max-w-\[64ch\]{max-width:64ch}.max-w-\[72ch\]{max-width:72ch}.max-w-\[78ch\]{max-width:78ch}.max-w-\[84vw\]{max-width:84vw}.max-w-\[92px\]{max-width:92px}.max-w-\[110px\]{max-width:110px}.max-w-\[130px\]{max-width:130px}.max-w-\[132px\]{max-width:132px}.max-w-\[160px\]{max-width:160px}.max-w-\[180px\]{max-width:180px}.max-w-\[200px\]{max-width:200px}.max-w-\[220px\]{max-width:220px}.max-w-\[240px\]{max-width:240px}.max-w-\[260px\]{max-width:260px}.max-w-\[300px\]{max-width:300px}.max-w-\[320px\]{max-width:320px}.max-w-\[340px\]{max-width:340px}.max-w-\[380px\]{max-width:380px}.max-w-\[420px\]{max-width:420px}.max-w-\[500px\]{max-width:500px}.max-w-\[540px\]{max-width:540px}.max-w-\[560px\]{max-width:560px}.max-w-\[620px\]{max-width:620px}.max-w-\[720px\]{max-width:720px}.max-w-\[760px\]{max-width:760px}.max-w-\[900px\]{max-width:900px}.max-w-\[1180px\]{max-width:1180px}.max-w-\[min\(320px\,calc\(100vw-16px\)\)\]{max-width:min(320px,100vw - 16px)}.max-w-\[min\(900px\,calc\(100vw-16px\)\)\]{max-width:min(900px,100vw - 16px)}.max-w-\[var\(--available-width\)\]{max-width:var(--available-width)}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-none{max-width:none}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:0}.min-w-4{min-width:calc(var(--spacing) * 4)}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-24{min-width:calc(var(--spacing) * 24)}.min-w-36{min-width:calc(var(--spacing) * 36)}.min-w-40{min-width:calc(var(--spacing) * 40)}.min-w-\[110px\]{min-width:110px}.min-w-\[120px\]{min-width:120px}.min-w-\[124px\]{min-width:124px}.min-w-\[132px\]{min-width:132px}.min-w-\[140px\]{min-width:140px}.min-w-\[145px\]{min-width:145px}.min-w-\[150px\]{min-width:150px}.min-w-\[170px\]{min-width:170px}.min-w-\[180px\]{min-width:180px}.min-w-\[190px\]{min-width:190px}.min-w-\[220px\]{min-width:220px}.min-w-\[230px\]{min-width:230px}.min-w-\[250px\]{min-width:250px}.min-w-\[560px\]{min-width:560px}.min-w-\[820px\]{min-width:820px}.min-w-\[860px\]{min-width:860px}.min-w-\[min\(var\(--anchor-width\)\,var\(--available-width\)\)\]{min-width:min(var(--anchor-width),var(--available-width))}.flex-1{flex:1}.flex-\[1_1_200px\]{flex:200px}.flex-auto{flex:auto}.flex-none{flex:none}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.basis-40{flex-basis:calc(var(--spacing) * 40)}.basis-52{flex-basis:calc(var(--spacing) * 52)}.basis-full{flex-basis:100%}.table-fixed{table-layout:fixed}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0\.5{--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-1px\]{--tw-translate-y:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-grab{cursor:grab}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.\[scrollbar-gutter\:stable\]{scrollbar-gutter:stable}.list-none{list-style-type:none}.\[grid-template-columns\:repeat\(auto-fit\,minmax\(min\(430px\,100\%\)\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(min(430px,100%),1fr))}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[1fr_24px_1fr\]{grid-template-columns:1fr 24px 1fr}.grid-cols-\[14px_minmax\(0\,1fr\)\]{grid-template-columns:14px minmax(0,1fr)}.grid-cols-\[16px_15px_minmax\(0\,1fr\)\]{grid-template-columns:16px 15px minmax(0,1fr)}.grid-cols-\[16px_15px_minmax\(0\,1fr\)_132px_16px\]{grid-template-columns:16px 15px minmax(0,1fr) 132px 16px}.grid-cols-\[18px_17px_minmax\(0\,1fr\)_auto\]{grid-template-columns:18px 17px minmax(0,1fr) auto}.grid-cols-\[18px_minmax\(78px\,1fr\)_44px_minmax\(106px\,auto\)\]{grid-template-columns:18px minmax(78px,1fr) 44px minmax(106px,auto)}.grid-cols-\[120px_minmax\(0\,1fr\)\]{grid-template-columns:120px minmax(0,1fr)}.grid-cols-\[auto_minmax\(0\,1fr\)\]{grid-template-columns:auto minmax(0,1fr)}.grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto}.grid-cols-\[repeat\(auto-fit\,minmax\(min\(178px\,100\%\)\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(min(178px,100%),1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.place-items-center{place-items:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0{gap:0}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-3\.5{gap:calc(var(--spacing) * 3.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-\[5px\]{gap:5px}.gap-\[6px\]{gap:6px}.gap-\[7px\]{gap:7px}.gap-\[18px\]{gap:18px}.gap-px{gap:1px}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-1\.5{column-gap:calc(var(--spacing) * 1.5)}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-2\.5{column-gap:calc(var(--spacing) * 2.5)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-x-7{column-gap:calc(var(--spacing) * 7)}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-1{row-gap:var(--spacing)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-3{row-gap:calc(var(--spacing) * 3)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--ui-border)}:where(.divide-hairline>:not(:last-child)){border-color:var(--ui-hairline)}.self-center{align-self:center}.self-start{align-self:flex-start}.justify-self-center{justify-self:center}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:.25rem}.rounded-\[1px\]{border-radius:1px}.rounded-\[3px\]{border-radius:3px}.rounded-\[7px\]{border-radius:7px}.rounded-\[10px\]{border-radius:10px}.rounded-\[inherit\]{border-radius:inherit}.rounded-\[var\(--r-xs\)\]{border-radius:var(--r-xs)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:14px}.rounded-md{border-radius:10px}.rounded-none{border-radius:0}.rounded-pill{border-radius:999px}.rounded-sm{border-radius:8px}.rounded-xs{border-radius:6px}.rounded-t-xl{border-top-left-radius:18px;border-top-right-radius:18px}.rounded-l-xl{border-top-left-radius:18px;border-bottom-left-radius:18px}.rounded-r-xl{border-top-right-radius:18px;border-bottom-right-radius:18px}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-black\/10{border-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.border-black\/10{border-color:color-mix(in oklab,var(--color-black) 10%,transparent)}}.border-border{border-color:var(--ui-border)}.border-border-strong{border-color:var(--ui-border-strong)}.border-cn-bd{border-color:var(--ui-cn-bd)}.border-control-border{border-color:var(--ui-control-border)}.border-destructive{border-color:var(--ui-destructive)}.border-destructive-bd{border-color:var(--ui-destructive-bd)}.border-hairline{border-color:var(--ui-hairline)}.border-info-bd{border-color:var(--ui-info-bd)}.border-intl-bd{border-color:var(--ui-intl-bd)}.border-primary{border-color:var(--ui-primary)}.border-primary-bd{border-color:var(--ui-primary-bd)}.border-sensitive-bd{border-color:var(--ui-sensitive-bd)}.border-sidebar-border{border-color:var(--ui-sidebar-border)}.border-success-bd{border-color:var(--ui-success-bd)}.border-transparent{border-color:#0000}.border-warning-bd{border-color:var(--ui-warning-bd)}.bg-\[\#808080\]{background-color:gray}.bg-\[var\(--ui-table-head-bg\)\]{background-color:var(--ui-table-head-bg)}.bg-background{background-color:var(--ui-background)}.bg-border{background-color:var(--ui-border)}.bg-border-strong{background-color:var(--ui-border-strong)}.bg-cn-soft{background-color:var(--ui-cn-soft)}.bg-control{background-color:var(--ui-control-bg)}.bg-current{background-color:currentColor}.bg-destructive{background-color:var(--ui-destructive)}.bg-destructive-soft{background-color:var(--ui-destructive-soft)}.bg-hairline{background-color:var(--ui-hairline)}.bg-info-soft{background-color:var(--ui-info-soft)}.bg-intl-soft{background-color:var(--ui-intl-soft)}.bg-mask{background-color:var(--ui-mask)}.bg-muted-foreground{background-color:var(--ui-muted-foreground)}.bg-primary{background-color:var(--ui-primary)}.bg-primary-foreground{background-color:var(--ui-primary-foreground)}.bg-primary-on{background-color:var(--ui-primary-on)}.bg-primary-soft{background-color:var(--ui-primary-soft)}.bg-rail-bg{background-color:var(--ui-rail-bg)}.bg-raised{background-color:var(--ui-raised)}.bg-secondary{background-color:var(--ui-secondary)}.bg-sensitive-soft{background-color:var(--ui-sensitive-soft)}.bg-sidebar{background-color:var(--ui-sidebar)}.bg-skeleton-base{background-color:var(--ui-skeleton-base)}.bg-success{background-color:var(--ui-success)}.bg-success-soft{background-color:var(--ui-success-soft)}.bg-surface{background-color:var(--ui-surface)}.bg-surface-2{background-color:var(--ui-surface-2)}.bg-surface-3{background-color:var(--ui-surface-3)}.bg-surface-inset{background-color:var(--ui-surface-inset)}.bg-transparent{background-color:#0000}.bg-warning{background-color:var(--ui-warning)}.bg-warning-soft{background-color:var(--ui-warning-soft)}.fill-sidebar{fill:var(--ui-sidebar)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:0}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-\[5px\]{padding:5px}.p-\[10px_12px\]{padding:10px 12px}.p-\[36px_34px_30px\]{padding:36px 34px 30px}.px-0{padding-inline:0}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-7{padding-inline:calc(var(--spacing) * 7)}.px-\[5px\]{padding-inline:5px}.px-\[9px\]{padding-inline:9px}.py-0{padding-block:0}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-\[3px\]{padding-block:3px}.py-\[5px\]{padding-block:5px}.py-\[7px\]{padding-block:7px}.py-\[11px\]{padding-block:11px}.py-\[13px\]{padding-block:13px}.py-\[15px\]{padding-block:15px}.py-\[18px\]{padding-block:18px}.py-\[26px\]{padding-block:26px}.py-px{padding-block:1px}.pt-1{padding-top:var(--spacing)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-3\.5{padding-top:calc(var(--spacing) * 3.5)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-7{padding-top:calc(var(--spacing) * 7)}.pt-\[9px\]{padding-top:9px}.pr-1\.5{padding-right:calc(var(--spacing) * 1.5)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-2\.5{padding-right:calc(var(--spacing) * 2.5)}.pr-3\.5{padding-right:calc(var(--spacing) * 3.5)}.pr-7{padding-right:calc(var(--spacing) * 7)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pr-\[9px\]{padding-right:9px}.pb-1{padding-bottom:var(--spacing)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-2\.5{padding-bottom:calc(var(--spacing) * 2.5)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-\[7px\]{padding-bottom:7px}.pb-\[9px\]{padding-bottom:9px}.pb-\[env\(safe-area-inset-bottom\,0px\)\]{padding-bottom:env(safe-area-inset-bottom,0px)}.pb-\[max\(12px\,env\(safe-area-inset-bottom\)\)\]{padding-bottom:max(12px,env(safe-area-inset-bottom))}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-\[9px\]{padding-left:9px}.pl-\[11px\]{padding-left:11px}.pl-\[18px\]{padding-left:18px}.pl-\[84px\]{padding-left:84px}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-top{vertical-align:top}.\[font-family\:inherit\]{font-family:inherit}.font-mono{font-family:var(--ui-font-mono)}.font-sans{font-family:var(--ui-font-sans)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[font-size\:inherit\]{font-size:inherit}.text-\[9px\]{font-size:9px}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-\[12\.5px\]{font-size:12.5px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15\.5px\]{font-size:15.5px}.text-\[15px\]{font-size:15px}.text-\[20px\]{font-size:20px}.text-\[21px\]{font-size:21px}.text-\[22px\]{font-size:22px}.text-\[26px\]{font-size:26px}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-\[1\.4\]{--tw-leading:1.4;line-height:1.4}.leading-\[1\.5\]{--tw-leading:1.5;line-height:1.5}.leading-\[1\.6\]{--tw-leading:1.6;line-height:1.6}.leading-\[1\.7\]{--tw-leading:1.7;line-height:1.7}.leading-\[1\.8\]{--tw-leading:1.8;line-height:1.8}.leading-\[1\.9\]{--tw-leading:1.9;line-height:1.9}.leading-\[1\.55\]{--tw-leading:1.55;line-height:1.55}.leading-\[1\.65\]{--tw-leading:1.65;line-height:1.65}.leading-\[1\.85\]{--tw-leading:1.85;line-height:1.85}.leading-\[14px\]{--tw-leading:14px;line-height:14px}.leading-\[18px\]{--tw-leading:18px;line-height:18px}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[-0\.022em\]{--tw-tracking:-.022em;letter-spacing:-.022em}.tracking-\[\.02em\]{--tw-tracking:.02em;letter-spacing:.02em}.tracking-\[\.04em\]{--tw-tracking:.04em;letter-spacing:.04em}.tracking-\[\.05em\]{--tw-tracking:.05em;letter-spacing:.05em}.tracking-\[\.09em\]{--tw-tracking:.09em;letter-spacing:.09em}.tracking-\[0\.2px\]{--tw-tracking:.2px;letter-spacing:.2px}.tracking-\[0\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.tracking-\[inherit\]{--tw-tracking:inherit;letter-spacing:inherit}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-cn{color:var(--ui-cn)}.text-destructive{color:var(--ui-destructive)}.text-foreground{color:var(--ui-foreground)}.text-info{color:var(--ui-info)}.text-inherit{color:inherit}.text-intl{color:var(--ui-intl)}.text-muted-foreground{color:var(--ui-muted-foreground)}.text-primary{color:var(--ui-primary)}.text-primary-fg{color:var(--ui-primary-fg)}.text-primary-foreground{color:var(--ui-primary-foreground)}.text-primary-on{color:var(--ui-primary-on)}.text-secondary-foreground{color:var(--ui-secondary-foreground)}.text-sensitive{color:var(--ui-sensitive)}.text-sidebar-fg{color:var(--ui-sidebar-fg)}.text-sidebar-foreground{color:var(--ui-sidebar-foreground)}.text-sidebar-muted{color:var(--ui-sidebar-muted)}.text-subtle{color:var(--ui-text-2)}.text-success{color:var(--ui-success)}.text-warning{color:var(--ui-warning)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.\[font-variant-numeric\:tabular-nums\]{font-variant-numeric:tabular-nums}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.opacity-35{opacity:.35}.opacity-40{opacity:.4}.opacity-45{opacity:.45}.opacity-50{opacity:.5}.opacity-55{opacity:.55}.opacity-75{opacity:.75}.opacity-\[\.58\]{opacity:.58}.shadow-1{--tw-shadow:var(--ui-shadow-1);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-3{--tw-shadow:var(--ui-shadow-3);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-glow{--tw-shadow:var(--ui-glow);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-\[3px\]{--tw-backdrop-blur:blur(3px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition-\[background-color\,border-color\,color\,transform\,box-shadow\]{transition-property:background-color,border-color,color,transform,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[background-color\,border-color\,color\]{transition-property:background-color,border-color,color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[background-color\,color\]{transition-property:background-color,color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[border-color\,box-shadow\]{transition-property:border-color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[opacity\,transform\]{transition-property:opacity,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-\[120ms\]{--tw-duration:.12s;transition-duration:.12s}.duration-\[150ms\]{--tw-duration:.15s;transition-duration:.15s}.duration-\[180ms\]{--tw-duration:.18s;transition-duration:.18s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.\[transition-timing-function\:cubic-bezier\(\.2\,\.9\,\.3\,1\)\]{transition-timing-function:cubic-bezier(.2,.9,.3,1)}.\[transition-timing-function\:cubic-bezier\(\.3\,1\.4\,\.6\,1\)\]{transition-timing-function:cubic-bezier(.3,1.4,.6,1)}.\[transition-timing-function\:cubic-bezier\(\.32\,\.9\,\.3\,1\)\]{transition-timing-function:cubic-bezier(.32,.9,.3,1)}.fill-mode-forwards{--tw-animation-fill-mode:forwards;animation-fill-mode:forwards}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.select-text{-webkit-user-select:text;user-select:text}.\!paused{animation-play-state:paused!important}.\[animation-duration\:0\.7s\]{animation-duration:.7s}.\[overflow-anchor\:none\]{overflow-anchor:none}.paused{animation-play-state:paused}.running{animation-play-state:running}.group-has-\[\>input\]\/input-group\:pt-1\.5:is(:where(.group\/input-group):has(>input) *){padding-top:calc(var(--spacing) * 1.5)}.group-has-\[\>input\]\/input-group\:pb-1\.5:is(:where(.group\/input-group):has(>input) *){padding-bottom:calc(var(--spacing) * 1.5)}.group-aria-\[checked\=indeterminate\]\/checkbox\:block:is(:where(.group\/checkbox)[aria-checked=indeterminate] *){display:block}.group-aria-\[checked\=indeterminate\]\/checkbox\:hidden:is(:where(.group\/checkbox)[aria-checked=indeterminate] *){display:none}.group-data-panel-open\:rotate-180:is(:where(.group)[data-panel-open] *){rotate:180deg}.group-data-\[disabled\=true\]\/input-group\:opacity-50:is(:where(.group\/input-group)[data-disabled=true] *){opacity:.5}.group-data-\[size\=sm\]\/card\:p-3:is(:where(.group\/card)[data-size=sm] *){padding:calc(var(--spacing) * 3)}.group-data-\[size\=sm\]\/card\:px-3:is(:where(.group\/card)[data-size=sm] *){padding-inline:calc(var(--spacing) * 3)}.group-data-\[size\=sm\]\/card\:py-2:is(:where(.group\/card)[data-size=sm] *){padding-block:calc(var(--spacing) * 2)}.group-data-open\/fold\:rotate-90:is(:is(:where(.group\/fold):where([data-state=open]),:where(.group\/fold):where([data-open]:not([data-open=false]))) *){rotate:90deg}.group-data-checked\/card\:text-primary-fg:is(:is(:where(.group\/card):where([data-state=checked]),:where(.group\/card):where([data-checked]:not([data-checked=false]))) *){color:var(--ui-primary-fg)}.group-data-checked\/seg\:bg-surface-2:is(:is(:where(.group\/seg):where([data-state=checked]),:where(.group\/seg):where([data-checked]:not([data-checked=false]))) *){background-color:var(--ui-surface-2)}.group-data-checked\/seg\:text-foreground:is(:is(:where(.group\/seg):where([data-state=checked]),:where(.group\/seg):where([data-checked]:not([data-checked=false]))) *){color:var(--ui-foreground)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-foreground::file-selector-button{color:var(--ui-foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--ui-muted-foreground)}.first\:border-t-0:first-child{border-top-style:var(--tw-border-style);border-top-width:0}.first\:pt-0:first-child{padding-top:0}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.empty\:hidden:empty{display:none}@media(hover:hover){.hover\:border-border-strong:hover{border-color:var(--ui-border-strong)}.hover\:border-control-border-hover:hover{border-color:var(--ui-control-border-hover)}.hover\:border-primary:hover{border-color:var(--ui-primary)}.hover\:border-primary-hover:hover{border-color:var(--ui-primary-hover)}.hover\:bg-control-hover:hover{background-color:var(--ui-control-hover)}.hover\:bg-destructive:hover{background-color:var(--ui-destructive)}.hover\:bg-destructive-hover:hover{background-color:var(--ui-destructive-hover)}.hover\:bg-destructive-soft:hover{background-color:var(--ui-destructive-soft)}.hover\:bg-nav-hover:hover{background-color:var(--ui-nav-hover)}.hover\:bg-primary-hover:hover{background-color:var(--ui-primary-hover)}.hover\:bg-primary-tint:hover{background-color:var(--ui-primary-tint)}.hover\:bg-secondary\/80:hover{background-color:var(--ui-secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--ui-secondary) 80%,transparent)}}.hover\:bg-transparent:hover{background-color:#0000}.hover\:text-destructive:hover{color:var(--ui-destructive)}.hover\:text-foreground:hover{color:var(--ui-foreground)}.hover\:text-primary-fg:hover{color:var(--ui-primary-fg)}.hover\:text-white:hover{color:var(--color-white)}.hover\:no-underline:hover{text-decoration-line:none}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}}.focus\:border-0:focus{border-style:var(--tw-border-style);border-width:0}.focus\:border-primary:focus{border-color:var(--ui-primary)}.focus\:shadow-focus:focus{--tw-shadow:var(--ui-focus-ring);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:shadow-none:focus{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:border-primary:focus-visible{border-color:var(--ui-primary)}.focus-visible\:shadow-focus:focus-visible{--tw-shadow:var(--ui-focus-ring);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:translate-y-0:active{--tw-translate-y:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.active\:translate-y-\[0\.5px\]:active{--tw-translate-y:.5px;translate:var(--tw-translate-x) var(--tw-translate-y)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-default:disabled{cursor:default}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-surface-3:disabled{background-color:var(--ui-surface-3)}.disabled\:text-muted-foreground:disabled{color:var(--ui-muted-foreground)}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-45:disabled{opacity:.45}.disabled\:opacity-100:disabled{opacity:1}.disabled\:shadow-none:disabled{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:where([data-panel-open]) .in-data-panel-open\:rotate-90{rotate:90deg}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:border-primary:has([data-slot=input-group-control]:focus-visible){border-color:var(--ui-primary)}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:shadow-focus:has([data-slot=input-group-control]:focus-visible){--tw-shadow:var(--ui-focus-ring);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.has-\[\[data-slot\=input-group-control\]\:hover\:not\(\:focus-visible\)\]\:border-control-border-hover:has([data-slot=input-group-control]:hover:not(:focus-visible)){border-color:var(--ui-control-border-hover)}.has-\[\[data-slot\=item-content\]\]\:justify-start:has([data-slot=item-content]){justify-content:flex-start}.has-\[\>\[data-align\=block-end\]\]\:h-auto:has(>[data-align=block-end]){height:auto}.has-\[\>\[data-align\=block-end\]\]\:flex-col:has(>[data-align=block-end]){flex-direction:column}.has-\[\>\[data-align\=block-start\]\]\:h-auto:has(>[data-align=block-start]){height:auto}.has-\[\>\[data-align\=block-start\]\]\:flex-col:has(>[data-align=block-start]){flex-direction:column}.has-\[\>button\]\:-mr-1:has(>button){margin-right:calc(var(--spacing) * -1)}.has-\[\>button\]\:-ml-1:has(>button){margin-left:calc(var(--spacing) * -1)}.has-\[\>textarea\]\:h-auto:has(>textarea){height:auto}.data-anchor-hidden\:pointer-events-none[data-anchor-hidden]{pointer-events:none}.data-anchor-hidden\:invisible[data-anchor-hidden]{visibility:hidden}.data-anchor-hidden\:hidden[data-anchor-hidden]{display:none}.data-ending-style\:opacity-0[data-ending-style]{opacity:0}.data-error\:invisible[data-error]{visibility:hidden}.data-limited\:hidden[data-limited]{display:none}.data-loading\:invisible[data-loading]{visibility:hidden}.data-popup-open\:rotate-180[data-popup-open]{rotate:180deg}.data-pressed\:border-primary-bd[data-pressed]{border-color:var(--ui-primary-bd)}.data-pressed\:bg-primary-soft[data-pressed]{background-color:var(--ui-primary-soft)}.data-pressed\:font-semibold[data-pressed]{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.data-pressed\:text-primary-fg[data-pressed]{color:var(--ui-primary-fg)}@media(hover:hover){.data-pressed\:hover\:bg-primary-tint[data-pressed]:hover{background-color:var(--ui-primary-tint)}}.data-\[active\]\:border-nav-selected-border[data-active]{border-color:var(--ui-nav-selected-border)}.data-\[active\]\:border-transparent[data-active]{border-color:#0000}.data-\[active\]\:bg-nav-selected-bg[data-active]{background-color:var(--ui-nav-selected-bg)}.data-\[active\]\:bg-transparent[data-active]{background-color:#0000}.data-\[active\]\:font-medium[data-active]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[active\]\:text-nav-selected-fg[data-active]{color:var(--ui-nav-selected-fg)}@media(hover:hover){.data-\[active\]\:hover\:bg-transparent[data-active]:hover{background-color:#0000}}.data-\[highlighted\]\:bg-nav-hover[data-highlighted]{background-color:var(--ui-nav-hover)}.data-\[indeterminate\]\:w-1\/3[data-indeterminate]{width:33.3333%}.data-\[indeterminate\]\:animate-pulse[data-indeterminate]{animation:var(--animate-pulse)}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--ui-muted-foreground)}.data-\[selected\]\:bg-primary-soft[data-selected]{background-color:var(--ui-primary-soft)}.data-\[selected\]\:font-semibold[data-selected]{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.data-\[selected\]\:text-primary-fg[data-selected]{color:var(--ui-primary-fg)}.data-\[highlighted\]\:data-\[selected\]\:bg-primary-tint[data-highlighted][data-selected]{background-color:var(--ui-primary-tint)}.data-\[side\=bottom\]\:-top-1[data-side=bottom]{top:calc(var(--spacing) * -1)}.data-\[side\=top\]\:-bottom-1[data-side=top]{bottom:calc(var(--spacing) * -1)}.data-\[type\=error\]\:border-destructive-bd[data-type=error]{border-color:var(--ui-destructive-bd)}.data-\[type\=error\]\:text-destructive[data-type=error]{color:var(--ui-destructive)}.data-\[type\=success\]\:border-success-bd[data-type=success]{border-color:var(--ui-success-bd)}.data-\[type\=success\]\:text-success[data-type=success]{color:var(--ui-success)}.data-\[type\=warning\]\:border-warning-bd[data-type=warning]{border-color:var(--ui-warning-bd)}.data-\[type\=warning\]\:text-warning[data-type=warning]{color:var(--ui-warning)}@media(prefers-reduced-motion:reduce){.motion-reduce\:animate-none{animation:none}.motion-reduce\:transition-none{transition-property:none}}@media not all and (min-width:767px){.max-\[767px\]\:inline-flex{display:inline-flex}.max-\[767px\]\:h-10{height:calc(var(--spacing) * 10)}.max-\[767px\]\:min-h-10{min-height:calc(var(--spacing) * 10)}.max-\[767px\]\:w-\[calc\(100vw-24px\)\]{width:calc(100vw - 24px)}.max-\[767px\]\:flex-col{flex-direction:column}.max-\[767px\]\:items-stretch{align-items:stretch}.max-\[767px\]\:gap-2{gap:calc(var(--spacing) * 2)}.max-\[767px\]\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.max-\[767px\]\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media not all and (min-width:40rem){.max-sm\:px-5{padding-inline:calc(var(--spacing) * 5)}.max-sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}}@media(min-width:768px){.min-\[768px\]\:w-\[240px\]{width:240px}.min-\[768px\]\:w-auto{width:auto}.min-\[768px\]\:max-w-\[200px\]{max-width:200px}.min-\[768px\]\:min-w-\[130px\]{min-width:130px}.min-\[768px\]\:flex-none{flex:none}.min-\[768px\]\:flex-row{flex-direction:row}.min-\[768px\]\:items-center{align-items:center}.min-\[768px\]\:gap-2\.5{gap:calc(var(--spacing) * 2.5)}}@media(min-width:900px){.min-\[900px\]\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:40rem){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(min-width:64rem){.lg\:grid-cols-\[minmax\(300px\,0\.8fr\)_minmax\(0\,1\.2fr\)\]{grid-template-columns:minmax(300px,.8fr) minmax(0,1.2fr)}.lg\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.lg\:border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.lg\:pt-0{padding-top:0}.lg\:pl-6{padding-left:calc(var(--spacing) * 6)}}@media(min-width:80rem){.xl\:col-start-2{grid-column-start:2}.xl\:row-start-1{grid-row-start:1}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-\[minmax\(0\,1fr\)_minmax\(340px\,500px\)\]{grid-template-columns:minmax(0,1fr) minmax(340px,500px)}}.data-open\:animate-in:where([data-state=open]),.data-open\:animate-in:where([data-open]:not([data-open=false])){animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-open\:fade-in-0:where([data-state=open]),.data-open\:fade-in-0:where([data-open]:not([data-open=false])){--tw-enter-opacity:0}.data-open\:zoom-in-95:where([data-state=open]),.data-open\:zoom-in-95:where([data-open]:not([data-open=false])){--tw-enter-scale:.95}.data-open\:slide-in-from-bottom:where([data-state=open]),.data-open\:slide-in-from-bottom:where([data-open]:not([data-open=false])){--tw-enter-translate-y:100%}.data-open\:slide-in-from-left:where([data-state=open]),.data-open\:slide-in-from-left:where([data-open]:not([data-open=false])){--tw-enter-translate-x:-100%}.data-open\:slide-in-from-right:where([data-state=open]),.data-open\:slide-in-from-right:where([data-open]:not([data-open=false])){--tw-enter-translate-x:100%}.data-open\:slide-in-from-top-1:where([data-state=open]),.data-open\:slide-in-from-top-1:where([data-open]:not([data-open=false])){--tw-enter-translate-y:calc(1*var(--spacing)*-1)}.data-open\:zoom-in-\[\.985\]:where([data-state=open]),.data-open\:zoom-in-\[\.985\]:where([data-open]:not([data-open=false])){--tw-enter-scale:.985}.data-closed\:animate-out:where([data-state=closed]),.data-closed\:animate-out:where([data-closed]:not([data-closed=false])){animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-closed\:fade-out-0:where([data-state=closed]),.data-closed\:fade-out-0:where([data-closed]:not([data-closed=false])){--tw-exit-opacity:0}.data-closed\:fill-mode-forwards:where([data-state=closed]),.data-closed\:fill-mode-forwards:where([data-closed]:not([data-closed=false])){--tw-animation-fill-mode:forwards;animation-fill-mode:forwards}.data-closed\:zoom-out-95:where([data-state=closed]),.data-closed\:zoom-out-95:where([data-closed]:not([data-closed=false])){--tw-exit-scale:.95}.data-closed\:slide-out-to-bottom:where([data-state=closed]),.data-closed\:slide-out-to-bottom:where([data-closed]:not([data-closed=false])){--tw-exit-translate-y:100%}.data-closed\:slide-out-to-left:where([data-state=closed]),.data-closed\:slide-out-to-left:where([data-closed]:not([data-closed=false])){--tw-exit-translate-x:-100%}.data-closed\:slide-out-to-right:where([data-state=closed]),.data-closed\:slide-out-to-right:where([data-closed]:not([data-closed=false])){--tw-exit-translate-x:100%}.data-checked\:translate-x-\[10px\]:where([data-state=checked]),.data-checked\:translate-x-\[10px\]:where([data-checked]:not([data-checked=false])){--tw-translate-x:10px;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-checked\:translate-x-\[17px\]:where([data-state=checked]),.data-checked\:translate-x-\[17px\]:where([data-checked]:not([data-checked=false])){--tw-translate-x:17px;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-checked\:translate-x-\[18px\]:where([data-state=checked]),.data-checked\:translate-x-\[18px\]:where([data-checked]:not([data-checked=false])){--tw-translate-x:18px;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-checked\:border-primary:where([data-state=checked]),.data-checked\:border-primary:where([data-checked]:not([data-checked=false])){border-color:var(--ui-primary)}.data-checked\:bg-primary:where([data-state=checked]),.data-checked\:bg-primary:where([data-checked]:not([data-checked=false])){background-color:var(--ui-primary)}.data-checked\:bg-primary-soft:where([data-state=checked]),.data-checked\:bg-primary-soft:where([data-checked]:not([data-checked=false])){background-color:var(--ui-primary-soft)}.data-checked\:bg-success:where([data-state=checked]),.data-checked\:bg-success:where([data-checked]:not([data-checked=false])){background-color:var(--ui-success)}.data-checked\:bg-transparent:where([data-state=checked]),.data-checked\:bg-transparent:where([data-checked]:not([data-checked=false])){background-color:#0000}.data-checked\:text-foreground:where([data-state=checked]),.data-checked\:text-foreground:where([data-checked]:not([data-checked=false])){color:var(--ui-foreground)}.data-checked\:text-primary-fg:where([data-state=checked]),.data-checked\:text-primary-fg:where([data-checked]:not([data-checked=false])){color:var(--ui-primary-fg)}@media(hover:hover){:is(.data-checked\:hover\:bg-transparent:where([data-state=checked]),.data-checked\:hover\:bg-transparent:where([data-checked]:not([data-checked=false]))):hover{background-color:#0000}}.data-unchecked\:hidden:where([data-state=unchecked]),.data-unchecked\:hidden:where([data-unchecked]:not([data-unchecked=false])){display:none}.data-\[zero\=true\]\:data-unchecked\:opacity-45[data-zero=true]:where([data-state=unchecked]),.data-\[zero\=true\]\:data-unchecked\:opacity-45[data-zero=true]:where([data-unchecked]:not([data-unchecked=false])){opacity:.45}.data-disabled\:pointer-events-none:where([data-disabled=true]),.data-disabled\:pointer-events-none:where([data-disabled]:not([data-disabled=false])){pointer-events:none}.data-disabled\:cursor-default:where([data-disabled=true]),.data-disabled\:cursor-default:where([data-disabled]:not([data-disabled=false])){cursor:default}.data-disabled\:cursor-not-allowed:where([data-disabled=true]),.data-disabled\:cursor-not-allowed:where([data-disabled]:not([data-disabled=false])){cursor:not-allowed}.data-disabled\:bg-control:where([data-disabled=true]),.data-disabled\:bg-control:where([data-disabled]:not([data-disabled=false])){background-color:var(--ui-control-bg)}.data-disabled\:font-normal:where([data-disabled=true]),.data-disabled\:font-normal:where([data-disabled]:not([data-disabled=false])){--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.data-disabled\:text-muted-foreground:where([data-disabled=true]),.data-disabled\:text-muted-foreground:where([data-disabled]:not([data-disabled=false])){color:var(--ui-muted-foreground)}.data-disabled\:opacity-40:where([data-disabled=true]),.data-disabled\:opacity-40:where([data-disabled]:not([data-disabled=false])){opacity:.4}.data-disabled\:opacity-45:where([data-disabled=true]),.data-disabled\:opacity-45:where([data-disabled]:not([data-disabled=false])){opacity:.45}.data-disabled\:opacity-50:where([data-disabled=true]),.data-disabled\:opacity-50:where([data-disabled]:not([data-disabled=false])){opacity:.5}.data-disabled\:opacity-60:where([data-disabled=true]),.data-disabled\:opacity-60:where([data-disabled]:not([data-disabled=false])){opacity:.6}.\[\&_\*\]\:pointer-events-none *{pointer-events:none}.\[\&_\[data-slot\=segmented-item\]\]\:h-7 [data-slot=segmented-item]{height:calc(var(--spacing) * 7)}.\[\&_\[data-slot\=segmented-item\]\]\:h-8 [data-slot=segmented-item]{height:calc(var(--spacing) * 8)}.\[\&_\[data-slot\=segmented-item\]\]\:px-3 [data-slot=segmented-item]{padding-inline:calc(var(--spacing) * 3)}.\[\&_\[data-slot\=segmented-item\]\]\:text-\[12\.5px\] [data-slot=segmented-item]{font-size:12.5px}.\[\&_h2\]\:flex-1 h2{flex:1}.\[\&_h2\]\:text-\[14\.5px\] h2{font-size:14.5px}.\[\&_h2\]\:text-\[15px\] h2{font-size:15px}.\[\&_h2\]\:font-semibold h2{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.\[\&_h3\]\:text-\[12\.5px\] h3{font-size:12.5px}.\[\&_h3\]\:font-semibold h3{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.\[\&_p\]\:text-xs p{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&_p\]\:leading-\[1\.65\] p{--tw-leading:1.65;line-height:1.65}.\[\&_p\]\:text-subtle p{color:var(--ui-text-2)}.\[\&_strong\]\:font-semibold strong{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.\[\&_strong\]\:text-destructive strong{color:var(--ui-destructive)}.\[\&_strong\]\:text-foreground strong{color:var(--ui-foreground)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\>td\]\:border-b-0 tr:last-child>td,.\[\&_tr\:last-child\>th\]\:border-b-0 tr:last-child>th{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.\[\&\>\*\]\:w-full>*{width:100%}.\[\&\>\*\]\:max-w-none>*{max-width:none}.\[\&\>\*\]\:min-w-0>*{min-width:0}.\[\&\>\*\]\:shrink-0>*{flex-shrink:0}.\[\&\>\:first-child\]\:break-words>:first-child{overflow-wrap:break-word}.\[\&\>\:first-child\]\:whitespace-normal>:first-child{white-space:normal}.has-\[\>\[data-align\=block-end\]\]\:\[\&\>\[data-slot\=input-group-control\]\]\:pt-1\.5:has(>[data-align=block-end])>[data-slot=input-group-control]{padding-top:calc(var(--spacing) * 1.5)}.has-\[\>\[data-align\=block-start\]\]\:\[\&\>\[data-slot\=input-group-control\]\]\:pb-1\.5:has(>[data-align=block-start])>[data-slot=input-group-control]{padding-bottom:calc(var(--spacing) * 1.5)}.has-\[\>\[data-align\=inline-end\]\]\:\[\&\>\[data-slot\=input-group-control\]\]\:pr-1\.5:has(>[data-align=inline-end])>[data-slot=input-group-control]{padding-right:calc(var(--spacing) * 1.5)}.has-\[\>\[data-align\=inline-start\]\]\:\[\&\>\[data-slot\=input-group-control\]\]\:pl-1\.5:has(>[data-align=inline-start])>[data-slot=input-group-control]{padding-left:calc(var(--spacing) * 1.5)}.\[\&\>span\]\:min-w-0>span{min-width:0}.\[\&\>span\]\:truncate>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[\&\>svg\]\:block>svg{display:block}@media(hover:hover){.hover\:\[\&\>td\]\:bg-control-hover:hover>td{background-color:var(--ui-control-hover)}.hover\:\[\&\>td\]\:bg-transparent:hover>td{background-color:#0000}}.pv-row:hover .\[\.pv-row\:hover_\&_\[data-slot\=nav-item-count\]\]\:invisible [data-slot=nav-item-count]{visibility:hidden}[hidden][hidden]:not([hidden=until-found]){display:none!important}#theme-switch [data-slot=segmented-item]{text-align:center;white-space:normal;flex:1 1 0;justify-content:center;min-width:0;height:auto;min-height:24px;padding:3px 4px;line-height:1.4}@media(min-width:768px)and (max-width:900px){#theme-switch [data-slot=segmented-item]{flex:none}}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}@property --scroll-fade-t{syntax:"";inherits:false;initial-value:0}@property --scroll-fade-b{syntax:"";inherits:false;initial-value:0}@property --scroll-fade-s{syntax:"";inherits:false;initial-value:0}@property --scroll-fade-e{syntax:"";inherits:false;initial-value:0}@property --scroll-fade-mask{syntax:"*";inherits:false}@property --shimmer-angle{syntax:"";inherits:true;initial-value:20deg}@property --shimmer-image{syntax:"*";inherits:false}@property --shimmer-text-fill{syntax:"*";inherits:false}@media(prefers-reduced-motion:reduce){.shimmer{-webkit-text-fill-color:currentColor;background-image:none;animation:none}}[data-slot=nav-item]{gap:9px;height:auto;min-height:30px;padding:6px 8px;font-size:12.5px;font-weight:400;line-height:1.25}[data-slot=sidebar] [data-slot=nav-item],[data-slot=nav-list] [data-slot=nav-item],.page[data-page=gateway] .prov-rail [data-slot=nav-item]{height:auto;min-height:30px;padding:6px 8px}[data-slot=nav-item][data-active]{color:var(--ui-nav-selected-fg);font-weight:500}[data-slot=nav-list],.rail-scroll{gap:1px}[data-slot=sidebar-group-label],.nav-group-label,.rail-label{letter-spacing:0;text-transform:none;color:var(--text-3);padding:10px 8px 5px;font-size:10.5px;font-weight:500}.rail-label:after{display:none}@media(max-width:767px){[data-slot=nav-item],[data-slot=sidebar] [data-slot=nav-item],[data-slot=nav-list] [data-slot=nav-item],.page[data-page=gateway] .prov-rail [data-slot=nav-item]{min-height:44px;padding:8px 10px}}:root{--ui-radius:14px;--ui-font-sans:"Public Sans", "Segoe UI", "Microsoft YaHei", "Microsoft YaHei UI", system-ui, sans-serif;--ui-font-mono:Consolas, "Cascadia Mono", "Courier New", monospace;--ui-background:oklch(97.8% .00265 286.35);--ui-foreground:oklch(14.5% 0 0);--ui-card:oklch(100% 0 0);--ui-card-foreground:oklch(14.5% 0 0);--ui-popover:oklch(100% 0 0);--ui-popover-foreground:oklch(14.5% 0 0);--ui-primary:oklch(60.3% .218 257.3);--ui-primary-foreground:oklch(100% 0 0);--ui-secondary:oklch(95% 0 0);--ui-secondary-foreground:oklch(42% .16 250);--ui-muted:oklch(97% 0 0);--ui-muted-foreground:oklch(49% 0 0);--ui-accent:var(--ui-primary)}@supports (color:color-mix(in lab,red,red)){:root{--ui-accent:color-mix(in srgb, var(--ui-primary) 10%, white)}}:root{--ui-accent-foreground:oklch(14.5% 0 0);--ui-destructive:oklch(57.7% .245 27.325);--ui-destructive-foreground:oklch(98.5% 0 0);--ui-success:oklch(59.6% .145 163.225);--ui-success-foreground:oklch(98.5% 0 0);--ui-warning:oklch(68.1% .162 75.834);--ui-warning-foreground:oklch(14.5% 0 0);--ui-info:oklch(58.8% .158 241.966);--ui-info-foreground:oklch(98.5% 0 0);--ui-neutral:oklch(70.8% 0 0);--ui-neutral-foreground:oklch(14.5% 0 0);--ui-border:oklch(14.5% 0 0/.1);--ui-input:oklch(93% 0 0);--ui-ring:oklch(70.8% .16 249.003);--ui-primary-soft:var(--ui-primary)}@supports (color:color-mix(in lab,red,red)){:root{--ui-primary-soft:color-mix(in srgb, var(--ui-primary) 10%, white)}}:root{--ui-primary-fg:oklch(48% .2 257.3);--ui-primary-bd:var(--ui-primary)}@supports (color:color-mix(in lab,red,red)){:root{--ui-primary-bd:color-mix(in srgb, var(--ui-primary) 28%, white)}}:root{--ui-primary-tint:var(--ui-primary)}@supports (color:color-mix(in lab,red,red)){:root{--ui-primary-tint:color-mix(in srgb, var(--ui-primary) 16%, transparent)}}:root{--ui-primary-hover:oklch(54.3% .218 257.3);--ui-primary-on:var(--ui-surface)}@supports (color:color-mix(in lab,red,red)){:root{--ui-primary-on:color-mix(in srgb, var(--ui-surface) 8%, white)}}:root{--ui-surface:oklch(100% 0 0);--ui-surface-2:oklch(97.67% .00265 286.35);--ui-surface-inset:oklch(93.517% .00535 286.3);--ui-raised:oklch(100% 0 0);--ui-border-strong:oklch(14.5% 0 0/.2);--ui-hairline:oklch(14.5% 0 0/.08);--ui-mask:#00000075;--ui-destructive-soft:var(--ui-destructive)}@supports (color:color-mix(in lab,red,red)){:root{--ui-destructive-soft:color-mix(in srgb, var(--ui-destructive) 10%, white)}}:root{--ui-destructive-bd:var(--ui-destructive)}@supports (color:color-mix(in lab,red,red)){:root{--ui-destructive-bd:color-mix(in srgb, var(--ui-destructive) 28%, white)}}:root{--ui-destructive-hover:var(--ui-destructive)}@supports (color:color-mix(in lab,red,red)){:root{--ui-destructive-hover:color-mix(in srgb, var(--ui-destructive) 22%, var(--ui-surface))}}:root{--ui-success-soft:var(--ui-success)}@supports (color:color-mix(in lab,red,red)){:root{--ui-success-soft:color-mix(in srgb, var(--ui-success) 10%, white)}}:root{--ui-success-bd:var(--ui-success)}@supports (color:color-mix(in lab,red,red)){:root{--ui-success-bd:color-mix(in srgb, var(--ui-success) 28%, white)}}:root{--ui-warning-soft:var(--ui-warning)}@supports (color:color-mix(in lab,red,red)){:root{--ui-warning-soft:color-mix(in srgb, var(--ui-warning) 10%, white)}}:root{--ui-warning-bd:var(--ui-warning)}@supports (color:color-mix(in lab,red,red)){:root{--ui-warning-bd:color-mix(in srgb, var(--ui-warning) 28%, white)}}:root{--ui-info-soft:var(--ui-info)}@supports (color:color-mix(in lab,red,red)){:root{--ui-info-soft:color-mix(in srgb, var(--ui-info) 10%, white)}}:root{--ui-info-bd:var(--ui-info)}@supports (color:color-mix(in lab,red,red)){:root{--ui-info-bd:color-mix(in srgb, var(--ui-info) 28%, white)}}:root{--ui-cn:oklch(57.7% .245 27.325);--ui-cn-soft:var(--ui-cn)}@supports (color:color-mix(in lab,red,red)){:root{--ui-cn-soft:color-mix(in srgb, var(--ui-cn) 10%, white)}}:root{--ui-cn-bd:var(--ui-cn)}@supports (color:color-mix(in lab,red,red)){:root{--ui-cn-bd:color-mix(in srgb, var(--ui-cn) 28%, white)}}:root{--ui-intl:oklch(52% .16 268);--ui-intl-soft:var(--ui-intl)}@supports (color:color-mix(in lab,red,red)){:root{--ui-intl-soft:color-mix(in srgb, var(--ui-intl) 10%, white)}}:root{--ui-intl-bd:var(--ui-intl)}@supports (color:color-mix(in lab,red,red)){:root{--ui-intl-bd:color-mix(in srgb, var(--ui-intl) 28%, white)}}:root{--ui-sensitive:oklch(45% .18 305);--ui-sensitive-soft:oklch(55% .18 305/.14);--ui-sensitive-bd:oklch(55% .18 305/.32);--ui-control-bg:oklch(95.815% 0 0);--ui-control-hover:oklch(93.214% .00536 286.3);--ui-control-border:oklch(14.5% 0 0/.14);--ui-control-border-hover:oklch(14.5% 0 0/.24);--ui-surface-3:oklch(95% 0 0);--ui-text-2:oklch(37% 0 0);--ui-nav-hover:oklch(14.5% 0 0/.05);--ui-sidebar-bg:oklch(92.123% .0046 258.33);--ui-sidebar-fg:oklch(43.287% .01676 258.37);--ui-sidebar-muted:oklch(51.2% .02088 261.29);--ui-rail-bg:oklch(95.5% .004 286);--ui-nav-selected-bg:var(--ui-primary);--ui-nav-selected-border:var(--ui-primary);--ui-nav-selected-fg:var(--ui-primary-foreground);--ui-nav-count-bg:oklch(84.405% .05294 251.09);--ui-table-bg:var(--ui-surface);--ui-table-head-bg:var(--ui-surface);--ui-row-hover:var(--ui-surface-2);--ui-chart-1:oklch(72% .18 250);--ui-chart-2:oklch(65% .15 200);--ui-chart-3:oklch(70% .12 280);--ui-chart-4:oklch(68% .19 325);--ui-chart-5:oklch(68% .16 155);--ui-sidebar:var(--ui-sidebar-bg);--ui-sidebar-foreground:var(--ui-sidebar-fg);--ui-sidebar-primary:oklch(64% .197 253.892);--ui-sidebar-primary-foreground:oklch(100% 0 0);--ui-sidebar-accent:var(--ui-primary)}@supports (color:color-mix(in lab,red,red)){:root{--ui-sidebar-accent:color-mix(in srgb, var(--ui-primary) 10%, white)}}:root{--ui-sidebar-accent-foreground:oklch(57.9% .196 255.909);--ui-sidebar-border:var(--ui-border-strong);--ui-sidebar-ring:oklch(58% .2 250);--ui-skeleton-base:oklch(97% 0 0);--ui-skeleton-highlight:oklch(98.5% 0 0);--ui-shadow-1:0 1px 2px oklch(14.5% 0 0/.05);--ui-shadow-2:0 1px 3px oklch(14.5% 0 0/.06), 0 10px 26px -16px oklch(14.5% 0 0/.2);--ui-shadow-3:0 2px 8px oklch(14.5% 0 0/.07), 0 22px 54px -22px oklch(14.5% 0 0/.26);--ui-glow:0 1px 2px oklch(14.5% 0 0/.06), 0 10px 22px -12px var(--ui-primary)}@supports (color:color-mix(in lab,red,red)){:root{--ui-glow:0 1px 2px oklch(14.5% 0 0/.06), 0 10px 22px -12px color-mix(in srgb, var(--ui-primary) 45%, transparent)}}:root{--ui-focus-ring:0 0 0 3px var(--ui-primary)}@supports (color:color-mix(in lab,red,red)){:root{--ui-focus-ring:0 0 0 3px color-mix(in srgb, var(--ui-primary) 25%, transparent)}}:root[data-theme=dark]{--ui-background:oklch(0% 0 0);--ui-foreground:oklch(96.5% 0 0);--ui-card:oklch(19.212% .00399 286.02);--ui-card-foreground:oklch(96.5% 0 0);--ui-popover:oklch(30% .005 286);--ui-popover-foreground:oklch(96.5% 0 0);--ui-primary:oklch(62.3% .206 255.3);--ui-primary-foreground:oklch(100% 0 0);--ui-secondary:oklch(33.5% 0 0);--ui-secondary-foreground:oklch(90% .05 250);--ui-muted:oklch(30.5% 0 0);--ui-muted-foreground:oklch(78% 0 0);--ui-accent:var(--ui-primary);--ui-accent-foreground:oklch(100% 0 0);--ui-destructive:oklch(70.4% .191 22.216);--ui-destructive-foreground:oklch(98.5% 0 0);--ui-success:oklch(69.6% .17 162.48);--ui-success-foreground:oklch(14.5% 0 0);--ui-warning:oklch(76.9% .188 70.08);--ui-warning-foreground:oklch(14.5% 0 0);--ui-info:oklch(61.3% .14 239.919);--ui-info-foreground:oklch(14.5% 0 0);--ui-neutral:oklch(76% 0 0);--ui-neutral-foreground:oklch(15.5% 0 0);--ui-border:oklch(100% 0 0/.1);--ui-input:oklch(100% 0 0/.17);--ui-ring:oklch(55.4% .148 250.726);--ui-primary-soft:oklch(62.3% .206 255.3/.15);--ui-primary-fg:oklch(75% .12 255.3);--ui-primary-bd:oklch(62.3% .206 255.3/.38);--ui-primary-tint:var(--ui-primary)}@supports (color:color-mix(in lab,red,red)){:root[data-theme=dark]{--ui-primary-tint:color-mix(in srgb, var(--ui-primary) 16%, transparent)}}:root[data-theme=dark]{--ui-primary-hover:oklch(68% .206 255.3);--ui-primary-on:var(--ui-surface)}@supports (color:color-mix(in lab,red,red)){:root[data-theme=dark]{--ui-primary-on:color-mix(in srgb, var(--ui-surface) 8%, white)}}:root[data-theme=dark]{--ui-surface:oklch(19.212% .00399 286.02);--ui-surface-2:oklch(28.254% .00726 285.93);--ui-surface-inset:oklch(21.5% .005 286);--ui-raised:oklch(30% .005 286);--ui-border-strong:oklch(100% 0 0/.2);--ui-hairline:oklch(100% 0 0/.09);--ui-mask:#00000075;--ui-destructive-soft:oklch(70.4% .191 22.216/.14);--ui-destructive-bd:oklch(70.4% .191 22.216/.32);--ui-destructive-hover:var(--ui-destructive)}@supports (color:color-mix(in lab,red,red)){:root[data-theme=dark]{--ui-destructive-hover:color-mix(in srgb, var(--ui-destructive) 22%, var(--ui-surface))}}:root[data-theme=dark]{--ui-success-soft:oklch(69.6% .17 162.48/.14);--ui-success-bd:oklch(69.6% .17 162.48/.32);--ui-warning-soft:oklch(76.9% .188 70.08/.14);--ui-warning-bd:oklch(76.9% .188 70.08/.32);--ui-info-soft:oklch(61.3% .14 239.919/.14);--ui-info-bd:oklch(61.3% .14 239.919/.32);--ui-cn:oklch(70.4% .191 22.216);--ui-cn-soft:oklch(70.4% .191 22.216/.14);--ui-cn-bd:oklch(70.4% .191 22.216/.32);--ui-intl:oklch(68% .14 268);--ui-intl-soft:oklch(68% .14 268/.14);--ui-intl-bd:oklch(68% .14 268/.32);--ui-sensitive:oklch(82% .12 305);--ui-sensitive-soft:oklch(70% .16 305/.16);--ui-sensitive-bd:oklch(70% .16 305/.34);--ui-control-bg:oklch(36.572% .0085 285.97);--ui-control-hover:oklch(40.758% .00993 285.95);--ui-control-border:oklch(100% 0 0/.15);--ui-control-border-hover:oklch(100% 0 0/.25);--ui-surface-3:oklch(32.737% .0105 285.81);--ui-text-2:oklch(85% 0 0);--ui-nav-hover:oklch(100% 0 0/.06);--ui-sidebar-bg:oklch(19.212% .00399 286.02);--ui-sidebar-fg:oklch(79.794% .01342 266.68);--ui-sidebar-muted:oklch(67.832% .0176 262.73);--ui-rail-bg:oklch(24% .005 286);--ui-nav-selected-bg:var(--ui-primary);--ui-nav-selected-border:var(--ui-primary);--ui-nav-selected-fg:var(--ui-primary-foreground);--ui-nav-count-bg:oklch(43.273% .06483 250.27);--ui-chart-1:oklch(76% .14 250);--ui-chart-2:oklch(76% .13 200);--ui-chart-3:oklch(76% .13 285);--ui-chart-4:oklch(75% .16 325);--ui-chart-5:oklch(76% .14 155);--ui-sidebar:var(--ui-sidebar-bg);--ui-sidebar-foreground:var(--ui-sidebar-fg);--ui-sidebar-primary:oklch(58.8% .123 246.488);--ui-sidebar-primary-foreground:oklch(100% 0 0);--ui-sidebar-accent:oklch(100% 0 0/.09);--ui-sidebar-accent-foreground:var(--ui-primary);--ui-sidebar-border:var(--ui-border-strong);--ui-sidebar-ring:oklch(70% .17 250);--ui-skeleton-base:oklch(33.5% 0 0);--ui-skeleton-highlight:oklch(44% 0 0);--ui-shadow-1:0 1px 2px oklch(0% 0 0/.4);--ui-shadow-2:0 1px 2px oklch(0% 0 0/.4), 0 12px 28px -18px oklch(0% 0 0/.8);--ui-shadow-3:0 2px 10px oklch(0% 0 0/.45), 0 26px 60px -24px oklch(0% 0 0/.85);--ui-glow:0 1px 2px oklch(0% 0 0/.4), 0 10px 22px -14px oklch(62.3% .206 255.3/.5);--ui-focus-ring:0 0 0 3px oklch(62.3% .206 255.3/.3)}@media(prefers-color-scheme:dark){:root[data-theme=system]{--ui-background:oklch(0% 0 0);--ui-foreground:oklch(96.5% 0 0);--ui-card:oklch(19.212% .00399 286.02);--ui-card-foreground:oklch(96.5% 0 0);--ui-popover:oklch(30% .005 286);--ui-popover-foreground:oklch(96.5% 0 0);--ui-primary:oklch(62.3% .206 255.3);--ui-primary-foreground:oklch(100% 0 0);--ui-secondary:oklch(33.5% 0 0);--ui-secondary-foreground:oklch(90% .05 250);--ui-muted:oklch(30.5% 0 0);--ui-muted-foreground:oklch(78% 0 0);--ui-accent:var(--ui-primary);--ui-accent-foreground:oklch(100% 0 0);--ui-destructive:oklch(70.4% .191 22.216);--ui-destructive-foreground:oklch(98.5% 0 0);--ui-success:oklch(69.6% .17 162.48);--ui-success-foreground:oklch(14.5% 0 0);--ui-warning:oklch(76.9% .188 70.08);--ui-warning-foreground:oklch(14.5% 0 0);--ui-info:oklch(61.3% .14 239.919);--ui-info-foreground:oklch(14.5% 0 0);--ui-neutral:oklch(76% 0 0);--ui-neutral-foreground:oklch(15.5% 0 0);--ui-border:oklch(100% 0 0/.1);--ui-input:oklch(100% 0 0/.17);--ui-ring:oklch(55.4% .148 250.726);--ui-primary-soft:oklch(62.3% .206 255.3/.15);--ui-primary-fg:oklch(75% .12 255.3);--ui-primary-bd:oklch(62.3% .206 255.3/.38);--ui-primary-tint:var(--ui-primary)}@supports (color:color-mix(in lab,red,red)){:root[data-theme=system]{--ui-primary-tint:color-mix(in srgb, var(--ui-primary) 16%, transparent)}}:root[data-theme=system]{--ui-primary-hover:oklch(68% .206 255.3);--ui-primary-on:var(--ui-surface)}@supports (color:color-mix(in lab,red,red)){:root[data-theme=system]{--ui-primary-on:color-mix(in srgb, var(--ui-surface) 8%, white)}}:root[data-theme=system]{--ui-surface:oklch(19.212% .00399 286.02);--ui-surface-2:oklch(28.254% .00726 285.93);--ui-surface-inset:oklch(21.5% .005 286);--ui-raised:oklch(30% .005 286);--ui-border-strong:oklch(100% 0 0/.2);--ui-hairline:oklch(100% 0 0/.09);--ui-mask:#00000075;--ui-destructive-soft:oklch(70.4% .191 22.216/.14);--ui-destructive-bd:oklch(70.4% .191 22.216/.32);--ui-destructive-hover:var(--ui-destructive)}@supports (color:color-mix(in lab,red,red)){:root[data-theme=system]{--ui-destructive-hover:color-mix(in srgb, var(--ui-destructive) 22%, var(--ui-surface))}}:root[data-theme=system]{--ui-success-soft:oklch(69.6% .17 162.48/.14);--ui-success-bd:oklch(69.6% .17 162.48/.32);--ui-warning-soft:oklch(76.9% .188 70.08/.14);--ui-warning-bd:oklch(76.9% .188 70.08/.32);--ui-info-soft:oklch(61.3% .14 239.919/.14);--ui-info-bd:oklch(61.3% .14 239.919/.32);--ui-cn:oklch(70.4% .191 22.216);--ui-cn-soft:oklch(70.4% .191 22.216/.14);--ui-cn-bd:oklch(70.4% .191 22.216/.32);--ui-intl:oklch(68% .14 268);--ui-intl-soft:oklch(68% .14 268/.14);--ui-intl-bd:oklch(68% .14 268/.32);--ui-sensitive:oklch(82% .12 305);--ui-sensitive-soft:oklch(70% .16 305/.16);--ui-sensitive-bd:oklch(70% .16 305/.34);--ui-control-bg:oklch(36.572% .0085 285.97);--ui-control-hover:oklch(40.758% .00993 285.95);--ui-control-border:oklch(100% 0 0/.15);--ui-control-border-hover:oklch(100% 0 0/.25);--ui-surface-3:oklch(32.737% .0105 285.81);--ui-text-2:oklch(85% 0 0);--ui-nav-hover:oklch(100% 0 0/.06);--ui-sidebar-bg:oklch(19.212% .00399 286.02);--ui-sidebar-fg:oklch(79.794% .01342 266.68);--ui-sidebar-muted:oklch(67.832% .0176 262.73);--ui-rail-bg:oklch(24% .005 286);--ui-nav-selected-bg:var(--ui-primary);--ui-nav-selected-border:var(--ui-primary);--ui-nav-selected-fg:var(--ui-primary-foreground);--ui-nav-count-bg:oklch(43.273% .06483 250.27);--ui-chart-1:oklch(76% .14 250);--ui-chart-2:oklch(76% .13 200);--ui-chart-3:oklch(76% .13 285);--ui-chart-4:oklch(75% .16 325);--ui-chart-5:oklch(76% .14 155);--ui-sidebar:var(--ui-sidebar-bg);--ui-sidebar-foreground:var(--ui-sidebar-fg);--ui-sidebar-primary:oklch(58.8% .123 246.488);--ui-sidebar-primary-foreground:oklch(100% 0 0);--ui-sidebar-accent:oklch(100% 0 0/.09);--ui-sidebar-accent-foreground:var(--ui-primary);--ui-sidebar-border:var(--ui-border-strong);--ui-sidebar-ring:oklch(70% .17 250);--ui-skeleton-base:oklch(33.5% 0 0);--ui-skeleton-highlight:oklch(44% 0 0);--ui-shadow-1:0 1px 2px oklch(0% 0 0/.4);--ui-shadow-2:0 1px 2px oklch(0% 0 0/.4), 0 12px 28px -18px oklch(0% 0 0/.8);--ui-shadow-3:0 2px 10px oklch(0% 0 0/.45), 0 26px 60px -24px oklch(0% 0 0/.85);--ui-glow:0 1px 2px oklch(0% 0 0/.4), 0 10px 22px -14px oklch(62.3% .206 255.3/.5);--ui-focus-ring:0 0 0 3px oklch(62.3% .206 255.3/.3)}}:root{--font-sans:var(--ui-font-sans);--font-mono:var(--ui-font-mono);--bg:var(--ui-background);--surface:var(--ui-surface);--surface-2:var(--ui-surface-2);--surface-3:var(--ui-surface-3);--surface-raised:var(--ui-raised);--surface-inset:var(--ui-surface-inset);--table-bg:var(--ui-table-bg);--table-head-bg:var(--ui-table-head-bg);--row-hover:var(--ui-row-hover);--border:var(--ui-border);--border-strong:var(--ui-border-strong);--hairline:var(--ui-hairline);--control-bg:var(--ui-control-bg);--control:var(--ui-control-bg);--control-hover:var(--ui-control-hover);--control-border:var(--ui-control-border);--control-border-hover:var(--ui-control-border-hover);--sidebar-bg:var(--ui-sidebar-bg);--sidebar-border:var(--ui-sidebar-border);--sidebar-fg:var(--ui-sidebar-fg);--sidebar-muted:var(--ui-sidebar-muted);--rail-bg:var(--ui-rail-bg);--nav-hover:var(--ui-nav-hover);--nav-selected-bg:var(--ui-nav-selected-bg);--nav-selected-border:var(--ui-nav-selected-border);--nav-selected-fg:var(--ui-nav-selected-fg);--nav-count-bg:var(--ui-nav-count-bg);--text:var(--ui-foreground);--text-2:var(--ui-text-2);--text-3:var(--ui-muted-foreground);--primary:var(--ui-primary);--primary-hover:var(--ui-primary-hover);--primary-soft:var(--ui-primary-soft);--primary-bd:var(--ui-primary-bd);--primary-fg:var(--ui-primary-fg);--ok:var(--ui-success);--ok-soft:var(--ui-success-soft);--ok-bd:var(--ui-success-bd);--warn:var(--ui-warning);--warn-soft:var(--ui-warning-soft);--warn-bd:var(--ui-warning-bd);--danger:var(--ui-destructive);--danger-soft:var(--ui-destructive-soft);--danger-bd:var(--ui-destructive-bd);--info:var(--ui-info);--info-soft:var(--ui-info-soft);--info-bd:var(--ui-info-bd);--cn:var(--ui-cn);--cn-soft:var(--ui-cn-soft);--cn-bd:var(--ui-cn-bd);--intl:var(--ui-intl);--intl-soft:var(--ui-intl-soft);--intl-bd:var(--ui-intl-bd);--radius:var(--radius-lg);--r-xs:var(--radius-xs);--r-sm:var(--radius-sm);--r-md:var(--radius-md);--r-lg:var(--radius-lg);--r-xl:var(--radius-xl);--r-pill:var(--radius-pill);--shadow-1:var(--ui-shadow-1);--shadow-2:var(--ui-shadow-2);--shadow-3:var(--ui-shadow-3);--glow:var(--ui-glow);--ring:var(--ui-focus-ring)}.page.active[data-page=docs]{padding-bottom:var(--pad);flex-direction:column;display:flex;overflow:hidden}.docs-browser{border:1px solid var(--ui-border);border-radius:var(--ui-radius);background:var(--ui-surface);flex:1;min-width:0;min-height:0;display:flex;overflow:hidden;container:documentation/inline-size}.docs-layout{flex:1;grid-template-rows:minmax(0,1fr);grid-template-columns:224px minmax(0,1fr);width:100%;min-width:0;min-height:0;display:grid}.docs-sidebar{border-right:1px solid var(--ui-border);background:var(--ui-rail-bg);flex-direction:column;min-width:0;min-height:0;display:flex}.docs-sidebar-head{border-bottom:1px solid var(--ui-border);flex:none;padding:18px 12px 14px}.docs-sidebar-title{color:var(--ui-foreground);padding:0 3px;font-size:14px;font-weight:650}.docs-sidebar-caption{color:var(--ui-muted-foreground);margin-top:5px;padding:0 3px;font-size:11.5px;line-height:1.6}.docs-search{margin-top:14px}.docs-search input::-webkit-search-cancel-button{display:none}.docs-menu-toggle{display:none}.docs-navigation{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-gutter:stable;flex-direction:column;flex:1;gap:16px;min-height:0;padding:12px 8px 20px;display:flex;overflow-y:auto}.docs-nav-group{flex:none;min-width:0}.docs-nav-group .docs-group-head{border:1px solid var(--ui-border);border-radius:calc(var(--ui-radius) * .5);background:var(--ui-surface);color:var(--ui-foreground);letter-spacing:0;text-transform:none;align-items:center;gap:8px;padding:8px 10px;font-size:12px;font-weight:650;line-height:1.6;display:flex}.docs-group-head>span{overflow-wrap:anywhere;min-width:0}.docs-group-icon{width:16px;height:16px;color:var(--ui-primary-fg);flex:none}.docs-nav-chapters{border-left:1px solid var(--ui-border-strong);margin-top:6px;margin-left:17px;padding-left:12px}.docs-nav-item{gap:7px;padding:7px 8px}.docs-nav-item:before{content:"";border-top:1px solid var(--ui-border-strong);width:9px;position:absolute;top:50%;left:-13px}.docs-chapter-icon{width:14px;height:14px;color:var(--ui-muted-foreground)}.docs-nav-item[data-active] .docs-chapter-icon{color:inherit}.docs-nav-item[data-active]:before{border-color:var(--ui-primary)}.docs-nav-item [data-slot=nav-item-label]{white-space:normal;overflow-wrap:anywhere;line-height:1.6;overflow:visible}.docs-search-summary{color:var(--ui-muted-foreground);padding:0 8px;font-size:11.5px}.docs-search-empty{padding:16px 8px}.docs-search-empty [data-slot=empty-title]{font-size:12.5px}.docs-article{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-gutter:stable;overflow-anchor:none;min-width:0;min-height:0;padding:clamp(22px,3cqi,40px);overflow:auto}.docs-article-inner{min-width:0;max-width:920px;margin:0 auto}.docs-article-head{border-bottom:1px solid var(--ui-border);flex-direction:column;align-items:flex-start;gap:12px;margin-bottom:24px;padding-bottom:24px;display:flex}.docs-breadcrumb{color:var(--ui-muted-foreground);flex-wrap:wrap;align-items:center;gap:8px;font-size:11.5px;line-height:1.6;display:flex}.docs-article-head h2{color:var(--ui-foreground);letter-spacing:-.025em;overflow-wrap:anywhere;outline:none;margin:2px 0 0;font-size:clamp(21px,2.4cqi,28px);font-weight:650;line-height:1.35}.docs-article-head p{color:var(--ui-muted-foreground);margin:0;font-size:13px;line-height:1.85}.docs-article-path{border:1px solid var(--ui-border);border-radius:calc(var(--ui-radius) * .5);background:var(--ui-surface-inset);max-width:100%;color:var(--ui-text-2);font-family:var(--ui-font-mono);overflow-wrap:anywhere;padding:6px 10px;font-size:11.5px;line-height:1.75}.docs-reference,.docs-block,.docs-prose{flex-direction:column;min-width:0;display:flex}.docs-reference{gap:28px}.docs-block,.docs-prose{gap:14px}.docs-prose p,.docs-points{color:var(--ui-text-2);overflow-wrap:anywhere;margin:0;font-size:13px;line-height:1.9}.docs-block h3{color:var(--ui-foreground);margin:0;font-size:15px;font-weight:650;line-height:1.6}.docs-points{flex-direction:column;gap:10px;padding-left:20px;list-style:outside;display:flex}.docs-block>[data-slot=table-container]{border:1px solid var(--ui-border);border-radius:calc(var(--ui-radius) * .6)}.docs-block [data-slot=table-cell],.docs-block [data-slot=table-head]{padding:10px 12px}.docs-block [data-slot=table-head]{background:var(--ui-table-head-bg)}.docs-block [data-slot=table-row]:last-child [data-slot=table-cell]{border-bottom:0}.docs-example-note{color:var(--ui-muted-foreground);margin:-6px 0 0;font-size:11.5px;line-height:1.8}.docs-example-head h4{overflow-wrap:anywhere;min-width:0}.docs-addresses{margin-bottom:0}.docs-addresses .panel-head h3{color:var(--ui-foreground);margin:0;font-size:14px;font-weight:650}.docs-pagination{border-top:1px solid var(--ui-border);grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:36px;padding-top:20px;display:grid}.docs-pagination>div{min-width:0}.docs-page-link{white-space:normal;text-align:left;flex-direction:column;align-items:flex-start;gap:5px;width:100%;height:auto;padding:12px 0 12px 30px;display:flex;position:relative}.docs-page-link-label{color:var(--ui-muted-foreground);font-size:11px;font-weight:400}.docs-page-link-title{color:var(--ui-primary-fg);overflow-wrap:anywhere;font-size:12.5px;line-height:1.6}.docs-page-link-arrow{color:var(--ui-muted-foreground);position:absolute;top:50%;left:8px;transform:translateY(-50%)}.docs-page-link-next{text-align:right;align-items:flex-end;padding:12px 30px 12px 0}.docs-page-link-next .docs-page-link-arrow{left:auto;right:8px}.docs-mobile-page .docs-browser{border:0;border-radius:0}@container documentation (max-width:700px){.docs-layout{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr)}.docs-sidebar{border-right:0;border-bottom:1px solid var(--ui-border);grid-column:1/-1}.docs-sidebar-head{border-bottom:0;padding:10px 12px}.docs-sidebar-title,.docs-sidebar-caption{display:none}.docs-search{margin-top:0}.docs-menu-toggle{justify-content:flex-start;width:100%;height:auto;min-height:36px;margin-top:6px;padding:5px 2px;display:flex}.docs-menu-current{text-align:left;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.docs-menu-action{color:var(--ui-muted-foreground);flex:none;font-size:11px}.docs-navigation{display:none}.docs-browser[data-menu-open=true] .docs-navigation{border-top:1px solid var(--ui-border);max-height:min(40vh,340px);display:flex}.docs-nav-item{padding-top:9px;padding-bottom:9px}.docs-article{grid-column:1/-1;padding:20px 16px 28px}.docs-article-head{gap:10px;margin-bottom:20px;padding-bottom:20px}.docs-reference{gap:24px}.docs-pagination{gap:10px}}@media(max-width:767px){.page.active[data-page=docs]{padding-bottom:12px}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}.acct-settings-dialog{width:min(920px,calc(100vw - 40px));height:min(660px,calc(100dvh - 88px));min-height:0}:where(.acct-settings-dialog) :where(h1,h2,h3,h4,p){margin:0}.acct-settings-dialog [data-slot=dialog-header],.acct-settings-dialog [data-slot=dialog-footer]{flex:none}.acct-dlg-header{display:flex;align-items:center;gap:11px;padding:12px 44px 12px 16px}.acct-dlg-avatar{display:flex;align-items:center;justify-content:center;width:30px;height:30px;flex:none;border-radius:var(--radius-sm);background:var(--primary-soft);color:var(--primary-fg)}.acct-dlg-icon{display:inline-flex;align-items:center;justify-content:center;flex:none}.acct-dlg-icon svg{display:block}.acct-dlg-identity{min-width:0}.acct-dlg-title-row{display:flex;align-items:center;gap:8px}.acct-dlg-header .acct-dlg-title-row h2{flex:none;font-size:14px;font-weight:600;letter-spacing:-.01em}.acct-dlg-title-row [data-slot=badge]{font-size:10.5px;font-weight:500}.acct-dlg-identity p{display:flex;align-items:center;gap:6px;margin-top:3px;color:var(--text-3);font-size:11.5px}.acct-dlg-identity p>span:first-child{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.acct-dlg-title-dot{opacity:.5}.acct-dlg-account-state{display:inline-flex;align-items:center;gap:5px;flex:none;color:var(--ok)}.acct-dlg-account-state.off{color:var(--text-3)}.acct-dlg-account-state>span{width:5px;height:5px}.acct-dlg-body{flex:1;min-height:0;padding:0;gap:0;overflow:hidden}.acct-dlg{display:flex;flex:1;min-height:0}.acct-dlg-rail{flex:0 0 172px;min-height:0;gap:0;padding:8px 10px 10px;background:var(--surface-2);border-color:var(--hairline)}.acct-dlg-nav{min-height:0;flex:1;overflow-y:auto;overflow-x:hidden;gap:1px}.acct-dlg-nav [data-slot=nav-item]>.acct-dlg-icon{color:var(--text-3)}.acct-dlg-nav [data-slot=nav-item]:not([data-active]):hover{background:var(--nav-hover)}.acct-dlg-nav [data-slot=nav-item][data-active]>.acct-dlg-icon{color:#fff}.acct-dlg-nav-label{display:flex;align-items:center;justify-content:space-between;gap:8px;flex:none;padding:10px 8px 5px;font-size:10.5px;font-weight:500;color:var(--text-3)}.acct-dlg-nav-label>span{padding:0 4px;border:1px solid var(--hairline);border-radius:var(--radius-pill);font-size:9.5px}.acct-dlg-nav-divider{border-top:1px solid var(--hairline);margin:9px 8px;flex:none}.acct-dlg-dirty-dot{width:5px;height:5px;flex:none;border-radius:50%;background:var(--primary)}.acct-dlg-nav [data-slot=nav-item][data-active] .acct-dlg-dirty-dot{background:#fff}.acct-dlg-rail-context{flex:none;margin-top:auto;padding:11px 8px 2px;border-top:1px solid var(--hairline)}.acct-dlg-rail-context strong{display:flex;align-items:center;gap:6px;font-size:11.5px;font-weight:500;color:var(--text-2);overflow-wrap:anywhere}.acct-dlg-rail-context p{font-size:10.5px;color:var(--text-3);margin-top:4px}.acct-dlg-main{display:flex;flex-direction:column;flex:1;min-width:0;min-height:0}.acct-dlg-pane-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex:none;padding:14px 22px 10px}.acct-dlg-pane-head h3{font-size:14px;font-weight:600;letter-spacing:-.01em}.acct-dlg-pane-head p{font-size:11.5px;color:var(--text-3);line-height:1.5;margin-top:2px}.acct-dlg-scope{display:inline-flex;align-items:center;gap:5px;flex:none;margin-top:2px;font-size:11px;color:var(--text-3);white-space:nowrap}.acct-dlg-scope.shared{color:var(--warn)}.acct-dlg-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:2px 22px 22px;scrollbar-gutter:stable;overscroll-behavior:contain}.acct-dlg-pane{display:block;min-width:0}.acct-dlg-group-wrap{margin-top:15px}.acct-dlg-group-wrap:first-child{margin-top:6px}.acct-dlg-group-label{display:flex;align-items:center;gap:8px;margin:0 4px 5px;font-size:11px;font-weight:500;color:var(--text-3)}.acct-dlg-group-wrap+.acct-dlg-group-label{margin-top:15px}.acct-dlg-group-label .acct-dlg-label-action{margin-left:auto;display:inline-flex;align-items:center;gap:6px}.acct-dlg-group{display:block;overflow:hidden;border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--surface)}.acct-dlg-group>*{margin-top:0;margin-bottom:0}.acct-dlg-group>*+*{border-top:1px solid var(--hairline)}.acct-dlg-group>[data-slot=field],.acct-dlg-group>[data-slot=field-group],.acct-dlg-group>.acct-dlg-readonly,.acct-dlg-group>.acct-dlg-inline-note,.acct-dlg-group>.acct-dlg-block,.acct-dlg-group>.acct-dlg-endpoint,.acct-dlg-group>.acct-dlg-model-link,.acct-dlg-group>p{padding:10px 14px}.acct-dlg-group>[data-slot=field]{min-height:44px}.acct-dlg-group>.acct-dlg-field-grid{padding:12px 14px}.acct-dlg-field>[data-slot=field-label],.acct-dlg-field-head>[data-slot=field-label]{color:var(--text-2);font-size:11.5px;font-weight:400}.acct-dlg-field{gap:7px}.acct-dlg-field-head{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:18px}.acct-dlg-field [data-slot=field-description],.acct-dlg-toggle-field [data-slot=field-description],.acct-dlg-concurrency [data-slot=field-description]{font-size:11.5px;line-height:1.5;color:var(--text-3)}.acct-settings-dialog [data-slot=input],.acct-settings-dialog [data-slot=input-group],.acct-settings-dialog [data-slot=combobox-trigger],.acct-settings-dialog [data-slot=select-trigger]{height:28px;min-width:0;font-size:12.5px}.acct-settings-dialog [data-slot=input-group-control]{height:26px;min-width:0}.acct-dlg-field>[data-slot=select-trigger]{width:100%}.acct-dlg-clear{height:20px;padding:0;color:var(--text-3);font-size:11px;font-weight:400}.acct-dlg-clear:hover{color:var(--danger);background:transparent}.acct-dlg-readonly{display:flex;align-items:flex-start;gap:12px;font-size:11.5px;color:var(--text-3)}.acct-dlg-readonly code{margin-left:auto;font-family:var(--font-mono);overflow-wrap:anywhere;text-align:right;color:var(--text-2)}.acct-dlg-toggle-field{flex-direction:row;align-items:center;justify-content:space-between;gap:18px}.acct-dlg-toggle-field>[data-slot=switch],.acct-dlg-concurrency>[data-slot=input]{flex:none}.acct-dlg-toggle-field>div{min-width:0}.acct-dlg-toggle-field [data-slot=field-label],.acct-dlg-concurrency [data-slot=field-label]{font-size:12.5px;font-weight:400;color:var(--text)}.acct-dlg-toggle-field [data-slot=field-description],.acct-dlg-concurrency [data-slot=field-description]{margin-top:2px}.acct-dlg-concurrency{flex-direction:row;align-items:center;justify-content:space-between;gap:16px}.acct-dlg-concurrency [data-slot=input]{width:74px;text-align:right;font-variant-numeric:tabular-nums}.acct-dlg-hint{margin:7px 4px 0;text-align:right}.acct-dlg-group-note{display:flex;align-items:flex-start;gap:7px;margin:9px 4px 0;font-size:11.5px;line-height:1.55;color:var(--text-3)}.acct-dlg-group-note .acct-dlg-icon{margin-top:1.5px}.acct-dlg-group-note a{color:var(--primary-fg);text-decoration:none}.acct-dlg-group-note a:hover{text-decoration:underline}.acct-dlg-inline-note{display:flex;align-items:flex-start;gap:7px;font-size:11.5px;line-height:1.55;color:var(--text-3)}.acct-dlg-inline-note>.acct-dlg-icon{margin-top:1.5px}.acct-dlg-inline-note.warning{color:var(--warn)}.acct-dlg-choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.acct-dlg-choice{display:flex;align-items:center;gap:9px;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer}.acct-dlg-choice[data-selected]{border-color:var(--primary-bd);background:var(--primary-soft)}.acct-dlg-choice:has(:focus-visible){box-shadow:var(--ring)}.acct-dlg-choice>span:not([data-slot]){display:flex;flex-direction:column;gap:2px;min-width:0}.acct-dlg-choice strong{font-size:12.5px;font-weight:500}.acct-dlg-choice[data-selected] strong{color:var(--primary-fg)}.acct-dlg-choice small{color:var(--text-3);font-size:11px;font-weight:400}.acct-proxy-form{padding:10px 14px}.acct-dlg-scope-notice{display:flex;align-items:flex-start;gap:8px;padding:10px 13px;font-size:11.5px;line-height:1.55}.acct-dlg-scope-notice>.acct-dlg-icon{margin-top:1.5px}.acct-dlg-scope-notice strong{font-size:12px;font-weight:500}.acct-dlg-scope-notice p{font-size:11.5px;color:var(--text-2);margin-top:3px}.acct-dlg-field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-width:0}.acct-dlg-field-full{grid-column:1 / -1}.acct-dlg-endpoint{display:flex;flex-direction:column;gap:3px}.acct-dlg-endpoint>span{font-size:10.5px;color:var(--text-3)}.acct-dlg-endpoint code{font-size:11.5px;color:var(--text-2);overflow-wrap:anywhere}.acct-dlg-model-link{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--text-3);font-size:11.5px}.acct-dlg-model-link>button{padding:0;font-size:11.5px;height:auto;min-height:22px}.acct-dlg-advanced{border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--surface);overflow:hidden}.acct-dlg-advanced-trigger{display:flex;align-items:center;gap:8px;width:100%;height:auto;min-height:40px;padding:10px 14px;border-radius:var(--radius-md);color:var(--text-2);font-size:12px}.acct-dlg-advanced-trigger small{margin-left:auto;font-size:11px;font-weight:400;color:var(--text-3)}.acct-dlg-advanced-trigger>.acct-dlg-icon:last-child{transition:transform .15s}.acct-dlg-advanced-trigger[data-panel-open]>.acct-dlg-icon:last-child{transform:rotate(90deg)}.acct-dlg-advanced-content{padding:0 14px 12px}.acct-dlg-advanced-content>[data-slot=field]{padding:10px 0 0}.acct-dlg-advanced-note{margin-top:10px;border-radius:var(--radius-sm);background:var(--surface-inset);padding:9px 11px;font-size:11px}.acct-dlg-danger{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:14px;padding:10px 14px;border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--surface)}.acct-dlg-danger h3{font-size:12.5px;font-weight:400;color:var(--danger)}.acct-dlg-danger p{font-size:11.5px;color:var(--text-3);margin-top:2px}.acct-dlg-delete{color:var(--danger);border-color:var(--danger-bd);background:transparent}.acct-dlg-delete:hover{background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}.acct-dlg-related{display:flex;align-items:center;gap:10px;margin-top:14px;padding:10px 14px;border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--surface)}.acct-dlg-related>.acct-dlg-icon{color:var(--text-3)}.acct-dlg-related>div:not(.acct-dlg-icon){min-width:0}.acct-dlg-related h3{font-size:12px;font-weight:400;color:var(--text-2)}.acct-dlg-related p{font-size:11.5px;color:var(--text-3);margin-top:2px}.acct-dlg-related>button{margin-left:auto;flex:none;padding:0;font-size:11.5px;height:auto;min-height:22px}.acct-dlg-route-context{margin-top:14px;padding-top:12px;border-top:1px solid var(--hairline)}.acct-limiter-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:6px 4px 8px}.acct-limiter-lead{margin:0 4px;font-size:11.5px;color:var(--text-3)}.acct-limiter-group{padding:10px 14px;border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--surface)}.acct-limiter-group+.acct-limiter-group{margin-top:10px}.acct-limiter-head{display:flex;flex-wrap:wrap;align-items:center;gap:9px}.acct-limiter-condition{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:8px;padding:9px 11px;border-radius:var(--radius-sm);background:var(--surface-inset)}.acct-limiter-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:8px}.acct-limiter-expression{font-size:11.5px;color:var(--text-3)}.acct-usage-toggle{min-height:44px}.acct-usage-toggle [data-slot=field-label]{font-size:12.5px;font-weight:400;color:var(--text-2)}.acct-usage-interval{min-height:40px}.acct-usage-interval [data-slot=field-label]{color:var(--text-2);font-size:11.5px}.acct-settings-dialog .acct-usage-interval [data-slot=input]{max-width:88px}.acct-settings-dialog .acct-usage-interval [data-slot=select-trigger]{width:88px}.acct-dlg-footer{justify-content:space-between;gap:16px;padding:11px 16px;background:var(--surface)}.acct-dlg-save-state{display:flex;align-items:center;gap:8px;min-width:0;color:var(--text-3)}.acct-dlg-save-state>.acct-dlg-icon{flex:none}.acct-dlg-save-state strong{display:block;font-size:11.5px;font-weight:500;color:var(--text-2);overflow-wrap:anywhere}.acct-dlg-save-state p{font-size:10.5px;margin-top:2px}.acct-dlg-save-state.dirty>.acct-dlg-icon{color:var(--primary-fg)}.acct-dlg-footer-actions{display:flex;align-items:center;gap:8px;flex:none}.acct-dlg-footer-actions button{height:29px;min-width:68px}.acct-settings-dialog .detail{font-size:11.5px;line-height:1.55;color:var(--text-3)}.acct-settings-dialog .field-row{gap:10px;min-height:30px}.acct-settings-dialog .acct-dlg-main .field-row>label,.acct-settings-dialog .acct-dlg-main .field-row>[data-slot=field]>[data-slot=field-label]{width:auto;flex:initial;text-align:left;white-space:normal;font-size:11.5px;color:var(--text-2)}@media(max-width:950px){.acct-dlg-rail{flex-basis:156px}.acct-dlg-pane-head,.acct-dlg-scroll{padding-left:18px;padding-right:18px}.acct-dlg-field-grid,.acct-dlg-choice-grid{grid-template-columns:1fr}}@media(max-width:767px){.acct-settings-dialog{width:calc(100vw - 24px);height:min(660px,calc(100dvh - 48px))}.acct-dlg-header{padding:10px 40px 10px 12px}.acct-dlg{flex-direction:column}.acct-dlg-rail{flex:none;border-right:0;border-bottom:1px solid var(--hairline);padding:6px 10px}.acct-dlg-nav{flex-direction:row;gap:2px;overflow-y:hidden;overflow-x:auto}.acct-dlg-nav [data-slot=nav-item]{width:auto;min-width:76px;flex:none;height:28px;min-height:28px;padding:0 10px;font-size:12px}.acct-dlg-nav-label,.acct-dlg-rail-context{display:none}.acct-dlg-nav-divider{border-top:0;border-left:1px solid var(--hairline);margin:4px 6px}.acct-dlg-pane-head{padding-top:12px;padding-bottom:8px}.acct-dlg-footer{padding:9px 14px}.acct-settings-dialog [data-slot=input]{font-size:13px}}@media(max-width:480px){.acct-dlg-pane-head{flex-wrap:wrap;gap:6px}.acct-dlg-scope{margin-top:0}.acct-dlg-pane-head,.acct-dlg-scroll{padding-left:14px;padding-right:14px}.acct-dlg-danger,.acct-dlg-model-link{flex-wrap:wrap}.acct-dlg-save-state>.acct-dlg-icon{display:none}.acct-dlg-footer-actions button{min-width:0;padding-left:12px;padding-right:12px}}@media(max-height:620px)and (min-width:768px){.acct-settings-dialog{height:calc(100dvh - 48px)}.acct-dlg-header{padding-top:9px;padding-bottom:9px}.acct-dlg-pane-head{padding-top:11px;padding-bottom:8px}.acct-dlg-footer{padding-top:8px;padding-bottom:8px}.acct-dlg-rail-context{display:none}}.usage-window-cell{display:block;width:100%;min-width:0;container:account-quota / inline-size}.usage-window-quota{display:block;width:100%;max-width:320px;margin-inline:auto;text-align:left;font-variant-numeric:tabular-nums}.usage-window-top{display:flex;align-items:center;gap:6px;min-width:0;margin-bottom:7px}.usage-window-plan{max-width:55%;padding-inline:6px;font-size:10px;text-overflow:ellipsis}.usage-window-status{display:inline-flex;align-items:center;gap:4px;min-width:0;margin-left:auto;font-size:10px;white-space:nowrap}.usage-window-status>span:last-child{overflow:hidden;text-overflow:ellipsis}.usage-window-status.ok,.usage-window-item.ok .usage-window-value,.usage-window-reset-value.ok{color:var(--ok)}.usage-window-status.warn,.usage-window-item.warn .usage-window-value,.usage-window-reset-value.warn{color:var(--warn)}.usage-window-status.muted,.usage-window-item.muted .usage-window-value,.usage-window-reset-value.muted{color:var(--text-3)}.usage-window-grid{display:grid;grid-template-columns:repeat(var(--quota-columns),minmax(0,1fr));border:1px solid var(--hairline);border-radius:var(--r-sm);overflow:hidden}.usage-window-group{display:block;min-width:0;padding:7px 10px}.usage-window-group+.usage-window-group{border-left:1px solid var(--hairline)}.usage-window-group-name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:5px;color:var(--text-2);font-size:10.5px;font-weight:600}.usage-window-item{display:block;min-width:0}.usage-window-item+.usage-window-item{margin-top:7px}.usage-window-line{display:flex;justify-content:space-between;align-items:baseline;gap:5px;min-width:0;line-height:1.4}.usage-window-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-3);font-size:10px}.usage-window-value{flex:0 1 auto;min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;font-size:11.5px;font-weight:600;white-space:nowrap}.usage-window-item.muted .usage-window-value{font-weight:500}.usage-window-grid.ungrouped .usage-window-line{display:block}.usage-window-grid.ungrouped .usage-window-label{display:block;margin-bottom:3px}.usage-window-grid.ungrouped .usage-window-value{font-size:15px}.usage-window-grid.compact{display:block}.usage-window-grid.compact .usage-window-group+.usage-window-group{border-left:none;border-top:1px solid var(--hairline)}.usage-window-grid.compact .usage-window-item+.usage-window-item{margin-top:6px}.usage-window-grid.compact .usage-window-line{display:flex}.usage-window-grid.compact .usage-window-label{display:inline;margin-bottom:0}.usage-window-grid.compact .usage-window-value{font-size:11.5px}.usage-window-foot{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:2px 7px;margin-top:4px;color:var(--text-3);font-size:10px}.usage-window-updated{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.usage-window-detail{height:22px;margin-left:auto;padding:0 3px;font-size:10px;gap:3px}.usage-window-caret{transition:transform .15s ease}.usage-window-detail[aria-expanded=true]{color:var(--primary-fg)}.usage-window-detail[aria-expanded=true] .usage-window-caret{transform:rotate(180deg)}.usage-window-credit{display:block;margin-top:5px}.usage-window-credit .usage-toggle{width:100%;margin-inline:0}.usage-window-pop{width:300px;max-width:calc(100vw - 24px)}.usage-window-pop-body{overflow-y:auto;padding:10px 13px 12px}.usage-window-reset+.usage-window-reset{border-top:1px solid var(--hairline);margin-top:8px;padding-top:8px}.usage-window-reset-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;color:var(--text-2);font-size:11px}.usage-window-reset-head>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.usage-window-reset-value{flex:none;font-weight:600}.usage-window-reset time,.usage-window-reset-unknown{display:block;margin-top:2px;color:var(--text-3);font-size:10.5px}.usage-window-supplementary,.usage-window-explanation{border-top:1px solid var(--hairline);margin-top:10px;padding-top:9px}.usage-window-supplementary p{margin:3px 0;font-size:11px;color:var(--text-2);overflow-wrap:anywhere}.usage-window-warning{margin:8px 0 0;font-size:11px;color:var(--warn);overflow-wrap:anywhere}.usage-window-explanation{font-size:10.5px}@container account-quota (max-width: 259px){.usage-window-grid{grid-template-columns:1fr}.usage-window-group+.usage-window-group{border-left:none;border-top:1px solid var(--hairline)}.usage-window-grid.ungrouped .usage-window-line{display:flex}.usage-window-grid.ungrouped .usage-window-label{margin-bottom:0}.usage-window-grid.ungrouped .usage-window-value{font-size:11.5px}.usage-window-caption{display:none}}@container account-quota (max-width: 159px){.usage-window-plan{max-width:70%}.usage-window-status>span:last-child{display:none}.usage-window-foot,.usage-window-detail{font-size:9px}}.acct-add-dialog [data-slot=dialog-header],.acct-add-form-dialog [data-slot=dialog-header]{padding:12px 44px 12px 16px;gap:11px;border-color:var(--hairline)}.acct-add-dialog [data-slot=dialog-title],.acct-add-form-dialog [data-slot=dialog-title]{flex:none;font-size:14px;font-weight:600;letter-spacing:-.01em}.acct-add-head-mark{display:grid;place-items:center;width:26px;height:26px;flex:none;border-radius:var(--radius-sm);background:var(--surface-3);color:var(--text-2);font-size:11px;font-weight:600}.acct-add-head-mark img{width:18px;height:18px;object-fit:contain}.acct-add-dialog [data-slot=dialog-body]{flex:1;min-height:0;padding:0 22px 20px;gap:0;overflow-y:auto}.acct-add-form-dialog [data-slot=dialog-body]{padding:0 20px 18px;gap:0}.acct-add-form-dialog [data-slot=dialog-footer]{padding:11px 16px;background:var(--surface);border-color:var(--hairline)}.acct-add-form-dialog [data-slot=dialog-footer]:not(:has(.acct-add-foot-host>*)){display:none}.acct-add-foot-mount{display:flex;flex:1 1 auto;min-width:0}.acct-add-foot-host,.acct-add-foot-slot{display:flex;align-items:center;justify-content:space-between;gap:16px;flex:1 1 auto;min-width:0}.acct-add-foot-note{min-width:0;display:flex;flex-direction:column;gap:3px;font-size:11.5px;line-height:1.5;color:var(--text-3)}.acct-add-foot-note .detail,.acct-add-foot-note>span{font-size:11.5px;line-height:1.5;color:var(--text-3)}.acct-add-foot-note .err,.acct-add-foot-note .sms-hint.err{color:var(--danger)}.acct-add-foot-buttons{display:flex;align-items:center;gap:8px;flex:none}.acct-add-foot-buttons>button{min-height:29px}.acct-add-foot-inline{display:flex;align-items:center;justify-content:space-between;gap:16px}.acct-add-dialog .add-group,.acct-add-form-dialog .add-group{display:block;margin-top:15px}.acct-add-dialog .add-group:first-child,.acct-add-form-dialog .add-group:first-child{margin-top:8px}.add-group-label{display:flex;align-items:center;gap:8px;margin:0 4px 5px;font-size:11px;font-weight:500;color:var(--text-3)}.add-group-label .label-action{margin-left:auto;display:inline-flex;align-items:center;gap:6px}.add-group-box{border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--surface);overflow:hidden}.add-group-box>*{margin:0}.add-group-box>*+*{border-top:1px solid var(--hairline)}.add-group-box>*:where(:not([data-slot=segmented-control],[data-slot=select-trigger],[data-slot=input],[data-slot=textarea])){padding:10px 14px}.add-group-box>[data-slot=segmented-control],.add-group-box>[data-slot=select-trigger],.add-group-box>[data-slot=input],.add-group-box>[data-slot=textarea]{margin:10px 14px;max-width:calc(100% - 28px)}.add-group-box>p,.add-group-box>.detail{font-size:11.5px;line-height:1.55;color:var(--text-3)}.acct-add-form-dialog .add-group-box .field-row:has([data-slot=input],[data-slot=textarea],[data-slot=input-group]){display:block}.acct-add-form-dialog .add-group-box .field-row:has([data-slot=input],[data-slot=textarea],[data-slot=input-group])>label,.acct-add-form-dialog .add-group-box .field-row:has([data-slot=input],[data-slot=textarea],[data-slot=input-group])>[data-slot=field]>[data-slot=field-label]{display:block;width:auto;margin-bottom:6px;font-size:11.5px;font-weight:400;color:var(--text-2);white-space:normal;text-align:left}.acct-add-form-dialog .add-group-box .field-row>input,.acct-add-form-dialog .add-group-box .field-row>textarea,.acct-add-form-dialog .add-group-box .field-row>[data-slot=input],.acct-add-form-dialog .add-group-box .field-row>[data-slot=textarea],.acct-add-form-dialog .add-group-box .field-row>[data-slot=input-group]{width:100%}.acct-add-form-dialog .add-group-box .field-row+.field-row{margin-top:8px}.acct-add-form-dialog .add-group-box .field-row:has(>button){display:flex;flex-wrap:wrap;align-items:center;gap:8px}.acct-add-form-dialog .add-login-setting-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px 16px;min-width:0}.acct-add-form-dialog label.add-login-setting-row{flex-wrap:nowrap}.acct-add-form-dialog .add-login-setting-row>[data-slot=segmented-control]{flex:none}.acct-add-form-dialog [data-slot=input],.acct-add-form-dialog [data-slot=textarea],.acct-add-form-dialog [data-slot=input-group],.acct-add-form-dialog [data-slot=select-trigger]{font-size:12.5px}.acct-add-dialog .add-pick-row{display:flex;align-items:center;gap:12px}.acct-add-dialog .add-provider-search{width:240px;flex:none;margin-left:auto}.acct-add-dialog .add-group-box>.add-pick-row{padding:10px 14px}.acct-add-dialog .add-provider-band{grid-column:1 / -1;display:flex;align-items:center;gap:8px;margin-top:4px;padding:12px 6px 7px;border-top:0;border-bottom:1px solid var(--hairline);background:color-mix(in srgb,var(--surface) 96%,var(--surface-2));font-size:11px;color:var(--text-3)}.acct-add-dialog .add-provider-grid>.add-provider-band:first-child{margin-top:0;border-top:0;padding-top:10px}.acct-add-dialog .add-provider-grid>.add-provider-band:not(:first-child){margin-top:6px}.acct-add-dialog .add-provider-band-name{font-size:12px;font-weight:600;color:var(--text-2)}.acct-add-dialog .add-provider-band-stat{padding:1px 7px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--text-3);font-size:10px;line-height:1.6;font-variant-numeric:tabular-nums}.acct-add-dialog .add-provider-band-only{height:24px;padding:0 8px;border-radius:var(--r-pill);font-size:11px;color:var(--text-3)}.acct-add-dialog .add-provider-band-only:hover{background:var(--surface-2);color:var(--text)}.acct-add-dialog .add-provider-grid{height:580px;display:grid;grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:8px;align-content:start;padding:10px 12px;overflow-y:auto;scrollbar-gutter:stable}.acct-add-dialog .add-provider-grid:has(>.add-provider-band){padding-top:0}.acct-add-dialog .add-provider-card{display:flex;align-items:center;gap:10px;min-height:62px;height:auto;padding:9px 11px;border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--surface);text-align:left}.acct-add-dialog .add-provider-card:hover{border-color:var(--primary);background:var(--primary-soft)}.acct-add-dialog .add-provider-card:focus-visible{box-shadow:var(--ring)}.acct-add-dialog .add-provider-card.is-new,.acct-add-dialog .add-provider-card.is-new:hover{border-style:dashed;background:transparent}.acct-add-dialog .add-provider-logo{width:30px;height:30px;flex:none;border-radius:var(--radius-sm);background:var(--surface-3);font-size:12px}.acct-add-dialog .add-provider-card.is-new .add-provider-logo{background:transparent;border:1px dashed var(--control-border);color:var(--text-3)}.acct-add-dialog .add-provider-logo.has-icon img{width:22px;height:22px}.acct-add-dialog .add-provider-info{gap:2px}.acct-add-dialog .add-provider-name{font-size:12.5px;font-weight:500}.acct-add-dialog .add-provider-meta{font-size:11px;line-height:1.35;color:var(--text-3)}.acct-add-dialog .add-provider-go{font-size:15px;color:var(--text-3)}.acct-add-dialog .add-provider-card:hover .add-provider-go{color:var(--primary-fg)}.acct-add-dialog .add-provider-empty{grid-column:1 / -1;padding:18px 14px;font-size:12px;color:var(--text-3)}.acct-add-dialog [data-slot=segmented-control],.acct-add-form-dialog .acct-add-dialog [data-slot=segmented-item],.acct-add-form-dialog [data-slot=segmented-item]{font-size:12px}.acct-add-form-dialog .add-provider-block{display:block;gap:0}.acct-add-form-dialog [data-slot=dialog-section]{display:block;border:0;background:transparent;padding:0;gap:0}.acct-add-form-dialog [data-slot=dialog-section]>h3{display:none}.acct-add-form-dialog [data-slot=dialog-section]>.add-panel-head{display:block;margin:15px 4px 5px}.acct-add-form-dialog [data-slot=dialog-section]>.add-panel-head b,.acct-add-form-dialog [data-slot=dialog-section]>.add-panel-head h3{font-size:11px;font-weight:500;color:var(--text-3)}.acct-add-form-dialog [data-slot=dialog-section]>.add-panel-head>span{display:block;margin-top:2px;font-size:11.5px;line-height:1.5;color:var(--text-3)}.acct-add-form-dialog .add-form{display:block;border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--surface);overflow:hidden;gap:0}.acct-add-form-dialog .add-field{grid-template-columns:84px minmax(0,1fr);align-items:center;gap:5px 12px;padding:11px 14px}.acct-add-form-dialog .add-field+.add-field{border-top:1px solid var(--hairline)}.acct-add-form-dialog .add-field>label{font-size:11.5px;font-weight:400;color:var(--text-2)}.acct-add-form-dialog .add-field>.hint{font-size:11px;line-height:1.5;color:var(--text-3)}.acct-add-form-dialog .add-form+.add-form{margin-top:10px}.acct-add-form-dialog .add-group-box>.sms-form{padding:0}.acct-add-form-dialog .sms-form{display:block;padding:0}.acct-add-form-dialog .sms-field{grid-template-columns:84px minmax(0,1fr);gap:12px;padding:11px 14px}.acct-add-form-dialog .sms-field+.sms-field{border-top:1px solid var(--hairline)}.acct-add-form-dialog .sms-field>.lb{font-size:11.5px;color:var(--text-2)}.acct-add-form-dialog .sms-foot{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-left:84px;padding:11px 14px 11px 0;border-top:1px solid var(--hairline)}.acct-add-form-dialog .add-foot-hint{font-size:11.5px;color:var(--text-3)}.acct-add-form-dialog .add-foot-hint.err{color:var(--danger)}.acct-add-form-dialog .add-foot-actions{display:flex;align-items:center;gap:8px;flex:none}.acct-add-form-dialog .add-foot-actions>button{min-height:29px}.acct-add-form-dialog .compact-account-login{gap:10px}.acct-add-form-dialog .compact-login-methods [data-slot=segmented-item]{min-height:28px;border-radius:var(--radius-sm);font-size:12px}.acct-add-form-dialog .compact-login-description{margin-top:0}.acct-add-form-dialog .compact-login-description p{font-size:11.5px;line-height:1.6}.acct-add-form-dialog .compact-login-field{margin-top:0;gap:6px}.acct-add-form-dialog .compact-login-field [data-slot=label]{font-size:11.5px;font-weight:400}.acct-add-form-dialog .compact-login-field [data-slot=input-group],.acct-add-form-dialog .compact-login-field>[data-slot=input]{height:28px}.acct-add-form-dialog .compact-login-field [data-slot=input-group] [data-slot=input-group-control]{height:26px}.acct-add-form-dialog .compact-login-hint{font-size:11.5px;line-height:1.5}.acct-add-form-dialog .compact-login-guide{margin-top:0;border-radius:var(--radius-sm);font-size:11.5px;line-height:1.6}.acct-add-form-dialog .compact-login-proxy{margin-top:0;border-top:1px solid var(--hairline)}.acct-add-form-dialog .compact-login-proxy-trigger{height:30px;margin-top:0;font-size:11.5px}.acct-add-form-dialog .compact-login-actions{flex:none}.acct-add-form-dialog .compact-login-actions>button{min-height:29px}.acct-add-form-dialog .compact-login-security{font-size:10.5px}.acct-add-form-dialog .add-group-box>div.border-l-2{border-left:0;padding-left:0;gap:6px}.acct-add-form-dialog .add-group-box>div.border-l-2>span{font-size:11.5px;color:var(--text-2)}@media(max-width:900px){.acct-add-dialog [data-slot=dialog-body]{padding-left:16px;padding-right:16px}.acct-add-dialog .add-pick-row{flex-wrap:wrap}.acct-add-dialog .add-provider-search{width:100%;margin-left:0}.acct-add-dialog .add-provider-grid{height:418px}.acct-add-form-dialog .add-field,.acct-add-form-dialog .sms-field{grid-template-columns:76px minmax(0,1fr)}.acct-add-form-dialog .sms-foot{margin-left:76px}}@media(max-width:560px){.acct-add-form-dialog .add-field,.acct-add-form-dialog .sms-field{grid-template-columns:1fr;gap:6px}.acct-add-form-dialog .add-field>label{justify-content:flex-start}.acct-add-form-dialog .sms-foot{margin-left:0}.acct-add-foot-host{flex-wrap:wrap}}.page-auto-refresh{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px;min-width:0;font-size:12px}.page-auto-refresh-settings,.page-auto-refresh-label,.page-auto-refresh-interval{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}.page-auto-refresh-label{color:var(--ui-foreground);font-size:12px;font-weight:500}.page-auto-refresh-interval{margin-left:3px;color:var(--ui-muted-foreground);font-size:12px;font-weight:400}.page-auto-refresh-interval[data-disabled]{opacity:.55}.page-auto-refresh input.page-auto-refresh-input{width:58px;max-width:58px;min-width:0;height:30px;padding:0 5px;text-align:center;font-size:12px;font-variant-numeric:tabular-nums}.page-auto-refresh-button{flex:none}.page-auto-refresh-error{color:var(--ui-destructive);font-size:11px}.page-auto-refresh-settings[aria-busy=true]{cursor:progress}.page-auto-refresh[data-touch]{width:100%;gap:8px 12px}.page-auto-refresh[data-touch] input.page-auto-refresh-input{height:36px;font-size:16px}@media(max-width:767px){.page-auto-refresh input.page-auto-refresh-input{height:36px;font-size:16px}}.topbar:has(#page-refresh-actions:not(:empty)){height:auto;min-height:var(--topbar-h);flex-wrap:wrap;padding-top:8px;padding-bottom:8px}#page-refresh-actions{display:flex;align-items:center;justify-content:flex-end;margin-left:4px}#page-refresh-actions:empty{display:none}@media(max-width:1100px){.topbar:has(#page-refresh-actions:not(:empty)) #topbar-status{display:none}}@media(max-width:767px){.topbar:has(#page-refresh-actions:not(:empty)) .mobile-menu-btn{top:25px}#page-refresh-actions:not(:empty){flex:1 1 100%;margin-left:0;padding-bottom:2px}}.routing-config-shell.is-plain{background:var(--rail-bg);background-image:none;grid-template-columns:205px minmax(0,1fr) minmax(0,1fr)}.routing-hits{display:flex;flex-direction:column;gap:8px;min-width:0;min-height:0;overflow-y:auto}.routing-hits-head{display:flex;align-items:center;gap:8px;padding:0 4px}.routing-hits-head h3{margin:0;font-size:13px;font-weight:600}.routing-hits-head>span{color:var(--text-3);font-size:12px;font-variant-numeric:tabular-nums}.routing-hits-head>button{height:auto;margin-left:auto;padding:0;font-size:11.5px;font-weight:400}.routing-hits-list{display:flex;flex-direction:column;overflow:hidden;border-radius:var(--r-lg);background:var(--surface)}.routing-hits-row{display:flex;flex-direction:column;gap:4px;padding:11px 14px}.routing-hits-row+.routing-hits-row{border-top:1px solid var(--hairline)}.routing-hits-flow{display:flex;align-items:center;gap:6px;min-width:0;font-size:12.5px}.routing-hits-flow .ico{flex:none;color:var(--text-3)}.routing-hits-from,.routing-hits-to{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.routing-hits-from{color:var(--text-2)}.routing-hits-to{color:var(--primary-fg)}.routing-hits-meta{display:flex;align-items:center;gap:8px;color:var(--text-3);font-size:11.5px;font-variant-numeric:tabular-nums}.routing-hits-account{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.routing-hits-status{margin-left:auto;flex:none}.routing-hits-empty{margin:0;padding:22px 14px;color:var(--text-3);font-size:12px;text-align:center}@media(max-width:1280px){.routing-config-shell.is-plain{grid-template-columns:205px minmax(0,1fr)}.routing-hits{display:none}}.rp-panel{display:flex;flex-direction:column;gap:22px;min-width:0}.rp-head{display:flex;align-items:flex-start;gap:16px}.rp-head-text{flex:1;min-width:0}.rp-head h2{margin:0;font-size:17px;font-weight:600;letter-spacing:-.01em}.rp-lede{margin:4px 0 0;max-width:62ch;color:var(--text-3);font-size:12.5px;line-height:1.7}.rp-enable{display:flex;flex:none;align-items:center;gap:8px;padding-top:6px;color:var(--text-3);font-size:12px}.rp-section{display:flex;flex-direction:column;gap:8px;min-width:0}.rp-section-head{display:flex;align-items:center;gap:8px;padding:0 4px}.rp-section-head h3{margin:0;font-size:13px;font-weight:600}.rp-section-count{color:var(--text-3);font-size:12px;font-variant-numeric:tabular-nums}.rp-section-action{margin-left:auto}.rp-rows{display:flex;flex-direction:column;overflow:hidden;border-radius:var(--r-lg);background:var(--surface)}.rp-rows>*{border:0}.rp-rows>*+*{border-top:1px solid var(--hairline)}.rp-row{display:flex;align-items:center;gap:12px;width:100%;padding:12px 16px;border:0;background:transparent;color:var(--text);font:inherit;text-align:left;cursor:pointer;transition:background-color .15s ease-out}.rp-row:hover{background:var(--nav-hover)}.rp-row[data-off]{opacity:.55}.rp-row-main{display:flex;flex:1;flex-direction:column;gap:3px;min-width:0}.rp-row-title{font-size:13px;font-weight:500}.rp-row-detail{display:flex;align-items:center;flex-wrap:wrap;gap:6px;color:var(--text-3);font-size:12px}.rp-row-target{color:var(--primary-fg)}.rp-row-side{display:flex;flex:none;align-items:center;gap:8px;color:var(--text-3);font-size:11.5px}.rp-caret{display:flex;flex:none;color:var(--text-3)}.rp-empty{margin:0;padding:24px 16px;color:var(--text-3);font-size:12.5px;line-height:1.7;text-align:center}.rp-loading{display:flex;align-items:center;justify-content:center;gap:8px;min-height:140px;color:var(--text-3);font-size:12px}.rp-note{margin:0;color:var(--text-3);font-size:11.5px;line-height:1.6}.rp-foot{display:flex;align-items:center;gap:10px}.rp-foot-state{color:var(--text-3);font-size:11.5px}.rp-foot-actions{display:flex;align-items:center;gap:8px;margin-left:auto}.rp-field{display:flex;flex-direction:column;gap:8px;min-width:0}.rp-field>label{display:flex;align-items:center;gap:6px;color:var(--text-3);font-size:11.5px}.rp-switch-row{display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:var(--r-lg);background:var(--surface-inset)}.rp-switch-row>span{font-size:13px}.rp-switch-row>small{margin-left:auto;color:var(--text-3);font-size:12px}.maintenance-page{display:flex;min-height:0;flex:1;flex-direction:column;gap:12px;overflow-y:auto;padding:var(--pad);color:var(--text)}.maintenance-page>*{flex-shrink:0}.maintenance-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}.maintenance-heading h2{margin:0;font-size:20px;font-weight:600;letter-spacing:-.01em}.maintenance-heading p{margin:4px 0 0;color:var(--text-3);font-size:12px;line-height:1.6}.maintenance-heading-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.maintenance-summary{flex:none}.maintenance-summary-table{min-width:1060px}.maintenance-summary-table td{padding:10px 12px}.maintenance-summary-table td:first-child{padding-left:16px}.maintenance-summary-table tbody tr:last-child>td{border-bottom:0}.maintenance-summary-name{font-size:13px;font-weight:500;white-space:nowrap}.maintenance-summary-line{color:var(--text-3);font-size:11.5px;font-variant-numeric:tabular-nums;white-space:nowrap}.maintenance-summary-actions{white-space:nowrap;text-align:right}.maintenance-summary-actions>*+*{margin-left:6px}.maintenance-summary-block{display:flex;flex-direction:column;gap:8px;padding:14px 16px}.maintenance-summary-block-head{display:flex;align-items:center;gap:10px}.maintenance-summary-block-head .maintenance-summary-name{flex:1 1 auto;min-width:0}.maintenance-summary-block-actions{display:flex;justify-content:flex-end;gap:6px}.maintenance-divided{border-top:1px solid var(--hairline)}.maintenance-status{display:inline-flex;align-items:center;gap:6px;color:var(--text-2);font-size:12px;white-space:nowrap}.maintenance-counts{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px;color:var(--text-3);font-size:12px;white-space:nowrap}.maintenance-counts b{color:var(--text);font-weight:500;font-variant-numeric:tabular-nums}.maintenance-counts-bad b{color:var(--danger)}.maintenance-counts-sep{opacity:.4}.maintenance-sep{opacity:.45;padding:0 5px}.maintenance-cooldown{display:inline-block;margin-left:8px;color:var(--warn)}.maintenance-num{font-variant-numeric:tabular-nums}.maintenance-push{margin-left:auto}.maintenance-records{display:flex;flex:1;min-height:360px;flex-direction:column}.maintenance-toolbar{display:flex;flex:none;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 16px;border-bottom:1px solid var(--hairline)}.maintenance-toolbar-title{flex:none;font-size:13px;font-weight:500}.maintenance-toolbar-sub{flex:none;color:var(--text-3);font-size:11.5px}.maintenance-search{margin-left:auto;width:100%;max-width:240px}.maintenance-toolbar>[data-slot=segmented-control]{max-width:100%;overflow-x:auto}.maintenance-scroll{min-height:0;flex:1}.maintenance-history-table{min-width:900px}.maintenance-history-table th:first-child,.maintenance-history-table td:first-child{padding-left:16px}.maintenance-history-table th:last-child,.maintenance-history-table td:last-child{padding-right:16px}.maintenance-history-table th{font-size:11px;font-weight:400;letter-spacing:0}.maintenance-history-table tbody tr:last-child>td{border-bottom:0}.maintenance-retry-label{display:block;margin-top:2px;color:var(--text-3);font-size:11px}.maintenance-foot{display:flex;flex:none;flex-wrap:wrap;align-items:center;gap:10px;padding:9px 16px;border-top:1px solid var(--hairline);color:var(--text-3);font-size:11.5px}.maintenance-foot-spinner{color:var(--text-3)}.maintenance-detail-filters{display:flex;flex-wrap:wrap;align-items:center;gap:12px;overflow-x:auto}.maintenance-detail-scroll{min-height:0;flex:1}.maintenance-detail-table{min-width:760px}.maintenance-detail-table th{font-size:11px;font-weight:400;letter-spacing:0}.maintenance-detail-table tbody tr:last-child>td{border-bottom:0}.maintenance-detail-table .maintenance-reason{max-width:340px;min-width:160px;white-space:normal;overflow-wrap:anywhere;line-height:1.6}.maintenance-metadata{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-top:12px;border-top:1px solid var(--hairline);color:var(--text-3);font-size:12px}.maintenance-detail-footer{display:flex;align-items:center;gap:10px;flex-wrap:wrap;color:var(--text-3);font-size:11.5px}.maintenance-facts{display:grid;grid-template-columns:1fr 1fr;gap:14px 24px;margin:0}.maintenance-facts dt{color:var(--text-3);font-size:11.5px}.maintenance-facts dd{margin:2px 0 0;font-size:12.5px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.maintenance-setting-group{overflow:hidden;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-2)}.maintenance-setting{padding:14px 16px}.maintenance-setting-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:12px}.maintenance-setting h3{margin:0;font-size:13px;font-weight:500}.maintenance-setting-heading p{margin:2px 0 0;color:var(--text-3);font-size:11.5px;line-height:1.6}.maintenance-muted{margin:0;color:var(--text-3);font-size:11.5px;line-height:1.65}@media(max-width:700px){.maintenance-page{gap:10px;padding:0}.maintenance-heading h2{display:none}.maintenance-heading p{margin-top:0}.maintenance-heading-actions{width:100%;justify-content:flex-end}.maintenance-summary-block{padding:12px 14px}.maintenance-toolbar{padding:10px 12px;gap:8px}.maintenance-toolbar-sub{display:none}.maintenance-toolbar>[data-slot=segmented-control]{width:100%;justify-content:center}.maintenance-search{max-width:none}.maintenance-records{min-height:0}.maintenance-history-cards{display:flex;flex:1;min-height:0;flex-direction:column;overflow-y:auto}.maintenance-run-card{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:14px 16px;border-bottom:1px solid var(--hairline)}.maintenance-run-card-heading{display:flex;width:100%;align-items:center;justify-content:space-between;gap:10px;font-size:13px}.maintenance-run-card-heading strong{font-weight:500}.maintenance-run-card>.maintenance-muted{font-size:11.5px}.maintenance-foot{padding:9px 12px}.maintenance-facts{grid-template-columns:1fr}}@media(min-width:701px){.maintenance-history-cards{display:none}}@media(max-width:1099px){.maintenance-foot-note,.maintenance-toolbar-sub{display:none}} diff --git a/desktop-tauri/ui/islands/ui.js b/desktop-tauri/ui/islands/ui.js index 7225c7e8..a1ec3c65 100644 --- a/desktop-tauri/ui/islands/ui.js +++ b/desktop-tauri/ui/islands/ui.js @@ -1,44 +1,44 @@ -var alt=Object.defineProperty;var ilt=(Td,dc,Od)=>dc in Td?alt(Td,dc,{enumerable:!0,configurable:!0,writable:!0,value:Od}):Td[dc]=Od;var Cn=(Td,dc,Od)=>ilt(Td,typeof dc!="symbol"?dc+"":dc,Od);(function(){"use strict";function Td(e,t){for(var n=0;ns[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}function dc(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Od={exports:{}},Sb={};var pF;function Kme(){if(pF)return Sb;pF=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function n(s,i,o){var l=null;if(o!==void 0&&(l=""+o),i.key!==void 0&&(l=""+i.key),"key"in i){o={};for(var u in i)u!=="key"&&(o[u]=i[u])}else o=i;return i=o.ref,{$$typeof:e,type:s,key:l,ref:i!==void 0?i:null,props:o}}return Sb.Fragment=t,Sb.jsx=n,Sb.jsxs=n,Sb}var gF;function qme(){return gF||(gF=1,Od.exports=Kme()),Od.exports}var r=qme(),xO={exports:{}},Ua={},vO={exports:{}},wn={};var xF;function Gme(){if(xF)return wn;xF=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),s=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),o=Symbol.for("react.consumer"),l=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),f=Symbol.for("react.memo"),m=Symbol.for("react.lazy"),g=Symbol.for("react.activity"),v=Symbol.for("react.view_transition"),b=Symbol.iterator;function y(H){return H===null||typeof H!="object"?null:(H=b&&H[b]||H["@@iterator"],typeof H=="function"?H:null)}var k={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},w=Object.assign,S={};function N(H,G,Y){this.props=H,this.context=G,this.refs=S,this.updater=Y||k}N.prototype.isReactComponent={},N.prototype.setState=function(H,G){if(typeof H!="object"&&typeof H!="function"&&H!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,H,G,"setState")},N.prototype.forceUpdate=function(H){this.updater.enqueueForceUpdate(this,H,"forceUpdate")};function C(){}C.prototype=N.prototype;function T(H,G,Y){this.props=H,this.context=G,this.refs=S,this.updater=Y||k}var P=T.prototype=new C;P.constructor=T,w(P,N.prototype),P.isPureReactComponent=!0;var O=Array.isArray;function A(){}var R={H:null,A:null,T:null,S:null},M=Object.prototype.hasOwnProperty;function _(H,G,Y){var se=Y.ref;return{$$typeof:e,type:H,key:G,ref:se!==void 0?se:null,props:Y}}function L(H,G){return _(H.type,G,H.props)}function $(H){return typeof H=="object"&&H!==null&&H.$$typeof===e}function D(H){var G={"=":"=0",":":"=2"};return"$"+H.replace(/[=:]/g,function(Y){return G[Y]})}var F=/\/+/g;function V(H,G){return typeof H=="object"&&H!==null&&H.key!=null?D(""+H.key):G.toString(36)}function q(H){switch(H.status){case"fulfilled":return H.value;case"rejected":throw H.reason;default:switch(typeof H.status=="string"?H.then(A,A):(H.status="pending",H.then(function(G){H.status==="pending"&&(H.status="fulfilled",H.value=G)},function(G){H.status==="pending"&&(H.status="rejected",H.reason=G)})),H.status){case"fulfilled":return H.value;case"rejected":throw H.reason}}throw H}function Q(H,G,Y,se,re){var ne=typeof H;(ne==="undefined"||ne==="boolean")&&(H=null);var de=!1;if(H===null)de=!0;else switch(ne){case"bigint":case"string":case"number":de=!0;break;case"object":switch(H.$$typeof){case e:case t:de=!0;break;case m:return de=H._init,Q(de(H._payload),G,Y,se,re)}}if(de)return re=re(H),de=se===""?"."+V(H,0):se,O(re)?(Y="",de!=null&&(Y=de.replace(F,"$&/")+"/"),Q(re,G,Y,"",function(je){return je})):re!=null&&($(re)&&(re=L(re,Y+(re.key==null||H&&H.key===re.key?"":(""+re.key).replace(F,"$&/")+"/")+de)),G.push(re)),1;de=0;var ie=se===""?".":se+":";if(O(H))for(var oe=0;oe"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),xO.exports=Wme(),xO.exports}var xr=jF(),bO={exports:{}},Nb={},yO={exports:{}},jO={};var wF;function Yme(){return wF||(wF=1,(function(e){function t(q,Q){var X=q.length;q.push(Q);e:for(;0>>1,z=q[U];if(0>>1;Ui(ee,X))Hi(G,ee)?(q[U]=G,q[H]=X,U=H):(q[U]=ee,q[J]=X,U=J);else if(Hi(G,X))q[U]=G,q[H]=X,U=H;else break e}}return Q}function i(q,Q){var X=q.sortIndex-Q.sortIndex;return X!==0?X:q.id-Q.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var l=Date,u=l.now();e.unstable_now=function(){return l.now()-u}}var d=[],f=[],m=1,g=null,v=3,b=!1,y=!1,k=!1,w=!1,S=typeof setTimeout=="function"?setTimeout:null,N=typeof clearTimeout=="function"?clearTimeout:null,C=typeof setImmediate<"u"?setImmediate:null;function T(q){for(var Q=n(f);Q!==null;){if(Q.callback===null)s(f);else if(Q.startTime<=q)s(f),Q.sortIndex=Q.expirationTime,t(d,Q);else break;Q=n(f)}}function P(q){if(k=!1,T(q),!y)if(n(d)!==null)y=!0,O||(O=!0,$());else{var Q=n(f);Q!==null&&V(P,Q.startTime-q)}}var O=!1,A=-1,R=5,M=-1;function _(){return w?!0:!(e.unstable_now()-Mq&&_());){var U=g.callback;if(typeof U=="function"){g.callback=null,v=g.priorityLevel;var z=U(g.expirationTime<=q);if(q=e.unstable_now(),typeof z=="function"){g.callback=z,T(q),Q=!0;break t}g===n(d)&&s(d),T(q)}else s(d);g=n(d)}if(g!==null)Q=!0;else{var K=n(f);K!==null&&V(P,K.startTime-q),Q=!1}}break e}finally{g=null,v=X,b=!1}Q=void 0}}finally{Q?$():O=!1}}}var $;if(typeof C=="function")$=function(){C(L)};else if(typeof MessageChannel<"u"){var D=new MessageChannel,F=D.port2;D.port1.onmessage=L,$=function(){F.postMessage(null)}}else $=function(){S(L,0)};function V(q,Q){A=S(function(){q(e.unstable_now())},Q)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(q){q.callback=null},e.unstable_forceFrameRate=function(q){0>q||125U?(q.sortIndex=X,t(f,q),n(d)===null&&q===n(f)&&(k?(N(A),A=-1):k=!0,V(P,X-U))):(q.sortIndex=z,t(d,q),y||b||(y=!0,O||(O=!0,$()))),q},e.unstable_shouldYield=_,e.unstable_wrapCallback=function(q){var Q=v;return function(){var X=v;v=Q;try{return q.apply(this,arguments)}finally{v=X}}}})(jO)),jO}var kF;function Xme(){return kF||(kF=1,yO.exports=Yme()),yO.exports}var SF;function Qme(){if(SF)return Nb;SF=1;var e=Xme(),t=sg(),n=jF();function s(c){var h="https://react.dev/errors/"+c;if(1le||(c.current=te[le],te[le]=null,le--)}function ye(c,h){le++,te[le]=c.current,c.current=h}var fe=he(null),Le=he(null),pe=he(null),xe=he(null);function Se(c,h){switch(ye(pe,h),ye(Le,c),ye(fe,null),h.nodeType){case 9:case 11:c=(c=h.documentElement)&&(c=c.namespaceURI)?eme(c):0;break;default:if(c=h.tagName,h=h.namespaceURI)h=eme(h),c=tme(h,c);else switch(c){case"svg":c=1;break;case"math":c=2;break;default:c=0}}ce(fe),ye(fe,c)}function ge(){ce(fe),ce(Le),ce(pe)}function ue(c){var h=c.memoizedState;h!==null&&(jb._currentValue=h.memoizedState,ye(xe,c)),h=fe.current;var x=tme(h,c.type);h!==x&&(ye(Le,c),ye(fe,x))}function be(c){Le.current===c&&(ce(fe),ce(Le)),xe.current===c&&(ce(xe),jb._currentValue=je)}var ve,De;function Ie(c){if(ve===void 0)try{throw Error()}catch(x){var h=x.stack.trim().match(/\n( *(at )?)/);ve=h&&h[1]||"",De=-1dc in Od?olt(Od,dc,{enumerable:!0,configurable:!0,writable:!0,value:Rd}):Od[dc]=Rd;var Cn=(Od,dc,Rd)=>llt(Od,typeof dc!="symbol"?dc+"":dc,Rd);(function(){"use strict";function Od(e,t){for(var n=0;ns[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}function dc(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Rd={exports:{}},Sb={};var vF;function qme(){if(vF)return Sb;vF=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function n(s,i,o){var l=null;if(o!==void 0&&(l=""+o),i.key!==void 0&&(l=""+i.key),"key"in i){o={};for(var u in i)u!=="key"&&(o[u]=i[u])}else o=i;return i=o.ref,{$$typeof:e,type:s,key:l,ref:i!==void 0?i:null,props:o}}return Sb.Fragment=t,Sb.jsx=n,Sb.jsxs=n,Sb}var bF;function Gme(){return bF||(bF=1,Rd.exports=qme()),Rd.exports}var r=Gme(),vO={exports:{}},Ha={},bO={exports:{}},wn={};var yF;function Wme(){if(yF)return wn;yF=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),s=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),o=Symbol.for("react.consumer"),l=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),f=Symbol.for("react.memo"),m=Symbol.for("react.lazy"),g=Symbol.for("react.activity"),v=Symbol.for("react.view_transition"),b=Symbol.iterator;function y(K){return K===null||typeof K!="object"?null:(K=b&&K[b]||K["@@iterator"],typeof K=="function"?K:null)}var k={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},j=Object.assign,S={};function N(K,G,Y){this.props=K,this.context=G,this.refs=S,this.updater=Y||k}N.prototype.isReactComponent={},N.prototype.setState=function(K,G){if(typeof K!="object"&&typeof K!="function"&&K!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,K,G,"setState")},N.prototype.forceUpdate=function(K){this.updater.enqueueForceUpdate(this,K,"forceUpdate")};function C(){}C.prototype=N.prototype;function T(K,G,Y){this.props=K,this.context=G,this.refs=S,this.updater=Y||k}var R=T.prototype=new C;R.constructor=T,j(R,N.prototype),R.isPureReactComponent=!0;var O=Array.isArray;function A(){}var P={H:null,A:null,T:null,S:null},M=Object.prototype.hasOwnProperty;function _(K,G,Y){var se=Y.ref;return{$$typeof:e,type:K,key:G,ref:se!==void 0?se:null,props:Y}}function L(K,G){return _(K.type,G,K.props)}function $(K){return typeof K=="object"&&K!==null&&K.$$typeof===e}function D(K){var G={"=":"=0",":":"=2"};return"$"+K.replace(/[=:]/g,function(Y){return G[Y]})}var F=/\/+/g;function q(K,G){return typeof K=="object"&&K!==null&&K.key!=null?D(""+K.key):G.toString(36)}function V(K){switch(K.status){case"fulfilled":return K.value;case"rejected":throw K.reason;default:switch(typeof K.status=="string"?K.then(A,A):(K.status="pending",K.then(function(G){K.status==="pending"&&(K.status="fulfilled",K.value=G)},function(G){K.status==="pending"&&(K.status="rejected",K.reason=G)})),K.status){case"fulfilled":return K.value;case"rejected":throw K.reason}}throw K}function Q(K,G,Y,se,re){var ne=typeof K;(ne==="undefined"||ne==="boolean")&&(K=null);var de=!1;if(K===null)de=!0;else switch(ne){case"bigint":case"string":case"number":de=!0;break;case"object":switch(K.$$typeof){case e:case t:de=!0;break;case m:return de=K._init,Q(de(K._payload),G,Y,se,re)}}if(de)return re=re(K),de=se===""?"."+q(K,0):se,O(re)?(Y="",de!=null&&(Y=de.replace(F,"$&/")+"/"),Q(re,G,Y,"",function(je){return je})):re!=null&&($(re)&&(re=L(re,Y+(re.key==null||K&&K.key===re.key?"":(""+re.key).replace(F,"$&/")+"/")+de)),G.push(re)),1;de=0;var ie=se===""?".":se+":";if(O(K))for(var oe=0;oe"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),vO.exports=Yme(),vO.exports}var xr=SF(),yO={exports:{}},Nb={},jO={exports:{}},wO={};var NF;function Xme(){return NF||(NF=1,(function(e){function t(V,Q){var X=V.length;V.push(Q);e:for(;0>>1,z=V[U];if(0>>1;Ui(ee,X))Ki(G,ee)?(V[U]=G,V[K]=X,U=K):(V[U]=ee,V[J]=X,U=J);else if(Ki(G,X))V[U]=G,V[K]=X,U=K;else break e}}return Q}function i(V,Q){var X=V.sortIndex-Q.sortIndex;return X!==0?X:V.id-Q.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var l=Date,u=l.now();e.unstable_now=function(){return l.now()-u}}var d=[],f=[],m=1,g=null,v=3,b=!1,y=!1,k=!1,j=!1,S=typeof setTimeout=="function"?setTimeout:null,N=typeof clearTimeout=="function"?clearTimeout:null,C=typeof setImmediate<"u"?setImmediate:null;function T(V){for(var Q=n(f);Q!==null;){if(Q.callback===null)s(f);else if(Q.startTime<=V)s(f),Q.sortIndex=Q.expirationTime,t(d,Q);else break;Q=n(f)}}function R(V){if(k=!1,T(V),!y)if(n(d)!==null)y=!0,O||(O=!0,$());else{var Q=n(f);Q!==null&&q(R,Q.startTime-V)}}var O=!1,A=-1,P=5,M=-1;function _(){return j?!0:!(e.unstable_now()-MV&&_());){var U=g.callback;if(typeof U=="function"){g.callback=null,v=g.priorityLevel;var z=U(g.expirationTime<=V);if(V=e.unstable_now(),typeof z=="function"){g.callback=z,T(V),Q=!0;break t}g===n(d)&&s(d),T(V)}else s(d);g=n(d)}if(g!==null)Q=!0;else{var H=n(f);H!==null&&q(R,H.startTime-V),Q=!1}}break e}finally{g=null,v=X,b=!1}Q=void 0}}finally{Q?$():O=!1}}}var $;if(typeof C=="function")$=function(){C(L)};else if(typeof MessageChannel<"u"){var D=new MessageChannel,F=D.port2;D.port1.onmessage=L,$=function(){F.postMessage(null)}}else $=function(){S(L,0)};function q(V,Q){A=S(function(){V(e.unstable_now())},Q)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(V){V.callback=null},e.unstable_forceFrameRate=function(V){0>V||125U?(V.sortIndex=X,t(f,V),n(d)===null&&V===n(f)&&(k?(N(A),A=-1):k=!0,q(R,X-U))):(V.sortIndex=z,t(d,V),y||b||(y=!0,O||(O=!0,$()))),V},e.unstable_shouldYield=_,e.unstable_wrapCallback=function(V){var Q=v;return function(){var X=v;v=Q;try{return V.apply(this,arguments)}finally{v=X}}}})(wO)),wO}var CF;function Qme(){return CF||(CF=1,jO.exports=Xme()),jO.exports}var AF;function Zme(){if(AF)return Nb;AF=1;var e=Qme(),t=sg(),n=SF();function s(c){var h="https://react.dev/errors/"+c;if(1le||(c.current=te[le],te[le]=null,le--)}function ye(c,h){le++,te[le]=c.current,c.current=h}var fe=he(null),Le=he(null),pe=he(null),xe=he(null);function Se(c,h){switch(ye(pe,h),ye(Le,c),ye(fe,null),h.nodeType){case 9:case 11:c=(c=h.documentElement)&&(c=c.namespaceURI)?tme(c):0;break;default:if(c=h.tagName,h=h.namespaceURI)h=tme(h),c=nme(h,c);else switch(c){case"svg":c=1;break;case"math":c=2;break;default:c=0}}ce(fe),ye(fe,c)}function ge(){ce(fe),ce(Le),ce(pe)}function ue(c){var h=c.memoizedState;h!==null&&(jb._currentValue=h.memoizedState,ye(xe,c)),h=fe.current;var x=nme(h,c.type);h!==x&&(ye(Le,c),ye(fe,x))}function be(c){Le.current===c&&(ce(fe),ce(Le)),xe.current===c&&(ce(xe),jb._currentValue=je)}var ve,De;function Ie(c){if(ve===void 0)try{throw Error()}catch(x){var h=x.stack.trim().match(/\n( *(at )?)/);ve=h&&h[1]||"",De=-1)":-1E||me[j]!==Oe[E]){var $e=` -`+me[j].replace(" at new "," at ");return c.displayName&&$e.includes("")&&($e=$e.replace("",c.displayName)),$e}while(1<=j&&0<=E);break}}}finally{We=!1,Error.prepareStackTrace=x}return(x=c?c.displayName||c.name:"")?Ie(x):""}function kt(c,h){switch(c.tag){case 26:case 27:case 5:return Ie(c.type);case 16:return Ie("Lazy");case 13:return c.child!==h&&h!==null?Ie("Suspense Fallback"):Ie("Suspense");case 19:return Ie("SuspenseList");case 0:case 15:return nt(c.type,!1);case 11:return nt(c.type.render,!1);case 1:return nt(c.type,!0);case 31:return Ie("Activity");case 30:return Ie("ViewTransition");default:return""}}function Je(c){try{var h="",x=null;do h+=kt(c,x),x=c,c=c.return;while(c);return h}catch(j){return` -Error generating stack: `+j.message+` -`+j.stack}}var on=Object.prototype.hasOwnProperty,nn=e.unstable_scheduleCallback,On=e.unstable_cancelCallback,Rn=e.unstable_shouldYield,gt=e.unstable_requestPaint,sn=e.unstable_now,Ke=e.unstable_getCurrentPriorityLevel,zt=e.unstable_ImmediatePriority,ht=e.unstable_UserBlockingPriority,Tt=e.unstable_NormalPriority,Ht=e.unstable_LowPriority,jt=e.unstable_IdlePriority,an=e.log,Xt=e.unstable_setDisableYieldValue,gn=null,un=null;function lr(c){if(typeof an=="function"&&Xt(c),un&&typeof un.setStrictMode=="function")try{un.setStrictMode(gn,c)}catch{}}var yn=Math.clz32?Math.clz32:ke,xn=Math.log,jn=Math.LN2;function ke(c){return c>>>=0,c===0?32:31-(xn(c)/jn|0)|0}var Xe=256,Qe=262144,Yt=4194304;function Rt(c){var h=c&42;if(h!==0)return h;switch(c&-c){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return c&-c;case 262144:case 524288:case 1048576:case 2097152:return c&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return c&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return c}}function fn(c,h,x){var j=c.pendingLanes;if(j===0)return 0;var E=0,I=c.suspendedLanes,W=c.pingedLanes;c=c.warmLanes;var ae=j&134217727;return ae!==0?(j=ae&~I,j!==0?E=Rt(j):(W&=ae,W!==0?E=Rt(W):x||(x=ae&~c,x!==0&&(E=Rt(x))))):(ae=j&~I,ae!==0?E=Rt(ae):W!==0?E=Rt(W):x||(x=j&~c,x!==0&&(E=Rt(x)))),E===0?0:h!==0&&h!==E&&(h&I)===0&&(I=E&-E,x=h&-h,I>=x||I===32&&(x&4194048)!==0)?h:E}function At(c,h){return(c.pendingLanes&~(c.suspendedLanes&~c.pingedLanes)&h)===0}function Re(c,h){(h&8)!==0&&(h|=h&32);var x=c.entangledLanes;if(x!==0)for(c=c.entanglements,x&=h;0x;x++)h.push(c);return h}function mn(c,h){c.pendingLanes|=h,h!==268435456&&(c.suspendedLanes=0,c.pingedLanes=0,c.warmLanes=0)}function vn(c,h,x,j,E,I){var W=c.pendingLanes;c.pendingLanes=x,c.suspendedLanes=0,c.pingedLanes=0,c.warmLanes=0,c.expiredLanes&=x,c.entangledLanes&=x,c.errorRecoveryDisabledLanes&=x,c.shellSuspendCounter=0;var ae=c.entanglements,me=c.expirationTimes,Oe=c.hiddenUpdates;for(x=W&~x;0"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),rr=!1;if(bn)try{var Kr={};Object.defineProperty(Kr,"passive",{get:function(){rr=!0}}),window.addEventListener("test",Kr,Kr),window.removeEventListener("test",Kr,Kr)}catch{rr=!1}var Pr=null,qr=null,qs=null;function to(){if(qs)return qs;var c,h=qr,x=h.length,j,E="value"in Pr?Pr.value:Pr.textContent,I=E.length;for(c=0;c=M0),nde=" ",rde=!1;function sde(c,h){switch(c){case"keyup":return nit.indexOf(h.keyCode)!==-1;case"keydown":return h.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function ade(c){return c=c.detail,typeof c=="object"&&"data"in c?c.data:null}var Hv=!1;function sit(c,h){switch(c){case"compositionend":return ade(h);case"keypress":return h.which!==32?null:(rde=!0,nde);case"textInput":return c=h.data,c===nde&&rde?null:c;default:return null}}function ait(c,h){if(Hv)return c==="compositionend"||!s3&&sde(c,h)?(c=to(),qs=qr=Pr=null,Hv=!1,c):null;switch(c){case"paste":return null;case"keypress":if(!(h.ctrlKey||h.altKey||h.metaKey)||h.ctrlKey&&h.altKey){if(h.char&&1"u")return null;try{return c.activeElement||c.body}catch{return c.body}}function hde(c){for(;c&&c.firstChild;)c=c.firstChild;return c}function mde(c,h){var x=hde(c);c=0;for(var j;x;){if(x.nodeType===3){if(j=c+x.textContent.length,c<=h&&j>=h)return{node:x,offset:h-c};c=j}e:{for(;x;){if(x.nextSibling){x=x.nextSibling;break e}x=x.parentNode}x=void 0}x=hde(x)}}function pde(c,h){return c&&h?c===h?!0:c&&c.nodeType===3?!1:h&&h.nodeType===3?pde(c,h.parentNode):"contains"in c?c.contains(h):c.compareDocumentPosition?!!(c.compareDocumentPosition(h)&16):!1:!1}function gde(c){c=c!=null&&c.ownerDocument!=null&&c.ownerDocument.defaultView!=null?c.ownerDocument.defaultView:window;for(var h=o3(c.document);h instanceof c.HTMLIFrameElement;){try{var x=typeof h.contentWindow.location.href=="string"}catch{x=!1}if(x)c=h.contentWindow;else break;h=o3(c.document)}return h}function l3(c){var h=c&&c.nodeName&&c.nodeName.toLowerCase();return h&&(h==="input"&&(c.type==="text"||c.type==="search"||c.type==="tel"||c.type==="url"||c.type==="password")||h==="textarea"||c.contentEditable==="true")}var hit=bn&&"documentMode"in document&&11>=document.documentMode,Vv=null,c3=null,$0=null,u3=!1;function xde(c,h,x){var j=x.window===x?x.document:x.nodeType===9?x:x.ownerDocument;u3||Vv==null||Vv!==o3(j)||(j=Vv,"selectionStart"in j&&l3(j)?j={start:j.selectionStart,end:j.selectionEnd}:(j=(j.ownerDocument&&j.ownerDocument.defaultView||window).getSelection(),j={anchorNode:j.anchorNode,anchorOffset:j.anchorOffset,focusNode:j.focusNode,focusOffset:j.focusOffset}),$0&&L0($0,j)||($0=j,j=aO(c3,"onSelect"),0>=W,E-=W,Zc=1<<32-yn(h)+E|x<hn?(ca=rn,rn=null):ca=rn.sibling;var sr=Ce(Te,rn,Me[hn],Ue);if(sr===null){rn===null&&(rn=ca);break}c&&rn&&sr.alternate===null&&h(Te,rn),we=I(sr,we,hn),Jn===null?Lt=sr:Jn.sibling=sr,Jn=sr,rn=ca}if(hn===Me.length)return x(Te,rn),Fn&&yd(Te,hn),Lt;if(rn===null){for(;hnhn?(ca=rn,rn=null):ca=rn.sibling;var bh=Ce(Te,rn,sr.value,Ue);if(bh===null){rn===null&&(rn=ca);break}c&&rn&&bh.alternate===null&&h(Te,rn),we=I(bh,we,hn),Jn===null?Lt=bh:Jn.sibling=bh,Jn=bh,rn=ca}if(sr.done)return x(Te,rn),Fn&&yd(Te,hn),Lt;if(rn===null){for(;!sr.done;hn++,sr=Me.next())sr=He(Te,sr.value,Ue),sr!==null&&(we=I(sr,we,hn),Jn===null?Lt=sr:Jn.sibling=sr,Jn=sr);return Fn&&yd(Te,hn),Lt}for(rn=j(rn);!sr.done;hn++,sr=Me.next())sr=_e(rn,Te,hn,sr.value,Ue),sr!==null&&(c&&(ca=sr.alternate,ca!==null&&rn.delete(ca.key===null?hn:ca.key)),we=I(sr,we,hn),Jn===null?Lt=sr:Jn.sibling=sr,Jn=sr);return c&&rn.forEach(function(slt){return h(Te,slt)}),Fn&&yd(Te,hn),Lt}function Mn(Te,we,Me,Ue){if(typeof Me=="object"&&Me!==null&&Me.type===L&&Me.key===null&&Me.props.ref===void 0&&(Me=Me.props.children),typeof Me=="object"&&Me!==null){switch(Me.$$typeof){case M:e:{for(var Lt=Me.key;we!==null;){if(we.key===Lt){if(Lt=Me.type,Lt===L){if(we.tag===7){x(Te,we.sibling),Ue=E(we,Me.props.children),eh(Ue,Me),Ue.return=Te,Te=Ue;break e}}else if(we.elementType===Lt||typeof Lt=="object"&&Lt!==null&&Lt.$$typeof===z&&Wp(Lt)===we.type){x(Te,we.sibling),Ue=E(we,Me.props),eh(Ue,Me),Ue.return=Te,Te=Ue;break e}x(Te,we);break}else h(Te,we);we=we.sibling}Me.type===L?(Ue=Fp(Me.props.children,Te.mode,Ue,Me.key),eh(Ue,Me),Ue.return=Te,Te=Ue):(Ue=uT(Me.type,Me.key,Me.props,null,Te.mode,Ue),eh(Ue,Me),Ue.return=Te,Te=Ue)}return W(Te);case _:e:{for(Lt=Me.key;we!==null;){if(we.key===Lt)if(we.tag===4&&we.stateNode.containerInfo===Me.containerInfo&&we.stateNode.implementation===Me.implementation){x(Te,we.sibling),Ue=E(we,Me.children||[]),Ue.return=Te,Te=Ue;break e}else{x(Te,we);break}else h(Te,we);we=we.sibling}Ue=x3(Me,Te.mode,Ue),Ue.return=Te,Te=Ue}return W(Te);case z:return Me=Wp(Me),Mn(Te,we,Me,Ue)}if(de(Me))return bt(Te,we,Me,Ue);if(se(Me)){if(Lt=se(Me),typeof Lt!="function")throw Error(s(150));return Me=Lt.call(Me),qt(Te,we,Me,Ue)}if(typeof Me.then=="function")return Mn(Te,we,yT(Me),Ue);if(Me.$$typeof===V)return Mn(Te,we,gT(Te,Me),Ue);jT(Te,Me)}return typeof Me=="string"&&Me!==""||typeof Me=="number"||typeof Me=="bigint"?(Me=""+Me,we!==null&&we.tag===6?(x(Te,we.sibling),Ue=E(we,Me),Ue.return=Te,Te=Ue):(x(Te,we),Ue=g3(Me,Te.mode,Ue),Ue.return=Te,Te=Ue),W(Te)):x(Te,we)}return function(Te,we,Me,Ue){try{V0=0;var Lt=Mn(Te,we,Me,Ue);return Jv=null,Lt}catch(rn){if(rn===Zv||rn===vT)throw rn;var Jn=no(29,rn,null,Te.mode);return Jn.lanes=Ue,Jn.return=Te,Jn}}}var Xp=Fde(!0),Ude=Fde(!1),th=!1;function A3(c){c.updateQueue={baseState:c.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function E3(c,h){c=c.updateQueue,h.updateQueue===c&&(h.updateQueue={baseState:c.baseState,firstBaseUpdate:c.firstBaseUpdate,lastBaseUpdate:c.lastBaseUpdate,shared:c.shared,callbacks:null})}function nh(c){return{lane:c,tag:0,payload:null,callback:null,next:null}}function rh(c,h,x){var j=c.updateQueue;if(j===null)return null;if(j=j.shared,(gr&2)!==0){var E=j.pending;return E===null?h.next=h:(h.next=E.next,E.next=h),j.pending=h,h=cT(c),Nde(c,null,x),h}return lT(c,j,h,x),cT(c)}function K0(c,h,x){if(h=h.updateQueue,h!==null&&(h=h.shared,(x&4194048)!==0)){var j=h.lanes;j&=c.pendingLanes,x|=j,h.lanes=x,Ns(c,x)}}function T3(c,h){var x=c.updateQueue,j=c.alternate;if(j!==null&&(j=j.updateQueue,x===j)){var E=null,I=null;if(x=x.firstBaseUpdate,x!==null){do{var W={lane:x.lane,tag:x.tag,payload:x.payload,callback:null,next:null};I===null?E=I=W:I=I.next=W,x=x.next}while(x!==null);I===null?E=I=h:I=I.next=h}else E=I=h;x={baseState:j.baseState,firstBaseUpdate:E,lastBaseUpdate:I,shared:j.shared,callbacks:j.callbacks},c.updateQueue=x;return}c=x.lastBaseUpdate,c===null?x.firstBaseUpdate=h:c.next=h,x.lastBaseUpdate=h}var O3=!1;function q0(){if(O3){var c=Qv;if(c!==null)throw c}}function G0(c,h,x,j){O3=!1;var E=c.updateQueue;th=!1;var I=E.firstBaseUpdate,W=E.lastBaseUpdate,ae=E.shared.pending;if(ae!==null){E.shared.pending=null;var me=ae,Oe=me.next;me.next=null,W===null?I=Oe:W.next=Oe,W=me;var $e=c.alternate;$e!==null&&($e=$e.updateQueue,ae=$e.lastBaseUpdate,ae!==W&&(ae===null?$e.firstBaseUpdate=Oe:ae.next=Oe,$e.lastBaseUpdate=me))}if(I!==null){var He=E.baseState;W=0,$e=Oe=me=null,ae=I;do{var Ce=ae.lane&-536870913,_e=Ce!==ae.lane;if(_e?(Zn&Ce)===Ce:(j&Ce)===Ce){Ce!==0&&Ce===qp&&(O3=!0),$e!==null&&($e=$e.next={lane:0,tag:ae.tag,payload:ae.payload,callback:null,next:null});e:{var bt=c,qt=ae;Ce=h;var Mn=x;switch(qt.tag){case 1:if(bt=qt.payload,typeof bt=="function"){He=bt.call(Mn,He,Ce);break e}He=bt;break e;case 3:bt.flags=bt.flags&-65537|128;case 0:if(bt=qt.payload,Ce=typeof bt=="function"?bt.call(Mn,He,Ce):bt,Ce==null)break e;He=A({},He,Ce);break e;case 2:th=!0}}Ce=ae.callback,Ce!==null&&(c.flags|=64,_e&&(c.flags|=8192),_e=E.callbacks,_e===null?E.callbacks=[Ce]:_e.push(Ce))}else _e={lane:Ce,tag:ae.tag,payload:ae.payload,callback:ae.callback,next:null},$e===null?(Oe=$e=_e,me=He):$e=$e.next=_e,W|=Ce;if(ae=ae.next,ae===null){if(ae=E.shared.pending,ae===null)break;_e=ae,ae=_e.next,_e.next=null,E.lastBaseUpdate=_e,E.shared.pending=null}}while(!0);$e===null&&(me=He),E.baseState=me,E.firstBaseUpdate=Oe,E.lastBaseUpdate=$e,I===null&&(E.shared.lanes=0),uh|=W,c.lanes=W,c.memoizedState=He}}function Hde(c,h){if(typeof c!="function")throw Error(s(191,c));c.call(h)}function Vde(c,h){var x=c.callbacks;if(x!==null)for(c.callbacks=null,c=0;cI?I:8;var W=ie.T,ae={};ae.types=W!==null?W.types:null,ie.T=ae,X3(c,!1,h,x);try{var me=E(),Oe=ie.S;if(Oe!==null&&Oe(ae,me),me!==null&&typeof me=="object"&&typeof me.then=="function"){var $e=Sit(me,j);Q0(c,h,$e,zo(c))}else Q0(c,h,j,zo(c))}catch(He){Q0(c,h,{then:function(){},status:"rejected",reason:He},zo())}finally{oe.p=I,W!==null&&ae.types!==null&&(W.types=ae.types),ie.T=W}}function Oit(){}function W3(c,h,x,j){if(c.tag!==5)throw Error(s(476));var E=wfe(c).queue;jfe(c,E,h,je,x===null?Oit:function(){return kfe(c),x(j)})}function wfe(c){var h=c.memoizedState;if(h!==null)return h;h={memoizedState:je,baseState:je,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Sd,lastRenderedState:je},next:null};var x={};return h.next={memoizedState:x,baseState:x,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Sd,lastRenderedState:x},next:null},c.memoizedState=h,c=c.alternate,c!==null&&(c.memoizedState=h),h}function kfe(c){var h=wfe(c);h.next===null&&(h=c.alternate.memoizedState),Q0(c,h.next.queue,{},zo())}function Y3(){return ai(jb)}function Sfe(){return Gs().memoizedState}function Nfe(){return Gs().memoizedState}function Rit(c){for(var h=c.return;h!==null;){switch(h.tag){case 24:case 3:var x=zo();c=nh(x);var j=rh(h,c,x);j!==null&&(io(j,h,x),K0(j,h,x)),h={cache:k3()},c.payload=h;return}h=h.return}}function Pit(c,h,x){var j=zo();x={lane:j,revertLane:0,gesture:null,action:x,hasEagerState:!1,eagerState:null,next:null},RT(c)?Afe(h,x):(x=m3(c,h,x,j),x!==null&&(io(x,c,j),Efe(x,h,j)))}function Cfe(c,h,x){var j=zo();Q0(c,h,x,j)}function Q0(c,h,x,j){var E={lane:j,revertLane:0,gesture:null,action:x,hasEagerState:!1,eagerState:null,next:null};if(RT(c))Afe(h,E);else{var I=c.alternate;if(c.lanes===0&&(I===null||I.lanes===0)&&(I=h.lastRenderedReducer,I!==null))try{var W=h.lastRenderedState,ae=I(W,x);if(E.hasEagerState=!0,E.eagerState=ae,Mo(ae,W))return lT(c,h,E,0),Gr===null&&oT(),!1}catch{}if(x=m3(c,h,E,j),x!==null)return io(x,c,j),Efe(x,h,j),!0}return!1}function X3(c,h,x,j){if(j={lane:2,revertLane:B4(),gesture:null,action:j,hasEagerState:!1,eagerState:null,next:null},RT(c)){if(h)throw Error(s(479))}else h=m3(c,x,j,2),h!==null&&io(h,c,2)}function RT(c){var h=c.alternate;return c===In||h!==null&&h===In}function Afe(c,h){eb=ST=!0;var x=c.pending;x===null?h.next=h:(h.next=x.next,x.next=h),c.pending=h}function Efe(c,h,x){if((x&4194048)!==0){var j=h.lanes;j&=c.pendingLanes,x|=j,h.lanes=x,Ns(c,x)}}var PT={readContext:ai,use:AT,useCallback:Ds,useContext:Ds,useEffect:Ds,useImperativeHandle:Ds,useLayoutEffect:Ds,useInsertionEffect:Ds,useMemo:Ds,useReducer:Ds,useRef:Ds,useState:Ds,useDebugValue:Ds,useDeferredValue:Ds,useTransition:Ds,useSyncExternalStore:Ds,useId:Ds,useHostTransitionStatus:Ds,useFormState:Ds,useActionState:Ds,useOptimistic:Ds,useMemoCache:Ds,useCacheRefresh:Ds,useEffectEvent:Ds},Tfe={readContext:ai,use:AT,useCallback:function(c,h){return Mi().memoizedState=[c,h===void 0?null:h],c},useContext:ai,useEffect:ffe,useImperativeHandle:function(c,h,x){x=x!=null?x.concat([c]):null,TT(4194308,4,gfe.bind(null,h,c),x)},useLayoutEffect:function(c,h){return TT(4194308,4,c,h)},useInsertionEffect:function(c,h){TT(4,2,c,h)},useMemo:function(c,h){var x=Mi();h=h===void 0?null:h;var j=c();if(Qp){lr(!0);try{c()}finally{lr(!1)}}return x.memoizedState=[j,h],j},useReducer:function(c,h,x){var j=Mi();if(x!==void 0){var E=x(h);if(Qp){lr(!0);try{x(h)}finally{lr(!1)}}}else E=h;return j.memoizedState=j.baseState=E,c={pending:null,lanes:0,dispatch:null,lastRenderedReducer:c,lastRenderedState:E},j.queue=c,c=c.dispatch=Pit.bind(null,In,c),[j.memoizedState,c]},useRef:function(c){var h=Mi();return c={current:c},h.memoizedState=c},useState:function(c){c=H3(c);var h=c.queue,x=Cfe.bind(null,In,h);return h.dispatch=x,[c.memoizedState,x]},useDebugValue:q3,useDeferredValue:function(c,h){var x=Mi();return G3(x,c,h)},useTransition:function(){var c=H3(!1);return c=jfe.bind(null,In,c.queue,!0,!1),Mi().memoizedState=c,[!1,c]},useSyncExternalStore:function(c,h,x){var j=In,E=Mi();if(Fn){if(x===void 0)throw Error(s(407));x=x()}else{if(x=h(),Gr===null)throw Error(s(349));(Zn&127)!==0||Xde(j,h,x)}E.memoizedState=x;var I={value:x,getSnapshot:h};return E.queue=I,ffe(Zde.bind(null,j,I,c),[c]),j.flags|=2048,nb(9,{destroy:void 0},Qde.bind(null,j,I,x,h),null),x},useId:function(){var c=Mi(),h=Gr.identifierPrefix;if(Fn){var x=Jc,j=Zc;x=(j&~(1<<32-yn(j)-1)).toString(32)+x,h="_"+h+"R_"+x,x=NT++,0<\/script>",I=I.removeChild(I.firstChild);break;case"select":I=typeof j.is=="string"?W.createElement("select",{is:j.is}):W.createElement("select"),j.multiple?I.multiple=!0:j.size&&(I.size=j.size);break;default:I=typeof j.is=="string"?W.createElement(E,{is:j.is}):W.createElement(E)}}I[Ca]=h,I[si]=j;e:for(W=h.child;W!==null;){if(W.tag===5||W.tag===6)I.appendChild(W.stateNode);else if(W.tag!==4&&W.tag!==27&&W.child!==null){W.child.return=W,W=W.child;continue}if(W===h)break e;for(;W.sibling===null;){if(W.return===null||W.return===h)break e;W=W.return}W.sibling.return=W.return,W=W.sibling}h.stateNode=I;e:switch(ci(I,E,j),E){case"button":case"input":case"select":case"textarea":j=!!j.autoFocus;break e;case"img":j=!0;break e;default:j=!1}j&&Cd(h)}}return Jr(h),h.subtreeFlags&=-33554433,c4(h,h.type,c===null?null:c.memoizedProps,h.pendingProps,x),null;case 6:if(c&&h.stateNode!=null)c.memoizedProps!==j&&Cd(h);else{if(typeof j!="string"&&h.stateNode===null)throw Error(s(166));if(c=pe.current,Xv(h)){if(c=h.stateNode,x=h.memoizedProps,j=null,E=za,E!==null)switch(E.tag){case 27:case 5:j=E.memoizedProps}c[Ca]=h,c=!!(c.nodeValue===x||j!==null&&j.suppressHydrationWarning===!0||Zhe(c.nodeValue,x)),c||Zf(h,!0)}else c=uk(c).createTextNode(j),c[Ca]=h,h.stateNode=c}return Jr(h),null;case 31:if(x=h.memoizedState,c===null||c.memoizedState!==null){if(j=Xv(h),x!==null){if(c===null){if(!j)throw Error(s(318));if(c=h.memoizedState,c=c!==null?c.dehydrated:null,!c)throw Error(s(557));c[Ca]=h}else Up(),(h.flags&128)===0&&(h.memoizedState=null),h.flags|=4;Jr(h),c=!1}else x=y3(),c!==null&&c.memoizedState!==null&&(c.memoizedState.hydrationErrors=x),c=!0;if(!c)return h.flags&256?(_o(h),h):(_o(h),null);if((h.flags&128)!==0)throw Error(s(558))}return Jr(h),null;case 13:if(j=h.memoizedState,c===null||c.memoizedState!==null&&c.memoizedState.dehydrated!==null){if(E=Xv(h),j!==null&&j.dehydrated!==null){if(c===null){if(!E)throw Error(s(318));if(E=h.memoizedState,E=E!==null?E.dehydrated:null,!E)throw Error(s(317));E[Ca]=h}else Up(),(h.flags&128)===0&&(h.memoizedState=null),h.flags|=4;Jr(h),E=!1}else E=y3(),c!==null&&c.memoizedState!==null&&(c.memoizedState.hydrationErrors=E),E=!0;if(!E)return h.flags&256?(_o(h),h):(_o(h),null)}return _o(h),(h.flags&128)!==0?(h.lanes=x,h):(x=j!==null,c=c!==null&&c.memoizedState!==null,x&&(j=h.child,E=null,j.alternate!==null&&j.alternate.memoizedState!==null&&j.alternate.memoizedState.cachePool!==null&&(E=j.alternate.memoizedState.cachePool.pool),I=null,j.memoizedState!==null&&j.memoizedState.cachePool!==null&&(I=j.memoizedState.cachePool.pool),I!==E&&(j.flags|=2048)),x!==c&&x&&(h.child.flags|=8192),$T(h,h.updateQueue),Jr(h),null);case 4:return ge(),c===null&&V4(h.stateNode.containerInfo),h.flags|=67108864,Jr(h),null;case 10:return wd(h.type),Jr(h),null;case 19:if(M3(h),j=h.memoizedState,j===null)return Jr(h),null;if(E=(h.flags&128)!==0,I=j.rendering,I===null)if(E)J0(j,!1);else{if(Ls!==0||c!==null&&(c.flags&128)!==0)for(c=h.child;c!==null;){if(I=kT(c),I!==null){for(h.flags|=128,J0(j,!1),c=I.updateQueue,h.updateQueue=c,$T(h,c),h.subtreeFlags=0,c=x,x=h.child;x!==null;)Cde(x,c),x=x.sibling;return W0(h,oi.current&1|2),Fn&&yd(h,j.treeForkCount),h.child}c=c.sibling}j.tail!==null&&sn()>XT&&(h.flags|=128,E=!0,J0(j,!1),h.lanes=4194304)}else{if(!E)if(c=kT(I),c!==null){if(h.flags|=128,E=!0,c=c.updateQueue,h.updateQueue=c,$T(h,c),J0(j,!0),j.tail===null&&j.tailMode!=="collapsed"&&j.tailMode!=="visible"&&!I.alternate&&!Fn)return Jr(h),null}else 2*sn()-j.renderingStartTime>XT&&x!==536870912&&(h.flags|=128,E=!0,J0(j,!1),h.lanes=4194304);j.isBackwards?(I.sibling=h.child,h.child=I):(c=j.last,c!==null?c.sibling=I:h.child=I,j.last=I)}if(j.tail!==null){c=j.tail;e:{for(x=c;x!==null;){if(x.alternate!==null){x=!1;break e}x=x.sibling}x=!0}return j.rendering=c,j.tail=c.sibling,j.renderingStartTime=sn(),c.sibling=null,I=oi.current,I=E?I&1|2:I&1,j.tailMode==="visible"||j.tailMode==="collapsed"||!x||Fn?W0(h,I):(x=I,ye(ii,h),ye(oi,x),yi===null&&(yi=h)),Fn&&yd(h,j.treeForkCount),c}return Jr(h),null;case 22:case 23:return _o(h),P3(),j=h.memoizedState!==null,c!==null?c.memoizedState!==null!==j&&(h.flags|=8192):j&&(h.flags|=8192),j?(x&536870912)!==0&&(h.flags&128)===0&&(Jr(h),h.subtreeFlags&6&&(h.flags|=8192)):Jr(h),x=h.updateQueue,x!==null&&$T(h,x.retryQueue),x=null,c!==null&&c.memoizedState!==null&&c.memoizedState.cachePool!==null&&(x=c.memoizedState.cachePool.pool),j=null,h.memoizedState!==null&&h.memoizedState.cachePool!==null&&(j=h.memoizedState.cachePool.pool),j!==x&&(h.flags|=2048),c!==null&&ce(Gp),null;case 24:return x=null,c!==null&&(x=c.memoizedState.cache),h.memoizedState.cache!==x&&(h.flags|=2048),wd(ia),Jr(h),null;case 25:return null;case 30:return h.flags|=33554432,Jr(h),null}throw Error(s(156,h.tag))}function zit(c,h){switch(v3(h),h.tag){case 1:return c=h.flags,c&65536?(h.flags=c&-65537|128,h):null;case 3:return wd(ia),ge(),c=h.flags,(c&65536)!==0&&(c&128)===0?(h.flags=c&-65537|128,h):null;case 26:case 27:case 5:return be(h),null;case 31:if(h.memoizedState!==null){if(_o(h),h.alternate===null)throw Error(s(340));Up()}return c=h.flags,c&65536?(h.flags=c&-65537|128,h):null;case 13:if(_o(h),c=h.memoizedState,c!==null&&c.dehydrated!==null){if(h.alternate===null)throw Error(s(340));Up()}return c=h.flags,c&65536?(h.flags=c&-65537|128,h):null;case 19:return M3(h),c=h.flags,c&65536?(h.flags=c&-65537|128,c=h.memoizedState,c!==null&&(c.rendering=null,c.tail=null),h.flags|=4,h):null;case 4:return ge(),null;case 10:return wd(h.type),null;case 22:case 23:return _o(h),P3(),c!==null&&ce(Gp),c=h.flags,c&65536?(h.flags=c&-65537|128,h):null;case 24:return wd(ia),null;case 25:return null;default:return null}}function ehe(c,h){switch(v3(h),h.tag){case 3:wd(ia),ge();break;case 26:case 27:case 5:be(h);break;case 4:ge();break;case 31:h.memoizedState!==null&&_o(h);break;case 13:_o(h);break;case 19:M3(h);break;case 10:wd(h.type);break;case 22:case 23:_o(h),P3(),c!==null&&ce(Gp);break;case 24:wd(ia)}}function ek(c,h){try{var x=h.updateQueue,j=x!==null?x.lastEffect:null;if(j!==null){var E=j.next;x=E;do{if((x.tag&c)===c){j=void 0;var I=x.create,W=x.inst;j=I(),W.destroy=j}x=x.next}while(x!==E)}}catch(ae){Mr(h,h.return,ae)}}function oh(c,h,x){try{var j=h.updateQueue,E=j!==null?j.lastEffect:null;if(E!==null){var I=E.next;j=I;do{if((j.tag&c)===c){var W=j.inst,ae=W.destroy;if(ae!==void 0){W.destroy=void 0,E=h;var me=x,Oe=ae;try{Oe()}catch($e){Mr(E,me,$e)}}}j=j.next}while(j!==I)}}catch($e){Mr(h,h.return,$e)}}function the(c){var h=c.updateQueue;if(h!==null){var x=c.stateNode;try{Vde(h,x)}catch(j){Mr(c,c.return,j)}}}function nhe(c,h,x){x.props=Zp(c.type,c.memoizedProps),x.state=c.memoizedState;try{x.componentWillUnmount()}catch(j){Mr(c,h,j)}}function eu(c,h){try{var x=c.ref;if(x!==null){switch(c.tag){case 26:case 27:case 5:var j=c.stateNode;break;case 30:var E=c.stateNode,I=xd(c.memoizedProps,E);(E.ref===null||E.ref.name!==I)&&(E.ref=cme(I)),j=E.ref;break;case 7:if(c.stateNode===null){var W=new Bo(c);g(c.child,!1,Tot,W,void 0,void 0),c.stateNode=W}j=c.stateNode;break;default:j=c.stateNode}typeof x=="function"?c.refCleanup=x(j):x.current=j}}catch(ae){Mr(c,h,ae)}}function li(c,h){var x=c.ref,j=c.refCleanup;if(x!==null)if(typeof j=="function")try{j()}catch(E){Mr(c,h,E)}finally{c.refCleanup=null,c=c.alternate,c!=null&&(c.refCleanup=null)}else if(typeof x=="function")try{x(null)}catch(E){Mr(c,h,E)}else x.current=null}function zT(c,h){if((c.tag===5||c.tag===27||c.tag===6)&&c.alternate===null&&h!==null)for(var x=0;x title"))),ci(j,h,x),j[Ca]=c,aa(j),h=j;break e;case"link":if(I=Cme("link","href",E).get(h+(x.href||""))){for(W=0;WMn&&(W=Mn,Mn=qt,qt=W);var Te=mde(ae,qt),we=mde(ae,Mn);if(Te&&we&&(_e.rangeCount!==1||_e.anchorNode!==Te.node||_e.anchorOffset!==Te.offset||_e.focusNode!==we.node||_e.focusOffset!==we.offset)){var Me=He.createRange();Me.setStart(Te.node,Te.offset),_e.removeAllRanges(),qt>Mn?(_e.addRange(Me),_e.extend(we.node,we.offset)):(Me.setEnd(we.node,we.offset),_e.addRange(Me))}}}}for(He=[],_e=ae;_e=_e.parentNode;)_e.nodeType===1&&He.push({element:_e,left:_e.scrollLeft,top:_e.scrollTop});for(typeof ae.focus=="function"&&ae.focus(),ae=0;aex?32:x,ie.T=null,x=O4,O4=null;var I=cc,W=iu;if(Cs=0,ng=cc=null,iu=0,(gr&6)!==0)throw Error(s(331));var ae=gr;if(gr|=4,Nhe(I.current),whe(I,I.current,W,x),gr=ae,ok(0,!1),un&&typeof un.onPostCommitFiberRoot=="function")try{un.onPostCommitFiberRoot(gn,I)}catch{}return!0}finally{oe.p=E,ie.T=j,Bhe(c,h)}}function Fhe(c,h,x){h=wl(x,h),h=J3(c.stateNode,h,2),c=rh(c,h,2),c!==null&&(mn(c,2),ou(c))}function Mr(c,h,x){if(c.tag===3)Fhe(c,c,x);else for(;h!==null;){if(h.tag===3){Fhe(h,c,x);break}else if(h.tag===1){var j=h.stateNode;if(typeof h.type.getDerivedStateFromError=="function"||typeof j.componentDidCatch=="function"&&(dh===null||!dh.has(j))){c=wl(x,c),x=Lfe(2),j=rh(h,x,2),j!==null&&($fe(x,j,h,c),mn(j,2),ou(j));break}}h=h.return}}function L4(c,h,x){var j=c.pingCache;if(j===null){j=c.pingCache=new Hit;var E=new Set;j.set(h,E)}else E=j.get(h),E===void 0&&(E=new Set,j.set(h,E));E.has(x)||(A4=!0,E.add(x),c=Qit.bind(null,c,h,x),h.then(c,c))}function Qit(c,h,x){var j=c.pingCache;j!==null&&j.delete(h),c.pingedLanes|=c.suspendedLanes&x,c.warmLanes&=~x,Gr===c&&(Zn&x)===x&&((Ls===4||Ls===3&&(Zn&62914560)===Zn&&300>sn()-YT)&&(gr&2)===0?hb(c,0):WT|=x,lb===Zn&&(lb=0)),ou(c)}function Uhe(c,h){h===0&&(h=Bt()),c=Bp(c,h),c!==null&&(mn(c,h),ou(c))}function Zit(c){var h=c.memoizedState,x=0;h!==null&&(x=h.retryLane),Uhe(c,x)}function Jit(c,h){var x=0;switch(c.tag){case 31:case 13:var j=c.stateNode,E=c.memoizedState;E!==null&&(x=E.retryLane);break;case 19:j=c.stateNode;break;case 22:j=c.stateNode._retryCache;break;default:throw Error(s(314))}j!==null&&j.delete(h),Uhe(c,x)}function eot(c,h){return nn(c,h)}var pb=null,gb=null,$4=!1,rO=!1,z4=!1,hh=0;function ou(c){c!==gb&&c.next===null&&(gb===null?pb=gb=c:gb=gb.next=c),rO=!0,$4||($4=!0,not())}function ok(c,h){if(!z4&&rO){z4=!0;do for(var x=!1,j=pb;j!==null;){if(c!==0){var E=j.pendingLanes;if(E===0)var I=0;else{var W=j.suspendedLanes,ae=j.pingedLanes;I=(1<<31-yn(42|c)+1)-1,I&=E&~(W&~ae),I=I&201326741?I&201326741|1:I?I|2:0}I!==0&&(x=!0,qhe(j,I))}else I=Zn,I=fn(j,j===Gr?I:0,j.cancelPendingCommit!==null||j.timeoutHandle!==-1),(I&3)===0||At(j,I)||(x=!0,qhe(j,I));j=j.next}while(x);z4=!1}}function tot(){Hhe()}function Hhe(){rO=$4=!1;var c=0;hh!==0&&hot()&&(c=hh);for(var h=sn(),x=null,j=pb;j!==null;){var E=j.next,I=Vhe(j,h);I===0?(j.next=null,x===null?pb=E:x.next=E,E===null&&(gb=x)):(x=j,(c!==0||(I&3)!==0)&&(rO=!0)),j=E}Cs!==0&&Cs!==5||ok(c),hh!==0&&(hh=0)}function Vhe(c,h){for(var x=c.suspendedLanes,j=c.pingedLanes,E=c.expirationTimes,I=c.pendingLanes&-62914561;0ae)break;var $e=me.transferSize,He=me.initiatorType;$e&&Jhe(He)&&(me=me.responseEnd,W+=$e*(melO){qt.length=bt;break}Me=new Promise(bot.bind(Me)),qt.push(Me)}}}if(0"u"?null:document;function wme(c,h,x){var j=vb;if(j&&typeof h=="string"&&h){var E=Ii(h);E='link[rel="'+c+'"][href="'+E+'"]',typeof x=="string"&&(E+='[crossorigin="'+x+'"]'),jme.has(E)||(jme.add(E),c={rel:c,crossOrigin:x,href:h},j.querySelector(E)===null&&(h=j.createElement("link"),ci(h,"link",c),aa(h),j.head.appendChild(h)))}}function $ot(c){Ed.D(c),wme("dns-prefetch",c,null)}function zot(c,h){Ed.C(c,h),wme("preconnect",c,h)}function Bot(c,h,x){Ed.L(c,h,x);var j=vb;if(j&&c&&h){var E='link[rel="preload"][as="'+Ii(h)+'"]';h==="image"&&x&&x.imageSrcSet?(E+='[imagesrcset="'+Ii(x.imageSrcSet)+'"]',typeof x.imageSizes=="string"&&(E+='[imagesizes="'+Ii(x.imageSizes)+'"]')):E+='[href="'+Ii(c)+'"]';var I=E;switch(h){case"style":I=bb(c);break;case"script":I=yb(c)}if(!(El.has(I)||(c=A({rel:"preload",href:h==="image"&&x&&x.imageSrcSet?void 0:c,as:h},x),El.set(I,c),j.querySelector(E)!==null||h==="style"&&j.querySelector(fk(I))||h==="script"&&j.querySelector(hk(I))))){var W=j.createElement("link");ci(W,"link",c),h==="style"&&(W[Aa]=!0,W.onload=W.onerror=function(){k0(W)}),aa(W),j.head.appendChild(W)}}}function Fot(c,h){Ed.m(c,h);var x=vb;if(x&&c){var j=h&&typeof h.as=="string"?h.as:"script",E='link[rel="modulepreload"][as="'+Ii(j)+'"][href="'+Ii(c)+'"]',I=E;switch(j){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":I=yb(c)}if(!El.has(I)&&(c=A({rel:"modulepreload",href:c},h),El.set(I,c),x.querySelector(E)===null)){switch(j){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(x.querySelector(hk(I)))return}j=x.createElement("link"),ci(j,"link",c),aa(j),x.head.appendChild(j)}}}function Uot(c,h,x){Ed.S(c,h,x);var j=vb;if(j&&c){var E=Gf(j).hoistableStyles,I=bb(c);h=h||"default";var W=E.get(I);if(!W){var ae={loading:0,preload:null};if(W=j.querySelector(fk(I)))ae.loading=5;else{c=A({rel:"stylesheet",href:c,"data-precedence":h},x),(x=El.get(I))&&iF(c,x);var me=W=j.createElement("link");aa(me),ci(me,"link",c),me._p=new Promise(function(Oe,$e){me.onload=Oe,me.onerror=$e}),me.addEventListener("load",function(){ae.loading|=1}),me.addEventListener("error",function(){ae.loading|=2}),ae.loading|=4,iO(W,h,j)}W={type:"stylesheet",instance:W,count:1,state:ae},E.set(I,W)}}}function Hot(c,h){Ed.X(c,h);var x=vb;if(x&&c){var j=Gf(x).hoistableScripts,E=yb(c),I=j.get(E);I||(I=x.querySelector(hk(E)),I||(c=A({src:c,async:!0},h),(h=El.get(E))&&oF(c,h),I=x.createElement("script"),aa(I),ci(I,"link",c),x.head.appendChild(I)),I={type:"script",instance:I,count:1,state:null},j.set(E,I))}}function Vot(c,h){Ed.M(c,h);var x=vb;if(x&&c){var j=Gf(x).hoistableScripts,E=yb(c),I=j.get(E);I||(I=x.querySelector(hk(E)),I||(c=A({src:c,async:!0,type:"module"},h),(h=El.get(E))&&oF(c,h),I=x.createElement("script"),aa(I),ci(I,"link",c),x.head.appendChild(I)),I={type:"script",instance:I,count:1,state:null},j.set(E,I))}}function kme(c,h,x,j){var E=(E=pe.current)?dk(E):null;if(!E)throw Error(s(446));switch(c){case"meta":case"title":return null;case"style":return typeof x.precedence=="string"&&typeof x.href=="string"?(x=bb(x.href),h=Gf(E).hoistableStyles,j=h.get(x),j||(j={type:"style",instance:null,count:0,state:null},h.set(x,j)),j):{type:"void",instance:null,count:0,state:null};case"link":if(x.rel==="stylesheet"&&typeof x.href=="string"&&typeof x.precedence=="string"){c=bb(x.href);var I=Gf(E).hoistableStyles,W=I.get(c);if(W||(E=E.ownerDocument||E,W={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},I.set(c,W),(I=E.querySelector(fk(c)))?I._p||(W.instance=I,W.state.loading=5):(I=El.get(c),I||(I={rel:"preload",as:"style",href:x.href,crossOrigin:x.crossOrigin,integrity:x.integrity,media:x.media,hrefLang:x.hrefLang,referrerPolicy:x.referrerPolicy},El.set(c,I)),Kot(E,c,I,W.state))),h&&j===null)throw Error(s(528,""));return W}if(h&&j!==null)throw Error(s(529,""));return null;case"script":return h=x.async,x=x.src,typeof x=="string"&&h&&typeof h!="function"&&typeof h!="symbol"?(x=yb(x),h=Gf(E).hoistableScripts,j=h.get(x),j||(j={type:"script",instance:null,count:0,state:null},h.set(x,j)),j):{type:"void",instance:null,count:0,state:null};default:throw Error(s(444,c))}}function bb(c){return'href="'+Ii(c)+'"'}function fk(c){return'link[rel="stylesheet"]['+c+"]"}function Sme(c){return A({},c,{"data-precedence":c.precedence,precedence:null})}function Kot(c,h,x,j){if(h=c.querySelector('link[rel="preload"][as="style"]['+h+"]")){if(h[Aa]!==!0){j.loading=1;return}}else h=c.createElement("link"),h[Aa]=!0,h.onload=h.onerror=k0.bind(null,h),ci(h,"link",x),aa(h),c.head.appendChild(h);j.preload=h,h.addEventListener("load",function(){return j.loading|=1}),h.addEventListener("error",function(){return j.loading|=2})}function yb(c){return'[src="'+Ii(c)+'"]'}function hk(c){return"script[async]"+c}function Nme(c,h,x){if(h.count++,h.instance===null)switch(h.type){case"style":var j=c.querySelector('style[data-href~="'+Ii(x.href)+'"]');if(j)return h.instance=j,aa(j),j;var E=A({},x,{"data-href":x.href,"data-precedence":x.precedence,href:null,precedence:null});return j=(c.ownerDocument||c).createElement("style"),aa(j),ci(j,"style",E),iO(j,x.precedence,c),h.instance=j;case"stylesheet":E=bb(x.href);var I=c.querySelector(fk(E));if(I)return h.state.loading|=4,h.instance=I,aa(I),I;j=Sme(x),(E=El.get(E))&&iF(j,E),I=(c.ownerDocument||c).createElement("link"),aa(I);var W=I;return W._p=new Promise(function(ae,me){W.onload=ae,W.onerror=me}),ci(I,"link",j),h.state.loading|=4,iO(I,x.precedence,c),h.instance=I;case"script":return I=yb(x.src),(E=c.querySelector(hk(I)))?(h.instance=E,aa(E),E):(j=x,(E=El.get(I))&&(j=A({},x),oF(j,E)),c=c.ownerDocument||c,E=c.createElement("script"),aa(E),ci(E,"link",j),c.head.appendChild(E),h.instance=E);case"void":return null;default:throw Error(s(443,h.type))}else h.type==="stylesheet"&&(h.state.loading&4)===0&&(j=h.instance,h.state.loading|=4,iO(j,x.precedence,c));return h.instance}function iO(c,h,x){for(var j=x.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),E=j.length?j[j.length-1]:null,I=E,W=0;W title"):null)}function qot(c,h,x){if(x===1||h.itemProp!=null)return!1;switch(c){case"meta":case"title":return!0;case"style":if(typeof h.precedence!="string"||typeof h.href!="string"||h.href==="")break;return!0;case"link":if(typeof h.rel!="string"||typeof h.href!="string"||h.href===""||h.onLoad||h.onError)break;return h.rel==="stylesheet"?(c=h.disabled,typeof h.precedence=="string"&&c==null):!0;case"script":if(h.async&&typeof h.async!="function"&&typeof h.async!="symbol"&&!h.onLoad&&!h.onError&&h.src&&typeof h.src=="string")return!0}return!1}function Ame(c,h){return c==="img"&&h.src!=null&&h.src!==""&&h.onLoad==null&&h.loading!=="lazy"}function Eme(c){return!(c.type==="stylesheet"&&(c.state.loading&3)===0)}function Tme(c){return(c.width||100)*(c.height||100)*(typeof devicePixelRatio=="number"?devicePixelRatio:1)*.25}function Ome(c,h){typeof h.decode=="function"&&(c.imgCount++,h.complete||(c.imgBytes+=Tme(h),c.suspenseyImages.push(h)),c=Yot.bind(c),h.decode().then(c,c))}function Got(c,h,x,j){if(x.type==="stylesheet"&&(typeof j.media!="string"||matchMedia(j.media).matches!==!1)&&(x.state.loading&4)===0){if(x.instance===null){var E=bb(j.href),I=h.querySelector(fk(E));if(I){h=I._p,h!==null&&typeof h=="object"&&typeof h.then=="function"&&(c.count++,c=mk.bind(c),h.then(c,c)),x.state.loading|=4,x.instance=I,aa(I);return}I=h.ownerDocument||h,j=Sme(j),(E=El.get(E))&&iF(j,E),I=I.createElement("link"),aa(I);var W=I;W._p=new Promise(function(ae,me){W.onload=ae,W.onerror=me}),ci(I,"link",j),x.instance=I}c.stylesheets===null&&(c.stylesheets=new Map),c.stylesheets.set(x,h),(h=x.state.preload)&&(x.state.loading&3)===0&&(c.count++,x=mk.bind(c),h.addEventListener("load",x),h.addEventListener("error",x))}}var lO=0;function Wot(c,h){return c.stylesheets&&c.count===0&&uO(c,c.stylesheets),0lO?50:800)+h);return c.unsuspend=x,function(){c.unsuspend=null,clearTimeout(j),clearTimeout(E)}}:null}function Rme(c){if(c.count===0&&(c.imgCount===0||!c.waitingForImages)){if(c.stylesheets)uO(c,c.stylesheets);else if(c.unsuspend){var h=c.unsuspend;c.unsuspend=null,h()}}}function mk(){this.count--,Rme(this)}function Yot(){this.imgCount--,Rme(this)}var cO=null;function uO(c,h){c.stylesheets=null,c.unsuspend!==null&&(c.count++,cO=new Map,h.forEach(Xot,c),cO=null,mk.call(c))}function Xot(c,h){if(!(h.state.loading&4)){var x=cO.get(c);if(x)var j=x.get(null);else{x=new Map,cO.set(c,x);for(var E=c.querySelectorAll("link[data-precedence],style[data-precedence]"),I=0;I"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),bO.exports=Qme(),bO.exports}var zn=Zme();const CF=Td({__proto__:null},[zn]);var p=sg();const wO=Td({__proto__:null,default:dc(p)},[p]);function bk(){return typeof window<"u"}function Ha(e){return kO(e)?(e.nodeName||"").toLowerCase():"#document"}function vr(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function lu(e){var t;return(t=(kO(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function kO(e){return bk()?e instanceof Node||e instanceof vr(e).Node:!1}function Un(e){return bk()?e instanceof Element||e instanceof vr(e).Element:!1}function br(e){return bk()?e instanceof HTMLElement||e instanceof vr(e).HTMLElement:!1}function ag(e){return!bk()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof vr(e).ShadowRoot}function Cb(e){const{overflow:t,overflowX:n,overflowY:s,display:i}=Li(e);return/auto|scroll|overlay|hidden|clip/.test(t+s+n)&&i!=="inline"&&i!=="contents"}function Jme(e){return/^(table|td|th)$/.test(Ha(e))}function yk(e){try{if(e.matches(":popover-open"))return!0}catch{}try{return e.matches(":modal")}catch{return!1}}const epe=/transform|translate|scale|rotate|perspective|filter/,tpe=/paint|layout|strict|content/,yh=e=>!!e&&e!=="none";let SO;function NO(e){const t=Un(e)?Li(e):e;return yh(t.transform)||yh(t.translate)||yh(t.scale)||yh(t.rotate)||yh(t.perspective)||!CO()&&(yh(t.backdropFilter)||yh(t.filter))||epe.test(t.willChange||"")||tpe.test(t.contain||"")}function npe(e){let t=Pd(e);for(;br(t)&&!Rd(t);){if(NO(t))return t;if(yk(t))return null;t=Pd(t)}return null}function CO(){return SO==null&&(SO=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),SO}function Rd(e){return/^(html|body|#document)$/.test(Ha(e))}function Li(e){return vr(e).getComputedStyle(e)}function jk(e){return Un(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Pd(e){if(Ha(e)==="html")return e;const t=e.assignedSlot||e.parentNode||ag(e)&&e.host||lu(e);return ag(t)?t.host:t}function AF(e){const t=Pd(e);return Rd(t)?(e.ownerDocument||e).body:br(t)&&Cb(t)?t:AF(t)}function ig(e,t,n){var s;t===void 0&&(t=[]),n===void 0&&(n=!0);const i=AF(e),o=i===((s=e.ownerDocument)==null?void 0:s.body),l=vr(i);if(o){const u=AO(l);return t.concat(l,l.visualViewport||[],Cb(i)?i:[],u&&n?ig(u):[])}else return t.concat(i,ig(i,[],n))}function AO(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}const EO={...wO},EF={};function $s(e,t){const n=p.useRef(EF);return n.current===EF&&(n.current=e(t)),n}const TO=EO.useInsertionEffect,rpe=TO&&TO!==EO.useLayoutEffect?TO:e=>e();function qe(e){const t=$s(spe).current;return t.next=e,rpe(t.effect),t.trampoline}function spe(){const e={next:void 0,callback:ape,trampoline:(...t)=>e.callback?.(...t),effect:()=>{e.callback=e.next}};return e}function ape(){}const Ge=typeof document<"u"?p.useLayoutEffect:()=>{};function OO(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}const RO={};function oo(e,t,n,s,i){if(!n&&!s&&!i&&!e)return wk(t);let o=wk(e);return t&&(o=Ab(o,t)),n&&(o=Ab(o,n)),s&&(o=Ab(o,s)),i&&(o=Ab(o,i)),o}function ipe(e){if(e.length===0)return RO;if(e.length===1)return wk(e[0]);let t=wk(e[0]);for(let n=1;n=65&&i<=90&&(typeof t=="function"||typeof t>"u")}function PO(e){return typeof e=="function"}function OF(e,t){return PO(e)?e(t):e??RO}function cpe(e,t){return t?e?(...n)=>{const s=n[0];if(IF(s)){const o=s;kk(o);const l=t(...n);return o.baseUIHandlerPrevented||e?.(...n),l}const i=t(...n);return e?.(...n),i}:RF(t):e}function RF(e){return e&&((...t)=>{const n=t[0];return IF(n)&&kk(n),e(...t)})}function kk(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function PF(e,t){return t?e?t+" "+e:t:e}function IF(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}function upe(e,t){return function(s,...i){const o=new URL(e);return o.searchParams.set("code",s.toString()),i.forEach(l=>o.searchParams.append("args[]",l)),`${t} error #${s}; visit ${o} for the full message.`}}const Vn=upe("https://base-ui.com/production-error","Base UI"),MF=p.createContext(void 0);function _F(e=!1){const t=p.useContext(MF);if(t===void 0&&!e)throw new Error(Vn(16));return t}function dpe(e){const{focusableWhenDisabled:t,disabled:n,composite:s=!1,tabIndex:i=0,isNativeButton:o}=e,l=s&&t!==!1,u=s&&t===!1;return{props:p.useMemo(()=>{const f={onKeyDown(m){n&&t&&m.key!=="Tab"&&m.preventDefault()}};return s||(f.tabIndex=i,!o&&n&&(f.tabIndex=t?i:-1)),(o&&(t||l)||!o&&n)&&(f["aria-disabled"]=n),o&&(!t||u)&&(f.disabled=n),f},[s,n,t,l,u,o,i])}}function _n(e){return e?.ownerDocument||document}function og(e,t,{detail:n=0}={}){e.dispatchEvent(new(vr(e)).PointerEvent("click",{bubbles:!0,cancelable:!0,composed:!0,detail:n,shiftKey:t.shiftKey,ctrlKey:t.ctrlKey,altKey:t.altKey,metaKey:t.metaKey}))}function $i(e={}){const{disabled:t=!1,focusableWhenDisabled:n,tabIndex:s=0,native:i=!0,composite:o}=e,l=p.useRef(null),u=_F(!0),d=o??u!==void 0,{props:f}=dpe({focusableWhenDisabled:n,disabled:t,composite:d,tabIndex:s,isNativeButton:i}),m=p.useCallback(()=>{const b=l.current;IO(b)&&d&&t&&f.disabled===void 0&&b.disabled&&(b.disabled=!1)},[t,f.disabled,d]);Ge(m,[m]);const g=p.useCallback((b={})=>{const{onClick:y,onMouseDown:k,onKeyUp:w,onKeyDown:S,onPointerDown:N,...C}=b;return oo({onClick(T){if(t){T.preventDefault();return}y?.(T)},onMouseDown(T){t||k?.(T)},onKeyDown(T){if(t||(kk(T),S?.(T),T.baseUIHandlerPrevented))return;const P=T.target===T.currentTarget,O=T.currentTarget,A=IO(O),R=!i&&fpe(O),M=P&&(i?A:!R),_=T.key==="Enter",L=T.key===" ",$=O.getAttribute("role"),D=$?.startsWith("menuitem")||$==="option"||$==="gridcell";if(P&&d&&L){if(T.defaultPrevented&&D)return;T.preventDefault(),(!i||A)&&(T.preventBaseUIHandler(),og(O,T));return}if(!M||i||!L&&!_){P&&R&&L&&T.preventDefault();return}T.defaultPrevented||(T.preventDefault(),_&&(T.preventBaseUIHandler(),og(O,T)))},onKeyUp(T){if(!t){if(kk(T),w?.(T),T.target===T.currentTarget&&i&&d&&IO(T.currentTarget)&&T.key===" "){T.preventDefault();return}T.baseUIHandlerPrevented||T.target===T.currentTarget&&!i&&!d&&!T.defaultPrevented&&T.key===" "&&(T.preventBaseUIHandler(),og(T.currentTarget,T))}},onPointerDown(T){if(t){T.preventDefault();return}N?.(T)}},i?{type:"button"}:{role:"button"},f,C)},[t,f,d,i]),v=qe(b=>{l.current=b,m()});return{getButtonProps:g,buttonRef:v}}function IO(e){return br(e)&&e.tagName==="BUTTON"}function fpe(e){return br(e)&&e.tagName==="A"&&!!e.href}function lo(e,t,n,s){const i=$s(DF).current;return mpe(i,e,t,n,s)&&LF(i,[e,t,n,s]),i.callback}function hpe(e){const t=$s(DF).current;return ppe(t,e)&&LF(t,e),t.callback}function DF(){return{callback:null,cleanup:null,refs:[]}}function mpe(e,t,n,s,i){return e.refs[0]!==t||e.refs[1]!==n||e.refs[2]!==s||e.refs[3]!==i}function ppe(e,t){return e.refs.length!==t.length||e.refs.some((n,s)=>n!==t[s])}function LF(e,t){if(e.refs=t,t.every(n=>n==null)){e.callback=null;return}e.callback=n=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),n!=null){const s=Array(t.length).fill(null);for(let i=0;i{for(let i=0;i=e}function $F(e){if(!p.isValidElement(e))return null;const t=e,n=t.props;return(MO(19)?n?.ref:t.ref)??null}function Xn(){}const co=Object.freeze([]),yr=Object.freeze({});function xpe(e,t){const n={};for(const s in e){const i=e[s];if(t?.hasOwnProperty(s)){const o=t[s](i);o!=null&&Object.assign(n,o);continue}i===!0?n[`data-${s.toLowerCase()}`]="":i&&(n[`data-${s.toLowerCase()}`]=i.toString())}return n}function vpe(e,t){return typeof e=="function"?e(t):e}function zF(e,t){return typeof e=="function"?e(t):e}function Kt(e,t,n={}){let s=t.render;n.enabled!==!1&&(s=wpe(s));const i=bpe(t,n,s);if(n.enabled===!1)return null;const o=n.state??yr;return kpe(e,s,i,o)}function bpe(e,t,n){const{className:s,style:i}=e,{state:o=yr,ref:l,props:u,stateAttributesMapping:d,enabled:f=!0}=t,m=f?vpe(s,o):void 0,g=f?zF(i,o):void 0,v=f?xpe(o,d):yr,b=f&&u?ype(u):void 0,y=f?OO(v,b)??{}:yr;return typeof document<"u"&&(f?Array.isArray(l)?y.ref=hpe([y.ref,$F(n),...l]):y.ref=lo(y.ref,$F(n),l):lo(null,null)),f?(m!==void 0&&(y.className=PF(y.className,m)),g!==void 0&&(y.style=OO(y.style,g)),y):yr}function ype(e){return Array.isArray(e)?ipe(e):oo(void 0,e)}const jpe=Symbol.for("react.lazy");function wpe(e){if(e?.$$typeof!==jpe)return e;const t=p.Children.toArray(e)[0];return p.isValidElement(t)?t:e}function kpe(e,t,n,s){if(t){if(typeof t=="function")return t(n,s);const i=oo(n,t.props);return i.ref=n.ref,p.cloneElement(t,i)}if(e&&typeof e=="string")return Spe(e,n);throw new Error(Vn(8))}function Spe(e,t){return e==="button"?p.createElement("button",{type:"button",...t,key:t.key}):e==="img"?p.createElement("img",{alt:"",...t,key:t.key}):p.createElement(e,t)}const Npe=p.forwardRef(function(t,n){const{render:s,className:i,disabled:o=!1,focusableWhenDisabled:l=!1,nativeButton:u=!0,style:d,...f}=t,{getButtonProps:m,buttonRef:g}=$i({disabled:o,focusableWhenDisabled:l,native:u});return Kt("button",t,{state:{disabled:o},ref:[n,g],props:[f,m]})});function BF(e){var t,n,s="";if(typeof e=="string"||typeof e=="number")s+=e;else if(typeof e=="object")if(Array.isArray(e)){var i=e.length;for(t=0;ttypeof e=="boolean"?`${e}`:e===0?"0":e,HF=FF,jh=(e,t)=>n=>{var s;if(t?.variants==null)return HF(e,n?.class,n?.className);const{variants:i,defaultVariants:o}=t,l=Object.keys(i).map(f=>{const m=n?.[f],g=o?.[f];if(m===null)return null;const v=UF(m)||UF(g);return i[f][v]}),u=n&&Object.entries(n).reduce((f,m)=>{let[g,v]=m;return v===void 0||(f[g]=v),f},{}),d=t==null||(s=t.compoundVariants)===null||s===void 0?void 0:s.reduce((f,m)=>{let{class:g,className:v,...b}=m;return Object.entries(b).every(y=>{let[k,w]=y;return Array.isArray(w)?w.includes({...o,...u}[k]):{...o,...u}[k]===w})?[...f,g,v]:f},[]);return HF(e,l,d,n?.class,n?.className)},Cpe=(e,t)=>{const n=new Array(e.length+t.length);for(let s=0;s({classGroupId:e,validator:t}),VF=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),Sk="-",KF=[],Epe="arbitrary..",Tpe=e=>{const t=Rpe(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:s}=e;return{getClassGroupId:l=>{if(l.startsWith("[")&&l.endsWith("]"))return Ope(l);const u=l.split(Sk),d=u[0]===""&&u.length>1?1:0;return qF(u,d,t)},getConflictingClassGroupIds:(l,u)=>{if(u){const d=s[l],f=n[l];return d?f?Cpe(f,d):d:f||KF}return n[l]||KF}}},qF=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;const i=e[t],o=n.nextPart.get(i);if(o){const f=qF(e,t+1,o);if(f)return f}const l=n.validators;if(l===null)return;const u=t===0?e.join(Sk):e.slice(t).join(Sk),d=l.length;for(let f=0;fe.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const t=e.slice(1,-1),n=t.indexOf(":"),s=t.slice(0,n);return s?Epe+s:void 0})(),Rpe=e=>{const{theme:t,classGroups:n}=e;return Ppe(n,t)},Ppe=(e,t)=>{const n=VF();for(const s in e){const i=e[s];_O(i,n,s,t)}return n},_O=(e,t,n,s)=>{const i=e.length;for(let o=0;o{if(typeof e=="string"){Mpe(e,t,n);return}if(typeof e=="function"){_pe(e,t,n,s);return}Dpe(e,t,n,s)},Mpe=(e,t,n)=>{const s=e===""?t:GF(t,e);s.classGroupId=n},_pe=(e,t,n,s)=>{if(Lpe(e)){_O(e(s),t,n,s);return}t.validators===null&&(t.validators=[]),t.validators.push(Ape(n,e))},Dpe=(e,t,n,s)=>{const i=Object.entries(e),o=i.length;for(let l=0;l{let n=e;const s=t.split(Sk),i=s.length;for(let o=0;o"isThemeGetter"in e&&e.isThemeGetter===!0,$pe=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,n=Object.create(null),s=Object.create(null);const i=(o,l)=>{n[o]=l,t++,t>e&&(t=0,s=n,n=Object.create(null))};return{get(o){let l=n[o];if(l!==void 0)return l;if((l=s[o])!==void 0)return i(o,l),l},set(o,l){o in n?n[o]=l:i(o,l)}}},DO="!",WF=":",zpe=[],YF=(e,t,n,s,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:s,isExternal:i}),Bpe=e=>{const{prefix:t,experimentalParseClassName:n}=e;let s=i=>{const o=[];let l=0,u=0,d=0,f;const m=i.length;for(let k=0;kd?f-d:void 0;return YF(o,b,v,y)};if(t){const i=t+WF,o=s;s=l=>l.startsWith(i)?o(l.slice(i.length)):YF(zpe,!1,l,void 0,!0)}if(n){const i=s;s=o=>n({className:o,parseClassName:i})}return s},Fpe=e=>{const t=new Map;return e.orderSensitiveModifiers.forEach((n,s)=>{t.set(n,1e6+s)}),n=>{const s=[];let i=[];for(let o=0;o0&&(i.sort(),s.push(...i),i=[]),s.push(l)):i.push(l)}return i.length>0&&(i.sort(),s.push(...i)),s}},Upe=e=>({cache:$pe(e.cacheSize),parseClassName:Bpe(e),sortModifiers:Fpe(e),postfixLookupClassGroupIds:Hpe(e),...Tpe(e)}),Hpe=e=>{const t=Object.create(null),n=e.postfixLookupClassGroups;if(n)for(let s=0;s{const{parseClassName:n,getClassGroupId:s,getConflictingClassGroupIds:i,sortModifiers:o,postfixLookupClassGroupIds:l}=t,u=[],d=e.trim().split(Vpe);let f="";for(let m=d.length-1;m>=0;m-=1){const g=d[m],{isExternal:v,modifiers:b,hasImportantModifier:y,baseClassName:k,maybePostfixModifierPosition:w}=n(g);if(v){f=g+(f.length>0?" "+f:f);continue}let S=!!w,N;if(S){const A=k.substring(0,w);N=s(A);const R=N&&l[N]?s(k):void 0;R&&R!==N&&(N=R,S=!1)}else N=s(k);if(!N){if(!S){f=g+(f.length>0?" "+f:f);continue}if(N=s(k),!N){f=g+(f.length>0?" "+f:f);continue}S=!1}const C=b.length===0?"":b.length===1?b[0]:o(b).join(":"),T=y?C+DO:C,P=T+N;if(u.indexOf(P)>-1)continue;u.push(P);const O=i(N,S);for(let A=0;A0?" "+f:f)}return f},qpe=(...e)=>{let t=0,n,s,i="";for(;t{if(typeof e=="string")return e;let t,n="";for(let s=0;s{let n,s,i,o;const l=d=>{const f=t.reduce((m,g)=>g(m),e());return n=Upe(f),s=n.cache.get,i=n.cache.set,o=u,u(d)},u=d=>{const f=s(d);if(f)return f;const m=Kpe(d,n);return i(d,m),m};return o=l,(...d)=>o(qpe(...d))},Wpe=[],ua=e=>{const t=n=>n[e]||Wpe;return t.isThemeGetter=!0,t.themeKey=e,t},QF=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,ZF=/^\((?:(\w[\w-]*):)?(.+)\)$/i,Ype=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,Xpe=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Qpe=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Zpe=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix|color|light-dark)\(.+\)$/,Jpe=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,ege=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Id=e=>Ype.test(e),Bn=e=>!!e&&!Number.isNaN(Number(e)),fc=e=>!!e&&Number.isInteger(Number(e)),LO=e=>e.endsWith("%")&&Bn(e.slice(0,-1)),cu=e=>Xpe.test(e),JF=()=>!0,tge=e=>Qpe.test(e)&&!Zpe.test(e),$O=()=>!1,nge=e=>Jpe.test(e),rge=e=>ege.test(e),sge=e=>!$t(e)&&!Ft(e),age=e=>e.startsWith("@container")&&(e[10]==="/"&&e[11]!==void 0||e[11]==="s"&&e[16]!==void 0&&e.startsWith("-size/",10)||e[11]==="n"&&e[18]!==void 0&&e.startsWith("-normal/",10)),ige=e=>Md(e,aU,$O),$t=e=>QF.test(e),wh=e=>Md(e,iU,tge),eU=e=>Md(e,mge,Bn),oge=e=>Md(e,lU,JF),lge=e=>Md(e,oU,$O),tU=e=>Md(e,rU,$O),cge=e=>Md(e,sU,rge),Nk=e=>Md(e,cU,nge),Ft=e=>ZF.test(e),Eb=e=>kh(e,iU),uge=e=>kh(e,oU),nU=e=>kh(e,rU),dge=e=>kh(e,aU),fge=e=>kh(e,sU),Ck=e=>kh(e,cU,!0),hge=e=>kh(e,lU,!0),Md=(e,t,n)=>{const s=QF.exec(e);return s?s[1]?t(s[1]):n(s[2]):!1},kh=(e,t,n=!1)=>{const s=ZF.exec(e);return s?s[1]?t(s[1]):n:!1},rU=e=>e==="position"||e==="percentage",sU=e=>e==="image"||e==="url",aU=e=>e==="length"||e==="size"||e==="bg-size",iU=e=>e==="length",mge=e=>e==="number",oU=e=>e==="family-name",lU=e=>e==="number"||e==="weight",cU=e=>e==="shadow",pge=Gpe(()=>{const e=ua("color"),t=ua("font"),n=ua("text"),s=ua("font-weight"),i=ua("tracking"),o=ua("leading"),l=ua("breakpoint"),u=ua("container"),d=ua("spacing"),f=ua("radius"),m=ua("shadow"),g=ua("inset-shadow"),v=ua("text-shadow"),b=ua("drop-shadow"),y=ua("blur"),k=ua("perspective"),w=ua("aspect"),S=ua("ease"),N=ua("animate"),C=()=>["auto","avoid","all","avoid-page","page","left","right","column"],T=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],P=()=>[...T(),Ft,$t],O=()=>["auto","hidden","clip","visible","scroll"],A=()=>["auto","contain","none"],R=()=>[Ft,$t,d],M=()=>[Id,"full","auto",...R()],_=()=>[fc,"none","subgrid",Ft,$t],L=()=>["auto",{span:["full",fc,Ft,$t]},fc,Ft,$t],$=()=>[fc,"auto",Ft,$t],D=()=>["auto","min","max","fr",Ft,$t],F=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],V=()=>["start","end","center","stretch","center-safe","end-safe"],q=()=>["auto",...R()],Q=()=>[Id,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...R()],X=()=>[u,Id,"screen","full","dvw","lvw","svw","min","max","fit",...R()],U=()=>[Id,"screen","full","lh","dvh","lvh","svh","min","max","fit",...R()],z=()=>[e,Ft,$t],K=()=>[...T(),nU,tU,{position:[Ft,$t]}],J=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ee=()=>["auto","cover","contain",dge,ige,{size:[Ft,$t]}],H=()=>[LO,Eb,wh],G=()=>["","none","full",f,Ft,$t],Y=()=>["",Bn,Eb,wh],se=()=>["solid","dashed","dotted","double"],re=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],ne=()=>[Bn,LO,nU,tU],de=()=>["","none",y,Ft,$t],ie=()=>["none",Bn,Ft,$t],oe=()=>["none",Bn,Ft,$t],je=()=>[Bn,Ft,$t],te=()=>[Id,"full",...R()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[cu],breakpoint:[cu],color:[JF],container:[cu],"drop-shadow":[cu],ease:["in","out","in-out"],font:[sge],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[cu],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[cu],shadow:[cu],spacing:["px",Bn],text:[cu],"text-shadow":[cu],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Id,$t,Ft,w]}],container:["container"],"container-type":[{"@container":["","normal","size",Ft,$t]}],"container-named":[age],columns:[{columns:[Bn,"auto",$t,Ft,u]}],"break-after":[{"break-after":C()}],"break-before":[{"break-before":C()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:P()}],overflow:[{overflow:O()}],"overflow-x":[{"overflow-x":O()}],"overflow-y":[{"overflow-y":O()}],overscroll:[{overscroll:A()}],"overscroll-x":[{"overscroll-x":A()}],"overscroll-y":[{"overscroll-y":A()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:M()}],"inset-x":[{"inset-x":M()}],"inset-y":[{"inset-y":M()}],start:[{"inset-s":M(),start:M()}],end:[{"inset-e":M(),end:M()}],"inset-bs":[{"inset-bs":M()}],"inset-be":[{"inset-be":M()}],top:[{top:M()}],right:[{right:M()}],bottom:[{bottom:M()}],left:[{left:M()}],visibility:["visible","invisible","collapse"],z:[{z:[fc,"auto",Ft,$t]}],basis:[{basis:[Id,"full","auto",u,...R()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Bn,Id,"auto","initial","none",$t]}],grow:[{grow:["",Bn,Ft,$t]}],shrink:[{shrink:["",Bn,Ft,$t]}],order:[{order:[fc,"first","last","none",Ft,$t]}],"grid-cols":[{"grid-cols":_()}],"col-start-end":[{col:L()}],"col-start":[{"col-start":$()}],"col-end":[{"col-end":$()}],"grid-rows":[{"grid-rows":_()}],"row-start-end":[{row:L()}],"row-start":[{"row-start":$()}],"row-end":[{"row-end":$()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":D()}],"auto-rows":[{"auto-rows":D()}],gap:[{gap:R()}],"gap-x":[{"gap-x":R()}],"gap-y":[{"gap-y":R()}],"justify-content":[{justify:[...F(),"normal"]}],"justify-items":[{"justify-items":[...V(),"normal"]}],"justify-self":[{"justify-self":["auto",...V()]}],"align-content":[{content:["normal",...F()]}],"align-items":[{items:[...V(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...V(),{baseline:["","last"]}]}],"place-content":[{"place-content":F()}],"place-items":[{"place-items":[...V(),"baseline"]}],"place-self":[{"place-self":["auto",...V()]}],p:[{p:R()}],px:[{px:R()}],py:[{py:R()}],ps:[{ps:R()}],pe:[{pe:R()}],pbs:[{pbs:R()}],pbe:[{pbe:R()}],pt:[{pt:R()}],pr:[{pr:R()}],pb:[{pb:R()}],pl:[{pl:R()}],m:[{m:q()}],mx:[{mx:q()}],my:[{my:q()}],ms:[{ms:q()}],me:[{me:q()}],mbs:[{mbs:q()}],mbe:[{mbe:q()}],mt:[{mt:q()}],mr:[{mr:q()}],mb:[{mb:q()}],ml:[{ml:q()}],"space-x":[{"space-x":R()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":R()}],"space-y-reverse":["space-y-reverse"],size:[{size:Q()}],"inline-size":[{inline:["auto",...X()]}],"min-inline-size":[{"min-inline":["auto",...X()]}],"max-inline-size":[{"max-inline":["none",...X()]}],"block-size":[{block:["auto",...U()]}],"min-block-size":[{"min-block":["auto",...U()]}],"max-block-size":[{"max-block":["none",...U()]}],w:[{w:[u,"screen",...Q()]}],"min-w":[{"min-w":[u,"screen","none",...Q()]}],"max-w":[{"max-w":[u,"screen","none","prose",{screen:[l]},...Q()]}],h:[{h:["screen","lh",...Q()]}],"min-h":[{"min-h":["screen","lh","none",...Q()]}],"max-h":[{"max-h":["screen","lh","none",...Q()]}],"font-size":[{text:["base",n,Eb,wh]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[s,hge,oge]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",LO,$t]}],"font-family":[{font:[uge,lge,t]}],"font-features":[{"font-features":[$t]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[i,Ft,$t]}],"line-clamp":[{"line-clamp":[Bn,"none",Ft,eU]}],leading:[{leading:["none",o,...R()]}],"list-image":[{"list-image":["none",Ft,$t]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Ft,$t]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:z()}],"text-color":[{text:z()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...se(),"wavy"]}],"text-decoration-thickness":[{decoration:[Bn,"from-font","auto",Ft,wh]}],"text-decoration-color":[{decoration:z()}],"underline-offset":[{"underline-offset":[Bn,"auto",Ft,$t]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:R()}],"tab-size":[{tab:[fc,Ft,$t]}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Ft,$t]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Ft,$t]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:K()}],"bg-repeat":[{bg:J()}],"bg-size":[{bg:ee()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},fc,Ft,$t],radial:["",Ft,$t],conic:["",fc,Ft,$t]},fge,cge]}],"bg-color":[{bg:z()}],"gradient-from-pos":[{from:H()}],"gradient-via-pos":[{via:H()}],"gradient-to-pos":[{to:H()}],"gradient-from":[{from:z()}],"gradient-via":[{via:z()}],"gradient-to":[{to:z()}],rounded:[{rounded:G()}],"rounded-s":[{"rounded-s":G()}],"rounded-e":[{"rounded-e":G()}],"rounded-t":[{"rounded-t":G()}],"rounded-r":[{"rounded-r":G()}],"rounded-b":[{"rounded-b":G()}],"rounded-l":[{"rounded-l":G()}],"rounded-ss":[{"rounded-ss":G()}],"rounded-se":[{"rounded-se":G()}],"rounded-ee":[{"rounded-ee":G()}],"rounded-es":[{"rounded-es":G()}],"rounded-tl":[{"rounded-tl":G()}],"rounded-tr":[{"rounded-tr":G()}],"rounded-br":[{"rounded-br":G()}],"rounded-bl":[{"rounded-bl":G()}],"border-w":[{border:Y()}],"border-w-x":[{"border-x":Y()}],"border-w-y":[{"border-y":Y()}],"border-w-s":[{"border-s":Y()}],"border-w-e":[{"border-e":Y()}],"border-w-bs":[{"border-bs":Y()}],"border-w-be":[{"border-be":Y()}],"border-w-t":[{"border-t":Y()}],"border-w-r":[{"border-r":Y()}],"border-w-b":[{"border-b":Y()}],"border-w-l":[{"border-l":Y()}],"divide-x":[{"divide-x":Y()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":Y()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...se(),"hidden","none"]}],"divide-style":[{divide:[...se(),"hidden","none"]}],"border-color":[{border:z()}],"border-color-x":[{"border-x":z()}],"border-color-y":[{"border-y":z()}],"border-color-s":[{"border-s":z()}],"border-color-e":[{"border-e":z()}],"border-color-bs":[{"border-bs":z()}],"border-color-be":[{"border-be":z()}],"border-color-t":[{"border-t":z()}],"border-color-r":[{"border-r":z()}],"border-color-b":[{"border-b":z()}],"border-color-l":[{"border-l":z()}],"divide-color":[{divide:z()}],"outline-style":[{outline:[...se(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Bn,Ft,$t]}],"outline-w":[{outline:["",Bn,Eb,wh]}],"outline-color":[{outline:z()}],shadow:[{shadow:["","inner","none",m,Ck,Nk]}],"shadow-color":[{shadow:z()}],"inset-shadow":[{"inset-shadow":["none",g,Ck,Nk]}],"inset-shadow-color":[{"inset-shadow":z()}],"ring-w":[{ring:Y()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:z()}],"ring-offset-w":[{"ring-offset":[Bn,wh]}],"ring-offset-color":[{"ring-offset":z()}],"inset-ring-w":[{"inset-ring":Y()}],"inset-ring-color":[{"inset-ring":z()}],"text-shadow":[{"text-shadow":["none",v,Ck,Nk]}],"text-shadow-color":[{"text-shadow":z()}],opacity:[{opacity:[Bn,Ft,$t]}],"mix-blend":[{"mix-blend":[...re(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":re()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[Bn]}],"mask-image-linear-from-pos":[{"mask-linear-from":ne()}],"mask-image-linear-to-pos":[{"mask-linear-to":ne()}],"mask-image-linear-from-color":[{"mask-linear-from":z()}],"mask-image-linear-to-color":[{"mask-linear-to":z()}],"mask-image-t-from-pos":[{"mask-t-from":ne()}],"mask-image-t-to-pos":[{"mask-t-to":ne()}],"mask-image-t-from-color":[{"mask-t-from":z()}],"mask-image-t-to-color":[{"mask-t-to":z()}],"mask-image-r-from-pos":[{"mask-r-from":ne()}],"mask-image-r-to-pos":[{"mask-r-to":ne()}],"mask-image-r-from-color":[{"mask-r-from":z()}],"mask-image-r-to-color":[{"mask-r-to":z()}],"mask-image-b-from-pos":[{"mask-b-from":ne()}],"mask-image-b-to-pos":[{"mask-b-to":ne()}],"mask-image-b-from-color":[{"mask-b-from":z()}],"mask-image-b-to-color":[{"mask-b-to":z()}],"mask-image-l-from-pos":[{"mask-l-from":ne()}],"mask-image-l-to-pos":[{"mask-l-to":ne()}],"mask-image-l-from-color":[{"mask-l-from":z()}],"mask-image-l-to-color":[{"mask-l-to":z()}],"mask-image-x-from-pos":[{"mask-x-from":ne()}],"mask-image-x-to-pos":[{"mask-x-to":ne()}],"mask-image-x-from-color":[{"mask-x-from":z()}],"mask-image-x-to-color":[{"mask-x-to":z()}],"mask-image-y-from-pos":[{"mask-y-from":ne()}],"mask-image-y-to-pos":[{"mask-y-to":ne()}],"mask-image-y-from-color":[{"mask-y-from":z()}],"mask-image-y-to-color":[{"mask-y-to":z()}],"mask-image-radial":[{"mask-radial":[Ft,$t]}],"mask-image-radial-from-pos":[{"mask-radial-from":ne()}],"mask-image-radial-to-pos":[{"mask-radial-to":ne()}],"mask-image-radial-from-color":[{"mask-radial-from":z()}],"mask-image-radial-to-color":[{"mask-radial-to":z()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":T()}],"mask-image-conic-pos":[{"mask-conic":[Bn]}],"mask-image-conic-from-pos":[{"mask-conic-from":ne()}],"mask-image-conic-to-pos":[{"mask-conic-to":ne()}],"mask-image-conic-from-color":[{"mask-conic-from":z()}],"mask-image-conic-to-color":[{"mask-conic-to":z()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:K()}],"mask-repeat":[{mask:J()}],"mask-size":[{mask:ee()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Ft,$t]}],filter:[{filter:["","none",Ft,$t]}],blur:[{blur:de()}],brightness:[{brightness:[Bn,Ft,$t]}],contrast:[{contrast:[Bn,Ft,$t]}],"drop-shadow":[{"drop-shadow":["","none",b,Ck,Nk]}],"drop-shadow-color":[{"drop-shadow":z()}],grayscale:[{grayscale:["",Bn,Ft,$t]}],"hue-rotate":[{"hue-rotate":[Bn,Ft,$t]}],invert:[{invert:["",Bn,Ft,$t]}],saturate:[{saturate:[Bn,Ft,$t]}],sepia:[{sepia:["",Bn,Ft,$t]}],"backdrop-filter":[{"backdrop-filter":["","none",Ft,$t]}],"backdrop-blur":[{"backdrop-blur":de()}],"backdrop-brightness":[{"backdrop-brightness":[Bn,Ft,$t]}],"backdrop-contrast":[{"backdrop-contrast":[Bn,Ft,$t]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Bn,Ft,$t]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Bn,Ft,$t]}],"backdrop-invert":[{"backdrop-invert":["",Bn,Ft,$t]}],"backdrop-opacity":[{"backdrop-opacity":[Bn,Ft,$t]}],"backdrop-saturate":[{"backdrop-saturate":[Bn,Ft,$t]}],"backdrop-sepia":[{"backdrop-sepia":["",Bn,Ft,$t]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":R()}],"border-spacing-x":[{"border-spacing-x":R()}],"border-spacing-y":[{"border-spacing-y":R()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Ft,$t]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Bn,"initial",Ft,$t]}],ease:[{ease:["linear","initial",S,Ft,$t]}],delay:[{delay:[Bn,Ft,$t]}],animate:[{animate:["none",N,Ft,$t]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[k,Ft,$t]}],"perspective-origin":[{"perspective-origin":P()}],rotate:[{rotate:ie()}],"rotate-x":[{"rotate-x":ie()}],"rotate-y":[{"rotate-y":ie()}],"rotate-z":[{"rotate-z":ie()}],scale:[{scale:oe()}],"scale-x":[{"scale-x":oe()}],"scale-y":[{"scale-y":oe()}],"scale-z":[{"scale-z":oe()}],"scale-3d":["scale-3d"],skew:[{skew:je()}],"skew-x":[{"skew-x":je()}],"skew-y":[{"skew-y":je()}],transform:[{transform:[Ft,$t,"","none","gpu","cpu"]}],"transform-origin":[{origin:P()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:te()}],"translate-x":[{"translate-x":te()}],"translate-y":[{"translate-y":te()}],"translate-z":[{"translate-z":te()}],"translate-none":["translate-none"],zoom:[{zoom:[fc,Ft,$t]}],accent:[{accent:z()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:z()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Ft,$t]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scrollbar-thumb-color":[{"scrollbar-thumb":z()}],"scrollbar-track-color":[{"scrollbar-track":z()}],"scrollbar-gutter":[{"scrollbar-gutter":["auto","stable","both"]}],"scrollbar-w":[{scrollbar:["auto","thin","none"]}],"scroll-m":[{"scroll-m":R()}],"scroll-mx":[{"scroll-mx":R()}],"scroll-my":[{"scroll-my":R()}],"scroll-ms":[{"scroll-ms":R()}],"scroll-me":[{"scroll-me":R()}],"scroll-mbs":[{"scroll-mbs":R()}],"scroll-mbe":[{"scroll-mbe":R()}],"scroll-mt":[{"scroll-mt":R()}],"scroll-mr":[{"scroll-mr":R()}],"scroll-mb":[{"scroll-mb":R()}],"scroll-ml":[{"scroll-ml":R()}],"scroll-p":[{"scroll-p":R()}],"scroll-px":[{"scroll-px":R()}],"scroll-py":[{"scroll-py":R()}],"scroll-ps":[{"scroll-ps":R()}],"scroll-pe":[{"scroll-pe":R()}],"scroll-pbs":[{"scroll-pbs":R()}],"scroll-pbe":[{"scroll-pbe":R()}],"scroll-pt":[{"scroll-pt":R()}],"scroll-pr":[{"scroll-pr":R()}],"scroll-pb":[{"scroll-pb":R()}],"scroll-pl":[{"scroll-pl":R()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Ft,$t]}],fill:[{fill:["none",...z()]}],"stroke-w":[{stroke:[Bn,Eb,wh,eU]}],stroke:[{stroke:["none",...z()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{"container-named":["container-type"],overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["start","end","right","left"],"inset-y":["inset-bs","inset-be","top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["ps","pe","pr","pl"],py:["pbs","pbe","pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["ms","me","mr","ml"],my:["mbs","mbe","mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-s","border-w-e","border-w-r","border-w-l"],"border-w-y":["border-w-bs","border-w-be","border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-s","border-color-e","border-color-r","border-color-l"],"border-color-y":["border-color-bs","border-color-be","border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-ms","scroll-me","scroll-mr","scroll-ml"],"scroll-my":["scroll-mbs","scroll-mbe","scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-ps","scroll-pe","scroll-pr","scroll-pl"],"scroll-py":["scroll-pbs","scroll-pbe","scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},postfixLookupClassGroups:["container-type"],orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}});function Ne(...e){return pge(FF(e))}const gge=jh(["group/button inline-flex shrink-0 items-center justify-center gap-1.5 whitespace-nowrap border [font-family:inherit]","font-medium transition-[background-color,border-color,color,transform,box-shadow] duration-150 ease-out","outline-none select-none active:translate-y-[0.5px] focus-visible:shadow-focus","disabled:pointer-events-none disabled:opacity-45 disabled:shadow-none","[&_svg]:pointer-events-none [&_svg]:shrink-0"],{variants:{variant:{default:"border-primary bg-primary font-semibold text-primary-on shadow-glow hover:border-primary-hover hover:bg-primary-hover",outline:"border-control-border bg-control text-foreground shadow-1 hover:border-control-border-hover hover:bg-control-hover",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"border-transparent bg-transparent text-subtle shadow-none hover:bg-control-hover hover:text-foreground",destructive:"border-destructive-bd bg-destructive-soft text-destructive hover:bg-destructive-hover",dashed:"border-dashed border-border-strong bg-transparent text-muted-foreground shadow-none hover:border-primary hover:text-primary-fg",link:"border-transparent bg-transparent text-primary shadow-none underline-offset-4 hover:underline"},size:{default:"h-[30px] rounded-md px-3 text-[12.5px]","2xs":"h-4 rounded-pill px-1.5 text-[10px]",xs:"h-6 rounded-sm px-2 text-[11.5px]",sm:"h-[26px] rounded-sm px-2.5 text-[12px]",lg:"h-9 rounded-md px-4 text-[13px]",icon:"h-[30px] w-[30px] rounded-md p-0","icon-2xs":"size-4 rounded-pill p-0","icon-xs":"size-6 rounded-sm p-0","icon-sm":"h-[26px] w-[26px] rounded-sm p-0","icon-lg":"size-9 rounded-md p-0",touch:"h-[46px] rounded-md px-4 text-[14px]","touch-sm":"h-[34px] rounded-sm px-3 text-[12.5px]","icon-touch":"size-9 rounded-full p-0"}},defaultVariants:{variant:"default",size:"default"}});function B({className:e,variant:t,size:n,...s}){return r.jsx(Npe,{"data-slot":"button",className:Ne(gge({variant:t,size:n}),e),...s})}const xge="data-valid",vge="data-invalid",Ak={badInput:!1,customError:!1,patternMismatch:!1,rangeOverflow:!1,rangeUnderflow:!1,stepMismatch:!1,tooLong:!1,tooShort:!1,typeMismatch:!1,valid:null,valueMissing:!1},uU={valid:null,touched:!1,dirty:!1,filled:!1,focused:!1},bge={disabled:!1,...uU},hc={valid(e){return e===null?null:e?{[xge]:""}:{[vge]:""}}},dU={invalid:void 0,name:void 0,validityData:{state:Ak,errors:[],error:"",value:"",initialValue:null},setValidityData:Xn,disabled:void 0,setTouched:Xn,setDirty:Xn,setFilled:Xn,setFocused:Xn,validationMode:"onSubmit",shouldValidateOnChange:()=>!1,state:bge,registerFieldControl:Xn,validation:{getValidationProps:(e,t=yr)=>t,inputRef:{current:null},registeredInputs:new Map,registerInput:Xn,getInputControl:()=>null,commit:async()=>{},change:Xn}},zO=p.createContext(dU);function uo(e=!0){const t=p.useContext(zO);if(t.setValidityData===Xn&&!e)throw new Error(Vn(28));return t}const fU=p.createContext(void 0);function BO(e=!1){const t=p.useContext(fU);if(!t&&!e)throw new Error(Vn(86));return t}const yge=p.createContext({elementRef:{current:null},formRef:{current:{fields:new Map}},errors:{},clearErrors:Xn,validationMode:"onSubmit",submitCountRef:{current:0}});function uu(){return p.useContext(yge)}let hU=0;function jge(e,t="mui"){const[n,s]=p.useState(e),i=e||n;return p.useEffect(()=>{n==null&&(hU+=1,s(`${t}-${hU}`))},[n,t]),i}const mU=EO.useId;function lg(e,t){if(mU!==void 0){const n=mU();return e??(t?`${t}-${n}`:n)}return jge(e,t)}function Ws(e){return lg(e,"base-ui")}const pU=p.createContext({controlId:void 0,registerControlId:Xn,resetControlId:Xn,labelId:void 0,setLabelId:Xn,messageIds:[],setMessageIds:Xn,getDescriptionProps:e=>e});function zi(){return p.useContext(pU)}const wge=function(t){const n=Ws(),[s,i]=p.useState(n),[o,l]=p.useState(),[u,d]=p.useState([]),f=s===void 0?n:s,m=$s(()=>new Map),{messageIds:g}=zi(),v=qe((w,S)=>{const N=m.current;S===void 0?N.delete(w):N.set(w,S),i(C=>{if(N.size===0)return C;let T;for(const P of N.values()){if(P===C)return C;T===void 0&&(T=P)}return T})}),b=qe(()=>{m.current.size===0&&i(n)}),y=p.useCallback(w=>{const S=w["aria-describedby"]?w["aria-describedby"].split(" "):[];return S.push(...g,...u),{...w,"aria-describedby":Array.from(new Set(S)).join(" ")||void 0}},[g,u]),k=p.useMemo(()=>({controlId:f,registerControlId:v,resetControlId:b,labelId:o,setLabelId:l,messageIds:u,setMessageIds:d,getDescriptionProps:y}),[f,v,b,o,l,u,d,y]);return r.jsx(pU.Provider,{value:k,children:t.children})};function FO(e,t,n,s=!0,i){const[o,l]=p.useState(),u=Ws(i?`${i}-label`:void 0),d=e??t??o;return Ge(()=>{const f=e||t||!s?void 0:kge(n.current,u);o!==f&&l(f)}),d}function kge(e,t){const n=Sge(e);if(n)return!n.id&&t&&(n.id=t),n.id||void 0}function Sge(e){if(!e)return;const t=e.parentElement;if(t&&t.tagName==="LABEL")return t;const n=e.id;if(n){const i=e.nextElementSibling;if(i&&i.htmlFor===n)return i}const s=e.labels;return s&&s[0]}function _d(e={}){const{id:t,enabled:n=!0}=e,{controlId:s,registerControlId:i,resetControlId:o}=zi(),l=Ws(),u=$s(()=>Symbol()),d=p.useRef(!1),f=p.useRef(!1),m=qe(()=>{!d.current||i===Xn||(d.current=!1,i(u.current,void 0))});return Ge(()=>{if(!n||i===Xn){m();return}let g;if(t!==void 0)f.current=!0,g=t;else if(f.current)g=l;else{o();return}if(g===void 0){m();return}d.current=!0,i(u.current,g)},[t,n,i,o,l,u,m]),Ge(()=>m,[m]),(n?s:void 0)??t??l}function Nge(){return typeof navigator>"u"?{userAgent:"",platform:"",maxTouchPoints:0}:{userAgent:navigator.userAgent,platform:navigator.platform??"",maxTouchPoints:navigator.maxTouchPoints??0}}const{userAgent:Cge,platform:Age,maxTouchPoints:Ege}=Nge(),Ek=Cge.toLowerCase(),Tb=Age.toLowerCase(),Ob=/^i(os$|p)/.test(Tb)||Tb==="macintel"&&Ege>1,gU="android",Tk=Tb===gU||Ek.includes(gU),xU=!Ob&&Tb.startsWith("mac");Tb.startsWith("win");const Tge=xU||Ob,du=typeof CSS<"u"&&!!CSS.supports?.("-webkit-backdrop-filter:none"),vU=!du&&Ek.includes("firefox");!du&&Ek.includes("chrom");const Oge=Tge,UO=/jsdom|happydom/.test(Ek);function Ys(e){let t=e.activeElement;for(;t?.shadowRoot?.activeElement!=null;)t=t.shadowRoot.activeElement;return t}function Et(e,t){if(!e||!t)return!1;const n=t.getRootNode?.();if(e.contains(t))return!0;if(n&&ag(n)){let s=t;for(;s;){if(e===s)return!0;s=s.parentNode||s.host}}return!1}function Er(e){return"composedPath"in e?e.composedPath()[0]??e.target:e.target}const HO="data-base-ui-focusable",bU="input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])",Sh="ArrowLeft",Nh="ArrowRight",VO="ArrowUp",Ok="ArrowDown",KO="data-starting-style",Rge="data-ending-style",Pge={[KO]:""},Ige={[Rge]:""},Fo={transitionStatus(e){return e==="starting"?Pge:e==="ending"?Ige:null}},Mge="data-open",_ge="data-closed",Dge="data-anchor-hidden",yU="data-popup-open",Lge="data-pressed",$ge={[yU]:""},zge={[yU]:"",[Lge]:""},Bge={[Mge]:""},Fge={[_ge]:""},Uge={[Dge]:""},Rk={open(e){return e?$ge:null}},qO={open(e){return e?zge:null}},cg={open(e){return e?Bge:Fge},anchorHidden(e){return e?Uge:null}},GO={...cg,...Fo},WO="data-trigger-disabled";function Pk(e,t){if(!Un(e))return!1;const n=e;if(t.hasElement(n))return!n.hasAttribute(WO);for(const[,s]of t.entries())if(Et(s,n))return!s.hasAttribute(WO);return!1}function YO(e,t){if(t==null)return!1;if("composedPath"in e)return e.composedPath().includes(t);const n=e;return n.target!=null&&t.contains(n.target)}function Hge(e){return e.matches("html,body")}function Ik(e){return br(e)&&e.matches(bU)}function Vge(e){return e?.closest(`button,a[href],[role="button"],select,[tabindex]:not([tabindex="-1"]),${bU}`)!=null}function XO(e){return e?e.getAttribute("role")==="combobox"&&Ik(e):!1}function Mk(e){if(!e||UO)return!0;try{return e.matches(":focus-visible")}catch{return!0}}function _k(e){return e?e.hasAttribute(HO)?e:e.querySelector(`[${HO}]`)||e:null}function Dd(e,t,n=!0){return e.filter(i=>i.parentId===t).flatMap(i=>[...!n||i.context?.open?[i]:[],...Dd(e,i.id,n)])}function jU(e,t){let n=[],s=e.find(i=>i.id===t)?.parentId;for(;s;){const i=e.find(o=>o.id===s);s=i?.parentId,i&&(n=n.concat(i))}return n}function da(e){e.preventDefault(),e.stopPropagation()}function Kge(e){return"nativeEvent"in e}function Dk(e){return e.pointerType===""&&e.isTrusted?!0:Tk&&e.pointerType?e.type==="click"&&e.buttons===1:e.detail===0&&!e.pointerType}function QO(e){return UO?!1:!Tk&&e.width===0&&e.height===0||Tk&&e.width===1&&e.height===1&&e.pressure===0&&e.detail===0&&e.pointerType==="mouse"||e.width<1&&e.height<1&&e.pressure===0&&e.detail===0&&e.pointerType==="touch"}function Ld(e,t){const n=["mouse","pen"];return t||n.push("",void 0),n.includes(e)}function qge(e){const t=e.type;return t==="click"||t==="mousedown"||t==="keydown"||t==="keyup"}const ug=Math.min,fu=Math.max,Lk=Math.round,Ch=Math.floor,hu=e=>({x:e,y:e}),Gge={left:"right",right:"left",bottom:"top",top:"bottom"};function wU(e,t,n){return fu(e,ug(t,n))}function $d(e,t){return typeof e=="function"?e(t):e}function Uo(e){return e.split("-")[0]}function mu(e){return e.split("-")[1]}function ZO(e){return e==="x"?"y":"x"}function JO(e){return e==="y"?"height":"width"}function Ho(e){const t=e[0];return t==="t"||t==="b"?"y":"x"}function eR(e){return ZO(Ho(e))}function Wge(e,t,n){n===void 0&&(n=!1);const s=mu(e),i=eR(e),o=JO(i);let l=i==="x"?s===(n?"end":"start")?"right":"left":s==="start"?"bottom":"top";return t.reference[o]>t.floating[o]&&(l=$k(l)),[l,$k(l)]}function Yge(e){const t=$k(e);return[tR(e),t,tR(t)]}function tR(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}const kU=["left","right"],SU=["right","left"],Xge=["top","bottom"],Qge=["bottom","top"];function Zge(e,t,n){switch(e){case"top":case"bottom":return n?t?SU:kU:t?kU:SU;case"left":case"right":return t?Xge:Qge;default:return[]}}function Jge(e,t,n,s){const i=mu(e);let o=Zge(Uo(e),n==="start",s);return i&&(o=o.map(l=>l+"-"+i),t&&(o=o.concat(o.map(tR)))),o}function $k(e){const t=Uo(e);return Gge[t]+e.slice(t.length)}function exe(e){var t,n,s,i;return{top:(t=e.top)!=null?t:0,right:(n=e.right)!=null?n:0,bottom:(s=e.bottom)!=null?s:0,left:(i=e.left)!=null?i:0}}function NU(e){return typeof e!="number"?exe(e):{top:e,right:e,bottom:e,left:e}}function Rb(e){const{x:t,y:n,width:s,height:i}=e;return{width:s,height:i,top:n,left:t,right:t+s,bottom:n+i,x:t,y:n}}function zk(e,t,n){return Math.floor(e/t)!==n}function zd(e,t){return t<0||t>=e.length}function Bk(e,t){return Ta(e.current,{disabledIndices:t})}function nR(e,t){return Ta(e.current,{decrement:!0,startingIndex:e.current.length,disabledIndices:t})}function Ta(e,{startingIndex:t=-1,decrement:n=!1,disabledIndices:s,amount:i=1}={}){let o=t;do o+=n?-i:i;while(o>=0&&o<=e.length-1&&Bd(e,o,s));return o}function txe(e,{event:t,orientation:n,loopFocus:s,onLoop:i,rtl:o,cols:l,disabledIndices:u,minIndex:d,maxIndex:f,prevIndex:m,stopEvent:g=!1}){let v=m,b;if(t.key===VO?b="up":t.key===Ok&&(b="down"),b){const y=[],k=[];let w=!1,S=0;{let M=null,_=-1;e.forEach((L,$)=>{if(L==null)return;S+=1;const D=L.closest('[role="row"]');D&&(w=!0),(D!==M||_===-1)&&(M=D,_+=1,y[_]=[]),y[_].push($),k[$]=_})}let N=!1,C=0;if(w)for(const M of y){const _=M.length;_>C&&(C=_),_!==l&&(N=!0)}const T=N&&S{if(!N||m===-1)return;const _=k[m];if(_==null)return;const L=y[_].indexOf(m),$=M==="up"?-1:1;for(let D=_+$,F=0;F=y.length){if(!s||T)return;if(D=D<0?y.length-1:0,i){const q=Math.min(L,y[D].length-1),Q=y[D][q]??y[D][0],X=i(t,m,Q);D=k[X]??D}}const V=y[D];for(let q=Math.min(L,V.length-1);q>=0;q-=1){const Q=V[q];if(!Bd(e,Q,u))return Q}}},A=M=>{if(!T||m===-1)return;const _=m%P,L=M==="up"?-P:P,$=f-f%P,D=Ch(f/P)+1;for(let F=m-_+L,V=0;Vf){if(!s)return;F=F<0?$:0}const q=Math.min(F+P-1,f);for(let Q=Math.min(F+_,q);Q>=F;Q-=1)if(!Bd(e,Q,u))return Q}};g&&da(t);const R=O(b)??A(b);if(R!==void 0)v=R;else if(m===-1)v=b==="up"?f:d;else if(v=Ta(e,{startingIndex:m,amount:P,decrement:b==="up",disabledIndices:u}),s){if(b==="up"&&(m-PM?L:L-P,i&&(v=i(t,m,v))}b==="down"&&m+P>f&&(v=Ta(e,{startingIndex:m%P-P,amount:P,disabledIndices:u}),i&&(v=i(t,m,v)))}zd(e,v)&&(v=m)}if(n==="both"){const y=Ch(m/l);t.key===(o?Sh:Nh)&&(g&&da(t),m%l!==l-1?(v=Ta(e,{startingIndex:m,disabledIndices:u}),s&&zk(v,l,y)&&(v=Ta(e,{startingIndex:m-m%l-1,disabledIndices:u}),i&&(v=i(t,m,v)))):s&&(v=Ta(e,{startingIndex:m-m%l-1,disabledIndices:u}),i&&(v=i(t,m,v))),zk(v,l,y)&&(v=m)),t.key===(o?Nh:Sh)&&(g&&da(t),m%l!==0?(v=Ta(e,{startingIndex:m,decrement:!0,disabledIndices:u}),s&&zk(v,l,y)&&(v=Ta(e,{startingIndex:m+(l-m%l),decrement:!0,disabledIndices:u}),i&&(v=i(t,m,v)))):s&&(v=Ta(e,{startingIndex:m+(l-m%l),decrement:!0,disabledIndices:u}),i&&(v=i(t,m,v))),zk(v,l,y)&&(v=m));const k=Ch(f/l)===y;zd(e,v)&&(s&&k?(v=t.key===(o?Nh:Sh)?f:Ta(e,{startingIndex:m-m%l-1,disabledIndices:u}),i&&(v=i(t,m,v))):v=m)}return v}function Bd(e,t,n){if(typeof n=="function"?n(t):n?.includes(t)??!1)return!0;const i=e[t];return i?!Fk(i)||i.matches(":disabled")?!0:!n&&(i.hasAttribute("disabled")||i.getAttribute("aria-disabled")==="true"):!1}function nxe(e){return e.visibility==="hidden"||e.visibility==="collapse"}function Fk(e,t=e?Li(e):null){return!e||!e.isConnected||!t||nxe(t)?!1:typeof e.checkVisibility=="function"?e.checkVisibility():t.display!=="none"&&t.display!=="contents"}const rxe='a[href],button,input,select,textarea,summary,details,iframe,object,embed,[tabindex],[contenteditable]:not([contenteditable="false"]),audio[controls],video[controls]';function sxe(e){const t=e.assignedSlot;if(t)return t;if(e.parentElement)return e.parentElement;const n=e.getRootNode();return ag(n)?n.host:null}function rR(e){for(const t of Array.from(e.children))if(Ha(t)==="summary")return t;return null}function axe(e,t){const n=rR(t);return!!n&&(e===n||Et(n,e))}function CU(e){const t=e?Ha(e):"";return e!=null&&e.matches(rxe)&&(t!=="summary"||e.parentElement!=null&&Ha(e.parentElement)==="details"&&rR(e.parentElement)===e)&&(t!=="details"||rR(e)==null)&&(t!=="input"||e.type!=="hidden")}function AU(e){if(!CU(e)||!e.isConnected||e.matches(":disabled"))return!1;for(let t=e;t;t=sxe(t)){const n=t!==e,s=Ha(t)==="slot";if(t.hasAttribute("inert")||n&&Ha(t)==="details"&&!t.open&&!axe(e,t)||t.hasAttribute("hidden")||!s&&!ixe(t,n))return!1}return!0}function ixe(e,t){const n=Li(e);return t?n.display!=="none":Fk(e,n)}function EU(e){const t=e.tabIndex;if(t<0){const n=Ha(e);if(n==="details"||n==="audio"||n==="video"||br(e)&&e.isContentEditable)return 0}return t}function sR(e){if(Ha(e)!=="input")return null;const t=e;return t.type==="radio"&&t.name!==""?t:null}function oxe(e,t){const n=sR(e);if(!n)return!0;const s=t.find(i=>{const o=sR(i);return o?.name===n.name&&o.form===n.form&&o.checked});return s?s===n:t.find(i=>{const o=sR(i);return o?.name===n.name&&o.form===n.form})===n}function TU(e){if(br(e)&&Ha(e)==="slot"){const t=e.assignedElements({flatten:!0});if(t.length>0)return t}return br(e)&&e.shadowRoot?Array.from(e.shadowRoot.children):Array.from(e.children)}function OU(e,t){TU(e).forEach(n=>{CU(n)&&t.push(n),OU(n,t)})}function RU(e,t,n){TU(e).forEach(s=>{br(s)&&s.matches(t)&&n.push(s),RU(s,t,n)})}function aR(e){return AU(e)&&EU(e)>=0}function PU(e){const t=[];return OU(e,t),t.filter(AU)}function Pb(e){const t=PU(e);return t.filter(n=>EU(n)>=0&&oxe(n,t))}function IU(e,t){const n=Pb(e),s=n.length;if(s===0)return;const i=Ys(_n(e)),o=n.indexOf(i),l=o===-1?t===1?0:s-1:o+t;return n[l]}function iR(e){return IU(_n(e).body,1)||e}function MU(e){return IU(_n(e).body,-1)||e}function _U(e,t){if(!e)return null;const n=Pb(_n(e).body),s=n.length;if(s===0)return null;const i=n.indexOf(e);if(i===-1)return null;const o=(i+t+s)%s;return n[o]}function lxe(e){return _U(e,1)}function cxe(e){return _U(e,-1)}function dg(e,t){const n=t||e.currentTarget,s=e.relatedTarget;return!s||!Et(n,s)}function uxe(e){Pb(e).forEach(n=>{n.dataset.tabindex=n.getAttribute("tabindex")||"",n.setAttribute("tabindex","-1")})}function DU(e){const t=[];RU(e,"[data-tabindex]",t),t.forEach(n=>{const s=n.dataset.tabindex;delete n.dataset.tabindex,s?n.setAttribute("tabindex",s):n.removeAttribute("tabindex")})}function dxe(e,t){const n=Ws(e);return Ge(()=>(t(n),()=>{t(s=>s===n?void 0:s)}),[n,t]),n}function fxe(e={}){const{id:t,fallbackControlId:n,native:s=!1,setLabelId:i,focusControl:o}=e,{controlId:l,setLabelId:u}=zi(),d=qe(b=>{u(b),i?.(b)}),f=dxe(t,d),m=l??n;function g(b){if(o){o(b,m);return}if(!m)return;const y=_n(b.currentTarget).getElementById(m);br(y)&&hxe(y)}function v(b){Er(b.nativeEvent)?.closest("button,input,select,textarea")||(!b.defaultPrevented&&b.detail>1&&b.preventDefault(),!s&&g(b))}return s?{id:f,htmlFor:m,onMouseDown:v}:{id:f,onClick:v,onPointerDown(b){b.preventDefault()}}}function hxe(e){e.focus({focusVisible:!0})}function Uk(e){p.useEffect(e,co)}const Ib=0;class Bi{constructor(){Cn(this,"currentId",Ib);Cn(this,"clear",()=>{this.currentId!==Ib&&(clearTimeout(this.currentId),this.currentId=Ib)});Cn(this,"disposeEffect",()=>this.clear)}static create(){return new Bi}start(t,n){this.clear(),this.currentId=setTimeout(()=>{this.currentId=Ib,n()},t)}isStarted(){return this.currentId!==Ib}}function fa(){const e=$s(Bi.create).current;return Uk(e.disposeEffect),e}function oR(e,t){return{...e,state:{...e.state,valid:!t&&e.state.valid}}}const lR=Object.keys(Ak);function LU(e,t){return e.matches(":disabled")?!1:!t||e.form===t?!0:e.form===null&&!e.hasAttribute("form")}function $U(e,t){let n=null;for(const s of e.keys())if(LU(s,t)){if(!s.validity.valid)return s;n??(n=s)}return n}function zU(e){return{...Ak,valid:!e,customError:e}}function cR(e){return e&&e.validationMessage?[e.validationMessage]:[]}function mxe(e){const{elementRef:t,formRef:n}=uu(),{setValidityData:s,validate:i,validityData:o,validationDebounceTime:l,invalid:u,markedDirtyRef:d,state:f,shouldValidateOnChange:m,validationMode:g,registeredFieldIdRef:v}=e,{controlId:b,getDescriptionProps:y}=zi(),k=fa(),w=p.useRef(null),S=$s(()=>new Map).current,N=p.useRef(0),C=p.useRef(null),T=p.useCallback((M,_)=>(S.set(M,_),()=>{S.delete(M)}),[S]),P=qe(()=>{const M=$U(S,t.current);return M&&S.get(M)?.controlRef.current||null}),O=qe(async(M,_=!1)=>{N.current+=1;const L=N.current;function $(H,G=u){const Y=v.current??b;if(Y==null)return;const se=n.current.fields.get(Y);if(!se)return;const re=oR(H,G);n.current.fields.set(Y,{...se,validityData:re})}function D(H,G){const Y=H.valid===!1?G:[];return{value:M,state:H,error:Y[0]??"",errors:Y,initialValue:o.initialValue}}function F(H,G){const Y=H.validity.customError?H.validationMessage:"",se=G.replace(/\r\n?/g,` -`);H.setCustomValidity(se),C.current=[H,se,Y]}function V(){const H=C.current;C.current=null,H&&(!H[0].willValidate||H[0].validationMessage===H[1])&&H[0].setCustomValidity(H[2])}function q(H,G,Y){const se=D(H,G);$(se,Y),s(se)}function Q(H){const G=lR.reduce((se,re)=>(se[re]=H.validity[re],se),{});let Y=!1;for(const se of lR)if(se!=="valid"){if(se==="valueMissing"&&G[se])Y=!0;else if(G[se])return G}return Y&&!d.current&&(G.valid=!0,G.valueMissing=!1),G}function X(){return S.size>0?$U(S,t.current):w.current}let U=X();function z(){return U=X(),U?.willValidate?Q(U):zU(!1)}if(_){if(f.valid!==!1||!U)return;if(!U.validity.valueMissing){V();const H=X(),G=H?.validity.customError?cR(H):[];q(zU(G.length>0),G,!1);return}for(const H of lR)if(H!=="valid"&&H!=="valueMissing"&&H!=="customError"&&U.validity[H])return}k.clear(),V();let K=z(),J=cR(U);const ee=m();if(J.length===0||ee){const H=Array.from(n.current.fields.values()).reduce((se,re)=>(re.name&&(se[re.name]=re.getValue()),se),{}),G=i(M,H);let Y;if(typeof G=="object"&&G!==null&&"then"in G){if(K.valid===!1?q(K,J):(g==="onSubmit"||!o.state.customError)&&(K.valid=null,q(K,J)),Y=await G,L!==N.current)return;K=z()}else Y=G;J=Y?[].concat(Y).filter(Boolean):[],J.length>0?(K.valid=!1,K.customError=!0,U?.willValidate&&F(U,J.join(` -`))):J=cR(U)}q(K,J)}),A=qe((M,_=!1)=>{if(k.clear(),N.current+=1,_)return;const L=m();L&&M!==""&&l?k.start(l,()=>{O(M)}):O(M,!L)}),R=p.useCallback((M,_={})=>oo(y(_),f.valid===!1&&!f.disabled&&!M?{"aria-invalid":!0}:yr),[y,f.disabled,f.valid]);return p.useMemo(()=>({getValidationProps:R,inputRef:w,registeredInputs:S,registerInput:T,getInputControl:P,commit:O,change:A}),[R,S,T,P,O,A])}function pxe(e){const{change:t,commit:n,invalid:s,markedDirtyRef:i,name:o,setRegisteredFieldName:l,registeredFieldIdRef:u,setValidityData:d,validityData:f}=e,{formRef:m}=uu(),g=p.useRef(null),v=p.useRef(null),b=p.useRef(!1),y=qe(()=>{const P=v.current;if(P)return P.getValue?P.getValue():P.value});function k(P){return P.value===void 0?y():P.value}const w=qe(()=>{const P=v.current;if(i.current=!0,!P){n(f.value);return}n(k(P))});function S(){const P=v.current;!P||!P.id||m.current.fields.set(P.id,{getValue:y,name:o??P.name,controlRef:P.controlRef,validityData:oR(f,s),validate:w})}function N(P=v.current?.id){P&&m.current.fields.delete(P)}function C(P){if(b.current)return;b.current=!0;const O=k(P);d(A=>A.initialValue===O?A:{...A,initialValue:O})}Ge(()=>{const P=v.current;!P||!P.id||(l(o?void 0:P.name),m.current.fields.set(P.id,{getValue:y,name:o??P.name,controlRef:P.controlRef,validityData:oR(f,s),validate:w}))},[m,y,s,o,l,w,f]),Ge(()=>{const P=m.current.fields;return()=>{const O=v.current?.id;O&&P.delete(O)}},[m]);const T=qe((P,O)=>{if(!O){g.current===P&&(g.current=null,t(void 0,!0),N(),v.current=null,l(void 0),u.current=void 0);return}const A=v.current?.id,R=g.current;R&&R!==P&&t(void 0,!0),g.current=P,v.current=O,o||l(O.name),u.current=O.id,A&&A!==O.id&&N(A),C(O),S()});return[w,T]}const gxe=p.forwardRef(function(t,n){const{errors:s,validationMode:i,submitCountRef:o}=uu(),{render:l,className:u,validate:d,validationDebounceTime:f=0,validationMode:m=i,name:g,disabled:v=!1,invalid:b,dirty:y,touched:k,actionsRef:w,style:S,...N}=t,C=BO(!0)?.disabled,T=qe(d||(()=>null)),P=C||v,[O,A]=p.useState(!1),[R,M]=p.useState(!1),[_,L]=p.useState(!1),[$,D]=p.useState(!1),F=y??R,V=k??O,q=p.useRef(F),Q=p.useRef(void 0),[X,U]=p.useState(),z=g??X;Ge(()=>{y!==void 0&&(q.current=y)},[y]);const K=qe(he=>{y===void 0&&(he&&(q.current=!0),M(he))}),J=qe(he=>{k===void 0&&A(he)}),ee=qe(()=>m==="onChange"||m==="onSubmit"&&o.current>0),H=z&&Object.hasOwn(s,z)?s[z]:null,G=!!(Array.isArray(H)?H.length:H),Y=b===!0||G,[se,re]=p.useState({state:Ak,error:"",errors:[],value:null,initialValue:null}),ne=!Y&&(P?null:se.state.valid),de=p.useMemo(()=>({disabled:P,touched:V,dirty:F,valid:ne,filled:_,focused:$}),[P,V,F,ne,_,$]),ie=mxe({setValidityData:re,validate:T,validityData:se,validationDebounceTime:f,invalid:Y,markedDirtyRef:q,state:de,shouldValidateOnChange:ee,validationMode:m,registeredFieldIdRef:Q}),[oe,je]=pxe({change:ie.change,commit:ie.commit,invalid:Y,markedDirtyRef:q,name:g,setRegisteredFieldName:U,registeredFieldIdRef:Q,setValidityData:re,validityData:se});p.useImperativeHandle(w,()=>({validate:oe}),[oe]);const te=p.useMemo(()=>({invalid:Y,name:z,validityData:se,setValidityData:re,disabled:P,setTouched:J,setDirty:K,setFilled:L,setFocused:D,validationMode:m,shouldValidateOnChange:ee,state:de,registerFieldControl:je,validation:ie}),[Y,z,se,P,J,K,L,D,m,ee,de,je,ie]),le=Kt("div",t,{ref:n,state:de,props:N,stateAttributesMapping:hc});return r.jsx(zO.Provider,{value:te,children:le})}),xxe=p.forwardRef(function(t,n){return r.jsx(wge,{children:r.jsx(gxe,{...t,ref:n})})}),vxe=p.createContext({disabled:!1});function Hk(){return p.useContext(vxe)}const bxe=p.forwardRef(function(t,n){const{render:s,className:i,style:o,id:l,nativeLabel:u=!0,...d}=t,f=uo(!1),m=Hk(),{labelId:g}=zi(),v={...f.state,disabled:f.disabled||m.disabled},b=p.useRef(null),y=fxe({id:g??l,native:u});return Kt("label",t,{ref:[n,b],state:v,props:[y,d],stateAttributesMapping:hc})}),Vk=null;class yxe{constructor(){Cn(this,"callbacks",[]);Cn(this,"callbacksCount",0);Cn(this,"nextId",1);Cn(this,"startId",1);Cn(this,"isScheduled",!1);Cn(this,"tick",t=>{this.isScheduled=!1;const n=this.callbacks,s=this.callbacksCount;if(this.callbacks=[],this.callbacksCount=0,this.startId=this.nextId,s>0)for(let i=0;i=this.callbacks.length||this.callbacks[n]!==null&&(this.callbacks[n]=null,this.callbacksCount-=1)}}let Kk=new yxe;class Fi{constructor(){Cn(this,"currentId",Vk);Cn(this,"cancel",()=>{this.currentId!==Vk&&(Kk.cancel(this.currentId),this.currentId=Vk)});Cn(this,"disposeEffect",()=>this.cancel)}static create(){return new Fi}static request(t){return Kk.request(t)}static cancel(t){return Kk.cancel(t)}request(t){this.cancel(),this.currentId=Kk.request(()=>{this.currentId=Vk,t()})}}function fg(){const e=$s(Fi.create).current;return Uk(e.disposeEffect),e}function pu(e){return e==null?e:"current"in e?e.current:e}let qk=null;function jxe(e){if(!qk){const t=[];qk=t,queueMicrotask(()=>{qk=null,xr.flushSync(()=>{for(const n of t)n()})})}qk.push(e)}function uR(e,t=!1,n=!1){const s=fg();return qe((i,o=null)=>{s.cancel();const l=pu(e);if(l==null)return;const u=l,d=()=>{if(!n){xr.flushSync(i);return}jxe(()=>{o?.aborted||i()})};if(typeof u.getAnimations!="function"||globalThis.BASE_UI_ANIMATIONS_DISABLED){i();return}function f(){Promise.all(u.getAnimations().map(m=>m.finished)).then(()=>{o?.aborted||d()},()=>{if(o?.aborted)return;if(u.getAnimations().some(g=>g.pending||g.playState!=="finished")){f();return}d()})}if(t){const m=KO;if(!u.hasAttribute(m)){s.request(f);return}const g=new MutationObserver(()=>{u.hasAttribute(m)||(g.disconnect(),f())});g.observe(u,{attributes:!0,attributeFilter:[m]}),o?.addEventListener("abort",()=>g.disconnect(),{once:!0});return}s.request(f)})}function ji(e){const{enabled:t=!0,open:n,ref:s,batch:i=!1,onComplete:o}=e,l=qe(o),u=uR(s,n,i);p.useEffect(()=>{if(!t)return;const d=new AbortController;return u(l,d.signal),()=>{d.abort()}},[t,n,l,u])}function gu(e,t=!1,n=!1,s=!1){const[i,o]=p.useState(e&&t?"idle":void 0),[l,u]=p.useState(e&&!s);return e&&!l&&(u(!0),o("starting")),!e&&l&&i!=="ending"&&!n&&o("ending"),!e&&!l&&i==="ending"&&o(void 0),Ge(()=>{if(!e&&l&&i!=="ending"&&n){const d=Fi.request(()=>{o("ending")});return()=>{Fi.cancel(d)}}},[e,l,i,n]),Ge(()=>{if(!e||t)return;const d=Fi.request(()=>{o(void 0)});return()=>{Fi.cancel(d)}},[t,e]),Ge(()=>{if(!e||!t)return;e&&l&&i!=="idle"&&o("starting");const d=Fi.request(()=>{o("idle")});return()=>{Fi.cancel(d)}},[t,e,l,i]),{mounted:l,setMounted:u,transitionStatus:i}}const wxe=p.forwardRef(function(t,n){const{render:s,id:i,className:o,style:l,...u}=t,d=Ws(i),f=uo(!1),m=Hk(),{setMessageIds:g}=zi(),v={...f.state,disabled:f.disabled||m.disabled};return Ge(()=>{if(d)return g(y=>y.concat(d)),()=>{g(y=>y.filter(k=>k!==d))}},[d,g]),Kt("p",t,{ref:n,state:v,props:[{id:d},u],stateAttributesMapping:hc})});function Tl({controlled:e,default:t,name:n,state:s="value"}){const{current:i}=p.useRef(e!==void 0),[o,l]=p.useState(t),u=i&&e!==void 0?e:o,d=p.useCallback(f=>{i||l(f)},[]);return[u,d]}function hg(e,t,n,s,i=!0,o){const{registerFieldControl:l}=uo(),u=$s(()=>Symbol());Ge(()=>{const d=u.current;if(!i){l(d,void 0);return}l(d,{controlRef:e,getValue:s,id:t,name:o,value:n})},[e,i,s,t,o,l,u,n]),Ge(()=>{const d=u.current;return()=>{l(d,void 0)}},[l,u])}function Vo(e,t){const n=p.useRef(e),s=qe(t);Ge(()=>{n.current!==e&&s(n.current),n.current=e},[e,s])}const rs="none",xu="trigger-press",Va="trigger-hover",Gk="trigger-focus",Wk="outside-press",Mb="item-press",dR="close-press",_b="input-change",mc="input-clear",kxe="input-press",Fd="focus-out",mg="escape-key",fR="list-navigation",BU="keyboard",FU="pointer",UU="cancel-open",Sxe="disabled",hR="imperative-action",Nxe="window-resize";function Nt(e,t,n,s){let i=!1,o=!1;const l=s??yr;return{reason:e,event:t??new Event("base-ui"),cancel(){i=!0},allowPropagation(){o=!0},get isCanceled(){return i},get isPropagationAllowed(){return o},trigger:n,...l}}function Cxe(e,t,n){const s=n??yr;return{reason:e,event:t??new Event("base-ui"),...s}}const Axe=p.forwardRef(function(t,n){const{render:s,className:i,id:o,name:l,value:u,disabled:d=!1,onValueChange:f,defaultValue:m,autoFocus:g=!1,style:v,...b}=t,{state:y,name:k,disabled:w,setTouched:S,setDirty:N,validityData:C,setFocused:T,setFilled:P,validationMode:O,validation:A}=uo(),{clearErrors:R,elementRef:M,submitCountRef:_}=uu(),L=w||d,$=k??l,D={...y,disabled:L},{labelId:F}=zi(),V=_d({id:o}),[q]=Tl({controlled:u,default:m,name:"FieldControl",state:"value"}),Q=u!==void 0,X=Q?q:void 0,U=X==null?void 0:String(X),z=qe(()=>A.inputRef.current?.value);hg(A.inputRef,V,U,z,!L,l),Ge(()=>{const H=U??A.inputRef.current?.value;H!==void 0&&P(H!=="")},[U,A.inputRef,P]),Vo(U,()=>{U!==void 0&&(R($),N(U!==(C.initialValue??"")),A.change(U))});const K=p.useRef(null),J=fa();return Ge(()=>{g&&K.current===Ys(_n(K.current))&&T(!0)},[g,T]),Kt("input",t,{ref:[n,K],state:D,props:[{id:V,disabled:L,name:$,ref:A.inputRef,"aria-labelledby":F,autoFocus:g,...Q?{value:X}:{defaultValue:m},onChange(H){const G=H.currentTarget.value,Y=Nt(rs,H.nativeEvent);f?.(G,Y),!Q&&(N(G!==(C.initialValue??"")),P(G!==""),!H.nativeEvent.defaultPrevented&&!Y.isCanceled&&(R($),A.change(G)))},onFocus(){T(!0)},onBlur(H){if(S(!0),T(!1),O==="onBlur"){const G=H.currentTarget.value;A.commit(G),Q&&queueMicrotask(()=>{const Y=A.inputRef.current?.value;Y!==void 0&&Y!==G&&Y!==(C.initialValue??"")&&A.commit(Y)})}},onKeyDown(H){if(H.currentTarget.tagName==="INPUT"&&H.key==="Enter"){S(!0);const G=H.currentTarget.value,Y=H.currentTarget.form;if(Y&&Y===M.current&&!H.defaultPrevented){const se=H.currentTarget,re=_.current;J.start(0,()=>{_.current===re&&A.commit(se.value)})}else A.commit(G)}}},b,H=>A.getValidationProps(L,H)],stateAttributesMapping:hc})}),Exe=p.forwardRef(function(t,n){return r.jsx(Axe,{ref:n,...t})});function ze({className:e,type:t,ref:n,...s}){return t==="file"||t==="hidden"?r.jsx("input",{ref:n,type:t,"data-slot":"input",className:Ne(e),...s}):r.jsx(Exe,{ref:n,type:t,"data-slot":"input",className:Ne("h-[30px] w-full min-w-0 rounded-md border border-control-border bg-control px-2.5","text-[12.5px] text-foreground outline-none max-[767px]:h-10 max-[767px]:text-base","transition-[border-color,box-shadow] duration-150 ease-out","placeholder:text-muted-foreground","hover:border-control-border-hover","focus:border-primary focus:shadow-focus","disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-surface-3 disabled:text-muted-foreground","file:inline-flex file:border-0 file:bg-transparent file:text-foreground",e),...s})}function Xs({className:e,...t}){return r.jsx("textarea",{"data-slot":"textarea",className:Ne("min-h-26 w-full resize-y rounded-md border border-control-border bg-control px-3 py-2.5","font-mono text-[12px] leading-[1.6] text-foreground outline-none max-[767px]:text-base","transition-[border-color,box-shadow] duration-150 ease-out","placeholder:text-muted-foreground","hover:border-control-border-hover","focus:border-primary focus:shadow-focus","disabled:cursor-not-allowed disabled:bg-surface-3 disabled:text-muted-foreground",e),...t})}function zs({className:e,...t}){return r.jsx("div",{"data-slot":"input-group",role:"group",className:Ne("group/input-group relative flex h-[30px] w-full min-w-0 items-center rounded-md border border-control-border bg-control max-[767px]:h-10","transition-[border-color,box-shadow] duration-150 ease-out","outline-none","has-[[data-slot=input-group-control]:focus-visible]:border-primary","has-[[data-slot=input-group-control]:focus-visible]:shadow-focus","has-[[data-slot=input-group-control]:hover:not(:focus-visible)]:border-control-border-hover","has-[>textarea]:h-auto","has-[>[data-align=inline-start]]:[&>[data-slot=input-group-control]]:pl-1.5","has-[>[data-align=inline-end]]:[&>[data-slot=input-group-control]]:pr-1.5","has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col","has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:pb-1.5","has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col","has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:pt-1.5",e),...t})}const Txe=jh(["flex h-auto cursor-text items-center justify-center gap-1.5 select-none","text-[12px] font-medium text-muted-foreground","group-data-[disabled=true]/input-group:opacity-50"],{variants:{align:{"inline-start":"order-first pl-[9px] has-[>button]:-ml-1","inline-end":"order-last pr-[9px] has-[>button]:-mr-1","block-start":"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-1.5","block-end":"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-1.5"}},defaultVariants:{align:"inline-start"}});function As({className:e,align:t="inline-start",...n}){return r.jsx("div",{role:"group","data-slot":"input-group-addon","data-align":t,className:Ne(Txe({align:t}),e),onClick:s=>{s.target.closest("button")||s.currentTarget.parentElement?.querySelector("input")?.focus()},...n})}const Oxe=jh("flex items-center shadow-none",{variants:{size:{xs:"h-6 gap-1 rounded-xs px-1.5",sm:"h-8 gap-1.5 rounded-sm px-2.5","icon-xs":"size-6 rounded-xs p-0","icon-sm":"size-8 rounded-sm p-0"}},defaultVariants:{size:"xs"}});function Db({className:e,type:t="button",variant:n="ghost",size:s="xs",...i}){return r.jsx(B,{type:t,"data-size":s,variant:n,className:Ne(Oxe({size:s}),e),...i})}function Bs({className:e,...t}){return r.jsx(ze,{"data-slot":"input-group-control",className:Ne("flex-1 rounded-none border-0 bg-transparent shadow-none focus:border-0 focus:shadow-none",e),...t})}function Ah(e){return Kt(e.defaultTagName??"div",e,e)}const Rxe=jh("inline-flex w-fit shrink-0 items-center justify-center gap-[5px] overflow-hidden whitespace-nowrap border font-semibold",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground",secondary:"border-transparent bg-secondary text-secondary-foreground",destructive:"border-destructive-bd bg-destructive-soft text-destructive",outline:"border-control-border bg-control text-subtle",ghost:"border-transparent bg-transparent text-muted-foreground",link:"border-transparent bg-transparent text-primary underline-offset-4 hover:underline",success:"border-success-bd bg-success-soft text-success",warning:"border-warning-bd bg-warning-soft text-warning",info:"border-info-bd bg-info-soft text-info",brand:"border-primary-bd bg-primary-soft text-primary-fg",cn:"border-cn-bd bg-cn-soft text-cn",intl:"border-intl-bd bg-intl-soft text-intl",sensitive:"border-sensitive-bd bg-sensitive-soft text-sensitive"},shape:{pill:"min-h-[21px] rounded-pill px-[9px] py-px text-[11.5px]",tag:"min-h-[19px] rounded-xs px-2 py-0 text-[11px]"}},defaultVariants:{variant:"default",shape:"pill"}});function Ee({className:e,variant:t,shape:n,render:s,...i}){return Ah({render:s,defaultTagName:"span",props:oo({"data-slot":"badge"},i,{className:Ne(Rxe({variant:t,shape:n}),e)})})}function Yk({className:e,...t}){return r.jsx("span",{className:Ne("size-1.5 flex-none rounded-full bg-current",e),...t})}const HU=p.createContext(void 0);function VU(){const e=p.useContext(HU);if(e===void 0)throw new Error(Vn(13));return e}const mR={imageLoadingStatus:()=>null},Pxe=p.forwardRef(function(t,n){const{className:s,render:i,style:o,...l}=t,[u,d]=p.useState("idle"),f={imageLoadingStatus:u},m=p.useMemo(()=>({imageLoadingStatus:u,setImageLoadingStatus:d}),[u,d]),g=Kt("span",t,{state:f,ref:n,props:l,stateAttributesMapping:mR});return r.jsx(HU.Provider,{value:m,children:g})});function Ixe(e,{referrerPolicy:t,crossOrigin:n,sizes:s,srcSet:i},o){const l=p.useState("idle"),u=l[1];return Ge(()=>{if(!o)return Xn;if(!e&&!i)return u("error"),Xn;let d=!0;const f=new window.Image,m=g=>()=>{d&&u(g)};return u("loading"),f.onload=m("loaded"),f.onerror=m("error"),t&&(f.referrerPolicy=t),f.crossOrigin=n??null,s&&(f.sizes=s),i&&(f.srcset=i),e&&(f.src=e),f.complete&&u(f.naturalWidth>0?"loaded":"error"),()=>{d=!1}},[o,e,i,s,n,t,u]),l}const Mxe={...mR,...Fo},_xe=p.forwardRef(function(t,n){const{className:s,render:i,onLoadingStatusChange:o,keepMounted:l=!1,style:u,sizes:d,srcSet:f,src:m,...g}=t,{setImageLoadingStatus:v}=VU(),[b,y]=Ixe(m,t,!l),k=b==="loaded",{mounted:w,transitionStatus:S,setMounted:N}=gu(k),C=p.useRef(null),T=p.useRef(!0);Ge(()=>{if(!l)return;const L=T.current;T.current=!1;const $=C.current;if(!$)return;if(!$.complete){y("loading");return}const D=$.naturalWidth>0?"loaded":"error";y(D),D==="loaded"&&L&&N(!0)},[l,m,f,d,g.crossOrigin,g.referrerPolicy,i,y,N]);const P=l?{"data-loading":b==="loading"?"":void 0,"data-error":b==="error"?"":void 0,"aria-hidden":b!=="loaded"||void 0,onLoad(){y("loaded")},onError(){y("error")}}:void 0,O=qe(L=>{o?.(L),v(L)});Ge(()=>{b!=="idle"&&O(b)},[b,O]),Ge(()=>()=>v("idle"),[v]),ji({enabled:!k,open:k,ref:C,onComplete(){k||N(!1)}});const A={imageLoadingStatus:b,transitionStatus:l&&S==="ending"?void 0:S},R=l||w,M={};d!==void 0&&(M.sizes=d),f!==void 0&&(M.srcSet=f),m!==void 0&&(M.src=m);const _=Kt("img",t,{state:A,ref:[n,C],props:[P,g,M],stateAttributesMapping:Mxe,enabled:R});return R?_:null}),Dxe=p.forwardRef(function(t,n){const{className:s,render:i,delay:o=0,style:l,...u}=t,{imageLoadingStatus:d}=VU(),[f,m]=p.useState(o===0),g=fa();return p.useEffect(()=>(o>0?g.start(o,()=>m(!0)):m(!0),g.clear),[g,o]),Kt("span",t,{state:{imageLoadingStatus:d},ref:n,props:u,stateAttributesMapping:mR,enabled:d!=="loaded"&&(o===0||f)})});function KU({className:e,...t}){return r.jsx(Pxe,{"data-slot":"avatar",className:n=>Ne("relative inline-flex size-8 shrink-0 overflow-hidden rounded-full text-foreground",typeof e=="function"?e(n):e),...t})}function qU({className:e,...t}){return r.jsx(_xe,{"data-slot":"avatar-image",className:n=>Ne("absolute inset-0 block size-full object-cover data-loading:invisible data-error:invisible",typeof e=="function"?e(n):e),...t})}function GU({className:e,...t}){return r.jsx(Dxe,{"data-slot":"avatar-fallback",className:n=>Ne("absolute inset-0 flex items-center justify-center bg-control text-[12px] font-semibold text-subtle",typeof e=="function"?e(n):e),...t})}function Z(e,t){if(typeof window>"u")return e;const n=window.wbI18n;return n?n.t(e,t)??e:e}function Qt({className:e,...t}){return r.jsx("svg",{"data-slot":"spinner",role:"status","aria-label":Z("加载中"),viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",className:Ne("size-4 animate-spin [animation-duration:0.7s]",e),...t,children:r.jsx("path",{d:"M21 12a9 9 0 1 1-6.219-8.56"})})}function Ae({className:e,...t}){return r.jsx("label",{"data-slot":"label",className:Ne("flex items-center gap-[6px] text-[11.5px] text-muted-foreground",e),...t})}const WU={clipPath:"inset(50%)",overflow:"hidden",whiteSpace:"nowrap",border:0,padding:0,width:1,height:1,margin:-1},vu={...WU,position:"fixed",top:0,left:0},pg={...WU,position:"absolute"},YU=p.createContext(void 0);function Lxe(){const e=p.useContext(YU);if(e===void 0)throw new Error(Vn(63));return e}const $xe="data-checked",zxe="data-unchecked",XU={...hc,checked(e){return e?{[$xe]:""}:{[zxe]:""}}},Bxe=p.forwardRef(function(t,n){const{checked:s,className:i,defaultChecked:o,"aria-labelledby":l,form:u,id:d,inputRef:f,name:m,nativeButton:g=!1,onCheckedChange:v,readOnly:b=!1,required:y=!1,disabled:k=!1,render:w,uncheckedValue:S,value:N,style:C,...T}=t,{clearErrors:P}=uu(),{state:O,setTouched:A,setDirty:R,validityData:M,setFilled:_,setFocused:L,validationMode:$,disabled:D,name:F,validation:V}=uo(),{labelId:q}=zi(),Q=D||k,X=F??m,U=p.useRef(null),z=lo(U,f,V.inputRef),K=p.useRef(null),J=Ws(),ee=_d({id:d}),H=g?void 0:ee,[G,Y]=Tl({controlled:s,default:!!o,name:"Switch",state:"checked"});hg(K,J,G,void 0,!Q,m),Ge(()=>{_(G)},[G,_]),Vo(G,()=>{P(X),R(G!==M.initialValue),V.change(G)});const{getButtonProps:se,buttonRef:re}=$i({disabled:Q,native:g}),ne=FO(l,q,U,!g,H),de={id:g?ee:J,role:"switch","aria-checked":G,"aria-readonly":b||void 0,"aria-required":y||void 0,"aria-labelledby":ne,onFocus(){Q||L(!0)},onBlur(){const te=U.current;!te||Q||(A(!0),L(!1),$==="onBlur"&&V.commit(te.checked))},onClick(te){if(b||Q)return;te.preventDefault();const le=U.current;le&&og(le,te)}},ie={...V.getValidationProps(Q),checked:G,disabled:Q,form:u,id:H,name:X,required:y,style:X?pg:vu,tabIndex:-1,type:"checkbox","aria-hidden":!0,ref:z,onChange(te){if(te.nativeEvent.defaultPrevented)return;if(b){te.preventDefault();return}const le=te.currentTarget.checked,he=Nt(rs,te.nativeEvent);v?.(le,he),!he.isCanceled&&Y(le)},onClick(te){te.stopPropagation()},onFocus(){K.current?.focus()},...N!==void 0?{value:N}:yr},oe=p.useMemo(()=>({...O,checked:G,disabled:Q,readOnly:b,required:y}),[O,G,Q,b,y]),je=Kt("span",t,{state:oe,ref:[n,K,re],props:[de,T,se,te=>V.getValidationProps(Q,te)],stateAttributesMapping:XU});return r.jsxs(YU.Provider,{value:oe,children:[je,!G&&X&&S!==void 0&&r.jsx("input",{type:"hidden",form:u,name:X,value:S,disabled:Q}),r.jsx("input",{...ie,suppressHydrationWarning:!0})]})}),Fxe=p.forwardRef(function(t,n){const{render:s,className:i,style:o,...l}=t,u=Lxe();return Kt("span",t,{state:u,ref:n,stateAttributesMapping:XU,props:l})});function St({className:e,size:t="default",variant:n="default",...s}){const i=t==="sm";return r.jsx(Bxe,{"data-slot":"switch",className:Ne("relative inline-flex flex-none cursor-pointer items-center rounded-pill border-0 bg-border-strong p-0","transition-colors duration-[180ms] ease-out",n==="success"?"data-checked:bg-success":"data-checked:bg-primary","focus-visible:shadow-focus focus-visible:outline-none","data-disabled:cursor-not-allowed data-disabled:opacity-50",i?"h-[14px] w-6":t==="touch"?"h-6 w-10":"h-[21px] w-9",e),...s,children:r.jsx(Fxe,{"data-slot":"switch-thumb",className:Ne("block rounded-full bg-primary-on shadow-1","transition-transform duration-[180ms] [transition-timing-function:cubic-bezier(.3,1.4,.6,1)]",i?"size-[10px] translate-x-0.5 data-checked:translate-x-[10px]":t==="touch"?"size-5 translate-x-0.5 data-checked:translate-x-[18px]":"size-[17px] translate-x-0.5 data-checked:translate-x-[17px]")})})}function Uxe(e){if(!e)return null;for(const t of e.elements){const n=t.tagName;if(n==="BUTTON"||n==="INPUT"){const s=t;if(s.type==="submit")return s}}return null}const Hxe="data-checked",Vxe="data-unchecked";function QU(e){return{checked(t){return e.indeterminate?{}:t?{[Hxe]:""}:{[Vxe]:""}},...hc}}const Kxe=p.createContext(void 0);function qxe(){return p.useContext(Kxe)}const ZU=p.createContext(void 0);function Gxe(){const e=p.useContext(ZU);if(e===void 0)throw new Error(Vn(14));return e}const Wxe="data-parent",Yxe=p.forwardRef(function(t,n){const{checked:s,className:i,defaultChecked:o=!1,"aria-labelledby":l,disabled:u=!1,form:d,id:f,indeterminate:m=!1,inputRef:g,name:v,onCheckedChange:b,parent:y=!1,readOnly:k=!1,render:w,required:S=!1,uncheckedValue:N,value:C,nativeButton:T=!1,style:P,...O}=t,{clearErrors:A}=uu(),{disabled:R,name:M,setDirty:_,setFilled:L,setFocused:$,setTouched:D,state:F,validationMode:V,validityData:q,validation:Q}=uo(),X=Hk(),{labelId:U,registerControlId:z,getDescriptionProps:K}=zi(),J=qxe(),ee=J?.allValues===void 0?void 0:J.parent,H=ee!==void 0,G=R||X.disabled||J?.disabled||u,Y=M??v,se=C??Y,re=Ws(),ne=J?.registerControlId!==z,de=_d({id:f||void 0,enabled:ne}),ie=T?de:re;let oe={};H&&(y?oe=ee.getParentProps():se!==void 0&&(oe=ee.getChildProps(se)));const{checked:je=s,indeterminate:te=m,onCheckedChange:le,...he}=oe,ce=J?.value,ye=p.useRef(null),{getButtonProps:fe,buttonRef:Le}=$i({disabled:G,native:T}),pe=J?.validation??Q,[xe,Se]=Tl({controlled:se!==void 0&&ce!==void 0&&!y?ce.includes(se):je,default:o,name:"Checkbox",state:"checked"}),ge=H?!!je:xe,ue=H&&te||m;hg(ye,re,xe,void 0,!J&&!G,v);const be=ee?.registerChildId,ve=p.useRef(null),De=pe.registerInput,Ie=J?se:void 0,We=p.useCallback(gt=>De(gt,{controlRef:ye,value:Ie}),[De,Ie]),nt=lo(g,ve,y?void 0:We),kt=FO(l,U,ve,!T,de);Ge(()=>{ve.current&&(ve.current.indeterminate=ue),J||L(xe)},[xe,ue,J,L]),Vo(xe,()=>{J||(A(Y),_(xe!==q.initialValue),pe.change(xe))});const Je=oo({checked:xe,disabled:G,form:d,name:y?void 0:Y,id:T?void 0:de,required:S,ref:nt,style:Y?pg:vu,tabIndex:-1,type:"checkbox","aria-hidden":!0,onChange(gt){if(gt.nativeEvent.defaultPrevented)return;if(k){gt.preventDefault();return}const sn=gt.currentTarget.checked,Ke=Nt(rs,gt.nativeEvent);if(b?.(sn,Ke),!Ke.isCanceled&&(le?.(sn,Ke),!Ke.isCanceled&&(Se(sn),se!==void 0&&J!==void 0&&!y&&!H))){const zt=sn?[...J.value,se]:J.value.filter(ht=>ht!==se);J.setValue(zt,Ke)}},onClick(gt){gt.stopPropagation()},onFocus(){ye.current?.focus()}},C!==void 0?{value:(J?xe&&C:C)||""}:yr,K,gt=>pe.getValidationProps(G,gt));p.useEffect(()=>{if(!ee||se===void 0)return;const gt=ee.disabledStatesRef.current;return gt.set(se,G),()=>{gt.delete(se)}},[ee,G,se]);const on=p.useMemo(()=>({...F,checked:ge,disabled:G,readOnly:k,required:S,indeterminate:ue}),[F,ge,G,k,S,ue]),nn=QU(on),On=Kt("span",t,{state:on,ref:[Le,ye,n],props:[{id:ie,role:"checkbox","aria-checked":ue?"mixed":ge,"aria-readonly":k||void 0,"aria-required":S||void 0,"aria-labelledby":kt,[Wxe]:y?"":void 0,onFocus(){G||$(!0)},onBlur(){const gt=ve.current;gt&&(D(!0),$(!1),V==="onBlur"&&pe.commit(J?ce:gt.checked))},onKeyDown(gt){if(gt.key!=="Enter"||(gt.preventBaseUIHandler(),gt.defaultPrevented))return;const sn=ve.current?.form??null,Ke=gt.currentTarget,zt=gt.nativeEvent,ht=gt.preventDefault,Tt=zt.preventDefault;let Ht=!1;gt.preventDefault=()=>{Ht=!0,ht.call(gt)},zt.preventDefault=()=>{Ht=!0,Tt.call(zt)},Tt.call(zt),vr(Ke).queueMicrotask(()=>{gt.preventDefault=ht,zt.preventDefault=Tt,Ht||Uxe(sn)?.click()})},onClick(gt){if(k||G)return;gt.preventDefault();const sn=ve.current;sn&&og(sn,gt)}},O,he,fe,K,gt=>pe.getValidationProps(G,gt)],stateAttributesMapping:nn}),Rn=On.props.id;return Ge(()=>{if(!(!be||y||se===void 0||Rn===void 0))return be(se,Rn)},[be,y,se,Rn]),r.jsxs(ZU.Provider,{value:on,children:[On,!xe&&!J&&Y&&!y&&N!==void 0&&r.jsx("input",{type:"hidden",form:d,name:Y,value:N,disabled:G}),r.jsx("input",{...Je,suppressHydrationWarning:!0})]})}),Xxe=p.forwardRef(function(t,n){const{render:s,className:i,style:o,keepMounted:l=!1,...u}=t,d=Gxe(),f=d.checked||d.indeterminate,{mounted:m,transitionStatus:g,setMounted:v}=gu(f),b=p.useRef(null),y={...d,transitionStatus:g};ji({batch:!0,enabled:!f,open:f,ref:b,onComplete(){f||v(!1)}});const w={...QU(d),...Fo},S=l||m,N=Kt("span",t,{ref:[n,b],state:y,stateAttributesMapping:w,props:u});return S?N:null});function jr({className:e,...t}){return r.jsx(Yxe,{"data-slot":"checkbox",className:Ne("group/checkbox relative inline-flex size-3.5 shrink-0 cursor-pointer items-center justify-center rounded-[3px] border border-control-border bg-control","outline-none transition-colors duration-150 ease-out","hover:border-control-border-hover","data-checked:border-primary data-checked:bg-primary","focus-visible:shadow-focus","data-disabled:cursor-not-allowed data-disabled:opacity-45",e),...t,children:r.jsx(Xxe,{"data-slot":"checkbox-indicator",className:"grid place-content-center text-primary-foreground data-unchecked:hidden",children:r.jsxs("svg",{viewBox:"0 0 12 12",className:"size-2.5","aria-hidden":"true",children:[r.jsx("path",{d:"M2 6h8",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",fill:"none",className:"hidden group-aria-[checked=indeterminate]/checkbox:block"}),r.jsx("path",{d:"M2.5 6.2 4.8 8.5 9.5 3.8",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",fill:"none",className:"group-aria-[checked=indeterminate]/checkbox:hidden"})]})})})}function pR(e){return Array.isArray(e)?e.map(t=>pR(t)).join(","):e==null?"":String(e)}const JU=new Map;function Qxe(e,t){const n=JSON.stringify({locale:pR(e),options:t}),s=JU.get(n);if(s)return s;const i=new Intl.NumberFormat(e,t);return JU.set(n,i),i}function Xk(e,t,n){return e==null?"":Qxe(t,n).format(e)}function bu(e,t=Number.MIN_SAFE_INTEGER,n=Number.MAX_SAFE_INTEGER){return Math.max(t,Math.min(e,n))}function e6(e,t,n){return(e-t)*100/(n-t)}const t6=p.createContext(void 0);function n6(){const e=p.useContext(t6);if(e===void 0)throw new Error(Vn(51));return e}const Zxe="data-complete",Jxe="data-indeterminate",eve="data-progressing",gR={status(e){return e==="progressing"?{[eve]:""}:e==="complete"?{[Zxe]:""}:e==="indeterminate"?{[Jxe]:""}:null}},tve=p.forwardRef(function(t,n){const{format:s,getAriaValueText:i,locale:o,max:l=100,min:u=0,value:d,render:f,className:m,children:g,style:v,...b}=t,[y,k]=p.useState();let w="indeterminate",S=null,N=null,C="",T="indeterminate progress";if(d!=null&&Number.isFinite(d)){const M=e6(d,u,l);S=bu(Number.isNaN(M)?0:M,0,100),N=bu(d,u,l),w=N===l?"complete":"progressing",C=s?Xk(N,o,s):Xk(S/100,o,{style:"percent"}),T=C}const P=p.useMemo(()=>({status:w}),[w]),O={"aria-labelledby":y,"aria-valuemax":l,"aria-valuemin":u,"aria-valuenow":N??void 0,"aria-valuetext":i?i(C,d):T,role:"progressbar",children:r.jsxs(p.Fragment,{children:[g,r.jsx("span",{role:"presentation",style:vu,children:"x"})]})},A=p.useMemo(()=>({formattedValue:C,percentageValue:S,setLabelId:k,state:P,value:d}),[C,S,k,P,d]),R=Kt("div",t,{state:P,ref:n,props:[O,b],stateAttributesMapping:gR});return r.jsx(t6.Provider,{value:A,children:R})}),nve=p.forwardRef(function(t,n){const{render:s,className:i,style:o,...l}=t,{state:u}=n6();return Kt("div",t,{state:u,ref:n,props:l,stateAttributesMapping:gR})}),rve=p.forwardRef(function(t,n){const{render:s,className:i,style:o,...l}=t,{percentageValue:u,state:d}=n6(),f=u==null?{}:{insetInlineStart:0,height:"inherit",width:`${u}%`};return Kt("div",t,{state:d,ref:n,props:[{style:f},l],stateAttributesMapping:gR})});function gg({className:e,children:t,value:n,...s}){return r.jsxs(tve,{value:n,"data-slot":"progress",className:Ne("flex w-full flex-wrap items-center gap-3",e),...s,children:[t,r.jsx(sve,{children:r.jsx(ave,{})})]})}function sve({className:e,...t}){return r.jsx(nve,{"data-slot":"progress-track",className:Ne("relative flex h-1.5 w-full items-center overflow-x-hidden overflow-y-hidden rounded-pill bg-surface-3",e),...t})}function ave({className:e,...t}){return r.jsx(rve,{"data-slot":"progress-indicator",className:Ne("h-full rounded-[inherit] bg-primary transition-[width] duration-300 ease-out data-[indeterminate]:w-1/3 data-[indeterminate]:animate-pulse",e),...t})}const xR=[];let vR;function ive(){return vR}function ove(e){xR.push(e)}function Qk(e){const t=(n,s)=>{const i=$s(lve).current;let o;try{vR=i;for(const l of xR)l.before(i);o=e(n,s);for(const l of xR)l.after(i);i.didInitialize=!0}finally{vR=void 0}return o};return t.displayName=e.displayName||e.name,t}function bR(e){return p.forwardRef(Qk(e))}function lve(){return{didInitialize:!1}}const r6=p.createContext(void 0);function Lb(e){const t=p.useContext(r6);if(t===void 0&&!e)throw new Error(Vn(72));return t}function cve(e,t){return t!=null&&!Ld(t)?0:typeof e=="function"?e():e}function Eh(e,t,n){const s=cve(e,n);return typeof s=="number"?s:s?.[t]}function s6(e){return typeof e=="function"?e():e}function a6(e,t){return t||e==="click"||e==="mousedown"}function uve(e){return e?.includes("mouse")&&e!=="mousedown"}const i6=p.createContext({hasProvider:!1,timeoutMs:0,delayRef:{current:0},initialDelayRef:{current:0},timeout:new Bi,currentIdRef:{current:null},currentContextRef:{current:null}});function dve(e,t){e.current=t.current}function fve(e){const{children:t,delay:n,timeoutMs:s=0}=e,i=p.useRef(n),o=p.useRef(n),l=p.useRef(null),u=p.useRef(null),d=fa();return Ge(()=>{if(o.current=n,!l.current){i.current=n;return}i.current={open:Eh(i.current,"open"),close:Eh(n,"close")}},[n,l,i,o]),r.jsx(i6.Provider,{value:p.useMemo(()=>({hasProvider:!0,delayRef:i,initialDelayRef:o,currentIdRef:l,timeoutMs:s,currentContextRef:u,timeout:d}),[s,d]),children:t})}function hve(e,t={open:!1}){const{open:n}=t,s="rootStore"in e?e.rootStore:e,i=s.useState("floatingId"),o=p.useContext(i6),{currentIdRef:l,delayRef:u,timeoutMs:d,initialDelayRef:f,currentContextRef:m,hasProvider:g,timeout:v}=o,[b,y]=p.useState(!1),k=p.useRef(n);return Ge(()=>{k.current=n},[n]),Ge(()=>{function w(){m.current?.setIsInstantPhase(!1),l.current=null,m.current=null,u.current=f.current,v.clear()}if(l.current&&!n&&l.current===i){if(y(!1),d){const S=i;return v.start(d,()=>{s.select("open")||l.current&&l.current!==S||w()}),()=>{(k.current||l.current!==S)&&v.clear()}}w()}},[n,i,l,u,d,f,m,v,s]),Ge(()=>{if(!n)return;const w=m.current,S=l.current;v.clear(),m.current={onOpenChange:s.setOpen,setIsInstantPhase:y},l.current=i,u.current={open:0,close:Eh(f.current,"close")},S!==null&&S!==i?(y(!0),w?.setIsInstantPhase(!0),w?.onOpenChange(!1,Nt(rs))):(y(!1),w?.setIsInstantPhase(!1))},[n,i,s,l,u,f,m,v]),Ge(()=>()=>{if(l.current===i){if(m.current=null,!k.current)return;l.current=null,dve(u,f),v.clear()}},[m,l,u,i,f,v]),p.useMemo(()=>({activeIdRef:l,hasProvider:g,delayRef:u,isInstantPhase:b}),[l,g,u,b])}function kn(e,t,n,s){return e.addEventListener(t,n,s),()=>{e.removeEventListener(t,n,s)}}function Ol(...e){return()=>{for(let t=0;t{t.current=t.next}};return t}const Th=p.forwardRef(function(t,n){const[s,i]=p.useState();Ge(()=>{Oge&&du&&i("button")},[]);const o={tabIndex:0,role:s};return r.jsx("span",{...t,ref:n,style:vu,"aria-hidden":s?void 0:!0,...o,"data-base-ui-focus-guard":""})});function $b(e){return`data-base-ui-${e}`}let Zk=0;function Jk(e,t={}){const{preventScroll:n=!1,sync:s=!1,shouldFocus:i}=t;cancelAnimationFrame(Zk);function o(){i&&!i()||e?.focus({preventScroll:n})}if(s)return o(),Xn;const l=requestAnimationFrame(o);return Zk=l,()=>{Zk===l&&(cancelAnimationFrame(l),Zk=0)}}const yR={inert:new WeakMap,"aria-hidden":new WeakMap},o6="data-base-ui-inert",jR={inert:new WeakSet,"aria-hidden":new WeakSet};let zb=new WeakMap,wR=0;function pve(e){return jR[e]}function l6(e){return e?ag(e)?e.host:l6(e.parentNode):null}const c6=(e,t)=>t.map(n=>{if(e.contains(n))return n;const s=l6(n);return e.contains(s)?s:null}).filter(n=>n!=null),u6=e=>{const t=new Set;return e.forEach(n=>{let s=n;for(;s&&!t.has(s);)t.add(s),s=s.parentNode}),t},d6=(e,t,n)=>{const s=[],i=o=>{!o||n.has(o)||Array.from(o.children).forEach(l=>{Ha(l)!=="script"&&(t.has(l)?i(l):s.push(l))})};return i(e),s};function gve(e,t,n,s,{mark:i=!0}){let o=null;s?o="inert":n&&(o="aria-hidden");let l=null,u=null;const d=c6(t,e),f=i?d6(t,u6(d),new Set(d)):[],m=[],g=[];if(o){const v=yR[o],b=pve(o);u=b,l=v;const y=c6(t,Array.from(t.querySelectorAll("[aria-live]"))),k=d.concat(y);d6(t,u6(k),new Set(k)).forEach(S=>{const N=S.getAttribute(o),C=N!==null&&N!=="false",T=(v.get(S)||0)+1;v.set(S,T),m.push(S),T===1&&C&&b.add(S),C||S.setAttribute(o,o==="inert"?"":"true")})}return i&&f.forEach(v=>{const b=(zb.get(v)||0)+1;zb.set(v,b),g.push(v),b===1&&v.setAttribute(o6,"")}),wR+=1,()=>{l&&m.forEach(v=>{const y=(l.get(v)||0)-1;l.set(v,y),y||(!u?.has(v)&&o&&v.removeAttribute(o),u?.delete(v))}),i&&g.forEach(v=>{const b=(zb.get(v)||0)-1;zb.set(v,b),b||v.removeAttribute(o6)}),wR-=1,wR||(yR.inert=new WeakMap,yR["aria-hidden"]=new WeakMap,jR.inert=new WeakSet,jR["aria-hidden"]=new WeakSet,zb=new WeakMap)}}function f6(e,t={}){const{ariaHidden:n=!1,inert:s=!1,mark:i=!0}=t,o=_n(e[0]).body;return gve(e,o,n,s,{mark:i})}const xve=500,vve={style:{transition:"none"}},kR="data-base-ui-click-trigger",bve="data-base-ui-swipe-ignore",yve="data-swipe-ignore",jve=`[${bve}]`,wve=`[${yve}]`,h6={fallbackAxisSide:"none"},m6={fallbackAxisSide:"end"},kve={clipPath:"inset(50%)",position:"fixed",top:0,left:0},p6=p.createContext(null),g6=()=>p.useContext(p6),Sve=$b("portal");function x6(e={}){const{ref:t,container:n,componentProps:s=yr,elementProps:i}=e,o=lg(),u=g6()?.portalNode,[d,f]=p.useState(null),[m,g]=p.useState(null),v=qe(w=>{w!==null&&g(w)}),b=p.useRef(null);Ge(()=>{if(n===null){b.current&&(b.current=null,g(null),f(null));return}const w=(n&&(kO(n)?n:n.current))??u??document.body;if(w==null){b.current&&(b.current=null,g(null),f(null));return}b.current!==w&&(b.current=w,g(null),f(w))},[n,u]);const y=Kt("div",s,{ref:[t,v],props:[{id:o,[Sve]:""},i]}),k=d&&y?xr.createPortal(y,d):null;return{node:m,nodeId:p.isValidElement(y)?y.props.id:void 0,subtree:k}}const eS=p.forwardRef(function(t,n){const{render:s,className:i,style:o,children:l,container:u,portalOwnerRole:d,...f}=t,{node:m,nodeId:g,subtree:v}=x6({container:u,ref:n,componentProps:t,elementProps:f}),b=p.useRef(null),y=p.useRef(null),k=p.useRef(null),w=p.useRef(null),[S,N]=p.useState(null),C=p.useRef(!1),T=S?.modal,P=S?.open,O=!!S&&!S.modal&&S.open&&!!m;p.useEffect(()=>{if(!m||T)return;function R(M){m&&M.relatedTarget&&dg(M)&&(M.type==="focusin"?C.current&&(DU(m),C.current=!1):(uxe(m),C.current=!0))}return Ol(kn(m,"focusin",R,!0),kn(m,"focusout",R,!0))},[m,T]),Ge(()=>{!m||P!==!0||!C.current||(DU(m),C.current=!1)},[P,m]);const A=p.useMemo(()=>({beforeOutsideRef:b,afterOutsideRef:y,beforeInsideRef:k,afterInsideRef:w,portalNode:m,setFocusManagerState:N}),[m]);return r.jsxs(p.Fragment,{children:[v,r.jsxs(p6.Provider,{value:A,children:[O&&m&&r.jsx(Th,{"data-type":"outside",ref:b,onFocus:R=>{if(dg(R,m))k.current?.focus();else{const M=S?S.domReference:null;MU(M)?.focus()}}}),O&&m&&r.jsx("span",{role:d,"aria-owns":g,style:kve}),m&&xr.createPortal(l,m),O&&m&&r.jsx(Th,{"data-type":"outside",ref:y,onFocus:R=>{if(dg(R,m))w.current?.focus();else{const M=S?S.domReference:null;iR(M)?.focus(),S?.closeOnFocusOut&&S?.onOpenChange(!1,Nt(Fd,R.nativeEvent))}}})]})]})});function v6(){const e=new Map;return{emit(t,n){e.get(t)?.forEach(s=>s(n))},on(t,n){e.has(t)||e.set(t,new Set),e.get(t).add(n)},off(t,n){e.get(t)?.delete(n)}}}class Nve{constructor(){Cn(this,"nodesRef",{current:[]});Cn(this,"events",v6())}addNode(t){this.nodesRef.current.push(t)}removeNode(t){const n=this.nodesRef.current.findIndex(s=>s===t);n!==-1&&this.nodesRef.current.splice(n,1)}}const b6=p.createContext(null),y6=p.createContext(null),xg=()=>p.useContext(b6)?.id||null,Oh=e=>{const t=p.useContext(y6);return e??t};function Cve(e){const t=lg(),n=Oh(e),s=xg();return Ge(()=>{if(!t)return;const i={id:t,parentId:s};return n?.addNode(i),()=>{n?.removeNode(i)}},[n,t,s]),t}function Ave(e){const{children:t,id:n}=e,s=xg();return r.jsx(b6.Provider,{value:p.useMemo(()=>({id:n,parentId:s}),[n,s]),children:t})}function Eve(e){const{children:t,externalTree:n}=e,s=$s(()=>n??new Nve).current;return r.jsx(y6.Provider,{value:s,children:t})}function Tve(e,t){const n=vr(Er(e));return e instanceof n.KeyboardEvent?"keyboard":e instanceof n.FocusEvent?t||"keyboard":"pointerType"in e?e.pointerType||"keyboard":"touches"in e?"touch":e instanceof n.MouseEvent?t||(e.detail===0?"keyboard":"mouse"):""}const j6=20;let Ud=[];function SR(){Ud=Ud.filter(e=>e.deref()?.isConnected)}function w6(e){SR(),e&&Ha(e)!=="body"&&(Ud.push(new WeakRef(e)),Ud.length>j6&&(Ud=Ud.slice(-j6)))}function k6(){return SR(),Ud[Ud.length-1]?.deref()}function Ove(e){return e?aR(e)?e:Pb(e)[0]||e:null}function S6(e){if(e.hasAttribute("tabindex")&&!e.hasAttribute("data-tabindex")||!e.getAttribute("role")?.includes("dialog"))return;const n=PU(e).filter(i=>{const o=i.getAttribute("data-tabindex")||"";return aR(i)||i.hasAttribute("data-tabindex")&&!o.startsWith("-")}),s=e.getAttribute("tabindex");n.length===0?s!=="0"&&(e.setAttribute("tabindex","0"),e.setAttribute("data-tabindex","0")):(s!=="-1"||e.hasAttribute("data-tabindex")&&e.getAttribute("data-tabindex")!=="-1")&&(e.setAttribute("tabindex","-1"),e.setAttribute("data-tabindex","-1"))}function tS(e){const{context:t,children:n,disabled:s=!1,initialFocus:i=!0,returnFocus:o=!0,restoreFocus:l=!1,modal:u=!0,closeOnFocusOut:d=!0,openInteractionType:f="",nextFocusableElement:m,previousFocusableElement:g,beforeContentFocusGuardRef:v,externalTree:b,getInsideElements:y}=e,k="rootStore"in t?t.rootStore:t,w=k.useState("open"),S=k.useState("domReferenceElement"),N=k.useState("floatingElement"),{events:C,dataRef:T}=k.context,P=qe(()=>T.current.floatingContext?.nodeId),O=i===!1,A=XO(S)&&O,R=ss(i),M=ss(o),_=ss(f),L=ss(w),$=Oh(b),D=g6(),F=p.useRef(!1),V=p.useRef(!1),q=p.useRef(!1),Q=p.useRef(null),X=p.useRef(""),U=p.useRef(""),z=p.useRef(null),K=p.useRef(null),J=lo(z,v,D?.beforeInsideRef),ee=lo(K,D?.afterInsideRef),H=fa(),G=fa(),Y=fg(),se=D!=null,re=_k(N),ne=qe((oe=re)=>oe?Pb(oe):[]),de=qe(()=>y?.().filter(oe=>oe!=null)??[]);p.useEffect(()=>{if(s||!u)return;function oe(te){te.key==="Tab"&&Et(re,Ys(_n(re)))&&ne().length===0&&!A&&da(te)}const je=_n(re);return kn(je,"keydown",oe)},[s,re,u,A,ne]),p.useEffect(()=>{if(s||!w)return;const oe=_n(re);function je(){q.current=!1}function te(he){const ce=Er(he),ye=de(),fe=Et(N,ce)||Et(S,ce)||Et(D?.portalNode,ce)||ye.some(Le=>Le===ce||Et(Le,ce));q.current=!fe,U.current=he.pointerType||"keyboard",ce?.closest(`[${kR}]`)&&(V.current=!0,G.start(0,()=>{V.current=!1}))}function le(){U.current="keyboard"}return Ol(kn(oe,"pointerdown",te,!0),kn(oe,"pointerup",je,!0),kn(oe,"pointercancel",je,!0),kn(oe,"keydown",le,!0),je)},[s,N,S,re,w,D,G,de]),p.useEffect(()=>{if(s||!d)return;const oe=_n(re);function je(){V.current=!0,G.start(0,()=>{V.current=!1})}function te(ye){const fe=Er(ye);aR(fe)&&(Q.current=fe)}function le(ye){const fe=ye.relatedTarget,Le=ye.currentTarget,pe=Er(ye);u&&fe==null&&pe!=null&&Et(N,pe)&&w6(pe),queueMicrotask(()=>{const xe=P(),Se=k.context.triggerElements,ge=de(),ue=fe?.hasAttribute($b("focus-guard"))&&[z.current,K.current,D?.beforeInsideRef.current,D?.afterInsideRef.current,D?.beforeOutsideRef.current,D?.afterOutsideRef.current,pu(g),pu(m)].includes(fe),be=!(Et(S,fe)||Et(N,fe)||Et(fe,N)||Et(D?.portalNode,fe)||ge.some(ve=>ve===fe||Et(ve,fe))||Se.hasMatchingElement(ve=>Et(ve,fe))||ue||$&&(Dd($.nodesRef.current,xe).find(ve=>Et(ve.context?.elements.floating,fe)||Et(ve.context?.elements.domReference,fe))||jU($.nodesRef.current,xe).find(ve=>[ve.context?.elements.floating,_k(ve.context?.elements.floating)].includes(fe)||ve.context?.elements.domReference===fe)));if(Le===S&&re&&S6(re),l&&Le!==S&&!Fk(pe)&&Ys(oe)===oe.body){if(br(re)&&(re.focus(),l==="popup")){Y.request(()=>{re.focus()});return}const ve=ne(),De=Q.current,Ie=(De&&ve.includes(De)?De:null)||ve[ve.length-1]||re;br(Ie)&&Ie.focus()}if(T.current.insideReactTree){T.current.insideReactTree=!1;return}(A||!u)&&fe&&be&&!V.current&&(A||fe!==k6())&&(F.current=!0,k.setOpen(!1,Nt(Fd,ye)))})}function he(){q.current||(T.current.insideReactTree=!0,H.start(0,()=>{T.current.insideReactTree=!1}))}const ce=br(S)?S:null;if(!(!N&&!ce))return Ol(ce&&kn(ce,"focusout",le),ce&&kn(ce,"pointerdown",je),N&&kn(N,"focusin",te),N&&kn(N,"focusout",le),N&&D&&kn(N,"focusout",he,!0))},[s,S,N,re,u,$,D,k,d,l,ne,A,P,T,H,G,Y,m,g,de]),p.useEffect(()=>{if(s||!N||!w)return;const oe=Array.from(D?.portalNode?.querySelectorAll(`[${$b("portal")}]`)||[]),te=($?jU($.nodesRef.current,P()):[]).find(Le=>XO(Le.context?.elements.domReference||null))?.context?.elements.domReference,he=[...[N,...oe,z.current,K.current,D?.beforeOutsideRef.current,D?.afterOutsideRef.current,...de()],te,pu(g),pu(m),A?S:null].filter(Le=>Le!=null),ce=f6(he,{ariaHidden:u||A,mark:!1}),ye=[N,...oe].filter(Le=>Le!=null),fe=f6(ye);return()=>{fe(),ce()}},[w,s,S,N,u,D,A,$,P,m,g,de]),Ge(()=>{if(!w||s||!br(re))return;X.current="",U.current="";const oe=_n(re),je=Ys(oe);queueMicrotask(()=>{const te=R.current,le=typeof te=="function"?te(_.current||""):te;if(le===void 0||le===!1||Et(re,je))return;let ce=null;const ye=()=>(ce==null&&(ce=ne(re)),ce[0]||re);let fe;le===!0||le===null?fe=ye():fe=pu(le),fe=fe||ye();const Le=Et(re,Ys(oe));Jk(fe,{preventScroll:fe===re,shouldFocus(){if(!L.current)return!1;if(Le)return!0;const pe=Ys(oe);return!(pe!==fe&&Et(re,pe))}})})},[s,w,re,ne,R,_,L]),Ge(()=>{if(s||!re)return;const oe=_n(re),je=Ys(oe),te=_.current==null;w6(je);function le(ce){if(ce.open||(X.current=Tve(ce.nativeEvent,U.current)),ce.reason===Va&&ce.nativeEvent.type==="mouseleave"&&(F.current=!0),ce.reason===Wk)if(ce.nested)F.current=!1;else if(Dk(ce.nativeEvent)||QO(ce.nativeEvent))F.current=!1;else{let ye=!1;_n(re).createElement("div").focus({get preventScroll(){return ye=!0,!1}}),ye?F.current=!1:F.current=!0}}C.on("openchange",le);function he(ce){const ye=M.current;let fe=typeof ye=="function"?ye(ce):ye;if(fe===void 0||fe===!1)return null;fe===null&&(fe=!0);const Le=S?.isConnected?S:null,pe=je?.isConnected&&Ha(je)!=="body"?je:null;let xe=te?pe||Le:Le||pe;return xe||(xe=k6()||null),typeof fe=="boolean"?xe:pu(fe)||xe||null}return()=>{C.off("openchange",le);const ce=Ys(oe),ye=de(),fe=Et(N,ce)||ye.some(Se=>Se===ce||Et(Se,ce))||$&&Dd($.nodesRef.current,P(),!1).some(Se=>Et(Se.context?.elements.floating,ce)),Le=M.current,pe=X.current,xe=he(pe);queueMicrotask(()=>{const Se=Ove(xe),ge=typeof Le!="boolean";if(Le&&!F.current&&br(Se)&&(!(!ge&&Se!==ce&&ce!==oe.body)||fe)){const ue={preventScroll:!0};pe==="keyboard"&&(ue.focusVisible=!0),Se.focus(ue)}F.current=!1})}},[s,N,re,M,_,C,$,S,P,de]),Ge(()=>{if(!du||w||!N)return;const oe=Ys(_n(N));!br(oe)||!Ik(oe)||Et(N,oe)&&oe.blur()},[w,N]),Ge(()=>{if(!(s||!D))return D.setFocusManagerState({modal:u,closeOnFocusOut:d,open:w,onOpenChange:k.setOpen,domReference:S}),()=>{D.setFocusManagerState(null)}},[s,D,u,w,k,d,S]),Ge(()=>{if(!(s||!re))return S6(re),()=>{queueMicrotask(SR)}},[s,re]);const ie=!s&&(u?!A:!0)&&(se||u);return r.jsxs(p.Fragment,{children:[ie&&r.jsx(Th,{"data-type":"inside",ref:J,onFocus:oe=>{if(u){const je=ne();Jk(je[je.length-1])}else D?.portalNode&&(F.current=!1,dg(oe,D.portalNode)?iR(S)?.focus():pu(g??D.beforeOutsideRef)?.focus())}}),n,ie&&r.jsx(Th,{"data-type":"inside",ref:ee,onFocus:oe=>{u?Jk(ne()[0]):D?.portalNode&&(d&&(F.current=!0),dg(oe,D.portalNode)?MU(S)?.focus():pu(m??D.afterOutsideRef)?.focus())}})]})}function Bb(e,t={}){const{enabled:n=!0,event:s="click",toggle:i=!0,ignoreMouse:o=!1,stickIfOpen:l=!0,touchOpenDelay:u=0,reason:d=xu}=t,f="rootStore"in e?e.rootStore:e,m=f.context.dataRef,g=p.useRef(void 0),v=fg(),b=fa(),y=p.useMemo(()=>{function k(S,N,C,T){const P=Nt(d,N,C);S&&T==="touch"&&u>0?b.start(u,()=>{f.setOpen(!0,P)}):f.setOpen(S,P)}function w(S,N,C){const T=m.current.openEvent,P=f.select("domReferenceElement")!==N;return S&&P||!S||!i?!0:T&&l?!C(T.type):!1}return{onPointerDown(S){g.current=Ld(S.pointerType,!0)&&QO(S.nativeEvent)?"virtual":S.pointerType},onMouseDown(S){const N=g.current,C=S.nativeEvent,T=f.select("open");if(S.button!==0||s==="click"||Ld(N,!0)&&o)return;const P=w(T,S.currentTarget,R=>R==="click"||R==="mousedown"),O=Er(C);if(Ik(O)){k(P,C,O,N);return}const A=S.currentTarget;v.request(()=>{k(P,C,A,N)})},onClick(S){if(s==="mousedown-only")return;const N=g.current;if(s==="mousedown"&&N){g.current=void 0;return}if(Ld(N,!0)&&o)return;const C=f.select("open"),T=w(C,S.currentTarget,P=>P==="click"||P==="mousedown"||P==="keydown"||P==="keyup");k(T,S.nativeEvent,S.currentTarget,N)},onKeyDown(){g.current=void 0}}},[m,s,o,d,f,l,i,v,b,u]);return p.useMemo(()=>n?{reference:y}:yr,[n,y])}function Rve(e,t){let n=null,s=null,i=!1;return{contextElement:e||void 0,getBoundingClientRect(){const o=e?.getBoundingClientRect()||{width:0,height:0,x:0,y:0},l=t.axis==="x"||t.axis==="both",u=t.axis==="y"||t.axis==="both",d=["mouseenter","mousemove"].includes(t.dataRef.current.openEvent?.type||"")&&t.pointerType!=="touch";let f=o.width,m=o.height,g=o.x,v=o.y;return n==null&&t.x&&l&&(n=o.x-t.x),s==null&&t.y&&u&&(s=o.y-t.y),g-=n||0,v-=s||0,f=0,m=0,!i||d?(f=t.axis==="y"?o.width:0,m=t.axis==="x"?o.height:0,g=l&&t.x!=null?t.x:g,v=u&&t.y!=null?t.y:v):i&&!d&&(m=t.axis==="x"?o.height:m,f=t.axis==="y"?o.width:f),i=!0,{width:f,height:m,x:g,y:v,top:v,right:g+f,bottom:v+m,left:g}}}}function N6(e){return e!=null&&e.clientX!=null}function Pve(e,t={}){const{enabled:n=!0,axis:s="both"}=t,i="rootStore"in e?e.rootStore:e,o=i.useState("open"),l=i.useState("floatingElement"),u=i.useState("domReferenceElement"),d=i.context.dataRef,f=p.useRef(!1),m=p.useRef(null),[g,v]=p.useState(),[b,y]=p.useState([]),k=qe(T=>{i.set("positionReference",T)}),w=qe((T,P,O)=>{f.current||d.current.openEvent&&!N6(d.current.openEvent)||i.set("positionReference",Rve(O??u,{x:T,y:P,axis:s,dataRef:d,pointerType:g}))}),S=qe(T=>{o?m.current||(w(T.clientX,T.clientY,T.currentTarget),y([])):w(T.clientX,T.clientY,T.currentTarget)}),N=Ld(g)?l:o;p.useEffect(()=>{if(!n){k(u);return}if(!N)return;function T(){m.current?.(),m.current=null}const P=vr(l);function O(A){const R=Er(A);Et(l,R)?T():w(A.clientX,A.clientY)}return!d.current.openEvent||N6(d.current.openEvent)?m.current=kn(P,"mousemove",O):k(u),T},[N,n,l,d,u,i,w,k,b]),p.useEffect(()=>()=>{i.set("positionReference",null)},[i]),p.useEffect(()=>{n&&!l&&(f.current=!1)},[n,l]),p.useEffect(()=>{!n&&o&&(f.current=!0)},[n,o]);const C=p.useMemo(()=>{function T(P){v(P.pointerType)}return{onPointerDown:T,onPointerEnter:T,onMouseMove:S,onMouseEnter:S}},[S]);return p.useMemo(()=>n?{reference:C,trigger:C}:{},[n,C])}function Ive(){return!1}function Mve(e){return{escapeKey:typeof e=="boolean"?e:e?.escapeKey??!1,outsidePress:typeof e=="boolean"?e:e?.outsidePress??!0}}function Fb(e,t={}){const{enabled:n=!0,escapeKey:s=!0,outsidePress:i=!0,outsidePressEvent:o="sloppy",referencePress:l=Ive,bubbles:u,externalTree:d}=t,f="rootStore"in e?e.rootStore:e,m=f.useState("open"),g=f.useState("floatingElement"),{dataRef:v,events:b}=f.context,y=Oh(d),k=qe(typeof i=="function"?i:()=>!1),w=typeof i=="function"?k:i,S=w!==!1,N=qe(()=>o),{escapeKey:C,outsidePress:T}=Mve(u),P=p.useRef(!1),O=p.useRef(!1),A=p.useRef(!1),R=p.useRef(!1),M=p.useRef(!1),_=p.useRef(""),L=p.useRef(null),$=fa(),D=fa(),F=qe(()=>{D.clear(),v.current.insideReactTree=!1}),V=qe(H=>{const G=v.current.floatingContext?.nodeId;return(y?Dd(y.nodesRef.current,G):[]).some(se=>se.context?.open&&!se.context.dataRef.current[H])}),q=qe(H=>YO(H,f.select("floatingElement"))||YO(H,f.select("domReferenceElement"))),Q=qe(H=>{l()&&f.setOpen(!1,Nt(xu,H.nativeEvent))}),X=qe(H=>{if(!m||!n||!s||H.key!=="Escape"||M.current||!C&&V("__escapeKeyBubbles"))return;const G=Kge(H)?H.nativeEvent:H,Y=Nt(mg,G);f.setOpen(!1,Y),Y.isCanceled||H.preventDefault(),!C&&!Y.isPropagationAllowed&&H.stopPropagation()}),U=qe(()=>{v.current.insideReactTree=!0,D.start(0,F)}),z=qe(H=>{if(!m||!n||H.button!==0)return;const G=Er(H.nativeEvent);Et(f.select("floatingElement"),G)&&(P.current||(P.current=!0,O.current=!1))}),K=qe(H=>{!m||!n||(H.defaultPrevented||H.nativeEvent.defaultPrevented)&&P.current&&(O.current=!0)});p.useEffect(()=>{function H(G){G.open||(R.current=!1)}return b.on("openchange",H),()=>{b.off("openchange",H)}},[b]),p.useEffect(()=>{if(!m||!n)return m||(R.current=!1),F;v.current.__escapeKeyBubbles=C,v.current.__outsidePressBubbles=T;const H=new Bi,G=new Bi,Y=_n(g);function se(){H.clear(),M.current=!0}function re(){H.start(du?5:0,()=>{M.current=!1})}function ne(){A.current=!0,G.start(0,()=>{A.current=!1})}function de(){P.current=!1,O.current=!1}function ie(){const be=_.current,ve=be==="pen"||!be?"mouse":be,De=N(),Ie=typeof De=="function"?De():De;return typeof Ie=="string"?Ie:Ie[ve]}function oe(be){const ve=ie();return ve==="intentional"&&be.type!=="click"||ve==="sloppy"&&be.type==="click"}function je(be){const ve=v.current.floatingContext?.nodeId,De=y&&Dd(y.nodesRef.current,ve).some(Ie=>YO(be,Ie.context?.elements.floating));return q(be)||De}function te(be){if(oe(be)){be.type!=="click"&&!q(be)&&(G.clear(),A.current=!1),F();return}if(v.current.insideReactTree){F();return}const ve=Er(be),De=`[${$b("inert")}]`,Ie=Un(ve)?ve.getRootNode():null,We=Array.from((ag(Ie)?Ie:_n(f.select("floatingElement"))).querySelectorAll(De)),nt=f.context.triggerElements;if(ve&&(nt.hasElement(ve)||nt.hasMatchingElement(Je=>Et(Je,ve))))return;let kt=Un(ve)?ve:null;for(;kt&&!Rd(kt);){const Je=Pd(kt);if(Rd(Je)||!Un(Je))break;kt=Je}if(!(We.length&&Un(ve)&&!Hge(ve)&&!Et(ve,f.select("floatingElement"))&&We.every(Je=>!Et(kt,Je)))){if(br(ve)&&!("touches"in be)){const Je=Rd(ve),on=Li(ve),nn=/auto|scroll/,On=Je||nn.test(on.overflowX),Rn=Je||nn.test(on.overflowY),gt=On&&ve.clientWidth>0&&ve.scrollWidth>ve.clientWidth,sn=Rn&&ve.clientHeight>0&&ve.scrollHeight>ve.clientHeight,Ke=on.direction==="rtl",zt=sn&&(Ke?be.offsetX<=ve.offsetWidth-ve.clientWidth:be.offsetX>ve.clientWidth),ht=gt&&be.offsetY>ve.clientHeight;if(zt||ht)return}if(!je(be)){if(ie()==="intentional"){if(be.detail!==0&&!Dk(be)&&!R.current)return;if(A.current){G.clear(),A.current=!1;return}}typeof w=="function"&&!w(be)||V("__outsidePressBubbles")||(f.setOpen(!1,Nt(Wk,be)),F())}}}function le(be){ie()!=="sloppy"||be.pointerType==="touch"||!f.select("open")||!n||q(be)||te(be)}function he(be){if(ie()!=="sloppy"||!f.select("open")||!n||q(be))return;const ve=be.touches[0];ve&&(L.current={startTime:Date.now(),startX:ve.clientX,startY:ve.clientY,dismissOnTouchEnd:!1,dismissOnMouseDown:!0},$.start(1e3,()=>{L.current&&(L.current.dismissOnTouchEnd=!1,L.current.dismissOnMouseDown=!1)}))}function ce(be,ve){const De=Er(be);if(!De)return;const Ie=kn(De,be.type,()=>{ve(be),Ie()})}function ye(be){_.current="touch",ce(be,he)}function fe(be){$.clear(),be.type==="pointerdown"&&(be.button===0&&(R.current=!0),_.current=be.pointerType),!(be.type==="mousedown"&&L.current&&!L.current.dismissOnMouseDown)&&ce(be,ve=>{ve.type==="pointerdown"?le(ve):te(ve)})}function Le(be){if(be.type==="pointercancel"&&(R.current=!1),!P.current)return;const ve=O.current;if(de(),ie()==="intentional"){if(be.type==="pointercancel"){ve&&ne();return}if(!je(be)){if(ve){ne();return}typeof w=="function"&&!w(be)||(G.clear(),A.current=!0,F())}}}function pe(be){if(ie()!=="sloppy"||!L.current||q(be))return;const ve=be.touches[0];if(!ve)return;const De=Math.abs(ve.clientX-L.current.startX),Ie=Math.abs(ve.clientY-L.current.startY),We=Math.sqrt(De*De+Ie*Ie);We>5&&(L.current.dismissOnTouchEnd=!0),We>10&&(te(be),$.clear(),L.current=null)}function xe(be){ce(be,pe)}function Se(be){ie()!=="sloppy"||!L.current||q(be)||(L.current.dismissOnTouchEnd&&te(be),$.clear(),L.current=null)}function ge(be){ce(be,Se)}const ue=Ol(s&&Ol(kn(Y,"keydown",X),kn(Y,"compositionstart",se),kn(Y,"compositionend",re)),S&&Ol(kn(Y,"click",fe,!0),kn(Y,"pointerdown",fe,!0),kn(Y,"pointerup",Le,!0),kn(Y,"pointercancel",Le,!0),kn(Y,"mousedown",fe,!0),kn(Y,"mouseup",Le,!0),kn(Y,"touchstart",ye,{capture:!0,passive:!0}),kn(Y,"touchmove",xe,{capture:!0,passive:!0}),kn(Y,"touchend",ge,{capture:!0,passive:!0})));return()=>{ue(),H.clear(),G.clear(),de(),A.current=!1,F()}},[v,g,s,S,w,m,n,C,T,X,F,N,V,q,y,f,$]);const J=p.useMemo(()=>({onKeyDown:X,onPointerDown:Q,onClick:Q}),[X,Q]),ee=p.useMemo(()=>({onKeyDown:X,onPointerDown:K,onMouseDown:K,onClickCapture:U,onMouseDownCapture(H){U(),z(H)},onPointerDownCapture(H){U(),z(H)},onMouseUpCapture:U,onTouchEndCapture:U,onTouchMoveCapture:U}),[X,U,z,K]);return p.useMemo(()=>n?{reference:J,floating:ee,trigger:J}:{},[n,J,ee])}function C6(e,t,n){let{reference:s,floating:i}=e;const o=Ho(t),l=eR(t),u=JO(l),d=Uo(t),f=o==="y",m=s.x+s.width/2-i.width/2,g=s.y+s.height/2-i.height/2,v=s[u]/2-i[u]/2;let b;switch(d){case"top":b={x:m,y:s.y-i.height};break;case"bottom":b={x:m,y:s.y+s.height};break;case"right":b={x:s.x+s.width,y:g};break;case"left":b={x:s.x-i.width,y:g};break;default:b={x:s.x,y:s.y}}const y=mu(t);return y&&(b[l]+=v*(y==="end"?1:-1)*(n&&f?-1:1)),b}async function _ve(e,t){var n;t===void 0&&(t={});const{x:s,y:i,platform:o,rects:l,elements:u,strategy:d}=e,{boundary:f="clippingAncestors",rootBoundary:m="viewport",elementContext:g="floating",altBoundary:v=!1,padding:b=0}=$d(t,e),y=NU(b),w=u[v?g==="floating"?"reference":"floating":g],S=Rb(await o.getClippingRect({element:(n=await(o.isElement==null?void 0:o.isElement(w)))==null||n?w:w.contextElement||await(o.getDocumentElement==null?void 0:o.getDocumentElement(u.floating)),boundary:f,rootBoundary:m,strategy:d})),N=g==="floating"?{x:s,y:i,width:l.floating.width,height:l.floating.height}:l.reference,C=await(o.getOffsetParent==null?void 0:o.getOffsetParent(u.floating)),T=await(o.isElement==null?void 0:o.isElement(C))&&await(o.getScale==null?void 0:o.getScale(C))||{x:1,y:1},P=Rb(o.convertOffsetParentRelativeRectToViewportRelativeRect?await o.convertOffsetParentRelativeRectToViewportRelativeRect({elements:u,rect:N,offsetParent:C,strategy:d}):N);return{top:(S.top-P.top+y.top)/T.y,bottom:(P.bottom-S.bottom+y.bottom)/T.y,left:(S.left-P.left+y.left)/T.x,right:(P.right-S.right+y.right)/T.x}}const Dve=50,Lve=async(e,t,n)=>{const{placement:s="bottom",strategy:i="absolute",middleware:o=[],platform:l}=n,u=l.detectOverflow?l:{...l,detectOverflow:_ve},d=await(l.isRTL==null?void 0:l.isRTL(t));let f=await l.getElementRects({reference:e,floating:t,strategy:i}),{x:m,y:g}=C6(f,s,d),v=s,b=0;const y={};for(let k=0;kF<=0)){var L,$;const F=(((L=o.flip)==null?void 0:L.index)||0)+1,V=A[F];if(V&&(!(g==="alignment"?N!==Ho(V):!1)||_.every(X=>Ho(X.placement)===N?X.overflows[0]>0:!0)))return{data:{index:F,overflows:_},reset:{placement:V}};let q=($=_.filter(Q=>Q.overflows[0]<=0).sort((Q,X)=>Q.overflows[1]-X.overflows[1])[0])==null?void 0:$.placement;if(!q)switch(b){case"bestFit":{var D;const Q=(D=_.filter(X=>{if(O){const U=Ho(X.placement);return U===N||U==="y"}return!0}).map(X=>[X.placement,X.overflows.filter(U=>U>0).reduce((U,z)=>U+z,0)]).sort((X,U)=>X[1]-U[1])[0])==null?void 0:D[0];Q&&(q=Q);break}case"initialPlacement":q=u;break}if(i!==q)return{reset:{placement:q}}}return{}}}},A6=new Set(["left","top"]);async function zve(e,t){const{placement:n,platform:s,elements:i}=e,o=await(s.isRTL==null?void 0:s.isRTL(i.floating)),l=Uo(n),u=mu(n),d=Ho(n)==="y",f=A6.has(l)?-1:1,m=o&&d?-1:1,g=$d(t,e);let{mainAxis:v,crossAxis:b,alignmentAxis:y}=typeof g=="number"?{mainAxis:g,crossAxis:0,alignmentAxis:null}:{mainAxis:g.mainAxis||0,crossAxis:g.crossAxis||0,alignmentAxis:g.alignmentAxis};return u&&typeof y=="number"&&(b=u==="end"?y*-1:y),d?{x:b*m,y:v*f}:{x:v*f,y:b*m}}const Bve=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,s;const{x:i,y:o,placement:l,middlewareData:u}=t,d=await zve(t,e);return l===((n=u.offset)==null?void 0:n.placement)&&(s=u.arrow)!=null&&s.alignmentOffset?{}:{x:i+d.x,y:o+d.y,data:{...d,placement:l}}}}},Fve=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:s,placement:i,platform:o}=t,{mainAxis:l=!0,crossAxis:u=!1,limiter:d={fn:N=>{let{x:C,y:T}=N;return{x:C,y:T}}},...f}=$d(e,t),m={x:n,y:s},g=await o.detectOverflow(t,f),v=Ho(i),b=ZO(v);let y=m[b],k=m[v];const w=(N,C)=>wU(C+g[N==="y"?"top":"left"],C,C-g[N==="y"?"bottom":"right"]);l&&(y=w(b,y)),u&&(k=w(v,k));const S=d.fn({...t,[b]:y,[v]:k});return{...S,data:{x:S.x-n,y:S.y-s,enabled:{[b]:l,[v]:u}}}}}},Uve=function(e){return e===void 0&&(e={}),{options:e,fn(t){var n,s;const{x:i,y:o,placement:l,rects:u,middlewareData:d}=t,{offset:f=0,mainAxis:m=!0,crossAxis:g=!0}=$d(e,t),v={x:i,y:o},b=Ho(l),y=ZO(b);let k=v[y],w=v[b];const S=$d(f,t),N=typeof S=="number"?{mainAxis:S,crossAxis:0}:{mainAxis:(n=S.mainAxis)!=null?n:0,crossAxis:(s=S.crossAxis)!=null?s:0};if(m){const P=y==="y"?"height":"width",O=u.reference[y]-u.floating[P]+N.mainAxis,A=u.reference[y]+u.reference[P]-N.mainAxis;kA&&(k=A)}if(g){var C,T;const P=y==="y"?"width":"height",O=A6.has(Uo(l)),A=u.reference[b]-u.floating[P]+(O&&((C=d.offset)==null?void 0:C[b])||0)+(O?0:N.crossAxis),R=u.reference[b]+u.reference[P]+(O?0:((T=d.offset)==null?void 0:T[b])||0)-(O?N.crossAxis:0);wR&&(w=R)}return{[y]:k,[b]:w}}}},Hve=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:s,platform:i,elements:o}=t,{apply:l=()=>{},...u}=$d(e,t),d=await i.detectOverflow(t,u),f=Uo(n),m=mu(n),g=Ho(n)==="y",{width:v,height:b}=s.floating;let y,k;f==="top"||f==="bottom"?(y=f,k=m===(await(i.isRTL==null?void 0:i.isRTL(o.floating))?"start":"end")?"left":"right"):(k=f,y=m==="end"?"top":"bottom");const w=b-d.top-d.bottom,S=v-d.left-d.right,N=ug(b-d[y],w),C=ug(v-d[k],S),T=t.middlewareData.shift,P=!T;let O=N,A=C;T!=null&&T.enabled.x&&(A=S),T!=null&&T.enabled.y&&(O=w),P&&!m&&(g?A=v-2*fu(d.left,d.right):O=b-2*fu(d.top,d.bottom)),await l({...t,availableWidth:A,availableHeight:O});const R=await i.getDimensions(o.floating);return v!==R.width||b!==R.height?{reset:{rects:!0}}:{}}}};function E6(e){const t=Li(e);let n=parseFloat(t.width)||0,s=parseFloat(t.height)||0;const i=br(e),o=i?e.offsetWidth:n,l=i?e.offsetHeight:s,u=Lk(n)!==o||Lk(s)!==l;return u&&(n=o,s=l),{width:n,height:s,$:u}}function NR(e){return Un(e)?e:e.contextElement}function vg(e){const t=NR(e);if(!br(t))return hu(1);const n=t.getBoundingClientRect(),{width:s,height:i,$:o}=E6(t);let l=(o?Lk(n.width):n.width)/s,u=(o?Lk(n.height):n.height)/i;return(!l||!Number.isFinite(l))&&(l=1),(!u||!Number.isFinite(u))&&(u=1),{x:l,y:u}}const Vve=hu(0);function T6(e){const t=vr(e);return!CO()||!t.visualViewport?Vve:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function Kve(e,t,n){return t===void 0&&(t=!1),!!n&&t&&n===vr(e)}function Rh(e,t,n,s){t===void 0&&(t=!1),n===void 0&&(n=!1);const i=e.getBoundingClientRect(),o=NR(e);let l=hu(1);t&&(s?Un(s)&&(l=vg(s)):l=vg(e));const u=Kve(o,n,s)?T6(o):hu(0);let d=(i.left+u.x)/l.x,f=(i.top+u.y)/l.y,m=i.width/l.x,g=i.height/l.y;if(o&&s){const v=vr(o),b=Un(s)?vr(s):s;let y=v,k=AO(y);for(;k&&b!==y;){const w=vg(k),S=k.getBoundingClientRect(),N=Li(k),C=S.left+(k.clientLeft+parseFloat(N.paddingLeft))*w.x,T=S.top+(k.clientTop+parseFloat(N.paddingTop))*w.y;d*=w.x,f*=w.y,m*=w.x,g*=w.y,d+=C,f+=T,y=vr(k),k=AO(y)}}return Rb({width:m,height:g,x:d,y:f})}function nS(e,t){const n=jk(e).scrollLeft;return t?t.left+n:Rh(lu(e)).left+n}function O6(e,t){const n=e.getBoundingClientRect(),s=n.left+t.scrollLeft-nS(e,n),i=n.top+t.scrollTop;return{x:s,y:i}}function qve(e){let{elements:t,rect:n,offsetParent:s,strategy:i}=e;const o=i==="fixed",l=lu(s),u=t?yk(t.floating):!1;if(s===l||u&&o)return n;let d={scrollLeft:0,scrollTop:0},f=hu(1);const m=hu(0),g=br(s);if((g||!o)&&((Ha(s)!=="body"||Cb(l))&&(d=jk(s)),g)){const b=Rh(s);f=vg(s),m.x=b.x+s.clientLeft,m.y=b.y+s.clientTop}const v=l&&!g&&!o?O6(l,d):hu(0);return{width:n.width*f.x,height:n.height*f.y,x:n.x*f.x-d.scrollLeft*f.x+m.x+v.x,y:n.y*f.y-d.scrollTop*f.y+m.y+v.y}}function Gve(e){return e.getClientRects?Array.from(e.getClientRects()):[]}function Wve(e){const t=jk(e),n=e.ownerDocument.body,s=fu(e.scrollWidth,e.clientWidth,n.scrollWidth,n.clientWidth),i=fu(e.scrollHeight,e.clientHeight,n.scrollHeight,n.clientHeight);let o=-t.scrollLeft+nS(e);const l=-t.scrollTop;return Li(n).direction==="rtl"&&(o+=fu(e.clientWidth,n.clientWidth)-s),{width:s,height:i,x:o,y:l}}const Yve=25;function Xve(e,t,n){n===void 0&&(n="viewport");const s=n==="layoutViewport",i=vr(e),o=lu(e),l=i.visualViewport;let u=o.clientWidth,d=o.clientHeight,f=0,m=0;if(l){const v=!CO()||t==="fixed";s?v||(f=-l.offsetLeft,m=-l.offsetTop):(u=l.width,d=l.height,v&&(f=l.offsetLeft,m=l.offsetTop))}if(nS(o)<=0){const v=o.ownerDocument,b=v.body,y=getComputedStyle(b),k=v.compatMode==="CSS1Compat"&&parseFloat(y.marginLeft)+parseFloat(y.marginRight)||0,w=Math.abs(o.clientWidth-b.clientWidth-k),S=getComputedStyle(o).scrollbarGutter==="stable both-edges"?w/2:w;S<=Yve&&(u-=S)}return{width:u,height:d,x:f,y:m}}function Qve(e,t){const n=Rh(e,!0,t==="fixed"),s=n.top+e.clientTop,i=n.left+e.clientLeft,o=vg(e),l=e.clientWidth*o.x,u=e.clientHeight*o.y,d=i*o.x,f=s*o.y;return{width:l,height:u,x:d,y:f}}function R6(e,t,n){let s;if(t==="viewport"||t==="layoutViewport")s=Xve(e,n,t);else if(t==="document")s=Wve(lu(e));else if(Un(t))s=Qve(t,n);else{const i=T6(e);s={x:t.x-i.x,y:t.y-i.y,width:t.width,height:t.height}}return Rb(s)}function Zve(e,t){const n=t.get(e);if(n)return n;let s=ig(e,[],!1).filter(u=>Un(u)&&Ha(u)!=="body"),i=null;const o=Li(e).position==="fixed";let l=o?Pd(e):e;for(;Un(l)&&!Rd(l);){const u=Li(l),d=NO(l),f=i?i.position:o?"fixed":"";!d&&(f==="fixed"||f==="absolute"&&u.position==="static")?s=s.filter(g=>g!==l):i=u,l=Pd(l)}return t.set(e,s),s}function Jve(e){let{element:t,boundary:n,rootBoundary:s,strategy:i}=e;const l=[...n==="clippingAncestors"?yk(t)?[]:Zve(t,this._c):[].concat(n),s],u=R6(t,l[0],i);let d=u.top,f=u.right,m=u.bottom,g=u.left;for(let v=1;v{u(!1,1e-7)},1e3)}A=!1}try{s=new IntersectionObserver(R,{...O,root:o.ownerDocument})}catch{s=new IntersectionObserver(R,O)}s.observe(e)}const d=vr(e),f=()=>u(n);return d.addEventListener("resize",f),u(!0),()=>{d.removeEventListener("resize",f),l()}}function D6(e,t,n,s){s===void 0&&(s={});const{ancestorScroll:i=!0,ancestorResize:o=!0,elementResize:l=typeof ResizeObserver=="function",layoutShift:u=typeof IntersectionObserver=="function",animationFrame:d=!1}=s,f=NR(e),m=i||o?[...f?ig(f):[],...t?ig(t):[]]:[];m.forEach(S=>{i&&S.addEventListener("scroll",n),o&&S.addEventListener("resize",n)});const g=f&&u?sbe(f,n,o):null;let v=-1,b=null;l&&(b=new ResizeObserver(S=>{let[N]=S;N&&N.target===f&&b&&t&&(b.unobserve(t),cancelAnimationFrame(v),v=requestAnimationFrame(()=>{var C;(C=b)==null||C.observe(t)})),n()}),f&&!d&&b.observe(f),t&&b.observe(t));let y,k=d?Rh(e):null;d&&w();function w(){const S=Rh(e);k&&!_6(k,S)&&n(),k=S,y=requestAnimationFrame(w)}return n(),()=>{var S;m.forEach(N=>{i&&N.removeEventListener("scroll",n),o&&N.removeEventListener("resize",n)}),g?.(),(S=b)==null||S.disconnect(),b=null,d&&cancelAnimationFrame(y)}}const abe=Bve,ibe=Fve,obe=$ve,lbe=Hve,cbe=Uve,ube=(e,t,n)=>{const s=new Map,i=n??{},o={...M6,...i.platform,_c:s};return Lve(e,t,{...i,platform:o})};var dbe=typeof document<"u",fbe=function(){},rS=dbe?p.useLayoutEffect:fbe;function sS(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let n,s,i;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(s=n;s--!==0;)if(!sS(e[s],t[s]))return!1;return!0}if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(s=n;s--!==0;)if(!{}.hasOwnProperty.call(t,i[s]))return!1;for(s=n;s--!==0;){const o=i[s];if(!(o==="_owner"&&e.$$typeof)&&!sS(e[o],t[o]))return!1}return!0}return e!==e&&t!==t}function L6(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function $6(e,t){const n=L6(e);return Math.round(t*n)/n}function AR(e){const t=p.useRef(e);return rS(()=>{t.current=e}),t}function hbe(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:s=[],platform:i,elements:{reference:o,floating:l}={},transform:u=!0,whileElementsMounted:d,open:f}=e,[m,g]=p.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[v,b]=p.useState(s);sS(v,s)||b(s);const[y,k]=p.useState(null),[w,S]=p.useState(null),N=p.useCallback(X=>{X!==O.current&&(O.current=X,k(X))},[]),C=p.useCallback(X=>{X!==A.current&&(A.current=X,S(X))},[]),T=o||y,P=l||w,O=p.useRef(null),A=p.useRef(null),R=p.useRef(m),M=d!=null,_=AR(d),L=AR(i),$=AR(f),D=p.useCallback(()=>{if(!O.current||!A.current)return;const X={placement:t,strategy:n,middleware:v};L.current&&(X.platform=L.current),ube(O.current,A.current,X).then(U=>{const z={...U,isPositioned:$.current!==!1};F.current&&!sS(R.current,z)&&(R.current=z,xr.flushSync(()=>{g(z)}))})},[v,t,n,L,$]);rS(()=>{f===!1&&R.current.isPositioned&&(R.current.isPositioned=!1,g(X=>({...X,isPositioned:!1})))},[f]);const F=p.useRef(!1);rS(()=>(F.current=!0,()=>{F.current=!1}),[]),rS(()=>{if(T&&(O.current=T),P&&(A.current=P),T&&P){if(_.current)return _.current(T,P,D);D()}},[T,P,D,_,M]);const V=p.useMemo(()=>({reference:O,floating:A,setReference:N,setFloating:C}),[N,C]),q=p.useMemo(()=>({reference:T,floating:P}),[T,P]),Q=p.useMemo(()=>{const X={position:n,left:0,top:0};if(!q.floating)return X;const U=$6(q.floating,m.x),z=$6(q.floating,m.y);return u?{...X,transform:"translate("+U+"px, "+z+"px)",...L6(q.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:U,top:z}},[n,u,q.floating,m.x,m.y]);return p.useMemo(()=>({...m,update:D,refs:V,elements:q,floatingStyles:Q}),[m,D,V,q,Q])}const mbe=(e,t)=>{const n=abe(e);return{name:n.name,fn:n.fn,options:[e,t]}},pbe=(e,t)=>{const n=ibe(e);return{name:n.name,fn:n.fn,options:[e,t]}},gbe=(e,t)=>({fn:cbe(e).fn,options:[e,t]}),xbe=(e,t)=>{const n=obe(e);return{name:n.name,fn:n.fn,options:[e,t]}},vbe=(e,t)=>{const n=lbe(e);return{name:n.name,fn:n.fn,options:[e,t]}};var ER={exports:{}},TR={};var z6;function bbe(){if(z6)return TR;z6=1;var e=sg();function t(g,v){return g===v&&(g!==0||1/g===1/v)||g!==g&&v!==v}var n=typeof Object.is=="function"?Object.is:t,s=e.useState,i=e.useEffect,o=e.useLayoutEffect,l=e.useDebugValue;function u(g,v){var b=v(),y=s({inst:{value:b,getSnapshot:v}}),k=y[0].inst,w=y[1];return o(function(){k.value=b,k.getSnapshot=v,d(k)&&w({inst:k})},[g,b,v]),i(function(){return d(k)&&w({inst:k}),g(function(){d(k)&&w({inst:k})})},[g]),l(b),b}function d(g){var v=g.getSnapshot;g=g.value;try{var b=v();return!n(g,b)}catch{return!0}}function f(g,v){return v()}var m=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?f:u;return TR.useSyncExternalStore=e.useSyncExternalStore!==void 0?e.useSyncExternalStore:m,TR}var B6;function F6(){return B6||(B6=1,ER.exports=bbe()),ER.exports}var OR=F6(),RR={exports:{}},PR={};var U6;function ybe(){if(U6)return PR;U6=1;var e=sg(),t=F6();function n(f,m){return f===m&&(f!==0||1/f===1/m)||f!==f&&m!==m}var s=typeof Object.is=="function"?Object.is:n,i=t.useSyncExternalStore,o=e.useRef,l=e.useEffect,u=e.useMemo,d=e.useDebugValue;return PR.useSyncExternalStoreWithSelector=function(f,m,g,v,b){var y=o(null);if(y.current===null){var k={hasValue:!1,value:null};y.current=k}else k=y.current;y=u(function(){function S(O){if(!N){if(N=!0,C=O,O=v(O),b!==void 0&&k.hasValue){var A=k.value;if(b(A,O))return T=A}return T=O}if(A=T,s(C,O))return A;var R=v(O);return b!==void 0&&b(A,R)?(C=O,A):(C=O,T=R)}var N=!1,C,T,P=g===void 0?null:g;return[function(){return S(m())},P===null?void 0:function(){return S(P())}]},[m,g,v,b]);var w=i(f,y[0],y[1]);return l(function(){k.hasValue=!0,k.value=w},[w]),d(w),w},PR}var H6;function jbe(){return H6||(H6=1,RR.exports=ybe()),RR.exports}var V6=jbe();const wbe=MO(19)?Sbe:Nbe;function K6(e,t,n,s,i){return wbe(e,t,n,s,i)}function kbe(e,t,n,s,i){const o=p.useCallback(()=>t(e.getSnapshot(),n,s,i),[e,t,n,s,i]);return OR.useSyncExternalStore(e.subscribe,o,o)}ove({before(e){e.syncIndex=0,e.didInitialize||(e.syncTick=1,e.syncHooks=[],e.didChangeStore=!0,e.getSnapshot=()=>{let t=!1;for(let n=0;n0&&(e.didChangeStore&&(e.didChangeStore=!1,e.subscribe=t=>{const n=new Set;for(const i of e.syncHooks)n.add(i.store);const s=[];for(const i of n)s.push(i.subscribe(t));return()=>{for(const i of s)i()}}),OR.useSyncExternalStore(e.subscribe,e.getSnapshot,e.getSnapshot))}});function Sbe(e,t,n,s,i){const o=ive();if(!o)return kbe(e,t,n,s,i);const l=o.syncIndex;o.syncIndex+=1;let u;return o.didInitialize?(u=o.syncHooks[l],(u.store!==e||u.selector!==t||!Object.is(u.a1,n)||!Object.is(u.a2,s)||!Object.is(u.a3,i))&&(u.store!==e&&(o.didChangeStore=!0),u.store=e,u.selector=t,u.a1=n,u.a2=s,u.a3=i,u.value=t(e.getSnapshot(),n,s,i))):(u={store:e,selector:t,a1:n,a2:s,a3:i,value:t(e.getSnapshot(),n,s,i)},o.syncHooks.push(u)),u.value}function Nbe(e,t,n,s,i){return V6.useSyncExternalStoreWithSelector(e.subscribe,e.getSnapshot,e.getSnapshot,o=>t(o,n,s,i))}class Cbe{constructor(t){Cn(this,"subscribe",t=>(this.listeners.add(t),()=>{this.listeners.delete(t)}));Cn(this,"getSnapshot",()=>this.state);this.state=t,this.listeners=new Set,this.updateTick=0}static create(t){return new this(t)}setState(t){if(this.state===t)return;this.state=t,this.updateTick+=1;const n=this.updateTick;for(const s of this.listeners){if(n!==this.updateTick)return;s(t)}}update(t){for(const n in t)if(!Object.is(this.state[n],t[n])){this.setState({...this.state,...t});return}}set(t,n){Object.is(this.state[t],n)||this.setState({...this.state,[t]:n})}notifyAll(){const t={...this.state};this.setState(t)}use(t,n,s,i){return K6(this,t,n,s,i)}}class Ph extends Cbe{constructor(t,n={},s){super(t),this.context=n,this.selectors=s}useSyncedValue(t,n){p.useDebugValue(t);const s=this;Ge(()=>{s.state[t]!==n&&s.set(t,n)},[s,t,n])}useSyncedValueWithCleanup(t,n){const s=this;Ge(()=>(s.state[t]!==n&&s.set(t,n),()=>{s.set(t,void 0)}),[s,t,n])}useSyncedValues(t){const n=this,s=Object.values(t);Ge(()=>{n.update(t)},[n,...s])}useControlledProp(t,n){p.useDebugValue(t);const s=this,i=n!==void 0;Ge(()=>{i&&!Object.is(s.state[t],n)&&s.setState({...s.state,[t]:n})},[s,t,n,i])}select(t,n,s,i){const o=this.selectors[t];return o(this.state,n,s,i)}useState(t,n,s,i){return p.useDebugValue(t),K6(this,this.selectors[t],n,s,i)}useContextCallback(t,n){p.useDebugValue(t);const s=qe(n??Xn);this.context[t]=s}useStateSetter(t){const n=p.useRef(void 0);return n.current===void 0&&(n.current=s=>{this.set(t,s)}),n.current}observe(t,n){let s;typeof t=="function"?s=t:s=this.selectors[t];let i=s(this.state);return n(i,i,this),this.subscribe(o=>{const l=s(o);if(!Object.is(i,l)){const u=i;i=l,n(l,u,this)}})}}const Abe={open:e=>e.open,transitionStatus:e=>e.transitionStatus,domReferenceElement:e=>e.domReferenceElement,referenceElement:e=>e.positionReference??e.referenceElement,floatingElement:e=>e.floatingElement,floatingId:e=>e.floatingId};class IR extends Ph{constructor(n){const{syncOnly:s,nested:i,onOpenChange:o,triggerElements:l,...u}=n;super({...u,positionReference:u.referenceElement,domReferenceElement:u.referenceElement},{onOpenChange:o,dataRef:{current:{}},events:v6(),nested:i,triggerElements:l},Abe);Cn(this,"syncOpenEvent",(n,s)=>{(!n||!this.state.open||s!=null&&qge(s))&&(this.context.dataRef.current.openEvent=n?s:void 0)});Cn(this,"dispatchOpenChange",(n,s)=>{this.syncOpenEvent(n,s.event);const i={open:n,reason:s.reason,nativeEvent:s.event,nested:this.context.nested,triggerElement:s.trigger};this.context.events.emit("openchange",i)});Cn(this,"setOpen",(n,s)=>{if(this.syncOnly){this.context.onOpenChange?.(n,s);return}this.dispatchOpenChange(n,s),this.context.onOpenChange?.(n,s)});this.syncOnly=s}}function Ebe(e){const{popupStore:t,treatPopupAsFloatingElement:n=!1,floatingRootContext:s,floatingId:i,nested:o,onOpenChange:l}=e,u=t.useState("open"),d=t.useState("activeTriggerElement"),f=t.useState(n?"popupElement":"positionerElement"),m=t.context.triggerElements,g=l,v=p.useRef(null);s===void 0&&v.current===null&&(v.current=new IR({open:u,transitionStatus:void 0,referenceElement:d,floatingElement:f,triggerElements:m,onOpenChange:g,floatingId:i,syncOnly:!0,nested:o}));const b=s??v.current;return t.useSyncedValue("floatingId",i),Ge(()=>{const y={open:u,floatingId:i,referenceElement:d,floatingElement:f};Un(d)&&(y.domReferenceElement=d),b.state.positionReference===b.state.referenceElement&&(y.positionReference=d),b.update(y)},[u,i,d,f,b]),b.context.onOpenChange=g,b.context.nested=o,b}const Ub={tabIndex:-1,[HO]:""};function q6(e){return t=>t==="touch"?e.current:!0}function MR(e,t=!1){const n=lg(),s=xg()!=null,i=$s(()=>e(n,s)).current;return Ebe({popupStore:i,treatPopupAsFloatingElement:t,floatingRootContext:i.state.floatingRootContext,floatingId:n,nested:s,onOpenChange:i.setOpen}),i}function _R({handle:e,store:t}){return Ge(()=>e.attachStore(t),[e,t]),null}function G6(e){const t=e.context.triggerElements.size;e.select("open")&&e.state.triggerCount!==t&&e.set("triggerCount",t)}function Tbe(e,t){const n=p.useRef(null);return qe(s=>{const i=n.current;if(i!==null){if(i.element===s&&i.store===t&&i.id===e)return;n.current=null;const o=i.store;o.context.triggerElements.getById(i.id)===i.element&&(o.context.triggerElements.delete(i.id),G6(o))}s!==null&&e!==void 0&&(n.current={store:t,id:e,element:s},t.context.triggerElements.add(e,s),G6(t))})}function DR(e,t,n,s=!1){let i=e.preventUnmountingOnClose;t?i=!1:s&&(i=!0);const o=n?.id??null;let l=e.activeTriggerId,u=e.activeTriggerElement;return(o||t)&&(l=o,u=n??null),{open:t,preventUnmountingOnClose:i,activeTriggerId:l,activeTriggerElement:u}}function W6(e){let t=!1;return e.preventUnmountOnClose=()=>{t=!0},()=>t}function Obe(e,t,n,s={}){const i=n.reason,o=i===Va,l=t&&i===Gk,u=!t&&(i===xu||i===mg),d=W6(n);if(e.context.onOpenChange?.(t,n),n.isCanceled)return;s.onBeforeDispatch?.(),e.state.floatingRootContext.dispatchOpenChange(t,n);const f=()=>{const m=DR(e.state,t,n.trigger,d()),g={...s.extraState,...m};l?g.instantType="focus":u?g.instantType="dismiss":o&&(g.instantType=void 0),e.update(g)};o?xr.flushSync(f):f()}function LR(e,t,n,s){const i=n.useState("isMountedByTrigger",e),o=Tbe(e,n),l=qe(d=>{const f=n.select("open"),m=n.select("activeTriggerId");if(m===e){const g={activeTriggerElement:d,...f?s:null};n.update(g);return}if(m==null&&f){const g={activeTriggerId:e??null,activeTriggerElement:d,...s};n.update(g)}}),u=qe(d=>{o(d),d&&l(d)});return Ge(()=>(u(t.current),()=>u(null)),[u,t,n,e]),Ge(()=>{if(i){const d={activeTriggerElement:t.current,...s};n.update(d)}},[i,n,t,...Object.values(s)]),{registerTrigger:u,isMountedByThisTrigger:i}}function $R(e,t={}){const{closeOnActiveTriggerUnmount:n=!1}=t,s=p.useRef(null),i=e.useState("open"),o=e.useState("triggerCount"),l=e.useState("activeTriggerId"),u=e.useState("activeTriggerElement");Ge(()=>{if(!i){s.current=null,e.state.triggerCount!==0&&e.set("triggerCount",0);return}const d=e.context.triggerElements.size,f={};e.state.triggerCount!==d&&(f.triggerCount=d);const m=e.select("activeTriggerId");let g=null;if(m){const v=e.context.triggerElements.getById(m);if(v)s.current=m,v!==e.state.activeTriggerElement&&(f.activeTriggerElement=v);else{for(const[b,y]of e.context.triggerElements.entries())if(y===e.state.activeTriggerElement){f.activeTriggerId=b,f.activeTriggerElement=y,s.current=b;break}f.activeTriggerId===void 0&&(s.current===m?g=m:s.current=null)}}else s.current=null;if(!g&&!m&&d===1){const v=e.context.triggerElements.entries().next();if(!v.done){const[b,y]=v.value;f.activeTriggerId=b,f.activeTriggerElement=y,s.current=b}}(f.triggerCount!==void 0||f.activeTriggerId!==void 0||f.activeTriggerElement!==void 0)&&e.update(f),g&&n&&queueMicrotask(()=>{if(e.select("open")&&e.select("activeTriggerId")===g&&!e.context.triggerElements.getById(g)){const v=Nt(rs);e.setOpen(!1,v),v.isCanceled||e.update({activeTriggerId:null,activeTriggerElement:null})}})},[i,e,o,l,u,n])}function zR(e,t,n,s){const{mounted:i,setMounted:o,transitionStatus:l}=gu(e,!1,!1,s),u=t.useState("preventUnmountingOnClose"),d=e?!1:u;t.useSyncedValues({mounted:i,transitionStatus:l,preventUnmountingOnClose:d});const f=qe(()=>{o(!1),t.update({activeTriggerId:null,activeTriggerElement:null,mounted:!1,preventUnmountingOnClose:!1}),n?.(),t.context.onOpenChangeComplete?.(!1)});return ji({enabled:i&&!e&&!d,open:e,ref:t.context.popupRef,onComplete(){e||f()}}),{forceUnmount:f,transitionStatus:l}}function BR(e,t){e.useSyncedValues(t),Ge(()=>()=>{e.update({activeTriggerProps:yr,inactiveTriggerProps:yr,popupProps:yr})},[e])}function Y6(e,t){Ge(()=>{!t&&e.state.openMethod!==null&&e.set("openMethod",null)},[t,e]),Ge(()=>()=>{e.state.openMethod!==null&&e.set("openMethod",null)},[e])}class aS{constructor(){this.idMap=new Map}add(t,n){this.idMap.set(t,n)}delete(t){this.idMap.delete(t)}hasElement(t){for(const n of this.idMap.values())if(n===t)return!0;return!1}hasMatchingElement(t){for(const n of this.idMap.values())if(t(n))return!0;return!1}getById(t){return this.idMap.get(t)}entries(){return this.idMap.entries()}elements(){return this.idMap.values()}get size(){return this.idMap.size}}function FR(e,t,n=!1){return{open:!1,openProp:void 0,mounted:!1,transitionStatus:void 0,floatingRootContext:new IR({open:!1,transitionStatus:void 0,floatingElement:null,referenceElement:null,triggerElements:e,floatingId:t,syncOnly:!0,nested:n,onOpenChange:void 0}),floatingId:t,triggerCount:0,preventUnmountingOnClose:!1,payload:void 0,activeTriggerId:null,activeTriggerElement:null,triggerIdProp:void 0,popupElement:null,positionerElement:null,activeTriggerProps:yr,inactiveTriggerProps:yr,popupProps:yr}}const Hb=e=>e.triggerIdProp??e.activeTriggerId,UR=e=>e.openProp??e.open,X6=e=>(e.popupElement?.id??e.floatingId)||void 0;function Q6(e,t){return t!==void 0&&UR(e)&&Hb(e)===t}function Rbe(e,t){return Q6(e,t)?!0:t!==void 0&&UR(e)&&Hb(e)==null&&e.triggerCount===1}const HR={open:UR,mounted:e=>e.mounted,transitionStatus:e=>e.transitionStatus,floatingRootContext:e=>e.floatingRootContext,triggerCount:e=>e.triggerCount,preventUnmountingOnClose:e=>e.preventUnmountingOnClose,payload:e=>e.payload,activeTriggerId:Hb,activeTriggerElement:e=>e.mounted?e.activeTriggerElement:null,popupId:X6,isTriggerActive:(e,t)=>t!==void 0&&Hb(e)===t,isOpenedByTrigger:(e,t)=>Q6(e,t),isMountedByTrigger:(e,t)=>t!==void 0&&Hb(e)===t&&e.mounted,triggerProps:(e,t)=>t?e.activeTriggerProps:e.inactiveTriggerProps,triggerPopupId:(e,t)=>Rbe(e,t)?X6(e):void 0,popupProps:e=>e.popupProps,popupElement:e=>e.popupElement,positionerElement:e=>e.positionerElement};function VR(e){const t=p.useCallback(s=>e===void 0?Xn:e.subscribeStore(s),[e]),n=p.useCallback(()=>e===void 0?void 0:e.store,[e]);return OR.useSyncExternalStore(t,n,()=>e?.serverStore)}function Z6(e){const{open:t=!1,onOpenChange:n,elements:s={}}=e,i=lg(),o=xg()!=null,l=$s(()=>new IR({open:t,transitionStatus:void 0,onOpenChange:n,referenceElement:s.reference??null,floatingElement:s.floating??null,triggerElements:new aS,floatingId:i,syncOnly:!1,nested:o})).current;return Ge(()=>{const u={open:t,floatingId:i};s.reference!==void 0&&(u.referenceElement=s.reference,u.domReferenceElement=Un(s.reference)?s.reference:null),s.floating!==void 0&&(u.floatingElement=s.floating),l.update(u)},[t,i,s.reference,s.floating,l]),l.context.onOpenChange=n,l.context.nested=o,l}function Pbe(e){return Ibe(e,e.rootContext)}function Ibe(e,t){const{nodeId:n,externalTree:s}=e,i=t.useState("referenceElement"),o=t.useState("floatingElement"),l=t.useState("domReferenceElement"),u=t.useState("open"),d=t.useState("floatingId"),[f,m]=p.useState(null),[g,v]=p.useState(void 0),[b,y]=p.useState(void 0),k=p.useRef(null),w=Oh(s),S=p.useMemo(()=>({reference:i,floating:o,domReference:l}),[i,o,l]),N=hbe({...e,elements:{...S,...f&&{reference:f}}}),C=Un(g)?g:null,T=b===void 0?t.state.floatingElement:b;t.useSyncedValue("referenceElement",g??null),t.useSyncedValue("domReferenceElement",g===void 0?l:C),t.useSyncedValue("floatingElement",T);const P=p.useCallback(L=>{const $=Un(L)?{getBoundingClientRect:()=>L.getBoundingClientRect(),getClientRects:()=>L.getClientRects(),contextElement:L}:L;m($),N.refs.setReference($)},[N.refs]),O=p.useCallback(L=>{(Un(L)||L===null)&&(k.current=L,v(L)),(Un(N.refs.reference.current)||N.refs.reference.current===null||L!==null&&!Un(L))&&N.refs.setReference(L)},[N.refs,v]),A=p.useCallback(L=>{y(L),N.refs.setFloating(L)},[N.refs]),R=p.useMemo(()=>({...N.refs,setReference:O,setFloating:A,setPositionReference:P,domReference:k}),[N.refs,O,A,P]),M=p.useMemo(()=>({...N.elements,domReference:l}),[N.elements,l]),_=p.useMemo(()=>({...N,dataRef:t.context.dataRef,open:u,onOpenChange:t.setOpen,events:t.context.events,floatingId:d,refs:R,elements:M,nodeId:n,rootStore:t}),[N,R,M,n,t,u,d]);return Ge(()=>{l&&(k.current=l)},[l]),Ge(()=>{t.context.dataRef.current.floatingContext=_;const L=w?.nodesRef.current.find($=>$.id===n);L&&(L.context=_)}),p.useMemo(()=>({...N,context:_,refs:R,elements:M,rootStore:t}),[N,R,M,_,t])}const KR=xU&&du;function Mbe(e,t={}){const{enabled:n=!0,delay:s}=t,i="rootStore"in e?e.rootStore:e,{events:o,dataRef:l}=i.context,u=p.useRef(!1),d=p.useRef(null),f=p.useRef(!0),m=fa();p.useEffect(()=>{const v=i.select("domReferenceElement");if(!n)return;const b=vr(v);function y(){const S=i.select("domReferenceElement");!i.select("open")&&br(S)&&S===Ys(_n(S))&&(u.current=!0,d.current=S)}function k(){f.current=!0}function w(){f.current=!1}return Ol(kn(b,"blur",y),KR&&kn(b,"keydown",k,!0),KR&&kn(b,"pointerdown",w,!0))},[i,n]),p.useEffect(()=>{if(!n)return;function v(b){if(b.reason===xu||b.reason===mg){const y=i.select("domReferenceElement");Un(y)&&(d.current=y,u.current=!0)}}return o.on("openchange",v),()=>{o.off("openchange",v)}},[o,n,i]);const g=p.useMemo(()=>{function v(){u.current=!1,d.current=null}return{onMouseLeave(){v()},onFocus(b){const y=b.currentTarget;if(u.current){if(d.current===y)return;v()}const k=Er(b.nativeEvent);if(Un(k)){if(KR&&!b.relatedTarget){if(!f.current&&!Ik(k))return}else if(!Mk(k))return}const w=Pk(b.relatedTarget,i.context.triggerElements),{nativeEvent:S,currentTarget:N}=b,C=typeof s=="function"?s():s;if(i.select("open")&&w||C===0||C===void 0){i.setOpen(!0,Nt(Gk,S,N));return}m.start(C,()=>{u.current||i.setOpen(!0,Nt(Gk,S,N))})},onBlur(b){v();const y=b.relatedTarget,k=b.nativeEvent,w=Un(y)&&y.hasAttribute($b("focus-guard"))&&y.getAttribute("data-type")==="outside";m.start(0,()=>{const S=i.select("domReferenceElement"),N=Ys(_n(S));!y&&N===S||Et(l.current.floatingContext?.refs.floating.current,N)||Et(S,N)||w||Pk(y??N,i.context.triggerElements)||i.setOpen(!1,Nt(Gk,k))})}}},[l,s,i,m]);return p.useMemo(()=>n?{reference:g,trigger:g}:{},[n,g])}class qR{constructor(){Cn(this,"dispose",()=>{this.openChangeTimeout.clear(),this.restTimeout.clear()});Cn(this,"disposeEffect",()=>this.dispose);this.pointerType=void 0,this.interactedInside=!1,this.handler=void 0,this.blockMouseMove=!0,this.performedPointerEventsMutation=!1,this.pointerEventsScopeElement=null,this.pointerEventsReferenceElement=null,this.pointerEventsFloatingElement=null,this.restTimeoutPending=!1,this.openChangeTimeout=new Bi,this.restTimeout=new Bi,this.handleCloseOptions=void 0}static create(){return new qR}}const iS=new WeakMap;function oS(e){if(!e.performedPointerEventsMutation)return;const t=e.pointerEventsScopeElement;t&&iS.get(t)===e&&(e.pointerEventsScopeElement?.style.removeProperty("pointer-events"),e.pointerEventsReferenceElement?.style.removeProperty("pointer-events"),e.pointerEventsFloatingElement?.style.removeProperty("pointer-events"),iS.delete(t)),e.performedPointerEventsMutation=!1,e.pointerEventsScopeElement=null,e.pointerEventsReferenceElement=null,e.pointerEventsFloatingElement=null}function J6(e,t){const{scopeElement:n,referenceElement:s,floatingElement:i}=t,o=iS.get(n);o&&o!==e&&oS(o),oS(e),e.performedPointerEventsMutation=!0,e.pointerEventsScopeElement=n,e.pointerEventsReferenceElement=s,e.pointerEventsFloatingElement=i,iS.set(n,e),n.style.pointerEvents="none",s.style.pointerEvents="auto",i.style.pointerEvents="auto"}function GR(e){const t=e.context.dataRef.current,n=$s(()=>t.hoverInteractionState??qR.create()).current;return t.hoverInteractionState||(t.hoverInteractionState=n),Uk(t.hoverInteractionState.disposeEffect),t.hoverInteractionState}function eH(e,t={}){const{enabled:n=!0,closeDelay:s=0,nodeId:i}=t,o="rootStore"in e?e.rootStore:e,l=o.useState("open"),u=o.useState("floatingElement"),d=o.useState("domReferenceElement"),{dataRef:f}=o.context,m=Oh(),g=xg(),v=GR(o),b=fa(),y=qe(()=>a6(f.current.openEvent?.type,v.interactedInside)),k=qe(()=>uve(f.current.openEvent?.type)),w=qe(()=>{oS(v)});Ge(()=>{l||(v.pointerType=void 0,v.restTimeoutPending=!1,v.interactedInside=!1,w())},[l,v,w]),p.useEffect(()=>w,[w]),Ge(()=>{if(n&&l&&v.handleCloseOptions?.blockPointerEvents&&k()&&Un(d)&&u){const S=d,N=u,C=_n(u),T=m?.nodesRef.current.find(R=>R.id===g)?.context?.elements.floating;T&&(T.style.pointerEvents="");const P=v.pointerEventsScopeElement!==N?v.pointerEventsScopeElement:null,O=T!==N?T:null,A=v.handleCloseOptions?.getScope?.()??P??O??S.closest("[data-rootownerid]")??C.body;return J6(v,{scopeElement:A,referenceElement:S,floatingElement:N}),()=>{w()}}},[n,l,d,u,v,k,m,g,w]),p.useEffect(()=>{if(!n)return;function S(){return!!(m&&g&&Dd(m.nodesRef.current,g).length>0)}function N(R){const M=Eh(s,"close",v.pointerType),_=()=>{o.setOpen(!1,Nt(Va,R)),m?.events.emit("floating.closed",R)};M?v.openChangeTimeout.start(M,_):(v.openChangeTimeout.clear(),_())}function C(R){const M=Er(R);if(!Vge(M)){v.interactedInside=!1;return}v.interactedInside=M?.closest("[aria-haspopup]")!=null}function T(){v.openChangeTimeout.clear(),b.clear(),m?.events.off("floating.closed",O),w()}function P(R){if(S()&&m){m.events.on("floating.closed",O);return}if(Pk(R.relatedTarget,o.context.triggerElements))return;const M=f.current.floatingContext?.nodeId??i,_=R.relatedTarget;if(!(m&&M&&Un(_)&&Dd(m.nodesRef.current,M,!1).some($=>Et($.context?.elements.floating,_)))){if(v.handler){v.handler(R);return}w(),k()&&!y()&&N(R)}}function O(R){!m||!g||S()||b.start(0,()=>{m.events.off("floating.closed",O),o.setOpen(!1,Nt(Va,R)),m.events.emit("floating.closed",R)})}const A=u;return Ol(A&&kn(A,"mouseenter",T),A&&kn(A,"mouseleave",P),A&&kn(A,"pointerdown",C,!0),()=>{m?.events.off("floating.closed",O)})},[n,u,o,f,s,i,k,y,w,v,m,g,b])}const _be={current:null};function tH(e,t={}){const{enabled:n=!0,delay:s=0,handleClose:i=null,mouseOnly:o=!1,restMs:l=0,move:u=!0,triggerElementRef:d=_be,externalTree:f,isActiveTrigger:m=!0,getHandleCloseContext:g,isClosing:v,shouldOpen:b,guardStaleOpen:y=!1}=t,k="rootStore"in e?e.rootStore:e,{dataRef:w,events:S}=k.context,N=Oh(f),C=GR(k),T=p.useRef(!1),P=ss(i),O=ss(s),A=ss(l),R=ss(n),M=ss(b),_=ss(v),L=qe(()=>a6(w.current.openEvent?.type,C.interactedInside)),$=qe(()=>M.current?.()!==!1),D=qe((q,Q,X)=>{const U=k.context.triggerElements;if(U.hasElement(Q))return!q||!Et(q,Q);if(!Un(X))return!1;const z=X;return U.hasMatchingElement(K=>Et(K,z))&&(!q||!Et(q,z))}),F=qe(()=>{if(!C.handler)return;_n(k.select("domReferenceElement")).removeEventListener("mousemove",C.handler),C.handler=void 0}),V=qe(()=>{oS(C)});return m&&(C.handleCloseOptions=i?.__options),p.useEffect(()=>F,[F]),p.useEffect(()=>{if(!n)return;function q(Q){Q.open?T.current=!1:(T.current=Q.reason===Va,F(),C.openChangeTimeout.clear(),C.restTimeout.clear(),C.blockMouseMove=!0,C.restTimeoutPending=!1)}return S.on("openchange",q),()=>{S.off("openchange",q)}},[n,S,C,F]),p.useEffect(()=>{if(!n)return;function q(J,ee=!0){const H=Eh(O.current,"close",C.pointerType);H?C.openChangeTimeout.start(H,()=>{k.setOpen(!1,Nt(Va,J)),N?.events.emit("floating.closed",J)}):ee&&(C.openChangeTimeout.clear(),k.setOpen(!1,Nt(Va,J)),N?.events.emit("floating.closed",J))}const Q=d.current??(m?k.select("domReferenceElement"):null);if(!Un(Q))return;function X(J){if(C.openChangeTimeout.clear(),C.blockMouseMove=!1,o&&!Ld(C.pointerType))return;const ee=s6(A.current),H=Eh(O.current,"open",C.pointerType),G=Er(J),Y=J.currentTarget??null,se=k.select("domReferenceElement");let re=Y;if(Un(G)&&!k.context.triggerElements.hasElement(G)){for(const ce of k.context.triggerElements.elements())if(Et(ce,G)){re=ce;break}}Un(Y)&&Un(se)&&!k.context.triggerElements.hasElement(Y)&&Et(Y,se)&&(re=se);const ne=re==null?!1:D(se,re,G),de=k.select("open"),ie=_.current?.()??k.select("transitionStatus")==="ending",oe=!de&&ie&&T.current,je=!ne&&Un(re)&&Un(se)&&Et(se,re)&&oe,te=ee>0&&!H,le=ne&&(de||oe)||je,he=!de||ne;if(le){$()&&k.setOpen(!0,Nt(Va,J,re));return}te||(H?C.openChangeTimeout.start(H,()=>{he&&$()&&k.setOpen(!0,Nt(Va,J,re))}):he&&$()&&k.setOpen(!0,Nt(Va,J,re)))}function U(J){if(L()){V();return}F();const ee=k.select("domReferenceElement"),H=_n(ee);C.restTimeout.clear(),C.restTimeoutPending=!1;const G=w.current.floatingContext??g?.();if(Pk(J.relatedTarget,k.context.triggerElements))return;if(P.current&&G){k.select("open")||C.openChangeTimeout.clear();const se=d.current;C.handler=P.current({...G,tree:N,x:J.clientX,y:J.clientY,onClose(){V(),F(),R.current&&!L()&&se===k.select("domReferenceElement")&&q(J,!0)}}),H.addEventListener("mousemove",C.handler),C.handler(J);return}(C.pointerType!=="touch"||!Et(k.select("floatingElement"),J.relatedTarget))&&q(J)}function z(J){Et(Q,J.relatedTarget)||(C.openChangeTimeout.clear(),C.restTimeout.clear(),C.restTimeoutPending=!1)}const K=y?kn(Q,"mouseout",z):void 0;return u?Ol(kn(Q,"mousemove",X,{once:!0}),kn(Q,"mouseenter",X),kn(Q,"mouseleave",U),K):Ol(kn(Q,"mouseenter",X),kn(Q,"mouseleave",U),K)},[F,V,w,O,k,n,P,C,m,D,L,o,u,A,d,N,R,g,_,$,y]),p.useMemo(()=>{if(!n)return;function q(Q){C.pointerType=Q.pointerType}return{onPointerDown:q,onPointerEnter:q,onMouseMove(Q){const{nativeEvent:X}=Q,U=Q.currentTarget,z=k.select("domReferenceElement"),K=k.select("open"),J=D(z,U,Q.target);if(o&&!Ld(C.pointerType))return;if(K&&J&&C.handleCloseOptions?.blockPointerEvents){const G=k.select("floatingElement");if(G){const Y=C.handleCloseOptions?.getScope?.()??U.ownerDocument.body;J6(C,{scopeElement:Y,referenceElement:U,floatingElement:G})}}const ee=s6(A.current);if(K&&!J||ee===0||!J&&C.restTimeoutPending&&Q.movementX**2+Q.movementY**2<2)return;C.restTimeout.clear();function H(){if(C.restTimeoutPending=!1,L())return;const G=k.select("open");!C.blockMouseMove&&(!G||J)&&$()&&k.setOpen(!0,Nt(Va,X,U))}C.pointerType==="touch"?xr.flushSync(()=>{H()}):J&&K?H():(C.restTimeoutPending=!0,C.restTimeout.start(ee,H))}}},[n,C,L,D,o,k,A,$])}const Dbe="Escape";function nH(e){return du&&e.movementX===0&&e.movementY===0}function lS(e,t,n){switch(e){case"vertical":return t;case"horizontal":return n;default:return t||n}}function cS(e,t){return lS(t,e===VO||e===Ok,e===Sh||e===Nh)}function WR(e,t,n){return lS(t,e===Ok,n?e===Sh:e===Nh)||e==="Enter"||e===" "||e===""}function Lbe(e,t,n){return lS(t,n?e===Sh:e===Nh,e===Ok)}function $be(e,t,n,s){const i=n?e===Nh:e===Sh,o=e===VO;return t==="both"||t==="horizontal"&&s?e===Dbe:lS(t,i,o)}function rH(e,t){const{listRef:n,activeIndex:s,onNavigate:i=()=>{},enabled:o=!0,selectedIndex:l=null,allowEscape:u=!1,loopFocus:d=!1,nested:f=!1,rtl:m=!1,virtual:g=!1,focusItemOnOpen:v="auto",focusItemOnHover:b=!0,openOnArrowKeyDown:y=!0,disabledIndices:k=void 0,orientation:w="vertical",parentOrientation:S,id:N,resetOnPointerLeave:C=!0,externalTree:T,grid:P}=t,O=P!=null,A="rootStore"in e?e.rootStore:e,R=A.useState("open"),M=A.useState("floatingElement"),_=A.useState("domReferenceElement"),L=A.context.dataRef,$=_k(M),D=XO(_),F=ss($),V=xg(),q=Oh(T),Q=p.useRef(v),X=p.useRef(l??-1),U=p.useRef(null),z=p.useRef(!0),K=qe(ge=>{i(X.current===-1?null:X.current,ge)}),J=p.useRef(!!M),ee=p.useRef(R),H=p.useRef(!1),G=p.useRef(!1),Y=p.useRef(null),se=ss(k),re=ss(R),ne=ss(l),de=ss(C),ie=fg(),oe=fg(),je=qe(()=>{function ge(De){g?q?.events.emit("virtualfocus",De):Y.current=Jk(De,{sync:H.current,preventScroll:!0})}const ue=n.current[X.current],be=G.current;ue&&ge(ue),(H.current?De=>De():De=>ie.request(De))(()=>{const De=n.current[X.current]||ue;if(!De)return;ue||ge(De),fe&&(be||!z.current)&&De.scrollIntoView?.({block:"nearest",inline:"nearest"})})});Ge(()=>{L.current.orientation=w},[L,w]),Ge(()=>{o&&(R&&M?(X.current=l??-1,Q.current&&l!=null&&(G.current=!0,K())):J.current&&(X.current=-1,K()))},[o,R,M,l,K]),Ge(()=>{if(o){if(!R){H.current=!1;return}if(M)if(s==null){if(H.current=!1,ne.current!=null)return;if(J.current&&(X.current=-1,je()),(!ee.current||!J.current)&&Q.current&&(U.current!=null||Q.current===!0&&U.current==null)){let ge=0;const ue=()=>{n.current[0]==null?(ge<2&&(ge?ve=>oe.request(ve):queueMicrotask)(ue),ge+=1):(X.current=U.current==null||WR(U.current,w,m)||f?Bk(n):nR(n),U.current=null,K())};ue()}}else zd(n.current,s)||(X.current=s,je(),G.current=!1)}},[o,R,M,s,ne,f,n,w,m,K,je,oe]),Ge(()=>{if(!o||M||!q||g||!J.current)return;const ge=q.nodesRef.current,ue=ge.find(De=>De.id===V)?.context?.elements.floating,be=Ys(_n(_??ue??null)),ve=ge.some(De=>De.context&&Et(De.context.elements.floating,be));ue&&!ve&&z.current&&ue.focus({preventScroll:!0})},[o,M,_,q,V,g]),Ge(()=>{ee.current=R,J.current=!!M}),Ge(()=>{R||(U.current=null,Q.current=v)},[R,v]);const te=s!=null,le=qe(ge=>{if(!re.current)return;const ue=n.current.indexOf(ge.currentTarget);ue!==-1&&(X.current!==ue||s!==ue)&&(X.current=ue,K(ge))}),he=qe(()=>S??q?.nodesRef.current.find(ge=>ge.id===V)?.context?.dataRef?.current.orientation),ce=qe(()=>Bk(n,se.current)),ye=qe(ge=>{if(z.current=!1,H.current=!0,ge.which===229||!re.current&&ge.currentTarget===F.current)return;if(f&&$be(ge.key,w,m,O)){cS(ge.key,he())||da(ge),A.setOpen(!1,Nt(fR,ge.nativeEvent)),br(_)&&(g?q?.events.emit("virtualfocus",_):_.focus());return}const ue=X.current,be=Bk(n,k),ve=nR(n,k);if(D||(ge.key==="Home"&&(da(ge),X.current=be,K(ge)),ge.key==="End"&&(da(ge),X.current=ve,K(ge))),P!=null){const De=P(ge,X.current,n,w,d,m,k,be,ve);if(De!=null&&(X.current=De,K(ge)),w==="both")return}if(cS(ge.key,w)){if(da(ge),R&&!g&&Ys(ge.currentTarget.ownerDocument)===ge.currentTarget){X.current=WR(ge.key,w,m)?be:ve,K(ge);return}WR(ge.key,w,m)?d?ue>=ve?u&&ue!==n.current.length?X.current=-1:(H.current=!1,X.current=be):X.current=Ta(n.current,{startingIndex:ue,disabledIndices:k}):X.current=Math.min(ve,Ta(n.current,{startingIndex:ue,disabledIndices:k})):d?ue<=be?u&&ue!==-1?X.current=n.current.length:(H.current=!1,X.current=ve):X.current=Ta(n.current,{startingIndex:ue,decrement:!0,disabledIndices:k}):X.current=Math.max(be,Ta(n.current,{startingIndex:ue,decrement:!0,disabledIndices:k})),zd(n.current,X.current)&&(X.current=-1),K(ge)}}),fe=p.useMemo(()=>({onFocus(ue){H.current=!0,le(ue)},onClick:({currentTarget:ue})=>ue.focus({preventScroll:!0}),onMouseMove(ue){nH(ue)||(H.current=!0,G.current=!1,b&&le(ue))},onPointerLeave(ue){if(!re.current||!z.current||ue.pointerType==="touch")return;H.current=!0;const be=ue.relatedTarget;if(!(!b||n.current.includes(be))&&de.current&&(Y.current?.(),Y.current=null,X.current=-1,K(ue),!g)){const ve=F.current,De=Ys(_n(ve));ve&&Et(ve,De)&&ve.focus({preventScroll:!0})}}}),[le,re,F,b,n,K,de,g]),Le=p.useMemo(()=>g&&R&&te&&{"aria-activedescendant":`${N}-${s}`},[g,R,te,N,s]),pe=p.useMemo(()=>({...D?{}:Le,onKeyDown(ge){if(ge.key==="Tab"&&ge.shiftKey&&R&&!g){const ue=Er(ge.nativeEvent);if(ue&&!Et(F.current,ue))return;da(ge),A.setOpen(!1,Nt(Fd,ge.nativeEvent)),br(_)&&_.focus();return}ye(ge)},onPointerMove(ge){nH(ge)||(z.current=!0)}}),[Le,ye,F,D,A,R,g,_]),xe=p.useMemo(()=>{function ge(ve){A.setOpen(!0,Nt(fR,ve.nativeEvent,ve.currentTarget))}function ue(ve){v==="auto"&&Dk(ve.nativeEvent)&&(Q.current=!g)}function be(ve){Q.current=v,v==="auto"&&QO(ve.nativeEvent)&&(Q.current=!0)}return{onKeyDown(ve){const De=A.select("open");z.current=!1;const Ie=ve.key.startsWith("Arrow"),We=Lbe(ve.key,he(),m),nt=cS(ve.key,w),kt=(f?We:nt)||ve.key==="Enter"||ve.key.trim()==="";if(g&&De)return ye(ve);if(!(!De&&!y&&Ie)){if(kt){const Je=cS(ve.key,he());U.current=f&&Je?null:ve.key}if(f){We&&(da(ve),De?(X.current=ce(),K(ve)):ge(ve));return}nt&&(ne.current!=null&&(X.current=ne.current),da(ve),!De&&y?ge(ve):ye(ve),De&&K(ve))}},onFocus(ve){A.select("open")&&!g&&(X.current=-1,K(ve))},onPointerDown:be,onPointerEnter:be,onMouseDown:ue,onClick:ue}},[ye,v,ce,f,K,A,y,w,he,m,ne,g]),Se=p.useMemo(()=>({...Le,...xe}),[Le,xe]);return p.useMemo(()=>o?{reference:Se,floating:pe,item:fe,trigger:xe}:{},[o,Se,pe,xe,fe])}function sH(e,t){const{listRef:n,elementsRef:s,activeIndex:i,onMatch:o,disabledIndices:l,onTyping:u,enabled:d=!0,resetMs:f=750,selectedIndex:m=null}=t,g="rootStore"in e?e.rootStore:e,v=g.useState("open"),b=fa(),y=p.useRef(""),k=p.useRef(m??i??-1),w=p.useRef(null),S=qe(T=>{function P(F){return s?.current[F]}function O(F){const V=P(F);return V&&!Fk(V)||V?.matches(":disabled")?!1:l==null||!Bd(co,F,l)}function A(F,V,q=0){if(F.length===0)return-1;const Q=(q%F.length+F.length)%F.length,X=V.toLowerCase();for(let U=0;U0&&T.key===" "&&(da(T),u?.(!0)),y.current.length>0&&y.current[0]!==" "&&A(R,y.current)===-1&&T.key!==" "&&u?.(!1),R==null||T.key.length!==1||T.ctrlKey||T.metaKey||T.altKey)return;v&&T.key!==" "&&(da(T),u?.(!0));const M=y.current==="";M&&(k.current=m??i??-1),R.every((F,V)=>F&&O(V)?F[0]?.toLowerCase()!==F[1]?.toLowerCase():!0)&&y.current===T.key&&(y.current="",k.current=w.current),y.current+=T.key,b.start(f,()=>{y.current="",k.current=w.current,u?.(!1)});const $=((M?m??i??-1:k.current)??0)+1,D=A(R,y.current,$);D!==-1?(o?.(D),w.current=D):T.key!==" "&&(y.current="",u?.(!1))}),N=qe(T=>{const P=T.relatedTarget,O=g.select("domReferenceElement"),A=g.select("floatingElement");Et(O,P)||Et(A,P)||(b.clear(),y.current="",k.current=w.current,u?.(!1))});Ge(()=>{!v&&m!==null||(b.clear(),w.current=null,y.current!==""&&(y.current=""))},[v,m,b]);const C=p.useMemo(()=>({onKeyDown:S,onBlur:N}),[S,N]);return p.useMemo(()=>d?{reference:C,floating:C}:{},[d,C])}const aH=.1,zbe=aH*aH,Dr=.5;function uS(e,t,n,s,i,o){return s>=t!=o>=t&&e<=(i-n)*(t-s)/(o-s)+n}function dS(e,t,n,s,i,o,l,u,d,f){let m=!1;return uS(e,t,n,s,i,o)&&(m=!m),uS(e,t,i,o,l,u)&&(m=!m),uS(e,t,l,u,d,f)&&(m=!m),uS(e,t,d,f,n,s)&&(m=!m),m}function Bbe(e,t,n){return e>=n.x&&e<=n.x+n.width&&t>=n.y&&t<=n.y+n.height}function fS(e,t,n,s,i,o){const l=Math.min(n,i),u=Math.max(n,i),d=Math.min(s,o),f=Math.max(s,o);return e>=l&&e<=u&&t>=d&&t<=f}function iH(e={}){const{blockPointerEvents:t=!1}=e,n=new Bi,s=({x:i,y:o,placement:l,elements:u,onClose:d,nodeId:f,tree:m})=>{const g=l?.split("-")[0];let v=!1,b=null,y=null,k=typeof performance<"u"?performance.now():0;function w(N,C){const T=performance.now(),P=T-k;if(b===null||y===null||P===0)return b=N,y=C,k=T,!1;const O=N-b,A=C-y,R=O*O+A*A,M=P*P*zbe;return b=N,y=C,k=T,R0)}function D(){$()||S()}if($())return;const F=T.getBoundingClientRect(),V=P.getBoundingClientRect(),q=i>V.right-V.width/2,Q=o>V.bottom-V.height/2,X=V.width>F.width,U=V.height>F.height,z=(X?F:V).left,K=(X?F:V).right,J=(U?F:V).top,ee=(U?F:V).bottom;if(g==="top"&&o>=F.bottom-1||g==="bottom"&&o<=F.top+1||g==="left"&&i>=F.right-1||g==="right"&&i<=F.left+1){D();return}let H=!1;switch(g){case"top":H=fS(O,A,z,F.top+1,K,V.bottom-1);break;case"bottom":H=fS(O,A,z,V.top+1,K,F.bottom-1);break;case"left":H=fS(O,A,V.right-1,ee,F.left+1,J);break;case"right":H=fS(O,A,F.right-1,ee,V.left+1,J);break}if(H)return;if(v&&!Bbe(O,A,F)){D();return}if(!M&&w(O,A)){D();return}let G=!1;switch(g){case"top":{const Y=X?Dr/2:Dr*4,se=X||q?i+Y:i-Y,re=X?i-Y:q?i+Y:i-Y,ne=o+Dr+1,de=q||X?V.bottom-Dr:V.top,ie=q?X?V.bottom-Dr:V.top:V.bottom-Dr;G=dS(O,A,se,ne,re,ne,V.left,de,V.right,ie);break}case"bottom":{const Y=X?Dr/2:Dr*4,se=X||q?i+Y:i-Y,re=X?i-Y:q?i+Y:i-Y,ne=o-Dr,de=q||X?V.top+Dr:V.bottom,ie=q?X?V.top+Dr:V.bottom:V.top+Dr;G=dS(O,A,se,ne,re,ne,V.left,de,V.right,ie);break}case"left":{const Y=U?Dr/2:Dr*4,se=U||Q?o+Y:o-Y,re=U?o-Y:Q?o+Y:o-Y,ne=i+Dr+1,de=Q||U?V.right-Dr:V.left,ie=Q?U?V.right-Dr:V.left:V.right-Dr;G=dS(O,A,de,V.top,ie,V.bottom,ne,se,ne,re);break}case"right":{const Y=U?Dr/2:Dr*4,se=U||Q?o+Y:o-Y,re=U?o-Y:Q?o+Y:o-Y,ne=i-Dr,de=Q||U?V.left+Dr:V.right,ie=Q?U?V.left+Dr:V.right:V.left+Dr;G=dS(O,A,ne,se,ne,re,de,V.top,ie,V.bottom);break}}G?v||n.start(40,D):D()}};return s.__options={...e,blockPointerEvents:t},s}const Fbe={...HR,disabled:e=>e.disabled,instantType:e=>e.instantType,isInstantPhase:e=>e.isInstantPhase,trackCursorAxis:e=>e.trackCursorAxis,disableHoverablePopup:e=>e.disableHoverablePopup,lastOpenChangeReason:e=>e.openChangeReason,closeOnClick:e=>e.closeOnClick,closeDelay:e=>e.closeDelay,adaptiveOrigin:e=>e.adaptiveOrigin};class Ube extends Ph{constructor(n,s,i){const o=new aS;super(Hbe(n,o,s,i),Vbe(o),Fbe);Cn(this,"setOpen",(n,s)=>{Obe(this,n,s,{extraState:{openChangeReason:s.reason}})})}cancelPendingOpen(n){this.state.floatingRootContext.dispatchOpenChange(!1,Nt(xu,n))}}function Hbe(e,t,n,s=!1){return{...FR(t,n,s),disabled:!1,instantType:void 0,isInstantPhase:!1,trackCursorAxis:"none",disableHoverablePopup:!1,openChangeReason:null,closeOnClick:!0,closeDelay:0,adaptiveOrigin:void 0,...e}}function Vbe(e){return{popupRef:p.createRef(),onOpenChange:void 0,onOpenChangeComplete:void 0,triggerElements:e}}const Kbe=Qk(function(t){const{disabled:n=!1,defaultOpen:s=!1,open:i,disableHoverablePopup:o=!1,trackCursorAxis:l="none",actionsRef:u,onOpenChange:d,onOpenChangeComplete:f,handle:m,triggerId:g,defaultTriggerId:v=null,children:b}=t,y=MR((L,$)=>new Ube({open:s,openProp:i,activeTriggerId:v,triggerIdProp:g},L,$));y.useControlledProp("openProp",i),y.useControlledProp("triggerIdProp",g),y.useContextCallback("onOpenChange",d),y.useContextCallback("onOpenChangeComplete",f);const k=y.useState("open"),w=!n&&k,S=y.useState("activeTriggerId"),N=y.useState("mounted"),C=y.useState("payload");y.useSyncedValues({trackCursorAxis:l,disableHoverablePopup:o,disabled:n}),$R(y,{closeOnActiveTriggerUnmount:!0});const{forceUnmount:T,transitionStatus:P}=zR(w,y),O=y.useState("isInstantPhase"),A=y.useState("instantType"),R=y.useState("lastOpenChangeReason"),M=p.useRef(null);Ge(()=>{k&&n&&y.setOpen(!1,Nt(Sxe))},[k,n,y]),Ge(()=>{P==="ending"&&R===rs||P!=="ending"&&O?(A!=="delay"&&(M.current=A),y.set("instantType","delay")):M.current!==null&&(y.set("instantType",M.current),M.current=null)},[P,O,R,A,y]),Ge(()=>{w&&S==null&&y.set("payload",void 0)},[y,S,w]),p.useImperativeHandle(u,()=>({unmount:T,close:()=>y.setOpen(!1,Nt(hR))}),[T,y]);const _=w||N||!n&&l!=="none";return r.jsxs(r6.Provider,{value:y,children:[m&&r.jsx(_R,{handle:m,store:y}),_&&r.jsx(qbe,{store:y,disabled:n,trackCursorAxis:l}),typeof b=="function"?b({payload:C}):b]})});function qbe({store:e,disabled:t,trackCursorAxis:n}){const s=e.useState("floatingRootContext"),i=Fb(s,{enabled:!t,referencePress:()=>e.select("closeOnClick")}),o=Pve(s,{enabled:!t&&n!=="none",axis:n==="none"?void 0:n}),l=p.useMemo(()=>oo(o.reference,i.reference),[o.reference,i.reference]);return BR(e,{activeTriggerProps:l,inactiveTriggerProps:l,popupProps:i.floating??yr}),null}const oH=p.createContext(void 0);function Gbe(){return p.useContext(oH)}const Wbe=600,lH="data-base-ui-tooltip-trigger";function cH(e){if("composedPath"in e){const n=e.composedPath();for(let s=0;sw.select("transitionStatus")==="ending",shouldOpen(){return!z.current}}),se=Mbe(T,{enabled:!q}).reference,re=je=>{const te=z.current,le=cH(je),he=G(le),ce=P.current,ye=ce&&le&&Et(ce,le);if(he&&w.select("open")&&w.select("lastOpenChangeReason")===Va){w.setOpen(!1,Nt(Va,je));return}if(te&&!he&&ye&&!Q.current&&!w.select("open")&&ce&&Ld(J.current)){const fe=()=>{!z.current&&!Q.current&&!w.select("open")&&w.setOpen(!0,Nt(Va,je,ce))},Le=ee();Le===0?(K.clear(),fe()):K.start(Le,fe)}},ne=w.useState("triggerProps",R);return Kt("button",t,{state:{open:C},ref:[n,A,P],props:[Y,se,R||X!=="none"?ne:void 0,{onMouseOver(je){re(je.nativeEvent)},onFocus(je){H(cH(je.nativeEvent))&&je.preventBaseUIHandler()},onMouseLeave(){z.current=!1,K.clear(),J.current=void 0},onPointerEnter(je){J.current=je.pointerType},onPointerDown(je){J.current=je.pointerType,w.set("closeOnClick",m),m&&!w.select("open")&&w.cancelPendingOpen(je.nativeEvent)},onClick(je){m&&!w.select("open")&&w.cancelPendingOpen(je.nativeEvent)},id:S,[WO]:q?"":void 0,[lH]:q?void 0:""},b],stateAttributesMapping:Rk})}),uH=p.createContext(void 0);function Qbe(){const e=p.useContext(uH);if(e===void 0)throw new Error(Vn(70));return e}const dH=p.forwardRef(function(t,n){const{children:s,container:i,className:o,render:l,style:u,...d}=t,{node:f,subtree:m}=x6({container:i,ref:n,componentProps:t,elementProps:d});return!m&&!f?null:r.jsxs(p.Fragment,{children:[m,f&&xr.createPortal(s,f)]})}),Zbe=p.forwardRef(function(t,n){const{keepMounted:s=!1,...i}=t;return Lb().useState("mounted")||s?r.jsx(uH.Provider,{value:s,children:r.jsx(dH,{ref:n,...i})}):null}),fH=p.createContext(void 0);function hH(){const e=p.useContext(fH);if(e===void 0)throw new Error(Vn(71));return e}const Jbe=p.createContext(void 0);function Vb(){return p.useContext(Jbe)?.direction??"ltr"}const eye=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:s,placement:i,rects:o,platform:l,elements:u,middlewareData:d}=t,{element:f,padding:m=0,offsetParent:g="real"}=$d(e,t)||{};if(f==null)return{};const v=NU(m),b={x:n,y:s},y=eR(i),k=JO(y),w=await l.getDimensions(f),S=y==="y",N=S?"top":"left",C=S?"bottom":"right",T=S?"clientHeight":"clientWidth",P=o.reference[k]+o.reference[y]-b[y]-o.floating[k],O=b[y]-o.reference[y],A=g==="real"?await l.getOffsetParent?.(f):u.floating;let R=u.floating[T]||o.floating[k];(!R||!await l.isElement?.(A))&&(R=u.floating[T]||o.floating[k]);const M=P/2-O/2,_=R/2-w[k]/2-1,L=Math.min(v[N],_),$=Math.min(v[C],_),D=L,F=R-w[k]-$,V=R/2-w[k]/2+M,q=wU(D,V,F),Q=!d.arrow&&mu(i)!=null&&V!==q&&o.reference[k]/2-(V{const{name:n,fn:s}=eye(e);return{name:n,fn:s,options:[e,t]}},nye={name:"hide",async fn(e){const{width:t,height:n,x:s,y:i}=e.rects.reference,o=t===0&&n===0&&s===0&&i===0,l=await e.platform.detectOverflow(e,{elementContext:"reference"});return{data:{referenceHidden:l.top-n>=0||l.right-t>=0||l.bottom-n>=0||l.left-t>=0||o}}}},rye={sideX:"left",sideY:"top"},sye="--available-width",aye="--available-height",iye="--anchor-width",oye="--anchor-height",lye="--transform-origin",mH=sye,pH=aye;function gH(e,t,n){const s=e==="inline-start"||e==="inline-end";return{top:"top",right:s?n?"inline-start":"inline-end":"right",bottom:"bottom",left:s?n?"inline-end":"inline-start":"left"}[t]}function xH(e,t,n){const{rects:s,placement:i}=e;return{side:gH(t,Uo(i),n),align:mu(i)||"center",anchor:{width:s.reference.width,height:s.reference.height},positioner:{width:s.floating.width,height:s.floating.height}}}function hS(e){return cye(e,Pbe)}function cye(e,t){const{anchor:n,positionMethod:s="absolute",side:i="bottom",sideOffset:o=0,align:l="center",alignOffset:u=0,collisionBoundary:d,collisionPadding:f=5,sticky:m=!1,arrowPadding:g=5,disableAnchorTracking:v=!1,inline:b,keepMounted:y=!1,floatingRootContext:k,mounted:w,collisionAvoidance:S,shift:N,nodeId:C,adaptiveOrigin:T,lazyFlip:P=!1,externalTree:O}=e,[A,R]=p.useState(null);!w&&A!==null&&R(null);const M=S.side||"flip",_=S.align||"flip",L=S.fallbackAxisSide||"end",$=N?.crossAxis??!1,D=N?.rootBoundary,F=typeof n=="function"?n:void 0,V=qe(F),q=F?V:n,Q=ss(n),X=ss(w),z=Vb()==="rtl",K=A||{top:"top",right:"right",bottom:"bottom",left:"left","inline-end":z?"left":"right","inline-start":z?"right":"left"}[i],J=l==="center"?K:`${K}-${l}`;let ee=f;typeof ee=="number"?ee={top:ee,right:ee,bottom:ee,left:ee}:ee&&(ee={top:ee.top||0,right:ee.right||0,bottom:ee.bottom||0,left:ee.left||0});const H=1,G=i==="bottom"?H:0,Y=i==="top"?H:0,se=i==="right"?H:0,re=i==="left"?H:0,ne={boundary:d==="clipping-ancestors"?"clippingAncestors":d,padding:ee},de=p.useRef(null),ie=ss(o),oe=ss(u),je=typeof o!="function"?o:0,te=typeof u!="function"?u:0,le=[];b&&le.push(b),le.push(mbe(ht=>{const Tt=xH(ht,i,z),Ht=typeof ie.current=="function"?ie.current(Tt):ie.current,jt=typeof oe.current=="function"?oe.current(Tt):oe.current;return{mainAxis:Ht,crossAxis:jt,alignmentAxis:jt}},[je,te,z,i]));const he=_==="none"&&M!=="shift",ce=!he&&(m||$||M==="shift"),ye=M==="none"?null:xbe({...ne,padding:{top:ee.top+H+G,right:ee.right+H+re,bottom:ee.bottom+H+Y,left:ee.left+H+se},mainAxis:!$&&M==="flip",crossAxis:_==="flip"?"alignment":!1,fallbackAxisSideDirection:L}),fe=he?null:pbe({...ne,rootBoundary:D,mainAxis:_!=="none",crossAxis:ce,limiter:m||$?void 0:gbe(ht=>{if(!de.current)return{};const{width:Tt,height:Ht}=de.current.getBoundingClientRect(),jt=Ho(Uo(ht.placement)),an=jt==="y"?Tt:Ht,Xt=jt==="y"?ee.left+ee.right:ee.top+ee.bottom;return{offset:an/2+Xt/2}})},[ne,m,$,D,ee,_]);M==="shift"||_==="shift"||l==="center"?le.push(fe,ye):le.push(ye,fe),le.push(vbe({...ne,apply({elements:{floating:ht},availableWidth:Tt,availableHeight:Ht,rects:jt}){if(!X.current)return;const an=ht.style;an.setProperty(mH,`${Tt}px`),an.setProperty(pH,`${Ht}px`);const Xt=vr(ht).devicePixelRatio||1,{x:gn,y:un,width:lr,height:yn}=jt.reference,xn=(Math.round((gn+lr)*Xt)-Math.round(gn*Xt))/Xt,jn=(Math.round((un+yn)*Xt)-Math.round(un*Xt))/Xt;an.setProperty(iye,`${xn}px`),an.setProperty(oye,`${jn}px`)}}),tye(ht=>({element:de.current||_n(ht.elements.floating).createElement("div"),padding:de.current?g:0,offsetParent:"floating"}),[g]),{name:"transformOrigin",fn(ht){const{elements:{floating:Tt},middlewareData:Ht,placement:jt,platform:an,rects:Xt,y:gn}=ht,un=Uo(jt),lr=mu(jt),yn=Ho(un)==="y",xn=de.current,jn=typeof o=="function"?o(xH(ht,i,z)):o;let ke;if(!xn&&lr&&Math.abs(yn?Ht.shift?.x||0:Ht.shift?.y||0)<=1)ke=lr==="start"===(yn&&an.isRTL?.(Tt)===!0)?"100%":"0%";else{const Qe=yn?Ht.arrow?.x||0:Ht.arrow?.y||0,Yt=yn?xn?.clientWidth||0:xn?.clientHeight||0;ke=`${Qe+Yt/2}px`}let Xe=un==="top"||un==="left"?`calc(100% + ${jn}px)`:`${-jn}px`;return ce&&yn&&Math.abs(Ht.shift?.y||0)>jn&&(Xe=`${Xt.reference.y+Xt.reference.height/2-gn}px`),Tt.style.setProperty(lye,yn?`${ke} ${Xe}`:`${Xe} ${ke}`),{}}},nye,T),Ge(()=>{!w&&k&&k.update({referenceElement:null,floatingElement:null,domReferenceElement:null,positionReference:null})},[w,k]);const Le=p.useMemo(()=>({ancestorScroll:!v,elementResize:!v&&typeof ResizeObserver<"u",layoutShift:!v&&typeof IntersectionObserver<"u"}),[v]),{refs:pe,elements:xe,x:Se,y:ge,middlewareData:ue,update:be,placement:ve,context:De,isPositioned:Ie,floatingStyles:We}=t({rootContext:k,open:y?w:void 0,placement:J,middleware:le,strategy:s,whileElementsMounted:y?void 0:(...ht)=>D6(...ht,Le),nodeId:C,externalTree:O}),{sideX:nt,sideY:kt}=ue.adaptiveOrigin||rye,Je=Ie?s:"fixed",on=p.useMemo(()=>{let ht;return Ie?T?ht={position:Je,[nt]:Se,[kt]:ge}:ht={...We,position:Je}:ht={position:Je,top:0,left:0},ht[mH]="100vw",ht[pH]="100vh",Ie||(ht.opacity=0),ht},[T,Je,nt,Se,kt,ge,We,Ie]),nn=p.useRef(null);Ge(()=>{if(!w)return;const ht=Q.current,Tt=typeof ht=="function"?ht():ht,jt=(vH(Tt)?Tt.current:Tt)||null||null;jt!==nn.current&&(pe.setPositionReference(jt),nn.current=jt)},[w,pe,q,Q]),p.useEffect(()=>{if(!w)return;const ht=Q.current;typeof ht!="function"&&vH(ht)&&ht.current!==nn.current&&(pe.setPositionReference(ht.current),nn.current=ht.current)},[w,pe,q,Q]),p.useEffect(()=>{if(y&&w&&xe.reference&&xe.floating)return D6(xe.reference,xe.floating,be,Le)},[y,w,xe,be,Le]);const On=Uo(ve),Rn=gH(i,On,z),gt=mu(ve)||"center",sn=!!ue.hide?.referenceHidden;Ge(()=>{P&&w&&Ie&&On!==K&&R(On)},[P,w,Ie,On,K]);const Ke=p.useMemo(()=>({position:"absolute",top:ue.arrow?.y,left:ue.arrow?.x}),[ue.arrow]),zt=ue.arrow?.centerOffset!==0;return p.useMemo(()=>({positionerStyles:on,arrowStyles:Ke,arrowRef:de,arrowUncentered:zt,side:Rn,align:gt,physicalSide:On,anchorHidden:sn,refs:pe,context:De,isPositioned:Ie,update:be}),[on,Ke,de,zt,Rn,gt,On,sn,pe,De,Ie,be])}function vH(e){return e!=null&&"current"in e}function Kb(e){return e==="starting"?vve:yr}function mS(e,t,{styles:n,transitionStatus:s,props:i,refs:o,hidden:l,inert:u=!1}){const d={...n};return u&&(d.pointerEvents="none"),Kt("div",e,{state:t,ref:o,props:[{role:"presentation",hidden:l,style:d},Kb(s),i],stateAttributesMapping:cg})}const uye=p.forwardRef(function(t,n){const{render:s,className:i,anchor:o,positionMethod:l="absolute",side:u="top",align:d="center",sideOffset:f=0,alignOffset:m=0,collisionBoundary:g="clipping-ancestors",collisionPadding:v=5,arrowPadding:b=5,sticky:y=!1,disableAnchorTracking:k=!1,collisionAvoidance:w=m6,style:S,...N}=t,C=Lb(),T=Qbe(),P=C.useState("open"),O=C.useState("mounted"),A=C.useState("trackCursorAxis"),R=C.useState("disableHoverablePopup"),M=C.useState("floatingRootContext"),_=C.useState("instantType"),L=C.useState("transitionStatus"),$=C.useState("adaptiveOrigin"),D=hS({anchor:o,positionMethod:l,floatingRootContext:M,mounted:O,side:u,sideOffset:f,align:d,alignOffset:m,collisionBoundary:g,collisionPadding:v,sticky:y,arrowPadding:b,disableAnchorTracking:k,keepMounted:T,collisionAvoidance:w,adaptiveOrigin:$}),F=p.useMemo(()=>({open:P,side:D.side,align:D.align,anchorHidden:D.anchorHidden,instant:A!=="none"?"tracking-cursor":_}),[P,D.side,D.align,D.anchorHidden,A,_]),V=mS(t,F,{styles:D.positionerStyles,transitionStatus:L,props:N,refs:[n,C.useStateSetter("positionerElement")],hidden:!O,inert:!P||A==="both"||R});return r.jsx(fH.Provider,{value:D,children:V})}),dye=p.forwardRef(function(t,n){const{render:s,className:i,style:o,...l}=t,u=Lb(),{side:d,align:f}=hH(),m=u.useState("open"),g=u.useState("instantType"),v=u.useState("transitionStatus"),b=u.useState("popupProps"),y=u.useState("floatingRootContext"),k=u.useState("disabled"),w=u.useState("closeDelay");ji({open:m,ref:u.context.popupRef,onComplete(){m&&u.context.onOpenChangeComplete?.(!0)}}),eH(y,{enabled:!k,closeDelay:w});const S=u.useStateSetter("popupElement");return Kt("div",t,{state:{open:m,side:d,align:f,instant:g,transitionStatus:v},ref:[n,u.context.popupRef,S],props:[Ub,b,Kb(v),l],stateAttributesMapping:GO})}),fye=p.forwardRef(function(t,n){const{render:s,className:i,style:o,...l}=t,u=Lb(),{arrowRef:d,side:f,align:m,arrowUncentered:g,arrowStyles:v}=hH(),b=u.useState("open"),y=u.useState("instantType");return Kt("div",t,{state:{open:b,side:f,align:m,uncentered:g,instant:y},ref:[n,d],props:[{style:v,"aria-hidden":!0},l],stateAttributesMapping:cg})}),hye=function(t){const{delay:n,closeDelay:s,timeout:i=400}=t,o=p.useMemo(()=>({open:n,close:s}),[n,s]);return r.jsx(oH.Provider,{value:n,children:r.jsx(fve,{delay:o,timeoutMs:i,children:t.children})})};function qb(e){return MO(19)?e:e?"true":void 0}function mye(e){const[t,n]=p.useState({current:e,previous:null});return Object.is(e,t.current)||n({current:e,previous:t.current}),t.previous}function pS(e){return r.jsx(hye,{"data-slot":"tooltip-provider",...e})}function pc(e){return r.jsx(Kbe,{"data-slot":"tooltip",...e})}function Ih(e){return r.jsx(Xbe,{"data-slot":"tooltip-trigger",...e})}function gc({className:e,sideOffset:t=8,side:n="top",anchor:s,variant:i="default",children:o,...l}){return r.jsx(Zbe,{children:r.jsx(uye,{anchor:s,positionMethod:"fixed",collisionPadding:8,sideOffset:t,side:n,className:"z-[90] data-anchor-hidden:hidden",children:r.jsx(dye,{"data-slot":"tooltip-content",className:Ne("max-w-[min(320px,calc(100vw-16px))] rounded-md px-2.5 py-2 text-[11.5px] leading-[1.55] shadow-3",i==="plain"?"border border-border bg-raised text-foreground":"bg-primary text-primary-on","break-words outline-none","transition-[opacity,transform] duration-150 ease-out","data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95","data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...l,children:o})})})}function pye({className:e,...t}){return r.jsx(fye,{className:Ne("size-2 rotate-45 rounded-[1px] bg-primary","data-[side=top]:-bottom-1 data-[side=bottom]:-top-1",e),...t})}const bH=p.createContext(void 0);function Hd(e){const t=p.useContext(bH);if(!e&&t===void 0)throw new Error(Vn(27));return t}const YR=p.forwardRef(function(t,n){const{render:s,className:i,style:o,forceRender:l=!1,...u}=t,d=Hd(),f=d.useState("open"),m=d.useState("nested"),g=d.useState("mounted"),v=d.useState("transitionStatus");return Kt("div",t,{state:{open:f,transitionStatus:v},ref:[d.context.backdropRef,n],stateAttributesMapping:GO,props:[{role:"presentation",hidden:!g,style:{userSelect:"none",WebkitUserSelect:"none"}},u],enabled:l||!m})}),Gb=p.forwardRef(function(t,n){const{render:s,className:i,style:o,disabled:l=!1,nativeButton:u=!0,...d}=t,f=Hd(),m=f.useState("open"),{getButtonProps:g,buttonRef:v}=$i({disabled:l,native:u}),b={disabled:l};function y(k){m&&f.setOpen(!1,Nt(dR,k.nativeEvent))}return Kt("button",t,{state:b,ref:[n,v],props:[{onClick:y},d,g]})}),yH=p.forwardRef(function(t,n){const{render:s,className:i,style:o,id:l,...u}=t,d=Hd(),f=Ws(l);return d.useSyncedValueWithCleanup("descriptionElementId",f),Kt("p",t,{ref:n,props:[{id:f},u]})}),jH=p.createContext(void 0);function gye(){const e=p.useContext(jH);if(e===void 0)throw new Error(Vn(26));return e}const XR="ArrowUp",QR="ArrowDown",ZR="ArrowLeft",JR="ArrowRight",eP="Home",tP="End",gS=new Set([XR,QR,ZR,JR,eP,tP]),wH="Shift",xye=[wH,"Control","Alt","Meta"];function vye(e){return br(e)&&e.tagName==="INPUT"}function kH(e){return!!(vye(e)&&e.selectionStart!=null||br(e)&&e.tagName==="TEXTAREA")}function SH(e,t,n,s){if(!e||!t||!t.scrollTo)return;let i=e.scrollLeft,o=e.scrollTop;const l=e.clientWidthe.scrollLeft+e.clientWidth-f.scrollPaddingRight?i=d+t.offsetWidth+m.scrollMarginRight-e.clientWidth+f.scrollPaddingRight:d-m.scrollMarginLefte.scrollLeft+e.clientWidth-f.scrollPaddingRight&&(i=d+t.offsetWidth+m.scrollMarginRight-e.clientWidth+f.scrollPaddingRight))}if(u&&s!=="horizontal"){const d=NH(e,t,"top"),f=xS(e),m=xS(t);d-m.scrollMarginTope.scrollTop+e.clientHeight-f.scrollPaddingBottom&&(o=d+t.offsetHeight+m.scrollMarginBottom-e.clientHeight+f.scrollPaddingBottom)}e.scrollTo({left:i,top:o,behavior:"auto"})}function NH(e,t,n){const s=n==="left"?"offsetLeft":"offsetTop";let i=0;for(;t.offsetParent&&(i+=t[s],t.offsetParent!==e);)t=t.offsetParent;return i}function xS(e){const t=getComputedStyle(e);return{scrollMarginTop:parseFloat(t.scrollMarginTop)||0,scrollMarginRight:parseFloat(t.scrollMarginRight)||0,scrollMarginBottom:parseFloat(t.scrollMarginBottom)||0,scrollMarginLeft:parseFloat(t.scrollMarginLeft)||0,scrollPaddingTop:parseFloat(t.scrollPaddingTop)||0,scrollPaddingRight:parseFloat(t.scrollPaddingRight)||0,scrollPaddingBottom:parseFloat(t.scrollPaddingBottom)||0,scrollPaddingLeft:parseFloat(t.scrollPaddingLeft)||0}}const bye="--nested-dialogs",yye="data-nested-dialog-open",jye={...cg,...Fo,nestedDialogOpen(e){return e?{[yye]:""}:null}},nP=p.forwardRef(function(t,n){const{render:s,className:i,style:o,finalFocus:l,initialFocus:u,...d}=t,f=Hd(),m=f.useState("descriptionElementId"),g=f.useState("disablePointerDismissal"),v=f.useState("floatingRootContext"),b=f.useState("popupProps"),y=f.useState("modal"),k=f.useState("mounted"),w=f.useState("nested"),S=f.useState("nestedOpenDialogCount"),N=f.useState("open"),C=f.useState("openMethod"),T=f.useState("titleElementId"),P=f.useState("transitionStatus"),O=f.useState("role"),A=v.useState("floatingId");gye(),ji({open:N,ref:f.context.popupRef,onComplete(){N&&f.context.onOpenChangeComplete?.(!0)}});const R=u===void 0?q6(f.context.popupRef):u,M=S>0,_=f.useStateSetter("popupElement"),$=Kt("div",t,{state:{open:N,nested:w,transitionStatus:P,nestedDialogOpen:M},props:[b,{id:A,"aria-labelledby":T,"aria-describedby":m,role:O,...Ub,hidden:!k,onKeyDown(D){gS.has(D.key)&&D.stopPropagation()},style:{[bye]:S}},d],ref:[n,f.context.popupRef,_],stateAttributesMapping:jye});return r.jsx(tS,{context:v,openInteractionType:C,disabled:!k,closeOnFocusOut:!g,initialFocus:R,returnFocus:l,modal:y!==!1,restoreFocus:"popup",children:$})}),vS=p.forwardRef(function(t,n){const{cutout:s,...i}=t;let o;if(s){const l=s.getBoundingClientRect();o=`polygon(0% 0%,100% 0%,100% 100%,0% 100%,0% 0%,${l.left}px ${l.top}px,${l.left}px ${l.bottom}px,${l.right}px ${l.bottom}px,${l.right}px ${l.top}px,${l.left}px ${l.top}px)`}return r.jsx("div",{ref:n,role:"presentation","data-base-ui-inert":"",...i,style:{position:"fixed",inset:0,userSelect:"none",WebkitUserSelect:"none",clipPath:o}})}),rP=p.forwardRef(function(t,n){const{keepMounted:s=!1,...i}=t,o=Hd(),l=o.useState("mounted"),u=o.useState("modal"),d=o.useState("open");return l||s?r.jsx(jH.Provider,{value:s,children:r.jsxs(eS,{ref:n,...i,children:[l&&u===!0&&r.jsx(vS,{ref:o.context.internalBackdropRef,inert:qb(!d)}),t.children]})}):null});let CH={},AH={},EH="";function bS(e,t){return Cb(e)?e:t}function TH(e,t,n){return/hidden|clip/.test(e.getComputedStyle(bS(t,n)).overflowY)}function wye(e){if(typeof document>"u")return!1;const t=_n(e);return vr(t).innerWidth-t.documentElement.clientWidth>0}function kye(e){if(!(typeof CSS<"u"&&CSS.supports&&CSS.supports("scrollbar-gutter","stable"))||typeof document>"u")return!1;const n=_n(e),s=n.documentElement,i=n.body,o=bS(s,i),l=o.style.overflowY,u=s.style.scrollbarGutter;s.style.scrollbarGutter="stable",o.style.overflowY="scroll";const d=o.offsetWidth;o.style.overflowY="hidden";const f=o.offsetWidth;return o.style.overflowY=l,s.style.scrollbarGutter=u,d===f}function Sye(e){const t=_n(e),n=t.documentElement,s=t.body,i=bS(n,s),o={overflowY:i.style.overflowY,overflowX:i.style.overflowX};return Object.assign(i.style,{overflowY:"hidden",overflowX:"hidden"}),()=>{Object.assign(i.style,o)}}function Nye(e){const t=_n(e),n=t.documentElement,s=t.body,i=vr(n);let o=0,l=0,u=!1;const d=Fi.create();if(du&&(i.visualViewport?.scale??1)!==1)return()=>{};function f(){const b=i.getComputedStyle(n),y=i.getComputedStyle(s),S=(b.scrollbarGutter||"").includes("both-edges")?"stable both-edges":"stable";o=n.scrollTop,l=n.scrollLeft,CH={scrollbarGutter:n.style.scrollbarGutter,overflowY:n.style.overflowY,overflowX:n.style.overflowX},EH=n.style.scrollBehavior,AH={position:s.style.position,height:s.style.height,width:s.style.width,boxSizing:s.style.boxSizing,overflowY:s.style.overflowY,overflowX:s.style.overflowX,scrollBehavior:s.style.scrollBehavior};const N=n.scrollHeight>n.clientHeight,C=n.scrollWidth>n.clientWidth,T=b.overflowY==="scroll"||y.overflowY==="scroll",P=b.overflowX==="scroll"||y.overflowX==="scroll",O=Math.max(0,i.innerWidth-s.clientWidth),A=Math.max(0,i.innerHeight-s.clientHeight),R=parseFloat(y.marginTop)+parseFloat(y.marginBottom),M=parseFloat(y.marginLeft)+parseFloat(y.marginRight),_=bS(n,s);if(u=kye(e),u){n.style.scrollbarGutter=S,_.style.overflowY="hidden",_.style.overflowX="hidden";return}Object.assign(n.style,{scrollbarGutter:S,overflowY:"hidden",overflowX:"hidden"}),(N||T)&&(n.style.overflowY="scroll"),(C||P)&&(n.style.overflowX="scroll"),Object.assign(s.style,{position:"relative",height:R||A?`calc(100dvh - ${R+A}px)`:"100dvh",width:M||O?`calc(100vw - ${M+O}px)`:"100vw",boxSizing:"border-box",overflowY:"hidden",overflowX:"hidden",scrollBehavior:"unset"}),s.scrollTop=o,s.scrollLeft=l,n.setAttribute("data-base-ui-scroll-locked",""),n.style.scrollBehavior="unset"}function m(){Object.assign(n.style,CH),Object.assign(s.style,AH),u||(n.scrollTop=o,n.scrollLeft=l,n.removeAttribute("data-base-ui-scroll-locked"),n.style.scrollBehavior=EH)}function g(){m(),d.request(f)}f();const v=kn(i,"resize",g);return()=>{d.cancel(),m(),typeof i.removeEventListener=="function"&&v()}}class Cye{constructor(){Cn(this,"lockCount",0);Cn(this,"restore",null);Cn(this,"timeoutLock",Bi.create());Cn(this,"timeoutUnlock",Bi.create());Cn(this,"release",()=>{this.lockCount-=1,this.lockCount===0&&this.restore&&this.timeoutUnlock.start(0,this.unlock)});Cn(this,"unlock",()=>{this.lockCount===0&&this.restore&&(this.restore?.(),this.restore=null)})}acquire(t){return this.lockCount+=1,this.lockCount===1&&this.restore===null&&this.timeoutLock.start(0,()=>this.lock(t)),this.release}lock(t){if(this.lockCount===0||this.restore!==null)return;const n=_n(t),s=n.documentElement,i=n.body,o=vr(s);if(TH(o,s,i)){const u=new o.MutationObserver(()=>{TH(o,s,i)||(u.disconnect(),this.restore=null,this.lock(t))}),d={attributes:!0};u.observe(s,d),u.observe(i,d),this.restore=()=>u.disconnect();return}const l=Ob||!wye(t);this.restore=l?Sye(t):Nye(t)}}const Aye=new Cye;function OH(e=!0,t=null){Ge(()=>{if(e)return Aye.acquire(t)},[e,t])}function Eye({store:e,parentContext:t,isDrawer:n}){const s=e.useState("open"),i=e.useState("disablePointerDismissal"),o=e.useState("modal"),l=e.useState("popupElement"),u=e.useState("floatingRootContext"),[d,f]=p.useState(0),[m,g]=p.useState(0),v=d===0,b=Fb(u,{outsidePressEvent(){return e.context.internalBackdropRef.current||e.context.backdropRef.current?"intentional":{mouse:o==="trap-focus"?"sloppy":"intentional",touch:"sloppy"}},outsidePress(y){if(!e.context.outsidePressEnabledRef.current||"button"in y&&y.button!==0)return!1;if("touches"in y){if(y.type==="touchend"){if(y.changedTouches.length!==1||y.touches.length!==0)return!1}else if(y.touches.length!==1)return!1}const k=Er(y);if(v&&!i){if(o){const w=e.context.internalBackdropRef.current,S=e.context.backdropRef.current;return w||S?w===k||S===k||Et(k,l)&&!k?.hasAttribute("data-base-ui-portal"):!0}return!0}return!1},escapeKey:v});return OH(s&&o===!0,l),e.useContextCallback("onNestedDialogOpen",(y,k)=>{f(y),g(k)}),Ge(()=>(t?.onNestedDialogOpen&&(s?t.onNestedDialogOpen(d+1,m+(n?1:0)):t.onNestedDialogOpen(0,0)),()=>{t?.onNestedDialogOpen&&s&&t.onNestedDialogOpen(0,0)}),[n,s,d,m,t]),BR(e,{activeTriggerProps:b.reference,inactiveTriggerProps:b.trigger,popupProps:b.floating,nestedOpenDialogCount:d,nestedOpenDrawerCount:m}),null}const Tye={...HR,modal:e=>e.modal,nested:e=>e.nested,nestedOpenDialogCount:e=>e.nestedOpenDialogCount,nestedOpenDrawerCount:e=>e.nestedOpenDrawerCount,disablePointerDismissal:e=>e.disablePointerDismissal,openMethod:e=>e.openMethod,descriptionElementId:e=>e.descriptionElementId,titleElementId:e=>e.titleElementId,viewportElement:e=>e.viewportElement,role:e=>e.role};class Oye extends Ph{constructor(n,s,i){const o=new aS,l=Rye(n,o,s,i);super(l,Pye(o),Tye);Cn(this,"setOpen",(n,s)=>{s.preventUnmountOnClose=()=>{this.set("preventUnmountingOnClose",!0)},!n&&s.trigger==null&&this.state.activeTriggerId!=null&&(s.trigger=this.state.activeTriggerElement??void 0),this.context.onOpenChange?.(n,s),!s.isCanceled&&(this.state.floatingRootContext.dispatchOpenChange(n,s),this.update(DR(this.state,n,s.trigger)))})}}function Rye(e,t,n,s=!1){return{...FR(t,n,s),modal:!0,disablePointerDismissal:!1,viewportElement:null,descriptionElementId:void 0,titleElementId:void 0,openMethod:null,nested:!1,nestedOpenDialogCount:0,nestedOpenDrawerCount:0,role:"dialog",...e}}function Pye(e){return{popupRef:p.createRef(),backdropRef:p.createRef(),internalBackdropRef:p.createRef(),outsidePressEnabledRef:{current:!0},triggerElements:e,onOpenChange:void 0,onOpenChangeComplete:void 0}}function RH(e,t){const{children:n,open:s,defaultOpen:i=!1,onOpenChange:o,onOpenChangeComplete:l,disablePointerDismissal:u=!1,modal:d=!0,actionsRef:f,handle:m,triggerId:g,defaultTriggerId:v=null}=t,b=e==="drawer",y=e==="alert-dialog",k=y?!0:d,w=y||u,S=y?"alertdialog":"dialog",N=Hd(!0),C=N!=null,T={modal:k,disablePointerDismissal:w,nested:C,role:S},P=MR((L,$)=>new Oye({open:i,openProp:s,activeTriggerId:v,triggerIdProp:g,...T},L,$),!0);P.useControlledProp("openProp",s),P.useControlledProp("triggerIdProp",g),P.useSyncedValues(T),P.useContextCallback("onOpenChange",o),P.useContextCallback("onOpenChangeComplete",l);const O=P.useState("open"),A=P.useState("mounted"),R=P.useState("payload");Y6(P,O),$R(P);const{forceUnmount:M}=zR(O,P);p.useImperativeHandle(f,()=>({unmount:M,close:()=>P.setOpen(!1,Nt(hR))}),[M,P]);const _=O||A;return r.jsxs(bH.Provider,{value:P,children:[m&&r.jsx(_R,{handle:m,store:P}),_&&r.jsx(Eye,{store:P,parentContext:N?.context,isDrawer:b}),typeof n=="function"?n({payload:R}):n]})}const PH=Qk(function(t){return RH("dialog",t)}),sP=p.forwardRef(function(t,n){const{render:s,className:i,style:o,id:l,...u}=t,d=Hd(),f=Ws(l);return d.useSyncedValueWithCleanup("titleElementId",f),Kt("h2",t,{ref:n,props:[{id:f},u]})});function Iye(e){const t=p.useRef(""),n=p.useCallback(i=>{i.defaultPrevented||(t.current=i.pointerType,e(i,i.pointerType))},[e]);return{onClick:p.useCallback(i=>{if(i.detail===0){e(i,"keyboard");return}"pointerType"in i?e(i,i.pointerType):e(i,t.current),t.current=""},[e]),onPointerDown:n}}function aP(e,t){const n=qe((o,l)=>{(typeof e=="function"?e():e)||t(l||(Ob?"touch":""))}),{onClick:s,onPointerDown:i}=Iye(n);return p.useMemo(()=>({onClick:s,onPointerDown:i}),[s,i])}function IH(e){const[t,n]=p.useState(null),s=aP(e,n);return Vo(e,i=>{i&&!e&&n(null)}),p.useMemo(()=>({openMethod:t,triggerProps:s}),[t,s])}const MH=bR(function(t,n){const{render:s,className:i,style:o,disabled:l=!1,nativeButton:u=!0,id:d,payload:f,handle:m,...g}=t,v=Hd(!0),y=VR(m)??v;if(!y)throw new Error(Vn(79));const k=Ws(d),w=y.useState("floatingRootContext"),S=y.useState("isOpenedByTrigger",k),N=y.useState("triggerPopupId",k),C=p.useRef(null),{registerTrigger:T,isMountedByThisTrigger:P}=LR(k,C,y,{payload:f}),{getButtonProps:O,buttonRef:A}=$i({disabled:l,native:u}),R=Bb(w),M=aP(()=>y.select("open"),$=>{y.set("openMethod",$)}),_={disabled:l,open:S},L=y.useState("triggerProps",P);return Kt("button",t,{state:_,ref:[A,n,T,C],props:[R.reference,L,M,{[kR]:"",id:k,"aria-haspopup":"dialog","aria-expanded":S,"aria-controls":N},g,O],stateAttributesMapping:Rk})});function at(e){return r.jsx(PH,{"data-slot":"dialog",...e})}function _H(e){return r.jsx(MH,{"data-slot":"dialog-trigger",...e})}function Mye(e){return r.jsx(rP,{"data-slot":"dialog-portal",...e})}function DH(e){return r.jsx(Gb,{"data-slot":"dialog-close",...e})}const st=e=>r.jsx(sP,{"data-slot":"dialog-title",...e}),fo=e=>r.jsx(yH,{"data-slot":"dialog-description",...e});function _ye({className:e,...t}){return r.jsx(YR,{"data-slot":"dialog-overlay",className:Ne("fixed inset-0 isolate z-30 bg-mask backdrop-blur-[3px]","transition-opacity duration-150","data-open:animate-in data-open:fade-in-0","data-closed:animate-out data-closed:fade-out-0 data-closed:fill-mode-forwards",e),...t})}function it({className:e,children:t,showCloseButton:n=!0,keepMounted:s=!1,overlayForceRender:i=!1,...o}){return r.jsxs(Mye,{keepMounted:s,children:[r.jsx(_ye,{forceRender:i}),r.jsxs(nP,{"data-slot":"dialog-content",className:Ne("fixed top-1/2 left-1/2 z-30 flex max-h-[calc(100vh-48px)] w-[min(620px,calc(100vw-48px))] -translate-x-1/2 -translate-y-1/2 flex-col","overflow-hidden rounded-lg border border-border bg-surface shadow-3 outline-none","transition-[opacity,transform] duration-200 [transition-timing-function:cubic-bezier(.2,.9,.3,1)]","data-open:animate-in data-open:fade-in-0 data-open:zoom-in-[.985] data-open:slide-in-from-bottom-2.5","data-closed:animate-out data-closed:fade-out-0 data-closed:fill-mode-forwards",e),...o,children:[t,n&&r.jsxs(Gb,{"data-slot":"dialog-close",render:r.jsx(B,{variant:"ghost",size:"icon-sm",className:"absolute top-3 right-3"}),children:[r.jsx("svg",{viewBox:"0 0 12 12",className:"size-3","aria-hidden":"true",children:r.jsx("path",{d:"M2.5 2.5l7 7M9.5 2.5l-7 7",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",fill:"none"})}),r.jsx("span",{className:"sr-only",children:Z("关闭")})]})]})]})}function ot({className:e,...t}){return r.jsx("div",{"data-slot":"dialog-header",className:Ne("flex items-center gap-2.5 border-b border-hairline px-5 py-[15px] pr-10","[&_h2]:flex-1 [&_h2]:text-[14.5px] [&_h2]:font-semibold",e),...t})}function lt({className:e,...t}){return r.jsx("div",{"data-slot":"dialog-body",className:Ne("flex flex-col gap-4 overflow-y-auto px-5 py-[18px]",e),...t})}function xt({className:e,...t}){return r.jsx("div",{"data-slot":"dialog-footer",className:Ne("flex items-center justify-end gap-2 border-t border-hairline bg-surface-2 px-5 py-[13px]",e),...t})}function as({className:e,...t}){return r.jsx("div",{"data-slot":"dialog-section",className:Ne("flex flex-col gap-2.5 rounded-md border border-border bg-surface-inset p-3.5","[&_h3]:text-[12.5px] [&_h3]:font-semibold","[&_p]:text-xs [&_p]:leading-[1.65] [&_p]:text-subtle",e),...t})}function Dye(e){return RH("alert-dialog",e)}const LH=Dye,Lye=rP,$H=e=>r.jsx(sP,{"data-slot":"alert-dialog-title",...e});function $ye({className:e,...t}){return r.jsx(YR,{"data-slot":"alert-dialog-overlay",className:Ne("fixed inset-0 isolate z-[38] bg-mask backdrop-blur-[3px]","transition-opacity duration-150","data-open:animate-in data-open:fade-in-0","data-closed:animate-out data-closed:fade-out-0 data-closed:fill-mode-forwards",e),...t})}function zH({className:e,children:t,showCloseButton:n=!1,...s}){return r.jsxs(Lye,{children:[r.jsx($ye,{}),r.jsxs(nP,{"data-slot":"alert-dialog-content",className:Ne("fixed top-1/2 left-1/2 z-[38] flex max-h-[calc(100vh-48px)] w-[min(440px,calc(100vw-48px))] -translate-x-1/2 -translate-y-1/2 flex-col","overflow-hidden rounded-lg border border-border bg-surface shadow-3 outline-none","transition-[opacity,transform] duration-200 [transition-timing-function:cubic-bezier(.2,.9,.3,1)]","data-open:animate-in data-open:fade-in-0 data-open:zoom-in-[.985] data-open:slide-in-from-bottom-2.5","data-closed:animate-out data-closed:fade-out-0 data-closed:fill-mode-forwards",e),...s,children:[t,n&&r.jsxs(Gb,{"data-slot":"alert-dialog-close",render:r.jsx(B,{variant:"ghost",size:"icon-sm",className:"absolute top-3 right-3"}),children:[r.jsx("svg",{viewBox:"0 0 12 12",className:"size-3","aria-hidden":"true",children:r.jsx("path",{d:"M2.5 2.5l7 7M9.5 2.5l-7 7",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",fill:"none"})}),r.jsx("span",{className:"sr-only",children:Z("关闭")})]})]})]})}function BH({className:e,...t}){return r.jsx("div",{"data-slot":"alert-dialog-header",className:Ne("flex items-center gap-2.5 border-b border-hairline px-5 py-[15px]","[&_h2]:flex-1 [&_h2]:text-[14.5px] [&_h2]:font-semibold",e),...t})}function FH({className:e,...t}){return r.jsx("div",{"data-slot":"alert-dialog-body",className:Ne("flex flex-col gap-4 overflow-y-auto px-5 py-[18px]",e),...t})}function UH({className:e,...t}){return r.jsx("div",{"data-slot":"alert-dialog-footer",className:Ne("flex items-center justify-end gap-2 border-t border-hairline bg-surface-2 px-5 py-[13px]",e),...t})}function zye({className:e,tone:t="danger",...n}){return r.jsx("div",{"data-slot":"alert-dialog-banner","data-tone":t,className:Ne("rounded-md border px-3.5 py-3 text-xs leading-[1.65] text-subtle","[&_strong]:font-semibold",t==="danger"?"border-destructive-bd bg-destructive-soft [&_strong]:text-destructive":"border-border bg-surface-inset [&_strong]:text-foreground",e),...n})}function ps({className:e,containerClassName:t,container:n=!0,...s}){const i=r.jsx("table",{"data-slot":"table",className:Ne("w-full caption-bottom border-collapse text-[12.5px]",e),...s});return n?r.jsx("div",{"data-slot":"table-container",className:Ne("relative w-full overflow-auto",t),children:i}):i}function Qs({className:e,...t}){return r.jsx("thead",{"data-slot":"table-header",className:Ne(e),...t})}function Es({className:e,...t}){return r.jsx("tbody",{"data-slot":"table-body",className:Ne(e),...t})}function Bye({className:e,...t}){return r.jsx("tfoot",{"data-slot":"table-footer",className:Ne("border-t border-border bg-surface-2 font-medium",e),...t})}function Jt({className:e,...t}){return r.jsx("tr",{"data-slot":"table-row",className:Ne("transition-colors duration-100 hover:[&>td]:bg-control-hover",e),...t})}function tt({className:e,children:t,sortDirection:n=!1,onSortChange:s,sortLabel:i,...o}){return r.jsx("th",{"data-slot":"table-head",className:Ne("sticky top-0 z-[2] whitespace-nowrap border-b border-border bg-[var(--ui-table-head-bg)] px-2 py-2","text-left text-[10.5px] font-semibold tracking-[.05em] text-muted-foreground",e),...o,"aria-sort":s?n==="asc"?"ascending":n==="desc"?"descending":"none":o["aria-sort"],children:s?r.jsxs(B,{type:"button",variant:"ghost",size:"xs","data-table-sort":"",className:"h-auto max-w-full gap-1 border-0 px-0 py-0 align-middle [font-size:inherit] font-semibold tracking-[inherit] text-inherit hover:bg-transparent active:translate-y-0","aria-label":i,title:[i,o.title].filter(Boolean).join(` -`)||void 0,onClick:()=>s(n==="asc"?"desc":"asc"),children:[r.jsx("span",{className:"min-w-0 truncate",children:t}),r.jsxs("svg",{viewBox:"0 0 24 24",className:"size-3","aria-hidden":"true",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[r.jsx("path",{d:"m8 9 4-4 4 4",className:n==="asc"?"text-primary-fg":"opacity-35"}),r.jsx("path",{d:"m8 15 4 4 4-4",className:n==="desc"?"text-primary-fg":"opacity-35"})]})]}):t})}function Ve({className:e,...t}){return r.jsx("td",{"data-slot":"table-cell",className:Ne("border-b border-hairline px-2 py-2 align-middle",e),...t})}function Fye({className:e,...t}){return r.jsx("caption",{"data-slot":"table-caption",className:Ne("mt-4 text-xs text-muted-foreground",e),...t})}const Uye="data-checked",Hye="data-unchecked",iP={checked(e){return e?{[Uye]:""}:{[Hye]:""}},...Fo,...hc},oP="data-composite-item-active",HH=p.createContext({register:()=>{},unregister:()=>{},subscribeMapChange:()=>()=>{},nextIndexRef:{current:0}});function Vye(){return p.useContext(HH)}function lP(e={}){const{guess:t,label:n,metadata:s,textRef:i,index:o}=e,{register:l,unregister:u,subscribeMapChange:d,nextIndexRef:f}=Vye(),m=p.useRef(-1),[g,v]=p.useState(o==null&&t?()=>{if(m.current===-1){const w=f.current;f.current+=1,m.current=w}return m.current}:-1),b=o??g,y=p.useRef(null),k=p.useCallback(w=>{const S=y.current;S&&u(S),y.current=w,w&&l(w,{metadata:s??null,index:o??null,label:n,textRef:i})},[o,l,u,s,n,i]);return Ge(()=>{if(o==null)return d(w=>{const S=y.current?w.get(y.current)?.index:null;S!=null&&v(S)})},[o,d]),{ref:k,index:b}}function Kye(e={}){const{highlightItemOnHover:t,highlightedIndex:n,onHighlightedIndexChange:s}=_F(),{ref:i,index:o}=lP(e),l=n===o,u=p.useRef(null),d=lo(i,u);return{compositeProps:{tabIndex:l?0:-1,onFocus(){s(o)},onMouseMove(){const m=u.current;if(!t||!m)return;const g=m.hasAttribute("disabled")||m.ariaDisabled==="true";!l&&!g&&m.focus()}},compositeRef:d,index:o}}function VH(e){const{render:t,className:n,style:s,state:i=yr,props:o=co,refs:l=co,metadata:u,stateAttributesMapping:d,tag:f="div",...m}=e,{compositeProps:g,compositeRef:v}=Kye({metadata:u});return Kt(f,e,{state:i,ref:[v,...l],props:[g,...o,m],stateAttributesMapping:d})}const KH=p.createContext(void 0);function qye(){return p.useContext(KH)}function yS(e){if(e==null)return"";if(typeof e=="string")return e;try{return JSON.stringify(e)}catch{return String(e)}}const qH=p.createContext(void 0);function Gye(){const e=p.useContext(qH);if(e===void 0)throw new Error(Vn(52));return e}const GH=p.forwardRef(function(t,n){const{render:s,className:i,disabled:o=!1,readOnly:l=!1,required:u=!1,"aria-labelledby":d,value:f,inputRef:m,nativeButton:g=!1,id:v,style:b,...y}=t,k=qye(),{disabled:w,readOnly:S,required:N,form:C,checkedValue:T,touched:P=!1,validation:O,name:A,setCheckedValue:R=Xn,setTouched:M=Xn,registerInputRef:_=Xn}=k??{},{setTouched:L,setFilled:$,state:D,disabled:F}=uo(),V=Hk(),{labelId:q,getDescriptionProps:Q}=zi(),X=F||V.disabled||w||o,U=S||l,z=N||u,K=C,J=k?T===f:f==="",ee=p.useRef(null),H=p.useRef(null),G=O?.registerInput,Y=p.useCallback(xe=>G?.(xe,{controlRef:ee,value:void 0}),[G]),se=lo(m,H,_,Y);Ge(()=>{H.current?.checked&&$(!0)},[$]),Ge(()=>{if(H.current){if(X&&J){_(null);return}_(H.current)}},[J,X,_]);const re=Ws(),ne=_d({id:v}),de=g?void 0:ne,ie=FO(d,q,H,!g,de),oe={role:"radio","aria-checked":J,"aria-labelledby":ie,[oP]:J?"":void 0,id:g?ne:re,onKeyDown(xe){xe.key==="Enter"&&xe.preventDefault()},onClick(xe){if(xe.defaultPrevented||X||U)return;xe.preventDefault();const Se=H.current;Se&&og(Se,xe)},onFocus(xe){xe.defaultPrevented||X||U||!P||(H.current?.click(),M(!1))}},{getButtonProps:je,buttonRef:te}=$i({disabled:X,native:g,composite:!1}),le={type:"radio",ref:se,form:K,id:de,name:A,tabIndex:-1,style:A?pg:vu,"aria-hidden":!0,...f!==void 0?{value:yS(f)}:yr,disabled:X,checked:J,required:z,readOnly:U,onChange(xe){if(xe.nativeEvent.defaultPrevented||X||U||f===void 0)return;const Se=Nt(rs,xe.nativeEvent);R(f,Se),!Se.isCanceled&&L(!0)},onClick(xe){xe.stopPropagation()},onFocus(){ee.current?.focus()}},he=p.useMemo(()=>({...D,required:z,disabled:X,readOnly:U,checked:J}),[D,X,U,J,z]),ce=he,ye=k!==void 0,fe=[n,ee,te],Le=[oe,y,je,Q,O?xe=>O.getValidationProps(X,xe):yr],pe=Kt("span",t,{enabled:!ye,state:he,ref:fe,props:Le,stateAttributesMapping:iP});return r.jsxs(qH.Provider,{value:ce,children:[ye?r.jsx(VH,{tag:"span",render:s,className:i,style:b,state:he,refs:fe,props:Le,stateAttributesMapping:iP}):pe,r.jsx("input",{...le,suppressHydrationWarning:!0})]})}),Wye=p.forwardRef(function(t,n){const{render:s,className:i,style:o,keepMounted:l=!1,...u}=t,d=Gye(),f=d.checked,{mounted:m,transitionStatus:g,setMounted:v}=gu(f),b={...d,transitionStatus:g},y=p.useRef(null),k=l||m,w=Kt("span",t,{ref:[n,y],state:b,props:u,stateAttributesMapping:iP});return ji({batch:!0,enabled:!f,open:f,ref:y,onComplete(){f||v(!1)}}),k?w:null});function cP(e){const{children:t,elementsRef:n,labelsRef:s,onMapChange:i}=e,o=qe(i),[,l]=p.useState(!1),u=$s(Xye).current,d=$s(Yye).current,f=p.useRef(0),m=p.useRef(!0),g=p.useRef(null),v=p.useRef(null),b=qe(()=>{m.current||(m.current=!0,l(P=>!P))}),y=qe((P,O)=>{d.set(P,O),b()}),k=qe(P=>{d.delete(P),b()}),w=qe(P=>{const O=new Map;return n.current.length=0,s&&(s.current.length=0),P.forEach(A=>{O.set(A.element,{...A.registration.metadata??{},index:A.index}),n.current[A.index]=A.element,s&&(s.current[A.index]=A.registration.label!==void 0?A.registration.label:A.registration.textRef?.current?.textContent??A.element.textContent)}),f.current=n.current.length,O});function S(P){if(v.current?.disconnect(),v.current=null,typeof MutationObserver!="function"||P.length<2)return;const O=new MutationObserver(R=>{if(!Jye(R))return;let M=null;for(const _ of P)if(_.isConnected){if(M&&WH(M,_)>0){O.disconnect(),b();return}M=_}});v.current=O;const A=new Set;for(let R=1;RO.observe(R,{childList:!0}))}const N=qe(()=>{const[P,O]=Qye(d),A=w(P),R=g.current,M=!R||R.length!==P.length||P.some((_,L)=>{const $=R[L];return _.index!==$.index||_.element!==$.element||_.registration.index!==$.registration.index||_.registration.metadata!==$.registration.metadata});S(O),g.current=P,m.current=!1,M&&(u.forEach(_=>_(A)),o(A))});Ge(()=>(!m.current&&g.current&&w(g.current),()=>{n.current=[],s&&(s.current=[])}),[n,s,w]),Ge(()=>{m.current&&N()}),Ge(()=>()=>{v.current?.disconnect(),m.current=!0},[]);const C=qe(P=>(u.add(P),()=>{u.delete(P)})),T=p.useMemo(()=>({register:y,unregister:k,subscribeMapChange:C,nextIndexRef:f}),[y,k,C,f]);return r.jsx(HH.Provider,{value:T,children:t})}function Yye(){return new Map}function Xye(){return new Set}function Qye(e){const t=new Set,n=[],s=[];e.forEach((o,l)=>{if(!l.isConnected)return;const u=o.index,d={index:u??-1,element:l,registration:o};u===null?s.push(d):u>=0&&(t.add(u),n.push(d))});let i=0;return s.sort((o,l)=>WH(o.element,l.element)),s.forEach(o=>{for(;t.has(i);)i+=1;o.index=i,n.push(o),i+=1}),t.size>0&&n.sort((o,l)=>o.index-l.index),[n,s.map(o=>o.element)]}function Zye(e,t){let n=e.parentElement;for(;n&&!n.contains(t);)n=n.parentElement;return n}function Jye(e){for(const t of e)for(let n=0;n{if(T.current=N.current[L]??null,(u??y)(L),$){const D=N.current[L];SH(w.current,D,o,n)}}),A=qe(L=>{if(L.size===0)return;if(C.current){const V=N.current,q=V.indexOf(T.current);if(q===-1){const Q=V[P];!Q||Bd(V,P,g)?O(tje(V,g)):T.current=Q}else q!==P&&O(q);return}C.current=!0;const $=Array.from(L.keys()),D=$.find(V=>V?.hasAttribute(oP))??null,F=D?L.get(D)?.index??-1:-1;if(F!==-1)O(F);else if(Bd($,P,g)){const V=Ta($,{disabledIndices:g});zd($,V)||O(V)}SH(w.current,D,o,n)});Ge(()=>{if(g==null||l!=null||!C.current)return;const L=N.current;if(Bd(L,P,g)){const $=Ta(L,{disabledIndices:g});zd(L,$)||O($)}},[g,l,P,N,O]);const R=qe((L,$,D)=>i?i(L,$,D,N):D),M=qe(L=>{const $=L.key===eP||L.key===tP;if(!gS.has(L.key)||!f&&$||nje(L,v)||!w.current)return;const F=o==="rtl",V=F?ZR:JR,q=F?JR:ZR,Q=n==="vertical"?QR:V,X=n==="vertical"?XR:q,U=Er(L.nativeEvent);if(U!=null&&kH(U)&&!YH(U)){const G=U.selectionStart,Y=U.selectionEnd,se=U.value;if(G==null||L.shiftKey||G!==Y||L.key!==X&&G0)return}let z=P;const K=Bk(N,g),J=nR(N,g);s!=null&&(z=s({disabledIndices:g,elementsRef:N,event:L,highlightedIndex:P,loopFocus:t,maxIndex:J,minIndex:K,onLoop:R,orientation:n,rtl:F}));const ee=n!=="vertical"&&L.key===V||n!=="horizontal"&&L.key===QR,H=n!=="vertical"&&L.key===q||n!=="horizontal"&&L.key===XR;f&&(L.key===eP?z=K:L.key===tP&&(z=J)),z===P&&(ee||H)&&(t&&z===J&&ee?(z=K,i&&(z=i(L,P,z,N))):t&&z===K&&H?(z=J,i&&(z=i(L,P,z,N))):z=Ta(N.current,{startingIndex:z,decrement:H,disabledIndices:g})),z!==P&&!zd(N.current,z)&&(m&&L.stopPropagation(),(k||$||ee||H)&&L.preventDefault(),O(z,!0),queueMicrotask(()=>{N.current[z]?.focus()}))});return{props:{ref:S,onFocus(L){const $=w.current,D=Er(L.nativeEvent);!$||D==null||!kH(D)||D.setSelectionRange(0,D.value.length)},onKeyDown:M},highlightedIndex:P,onHighlightedIndexChange:O,elementsRef:N,onMapChange:A,relayKeyboardEvent:M}}function tje(e,t){let n=-1;for(let s=0;s({highlightedIndex:M,onHighlightedIndexChange:_,highlightItemOnHover:T,relayKeyboardEvent:D}),[M,_,T,D]);return r.jsx(MF.Provider,{value:V,children:r.jsx(cP,{elementsRef:L,onMapChange:q=>{k?.(q),$(q)},children:F})})}const sje=[wH],XH=p.forwardRef(function(t,n){const{render:s,className:i,disabled:o,readOnly:l,required:u,onValueChange:d,value:f,defaultValue:m,form:g,name:v,inputRef:b,id:y,style:k,...w}=t,{setTouched:S,setFocused:N,validationMode:C,name:T,disabled:P,state:O,validation:A,setDirty:R,setFilled:M,validityData:_}=uo(),{labelId:L}=zi(),{clearErrors:$,elementRef:D}=uu(),F=BO(!0),V=P||o,q=T??v,Q=Ws(y),[X,U]=Tl({controlled:f,default:m,name:"RadioGroup",state:"value"}),[z,K]=p.useState(!1),J=qe((te,le)=>{d?.(te,le),!le.isCanceled&&U(te)}),ee=A.getInputControl,H=p.useMemo(()=>({get current(){return ee()}}),[ee]),G=p.useRef(null),Y=p.useRef(null);function se(te){let le;return b&&(typeof b=="function"?le=b(te):b.current=te),G.current=te,le}const re=qe(te=>{if(!te||te.disabled)return;Y.current||(Y.current=te);const le=G.current,he=te.checked||le==null||le.disabled?se(te):void 0;return()=>{Y.current===te&&(Y.current=null),G.current===te?he?(he(),G.current=null):se(null):he?.()}}),ne=qe(()=>{const te=D.current;if(!te)return X??null;for(const le of A.registeredInputs.keys())if(le.checked&&LU(le,te))return X??null;return null});hg(H,Q,X??null,ne,!V,v),Vo(X,()=>{$(q),R(X!==_.initialValue),M(X!=null),A.change(X);const te=Y.current;X==null&&te&&!te.disabled&&se(te)});const de=L??F?.legendId,ie={...O,disabled:V??!1,required:u??!1,readOnly:l??!1},oe=p.useMemo(()=>({checkedValue:X,disabled:V,form:g,validation:A,name:q,readOnly:l,registerInputRef:re,required:u,setCheckedValue:J,setTouched:K,touched:z}),[X,V,g,A,q,l,re,u,J,K,z]),je={id:y,role:"radiogroup","aria-required":u||void 0,"aria-disabled":V||void 0,"aria-readonly":l||void 0,"aria-labelledby":de,onFocus(){N(!0)},onBlur(te){Et(te.currentTarget,te.relatedTarget)||(S(!0),N(!1),C==="onBlur"&&A.commit(X))},onKeyDownCapture(te){te.key.startsWith("Arrow")&&(K(!0),N(!0))}};return r.jsx(KH.Provider,{value:oe,children:r.jsx(rje,{render:s,className:i,style:k,state:ie,props:[je,w,te=>A.getValidationProps(V??!1,te)],refs:[n],stateAttributesMapping:hc,enableHomeAndEndKeys:!1,modifierKeys:sje})})});function bg({className:e,...t}){return r.jsx(XH,{"data-slot":"radio-group",className:Ne("flex flex-col gap-2",e),...t})}function Mh({className:e,children:t,...n}){return r.jsxs(GH,{"data-slot":"radio-group-item",className:Ne("relative inline-flex size-3.5 flex-none cursor-pointer items-center justify-center rounded-full border border-control-border bg-control","outline-none transition-colors duration-150 ease-out","hover:border-control-border-hover","data-checked:border-primary data-checked:bg-primary","focus-visible:shadow-focus","data-disabled:cursor-not-allowed data-disabled:opacity-45",e),...n,children:[t,r.jsx(Wye,{"data-slot":"radio-group-indicator",className:"grid place-content-center data-unchecked:hidden",children:r.jsx("span",{className:"block size-[5px] rounded-full bg-primary-foreground"})})]})}function QH(e){const t=p.useRef(!0);t.current&&(t.current=!1,e())}const ZH=p.createContext(void 0),JH=p.createContext(void 0),eV=p.createContext(void 0);function Vd(){const e=p.useContext(ZH);if(e===void 0)throw new Error(Vn(60));return e}function uP(){const e=p.useContext(JH);if(e===void 0)throw new Error(Vn(101));return e}function tV(){const e=p.useContext(eV);if(e===void 0)throw new Error(Vn(61));return e}function aje(e,t,n=Object.is){const{length:s}=e;if(s!==t.length)return!1;for(let i=0;iObject.is(e,t);function Ko(e,t,n){return e==null||t==null?Object.is(e,t):n(e,t)}function nV(e,t,n){return Array.isArray(e)&&Array.isArray(t)?!aje(e,t,(s,i)=>Ko(s,i,n)):e!==t}function wS(e,t,n){return e?e.some(s=>s===void 0?!1:Ko(t,s,n)):!1}function yg(e,t,n){return e?e.findIndex(s=>s===void 0?!1:Ko(s,t,n)):-1}function ije(e,t){if(t!==jS)return s=>wS(e,s,t);const n=new Set(e);return n.delete(void 0),s=>n.has(s)&&(s!==0||e.some(i=>Object.is(s,i)))}function Wb(e,t,n,s){const i=s&&Array.isArray(t)?e.findIndex(ije(t,n)):yg(e,t,n);return i===-1?null:i}function rV(e,t,n,s,i,o){return wS(s,t,i)?o!=null&&e>o&&wS(s,n[o],i)?o:e:e===o?Wb(n,s,i,!0):o}function sV(e,t,n){return e.filter(s=>!Ko(t,s,n))}function oje(e){return typeof e=="object"&&e!=null&&Array.isArray(e.items)}function dP(e){return oje(e?.[0])}function kS(e){return dP(e)?e.flatMap(t=>t.items):e}function aV(e){if(!Array.isArray(e))return e!=null&&"null"in e;const t=e;if(dP(t)){for(const n of t)for(const s of n.items)if(s&&s.value==null&&s.label!=null)return!0;return!1}for(const n of t)if(n&&n.value==null&&n.label!=null)return!0;return!1}function Kd(e,t){if(t&&e!=null)return t(e)??"";if(e&&typeof e=="object"){if("label"in e&&e.label!=null)return String(e.label);if("value"in e)return String(e.value)}return yS(e)}function Rl(e,t){return t&&e!=null?t(e)??"":e&&typeof e=="object"&&"value"in e&&"label"in e?yS(e.value):yS(e)}function fP(e,t,n){function s(){return Kd(e,n)}if(n&&e!=null)return n(e);if(e&&typeof e=="object"&&"label"in e&&e.label!=null)return e.label;if(t&&!Array.isArray(t))return(Object.hasOwn(t,e)?t[e]:void 0)??s();if(Array.isArray(t)){const o=kS(t);if(e==null||typeof e!="object"){const l=o.find(u=>u.value===e);return l&&l.label!=null?l.label:s()}if("value"in e){const l=o.find(u=>u&&u.value===e.value);if(l&&l.label!=null)return l.label}}return s()}function iV(e,t,n){return e.reduce((s,i,o)=>(o>0&&s.push(", "),s.push(r.jsx(p.Fragment,{children:fP(i,t,n)},o)),s),[])}const lje={id:e=>e.id,labelId:e=>e.labelId,modal:e=>e.modal,items:e=>e.items,itemToStringLabel:e=>e.itemToStringLabel,isItemEqualToValue:e=>e.isItemEqualToValue,value:e=>e.value,hasSelectedValue:e=>{const{value:t,multiple:n,itemToStringValue:s}=e;return t==null?!1:n&&Array.isArray(t)?t.length>0:Rl(t,s)!==""},hasNullItemLabel:(e,t)=>t?aV(e.items):!1,open:e=>e.open,mounted:e=>e.mounted,forceMount:e=>e.forceMount,transitionStatus:e=>e.transitionStatus,openMethod:e=>e.openMethod,activeIndex:e=>e.activeIndex,selectedIndex:e=>e.selectedIndex,isActive:(e,t)=>e.activeIndex===t,isSelected:(e,t)=>{const n=e.isItemEqualToValue,s=e.value;return e.multiple?Array.isArray(s)&&s.some(i=>Ko(t,i,n)):Ko(t,s,n)},isSelectedByFocus:(e,t)=>e.selectedIndex===t,popupProps:e=>e.popupProps,triggerProps:e=>e.triggerProps,triggerElement:e=>e.triggerElement,positionerElement:e=>e.positionerElement,listElement:e=>e.listElement,popupSide:e=>e.popupSide,scrollUpArrowVisible:e=>e.scrollUpArrowVisible,scrollDownArrowVisible:e=>e.scrollDownArrowVisible,hasScrollArrows:e=>e.hasScrollArrows},yu=1;function oV(e,t){return Math.max(0,e-t)}function cje(e,t){if(t<=0)return 0;const n=bu(e,0,t),s=n,i=t-n,o=s<=yu,l=i<=yu;return o&&l?s<=i?0:t:o?0:l?t:n}function uje(e){const{id:t,value:n,defaultValue:s=null,onValueChange:i,open:o,defaultOpen:l=!1,onOpenChange:u,name:d,form:f,autoComplete:m,disabled:g=!1,readOnly:v=!1,required:b=!1,modal:y=!0,actionsRef:k,inputRef:w,onOpenChangeComplete:S,items:N,multiple:C=!1,itemToStringLabel:T,itemToStringValue:P,isItemEqualToValue:O=jS,highlightItemOnHover:A=!0,children:R}=e,{clearErrors:M}=uu(),{setDirty:_,setTouched:L,setFocused:$,validityData:D,setFilled:F,name:V,disabled:q,validation:Q,validationMode:X}=uo(),U=_d({id:t}),z=q||g,K=V??d,[J,ee]=Tl({controlled:n,default:C?s??co:s,name:"Select",state:"value"}),[H,G]=Tl({controlled:o,default:l,name:"Select",state:"open"}),Y=p.useRef([]),se=p.useRef([]),re=p.useRef(null),ne=p.useRef(null),de=p.useRef(0),ie=p.useRef(null),oe=p.useRef([]),je=p.useRef(!1),te=p.useRef(null),le=p.useRef(null),he=p.useRef({allowSelectedMouseUp:!1,allowUnselectedMouseUp:!1,dragY:0}),ce=p.useRef(!1),ye=p.useRef(J),{mounted:fe,setMounted:Le,transitionStatus:pe}=gu(H),{openMethod:xe,triggerProps:Se}=IH(H),ge=$s(()=>new Ph({id:U,labelId:void 0,modal:y,multiple:C,itemToStringLabel:T,itemToStringValue:P,isItemEqualToValue:O,value:J,open:H,mounted:fe,transitionStatus:pe,items:N,forceMount:!1,openMethod:null,activeIndex:null,selectedIndex:null,popupProps:yr,triggerProps:yr,triggerElement:null,positionerElement:null,listElement:null,popupSide:null,scrollUpArrowVisible:!1,scrollDownArrowVisible:!1,hasScrollArrows:!1},{setValue:Xn,setOpen:Xn,handleScrollArrowVisibility:Xn,onOpenChangeComplete:Xn,listRef:Y,popupRef:re,scrollHandlerRef:ne,scrollArrowsMountedCountRef:de,valueRef:ie,valuesRef:oe,labelsRef:se,typingRef:je,selectionRef:he,firstItemTextRef:te,selectedItemTextRef:le,alignItemWithTriggerActiveRef:ce,initialValueRef:ye},lje)).current,ue=ge.useState("activeIndex"),be=ge.useState("selectedIndex"),ve=ge.useState("triggerElement"),De=ge.useState("positionerElement"),Ie=mye(xe),We=xe??Ie,nt=p.useMemo(()=>C?"":Rl(J,P),[C,J,P]),kt=p.useMemo(()=>C&&Array.isArray(J)?J.map(xn=>Rl(xn,P)):Rl(J,P),[C,J,P]),Je=ss(ve),on=qe(()=>kt);hg(Je,U,J,on,!z,d);const nn=C?Array.isArray(J)&&J.length>0:J!=null&&nt!=="";Ge(()=>{F(nn)},[nn,F]),Ge(function(){const jn=Wb(oe.current,J,O,C);jn===null&&(le.current=null),!H&&ge.set("selectedIndex",jn)},[C,H,J,O,ge]),Vo(J,()=>{M(K),_(nV(J,D.initialValue,O)),Q.change(J)});const On=qe((xn,jn)=>{u?.(xn,jn),!jn.isCanceled&&(G(xn),!xn&&(jn.reason===Fd||jn.reason===Wk)&&(L(!0),$(!1),X==="onBlur"&&Q.commit(J)))}),Rn=qe(()=>{Le(!1),ge.update({activeIndex:null,openMethod:null,scrollUpArrowVisible:!1,scrollDownArrowVisible:!1}),S?.(!1)});ji({enabled:!k,open:H,ref:re,onComplete(){H||Rn()}}),p.useImperativeHandle(k,()=>({unmount:Rn}),[Rn]);const gt=qe((xn,jn)=>{i?.(xn,jn),!jn.isCanceled&&ee(xn)}),sn=qe(xn=>{const jn=oV(xn.scrollHeight,xn.clientHeight),ke=cje(xn.scrollTop,jn),Xe=ke>0,Qe=keYH(Y.current[xn]),onMatch(xn){H?ge.set("activeIndex",xn):gt(oe.current[xn],Nt(rs))},onTyping(xn){je.current=xn}}),jt=p.useMemo(()=>oo(Ht.reference,Tt.reference,ht.reference,zt.reference,Se),[zt.reference,Ht.reference,Tt.reference,ht.reference,Se]),an=p.useMemo(()=>oo(Ub,Ht.floating,Tt.floating,ht.floating),[Ht.floating,Tt.floating,ht.floating]),Xt=Tt.item??yr;ge.useContextCallback("setValue",gt),ge.useContextCallback("setOpen",On),ge.useContextCallback("handleScrollArrowVisibility",sn),ge.useContextCallback("onOpenChangeComplete",S),QH(()=>{ge.update({popupProps:an,triggerProps:jt})}),ge.useSyncedValues({id:U,modal:y,multiple:C,value:J,open:H,mounted:fe,transitionStatus:pe,popupProps:an,triggerProps:jt,items:N,itemToStringLabel:T,itemToStringValue:P,isItemEqualToValue:O,openMethod:We});const gn=p.useMemo(()=>({disabled:z,readOnly:v,required:b,multiple:C,highlightItemOnHover:A,itemProps:Xt}),[z,v,b,C,A,Xt]),un=lo(w,Q.inputRef),lr=C?void 0:K,yn=p.useMemo(()=>!C||!Array.isArray(J)||!K?null:J.map(xn=>{const jn=Rl(xn,P);return r.jsx("input",{type:"hidden",form:f,name:K,value:jn,disabled:z},jn)}),[C,J,f,K,P,z]);return r.jsxs(ZH.Provider,{value:ge,children:[r.jsx(JH.Provider,{value:gn,children:r.jsx(eV.Provider,{value:Ke,children:R})}),r.jsx("input",{...Q.getValidationProps(z,{onFocus(){ge.state.triggerElement?.focus({focusVisible:!0})},onChange(xn){if(xn.nativeEvent.defaultPrevented||z||v)return;const jn=xn.currentTarget.value,ke=Nt(rs,xn.nativeEvent);function Xe(){if(C)return;const Qe=jn.toLowerCase();let Yt=oe.current.findIndex(fn=>Rl(fn,P).toLowerCase()===Qe||Kd(fn,T).toLowerCase()===Qe);Yt===-1&&(Yt=oe.current.findIndex((fn,At)=>{const Re=se.current[At];return Re!=null&&Re.toLowerCase()===Qe}));const Rt=oe.current[Yt];Rt!=null&>(Rt,ke)}ge.set("forceMount",!0),queueMicrotask(Xe)}}),id:U&&lr==null?`${U}-hidden-input`:void 0,form:f,name:lr,autoComplete:m,value:nt,disabled:z,required:b&&!(C&&nn),readOnly:v,ref:un,style:K?pg:vu,tabIndex:-1,"aria-hidden":!0,suppressHydrationWarning:!0}),yn]})}function lV(e,t){return e??t}const SS=5;function cV(e,t){const n=dje(t);return e.clientX>=n.left-SS&&e.clientX<=n.right+SS&&e.clientY>=n.top-SS&&e.clientY<=n.bottom+SS}function dje(e){const t=e.getBoundingClientRect(),n=vr(e);if(UO)return t;const s=n.getComputedStyle(e,"::before"),i=n.getComputedStyle(e,"::after");if(!(s.content!=="none"||i.content!=="none"))return t;const l=parseFloat(s.width)||0,u=parseFloat(s.height)||0,d=parseFloat(i.width)||0,f=parseFloat(i.height)||0,m=Math.max(t.width,l,d),g=Math.max(t.height,u,f),v=m-t.width,b=g-t.height;return{left:t.left-v/2,right:t.right+v/2,top:t.top-b/2,bottom:t.bottom+b/2}}const fje="data-popup-side",hje=400,mje={...qO,...hc,popupSide:e=>e?{[fje]:e}:null,value:()=>null},pje=p.forwardRef(function(t,n){const{render:s,className:i,id:o,disabled:l=!1,nativeButton:u=!0,style:d,...f}=t,{setTouched:m,setFocused:g,validationMode:v,validation:b,state:y,disabled:k}=uo(),{labelId:w}=zi(),S=Vd(),{readOnly:N,required:C,disabled:T}=uP(),P=k||T||l,O=S.useState("open"),A=S.useState("mounted"),R=S.useState("value"),M=S.useState("triggerProps"),_=S.useState("positionerElement"),L=S.useState("listElement"),$=S.useState("popupSide"),D=S.useState("id"),F=S.useState("labelId"),V=S.useState("hasSelectedValue"),q=A&&_?$:null,Q=o??D,X=lV(w,F);_d({id:o});const U=ss(_),z=p.useRef(null),{getButtonProps:K,buttonRef:J}=$i({disabled:P,native:u}),ee=S.useStateSetter("triggerElement"),H=fa(),G=fa(),Y=fa();p.useEffect(()=>{if(O)return Y.start(hje,()=>{S.context.selectionRef.current.allowUnselectedMouseUp=!0,S.context.selectionRef.current.allowSelectedMouseUp=!0}),()=>{Y.clear()};S.context.selectionRef.current={allowSelectedMouseUp:!1,allowUnselectedMouseUp:!1,dragY:0},G.clear()},[O,S,G,Y]);const se=oo(M,{id:Q,role:"combobox","aria-expanded":O,"aria-haspopup":"listbox","aria-controls":O?L?.id??_k(_)?.id:void 0,"aria-labelledby":X,"aria-readonly":N||void 0,"aria-required":C||void 0,tabIndex:P?-1:0,onFocus(de){g(!0),O&&S.context.alignItemWithTriggerActiveRef.current&&S.context.setOpen(!1,Nt(rs,de.nativeEvent)),H.start(0,()=>{S.set("forceMount",!0)})},onBlur(de){Et(_,de.relatedTarget)||(m(!0),g(!1),v==="onBlur"&&b.commit(R))},onMouseDown(de){if(O)return;const ie=_n(de.currentTarget);function oe(je){if(!z.current)return;const te=je.target;Et(z.current,te)||Et(U.current,te)||cV(je,z.current)||S.context.setOpen(!1,Nt(UU,je))}G.start(0,()=>{ie.addEventListener("mouseup",oe,{once:!0})})}},f,K),re=b.getValidationProps(P,se);re.role="combobox";const ne={...y,open:O,disabled:P,value:R,readOnly:N,popupSide:q,placeholder:!V};return Kt("button",t,{ref:[n,z,J,ee],state:ne,stateAttributesMapping:mje,props:re})}),gje={value:()=>null},xje=p.forwardRef(function(t,n){const{className:s,render:i,children:o,placeholder:l,style:u,...d}=t,f=Vd(),m=f.useState("value"),g=f.useState("items"),v=f.useState("itemToStringLabel"),b=f.useState("hasSelectedValue"),y=!b&&l!=null&&o==null,k=f.useState("hasNullItemLabel",y),w={value:m,placeholder:!b};let S=null;return typeof o=="function"?S=o(m):o!=null?S=o:y&&!k?S=l:Array.isArray(m)?S=iV(m,g,v):S=fP(m,g,v),Kt("span",t,{state:w,ref:[n,f.context.valueRef],props:[{children:S},d],stateAttributesMapping:gje})}),vje=p.forwardRef(function(t,n){const{render:s,className:i,style:o,...l}=t,f={open:Vd().useState("open")};return Kt("span",t,{state:f,ref:n,props:[{"aria-hidden":!0,children:"▼"},l],stateAttributesMapping:Rk})}),bje=p.forwardRef(function(t,n){const s=Vd(),i=s.useState("mounted"),o=s.useState("forceMount");return i||o?r.jsx(eS,{ref:n,...t}):null}),uV=p.createContext(void 0);function yje(){const e=p.useContext(uV);if(!e)throw new Error(Vn(59));return e}function NS(e,t){e&&Object.assign(e.style,t)}const jje={position:"relative",maxHeight:"100%",overflowX:"hidden",overflowY:"auto"},wje=20;function hP(e,t,n,s){const[i,o]=p.useState(!1);Ge(()=>{if(!e||!t||n==null){o(!1);return}const l=_n(n).documentElement.clientWidth,u=n.offsetWidth;o(l>0&&u>0&&u>=l-wje)},[e,t,n]),OH(e&&(!t||i),s)}const kje={position:"fixed"},Sje=p.forwardRef(function(t,n){const{anchor:s,className:i,render:o,positionMethod:l,side:u,align:d,sideOffset:f,alignOffset:m,collisionBoundary:g="clipping-ancestors",collisionPadding:v,arrowPadding:b,sticky:y,disableAnchorTracking:k,alignItemWithTrigger:w=!0,collisionAvoidance:S=h6,style:N,...C}=t,T=Vd(),P=tV(),O=T.useState("open"),A=T.useState("mounted"),R=T.useState("modal"),M=T.useState("value"),_=T.useState("openMethod"),L=T.useState("positionerElement"),$=T.useState("triggerElement"),D=T.useState("isItemEqualToValue"),F=T.useState("transitionStatus"),V=p.useRef(null),q=p.useRef(null),[Q,X]=p.useState(w),U=A&&Q&&_!=="touch";!A&&Q!==w&&X(w),p.useImperativeHandle(T.context.alignItemWithTriggerActiveRef,()=>U),hP((U||R)&&O,_==="touch",L,$);const z=hS({anchor:s,floatingRootContext:P,positionMethod:l,mounted:A,side:u,sideOffset:f,align:d,alignOffset:m,arrowPadding:b,collisionBoundary:g,collisionPadding:v,sticky:y,disableAnchorTracking:k??U,collisionAvoidance:S,keepMounted:!0}),K=U?"none":z.side,J=U?kje:z.positionerStyles,ee={open:O,side:K,align:z.align,anchorHidden:z.anchorHidden};Ge(()=>{T.set("popupSide",z.side)},[T,z.side]);const H=T.useStateSetter("positionerElement"),G=mS(t,ee,{styles:J,transitionStatus:F,props:C,refs:[n,H],hidden:!A,inert:!O}),Y=p.useRef(0),se=qe(ne=>{if(T.context.valuesRef.current.length===0)return;const de=Y.current;Y.current=ne.size;const ie=Nt(rs);if(de!==0&&!T.state.multiple&&M!==null&&yg(T.context.valuesRef.current,M,D)===-1){const je=T.context.initialValueRef.current,le=je!=null&&yg(T.context.valuesRef.current,je,D)!==-1?je:null;T.context.setValue(le,ie),le===null&&(T.set("selectedIndex",null),T.context.selectedItemTextRef.current=null)}if(de!==0&&T.state.multiple&&Array.isArray(M)){const oe=M.filter(je=>yg(T.context.valuesRef.current,je,D)!==-1);oe.length!==M.length&&(T.context.setValue(oe,ie),oe.length===0&&(T.set("selectedIndex",null),T.context.selectedItemTextRef.current=null))}if(O&&U){T.update({scrollUpArrowVisible:!1,scrollDownArrowVisible:!1});const oe={height:""};NS(L,oe),NS(T.context.popupRef.current,oe)}}),re=p.useMemo(()=>({...z,side:K,alignItemWithTriggerActive:U,setControlledAlignItemWithTrigger:X,scrollUpArrowRef:V,scrollDownArrowRef:q}),[z,K,U,X]);return r.jsx(cP,{elementsRef:T.context.listRef,labelsRef:T.context.labelsRef,onMapChange:se,children:r.jsxs(uV.Provider,{value:re,children:[A&&R&&r.jsx(vS,{inert:qb(!O),cutout:$}),G]})})}),CS="base-ui-disable-scrollbar",dV={className:CS,getElement(e){return r.jsx("style",{nonce:e,href:CS,precedence:"base-ui:low",children:`.${CS}{scrollbar-width:none}.${CS}::-webkit-scrollbar{display:none}`})}},Nje=p.createContext(void 0);function fV(e){return p.useContext(Nje)}const Cje=p.createContext(void 0),Aje={disableStyleElements:!1};function Eje(){return p.useContext(Cje)??Aje}const hV="--transform-origin",Tje={...cg,...Fo},Oje=p.forwardRef(function(t,n){const{render:s,className:i,style:o,finalFocus:l,...u}=t,d=Vd(),{multiple:f,readOnly:m,highlightItemOnHover:g}=uP(),v=tV(),{side:b,align:y,alignItemWithTriggerActive:k,isPositioned:w,setControlledAlignItemWithTrigger:S}=yje(),N=fV()!=null,C=Vb(),{nonce:T,disableStyleElements:P}=Eje(),O=d.useState("id"),A=d.useState("open"),R=d.useState("openMethod"),M=d.useState("mounted"),_=d.useState("popupProps"),L=d.useState("transitionStatus"),$=d.useState("triggerElement"),D=d.useState("positionerElement"),F=d.useState("listElement"),V=p.useRef(!1),q=p.useRef(!1),Q=p.useRef({}),X=fg(),U=qe(ee=>{if(!D||!d.context.popupRef.current||!q.current)return;const H=D.style.top==="0px",G=D.style.bottom==="0px";if(V.current||!k||!H&&!G){d.context.handleScrollArrowVisibility(ee);return}const Y=pV(D),se=Yb(D.getBoundingClientRect().height,"y",Y),re=_n(D),ne=vr(D),de=ne.getComputedStyle(D),ie=parseFloat(de.marginTop),oe=parseFloat(de.marginBottom),je=mV(ne.getComputedStyle(d.context.popupRef.current)),te=Math.min(re.documentElement.clientHeight-ie-oe,je),le=ee.scrollTop,he=AS(ee);let ce=null;const ye=xe=>{D.style.height=`${xe}px`},fe=H?he-le:le,Le=Math.min(se+fe,te);if(fe<=yu){const xe=bu(fe,0,te-se);xe>0&&ye(se+xe),ee.scrollTop=H?he:0,te-(se+xe)<=yu&&(V.current=!0),d.context.handleScrollArrowVisibility(ee);return}if(te-Le>yu)ce=H?1/0:0;else if(G&&leyu&&(ee.scrollTop=xe)}pe>=te-yu&&(V.current=!0),d.context.handleScrollArrowVisibility(ee)});p.useImperativeHandle(d.context.scrollHandlerRef,()=>U,[U]),ji({open:A,ref:d.context.popupRef,onComplete(){A&&d.context.onOpenChangeComplete(!0)}});const z={open:A,transitionStatus:L,side:b,align:y};Ge(()=>{!D||!d.context.popupRef.current||Object.keys(Q.current).length||(Q.current={top:D.style.top||"0",left:D.style.left||"0",right:D.style.right,height:D.style.height,bottom:D.style.bottom,minHeight:D.style.minHeight,maxHeight:D.style.maxHeight,marginTop:D.style.marginTop,marginBottom:D.style.marginBottom})},[d,D]),Ge(()=>{A||k||(q.current=!1,V.current=!1,NS(D,Q.current))},[A,k,D]),Ge(()=>{const ee=d.context.popupRef.current;if(!A||!$||!D||!ee||k&&!w||d.state.transitionStatus==="ending")return;if(q.current=!0,ee.style.removeProperty(hV),!k){X.request(()=>d.context.handleScrollArrowVisibility(F||ee));return}const H=Rje(ee);try{let G=d.context.selectedItemTextRef.current;G?.isConnected||(G=!d.select("hasSelectedValue")&&d.context.firstItemTextRef.current?.isConnected?d.context.firstItemTextRef.current:null);const Y=d.context.valueRef.current,se=vr(D),re=se.getComputedStyle(D),ne=se.getComputedStyle(ee),de=_n($),ie=pV($),oe=ES($.getBoundingClientRect(),ie),je=ES(D.getBoundingClientRect(),ie),te=oe.height,le=F||ee,he=le.scrollHeight,ce=parseFloat(ne.borderBottomWidth),ye=parseFloat(re.marginTop)||10,fe=parseFloat(re.marginBottom)||10,Le=parseFloat(re.minHeight)||100,pe=mV(ne),xe=5,Se=5,ge=20,ue=de.documentElement.clientHeight-ye-fe,be=de.documentElement.clientWidth,ve=ue-oe.bottom+te;let De,Ie=C==="rtl"?oe.right-je.width:oe.left,We=0;if(G&&Y){const zt=ES(Y.getBoundingClientRect(),ie);De=ES(G.getBoundingClientRect(),ie),Ie=je.left+(C==="rtl"?zt.right-De.right:zt.left-De.left);const ht=zt.top-oe.top+zt.height/2;We=De.top-je.top+De.height/2-ht}const nt=ve+We+fe+ce;let kt=Math.min(ue,nt);const Je=ue-ye-fe,on=nt-kt,nn=be-Se;D.style.left=`${bu(Ie,xe,nn-je.width)}px`,D.style.height=`${kt}px`,D.style.maxHeight="none",D.style.marginTop=`${ye}px`,D.style.marginBottom=`${fe}px`,ee.style.height="100%";const On=AS(le),Rn=on>=On-yu;Rn&&(kt=Math.min(ue,je.height)-(on-On));const gt=oe.topue-ge||Math.ceil(kt)+yu=Je?"0":`${zt}px`,D.style.height=`${kt}px`,le.scrollTop=AS(le)}else D.style.bottom="0",le.scrollTop=on;if(De){const zt=je.top,ht=je.height,Tt=De.top+De.height/2,Ht=bu(ht>0?(Tt-zt)/ht*100:50,0,100);ee.style.setProperty(hV,`50% ${Ht}%`)}(Ke===ue||kt>=pe)&&(V.current=!0),d.context.handleScrollArrowVisibility(le),g&&d.state.selectedIndex===null&&d.state.activeIndex===null&&d.context.listRef.current[0]!=null&&d.set("activeIndex",0)}finally{H()}},[d,A,D,$,k,S,X,F,g,C,w]),p.useEffect(()=>{if(!k||!D||!A)return;const ee=vr(D);function H(G){d.context.setOpen(!1,Nt(Nxe,G))}return kn(ee,"resize",H)},[d,k,D,A]);const K={...F?{role:"presentation"}:{role:"listbox","aria-multiselectable":f||void 0,"aria-readonly":m||void 0,id:`${O}-list`},onKeyDown(ee){N&&gS.has(ee.key)&&ee.stopPropagation()},onScroll(ee){F||U(ee.currentTarget)},...k&&{style:F?{height:"100%"}:jje},className:!F&&k?dV.className:void 0},J=Kt("div",t,{ref:[n,d.context.popupRef],state:z,stateAttributesMapping:Tje,props:[_,K,Kb(L),u]});return r.jsxs(p.Fragment,{children:[!P&&dV.getElement(T),r.jsx(tS,{context:v,modal:!1,disabled:!M,openInteractionType:R,returnFocus:l,restoreFocus:!0,children:J})]})});function mV(e){const t=e.maxHeight;return t.endsWith("px")&&parseFloat(t)||1/0}function AS(e){return oV(e.scrollHeight,e.clientHeight)}function pV(e){return M6.getScale(e)}function Yb(e,t,n){return e/n[t]}function ES(e,t){return Rb({x:Yb(e.x,"x",t),y:Yb(e.y,"y",t),width:Yb(e.width,"x",t),height:Yb(e.height,"y",t)})}const gV=[["transform","none"],["scale","1"],["translate","0 0"]];function Rje(e){const{style:t}=e,n={};for(const[s,i]of gV)n[s]=t.getPropertyValue(s),t.setProperty(s,i,"important");return()=>{for(const[s]of gV){const i=n[s];i?t.setProperty(s,i):t.removeProperty(s)}}}const xV=p.createContext(void 0);function mP(){const e=p.useContext(xV);if(!e)throw new Error(Vn(57));return e}const Pje=p.memo(p.forwardRef(function(t,n){const{render:s,className:i,style:o,value:l=null,label:u,disabled:d=!1,nativeButton:f=!1,...m}=t,g=p.useRef(null),v=lP({guess:!0,label:u,textRef:g}),b=Vd(),{itemProps:y,multiple:k,disabled:w,readOnly:S}=uP(),N=w||d,C=b.useState("isActive",v.index),T=b.useState("open"),P=b.useState("isSelected",l),O=b.useState("isSelectedByFocus",v.index),A=b.useState("isItemEqualToValue"),R=v.index,M=p.useRef(null);Ge(()=>{const z=b.context.valuesRef.current;return z[R]=l,()=>{delete z[R]}},[R,l,b]),Ge(()=>{const z=b.state.value,K=b.state.selectedIndex;let J=K,ee;k&&Array.isArray(z)?(J=rV(R,l,b.context.valuesRef.current,z,A,K),ee=J===R,R===K&&!ee&&(b.context.selectedItemTextRef.current=null)):(ee=z!==void 0&&Ko(l,z,A),ee&&(J=R)),b.set("selectedIndex",J),ee&&g.current&&(b.context.selectedItemTextRef.current=g.current)},[R,k,A,b,l]);const _=p.useRef("mouse"),L=p.useRef(!1),{getButtonProps:$,buttonRef:D}=$i({disabled:N,focusableWhenDisabled:!0,native:f,composite:!0}),F={disabled:N,selected:P,highlighted:C};function V(z){if(w||S)return;const K=b.state.value;if(k){const J=Array.isArray(K)?K:[],ee=P?sV(J,l,A):[...J,l];b.context.setValue(ee,Nt(Mb,z))}else b.context.setValue(l,Nt(Mb,z)),b.context.setOpen(!1,Nt(Mb,z))}function q(){b.context.selectionRef.current.dragY=0}const Q={role:"option","aria-selected":P,tabIndex:T&&C?0:-1,onKeyDown(z){b.set("activeIndex",R),z.key===" "&&b.context.typingRef.current&&z.preventDefault()},onClick(z){const K=_.current!=="touch",J=z.nativeEvent.pointerType,ee=K&&Dk(z.nativeEvent)&&(J!==void 0||C),H=K&&!ee&&!L.current;L.current=!1,!(N||H)&&V(z.nativeEvent)},onPointerEnter(z){_.current=z.pointerType},onPointerMove(z){if(z.pointerType==="mouse"&&z.buttons===1){const K=b.context.selectionRef.current;K.dragY+=z.movementY,K.dragY**2>=64&&(K.allowUnselectedMouseUp=!0)}},onPointerDown(z){_.current=z.pointerType,L.current=!0,q()},onMouseUp(){if(q(),N||_.current==="touch"||L.current)return;const z=!b.context.selectionRef.current.allowSelectedMouseUp&&P,K=!b.context.selectionRef.current.allowUnselectedMouseUp&&!P;z||K||(L.current=!0,M.current?.click(),L.current=!1)}},X=Kt("div",t,{ref:[D,n,v.ref,M],state:F,props:[y,Q,m,$]}),U=p.useMemo(()=>({selected:P,index:R,textRef:g,selectedByFocus:O}),[P,R,g,O]);return r.jsx(xV.Provider,{value:U,children:X})})),Ije=p.forwardRef(function(t,n){const{selected:s}=mP();return t.keepMounted||s?r.jsx(Mje,{...t,ref:n}):null}),Mje=p.memo(p.forwardRef((e,t)=>{const{render:n,className:s,style:i,keepMounted:o,...l}=e,{selected:u}=mP(),d=p.useRef(null),{transitionStatus:f,setMounted:m}=gu(u),v=Kt("span",e,{ref:[t,d],state:{selected:u,transitionStatus:f},props:[{"aria-hidden":!0,children:"✔️"},l],stateAttributesMapping:Fo});return ji({batch:!0,enabled:!u,open:u,ref:d,onComplete(){u||m(!1)}}),v})),_je=p.memo(p.forwardRef(function(t,n){const{index:s,textRef:i,selectedByFocus:o}=mP(),l=Vd(),{render:u,className:d,style:f,...m}=t,g=p.useCallback(b=>{b&&(s===0&&(l.context.firstItemTextRef.current=b),o&&(l.context.selectedItemTextRef.current=b))},[l,s,o]);return Kt("div",t,{ref:[g,n,i],props:m})})),vV=p.createContext(void 0);function Dje(){const e=p.useContext(vV);if(e===void 0)throw new Error(Vn(56));return e}const Lje=p.forwardRef(function(t,n){const{render:s,className:i,style:o,...l}=t,[u,d]=p.useState(),f=p.useMemo(()=>({labelId:u,setLabelId:d}),[u,d]),m=Kt("div",t,{ref:n,props:[{role:"group","aria-labelledby":u},l]});return r.jsx(vV.Provider,{value:f,children:m})}),$je=p.forwardRef(function(t,n){const{render:s,className:i,style:o,id:l,...u}=t,{setLabelId:d}=Dje(),f=Ws(l);return Ge(()=>(d(f),()=>{d(g=>g===f?void 0:g)}),[f,d]),Kt("div",t,{ref:n,props:[{id:f,"aria-hidden":!0},u]})}),zje=p.forwardRef(function(t,n){const{className:s,render:i,orientation:o="horizontal",style:l,...u}=t;return Kt("div",t,{state:{orientation:o},ref:n,props:[{role:"presentation"},u]})});function bV(e,t){const[n,s]=p.useState();return p.useLayoutEffect(()=>{if(!t)return;const i=e?.closest('[role="dialog"], [role="alertdialog"]'),o=e?.ownerDocument.defaultView;if(!e||!i||!o){s(void 0);return}const l=[i];for(let u=e.parentElement;u&&u!==i;u=u.parentElement){const d=o.getComputedStyle(u);(/(auto|scroll)/.test(`${d.overflowX} ${d.overflowY}`)||u.matches('[data-slot="dialog-body"], [data-slot="sheet-body"], [data-slot="alert-dialog-body"]'))&&l.push(u)}s(l)},[e,t]),n}const TS=p.createContext(null);function Pt({open:e,defaultOpen:t=!1,onOpenChange:n,children:s,...i}){const[o,l]=p.useState(t),[u,d]=p.useState(null),[f,m]=p.useState(!1),g=e??o;p.useLayoutEffect(()=>{g&&m(!1)},[g]);const v=p.useCallback((k,w)=>{n?.(k,w),!w.isCanceled&&(k&&m(!1),l(k))},[n]),b=p.useCallback(()=>{if(!g||f)return;const k=Nt("none",void 0,u??void 0);v(!1,k),k.isCanceled||m(!0)},[g,f,u,v]),y=p.useMemo(()=>({open:g,trigger:u,setTrigger:d,closeOnAnchorHidden:b,closedOnAnchorHidden:f}),[g,u,b,f]);return r.jsx(TS.Provider,{value:y,children:r.jsx(uje,{...i,open:g,onOpenChange:v,children:s})})}function Bje({anchorHidden:e,open:t,...n}){const i=p.useContext(TS)?.closeOnAnchorHidden;return p.useLayoutEffect(()=>{t&&e&&i?.()},[t,e,i]),r.jsx("div",{...n})}const It=xje,Fje=Lje,Uje=$je,Hje=zje;function Mt({className:e,children:t,ref:n,...s}){const i=p.useContext(TS);return Ah({render:r.jsx(pje,{}),ref:[n??null,i?.setTrigger??null],props:{...s,"data-slot":"select-trigger",className:Ne("inline-flex h-[30px] min-w-0 cursor-pointer items-center justify-between gap-1.5 rounded-md border border-control-border bg-control px-2.5","[&>span]:min-w-0 [&>span]:truncate","text-[12.5px] font-normal text-foreground max-[767px]:h-10 max-[767px]:text-base","transition-colors duration-150 ease-out","hover:border-control-border-hover hover:bg-control-hover","focus-visible:border-primary focus-visible:shadow-focus focus-visible:outline-none","data-disabled:cursor-not-allowed data-disabled:bg-control data-disabled:text-muted-foreground data-disabled:opacity-60",e),children:r.jsxs(r.Fragment,{children:[t,r.jsx(vje,{className:"flex flex-none text-muted-foreground transition-transform duration-[180ms] data-popup-open:rotate-180",children:r.jsx("svg",{viewBox:"0 0 10 6",className:"size-2.5","aria-hidden":"true",children:r.jsx("path",{d:"M1 1l4 4 4-4",stroke:"currentColor",strokeWidth:"1.4",fill:"none",strokeLinecap:"round",strokeLinejoin:"round"})})})]})}})}function _t({className:e,sideOffset:t=4,children:n,finalFocus:s,...i}){const o=p.useContext(TS),l=bV(o?.trigger??null,o?.open??!1);return r.jsx(bje,{children:r.jsx(Sje,{sideOffset:t,alignItemWithTrigger:!1,collisionBoundary:l,className:"z-[35] data-anchor-hidden:invisible data-anchor-hidden:pointer-events-none",render:(u,d)=>r.jsx(Bje,{...u,anchorHidden:d.anchorHidden,open:d.open}),children:r.jsx(Oje,{"data-slot":"select-content",className:Ne("max-h-[min(260px,var(--available-height))] min-w-[min(var(--anchor-width),var(--available-width))] max-w-[var(--available-width)] overflow-y-auto overscroll-contain rounded-lg border border-border-strong bg-raised p-[5px] shadow-3","outline-none","data-open:animate-in data-open:fade-in-0","data-closed:animate-out data-closed:fade-out-0",e),finalFocus:o?.closedOnAnchorHidden?!1:s,...i,children:n})})})}function Ze({className:e,children:t,...n}){return r.jsxs(Pje,{"data-slot":"select-item",className:Ne("flex min-h-7 cursor-pointer items-center gap-2 rounded-sm px-[9px] text-[12.5px] leading-[1.4] text-foreground select-none","transition-colors duration-[120ms] ease-out","data-[highlighted]:bg-nav-hover","data-[selected]:bg-primary-soft data-[selected]:font-semibold data-[selected]:text-primary-fg","data-[highlighted]:data-[selected]:bg-primary-tint","data-disabled:pointer-events-none data-disabled:font-normal data-disabled:text-muted-foreground",e),...n,children:[r.jsx(_je,{className:"min-w-0 flex-1 truncate",children:t}),r.jsx(Ije,{className:"flex flex-none text-primary",children:r.jsx("svg",{viewBox:"0 0 12 12",className:"size-3","aria-hidden":"true",children:r.jsx("path",{d:"M2.5 6.2 4.8 8.5 9.5 3.8",stroke:"currentColor",strokeWidth:"1.8",fill:"none",strokeLinecap:"round",strokeLinejoin:"round"})})})]})}function Vje(e,t,n,s,i,o,l,u,d,f=2){const m=txe(n.current,{event:e,orientation:s,loopFocus:i,rtl:o,cols:f,disabledIndices:l,minIndex:u,maxIndex:d,prevIndex:t>d?u:t,stopEvent:!0});return zd(n.current,m)?void 0:m}const yV=p.createContext(void 0),jV=p.createContext(void 0),wV=p.createContext(void 0),kV=p.createContext(!1),SV=p.createContext("");function qo(){const e=p.useContext(yV);if(!e)throw new Error(Vn(22));return e}function OS(){const e=p.useContext(jV);if(!e)throw new Error(Vn(23));return e}function Xb(){const e=p.useContext(wV);if(!e)throw new Error(Vn(24));return e}function NV(){return p.useContext(SV)}function Kje(){return p.useContext(kV)}const qje={id:e=>e.id,labelId:e=>e.labelId,items:e=>e.items,selectedValue:e=>e.selectedValue,hasSelectionChips:e=>{const t=e.selectedValue;return Array.isArray(t)&&t.length>0},hasSelectedValue:e=>{const{selectedValue:t,selectionMode:n}=e;return t==null?!1:n==="multiple"&&Array.isArray(t)?t.length>0:!0},hasNullItemLabel:(e,t)=>t?aV(e.items):!1,open:e=>e.open,mounted:e=>e.mounted,forceMounted:e=>e.forceMounted,inline:e=>e.inline,activeIndex:e=>e.activeIndex,selectedIndex:e=>e.selectedIndex,isActive:(e,t)=>e.activeIndex===t,isSelected:(e,t)=>{const n=e.isItemEqualToValue,s=e.selectedValue;return Array.isArray(s)?s.some(i=>Ko(t,i,n)):Ko(t,s,n)},transitionStatus:e=>e.transitionStatus,popupProps:e=>e.popupProps,listProps:e=>e.listProps,inputProps:e=>e.inputProps,triggerProps:e=>e.triggerProps,itemProps:e=>e.itemProps,positionerElement:e=>e.positionerElement,listElement:e=>e.listElement,popupId:e=>e.popupId,triggerElement:e=>e.triggerElement,inputElement:e=>e.inputElement,inputGroupElement:e=>e.inputGroupElement,popupSide:e=>e.popupSide,openMethod:e=>e.openMethod,inputInsidePopup:e=>e.inputInsidePopup,inputOwnsFormValue:e=>e.inputOwnsFormValue,selectionMode:e=>e.selectionMode,name:e=>e.name,form:e=>e.form,disabled:e=>e.disabled,readOnly:e=>e.readOnly,required:e=>e.required,grid:e=>e.grid,virtualized:e=>e.virtualized,itemToStringLabel:e=>e.itemToStringLabel,isItemEqualToValue:e=>e.isItemEqualToValue,modal:e=>e.modal,autoHighlight:e=>e.autoHighlight};function CV(e){return e==null?void 0:`${e}-popup`}function Gje(e,t){return(n,s)=>n==null?!1:e.contains(n,s,t)}const AV=new Map;function Wje(e={}){const t={usage:"search",sensitivity:"base",ignorePunctuation:!0,...e},n=`${pR(e.locale)}|${JSON.stringify(t)}`,s=AV.get(n);if(s)return s;const i=new Intl.Collator(e.locale,t),o={contains(l,u,d){if(!u)return!0;const f=Kd(l,d);for(let m=0;m<=f.length-u.length;m+=1)if(i.compare(f.slice(m,m+u.length),u)===0)return!0;return!1},startsWith(l,u,d){if(!u)return!0;const f=Kd(l,d);return i.compare(f.slice(0,u.length),u)===0},endsWith(l,u,d){if(!u)return!0;const f=Kd(l,d),m=u.length;return f.length>=m&&i.compare(f.slice(f.length-m),u)===0}};return AV.set(n,o),o}const Yje=Wje;function Xje(e,t=!1){const{overflowY:n}=Li(e);return n!=="auto"&&n!=="scroll"?!1:t?e.clientHeight>0:e.scrollHeight>e.clientHeight}const EV=Symbol("none"),pP={value:EV,index:-1};function Qje(e,t,n){const s=e.get(t);if(s!==void 0||n===jS)return s;for(const[i,o]of e)if(Ko(i,t,n))return o}function Zje(e){const{id:t,onOpenChangeComplete:n,defaultSelectedValue:s=null,selectedValue:i,onSelectedValueChange:o,defaultInputValue:l,inputValue:u,open:d,defaultOpen:f=!1,selectionMode:m,onItemHighlighted:g,name:v,form:b,disabled:y=!1,readOnly:k=!1,required:w=!1,inputRef:S,grid:N=!1,items:C,filteredItems:T,filter:P,filterQuery:O,openOnInputClick:A=!0,autoHighlight:R=!1,keepHighlight:M=!1,highlightItemOnHover:_=!0,loopFocus:L=!0,itemToStringLabel:$,itemToStringValue:D,isItemEqualToValue:F=jS,virtualized:V=!1,inline:q=!1,fillInputOnItemPress:Q=!0,modal:X=!1,limit:U=-1,autoComplete:z="list",formAutoComplete:K,locale:J,submitOnItemClick:ee=!1}=e,{clearErrors:H}=uu(),{setDirty:G,validityData:Y,setFilled:se,name:re,disabled:ne,setTouched:de,setFocused:ie,validationMode:oe,validation:je}=uo(),te=Vb(),le=_d({id:t}),he=Yje({locale:J}),ce=Array.isArray(C)?null:C;if(ce&&typeof ce.label!="function")throw new Error(Vn(100));const ye=ce?ce.data:C,fe=ce?.value,Le=fe?void 0:ye,pe=p.useMemo(()=>{if(!T||!fe)return;const rt=kS(T),vt=rt.map(fe);let bn;return{values:vt,findItem(rr,Kr){if(!bn){bn=new Map;for(let Pr=0;Prce?rt=>ce.label(rt,F,vt=>{const bn=pe?.findItem(vt,F);return bn!=null?ce.itemLabel(bn):Kd(vt,$)}):$,[ce,$,pe,F]),Se=p.useMemo(()=>ce?Object.assign(rt=>ce.itemLabel(rt),{selected:rt=>Kd(rt,xe)}):$,[ce,xe,$]);function ge(rt){return Kd(rt,xe)}const[ue,be]=p.useState(!1),[ve,De]=p.useState(null),Ie=p.useRef(ve),We=p.useRef([]),nt=p.useRef([]),kt=p.useRef(null),Je=p.useRef(null),on=p.useRef(null),nn=p.useRef(null),On=p.useRef(null),Rn=p.useRef(!0),gt=p.useRef(!1),sn=p.useRef(null),Ke=p.useRef(null),zt=p.useRef(null),ht=p.useRef(pP),Tt=p.useRef(null),Ht=p.useRef([]),jt=p.useRef(null),an=ne||y,Xt=re??v,gn=m==="multiple",un=m==="single",lr=u!==void 0||l!==void 0,yn=ye!==void 0,xn=T!==void 0;let jn;R==="always"?jn="always":jn=R?"input-change":!1;const[ke,Xe]=Tl({controlled:i,default:gn?s??co:s,name:"Combobox",state:"selectedValue"}),Qe=p.useMemo(()=>P===null?()=>!0:P!==void 0?P:Gje(he,Se),[P,he,Se]),Yt=$s(()=>lr?l??"":un?ge(ke):"").current,[Rt,fn]=Tl({controlled:u,default:Yt,name:"Combobox",state:"inputValue"}),[At,Re]=Tl({controlled:d,default:f,name:"Combobox",state:"open"}),mt=dP(ye),Bt=!At&&ve!==null?ve:String(Rt).trim(),Pn=un?ge(ke):"",mn=un&&!ue&&Bt!==""&&Pn.length===Bt.length&&he.contains(Pn,Bt),vn=mn?"":O??Bt,Qn=yn&&xn&&mn&&(!ce||ce.hasValue(ke,F)),Ns=p.useMemo(()=>ye?kS(ye):co,[ye]),Cr=p.useMemo(()=>{if(T&&!Qn)return T;if(!ye)return co;if(mt){const vt=ye,bn=[];let rr=0;for(const Kr of vt){if(U>-1&&rr>=U)break;const Pr=U>-1?U-rr:1/0,qr=vn===""?Kr.items.slice(0,Pr):[];if(vn!=="")for(const qs of Kr.items){if(qr.length>=Pr)break;Qe(qs,vn,Se)&&qr.push(qs)}if(qr.length>0){const qs={...Kr,items:qr};bn.push(qs),rr+=qr.length}}return bn}if(vn==="")return U>-1?Ns.slice(0,U):Ns;const rt=[];for(const vt of Ns){if(U>-1&&rt.length>=U)break;Qe(vt,vn,Se)&&rt.push(vt)}return rt},[T,Qn,ye,mt,vn,U,Qe,Se,Ns]),Qr=p.useMemo(()=>{if(pe&&Cr===T)return pe.values;const rt=kS(Cr);return fe?rt.map(vt=>fe(vt)):rt},[Cr,T,pe,fe]),Vt=$s(()=>{let rt=null;return q&&At&&yn&&m!=="none"&&(rt=Wb(Qr,ke,F,gn)),new Ph({id:le,labelId:void 0,selectedValue:ke,open:At,items:Le,selectionMode:m,name:Xt,form:b,disabled:an,readOnly:k,required:w,grid:N,virtualized:V,openOnInputClick:A,itemToStringLabel:xe,isItemEqualToValue:F,modal:X,autoHighlight:jn,submitOnItemClick:ee,hasInputValue:lr,mounted:!1,forceMounted:!1,transitionStatus:"idle",inline:q,activeIndex:null,selectedIndex:rt,popupProps:{},listProps:{},inputProps:{},triggerProps:{},itemProps:yr,positionerElement:null,listElement:null,popupId:void 0,triggerElement:null,inputElement:null,inputGroupElement:null,popupSide:null,openMethod:null,inputInsidePopup:!0,inputOwnsFormValue:m==="none"},{onOpenChangeComplete:Xn,setOpen:Xn,setInputValue:Xn,setSelectedValue:Xn,setIndices:Xn,handleSelection:Xn,forceMount:Xn,requestSubmit:Xn,listRef:We,labelsRef:nt,popupRef:kt,emptyRef:On,inputRef:Je,startDismissRef:on,endDismissRef:nn,keyboardActiveRef:Rn,chipsContainerRef:sn,clearRef:Ke,valuesRef:Ht,pointerDownItemRef:jt,selectionEventRef:zt},qje)}).current,eo=m==="none"?Rt:ke,Kf=p.useMemo(()=>m==="none"?eo:Array.isArray(ke)?ke.map(rt=>Rl(rt,D)):Rl(ke,D),[eo,D,m,ke]),nc=qe(g),Ca=qe(n),si=Vt.useState("activeIndex"),qf=Vt.useState("selectedIndex"),Tp=Vt.useState("positionerElement"),XE=Vt.useState("listElement"),Op=Vt.useState("triggerElement"),Rp=Vt.useState("inputElement"),Pp=Vt.useState("inputGroupElement"),Aa=Vt.useState("inline"),bi=Vt.useState("inputInsidePopup"),dd=Vt.useState("inputOwnsFormValue"),fd=un&&!bi&&Rt===Pn,Ip=ss(Op),{mounted:Gf,setMounted:aa,transitionStatus:k0}=gu(At),{openMethod:QE,triggerProps:S0}=IH(At),hd=qe(()=>Kf);hg(bi?Ip:Je,le,eo,hd,!an,v);const md=qe(()=>{ye?nt.current=Qr.map(ge):Vt.set("forceMounted",!0)}),Wf=qe((rt,vt,bn)=>{if(vt===-1){if(ht.current===pP)return;ht.current=pP}else ht.current={value:rt,index:vt};nc(rt,Cxe(bn,void 0,{index:vt}))}),Oo=qe(rt=>{const vt={};rt.activeIndex!==void 0&&(vt.activeIndex=rt.activeIndex),rt.selectedIndex!==void 0&&(vt.selectedIndex=rt.selectedIndex),Vt.update(vt);const bn=rt.activeIndex;if(bn===void 0)return;const rr=rt.type||rs;bn===null?Wf(void 0,-1,rr):Wf(Ht.current[bn],bn,rr)}),Ro=qe((rt,vt)=>{if(e.onInputValueChange?.(rt,vt),!vt.isCanceled){if(gt.current=vt.reason===mc,vt.reason===_b){At&&ve!==null&&De(null);const bn=vt.event,rr=bn.inputType;if(bn.type==="compositionend"||rr!=null&&rr!==""&&rr!=="insertReplacementText"){const Pr=rt.trim()!=="";Pr&&be(!0),Tt.current={hasQuery:Pr};const qr=Vt.state.listElement;if(!Vt.state.virtualized&&qr){const qs=kt.current;for(const to of ig(qr.firstElementChild??qr)){if(!br(to)||(qs?!Et(qs,to):to.getAttribute("role")==="dialog"))break;if(Xje(to)){to.scrollTop=0;break}}}Pr&&jn&&Vt.state.activeIndex==null&&(At||Aa)&&Vt.set("activeIndex",0)}}else vt.reason===mc&&rt===""&&Vt.state.inputInsidePopup&&(Tt.current={hasQuery:!1,selection:!0});fn(rt)}}),ZE=qe(rt=>{const vt=!rt&&bi&&!Aa&&Rt!==""&&(String(Rt).trim()===ve||Rt===Pn);!rt&&(vt||Rt===""||fd)&&be(!1),De(null),vt&&Ro("",Nt(mc))}),Hn=qe((rt,vt)=>{if(At!==rt&&(vt.reason===mg&&yn&&Qr.length===0&&!On.current&&vt.allowPropagation(),e.onOpenChange?.(rt,vt),!vt.isCanceled&&(rt&&ve!==null&&ZE(vt.reason===_b),!rt&&ue&&(un?(Aa||De(Bt),Bt===""&&be(!1)):gn&&(Aa||De(Bt),bi&&Oo({activeIndex:null}),(!bi||Aa)&&Ro("",Nt(mc,vt.event,void 0,{isItemPress:vt.reason===Mb})))),Re(rt),!rt&&bi&&(vt.reason===Fd||vt.reason===Wk)&&(de(!0),ie(!1),oe==="onBlur")))){const bn=m==="none"?Rt:ke;je.commit(bn)}}),Mp=qe((rt,vt)=>{if(o?.(rt,vt),vt.isCanceled)return;Xe(rt),(m==="none"&&kt.current&&Q||un&&!Vt.state.inputInsidePopup)&&Ro(ge(rt),Nt(vt.reason,vt.event))}),Lv=qe((rt,vt)=>{const bn=Er(rt),rr=zt.current??rt;zt.current=null;const Kr=Nt(Mb,rr),Pr=bn?.closest("a")?.getAttribute("href");if(Pr){Pr.startsWith("#")&&Hn(!1,Kr);return}if(gn){const qr=Array.isArray(ke)?ke:[],qs=wS(qr,vt,F),to=qs?sV(qr,vt,F):[...qr,vt];if(Mp(to,Kr),Kr.isCanceled||!(Je.current?Je.current.value.trim()!=="":!1))return;if(Vt.state.inputInsidePopup){Ro("",Nt(mc,Kr.event,void 0,{isItemPress:!0}));const Io=Tt.current;Io&&!qs&&(Io.toggledValue=vt)}else Hn(!1,Kr)}else{if(Mp(vt,Kr),Kr.isCanceled)return;Hn(!1,Kr)}}),$v=qe(()=>{const rt=je.inputRef.current?.form??Vt.state.inputElement?.form;rt&&typeof rt.requestSubmit=="function"&&rt.requestSubmit()}),Po=qe(()=>{if(aa(!1),Ca?.(!1),be(!1),De(null),Oo(m==="none"?{activeIndex:null,selectedIndex:null}:{activeIndex:null}),gn&&Je.current&&Je.current.value!==""&&!gt.current&&Ro("",Nt(mc)),un)if(Vt.state.inputInsidePopup)Je.current&&Je.current.value!==""&&Ro("",Nt(mc));else{const rt=ge(ke);Je.current&&Je.current.value!==rt&&Ro(rt,Nt(rt===""?mc:rs))}}),Pi=p.useMemo(()=>Aa&&Tp?{current:Tp.closest('[role="dialog"]')}:kt,[Aa,Tp]);ji({enabled:!e.actionsRef,open:At,ref:Pi,onComplete(){At||Po()}}),p.useImperativeHandle(e.actionsRef,()=>({unmount:Po}),[Po]),Ge(function(){const vt=Ie.current!==null&&ve===null;if(Ie.current=ve,At&&(!vt||!yn)||(At||(jt.current=null),m==="none"))return;const bn=yn?Qr:Ht.current;Oo({selectedIndex:Wb(bn,ke,F,gn)})},[At,ve,ke,m,gn,yn,Qr,F,Oo]),Ge(()=>{ye&&(Ht.current=Qr,We.current.length=Qr.length)},[ye,Qr]),Ge(()=>{const rt=Tt.current;if(rt){const qs=At||Aa||Vt.state.positionerElement?.hidden===!1;if(rt.hasQuery)jn&&qs&&Vt.set("activeIndex",0),Tt.current=null;else if(String(Rt).trim()===""&&(Tt.current=null,qs)){const to=rt.selection;jn==="always"&&!to&&Vt.state.selectionMode==="none"&&Vt.set("activeIndex",0),queueMicrotask(()=>{if(!Vt.state.open&&!Vt.state.inline||Je.current&&Je.current.value.trim()!=="")return;const yl=Vt.state.selectedValue,Io=Vt.state.selectionMode==="multiple";if(Io&&Array.isArray(yl)?yl.length>0:Vt.state.selectionMode!=="none"&&yl!=null){const $a=yn||xn?Qr:Ht.current,sc=yg($a,rt.toggledValue,Vt.state.isItemEqualToValue);Vt.set("activeIndex",sc!==-1?sc:Wb($a,yl,Vt.state.isItemEqualToValue,Io))}else to?Vt.set("activeIndex",null):jn==="always"&&Vt.set("activeIndex",0)})}}if(!At&&!Aa)return;const bn=yn||xn?Qr:Ht.current,rr=Vt.state.activeIndex;if(rr==null){if(jn==="always"&&bn.length>0){Vt.set("activeIndex",0);return}Wf(void 0,-1,rs);return}if(rr>=bn.length){Wf(void 0,-1,rs),Vt.set("activeIndex",null);return}const Kr=bn[rr],Pr=ht.current.value,qr=Pr!==EV&&Ko(Kr,Pr,Vt.state.isItemEqualToValue);(ht.current.index!==rr||!qr)&&Wf(Kr,rr,rs)},[si,jn,Wf,xn,yn,Qr,Aa,At,Vt,Rt]),Ge(()=>{if(m==="none"){se(String(Rt)!=="");return}se(gn?Array.isArray(ke)&&ke.length>0:ke!=null)},[se,m,Rt,ke,gn]),p.useEffect(()=>{yn&&jn&&Qr.length===0&&Oo({activeIndex:null})},[yn,jn,Qr.length,Oo]);function JE(){At&&Bt!==""&&Bt!==String(Yt)&&!fd&&be(!0)}function QB(){At&&ve!==null&&ZE(!1)}let zv=!1;function N0(){!zv&&Rt!==Pn&&(zv=!0,Ro(Pn,Nt(rs)))}function ZB(){m!=="none"&&(H(Xt),G(nV(ke,Y.initialValue,F)),je.change(ke),un&&!lr&&!bi&&N0())}function Ii(){un&&!lr&&!bi&&!ue&&N0()}function C0(){m==="none"&&(H(Xt),G(Rt!==Y.initialValue),je.change(Rt))}Vo(Bt,JE),Vo(At,QB),Vo(ke,ZB),Vo(Pn,Ii),Vo(ye,Ii),Vo(Rt,C0);const _p=Z6({open:Aa?!0:At,onOpenChange:Hn,elements:{reference:bi?Op:Rp,floating:Tp}}),Bv=N?"grid":"listbox",rc=At||Aa,A0=rc?"true":"false",Dp=p.useMemo(()=>{const rt=Rp?.tagName==="INPUT",vt=Rp==null||rt,bn=vt||rc,rr=vt?{autoComplete:"off",spellCheck:"false",autoCorrect:"off",autoCapitalize:"none"}:{};return bn&&(rr.role="combobox",rr["aria-expanded"]=A0,rr["aria-haspopup"]=Bv,rr["aria-controls"]=rc?XE?.id:void 0,rr["aria-autocomplete"]=k?"none":z),{reference:rr,floating:{role:"presentation"}}},[Rp,rc,A0,Bv,XE?.id,z,k]),pd=Bb(_p,{enabled:!an&&A,event:"mousedown-only",toggle:!1,touchOpenDelay:bi?0:100,reason:kxe}),Fv=Fb(_p,{enabled:!an&&!Aa,outsidePressEvent:{mouse:"sloppy",touch:"intentional"},bubbles:Aa?!0:void 0,outsidePress(rt){const vt=Er(rt);return!Et(Op,vt)&&!Et(Ke.current,vt)&&!Et(sn.current,vt)&&!Et(Pp,vt)}}),gd=rH(_p,{enabled:!an,id:le,listRef:We,activeIndex:si,selectedIndex:qf,virtual:!0,loopFocus:L,allowEscape:L&&!jn,focusItemOnOpen:ue||m==="none"&&!jn?!1:"auto",focusItemOnHover:_,resetOnPointerLeave:!M,orientation:N?"horizontal":void 0,rtl:te==="rtl",disabledIndices:co,grid:N?Vje:void 0,onNavigate(rt,vt){!vt&&!At||k0==="ending"||Oo(vt?{activeIndex:rt,type:Rn.current?BU:FU}:{activeIndex:rt})}}),E0=p.useMemo(()=>oo(gd.reference,{onKeyDown(rt){N&&Vt.state.activeIndex==null&&(rt.key==="ArrowLeft"||rt.key==="ArrowRight")&&rt.preventBaseUIHandler()}},Fv.reference,pd.reference,Dp.reference),[gd.reference,Fv.reference,pd.reference,Dp.reference,N,Vt]),Uv=p.useMemo(()=>oo(Ub,Fv.floating),[Fv.floating]),eT=p.useMemo(()=>oo(gd.floating,Dp.floating),[gd.floating,Dp.floating]),tT=p.useMemo(()=>{const rt=gd.item;return rt?{...rt,onFocus:void 0}:yr},[gd.item]);Vt.useContextCallback("setOpen",Hn),Vt.useContextCallback("setInputValue",Ro),Vt.useContextCallback("setSelectedValue",Mp),Vt.useContextCallback("setIndices",Oo),Vt.useContextCallback("handleSelection",Lv),Vt.useContextCallback("forceMount",md),Vt.useContextCallback("requestSubmit",$v),Vt.useContextCallback("onOpenChangeComplete",n),QH(()=>{Vt.update({inline:q,popupProps:Uv,listProps:eT,inputProps:E0,triggerProps:S0,itemProps:tT})});const Lp={id:le,selectedValue:ke,open:At,mounted:Gf,transitionStatus:k0,items:Le,inline:q,popupProps:Uv,listProps:eT,inputProps:E0,triggerProps:S0,itemProps:tT,openMethod:QE,selectionMode:m,name:Xt,form:b,disabled:an,readOnly:k,required:w,grid:N,virtualized:V,openOnInputClick:A,itemToStringLabel:xe,modal:X,autoHighlight:jn,isItemEqualToValue:F,submitOnItemClick:ee,hasInputValue:lr};Ge(()=>{Vt.update({...Lp,inputOwnsFormValue:m==="none"&&(q||!Vt.state.inputInsidePopup)})},[Vt,...Object.values(Lp)]);const bl=lo(S,je.inputRef),T0=p.useMemo(()=>({query:Bt,hasItems:yn,filteredItems:Cr,flatFilteredValues:Qr}),[Bt,yn,Cr,Qr]),O0=p.useMemo(()=>Array.isArray(eo)?"":Rl(eo,D),[eo,D]),Yf=gn&&Array.isArray(ke)&&ke.length>0,Qc=gn||m==="none"&&dd?void 0:Xt,nT=p.useMemo(()=>!gn||!Array.isArray(ke)||!Xt?null:ke.map(rt=>{const vt=Rl(rt,D);return r.jsx("input",{type:"hidden",form:b,name:Xt,value:vt,disabled:an},vt)}),[gn,ke,b,Xt,D,an]),R0=r.jsxs(p.Fragment,{children:[e.children,r.jsx("input",{...je.getValidationProps(an,{onFocus(){if(bi){Op?.focus();return}(Je.current||Op)?.focus()},onChange(rt){if(rt.nativeEvent.defaultPrevented||an||k)return;const vt=rt.currentTarget.value,bn=vt.toLowerCase(),rr=Nt(rs,rt.nativeEvent),Kr=()=>Ht.current.findIndex(qr=>Rl(qr,D).toLowerCase()===bn||ge(qr).toLowerCase()===bn);function Pr(){if(gn)return;if(m==="none"){Ro(vt,rr);return}let qr=Kr();qr===-1&&(qr=Ht.current.findIndex((to,yl)=>{const Io=nt.current[yl];return Io!=null&&Io.toLowerCase()===bn}));const qs=qr===-1?void 0:Ht.current[qr];qs!=null&&Mp?.(qs,rr)}un&&(md(),ye&&Kr()===-1&&Vt.set("forceMounted",!0)),queueMicrotask(Pr)}}),id:le&&Qc==null?`${le}-hidden-input`:void 0,form:b,name:Qc,autoComplete:K,disabled:an,required:w&&!Yf,readOnly:k,value:O0,ref:bl,style:Qc?pg:vu,tabIndex:-1,"aria-hidden":!0,suppressHydrationWarning:!0}),nT]});return r.jsx(yV.Provider,{value:Vt,children:r.jsx(jV.Provider,{value:_p,children:r.jsx(kV.Provider,{value:yn,children:r.jsx(wV.Provider,{value:T0,children:r.jsx(SV.Provider,{value:Rt,children:R0})})})})})}function TV(e){const{multiple:t=!1,defaultValue:n,value:s,onValueChange:i,autoComplete:o,...l}=e;return r.jsx(Zje,{...l,selectionMode:t?"multiple":"single",selectedValue:s,defaultSelectedValue:n,onSelectedValueChange:i,formAutoComplete:o})}function Jje(e){const{children:t,placeholder:n}=e,s=qo(),i=s.useState("itemToStringLabel"),o=s.useState("selectedValue"),l=s.useState("items"),u=s.useState("selectionMode")==="multiple",d=s.useState("hasSelectedValue"),f=!d&&n!=null&&t==null,m=s.useState("hasNullItemLabel",f);let g=null;return typeof t=="function"?g=t(o):t!=null?g=t:!d&&n!=null&&!m?g=n:u&&Array.isArray(o)?g=iV(o,l,i):g=fP(o,l,i),r.jsx(p.Fragment,{children:g})}const ewe="data-popup-side",twe="data-list-empty",OV={...qO,...hc,popupSide:e=>e?{[ewe]:e}:null,listEmpty:e=>e?{[twe]:""}:null},nwe=p.createContext(void 0);function rwe(){return p.useContext(nwe)}const RV=p.createContext(void 0);function gP(e){const t=p.useContext(RV);if(t===void 0&&!e)throw new Error(Vn(21));return t}const PV=p.forwardRef(function(t,n){const s=qo(),{buttonRef:i,getButtonProps:o}=$i({native:!1}),l=lo(n,i);function u(f){s.context.setOpen(!1,Nt(dR,f.nativeEvent,f.currentTarget))}const d=o({onClick:u});return r.jsx("span",{ref:l,...d,"aria-label":"Dismiss",tabIndex:void 0,style:pg})});function IV(e){const t=e.useState("mounted"),n=e.useState("popupSide"),s=e.useState("positionerElement");return t&&s?n:null}function RS(){return Xb().filteredItems.length===0}function swe(e){return e==="rtl"?["ArrowRight","ArrowLeft"]:["ArrowLeft","ArrowRight"]}function awe(e,t){const n=e>=t-1?t-2:e;return n>=0?n:void 0}function MV(e,t,n){const s=e.context.listRef.current[t];s&&(e.context.selectionEventRef.current=n,s.click(),e.context.selectionEventRef.current=null)}const _V=p.forwardRef(function(t,n){const{render:s,className:i,disabled:o=!1,id:l,style:u,...d}=t,{state:f,disabled:m,setTouched:g,setFocused:v,validationMode:b,validation:y}=uo(),{labelId:k}=zi(),w=rwe(),N=!!gP(!0),C=qo(),T=NV(),P=Vb(),O=C.useState("required"),A=C.useState("disabled"),R=C.useState("readOnly"),M=C.useState("name"),_=C.useState("form"),L=C.useState("selectionMode"),$=C.useState("autoHighlight"),D=C.useState("inputProps"),F=C.useState("triggerProps"),V=C.useState("open"),q=C.useState("mounted"),Q=C.useState("selectedValue"),X=C.useState("id"),U=C.useState("inline"),z=C.useState("modal"),K=!!$,J=IV(C),ee=m||A||o,H=RS(),G=N||U,Y=!G||z,se=Ws(l??(G?void 0:X)),re=N?uU:f,[ne,de]=p.useState(null),ie=p.useRef(!1),oe=p.useRef(null),je=p.useRef(!1),te=L==="none"&&!N,le=qe(Se=>{const ge=N||C.state.inline;ge&&!C.state.hasInputValue&&C.context.setInputValue("",Nt(rs)),C.update({inputElement:Se,inputInsidePopup:ge,inputOwnsFormValue:te})}),he=N?d:y.getValidationProps(ee,d);function ce(){C.context.setIndices({activeIndex:null,selectedIndex:null,type:C.context.keyboardActiveRef.current?BU:FU})}function ye(){C.context.keyboardActiveRef.current=!1}const fe={...re,open:V,disabled:ee,readOnly:R,popupSide:J,listEmpty:H};function Le(Se){if(!w)return;let ge;const{highlightedChipIndex:ue}=w,be=w.chipsRef.current.length,[ve,De]=swe(P);return ue!==void 0?(Se.key===ve?(Se.preventDefault(),ue>0?ge=ue-1:ge=void 0):Se.key===De?(Se.preventDefault(),ue0&&(Se.preventDefault(),ge=be>0?be-1:void 0),ge)}const pe=Kt("input",t,{state:fe,ref:[n,C.context.inputRef,le],props:[D,F,{value:ne??T,"aria-readonly":R||void 0,"aria-required":O||void 0,"aria-labelledby":k,disabled:ee,readOnly:R,required:L==="none"?O:void 0,form:_,...te&&M&&{name:M},id:se,onFocus(){if(v(!0),!U||!je.current)return;je.current=!1;const Se=oe.current;Se==null||!Object.hasOwn(C.context.valuesRef.current,Se)||C.context.setIndices({activeIndex:Se})},onBlur(){g(!0),v(!1);const Se=C.state.activeIndex;if(U&&Se!==null&&$!=="always"&&(oe.current=Se,je.current=!0,C.context.setIndices({activeIndex:null})),b==="onBlur"){const ge=L==="none"?T:Q;y.commit(ge)}},onCompositionStart(Se){Tk||(ie.current=!0,de(Se.currentTarget.value))},onCompositionEnd(Se){ie.current=!1;const ge=Se.currentTarget.value;de(null),C.context.setInputValue(ge,Nt(_b,Se.nativeEvent))},onChange(Se){const ge=Se.nativeEvent,ue=ge.inputType,be=!ue||ue==="insertReplacementText",ve=ie.current||!be;function De(kt){R||ee||!kt||!ve||(C.context.setOpen(!0,Nt(_b,ge)),K||ce())}if(ie.current){const kt=Se.currentTarget.value;de(kt),kt===""&&!C.state.openOnInputClick&&!C.state.inputInsidePopup&&C.context.setOpen(!1,Nt(mc,ge));const Je=kt.trim(),on=K&&Je!=="";De(Je),V&&C.state.activeIndex!==null&&!on&&ce();return}const Ie=Nt(_b,ge);if(C.context.setInputValue(Se.currentTarget.value,Ie),Ie.isCanceled)return;const We=Se.currentTarget.value==="",nt=Nt(mc,ge);We&&!C.state.inputInsidePopup&&(L==="single"&&C.context.setSelectedValue(null,nt),C.state.openOnInputClick||C.context.setOpen(!1,nt)),De(Se.currentTarget.value.trim()),V&&C.state.activeIndex!==null&&!K&&ce()},onKeyDown(Se){if(Se.ctrlKey||Se.shiftKey||Se.altKey||Se.metaKey)return;if(C.context.keyboardActiveRef.current=!0,ee||R){R&&Se.key==="Enter"&&V&&C.state.activeIndex!==null&&da(Se);return}const ge=Se.currentTarget,ue=ge.scrollWidth-ge.clientWidth,be=P==="rtl";if(Se.key==="Home"){da(Se);const Ie=vU&&be?ge.value.length:0;ge.setSelectionRange(Ie,Ie),ge.scrollLeft=0;return}if(Se.key==="End"){da(Se);const Ie=vU&&be?0:ge.value.length;ge.setSelectionRange(Ie,Ie),ge.scrollLeft=be?-ue:ue;return}if(!q&&Se.key==="Escape"){const Ie=L==="multiple"&&Array.isArray(Q)?Q.length===0:Q===null,We=Nt(mg,Se.nativeEvent),nt=L==="multiple"?[]:null;C.context.setInputValue("",We),C.context.setSelectedValue(nt,We),!Ie&&!C.state.inline&&!We.isPropagationAllowed&&Se.stopPropagation();return}if(w&&Se.key==="Backspace"&&ge.value===""&&w.highlightedChipIndex===void 0&&Array.isArray(Q)&&Q.length>0){const Ie=w.chipsRef.current.length,We=Ie>0?Ie-1:Q.length-1,nt=Q.filter((kt,Je)=>Je!==We);ce(),C.context.setSelectedValue(nt,Nt(rs,Se.nativeEvent));return}const ve=w?.highlightedChipIndex!==void 0,De=Le(Se);if(w?.setHighlightedChipIndex(De),De!==void 0?w?.chipsRef.current[De]?.focus():ve&&C.context.inputRef.current?.focus(),Se.which!==229&&Se.key==="Enter"&&V){const Ie=C.state.activeIndex,We=Se.nativeEvent;if(Ie===null){if(U)return;C.context.setOpen(!1,Nt(rs,We));return}da(Se),MV(C,Ie,We)}},onPointerMove:ye,onPointerDown:ye},he],stateAttributesMapping:OV}),xe=N?r.jsx(zO.Provider,{value:dU,children:pe}):pe;return r.jsxs(p.Fragment,{children:[V&&Y&&r.jsx(PV,{ref:C.context.startDismissRef}),xe]})}),DV=p.forwardRef(function(t,n){const{render:s,className:i,nativeButton:o=!0,disabled:l=!1,id:u,style:d,...f}=t,{state:m,disabled:g,setTouched:v,setFocused:b,validationMode:y,validation:k}=uo(),{labelId:w}=zi(),S=qo(),N=S.useState("selectionMode"),C=S.useState("disabled"),T=S.useState("readOnly"),P=S.useState("required"),O=S.useState("positionerElement"),A=S.useState("listElement"),R=S.useState("popupId"),M=S.useState("triggerProps"),_=S.useState("inputInsidePopup"),L=S.useState("id"),$=S.useState("labelId"),D=S.useState("open"),F=S.useState("selectedValue"),V=S.useState("activeIndex"),q=S.useState("selectedIndex"),Q=S.useState("hasSelectedValue"),X=OS(),U=NV(),z=fa(),K=g||C||l,J=RS(),ee=IV(S);_d({id:_?u:void 0});const H=_?u??L:u,G=lV(w,$);let Y;D&&_?Y=R??CV(L):D&&(Y=A?.id);const se=p.useRef("");function re(he){se.current=he.pointerType}const{reference:ne}=sH(X,{enabled:!D&&!T&&!C&&N==="single",listRef:S.context.labelsRef,activeIndex:V,selectedIndex:q,onMatch(he){const ce=S.context.valuesRef.current[he];ce!==void 0&&S.context.setSelectedValue(ce,Nt(rs))}}),{reference:de}=Bb(X,{enabled:!C,event:"mousedown"}),{buttonRef:ie,getButtonProps:oe}=$i({native:o,disabled:K}),je={...m,readOnly:T,open:D,disabled:K,popupSide:ee,listEmpty:J,placeholder:N==="none"?!1:!Q},te=qe(he=>{S.set("triggerElement",he)});return Kt("button",t,{ref:[n,ie,te],state:je,props:[M,de,ne,{id:H,tabIndex:_?0:-1,role:_?"combobox":void 0,"aria-expanded":D,"aria-haspopup":_?"dialog":"listbox","aria-controls":Y,"aria-required":_&&P||void 0,"aria-readonly":_&&T||void 0,"aria-labelledby":G,onPointerDown:re,onPointerEnter:re,onFocus(){b(!0),!K&&z.start(0,S.context.forceMount)},onBlur(he){if(!Et(O,he.relatedTarget)&&(v(!0),b(!1),y==="onBlur")){const ce=N==="none"?U:F;k.commit(ce)}},onMouseDown(he){if(K||(_||X.set("domReferenceElement",he.currentTarget),S.context.forceMount(),se.current!=="touch"&&(S.context.inputRef.current?.focus(),_||he.preventDefault()),D))return;const ce=_n(he.currentTarget);function ye(fe){const Le=S.state.triggerElement;if(!Le)return;const pe=Er(fe),xe=S.state.positionerElement,Se=S.state.listElement;Et(Le,pe)||Et(xe,pe)||Et(Se,pe)||cV(fe,Le)||S.context.setOpen(!1,Nt(UU,fe))}_&&ce.addEventListener("mouseup",ye,{once:!0})},onKeyDown(he){(he.key==="ArrowDown"||he.key==="ArrowUp")&&(da(he),S.context.setOpen(!0,Nt(fR,he.nativeEvent)),S.context.inputRef.current?.focus())}},k.getValidationProps(K,f),oe],stateAttributesMapping:OV})}),iwe=p.createContext(null);function owe(){return p.useContext(iwe)}function lwe(e){const{children:t}=e,{filteredItems:n}=Xb(),s=owe(),i=s?s.items:n;return r.jsx(p.Fragment,{children:i.map(t)})}const LV=p.forwardRef(function(t,n){var s;const{render:i,className:o,style:l,children:u,...d}=t,f=qo(),m=OS(),g=!!gP(!0),{filteredItems:v,hasItems:b}=Xb(),y=f.useState("selectionMode"),k=f.useState("grid"),w=f.useState("readOnly"),S=f.useState("listProps"),N=f.useState("virtualized"),C=f.useState("forceMounted"),T=y==="multiple",P=v.length===0,O=qe(D=>{f.set("positionerElement",D)}),A=qe(D=>{f.set("listElement",D)}),R=p.useMemo(()=>typeof u=="function"?s||(s=r.jsx(lwe,{children:u})):u,[u]),M={empty:P},_=m.useState("floatingId"),L=Kt("div",t,{state:M,ref:[n,A,g?null:O],props:[S,{children:R,tabIndex:-1,id:_,role:k?"grid":"listbox","aria-multiselectable":T?"true":void 0,"aria-readonly":!k&&w?!0:void 0,onKeyDown(D){if(!(f.state.disabled||f.state.readOnly)&&D.key==="Enter"){const F=f.state.activeIndex;if(F==null)return;da(D),MV(f,F,D.nativeEvent)}},onKeyDownCapture(){f.context.keyboardActiveRef.current=!0},onPointerMoveCapture(){f.context.keyboardActiveRef.current=!1}},d]});if(N)return L;const $=b&&!C?void 0:f.context.labelsRef;return r.jsx(cP,{elementsRef:f.context.listRef,labelsRef:$,children:L})}),cwe="⁠",uwe=200;function dwe(e){const t=e.ownerDocument.createTreeWalker(e,NodeFilter.SHOW_TEXT);let n=null;for(;t.nextNode();){const s=t.currentNode;s.nodeValue!==""&&(n=s)}return n}function fwe(){const e=fa(),t=p.useRef(null);return p.useEffect(()=>{if(Ob)return;const n=t.current;if(n==null)return;const s=dwe(n);if(s==null)return;const i=s.data,o=`${i}${cwe}`;return s.nodeValue=o,e.start(uwe,()=>{s.nodeValue===o&&(s.nodeValue=i)}),()=>{e.clear(),s.nodeValue===o&&(s.nodeValue=i)}},[t,e]),t}const $V=p.createContext(void 0);function hwe(){const e=p.useContext($V);if(e===void 0)throw new Error(Vn(20));return e}const zV=p.forwardRef(function(t,n){const{keepMounted:s=!1,...i}=t,o=qo(),l=o.useState("mounted"),u=o.useState("forceMounted");return l||s||u?r.jsx($V.Provider,{value:s,children:r.jsx(eS,{ref:n,...i})}):null}),BV=p.forwardRef(function(t,n){const{render:s,className:i,anchor:o,positionMethod:l,side:u,align:d,sideOffset:f,alignOffset:m,collisionBoundary:g="clipping-ancestors",collisionPadding:v,arrowPadding:b,sticky:y,disableAnchorTracking:k=!1,collisionAvoidance:w=h6,style:S,...N}=t,C=qo(),T=OS(),P=hwe(),O=C.useState("modal"),A=C.useState("open"),R=C.useState("mounted"),M=C.useState("openMethod"),_=C.useState("positionerElement"),L=C.useState("triggerElement"),$=C.useState("inputElement"),D=C.useState("inputGroupElement"),F=C.useState("inputInsidePopup"),V=C.useState("transitionStatus"),q=RS(),X=hS({anchor:o??(F?L:D??$),floatingRootContext:T,positionMethod:l,mounted:R,side:u,sideOffset:f,align:d,alignOffset:m,arrowPadding:b,collisionBoundary:g,collisionPadding:v,sticky:y,disableAnchorTracking:k,keepMounted:P,collisionAvoidance:w,lazyFlip:!0});hP(A&&O,M==="touch",_,L);const U={open:A,side:X.side,align:X.align,anchorHidden:X.anchorHidden,empty:q};Ge(()=>{C.set("popupSide",X.side)},[C,X.side]);const z=qe(J=>{C.set("positionerElement",J)}),K=mS(t,U,{styles:X.positionerStyles,transitionStatus:V,props:N,refs:[n,z],hidden:!R,inert:!A});return r.jsxs(RV.Provider,{value:X,children:[R&&O&&r.jsx(vS,{inert:qb(!A),cutout:D??$??L}),K]})}),mwe={...cg,...Fo},FV=p.forwardRef(function(t,n){const{render:s,className:i,style:o,initialFocus:l,finalFocus:u,...d}=t,f=qo(),m=gP(),g=OS(),v=f.useState("mounted"),b=f.useState("open"),y=f.useState("openMethod"),k=f.useState("popupProps"),w=f.useState("transitionStatus"),S=f.useState("inputInsidePopup"),N=f.useState("inputElement"),C=f.useState("modal"),T=f.useState("id"),P=RS(),O=d.id??(S?CV(T):void 0);Ge(()=>(f.set("popupId",f.context.popupRef.current?.id||O),()=>{f.set("popupId",void 0)}),[f,O]),ji({open:b,ref:f.context.popupRef,onComplete(){b&&f.context.onOpenChangeComplete(!0)}});const A={open:b,side:m.side,align:m.align,anchorHidden:m.anchorHidden,transitionStatus:w,empty:P},R=Kt("div",t,{state:A,ref:[n,f.context.popupRef],props:[k,{id:O,role:S?"dialog":"presentation",onFocus(D){const F=Er(D.nativeEvent);y!=="touch"&&(Et(f.state.listElement,F)||F===D.currentTarget)&&f.context.inputRef.current?.focus()}},Kb(w),d],stateAttributesMapping:mwe}),_=l===void 0?S?D=>D==="touch"?f.context.popupRef.current:N:!1:l;let L;u!=null?L=u:L=S?void 0:!1;const $=!S||C;return r.jsx(tS,{context:g,disabled:!v,modal:$,openInteractionType:y,initialFocus:_,returnFocus:L,getInsideElements:()=>[f.context.startDismissRef.current,f.context.endDismissRef.current],children:r.jsxs(p.Fragment,{children:[R,$&&r.jsx(PV,{ref:f.context.endDismissRef})]})})}),UV=p.forwardRef(function(t,n){const{render:s,className:i,style:o,...l}=t;return Kt("span",t,{ref:n,props:[{"aria-hidden":!0,children:"▼"},l]})}),HV=p.createContext(void 0);function VV(){const e=p.useContext(HV);if(!e)throw new Error(Vn(19));return e}const pwe=p.createContext(!1);function gwe(){return p.useContext(pwe)}function KV(e){const{componentProps:t,forwardedRef:n,virtualized:s,indexFromFilter:i}=e,{render:o,className:l,style:u,value:d=null,index:f,disabled:m=!1,nativeButton:g=!1,...v}=t,b=p.useRef(null),y=lP({guess:!0,index:f,textRef:b}),k=qo(),w=gwe(),S=Kje(),N=k.useState("selectionMode"),C=k.useState("disabled"),T=k.useState("readOnly"),P=k.useState("isItemEqualToValue"),O=C||m,A=N!=="none",R=f??i??y.index,M=R!==-1,_=k.useState("id"),L=k.useState("isActive",R),$=k.useState("isSelected",d),D=k.useState("itemProps"),F=p.useRef(null),V=_!=null&&M?`${_}-${R}`:void 0,q=$&&A;Ge(()=>{if(!(M&&(s||f!=null)))return;const G=k.context.listRef.current;return G[R]=F.current,()=>{delete G[R]}},[M,s,R,f,k]),Ge(()=>{if(!M||S)return;const H=k.context.valuesRef.current;return H[R]=d,()=>{delete H[R]}},[M,S,R,d,k]),Ge(()=>{if(!M||S)return;const H=k.state.selectedValue;let G=k.state.selectedIndex;k.state.selectionMode==="multiple"&&Array.isArray(H)?G=rV(R,d,k.context.valuesRef.current,H,P,G):Ko(d,H,P)&&(G=R),k.set("selectedIndex",G)},[M,S,k,R,d,P]);const{getButtonProps:Q,buttonRef:X}=$i({disabled:O,focusableWhenDisabled:!0,native:g,composite:!0}),U={disabled:O,selected:q,highlighted:L};function z(H){function G(){k.context.handleSelection(H,d)}k.state.submitOnItemClick?(xr.flushSync(G),k.context.requestSubmit()):G()}const K={id:V,role:w?"gridcell":"option","aria-selected":A?q:void 0,tabIndex:void 0,onPointerDownCapture(H){H.isPrimary&&(k.context.pointerDownItemRef.current=H.currentTarget),H.preventDefault()},onMouseDown(H){H.preventDefault()},onClick(H){O||T||z(H.nativeEvent)},onMouseUp(H){const G=k.context.pointerDownItemRef.current===H.currentTarget;k.context.pointerDownItemRef.current=null,!(O||T||H.button!==0||G||!L)&&z(H.nativeEvent)}},J=Kt("div",t,{ref:[X,n,y.ref,F],state:U,props:[D,K,v,Q]}),ee=p.useMemo(()=>({selected:q,textRef:b}),[q,b]);return r.jsx(HV.Provider,{value:ee,children:J})}function xwe(e){const{componentProps:t,forwardedRef:n}=e,i=qo().useState("isItemEqualToValue"),{flatFilteredValues:o}=Xb(),l=t.value??null,u=yg(o,l,i);return r.jsx(KV,{componentProps:t,forwardedRef:n,virtualized:!0,indexFromFilter:u})}const qV=p.memo(p.forwardRef(function(t,n){const i=qo().useState("virtualized");return i&&t.index==null?r.jsx(xwe,{componentProps:t,forwardedRef:n}):r.jsx(KV,{componentProps:t,forwardedRef:n,virtualized:i,indexFromFilter:void 0})})),GV=p.forwardRef(function(t,n){const{selected:s}=VV();return t.keepMounted||s?r.jsx(vwe,{...t,ref:n}):null}),vwe=p.memo(p.forwardRef((e,t)=>{const{render:n,className:s,style:i,keepMounted:o,...l}=e,{selected:u}=VV(),d=p.useRef(null),{transitionStatus:f,setMounted:m}=gu(u),v=Kt("span",e,{ref:[t,d],state:{selected:u,transitionStatus:f},props:[{"aria-hidden":!0,children:"✔️"},l],stateAttributesMapping:Fo});return ji({batch:!0,enabled:!u,open:u,ref:d,onComplete(){u||m(!1)}}),v})),WV=p.forwardRef(function(t,n){const{render:s,className:i,style:o,children:l,...u}=t,{filteredItems:d}=Xb(),f=qo(),m=fwe(),g=d.length===0?l:null;return Kt("div",t,{ref:[n,f.context.emptyRef,m],props:[{children:g,role:"status","aria-live":"polite","aria-atomic":!0},u]})}),PS=p.createContext(null);function YV({open:e,defaultOpen:t=!1,onOpenChange:n,children:s,...i}){const[o,l]=p.useState(t),[u,d]=p.useState(null),[f,m]=p.useState(!1),g=e??o;p.useLayoutEffect(()=>{g&&m(!1)},[g]);const v=p.useCallback((k,w)=>{n?.(k,w),!w.isCanceled&&(k&&m(!1),l(k))},[n]),b=p.useCallback(()=>{if(!g||f)return;const k=Nt("none",void 0,u??void 0);v(!1,k),k.isCanceled||m(!0)},[g,f,u,v]),y=p.useMemo(()=>({open:g,trigger:u,setTrigger:d,closeOnAnchorHidden:b,closedOnAnchorHidden:f}),[g,u,b,f]);return r.jsx(PS.Provider,{value:y,children:r.jsx(TV,{...i,open:g,onOpenChange:v,children:s})})}function bwe({anchorHidden:e,open:t,...n}){const i=p.useContext(PS)?.closeOnAnchorHidden;return p.useLayoutEffect(()=>{t&&e&&i?.()},[t,e,i]),r.jsx("div",{...n})}const XV=Jje;function QV({className:e,children:t,ref:n,...s}){const i=p.useContext(PS);return Ah({render:r.jsx(DV,{}),ref:[n??null,i?.setTrigger??null],props:{...s,"data-slot":"combobox-trigger",className:Ne("inline-flex h-[30px] min-w-0 cursor-pointer items-center justify-between gap-1.5 rounded-md border border-control-border bg-control px-2.5","text-[12.5px] font-normal text-foreground max-[767px]:h-10 max-[767px]:text-base","transition-colors duration-150 ease-out","hover:border-control-border-hover hover:bg-control-hover","focus-visible:border-primary focus-visible:shadow-focus focus-visible:outline-none","data-disabled:cursor-not-allowed data-disabled:bg-control data-disabled:text-muted-foreground data-disabled:opacity-60",e),children:r.jsxs(r.Fragment,{children:[r.jsx("span",{className:"min-w-0 flex-1 truncate text-left",children:t}),r.jsx(UV,{className:"flex flex-none text-muted-foreground transition-transform duration-[180ms] data-popup-open:rotate-180",children:r.jsx("svg",{viewBox:"0 0 10 6",className:"size-2.5","aria-hidden":"true",children:r.jsx("path",{d:"M1 1l4 4 4-4",stroke:"currentColor",strokeWidth:"1.4",fill:"none",strokeLinecap:"round",strokeLinejoin:"round"})})})]})}})}function ZV({className:e,sideOffset:t=4,children:n,finalFocus:s,...i}){const o=p.useContext(PS),l=bV(o?.trigger??null,o?.open??!1);return r.jsx(zV,{children:r.jsx(BV,{sideOffset:t,align:"start",collisionBoundary:l,className:"z-[35] data-anchor-hidden:invisible data-anchor-hidden:pointer-events-none",render:(u,d)=>r.jsx(bwe,{...u,anchorHidden:d.anchorHidden,open:d.open}),children:r.jsx(FV,{"data-slot":"combobox-content",className:Ne("flex max-h-[min(300px,var(--available-height))] w-[max(var(--anchor-width),220px)] max-w-[var(--available-width)] flex-col overflow-hidden","rounded-lg border border-border-strong bg-raised shadow-3 outline-none","data-open:animate-in data-open:fade-in-0","data-closed:animate-out data-closed:fade-out-0",e),finalFocus:o?.closedOnAnchorHidden?!1:s,...i,children:n})})})}function JV({className:e,...t}){return r.jsx(_V,{"data-slot":"combobox-input",className:Ne("h-[30px] w-full min-w-0 rounded-md border border-control-border bg-control px-2.5","text-[12.5px] text-foreground outline-none max-[767px]:h-10 max-[767px]:text-base","transition-[border-color,box-shadow] duration-150 ease-out placeholder:text-muted-foreground","hover:border-control-border-hover focus:border-primary focus:shadow-focus","disabled:pointer-events-none disabled:cursor-not-allowed disabled:text-muted-foreground",e),...t})}function eK({className:e,...t}){return r.jsx(LV,{"data-slot":"combobox-list",className:Ne("min-h-0 flex-1 overflow-y-auto overscroll-contain p-[5px]",e),...t})}function tK({className:e,children:t,...n}){return r.jsxs(qV,{"data-slot":"combobox-item",className:Ne("flex min-h-7 cursor-pointer items-center gap-2 rounded-sm px-[9px] py-[5px] text-[12.5px] leading-[1.4] text-foreground select-none outline-none","max-[767px]:min-h-10 max-[767px]:text-sm transition-colors duration-[120ms] ease-out","data-[highlighted]:bg-nav-hover","data-[selected]:bg-primary-soft data-[selected]:font-semibold data-[selected]:text-primary-fg","data-[highlighted]:data-[selected]:bg-primary-tint","data-disabled:pointer-events-none data-disabled:font-normal data-disabled:text-muted-foreground",e),...n,children:[r.jsx("span",{className:"min-w-0 flex-1 truncate",children:t}),r.jsx(GV,{className:"flex flex-none text-primary",children:r.jsx("svg",{viewBox:"0 0 12 12",className:"size-3","aria-hidden":"true",children:r.jsx("path",{d:"M2.5 6.2 4.8 8.5 9.5 3.8",stroke:"currentColor",strokeWidth:"1.8",fill:"none",strokeLinecap:"round",strokeLinejoin:"round"})})})]})}function nK({className:e,children:t,...n}){return r.jsx(WV,{"data-slot":"combobox-empty",...n,children:r.jsx("div",{className:Ne("px-2.5 py-3 text-[11.5px] leading-[1.5] text-muted-foreground",e),children:t})})}const ywe={left:0,top:0,width:0,height:0,ready:!1};function rK(e,t){const n=p.useRef(null),[s,i]=p.useState(ywe),[o,l]=p.useState(!1),u=p.useRef(!1),d=p.useRef(null),f=p.useCallback(()=>{const g=n.current,v=g?.querySelector(t);if(!g||!v||!g.offsetWidth||!g.offsetHeight||!v.getClientRects().length){u.current=!1,l(!1),i(N=>N.ready?{...N,ready:!1}:N);return}const b=g.getBoundingClientRect(),y=v.getBoundingClientRect();if(!b.width||!b.height||!y.width||!y.height)return;const k=b.width/g.offsetWidth,w=b.height/g.offsetHeight,S={left:(y.left-b.left)/k-g.clientLeft+g.scrollLeft,top:(y.top-b.top)/w-g.clientTop+g.scrollTop,width:y.width/k,height:y.height/w,ready:!0};u.current=!0,i(N=>N.ready&&Math.abs(N.left-S.left)<.1&&Math.abs(N.top-S.top)<.1&&Math.abs(N.width-S.width)<.1&&Math.abs(N.height-S.height)<.1?N:S)},[t]),m=p.useCallback(()=>{if(!u.current){f();return}d.current===null&&(d.current=requestAnimationFrame(()=>{d.current=null,f()}))},[f]);return p.useLayoutEffect(()=>{m()}),p.useLayoutEffect(()=>{const g=n.current;if(!g)return;const v=typeof ResizeObserver>"u"?null:new ResizeObserver(m),b=()=>{v?.disconnect(),v?.observe(g),g.querySelectorAll(e).forEach(k=>v?.observe(k))};b();const y=new MutationObserver(k=>{const w=k.filter(S=>!(S.target instanceof Element&&S.target.hasAttribute("data-selection-indicator")));w.length&&(w.some(S=>S.type==="childList")&&b(),m())});return y.observe(g,{subtree:!0,childList:!0,characterData:!0,attributes:!0,attributeFilter:["data-active","data-checked","class","hidden","style"]}),window.addEventListener("resize",m),document.fonts?.addEventListener("loadingdone",m),()=>{v?.disconnect(),y.disconnect(),d.current!==null&&cancelAnimationFrame(d.current),d.current=null,window.removeEventListener("resize",m),document.fonts?.removeEventListener("loadingdone",m)}},[e,m]),p.useEffect(()=>{if(!s.ready||o)return;let g=0;const v=requestAnimationFrame(()=>{g=requestAnimationFrame(()=>{u.current&&l(!0)})});return()=>{cancelAnimationFrame(v),cancelAnimationFrame(g)}},[s.ready,o]),{containerRef:n,indicator:{"data-selection-indicator":"","data-ready":s.ready?"true":"false","data-animate":o?"true":"false",style:{transform:`translate3d(${s.left}px, ${s.top}px, 0)`,width:s.width,height:s.height}}}}function en({options:e,value:t,onValueChange:n,disabled:s=!1,className:i,...o}){const{containerRef:l,indicator:u}=rK('[data-slot="segmented-item"]','[data-slot="segmented-item"][data-checked]');return r.jsxs(XH,{ref:l,"data-slot":"segmented-control",className:Ne("relative inline-flex gap-0.5 rounded-md border border-hairline bg-control p-0.5 shadow-none",i),value:t,disabled:s,onValueChange:d=>n(d),...o,children:[r.jsx("span",{"aria-hidden":"true","data-slot":"segmented-thumb",...u}),e.map(d=>r.jsxs(GH,{value:d.value,"data-slot":"segmented-item",title:d.title,disabled:d.disabled,"data-zero":d.count===0?"true":void 0,className:Ne("group/seg relative z-[1] inline-flex h-6 items-center gap-[5px] rounded-sm border-0 bg-transparent px-2.5","text-xs font-normal whitespace-nowrap text-subtle select-none","transition-[background-color,color] duration-150 ease-out","hover:bg-nav-hover hover:text-foreground focus-visible:outline-none focus-visible:shadow-focus","data-checked:bg-transparent data-checked:text-foreground data-checked:hover:bg-transparent","data-disabled:cursor-not-allowed data-disabled:opacity-40","data-[zero=true]:data-unchecked:opacity-45"),children:[d.label,d.count!==void 0&&r.jsx("span",{className:Ne("min-w-4 rounded-pill bg-surface-3 px-[5px] text-center text-[10.5px] font-semibold tabular-nums text-muted-foreground","group-data-checked/seg:bg-surface-2 group-data-checked/seg:text-foreground"),children:d.count})]},d.value))]})}const jwe=p.createContext(void 0);function wwe(){return p.useContext(jwe)}const kwe=p.forwardRef(function(t,n){const{className:s,defaultPressed:i=!1,disabled:o=!1,form:l,onPressedChange:u,pressed:d,render:f,type:m,value:g,nativeButton:v=!0,style:b,...y}=t,k=Ws(g||void 0),w=wwe(),S=w?.value??[],N=(o||w?.disabled)??!1,[C,T]=Tl({controlled:w?k!==void 0&&S.indexOf(k)>-1:d,default:i,name:"Toggle",state:"pressed"}),{getButtonProps:P,buttonRef:O}=$i({disabled:N,native:v}),A={disabled:N,pressed:C},R=[O,n],M=[{"aria-pressed":C,onClick($){const D=!C,F=Nt(rs,$.nativeEvent);u?.(D,F),!F.isCanceled&&(k&&w?.setGroupValue?.(k,D,F),!F.isCanceled&&T(D))}},y,P],_=Kt("button",t,{enabled:!w,state:A,ref:R,props:M}),L=p.useMemo(()=>({disabled:N,focusableWhenDisabled:!1}),[N]);return w?r.jsx(VH,{tag:"button",render:f,className:s,style:b,metadata:L,state:A,refs:R,props:M}):_}),Swe=jh(["inline-flex shrink-0 cursor-pointer items-center justify-center gap-1.5 whitespace-nowrap border","font-medium transition-[background-color,border-color,color] duration-150 ease-out","outline-none select-none disabled:pointer-events-none disabled:opacity-45","[&_svg]:pointer-events-none [&_svg]:shrink-0","data-pressed:border-primary-bd data-pressed:bg-primary-soft data-pressed:font-semibold data-pressed:text-primary-fg","data-pressed:hover:bg-primary-tint"],{variants:{variant:{default:"border-transparent bg-transparent text-subtle hover:bg-nav-hover hover:text-foreground",outline:"border-control-border bg-control text-foreground shadow-1 hover:border-control-border-hover hover:bg-control-hover"},size:{default:"h-[30px] rounded-md px-3 text-[12.5px]",xs:"h-6 rounded-sm px-2 text-[11.5px]",sm:"h-[26px] rounded-sm px-2.5 text-[12px]",lg:"h-9 rounded-md px-4 text-[13px]"}},defaultVariants:{variant:"default",size:"default"}});function Nwe({className:e,variant:t,size:n,...s}){return r.jsx(kwe,{"data-slot":"toggle",className:Ne(Swe({variant:t,size:n}),e),...s})}const Cwe="、";function xc({value:e,onValueChange:t,options:n,placeholder:s="",emptyHint:i=Z("没有匹配的选项"),searchPlaceholder:o=Z("搜索…"),disabled:l=!1,className:u,id:d,title:f,...m}){const g=p.useMemo(()=>n.filter(b=>e.includes(b.value)),[n,e]),v=g.length?g.map(b=>b.label).join(Cwe):s;return r.jsxs(TV,{items:n,multiple:!0,value:g,onValueChange:b=>t(b.map(y=>y.value)),isItemEqualToValue:(b,y)=>b?.value===y?.value,disabled:l,children:[r.jsxs(DV,{"data-slot":"multi-select-trigger",id:d,title:f,"aria-label":m["aria-label"],className:Ne("inline-flex h-[30px] min-w-0 cursor-pointer items-center justify-between gap-1.5 rounded-md border border-control-border bg-control px-2.5","text-[12.5px] font-normal text-foreground","transition-colors duration-150 ease-out","hover:border-control-border-hover hover:bg-control-hover","focus-visible:border-primary focus-visible:shadow-focus focus-visible:outline-none","data-disabled:cursor-not-allowed data-disabled:bg-control data-disabled:text-muted-foreground data-disabled:opacity-60",u),children:[r.jsx("span",{"data-slot":"multi-select-value",className:"min-w-0 flex-1 truncate text-left data-[placeholder]:text-muted-foreground","data-placeholder":g.length?void 0:"",title:v,children:v}),r.jsx(UV,{className:"flex flex-none text-muted-foreground transition-transform duration-[180ms] data-popup-open:rotate-180",children:r.jsx("svg",{viewBox:"0 0 10 6",className:"size-2.5","aria-hidden":"true",children:r.jsx("path",{d:"M1 1l4 4 4-4",stroke:"currentColor",strokeWidth:"1.4",fill:"none",strokeLinecap:"round",strokeLinejoin:"round"})})})]}),r.jsx(zV,{children:r.jsx(BV,{sideOffset:4,className:"z-[35]",children:r.jsxs(FV,{"data-slot":"multi-select-content",className:Ne("flex max-h-[280px] w-[max(var(--anchor-width),220px)] flex-col overflow-hidden","rounded-lg border border-border-strong bg-raised shadow-3 outline-none","data-open:animate-in data-open:fade-in-0","data-closed:animate-out data-closed:fade-out-0"),children:[r.jsxs("div",{className:"flex flex-none items-center gap-1.5 border-b border-hairline px-2.5 py-1.5",children:[r.jsxs("svg",{viewBox:"0 0 12 12",className:"size-3 flex-none text-muted-foreground","aria-hidden":"true",children:[r.jsx("circle",{cx:"5",cy:"5",r:"3.4",stroke:"currentColor",strokeWidth:"1.3",fill:"none"}),r.jsx("path",{d:"M7.6 7.6 10.5 10.5",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round"})]}),r.jsx(_V,{placeholder:o,className:"min-w-0 flex-1 border-0 bg-transparent p-0 text-[12.5px] text-foreground outline-none placeholder:text-muted-foreground"})]}),r.jsx(WV,{children:r.jsx("div",{className:"px-2.5 py-3 text-[11.5px] leading-[1.5] text-muted-foreground",children:i})}),r.jsx(LV,{className:"min-h-0 flex-1 overflow-y-auto overscroll-contain p-[5px]",children:b=>r.jsxs(qV,{value:b,disabled:b.disabled===!0,className:Ne("grid cursor-pointer grid-cols-[14px_minmax(0,1fr)] items-center gap-2 rounded-sm px-[9px] py-[5px]","text-[12.5px] leading-[1.4] text-foreground select-none outline-none","transition-colors duration-[120ms] ease-out","data-[highlighted]:bg-nav-hover","data-[selected]:bg-primary-soft data-[selected]:font-semibold data-[selected]:text-primary-fg","data-[highlighted]:data-[selected]:bg-primary-tint","data-disabled:pointer-events-none data-disabled:text-muted-foreground"),children:[r.jsx(GV,{className:"col-start-1 flex text-primary",children:r.jsx("svg",{viewBox:"0 0 12 12",className:"size-3","aria-hidden":"true",children:r.jsx("path",{d:"M2.5 6.2 4.8 8.5 9.5 3.8",stroke:"currentColor",strokeWidth:"1.8",fill:"none",strokeLinecap:"round",strokeLinejoin:"round"})})}),r.jsx("span",{className:"col-start-2 min-w-0 truncate",children:b.label})]},b.value)})]})})})]})}const sK=p.createContext(void 0);function _h(e){const t=p.useContext(sK);if(t===void 0&&!e)throw new Error(Vn(47));return t}const Awe={...HR,disabled:e=>e.disabled,instantType:e=>e.instantType,openMethod:e=>e.openMethod,openChangeReason:e=>e.openChangeReason,modal:e=>e.modal,focusManagerModal:e=>e.focusManagerModal,stickIfOpen:e=>e.stickIfOpen,titleElementId:e=>e.titleElementId,descriptionElementId:e=>e.descriptionElementId,openOnHover:e=>e.openOnHover,closeDelay:e=>e.closeDelay,adaptiveOrigin:e=>e.adaptiveOrigin};class Ewe extends Ph{constructor(n,s,i){const o=new aS;super(Twe(n,o,s,i),Owe(o),Awe);Cn(this,"setOpen",(n,s)=>{const i=s.reason===Va,o=s.reason===xu&&s.event.detail===0,l=!n&&(s.reason===mg||s.reason==null),u=W6(s),d=this.select("activeTriggerId");if(!n&&s.reason===dR&&s.trigger==null&&d!=null&&(s.trigger=this.context.triggerElements.getById(d)??this.select("activeTriggerElement")??void 0),this.context.onOpenChange?.(n,s),s.isCanceled)return;this.state.floatingRootContext.dispatchOpenChange(n,s);const f=()=>{const g=DR(this.state,n,s.trigger,u());g.openChangeReason=s.reason,this.update(g)};i?(this.set("stickIfOpen",!0),this.context.stickIfOpenTimeout.start(xve,()=>{this.set("stickIfOpen",!1)}),xr.flushSync(f)):f();let m;o?m="click":l?m="dismiss":s.reason===Fd&&(m="focus"),this.set("instantType",m)})}}function Twe(e,t,n,s=!1){const i={...FR(t,n,s),disabled:!1,modal:!1,focusManagerModal:!1,instantType:void 0,openMethod:null,openChangeReason:null,titleElementId:void 0,descriptionElementId:void 0,stickIfOpen:!0,openOnHover:!1,closeDelay:0,adaptiveOrigin:void 0,...e};return i.open&&e?.mounted===void 0&&(i.mounted=!0),i}function Owe(e){return{popupRef:p.createRef(),onOpenChange:void 0,onOpenChangeComplete:void 0,triggerFocusTargetRef:p.createRef(),beforeContentFocusGuardRef:p.createRef(),stickIfOpenTimeout:new Bi,triggerElements:e}}const aK=Qk(function({props:t}){const{children:n,open:s,defaultOpen:i=!1,onOpenChange:o,onOpenChangeComplete:l,modal:u=!1,handle:d,triggerId:f,defaultTriggerId:m=null}=t,g=Pwe(d,{modal:u,open:i,openProp:s,activeTriggerId:m,triggerIdProp:f});g.useControlledProp("openProp",s),g.useControlledProp("triggerIdProp",f);const v=g.useState("open"),b=g.useState("mounted"),y=g.useState("payload");g.useContextCallback("onOpenChange",o),g.useContextCallback("onOpenChangeComplete",l),Y6(g,v),$R(g);const{forceUnmount:k}=zR(v,g,()=>{g.update({stickIfOpen:!0,openChangeReason:null})});g.useSyncedValues({modal:u}),p.useEffect(()=>{v||g.context.stickIfOpenTimeout.clear()},[g,v]),p.useImperativeHandle(t.actionsRef,()=>({unmount:k,close:()=>g.setOpen(!1,Nt(hR))}),[k,g]);const w=v||b;return r.jsxs(sK.Provider,{value:g,children:[d&&r.jsx(_R,{handle:d,store:g}),w&&r.jsx(Iwe,{store:g,modal:u}),typeof n=="function"?n({payload:y}):n]})});function Rwe(e){return _h(!0)?r.jsx(aK,{props:e}):r.jsx(Eve,{children:r.jsx(aK,{props:e})})}function Pwe(e,t){const n=MR((s,i)=>new Ewe(t,s,i));return p.useEffect(()=>n.context.stickIfOpenTimeout.disposeEffect(),[n]),n}function Iwe({store:e,modal:t}){const n=e.useState("floatingRootContext"),s=Fb(n,{outsidePressEvent:{mouse:t==="trap-focus"?"sloppy":"intentional",touch:"sloppy"}}),i=s.reference,o=s.floating;return BR(e,{activeTriggerProps:i,inactiveTriggerProps:i,popupProps:o}),null}const Mwe=300;function _we(e,t){const n=p.useRef(null);function s(o){xr.flushSync(()=>{e.setOpen(!1,Nt(Fd,o.nativeEvent,o.currentTarget))}),cxe(n.current)?.focus()}function i(o){const l=e.select("positionerElement");if(l&&dg(o,l))e.context.beforeContentFocusGuardRef.current?.focus();else{xr.flushSync(()=>{e.setOpen(!1,Nt(Fd,o.nativeEvent,o.currentTarget))});let u=lxe(e.context.triggerFocusTargetRef.current||t.current);for(;u!==null&&Et(l,u);){const d=u;if(u=iR(u),u===d)break}u?.focus()}}return{preFocusGuardRef:n,handlePreFocusGuardFocus:s,handleFocusTargetFocus:i}}const Dwe=bR(function(t,n){const{render:s,className:i,style:o,disabled:l=!1,nativeButton:u=!0,handle:d,payload:f,openOnHover:m=!1,delay:g=Mwe,closeDelay:v=0,id:b,...y}=t,k=_h(!0),S=VR(d)??k;if(!S)throw new Error(Vn(74));const N=Ws(b),C=S.useState("isTriggerActive",N),T=S.useState("floatingRootContext"),P=S.useState("isOpenedByTrigger",N),O=S.useState("triggerPopupId",N),A=p.useRef(null),{registerTrigger:R,isMountedByThisTrigger:M}=LR(N,A,S,{payload:f,disabled:l,openOnHover:m,closeDelay:v}),_=S.useState("openChangeReason"),L=S.useState("stickIfOpen"),$=S.useState("openMethod"),D=S.useState("focusManagerModal"),F=tH(T,{enabled:!l&&m&&($!=="touch"||_!==xu),mouseOnly:!0,move:!1,handleClose:iH(),restMs:g,delay:{close:v},triggerElementRef:A,isActiveTrigger:C,isClosing:()=>S.select("transitionStatus")==="ending"}),V=Bb(T,{stickIfOpen:L}),q=aP(()=>S.select("open"),se=>{S.set("openMethod",se)}),Q=S.useState("triggerProps",M),{getButtonProps:X,buttonRef:U}=$i({disabled:l,native:u}),z={open(se){return se&&_===xu?qO.open(se):Rk.open(se)}},{preFocusGuardRef:K,handlePreFocusGuardFocus:J,handleFocusTargetFocus:ee}=_we(S,A),G=Kt("button",t,{state:{disabled:l,open:P},ref:[U,n,R,A],props:[V.reference,F,Q,q,{[kR]:"",id:N,"aria-haspopup":"dialog","aria-expanded":P,"aria-controls":O},y,X],stateAttributesMapping:z}),Y=r.jsx(p.Fragment,{children:G},N);return M&&!D?r.jsxs(p.Fragment,{children:[r.jsx(Th,{ref:K,onFocus:J}),Y,r.jsx(Th,{ref:S.context.triggerFocusTargetRef,onFocus:ee})]}):Y}),iK=p.createContext(void 0);function Lwe(){const e=p.useContext(iK);if(e===void 0)throw new Error(Vn(45));return e}const $we=p.forwardRef(function(t,n){const{keepMounted:s=!1,...i}=t;return _h().useState("mounted")||s?r.jsx(iK.Provider,{value:s,children:r.jsx(eS,{ref:n,...i})}):null}),oK=p.createContext(void 0);function zwe(){const e=p.useContext(oK);if(!e)throw new Error(Vn(46));return e}const Bwe=p.forwardRef(function(t,n){const{render:s,className:i,style:o,anchor:l,positionMethod:u,side:d,align:f,sideOffset:m,alignOffset:g,collisionBoundary:v="clipping-ancestors",collisionPadding:b,arrowPadding:y,sticky:k,disableAnchorTracking:w=!1,collisionAvoidance:S=m6,...N}=t,C=_h(),T=Lwe(),P=Cve(),O=C.useState("floatingRootContext"),A=C.useState("mounted"),R=C.useState("open"),M=C.useState("openChangeReason"),_=C.useState("activeTriggerElement"),L=C.useState("modal"),$=C.useState("openMethod"),D=C.useState("positionerElement"),F=C.useState("instantType"),V=C.useState("transitionStatus"),q=C.useState("adaptiveOrigin"),Q=p.useRef(null),X=uR(D),U=hS({anchor:l,floatingRootContext:O,positionMethod:u,mounted:A,side:d,sideOffset:m,align:f,alignOffset:g,arrowPadding:y,collisionBoundary:v,collisionPadding:b,sticky:k,disableAnchorTracking:w,keepMounted:T,nodeId:P,collisionAvoidance:S,adaptiveOrigin:q}),z=O.useState("domReferenceElement");Ge(()=>{const G=z,Y=Q.current;if(G&&(Q.current=G),Y&&G&&G!==Y){C.set("instantType",void 0);const se=new AbortController;return X(()=>{C.set("instantType","trigger-change")},se.signal),()=>{se.abort()}}},[z,X,C]);const K=L===!0&&M!==Va;hP(R&&K,$==="touch",D,_);const J=C.useStateSetter("positionerElement"),ee={open:R,side:U.side,align:U.align,anchorHidden:U.anchorHidden,instant:F},H=mS(t,ee,{styles:U.positionerStyles,transitionStatus:V,props:N,refs:[n,J],hidden:!A,inert:!R});return r.jsxs(oK.Provider,{value:U,children:[A&&K&&r.jsx(vS,{inert:qb(!R),cutout:_}),r.jsx(Ave,{id:P,children:H})]})}),Fwe=p.createContext(void 0);function Uwe(){const[e,t]=p.useState(0),n=qe(()=>(t(i=>i+1),()=>{t(i=>Math.max(0,i-1))}));return{context:p.useMemo(()=>({register:n}),[n]),hasClosePart:e>0}}const Hwe=p.forwardRef(function(t,n){const{render:s,className:i,style:o,initialFocus:l,finalFocus:u,...d}=t,f=_h(),m=zwe(),g=fV()!=null,{context:v,hasClosePart:b}=Uwe(),y=f.useState("open"),k=f.useState("openMethod"),w=f.useState("instantType"),S=f.useState("transitionStatus"),N=f.useState("popupProps"),C=f.useState("titleElementId"),T=f.useState("descriptionElementId"),P=f.useState("modal"),O=f.useState("mounted"),A=f.useState("openChangeReason"),R=f.useState("activeTriggerElement"),M=f.useState("floatingRootContext"),_=M.useState("floatingId"),L=f.useState("disabled"),$=f.useState("openOnHover"),D=f.useState("closeDelay");ji({open:y,ref:f.context.popupRef,onComplete(){y&&f.context.onOpenChangeComplete?.(!0)}}),eH(M,{enabled:$&&!L,closeDelay:D});const F=l===void 0?q6(f.context.popupRef):l,V=P!==!1&&b;f.useSyncedValue("focusManagerModal",V);const q=f.useStateSetter("popupElement"),Q={open:y,side:m.side,align:m.align,instant:w,transitionStatus:S},X=Kt("div",t,{state:Q,ref:[n,f.context.popupRef,q],props:[N,{id:_,role:"dialog",...Ub,"aria-labelledby":C,"aria-describedby":T,onKeyDown(U){g&&gS.has(U.key)&&U.stopPropagation()}},Kb(S),d],stateAttributesMapping:GO});return r.jsx(tS,{context:M,openInteractionType:k,modal:V,disabled:!O||A===Va,initialFocus:F,returnFocus:u,restoreFocus:"popup",previousFocusableElement:br(R)?R:void 0,nextFocusableElement:f.context.triggerFocusTargetRef,beforeContentFocusGuardRef:f.context.beforeContentFocusGuardRef,children:r.jsx(Fwe.Provider,{value:v,children:X})})}),Vwe=p.forwardRef(function(t,n){const{render:s,className:i,style:o,...l}=t,u=_h(),d=Ws(l.id);return u.useSyncedValueWithCleanup("titleElementId",d),Kt("h2",t,{ref:n,props:[{id:d},l]})}),Kwe=p.forwardRef(function(t,n){const{render:s,className:i,style:o,...l}=t,u=_h(),d=Ws(l.id);return u.useSyncedValueWithCleanup("descriptionElementId",d),Kt("p",t,{ref:n,props:[{id:d},l]})});function ui(e){return r.jsx(Rwe,{"data-slot":"popover",...e})}function wi(e){return r.jsx(Dwe,{"data-slot":"popover-trigger",...e})}function di({className:e,sideOffset:t=6,align:n="start",side:s,alignOffset:i,collisionPadding:o=8,anchor:l,children:u,...d}){return r.jsx($we,{children:r.jsx(Bwe,{className:"z-[35] outline-none",sideOffset:t,align:n,side:s,alignOffset:i,collisionPadding:o,anchor:l,children:r.jsx(Hwe,{"data-slot":"popover-content",className:Ne("flex max-h-[min(70vh,560px)] flex-col overflow-hidden rounded-lg border border-border-strong bg-raised text-foreground shadow-3","outline-none","data-open:animate-in data-open:fade-in-0 data-open:slide-in-from-top-1","data-closed:animate-out data-closed:fade-out-0",e),...d,children:u})})})}function qwe({className:e,...t}){return r.jsx("div",{"data-slot":"popover-header",className:Ne("flex items-center gap-2 border-b border-hairline px-3 py-2",e),...t})}function lK({className:e,...t}){return r.jsx(Vwe,{"data-slot":"popover-title",className:Ne("text-[12.5px] font-semibold text-foreground",e),...t})}function Gwe({className:e,...t}){return r.jsx(Kwe,{"data-slot":"popover-description",className:Ne("text-[11.5px] leading-[1.55] text-muted-foreground",e),...t})}function xP({page:e,pageCount:t,onPageChange:n,disabled:s=!1,className:i,infoFirst:o=!1}){const l=Math.max(1,Number(t)||1),u=Math.min(Math.max(1,Number(e)||1),l),d=r.jsx("span",{"data-slot":"pager-info",className:"text-[11.5px] text-subtle [font-variant-numeric:tabular-nums]",children:Z("第 {current} / {total} 页",{current:u,total:l})});return r.jsxs("div",{"data-slot":"pager",className:Ne("flex items-center gap-2",i),children:[o&&d,r.jsx(B,{type:"button",variant:"outline",size:"sm",disabled:s||u<=1,onClick:()=>n(u-1),children:Z("上一页")}),r.jsx(B,{type:"button",variant:"outline",size:"sm",disabled:s||u>=l,onClick:()=>n(u+1),children:Z("下一页")}),!o&&d]})}const cK=p.createContext(!1);function Go({className:e,render:t,children:n,...s}){const{containerRef:i,indicator:o}=rK('[data-slot="nav-item"]','[data-slot="nav-item"][data-active]'),l=Ah({defaultTagName:"div",render:t,ref:i,props:{...s,"data-slot":"nav-list",className:Ne("relative isolate flex min-h-0 flex-col gap-0.5",e),children:r.jsxs(r.Fragment,{children:[r.jsx("span",{"data-slot":"nav-list-indicator","aria-hidden":"true",...o}),n]})}});return r.jsx(cK.Provider,{value:!0,children:l})}const Wwe=jh(["relative flex h-auto w-full items-center justify-start gap-2.5 whitespace-normal text-left active:translate-y-0","border border-transparent rounded-md","shadow-none","transition-[background-color,border-color,color] duration-150 ease-out","outline-none focus-visible:shadow-focus","disabled:pointer-events-none disabled:opacity-45","[&_svg]:pointer-events-none [&_svg]:shrink-0"],{variants:{variant:{default:["cursor-pointer px-2.5 py-2","text-[12.5px] font-medium text-sidebar-fg","hover:bg-nav-hover hover:text-foreground","data-[active]:border-nav-selected-border data-[active]:bg-nav-selected-bg data-[active]:font-medium data-[active]:text-nav-selected-fg"],add:["cursor-pointer justify-center px-2 py-1.5","border-dashed border-border-strong bg-transparent","text-[11.5px] text-muted-foreground","hover:border-primary hover:text-primary-fg"]}},defaultVariants:{variant:"default"}});function Ts({className:e,variant:t,active:n=!1,count:s,icon:i,trailing:o,children:l,...u}){const d=p.useContext(cK);return r.jsxs(B,{type:"button",variant:"ghost","data-slot":"nav-item","data-active":n?"":void 0,"data-sliding":d?"":void 0,"aria-current":n?"true":void 0,className:Ne(Wwe({variant:t}),d&&"data-[active]:border-transparent data-[active]:bg-transparent data-[active]:hover:bg-transparent",e),...u,children:[i,r.jsx("span",{"data-slot":"nav-item-label",className:"min-w-0 flex-1 truncate",children:l}),o,s!=null&&r.jsx("span",{"data-slot":"nav-item-count",className:Ne("flex-none text-[10.5px] text-sidebar-muted [font-variant-numeric:tabular-nums]",n&&"text-inherit"),children:s})]})}function Qb(e){return r.jsx(PH,{"data-slot":"sheet",...e})}function Ywe(e){return r.jsx(MH,{"data-slot":"sheet-trigger",...e})}function uK(e){return r.jsx(Gb,{"data-slot":"sheet-close",...e})}function Xwe(e){return r.jsx(rP,{"data-slot":"sheet-portal",...e})}const IS=e=>r.jsx(sP,{"data-slot":"sheet-title",...e}),Qwe=e=>r.jsx(yH,{"data-slot":"sheet-description",...e});function Zwe({className:e,...t}){return r.jsx(YR,{"data-slot":"sheet-overlay",className:Ne("fixed inset-0 isolate z-30 bg-mask backdrop-blur-[3px]","transition-opacity duration-200","data-open:animate-in data-open:fade-in-0","data-closed:animate-out data-closed:fade-out-0 data-closed:fill-mode-forwards",e),...t})}function Zb({className:e,children:t,showCloseButton:n=!0,showHandle:s=!0,side:i="bottom",keepMounted:o=!1,...l}){const u=i==="center",d=i==="right",f=i==="left";return r.jsxs(Xwe,{keepMounted:o,children:[r.jsx(Zwe,{}),r.jsxs(nP,{"data-slot":"sheet-content",className:Ne("fixed z-30 flex flex-col overflow-hidden border border-border bg-surface shadow-3 outline-none","transition-[opacity,transform] duration-200 [transition-timing-function:cubic-bezier(.32,.9,.3,1)]",u?["top-1/2 left-1/2 max-h-[calc(100vh-48px)] w-[min(560px,calc(100vw-48px))]","-translate-x-1/2 -translate-y-1/2 rounded-lg","data-open:animate-in data-open:fade-in-0 data-open:zoom-in-[.985]","data-closed:animate-out data-closed:fade-out-0 data-closed:fill-mode-forwards"]:d?["top-0 right-0 bottom-0 h-full w-[min(340px,86vw)] rounded-l-xl","data-open:animate-in data-open:slide-in-from-right data-open:fade-in-0","data-closed:animate-out data-closed:slide-out-to-right data-closed:fade-out-0 data-closed:fill-mode-forwards"]:f?["top-0 left-0 bottom-0 h-full w-[min(340px,86vw)] rounded-r-xl","data-open:animate-in data-open:slide-in-from-left data-open:fade-in-0","data-closed:animate-out data-closed:slide-out-to-left data-closed:fade-out-0 data-closed:fill-mode-forwards"]:["inset-x-0 bottom-0 max-h-[85svh] rounded-t-xl","data-open:animate-in data-open:slide-in-from-bottom data-open:fade-in-0","data-closed:animate-out data-closed:slide-out-to-bottom data-closed:fade-out-0 data-closed:fill-mode-forwards"],e),...l,children:[s&&!u&&!d&&!f&&r.jsx("div",{"aria-hidden":"true",className:"mx-auto mt-2 mb-1 h-1 w-9.5 shrink-0 rounded-pill bg-border-strong"}),t,n&&r.jsxs(Gb,{"data-slot":"sheet-close",render:r.jsx(B,{variant:"ghost",size:"icon-sm",className:"absolute top-3 right-3"}),children:[r.jsx("svg",{viewBox:"0 0 12 12",className:"size-3","aria-hidden":"true",children:r.jsx("path",{d:"M2.5 2.5l7 7M9.5 2.5l-7 7",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",fill:"none"})}),r.jsx("span",{className:"sr-only",children:Z("关闭")})]})]})]})}function MS({className:e,...t}){return r.jsx("div",{"data-slot":"sheet-header",className:Ne("flex shrink-0 items-center gap-2.5 border-b border-hairline px-5 py-3 pr-10","[&_h2]:flex-1 [&_h2]:text-[15px] [&_h2]:font-semibold",e),...t})}function _S({className:e,...t}){return r.jsx("div",{"data-slot":"sheet-body",className:Ne("flex min-h-0 flex-1 flex-col gap-3.5 overflow-y-auto px-5 py-4",e),...t})}function vP({className:e,...t}){return r.jsx("div",{"data-slot":"sheet-footer",className:Ne("flex shrink-0 items-center gap-2 border-t border-hairline bg-surface-2 px-5 py-3 pb-[max(12px,env(safe-area-inset-bottom))]",e),...t})}function bP(e){const t=p.useMemo(()=>typeof window>"u"?null:window.matchMedia(e),[e]);return p.useSyncExternalStore(p.useCallback(n=>(t?.addEventListener("change",n),()=>t?.removeEventListener("change",n)),[t]),()=>t?.matches??!1,()=>!1)}function DS({open:e,onOpenChange:t,title:n,actions:s,children:i,breakpoint:o=767,side:l="right",inlineClassName:u,inlineAs:d="div",contentClassName:f,bodyClassName:m}){const g=bP(`(max-width: ${o}px)`);return p.useEffect(()=>{!g&&e&&t(!1)},[g,e,t]),p.useEffect(()=>{const v=()=>t(!1);return window.addEventListener("wb:navigation-close",v),()=>window.removeEventListener("wb:navigation-close",v)},[t]),g?r.jsx(Qb,{open:e,onOpenChange:t,children:r.jsxs(Zb,{side:l,keepMounted:!0,showHandle:!1,className:f,children:[r.jsxs(MS,{children:[r.jsx(IS,{children:n}),s]}),r.jsx(_S,{className:Ne("gap-4 [&>*]:w-full [&>*]:min-w-0 [&>*]:max-w-none",m),children:i})]})}):r.jsx(d,{"data-slot":"responsive-sheet-inline",className:u,children:i})}function Jwe(e){const{open:t,defaultOpen:n=!1,onOpenChange:s,disabled:i}=e,[o,l]=Tl({controlled:t,default:n,name:"Collapsible",state:"open"}),{mounted:u,setMounted:d,transitionStatus:f}=gu(o,!0,!0),m=Ws(),[g,v]=p.useState(),b=g===null?void 0:g??m,y=qe(k=>{const w=!o,S=Nt(xu,k.nativeEvent);s(w,S),!S.isCanceled&&l(w)});return p.useMemo(()=>({defaultPanelId:m,disabled:i,handleTrigger:y,mounted:u,open:o,panelId:b,setMounted:d,setOpen:l,setPanelIdState:v,transitionStatus:f}),[m,i,y,u,o,b,d,l,v,f])}const dK=p.createContext(void 0);function fK(){const e=p.useContext(dK);if(e===void 0)throw new Error(Vn(15));return e}const e0e="data-open",t0e="data-closed",n0e=KO,r0e="data-panel-open",s0e={[e0e]:""},a0e={[t0e]:""},i0e={open(e){return e?{[r0e]:""}:null}},hK={...{open(e){return e?s0e:a0e}},...Fo},o0e=p.forwardRef(function(t,n){const{render:s,className:i,defaultOpen:o=!1,disabled:l=!1,onOpenChange:u,open:d,style:f,...m}=t,g=qe(u),v=Jwe({open:d,defaultOpen:o,onOpenChange:g,disabled:l}),b=p.useMemo(()=>({open:v.open,disabled:v.disabled,transitionStatus:v.transitionStatus}),[v.open,v.disabled,v.transitionStatus]),y=p.useMemo(()=>({...v,onOpenChange:g,state:b}),[v,g,b]),k=Kt("div",t,{state:b,ref:n,props:m,stateAttributesMapping:hK});return r.jsx(dK.Provider,{value:y,children:k})}),l0e={...i0e,...Fo},c0e=p.forwardRef(function(t,n){const{panelId:s,open:i,handleTrigger:o,state:l,disabled:u}=fK(),{className:d,disabled:f=u,render:m,nativeButton:g=!0,style:v,...b}=t,{getButtonProps:y,buttonRef:k}=$i({disabled:f,focusableWhenDisabled:!0,native:g});return Kt("button",t,{state:l,ref:[n,k],props:[{"aria-controls":i?s:void 0,"aria-expanded":i,onClick:o},b,y],stateAttributesMapping:l0e})}),Jb={height:void 0,width:void 0};function u0e(e){const{externalRef:t,hiddenUntilFound:n,id:s,keepMounted:i,mounted:o,onOpenChange:l,open:u,setMounted:d,setOpen:f,transitionStatus:m}=e,g=p.useRef(null),v=p.useRef(null),[b,y]=p.useState(Jb),k=p.useRef(Jb),w=p.useRef(!1),S=p.useRef(u),N=p.useRef(!1),[C,T]=p.useState(!1),P=p.useRef(null),O=lo(t,g),A=ss(u),R=uR(g),M=!u&&!o,_=C?"idle":m,L=u&&(S.current||N.current),$=!u&&o&&v.current==="css-animation"&&b.height===void 0&&b.width===void 0?k.current:b,D=n&&M&&v.current!=="css-animation",F=qe((U,z=!0)=>{z&&(k.current=U),y(U)}),V=qe(()=>{P.current?.(),P.current=null}),q=qe(U=>{V(),P.current=()=>{P.current=null,U()}}),Q=qe(()=>{u&&o&&v.current==="css-animation"&&(N.current=!0)});Ge(()=>{!C||m==="starting"||T(!1)},[C,m]),p.useEffect(()=>()=>{Q(),V()},[Q,V]),Ge(()=>{const U=g.current;if(!U)return;!u&&P.current&&V();const z=d0e(U,L);if(v.current=z,u&&m==="idle"&&S.current&&z==="css-animation"){k.current=jg(U);return}if(u&&m==="starting"){const ee=w.current;if(w.current=!1,z==="none"){F(jg(U)),T(!0);return}if(z==="css-transition"){const Y=f0e(U);if(F(jg(U)),!ee)return Y;const se=LS(U,"transition-duration","0s");return q(se),T(!0),Y}F(jg(U));const H=LS(U,"animation-name","none");if(!ee){H();return}const G=LS(U,"animation-duration","0s");H(),q(G),T(!0);return}if(!u&&o&&(m==="idle"||m==="starting")){if(S.current=!1,N.current=!1,z==="none"){F(Jb,!1),d(!1);return}F(jg(U));return}if(m!=="ending")return;if(z==="none"){d(!1);return}const K=jg(U);if(!(K.height>0||K.width>0)){d(!1);return}F(K),z==="css-animation"&&LS(U,"animation-name","none")()},[o,u,V,F,d,q,L,m]),ji({enabled:u&&o&&_==="idle",open:!0,ref:g,onComplete(){u&&F(Jb,!1)}}),p.useEffect(()=>{if(u||!o||_!=="ending"||!g.current)return;const z=new AbortController;let K=-1;function J(){A.current||(d(!1),F(Jb,!1))}return K=Fi.request(()=>{R(J,z.signal)}),()=>{Fi.cancel(K),z.abort()}},[A,o,u,_,R,F,d]),Ge(()=>{const U=g.current;!U||!n||!M||U.setAttribute("hidden","until-found")},[M,n]),p.useEffect(function(){const z=g.current;if(!z)return;function K(J){const ee=Nt(rs,J);l(!0,ee),!ee.isCanceled&&(w.current=!0,f(!0))}return kn(z,"beforematch",K)},[l,f]);const X=i||n||o||u;return{height:$.height,props:{...D?{[n0e]:""}:void 0,hidden:M,id:s},ref:O,shouldPreventOpenAnimation:L,shouldRender:X,transitionStatus:_,width:$.width}}function jg(e){return{height:e.scrollHeight,width:e.scrollWidth}}function d0e(e,t){const n=vr(e).getComputedStyle(e),s=(n.animationName.split(",").map(o=>o.trim()).some(o=>o!==""&&o!=="none")||t)&&mK(n.animationDuration),i=mK(n.transitionDuration);return s&&i||i?"css-transition":s?"css-animation":"none"}function mK(e){return e.split(",").map(t=>t.trim()).some(t=>t!==""&&Number.parseFloat(t)>0)}function LS(e,t,n){const s=e.style.getPropertyValue(t),i=e.style.getPropertyPriority(t);return e.style.setProperty(t,n),()=>{if(s===""){e.style.removeProperty(t);return}e.style.setProperty(t,s,i)}}function f0e(e){const t={"justify-content":e.style.justifyContent,"align-items":e.style.alignItems,"align-content":e.style.alignContent,"justify-items":e.style.justifyItems};Object.keys(t).forEach(i=>{e.style.setProperty(i,"initial","important")});function n(){Object.entries(t).forEach(([i,o])=>{if(o===""){e.style.removeProperty(i);return}e.style.setProperty(i,o)})}const s=Fi.request(n);return()=>{Fi.cancel(s),n()}}const h0e="--collapsible-panel-height",m0e="--collapsible-panel-width",p0e=p.forwardRef(function(t,n){const{className:s,hiddenUntilFound:i,keepMounted:o,render:l,id:u,style:d,...f}=t,{defaultPanelId:m,mounted:g,onOpenChange:v,open:b,setMounted:y,setPanelIdState:k,setOpen:w,state:S,transitionStatus:N}=fK(),C=i??!1,T=o??!1,P=u||void 0,O=P??m;Ge(()=>(k(Q=>P??(Q===null?void 0:Q)),()=>{k(Q=>Q===P?null:Q)}),[P,k]);const{height:A,props:R,ref:M,shouldPreventOpenAnimation:_,shouldRender:L,transitionStatus:$,width:D}=u0e({externalRef:n,hiddenUntilFound:C,id:O,keepMounted:T,mounted:g,onOpenChange:v,open:b,setMounted:y,setOpen:w,transitionStatus:N}),F={...S,transitionStatus:$},V=zF(d,F),q=Kt("div",{...t,style:void 0},{state:F,ref:M,props:[R,{style:{[h0e]:A===void 0?"auto":`${A}px`,[m0e]:D===void 0?"auto":`${D}px`}},f,V?{style:V}:void 0,_?{style:{animationName:"none"}}:void 0],stateAttributesMapping:hK});return L?q:null});function gs(e){return r.jsx(o0e,{"data-slot":"collapsible",...e})}function xs({className:e,render:t,...n}){return r.jsx(c0e,{"data-slot":"collapsible-trigger",render:t??r.jsx(B,{variant:"ghost"}),className:e,...n})}function vs({className:e,...t}){return r.jsx(p0e,{"data-slot":"collapsible-content",className:Ne("min-w-0",typeof e=="string"&&e),...t})}function Fe({className:e,variant:t="default",...n}){return r.jsx("div",{"data-slot":"alert",role:"alert",className:Ne("rounded-md border px-3 py-2.5 text-[12.5px] leading-relaxed",t==="default"&&"border-border bg-surface-2 text-subtle",t==="destructive"&&"border-destructive-bd bg-destructive-soft text-destructive",t==="warning"&&"border-warning-bd bg-warning-soft text-warning",t==="success"&&"border-success-bd bg-success-soft text-success",e),...n})}function wg({className:e,...t}){return r.jsx("div",{"data-slot":"alert-title",className:Ne("font-semibold",e),...t})}function ho({className:e,...t}){return r.jsx("div",{"data-slot":"alert-description",className:Ne("text-[12px] leading-relaxed",e),...t})}function pt({className:e,...t}){return r.jsx("div",{"data-slot":"empty",className:Ne("flex flex-col items-center justify-center gap-2 px-4 py-8 text-center text-[12.5px] leading-relaxed text-muted-foreground",e),...t})}function yP({className:e,...t}){return r.jsx("div",{"data-slot":"empty-title",className:Ne("text-[13px] font-semibold text-foreground",e),...t})}function jP({className:e,...t}){return r.jsx("div",{"data-slot":"empty-description",className:Ne("text-[12px] leading-relaxed text-muted-foreground",e),...t})}function Ka({className:e,variant:t="success",pulse:n,...s}){return r.jsx("span",{"data-slot":"status-dot","aria-hidden":"true",className:Ne("inline-block size-[7px] shrink-0 rounded-full",t==="success"&&"bg-success",t==="warning"&&"bg-warning",t==="destructive"&&"bg-destructive",t==="muted"&&"bg-muted-foreground",n&&"animate-pulse motion-reduce:animate-none",e),...s})}const g0e=new Set(["a","article","b","blockquote","br","code","del","div","em","h1","h2","h3","h4","h5","h6","hr","i","img","kbd","li","ol","p","pre","s","section","small","span","strong","sub","sup","ul","col","colgroup"]),pK={button:B,input:ze,label:Ae,textarea:Xs,table:ps,thead:Qs,tbody:Es,tfoot:Bye,tr:Jt,th:tt,td:Ve,caption:Fye},x0e=new Set(["text-align","white-space","word-break","overflow-wrap","font-weight","font-style","font-size","line-height","color","background-color","width","max-width","min-width","height","padding","margin","display","gap","flex","grid-column"]);function gK(e,t=!1){if(t&&/^data:image\/(?:png|jpe?g|gif|webp|avif);base64,/i.test(e)||/^(?:https?:\/\/|\/[^/]|\.\.?\/|#)/i.test(e))return e}function v0e(e){const t={};for(const n of e.attributes)n.name==="class"?t.className=n.value:n.name==="colspan"?t.colSpan=Number(n.value)||1:n.name==="rowspan"?t.rowSpan=Number(n.value)||1:n.name==="target"&&["_blank","_self"].includes(n.value)?t.target=n.value:n.name==="loading"&&["lazy","eager"].includes(n.value)?t.loading=n.value:["title","id","role","alt","scope","type","placeholder"].includes(n.name)||/^(aria-|data-)/.test(n.name)?t[n.name]=n.value:n.name==="href"?t.href=gK(n.value):n.name==="src"&&(t.src=gK(n.value,!0));if(e.tagName==="A"&&(t.rel="noopener noreferrer"),e instanceof HTMLElement){const n={};for(const s of e.style){if(!x0e.has(s))continue;const i=e.style.getPropertyValue(s);/url\(|expression\(/i.test(i)||(n[s.replace(/-([a-z])/g,(o,l)=>l.toUpperCase())]=i)}Object.keys(n).length&&(t.style=n)}return t}function $S(e,t=""){return Array.from(e).map((n,s)=>{const i=`${t}${s}`;if(n.nodeType===Node.TEXT_NODE)return n.textContent;if(!(n instanceof Element))return null;const o=n.tagName.toLowerCase();if(["script","style","iframe","object","embed"].includes(o))return null;const l=v0e(n),u=$S(n.childNodes,`${i}-`);if(o==="details"){const d=Array.from(n.children).find(f=>f.tagName==="SUMMARY");return r.jsxs(gs,{defaultOpen:n.hasAttribute("open"),...l,children:[r.jsxs(xs,{className:Ne("h-auto w-full justify-start whitespace-normal px-0 text-left",d?.className),children:[r.jsx("span",{className:"shrink-0 transition-transform in-data-panel-open:rotate-90","aria-hidden":"true",children:"▸"}),d?$S(d.childNodes,`${i}-summary-`):"…"]}),r.jsx(vs,{keepMounted:!0,children:$S(Array.from(n.childNodes).filter(f=>f!==d),`${i}-body-`)})]},i)}if(o==="span"&&n.classList.contains("badge")){const d=n.classList.contains("ok")||n.classList.contains("phase-streaming")?"success":n.classList.contains("bad")?"destructive":n.classList.contains("warn")?"warning":n.classList.contains("brand")?"brand":"outline";return r.jsx(Ee,{variant:d,shape:n.classList.contains("tag")?"tag":"pill",...l,children:u},i)}return o==="span"&&n.classList.contains("req-live-dot")?r.jsx(Ka,{pulse:!0,className:"size-[5px] bg-current"},i):o==="div"&&n.classList.contains("empty")?r.jsx(pt,{...l,children:u},i):o==="input"&&n.getAttribute("type")==="checkbox"?r.jsx(jr,{checked:n.hasAttribute("checked"),readOnly:!0},i):o==="table"?r.jsx(ps,{container:!1,...l,children:u},i):pK[o]?p.createElement(pK[o],{key:i,...l},o==="input"?void 0:u):g0e.has(o)?["br","hr","img","col"].includes(o)?p.createElement(o,{key:i,...l}):p.createElement(o,{key:i,...l},u):r.jsx(p.Fragment,{children:u},i)})}function Wo({html:e,className:t,render:n,...s}){const i=p.useMemo(()=>{if(!e)return[];const o=new DOMParser().parseFromString(e,"text/html");return $S(o.body.childNodes)},[e]);return Ah({defaultTagName:"div",render:n,props:{...s,"data-slot":"html-content",className:Ne(t),children:i}})}const xK=p.createContext(void 0);function b0e(){const e=p.useContext(xK);if(e===void 0)throw new Error(Vn(38));return e}const y0e=p.forwardRef(function(t,n){const{format:s,getAriaValueText:i,locale:o,max:l=100,min:u=0,value:d,render:f,className:m,children:g,style:v,...b}=t,[y,k]=p.useState(),w=e6(d,u,l),S=bu(Number.isNaN(w)?0:w,0,100),N=bu(Number.isNaN(d)?u:d,u,l),C=s?Xk(N,o,s):Xk(S/100,o,{style:"percent"});let T=C;i&&(T=i(C,d));const P={"aria-labelledby":y,"aria-valuemax":l,"aria-valuemin":u,"aria-valuenow":N,"aria-valuetext":T,role:"meter",children:r.jsxs(p.Fragment,{children:[g,r.jsx("span",{role:"presentation",style:vu,children:"x"})]})},O=p.useMemo(()=>({formattedValue:C,percentageValue:S,setLabelId:k,value:d}),[C,S,k,d]),A=Kt("div",t,{ref:n,props:[P,b]});return r.jsx(xK.Provider,{value:O,children:A})}),j0e=p.forwardRef(function(t,n){const{render:s,className:i,style:o,...l}=t;return Kt("div",t,{ref:n,props:l})}),w0e=p.forwardRef(function(t,n){const{render:s,className:i,style:o,...l}=t,{percentageValue:u}=b0e();return Kt("div",t,{ref:n,props:[{style:{insetInlineStart:0,height:"inherit",width:`${u}%`}},l]})});function kg({value:e,variant:t="default",className:n,trackClassName:s,indicatorClassName:i,...o}){const l=Ne("block h-1 w-full overflow-hidden rounded-pill bg-hairline",s);return e===null?r.jsx("span",{"data-slot":"meter","aria-hidden":"true",className:Ne("block w-full",n),children:r.jsx("span",{"data-slot":"meter-track",className:l})}):r.jsx(y0e,{render:r.jsx("span",{}),value:e,"data-slot":"meter",className:Ne("block w-full",n),...o,children:r.jsx(j0e,{render:r.jsx("span",{}),"data-slot":"meter-track",className:l,children:r.jsx(w0e,{render:r.jsx("span",{}),"data-slot":"meter-indicator",className:Ne("block h-full rounded-[inherit] transition-[width] duration-300 motion-reduce:transition-none",t==="default"&&"bg-primary",t==="success"&&"bg-success",t==="warning"&&"bg-warning",t==="destructive"&&"bg-destructive",t==="muted"&&"bg-muted-foreground",i)})})})}function et({className:e,size:t="default",render:n,...s}){return Ah({defaultTagName:"div",render:n,props:{...s,"data-slot":"card","data-size":t,className:Ne("group/card min-w-0 overflow-hidden rounded-lg border border-border bg-surface text-foreground shadow-1",e)}})}function pn({className:e,...t}){return r.jsx("div",{"data-slot":"card-header",className:Ne("flex flex-wrap items-center gap-2.5 border-b border-border px-4 py-3 group-data-[size=sm]/card:px-3 group-data-[size=sm]/card:py-2",e),...t})}function Fs({className:e,...t}){return r.jsx("h3",{"data-slot":"card-title",className:Ne("m-0 text-[14px] font-semibold leading-snug",e),...t})}function k0e({className:e,...t}){return r.jsx("p",{"data-slot":"card-description",className:Ne("m-0 text-[12px] leading-relaxed text-subtle",e),...t})}function vK({className:e,...t}){return r.jsx("div",{"data-slot":"card-action",className:Ne("ml-auto flex shrink-0 flex-wrap items-center gap-2",e),...t})}function Gt({className:e,...t}){return r.jsx("div",{"data-slot":"card-content",className:Ne("min-w-0 p-4 group-data-[size=sm]/card:p-3",e),...t})}function ju({className:e,...t}){return r.jsx("div",{"data-slot":"card-footer",className:Ne("flex flex-wrap items-center gap-2 border-t border-border px-4 py-2.5 text-[11.5px] leading-relaxed text-muted-foreground",e),...t})}function wP({className:e,...t}){return r.jsx(et,{"data-slot":"metric-card",className:Ne("rounded-md bg-surface-inset px-3.5 py-3",e),...t})}function bK({className:e,...t}){return r.jsx("div",{"data-slot":"metric-label",className:Ne("mb-1 text-[11.5px] text-muted-foreground",e),...t})}function yK({className:e,...t}){return r.jsx("div",{"data-slot":"metric-value",className:Ne("break-all text-[13px] font-semibold leading-normal tabular-nums",e),...t})}function jK({className:e,...t}){return r.jsx("div",{"data-slot":"metric-grid",className:Ne("grid grid-cols-[repeat(auto-fit,minmax(min(178px,100%),1fr))] gap-2.5",e),...t})}function qa(e,t={}){return new Promise(n=>{const s=document.createElement("div");document.body.append(s);const i=zn.createRoot(s),o=p.createRef();let l=!1;const u=d=>{l||(l=!0,queueMicrotask(()=>{i.unmount(),s.remove()}),n(d))};i.render(r.jsx(LH,{open:!0,onOpenChange:d=>{d||u(!1)},children:r.jsxs(zH,{initialFocus:o,children:[r.jsx(BH,{children:r.jsx($H,{children:t.title||Z("请确认")})}),r.jsx(FH,{children:r.jsx("div",{className:"whitespace-pre-wrap text-[13px] leading-relaxed",children:e})}),r.jsxs(UH,{children:[r.jsx(B,{ref:o,variant:"outline",onClick:()=>u(!1),children:Z("取消")}),r.jsx(B,{variant:t.destructive===!1?"default":"destructive",onClick:()=>u(!0),children:t.confirmText||Z("确定")})]})]})}))})}function Dh({className:e,render:t,variant:n="default",size:s="default",...i}){return Ah({defaultTagName:"div",render:t,props:{...i,"data-slot":"item","data-size":s,className:Ne("flex w-full min-w-0 items-center gap-2.5 rounded-md text-left text-foreground transition-colors",s==="sm"?"px-3 py-2 text-[12.5px]":"px-3.5 py-3 text-[13px]",n==="outline"&&"border border-border",n==="muted"&&"bg-surface-2","has-[[data-slot=item-content]]:justify-start",e)}})}function wK({className:e,...t}){return r.jsx("div",{"data-slot":"item-group",role:"list",className:Ne("flex flex-col",e),...t})}function kK({className:e,...t}){return r.jsx("div",{"data-slot":"item-content",className:Ne("min-w-0 flex-1",e),...t})}function SK({className:e,...t}){return r.jsx("div",{"data-slot":"item-title",className:Ne("text-[13px] font-medium",e),...t})}function NK({className:e,...t}){return r.jsx("p",{"data-slot":"item-description",className:Ne("m-0 mt-0.5 text-[12px] leading-relaxed text-muted-foreground",e),...t})}function S0e({className:e,...t}){return r.jsx("div",{"data-slot":"item-media",className:Ne("flex shrink-0 items-center justify-center",e),...t})}function CK({className:e,...t}){return r.jsx("div",{"data-slot":"item-actions",className:Ne("ml-auto flex shrink-0 items-center gap-2",e),...t})}const N0e=p.forwardRef(function(t,n){const{render:s,className:i,style:o,disabled:l=!1,...u}=t,[d,f]=p.useState(void 0),g=BO(!0)?.disabled||l,b=Kt("fieldset",t,{ref:n,state:{disabled:g},props:[{"aria-labelledby":d,disabled:g},u]}),y=p.useMemo(()=>({legendId:d,setLegendId:f,disabled:g}),[d,f,g]);return r.jsx(fU.Provider,{value:y,children:b})}),AK=jh("min-w-0",{variants:{orientation:{vertical:"flex flex-col gap-1.5",horizontal:"flex flex-wrap items-center gap-2.5",responsive:"flex flex-col gap-1.5 min-[768px]:flex-row min-[768px]:items-center min-[768px]:gap-2.5"}},defaultVariants:{orientation:"vertical"}});function ct({className:e,orientation:t,...n}){return r.jsx(xxe,{"data-slot":"field",className:s=>Ne(AK({orientation:t}),typeof e=="function"?e(s):e),...n})}function Lh({className:e,orientation:t,...n}){return r.jsx("div",{"data-slot":"field-group",className:Ne(t?AK({orientation:t}):"flex flex-col gap-3",e),...n})}function C0e({className:e,...t}){return r.jsx(N0e,{"data-slot":"field-set",className:n=>Ne("m-0 min-w-0 border-0 p-0",typeof e=="function"?e(n):e),...t})}function ut({className:e,...t}){return r.jsx(bxe,{"data-slot":"field-label",className:n=>Ne("flex items-center gap-[6px] text-[11.5px] text-muted-foreground",typeof e=="function"?e(n):e),...t})}function kP({className:e,...t}){return r.jsx("div",{"data-slot":"field-content",className:Ne("min-w-0 flex-1",e),...t})}function wr({className:e,...t}){return r.jsx(wxe,{"data-slot":"field-description",className:n=>Ne("m-0 text-[11.5px] leading-relaxed text-subtle",typeof e=="function"?e(n):e),...t})}const EK=p.createContext(void 0);function SP(){const e=p.useContext(EK);if(!e)throw new Error(Vn(73));return e}let TK=0;function OK(e){return TK+=1,`${e}-${Math.random().toString(36).slice(2,6)}-${TK}`}function NP(e,t){if(typeof e=="string")return{description:e};if(typeof e=="function"){const n=e(t);return typeof n=="string"?{description:n}:n}return e}function CP(e){const t=new Map;let n=0,s=0;return e.forEach((i,o)=>{const l=i.transitionStatus==="ending";t.set(i.id,{value:i,domIndex:o,visibleIndex:l?-1:n,offsetY:s}),s+=i.height||0,l||(n+=1)}),t}function AP(e,t){let n=0;return e.map(s=>{if(s.transitionStatus==="ending")return s;const i=n>=t;return n+=1,s.limited===i?s:{...s,limited:i}})}const Pl={toasts:e=>e.toasts,isEmpty:e=>e.toasts.length===0,toast:(e,t)=>e.toastMetadata.get(t)?.value,toastIndex:(e,t)=>e.toastMetadata.get(t)?.domIndex??-1,toastOffsetY:(e,t)=>e.toastMetadata.get(t)?.offsetY??0,toastVisibleIndex:(e,t)=>e.toastMetadata.get(t)?.visibleIndex??-1,focused:e=>e.focused,expanded:e=>e.hovering||e.focused,expandedOrOutOfFocus:e=>e.hovering||e.focused||!e.isWindowFocused,prevFocusElement:e=>e.prevFocusElement};class A0e extends Ph{constructor(n){super({...n,toastMetadata:CP(n.toasts)},{},Pl);Cn(this,"timers",new Map);Cn(this,"areTimersPaused",!1);Cn(this,"setViewport",n=>{this.set("viewport",n)});Cn(this,"disposeEffect",()=>()=>{this.timers.forEach(n=>{n.timeout?.clear()}),this.timers.clear()});Cn(this,"addToast",n=>{const{timeout:s,limit:i}=this.state,o=n.id||OK("toast");if(n.id){const f=Pl.toast(this.state,n.id);if(f)if(f.transitionStatus==="ending")this.removeToast(n.id,!0);else{const{id:m,transitionStatus:g,...v}=n;return this.updateToastInternal(n.id,v,!0,!0),n.id}}const l={...n,id:o,updateKey:0,transitionStatus:"starting"},u=[l,...this.state.toasts];this.setToasts(AP(u,i));const d=l.timeout??s;return l.type!=="loading"&&d>0&&this.scheduleTimer(o,d,()=>this.closeToast(o)),Pl.expandedOrOutOfFocus(this.state)&&this.pauseTimers(),o});Cn(this,"updateToast",(n,s)=>{const i=Pl.toast(this.state,n);!i||i.transitionStatus==="ending"||this.updateToastInternal(n,typeof s=="function"?s(i):s,!1,!0)});Cn(this,"updateToastInternal",(n,s,i=!1,o=!1)=>{const{timeout:l,toasts:u}=this.state,d=Pl.toast(this.state,n);if(!d||d.transitionStatus==="ending")return;const f={...d,...s,...o&&{updateKey:d.updateKey+1}};this.setToasts(u.map(S=>S.id===n?f:S));const m=f.timeout??l,g=d.timeout??l,v=Object.hasOwn(s,"timeout"),b=f.transitionStatus!=="ending"&&f.type!=="loading"&&m>0,y=this.timers.has(n),k=g!==m,w=d.type==="loading";if(!b&&y){this.clearTimer(n);return}b&&(!y||k||v||w||i)&&(this.clearTimer(n),this.scheduleTimer(n,m,()=>this.closeToast(n)),Pl.expandedOrOutOfFocus(this.state)&&this.pauseTimers())});Cn(this,"closeToast",n=>{const s=n===void 0,{limit:i,toasts:o}=this.state;let l;if(s)l=o,this.clearTimers();else{const f=Pl.toast(this.state,n);if(!f)return;l=[f],this.clearTimer(n)}const u=o.map(f=>s||f.id===n?{...f,transitionStatus:"ending",height:0}:f),d=AP(u,i);this.setToasts(d,!d.some(f=>f.transitionStatus!=="ending")),l.forEach(f=>{f.transitionStatus!=="ending"&&f.onClose?.()}),this.handleFocusManagement(n)});Cn(this,"promiseToast",(n,s)=>{const i=NP(s.loading),o=this.addToast({...i,type:"loading"}),l=n.then(u=>{const d=NP(s.success,u);return this.updateToast(o,{...d,type:"success",timeout:d.timeout}),u}).catch(u=>{const d=NP(s.error,u);return this.updateToast(o,{...d,type:"error",timeout:d.timeout}),Promise.reject(u)});return{}.hasOwnProperty.call(s,"setPromise")&&s.setPromise(l),l});Cn(this,"handleDocumentPointerDown",n=>{if(n.pointerType!=="touch")return;const s=Er(n);Et(this.state.viewport,s)||(this.resumeTimers(),this.update({hovering:!1,focused:!1}))})}syncProviderProps(n,s){const i=this.state.limit!==s;if(this.state.timeout===n&&!i)return;const o={timeout:n,limit:s};if(i){const l=AP(this.state.toasts,s);o.toasts=l,o.toastMetadata=CP(l)}this.update(o)}removeToast(n,s=!1){const i=Pl.toastIndex(this.state,n);if(i===-1)return;const o=this.state.toasts[i];s||o?.onRemove?.();const l=[...this.state.toasts];l.splice(i,1),this.setToasts(l)}pauseTimers(){this.areTimersPaused||(this.areTimersPaused=!0,this.timers.forEach(n=>{n.timeout&&(n.timeout.clear(),n.remaining=Math.max(n.remaining-(Date.now()-n.start),0))}))}resumeTimers(){this.areTimersPaused&&(this.areTimersPaused=!1,this.timers.forEach((n,s)=>{n.remaining=n.remaining>0?n.remaining:n.delay,n.timeout??(n.timeout=Bi.create()),n.timeout.start(n.remaining,()=>{this.handleTimerFired(s),n.callback()}),n.start=Date.now()}))}restoreFocusToPrevElement(){this.state.prevFocusElement?.focus({preventScroll:!0})}scheduleTimer(n,s,i){const o=Date.now(),u=!Pl.expandedOrOutOfFocus(this.state)?Bi.create():void 0;u?.start(s,()=>{this.handleTimerFired(n),i()}),this.timers.set(n,{timeout:u,start:o,delay:s,remaining:s,callback:i})}clearTimers(){this.timers.forEach(n=>{n.timeout?.clear()}),this.timers.clear(),this.areTimersPaused=!1}clearTimer(n){this.timers.get(n)?.timeout?.clear(),this.timers.delete(n),this.resetPausedStateIfNoTimersRemain()}handleTimerFired(n){this.timers.delete(n),this.resetPausedStateIfNoTimersRemain()}resetPausedStateIfNoTimersRemain(){this.timers.size===0&&(this.areTimersPaused=!1)}setToasts(n,s=n.length===0){const i={toasts:n,toastMetadata:CP(n)};s&&(i.hovering=!1,i.focused=!1),this.update(i)}handleFocusManagement(n){const s=Ys(_n(this.state.viewport));if(!this.state.viewport||!Et(this.state.viewport,s)||!Mk(s))return;if(n===void 0){this.restoreFocusToPrevElement();return}const i=Pl.toasts(this.state),o=Pl.toastIndex(this.state,n),l=(d,f)=>{for(let m=d;m>=0&&mnew A0e({timeout:s,limit:i,viewport:null,toasts:[],hovering:!1,focused:!1,isWindowFocused:!0,prevFocusElement:null})).current;return Uk(l.disposeEffect),p.useEffect(function(){return o?o[" subscribe"](({action:f,options:m})=>{const g=m.id;f==="promise"&&m.promise?l.promiseToast(m.promise,m):f==="update"&&g?l.updateToast(g,m.updates):f==="close"?l.closeToast(g):l.addToast(m)}):void 0},[l,o]),r.jsxs(EK.Provider,{value:l,children:[r.jsx(T0e,{store:l,timeout:s,limit:i}),n]})};function T0e(e){const{store:t,timeout:n,limit:s}=e;return Ge(()=>{t.syncProviderProps(n,s)},[t,n,s]),null}const O0e="--toast-frontmost-height",R0e=p.forwardRef(function(t,n){const{render:s,className:i,style:o,children:l,...u}=t,d=SP(),f=fa(),m=p.useRef(!1),g=p.useRef(!1),v=p.useRef(!1),b=d.useState("isEmpty"),y=d.useState("toasts"),k=d.useState("focused"),w=d.useState("expanded"),S=d.useState("prevFocusElement"),N=y[0]?.height,C=y.some(U=>U.transitionStatus==="ending"),T=y.filter(U=>U.priority==="high");p.useEffect(()=>{const U=d.state.viewport;if(!U||b)return;const z=vr(U),K=_n(U);function J(G){G.key==="F6"&&Er(G)!==U&&(G.preventDefault(),d.set("prevFocusElement",Ys(K)),U?.focus({preventScroll:!0}),d.pauseTimers(),d.set("focused",!0))}function ee(G){Er(G)===z&&(d.set("isWindowFocused",!1),d.pauseTimers())}function H(G){if(G.relatedTarget)return;const Y=Er(G),se=Ys(_n(U));(Y===z||!Et(U,Y)||!Mk(se))&&d.resumeTimers(),f.start(0,()=>d.set("isWindowFocused",!0))}return Ol(kn(z,"keydown",J),kn(z,"blur",ee,!0),kn(z,"focus",H,!0),kn(K,"pointerdown",d.handleDocumentPointerDown,!0))},[d,f,b]);function P(U){m.current=!0;const z=U.relatedTarget===d.state.viewport?y.find(K=>K.transitionStatus!=="ending"&&!K.limited):void 0;z?z.ref?.current?.focus():d.restoreFocusToPrevElement()}function O(U){U.key==="Tab"&&U.shiftKey&&Er(U.nativeEvent)===d.state.viewport&&(U.preventDefault(),d.restoreFocusToPrevElement())}function A(){d.state.toasts.some(z=>z.transitionStatus==="ending")||v.current||!g.current||(d.state.isWindowFocused&&d.resumeTimers(),d.set("hovering",!1),g.current=!1)}p.useEffect(A,[C,d]);function R(){d.pauseTimers(),d.set("hovering",!0),g.current=!1}function M(){d.state.isWindowFocused&&d.resumeTimers()}function _(){g.current=!0,A()}function L(U){U.pointerType==="touch"&&(v.current=!0)}function $(U){U.pointerType==="touch"&&(v.current=!1,A())}function D(){if(m.current){m.current=!1;return}k||Mk(Ys(_n(d.state.viewport)))&&(d.set("focused",!0),d.pauseTimers())}function F(U){!k||Et(d.state.viewport,U.relatedTarget)||(d.set("focused",!1),M())}const V={tabIndex:-1,role:"region","aria-live":"polite","aria-atomic":!1,"aria-relevant":"additions text","aria-label":"Notifications",onMouseEnter:R,onMouseMove:R,onMouseLeave:_,onFocus:D,onBlur:F,onKeyDown:O,onClick:D,onPointerDown:L,onPointerUp:$,onPointerCancel:$,style:{[O0e]:N?`${N}px`:void 0}},q={expanded:w},Q=!b&&S&&r.jsx(Th,{onFocus:P}),X=Kt("div",t,{ref:[n,d.setViewport],state:q,props:[V,u,{children:r.jsxs(p.Fragment,{children:[Q,l,Q]})}]});return r.jsxs(p.Fragment,{children:[Q,X,!k&&T.length>0&&r.jsx("div",{style:vu,children:T.map(U=>r.jsxs("div",{role:"alert","aria-atomic":!0,children:[r.jsx("div",{children:U.title}),r.jsx("div",{children:U.description})]},U.id))})]})}),RK=p.createContext(void 0);function P0e(){const e=p.useContext(RK);if(!e)throw new Error(Vn(66));return e}function I0e(e,t){const n=vr(e).getComputedStyle(e).transform;let s=0,i=0,o=1;if(n&&n!=="none"){const l=n.match(/matrix(?:3d)?\(([^)]+)\)/);if(l){const u=l[1].split(", ").map(parseFloat);u.length===6?(s=u[4],i=u[5],o=Math.sqrt(u[0]*u[0]+u[1]*u[1])):u.length===16&&(s=u[12],i=u[13],o=u[0])}}return{x:s,y:i,scale:o}}function EP(e,t,n){switch(e){case"up":return-n;case"down":return n;case"left":return-t;case"right":return t;default:return 0}}const M0e="--toast-index",_0e="--toast-offset-y",D0e="--toast-height",L0e="--toast-swipe-movement-x",$0e="--toast-swipe-movement-y",z0e="data-swipe-direction",B0e={...Fo,swipeDirection(e){return e?{[z0e]:e}:null}},PK=40,F0e=10,IK=.5,U0e=1,H0e=`${jve},${wve}`,V0e=p.forwardRef(function(t,n){const{toast:s,render:i,className:o,swipeDirection:l=["down","right"],style:u,...d}=t,f=s.positionerProps?.anchor!==void 0;let m=[];f||(m=Array.isArray(l)?l:[l]);const g=m.length>0,v=SP(),[b,y]=p.useState(void 0),[k,w]=p.useState(!1),[S,N]=p.useState(!1),[C,T]=p.useState({x:0,y:0}),[P,O]=p.useState({x:0,y:0,scale:1}),[A,R]=p.useState(),[M,_]=p.useState(),[L,$]=p.useState(null),D=p.useRef(null),F=p.useRef(void 0),V=p.useRef({x:0,y:0}),q=p.useRef({x:0,y:0,scale:1}),Q=p.useRef(void 0),X=p.useRef(0),U=p.useRef(!1),z=p.useRef({x:0,y:0}),K=p.useRef(!1),J=p.useRef({x:0,y:0}),ee=p.useRef(null),H=p.useRef(null),G=v.useState("toastIndex",s.id),Y=v.useState("toastVisibleIndex",s.id),se=v.useState("toastOffsetY",s.id),re=v.useState("focused"),ne=v.useState("expanded");ji({open:s.transitionStatus!=="ending",ref:D,onComplete(){s.transitionStatus==="ending"&&v.removeToast(s.id)}});const de=qe((Se=!1)=>{const ge=D.current;if(!ge)return;const ue=ge.style.height;ge.style.height="auto";const be=ge.offsetHeight;ge.style.height=ue;function ve(){v.updateToastInternal(s.id,{ref:D,height:be,transitionStatus:void 0})}Se?xr.flushSync(ve):ve()});Ge(()=>{const Se=F.current;s.transitionStatus!=="starting"&&Se===s.id||(Se!==void 0&&(y(void 0),O({x:0,y:0,scale:1}),ie({x:0,y:0})),F.current=s.id,de())},[de,s.id,s.transitionStatus]);function ie(Se){J.current=Se,T(Se)}Ge(()=>()=>{H.current?.abort()},[]);function oe(Se,ge){const ue=De=>De>0?De**IK:-(Math.abs(De)**IK),be=Se>0&&!m.includes("right")||Se<0&&!m.includes("left"),ve=ge>0&&!m.includes("down")||ge<0&&!m.includes("up");return{x:be?ue(Se):Se,y:ve?ue(ge):ge}}const je=qe(Se=>{if(Se.pointerId!==ee.current)return;ee.current=null,H.current?.abort(),H.current=null,w(!1),N(!1),$(null);const ge=q.current;if(Se.type==="pointercancel"||U.current){ie({x:ge.x,y:ge.y}),y(void 0);return}const ue=J.current,be=ue.x-ge.x,ve=ue.y-ge.y;let De;for(const Ie of m)if(EP(Ie,be,ve)>PK){De=Ie;break}De?(y(De),v.closeToast(s.id)):(ie({x:ge.x,y:ge.y}),y(void 0))});function te(Se){if(Se.button!==0||(Se.pointerType==="touch"&&v.pauseTimers(),Er(Se.nativeEvent)?.closest(`button,a,input,textarea,[role="button"],${H0e}`)))return;U.current=!1,Q.current=void 0,X.current=0,ee.current=Se.pointerId,V.current={x:Se.clientX,y:Se.clientY},z.current=V.current;const be=Se.currentTarget,ve=I0e(be);q.current=ve,O(ve),ie({x:ve.x,y:ve.y}),v.set("hovering",!0),w(!0),N(!1),$(null),K.current=!0,H.current?.abort();const De=new AbortController;H.current=De;const Ie=_n(be);Ie.addEventListener("pointerup",je,{signal:De.signal}),Ie.addEventListener("pointercancel",je,{signal:De.signal}),be.setPointerCapture?.(Se.pointerId)}function le(Se){if(Se.pointerId!==ee.current)return;Se.preventDefault(),K.current&&(V.current={x:Se.clientX,y:Se.clientY},K.current=!1);const{clientY:ge,clientX:ue,movementX:be,movementY:ve}=Se;(ve<0&&ge>z.current.y||ve>0&&gez.current.x||be>0&&ue=U0e){N(!0);const Ke=m.includes("left")||m.includes("right"),zt=m.includes("up")||m.includes("down");if(Ke&&zt){const ht=Math.abs(De),Tt=Math.abs(Ie);kt=ht>Tt?"horizontal":"vertical",$(kt)}}let Je;if(!Q.current)kt==="vertical"?Ie>0?Je="down":Ie<0&&(Je="up"):kt==="horizontal"?De>0?Je="right":De<0&&(Je="left"):Math.abs(De)>=Math.abs(Ie)?Je=De>0?"right":"left":Je=Ie>0?"down":"up",Je&&m.includes(Je)&&(Q.current=Je,X.current=EP(Je,De,Ie),y(Je));else{const sn=Q.current,Ke=EP(sn,nt,We);Ke>PK?(U.current=!1,y(sn)):!(m.includes("left")&&m.includes("right"))&&!(m.includes("up")&&m.includes("down"))&&X.current-Ke>=F0e&&(U.current=!0)}const on=oe(De,Ie);let nn=q.current.x,On=q.current.y;const Rn=m.includes("left")||m.includes("right"),gt=m.includes("up")||m.includes("down");kt!=="vertical"&&Rn&&(nn+=on.x),kt!=="horizontal"&>&&(On+=on.y),ie({x:nn,y:On})}function he(Se){if(Se.key==="Escape"){if(!D.current||!Et(D.current,Ys(_n(D.current))))return;v.closeToast(s.id)}}p.useEffect(()=>{const Se=D.current;if(!g||!Se)return;function ge(ue){ee.current===null||!Et(Se,Er(ue))||ue.preventDefault()}return kn(Se,"touchmove",ge,{passive:!1})},[g]);function ce(){const Se=C.x-P.x,ge=C.y-P.y;return{transition:k?"none":void 0,transform:k?`translateX(${C.x}px) translateY(${C.y}px) scale(${P.scale})`:void 0,[L0e]:`${Se}px`,[$0e]:`${ge}px`}}const ye=s.priority==="high",fe={role:ye?"alertdialog":"dialog",tabIndex:0,"aria-modal":!1,"aria-labelledby":A,"aria-describedby":M,"aria-hidden":ye&&!re?!0:void 0,onPointerDown:g?te:void 0,onPointerMove:g?le:void 0,onPointerUp:g?je:void 0,onPointerCancel:g?je:void 0,onKeyDown:he,inert:qb(s.limited),style:{...ce(),[M0e]:s.transitionStatus==="ending"?G:Y,[_0e]:`${se}px`,[D0e]:s.height?`${s.height}px`:void 0}},Le=p.useMemo(()=>({toast:s,setTitleId:R,setDescriptionId:_,recalculateHeight:de,visibleIndex:Y,expanded:ne}),[s,R,_,de,Y,ne]),pe={transitionStatus:s.transitionStatus,expanded:ne,limited:s.limited||!1,type:s.type,swiping:k,swipeDirection:b},xe=Kt("div",t,{ref:[n,D],state:pe,stateAttributesMapping:B0e,props:[fe,d]});return r.jsx(RK.Provider,{value:Le,children:xe})});function MK(e){return e==null||typeof e=="boolean"||e===""?!1:Array.isArray(e)?e.some(MK):!0}function K0e(e){return p.isValidElement(e)&&MK(e.props.children)}function _K(e,t,n){const{toast:s,setTitleId:i,setDescriptionId:o}=P0e(),l=n==="title"?i:o,u=t??(n==="title"?s.title:s.description);return{id:lg(e),children:u,type:s.type,setId:l}}function DK(e,t,n){const s=K0e(e);return Ge(()=>{if(s)return n(t),()=>{n(i=>i===t?void 0:i)}},[s,t,n]),s?e:null}const q0e=p.forwardRef(function(t,n){const{render:s,className:i,style:o,id:l,children:u,...d}=t,{id:f,children:m,type:g,setId:v}=_K(l,u,"description"),y=Kt("p",t,{ref:n,state:{type:g},props:{...d,id:f,children:m}});return DK(y,f,v)}),G0e=p.forwardRef(function(t,n){const{render:s,className:i,style:o,id:l,children:u,...d}=t,{id:f,children:m,type:g,setId:v}=_K(l,u,"title"),y=Kt("h2",t,{ref:n,state:{type:g},props:{...d,id:f,children:m}});return DK(y,f,v)}),W0e=p.forwardRef(function(t,n){return r.jsx(dH,{ref:n,...t})});function Y0e(){const e=SP(),t=e.useState("toasts");return p.useMemo(()=>({toasts:t,add:e.addToast,close:e.closeToast,update:e.updateToast,promise:e.promiseToast}),[t,e])}function X0e(){const e=new Set;function t(n){e.forEach(s=>s(n))}return{" subscribe":function(s){return e.add(s),()=>{e.delete(s)}},add(n){const s=n.id||OK("toast"),i={...n,id:s,transitionStatus:"starting"};return t({action:"add",options:i}),s},close(n){t({action:"close",options:{id:n}})},update(n,s){t({action:"update",options:{id:n,updates:s}})},promise(n,s){let i=n;return t({action:"promise",options:{...s,promise:n,setPromise(o){i=o}}}),i}}}const TP=X0e(),Q0e=E0e;function Z0e({className:e,...t}){return r.jsx(G0e,{"data-slot":"toast-title",className:n=>Ne("m-0 text-[12.5px] font-semibold leading-relaxed [overflow-wrap:anywhere]",typeof e=="function"?e(n):e),...t})}function J0e({className:e,...t}){return r.jsx(q0e,{"data-slot":"toast-description",className:n=>Ne("m-0 text-[12px] leading-relaxed text-subtle [overflow-wrap:anywhere]",typeof e=="function"?e(n):e),...t})}function eke({className:e,...t}){return r.jsx(V0e,{"data-slot":"toast",className:Ne("pointer-events-auto max-w-full rounded-lg border border-border bg-raised px-4 py-2.5 text-[12.5px] text-foreground shadow-3 outline-none","data-[type=success]:border-success-bd data-[type=success]:text-success","data-[type=error]:border-destructive-bd data-[type=error]:text-destructive","data-[type=warning]:border-warning-bd data-[type=warning]:text-warning","data-limited:hidden data-ending-style:opacity-0 transition-opacity duration-150",typeof e=="string"&&e),...t})}function tke(){const{toasts:e}=Y0e();return e.map(t=>r.jsxs(eke,{toast:t,children:[r.jsx(Z0e,{children:t.title}),t.description&&r.jsx(J0e,{className:"mt-1",children:t.description})]},t.id))}function LK({manager:e=TP,position:t="top-center",className:n}){return r.jsx(Q0e,{toastManager:e,timeout:3500,limit:1,children:r.jsx(W0e,{children:r.jsx(R0e,{"data-slot":"toast-viewport",className:Ne("pointer-events-none fixed left-1/2 z-[100] flex w-max max-w-[84vw] -translate-x-1/2 flex-col items-center gap-2 outline-none",t==="top-center"?"top-4":"bottom-[calc(78px+env(safe-area-inset-bottom,0px))]",n),children:r.jsx(tke,{})})})})}function nke({className:e,...t}){return r.jsx("div",{"data-slot":"app-frame",className:Ne("min-h-0 bg-background text-foreground",e),...t})}function $h({className:e,...t}){return r.jsx("aside",{"data-slot":"sidebar",className:Ne("flex min-h-0 flex-col gap-3 border-r border-sidebar-border bg-sidebar p-3 text-sidebar-foreground",e),...t})}function $K({className:e,...t}){return r.jsx("div",{"data-slot":"sidebar-header",className:Ne("shrink-0",e),...t})}function zK({className:e,...t}){return r.jsx("nav",{"data-slot":"sidebar-content",className:Ne("flex min-h-0 flex-1 flex-col gap-0.5 overflow-y-auto",e),...t})}function BK({className:e,...t}){return r.jsx("div",{"data-slot":"sidebar-footer",className:Ne("flex shrink-0 flex-col gap-2 border-t border-sidebar-border pt-2.5",e),...t})}function Sg({className:e,...t}){return r.jsx("div",{"data-slot":"sidebar-group-label",className:Ne("px-2 pb-1 pt-2 text-[10.5px] font-semibold uppercase tracking-[.09em] text-sidebar-muted",e),...t})}function zS({className:e,...t}){return r.jsx("header",{"data-slot":"page-header",className:Ne("flex shrink-0 items-center justify-between gap-3",e),...t})}function FK({className:e,...t}){return r.jsx("h1",{"data-slot":"page-title",className:Ne("m-0 text-[20px] font-semibold tracking-tight",e),...t})}function UK({className:e,...t}){return r.jsx("p",{"data-slot":"page-description",className:Ne("m-0 text-[12.5px] text-muted-foreground",e),...t})}function rke({className:e,...t}){return r.jsx("header",{"data-slot":"window-titlebar","data-tauri-drag-region":"",className:Ne("flex h-8 shrink-0 items-center gap-2.5 overflow-hidden border-b border-sidebar-border bg-sidebar pl-3 text-sidebar-fg select-none",e),...t})}function OP({className:e,action:t,...n}){return r.jsx(B,{"data-slot":"window-control",variant:"ghost",className:Ne("h-8 w-11 rounded-none p-0 shadow-none active:translate-y-0",t==="close"&&"hover:bg-destructive hover:text-white",e),...n})}const HK="w-auto flex-auto";function VK({onInput:e,domRef:t,icon:n,className:s,inputClassName:i,...o}){const l=d=>{t.current=d},u=d=>{e?.(d.currentTarget.value)};return n?r.jsxs(zs,{className:Ne(HK,s),children:[r.jsx(Bs,{ref:l,className:i,onInput:u,...o}),r.jsx(As,{"aria-hidden":"true",children:n})]}):r.jsx(ze,{ref:l,className:Ne(HK,i),onInput:u,...o})}function ske(e,t){const n=zn.createRoot(e),s={current:null};return n.render(r.jsx(VK,{domRef:s,defaultValue:t.value,placeholder:t.placeholder,type:t.type??"search",icon:t.icon,"aria-label":t.ariaLabel,onInput:t.onInput})),{setValue(i){const o=s.current;o&&o.value!==i&&(o.value=i)},getValue(){return s.current?.value??""},focus(){s.current?.focus()},unmount(){n.unmount()}}}const ake=[["id","id"],["type","type"],["name","name"],["title","title"],["placeholder","placeholder"],["min","min"],["max","max"],["step","step"],["autocomplete","autoComplete"]];function ike(e){const t={defaultValue:e.value||void 0,inputClassName:e.className||void 0};for(const[l,u]of ake){const d=e.getAttribute(l);d!=null&&(t[u]=d)}const n=e.getAttribute("maxlength");n!=null&&(t.maxLength=Number(n));const s=e.getAttribute("inputmode");s!=null&&(t.inputMode=s),e.hasAttribute("spellcheck")&&(t.spellCheck=e.spellcheck),e.disabled&&(t.disabled=!0),e.readOnly&&(t.readOnly=!0),e.hidden&&(t.hidden=!0);const i=e.getAttribute("aria-label");i!=null&&(t["aria-label"]=i);for(const l of e.getAttributeNames())!l.startsWith("data-")||l.startsWith("data-island-")||(t[l]=e.getAttribute(l)??"");const o=e.getAttribute("data-island-icon");return o!=null&&(t.icon=o),t}function KK(e){if(e.dataset.islandUpgraded)return;e.dataset.islandUpgraded="1";const t=ike(e),n=e.parentElement?.classList.contains("input-affix")?e.parentElement:null;let s;n?(n.className=n.className.replace(/\binput-affix\b/,"").trim(),n.style.display="flex",n.style.alignItems="center",s=n):(s=document.createElement("span"),s.style.display="contents",e.replaceWith(s));const i={current:null},o=zn.createRoot(s);xr.flushSync(()=>{o.render(r.jsx(VK,{...t,domRef:i}))})}function qK(e=document){if(e instanceof HTMLInputElement&&e.matches("[data-island-input]")){KK(e);return}e.querySelectorAll("input[data-island-input]").forEach(KK)}function oke(){qK();const e=new MutationObserver(t=>{for(const n of t)for(const s of n.addedNodes)s instanceof Element&&qK(s)});return e.observe(document.body,{childList:!0,subtree:!0}),e}function lke(e,t){const n=zn.createRoot(e);let s={options:t.options,value:t.value,ariaLabel:t.ariaLabel,className:t.className};const i=()=>{n.render(r.jsx(en,{options:s.options,value:s.value,onValueChange:t.onChange,"aria-label":s.ariaLabel,className:s.className}))};return i(),{setValue(o){o!==s.value&&(s={...s,value:o},i())},setOptions(o){s={...s,options:o},i()},unmount(){n.unmount()}}}window.wbUiKit={React:wO,createRoot:zn.createRoot,flushSync:xr.flushSync,Badge:Ee,Button:B,Checkbox:jr,Input:ze,Label:Ae,Progress:gg,SegmentedControl:en,Spinner:Qt,Switch:St,Card:et,CardHeader:pn,CardContent:Gt,CardFooter:ju,Collapsible:gs,CollapsibleTrigger:xs,CollapsibleContent:vs,HtmlContent:Wo,Toaster:LK,toastManager:TP,Select:{Root:Pt,Trigger:Mt,Value:It,Content:_t,Item:Ze,Group:Fje,Label:Uje,Separator:Hje}};function a(e,t){const n=typeof window<"u"?window.wbI18n:void 0;return n&&typeof n.t=="function"?n.t(e,t):e}const ey=Object.freeze({displayName:"Agent2API",logoUrl:null}),cke=2*1024*1024;function GK(e,t){if(!e||typeof e!="object")throw new Error("品牌设置格式无效");const n=e;if(typeof n.displayName!="string"||!n.displayName.trim()||Array.from(n.displayName).length>64)throw new Error("品牌设置格式无效");let s=null;if(n.logoUrl!==null&&n.logoUrl!==void 0){if(typeof n.logoUrl!="string"||!/^\/api\/panel\/branding\/logo\?v=[a-f0-9]{64}$/.test(n.logoUrl))throw new Error("品牌 Logo 地址无效");s=new URL(n.logoUrl,t).href}return{displayName:n.displayName,logoUrl:s}}function uke(e,t){let n="",s=ey,i=0,o=null;const l=new Set,u=()=>{for(const g of l)g()},d=()=>n===e()?s:ey,f=g=>(i+=1,n=e(),(s.displayName!==g.displayName||s.logoUrl!==g.logoUrl)&&(s=g,u()),g);return{snapshot:d,refresh:()=>{const g=e();if(o?.scope===g)return o.request;n!==g&&(n=g,s=ey,u());const v=++i,b=t().then(y=>(v===i&&e()===g&&f(y),y)).finally(()=>{o?.request===b&&(o=null)});return o={scope:g,request:b},b},accept:f,subscribe(g){return l.add(g),()=>{l.delete(g)}},useValue(){return p.useSyncExternalStore(this.subscribe,d)}}}function dke(e,t,n=!0){p.useEffect(()=>{if(!n)return;const s=()=>{document.hidden||e.refresh().catch(()=>{})};s();const i=window.setInterval(s,6e4);return window.addEventListener("focus",s),document.addEventListener("visibilitychange",s),()=>{window.clearInterval(i),window.removeEventListener("focus",s),document.removeEventListener("visibilitychange",s)}},[e,t,n])}let BS=null,wu=null;function fke(e,t){document.querySelector("title")?.removeAttribute("data-i18n"),document.title=t,BS||(BS=[...document.querySelectorAll('link[rel="icon"]')].map(n=>({element:n,href:n.href,type:n.type,sizes:n.sizes.value})));for(const n of BS)n.element.href=e.logoUrl||n.href,n.element.type=e.logoUrl?"image/png":n.type,n.element.sizes.value=e.logoUrl?"any":n.sizes;!BS.length&&e.logoUrl?(wu||(wu=document.createElement("link"),wu.rel="icon",document.head.appendChild(wu)),wu.type="image/png",wu.href=e.logoUrl):wu&&(wu.remove(),wu=null)}const RP=()=>window.workbuddyDesktop;async function WK(){const e=RP();if(e?.platform&&e.platform!=="web"){const t=await e.waitForBackend?.();if(!t?.port||!Number.isInteger(t.port)||t.port<1||t.port>65535)throw new Error(a("网关尚未就绪"));return`http://127.0.0.1:${t.port}`}return window.location.origin}const Ng=uke(()=>"local",async()=>{const e=await WK(),t=await fetch(new URL("/api/panel/branding",e),{cache:"no-store"});if(!t.ok)throw new Error(a("无法读取品牌设置"));const n=await t.json();return GK(n.data,e)});async function hke(e){const t=RP();if(!t?.saveBranding)throw new Error(a("当前版本不支持品牌设置"));const n=await t.saveBranding(e),s=GK(n,await WK());return Ng.accept(s),t.syncBrandingTitle?.().catch(()=>{}),s}function mke(e){const t=Ng.useValue();return dke(Ng,"local"),p.useEffect(()=>{const n=RP(),s=n?.title?.startsWith("[Dev]")?"[Dev] ":"",i=t.displayName==="Agent2API"?n?.title||a("Agent2API · 多提供商本地网关"):`${s}${t.displayName}`;fke(t,i),n?.syncBrandingTitle?.().catch(()=>{})},[t,e]),t}function PP({branding:e,size:t=32,className:n=""}){const[s,i]=p.useState(null);return e.logoUrl&&e.logoUrl!==s?r.jsx("img",{src:e.logoUrl,alt:"","aria-hidden":"true",width:t,height:t,className:`block shrink-0 object-contain ${n}`,style:{width:t,height:t},onError:()=>i(e.logoUrl)}):r.jsxs("svg",{width:t,height:t,viewBox:"0 0 24 24","aria-hidden":"true",className:`block shrink-0 ${n}`,children:[r.jsx("rect",{width:"24",height:"24",rx:"5.4",fill:"#007AFF"}),r.jsxs("g",{fill:"none",stroke:"#fff",strokeWidth:"2.2",strokeLinecap:"round",strokeLinejoin:"round",children:[r.jsx("path",{d:"M5.23 9.24h10.71"}),r.jsx("path",{d:"M15.94 6.72 18.77 9.24 15.94 11.76"}),r.jsx("path",{d:"M18.77 14.76H8.06"}),r.jsx("path",{d:"M8.06 12.24 5.23 14.76 8.06 17.28"})]})]})}function pke(){const e=()=>window.wbZcodeClaimVerification,[t,n]=p.useState(()=>e()?.status()||null);if(p.useEffect(()=>{const i=()=>n(e()?.status()||null);return window.addEventListener("zcode-claim-verification",i),i(),()=>window.removeEventListener("zcode-claim-verification",i)},[]),!t)return null;const s=t.phase==="submitting";return r.jsxs(et,{className:"fixed bottom-5 right-5 z-[2147482900] w-[min(380px,calc(100vw-40px))] space-y-2 p-4 shadow-lg",role:"status","aria-live":"polite",children:[r.jsxs("div",{className:"flex items-center gap-2 text-sm font-semibold",children:[r.jsx(Qt,{className:"size-4 shrink-0"}),a("ZCode 自动领取验证")]}),r.jsxs("p",{className:"break-words text-xs text-muted-foreground",children:[t.accountName," · ",t.planName]}),r.jsx("p",{className:"text-xs text-muted-foreground",children:a(s?"验证凭据正在提交,领取结果请查看签到记录":"正在为本次领取验证;若出现滑块,请手动完成")}),r.jsx(B,{variant:"outline",size:"xs",disabled:s,onClick:()=>e()?.cancel(),children:a("取消验证")})]})}const qd=()=>window;let FS=[],ty="overview",YK=a("报表"),XK=localStorage.getItem("workbuddy-desktop-theme")||"system",QK=[],ZK="";const ku=new Set;let ny=0;const US=()=>{ny+=1;for(const e of ku)e()};function gke({name:e,size:t=17}){return r.jsx("span",{className:"ico shrink-0","aria-hidden":"true",dangerouslySetInnerHTML:{__html:qd().wbIcons?.icon(e,t)||qd().wbIcons?.icon("plugins",t)||""}})}function xke(){return p.useSyncExternalStore(e=>(ku.add(e),()=>ku.delete(e)),()=>ny),r.jsx(r.Fragment,{children:FS.length?FS.map((e,t)=>r.jsxs(p.Fragment,{children:[r.jsx(Sg,{className:"nav-group-label",children:qd().wbSidebarLayout?.groupLabel(e.label)||e.label}),e.items.map(n=>{const s=n.key==="requests"?"nav-count-requests":n.key==="logs"?"nav-count-logs":n.key==="settings"?"nav-count-update":"";return r.jsx(Ts,{className:`nav-item ${ty===n.key?"active":""}`,active:ty===n.key,"data-page":n.key,"data-icon":n.icon,icon:r.jsx(gke,{name:n.icon}),trailing:s?r.jsx(Ee,{id:s,variant:"destructive",shape:"tag",className:"count min-w-5 px-1.5 py-0 text-[10.5px]",style:{display:"none"},children:n.key==="settings"?a("新"):"0"}):void 0,children:r.jsx("span",{className:"label",children:a(n.label)})},n.key)})]},`${e.label}-${t}`)):r.jsx(pt,{className:"nav-empty px-2 py-3 text-[11px]",children:a("侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。")})})}function vke(){return p.useSyncExternalStore(e=>(ku.add(e),()=>ku.delete(e)),()=>ny),r.jsx(en,{className:"w-full",value:XK,"aria-label":a("显示模式"),options:[{value:"system",label:a("跟随系统")},{value:"light",label:a("浅色")},{value:"dark",label:a("深色")}],onValueChange:e=>qd().wbApp?.applyTheme(e)})}function bke(){p.useSyncExternalStore(t=>(ku.add(t),()=>ku.delete(t)),()=>ny);const e={ok:"success",warn:"warning",bad:"destructive",brand:"brand"};return r.jsx(r.Fragment,{children:QK.map((t,n)=>r.jsxs(Ee,{variant:e[t.kind]||"outline",className:t.optional?"badge optional":"badge",children:[t.dot&&r.jsx(Yk,{}),t.text]},n))})}function yke(){p.useSyncExternalStore(o=>(ku.add(o),()=>ku.delete(o)),()=>ny);const e=mke(),[t,n]=p.useState(!1),s=bP("(max-width: 767px)");p.useEffect(()=>{s||n(!1),window.dispatchEvent(new Event("wb:shell-layout")),qd().wbApp?.syncNavBadges()},[s]),p.useEffect(()=>{const o=()=>n(!1);return window.addEventListener("wb:navigation-close",o),()=>window.removeEventListener("wb:navigation-close",o)},[]);const i=r.jsxs($h,{className:"sidebar",children:[r.jsxs($K,{className:"brand",children:[r.jsx("div",{className:"brand-logo",children:r.jsx(PP,{branding:e,size:32})}),r.jsx("div",{className:"brand-text min-w-0",children:r.jsx("h1",{className:"truncate",title:e.displayName,children:e.displayName})})]}),r.jsx(Go,{render:r.jsx(zK,{}),className:"nav",id:"nav","aria-label":a("主导航"),onClick:o=>{const l=o.target.closest(".nav-item[data-page]");l?.dataset.page&&qd().wbApp?.showPage(l.dataset.page)},children:r.jsx(xke,{})}),r.jsxs(BK,{className:"sidebar-foot",children:[r.jsx("div",{className:"sidebar-status",id:"sidebar-status",title:a("本地网关监听状态")}),r.jsx("div",{id:"theme-switch",children:r.jsx(vke,{})})]})]});return r.jsxs(nke,{className:"shell","data-navigation-open":t?"true":void 0,children:[s?r.jsx(Qb,{open:t,onOpenChange:n,children:r.jsxs(Zb,{side:"left",keepMounted:!0,showHandle:!1,showCloseButton:!1,"aria-label":a("主导航"),className:"w-[min(280px,86vw)] rounded-none border-0 p-0",children:[r.jsx(uK,{render:r.jsx(B,{variant:"ghost",size:"icon",className:"absolute right-2 top-2 z-10"}),"aria-label":a("关闭菜单"),children:"✕"}),i]})}):i,r.jsxs("main",{className:"main",children:[r.jsxs(zS,{className:"topbar",children:[r.jsx(B,{variant:"ghost",size:"icon",className:"mobile-menu-btn","aria-label":a("切换菜单"),onClick:()=>n(!t),children:"☰"}),r.jsxs("div",{className:"crumb min-w-0",children:[r.jsx("span",{className:"max-w-[200px] truncate",title:e.displayName,children:e.displayName}),r.jsx("span",{className:"sep",children:"/"}),r.jsx("span",{className:"cur",id:"crumb-page",children:YK})]}),r.jsx("div",{className:"spacer"}),r.jsx("div",{className:"topbar-actions",id:"topbar-status",title:ZK,children:r.jsx(bke,{})}),r.jsx("div",{id:"page-refresh-actions"})]}),r.jsx("div",{className:"content",children:r.jsxs("div",{className:"content-inner",children:[["assistant","overview","accounts","checkin","routing","gateway","agent","tools","proxies","keys","docs","logs","tasks","requests","plugins","settings"].map(o=>r.jsx("section",{className:`page${ty===o?" active":""}`,"data-page":o},o)),r.jsx("section",{className:`page${ty.startsWith("plugin:")?" active":""}`,"data-page":"__plugin__",id:"plugin-page-host"})]})})]}),r.jsx(pke,{})]})}function jke(){const e=document.getElementById("desktop-app");if(!e)return;const t=qd().wbSidebarLayout;t&&(FS=t.renderGroups(t.readLayout())),qd().wbShell={sidebar(s){FS=s,xr.flushSync(US)},page(s,i){ty=s,YK=i,US()},status(s,i=""){QK=s,ZK=i,US()},theme(s){XK=s,US()},closeNavigation(){window.dispatchEvent(new Event("wb:navigation-close"))},toast(s,i="ok"){TP.add({id:"desktop-feedback",title:s,type:i==="err"?"error":i==="warn"?"warning":"success",timeout:3500})}},xr.flushSync(()=>zn.createRoot(e).render(r.jsx(yke,{})));const n=document.createElement("div");document.body.append(n),xr.flushSync(()=>zn.createRoot(n).render(r.jsx(LK,{})))}jke();const JK="wb-tip-bubble",IP=new WeakSet;let es=null,Cg=!1,ry=0,HS=0,eq=0;const MP=new Set,_P=()=>{eq+=1;for(const e of MP)e()},DP=e=>({text:e.getAttribute("data-tip")?.trim()||"",variant:e.getAttribute("data-tip-variant")});let VS=null;function KS(e){const t=e.getBoundingClientRect();return e.isConnected&&t.width>0&&t.height>0&&t.bottom>0&&t.top{es&&!KS(es)&&Il()})),VS?.observe(e),es.classList.add("active"),es.setAttribute("aria-describedby",JK),_P())}function wke(){p.useSyncExternalStore(t=>(MP.add(t),()=>MP.delete(t)),()=>eq);const e=es?DP(es):null;return r.jsx(pS,{children:r.jsx(pc,{open:!!es,disableHoverablePopup:!0,onOpenChange:t=>{!t&&!Cg&&Il()},children:r.jsx(gc,{id:JK,anchor:es,side:"bottom",variant:e?.variant==="plain"?"plain":"default",className:"pointer-events-none",children:e?.text.split(` -`).map((t,n)=>{const s=/^\[(#[0-9a-fA-F]{3}|#[0-9a-fA-F]{6})\]/.exec(t);return r.jsxs("span",{className:"flex items-start gap-1.5",children:[s&&r.jsx("span",{className:"mt-1 size-1.5 shrink-0 rounded-full",style:{background:s[1]}}),r.jsx("span",{children:s?t.slice(s[0].length):t})]},n)})})})})}function LP(e){IP.has(e)||!DP(e).text||(IP.add(e),e.classList.contains("tip-q")&&!e.textContent?.trim()&&(e.textContent="?"),e.matches("a[href], button, input, select, textarea, [tabindex]")||e.setAttribute("tabindex","0"))}function tq(){const e=document.createElement("div");document.body.append(e),xr.flushSync(()=>zn.createRoot(e).render(r.jsx(wke,{})));const t=o=>{o.matches("[data-tip]")&&LP(o),o.querySelectorAll("[data-tip]").forEach(LP)};t(document.body),new MutationObserver(o=>{es&&!KS(es)&&Il();for(const l of o){l.type==="attributes"&&l.target instanceof Element&&(LP(l.target),l.target===es&&_P());for(const u of l.addedNodes)u instanceof Element&&t(u)}}).observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["data-tip","data-tip-variant"]});const s=o=>o.target instanceof Element?o.target.closest("[data-tip]"):null;document.addEventListener("pointerover",o=>{if(!window.matchMedia("(hover: hover)").matches)return;const l=s(o);!l||o.relatedTarget instanceof Node&&l.contains(o.relatedTarget)||(window.clearTimeout(HS),window.clearTimeout(ry),ry=window.setTimeout(()=>qS(l),es?0:150))}),document.addEventListener("pointerout",o=>{const l=s(o);!l||o.relatedTarget instanceof Node&&l.contains(o.relatedTarget)||Cg||(window.clearTimeout(ry),HS=window.setTimeout(()=>{es===l&&!Cg&&Il()},80))}),document.addEventListener("focusin",o=>{const l=s(o);l?.matches(":focus-visible")&&qS(l)}),document.addEventListener("focusout",o=>{s(o)===es&&Il()}),document.addEventListener("click",o=>{const l=s(o);if(!l){es&&Il();return}es===l&&Cg?Il():(qS(l),Cg=!0)},!0),document.addEventListener("keydown",o=>{o.key==="Escape"&&es&&Il()});const i=()=>{es&&!KS(es)&&Il()};window.addEventListener("scroll",i,!0),window.addEventListener("resize",i),window.wbTooltip={open:qS,close:Il,enhanced:o=>IP.has(o)}}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",tq,{once:!0}):tq();const Gd=window.workbuddyDesktop;function $P({action:e,maximized:t=!1}){return r.jsx("svg",{viewBox:"0 0 24 24",width:14,height:14,fill:"none",stroke:"currentColor",strokeWidth:1.8,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:e==="minimize"?r.jsx("path",{d:"M5 12h14"}):e==="close"?r.jsx("path",{d:"M6 6l12 12M18 6 6 18"}):t?r.jsxs(r.Fragment,{children:[r.jsx("rect",{x:8.5,y:4.5,width:11,height:11,rx:1.5}),r.jsx("rect",{x:4.5,y:8.5,width:11,height:11,rx:1.5,className:"fill-sidebar"})]}):r.jsx("rect",{x:5.5,y:5.5,width:13,height:13,rx:1.5})})}function kke({api:e}){const t=Ng.useValue(),[n,s]=p.useState(!1),i=p.useCallback(async()=>{try{e.windowIsMaximized&&s(await e.windowIsMaximized())}catch{}},[e]);p.useEffect(()=>{i();const u=e.onWindowResize?.(()=>{i()});return typeof u=="function"?u:void 0},[e,i]);const o=e.platform==="macos",l=t.displayName==="Agent2API"?e.title||a("Agent2API · 多提供商本地网关"):`${e.title?.startsWith("[Dev]")?"[Dev] ":""}${t.displayName}`;return r.jsxs(rke,{className:o?"titlebar is-macos pl-[84px] pr-3.5":"titlebar",children:[r.jsxs("div",{className:"titlebar-brand pointer-events-none flex min-w-0 items-center gap-2 text-[12.5px] font-semibold [&_*]:pointer-events-none",children:[r.jsx(PP,{branding:t,size:16}),r.jsx("span",{className:"txt truncate",children:l})]}),!o&&r.jsxs("div",{className:"ml-auto flex h-full shrink-0",children:[r.jsx(OP,{action:"minimize",title:a("最小化"),"aria-label":a("最小化"),onClick:()=>{e.windowMinimize?.().catch(()=>{})},children:r.jsx($P,{action:"minimize"})}),r.jsx(OP,{action:"maximize",title:a(n?"还原":"最大化"),"aria-label":a(n?"还原":"最大化"),onClick:async()=>{try{await e.windowToggleMaximize?.(),await i()}catch(u){console.warn("切换窗口大小失败:",u)}},children:r.jsx($P,{action:"maximize",maximized:n})}),r.jsx(OP,{action:"close",title:a("关闭"),"aria-label":a("关闭"),onClick:()=>{e.windowClose?.().catch(()=>{})},children:r.jsx($P,{action:"close"})})]})]})}function Ske(){if(!document.getElementById("desktop-app")||!Gd?.platform||Gd.platform==="web"||Gd.platform!=="macos"&&(!Gd.windowMinimize||!Gd.windowToggleMaximize||!Gd.windowClose))return;const e=document.createElement("div");document.body.prepend(e),document.body.classList.add("has-titlebar"),document.title=Gd.title||a("Agent2API · 多提供商本地网关"),zn.createRoot(e).render(r.jsx(kke,{api:Gd}))}Ske();const Su=999;function zP(e){const t=e.resolved||e;if(t.protocol&&t.host&&t.port){const n=t.host.includes(":")&&!t.host.startsWith("[")?`[${t.host}]`:t.host;return`${String(t.protocol).toLowerCase()}://${n}:${t.port}`}return e.resolved?.label||""}function Ag(e){const t=e.name||e.id,n=[e.source==="clash"?"Clash Verge":"",e.resolveError?a("解析失败"):zP(e),e.enabled===!1?a("已禁用"):""].filter(Boolean);return n.length?a("{name}({parts})",{name:t,parts:n.join(" · ")}):t}const vc="pool:";function ft(){return window}function Ct(e,t){ft().wbApp?.toast?.(e,t)}function Yo(e){const t=ft().wbApp?.esc;return t?t(e):String(e??"").replace(/[&<>"']/g,n=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[n]||n)}function ki(e){const t=ft().wbApp?.formatTime;if(t)return t(e);const n=Number(e);return!Number.isFinite(n)||n<=0?"":new Date(n).toLocaleString("zh-CN")}function dn(e){return e instanceof Error?e.message:String(e)}function Ln(e){if(e==null||e==="")return"—";const t=Number(e);return Number.isFinite(t)?String(Number(t.toFixed(2))):String(e)}const Nke={workbuddy:{usage:!0,creditDetail:!0,creditExpiry:!0,edition:!0,identifier:["uid"],expiry:["expiresAt"]},"workbuddy-intl":{usage:!0,creditDetail:!0,creditExpiry:!0,edition:!1,identifier:["uid"],expiry:["expiresAt"]},raccoon:{usage:!0,creditDetail:!0,edition:!1,identifier:["userId"],expiry:["tokenExpiresAt"]},catpaw:{usage:!0,edition:!1,identifier:["uid"],expiry:["tokenExpiresAt"]},autoclaw:{usage:!0,creditDetail:!0,edition:!1,identifier:["userId"],expiry:["tokenExpiresAt"]},"autoclaw-intl":{usage:!0,creditDetail:!0,edition:!1,identifier:["userId"],expiry:["tokenExpiresAt"],emailAsName:!0},qoder:{usage:!0,creditDetail:!0,edition:!0,identifier:["userId"],expiry:["expiresAt"],emailAsName:!0},"qoder-intl":{usage:!0,creditDetail:!0,edition:!0,identifier:["userId"],expiry:["expiresAt"],emailAsName:!0},qwenwork:{usage:!0,creditDetail:!0,edition:!0,identifier:["userId"],expiry:["expiresAt"],emailAsName:!0},"qwenwork-intl":{usage:!0,creditDetail:!0,edition:!0,identifier:["userId"],expiry:["expiresAt"],emailAsName:!0},"cline-free":{usage:!0,edition:!1,identifier:["account"],expiry:["expiresAt"]},"cline-pass":{usage:!0,edition:!1,identifier:["account"],expiry:["expiresAt"]},accio:{usage:!0,edition:!0,identifier:["userId"],expiry:["expiresAt"],emailAsName:!0},"accio-cn":{usage:!0,edition:!0,identifier:["userId"],expiry:["expiresAt"],emailAsName:!0},zcode:{usage:!0,creditDetail:!0,claim:!0,planChannel:!0,edition:!0,identifier:["userId"],expiry:["expiresAt"]},"zcode-intl":{usage:!0,creditDetail:!0,claim:!0,planChannel:!0,edition:!0,identifier:["userId"],expiry:["expiresAt"]},codearts:{usage:!0,usageDetail:!0,edition:!1,identifier:["userId"],expiry:["expiresAt"],concurrencyDefault:3},trae:{usage:!0,creditDetail:!0,creditExpiry:!0,edition:!1,identifier:["uid"],expiry:["expiresAt"]},loomy:{usage:!0,creditDetail:!0,edition:!1,identifier:["userId"],expiry:[""]},kuku:{usage:!0,edition:!1,identifier:["uid"],expiry:[""]},officeace:{usage:!0,creditDetail:!0,creditExpiry:!0,edition:!1,identifier:["id"],expiry:["expiresAt"]},antigravity:{usage:!0,edition:!1,identifier:["userId"],expiry:[""],longLived:!0},chatglm:{usage:!0,creditDetail:!0,edition:!1,identifier:["uid"],expiry:[""],longLived:!0},modelscope:{usage:!0,creditDetail:!0,edition:!1,identifier:["userId"],expiry:[""],longLived:!0},"modelscope-intl":{usage:!0,creditDetail:!0,edition:!1,identifier:["userId"],expiry:[""],longLived:!0},atomcode:{usage:!0,edition:!1,identifier:["userId"],expiry:["expiresAt"]},commandcode:{usage:!1,edition:!1,identifier:["id"],expiry:[""],longLived:!0},lobsterai:{usage:!0,creditDetail:!0,edition:!1,identifier:["userId"],expiry:["expiresAt"]},monkeycode:{usage:!1,edition:!1,identifier:["userId"],expiry:["expiresAt"]},"monkeycode-intl":{usage:!1,edition:!1,identifier:["userId"],expiry:["expiresAt"]},orcaterm:{usage:!0,edition:!1,identifier:["uid"],expiry:["tokenExpireAt"]}},GS={usage:!1,edition:!1,identifier:["userId"],expiry:["tokenExpiresAt"],emailAsName:!1};let nq=new Map,rq=null;function Cke(e){if(!e||typeof e!="object"||Array.isArray(e))return;const t=new Map;for(const[n,s]of Object.entries(e))!n||!s||typeof s!="object"||Array.isArray(s)||t.set(n,Eke(s));nq=t}function Ake(){const e=ft().wbApp?.getState?.()?.accountFeatures;return e!==rq&&(rq=e,Cke(e)),nq}function Eke(e){return{usage:e.usage===!0,edition:e.edition===!0,identifier:sq(e.identifier,GS.identifier),expiry:sq(e.expiry,GS.expiry),longLived:e.long_lived===!0,emailAsName:e.email_as_name===!0,claim:e.claim===!0,planChannel:e.plan_channel===!0,usageDetail:e.usage_detail===!0,creditDetail:e.credit_detail===!0,creditExpiry:e.credit_expiry===!0,concurrencyDefault:Number(e.concurrency_default)>0?Number(e.concurrency_default):void 0,defaultLimiters:Tke(e.default_limiters)}}function sq(e,t){if(typeof e=="string")return e?[e]:[];if(!Array.isArray(e))return t;const n=e.filter(s=>typeof s=="string"&&s.length>0);return n.length?n:[]}function Tke(e){if(!Array.isArray(e))return;const t=[];for(const n of e){if(!n||typeof n!="object"||Array.isArray(n))continue;const s=n,i=Number(s.threshold);if(!Number.isFinite(i)||i<=0)continue;const o=s.kind==="token"?"token":s.kind==="balance"?"balance":null;if(!o)continue;const l=s.action==="disable"?"disable":"skip",u=Number(s.period_seconds),d=o==="token"&&Number.isFinite(u)&&u>0;t.push({type:o,action:l,threshold:i,enabled:!0,...d?{period:u,reset:"fixed"}:{},...o==="token"&&!d?{reset:"daily"}:{}})}return t}function Ga(e){if(!e)return GS;const t=Ake().get(e);return t||Nke[e]||GS}function Oke(e,t){const n=Ui(e);if(!n)return null;const s=Object.prototype.hasOwnProperty.call(n,"totalLeft"),o=(Array.isArray(n.quotaSources)?n.quotaSources:[]).map(Ui).find(f=>f?.id==="account"),l=String(n.unit||o?.unit||(s?"积分":"")).trim(),u=Os(s?n.totalLeft:n.available),d=n.unlimited===!0;return u===null&&!d?null:{label:zh(l)?t("总积分"):t("可用合计"),unit:mo(l,t),remaining:u,unlimited:d}}function Ui(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function aq(e,t){const n=Ui(e);if(n?.empty!==!0||n.error)return null;const s=n.emptyText==="暂无可用积分信息"?t("暂无可用积分信息"):typeof n.emptyText=="string"?t(n.emptyText.trim()):"";return{text:t("暂无额度信息"),detail:[s,t("查询已成功,但上游未提供额度数据,不代表余额为零。")].filter(Boolean).join(" · ")}}function Os(e){if(typeof e!="number"&&typeof e!="string"||typeof e=="string"&&!e.trim())return null;const t=Number(e);return Number.isFinite(t)?t:null}function iq(e){const t=Ui(e);return t?.snapshot===!0||t?.type==="magicubes"}function BP(e){const t=Ui(e);if(!t)return[];const n=Array.isArray(t.credits)?t.credits.filter(i=>Ui(i)):[];return Array.isArray(t.wallets)&&t.wallets.some(i=>Ui(i)?.type==="magicubes")?n.map(i=>{if(i.snapshot===!0||i.record===!0)return i;const{remain:o,...l}=i;switch(i.name){case"可用魔粒":return{...l,key:"available",name:"可用余额",balance:o,unit:"魔粒",snapshot:!0};case"冻结魔粒":return{...l,key:"frozen",name:"冻结余额",balance:o,unit:"魔粒",snapshot:!0};case"今日已用(次)":return{...l,key:"used-today",name:"今日已用",used:i.used??o,unit:"次",daily:!0,snapshot:!0};default:return i}}):n}function zh(e){return e.trim()==="积分"||e.trim().toLowerCase()==="credits"}function mo(e,t){if(zh(e))return t("积分");switch(e){case"额度":return t("额度");case"魔粒":return t("魔粒");case"次":return t("次");case"copilot_quota_units":return t("Copilot 额度单位");default:return e}}function oq(e,t){switch(e){case"Premium requests":return t("高级请求");case"Chat requests":return t("对话请求");case"Completions":return t("补全请求");default:return typeof e=="string"?t(e):""}}function lq(e,t,n){const s=typeof e.view=="string"?e.view.trim():"",i=Os(e.remaining),o=Os(e.limit),l=Os(e.remainingPercent),u=typeof e.unit=="string"?mo(e.unit,t):"";return e.unlimited===!0&&(!s||s==="不限")?t("不限"):i!==null&&(!s||/^剩余 [-+\d.eE]+(?: \/ [-+\d.eE]+)?(?: .+)?$/.test(s))?[o===null?t("剩 {remaining}",{remaining:n(i)}):t("剩 {remaining} / {total}",{remaining:n(i),total:n(o)}),u].filter(Boolean).join(" "):l!==null&&(!s||/^剩余 [-+\d.]+%$/.test(s))?t("剩余 {percent}%",{percent:Math.round(Math.max(0,Math.min(100,l)))}):s?t(s):"—"}function cq(e,t,n){if(e.snapshot!==!0)return null;const s=Os(e.used),i=s??Os(e.balance)??Os(e.remain),o=String(e.unit||"").trim(),l=String(e.name||"").trim(),u=l==="可用余额"?t("可用余额"):l==="冻结余额"?t("冻结余额"):l==="今日已用"?t("今日已用"):l==="今日发放"?t("今日发放"):l||t("明细"),d=i===null?"—":o==="次"?t("{count} 次",{count:n(i)}):o?`${n(i)} ${mo(o,t)}`:n(i);return{name:u,view:d,tone:s!==null||e.key==="frozen"||i===null||i<=0?"muted":"ok",daily:e.daily===!0}}function Rke(e,t,n){return BP(e).map(s=>cq(s,t,n)).filter(s=>s!==null)}function uq(e){const t=Ui(e);return!Array.isArray(t?.wallets)||!t.wallets.some(n=>String(Ui(n)?.type||"").startsWith("meter:"))?null:t.wallets.map(Ui).filter(n=>n!==null&&(n.creditRemaining!=null||n.creditTotal!=null||n.creditUsed!=null))}function FP(e,t,n){const s=Ui(e);if(!s)return[];const i=[],o=Ui(s.subscription);typeof o?.planName=="string"&&o.planName.trim()&&i.push(t("套餐 {name}",{name:o.planName})),typeof s.balanceView=="string"&&s.balanceView.trim()&&i.push(t(s.balanceView));for(const l of uq(s)??(Array.isArray(s.wallets)?s.wallets:[])){const u=Ui(l);if(!u)continue;const d=typeof u.balanceView=="string"&&u.balanceView.trim()?t(u.balanceView):Os(u.balance)===null?"":n(Os(u.balance));if(!d)continue;const f=typeof u.displayName=="string"?t(u.displayName):typeof u.type=="string"?u.type:t("明细");i.push([f,d].filter(Boolean).join(" "))}return[...new Set(i)]}function WS(e){const t=Ui(e);return Array.isArray(t?.warnings)?t.warnings.filter(n=>typeof n=="string"&&!!n.trim()):[]}let Bh={};function Pke(e){if(!e?.limiterStates)return!1;const t=JSON.stringify([Bh.limiterStates,Bh.quotaSources,Bh.limiterModels])!==JSON.stringify([e.limiterStates,e.quotaSources,e.limiterModels]);return Bh={tokenAt:e.tokenAt,limiterStates:e.limiterStates,quotaSources:e.quotaSources,limiterModels:e.limiterModels},t}function sy(e,t=[]){return Array.isArray(e?.limiterGroups)?e.limiterGroups:t.map(n=>({enabled:n.enabled!==!1,action:n.action,target:"account",conditions:[{join:"or",sourceId:"",models:[],threshold:n.threshold,metric:n.type==="balance"?"remaining":"tokens",comparison:n.type==="balance"?"lt":"gte",...n.type==="token"?{window:{reset:n.reset==="daily"?"daily":"fixed",seconds:n.period||0}}:{}}]}))}function UP(e){const t=e?Bh.quotaSources?.[e.id]:void 0;return Array.isArray(t)?t.slice():[{id:"account",label:a("账号主额度"),provider:String(e?.provider||"")},{id:"local",label:a("本地用量保护"),provider:String(e?.provider||""),localOnly:!0}]}function Ike(e){const t=String(e?.provider||"");return(Bh.limiterModels?.[t]||[]).map(s=>({value:s.id,label:s.name&&s.name!==s.id?`${s.name}(${s.id})`:s.id}))}function HP(e){return e?Bh.limiterStates?.[e.id]||[]:[]}function ay(e,t,n="skip"){if(!e)return!1;const s=sy(e),i=HP(e);return s.some((o,l)=>o.enabled&&o.action===n&&i[l]?.hit&&(!t||o.conditions.some(u=>t==="token"?u.metric==="tokens"||u.metric==="requests":u.metric!=="tokens"&&u.metric!=="requests")))}function VP(e,t=e?.id||"account"){return t==="local"?a("本地用量保护"):t==="account"||!t?zh(e?.unit||"")?a("总积分"):a("账号主额度"):e?.label?a(e.label):a("账号主额度")}function dq(e){const{remaining:t,total:n,used:s,remainingPercent:i,resetsAt:o,...l}=e;return l}function fq(e,t){const n=e.sourceId||(e.metric==="tokens"||e.metric==="requests"?"local":"account"),s=UP(t).find(m=>m.id===n),i=VP(s||e.source,n),o=e.models.length?e.models.join("、"):a("全部模型"),l=KP(e.metric),u=e.comparison==="lt"?"<":e.comparison==="lte"?"≤":"≥",d=e.metric.endsWith("percent")?"%":e.metric==="tokens"?"Token":e.metric==="requests"?a("次"):mo(s?.unit||e.source?.unit||"",a),f=e.metric==="tokens"?hq(e.threshold):String(e.threshold);return`${i} · ${o} · ${l} ${u} ${f} ${d}`.trim()}function KP(e){switch(e){case"remaining":return a("剩余额度");case"remaining_percent":return a("剩余比例");case"used":return a("已用额度");case"used_percent":return a("已用比例");case"tokens":return a("本地 Token 消耗");case"requests":return a("本地请求次数")}}function hq(e){return window.wbUnits?.formatTokens?.(e)||e.toLocaleString()}function Mke(e,t,n){if(!e?.known||e.value===null)return _ke(e?.reason);const s=UP(n).find(u=>u.id===(t.sourceId||"account")),i=mo(s?.unit||t.source?.unit||"",a),o=u=>t.metric==="tokens"?`${hq(u)} Token`:t.metric.endsWith("percent")?`${Number(u.toFixed(2))}%`:`${Number(u.toFixed(2))} ${t.metric==="requests"?a("次"):i}`.trim(),l=Object.entries(e.modelValues||{});return l.length?l.map(([u,d])=>`${u}:${o(d)}`).join(" · "):o(e.value)}function _ke(e){switch(e){case"此额度不属于账号当前使用的通道":return a("此额度不属于账号当前使用的通道");case"套餐尚未生效或已经到期":return a("套餐尚未生效或已经到期");case"上游额度无上限":return a("上游额度无上限");case"统计周期尚未开始或已经结束":return a("统计周期尚未开始或已经结束");default:return a("暂无读数")}}function Dke(e,t){const n=[];return e.forEach((s,i)=>{(i===0||s.join==="or")&&n.push([]),n[n.length-1].push(fq(s,t))}),n.map(s=>s.length>1?`(${s.join(` ${a("与")} `)})`:s[0]).join(` ${a("或")} `)}function mq(e){return e.desktop!==!0&&(e.canRefresh===!0||e.hasRefreshToken===!0)}function qP(e){return e.desktop===!0?a("桌面端实时登录态请在原客户端更新"):e.needsRelogin===!0?iy(e):mq(e)?"":a("该账号不支持刷新 Token 或未提供刷新凭证")}function iy(e){return e.needsReloginReason?.trim()||a("登录授权已失效,请重新登录;自动续期无法恢复已过期或已撤销的刷新令牌。")}function pq(e,t=Date.now()){const n=Number(e?.upstreamCooldownUntil);return!Number.isFinite(n)||n<=t||n>864e13?null:{resetAt:n,message:String(e?.upstreamBlockedReason||"").trim()}}function gq(e){return e?.enabled===!1?String(e.upstreamBlockedReason||"").trim():""}function GP(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function xq(e){return typeof e=="string"?e.trim():""}function vq(e){const t=GP(e);if(t?.stale)return{remaining:null,unit:"",unlimited:!1};const n=t?.error?GP(t.lastUsage):t,s=!!(n&&Object.prototype.hasOwnProperty.call(n,"totalLeft")),o=(Array.isArray(n?.quotaSources)?n.quotaSources:[]).map(GP).find(g=>g?.id==="account"),l=xq(n?.unit)||xq(o?.unit)||(s?"积分":""),u=/^(credits?|积分)$/i.test(l)?"积分":l,d=s?n?.totalLeft:n?.available,f=!!n?.unlimited;return{remaining:!f&&typeof d=="number"&&Number.isFinite(d)?d:null,unit:u,unlimited:f}}function WP(e){return!e||e.unlimited||!e.unit||e.unit==="%"?null:typeof e.remaining=="number"&&Number.isFinite(e.remaining)?e.remaining:null}function bq(e){const t=new Set(e.filter(n=>WP(n)!==null).map(n=>n.unit));return t.size>1?"mixedUnits":t.size?"ready":"noData"}const YP=30,yq=86400,Lke=60,$ke=3,YS=10,XS=60,XP=180;function jq(e){const t=e?.usageQuery,n=t?.enabled===void 0?!0:t.enabled===!0,s=Number(t?.interval)||0,i=s>=YP&&s<=yq,o=t?.retries;return{enabled:n,interval:n&&!i?Lke:s,retries:typeof o=="number"&&Number.isInteger(o)&&o>=0&&o<=YS?o:$ke,timeoutSeconds:typeof t?.timeoutSeconds=="number"&&Number.isInteger(t.timeoutSeconds)&&t.timeoutSeconds>=15&&t.timeoutSeconds<=XP?t.timeoutSeconds:XS}}const QP="workbuddy",zke="raccoon";function tn(e){const t=e?.provider;return typeof t=="string"&&t?t:QP}const Bke="opencode",Fke="https://opencode.ai/zen/go/v1";function wq(e,t){if(!e||e.clientEmulation!==Bke)return!1;const s=((typeof t=="string"?t.trim():"")||String(e.baseUrl||"")).trim().replace(/\/+$/,"").toLowerCase();return s?s!==Fke:!1}function Uke(e){const t=e?tn(e):"";return t.startsWith("custom-")&&(ft().wbProviders?.customList?.()||[]).find(s=>s?.id===t)||null}function Hke(e){return e?wq(Uke(e),e.baseUrl):!1}function kq(e){const t=Array.isArray(e?.providers)?e.providers:[],n=Array.isArray(e?.accounts)?e.accounts:[],s=new Map;n.forEach(o=>{const l=tn(o);s.set(l,(s.get(l)||0)+1)});const i=new Map;return t.forEach(o=>{o?.id&&i.set(String(o.id),{id:String(o.id),label:String(o.label||o.id),count:Number(o.count)||0})}),s.forEach((o,l)=>{i.has(l)||i.set(l,{id:l,label:ft().wbProviders?.labelOf?.(l)||l,count:o})}),[...i.values()]}function QS(e){return Kke(e,Ga(tn(e)).identifier)}function Vke(e){for(const t of Ga(tn(e)).identifier){const n=e?.[t];if(!(n==null||n===""))return t}return""}function Kke(e,t){for(const n of t){const s=e?.[n];if(!(s==null||s===""))return String(s)}return""}function Sq(e){const t=Number(e)||0;return t<=0?0:t<1e11?t*1e3:t}function Nq(e){const t=Ga(tn(e)).expiry;for(const n of t){const s=Sq(e?.[n]);if(s>0)return s}return 0}function Si(e){if(e?.isGuest===!0)return!1;const t=tn(e);return t.startsWith("custom-")?!!e?.balanceQuery?.scheme:Ga(t).usage}const qke=1800,Gke=86400,Cq=1;function Wke(e){const t=e?Ga(e).defaultLimiters:void 0;return t&&(e!=="codearts"||t.every(n=>n.type==="balance"))?t.slice():e==="cline-free"?[]:[{type:"balance",action:"skip",threshold:Cq,enabled:!0}]}function Yke(e){if(!e||typeof e!="object")return!1;const t=e;if(t.type!=="balance"&&t.type!=="token"||t.action!=="skip"&&t.action!=="disable")return!1;const n=Number(t.threshold);if(!Number.isFinite(n)||n<=0)return!1;if(t.type==="token"&&t.reset!=="daily"){const s=Number(t.period);if(!Number.isInteger(s)||sGke)return!1}return!0}function Xke(e){const t=e?.lowBalance;if(!t||typeof t!="object"||!t.mode)return Wke(tn(e));const n=Number(t.threshold),s=Number.isFinite(n)&&n>0?n:Cq;return t.mode!=="skip"&&t.mode!=="disable"?[]:[{type:"balance",action:t.mode,threshold:s,enabled:!0}]}function Fh(e){const t=e?.limiters;return Array.isArray(t)?t.filter(Yke):Xke(e)}function Qke(e){return Fh(e).filter(t=>t.type==="token")}function Zke(e,t){const n=t*1e3;return e-e%n}function Aq(e){return e.reset==="daily"?0:e.period??0}function ZP(e,t=Date.now()){if(e===0){const n=new Date(t);return n.setHours(0,0,0,0),n.getTime()}return Zke(t,e)}function JP(e,t,n=Date.now()){if(e.type!=="token")return null;const s=Aq(e),i=(t||[]).find(o=>Number(o.kind)===s);return i&&Number(i.windowStart)===ZP(s,n)?i:null}function eI(e,t){if(t&&typeof t=="object"&&t.stale)return!1;if(Array.isArray(e?.limiterGroups))return ay(e,"balance");const n=Fh(e).filter(l=>l.type==="balance"&&l.action==="skip"&&l.enabled!==!1&&l.threshold>0);if(!n.length||!t||typeof t!="object")return!1;const s=t;if(s.unlimited)return!1;const i=s.totalLeft??s.available;if(i==null||i==="")return!1;const o=Number(i);return Number.isFinite(o)&&n.some(l=>oi.type==="token"&&i.action==="skip"&&i.enabled!==!1);if(!n.length||!t?.length)return!1;const s=Date.now();return n.some(i=>{const o=JP(i,t,s);return o!==null&&Number(o.used)>=i.threshold})}function Jke(e,t){return Array.isArray(e?.limiterGroups)?ay(e,"token","disable"):Fh(e).some(n=>{if(n.type!=="token"||n.action!=="disable"||n.enabled===!1)return!1;const s=JP(n,t);return s!==null&&Number(s.used)>=n.threshold})}function eSe(e,t=Date.now()){const n=Aq(e),s=ZP(n,t),i=n===0?Math.max(0,ZP(0,s+864e5+36e5)-t):Math.max(0,s+n*1e3-t);return{kind:n,startMs:s,remainingMs:i,daily:n===0}}function Eq(e,t){if(e<=0)return"";const n=Math.ceil(e/6e4);if(t){const s=Math.ceil(e/36e5);return s>=1?a("今日剩 {n} 小时",{n:s}):a("今日剩 {n} 分钟",{n})}return n>=1?a("剩 {n} 分钟",{n}):a("剩不到 1 分钟")}function Tq(e){const t=Number(e);if(!Number.isFinite(t))return"—";const n=window.wbUnits;return n?.formatTokens?n.formatTokens(t):String(Math.round(t))}function tSe(e){return e>0&&e%3600===0?a("{n} 小时",{n:e/3600}):e>0&&e%60===0?a("{n} 分钟",{n:e/60}):a("{n} 秒",{n:e})}function oy(e){return e?.desktop===!0}function Oq(e){return e?.chatSupported!==!1}function nSe(e){return typeof e=="string"&&e.startsWith("custom-")}function rSe(e){return a(e==="enterprise"?"企业":e==="ultimate"?"旗舰":"个人")}function ZS(e,t){const n=Number(e?.priority??100)-Number(t?.priority??100);return n!==0?n:(Number(e?.addedAt)||0)-(Number(t?.addedAt)||0)}function Ni(e){return e?.enabled!==!1}function ly(e,t=""){if(pq(e))return!0;const n=e?.rateLimits||{},s=Date.now();return t?Number(n[t]?.resetAt)>s:Object.values(n).some(i=>Number(i?.resetAt)>s)}function Rq(e){return e?.edition==="intl"?"intl":"cn"}const Pq="coding-plan",Uh="start-plan";function JS(e){return!!Ga(tn(e)).planChannel}function nI(e){return JS(e)?String(e?.zcodePlan||"").trim()===Uh?Uh:Pq:""}function sSe(e){return a(e===Uh?"套餐池(Start Plan)":"编码套餐(Coding Plan)")}function rI(e){switch(String(e??"").trim()){case"pending":return a("待生效");case"active":return a("生效中");case"expired":return a("已过期");case"unknown":return a("状态未知");default:return String(e??"")}}function aSe(e){const t=e?.claimPlans;if(!t||typeof t!="object"||Array.isArray(t))return[];const n=_q();return Object.entries(t).filter(([,s])=>Number(s)>0&&_q(Number(s))===n).map(([s])=>s)}function iSe(e){return!!Ga(tn(e)).usageDetail}function sI(e){return!!Ga(tn(e)).creditDetail}function Iq(e,t=Date.now()){if(!e||typeof e!="object"||Array.isArray(e))return null;const n=e,s=Array.isArray(n.credits)?n.credits:[];let i=null;for(const o of s){if(!o||typeof o!="object"||o.snapshot===!0||o.record===!0||o.daily===!0||o.unlimited===!0)continue;const l=Number(o.expireAt);if(!Number.isFinite(l)||l<=0||l<=t)continue;const u=o.remain;u!=null&&u!==""&&Number(u)<=0||(i===null||lString(i||"").toLowerCase().includes(n)):!0}function Lq(e,t){return t.provider==="all"||tn(e)===t.provider}function iI(e,t){return t.enabled==="all"?!0:t.enabled==="enabled"?Ni(e):!Ni(e)}function $q(e,t,n,s){if(t.limit==="all")return!0;if(!Ni(e))return!1;const i=cy(e,n?.(e),s?.(e));return t.limit==="limited"?i:!i}function zq(e,t,n,s){return Lq(e,t)&&iI(e,t)&&$q(e,t,n,s)&&Dq(e,t)}function oSe(e,t,n,s){return(e||[]).filter(i=>zq(i,t,n,s))}function Bq(e,t,n,s){const i=e||[],o=d=>i.filter(f=>Lq(f,t)&&(d==="enabled"||iI(f,t))&&Dq(f,t)),l=o("enabled"),u=o("limit");return{enabledAll:l.length,enabled:l.filter(Ni).length,disabled:l.filter(d=>!Ni(d)).length,limitAll:u.length,normal:u.filter(d=>Ni(d)&&!cy(d,n?.(d),s?.(d))).length,limited:u.filter(d=>Ni(d)&&cy(d,n?.(d),s?.(d))).length}}function oI(e){const t=e?.rateLimits;if(!t||typeof t!="object")return[];const n=Date.now();return Object.entries(t).map(([s,i])=>({model:s,...i&&typeof i=="object"?i:{}})).filter(s=>Number(s.resetAt)>n).sort((s,i)=>Number(s.resetAt)-Number(i.resetAt))}function lI(e,t){const n=new Map((t?.providerOrder||[]).flatMap(o=>t?.accountOrder[o]||[]).map((o,l)=>[o,l])),s=(e||[]).slice().sort(n.size?(o,l)=>(n.get(o.id)??1/0)-(n.get(l.id)??1/0):ZS),i=new Map;return s.forEach((o,l)=>i.set(o.id,{position:l+1,total:s.length})),i}function Fq(e){return[{key:"credit",on:Eg(e),dir:"soon"},{key:"balance",on:!1,dir:"high"},{key:"added",on:!1,dir:"new"}]}function lSe(e,t,n,s=Date.now()){const i=(t||[]).filter(f=>f.on);if(!i.length)return e.slice();const o=e.map((f,m)=>({account:f,index:m})),l=new Map,u=new Map(e.map(f=>[f.id,vq(n?.(f))])),d=bq([...u.values()])==="ready";for(const{account:f}of o)l.set(f.id,Iq(n?.(f),s));return o.sort((f,m)=>{for(const g of i){let v=0;if(g.key==="added"?v=cSe(g.dir,f.account,m.account):g.key==="credit"?v=Uq(g.dir,l.get(f.account.id)??null,l.get(m.account.id)??null):g.key==="balance"&&d&&(v=Uq(g.dir==="high"?"late":"soon",WP(u.get(f.account.id)),WP(u.get(m.account.id)))),v!==0)return v}return f.index-m.index}),o.map(f=>f.account)}function cSe(e,t,n){const s=Number(t.addedAt)||0,i=Number(n.addedAt)||0;return e==="new"?i-s:s-i}function Uq(e,t,n){return t===null&&n===null?0:t===null?1:n===null?-1:e==="soon"?t-n:n-t}function uSe(e,t,n,s,i,o){const l=(e||[]).slice().sort(ZS),u=[],d=new Map;for(const f of l){const m=tn(f);d.has(m)||(d.set(m,[]),u.push(m)),d.get(m).push(f)}if(o){const f=new Map(o.providerOrder.map((m,g)=>[m,g]));u.sort((m,g)=>(f.get(m)??1/0)-(f.get(g)??1/0))}return u.map((f,m)=>{const g=d.get(f)||[],v=o?.accountOrder[f],b=new Map((v||[]).map((k,w)=>[k,w])),y=v?g.slice().sort((k,w)=>(b.get(k.id)??1/0)-(b.get(w.id)??1/0)):i?lSe(g,i(f),n):g;return{provider:f,label:ft().wbProviders?.labelOf?.(f)||f,rank:o?.providerOrder.includes(f)?o.providerOrder.indexOf(f)+1:m+1,members:y,queueMembers:g,accounts:t?y.filter(t):y,enabled:y.filter(Ni).length,disabled:y.filter(k=>!Ni(k)).length,limited:y.filter(k=>Ni(k)&&cy(k,n?.(k),s?.(k))).length}})}function Ci(e){if(!e)return"";const t=String(e.name||"").trim();if(e.nameCustom===!0&&t)return t;const n=String(e.email||"").trim();return Ga(tn(e)).emailAsName&&n?n:e?.nickname||t||QS(e)||e?.id||""}const cI="已限流",Hq=e=>new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime();function uI(e){const t=Number(e);if(!Number.isFinite(t)||t<=0||t<=Date.now())return cI;const n=new Date(t),s=n.toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit",hour12:!1}),i=Math.round((Hq(n)-Hq(new Date))/864e5);return i===0?a("今天 {clock}",{clock:s}):i===1?a("明天 {clock}",{clock:s}):a("{month}月{day}日 {clock}",{month:n.getMonth()+1,day:n.getDate(),clock:s})}function dSe(e){const t=tn(e);if(!Ga(t).edition)return"";const n=Rq(e),s=e?.editionLabel,i=s||(n==="intl"?"国际版":"国内版");return(ft().wbProviders?.labelOf?.(t)||"").includes(i)?"":s||a(n==="intl"?"国际版":"国内版")}function fSe(e){const t=gq(e);return[t?{text:a("上游限制 · 已禁用"),kind:"bad",title:t}:null,e.needsRelogin?{text:a("需要重新登录"),kind:"bad",title:iy(e)}:null,Oq(e)?null:{text:a("仅账号管理"),kind:"plain",title:a("该提供商的推理转发尚未接入,账号不参与转发")},nSe(tn(e))&&e.hasCredentials===!1?{text:a("未配置凭证"),kind:"bad",title:a("这条自定义账号既没有 API Key,也没有勾选「无需鉴权」:转发时会被跳过,该提供商下的模型也不会出现在模型列表里。去账号「设置」里补上 Key,或勾选「该上游无需鉴权」")}:null,e.proxy?.error?{text:a("代理异常"),kind:"bad",title:a("{error}(不会自动改为直连)",{error:e.proxy.error})}:null,nI(e)===Uh?{text:a("套餐池"),kind:"plain",title:a("转发走套餐池(Start Plan)通道(zcode.z.ai 的 Anthropic 端点,用账号里的体验额度 / 活动领取额度);在账号设置里可切回编码套餐")}:null].filter(n=>n!==null)}const Vq="workbuddy-desktop-accounts-filters",Kq="workbuddy-desktop-accounts-collapsed",dI="workbuddy-desktop-accounts-names-hidden",fI="workbuddy-desktop-accounts-group-total-filtered",hSe="workbuddy-desktop-accounts-group-sort";function mSe(){try{const e=JSON.parse(localStorage.getItem(hSe)||"{}");if(!e||typeof e!="object"||Array.isArray(e))return{};const t={};for(const[n,s]of Object.entries(e)){if(!Array.isArray(s))continue;const i=[];for(const o of s){if(!o||typeof o!="object")continue;const l=o;l.key==="credit"?i.push({key:"credit",on:l.on!==!1,dir:l.dir==="late"?"late":"soon"}):l.key==="balance"?i.push({key:"balance",on:l.on!==!1,dir:l.dir==="low"?"low":"high"}):l.key==="added"&&i.push({key:"added",on:l.on!==!1,dir:l.dir==="old"?"old":"new"})}i.length&&(t[n]=i)}return t}catch{return{}}}function pSe(){const e={provider:"all",enabled:"all",limit:"all",q:""},t=ft().wbFilterMemory?.load(Vq,e)||e;return{provider:String(t.provider||"all"),enabled:String(t.enabled||"all"),limit:String(t.limit||"all"),q:""}}function gSe(){try{const e=JSON.parse(localStorage.getItem(Kq)||"[]");return new Set(Array.isArray(e)?e.map(t=>String(t)).filter(Boolean):[])}catch{return new Set}}function qq(){return Wq()}function Gq(){return hI()}function Wq(){try{return localStorage.getItem(dI)==="1"}catch{return!1}}function hI(){try{return localStorage.getItem(fI)==="1"}catch{return!1}}let ar={version:0,listBusy:!1,listError:"",filter:pSe(),collapsed:gSe(),selected:new Set,connections:new Map,dialog:null,namesHidden:Wq(),usageBusy:!1,usageInflight:new Set,usageTasks:new Map,usageStarting:new Set,groupTotalFiltered:hI(),groupSort:mSe(),sorting:null,sortBusy:!1};const mI=new Set;function Hh(e){return mI.add(e),()=>{mI.delete(e)}}function Sn(){return ar}function Tr(e){ar={...ar,...e,version:ar.version+1},mI.forEach(t=>t())}function eN(){Tr({})}function Wd(){return ft().wbApp?.getState?.()?.accounts}function Ml(){const e=Wd()?.accounts;return Array.isArray(e)?e:[]}function xSe(){const e=Wd()?.hiddenAccounts,t=e?.byProvider,n={};if(t&&typeof t=="object"&&!Array.isArray(t))for(const[l,u]of Object.entries(t)){const d=Number(u);Number.isFinite(d)&&d>0&&(n[l]=d)}const s=new Map;for(const l of Array.isArray(e?.providers)?e.providers:[]){if(!l||typeof l.id!="string"||!l.id)continue;const u=l.reason==="not_installed"||l.reason==="pack_disabled"||l.reason==="provider_disabled"||l.reason==="loading"||l.reason==="load_failed"||l.reason==="load_timeout"?l.reason:"not_loaded";s.set(l.id,{id:l.id,label:typeof l.label=="string"&&l.label?l.label:l.id,count:Number(l.count)||0,reason:u,packId:l.packId,startup:l.startup})}const i=Object.entries(n).map(([l,u])=>{const d=s.get(l);return{id:l,count:u,label:d?.label||ft().wbProviders?.labelOf?.(l)||l,reason:d?.reason||"not_loaded",packId:d?.packId,startup:d?.startup}}).sort((l,u)=>u.count-l.count),o=Number(e?.total);return{total:Number.isFinite(o)&&o>0?o:0,byProvider:n,providers:i}}function _l(e){return Ml().find(t=>t.id===e)||null}function vSe(e,t){const n=uSe(Ml(),i=>zq(i,ar.filter,e,t),e,t,Nu,ar.sorting||Wd()?.sorting);return{groups:n.filter(i=>i.accounts.length>0),allGroups:n}}function Nu(e){const n=ar.sorting?.rules[e]||Wd()?.sorting?.rules[e]||ar.groupSort[e];if(n){const s=n.map(i=>({...i}));return[...s,...Fq(e).filter(i=>!s.some(o=>o.key===i.key)).map(i=>({...i,on:!1}))]}return Fq(e)}function bSe(e){return Object.prototype.hasOwnProperty.call(ar.sorting?.configured||ar.groupSort,e)}function Yq(){return kq(Wd())}function ySe(e,t){return Bq(Ml(),ar.filter,e,t)}function jSe(){return lI(Ml(),ar.sorting||Wd()?.sorting)}function tN(){ft().wbFilterMemory?.save(Vq,{provider:ar.filter.provider,enabled:ar.filter.enabled,limit:ar.filter.limit})}function wSe(e){ar.filter.q!==e&&Tr({filter:{...ar.filter,q:e}})}function kSe(e){const t=e||"all";ar.filter.provider!==t&&(Tr({filter:{...ar.filter,provider:t}}),tN())}function Xq(e,t){const n={...ar.filter,[e]:t};n.enabled==="disabled"&&n.limit!=="all"&&(n.limit="all"),Tr({filter:n}),tN()}function Qq(){return ar.filter.provider!=="all"||ar.filter.enabled!=="all"||ar.filter.limit!=="all"||ar.filter.q.trim()!==""}function pI(){Tr({filter:{provider:"all",enabled:"all",limit:"all",q:""}}),tN()}function SSe(){const e=ar.filter.provider;e!=="all"&&(Yq().some(t=>t.id===e)||(Tr({filter:{...ar.filter,provider:"all"}}),tN()))}function Zq(e){try{localStorage.setItem(Kq,JSON.stringify([...e]))}catch{}}function Jq(e){const t=new Set(ar.collapsed);t.has(e)?t.delete(e):t.add(e),Zq(t),Tr({collapsed:t})}function NSe(e,t){const n=new Set(ar.collapsed);for(const s of e)t?n.add(s):n.delete(s);Zq(n),Tr({collapsed:n})}function CSe(e){return ar.selected.has(e)}function ASe(e,t){const n=new Set(ar.selected);t?n.add(e):n.delete(e),Tr({selected:n})}function e8(e,t){const n=new Set(ar.selected);for(const s of e)t?n.add(s):n.delete(s);Tr({selected:n})}function ESe(){const e=!ar.namesHidden;try{localStorage.setItem(dI,e?"1":"0")}catch{}Tr({namesHidden:e})}function TSe(e){try{localStorage.setItem(dI,e?"1":"0")}catch{}Tr({namesHidden:e})}function OSe(){const e=hI();e!==ar.groupTotalFiltered&&Tr({groupTotalFiltered:e})}function RSe(e){try{localStorage.setItem(fI,e?"1":"0")}catch{}Tr({groupTotalFiltered:e})}function t8(e){return"*".repeat(Math.min(Math.max(e.length,4),12))}const n8="usage_not_configured";function gI(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function Vh(e){const t=Number(e);return Number.isFinite(t)&&t>0&&t<=864e13?t:0}function PSe(e,t){if(!e.error)return{...e,lastUsage:null,lastSuccessAt:Vh(e.lastSuccessAt)||Vh(e.at)};const n=Object.prototype.hasOwnProperty.call(e,"lastUsage"),s=gI(n?e.lastUsage:t?.error?t.lastUsage:t?.usage),i=n?Vh(e.lastSuccessAt):Vh(e.lastSuccessAt)||Vh(t?.lastSuccessAt)||(t?.error?0:Vh(t?.at));return{...e,usage:null,lastUsage:s,lastSuccessAt:s?i:0}}function r8(e,t,n){const s=Math.max(0,n-e);return s<1e4?t("刚刚更新"):s<6e4?t("{n} 秒前更新",{n:Math.floor(s/1e3)}):s<36e5?t("{n} 分钟前更新",{n:Math.floor(s/6e4)}):s<864e5?t("{n} 小时前更新",{n:Math.floor(s/36e5)}):t("{n} 天前更新",{n:Math.floor(s/864e5)})}function ISe(e,t,n,s=Date.now()){if(!e.error||e.code===n8)return null;const i=gI(e.lastUsage)?Vh(e.lastSuccessAt):0,o=i?`${t("更新失败")} · ${r8(i,t,s)}`:t("查询失败"),l=i?n(i):"";return{text:o,detail:[t(e.error),l?t("上次成功查询:{time}",{time:l}):""].filter(Boolean).join(` -`)}}const MSe=n8,uy=new Map,Kh=new Map,_Se=()=>uy,Tg=e=>Kh.get(e);function DSe(e){const t=Kh.get(e);t&&a8({...t,stale:!0})}function Og(e){return e==null?null:typeof e=="string"?{message:e,notConfigured:!1}:e.error?{message:String(e.error),notConfigured:e.code===MSe}:null}function s8(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function a8(e){Kh.set(e.id,e),uy.set(e.id,e.error?{error:e.error,code:e.code,lastUsage:e.lastUsage,lastSuccessAt:e.lastSuccessAt,stale:e.stale,requestId:e.requestId}:e.usage?{...e.usage,stale:e.stale}:void 0)}function LSe(e,t){const n=String(e.id||"");if(!n)return!1;const s=Sn().usageTasks.get(n);if(s&&e.requestId===s.requestId&&s.status==="config_changed")return!1;const i={id:n,usage:s8(e.usage),error:e.error?String(e.error):e.usage?null:a("余额响应为空"),code:typeof e.code=="string"||typeof e.code=="number"?e.code:null,at:Number(e.at)||t,stale:e.stale===!0,requestId:typeof e.requestId=="string"?e.requestId:void 0};Object.prototype.hasOwnProperty.call(e,"lastSuccessAt")&&(i.lastSuccessAt=Number(e.lastSuccessAt)||0),Object.prototype.hasOwnProperty.call(e,"lastUsage")&&(i.lastUsage=s8(e.lastUsage));const o=Kh.get(n);if(o&&Number(o.at)>Number(i.at))return!1;const l=PSe(i,o);return o&&JSON.stringify(o)===JSON.stringify(l)?!1:(a8(l),!0)}function po(e){if(e.isGuest!==!0)return uy.get(e.id)}function $Se(e){const n=Kh.get(e.id)?.lastSuccessAt??0;return Number.isFinite(n)&&n>0&&n<=864e13?n:0}function zSe(e){const t=Og(po(e));if(!t||t.notConfigured)return null;const n=Kh.get(e.id);return n?ISe(n,a,ki):null}function BSe(e){let t=!1;for(const n of uy.keys())e.has(n)||(uy.delete(n),Kh.delete(n),t=!0);return t}const FSe=800;function USe(e,t){switch(e?.status){case"running":return t("查询中…");case"cancelled":return t("已取消查询");case"config_changed":return t("配置已变更,请重新查询");case"failed":return e.error?t(e.error):t("查询失败");case"timeout":return t("查询超时,可重新查询");default:return""}}function nN(e,t=15e3){return new Promise((n,s)=>{const i=setTimeout(()=>s(new Error("等待余额查询响应超时,请重新查询")),t);e.then(o=>{clearTimeout(i),n(o)},o=>{clearTimeout(i),s(o)})})}let bc,xI,vI=!1,dy=null,HSe=0,fy=0;const i8=()=>fy,Cu=new Map,rN=new Map;function VSe(e){bc=e}function o8(){xI||vI||!bc||!Sn().usageInflight.size||(xI=setTimeout(async()=>{xI=void 0,vI=!0;try{await nN(bc(),5e3)}catch{}const e=new Map(Sn().usageTasks);let t=!1;for(const[n,s]of e)s.status==="running"&&Date.now()>s.deadlineAt+15e3&&(e.set(n,{...s,status:"timeout"}),t=!0,ft().workbuddyDesktop?.cancelBalanceQuery?.(n,s.requestId).catch(()=>{}));t&&(fy++,sN(e)),vI=!1,o8()},FSe))}function hy(e,t){const n=rN.get(e);if(n){rN.delete(e);for(const s of n)clearTimeout(s.timer),s.resolve(t)}}function sN(e){const t=Sn().usageTasks;for(const[i,o]of e){const l=t.get(i);if(l&&l.requestId!==o.requestId&&hy(l.requestId,null),o.status!=="running"){const u=Tg(i);hy(o.requestId,u?.requestId===o.requestId?u:null)}}const n=new Set([...e].filter(([,i])=>i.status==="running").map(([i])=>i)),s=!!(dy&&[...dy].some(([i,o])=>{const l=e.get(i);return l?.requestId===o&&l.status==="running"}));Tr({usageTasks:e,usageInflight:n,usageBusy:s}),o8()}function bI(e){if(!Array.isArray(e))return;const t=new Map(Sn().usageTasks);let n=!1;for(const s of e){if(!s?.id||!s.requestId||!Number.isFinite(s.startedAt)||!Number.isFinite(s.deadlineAt))continue;const i=t.get(s.id);if(!(i&&(i.startedAt>s.startedAt||i.requestId===s.requestId&&i.status!=="running"&&s.status==="running"||i.requestId===s.requestId&&i.status==="config_changed"))){if(i?.requestId===s.requestId&&i.status===s.status){if(s.status!=="running"){const o=Tg(s.id);hy(s.requestId,o?.requestId===s.requestId?o:null)}continue}t.set(s.id,s),n=!0}}n&&sN(t)}async function yI(e,t=!0){const n=e||"*";if(Cu.has(n))return null;const s=ft().workbuddyDesktop;if(!s?.startBalanceQuery)throw new Error(a("余额查询接口不可用,请更新网关后重试"));const i=++HSe;Cu.set(n,i),Tr({usageStarting:new Set(Cu.keys())});try{const o=await nN(s.startBalanceQuery(e,t));if(Cu.get(n)!==i)return null;if(!Array.isArray(o?.queries)||e&&!o.queries.some(l=>l.id===e))throw new Error(a("余额查询接口返回异常"));return fy++,e||(dy=new Map(o.queries.map(l=>[l.id,l.requestId]))),bI(o.queries),e||sN(new Map(Sn().usageTasks)),bc&&bc(),o}finally{Cu.get(n)===i&&Cu.delete(n),Tr({usageStarting:new Set(Cu.keys())})}}function KSe(e){const t=Sn().usageTasks.get(e.id);if(!t||t.requestId!==e.requestId)return Promise.resolve(null);if(t.status!=="running"){const n=Tg(e.id);return n?.requestId===e.requestId?Promise.resolve(n):!["success","failed","timeout"].includes(t.status)||!bc?Promise.resolve(null):bc().then(async()=>{Tg(e.id)?.requestId!==e.requestId&&await bc();const s=Tg(e.id);return Sn().usageTasks.get(e.id)?.requestId===e.requestId&&s?.requestId===e.requestId?s:null})}return new Promise(n=>{const s=Math.max(1e3,Math.min(195e3,e.deadlineAt-Date.now()+15e3)),i=setTimeout(()=>hy(e.requestId,null),s);rN.set(e.requestId,[...rN.get(e.requestId)||[],{resolve:n,timer:i}])})}async function l8(e){const t=Sn().usageTasks.get(e);if(!(!t||t.status!=="running"))try{const n=await nN(ft().workbuddyDesktop.cancelBalanceQuery(e,t.requestId));if(Sn().usageTasks.get(e)?.requestId!==t.requestId)return;n.cancelled?(fy++,bI([{...t,status:"cancelled"}])):bc&&bc()}catch(n){Ct(a("取消查询失败:{message}",{message:dn(n)}),"err")}}async function qSe(){dy&&await Promise.all([...dy].map(([e,t])=>Sn().usageTasks.get(e)?.requestId===t?l8(e):Promise.resolve()))}function jI(e){fy++;const t=new Map(Sn().usageTasks);for(const n of e){DSe(n),Cu.delete(n);const s=t.get(n);s&&(hy(s.requestId,null),t.set(n,{...s,status:"config_changed"}),s.status==="running"&&ft().workbuddyDesktop?.cancelBalanceQuery?.(n,s.requestId).catch(()=>{}))}Tr({usageStarting:new Set(Cu.keys())}),sN(t)}let Dl=null,aN=null,wI=0,my=null,Rg=0,c8=!1,iN=null;function u8(e){return e.map(t=>[t.id,t.name||"",t.enabled===!1?0:1,t.protocol||"",t.host||"",t.resolved?.protocol||"",t.resolved?.host||"",t.resolved?.port??"",t.port??"",t.resolveError??"",t.usedBy?.length??0,t.usedByServices?.join(",")??""].join(":")).join("|")}function d8(e){return iN!==null&&u8(e)===iN}function f8(e){iN=u8(e)}const kI=new Set;function GSe(e){return kI.add(e),()=>{kI.delete(e)}}function oN(){kI.forEach(e=>e())}function h8(){return Dl}function WSe(){return my}function YSe(){Dl=null,iN=null}function m8(e){Array.isArray(e)&&(Dl=e,wI+=1,my=null,Rg=0,!d8(e)&&(f8(e),oN()))}async function SI(e={}){if(!e.force&&Dl)return Dl;const t=wI;aN||(aN=(async()=>{try{const o=await ft().workbuddyDesktop?.getProxyPool?.();if(!o||typeof o!="object"||!Array.isArray(o.items))throw new Error(a("代理池响应异常({type})",{type:typeof o}));return{items:o.items}}finally{aN=null}})());const s=(await aN).items,i=wI===t||Dl===null;return my=null,!i&&Dl||(Dl=s,d8(s)||(f8(s),oN())),Dl}function XSe(){if(!(Dl||Date.now(){Rg=0}).catch(e=>{my=e instanceof Error?e.message:String(e),oN()})}}async function QSe(){Rg=0;try{await SI({force:!0})}catch(e){my=e instanceof Error?e.message:String(e),oN()}}let p8=!1;function g8(){if(p8)return;const e=ft().wbApp;if(!e?.getRefreshStatus||!e.subscribeRefresh)return;p8=!0;const t=e.getRefreshStatus,n=()=>{const s=t(),i=Sn();i.listBusy===s.pending&&i.listError===s.error||Tr({listBusy:s.pending,listError:s.error})};e.subscribeRefresh(n),n()}async function x8(e={}){g8();try{const t=ft().wbApp?.refresh;if(!t)throw new Error(a("账号列表刷新不可用,请重新打开页面"));const n=await t();return n&&ft().wbProviders?.refreshCustom?.(),e.feedback&&(n?Ct(a("账号列表已刷新")):Ct(a("刷新账号列表失败:{message}",{message:Sn().listError||a("请求失败")}),"err")),n}catch(t){const n=dn(t);return Tr({listBusy:!1,listError:n}),e.feedback&&Ct(a("刷新账号列表失败:{message}",{message:n}),"err"),!1}}const NI="workbuddy-desktop-accounts-group-sort";let lN=null,CI="",v8=0,b8,y8=0,j8="";function Xo(e){if(!e?.rules||!e.configured||!e.accountOrder||!Array.isArray(e.providerOrder)||e.updatedAtf&&typeof f.on=="boolean"&&(f.key==="credit"&&(f.dir==="soon"||f.dir==="late")||f.key==="balance"&&(f.dir==="high"||f.dir==="low")||f.key==="added"&&(f.dir==="new"||f.dir==="old"))).length!==u.length)){if(!Sn().sorting?.rules[l]){i[l]=u;continue}Xo(await e.saveAccountSorting({provider:l,rules:u,onlyIfUnset:!0}))}const o=Object.keys(i).length===0;return o?localStorage.removeItem(NI):localStorage.setItem(NI,JSON.stringify(i)),o}function w8(){const e=Wd()?.sorting;e&&e!==b8&&!Sn().sortBusy&&(b8=e,Xo(e));const t=JSON.stringify(Sn().sorting?.providerOrder||[]);Sn().sortBusy||!lN&&Sn().sorting&&CI!==t&&Date.now()>=v8&&(CI=t,lN=ZSe().then(n=>{n||(lN=null)}).catch(n=>{lN=null,CI="",v8=Date.now()+6e4,Ct(a("排序设置迁移失败:{message}",{message:dn(n)}),"err")}))}async function JSe(){const e=ft().workbuddyDesktop;if(!(!e?.getAccountSorting||Sn().sortBusy))try{Xo(await e.getAccountSorting())}catch(t){Ct(a("读取消耗排序失败:{message}",{message:dn(t)}),"err")}}async function AI(e,t){if(!e||Sn().sortBusy)return;const n=ft().workbuddyDesktop;if(!n?.saveAccountSorting){Ct(a("账号排序接口不可用,请确认网关与界面已更新"),"err");return}const s=Sn().sorting?.balanceSortStates!==void 0;if(!s&&t?.some(o=>o.key==="balance"&&o.on)){Ct(a("当前网关不支持余额排序,请先更新网关"),"err");return}const i=s?t:t?.filter(o=>o.key!=="balance")??null;Tr({sortBusy:!0});try{const o=await n.saveAccountSorting({provider:e,rules:i});if(!o?.rules||!o.accountOrder||!Array.isArray(o.providerOrder))throw new Error(a("保存响应不完整,请刷新当前配置确认结果"));Xo(o),window.dispatchEvent(new CustomEvent("wb:account-sorting",{detail:o}));try{await ft().wbApp?.refresh?.()}catch(l){Ct(a("排序已保存,但列表刷新失败:{message}",{message:dn(l)}),"err")}}catch(o){Ct(a("排序未保存:{message}",{message:dn(o)}),"err")}finally{Tr({sortBusy:!1})}}function qh(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function Yd(e,t){if(e===t)return!0;if(Array.isArray(e)&&Array.isArray(t))return e.length===t.length&&e.every((i,o)=>Yd(i,t[o]));const n=qh(e),s=qh(t);return!!(n&&s&&Object.keys(n).length===Object.keys(s).length&&Object.entries(n).every(([i,o])=>Object.hasOwn(s,i)&&Yd(o,s[i])))}function k8(e){return e?{reset:e.reset||"fixed",seconds:e.seconds||0,startsAt:e.startsAt||0,endsAt:e.endsAt||0,utcOffsetMinutes:e.utcOffsetMinutes??null}:null}function eNe(e){return e?{id:e.id,label:e.label,provider:e.provider||"",channel:e.channel||"",planId:e.planId||"",planName:e.planName||"",models:e.models||[],unit:e.unit||"",remaining:null,total:null,used:null,remainingPercent:null,startsAt:e.startsAt||0,endsAt:e.endsAt||0,resetsAt:0,window:k8(e.window),unlimited:e.unlimited===!0,localEstimate:e.localEstimate===!0,localOnly:e.localOnly===!0}:null}function Pg(e){return e.map(t=>({enabled:t.enabled!==!1,action:t.action||"skip",target:t.target||"models",conditions:t.conditions.map((n,s)=>({join:s===0?"or":n.join||"or",sourceId:n.sourceId.trim(),source:eNe(n.source),models:[...new Set(n.models.map(i=>i.trim()).filter(Boolean))].sort(),metric:n.metric,comparison:n.comparison,threshold:n.threshold,window:k8(n.window)}))}))}function cN(e,t){return Object.entries(t).every(([n,s])=>{if(n==="proxy"){const i=e.proxy?.config||e.proxy;if(s===null)return!i||i.source==="direct";const o=qh(s),l=qh(i);return!!(o&&l&&Object.entries(o).every(([u,d])=>Yd(d,l[u])))}if(n==="maxConcurrent"){const i=Number(s),o=e.provider==="codearts"?i===0?3:Math.min(i,64):i;return e.maxConcurrent===o}if(n==="limiterGroups")return Array.isArray(s)&&Array.isArray(e.limiterGroups)&&Yd(Pg(e.limiterGroups),Pg(s));if(n==="balanceToken")return e.hasBalanceToken===(s!==null&&s!=="");if(n==="apiKey")return e.hasApiKey===(s!==null&&s!=="");if(n==="baseUrl"){const i=typeof s=="string"?s.trim().replace(/\/+$/,""):"";return i?String(e.baseUrl||"").replace(/\/+$/,"")===i:!e.baseUrl}if(n==="balanceQuery"){const i=qh(s),o=qh(e.balanceQuery);return!!(i&&o&&Object.entries(i).every(([l,u])=>{const f={accessToken:"hasAccessToken",password:"hasPassword",token:"hasToken"}[l];return f?o[f]===(u!==null&&u!==""):Yd(o[l],u)}))}return Yd(e[n],s)})}async function Gh(e,t){const n=ft().workbuddyDesktop;if(!n?.updateAccount)throw new Error(a("账号更新接口不可用,请重新打开页面"));const s=ft().wbApp?.getState?.()?.accounts?.accounts?.find(u=>u.id===e),i=await n.updateAccount(e,t);i?.changes?.length&&["proxy","baseUrl","balanceToken","apiKey","noAuth","balanceQuery","zcodePlan","userAgent"].some(u=>{if(!Object.prototype.hasOwnProperty.call(t,u))return!1;if(u==="balanceQuery"&&s){const d=qh(t.balanceQuery);return!!(d&&["accessToken","password","token"].some(m=>Object.prototype.hasOwnProperty.call(d,m))||!cN(s,{balanceQuery:t.balanceQuery}))}return s&&!["balanceToken","apiKey"].includes(u)?!cN(s,{[u]:t[u]}):!0})&&jI([e]);const l=i?.account;if(!l||l.id!==e||s&&l.provider!==s.provider||!cN(l,t))throw new Error(a("账号更新结果未确认,请刷新后核对设置"));return l}function tNe(e){switch(e.action){case"enable":return{enabled:!0};case"disable":return{enabled:!1};case"proxy":return{proxy:e.proxy};case"concurrency":return{maxConcurrent:e.maxConcurrent};case"usageQuery":return{usageQuery:e.usageQuery};default:return{}}}function EI(e,t){if(!e||!Array.isArray(t.action==="remove"?e.removed:e.ok))throw new Error(a("批量操作未返回结果,请刷新后确认状态"));const n=t.action==="remove"?e.removed||[]:e.ok||[],s=new Set(t.ids),i=new Set;if([...n,...e.failed||[],...e.skipped||[]].some(d=>!d.id||!s.has(d.id)||i.has(d.id)?!0:(i.add(d.id),!1))||i.size!==s.size)throw new Error(a("批量操作结果不完整,请刷新后核对所选账号"));const l=e.list?.accounts;if(!Array.isArray(l))throw new Error(a("批量操作结果不完整,请刷新后核对所选账号"));const u=tNe(t);if(n.some(d=>{const f=l.find(g=>g.id===d.id);if(t.action==="remove")return!!f;if(!f||!cN(f,u))return!0;if(t.action!=="limiters")return!1;const m=f.limiterGroups;if(!Array.isArray(m))return!0;switch(t.limiterMode){case"append":return Pg(t.limiterGroups||[]).some(g=>!Pg(m).some(v=>Yd(v,g)));case"replace":return!Yd(Pg(m),Pg(t.limiterGroups||[]));case"enable":return m.some(g=>g.enabled!==!0);case"disable":return m.some(g=>g.enabled!==!1);case"clear":return m.length!==0;default:return!0}}))throw new Error(a("批量操作结果未确认,请刷新后核对设置"));if(t.action==="proxy"||t.action==="remove"){const d=t.action==="remove"?e.removed||[]:(e.ok||[]).filter(f=>f.changes?.length);jI(d.map(f=>f.id).filter(Boolean))}return e}async function Qo(){const e=ft().wbApp;if(!e?.refresh)throw new Error(a("账号列表刷新接口不可用,请重新打开页面"));if(await e.refresh()!==!0)throw new Error(e.getRefreshStatus?.().error||a("账号列表刷新失败"))}const py=new Map;let S8=0,N8=!1,uN;VSe(Ig);function Wh(e){return e?py.get(e.id)||[]:[]}function nNe(e){const t=Number(e?.tokenAt)||0;if(!t||t===S8)return!1;const n=e?.tokenUsage;if(!n||typeof n!="object")return!1;S8=t;const s=new Map;for(const[o,l]of Object.entries(n)){if(!Array.isArray(l))continue;const u=[];for(const d of l){if(!d||typeof d!="object")continue;const f=Number(d.kind),m=Number(d.windowStart),g=Number(d.used);!Number.isFinite(f)||f<0||!Number.isFinite(m)||m<=0||!Number.isFinite(g)||g<0||u.push({kind:f,windowStart:m,used:g})}s.set(o,u)}const i=s.size!==py.size||[...s].some(([o,l])=>{const u=py.get(o);return!u||u.length!==l.length||l.some((d,f)=>d.used!==u[f]?.used||d.windowStart!==u[f]?.windowStart)});py.clear();for(const[o,l]of s)py.set(o,l);return i}function rNe(){return Ml().filter(e=>Si(e)&&e.available!==!1)}function C8(e){const t=Array.isArray(e?.results)?e.results:[],n=Number(e?.at)||Date.now();let s=0;for(const i of t)i&&LSe(i,n)&&(s++,i.code==="refresh_token_expired"&&ft().wbApp?.refresh?.());return s&&(eN(),ft().wbApp?.renderTopbarStatus?.()),s}function sNe(e){if(!sI(e)||e.needsRelogin)return!1;const t=po(e);return!t||typeof t!="object"||Array.isArray(t)||Og(t)?!1:!Array.isArray(t.credits)}async function aNe(){if(!N8){N8=!0;for(const e of Ml().filter(sNe))try{await TI(e.id,!1)}catch{}}}function Ig(){return uN||(uN=iNe().finally(()=>{uN=void 0})),uN}async function iNe(){try{const e=i8(),t=await nN(Promise.resolve(ft().workbuddyDesktop?.getBalancesSnapshot?.()),5e3);if(e!==i8())return!1;const n=Pke(t),s=!Sn().sortBusy&&Xo(t?.sorting),i=nNe(t)||n||s;i&&(eN(),ft().wbApp?.renderTopbarStatus?.());const o=C8(t);return bI(t?.queries),o?(aNe(),!0):i}catch{return!1}}async function TI(e,t=!0){const n=await yI(e||void 0,t);if(!n)return{results:[]};const s=await Promise.all(n.queries.map(KSe));return JSe(),{results:s.filter(i=>i!==null)}}async function A8(){if(!Sn().usageStarting.has("*")){if(!rNe().length){Ct(a("暂无可查询余额的账号"),"err");return}try{await yI(void 0,!0)}catch(e){Ct(a("余额查询失败:{message}",{message:dn(e)}),"err")}}}async function oNe(e){try{if(!(await TI(e)).results.length)return;const n=_Se().get(e),s=Og(n),i=aq(n,a);s?.notConfigured?Ct(s.message,"ok"):s?Ct(a("余额查询失败:{message}",{message:s.message}),"err"):i?Ct(i.detail,"ok"):Ct(a("✅ 已更新余额"))}catch(t){Ct(a("余额查询失败:{message}",{message:dn(t)}),"err")}}async function gy(e){const t=e?_l(e):null;if(!(e&&(!t||!Si(t)||t.needsRelogin)))try{await yI(e,!1)}catch{}}function Mg(e){if(!_l(e)){Ct(a("账号不存在,请刷新后重试"),"err");return}Tr({dialog:{kind:"settings",id:e}})}function xy(){Tr({dialog:null})}function OI(e,t="enable"){const n=(Array.isArray(e)?e:[]).filter(s=>_l(s));if(!n.length){Ct(a("请先勾选要操作的账号"),"err");return}Tr({dialog:{kind:"batch",ids:n,action:t}})}function E8(e){e&&Tr({dialog:{kind:"group",provider:e}})}function lNe(e){let t=BSe(e);const n=new Map(Sn().connections);for(const o of[...n.keys()])e.has(o)||(n.delete(o),t=!0);const s=new Set(Sn().usageInflight);for(const o of[...s])e.has(o)||(s.delete(o),t=!0);const i=new Set(Sn().selected);for(const o of[...i])e.has(o)||(i.delete(o),t=!0);t&&Tr({connections:n,usageInflight:s,selected:i})}const cNe=2e3;function T8(e){return Sn().connections.get(e)||0}async function O8(){try{const e=await ft().workbuddyDesktop?.getAccountConnections?.(),t=e?.counts&&typeof e.counts=="object"?e.counts:{},n=new Map;for(const[s,i]of Object.entries(t)){const o=Number(i)||0;o>0&&n.set(s,o)}return uNe(n,Sn().connections)||Tr({connections:n}),!0}catch{return!1}}function uNe(e,t){if(e.size!==t.size)return!1;for(const[n,s]of e)if(t.get(n)!==s)return!1;return!0}let R8=null;function dNe(){R8||(R8=setInterval(()=>{document.hidden||ft().wbApp?.currentPage!=="accounts"||O8()},cNe))}async function P8(e,t){try{await Gh(e,{enabled:t}),Ct(a(t?"✅ 已启用":"✅ 已禁用"));try{await Qo()}catch(n){Ct(a("账号已保存,但列表刷新失败:{error}",{error:dn(n)}),"err")}}catch(n){Ct(a("操作失败:{message}",{message:dn(n)}),"err"),ft().wbApp?.refresh?.()}}async function I8(e,t){if(!e.length)return!1;try{return await ft().workbuddyDesktop?.reorderAccounts?.(e),Ct(t?a("✅ 已保存:{note}",{note:t}):a("✅ 顺序已保存")),await ft().wbApp?.refresh?.(),!0}catch(n){return Ct(a("顺序未保存:{message}",{message:dn(n)}),"err"),ft().wbApp?.refresh?.(),!1}}async function M8(e,t){if(e.length)try{const n=ft().workbuddyDesktop;if(!n?.batchAccounts)throw new Error(a("批量操作接口不可用,请重新打开页面"));const s={action:t?"enable":"disable",ids:e},i=EI(await n.batchAccounts(s),s),o=i.ok?.length||0,l=i.ok?.filter(d=>d.changes?.length).length||0,u=i.failed?.length||0;u||i.skipped?.length?Ct(a("{verb}完成:成功 {ok} 个,未变更 {unchanged} 个,跳过 {skip} 个,失败 {fail} 个",{verb:a(t?"启用":"禁用"),ok:l,unchanged:o-l,skip:i.skipped?.length||0,fail:u}),u?"err":"ok"):Ct(t?a("✅ 已启用 {n} 个账号",{n:o}):a("✅ 已禁用 {n} 个账号",{n:o}));try{await Qo()}catch(d){Ct(a("批量操作已保存,但列表刷新失败:{error}",{error:dn(d)}),"err")}}catch(n){Ct(a("操作失败:{message}",{message:dn(n)}),"err"),ft().wbApp?.refresh?.()}}async function fNe(e,t){try{await ft().workbuddyDesktop?.clearRateLimits?.(e,t||null),Ct(t?a("✅ 已清除 {model} 的限流标记",{model:t}):a("✅ 已清除该账号全部限流标记")),await ft().wbApp?.refresh?.()}catch(n){Ct(a("清除失败:{message}",{message:dn(n)}),"err")}}async function hNe(e,t,n){if(typeof t!="string")return;if(t===_8){Mg(e);return}if(t===dN||t===n)return;const s=t.startsWith(vc)?t.slice(vc.length).trim():"";if(!(t!==""&&!s)){if(s){const i=(h8()||[]).find(o=>o.id===s);if(i&&i.enabled===!1){Ct(a("「{name}」已在「网络代理」页禁用,请先启用它或换一条",{name:i.name||s}),"err");return}}try{await Gh(e,{proxy:s?{source:"pool",proxyId:s}:null}),Ct(`✅ ${a("代理已更新")}`)}catch(i){Ct(a("保存失败:{message}",{message:dn(i)}),"err")}finally{try{await Qo()}catch(i){Ct(a("刷新账号列表失败:{message}",{message:dn(i)}),"err")}}}}const dN="__proxy_custom__",_8="__proxy_custom_edit__";function mNe(e,t,n=1){return{seat:t.get(e.id)||{position:1,total:1},rank:n,picked:CSe(e.id),usageEntry:po(e),connections:T8(e.id)}}const pNe={DEFAULT_PROVIDER_ID:QP,RACCOON_PROVIDER_ID:zke,providerOf:tn,providerFeatures:Ga,providerSummaries:kq,identifierOf:QS,tokenExpiryOf:Nq,supportsUsage:Si,isDesktopAccount:oy,supportsChat:Oq,byPriorityOrder:ZS,typeLabel:rSe,isEnabled:Ni,isRateLimited:ly,isLimited:e=>cy(e,e?po(e):void 0,Wh(e)),accountEdition:Rq,matchEnabled:iI,matchLimit:$q,visibleAccounts:oSe,filterCounts:Bq,positionMap:lI,activeLimits:oI,editionSuffix:dSe,formatResetText:uI};function gNe(){g8(),window.wbAccountsView={render:()=>{w8(),eN()},refreshList:x8,refreshCaches:lNe,invalidateUsageTasks:jI,syncConnections:O8,refreshProxyPool:QSe,applyBalances:C8,syncBalancesSnapshot:Ig,queryUsageFor:TI,queryAllUsage:A8,refreshUsageAfterCheckin:gy,supportsUsage:Si,isDesktopAccount:oy,isEnabled:Ni,isRateLimited:ly},window.wbAccountsModel=pNe,window.wbAccountPanel={open:Mg,close:xy,openBatch:OI,closeBatch:xy,syncAddProvider:()=>ft().wbAccountAddForms?.syncAddProvider?.(),invalidate:()=>{YSe()}}}async function xNe(e,t){const n=ft().workbuddyDesktop;if(!n?.refreshAccountToken)throw new Error(a("Token 刷新接口不可用,请重新打开页面"));const s=[...new Set(e)],i=[],o=[],l=[];for(const[u,d]of s.entries()){const f=_l(d),m=Ci(f)||d;t({completed:u,total:s.length,name:m});try{if(!f)throw new Error(a("账号不存在,请刷新后重试"));const g=qP(f);if(g)l.push({id:d,name:m,reason:g});else{const v=await n.refreshAccountToken(d),b=v?.list?.accounts?.find(y=>y.id===d);if(v?.refreshedId!==d||!b||b.needsRelogin===!0||tn(b)!==tn(f))throw new Error(a("Token 刷新结果未确认,请刷新后核对账号状态"));i.push({id:d,name:m})}}catch(g){o.push({id:d,error:dn(g)})}t({completed:u+1,total:s.length,name:m})}return{ok:i,failed:o,skipped:l}}const D8=[{value:"fixed",label:()=>a("固定周期")},{value:"rolling",label:()=>a("滚动窗口")},{value:"daily",label:()=>a("自然日")},{value:"weekly",label:()=>a("自然周")},{value:"monthly",label:()=>a("自然月")},{value:"total",label:()=>a("生效至到期累计(不自动回满)")}];function vNe(){return{join:"or",sourceId:"local",models:[],metric:"tokens",comparison:"gte",threshold:5e5,window:{reset:"daily",utcOffsetMinutes:null}}}function L8(e){if(!e||!Number.isFinite(e))return"";const t=new Date(e);return new Date(e-t.getTimezoneOffset()*6e4).toISOString().slice(0,16)}function $8(e){const t=e.metric==="tokens"&&e.threshold%1e8===0?"yi":e.metric==="tokens"&&e.threshold%1e4===0?"wan":"unit";return{condition:{...structuredClone(e),window:e.window||e.source?.window,sourceId:e.sourceId||(e.metric==="tokens"||e.metric==="requests"?"local":"account")},unit:t,threshold:String(e.threshold/(t==="yi"?1e8:t==="wan"?1e4:1)),period:String(((e.window||e.source?.window)?.seconds||3600)/3600),anchor:L8((e.window||e.source?.window)?.startsAt),end:L8((e.window||e.source?.window)?.endsAt)}}function z8(e){if(!e||e.id==="local"||e.localOnly)return["tokens","requests"];if(e.id==="account")return["remaining"];const t=[];return e.unlimited||(e.remaining!==null&&e.remaining!==void 0&&t.push("remaining"),e.used!==null&&e.used!==void 0&&t.push("used"),(e.remainingPercent!==null&&e.remainingPercent!==void 0||(e.total||0)>0)&&t.push("remaining_percent","used_percent")),e.window&&t.push("tokens","requests"),t.length?t:["tokens","requests"]}function bNe({account:e,value:t,allowBalance:n=!0,onSave:s,onClose:i}){const[o,l]=p.useState(()=>$8(t)),[u,d]=p.useState(""),f=o.condition,m=UP(e).filter(M=>(n||M.id==="local")&&(tn(e)!=="codearts"||M.id==="account"||zh(M.unit||"")));f.source&&!m.some(M=>M.id===f.sourceId)&&m.push(f.source);const g=m.find(M=>M.id===f.sourceId),v=m.find(M=>M.id==="account"&&zh(M.unit||"")),b=[...new Map(m.filter(M=>M.planId).map(M=>[M.planId,M.planName||M.planId])).entries()],y=g?.planId||"",k=m.filter(M=>M.id==="account"||(y?M.planId===y:!M.planId)),w=f.metric==="tokens"||f.metric==="requests",S=Number(o.threshold)*(o.unit==="yi"?1e8:o.unit==="wan"?1e4:1),N=f.metric==="tokens"&&o.unit!=="unit"&&o.threshold.trim()&&Number.isSafeInteger(S)&&S>0?S.toLocaleString("en-US"):"",C=v?.unlimited?a("不限"):v?.remaining==null?a("暂无读数"):`${Ln(v.remaining)} ${a("积分")}`,T=g?.models?.length?g.models.map(M=>({value:M,label:M})):Ike(e);for(const M of f.models)T.some(_=>_.value===M)||T.push({value:M,label:M});const P=[...new Set([...z8(g),f.metric])].filter(M=>tn(e)!=="codearts"||M!=="tokens"&&M!=="requests"),O=M=>{d(""),l(_=>({..._,condition:{..._.condition,...M}}))},A=M=>{const _=m.find(D=>D.id===M);if(!_)return;const L=_.localOnly||_.localEstimate?"tokens":z8(_)[0],$=L==="tokens"?_.total||5e5:L.endsWith("percent")?5:1;l($8({...f,sourceId:M,source:dq(_),models:_.models?.length===1?_.models.slice():[],metric:L,comparison:L.startsWith("remaining")?"lte":"gte",threshold:$,window:_.window||{reset:"daily",utcOffsetMinutes:null}})),d("")},R=()=>{const M=Number(o.threshold),_=f.metric==="tokens"?Math.round(M*(o.unit==="yi"?1e8:o.unit==="wan"?1e4:1)):M;if(!o.threshold.trim()||!Number.isFinite(_)||_<0){d(a("限制阈值必须是非负有限数字"));return}if(w&&(!Number.isSafeInteger(_)||_<=0)){d(a("本地消耗上限必须是大于 0 的安全整数"));return}if(f.metric.endsWith("percent")&&_>100){d(a("百分比阈值必须在 0~100 之间"));return}let L=f.window;if(w){if(L={...L,reset:L?.reset||"daily"},L.reset==="fixed"||L.reset==="rolling"){const $=Math.round(Number(o.period)*3600);if(!Number.isFinite($)||$<60||$>2678400){d(a("统计窗口必须是 1 分钟~31 天"));return}L.seconds=$}if((L.reset==="total"||L.reset==="fixed")&&(L.startsAt=o.anchor?new Date(o.anchor).getTime():0,L.endsAt=o.end?new Date(o.end).getTime():0,!Number.isFinite(L.startsAt)||!Number.isFinite(L.endsAt)||L.endsAt>0&&L.endsAt<=L.startsAt)){d(a("统计结束时间必须晚于开始时间"));return}}s({...f,threshold:_,window:L,source:g&&g.id!=="account"&&g.id!=="local"?dq(g):null})};return r.jsx(at,{open:!0,onOpenChange:M=>{M||i()},children:r.jsxs(it,{className:"w-[min(680px,calc(100vw-48px))]",showCloseButton:!0,overlayForceRender:!0,children:[r.jsx(ot,{children:r.jsx(st,{children:a("编辑限制条件")})}),r.jsxs(lt,{className:"space-y-3",children:[b.length?r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{children:a("套餐")}),r.jsxs(Pt,{value:y,onValueChange:M=>{const _=m.find(L=>M?L.planId===M:!L.planId);_&&A(_.id)},children:[r.jsx(Mt,{className:"min-w-0 flex-1",children:r.jsx(It,{children:b.find(([M])=>M===y)?.[1]||a("通用额度/本地保护")})}),r.jsxs(_t,{children:[r.jsx(Ze,{value:"",children:a("通用额度/本地保护")}),b.map(([M,_])=>r.jsx(Ze,{value:M,children:_},M))]})]})]}):null,r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{children:a("额度来源")}),r.jsxs(Pt,{value:f.sourceId||"account",onValueChange:M=>{M&&A(M)},children:[r.jsx(Mt,{className:"min-w-0 flex-1",children:r.jsx(It,{children:VP(g,f.sourceId||"account")})}),r.jsx(_t,{children:k.map(M=>r.jsx(Ze,{value:M.id,children:VP(M)},M.id))})]})]}),v?r.jsxs(wP,{className:"space-y-2",children:[r.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[r.jsx("span",{className:"text-xs text-subtle",children:a("总积分")}),r.jsx("span",{className:"text-[13px] font-semibold tabular-nums",children:C}),r.jsx(B,{variant:"outline",size:"sm",className:"ml-auto",disabled:g?.id===v.id&&f.metric==="remaining",onClick:()=>A(v.id),children:a("按总积分设置限制")})]}),r.jsx("p",{className:"detail",children:a("总积分是当前可用积分的汇总,与余额列一致;不重复累加汇总行,不包含 Token、次数或其他单位的额度。")})]}):null,r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{children:a("模型范围")}),r.jsx(xc,{value:f.models,options:T,onValueChange:M=>O({models:M}),placeholder:g?.models?.length?a("该额度中的全部模型"):a("全部模型"),className:"min-w-0 flex-1","aria-label":a("模型范围")})]}),r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{children:a("限制指标")}),r.jsxs(Pt,{value:f.metric,onValueChange:M=>{M&&(O({metric:M,comparison:M.startsWith("remaining")?"lte":"gte"}),l(_=>({..._,threshold:"",unit:"unit"})))},children:[r.jsx(Mt,{className:"min-w-[190px]",children:r.jsx(It,{children:KP(f.metric)})}),r.jsx(_t,{children:P.map(M=>r.jsx(Ze,{value:M,children:KP(M)},M))})]})]}),r.jsxs(Lh,{orientation:"horizontal",className:"field-row",children:[r.jsx("span",{className:"text-[12.5px] text-subtle",children:a("触发条件")}),r.jsxs(Pt,{value:f.comparison,onValueChange:M=>O({comparison:M}),children:[r.jsx(Mt,{className:"w-[92px]","aria-label":a("触发条件"),children:r.jsx(It,{children:f.comparison==="lt"?"<":f.comparison==="lte"?"≤":"≥"})}),r.jsxs(_t,{children:[r.jsx(Ze,{value:"lt",children:"<"}),r.jsx(Ze,{value:"lte",children:"≤"}),r.jsx(Ze,{value:"gte",children:"≥"})]})]}),r.jsx(ze,{type:"number",min:0,className:"max-w-[160px]",value:o.threshold,onChange:M=>l({...o,threshold:M.currentTarget.value}),placeholder:a("阈值"),"aria-label":a("阈值")}),f.metric==="tokens"?r.jsxs(Pt,{value:o.unit,onValueChange:M=>l({...o,unit:M}),children:[r.jsx(Mt,{className:"w-[84px]","aria-label":a("Token 单位"),children:r.jsx(It,{children:o.unit==="yi"?a("亿"):o.unit==="wan"?a("万"):a("个")})}),r.jsxs(_t,{children:[r.jsx(Ze,{value:"yi",children:a("亿")}),r.jsx(Ze,{value:"wan",children:a("万")}),r.jsx(Ze,{value:"unit",children:a("个")})]})]}):r.jsx("span",{className:"detail",children:f.metric.endsWith("percent")?"%":f.metric==="requests"?a("次"):mo(g?.unit||"",a)})]}),N?r.jsx("p",{className:"detail",children:a("实际阈值:{value} Token",{value:N})}):null,w?r.jsxs(r.Fragment,{children:[r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{children:a("统计周期")}),r.jsxs(Pt,{value:f.window?.reset||"daily",onValueChange:M=>O({window:{...f.window,reset:M}}),children:[r.jsx(Mt,{className:"min-w-0 flex-1",children:r.jsx(It,{children:D8.find(M=>M.value===(f.window?.reset||"daily")).label()})}),r.jsx(_t,{children:D8.map(M=>r.jsx(Ze,{value:M.value,children:M.label()},M.value))})]})]}),f.window?.reset==="fixed"||f.window?.reset==="rolling"?r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{children:a("窗口长度")}),r.jsx(ze,{type:"number",min:1/60,max:744,step:"any",value:o.period,className:"max-w-[130px]",onChange:M=>l({...o,period:M.currentTarget.value})}),r.jsx("span",{className:"detail",children:a("小时")})]}):null,f.window?.reset==="total"||f.window?.reset==="fixed"?r.jsxs(r.Fragment,{children:[r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{children:a("累计起点")}),r.jsx(ze,{type:"datetime-local",value:o.anchor,onChange:M=>l({...o,anchor:M.currentTarget.value}),className:"min-w-0 flex-1"})]}),r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{children:a("到期时间")}),r.jsx(ze,{type:"datetime-local",value:o.end,onChange:M=>l({...o,end:M.currentTarget.value}),className:"min-w-0 flex-1"})]})]}):null,["daily","weekly","monthly"].includes(f.window?.reset||"daily")?r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{children:a("重置时区")}),r.jsxs(Pt,{value:f.window?.utcOffsetMinutes===480?"beijing":f.window?.utcOffsetMinutes===0?"utc":"local",onValueChange:M=>O({window:{...f.window,reset:f.window?.reset||"daily",utcOffsetMinutes:M==="beijing"?480:M==="utc"?0:null}}),children:[r.jsx(Mt,{className:"min-w-[190px]",children:r.jsx(It,{children:f.window?.utcOffsetMinutes===480?a("北京时间(UTC+8)"):f.window?.utcOffsetMinutes===0?"UTC":a("服务器本地时区")})}),r.jsxs(_t,{children:[r.jsx(Ze,{value:"local",children:a("服务器本地时区")}),r.jsx(Ze,{value:"beijing",children:a("北京时间(UTC+8)")}),r.jsx(Ze,{value:"utc",children:"UTC"})]})]})]}):null]}):null,r.jsx("p",{className:"detail",children:a(w?"本地统计只包含经过本网关的请求,不等于上游账单;清理请求日志不会清零。套餐选择用于限定保护范围,不会强制上游扣指定套餐。":"按上游额度查询的读数判定;模型共用同一个额度池时,选择模型不会拆分该池余额。")}),w&&T.length>0?r.jsx("p",{className:"detail",children:a("选中多个模型时,每个模型单独累计、单独比较阈值;不合并用量。")}):null,g?.localEstimate?r.jsx("p",{className:"detail text-warning",children:a("上游没有提供此额度的分桶用量,当前使用本地估算保护;在其他客户端产生的消耗不会计入。")}):null,g?.channel&&g.channel!==String(e?.quotaChannel||e?.zcodePlan||"")?r.jsx("p",{className:"detail text-warning",children:a("此额度不属于账号当前使用的通道,切换到对应通道后才参与判定。")}):null,u?r.jsx("p",{className:"detail text-destructive",children:u}):null]}),r.jsxs(xt,{children:[r.jsx(B,{variant:"outline",onClick:i,children:a("取消")}),r.jsx(B,{onClick:R,children:a("保存条件")})]})]})})}function B8({account:e,draft:t,onChange:n,allowBalance:s=!0}){const[i,o]=p.useState(null),[l,u]=p.useState(!1);p.useEffect(()=>{Ig()},[e?.id]);const d=(k,w)=>{n(t.map((S,N)=>N===k?{...S,...w}:S))},f=()=>tn(e)==="codearts"?{join:"or",sourceId:"account",models:[],metric:"remaining",comparison:"lt",threshold:1}:vNe(),m=()=>o({group:-1,condition:-1,value:f()}),g=k=>{if(i){if(i.group<0)n([...t,{enabled:!0,action:"skip",target:"models",conditions:[k]}]);else{const S=t[i.group].conditions.slice();i.condition<0?S.push(k):S[i.condition]=k,d(i.group,{conditions:S})}o(null)}},v=async()=>{if(!(!e||l)){u(!0);try{await gy(e.id),await Ig()}finally{u(!1)}}},b=HP(e),y=e?sy(e,Fh(e)):[];return r.jsxs("div",{className:"space-y-3",children:[r.jsxs("div",{className:"acct-limiter-toolbar flex flex-wrap items-center gap-2",children:[r.jsx(B,{variant:"outline",onClick:m,children:a("+ 添加限制")}),e&&s?r.jsx(B,{variant:"ghost",disabled:l,onClick:()=>{v()},children:a(l?"查询中…":"刷新套餐与额度")}):null]}),r.jsx("p",{className:"detail acct-limiter-lead",children:a("每组共用一个触发动作;第二条条件起可选择「与/或」。与优先于或,下面会显示明确分组。各条件组独立生效。")}),t.length?null:r.jsx("p",{className:"detail acct-limiter-lead",children:a("还没有条件组:账号照常参与转发,不设置额度保护。")}),t.map((k,w)=>{const S=JSON.stringify(k)===JSON.stringify(y[w])?b[w]:void 0;return r.jsxs("div",{className:"acct-limiter-group rounded-lg border border-hairline p-3 space-y-2",children:[r.jsxs("div",{className:"acct-limiter-head flex flex-wrap items-center gap-2",children:[r.jsx(St,{checked:k.enabled,onCheckedChange:N=>d(w,{enabled:N}),"aria-label":a("启用该规则")}),r.jsx("span",{className:"text-[13px] font-medium",children:a("条件组 {n}",{n:w+1})}),S?r.jsx(Ee,{shape:"tag",variant:k.enabled?S.hit?"warning":"success":"secondary",children:k.enabled?S.hit?a("已触发"):a("未触发"):a("已停用")}):null,r.jsx("div",{className:"flex-1"}),r.jsx(B,{variant:"ghost",size:"sm",onClick:()=>n(t.filter((N,C)=>C!==w)),children:a("删除组")})]}),k.conditions.map((N,C)=>r.jsxs("div",{className:"acct-limiter-condition flex flex-wrap items-center gap-2 rounded-md bg-control p-2",children:[C>0?r.jsxs(Pt,{value:N.join,onValueChange:T=>d(w,{conditions:k.conditions.map((P,O)=>O===C?{...P,join:T}:P)}),children:[r.jsx(Mt,{className:"w-[78px]",children:r.jsx(It,{children:N.join==="and"?a("与"):a("或")})}),r.jsxs(_t,{children:[r.jsx(Ze,{value:"and",children:a("与")}),r.jsx(Ze,{value:"or",children:a("或")})]})]}):r.jsx("span",{className:"text-xs text-muted-foreground",children:a("当")}),r.jsxs("div",{className:"min-w-0 flex-1 text-xs",children:[r.jsx("div",{className:"break-words",children:fq(N,e)}),S?r.jsx("div",{className:"text-muted-foreground mt-1",children:a("当前:{value}",{value:Mke(S.conditions[C],N,e)})}):null]}),r.jsx(B,{variant:"ghost",size:"xs",onClick:()=>o({group:w,condition:C,value:N}),children:a("编辑")}),r.jsx(B,{variant:"ghost",size:"xs",disabled:k.conditions.length===1,onClick:()=>d(w,{conditions:k.conditions.filter((T,P)=>P!==C).map((T,P)=>P===0?{...T,join:"or"}:T)}),children:a("删除")})]},C)),r.jsx(B,{variant:"ghost",size:"sm",onClick:()=>o({group:w,condition:-1,value:f()}),children:a("+ 添加条件")}),r.jsxs(Lh,{orientation:"horizontal",className:"field-row acct-limiter-actions",children:[r.jsx(Ae,{children:a("触发动作")}),r.jsxs(Pt,{value:k.action,onValueChange:N=>d(w,{action:N}),children:[r.jsx(Mt,{className:"min-w-[190px]","aria-label":a("触发动作"),children:r.jsx(It,{children:k.action==="disable"?a("禁用整个账号(手动恢复)"):a("跳过(自动恢复)")})}),r.jsxs(_t,{children:[r.jsx(Ze,{value:"skip",children:a("跳过(自动恢复)")}),r.jsx(Ze,{value:"disable",children:a("禁用整个账号(手动恢复)")})]})]}),k.action==="skip"?r.jsxs(Pt,{value:k.target,onValueChange:N=>d(w,{target:N}),children:[r.jsx(Mt,{className:"min-w-[170px]","aria-label":a("模型范围"),children:r.jsx(It,{children:k.target==="account"?a("整个账号"):a("命中条件的模型")})}),r.jsxs(_t,{children:[r.jsx(Ze,{value:"models",children:a("命中条件的模型")}),r.jsx(Ze,{value:"account",children:a("整个账号")})]})]}):null]}),r.jsx("p",{className:"detail break-words acct-limiter-expression",children:Dke(k.conditions,e)})]},w)}),e?null:r.jsx("p",{className:"detail",children:a("跨账号批量配置仅支持通用条件;套餐实例不能直接复制到其他账号。")}),i?r.jsx(bNe,{account:e,value:i.value,allowBalance:s,onSave:g,onClose:()=>o(null)},`${i.group}:${i.condition}`):null]})}function yNe(e,t){const n=sy(e,Fh(e));return JSON.stringify(t)===JSON.stringify(n)?null:{patch:{limiterGroups:t}}}function F8(e){return structuredClone(sy(e,Fh(e)))}const jNe={seconds:1,minutes:60,hours:3600};function wNe(e){return e>0&&e%3600===0?{value:String(e/3600),unit:"hours"}:e>0&&e%60===0?{value:String(e/60),unit:"minutes"}:e>0?{value:String(e),unit:"seconds"}:{value:"5",unit:"minutes"}}function RI(e){const{enabled:t,interval:n,retries:s,timeoutSeconds:i}=jq(e),o=wNe(t?n:0);return{enabled:t,intervalInput:o.value,unit:o.unit,retriesInput:String(s),timeoutInput:String(i||XS)}}function U8(e){const t=Number(e.retriesInput);if(!e.retriesInput.trim()||!Number.isInteger(t)||t<0||t>YS)return{error:a("失败重试次数必须是 0~{max} 的整数",{max:YS})};const n=Number(e.timeoutInput??XS);if(!Number.isInteger(n)||n<15||n>XP)return{error:a("整轮查询时限必须是 15~180 秒的整数")};if(!e.enabled)return{value:{enabled:!1,interval:0,retries:t,timeoutSeconds:n}};const s=Number(e.intervalInput),i=Math.round(s*jNe[e.unit]);return!Number.isFinite(s)||s<=0?{error:a("请填写查询间隔")}:iyq?{error:a("查询间隔必须是 {min} 秒 ~ 24 小时",{min:YP})}:{value:{enabled:!0,interval:i,retries:t,timeoutSeconds:n}}}function kNe(e,t){const n=U8(t);if("error"in n)return n;const{enabled:s,interval:i,retries:o,timeoutSeconds:l}=n.value,u=jq(e);return s===u.enabled&&(!s||i===u.interval)&&o===u.retries&&l===u.timeoutSeconds?null:{patch:{usageQuery:{enabled:s,interval:s?i:u.interval,retries:o,timeoutSeconds:l}}}}function H8({draft:e,onChange:t,idPrefix:n="account-usage"}){const s=i=>t({...e,...i});return r.jsxs(r.Fragment,{children:[r.jsx(ct,{orientation:"horizontal",className:"field-row mt-2.5 acct-usage-toggle",children:r.jsxs(ut,{className:"inline-flex cursor-pointer items-center gap-2.5 font-normal",children:[r.jsx(St,{checked:e.enabled,onCheckedChange:i=>s({enabled:i===!0}),"aria-label":a("自动查询余额")}),r.jsx("span",{className:"text-xs text-subtle",children:a("自动查询余额(按下面的间隔自动刷新余额列的读数)")})]})}),e.enabled?r.jsxs(Lh,{orientation:"horizontal",className:"field-row mt-2.5 acct-usage-interval",children:[r.jsxs(ct,{className:"contents",children:[r.jsx(ut,{htmlFor:`${n}-interval`,children:a("查询间隔")}),r.jsx(ze,{id:`${n}-interval`,type:"number",min:1,step:1,className:"max-w-[110px]",value:e.intervalInput,onChange:i=>s({intervalInput:i.currentTarget.value})})]}),r.jsxs(Pt,{value:e.unit,onValueChange:i=>s({unit:i}),children:[r.jsx(Mt,{className:"w-[92px]","aria-label":a("间隔单位"),children:r.jsx(It,{children:e.unit==="hours"?a("小时"):e.unit==="minutes"?a("分钟"):a("秒")})}),r.jsxs(_t,{children:[r.jsx(Ze,{value:"seconds",children:a("秒")}),r.jsx(Ze,{value:"minutes",children:a("分钟")}),r.jsx(Ze,{value:"hours",children:a("小时")})]})]}),r.jsx("span",{className:"detail",children:a("30 秒 ~ 24 小时;手动查询会顺延下一轮")})]}):null,r.jsxs(ct,{orientation:"horizontal",className:"field-row mt-2.5 acct-usage-interval",children:[r.jsx(ut,{htmlFor:`${n}-timeout`,children:a("整轮查询时限")}),r.jsx(ze,{id:`${n}-timeout`,type:"number",min:15,max:XP,step:1,className:"max-w-[110px]",value:e.timeoutInput??String(XS),onChange:i=>s({timeoutInput:i.currentTarget.value})}),r.jsx("span",{className:"detail",children:a("秒;默认 60 秒,包含重试等待,多步骤查询可适当延长。")})]}),r.jsxs(ct,{orientation:"horizontal",className:"field-row mt-2.5 acct-usage-interval",children:[r.jsx(ut,{htmlFor:`${n}-retries`,children:a("失败重试次数")}),r.jsx(ze,{id:`${n}-retries`,type:"number",min:0,max:YS,step:1,className:"max-w-[110px]",value:e.retriesInput,"aria-describedby":`${n}-retries-hint`,onChange:i=>s({retriesInput:i.currentTarget.value})}),r.jsx("span",{id:`${n}-retries-hint`,className:"detail",children:a("只重试临时故障;次数与整轮时间上限任一用尽即停止,凭证错误不重试。")})]})]})}const Xd="max-w-full flex-wrap [&_[data-slot=segmented-item]]:h-7 [&_[data-slot=segmented-item]]:px-3 [&_[data-slot=segmented-item]]:text-[12.5px]";function SNe(e,t){const n=e&&typeof e=="object"?e.proxy:void 0;if(n==null)throw new Error(t("网关电脑未检测到可导入的系统代理;请手动填写,或选择已保存的代理。"));if(typeof n!="object"||Array.isArray(n))throw new Error(t("系统代理信息无效,请手动填写。"));const s=n;if(s.source!=="custom"||!["http","socks5"].includes(String(s.protocol))||typeof s.host!="string"||!s.host.trim()||typeof s.port!="number"||!Number.isInteger(s.port)||s.port<1||s.port>65535||typeof s.username!="string"||typeof s.password!="string")throw new Error(t("系统代理信息无效,请手动填写。"));return{source:"custom",protocol:s.protocol,host:s.host,port:s.port,username:s.username,password:s.password}}const NNe=new Set(["qwenwork-intl","qwenwork-enterprise","claude-subscription","codex-subscription","chatgpt-subscription","copilot-subscription","gemini-subscription"]);function PI(e){return NNe.has(e)}function CNe(e){return PI(e)}function fN(e){if(!e||typeof e!="object"||Array.isArray(e))return;const t=e,n=typeof t.warning=="string"?t.warning.trim():"",s=typeof t.importNotice=="string"?t.importNotice.trim():"";if(!(!s&&!n))return{text:s||n,warning:!!n}}function Wt(){return window}function cr(e,t){Wt().wbApp?.toast?.(e,t)}function II(e,t=0){if(typeof e=="string")return e.trim();if(e instanceof Error)return e.message.trim();if(!e||typeof e!="object"||t>3)return"";const n=e;for(const s of["message","error","msg","reason"]){const i=II(n[s],t+1);if(i)return i}return""}function Oa(e){const t=II(e);return a(t||"未知错误")}function V8(e,t=0){if(e&&typeof e=="object"&&t<4){const s=e;for(const i of["status","statusCode","status_code","httpStatus"]){const o=s[i];if((typeof o=="number"||typeof o=="string")&&Number(o)===501)return!0}if(s.code==="not_implemented"||s.code==="auth_methods_unavailable"||s.error&&s.error!==e&&V8(s.error,t+1))return!0}const n=II(e);return n==="该提供商尚未申报动态登录方式,请使用既有登录入口"||/\b501\b|auth\.methods[^\n]*(?:not implemented|no method|未实现|不支持)/i.test(n)}function go(e){if(PI(e))return;const t=Wt().wbApp?.getState?.()?.accounts?.providers;return(Array.isArray(t)?t:Wt().wbProviders?.all?.()||[]).find(s=>s.id===e)}function ANe(e){return(Wt().wbApp?.getState?.()?.accounts?.accounts||[]).filter(n=>(n?.provider||"workbuddy")===e).length}async function _g(e,t,n){const s=Wt().__TAURI_INTERNALS__;if(!s||typeof s.invoke!="function")throw new Error(a("桌面运行时不可用(Tauri 未初始化)"));const i=await s.invoke("api_request",{request:{method:e,path:t,body:n===void 0?null:n}});if(i&&typeof i=="object"){const o=i;if(o.success===!1)throw i;if(o.success===!0&&Object.hasOwn(o,"data"))return o.data}return i}function Qd(e){return _g("POST","/api/accounts",e)}function Zd(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}function ENe(e){const t=Zd(e);if(!t)return;const n={};for(const s of["id","name","uid","userId","provider"])typeof t[s]=="string"&&(n[s]=t[s]);return n.id||n.uid||n.userId?n:void 0}function hN(e){let t=Zd(e);if(t?.success===!1)throw e;t?.success===!0&&Object.hasOwn(t,"data")&&(t=Zd(t.data));const n=Zd(t?.payload),s=Zd(t?.session)||Zd(n?.session),i=[t,n,s].filter(f=>!!f);if(i.some(f=>f.canceled===!0||f.state==="canceled"||f.status==="canceled"))return{ok:!1,canceled:!0,silent:i.some(f=>f.silent===!0)};for(const f of i){if(f.error||f.ok===!1||f.success===!1||f.state==="failed"||f.status==="failed"||f.type==="error")throw new Error(Oa(f.error||f));if(f.pending===!0||Zd(f.pending)||f.accepted===!0||f.done===!1||f.state==="pending"||f.status==="pending")throw new Error(a("登录尚未完成,请继续通过共享登录桥等待结果"))}const o=i.map(f=>ENe(f.account)).find(Boolean),l=i.find(f=>typeof f.accountUid=="string"&&!!f.accountUid||typeof f.accountId=="string"&&!!f.accountId||typeof f.nickname=="string"&&!!f.nickname);if(!o&&!l&&i.some(f=>(f.flow||f.authUrl)&&f.done!==!0))throw new Error(a("登录尚未完成,请继续通过共享登录桥等待结果"));if(!o&&!l&&t?.ok!==!0)throw new Error(s&&!Object.keys(s).length?a("登录桥返回了空会话,无法确认账号已添加"):a("登录桥未返回已完成的账号或会话,请重试"));const u=f=>{const m=i.map(g=>g[f]).find(g=>typeof g=="string"&&g.trim());return typeof m=="string"?m:void 0},d=i.map(f=>f.proxySaved).find(f=>typeof f=="boolean");return{ok:!0,canceled:!1,account:o,warning:u("warning"),instructions:u("instructions"),...typeof d=="boolean"?{proxySaved:d}:{},session:l?Object.fromEntries(["accountUid","accountId","nickname","edition","provider"].filter(f=>typeof l[f]=="string").map(f=>[f,l[f]])):void 0}}async function K8(e,t){if(e.canceled||e.proxySaved===!0)return e;const n=e.account?.id||e.session?.accountUid||e.session?.accountId;let s=a("旧网关未确认代理同次保存,已使用兼容接口保存;请在账号设置中确认代理选择。");try{if(typeof n!="string"||!n)throw new Error("Missing account ID");await _g("PATCH",`/api/accounts/${encodeURIComponent(n)}`,{proxy:t??{source:"direct"}})}catch{s=a("账号已添加,但代理选择未确认保存;请在账号设置中重新检查。")}return{...e,warning:[e.warning,s].filter(Boolean).join(` -`)}}async function mN(e,t="cn",n="embedded",s,i){const o=i!==void 0&&i.methodIndex!==void 0;if(PI(e)||o&&!go(e))throw new Error(a("该提供商已不在运行时目录中,请返回列表重新选择"));try{const l=Wt().workbuddyDesktop;let u;if(o&&l?.platform!=="web"){const f=Wt().__TAURI_INTERNALS__;if(!f?.invoke)throw new Error(a("桌面运行时不可用(Tauri 未初始化)"));u=await f.invoke("start_login",{provider:e,edition:t,mode:n,socialRestore:s===!0,options:i})}else{if(!l?.startLogin)throw new Error(a("共享登录桥不可用,请重新打开面板"));u=await l.startLogin(t,n,e,s,i)}const d=hN(u);if(o&&!d.canceled){const f=d.account?.id||d.session?.accountUid||d.session?.accountId,m=d.account?.provider||d.session?.provider;if(!f||m&&m!==e)throw new Error(a("登录桥返回了空会话,无法确认账号已添加"))}return i&&Object.hasOwn(i,"proxy")&&!d.canceled?await K8(d,i.proxy):d}catch(l){const u=Zd(l);if(u?.canceled===!0)return{ok:!1,canceled:!0,silent:u.silent===!0};throw new Error(Oa(l))}}function Jd(e){return e?.name||e?.uid||e?.userId||""}function MI(){Wt().wbAddAccountModal?.close?.()}async function Ll(e,t,n){MI(),await Wt().wbApp?.refresh?.();const s=a("✅ {label}账号已添加{name}",{label:t,name:e?`:${e}`:""}),i=fN(n);cr(i?`${s} -${a(i.text)}`:s,i?.warning?"warn":"ok")}const Dg=new Map;function xo(e){return{defaultValue:Dg.get(e)??"",onChange:t=>{const n=t.currentTarget.value;n?Dg.set(e,n):Dg.delete(e)}}}function ef(e,t){t?Dg.set(e,t):Dg.delete(e);const n=document.getElementById(e);(n instanceof HTMLInputElement||n instanceof HTMLTextAreaElement)&&(n.value=t)}function Zo(e){const t=document.getElementById(e);return t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement?t.value.trim():(Dg.get(e)??"").trim()}function _I(e){for(const t of e)ef(t,"")}const Yh={edition:"cn",loginMode:"embedded",socialRestore:!1},q8=8;function DI(e){return e?.success?e.status===void 0||e.status===""||Number(e.status)>=200&&Number(e.status)<300:!1}function LI(e){return e?.error||(e?.status?`HTTP ${String(e.status)}`:a("连接失败"))}function Lg(e){const t=e?.config?.source||e?.source,n=e?.config||null,s=t==="rotate";return{mode:t==="pool"?"pool":s?"rotate":t==="clash"?"clash":t==="custom"?"custom":t==="subscription"?"retired":"none",listenerUid:t==="clash"?String(n?.listenerUid||""):"",proxyId:t==="pool"?String(n?.proxyId||""):"",rotateAll:s?n?.all!==!1:!0,rotateIds:s&&Array.isArray(n?.proxyIds)?n.proxyIds.map(String):[],protocol:n?.protocol==="socks5"?"socks5":"http",host:n?.host||"",port:n?.port===void 0||n?.port===null?"":String(n.port),username:n?.username||"",password:n?.password||"",nonDirect:n?.nonDirect===!0}}function yc(e){if(e.mode==="none")return null;if(e.mode==="retired")throw new Error(a("原代理来源已下线,请选择已保存的代理、自定义地址或直连"));if(e.mode==="clash"){if(!e.listenerUid)throw new Error(a("请先选择 Clash Verge 出口"));return{source:"clash",listenerUid:e.listenerUid}}if(e.mode==="pool"){if(!e.proxyId)throw new Error(a("请先选择已保存的代理"));return{source:"pool",proxyId:e.proxyId}}if(e.mode==="rotate"){if(e.rotateAll)return{source:"rotate",all:!0};if(!e.rotateIds.length)throw new Error(a("轮询至少要选择一条代理(或改选「全部」)"));return{source:"rotate",all:!1,proxyIds:[...e.rotateIds]}}const t=e.host.trim(),n=Number(e.port);if(!t)throw new Error(a("请填写代理主机地址"));if(!Number.isInteger(n)||n<1||n>65535)throw new Error(a("代理端口必须是 1-65535 的整数"));return{source:"custom",protocol:e.protocol==="socks5"?"socks5":"http",host:t,port:n,username:e.username.trim(),password:e.password,nonDirect:e.nonDirect===!0}}function G8(e){return`${e.name||e.uid} :${e.port}${e.profileActive===!1?a("(其他订阅,可能未生效)"):""}${e.enabled===!1?a("(已在 Clash 中禁用)"):""}`}function pN({draft:e,onChange:t,idPrefix:n,allowRotate:s=!1,allowSystemImport:i=!1,onSystemImportBusy:o}){const[l,u]=p.useState(!1),[d,f]=p.useState(!1),[m,g]=p.useState(""),v=p.useRef({draft:e,onChange:t,onSystemImportBusy:o});v.current={draft:e,onChange:t,onSystemImportBusy:o};const b=p.useRef(0),y=p.useRef(!1);p.useEffect(()=>()=>{b.current+=1,y.current&&(y.current=!1,v.current.onSystemImportBusy?.(!1))},[]);const[k,w]=p.useState(null),[S,N]=p.useState(null),[C,T]=p.useState(""),[P,O]=p.useState(null),[A,R]=p.useState(""),M=P?.options||[],_=JSON.stringify(e),[L,$]=p.useState(""),D=U=>t({...e,...U}),F=p.useCallback(()=>{R(""),Promise.resolve(ft().workbuddyDesktop?.getProxies?.()).then(U=>{if(!U?.clash||!Array.isArray(U.clash.options))throw new Error(a("代理列表响应异常"));O(U.clash)}).catch(U=>{O({available:!1,options:[]}),R(dn(U))})},[]);p.useEffect(()=>{e.mode==="clash"&&P===null&&F()},[e.mode,P,F]);const V=p.useCallback((U=!1)=>{T(""),SI({force:U}).then(z=>N(z)).catch(z=>{N([]),T(dn(z))})},[]);p.useEffect(()=>{(e.mode==="pool"||e.mode==="rotate")&&S===null&&V()},[e.mode,S,V]);function q(){return e.rotateAll?(S??[]).filter(U=>U.enabled!==!1).map(U=>U.id):[...e.rotateIds]}async function Q(){if(y.current)return;y.current=!0;const U=++b.current,z=JSON.stringify(v.current.draft);f(!0),g(""),v.current.onSystemImportBusy?.(!0);try{const K=SNe(await _g("GET","/api/proxies/system"),a);if(U!==b.current||JSON.stringify(v.current.draft)!==z)return;v.current.onChange({...v.current.draft,mode:"custom",protocol:K.protocol,host:K.host,port:String(K.port),username:K.username,password:K.password,nonDirect:!1})}catch(K){U===b.current&&g(dn(K))}finally{U===b.current&&(y.current=!1,f(!1),v.current.onSystemImportBusy?.(!1))}}async function X(){if(l)return;if($(_),w(null),e.mode==="rotate"){const z=q();if(!z.length){Ct(a("轮询至少要选择一条代理(或改选「全部」)"),"err");return}const K=z.slice(0,q8);u(!0),w(a("正在连接上游…"));let J=0;const ee=[];for(const Y of K){const se=S?.find(re=>re.id===Y)?.name||Y;try{const re=await ft().workbuddyDesktop?.testProxyPoolItem?.(Y);DI(re)?J+=1:ee.push(`${se}(${LI(re)})`)}catch(re){ee.push(`${se}(${dn(re)})`)}}const H=z.length-K.length,G=a("✅ {ok}/{total} 个出口可用",{ok:J,total:K.length})+(H>0?a("(只测了前 {limit} 个,还有 {rest} 个未测)",{limit:q8,rest:H}):"");w(r.jsxs("span",{className:ee.length?"text-destructive":"text-success",children:[G,ee.length?` ${Yo(ee.join(a(";")))}`:""]})),u(!1);return}if(e.mode==="pool"){if(!e.proxyId){Ct(a("请先选择已保存的代理"),"err");return}u(!0),w(a("正在连接上游…"));try{const z=await ft().workbuddyDesktop?.testProxyPoolItem?.(e.proxyId);w(DI(z)?r.jsxs("span",{className:"text-success",children:[a("✅ 出口可用"),z.ip?a(" 出口 IP {ip}",{ip:Yo(z.ip)}):"",z.durationMs!==void 0&&z.durationMs!==""?` ${Yo(String(z.durationMs))}ms`:""]}):r.jsxs("span",{className:"text-destructive",children:["❌ ",Yo(LI(z))]}))}catch(z){w(r.jsxs("span",{className:"text-destructive",children:["❌ ",Yo(dn(z))]}))}finally{u(!1)}return}let U;try{U=yc(e)}catch(z){Ct(dn(z),"err");return}u(!0),w(a("正在连接上游…"));try{const z=await ft().workbuddyDesktop?.testProxy?.({proxy:U});DI(z)?w(r.jsxs("span",{className:"text-success",children:[a("✅ 出口可用"),z.status!==void 0&&z.status!==""?` HTTP ${Yo(String(z.status))}`:"",z.ip?a(" 出口 IP {ip}",{ip:Yo(z.ip)}):"",z.durationMs!==void 0&&z.durationMs!==""?` ${Yo(String(z.durationMs))}ms`:""]})):w(r.jsxs("span",{className:"text-destructive",children:["❌ ",Yo(LI(z))]}))}catch(z){w(r.jsxs("span",{className:"text-destructive",children:["❌ ",Yo(dn(z))]}))}finally{u(!1)}}return r.jsxs("div",{className:"acct-proxy-form flex flex-col",children:[e.mode==="retired"?r.jsx("p",{className:"mb-3 text-xs text-destructive",children:a("原代理来源已下线,请选择已保存的代理、自定义地址或直连")}):null,r.jsx(en,{"aria-label":a("代理方式"),className:Xd,value:e.mode,onValueChange:U=>D({mode:U}),options:[{value:"none",label:a("无代理(直连)")},{value:"pool",label:a("已保存的代理")},...s?[{value:"rotate",label:a("轮询(换 IP)"),title:a("逐请求轮换出口(换 IP):OpenCode Zen 免费档按 IP 限流,单个 IP 的额度用完会对它一律 429")}]:[],...e.mode==="clash"?[{value:"clash",label:"Clash Verge"}]:[],{value:"custom",label:a("自定义")}]}),i?r.jsxs("div",{className:"mt-3 flex flex-col items-start gap-1.5",children:[r.jsx(B,{variant:"outline",size:"sm",disabled:d,onClick:()=>{Q()},children:a(d?"正在读取…":"填入系统代理")}),r.jsx("p",{className:"detail",children:a("读取网关电脑当前的 HTTPS 系统代理,填入自定义地址;后续系统设置变化不会自动同步。")}),m?r.jsx("p",{className:"text-xs text-destructive",role:"alert",children:m}):null]}):null,e.mode==="pool"?r.jsxs("div",{className:"mt-3",children:[r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{htmlFor:`${n}-pool-exit`,children:a("代理")}),r.jsxs(Pt,{value:e.proxyId,disabled:!S?.length,onValueChange:U=>D({proxyId:String(U)}),children:[r.jsx(Mt,{id:`${n}-pool-exit`,className:"min-w-[220px]",children:r.jsx(It,{children:S?.find(U=>U.id===e.proxyId)?Ag(S.find(U=>U.id===e.proxyId)):e.proxyId?a("当前代理不可用,请重新选择"):S===null?a("正在读取…"):S.length?a("请选择代理"):a("还没有保存的代理")})}),r.jsx(_t,{children:(S??[]).map(U=>r.jsx(Ze,{value:U.id,disabled:U.enabled===!1,children:Ag(U)},U.id))})]}),r.jsx(B,{variant:"outline",size:"sm",onClick:()=>V(!0),children:a("重新读取")})]}),r.jsx("div",{className:"detail mt-1.5",children:C?a("读取失败:{error}",{error:C}):S===null?a("正在读取代理列表…"):S.length?a("地址与端口由「网络代理」页管理:那边改一次、测一次,所有引用它的账号一起生效"):a("「网络代理」页还没有出口 —— 去那里添加手动地址或同步 Clash Verge 的端点")})]}):null,e.mode==="rotate"?r.jsxs("div",{className:"mt-3",children:[r.jsxs("div",{className:"flex flex-wrap items-center gap-x-2.5 gap-y-1",children:[r.jsx(jr,{id:`${n}-rotate-all`,checked:e.rotateAll,"aria-label":a("轮询全部代理节点"),onCheckedChange:U=>D({rotateAll:U===!0})}),r.jsx(Ae,{htmlFor:`${n}-rotate-all`,className:"cursor-pointer text-xs text-subtle",children:a("全部代理节点(推荐)")}),r.jsx("span",{className:"detail",children:a("「网络代理」页里每个启用的出口轮流使用;之后新加的出口自动加入")})]}),e.rotateAll?null:r.jsxs(ct,{orientation:"horizontal",className:"field-row mt-2.5",children:[r.jsx(ut,{htmlFor:`${n}-rotate-exits`,children:a("轮询的代理")}),r.jsx(xc,{id:`${n}-rotate-exits`,value:e.rotateIds,onValueChange:U=>D({rotateIds:U.map(String)}),options:(S??[]).map(U=>({value:U.id,label:Ag(U),disabled:U.enabled===!1})),placeholder:a("选择要轮询的代理(可多选)"),"aria-label":a("轮询的代理")}),r.jsx(B,{variant:"outline",size:"sm",onClick:()=>V(!0),children:a("重新读取")})]}),r.jsx("div",{className:"detail mt-1.5",children:C?a("读取失败:{error}",{error:C}):S===null?a("正在读取代理列表…"):S.length?a("每条请求换一个出口(按顺序轮流),上游看到的 IP 因此是变化的;出口的地址与端口由「网络代理」页管理"):a("「网络代理」页还没有出口 —— 去那里添加手动地址或同步 Clash Verge 的端点")})]}):null,e.mode==="clash"?r.jsxs("div",{className:"mt-3",children:[r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{htmlFor:`${n}-clash-exit`,children:a("出口")}),r.jsxs(Pt,{value:e.listenerUid,disabled:!M.length,onValueChange:U=>D({listenerUid:String(U)}),children:[r.jsx(Mt,{id:`${n}-clash-exit`,className:"min-w-[220px]",children:r.jsx(It,{children:M.find(U=>U.uid===e.listenerUid)?G8(M.find(U=>U.uid===e.listenerUid)):e.listenerUid?a("当前代理不可用,请重新选择"):a("请选择出口")})}),r.jsx(_t,{children:M.filter(U=>U.uid).map(U=>r.jsx(Ze,{value:String(U.uid),disabled:U.enabled===!1,children:G8(U)},U.uid))})]}),r.jsx(B,{variant:"outline",size:"sm",onClick:F,children:a("重新读取")})]}),r.jsx("p",{className:"detail mt-1.5",children:A?a("读取失败:{error}",{error:A}):P===null?a("正在读取 Clash Verge 配置…"):P.available===!1?a("不可用:{error}",{error:P.error||a("未检测到 Clash Verge 配置")}):a("读取自 {dir};端口由 Clash Verge 管理,这里实时同步",{dir:P.dir||"Clash Verge"})}),r.jsx("p",{className:"detail mt-1.5",children:a("既有 Clash Verge 直接引用继续可用;也可在「网络代理」页同步端点,再改选「已保存的代理」。")})]}):null,e.mode==="custom"?r.jsxs("div",{className:"mt-3",children:[r.jsxs(Lh,{orientation:"horizontal",className:"field-row",children:[r.jsxs(ct,{className:"contents",children:[r.jsx(ut,{htmlFor:`${n}-protocol`,children:a("协议")}),r.jsxs(Pt,{value:e.protocol,onValueChange:U=>D({protocol:U}),children:[r.jsx(Mt,{id:`${n}-protocol`,className:"min-w-[110px]",children:r.jsx(It,{children:e.protocol==="socks5"?"SOCKS5":"HTTP"})}),r.jsxs(_t,{children:[r.jsx(Ze,{value:"http",children:"HTTP"}),r.jsx(Ze,{value:"socks5",children:"SOCKS5"})]})]})]}),r.jsxs(ct,{className:"contents",children:[r.jsx(ut,{htmlFor:`${n}-host`,className:"ml-2",children:a("主机")}),r.jsx(ze,{id:`${n}-host`,className:"min-w-[140px]",placeholder:"127.0.0.1",value:e.host,onChange:U=>D({host:U.currentTarget.value})})]}),r.jsxs(ct,{className:"contents",children:[r.jsx(ut,{htmlFor:`${n}-port`,children:a("端口")}),r.jsx(ze,{id:`${n}-port`,type:"number",min:1,max:65535,className:"max-w-[110px]",placeholder:"7890",value:e.port,onChange:U=>D({port:U.currentTarget.value})})]})]}),r.jsxs(Lh,{orientation:"horizontal",className:"field-row mt-2.5",children:[r.jsxs(ct,{className:"contents",children:[r.jsx(ut,{htmlFor:`${n}-user`,children:a("用户名")}),r.jsx(ze,{id:`${n}-user`,placeholder:a("可选"),autoComplete:"off",value:e.username,onChange:U=>D({username:U.currentTarget.value})})]}),r.jsxs(ct,{className:"contents",children:[r.jsx(ut,{htmlFor:`${n}-pass`,children:a("密码")}),r.jsx(ze,{id:`${n}-pass`,type:"password",placeholder:a("可选"),autoComplete:"new-password",value:e.password,onChange:U=>D({password:U.currentTarget.value})})]})]}),r.jsxs(Ae,{className:"mt-3 flex cursor-pointer items-center gap-2 text-xs font-normal",children:[r.jsx(jr,{checked:e.nonDirect===!0,onCheckedChange:U=>D({nonDirect:U})}),a("非直连代理")]}),r.jsx("p",{className:"detail mt-1.5",children:a("非直连会先经过网关所在设备的系统代理,再连接到此代理;系统代理不可用时不会改走直连。")})]}):null,r.jsxs(Lh,{orientation:"horizontal",className:"field-row mt-3",children:[r.jsx(B,{variant:"outline",size:"sm",disabled:l,onClick:()=>{X()},children:a(l?"测试中…":"测试出口")}),r.jsx("span",{className:"detail",children:L===_?k:null})]})]})}const $I=[{value:"enable",label:()=>a("启用")},{value:"disable",label:()=>a("禁用")},{value:"refresh",label:()=>a("刷新 Token")},{value:"proxy",label:()=>a("修改代理")},{value:"concurrency",label:()=>a("设置并发上限")},{value:"usageQuery",label:()=>a("查询设置")},{value:"limiters",label:()=>a("限制器")},{value:"remove",label:()=>a("删除")}],zI=[{value:"append",label:()=>a("追加规则(保留原有)")},{value:"replace",label:()=>a("替换全部规则")},{value:"enable",label:()=>a("启用全部规则")},{value:"disable",label:()=>a("停用全部规则")},{value:"clear",label:()=>a("清空全部规则")}];function tf(e){return Ci(e)||e?.id||""}function TNe({ids:e,action:t,onClose:n}){const[s,i]=p.useState($I.some(ee=>ee.value===t)?t:"enable"),[o,l]=p.useState(()=>Lg(null)),[u,d]=p.useState(""),[f,m]=p.useState(()=>({...RI(null),intervalInput:""})),[g,v]=p.useState("append"),[b,y]=p.useState([]),[k,w]=p.useState(""),[S,N]=p.useState(!1),[C,T]=p.useState(""),[P,O]=p.useState(null),A=p.useRef(!1),R=e.map(ee=>_l(ee)).filter(ee=>ee!==null),M=R.filter(Si),_=s==="limiters"&&(g==="append"||g==="replace"),L=_&&b.some(ee=>ee.conditions.some(H=>H.metric!=="tokens"&&H.metric!=="requests")),$=s==="refresh"?R.filter(ee=>!qP(ee)):s==="usageQuery"||L?M:R,D=R.filter(ee=>!$.includes(ee)),F=s==="usageQuery"?M:R,V=F.find(ee=>ee.id===k),q=R.reduce((ee,H)=>Math.max(ee,Number(Ga(tn(H)).concurrencyDefault)||0),0),Q=R.length>0&&R.every(Hke),X=s==="remove"||s==="limiters"&&(g==="replace"||g==="clear"),U=s==="limiters"?g==="append"?a("追加限制规则"):zI.find(ee=>ee.value===g).label():$I.find(ee=>ee.value===s).label();function z(){V&&(s==="usageQuery"?m(RI(V)):y(F8(V)),T(""),Ct(a("已复制到草稿,执行后才会应用到所选账号")))}async function K(){const ee=ft().wbConfirm?.ask;if(s==="remove"&&!await Promise.resolve(ee?.({title:a("删除选中的账号"),html:a("确定删除选中的 {count} 个账号?此操作不可恢复,账号的登录态会一并移除。",{count:e.length}),okText:a("删除"),okClass:"danger"})??!1))return!1;if(s==="disable"||s==="remove"){const H=new Set(e);if(!Ml().filter(Y=>Y.enabled!==!1&&!H.has(Y.id)).length){const Y=a(s==="remove"?"删除":"禁用");return Promise.resolve(ee?.({title:a("全部启用中的账号将被{what}",{what:Y}),html:a("这会{what}所有启用中的账号,转发将不可用。确定继续?",{what:Y}),okText:Y,okClass:s==="remove"?"danger":"primary"})??!1)}}return s==="limiters"&&g==="replace"?Promise.resolve(ee?.({title:a("替换选中账号的限制规则"),html:a("将用草稿中的 {rules} 条规则替换 {count} 个账号的全部限制规则,原有规则不会保留。确定继续?",{rules:b.length,count:$.length})+(D.length?`

    ${a("以下 {count} 个账号不支持余额查询,本次会跳过:{names}",{count:D.length,names:Yo(D.map(tf).join(a("、")))})}

    `:""),okText:a("替换全部规则"),okClass:"danger"})??!1):s==="limiters"&&g==="clear"?Promise.resolve(ee?.({title:a("清空选中账号的限制规则"),html:a("确定清空 {count} 个账号的全部限制规则?余额与 Token 将不再设限;已禁用的账号不会自动启用。",{count:$.length}),okText:a("清空全部规则"),okClass:"danger"})??!1):!0}async function J(){if(A.current)return;if(!e.length){Ct(a("没有选中的账号"),"err");return}if(!$.length){Ct(a("没有适用于本次操作的账号"),"err");return}const ee={action:s,ids:e};try{if(s==="proxy"&&(ee.proxy=yc(o)),s==="concurrency"){const H=Number(u.trim());if(!u.trim()||!Number.isFinite(H)||H<0)throw new Error(a("并发上限必须是 0~{max} 的整数",{max:Su}));ee.maxConcurrent=Math.min(Su,Math.round(H))}if(s==="usageQuery"){const H=U8(f);if("error"in H)throw new Error(H.error);ee.usageQuery=H.value}if(s==="limiters"&&(ee.limiterMode=g,_)){if(!b.length)throw new Error(a("请至少添加一条限制规则;清空请使用清空操作"));if(b.some(H=>H.conditions.some(G=>G.sourceId!==""&&G.sourceId!=="local"&&G.sourceId!=="account")))throw new Error(a("套餐实例不能跨账号复制,请改用通用额度或本地保护条件"));ee.limiterGroups=structuredClone(b)}}catch(H){T(r.jsx("span",{className:"text-destructive",children:dn(H)})),Ct(dn(H),"err");return}A.current=!0,N(!0),T(""),O(null);try{if(!await K())return;let H;if(s==="refresh")H=await xNe(e,O);else{const ie=ft().workbuddyDesktop;if(!ie?.batchAccounts)throw new Error(a("批量操作接口不可用,请重新打开页面"));H=EI(await ie.batchAccounts(ee),ee)}const G=H.ok||[],Y=s==="remove"?(H.removed||[]).length:s==="refresh"?G.length:G.filter(ie=>ie.changes?.length).length,se=s==="remove"?0:G.length-Y,re=H.failed||[],ne=H.skipped||[],de=s==="refresh"?a("刷新 Token 完成:成功 {ok} 个,跳过 {skip} 个,失败 {fail} 个",{ok:Y,skip:ne.length,fail:re.length}):a("{verb}完成:成功 {ok} 个,未变更 {unchanged} 个,跳过 {skip} 个,失败 {fail} 个",{verb:U,ok:Y,unchanged:se,skip:ne.length,fail:re.length});Ct(de,re.length?"err":"ok"),re.length||ne.length?T(r.jsxs("div",{role:"status",className:"space-y-2",children:[r.jsx("p",{children:de}),ne.length?r.jsxs("p",{children:[a("跳过 {count} 个:",{count:ne.length}),ne.map(ie=>`${tf(_l(String(ie.id)))||ie.name||ie.id}(${ie.reason})`).join(a(";"))]}):null,re.length?r.jsxs("p",{className:"text-destructive",children:[a("失败 {count} 个:",{count:re.length}),re.map(ie=>`${tf(_l(String(ie.id)))||ie.id}(${ie.error})`).join(a(";"))]}):null]})):n();try{await Qo(),await Ig()}catch(ie){Ct(a("批量操作已保存,但列表刷新失败:{error}",{error:dn(ie)}),"err")}}catch(H){T(r.jsx("span",{className:"text-destructive",children:dn(H)})),Ct(a("批量操作失败:{error}",{error:dn(H)}),"err")}finally{A.current=!1,N(!1),O(null)}}return r.jsx(at,{open:!0,onOpenChange:ee=>{ee||S||n()},children:r.jsxs(it,{className:"w-[min(900px,calc(100vw-48px))]",showCloseButton:!S,children:[r.jsx(ot,{children:r.jsx(st,{children:a("批量操作 · 已选 {count} 个账号",{count:e.length})})}),r.jsxs(lt,{children:[r.jsxs(C0e,{disabled:S,className:"m-0 flex min-w-0 flex-col gap-4 border-0 p-0",children:[r.jsxs(as,{children:[r.jsx("h3",{children:a("将作用于以下账号")}),r.jsx("p",{className:"max-h-[84px] overflow-y-auto",children:$.map(tf).join(a("、"))||a("没有适用于本次操作的账号")}),D.length?r.jsx("p",{className:"max-h-[84px] overflow-y-auto",children:s==="refresh"?r.jsxs(r.Fragment,{children:[a("跳过 {count} 个:",{count:D.length}),D.map(ee=>`${tf(ee)}(${qP(ee)})`).join(a(";"))]}):a("以下 {count} 个账号不支持余额查询,本次会跳过:{names}",{count:D.length,names:D.map(tf).join(a("、"))})}):null,s==="refresh"?r.jsx("p",{children:a("逐个刷新所选账号的 Token,未到期也会尝试刷新;不改变启用状态、代理或转发顺序。")}):s!=="remove"?r.jsx("p",{children:a("只修改本次选择的设置,不影响备注、凭证、转发顺序或其他设置。")}):null]}),r.jsxs(as,{children:[r.jsx("h3",{children:a("操作")}),r.jsx(bg,{value:s,onValueChange:ee=>{i(ee),T("")},disabled:S,className:"flex-row flex-wrap items-center gap-5","aria-label":a("批量动作"),children:$I.map(ee=>r.jsxs(Ae,{className:"inline-flex cursor-pointer items-center gap-2 font-normal",children:[r.jsx(Mh,{value:ee.value}),ee.label()]},ee.value))}),s==="proxy"?r.jsx("div",{className:"mt-2.5",children:r.jsx(pN,{draft:o,onChange:l,idPrefix:"batch-proxy",allowRotate:Q})}):null,s==="concurrency"?r.jsxs("div",{className:"mt-2.5",children:[r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{htmlFor:"batch-conc-input",children:a("并发上限")}),r.jsx(ze,{id:"batch-conc-input",type:"number",min:0,max:Su,step:1,className:"max-w-[110px]",placeholder:a("并发上限"),value:u,onChange:ee=>d(ee.currentTarget.value)}),r.jsx("span",{className:"detail",children:a("0 = 不限")})]}),r.jsx("p",{className:"detail mt-2.5",children:q>0?a("并发上限 0~{max};CodeArts 等有默认值的家填 0 即按本家默认;达到上限的账号会被跳过、请求转给其他账号",{max:Su}):a("并发上限 0~{max};达到上限的账号会被跳过、请求转给其他账号",{max:Su})})]}):null,s==="limiters"?r.jsxs("div",{className:"mt-2.5",children:[r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{htmlFor:"batch-limiter-mode",children:a("规则操作")}),r.jsxs(Pt,{value:g,onValueChange:ee=>{v(ee),T("")},children:[r.jsx(Mt,{id:"batch-limiter-mode",className:"min-w-[220px]",children:r.jsx(It,{children:zI.find(ee=>ee.value===g).label()})}),r.jsx(_t,{children:zI.map(ee=>r.jsx(Ze,{value:ee.value,children:ee.label()},ee.value))})]})]}),r.jsx("p",{className:"detail mt-2.5",children:a(g==="append"?"保留各账号原有规则,只追加下面的规则;完全相同的规则不会重复添加。":g==="replace"?"用下面的规则统一替换各账号的全部规则,执行前会再次确认。":g==="clear"?"删除各账号的全部限制规则,执行前会再次确认。":"仅统一修改现有规则的开关,保留阈值、动作和重置方式;不改变账号的启用状态。")})]}):null,s==="usageQuery"||_?r.jsxs("div",{className:"mt-2.5",children:[r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{htmlFor:"batch-settings-source",children:a("复制自账号")}),r.jsxs(Pt,{value:V?.id||"",disabled:!F.length,onValueChange:ee=>w(String(ee)),children:[r.jsx(Mt,{id:"batch-settings-source",className:"min-w-0 flex-1",children:r.jsx(It,{children:V?tf(V):a("选择所选账号作为模板(可选)")})}),r.jsx(_t,{children:F.map(ee=>r.jsx(Ze,{value:ee.id,children:tf(ee)},ee.id))})]}),r.jsx(B,{variant:"outline",size:"sm",disabled:!V,onClick:z,children:a("复制当前设置")})]}),s==="usageQuery"?r.jsxs(r.Fragment,{children:[r.jsx(H8,{draft:f,onChange:m,idPrefix:"batch-usage"}),r.jsx("p",{className:"detail mt-2.5",children:a("统一设置自动查询的开关、间隔和失败重试次数;不会复制或覆盖余额查询凭证。")})]}):r.jsx(B8,{draft:b,onChange:y,allowBalance:M.length>0})]}):null,s==="usageQuery"&&!f.enabled?r.jsx("p",{className:"detail mt-2.5",children:a("关闭自动查询后,余额限制器只能使用上次读数;手动查询仍可用。")}):null,s==="limiters"?r.jsx("p",{className:"detail mt-2.5",children:a("Token 规则按每个账号已有的窗口消耗判定,保存不会清零;停用或清空规则不会自动启用账号。")}):null]})]}),P?r.jsx("p",{role:"status",className:"detail",children:a("刷新 Token:已处理 {completed}/{total} 个,当前账号:{name}",P)}):null,r.jsx("div",{className:"detail min-h-[18px]",children:C})]}),r.jsxs(xt,{children:[r.jsx("div",{className:"mr-auto"}),r.jsx(B,{variant:"outline",disabled:S,onClick:n,children:a("取消")}),r.jsx(B,{variant:X?"destructive":"default",disabled:S||!$.length,onClick:()=>{J()},children:S?a("执行中…"):a("执行({action})",{action:U})})]})]})})}const BI=7*864e5;function ONe(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function W8(e){const t=typeof e=="string"?e.trim():"";return zh(t)?"积分":t}function gN(e){const t=ONe(e);return t?W8(t.unit)||(Object.prototype.hasOwnProperty.call(t,"totalLeft")?"积分":""):""}function Y8(e,t,n=Date.now()){if(["snapshot","record","daily","rolling","unlimited"].some(f=>e[f]===!0))return null;const s=Os(e.remain),i=Os(e.total),o=Os(e.used),l=Os(e.remainingPercent);if(i===-1||s!==null&&s<=0||s===null&&(o!==null&&i!==null&&i>0&&o>=i||l!==null&&l<=0))return null;const u=Os(e.startAt);if(u!==null&&u>n)return null;const d=Os(e.expireAt);return d===null||d<=n||d>n+BI||!Number.isFinite(new Date(d).getTime())?null:{expireAt:d,remain:s,unit:W8(e.unit)||t}}function RNe(e,t=Date.now()){const n=gN(e);return BP(e).map(s=>Y8(s,n,t)).filter(s=>s!==null)}function X8(e){const t=new Map;for(const n of e){let s=t.get(n.unit);s||(s={unit:n.unit,sum:null,count:0,unknownCount:0},t.set(n.unit,s)),s.count++,n.remain===null&&s.unknownCount++,n.remain!==null&&n.unit&&n.unit!=="%"&&(s.sum=(s.sum??0)+n.remain)}return[...t.values()]}function xN(e,t=Date.now()){const n=e.filter(o=>o.expireAt>t&&o.expireAt<=t+BI),s=new Date(t);s.setHours(24,0,0,0);const i=n.filter(o=>o.expireAt0&&e<.01?t("不足 {n}",{n:n(.01)}):n(e)}function Z8(e,t,n){return e.map(s=>{if(!s.unit)return t("{count} 份单位未知",{count:s.count});if(s.unit==="%")return t("{count} 份仅提供比例",{count:s.count});const i=mo(s.unit,t);if(s.sum===null)return t("{unit}余量未知({count} 份)",{unit:i,count:s.count});const o=`${Q8(s.sum,t,n)} ${i}`;return s.unknownCount>0?t("{amount},另 {count} 份余量未知",{amount:o,count:s.unknownCount}):o}).join(";")}function vN(e,t,n,s=""){if(!e.count)return{badge:"",group:"",summary:"",today:"",detail:""};const i=e.amounts.length===1?e.amounts[0]:null,o=zh(s)&&i?.unit==="积分"&&i.unknownCount===0&&i.sum!==null?Q8(i.sum,t,n):null,l=t("7 天内到期 {amount}({count} 份)",{amount:Z8(e.amounts,t,n),count:e.count}),u=e.todayCount>0?t("今天到期 {amount}({count} 份)",{amount:Z8(e.todayAmounts,t,n),count:e.todayCount}):"";return{badge:o===null?t("7天 {count}份",{count:e.count}):t("7天 {n}",{n:o}),group:o===null?t("即将到期 {count} 份",{count:e.count}):t("即将过期 {n}",{n:o}),summary:l,today:u,detail:[l,u].filter(Boolean).join(";")}}function J8(e,t,n=Date.now()){const s=new Date(e),i=e-n;if(!Number.isFinite(s.getTime())||i<=0)return"";const o=new Date(n);if(s.getFullYear()===o.getFullYear()&&s.getMonth()===o.getMonth()&&s.getDate()===o.getDate()){if(i<6e4)return t("不到 1 分钟到期");const d=Math.floor(i/36e5);return d<1?t("{minutes} 分钟后到期",{minutes:Math.floor(i/6e4)}):t("{hours} 小时后到期",{hours:d})}const l=d=>Date.UTC(d.getFullYear(),d.getMonth(),d.getDate()),u=Math.round((l(s)-l(o))/864e5);return u===1?t("明天到期"):t("{days} 天后到期",{days:u})}function $l(e){if(e==null||e==="")return null;const t=Number(e);return Number.isFinite(t)?t:null}function $g(e){const t=new Date(e);if(Number.isNaN(t.getTime()))return"";const n=s=>String(s).padStart(2,"0");return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}`}function eG(e){return mo(e,a)}function PNe(e,t=Date.now()){const n=BP(e),s=gN(e);return n.map(i=>{const o=cq(i,a,Ln);if(o){const F=o.daily?a("每日重置"):null;return{name:o.name,view:o.view,tone:o.tone,percent:null,window:F,title:[o.name,o.view,F].filter(Boolean).join(" · "),spent:!1,snapshot:!0,amount:null,expiry:null}}const l=String(i?.name||"").trim()||a("积分包");if(i?.record===!0){const F=$l(i?.amount),V=String(i?.unit||"").trim(),q=$l(i?.at),Q=$l(i?.expireAt),X=F===null?"—":`${F>0?"+":""}${Ln(F)}`,U=V&&X!=="—"?`${X} ${eG(V)}`:X,z=[];q!==null&&q>0&&z.push($g(q)),Q!==null&&Q>0&&z.push(Q<=t?a("已过期"):a("{time} 到期",{time:$g(Q)}));const K=String(i?.remark||"").trim();return{name:l,view:U,tone:F!==null&&F<0?"muted":"ok",percent:null,window:z.length?z.join(" · "):null,title:[l,U,q!==null&&q>0?ki(q):"",Q!==null&&Q>0?a("到期 {time}",{time:ki(Q)}):"",K].filter(Boolean).join(" · "),spent:!1,amount:F,expiry:null}}const u=String(i?.unit||"").trim(),d=$l(i?.total),f=$l(i?.used),m=$l(i?.remain),g=i?.unlimited===!0,v=$l(i?.grantAt),b=$l(i?.startAt),y=$l(i?.expireAt),k=i?.daily===!0,w=i?.rolling===!0,S=$l(i?.resetAt),N=$l(i?.remainingPercent),C=String(i?.grantReason||"").trim(),T=y!==null&&y>0&&y<=t,P=d!==null&&d>0,O=g?a("不限"):m!==null?P?a("剩 {remaining} / {total}",{remaining:Ln(m),total:Ln(d)}):a("剩 {remaining}",{remaining:Ln(m)}):f!==null?a("已用 {used}",{used:Ln(f)}):N!==null?a("剩余 {percent}%",{percent:Math.round(N)}):"—",A=!g&&u&&O!=="—"?`${O} ${eG(u)}`:O,R=P&&m!==null?Math.max(0,Math.min(100,m/d*100)):N===null?null:Math.max(0,Math.min(100,N)),M=m!==null&&m<=0||m===null&&f!==null&&P&&f>=d,_=!g&&!k&&!w&&(M||T),L=[];v!==null&&v>0?L.push(a("{time} 领取",{time:$g(v)})):b!==null&&b>0&&L.push(a("{time} 生效",{time:$g(b)})),k?L.push(a("每日重置")):w&&S!==null&&S>0?L.push(a("重置 {date}",{date:$g(S)})):y!==null&&y>0&&L.push(T?a("已过期"):a("{time} 到期",{time:$g(y)})),C&&L.push(C);const $=T||m===0?"muted":R!==null&&R<20?"warn":m===null&&f===null&&!g?"muted":"ok",D=[l,A,v!==null&&v>0?a("领取 {time}",{time:ki(v)}):b!==null&&b>0?a("生效 {time}",{time:ki(b)}):"",y!==null&&y>0?T?a("已过期({time})",{time:ki(y)}):a("到期 {time}",{time:ki(y)}):"",k?a("每日重置(额度按周期回满,不是作废)"):"",C,R===null&&m!==null?a("上游未给总量,画不出剩余比例"):"",f!==null&&d!==null?a("已用 {used} / 共 {total}",{used:Ln(f),total:Ln(d)}):""].filter(Boolean).join(" · ");return{name:l,view:A,tone:$,percent:R,window:L.length?L.join(" · "):null,title:D,spent:_,amount:null,expiry:Y8(i,s,t)}})}function FI({row:e,now:t}){return r.jsxs("div",{className:"usage-pop-row",title:e.title,children:[r.jsxs("div",{className:"usage-pop-line",children:[r.jsx("span",{className:"usage-pop-name",children:e.name}),e.expiry?r.jsx("span",{className:"usage-pop-soon-tag",children:J8(e.expiry.expireAt,a,t)}):null,r.jsx("span",{className:`usage-pop-view ${e.tone}`,children:e.view})]}),e.window?r.jsx("div",{className:"usage-pop-window",children:e.window}):null,e.percent!==null?r.jsx(kg,{value:e.percent,variant:e.tone==="ok"?"success":e.tone==="warn"?"warning":"muted",className:"mt-1.5",trackClassName:"h-[3px]","aria-label":a("剩余 {percent}%",{percent:Math.round(e.percent)})}):null]})}function UI({rows:e,now:t,expiryUnit:n,subscriptionLine:s,aggregate:i,variant:o,kind:l,title:u,children:d}){const[f,m]=p.useState(!1),[g,v]=p.useState(!1),b=e.filter(R=>!R.spent),y=e.filter(R=>R.spent),k=e.length>0&&e.every(R=>R.snapshot)?a("余额详情"):a("积分明细"),w=b.filter(R=>R.expiry!==null),S=b.filter(R=>R.expiry===null),N=xN(w.flatMap(R=>R.expiry?[R.expiry]:[]),t),C=vN(N,a,Ln,n),T=o==="pool"?`usage-toggle usage-pool-line ${l}`:`usage-toggle ${l}`,P=p.useRef(null),O=p.useCallback(R=>{P.current=R,R&&(R.scrollTop=0)},[]),A=p.useCallback(()=>P.current??null,[]);return p.useLayoutEffect(()=>{if(!g)return;const R=P.current?.querySelector(".usage-pop-spent .usage-pop-row");R instanceof HTMLElement&&R.scrollIntoView({block:"nearest"})},[g]),r.jsxs(ui,{open:f,onOpenChange:m,children:[r.jsxs(wi,{render:r.jsx(B,{size:"default",variant:"ghost",type:"button",className:T,title:u,"aria-label":k}),children:[o==="pool"?d:r.jsx("span",{className:"val",children:d}),o==="sum"&&C.badge?r.jsx("span",{className:"usage-toggle-soon",children:C.badge}):null,r.jsx("span",{className:"caret","aria-hidden":!0,children:"▾"})]}),r.jsx(di,{align:"center",sideOffset:6,className:"w-[320px]",initialFocus:A,children:r.jsxs("div",{className:"usage-pop-credit",ref:O,tabIndex:-1,children:[s?r.jsx("div",{className:"usage-pop-sub",children:s}):null,i?r.jsxs("div",{className:"usage-pop-total",children:[r.jsx("span",{className:"k",children:i.label}),r.jsxs("span",{className:"v",children:[i.unlimited?a("不限"):Ln(i.remaining),!i.unlimited&&i.unit?r.jsxs(r.Fragment,{children:[" ",r.jsx("small",{children:i.unit})]}):null]})]}):null,r.jsx("div",{className:"usage-pop-group",children:k}),N.count>0?r.jsxs(r.Fragment,{children:[r.jsxs("div",{className:"usage-pop-soon",children:[r.jsx("span",{children:C.summary}),C.today?r.jsx("span",{children:C.today}):null]}),w.map((R,M)=>r.jsx(FI,{row:R,now:t},`soon-${R.name}-${M}`))]}):null,S.map((R,M)=>r.jsx(FI,{row:R,now:t},`${R.name}-${M}`)),y.length>0?r.jsxs("div",{className:"usage-pop-spent",children:[r.jsxs(B,{size:"default",variant:"ghost",type:"button",className:"usage-pop-spent-head","aria-expanded":g,title:a("展开或收起(默认收起)"),onClick:()=>v(R=>!R),children:[r.jsx("span",{className:"caret","aria-hidden":!0}),r.jsx("span",{children:a("已用完 / 已过期")}),r.jsx("span",{className:"n",children:a("{count} 份",{count:y.length})})]}),g?y.map((R,M)=>r.jsx(FI,{row:R,now:t},`spent-${R.name}-${M}`)):null]}):null]})})]})}const INe={workbuddy:"assets/providers/workbuddy.png","workbuddy-intl":"assets/providers/workbuddy.png",raccoon:"assets/providers/raccoon.png",catpaw:"assets/providers/catpaw.png",autoclaw:"assets/providers/autoclaw.png","autoclaw-intl":"assets/providers/autoclaw.png",qoder:"assets/providers/qoder.png","qoder-intl":"assets/providers/qoder.png",cline:"assets/providers/cline.png","cline-free":"assets/providers/cline.png","cline-pass":"assets/providers/cline.png",accio:"assets/providers/accio.png","accio-cn":"assets/providers/accio.png","accio-intl":"assets/providers/accio.png",zcode:"assets/providers/zcode.png","zcode-intl":"assets/providers/zcode.png",codearts:"assets/providers/codearts.png",trae:"assets/providers/trae.png",loomy:"assets/providers/loomy.png",kuku:"assets/providers/kuku.png",monkeycode:"assets/providers/monkeycode.png","monkeycode-intl":"assets/providers/monkeycode.png",commandcode:"assets/providers/commandcode.png",antigravity:"assets/providers/antigravity.png","agy-cli":"assets/providers/antigravity.png",officeace:"assets/providers/officeace.png",orcaterm:"assets/providers/orcaterm.png",chatglm:"assets/providers/chatglm.png","deepseek-web":"assets/providers/deepseek.png",tabbit:"assets/providers/tabbit.png","tabbit-intl":"assets/providers/tabbit.png",modelscope:"assets/providers/modelscope.png","modelscope-intl":"assets/providers/modelscope.png",atomcode:"assets/providers/atomcode.png",lobsterai:"assets/providers/lobsterai.png",doubaowork:"assets/providers/doubaowork.png",cursor:"assets/providers/cursor.svg",kiro:"assets/providers/kiro.svg",astudio:"assets/providers/astudio.png",quwork:"assets/providers/quwork.png",devin:"assets/providers/devin.svg",factory:"assets/providers/factory.svg",zed:"assets/providers/zed.svg",grok:"assets/providers/grok.svg","minimax-code":"assets/providers/minimax-code.svg","minimax-code-global":"assets/providers/minimax-code.svg",qwenwork:"assets/providers/qwenwork.svg","qwenwork-intl":"assets/providers/qwenwork.svg","qwenwork-enterprise":"assets/providers/qwenwork.svg","kimi-work":"assets/providers/kimi-work.svg",opendesign:"assets/providers/opendesign.svg","nous-portal":"assets/providers/nous-portal.svg","claude-subscription":"assets/providers/anthropic.png","codex-subscription":"assets/providers/openai.png","chatgpt-subscription":"assets/providers/openai.png","copilot-subscription":"assets/providers/copilot.svg","gemini-subscription":"assets/providers/gemini-cli.svg"};function tG(e){return typeof e=="string"&&/^\/plugins\/script-icons\/[a-f0-9]{64}\.(png|jpg|gif|webp|ico|svg)$/.test(e)?e:""}function MNe(e,t){return!t||!e||typeof e!="object"||Array.isArray(e)?"":tG(e[t])}function _Ne(...e){const t=e.filter(d=>typeof d=="string"&&d.length>0),n=JSON.stringify(t),[s,i]=p.useState({key:n,sources:[]}),o=s.key===n?s.sources:[],l=t.find(d=>!o.includes(d))||"",u=p.useCallback(()=>{l&&i(d=>({key:n,sources:[...d.key===n?d.sources:[],l]}))},[n,l]);return{src:l,onError:u}}const nG=[{id:"api-base",method:"",path:"/v1"},{id:"api-chat",method:"POST",path:"/v1/chat/completions"},{id:"api-responses",method:"POST",path:"/v1/responses"},{id:"api-messages",method:"POST",path:"/v1/messages"},{id:"api-count-tokens",method:"POST",path:"/v1/messages/count_tokens"},{id:"api-image-generations",method:"POST",path:"/v1/images/generations"},{id:"api-image-edits",method:"POST",path:"/v1/images/edits"},{id:"api-image-files",method:"GET",path:"/v1/images/files/{id}"},{id:"api-models",method:"GET",path:"/v1/models"},{id:"api-health",method:"GET",path:"/health"}];function rG(){const e=Z("对话协议与上下文预算"),t=Z("图片生成与编辑"),n=Z("模型清单与健康检查"),s={"api-base":{name:"Base URL",group:"",note:Z("OpenAI 兼容客户端使用此地址;Anthropic 官方 SDK 使用下方说明中的网关根地址。")},"api-chat":{name:"OpenAI Chat Completions",group:e,note:Z("多数 OpenAI 兼容客户端的默认协议")},"api-responses":{name:"OpenAI Responses",group:e,note:Z("Codex / 新版 OpenAI SDK;无状态转发,历史由客户端携带。")},"api-messages":{name:"Anthropic Messages",group:e,note:Z("Claude Code / Anthropic SDK;模型与账号池和 OpenAI 入口共用。")},"api-count-tokens":{name:Z("Token 数量估算"),group:e,note:Z("本地上下文预算估算,返回 estimated=true;不是上游精确分词。")},"api-image-generations":{name:Z("图片生成"),group:t,note:Z("文本生成图片;JSON 请求,非流式返回 base64 或下载链接。")},"api-image-edits":{name:Z("图片编辑"),group:t,note:Z("参考图编辑;支持 multipart 文件上传或 JSON 图片引用。")},"api-image-files":{name:Z("临时图片下载"),group:t,note:Z("仅用于响应返回的网关临时链接;{id} 必须替换为实际下载令牌。")},"api-models":{name:Z("模型列表"),group:n,note:Z("不强制鉴权;携带有效 Key 可查看该 Key 获准使用的模型。")},"api-health":{name:Z("健康检查"),group:n,note:Z("不强制鉴权;仅用于确认网关可访问,不保证模型或额度可用。")}};return nG.map(i=>({...i,...s[i.id]}))}const sG=3065;function DNe(){if(jc().workbuddyDesktop?.platform!=="web")return null;const e=typeof window>"u"?"":window.location?.origin;return e&&e!=="null"?e:null}function aG(e,t){return DNe()??(e?`http://127.0.0.1:${e}`:t)}function jc(){return window}function bN(e){return e instanceof Error?e.message:String(e)}function zg(e,t){jc().wbApp?.toast?.(e,t)}let Bg={backend:null,gatewayBase:aG(0,`http://127.0.0.1:${sG}`)};const HI=new Set;function yN(){return Bg}function VI(){return p.useSyncExternalStore(iG,yN).gatewayBase}function iG(e){return HI.add(e),()=>{HI.delete(e)}}function LNe(e){Bg=e;for(const t of HI)t()}function oG(){return Bg.gatewayBase.replace(/^https?:\/\//,"")}function $Ne(){return Bg.backend?.ready===!0}function lG(e){const t=(n,s)=>{const i=document.getElementById(n);i&&(i.textContent=s)};for(const n of nG)t(n.id,`${n.method?`${n.method} `:""}${e}${n.path}`)}let KI=!1;async function Xh(){if(!KI){KI=!0;try{const e=jc().workbuddyDesktop;if(!e)throw new Error("后端桥不可用");const t=await e.getBackendStatus(),n=Number(t?.port)||0,s=yN(),i={backend:t??null,gatewayBase:aG(n,s.gatewayBase)};i.gatewayBase!==s.gatewayBase&&lG(i.gatewayBase),LNe(i),jc().wbApp?.renderTopbarStatus?.()}catch(e){console.warn("读取后端状态失败:",bN(e))}finally{KI=!1}}}function zNe(){lG(Bg.gatewayBase),Xh()}async function cG(e){zg(e||a("正在重启…"));try{await jc().workbuddyDesktop?.restartApp()}catch(t){zg(a("重启失败:{reason}",{reason:bN(t)}),"err")}}const BNe={idle:a("结束占用进程"),querying:a("查询中…"),ending:a("结束中…")};function FNe({container:e}){const{backend:t,gatewayBase:n}=p.useSyncExternalStore(iG,yN),[s,i]=p.useState("idle"),o=t?.failure||null,l=oG(),u=t?.ready;let d="muted",f=a("正在检查… · {port}",{port:l});u===!0?(d="success",f=a("网关运行中 · {port}",{port:l})):o?(d="destructive",f=a("{label} · {port}",{label:o.label||a("网关启动失败"),port:l})):u===!1&&(f=a("网关启动中… · {port}",{port:l}));const m=o?o.message??"":u===!0?a("本地网关正在监听 {url},可直接调用 OpenAI 兼容接口",{url:n}):a("正在确认网关是否已就绪");p.useEffect(()=>{Xh()},[]),p.useEffect(()=>{const v=jc().workbuddyDesktop,b=[v?.onBackendError?.(()=>{Xh()}),v?.onBackendReady?.(()=>{Xh()})];return()=>{for(const y of b)typeof y=="function"&&y()}},[]),p.useEffect(()=>{e.title=m},[e,m]);async function g(){if(s!=="idle")return;const v=jc().workbuddyDesktop;if(v){i("querying");try{const b=await v.getPortOccupant(),y=b?.occupant;if(!y){zg(a("端口 {port} 上没有查到监听进程,请改用「更换端口」",{port:b?.port??""}),"err");return}const k=[a("即将结束以下进程:"),"",a("进程名:{name}",{name:String(y.name)}),a("PID:{pid}",{pid:String(y.pid)}),a("路径:{path}",{path:y.path||a("(未知)")}),"",a("结束它会强制退出该程序未保存的数据。确认继续?")],w=jc().wbConfirm?.ask;if(!w||!await w({title:a("结束占用端口的进程"),text:k.join(` -`),okText:a("结束进程"),okClass:"danger"}))return;i("ending"),(await v.endPortOccupant())?.released?(zg(a("已结束进程 {name}(PID {pid}),端口已释放",{name:String(y.name),pid:String(y.pid)})),await w({title:a("重启程序"),text:a("端口已释放。现在重启程序让网关用这个端口启动?"),okText:a("重启")})?await cG(a("重启中…")):await Xh()):(zg(a("进程已结束,但端口仍被占用,建议改用「更换端口」"),"err"),await Xh())}catch(b){zg(a("结束失败:{reason}",{reason:bN(b)}),"err")}finally{i("idle")}}}return r.jsxs(r.Fragment,{children:[r.jsxs("div",{className:"status-line",children:[r.jsx(Ka,{variant:d,pulse:u===!0}),r.jsx("span",{className:"txt",children:f})]}),o?.conflict?r.jsxs("div",{className:"status-actions",children:[o.canEndOccupant===!0?r.jsx(B,{size:"sm",disabled:s!=="idle",onClick:()=>{g()},children:BNe[s]}):null,r.jsx(B,{size:"sm",onClick:()=>{VNe()},children:a("更换端口")})]}):null]})}let jN=null,uG=null;function qI(){const e=document.getElementById("sidebar-status");uG!==e&&(jN?.unmount(),jN=null,uG=e,e&&(e.replaceChildren(),jN=zn.createRoot(e),jN.render(r.jsx(FNe,{container:e}))))}window.addEventListener("wb:shell-layout",qI);const UNe={idle:a("保存并重启"),checking:a("校验中…"),saving:a("保存中…")};function HNe({status:e,onClose:t}){const n=Number(e?.port)||sG,[s,i]=p.useState(()=>n<65535?String(n+1):String(n-1)),[o,l]=p.useState("idle"),[u,d]=p.useState(""),[f,m]=p.useState(""),g=p.useRef(!0),v=Number(s)||0,b=e?.failure?.message||a("当前端口 {port},网关运行正常。",{port:n});async function y(){if(o!=="idle")return;const k=jc().workbuddyDesktop;if(!k)return;const w=Number(s)||0;if(!w||w<1024||w>65535){m(a("端口需在 1024-65535 之间"));return}l("checking"),m(""),d("");try{const S=await k.checkPort(w);if(!S?.ok){d(S?.message||a("该端口不可用"));return}if(S.same){d(S.message??"");return}if(l("saving"),(await k.changePort(w))?.changed===!1){d(a("与当前端口相同,无需重启"));return}t(),await cG(a("端口已改为 {port},正在重启…",{port:w}))}catch(S){m(bN(S))}finally{l("idle")}}return r.jsx(at,{open:!0,onOpenChange:k=>{k||t()},children:r.jsxs(it,{children:[r.jsx(ot,{children:r.jsx(st,{children:a("更换网关端口")})}),r.jsxs(lt,{children:[r.jsxs(as,{children:[r.jsx("h3",{children:a("当前状态")}),r.jsx("p",{children:b})]}),r.jsxs(as,{children:[r.jsx("h3",{children:a("新端口")}),r.jsxs("div",{className:"flex flex-wrap items-center gap-2.5",children:[r.jsx(Ae,{htmlFor:"port-input",className:"text-[12.5px] whitespace-nowrap text-subtle",children:a("端口号")}),r.jsx(ze,{id:"port-input",type:"number",min:1024,max:65535,step:1,placeholder:a("例如 3066"),autoComplete:"off",className:"max-w-[130px]",value:s,onChange:k=>{i(k.currentTarget.value)},onKeyDown:k=>{k.key==="Enter"&&y()},autoFocus:!0,onFocus:k=>{g.current&&(g.current=!1,k.currentTarget.select())}})]}),u?r.jsx("p",{children:u}):null,r.jsx("p",{children:a("端口需在 1024-65535 之间。1023 及以下是系统保留范围,普通程序无法监听。")})]}),r.jsxs(as,{children:[r.jsx("h3",{children:a("换端口后要改的地方")}),r.jsxs("p",{children:[a("网关地址会变成 "),r.jsx("code",{children:`http://127.0.0.1:${v||"—"}`}),a("。已经把这个地址填进其它工具(Claude Code、Cherry Studio 等)的,需要一并改成新地址,否则那些工具会连不上。")]})]}),r.jsx("p",{className:"min-h-[18px] text-[11.5px] text-muted-foreground",children:f})]}),r.jsxs(xt,{children:[r.jsx("div",{className:"mr-auto"}),r.jsx(B,{variant:"outline",onClick:t,children:a("取消")}),r.jsx(B,{variant:"default",disabled:o!=="idle",onClick:()=>{y()},children:UNe[o]})]})]})})}let vy=null,Fg=null;function dG(){vy&&(vy.unmount(),vy=null),Fg&&(Fg.remove(),Fg=null)}async function VNe(){let e=yN().backend;e||(e=await jc().workbuddyDesktop?.getBackendStatus().catch(()=>null)??null),dG(),Fg=document.createElement("div"),document.body.append(Fg),vy=zn.createRoot(Fg),vy.render(r.jsx(HNe,{status:e,onClose:dG}))}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",qI,{once:!0}):qI(),window.wbPortPanel={render:zNe,sync:Xh,portLabel:oG,isReady:$Ne,gatewayBase:()=>Bg.gatewayBase};function KNe(e){let t;const n=()=>{t?.(),t=window.wbApp?.subscribeRefresh?.(e),e()};return window.addEventListener("wb:app-ready",n),n(),()=>{window.removeEventListener("wb:app-ready",n),t?.()}}function Qh(e,t=INe[e]||""){const n=p.useSyncExternalStore(KNe,()=>MNe(window.wbApp?.getState?.()?.providerIcons,e)),s=VI();return _Ne(n?`${s.replace(/\/+$/,"")}${n}`:"",t)}function GI(e){return e==="credit"?{name:a("积分到期时间"),hint:a("按账号最早到期、且还有剩余的积分包比较"),options:[{value:"soon",label:a("最快到期优先")},{value:"late",label:a("最晚到期优先")}]}:e==="balance"?{name:a("可用余额"),hint:a("按账号总可用余额比较,不重复累加积分明细"),options:[{value:"high",label:a("余额大优先")},{value:"low",label:a("余额小优先")}]}:{name:a("账号添加时间"),hint:a("所有提供商都有这个字段"),options:[{value:"new",label:a("最新添加优先")},{value:"old",label:a("最早添加优先")}]}}function WI(e,t){const n=t||Sn().sorting;return n?.balanceSortStates?n.balanceSortStates[e]!==void 0&&n.balanceSortStates[e]!=="unsupported":n?!1:Ga(e).usage||Ml().some(s=>tn(s)===e&&Si(s))}function zl(e,t,n){return t.filter(s=>s.on&&(s.key==="credit"?Eg(e):s.key==="balance"?WI(e,n):!0))}function wN(e){const t=e.filter(n=>n.on).map(n=>GI(n.key).name);return t.length?a("无法拖动:已启用自动消耗规则({rules})。请先在「消耗顺序」中关闭这些规则,再手动调整。",{rules:t.join("、")}):a("自动消耗排序已启用,请先关闭规则再手动调整")}function YI(e){return e.filter(t=>t.on).map(t=>t.key==="credit"?t.dir==="soon"?a("到期 近→远"):a("到期 远→近"):t.key==="balance"?t.dir==="high"?a("余额大优先"):a("余额小优先"):t.dir==="new"?a("添加 新→旧"):a("添加 旧→新")).join(" · ")}function qNe(e,t){if(t==="upgrade")return a("当前网关不支持余额排序,请先更新网关");if(e.key==="balance"){if(t==="unsupported")return a("这一家没有可用余额查询");if(t==="mixed-units")return a("账号余额单位不一致,暂不按余额排序,继续比较其他规则");if(t==="no-data")return a("暂无可比较余额;查到同单位的数值后自动生效,比例与无限额度不参与")}return t==="unsupported"?a("这一家查不到积分到期时间"):t==="no-data"?e.on?a("暂无数据:先查询一次余额,之后会自动按到期排序"):a("暂无数据:先查询一次余额,可按需启用到期排序"):GI(e.key).hint}function GNe({rule:e,priority:t,isLast:n,state:s,busy:i,onChange:o}){const l=GI(e.key),u=s==="unsupported"||s==="upgrade",d=qNe(e,s),f=!u&&!e.on;return r.jsxs("div",{className:Ne("grid items-center gap-2 rounded-sm px-1.5 py-1.5","grid-cols-[16px_15px_minmax(0,1fr)_132px_16px]","hover:bg-nav-hover",f&&"opacity-[.58]"),children:[r.jsx("span",{className:"text-center text-[10.5px] font-bold text-subtle tabular-nums",children:t}),r.jsx(jr,{checked:e.on&&!u,disabled:u||i,"aria-label":l.name,onCheckedChange:m=>o({on:m===!0})}),r.jsxs("span",{className:"flex min-w-0 flex-col gap-px",children:[r.jsx("span",{className:Ne("text-xs font-medium",u&&"text-subtle",f&&"text-subtle"),children:l.name}),r.jsx("span",{className:Ne("text-[10.5px] leading-relaxed",u||s==="mixed-units"?"text-warning":"text-subtle"),title:d,children:d})]}),u?r.jsx("span",{className:"rounded-xs border border-dashed border-border py-1 text-center text-[10.5px] text-subtle",children:a("不可用")}):r.jsxs(Pt,{value:e.dir,disabled:!e.on||i,onValueChange:m=>o({dir:m}),children:[r.jsx(Mt,{className:"h-[26px] w-full text-[11px]","aria-label":a("{name}的方向",{name:l.name}),children:r.jsx(It,{children:l.options.find(m=>m.value===e.dir)?.label||""})}),r.jsx(_t,{children:l.options.map(m=>r.jsx(Ze,{value:m.value,children:m.label},m.value))})]}),r.jsxs("span",{className:"flex flex-col gap-px",children:[r.jsx(B,{size:"default",variant:"ghost",type:"button",disabled:t<=1||i,className:"h-3 w-4 rounded-[3px] text-subtle hover:bg-nav-hover hover:text-foreground disabled:cursor-default disabled:opacity-30",title:a("提高优先级"),"aria-label":a("提高优先级"),onClick:()=>o({__move:"up"}),children:r.jsx("svg",{viewBox:"0 0 24 24",width:"10",height:"10",className:"mx-auto block",children:r.jsx("path",{fill:"none",stroke:"currentColor",strokeWidth:"2.4",strokeLinecap:"round",strokeLinejoin:"round",d:"m6 14 6-6 6 6"})})}),r.jsx(B,{size:"default",variant:"ghost",type:"button",disabled:n||i,className:"h-3 w-4 rounded-[3px] text-subtle hover:bg-nav-hover hover:text-foreground disabled:cursor-default disabled:opacity-30",title:a("降低优先级"),"aria-label":a("降低优先级"),onClick:()=>o({__move:"down"}),children:r.jsx("svg",{viewBox:"0 0 24 24",width:"10",height:"10",className:"mx-auto block",children:r.jsx("path",{fill:"none",stroke:"currentColor",strokeWidth:"2.4",strokeLinecap:"round",strokeLinejoin:"round",d:"m6 10 6 6 6-6"})})})]})]})}function fG({title:e,hint:t,children:n}){return r.jsxs("section",{className:"flex flex-col gap-1 border-t border-hairline pt-3.5 first:border-t-0 first:pt-0",children:[r.jsxs("div",{className:"mb-1 flex items-baseline gap-2",children:[r.jsx("h4",{className:"m-0 text-xs font-bold",children:e}),t?r.jsx("span",{className:"text-[10.5px] text-subtle",children:t}):null]}),n]})}function hG({provider:e,onClose:t,accounts:n,sorting:s,routeContext:i}){p.useSyncExternalStore(Hh,()=>Sn().version);const o=Nu(e),l=ft().wbProviders?.labelOf?.(e)||e,{src:u,onError:d}=Qh(e),f=Eg(e),m=Sn().version,g=s||Sn().sorting,v=(n||Ml()).filter(R=>tn(R)===e),b=p.useMemo(()=>v.some(R=>g?g.creditExpiresAt[R.id]!=null:Iq(po(R))!==null),[e,m,n,s,g]),y=f?b?"ready":"no-data":"unsupported",k=g?.balanceSortStates?.[e]||(WI(e,g)?bq(v.map(R=>vq(po(R)))):"unsupported"),w=g&&!g.balanceSortStates?"upgrade":k==="mixedUnits"?"mixed-units":k==="noData"?"no-data":k,S=zl(e,o,g),N=YI(S),C=S.some(R=>R.key==="balance"),T=S.length>0,P=bSe(e),O=Sn().sortBusy,A=(R,M)=>{const _=M.__move,L=o.map(D=>({...D})),$=L.findIndex(D=>D.key===R);if(!($<0)){if(_){const D=_==="up"?$-1:$+1;if(D<0||D>=L.length)return;const[F]=L.splice($,1);L.splice(D,0,F)}else L[$]={...L[$],...M};AI(e,L)}};return r.jsx(at,{open:!0,onOpenChange:R=>{!R&&!O&&t()},children:r.jsxs(it,{className:"w-[min(560px,calc(100vw-48px))]",showCloseButton:!0,children:[r.jsxs(ot,{children:[r.jsx("span",{className:"inline-flex size-[26px] flex-none items-center justify-center",children:u?r.jsx("img",{src:u,alt:"",className:"size-[26px] rounded-md object-contain",loading:"lazy",onError:d}):r.jsx("span",{className:"inline-flex size-[26px] items-center justify-center rounded-md bg-surface-3 text-[13px] font-bold text-muted-foreground",children:String(l||"?").trim().slice(0,1).toUpperCase()})}),r.jsx(st,{children:a("{name} · 分组设置",{name:a(l)})})]}),r.jsxs(lt,{children:[i,r.jsxs(fG,{title:a("消耗顺序"),hint:a("按优先级从上到下比较,勾选的项才参与"),children:[o.map((R,M)=>r.jsx(GNe,{rule:R,priority:M+1,isLast:M===o.length-1,state:R.key==="credit"?y:R.key==="balance"?w:"ready",busy:O,onChange:_=>A(R.key,_)},R.key)),r.jsxs("div",{className:"grid grid-cols-[16px_15px_minmax(0,1fr)] items-center gap-2 px-1.5 py-1.5",children:[r.jsx("span",{className:"text-center text-[10.5px] font-bold text-subtle tabular-nums",children:o.length+1}),r.jsx("span",{className:"inline-flex items-center justify-center text-subtle",title:a("固定兜底,不受开关影响"),children:r.jsx("svg",{viewBox:"0 0 24 24",width:"12",height:"12",children:r.jsxs("g",{fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[r.jsx("rect",{x:"4.5",y:"10",width:"15",height:"10.5",rx:"2"}),r.jsx("path",{d:"M8 10V7a4 4 0 0 1 8 0v3"})]})})}),r.jsxs("span",{className:"flex min-w-0 flex-col gap-px",children:[r.jsx("span",{className:"text-xs font-medium",children:a("组内手动顺序")}),r.jsx("span",{className:"text-[10.5px] text-subtle",children:a("上面所有规则都相同时,保持你拖出来的顺序")})]})]}),r.jsxs("p",{className:"m-0 mt-2 rounded-xs bg-surface-inset px-2.5 py-2 text-[10.5px] leading-relaxed text-subtle",children:[a("当前规则:{rules}。",{rules:N||a("仅按手动顺序")})," ",a(T?"已启用自动排序,组内拖动已锁定;关闭全部规则可恢复原手动顺序。":"当前可手动调整组内顺序。")]}),r.jsx("p",{className:"m-0 mt-1.5 px-2.5 text-[10.5px] leading-relaxed text-subtle",children:a("上一条规则相同时才比较下一条;想优先按余额消耗,请把可用余额移到第一位。")}),C?r.jsxs("p",{className:"m-0 mt-1.5 px-2.5 text-[10.5px] leading-relaxed text-subtle",children:[a("使用最近一次成功查询的总余额,随余额刷新调整;查询失败保留上次读数,不额外增加查询频率。")," ",a("只比较同一家、同单位的数值余额;未知、比例和无限额度不作为零余额,有明确余额的账号优先。")]}):null,r.jsx("p",{className:"m-0 mt-1.5 px-2.5 text-[10.5px] leading-relaxed text-subtle",children:a("账号页与全局路由共用此消耗顺序,网关按最新余额数据选路,不需要保持页面打开。模型独立顺序会覆盖全局。")}),r.jsx("p",{className:"m-0 mt-1.5 px-2.5 text-[10.5px] leading-relaxed text-subtle",children:a("严格按消耗顺序使用账号需选择「顺序优先」;轮询、会话粘性及账号保护仍按原设置生效。")}),r.jsx("p",{className:"m-0 mt-1.5 px-2.5 text-[10.5px] leading-relaxed text-subtle",children:a(f?"默认仅开启最快到期优先;可用余额和账号添加时间默认关闭。":"默认保持手动顺序,可按需开启支持的自动排序规则。")})]}),r.jsx(fG,{title:a("更多设置"),hint:a("后续加入"),children:r.jsx("div",{className:"flex flex-wrap gap-1.5",children:[a("默认展开 / 收起"),a("新账号落到组首 / 组尾"),a("组内并发上限"),a("余额低于阈值时的提示"),a("本组代理")].map(R=>r.jsx("span",{className:"inline-flex h-[22px] items-center rounded-pill border border-dashed border-border px-2.5 text-[10.5px] text-subtle",children:R},R))})})]}),r.jsxs(xt,{children:[r.jsx(B,{variant:"ghost",size:"sm",disabled:!P||O,title:a(P?f?"恢复默认:仅开启最快到期优先":"恢复默认:仅按手动顺序":"当前已经是默认规则"),onClick:()=>{AI(e,null)},children:a("恢复默认")}),r.jsx("span",{className:"mr-auto text-[10.5px] text-subtle",children:a(O?"保存中…":"改动即时生效")}),r.jsx(B,{variant:"default",disabled:O,onClick:t,children:a("完成")})]})]})})}function WNe(e,t){if(!e)return a("读取中…");const n=e.error||e.configError;if(n)return a("读取失败:{error}",{error:n});if(e.required===!1)return a("当前模型请求免人机验证");if(t?.state==="verifying")return a("正在验证…");if(t?.state==="error")return a("验证失败:{error}",{error:t.error});if(t?.state==="paused")return a("已暂停验证,需要时请手动重试");const s=`${Number(e.ready)||0} / ${Number(e.target)||3}`;return Number(e.startPlanAccounts)?Number(e.ready)>0?a("验证码令牌:{counts}",{counts:s}):e.needsTokens===!0?a("套餐池请求需要验证,请主动开始验证后重试请求"):a("没有近期套餐池请求,不生成验证码令牌"):a("未启用套餐池账号,不生成验证码令牌")}function YNe({accountId:e,disabled:t=!1,onBusy:n}){const[s,i]=p.useState(null),[o,l]=p.useState(null),[u,d]=p.useState(""),f=p.useRef(null),m=p.useRef(!0),g=p.useCallback(async()=>{const k=ft().workbuddyDesktop;try{const w=k?.zcodeCaptchaStats?await k.zcodeCaptchaStats():{error:a("验证码令牌池接口不可用")};m.current&&(i(w||null),ft().wbZcodeCaptchaPool?.status&&l(ft().wbZcodeCaptchaPool?.status?.()||null))}catch(w){m.current&&i({error:dn(w)})}},[]);p.useEffect(()=>{m.current=!0,g();const k=window.setInterval(()=>{g()},15e3),w=()=>{l(ft().wbZcodeCaptchaPool?.status?.()||null),g()};return window.addEventListener("zcode-captcha-status",w),()=>{m.current=!1,f.current?.abort(),n?.(!1),window.clearInterval(k),window.removeEventListener("zcode-captcha-status",w)}},[g,n]);async function v(){const k=ft().wbZcodeCaptchaPool;if(f.current||!k?.verify)return;const w=new AbortController;f.current=w,d("preparing"),n?.(!0);try{await k.verify(e,w.signal,S=>{m.current&&d(S)})}catch(S){m.current&&!w.signal.aborted&&S?.name!=="CaptchaCancelledError"&&l({state:"error",error:dn(S)})}finally{f.current===w&&(f.current=null),m.current&&(d(""),n?.(!1),g())}}const b=!!u,y=!!(s?.error||s?.configError||o?.state==="error");return r.jsxs("div",{className:"flex flex-wrap items-center gap-2",title:a("后台只读取状态,不会自动弹出验证码;验证结果一次性使用,短时间内过期。"),children:[r.jsx(Ka,{variant:y?"destructive":s?.required===!1?"success":"warning"}),r.jsx("span",{className:Ne("text-[12.5px]",y&&"text-destructive"),children:WNe(s,o)}),r.jsxs("div",{className:"ml-auto flex flex-wrap items-center gap-2",children:[s?.required!==!1&&Number(s?.startPlanAccounts)>0?r.jsx(B,{variant:"outline",size:"xs",disabled:t||b||!!(s?.error||s?.configError)||!ft().wbZcodeCaptchaPool?.verify,onClick:()=>{v()},children:a(b?"正在验证…":"开始验证")}):null,b?r.jsx(B,{variant:"outline",size:"xs",disabled:u==="submitting",onClick:()=>f.current?.abort(),children:a("取消验证")}):null,r.jsx(B,{variant:"ghost",size:"xs",disabled:b||t,onClick:()=>{g()},children:a("刷新")})]})]})}function XNe({plan:e,hasJwt:t,onChange:n}){return r.jsxs(ct,{orientation:"horizontal",className:"field-row mt-2.5",children:[r.jsx(ut,{htmlFor:"account-plan-channel",children:a("使用套餐")}),r.jsxs(Pt,{value:e,onValueChange:s=>n(String(s)),children:[r.jsx(Mt,{id:"account-plan-channel",className:"min-w-[220px]",children:r.jsx(It,{children:sSe(e)})}),r.jsxs(_t,{children:[r.jsx(Ze,{value:Pq,children:a("编码套餐(Coding Plan)— 走开放平台端点,消耗开放平台的额度(订阅套餐 / 资源包 / 充值余额)")}),r.jsx(Ze,{value:Uh,children:a("套餐池(Start Plan)— 走 zcode.z.ai 端点,消耗 ZCode 套餐池的额度(新用户体验额度 / 活动领取)")})]})]}),e===Uh&&!t?r.jsx("span",{className:"detail text-destructive",children:a("该账号没有套餐登录态(jwt),套餐池通道会失败:请重新登录该账号")}):null,e===Uh?r.jsx("p",{className:"detail",children:a("需要人机验证时,在该账号的「套餐明细」中主动开始验证。")}):null]})}const QNe={sub2api:{label:"Sub2API",endpoint:"{base}/v1/usage",note:a("用这条账号的 API Key 查询,不需要额外配置。"),fields:[]},new_api:{label:"NewAPI",endpoint:"{base}/api/user/self + /api/status",note:a("用 NewAPI 站点的个人访问令牌查询账户余额(不是这条账号的上游 API Key)。令牌在站点的「个人设置」里生成,只有旧版 / 定制站点才需要额外填用户 ID。"),fields:[{key:"accessToken",label:a("NewAPI 个人访问令牌"),secret:!0,placeholder:a("在 NewAPI 站点「个人设置」里生成的访问令牌"),hint:a("必填;留空 = 不修改,清除用右边的按钮")},{key:"userId",label:a("NewAPI 用户 ID"),placeholder:a("旧版 / 定制站点才需要,新版可留空"),hint:a("可留空:新版请求头只认令牌;旧版会把用户 ID 放进 New-Api-User 头")}]},deepseek:{label:"DeepSeek",endpoint:"{base}/user/balance",note:a("用这条账号的 API Key 查询,不需要额外配置。"),fields:[]},opencode:{label:"OpenCode Go",endpoint:"{base}/v1/usage",note:a("用这条账号的 API Key 查询订阅用量,不需要额外配置;读数展开成 5 小时 / 每周 / 每月三个窗口。"),fields:[]},sensenova:{label:"商汤日日新",endpoint:"platform.sensenova.cn 控制台",note:a("用商汤日日新控制台的账号密码查询(与推理用的 API Key 不是同一套)。网关会自动换取登录票并缓存,过期后自动重登,不需要手动维护。"),fields:[{key:"username",label:a("账号"),placeholder:a("商汤日日新控制台的登录账号"),hint:a("必填")},{key:"password",label:a("密码"),secret:!0,placeholder:a("商汤日日新控制台的登录密码"),hint:a("留空 = 不修改,清除用右边的按钮")}]},zhipu:{label:"智谱",endpoint:"bigmodel.cn 控制台",note:a("用 bigmodel.cn 控制台的访问令牌查询账户余额(人民币元)。令牌是登录后浏览器 Cookie `bigmodel_token_production` 的值:开发者工具 → 应用(Application)→ Cookie 里复制。"),fields:[{key:"token",label:a("访问令牌"),secret:!0,placeholder:a("bigmodel_token_production 的值"),hint:a("必填;留空 = 不修改,清除用右边的按钮")}]},zhipu_zai:{label:"智谱(z.ai 国际)",endpoint:"api.z.ai 控制台",note:a("用这条账号的 API Key 生成签名后查询账户余额(美元),不需要额外配置。要求 API Key 是 z.ai 的「id.secret」形态(控制台生成的 Key 就是)。"),fields:[]}};function by(e){return e?QNe[e]??null:null}function ZNe(e,t){return t.secret?t.key==="accessToken"?e?.hasAccessToken===!0:t.key==="password"?e?.hasPassword===!0:t.key==="token"?e?.hasToken===!0:!1:!1}function JNe(e){const t=String(e?.scheme||"");return t==="new_api"?e?.hasAccessToken===!0:t==="sensenova"?String(e?.username||"").trim()!==""&&e?.hasPassword===!0:t==="zhipu"?e?.hasToken===!0:!0}function eCe(e){return{userId:String(e?.userId||""),username:String(e?.username||""),accessToken:"",password:"",token:""}}function tCe(e,t){const n=by(e);if(!n||!n.fields.length)return null;const s={};for(const i of n.fields){const o=String(t[i.key]??"").trim();if(i.secret){o&&(s[i.key]=o);continue}s[i.key]=o}return Object.keys(s).length?s:null}function nCe({field:e,value:t,configured:n,onValue:s,onClear:i,clearBusy:o,idPrefix:l}){const u=`${l}-${e.key}`;return r.jsxs(ct,{orientation:"horizontal",className:"field-row mt-2.5",children:[r.jsx(ut,{htmlFor:u,children:e.label}),r.jsx(ze,{id:u,className:"min-w-[220px]",type:e.secret?"password":"text",autoComplete:e.secret?"new-password":"off",placeholder:n?a("已配置,留空则不修改"):e.placeholder,title:e.hint,value:t,onChange:d=>s(d.currentTarget.value)}),n&&i?r.jsx(B,{variant:"outline",size:"sm",disabled:o===!0,onClick:i,title:a("清除已配置的 {label}",{label:e.label}),children:a("清除")}):null]})}function rCe({spec:e,values:t,configured:n,onValue:s,onClear:i,clearBusy:o,idPrefix:l}){return r.jsxs(r.Fragment,{children:[r.jsxs("p",{className:"detail mt-2.5",children:[a("余额查询方案:{label}",{label:e.label}),r.jsx("span",{className:"ml-1 text-subtle",children:e.endpoint})," — ",e.note]}),e.fields.map(u=>r.jsx(nCe,{field:u,idPrefix:l,value:t[u.key]||"",configured:n[u.key]===!0,onValue:d=>s(u.key,d),onClear:i?()=>i(u.key):void 0,clearBusy:o},u.key))]})}function pr({value:e,onValueChange:t,options:n,placeholder:s="",displayValue:i,searchPlaceholder:o=Z("搜索…"),emptyHint:l=Z("没有匹配的选项"),disabled:u,className:d,id:f,title:m,searchable:g=!0,...v}){const[b,y]=p.useState(""),k=n.find(S=>S.value===e)??null,w=i??k?.label??(e||s);return g?r.jsxs(YV,{items:n,value:k,disabled:u,autoHighlight:!0,inputValue:b,onInputValueChange:y,onOpenChange:()=>y(""),itemToStringLabel:S=>S.label,itemToStringValue:S=>S.value,isItemEqualToValue:(S,N)=>S.value===N.value,filter:(S,N)=>`${S.label} ${S.value} ${S.searchText||""}`.toLowerCase().includes(N.trim().toLowerCase()),onValueChange:S=>{S&&!S.disabled&&t(S.value)},children:[r.jsx(QV,{id:f,className:d,title:m??w,"aria-label":v["aria-label"],children:r.jsx(XV,{children:w})}),r.jsxs(ZV,{children:[r.jsx("div",{className:"shrink-0 border-b border-hairline p-2",children:r.jsx(JV,{placeholder:o,"aria-label":o,autoComplete:"off"})}),r.jsx(nK,{children:l}),r.jsx(eK,{children:S=>r.jsx(tK,{value:S,disabled:S.disabled,title:S.label,children:S.label},S.value)})]})]}):r.jsxs(Pt,{value:e,disabled:u,onValueChange:S=>{typeof S=="string"&&t(S)},children:[r.jsx(Mt,{id:f,className:d,title:m??w,"aria-label":v["aria-label"],children:r.jsx(It,{children:w})}),r.jsx(_t,{children:n.map(S=>r.jsx(Ze,{value:S.value,disabled:S.disabled,children:S.label},S.value))})]})}let Au=null,yy=null;function sCe(){if(Au)return Promise.resolve(Au);if(yy)return yy;const t=window.workbuddyDesktop?.getClientIdentification?.();return t?(yy=t.then(n=>{const s=[];for(const i of n?.builtins||[]){const o=typeof i.id=="string"?i.id:"",l=typeof i.name=="string"?i.name:"",u=typeof i.ua=="string"?i.ua.trim():"";o&&l&&u&&s.push({id:o,name:l,ua:u})}return Au=s,s}).catch(()=>(Au=[],Au)).finally(()=>{yy=null}),yy):(Au=[],Promise.resolve(Au))}function jy(){const[e,t]=p.useState(()=>Au||[]);return p.useEffect(()=>{if(Au)return;let n=!0;return sCe().then(s=>{n&&t(s)}),()=>{n=!1}},[]),e}function wy(e){const t=window,n=t.wbProviders?.all?.()||t.wbApp?.getState?.()?.accounts?.providers;return Array.isArray(n)?n.find(i=>i?.id===e)?.userAgentOverridable!==!1:!0}async function mG(e,t,n){const s=n.trim();if(!s||!e||!wy(t))return;const i=window.__TAURI_INTERNALS__;if(i?.invoke)try{await i.invoke("api_request",{request:{method:"PATCH",path:`/api/accounts/${encodeURIComponent(e)}`,body:{userAgent:s}}})}catch{}}function pG(e){const t=e,n=t?.account?.id;if(typeof n=="string"&&n)return n;for(const s of["accountId","accountUid"]){const i=t?.session?.[s];if(typeof i=="string"&&i)return i}}function Ug({id:e,value:t,onChange:n,presets:s,disabled:i,className:o}){const l=s.find(u=>u.ua===t);return r.jsxs("div",{className:`flex min-w-0 items-center gap-2 ${o||""}`,children:[r.jsx(ze,{id:e,className:"min-w-0 flex-1",type:"text",maxLength:1024,spellCheck:!1,autoComplete:"off",disabled:i,placeholder:a("留空使用该提供商默认值"),value:t,onChange:u=>n(u.currentTarget.value)}),r.jsx(pr,{value:l?.id??"",disabled:i||!s.length,className:"w-[172px] shrink-0","aria-label":a("选择预置客户端"),displayValue:l?.name||a("选择预置客户端"),options:[{value:"",label:a("不使用预置")},...s.map(u=>({value:u.id,label:u.name,searchText:u.ua}))],onValueChange:u=>{if(!u){n("");return}const d=s.find(f=>f.id===u);d&&n(d.ua)}})]})}function ha({name:e,size:t=16}){return r.jsx("span",{className:"acct-dlg-icon","aria-hidden":"true",dangerouslySetInnerHTML:{__html:ft().wbIcons?.icon?.(e,t)||""}})}function wc({title:e,action:t,children:n}){return r.jsxs("section",{className:"acct-dlg-group-wrap",children:[r.jsxs("div",{className:"acct-dlg-group-label",children:[r.jsx("span",{children:e}),t?r.jsx("span",{className:"acct-dlg-label-action",children:t}):null]}),r.jsx("div",{className:"acct-dlg-group",children:n})]})}function aCe({configured:e,value:t,onChange:n,onClear:s,clearBusy:i}){return r.jsx(wc,{title:a("余额查询凭证"),action:r.jsx(Ee,{shape:"tag",variant:e?"success":"secondary",children:a(e?"已配置":"未配置")}),children:r.jsxs(ct,{className:"acct-dlg-field",children:[r.jsxs("div",{className:"acct-dlg-field-head",children:[r.jsx(ut,{htmlFor:"account-balance-token-input",children:a("余额查询凭证")}),e?r.jsx(B,{variant:"ghost",size:"xs",disabled:i,onClick:s,className:"acct-dlg-clear",children:a("清除")}):null]}),r.jsx(ze,{id:"account-balance-token-input",type:"password",autoComplete:"new-password",placeholder:a(e?"已配置,留空则不修改":"一般不用填"),value:t,onChange:o=>n(o.currentTarget.value)}),r.jsx(wr,{children:a("积分查询已复用转发用的登录凭证,这里通常留空即可。只有旧版本填过、或从旧代理导入过凭证时才有值")})]})})}function iCe({hasApiKey:e,noAuth:t,value:n,onValue:s,onToggleNoAuth:i,onClear:o,clearBusy:l}){const[u,d]=p.useState(!1),f=!!n.trim();return r.jsxs(wc,{title:a("账号凭证"),action:r.jsx(Ee,{shape:"tag",variant:t||f?"secondary":e?"success":"warning",children:a(t?"无需鉴权":f?"新密钥待保存":e?"已配置":"未配置凭证")}),children:[r.jsxs(ct,{className:"acct-dlg-field",children:[r.jsx(ut,{children:a("鉴权方式")}),r.jsxs(bg,{value:t?"none":"key",disabled:l,"aria-label":a("鉴权方式"),className:"acct-dlg-choice-grid",onValueChange:m=>i(m==="none"),children:[r.jsxs(Ae,{className:"acct-dlg-choice","data-selected":!t||void 0,children:[r.jsx(Mh,{value:"key"}),r.jsxs("span",{children:[r.jsx("strong",{children:"API Key"}),r.jsx("small",{children:a("使用密钥访问上游")})]})]}),r.jsxs(Ae,{className:"acct-dlg-choice","data-selected":t||void 0,children:[r.jsx(Mh,{value:"none"}),r.jsxs("span",{children:[r.jsx("strong",{children:a("无需鉴权")}),r.jsx("small",{children:a("本地服务或无需凭证的上游")})]})]})]})]}),r.jsxs(ct,{className:"acct-dlg-field",children:[r.jsxs("div",{className:"acct-dlg-field-head",children:[r.jsx(ut,{htmlFor:"account-api-key-input",children:"API Key"}),e&&!t?r.jsx(B,{variant:"ghost",size:"xs",disabled:l,onClick:o,className:"acct-dlg-clear",children:a("清除已存密钥")}):null]}),r.jsxs(zs,{"data-disabled":t||l,children:[r.jsx(Bs,{id:"account-api-key-input",type:u&&!t?"text":"password",autoComplete:"new-password",spellCheck:!1,disabled:t||l,placeholder:e?a("留空保留当前密钥,输入新密钥以替换"):"sk-…",value:n,onChange:m=>s(m.currentTarget.value)}),r.jsx(As,{align:"inline-end",children:r.jsx(Db,{size:"icon-xs",disabled:t||l,"aria-pressed":u,"aria-label":a(u?"隐藏新输入的密钥":"显示新输入的密钥"),onClick:()=>d(m=>!m),children:r.jsx(ha,{name:u?"eyeOff":"eye"})})})]}),r.jsx(wr,{children:a("原密钥不会回显;更换密钥不会改变账号 ID。")})]}),r.jsxs("div",{className:`acct-dlg-inline-note${t||!e&&!f?" warning":""}`,children:[r.jsx(ha,{name:t||!e?"info":"shield",size:14}),r.jsx("span",{children:a(t?"保存后将移除密钥,转发与拉取模型都不发送鉴权头。请确认上游确实无需凭证。":e||f?"留空不修改,替换后点击「保存更改」生效。":"当前没有凭证,转发时会跳过此账号。请填写密钥或选择「无需鉴权」。")})]})]})}const oCe=64;function lCe({provider:e,name:t,protocol:n,baseUrl:s,accountBaseUrl:i,count:o,emulation:l,onName:u,onProtocol:d,onBaseUrl:f,onEmulation:m,onRemove:g,onModels:v,onClearAccountBaseUrl:b,disabled:y}){const[k,w]=p.useState(l==="opencode"),S=ft().wbProviders?.PROTOCOL_OPTIONS||[{value:"chat_completions",label:"OpenAI - Chat Completions"},{value:"responses",label:"OpenAI - Responses"},{value:"anthropic",label:"Anthropic - Messages"}],N=S.find(A=>A.value===n)?.label||n,C=n==="anthropic"?"/v1/messages":n==="responses"?"/responses":"/chat/completions",T=i.trim(),P=T||s.trim(),O=P?`${P.replace(/\/+$/,"")}${C}`:"";return r.jsxs(r.Fragment,{children:[r.jsxs(Fe,{variant:"warning",className:"acct-dlg-scope-notice",role:"note",children:[r.jsx(ha,{name:"accounts"}),r.jsxs("div",{children:[r.jsx("strong",{children:a("正在编辑提供商共用配置")}),r.jsx("p",{children:a("「{name}」名下 {count} 个账号共用;修改协议或地址可能中断正在进行的请求。",{name:e.name||e.id,count:o})})]})]}),r.jsxs(wc,{title:a("连接参数"),children:[r.jsxs("div",{className:"acct-dlg-field-grid",children:[r.jsxs(ct,{className:"acct-dlg-field",children:[r.jsx(ut,{htmlFor:"account-provider-name",children:a("提供商名称")}),r.jsx(ze,{id:"account-provider-name",maxLength:oCe,disabled:y,value:t,onChange:A=>u(A.currentTarget.value)})]}),r.jsxs(ct,{className:"acct-dlg-field",children:[r.jsx(ut,{htmlFor:"account-provider-protocol",children:a("协议")}),r.jsxs(Pt,{value:n,disabled:y,onValueChange:A=>d(String(A)),children:[r.jsx(Mt,{id:"account-provider-protocol",children:r.jsx(It,{children:N})}),r.jsx(_t,{children:S.map(A=>r.jsx(Ze,{value:A.value,children:A.label},A.value))})]})]}),r.jsxs(ct,{className:"acct-dlg-field acct-dlg-field-full",children:[r.jsxs("div",{className:"acct-dlg-field-head",children:[r.jsx(ut,{htmlFor:"account-provider-baseurl",children:"Base URL"}),T?r.jsx(B,{variant:"ghost",size:"xs",disabled:y,className:"acct-dlg-clear",onClick:b,children:a("改回跟随提供商")}):null]}),r.jsx(ze,{id:"account-provider-baseurl",className:"mono",disabled:y,spellCheck:!1,placeholder:a("OpenAI 兼容填到 /v1;Anthropic 填根地址"),value:s,onChange:A=>f(A.currentTarget.value)}),r.jsx(wr,{children:a("填写接口基址,无需追加 {path}。",{path:C})}),T?r.jsxs("div",{className:"acct-dlg-inline-note warning",children:[r.jsx(ha,{name:"info",size:14}),r.jsx("span",{children:a("这个账号单独存了一份地址:{url},转发时优先用它。上面改的是提供商共用地址,不会覆盖它。",{url:T})})]}):null]})]}),O?r.jsxs("div",{className:"acct-dlg-endpoint",children:[r.jsx("span",{children:a("请求端点")}),r.jsx("code",{children:O})]}):null,r.jsxs("div",{className:"acct-dlg-model-link",children:[r.jsx("span",{children:a("模型清单与映射在「模型管理」中维护。")}),r.jsxs(B,{variant:"link",size:"xs",disabled:y,onClick:v,children:[a("模型管理"),r.jsx(ha,{name:"caretRight",size:12})]})]})]}),r.jsx("div",{className:"acct-dlg-group-label",children:a("高级兼容")}),r.jsxs(gs,{open:k,onOpenChange:w,className:"acct-dlg-advanced",children:[r.jsxs(xs,{disabled:y,className:"acct-dlg-advanced-trigger",children:[r.jsx(ha,{name:"sliders"}),r.jsx("span",{children:a("高级兼容")}),r.jsx("small",{children:a(l==="opencode"?"已开启":"默认关闭")}),r.jsx(ha,{name:"caretRight",size:13})]}),r.jsxs(vs,{className:"acct-dlg-advanced-content",children:[r.jsxs(ct,{className:"acct-dlg-toggle-field",children:[r.jsxs("div",{children:[r.jsx(ut,{htmlFor:"account-provider-emulation",children:a("模拟 OpenCode 官方客户端")}),r.jsx(wr,{children:a("仅用于 OpenCode Zen 这类上游,普通提供商请保持关闭。")})]}),r.jsx(St,{id:"account-provider-emulation",checked:l==="opencode",disabled:y,onCheckedChange:A=>m(A?"opencode":"")})]}),r.jsx("p",{className:"detail acct-dlg-advanced-note",children:a("开启后会改写请求体,补齐会话头与占位工具;未填密钥时使用匿名凭证 public。")})]})]}),r.jsxs("div",{className:"acct-dlg-danger",children:[r.jsxs("div",{children:[r.jsx("h3",{children:a("删除提供商")}),r.jsx("p",{children:a("将同时删除名下 {count} 个账号,无法恢复。",{count:o})})]}),r.jsx(B,{variant:"outline",size:"sm",disabled:y,onClick:g,className:"acct-dlg-delete",children:a("删除提供商")})]})]})}function cCe(e,t){const n=tn(e);return t.filter(s=>s.id!==e.id&&tn(s)===n)}function uCe(e){return Ci(e)||e?.id||""}function gG({id:e,onClose:t,initialAccount:n,initialPane:s="basic",routeContext:i}){const[o,l]=p.useState(()=>n||_l(e)),[u,d]=p.useState(o?.enabled!==!1),[f,m]=p.useState(o?.allowRouteSkip!==!1),[g,v]=p.useState(o?.name||""),[b,y]=p.useState(o?.userAgent||""),k=jy(),w=wy(tn(o||{})),[S,N]=p.useState(()=>Lg(o?.proxy)),[C,T]=p.useState(""),[P,O]=p.useState(()=>nI(o)),[A,R]=p.useState(!1),[M,_]=p.useState(""),[L,$]=p.useState(null),[D,F]=p.useState(""),[V,q]=p.useState("chat_completions"),[Q,X]=p.useState(""),[U,z]=p.useState(""),[K,J]=p.useState(""),[ee,H]=p.useState(o?.noAuth===!0),[G,Y]=p.useState(()=>RI(o)),[se,re]=p.useState(()=>eCe(o?.balanceQuery)),[ne,de]=p.useState(()=>F8(o)),[ie,oe]=p.useState(s),[je,te]=p.useState(()=>String(Number(o?.maxConcurrent)||0)),[le,he]=p.useState(!1),ce=p.useRef(!1),ye=p.useRef(null),fe=p.useRef({}),Le=p.useRef({enabled:u,allowRouteSkip:f,name:g,userAgent:b,proxyDraft:S,planChannel:P,usageDraft:G,balanceQueryDraft:se,limiterDraft:ne,concDraft:je,noAuthDraft:ee}),pe=tn(o).startsWith("custom-")?a("凭证设置"):a("凭证与套餐"),xe={basic:{title:a("基本信息"),description:a("设置账号名称、启用状态与转发行为。"),icon:"sliders"},credential:{title:pe,description:a("管理当前账号的凭证与可用套餐。"),icon:"key"},query:{title:a("查询设置"),description:a("配置余额查询凭证、自动刷新间隔与失败重试。"),icon:"refresh"},limiter:{title:a("限制器"),description:a("用明确的规则保护当前账号的额度。"),icon:"shield"},network:{title:a("网络"),description:a("设置当前账号访问上游的出网方式。"),icon:"proxies"},provider:{title:a("连接设置"),description:a("统一管理提供商的协议、地址与兼容选项。"),icon:"agent"}},Se=xe[ie];p.useLayoutEffect(()=>{ye.current&&(ye.current.scrollTop=fe.current[ie]||0)},[ie]);function ge(ke){ye.current&&(fe.current[ie]=ye.current.scrollTop),oe(ke)}if(p.useEffect(()=>{let ke=!0;$(null);const Xe=n||_l(e);return Xe?(Promise.resolve(ft().wbCustomProvidersUi?.find?.(tn(Xe))).then(Qe=>{!ke||!Qe||($(Qe),F(Qe.name||""),q(Qe.protocol||"chat_completions"),X(Qe.baseUrl||""),z(typeof Qe.clientEmulation=="string"?Qe.clientEmulation:""))}).catch(()=>{}),()=>{ke=!1}):()=>{ke=!1}},[e]),!o)return r.jsx(at,{open:!0,onOpenChange:ke=>{ke||t()},children:r.jsxs(it,{children:[r.jsx(ot,{children:r.jsx(st,{children:a("账号设置")})}),r.jsx(lt,{children:r.jsx("p",{className:"detail",children:a("账号不存在,请刷新后重试。")})}),r.jsxs(xt,{children:[r.jsx("div",{className:"mr-auto"}),r.jsx(B,{variant:"outline",onClick:t,children:a("关闭")})]})]})});const ue=o,be=cCe(ue,Ml()),ve=tn(ue)==="catpaw",De=tn(ue).startsWith("custom-"),Ie=wq(L,ue.baseUrl)||S.mode==="rotate",We=by(ue.balanceQuery?.scheme),nt={};for(const ke of We?.fields??[])nt[ke.key]=ZNe(ue.balanceQuery,ke);const kt=!!(We&&We.fields.length)&&!JNe(ue.balanceQuery),Je=be.length+1,on=Le.current,nn=(ke,Xe)=>JSON.stringify(ke)===JSON.stringify(Xe),On={basic:u!==on.enabled||f!==on.allowRouteSkip||(g.trim()||on.name)!==on.name||b.trim()!==on.userAgent||je!==on.concDraft,credential:!!(C.trim()||K.trim())||ee!==on.noAuthDraft||P!==on.planChannel,query:!nn(G,on.usageDraft)||!nn(se,on.balanceQueryDraft),limiter:!nn(ne,on.limiterDraft),network:!nn(S,on.proxyDraft),provider:!!(L&&(D.trim()!==(L.name||"")||V!==(L.protocol||"chat_completions")||Q.trim()!==(L.baseUrl||"")||U!==(L.clientEmulation||"")))},Rn=Object.values(On).filter(Boolean).length,gt=A||le;async function sn(ke,Xe,Qe,Yt=!1){if(ce.current)return!1;ce.current=!0,he(!0);try{const Rt=ft().wbConfirm?.ask;if(!Rt)throw new Error(a("确认弹窗不可用,请重新打开页面"));return await Rt({title:ke,html:Yo(Xe).replace(/\n/g,"
    "),okText:Qe,okClass:Yt?"danger":"primary",bodyClass:Yt?"danger-zone":""})}catch(Rt){return Ct(dn(Rt),"err"),!1}finally{ce.current=!1,he(!1)}}async function Ke(){gt||ce.current||Rn&&!await sn(a("放弃未保存的修改?"),a("所有分区中尚未保存的修改都会被放弃。已确认的独立清除操作不受影响。"),a("放弃修改"))||t()}async function zt(){if(!(gt||ce.current)&&await sn(a("清除余额查询凭证?"),a("确认后立即生效,不受底部保存按钮控制。通常可继续复用转发用的登录凭证。"),a("清除"),!0)){ce.current=!0,R(!0);try{const ke=await Gh(e,{balanceToken:null});l(ke),T(""),Ct(a("✅ 已清除余额查询凭证"));try{await Qo()}catch(Xe){Ct(a("账号已保存,但列表刷新失败:{error}",{error:dn(Xe)}),"err")}}catch(ke){Ct(a("清除失败:{error}",{error:dn(ke)}),"err")}finally{ce.current=!1,R(!1)}}}async function ht(){if(!(gt||ce.current)&&await sn(a("清除已存 API Key?"),a("确认后立即生效,不受底部保存按钮控制。没有凭证且未开启「无需鉴权」时,此账号将被转发跳过。"),a("清除"),!0)){ce.current=!0,R(!0);try{const ke=await Gh(e,{apiKey:null});l(ke),J(""),Ct(a("✅ 已清除 API Key(该账号现在没有凭证,转发会被跳过)"));try{await Qo()}catch(Xe){Ct(a("账号已保存,但列表刷新失败:{error}",{error:dn(Xe)}),"err")}}catch(ke){Ct(a("清除失败:{error}",{error:dn(ke)}),"err")}finally{ce.current=!1,R(!1)}}}async function Tt(){if(gt||ce.current)return;const ke=Q.trim();if(await sn(a("改回跟随提供商?"),a("这个账号将改用提供商当前保存的 Base URL:{url}。确认后立即生效,不受底部保存按钮控制。",{url:ke||"—"}),a("改回跟随"))){ce.current=!0,R(!0);try{const Xe=await Gh(e,{baseUrl:null});l(Xe),Ct(a("✅ 已改回跟随提供商的 Base URL"));try{await Qo()}catch(Qe){Ct(a("账号已保存,但列表刷新失败:{error}",{error:dn(Qe)}),"err")}}catch(Xe){Ct(a("操作失败:{message}",{message:dn(Xe)}),"err")}finally{ce.current=!1,R(!1)}}}async function Ht(ke){if(!(gt||ce.current)&&await sn(a("清除查询凭证?"),a("确认后立即生效,余额查询可能显示「未配置」。取消账号设置不会恢复已清除的凭证。"),a("清除"),!0)){ce.current=!0,R(!0);try{const Xe=await Gh(e,{balanceQuery:{[ke]:null}});l(Xe),re(Qe=>({...Qe,[ke]:""})),Ct(a("✅ 已清除查询凭证"));try{await Qo()}catch(Qe){Ct(a("账号已保存,但列表刷新失败:{error}",{error:dn(Qe)}),"err")}}catch(Xe){Ct(a("清除失败:{error}",{error:dn(Xe)}),"err")}finally{ce.current=!1,R(!1)}}}function jt(){if(!De)return null;const ke=K.trim(),Xe={};return ee?ue.noAuth!==!0&&(Xe.noAuth=!0):ke?Xe.apiKey=ke:ue.noAuth===!0&&(Xe.noAuth=!1),Object.keys(Xe).length?Xe:null}function an(){if(!L)return null;const ke=D.trim(),Xe=Q.trim();if(!ke)return{error:a("请填写提供商名称")};if(!Xe)return{error:a("请填写提供商的 Base URL")};try{if(!["http:","https:"].includes(new URL(Xe).protocol))throw new Error("invalid protocol")}catch{return{error:a("请填写有效的 HTTP 或 HTTPS 地址")}}const Qe=typeof L.clientEmulation=="string"?L.clientEmulation:"";return L.name===ke&&L.protocol===V&&L.baseUrl===Xe&&Qe===U?null:{id:L.id,name:ke,protocol:V,baseUrl:Xe,clientEmulation:U}}async function Xt(){if(gt||ce.current||!Rn)return;_("");let ke;try{ke=yc(S)}catch(Pn){ge("network"),_(r.jsx("span",{className:"text-destructive",children:dn(Pn)})),Ct(dn(Pn),"err");return}const Xe=an();if(Xe&&"error"in Xe){ge("provider"),_(r.jsx("span",{className:"text-destructive",children:Xe.error}));return}const Qe=Si(ue)?kNe(ue,G):null;if(Qe&&"error"in Qe){ge("query"),_(r.jsx("span",{className:"text-destructive",children:Qe.error}));return}const Yt=yNe(ue,ne),Rt=tCe(ue.balanceQuery?.scheme,se),fn=jt()||{},At=Number(je);if(!Number.isFinite(At)||At<0){ge("basic"),_(r.jsx("span",{className:"text-destructive",children:a("并发上限必须是 0~{max} 的整数",{max:Su})})),Ct(a("并发上限必须是 0~{max} 的整数",{max:Su}),"err");return}const Re=Math.min(Su,Math.round(At)),mt=Number(ue.maxConcurrent)||0,Bt=Re!==mt?{maxConcurrent:Re}:{};if(!(Xe&&!await sn(a("保存提供商共用配置?"),a("「{name}」名下 {count} 个账号共用这些连接设置。修改协议或 Base URL 可能中断正在进行的请求。",{name:L?.name||L?.id||"",count:Je}),a("确认保存")))){ce.current=!0,R(!0);try{const Pn=ve&&C.trim()?{balanceToken:C.trim()}:{},mn=JS(ue)&&P!==nI(ue)?{zcodePlan:P}:{},vn=g.trim()||ue.name,Qn=b.trim(),Ns=await Gh(e,{...vn!==ue.name?{name:vn}:{},...Qn!==(ue.userAgent||"").trim()?{userAgent:Qn}:{},enabled:u,allowRouteSkip:f,proxy:ke,...Pn,...mn,...fn,...Bt,...Rt?{balanceQuery:Rt}:{},...Qe&&"patch"in Qe?Qe.patch:{},...Yt&&"patch"in Yt?Yt.patch:{}});if((vn!==ue.name||ue.nameCustom===!0)&&Ns.nameCustom!==!0)throw new Error(a("账号更新结果未确认,请刷新后核对设置"));if(l(Ns),Xe)try{const Cr=ft().wbCustomProvidersUi?.update;if(!Cr)throw new Error(a("账号更新接口不可用,请重新打开页面"));await Cr(Xe)}catch(Cr){ge("provider"),_(r.jsx("span",{className:"text-destructive",children:a("账号已保存,但提供商未更新:{error}",{error:dn(Cr)})}));try{await Qo()}catch(Qr){Ct(a("账号已保存,但列表刷新失败:{error}",{error:dn(Qr)}),"err")}R(!1);return}t(),Ct(a("✅ 账号设置已保存"));try{await Qo(),await Ig()}catch(Cr){Ct(a("账号已保存,但列表刷新失败:{error}",{error:dn(Cr)}),"err")}}catch(Pn){_(r.jsx("span",{className:"text-destructive",children:dn(Pn)})),Ct(a("保存失败:{error}",{error:dn(Pn)}),"err")}finally{ce.current=!1,R(!1)}}}const gn=Number(Ga(tn(ue)).concurrencyDefault)||0,un=ve||De||JS(ue),lr=["basic",...un?["credential"]:[],...Si(ue)?["query"]:[],"limiter","network"],yn=L?.name||ft().wbProviders?.labelOf?.(tn(ue))||tn(ue);async function xn(){if(!(gt||ce.current||!L)){ce.current=!0,he(!0);try{const ke=ft().wbCustomProvidersUi?.remove;if(!ke)throw new Error(a("账号更新接口不可用,请重新打开页面"));await ke(L.id)&&t()}catch(ke){Ct(a("删除失败:{error}",{error:dn(ke)}),"err")}finally{ce.current=!1,he(!1)}}}async function jn(){gt||ce.current||Rn&&!await sn(a("放弃未保存的修改?"),a("前往模型管理会关闭账号设置,尚未保存的修改不会生效。"),a("前往模型管理"))||(t(),ft().wbApp?.showPage?.("gateway"))}return r.jsx(at,{open:!0,onOpenChange:(ke,Xe)=>{ke||(Xe.cancel(),Ke())},children:r.jsxs(it,{className:"acct-settings-dialog",showCloseButton:!gt,children:[r.jsxs(ot,{className:"acct-dlg-header",children:[r.jsx("div",{className:"acct-dlg-avatar",children:r.jsx(ha,{name:De?"agent":"accounts",size:23})}),r.jsxs("div",{className:"acct-dlg-identity",children:[r.jsxs("div",{className:"acct-dlg-title-row",children:[r.jsx(st,{children:a("账号设置")}),De?r.jsx(Ee,{variant:"secondary",shape:"tag",children:a("自定义 API")}):null]}),r.jsxs("p",{children:[r.jsx("span",{children:uCe(o)}),r.jsx("span",{className:"acct-dlg-title-dot",children:"·"}),r.jsxs("span",{className:`acct-dlg-account-state${o.enabled===!1?" off":""}`,children:[r.jsx(Yk,{}),o.enabled===!1?a("已停用"):a("已启用")]})]})]})]}),r.jsx(lt,{className:"acct-dlg-body",children:r.jsxs("div",{className:"acct-dlg",children:[r.jsxs($h,{className:"acct-dlg-rail","aria-label":a("账号设置分组"),children:[r.jsxs(Go,{className:"acct-dlg-nav",children:[r.jsx("div",{className:"acct-dlg-nav-label",children:a("当前账号")}),lr.map(ke=>r.jsx(Ts,{active:ie===ke,title:xe[ke].title,disabled:gt,className:"shadow-none",icon:r.jsx(ha,{name:xe[ke].icon}),trailing:On[ke]?r.jsx("span",{className:"acct-dlg-dirty-dot","aria-label":a("有未保存的修改")}):void 0,onClick:()=>ge(ke),children:xe[ke].title},ke)),L?r.jsxs(r.Fragment,{children:[r.jsx("div",{className:"acct-dlg-nav-divider"}),r.jsxs("div",{className:"acct-dlg-nav-label",children:[a("提供商"),r.jsx("span",{children:a("共用")})]}),r.jsx(Ts,{active:ie==="provider",disabled:gt,title:xe.provider.title,icon:r.jsx(ha,{name:xe.provider.icon}),trailing:On.provider?r.jsx("span",{className:"acct-dlg-dirty-dot","aria-label":a("有未保存的修改")}):void 0,onClick:()=>ge("provider"),children:xe.provider.title})]}):null]}),L?r.jsxs("div",{className:"acct-dlg-rail-context",children:[r.jsxs("strong",{children:[r.jsx(ha,{name:"accounts",size:14}),yn]}),r.jsx("p",{children:a("{count} 个账号共用连接配置",{count:Je})})]}):null]}),r.jsxs("div",{className:"acct-dlg-main",children:[r.jsxs("div",{className:"acct-dlg-pane-head",children:[r.jsxs("div",{children:[r.jsx("h3",{children:Se.title}),r.jsx("p",{children:Se.description})]}),r.jsxs("span",{className:`acct-dlg-scope${ie==="provider"?" shared":""}`,children:[r.jsx(ha,{name:"accounts",size:13}),ie==="provider"?a("{count} 个账号共用",{count:Je}):a("仅当前账号")]})]}),r.jsx("div",{ref:ye,className:"acct-dlg-scroll","aria-busy":A,children:r.jsxs("div",{className:"acct-dlg-pane",inert:gt?!0:void 0,children:[ie==="basic"?r.jsxs(r.Fragment,{children:[r.jsxs(wc,{title:a("账号信息"),children:[r.jsxs(ct,{className:"acct-dlg-field",children:[r.jsx(ut,{htmlFor:"account-name-input",children:a("备注名")}),r.jsx(ze,{id:"account-name-input",maxLength:100,placeholder:a("账号显示名称"),value:g,onChange:ke=>v(ke.currentTarget.value)})]}),r.jsxs("div",{className:"acct-dlg-readonly",children:[r.jsx("span",{children:a("账号 ID")}),r.jsx("code",{children:ue.id})]}),r.jsxs(ct,{className:"acct-dlg-toggle-field",children:[r.jsxs("div",{children:[r.jsx(ut,{htmlFor:"account-enabled",children:a("启用账号")}),r.jsx(wr,{children:a("关闭后不参与转发,余额查询不受影响。")})]}),r.jsx(St,{id:"account-enabled",checked:u,onCheckedChange:d})]})]}),r.jsxs(wc,{title:a("转发行为"),children:[r.jsxs(ct,{className:"acct-dlg-toggle-field",children:[r.jsxs("div",{children:[r.jsx(ut,{htmlFor:"account-route-skip",children:a("失败后允许换号")}),r.jsx(wr,{children:a("关闭后,该账号转发失败时返回本次错误,不再顺延其他账号。禁用、无凭证和限制器等保护仍生效。")})]}),r.jsx(St,{id:"account-route-skip",checked:f,onCheckedChange:m})]}),r.jsxs(ct,{className:"acct-dlg-concurrency",children:[r.jsxs("div",{children:[r.jsx(ut,{htmlFor:"account-conc-input",children:a("并发上限")}),r.jsx(wr,{children:a("达到上限后,将请求交给其他账号。")})]}),r.jsx(ze,{id:"account-conc-input",type:"number",min:0,max:Su,step:1,value:je,onChange:ke=>te(ke.currentTarget.value)})]})]}),r.jsx("p",{className:"detail acct-dlg-hint",children:gn>0?a("0 = 按本家默认 {default}",{default:gn}):a("0 = 不限")}),w?r.jsx(wc,{title:a("请求标识"),children:r.jsxs(ct,{className:"acct-dlg-field",children:[r.jsx(ut,{htmlFor:"account-user-agent",children:"User-Agent"}),r.jsx(Ug,{id:"account-user-agent",value:b,onChange:y,presets:k,disabled:gt}),r.jsx(wr,{children:a("用于当前账号的对话、余额查询、模型拉取、模型测试、签到及凭证刷新等上游请求。留空使用提供商默认值;可选预置或直接填写。")})]})}):null,i?r.jsx("div",{className:"acct-dlg-route-context",children:i}):r.jsxs("p",{className:"detail acct-dlg-group-note",children:[r.jsx(ha,{name:"route",size:14}),a("在账号列表中拖动分组或行首把手,调整转发顺序。")]})]}):null,ie==="credential"&&un?r.jsxs(r.Fragment,{children:[ve?r.jsx(aCe,{configured:o.hasBalanceToken===!0,value:C,onChange:T,clearBusy:gt,onClear:()=>{zt()}}):null,De?r.jsx(iCe,{hasApiKey:ue.hasApiKey===!0,noAuth:ee,value:K,clearBusy:gt,onClear:()=>{ht()},onValue:ke=>{J(ke),ke.trim()&&H(!1)},onToggleNoAuth:ke=>{H(ke),ke&&J("")}}):null,JS(ue)?r.jsx(wc,{title:a("使用套餐"),children:r.jsx(XNe,{plan:P,hasJwt:o.canClaim===!0,onChange:O})}):null,L?r.jsxs("div",{className:"acct-dlg-related",children:[r.jsx(ha,{name:"agent",size:18}),r.jsxs("div",{children:[r.jsx("h3",{children:a("要修改连接地址或协议?")}),r.jsx("p",{children:a("{count} 个账号共用提供商的连接配置。",{count:Je})})]}),r.jsxs(B,{variant:"link",size:"xs",onClick:()=>ge("provider"),children:[a("连接设置"),r.jsx(ha,{name:"caretRight",size:12})]})]}):null]}):null,ie==="query"&&Si(ue)?r.jsxs(r.Fragment,{children:[r.jsx(wc,{title:a("余额查询"),children:r.jsx(H8,{draft:G,onChange:Y})}),We?r.jsxs(wc,{title:a("查询凭证"),action:r.jsx(Ee,{variant:"secondary",shape:"tag",children:We.label}),children:[r.jsx(rCe,{spec:We,values:se,configured:nt,onValue:(ke,Xe)=>re(Qe=>({...Qe,[ke]:Xe})),onClear:ke=>{Ht(ke)},clearBusy:gt,idPrefix:"account-balance-query"}),kt?r.jsx("p",{className:"detail acct-dlg-inline-note",children:a("查询凭证还没配齐:填好后余额列才有读数,在此之前会显示「未配置」。")}):null]}):null,r.jsxs("p",{className:"detail acct-dlg-group-note",children:[r.jsx(ha,{name:"info",size:14}),a("余额读数也是限制器余额规则的数据来源。")]})]}):null,ie==="limiter"?r.jsxs(r.Fragment,{children:[r.jsx(B8,{account:ue,draft:ne,onChange:de,allowBalance:Si(ue)}),r.jsxs("p",{className:"detail acct-dlg-group-note",children:[r.jsx(ha,{name:"info",size:14}),a("没有规则或全部停用时不限制;跳过后自动恢复,禁用后需手动启用。")]})]}):null,ie==="network"?r.jsxs(r.Fragment,{children:[r.jsxs(wc,{title:a("出网方式"),children:[r.jsx(pN,{draft:S,onChange:N,idPrefix:"account-proxy",allowRotate:Ie}),o.proxy?.error?r.jsx("p",{className:"detail text-destructive acct-dlg-block",children:a("当前代理不可用:{error}(不会自动改为直连)",{error:o.proxy.error})}):null]}),r.jsxs("p",{className:"detail acct-dlg-group-note",children:[r.jsx(ha,{name:"shield",size:14}),a("代理只作用于当前账号,不改变其他账号的出网方式。")]})]}):null,ie==="provider"&&L?r.jsx(lCe,{provider:L,count:Je,name:D,protocol:V,baseUrl:Q,accountBaseUrl:ue.baseUrl||"",emulation:U,onName:F,onProtocol:q,onBaseUrl:X,onEmulation:z,onClearAccountBaseUrl:()=>{Tt()},disabled:gt,onRemove:()=>{xn()},onModels:()=>{jn()}}):null]})})]})]})}),r.jsxs(xt,{className:"acct-dlg-footer",children:[r.jsxs("div",{className:`acct-dlg-save-state${Rn?" dirty":""}`,role:"status",children:[r.jsx(ha,{name:M?"info":Rn?"timer":"shield",size:16}),r.jsxs("div",{children:[r.jsx("strong",{children:M||(A?a("正在保存…"):Rn?a("{count} 个分区有未保存的更改",{count:Rn}):a("没有未保存的更改"))}),r.jsx("p",{children:On.provider?a("包含提供商共用配置,将影响 {count} 个账号",{count:Je}):a("各分区的更改将统一保存")})]})]}),r.jsxs("div",{className:"acct-dlg-footer-actions",children:[r.jsx(B,{variant:"outline",disabled:gt,onClick:()=>{Ke()},children:a("取消")}),r.jsx(B,{variant:"default",disabled:gt||!Rn,onClick:()=>{Xt()},children:a(A?"保存中…":"保存更改")})]})]})]})})}function dCe(){const e=p.useSyncExternalStore(Hh,()=>Sn());return e.dialog?e.dialog.kind==="settings"?r.jsx(gG,{id:e.dialog.id,onClose:xy},e.dialog.id):e.dialog.kind==="group"?r.jsx(hG,{provider:e.dialog.provider,onClose:xy},e.dialog.provider):r.jsx(TNe,{ids:e.dialog.ids,action:e.dialog.action,onClose:xy},e.dialog.ids.join(",")):null}function Zh(e){return!!(e&&["queued","runtime","starting","loading","registering"].includes(e.phase))}function Jh(e){return e?.phase==="failed"||e?.phase==="timeout"}function em(e,t){switch(e?.phase){case"queued":return t("等待加载");case"runtime":return t("准备运行环境");case"starting":return t("正在启动");case"loading":return t("正在加载");case"registering":return t("即将就绪");case"ready":return t("已就绪");case"failed":return t("加载失败");case"timeout":return t("初始化超时");case"blocked":return t("等待运行环境恢复");case"disabled":return t("已停用");default:return t("状态待确认")}}function xG(e,t,n=Date.now()){if(e?.error&&Jh(e))return e.error;switch(e?.phase){case"queued":return t("等待前面的插件完成,不代表加载失败。");case"runtime":return t("正在检查或准备脚本运行环境。");case"starting":return t("正在启动插件,账号将在就绪后自动恢复。");case"loading":return n-e.updatedAt>1e4?t("启动较慢,仍在加载;尚未收到失败结果。"):t("正在初始化插件,尚未收到失败结果。");case"registering":return t("初始化已完成,正在等待校验和登记。");case"ready":return t("插件已就绪,账号列表将自动同步。");case"timeout":return t("本次初始化超过等待时限,已停止;可查看诊断后重试。");case"blocked":return t("共享运行环境尚未就绪,本插件没有明确的加载失败结果。");case"failed":return t("本次加载未完成,请查看诊断。");default:return t("暂未取得明确的加载结果,不能据此判断启动失败。")}}let kc={value:null,error:"",receivedAt:0,unavailable:!1};const XI=new Set,ky=e=>(XI.add(e),()=>{XI.delete(e)}),Bl=()=>kc;function QI(e){kc={...kc,...e},XI.forEach(t=>t())}let kN;function nf(){kN?.()}function fCe(e){let t=!1,n=!1,s=!1,i,o,l=null,u=!1,d="",f=0;QI({value:null,error:"",receivedAt:0,unavailable:!1});const m=()=>{if(l){u=!0;return}l=(async()=>{do{u=!1;try{await e.refresh()}catch{}}while(!t&&u)})().finally(()=>{l=null})},g=async()=>{if(t||document.hidden)return;if(n){s=!0;return}n=!0,o=new AbortController;const y=setTimeout(()=>o?.abort(),8e3);try{const k=await e.read(o.signal);if(t||o.signal.aborted)return;if(!k||typeof k.bootId!="string"||typeof k.revision!="string"||!k.providers||!Array.isArray(k.packs))throw new Error("Invalid plugin startup status");f=0;const w=kc.value?.bootId!==k.bootId||kc.value?.revision!==k.revision;QI({value:k,error:k.error||"",receivedAt:Date.now(),unavailable:!1}),w&&e.onChange?.();const S=`${k.bootId}:${k.availabilityRevision}`,N=e.session();(d&&d!==S||!N||N.bootId!==k.bootId||N.availabilityRevision!==k.availabilityRevision)&&m(),d=S}catch(k){if(t)return;f+=1;const w=k?.status;QI({error:k instanceof Error?k.message:String(k),unavailable:w===404})}finally{if(clearTimeout(y),n=!1,o=void 0,!t){clearTimeout(i);const k=s?0:kc.unavailable?6e4:f?Math.min(3e4,2e3*f):kc.value?.pending||kc.value?.scriptOperation?.active?1500:2e4;s=!1,i=setTimeout(()=>{g()},k)}}},v=()=>{clearTimeout(i),g()},b=()=>{document.hidden?clearTimeout(i):v()};return kN=v,document.addEventListener("visibilitychange",b),v(),()=>{t=!0,clearTimeout(i),o?.abort(),kN===v&&(kN=void 0),document.removeEventListener("visibilitychange",b)}}function ZI(e,t){const n=kc.value?.packs.find(s=>s.id===e)?.startup;return t&&(!n||t.updatedAt>n.updatedAt)?t:n||t}function hCe(e){const t=e.providers.map(n=>{const s=kc.value?.providers[n.id];if(!s||n.startup&&n.startup.updatedAt>s.startup.updatedAt)return n;if(!s.enabled)return{...n,packId:s.packId,startup:s.startup,reason:s.packEnabled?"provider_disabled":"pack_disabled"};const i=s.startup,o=Jh(i)?i.phase==="timeout"?"load_timeout":"load_failed":Zh(i)||s.available?"loading":"not_loaded";return{...n,packId:s.packId,startup:i,reason:o}});return{...e,providers:t}}const SN=e=>e.reason==="load_failed"||e.reason==="load_timeout";function vG(e,t){return t==="all"?!0:t==="loading"?e.reason==="loading"||e.reason==="not_loaded":t==="missing"?e.reason==="not_installed":t==="disabled"?e.reason==="pack_disabled"||e.reason==="provider_disabled":SN(e)}function mCe(e,t){switch(e.reason){case"not_installed":return t("插件未安装");case"pack_disabled":return t("插件包已停用");case"provider_disabled":return t("提供商已停用");case"load_failed":return t("加载失败");case"load_timeout":return t("初始化超时");case"loading":return e.startup?em(e.startup,t):t("正在加载");default:return em(e.startup,t)}}function pCe(e,t,n){switch(e.reason){case"not_installed":return t("重新安装这个插件后自动回来");case"pack_disabled":return t("启用插件包后自动回来");case"provider_disabled":return t("启用这家提供商后自动回来");default:return xG(e.startup,t,n)}}function gCe(e,t){return e.reason==="not_installed"?t("去安装"):e.reason==="pack_disabled"||e.reason==="provider_disabled"?t("去启用"):SN(e)||e.startup?.phase==="blocked"?t("查看原因"):t("查看进度")}let JI=null;const eM=new Set;function Sy(e){JI=e,eM.forEach(t=>t())}function xCe(){const e=JI;return JI=null,e}function vCe(e){return eM.add(e),()=>{eM.delete(e)}}function Ny(e,t){return p.useSyncExternalStore(ky,Bl),ZI(e,t)}function tM({id:e,status:t,t:n}){const s=Ny(e,t),i=Bl(),o=i.value?.now||Date.now(),l=s?.startedAt?Math.max(0,Math.round(((s.finishedAt||o)-s.startedAt)/1e3)):null;return r.jsxs("section",{className:"flex flex-col gap-2 text-xs","aria-label":n("加载状态"),children:[r.jsxs("div",{className:"flex items-center gap-2",children:[Zh(s)?r.jsx(Qt,{className:"size-3.5"}):null,r.jsx(Ee,{variant:Jh(s)?"warning":"outline",shape:"tag",children:em(s,n)}),l!==null?r.jsx("span",{className:"text-muted-foreground",children:n("本次用时 {n} 秒",{n:l})}):null]}),r.jsx("p",{className:"m-0 whitespace-pre-wrap break-words text-muted-foreground",children:xG(s,n,o)}),s?.phase==="blocked"&&s.error?r.jsx("p",{className:"m-0 whitespace-pre-wrap break-words text-muted-foreground",children:s.error}):null,s?.startedAt?r.jsx("p",{className:"m-0 text-muted-foreground",children:n("开始时间:{time}",{time:new Date(s.startedAt).toLocaleString()})}):null,s?.finishedAt?r.jsx("p",{className:"m-0 text-muted-foreground",children:n("完成时间:{time}",{time:new Date(s.finishedAt).toLocaleString()})}):null,s?.steps?.length?r.jsx("div",{className:"flex flex-wrap gap-x-3 gap-y-1 text-muted-foreground",children:s.steps.map((u,d)=>r.jsxs("span",{children:[em({...s,phase:u.phase},n)," · ",(u.durationMs/1e3).toFixed(1)," s"]},d))}):null,s?.previousError?r.jsxs("details",{className:"text-muted-foreground",children:[r.jsx("summary",{children:n("上次加载记录(非本次故障)")}),r.jsx("p",{className:"whitespace-pre-wrap break-words",children:s.previousError})]}):null,i.error&&!i.unavailable?r.jsx("p",{className:"m-0 text-muted-foreground",children:n("暂时无法获取插件状态,显示上次结果;这不代表插件启动失败。")}):null]})}function bCe({id:e,name:t,status:n,script:s,onClose:i,retry:o,t:l}){const u=Ny(e,n),d=Bl().value?.packs.find(k=>k.id===e)?.name||t,f=Bl().value?.scriptOperation,[m,g]=p.useState(!1),[v,b]=p.useState("");p.useEffect(()=>{nf()},[e]);const y=async()=>{if(!(m||Zh(u)||Bl().error||s&&f?.active)){g(!0),b("");try{await o(),nf()}catch(k){b(k instanceof Error?k.message:String(k))}finally{g(!1)}}};return r.jsx(at,{open:!0,onOpenChange:k=>{!k&&!m&&i()},children:r.jsxs(it,{className:"w-[min(560px,calc(100vw-32px))]",children:[r.jsx(ot,{children:r.jsxs(st,{children:[d," · ",l("加载诊断")]})}),r.jsxs(lt,{children:[r.jsx(tM,{id:e,status:u,t:l}),s?r.jsx("p",{className:"m-0 text-xs text-muted-foreground",children:l("脚本插件共用运行环境;重试会等待当前任务结束,不会删除账号或重新安装插件。")}):null,f?.target?.id===e&&f.error&&!Zh(u)&&u?.phase!=="ready"&&(f.updatedAt||0)>=(u?.startedAt||0)?r.jsx("p",{role:"alert",className:"m-0 text-xs text-destructive",children:f.error}):null,s&&f?.active?r.jsx("p",{className:"m-0 text-xs text-muted-foreground",role:"status",children:l("正在重试…")}):null,v?r.jsx("p",{role:"alert",className:"m-0 text-xs text-destructive",children:v}):null]}),r.jsxs(xt,{children:[r.jsx(B,{variant:"outline",disabled:m,onClick:nf,children:l("刷新状态")}),u&&u.phase!=="ready"&&u.phase!=="disabled"?r.jsx(B,{disabled:m||Zh(u)||!!Bl().error||!!(s&&f?.active),onClick:()=>{y()},children:l(m?"正在重试…":"重新加载")}):null,r.jsx(B,{variant:"ghost",disabled:m,onClick:i,children:l("关闭")})]})]})})}function bG(e){return e.providers.filter(SN).length}function yCe({hidden:e,onOpen:t}){return e.total<=0?null:r.jsxs(B,{id:"btn-hidden-accounts",variant:"outline",className:"acct-hidden-entry",title:a("查看因插件未就绪而暂未显示的账号"),onClick:()=>{nf(),t()},children:[r.jsxs("svg",{viewBox:"0 0 24 24",width:"14",height:"14",fill:"none",stroke:"currentColor",strokeWidth:1.7,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[r.jsx("path",{d:"M2.5 12s3.4-6 9.5-6 9.5 6 9.5 6-3.4 6-9.5 6-9.5-6Z"}),r.jsx("path",{d:"m4 20 16-16"})]}),a("未显示账号"),r.jsx(Ee,{variant:bG(e)?"warning":"outline",shape:"tag",children:e.providers.length})]})}function jCe({hidden:e,open:t,onOpenChange:n}){const[s,i]=p.useState("all");p.useEffect(()=>{t&&nf()},[t]);const o=Bl(),l=m=>e.providers.filter(g=>vG(g,m)).length,u=e.providers.filter(m=>vG(m,s)),d=e.providers.filter(m=>m.reason==="loading").length,f=m=>{m?.packId&&!["not_installed","pack_disabled","provider_disabled"].includes(m.reason)&&Sy(m.packId),n(!1),ft().wbApp?.showPage?.("plugins")};return r.jsx(Qb,{open:t,onOpenChange:m=>{m||n(!1)},children:r.jsxs(Zb,{side:"right",showHandle:!1,className:"w-[min(480px,94vw)]",children:[r.jsx(MS,{children:r.jsx(IS,{children:a("未显示的账号")})}),r.jsxs(_S,{className:"acct-hidden-body",children:[r.jsx("p",{className:"acct-hidden-lead",children:a("{providers} 家提供商、共 {total} 个账号。数据仍在,只是当前没有可用的插件来执行它们。",{providers:e.providers.length,total:e.total})}),d?r.jsx("p",{className:"m-0 text-xs text-muted-foreground",role:"status",children:a("正在加载 · {n} 家提供商的账号暂未显示,就绪后自动恢复。",{n:d})}):null,o.error&&!o.unavailable?r.jsxs("p",{className:"m-0 text-xs text-muted-foreground",role:"status",children:[a("暂时无法获取插件状态,显示上次结果;这不代表插件启动失败。"),r.jsx(B,{variant:"link",size:"xs",onClick:nf,children:a("刷新状态")})]}):null,r.jsx(en,{"aria-label":a("按未显示原因筛选"),value:s,onValueChange:i,options:[{value:"all",label:a("全部"),count:l("all")},{value:"loading",label:a("待就绪"),count:l("loading")},{value:"missing",label:a("未安装"),count:l("missing")},{value:"disabled",label:a("已停用"),count:l("disabled")},{value:"broken",label:a("加载异常"),count:l("broken")}]}),r.jsxs("div",{className:"acct-hidden-rows",children:[u.map(m=>r.jsxs("div",{className:"acct-hidden-row",children:[r.jsx("span",{className:"acct-hidden-avatar","aria-hidden":"true",children:a(m.label).trim().slice(0,1)}),r.jsxs("div",{className:"acct-hidden-info",children:[r.jsxs("div",{className:"acct-hidden-name",children:[r.jsx("span",{className:"truncate",children:a(m.label)}),r.jsx(Ee,{variant:SN(m)?"warning":"outline",shape:"tag",children:mCe(m,a)})]}),r.jsxs("p",{className:"acct-hidden-detail",children:[a("保留 {n} 个账号",{n:m.count})," · ",pCe(m,a,o.value?.now)]})]}),r.jsx(B,{variant:"outline",size:"sm",onClick:()=>f(m),children:gCe(m,a)})]},m.id)),u.length?null:r.jsx("p",{className:"acct-hidden-none",children:a("这一类现在没有账号")})]}),r.jsx("p",{className:"acct-hidden-foot",children:a("这里只影响「显示」:卸载或停用插件不会删除账号;重新安装、启用并成功加载后,这些账号会自动回到列表。")})]}),r.jsxs(vP,{children:[r.jsx(B,{variant:"outline",onClick:()=>n(!1),children:a("知道了")}),r.jsx(B,{onClick:()=>f(),children:a("去「插件」页")})]})]})})}function wCe({hidden:e,onOpen:t}){return r.jsxs("div",{className:"acct-hidden-empty",role:"status",children:[r.jsxs("span",{children:[r.jsx(Ka,{variant:bG(e)?"warning":"muted",className:"size-1.5"}),a("共有 {n} 个账号暂未显示",{n:e.total})]}),r.jsx(B,{variant:"outline",size:"sm",onClick:t,children:a("查看")})]})}function yG(e){const t=Math.round(e/6e4);if(t<1)return a("不到 1 分钟");if(t<60)return a("还有 {n} 分钟",{n:t});const n=Math.floor(t/60),s=t%60;return n<24?s?a("还有 {h} 小时 {m} 分",{h:n,m:s}):a("还有 {h} 小时",{h:n}):a("还有 {d} 天",{d:Math.floor(n/24)})}function kCe(e){const t=Date.now();return oI(e).map(n=>{const s=Number(n.resetAt),i=Number(n.at),o=uI(n.resetAt),l=o===cI,u=n.message||(n.status?a("上游返回 {status}",{status:n.status}):""),d=s-i,f=i>0&&Number.isFinite(d)&&d>0?Math.max(0,Math.min(100,(t-i)/d*100)):null,m=l?a("恢复时间未知"):yG(s-t),g=l?"":a("{time} 恢复",{time:o});return{model:n.model,wait:m,tone:l?"muted":"warn",reset:g,reason:u,title:[n.model,m,g,u,a("到恢复时间后自动解除,无需手动操作")].filter(Boolean).join(" · "),progress:f}})}function SCe({accountName:e,rows:t,count:n,cooldown:s,soonest:i,onClear:o}){const[l,u]=p.useState(!1),d=p.useRef(null),f=p.useCallback(v=>{d.current=v,v&&(v.scrollTop=0)},[]),m=p.useCallback(()=>d.current??null,[]),g=i===cI?a("待定"):i;return r.jsxs(r.Fragment,{children:[r.jsxs(ui,{open:l,onOpenChange:u,children:[r.jsxs(wi,{render:r.jsx(B,{size:"default",variant:"ghost",type:"button",className:"usage-toggle warn",title:a(s?"点击查看账号冷却与模型限流明细":"点击查看各模型的限流明细"),"aria-label":a("限流明细")}),children:[r.jsx("span",{className:"val",children:s?a("账号冷却"):a("{n} 个模型",{n})}),r.jsx("span",{className:"caret","aria-hidden":!0,children:"▾"})]}),r.jsx(di,{align:"center",sideOffset:6,className:"w-[320px]",initialFocus:m,children:r.jsxs("div",{className:"usage-pop-limit",ref:f,tabIndex:-1,children:[e?r.jsx("div",{className:"usage-pop-sub",children:e}):null,r.jsx("div",{className:"usage-pop-group",children:a("限流明细")}),s?r.jsxs("div",{className:"usage-pop-row",children:[r.jsxs("div",{className:"usage-pop-line",children:[r.jsx("span",{className:"usage-pop-name",children:a("账号冷却")}),r.jsx("span",{className:"usage-pop-view warn",children:yG(s.resetAt-Date.now())})]}),r.jsx("div",{className:"lp-pop-subline",children:r.jsxs("span",{className:"lp-pop-reason",children:[a("{time} 恢复",{time:i}),s.message?` · ${s.message}`:""]})})]}):null,t.map(v=>r.jsxs("div",{className:"usage-pop-row",title:v.title,children:[r.jsxs("div",{className:"usage-pop-line",children:[r.jsx("span",{className:"usage-pop-name lp-pop-model",children:v.model}),r.jsx("span",{className:`usage-pop-view ${v.tone}`,children:v.wait})]}),r.jsxs("div",{className:"lp-pop-subline",children:[r.jsxs("span",{className:"lp-pop-reason",children:[v.reset?`${v.reset} · `:"",v.reason]}),r.jsx(B,{variant:"ghost",size:"xs",title:a("清掉本机的限流标记,立刻重新尝试该模型(上游若仍在限流会再次被标记)"),onClick:()=>o(v.model),children:a("清除")})]}),v.progress!==null?r.jsx(kg,{value:v.progress,variant:"muted",className:"mt-1.5",trackClassName:"h-[3px]","aria-label":a("冷却进度 {percent}%",{percent:Math.round(v.progress)})}):null]},v.model)),r.jsxs("div",{className:"lp-pop-foot",children:[r.jsx("span",{className:"lp-pop-note",children:s?a("账号全部模型暂时停止转发 · 到恢复时间自动解除"):a("{n} 个模型限流中 · 到恢复时间自动解除",{n})}),r.jsx(B,{variant:"outline",size:"xs",title:a("清除该账号的冷却与全部模型限流标记"),onClick:()=>o(""),children:a("全部清除")})]})]})})]}),r.jsx("span",{className:"lim-sub",title:a(s?"账号冷却":"最早恢复"),children:s?a("{time} 恢复",{time:g}):a("最早 {soonest} 恢复",{soonest:g})})]})}function jG({account:e,onOpen:t}){if(e.enabled===!1||!ay(e))return null;const n=HP(e),s=sy(e),i=s.some((u,d)=>u.action==="skip"&&n[d]?.hit&&n[d]?.account),o=[...new Set(s.flatMap((u,d)=>u.action==="skip"&&n[d]?.hit?n[d].models:[]))],l=i||!o.length?a("限制器 · 账号已跳过"):a("限制器 · {n} 个模型",{n:o.length});return r.jsx(B,{variant:"ghost",size:"xs",className:"h-auto p-0",onClick:t,title:a(i?"账号级条件组已触发;点击查看限制器":"仅跳过命中条件的模型,其他模型仍可转发;点击查看限制器"),children:r.jsx(Ee,{variant:"warning",shape:"tag",children:l})})}const Cy=new Map,tm=new Map;let nM=null;function Ra(e,t,n){const s={selector:t,mount:n,done:!1},i=Cy.get(e);i?i.push(s):Cy.set(e,[s]),nM===e&&kG(e)}function wG(e){if(!(e.done||!document.querySelector(e.selector))){e.done=!0;try{e.mount()}catch(n){console.error("[islands] 页面挂载失败:",e.selector,n)}}}function kG(e){const t=Cy.get(e);if(!t||t.length===0)return;for(const i of t)wG(i);const n=t.filter(i=>!i.done);if(n.length===0){Cy.delete(e),tm.get(e)?.disconnect(),tm.delete(e);return}if(tm.has(e))return;const s=new MutationObserver(()=>{for(const i of n)wG(i);n.every(i=>i.done)&&(s.disconnect(),tm.delete(e),Cy.delete(e))});s.observe(document.body,{childList:!0,subtree:!0}),tm.set(e,s)}function NCe(e){if(e!==nM)for(const[t,n]of tm)t!==e&&(n.disconnect(),tm.delete(t));nM=e,kG(e)}window.addEventListener("wb:page",e=>{const t=e.detail;typeof t=="string"&&t&&NCe(t)});const nm=[20,50,100,200],rM=[20,50,100,200,"all"],Hg=50,SG="workbuddy-desktop-table-size:";function NG(e){return e==="all"?a("全部"):String(e)}function NN(e,t=rM,n=Hg){t.includes(n)||(n=t.includes(Hg)?Hg:t[0]);let s=null;try{s=localStorage.getItem(SG+e)}catch{return n}if(s===null||s.trim()==="")return n;if(s==="all")return t.includes("all")?"all":n;const i=Number(s);return Number.isFinite(i)&&t.includes(i)?i:n}function CN(e,t){try{localStorage.setItem(SG+e,String(t))}catch{}}function Ay(e,t,n={}){const s=n.sizes??rM,i=n.defaultSize??Hg,[o,l]=p.useState(()=>NN(t,s,i)),[u,d]=p.useState(1),f=Math.max(1,o==="all"?1:Math.ceil(e/o)),m=Math.min(Math.max(1,u),f);p.useEffect(()=>{m!==u&&d(m)},[m,u]);const g=p.useCallback(w=>{l(w),CN(t,w),d(1)},[t]),v=p.useCallback(w=>{d(Math.min(Math.max(1,Math.round(w)||1),f))},[f]),b=o==="all"?0:(m-1)*o,y=o==="all"?e:Math.min(e,b+o),k=p.useCallback(w=>o==="all"?w.slice():w.slice(b,y),[o,b,y]);return{size:o,page:m,pageCount:f,rangeStart:e?b+1:0,rangeEnd:e?y:0,paged:o!=="all",setSize:g,goto:v,slice:k}}function rf({total:e,page:t,pageCount:n,size:s,sizes:i=rM,onSizeChange:o,onPageChange:l,range:u=null,disabled:d=!1,leading:f,className:m}){const[g,v]=p.useState(String(t));p.useEffect(()=>v(String(t)),[t]);const b=()=>{const w=g.trim();if(!w){v(String(t));return}const S=Number(w);if(!Number.isFinite(S)){v(String(t));return}const N=Math.min(Math.max(1,Math.round(S)),n);v(String(N)),N!==t&&l(N)},y=n<=1,k=e===0?a("共 0 条"):u?a("共 {total} 条 · 当前第 {start}–{end} 条",{total:e,start:u.start,end:u.end}):a("共 {total} 条(全部显示)",{total:e});return r.jsxs(ju,{className:m?`panel-foot table-foot-bar ${m}`:"panel-foot table-foot-bar",children:[f,r.jsx("div",{className:"spacer"}),r.jsxs("div",{className:"table-foot-ctl",children:[r.jsx("span",{className:"table-foot-count",children:k}),r.jsxs("span",{className:"table-foot-size",children:[a("每页"),r.jsxs(Pt,{value:String(s),onValueChange:w=>o(w==="all"?"all":Number(w)),children:[r.jsx(Mt,{className:"h-[26px] w-[86px]",disabled:d,"aria-label":a("每页条数"),children:r.jsx(It,{children:NG(s)})}),r.jsx(_t,{children:i.map(w=>r.jsx(Ze,{value:String(w),children:NG(w)},String(w)))})]}),a("条")]}),r.jsxs("span",{className:"table-foot-jump",children:[a("跳至"),r.jsx(ze,{className:"h-[26px] w-[52px] px-1 text-center",value:g,disabled:d||y,"aria-label":a("跳转到指定页"),title:y?a("当前只有一页"):a("跳转到第 1–{pageCount} 页",{pageCount:n}),inputMode:"numeric",onChange:w=>v(w.target.value),onKeyDown:w=>{w.key==="Enter"?(w.preventDefault(),b()):w.key==="Escape"&&v(String(t))},onBlur:b}),a("页")]}),r.jsx(xP,{page:t,pageCount:n,onPageChange:l,disabled:d})]})]})}const sM=[{key:"pick",label:a("选择"),align:"center",legacyAlign:"left"},{key:"order",label:a("顺序"),title:a("组内先后:按住左边的把手上下拖动即可调整;整组的先后拖分组带的把手"),align:"center",legacyAlign:"left"},{key:"account",label:a("账号"),align:"center",legacyAlign:"left"},{key:"proxy",label:a("代理"),title:a("该账号出网走的代理(已保存的代理 / 自定义 / 直连);点击可修改"),align:"center"},{key:"connections",label:a("连接数"),title:a("此刻正在使用这个账号的请求数(含还在下发内容的流式请求);为 0 时不显示"),align:"center"},{key:"status",label:a("状态"),align:"center",legacyAlign:"left"},{key:"limits",label:a("限流"),title:a("该账号当前限流中的模型;点徽章看明细"),align:"center",legacyAlign:"left"},{key:"expiry",label:a("有效期"),align:"center",legacyAlign:"left"},{key:"usage",label:a("余额"),align:"center",legacyAlign:"left"},{key:"actions",label:a("操作"),align:"right"}],CG="agent2api-accounts-col-widths",Ey={pick:47,order:84,proxy:186,connections:56,status:80,limits:148,expiry:132,usage:308,actions:200},aM=new Set(["account"]),CCe=300,iM=56,ACe=new Set([...Object.keys(Ey),...aM]),Vg=(()=>{try{const e=JSON.parse(localStorage.getItem(CG)||"{}"),t={};for(const[n,s]of Object.entries(e||{})){const i=Number(s);ACe.has(n)&&Number.isFinite(i)&&i>=iM&&(t[n]=Math.round(i))}return t}catch{return{}}})();function AG(){try{localStorage.setItem(CG,JSON.stringify(Vg))}catch{}}function ECe(){return{...Ey,...Vg}}function TCe(e){let t=0;for(const n of e){const s=Vg[n];s?t+=s:aM.has(n)?t+=CCe:Ey[n]?t+=Ey[n]:t+=iM}return Math.round(t)}function EG(e,t){const n=e?.querySelector(`thead th:nth-child(${t+1})`),s=n?.getAttribute("data-col")||n?.className.match(/cell-([a-z]+)/)?.[1];if(!s)return null;const i=e?.querySelector(`colgroup col[data-col="${CSS.escape(s)}"]`)||e?.querySelectorAll("colgroup col")[t];return i?{key:s,col:i}:null}function OCe(e,t,n){const s=Math.max(iM,Math.round(n));e.style.width=s+"px",aM.has(t)||s!==Ey[t]?Vg[t]=s:delete Vg[t]}let oM=()=>{};function RCe(e,t){if(oM=t,!e)return;let n=null;e.addEventListener("pointerdown",s=>{if(s.button!==0)return;const i=s.target?.closest?.(".col-grip");if(!i)return;s.preventDefault();const o=i.closest("th"),l=o?.closest("table")||null,u=o?.parentElement?[...o.parentElement.children].indexOf(o):-1,d=EG(l,u);if(!d)return;const f=s.clientX,m=d.col.getBoundingClientRect().width;i.classList.add("active"),document.body.classList.add("col-resizing");try{i.setPointerCapture(s.pointerId)}catch{}n={...d,startX:f,startWidth:m,grip:i,pointerId:s.pointerId},window.addEventListener("pointermove",g),window.addEventListener("pointerup",v),window.addEventListener("pointercancel",v),window.addEventListener("blur",v);function g(b){if(n){if(b.buttons===0){v();return}OCe(n.col,n.key,n.startWidth+b.clientX-n.startX)}}function v(){if(!n)return;const{grip:b,pointerId:y}=n;n=null,b.classList.remove("active"),document.body.classList.remove("col-resizing");try{b.releasePointerCapture(y)}catch{}window.removeEventListener("pointermove",g),window.removeEventListener("pointerup",v),window.removeEventListener("pointercancel",v),window.removeEventListener("blur",v),AG(),oM()}}),e.addEventListener("dblclick",s=>{const i=s.target?.closest?.(".col-grip");if(!i)return;const o=i.closest("th"),l=o?.closest("table")||null,u=o?.parentElement?[...o.parentElement.children].indexOf(o):-1,d=EG(l,u);d&&(delete Vg[d.key],AG(),oM())})}let lM=Date.now(),rm=null;const Kg=new Set;function Ty(){lM=Date.now();for(const e of Kg)e();TG()}function TG(){rm!==null&&clearTimeout(rm),rm=null,!(!Kg.size||document.hidden)&&(rm=setTimeout(Ty,6e4-Date.now()%6e4))}function PCe(e){return Kg.add(e),Kg.size===1&&(lM=Date.now(),document.addEventListener("visibilitychange",Ty),window.addEventListener("focus",Ty),TG()),()=>{Kg.delete(e),!Kg.size&&(rm!==null&&clearTimeout(rm),rm=null,document.removeEventListener("visibilitychange",Ty),window.removeEventListener("focus",Ty))}}const ICe=()=>lM,MCe=()=>0;function Oy(){return p.useSyncExternalStore(PCe,ICe,MCe),Date.now()}function _Ce(e){switch(e.trim().toLowerCase()){case"5h":return a("{n} 小时",{n:5});case"weekly":return a("每周");case"monthly":return a("每月");case"daily":return a("每日");default:return e.trim()}}function OG(e){if(!e||typeof e!="object"||Array.isArray(e))return[];const t=Array.isArray(e.windows)?e.windows:[],n=[];for(const[s,i]of t.entries()){if(!i||typeof i!="object"||Array.isArray(i))continue;const o=i,l=oq(o.label,a),u=typeof o.group=="string"?o.group.trim():"",d=typeof o.window=="string"?o.window.trim().toLowerCase():"",f=_Ce(typeof o.window=="string"?o.window:"")||l;if(!u&&!f)continue;const m=Os(o.remainingPercent),g=m===null?null:Math.max(0,Math.min(100,m)),v=o.unlimited===!0,b=Os(o.remaining)===null&&Os(o.limit)===null&&!v,y=Os(o.resetsAt),k=Os(o.expiresAt);n.push({id:`${typeof o.key=="string"?o.key:[u,f].join("-")}-${s}`,group:u,label:l||[u,f].filter(Boolean).join(" · "),window:f,windowCode:d,view:lq(o,a,Ln),percent:g,remaining:Os(o.remaining),percentText:b&&g!==null?`${Ln(g)}%`:"",tone:v?"ok":g===null?"muted":g<20?"warn":"ok",unlimited:v,resetsAt:y!==null&&y>0&&y<=864e13?y:null,expiresAt:k!==null&&k>0&&k<=864e13?k:null,aside:o.aside===!0})}return n}function DCe(e){const t=new Map;for(const n of e){const s=n.group||n.id;let i=t.get(s);i||(i={id:s,name:n.group,rows:[]},t.set(s,i)),i.rows.push(n)}return[...t.values()]}function LCe(e,t){const n=new Set(t.map(l=>l.label)),s=Array.isArray(e.windows)?e.windows:[],i=new Set(s.flatMap(l=>l&&typeof l=="object"&&typeof l.key=="string"&&l.key?[l.key]:[])),o=Array.isArray(e.wallets)?e.wallets.filter(l=>!l||typeof l!="object"||Array.isArray(l)?!1:l.type!=="quota_window"&&!i.has(l.key??l.type)&&!n.has(l.displayName)):[];return FP({...e,wallets:o,subscription:null},a,Ln)}function $Ce({row:e}){const t=e.percentText||e.view,n=e.percent===null?e.view:a("剩余 {percent}%",{percent:Ln(e.percent)});return r.jsxs("span",{className:`usage-window-item ${e.tone}`,title:`${e.label} · ${n}`,children:[r.jsxs("span",{className:"usage-window-line",children:[r.jsx("span",{className:"usage-window-label",title:e.window,children:e.window}),r.jsx("span",{className:"usage-window-value",title:e.view,children:t})]}),e.percent!==null&&!e.unlimited?r.jsx(kg,{value:e.percent,variant:e.tone==="warn"?"warning":"success",className:"mt-1",trackClassName:"h-[3px]",indicatorClassName:e.tone==="ok"?"opacity-75":void 0,"aria-label":`${e.label} · ${n}`}):null]})}function zCe({entry:e,rows:t,updatedAt:n,creditDetail:s,children:i}){const o=e&&typeof e=="object"?e:{},l=o.subscription&&typeof o.subscription=="object"?o.subscription:{},u=typeof l.planName=="string"?l.planName.trim():"",d=DCe(t),f=t.some(O=>O.group),m=!f&&(t.length===1||t.some(O=>O.percent===null||O.view.length>10)),g=WS(o),v=LCe(o,t),b=t.filter(O=>!O.aside&&!O.unlimited),y=b.some(O=>O.percent!==null?O.percent<20:O.remaining!==null&&O.remaining<=0),k=b.some(O=>O.percent===null&&O.remaining===null)||g.length>0,w=b.length===0&&t.every(O=>!O.unlimited),S=a(w?"额度详情":y?"部分窗口偏低":k?"部分读数未知":"额度充足"),N=y?"warn":k||w?"muted":"ok",C=n?r8(n,a,Date.now()):"",T=n?a("上次成功查询:{time}",{time:ki(n)}):"",P=t.every(O=>O.percentText||O.view==="—")?a("剩余比例"):a("分窗口额度");return r.jsx("span",{className:"usage-cell usage-window-cell",children:r.jsxs("span",{className:"usage-window-quota",children:[r.jsxs("span",{className:"usage-window-top",children:[u?r.jsx(Ee,{variant:aI(u)?"secondary":"brand",shape:"tag",className:"usage-window-plan",title:u,children:Mq(u)}):null,r.jsxs("span",{className:`usage-window-status ${N}`,title:S,children:[r.jsx(Yk,{}),r.jsx("span",{children:S})]})]}),r.jsx("span",{className:`usage-window-grid${f?" grouped":" ungrouped"}${m?" compact":""}`,style:{"--quota-columns":Math.min(3,d.length)},children:d.map(O=>r.jsxs("span",{className:"usage-window-group",children:[O.name?r.jsx("span",{className:"usage-window-group-name",title:O.name,children:O.name}):null,O.rows.map(A=>r.jsx($Ce,{row:A},A.id))]},O.id))}),r.jsxs("span",{className:"usage-window-foot",children:[r.jsxs("span",{className:"usage-window-updated",title:T,children:[r.jsxs("span",{className:"usage-window-caption",children:[P,C?" · ":""]}),C]}),r.jsxs(ui,{children:[r.jsxs(wi,{render:r.jsx(B,{type:"button",size:"xs",variant:"ghost",className:"usage-window-detail"}),children:[a("额度详情"),r.jsx("span",{"aria-hidden":"true",className:"usage-window-caret",children:"⌄"})]}),r.jsxs(di,{align:"end",sideOffset:6,className:"usage-window-pop",children:[r.jsx(qwe,{children:r.jsx(lK,{children:a("窗口额度与时间")})}),r.jsxs("div",{className:"usage-window-pop-body",children:[t.map(O=>r.jsxs("div",{className:"usage-window-reset",children:[r.jsxs("div",{className:"usage-window-reset-head",children:[r.jsx("span",{title:O.label,children:O.label}),r.jsx("span",{className:`usage-window-reset-value ${O.tone}`,children:O.percentText||O.view})]}),O.resetsAt!==null?r.jsx("time",{dateTime:new Date(O.resetsAt).toISOString(),children:a("重置 {date}",{date:ki(O.resetsAt)})}):O.expiresAt===null?r.jsx("span",{className:"usage-window-reset-unknown",children:a("未返回重置时间")}):null,O.expiresAt!==null?r.jsx("time",{dateTime:new Date(O.expiresAt).toISOString(),children:a("到期 {date}",{date:ki(O.expiresAt)})}):null]},O.id)),v.length?r.jsx("div",{className:"usage-window-supplementary",children:v.map(O=>r.jsx("p",{children:O},O))}):null,g.map(O=>r.jsx("p",{className:"usage-window-warning",children:a(O)},O)),r.jsx(Gwe,{className:"usage-window-explanation",children:a("各窗口独立限制请求,不相加为总余额。")})]})]})]})]}),s?r.jsx("span",{className:"usage-window-credit",children:s}):null,i]})})}function BCe(e){return e.windowCode==="daily"||e.windowCode==="5h"}function FCe(e,t){const n=e.filter(f=>!f.aside),s=new Set(n.filter(f=>(f.windowCode==="weekly"||f.windowCode==="monthly")&&!f.unlimited&&(f.percent!==null&&f.percent<=0||f.remaining!==null&&f.remaining<=0)).map(f=>f.group));let i=!1;const o=n.map(f=>{const m=BCe(f),g=m&&s.has(f.group);return g&&(f.unlimited||f.percent!==0)&&(i=!0),{label:f.group?`${f.group} · ${f.window}`:f.window,percent:g?0:f.percent,unlimited:!g&&f.unlimited,shortWindow:m}}),l=o.filter(f=>f.shortWindow&&(f.percent!==null||f.unlimited)),u=(l.length?l:o).flatMap(f=>f.unlimited?[100]:f.percent===null?[]:[f.percent]);if(u.length)return{percent:Math.min(...u),hasShortWindow:l.length>0,adjusted:i,windows:o};if(t===null)return null;const d=Math.max(0,Math.min(100,t));return{percent:d,hasShortWindow:!1,adjusted:!1,windows:[{label:"",percent:d,unlimited:!1}]}}function UCe(e,t="group",n=Date.now()){const s={counted:0,total:e.length,sum:null,unlimited:0,unit:"",failed:0,uncountable:0,pending:0,partial:0,scope:t,additive:!0,ratio:null,expiring:xN([],n)},i=[];let o=0,l=null;for(const u of e){const d=po(u);if(d==null){s.pending++;continue}const f=Og(d);if(f){f.notConfigured||s.failed++;continue}if(typeof d!="object"||Array.isArray(d)){s.uncountable++;continue}if((d.statisticsError||WS(d).length>0)&&s.partial++,sI(u)&&i.push(...RNe(d,n)),d.unlimited===!0){s.unlimited++;continue}const m=Object.prototype.hasOwnProperty.call(d,"totalLeft"),g=Os(m?d.totalLeft:d.available),v=FCe(OG(d),g),b=String(d.unit||a("积分")).trim(),y=g===null&&v===null?null:b==="%"||g===null?"ratio":"additive";if(y===null){s.uncountable++;continue}if(l===null&&(l=y),l!==y){s.uncountable++;continue}if(y==="additive"&&s.unit&&b!==s.unit){s.uncountable++;continue}s.unit||(s.unit=b),s.counted++,y==="additive"?g!==null&&(o+=g):v&&(!s.ratio||v.percent[s.label,RG(s)].filter(Boolean).join(" ")).join(" · ")})),e.ratio.adjusted&&t.push(a("每周或每月额度已耗尽,短周期实际可用额度按 0% 计算;账号明细保留原始读数"))),e.pending&&t.push(a("{n} 个还没查到(未查询或正在查询)",{n:e.pending})),e.failed&&t.push(a("{n} 个查询失败",{n:e.failed})),e.uncountable&&t.push(e.additive?a("{n} 个读数没有绝对数(只给比例或无额度),未计入",{n:e.uncountable}):a("{n} 个读数里没有可用比例,未计入",{n:e.uncountable})),e.partial&&t.push(a("{n} 个读数只读到一半(读数可信但不完整)",{n:e.partial}));const n=vN(e.expiring,a,cM,e.unit===a("积分")?"积分":e.unit);return n.detail&&t.push(n.detail),t.join(";")}function VCe({balance:e}){const t=vN(e.expiring,a,cM,e.unit===a("积分")?"积分":e.unit),n=e.failed+e.partial>0,s=e.additive?e.sum===null&&e.unlimited===0:e.ratio===null&&e.unlimited===0,i=!e.additive&&e.ratio?.windows.some(f=>!f.unlimited&&f.percent!==null&&f.percent<20),o=n||i?"warn":s?"muted":"ok",l=e.unlimited>0?"∞":e.sum===null?"—":cM(e.sum),u=e.additive&&e.unit&&e.unit!=="积分"&&e.unit!==a("积分")?mo(e.unit,a):"",d=e.unlimited===0&&e.counted0?r.jsx("b",{className:"v",children:"∞"}):e.ratio?e.ratio.windows.map((f,m)=>r.jsxs(p.Fragment,{children:[m>0?r.jsx("span",{className:"k","aria-hidden":"true",children:"·"}):null,f.label?r.jsx("span",{className:"k",children:f.label}):null,r.jsx("b",{className:f.percent===null&&!f.unlimited?"k":"v",children:RG(f)})]},`${f.label}-${m}`)):r.jsx("b",{className:"v",children:"—"}),d?r.jsx("span",{className:"n",children:d}):null,t.group?r.jsx("span",{className:"n soon",title:t.detail,children:t.group}):null,n?r.jsx("span",{className:"warn-mark","aria-hidden":!0,children:"⚠"}):null]})}const KCe=["codearts"];function uM(e){if(typeof e!="number"&&typeof e!="string"||typeof e=="string"&&!e.trim())return null;const t=Number(e),n=Number.isFinite(t)?t<1e11?t*1e3:t:Date.parse(String(e));return Number.isFinite(n)&&n>0?n:null}function qCe(e,t){if(!KCe.includes(String(e.provider??"")))return[];if(e.hasAccessToken!==!0||e.hasRefreshToken!==!0)return[];const n=uM(e.refreshTokenExpiresAt??e.refreshExpiresAt);if(n===null&&e.refreshTokenLongLived!==!0)return[];const s=uM(e.accessTokenExpiresAt)??uM(t);return n!==null&&s!==null&&n===s?[]:[{label:"Access Token",expiresAt:s,longLived:!1},{label:"Refresh Token",expiresAt:n,longLived:n===null&&e.refreshTokenLongLived===!0}]}function GCe(e,t,n=Date.now()){if(e.longLived)return t("长期有效");if(e.expiresAt===null)return"—";const s=e.expiresAt-n;return s<=0?t("已过期"):s<36e5?t("{n} 分钟后",{n:Math.max(1,Math.round(s/6e4))}):s<48*36e5?t("{n} 小时后",{n:Number((s/36e5).toFixed(1))}):t("{n} 天后",{n:Math.floor(s/864e5)})}let dM=!1;async function PG(e){if(dM){Ct(a("账号正在导出,请稍候"));return}const t=ft().workbuddyDesktop;if(!t?.exportAccountFiles){Ct(a("当前客户端不支持逐账号导出,请更新客户端"),"err");return}dM=!0;try{const n=ft().wbConfirm?.ask,s=a("导出文件包含登录凭证,可直接用于登录。请妥善保管,不要外传或上传到公共位置。")+(e.provider?`

    ${a("本组每个账号会分别保存为一个 JSON 文件,包含被筛选隐藏的账号。")}`:"")+(e.provider&&t.platform==="web"?`

    ${a("网页端会逐个下载文件;浏览器提示时请允许本网站下载多个文件。")}`:"");if(!(n?await n({title:e.provider?a("导出本组账号"):a("导出账号"),html:s,okText:a("导出")}):window.confirm(a("导出文件包含登录凭证,可直接用于登录。请妥善保管,不要外传或上传到公共位置。"))))return;const o=await t.exportAccountFiles(e);if(o?.canceled)return;if(!o)throw new Error(a("导出未返回结果"));const l=o.count||0,u=o.failed||[];if(u.length){const d=u[0],f=[d.name||d.id,d.error].filter(Boolean).join(":");Ct(a("已导出 {count} 个账号文件,{failed} 个未导出:{reason}",{count:l,failed:u.length,reason:f}),"err")}else l?Ct(o.downloadStarted?a("已发起 {count} 个账号文件的下载,请在浏览器下载列表确认",{count:l}):a("✅ 已导出 {count} 个账号文件",{count:l}),"ok"):Ct(a("没有可导出的账号"))}catch(n){Ct(a("账号导出失败:{reason}",{reason:dn(n)}),"err")}finally{dM=!1}}function Ry(e,t){return ft().wbIcons?.icon?.(e,t)||""}function WCe({account:e,rank:t,sortActive:n}){const s=a("组内第 {rank} 位",{rank:t});return r.jsxs("div",{className:"order-cell",children:[r.jsx("span",{className:`order-grip${n?" locked":""}`,role:"button",tabIndex:-1,"aria-label":a("拖动调整组内顺序"),"aria-disabled":n||void 0,title:n?wN(zl(tn(e),Nu(tn(e)))):a("按住拖动,调整这个账号在本组内的顺序"),dangerouslySetInnerHTML:{__html:Ry("gripVertical",14)}}),r.jsx("span",{className:"order-rank",title:s,children:`#${t}`})]})}function YCe({group:e,ids:t,collapsed:n}){const[s,i]=p.useState(!1),o="w-full justify-start px-2 font-normal";return r.jsxs(ui,{open:s,onOpenChange:i,children:[r.jsx(wi,{render:r.jsx(B,{size:"default",variant:"ghost",type:"button",className:"grp-iconbtn",title:a("本组操作")}),children:"⋯"}),r.jsx(di,{align:"end",sideOffset:4,className:"w-[196px] p-1.5",children:r.jsxs("div",{className:"flex flex-col gap-0.5",children:[r.jsx(B,{variant:"ghost",size:"sm",className:o,title:a("启用这一组里的全部账号(含被筛选隐藏的)"),onClick:()=>{i(!1),M8(t,!0)},children:a("全部启用({n})",{n:t.length})}),r.jsx(B,{variant:"ghost",size:"sm",className:o,title:a("禁用这一组里的全部账号(含被筛选隐藏的)"),onClick:()=>{i(!1),M8(t,!1)},children:a("全部禁用({n})",{n:t.length})}),r.jsx(B,{variant:"ghost",size:"sm",className:o,title:a("打开批量操作弹窗,并预选这一组的账号(改代理等动作在弹窗里挑参数)"),onClick:()=>{i(!1),OI(t,"proxy")},children:a("批量操作本组")}),r.jsx(B,{variant:"ghost",size:"sm",className:o,title:a("导出本组全部账号,每个账号一个 JSON 文件(含被筛选隐藏的)"),onClick:()=>{i(!1),PG({provider:e.provider})},children:a("导出本组账号")}),r.jsx("div",{className:"my-1 h-px bg-hairline"}),r.jsx(B,{variant:"ghost",size:"sm",className:o,onClick:()=>{i(!1),Jq(e.provider)},children:a(n?"展开这一组":"折叠这一组")})]})})]})}function XCe({group:e,collapsed:t,colSpan:n}){const s=Oy(),{src:i,onError:o}=Qh(e.provider),l=Sn().groupTotalFiltered,u=l?e.accounts:e.members,f=e.members.length>1&&u.length>0&&u.some(Si)?UCe(u,l?"filtered":"group",s):null,m=v=>{v.target?.closest?.("button, a, input, select, label, .queue-grip")||String(window.getSelection?.()||"").length>0||Jq(e.provider)},g=YI(Nu(e.provider));return r.jsx(Jt,{className:"grp-band","data-provider":e.provider,children:r.jsx(Ve,{colSpan:n,onClick:m,children:r.jsxs("div",{className:"grp-band-inner",children:[r.jsx("span",{className:"queue-grip",role:"button",tabIndex:-1,"aria-label":a("拖动调整整组顺序"),title:a("按住拖动,调整这一家的组顺位(整组一起动)"),dangerouslySetInnerHTML:{__html:Ry("gripVertical",14)}}),r.jsx("span",{className:"grp-rank",title:a("组顺位:越小越先用(拖动分组带调整)"),children:a("第 {rank} 顺位",{rank:e.rank})}),r.jsx("span",{className:"grp-logo",children:i?r.jsx("img",{src:i,alt:"",loading:"lazy",onError:o}):r.jsx("span",{className:"grp-logo-txt",children:String(e.label||"?").trim().slice(0,1).toUpperCase()})}),r.jsx("span",{className:"grp-name",children:a(e.label)}),r.jsx("span",{className:"grp-stat",children:a("{total} 个账号 · 启用 {enabled} · 禁用 {disabled}{limited}",{total:e.members.length,enabled:e.enabled,disabled:e.disabled,limited:e.limited>0?a(" · 限流 {n}",{n:e.limited}):""})}),f?r.jsx(VCe,{balance:f}):null,g?r.jsxs(B,{size:"default",variant:"ghost",type:"button",className:"grp-sort-mark",title:a("当前排序规则:{rules}。点击调整",{rules:g}),onClick:()=>E8(e.provider),children:[r.jsx("span",{dangerouslySetInnerHTML:{__html:Ry("sort",10)}}),g]}):null,r.jsx("span",{className:"grp-spacer"}),r.jsx(B,{size:"default",variant:"ghost",type:"button",className:"grp-iconbtn","aria-haspopup":"dialog",title:a("添加 {name} 账号",{name:a(e.label)}),"aria-label":a("添加 {name} 账号",{name:a(e.label)}),onClick:v=>{v.stopPropagation(),ft().wbAddAccountModal?.openProvider?.(e.provider)},children:r.jsx("svg",{viewBox:"0 0 24 24",width:"14",height:"14",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round","aria-hidden":"true",focusable:"false",children:r.jsx("path",{d:"M12 5v14M5 12h14"})})}),r.jsx(B,{size:"default",variant:"ghost",type:"button",className:"grp-iconbtn",title:a("分组设置"),"aria-label":a("分组设置"),onClick:()=>E8(e.provider),dangerouslySetInnerHTML:{__html:Ry("settings",14)}}),r.jsx(YCe,{group:e,ids:e.members.map(v=>v.id),collapsed:t})]})})})}function QCe({account:e}){const t=Ni(e),n=fSe(e);!t&&Jke(e,Wh(e))&&n.push({text:a("Token 限额 · 已禁用"),kind:"bad",title:a("本周期 Token 消耗达到限制器的上限,账号已被自动禁用(窗口重置也不恢复,需手动启用)")});const s=Ci(e)||e.id;return r.jsxs(r.Fragment,{children:[r.jsx(St,{checked:t,"aria-label":a("{action}{who}",{action:a(t?"禁用":"启用"),who:s}),title:a(t?"已启用,点击禁用(不参与转发)":"已禁用,点击启用"),onCheckedChange:i=>{P8(e.id,i)}}),n.length?r.jsx("div",{className:"status-tags",children:n.map(i=>r.jsx(Ee,{shape:"tag",variant:i.kind==="bad"?"destructive":"secondary",title:i.title,children:i.text},i.text))}):null]})}function ZCe({account:e,onClear:t}){const n=oI(e),s=pq(e),i=gq(e);return i?r.jsx(Ee,{variant:"destructive",shape:"tag",title:i,children:a("上游限制 · 已禁用")}):!n.length&&!s?Array.isArray(e.limiterGroups)&&ay(e)?r.jsx(jG,{account:e,onOpen:()=>Mg(e.id)}):eI(e,po(e))?r.jsx(Ee,{variant:"warning",shape:"tag",title:a("余额低于限制器的阈值,转发时会跳过该账号(余额回升自动恢复)"),children:a("余额不足")}):tI(e,Wh(e))?r.jsx(Ee,{variant:"warning",shape:"tag",title:a("本周期 Token 消耗达到限制器的上限,转发时会跳过该账号(窗口重置自动恢复)"),children:a("Token 限额")}):r.jsxs(Ee,{variant:"success",shape:"tag",title:a("当前没有任何模型处于限流中"),children:[r.jsx(Yk,{}),a("正常")]}):r.jsx(SCe,{accountName:Ci(e),rows:kCe(e),count:n.length,cooldown:s,soonest:uI(s?s.resetAt:n[0].resetAt),onClear:t})}function JCe({account:e}){const t=Ga(tn(e)),n=t.edition?Sq(e.expiresAt):Nq(e),s=qCe(e,n);if(s.length)return r.jsx("div",{className:"flex flex-col items-center gap-1",children:s.map(u=>r.jsx(e1e,{row:u},u.label))});if(t.longLived)return r.jsx("span",{title:a("主凭证没有固定到期时刻,到期由网关自动续期或本来就不会过期"),children:a("长期有效")});if(!n)return r.jsx("span",{className:"muted",title:a("记录里没有过期时间"),children:"—"});const i=n-Date.now();if(i<=0)return r.jsx(Ee,{variant:"destructive",shape:"tag",title:a("凭证已过期;能否续期取决于登录方式,本机引用需由原客户端处理"),children:a("已过期")});const o=i<36e5?a("{n} 分钟后",{n:Math.max(1,Math.round(i/6e4))}):i<48*36e5?a("{n} 小时后",{n:(i/36e5).toFixed(1)}):a("{n} 天后",{n:Math.floor(i/24/36e5)}),l=ki(n);return r.jsx("span",{title:l?a("{text}过期({full})",{text:o,full:l}):a("{text}过期",{text:o}),children:o})}function e1e({row:e}){const t=e.expiresAt!==null&&e.expiresAt<=Date.now(),n=e.expiresAt===null?a("记录里没有过期时间"):ki(e.expiresAt);return r.jsxs("div",{className:"flex items-center justify-center gap-1.5 whitespace-nowrap",title:`${e.label} · ${n}`,children:[r.jsx("span",{className:"text-[9px] text-subtle",translate:"no",children:e.label}),t?r.jsx(Ee,{variant:"destructive",shape:"tag",children:a("已过期")}):r.jsx("span",{className:e.expiresAt===null&&!e.longLived?"muted":void 0,children:GCe(e,a)})]})}function t1e({account:e}){const t=T8(e.id);return t<=0?null:r.jsx("span",{className:"conn-count",title:a("{n} 个请求正在使用该账号(含还在下发内容的流式请求)",{n:t}),children:t})}function n1e(e){return!e||typeof e!="object"||Array.isArray(e)?"":fM(e.subscription)}function fM(e){if(!e||typeof e!="object")return"";const t=e,n=[];t.planName&&n.push(a("套餐 {name}",{name:String(t.planName)})),t.status&&n.push(a("状态 {status}",{status:String(t.status)})),t.state&&String(t.state)!=="active"&&n.push(rI(t.state));const s=t.expireAt;if(s!=null&&s!==""){const i=Number(s),o=Number.isFinite(i)&&i>1e11?ki(i):String(s);o&&n.push(a("到期 {time}",{time:o}))}return Number.isFinite(Number(t.remainQuota))&&n.push(a("余量 {value}",{value:Ln(t.remainQuota)})),Number.isFinite(Number(t.totalQuota))&&n.push(a("总量 {value}",{value:Ln(t.totalQuota)})),n.join(" ")}function r1e(e){if(!e||typeof e!="object"||Array.isArray(e))return[];const t=e.plans;return Array.isArray(t)?t.filter(n=>n&&typeof n=="object"&&String(n.state||"")==="pending"):[]}function s1e(e){const t=e.map(n=>{const s=String(n.name||n.planId||a("套餐")),i=Number(n.pendingUntil??n.startsAt);return Number.isFinite(i)&&i>0?a("{name}({time} 起生效)",{name:s,time:ki(i*1e3)}):s});return a(`已领到、还没到生效时间的套餐(生效后余额列会按它显示): +`);for(E=w=0;wE||me[w]!==Oe[E]){var $e=` +`+me[w].replace(" at new "," at ");return c.displayName&&$e.includes("")&&($e=$e.replace("",c.displayName)),$e}while(1<=w&&0<=E);break}}}finally{We=!1,Error.prepareStackTrace=x}return(x=c?c.displayName||c.name:"")?Ie(x):""}function kt(c,h){switch(c.tag){case 26:case 27:case 5:return Ie(c.type);case 16:return Ie("Lazy");case 13:return c.child!==h&&h!==null?Ie("Suspense Fallback"):Ie("Suspense");case 19:return Ie("SuspenseList");case 0:case 15:return nt(c.type,!1);case 11:return nt(c.type.render,!1);case 1:return nt(c.type,!0);case 31:return Ie("Activity");case 30:return Ie("ViewTransition");default:return""}}function Je(c){try{var h="",x=null;do h+=kt(c,x),x=c,c=c.return;while(c);return h}catch(w){return` +Error generating stack: `+w.message+` +`+w.stack}}var on=Object.prototype.hasOwnProperty,nn=e.unstable_scheduleCallback,On=e.unstable_cancelCallback,Rn=e.unstable_shouldYield,xt=e.unstable_requestPaint,sn=e.unstable_now,Ke=e.unstable_getCurrentPriorityLevel,zt=e.unstable_ImmediatePriority,ht=e.unstable_UserBlockingPriority,Tt=e.unstable_NormalPriority,Ht=e.unstable_LowPriority,jt=e.unstable_IdlePriority,an=e.log,Xt=e.unstable_setDisableYieldValue,gn=null,un=null;function cr(c){if(typeof an=="function"&&Xt(c),un&&typeof un.setStrictMode=="function")try{un.setStrictMode(gn,c)}catch{}}var yn=Math.clz32?Math.clz32:ke,xn=Math.log,jn=Math.LN2;function ke(c){return c>>>=0,c===0?32:31-(xn(c)/jn|0)|0}var Xe=256,Qe=262144,Yt=4194304;function Rt(c){var h=c&42;if(h!==0)return h;switch(c&-c){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return c&-c;case 262144:case 524288:case 1048576:case 2097152:return c&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return c&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return c}}function fn(c,h,x){var w=c.pendingLanes;if(w===0)return 0;var E=0,I=c.suspendedLanes,W=c.pingedLanes;c=c.warmLanes;var ae=w&134217727;return ae!==0?(w=ae&~I,w!==0?E=Rt(w):(W&=ae,W!==0?E=Rt(W):x||(x=ae&~c,x!==0&&(E=Rt(x))))):(ae=w&~I,ae!==0?E=Rt(ae):W!==0?E=Rt(W):x||(x=w&~c,x!==0&&(E=Rt(x)))),E===0?0:h!==0&&h!==E&&(h&I)===0&&(I=E&-E,x=h&-h,I>=x||I===32&&(x&4194048)!==0)?h:E}function At(c,h){return(c.pendingLanes&~(c.suspendedLanes&~c.pingedLanes)&h)===0}function Re(c,h){(h&8)!==0&&(h|=h&32);var x=c.entangledLanes;if(x!==0)for(c=c.entanglements,x&=h;0x;x++)h.push(c);return h}function mn(c,h){c.pendingLanes|=h,h!==268435456&&(c.suspendedLanes=0,c.pingedLanes=0,c.warmLanes=0)}function vn(c,h,x,w,E,I){var W=c.pendingLanes;c.pendingLanes=x,c.suspendedLanes=0,c.pingedLanes=0,c.warmLanes=0,c.expiredLanes&=x,c.entangledLanes&=x,c.errorRecoveryDisabledLanes&=x,c.shellSuspendCounter=0;var ae=c.entanglements,me=c.expirationTimes,Oe=c.hiddenUpdates;for(x=W&~x;0"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),sr=!1;if(bn)try{var Kr={};Object.defineProperty(Kr,"passive",{get:function(){sr=!0}}),window.addEventListener("test",Kr,Kr),window.removeEventListener("test",Kr,Kr)}catch{sr=!1}var Pr=null,qr=null,qs=null;function to(){if(qs)return qs;var c,h=qr,x=h.length,w,E="value"in Pr?Pr.value:Pr.textContent,I=E.length;for(c=0;c=D0),rde=" ",sde=!1;function ade(c,h){switch(c){case"keyup":return sit.indexOf(h.keyCode)!==-1;case"keydown":return h.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function ide(c){return c=c.detail,typeof c=="object"&&"data"in c?c.data:null}var Hv=!1;function iit(c,h){switch(c){case"compositionend":return ide(h);case"keypress":return h.which!==32?null:(sde=!0,rde);case"textInput":return c=h.data,c===rde&&sde?null:c;default:return null}}function oit(c,h){if(Hv)return c==="compositionend"||!oB&&ade(c,h)?(c=to(),qs=qr=Pr=null,Hv=!1,c):null;switch(c){case"paste":return null;case"keypress":if(!(h.ctrlKey||h.altKey||h.metaKey)||h.ctrlKey&&h.altKey){if(h.char&&1"u")return null;try{return c.activeElement||c.body}catch{return c.body}}function mde(c){for(;c&&c.firstChild;)c=c.firstChild;return c}function pde(c,h){var x=mde(c);c=0;for(var w;x;){if(x.nodeType===3){if(w=c+x.textContent.length,c<=h&&w>=h)return{node:x,offset:h-c};c=w}e:{for(;x;){if(x.nextSibling){x=x.nextSibling;break e}x=x.parentNode}x=void 0}x=mde(x)}}function gde(c,h){return c&&h?c===h?!0:c&&c.nodeType===3?!1:h&&h.nodeType===3?gde(c,h.parentNode):"contains"in c?c.contains(h):c.compareDocumentPosition?!!(c.compareDocumentPosition(h)&16):!1:!1}function xde(c){c=c!=null&&c.ownerDocument!=null&&c.ownerDocument.defaultView!=null?c.ownerDocument.defaultView:window;for(var h=uB(c.document);h instanceof c.HTMLIFrameElement;){try{var x=typeof h.contentWindow.location.href=="string"}catch{x=!1}if(x)c=h.contentWindow;else break;h=uB(c.document)}return h}function dB(c){var h=c&&c.nodeName&&c.nodeName.toLowerCase();return h&&(h==="input"&&(c.type==="text"||c.type==="search"||c.type==="tel"||c.type==="url"||c.type==="password")||h==="textarea"||c.contentEditable==="true")}var pit=bn&&"documentMode"in document&&11>=document.documentMode,Vv=null,fB=null,B0=null,hB=!1;function vde(c,h,x){var w=x.window===x?x.document:x.nodeType===9?x:x.ownerDocument;hB||Vv==null||Vv!==uB(w)||(w=Vv,"selectionStart"in w&&dB(w)?w={start:w.selectionStart,end:w.selectionEnd}:(w=(w.ownerDocument&&w.ownerDocument.defaultView||window).getSelection(),w={anchorNode:w.anchorNode,anchorOffset:w.anchorOffset,focusNode:w.focusNode,focusOffset:w.focusOffset}),B0&&z0(B0,w)||(B0=w,w=iO(fB,"onSelect"),0>=W,E-=W,Zc=1<<32-yn(h)+E|x<hn?(ca=rn,rn=null):ca=rn.sibling;var ar=Ce(Te,rn,Me[hn],Ue);if(ar===null){rn===null&&(rn=ca);break}c&&rn&&ar.alternate===null&&h(Te,rn),we=I(ar,we,hn),er===null?Lt=ar:er.sibling=ar,er=ar,rn=ca}if(hn===Me.length)return x(Te,rn),Fn&&jd(Te,hn),Lt;if(rn===null){for(;hnhn?(ca=rn,rn=null):ca=rn.sibling;var jh=Ce(Te,rn,ar.value,Ue);if(jh===null){rn===null&&(rn=ca);break}c&&rn&&jh.alternate===null&&h(Te,rn),we=I(jh,we,hn),er===null?Lt=jh:er.sibling=jh,er=jh,rn=ca}if(ar.done)return x(Te,rn),Fn&&jd(Te,hn),Lt;if(rn===null){for(;!ar.done;hn++,ar=Me.next())ar=He(Te,ar.value,Ue),ar!==null&&(we=I(ar,we,hn),er===null?Lt=ar:er.sibling=ar,er=ar);return Fn&&jd(Te,hn),Lt}for(rn=w(rn);!ar.done;hn++,ar=Me.next())ar=_e(rn,Te,hn,ar.value,Ue),ar!==null&&(c&&(ca=ar.alternate,ca!==null&&rn.delete(ca.key===null?hn:ca.key)),we=I(ar,we,hn),er===null?Lt=ar:er.sibling=ar,er=ar);return c&&rn.forEach(function(ilt){return h(Te,ilt)}),Fn&&jd(Te,hn),Lt}function Mn(Te,we,Me,Ue){if(typeof Me=="object"&&Me!==null&&Me.type===L&&Me.key===null&&Me.props.ref===void 0&&(Me=Me.props.children),typeof Me=="object"&&Me!==null){switch(Me.$$typeof){case M:e:{for(var Lt=Me.key;we!==null;){if(we.key===Lt){if(Lt=Me.type,Lt===L){if(we.tag===7){x(Te,we.sibling),Ue=E(we,Me.props.children),nh(Ue,Me),Ue.return=Te,Te=Ue;break e}}else if(we.elementType===Lt||typeof Lt=="object"&&Lt!==null&&Lt.$$typeof===z&&Wp(Lt)===we.type){x(Te,we.sibling),Ue=E(we,Me.props),nh(Ue,Me),Ue.return=Te,Te=Ue;break e}x(Te,we);break}else h(Te,we);we=we.sibling}Me.type===L?(Ue=Fp(Me.props.children,Te.mode,Ue,Me.key),nh(Ue,Me),Ue.return=Te,Te=Ue):(Ue=dT(Me.type,Me.key,Me.props,null,Te.mode,Ue),nh(Ue,Me),Ue.return=Te,Te=Ue)}return W(Te);case _:e:{for(Lt=Me.key;we!==null;){if(we.key===Lt)if(we.tag===4&&we.stateNode.containerInfo===Me.containerInfo&&we.stateNode.implementation===Me.implementation){x(Te,we.sibling),Ue=E(we,Me.children||[]),Ue.return=Te,Te=Ue;break e}else{x(Te,we);break}else h(Te,we);we=we.sibling}Ue=yB(Me,Te.mode,Ue),Ue.return=Te,Te=Ue}return W(Te);case z:return Me=Wp(Me),Mn(Te,we,Me,Ue)}if(de(Me))return bt(Te,we,Me,Ue);if(se(Me)){if(Lt=se(Me),typeof Lt!="function")throw Error(s(150));return Me=Lt.call(Me),qt(Te,we,Me,Ue)}if(typeof Me.then=="function")return Mn(Te,we,jT(Me),Ue);if(Me.$$typeof===q)return Mn(Te,we,xT(Te,Me),Ue);wT(Te,Me)}return typeof Me=="string"&&Me!==""||typeof Me=="number"||typeof Me=="bigint"?(Me=""+Me,we!==null&&we.tag===6?(x(Te,we.sibling),Ue=E(we,Me),Ue.return=Te,Te=Ue):(x(Te,we),Ue=bB(Me,Te.mode,Ue),Ue.return=Te,Te=Ue),W(Te)):x(Te,we)}return function(Te,we,Me,Ue){try{q0=0;var Lt=Mn(Te,we,Me,Ue);return Jv=null,Lt}catch(rn){if(rn===Zv||rn===bT)throw rn;var er=no(29,rn,null,Te.mode);return er.lanes=Ue,er.return=Te,er}}}var Xp=Ude(!0),Hde=Ude(!1),rh=!1;function OB(c){c.updateQueue={baseState:c.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function RB(c,h){c=c.updateQueue,h.updateQueue===c&&(h.updateQueue={baseState:c.baseState,firstBaseUpdate:c.firstBaseUpdate,lastBaseUpdate:c.lastBaseUpdate,shared:c.shared,callbacks:null})}function sh(c){return{lane:c,tag:0,payload:null,callback:null,next:null}}function ah(c,h,x){var w=c.updateQueue;if(w===null)return null;if(w=w.shared,(gr&2)!==0){var E=w.pending;return E===null?h.next=h:(h.next=E.next,E.next=h),w.pending=h,h=uT(c),Cde(c,null,x),h}return cT(c,w,h,x),uT(c)}function G0(c,h,x){if(h=h.updateQueue,h!==null&&(h=h.shared,(x&4194048)!==0)){var w=h.lanes;w&=c.pendingLanes,x|=w,h.lanes=x,Ns(c,x)}}function PB(c,h){var x=c.updateQueue,w=c.alternate;if(w!==null&&(w=w.updateQueue,x===w)){var E=null,I=null;if(x=x.firstBaseUpdate,x!==null){do{var W={lane:x.lane,tag:x.tag,payload:x.payload,callback:null,next:null};I===null?E=I=W:I=I.next=W,x=x.next}while(x!==null);I===null?E=I=h:I=I.next=h}else E=I=h;x={baseState:w.baseState,firstBaseUpdate:E,lastBaseUpdate:I,shared:w.shared,callbacks:w.callbacks},c.updateQueue=x;return}c=x.lastBaseUpdate,c===null?x.firstBaseUpdate=h:c.next=h,x.lastBaseUpdate=h}var IB=!1;function W0(){if(IB){var c=Qv;if(c!==null)throw c}}function Y0(c,h,x,w){IB=!1;var E=c.updateQueue;rh=!1;var I=E.firstBaseUpdate,W=E.lastBaseUpdate,ae=E.shared.pending;if(ae!==null){E.shared.pending=null;var me=ae,Oe=me.next;me.next=null,W===null?I=Oe:W.next=Oe,W=me;var $e=c.alternate;$e!==null&&($e=$e.updateQueue,ae=$e.lastBaseUpdate,ae!==W&&(ae===null?$e.firstBaseUpdate=Oe:ae.next=Oe,$e.lastBaseUpdate=me))}if(I!==null){var He=E.baseState;W=0,$e=Oe=me=null,ae=I;do{var Ce=ae.lane&-536870913,_e=Ce!==ae.lane;if(_e?(Jn&Ce)===Ce:(w&Ce)===Ce){Ce!==0&&Ce===qp&&(IB=!0),$e!==null&&($e=$e.next={lane:0,tag:ae.tag,payload:ae.payload,callback:null,next:null});e:{var bt=c,qt=ae;Ce=h;var Mn=x;switch(qt.tag){case 1:if(bt=qt.payload,typeof bt=="function"){He=bt.call(Mn,He,Ce);break e}He=bt;break e;case 3:bt.flags=bt.flags&-65537|128;case 0:if(bt=qt.payload,Ce=typeof bt=="function"?bt.call(Mn,He,Ce):bt,Ce==null)break e;He=A({},He,Ce);break e;case 2:rh=!0}}Ce=ae.callback,Ce!==null&&(c.flags|=64,_e&&(c.flags|=8192),_e=E.callbacks,_e===null?E.callbacks=[Ce]:_e.push(Ce))}else _e={lane:Ce,tag:ae.tag,payload:ae.payload,callback:ae.callback,next:null},$e===null?(Oe=$e=_e,me=He):$e=$e.next=_e,W|=Ce;if(ae=ae.next,ae===null){if(ae=E.shared.pending,ae===null)break;_e=ae,ae=_e.next,_e.next=null,E.lastBaseUpdate=_e,E.shared.pending=null}}while(!0);$e===null&&(me=He),E.baseState=me,E.firstBaseUpdate=Oe,E.lastBaseUpdate=$e,I===null&&(E.shared.lanes=0),fh|=W,c.lanes=W,c.memoizedState=He}}function Vde(c,h){if(typeof c!="function")throw Error(s(191,c));c.call(h)}function Kde(c,h){var x=c.callbacks;if(x!==null)for(c.callbacks=null,c=0;cI?I:8;var W=ie.T,ae={};ae.types=W!==null?W.types:null,ie.T=ae,JB(c,!1,h,x);try{var me=E(),Oe=ie.S;if(Oe!==null&&Oe(ae,me),me!==null&&typeof me=="object"&&typeof me.then=="function"){var $e=Cit(me,w);J0(c,h,$e,zo(c))}else J0(c,h,w,zo(c))}catch(He){J0(c,h,{then:function(){},status:"rejected",reason:He},zo())}finally{oe.p=I,W!==null&&ae.types!==null&&(W.types=ae.types),ie.T=W}}function Pit(){}function QB(c,h,x,w){if(c.tag!==5)throw Error(s(476));var E=kfe(c).queue;wfe(c,E,h,je,x===null?Pit:function(){return Sfe(c),x(w)})}function kfe(c){var h=c.memoizedState;if(h!==null)return h;h={memoizedState:je,baseState:je,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Nd,lastRenderedState:je},next:null};var x={};return h.next={memoizedState:x,baseState:x,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Nd,lastRenderedState:x},next:null},c.memoizedState=h,c=c.alternate,c!==null&&(c.memoizedState=h),h}function Sfe(c){var h=kfe(c);h.next===null&&(h=c.alternate.memoizedState),J0(c,h.next.queue,{},zo())}function ZB(){return ai(jb)}function Nfe(){return Gs().memoizedState}function Cfe(){return Gs().memoizedState}function Iit(c){for(var h=c.return;h!==null;){switch(h.tag){case 24:case 3:var x=zo();c=sh(x);var w=ah(h,c,x);w!==null&&(io(w,h,x),G0(w,h,x)),h={cache:CB()},c.payload=h;return}h=h.return}}function Mit(c,h,x){var w=zo();x={lane:w,revertLane:0,gesture:null,action:x,hasEagerState:!1,eagerState:null,next:null},PT(c)?Efe(h,x):(x=xB(c,h,x,w),x!==null&&(io(x,c,w),Tfe(x,h,w)))}function Afe(c,h,x){var w=zo();J0(c,h,x,w)}function J0(c,h,x,w){var E={lane:w,revertLane:0,gesture:null,action:x,hasEagerState:!1,eagerState:null,next:null};if(PT(c))Efe(h,E);else{var I=c.alternate;if(c.lanes===0&&(I===null||I.lanes===0)&&(I=h.lastRenderedReducer,I!==null))try{var W=h.lastRenderedState,ae=I(W,x);if(E.hasEagerState=!0,E.eagerState=ae,Mo(ae,W))return cT(c,h,E,0),Gr===null&&lT(),!1}catch{}if(x=xB(c,h,E,w),x!==null)return io(x,c,w),Tfe(x,h,w),!0}return!1}function JB(c,h,x,w){if(w={lane:2,revertLane:H4(),gesture:null,action:w,hasEagerState:!1,eagerState:null,next:null},PT(c)){if(h)throw Error(s(479))}else h=xB(c,x,w,2),h!==null&&io(h,c,2)}function PT(c){var h=c.alternate;return c===In||h!==null&&h===In}function Efe(c,h){eb=NT=!0;var x=c.pending;x===null?h.next=h:(h.next=x.next,x.next=h),c.pending=h}function Tfe(c,h,x){if((x&4194048)!==0){var w=h.lanes;w&=c.pendingLanes,x|=w,h.lanes=x,Ns(c,x)}}var IT={readContext:ai,use:ET,useCallback:Ds,useContext:Ds,useEffect:Ds,useImperativeHandle:Ds,useLayoutEffect:Ds,useInsertionEffect:Ds,useMemo:Ds,useReducer:Ds,useRef:Ds,useState:Ds,useDebugValue:Ds,useDeferredValue:Ds,useTransition:Ds,useSyncExternalStore:Ds,useId:Ds,useHostTransitionStatus:Ds,useFormState:Ds,useActionState:Ds,useOptimistic:Ds,useMemoCache:Ds,useCacheRefresh:Ds,useEffectEvent:Ds},Ofe={readContext:ai,use:ET,useCallback:function(c,h){return Mi().memoizedState=[c,h===void 0?null:h],c},useContext:ai,useEffect:hfe,useImperativeHandle:function(c,h,x){x=x!=null?x.concat([c]):null,OT(4194308,4,xfe.bind(null,h,c),x)},useLayoutEffect:function(c,h){return OT(4194308,4,c,h)},useInsertionEffect:function(c,h){OT(4,2,c,h)},useMemo:function(c,h){var x=Mi();h=h===void 0?null:h;var w=c();if(Qp){cr(!0);try{c()}finally{cr(!1)}}return x.memoizedState=[w,h],w},useReducer:function(c,h,x){var w=Mi();if(x!==void 0){var E=x(h);if(Qp){cr(!0);try{x(h)}finally{cr(!1)}}}else E=h;return w.memoizedState=w.baseState=E,c={pending:null,lanes:0,dispatch:null,lastRenderedReducer:c,lastRenderedState:E},w.queue=c,c=c.dispatch=Mit.bind(null,In,c),[w.memoizedState,c]},useRef:function(c){var h=Mi();return c={current:c},h.memoizedState=c},useState:function(c){c=qB(c);var h=c.queue,x=Afe.bind(null,In,h);return h.dispatch=x,[c.memoizedState,x]},useDebugValue:YB,useDeferredValue:function(c,h){var x=Mi();return XB(x,c,h)},useTransition:function(){var c=qB(!1);return c=wfe.bind(null,In,c.queue,!0,!1),Mi().memoizedState=c,[!1,c]},useSyncExternalStore:function(c,h,x){var w=In,E=Mi();if(Fn){if(x===void 0)throw Error(s(407));x=x()}else{if(x=h(),Gr===null)throw Error(s(349));(Jn&127)!==0||Qde(w,h,x)}E.memoizedState=x;var I={value:x,getSnapshot:h};return E.queue=I,hfe(Jde.bind(null,w,I,c),[c]),w.flags|=2048,nb(9,{destroy:void 0},Zde.bind(null,w,I,x,h),null),x},useId:function(){var c=Mi(),h=Gr.identifierPrefix;if(Fn){var x=Jc,w=Zc;x=(w&~(1<<32-yn(w)-1)).toString(32)+x,h="_"+h+"R_"+x,x=CT++,0<\/script>",I=I.removeChild(I.firstChild);break;case"select":I=typeof w.is=="string"?W.createElement("select",{is:w.is}):W.createElement("select"),w.multiple?I.multiple=!0:w.size&&(I.size=w.size);break;default:I=typeof w.is=="string"?W.createElement(E,{is:w.is}):W.createElement(E)}}I[Ca]=h,I[si]=w;e:for(W=h.child;W!==null;){if(W.tag===5||W.tag===6)I.appendChild(W.stateNode);else if(W.tag!==4&&W.tag!==27&&W.child!==null){W.child.return=W,W=W.child;continue}if(W===h)break e;for(;W.sibling===null;){if(W.return===null||W.return===h)break e;W=W.return}W.sibling.return=W.return,W=W.sibling}h.stateNode=I;e:switch(ci(I,E,w),E){case"button":case"input":case"select":case"textarea":w=!!w.autoFocus;break e;case"img":w=!0;break e;default:w=!1}w&&Ad(h)}}return Jr(h),h.subtreeFlags&=-33554433,f4(h,h.type,c===null?null:c.memoizedProps,h.pendingProps,x),null;case 6:if(c&&h.stateNode!=null)c.memoizedProps!==w&&Ad(h);else{if(typeof w!="string"&&h.stateNode===null)throw Error(s(166));if(c=pe.current,Xv(h)){if(c=h.stateNode,x=h.memoizedProps,w=null,E=Ba,E!==null)switch(E.tag){case 27:case 5:w=E.memoizedProps}c[Ca]=h,c=!!(c.nodeValue===x||w!==null&&w.suppressHydrationWarning===!0||Jhe(c.nodeValue,x)),c||eh(h,!0)}else c=fk(c).createTextNode(w),c[Ca]=h,h.stateNode=c}return Jr(h),null;case 31:if(x=h.memoizedState,c===null||c.memoizedState!==null){if(w=Xv(h),x!==null){if(c===null){if(!w)throw Error(s(318));if(c=h.memoizedState,c=c!==null?c.dehydrated:null,!c)throw Error(s(557));c[Ca]=h}else Up(),(h.flags&128)===0&&(h.memoizedState=null),h.flags|=4;Jr(h),c=!1}else x=kB(),c!==null&&c.memoizedState!==null&&(c.memoizedState.hydrationErrors=x),c=!0;if(!c)return h.flags&256?(_o(h),h):(_o(h),null);if((h.flags&128)!==0)throw Error(s(558))}return Jr(h),null;case 13:if(w=h.memoizedState,c===null||c.memoizedState!==null&&c.memoizedState.dehydrated!==null){if(E=Xv(h),w!==null&&w.dehydrated!==null){if(c===null){if(!E)throw Error(s(318));if(E=h.memoizedState,E=E!==null?E.dehydrated:null,!E)throw Error(s(317));E[Ca]=h}else Up(),(h.flags&128)===0&&(h.memoizedState=null),h.flags|=4;Jr(h),E=!1}else E=kB(),c!==null&&c.memoizedState!==null&&(c.memoizedState.hydrationErrors=E),E=!0;if(!E)return h.flags&256?(_o(h),h):(_o(h),null)}return _o(h),(h.flags&128)!==0?(h.lanes=x,h):(x=w!==null,c=c!==null&&c.memoizedState!==null,x&&(w=h.child,E=null,w.alternate!==null&&w.alternate.memoizedState!==null&&w.alternate.memoizedState.cachePool!==null&&(E=w.alternate.memoizedState.cachePool.pool),I=null,w.memoizedState!==null&&w.memoizedState.cachePool!==null&&(I=w.memoizedState.cachePool.pool),I!==E&&(w.flags|=2048)),x!==c&&x&&(h.child.flags|=8192),zT(h,h.updateQueue),Jr(h),null);case 4:return ge(),c===null&&G4(h.stateNode.containerInfo),h.flags|=67108864,Jr(h),null;case 10:return kd(h.type),Jr(h),null;case 19:if(LB(h),w=h.memoizedState,w===null)return Jr(h),null;if(E=(h.flags&128)!==0,I=w.rendering,I===null)if(E)tk(w,!1);else{if(Ls!==0||c!==null&&(c.flags&128)!==0)for(c=h.child;c!==null;){if(I=ST(c),I!==null){for(h.flags|=128,tk(w,!1),c=I.updateQueue,h.updateQueue=c,zT(h,c),h.subtreeFlags=0,c=x,x=h.child;x!==null;)Ade(x,c),x=x.sibling;return X0(h,oi.current&1|2),Fn&&jd(h,w.treeForkCount),h.child}c=c.sibling}w.tail!==null&&sn()>QT&&(h.flags|=128,E=!0,tk(w,!1),h.lanes=4194304)}else{if(!E)if(c=ST(I),c!==null){if(h.flags|=128,E=!0,c=c.updateQueue,h.updateQueue=c,zT(h,c),tk(w,!0),w.tail===null&&w.tailMode!=="collapsed"&&w.tailMode!=="visible"&&!I.alternate&&!Fn)return Jr(h),null}else 2*sn()-w.renderingStartTime>QT&&x!==536870912&&(h.flags|=128,E=!0,tk(w,!1),h.lanes=4194304);w.isBackwards?(I.sibling=h.child,h.child=I):(c=w.last,c!==null?c.sibling=I:h.child=I,w.last=I)}if(w.tail!==null){c=w.tail;e:{for(x=c;x!==null;){if(x.alternate!==null){x=!1;break e}x=x.sibling}x=!0}return w.rendering=c,w.tail=c.sibling,w.renderingStartTime=sn(),c.sibling=null,I=oi.current,I=E?I&1|2:I&1,w.tailMode==="visible"||w.tailMode==="collapsed"||!x||Fn?X0(h,I):(x=I,ye(ii,h),ye(oi,x),yi===null&&(yi=h)),Fn&&jd(h,w.treeForkCount),c}return Jr(h),null;case 22:case 23:return _o(h),_B(),w=h.memoizedState!==null,c!==null?c.memoizedState!==null!==w&&(h.flags|=8192):w&&(h.flags|=8192),w?(x&536870912)!==0&&(h.flags&128)===0&&(Jr(h),h.subtreeFlags&6&&(h.flags|=8192)):Jr(h),x=h.updateQueue,x!==null&&zT(h,x.retryQueue),x=null,c!==null&&c.memoizedState!==null&&c.memoizedState.cachePool!==null&&(x=c.memoizedState.cachePool.pool),w=null,h.memoizedState!==null&&h.memoizedState.cachePool!==null&&(w=h.memoizedState.cachePool.pool),w!==x&&(h.flags|=2048),c!==null&&ce(Gp),null;case 24:return x=null,c!==null&&(x=c.memoizedState.cache),h.memoizedState.cache!==x&&(h.flags|=2048),kd(ia),Jr(h),null;case 25:return null;case 30:return h.flags|=33554432,Jr(h),null}throw Error(s(156,h.tag))}function Fit(c,h){switch(jB(h),h.tag){case 1:return c=h.flags,c&65536?(h.flags=c&-65537|128,h):null;case 3:return kd(ia),ge(),c=h.flags,(c&65536)!==0&&(c&128)===0?(h.flags=c&-65537|128,h):null;case 26:case 27:case 5:return be(h),null;case 31:if(h.memoizedState!==null){if(_o(h),h.alternate===null)throw Error(s(340));Up()}return c=h.flags,c&65536?(h.flags=c&-65537|128,h):null;case 13:if(_o(h),c=h.memoizedState,c!==null&&c.dehydrated!==null){if(h.alternate===null)throw Error(s(340));Up()}return c=h.flags,c&65536?(h.flags=c&-65537|128,h):null;case 19:return LB(h),c=h.flags,c&65536?(h.flags=c&-65537|128,c=h.memoizedState,c!==null&&(c.rendering=null,c.tail=null),h.flags|=4,h):null;case 4:return ge(),null;case 10:return kd(h.type),null;case 22:case 23:return _o(h),_B(),c!==null&&ce(Gp),c=h.flags,c&65536?(h.flags=c&-65537|128,h):null;case 24:return kd(ia),null;case 25:return null;default:return null}}function the(c,h){switch(jB(h),h.tag){case 3:kd(ia),ge();break;case 26:case 27:case 5:be(h);break;case 4:ge();break;case 31:h.memoizedState!==null&&_o(h);break;case 13:_o(h);break;case 19:LB(h);break;case 10:kd(h.type);break;case 22:case 23:_o(h),_B(),c!==null&&ce(Gp);break;case 24:kd(ia)}}function nk(c,h){try{var x=h.updateQueue,w=x!==null?x.lastEffect:null;if(w!==null){var E=w.next;x=E;do{if((x.tag&c)===c){w=void 0;var I=x.create,W=x.inst;w=I(),W.destroy=w}x=x.next}while(x!==E)}}catch(ae){Mr(h,h.return,ae)}}function ch(c,h,x){try{var w=h.updateQueue,E=w!==null?w.lastEffect:null;if(E!==null){var I=E.next;w=I;do{if((w.tag&c)===c){var W=w.inst,ae=W.destroy;if(ae!==void 0){W.destroy=void 0,E=h;var me=x,Oe=ae;try{Oe()}catch($e){Mr(E,me,$e)}}}w=w.next}while(w!==I)}}catch($e){Mr(h,h.return,$e)}}function nhe(c){var h=c.updateQueue;if(h!==null){var x=c.stateNode;try{Kde(h,x)}catch(w){Mr(c,c.return,w)}}}function rhe(c,h,x){x.props=Zp(c.type,c.memoizedProps),x.state=c.memoizedState;try{x.componentWillUnmount()}catch(w){Mr(c,h,w)}}function eu(c,h){try{var x=c.ref;if(x!==null){switch(c.tag){case 26:case 27:case 5:var w=c.stateNode;break;case 30:var E=c.stateNode,I=vd(c.memoizedProps,E);(E.ref===null||E.ref.name!==I)&&(E.ref=ume(I)),w=E.ref;break;case 7:if(c.stateNode===null){var W=new Bo(c);g(c.child,!1,Rot,W,void 0,void 0),c.stateNode=W}w=c.stateNode;break;default:w=c.stateNode}typeof x=="function"?c.refCleanup=x(w):x.current=w}}catch(ae){Mr(c,h,ae)}}function li(c,h){var x=c.ref,w=c.refCleanup;if(x!==null)if(typeof w=="function")try{w()}catch(E){Mr(c,h,E)}finally{c.refCleanup=null,c=c.alternate,c!=null&&(c.refCleanup=null)}else if(typeof x=="function")try{x(null)}catch(E){Mr(c,h,E)}else x.current=null}function BT(c,h){if((c.tag===5||c.tag===27||c.tag===6)&&c.alternate===null&&h!==null)for(var x=0;x title"))),ci(w,h,x),w[Ca]=c,aa(w),h=w;break e;case"link":if(I=Ame("link","href",E).get(h+(x.href||""))){for(W=0;WMn&&(W=Mn,Mn=qt,qt=W);var Te=pde(ae,qt),we=pde(ae,Mn);if(Te&&we&&(_e.rangeCount!==1||_e.anchorNode!==Te.node||_e.anchorOffset!==Te.offset||_e.focusNode!==we.node||_e.focusOffset!==we.offset)){var Me=He.createRange();Me.setStart(Te.node,Te.offset),_e.removeAllRanges(),qt>Mn?(_e.addRange(Me),_e.extend(we.node,we.offset)):(Me.setEnd(we.node,we.offset),_e.addRange(Me))}}}}for(He=[],_e=ae;_e=_e.parentNode;)_e.nodeType===1&&He.push({element:_e,left:_e.scrollLeft,top:_e.scrollTop});for(typeof ae.focus=="function"&&ae.focus(),ae=0;aex?32:x,ie.T=null,x=I4,I4=null;var I=cc,W=iu;if(Cs=0,ng=cc=null,iu=0,(gr&6)!==0)throw Error(s(331));var ae=gr;if(gr|=4,Che(I.current),khe(I,I.current,W,x),gr=ae,ck(0,!1),un&&typeof un.onPostCommitFiberRoot=="function")try{un.onPostCommitFiberRoot(gn,I)}catch{}return!0}finally{oe.p=E,ie.T=w,Fhe(c,h)}}function Uhe(c,h,x){h=wl(x,h),h=n4(c.stateNode,h,2),c=ah(c,h,2),c!==null&&(mn(c,2),ou(c))}function Mr(c,h,x){if(c.tag===3)Uhe(c,c,x);else for(;h!==null;){if(h.tag===3){Uhe(h,c,x);break}else if(h.tag===1){var w=h.stateNode;if(typeof h.type.getDerivedStateFromError=="function"||typeof w.componentDidCatch=="function"&&(hh===null||!hh.has(w))){c=wl(x,c),x=$fe(2),w=ah(h,x,2),w!==null&&(zfe(x,w,h,c),mn(w,2),ou(w));break}}h=h.return}}function B4(c,h,x){var w=c.pingCache;if(w===null){w=c.pingCache=new Kit;var E=new Set;w.set(h,E)}else E=w.get(h),E===void 0&&(E=new Set,w.set(h,E));E.has(x)||(O4=!0,E.add(x),c=Jit.bind(null,c,h,x),h.then(c,c))}function Jit(c,h,x){var w=c.pingCache;w!==null&&w.delete(h),c.pingedLanes|=c.suspendedLanes&x,c.warmLanes&=~x,Gr===c&&(Jn&x)===x&&((Ls===4||Ls===3&&(Jn&62914560)===Jn&&300>sn()-XT)&&(gr&2)===0?hb(c,0):YT|=x,lb===Jn&&(lb=0)),ou(c)}function Hhe(c,h){h===0&&(h=Bt()),c=Bp(c,h),c!==null&&(mn(c,h),ou(c))}function eot(c){var h=c.memoizedState,x=0;h!==null&&(x=h.retryLane),Hhe(c,x)}function tot(c,h){var x=0;switch(c.tag){case 31:case 13:var w=c.stateNode,E=c.memoizedState;E!==null&&(x=E.retryLane);break;case 19:w=c.stateNode;break;case 22:w=c.stateNode._retryCache;break;default:throw Error(s(314))}w!==null&&w.delete(h),Hhe(c,x)}function not(c,h){return nn(c,h)}var pb=null,gb=null,F4=!1,sO=!1,U4=!1,ph=0;function ou(c){c!==gb&&c.next===null&&(gb===null?pb=gb=c:gb=gb.next=c),sO=!0,F4||(F4=!0,sot())}function ck(c,h){if(!U4&&sO){U4=!0;do for(var x=!1,w=pb;w!==null;){if(c!==0){var E=w.pendingLanes;if(E===0)var I=0;else{var W=w.suspendedLanes,ae=w.pingedLanes;I=(1<<31-yn(42|c)+1)-1,I&=E&~(W&~ae),I=I&201326741?I&201326741|1:I?I|2:0}I!==0&&(x=!0,Ghe(w,I))}else I=Jn,I=fn(w,w===Gr?I:0,w.cancelPendingCommit!==null||w.timeoutHandle!==-1),(I&3)===0||At(w,I)||(x=!0,Ghe(w,I));w=w.next}while(x);U4=!1}}function rot(){Vhe()}function Vhe(){sO=F4=!1;var c=0;ph!==0&&pot()&&(c=ph);for(var h=sn(),x=null,w=pb;w!==null;){var E=w.next,I=Khe(w,h);I===0?(w.next=null,x===null?pb=E:x.next=E,E===null&&(gb=x)):(x=w,(c!==0||(I&3)!==0)&&(sO=!0)),w=E}Cs!==0&&Cs!==5||ck(c),ph!==0&&(ph=0)}function Khe(c,h){for(var x=c.suspendedLanes,w=c.pingedLanes,E=c.expirationTimes,I=c.pendingLanes&-62914561;0ae)break;var $e=me.transferSize,He=me.initiatorType;$e&&eme(He)&&(me=me.responseEnd,W+=$e*(mecO){qt.length=bt;break}Me=new Promise(jot.bind(Me)),qt.push(Me)}}}if(0"u"?null:document;function kme(c,h,x){var w=vb;if(w&&typeof h=="string"&&h){var E=Ii(h);E='link[rel="'+c+'"][href="'+E+'"]',typeof x=="string"&&(E+='[crossorigin="'+x+'"]'),wme.has(E)||(wme.add(E),c={rel:c,crossOrigin:x,href:h},w.querySelector(E)===null&&(h=w.createElement("link"),ci(h,"link",c),aa(h),w.head.appendChild(h)))}}function Bot(c){Td.D(c),kme("dns-prefetch",c,null)}function Fot(c,h){Td.C(c,h),kme("preconnect",c,h)}function Uot(c,h,x){Td.L(c,h,x);var w=vb;if(w&&c&&h){var E='link[rel="preload"][as="'+Ii(h)+'"]';h==="image"&&x&&x.imageSrcSet?(E+='[imagesrcset="'+Ii(x.imageSrcSet)+'"]',typeof x.imageSizes=="string"&&(E+='[imagesizes="'+Ii(x.imageSizes)+'"]')):E+='[href="'+Ii(c)+'"]';var I=E;switch(h){case"style":I=bb(c);break;case"script":I=yb(c)}if(!(El.has(I)||(c=A({rel:"preload",href:h==="image"&&x&&x.imageSrcSet?void 0:c,as:h},x),El.set(I,c),w.querySelector(E)!==null||h==="style"&&w.querySelector(mk(I))||h==="script"&&w.querySelector(pk(I))))){var W=w.createElement("link");ci(W,"link",c),h==="style"&&(W[Aa]=!0,W.onload=W.onerror=function(){N0(W)}),aa(W),w.head.appendChild(W)}}}function Hot(c,h){Td.m(c,h);var x=vb;if(x&&c){var w=h&&typeof h.as=="string"?h.as:"script",E='link[rel="modulepreload"][as="'+Ii(w)+'"][href="'+Ii(c)+'"]',I=E;switch(w){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":I=yb(c)}if(!El.has(I)&&(c=A({rel:"modulepreload",href:c},h),El.set(I,c),x.querySelector(E)===null)){switch(w){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(x.querySelector(pk(I)))return}w=x.createElement("link"),ci(w,"link",c),aa(w),x.head.appendChild(w)}}}function Vot(c,h,x){Td.S(c,h,x);var w=vb;if(w&&c){var E=Yf(w).hoistableStyles,I=bb(c);h=h||"default";var W=E.get(I);if(!W){var ae={loading:0,preload:null};if(W=w.querySelector(mk(I)))ae.loading=5;else{c=A({rel:"stylesheet",href:c,"data-precedence":h},x),(x=El.get(I))&&cF(c,x);var me=W=w.createElement("link");aa(me),ci(me,"link",c),me._p=new Promise(function(Oe,$e){me.onload=Oe,me.onerror=$e}),me.addEventListener("load",function(){ae.loading|=1}),me.addEventListener("error",function(){ae.loading|=2}),ae.loading|=4,oO(W,h,w)}W={type:"stylesheet",instance:W,count:1,state:ae},E.set(I,W)}}}function Kot(c,h){Td.X(c,h);var x=vb;if(x&&c){var w=Yf(x).hoistableScripts,E=yb(c),I=w.get(E);I||(I=x.querySelector(pk(E)),I||(c=A({src:c,async:!0},h),(h=El.get(E))&&uF(c,h),I=x.createElement("script"),aa(I),ci(I,"link",c),x.head.appendChild(I)),I={type:"script",instance:I,count:1,state:null},w.set(E,I))}}function qot(c,h){Td.M(c,h);var x=vb;if(x&&c){var w=Yf(x).hoistableScripts,E=yb(c),I=w.get(E);I||(I=x.querySelector(pk(E)),I||(c=A({src:c,async:!0,type:"module"},h),(h=El.get(E))&&uF(c,h),I=x.createElement("script"),aa(I),ci(I,"link",c),x.head.appendChild(I)),I={type:"script",instance:I,count:1,state:null},w.set(E,I))}}function Sme(c,h,x,w){var E=(E=pe.current)?hk(E):null;if(!E)throw Error(s(446));switch(c){case"meta":case"title":return null;case"style":return typeof x.precedence=="string"&&typeof x.href=="string"?(x=bb(x.href),h=Yf(E).hoistableStyles,w=h.get(x),w||(w={type:"style",instance:null,count:0,state:null},h.set(x,w)),w):{type:"void",instance:null,count:0,state:null};case"link":if(x.rel==="stylesheet"&&typeof x.href=="string"&&typeof x.precedence=="string"){c=bb(x.href);var I=Yf(E).hoistableStyles,W=I.get(c);if(W||(E=E.ownerDocument||E,W={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},I.set(c,W),(I=E.querySelector(mk(c)))?I._p||(W.instance=I,W.state.loading=5):(I=El.get(c),I||(I={rel:"preload",as:"style",href:x.href,crossOrigin:x.crossOrigin,integrity:x.integrity,media:x.media,hrefLang:x.hrefLang,referrerPolicy:x.referrerPolicy},El.set(c,I)),Got(E,c,I,W.state))),h&&w===null)throw Error(s(528,""));return W}if(h&&w!==null)throw Error(s(529,""));return null;case"script":return h=x.async,x=x.src,typeof x=="string"&&h&&typeof h!="function"&&typeof h!="symbol"?(x=yb(x),h=Yf(E).hoistableScripts,w=h.get(x),w||(w={type:"script",instance:null,count:0,state:null},h.set(x,w)),w):{type:"void",instance:null,count:0,state:null};default:throw Error(s(444,c))}}function bb(c){return'href="'+Ii(c)+'"'}function mk(c){return'link[rel="stylesheet"]['+c+"]"}function Nme(c){return A({},c,{"data-precedence":c.precedence,precedence:null})}function Got(c,h,x,w){if(h=c.querySelector('link[rel="preload"][as="style"]['+h+"]")){if(h[Aa]!==!0){w.loading=1;return}}else h=c.createElement("link"),h[Aa]=!0,h.onload=h.onerror=N0.bind(null,h),ci(h,"link",x),aa(h),c.head.appendChild(h);w.preload=h,h.addEventListener("load",function(){return w.loading|=1}),h.addEventListener("error",function(){return w.loading|=2})}function yb(c){return'[src="'+Ii(c)+'"]'}function pk(c){return"script[async]"+c}function Cme(c,h,x){if(h.count++,h.instance===null)switch(h.type){case"style":var w=c.querySelector('style[data-href~="'+Ii(x.href)+'"]');if(w)return h.instance=w,aa(w),w;var E=A({},x,{"data-href":x.href,"data-precedence":x.precedence,href:null,precedence:null});return w=(c.ownerDocument||c).createElement("style"),aa(w),ci(w,"style",E),oO(w,x.precedence,c),h.instance=w;case"stylesheet":E=bb(x.href);var I=c.querySelector(mk(E));if(I)return h.state.loading|=4,h.instance=I,aa(I),I;w=Nme(x),(E=El.get(E))&&cF(w,E),I=(c.ownerDocument||c).createElement("link"),aa(I);var W=I;return W._p=new Promise(function(ae,me){W.onload=ae,W.onerror=me}),ci(I,"link",w),h.state.loading|=4,oO(I,x.precedence,c),h.instance=I;case"script":return I=yb(x.src),(E=c.querySelector(pk(I)))?(h.instance=E,aa(E),E):(w=x,(E=El.get(I))&&(w=A({},x),uF(w,E)),c=c.ownerDocument||c,E=c.createElement("script"),aa(E),ci(E,"link",w),c.head.appendChild(E),h.instance=E);case"void":return null;default:throw Error(s(443,h.type))}else h.type==="stylesheet"&&(h.state.loading&4)===0&&(w=h.instance,h.state.loading|=4,oO(w,x.precedence,c));return h.instance}function oO(c,h,x){for(var w=x.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),E=w.length?w[w.length-1]:null,I=E,W=0;W title"):null)}function Wot(c,h,x){if(x===1||h.itemProp!=null)return!1;switch(c){case"meta":case"title":return!0;case"style":if(typeof h.precedence!="string"||typeof h.href!="string"||h.href==="")break;return!0;case"link":if(typeof h.rel!="string"||typeof h.href!="string"||h.href===""||h.onLoad||h.onError)break;return h.rel==="stylesheet"?(c=h.disabled,typeof h.precedence=="string"&&c==null):!0;case"script":if(h.async&&typeof h.async!="function"&&typeof h.async!="symbol"&&!h.onLoad&&!h.onError&&h.src&&typeof h.src=="string")return!0}return!1}function Eme(c,h){return c==="img"&&h.src!=null&&h.src!==""&&h.onLoad==null&&h.loading!=="lazy"}function Tme(c){return!(c.type==="stylesheet"&&(c.state.loading&3)===0)}function Ome(c){return(c.width||100)*(c.height||100)*(typeof devicePixelRatio=="number"?devicePixelRatio:1)*.25}function Rme(c,h){typeof h.decode=="function"&&(c.imgCount++,h.complete||(c.imgBytes+=Ome(h),c.suspenseyImages.push(h)),c=Qot.bind(c),h.decode().then(c,c))}function Yot(c,h,x,w){if(x.type==="stylesheet"&&(typeof w.media!="string"||matchMedia(w.media).matches!==!1)&&(x.state.loading&4)===0){if(x.instance===null){var E=bb(w.href),I=h.querySelector(mk(E));if(I){h=I._p,h!==null&&typeof h=="object"&&typeof h.then=="function"&&(c.count++,c=gk.bind(c),h.then(c,c)),x.state.loading|=4,x.instance=I,aa(I);return}I=h.ownerDocument||h,w=Nme(w),(E=El.get(E))&&cF(w,E),I=I.createElement("link"),aa(I);var W=I;W._p=new Promise(function(ae,me){W.onload=ae,W.onerror=me}),ci(I,"link",w),x.instance=I}c.stylesheets===null&&(c.stylesheets=new Map),c.stylesheets.set(x,h),(h=x.state.preload)&&(x.state.loading&3)===0&&(c.count++,x=gk.bind(c),h.addEventListener("load",x),h.addEventListener("error",x))}}var cO=0;function Xot(c,h){return c.stylesheets&&c.count===0&&dO(c,c.stylesheets),0cO?50:800)+h);return c.unsuspend=x,function(){c.unsuspend=null,clearTimeout(w),clearTimeout(E)}}:null}function Pme(c){if(c.count===0&&(c.imgCount===0||!c.waitingForImages)){if(c.stylesheets)dO(c,c.stylesheets);else if(c.unsuspend){var h=c.unsuspend;c.unsuspend=null,h()}}}function gk(){this.count--,Pme(this)}function Qot(){this.imgCount--,Pme(this)}var uO=null;function dO(c,h){c.stylesheets=null,c.unsuspend!==null&&(c.count++,uO=new Map,h.forEach(Zot,c),uO=null,gk.call(c))}function Zot(c,h){if(!(h.state.loading&4)){var x=uO.get(c);if(x)var w=x.get(null);else{x=new Map,uO.set(c,x);for(var E=c.querySelectorAll("link[data-precedence],style[data-precedence]"),I=0;I"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),yO.exports=Zme(),yO.exports}var zn=Jme();const TF=Od({__proto__:null},[zn]);var p=sg();const kO=Od({__proto__:null,default:dc(p)},[p]);function jk(){return typeof window<"u"}function Va(e){return SO(e)?(e.nodeName||"").toLowerCase():"#document"}function vr(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function lu(e){var t;return(t=(SO(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function SO(e){return jk()?e instanceof Node||e instanceof vr(e).Node:!1}function Un(e){return jk()?e instanceof Element||e instanceof vr(e).Element:!1}function br(e){return jk()?e instanceof HTMLElement||e instanceof vr(e).HTMLElement:!1}function ag(e){return!jk()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof vr(e).ShadowRoot}function Cb(e){const{overflow:t,overflowX:n,overflowY:s,display:i}=Li(e);return/auto|scroll|overlay|hidden|clip/.test(t+s+n)&&i!=="inline"&&i!=="contents"}function epe(e){return/^(table|td|th)$/.test(Va(e))}function wk(e){try{if(e.matches(":popover-open"))return!0}catch{}try{return e.matches(":modal")}catch{return!1}}const tpe=/transform|translate|scale|rotate|perspective|filter/,npe=/paint|layout|strict|content/,wh=e=>!!e&&e!=="none";let NO;function CO(e){const t=Un(e)?Li(e):e;return wh(t.transform)||wh(t.translate)||wh(t.scale)||wh(t.rotate)||wh(t.perspective)||!AO()&&(wh(t.backdropFilter)||wh(t.filter))||tpe.test(t.willChange||"")||npe.test(t.contain||"")}function rpe(e){let t=Id(e);for(;br(t)&&!Pd(t);){if(CO(t))return t;if(wk(t))return null;t=Id(t)}return null}function AO(){return NO==null&&(NO=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),NO}function Pd(e){return/^(html|body|#document)$/.test(Va(e))}function Li(e){return vr(e).getComputedStyle(e)}function kk(e){return Un(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Id(e){if(Va(e)==="html")return e;const t=e.assignedSlot||e.parentNode||ag(e)&&e.host||lu(e);return ag(t)?t.host:t}function OF(e){const t=Id(e);return Pd(t)?(e.ownerDocument||e).body:br(t)&&Cb(t)?t:OF(t)}function ig(e,t,n){var s;t===void 0&&(t=[]),n===void 0&&(n=!0);const i=OF(e),o=i===((s=e.ownerDocument)==null?void 0:s.body),l=vr(i);if(o){const u=EO(l);return t.concat(l,l.visualViewport||[],Cb(i)?i:[],u&&n?ig(u):[])}else return t.concat(i,ig(i,[],n))}function EO(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}const TO={...kO},RF={};function $s(e,t){const n=p.useRef(RF);return n.current===RF&&(n.current=e(t)),n}const OO=TO.useInsertionEffect,spe=OO&&OO!==TO.useLayoutEffect?OO:e=>e();function qe(e){const t=$s(ape).current;return t.next=e,spe(t.effect),t.trampoline}function ape(){const e={next:void 0,callback:ipe,trampoline:(...t)=>e.callback?.(...t),effect:()=>{e.callback=e.next}};return e}function ipe(){}const Ge=typeof document<"u"?p.useLayoutEffect:()=>{};function RO(e,t){if(e&&!t)return e;if(!e&&t)return t;if(e||t)return{...e,...t}}const PO={};function oo(e,t,n,s,i){if(!n&&!s&&!i&&!e)return Sk(t);let o=Sk(e);return t&&(o=Ab(o,t)),n&&(o=Ab(o,n)),s&&(o=Ab(o,s)),i&&(o=Ab(o,i)),o}function ope(e){if(e.length===0)return PO;if(e.length===1)return Sk(e[0]);let t=Sk(e[0]);for(let n=1;n=65&&i<=90&&(typeof t=="function"||typeof t>"u")}function IO(e){return typeof e=="function"}function IF(e,t){return IO(e)?e(t):e??PO}function upe(e,t){return t?e?(...n)=>{const s=n[0];if(DF(s)){const o=s;Nk(o);const l=t(...n);return o.baseUIHandlerPrevented||e?.(...n),l}const i=t(...n);return e?.(...n),i}:MF(t):e}function MF(e){return e&&((...t)=>{const n=t[0];return DF(n)&&Nk(n),e(...t)})}function Nk(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function _F(e,t){return t?e?t+" "+e:t:e}function DF(e){return e!=null&&typeof e=="object"&&"nativeEvent"in e}function dpe(e,t){return function(s,...i){const o=new URL(e);return o.searchParams.set("code",s.toString()),i.forEach(l=>o.searchParams.append("args[]",l)),`${t} error #${s}; visit ${o} for the full message.`}}const Kn=dpe("https://base-ui.com/production-error","Base UI"),LF=p.createContext(void 0);function $F(e=!1){const t=p.useContext(LF);if(t===void 0&&!e)throw new Error(Kn(16));return t}function fpe(e){const{focusableWhenDisabled:t,disabled:n,composite:s=!1,tabIndex:i=0,isNativeButton:o}=e,l=s&&t!==!1,u=s&&t===!1;return{props:p.useMemo(()=>{const f={onKeyDown(m){n&&t&&m.key!=="Tab"&&m.preventDefault()}};return s||(f.tabIndex=i,!o&&n&&(f.tabIndex=t?i:-1)),(o&&(t||l)||!o&&n)&&(f["aria-disabled"]=n),o&&(!t||u)&&(f.disabled=n),f},[s,n,t,l,u,o,i])}}function _n(e){return e?.ownerDocument||document}function og(e,t,{detail:n=0}={}){e.dispatchEvent(new(vr(e)).PointerEvent("click",{bubbles:!0,cancelable:!0,composed:!0,detail:n,shiftKey:t.shiftKey,ctrlKey:t.ctrlKey,altKey:t.altKey,metaKey:t.metaKey}))}function $i(e={}){const{disabled:t=!1,focusableWhenDisabled:n,tabIndex:s=0,native:i=!0,composite:o}=e,l=p.useRef(null),u=$F(!0),d=o??u!==void 0,{props:f}=fpe({focusableWhenDisabled:n,disabled:t,composite:d,tabIndex:s,isNativeButton:i}),m=p.useCallback(()=>{const b=l.current;MO(b)&&d&&t&&f.disabled===void 0&&b.disabled&&(b.disabled=!1)},[t,f.disabled,d]);Ge(m,[m]);const g=p.useCallback((b={})=>{const{onClick:y,onMouseDown:k,onKeyUp:j,onKeyDown:S,onPointerDown:N,...C}=b;return oo({onClick(T){if(t){T.preventDefault();return}y?.(T)},onMouseDown(T){t||k?.(T)},onKeyDown(T){if(t||(Nk(T),S?.(T),T.baseUIHandlerPrevented))return;const R=T.target===T.currentTarget,O=T.currentTarget,A=MO(O),P=!i&&hpe(O),M=R&&(i?A:!P),_=T.key==="Enter",L=T.key===" ",$=O.getAttribute("role"),D=$?.startsWith("menuitem")||$==="option"||$==="gridcell";if(R&&d&&L){if(T.defaultPrevented&&D)return;T.preventDefault(),(!i||A)&&(T.preventBaseUIHandler(),og(O,T));return}if(!M||i||!L&&!_){R&&P&&L&&T.preventDefault();return}T.defaultPrevented||(T.preventDefault(),_&&(T.preventBaseUIHandler(),og(O,T)))},onKeyUp(T){if(!t){if(Nk(T),j?.(T),T.target===T.currentTarget&&i&&d&&MO(T.currentTarget)&&T.key===" "){T.preventDefault();return}T.baseUIHandlerPrevented||T.target===T.currentTarget&&!i&&!d&&!T.defaultPrevented&&T.key===" "&&(T.preventBaseUIHandler(),og(T.currentTarget,T))}},onPointerDown(T){if(t){T.preventDefault();return}N?.(T)}},i?{type:"button"}:{role:"button"},f,C)},[t,f,d,i]),v=qe(b=>{l.current=b,m()});return{getButtonProps:g,buttonRef:v}}function MO(e){return br(e)&&e.tagName==="BUTTON"}function hpe(e){return br(e)&&e.tagName==="A"&&!!e.href}function lo(e,t,n,s){const i=$s(zF).current;return ppe(i,e,t,n,s)&&BF(i,[e,t,n,s]),i.callback}function mpe(e){const t=$s(zF).current;return gpe(t,e)&&BF(t,e),t.callback}function zF(){return{callback:null,cleanup:null,refs:[]}}function ppe(e,t,n,s,i){return e.refs[0]!==t||e.refs[1]!==n||e.refs[2]!==s||e.refs[3]!==i}function gpe(e,t){return e.refs.length!==t.length||e.refs.some((n,s)=>n!==t[s])}function BF(e,t){if(e.refs=t,t.every(n=>n==null)){e.callback=null;return}e.callback=n=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),n!=null){const s=Array(t.length).fill(null);for(let i=0;i{for(let i=0;i=e}function FF(e){if(!p.isValidElement(e))return null;const t=e,n=t.props;return(_O(19)?n?.ref:t.ref)??null}function Qn(){}const co=Object.freeze([]),yr=Object.freeze({});function vpe(e,t){const n={};for(const s in e){const i=e[s];if(t?.hasOwnProperty(s)){const o=t[s](i);o!=null&&Object.assign(n,o);continue}i===!0?n[`data-${s.toLowerCase()}`]="":i&&(n[`data-${s.toLowerCase()}`]=i.toString())}return n}function bpe(e,t){return typeof e=="function"?e(t):e}function UF(e,t){return typeof e=="function"?e(t):e}function Kt(e,t,n={}){let s=t.render;n.enabled!==!1&&(s=kpe(s));const i=ype(t,n,s);if(n.enabled===!1)return null;const o=n.state??yr;return Spe(e,s,i,o)}function ype(e,t,n){const{className:s,style:i}=e,{state:o=yr,ref:l,props:u,stateAttributesMapping:d,enabled:f=!0}=t,m=f?bpe(s,o):void 0,g=f?UF(i,o):void 0,v=f?vpe(o,d):yr,b=f&&u?jpe(u):void 0,y=f?RO(v,b)??{}:yr;return typeof document<"u"&&(f?Array.isArray(l)?y.ref=mpe([y.ref,FF(n),...l]):y.ref=lo(y.ref,FF(n),l):lo(null,null)),f?(m!==void 0&&(y.className=_F(y.className,m)),g!==void 0&&(y.style=RO(y.style,g)),y):yr}function jpe(e){return Array.isArray(e)?ope(e):oo(void 0,e)}const wpe=Symbol.for("react.lazy");function kpe(e){if(e?.$$typeof!==wpe)return e;const t=p.Children.toArray(e)[0];return p.isValidElement(t)?t:e}function Spe(e,t,n,s){if(t){if(typeof t=="function")return t(n,s);const i=oo(n,t.props);return i.ref=n.ref,p.cloneElement(t,i)}if(e&&typeof e=="string")return Npe(e,n);throw new Error(Kn(8))}function Npe(e,t){return e==="button"?p.createElement("button",{type:"button",...t,key:t.key}):e==="img"?p.createElement("img",{alt:"",...t,key:t.key}):p.createElement(e,t)}const Cpe=p.forwardRef(function(t,n){const{render:s,className:i,disabled:o=!1,focusableWhenDisabled:l=!1,nativeButton:u=!0,style:d,...f}=t,{getButtonProps:m,buttonRef:g}=$i({disabled:o,focusableWhenDisabled:l,native:u});return Kt("button",t,{state:{disabled:o},ref:[n,g],props:[f,m]})});function HF(e){var t,n,s="";if(typeof e=="string"||typeof e=="number")s+=e;else if(typeof e=="object")if(Array.isArray(e)){var i=e.length;for(t=0;ttypeof e=="boolean"?`${e}`:e===0?"0":e,qF=VF,kh=(e,t)=>n=>{var s;if(t?.variants==null)return qF(e,n?.class,n?.className);const{variants:i,defaultVariants:o}=t,l=Object.keys(i).map(f=>{const m=n?.[f],g=o?.[f];if(m===null)return null;const v=KF(m)||KF(g);return i[f][v]}),u=n&&Object.entries(n).reduce((f,m)=>{let[g,v]=m;return v===void 0||(f[g]=v),f},{}),d=t==null||(s=t.compoundVariants)===null||s===void 0?void 0:s.reduce((f,m)=>{let{class:g,className:v,...b}=m;return Object.entries(b).every(y=>{let[k,j]=y;return Array.isArray(j)?j.includes({...o,...u}[k]):{...o,...u}[k]===j})?[...f,g,v]:f},[]);return qF(e,l,d,n?.class,n?.className)},Ape=(e,t)=>{const n=new Array(e.length+t.length);for(let s=0;s({classGroupId:e,validator:t}),GF=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),Ck="-",WF=[],Tpe="arbitrary..",Ope=e=>{const t=Ppe(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:s}=e;return{getClassGroupId:l=>{if(l.startsWith("[")&&l.endsWith("]"))return Rpe(l);const u=l.split(Ck),d=u[0]===""&&u.length>1?1:0;return YF(u,d,t)},getConflictingClassGroupIds:(l,u)=>{if(u){const d=s[l],f=n[l];return d?f?Ape(f,d):d:f||WF}return n[l]||WF}}},YF=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;const i=e[t],o=n.nextPart.get(i);if(o){const f=YF(e,t+1,o);if(f)return f}const l=n.validators;if(l===null)return;const u=t===0?e.join(Ck):e.slice(t).join(Ck),d=l.length;for(let f=0;fe.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const t=e.slice(1,-1),n=t.indexOf(":"),s=t.slice(0,n);return s?Tpe+s:void 0})(),Ppe=e=>{const{theme:t,classGroups:n}=e;return Ipe(n,t)},Ipe=(e,t)=>{const n=GF();for(const s in e){const i=e[s];DO(i,n,s,t)}return n},DO=(e,t,n,s)=>{const i=e.length;for(let o=0;o{if(typeof e=="string"){_pe(e,t,n);return}if(typeof e=="function"){Dpe(e,t,n,s);return}Lpe(e,t,n,s)},_pe=(e,t,n)=>{const s=e===""?t:XF(t,e);s.classGroupId=n},Dpe=(e,t,n,s)=>{if($pe(e)){DO(e(s),t,n,s);return}t.validators===null&&(t.validators=[]),t.validators.push(Epe(n,e))},Lpe=(e,t,n,s)=>{const i=Object.entries(e),o=i.length;for(let l=0;l{let n=e;const s=t.split(Ck),i=s.length;for(let o=0;o"isThemeGetter"in e&&e.isThemeGetter===!0,zpe=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,n=Object.create(null),s=Object.create(null);const i=(o,l)=>{n[o]=l,t++,t>e&&(t=0,s=n,n=Object.create(null))};return{get(o){let l=n[o];if(l!==void 0)return l;if((l=s[o])!==void 0)return i(o,l),l},set(o,l){o in n?n[o]=l:i(o,l)}}},LO="!",QF=":",Bpe=[],ZF=(e,t,n,s,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:s,isExternal:i}),Fpe=e=>{const{prefix:t,experimentalParseClassName:n}=e;let s=i=>{const o=[];let l=0,u=0,d=0,f;const m=i.length;for(let k=0;kd?f-d:void 0;return ZF(o,b,v,y)};if(t){const i=t+QF,o=s;s=l=>l.startsWith(i)?o(l.slice(i.length)):ZF(Bpe,!1,l,void 0,!0)}if(n){const i=s;s=o=>n({className:o,parseClassName:i})}return s},Upe=e=>{const t=new Map;return e.orderSensitiveModifiers.forEach((n,s)=>{t.set(n,1e6+s)}),n=>{const s=[];let i=[];for(let o=0;o0&&(i.sort(),s.push(...i),i=[]),s.push(l)):i.push(l)}return i.length>0&&(i.sort(),s.push(...i)),s}},Hpe=e=>({cache:zpe(e.cacheSize),parseClassName:Fpe(e),sortModifiers:Upe(e),postfixLookupClassGroupIds:Vpe(e),...Ope(e)}),Vpe=e=>{const t=Object.create(null),n=e.postfixLookupClassGroups;if(n)for(let s=0;s{const{parseClassName:n,getClassGroupId:s,getConflictingClassGroupIds:i,sortModifiers:o,postfixLookupClassGroupIds:l}=t,u=[],d=e.trim().split(Kpe);let f="";for(let m=d.length-1;m>=0;m-=1){const g=d[m],{isExternal:v,modifiers:b,hasImportantModifier:y,baseClassName:k,maybePostfixModifierPosition:j}=n(g);if(v){f=g+(f.length>0?" "+f:f);continue}let S=!!j,N;if(S){const A=k.substring(0,j);N=s(A);const P=N&&l[N]?s(k):void 0;P&&P!==N&&(N=P,S=!1)}else N=s(k);if(!N){if(!S){f=g+(f.length>0?" "+f:f);continue}if(N=s(k),!N){f=g+(f.length>0?" "+f:f);continue}S=!1}const C=b.length===0?"":b.length===1?b[0]:o(b).join(":"),T=y?C+LO:C,R=T+N;if(u.indexOf(R)>-1)continue;u.push(R);const O=i(N,S);for(let A=0;A0?" "+f:f)}return f},Gpe=(...e)=>{let t=0,n,s,i="";for(;t{if(typeof e=="string")return e;let t,n="";for(let s=0;s{let n,s,i,o;const l=d=>{const f=t.reduce((m,g)=>g(m),e());return n=Hpe(f),s=n.cache.get,i=n.cache.set,o=u,u(d)},u=d=>{const f=s(d);if(f)return f;const m=qpe(d,n);return i(d,m),m};return o=l,(...d)=>o(Gpe(...d))},Ype=[],ua=e=>{const t=n=>n[e]||Ype;return t.isThemeGetter=!0,t.themeKey=e,t},eU=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,tU=/^\((?:(\w[\w-]*):)?(.+)\)$/i,Xpe=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,Qpe=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Zpe=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Jpe=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix|color|light-dark)\(.+\)$/,ege=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,tge=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Md=e=>Xpe.test(e),Bn=e=>!!e&&!Number.isNaN(Number(e)),fc=e=>!!e&&Number.isInteger(Number(e)),$O=e=>e.endsWith("%")&&Bn(e.slice(0,-1)),cu=e=>Qpe.test(e),nU=()=>!0,nge=e=>Zpe.test(e)&&!Jpe.test(e),zO=()=>!1,rge=e=>ege.test(e),sge=e=>tge.test(e),age=e=>!$t(e)&&!Ft(e),ige=e=>e.startsWith("@container")&&(e[10]==="/"&&e[11]!==void 0||e[11]==="s"&&e[16]!==void 0&&e.startsWith("-size/",10)||e[11]==="n"&&e[18]!==void 0&&e.startsWith("-normal/",10)),oge=e=>_d(e,lU,zO),$t=e=>eU.test(e),Sh=e=>_d(e,cU,nge),rU=e=>_d(e,pge,Bn),lge=e=>_d(e,dU,nU),cge=e=>_d(e,uU,zO),sU=e=>_d(e,iU,zO),uge=e=>_d(e,oU,sge),Ak=e=>_d(e,fU,rge),Ft=e=>tU.test(e),Eb=e=>Nh(e,cU),dge=e=>Nh(e,uU),aU=e=>Nh(e,iU),fge=e=>Nh(e,lU),hge=e=>Nh(e,oU),Ek=e=>Nh(e,fU,!0),mge=e=>Nh(e,dU,!0),_d=(e,t,n)=>{const s=eU.exec(e);return s?s[1]?t(s[1]):n(s[2]):!1},Nh=(e,t,n=!1)=>{const s=tU.exec(e);return s?s[1]?t(s[1]):n:!1},iU=e=>e==="position"||e==="percentage",oU=e=>e==="image"||e==="url",lU=e=>e==="length"||e==="size"||e==="bg-size",cU=e=>e==="length",pge=e=>e==="number",uU=e=>e==="family-name",dU=e=>e==="number"||e==="weight",fU=e=>e==="shadow",gge=Wpe(()=>{const e=ua("color"),t=ua("font"),n=ua("text"),s=ua("font-weight"),i=ua("tracking"),o=ua("leading"),l=ua("breakpoint"),u=ua("container"),d=ua("spacing"),f=ua("radius"),m=ua("shadow"),g=ua("inset-shadow"),v=ua("text-shadow"),b=ua("drop-shadow"),y=ua("blur"),k=ua("perspective"),j=ua("aspect"),S=ua("ease"),N=ua("animate"),C=()=>["auto","avoid","all","avoid-page","page","left","right","column"],T=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],R=()=>[...T(),Ft,$t],O=()=>["auto","hidden","clip","visible","scroll"],A=()=>["auto","contain","none"],P=()=>[Ft,$t,d],M=()=>[Md,"full","auto",...P()],_=()=>[fc,"none","subgrid",Ft,$t],L=()=>["auto",{span:["full",fc,Ft,$t]},fc,Ft,$t],$=()=>[fc,"auto",Ft,$t],D=()=>["auto","min","max","fr",Ft,$t],F=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],q=()=>["start","end","center","stretch","center-safe","end-safe"],V=()=>["auto",...P()],Q=()=>[Md,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...P()],X=()=>[u,Md,"screen","full","dvw","lvw","svw","min","max","fit",...P()],U=()=>[Md,"screen","full","lh","dvh","lvh","svh","min","max","fit",...P()],z=()=>[e,Ft,$t],H=()=>[...T(),aU,sU,{position:[Ft,$t]}],J=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ee=()=>["auto","cover","contain",fge,oge,{size:[Ft,$t]}],K=()=>[$O,Eb,Sh],G=()=>["","none","full",f,Ft,$t],Y=()=>["",Bn,Eb,Sh],se=()=>["solid","dashed","dotted","double"],re=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],ne=()=>[Bn,$O,aU,sU],de=()=>["","none",y,Ft,$t],ie=()=>["none",Bn,Ft,$t],oe=()=>["none",Bn,Ft,$t],je=()=>[Bn,Ft,$t],te=()=>[Md,"full",...P()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[cu],breakpoint:[cu],color:[nU],container:[cu],"drop-shadow":[cu],ease:["in","out","in-out"],font:[age],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[cu],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[cu],shadow:[cu],spacing:["px",Bn],text:[cu],"text-shadow":[cu],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Md,$t,Ft,j]}],container:["container"],"container-type":[{"@container":["","normal","size",Ft,$t]}],"container-named":[ige],columns:[{columns:[Bn,"auto",$t,Ft,u]}],"break-after":[{"break-after":C()}],"break-before":[{"break-before":C()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:R()}],overflow:[{overflow:O()}],"overflow-x":[{"overflow-x":O()}],"overflow-y":[{"overflow-y":O()}],overscroll:[{overscroll:A()}],"overscroll-x":[{"overscroll-x":A()}],"overscroll-y":[{"overscroll-y":A()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:M()}],"inset-x":[{"inset-x":M()}],"inset-y":[{"inset-y":M()}],start:[{"inset-s":M(),start:M()}],end:[{"inset-e":M(),end:M()}],"inset-bs":[{"inset-bs":M()}],"inset-be":[{"inset-be":M()}],top:[{top:M()}],right:[{right:M()}],bottom:[{bottom:M()}],left:[{left:M()}],visibility:["visible","invisible","collapse"],z:[{z:[fc,"auto",Ft,$t]}],basis:[{basis:[Md,"full","auto",u,...P()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Bn,Md,"auto","initial","none",$t]}],grow:[{grow:["",Bn,Ft,$t]}],shrink:[{shrink:["",Bn,Ft,$t]}],order:[{order:[fc,"first","last","none",Ft,$t]}],"grid-cols":[{"grid-cols":_()}],"col-start-end":[{col:L()}],"col-start":[{"col-start":$()}],"col-end":[{"col-end":$()}],"grid-rows":[{"grid-rows":_()}],"row-start-end":[{row:L()}],"row-start":[{"row-start":$()}],"row-end":[{"row-end":$()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":D()}],"auto-rows":[{"auto-rows":D()}],gap:[{gap:P()}],"gap-x":[{"gap-x":P()}],"gap-y":[{"gap-y":P()}],"justify-content":[{justify:[...F(),"normal"]}],"justify-items":[{"justify-items":[...q(),"normal"]}],"justify-self":[{"justify-self":["auto",...q()]}],"align-content":[{content:["normal",...F()]}],"align-items":[{items:[...q(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...q(),{baseline:["","last"]}]}],"place-content":[{"place-content":F()}],"place-items":[{"place-items":[...q(),"baseline"]}],"place-self":[{"place-self":["auto",...q()]}],p:[{p:P()}],px:[{px:P()}],py:[{py:P()}],ps:[{ps:P()}],pe:[{pe:P()}],pbs:[{pbs:P()}],pbe:[{pbe:P()}],pt:[{pt:P()}],pr:[{pr:P()}],pb:[{pb:P()}],pl:[{pl:P()}],m:[{m:V()}],mx:[{mx:V()}],my:[{my:V()}],ms:[{ms:V()}],me:[{me:V()}],mbs:[{mbs:V()}],mbe:[{mbe:V()}],mt:[{mt:V()}],mr:[{mr:V()}],mb:[{mb:V()}],ml:[{ml:V()}],"space-x":[{"space-x":P()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":P()}],"space-y-reverse":["space-y-reverse"],size:[{size:Q()}],"inline-size":[{inline:["auto",...X()]}],"min-inline-size":[{"min-inline":["auto",...X()]}],"max-inline-size":[{"max-inline":["none",...X()]}],"block-size":[{block:["auto",...U()]}],"min-block-size":[{"min-block":["auto",...U()]}],"max-block-size":[{"max-block":["none",...U()]}],w:[{w:[u,"screen",...Q()]}],"min-w":[{"min-w":[u,"screen","none",...Q()]}],"max-w":[{"max-w":[u,"screen","none","prose",{screen:[l]},...Q()]}],h:[{h:["screen","lh",...Q()]}],"min-h":[{"min-h":["screen","lh","none",...Q()]}],"max-h":[{"max-h":["screen","lh","none",...Q()]}],"font-size":[{text:["base",n,Eb,Sh]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[s,mge,lge]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",$O,$t]}],"font-family":[{font:[dge,cge,t]}],"font-features":[{"font-features":[$t]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[i,Ft,$t]}],"line-clamp":[{"line-clamp":[Bn,"none",Ft,rU]}],leading:[{leading:["none",o,...P()]}],"list-image":[{"list-image":["none",Ft,$t]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Ft,$t]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:z()}],"text-color":[{text:z()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...se(),"wavy"]}],"text-decoration-thickness":[{decoration:[Bn,"from-font","auto",Ft,Sh]}],"text-decoration-color":[{decoration:z()}],"underline-offset":[{"underline-offset":[Bn,"auto",Ft,$t]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:P()}],"tab-size":[{tab:[fc,Ft,$t]}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Ft,$t]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Ft,$t]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:H()}],"bg-repeat":[{bg:J()}],"bg-size":[{bg:ee()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},fc,Ft,$t],radial:["",Ft,$t],conic:["",fc,Ft,$t]},hge,uge]}],"bg-color":[{bg:z()}],"gradient-from-pos":[{from:K()}],"gradient-via-pos":[{via:K()}],"gradient-to-pos":[{to:K()}],"gradient-from":[{from:z()}],"gradient-via":[{via:z()}],"gradient-to":[{to:z()}],rounded:[{rounded:G()}],"rounded-s":[{"rounded-s":G()}],"rounded-e":[{"rounded-e":G()}],"rounded-t":[{"rounded-t":G()}],"rounded-r":[{"rounded-r":G()}],"rounded-b":[{"rounded-b":G()}],"rounded-l":[{"rounded-l":G()}],"rounded-ss":[{"rounded-ss":G()}],"rounded-se":[{"rounded-se":G()}],"rounded-ee":[{"rounded-ee":G()}],"rounded-es":[{"rounded-es":G()}],"rounded-tl":[{"rounded-tl":G()}],"rounded-tr":[{"rounded-tr":G()}],"rounded-br":[{"rounded-br":G()}],"rounded-bl":[{"rounded-bl":G()}],"border-w":[{border:Y()}],"border-w-x":[{"border-x":Y()}],"border-w-y":[{"border-y":Y()}],"border-w-s":[{"border-s":Y()}],"border-w-e":[{"border-e":Y()}],"border-w-bs":[{"border-bs":Y()}],"border-w-be":[{"border-be":Y()}],"border-w-t":[{"border-t":Y()}],"border-w-r":[{"border-r":Y()}],"border-w-b":[{"border-b":Y()}],"border-w-l":[{"border-l":Y()}],"divide-x":[{"divide-x":Y()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":Y()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...se(),"hidden","none"]}],"divide-style":[{divide:[...se(),"hidden","none"]}],"border-color":[{border:z()}],"border-color-x":[{"border-x":z()}],"border-color-y":[{"border-y":z()}],"border-color-s":[{"border-s":z()}],"border-color-e":[{"border-e":z()}],"border-color-bs":[{"border-bs":z()}],"border-color-be":[{"border-be":z()}],"border-color-t":[{"border-t":z()}],"border-color-r":[{"border-r":z()}],"border-color-b":[{"border-b":z()}],"border-color-l":[{"border-l":z()}],"divide-color":[{divide:z()}],"outline-style":[{outline:[...se(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Bn,Ft,$t]}],"outline-w":[{outline:["",Bn,Eb,Sh]}],"outline-color":[{outline:z()}],shadow:[{shadow:["","inner","none",m,Ek,Ak]}],"shadow-color":[{shadow:z()}],"inset-shadow":[{"inset-shadow":["none",g,Ek,Ak]}],"inset-shadow-color":[{"inset-shadow":z()}],"ring-w":[{ring:Y()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:z()}],"ring-offset-w":[{"ring-offset":[Bn,Sh]}],"ring-offset-color":[{"ring-offset":z()}],"inset-ring-w":[{"inset-ring":Y()}],"inset-ring-color":[{"inset-ring":z()}],"text-shadow":[{"text-shadow":["none",v,Ek,Ak]}],"text-shadow-color":[{"text-shadow":z()}],opacity:[{opacity:[Bn,Ft,$t]}],"mix-blend":[{"mix-blend":[...re(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":re()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[Bn]}],"mask-image-linear-from-pos":[{"mask-linear-from":ne()}],"mask-image-linear-to-pos":[{"mask-linear-to":ne()}],"mask-image-linear-from-color":[{"mask-linear-from":z()}],"mask-image-linear-to-color":[{"mask-linear-to":z()}],"mask-image-t-from-pos":[{"mask-t-from":ne()}],"mask-image-t-to-pos":[{"mask-t-to":ne()}],"mask-image-t-from-color":[{"mask-t-from":z()}],"mask-image-t-to-color":[{"mask-t-to":z()}],"mask-image-r-from-pos":[{"mask-r-from":ne()}],"mask-image-r-to-pos":[{"mask-r-to":ne()}],"mask-image-r-from-color":[{"mask-r-from":z()}],"mask-image-r-to-color":[{"mask-r-to":z()}],"mask-image-b-from-pos":[{"mask-b-from":ne()}],"mask-image-b-to-pos":[{"mask-b-to":ne()}],"mask-image-b-from-color":[{"mask-b-from":z()}],"mask-image-b-to-color":[{"mask-b-to":z()}],"mask-image-l-from-pos":[{"mask-l-from":ne()}],"mask-image-l-to-pos":[{"mask-l-to":ne()}],"mask-image-l-from-color":[{"mask-l-from":z()}],"mask-image-l-to-color":[{"mask-l-to":z()}],"mask-image-x-from-pos":[{"mask-x-from":ne()}],"mask-image-x-to-pos":[{"mask-x-to":ne()}],"mask-image-x-from-color":[{"mask-x-from":z()}],"mask-image-x-to-color":[{"mask-x-to":z()}],"mask-image-y-from-pos":[{"mask-y-from":ne()}],"mask-image-y-to-pos":[{"mask-y-to":ne()}],"mask-image-y-from-color":[{"mask-y-from":z()}],"mask-image-y-to-color":[{"mask-y-to":z()}],"mask-image-radial":[{"mask-radial":[Ft,$t]}],"mask-image-radial-from-pos":[{"mask-radial-from":ne()}],"mask-image-radial-to-pos":[{"mask-radial-to":ne()}],"mask-image-radial-from-color":[{"mask-radial-from":z()}],"mask-image-radial-to-color":[{"mask-radial-to":z()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":T()}],"mask-image-conic-pos":[{"mask-conic":[Bn]}],"mask-image-conic-from-pos":[{"mask-conic-from":ne()}],"mask-image-conic-to-pos":[{"mask-conic-to":ne()}],"mask-image-conic-from-color":[{"mask-conic-from":z()}],"mask-image-conic-to-color":[{"mask-conic-to":z()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:H()}],"mask-repeat":[{mask:J()}],"mask-size":[{mask:ee()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Ft,$t]}],filter:[{filter:["","none",Ft,$t]}],blur:[{blur:de()}],brightness:[{brightness:[Bn,Ft,$t]}],contrast:[{contrast:[Bn,Ft,$t]}],"drop-shadow":[{"drop-shadow":["","none",b,Ek,Ak]}],"drop-shadow-color":[{"drop-shadow":z()}],grayscale:[{grayscale:["",Bn,Ft,$t]}],"hue-rotate":[{"hue-rotate":[Bn,Ft,$t]}],invert:[{invert:["",Bn,Ft,$t]}],saturate:[{saturate:[Bn,Ft,$t]}],sepia:[{sepia:["",Bn,Ft,$t]}],"backdrop-filter":[{"backdrop-filter":["","none",Ft,$t]}],"backdrop-blur":[{"backdrop-blur":de()}],"backdrop-brightness":[{"backdrop-brightness":[Bn,Ft,$t]}],"backdrop-contrast":[{"backdrop-contrast":[Bn,Ft,$t]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Bn,Ft,$t]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Bn,Ft,$t]}],"backdrop-invert":[{"backdrop-invert":["",Bn,Ft,$t]}],"backdrop-opacity":[{"backdrop-opacity":[Bn,Ft,$t]}],"backdrop-saturate":[{"backdrop-saturate":[Bn,Ft,$t]}],"backdrop-sepia":[{"backdrop-sepia":["",Bn,Ft,$t]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":P()}],"border-spacing-x":[{"border-spacing-x":P()}],"border-spacing-y":[{"border-spacing-y":P()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Ft,$t]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Bn,"initial",Ft,$t]}],ease:[{ease:["linear","initial",S,Ft,$t]}],delay:[{delay:[Bn,Ft,$t]}],animate:[{animate:["none",N,Ft,$t]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[k,Ft,$t]}],"perspective-origin":[{"perspective-origin":R()}],rotate:[{rotate:ie()}],"rotate-x":[{"rotate-x":ie()}],"rotate-y":[{"rotate-y":ie()}],"rotate-z":[{"rotate-z":ie()}],scale:[{scale:oe()}],"scale-x":[{"scale-x":oe()}],"scale-y":[{"scale-y":oe()}],"scale-z":[{"scale-z":oe()}],"scale-3d":["scale-3d"],skew:[{skew:je()}],"skew-x":[{"skew-x":je()}],"skew-y":[{"skew-y":je()}],transform:[{transform:[Ft,$t,"","none","gpu","cpu"]}],"transform-origin":[{origin:R()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:te()}],"translate-x":[{"translate-x":te()}],"translate-y":[{"translate-y":te()}],"translate-z":[{"translate-z":te()}],"translate-none":["translate-none"],zoom:[{zoom:[fc,Ft,$t]}],accent:[{accent:z()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:z()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Ft,$t]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scrollbar-thumb-color":[{"scrollbar-thumb":z()}],"scrollbar-track-color":[{"scrollbar-track":z()}],"scrollbar-gutter":[{"scrollbar-gutter":["auto","stable","both"]}],"scrollbar-w":[{scrollbar:["auto","thin","none"]}],"scroll-m":[{"scroll-m":P()}],"scroll-mx":[{"scroll-mx":P()}],"scroll-my":[{"scroll-my":P()}],"scroll-ms":[{"scroll-ms":P()}],"scroll-me":[{"scroll-me":P()}],"scroll-mbs":[{"scroll-mbs":P()}],"scroll-mbe":[{"scroll-mbe":P()}],"scroll-mt":[{"scroll-mt":P()}],"scroll-mr":[{"scroll-mr":P()}],"scroll-mb":[{"scroll-mb":P()}],"scroll-ml":[{"scroll-ml":P()}],"scroll-p":[{"scroll-p":P()}],"scroll-px":[{"scroll-px":P()}],"scroll-py":[{"scroll-py":P()}],"scroll-ps":[{"scroll-ps":P()}],"scroll-pe":[{"scroll-pe":P()}],"scroll-pbs":[{"scroll-pbs":P()}],"scroll-pbe":[{"scroll-pbe":P()}],"scroll-pt":[{"scroll-pt":P()}],"scroll-pr":[{"scroll-pr":P()}],"scroll-pb":[{"scroll-pb":P()}],"scroll-pl":[{"scroll-pl":P()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Ft,$t]}],fill:[{fill:["none",...z()]}],"stroke-w":[{stroke:[Bn,Eb,Sh,rU]}],stroke:[{stroke:["none",...z()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{"container-named":["container-type"],overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["start","end","right","left"],"inset-y":["inset-bs","inset-be","top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["ps","pe","pr","pl"],py:["pbs","pbe","pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["ms","me","mr","ml"],my:["mbs","mbe","mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-s","border-w-e","border-w-r","border-w-l"],"border-w-y":["border-w-bs","border-w-be","border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-s","border-color-e","border-color-r","border-color-l"],"border-color-y":["border-color-bs","border-color-be","border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-ms","scroll-me","scroll-mr","scroll-ml"],"scroll-my":["scroll-mbs","scroll-mbe","scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-ps","scroll-pe","scroll-pr","scroll-pl"],"scroll-py":["scroll-pbs","scroll-pbe","scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},postfixLookupClassGroups:["container-type"],orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}});function Ne(...e){return gge(VF(e))}const xge=kh(["group/button inline-flex shrink-0 items-center justify-center gap-1.5 whitespace-nowrap border [font-family:inherit]","font-medium transition-[background-color,border-color,color,transform,box-shadow] duration-150 ease-out","outline-none select-none active:translate-y-[0.5px] focus-visible:shadow-focus","disabled:pointer-events-none disabled:opacity-45 disabled:shadow-none","[&_svg]:pointer-events-none [&_svg]:shrink-0"],{variants:{variant:{default:"border-primary bg-primary font-semibold text-primary-on shadow-glow hover:border-primary-hover hover:bg-primary-hover",outline:"border-control-border bg-control text-foreground shadow-1 hover:border-control-border-hover hover:bg-control-hover",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"border-transparent bg-transparent text-subtle shadow-none hover:bg-control-hover hover:text-foreground",destructive:"border-destructive-bd bg-destructive-soft text-destructive hover:bg-destructive-hover",dashed:"border-dashed border-border-strong bg-transparent text-muted-foreground shadow-none hover:border-primary hover:text-primary-fg",link:"border-transparent bg-transparent text-primary shadow-none underline-offset-4 hover:underline"},size:{default:"h-[30px] rounded-md px-3 text-[12.5px]","2xs":"h-4 rounded-pill px-1.5 text-[10px]",xs:"h-6 rounded-sm px-2 text-[11.5px]",sm:"h-[26px] rounded-sm px-2.5 text-[12px]",lg:"h-9 rounded-md px-4 text-[13px]",icon:"h-[30px] w-[30px] rounded-md p-0","icon-2xs":"size-4 rounded-pill p-0","icon-xs":"size-6 rounded-sm p-0","icon-sm":"h-[26px] w-[26px] rounded-sm p-0","icon-lg":"size-9 rounded-md p-0",touch:"h-[46px] rounded-md px-4 text-[14px]","touch-sm":"h-[34px] rounded-sm px-3 text-[12.5px]","icon-touch":"size-9 rounded-full p-0"}},defaultVariants:{variant:"default",size:"default"}});function B({className:e,variant:t,size:n,...s}){return r.jsx(Cpe,{"data-slot":"button",className:Ne(xge({variant:t,size:n}),e),...s})}const vge="data-valid",bge="data-invalid",Tk={badInput:!1,customError:!1,patternMismatch:!1,rangeOverflow:!1,rangeUnderflow:!1,stepMismatch:!1,tooLong:!1,tooShort:!1,typeMismatch:!1,valid:null,valueMissing:!1},hU={valid:null,touched:!1,dirty:!1,filled:!1,focused:!1},yge={disabled:!1,...hU},hc={valid(e){return e===null?null:e?{[vge]:""}:{[bge]:""}}},mU={invalid:void 0,name:void 0,validityData:{state:Tk,errors:[],error:"",value:"",initialValue:null},setValidityData:Qn,disabled:void 0,setTouched:Qn,setDirty:Qn,setFilled:Qn,setFocused:Qn,validationMode:"onSubmit",shouldValidateOnChange:()=>!1,state:yge,registerFieldControl:Qn,validation:{getValidationProps:(e,t=yr)=>t,inputRef:{current:null},registeredInputs:new Map,registerInput:Qn,getInputControl:()=>null,commit:async()=>{},change:Qn}},BO=p.createContext(mU);function uo(e=!0){const t=p.useContext(BO);if(t.setValidityData===Qn&&!e)throw new Error(Kn(28));return t}const pU=p.createContext(void 0);function FO(e=!1){const t=p.useContext(pU);if(!t&&!e)throw new Error(Kn(86));return t}const jge=p.createContext({elementRef:{current:null},formRef:{current:{fields:new Map}},errors:{},clearErrors:Qn,validationMode:"onSubmit",submitCountRef:{current:0}});function uu(){return p.useContext(jge)}let gU=0;function wge(e,t="mui"){const[n,s]=p.useState(e),i=e||n;return p.useEffect(()=>{n==null&&(gU+=1,s(`${t}-${gU}`))},[n,t]),i}const xU=TO.useId;function lg(e,t){if(xU!==void 0){const n=xU();return e??(t?`${t}-${n}`:n)}return wge(e,t)}function Ws(e){return lg(e,"base-ui")}const vU=p.createContext({controlId:void 0,registerControlId:Qn,resetControlId:Qn,labelId:void 0,setLabelId:Qn,messageIds:[],setMessageIds:Qn,getDescriptionProps:e=>e});function zi(){return p.useContext(vU)}const kge=function(t){const n=Ws(),[s,i]=p.useState(n),[o,l]=p.useState(),[u,d]=p.useState([]),f=s===void 0?n:s,m=$s(()=>new Map),{messageIds:g}=zi(),v=qe((j,S)=>{const N=m.current;S===void 0?N.delete(j):N.set(j,S),i(C=>{if(N.size===0)return C;let T;for(const R of N.values()){if(R===C)return C;T===void 0&&(T=R)}return T})}),b=qe(()=>{m.current.size===0&&i(n)}),y=p.useCallback(j=>{const S=j["aria-describedby"]?j["aria-describedby"].split(" "):[];return S.push(...g,...u),{...j,"aria-describedby":Array.from(new Set(S)).join(" ")||void 0}},[g,u]),k=p.useMemo(()=>({controlId:f,registerControlId:v,resetControlId:b,labelId:o,setLabelId:l,messageIds:u,setMessageIds:d,getDescriptionProps:y}),[f,v,b,o,l,u,d,y]);return r.jsx(vU.Provider,{value:k,children:t.children})};function UO(e,t,n,s=!0,i){const[o,l]=p.useState(),u=Ws(i?`${i}-label`:void 0),d=e??t??o;return Ge(()=>{const f=e||t||!s?void 0:Sge(n.current,u);o!==f&&l(f)}),d}function Sge(e,t){const n=Nge(e);if(n)return!n.id&&t&&(n.id=t),n.id||void 0}function Nge(e){if(!e)return;const t=e.parentElement;if(t&&t.tagName==="LABEL")return t;const n=e.id;if(n){const i=e.nextElementSibling;if(i&&i.htmlFor===n)return i}const s=e.labels;return s&&s[0]}function Dd(e={}){const{id:t,enabled:n=!0}=e,{controlId:s,registerControlId:i,resetControlId:o}=zi(),l=Ws(),u=$s(()=>Symbol()),d=p.useRef(!1),f=p.useRef(!1),m=qe(()=>{!d.current||i===Qn||(d.current=!1,i(u.current,void 0))});return Ge(()=>{if(!n||i===Qn){m();return}let g;if(t!==void 0)f.current=!0,g=t;else if(f.current)g=l;else{o();return}if(g===void 0){m();return}d.current=!0,i(u.current,g)},[t,n,i,o,l,u,m]),Ge(()=>m,[m]),(n?s:void 0)??t??l}function Cge(){return typeof navigator>"u"?{userAgent:"",platform:"",maxTouchPoints:0}:{userAgent:navigator.userAgent,platform:navigator.platform??"",maxTouchPoints:navigator.maxTouchPoints??0}}const{userAgent:Age,platform:Ege,maxTouchPoints:Tge}=Cge(),Ok=Age.toLowerCase(),Tb=Ege.toLowerCase(),Ob=/^i(os$|p)/.test(Tb)||Tb==="macintel"&&Tge>1,bU="android",Rk=Tb===bU||Ok.includes(bU),yU=!Ob&&Tb.startsWith("mac");Tb.startsWith("win");const Oge=yU||Ob,du=typeof CSS<"u"&&!!CSS.supports?.("-webkit-backdrop-filter:none"),jU=!du&&Ok.includes("firefox");!du&&Ok.includes("chrom");const Rge=Oge,HO=/jsdom|happydom/.test(Ok);function Ys(e){let t=e.activeElement;for(;t?.shadowRoot?.activeElement!=null;)t=t.shadowRoot.activeElement;return t}function Et(e,t){if(!e||!t)return!1;const n=t.getRootNode?.();if(e.contains(t))return!0;if(n&&ag(n)){let s=t;for(;s;){if(e===s)return!0;s=s.parentNode||s.host}}return!1}function Er(e){return"composedPath"in e?e.composedPath()[0]??e.target:e.target}const VO="data-base-ui-focusable",wU="input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])",Ch="ArrowLeft",Ah="ArrowRight",KO="ArrowUp",Pk="ArrowDown",qO="data-starting-style",Pge="data-ending-style",Ige={[qO]:""},Mge={[Pge]:""},Fo={transitionStatus(e){return e==="starting"?Ige:e==="ending"?Mge:null}},_ge="data-open",Dge="data-closed",Lge="data-anchor-hidden",kU="data-popup-open",$ge="data-pressed",zge={[kU]:""},Bge={[kU]:"",[$ge]:""},Fge={[_ge]:""},Uge={[Dge]:""},Hge={[Lge]:""},Ik={open(e){return e?zge:null}},GO={open(e){return e?Bge:null}},cg={open(e){return e?Fge:Uge},anchorHidden(e){return e?Hge:null}},WO={...cg,...Fo},YO="data-trigger-disabled";function Mk(e,t){if(!Un(e))return!1;const n=e;if(t.hasElement(n))return!n.hasAttribute(YO);for(const[,s]of t.entries())if(Et(s,n))return!s.hasAttribute(YO);return!1}function XO(e,t){if(t==null)return!1;if("composedPath"in e)return e.composedPath().includes(t);const n=e;return n.target!=null&&t.contains(n.target)}function Vge(e){return e.matches("html,body")}function _k(e){return br(e)&&e.matches(wU)}function Kge(e){return e?.closest(`button,a[href],[role="button"],select,[tabindex]:not([tabindex="-1"]),${wU}`)!=null}function QO(e){return e?e.getAttribute("role")==="combobox"&&_k(e):!1}function Dk(e){if(!e||HO)return!0;try{return e.matches(":focus-visible")}catch{return!0}}function Lk(e){return e?e.hasAttribute(VO)?e:e.querySelector(`[${VO}]`)||e:null}function Ld(e,t,n=!0){return e.filter(i=>i.parentId===t).flatMap(i=>[...!n||i.context?.open?[i]:[],...Ld(e,i.id,n)])}function SU(e,t){let n=[],s=e.find(i=>i.id===t)?.parentId;for(;s;){const i=e.find(o=>o.id===s);s=i?.parentId,i&&(n=n.concat(i))}return n}function da(e){e.preventDefault(),e.stopPropagation()}function qge(e){return"nativeEvent"in e}function $k(e){return e.pointerType===""&&e.isTrusted?!0:Rk&&e.pointerType?e.type==="click"&&e.buttons===1:e.detail===0&&!e.pointerType}function ZO(e){return HO?!1:!Rk&&e.width===0&&e.height===0||Rk&&e.width===1&&e.height===1&&e.pressure===0&&e.detail===0&&e.pointerType==="mouse"||e.width<1&&e.height<1&&e.pressure===0&&e.detail===0&&e.pointerType==="touch"}function $d(e,t){const n=["mouse","pen"];return t||n.push("",void 0),n.includes(e)}function Gge(e){const t=e.type;return t==="click"||t==="mousedown"||t==="keydown"||t==="keyup"}const ug=Math.min,fu=Math.max,zk=Math.round,Eh=Math.floor,hu=e=>({x:e,y:e}),Wge={left:"right",right:"left",bottom:"top",top:"bottom"};function NU(e,t,n){return fu(e,ug(t,n))}function zd(e,t){return typeof e=="function"?e(t):e}function Uo(e){return e.split("-")[0]}function mu(e){return e.split("-")[1]}function JO(e){return e==="x"?"y":"x"}function eR(e){return e==="y"?"height":"width"}function Ho(e){const t=e[0];return t==="t"||t==="b"?"y":"x"}function tR(e){return JO(Ho(e))}function Yge(e,t,n){n===void 0&&(n=!1);const s=mu(e),i=tR(e),o=eR(i);let l=i==="x"?s===(n?"end":"start")?"right":"left":s==="start"?"bottom":"top";return t.reference[o]>t.floating[o]&&(l=Bk(l)),[l,Bk(l)]}function Xge(e){const t=Bk(e);return[nR(e),t,nR(t)]}function nR(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}const CU=["left","right"],AU=["right","left"],Qge=["top","bottom"],Zge=["bottom","top"];function Jge(e,t,n){switch(e){case"top":case"bottom":return n?t?AU:CU:t?CU:AU;case"left":case"right":return t?Qge:Zge;default:return[]}}function exe(e,t,n,s){const i=mu(e);let o=Jge(Uo(e),n==="start",s);return i&&(o=o.map(l=>l+"-"+i),t&&(o=o.concat(o.map(nR)))),o}function Bk(e){const t=Uo(e);return Wge[t]+e.slice(t.length)}function txe(e){var t,n,s,i;return{top:(t=e.top)!=null?t:0,right:(n=e.right)!=null?n:0,bottom:(s=e.bottom)!=null?s:0,left:(i=e.left)!=null?i:0}}function EU(e){return typeof e!="number"?txe(e):{top:e,right:e,bottom:e,left:e}}function Rb(e){const{x:t,y:n,width:s,height:i}=e;return{width:s,height:i,top:n,left:t,right:t+s,bottom:n+i,x:t,y:n}}function Fk(e,t,n){return Math.floor(e/t)!==n}function Bd(e,t){return t<0||t>=e.length}function Uk(e,t){return Ta(e.current,{disabledIndices:t})}function rR(e,t){return Ta(e.current,{decrement:!0,startingIndex:e.current.length,disabledIndices:t})}function Ta(e,{startingIndex:t=-1,decrement:n=!1,disabledIndices:s,amount:i=1}={}){let o=t;do o+=n?-i:i;while(o>=0&&o<=e.length-1&&Fd(e,o,s));return o}function nxe(e,{event:t,orientation:n,loopFocus:s,onLoop:i,rtl:o,cols:l,disabledIndices:u,minIndex:d,maxIndex:f,prevIndex:m,stopEvent:g=!1}){let v=m,b;if(t.key===KO?b="up":t.key===Pk&&(b="down"),b){const y=[],k=[];let j=!1,S=0;{let M=null,_=-1;e.forEach((L,$)=>{if(L==null)return;S+=1;const D=L.closest('[role="row"]');D&&(j=!0),(D!==M||_===-1)&&(M=D,_+=1,y[_]=[]),y[_].push($),k[$]=_})}let N=!1,C=0;if(j)for(const M of y){const _=M.length;_>C&&(C=_),_!==l&&(N=!0)}const T=N&&S{if(!N||m===-1)return;const _=k[m];if(_==null)return;const L=y[_].indexOf(m),$=M==="up"?-1:1;for(let D=_+$,F=0;F=y.length){if(!s||T)return;if(D=D<0?y.length-1:0,i){const V=Math.min(L,y[D].length-1),Q=y[D][V]??y[D][0],X=i(t,m,Q);D=k[X]??D}}const q=y[D];for(let V=Math.min(L,q.length-1);V>=0;V-=1){const Q=q[V];if(!Fd(e,Q,u))return Q}}},A=M=>{if(!T||m===-1)return;const _=m%R,L=M==="up"?-R:R,$=f-f%R,D=Eh(f/R)+1;for(let F=m-_+L,q=0;qf){if(!s)return;F=F<0?$:0}const V=Math.min(F+R-1,f);for(let Q=Math.min(F+_,V);Q>=F;Q-=1)if(!Fd(e,Q,u))return Q}};g&&da(t);const P=O(b)??A(b);if(P!==void 0)v=P;else if(m===-1)v=b==="up"?f:d;else if(v=Ta(e,{startingIndex:m,amount:R,decrement:b==="up",disabledIndices:u}),s){if(b==="up"&&(m-RM?L:L-R,i&&(v=i(t,m,v))}b==="down"&&m+R>f&&(v=Ta(e,{startingIndex:m%R-R,amount:R,disabledIndices:u}),i&&(v=i(t,m,v)))}Bd(e,v)&&(v=m)}if(n==="both"){const y=Eh(m/l);t.key===(o?Ch:Ah)&&(g&&da(t),m%l!==l-1?(v=Ta(e,{startingIndex:m,disabledIndices:u}),s&&Fk(v,l,y)&&(v=Ta(e,{startingIndex:m-m%l-1,disabledIndices:u}),i&&(v=i(t,m,v)))):s&&(v=Ta(e,{startingIndex:m-m%l-1,disabledIndices:u}),i&&(v=i(t,m,v))),Fk(v,l,y)&&(v=m)),t.key===(o?Ah:Ch)&&(g&&da(t),m%l!==0?(v=Ta(e,{startingIndex:m,decrement:!0,disabledIndices:u}),s&&Fk(v,l,y)&&(v=Ta(e,{startingIndex:m+(l-m%l),decrement:!0,disabledIndices:u}),i&&(v=i(t,m,v)))):s&&(v=Ta(e,{startingIndex:m+(l-m%l),decrement:!0,disabledIndices:u}),i&&(v=i(t,m,v))),Fk(v,l,y)&&(v=m));const k=Eh(f/l)===y;Bd(e,v)&&(s&&k?(v=t.key===(o?Ah:Ch)?f:Ta(e,{startingIndex:m-m%l-1,disabledIndices:u}),i&&(v=i(t,m,v))):v=m)}return v}function Fd(e,t,n){if(typeof n=="function"?n(t):n?.includes(t)??!1)return!0;const i=e[t];return i?!Hk(i)||i.matches(":disabled")?!0:!n&&(i.hasAttribute("disabled")||i.getAttribute("aria-disabled")==="true"):!1}function rxe(e){return e.visibility==="hidden"||e.visibility==="collapse"}function Hk(e,t=e?Li(e):null){return!e||!e.isConnected||!t||rxe(t)?!1:typeof e.checkVisibility=="function"?e.checkVisibility():t.display!=="none"&&t.display!=="contents"}const sxe='a[href],button,input,select,textarea,summary,details,iframe,object,embed,[tabindex],[contenteditable]:not([contenteditable="false"]),audio[controls],video[controls]';function axe(e){const t=e.assignedSlot;if(t)return t;if(e.parentElement)return e.parentElement;const n=e.getRootNode();return ag(n)?n.host:null}function sR(e){for(const t of Array.from(e.children))if(Va(t)==="summary")return t;return null}function ixe(e,t){const n=sR(t);return!!n&&(e===n||Et(n,e))}function TU(e){const t=e?Va(e):"";return e!=null&&e.matches(sxe)&&(t!=="summary"||e.parentElement!=null&&Va(e.parentElement)==="details"&&sR(e.parentElement)===e)&&(t!=="details"||sR(e)==null)&&(t!=="input"||e.type!=="hidden")}function OU(e){if(!TU(e)||!e.isConnected||e.matches(":disabled"))return!1;for(let t=e;t;t=axe(t)){const n=t!==e,s=Va(t)==="slot";if(t.hasAttribute("inert")||n&&Va(t)==="details"&&!t.open&&!ixe(e,t)||t.hasAttribute("hidden")||!s&&!oxe(t,n))return!1}return!0}function oxe(e,t){const n=Li(e);return t?n.display!=="none":Hk(e,n)}function RU(e){const t=e.tabIndex;if(t<0){const n=Va(e);if(n==="details"||n==="audio"||n==="video"||br(e)&&e.isContentEditable)return 0}return t}function aR(e){if(Va(e)!=="input")return null;const t=e;return t.type==="radio"&&t.name!==""?t:null}function lxe(e,t){const n=aR(e);if(!n)return!0;const s=t.find(i=>{const o=aR(i);return o?.name===n.name&&o.form===n.form&&o.checked});return s?s===n:t.find(i=>{const o=aR(i);return o?.name===n.name&&o.form===n.form})===n}function PU(e){if(br(e)&&Va(e)==="slot"){const t=e.assignedElements({flatten:!0});if(t.length>0)return t}return br(e)&&e.shadowRoot?Array.from(e.shadowRoot.children):Array.from(e.children)}function IU(e,t){PU(e).forEach(n=>{TU(n)&&t.push(n),IU(n,t)})}function MU(e,t,n){PU(e).forEach(s=>{br(s)&&s.matches(t)&&n.push(s),MU(s,t,n)})}function iR(e){return OU(e)&&RU(e)>=0}function _U(e){const t=[];return IU(e,t),t.filter(OU)}function Pb(e){const t=_U(e);return t.filter(n=>RU(n)>=0&&lxe(n,t))}function DU(e,t){const n=Pb(e),s=n.length;if(s===0)return;const i=Ys(_n(e)),o=n.indexOf(i),l=o===-1?t===1?0:s-1:o+t;return n[l]}function oR(e){return DU(_n(e).body,1)||e}function LU(e){return DU(_n(e).body,-1)||e}function $U(e,t){if(!e)return null;const n=Pb(_n(e).body),s=n.length;if(s===0)return null;const i=n.indexOf(e);if(i===-1)return null;const o=(i+t+s)%s;return n[o]}function cxe(e){return $U(e,1)}function uxe(e){return $U(e,-1)}function dg(e,t){const n=t||e.currentTarget,s=e.relatedTarget;return!s||!Et(n,s)}function dxe(e){Pb(e).forEach(n=>{n.dataset.tabindex=n.getAttribute("tabindex")||"",n.setAttribute("tabindex","-1")})}function zU(e){const t=[];MU(e,"[data-tabindex]",t),t.forEach(n=>{const s=n.dataset.tabindex;delete n.dataset.tabindex,s?n.setAttribute("tabindex",s):n.removeAttribute("tabindex")})}function fxe(e,t){const n=Ws(e);return Ge(()=>(t(n),()=>{t(s=>s===n?void 0:s)}),[n,t]),n}function hxe(e={}){const{id:t,fallbackControlId:n,native:s=!1,setLabelId:i,focusControl:o}=e,{controlId:l,setLabelId:u}=zi(),d=qe(b=>{u(b),i?.(b)}),f=fxe(t,d),m=l??n;function g(b){if(o){o(b,m);return}if(!m)return;const y=_n(b.currentTarget).getElementById(m);br(y)&&mxe(y)}function v(b){Er(b.nativeEvent)?.closest("button,input,select,textarea")||(!b.defaultPrevented&&b.detail>1&&b.preventDefault(),!s&&g(b))}return s?{id:f,htmlFor:m,onMouseDown:v}:{id:f,onClick:v,onPointerDown(b){b.preventDefault()}}}function mxe(e){e.focus({focusVisible:!0})}function Vk(e){p.useEffect(e,co)}const Ib=0;class Bi{constructor(){Cn(this,"currentId",Ib);Cn(this,"clear",()=>{this.currentId!==Ib&&(clearTimeout(this.currentId),this.currentId=Ib)});Cn(this,"disposeEffect",()=>this.clear)}static create(){return new Bi}start(t,n){this.clear(),this.currentId=setTimeout(()=>{this.currentId=Ib,n()},t)}isStarted(){return this.currentId!==Ib}}function fa(){const e=$s(Bi.create).current;return Vk(e.disposeEffect),e}function lR(e,t){return{...e,state:{...e.state,valid:!t&&e.state.valid}}}const cR=Object.keys(Tk);function BU(e,t){return e.matches(":disabled")?!1:!t||e.form===t?!0:e.form===null&&!e.hasAttribute("form")}function FU(e,t){let n=null;for(const s of e.keys())if(BU(s,t)){if(!s.validity.valid)return s;n??(n=s)}return n}function UU(e){return{...Tk,valid:!e,customError:e}}function uR(e){return e&&e.validationMessage?[e.validationMessage]:[]}function pxe(e){const{elementRef:t,formRef:n}=uu(),{setValidityData:s,validate:i,validityData:o,validationDebounceTime:l,invalid:u,markedDirtyRef:d,state:f,shouldValidateOnChange:m,validationMode:g,registeredFieldIdRef:v}=e,{controlId:b,getDescriptionProps:y}=zi(),k=fa(),j=p.useRef(null),S=$s(()=>new Map).current,N=p.useRef(0),C=p.useRef(null),T=p.useCallback((M,_)=>(S.set(M,_),()=>{S.delete(M)}),[S]),R=qe(()=>{const M=FU(S,t.current);return M&&S.get(M)?.controlRef.current||null}),O=qe(async(M,_=!1)=>{N.current+=1;const L=N.current;function $(K,G=u){const Y=v.current??b;if(Y==null)return;const se=n.current.fields.get(Y);if(!se)return;const re=lR(K,G);n.current.fields.set(Y,{...se,validityData:re})}function D(K,G){const Y=K.valid===!1?G:[];return{value:M,state:K,error:Y[0]??"",errors:Y,initialValue:o.initialValue}}function F(K,G){const Y=K.validity.customError?K.validationMessage:"",se=G.replace(/\r\n?/g,` +`);K.setCustomValidity(se),C.current=[K,se,Y]}function q(){const K=C.current;C.current=null,K&&(!K[0].willValidate||K[0].validationMessage===K[1])&&K[0].setCustomValidity(K[2])}function V(K,G,Y){const se=D(K,G);$(se,Y),s(se)}function Q(K){const G=cR.reduce((se,re)=>(se[re]=K.validity[re],se),{});let Y=!1;for(const se of cR)if(se!=="valid"){if(se==="valueMissing"&&G[se])Y=!0;else if(G[se])return G}return Y&&!d.current&&(G.valid=!0,G.valueMissing=!1),G}function X(){return S.size>0?FU(S,t.current):j.current}let U=X();function z(){return U=X(),U?.willValidate?Q(U):UU(!1)}if(_){if(f.valid!==!1||!U)return;if(!U.validity.valueMissing){q();const K=X(),G=K?.validity.customError?uR(K):[];V(UU(G.length>0),G,!1);return}for(const K of cR)if(K!=="valid"&&K!=="valueMissing"&&K!=="customError"&&U.validity[K])return}k.clear(),q();let H=z(),J=uR(U);const ee=m();if(J.length===0||ee){const K=Array.from(n.current.fields.values()).reduce((se,re)=>(re.name&&(se[re.name]=re.getValue()),se),{}),G=i(M,K);let Y;if(typeof G=="object"&&G!==null&&"then"in G){if(H.valid===!1?V(H,J):(g==="onSubmit"||!o.state.customError)&&(H.valid=null,V(H,J)),Y=await G,L!==N.current)return;H=z()}else Y=G;J=Y?[].concat(Y).filter(Boolean):[],J.length>0?(H.valid=!1,H.customError=!0,U?.willValidate&&F(U,J.join(` +`))):J=uR(U)}V(H,J)}),A=qe((M,_=!1)=>{if(k.clear(),N.current+=1,_)return;const L=m();L&&M!==""&&l?k.start(l,()=>{O(M)}):O(M,!L)}),P=p.useCallback((M,_={})=>oo(y(_),f.valid===!1&&!f.disabled&&!M?{"aria-invalid":!0}:yr),[y,f.disabled,f.valid]);return p.useMemo(()=>({getValidationProps:P,inputRef:j,registeredInputs:S,registerInput:T,getInputControl:R,commit:O,change:A}),[P,S,T,R,O,A])}function gxe(e){const{change:t,commit:n,invalid:s,markedDirtyRef:i,name:o,setRegisteredFieldName:l,registeredFieldIdRef:u,setValidityData:d,validityData:f}=e,{formRef:m}=uu(),g=p.useRef(null),v=p.useRef(null),b=p.useRef(!1),y=qe(()=>{const R=v.current;if(R)return R.getValue?R.getValue():R.value});function k(R){return R.value===void 0?y():R.value}const j=qe(()=>{const R=v.current;if(i.current=!0,!R){n(f.value);return}n(k(R))});function S(){const R=v.current;!R||!R.id||m.current.fields.set(R.id,{getValue:y,name:o??R.name,controlRef:R.controlRef,validityData:lR(f,s),validate:j})}function N(R=v.current?.id){R&&m.current.fields.delete(R)}function C(R){if(b.current)return;b.current=!0;const O=k(R);d(A=>A.initialValue===O?A:{...A,initialValue:O})}Ge(()=>{const R=v.current;!R||!R.id||(l(o?void 0:R.name),m.current.fields.set(R.id,{getValue:y,name:o??R.name,controlRef:R.controlRef,validityData:lR(f,s),validate:j}))},[m,y,s,o,l,j,f]),Ge(()=>{const R=m.current.fields;return()=>{const O=v.current?.id;O&&R.delete(O)}},[m]);const T=qe((R,O)=>{if(!O){g.current===R&&(g.current=null,t(void 0,!0),N(),v.current=null,l(void 0),u.current=void 0);return}const A=v.current?.id,P=g.current;P&&P!==R&&t(void 0,!0),g.current=R,v.current=O,o||l(O.name),u.current=O.id,A&&A!==O.id&&N(A),C(O),S()});return[j,T]}const xxe=p.forwardRef(function(t,n){const{errors:s,validationMode:i,submitCountRef:o}=uu(),{render:l,className:u,validate:d,validationDebounceTime:f=0,validationMode:m=i,name:g,disabled:v=!1,invalid:b,dirty:y,touched:k,actionsRef:j,style:S,...N}=t,C=FO(!0)?.disabled,T=qe(d||(()=>null)),R=C||v,[O,A]=p.useState(!1),[P,M]=p.useState(!1),[_,L]=p.useState(!1),[$,D]=p.useState(!1),F=y??P,q=k??O,V=p.useRef(F),Q=p.useRef(void 0),[X,U]=p.useState(),z=g??X;Ge(()=>{y!==void 0&&(V.current=y)},[y]);const H=qe(he=>{y===void 0&&(he&&(V.current=!0),M(he))}),J=qe(he=>{k===void 0&&A(he)}),ee=qe(()=>m==="onChange"||m==="onSubmit"&&o.current>0),K=z&&Object.hasOwn(s,z)?s[z]:null,G=!!(Array.isArray(K)?K.length:K),Y=b===!0||G,[se,re]=p.useState({state:Tk,error:"",errors:[],value:null,initialValue:null}),ne=!Y&&(R?null:se.state.valid),de=p.useMemo(()=>({disabled:R,touched:q,dirty:F,valid:ne,filled:_,focused:$}),[R,q,F,ne,_,$]),ie=pxe({setValidityData:re,validate:T,validityData:se,validationDebounceTime:f,invalid:Y,markedDirtyRef:V,state:de,shouldValidateOnChange:ee,validationMode:m,registeredFieldIdRef:Q}),[oe,je]=gxe({change:ie.change,commit:ie.commit,invalid:Y,markedDirtyRef:V,name:g,setRegisteredFieldName:U,registeredFieldIdRef:Q,setValidityData:re,validityData:se});p.useImperativeHandle(j,()=>({validate:oe}),[oe]);const te=p.useMemo(()=>({invalid:Y,name:z,validityData:se,setValidityData:re,disabled:R,setTouched:J,setDirty:H,setFilled:L,setFocused:D,validationMode:m,shouldValidateOnChange:ee,state:de,registerFieldControl:je,validation:ie}),[Y,z,se,R,J,H,L,D,m,ee,de,je,ie]),le=Kt("div",t,{ref:n,state:de,props:N,stateAttributesMapping:hc});return r.jsx(BO.Provider,{value:te,children:le})}),vxe=p.forwardRef(function(t,n){return r.jsx(kge,{children:r.jsx(xxe,{...t,ref:n})})}),bxe=p.createContext({disabled:!1});function Kk(){return p.useContext(bxe)}const yxe=p.forwardRef(function(t,n){const{render:s,className:i,style:o,id:l,nativeLabel:u=!0,...d}=t,f=uo(!1),m=Kk(),{labelId:g}=zi(),v={...f.state,disabled:f.disabled||m.disabled},b=p.useRef(null),y=hxe({id:g??l,native:u});return Kt("label",t,{ref:[n,b],state:v,props:[y,d],stateAttributesMapping:hc})}),qk=null;class jxe{constructor(){Cn(this,"callbacks",[]);Cn(this,"callbacksCount",0);Cn(this,"nextId",1);Cn(this,"startId",1);Cn(this,"isScheduled",!1);Cn(this,"tick",t=>{this.isScheduled=!1;const n=this.callbacks,s=this.callbacksCount;if(this.callbacks=[],this.callbacksCount=0,this.startId=this.nextId,s>0)for(let i=0;i=this.callbacks.length||this.callbacks[n]!==null&&(this.callbacks[n]=null,this.callbacksCount-=1)}}let Gk=new jxe;class Fi{constructor(){Cn(this,"currentId",qk);Cn(this,"cancel",()=>{this.currentId!==qk&&(Gk.cancel(this.currentId),this.currentId=qk)});Cn(this,"disposeEffect",()=>this.cancel)}static create(){return new Fi}static request(t){return Gk.request(t)}static cancel(t){return Gk.cancel(t)}request(t){this.cancel(),this.currentId=Gk.request(()=>{this.currentId=qk,t()})}}function fg(){const e=$s(Fi.create).current;return Vk(e.disposeEffect),e}function pu(e){return e==null?e:"current"in e?e.current:e}let Wk=null;function wxe(e){if(!Wk){const t=[];Wk=t,queueMicrotask(()=>{Wk=null,xr.flushSync(()=>{for(const n of t)n()})})}Wk.push(e)}function dR(e,t=!1,n=!1){const s=fg();return qe((i,o=null)=>{s.cancel();const l=pu(e);if(l==null)return;const u=l,d=()=>{if(!n){xr.flushSync(i);return}wxe(()=>{o?.aborted||i()})};if(typeof u.getAnimations!="function"||globalThis.BASE_UI_ANIMATIONS_DISABLED){i();return}function f(){Promise.all(u.getAnimations().map(m=>m.finished)).then(()=>{o?.aborted||d()},()=>{if(o?.aborted)return;if(u.getAnimations().some(g=>g.pending||g.playState!=="finished")){f();return}d()})}if(t){const m=qO;if(!u.hasAttribute(m)){s.request(f);return}const g=new MutationObserver(()=>{u.hasAttribute(m)||(g.disconnect(),f())});g.observe(u,{attributes:!0,attributeFilter:[m]}),o?.addEventListener("abort",()=>g.disconnect(),{once:!0});return}s.request(f)})}function ji(e){const{enabled:t=!0,open:n,ref:s,batch:i=!1,onComplete:o}=e,l=qe(o),u=dR(s,n,i);p.useEffect(()=>{if(!t)return;const d=new AbortController;return u(l,d.signal),()=>{d.abort()}},[t,n,l,u])}function gu(e,t=!1,n=!1,s=!1){const[i,o]=p.useState(e&&t?"idle":void 0),[l,u]=p.useState(e&&!s);return e&&!l&&(u(!0),o("starting")),!e&&l&&i!=="ending"&&!n&&o("ending"),!e&&!l&&i==="ending"&&o(void 0),Ge(()=>{if(!e&&l&&i!=="ending"&&n){const d=Fi.request(()=>{o("ending")});return()=>{Fi.cancel(d)}}},[e,l,i,n]),Ge(()=>{if(!e||t)return;const d=Fi.request(()=>{o(void 0)});return()=>{Fi.cancel(d)}},[t,e]),Ge(()=>{if(!e||!t)return;e&&l&&i!=="idle"&&o("starting");const d=Fi.request(()=>{o("idle")});return()=>{Fi.cancel(d)}},[t,e,l,i]),{mounted:l,setMounted:u,transitionStatus:i}}const kxe=p.forwardRef(function(t,n){const{render:s,id:i,className:o,style:l,...u}=t,d=Ws(i),f=uo(!1),m=Kk(),{setMessageIds:g}=zi(),v={...f.state,disabled:f.disabled||m.disabled};return Ge(()=>{if(d)return g(y=>y.concat(d)),()=>{g(y=>y.filter(k=>k!==d))}},[d,g]),Kt("p",t,{ref:n,state:v,props:[{id:d},u],stateAttributesMapping:hc})});function Tl({controlled:e,default:t,name:n,state:s="value"}){const{current:i}=p.useRef(e!==void 0),[o,l]=p.useState(t),u=i&&e!==void 0?e:o,d=p.useCallback(f=>{i||l(f)},[]);return[u,d]}function hg(e,t,n,s,i=!0,o){const{registerFieldControl:l}=uo(),u=$s(()=>Symbol());Ge(()=>{const d=u.current;if(!i){l(d,void 0);return}l(d,{controlRef:e,getValue:s,id:t,name:o,value:n})},[e,i,s,t,o,l,u,n]),Ge(()=>{const d=u.current;return()=>{l(d,void 0)}},[l,u])}function Vo(e,t){const n=p.useRef(e),s=qe(t);Ge(()=>{n.current!==e&&s(n.current),n.current=e},[e,s])}const rs="none",xu="trigger-press",Ka="trigger-hover",Yk="trigger-focus",Xk="outside-press",Mb="item-press",fR="close-press",_b="input-change",mc="input-clear",Sxe="input-press",Ud="focus-out",mg="escape-key",hR="list-navigation",HU="keyboard",VU="pointer",KU="cancel-open",Nxe="disabled",mR="imperative-action",Cxe="window-resize";function Nt(e,t,n,s){let i=!1,o=!1;const l=s??yr;return{reason:e,event:t??new Event("base-ui"),cancel(){i=!0},allowPropagation(){o=!0},get isCanceled(){return i},get isPropagationAllowed(){return o},trigger:n,...l}}function Axe(e,t,n){const s=n??yr;return{reason:e,event:t??new Event("base-ui"),...s}}const Exe=p.forwardRef(function(t,n){const{render:s,className:i,id:o,name:l,value:u,disabled:d=!1,onValueChange:f,defaultValue:m,autoFocus:g=!1,style:v,...b}=t,{state:y,name:k,disabled:j,setTouched:S,setDirty:N,validityData:C,setFocused:T,setFilled:R,validationMode:O,validation:A}=uo(),{clearErrors:P,elementRef:M,submitCountRef:_}=uu(),L=j||d,$=k??l,D={...y,disabled:L},{labelId:F}=zi(),q=Dd({id:o}),[V]=Tl({controlled:u,default:m,name:"FieldControl",state:"value"}),Q=u!==void 0,X=Q?V:void 0,U=X==null?void 0:String(X),z=qe(()=>A.inputRef.current?.value);hg(A.inputRef,q,U,z,!L,l),Ge(()=>{const K=U??A.inputRef.current?.value;K!==void 0&&R(K!=="")},[U,A.inputRef,R]),Vo(U,()=>{U!==void 0&&(P($),N(U!==(C.initialValue??"")),A.change(U))});const H=p.useRef(null),J=fa();return Ge(()=>{g&&H.current===Ys(_n(H.current))&&T(!0)},[g,T]),Kt("input",t,{ref:[n,H],state:D,props:[{id:q,disabled:L,name:$,ref:A.inputRef,"aria-labelledby":F,autoFocus:g,...Q?{value:X}:{defaultValue:m},onChange(K){const G=K.currentTarget.value,Y=Nt(rs,K.nativeEvent);f?.(G,Y),!Q&&(N(G!==(C.initialValue??"")),R(G!==""),!K.nativeEvent.defaultPrevented&&!Y.isCanceled&&(P($),A.change(G)))},onFocus(){T(!0)},onBlur(K){if(S(!0),T(!1),O==="onBlur"){const G=K.currentTarget.value;A.commit(G),Q&&queueMicrotask(()=>{const Y=A.inputRef.current?.value;Y!==void 0&&Y!==G&&Y!==(C.initialValue??"")&&A.commit(Y)})}},onKeyDown(K){if(K.currentTarget.tagName==="INPUT"&&K.key==="Enter"){S(!0);const G=K.currentTarget.value,Y=K.currentTarget.form;if(Y&&Y===M.current&&!K.defaultPrevented){const se=K.currentTarget,re=_.current;J.start(0,()=>{_.current===re&&A.commit(se.value)})}else A.commit(G)}}},b,K=>A.getValidationProps(L,K)],stateAttributesMapping:hc})}),Txe=p.forwardRef(function(t,n){return r.jsx(Exe,{ref:n,...t})});function ze({className:e,type:t,ref:n,...s}){return t==="file"||t==="hidden"?r.jsx("input",{ref:n,type:t,"data-slot":"input",className:Ne(e),...s}):r.jsx(Txe,{ref:n,type:t,"data-slot":"input",className:Ne("h-[30px] w-full min-w-0 rounded-md border border-control-border bg-control px-2.5","text-[12.5px] text-foreground outline-none max-[767px]:h-10 max-[767px]:text-base","transition-[border-color,box-shadow] duration-150 ease-out","placeholder:text-muted-foreground","hover:border-control-border-hover","focus:border-primary focus:shadow-focus","disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-surface-3 disabled:text-muted-foreground","file:inline-flex file:border-0 file:bg-transparent file:text-foreground",e),...s})}function Xs({className:e,...t}){return r.jsx("textarea",{"data-slot":"textarea",className:Ne("min-h-26 w-full resize-y rounded-md border border-control-border bg-control px-3 py-2.5","font-mono text-[12px] leading-[1.6] text-foreground outline-none max-[767px]:text-base","transition-[border-color,box-shadow] duration-150 ease-out","placeholder:text-muted-foreground","hover:border-control-border-hover","focus:border-primary focus:shadow-focus","disabled:cursor-not-allowed disabled:bg-surface-3 disabled:text-muted-foreground",e),...t})}function zs({className:e,...t}){return r.jsx("div",{"data-slot":"input-group",role:"group",className:Ne("group/input-group relative flex h-[30px] w-full min-w-0 items-center rounded-md border border-control-border bg-control max-[767px]:h-10","transition-[border-color,box-shadow] duration-150 ease-out","outline-none","has-[[data-slot=input-group-control]:focus-visible]:border-primary","has-[[data-slot=input-group-control]:focus-visible]:shadow-focus","has-[[data-slot=input-group-control]:hover:not(:focus-visible)]:border-control-border-hover","has-[>textarea]:h-auto","has-[>[data-align=inline-start]]:[&>[data-slot=input-group-control]]:pl-1.5","has-[>[data-align=inline-end]]:[&>[data-slot=input-group-control]]:pr-1.5","has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col","has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:pb-1.5","has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col","has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:pt-1.5",e),...t})}const Oxe=kh(["flex h-auto cursor-text items-center justify-center gap-1.5 select-none","text-[12px] font-medium text-muted-foreground","group-data-[disabled=true]/input-group:opacity-50"],{variants:{align:{"inline-start":"order-first pl-[9px] has-[>button]:-ml-1","inline-end":"order-last pr-[9px] has-[>button]:-mr-1","block-start":"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-1.5","block-end":"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-1.5"}},defaultVariants:{align:"inline-start"}});function As({className:e,align:t="inline-start",...n}){return r.jsx("div",{role:"group","data-slot":"input-group-addon","data-align":t,className:Ne(Oxe({align:t}),e),onClick:s=>{s.target.closest("button")||s.currentTarget.parentElement?.querySelector("input")?.focus()},...n})}const Rxe=kh("flex items-center shadow-none",{variants:{size:{xs:"h-6 gap-1 rounded-xs px-1.5",sm:"h-8 gap-1.5 rounded-sm px-2.5","icon-xs":"size-6 rounded-xs p-0","icon-sm":"size-8 rounded-sm p-0"}},defaultVariants:{size:"xs"}});function Db({className:e,type:t="button",variant:n="ghost",size:s="xs",...i}){return r.jsx(B,{type:t,"data-size":s,variant:n,className:Ne(Rxe({size:s}),e),...i})}function Bs({className:e,...t}){return r.jsx(ze,{"data-slot":"input-group-control",className:Ne("flex-1 rounded-none border-0 bg-transparent shadow-none focus:border-0 focus:shadow-none",e),...t})}function Th(e){return Kt(e.defaultTagName??"div",e,e)}const Pxe=kh("inline-flex w-fit shrink-0 items-center justify-center gap-[5px] overflow-hidden whitespace-nowrap border font-semibold",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground",secondary:"border-transparent bg-secondary text-secondary-foreground",destructive:"border-destructive-bd bg-destructive-soft text-destructive",outline:"border-control-border bg-control text-subtle",ghost:"border-transparent bg-transparent text-muted-foreground",link:"border-transparent bg-transparent text-primary underline-offset-4 hover:underline",success:"border-success-bd bg-success-soft text-success",warning:"border-warning-bd bg-warning-soft text-warning",info:"border-info-bd bg-info-soft text-info",brand:"border-primary-bd bg-primary-soft text-primary-fg",cn:"border-cn-bd bg-cn-soft text-cn",intl:"border-intl-bd bg-intl-soft text-intl",sensitive:"border-sensitive-bd bg-sensitive-soft text-sensitive"},shape:{pill:"min-h-[21px] rounded-pill px-[9px] py-px text-[11.5px]",tag:"min-h-[19px] rounded-xs px-2 py-0 text-[11px]"}},defaultVariants:{variant:"default",shape:"pill"}});function Ee({className:e,variant:t,shape:n,render:s,...i}){return Th({render:s,defaultTagName:"span",props:oo({"data-slot":"badge"},i,{className:Ne(Pxe({variant:t,shape:n}),e)})})}function Qk({className:e,...t}){return r.jsx("span",{className:Ne("size-1.5 flex-none rounded-full bg-current",e),...t})}const qU=p.createContext(void 0);function GU(){const e=p.useContext(qU);if(e===void 0)throw new Error(Kn(13));return e}const pR={imageLoadingStatus:()=>null},Ixe=p.forwardRef(function(t,n){const{className:s,render:i,style:o,...l}=t,[u,d]=p.useState("idle"),f={imageLoadingStatus:u},m=p.useMemo(()=>({imageLoadingStatus:u,setImageLoadingStatus:d}),[u,d]),g=Kt("span",t,{state:f,ref:n,props:l,stateAttributesMapping:pR});return r.jsx(qU.Provider,{value:m,children:g})});function Mxe(e,{referrerPolicy:t,crossOrigin:n,sizes:s,srcSet:i},o){const l=p.useState("idle"),u=l[1];return Ge(()=>{if(!o)return Qn;if(!e&&!i)return u("error"),Qn;let d=!0;const f=new window.Image,m=g=>()=>{d&&u(g)};return u("loading"),f.onload=m("loaded"),f.onerror=m("error"),t&&(f.referrerPolicy=t),f.crossOrigin=n??null,s&&(f.sizes=s),i&&(f.srcset=i),e&&(f.src=e),f.complete&&u(f.naturalWidth>0?"loaded":"error"),()=>{d=!1}},[o,e,i,s,n,t,u]),l}const _xe={...pR,...Fo},Dxe=p.forwardRef(function(t,n){const{className:s,render:i,onLoadingStatusChange:o,keepMounted:l=!1,style:u,sizes:d,srcSet:f,src:m,...g}=t,{setImageLoadingStatus:v}=GU(),[b,y]=Mxe(m,t,!l),k=b==="loaded",{mounted:j,transitionStatus:S,setMounted:N}=gu(k),C=p.useRef(null),T=p.useRef(!0);Ge(()=>{if(!l)return;const L=T.current;T.current=!1;const $=C.current;if(!$)return;if(!$.complete){y("loading");return}const D=$.naturalWidth>0?"loaded":"error";y(D),D==="loaded"&&L&&N(!0)},[l,m,f,d,g.crossOrigin,g.referrerPolicy,i,y,N]);const R=l?{"data-loading":b==="loading"?"":void 0,"data-error":b==="error"?"":void 0,"aria-hidden":b!=="loaded"||void 0,onLoad(){y("loaded")},onError(){y("error")}}:void 0,O=qe(L=>{o?.(L),v(L)});Ge(()=>{b!=="idle"&&O(b)},[b,O]),Ge(()=>()=>v("idle"),[v]),ji({enabled:!k,open:k,ref:C,onComplete(){k||N(!1)}});const A={imageLoadingStatus:b,transitionStatus:l&&S==="ending"?void 0:S},P=l||j,M={};d!==void 0&&(M.sizes=d),f!==void 0&&(M.srcSet=f),m!==void 0&&(M.src=m);const _=Kt("img",t,{state:A,ref:[n,C],props:[R,g,M],stateAttributesMapping:_xe,enabled:P});return P?_:null}),Lxe=p.forwardRef(function(t,n){const{className:s,render:i,delay:o=0,style:l,...u}=t,{imageLoadingStatus:d}=GU(),[f,m]=p.useState(o===0),g=fa();return p.useEffect(()=>(o>0?g.start(o,()=>m(!0)):m(!0),g.clear),[g,o]),Kt("span",t,{state:{imageLoadingStatus:d},ref:n,props:u,stateAttributesMapping:pR,enabled:d!=="loaded"&&(o===0||f)})});function WU({className:e,...t}){return r.jsx(Ixe,{"data-slot":"avatar",className:n=>Ne("relative inline-flex size-8 shrink-0 overflow-hidden rounded-full text-foreground",typeof e=="function"?e(n):e),...t})}function YU({className:e,...t}){return r.jsx(Dxe,{"data-slot":"avatar-image",className:n=>Ne("absolute inset-0 block size-full object-cover data-loading:invisible data-error:invisible",typeof e=="function"?e(n):e),...t})}function XU({className:e,...t}){return r.jsx(Lxe,{"data-slot":"avatar-fallback",className:n=>Ne("absolute inset-0 flex items-center justify-center bg-control text-[12px] font-semibold text-subtle",typeof e=="function"?e(n):e),...t})}function Z(e,t){if(typeof window>"u")return e;const n=window.wbI18n;return n?n.t(e,t)??e:e}function Qt({className:e,...t}){return r.jsx("svg",{"data-slot":"spinner",role:"status","aria-label":Z("加载中"),viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",className:Ne("size-4 animate-spin [animation-duration:0.7s]",e),...t,children:r.jsx("path",{d:"M21 12a9 9 0 1 1-6.219-8.56"})})}function Ae({className:e,...t}){return r.jsx("label",{"data-slot":"label",className:Ne("flex items-center gap-[6px] text-[11.5px] text-muted-foreground",e),...t})}const QU={clipPath:"inset(50%)",overflow:"hidden",whiteSpace:"nowrap",border:0,padding:0,width:1,height:1,margin:-1},vu={...QU,position:"fixed",top:0,left:0},pg={...QU,position:"absolute"},ZU=p.createContext(void 0);function $xe(){const e=p.useContext(ZU);if(e===void 0)throw new Error(Kn(63));return e}const zxe="data-checked",Bxe="data-unchecked",JU={...hc,checked(e){return e?{[zxe]:""}:{[Bxe]:""}}},Fxe=p.forwardRef(function(t,n){const{checked:s,className:i,defaultChecked:o,"aria-labelledby":l,form:u,id:d,inputRef:f,name:m,nativeButton:g=!1,onCheckedChange:v,readOnly:b=!1,required:y=!1,disabled:k=!1,render:j,uncheckedValue:S,value:N,style:C,...T}=t,{clearErrors:R}=uu(),{state:O,setTouched:A,setDirty:P,validityData:M,setFilled:_,setFocused:L,validationMode:$,disabled:D,name:F,validation:q}=uo(),{labelId:V}=zi(),Q=D||k,X=F??m,U=p.useRef(null),z=lo(U,f,q.inputRef),H=p.useRef(null),J=Ws(),ee=Dd({id:d}),K=g?void 0:ee,[G,Y]=Tl({controlled:s,default:!!o,name:"Switch",state:"checked"});hg(H,J,G,void 0,!Q,m),Ge(()=>{_(G)},[G,_]),Vo(G,()=>{R(X),P(G!==M.initialValue),q.change(G)});const{getButtonProps:se,buttonRef:re}=$i({disabled:Q,native:g}),ne=UO(l,V,U,!g,K),de={id:g?ee:J,role:"switch","aria-checked":G,"aria-readonly":b||void 0,"aria-required":y||void 0,"aria-labelledby":ne,onFocus(){Q||L(!0)},onBlur(){const te=U.current;!te||Q||(A(!0),L(!1),$==="onBlur"&&q.commit(te.checked))},onClick(te){if(b||Q)return;te.preventDefault();const le=U.current;le&&og(le,te)}},ie={...q.getValidationProps(Q),checked:G,disabled:Q,form:u,id:K,name:X,required:y,style:X?pg:vu,tabIndex:-1,type:"checkbox","aria-hidden":!0,ref:z,onChange(te){if(te.nativeEvent.defaultPrevented)return;if(b){te.preventDefault();return}const le=te.currentTarget.checked,he=Nt(rs,te.nativeEvent);v?.(le,he),!he.isCanceled&&Y(le)},onClick(te){te.stopPropagation()},onFocus(){H.current?.focus()},...N!==void 0?{value:N}:yr},oe=p.useMemo(()=>({...O,checked:G,disabled:Q,readOnly:b,required:y}),[O,G,Q,b,y]),je=Kt("span",t,{state:oe,ref:[n,H,re],props:[de,T,se,te=>q.getValidationProps(Q,te)],stateAttributesMapping:JU});return r.jsxs(ZU.Provider,{value:oe,children:[je,!G&&X&&S!==void 0&&r.jsx("input",{type:"hidden",form:u,name:X,value:S,disabled:Q}),r.jsx("input",{...ie,suppressHydrationWarning:!0})]})}),Uxe=p.forwardRef(function(t,n){const{render:s,className:i,style:o,...l}=t,u=$xe();return Kt("span",t,{state:u,ref:n,stateAttributesMapping:JU,props:l})});function St({className:e,size:t="default",variant:n="default",...s}){const i=t==="sm";return r.jsx(Fxe,{"data-slot":"switch",className:Ne("relative inline-flex flex-none cursor-pointer items-center rounded-pill border-0 bg-border-strong p-0","transition-colors duration-[180ms] ease-out",n==="success"?"data-checked:bg-success":"data-checked:bg-primary","focus-visible:shadow-focus focus-visible:outline-none","data-disabled:cursor-not-allowed data-disabled:opacity-50",i?"h-[14px] w-6":t==="touch"?"h-6 w-10":"h-[21px] w-9",e),...s,children:r.jsx(Uxe,{"data-slot":"switch-thumb",className:Ne("block rounded-full bg-primary-on shadow-1","transition-transform duration-[180ms] [transition-timing-function:cubic-bezier(.3,1.4,.6,1)]",i?"size-[10px] translate-x-0.5 data-checked:translate-x-[10px]":t==="touch"?"size-5 translate-x-0.5 data-checked:translate-x-[18px]":"size-[17px] translate-x-0.5 data-checked:translate-x-[17px]")})})}function Hxe(e){if(!e)return null;for(const t of e.elements){const n=t.tagName;if(n==="BUTTON"||n==="INPUT"){const s=t;if(s.type==="submit")return s}}return null}const Vxe="data-checked",Kxe="data-unchecked";function e6(e){return{checked(t){return e.indeterminate?{}:t?{[Vxe]:""}:{[Kxe]:""}},...hc}}const qxe=p.createContext(void 0);function Gxe(){return p.useContext(qxe)}const t6=p.createContext(void 0);function Wxe(){const e=p.useContext(t6);if(e===void 0)throw new Error(Kn(14));return e}const Yxe="data-parent",Xxe=p.forwardRef(function(t,n){const{checked:s,className:i,defaultChecked:o=!1,"aria-labelledby":l,disabled:u=!1,form:d,id:f,indeterminate:m=!1,inputRef:g,name:v,onCheckedChange:b,parent:y=!1,readOnly:k=!1,render:j,required:S=!1,uncheckedValue:N,value:C,nativeButton:T=!1,style:R,...O}=t,{clearErrors:A}=uu(),{disabled:P,name:M,setDirty:_,setFilled:L,setFocused:$,setTouched:D,state:F,validationMode:q,validityData:V,validation:Q}=uo(),X=Kk(),{labelId:U,registerControlId:z,getDescriptionProps:H}=zi(),J=Gxe(),ee=J?.allValues===void 0?void 0:J.parent,K=ee!==void 0,G=P||X.disabled||J?.disabled||u,Y=M??v,se=C??Y,re=Ws(),ne=J?.registerControlId!==z,de=Dd({id:f||void 0,enabled:ne}),ie=T?de:re;let oe={};K&&(y?oe=ee.getParentProps():se!==void 0&&(oe=ee.getChildProps(se)));const{checked:je=s,indeterminate:te=m,onCheckedChange:le,...he}=oe,ce=J?.value,ye=p.useRef(null),{getButtonProps:fe,buttonRef:Le}=$i({disabled:G,native:T}),pe=J?.validation??Q,[xe,Se]=Tl({controlled:se!==void 0&&ce!==void 0&&!y?ce.includes(se):je,default:o,name:"Checkbox",state:"checked"}),ge=K?!!je:xe,ue=K&&te||m;hg(ye,re,xe,void 0,!J&&!G,v);const be=ee?.registerChildId,ve=p.useRef(null),De=pe.registerInput,Ie=J?se:void 0,We=p.useCallback(xt=>De(xt,{controlRef:ye,value:Ie}),[De,Ie]),nt=lo(g,ve,y?void 0:We),kt=UO(l,U,ve,!T,de);Ge(()=>{ve.current&&(ve.current.indeterminate=ue),J||L(xe)},[xe,ue,J,L]),Vo(xe,()=>{J||(A(Y),_(xe!==V.initialValue),pe.change(xe))});const Je=oo({checked:xe,disabled:G,form:d,name:y?void 0:Y,id:T?void 0:de,required:S,ref:nt,style:Y?pg:vu,tabIndex:-1,type:"checkbox","aria-hidden":!0,onChange(xt){if(xt.nativeEvent.defaultPrevented)return;if(k){xt.preventDefault();return}const sn=xt.currentTarget.checked,Ke=Nt(rs,xt.nativeEvent);if(b?.(sn,Ke),!Ke.isCanceled&&(le?.(sn,Ke),!Ke.isCanceled&&(Se(sn),se!==void 0&&J!==void 0&&!y&&!K))){const zt=sn?[...J.value,se]:J.value.filter(ht=>ht!==se);J.setValue(zt,Ke)}},onClick(xt){xt.stopPropagation()},onFocus(){ye.current?.focus()}},C!==void 0?{value:(J?xe&&C:C)||""}:yr,H,xt=>pe.getValidationProps(G,xt));p.useEffect(()=>{if(!ee||se===void 0)return;const xt=ee.disabledStatesRef.current;return xt.set(se,G),()=>{xt.delete(se)}},[ee,G,se]);const on=p.useMemo(()=>({...F,checked:ge,disabled:G,readOnly:k,required:S,indeterminate:ue}),[F,ge,G,k,S,ue]),nn=e6(on),On=Kt("span",t,{state:on,ref:[Le,ye,n],props:[{id:ie,role:"checkbox","aria-checked":ue?"mixed":ge,"aria-readonly":k||void 0,"aria-required":S||void 0,"aria-labelledby":kt,[Yxe]:y?"":void 0,onFocus(){G||$(!0)},onBlur(){const xt=ve.current;xt&&(D(!0),$(!1),q==="onBlur"&&pe.commit(J?ce:xt.checked))},onKeyDown(xt){if(xt.key!=="Enter"||(xt.preventBaseUIHandler(),xt.defaultPrevented))return;const sn=ve.current?.form??null,Ke=xt.currentTarget,zt=xt.nativeEvent,ht=xt.preventDefault,Tt=zt.preventDefault;let Ht=!1;xt.preventDefault=()=>{Ht=!0,ht.call(xt)},zt.preventDefault=()=>{Ht=!0,Tt.call(zt)},Tt.call(zt),vr(Ke).queueMicrotask(()=>{xt.preventDefault=ht,zt.preventDefault=Tt,Ht||Hxe(sn)?.click()})},onClick(xt){if(k||G)return;xt.preventDefault();const sn=ve.current;sn&&og(sn,xt)}},O,he,fe,H,xt=>pe.getValidationProps(G,xt)],stateAttributesMapping:nn}),Rn=On.props.id;return Ge(()=>{if(!(!be||y||se===void 0||Rn===void 0))return be(se,Rn)},[be,y,se,Rn]),r.jsxs(t6.Provider,{value:on,children:[On,!xe&&!J&&Y&&!y&&N!==void 0&&r.jsx("input",{type:"hidden",form:d,name:Y,value:N,disabled:G}),r.jsx("input",{...Je,suppressHydrationWarning:!0})]})}),Qxe=p.forwardRef(function(t,n){const{render:s,className:i,style:o,keepMounted:l=!1,...u}=t,d=Wxe(),f=d.checked||d.indeterminate,{mounted:m,transitionStatus:g,setMounted:v}=gu(f),b=p.useRef(null),y={...d,transitionStatus:g};ji({batch:!0,enabled:!f,open:f,ref:b,onComplete(){f||v(!1)}});const j={...e6(d),...Fo},S=l||m,N=Kt("span",t,{ref:[n,b],state:y,stateAttributesMapping:j,props:u});return S?N:null});function jr({className:e,...t}){return r.jsx(Xxe,{"data-slot":"checkbox",className:Ne("group/checkbox relative inline-flex size-3.5 shrink-0 cursor-pointer items-center justify-center rounded-[3px] border border-control-border bg-control","outline-none transition-colors duration-150 ease-out","hover:border-control-border-hover","data-checked:border-primary data-checked:bg-primary","focus-visible:shadow-focus","data-disabled:cursor-not-allowed data-disabled:opacity-45",e),...t,children:r.jsx(Qxe,{"data-slot":"checkbox-indicator",className:"grid place-content-center text-primary-foreground data-unchecked:hidden",children:r.jsxs("svg",{viewBox:"0 0 12 12",className:"size-2.5","aria-hidden":"true",children:[r.jsx("path",{d:"M2 6h8",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",fill:"none",className:"hidden group-aria-[checked=indeterminate]/checkbox:block"}),r.jsx("path",{d:"M2.5 6.2 4.8 8.5 9.5 3.8",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round",fill:"none",className:"group-aria-[checked=indeterminate]/checkbox:hidden"})]})})})}function gR(e){return Array.isArray(e)?e.map(t=>gR(t)).join(","):e==null?"":String(e)}const n6=new Map;function Zxe(e,t){const n=JSON.stringify({locale:gR(e),options:t}),s=n6.get(n);if(s)return s;const i=new Intl.NumberFormat(e,t);return n6.set(n,i),i}function Zk(e,t,n){return e==null?"":Zxe(t,n).format(e)}function bu(e,t=Number.MIN_SAFE_INTEGER,n=Number.MAX_SAFE_INTEGER){return Math.max(t,Math.min(e,n))}function r6(e,t,n){return(e-t)*100/(n-t)}const s6=p.createContext(void 0);function a6(){const e=p.useContext(s6);if(e===void 0)throw new Error(Kn(51));return e}const Jxe="data-complete",eve="data-indeterminate",tve="data-progressing",xR={status(e){return e==="progressing"?{[tve]:""}:e==="complete"?{[Jxe]:""}:e==="indeterminate"?{[eve]:""}:null}},nve=p.forwardRef(function(t,n){const{format:s,getAriaValueText:i,locale:o,max:l=100,min:u=0,value:d,render:f,className:m,children:g,style:v,...b}=t,[y,k]=p.useState();let j="indeterminate",S=null,N=null,C="",T="indeterminate progress";if(d!=null&&Number.isFinite(d)){const M=r6(d,u,l);S=bu(Number.isNaN(M)?0:M,0,100),N=bu(d,u,l),j=N===l?"complete":"progressing",C=s?Zk(N,o,s):Zk(S/100,o,{style:"percent"}),T=C}const R=p.useMemo(()=>({status:j}),[j]),O={"aria-labelledby":y,"aria-valuemax":l,"aria-valuemin":u,"aria-valuenow":N??void 0,"aria-valuetext":i?i(C,d):T,role:"progressbar",children:r.jsxs(p.Fragment,{children:[g,r.jsx("span",{role:"presentation",style:vu,children:"x"})]})},A=p.useMemo(()=>({formattedValue:C,percentageValue:S,setLabelId:k,state:R,value:d}),[C,S,k,R,d]),P=Kt("div",t,{state:R,ref:n,props:[O,b],stateAttributesMapping:xR});return r.jsx(s6.Provider,{value:A,children:P})}),rve=p.forwardRef(function(t,n){const{render:s,className:i,style:o,...l}=t,{state:u}=a6();return Kt("div",t,{state:u,ref:n,props:l,stateAttributesMapping:xR})}),sve=p.forwardRef(function(t,n){const{render:s,className:i,style:o,...l}=t,{percentageValue:u,state:d}=a6(),f=u==null?{}:{insetInlineStart:0,height:"inherit",width:`${u}%`};return Kt("div",t,{state:d,ref:n,props:[{style:f},l],stateAttributesMapping:xR})});function gg({className:e,children:t,value:n,...s}){return r.jsxs(nve,{value:n,"data-slot":"progress",className:Ne("flex w-full flex-wrap items-center gap-3",e),...s,children:[t,r.jsx(ave,{children:r.jsx(ive,{})})]})}function ave({className:e,...t}){return r.jsx(rve,{"data-slot":"progress-track",className:Ne("relative flex h-1.5 w-full items-center overflow-x-hidden overflow-y-hidden rounded-pill bg-surface-3",e),...t})}function ive({className:e,...t}){return r.jsx(sve,{"data-slot":"progress-indicator",className:Ne("h-full rounded-[inherit] bg-primary transition-[width] duration-300 ease-out data-[indeterminate]:w-1/3 data-[indeterminate]:animate-pulse",e),...t})}const vR=[];let bR;function ove(){return bR}function lve(e){vR.push(e)}function Jk(e){const t=(n,s)=>{const i=$s(cve).current;let o;try{bR=i;for(const l of vR)l.before(i);o=e(n,s);for(const l of vR)l.after(i);i.didInitialize=!0}finally{bR=void 0}return o};return t.displayName=e.displayName||e.name,t}function yR(e){return p.forwardRef(Jk(e))}function cve(){return{didInitialize:!1}}const i6=p.createContext(void 0);function Lb(e){const t=p.useContext(i6);if(t===void 0&&!e)throw new Error(Kn(72));return t}function uve(e,t){return t!=null&&!$d(t)?0:typeof e=="function"?e():e}function Oh(e,t,n){const s=uve(e,n);return typeof s=="number"?s:s?.[t]}function o6(e){return typeof e=="function"?e():e}function l6(e,t){return t||e==="click"||e==="mousedown"}function dve(e){return e?.includes("mouse")&&e!=="mousedown"}const c6=p.createContext({hasProvider:!1,timeoutMs:0,delayRef:{current:0},initialDelayRef:{current:0},timeout:new Bi,currentIdRef:{current:null},currentContextRef:{current:null}});function fve(e,t){e.current=t.current}function hve(e){const{children:t,delay:n,timeoutMs:s=0}=e,i=p.useRef(n),o=p.useRef(n),l=p.useRef(null),u=p.useRef(null),d=fa();return Ge(()=>{if(o.current=n,!l.current){i.current=n;return}i.current={open:Oh(i.current,"open"),close:Oh(n,"close")}},[n,l,i,o]),r.jsx(c6.Provider,{value:p.useMemo(()=>({hasProvider:!0,delayRef:i,initialDelayRef:o,currentIdRef:l,timeoutMs:s,currentContextRef:u,timeout:d}),[s,d]),children:t})}function mve(e,t={open:!1}){const{open:n}=t,s="rootStore"in e?e.rootStore:e,i=s.useState("floatingId"),o=p.useContext(c6),{currentIdRef:l,delayRef:u,timeoutMs:d,initialDelayRef:f,currentContextRef:m,hasProvider:g,timeout:v}=o,[b,y]=p.useState(!1),k=p.useRef(n);return Ge(()=>{k.current=n},[n]),Ge(()=>{function j(){m.current?.setIsInstantPhase(!1),l.current=null,m.current=null,u.current=f.current,v.clear()}if(l.current&&!n&&l.current===i){if(y(!1),d){const S=i;return v.start(d,()=>{s.select("open")||l.current&&l.current!==S||j()}),()=>{(k.current||l.current!==S)&&v.clear()}}j()}},[n,i,l,u,d,f,m,v,s]),Ge(()=>{if(!n)return;const j=m.current,S=l.current;v.clear(),m.current={onOpenChange:s.setOpen,setIsInstantPhase:y},l.current=i,u.current={open:0,close:Oh(f.current,"close")},S!==null&&S!==i?(y(!0),j?.setIsInstantPhase(!0),j?.onOpenChange(!1,Nt(rs))):(y(!1),j?.setIsInstantPhase(!1))},[n,i,s,l,u,f,m,v]),Ge(()=>()=>{if(l.current===i){if(m.current=null,!k.current)return;l.current=null,fve(u,f),v.clear()}},[m,l,u,i,f,v]),p.useMemo(()=>({activeIdRef:l,hasProvider:g,delayRef:u,isInstantPhase:b}),[l,g,u,b])}function kn(e,t,n,s){return e.addEventListener(t,n,s),()=>{e.removeEventListener(t,n,s)}}function Ol(...e){return()=>{for(let t=0;t{t.current=t.next}};return t}const Rh=p.forwardRef(function(t,n){const[s,i]=p.useState();Ge(()=>{Rge&&du&&i("button")},[]);const o={tabIndex:0,role:s};return r.jsx("span",{...t,ref:n,style:vu,"aria-hidden":s?void 0:!0,...o,"data-base-ui-focus-guard":""})});function $b(e){return`data-base-ui-${e}`}let eS=0;function tS(e,t={}){const{preventScroll:n=!1,sync:s=!1,shouldFocus:i}=t;cancelAnimationFrame(eS);function o(){i&&!i()||e?.focus({preventScroll:n})}if(s)return o(),Qn;const l=requestAnimationFrame(o);return eS=l,()=>{eS===l&&(cancelAnimationFrame(l),eS=0)}}const jR={inert:new WeakMap,"aria-hidden":new WeakMap},u6="data-base-ui-inert",wR={inert:new WeakSet,"aria-hidden":new WeakSet};let zb=new WeakMap,kR=0;function gve(e){return wR[e]}function d6(e){return e?ag(e)?e.host:d6(e.parentNode):null}const f6=(e,t)=>t.map(n=>{if(e.contains(n))return n;const s=d6(n);return e.contains(s)?s:null}).filter(n=>n!=null),h6=e=>{const t=new Set;return e.forEach(n=>{let s=n;for(;s&&!t.has(s);)t.add(s),s=s.parentNode}),t},m6=(e,t,n)=>{const s=[],i=o=>{!o||n.has(o)||Array.from(o.children).forEach(l=>{Va(l)!=="script"&&(t.has(l)?i(l):s.push(l))})};return i(e),s};function xve(e,t,n,s,{mark:i=!0}){let o=null;s?o="inert":n&&(o="aria-hidden");let l=null,u=null;const d=f6(t,e),f=i?m6(t,h6(d),new Set(d)):[],m=[],g=[];if(o){const v=jR[o],b=gve(o);u=b,l=v;const y=f6(t,Array.from(t.querySelectorAll("[aria-live]"))),k=d.concat(y);m6(t,h6(k),new Set(k)).forEach(S=>{const N=S.getAttribute(o),C=N!==null&&N!=="false",T=(v.get(S)||0)+1;v.set(S,T),m.push(S),T===1&&C&&b.add(S),C||S.setAttribute(o,o==="inert"?"":"true")})}return i&&f.forEach(v=>{const b=(zb.get(v)||0)+1;zb.set(v,b),g.push(v),b===1&&v.setAttribute(u6,"")}),kR+=1,()=>{l&&m.forEach(v=>{const y=(l.get(v)||0)-1;l.set(v,y),y||(!u?.has(v)&&o&&v.removeAttribute(o),u?.delete(v))}),i&&g.forEach(v=>{const b=(zb.get(v)||0)-1;zb.set(v,b),b||v.removeAttribute(u6)}),kR-=1,kR||(jR.inert=new WeakMap,jR["aria-hidden"]=new WeakMap,wR.inert=new WeakSet,wR["aria-hidden"]=new WeakSet,zb=new WeakMap)}}function p6(e,t={}){const{ariaHidden:n=!1,inert:s=!1,mark:i=!0}=t,o=_n(e[0]).body;return xve(e,o,n,s,{mark:i})}const vve=500,bve={style:{transition:"none"}},SR="data-base-ui-click-trigger",yve="data-base-ui-swipe-ignore",jve="data-swipe-ignore",wve=`[${yve}]`,kve=`[${jve}]`,g6={fallbackAxisSide:"none"},x6={fallbackAxisSide:"end"},Sve={clipPath:"inset(50%)",position:"fixed",top:0,left:0},v6=p.createContext(null),b6=()=>p.useContext(v6),Nve=$b("portal");function y6(e={}){const{ref:t,container:n,componentProps:s=yr,elementProps:i}=e,o=lg(),u=b6()?.portalNode,[d,f]=p.useState(null),[m,g]=p.useState(null),v=qe(j=>{j!==null&&g(j)}),b=p.useRef(null);Ge(()=>{if(n===null){b.current&&(b.current=null,g(null),f(null));return}const j=(n&&(SO(n)?n:n.current))??u??document.body;if(j==null){b.current&&(b.current=null,g(null),f(null));return}b.current!==j&&(b.current=j,g(null),f(j))},[n,u]);const y=Kt("div",s,{ref:[t,v],props:[{id:o,[Nve]:""},i]}),k=d&&y?xr.createPortal(y,d):null;return{node:m,nodeId:p.isValidElement(y)?y.props.id:void 0,subtree:k}}const nS=p.forwardRef(function(t,n){const{render:s,className:i,style:o,children:l,container:u,portalOwnerRole:d,...f}=t,{node:m,nodeId:g,subtree:v}=y6({container:u,ref:n,componentProps:t,elementProps:f}),b=p.useRef(null),y=p.useRef(null),k=p.useRef(null),j=p.useRef(null),[S,N]=p.useState(null),C=p.useRef(!1),T=S?.modal,R=S?.open,O=!!S&&!S.modal&&S.open&&!!m;p.useEffect(()=>{if(!m||T)return;function P(M){m&&M.relatedTarget&&dg(M)&&(M.type==="focusin"?C.current&&(zU(m),C.current=!1):(dxe(m),C.current=!0))}return Ol(kn(m,"focusin",P,!0),kn(m,"focusout",P,!0))},[m,T]),Ge(()=>{!m||R!==!0||!C.current||(zU(m),C.current=!1)},[R,m]);const A=p.useMemo(()=>({beforeOutsideRef:b,afterOutsideRef:y,beforeInsideRef:k,afterInsideRef:j,portalNode:m,setFocusManagerState:N}),[m]);return r.jsxs(p.Fragment,{children:[v,r.jsxs(v6.Provider,{value:A,children:[O&&m&&r.jsx(Rh,{"data-type":"outside",ref:b,onFocus:P=>{if(dg(P,m))k.current?.focus();else{const M=S?S.domReference:null;LU(M)?.focus()}}}),O&&m&&r.jsx("span",{role:d,"aria-owns":g,style:Sve}),m&&xr.createPortal(l,m),O&&m&&r.jsx(Rh,{"data-type":"outside",ref:y,onFocus:P=>{if(dg(P,m))j.current?.focus();else{const M=S?S.domReference:null;oR(M)?.focus(),S?.closeOnFocusOut&&S?.onOpenChange(!1,Nt(Ud,P.nativeEvent))}}})]})]})});function j6(){const e=new Map;return{emit(t,n){e.get(t)?.forEach(s=>s(n))},on(t,n){e.has(t)||e.set(t,new Set),e.get(t).add(n)},off(t,n){e.get(t)?.delete(n)}}}class Cve{constructor(){Cn(this,"nodesRef",{current:[]});Cn(this,"events",j6())}addNode(t){this.nodesRef.current.push(t)}removeNode(t){const n=this.nodesRef.current.findIndex(s=>s===t);n!==-1&&this.nodesRef.current.splice(n,1)}}const w6=p.createContext(null),k6=p.createContext(null),xg=()=>p.useContext(w6)?.id||null,Ph=e=>{const t=p.useContext(k6);return e??t};function Ave(e){const t=lg(),n=Ph(e),s=xg();return Ge(()=>{if(!t)return;const i={id:t,parentId:s};return n?.addNode(i),()=>{n?.removeNode(i)}},[n,t,s]),t}function Eve(e){const{children:t,id:n}=e,s=xg();return r.jsx(w6.Provider,{value:p.useMemo(()=>({id:n,parentId:s}),[n,s]),children:t})}function Tve(e){const{children:t,externalTree:n}=e,s=$s(()=>n??new Cve).current;return r.jsx(k6.Provider,{value:s,children:t})}function Ove(e,t){const n=vr(Er(e));return e instanceof n.KeyboardEvent?"keyboard":e instanceof n.FocusEvent?t||"keyboard":"pointerType"in e?e.pointerType||"keyboard":"touches"in e?"touch":e instanceof n.MouseEvent?t||(e.detail===0?"keyboard":"mouse"):""}const S6=20;let Hd=[];function NR(){Hd=Hd.filter(e=>e.deref()?.isConnected)}function N6(e){NR(),e&&Va(e)!=="body"&&(Hd.push(new WeakRef(e)),Hd.length>S6&&(Hd=Hd.slice(-S6)))}function C6(){return NR(),Hd[Hd.length-1]?.deref()}function Rve(e){return e?iR(e)?e:Pb(e)[0]||e:null}function A6(e){if(e.hasAttribute("tabindex")&&!e.hasAttribute("data-tabindex")||!e.getAttribute("role")?.includes("dialog"))return;const n=_U(e).filter(i=>{const o=i.getAttribute("data-tabindex")||"";return iR(i)||i.hasAttribute("data-tabindex")&&!o.startsWith("-")}),s=e.getAttribute("tabindex");n.length===0?s!=="0"&&(e.setAttribute("tabindex","0"),e.setAttribute("data-tabindex","0")):(s!=="-1"||e.hasAttribute("data-tabindex")&&e.getAttribute("data-tabindex")!=="-1")&&(e.setAttribute("tabindex","-1"),e.setAttribute("data-tabindex","-1"))}function rS(e){const{context:t,children:n,disabled:s=!1,initialFocus:i=!0,returnFocus:o=!0,restoreFocus:l=!1,modal:u=!0,closeOnFocusOut:d=!0,openInteractionType:f="",nextFocusableElement:m,previousFocusableElement:g,beforeContentFocusGuardRef:v,externalTree:b,getInsideElements:y}=e,k="rootStore"in t?t.rootStore:t,j=k.useState("open"),S=k.useState("domReferenceElement"),N=k.useState("floatingElement"),{events:C,dataRef:T}=k.context,R=qe(()=>T.current.floatingContext?.nodeId),O=i===!1,A=QO(S)&&O,P=ss(i),M=ss(o),_=ss(f),L=ss(j),$=Ph(b),D=b6(),F=p.useRef(!1),q=p.useRef(!1),V=p.useRef(!1),Q=p.useRef(null),X=p.useRef(""),U=p.useRef(""),z=p.useRef(null),H=p.useRef(null),J=lo(z,v,D?.beforeInsideRef),ee=lo(H,D?.afterInsideRef),K=fa(),G=fa(),Y=fg(),se=D!=null,re=Lk(N),ne=qe((oe=re)=>oe?Pb(oe):[]),de=qe(()=>y?.().filter(oe=>oe!=null)??[]);p.useEffect(()=>{if(s||!u)return;function oe(te){te.key==="Tab"&&Et(re,Ys(_n(re)))&&ne().length===0&&!A&&da(te)}const je=_n(re);return kn(je,"keydown",oe)},[s,re,u,A,ne]),p.useEffect(()=>{if(s||!j)return;const oe=_n(re);function je(){V.current=!1}function te(he){const ce=Er(he),ye=de(),fe=Et(N,ce)||Et(S,ce)||Et(D?.portalNode,ce)||ye.some(Le=>Le===ce||Et(Le,ce));V.current=!fe,U.current=he.pointerType||"keyboard",ce?.closest(`[${SR}]`)&&(q.current=!0,G.start(0,()=>{q.current=!1}))}function le(){U.current="keyboard"}return Ol(kn(oe,"pointerdown",te,!0),kn(oe,"pointerup",je,!0),kn(oe,"pointercancel",je,!0),kn(oe,"keydown",le,!0),je)},[s,N,S,re,j,D,G,de]),p.useEffect(()=>{if(s||!d)return;const oe=_n(re);function je(){q.current=!0,G.start(0,()=>{q.current=!1})}function te(ye){const fe=Er(ye);iR(fe)&&(Q.current=fe)}function le(ye){const fe=ye.relatedTarget,Le=ye.currentTarget,pe=Er(ye);u&&fe==null&&pe!=null&&Et(N,pe)&&N6(pe),queueMicrotask(()=>{const xe=R(),Se=k.context.triggerElements,ge=de(),ue=fe?.hasAttribute($b("focus-guard"))&&[z.current,H.current,D?.beforeInsideRef.current,D?.afterInsideRef.current,D?.beforeOutsideRef.current,D?.afterOutsideRef.current,pu(g),pu(m)].includes(fe),be=!(Et(S,fe)||Et(N,fe)||Et(fe,N)||Et(D?.portalNode,fe)||ge.some(ve=>ve===fe||Et(ve,fe))||Se.hasMatchingElement(ve=>Et(ve,fe))||ue||$&&(Ld($.nodesRef.current,xe).find(ve=>Et(ve.context?.elements.floating,fe)||Et(ve.context?.elements.domReference,fe))||SU($.nodesRef.current,xe).find(ve=>[ve.context?.elements.floating,Lk(ve.context?.elements.floating)].includes(fe)||ve.context?.elements.domReference===fe)));if(Le===S&&re&&A6(re),l&&Le!==S&&!Hk(pe)&&Ys(oe)===oe.body){if(br(re)&&(re.focus(),l==="popup")){Y.request(()=>{re.focus()});return}const ve=ne(),De=Q.current,Ie=(De&&ve.includes(De)?De:null)||ve[ve.length-1]||re;br(Ie)&&Ie.focus()}if(T.current.insideReactTree){T.current.insideReactTree=!1;return}(A||!u)&&fe&&be&&!q.current&&(A||fe!==C6())&&(F.current=!0,k.setOpen(!1,Nt(Ud,ye)))})}function he(){V.current||(T.current.insideReactTree=!0,K.start(0,()=>{T.current.insideReactTree=!1}))}const ce=br(S)?S:null;if(!(!N&&!ce))return Ol(ce&&kn(ce,"focusout",le),ce&&kn(ce,"pointerdown",je),N&&kn(N,"focusin",te),N&&kn(N,"focusout",le),N&&D&&kn(N,"focusout",he,!0))},[s,S,N,re,u,$,D,k,d,l,ne,A,R,T,K,G,Y,m,g,de]),p.useEffect(()=>{if(s||!N||!j)return;const oe=Array.from(D?.portalNode?.querySelectorAll(`[${$b("portal")}]`)||[]),te=($?SU($.nodesRef.current,R()):[]).find(Le=>QO(Le.context?.elements.domReference||null))?.context?.elements.domReference,he=[...[N,...oe,z.current,H.current,D?.beforeOutsideRef.current,D?.afterOutsideRef.current,...de()],te,pu(g),pu(m),A?S:null].filter(Le=>Le!=null),ce=p6(he,{ariaHidden:u||A,mark:!1}),ye=[N,...oe].filter(Le=>Le!=null),fe=p6(ye);return()=>{fe(),ce()}},[j,s,S,N,u,D,A,$,R,m,g,de]),Ge(()=>{if(!j||s||!br(re))return;X.current="",U.current="";const oe=_n(re),je=Ys(oe);queueMicrotask(()=>{const te=P.current,le=typeof te=="function"?te(_.current||""):te;if(le===void 0||le===!1||Et(re,je))return;let ce=null;const ye=()=>(ce==null&&(ce=ne(re)),ce[0]||re);let fe;le===!0||le===null?fe=ye():fe=pu(le),fe=fe||ye();const Le=Et(re,Ys(oe));tS(fe,{preventScroll:fe===re,shouldFocus(){if(!L.current)return!1;if(Le)return!0;const pe=Ys(oe);return!(pe!==fe&&Et(re,pe))}})})},[s,j,re,ne,P,_,L]),Ge(()=>{if(s||!re)return;const oe=_n(re),je=Ys(oe),te=_.current==null;N6(je);function le(ce){if(ce.open||(X.current=Ove(ce.nativeEvent,U.current)),ce.reason===Ka&&ce.nativeEvent.type==="mouseleave"&&(F.current=!0),ce.reason===Xk)if(ce.nested)F.current=!1;else if($k(ce.nativeEvent)||ZO(ce.nativeEvent))F.current=!1;else{let ye=!1;_n(re).createElement("div").focus({get preventScroll(){return ye=!0,!1}}),ye?F.current=!1:F.current=!0}}C.on("openchange",le);function he(ce){const ye=M.current;let fe=typeof ye=="function"?ye(ce):ye;if(fe===void 0||fe===!1)return null;fe===null&&(fe=!0);const Le=S?.isConnected?S:null,pe=je?.isConnected&&Va(je)!=="body"?je:null;let xe=te?pe||Le:Le||pe;return xe||(xe=C6()||null),typeof fe=="boolean"?xe:pu(fe)||xe||null}return()=>{C.off("openchange",le);const ce=Ys(oe),ye=de(),fe=Et(N,ce)||ye.some(Se=>Se===ce||Et(Se,ce))||$&&Ld($.nodesRef.current,R(),!1).some(Se=>Et(Se.context?.elements.floating,ce)),Le=M.current,pe=X.current,xe=he(pe);queueMicrotask(()=>{const Se=Rve(xe),ge=typeof Le!="boolean";if(Le&&!F.current&&br(Se)&&(!(!ge&&Se!==ce&&ce!==oe.body)||fe)){const ue={preventScroll:!0};pe==="keyboard"&&(ue.focusVisible=!0),Se.focus(ue)}F.current=!1})}},[s,N,re,M,_,C,$,S,R,de]),Ge(()=>{if(!du||j||!N)return;const oe=Ys(_n(N));!br(oe)||!_k(oe)||Et(N,oe)&&oe.blur()},[j,N]),Ge(()=>{if(!(s||!D))return D.setFocusManagerState({modal:u,closeOnFocusOut:d,open:j,onOpenChange:k.setOpen,domReference:S}),()=>{D.setFocusManagerState(null)}},[s,D,u,j,k,d,S]),Ge(()=>{if(!(s||!re))return A6(re),()=>{queueMicrotask(NR)}},[s,re]);const ie=!s&&(u?!A:!0)&&(se||u);return r.jsxs(p.Fragment,{children:[ie&&r.jsx(Rh,{"data-type":"inside",ref:J,onFocus:oe=>{if(u){const je=ne();tS(je[je.length-1])}else D?.portalNode&&(F.current=!1,dg(oe,D.portalNode)?oR(S)?.focus():pu(g??D.beforeOutsideRef)?.focus())}}),n,ie&&r.jsx(Rh,{"data-type":"inside",ref:ee,onFocus:oe=>{u?tS(ne()[0]):D?.portalNode&&(d&&(F.current=!0),dg(oe,D.portalNode)?LU(S)?.focus():pu(m??D.afterOutsideRef)?.focus())}})]})}function Bb(e,t={}){const{enabled:n=!0,event:s="click",toggle:i=!0,ignoreMouse:o=!1,stickIfOpen:l=!0,touchOpenDelay:u=0,reason:d=xu}=t,f="rootStore"in e?e.rootStore:e,m=f.context.dataRef,g=p.useRef(void 0),v=fg(),b=fa(),y=p.useMemo(()=>{function k(S,N,C,T){const R=Nt(d,N,C);S&&T==="touch"&&u>0?b.start(u,()=>{f.setOpen(!0,R)}):f.setOpen(S,R)}function j(S,N,C){const T=m.current.openEvent,R=f.select("domReferenceElement")!==N;return S&&R||!S||!i?!0:T&&l?!C(T.type):!1}return{onPointerDown(S){g.current=$d(S.pointerType,!0)&&ZO(S.nativeEvent)?"virtual":S.pointerType},onMouseDown(S){const N=g.current,C=S.nativeEvent,T=f.select("open");if(S.button!==0||s==="click"||$d(N,!0)&&o)return;const R=j(T,S.currentTarget,P=>P==="click"||P==="mousedown"),O=Er(C);if(_k(O)){k(R,C,O,N);return}const A=S.currentTarget;v.request(()=>{k(R,C,A,N)})},onClick(S){if(s==="mousedown-only")return;const N=g.current;if(s==="mousedown"&&N){g.current=void 0;return}if($d(N,!0)&&o)return;const C=f.select("open"),T=j(C,S.currentTarget,R=>R==="click"||R==="mousedown"||R==="keydown"||R==="keyup");k(T,S.nativeEvent,S.currentTarget,N)},onKeyDown(){g.current=void 0}}},[m,s,o,d,f,l,i,v,b,u]);return p.useMemo(()=>n?{reference:y}:yr,[n,y])}function Pve(e,t){let n=null,s=null,i=!1;return{contextElement:e||void 0,getBoundingClientRect(){const o=e?.getBoundingClientRect()||{width:0,height:0,x:0,y:0},l=t.axis==="x"||t.axis==="both",u=t.axis==="y"||t.axis==="both",d=["mouseenter","mousemove"].includes(t.dataRef.current.openEvent?.type||"")&&t.pointerType!=="touch";let f=o.width,m=o.height,g=o.x,v=o.y;return n==null&&t.x&&l&&(n=o.x-t.x),s==null&&t.y&&u&&(s=o.y-t.y),g-=n||0,v-=s||0,f=0,m=0,!i||d?(f=t.axis==="y"?o.width:0,m=t.axis==="x"?o.height:0,g=l&&t.x!=null?t.x:g,v=u&&t.y!=null?t.y:v):i&&!d&&(m=t.axis==="x"?o.height:m,f=t.axis==="y"?o.width:f),i=!0,{width:f,height:m,x:g,y:v,top:v,right:g+f,bottom:v+m,left:g}}}}function E6(e){return e!=null&&e.clientX!=null}function Ive(e,t={}){const{enabled:n=!0,axis:s="both"}=t,i="rootStore"in e?e.rootStore:e,o=i.useState("open"),l=i.useState("floatingElement"),u=i.useState("domReferenceElement"),d=i.context.dataRef,f=p.useRef(!1),m=p.useRef(null),[g,v]=p.useState(),[b,y]=p.useState([]),k=qe(T=>{i.set("positionReference",T)}),j=qe((T,R,O)=>{f.current||d.current.openEvent&&!E6(d.current.openEvent)||i.set("positionReference",Pve(O??u,{x:T,y:R,axis:s,dataRef:d,pointerType:g}))}),S=qe(T=>{o?m.current||(j(T.clientX,T.clientY,T.currentTarget),y([])):j(T.clientX,T.clientY,T.currentTarget)}),N=$d(g)?l:o;p.useEffect(()=>{if(!n){k(u);return}if(!N)return;function T(){m.current?.(),m.current=null}const R=vr(l);function O(A){const P=Er(A);Et(l,P)?T():j(A.clientX,A.clientY)}return!d.current.openEvent||E6(d.current.openEvent)?m.current=kn(R,"mousemove",O):k(u),T},[N,n,l,d,u,i,j,k,b]),p.useEffect(()=>()=>{i.set("positionReference",null)},[i]),p.useEffect(()=>{n&&!l&&(f.current=!1)},[n,l]),p.useEffect(()=>{!n&&o&&(f.current=!0)},[n,o]);const C=p.useMemo(()=>{function T(R){v(R.pointerType)}return{onPointerDown:T,onPointerEnter:T,onMouseMove:S,onMouseEnter:S}},[S]);return p.useMemo(()=>n?{reference:C,trigger:C}:{},[n,C])}function Mve(){return!1}function _ve(e){return{escapeKey:typeof e=="boolean"?e:e?.escapeKey??!1,outsidePress:typeof e=="boolean"?e:e?.outsidePress??!0}}function Fb(e,t={}){const{enabled:n=!0,escapeKey:s=!0,outsidePress:i=!0,outsidePressEvent:o="sloppy",referencePress:l=Mve,bubbles:u,externalTree:d}=t,f="rootStore"in e?e.rootStore:e,m=f.useState("open"),g=f.useState("floatingElement"),{dataRef:v,events:b}=f.context,y=Ph(d),k=qe(typeof i=="function"?i:()=>!1),j=typeof i=="function"?k:i,S=j!==!1,N=qe(()=>o),{escapeKey:C,outsidePress:T}=_ve(u),R=p.useRef(!1),O=p.useRef(!1),A=p.useRef(!1),P=p.useRef(!1),M=p.useRef(!1),_=p.useRef(""),L=p.useRef(null),$=fa(),D=fa(),F=qe(()=>{D.clear(),v.current.insideReactTree=!1}),q=qe(K=>{const G=v.current.floatingContext?.nodeId;return(y?Ld(y.nodesRef.current,G):[]).some(se=>se.context?.open&&!se.context.dataRef.current[K])}),V=qe(K=>XO(K,f.select("floatingElement"))||XO(K,f.select("domReferenceElement"))),Q=qe(K=>{l()&&f.setOpen(!1,Nt(xu,K.nativeEvent))}),X=qe(K=>{if(!m||!n||!s||K.key!=="Escape"||M.current||!C&&q("__escapeKeyBubbles"))return;const G=qge(K)?K.nativeEvent:K,Y=Nt(mg,G);f.setOpen(!1,Y),Y.isCanceled||K.preventDefault(),!C&&!Y.isPropagationAllowed&&K.stopPropagation()}),U=qe(()=>{v.current.insideReactTree=!0,D.start(0,F)}),z=qe(K=>{if(!m||!n||K.button!==0)return;const G=Er(K.nativeEvent);Et(f.select("floatingElement"),G)&&(R.current||(R.current=!0,O.current=!1))}),H=qe(K=>{!m||!n||(K.defaultPrevented||K.nativeEvent.defaultPrevented)&&R.current&&(O.current=!0)});p.useEffect(()=>{function K(G){G.open||(P.current=!1)}return b.on("openchange",K),()=>{b.off("openchange",K)}},[b]),p.useEffect(()=>{if(!m||!n)return m||(P.current=!1),F;v.current.__escapeKeyBubbles=C,v.current.__outsidePressBubbles=T;const K=new Bi,G=new Bi,Y=_n(g);function se(){K.clear(),M.current=!0}function re(){K.start(du?5:0,()=>{M.current=!1})}function ne(){A.current=!0,G.start(0,()=>{A.current=!1})}function de(){R.current=!1,O.current=!1}function ie(){const be=_.current,ve=be==="pen"||!be?"mouse":be,De=N(),Ie=typeof De=="function"?De():De;return typeof Ie=="string"?Ie:Ie[ve]}function oe(be){const ve=ie();return ve==="intentional"&&be.type!=="click"||ve==="sloppy"&&be.type==="click"}function je(be){const ve=v.current.floatingContext?.nodeId,De=y&&Ld(y.nodesRef.current,ve).some(Ie=>XO(be,Ie.context?.elements.floating));return V(be)||De}function te(be){if(oe(be)){be.type!=="click"&&!V(be)&&(G.clear(),A.current=!1),F();return}if(v.current.insideReactTree){F();return}const ve=Er(be),De=`[${$b("inert")}]`,Ie=Un(ve)?ve.getRootNode():null,We=Array.from((ag(Ie)?Ie:_n(f.select("floatingElement"))).querySelectorAll(De)),nt=f.context.triggerElements;if(ve&&(nt.hasElement(ve)||nt.hasMatchingElement(Je=>Et(Je,ve))))return;let kt=Un(ve)?ve:null;for(;kt&&!Pd(kt);){const Je=Id(kt);if(Pd(Je)||!Un(Je))break;kt=Je}if(!(We.length&&Un(ve)&&!Vge(ve)&&!Et(ve,f.select("floatingElement"))&&We.every(Je=>!Et(kt,Je)))){if(br(ve)&&!("touches"in be)){const Je=Pd(ve),on=Li(ve),nn=/auto|scroll/,On=Je||nn.test(on.overflowX),Rn=Je||nn.test(on.overflowY),xt=On&&ve.clientWidth>0&&ve.scrollWidth>ve.clientWidth,sn=Rn&&ve.clientHeight>0&&ve.scrollHeight>ve.clientHeight,Ke=on.direction==="rtl",zt=sn&&(Ke?be.offsetX<=ve.offsetWidth-ve.clientWidth:be.offsetX>ve.clientWidth),ht=xt&&be.offsetY>ve.clientHeight;if(zt||ht)return}if(!je(be)){if(ie()==="intentional"){if(be.detail!==0&&!$k(be)&&!P.current)return;if(A.current){G.clear(),A.current=!1;return}}typeof j=="function"&&!j(be)||q("__outsidePressBubbles")||(f.setOpen(!1,Nt(Xk,be)),F())}}}function le(be){ie()!=="sloppy"||be.pointerType==="touch"||!f.select("open")||!n||V(be)||te(be)}function he(be){if(ie()!=="sloppy"||!f.select("open")||!n||V(be))return;const ve=be.touches[0];ve&&(L.current={startTime:Date.now(),startX:ve.clientX,startY:ve.clientY,dismissOnTouchEnd:!1,dismissOnMouseDown:!0},$.start(1e3,()=>{L.current&&(L.current.dismissOnTouchEnd=!1,L.current.dismissOnMouseDown=!1)}))}function ce(be,ve){const De=Er(be);if(!De)return;const Ie=kn(De,be.type,()=>{ve(be),Ie()})}function ye(be){_.current="touch",ce(be,he)}function fe(be){$.clear(),be.type==="pointerdown"&&(be.button===0&&(P.current=!0),_.current=be.pointerType),!(be.type==="mousedown"&&L.current&&!L.current.dismissOnMouseDown)&&ce(be,ve=>{ve.type==="pointerdown"?le(ve):te(ve)})}function Le(be){if(be.type==="pointercancel"&&(P.current=!1),!R.current)return;const ve=O.current;if(de(),ie()==="intentional"){if(be.type==="pointercancel"){ve&&ne();return}if(!je(be)){if(ve){ne();return}typeof j=="function"&&!j(be)||(G.clear(),A.current=!0,F())}}}function pe(be){if(ie()!=="sloppy"||!L.current||V(be))return;const ve=be.touches[0];if(!ve)return;const De=Math.abs(ve.clientX-L.current.startX),Ie=Math.abs(ve.clientY-L.current.startY),We=Math.sqrt(De*De+Ie*Ie);We>5&&(L.current.dismissOnTouchEnd=!0),We>10&&(te(be),$.clear(),L.current=null)}function xe(be){ce(be,pe)}function Se(be){ie()!=="sloppy"||!L.current||V(be)||(L.current.dismissOnTouchEnd&&te(be),$.clear(),L.current=null)}function ge(be){ce(be,Se)}const ue=Ol(s&&Ol(kn(Y,"keydown",X),kn(Y,"compositionstart",se),kn(Y,"compositionend",re)),S&&Ol(kn(Y,"click",fe,!0),kn(Y,"pointerdown",fe,!0),kn(Y,"pointerup",Le,!0),kn(Y,"pointercancel",Le,!0),kn(Y,"mousedown",fe,!0),kn(Y,"mouseup",Le,!0),kn(Y,"touchstart",ye,{capture:!0,passive:!0}),kn(Y,"touchmove",xe,{capture:!0,passive:!0}),kn(Y,"touchend",ge,{capture:!0,passive:!0})));return()=>{ue(),K.clear(),G.clear(),de(),A.current=!1,F()}},[v,g,s,S,j,m,n,C,T,X,F,N,q,V,y,f,$]);const J=p.useMemo(()=>({onKeyDown:X,onPointerDown:Q,onClick:Q}),[X,Q]),ee=p.useMemo(()=>({onKeyDown:X,onPointerDown:H,onMouseDown:H,onClickCapture:U,onMouseDownCapture(K){U(),z(K)},onPointerDownCapture(K){U(),z(K)},onMouseUpCapture:U,onTouchEndCapture:U,onTouchMoveCapture:U}),[X,U,z,H]);return p.useMemo(()=>n?{reference:J,floating:ee,trigger:J}:{},[n,J,ee])}function T6(e,t,n){let{reference:s,floating:i}=e;const o=Ho(t),l=tR(t),u=eR(l),d=Uo(t),f=o==="y",m=s.x+s.width/2-i.width/2,g=s.y+s.height/2-i.height/2,v=s[u]/2-i[u]/2;let b;switch(d){case"top":b={x:m,y:s.y-i.height};break;case"bottom":b={x:m,y:s.y+s.height};break;case"right":b={x:s.x+s.width,y:g};break;case"left":b={x:s.x-i.width,y:g};break;default:b={x:s.x,y:s.y}}const y=mu(t);return y&&(b[l]+=v*(y==="end"?1:-1)*(n&&f?-1:1)),b}async function Dve(e,t){var n;t===void 0&&(t={});const{x:s,y:i,platform:o,rects:l,elements:u,strategy:d}=e,{boundary:f="clippingAncestors",rootBoundary:m="viewport",elementContext:g="floating",altBoundary:v=!1,padding:b=0}=zd(t,e),y=EU(b),j=u[v?g==="floating"?"reference":"floating":g],S=Rb(await o.getClippingRect({element:(n=await(o.isElement==null?void 0:o.isElement(j)))==null||n?j:j.contextElement||await(o.getDocumentElement==null?void 0:o.getDocumentElement(u.floating)),boundary:f,rootBoundary:m,strategy:d})),N=g==="floating"?{x:s,y:i,width:l.floating.width,height:l.floating.height}:l.reference,C=await(o.getOffsetParent==null?void 0:o.getOffsetParent(u.floating)),T=await(o.isElement==null?void 0:o.isElement(C))&&await(o.getScale==null?void 0:o.getScale(C))||{x:1,y:1},R=Rb(o.convertOffsetParentRelativeRectToViewportRelativeRect?await o.convertOffsetParentRelativeRectToViewportRelativeRect({elements:u,rect:N,offsetParent:C,strategy:d}):N);return{top:(S.top-R.top+y.top)/T.y,bottom:(R.bottom-S.bottom+y.bottom)/T.y,left:(S.left-R.left+y.left)/T.x,right:(R.right-S.right+y.right)/T.x}}const Lve=50,$ve=async(e,t,n)=>{const{placement:s="bottom",strategy:i="absolute",middleware:o=[],platform:l}=n,u=l.detectOverflow?l:{...l,detectOverflow:Dve},d=await(l.isRTL==null?void 0:l.isRTL(t));let f=await l.getElementRects({reference:e,floating:t,strategy:i}),{x:m,y:g}=T6(f,s,d),v=s,b=0;const y={};for(let k=0;kF<=0)){var L,$;const F=(((L=o.flip)==null?void 0:L.index)||0)+1,q=A[F];if(q&&(!(g==="alignment"?N!==Ho(q):!1)||_.every(X=>Ho(X.placement)===N?X.overflows[0]>0:!0)))return{data:{index:F,overflows:_},reset:{placement:q}};let V=($=_.filter(Q=>Q.overflows[0]<=0).sort((Q,X)=>Q.overflows[1]-X.overflows[1])[0])==null?void 0:$.placement;if(!V)switch(b){case"bestFit":{var D;const Q=(D=_.filter(X=>{if(O){const U=Ho(X.placement);return U===N||U==="y"}return!0}).map(X=>[X.placement,X.overflows.filter(U=>U>0).reduce((U,z)=>U+z,0)]).sort((X,U)=>X[1]-U[1])[0])==null?void 0:D[0];Q&&(V=Q);break}case"initialPlacement":V=u;break}if(i!==V)return{reset:{placement:V}}}return{}}}},O6=new Set(["left","top"]);async function Bve(e,t){const{placement:n,platform:s,elements:i}=e,o=await(s.isRTL==null?void 0:s.isRTL(i.floating)),l=Uo(n),u=mu(n),d=Ho(n)==="y",f=O6.has(l)?-1:1,m=o&&d?-1:1,g=zd(t,e);let{mainAxis:v,crossAxis:b,alignmentAxis:y}=typeof g=="number"?{mainAxis:g,crossAxis:0,alignmentAxis:null}:{mainAxis:g.mainAxis||0,crossAxis:g.crossAxis||0,alignmentAxis:g.alignmentAxis};return u&&typeof y=="number"&&(b=u==="end"?y*-1:y),d?{x:b*m,y:v*f}:{x:v*f,y:b*m}}const Fve=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,s;const{x:i,y:o,placement:l,middlewareData:u}=t,d=await Bve(t,e);return l===((n=u.offset)==null?void 0:n.placement)&&(s=u.arrow)!=null&&s.alignmentOffset?{}:{x:i+d.x,y:o+d.y,data:{...d,placement:l}}}}},Uve=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:s,placement:i,platform:o}=t,{mainAxis:l=!0,crossAxis:u=!1,limiter:d={fn:N=>{let{x:C,y:T}=N;return{x:C,y:T}}},...f}=zd(e,t),m={x:n,y:s},g=await o.detectOverflow(t,f),v=Ho(i),b=JO(v);let y=m[b],k=m[v];const j=(N,C)=>NU(C+g[N==="y"?"top":"left"],C,C-g[N==="y"?"bottom":"right"]);l&&(y=j(b,y)),u&&(k=j(v,k));const S=d.fn({...t,[b]:y,[v]:k});return{...S,data:{x:S.x-n,y:S.y-s,enabled:{[b]:l,[v]:u}}}}}},Hve=function(e){return e===void 0&&(e={}),{options:e,fn(t){var n,s;const{x:i,y:o,placement:l,rects:u,middlewareData:d}=t,{offset:f=0,mainAxis:m=!0,crossAxis:g=!0}=zd(e,t),v={x:i,y:o},b=Ho(l),y=JO(b);let k=v[y],j=v[b];const S=zd(f,t),N=typeof S=="number"?{mainAxis:S,crossAxis:0}:{mainAxis:(n=S.mainAxis)!=null?n:0,crossAxis:(s=S.crossAxis)!=null?s:0};if(m){const R=y==="y"?"height":"width",O=u.reference[y]-u.floating[R]+N.mainAxis,A=u.reference[y]+u.reference[R]-N.mainAxis;kA&&(k=A)}if(g){var C,T;const R=y==="y"?"width":"height",O=O6.has(Uo(l)),A=u.reference[b]-u.floating[R]+(O&&((C=d.offset)==null?void 0:C[b])||0)+(O?0:N.crossAxis),P=u.reference[b]+u.reference[R]+(O?0:((T=d.offset)==null?void 0:T[b])||0)-(O?N.crossAxis:0);jP&&(j=P)}return{[y]:k,[b]:j}}}},Vve=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:s,platform:i,elements:o}=t,{apply:l=()=>{},...u}=zd(e,t),d=await i.detectOverflow(t,u),f=Uo(n),m=mu(n),g=Ho(n)==="y",{width:v,height:b}=s.floating;let y,k;f==="top"||f==="bottom"?(y=f,k=m===(await(i.isRTL==null?void 0:i.isRTL(o.floating))?"start":"end")?"left":"right"):(k=f,y=m==="end"?"top":"bottom");const j=b-d.top-d.bottom,S=v-d.left-d.right,N=ug(b-d[y],j),C=ug(v-d[k],S),T=t.middlewareData.shift,R=!T;let O=N,A=C;T!=null&&T.enabled.x&&(A=S),T!=null&&T.enabled.y&&(O=j),R&&!m&&(g?A=v-2*fu(d.left,d.right):O=b-2*fu(d.top,d.bottom)),await l({...t,availableWidth:A,availableHeight:O});const P=await i.getDimensions(o.floating);return v!==P.width||b!==P.height?{reset:{rects:!0}}:{}}}};function R6(e){const t=Li(e);let n=parseFloat(t.width)||0,s=parseFloat(t.height)||0;const i=br(e),o=i?e.offsetWidth:n,l=i?e.offsetHeight:s,u=zk(n)!==o||zk(s)!==l;return u&&(n=o,s=l),{width:n,height:s,$:u}}function CR(e){return Un(e)?e:e.contextElement}function vg(e){const t=CR(e);if(!br(t))return hu(1);const n=t.getBoundingClientRect(),{width:s,height:i,$:o}=R6(t);let l=(o?zk(n.width):n.width)/s,u=(o?zk(n.height):n.height)/i;return(!l||!Number.isFinite(l))&&(l=1),(!u||!Number.isFinite(u))&&(u=1),{x:l,y:u}}const Kve=hu(0);function P6(e){const t=vr(e);return!AO()||!t.visualViewport?Kve:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function qve(e,t,n){return t===void 0&&(t=!1),!!n&&t&&n===vr(e)}function Ih(e,t,n,s){t===void 0&&(t=!1),n===void 0&&(n=!1);const i=e.getBoundingClientRect(),o=CR(e);let l=hu(1);t&&(s?Un(s)&&(l=vg(s)):l=vg(e));const u=qve(o,n,s)?P6(o):hu(0);let d=(i.left+u.x)/l.x,f=(i.top+u.y)/l.y,m=i.width/l.x,g=i.height/l.y;if(o&&s){const v=vr(o),b=Un(s)?vr(s):s;let y=v,k=EO(y);for(;k&&b!==y;){const j=vg(k),S=k.getBoundingClientRect(),N=Li(k),C=S.left+(k.clientLeft+parseFloat(N.paddingLeft))*j.x,T=S.top+(k.clientTop+parseFloat(N.paddingTop))*j.y;d*=j.x,f*=j.y,m*=j.x,g*=j.y,d+=C,f+=T,y=vr(k),k=EO(y)}}return Rb({width:m,height:g,x:d,y:f})}function sS(e,t){const n=kk(e).scrollLeft;return t?t.left+n:Ih(lu(e)).left+n}function I6(e,t){const n=e.getBoundingClientRect(),s=n.left+t.scrollLeft-sS(e,n),i=n.top+t.scrollTop;return{x:s,y:i}}function Gve(e){let{elements:t,rect:n,offsetParent:s,strategy:i}=e;const o=i==="fixed",l=lu(s),u=t?wk(t.floating):!1;if(s===l||u&&o)return n;let d={scrollLeft:0,scrollTop:0},f=hu(1);const m=hu(0),g=br(s);if((g||!o)&&((Va(s)!=="body"||Cb(l))&&(d=kk(s)),g)){const b=Ih(s);f=vg(s),m.x=b.x+s.clientLeft,m.y=b.y+s.clientTop}const v=l&&!g&&!o?I6(l,d):hu(0);return{width:n.width*f.x,height:n.height*f.y,x:n.x*f.x-d.scrollLeft*f.x+m.x+v.x,y:n.y*f.y-d.scrollTop*f.y+m.y+v.y}}function Wve(e){return e.getClientRects?Array.from(e.getClientRects()):[]}function Yve(e){const t=kk(e),n=e.ownerDocument.body,s=fu(e.scrollWidth,e.clientWidth,n.scrollWidth,n.clientWidth),i=fu(e.scrollHeight,e.clientHeight,n.scrollHeight,n.clientHeight);let o=-t.scrollLeft+sS(e);const l=-t.scrollTop;return Li(n).direction==="rtl"&&(o+=fu(e.clientWidth,n.clientWidth)-s),{width:s,height:i,x:o,y:l}}const Xve=25;function Qve(e,t,n){n===void 0&&(n="viewport");const s=n==="layoutViewport",i=vr(e),o=lu(e),l=i.visualViewport;let u=o.clientWidth,d=o.clientHeight,f=0,m=0;if(l){const v=!AO()||t==="fixed";s?v||(f=-l.offsetLeft,m=-l.offsetTop):(u=l.width,d=l.height,v&&(f=l.offsetLeft,m=l.offsetTop))}if(sS(o)<=0){const v=o.ownerDocument,b=v.body,y=getComputedStyle(b),k=v.compatMode==="CSS1Compat"&&parseFloat(y.marginLeft)+parseFloat(y.marginRight)||0,j=Math.abs(o.clientWidth-b.clientWidth-k),S=getComputedStyle(o).scrollbarGutter==="stable both-edges"?j/2:j;S<=Xve&&(u-=S)}return{width:u,height:d,x:f,y:m}}function Zve(e,t){const n=Ih(e,!0,t==="fixed"),s=n.top+e.clientTop,i=n.left+e.clientLeft,o=vg(e),l=e.clientWidth*o.x,u=e.clientHeight*o.y,d=i*o.x,f=s*o.y;return{width:l,height:u,x:d,y:f}}function M6(e,t,n){let s;if(t==="viewport"||t==="layoutViewport")s=Qve(e,n,t);else if(t==="document")s=Yve(lu(e));else if(Un(t))s=Zve(t,n);else{const i=P6(e);s={x:t.x-i.x,y:t.y-i.y,width:t.width,height:t.height}}return Rb(s)}function Jve(e,t){const n=t.get(e);if(n)return n;let s=ig(e,[],!1).filter(u=>Un(u)&&Va(u)!=="body"),i=null;const o=Li(e).position==="fixed";let l=o?Id(e):e;for(;Un(l)&&!Pd(l);){const u=Li(l),d=CO(l),f=i?i.position:o?"fixed":"";!d&&(f==="fixed"||f==="absolute"&&u.position==="static")?s=s.filter(g=>g!==l):i=u,l=Id(l)}return t.set(e,s),s}function ebe(e){let{element:t,boundary:n,rootBoundary:s,strategy:i}=e;const l=[...n==="clippingAncestors"?wk(t)?[]:Jve(t,this._c):[].concat(n),s],u=M6(t,l[0],i);let d=u.top,f=u.right,m=u.bottom,g=u.left;for(let v=1;v{u(!1,1e-7)},1e3)}A=!1}try{s=new IntersectionObserver(P,{...O,root:o.ownerDocument})}catch{s=new IntersectionObserver(P,O)}s.observe(e)}const d=vr(e),f=()=>u(n);return d.addEventListener("resize",f),u(!0),()=>{d.removeEventListener("resize",f),l()}}function z6(e,t,n,s){s===void 0&&(s={});const{ancestorScroll:i=!0,ancestorResize:o=!0,elementResize:l=typeof ResizeObserver=="function",layoutShift:u=typeof IntersectionObserver=="function",animationFrame:d=!1}=s,f=CR(e),m=i||o?[...f?ig(f):[],...t?ig(t):[]]:[];m.forEach(S=>{i&&S.addEventListener("scroll",n),o&&S.addEventListener("resize",n)});const g=f&&u?abe(f,n,o):null;let v=-1,b=null;l&&(b=new ResizeObserver(S=>{let[N]=S;N&&N.target===f&&b&&t&&(b.unobserve(t),cancelAnimationFrame(v),v=requestAnimationFrame(()=>{var C;(C=b)==null||C.observe(t)})),n()}),f&&!d&&b.observe(f),t&&b.observe(t));let y,k=d?Ih(e):null;d&&j();function j(){const S=Ih(e);k&&!$6(k,S)&&n(),k=S,y=requestAnimationFrame(j)}return n(),()=>{var S;m.forEach(N=>{i&&N.removeEventListener("scroll",n),o&&N.removeEventListener("resize",n)}),g?.(),(S=b)==null||S.disconnect(),b=null,d&&cancelAnimationFrame(y)}}const ibe=Fve,obe=Uve,lbe=zve,cbe=Vve,ube=Hve,dbe=(e,t,n)=>{const s=new Map,i=n??{},o={...L6,...i.platform,_c:s};return $ve(e,t,{...i,platform:o})};var fbe=typeof document<"u",hbe=function(){},aS=fbe?p.useLayoutEffect:hbe;function iS(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let n,s,i;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(s=n;s--!==0;)if(!iS(e[s],t[s]))return!1;return!0}if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(s=n;s--!==0;)if(!{}.hasOwnProperty.call(t,i[s]))return!1;for(s=n;s--!==0;){const o=i[s];if(!(o==="_owner"&&e.$$typeof)&&!iS(e[o],t[o]))return!1}return!0}return e!==e&&t!==t}function B6(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function F6(e,t){const n=B6(e);return Math.round(t*n)/n}function ER(e){const t=p.useRef(e);return aS(()=>{t.current=e}),t}function mbe(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:s=[],platform:i,elements:{reference:o,floating:l}={},transform:u=!0,whileElementsMounted:d,open:f}=e,[m,g]=p.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[v,b]=p.useState(s);iS(v,s)||b(s);const[y,k]=p.useState(null),[j,S]=p.useState(null),N=p.useCallback(X=>{X!==O.current&&(O.current=X,k(X))},[]),C=p.useCallback(X=>{X!==A.current&&(A.current=X,S(X))},[]),T=o||y,R=l||j,O=p.useRef(null),A=p.useRef(null),P=p.useRef(m),M=d!=null,_=ER(d),L=ER(i),$=ER(f),D=p.useCallback(()=>{if(!O.current||!A.current)return;const X={placement:t,strategy:n,middleware:v};L.current&&(X.platform=L.current),dbe(O.current,A.current,X).then(U=>{const z={...U,isPositioned:$.current!==!1};F.current&&!iS(P.current,z)&&(P.current=z,xr.flushSync(()=>{g(z)}))})},[v,t,n,L,$]);aS(()=>{f===!1&&P.current.isPositioned&&(P.current.isPositioned=!1,g(X=>({...X,isPositioned:!1})))},[f]);const F=p.useRef(!1);aS(()=>(F.current=!0,()=>{F.current=!1}),[]),aS(()=>{if(T&&(O.current=T),R&&(A.current=R),T&&R){if(_.current)return _.current(T,R,D);D()}},[T,R,D,_,M]);const q=p.useMemo(()=>({reference:O,floating:A,setReference:N,setFloating:C}),[N,C]),V=p.useMemo(()=>({reference:T,floating:R}),[T,R]),Q=p.useMemo(()=>{const X={position:n,left:0,top:0};if(!V.floating)return X;const U=F6(V.floating,m.x),z=F6(V.floating,m.y);return u?{...X,transform:"translate("+U+"px, "+z+"px)",...B6(V.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:U,top:z}},[n,u,V.floating,m.x,m.y]);return p.useMemo(()=>({...m,update:D,refs:q,elements:V,floatingStyles:Q}),[m,D,q,V,Q])}const pbe=(e,t)=>{const n=ibe(e);return{name:n.name,fn:n.fn,options:[e,t]}},gbe=(e,t)=>{const n=obe(e);return{name:n.name,fn:n.fn,options:[e,t]}},xbe=(e,t)=>({fn:ube(e).fn,options:[e,t]}),vbe=(e,t)=>{const n=lbe(e);return{name:n.name,fn:n.fn,options:[e,t]}},bbe=(e,t)=>{const n=cbe(e);return{name:n.name,fn:n.fn,options:[e,t]}};var TR={exports:{}},OR={};var U6;function ybe(){if(U6)return OR;U6=1;var e=sg();function t(g,v){return g===v&&(g!==0||1/g===1/v)||g!==g&&v!==v}var n=typeof Object.is=="function"?Object.is:t,s=e.useState,i=e.useEffect,o=e.useLayoutEffect,l=e.useDebugValue;function u(g,v){var b=v(),y=s({inst:{value:b,getSnapshot:v}}),k=y[0].inst,j=y[1];return o(function(){k.value=b,k.getSnapshot=v,d(k)&&j({inst:k})},[g,b,v]),i(function(){return d(k)&&j({inst:k}),g(function(){d(k)&&j({inst:k})})},[g]),l(b),b}function d(g){var v=g.getSnapshot;g=g.value;try{var b=v();return!n(g,b)}catch{return!0}}function f(g,v){return v()}var m=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?f:u;return OR.useSyncExternalStore=e.useSyncExternalStore!==void 0?e.useSyncExternalStore:m,OR}var H6;function V6(){return H6||(H6=1,TR.exports=ybe()),TR.exports}var RR=V6(),PR={exports:{}},IR={};var K6;function jbe(){if(K6)return IR;K6=1;var e=sg(),t=V6();function n(f,m){return f===m&&(f!==0||1/f===1/m)||f!==f&&m!==m}var s=typeof Object.is=="function"?Object.is:n,i=t.useSyncExternalStore,o=e.useRef,l=e.useEffect,u=e.useMemo,d=e.useDebugValue;return IR.useSyncExternalStoreWithSelector=function(f,m,g,v,b){var y=o(null);if(y.current===null){var k={hasValue:!1,value:null};y.current=k}else k=y.current;y=u(function(){function S(O){if(!N){if(N=!0,C=O,O=v(O),b!==void 0&&k.hasValue){var A=k.value;if(b(A,O))return T=A}return T=O}if(A=T,s(C,O))return A;var P=v(O);return b!==void 0&&b(A,P)?(C=O,A):(C=O,T=P)}var N=!1,C,T,R=g===void 0?null:g;return[function(){return S(m())},R===null?void 0:function(){return S(R())}]},[m,g,v,b]);var j=i(f,y[0],y[1]);return l(function(){k.hasValue=!0,k.value=j},[j]),d(j),j},IR}var q6;function wbe(){return q6||(q6=1,PR.exports=jbe()),PR.exports}var G6=wbe();const kbe=_O(19)?Nbe:Cbe;function W6(e,t,n,s,i){return kbe(e,t,n,s,i)}function Sbe(e,t,n,s,i){const o=p.useCallback(()=>t(e.getSnapshot(),n,s,i),[e,t,n,s,i]);return RR.useSyncExternalStore(e.subscribe,o,o)}lve({before(e){e.syncIndex=0,e.didInitialize||(e.syncTick=1,e.syncHooks=[],e.didChangeStore=!0,e.getSnapshot=()=>{let t=!1;for(let n=0;n0&&(e.didChangeStore&&(e.didChangeStore=!1,e.subscribe=t=>{const n=new Set;for(const i of e.syncHooks)n.add(i.store);const s=[];for(const i of n)s.push(i.subscribe(t));return()=>{for(const i of s)i()}}),RR.useSyncExternalStore(e.subscribe,e.getSnapshot,e.getSnapshot))}});function Nbe(e,t,n,s,i){const o=ove();if(!o)return Sbe(e,t,n,s,i);const l=o.syncIndex;o.syncIndex+=1;let u;return o.didInitialize?(u=o.syncHooks[l],(u.store!==e||u.selector!==t||!Object.is(u.a1,n)||!Object.is(u.a2,s)||!Object.is(u.a3,i))&&(u.store!==e&&(o.didChangeStore=!0),u.store=e,u.selector=t,u.a1=n,u.a2=s,u.a3=i,u.value=t(e.getSnapshot(),n,s,i))):(u={store:e,selector:t,a1:n,a2:s,a3:i,value:t(e.getSnapshot(),n,s,i)},o.syncHooks.push(u)),u.value}function Cbe(e,t,n,s,i){return G6.useSyncExternalStoreWithSelector(e.subscribe,e.getSnapshot,e.getSnapshot,o=>t(o,n,s,i))}class Abe{constructor(t){Cn(this,"subscribe",t=>(this.listeners.add(t),()=>{this.listeners.delete(t)}));Cn(this,"getSnapshot",()=>this.state);this.state=t,this.listeners=new Set,this.updateTick=0}static create(t){return new this(t)}setState(t){if(this.state===t)return;this.state=t,this.updateTick+=1;const n=this.updateTick;for(const s of this.listeners){if(n!==this.updateTick)return;s(t)}}update(t){for(const n in t)if(!Object.is(this.state[n],t[n])){this.setState({...this.state,...t});return}}set(t,n){Object.is(this.state[t],n)||this.setState({...this.state,[t]:n})}notifyAll(){const t={...this.state};this.setState(t)}use(t,n,s,i){return W6(this,t,n,s,i)}}class Mh extends Abe{constructor(t,n={},s){super(t),this.context=n,this.selectors=s}useSyncedValue(t,n){p.useDebugValue(t);const s=this;Ge(()=>{s.state[t]!==n&&s.set(t,n)},[s,t,n])}useSyncedValueWithCleanup(t,n){const s=this;Ge(()=>(s.state[t]!==n&&s.set(t,n),()=>{s.set(t,void 0)}),[s,t,n])}useSyncedValues(t){const n=this,s=Object.values(t);Ge(()=>{n.update(t)},[n,...s])}useControlledProp(t,n){p.useDebugValue(t);const s=this,i=n!==void 0;Ge(()=>{i&&!Object.is(s.state[t],n)&&s.setState({...s.state,[t]:n})},[s,t,n,i])}select(t,n,s,i){const o=this.selectors[t];return o(this.state,n,s,i)}useState(t,n,s,i){return p.useDebugValue(t),W6(this,this.selectors[t],n,s,i)}useContextCallback(t,n){p.useDebugValue(t);const s=qe(n??Qn);this.context[t]=s}useStateSetter(t){const n=p.useRef(void 0);return n.current===void 0&&(n.current=s=>{this.set(t,s)}),n.current}observe(t,n){let s;typeof t=="function"?s=t:s=this.selectors[t];let i=s(this.state);return n(i,i,this),this.subscribe(o=>{const l=s(o);if(!Object.is(i,l)){const u=i;i=l,n(l,u,this)}})}}const Ebe={open:e=>e.open,transitionStatus:e=>e.transitionStatus,domReferenceElement:e=>e.domReferenceElement,referenceElement:e=>e.positionReference??e.referenceElement,floatingElement:e=>e.floatingElement,floatingId:e=>e.floatingId};class MR extends Mh{constructor(n){const{syncOnly:s,nested:i,onOpenChange:o,triggerElements:l,...u}=n;super({...u,positionReference:u.referenceElement,domReferenceElement:u.referenceElement},{onOpenChange:o,dataRef:{current:{}},events:j6(),nested:i,triggerElements:l},Ebe);Cn(this,"syncOpenEvent",(n,s)=>{(!n||!this.state.open||s!=null&&Gge(s))&&(this.context.dataRef.current.openEvent=n?s:void 0)});Cn(this,"dispatchOpenChange",(n,s)=>{this.syncOpenEvent(n,s.event);const i={open:n,reason:s.reason,nativeEvent:s.event,nested:this.context.nested,triggerElement:s.trigger};this.context.events.emit("openchange",i)});Cn(this,"setOpen",(n,s)=>{if(this.syncOnly){this.context.onOpenChange?.(n,s);return}this.dispatchOpenChange(n,s),this.context.onOpenChange?.(n,s)});this.syncOnly=s}}function Tbe(e){const{popupStore:t,treatPopupAsFloatingElement:n=!1,floatingRootContext:s,floatingId:i,nested:o,onOpenChange:l}=e,u=t.useState("open"),d=t.useState("activeTriggerElement"),f=t.useState(n?"popupElement":"positionerElement"),m=t.context.triggerElements,g=l,v=p.useRef(null);s===void 0&&v.current===null&&(v.current=new MR({open:u,transitionStatus:void 0,referenceElement:d,floatingElement:f,triggerElements:m,onOpenChange:g,floatingId:i,syncOnly:!0,nested:o}));const b=s??v.current;return t.useSyncedValue("floatingId",i),Ge(()=>{const y={open:u,floatingId:i,referenceElement:d,floatingElement:f};Un(d)&&(y.domReferenceElement=d),b.state.positionReference===b.state.referenceElement&&(y.positionReference=d),b.update(y)},[u,i,d,f,b]),b.context.onOpenChange=g,b.context.nested=o,b}const Ub={tabIndex:-1,[VO]:""};function Y6(e){return t=>t==="touch"?e.current:!0}function _R(e,t=!1){const n=lg(),s=xg()!=null,i=$s(()=>e(n,s)).current;return Tbe({popupStore:i,treatPopupAsFloatingElement:t,floatingRootContext:i.state.floatingRootContext,floatingId:n,nested:s,onOpenChange:i.setOpen}),i}function DR({handle:e,store:t}){return Ge(()=>e.attachStore(t),[e,t]),null}function X6(e){const t=e.context.triggerElements.size;e.select("open")&&e.state.triggerCount!==t&&e.set("triggerCount",t)}function Obe(e,t){const n=p.useRef(null);return qe(s=>{const i=n.current;if(i!==null){if(i.element===s&&i.store===t&&i.id===e)return;n.current=null;const o=i.store;o.context.triggerElements.getById(i.id)===i.element&&(o.context.triggerElements.delete(i.id),X6(o))}s!==null&&e!==void 0&&(n.current={store:t,id:e,element:s},t.context.triggerElements.add(e,s),X6(t))})}function LR(e,t,n,s=!1){let i=e.preventUnmountingOnClose;t?i=!1:s&&(i=!0);const o=n?.id??null;let l=e.activeTriggerId,u=e.activeTriggerElement;return(o||t)&&(l=o,u=n??null),{open:t,preventUnmountingOnClose:i,activeTriggerId:l,activeTriggerElement:u}}function Q6(e){let t=!1;return e.preventUnmountOnClose=()=>{t=!0},()=>t}function Rbe(e,t,n,s={}){const i=n.reason,o=i===Ka,l=t&&i===Yk,u=!t&&(i===xu||i===mg),d=Q6(n);if(e.context.onOpenChange?.(t,n),n.isCanceled)return;s.onBeforeDispatch?.(),e.state.floatingRootContext.dispatchOpenChange(t,n);const f=()=>{const m=LR(e.state,t,n.trigger,d()),g={...s.extraState,...m};l?g.instantType="focus":u?g.instantType="dismiss":o&&(g.instantType=void 0),e.update(g)};o?xr.flushSync(f):f()}function $R(e,t,n,s){const i=n.useState("isMountedByTrigger",e),o=Obe(e,n),l=qe(d=>{const f=n.select("open"),m=n.select("activeTriggerId");if(m===e){const g={activeTriggerElement:d,...f?s:null};n.update(g);return}if(m==null&&f){const g={activeTriggerId:e??null,activeTriggerElement:d,...s};n.update(g)}}),u=qe(d=>{o(d),d&&l(d)});return Ge(()=>(u(t.current),()=>u(null)),[u,t,n,e]),Ge(()=>{if(i){const d={activeTriggerElement:t.current,...s};n.update(d)}},[i,n,t,...Object.values(s)]),{registerTrigger:u,isMountedByThisTrigger:i}}function zR(e,t={}){const{closeOnActiveTriggerUnmount:n=!1}=t,s=p.useRef(null),i=e.useState("open"),o=e.useState("triggerCount"),l=e.useState("activeTriggerId"),u=e.useState("activeTriggerElement");Ge(()=>{if(!i){s.current=null,e.state.triggerCount!==0&&e.set("triggerCount",0);return}const d=e.context.triggerElements.size,f={};e.state.triggerCount!==d&&(f.triggerCount=d);const m=e.select("activeTriggerId");let g=null;if(m){const v=e.context.triggerElements.getById(m);if(v)s.current=m,v!==e.state.activeTriggerElement&&(f.activeTriggerElement=v);else{for(const[b,y]of e.context.triggerElements.entries())if(y===e.state.activeTriggerElement){f.activeTriggerId=b,f.activeTriggerElement=y,s.current=b;break}f.activeTriggerId===void 0&&(s.current===m?g=m:s.current=null)}}else s.current=null;if(!g&&!m&&d===1){const v=e.context.triggerElements.entries().next();if(!v.done){const[b,y]=v.value;f.activeTriggerId=b,f.activeTriggerElement=y,s.current=b}}(f.triggerCount!==void 0||f.activeTriggerId!==void 0||f.activeTriggerElement!==void 0)&&e.update(f),g&&n&&queueMicrotask(()=>{if(e.select("open")&&e.select("activeTriggerId")===g&&!e.context.triggerElements.getById(g)){const v=Nt(rs);e.setOpen(!1,v),v.isCanceled||e.update({activeTriggerId:null,activeTriggerElement:null})}})},[i,e,o,l,u,n])}function BR(e,t,n,s){const{mounted:i,setMounted:o,transitionStatus:l}=gu(e,!1,!1,s),u=t.useState("preventUnmountingOnClose"),d=e?!1:u;t.useSyncedValues({mounted:i,transitionStatus:l,preventUnmountingOnClose:d});const f=qe(()=>{o(!1),t.update({activeTriggerId:null,activeTriggerElement:null,mounted:!1,preventUnmountingOnClose:!1}),n?.(),t.context.onOpenChangeComplete?.(!1)});return ji({enabled:i&&!e&&!d,open:e,ref:t.context.popupRef,onComplete(){e||f()}}),{forceUnmount:f,transitionStatus:l}}function FR(e,t){e.useSyncedValues(t),Ge(()=>()=>{e.update({activeTriggerProps:yr,inactiveTriggerProps:yr,popupProps:yr})},[e])}function Z6(e,t){Ge(()=>{!t&&e.state.openMethod!==null&&e.set("openMethod",null)},[t,e]),Ge(()=>()=>{e.state.openMethod!==null&&e.set("openMethod",null)},[e])}class oS{constructor(){this.idMap=new Map}add(t,n){this.idMap.set(t,n)}delete(t){this.idMap.delete(t)}hasElement(t){for(const n of this.idMap.values())if(n===t)return!0;return!1}hasMatchingElement(t){for(const n of this.idMap.values())if(t(n))return!0;return!1}getById(t){return this.idMap.get(t)}entries(){return this.idMap.entries()}elements(){return this.idMap.values()}get size(){return this.idMap.size}}function UR(e,t,n=!1){return{open:!1,openProp:void 0,mounted:!1,transitionStatus:void 0,floatingRootContext:new MR({open:!1,transitionStatus:void 0,floatingElement:null,referenceElement:null,triggerElements:e,floatingId:t,syncOnly:!0,nested:n,onOpenChange:void 0}),floatingId:t,triggerCount:0,preventUnmountingOnClose:!1,payload:void 0,activeTriggerId:null,activeTriggerElement:null,triggerIdProp:void 0,popupElement:null,positionerElement:null,activeTriggerProps:yr,inactiveTriggerProps:yr,popupProps:yr}}const Hb=e=>e.triggerIdProp??e.activeTriggerId,HR=e=>e.openProp??e.open,J6=e=>(e.popupElement?.id??e.floatingId)||void 0;function eH(e,t){return t!==void 0&&HR(e)&&Hb(e)===t}function Pbe(e,t){return eH(e,t)?!0:t!==void 0&&HR(e)&&Hb(e)==null&&e.triggerCount===1}const VR={open:HR,mounted:e=>e.mounted,transitionStatus:e=>e.transitionStatus,floatingRootContext:e=>e.floatingRootContext,triggerCount:e=>e.triggerCount,preventUnmountingOnClose:e=>e.preventUnmountingOnClose,payload:e=>e.payload,activeTriggerId:Hb,activeTriggerElement:e=>e.mounted?e.activeTriggerElement:null,popupId:J6,isTriggerActive:(e,t)=>t!==void 0&&Hb(e)===t,isOpenedByTrigger:(e,t)=>eH(e,t),isMountedByTrigger:(e,t)=>t!==void 0&&Hb(e)===t&&e.mounted,triggerProps:(e,t)=>t?e.activeTriggerProps:e.inactiveTriggerProps,triggerPopupId:(e,t)=>Pbe(e,t)?J6(e):void 0,popupProps:e=>e.popupProps,popupElement:e=>e.popupElement,positionerElement:e=>e.positionerElement};function KR(e){const t=p.useCallback(s=>e===void 0?Qn:e.subscribeStore(s),[e]),n=p.useCallback(()=>e===void 0?void 0:e.store,[e]);return RR.useSyncExternalStore(t,n,()=>e?.serverStore)}function tH(e){const{open:t=!1,onOpenChange:n,elements:s={}}=e,i=lg(),o=xg()!=null,l=$s(()=>new MR({open:t,transitionStatus:void 0,onOpenChange:n,referenceElement:s.reference??null,floatingElement:s.floating??null,triggerElements:new oS,floatingId:i,syncOnly:!1,nested:o})).current;return Ge(()=>{const u={open:t,floatingId:i};s.reference!==void 0&&(u.referenceElement=s.reference,u.domReferenceElement=Un(s.reference)?s.reference:null),s.floating!==void 0&&(u.floatingElement=s.floating),l.update(u)},[t,i,s.reference,s.floating,l]),l.context.onOpenChange=n,l.context.nested=o,l}function Ibe(e){return Mbe(e,e.rootContext)}function Mbe(e,t){const{nodeId:n,externalTree:s}=e,i=t.useState("referenceElement"),o=t.useState("floatingElement"),l=t.useState("domReferenceElement"),u=t.useState("open"),d=t.useState("floatingId"),[f,m]=p.useState(null),[g,v]=p.useState(void 0),[b,y]=p.useState(void 0),k=p.useRef(null),j=Ph(s),S=p.useMemo(()=>({reference:i,floating:o,domReference:l}),[i,o,l]),N=mbe({...e,elements:{...S,...f&&{reference:f}}}),C=Un(g)?g:null,T=b===void 0?t.state.floatingElement:b;t.useSyncedValue("referenceElement",g??null),t.useSyncedValue("domReferenceElement",g===void 0?l:C),t.useSyncedValue("floatingElement",T);const R=p.useCallback(L=>{const $=Un(L)?{getBoundingClientRect:()=>L.getBoundingClientRect(),getClientRects:()=>L.getClientRects(),contextElement:L}:L;m($),N.refs.setReference($)},[N.refs]),O=p.useCallback(L=>{(Un(L)||L===null)&&(k.current=L,v(L)),(Un(N.refs.reference.current)||N.refs.reference.current===null||L!==null&&!Un(L))&&N.refs.setReference(L)},[N.refs,v]),A=p.useCallback(L=>{y(L),N.refs.setFloating(L)},[N.refs]),P=p.useMemo(()=>({...N.refs,setReference:O,setFloating:A,setPositionReference:R,domReference:k}),[N.refs,O,A,R]),M=p.useMemo(()=>({...N.elements,domReference:l}),[N.elements,l]),_=p.useMemo(()=>({...N,dataRef:t.context.dataRef,open:u,onOpenChange:t.setOpen,events:t.context.events,floatingId:d,refs:P,elements:M,nodeId:n,rootStore:t}),[N,P,M,n,t,u,d]);return Ge(()=>{l&&(k.current=l)},[l]),Ge(()=>{t.context.dataRef.current.floatingContext=_;const L=j?.nodesRef.current.find($=>$.id===n);L&&(L.context=_)}),p.useMemo(()=>({...N,context:_,refs:P,elements:M,rootStore:t}),[N,P,M,_,t])}const qR=yU&&du;function _be(e,t={}){const{enabled:n=!0,delay:s}=t,i="rootStore"in e?e.rootStore:e,{events:o,dataRef:l}=i.context,u=p.useRef(!1),d=p.useRef(null),f=p.useRef(!0),m=fa();p.useEffect(()=>{const v=i.select("domReferenceElement");if(!n)return;const b=vr(v);function y(){const S=i.select("domReferenceElement");!i.select("open")&&br(S)&&S===Ys(_n(S))&&(u.current=!0,d.current=S)}function k(){f.current=!0}function j(){f.current=!1}return Ol(kn(b,"blur",y),qR&&kn(b,"keydown",k,!0),qR&&kn(b,"pointerdown",j,!0))},[i,n]),p.useEffect(()=>{if(!n)return;function v(b){if(b.reason===xu||b.reason===mg){const y=i.select("domReferenceElement");Un(y)&&(d.current=y,u.current=!0)}}return o.on("openchange",v),()=>{o.off("openchange",v)}},[o,n,i]);const g=p.useMemo(()=>{function v(){u.current=!1,d.current=null}return{onMouseLeave(){v()},onFocus(b){const y=b.currentTarget;if(u.current){if(d.current===y)return;v()}const k=Er(b.nativeEvent);if(Un(k)){if(qR&&!b.relatedTarget){if(!f.current&&!_k(k))return}else if(!Dk(k))return}const j=Mk(b.relatedTarget,i.context.triggerElements),{nativeEvent:S,currentTarget:N}=b,C=typeof s=="function"?s():s;if(i.select("open")&&j||C===0||C===void 0){i.setOpen(!0,Nt(Yk,S,N));return}m.start(C,()=>{u.current||i.setOpen(!0,Nt(Yk,S,N))})},onBlur(b){v();const y=b.relatedTarget,k=b.nativeEvent,j=Un(y)&&y.hasAttribute($b("focus-guard"))&&y.getAttribute("data-type")==="outside";m.start(0,()=>{const S=i.select("domReferenceElement"),N=Ys(_n(S));!y&&N===S||Et(l.current.floatingContext?.refs.floating.current,N)||Et(S,N)||j||Mk(y??N,i.context.triggerElements)||i.setOpen(!1,Nt(Yk,k))})}}},[l,s,i,m]);return p.useMemo(()=>n?{reference:g,trigger:g}:{},[n,g])}class GR{constructor(){Cn(this,"dispose",()=>{this.openChangeTimeout.clear(),this.restTimeout.clear()});Cn(this,"disposeEffect",()=>this.dispose);this.pointerType=void 0,this.interactedInside=!1,this.handler=void 0,this.blockMouseMove=!0,this.performedPointerEventsMutation=!1,this.pointerEventsScopeElement=null,this.pointerEventsReferenceElement=null,this.pointerEventsFloatingElement=null,this.restTimeoutPending=!1,this.openChangeTimeout=new Bi,this.restTimeout=new Bi,this.handleCloseOptions=void 0}static create(){return new GR}}const lS=new WeakMap;function cS(e){if(!e.performedPointerEventsMutation)return;const t=e.pointerEventsScopeElement;t&&lS.get(t)===e&&(e.pointerEventsScopeElement?.style.removeProperty("pointer-events"),e.pointerEventsReferenceElement?.style.removeProperty("pointer-events"),e.pointerEventsFloatingElement?.style.removeProperty("pointer-events"),lS.delete(t)),e.performedPointerEventsMutation=!1,e.pointerEventsScopeElement=null,e.pointerEventsReferenceElement=null,e.pointerEventsFloatingElement=null}function nH(e,t){const{scopeElement:n,referenceElement:s,floatingElement:i}=t,o=lS.get(n);o&&o!==e&&cS(o),cS(e),e.performedPointerEventsMutation=!0,e.pointerEventsScopeElement=n,e.pointerEventsReferenceElement=s,e.pointerEventsFloatingElement=i,lS.set(n,e),n.style.pointerEvents="none",s.style.pointerEvents="auto",i.style.pointerEvents="auto"}function WR(e){const t=e.context.dataRef.current,n=$s(()=>t.hoverInteractionState??GR.create()).current;return t.hoverInteractionState||(t.hoverInteractionState=n),Vk(t.hoverInteractionState.disposeEffect),t.hoverInteractionState}function rH(e,t={}){const{enabled:n=!0,closeDelay:s=0,nodeId:i}=t,o="rootStore"in e?e.rootStore:e,l=o.useState("open"),u=o.useState("floatingElement"),d=o.useState("domReferenceElement"),{dataRef:f}=o.context,m=Ph(),g=xg(),v=WR(o),b=fa(),y=qe(()=>l6(f.current.openEvent?.type,v.interactedInside)),k=qe(()=>dve(f.current.openEvent?.type)),j=qe(()=>{cS(v)});Ge(()=>{l||(v.pointerType=void 0,v.restTimeoutPending=!1,v.interactedInside=!1,j())},[l,v,j]),p.useEffect(()=>j,[j]),Ge(()=>{if(n&&l&&v.handleCloseOptions?.blockPointerEvents&&k()&&Un(d)&&u){const S=d,N=u,C=_n(u),T=m?.nodesRef.current.find(P=>P.id===g)?.context?.elements.floating;T&&(T.style.pointerEvents="");const R=v.pointerEventsScopeElement!==N?v.pointerEventsScopeElement:null,O=T!==N?T:null,A=v.handleCloseOptions?.getScope?.()??R??O??S.closest("[data-rootownerid]")??C.body;return nH(v,{scopeElement:A,referenceElement:S,floatingElement:N}),()=>{j()}}},[n,l,d,u,v,k,m,g,j]),p.useEffect(()=>{if(!n)return;function S(){return!!(m&&g&&Ld(m.nodesRef.current,g).length>0)}function N(P){const M=Oh(s,"close",v.pointerType),_=()=>{o.setOpen(!1,Nt(Ka,P)),m?.events.emit("floating.closed",P)};M?v.openChangeTimeout.start(M,_):(v.openChangeTimeout.clear(),_())}function C(P){const M=Er(P);if(!Kge(M)){v.interactedInside=!1;return}v.interactedInside=M?.closest("[aria-haspopup]")!=null}function T(){v.openChangeTimeout.clear(),b.clear(),m?.events.off("floating.closed",O),j()}function R(P){if(S()&&m){m.events.on("floating.closed",O);return}if(Mk(P.relatedTarget,o.context.triggerElements))return;const M=f.current.floatingContext?.nodeId??i,_=P.relatedTarget;if(!(m&&M&&Un(_)&&Ld(m.nodesRef.current,M,!1).some($=>Et($.context?.elements.floating,_)))){if(v.handler){v.handler(P);return}j(),k()&&!y()&&N(P)}}function O(P){!m||!g||S()||b.start(0,()=>{m.events.off("floating.closed",O),o.setOpen(!1,Nt(Ka,P)),m.events.emit("floating.closed",P)})}const A=u;return Ol(A&&kn(A,"mouseenter",T),A&&kn(A,"mouseleave",R),A&&kn(A,"pointerdown",C,!0),()=>{m?.events.off("floating.closed",O)})},[n,u,o,f,s,i,k,y,j,v,m,g,b])}const Dbe={current:null};function sH(e,t={}){const{enabled:n=!0,delay:s=0,handleClose:i=null,mouseOnly:o=!1,restMs:l=0,move:u=!0,triggerElementRef:d=Dbe,externalTree:f,isActiveTrigger:m=!0,getHandleCloseContext:g,isClosing:v,shouldOpen:b,guardStaleOpen:y=!1}=t,k="rootStore"in e?e.rootStore:e,{dataRef:j,events:S}=k.context,N=Ph(f),C=WR(k),T=p.useRef(!1),R=ss(i),O=ss(s),A=ss(l),P=ss(n),M=ss(b),_=ss(v),L=qe(()=>l6(j.current.openEvent?.type,C.interactedInside)),$=qe(()=>M.current?.()!==!1),D=qe((V,Q,X)=>{const U=k.context.triggerElements;if(U.hasElement(Q))return!V||!Et(V,Q);if(!Un(X))return!1;const z=X;return U.hasMatchingElement(H=>Et(H,z))&&(!V||!Et(V,z))}),F=qe(()=>{if(!C.handler)return;_n(k.select("domReferenceElement")).removeEventListener("mousemove",C.handler),C.handler=void 0}),q=qe(()=>{cS(C)});return m&&(C.handleCloseOptions=i?.__options),p.useEffect(()=>F,[F]),p.useEffect(()=>{if(!n)return;function V(Q){Q.open?T.current=!1:(T.current=Q.reason===Ka,F(),C.openChangeTimeout.clear(),C.restTimeout.clear(),C.blockMouseMove=!0,C.restTimeoutPending=!1)}return S.on("openchange",V),()=>{S.off("openchange",V)}},[n,S,C,F]),p.useEffect(()=>{if(!n)return;function V(J,ee=!0){const K=Oh(O.current,"close",C.pointerType);K?C.openChangeTimeout.start(K,()=>{k.setOpen(!1,Nt(Ka,J)),N?.events.emit("floating.closed",J)}):ee&&(C.openChangeTimeout.clear(),k.setOpen(!1,Nt(Ka,J)),N?.events.emit("floating.closed",J))}const Q=d.current??(m?k.select("domReferenceElement"):null);if(!Un(Q))return;function X(J){if(C.openChangeTimeout.clear(),C.blockMouseMove=!1,o&&!$d(C.pointerType))return;const ee=o6(A.current),K=Oh(O.current,"open",C.pointerType),G=Er(J),Y=J.currentTarget??null,se=k.select("domReferenceElement");let re=Y;if(Un(G)&&!k.context.triggerElements.hasElement(G)){for(const ce of k.context.triggerElements.elements())if(Et(ce,G)){re=ce;break}}Un(Y)&&Un(se)&&!k.context.triggerElements.hasElement(Y)&&Et(Y,se)&&(re=se);const ne=re==null?!1:D(se,re,G),de=k.select("open"),ie=_.current?.()??k.select("transitionStatus")==="ending",oe=!de&&ie&&T.current,je=!ne&&Un(re)&&Un(se)&&Et(se,re)&&oe,te=ee>0&&!K,le=ne&&(de||oe)||je,he=!de||ne;if(le){$()&&k.setOpen(!0,Nt(Ka,J,re));return}te||(K?C.openChangeTimeout.start(K,()=>{he&&$()&&k.setOpen(!0,Nt(Ka,J,re))}):he&&$()&&k.setOpen(!0,Nt(Ka,J,re)))}function U(J){if(L()){q();return}F();const ee=k.select("domReferenceElement"),K=_n(ee);C.restTimeout.clear(),C.restTimeoutPending=!1;const G=j.current.floatingContext??g?.();if(Mk(J.relatedTarget,k.context.triggerElements))return;if(R.current&&G){k.select("open")||C.openChangeTimeout.clear();const se=d.current;C.handler=R.current({...G,tree:N,x:J.clientX,y:J.clientY,onClose(){q(),F(),P.current&&!L()&&se===k.select("domReferenceElement")&&V(J,!0)}}),K.addEventListener("mousemove",C.handler),C.handler(J);return}(C.pointerType!=="touch"||!Et(k.select("floatingElement"),J.relatedTarget))&&V(J)}function z(J){Et(Q,J.relatedTarget)||(C.openChangeTimeout.clear(),C.restTimeout.clear(),C.restTimeoutPending=!1)}const H=y?kn(Q,"mouseout",z):void 0;return u?Ol(kn(Q,"mousemove",X,{once:!0}),kn(Q,"mouseenter",X),kn(Q,"mouseleave",U),H):Ol(kn(Q,"mouseenter",X),kn(Q,"mouseleave",U),H)},[F,q,j,O,k,n,R,C,m,D,L,o,u,A,d,N,P,g,_,$,y]),p.useMemo(()=>{if(!n)return;function V(Q){C.pointerType=Q.pointerType}return{onPointerDown:V,onPointerEnter:V,onMouseMove(Q){const{nativeEvent:X}=Q,U=Q.currentTarget,z=k.select("domReferenceElement"),H=k.select("open"),J=D(z,U,Q.target);if(o&&!$d(C.pointerType))return;if(H&&J&&C.handleCloseOptions?.blockPointerEvents){const G=k.select("floatingElement");if(G){const Y=C.handleCloseOptions?.getScope?.()??U.ownerDocument.body;nH(C,{scopeElement:Y,referenceElement:U,floatingElement:G})}}const ee=o6(A.current);if(H&&!J||ee===0||!J&&C.restTimeoutPending&&Q.movementX**2+Q.movementY**2<2)return;C.restTimeout.clear();function K(){if(C.restTimeoutPending=!1,L())return;const G=k.select("open");!C.blockMouseMove&&(!G||J)&&$()&&k.setOpen(!0,Nt(Ka,X,U))}C.pointerType==="touch"?xr.flushSync(()=>{K()}):J&&H?K():(C.restTimeoutPending=!0,C.restTimeout.start(ee,K))}}},[n,C,L,D,o,k,A,$])}const Lbe="Escape";function aH(e){return du&&e.movementX===0&&e.movementY===0}function uS(e,t,n){switch(e){case"vertical":return t;case"horizontal":return n;default:return t||n}}function dS(e,t){return uS(t,e===KO||e===Pk,e===Ch||e===Ah)}function YR(e,t,n){return uS(t,e===Pk,n?e===Ch:e===Ah)||e==="Enter"||e===" "||e===""}function $be(e,t,n){return uS(t,n?e===Ch:e===Ah,e===Pk)}function zbe(e,t,n,s){const i=n?e===Ah:e===Ch,o=e===KO;return t==="both"||t==="horizontal"&&s?e===Lbe:uS(t,i,o)}function iH(e,t){const{listRef:n,activeIndex:s,onNavigate:i=()=>{},enabled:o=!0,selectedIndex:l=null,allowEscape:u=!1,loopFocus:d=!1,nested:f=!1,rtl:m=!1,virtual:g=!1,focusItemOnOpen:v="auto",focusItemOnHover:b=!0,openOnArrowKeyDown:y=!0,disabledIndices:k=void 0,orientation:j="vertical",parentOrientation:S,id:N,resetOnPointerLeave:C=!0,externalTree:T,grid:R}=t,O=R!=null,A="rootStore"in e?e.rootStore:e,P=A.useState("open"),M=A.useState("floatingElement"),_=A.useState("domReferenceElement"),L=A.context.dataRef,$=Lk(M),D=QO(_),F=ss($),q=xg(),V=Ph(T),Q=p.useRef(v),X=p.useRef(l??-1),U=p.useRef(null),z=p.useRef(!0),H=qe(ge=>{i(X.current===-1?null:X.current,ge)}),J=p.useRef(!!M),ee=p.useRef(P),K=p.useRef(!1),G=p.useRef(!1),Y=p.useRef(null),se=ss(k),re=ss(P),ne=ss(l),de=ss(C),ie=fg(),oe=fg(),je=qe(()=>{function ge(De){g?V?.events.emit("virtualfocus",De):Y.current=tS(De,{sync:K.current,preventScroll:!0})}const ue=n.current[X.current],be=G.current;ue&&ge(ue),(K.current?De=>De():De=>ie.request(De))(()=>{const De=n.current[X.current]||ue;if(!De)return;ue||ge(De),fe&&(be||!z.current)&&De.scrollIntoView?.({block:"nearest",inline:"nearest"})})});Ge(()=>{L.current.orientation=j},[L,j]),Ge(()=>{o&&(P&&M?(X.current=l??-1,Q.current&&l!=null&&(G.current=!0,H())):J.current&&(X.current=-1,H()))},[o,P,M,l,H]),Ge(()=>{if(o){if(!P){K.current=!1;return}if(M)if(s==null){if(K.current=!1,ne.current!=null)return;if(J.current&&(X.current=-1,je()),(!ee.current||!J.current)&&Q.current&&(U.current!=null||Q.current===!0&&U.current==null)){let ge=0;const ue=()=>{n.current[0]==null?(ge<2&&(ge?ve=>oe.request(ve):queueMicrotask)(ue),ge+=1):(X.current=U.current==null||YR(U.current,j,m)||f?Uk(n):rR(n),U.current=null,H())};ue()}}else Bd(n.current,s)||(X.current=s,je(),G.current=!1)}},[o,P,M,s,ne,f,n,j,m,H,je,oe]),Ge(()=>{if(!o||M||!V||g||!J.current)return;const ge=V.nodesRef.current,ue=ge.find(De=>De.id===q)?.context?.elements.floating,be=Ys(_n(_??ue??null)),ve=ge.some(De=>De.context&&Et(De.context.elements.floating,be));ue&&!ve&&z.current&&ue.focus({preventScroll:!0})},[o,M,_,V,q,g]),Ge(()=>{ee.current=P,J.current=!!M}),Ge(()=>{P||(U.current=null,Q.current=v)},[P,v]);const te=s!=null,le=qe(ge=>{if(!re.current)return;const ue=n.current.indexOf(ge.currentTarget);ue!==-1&&(X.current!==ue||s!==ue)&&(X.current=ue,H(ge))}),he=qe(()=>S??V?.nodesRef.current.find(ge=>ge.id===q)?.context?.dataRef?.current.orientation),ce=qe(()=>Uk(n,se.current)),ye=qe(ge=>{if(z.current=!1,K.current=!0,ge.which===229||!re.current&&ge.currentTarget===F.current)return;if(f&&zbe(ge.key,j,m,O)){dS(ge.key,he())||da(ge),A.setOpen(!1,Nt(hR,ge.nativeEvent)),br(_)&&(g?V?.events.emit("virtualfocus",_):_.focus());return}const ue=X.current,be=Uk(n,k),ve=rR(n,k);if(D||(ge.key==="Home"&&(da(ge),X.current=be,H(ge)),ge.key==="End"&&(da(ge),X.current=ve,H(ge))),R!=null){const De=R(ge,X.current,n,j,d,m,k,be,ve);if(De!=null&&(X.current=De,H(ge)),j==="both")return}if(dS(ge.key,j)){if(da(ge),P&&!g&&Ys(ge.currentTarget.ownerDocument)===ge.currentTarget){X.current=YR(ge.key,j,m)?be:ve,H(ge);return}YR(ge.key,j,m)?d?ue>=ve?u&&ue!==n.current.length?X.current=-1:(K.current=!1,X.current=be):X.current=Ta(n.current,{startingIndex:ue,disabledIndices:k}):X.current=Math.min(ve,Ta(n.current,{startingIndex:ue,disabledIndices:k})):d?ue<=be?u&&ue!==-1?X.current=n.current.length:(K.current=!1,X.current=ve):X.current=Ta(n.current,{startingIndex:ue,decrement:!0,disabledIndices:k}):X.current=Math.max(be,Ta(n.current,{startingIndex:ue,decrement:!0,disabledIndices:k})),Bd(n.current,X.current)&&(X.current=-1),H(ge)}}),fe=p.useMemo(()=>({onFocus(ue){K.current=!0,le(ue)},onClick:({currentTarget:ue})=>ue.focus({preventScroll:!0}),onMouseMove(ue){aH(ue)||(K.current=!0,G.current=!1,b&&le(ue))},onPointerLeave(ue){if(!re.current||!z.current||ue.pointerType==="touch")return;K.current=!0;const be=ue.relatedTarget;if(!(!b||n.current.includes(be))&&de.current&&(Y.current?.(),Y.current=null,X.current=-1,H(ue),!g)){const ve=F.current,De=Ys(_n(ve));ve&&Et(ve,De)&&ve.focus({preventScroll:!0})}}}),[le,re,F,b,n,H,de,g]),Le=p.useMemo(()=>g&&P&&te&&{"aria-activedescendant":`${N}-${s}`},[g,P,te,N,s]),pe=p.useMemo(()=>({...D?{}:Le,onKeyDown(ge){if(ge.key==="Tab"&&ge.shiftKey&&P&&!g){const ue=Er(ge.nativeEvent);if(ue&&!Et(F.current,ue))return;da(ge),A.setOpen(!1,Nt(Ud,ge.nativeEvent)),br(_)&&_.focus();return}ye(ge)},onPointerMove(ge){aH(ge)||(z.current=!0)}}),[Le,ye,F,D,A,P,g,_]),xe=p.useMemo(()=>{function ge(ve){A.setOpen(!0,Nt(hR,ve.nativeEvent,ve.currentTarget))}function ue(ve){v==="auto"&&$k(ve.nativeEvent)&&(Q.current=!g)}function be(ve){Q.current=v,v==="auto"&&ZO(ve.nativeEvent)&&(Q.current=!0)}return{onKeyDown(ve){const De=A.select("open");z.current=!1;const Ie=ve.key.startsWith("Arrow"),We=$be(ve.key,he(),m),nt=dS(ve.key,j),kt=(f?We:nt)||ve.key==="Enter"||ve.key.trim()==="";if(g&&De)return ye(ve);if(!(!De&&!y&&Ie)){if(kt){const Je=dS(ve.key,he());U.current=f&&Je?null:ve.key}if(f){We&&(da(ve),De?(X.current=ce(),H(ve)):ge(ve));return}nt&&(ne.current!=null&&(X.current=ne.current),da(ve),!De&&y?ge(ve):ye(ve),De&&H(ve))}},onFocus(ve){A.select("open")&&!g&&(X.current=-1,H(ve))},onPointerDown:be,onPointerEnter:be,onMouseDown:ue,onClick:ue}},[ye,v,ce,f,H,A,y,j,he,m,ne,g]),Se=p.useMemo(()=>({...Le,...xe}),[Le,xe]);return p.useMemo(()=>o?{reference:Se,floating:pe,item:fe,trigger:xe}:{},[o,Se,pe,xe,fe])}function oH(e,t){const{listRef:n,elementsRef:s,activeIndex:i,onMatch:o,disabledIndices:l,onTyping:u,enabled:d=!0,resetMs:f=750,selectedIndex:m=null}=t,g="rootStore"in e?e.rootStore:e,v=g.useState("open"),b=fa(),y=p.useRef(""),k=p.useRef(m??i??-1),j=p.useRef(null),S=qe(T=>{function R(F){return s?.current[F]}function O(F){const q=R(F);return q&&!Hk(q)||q?.matches(":disabled")?!1:l==null||!Fd(co,F,l)}function A(F,q,V=0){if(F.length===0)return-1;const Q=(V%F.length+F.length)%F.length,X=q.toLowerCase();for(let U=0;U0&&T.key===" "&&(da(T),u?.(!0)),y.current.length>0&&y.current[0]!==" "&&A(P,y.current)===-1&&T.key!==" "&&u?.(!1),P==null||T.key.length!==1||T.ctrlKey||T.metaKey||T.altKey)return;v&&T.key!==" "&&(da(T),u?.(!0));const M=y.current==="";M&&(k.current=m??i??-1),P.every((F,q)=>F&&O(q)?F[0]?.toLowerCase()!==F[1]?.toLowerCase():!0)&&y.current===T.key&&(y.current="",k.current=j.current),y.current+=T.key,b.start(f,()=>{y.current="",k.current=j.current,u?.(!1)});const $=((M?m??i??-1:k.current)??0)+1,D=A(P,y.current,$);D!==-1?(o?.(D),j.current=D):T.key!==" "&&(y.current="",u?.(!1))}),N=qe(T=>{const R=T.relatedTarget,O=g.select("domReferenceElement"),A=g.select("floatingElement");Et(O,R)||Et(A,R)||(b.clear(),y.current="",k.current=j.current,u?.(!1))});Ge(()=>{!v&&m!==null||(b.clear(),j.current=null,y.current!==""&&(y.current=""))},[v,m,b]);const C=p.useMemo(()=>({onKeyDown:S,onBlur:N}),[S,N]);return p.useMemo(()=>d?{reference:C,floating:C}:{},[d,C])}const lH=.1,Bbe=lH*lH,Dr=.5;function fS(e,t,n,s,i,o){return s>=t!=o>=t&&e<=(i-n)*(t-s)/(o-s)+n}function hS(e,t,n,s,i,o,l,u,d,f){let m=!1;return fS(e,t,n,s,i,o)&&(m=!m),fS(e,t,i,o,l,u)&&(m=!m),fS(e,t,l,u,d,f)&&(m=!m),fS(e,t,d,f,n,s)&&(m=!m),m}function Fbe(e,t,n){return e>=n.x&&e<=n.x+n.width&&t>=n.y&&t<=n.y+n.height}function mS(e,t,n,s,i,o){const l=Math.min(n,i),u=Math.max(n,i),d=Math.min(s,o),f=Math.max(s,o);return e>=l&&e<=u&&t>=d&&t<=f}function cH(e={}){const{blockPointerEvents:t=!1}=e,n=new Bi,s=({x:i,y:o,placement:l,elements:u,onClose:d,nodeId:f,tree:m})=>{const g=l?.split("-")[0];let v=!1,b=null,y=null,k=typeof performance<"u"?performance.now():0;function j(N,C){const T=performance.now(),R=T-k;if(b===null||y===null||R===0)return b=N,y=C,k=T,!1;const O=N-b,A=C-y,P=O*O+A*A,M=R*R*Bbe;return b=N,y=C,k=T,P0)}function D(){$()||S()}if($())return;const F=T.getBoundingClientRect(),q=R.getBoundingClientRect(),V=i>q.right-q.width/2,Q=o>q.bottom-q.height/2,X=q.width>F.width,U=q.height>F.height,z=(X?F:q).left,H=(X?F:q).right,J=(U?F:q).top,ee=(U?F:q).bottom;if(g==="top"&&o>=F.bottom-1||g==="bottom"&&o<=F.top+1||g==="left"&&i>=F.right-1||g==="right"&&i<=F.left+1){D();return}let K=!1;switch(g){case"top":K=mS(O,A,z,F.top+1,H,q.bottom-1);break;case"bottom":K=mS(O,A,z,q.top+1,H,F.bottom-1);break;case"left":K=mS(O,A,q.right-1,ee,F.left+1,J);break;case"right":K=mS(O,A,F.right-1,ee,q.left+1,J);break}if(K)return;if(v&&!Fbe(O,A,F)){D();return}if(!M&&j(O,A)){D();return}let G=!1;switch(g){case"top":{const Y=X?Dr/2:Dr*4,se=X||V?i+Y:i-Y,re=X?i-Y:V?i+Y:i-Y,ne=o+Dr+1,de=V||X?q.bottom-Dr:q.top,ie=V?X?q.bottom-Dr:q.top:q.bottom-Dr;G=hS(O,A,se,ne,re,ne,q.left,de,q.right,ie);break}case"bottom":{const Y=X?Dr/2:Dr*4,se=X||V?i+Y:i-Y,re=X?i-Y:V?i+Y:i-Y,ne=o-Dr,de=V||X?q.top+Dr:q.bottom,ie=V?X?q.top+Dr:q.bottom:q.top+Dr;G=hS(O,A,se,ne,re,ne,q.left,de,q.right,ie);break}case"left":{const Y=U?Dr/2:Dr*4,se=U||Q?o+Y:o-Y,re=U?o-Y:Q?o+Y:o-Y,ne=i+Dr+1,de=Q||U?q.right-Dr:q.left,ie=Q?U?q.right-Dr:q.left:q.right-Dr;G=hS(O,A,de,q.top,ie,q.bottom,ne,se,ne,re);break}case"right":{const Y=U?Dr/2:Dr*4,se=U||Q?o+Y:o-Y,re=U?o-Y:Q?o+Y:o-Y,ne=i-Dr,de=Q||U?q.left+Dr:q.right,ie=Q?U?q.left+Dr:q.right:q.left+Dr;G=hS(O,A,ne,se,ne,re,de,q.top,ie,q.bottom);break}}G?v||n.start(40,D):D()}};return s.__options={...e,blockPointerEvents:t},s}const Ube={...VR,disabled:e=>e.disabled,instantType:e=>e.instantType,isInstantPhase:e=>e.isInstantPhase,trackCursorAxis:e=>e.trackCursorAxis,disableHoverablePopup:e=>e.disableHoverablePopup,lastOpenChangeReason:e=>e.openChangeReason,closeOnClick:e=>e.closeOnClick,closeDelay:e=>e.closeDelay,adaptiveOrigin:e=>e.adaptiveOrigin};class Hbe extends Mh{constructor(n,s,i){const o=new oS;super(Vbe(n,o,s,i),Kbe(o),Ube);Cn(this,"setOpen",(n,s)=>{Rbe(this,n,s,{extraState:{openChangeReason:s.reason}})})}cancelPendingOpen(n){this.state.floatingRootContext.dispatchOpenChange(!1,Nt(xu,n))}}function Vbe(e,t,n,s=!1){return{...UR(t,n,s),disabled:!1,instantType:void 0,isInstantPhase:!1,trackCursorAxis:"none",disableHoverablePopup:!1,openChangeReason:null,closeOnClick:!0,closeDelay:0,adaptiveOrigin:void 0,...e}}function Kbe(e){return{popupRef:p.createRef(),onOpenChange:void 0,onOpenChangeComplete:void 0,triggerElements:e}}const qbe=Jk(function(t){const{disabled:n=!1,defaultOpen:s=!1,open:i,disableHoverablePopup:o=!1,trackCursorAxis:l="none",actionsRef:u,onOpenChange:d,onOpenChangeComplete:f,handle:m,triggerId:g,defaultTriggerId:v=null,children:b}=t,y=_R((L,$)=>new Hbe({open:s,openProp:i,activeTriggerId:v,triggerIdProp:g},L,$));y.useControlledProp("openProp",i),y.useControlledProp("triggerIdProp",g),y.useContextCallback("onOpenChange",d),y.useContextCallback("onOpenChangeComplete",f);const k=y.useState("open"),j=!n&&k,S=y.useState("activeTriggerId"),N=y.useState("mounted"),C=y.useState("payload");y.useSyncedValues({trackCursorAxis:l,disableHoverablePopup:o,disabled:n}),zR(y,{closeOnActiveTriggerUnmount:!0});const{forceUnmount:T,transitionStatus:R}=BR(j,y),O=y.useState("isInstantPhase"),A=y.useState("instantType"),P=y.useState("lastOpenChangeReason"),M=p.useRef(null);Ge(()=>{k&&n&&y.setOpen(!1,Nt(Nxe))},[k,n,y]),Ge(()=>{R==="ending"&&P===rs||R!=="ending"&&O?(A!=="delay"&&(M.current=A),y.set("instantType","delay")):M.current!==null&&(y.set("instantType",M.current),M.current=null)},[R,O,P,A,y]),Ge(()=>{j&&S==null&&y.set("payload",void 0)},[y,S,j]),p.useImperativeHandle(u,()=>({unmount:T,close:()=>y.setOpen(!1,Nt(mR))}),[T,y]);const _=j||N||!n&&l!=="none";return r.jsxs(i6.Provider,{value:y,children:[m&&r.jsx(DR,{handle:m,store:y}),_&&r.jsx(Gbe,{store:y,disabled:n,trackCursorAxis:l}),typeof b=="function"?b({payload:C}):b]})});function Gbe({store:e,disabled:t,trackCursorAxis:n}){const s=e.useState("floatingRootContext"),i=Fb(s,{enabled:!t,referencePress:()=>e.select("closeOnClick")}),o=Ive(s,{enabled:!t&&n!=="none",axis:n==="none"?void 0:n}),l=p.useMemo(()=>oo(o.reference,i.reference),[o.reference,i.reference]);return FR(e,{activeTriggerProps:l,inactiveTriggerProps:l,popupProps:i.floating??yr}),null}const uH=p.createContext(void 0);function Wbe(){return p.useContext(uH)}const Ybe=600,dH="data-base-ui-tooltip-trigger";function fH(e){if("composedPath"in e){const n=e.composedPath();for(let s=0;sj.select("transitionStatus")==="ending",shouldOpen(){return!z.current}}),se=_be(T,{enabled:!V}).reference,re=je=>{const te=z.current,le=fH(je),he=G(le),ce=R.current,ye=ce&&le&&Et(ce,le);if(he&&j.select("open")&&j.select("lastOpenChangeReason")===Ka){j.setOpen(!1,Nt(Ka,je));return}if(te&&!he&&ye&&!Q.current&&!j.select("open")&&ce&&$d(J.current)){const fe=()=>{!z.current&&!Q.current&&!j.select("open")&&j.setOpen(!0,Nt(Ka,je,ce))},Le=ee();Le===0?(H.clear(),fe()):H.start(Le,fe)}},ne=j.useState("triggerProps",P);return Kt("button",t,{state:{open:C},ref:[n,A,R],props:[Y,se,P||X!=="none"?ne:void 0,{onMouseOver(je){re(je.nativeEvent)},onFocus(je){K(fH(je.nativeEvent))&&je.preventBaseUIHandler()},onMouseLeave(){z.current=!1,H.clear(),J.current=void 0},onPointerEnter(je){J.current=je.pointerType},onPointerDown(je){J.current=je.pointerType,j.set("closeOnClick",m),m&&!j.select("open")&&j.cancelPendingOpen(je.nativeEvent)},onClick(je){m&&!j.select("open")&&j.cancelPendingOpen(je.nativeEvent)},id:S,[YO]:V?"":void 0,[dH]:V?void 0:""},b],stateAttributesMapping:Ik})}),hH=p.createContext(void 0);function Zbe(){const e=p.useContext(hH);if(e===void 0)throw new Error(Kn(70));return e}const mH=p.forwardRef(function(t,n){const{children:s,container:i,className:o,render:l,style:u,...d}=t,{node:f,subtree:m}=y6({container:i,ref:n,componentProps:t,elementProps:d});return!m&&!f?null:r.jsxs(p.Fragment,{children:[m,f&&xr.createPortal(s,f)]})}),Jbe=p.forwardRef(function(t,n){const{keepMounted:s=!1,...i}=t;return Lb().useState("mounted")||s?r.jsx(hH.Provider,{value:s,children:r.jsx(mH,{ref:n,...i})}):null}),pH=p.createContext(void 0);function gH(){const e=p.useContext(pH);if(e===void 0)throw new Error(Kn(71));return e}const eye=p.createContext(void 0);function Vb(){return p.useContext(eye)?.direction??"ltr"}const tye=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:s,placement:i,rects:o,platform:l,elements:u,middlewareData:d}=t,{element:f,padding:m=0,offsetParent:g="real"}=zd(e,t)||{};if(f==null)return{};const v=EU(m),b={x:n,y:s},y=tR(i),k=eR(y),j=await l.getDimensions(f),S=y==="y",N=S?"top":"left",C=S?"bottom":"right",T=S?"clientHeight":"clientWidth",R=o.reference[k]+o.reference[y]-b[y]-o.floating[k],O=b[y]-o.reference[y],A=g==="real"?await l.getOffsetParent?.(f):u.floating;let P=u.floating[T]||o.floating[k];(!P||!await l.isElement?.(A))&&(P=u.floating[T]||o.floating[k]);const M=R/2-O/2,_=P/2-j[k]/2-1,L=Math.min(v[N],_),$=Math.min(v[C],_),D=L,F=P-j[k]-$,q=P/2-j[k]/2+M,V=NU(D,q,F),Q=!d.arrow&&mu(i)!=null&&q!==V&&o.reference[k]/2-(q{const{name:n,fn:s}=tye(e);return{name:n,fn:s,options:[e,t]}},rye={name:"hide",async fn(e){const{width:t,height:n,x:s,y:i}=e.rects.reference,o=t===0&&n===0&&s===0&&i===0,l=await e.platform.detectOverflow(e,{elementContext:"reference"});return{data:{referenceHidden:l.top-n>=0||l.right-t>=0||l.bottom-n>=0||l.left-t>=0||o}}}},sye={sideX:"left",sideY:"top"},aye="--available-width",iye="--available-height",oye="--anchor-width",lye="--anchor-height",cye="--transform-origin",xH=aye,vH=iye;function bH(e,t,n){const s=e==="inline-start"||e==="inline-end";return{top:"top",right:s?n?"inline-start":"inline-end":"right",bottom:"bottom",left:s?n?"inline-end":"inline-start":"left"}[t]}function yH(e,t,n){const{rects:s,placement:i}=e;return{side:bH(t,Uo(i),n),align:mu(i)||"center",anchor:{width:s.reference.width,height:s.reference.height},positioner:{width:s.floating.width,height:s.floating.height}}}function pS(e){return uye(e,Ibe)}function uye(e,t){const{anchor:n,positionMethod:s="absolute",side:i="bottom",sideOffset:o=0,align:l="center",alignOffset:u=0,collisionBoundary:d,collisionPadding:f=5,sticky:m=!1,arrowPadding:g=5,disableAnchorTracking:v=!1,inline:b,keepMounted:y=!1,floatingRootContext:k,mounted:j,collisionAvoidance:S,shift:N,nodeId:C,adaptiveOrigin:T,lazyFlip:R=!1,externalTree:O}=e,[A,P]=p.useState(null);!j&&A!==null&&P(null);const M=S.side||"flip",_=S.align||"flip",L=S.fallbackAxisSide||"end",$=N?.crossAxis??!1,D=N?.rootBoundary,F=typeof n=="function"?n:void 0,q=qe(F),V=F?q:n,Q=ss(n),X=ss(j),z=Vb()==="rtl",H=A||{top:"top",right:"right",bottom:"bottom",left:"left","inline-end":z?"left":"right","inline-start":z?"right":"left"}[i],J=l==="center"?H:`${H}-${l}`;let ee=f;typeof ee=="number"?ee={top:ee,right:ee,bottom:ee,left:ee}:ee&&(ee={top:ee.top||0,right:ee.right||0,bottom:ee.bottom||0,left:ee.left||0});const K=1,G=i==="bottom"?K:0,Y=i==="top"?K:0,se=i==="right"?K:0,re=i==="left"?K:0,ne={boundary:d==="clipping-ancestors"?"clippingAncestors":d,padding:ee},de=p.useRef(null),ie=ss(o),oe=ss(u),je=typeof o!="function"?o:0,te=typeof u!="function"?u:0,le=[];b&&le.push(b),le.push(pbe(ht=>{const Tt=yH(ht,i,z),Ht=typeof ie.current=="function"?ie.current(Tt):ie.current,jt=typeof oe.current=="function"?oe.current(Tt):oe.current;return{mainAxis:Ht,crossAxis:jt,alignmentAxis:jt}},[je,te,z,i]));const he=_==="none"&&M!=="shift",ce=!he&&(m||$||M==="shift"),ye=M==="none"?null:vbe({...ne,padding:{top:ee.top+K+G,right:ee.right+K+re,bottom:ee.bottom+K+Y,left:ee.left+K+se},mainAxis:!$&&M==="flip",crossAxis:_==="flip"?"alignment":!1,fallbackAxisSideDirection:L}),fe=he?null:gbe({...ne,rootBoundary:D,mainAxis:_!=="none",crossAxis:ce,limiter:m||$?void 0:xbe(ht=>{if(!de.current)return{};const{width:Tt,height:Ht}=de.current.getBoundingClientRect(),jt=Ho(Uo(ht.placement)),an=jt==="y"?Tt:Ht,Xt=jt==="y"?ee.left+ee.right:ee.top+ee.bottom;return{offset:an/2+Xt/2}})},[ne,m,$,D,ee,_]);M==="shift"||_==="shift"||l==="center"?le.push(fe,ye):le.push(ye,fe),le.push(bbe({...ne,apply({elements:{floating:ht},availableWidth:Tt,availableHeight:Ht,rects:jt}){if(!X.current)return;const an=ht.style;an.setProperty(xH,`${Tt}px`),an.setProperty(vH,`${Ht}px`);const Xt=vr(ht).devicePixelRatio||1,{x:gn,y:un,width:cr,height:yn}=jt.reference,xn=(Math.round((gn+cr)*Xt)-Math.round(gn*Xt))/Xt,jn=(Math.round((un+yn)*Xt)-Math.round(un*Xt))/Xt;an.setProperty(oye,`${xn}px`),an.setProperty(lye,`${jn}px`)}}),nye(ht=>({element:de.current||_n(ht.elements.floating).createElement("div"),padding:de.current?g:0,offsetParent:"floating"}),[g]),{name:"transformOrigin",fn(ht){const{elements:{floating:Tt},middlewareData:Ht,placement:jt,platform:an,rects:Xt,y:gn}=ht,un=Uo(jt),cr=mu(jt),yn=Ho(un)==="y",xn=de.current,jn=typeof o=="function"?o(yH(ht,i,z)):o;let ke;if(!xn&&cr&&Math.abs(yn?Ht.shift?.x||0:Ht.shift?.y||0)<=1)ke=cr==="start"===(yn&&an.isRTL?.(Tt)===!0)?"100%":"0%";else{const Qe=yn?Ht.arrow?.x||0:Ht.arrow?.y||0,Yt=yn?xn?.clientWidth||0:xn?.clientHeight||0;ke=`${Qe+Yt/2}px`}let Xe=un==="top"||un==="left"?`calc(100% + ${jn}px)`:`${-jn}px`;return ce&&yn&&Math.abs(Ht.shift?.y||0)>jn&&(Xe=`${Xt.reference.y+Xt.reference.height/2-gn}px`),Tt.style.setProperty(cye,yn?`${ke} ${Xe}`:`${Xe} ${ke}`),{}}},rye,T),Ge(()=>{!j&&k&&k.update({referenceElement:null,floatingElement:null,domReferenceElement:null,positionReference:null})},[j,k]);const Le=p.useMemo(()=>({ancestorScroll:!v,elementResize:!v&&typeof ResizeObserver<"u",layoutShift:!v&&typeof IntersectionObserver<"u"}),[v]),{refs:pe,elements:xe,x:Se,y:ge,middlewareData:ue,update:be,placement:ve,context:De,isPositioned:Ie,floatingStyles:We}=t({rootContext:k,open:y?j:void 0,placement:J,middleware:le,strategy:s,whileElementsMounted:y?void 0:(...ht)=>z6(...ht,Le),nodeId:C,externalTree:O}),{sideX:nt,sideY:kt}=ue.adaptiveOrigin||sye,Je=Ie?s:"fixed",on=p.useMemo(()=>{let ht;return Ie?T?ht={position:Je,[nt]:Se,[kt]:ge}:ht={...We,position:Je}:ht={position:Je,top:0,left:0},ht[xH]="100vw",ht[vH]="100vh",Ie||(ht.opacity=0),ht},[T,Je,nt,Se,kt,ge,We,Ie]),nn=p.useRef(null);Ge(()=>{if(!j)return;const ht=Q.current,Tt=typeof ht=="function"?ht():ht,jt=(jH(Tt)?Tt.current:Tt)||null||null;jt!==nn.current&&(pe.setPositionReference(jt),nn.current=jt)},[j,pe,V,Q]),p.useEffect(()=>{if(!j)return;const ht=Q.current;typeof ht!="function"&&jH(ht)&&ht.current!==nn.current&&(pe.setPositionReference(ht.current),nn.current=ht.current)},[j,pe,V,Q]),p.useEffect(()=>{if(y&&j&&xe.reference&&xe.floating)return z6(xe.reference,xe.floating,be,Le)},[y,j,xe,be,Le]);const On=Uo(ve),Rn=bH(i,On,z),xt=mu(ve)||"center",sn=!!ue.hide?.referenceHidden;Ge(()=>{R&&j&&Ie&&On!==H&&P(On)},[R,j,Ie,On,H]);const Ke=p.useMemo(()=>({position:"absolute",top:ue.arrow?.y,left:ue.arrow?.x}),[ue.arrow]),zt=ue.arrow?.centerOffset!==0;return p.useMemo(()=>({positionerStyles:on,arrowStyles:Ke,arrowRef:de,arrowUncentered:zt,side:Rn,align:xt,physicalSide:On,anchorHidden:sn,refs:pe,context:De,isPositioned:Ie,update:be}),[on,Ke,de,zt,Rn,xt,On,sn,pe,De,Ie,be])}function jH(e){return e!=null&&"current"in e}function Kb(e){return e==="starting"?bve:yr}function gS(e,t,{styles:n,transitionStatus:s,props:i,refs:o,hidden:l,inert:u=!1}){const d={...n};return u&&(d.pointerEvents="none"),Kt("div",e,{state:t,ref:o,props:[{role:"presentation",hidden:l,style:d},Kb(s),i],stateAttributesMapping:cg})}const dye=p.forwardRef(function(t,n){const{render:s,className:i,anchor:o,positionMethod:l="absolute",side:u="top",align:d="center",sideOffset:f=0,alignOffset:m=0,collisionBoundary:g="clipping-ancestors",collisionPadding:v=5,arrowPadding:b=5,sticky:y=!1,disableAnchorTracking:k=!1,collisionAvoidance:j=x6,style:S,...N}=t,C=Lb(),T=Zbe(),R=C.useState("open"),O=C.useState("mounted"),A=C.useState("trackCursorAxis"),P=C.useState("disableHoverablePopup"),M=C.useState("floatingRootContext"),_=C.useState("instantType"),L=C.useState("transitionStatus"),$=C.useState("adaptiveOrigin"),D=pS({anchor:o,positionMethod:l,floatingRootContext:M,mounted:O,side:u,sideOffset:f,align:d,alignOffset:m,collisionBoundary:g,collisionPadding:v,sticky:y,arrowPadding:b,disableAnchorTracking:k,keepMounted:T,collisionAvoidance:j,adaptiveOrigin:$}),F=p.useMemo(()=>({open:R,side:D.side,align:D.align,anchorHidden:D.anchorHidden,instant:A!=="none"?"tracking-cursor":_}),[R,D.side,D.align,D.anchorHidden,A,_]),q=gS(t,F,{styles:D.positionerStyles,transitionStatus:L,props:N,refs:[n,C.useStateSetter("positionerElement")],hidden:!O,inert:!R||A==="both"||P});return r.jsx(pH.Provider,{value:D,children:q})}),fye=p.forwardRef(function(t,n){const{render:s,className:i,style:o,...l}=t,u=Lb(),{side:d,align:f}=gH(),m=u.useState("open"),g=u.useState("instantType"),v=u.useState("transitionStatus"),b=u.useState("popupProps"),y=u.useState("floatingRootContext"),k=u.useState("disabled"),j=u.useState("closeDelay");ji({open:m,ref:u.context.popupRef,onComplete(){m&&u.context.onOpenChangeComplete?.(!0)}}),rH(y,{enabled:!k,closeDelay:j});const S=u.useStateSetter("popupElement");return Kt("div",t,{state:{open:m,side:d,align:f,instant:g,transitionStatus:v},ref:[n,u.context.popupRef,S],props:[Ub,b,Kb(v),l],stateAttributesMapping:WO})}),hye=p.forwardRef(function(t,n){const{render:s,className:i,style:o,...l}=t,u=Lb(),{arrowRef:d,side:f,align:m,arrowUncentered:g,arrowStyles:v}=gH(),b=u.useState("open"),y=u.useState("instantType");return Kt("div",t,{state:{open:b,side:f,align:m,uncentered:g,instant:y},ref:[n,d],props:[{style:v,"aria-hidden":!0},l],stateAttributesMapping:cg})}),mye=function(t){const{delay:n,closeDelay:s,timeout:i=400}=t,o=p.useMemo(()=>({open:n,close:s}),[n,s]);return r.jsx(uH.Provider,{value:n,children:r.jsx(hve,{delay:o,timeoutMs:i,children:t.children})})};function qb(e){return _O(19)?e:e?"true":void 0}function pye(e){const[t,n]=p.useState({current:e,previous:null});return Object.is(e,t.current)||n({current:e,previous:t.current}),t.previous}function xS(e){return r.jsx(mye,{"data-slot":"tooltip-provider",...e})}function pc(e){return r.jsx(qbe,{"data-slot":"tooltip",...e})}function _h(e){return r.jsx(Qbe,{"data-slot":"tooltip-trigger",...e})}function gc({className:e,sideOffset:t=8,side:n="top",anchor:s,variant:i="default",children:o,...l}){return r.jsx(Jbe,{children:r.jsx(dye,{anchor:s,positionMethod:"fixed",collisionPadding:8,sideOffset:t,side:n,className:"z-[90] data-anchor-hidden:hidden",children:r.jsx(fye,{"data-slot":"tooltip-content",className:Ne("max-w-[min(320px,calc(100vw-16px))] rounded-md px-2.5 py-2 text-[11.5px] leading-[1.55] shadow-3",i==="plain"?"border border-border bg-raised text-foreground":"bg-primary text-primary-on","break-words outline-none","transition-[opacity,transform] duration-150 ease-out","data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95","data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",e),...l,children:o})})})}function gye({className:e,...t}){return r.jsx(hye,{className:Ne("size-2 rotate-45 rounded-[1px] bg-primary","data-[side=top]:-bottom-1 data-[side=bottom]:-top-1",e),...t})}const wH=p.createContext(void 0);function Vd(e){const t=p.useContext(wH);if(!e&&t===void 0)throw new Error(Kn(27));return t}const XR=p.forwardRef(function(t,n){const{render:s,className:i,style:o,forceRender:l=!1,...u}=t,d=Vd(),f=d.useState("open"),m=d.useState("nested"),g=d.useState("mounted"),v=d.useState("transitionStatus");return Kt("div",t,{state:{open:f,transitionStatus:v},ref:[d.context.backdropRef,n],stateAttributesMapping:WO,props:[{role:"presentation",hidden:!g,style:{userSelect:"none",WebkitUserSelect:"none"}},u],enabled:l||!m})}),Gb=p.forwardRef(function(t,n){const{render:s,className:i,style:o,disabled:l=!1,nativeButton:u=!0,...d}=t,f=Vd(),m=f.useState("open"),{getButtonProps:g,buttonRef:v}=$i({disabled:l,native:u}),b={disabled:l};function y(k){m&&f.setOpen(!1,Nt(fR,k.nativeEvent))}return Kt("button",t,{state:b,ref:[n,v],props:[{onClick:y},d,g]})}),kH=p.forwardRef(function(t,n){const{render:s,className:i,style:o,id:l,...u}=t,d=Vd(),f=Ws(l);return d.useSyncedValueWithCleanup("descriptionElementId",f),Kt("p",t,{ref:n,props:[{id:f},u]})}),SH=p.createContext(void 0);function xye(){const e=p.useContext(SH);if(e===void 0)throw new Error(Kn(26));return e}const QR="ArrowUp",ZR="ArrowDown",JR="ArrowLeft",eP="ArrowRight",tP="Home",nP="End",vS=new Set([QR,ZR,JR,eP,tP,nP]),NH="Shift",vye=[NH,"Control","Alt","Meta"];function bye(e){return br(e)&&e.tagName==="INPUT"}function CH(e){return!!(bye(e)&&e.selectionStart!=null||br(e)&&e.tagName==="TEXTAREA")}function AH(e,t,n,s){if(!e||!t||!t.scrollTo)return;let i=e.scrollLeft,o=e.scrollTop;const l=e.clientWidthe.scrollLeft+e.clientWidth-f.scrollPaddingRight?i=d+t.offsetWidth+m.scrollMarginRight-e.clientWidth+f.scrollPaddingRight:d-m.scrollMarginLefte.scrollLeft+e.clientWidth-f.scrollPaddingRight&&(i=d+t.offsetWidth+m.scrollMarginRight-e.clientWidth+f.scrollPaddingRight))}if(u&&s!=="horizontal"){const d=EH(e,t,"top"),f=bS(e),m=bS(t);d-m.scrollMarginTope.scrollTop+e.clientHeight-f.scrollPaddingBottom&&(o=d+t.offsetHeight+m.scrollMarginBottom-e.clientHeight+f.scrollPaddingBottom)}e.scrollTo({left:i,top:o,behavior:"auto"})}function EH(e,t,n){const s=n==="left"?"offsetLeft":"offsetTop";let i=0;for(;t.offsetParent&&(i+=t[s],t.offsetParent!==e);)t=t.offsetParent;return i}function bS(e){const t=getComputedStyle(e);return{scrollMarginTop:parseFloat(t.scrollMarginTop)||0,scrollMarginRight:parseFloat(t.scrollMarginRight)||0,scrollMarginBottom:parseFloat(t.scrollMarginBottom)||0,scrollMarginLeft:parseFloat(t.scrollMarginLeft)||0,scrollPaddingTop:parseFloat(t.scrollPaddingTop)||0,scrollPaddingRight:parseFloat(t.scrollPaddingRight)||0,scrollPaddingBottom:parseFloat(t.scrollPaddingBottom)||0,scrollPaddingLeft:parseFloat(t.scrollPaddingLeft)||0}}const yye="--nested-dialogs",jye="data-nested-dialog-open",wye={...cg,...Fo,nestedDialogOpen(e){return e?{[jye]:""}:null}},rP=p.forwardRef(function(t,n){const{render:s,className:i,style:o,finalFocus:l,initialFocus:u,...d}=t,f=Vd(),m=f.useState("descriptionElementId"),g=f.useState("disablePointerDismissal"),v=f.useState("floatingRootContext"),b=f.useState("popupProps"),y=f.useState("modal"),k=f.useState("mounted"),j=f.useState("nested"),S=f.useState("nestedOpenDialogCount"),N=f.useState("open"),C=f.useState("openMethod"),T=f.useState("titleElementId"),R=f.useState("transitionStatus"),O=f.useState("role"),A=v.useState("floatingId");xye(),ji({open:N,ref:f.context.popupRef,onComplete(){N&&f.context.onOpenChangeComplete?.(!0)}});const P=u===void 0?Y6(f.context.popupRef):u,M=S>0,_=f.useStateSetter("popupElement"),$=Kt("div",t,{state:{open:N,nested:j,transitionStatus:R,nestedDialogOpen:M},props:[b,{id:A,"aria-labelledby":T,"aria-describedby":m,role:O,...Ub,hidden:!k,onKeyDown(D){vS.has(D.key)&&D.stopPropagation()},style:{[yye]:S}},d],ref:[n,f.context.popupRef,_],stateAttributesMapping:wye});return r.jsx(rS,{context:v,openInteractionType:C,disabled:!k,closeOnFocusOut:!g,initialFocus:P,returnFocus:l,modal:y!==!1,restoreFocus:"popup",children:$})}),yS=p.forwardRef(function(t,n){const{cutout:s,...i}=t;let o;if(s){const l=s.getBoundingClientRect();o=`polygon(0% 0%,100% 0%,100% 100%,0% 100%,0% 0%,${l.left}px ${l.top}px,${l.left}px ${l.bottom}px,${l.right}px ${l.bottom}px,${l.right}px ${l.top}px,${l.left}px ${l.top}px)`}return r.jsx("div",{ref:n,role:"presentation","data-base-ui-inert":"",...i,style:{position:"fixed",inset:0,userSelect:"none",WebkitUserSelect:"none",clipPath:o}})}),sP=p.forwardRef(function(t,n){const{keepMounted:s=!1,...i}=t,o=Vd(),l=o.useState("mounted"),u=o.useState("modal"),d=o.useState("open");return l||s?r.jsx(SH.Provider,{value:s,children:r.jsxs(nS,{ref:n,...i,children:[l&&u===!0&&r.jsx(yS,{ref:o.context.internalBackdropRef,inert:qb(!d)}),t.children]})}):null});let TH={},OH={},RH="";function jS(e,t){return Cb(e)?e:t}function PH(e,t,n){return/hidden|clip/.test(e.getComputedStyle(jS(t,n)).overflowY)}function kye(e){if(typeof document>"u")return!1;const t=_n(e);return vr(t).innerWidth-t.documentElement.clientWidth>0}function Sye(e){if(!(typeof CSS<"u"&&CSS.supports&&CSS.supports("scrollbar-gutter","stable"))||typeof document>"u")return!1;const n=_n(e),s=n.documentElement,i=n.body,o=jS(s,i),l=o.style.overflowY,u=s.style.scrollbarGutter;s.style.scrollbarGutter="stable",o.style.overflowY="scroll";const d=o.offsetWidth;o.style.overflowY="hidden";const f=o.offsetWidth;return o.style.overflowY=l,s.style.scrollbarGutter=u,d===f}function Nye(e){const t=_n(e),n=t.documentElement,s=t.body,i=jS(n,s),o={overflowY:i.style.overflowY,overflowX:i.style.overflowX};return Object.assign(i.style,{overflowY:"hidden",overflowX:"hidden"}),()=>{Object.assign(i.style,o)}}function Cye(e){const t=_n(e),n=t.documentElement,s=t.body,i=vr(n);let o=0,l=0,u=!1;const d=Fi.create();if(du&&(i.visualViewport?.scale??1)!==1)return()=>{};function f(){const b=i.getComputedStyle(n),y=i.getComputedStyle(s),S=(b.scrollbarGutter||"").includes("both-edges")?"stable both-edges":"stable";o=n.scrollTop,l=n.scrollLeft,TH={scrollbarGutter:n.style.scrollbarGutter,overflowY:n.style.overflowY,overflowX:n.style.overflowX},RH=n.style.scrollBehavior,OH={position:s.style.position,height:s.style.height,width:s.style.width,boxSizing:s.style.boxSizing,overflowY:s.style.overflowY,overflowX:s.style.overflowX,scrollBehavior:s.style.scrollBehavior};const N=n.scrollHeight>n.clientHeight,C=n.scrollWidth>n.clientWidth,T=b.overflowY==="scroll"||y.overflowY==="scroll",R=b.overflowX==="scroll"||y.overflowX==="scroll",O=Math.max(0,i.innerWidth-s.clientWidth),A=Math.max(0,i.innerHeight-s.clientHeight),P=parseFloat(y.marginTop)+parseFloat(y.marginBottom),M=parseFloat(y.marginLeft)+parseFloat(y.marginRight),_=jS(n,s);if(u=Sye(e),u){n.style.scrollbarGutter=S,_.style.overflowY="hidden",_.style.overflowX="hidden";return}Object.assign(n.style,{scrollbarGutter:S,overflowY:"hidden",overflowX:"hidden"}),(N||T)&&(n.style.overflowY="scroll"),(C||R)&&(n.style.overflowX="scroll"),Object.assign(s.style,{position:"relative",height:P||A?`calc(100dvh - ${P+A}px)`:"100dvh",width:M||O?`calc(100vw - ${M+O}px)`:"100vw",boxSizing:"border-box",overflowY:"hidden",overflowX:"hidden",scrollBehavior:"unset"}),s.scrollTop=o,s.scrollLeft=l,n.setAttribute("data-base-ui-scroll-locked",""),n.style.scrollBehavior="unset"}function m(){Object.assign(n.style,TH),Object.assign(s.style,OH),u||(n.scrollTop=o,n.scrollLeft=l,n.removeAttribute("data-base-ui-scroll-locked"),n.style.scrollBehavior=RH)}function g(){m(),d.request(f)}f();const v=kn(i,"resize",g);return()=>{d.cancel(),m(),typeof i.removeEventListener=="function"&&v()}}class Aye{constructor(){Cn(this,"lockCount",0);Cn(this,"restore",null);Cn(this,"timeoutLock",Bi.create());Cn(this,"timeoutUnlock",Bi.create());Cn(this,"release",()=>{this.lockCount-=1,this.lockCount===0&&this.restore&&this.timeoutUnlock.start(0,this.unlock)});Cn(this,"unlock",()=>{this.lockCount===0&&this.restore&&(this.restore?.(),this.restore=null)})}acquire(t){return this.lockCount+=1,this.lockCount===1&&this.restore===null&&this.timeoutLock.start(0,()=>this.lock(t)),this.release}lock(t){if(this.lockCount===0||this.restore!==null)return;const n=_n(t),s=n.documentElement,i=n.body,o=vr(s);if(PH(o,s,i)){const u=new o.MutationObserver(()=>{PH(o,s,i)||(u.disconnect(),this.restore=null,this.lock(t))}),d={attributes:!0};u.observe(s,d),u.observe(i,d),this.restore=()=>u.disconnect();return}const l=Ob||!kye(t);this.restore=l?Nye(t):Cye(t)}}const Eye=new Aye;function IH(e=!0,t=null){Ge(()=>{if(e)return Eye.acquire(t)},[e,t])}function Tye({store:e,parentContext:t,isDrawer:n}){const s=e.useState("open"),i=e.useState("disablePointerDismissal"),o=e.useState("modal"),l=e.useState("popupElement"),u=e.useState("floatingRootContext"),[d,f]=p.useState(0),[m,g]=p.useState(0),v=d===0,b=Fb(u,{outsidePressEvent(){return e.context.internalBackdropRef.current||e.context.backdropRef.current?"intentional":{mouse:o==="trap-focus"?"sloppy":"intentional",touch:"sloppy"}},outsidePress(y){if(!e.context.outsidePressEnabledRef.current||"button"in y&&y.button!==0)return!1;if("touches"in y){if(y.type==="touchend"){if(y.changedTouches.length!==1||y.touches.length!==0)return!1}else if(y.touches.length!==1)return!1}const k=Er(y);if(v&&!i){if(o){const j=e.context.internalBackdropRef.current,S=e.context.backdropRef.current;return j||S?j===k||S===k||Et(k,l)&&!k?.hasAttribute("data-base-ui-portal"):!0}return!0}return!1},escapeKey:v});return IH(s&&o===!0,l),e.useContextCallback("onNestedDialogOpen",(y,k)=>{f(y),g(k)}),Ge(()=>(t?.onNestedDialogOpen&&(s?t.onNestedDialogOpen(d+1,m+(n?1:0)):t.onNestedDialogOpen(0,0)),()=>{t?.onNestedDialogOpen&&s&&t.onNestedDialogOpen(0,0)}),[n,s,d,m,t]),FR(e,{activeTriggerProps:b.reference,inactiveTriggerProps:b.trigger,popupProps:b.floating,nestedOpenDialogCount:d,nestedOpenDrawerCount:m}),null}const Oye={...VR,modal:e=>e.modal,nested:e=>e.nested,nestedOpenDialogCount:e=>e.nestedOpenDialogCount,nestedOpenDrawerCount:e=>e.nestedOpenDrawerCount,disablePointerDismissal:e=>e.disablePointerDismissal,openMethod:e=>e.openMethod,descriptionElementId:e=>e.descriptionElementId,titleElementId:e=>e.titleElementId,viewportElement:e=>e.viewportElement,role:e=>e.role};class Rye extends Mh{constructor(n,s,i){const o=new oS,l=Pye(n,o,s,i);super(l,Iye(o),Oye);Cn(this,"setOpen",(n,s)=>{s.preventUnmountOnClose=()=>{this.set("preventUnmountingOnClose",!0)},!n&&s.trigger==null&&this.state.activeTriggerId!=null&&(s.trigger=this.state.activeTriggerElement??void 0),this.context.onOpenChange?.(n,s),!s.isCanceled&&(this.state.floatingRootContext.dispatchOpenChange(n,s),this.update(LR(this.state,n,s.trigger)))})}}function Pye(e,t,n,s=!1){return{...UR(t,n,s),modal:!0,disablePointerDismissal:!1,viewportElement:null,descriptionElementId:void 0,titleElementId:void 0,openMethod:null,nested:!1,nestedOpenDialogCount:0,nestedOpenDrawerCount:0,role:"dialog",...e}}function Iye(e){return{popupRef:p.createRef(),backdropRef:p.createRef(),internalBackdropRef:p.createRef(),outsidePressEnabledRef:{current:!0},triggerElements:e,onOpenChange:void 0,onOpenChangeComplete:void 0}}function MH(e,t){const{children:n,open:s,defaultOpen:i=!1,onOpenChange:o,onOpenChangeComplete:l,disablePointerDismissal:u=!1,modal:d=!0,actionsRef:f,handle:m,triggerId:g,defaultTriggerId:v=null}=t,b=e==="drawer",y=e==="alert-dialog",k=y?!0:d,j=y||u,S=y?"alertdialog":"dialog",N=Vd(!0),C=N!=null,T={modal:k,disablePointerDismissal:j,nested:C,role:S},R=_R((L,$)=>new Rye({open:i,openProp:s,activeTriggerId:v,triggerIdProp:g,...T},L,$),!0);R.useControlledProp("openProp",s),R.useControlledProp("triggerIdProp",g),R.useSyncedValues(T),R.useContextCallback("onOpenChange",o),R.useContextCallback("onOpenChangeComplete",l);const O=R.useState("open"),A=R.useState("mounted"),P=R.useState("payload");Z6(R,O),zR(R);const{forceUnmount:M}=BR(O,R);p.useImperativeHandle(f,()=>({unmount:M,close:()=>R.setOpen(!1,Nt(mR))}),[M,R]);const _=O||A;return r.jsxs(wH.Provider,{value:R,children:[m&&r.jsx(DR,{handle:m,store:R}),_&&r.jsx(Tye,{store:R,parentContext:N?.context,isDrawer:b}),typeof n=="function"?n({payload:P}):n]})}const _H=Jk(function(t){return MH("dialog",t)}),aP=p.forwardRef(function(t,n){const{render:s,className:i,style:o,id:l,...u}=t,d=Vd(),f=Ws(l);return d.useSyncedValueWithCleanup("titleElementId",f),Kt("h2",t,{ref:n,props:[{id:f},u]})});function Mye(e){const t=p.useRef(""),n=p.useCallback(i=>{i.defaultPrevented||(t.current=i.pointerType,e(i,i.pointerType))},[e]);return{onClick:p.useCallback(i=>{if(i.detail===0){e(i,"keyboard");return}"pointerType"in i?e(i,i.pointerType):e(i,t.current),t.current=""},[e]),onPointerDown:n}}function iP(e,t){const n=qe((o,l)=>{(typeof e=="function"?e():e)||t(l||(Ob?"touch":""))}),{onClick:s,onPointerDown:i}=Mye(n);return p.useMemo(()=>({onClick:s,onPointerDown:i}),[s,i])}function DH(e){const[t,n]=p.useState(null),s=iP(e,n);return Vo(e,i=>{i&&!e&&n(null)}),p.useMemo(()=>({openMethod:t,triggerProps:s}),[t,s])}const LH=yR(function(t,n){const{render:s,className:i,style:o,disabled:l=!1,nativeButton:u=!0,id:d,payload:f,handle:m,...g}=t,v=Vd(!0),y=KR(m)??v;if(!y)throw new Error(Kn(79));const k=Ws(d),j=y.useState("floatingRootContext"),S=y.useState("isOpenedByTrigger",k),N=y.useState("triggerPopupId",k),C=p.useRef(null),{registerTrigger:T,isMountedByThisTrigger:R}=$R(k,C,y,{payload:f}),{getButtonProps:O,buttonRef:A}=$i({disabled:l,native:u}),P=Bb(j),M=iP(()=>y.select("open"),$=>{y.set("openMethod",$)}),_={disabled:l,open:S},L=y.useState("triggerProps",R);return Kt("button",t,{state:_,ref:[A,n,T,C],props:[P.reference,L,M,{[SR]:"",id:k,"aria-haspopup":"dialog","aria-expanded":S,"aria-controls":N},g,O],stateAttributesMapping:Ik})});function at(e){return r.jsx(_H,{"data-slot":"dialog",...e})}function $H(e){return r.jsx(LH,{"data-slot":"dialog-trigger",...e})}function _ye(e){return r.jsx(sP,{"data-slot":"dialog-portal",...e})}function zH(e){return r.jsx(Gb,{"data-slot":"dialog-close",...e})}const st=e=>r.jsx(aP,{"data-slot":"dialog-title",...e}),fo=e=>r.jsx(kH,{"data-slot":"dialog-description",...e});function Dye({className:e,...t}){return r.jsx(XR,{"data-slot":"dialog-overlay",className:Ne("fixed inset-0 isolate z-30 bg-mask backdrop-blur-[3px]","transition-opacity duration-150","data-open:animate-in data-open:fade-in-0","data-closed:animate-out data-closed:fade-out-0 data-closed:fill-mode-forwards",e),...t})}function it({className:e,children:t,showCloseButton:n=!0,keepMounted:s=!1,overlayForceRender:i=!1,...o}){return r.jsxs(_ye,{keepMounted:s,children:[r.jsx(Dye,{forceRender:i}),r.jsxs(rP,{"data-slot":"dialog-content",className:Ne("fixed top-1/2 left-1/2 z-30 flex max-h-[calc(100vh-48px)] w-[min(620px,calc(100vw-48px))] -translate-x-1/2 -translate-y-1/2 flex-col","overflow-hidden rounded-lg border border-border bg-surface shadow-3 outline-none","transition-[opacity,transform] duration-200 [transition-timing-function:cubic-bezier(.2,.9,.3,1)]","data-open:animate-in data-open:fade-in-0 data-open:zoom-in-[.985] data-open:slide-in-from-bottom-2.5","data-closed:animate-out data-closed:fade-out-0 data-closed:fill-mode-forwards",e),...o,children:[t,n&&r.jsxs(Gb,{"data-slot":"dialog-close",render:r.jsx(B,{variant:"ghost",size:"icon-sm",className:"absolute top-3 right-3"}),children:[r.jsx("svg",{viewBox:"0 0 12 12",className:"size-3","aria-hidden":"true",children:r.jsx("path",{d:"M2.5 2.5l7 7M9.5 2.5l-7 7",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",fill:"none"})}),r.jsx("span",{className:"sr-only",children:Z("关闭")})]})]})]})}function ot({className:e,...t}){return r.jsx("div",{"data-slot":"dialog-header",className:Ne("flex items-center gap-2.5 border-b border-hairline px-5 py-[15px] pr-10","[&_h2]:flex-1 [&_h2]:text-[14.5px] [&_h2]:font-semibold",e),...t})}function lt({className:e,...t}){return r.jsx("div",{"data-slot":"dialog-body",className:Ne("flex flex-col gap-4 overflow-y-auto px-5 py-[18px]",e),...t})}function pt({className:e,...t}){return r.jsx("div",{"data-slot":"dialog-footer",className:Ne("flex items-center justify-end gap-2 border-t border-hairline bg-surface-2 px-5 py-[13px]",e),...t})}function as({className:e,...t}){return r.jsx("div",{"data-slot":"dialog-section",className:Ne("flex flex-col gap-2.5 rounded-md border border-border bg-surface-inset p-3.5","[&_h3]:text-[12.5px] [&_h3]:font-semibold","[&_p]:text-xs [&_p]:leading-[1.65] [&_p]:text-subtle",e),...t})}function Lye(e){return MH("alert-dialog",e)}const BH=Lye,$ye=sP,FH=e=>r.jsx(aP,{"data-slot":"alert-dialog-title",...e});function zye({className:e,...t}){return r.jsx(XR,{"data-slot":"alert-dialog-overlay",className:Ne("fixed inset-0 isolate z-[38] bg-mask backdrop-blur-[3px]","transition-opacity duration-150","data-open:animate-in data-open:fade-in-0","data-closed:animate-out data-closed:fade-out-0 data-closed:fill-mode-forwards",e),...t})}function UH({className:e,children:t,showCloseButton:n=!1,...s}){return r.jsxs($ye,{children:[r.jsx(zye,{}),r.jsxs(rP,{"data-slot":"alert-dialog-content",className:Ne("fixed top-1/2 left-1/2 z-[38] flex max-h-[calc(100vh-48px)] w-[min(440px,calc(100vw-48px))] -translate-x-1/2 -translate-y-1/2 flex-col","overflow-hidden rounded-lg border border-border bg-surface shadow-3 outline-none","transition-[opacity,transform] duration-200 [transition-timing-function:cubic-bezier(.2,.9,.3,1)]","data-open:animate-in data-open:fade-in-0 data-open:zoom-in-[.985] data-open:slide-in-from-bottom-2.5","data-closed:animate-out data-closed:fade-out-0 data-closed:fill-mode-forwards",e),...s,children:[t,n&&r.jsxs(Gb,{"data-slot":"alert-dialog-close",render:r.jsx(B,{variant:"ghost",size:"icon-sm",className:"absolute top-3 right-3"}),children:[r.jsx("svg",{viewBox:"0 0 12 12",className:"size-3","aria-hidden":"true",children:r.jsx("path",{d:"M2.5 2.5l7 7M9.5 2.5l-7 7",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",fill:"none"})}),r.jsx("span",{className:"sr-only",children:Z("关闭")})]})]})]})}function HH({className:e,...t}){return r.jsx("div",{"data-slot":"alert-dialog-header",className:Ne("flex items-center gap-2.5 border-b border-hairline px-5 py-[15px]","[&_h2]:flex-1 [&_h2]:text-[14.5px] [&_h2]:font-semibold",e),...t})}function VH({className:e,...t}){return r.jsx("div",{"data-slot":"alert-dialog-body",className:Ne("flex flex-col gap-4 overflow-y-auto px-5 py-[18px]",e),...t})}function KH({className:e,...t}){return r.jsx("div",{"data-slot":"alert-dialog-footer",className:Ne("flex items-center justify-end gap-2 border-t border-hairline bg-surface-2 px-5 py-[13px]",e),...t})}function Bye({className:e,tone:t="danger",...n}){return r.jsx("div",{"data-slot":"alert-dialog-banner","data-tone":t,className:Ne("rounded-md border px-3.5 py-3 text-xs leading-[1.65] text-subtle","[&_strong]:font-semibold",t==="danger"?"border-destructive-bd bg-destructive-soft [&_strong]:text-destructive":"border-border bg-surface-inset [&_strong]:text-foreground",e),...n})}function vs({className:e,containerClassName:t,container:n=!0,...s}){const i=r.jsx("table",{"data-slot":"table",className:Ne("w-full caption-bottom border-collapse text-[12.5px]",e),...s});return n?r.jsx("div",{"data-slot":"table-container",className:Ne("relative w-full overflow-auto",t),children:i}):i}function Qs({className:e,...t}){return r.jsx("thead",{"data-slot":"table-header",className:Ne(e),...t})}function Es({className:e,...t}){return r.jsx("tbody",{"data-slot":"table-body",className:Ne(e),...t})}function Fye({className:e,...t}){return r.jsx("tfoot",{"data-slot":"table-footer",className:Ne("border-t border-border bg-surface-2 font-medium",e),...t})}function Jt({className:e,...t}){return r.jsx("tr",{"data-slot":"table-row",className:Ne("transition-colors duration-100 hover:[&>td]:bg-control-hover",e),...t})}function tt({className:e,children:t,sortDirection:n=!1,onSortChange:s,sortLabel:i,...o}){return r.jsx("th",{"data-slot":"table-head",className:Ne("sticky top-0 z-[2] whitespace-nowrap border-b border-border bg-[var(--ui-table-head-bg)] px-2 py-2","text-left text-[10.5px] font-semibold tracking-[.05em] text-muted-foreground",e),...o,"aria-sort":s?n==="asc"?"ascending":n==="desc"?"descending":"none":o["aria-sort"],children:s?r.jsxs(B,{type:"button",variant:"ghost",size:"xs","data-table-sort":"",className:"h-auto max-w-full gap-1 border-0 px-0 py-0 align-middle [font-size:inherit] font-semibold tracking-[inherit] text-inherit hover:bg-transparent active:translate-y-0","aria-label":i,title:[i,o.title].filter(Boolean).join(` +`)||void 0,onClick:()=>s(n==="asc"?"desc":"asc"),children:[r.jsx("span",{className:"min-w-0 truncate",children:t}),r.jsxs("svg",{viewBox:"0 0 24 24",className:"size-3","aria-hidden":"true",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[r.jsx("path",{d:"m8 9 4-4 4 4",className:n==="asc"?"text-primary-fg":"opacity-35"}),r.jsx("path",{d:"m8 15 4 4 4-4",className:n==="desc"?"text-primary-fg":"opacity-35"})]})]}):t})}function Ve({className:e,...t}){return r.jsx("td",{"data-slot":"table-cell",className:Ne("border-b border-hairline px-2 py-2 align-middle",e),...t})}function Uye({className:e,...t}){return r.jsx("caption",{"data-slot":"table-caption",className:Ne("mt-4 text-xs text-muted-foreground",e),...t})}const Hye="data-checked",Vye="data-unchecked",oP={checked(e){return e?{[Hye]:""}:{[Vye]:""}},...Fo,...hc},lP="data-composite-item-active",qH=p.createContext({register:()=>{},unregister:()=>{},subscribeMapChange:()=>()=>{},nextIndexRef:{current:0}});function Kye(){return p.useContext(qH)}function cP(e={}){const{guess:t,label:n,metadata:s,textRef:i,index:o}=e,{register:l,unregister:u,subscribeMapChange:d,nextIndexRef:f}=Kye(),m=p.useRef(-1),[g,v]=p.useState(o==null&&t?()=>{if(m.current===-1){const j=f.current;f.current+=1,m.current=j}return m.current}:-1),b=o??g,y=p.useRef(null),k=p.useCallback(j=>{const S=y.current;S&&u(S),y.current=j,j&&l(j,{metadata:s??null,index:o??null,label:n,textRef:i})},[o,l,u,s,n,i]);return Ge(()=>{if(o==null)return d(j=>{const S=y.current?j.get(y.current)?.index:null;S!=null&&v(S)})},[o,d]),{ref:k,index:b}}function qye(e={}){const{highlightItemOnHover:t,highlightedIndex:n,onHighlightedIndexChange:s}=$F(),{ref:i,index:o}=cP(e),l=n===o,u=p.useRef(null),d=lo(i,u);return{compositeProps:{tabIndex:l?0:-1,onFocus(){s(o)},onMouseMove(){const m=u.current;if(!t||!m)return;const g=m.hasAttribute("disabled")||m.ariaDisabled==="true";!l&&!g&&m.focus()}},compositeRef:d,index:o}}function GH(e){const{render:t,className:n,style:s,state:i=yr,props:o=co,refs:l=co,metadata:u,stateAttributesMapping:d,tag:f="div",...m}=e,{compositeProps:g,compositeRef:v}=qye({metadata:u});return Kt(f,e,{state:i,ref:[v,...l],props:[g,...o,m],stateAttributesMapping:d})}const WH=p.createContext(void 0);function Gye(){return p.useContext(WH)}function wS(e){if(e==null)return"";if(typeof e=="string")return e;try{return JSON.stringify(e)}catch{return String(e)}}const YH=p.createContext(void 0);function Wye(){const e=p.useContext(YH);if(e===void 0)throw new Error(Kn(52));return e}const XH=p.forwardRef(function(t,n){const{render:s,className:i,disabled:o=!1,readOnly:l=!1,required:u=!1,"aria-labelledby":d,value:f,inputRef:m,nativeButton:g=!1,id:v,style:b,...y}=t,k=Gye(),{disabled:j,readOnly:S,required:N,form:C,checkedValue:T,touched:R=!1,validation:O,name:A,setCheckedValue:P=Qn,setTouched:M=Qn,registerInputRef:_=Qn}=k??{},{setTouched:L,setFilled:$,state:D,disabled:F}=uo(),q=Kk(),{labelId:V,getDescriptionProps:Q}=zi(),X=F||q.disabled||j||o,U=S||l,z=N||u,H=C,J=k?T===f:f==="",ee=p.useRef(null),K=p.useRef(null),G=O?.registerInput,Y=p.useCallback(xe=>G?.(xe,{controlRef:ee,value:void 0}),[G]),se=lo(m,K,_,Y);Ge(()=>{K.current?.checked&&$(!0)},[$]),Ge(()=>{if(K.current){if(X&&J){_(null);return}_(K.current)}},[J,X,_]);const re=Ws(),ne=Dd({id:v}),de=g?void 0:ne,ie=UO(d,V,K,!g,de),oe={role:"radio","aria-checked":J,"aria-labelledby":ie,[lP]:J?"":void 0,id:g?ne:re,onKeyDown(xe){xe.key==="Enter"&&xe.preventDefault()},onClick(xe){if(xe.defaultPrevented||X||U)return;xe.preventDefault();const Se=K.current;Se&&og(Se,xe)},onFocus(xe){xe.defaultPrevented||X||U||!R||(K.current?.click(),M(!1))}},{getButtonProps:je,buttonRef:te}=$i({disabled:X,native:g,composite:!1}),le={type:"radio",ref:se,form:H,id:de,name:A,tabIndex:-1,style:A?pg:vu,"aria-hidden":!0,...f!==void 0?{value:wS(f)}:yr,disabled:X,checked:J,required:z,readOnly:U,onChange(xe){if(xe.nativeEvent.defaultPrevented||X||U||f===void 0)return;const Se=Nt(rs,xe.nativeEvent);P(f,Se),!Se.isCanceled&&L(!0)},onClick(xe){xe.stopPropagation()},onFocus(){ee.current?.focus()}},he=p.useMemo(()=>({...D,required:z,disabled:X,readOnly:U,checked:J}),[D,X,U,J,z]),ce=he,ye=k!==void 0,fe=[n,ee,te],Le=[oe,y,je,Q,O?xe=>O.getValidationProps(X,xe):yr],pe=Kt("span",t,{enabled:!ye,state:he,ref:fe,props:Le,stateAttributesMapping:oP});return r.jsxs(YH.Provider,{value:ce,children:[ye?r.jsx(GH,{tag:"span",render:s,className:i,style:b,state:he,refs:fe,props:Le,stateAttributesMapping:oP}):pe,r.jsx("input",{...le,suppressHydrationWarning:!0})]})}),Yye=p.forwardRef(function(t,n){const{render:s,className:i,style:o,keepMounted:l=!1,...u}=t,d=Wye(),f=d.checked,{mounted:m,transitionStatus:g,setMounted:v}=gu(f),b={...d,transitionStatus:g},y=p.useRef(null),k=l||m,j=Kt("span",t,{ref:[n,y],state:b,props:u,stateAttributesMapping:oP});return ji({batch:!0,enabled:!f,open:f,ref:y,onComplete(){f||v(!1)}}),k?j:null});function uP(e){const{children:t,elementsRef:n,labelsRef:s,onMapChange:i}=e,o=qe(i),[,l]=p.useState(!1),u=$s(Qye).current,d=$s(Xye).current,f=p.useRef(0),m=p.useRef(!0),g=p.useRef(null),v=p.useRef(null),b=qe(()=>{m.current||(m.current=!0,l(R=>!R))}),y=qe((R,O)=>{d.set(R,O),b()}),k=qe(R=>{d.delete(R),b()}),j=qe(R=>{const O=new Map;return n.current.length=0,s&&(s.current.length=0),R.forEach(A=>{O.set(A.element,{...A.registration.metadata??{},index:A.index}),n.current[A.index]=A.element,s&&(s.current[A.index]=A.registration.label!==void 0?A.registration.label:A.registration.textRef?.current?.textContent??A.element.textContent)}),f.current=n.current.length,O});function S(R){if(v.current?.disconnect(),v.current=null,typeof MutationObserver!="function"||R.length<2)return;const O=new MutationObserver(P=>{if(!eje(P))return;let M=null;for(const _ of R)if(_.isConnected){if(M&&QH(M,_)>0){O.disconnect(),b();return}M=_}});v.current=O;const A=new Set;for(let P=1;PO.observe(P,{childList:!0}))}const N=qe(()=>{const[R,O]=Zye(d),A=j(R),P=g.current,M=!P||P.length!==R.length||R.some((_,L)=>{const $=P[L];return _.index!==$.index||_.element!==$.element||_.registration.index!==$.registration.index||_.registration.metadata!==$.registration.metadata});S(O),g.current=R,m.current=!1,M&&(u.forEach(_=>_(A)),o(A))});Ge(()=>(!m.current&&g.current&&j(g.current),()=>{n.current=[],s&&(s.current=[])}),[n,s,j]),Ge(()=>{m.current&&N()}),Ge(()=>()=>{v.current?.disconnect(),m.current=!0},[]);const C=qe(R=>(u.add(R),()=>{u.delete(R)})),T=p.useMemo(()=>({register:y,unregister:k,subscribeMapChange:C,nextIndexRef:f}),[y,k,C,f]);return r.jsx(qH.Provider,{value:T,children:t})}function Xye(){return new Map}function Qye(){return new Set}function Zye(e){const t=new Set,n=[],s=[];e.forEach((o,l)=>{if(!l.isConnected)return;const u=o.index,d={index:u??-1,element:l,registration:o};u===null?s.push(d):u>=0&&(t.add(u),n.push(d))});let i=0;return s.sort((o,l)=>QH(o.element,l.element)),s.forEach(o=>{for(;t.has(i);)i+=1;o.index=i,n.push(o),i+=1}),t.size>0&&n.sort((o,l)=>o.index-l.index),[n,s.map(o=>o.element)]}function Jye(e,t){let n=e.parentElement;for(;n&&!n.contains(t);)n=n.parentElement;return n}function eje(e){for(const t of e)for(let n=0;n{if(T.current=N.current[L]??null,(u??y)(L),$){const D=N.current[L];AH(j.current,D,o,n)}}),A=qe(L=>{if(L.size===0)return;if(C.current){const q=N.current,V=q.indexOf(T.current);if(V===-1){const Q=q[R];!Q||Fd(q,R,g)?O(nje(q,g)):T.current=Q}else V!==R&&O(V);return}C.current=!0;const $=Array.from(L.keys()),D=$.find(q=>q?.hasAttribute(lP))??null,F=D?L.get(D)?.index??-1:-1;if(F!==-1)O(F);else if(Fd($,R,g)){const q=Ta($,{disabledIndices:g});Bd($,q)||O(q)}AH(j.current,D,o,n)});Ge(()=>{if(g==null||l!=null||!C.current)return;const L=N.current;if(Fd(L,R,g)){const $=Ta(L,{disabledIndices:g});Bd(L,$)||O($)}},[g,l,R,N,O]);const P=qe((L,$,D)=>i?i(L,$,D,N):D),M=qe(L=>{const $=L.key===tP||L.key===nP;if(!vS.has(L.key)||!f&&$||rje(L,v)||!j.current)return;const F=o==="rtl",q=F?JR:eP,V=F?eP:JR,Q=n==="vertical"?ZR:q,X=n==="vertical"?QR:V,U=Er(L.nativeEvent);if(U!=null&&CH(U)&&!ZH(U)){const G=U.selectionStart,Y=U.selectionEnd,se=U.value;if(G==null||L.shiftKey||G!==Y||L.key!==X&&G0)return}let z=R;const H=Uk(N,g),J=rR(N,g);s!=null&&(z=s({disabledIndices:g,elementsRef:N,event:L,highlightedIndex:R,loopFocus:t,maxIndex:J,minIndex:H,onLoop:P,orientation:n,rtl:F}));const ee=n!=="vertical"&&L.key===q||n!=="horizontal"&&L.key===ZR,K=n!=="vertical"&&L.key===V||n!=="horizontal"&&L.key===QR;f&&(L.key===tP?z=H:L.key===nP&&(z=J)),z===R&&(ee||K)&&(t&&z===J&&ee?(z=H,i&&(z=i(L,R,z,N))):t&&z===H&&K?(z=J,i&&(z=i(L,R,z,N))):z=Ta(N.current,{startingIndex:z,decrement:K,disabledIndices:g})),z!==R&&!Bd(N.current,z)&&(m&&L.stopPropagation(),(k||$||ee||K)&&L.preventDefault(),O(z,!0),queueMicrotask(()=>{N.current[z]?.focus()}))});return{props:{ref:S,onFocus(L){const $=j.current,D=Er(L.nativeEvent);!$||D==null||!CH(D)||D.setSelectionRange(0,D.value.length)},onKeyDown:M},highlightedIndex:R,onHighlightedIndexChange:O,elementsRef:N,onMapChange:A,relayKeyboardEvent:M}}function nje(e,t){let n=-1;for(let s=0;s({highlightedIndex:M,onHighlightedIndexChange:_,highlightItemOnHover:T,relayKeyboardEvent:D}),[M,_,T,D]);return r.jsx(LF.Provider,{value:q,children:r.jsx(uP,{elementsRef:L,onMapChange:V=>{k?.(V),$(V)},children:F})})}const aje=[NH],JH=p.forwardRef(function(t,n){const{render:s,className:i,disabled:o,readOnly:l,required:u,onValueChange:d,value:f,defaultValue:m,form:g,name:v,inputRef:b,id:y,style:k,...j}=t,{setTouched:S,setFocused:N,validationMode:C,name:T,disabled:R,state:O,validation:A,setDirty:P,setFilled:M,validityData:_}=uo(),{labelId:L}=zi(),{clearErrors:$,elementRef:D}=uu(),F=FO(!0),q=R||o,V=T??v,Q=Ws(y),[X,U]=Tl({controlled:f,default:m,name:"RadioGroup",state:"value"}),[z,H]=p.useState(!1),J=qe((te,le)=>{d?.(te,le),!le.isCanceled&&U(te)}),ee=A.getInputControl,K=p.useMemo(()=>({get current(){return ee()}}),[ee]),G=p.useRef(null),Y=p.useRef(null);function se(te){let le;return b&&(typeof b=="function"?le=b(te):b.current=te),G.current=te,le}const re=qe(te=>{if(!te||te.disabled)return;Y.current||(Y.current=te);const le=G.current,he=te.checked||le==null||le.disabled?se(te):void 0;return()=>{Y.current===te&&(Y.current=null),G.current===te?he?(he(),G.current=null):se(null):he?.()}}),ne=qe(()=>{const te=D.current;if(!te)return X??null;for(const le of A.registeredInputs.keys())if(le.checked&&BU(le,te))return X??null;return null});hg(K,Q,X??null,ne,!q,v),Vo(X,()=>{$(V),P(X!==_.initialValue),M(X!=null),A.change(X);const te=Y.current;X==null&&te&&!te.disabled&&se(te)});const de=L??F?.legendId,ie={...O,disabled:q??!1,required:u??!1,readOnly:l??!1},oe=p.useMemo(()=>({checkedValue:X,disabled:q,form:g,validation:A,name:V,readOnly:l,registerInputRef:re,required:u,setCheckedValue:J,setTouched:H,touched:z}),[X,q,g,A,V,l,re,u,J,H,z]),je={id:y,role:"radiogroup","aria-required":u||void 0,"aria-disabled":q||void 0,"aria-readonly":l||void 0,"aria-labelledby":de,onFocus(){N(!0)},onBlur(te){Et(te.currentTarget,te.relatedTarget)||(S(!0),N(!1),C==="onBlur"&&A.commit(X))},onKeyDownCapture(te){te.key.startsWith("Arrow")&&(H(!0),N(!0))}};return r.jsx(WH.Provider,{value:oe,children:r.jsx(sje,{render:s,className:i,style:k,state:ie,props:[je,j,te=>A.getValidationProps(q??!1,te)],refs:[n],stateAttributesMapping:hc,enableHomeAndEndKeys:!1,modifierKeys:aje})})});function bg({className:e,...t}){return r.jsx(JH,{"data-slot":"radio-group",className:Ne("flex flex-col gap-2",e),...t})}function Dh({className:e,children:t,...n}){return r.jsxs(XH,{"data-slot":"radio-group-item",className:Ne("relative inline-flex size-3.5 flex-none cursor-pointer items-center justify-center rounded-full border border-control-border bg-control","outline-none transition-colors duration-150 ease-out","hover:border-control-border-hover","data-checked:border-primary data-checked:bg-primary","focus-visible:shadow-focus","data-disabled:cursor-not-allowed data-disabled:opacity-45",e),...n,children:[t,r.jsx(Yye,{"data-slot":"radio-group-indicator",className:"grid place-content-center data-unchecked:hidden",children:r.jsx("span",{className:"block size-[5px] rounded-full bg-primary-foreground"})})]})}function eV(e){const t=p.useRef(!0);t.current&&(t.current=!1,e())}const tV=p.createContext(void 0),nV=p.createContext(void 0),rV=p.createContext(void 0);function Kd(){const e=p.useContext(tV);if(e===void 0)throw new Error(Kn(60));return e}function dP(){const e=p.useContext(nV);if(e===void 0)throw new Error(Kn(101));return e}function sV(){const e=p.useContext(rV);if(e===void 0)throw new Error(Kn(61));return e}function ije(e,t,n=Object.is){const{length:s}=e;if(s!==t.length)return!1;for(let i=0;iObject.is(e,t);function Ko(e,t,n){return e==null||t==null?Object.is(e,t):n(e,t)}function aV(e,t,n){return Array.isArray(e)&&Array.isArray(t)?!ije(e,t,(s,i)=>Ko(s,i,n)):e!==t}function SS(e,t,n){return e?e.some(s=>s===void 0?!1:Ko(t,s,n)):!1}function yg(e,t,n){return e?e.findIndex(s=>s===void 0?!1:Ko(s,t,n)):-1}function oje(e,t){if(t!==kS)return s=>SS(e,s,t);const n=new Set(e);return n.delete(void 0),s=>n.has(s)&&(s!==0||e.some(i=>Object.is(s,i)))}function Wb(e,t,n,s){const i=s&&Array.isArray(t)?e.findIndex(oje(t,n)):yg(e,t,n);return i===-1?null:i}function iV(e,t,n,s,i,o){return SS(s,t,i)?o!=null&&e>o&&SS(s,n[o],i)?o:e:e===o?Wb(n,s,i,!0):o}function oV(e,t,n){return e.filter(s=>!Ko(t,s,n))}function lje(e){return typeof e=="object"&&e!=null&&Array.isArray(e.items)}function fP(e){return lje(e?.[0])}function NS(e){return fP(e)?e.flatMap(t=>t.items):e}function lV(e){if(!Array.isArray(e))return e!=null&&"null"in e;const t=e;if(fP(t)){for(const n of t)for(const s of n.items)if(s&&s.value==null&&s.label!=null)return!0;return!1}for(const n of t)if(n&&n.value==null&&n.label!=null)return!0;return!1}function qd(e,t){if(t&&e!=null)return t(e)??"";if(e&&typeof e=="object"){if("label"in e&&e.label!=null)return String(e.label);if("value"in e)return String(e.value)}return wS(e)}function Rl(e,t){return t&&e!=null?t(e)??"":e&&typeof e=="object"&&"value"in e&&"label"in e?wS(e.value):wS(e)}function hP(e,t,n){function s(){return qd(e,n)}if(n&&e!=null)return n(e);if(e&&typeof e=="object"&&"label"in e&&e.label!=null)return e.label;if(t&&!Array.isArray(t))return(Object.hasOwn(t,e)?t[e]:void 0)??s();if(Array.isArray(t)){const o=NS(t);if(e==null||typeof e!="object"){const l=o.find(u=>u.value===e);return l&&l.label!=null?l.label:s()}if("value"in e){const l=o.find(u=>u&&u.value===e.value);if(l&&l.label!=null)return l.label}}return s()}function cV(e,t,n){return e.reduce((s,i,o)=>(o>0&&s.push(", "),s.push(r.jsx(p.Fragment,{children:hP(i,t,n)},o)),s),[])}const cje={id:e=>e.id,labelId:e=>e.labelId,modal:e=>e.modal,items:e=>e.items,itemToStringLabel:e=>e.itemToStringLabel,isItemEqualToValue:e=>e.isItemEqualToValue,value:e=>e.value,hasSelectedValue:e=>{const{value:t,multiple:n,itemToStringValue:s}=e;return t==null?!1:n&&Array.isArray(t)?t.length>0:Rl(t,s)!==""},hasNullItemLabel:(e,t)=>t?lV(e.items):!1,open:e=>e.open,mounted:e=>e.mounted,forceMount:e=>e.forceMount,transitionStatus:e=>e.transitionStatus,openMethod:e=>e.openMethod,activeIndex:e=>e.activeIndex,selectedIndex:e=>e.selectedIndex,isActive:(e,t)=>e.activeIndex===t,isSelected:(e,t)=>{const n=e.isItemEqualToValue,s=e.value;return e.multiple?Array.isArray(s)&&s.some(i=>Ko(t,i,n)):Ko(t,s,n)},isSelectedByFocus:(e,t)=>e.selectedIndex===t,popupProps:e=>e.popupProps,triggerProps:e=>e.triggerProps,triggerElement:e=>e.triggerElement,positionerElement:e=>e.positionerElement,listElement:e=>e.listElement,popupSide:e=>e.popupSide,scrollUpArrowVisible:e=>e.scrollUpArrowVisible,scrollDownArrowVisible:e=>e.scrollDownArrowVisible,hasScrollArrows:e=>e.hasScrollArrows},yu=1;function uV(e,t){return Math.max(0,e-t)}function uje(e,t){if(t<=0)return 0;const n=bu(e,0,t),s=n,i=t-n,o=s<=yu,l=i<=yu;return o&&l?s<=i?0:t:o?0:l?t:n}function dje(e){const{id:t,value:n,defaultValue:s=null,onValueChange:i,open:o,defaultOpen:l=!1,onOpenChange:u,name:d,form:f,autoComplete:m,disabled:g=!1,readOnly:v=!1,required:b=!1,modal:y=!0,actionsRef:k,inputRef:j,onOpenChangeComplete:S,items:N,multiple:C=!1,itemToStringLabel:T,itemToStringValue:R,isItemEqualToValue:O=kS,highlightItemOnHover:A=!0,children:P}=e,{clearErrors:M}=uu(),{setDirty:_,setTouched:L,setFocused:$,validityData:D,setFilled:F,name:q,disabled:V,validation:Q,validationMode:X}=uo(),U=Dd({id:t}),z=V||g,H=q??d,[J,ee]=Tl({controlled:n,default:C?s??co:s,name:"Select",state:"value"}),[K,G]=Tl({controlled:o,default:l,name:"Select",state:"open"}),Y=p.useRef([]),se=p.useRef([]),re=p.useRef(null),ne=p.useRef(null),de=p.useRef(0),ie=p.useRef(null),oe=p.useRef([]),je=p.useRef(!1),te=p.useRef(null),le=p.useRef(null),he=p.useRef({allowSelectedMouseUp:!1,allowUnselectedMouseUp:!1,dragY:0}),ce=p.useRef(!1),ye=p.useRef(J),{mounted:fe,setMounted:Le,transitionStatus:pe}=gu(K),{openMethod:xe,triggerProps:Se}=DH(K),ge=$s(()=>new Mh({id:U,labelId:void 0,modal:y,multiple:C,itemToStringLabel:T,itemToStringValue:R,isItemEqualToValue:O,value:J,open:K,mounted:fe,transitionStatus:pe,items:N,forceMount:!1,openMethod:null,activeIndex:null,selectedIndex:null,popupProps:yr,triggerProps:yr,triggerElement:null,positionerElement:null,listElement:null,popupSide:null,scrollUpArrowVisible:!1,scrollDownArrowVisible:!1,hasScrollArrows:!1},{setValue:Qn,setOpen:Qn,handleScrollArrowVisibility:Qn,onOpenChangeComplete:Qn,listRef:Y,popupRef:re,scrollHandlerRef:ne,scrollArrowsMountedCountRef:de,valueRef:ie,valuesRef:oe,labelsRef:se,typingRef:je,selectionRef:he,firstItemTextRef:te,selectedItemTextRef:le,alignItemWithTriggerActiveRef:ce,initialValueRef:ye},cje)).current,ue=ge.useState("activeIndex"),be=ge.useState("selectedIndex"),ve=ge.useState("triggerElement"),De=ge.useState("positionerElement"),Ie=pye(xe),We=xe??Ie,nt=p.useMemo(()=>C?"":Rl(J,R),[C,J,R]),kt=p.useMemo(()=>C&&Array.isArray(J)?J.map(xn=>Rl(xn,R)):Rl(J,R),[C,J,R]),Je=ss(ve),on=qe(()=>kt);hg(Je,U,J,on,!z,d);const nn=C?Array.isArray(J)&&J.length>0:J!=null&&nt!=="";Ge(()=>{F(nn)},[nn,F]),Ge(function(){const jn=Wb(oe.current,J,O,C);jn===null&&(le.current=null),!K&&ge.set("selectedIndex",jn)},[C,K,J,O,ge]),Vo(J,()=>{M(H),_(aV(J,D.initialValue,O)),Q.change(J)});const On=qe((xn,jn)=>{u?.(xn,jn),!jn.isCanceled&&(G(xn),!xn&&(jn.reason===Ud||jn.reason===Xk)&&(L(!0),$(!1),X==="onBlur"&&Q.commit(J)))}),Rn=qe(()=>{Le(!1),ge.update({activeIndex:null,openMethod:null,scrollUpArrowVisible:!1,scrollDownArrowVisible:!1}),S?.(!1)});ji({enabled:!k,open:K,ref:re,onComplete(){K||Rn()}}),p.useImperativeHandle(k,()=>({unmount:Rn}),[Rn]);const xt=qe((xn,jn)=>{i?.(xn,jn),!jn.isCanceled&&ee(xn)}),sn=qe(xn=>{const jn=uV(xn.scrollHeight,xn.clientHeight),ke=uje(xn.scrollTop,jn),Xe=ke>0,Qe=keZH(Y.current[xn]),onMatch(xn){K?ge.set("activeIndex",xn):xt(oe.current[xn],Nt(rs))},onTyping(xn){je.current=xn}}),jt=p.useMemo(()=>oo(Ht.reference,Tt.reference,ht.reference,zt.reference,Se),[zt.reference,Ht.reference,Tt.reference,ht.reference,Se]),an=p.useMemo(()=>oo(Ub,Ht.floating,Tt.floating,ht.floating),[Ht.floating,Tt.floating,ht.floating]),Xt=Tt.item??yr;ge.useContextCallback("setValue",xt),ge.useContextCallback("setOpen",On),ge.useContextCallback("handleScrollArrowVisibility",sn),ge.useContextCallback("onOpenChangeComplete",S),eV(()=>{ge.update({popupProps:an,triggerProps:jt})}),ge.useSyncedValues({id:U,modal:y,multiple:C,value:J,open:K,mounted:fe,transitionStatus:pe,popupProps:an,triggerProps:jt,items:N,itemToStringLabel:T,itemToStringValue:R,isItemEqualToValue:O,openMethod:We});const gn=p.useMemo(()=>({disabled:z,readOnly:v,required:b,multiple:C,highlightItemOnHover:A,itemProps:Xt}),[z,v,b,C,A,Xt]),un=lo(j,Q.inputRef),cr=C?void 0:H,yn=p.useMemo(()=>!C||!Array.isArray(J)||!H?null:J.map(xn=>{const jn=Rl(xn,R);return r.jsx("input",{type:"hidden",form:f,name:H,value:jn,disabled:z},jn)}),[C,J,f,H,R,z]);return r.jsxs(tV.Provider,{value:ge,children:[r.jsx(nV.Provider,{value:gn,children:r.jsx(rV.Provider,{value:Ke,children:P})}),r.jsx("input",{...Q.getValidationProps(z,{onFocus(){ge.state.triggerElement?.focus({focusVisible:!0})},onChange(xn){if(xn.nativeEvent.defaultPrevented||z||v)return;const jn=xn.currentTarget.value,ke=Nt(rs,xn.nativeEvent);function Xe(){if(C)return;const Qe=jn.toLowerCase();let Yt=oe.current.findIndex(fn=>Rl(fn,R).toLowerCase()===Qe||qd(fn,T).toLowerCase()===Qe);Yt===-1&&(Yt=oe.current.findIndex((fn,At)=>{const Re=se.current[At];return Re!=null&&Re.toLowerCase()===Qe}));const Rt=oe.current[Yt];Rt!=null&&xt(Rt,ke)}ge.set("forceMount",!0),queueMicrotask(Xe)}}),id:U&&cr==null?`${U}-hidden-input`:void 0,form:f,name:cr,autoComplete:m,value:nt,disabled:z,required:b&&!(C&&nn),readOnly:v,ref:un,style:H?pg:vu,tabIndex:-1,"aria-hidden":!0,suppressHydrationWarning:!0}),yn]})}function dV(e,t){return e??t}const CS=5;function fV(e,t){const n=fje(t);return e.clientX>=n.left-CS&&e.clientX<=n.right+CS&&e.clientY>=n.top-CS&&e.clientY<=n.bottom+CS}function fje(e){const t=e.getBoundingClientRect(),n=vr(e);if(HO)return t;const s=n.getComputedStyle(e,"::before"),i=n.getComputedStyle(e,"::after");if(!(s.content!=="none"||i.content!=="none"))return t;const l=parseFloat(s.width)||0,u=parseFloat(s.height)||0,d=parseFloat(i.width)||0,f=parseFloat(i.height)||0,m=Math.max(t.width,l,d),g=Math.max(t.height,u,f),v=m-t.width,b=g-t.height;return{left:t.left-v/2,right:t.right+v/2,top:t.top-b/2,bottom:t.bottom+b/2}}const hje="data-popup-side",mje=400,pje={...GO,...hc,popupSide:e=>e?{[hje]:e}:null,value:()=>null},gje=p.forwardRef(function(t,n){const{render:s,className:i,id:o,disabled:l=!1,nativeButton:u=!0,style:d,...f}=t,{setTouched:m,setFocused:g,validationMode:v,validation:b,state:y,disabled:k}=uo(),{labelId:j}=zi(),S=Kd(),{readOnly:N,required:C,disabled:T}=dP(),R=k||T||l,O=S.useState("open"),A=S.useState("mounted"),P=S.useState("value"),M=S.useState("triggerProps"),_=S.useState("positionerElement"),L=S.useState("listElement"),$=S.useState("popupSide"),D=S.useState("id"),F=S.useState("labelId"),q=S.useState("hasSelectedValue"),V=A&&_?$:null,Q=o??D,X=dV(j,F);Dd({id:o});const U=ss(_),z=p.useRef(null),{getButtonProps:H,buttonRef:J}=$i({disabled:R,native:u}),ee=S.useStateSetter("triggerElement"),K=fa(),G=fa(),Y=fa();p.useEffect(()=>{if(O)return Y.start(mje,()=>{S.context.selectionRef.current.allowUnselectedMouseUp=!0,S.context.selectionRef.current.allowSelectedMouseUp=!0}),()=>{Y.clear()};S.context.selectionRef.current={allowSelectedMouseUp:!1,allowUnselectedMouseUp:!1,dragY:0},G.clear()},[O,S,G,Y]);const se=oo(M,{id:Q,role:"combobox","aria-expanded":O,"aria-haspopup":"listbox","aria-controls":O?L?.id??Lk(_)?.id:void 0,"aria-labelledby":X,"aria-readonly":N||void 0,"aria-required":C||void 0,tabIndex:R?-1:0,onFocus(de){g(!0),O&&S.context.alignItemWithTriggerActiveRef.current&&S.context.setOpen(!1,Nt(rs,de.nativeEvent)),K.start(0,()=>{S.set("forceMount",!0)})},onBlur(de){Et(_,de.relatedTarget)||(m(!0),g(!1),v==="onBlur"&&b.commit(P))},onMouseDown(de){if(O)return;const ie=_n(de.currentTarget);function oe(je){if(!z.current)return;const te=je.target;Et(z.current,te)||Et(U.current,te)||fV(je,z.current)||S.context.setOpen(!1,Nt(KU,je))}G.start(0,()=>{ie.addEventListener("mouseup",oe,{once:!0})})}},f,H),re=b.getValidationProps(R,se);re.role="combobox";const ne={...y,open:O,disabled:R,value:P,readOnly:N,popupSide:V,placeholder:!q};return Kt("button",t,{ref:[n,z,J,ee],state:ne,stateAttributesMapping:pje,props:re})}),xje={value:()=>null},vje=p.forwardRef(function(t,n){const{className:s,render:i,children:o,placeholder:l,style:u,...d}=t,f=Kd(),m=f.useState("value"),g=f.useState("items"),v=f.useState("itemToStringLabel"),b=f.useState("hasSelectedValue"),y=!b&&l!=null&&o==null,k=f.useState("hasNullItemLabel",y),j={value:m,placeholder:!b};let S=null;return typeof o=="function"?S=o(m):o!=null?S=o:y&&!k?S=l:Array.isArray(m)?S=cV(m,g,v):S=hP(m,g,v),Kt("span",t,{state:j,ref:[n,f.context.valueRef],props:[{children:S},d],stateAttributesMapping:xje})}),bje=p.forwardRef(function(t,n){const{render:s,className:i,style:o,...l}=t,f={open:Kd().useState("open")};return Kt("span",t,{state:f,ref:n,props:[{"aria-hidden":!0,children:"▼"},l],stateAttributesMapping:Ik})}),yje=p.forwardRef(function(t,n){const s=Kd(),i=s.useState("mounted"),o=s.useState("forceMount");return i||o?r.jsx(nS,{ref:n,...t}):null}),hV=p.createContext(void 0);function jje(){const e=p.useContext(hV);if(!e)throw new Error(Kn(59));return e}function AS(e,t){e&&Object.assign(e.style,t)}const wje={position:"relative",maxHeight:"100%",overflowX:"hidden",overflowY:"auto"},kje=20;function mP(e,t,n,s){const[i,o]=p.useState(!1);Ge(()=>{if(!e||!t||n==null){o(!1);return}const l=_n(n).documentElement.clientWidth,u=n.offsetWidth;o(l>0&&u>0&&u>=l-kje)},[e,t,n]),IH(e&&(!t||i),s)}const Sje={position:"fixed"},Nje=p.forwardRef(function(t,n){const{anchor:s,className:i,render:o,positionMethod:l,side:u,align:d,sideOffset:f,alignOffset:m,collisionBoundary:g="clipping-ancestors",collisionPadding:v,arrowPadding:b,sticky:y,disableAnchorTracking:k,alignItemWithTrigger:j=!0,collisionAvoidance:S=g6,style:N,...C}=t,T=Kd(),R=sV(),O=T.useState("open"),A=T.useState("mounted"),P=T.useState("modal"),M=T.useState("value"),_=T.useState("openMethod"),L=T.useState("positionerElement"),$=T.useState("triggerElement"),D=T.useState("isItemEqualToValue"),F=T.useState("transitionStatus"),q=p.useRef(null),V=p.useRef(null),[Q,X]=p.useState(j),U=A&&Q&&_!=="touch";!A&&Q!==j&&X(j),p.useImperativeHandle(T.context.alignItemWithTriggerActiveRef,()=>U),mP((U||P)&&O,_==="touch",L,$);const z=pS({anchor:s,floatingRootContext:R,positionMethod:l,mounted:A,side:u,sideOffset:f,align:d,alignOffset:m,arrowPadding:b,collisionBoundary:g,collisionPadding:v,sticky:y,disableAnchorTracking:k??U,collisionAvoidance:S,keepMounted:!0}),H=U?"none":z.side,J=U?Sje:z.positionerStyles,ee={open:O,side:H,align:z.align,anchorHidden:z.anchorHidden};Ge(()=>{T.set("popupSide",z.side)},[T,z.side]);const K=T.useStateSetter("positionerElement"),G=gS(t,ee,{styles:J,transitionStatus:F,props:C,refs:[n,K],hidden:!A,inert:!O}),Y=p.useRef(0),se=qe(ne=>{if(T.context.valuesRef.current.length===0)return;const de=Y.current;Y.current=ne.size;const ie=Nt(rs);if(de!==0&&!T.state.multiple&&M!==null&&yg(T.context.valuesRef.current,M,D)===-1){const je=T.context.initialValueRef.current,le=je!=null&&yg(T.context.valuesRef.current,je,D)!==-1?je:null;T.context.setValue(le,ie),le===null&&(T.set("selectedIndex",null),T.context.selectedItemTextRef.current=null)}if(de!==0&&T.state.multiple&&Array.isArray(M)){const oe=M.filter(je=>yg(T.context.valuesRef.current,je,D)!==-1);oe.length!==M.length&&(T.context.setValue(oe,ie),oe.length===0&&(T.set("selectedIndex",null),T.context.selectedItemTextRef.current=null))}if(O&&U){T.update({scrollUpArrowVisible:!1,scrollDownArrowVisible:!1});const oe={height:""};AS(L,oe),AS(T.context.popupRef.current,oe)}}),re=p.useMemo(()=>({...z,side:H,alignItemWithTriggerActive:U,setControlledAlignItemWithTrigger:X,scrollUpArrowRef:q,scrollDownArrowRef:V}),[z,H,U,X]);return r.jsx(uP,{elementsRef:T.context.listRef,labelsRef:T.context.labelsRef,onMapChange:se,children:r.jsxs(hV.Provider,{value:re,children:[A&&P&&r.jsx(yS,{inert:qb(!O),cutout:$}),G]})})}),ES="base-ui-disable-scrollbar",mV={className:ES,getElement(e){return r.jsx("style",{nonce:e,href:ES,precedence:"base-ui:low",children:`.${ES}{scrollbar-width:none}.${ES}::-webkit-scrollbar{display:none}`})}},Cje=p.createContext(void 0);function pV(e){return p.useContext(Cje)}const Aje=p.createContext(void 0),Eje={disableStyleElements:!1};function Tje(){return p.useContext(Aje)??Eje}const gV="--transform-origin",Oje={...cg,...Fo},Rje=p.forwardRef(function(t,n){const{render:s,className:i,style:o,finalFocus:l,...u}=t,d=Kd(),{multiple:f,readOnly:m,highlightItemOnHover:g}=dP(),v=sV(),{side:b,align:y,alignItemWithTriggerActive:k,isPositioned:j,setControlledAlignItemWithTrigger:S}=jje(),N=pV()!=null,C=Vb(),{nonce:T,disableStyleElements:R}=Tje(),O=d.useState("id"),A=d.useState("open"),P=d.useState("openMethod"),M=d.useState("mounted"),_=d.useState("popupProps"),L=d.useState("transitionStatus"),$=d.useState("triggerElement"),D=d.useState("positionerElement"),F=d.useState("listElement"),q=p.useRef(!1),V=p.useRef(!1),Q=p.useRef({}),X=fg(),U=qe(ee=>{if(!D||!d.context.popupRef.current||!V.current)return;const K=D.style.top==="0px",G=D.style.bottom==="0px";if(q.current||!k||!K&&!G){d.context.handleScrollArrowVisibility(ee);return}const Y=vV(D),se=Yb(D.getBoundingClientRect().height,"y",Y),re=_n(D),ne=vr(D),de=ne.getComputedStyle(D),ie=parseFloat(de.marginTop),oe=parseFloat(de.marginBottom),je=xV(ne.getComputedStyle(d.context.popupRef.current)),te=Math.min(re.documentElement.clientHeight-ie-oe,je),le=ee.scrollTop,he=TS(ee);let ce=null;const ye=xe=>{D.style.height=`${xe}px`},fe=K?he-le:le,Le=Math.min(se+fe,te);if(fe<=yu){const xe=bu(fe,0,te-se);xe>0&&ye(se+xe),ee.scrollTop=K?he:0,te-(se+xe)<=yu&&(q.current=!0),d.context.handleScrollArrowVisibility(ee);return}if(te-Le>yu)ce=K?1/0:0;else if(G&&leyu&&(ee.scrollTop=xe)}pe>=te-yu&&(q.current=!0),d.context.handleScrollArrowVisibility(ee)});p.useImperativeHandle(d.context.scrollHandlerRef,()=>U,[U]),ji({open:A,ref:d.context.popupRef,onComplete(){A&&d.context.onOpenChangeComplete(!0)}});const z={open:A,transitionStatus:L,side:b,align:y};Ge(()=>{!D||!d.context.popupRef.current||Object.keys(Q.current).length||(Q.current={top:D.style.top||"0",left:D.style.left||"0",right:D.style.right,height:D.style.height,bottom:D.style.bottom,minHeight:D.style.minHeight,maxHeight:D.style.maxHeight,marginTop:D.style.marginTop,marginBottom:D.style.marginBottom})},[d,D]),Ge(()=>{A||k||(V.current=!1,q.current=!1,AS(D,Q.current))},[A,k,D]),Ge(()=>{const ee=d.context.popupRef.current;if(!A||!$||!D||!ee||k&&!j||d.state.transitionStatus==="ending")return;if(V.current=!0,ee.style.removeProperty(gV),!k){X.request(()=>d.context.handleScrollArrowVisibility(F||ee));return}const K=Pje(ee);try{let G=d.context.selectedItemTextRef.current;G?.isConnected||(G=!d.select("hasSelectedValue")&&d.context.firstItemTextRef.current?.isConnected?d.context.firstItemTextRef.current:null);const Y=d.context.valueRef.current,se=vr(D),re=se.getComputedStyle(D),ne=se.getComputedStyle(ee),de=_n($),ie=vV($),oe=OS($.getBoundingClientRect(),ie),je=OS(D.getBoundingClientRect(),ie),te=oe.height,le=F||ee,he=le.scrollHeight,ce=parseFloat(ne.borderBottomWidth),ye=parseFloat(re.marginTop)||10,fe=parseFloat(re.marginBottom)||10,Le=parseFloat(re.minHeight)||100,pe=xV(ne),xe=5,Se=5,ge=20,ue=de.documentElement.clientHeight-ye-fe,be=de.documentElement.clientWidth,ve=ue-oe.bottom+te;let De,Ie=C==="rtl"?oe.right-je.width:oe.left,We=0;if(G&&Y){const zt=OS(Y.getBoundingClientRect(),ie);De=OS(G.getBoundingClientRect(),ie),Ie=je.left+(C==="rtl"?zt.right-De.right:zt.left-De.left);const ht=zt.top-oe.top+zt.height/2;We=De.top-je.top+De.height/2-ht}const nt=ve+We+fe+ce;let kt=Math.min(ue,nt);const Je=ue-ye-fe,on=nt-kt,nn=be-Se;D.style.left=`${bu(Ie,xe,nn-je.width)}px`,D.style.height=`${kt}px`,D.style.maxHeight="none",D.style.marginTop=`${ye}px`,D.style.marginBottom=`${fe}px`,ee.style.height="100%";const On=TS(le),Rn=on>=On-yu;Rn&&(kt=Math.min(ue,je.height)-(on-On));const xt=oe.topue-ge||Math.ceil(kt)+yu=Je?"0":`${zt}px`,D.style.height=`${kt}px`,le.scrollTop=TS(le)}else D.style.bottom="0",le.scrollTop=on;if(De){const zt=je.top,ht=je.height,Tt=De.top+De.height/2,Ht=bu(ht>0?(Tt-zt)/ht*100:50,0,100);ee.style.setProperty(gV,`50% ${Ht}%`)}(Ke===ue||kt>=pe)&&(q.current=!0),d.context.handleScrollArrowVisibility(le),g&&d.state.selectedIndex===null&&d.state.activeIndex===null&&d.context.listRef.current[0]!=null&&d.set("activeIndex",0)}finally{K()}},[d,A,D,$,k,S,X,F,g,C,j]),p.useEffect(()=>{if(!k||!D||!A)return;const ee=vr(D);function K(G){d.context.setOpen(!1,Nt(Cxe,G))}return kn(ee,"resize",K)},[d,k,D,A]);const H={...F?{role:"presentation"}:{role:"listbox","aria-multiselectable":f||void 0,"aria-readonly":m||void 0,id:`${O}-list`},onKeyDown(ee){N&&vS.has(ee.key)&&ee.stopPropagation()},onScroll(ee){F||U(ee.currentTarget)},...k&&{style:F?{height:"100%"}:wje},className:!F&&k?mV.className:void 0},J=Kt("div",t,{ref:[n,d.context.popupRef],state:z,stateAttributesMapping:Oje,props:[_,H,Kb(L),u]});return r.jsxs(p.Fragment,{children:[!R&&mV.getElement(T),r.jsx(rS,{context:v,modal:!1,disabled:!M,openInteractionType:P,returnFocus:l,restoreFocus:!0,children:J})]})});function xV(e){const t=e.maxHeight;return t.endsWith("px")&&parseFloat(t)||1/0}function TS(e){return uV(e.scrollHeight,e.clientHeight)}function vV(e){return L6.getScale(e)}function Yb(e,t,n){return e/n[t]}function OS(e,t){return Rb({x:Yb(e.x,"x",t),y:Yb(e.y,"y",t),width:Yb(e.width,"x",t),height:Yb(e.height,"y",t)})}const bV=[["transform","none"],["scale","1"],["translate","0 0"]];function Pje(e){const{style:t}=e,n={};for(const[s,i]of bV)n[s]=t.getPropertyValue(s),t.setProperty(s,i,"important");return()=>{for(const[s]of bV){const i=n[s];i?t.setProperty(s,i):t.removeProperty(s)}}}const yV=p.createContext(void 0);function pP(){const e=p.useContext(yV);if(!e)throw new Error(Kn(57));return e}const Ije=p.memo(p.forwardRef(function(t,n){const{render:s,className:i,style:o,value:l=null,label:u,disabled:d=!1,nativeButton:f=!1,...m}=t,g=p.useRef(null),v=cP({guess:!0,label:u,textRef:g}),b=Kd(),{itemProps:y,multiple:k,disabled:j,readOnly:S}=dP(),N=j||d,C=b.useState("isActive",v.index),T=b.useState("open"),R=b.useState("isSelected",l),O=b.useState("isSelectedByFocus",v.index),A=b.useState("isItemEqualToValue"),P=v.index,M=p.useRef(null);Ge(()=>{const z=b.context.valuesRef.current;return z[P]=l,()=>{delete z[P]}},[P,l,b]),Ge(()=>{const z=b.state.value,H=b.state.selectedIndex;let J=H,ee;k&&Array.isArray(z)?(J=iV(P,l,b.context.valuesRef.current,z,A,H),ee=J===P,P===H&&!ee&&(b.context.selectedItemTextRef.current=null)):(ee=z!==void 0&&Ko(l,z,A),ee&&(J=P)),b.set("selectedIndex",J),ee&&g.current&&(b.context.selectedItemTextRef.current=g.current)},[P,k,A,b,l]);const _=p.useRef("mouse"),L=p.useRef(!1),{getButtonProps:$,buttonRef:D}=$i({disabled:N,focusableWhenDisabled:!0,native:f,composite:!0}),F={disabled:N,selected:R,highlighted:C};function q(z){if(j||S)return;const H=b.state.value;if(k){const J=Array.isArray(H)?H:[],ee=R?oV(J,l,A):[...J,l];b.context.setValue(ee,Nt(Mb,z))}else b.context.setValue(l,Nt(Mb,z)),b.context.setOpen(!1,Nt(Mb,z))}function V(){b.context.selectionRef.current.dragY=0}const Q={role:"option","aria-selected":R,tabIndex:T&&C?0:-1,onKeyDown(z){b.set("activeIndex",P),z.key===" "&&b.context.typingRef.current&&z.preventDefault()},onClick(z){const H=_.current!=="touch",J=z.nativeEvent.pointerType,ee=H&&$k(z.nativeEvent)&&(J!==void 0||C),K=H&&!ee&&!L.current;L.current=!1,!(N||K)&&q(z.nativeEvent)},onPointerEnter(z){_.current=z.pointerType},onPointerMove(z){if(z.pointerType==="mouse"&&z.buttons===1){const H=b.context.selectionRef.current;H.dragY+=z.movementY,H.dragY**2>=64&&(H.allowUnselectedMouseUp=!0)}},onPointerDown(z){_.current=z.pointerType,L.current=!0,V()},onMouseUp(){if(V(),N||_.current==="touch"||L.current)return;const z=!b.context.selectionRef.current.allowSelectedMouseUp&&R,H=!b.context.selectionRef.current.allowUnselectedMouseUp&&!R;z||H||(L.current=!0,M.current?.click(),L.current=!1)}},X=Kt("div",t,{ref:[D,n,v.ref,M],state:F,props:[y,Q,m,$]}),U=p.useMemo(()=>({selected:R,index:P,textRef:g,selectedByFocus:O}),[R,P,g,O]);return r.jsx(yV.Provider,{value:U,children:X})})),Mje=p.forwardRef(function(t,n){const{selected:s}=pP();return t.keepMounted||s?r.jsx(_je,{...t,ref:n}):null}),_je=p.memo(p.forwardRef((e,t)=>{const{render:n,className:s,style:i,keepMounted:o,...l}=e,{selected:u}=pP(),d=p.useRef(null),{transitionStatus:f,setMounted:m}=gu(u),v=Kt("span",e,{ref:[t,d],state:{selected:u,transitionStatus:f},props:[{"aria-hidden":!0,children:"✔️"},l],stateAttributesMapping:Fo});return ji({batch:!0,enabled:!u,open:u,ref:d,onComplete(){u||m(!1)}}),v})),Dje=p.memo(p.forwardRef(function(t,n){const{index:s,textRef:i,selectedByFocus:o}=pP(),l=Kd(),{render:u,className:d,style:f,...m}=t,g=p.useCallback(b=>{b&&(s===0&&(l.context.firstItemTextRef.current=b),o&&(l.context.selectedItemTextRef.current=b))},[l,s,o]);return Kt("div",t,{ref:[g,n,i],props:m})})),jV=p.createContext(void 0);function Lje(){const e=p.useContext(jV);if(e===void 0)throw new Error(Kn(56));return e}const $je=p.forwardRef(function(t,n){const{render:s,className:i,style:o,...l}=t,[u,d]=p.useState(),f=p.useMemo(()=>({labelId:u,setLabelId:d}),[u,d]),m=Kt("div",t,{ref:n,props:[{role:"group","aria-labelledby":u},l]});return r.jsx(jV.Provider,{value:f,children:m})}),zje=p.forwardRef(function(t,n){const{render:s,className:i,style:o,id:l,...u}=t,{setLabelId:d}=Lje(),f=Ws(l);return Ge(()=>(d(f),()=>{d(g=>g===f?void 0:g)}),[f,d]),Kt("div",t,{ref:n,props:[{id:f,"aria-hidden":!0},u]})}),Bje=p.forwardRef(function(t,n){const{className:s,render:i,orientation:o="horizontal",style:l,...u}=t;return Kt("div",t,{state:{orientation:o},ref:n,props:[{role:"presentation"},u]})});function wV(e,t){const[n,s]=p.useState();return p.useLayoutEffect(()=>{if(!t)return;const i=e?.closest('[role="dialog"], [role="alertdialog"]'),o=e?.ownerDocument.defaultView;if(!e||!i||!o){s(void 0);return}const l=[i];for(let u=e.parentElement;u&&u!==i;u=u.parentElement){const d=o.getComputedStyle(u);(/(auto|scroll)/.test(`${d.overflowX} ${d.overflowY}`)||u.matches('[data-slot="dialog-body"], [data-slot="sheet-body"], [data-slot="alert-dialog-body"]'))&&l.push(u)}s(l)},[e,t]),n}const RS=p.createContext(null);function Pt({open:e,defaultOpen:t=!1,onOpenChange:n,children:s,...i}){const[o,l]=p.useState(t),[u,d]=p.useState(null),[f,m]=p.useState(!1),g=e??o;p.useLayoutEffect(()=>{g&&m(!1)},[g]);const v=p.useCallback((k,j)=>{n?.(k,j),!j.isCanceled&&(k&&m(!1),l(k))},[n]),b=p.useCallback(()=>{if(!g||f)return;const k=Nt("none",void 0,u??void 0);v(!1,k),k.isCanceled||m(!0)},[g,f,u,v]),y=p.useMemo(()=>({open:g,trigger:u,setTrigger:d,closeOnAnchorHidden:b,closedOnAnchorHidden:f}),[g,u,b,f]);return r.jsx(RS.Provider,{value:y,children:r.jsx(dje,{...i,open:g,onOpenChange:v,children:s})})}function Fje({anchorHidden:e,open:t,...n}){const i=p.useContext(RS)?.closeOnAnchorHidden;return p.useLayoutEffect(()=>{t&&e&&i?.()},[t,e,i]),r.jsx("div",{...n})}const It=vje,Uje=$je,Hje=zje,Vje=Bje;function Mt({className:e,children:t,ref:n,...s}){const i=p.useContext(RS);return Th({render:r.jsx(gje,{}),ref:[n??null,i?.setTrigger??null],props:{...s,"data-slot":"select-trigger",className:Ne("inline-flex h-[30px] min-w-0 cursor-pointer items-center justify-between gap-1.5 rounded-md border border-control-border bg-control px-2.5","[&>span]:min-w-0 [&>span]:truncate","text-[12.5px] font-normal text-foreground max-[767px]:h-10 max-[767px]:text-base","transition-colors duration-150 ease-out","hover:border-control-border-hover hover:bg-control-hover","focus-visible:border-primary focus-visible:shadow-focus focus-visible:outline-none","data-disabled:cursor-not-allowed data-disabled:bg-control data-disabled:text-muted-foreground data-disabled:opacity-60",e),children:r.jsxs(r.Fragment,{children:[t,r.jsx(bje,{className:"flex flex-none text-muted-foreground transition-transform duration-[180ms] data-popup-open:rotate-180",children:r.jsx("svg",{viewBox:"0 0 10 6",className:"size-2.5","aria-hidden":"true",children:r.jsx("path",{d:"M1 1l4 4 4-4",stroke:"currentColor",strokeWidth:"1.4",fill:"none",strokeLinecap:"round",strokeLinejoin:"round"})})})]})}})}function _t({className:e,sideOffset:t=4,children:n,finalFocus:s,...i}){const o=p.useContext(RS),l=wV(o?.trigger??null,o?.open??!1);return r.jsx(yje,{children:r.jsx(Nje,{sideOffset:t,alignItemWithTrigger:!1,collisionBoundary:l,className:"z-[35] data-anchor-hidden:invisible data-anchor-hidden:pointer-events-none",render:(u,d)=>r.jsx(Fje,{...u,anchorHidden:d.anchorHidden,open:d.open}),children:r.jsx(Rje,{"data-slot":"select-content",className:Ne("max-h-[min(260px,var(--available-height))] min-w-[min(var(--anchor-width),var(--available-width))] max-w-[var(--available-width)] overflow-y-auto overscroll-contain rounded-lg border border-border-strong bg-raised p-[5px] shadow-3","outline-none","data-open:animate-in data-open:fade-in-0","data-closed:animate-out data-closed:fade-out-0",e),finalFocus:o?.closedOnAnchorHidden?!1:s,...i,children:n})})})}function Ze({className:e,children:t,...n}){return r.jsxs(Ije,{"data-slot":"select-item",className:Ne("flex min-h-7 cursor-pointer items-center gap-2 rounded-sm px-[9px] text-[12.5px] leading-[1.4] text-foreground select-none","transition-colors duration-[120ms] ease-out","data-[highlighted]:bg-nav-hover","data-[selected]:bg-primary-soft data-[selected]:font-semibold data-[selected]:text-primary-fg","data-[highlighted]:data-[selected]:bg-primary-tint","data-disabled:pointer-events-none data-disabled:font-normal data-disabled:text-muted-foreground",e),...n,children:[r.jsx(Dje,{className:"min-w-0 flex-1 truncate",children:t}),r.jsx(Mje,{className:"flex flex-none text-primary",children:r.jsx("svg",{viewBox:"0 0 12 12",className:"size-3","aria-hidden":"true",children:r.jsx("path",{d:"M2.5 6.2 4.8 8.5 9.5 3.8",stroke:"currentColor",strokeWidth:"1.8",fill:"none",strokeLinecap:"round",strokeLinejoin:"round"})})})]})}function Kje(e,t,n,s,i,o,l,u,d,f=2){const m=nxe(n.current,{event:e,orientation:s,loopFocus:i,rtl:o,cols:f,disabledIndices:l,minIndex:u,maxIndex:d,prevIndex:t>d?u:t,stopEvent:!0});return Bd(n.current,m)?void 0:m}const kV=p.createContext(void 0),SV=p.createContext(void 0),NV=p.createContext(void 0),CV=p.createContext(!1),AV=p.createContext("");function qo(){const e=p.useContext(kV);if(!e)throw new Error(Kn(22));return e}function PS(){const e=p.useContext(SV);if(!e)throw new Error(Kn(23));return e}function Xb(){const e=p.useContext(NV);if(!e)throw new Error(Kn(24));return e}function EV(){return p.useContext(AV)}function qje(){return p.useContext(CV)}const Gje={id:e=>e.id,labelId:e=>e.labelId,items:e=>e.items,selectedValue:e=>e.selectedValue,hasSelectionChips:e=>{const t=e.selectedValue;return Array.isArray(t)&&t.length>0},hasSelectedValue:e=>{const{selectedValue:t,selectionMode:n}=e;return t==null?!1:n==="multiple"&&Array.isArray(t)?t.length>0:!0},hasNullItemLabel:(e,t)=>t?lV(e.items):!1,open:e=>e.open,mounted:e=>e.mounted,forceMounted:e=>e.forceMounted,inline:e=>e.inline,activeIndex:e=>e.activeIndex,selectedIndex:e=>e.selectedIndex,isActive:(e,t)=>e.activeIndex===t,isSelected:(e,t)=>{const n=e.isItemEqualToValue,s=e.selectedValue;return Array.isArray(s)?s.some(i=>Ko(t,i,n)):Ko(t,s,n)},transitionStatus:e=>e.transitionStatus,popupProps:e=>e.popupProps,listProps:e=>e.listProps,inputProps:e=>e.inputProps,triggerProps:e=>e.triggerProps,itemProps:e=>e.itemProps,positionerElement:e=>e.positionerElement,listElement:e=>e.listElement,popupId:e=>e.popupId,triggerElement:e=>e.triggerElement,inputElement:e=>e.inputElement,inputGroupElement:e=>e.inputGroupElement,popupSide:e=>e.popupSide,openMethod:e=>e.openMethod,inputInsidePopup:e=>e.inputInsidePopup,inputOwnsFormValue:e=>e.inputOwnsFormValue,selectionMode:e=>e.selectionMode,name:e=>e.name,form:e=>e.form,disabled:e=>e.disabled,readOnly:e=>e.readOnly,required:e=>e.required,grid:e=>e.grid,virtualized:e=>e.virtualized,itemToStringLabel:e=>e.itemToStringLabel,isItemEqualToValue:e=>e.isItemEqualToValue,modal:e=>e.modal,autoHighlight:e=>e.autoHighlight};function TV(e){return e==null?void 0:`${e}-popup`}function Wje(e,t){return(n,s)=>n==null?!1:e.contains(n,s,t)}const OV=new Map;function Yje(e={}){const t={usage:"search",sensitivity:"base",ignorePunctuation:!0,...e},n=`${gR(e.locale)}|${JSON.stringify(t)}`,s=OV.get(n);if(s)return s;const i=new Intl.Collator(e.locale,t),o={contains(l,u,d){if(!u)return!0;const f=qd(l,d);for(let m=0;m<=f.length-u.length;m+=1)if(i.compare(f.slice(m,m+u.length),u)===0)return!0;return!1},startsWith(l,u,d){if(!u)return!0;const f=qd(l,d);return i.compare(f.slice(0,u.length),u)===0},endsWith(l,u,d){if(!u)return!0;const f=qd(l,d),m=u.length;return f.length>=m&&i.compare(f.slice(f.length-m),u)===0}};return OV.set(n,o),o}const Xje=Yje;function Qje(e,t=!1){const{overflowY:n}=Li(e);return n!=="auto"&&n!=="scroll"?!1:t?e.clientHeight>0:e.scrollHeight>e.clientHeight}const RV=Symbol("none"),gP={value:RV,index:-1};function Zje(e,t,n){const s=e.get(t);if(s!==void 0||n===kS)return s;for(const[i,o]of e)if(Ko(i,t,n))return o}function Jje(e){const{id:t,onOpenChangeComplete:n,defaultSelectedValue:s=null,selectedValue:i,onSelectedValueChange:o,defaultInputValue:l,inputValue:u,open:d,defaultOpen:f=!1,selectionMode:m,onItemHighlighted:g,name:v,form:b,disabled:y=!1,readOnly:k=!1,required:j=!1,inputRef:S,grid:N=!1,items:C,filteredItems:T,filter:R,filterQuery:O,openOnInputClick:A=!0,autoHighlight:P=!1,keepHighlight:M=!1,highlightItemOnHover:_=!0,loopFocus:L=!0,itemToStringLabel:$,itemToStringValue:D,isItemEqualToValue:F=kS,virtualized:q=!1,inline:V=!1,fillInputOnItemPress:Q=!0,modal:X=!1,limit:U=-1,autoComplete:z="list",formAutoComplete:H,locale:J,submitOnItemClick:ee=!1}=e,{clearErrors:K}=uu(),{setDirty:G,validityData:Y,setFilled:se,name:re,disabled:ne,setTouched:de,setFocused:ie,validationMode:oe,validation:je}=uo(),te=Vb(),le=Dd({id:t}),he=Xje({locale:J}),ce=Array.isArray(C)?null:C;if(ce&&typeof ce.label!="function")throw new Error(Kn(100));const ye=ce?ce.data:C,fe=ce?.value,Le=fe?void 0:ye,pe=p.useMemo(()=>{if(!T||!fe)return;const rt=NS(T),vt=rt.map(fe);let bn;return{values:vt,findItem(sr,Kr){if(!bn){bn=new Map;for(let Pr=0;Prce?rt=>ce.label(rt,F,vt=>{const bn=pe?.findItem(vt,F);return bn!=null?ce.itemLabel(bn):qd(vt,$)}):$,[ce,$,pe,F]),Se=p.useMemo(()=>ce?Object.assign(rt=>ce.itemLabel(rt),{selected:rt=>qd(rt,xe)}):$,[ce,xe,$]);function ge(rt){return qd(rt,xe)}const[ue,be]=p.useState(!1),[ve,De]=p.useState(null),Ie=p.useRef(ve),We=p.useRef([]),nt=p.useRef([]),kt=p.useRef(null),Je=p.useRef(null),on=p.useRef(null),nn=p.useRef(null),On=p.useRef(null),Rn=p.useRef(!0),xt=p.useRef(!1),sn=p.useRef(null),Ke=p.useRef(null),zt=p.useRef(null),ht=p.useRef(gP),Tt=p.useRef(null),Ht=p.useRef([]),jt=p.useRef(null),an=ne||y,Xt=re??v,gn=m==="multiple",un=m==="single",cr=u!==void 0||l!==void 0,yn=ye!==void 0,xn=T!==void 0;let jn;P==="always"?jn="always":jn=P?"input-change":!1;const[ke,Xe]=Tl({controlled:i,default:gn?s??co:s,name:"Combobox",state:"selectedValue"}),Qe=p.useMemo(()=>R===null?()=>!0:R!==void 0?R:Wje(he,Se),[R,he,Se]),Yt=$s(()=>cr?l??"":un?ge(ke):"").current,[Rt,fn]=Tl({controlled:u,default:Yt,name:"Combobox",state:"inputValue"}),[At,Re]=Tl({controlled:d,default:f,name:"Combobox",state:"open"}),mt=fP(ye),Bt=!At&&ve!==null?ve:String(Rt).trim(),Pn=un?ge(ke):"",mn=un&&!ue&&Bt!==""&&Pn.length===Bt.length&&he.contains(Pn,Bt),vn=mn?"":O??Bt,Zn=yn&&xn&&mn&&(!ce||ce.hasValue(ke,F)),Ns=p.useMemo(()=>ye?NS(ye):co,[ye]),Cr=p.useMemo(()=>{if(T&&!Zn)return T;if(!ye)return co;if(mt){const vt=ye,bn=[];let sr=0;for(const Kr of vt){if(U>-1&&sr>=U)break;const Pr=U>-1?U-sr:1/0,qr=vn===""?Kr.items.slice(0,Pr):[];if(vn!=="")for(const qs of Kr.items){if(qr.length>=Pr)break;Qe(qs,vn,Se)&&qr.push(qs)}if(qr.length>0){const qs={...Kr,items:qr};bn.push(qs),sr+=qr.length}}return bn}if(vn==="")return U>-1?Ns.slice(0,U):Ns;const rt=[];for(const vt of Ns){if(U>-1&&rt.length>=U)break;Qe(vt,vn,Se)&&rt.push(vt)}return rt},[T,Zn,ye,mt,vn,U,Qe,Se,Ns]),Qr=p.useMemo(()=>{if(pe&&Cr===T)return pe.values;const rt=NS(Cr);return fe?rt.map(vt=>fe(vt)):rt},[Cr,T,pe,fe]),Vt=$s(()=>{let rt=null;return V&&At&&yn&&m!=="none"&&(rt=Wb(Qr,ke,F,gn)),new Mh({id:le,labelId:void 0,selectedValue:ke,open:At,items:Le,selectionMode:m,name:Xt,form:b,disabled:an,readOnly:k,required:j,grid:N,virtualized:q,openOnInputClick:A,itemToStringLabel:xe,isItemEqualToValue:F,modal:X,autoHighlight:jn,submitOnItemClick:ee,hasInputValue:cr,mounted:!1,forceMounted:!1,transitionStatus:"idle",inline:V,activeIndex:null,selectedIndex:rt,popupProps:{},listProps:{},inputProps:{},triggerProps:{},itemProps:yr,positionerElement:null,listElement:null,popupId:void 0,triggerElement:null,inputElement:null,inputGroupElement:null,popupSide:null,openMethod:null,inputInsidePopup:!0,inputOwnsFormValue:m==="none"},{onOpenChangeComplete:Qn,setOpen:Qn,setInputValue:Qn,setSelectedValue:Qn,setIndices:Qn,handleSelection:Qn,forceMount:Qn,requestSubmit:Qn,listRef:We,labelsRef:nt,popupRef:kt,emptyRef:On,inputRef:Je,startDismissRef:on,endDismissRef:nn,keyboardActiveRef:Rn,chipsContainerRef:sn,clearRef:Ke,valuesRef:Ht,pointerDownItemRef:jt,selectionEventRef:zt},Gje)}).current,eo=m==="none"?Rt:ke,Gf=p.useMemo(()=>m==="none"?eo:Array.isArray(ke)?ke.map(rt=>Rl(rt,D)):Rl(ke,D),[eo,D,m,ke]),nc=qe(g),Ca=qe(n),si=Vt.useState("activeIndex"),Wf=Vt.useState("selectedIndex"),Tp=Vt.useState("positionerElement"),QE=Vt.useState("listElement"),Op=Vt.useState("triggerElement"),Rp=Vt.useState("inputElement"),Pp=Vt.useState("inputGroupElement"),Aa=Vt.useState("inline"),bi=Vt.useState("inputInsidePopup"),fd=Vt.useState("inputOwnsFormValue"),hd=un&&!bi&&Rt===Pn,Ip=ss(Op),{mounted:Yf,setMounted:aa,transitionStatus:N0}=gu(At),{openMethod:ZE,triggerProps:C0}=DH(At),md=qe(()=>Gf);hg(bi?Ip:Je,le,eo,md,!an,v);const pd=qe(()=>{ye?nt.current=Qr.map(ge):Vt.set("forceMounted",!0)}),Xf=qe((rt,vt,bn)=>{if(vt===-1){if(ht.current===gP)return;ht.current=gP}else ht.current={value:rt,index:vt};nc(rt,Axe(bn,void 0,{index:vt}))}),Oo=qe(rt=>{const vt={};rt.activeIndex!==void 0&&(vt.activeIndex=rt.activeIndex),rt.selectedIndex!==void 0&&(vt.selectedIndex=rt.selectedIndex),Vt.update(vt);const bn=rt.activeIndex;if(bn===void 0)return;const sr=rt.type||rs;bn===null?Xf(void 0,-1,sr):Xf(Ht.current[bn],bn,sr)}),Ro=qe((rt,vt)=>{if(e.onInputValueChange?.(rt,vt),!vt.isCanceled){if(xt.current=vt.reason===mc,vt.reason===_b){At&&ve!==null&&De(null);const bn=vt.event,sr=bn.inputType;if(bn.type==="compositionend"||sr!=null&&sr!==""&&sr!=="insertReplacementText"){const Pr=rt.trim()!=="";Pr&&be(!0),Tt.current={hasQuery:Pr};const qr=Vt.state.listElement;if(!Vt.state.virtualized&&qr){const qs=kt.current;for(const to of ig(qr.firstElementChild??qr)){if(!br(to)||(qs?!Et(qs,to):to.getAttribute("role")==="dialog"))break;if(Qje(to)){to.scrollTop=0;break}}}Pr&&jn&&Vt.state.activeIndex==null&&(At||Aa)&&Vt.set("activeIndex",0)}}else vt.reason===mc&&rt===""&&Vt.state.inputInsidePopup&&(Tt.current={hasQuery:!1,selection:!0});fn(rt)}}),JE=qe(rt=>{const vt=!rt&&bi&&!Aa&&Rt!==""&&(String(Rt).trim()===ve||Rt===Pn);!rt&&(vt||Rt===""||hd)&&be(!1),De(null),vt&&Ro("",Nt(mc))}),Vn=qe((rt,vt)=>{if(At!==rt&&(vt.reason===mg&&yn&&Qr.length===0&&!On.current&&vt.allowPropagation(),e.onOpenChange?.(rt,vt),!vt.isCanceled&&(rt&&ve!==null&&JE(vt.reason===_b),!rt&&ue&&(un?(Aa||De(Bt),Bt===""&&be(!1)):gn&&(Aa||De(Bt),bi&&Oo({activeIndex:null}),(!bi||Aa)&&Ro("",Nt(mc,vt.event,void 0,{isItemPress:vt.reason===Mb})))),Re(rt),!rt&&bi&&(vt.reason===Ud||vt.reason===Xk)&&(de(!0),ie(!1),oe==="onBlur")))){const bn=m==="none"?Rt:ke;je.commit(bn)}}),Mp=qe((rt,vt)=>{if(o?.(rt,vt),vt.isCanceled)return;Xe(rt),(m==="none"&&kt.current&&Q||un&&!Vt.state.inputInsidePopup)&&Ro(ge(rt),Nt(vt.reason,vt.event))}),Lv=qe((rt,vt)=>{const bn=Er(rt),sr=zt.current??rt;zt.current=null;const Kr=Nt(Mb,sr),Pr=bn?.closest("a")?.getAttribute("href");if(Pr){Pr.startsWith("#")&&Vn(!1,Kr);return}if(gn){const qr=Array.isArray(ke)?ke:[],qs=SS(qr,vt,F),to=qs?oV(qr,vt,F):[...qr,vt];if(Mp(to,Kr),Kr.isCanceled||!(Je.current?Je.current.value.trim()!=="":!1))return;if(Vt.state.inputInsidePopup){Ro("",Nt(mc,Kr.event,void 0,{isItemPress:!0}));const Io=Tt.current;Io&&!qs&&(Io.toggledValue=vt)}else Vn(!1,Kr)}else{if(Mp(vt,Kr),Kr.isCanceled)return;Vn(!1,Kr)}}),$v=qe(()=>{const rt=je.inputRef.current?.form??Vt.state.inputElement?.form;rt&&typeof rt.requestSubmit=="function"&&rt.requestSubmit()}),Po=qe(()=>{if(aa(!1),Ca?.(!1),be(!1),De(null),Oo(m==="none"?{activeIndex:null,selectedIndex:null}:{activeIndex:null}),gn&&Je.current&&Je.current.value!==""&&!xt.current&&Ro("",Nt(mc)),un)if(Vt.state.inputInsidePopup)Je.current&&Je.current.value!==""&&Ro("",Nt(mc));else{const rt=ge(ke);Je.current&&Je.current.value!==rt&&Ro(rt,Nt(rt===""?mc:rs))}}),Pi=p.useMemo(()=>Aa&&Tp?{current:Tp.closest('[role="dialog"]')}:kt,[Aa,Tp]);ji({enabled:!e.actionsRef,open:At,ref:Pi,onComplete(){At||Po()}}),p.useImperativeHandle(e.actionsRef,()=>({unmount:Po}),[Po]),Ge(function(){const vt=Ie.current!==null&&ve===null;if(Ie.current=ve,At&&(!vt||!yn)||(At||(jt.current=null),m==="none"))return;const bn=yn?Qr:Ht.current;Oo({selectedIndex:Wb(bn,ke,F,gn)})},[At,ve,ke,m,gn,yn,Qr,F,Oo]),Ge(()=>{ye&&(Ht.current=Qr,We.current.length=Qr.length)},[ye,Qr]),Ge(()=>{const rt=Tt.current;if(rt){const qs=At||Aa||Vt.state.positionerElement?.hidden===!1;if(rt.hasQuery)jn&&qs&&Vt.set("activeIndex",0),Tt.current=null;else if(String(Rt).trim()===""&&(Tt.current=null,qs)){const to=rt.selection;jn==="always"&&!to&&Vt.state.selectionMode==="none"&&Vt.set("activeIndex",0),queueMicrotask(()=>{if(!Vt.state.open&&!Vt.state.inline||Je.current&&Je.current.value.trim()!=="")return;const yl=Vt.state.selectedValue,Io=Vt.state.selectionMode==="multiple";if(Io&&Array.isArray(yl)?yl.length>0:Vt.state.selectionMode!=="none"&&yl!=null){const za=yn||xn?Qr:Ht.current,sc=yg(za,rt.toggledValue,Vt.state.isItemEqualToValue);Vt.set("activeIndex",sc!==-1?sc:Wb(za,yl,Vt.state.isItemEqualToValue,Io))}else to?Vt.set("activeIndex",null):jn==="always"&&Vt.set("activeIndex",0)})}}if(!At&&!Aa)return;const bn=yn||xn?Qr:Ht.current,sr=Vt.state.activeIndex;if(sr==null){if(jn==="always"&&bn.length>0){Vt.set("activeIndex",0);return}Xf(void 0,-1,rs);return}if(sr>=bn.length){Xf(void 0,-1,rs),Vt.set("activeIndex",null);return}const Kr=bn[sr],Pr=ht.current.value,qr=Pr!==RV&&Ko(Kr,Pr,Vt.state.isItemEqualToValue);(ht.current.index!==sr||!qr)&&Xf(Kr,sr,rs)},[si,jn,Xf,xn,yn,Qr,Aa,At,Vt,Rt]),Ge(()=>{if(m==="none"){se(String(Rt)!=="");return}se(gn?Array.isArray(ke)&&ke.length>0:ke!=null)},[se,m,Rt,ke,gn]),p.useEffect(()=>{yn&&jn&&Qr.length===0&&Oo({activeIndex:null})},[yn,jn,Qr.length,Oo]);function eT(){At&&Bt!==""&&Bt!==String(Yt)&&!hd&&be(!0)}function eB(){At&&ve!==null&&JE(!1)}let zv=!1;function A0(){!zv&&Rt!==Pn&&(zv=!0,Ro(Pn,Nt(rs)))}function tB(){m!=="none"&&(K(Xt),G(aV(ke,Y.initialValue,F)),je.change(ke),un&&!cr&&!bi&&A0())}function Ii(){un&&!cr&&!bi&&!ue&&A0()}function E0(){m==="none"&&(K(Xt),G(Rt!==Y.initialValue),je.change(Rt))}Vo(Bt,eT),Vo(At,eB),Vo(ke,tB),Vo(Pn,Ii),Vo(ye,Ii),Vo(Rt,E0);const _p=tH({open:Aa?!0:At,onOpenChange:Vn,elements:{reference:bi?Op:Rp,floating:Tp}}),Bv=N?"grid":"listbox",rc=At||Aa,T0=rc?"true":"false",Dp=p.useMemo(()=>{const rt=Rp?.tagName==="INPUT",vt=Rp==null||rt,bn=vt||rc,sr=vt?{autoComplete:"off",spellCheck:"false",autoCorrect:"off",autoCapitalize:"none"}:{};return bn&&(sr.role="combobox",sr["aria-expanded"]=T0,sr["aria-haspopup"]=Bv,sr["aria-controls"]=rc?QE?.id:void 0,sr["aria-autocomplete"]=k?"none":z),{reference:sr,floating:{role:"presentation"}}},[Rp,rc,T0,Bv,QE?.id,z,k]),gd=Bb(_p,{enabled:!an&&A,event:"mousedown-only",toggle:!1,touchOpenDelay:bi?0:100,reason:Sxe}),Fv=Fb(_p,{enabled:!an&&!Aa,outsidePressEvent:{mouse:"sloppy",touch:"intentional"},bubbles:Aa?!0:void 0,outsidePress(rt){const vt=Er(rt);return!Et(Op,vt)&&!Et(Ke.current,vt)&&!Et(sn.current,vt)&&!Et(Pp,vt)}}),xd=iH(_p,{enabled:!an,id:le,listRef:We,activeIndex:si,selectedIndex:Wf,virtual:!0,loopFocus:L,allowEscape:L&&!jn,focusItemOnOpen:ue||m==="none"&&!jn?!1:"auto",focusItemOnHover:_,resetOnPointerLeave:!M,orientation:N?"horizontal":void 0,rtl:te==="rtl",disabledIndices:co,grid:N?Kje:void 0,onNavigate(rt,vt){!vt&&!At||N0==="ending"||Oo(vt?{activeIndex:rt,type:Rn.current?HU:VU}:{activeIndex:rt})}}),O0=p.useMemo(()=>oo(xd.reference,{onKeyDown(rt){N&&Vt.state.activeIndex==null&&(rt.key==="ArrowLeft"||rt.key==="ArrowRight")&&rt.preventBaseUIHandler()}},Fv.reference,gd.reference,Dp.reference),[xd.reference,Fv.reference,gd.reference,Dp.reference,N,Vt]),Uv=p.useMemo(()=>oo(Ub,Fv.floating),[Fv.floating]),tT=p.useMemo(()=>oo(xd.floating,Dp.floating),[xd.floating,Dp.floating]),nT=p.useMemo(()=>{const rt=xd.item;return rt?{...rt,onFocus:void 0}:yr},[xd.item]);Vt.useContextCallback("setOpen",Vn),Vt.useContextCallback("setInputValue",Ro),Vt.useContextCallback("setSelectedValue",Mp),Vt.useContextCallback("setIndices",Oo),Vt.useContextCallback("handleSelection",Lv),Vt.useContextCallback("forceMount",pd),Vt.useContextCallback("requestSubmit",$v),Vt.useContextCallback("onOpenChangeComplete",n),eV(()=>{Vt.update({inline:V,popupProps:Uv,listProps:tT,inputProps:O0,triggerProps:C0,itemProps:nT})});const Lp={id:le,selectedValue:ke,open:At,mounted:Yf,transitionStatus:N0,items:Le,inline:V,popupProps:Uv,listProps:tT,inputProps:O0,triggerProps:C0,itemProps:nT,openMethod:ZE,selectionMode:m,name:Xt,form:b,disabled:an,readOnly:k,required:j,grid:N,virtualized:q,openOnInputClick:A,itemToStringLabel:xe,modal:X,autoHighlight:jn,isItemEqualToValue:F,submitOnItemClick:ee,hasInputValue:cr};Ge(()=>{Vt.update({...Lp,inputOwnsFormValue:m==="none"&&(V||!Vt.state.inputInsidePopup)})},[Vt,...Object.values(Lp)]);const bl=lo(S,je.inputRef),R0=p.useMemo(()=>({query:Bt,hasItems:yn,filteredItems:Cr,flatFilteredValues:Qr}),[Bt,yn,Cr,Qr]),P0=p.useMemo(()=>Array.isArray(eo)?"":Rl(eo,D),[eo,D]),Qf=gn&&Array.isArray(ke)&&ke.length>0,Qc=gn||m==="none"&&fd?void 0:Xt,rT=p.useMemo(()=>!gn||!Array.isArray(ke)||!Xt?null:ke.map(rt=>{const vt=Rl(rt,D);return r.jsx("input",{type:"hidden",form:b,name:Xt,value:vt,disabled:an},vt)}),[gn,ke,b,Xt,D,an]),I0=r.jsxs(p.Fragment,{children:[e.children,r.jsx("input",{...je.getValidationProps(an,{onFocus(){if(bi){Op?.focus();return}(Je.current||Op)?.focus()},onChange(rt){if(rt.nativeEvent.defaultPrevented||an||k)return;const vt=rt.currentTarget.value,bn=vt.toLowerCase(),sr=Nt(rs,rt.nativeEvent),Kr=()=>Ht.current.findIndex(qr=>Rl(qr,D).toLowerCase()===bn||ge(qr).toLowerCase()===bn);function Pr(){if(gn)return;if(m==="none"){Ro(vt,sr);return}let qr=Kr();qr===-1&&(qr=Ht.current.findIndex((to,yl)=>{const Io=nt.current[yl];return Io!=null&&Io.toLowerCase()===bn}));const qs=qr===-1?void 0:Ht.current[qr];qs!=null&&Mp?.(qs,sr)}un&&(pd(),ye&&Kr()===-1&&Vt.set("forceMounted",!0)),queueMicrotask(Pr)}}),id:le&&Qc==null?`${le}-hidden-input`:void 0,form:b,name:Qc,autoComplete:H,disabled:an,required:j&&!Qf,readOnly:k,value:P0,ref:bl,style:Qc?pg:vu,tabIndex:-1,"aria-hidden":!0,suppressHydrationWarning:!0}),rT]});return r.jsx(kV.Provider,{value:Vt,children:r.jsx(SV.Provider,{value:_p,children:r.jsx(CV.Provider,{value:yn,children:r.jsx(NV.Provider,{value:R0,children:r.jsx(AV.Provider,{value:Rt,children:I0})})})})})}function PV(e){const{multiple:t=!1,defaultValue:n,value:s,onValueChange:i,autoComplete:o,...l}=e;return r.jsx(Jje,{...l,selectionMode:t?"multiple":"single",selectedValue:s,defaultSelectedValue:n,onSelectedValueChange:i,formAutoComplete:o})}function ewe(e){const{children:t,placeholder:n}=e,s=qo(),i=s.useState("itemToStringLabel"),o=s.useState("selectedValue"),l=s.useState("items"),u=s.useState("selectionMode")==="multiple",d=s.useState("hasSelectedValue"),f=!d&&n!=null&&t==null,m=s.useState("hasNullItemLabel",f);let g=null;return typeof t=="function"?g=t(o):t!=null?g=t:!d&&n!=null&&!m?g=n:u&&Array.isArray(o)?g=cV(o,l,i):g=hP(o,l,i),r.jsx(p.Fragment,{children:g})}const twe="data-popup-side",nwe="data-list-empty",IV={...GO,...hc,popupSide:e=>e?{[twe]:e}:null,listEmpty:e=>e?{[nwe]:""}:null},rwe=p.createContext(void 0);function swe(){return p.useContext(rwe)}const MV=p.createContext(void 0);function xP(e){const t=p.useContext(MV);if(t===void 0&&!e)throw new Error(Kn(21));return t}const _V=p.forwardRef(function(t,n){const s=qo(),{buttonRef:i,getButtonProps:o}=$i({native:!1}),l=lo(n,i);function u(f){s.context.setOpen(!1,Nt(fR,f.nativeEvent,f.currentTarget))}const d=o({onClick:u});return r.jsx("span",{ref:l,...d,"aria-label":"Dismiss",tabIndex:void 0,style:pg})});function DV(e){const t=e.useState("mounted"),n=e.useState("popupSide"),s=e.useState("positionerElement");return t&&s?n:null}function IS(){return Xb().filteredItems.length===0}function awe(e){return e==="rtl"?["ArrowRight","ArrowLeft"]:["ArrowLeft","ArrowRight"]}function iwe(e,t){const n=e>=t-1?t-2:e;return n>=0?n:void 0}function LV(e,t,n){const s=e.context.listRef.current[t];s&&(e.context.selectionEventRef.current=n,s.click(),e.context.selectionEventRef.current=null)}const $V=p.forwardRef(function(t,n){const{render:s,className:i,disabled:o=!1,id:l,style:u,...d}=t,{state:f,disabled:m,setTouched:g,setFocused:v,validationMode:b,validation:y}=uo(),{labelId:k}=zi(),j=swe(),N=!!xP(!0),C=qo(),T=EV(),R=Vb(),O=C.useState("required"),A=C.useState("disabled"),P=C.useState("readOnly"),M=C.useState("name"),_=C.useState("form"),L=C.useState("selectionMode"),$=C.useState("autoHighlight"),D=C.useState("inputProps"),F=C.useState("triggerProps"),q=C.useState("open"),V=C.useState("mounted"),Q=C.useState("selectedValue"),X=C.useState("id"),U=C.useState("inline"),z=C.useState("modal"),H=!!$,J=DV(C),ee=m||A||o,K=IS(),G=N||U,Y=!G||z,se=Ws(l??(G?void 0:X)),re=N?hU:f,[ne,de]=p.useState(null),ie=p.useRef(!1),oe=p.useRef(null),je=p.useRef(!1),te=L==="none"&&!N,le=qe(Se=>{const ge=N||C.state.inline;ge&&!C.state.hasInputValue&&C.context.setInputValue("",Nt(rs)),C.update({inputElement:Se,inputInsidePopup:ge,inputOwnsFormValue:te})}),he=N?d:y.getValidationProps(ee,d);function ce(){C.context.setIndices({activeIndex:null,selectedIndex:null,type:C.context.keyboardActiveRef.current?HU:VU})}function ye(){C.context.keyboardActiveRef.current=!1}const fe={...re,open:q,disabled:ee,readOnly:P,popupSide:J,listEmpty:K};function Le(Se){if(!j)return;let ge;const{highlightedChipIndex:ue}=j,be=j.chipsRef.current.length,[ve,De]=awe(R);return ue!==void 0?(Se.key===ve?(Se.preventDefault(),ue>0?ge=ue-1:ge=void 0):Se.key===De?(Se.preventDefault(),ue0&&(Se.preventDefault(),ge=be>0?be-1:void 0),ge)}const pe=Kt("input",t,{state:fe,ref:[n,C.context.inputRef,le],props:[D,F,{value:ne??T,"aria-readonly":P||void 0,"aria-required":O||void 0,"aria-labelledby":k,disabled:ee,readOnly:P,required:L==="none"?O:void 0,form:_,...te&&M&&{name:M},id:se,onFocus(){if(v(!0),!U||!je.current)return;je.current=!1;const Se=oe.current;Se==null||!Object.hasOwn(C.context.valuesRef.current,Se)||C.context.setIndices({activeIndex:Se})},onBlur(){g(!0),v(!1);const Se=C.state.activeIndex;if(U&&Se!==null&&$!=="always"&&(oe.current=Se,je.current=!0,C.context.setIndices({activeIndex:null})),b==="onBlur"){const ge=L==="none"?T:Q;y.commit(ge)}},onCompositionStart(Se){Rk||(ie.current=!0,de(Se.currentTarget.value))},onCompositionEnd(Se){ie.current=!1;const ge=Se.currentTarget.value;de(null),C.context.setInputValue(ge,Nt(_b,Se.nativeEvent))},onChange(Se){const ge=Se.nativeEvent,ue=ge.inputType,be=!ue||ue==="insertReplacementText",ve=ie.current||!be;function De(kt){P||ee||!kt||!ve||(C.context.setOpen(!0,Nt(_b,ge)),H||ce())}if(ie.current){const kt=Se.currentTarget.value;de(kt),kt===""&&!C.state.openOnInputClick&&!C.state.inputInsidePopup&&C.context.setOpen(!1,Nt(mc,ge));const Je=kt.trim(),on=H&&Je!=="";De(Je),q&&C.state.activeIndex!==null&&!on&&ce();return}const Ie=Nt(_b,ge);if(C.context.setInputValue(Se.currentTarget.value,Ie),Ie.isCanceled)return;const We=Se.currentTarget.value==="",nt=Nt(mc,ge);We&&!C.state.inputInsidePopup&&(L==="single"&&C.context.setSelectedValue(null,nt),C.state.openOnInputClick||C.context.setOpen(!1,nt)),De(Se.currentTarget.value.trim()),q&&C.state.activeIndex!==null&&!H&&ce()},onKeyDown(Se){if(Se.ctrlKey||Se.shiftKey||Se.altKey||Se.metaKey)return;if(C.context.keyboardActiveRef.current=!0,ee||P){P&&Se.key==="Enter"&&q&&C.state.activeIndex!==null&&da(Se);return}const ge=Se.currentTarget,ue=ge.scrollWidth-ge.clientWidth,be=R==="rtl";if(Se.key==="Home"){da(Se);const Ie=jU&&be?ge.value.length:0;ge.setSelectionRange(Ie,Ie),ge.scrollLeft=0;return}if(Se.key==="End"){da(Se);const Ie=jU&&be?0:ge.value.length;ge.setSelectionRange(Ie,Ie),ge.scrollLeft=be?-ue:ue;return}if(!V&&Se.key==="Escape"){const Ie=L==="multiple"&&Array.isArray(Q)?Q.length===0:Q===null,We=Nt(mg,Se.nativeEvent),nt=L==="multiple"?[]:null;C.context.setInputValue("",We),C.context.setSelectedValue(nt,We),!Ie&&!C.state.inline&&!We.isPropagationAllowed&&Se.stopPropagation();return}if(j&&Se.key==="Backspace"&&ge.value===""&&j.highlightedChipIndex===void 0&&Array.isArray(Q)&&Q.length>0){const Ie=j.chipsRef.current.length,We=Ie>0?Ie-1:Q.length-1,nt=Q.filter((kt,Je)=>Je!==We);ce(),C.context.setSelectedValue(nt,Nt(rs,Se.nativeEvent));return}const ve=j?.highlightedChipIndex!==void 0,De=Le(Se);if(j?.setHighlightedChipIndex(De),De!==void 0?j?.chipsRef.current[De]?.focus():ve&&C.context.inputRef.current?.focus(),Se.which!==229&&Se.key==="Enter"&&q){const Ie=C.state.activeIndex,We=Se.nativeEvent;if(Ie===null){if(U)return;C.context.setOpen(!1,Nt(rs,We));return}da(Se),LV(C,Ie,We)}},onPointerMove:ye,onPointerDown:ye},he],stateAttributesMapping:IV}),xe=N?r.jsx(BO.Provider,{value:mU,children:pe}):pe;return r.jsxs(p.Fragment,{children:[q&&Y&&r.jsx(_V,{ref:C.context.startDismissRef}),xe]})}),zV=p.forwardRef(function(t,n){const{render:s,className:i,nativeButton:o=!0,disabled:l=!1,id:u,style:d,...f}=t,{state:m,disabled:g,setTouched:v,setFocused:b,validationMode:y,validation:k}=uo(),{labelId:j}=zi(),S=qo(),N=S.useState("selectionMode"),C=S.useState("disabled"),T=S.useState("readOnly"),R=S.useState("required"),O=S.useState("positionerElement"),A=S.useState("listElement"),P=S.useState("popupId"),M=S.useState("triggerProps"),_=S.useState("inputInsidePopup"),L=S.useState("id"),$=S.useState("labelId"),D=S.useState("open"),F=S.useState("selectedValue"),q=S.useState("activeIndex"),V=S.useState("selectedIndex"),Q=S.useState("hasSelectedValue"),X=PS(),U=EV(),z=fa(),H=g||C||l,J=IS(),ee=DV(S);Dd({id:_?u:void 0});const K=_?u??L:u,G=dV(j,$);let Y;D&&_?Y=P??TV(L):D&&(Y=A?.id);const se=p.useRef("");function re(he){se.current=he.pointerType}const{reference:ne}=oH(X,{enabled:!D&&!T&&!C&&N==="single",listRef:S.context.labelsRef,activeIndex:q,selectedIndex:V,onMatch(he){const ce=S.context.valuesRef.current[he];ce!==void 0&&S.context.setSelectedValue(ce,Nt(rs))}}),{reference:de}=Bb(X,{enabled:!C,event:"mousedown"}),{buttonRef:ie,getButtonProps:oe}=$i({native:o,disabled:H}),je={...m,readOnly:T,open:D,disabled:H,popupSide:ee,listEmpty:J,placeholder:N==="none"?!1:!Q},te=qe(he=>{S.set("triggerElement",he)});return Kt("button",t,{ref:[n,ie,te],state:je,props:[M,de,ne,{id:K,tabIndex:_?0:-1,role:_?"combobox":void 0,"aria-expanded":D,"aria-haspopup":_?"dialog":"listbox","aria-controls":Y,"aria-required":_&&R||void 0,"aria-readonly":_&&T||void 0,"aria-labelledby":G,onPointerDown:re,onPointerEnter:re,onFocus(){b(!0),!H&&z.start(0,S.context.forceMount)},onBlur(he){if(!Et(O,he.relatedTarget)&&(v(!0),b(!1),y==="onBlur")){const ce=N==="none"?U:F;k.commit(ce)}},onMouseDown(he){if(H||(_||X.set("domReferenceElement",he.currentTarget),S.context.forceMount(),se.current!=="touch"&&(S.context.inputRef.current?.focus(),_||he.preventDefault()),D))return;const ce=_n(he.currentTarget);function ye(fe){const Le=S.state.triggerElement;if(!Le)return;const pe=Er(fe),xe=S.state.positionerElement,Se=S.state.listElement;Et(Le,pe)||Et(xe,pe)||Et(Se,pe)||fV(fe,Le)||S.context.setOpen(!1,Nt(KU,fe))}_&&ce.addEventListener("mouseup",ye,{once:!0})},onKeyDown(he){(he.key==="ArrowDown"||he.key==="ArrowUp")&&(da(he),S.context.setOpen(!0,Nt(hR,he.nativeEvent)),S.context.inputRef.current?.focus())}},k.getValidationProps(H,f),oe],stateAttributesMapping:IV})}),owe=p.createContext(null);function lwe(){return p.useContext(owe)}function cwe(e){const{children:t}=e,{filteredItems:n}=Xb(),s=lwe(),i=s?s.items:n;return r.jsx(p.Fragment,{children:i.map(t)})}const BV=p.forwardRef(function(t,n){var s;const{render:i,className:o,style:l,children:u,...d}=t,f=qo(),m=PS(),g=!!xP(!0),{filteredItems:v,hasItems:b}=Xb(),y=f.useState("selectionMode"),k=f.useState("grid"),j=f.useState("readOnly"),S=f.useState("listProps"),N=f.useState("virtualized"),C=f.useState("forceMounted"),T=y==="multiple",R=v.length===0,O=qe(D=>{f.set("positionerElement",D)}),A=qe(D=>{f.set("listElement",D)}),P=p.useMemo(()=>typeof u=="function"?s||(s=r.jsx(cwe,{children:u})):u,[u]),M={empty:R},_=m.useState("floatingId"),L=Kt("div",t,{state:M,ref:[n,A,g?null:O],props:[S,{children:P,tabIndex:-1,id:_,role:k?"grid":"listbox","aria-multiselectable":T?"true":void 0,"aria-readonly":!k&&j?!0:void 0,onKeyDown(D){if(!(f.state.disabled||f.state.readOnly)&&D.key==="Enter"){const F=f.state.activeIndex;if(F==null)return;da(D),LV(f,F,D.nativeEvent)}},onKeyDownCapture(){f.context.keyboardActiveRef.current=!0},onPointerMoveCapture(){f.context.keyboardActiveRef.current=!1}},d]});if(N)return L;const $=b&&!C?void 0:f.context.labelsRef;return r.jsx(uP,{elementsRef:f.context.listRef,labelsRef:$,children:L})}),uwe="⁠",dwe=200;function fwe(e){const t=e.ownerDocument.createTreeWalker(e,NodeFilter.SHOW_TEXT);let n=null;for(;t.nextNode();){const s=t.currentNode;s.nodeValue!==""&&(n=s)}return n}function hwe(){const e=fa(),t=p.useRef(null);return p.useEffect(()=>{if(Ob)return;const n=t.current;if(n==null)return;const s=fwe(n);if(s==null)return;const i=s.data,o=`${i}${uwe}`;return s.nodeValue=o,e.start(dwe,()=>{s.nodeValue===o&&(s.nodeValue=i)}),()=>{e.clear(),s.nodeValue===o&&(s.nodeValue=i)}},[t,e]),t}const FV=p.createContext(void 0);function mwe(){const e=p.useContext(FV);if(e===void 0)throw new Error(Kn(20));return e}const UV=p.forwardRef(function(t,n){const{keepMounted:s=!1,...i}=t,o=qo(),l=o.useState("mounted"),u=o.useState("forceMounted");return l||s||u?r.jsx(FV.Provider,{value:s,children:r.jsx(nS,{ref:n,...i})}):null}),HV=p.forwardRef(function(t,n){const{render:s,className:i,anchor:o,positionMethod:l,side:u,align:d,sideOffset:f,alignOffset:m,collisionBoundary:g="clipping-ancestors",collisionPadding:v,arrowPadding:b,sticky:y,disableAnchorTracking:k=!1,collisionAvoidance:j=g6,style:S,...N}=t,C=qo(),T=PS(),R=mwe(),O=C.useState("modal"),A=C.useState("open"),P=C.useState("mounted"),M=C.useState("openMethod"),_=C.useState("positionerElement"),L=C.useState("triggerElement"),$=C.useState("inputElement"),D=C.useState("inputGroupElement"),F=C.useState("inputInsidePopup"),q=C.useState("transitionStatus"),V=IS(),X=pS({anchor:o??(F?L:D??$),floatingRootContext:T,positionMethod:l,mounted:P,side:u,sideOffset:f,align:d,alignOffset:m,arrowPadding:b,collisionBoundary:g,collisionPadding:v,sticky:y,disableAnchorTracking:k,keepMounted:R,collisionAvoidance:j,lazyFlip:!0});mP(A&&O,M==="touch",_,L);const U={open:A,side:X.side,align:X.align,anchorHidden:X.anchorHidden,empty:V};Ge(()=>{C.set("popupSide",X.side)},[C,X.side]);const z=qe(J=>{C.set("positionerElement",J)}),H=gS(t,U,{styles:X.positionerStyles,transitionStatus:q,props:N,refs:[n,z],hidden:!P,inert:!A});return r.jsxs(MV.Provider,{value:X,children:[P&&O&&r.jsx(yS,{inert:qb(!A),cutout:D??$??L}),H]})}),pwe={...cg,...Fo},VV=p.forwardRef(function(t,n){const{render:s,className:i,style:o,initialFocus:l,finalFocus:u,...d}=t,f=qo(),m=xP(),g=PS(),v=f.useState("mounted"),b=f.useState("open"),y=f.useState("openMethod"),k=f.useState("popupProps"),j=f.useState("transitionStatus"),S=f.useState("inputInsidePopup"),N=f.useState("inputElement"),C=f.useState("modal"),T=f.useState("id"),R=IS(),O=d.id??(S?TV(T):void 0);Ge(()=>(f.set("popupId",f.context.popupRef.current?.id||O),()=>{f.set("popupId",void 0)}),[f,O]),ji({open:b,ref:f.context.popupRef,onComplete(){b&&f.context.onOpenChangeComplete(!0)}});const A={open:b,side:m.side,align:m.align,anchorHidden:m.anchorHidden,transitionStatus:j,empty:R},P=Kt("div",t,{state:A,ref:[n,f.context.popupRef],props:[k,{id:O,role:S?"dialog":"presentation",onFocus(D){const F=Er(D.nativeEvent);y!=="touch"&&(Et(f.state.listElement,F)||F===D.currentTarget)&&f.context.inputRef.current?.focus()}},Kb(j),d],stateAttributesMapping:pwe}),_=l===void 0?S?D=>D==="touch"?f.context.popupRef.current:N:!1:l;let L;u!=null?L=u:L=S?void 0:!1;const $=!S||C;return r.jsx(rS,{context:g,disabled:!v,modal:$,openInteractionType:y,initialFocus:_,returnFocus:L,getInsideElements:()=>[f.context.startDismissRef.current,f.context.endDismissRef.current],children:r.jsxs(p.Fragment,{children:[P,$&&r.jsx(_V,{ref:f.context.endDismissRef})]})})}),KV=p.forwardRef(function(t,n){const{render:s,className:i,style:o,...l}=t;return Kt("span",t,{ref:n,props:[{"aria-hidden":!0,children:"▼"},l]})}),qV=p.createContext(void 0);function GV(){const e=p.useContext(qV);if(!e)throw new Error(Kn(19));return e}const gwe=p.createContext(!1);function xwe(){return p.useContext(gwe)}function WV(e){const{componentProps:t,forwardedRef:n,virtualized:s,indexFromFilter:i}=e,{render:o,className:l,style:u,value:d=null,index:f,disabled:m=!1,nativeButton:g=!1,...v}=t,b=p.useRef(null),y=cP({guess:!0,index:f,textRef:b}),k=qo(),j=xwe(),S=qje(),N=k.useState("selectionMode"),C=k.useState("disabled"),T=k.useState("readOnly"),R=k.useState("isItemEqualToValue"),O=C||m,A=N!=="none",P=f??i??y.index,M=P!==-1,_=k.useState("id"),L=k.useState("isActive",P),$=k.useState("isSelected",d),D=k.useState("itemProps"),F=p.useRef(null),q=_!=null&&M?`${_}-${P}`:void 0,V=$&&A;Ge(()=>{if(!(M&&(s||f!=null)))return;const G=k.context.listRef.current;return G[P]=F.current,()=>{delete G[P]}},[M,s,P,f,k]),Ge(()=>{if(!M||S)return;const K=k.context.valuesRef.current;return K[P]=d,()=>{delete K[P]}},[M,S,P,d,k]),Ge(()=>{if(!M||S)return;const K=k.state.selectedValue;let G=k.state.selectedIndex;k.state.selectionMode==="multiple"&&Array.isArray(K)?G=iV(P,d,k.context.valuesRef.current,K,R,G):Ko(d,K,R)&&(G=P),k.set("selectedIndex",G)},[M,S,k,P,d,R]);const{getButtonProps:Q,buttonRef:X}=$i({disabled:O,focusableWhenDisabled:!0,native:g,composite:!0}),U={disabled:O,selected:V,highlighted:L};function z(K){function G(){k.context.handleSelection(K,d)}k.state.submitOnItemClick?(xr.flushSync(G),k.context.requestSubmit()):G()}const H={id:q,role:j?"gridcell":"option","aria-selected":A?V:void 0,tabIndex:void 0,onPointerDownCapture(K){K.isPrimary&&(k.context.pointerDownItemRef.current=K.currentTarget),K.preventDefault()},onMouseDown(K){K.preventDefault()},onClick(K){O||T||z(K.nativeEvent)},onMouseUp(K){const G=k.context.pointerDownItemRef.current===K.currentTarget;k.context.pointerDownItemRef.current=null,!(O||T||K.button!==0||G||!L)&&z(K.nativeEvent)}},J=Kt("div",t,{ref:[X,n,y.ref,F],state:U,props:[D,H,v,Q]}),ee=p.useMemo(()=>({selected:V,textRef:b}),[V,b]);return r.jsx(qV.Provider,{value:ee,children:J})}function vwe(e){const{componentProps:t,forwardedRef:n}=e,i=qo().useState("isItemEqualToValue"),{flatFilteredValues:o}=Xb(),l=t.value??null,u=yg(o,l,i);return r.jsx(WV,{componentProps:t,forwardedRef:n,virtualized:!0,indexFromFilter:u})}const YV=p.memo(p.forwardRef(function(t,n){const i=qo().useState("virtualized");return i&&t.index==null?r.jsx(vwe,{componentProps:t,forwardedRef:n}):r.jsx(WV,{componentProps:t,forwardedRef:n,virtualized:i,indexFromFilter:void 0})})),XV=p.forwardRef(function(t,n){const{selected:s}=GV();return t.keepMounted||s?r.jsx(bwe,{...t,ref:n}):null}),bwe=p.memo(p.forwardRef((e,t)=>{const{render:n,className:s,style:i,keepMounted:o,...l}=e,{selected:u}=GV(),d=p.useRef(null),{transitionStatus:f,setMounted:m}=gu(u),v=Kt("span",e,{ref:[t,d],state:{selected:u,transitionStatus:f},props:[{"aria-hidden":!0,children:"✔️"},l],stateAttributesMapping:Fo});return ji({batch:!0,enabled:!u,open:u,ref:d,onComplete(){u||m(!1)}}),v})),QV=p.forwardRef(function(t,n){const{render:s,className:i,style:o,children:l,...u}=t,{filteredItems:d}=Xb(),f=qo(),m=hwe(),g=d.length===0?l:null;return Kt("div",t,{ref:[n,f.context.emptyRef,m],props:[{children:g,role:"status","aria-live":"polite","aria-atomic":!0},u]})}),MS=p.createContext(null);function ZV({open:e,defaultOpen:t=!1,onOpenChange:n,children:s,...i}){const[o,l]=p.useState(t),[u,d]=p.useState(null),[f,m]=p.useState(!1),g=e??o;p.useLayoutEffect(()=>{g&&m(!1)},[g]);const v=p.useCallback((k,j)=>{n?.(k,j),!j.isCanceled&&(k&&m(!1),l(k))},[n]),b=p.useCallback(()=>{if(!g||f)return;const k=Nt("none",void 0,u??void 0);v(!1,k),k.isCanceled||m(!0)},[g,f,u,v]),y=p.useMemo(()=>({open:g,trigger:u,setTrigger:d,closeOnAnchorHidden:b,closedOnAnchorHidden:f}),[g,u,b,f]);return r.jsx(MS.Provider,{value:y,children:r.jsx(PV,{...i,open:g,onOpenChange:v,children:s})})}function ywe({anchorHidden:e,open:t,...n}){const i=p.useContext(MS)?.closeOnAnchorHidden;return p.useLayoutEffect(()=>{t&&e&&i?.()},[t,e,i]),r.jsx("div",{...n})}const JV=ewe;function eK({className:e,children:t,ref:n,...s}){const i=p.useContext(MS);return Th({render:r.jsx(zV,{}),ref:[n??null,i?.setTrigger??null],props:{...s,"data-slot":"combobox-trigger",className:Ne("inline-flex h-[30px] min-w-0 cursor-pointer items-center justify-between gap-1.5 rounded-md border border-control-border bg-control px-2.5","text-[12.5px] font-normal text-foreground max-[767px]:h-10 max-[767px]:text-base","transition-colors duration-150 ease-out","hover:border-control-border-hover hover:bg-control-hover","focus-visible:border-primary focus-visible:shadow-focus focus-visible:outline-none","data-disabled:cursor-not-allowed data-disabled:bg-control data-disabled:text-muted-foreground data-disabled:opacity-60",e),children:r.jsxs(r.Fragment,{children:[r.jsx("span",{className:"min-w-0 flex-1 truncate text-left",children:t}),r.jsx(KV,{className:"flex flex-none text-muted-foreground transition-transform duration-[180ms] data-popup-open:rotate-180",children:r.jsx("svg",{viewBox:"0 0 10 6",className:"size-2.5","aria-hidden":"true",children:r.jsx("path",{d:"M1 1l4 4 4-4",stroke:"currentColor",strokeWidth:"1.4",fill:"none",strokeLinecap:"round",strokeLinejoin:"round"})})})]})}})}function tK({className:e,sideOffset:t=4,children:n,finalFocus:s,...i}){const o=p.useContext(MS),l=wV(o?.trigger??null,o?.open??!1);return r.jsx(UV,{children:r.jsx(HV,{sideOffset:t,align:"start",collisionBoundary:l,className:"z-[35] data-anchor-hidden:invisible data-anchor-hidden:pointer-events-none",render:(u,d)=>r.jsx(ywe,{...u,anchorHidden:d.anchorHidden,open:d.open}),children:r.jsx(VV,{"data-slot":"combobox-content",className:Ne("flex max-h-[min(300px,var(--available-height))] w-[max(var(--anchor-width),220px)] max-w-[var(--available-width)] flex-col overflow-hidden","rounded-lg border border-border-strong bg-raised shadow-3 outline-none","data-open:animate-in data-open:fade-in-0","data-closed:animate-out data-closed:fade-out-0",e),finalFocus:o?.closedOnAnchorHidden?!1:s,...i,children:n})})})}function nK({className:e,...t}){return r.jsx($V,{"data-slot":"combobox-input",className:Ne("h-[30px] w-full min-w-0 rounded-md border border-control-border bg-control px-2.5","text-[12.5px] text-foreground outline-none max-[767px]:h-10 max-[767px]:text-base","transition-[border-color,box-shadow] duration-150 ease-out placeholder:text-muted-foreground","hover:border-control-border-hover focus:border-primary focus:shadow-focus","disabled:pointer-events-none disabled:cursor-not-allowed disabled:text-muted-foreground",e),...t})}function rK({className:e,...t}){return r.jsx(BV,{"data-slot":"combobox-list",className:Ne("min-h-0 flex-1 overflow-y-auto overscroll-contain p-[5px]",e),...t})}function sK({className:e,children:t,...n}){return r.jsxs(YV,{"data-slot":"combobox-item",className:Ne("flex min-h-7 cursor-pointer items-center gap-2 rounded-sm px-[9px] py-[5px] text-[12.5px] leading-[1.4] text-foreground select-none outline-none","max-[767px]:min-h-10 max-[767px]:text-sm transition-colors duration-[120ms] ease-out","data-[highlighted]:bg-nav-hover","data-[selected]:bg-primary-soft data-[selected]:font-semibold data-[selected]:text-primary-fg","data-[highlighted]:data-[selected]:bg-primary-tint","data-disabled:pointer-events-none data-disabled:font-normal data-disabled:text-muted-foreground",e),...n,children:[r.jsx("span",{className:"min-w-0 flex-1 truncate",children:t}),r.jsx(XV,{className:"flex flex-none text-primary",children:r.jsx("svg",{viewBox:"0 0 12 12",className:"size-3","aria-hidden":"true",children:r.jsx("path",{d:"M2.5 6.2 4.8 8.5 9.5 3.8",stroke:"currentColor",strokeWidth:"1.8",fill:"none",strokeLinecap:"round",strokeLinejoin:"round"})})})]})}function aK({className:e,children:t,...n}){return r.jsx(QV,{"data-slot":"combobox-empty",...n,children:r.jsx("div",{className:Ne("px-2.5 py-3 text-[11.5px] leading-[1.5] text-muted-foreground",e),children:t})})}const jwe={left:0,top:0,width:0,height:0,ready:!1};function iK(e,t){const n=p.useRef(null),[s,i]=p.useState(jwe),[o,l]=p.useState(!1),u=p.useRef(!1),d=p.useRef(null),f=p.useCallback(()=>{const g=n.current,v=g?.querySelector(t);if(!g||!v||!g.offsetWidth||!g.offsetHeight||!v.getClientRects().length){u.current=!1,l(!1),i(N=>N.ready?{...N,ready:!1}:N);return}const b=g.getBoundingClientRect(),y=v.getBoundingClientRect();if(!b.width||!b.height||!y.width||!y.height)return;const k=b.width/g.offsetWidth,j=b.height/g.offsetHeight,S={left:(y.left-b.left)/k-g.clientLeft+g.scrollLeft,top:(y.top-b.top)/j-g.clientTop+g.scrollTop,width:y.width/k,height:y.height/j,ready:!0};u.current=!0,i(N=>N.ready&&Math.abs(N.left-S.left)<.1&&Math.abs(N.top-S.top)<.1&&Math.abs(N.width-S.width)<.1&&Math.abs(N.height-S.height)<.1?N:S)},[t]),m=p.useCallback(()=>{if(!u.current){f();return}d.current===null&&(d.current=requestAnimationFrame(()=>{d.current=null,f()}))},[f]);return p.useLayoutEffect(()=>{m()}),p.useLayoutEffect(()=>{const g=n.current;if(!g)return;const v=typeof ResizeObserver>"u"?null:new ResizeObserver(m),b=()=>{v?.disconnect(),v?.observe(g),g.querySelectorAll(e).forEach(k=>v?.observe(k))};b();const y=new MutationObserver(k=>{const j=k.filter(S=>!(S.target instanceof Element&&S.target.hasAttribute("data-selection-indicator")));j.length&&(j.some(S=>S.type==="childList")&&b(),m())});return y.observe(g,{subtree:!0,childList:!0,characterData:!0,attributes:!0,attributeFilter:["data-active","data-checked","class","hidden","style"]}),window.addEventListener("resize",m),document.fonts?.addEventListener("loadingdone",m),()=>{v?.disconnect(),y.disconnect(),d.current!==null&&cancelAnimationFrame(d.current),d.current=null,window.removeEventListener("resize",m),document.fonts?.removeEventListener("loadingdone",m)}},[e,m]),p.useEffect(()=>{if(!s.ready||o)return;let g=0;const v=requestAnimationFrame(()=>{g=requestAnimationFrame(()=>{u.current&&l(!0)})});return()=>{cancelAnimationFrame(v),cancelAnimationFrame(g)}},[s.ready,o]),{containerRef:n,indicator:{"data-selection-indicator":"","data-ready":s.ready?"true":"false","data-animate":o?"true":"false",style:{transform:`translate3d(${s.left}px, ${s.top}px, 0)`,width:s.width,height:s.height}}}}function en({options:e,value:t,onValueChange:n,disabled:s=!1,className:i,...o}){const{containerRef:l,indicator:u}=iK('[data-slot="segmented-item"]','[data-slot="segmented-item"][data-checked]');return r.jsxs(JH,{ref:l,"data-slot":"segmented-control",className:Ne("relative inline-flex gap-0.5 rounded-md border border-hairline bg-control p-0.5 shadow-none",i),value:t,disabled:s,onValueChange:d=>n(d),...o,children:[r.jsx("span",{"aria-hidden":"true","data-slot":"segmented-thumb",...u}),e.map(d=>r.jsxs(XH,{value:d.value,"data-slot":"segmented-item",title:d.title,disabled:d.disabled,"data-zero":d.count===0?"true":void 0,className:Ne("group/seg relative z-[1] inline-flex h-6 items-center gap-[5px] rounded-sm border-0 bg-transparent px-2.5","text-xs font-normal whitespace-nowrap text-subtle select-none","transition-[background-color,color] duration-150 ease-out","hover:bg-nav-hover hover:text-foreground focus-visible:outline-none focus-visible:shadow-focus","data-checked:bg-transparent data-checked:text-foreground data-checked:hover:bg-transparent","data-disabled:cursor-not-allowed data-disabled:opacity-40","data-[zero=true]:data-unchecked:opacity-45"),children:[d.label,d.count!==void 0&&r.jsx("span",{className:Ne("min-w-4 rounded-pill bg-surface-3 px-[5px] text-center text-[10.5px] font-semibold tabular-nums text-muted-foreground","group-data-checked/seg:bg-surface-2 group-data-checked/seg:text-foreground"),children:d.count})]},d.value))]})}const wwe=p.createContext(void 0);function kwe(){return p.useContext(wwe)}const Swe=p.forwardRef(function(t,n){const{className:s,defaultPressed:i=!1,disabled:o=!1,form:l,onPressedChange:u,pressed:d,render:f,type:m,value:g,nativeButton:v=!0,style:b,...y}=t,k=Ws(g||void 0),j=kwe(),S=j?.value??[],N=(o||j?.disabled)??!1,[C,T]=Tl({controlled:j?k!==void 0&&S.indexOf(k)>-1:d,default:i,name:"Toggle",state:"pressed"}),{getButtonProps:R,buttonRef:O}=$i({disabled:N,native:v}),A={disabled:N,pressed:C},P=[O,n],M=[{"aria-pressed":C,onClick($){const D=!C,F=Nt(rs,$.nativeEvent);u?.(D,F),!F.isCanceled&&(k&&j?.setGroupValue?.(k,D,F),!F.isCanceled&&T(D))}},y,R],_=Kt("button",t,{enabled:!j,state:A,ref:P,props:M}),L=p.useMemo(()=>({disabled:N,focusableWhenDisabled:!1}),[N]);return j?r.jsx(GH,{tag:"button",render:f,className:s,style:b,metadata:L,state:A,refs:P,props:M}):_}),Nwe=kh(["inline-flex shrink-0 cursor-pointer items-center justify-center gap-1.5 whitespace-nowrap border","font-medium transition-[background-color,border-color,color] duration-150 ease-out","outline-none select-none disabled:pointer-events-none disabled:opacity-45","[&_svg]:pointer-events-none [&_svg]:shrink-0","data-pressed:border-primary-bd data-pressed:bg-primary-soft data-pressed:font-semibold data-pressed:text-primary-fg","data-pressed:hover:bg-primary-tint"],{variants:{variant:{default:"border-transparent bg-transparent text-subtle hover:bg-nav-hover hover:text-foreground",outline:"border-control-border bg-control text-foreground shadow-1 hover:border-control-border-hover hover:bg-control-hover"},size:{default:"h-[30px] rounded-md px-3 text-[12.5px]",xs:"h-6 rounded-sm px-2 text-[11.5px]",sm:"h-[26px] rounded-sm px-2.5 text-[12px]",lg:"h-9 rounded-md px-4 text-[13px]"}},defaultVariants:{variant:"default",size:"default"}});function Cwe({className:e,variant:t,size:n,...s}){return r.jsx(Swe,{"data-slot":"toggle",className:Ne(Nwe({variant:t,size:n}),e),...s})}const Awe="、";function xc({value:e,onValueChange:t,options:n,placeholder:s="",emptyHint:i=Z("没有匹配的选项"),searchPlaceholder:o=Z("搜索…"),disabled:l=!1,className:u,id:d,title:f,...m}){const g=p.useMemo(()=>n.filter(b=>e.includes(b.value)),[n,e]),v=g.length?g.map(b=>b.label).join(Awe):s;return r.jsxs(PV,{items:n,multiple:!0,value:g,onValueChange:b=>t(b.map(y=>y.value)),isItemEqualToValue:(b,y)=>b?.value===y?.value,disabled:l,children:[r.jsxs(zV,{"data-slot":"multi-select-trigger",id:d,title:f,"aria-label":m["aria-label"],className:Ne("inline-flex h-[30px] min-w-0 cursor-pointer items-center justify-between gap-1.5 rounded-md border border-control-border bg-control px-2.5","text-[12.5px] font-normal text-foreground","transition-colors duration-150 ease-out","hover:border-control-border-hover hover:bg-control-hover","focus-visible:border-primary focus-visible:shadow-focus focus-visible:outline-none","data-disabled:cursor-not-allowed data-disabled:bg-control data-disabled:text-muted-foreground data-disabled:opacity-60",u),children:[r.jsx("span",{"data-slot":"multi-select-value",className:"min-w-0 flex-1 truncate text-left data-[placeholder]:text-muted-foreground","data-placeholder":g.length?void 0:"",title:v,children:v}),r.jsx(KV,{className:"flex flex-none text-muted-foreground transition-transform duration-[180ms] data-popup-open:rotate-180",children:r.jsx("svg",{viewBox:"0 0 10 6",className:"size-2.5","aria-hidden":"true",children:r.jsx("path",{d:"M1 1l4 4 4-4",stroke:"currentColor",strokeWidth:"1.4",fill:"none",strokeLinecap:"round",strokeLinejoin:"round"})})})]}),r.jsx(UV,{children:r.jsx(HV,{sideOffset:4,className:"z-[35]",children:r.jsxs(VV,{"data-slot":"multi-select-content",className:Ne("flex max-h-[280px] w-[max(var(--anchor-width),220px)] flex-col overflow-hidden","rounded-lg border border-border-strong bg-raised shadow-3 outline-none","data-open:animate-in data-open:fade-in-0","data-closed:animate-out data-closed:fade-out-0"),children:[r.jsxs("div",{className:"flex flex-none items-center gap-1.5 border-b border-hairline px-2.5 py-1.5",children:[r.jsxs("svg",{viewBox:"0 0 12 12",className:"size-3 flex-none text-muted-foreground","aria-hidden":"true",children:[r.jsx("circle",{cx:"5",cy:"5",r:"3.4",stroke:"currentColor",strokeWidth:"1.3",fill:"none"}),r.jsx("path",{d:"M7.6 7.6 10.5 10.5",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round"})]}),r.jsx($V,{placeholder:o,className:"min-w-0 flex-1 border-0 bg-transparent p-0 text-[12.5px] text-foreground outline-none placeholder:text-muted-foreground"})]}),r.jsx(QV,{children:r.jsx("div",{className:"px-2.5 py-3 text-[11.5px] leading-[1.5] text-muted-foreground",children:i})}),r.jsx(BV,{className:"min-h-0 flex-1 overflow-y-auto overscroll-contain p-[5px]",children:b=>r.jsxs(YV,{value:b,disabled:b.disabled===!0,className:Ne("grid cursor-pointer grid-cols-[14px_minmax(0,1fr)] items-center gap-2 rounded-sm px-[9px] py-[5px]","text-[12.5px] leading-[1.4] text-foreground select-none outline-none","transition-colors duration-[120ms] ease-out","data-[highlighted]:bg-nav-hover","data-[selected]:bg-primary-soft data-[selected]:font-semibold data-[selected]:text-primary-fg","data-[highlighted]:data-[selected]:bg-primary-tint","data-disabled:pointer-events-none data-disabled:text-muted-foreground"),children:[r.jsx(XV,{className:"col-start-1 flex text-primary",children:r.jsx("svg",{viewBox:"0 0 12 12",className:"size-3","aria-hidden":"true",children:r.jsx("path",{d:"M2.5 6.2 4.8 8.5 9.5 3.8",stroke:"currentColor",strokeWidth:"1.8",fill:"none",strokeLinecap:"round",strokeLinejoin:"round"})})}),r.jsx("span",{className:"col-start-2 min-w-0 truncate",children:b.label})]},b.value)})]})})})]})}const oK=p.createContext(void 0);function Lh(e){const t=p.useContext(oK);if(t===void 0&&!e)throw new Error(Kn(47));return t}const Ewe={...VR,disabled:e=>e.disabled,instantType:e=>e.instantType,openMethod:e=>e.openMethod,openChangeReason:e=>e.openChangeReason,modal:e=>e.modal,focusManagerModal:e=>e.focusManagerModal,stickIfOpen:e=>e.stickIfOpen,titleElementId:e=>e.titleElementId,descriptionElementId:e=>e.descriptionElementId,openOnHover:e=>e.openOnHover,closeDelay:e=>e.closeDelay,adaptiveOrigin:e=>e.adaptiveOrigin};class Twe extends Mh{constructor(n,s,i){const o=new oS;super(Owe(n,o,s,i),Rwe(o),Ewe);Cn(this,"setOpen",(n,s)=>{const i=s.reason===Ka,o=s.reason===xu&&s.event.detail===0,l=!n&&(s.reason===mg||s.reason==null),u=Q6(s),d=this.select("activeTriggerId");if(!n&&s.reason===fR&&s.trigger==null&&d!=null&&(s.trigger=this.context.triggerElements.getById(d)??this.select("activeTriggerElement")??void 0),this.context.onOpenChange?.(n,s),s.isCanceled)return;this.state.floatingRootContext.dispatchOpenChange(n,s);const f=()=>{const g=LR(this.state,n,s.trigger,u());g.openChangeReason=s.reason,this.update(g)};i?(this.set("stickIfOpen",!0),this.context.stickIfOpenTimeout.start(vve,()=>{this.set("stickIfOpen",!1)}),xr.flushSync(f)):f();let m;o?m="click":l?m="dismiss":s.reason===Ud&&(m="focus"),this.set("instantType",m)})}}function Owe(e,t,n,s=!1){const i={...UR(t,n,s),disabled:!1,modal:!1,focusManagerModal:!1,instantType:void 0,openMethod:null,openChangeReason:null,titleElementId:void 0,descriptionElementId:void 0,stickIfOpen:!0,openOnHover:!1,closeDelay:0,adaptiveOrigin:void 0,...e};return i.open&&e?.mounted===void 0&&(i.mounted=!0),i}function Rwe(e){return{popupRef:p.createRef(),onOpenChange:void 0,onOpenChangeComplete:void 0,triggerFocusTargetRef:p.createRef(),beforeContentFocusGuardRef:p.createRef(),stickIfOpenTimeout:new Bi,triggerElements:e}}const lK=Jk(function({props:t}){const{children:n,open:s,defaultOpen:i=!1,onOpenChange:o,onOpenChangeComplete:l,modal:u=!1,handle:d,triggerId:f,defaultTriggerId:m=null}=t,g=Iwe(d,{modal:u,open:i,openProp:s,activeTriggerId:m,triggerIdProp:f});g.useControlledProp("openProp",s),g.useControlledProp("triggerIdProp",f);const v=g.useState("open"),b=g.useState("mounted"),y=g.useState("payload");g.useContextCallback("onOpenChange",o),g.useContextCallback("onOpenChangeComplete",l),Z6(g,v),zR(g);const{forceUnmount:k}=BR(v,g,()=>{g.update({stickIfOpen:!0,openChangeReason:null})});g.useSyncedValues({modal:u}),p.useEffect(()=>{v||g.context.stickIfOpenTimeout.clear()},[g,v]),p.useImperativeHandle(t.actionsRef,()=>({unmount:k,close:()=>g.setOpen(!1,Nt(mR))}),[k,g]);const j=v||b;return r.jsxs(oK.Provider,{value:g,children:[d&&r.jsx(DR,{handle:d,store:g}),j&&r.jsx(Mwe,{store:g,modal:u}),typeof n=="function"?n({payload:y}):n]})});function Pwe(e){return Lh(!0)?r.jsx(lK,{props:e}):r.jsx(Tve,{children:r.jsx(lK,{props:e})})}function Iwe(e,t){const n=_R((s,i)=>new Twe(t,s,i));return p.useEffect(()=>n.context.stickIfOpenTimeout.disposeEffect(),[n]),n}function Mwe({store:e,modal:t}){const n=e.useState("floatingRootContext"),s=Fb(n,{outsidePressEvent:{mouse:t==="trap-focus"?"sloppy":"intentional",touch:"sloppy"}}),i=s.reference,o=s.floating;return FR(e,{activeTriggerProps:i,inactiveTriggerProps:i,popupProps:o}),null}const _we=300;function Dwe(e,t){const n=p.useRef(null);function s(o){xr.flushSync(()=>{e.setOpen(!1,Nt(Ud,o.nativeEvent,o.currentTarget))}),uxe(n.current)?.focus()}function i(o){const l=e.select("positionerElement");if(l&&dg(o,l))e.context.beforeContentFocusGuardRef.current?.focus();else{xr.flushSync(()=>{e.setOpen(!1,Nt(Ud,o.nativeEvent,o.currentTarget))});let u=cxe(e.context.triggerFocusTargetRef.current||t.current);for(;u!==null&&Et(l,u);){const d=u;if(u=oR(u),u===d)break}u?.focus()}}return{preFocusGuardRef:n,handlePreFocusGuardFocus:s,handleFocusTargetFocus:i}}const Lwe=yR(function(t,n){const{render:s,className:i,style:o,disabled:l=!1,nativeButton:u=!0,handle:d,payload:f,openOnHover:m=!1,delay:g=_we,closeDelay:v=0,id:b,...y}=t,k=Lh(!0),S=KR(d)??k;if(!S)throw new Error(Kn(74));const N=Ws(b),C=S.useState("isTriggerActive",N),T=S.useState("floatingRootContext"),R=S.useState("isOpenedByTrigger",N),O=S.useState("triggerPopupId",N),A=p.useRef(null),{registerTrigger:P,isMountedByThisTrigger:M}=$R(N,A,S,{payload:f,disabled:l,openOnHover:m,closeDelay:v}),_=S.useState("openChangeReason"),L=S.useState("stickIfOpen"),$=S.useState("openMethod"),D=S.useState("focusManagerModal"),F=sH(T,{enabled:!l&&m&&($!=="touch"||_!==xu),mouseOnly:!0,move:!1,handleClose:cH(),restMs:g,delay:{close:v},triggerElementRef:A,isActiveTrigger:C,isClosing:()=>S.select("transitionStatus")==="ending"}),q=Bb(T,{stickIfOpen:L}),V=iP(()=>S.select("open"),se=>{S.set("openMethod",se)}),Q=S.useState("triggerProps",M),{getButtonProps:X,buttonRef:U}=$i({disabled:l,native:u}),z={open(se){return se&&_===xu?GO.open(se):Ik.open(se)}},{preFocusGuardRef:H,handlePreFocusGuardFocus:J,handleFocusTargetFocus:ee}=Dwe(S,A),G=Kt("button",t,{state:{disabled:l,open:R},ref:[U,n,P,A],props:[q.reference,F,Q,V,{[SR]:"",id:N,"aria-haspopup":"dialog","aria-expanded":R,"aria-controls":O},y,X],stateAttributesMapping:z}),Y=r.jsx(p.Fragment,{children:G},N);return M&&!D?r.jsxs(p.Fragment,{children:[r.jsx(Rh,{ref:H,onFocus:J}),Y,r.jsx(Rh,{ref:S.context.triggerFocusTargetRef,onFocus:ee})]}):Y}),cK=p.createContext(void 0);function $we(){const e=p.useContext(cK);if(e===void 0)throw new Error(Kn(45));return e}const zwe=p.forwardRef(function(t,n){const{keepMounted:s=!1,...i}=t;return Lh().useState("mounted")||s?r.jsx(cK.Provider,{value:s,children:r.jsx(nS,{ref:n,...i})}):null}),uK=p.createContext(void 0);function Bwe(){const e=p.useContext(uK);if(!e)throw new Error(Kn(46));return e}const Fwe=p.forwardRef(function(t,n){const{render:s,className:i,style:o,anchor:l,positionMethod:u,side:d,align:f,sideOffset:m,alignOffset:g,collisionBoundary:v="clipping-ancestors",collisionPadding:b,arrowPadding:y,sticky:k,disableAnchorTracking:j=!1,collisionAvoidance:S=x6,...N}=t,C=Lh(),T=$we(),R=Ave(),O=C.useState("floatingRootContext"),A=C.useState("mounted"),P=C.useState("open"),M=C.useState("openChangeReason"),_=C.useState("activeTriggerElement"),L=C.useState("modal"),$=C.useState("openMethod"),D=C.useState("positionerElement"),F=C.useState("instantType"),q=C.useState("transitionStatus"),V=C.useState("adaptiveOrigin"),Q=p.useRef(null),X=dR(D),U=pS({anchor:l,floatingRootContext:O,positionMethod:u,mounted:A,side:d,sideOffset:m,align:f,alignOffset:g,arrowPadding:y,collisionBoundary:v,collisionPadding:b,sticky:k,disableAnchorTracking:j,keepMounted:T,nodeId:R,collisionAvoidance:S,adaptiveOrigin:V}),z=O.useState("domReferenceElement");Ge(()=>{const G=z,Y=Q.current;if(G&&(Q.current=G),Y&&G&&G!==Y){C.set("instantType",void 0);const se=new AbortController;return X(()=>{C.set("instantType","trigger-change")},se.signal),()=>{se.abort()}}},[z,X,C]);const H=L===!0&&M!==Ka;mP(P&&H,$==="touch",D,_);const J=C.useStateSetter("positionerElement"),ee={open:P,side:U.side,align:U.align,anchorHidden:U.anchorHidden,instant:F},K=gS(t,ee,{styles:U.positionerStyles,transitionStatus:q,props:N,refs:[n,J],hidden:!A,inert:!P});return r.jsxs(uK.Provider,{value:U,children:[A&&H&&r.jsx(yS,{inert:qb(!P),cutout:_}),r.jsx(Eve,{id:R,children:K})]})}),Uwe=p.createContext(void 0);function Hwe(){const[e,t]=p.useState(0),n=qe(()=>(t(i=>i+1),()=>{t(i=>Math.max(0,i-1))}));return{context:p.useMemo(()=>({register:n}),[n]),hasClosePart:e>0}}const Vwe=p.forwardRef(function(t,n){const{render:s,className:i,style:o,initialFocus:l,finalFocus:u,...d}=t,f=Lh(),m=Bwe(),g=pV()!=null,{context:v,hasClosePart:b}=Hwe(),y=f.useState("open"),k=f.useState("openMethod"),j=f.useState("instantType"),S=f.useState("transitionStatus"),N=f.useState("popupProps"),C=f.useState("titleElementId"),T=f.useState("descriptionElementId"),R=f.useState("modal"),O=f.useState("mounted"),A=f.useState("openChangeReason"),P=f.useState("activeTriggerElement"),M=f.useState("floatingRootContext"),_=M.useState("floatingId"),L=f.useState("disabled"),$=f.useState("openOnHover"),D=f.useState("closeDelay");ji({open:y,ref:f.context.popupRef,onComplete(){y&&f.context.onOpenChangeComplete?.(!0)}}),rH(M,{enabled:$&&!L,closeDelay:D});const F=l===void 0?Y6(f.context.popupRef):l,q=R!==!1&&b;f.useSyncedValue("focusManagerModal",q);const V=f.useStateSetter("popupElement"),Q={open:y,side:m.side,align:m.align,instant:j,transitionStatus:S},X=Kt("div",t,{state:Q,ref:[n,f.context.popupRef,V],props:[N,{id:_,role:"dialog",...Ub,"aria-labelledby":C,"aria-describedby":T,onKeyDown(U){g&&vS.has(U.key)&&U.stopPropagation()}},Kb(S),d],stateAttributesMapping:WO});return r.jsx(rS,{context:M,openInteractionType:k,modal:q,disabled:!O||A===Ka,initialFocus:F,returnFocus:u,restoreFocus:"popup",previousFocusableElement:br(P)?P:void 0,nextFocusableElement:f.context.triggerFocusTargetRef,beforeContentFocusGuardRef:f.context.beforeContentFocusGuardRef,children:r.jsx(Uwe.Provider,{value:v,children:X})})}),Kwe=p.forwardRef(function(t,n){const{render:s,className:i,style:o,...l}=t,u=Lh(),d=Ws(l.id);return u.useSyncedValueWithCleanup("titleElementId",d),Kt("h2",t,{ref:n,props:[{id:d},l]})}),qwe=p.forwardRef(function(t,n){const{render:s,className:i,style:o,...l}=t,u=Lh(),d=Ws(l.id);return u.useSyncedValueWithCleanup("descriptionElementId",d),Kt("p",t,{ref:n,props:[{id:d},l]})});function ui(e){return r.jsx(Pwe,{"data-slot":"popover",...e})}function wi(e){return r.jsx(Lwe,{"data-slot":"popover-trigger",...e})}function di({className:e,sideOffset:t=6,align:n="start",side:s,alignOffset:i,collisionPadding:o=8,anchor:l,children:u,...d}){return r.jsx(zwe,{children:r.jsx(Fwe,{className:"z-[35] outline-none",sideOffset:t,align:n,side:s,alignOffset:i,collisionPadding:o,anchor:l,children:r.jsx(Vwe,{"data-slot":"popover-content",className:Ne("flex max-h-[min(70vh,560px)] flex-col overflow-hidden rounded-lg border border-border-strong bg-raised text-foreground shadow-3","outline-none","data-open:animate-in data-open:fade-in-0 data-open:slide-in-from-top-1","data-closed:animate-out data-closed:fade-out-0",e),...d,children:u})})})}function Gwe({className:e,...t}){return r.jsx("div",{"data-slot":"popover-header",className:Ne("flex items-center gap-2 border-b border-hairline px-3 py-2",e),...t})}function dK({className:e,...t}){return r.jsx(Kwe,{"data-slot":"popover-title",className:Ne("text-[12.5px] font-semibold text-foreground",e),...t})}function Wwe({className:e,...t}){return r.jsx(qwe,{"data-slot":"popover-description",className:Ne("text-[11.5px] leading-[1.55] text-muted-foreground",e),...t})}function vP({page:e,pageCount:t,onPageChange:n,disabled:s=!1,className:i,infoFirst:o=!1}){const l=Math.max(1,Number(t)||1),u=Math.min(Math.max(1,Number(e)||1),l),d=r.jsx("span",{"data-slot":"pager-info",className:"text-[11.5px] text-subtle [font-variant-numeric:tabular-nums]",children:Z("第 {current} / {total} 页",{current:u,total:l})});return r.jsxs("div",{"data-slot":"pager",className:Ne("flex items-center gap-2",i),children:[o&&d,r.jsx(B,{type:"button",variant:"outline",size:"sm",disabled:s||u<=1,onClick:()=>n(u-1),children:Z("上一页")}),r.jsx(B,{type:"button",variant:"outline",size:"sm",disabled:s||u>=l,onClick:()=>n(u+1),children:Z("下一页")}),!o&&d]})}const fK=p.createContext(!1);function Go({className:e,render:t,children:n,...s}){const{containerRef:i,indicator:o}=iK('[data-slot="nav-item"]','[data-slot="nav-item"][data-active]'),l=Th({defaultTagName:"div",render:t,ref:i,props:{...s,"data-slot":"nav-list",className:Ne("relative isolate flex min-h-0 flex-col gap-0.5",e),children:r.jsxs(r.Fragment,{children:[r.jsx("span",{"data-slot":"nav-list-indicator","aria-hidden":"true",...o}),n]})}});return r.jsx(fK.Provider,{value:!0,children:l})}const Ywe=kh(["relative flex h-auto w-full items-center justify-start gap-2.5 whitespace-normal text-left active:translate-y-0","border border-transparent rounded-md","shadow-none","transition-[background-color,border-color,color] duration-150 ease-out","outline-none focus-visible:shadow-focus","disabled:pointer-events-none disabled:opacity-45","[&_svg]:pointer-events-none [&_svg]:shrink-0"],{variants:{variant:{default:["cursor-pointer px-2.5 py-2","text-[12.5px] font-medium text-sidebar-fg","hover:bg-nav-hover hover:text-foreground","data-[active]:border-nav-selected-border data-[active]:bg-nav-selected-bg data-[active]:font-medium data-[active]:text-nav-selected-fg"],add:["cursor-pointer justify-center px-2 py-1.5","border-dashed border-border-strong bg-transparent","text-[11.5px] text-muted-foreground","hover:border-primary hover:text-primary-fg"]}},defaultVariants:{variant:"default"}});function Ts({className:e,variant:t,active:n=!1,count:s,icon:i,trailing:o,children:l,...u}){const d=p.useContext(fK);return r.jsxs(B,{type:"button",variant:"ghost","data-slot":"nav-item","data-active":n?"":void 0,"data-sliding":d?"":void 0,"aria-current":n?"true":void 0,className:Ne(Ywe({variant:t}),d&&"data-[active]:border-transparent data-[active]:bg-transparent data-[active]:hover:bg-transparent",e),...u,children:[i,r.jsx("span",{"data-slot":"nav-item-label",className:"min-w-0 flex-1 truncate",children:l}),o,s!=null&&r.jsx("span",{"data-slot":"nav-item-count",className:Ne("flex-none text-[10.5px] text-sidebar-muted [font-variant-numeric:tabular-nums]",n&&"text-inherit"),children:s})]})}function Qb(e){return r.jsx(_H,{"data-slot":"sheet",...e})}function Xwe(e){return r.jsx(LH,{"data-slot":"sheet-trigger",...e})}function hK(e){return r.jsx(Gb,{"data-slot":"sheet-close",...e})}function Qwe(e){return r.jsx(sP,{"data-slot":"sheet-portal",...e})}const _S=e=>r.jsx(aP,{"data-slot":"sheet-title",...e}),Zwe=e=>r.jsx(kH,{"data-slot":"sheet-description",...e});function Jwe({className:e,...t}){return r.jsx(XR,{"data-slot":"sheet-overlay",className:Ne("fixed inset-0 isolate z-30 bg-mask backdrop-blur-[3px]","transition-opacity duration-200","data-open:animate-in data-open:fade-in-0","data-closed:animate-out data-closed:fade-out-0 data-closed:fill-mode-forwards",e),...t})}function Zb({className:e,children:t,showCloseButton:n=!0,showHandle:s=!0,side:i="bottom",keepMounted:o=!1,...l}){const u=i==="center",d=i==="right",f=i==="left";return r.jsxs(Qwe,{keepMounted:o,children:[r.jsx(Jwe,{}),r.jsxs(rP,{"data-slot":"sheet-content",className:Ne("fixed z-30 flex flex-col overflow-hidden border border-border bg-surface shadow-3 outline-none","transition-[opacity,transform] duration-200 [transition-timing-function:cubic-bezier(.32,.9,.3,1)]",u?["top-1/2 left-1/2 max-h-[calc(100vh-48px)] w-[min(560px,calc(100vw-48px))]","-translate-x-1/2 -translate-y-1/2 rounded-lg","data-open:animate-in data-open:fade-in-0 data-open:zoom-in-[.985]","data-closed:animate-out data-closed:fade-out-0 data-closed:fill-mode-forwards"]:d?["top-0 right-0 bottom-0 h-full w-[min(340px,86vw)] rounded-l-xl","data-open:animate-in data-open:slide-in-from-right data-open:fade-in-0","data-closed:animate-out data-closed:slide-out-to-right data-closed:fade-out-0 data-closed:fill-mode-forwards"]:f?["top-0 left-0 bottom-0 h-full w-[min(340px,86vw)] rounded-r-xl","data-open:animate-in data-open:slide-in-from-left data-open:fade-in-0","data-closed:animate-out data-closed:slide-out-to-left data-closed:fade-out-0 data-closed:fill-mode-forwards"]:["inset-x-0 bottom-0 max-h-[85svh] rounded-t-xl","data-open:animate-in data-open:slide-in-from-bottom data-open:fade-in-0","data-closed:animate-out data-closed:slide-out-to-bottom data-closed:fade-out-0 data-closed:fill-mode-forwards"],e),...l,children:[s&&!u&&!d&&!f&&r.jsx("div",{"aria-hidden":"true",className:"mx-auto mt-2 mb-1 h-1 w-9.5 shrink-0 rounded-pill bg-border-strong"}),t,n&&r.jsxs(Gb,{"data-slot":"sheet-close",render:r.jsx(B,{variant:"ghost",size:"icon-sm",className:"absolute top-3 right-3"}),children:[r.jsx("svg",{viewBox:"0 0 12 12",className:"size-3","aria-hidden":"true",children:r.jsx("path",{d:"M2.5 2.5l7 7M9.5 2.5l-7 7",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",fill:"none"})}),r.jsx("span",{className:"sr-only",children:Z("关闭")})]})]})]})}function DS({className:e,...t}){return r.jsx("div",{"data-slot":"sheet-header",className:Ne("flex shrink-0 items-center gap-2.5 border-b border-hairline px-5 py-3 pr-10","[&_h2]:flex-1 [&_h2]:text-[15px] [&_h2]:font-semibold",e),...t})}function LS({className:e,...t}){return r.jsx("div",{"data-slot":"sheet-body",className:Ne("flex min-h-0 flex-1 flex-col gap-3.5 overflow-y-auto px-5 py-4",e),...t})}function bP({className:e,...t}){return r.jsx("div",{"data-slot":"sheet-footer",className:Ne("flex shrink-0 items-center gap-2 border-t border-hairline bg-surface-2 px-5 py-3 pb-[max(12px,env(safe-area-inset-bottom))]",e),...t})}function yP(e){const t=p.useMemo(()=>typeof window>"u"?null:window.matchMedia(e),[e]);return p.useSyncExternalStore(p.useCallback(n=>(t?.addEventListener("change",n),()=>t?.removeEventListener("change",n)),[t]),()=>t?.matches??!1,()=>!1)}function $S({open:e,onOpenChange:t,title:n,actions:s,children:i,breakpoint:o=767,side:l="right",inlineClassName:u,inlineAs:d="div",contentClassName:f,bodyClassName:m}){const g=yP(`(max-width: ${o}px)`);return p.useEffect(()=>{!g&&e&&t(!1)},[g,e,t]),p.useEffect(()=>{const v=()=>t(!1);return window.addEventListener("wb:navigation-close",v),()=>window.removeEventListener("wb:navigation-close",v)},[t]),g?r.jsx(Qb,{open:e,onOpenChange:t,children:r.jsxs(Zb,{side:l,keepMounted:!0,showHandle:!1,className:f,children:[r.jsxs(DS,{children:[r.jsx(_S,{children:n}),s]}),r.jsx(LS,{className:Ne("gap-4 [&>*]:w-full [&>*]:min-w-0 [&>*]:max-w-none",m),children:i})]})}):r.jsx(d,{"data-slot":"responsive-sheet-inline",className:u,children:i})}function e0e(e){const{open:t,defaultOpen:n=!1,onOpenChange:s,disabled:i}=e,[o,l]=Tl({controlled:t,default:n,name:"Collapsible",state:"open"}),{mounted:u,setMounted:d,transitionStatus:f}=gu(o,!0,!0),m=Ws(),[g,v]=p.useState(),b=g===null?void 0:g??m,y=qe(k=>{const j=!o,S=Nt(xu,k.nativeEvent);s(j,S),!S.isCanceled&&l(j)});return p.useMemo(()=>({defaultPanelId:m,disabled:i,handleTrigger:y,mounted:u,open:o,panelId:b,setMounted:d,setOpen:l,setPanelIdState:v,transitionStatus:f}),[m,i,y,u,o,b,d,l,v,f])}const mK=p.createContext(void 0);function pK(){const e=p.useContext(mK);if(e===void 0)throw new Error(Kn(15));return e}const t0e="data-open",n0e="data-closed",r0e=qO,s0e="data-panel-open",a0e={[t0e]:""},i0e={[n0e]:""},o0e={open(e){return e?{[s0e]:""}:null}},gK={...{open(e){return e?a0e:i0e}},...Fo},l0e=p.forwardRef(function(t,n){const{render:s,className:i,defaultOpen:o=!1,disabled:l=!1,onOpenChange:u,open:d,style:f,...m}=t,g=qe(u),v=e0e({open:d,defaultOpen:o,onOpenChange:g,disabled:l}),b=p.useMemo(()=>({open:v.open,disabled:v.disabled,transitionStatus:v.transitionStatus}),[v.open,v.disabled,v.transitionStatus]),y=p.useMemo(()=>({...v,onOpenChange:g,state:b}),[v,g,b]),k=Kt("div",t,{state:b,ref:n,props:m,stateAttributesMapping:gK});return r.jsx(mK.Provider,{value:y,children:k})}),c0e={...o0e,...Fo},u0e=p.forwardRef(function(t,n){const{panelId:s,open:i,handleTrigger:o,state:l,disabled:u}=pK(),{className:d,disabled:f=u,render:m,nativeButton:g=!0,style:v,...b}=t,{getButtonProps:y,buttonRef:k}=$i({disabled:f,focusableWhenDisabled:!0,native:g});return Kt("button",t,{state:l,ref:[n,k],props:[{"aria-controls":i?s:void 0,"aria-expanded":i,onClick:o},b,y],stateAttributesMapping:c0e})}),Jb={height:void 0,width:void 0};function d0e(e){const{externalRef:t,hiddenUntilFound:n,id:s,keepMounted:i,mounted:o,onOpenChange:l,open:u,setMounted:d,setOpen:f,transitionStatus:m}=e,g=p.useRef(null),v=p.useRef(null),[b,y]=p.useState(Jb),k=p.useRef(Jb),j=p.useRef(!1),S=p.useRef(u),N=p.useRef(!1),[C,T]=p.useState(!1),R=p.useRef(null),O=lo(t,g),A=ss(u),P=dR(g),M=!u&&!o,_=C?"idle":m,L=u&&(S.current||N.current),$=!u&&o&&v.current==="css-animation"&&b.height===void 0&&b.width===void 0?k.current:b,D=n&&M&&v.current!=="css-animation",F=qe((U,z=!0)=>{z&&(k.current=U),y(U)}),q=qe(()=>{R.current?.(),R.current=null}),V=qe(U=>{q(),R.current=()=>{R.current=null,U()}}),Q=qe(()=>{u&&o&&v.current==="css-animation"&&(N.current=!0)});Ge(()=>{!C||m==="starting"||T(!1)},[C,m]),p.useEffect(()=>()=>{Q(),q()},[Q,q]),Ge(()=>{const U=g.current;if(!U)return;!u&&R.current&&q();const z=f0e(U,L);if(v.current=z,u&&m==="idle"&&S.current&&z==="css-animation"){k.current=jg(U);return}if(u&&m==="starting"){const ee=j.current;if(j.current=!1,z==="none"){F(jg(U)),T(!0);return}if(z==="css-transition"){const Y=h0e(U);if(F(jg(U)),!ee)return Y;const se=zS(U,"transition-duration","0s");return V(se),T(!0),Y}F(jg(U));const K=zS(U,"animation-name","none");if(!ee){K();return}const G=zS(U,"animation-duration","0s");K(),V(G),T(!0);return}if(!u&&o&&(m==="idle"||m==="starting")){if(S.current=!1,N.current=!1,z==="none"){F(Jb,!1),d(!1);return}F(jg(U));return}if(m!=="ending")return;if(z==="none"){d(!1);return}const H=jg(U);if(!(H.height>0||H.width>0)){d(!1);return}F(H),z==="css-animation"&&zS(U,"animation-name","none")()},[o,u,q,F,d,V,L,m]),ji({enabled:u&&o&&_==="idle",open:!0,ref:g,onComplete(){u&&F(Jb,!1)}}),p.useEffect(()=>{if(u||!o||_!=="ending"||!g.current)return;const z=new AbortController;let H=-1;function J(){A.current||(d(!1),F(Jb,!1))}return H=Fi.request(()=>{P(J,z.signal)}),()=>{Fi.cancel(H),z.abort()}},[A,o,u,_,P,F,d]),Ge(()=>{const U=g.current;!U||!n||!M||U.setAttribute("hidden","until-found")},[M,n]),p.useEffect(function(){const z=g.current;if(!z)return;function H(J){const ee=Nt(rs,J);l(!0,ee),!ee.isCanceled&&(j.current=!0,f(!0))}return kn(z,"beforematch",H)},[l,f]);const X=i||n||o||u;return{height:$.height,props:{...D?{[r0e]:""}:void 0,hidden:M,id:s},ref:O,shouldPreventOpenAnimation:L,shouldRender:X,transitionStatus:_,width:$.width}}function jg(e){return{height:e.scrollHeight,width:e.scrollWidth}}function f0e(e,t){const n=vr(e).getComputedStyle(e),s=(n.animationName.split(",").map(o=>o.trim()).some(o=>o!==""&&o!=="none")||t)&&xK(n.animationDuration),i=xK(n.transitionDuration);return s&&i||i?"css-transition":s?"css-animation":"none"}function xK(e){return e.split(",").map(t=>t.trim()).some(t=>t!==""&&Number.parseFloat(t)>0)}function zS(e,t,n){const s=e.style.getPropertyValue(t),i=e.style.getPropertyPriority(t);return e.style.setProperty(t,n),()=>{if(s===""){e.style.removeProperty(t);return}e.style.setProperty(t,s,i)}}function h0e(e){const t={"justify-content":e.style.justifyContent,"align-items":e.style.alignItems,"align-content":e.style.alignContent,"justify-items":e.style.justifyItems};Object.keys(t).forEach(i=>{e.style.setProperty(i,"initial","important")});function n(){Object.entries(t).forEach(([i,o])=>{if(o===""){e.style.removeProperty(i);return}e.style.setProperty(i,o)})}const s=Fi.request(n);return()=>{Fi.cancel(s),n()}}const m0e="--collapsible-panel-height",p0e="--collapsible-panel-width",g0e=p.forwardRef(function(t,n){const{className:s,hiddenUntilFound:i,keepMounted:o,render:l,id:u,style:d,...f}=t,{defaultPanelId:m,mounted:g,onOpenChange:v,open:b,setMounted:y,setPanelIdState:k,setOpen:j,state:S,transitionStatus:N}=pK(),C=i??!1,T=o??!1,R=u||void 0,O=R??m;Ge(()=>(k(Q=>R??(Q===null?void 0:Q)),()=>{k(Q=>Q===R?null:Q)}),[R,k]);const{height:A,props:P,ref:M,shouldPreventOpenAnimation:_,shouldRender:L,transitionStatus:$,width:D}=d0e({externalRef:n,hiddenUntilFound:C,id:O,keepMounted:T,mounted:g,onOpenChange:v,open:b,setMounted:y,setOpen:j,transitionStatus:N}),F={...S,transitionStatus:$},q=UF(d,F),V=Kt("div",{...t,style:void 0},{state:F,ref:M,props:[P,{style:{[m0e]:A===void 0?"auto":`${A}px`,[p0e]:D===void 0?"auto":`${D}px`}},f,q?{style:q}:void 0,_?{style:{animationName:"none"}}:void 0],stateAttributesMapping:gK});return L?V:null});function is(e){return r.jsx(l0e,{"data-slot":"collapsible",...e})}function os({className:e,render:t,...n}){return r.jsx(u0e,{"data-slot":"collapsible-trigger",render:t??r.jsx(B,{variant:"ghost"}),className:e,...n})}function ls({className:e,...t}){return r.jsx(g0e,{"data-slot":"collapsible-content",className:Ne("min-w-0",typeof e=="string"&&e),...t})}function Fe({className:e,variant:t="default",...n}){return r.jsx("div",{"data-slot":"alert",role:"alert",className:Ne("rounded-md border px-3 py-2.5 text-[12.5px] leading-relaxed",t==="default"&&"border-border bg-surface-2 text-subtle",t==="destructive"&&"border-destructive-bd bg-destructive-soft text-destructive",t==="warning"&&"border-warning-bd bg-warning-soft text-warning",t==="success"&&"border-success-bd bg-success-soft text-success",e),...n})}function wg({className:e,...t}){return r.jsx("div",{"data-slot":"alert-title",className:Ne("font-semibold",e),...t})}function ho({className:e,...t}){return r.jsx("div",{"data-slot":"alert-description",className:Ne("text-[12px] leading-relaxed",e),...t})}function gt({className:e,...t}){return r.jsx("div",{"data-slot":"empty",className:Ne("flex flex-col items-center justify-center gap-2 px-4 py-8 text-center text-[12.5px] leading-relaxed text-muted-foreground",e),...t})}function jP({className:e,...t}){return r.jsx("div",{"data-slot":"empty-title",className:Ne("text-[13px] font-semibold text-foreground",e),...t})}function wP({className:e,...t}){return r.jsx("div",{"data-slot":"empty-description",className:Ne("text-[12px] leading-relaxed text-muted-foreground",e),...t})}function Oa({className:e,variant:t="success",pulse:n,...s}){return r.jsx("span",{"data-slot":"status-dot","aria-hidden":"true",className:Ne("inline-block size-[7px] shrink-0 rounded-full",t==="success"&&"bg-success",t==="warning"&&"bg-warning",t==="destructive"&&"bg-destructive",t==="muted"&&"bg-muted-foreground",n&&"animate-pulse motion-reduce:animate-none",e),...s})}const x0e=new Set(["a","article","b","blockquote","br","code","del","div","em","h1","h2","h3","h4","h5","h6","hr","i","img","kbd","li","ol","p","pre","s","section","small","span","strong","sub","sup","ul","col","colgroup"]),vK={button:B,input:ze,label:Ae,textarea:Xs,table:vs,thead:Qs,tbody:Es,tfoot:Fye,tr:Jt,th:tt,td:Ve,caption:Uye},v0e=new Set(["text-align","white-space","word-break","overflow-wrap","font-weight","font-style","font-size","line-height","color","background-color","width","max-width","min-width","height","padding","margin","display","gap","flex","grid-column"]);function bK(e,t=!1){if(t&&/^data:image\/(?:png|jpe?g|gif|webp|avif);base64,/i.test(e)||/^(?:https?:\/\/|\/[^/]|\.\.?\/|#)/i.test(e))return e}function b0e(e){const t={};for(const n of e.attributes)n.name==="class"?t.className=n.value:n.name==="colspan"?t.colSpan=Number(n.value)||1:n.name==="rowspan"?t.rowSpan=Number(n.value)||1:n.name==="target"&&["_blank","_self"].includes(n.value)?t.target=n.value:n.name==="loading"&&["lazy","eager"].includes(n.value)?t.loading=n.value:["title","id","role","alt","scope","type","placeholder"].includes(n.name)||/^(aria-|data-)/.test(n.name)?t[n.name]=n.value:n.name==="href"?t.href=bK(n.value):n.name==="src"&&(t.src=bK(n.value,!0));if(e.tagName==="A"&&(t.rel="noopener noreferrer"),e instanceof HTMLElement){const n={};for(const s of e.style){if(!v0e.has(s))continue;const i=e.style.getPropertyValue(s);/url\(|expression\(/i.test(i)||(n[s.replace(/-([a-z])/g,(o,l)=>l.toUpperCase())]=i)}Object.keys(n).length&&(t.style=n)}return t}function BS(e,t=""){return Array.from(e).map((n,s)=>{const i=`${t}${s}`;if(n.nodeType===Node.TEXT_NODE)return n.textContent;if(!(n instanceof Element))return null;const o=n.tagName.toLowerCase();if(["script","style","iframe","object","embed"].includes(o))return null;const l=b0e(n),u=BS(n.childNodes,`${i}-`);if(o==="details"){const d=Array.from(n.children).find(f=>f.tagName==="SUMMARY");return r.jsxs(is,{defaultOpen:n.hasAttribute("open"),...l,children:[r.jsxs(os,{className:Ne("h-auto w-full justify-start whitespace-normal px-0 text-left",d?.className),children:[r.jsx("span",{className:"shrink-0 transition-transform in-data-panel-open:rotate-90","aria-hidden":"true",children:"▸"}),d?BS(d.childNodes,`${i}-summary-`):"…"]}),r.jsx(ls,{keepMounted:!0,children:BS(Array.from(n.childNodes).filter(f=>f!==d),`${i}-body-`)})]},i)}if(o==="span"&&n.classList.contains("badge")){const d=n.classList.contains("ok")||n.classList.contains("phase-streaming")?"success":n.classList.contains("bad")?"destructive":n.classList.contains("warn")?"warning":n.classList.contains("brand")?"brand":"outline";return r.jsx(Ee,{variant:d,shape:n.classList.contains("tag")?"tag":"pill",...l,children:u},i)}return o==="span"&&n.classList.contains("req-live-dot")?r.jsx(Oa,{pulse:!0,className:"size-[5px] bg-current"},i):o==="div"&&n.classList.contains("empty")?r.jsx(gt,{...l,children:u},i):o==="input"&&n.getAttribute("type")==="checkbox"?r.jsx(jr,{checked:n.hasAttribute("checked"),readOnly:!0},i):o==="table"?r.jsx(vs,{container:!1,...l,children:u},i):vK[o]?p.createElement(vK[o],{key:i,...l},o==="input"?void 0:u):x0e.has(o)?["br","hr","img","col"].includes(o)?p.createElement(o,{key:i,...l}):p.createElement(o,{key:i,...l},u):r.jsx(p.Fragment,{children:u},i)})}function Wo({html:e,className:t,render:n,...s}){const i=p.useMemo(()=>{if(!e)return[];const o=new DOMParser().parseFromString(e,"text/html");return BS(o.body.childNodes)},[e]);return Th({defaultTagName:"div",render:n,props:{...s,"data-slot":"html-content",className:Ne(t),children:i}})}const yK=p.createContext(void 0);function y0e(){const e=p.useContext(yK);if(e===void 0)throw new Error(Kn(38));return e}const j0e=p.forwardRef(function(t,n){const{format:s,getAriaValueText:i,locale:o,max:l=100,min:u=0,value:d,render:f,className:m,children:g,style:v,...b}=t,[y,k]=p.useState(),j=r6(d,u,l),S=bu(Number.isNaN(j)?0:j,0,100),N=bu(Number.isNaN(d)?u:d,u,l),C=s?Zk(N,o,s):Zk(S/100,o,{style:"percent"});let T=C;i&&(T=i(C,d));const R={"aria-labelledby":y,"aria-valuemax":l,"aria-valuemin":u,"aria-valuenow":N,"aria-valuetext":T,role:"meter",children:r.jsxs(p.Fragment,{children:[g,r.jsx("span",{role:"presentation",style:vu,children:"x"})]})},O=p.useMemo(()=>({formattedValue:C,percentageValue:S,setLabelId:k,value:d}),[C,S,k,d]),A=Kt("div",t,{ref:n,props:[R,b]});return r.jsx(yK.Provider,{value:O,children:A})}),w0e=p.forwardRef(function(t,n){const{render:s,className:i,style:o,...l}=t;return Kt("div",t,{ref:n,props:l})}),k0e=p.forwardRef(function(t,n){const{render:s,className:i,style:o,...l}=t,{percentageValue:u}=y0e();return Kt("div",t,{ref:n,props:[{style:{insetInlineStart:0,height:"inherit",width:`${u}%`}},l]})});function kg({value:e,variant:t="default",className:n,trackClassName:s,indicatorClassName:i,...o}){const l=Ne("block h-1 w-full overflow-hidden rounded-pill bg-hairline",s);return e===null?r.jsx("span",{"data-slot":"meter","aria-hidden":"true",className:Ne("block w-full",n),children:r.jsx("span",{"data-slot":"meter-track",className:l})}):r.jsx(j0e,{render:r.jsx("span",{}),value:e,"data-slot":"meter",className:Ne("block w-full",n),...o,children:r.jsx(w0e,{render:r.jsx("span",{}),"data-slot":"meter-track",className:l,children:r.jsx(k0e,{render:r.jsx("span",{}),"data-slot":"meter-indicator",className:Ne("block h-full rounded-[inherit] transition-[width] duration-300 motion-reduce:transition-none",t==="default"&&"bg-primary",t==="success"&&"bg-success",t==="warning"&&"bg-warning",t==="destructive"&&"bg-destructive",t==="muted"&&"bg-muted-foreground",i)})})})}function et({className:e,size:t="default",render:n,...s}){return Th({defaultTagName:"div",render:n,props:{...s,"data-slot":"card","data-size":t,className:Ne("group/card min-w-0 overflow-hidden rounded-lg border border-border bg-surface text-foreground shadow-1",e)}})}function pn({className:e,...t}){return r.jsx("div",{"data-slot":"card-header",className:Ne("flex flex-wrap items-center gap-2.5 border-b border-border px-4 py-3 group-data-[size=sm]/card:px-3 group-data-[size=sm]/card:py-2",e),...t})}function Fs({className:e,...t}){return r.jsx("h3",{"data-slot":"card-title",className:Ne("m-0 text-[14px] font-semibold leading-snug",e),...t})}function S0e({className:e,...t}){return r.jsx("p",{"data-slot":"card-description",className:Ne("m-0 text-[12px] leading-relaxed text-subtle",e),...t})}function jK({className:e,...t}){return r.jsx("div",{"data-slot":"card-action",className:Ne("ml-auto flex shrink-0 flex-wrap items-center gap-2",e),...t})}function Gt({className:e,...t}){return r.jsx("div",{"data-slot":"card-content",className:Ne("min-w-0 p-4 group-data-[size=sm]/card:p-3",e),...t})}function ju({className:e,...t}){return r.jsx("div",{"data-slot":"card-footer",className:Ne("flex flex-wrap items-center gap-2 border-t border-border px-4 py-2.5 text-[11.5px] leading-relaxed text-muted-foreground",e),...t})}function kP({className:e,...t}){return r.jsx(et,{"data-slot":"metric-card",className:Ne("rounded-md bg-surface-inset px-3.5 py-3",e),...t})}function wK({className:e,...t}){return r.jsx("div",{"data-slot":"metric-label",className:Ne("mb-1 text-[11.5px] text-muted-foreground",e),...t})}function kK({className:e,...t}){return r.jsx("div",{"data-slot":"metric-value",className:Ne("break-all text-[13px] font-semibold leading-normal tabular-nums",e),...t})}function SK({className:e,...t}){return r.jsx("div",{"data-slot":"metric-grid",className:Ne("grid grid-cols-[repeat(auto-fit,minmax(min(178px,100%),1fr))] gap-2.5",e),...t})}function qa(e,t={}){return new Promise(n=>{const s=document.createElement("div");document.body.append(s);const i=zn.createRoot(s),o=p.createRef();let l=!1;const u=d=>{l||(l=!0,queueMicrotask(()=>{i.unmount(),s.remove()}),n(d))};i.render(r.jsx(BH,{open:!0,onOpenChange:d=>{d||u(!1)},children:r.jsxs(UH,{initialFocus:o,children:[r.jsx(HH,{children:r.jsx(FH,{children:t.title||Z("请确认")})}),r.jsx(VH,{children:r.jsx("div",{className:"whitespace-pre-wrap text-[13px] leading-relaxed",children:e})}),r.jsxs(KH,{children:[r.jsx(B,{ref:o,variant:"outline",onClick:()=>u(!1),children:Z("取消")}),r.jsx(B,{variant:t.destructive===!1?"default":"destructive",onClick:()=>u(!0),children:t.confirmText||Z("确定")})]})]})}))})}function $h({className:e,render:t,variant:n="default",size:s="default",...i}){return Th({defaultTagName:"div",render:t,props:{...i,"data-slot":"item","data-size":s,className:Ne("flex w-full min-w-0 items-center gap-2.5 rounded-md text-left text-foreground transition-colors",s==="sm"?"px-3 py-2 text-[12.5px]":"px-3.5 py-3 text-[13px]",n==="outline"&&"border border-border",n==="muted"&&"bg-surface-2","has-[[data-slot=item-content]]:justify-start",e)}})}function NK({className:e,...t}){return r.jsx("div",{"data-slot":"item-group",role:"list",className:Ne("flex flex-col",e),...t})}function CK({className:e,...t}){return r.jsx("div",{"data-slot":"item-content",className:Ne("min-w-0 flex-1",e),...t})}function AK({className:e,...t}){return r.jsx("div",{"data-slot":"item-title",className:Ne("text-[13px] font-medium",e),...t})}function EK({className:e,...t}){return r.jsx("p",{"data-slot":"item-description",className:Ne("m-0 mt-0.5 text-[12px] leading-relaxed text-muted-foreground",e),...t})}function N0e({className:e,...t}){return r.jsx("div",{"data-slot":"item-media",className:Ne("flex shrink-0 items-center justify-center",e),...t})}function TK({className:e,...t}){return r.jsx("div",{"data-slot":"item-actions",className:Ne("ml-auto flex shrink-0 items-center gap-2",e),...t})}const C0e=p.forwardRef(function(t,n){const{render:s,className:i,style:o,disabled:l=!1,...u}=t,[d,f]=p.useState(void 0),g=FO(!0)?.disabled||l,b=Kt("fieldset",t,{ref:n,state:{disabled:g},props:[{"aria-labelledby":d,disabled:g},u]}),y=p.useMemo(()=>({legendId:d,setLegendId:f,disabled:g}),[d,f,g]);return r.jsx(pU.Provider,{value:y,children:b})}),OK=kh("min-w-0",{variants:{orientation:{vertical:"flex flex-col gap-1.5",horizontal:"flex flex-wrap items-center gap-2.5",responsive:"flex flex-col gap-1.5 min-[768px]:flex-row min-[768px]:items-center min-[768px]:gap-2.5"}},defaultVariants:{orientation:"vertical"}});function ct({className:e,orientation:t,...n}){return r.jsx(vxe,{"data-slot":"field",className:s=>Ne(OK({orientation:t}),typeof e=="function"?e(s):e),...n})}function zh({className:e,orientation:t,...n}){return r.jsx("div",{"data-slot":"field-group",className:Ne(t?OK({orientation:t}):"flex flex-col gap-3",e),...n})}function A0e({className:e,...t}){return r.jsx(C0e,{"data-slot":"field-set",className:n=>Ne("m-0 min-w-0 border-0 p-0",typeof e=="function"?e(n):e),...t})}function ut({className:e,...t}){return r.jsx(yxe,{"data-slot":"field-label",className:n=>Ne("flex items-center gap-[6px] text-[11.5px] text-muted-foreground",typeof e=="function"?e(n):e),...t})}function SP({className:e,...t}){return r.jsx("div",{"data-slot":"field-content",className:Ne("min-w-0 flex-1",e),...t})}function wr({className:e,...t}){return r.jsx(kxe,{"data-slot":"field-description",className:n=>Ne("m-0 text-[11.5px] leading-relaxed text-subtle",typeof e=="function"?e(n):e),...t})}const RK=p.createContext(void 0);function NP(){const e=p.useContext(RK);if(!e)throw new Error(Kn(73));return e}let PK=0;function IK(e){return PK+=1,`${e}-${Math.random().toString(36).slice(2,6)}-${PK}`}function CP(e,t){if(typeof e=="string")return{description:e};if(typeof e=="function"){const n=e(t);return typeof n=="string"?{description:n}:n}return e}function AP(e){const t=new Map;let n=0,s=0;return e.forEach((i,o)=>{const l=i.transitionStatus==="ending";t.set(i.id,{value:i,domIndex:o,visibleIndex:l?-1:n,offsetY:s}),s+=i.height||0,l||(n+=1)}),t}function EP(e,t){let n=0;return e.map(s=>{if(s.transitionStatus==="ending")return s;const i=n>=t;return n+=1,s.limited===i?s:{...s,limited:i}})}const Pl={toasts:e=>e.toasts,isEmpty:e=>e.toasts.length===0,toast:(e,t)=>e.toastMetadata.get(t)?.value,toastIndex:(e,t)=>e.toastMetadata.get(t)?.domIndex??-1,toastOffsetY:(e,t)=>e.toastMetadata.get(t)?.offsetY??0,toastVisibleIndex:(e,t)=>e.toastMetadata.get(t)?.visibleIndex??-1,focused:e=>e.focused,expanded:e=>e.hovering||e.focused,expandedOrOutOfFocus:e=>e.hovering||e.focused||!e.isWindowFocused,prevFocusElement:e=>e.prevFocusElement};class E0e extends Mh{constructor(n){super({...n,toastMetadata:AP(n.toasts)},{},Pl);Cn(this,"timers",new Map);Cn(this,"areTimersPaused",!1);Cn(this,"setViewport",n=>{this.set("viewport",n)});Cn(this,"disposeEffect",()=>()=>{this.timers.forEach(n=>{n.timeout?.clear()}),this.timers.clear()});Cn(this,"addToast",n=>{const{timeout:s,limit:i}=this.state,o=n.id||IK("toast");if(n.id){const f=Pl.toast(this.state,n.id);if(f)if(f.transitionStatus==="ending")this.removeToast(n.id,!0);else{const{id:m,transitionStatus:g,...v}=n;return this.updateToastInternal(n.id,v,!0,!0),n.id}}const l={...n,id:o,updateKey:0,transitionStatus:"starting"},u=[l,...this.state.toasts];this.setToasts(EP(u,i));const d=l.timeout??s;return l.type!=="loading"&&d>0&&this.scheduleTimer(o,d,()=>this.closeToast(o)),Pl.expandedOrOutOfFocus(this.state)&&this.pauseTimers(),o});Cn(this,"updateToast",(n,s)=>{const i=Pl.toast(this.state,n);!i||i.transitionStatus==="ending"||this.updateToastInternal(n,typeof s=="function"?s(i):s,!1,!0)});Cn(this,"updateToastInternal",(n,s,i=!1,o=!1)=>{const{timeout:l,toasts:u}=this.state,d=Pl.toast(this.state,n);if(!d||d.transitionStatus==="ending")return;const f={...d,...s,...o&&{updateKey:d.updateKey+1}};this.setToasts(u.map(S=>S.id===n?f:S));const m=f.timeout??l,g=d.timeout??l,v=Object.hasOwn(s,"timeout"),b=f.transitionStatus!=="ending"&&f.type!=="loading"&&m>0,y=this.timers.has(n),k=g!==m,j=d.type==="loading";if(!b&&y){this.clearTimer(n);return}b&&(!y||k||v||j||i)&&(this.clearTimer(n),this.scheduleTimer(n,m,()=>this.closeToast(n)),Pl.expandedOrOutOfFocus(this.state)&&this.pauseTimers())});Cn(this,"closeToast",n=>{const s=n===void 0,{limit:i,toasts:o}=this.state;let l;if(s)l=o,this.clearTimers();else{const f=Pl.toast(this.state,n);if(!f)return;l=[f],this.clearTimer(n)}const u=o.map(f=>s||f.id===n?{...f,transitionStatus:"ending",height:0}:f),d=EP(u,i);this.setToasts(d,!d.some(f=>f.transitionStatus!=="ending")),l.forEach(f=>{f.transitionStatus!=="ending"&&f.onClose?.()}),this.handleFocusManagement(n)});Cn(this,"promiseToast",(n,s)=>{const i=CP(s.loading),o=this.addToast({...i,type:"loading"}),l=n.then(u=>{const d=CP(s.success,u);return this.updateToast(o,{...d,type:"success",timeout:d.timeout}),u}).catch(u=>{const d=CP(s.error,u);return this.updateToast(o,{...d,type:"error",timeout:d.timeout}),Promise.reject(u)});return{}.hasOwnProperty.call(s,"setPromise")&&s.setPromise(l),l});Cn(this,"handleDocumentPointerDown",n=>{if(n.pointerType!=="touch")return;const s=Er(n);Et(this.state.viewport,s)||(this.resumeTimers(),this.update({hovering:!1,focused:!1}))})}syncProviderProps(n,s){const i=this.state.limit!==s;if(this.state.timeout===n&&!i)return;const o={timeout:n,limit:s};if(i){const l=EP(this.state.toasts,s);o.toasts=l,o.toastMetadata=AP(l)}this.update(o)}removeToast(n,s=!1){const i=Pl.toastIndex(this.state,n);if(i===-1)return;const o=this.state.toasts[i];s||o?.onRemove?.();const l=[...this.state.toasts];l.splice(i,1),this.setToasts(l)}pauseTimers(){this.areTimersPaused||(this.areTimersPaused=!0,this.timers.forEach(n=>{n.timeout&&(n.timeout.clear(),n.remaining=Math.max(n.remaining-(Date.now()-n.start),0))}))}resumeTimers(){this.areTimersPaused&&(this.areTimersPaused=!1,this.timers.forEach((n,s)=>{n.remaining=n.remaining>0?n.remaining:n.delay,n.timeout??(n.timeout=Bi.create()),n.timeout.start(n.remaining,()=>{this.handleTimerFired(s),n.callback()}),n.start=Date.now()}))}restoreFocusToPrevElement(){this.state.prevFocusElement?.focus({preventScroll:!0})}scheduleTimer(n,s,i){const o=Date.now(),u=!Pl.expandedOrOutOfFocus(this.state)?Bi.create():void 0;u?.start(s,()=>{this.handleTimerFired(n),i()}),this.timers.set(n,{timeout:u,start:o,delay:s,remaining:s,callback:i})}clearTimers(){this.timers.forEach(n=>{n.timeout?.clear()}),this.timers.clear(),this.areTimersPaused=!1}clearTimer(n){this.timers.get(n)?.timeout?.clear(),this.timers.delete(n),this.resetPausedStateIfNoTimersRemain()}handleTimerFired(n){this.timers.delete(n),this.resetPausedStateIfNoTimersRemain()}resetPausedStateIfNoTimersRemain(){this.timers.size===0&&(this.areTimersPaused=!1)}setToasts(n,s=n.length===0){const i={toasts:n,toastMetadata:AP(n)};s&&(i.hovering=!1,i.focused=!1),this.update(i)}handleFocusManagement(n){const s=Ys(_n(this.state.viewport));if(!this.state.viewport||!Et(this.state.viewport,s)||!Dk(s))return;if(n===void 0){this.restoreFocusToPrevElement();return}const i=Pl.toasts(this.state),o=Pl.toastIndex(this.state,n),l=(d,f)=>{for(let m=d;m>=0&&mnew E0e({timeout:s,limit:i,viewport:null,toasts:[],hovering:!1,focused:!1,isWindowFocused:!0,prevFocusElement:null})).current;return Vk(l.disposeEffect),p.useEffect(function(){return o?o[" subscribe"](({action:f,options:m})=>{const g=m.id;f==="promise"&&m.promise?l.promiseToast(m.promise,m):f==="update"&&g?l.updateToast(g,m.updates):f==="close"?l.closeToast(g):l.addToast(m)}):void 0},[l,o]),r.jsxs(RK.Provider,{value:l,children:[r.jsx(O0e,{store:l,timeout:s,limit:i}),n]})};function O0e(e){const{store:t,timeout:n,limit:s}=e;return Ge(()=>{t.syncProviderProps(n,s)},[t,n,s]),null}const R0e="--toast-frontmost-height",P0e=p.forwardRef(function(t,n){const{render:s,className:i,style:o,children:l,...u}=t,d=NP(),f=fa(),m=p.useRef(!1),g=p.useRef(!1),v=p.useRef(!1),b=d.useState("isEmpty"),y=d.useState("toasts"),k=d.useState("focused"),j=d.useState("expanded"),S=d.useState("prevFocusElement"),N=y[0]?.height,C=y.some(U=>U.transitionStatus==="ending"),T=y.filter(U=>U.priority==="high");p.useEffect(()=>{const U=d.state.viewport;if(!U||b)return;const z=vr(U),H=_n(U);function J(G){G.key==="F6"&&Er(G)!==U&&(G.preventDefault(),d.set("prevFocusElement",Ys(H)),U?.focus({preventScroll:!0}),d.pauseTimers(),d.set("focused",!0))}function ee(G){Er(G)===z&&(d.set("isWindowFocused",!1),d.pauseTimers())}function K(G){if(G.relatedTarget)return;const Y=Er(G),se=Ys(_n(U));(Y===z||!Et(U,Y)||!Dk(se))&&d.resumeTimers(),f.start(0,()=>d.set("isWindowFocused",!0))}return Ol(kn(z,"keydown",J),kn(z,"blur",ee,!0),kn(z,"focus",K,!0),kn(H,"pointerdown",d.handleDocumentPointerDown,!0))},[d,f,b]);function R(U){m.current=!0;const z=U.relatedTarget===d.state.viewport?y.find(H=>H.transitionStatus!=="ending"&&!H.limited):void 0;z?z.ref?.current?.focus():d.restoreFocusToPrevElement()}function O(U){U.key==="Tab"&&U.shiftKey&&Er(U.nativeEvent)===d.state.viewport&&(U.preventDefault(),d.restoreFocusToPrevElement())}function A(){d.state.toasts.some(z=>z.transitionStatus==="ending")||v.current||!g.current||(d.state.isWindowFocused&&d.resumeTimers(),d.set("hovering",!1),g.current=!1)}p.useEffect(A,[C,d]);function P(){d.pauseTimers(),d.set("hovering",!0),g.current=!1}function M(){d.state.isWindowFocused&&d.resumeTimers()}function _(){g.current=!0,A()}function L(U){U.pointerType==="touch"&&(v.current=!0)}function $(U){U.pointerType==="touch"&&(v.current=!1,A())}function D(){if(m.current){m.current=!1;return}k||Dk(Ys(_n(d.state.viewport)))&&(d.set("focused",!0),d.pauseTimers())}function F(U){!k||Et(d.state.viewport,U.relatedTarget)||(d.set("focused",!1),M())}const q={tabIndex:-1,role:"region","aria-live":"polite","aria-atomic":!1,"aria-relevant":"additions text","aria-label":"Notifications",onMouseEnter:P,onMouseMove:P,onMouseLeave:_,onFocus:D,onBlur:F,onKeyDown:O,onClick:D,onPointerDown:L,onPointerUp:$,onPointerCancel:$,style:{[R0e]:N?`${N}px`:void 0}},V={expanded:j},Q=!b&&S&&r.jsx(Rh,{onFocus:R}),X=Kt("div",t,{ref:[n,d.setViewport],state:V,props:[q,u,{children:r.jsxs(p.Fragment,{children:[Q,l,Q]})}]});return r.jsxs(p.Fragment,{children:[Q,X,!k&&T.length>0&&r.jsx("div",{style:vu,children:T.map(U=>r.jsxs("div",{role:"alert","aria-atomic":!0,children:[r.jsx("div",{children:U.title}),r.jsx("div",{children:U.description})]},U.id))})]})}),MK=p.createContext(void 0);function I0e(){const e=p.useContext(MK);if(!e)throw new Error(Kn(66));return e}function M0e(e,t){const n=vr(e).getComputedStyle(e).transform;let s=0,i=0,o=1;if(n&&n!=="none"){const l=n.match(/matrix(?:3d)?\(([^)]+)\)/);if(l){const u=l[1].split(", ").map(parseFloat);u.length===6?(s=u[4],i=u[5],o=Math.sqrt(u[0]*u[0]+u[1]*u[1])):u.length===16&&(s=u[12],i=u[13],o=u[0])}}return{x:s,y:i,scale:o}}function TP(e,t,n){switch(e){case"up":return-n;case"down":return n;case"left":return-t;case"right":return t;default:return 0}}const _0e="--toast-index",D0e="--toast-offset-y",L0e="--toast-height",$0e="--toast-swipe-movement-x",z0e="--toast-swipe-movement-y",B0e="data-swipe-direction",F0e={...Fo,swipeDirection(e){return e?{[B0e]:e}:null}},_K=40,U0e=10,DK=.5,H0e=1,V0e=`${wve},${kve}`,K0e=p.forwardRef(function(t,n){const{toast:s,render:i,className:o,swipeDirection:l=["down","right"],style:u,...d}=t,f=s.positionerProps?.anchor!==void 0;let m=[];f||(m=Array.isArray(l)?l:[l]);const g=m.length>0,v=NP(),[b,y]=p.useState(void 0),[k,j]=p.useState(!1),[S,N]=p.useState(!1),[C,T]=p.useState({x:0,y:0}),[R,O]=p.useState({x:0,y:0,scale:1}),[A,P]=p.useState(),[M,_]=p.useState(),[L,$]=p.useState(null),D=p.useRef(null),F=p.useRef(void 0),q=p.useRef({x:0,y:0}),V=p.useRef({x:0,y:0,scale:1}),Q=p.useRef(void 0),X=p.useRef(0),U=p.useRef(!1),z=p.useRef({x:0,y:0}),H=p.useRef(!1),J=p.useRef({x:0,y:0}),ee=p.useRef(null),K=p.useRef(null),G=v.useState("toastIndex",s.id),Y=v.useState("toastVisibleIndex",s.id),se=v.useState("toastOffsetY",s.id),re=v.useState("focused"),ne=v.useState("expanded");ji({open:s.transitionStatus!=="ending",ref:D,onComplete(){s.transitionStatus==="ending"&&v.removeToast(s.id)}});const de=qe((Se=!1)=>{const ge=D.current;if(!ge)return;const ue=ge.style.height;ge.style.height="auto";const be=ge.offsetHeight;ge.style.height=ue;function ve(){v.updateToastInternal(s.id,{ref:D,height:be,transitionStatus:void 0})}Se?xr.flushSync(ve):ve()});Ge(()=>{const Se=F.current;s.transitionStatus!=="starting"&&Se===s.id||(Se!==void 0&&(y(void 0),O({x:0,y:0,scale:1}),ie({x:0,y:0})),F.current=s.id,de())},[de,s.id,s.transitionStatus]);function ie(Se){J.current=Se,T(Se)}Ge(()=>()=>{K.current?.abort()},[]);function oe(Se,ge){const ue=De=>De>0?De**DK:-(Math.abs(De)**DK),be=Se>0&&!m.includes("right")||Se<0&&!m.includes("left"),ve=ge>0&&!m.includes("down")||ge<0&&!m.includes("up");return{x:be?ue(Se):Se,y:ve?ue(ge):ge}}const je=qe(Se=>{if(Se.pointerId!==ee.current)return;ee.current=null,K.current?.abort(),K.current=null,j(!1),N(!1),$(null);const ge=V.current;if(Se.type==="pointercancel"||U.current){ie({x:ge.x,y:ge.y}),y(void 0);return}const ue=J.current,be=ue.x-ge.x,ve=ue.y-ge.y;let De;for(const Ie of m)if(TP(Ie,be,ve)>_K){De=Ie;break}De?(y(De),v.closeToast(s.id)):(ie({x:ge.x,y:ge.y}),y(void 0))});function te(Se){if(Se.button!==0||(Se.pointerType==="touch"&&v.pauseTimers(),Er(Se.nativeEvent)?.closest(`button,a,input,textarea,[role="button"],${V0e}`)))return;U.current=!1,Q.current=void 0,X.current=0,ee.current=Se.pointerId,q.current={x:Se.clientX,y:Se.clientY},z.current=q.current;const be=Se.currentTarget,ve=M0e(be);V.current=ve,O(ve),ie({x:ve.x,y:ve.y}),v.set("hovering",!0),j(!0),N(!1),$(null),H.current=!0,K.current?.abort();const De=new AbortController;K.current=De;const Ie=_n(be);Ie.addEventListener("pointerup",je,{signal:De.signal}),Ie.addEventListener("pointercancel",je,{signal:De.signal}),be.setPointerCapture?.(Se.pointerId)}function le(Se){if(Se.pointerId!==ee.current)return;Se.preventDefault(),H.current&&(q.current={x:Se.clientX,y:Se.clientY},H.current=!1);const{clientY:ge,clientX:ue,movementX:be,movementY:ve}=Se;(ve<0&&ge>z.current.y||ve>0&&gez.current.x||be>0&&ue=H0e){N(!0);const Ke=m.includes("left")||m.includes("right"),zt=m.includes("up")||m.includes("down");if(Ke&&zt){const ht=Math.abs(De),Tt=Math.abs(Ie);kt=ht>Tt?"horizontal":"vertical",$(kt)}}let Je;if(!Q.current)kt==="vertical"?Ie>0?Je="down":Ie<0&&(Je="up"):kt==="horizontal"?De>0?Je="right":De<0&&(Je="left"):Math.abs(De)>=Math.abs(Ie)?Je=De>0?"right":"left":Je=Ie>0?"down":"up",Je&&m.includes(Je)&&(Q.current=Je,X.current=TP(Je,De,Ie),y(Je));else{const sn=Q.current,Ke=TP(sn,nt,We);Ke>_K?(U.current=!1,y(sn)):!(m.includes("left")&&m.includes("right"))&&!(m.includes("up")&&m.includes("down"))&&X.current-Ke>=U0e&&(U.current=!0)}const on=oe(De,Ie);let nn=V.current.x,On=V.current.y;const Rn=m.includes("left")||m.includes("right"),xt=m.includes("up")||m.includes("down");kt!=="vertical"&&Rn&&(nn+=on.x),kt!=="horizontal"&&xt&&(On+=on.y),ie({x:nn,y:On})}function he(Se){if(Se.key==="Escape"){if(!D.current||!Et(D.current,Ys(_n(D.current))))return;v.closeToast(s.id)}}p.useEffect(()=>{const Se=D.current;if(!g||!Se)return;function ge(ue){ee.current===null||!Et(Se,Er(ue))||ue.preventDefault()}return kn(Se,"touchmove",ge,{passive:!1})},[g]);function ce(){const Se=C.x-R.x,ge=C.y-R.y;return{transition:k?"none":void 0,transform:k?`translateX(${C.x}px) translateY(${C.y}px) scale(${R.scale})`:void 0,[$0e]:`${Se}px`,[z0e]:`${ge}px`}}const ye=s.priority==="high",fe={role:ye?"alertdialog":"dialog",tabIndex:0,"aria-modal":!1,"aria-labelledby":A,"aria-describedby":M,"aria-hidden":ye&&!re?!0:void 0,onPointerDown:g?te:void 0,onPointerMove:g?le:void 0,onPointerUp:g?je:void 0,onPointerCancel:g?je:void 0,onKeyDown:he,inert:qb(s.limited),style:{...ce(),[_0e]:s.transitionStatus==="ending"?G:Y,[D0e]:`${se}px`,[L0e]:s.height?`${s.height}px`:void 0}},Le=p.useMemo(()=>({toast:s,setTitleId:P,setDescriptionId:_,recalculateHeight:de,visibleIndex:Y,expanded:ne}),[s,P,_,de,Y,ne]),pe={transitionStatus:s.transitionStatus,expanded:ne,limited:s.limited||!1,type:s.type,swiping:k,swipeDirection:b},xe=Kt("div",t,{ref:[n,D],state:pe,stateAttributesMapping:F0e,props:[fe,d]});return r.jsx(MK.Provider,{value:Le,children:xe})});function LK(e){return e==null||typeof e=="boolean"||e===""?!1:Array.isArray(e)?e.some(LK):!0}function q0e(e){return p.isValidElement(e)&&LK(e.props.children)}function $K(e,t,n){const{toast:s,setTitleId:i,setDescriptionId:o}=I0e(),l=n==="title"?i:o,u=t??(n==="title"?s.title:s.description);return{id:lg(e),children:u,type:s.type,setId:l}}function zK(e,t,n){const s=q0e(e);return Ge(()=>{if(s)return n(t),()=>{n(i=>i===t?void 0:i)}},[s,t,n]),s?e:null}const G0e=p.forwardRef(function(t,n){const{render:s,className:i,style:o,id:l,children:u,...d}=t,{id:f,children:m,type:g,setId:v}=$K(l,u,"description"),y=Kt("p",t,{ref:n,state:{type:g},props:{...d,id:f,children:m}});return zK(y,f,v)}),W0e=p.forwardRef(function(t,n){const{render:s,className:i,style:o,id:l,children:u,...d}=t,{id:f,children:m,type:g,setId:v}=$K(l,u,"title"),y=Kt("h2",t,{ref:n,state:{type:g},props:{...d,id:f,children:m}});return zK(y,f,v)}),Y0e=p.forwardRef(function(t,n){return r.jsx(mH,{ref:n,...t})});function X0e(){const e=NP(),t=e.useState("toasts");return p.useMemo(()=>({toasts:t,add:e.addToast,close:e.closeToast,update:e.updateToast,promise:e.promiseToast}),[t,e])}function Q0e(){const e=new Set;function t(n){e.forEach(s=>s(n))}return{" subscribe":function(s){return e.add(s),()=>{e.delete(s)}},add(n){const s=n.id||IK("toast"),i={...n,id:s,transitionStatus:"starting"};return t({action:"add",options:i}),s},close(n){t({action:"close",options:{id:n}})},update(n,s){t({action:"update",options:{id:n,updates:s}})},promise(n,s){let i=n;return t({action:"promise",options:{...s,promise:n,setPromise(o){i=o}}}),i}}}const OP=Q0e(),Z0e=T0e;function J0e({className:e,...t}){return r.jsx(W0e,{"data-slot":"toast-title",className:n=>Ne("m-0 text-[12.5px] font-semibold leading-relaxed [overflow-wrap:anywhere]",typeof e=="function"?e(n):e),...t})}function eke({className:e,...t}){return r.jsx(G0e,{"data-slot":"toast-description",className:n=>Ne("m-0 text-[12px] leading-relaxed text-subtle [overflow-wrap:anywhere]",typeof e=="function"?e(n):e),...t})}function tke({className:e,...t}){return r.jsx(K0e,{"data-slot":"toast",className:Ne("pointer-events-auto max-w-full rounded-lg border border-border bg-raised px-4 py-2.5 text-[12.5px] text-foreground shadow-3 outline-none","data-[type=success]:border-success-bd data-[type=success]:text-success","data-[type=error]:border-destructive-bd data-[type=error]:text-destructive","data-[type=warning]:border-warning-bd data-[type=warning]:text-warning","data-limited:hidden data-ending-style:opacity-0 transition-opacity duration-150",typeof e=="string"&&e),...t})}function nke(){const{toasts:e}=X0e();return e.map(t=>r.jsxs(tke,{toast:t,children:[r.jsx(J0e,{children:t.title}),t.description&&r.jsx(eke,{className:"mt-1",children:t.description})]},t.id))}function BK({manager:e=OP,position:t="top-center",className:n}){return r.jsx(Z0e,{toastManager:e,timeout:3500,limit:1,children:r.jsx(Y0e,{children:r.jsx(P0e,{"data-slot":"toast-viewport",className:Ne("pointer-events-none fixed left-1/2 z-[100] flex w-max max-w-[84vw] -translate-x-1/2 flex-col items-center gap-2 outline-none",t==="top-center"?"top-4":"bottom-[calc(78px+env(safe-area-inset-bottom,0px))]",n),children:r.jsx(nke,{})})})})}function rke({className:e,...t}){return r.jsx("div",{"data-slot":"app-frame",className:Ne("min-h-0 bg-background text-foreground",e),...t})}function Bh({className:e,...t}){return r.jsx("aside",{"data-slot":"sidebar",className:Ne("flex min-h-0 flex-col gap-3 border-r border-sidebar-border bg-sidebar p-3 text-sidebar-foreground",e),...t})}function FK({className:e,...t}){return r.jsx("div",{"data-slot":"sidebar-header",className:Ne("shrink-0",e),...t})}function UK({className:e,...t}){return r.jsx("nav",{"data-slot":"sidebar-content",className:Ne("flex min-h-0 flex-1 flex-col gap-0.5 overflow-y-auto",e),...t})}function HK({className:e,...t}){return r.jsx("div",{"data-slot":"sidebar-footer",className:Ne("flex shrink-0 flex-col gap-2 border-t border-sidebar-border pt-2.5",e),...t})}function Sg({className:e,...t}){return r.jsx("div",{"data-slot":"sidebar-group-label",className:Ne("px-2 pb-1 pt-2 text-[10.5px] font-semibold uppercase tracking-[.09em] text-sidebar-muted",e),...t})}function FS({className:e,...t}){return r.jsx("header",{"data-slot":"page-header",className:Ne("flex shrink-0 items-center justify-between gap-3",e),...t})}function VK({className:e,...t}){return r.jsx("h1",{"data-slot":"page-title",className:Ne("m-0 text-[20px] font-semibold tracking-tight",e),...t})}function KK({className:e,...t}){return r.jsx("p",{"data-slot":"page-description",className:Ne("m-0 text-[12.5px] text-muted-foreground",e),...t})}function ske({className:e,...t}){return r.jsx("header",{"data-slot":"window-titlebar","data-tauri-drag-region":"",className:Ne("flex h-8 shrink-0 items-center gap-2.5 overflow-hidden border-b border-sidebar-border bg-sidebar pl-3 text-sidebar-fg select-none",e),...t})}function RP({className:e,action:t,...n}){return r.jsx(B,{"data-slot":"window-control",variant:"ghost",className:Ne("h-8 w-11 rounded-none p-0 shadow-none active:translate-y-0",t==="close"&&"hover:bg-destructive hover:text-white",e),...n})}const qK="w-auto flex-auto";function GK({onInput:e,domRef:t,icon:n,className:s,inputClassName:i,...o}){const l=d=>{t.current=d},u=d=>{e?.(d.currentTarget.value)};return n?r.jsxs(zs,{className:Ne(qK,s),children:[r.jsx(Bs,{ref:l,className:i,onInput:u,...o}),r.jsx(As,{"aria-hidden":"true",children:n})]}):r.jsx(ze,{ref:l,className:Ne(qK,i),onInput:u,...o})}function ake(e,t){const n=zn.createRoot(e),s={current:null};return n.render(r.jsx(GK,{domRef:s,defaultValue:t.value,placeholder:t.placeholder,type:t.type??"search",icon:t.icon,"aria-label":t.ariaLabel,onInput:t.onInput})),{setValue(i){const o=s.current;o&&o.value!==i&&(o.value=i)},getValue(){return s.current?.value??""},focus(){s.current?.focus()},unmount(){n.unmount()}}}const ike=[["id","id"],["type","type"],["name","name"],["title","title"],["placeholder","placeholder"],["min","min"],["max","max"],["step","step"],["autocomplete","autoComplete"]];function oke(e){const t={defaultValue:e.value||void 0,inputClassName:e.className||void 0};for(const[l,u]of ike){const d=e.getAttribute(l);d!=null&&(t[u]=d)}const n=e.getAttribute("maxlength");n!=null&&(t.maxLength=Number(n));const s=e.getAttribute("inputmode");s!=null&&(t.inputMode=s),e.hasAttribute("spellcheck")&&(t.spellCheck=e.spellcheck),e.disabled&&(t.disabled=!0),e.readOnly&&(t.readOnly=!0),e.hidden&&(t.hidden=!0);const i=e.getAttribute("aria-label");i!=null&&(t["aria-label"]=i);for(const l of e.getAttributeNames())!l.startsWith("data-")||l.startsWith("data-island-")||(t[l]=e.getAttribute(l)??"");const o=e.getAttribute("data-island-icon");return o!=null&&(t.icon=o),t}function WK(e){if(e.dataset.islandUpgraded)return;e.dataset.islandUpgraded="1";const t=oke(e),n=e.parentElement?.classList.contains("input-affix")?e.parentElement:null;let s;n?(n.className=n.className.replace(/\binput-affix\b/,"").trim(),n.style.display="flex",n.style.alignItems="center",s=n):(s=document.createElement("span"),s.style.display="contents",e.replaceWith(s));const i={current:null},o=zn.createRoot(s);xr.flushSync(()=>{o.render(r.jsx(GK,{...t,domRef:i}))})}function YK(e=document){if(e instanceof HTMLInputElement&&e.matches("[data-island-input]")){WK(e);return}e.querySelectorAll("input[data-island-input]").forEach(WK)}function lke(){YK();const e=new MutationObserver(t=>{for(const n of t)for(const s of n.addedNodes)s instanceof Element&&YK(s)});return e.observe(document.body,{childList:!0,subtree:!0}),e}function cke(e,t){const n=zn.createRoot(e);let s={options:t.options,value:t.value,ariaLabel:t.ariaLabel,className:t.className};const i=()=>{n.render(r.jsx(en,{options:s.options,value:s.value,onValueChange:t.onChange,"aria-label":s.ariaLabel,className:s.className}))};return i(),{setValue(o){o!==s.value&&(s={...s,value:o},i())},setOptions(o){s={...s,options:o},i()},unmount(){n.unmount()}}}window.wbUiKit={React:kO,createRoot:zn.createRoot,flushSync:xr.flushSync,Badge:Ee,Button:B,Checkbox:jr,Input:ze,Label:Ae,Progress:gg,SegmentedControl:en,Spinner:Qt,Switch:St,Card:et,CardHeader:pn,CardContent:Gt,CardFooter:ju,Collapsible:is,CollapsibleTrigger:os,CollapsibleContent:ls,HtmlContent:Wo,Toaster:BK,toastManager:OP,Select:{Root:Pt,Trigger:Mt,Value:It,Content:_t,Item:Ze,Group:Uje,Label:Hje,Separator:Vje}};function a(e,t){const n=typeof window<"u"?window.wbI18n:void 0;return n&&typeof n.t=="function"?n.t(e,t):e}const ey=Object.freeze({displayName:"Agent2API",logoUrl:null}),uke=2*1024*1024;function XK(e,t){if(!e||typeof e!="object")throw new Error("品牌设置格式无效");const n=e;if(typeof n.displayName!="string"||!n.displayName.trim()||Array.from(n.displayName).length>64)throw new Error("品牌设置格式无效");let s=null;if(n.logoUrl!==null&&n.logoUrl!==void 0){if(typeof n.logoUrl!="string"||!/^\/api\/panel\/branding\/logo\?v=[a-f0-9]{64}$/.test(n.logoUrl))throw new Error("品牌 Logo 地址无效");s=new URL(n.logoUrl,t).href}return{displayName:n.displayName,logoUrl:s}}function dke(e,t){let n="",s=ey,i=0,o=null;const l=new Set,u=()=>{for(const g of l)g()},d=()=>n===e()?s:ey,f=g=>(i+=1,n=e(),(s.displayName!==g.displayName||s.logoUrl!==g.logoUrl)&&(s=g,u()),g);return{snapshot:d,refresh:()=>{const g=e();if(o?.scope===g)return o.request;n!==g&&(n=g,s=ey,u());const v=++i,b=t().then(y=>(v===i&&e()===g&&f(y),y)).finally(()=>{o?.request===b&&(o=null)});return o={scope:g,request:b},b},accept:f,subscribe(g){return l.add(g),()=>{l.delete(g)}},useValue(){return p.useSyncExternalStore(this.subscribe,d)}}}function fke(e,t,n=!0){p.useEffect(()=>{if(!n)return;const s=()=>{document.hidden||e.refresh().catch(()=>{})};s();const i=window.setInterval(s,6e4);return window.addEventListener("focus",s),document.addEventListener("visibilitychange",s),()=>{window.clearInterval(i),window.removeEventListener("focus",s),document.removeEventListener("visibilitychange",s)}},[e,t,n])}let US=null,wu=null;function hke(e,t){document.querySelector("title")?.removeAttribute("data-i18n"),document.title=t,US||(US=[...document.querySelectorAll('link[rel="icon"]')].map(n=>({element:n,href:n.href,type:n.type,sizes:n.sizes.value})));for(const n of US)n.element.href=e.logoUrl||n.href,n.element.type=e.logoUrl?"image/png":n.type,n.element.sizes.value=e.logoUrl?"any":n.sizes;!US.length&&e.logoUrl?(wu||(wu=document.createElement("link"),wu.rel="icon",document.head.appendChild(wu)),wu.type="image/png",wu.href=e.logoUrl):wu&&(wu.remove(),wu=null)}const PP=()=>window.workbuddyDesktop;async function QK(){const e=PP();if(e?.platform&&e.platform!=="web"){const t=await e.waitForBackend?.();if(!t?.port||!Number.isInteger(t.port)||t.port<1||t.port>65535)throw new Error(a("网关尚未就绪"));return`http://127.0.0.1:${t.port}`}return window.location.origin}const Ng=dke(()=>"local",async()=>{const e=await QK(),t=await fetch(new URL("/api/panel/branding",e),{cache:"no-store"});if(!t.ok)throw new Error(a("无法读取品牌设置"));const n=await t.json();return XK(n.data,e)});async function mke(e){const t=PP();if(!t?.saveBranding)throw new Error(a("当前版本不支持品牌设置"));const n=await t.saveBranding(e),s=XK(n,await QK());return Ng.accept(s),t.syncBrandingTitle?.().catch(()=>{}),s}function pke(e){const t=Ng.useValue();return fke(Ng,"local"),p.useEffect(()=>{const n=PP(),s=n?.title?.startsWith("[Dev]")?"[Dev] ":"",i=t.displayName==="Agent2API"?n?.title||a("Agent2API · 多提供商本地网关"):`${s}${t.displayName}`;hke(t,i),n?.syncBrandingTitle?.().catch(()=>{})},[t,e]),t}function IP({branding:e,size:t=32,className:n=""}){const[s,i]=p.useState(null);return e.logoUrl&&e.logoUrl!==s?r.jsx("img",{src:e.logoUrl,alt:"","aria-hidden":"true",width:t,height:t,className:`block shrink-0 object-contain ${n}`,style:{width:t,height:t},onError:()=>i(e.logoUrl)}):r.jsxs("svg",{width:t,height:t,viewBox:"0 0 24 24","aria-hidden":"true",className:`block shrink-0 ${n}`,children:[r.jsx("rect",{width:"24",height:"24",rx:"5.4",fill:"#007AFF"}),r.jsxs("g",{fill:"none",stroke:"#fff",strokeWidth:"2.2",strokeLinecap:"round",strokeLinejoin:"round",children:[r.jsx("path",{d:"M5.23 9.24h10.71"}),r.jsx("path",{d:"M15.94 6.72 18.77 9.24 15.94 11.76"}),r.jsx("path",{d:"M18.77 14.76H8.06"}),r.jsx("path",{d:"M8.06 12.24 5.23 14.76 8.06 17.28"})]})]})}function gke(){const e=()=>window.wbZcodeClaimVerification,[t,n]=p.useState(()=>e()?.status()||null);if(p.useEffect(()=>{const i=()=>n(e()?.status()||null);return window.addEventListener("zcode-claim-verification",i),i(),()=>window.removeEventListener("zcode-claim-verification",i)},[]),!t)return null;const s=t.phase==="submitting";return r.jsxs(et,{className:"fixed bottom-5 right-5 z-[2147482900] w-[min(380px,calc(100vw-40px))] space-y-2 p-4 shadow-lg",role:"status","aria-live":"polite",children:[r.jsxs("div",{className:"flex items-center gap-2 text-sm font-semibold",children:[r.jsx(Qt,{className:"size-4 shrink-0"}),a("ZCode 自动领取验证")]}),r.jsxs("p",{className:"break-words text-xs text-muted-foreground",children:[t.accountName," · ",t.planName]}),r.jsx("p",{className:"text-xs text-muted-foreground",children:a(s?"验证凭据正在提交,领取结果请查看签到记录":"正在为本次领取验证;若出现滑块,请手动完成")}),r.jsx(B,{variant:"outline",size:"xs",disabled:s,onClick:()=>e()?.cancel(),children:a("取消验证")})]})}const Gd=()=>window;let HS=[],ty="overview",ZK=a("报表"),JK=localStorage.getItem("workbuddy-desktop-theme")||"system",eq=[],tq="";const ku=new Set;let ny=0;const VS=()=>{ny+=1;for(const e of ku)e()};function xke({name:e,size:t=17}){return r.jsx("span",{className:"ico shrink-0","aria-hidden":"true",dangerouslySetInnerHTML:{__html:Gd().wbIcons?.icon(e,t)||Gd().wbIcons?.icon("plugins",t)||""}})}function vke(){return p.useSyncExternalStore(e=>(ku.add(e),()=>ku.delete(e)),()=>ny),r.jsx(r.Fragment,{children:HS.length?HS.map((e,t)=>r.jsxs(p.Fragment,{children:[r.jsx(Sg,{className:"nav-group-label",children:Gd().wbSidebarLayout?.groupLabel(e.label)||e.label}),e.items.map(n=>{const s=n.key==="requests"?"nav-count-requests":n.key==="logs"?"nav-count-logs":n.key==="settings"?"nav-count-update":"";return r.jsx(Ts,{className:`nav-item ${ty===n.key?"active":""}`,active:ty===n.key,"data-page":n.key,"data-icon":n.icon,icon:r.jsx(xke,{name:n.icon}),trailing:s?r.jsx(Ee,{id:s,variant:"destructive",shape:"tag",className:"count min-w-5 px-1.5 py-0 text-[10.5px]",style:{display:"none"},children:n.key==="settings"?a("新"):"0"}):void 0,children:r.jsx("span",{className:"label",children:a(n.label)})},n.key)})]},`${e.label}-${t}`)):r.jsx(gt,{className:"nav-empty px-2 py-3 text-[11px]",children:a("侧边栏没有显示任何菜单。到「设置 → 显示 → 侧边栏菜单」里打开需要的项。")})})}function bke(){return p.useSyncExternalStore(e=>(ku.add(e),()=>ku.delete(e)),()=>ny),r.jsx(en,{className:"w-full",value:JK,"aria-label":a("显示模式"),options:[{value:"system",label:a("跟随系统")},{value:"light",label:a("浅色")},{value:"dark",label:a("深色")}],onValueChange:e=>Gd().wbApp?.applyTheme(e)})}function yke(){p.useSyncExternalStore(t=>(ku.add(t),()=>ku.delete(t)),()=>ny);const e={ok:"success",warn:"warning",bad:"destructive",brand:"brand"};return r.jsx(r.Fragment,{children:eq.map((t,n)=>r.jsxs(Ee,{variant:e[t.kind]||"outline",className:t.optional?"badge optional":"badge",children:[t.dot&&r.jsx(Qk,{}),t.text]},n))})}function jke(){p.useSyncExternalStore(o=>(ku.add(o),()=>ku.delete(o)),()=>ny);const e=pke(),[t,n]=p.useState(!1),s=yP("(max-width: 767px)");p.useEffect(()=>{s||n(!1),window.dispatchEvent(new Event("wb:shell-layout")),Gd().wbApp?.syncNavBadges()},[s]),p.useEffect(()=>{const o=()=>n(!1);return window.addEventListener("wb:navigation-close",o),()=>window.removeEventListener("wb:navigation-close",o)},[]);const i=r.jsxs(Bh,{className:"sidebar",children:[r.jsxs(FK,{className:"brand",children:[r.jsx("div",{className:"brand-logo",children:r.jsx(IP,{branding:e,size:32})}),r.jsx("div",{className:"brand-text min-w-0",children:r.jsx("h1",{className:"truncate",title:e.displayName,children:e.displayName})})]}),r.jsx(Go,{render:r.jsx(UK,{}),className:"nav",id:"nav","aria-label":a("主导航"),onClick:o=>{const l=o.target.closest(".nav-item[data-page]");l?.dataset.page&&Gd().wbApp?.showPage(l.dataset.page)},children:r.jsx(vke,{})}),r.jsxs(HK,{className:"sidebar-foot",children:[r.jsx("div",{className:"sidebar-status",id:"sidebar-status",title:a("本地网关监听状态")}),r.jsx("div",{id:"theme-switch",children:r.jsx(bke,{})})]})]});return r.jsxs(rke,{className:"shell","data-navigation-open":t?"true":void 0,children:[s?r.jsx(Qb,{open:t,onOpenChange:n,children:r.jsxs(Zb,{side:"left",keepMounted:!0,showHandle:!1,showCloseButton:!1,"aria-label":a("主导航"),className:"w-[min(280px,86vw)] rounded-none border-0 p-0",children:[r.jsx(hK,{render:r.jsx(B,{variant:"ghost",size:"icon",className:"absolute right-2 top-2 z-10"}),"aria-label":a("关闭菜单"),children:"✕"}),i]})}):i,r.jsxs("main",{className:"main",children:[r.jsxs(FS,{className:"topbar",children:[r.jsx(B,{variant:"ghost",size:"icon",className:"mobile-menu-btn","aria-label":a("切换菜单"),onClick:()=>n(!t),children:"☰"}),r.jsxs("div",{className:"crumb min-w-0",children:[r.jsx("span",{className:"max-w-[200px] truncate",title:e.displayName,children:e.displayName}),r.jsx("span",{className:"sep",children:"/"}),r.jsx("span",{className:"cur",id:"crumb-page",children:ZK})]}),r.jsx("div",{className:"spacer"}),r.jsx("div",{className:"topbar-actions",id:"topbar-status",title:tq,children:r.jsx(yke,{})}),r.jsx("div",{id:"page-refresh-actions"})]}),r.jsx("div",{className:"content",children:r.jsxs("div",{className:"content-inner",children:[["assistant","overview","accounts","checkin","routing","gateway","agent","tools","proxies","keys","docs","logs","tasks","requests","plugins","settings"].map(o=>r.jsx("section",{className:`page${ty===o?" active":""}`,"data-page":o},o)),r.jsx("section",{className:`page${ty.startsWith("plugin:")?" active":""}`,"data-page":"__plugin__",id:"plugin-page-host"})]})})]}),r.jsx(gke,{})]})}function wke(){const e=document.getElementById("desktop-app");if(!e)return;const t=Gd().wbSidebarLayout;t&&(HS=t.renderGroups(t.readLayout())),Gd().wbShell={sidebar(s){HS=s,xr.flushSync(VS)},page(s,i){ty=s,ZK=i,VS()},status(s,i=""){eq=s,tq=i,VS()},theme(s){JK=s,VS()},closeNavigation(){window.dispatchEvent(new Event("wb:navigation-close"))},toast(s,i="ok"){OP.add({id:"desktop-feedback",title:s,type:i==="err"?"error":i==="warn"?"warning":"success",timeout:3500})}},xr.flushSync(()=>zn.createRoot(e).render(r.jsx(jke,{})));const n=document.createElement("div");document.body.append(n),xr.flushSync(()=>zn.createRoot(n).render(r.jsx(BK,{})))}wke();const nq="wb-tip-bubble",MP=new WeakSet;let es=null,Cg=!1,ry=0,KS=0,rq=0;const _P=new Set,DP=()=>{rq+=1;for(const e of _P)e()},LP=e=>({text:e.getAttribute("data-tip")?.trim()||"",variant:e.getAttribute("data-tip-variant")});let qS=null;function GS(e){const t=e.getBoundingClientRect();return e.isConnected&&t.width>0&&t.height>0&&t.bottom>0&&t.top{es&&!GS(es)&&Il()})),qS?.observe(e),es.classList.add("active"),es.setAttribute("aria-describedby",nq),DP())}function kke(){p.useSyncExternalStore(t=>(_P.add(t),()=>_P.delete(t)),()=>rq);const e=es?LP(es):null;return r.jsx(xS,{children:r.jsx(pc,{open:!!es,disableHoverablePopup:!0,onOpenChange:t=>{!t&&!Cg&&Il()},children:r.jsx(gc,{id:nq,anchor:es,side:"bottom",variant:e?.variant==="plain"?"plain":"default",className:"pointer-events-none",children:e?.text.split(` +`).map((t,n)=>{const s=/^\[(#[0-9a-fA-F]{3}|#[0-9a-fA-F]{6})\]/.exec(t);return r.jsxs("span",{className:"flex items-start gap-1.5",children:[s&&r.jsx("span",{className:"mt-1 size-1.5 shrink-0 rounded-full",style:{background:s[1]}}),r.jsx("span",{children:s?t.slice(s[0].length):t})]},n)})})})})}function $P(e){MP.has(e)||!LP(e).text||(MP.add(e),e.classList.contains("tip-q")&&!e.textContent?.trim()&&(e.textContent="?"),e.matches("a[href], button, input, select, textarea, [tabindex]")||e.setAttribute("tabindex","0"))}function sq(){const e=document.createElement("div");document.body.append(e),xr.flushSync(()=>zn.createRoot(e).render(r.jsx(kke,{})));const t=o=>{o.matches("[data-tip]")&&$P(o),o.querySelectorAll("[data-tip]").forEach($P)};t(document.body),new MutationObserver(o=>{es&&!GS(es)&&Il();for(const l of o){l.type==="attributes"&&l.target instanceof Element&&($P(l.target),l.target===es&&DP());for(const u of l.addedNodes)u instanceof Element&&t(u)}}).observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["data-tip","data-tip-variant"]});const s=o=>o.target instanceof Element?o.target.closest("[data-tip]"):null;document.addEventListener("pointerover",o=>{if(!window.matchMedia("(hover: hover)").matches)return;const l=s(o);!l||o.relatedTarget instanceof Node&&l.contains(o.relatedTarget)||(window.clearTimeout(KS),window.clearTimeout(ry),ry=window.setTimeout(()=>WS(l),es?0:150))}),document.addEventListener("pointerout",o=>{const l=s(o);!l||o.relatedTarget instanceof Node&&l.contains(o.relatedTarget)||Cg||(window.clearTimeout(ry),KS=window.setTimeout(()=>{es===l&&!Cg&&Il()},80))}),document.addEventListener("focusin",o=>{const l=s(o);l?.matches(":focus-visible")&&WS(l)}),document.addEventListener("focusout",o=>{s(o)===es&&Il()}),document.addEventListener("click",o=>{const l=s(o);if(!l){es&&Il();return}es===l&&Cg?Il():(WS(l),Cg=!0)},!0),document.addEventListener("keydown",o=>{o.key==="Escape"&&es&&Il()});const i=()=>{es&&!GS(es)&&Il()};window.addEventListener("scroll",i,!0),window.addEventListener("resize",i),window.wbTooltip={open:WS,close:Il,enhanced:o=>MP.has(o)}}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",sq,{once:!0}):sq();const Wd=window.workbuddyDesktop;function zP({action:e,maximized:t=!1}){return r.jsx("svg",{viewBox:"0 0 24 24",width:14,height:14,fill:"none",stroke:"currentColor",strokeWidth:1.8,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:e==="minimize"?r.jsx("path",{d:"M5 12h14"}):e==="close"?r.jsx("path",{d:"M6 6l12 12M18 6 6 18"}):t?r.jsxs(r.Fragment,{children:[r.jsx("rect",{x:8.5,y:4.5,width:11,height:11,rx:1.5}),r.jsx("rect",{x:4.5,y:8.5,width:11,height:11,rx:1.5,className:"fill-sidebar"})]}):r.jsx("rect",{x:5.5,y:5.5,width:13,height:13,rx:1.5})})}function Ske({api:e}){const t=Ng.useValue(),[n,s]=p.useState(!1),i=p.useCallback(async()=>{try{e.windowIsMaximized&&s(await e.windowIsMaximized())}catch{}},[e]);p.useEffect(()=>{i();const u=e.onWindowResize?.(()=>{i()});return typeof u=="function"?u:void 0},[e,i]);const o=e.platform==="macos",l=t.displayName==="Agent2API"?e.title||a("Agent2API · 多提供商本地网关"):`${e.title?.startsWith("[Dev]")?"[Dev] ":""}${t.displayName}`;return r.jsxs(ske,{className:o?"titlebar is-macos pl-[84px] pr-3.5":"titlebar",children:[r.jsxs("div",{className:"titlebar-brand pointer-events-none flex min-w-0 items-center gap-2 text-[12.5px] font-semibold [&_*]:pointer-events-none",children:[r.jsx(IP,{branding:t,size:16}),r.jsx("span",{className:"txt truncate",children:l})]}),!o&&r.jsxs("div",{className:"ml-auto flex h-full shrink-0",children:[r.jsx(RP,{action:"minimize",title:a("最小化"),"aria-label":a("最小化"),onClick:()=>{e.windowMinimize?.().catch(()=>{})},children:r.jsx(zP,{action:"minimize"})}),r.jsx(RP,{action:"maximize",title:a(n?"还原":"最大化"),"aria-label":a(n?"还原":"最大化"),onClick:async()=>{try{await e.windowToggleMaximize?.(),await i()}catch(u){console.warn("切换窗口大小失败:",u)}},children:r.jsx(zP,{action:"maximize",maximized:n})}),r.jsx(RP,{action:"close",title:a("关闭"),"aria-label":a("关闭"),onClick:()=>{e.windowClose?.().catch(()=>{})},children:r.jsx(zP,{action:"close"})})]})]})}function Nke(){if(!document.getElementById("desktop-app")||!Wd?.platform||Wd.platform==="web"||Wd.platform!=="macos"&&(!Wd.windowMinimize||!Wd.windowToggleMaximize||!Wd.windowClose))return;const e=document.createElement("div");document.body.prepend(e),document.body.classList.add("has-titlebar"),document.title=Wd.title||a("Agent2API · 多提供商本地网关"),zn.createRoot(e).render(r.jsx(Ske,{api:Wd}))}Nke();const Su=999;function BP(e){const t=e.resolved||e;if(t.protocol&&t.host&&t.port){const n=t.host.includes(":")&&!t.host.startsWith("[")?`[${t.host}]`:t.host;return`${String(t.protocol).toLowerCase()}://${n}:${t.port}`}return e.resolved?.label||""}function Ag(e){const t=e.name||e.id,n=[e.source==="clash"?"Clash Verge":"",e.resolveError?a("解析失败"):BP(e),e.enabled===!1?a("已禁用"):""].filter(Boolean);return n.length?a("{name}({parts})",{name:t,parts:n.join(" · ")}):t}const vc="pool:";function ft(){return window}function Ct(e,t){ft().wbApp?.toast?.(e,t)}function Yo(e){const t=ft().wbApp?.esc;return t?t(e):String(e??"").replace(/[&<>"']/g,n=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[n]||n)}function ki(e){const t=ft().wbApp?.formatTime;if(t)return t(e);const n=Number(e);return!Number.isFinite(n)||n<=0?"":new Date(n).toLocaleString("zh-CN")}function dn(e){return e instanceof Error?e.message:String(e)}function Ln(e){if(e==null||e==="")return"—";const t=Number(e);return Number.isFinite(t)?String(Number(t.toFixed(2))):String(e)}const Cke={workbuddy:{usage:!0,creditDetail:!0,creditExpiry:!0,edition:!0,identifier:["uid"],expiry:["expiresAt"]},"workbuddy-intl":{usage:!0,creditDetail:!0,creditExpiry:!0,edition:!1,identifier:["uid"],expiry:["expiresAt"]},raccoon:{usage:!0,creditDetail:!0,edition:!1,identifier:["userId"],expiry:["tokenExpiresAt"]},catpaw:{usage:!0,edition:!1,identifier:["uid"],expiry:["tokenExpiresAt"]},autoclaw:{usage:!0,creditDetail:!0,edition:!1,identifier:["userId"],expiry:["tokenExpiresAt"]},"autoclaw-intl":{usage:!0,creditDetail:!0,edition:!1,identifier:["userId"],expiry:["tokenExpiresAt"],emailAsName:!0},qoder:{usage:!0,creditDetail:!0,edition:!0,identifier:["userId"],expiry:["expiresAt"],emailAsName:!0},"qoder-intl":{usage:!0,creditDetail:!0,edition:!0,identifier:["userId"],expiry:["expiresAt"],emailAsName:!0},qwenwork:{usage:!0,creditDetail:!0,edition:!0,identifier:["userId"],expiry:["expiresAt"],emailAsName:!0},"qwenwork-intl":{usage:!0,creditDetail:!0,edition:!0,identifier:["userId"],expiry:["expiresAt"],emailAsName:!0},"cline-free":{usage:!0,edition:!1,identifier:["account"],expiry:["expiresAt"]},"cline-pass":{usage:!0,edition:!1,identifier:["account"],expiry:["expiresAt"]},accio:{usage:!0,edition:!0,identifier:["userId"],expiry:["expiresAt"],emailAsName:!0},"accio-cn":{usage:!0,edition:!0,identifier:["userId"],expiry:["expiresAt"],emailAsName:!0},zcode:{usage:!0,creditDetail:!0,claim:!0,planChannel:!0,edition:!0,identifier:["userId"],expiry:["expiresAt"]},"zcode-intl":{usage:!0,creditDetail:!0,claim:!0,planChannel:!0,edition:!0,identifier:["userId"],expiry:["expiresAt"]},codearts:{usage:!0,usageDetail:!0,edition:!1,identifier:["userId"],expiry:["expiresAt"],concurrencyDefault:3},trae:{usage:!0,creditDetail:!0,creditExpiry:!0,edition:!1,identifier:["uid"],expiry:["expiresAt"]},loomy:{usage:!0,creditDetail:!0,edition:!1,identifier:["userId"],expiry:[""]},kuku:{usage:!0,edition:!1,identifier:["uid"],expiry:[""]},officeace:{usage:!0,creditDetail:!0,creditExpiry:!0,edition:!1,identifier:["id"],expiry:["expiresAt"]},antigravity:{usage:!0,edition:!1,identifier:["userId"],expiry:[""],longLived:!0},chatglm:{usage:!0,creditDetail:!0,edition:!1,identifier:["uid"],expiry:[""],longLived:!0},modelscope:{usage:!0,creditDetail:!0,edition:!1,identifier:["userId"],expiry:[""],longLived:!0},"modelscope-intl":{usage:!0,creditDetail:!0,edition:!1,identifier:["userId"],expiry:[""],longLived:!0},atomcode:{usage:!0,edition:!1,identifier:["userId"],expiry:["expiresAt"]},commandcode:{usage:!1,edition:!1,identifier:["id"],expiry:[""],longLived:!0},lobsterai:{usage:!0,creditDetail:!0,edition:!1,identifier:["userId"],expiry:["expiresAt"]},monkeycode:{usage:!1,edition:!1,identifier:["userId"],expiry:["expiresAt"]},"monkeycode-intl":{usage:!1,edition:!1,identifier:["userId"],expiry:["expiresAt"]},orcaterm:{usage:!0,edition:!1,identifier:["uid"],expiry:["tokenExpireAt"]}},YS={usage:!1,edition:!1,identifier:["userId"],expiry:["tokenExpiresAt"],emailAsName:!1};let aq=new Map,iq=null;function Ake(e){if(!e||typeof e!="object"||Array.isArray(e))return;const t=new Map;for(const[n,s]of Object.entries(e))!n||!s||typeof s!="object"||Array.isArray(s)||t.set(n,Tke(s));aq=t}function Eke(){const e=ft().wbApp?.getState?.()?.accountFeatures;return e!==iq&&(iq=e,Ake(e)),aq}function Tke(e){return{usage:e.usage===!0,edition:e.edition===!0,identifier:oq(e.identifier,YS.identifier),expiry:oq(e.expiry,YS.expiry),longLived:e.long_lived===!0,emailAsName:e.email_as_name===!0,claim:e.claim===!0,planChannel:e.plan_channel===!0,usageDetail:e.usage_detail===!0,creditDetail:e.credit_detail===!0,creditExpiry:e.credit_expiry===!0,concurrencyDefault:Number(e.concurrency_default)>0?Number(e.concurrency_default):void 0,defaultLimiters:Oke(e.default_limiters)}}function oq(e,t){if(typeof e=="string")return e?[e]:[];if(!Array.isArray(e))return t;const n=e.filter(s=>typeof s=="string"&&s.length>0);return n.length?n:[]}function Oke(e){if(!Array.isArray(e))return;const t=[];for(const n of e){if(!n||typeof n!="object"||Array.isArray(n))continue;const s=n,i=Number(s.threshold);if(!Number.isFinite(i)||i<=0)continue;const o=s.kind==="token"?"token":s.kind==="balance"?"balance":null;if(!o)continue;const l=s.action==="disable"?"disable":"skip",u=Number(s.period_seconds),d=o==="token"&&Number.isFinite(u)&&u>0;t.push({type:o,action:l,threshold:i,enabled:!0,...d?{period:u,reset:"fixed"}:{},...o==="token"&&!d?{reset:"daily"}:{}})}return t}function Ga(e){if(!e)return YS;const t=Eke().get(e);return t||Cke[e]||YS}function Rke(e,t){const n=Ui(e);if(!n)return null;const s=Object.prototype.hasOwnProperty.call(n,"totalLeft"),o=(Array.isArray(n.quotaSources)?n.quotaSources:[]).map(Ui).find(f=>f?.id==="account"),l=String(n.unit||o?.unit||(s?"积分":"")).trim(),u=Os(s?n.totalLeft:n.available),d=n.unlimited===!0;return u===null&&!d?null:{label:Fh(l)?t("总积分"):t("可用合计"),unit:mo(l,t),remaining:u,unlimited:d}}function Ui(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function lq(e,t){const n=Ui(e);if(n?.empty!==!0||n.error)return null;const s=n.emptyText==="暂无可用积分信息"?t("暂无可用积分信息"):typeof n.emptyText=="string"?t(n.emptyText.trim()):"";return{text:t("暂无额度信息"),detail:[s,t("查询已成功,但上游未提供额度数据,不代表余额为零。")].filter(Boolean).join(" · ")}}function Os(e){if(typeof e!="number"&&typeof e!="string"||typeof e=="string"&&!e.trim())return null;const t=Number(e);return Number.isFinite(t)?t:null}function cq(e){const t=Ui(e);return t?.snapshot===!0||t?.type==="magicubes"}function FP(e){const t=Ui(e);if(!t)return[];const n=Array.isArray(t.credits)?t.credits.filter(i=>Ui(i)):[];return Array.isArray(t.wallets)&&t.wallets.some(i=>Ui(i)?.type==="magicubes")?n.map(i=>{if(i.snapshot===!0||i.record===!0)return i;const{remain:o,...l}=i;switch(i.name){case"可用魔粒":return{...l,key:"available",name:"可用余额",balance:o,unit:"魔粒",snapshot:!0};case"冻结魔粒":return{...l,key:"frozen",name:"冻结余额",balance:o,unit:"魔粒",snapshot:!0};case"今日已用(次)":return{...l,key:"used-today",name:"今日已用",used:i.used??o,unit:"次",daily:!0,snapshot:!0};default:return i}}):n}function Fh(e){return e.trim()==="积分"||e.trim().toLowerCase()==="credits"}function mo(e,t){if(Fh(e))return t("积分");switch(e){case"额度":return t("额度");case"魔粒":return t("魔粒");case"次":return t("次");case"copilot_quota_units":return t("Copilot 额度单位");default:return e}}function uq(e,t){switch(e){case"Premium requests":return t("高级请求");case"Chat requests":return t("对话请求");case"Completions":return t("补全请求");default:return typeof e=="string"?t(e):""}}function dq(e,t,n){const s=typeof e.view=="string"?e.view.trim():"",i=Os(e.remaining),o=Os(e.limit),l=Os(e.remainingPercent),u=typeof e.unit=="string"?mo(e.unit,t):"";return e.unlimited===!0&&(!s||s==="不限")?t("不限"):i!==null&&(!s||/^剩余 [-+\d.eE]+(?: \/ [-+\d.eE]+)?(?: .+)?$/.test(s))?[o===null?t("剩 {remaining}",{remaining:n(i)}):t("剩 {remaining} / {total}",{remaining:n(i),total:n(o)}),u].filter(Boolean).join(" "):l!==null&&(!s||/^剩余 [-+\d.]+%$/.test(s))?t("剩余 {percent}%",{percent:Math.round(Math.max(0,Math.min(100,l)))}):s?t(s):"—"}function fq(e,t,n){if(e.snapshot!==!0)return null;const s=Os(e.used),i=s??Os(e.balance)??Os(e.remain),o=String(e.unit||"").trim(),l=String(e.name||"").trim(),u=l==="可用余额"?t("可用余额"):l==="冻结余额"?t("冻结余额"):l==="今日已用"?t("今日已用"):l==="今日发放"?t("今日发放"):l||t("明细"),d=i===null?"—":o==="次"?t("{count} 次",{count:n(i)}):o?`${n(i)} ${mo(o,t)}`:n(i);return{name:u,view:d,tone:s!==null||e.key==="frozen"||i===null||i<=0?"muted":"ok",daily:e.daily===!0}}function Pke(e,t,n){return FP(e).map(s=>fq(s,t,n)).filter(s=>s!==null)}function hq(e){const t=Ui(e);return!Array.isArray(t?.wallets)||!t.wallets.some(n=>String(Ui(n)?.type||"").startsWith("meter:"))?null:t.wallets.map(Ui).filter(n=>n!==null&&(n.creditRemaining!=null||n.creditTotal!=null||n.creditUsed!=null))}function UP(e,t,n){const s=Ui(e);if(!s)return[];const i=[],o=Ui(s.subscription);typeof o?.planName=="string"&&o.planName.trim()&&i.push(t("套餐 {name}",{name:o.planName})),typeof s.balanceView=="string"&&s.balanceView.trim()&&i.push(t(s.balanceView));for(const l of hq(s)??(Array.isArray(s.wallets)?s.wallets:[])){const u=Ui(l);if(!u)continue;const d=typeof u.balanceView=="string"&&u.balanceView.trim()?t(u.balanceView):Os(u.balance)===null?"":n(Os(u.balance));if(!d)continue;const f=typeof u.displayName=="string"?t(u.displayName):typeof u.type=="string"?u.type:t("明细");i.push([f,d].filter(Boolean).join(" "))}return[...new Set(i)]}function XS(e){const t=Ui(e);return Array.isArray(t?.warnings)?t.warnings.filter(n=>typeof n=="string"&&!!n.trim()):[]}let Uh={};function Ike(e){if(!e?.limiterStates)return!1;const t=JSON.stringify([Uh.limiterStates,Uh.quotaSources,Uh.limiterModels])!==JSON.stringify([e.limiterStates,e.quotaSources,e.limiterModels]);return Uh={tokenAt:e.tokenAt,limiterStates:e.limiterStates,quotaSources:e.quotaSources,limiterModels:e.limiterModels},t}function sy(e,t=[]){return Array.isArray(e?.limiterGroups)?e.limiterGroups:t.map(n=>({enabled:n.enabled!==!1,action:n.action,target:"account",conditions:[{join:"or",sourceId:"",models:[],threshold:n.threshold,metric:n.type==="balance"?"remaining":"tokens",comparison:n.type==="balance"?"lt":"gte",...n.type==="token"?{window:{reset:n.reset==="daily"?"daily":"fixed",seconds:n.period||0}}:{}}]}))}function HP(e){const t=e?Uh.quotaSources?.[e.id]:void 0;return Array.isArray(t)?t.slice():[{id:"account",label:a("账号主额度"),provider:String(e?.provider||"")},{id:"local",label:a("本地用量保护"),provider:String(e?.provider||""),localOnly:!0}]}function Mke(e){const t=String(e?.provider||"");return(Uh.limiterModels?.[t]||[]).map(s=>({value:s.id,label:s.name&&s.name!==s.id?`${s.name}(${s.id})`:s.id}))}function VP(e){return e?Uh.limiterStates?.[e.id]||[]:[]}function ay(e,t,n="skip"){if(!e)return!1;const s=sy(e),i=VP(e);return s.some((o,l)=>o.enabled&&o.action===n&&i[l]?.hit&&(!t||o.conditions.some(u=>t==="token"?u.metric==="tokens"||u.metric==="requests":u.metric!=="tokens"&&u.metric!=="requests")))}function KP(e,t=e?.id||"account"){return t==="local"?a("本地用量保护"):t==="account"||!t?Fh(e?.unit||"")?a("总积分"):a("账号主额度"):e?.label?a(e.label):a("账号主额度")}function mq(e){const{remaining:t,total:n,used:s,remainingPercent:i,resetsAt:o,...l}=e;return l}function pq(e,t){const n=e.sourceId||(e.metric==="tokens"||e.metric==="requests"?"local":"account"),s=HP(t).find(m=>m.id===n),i=KP(s||e.source,n),o=e.models.length?e.models.join("、"):a("全部模型"),l=qP(e.metric),u=e.comparison==="lt"?"<":e.comparison==="lte"?"≤":"≥",d=e.metric.endsWith("percent")?"%":e.metric==="tokens"?"Token":e.metric==="requests"?a("次"):mo(s?.unit||e.source?.unit||"",a),f=e.metric==="tokens"?gq(e.threshold):String(e.threshold);return`${i} · ${o} · ${l} ${u} ${f} ${d}`.trim()}function qP(e){switch(e){case"remaining":return a("剩余额度");case"remaining_percent":return a("剩余比例");case"used":return a("已用额度");case"used_percent":return a("已用比例");case"tokens":return a("本地 Token 消耗");case"requests":return a("本地请求次数")}}function gq(e){return window.wbUnits?.formatTokens?.(e)||e.toLocaleString()}function _ke(e,t,n){if(!e?.known||e.value===null)return Dke(e?.reason);const s=HP(n).find(u=>u.id===(t.sourceId||"account")),i=mo(s?.unit||t.source?.unit||"",a),o=u=>t.metric==="tokens"?`${gq(u)} Token`:t.metric.endsWith("percent")?`${Number(u.toFixed(2))}%`:`${Number(u.toFixed(2))} ${t.metric==="requests"?a("次"):i}`.trim(),l=Object.entries(e.modelValues||{});return l.length?l.map(([u,d])=>`${u}:${o(d)}`).join(" · "):o(e.value)}function Dke(e){switch(e){case"此额度不属于账号当前使用的通道":return a("此额度不属于账号当前使用的通道");case"套餐尚未生效或已经到期":return a("套餐尚未生效或已经到期");case"上游额度无上限":return a("上游额度无上限");case"统计周期尚未开始或已经结束":return a("统计周期尚未开始或已经结束");default:return a("暂无读数")}}function Lke(e,t){const n=[];return e.forEach((s,i)=>{(i===0||s.join==="or")&&n.push([]),n[n.length-1].push(pq(s,t))}),n.map(s=>s.length>1?`(${s.join(` ${a("与")} `)})`:s[0]).join(` ${a("或")} `)}function xq(e){return e.desktop!==!0&&(e.canRefresh===!0||e.hasRefreshToken===!0)}function GP(e){return e.desktop===!0?a("桌面端实时登录态请在原客户端更新"):e.needsRelogin===!0?iy(e):xq(e)?"":a("该账号不支持刷新 Token 或未提供刷新凭证")}function iy(e){return e.needsReloginReason?.trim()||a("登录授权已失效,请重新登录;自动续期无法恢复已过期或已撤销的刷新令牌。")}function vq(e,t=Date.now()){const n=Number(e?.upstreamCooldownUntil);return!Number.isFinite(n)||n<=t||n>864e13?null:{resetAt:n,message:String(e?.upstreamBlockedReason||"").trim()}}function bq(e){return e?.enabled===!1?String(e.upstreamBlockedReason||"").trim():""}function WP(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function yq(e){return typeof e=="string"?e.trim():""}function jq(e){const t=WP(e);if(t?.stale)return{remaining:null,unit:"",unlimited:!1};const n=t?.error?WP(t.lastUsage):t,s=!!(n&&Object.prototype.hasOwnProperty.call(n,"totalLeft")),o=(Array.isArray(n?.quotaSources)?n.quotaSources:[]).map(WP).find(g=>g?.id==="account"),l=yq(n?.unit)||yq(o?.unit)||(s?"积分":""),u=/^(credits?|积分)$/i.test(l)?"积分":l,d=s?n?.totalLeft:n?.available,f=!!n?.unlimited;return{remaining:!f&&typeof d=="number"&&Number.isFinite(d)?d:null,unit:u,unlimited:f}}function YP(e){return!e||e.unlimited||!e.unit||e.unit==="%"?null:typeof e.remaining=="number"&&Number.isFinite(e.remaining)?e.remaining:null}function wq(e){const t=new Set(e.filter(n=>YP(n)!==null).map(n=>n.unit));return t.size>1?"mixedUnits":t.size?"ready":"noData"}const XP=30,kq=86400,$ke=60,zke=3,QS=10,ZS=60,QP=180;function Sq(e){const t=e?.usageQuery,n=t?.enabled===void 0?!0:t.enabled===!0,s=Number(t?.interval)||0,i=s>=XP&&s<=kq,o=t?.retries;return{enabled:n,interval:n&&!i?$ke:s,retries:typeof o=="number"&&Number.isInteger(o)&&o>=0&&o<=QS?o:zke,timeoutSeconds:typeof t?.timeoutSeconds=="number"&&Number.isInteger(t.timeoutSeconds)&&t.timeoutSeconds>=15&&t.timeoutSeconds<=QP?t.timeoutSeconds:ZS}}const ZP="workbuddy",Bke="raccoon";function tn(e){const t=e?.provider;return typeof t=="string"&&t?t:ZP}const Fke="opencode",Uke="https://opencode.ai/zen/go/v1";function Nq(e,t){if(!e||e.clientEmulation!==Fke)return!1;const s=((typeof t=="string"?t.trim():"")||String(e.baseUrl||"")).trim().replace(/\/+$/,"").toLowerCase();return s?s!==Uke:!1}function Hke(e){const t=e?tn(e):"";return t.startsWith("custom-")&&(ft().wbProviders?.customList?.()||[]).find(s=>s?.id===t)||null}function Vke(e){return e?Nq(Hke(e),e.baseUrl):!1}function Cq(e){const t=Array.isArray(e?.providers)?e.providers:[],n=Array.isArray(e?.accounts)?e.accounts:[],s=new Map;n.forEach(o=>{const l=tn(o);s.set(l,(s.get(l)||0)+1)});const i=new Map;return t.forEach(o=>{o?.id&&i.set(String(o.id),{id:String(o.id),label:String(o.label||o.id),count:Number(o.count)||0})}),s.forEach((o,l)=>{i.has(l)||i.set(l,{id:l,label:ft().wbProviders?.labelOf?.(l)||l,count:o})}),[...i.values()]}function JS(e){return qke(e,Ga(tn(e)).identifier)}function Kke(e){for(const t of Ga(tn(e)).identifier){const n=e?.[t];if(!(n==null||n===""))return t}return""}function qke(e,t){for(const n of t){const s=e?.[n];if(!(s==null||s===""))return String(s)}return""}function Aq(e){const t=Number(e)||0;return t<=0?0:t<1e11?t*1e3:t}function Eq(e){const t=Ga(tn(e)).expiry;for(const n of t){const s=Aq(e?.[n]);if(s>0)return s}return 0}function Si(e){if(e?.isGuest===!0)return!1;const t=tn(e);return t.startsWith("custom-")?!!e?.balanceQuery?.scheme:Ga(t).usage}const Gke=1800,Wke=86400,Tq=1;function Yke(e){const t=e?Ga(e).defaultLimiters:void 0;return t&&(e!=="codearts"||t.every(n=>n.type==="balance"))?t.slice():e==="cline-free"?[]:[{type:"balance",action:"skip",threshold:Tq,enabled:!0}]}function Xke(e){if(!e||typeof e!="object")return!1;const t=e;if(t.type!=="balance"&&t.type!=="token"||t.action!=="skip"&&t.action!=="disable")return!1;const n=Number(t.threshold);if(!Number.isFinite(n)||n<=0)return!1;if(t.type==="token"&&t.reset!=="daily"){const s=Number(t.period);if(!Number.isInteger(s)||sWke)return!1}return!0}function Qke(e){const t=e?.lowBalance;if(!t||typeof t!="object"||!t.mode)return Yke(tn(e));const n=Number(t.threshold),s=Number.isFinite(n)&&n>0?n:Tq;return t.mode!=="skip"&&t.mode!=="disable"?[]:[{type:"balance",action:t.mode,threshold:s,enabled:!0}]}function Hh(e){const t=e?.limiters;return Array.isArray(t)?t.filter(Xke):Qke(e)}function Zke(e){return Hh(e).filter(t=>t.type==="token")}function Jke(e,t){const n=t*1e3;return e-e%n}function Oq(e){return e.reset==="daily"?0:e.period??0}function JP(e,t=Date.now()){if(e===0){const n=new Date(t);return n.setHours(0,0,0,0),n.getTime()}return Jke(t,e)}function eI(e,t,n=Date.now()){if(e.type!=="token")return null;const s=Oq(e),i=(t||[]).find(o=>Number(o.kind)===s);return i&&Number(i.windowStart)===JP(s,n)?i:null}function tI(e,t){if(t&&typeof t=="object"&&t.stale)return!1;if(Array.isArray(e?.limiterGroups))return ay(e,"balance");const n=Hh(e).filter(l=>l.type==="balance"&&l.action==="skip"&&l.enabled!==!1&&l.threshold>0);if(!n.length||!t||typeof t!="object")return!1;const s=t;if(s.unlimited)return!1;const i=s.totalLeft??s.available;if(i==null||i==="")return!1;const o=Number(i);return Number.isFinite(o)&&n.some(l=>oi.type==="token"&&i.action==="skip"&&i.enabled!==!1);if(!n.length||!t?.length)return!1;const s=Date.now();return n.some(i=>{const o=eI(i,t,s);return o!==null&&Number(o.used)>=i.threshold})}function eSe(e,t){return Array.isArray(e?.limiterGroups)?ay(e,"token","disable"):Hh(e).some(n=>{if(n.type!=="token"||n.action!=="disable"||n.enabled===!1)return!1;const s=eI(n,t);return s!==null&&Number(s.used)>=n.threshold})}function tSe(e,t=Date.now()){const n=Oq(e),s=JP(n,t),i=n===0?Math.max(0,JP(0,s+864e5+36e5)-t):Math.max(0,s+n*1e3-t);return{kind:n,startMs:s,remainingMs:i,daily:n===0}}function Rq(e,t){if(e<=0)return"";const n=Math.ceil(e/6e4);if(t){const s=Math.ceil(e/36e5);return s>=1?a("今日剩 {n} 小时",{n:s}):a("今日剩 {n} 分钟",{n})}return n>=1?a("剩 {n} 分钟",{n}):a("剩不到 1 分钟")}function Pq(e){const t=Number(e);if(!Number.isFinite(t))return"—";const n=window.wbUnits;return n?.formatTokens?n.formatTokens(t):String(Math.round(t))}function nSe(e){return e>0&&e%3600===0?a("{n} 小时",{n:e/3600}):e>0&&e%60===0?a("{n} 分钟",{n:e/60}):a("{n} 秒",{n:e})}function oy(e){return e?.desktop===!0}function Iq(e){return e?.chatSupported!==!1}function rSe(e){return typeof e=="string"&&e.startsWith("custom-")}function sSe(e){return a(e==="enterprise"?"企业":e==="ultimate"?"旗舰":"个人")}function eN(e,t){const n=Number(e?.priority??100)-Number(t?.priority??100);return n!==0?n:(Number(e?.addedAt)||0)-(Number(t?.addedAt)||0)}function Ni(e){return e?.enabled!==!1}function ly(e,t=""){if(vq(e))return!0;const n=e?.rateLimits||{},s=Date.now();return t?Number(n[t]?.resetAt)>s:Object.values(n).some(i=>Number(i?.resetAt)>s)}function Mq(e){return e?.edition==="intl"?"intl":"cn"}const _q="coding-plan",Vh="start-plan";function tN(e){return!!Ga(tn(e)).planChannel}function rI(e){return tN(e)?String(e?.zcodePlan||"").trim()===Vh?Vh:_q:""}function aSe(e){return a(e===Vh?"套餐池(Start Plan)":"编码套餐(Coding Plan)")}function sI(e){switch(String(e??"").trim()){case"pending":return a("待生效");case"active":return a("生效中");case"expired":return a("已过期");case"unknown":return a("状态未知");default:return String(e??"")}}function iSe(e){const t=e?.claimPlans;if(!t||typeof t!="object"||Array.isArray(t))return[];const n=$q();return Object.entries(t).filter(([,s])=>Number(s)>0&&$q(Number(s))===n).map(([s])=>s)}function oSe(e){return!!Ga(tn(e)).usageDetail}function aI(e){return!!Ga(tn(e)).creditDetail}function Dq(e,t=Date.now()){if(!e||typeof e!="object"||Array.isArray(e))return null;const n=e,s=Array.isArray(n.credits)?n.credits:[];let i=null;for(const o of s){if(!o||typeof o!="object"||o.snapshot===!0||o.record===!0||o.daily===!0||o.unlimited===!0)continue;const l=Number(o.expireAt);if(!Number.isFinite(l)||l<=0||l<=t)continue;const u=o.remain;u!=null&&u!==""&&Number(u)<=0||(i===null||lString(i||"").toLowerCase().includes(n)):!0}function Bq(e,t){return t.provider==="all"||tn(e)===t.provider}function oI(e,t){return t.enabled==="all"?!0:t.enabled==="enabled"?Ni(e):!Ni(e)}function Fq(e,t,n,s){if(t.limit==="all")return!0;if(!Ni(e))return!1;const i=cy(e,n?.(e),s?.(e));return t.limit==="limited"?i:!i}function Uq(e,t,n,s){return Bq(e,t)&&oI(e,t)&&Fq(e,t,n,s)&&zq(e,t)}function lSe(e,t,n,s){return(e||[]).filter(i=>Uq(i,t,n,s))}function Hq(e,t,n,s){const i=e||[],o=d=>i.filter(f=>Bq(f,t)&&(d==="enabled"||oI(f,t))&&zq(f,t)),l=o("enabled"),u=o("limit");return{enabledAll:l.length,enabled:l.filter(Ni).length,disabled:l.filter(d=>!Ni(d)).length,limitAll:u.length,normal:u.filter(d=>Ni(d)&&!cy(d,n?.(d),s?.(d))).length,limited:u.filter(d=>Ni(d)&&cy(d,n?.(d),s?.(d))).length}}function lI(e){const t=e?.rateLimits;if(!t||typeof t!="object")return[];const n=Date.now();return Object.entries(t).map(([s,i])=>({model:s,...i&&typeof i=="object"?i:{}})).filter(s=>Number(s.resetAt)>n).sort((s,i)=>Number(s.resetAt)-Number(i.resetAt))}function cI(e,t){const n=new Map((t?.providerOrder||[]).flatMap(o=>t?.accountOrder[o]||[]).map((o,l)=>[o,l])),s=(e||[]).slice().sort(n.size?(o,l)=>(n.get(o.id)??1/0)-(n.get(l.id)??1/0):eN),i=new Map;return s.forEach((o,l)=>i.set(o.id,{position:l+1,total:s.length})),i}function Vq(e){return[{key:"credit",on:Eg(e),dir:"soon"},{key:"balance",on:!1,dir:"high"},{key:"added",on:!1,dir:"new"}]}function cSe(e,t,n,s=Date.now()){const i=(t||[]).filter(f=>f.on);if(!i.length)return e.slice();const o=e.map((f,m)=>({account:f,index:m})),l=new Map,u=new Map(e.map(f=>[f.id,jq(n?.(f))])),d=wq([...u.values()])==="ready";for(const{account:f}of o)l.set(f.id,Dq(n?.(f),s));return o.sort((f,m)=>{for(const g of i){let v=0;if(g.key==="added"?v=uSe(g.dir,f.account,m.account):g.key==="credit"?v=Kq(g.dir,l.get(f.account.id)??null,l.get(m.account.id)??null):g.key==="balance"&&d&&(v=Kq(g.dir==="high"?"late":"soon",YP(u.get(f.account.id)),YP(u.get(m.account.id)))),v!==0)return v}return f.index-m.index}),o.map(f=>f.account)}function uSe(e,t,n){const s=Number(t.addedAt)||0,i=Number(n.addedAt)||0;return e==="new"?i-s:s-i}function Kq(e,t,n){return t===null&&n===null?0:t===null?1:n===null?-1:e==="soon"?t-n:n-t}function dSe(e,t,n,s,i,o){const l=(e||[]).slice().sort(eN),u=[],d=new Map;for(const f of l){const m=tn(f);d.has(m)||(d.set(m,[]),u.push(m)),d.get(m).push(f)}if(o){const f=new Map(o.providerOrder.map((m,g)=>[m,g]));u.sort((m,g)=>(f.get(m)??1/0)-(f.get(g)??1/0))}return u.map((f,m)=>{const g=d.get(f)||[],v=o?.accountOrder[f],b=new Map((v||[]).map((k,j)=>[k,j])),y=v?g.slice().sort((k,j)=>(b.get(k.id)??1/0)-(b.get(j.id)??1/0)):i?cSe(g,i(f),n):g;return{provider:f,label:ft().wbProviders?.labelOf?.(f)||f,rank:o?.providerOrder.includes(f)?o.providerOrder.indexOf(f)+1:m+1,members:y,queueMembers:g,accounts:t?y.filter(t):y,enabled:y.filter(Ni).length,disabled:y.filter(k=>!Ni(k)).length,limited:y.filter(k=>Ni(k)&&cy(k,n?.(k),s?.(k))).length}})}function Ci(e){if(!e)return"";const t=String(e.name||"").trim();if(e.nameCustom===!0&&t)return t;const n=String(e.email||"").trim();return Ga(tn(e)).emailAsName&&n?n:e?.nickname||t||JS(e)||e?.id||""}const uI="已限流",qq=e=>new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime();function dI(e){const t=Number(e);if(!Number.isFinite(t)||t<=0||t<=Date.now())return uI;const n=new Date(t),s=n.toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit",hour12:!1}),i=Math.round((qq(n)-qq(new Date))/864e5);return i===0?a("今天 {clock}",{clock:s}):i===1?a("明天 {clock}",{clock:s}):a("{month}月{day}日 {clock}",{month:n.getMonth()+1,day:n.getDate(),clock:s})}function fSe(e){const t=tn(e);if(!Ga(t).edition)return"";const n=Mq(e),s=e?.editionLabel,i=s||(n==="intl"?"国际版":"国内版");return(ft().wbProviders?.labelOf?.(t)||"").includes(i)?"":s||a(n==="intl"?"国际版":"国内版")}function hSe(e){const t=bq(e);return[t?{text:a("上游限制 · 已禁用"),kind:"bad",title:t}:null,e.needsRelogin?{text:a("需要重新登录"),kind:"bad",title:iy(e)}:null,Iq(e)?null:{text:a("仅账号管理"),kind:"plain",title:a("该提供商的推理转发尚未接入,账号不参与转发")},rSe(tn(e))&&e.hasCredentials===!1?{text:a("未配置凭证"),kind:"bad",title:a("这条自定义账号既没有 API Key,也没有勾选「无需鉴权」:转发时会被跳过,该提供商下的模型也不会出现在模型列表里。去账号「设置」里补上 Key,或勾选「该上游无需鉴权」")}:null,e.proxy?.error?{text:a("代理异常"),kind:"bad",title:a("{error}(不会自动改为直连)",{error:e.proxy.error})}:null,rI(e)===Vh?{text:a("套餐池"),kind:"plain",title:a("转发走套餐池(Start Plan)通道(zcode.z.ai 的 Anthropic 端点,用账号里的体验额度 / 活动领取额度);在账号设置里可切回编码套餐")}:null].filter(n=>n!==null)}const Gq="workbuddy-desktop-accounts-filters",Wq="workbuddy-desktop-accounts-collapsed",fI="workbuddy-desktop-accounts-names-hidden",hI="workbuddy-desktop-accounts-group-total-filtered",mSe="workbuddy-desktop-accounts-group-sort";function pSe(){try{const e=JSON.parse(localStorage.getItem(mSe)||"{}");if(!e||typeof e!="object"||Array.isArray(e))return{};const t={};for(const[n,s]of Object.entries(e)){if(!Array.isArray(s))continue;const i=[];for(const o of s){if(!o||typeof o!="object")continue;const l=o;l.key==="credit"?i.push({key:"credit",on:l.on!==!1,dir:l.dir==="late"?"late":"soon"}):l.key==="balance"?i.push({key:"balance",on:l.on!==!1,dir:l.dir==="low"?"low":"high"}):l.key==="added"&&i.push({key:"added",on:l.on!==!1,dir:l.dir==="old"?"old":"new"})}i.length&&(t[n]=i)}return t}catch{return{}}}function gSe(){const e={provider:"all",enabled:"all",limit:"all",q:""},t=ft().wbFilterMemory?.load(Gq,e)||e;return{provider:String(t.provider||"all"),enabled:String(t.enabled||"all"),limit:String(t.limit||"all"),q:""}}function xSe(){try{const e=JSON.parse(localStorage.getItem(Wq)||"[]");return new Set(Array.isArray(e)?e.map(t=>String(t)).filter(Boolean):[])}catch{return new Set}}function Yq(){return Qq()}function Xq(){return mI()}function Qq(){try{return localStorage.getItem(fI)==="1"}catch{return!1}}function mI(){try{return localStorage.getItem(hI)==="1"}catch{return!1}}let ir={version:0,listBusy:!1,listError:"",filter:gSe(),collapsed:xSe(),selected:new Set,connections:new Map,dialog:null,namesHidden:Qq(),usageBusy:!1,usageInflight:new Set,usageTasks:new Map,usageStarting:new Set,groupTotalFiltered:mI(),groupSort:pSe(),sorting:null,sortBusy:!1};const pI=new Set;function Kh(e){return pI.add(e),()=>{pI.delete(e)}}function Sn(){return ir}function Tr(e){ir={...ir,...e,version:ir.version+1},pI.forEach(t=>t())}function nN(){Tr({})}function Yd(){return ft().wbApp?.getState?.()?.accounts}function Ml(){const e=Yd()?.accounts;return Array.isArray(e)?e:[]}function vSe(){const e=Yd()?.hiddenAccounts,t=e?.byProvider,n={};if(t&&typeof t=="object"&&!Array.isArray(t))for(const[l,u]of Object.entries(t)){const d=Number(u);Number.isFinite(d)&&d>0&&(n[l]=d)}const s=new Map;for(const l of Array.isArray(e?.providers)?e.providers:[]){if(!l||typeof l.id!="string"||!l.id)continue;const u=l.reason==="not_installed"||l.reason==="pack_disabled"||l.reason==="provider_disabled"||l.reason==="loading"||l.reason==="load_failed"||l.reason==="load_timeout"?l.reason:"not_loaded";s.set(l.id,{id:l.id,label:typeof l.label=="string"&&l.label?l.label:l.id,count:Number(l.count)||0,reason:u,packId:l.packId,startup:l.startup})}const i=Object.entries(n).map(([l,u])=>{const d=s.get(l);return{id:l,count:u,label:d?.label||ft().wbProviders?.labelOf?.(l)||l,reason:d?.reason||"not_loaded",packId:d?.packId,startup:d?.startup}}).sort((l,u)=>u.count-l.count),o=Number(e?.total);return{total:Number.isFinite(o)&&o>0?o:0,byProvider:n,providers:i}}function _l(e){return Ml().find(t=>t.id===e)||null}function bSe(e,t){const n=dSe(Ml(),i=>Uq(i,ir.filter,e,t),e,t,Nu,ir.sorting||Yd()?.sorting);return{groups:n.filter(i=>i.accounts.length>0),allGroups:n}}function Nu(e){const n=ir.sorting?.rules[e]||Yd()?.sorting?.rules[e]||ir.groupSort[e];if(n){const s=n.map(i=>({...i}));return[...s,...Vq(e).filter(i=>!s.some(o=>o.key===i.key)).map(i=>({...i,on:!1}))]}return Vq(e)}function ySe(e){return Object.prototype.hasOwnProperty.call(ir.sorting?.configured||ir.groupSort,e)}function Zq(){return Cq(Yd())}function jSe(e,t){return Hq(Ml(),ir.filter,e,t)}function wSe(){return cI(Ml(),ir.sorting||Yd()?.sorting)}function rN(){ft().wbFilterMemory?.save(Gq,{provider:ir.filter.provider,enabled:ir.filter.enabled,limit:ir.filter.limit})}function kSe(e){ir.filter.q!==e&&Tr({filter:{...ir.filter,q:e}})}function SSe(e){const t=e||"all";ir.filter.provider!==t&&(Tr({filter:{...ir.filter,provider:t}}),rN())}function Jq(e,t){const n={...ir.filter,[e]:t};n.enabled==="disabled"&&n.limit!=="all"&&(n.limit="all"),Tr({filter:n}),rN()}function e8(){return ir.filter.provider!=="all"||ir.filter.enabled!=="all"||ir.filter.limit!=="all"||ir.filter.q.trim()!==""}function gI(){Tr({filter:{provider:"all",enabled:"all",limit:"all",q:""}}),rN()}function NSe(){const e=ir.filter.provider;e!=="all"&&(Zq().some(t=>t.id===e)||(Tr({filter:{...ir.filter,provider:"all"}}),rN()))}function t8(e){try{localStorage.setItem(Wq,JSON.stringify([...e]))}catch{}}function n8(e){const t=new Set(ir.collapsed);t.has(e)?t.delete(e):t.add(e),t8(t),Tr({collapsed:t})}function CSe(e,t){const n=new Set(ir.collapsed);for(const s of e)t?n.add(s):n.delete(s);t8(n),Tr({collapsed:n})}function ASe(e){return ir.selected.has(e)}function ESe(e,t){const n=new Set(ir.selected);t?n.add(e):n.delete(e),Tr({selected:n})}function r8(e,t){const n=new Set(ir.selected);for(const s of e)t?n.add(s):n.delete(s);Tr({selected:n})}function TSe(){const e=!ir.namesHidden;try{localStorage.setItem(fI,e?"1":"0")}catch{}Tr({namesHidden:e})}function OSe(e){try{localStorage.setItem(fI,e?"1":"0")}catch{}Tr({namesHidden:e})}function RSe(){const e=mI();e!==ir.groupTotalFiltered&&Tr({groupTotalFiltered:e})}function PSe(e){try{localStorage.setItem(hI,e?"1":"0")}catch{}Tr({groupTotalFiltered:e})}function s8(e){return"*".repeat(Math.min(Math.max(e.length,4),12))}const a8="usage_not_configured";function xI(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function qh(e){const t=Number(e);return Number.isFinite(t)&&t>0&&t<=864e13?t:0}function ISe(e,t){if(!e.error)return{...e,lastUsage:null,lastSuccessAt:qh(e.lastSuccessAt)||qh(e.at)};const n=Object.prototype.hasOwnProperty.call(e,"lastUsage"),s=xI(n?e.lastUsage:t?.error?t.lastUsage:t?.usage),i=n?qh(e.lastSuccessAt):qh(e.lastSuccessAt)||qh(t?.lastSuccessAt)||(t?.error?0:qh(t?.at));return{...e,usage:null,lastUsage:s,lastSuccessAt:s?i:0}}function i8(e,t,n){const s=Math.max(0,n-e);return s<1e4?t("刚刚更新"):s<6e4?t("{n} 秒前更新",{n:Math.floor(s/1e3)}):s<36e5?t("{n} 分钟前更新",{n:Math.floor(s/6e4)}):s<864e5?t("{n} 小时前更新",{n:Math.floor(s/36e5)}):t("{n} 天前更新",{n:Math.floor(s/864e5)})}function MSe(e,t,n,s=Date.now()){if(!e.error||e.code===a8)return null;const i=xI(e.lastUsage)?qh(e.lastSuccessAt):0,o=i?`${t("更新失败")} · ${i8(i,t,s)}`:t("查询失败"),l=i?n(i):"";return{text:o,detail:[t(e.error),l?t("上次成功查询:{time}",{time:l}):""].filter(Boolean).join(` +`)}}const _Se=a8,uy=new Map,Gh=new Map,DSe=()=>uy,Tg=e=>Gh.get(e);function LSe(e){const t=Gh.get(e);t&&l8({...t,stale:!0})}function Og(e){return e==null?null:typeof e=="string"?{message:e,notConfigured:!1}:e.error?{message:String(e.error),notConfigured:e.code===_Se}:null}function o8(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function l8(e){Gh.set(e.id,e),uy.set(e.id,e.error?{error:e.error,code:e.code,lastUsage:e.lastUsage,lastSuccessAt:e.lastSuccessAt,stale:e.stale,requestId:e.requestId}:e.usage?{...e.usage,stale:e.stale}:void 0)}function $Se(e,t){const n=String(e.id||"");if(!n)return!1;const s=Sn().usageTasks.get(n);if(s&&e.requestId===s.requestId&&s.status==="config_changed")return!1;const i={id:n,usage:o8(e.usage),error:e.error?String(e.error):e.usage?null:a("余额响应为空"),code:typeof e.code=="string"||typeof e.code=="number"?e.code:null,at:Number(e.at)||t,stale:e.stale===!0,requestId:typeof e.requestId=="string"?e.requestId:void 0};Object.prototype.hasOwnProperty.call(e,"lastSuccessAt")&&(i.lastSuccessAt=Number(e.lastSuccessAt)||0),Object.prototype.hasOwnProperty.call(e,"lastUsage")&&(i.lastUsage=o8(e.lastUsage));const o=Gh.get(n);if(o&&Number(o.at)>Number(i.at))return!1;const l=ISe(i,o);return o&&JSON.stringify(o)===JSON.stringify(l)?!1:(l8(l),!0)}function po(e){if(e.isGuest!==!0)return uy.get(e.id)}function zSe(e){const n=Gh.get(e.id)?.lastSuccessAt??0;return Number.isFinite(n)&&n>0&&n<=864e13?n:0}function BSe(e){const t=Og(po(e));if(!t||t.notConfigured)return null;const n=Gh.get(e.id);return n?MSe(n,a,ki):null}function FSe(e){let t=!1;for(const n of uy.keys())e.has(n)||(uy.delete(n),Gh.delete(n),t=!0);return t}const USe=800;function HSe(e,t){switch(e?.status){case"running":return t("查询中…");case"cancelled":return t("已取消查询");case"config_changed":return t("配置已变更,请重新查询");case"failed":return e.error?t(e.error):t("查询失败");case"timeout":return t("查询超时,可重新查询");default:return""}}function sN(e,t=15e3){return new Promise((n,s)=>{const i=setTimeout(()=>s(new Error("等待余额查询响应超时,请重新查询")),t);e.then(o=>{clearTimeout(i),n(o)},o=>{clearTimeout(i),s(o)})})}let bc,vI,bI=!1,dy=null,VSe=0,fy=0;const c8=()=>fy,Cu=new Map,aN=new Map;function KSe(e){bc=e}function u8(){vI||bI||!bc||!Sn().usageInflight.size||(vI=setTimeout(async()=>{vI=void 0,bI=!0;try{await sN(bc(),5e3)}catch{}const e=new Map(Sn().usageTasks);let t=!1;for(const[n,s]of e)s.status==="running"&&Date.now()>s.deadlineAt+15e3&&(e.set(n,{...s,status:"timeout"}),t=!0,ft().workbuddyDesktop?.cancelBalanceQuery?.(n,s.requestId).catch(()=>{}));t&&(fy++,iN(e)),bI=!1,u8()},USe))}function hy(e,t){const n=aN.get(e);if(n){aN.delete(e);for(const s of n)clearTimeout(s.timer),s.resolve(t)}}function iN(e){const t=Sn().usageTasks;for(const[i,o]of e){const l=t.get(i);if(l&&l.requestId!==o.requestId&&hy(l.requestId,null),o.status!=="running"){const u=Tg(i);hy(o.requestId,u?.requestId===o.requestId?u:null)}}const n=new Set([...e].filter(([,i])=>i.status==="running").map(([i])=>i)),s=!!(dy&&[...dy].some(([i,o])=>{const l=e.get(i);return l?.requestId===o&&l.status==="running"}));Tr({usageTasks:e,usageInflight:n,usageBusy:s}),u8()}function yI(e){if(!Array.isArray(e))return;const t=new Map(Sn().usageTasks);let n=!1;for(const s of e){if(!s?.id||!s.requestId||!Number.isFinite(s.startedAt)||!Number.isFinite(s.deadlineAt))continue;const i=t.get(s.id);if(!(i&&(i.startedAt>s.startedAt||i.requestId===s.requestId&&i.status!=="running"&&s.status==="running"||i.requestId===s.requestId&&i.status==="config_changed"))){if(i?.requestId===s.requestId&&i.status===s.status){if(s.status!=="running"){const o=Tg(s.id);hy(s.requestId,o?.requestId===s.requestId?o:null)}continue}t.set(s.id,s),n=!0}}n&&iN(t)}async function jI(e,t=!0){const n=e||"*";if(Cu.has(n))return null;const s=ft().workbuddyDesktop;if(!s?.startBalanceQuery)throw new Error(a("余额查询接口不可用,请更新网关后重试"));const i=++VSe;Cu.set(n,i),Tr({usageStarting:new Set(Cu.keys())});try{const o=await sN(s.startBalanceQuery(e,t));if(Cu.get(n)!==i)return null;if(!Array.isArray(o?.queries)||e&&!o.queries.some(l=>l.id===e))throw new Error(a("余额查询接口返回异常"));return fy++,e||(dy=new Map(o.queries.map(l=>[l.id,l.requestId]))),yI(o.queries),e||iN(new Map(Sn().usageTasks)),bc&&bc(),o}finally{Cu.get(n)===i&&Cu.delete(n),Tr({usageStarting:new Set(Cu.keys())})}}function qSe(e){const t=Sn().usageTasks.get(e.id);if(!t||t.requestId!==e.requestId)return Promise.resolve(null);if(t.status!=="running"){const n=Tg(e.id);return n?.requestId===e.requestId?Promise.resolve(n):!["success","failed","timeout"].includes(t.status)||!bc?Promise.resolve(null):bc().then(async()=>{Tg(e.id)?.requestId!==e.requestId&&await bc();const s=Tg(e.id);return Sn().usageTasks.get(e.id)?.requestId===e.requestId&&s?.requestId===e.requestId?s:null})}return new Promise(n=>{const s=Math.max(1e3,Math.min(195e3,e.deadlineAt-Date.now()+15e3)),i=setTimeout(()=>hy(e.requestId,null),s);aN.set(e.requestId,[...aN.get(e.requestId)||[],{resolve:n,timer:i}])})}async function d8(e){const t=Sn().usageTasks.get(e);if(!(!t||t.status!=="running"))try{const n=await sN(ft().workbuddyDesktop.cancelBalanceQuery(e,t.requestId));if(Sn().usageTasks.get(e)?.requestId!==t.requestId)return;n.cancelled?(fy++,yI([{...t,status:"cancelled"}])):bc&&bc()}catch(n){Ct(a("取消查询失败:{message}",{message:dn(n)}),"err")}}async function GSe(){dy&&await Promise.all([...dy].map(([e,t])=>Sn().usageTasks.get(e)?.requestId===t?d8(e):Promise.resolve()))}function wI(e){fy++;const t=new Map(Sn().usageTasks);for(const n of e){LSe(n),Cu.delete(n);const s=t.get(n);s&&(hy(s.requestId,null),t.set(n,{...s,status:"config_changed"}),s.status==="running"&&ft().workbuddyDesktop?.cancelBalanceQuery?.(n,s.requestId).catch(()=>{}))}Tr({usageStarting:new Set(Cu.keys())}),iN(t)}let Dl=null,oN=null,kI=0,my=null,Rg=0,f8=!1,lN=null;function h8(e){return e.map(t=>[t.id,t.name||"",t.enabled===!1?0:1,t.protocol||"",t.host||"",t.resolved?.protocol||"",t.resolved?.host||"",t.resolved?.port??"",t.port??"",t.resolveError??"",t.usedBy?.length??0,t.usedByServices?.join(",")??""].join(":")).join("|")}function m8(e){return lN!==null&&h8(e)===lN}function p8(e){lN=h8(e)}const SI=new Set;function WSe(e){return SI.add(e),()=>{SI.delete(e)}}function cN(){SI.forEach(e=>e())}function g8(){return Dl}function YSe(){return my}function XSe(){Dl=null,lN=null}function x8(e){Array.isArray(e)&&(Dl=e,kI+=1,my=null,Rg=0,!m8(e)&&(p8(e),cN()))}async function NI(e={}){if(!e.force&&Dl)return Dl;const t=kI;oN||(oN=(async()=>{try{const o=await ft().workbuddyDesktop?.getProxyPool?.();if(!o||typeof o!="object"||!Array.isArray(o.items))throw new Error(a("代理池响应异常({type})",{type:typeof o}));return{items:o.items}}finally{oN=null}})());const s=(await oN).items,i=kI===t||Dl===null;return my=null,!i&&Dl||(Dl=s,m8(s)||(p8(s),cN())),Dl}function QSe(){if(!(Dl||Date.now(){Rg=0}).catch(e=>{my=e instanceof Error?e.message:String(e),cN()})}}async function ZSe(){Rg=0;try{await NI({force:!0})}catch(e){my=e instanceof Error?e.message:String(e),cN()}}let v8=!1;function b8(){if(v8)return;const e=ft().wbApp;if(!e?.getRefreshStatus||!e.subscribeRefresh)return;v8=!0;const t=e.getRefreshStatus,n=()=>{const s=t(),i=Sn();i.listBusy===s.pending&&i.listError===s.error||Tr({listBusy:s.pending,listError:s.error})};e.subscribeRefresh(n),n()}async function y8(e={}){b8();try{const t=ft().wbApp?.refresh;if(!t)throw new Error(a("账号列表刷新不可用,请重新打开页面"));const n=await t();return n&&ft().wbProviders?.refreshCustom?.(),e.feedback&&(n?Ct(a("账号列表已刷新")):Ct(a("刷新账号列表失败:{message}",{message:Sn().listError||a("请求失败")}),"err")),n}catch(t){const n=dn(t);return Tr({listBusy:!1,listError:n}),e.feedback&&Ct(a("刷新账号列表失败:{message}",{message:n}),"err"),!1}}const CI="workbuddy-desktop-accounts-group-sort";let uN=null,AI="",j8=0,w8,k8=0,S8="";function Xo(e){if(!e?.rules||!e.configured||!e.accountOrder||!Array.isArray(e.providerOrder)||e.updatedAtf&&typeof f.on=="boolean"&&(f.key==="credit"&&(f.dir==="soon"||f.dir==="late")||f.key==="balance"&&(f.dir==="high"||f.dir==="low")||f.key==="added"&&(f.dir==="new"||f.dir==="old"))).length!==u.length)){if(!Sn().sorting?.rules[l]){i[l]=u;continue}Xo(await e.saveAccountSorting({provider:l,rules:u,onlyIfUnset:!0}))}const o=Object.keys(i).length===0;return o?localStorage.removeItem(CI):localStorage.setItem(CI,JSON.stringify(i)),o}function N8(){const e=Yd()?.sorting;e&&e!==w8&&!Sn().sortBusy&&(w8=e,Xo(e));const t=JSON.stringify(Sn().sorting?.providerOrder||[]);Sn().sortBusy||!uN&&Sn().sorting&&AI!==t&&Date.now()>=j8&&(AI=t,uN=JSe().then(n=>{n||(uN=null)}).catch(n=>{uN=null,AI="",j8=Date.now()+6e4,Ct(a("排序设置迁移失败:{message}",{message:dn(n)}),"err")}))}async function eNe(){const e=ft().workbuddyDesktop;if(!(!e?.getAccountSorting||Sn().sortBusy))try{Xo(await e.getAccountSorting())}catch(t){Ct(a("读取消耗排序失败:{message}",{message:dn(t)}),"err")}}async function EI(e,t){if(!e||Sn().sortBusy)return;const n=ft().workbuddyDesktop;if(!n?.saveAccountSorting){Ct(a("账号排序接口不可用,请确认网关与界面已更新"),"err");return}const s=Sn().sorting?.balanceSortStates!==void 0;if(!s&&t?.some(o=>o.key==="balance"&&o.on)){Ct(a("当前网关不支持余额排序,请先更新网关"),"err");return}const i=s?t:t?.filter(o=>o.key!=="balance")??null;Tr({sortBusy:!0});try{const o=await n.saveAccountSorting({provider:e,rules:i});if(!o?.rules||!o.accountOrder||!Array.isArray(o.providerOrder))throw new Error(a("保存响应不完整,请刷新当前配置确认结果"));Xo(o),window.dispatchEvent(new CustomEvent("wb:account-sorting",{detail:o}));try{await ft().wbApp?.refresh?.()}catch(l){Ct(a("排序已保存,但列表刷新失败:{message}",{message:dn(l)}),"err")}}catch(o){Ct(a("排序未保存:{message}",{message:dn(o)}),"err")}finally{Tr({sortBusy:!1})}}function Wh(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function Xd(e,t){if(e===t)return!0;if(Array.isArray(e)&&Array.isArray(t))return e.length===t.length&&e.every((i,o)=>Xd(i,t[o]));const n=Wh(e),s=Wh(t);return!!(n&&s&&Object.keys(n).length===Object.keys(s).length&&Object.entries(n).every(([i,o])=>Object.hasOwn(s,i)&&Xd(o,s[i])))}function C8(e){return e?{reset:e.reset||"fixed",seconds:e.seconds||0,startsAt:e.startsAt||0,endsAt:e.endsAt||0,utcOffsetMinutes:e.utcOffsetMinutes??null}:null}function tNe(e){return e?{id:e.id,label:e.label,provider:e.provider||"",channel:e.channel||"",planId:e.planId||"",planName:e.planName||"",models:e.models||[],unit:e.unit||"",remaining:null,total:null,used:null,remainingPercent:null,startsAt:e.startsAt||0,endsAt:e.endsAt||0,resetsAt:0,window:C8(e.window),unlimited:e.unlimited===!0,localEstimate:e.localEstimate===!0,localOnly:e.localOnly===!0}:null}function Pg(e){return e.map(t=>({enabled:t.enabled!==!1,action:t.action||"skip",target:t.target||"models",conditions:t.conditions.map((n,s)=>({join:s===0?"or":n.join||"or",sourceId:n.sourceId.trim(),source:tNe(n.source),models:[...new Set(n.models.map(i=>i.trim()).filter(Boolean))].sort(),metric:n.metric,comparison:n.comparison,threshold:n.threshold,window:C8(n.window)}))}))}function dN(e,t){return Object.entries(t).every(([n,s])=>{if(n==="proxy"){const i=e.proxy?.config||e.proxy;if(s===null)return!i||i.source==="direct";const o=Wh(s),l=Wh(i);return!!(o&&l&&Object.entries(o).every(([u,d])=>Xd(d,l[u])))}if(n==="maxConcurrent"){const i=Number(s),o=e.provider==="codearts"?i===0?3:Math.min(i,64):i;return e.maxConcurrent===o}if(n==="limiterGroups")return Array.isArray(s)&&Array.isArray(e.limiterGroups)&&Xd(Pg(e.limiterGroups),Pg(s));if(n==="balanceToken")return e.hasBalanceToken===(s!==null&&s!=="");if(n==="apiKey")return e.hasApiKey===(s!==null&&s!=="");if(n==="baseUrl"){const i=typeof s=="string"?s.trim().replace(/\/+$/,""):"";return i?String(e.baseUrl||"").replace(/\/+$/,"")===i:!e.baseUrl}if(n==="balanceQuery"){const i=Wh(s),o=Wh(e.balanceQuery);return!!(i&&o&&Object.entries(i).every(([l,u])=>{const f={accessToken:"hasAccessToken",password:"hasPassword",token:"hasToken"}[l];return f?o[f]===(u!==null&&u!==""):Xd(o[l],u)}))}return Xd(e[n],s)})}async function Yh(e,t){const n=ft().workbuddyDesktop;if(!n?.updateAccount)throw new Error(a("账号更新接口不可用,请重新打开页面"));const s=ft().wbApp?.getState?.()?.accounts?.accounts?.find(u=>u.id===e),i=await n.updateAccount(e,t);i?.changes?.length&&["proxy","baseUrl","balanceToken","apiKey","noAuth","balanceQuery","zcodePlan","userAgent"].some(u=>{if(!Object.prototype.hasOwnProperty.call(t,u))return!1;if(u==="balanceQuery"&&s){const d=Wh(t.balanceQuery);return!!(d&&["accessToken","password","token"].some(m=>Object.prototype.hasOwnProperty.call(d,m))||!dN(s,{balanceQuery:t.balanceQuery}))}return s&&!["balanceToken","apiKey"].includes(u)?!dN(s,{[u]:t[u]}):!0})&&wI([e]);const l=i?.account;if(!l||l.id!==e||s&&l.provider!==s.provider||!dN(l,t))throw new Error(a("账号更新结果未确认,请刷新后核对设置"));return l}function nNe(e){switch(e.action){case"enable":return{enabled:!0};case"disable":return{enabled:!1};case"proxy":return{proxy:e.proxy};case"concurrency":return{maxConcurrent:e.maxConcurrent};case"usageQuery":return{usageQuery:e.usageQuery};default:return{}}}function TI(e,t){if(!e||!Array.isArray(t.action==="remove"?e.removed:e.ok))throw new Error(a("批量操作未返回结果,请刷新后确认状态"));const n=t.action==="remove"?e.removed||[]:e.ok||[],s=new Set(t.ids),i=new Set;if([...n,...e.failed||[],...e.skipped||[]].some(d=>!d.id||!s.has(d.id)||i.has(d.id)?!0:(i.add(d.id),!1))||i.size!==s.size)throw new Error(a("批量操作结果不完整,请刷新后核对所选账号"));const l=e.list?.accounts;if(!Array.isArray(l))throw new Error(a("批量操作结果不完整,请刷新后核对所选账号"));const u=nNe(t);if(n.some(d=>{const f=l.find(g=>g.id===d.id);if(t.action==="remove")return!!f;if(!f||!dN(f,u))return!0;if(t.action!=="limiters")return!1;const m=f.limiterGroups;if(!Array.isArray(m))return!0;switch(t.limiterMode){case"append":return Pg(t.limiterGroups||[]).some(g=>!Pg(m).some(v=>Xd(v,g)));case"replace":return!Xd(Pg(m),Pg(t.limiterGroups||[]));case"enable":return m.some(g=>g.enabled!==!0);case"disable":return m.some(g=>g.enabled!==!1);case"clear":return m.length!==0;default:return!0}}))throw new Error(a("批量操作结果未确认,请刷新后核对设置"));if(t.action==="proxy"||t.action==="remove"){const d=t.action==="remove"?e.removed||[]:(e.ok||[]).filter(f=>f.changes?.length);wI(d.map(f=>f.id).filter(Boolean))}return e}async function Qo(){const e=ft().wbApp;if(!e?.refresh)throw new Error(a("账号列表刷新接口不可用,请重新打开页面"));if(await e.refresh()!==!0)throw new Error(e.getRefreshStatus?.().error||a("账号列表刷新失败"))}const py=new Map;let A8=0,E8=!1,fN;KSe(Ig);function Xh(e){return e?py.get(e.id)||[]:[]}function rNe(e){const t=Number(e?.tokenAt)||0;if(!t||t===A8)return!1;const n=e?.tokenUsage;if(!n||typeof n!="object")return!1;A8=t;const s=new Map;for(const[o,l]of Object.entries(n)){if(!Array.isArray(l))continue;const u=[];for(const d of l){if(!d||typeof d!="object")continue;const f=Number(d.kind),m=Number(d.windowStart),g=Number(d.used);!Number.isFinite(f)||f<0||!Number.isFinite(m)||m<=0||!Number.isFinite(g)||g<0||u.push({kind:f,windowStart:m,used:g})}s.set(o,u)}const i=s.size!==py.size||[...s].some(([o,l])=>{const u=py.get(o);return!u||u.length!==l.length||l.some((d,f)=>d.used!==u[f]?.used||d.windowStart!==u[f]?.windowStart)});py.clear();for(const[o,l]of s)py.set(o,l);return i}function sNe(){return Ml().filter(e=>Si(e)&&e.available!==!1)}function T8(e){const t=Array.isArray(e?.results)?e.results:[],n=Number(e?.at)||Date.now();let s=0;for(const i of t)i&&$Se(i,n)&&(s++,i.code==="refresh_token_expired"&&ft().wbApp?.refresh?.());return s&&(nN(),ft().wbApp?.renderTopbarStatus?.()),s}function aNe(e){if(!aI(e)||e.needsRelogin)return!1;const t=po(e);return!t||typeof t!="object"||Array.isArray(t)||Og(t)?!1:!Array.isArray(t.credits)}async function iNe(){if(!E8){E8=!0;for(const e of Ml().filter(aNe))try{await OI(e.id,!1)}catch{}}}function Ig(){return fN||(fN=oNe().finally(()=>{fN=void 0})),fN}async function oNe(){try{const e=c8(),t=await sN(Promise.resolve(ft().workbuddyDesktop?.getBalancesSnapshot?.()),5e3);if(e!==c8())return!1;const n=Ike(t),s=!Sn().sortBusy&&Xo(t?.sorting),i=rNe(t)||n||s;i&&(nN(),ft().wbApp?.renderTopbarStatus?.());const o=T8(t);return yI(t?.queries),o?(iNe(),!0):i}catch{return!1}}async function OI(e,t=!0){const n=await jI(e||void 0,t);if(!n)return{results:[]};const s=await Promise.all(n.queries.map(qSe));return eNe(),{results:s.filter(i=>i!==null)}}async function O8(){if(!Sn().usageStarting.has("*")){if(!sNe().length){Ct(a("暂无可查询余额的账号"),"err");return}try{await jI(void 0,!0)}catch(e){Ct(a("余额查询失败:{message}",{message:dn(e)}),"err")}}}async function lNe(e){try{if(!(await OI(e)).results.length)return;const n=DSe().get(e),s=Og(n),i=lq(n,a);s?.notConfigured?Ct(s.message,"ok"):s?Ct(a("余额查询失败:{message}",{message:s.message}),"err"):i?Ct(i.detail,"ok"):Ct(a("✅ 已更新余额"))}catch(t){Ct(a("余额查询失败:{message}",{message:dn(t)}),"err")}}async function gy(e){const t=e?_l(e):null;if(!(e&&(!t||!Si(t)||t.needsRelogin)))try{await jI(e,!1)}catch{}}function Mg(e){if(!_l(e)){Ct(a("账号不存在,请刷新后重试"),"err");return}Tr({dialog:{kind:"settings",id:e}})}function xy(){Tr({dialog:null})}function RI(e,t="enable"){const n=(Array.isArray(e)?e:[]).filter(s=>_l(s));if(!n.length){Ct(a("请先勾选要操作的账号"),"err");return}Tr({dialog:{kind:"batch",ids:n,action:t}})}function R8(e){e&&Tr({dialog:{kind:"group",provider:e}})}function cNe(e){let t=FSe(e);const n=new Map(Sn().connections);for(const o of[...n.keys()])e.has(o)||(n.delete(o),t=!0);const s=new Set(Sn().usageInflight);for(const o of[...s])e.has(o)||(s.delete(o),t=!0);const i=new Set(Sn().selected);for(const o of[...i])e.has(o)||(i.delete(o),t=!0);t&&Tr({connections:n,usageInflight:s,selected:i})}const uNe=2e3;function P8(e){return Sn().connections.get(e)||0}async function I8(){try{const e=await ft().workbuddyDesktop?.getAccountConnections?.(),t=e?.counts&&typeof e.counts=="object"?e.counts:{},n=new Map;for(const[s,i]of Object.entries(t)){const o=Number(i)||0;o>0&&n.set(s,o)}return dNe(n,Sn().connections)||Tr({connections:n}),!0}catch{return!1}}function dNe(e,t){if(e.size!==t.size)return!1;for(const[n,s]of e)if(t.get(n)!==s)return!1;return!0}let M8=null;function fNe(){M8||(M8=setInterval(()=>{document.hidden||ft().wbApp?.currentPage!=="accounts"||I8()},uNe))}async function _8(e,t){try{await Yh(e,{enabled:t}),Ct(a(t?"✅ 已启用":"✅ 已禁用"));try{await Qo()}catch(n){Ct(a("账号已保存,但列表刷新失败:{error}",{error:dn(n)}),"err")}}catch(n){Ct(a("操作失败:{message}",{message:dn(n)}),"err"),ft().wbApp?.refresh?.()}}async function D8(e,t){if(!e.length)return!1;try{return await ft().workbuddyDesktop?.reorderAccounts?.(e),Ct(t?a("✅ 已保存:{note}",{note:t}):a("✅ 顺序已保存")),await ft().wbApp?.refresh?.(),!0}catch(n){return Ct(a("顺序未保存:{message}",{message:dn(n)}),"err"),ft().wbApp?.refresh?.(),!1}}async function L8(e,t){if(e.length)try{const n=ft().workbuddyDesktop;if(!n?.batchAccounts)throw new Error(a("批量操作接口不可用,请重新打开页面"));const s={action:t?"enable":"disable",ids:e},i=TI(await n.batchAccounts(s),s),o=i.ok?.length||0,l=i.ok?.filter(d=>d.changes?.length).length||0,u=i.failed?.length||0;u||i.skipped?.length?Ct(a("{verb}完成:成功 {ok} 个,未变更 {unchanged} 个,跳过 {skip} 个,失败 {fail} 个",{verb:a(t?"启用":"禁用"),ok:l,unchanged:o-l,skip:i.skipped?.length||0,fail:u}),u?"err":"ok"):Ct(t?a("✅ 已启用 {n} 个账号",{n:o}):a("✅ 已禁用 {n} 个账号",{n:o}));try{await Qo()}catch(d){Ct(a("批量操作已保存,但列表刷新失败:{error}",{error:dn(d)}),"err")}}catch(n){Ct(a("操作失败:{message}",{message:dn(n)}),"err"),ft().wbApp?.refresh?.()}}async function hNe(e,t){try{await ft().workbuddyDesktop?.clearRateLimits?.(e,t||null),Ct(t?a("✅ 已清除 {model} 的限流标记",{model:t}):a("✅ 已清除该账号全部限流标记")),await ft().wbApp?.refresh?.()}catch(n){Ct(a("清除失败:{message}",{message:dn(n)}),"err")}}async function mNe(e,t,n){if(typeof t!="string")return;if(t===$8){Mg(e);return}if(t===hN||t===n)return;const s=t.startsWith(vc)?t.slice(vc.length).trim():"";if(!(t!==""&&!s)){if(s){const i=(g8()||[]).find(o=>o.id===s);if(i&&i.enabled===!1){Ct(a("「{name}」已在「网络代理」页禁用,请先启用它或换一条",{name:i.name||s}),"err");return}}try{await Yh(e,{proxy:s?{source:"pool",proxyId:s}:null}),Ct(`✅ ${a("代理已更新")}`)}catch(i){Ct(a("保存失败:{message}",{message:dn(i)}),"err")}finally{try{await Qo()}catch(i){Ct(a("刷新账号列表失败:{message}",{message:dn(i)}),"err")}}}}const hN="__proxy_custom__",$8="__proxy_custom_edit__";function pNe(e,t,n=1){return{seat:t.get(e.id)||{position:1,total:1},rank:n,picked:ASe(e.id),usageEntry:po(e),connections:P8(e.id)}}const gNe={DEFAULT_PROVIDER_ID:ZP,RACCOON_PROVIDER_ID:Bke,providerOf:tn,providerFeatures:Ga,providerSummaries:Cq,identifierOf:JS,tokenExpiryOf:Eq,supportsUsage:Si,isDesktopAccount:oy,supportsChat:Iq,byPriorityOrder:eN,typeLabel:sSe,isEnabled:Ni,isRateLimited:ly,isLimited:e=>cy(e,e?po(e):void 0,Xh(e)),accountEdition:Mq,matchEnabled:oI,matchLimit:Fq,visibleAccounts:lSe,filterCounts:Hq,positionMap:cI,activeLimits:lI,editionSuffix:fSe,formatResetText:dI};function xNe(){b8(),window.wbAccountsView={render:()=>{N8(),nN()},refreshList:y8,refreshCaches:cNe,invalidateUsageTasks:wI,syncConnections:I8,refreshProxyPool:ZSe,applyBalances:T8,syncBalancesSnapshot:Ig,queryUsageFor:OI,queryAllUsage:O8,refreshUsageAfterCheckin:gy,supportsUsage:Si,isDesktopAccount:oy,isEnabled:Ni,isRateLimited:ly},window.wbAccountsModel=gNe,window.wbAccountPanel={open:Mg,close:xy,openBatch:RI,closeBatch:xy,syncAddProvider:()=>ft().wbAccountAddForms?.syncAddProvider?.(),invalidate:()=>{XSe()}}}async function vNe(e,t){const n=ft().workbuddyDesktop;if(!n?.refreshAccountToken)throw new Error(a("Token 刷新接口不可用,请重新打开页面"));const s=[...new Set(e)],i=[],o=[],l=[];for(const[u,d]of s.entries()){const f=_l(d),m=Ci(f)||d;t({completed:u,total:s.length,name:m});try{if(!f)throw new Error(a("账号不存在,请刷新后重试"));const g=GP(f);if(g)l.push({id:d,name:m,reason:g});else{const v=await n.refreshAccountToken(d),b=v?.list?.accounts?.find(y=>y.id===d);if(v?.refreshedId!==d||!b||b.needsRelogin===!0||tn(b)!==tn(f))throw new Error(a("Token 刷新结果未确认,请刷新后核对账号状态"));i.push({id:d,name:m})}}catch(g){o.push({id:d,error:dn(g)})}t({completed:u+1,total:s.length,name:m})}return{ok:i,failed:o,skipped:l}}const z8=[{value:"fixed",label:()=>a("固定周期")},{value:"rolling",label:()=>a("滚动窗口")},{value:"daily",label:()=>a("自然日")},{value:"weekly",label:()=>a("自然周")},{value:"monthly",label:()=>a("自然月")},{value:"total",label:()=>a("生效至到期累计(不自动回满)")}];function bNe(){return{join:"or",sourceId:"local",models:[],metric:"tokens",comparison:"gte",threshold:5e5,window:{reset:"daily",utcOffsetMinutes:null}}}function B8(e){if(!e||!Number.isFinite(e))return"";const t=new Date(e);return new Date(e-t.getTimezoneOffset()*6e4).toISOString().slice(0,16)}function F8(e){const t=e.metric==="tokens"&&e.threshold%1e8===0?"yi":e.metric==="tokens"&&e.threshold%1e4===0?"wan":"unit";return{condition:{...structuredClone(e),window:e.window||e.source?.window,sourceId:e.sourceId||(e.metric==="tokens"||e.metric==="requests"?"local":"account")},unit:t,threshold:String(e.threshold/(t==="yi"?1e8:t==="wan"?1e4:1)),period:String(((e.window||e.source?.window)?.seconds||3600)/3600),anchor:B8((e.window||e.source?.window)?.startsAt),end:B8((e.window||e.source?.window)?.endsAt)}}function U8(e){if(!e||e.id==="local"||e.localOnly)return["tokens","requests"];if(e.id==="account")return["remaining"];const t=[];return e.unlimited||(e.remaining!==null&&e.remaining!==void 0&&t.push("remaining"),e.used!==null&&e.used!==void 0&&t.push("used"),(e.remainingPercent!==null&&e.remainingPercent!==void 0||(e.total||0)>0)&&t.push("remaining_percent","used_percent")),e.window&&t.push("tokens","requests"),t.length?t:["tokens","requests"]}function yNe({account:e,value:t,allowBalance:n=!0,onSave:s,onClose:i}){const[o,l]=p.useState(()=>F8(t)),[u,d]=p.useState(""),f=o.condition,m=HP(e).filter(M=>(n||M.id==="local")&&(tn(e)!=="codearts"||M.id==="account"||Fh(M.unit||"")));f.source&&!m.some(M=>M.id===f.sourceId)&&m.push(f.source);const g=m.find(M=>M.id===f.sourceId),v=m.find(M=>M.id==="account"&&Fh(M.unit||"")),b=[...new Map(m.filter(M=>M.planId).map(M=>[M.planId,M.planName||M.planId])).entries()],y=g?.planId||"",k=m.filter(M=>M.id==="account"||(y?M.planId===y:!M.planId)),j=f.metric==="tokens"||f.metric==="requests",S=Number(o.threshold)*(o.unit==="yi"?1e8:o.unit==="wan"?1e4:1),N=f.metric==="tokens"&&o.unit!=="unit"&&o.threshold.trim()&&Number.isSafeInteger(S)&&S>0?S.toLocaleString("en-US"):"",C=v?.unlimited?a("不限"):v?.remaining==null?a("暂无读数"):`${Ln(v.remaining)} ${a("积分")}`,T=g?.models?.length?g.models.map(M=>({value:M,label:M})):Mke(e);for(const M of f.models)T.some(_=>_.value===M)||T.push({value:M,label:M});const R=[...new Set([...U8(g),f.metric])].filter(M=>tn(e)!=="codearts"||M!=="tokens"&&M!=="requests"),O=M=>{d(""),l(_=>({..._,condition:{..._.condition,...M}}))},A=M=>{const _=m.find(D=>D.id===M);if(!_)return;const L=_.localOnly||_.localEstimate?"tokens":U8(_)[0],$=L==="tokens"?_.total||5e5:L.endsWith("percent")?5:1;l(F8({...f,sourceId:M,source:mq(_),models:_.models?.length===1?_.models.slice():[],metric:L,comparison:L.startsWith("remaining")?"lte":"gte",threshold:$,window:_.window||{reset:"daily",utcOffsetMinutes:null}})),d("")},P=()=>{const M=Number(o.threshold),_=f.metric==="tokens"?Math.round(M*(o.unit==="yi"?1e8:o.unit==="wan"?1e4:1)):M;if(!o.threshold.trim()||!Number.isFinite(_)||_<0){d(a("限制阈值必须是非负有限数字"));return}if(j&&(!Number.isSafeInteger(_)||_<=0)){d(a("本地消耗上限必须是大于 0 的安全整数"));return}if(f.metric.endsWith("percent")&&_>100){d(a("百分比阈值必须在 0~100 之间"));return}let L=f.window;if(j){if(L={...L,reset:L?.reset||"daily"},L.reset==="fixed"||L.reset==="rolling"){const $=Math.round(Number(o.period)*3600);if(!Number.isFinite($)||$<60||$>2678400){d(a("统计窗口必须是 1 分钟~31 天"));return}L.seconds=$}if((L.reset==="total"||L.reset==="fixed")&&(L.startsAt=o.anchor?new Date(o.anchor).getTime():0,L.endsAt=o.end?new Date(o.end).getTime():0,!Number.isFinite(L.startsAt)||!Number.isFinite(L.endsAt)||L.endsAt>0&&L.endsAt<=L.startsAt)){d(a("统计结束时间必须晚于开始时间"));return}}s({...f,threshold:_,window:L,source:g&&g.id!=="account"&&g.id!=="local"?mq(g):null})};return r.jsx(at,{open:!0,onOpenChange:M=>{M||i()},children:r.jsxs(it,{className:"w-[min(680px,calc(100vw-48px))]",showCloseButton:!0,overlayForceRender:!0,children:[r.jsx(ot,{children:r.jsx(st,{children:a("编辑限制条件")})}),r.jsxs(lt,{className:"space-y-3",children:[b.length?r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{children:a("套餐")}),r.jsxs(Pt,{value:y,onValueChange:M=>{const _=m.find(L=>M?L.planId===M:!L.planId);_&&A(_.id)},children:[r.jsx(Mt,{className:"min-w-0 flex-1",children:r.jsx(It,{children:b.find(([M])=>M===y)?.[1]||a("通用额度/本地保护")})}),r.jsxs(_t,{children:[r.jsx(Ze,{value:"",children:a("通用额度/本地保护")}),b.map(([M,_])=>r.jsx(Ze,{value:M,children:_},M))]})]})]}):null,r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{children:a("额度来源")}),r.jsxs(Pt,{value:f.sourceId||"account",onValueChange:M=>{M&&A(M)},children:[r.jsx(Mt,{className:"min-w-0 flex-1",children:r.jsx(It,{children:KP(g,f.sourceId||"account")})}),r.jsx(_t,{children:k.map(M=>r.jsx(Ze,{value:M.id,children:KP(M)},M.id))})]})]}),v?r.jsxs(kP,{className:"space-y-2",children:[r.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[r.jsx("span",{className:"text-xs text-subtle",children:a("总积分")}),r.jsx("span",{className:"text-[13px] font-semibold tabular-nums",children:C}),r.jsx(B,{variant:"outline",size:"sm",className:"ml-auto",disabled:g?.id===v.id&&f.metric==="remaining",onClick:()=>A(v.id),children:a("按总积分设置限制")})]}),r.jsx("p",{className:"detail",children:a("总积分是当前可用积分的汇总,与余额列一致;不重复累加汇总行,不包含 Token、次数或其他单位的额度。")})]}):null,r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{children:a("模型范围")}),r.jsx(xc,{value:f.models,options:T,onValueChange:M=>O({models:M}),placeholder:g?.models?.length?a("该额度中的全部模型"):a("全部模型"),className:"min-w-0 flex-1","aria-label":a("模型范围")})]}),r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{children:a("限制指标")}),r.jsxs(Pt,{value:f.metric,onValueChange:M=>{M&&(O({metric:M,comparison:M.startsWith("remaining")?"lte":"gte"}),l(_=>({..._,threshold:"",unit:"unit"})))},children:[r.jsx(Mt,{className:"min-w-[190px]",children:r.jsx(It,{children:qP(f.metric)})}),r.jsx(_t,{children:R.map(M=>r.jsx(Ze,{value:M,children:qP(M)},M))})]})]}),r.jsxs(zh,{orientation:"horizontal",className:"field-row",children:[r.jsx("span",{className:"text-[12.5px] text-subtle",children:a("触发条件")}),r.jsxs(Pt,{value:f.comparison,onValueChange:M=>O({comparison:M}),children:[r.jsx(Mt,{className:"w-[92px]","aria-label":a("触发条件"),children:r.jsx(It,{children:f.comparison==="lt"?"<":f.comparison==="lte"?"≤":"≥"})}),r.jsxs(_t,{children:[r.jsx(Ze,{value:"lt",children:"<"}),r.jsx(Ze,{value:"lte",children:"≤"}),r.jsx(Ze,{value:"gte",children:"≥"})]})]}),r.jsx(ze,{type:"number",min:0,className:"max-w-[160px]",value:o.threshold,onChange:M=>l({...o,threshold:M.currentTarget.value}),placeholder:a("阈值"),"aria-label":a("阈值")}),f.metric==="tokens"?r.jsxs(Pt,{value:o.unit,onValueChange:M=>l({...o,unit:M}),children:[r.jsx(Mt,{className:"w-[84px]","aria-label":a("Token 单位"),children:r.jsx(It,{children:o.unit==="yi"?a("亿"):o.unit==="wan"?a("万"):a("个")})}),r.jsxs(_t,{children:[r.jsx(Ze,{value:"yi",children:a("亿")}),r.jsx(Ze,{value:"wan",children:a("万")}),r.jsx(Ze,{value:"unit",children:a("个")})]})]}):r.jsx("span",{className:"detail",children:f.metric.endsWith("percent")?"%":f.metric==="requests"?a("次"):mo(g?.unit||"",a)})]}),N?r.jsx("p",{className:"detail",children:a("实际阈值:{value} Token",{value:N})}):null,j?r.jsxs(r.Fragment,{children:[r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{children:a("统计周期")}),r.jsxs(Pt,{value:f.window?.reset||"daily",onValueChange:M=>O({window:{...f.window,reset:M}}),children:[r.jsx(Mt,{className:"min-w-0 flex-1",children:r.jsx(It,{children:z8.find(M=>M.value===(f.window?.reset||"daily")).label()})}),r.jsx(_t,{children:z8.map(M=>r.jsx(Ze,{value:M.value,children:M.label()},M.value))})]})]}),f.window?.reset==="fixed"||f.window?.reset==="rolling"?r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{children:a("窗口长度")}),r.jsx(ze,{type:"number",min:1/60,max:744,step:"any",value:o.period,className:"max-w-[130px]",onChange:M=>l({...o,period:M.currentTarget.value})}),r.jsx("span",{className:"detail",children:a("小时")})]}):null,f.window?.reset==="total"||f.window?.reset==="fixed"?r.jsxs(r.Fragment,{children:[r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{children:a("累计起点")}),r.jsx(ze,{type:"datetime-local",value:o.anchor,onChange:M=>l({...o,anchor:M.currentTarget.value}),className:"min-w-0 flex-1"})]}),r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{children:a("到期时间")}),r.jsx(ze,{type:"datetime-local",value:o.end,onChange:M=>l({...o,end:M.currentTarget.value}),className:"min-w-0 flex-1"})]})]}):null,["daily","weekly","monthly"].includes(f.window?.reset||"daily")?r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{children:a("重置时区")}),r.jsxs(Pt,{value:f.window?.utcOffsetMinutes===480?"beijing":f.window?.utcOffsetMinutes===0?"utc":"local",onValueChange:M=>O({window:{...f.window,reset:f.window?.reset||"daily",utcOffsetMinutes:M==="beijing"?480:M==="utc"?0:null}}),children:[r.jsx(Mt,{className:"min-w-[190px]",children:r.jsx(It,{children:f.window?.utcOffsetMinutes===480?a("北京时间(UTC+8)"):f.window?.utcOffsetMinutes===0?"UTC":a("服务器本地时区")})}),r.jsxs(_t,{children:[r.jsx(Ze,{value:"local",children:a("服务器本地时区")}),r.jsx(Ze,{value:"beijing",children:a("北京时间(UTC+8)")}),r.jsx(Ze,{value:"utc",children:"UTC"})]})]})]}):null]}):null,r.jsx("p",{className:"detail",children:a(j?"本地统计只包含经过本网关的请求,不等于上游账单;清理请求日志不会清零。套餐选择用于限定保护范围,不会强制上游扣指定套餐。":"按上游额度查询的读数判定;模型共用同一个额度池时,选择模型不会拆分该池余额。")}),j&&T.length>0?r.jsx("p",{className:"detail",children:a("选中多个模型时,每个模型单独累计、单独比较阈值;不合并用量。")}):null,g?.localEstimate?r.jsx("p",{className:"detail text-warning",children:a("上游没有提供此额度的分桶用量,当前使用本地估算保护;在其他客户端产生的消耗不会计入。")}):null,g?.channel&&g.channel!==String(e?.quotaChannel||e?.zcodePlan||"")?r.jsx("p",{className:"detail text-warning",children:a("此额度不属于账号当前使用的通道,切换到对应通道后才参与判定。")}):null,u?r.jsx("p",{className:"detail text-destructive",children:u}):null]}),r.jsxs(pt,{children:[r.jsx(B,{variant:"outline",onClick:i,children:a("取消")}),r.jsx(B,{onClick:P,children:a("保存条件")})]})]})})}function H8({account:e,draft:t,onChange:n,allowBalance:s=!0}){const[i,o]=p.useState(null),[l,u]=p.useState(!1);p.useEffect(()=>{Ig()},[e?.id]);const d=(k,j)=>{n(t.map((S,N)=>N===k?{...S,...j}:S))},f=()=>tn(e)==="codearts"?{join:"or",sourceId:"account",models:[],metric:"remaining",comparison:"lt",threshold:1}:bNe(),m=()=>o({group:-1,condition:-1,value:f()}),g=k=>{if(i){if(i.group<0)n([...t,{enabled:!0,action:"skip",target:"models",conditions:[k]}]);else{const S=t[i.group].conditions.slice();i.condition<0?S.push(k):S[i.condition]=k,d(i.group,{conditions:S})}o(null)}},v=async()=>{if(!(!e||l)){u(!0);try{await gy(e.id),await Ig()}finally{u(!1)}}},b=VP(e),y=e?sy(e,Hh(e)):[];return r.jsxs("div",{className:"space-y-3",children:[r.jsxs("div",{className:"acct-limiter-toolbar flex flex-wrap items-center gap-2",children:[r.jsx(B,{variant:"outline",onClick:m,children:a("+ 添加限制")}),e&&s?r.jsx(B,{variant:"ghost",disabled:l,onClick:()=>{v()},children:a(l?"查询中…":"刷新套餐与额度")}):null]}),r.jsx("p",{className:"detail acct-limiter-lead",children:a("每组共用一个触发动作;第二条条件起可选择「与/或」。与优先于或,下面会显示明确分组。各条件组独立生效。")}),t.length?null:r.jsx("p",{className:"detail acct-limiter-lead",children:a("还没有条件组:账号照常参与转发,不设置额度保护。")}),t.map((k,j)=>{const S=JSON.stringify(k)===JSON.stringify(y[j])?b[j]:void 0;return r.jsxs("div",{className:"acct-limiter-group rounded-lg border border-hairline p-3 space-y-2",children:[r.jsxs("div",{className:"acct-limiter-head flex flex-wrap items-center gap-2",children:[r.jsx(St,{checked:k.enabled,onCheckedChange:N=>d(j,{enabled:N}),"aria-label":a("启用该规则")}),r.jsx("span",{className:"text-[13px] font-medium",children:a("条件组 {n}",{n:j+1})}),S?r.jsx(Ee,{shape:"tag",variant:k.enabled?S.hit?"warning":"success":"secondary",children:k.enabled?S.hit?a("已触发"):a("未触发"):a("已停用")}):null,r.jsx("div",{className:"flex-1"}),r.jsx(B,{variant:"ghost",size:"sm",onClick:()=>n(t.filter((N,C)=>C!==j)),children:a("删除组")})]}),k.conditions.map((N,C)=>r.jsxs("div",{className:"acct-limiter-condition flex flex-wrap items-center gap-2 rounded-md bg-control p-2",children:[C>0?r.jsxs(Pt,{value:N.join,onValueChange:T=>d(j,{conditions:k.conditions.map((R,O)=>O===C?{...R,join:T}:R)}),children:[r.jsx(Mt,{className:"w-[78px]",children:r.jsx(It,{children:N.join==="and"?a("与"):a("或")})}),r.jsxs(_t,{children:[r.jsx(Ze,{value:"and",children:a("与")}),r.jsx(Ze,{value:"or",children:a("或")})]})]}):r.jsx("span",{className:"text-xs text-muted-foreground",children:a("当")}),r.jsxs("div",{className:"min-w-0 flex-1 text-xs",children:[r.jsx("div",{className:"break-words",children:pq(N,e)}),S?r.jsx("div",{className:"text-muted-foreground mt-1",children:a("当前:{value}",{value:_ke(S.conditions[C],N,e)})}):null]}),r.jsx(B,{variant:"ghost",size:"xs",onClick:()=>o({group:j,condition:C,value:N}),children:a("编辑")}),r.jsx(B,{variant:"ghost",size:"xs",disabled:k.conditions.length===1,onClick:()=>d(j,{conditions:k.conditions.filter((T,R)=>R!==C).map((T,R)=>R===0?{...T,join:"or"}:T)}),children:a("删除")})]},C)),r.jsx(B,{variant:"ghost",size:"sm",onClick:()=>o({group:j,condition:-1,value:f()}),children:a("+ 添加条件")}),r.jsxs(zh,{orientation:"horizontal",className:"field-row acct-limiter-actions",children:[r.jsx(Ae,{children:a("触发动作")}),r.jsxs(Pt,{value:k.action,onValueChange:N=>d(j,{action:N}),children:[r.jsx(Mt,{className:"min-w-[190px]","aria-label":a("触发动作"),children:r.jsx(It,{children:k.action==="disable"?a("禁用整个账号(手动恢复)"):a("跳过(自动恢复)")})}),r.jsxs(_t,{children:[r.jsx(Ze,{value:"skip",children:a("跳过(自动恢复)")}),r.jsx(Ze,{value:"disable",children:a("禁用整个账号(手动恢复)")})]})]}),k.action==="skip"?r.jsxs(Pt,{value:k.target,onValueChange:N=>d(j,{target:N}),children:[r.jsx(Mt,{className:"min-w-[170px]","aria-label":a("模型范围"),children:r.jsx(It,{children:k.target==="account"?a("整个账号"):a("命中条件的模型")})}),r.jsxs(_t,{children:[r.jsx(Ze,{value:"models",children:a("命中条件的模型")}),r.jsx(Ze,{value:"account",children:a("整个账号")})]})]}):null]}),r.jsx("p",{className:"detail break-words acct-limiter-expression",children:Lke(k.conditions,e)})]},j)}),e?null:r.jsx("p",{className:"detail",children:a("跨账号批量配置仅支持通用条件;套餐实例不能直接复制到其他账号。")}),i?r.jsx(yNe,{account:e,value:i.value,allowBalance:s,onSave:g,onClose:()=>o(null)},`${i.group}:${i.condition}`):null]})}function jNe(e,t){const n=sy(e,Hh(e));return JSON.stringify(t)===JSON.stringify(n)?null:{patch:{limiterGroups:t}}}function V8(e){return structuredClone(sy(e,Hh(e)))}const wNe={seconds:1,minutes:60,hours:3600};function kNe(e){return e>0&&e%3600===0?{value:String(e/3600),unit:"hours"}:e>0&&e%60===0?{value:String(e/60),unit:"minutes"}:e>0?{value:String(e),unit:"seconds"}:{value:"5",unit:"minutes"}}function PI(e){const{enabled:t,interval:n,retries:s,timeoutSeconds:i}=Sq(e),o=kNe(t?n:0);return{enabled:t,intervalInput:o.value,unit:o.unit,retriesInput:String(s),timeoutInput:String(i||ZS)}}function K8(e){const t=Number(e.retriesInput);if(!e.retriesInput.trim()||!Number.isInteger(t)||t<0||t>QS)return{error:a("失败重试次数必须是 0~{max} 的整数",{max:QS})};const n=Number(e.timeoutInput??ZS);if(!Number.isInteger(n)||n<15||n>QP)return{error:a("整轮查询时限必须是 15~180 秒的整数")};if(!e.enabled)return{value:{enabled:!1,interval:0,retries:t,timeoutSeconds:n}};const s=Number(e.intervalInput),i=Math.round(s*wNe[e.unit]);return!Number.isFinite(s)||s<=0?{error:a("请填写查询间隔")}:ikq?{error:a("查询间隔必须是 {min} 秒 ~ 24 小时",{min:XP})}:{value:{enabled:!0,interval:i,retries:t,timeoutSeconds:n}}}function SNe(e,t){const n=K8(t);if("error"in n)return n;const{enabled:s,interval:i,retries:o,timeoutSeconds:l}=n.value,u=Sq(e);return s===u.enabled&&(!s||i===u.interval)&&o===u.retries&&l===u.timeoutSeconds?null:{patch:{usageQuery:{enabled:s,interval:s?i:u.interval,retries:o,timeoutSeconds:l}}}}function q8({draft:e,onChange:t,idPrefix:n="account-usage"}){const s=i=>t({...e,...i});return r.jsxs(r.Fragment,{children:[r.jsx(ct,{orientation:"horizontal",className:"field-row mt-2.5 acct-usage-toggle",children:r.jsxs(ut,{className:"inline-flex cursor-pointer items-center gap-2.5 font-normal",children:[r.jsx(St,{checked:e.enabled,onCheckedChange:i=>s({enabled:i===!0}),"aria-label":a("自动查询余额")}),r.jsx("span",{className:"text-xs text-subtle",children:a("自动查询余额(按下面的间隔自动刷新余额列的读数)")})]})}),e.enabled?r.jsxs(zh,{orientation:"horizontal",className:"field-row mt-2.5 acct-usage-interval",children:[r.jsxs(ct,{className:"contents",children:[r.jsx(ut,{htmlFor:`${n}-interval`,children:a("查询间隔")}),r.jsx(ze,{id:`${n}-interval`,type:"number",min:1,step:1,className:"max-w-[110px]",value:e.intervalInput,onChange:i=>s({intervalInput:i.currentTarget.value})})]}),r.jsxs(Pt,{value:e.unit,onValueChange:i=>s({unit:i}),children:[r.jsx(Mt,{className:"w-[92px]","aria-label":a("间隔单位"),children:r.jsx(It,{children:e.unit==="hours"?a("小时"):e.unit==="minutes"?a("分钟"):a("秒")})}),r.jsxs(_t,{children:[r.jsx(Ze,{value:"seconds",children:a("秒")}),r.jsx(Ze,{value:"minutes",children:a("分钟")}),r.jsx(Ze,{value:"hours",children:a("小时")})]})]}),r.jsx("span",{className:"detail",children:a("30 秒 ~ 24 小时;手动查询会顺延下一轮")})]}):null,r.jsxs(ct,{orientation:"horizontal",className:"field-row mt-2.5 acct-usage-interval",children:[r.jsx(ut,{htmlFor:`${n}-timeout`,children:a("整轮查询时限")}),r.jsx(ze,{id:`${n}-timeout`,type:"number",min:15,max:QP,step:1,className:"max-w-[110px]",value:e.timeoutInput??String(ZS),onChange:i=>s({timeoutInput:i.currentTarget.value})}),r.jsx("span",{className:"detail",children:a("秒;默认 60 秒,包含重试等待,多步骤查询可适当延长。")})]}),r.jsxs(ct,{orientation:"horizontal",className:"field-row mt-2.5 acct-usage-interval",children:[r.jsx(ut,{htmlFor:`${n}-retries`,children:a("失败重试次数")}),r.jsx(ze,{id:`${n}-retries`,type:"number",min:0,max:QS,step:1,className:"max-w-[110px]",value:e.retriesInput,"aria-describedby":`${n}-retries-hint`,onChange:i=>s({retriesInput:i.currentTarget.value})}),r.jsx("span",{id:`${n}-retries-hint`,className:"detail",children:a("只重试临时故障;次数与整轮时间上限任一用尽即停止,凭证错误不重试。")})]})]})}const Qd="max-w-full flex-wrap [&_[data-slot=segmented-item]]:h-7 [&_[data-slot=segmented-item]]:px-3 [&_[data-slot=segmented-item]]:text-[12.5px]";function NNe(e,t){const n=e&&typeof e=="object"?e.proxy:void 0;if(n==null)throw new Error(t("网关电脑未检测到可导入的系统代理;请手动填写,或选择已保存的代理。"));if(typeof n!="object"||Array.isArray(n))throw new Error(t("系统代理信息无效,请手动填写。"));const s=n;if(s.source!=="custom"||!["http","socks5"].includes(String(s.protocol))||typeof s.host!="string"||!s.host.trim()||typeof s.port!="number"||!Number.isInteger(s.port)||s.port<1||s.port>65535||typeof s.username!="string"||typeof s.password!="string")throw new Error(t("系统代理信息无效,请手动填写。"));return{source:"custom",protocol:s.protocol,host:s.host,port:s.port,username:s.username,password:s.password}}const CNe=new Set(["qwenwork-intl","qwenwork-enterprise","claude-subscription","codex-subscription","chatgpt-subscription","copilot-subscription","gemini-subscription"]);function II(e){return CNe.has(e)}function ANe(e){return II(e)}function mN(e){if(!e||typeof e!="object"||Array.isArray(e))return;const t=e,n=typeof t.warning=="string"?t.warning.trim():"",s=typeof t.importNotice=="string"?t.importNotice.trim():"";if(!(!s&&!n))return{text:s||n,warning:!!n}}function Wt(){return window}function ur(e,t){Wt().wbApp?.toast?.(e,t)}function MI(e,t=0){if(typeof e=="string")return e.trim();if(e instanceof Error)return e.message.trim();if(!e||typeof e!="object"||t>3)return"";const n=e;for(const s of["message","error","msg","reason"]){const i=MI(n[s],t+1);if(i)return i}return""}function Ra(e){const t=MI(e);return a(t||"未知错误")}function G8(e,t=0){if(e&&typeof e=="object"&&t<4){const s=e;for(const i of["status","statusCode","status_code","httpStatus"]){const o=s[i];if((typeof o=="number"||typeof o=="string")&&Number(o)===501)return!0}if(s.code==="not_implemented"||s.code==="auth_methods_unavailable"||s.error&&s.error!==e&&G8(s.error,t+1))return!0}const n=MI(e);return n==="该提供商尚未申报动态登录方式,请使用既有登录入口"||/\b501\b|auth\.methods[^\n]*(?:not implemented|no method|未实现|不支持)/i.test(n)}function go(e){if(II(e))return;const t=Wt().wbApp?.getState?.()?.accounts?.providers;return(Array.isArray(t)?t:Wt().wbProviders?.all?.()||[]).find(s=>s.id===e)}function ENe(e){return(Wt().wbApp?.getState?.()?.accounts?.accounts||[]).filter(n=>(n?.provider||"workbuddy")===e).length}async function _g(e,t,n){const s=Wt().__TAURI_INTERNALS__;if(!s||typeof s.invoke!="function")throw new Error(a("桌面运行时不可用(Tauri 未初始化)"));const i=await s.invoke("api_request",{request:{method:e,path:t,body:n===void 0?null:n}});if(i&&typeof i=="object"){const o=i;if(o.success===!1)throw i;if(o.success===!0&&Object.hasOwn(o,"data"))return o.data}return i}function Zd(e){return _g("POST","/api/accounts",e)}function Jd(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}function TNe(e){const t=Jd(e);if(!t)return;const n={};for(const s of["id","name","uid","userId","provider"])typeof t[s]=="string"&&(n[s]=t[s]);return n.id||n.uid||n.userId?n:void 0}function pN(e){let t=Jd(e);if(t?.success===!1)throw e;t?.success===!0&&Object.hasOwn(t,"data")&&(t=Jd(t.data));const n=Jd(t?.payload),s=Jd(t?.session)||Jd(n?.session),i=[t,n,s].filter(f=>!!f);if(i.some(f=>f.canceled===!0||f.state==="canceled"||f.status==="canceled"))return{ok:!1,canceled:!0,silent:i.some(f=>f.silent===!0)};for(const f of i){if(f.error||f.ok===!1||f.success===!1||f.state==="failed"||f.status==="failed"||f.type==="error")throw new Error(Ra(f.error||f));if(f.pending===!0||Jd(f.pending)||f.accepted===!0||f.done===!1||f.state==="pending"||f.status==="pending")throw new Error(a("登录尚未完成,请继续通过共享登录桥等待结果"))}const o=i.map(f=>TNe(f.account)).find(Boolean),l=i.find(f=>typeof f.accountUid=="string"&&!!f.accountUid||typeof f.accountId=="string"&&!!f.accountId||typeof f.nickname=="string"&&!!f.nickname);if(!o&&!l&&i.some(f=>(f.flow||f.authUrl)&&f.done!==!0))throw new Error(a("登录尚未完成,请继续通过共享登录桥等待结果"));if(!o&&!l&&t?.ok!==!0)throw new Error(s&&!Object.keys(s).length?a("登录桥返回了空会话,无法确认账号已添加"):a("登录桥未返回已完成的账号或会话,请重试"));const u=f=>{const m=i.map(g=>g[f]).find(g=>typeof g=="string"&&g.trim());return typeof m=="string"?m:void 0},d=i.map(f=>f.proxySaved).find(f=>typeof f=="boolean");return{ok:!0,canceled:!1,account:o,warning:u("warning"),instructions:u("instructions"),...typeof d=="boolean"?{proxySaved:d}:{},session:l?Object.fromEntries(["accountUid","accountId","nickname","edition","provider"].filter(f=>typeof l[f]=="string").map(f=>[f,l[f]])):void 0}}async function W8(e,t){if(e.canceled||e.proxySaved===!0)return e;const n=e.account?.id||e.session?.accountUid||e.session?.accountId;let s=a("旧网关未确认代理同次保存,已使用兼容接口保存;请在账号设置中确认代理选择。");try{if(typeof n!="string"||!n)throw new Error("Missing account ID");await _g("PATCH",`/api/accounts/${encodeURIComponent(n)}`,{proxy:t??{source:"direct"}})}catch{s=a("账号已添加,但代理选择未确认保存;请在账号设置中重新检查。")}return{...e,warning:[e.warning,s].filter(Boolean).join(` +`)}}async function gN(e,t="cn",n="embedded",s,i){const o=i!==void 0&&i.methodIndex!==void 0;if(II(e)||o&&!go(e))throw new Error(a("该提供商已不在运行时目录中,请返回列表重新选择"));try{const l=Wt().workbuddyDesktop;let u;if(o&&l?.platform!=="web"){const f=Wt().__TAURI_INTERNALS__;if(!f?.invoke)throw new Error(a("桌面运行时不可用(Tauri 未初始化)"));u=await f.invoke("start_login",{provider:e,edition:t,mode:n,socialRestore:s===!0,options:i})}else{if(!l?.startLogin)throw new Error(a("共享登录桥不可用,请重新打开面板"));u=await l.startLogin(t,n,e,s,i)}const d=pN(u);if(o&&!d.canceled){const f=d.account?.id||d.session?.accountUid||d.session?.accountId,m=d.account?.provider||d.session?.provider;if(!f||m&&m!==e)throw new Error(a("登录桥返回了空会话,无法确认账号已添加"))}return i&&Object.hasOwn(i,"proxy")&&!d.canceled?await W8(d,i.proxy):d}catch(l){const u=Jd(l);if(u?.canceled===!0)return{ok:!1,canceled:!0,silent:u.silent===!0};throw new Error(Ra(l))}}function ef(e){return e?.name||e?.uid||e?.userId||""}function _I(){Wt().wbAddAccountModal?.close?.()}async function Ll(e,t,n){_I(),await Wt().wbApp?.refresh?.();const s=a("✅ {label}账号已添加{name}",{label:t,name:e?`:${e}`:""}),i=mN(n);ur(i?`${s} +${a(i.text)}`:s,i?.warning?"warn":"ok")}const Dg=new Map;function xo(e){return{defaultValue:Dg.get(e)??"",onChange:t=>{const n=t.currentTarget.value;n?Dg.set(e,n):Dg.delete(e)}}}function tf(e,t){t?Dg.set(e,t):Dg.delete(e);const n=document.getElementById(e);(n instanceof HTMLInputElement||n instanceof HTMLTextAreaElement)&&(n.value=t)}function Zo(e){const t=document.getElementById(e);return t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement?t.value.trim():(Dg.get(e)??"").trim()}function DI(e){for(const t of e)tf(t,"")}const Qh={edition:"cn",loginMode:"embedded",socialRestore:!1},Y8=8;function LI(e){return e?.success?e.status===void 0||e.status===""||Number(e.status)>=200&&Number(e.status)<300:!1}function $I(e){return e?.error||(e?.status?`HTTP ${String(e.status)}`:a("连接失败"))}function Lg(e){const t=e?.config?.source||e?.source,n=e?.config||null,s=t==="rotate";return{mode:t==="pool"?"pool":s?"rotate":t==="clash"?"clash":t==="custom"?"custom":t==="subscription"?"retired":"none",listenerUid:t==="clash"?String(n?.listenerUid||""):"",proxyId:t==="pool"?String(n?.proxyId||""):"",rotateAll:s?n?.all!==!1:!0,rotateIds:s&&Array.isArray(n?.proxyIds)?n.proxyIds.map(String):[],protocol:n?.protocol==="socks5"?"socks5":"http",host:n?.host||"",port:n?.port===void 0||n?.port===null?"":String(n.port),username:n?.username||"",password:n?.password||"",nonDirect:n?.nonDirect===!0}}function yc(e){if(e.mode==="none")return null;if(e.mode==="retired")throw new Error(a("原代理来源已下线,请选择已保存的代理、自定义地址或直连"));if(e.mode==="clash"){if(!e.listenerUid)throw new Error(a("请先选择 Clash Verge 出口"));return{source:"clash",listenerUid:e.listenerUid}}if(e.mode==="pool"){if(!e.proxyId)throw new Error(a("请先选择已保存的代理"));return{source:"pool",proxyId:e.proxyId}}if(e.mode==="rotate"){if(e.rotateAll)return{source:"rotate",all:!0};if(!e.rotateIds.length)throw new Error(a("轮询至少要选择一条代理(或改选「全部」)"));return{source:"rotate",all:!1,proxyIds:[...e.rotateIds]}}const t=e.host.trim(),n=Number(e.port);if(!t)throw new Error(a("请填写代理主机地址"));if(!Number.isInteger(n)||n<1||n>65535)throw new Error(a("代理端口必须是 1-65535 的整数"));return{source:"custom",protocol:e.protocol==="socks5"?"socks5":"http",host:t,port:n,username:e.username.trim(),password:e.password,nonDirect:e.nonDirect===!0}}function X8(e){return`${e.name||e.uid} :${e.port}${e.profileActive===!1?a("(其他订阅,可能未生效)"):""}${e.enabled===!1?a("(已在 Clash 中禁用)"):""}`}function xN({draft:e,onChange:t,idPrefix:n,allowRotate:s=!1,allowSystemImport:i=!1,onSystemImportBusy:o}){const[l,u]=p.useState(!1),[d,f]=p.useState(!1),[m,g]=p.useState(""),v=p.useRef({draft:e,onChange:t,onSystemImportBusy:o});v.current={draft:e,onChange:t,onSystemImportBusy:o};const b=p.useRef(0),y=p.useRef(!1);p.useEffect(()=>()=>{b.current+=1,y.current&&(y.current=!1,v.current.onSystemImportBusy?.(!1))},[]);const[k,j]=p.useState(null),[S,N]=p.useState(null),[C,T]=p.useState(""),[R,O]=p.useState(null),[A,P]=p.useState(""),M=R?.options||[],_=JSON.stringify(e),[L,$]=p.useState(""),D=U=>t({...e,...U}),F=p.useCallback(()=>{P(""),Promise.resolve(ft().workbuddyDesktop?.getProxies?.()).then(U=>{if(!U?.clash||!Array.isArray(U.clash.options))throw new Error(a("代理列表响应异常"));O(U.clash)}).catch(U=>{O({available:!1,options:[]}),P(dn(U))})},[]);p.useEffect(()=>{e.mode==="clash"&&R===null&&F()},[e.mode,R,F]);const q=p.useCallback((U=!1)=>{T(""),NI({force:U}).then(z=>N(z)).catch(z=>{N([]),T(dn(z))})},[]);p.useEffect(()=>{(e.mode==="pool"||e.mode==="rotate")&&S===null&&q()},[e.mode,S,q]);function V(){return e.rotateAll?(S??[]).filter(U=>U.enabled!==!1).map(U=>U.id):[...e.rotateIds]}async function Q(){if(y.current)return;y.current=!0;const U=++b.current,z=JSON.stringify(v.current.draft);f(!0),g(""),v.current.onSystemImportBusy?.(!0);try{const H=NNe(await _g("GET","/api/proxies/system"),a);if(U!==b.current||JSON.stringify(v.current.draft)!==z)return;v.current.onChange({...v.current.draft,mode:"custom",protocol:H.protocol,host:H.host,port:String(H.port),username:H.username,password:H.password,nonDirect:!1})}catch(H){U===b.current&&g(dn(H))}finally{U===b.current&&(y.current=!1,f(!1),v.current.onSystemImportBusy?.(!1))}}async function X(){if(l)return;if($(_),j(null),e.mode==="rotate"){const z=V();if(!z.length){Ct(a("轮询至少要选择一条代理(或改选「全部」)"),"err");return}const H=z.slice(0,Y8);u(!0),j(a("正在连接上游…"));let J=0;const ee=[];for(const Y of H){const se=S?.find(re=>re.id===Y)?.name||Y;try{const re=await ft().workbuddyDesktop?.testProxyPoolItem?.(Y);LI(re)?J+=1:ee.push(`${se}(${$I(re)})`)}catch(re){ee.push(`${se}(${dn(re)})`)}}const K=z.length-H.length,G=a("✅ {ok}/{total} 个出口可用",{ok:J,total:H.length})+(K>0?a("(只测了前 {limit} 个,还有 {rest} 个未测)",{limit:Y8,rest:K}):"");j(r.jsxs("span",{className:ee.length?"text-destructive":"text-success",children:[G,ee.length?` ${Yo(ee.join(a(";")))}`:""]})),u(!1);return}if(e.mode==="pool"){if(!e.proxyId){Ct(a("请先选择已保存的代理"),"err");return}u(!0),j(a("正在连接上游…"));try{const z=await ft().workbuddyDesktop?.testProxyPoolItem?.(e.proxyId);j(LI(z)?r.jsxs("span",{className:"text-success",children:[a("✅ 出口可用"),z.ip?a(" 出口 IP {ip}",{ip:Yo(z.ip)}):"",z.durationMs!==void 0&&z.durationMs!==""?` ${Yo(String(z.durationMs))}ms`:""]}):r.jsxs("span",{className:"text-destructive",children:["❌ ",Yo($I(z))]}))}catch(z){j(r.jsxs("span",{className:"text-destructive",children:["❌ ",Yo(dn(z))]}))}finally{u(!1)}return}let U;try{U=yc(e)}catch(z){Ct(dn(z),"err");return}u(!0),j(a("正在连接上游…"));try{const z=await ft().workbuddyDesktop?.testProxy?.({proxy:U});LI(z)?j(r.jsxs("span",{className:"text-success",children:[a("✅ 出口可用"),z.status!==void 0&&z.status!==""?` HTTP ${Yo(String(z.status))}`:"",z.ip?a(" 出口 IP {ip}",{ip:Yo(z.ip)}):"",z.durationMs!==void 0&&z.durationMs!==""?` ${Yo(String(z.durationMs))}ms`:""]})):j(r.jsxs("span",{className:"text-destructive",children:["❌ ",Yo($I(z))]}))}catch(z){j(r.jsxs("span",{className:"text-destructive",children:["❌ ",Yo(dn(z))]}))}finally{u(!1)}}return r.jsxs("div",{className:"acct-proxy-form flex flex-col",children:[e.mode==="retired"?r.jsx("p",{className:"mb-3 text-xs text-destructive",children:a("原代理来源已下线,请选择已保存的代理、自定义地址或直连")}):null,r.jsx(en,{"aria-label":a("代理方式"),className:Qd,value:e.mode,onValueChange:U=>D({mode:U}),options:[{value:"none",label:a("无代理(直连)")},{value:"pool",label:a("已保存的代理")},...s?[{value:"rotate",label:a("轮询(换 IP)"),title:a("逐请求轮换出口(换 IP):OpenCode Zen 免费档按 IP 限流,单个 IP 的额度用完会对它一律 429")}]:[],...e.mode==="clash"?[{value:"clash",label:"Clash Verge"}]:[],{value:"custom",label:a("自定义")}]}),i?r.jsxs("div",{className:"mt-3 flex flex-col items-start gap-1.5",children:[r.jsx(B,{variant:"outline",size:"sm",disabled:d,onClick:()=>{Q()},children:a(d?"正在读取…":"填入系统代理")}),r.jsx("p",{className:"detail",children:a("读取网关电脑当前的 HTTPS 系统代理,填入自定义地址;后续系统设置变化不会自动同步。")}),m?r.jsx("p",{className:"text-xs text-destructive",role:"alert",children:m}):null]}):null,e.mode==="pool"?r.jsxs("div",{className:"mt-3",children:[r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{htmlFor:`${n}-pool-exit`,children:a("代理")}),r.jsxs(Pt,{value:e.proxyId,disabled:!S?.length,onValueChange:U=>D({proxyId:String(U)}),children:[r.jsx(Mt,{id:`${n}-pool-exit`,className:"min-w-[220px]",children:r.jsx(It,{children:S?.find(U=>U.id===e.proxyId)?Ag(S.find(U=>U.id===e.proxyId)):e.proxyId?a("当前代理不可用,请重新选择"):S===null?a("正在读取…"):S.length?a("请选择代理"):a("还没有保存的代理")})}),r.jsx(_t,{children:(S??[]).map(U=>r.jsx(Ze,{value:U.id,disabled:U.enabled===!1,children:Ag(U)},U.id))})]}),r.jsx(B,{variant:"outline",size:"sm",onClick:()=>q(!0),children:a("重新读取")})]}),r.jsx("div",{className:"detail mt-1.5",children:C?a("读取失败:{error}",{error:C}):S===null?a("正在读取代理列表…"):S.length?a("地址与端口由「网络代理」页管理:那边改一次、测一次,所有引用它的账号一起生效"):a("「网络代理」页还没有出口 —— 去那里添加手动地址或同步 Clash Verge 的端点")})]}):null,e.mode==="rotate"?r.jsxs("div",{className:"mt-3",children:[r.jsxs("div",{className:"flex flex-wrap items-center gap-x-2.5 gap-y-1",children:[r.jsx(jr,{id:`${n}-rotate-all`,checked:e.rotateAll,"aria-label":a("轮询全部代理节点"),onCheckedChange:U=>D({rotateAll:U===!0})}),r.jsx(Ae,{htmlFor:`${n}-rotate-all`,className:"cursor-pointer text-xs text-subtle",children:a("全部代理节点(推荐)")}),r.jsx("span",{className:"detail",children:a("「网络代理」页里每个启用的出口轮流使用;之后新加的出口自动加入")})]}),e.rotateAll?null:r.jsxs(ct,{orientation:"horizontal",className:"field-row mt-2.5",children:[r.jsx(ut,{htmlFor:`${n}-rotate-exits`,children:a("轮询的代理")}),r.jsx(xc,{id:`${n}-rotate-exits`,value:e.rotateIds,onValueChange:U=>D({rotateIds:U.map(String)}),options:(S??[]).map(U=>({value:U.id,label:Ag(U),disabled:U.enabled===!1})),placeholder:a("选择要轮询的代理(可多选)"),"aria-label":a("轮询的代理")}),r.jsx(B,{variant:"outline",size:"sm",onClick:()=>q(!0),children:a("重新读取")})]}),r.jsx("div",{className:"detail mt-1.5",children:C?a("读取失败:{error}",{error:C}):S===null?a("正在读取代理列表…"):S.length?a("每条请求换一个出口(按顺序轮流),上游看到的 IP 因此是变化的;出口的地址与端口由「网络代理」页管理"):a("「网络代理」页还没有出口 —— 去那里添加手动地址或同步 Clash Verge 的端点")})]}):null,e.mode==="clash"?r.jsxs("div",{className:"mt-3",children:[r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{htmlFor:`${n}-clash-exit`,children:a("出口")}),r.jsxs(Pt,{value:e.listenerUid,disabled:!M.length,onValueChange:U=>D({listenerUid:String(U)}),children:[r.jsx(Mt,{id:`${n}-clash-exit`,className:"min-w-[220px]",children:r.jsx(It,{children:M.find(U=>U.uid===e.listenerUid)?X8(M.find(U=>U.uid===e.listenerUid)):e.listenerUid?a("当前代理不可用,请重新选择"):a("请选择出口")})}),r.jsx(_t,{children:M.filter(U=>U.uid).map(U=>r.jsx(Ze,{value:String(U.uid),disabled:U.enabled===!1,children:X8(U)},U.uid))})]}),r.jsx(B,{variant:"outline",size:"sm",onClick:F,children:a("重新读取")})]}),r.jsx("p",{className:"detail mt-1.5",children:A?a("读取失败:{error}",{error:A}):R===null?a("正在读取 Clash Verge 配置…"):R.available===!1?a("不可用:{error}",{error:R.error||a("未检测到 Clash Verge 配置")}):a("读取自 {dir};端口由 Clash Verge 管理,这里实时同步",{dir:R.dir||"Clash Verge"})}),r.jsx("p",{className:"detail mt-1.5",children:a("既有 Clash Verge 直接引用继续可用;也可在「网络代理」页同步端点,再改选「已保存的代理」。")})]}):null,e.mode==="custom"?r.jsxs("div",{className:"mt-3",children:[r.jsxs(zh,{orientation:"horizontal",className:"field-row",children:[r.jsxs(ct,{className:"contents",children:[r.jsx(ut,{htmlFor:`${n}-protocol`,children:a("协议")}),r.jsxs(Pt,{value:e.protocol,onValueChange:U=>D({protocol:U}),children:[r.jsx(Mt,{id:`${n}-protocol`,className:"min-w-[110px]",children:r.jsx(It,{children:e.protocol==="socks5"?"SOCKS5":"HTTP"})}),r.jsxs(_t,{children:[r.jsx(Ze,{value:"http",children:"HTTP"}),r.jsx(Ze,{value:"socks5",children:"SOCKS5"})]})]})]}),r.jsxs(ct,{className:"contents",children:[r.jsx(ut,{htmlFor:`${n}-host`,className:"ml-2",children:a("主机")}),r.jsx(ze,{id:`${n}-host`,className:"min-w-[140px]",placeholder:"127.0.0.1",value:e.host,onChange:U=>D({host:U.currentTarget.value})})]}),r.jsxs(ct,{className:"contents",children:[r.jsx(ut,{htmlFor:`${n}-port`,children:a("端口")}),r.jsx(ze,{id:`${n}-port`,type:"number",min:1,max:65535,className:"max-w-[110px]",placeholder:"7890",value:e.port,onChange:U=>D({port:U.currentTarget.value})})]})]}),r.jsxs(zh,{orientation:"horizontal",className:"field-row mt-2.5",children:[r.jsxs(ct,{className:"contents",children:[r.jsx(ut,{htmlFor:`${n}-user`,children:a("用户名")}),r.jsx(ze,{id:`${n}-user`,placeholder:a("可选"),autoComplete:"off",value:e.username,onChange:U=>D({username:U.currentTarget.value})})]}),r.jsxs(ct,{className:"contents",children:[r.jsx(ut,{htmlFor:`${n}-pass`,children:a("密码")}),r.jsx(ze,{id:`${n}-pass`,type:"password",placeholder:a("可选"),autoComplete:"new-password",value:e.password,onChange:U=>D({password:U.currentTarget.value})})]})]}),r.jsxs(Ae,{className:"mt-3 flex cursor-pointer items-center gap-2 text-xs font-normal",children:[r.jsx(jr,{checked:e.nonDirect===!0,onCheckedChange:U=>D({nonDirect:U})}),a("非直连代理")]}),r.jsx("p",{className:"detail mt-1.5",children:a("非直连会先经过网关所在设备的系统代理,再连接到此代理;系统代理不可用时不会改走直连。")})]}):null,r.jsxs(zh,{orientation:"horizontal",className:"field-row mt-3",children:[r.jsx(B,{variant:"outline",size:"sm",disabled:l,onClick:()=>{X()},children:a(l?"测试中…":"测试出口")}),r.jsx("span",{className:"detail",children:L===_?k:null})]})]})}const zI=[{value:"enable",label:()=>a("启用")},{value:"disable",label:()=>a("禁用")},{value:"refresh",label:()=>a("刷新 Token")},{value:"proxy",label:()=>a("修改代理")},{value:"concurrency",label:()=>a("设置并发上限")},{value:"usageQuery",label:()=>a("查询设置")},{value:"limiters",label:()=>a("限制器")},{value:"remove",label:()=>a("删除")}],BI=[{value:"append",label:()=>a("追加规则(保留原有)")},{value:"replace",label:()=>a("替换全部规则")},{value:"enable",label:()=>a("启用全部规则")},{value:"disable",label:()=>a("停用全部规则")},{value:"clear",label:()=>a("清空全部规则")}];function nf(e){return Ci(e)||e?.id||""}function ONe({ids:e,action:t,onClose:n}){const[s,i]=p.useState(zI.some(ee=>ee.value===t)?t:"enable"),[o,l]=p.useState(()=>Lg(null)),[u,d]=p.useState(""),[f,m]=p.useState(()=>({...PI(null),intervalInput:""})),[g,v]=p.useState("append"),[b,y]=p.useState([]),[k,j]=p.useState(""),[S,N]=p.useState(!1),[C,T]=p.useState(""),[R,O]=p.useState(null),A=p.useRef(!1),P=e.map(ee=>_l(ee)).filter(ee=>ee!==null),M=P.filter(Si),_=s==="limiters"&&(g==="append"||g==="replace"),L=_&&b.some(ee=>ee.conditions.some(K=>K.metric!=="tokens"&&K.metric!=="requests")),$=s==="refresh"?P.filter(ee=>!GP(ee)):s==="usageQuery"||L?M:P,D=P.filter(ee=>!$.includes(ee)),F=s==="usageQuery"?M:P,q=F.find(ee=>ee.id===k),V=P.reduce((ee,K)=>Math.max(ee,Number(Ga(tn(K)).concurrencyDefault)||0),0),Q=P.length>0&&P.every(Vke),X=s==="remove"||s==="limiters"&&(g==="replace"||g==="clear"),U=s==="limiters"?g==="append"?a("追加限制规则"):BI.find(ee=>ee.value===g).label():zI.find(ee=>ee.value===s).label();function z(){q&&(s==="usageQuery"?m(PI(q)):y(V8(q)),T(""),Ct(a("已复制到草稿,执行后才会应用到所选账号")))}async function H(){const ee=ft().wbConfirm?.ask;if(s==="remove"&&!await Promise.resolve(ee?.({title:a("删除选中的账号"),html:a("确定删除选中的 {count} 个账号?此操作不可恢复,账号的登录态会一并移除。",{count:e.length}),okText:a("删除"),okClass:"danger"})??!1))return!1;if(s==="disable"||s==="remove"){const K=new Set(e);if(!Ml().filter(Y=>Y.enabled!==!1&&!K.has(Y.id)).length){const Y=a(s==="remove"?"删除":"禁用");return Promise.resolve(ee?.({title:a("全部启用中的账号将被{what}",{what:Y}),html:a("这会{what}所有启用中的账号,转发将不可用。确定继续?",{what:Y}),okText:Y,okClass:s==="remove"?"danger":"primary"})??!1)}}return s==="limiters"&&g==="replace"?Promise.resolve(ee?.({title:a("替换选中账号的限制规则"),html:a("将用草稿中的 {rules} 条规则替换 {count} 个账号的全部限制规则,原有规则不会保留。确定继续?",{rules:b.length,count:$.length})+(D.length?`

    ${a("以下 {count} 个账号不支持余额查询,本次会跳过:{names}",{count:D.length,names:Yo(D.map(nf).join(a("、")))})}

    `:""),okText:a("替换全部规则"),okClass:"danger"})??!1):s==="limiters"&&g==="clear"?Promise.resolve(ee?.({title:a("清空选中账号的限制规则"),html:a("确定清空 {count} 个账号的全部限制规则?余额与 Token 将不再设限;已禁用的账号不会自动启用。",{count:$.length}),okText:a("清空全部规则"),okClass:"danger"})??!1):!0}async function J(){if(A.current)return;if(!e.length){Ct(a("没有选中的账号"),"err");return}if(!$.length){Ct(a("没有适用于本次操作的账号"),"err");return}const ee={action:s,ids:e};try{if(s==="proxy"&&(ee.proxy=yc(o)),s==="concurrency"){const K=Number(u.trim());if(!u.trim()||!Number.isFinite(K)||K<0)throw new Error(a("并发上限必须是 0~{max} 的整数",{max:Su}));ee.maxConcurrent=Math.min(Su,Math.round(K))}if(s==="usageQuery"){const K=K8(f);if("error"in K)throw new Error(K.error);ee.usageQuery=K.value}if(s==="limiters"&&(ee.limiterMode=g,_)){if(!b.length)throw new Error(a("请至少添加一条限制规则;清空请使用清空操作"));if(b.some(K=>K.conditions.some(G=>G.sourceId!==""&&G.sourceId!=="local"&&G.sourceId!=="account")))throw new Error(a("套餐实例不能跨账号复制,请改用通用额度或本地保护条件"));ee.limiterGroups=structuredClone(b)}}catch(K){T(r.jsx("span",{className:"text-destructive",children:dn(K)})),Ct(dn(K),"err");return}A.current=!0,N(!0),T(""),O(null);try{if(!await H())return;let K;if(s==="refresh")K=await vNe(e,O);else{const ie=ft().workbuddyDesktop;if(!ie?.batchAccounts)throw new Error(a("批量操作接口不可用,请重新打开页面"));K=TI(await ie.batchAccounts(ee),ee)}const G=K.ok||[],Y=s==="remove"?(K.removed||[]).length:s==="refresh"?G.length:G.filter(ie=>ie.changes?.length).length,se=s==="remove"?0:G.length-Y,re=K.failed||[],ne=K.skipped||[],de=s==="refresh"?a("刷新 Token 完成:成功 {ok} 个,跳过 {skip} 个,失败 {fail} 个",{ok:Y,skip:ne.length,fail:re.length}):a("{verb}完成:成功 {ok} 个,未变更 {unchanged} 个,跳过 {skip} 个,失败 {fail} 个",{verb:U,ok:Y,unchanged:se,skip:ne.length,fail:re.length});Ct(de,re.length?"err":"ok"),re.length||ne.length?T(r.jsxs("div",{role:"status",className:"space-y-2",children:[r.jsx("p",{children:de}),ne.length?r.jsxs("p",{children:[a("跳过 {count} 个:",{count:ne.length}),ne.map(ie=>`${nf(_l(String(ie.id)))||ie.name||ie.id}(${ie.reason})`).join(a(";"))]}):null,re.length?r.jsxs("p",{className:"text-destructive",children:[a("失败 {count} 个:",{count:re.length}),re.map(ie=>`${nf(_l(String(ie.id)))||ie.id}(${ie.error})`).join(a(";"))]}):null]})):n();try{await Qo(),await Ig()}catch(ie){Ct(a("批量操作已保存,但列表刷新失败:{error}",{error:dn(ie)}),"err")}}catch(K){T(r.jsx("span",{className:"text-destructive",children:dn(K)})),Ct(a("批量操作失败:{error}",{error:dn(K)}),"err")}finally{A.current=!1,N(!1),O(null)}}return r.jsx(at,{open:!0,onOpenChange:ee=>{ee||S||n()},children:r.jsxs(it,{className:"w-[min(900px,calc(100vw-48px))]",showCloseButton:!S,children:[r.jsx(ot,{children:r.jsx(st,{children:a("批量操作 · 已选 {count} 个账号",{count:e.length})})}),r.jsxs(lt,{children:[r.jsxs(A0e,{disabled:S,className:"m-0 flex min-w-0 flex-col gap-4 border-0 p-0",children:[r.jsxs(as,{children:[r.jsx("h3",{children:a("将作用于以下账号")}),r.jsx("p",{className:"max-h-[84px] overflow-y-auto",children:$.map(nf).join(a("、"))||a("没有适用于本次操作的账号")}),D.length?r.jsx("p",{className:"max-h-[84px] overflow-y-auto",children:s==="refresh"?r.jsxs(r.Fragment,{children:[a("跳过 {count} 个:",{count:D.length}),D.map(ee=>`${nf(ee)}(${GP(ee)})`).join(a(";"))]}):a("以下 {count} 个账号不支持余额查询,本次会跳过:{names}",{count:D.length,names:D.map(nf).join(a("、"))})}):null,s==="refresh"?r.jsx("p",{children:a("逐个刷新所选账号的 Token,未到期也会尝试刷新;不改变启用状态、代理或转发顺序。")}):s!=="remove"?r.jsx("p",{children:a("只修改本次选择的设置,不影响备注、凭证、转发顺序或其他设置。")}):null]}),r.jsxs(as,{children:[r.jsx("h3",{children:a("操作")}),r.jsx(bg,{value:s,onValueChange:ee=>{i(ee),T("")},disabled:S,className:"flex-row flex-wrap items-center gap-5","aria-label":a("批量动作"),children:zI.map(ee=>r.jsxs(Ae,{className:"inline-flex cursor-pointer items-center gap-2 font-normal",children:[r.jsx(Dh,{value:ee.value}),ee.label()]},ee.value))}),s==="proxy"?r.jsx("div",{className:"mt-2.5",children:r.jsx(xN,{draft:o,onChange:l,idPrefix:"batch-proxy",allowRotate:Q})}):null,s==="concurrency"?r.jsxs("div",{className:"mt-2.5",children:[r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{htmlFor:"batch-conc-input",children:a("并发上限")}),r.jsx(ze,{id:"batch-conc-input",type:"number",min:0,max:Su,step:1,className:"max-w-[110px]",placeholder:a("并发上限"),value:u,onChange:ee=>d(ee.currentTarget.value)}),r.jsx("span",{className:"detail",children:a("0 = 不限")})]}),r.jsx("p",{className:"detail mt-2.5",children:V>0?a("并发上限 0~{max};CodeArts 等有默认值的家填 0 即按本家默认;达到上限的账号会被跳过、请求转给其他账号",{max:Su}):a("并发上限 0~{max};达到上限的账号会被跳过、请求转给其他账号",{max:Su})})]}):null,s==="limiters"?r.jsxs("div",{className:"mt-2.5",children:[r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{htmlFor:"batch-limiter-mode",children:a("规则操作")}),r.jsxs(Pt,{value:g,onValueChange:ee=>{v(ee),T("")},children:[r.jsx(Mt,{id:"batch-limiter-mode",className:"min-w-[220px]",children:r.jsx(It,{children:BI.find(ee=>ee.value===g).label()})}),r.jsx(_t,{children:BI.map(ee=>r.jsx(Ze,{value:ee.value,children:ee.label()},ee.value))})]})]}),r.jsx("p",{className:"detail mt-2.5",children:a(g==="append"?"保留各账号原有规则,只追加下面的规则;完全相同的规则不会重复添加。":g==="replace"?"用下面的规则统一替换各账号的全部规则,执行前会再次确认。":g==="clear"?"删除各账号的全部限制规则,执行前会再次确认。":"仅统一修改现有规则的开关,保留阈值、动作和重置方式;不改变账号的启用状态。")})]}):null,s==="usageQuery"||_?r.jsxs("div",{className:"mt-2.5",children:[r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{htmlFor:"batch-settings-source",children:a("复制自账号")}),r.jsxs(Pt,{value:q?.id||"",disabled:!F.length,onValueChange:ee=>j(String(ee)),children:[r.jsx(Mt,{id:"batch-settings-source",className:"min-w-0 flex-1",children:r.jsx(It,{children:q?nf(q):a("选择所选账号作为模板(可选)")})}),r.jsx(_t,{children:F.map(ee=>r.jsx(Ze,{value:ee.id,children:nf(ee)},ee.id))})]}),r.jsx(B,{variant:"outline",size:"sm",disabled:!q,onClick:z,children:a("复制当前设置")})]}),s==="usageQuery"?r.jsxs(r.Fragment,{children:[r.jsx(q8,{draft:f,onChange:m,idPrefix:"batch-usage"}),r.jsx("p",{className:"detail mt-2.5",children:a("统一设置自动查询的开关、间隔和失败重试次数;不会复制或覆盖余额查询凭证。")})]}):r.jsx(H8,{draft:b,onChange:y,allowBalance:M.length>0})]}):null,s==="usageQuery"&&!f.enabled?r.jsx("p",{className:"detail mt-2.5",children:a("关闭自动查询后,余额限制器只能使用上次读数;手动查询仍可用。")}):null,s==="limiters"?r.jsx("p",{className:"detail mt-2.5",children:a("Token 规则按每个账号已有的窗口消耗判定,保存不会清零;停用或清空规则不会自动启用账号。")}):null]})]}),R?r.jsx("p",{role:"status",className:"detail",children:a("刷新 Token:已处理 {completed}/{total} 个,当前账号:{name}",R)}):null,r.jsx("div",{className:"detail min-h-[18px]",children:C})]}),r.jsxs(pt,{children:[r.jsx("div",{className:"mr-auto"}),r.jsx(B,{variant:"outline",disabled:S,onClick:n,children:a("取消")}),r.jsx(B,{variant:X?"destructive":"default",disabled:S||!$.length,onClick:()=>{J()},children:S?a("执行中…"):a("执行({action})",{action:U})})]})]})})}const FI=7*864e5;function RNe(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function Q8(e){const t=typeof e=="string"?e.trim():"";return Fh(t)?"积分":t}function vN(e){const t=RNe(e);return t?Q8(t.unit)||(Object.prototype.hasOwnProperty.call(t,"totalLeft")?"积分":""):""}function Z8(e,t,n=Date.now()){if(["snapshot","record","daily","rolling","unlimited"].some(f=>e[f]===!0))return null;const s=Os(e.remain),i=Os(e.total),o=Os(e.used),l=Os(e.remainingPercent);if(i===-1||s!==null&&s<=0||s===null&&(o!==null&&i!==null&&i>0&&o>=i||l!==null&&l<=0))return null;const u=Os(e.startAt);if(u!==null&&u>n)return null;const d=Os(e.expireAt);return d===null||d<=n||d>n+FI||!Number.isFinite(new Date(d).getTime())?null:{expireAt:d,remain:s,unit:Q8(e.unit)||t}}function PNe(e,t=Date.now()){const n=vN(e);return FP(e).map(s=>Z8(s,n,t)).filter(s=>s!==null)}function J8(e){const t=new Map;for(const n of e){let s=t.get(n.unit);s||(s={unit:n.unit,sum:null,count:0,unknownCount:0},t.set(n.unit,s)),s.count++,n.remain===null&&s.unknownCount++,n.remain!==null&&n.unit&&n.unit!=="%"&&(s.sum=(s.sum??0)+n.remain)}return[...t.values()]}function bN(e,t=Date.now()){const n=e.filter(o=>o.expireAt>t&&o.expireAt<=t+FI),s=new Date(t);s.setHours(24,0,0,0);const i=n.filter(o=>o.expireAt0&&e<.01?t("不足 {n}",{n:n(.01)}):n(e)}function tG(e,t,n){return e.map(s=>{if(!s.unit)return t("{count} 份单位未知",{count:s.count});if(s.unit==="%")return t("{count} 份仅提供比例",{count:s.count});const i=mo(s.unit,t);if(s.sum===null)return t("{unit}余量未知({count} 份)",{unit:i,count:s.count});const o=`${eG(s.sum,t,n)} ${i}`;return s.unknownCount>0?t("{amount},另 {count} 份余量未知",{amount:o,count:s.unknownCount}):o}).join(";")}function yN(e,t,n,s=""){if(!e.count)return{badge:"",group:"",summary:"",today:"",detail:""};const i=e.amounts.length===1?e.amounts[0]:null,o=Fh(s)&&i?.unit==="积分"&&i.unknownCount===0&&i.sum!==null?eG(i.sum,t,n):null,l=t("7 天内到期 {amount}({count} 份)",{amount:tG(e.amounts,t,n),count:e.count}),u=e.todayCount>0?t("今天到期 {amount}({count} 份)",{amount:tG(e.todayAmounts,t,n),count:e.todayCount}):"";return{badge:o===null?t("7天 {count}份",{count:e.count}):t("7天 {n}",{n:o}),group:o===null?t("即将到期 {count} 份",{count:e.count}):t("即将过期 {n}",{n:o}),summary:l,today:u,detail:[l,u].filter(Boolean).join(";")}}function nG(e,t,n=Date.now()){const s=new Date(e),i=e-n;if(!Number.isFinite(s.getTime())||i<=0)return"";const o=new Date(n);if(s.getFullYear()===o.getFullYear()&&s.getMonth()===o.getMonth()&&s.getDate()===o.getDate()){if(i<6e4)return t("不到 1 分钟到期");const d=Math.floor(i/36e5);return d<1?t("{minutes} 分钟后到期",{minutes:Math.floor(i/6e4)}):t("{hours} 小时后到期",{hours:d})}const l=d=>Date.UTC(d.getFullYear(),d.getMonth(),d.getDate()),u=Math.round((l(s)-l(o))/864e5);return u===1?t("明天到期"):t("{days} 天后到期",{days:u})}function $l(e){if(e==null||e==="")return null;const t=Number(e);return Number.isFinite(t)?t:null}function $g(e){const t=new Date(e);if(Number.isNaN(t.getTime()))return"";const n=s=>String(s).padStart(2,"0");return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}`}function rG(e){return mo(e,a)}function INe(e,t=Date.now()){const n=FP(e),s=vN(e);return n.map(i=>{const o=fq(i,a,Ln);if(o){const F=o.daily?a("每日重置"):null;return{name:o.name,view:o.view,tone:o.tone,percent:null,window:F,title:[o.name,o.view,F].filter(Boolean).join(" · "),spent:!1,snapshot:!0,amount:null,expiry:null}}const l=String(i?.name||"").trim()||a("积分包");if(i?.record===!0){const F=$l(i?.amount),q=String(i?.unit||"").trim(),V=$l(i?.at),Q=$l(i?.expireAt),X=F===null?"—":`${F>0?"+":""}${Ln(F)}`,U=q&&X!=="—"?`${X} ${rG(q)}`:X,z=[];V!==null&&V>0&&z.push($g(V)),Q!==null&&Q>0&&z.push(Q<=t?a("已过期"):a("{time} 到期",{time:$g(Q)}));const H=String(i?.remark||"").trim();return{name:l,view:U,tone:F!==null&&F<0?"muted":"ok",percent:null,window:z.length?z.join(" · "):null,title:[l,U,V!==null&&V>0?ki(V):"",Q!==null&&Q>0?a("到期 {time}",{time:ki(Q)}):"",H].filter(Boolean).join(" · "),spent:!1,amount:F,expiry:null}}const u=String(i?.unit||"").trim(),d=$l(i?.total),f=$l(i?.used),m=$l(i?.remain),g=i?.unlimited===!0,v=$l(i?.grantAt),b=$l(i?.startAt),y=$l(i?.expireAt),k=i?.daily===!0,j=i?.rolling===!0,S=$l(i?.resetAt),N=$l(i?.remainingPercent),C=String(i?.grantReason||"").trim(),T=y!==null&&y>0&&y<=t,R=d!==null&&d>0,O=g?a("不限"):m!==null?R?a("剩 {remaining} / {total}",{remaining:Ln(m),total:Ln(d)}):a("剩 {remaining}",{remaining:Ln(m)}):f!==null?a("已用 {used}",{used:Ln(f)}):N!==null?a("剩余 {percent}%",{percent:Math.round(N)}):"—",A=!g&&u&&O!=="—"?`${O} ${rG(u)}`:O,P=R&&m!==null?Math.max(0,Math.min(100,m/d*100)):N===null?null:Math.max(0,Math.min(100,N)),M=m!==null&&m<=0||m===null&&f!==null&&R&&f>=d,_=!g&&!k&&!j&&(M||T),L=[];v!==null&&v>0?L.push(a("{time} 领取",{time:$g(v)})):b!==null&&b>0&&L.push(a("{time} 生效",{time:$g(b)})),k?L.push(a("每日重置")):j&&S!==null&&S>0?L.push(a("重置 {date}",{date:$g(S)})):y!==null&&y>0&&L.push(T?a("已过期"):a("{time} 到期",{time:$g(y)})),C&&L.push(C);const $=T||m===0?"muted":P!==null&&P<20?"warn":m===null&&f===null&&!g?"muted":"ok",D=[l,A,v!==null&&v>0?a("领取 {time}",{time:ki(v)}):b!==null&&b>0?a("生效 {time}",{time:ki(b)}):"",y!==null&&y>0?T?a("已过期({time})",{time:ki(y)}):a("到期 {time}",{time:ki(y)}):"",k?a("每日重置(额度按周期回满,不是作废)"):"",C,P===null&&m!==null?a("上游未给总量,画不出剩余比例"):"",f!==null&&d!==null?a("已用 {used} / 共 {total}",{used:Ln(f),total:Ln(d)}):""].filter(Boolean).join(" · ");return{name:l,view:A,tone:$,percent:P,window:L.length?L.join(" · "):null,title:D,spent:_,amount:null,expiry:Z8(i,s,t)}})}function UI({row:e,now:t}){return r.jsxs("div",{className:"usage-pop-row",title:e.title,children:[r.jsxs("div",{className:"usage-pop-line",children:[r.jsx("span",{className:"usage-pop-name",children:e.name}),e.expiry?r.jsx("span",{className:"usage-pop-soon-tag",children:nG(e.expiry.expireAt,a,t)}):null,r.jsx("span",{className:`usage-pop-view ${e.tone}`,children:e.view})]}),e.window?r.jsx("div",{className:"usage-pop-window",children:e.window}):null,e.percent!==null?r.jsx(kg,{value:e.percent,variant:e.tone==="ok"?"success":e.tone==="warn"?"warning":"muted",className:"mt-1.5",trackClassName:"h-[3px]","aria-label":a("剩余 {percent}%",{percent:Math.round(e.percent)})}):null]})}function HI({rows:e,now:t,expiryUnit:n,subscriptionLine:s,aggregate:i,variant:o,kind:l,title:u,children:d}){const[f,m]=p.useState(!1),[g,v]=p.useState(!1),b=e.filter(P=>!P.spent),y=e.filter(P=>P.spent),k=e.length>0&&e.every(P=>P.snapshot)?a("余额详情"):a("积分明细"),j=b.filter(P=>P.expiry!==null),S=b.filter(P=>P.expiry===null),N=bN(j.flatMap(P=>P.expiry?[P.expiry]:[]),t),C=yN(N,a,Ln,n),T=o==="pool"?`usage-toggle usage-pool-line ${l}`:`usage-toggle ${l}`,R=p.useRef(null),O=p.useCallback(P=>{R.current=P,P&&(P.scrollTop=0)},[]),A=p.useCallback(()=>R.current??null,[]);return p.useLayoutEffect(()=>{if(!g)return;const P=R.current?.querySelector(".usage-pop-spent .usage-pop-row");P instanceof HTMLElement&&P.scrollIntoView({block:"nearest"})},[g]),r.jsxs(ui,{open:f,onOpenChange:m,children:[r.jsxs(wi,{render:r.jsx(B,{size:"default",variant:"ghost",type:"button",className:T,title:u,"aria-label":k}),children:[o==="pool"?d:r.jsx("span",{className:"val",children:d}),o==="sum"&&C.badge?r.jsx("span",{className:"usage-toggle-soon",children:C.badge}):null,r.jsx("span",{className:"caret","aria-hidden":!0,children:"▾"})]}),r.jsx(di,{align:"center",sideOffset:6,className:"w-[320px]",initialFocus:A,children:r.jsxs("div",{className:"usage-pop-credit",ref:O,tabIndex:-1,children:[s?r.jsx("div",{className:"usage-pop-sub",children:s}):null,i?r.jsxs("div",{className:"usage-pop-total",children:[r.jsx("span",{className:"k",children:i.label}),r.jsxs("span",{className:"v",children:[i.unlimited?a("不限"):Ln(i.remaining),!i.unlimited&&i.unit?r.jsxs(r.Fragment,{children:[" ",r.jsx("small",{children:i.unit})]}):null]})]}):null,r.jsx("div",{className:"usage-pop-group",children:k}),N.count>0?r.jsxs(r.Fragment,{children:[r.jsxs("div",{className:"usage-pop-soon",children:[r.jsx("span",{children:C.summary}),C.today?r.jsx("span",{children:C.today}):null]}),j.map((P,M)=>r.jsx(UI,{row:P,now:t},`soon-${P.name}-${M}`))]}):null,S.map((P,M)=>r.jsx(UI,{row:P,now:t},`${P.name}-${M}`)),y.length>0?r.jsxs("div",{className:"usage-pop-spent",children:[r.jsxs(B,{size:"default",variant:"ghost",type:"button",className:"usage-pop-spent-head","aria-expanded":g,title:a("展开或收起(默认收起)"),onClick:()=>v(P=>!P),children:[r.jsx("span",{className:"caret","aria-hidden":!0}),r.jsx("span",{children:a("已用完 / 已过期")}),r.jsx("span",{className:"n",children:a("{count} 份",{count:y.length})})]}),g?y.map((P,M)=>r.jsx(UI,{row:P,now:t},`spent-${P.name}-${M}`)):null]}):null]})})]})}const MNe={workbuddy:"assets/providers/workbuddy.png","workbuddy-intl":"assets/providers/workbuddy.png",raccoon:"assets/providers/raccoon.png",catpaw:"assets/providers/catpaw.png",autoclaw:"assets/providers/autoclaw.png","autoclaw-intl":"assets/providers/autoclaw.png",qoder:"assets/providers/qoder.png","qoder-intl":"assets/providers/qoder.png",cline:"assets/providers/cline.png","cline-free":"assets/providers/cline.png","cline-pass":"assets/providers/cline.png",accio:"assets/providers/accio.png","accio-cn":"assets/providers/accio.png","accio-intl":"assets/providers/accio.png",zcode:"assets/providers/zcode.png","zcode-intl":"assets/providers/zcode.png",codearts:"assets/providers/codearts.png",trae:"assets/providers/trae.png",loomy:"assets/providers/loomy.png",kuku:"assets/providers/kuku.png",monkeycode:"assets/providers/monkeycode.png","monkeycode-intl":"assets/providers/monkeycode.png",commandcode:"assets/providers/commandcode.png",antigravity:"assets/providers/antigravity.png","agy-cli":"assets/providers/antigravity.png",officeace:"assets/providers/officeace.png",orcaterm:"assets/providers/orcaterm.png",chatglm:"assets/providers/chatglm.png","deepseek-web":"assets/providers/deepseek.png",tabbit:"assets/providers/tabbit.png","tabbit-intl":"assets/providers/tabbit.png",modelscope:"assets/providers/modelscope.png","modelscope-intl":"assets/providers/modelscope.png",atomcode:"assets/providers/atomcode.png",lobsterai:"assets/providers/lobsterai.png",doubaowork:"assets/providers/doubaowork.png",cursor:"assets/providers/cursor.svg",kiro:"assets/providers/kiro.svg",astudio:"assets/providers/astudio.png",quwork:"assets/providers/quwork.png",devin:"assets/providers/devin.svg",factory:"assets/providers/factory.svg",zed:"assets/providers/zed.svg",grok:"assets/providers/grok.svg","minimax-code":"assets/providers/minimax-code.svg","minimax-code-global":"assets/providers/minimax-code.svg",qwenwork:"assets/providers/qwenwork.svg","qwenwork-intl":"assets/providers/qwenwork.svg","qwenwork-enterprise":"assets/providers/qwenwork.svg","kimi-work":"assets/providers/kimi-work.svg",opendesign:"assets/providers/opendesign.svg","nous-portal":"assets/providers/nous-portal.svg","claude-subscription":"assets/providers/anthropic.png","codex-subscription":"assets/providers/openai.png","chatgpt-subscription":"assets/providers/openai.png","copilot-subscription":"assets/providers/copilot.svg","gemini-subscription":"assets/providers/gemini-cli.svg"};function sG(e){return typeof e=="string"&&/^\/plugins\/script-icons\/[a-f0-9]{64}\.(png|jpg|gif|webp|ico|svg)$/.test(e)?e:""}function _Ne(e,t){return!t||!e||typeof e!="object"||Array.isArray(e)?"":sG(e[t])}function DNe(...e){const t=e.filter(d=>typeof d=="string"&&d.length>0),n=JSON.stringify(t),[s,i]=p.useState({key:n,sources:[]}),o=s.key===n?s.sources:[],l=t.find(d=>!o.includes(d))||"",u=p.useCallback(()=>{l&&i(d=>({key:n,sources:[...d.key===n?d.sources:[],l]}))},[n,l]);return{src:l,onError:u}}const aG=[{id:"api-base",method:"",path:"/v1"},{id:"api-chat",method:"POST",path:"/v1/chat/completions"},{id:"api-responses",method:"POST",path:"/v1/responses"},{id:"api-messages",method:"POST",path:"/v1/messages"},{id:"api-count-tokens",method:"POST",path:"/v1/messages/count_tokens"},{id:"api-image-generations",method:"POST",path:"/v1/images/generations"},{id:"api-image-edits",method:"POST",path:"/v1/images/edits"},{id:"api-image-files",method:"GET",path:"/v1/images/files/{id}"},{id:"api-models",method:"GET",path:"/v1/models"},{id:"api-health",method:"GET",path:"/health"}];function iG(){const e=Z("对话协议与上下文预算"),t=Z("图片生成与编辑"),n=Z("模型清单与健康检查"),s={"api-base":{name:"Base URL",group:"",note:Z("OpenAI 兼容客户端使用此地址;Anthropic 官方 SDK 使用下方说明中的网关根地址。")},"api-chat":{name:"OpenAI Chat Completions",group:e,note:Z("多数 OpenAI 兼容客户端的默认协议")},"api-responses":{name:"OpenAI Responses",group:e,note:Z("Codex / 新版 OpenAI SDK;无状态转发,历史由客户端携带。")},"api-messages":{name:"Anthropic Messages",group:e,note:Z("Claude Code / Anthropic SDK;模型与账号池和 OpenAI 入口共用。")},"api-count-tokens":{name:Z("Token 数量估算"),group:e,note:Z("本地上下文预算估算,返回 estimated=true;不是上游精确分词。")},"api-image-generations":{name:Z("图片生成"),group:t,note:Z("文本生成图片;JSON 请求,非流式返回 base64 或下载链接。")},"api-image-edits":{name:Z("图片编辑"),group:t,note:Z("参考图编辑;支持 multipart 文件上传或 JSON 图片引用。")},"api-image-files":{name:Z("临时图片下载"),group:t,note:Z("仅用于响应返回的网关临时链接;{id} 必须替换为实际下载令牌。")},"api-models":{name:Z("模型列表"),group:n,note:Z("不强制鉴权;携带有效 Key 可查看该 Key 获准使用的模型。")},"api-health":{name:Z("健康检查"),group:n,note:Z("不强制鉴权;仅用于确认网关可访问,不保证模型或额度可用。")}};return aG.map(i=>({...i,...s[i.id]}))}const oG=3065;function LNe(){if(jc().workbuddyDesktop?.platform!=="web")return null;const e=typeof window>"u"?"":window.location?.origin;return e&&e!=="null"?e:null}function lG(e,t){return LNe()??(e?`http://127.0.0.1:${e}`:t)}function jc(){return window}function jN(e){return e instanceof Error?e.message:String(e)}function zg(e,t){jc().wbApp?.toast?.(e,t)}let Bg={backend:null,gatewayBase:lG(0,`http://127.0.0.1:${oG}`)};const VI=new Set;function wN(){return Bg}function KI(){return p.useSyncExternalStore(cG,wN).gatewayBase}function cG(e){return VI.add(e),()=>{VI.delete(e)}}function $Ne(e){Bg=e;for(const t of VI)t()}function uG(){return Bg.gatewayBase.replace(/^https?:\/\//,"")}function zNe(){return Bg.backend?.ready===!0}function dG(e){const t=(n,s)=>{const i=document.getElementById(n);i&&(i.textContent=s)};for(const n of aG)t(n.id,`${n.method?`${n.method} `:""}${e}${n.path}`)}let qI=!1;async function Zh(){if(!qI){qI=!0;try{const e=jc().workbuddyDesktop;if(!e)throw new Error("后端桥不可用");const t=await e.getBackendStatus(),n=Number(t?.port)||0,s=wN(),i={backend:t??null,gatewayBase:lG(n,s.gatewayBase)};i.gatewayBase!==s.gatewayBase&&dG(i.gatewayBase),$Ne(i),jc().wbApp?.renderTopbarStatus?.()}catch(e){console.warn("读取后端状态失败:",jN(e))}finally{qI=!1}}}function BNe(){dG(Bg.gatewayBase),Zh()}async function fG(e){zg(e||a("正在重启…"));try{await jc().workbuddyDesktop?.restartApp()}catch(t){zg(a("重启失败:{reason}",{reason:jN(t)}),"err")}}const FNe={idle:a("结束占用进程"),querying:a("查询中…"),ending:a("结束中…")};function UNe({container:e}){const{backend:t,gatewayBase:n}=p.useSyncExternalStore(cG,wN),[s,i]=p.useState("idle"),o=t?.failure||null,l=uG(),u=t?.ready;let d="muted",f=a("正在检查… · {port}",{port:l});u===!0?(d="success",f=a("网关运行中 · {port}",{port:l})):o?(d="destructive",f=a("{label} · {port}",{label:o.label||a("网关启动失败"),port:l})):u===!1&&(f=a("网关启动中… · {port}",{port:l}));const m=o?o.message??"":u===!0?a("本地网关正在监听 {url},可直接调用 OpenAI 兼容接口",{url:n}):a("正在确认网关是否已就绪");p.useEffect(()=>{Zh()},[]),p.useEffect(()=>{const v=jc().workbuddyDesktop,b=[v?.onBackendError?.(()=>{Zh()}),v?.onBackendReady?.(()=>{Zh()})];return()=>{for(const y of b)typeof y=="function"&&y()}},[]),p.useEffect(()=>{e.title=m},[e,m]);async function g(){if(s!=="idle")return;const v=jc().workbuddyDesktop;if(v){i("querying");try{const b=await v.getPortOccupant(),y=b?.occupant;if(!y){zg(a("端口 {port} 上没有查到监听进程,请改用「更换端口」",{port:b?.port??""}),"err");return}const k=[a("即将结束以下进程:"),"",a("进程名:{name}",{name:String(y.name)}),a("PID:{pid}",{pid:String(y.pid)}),a("路径:{path}",{path:y.path||a("(未知)")}),"",a("结束它会强制退出该程序未保存的数据。确认继续?")],j=jc().wbConfirm?.ask;if(!j||!await j({title:a("结束占用端口的进程"),text:k.join(` +`),okText:a("结束进程"),okClass:"danger"}))return;i("ending"),(await v.endPortOccupant())?.released?(zg(a("已结束进程 {name}(PID {pid}),端口已释放",{name:String(y.name),pid:String(y.pid)})),await j({title:a("重启程序"),text:a("端口已释放。现在重启程序让网关用这个端口启动?"),okText:a("重启")})?await fG(a("重启中…")):await Zh()):(zg(a("进程已结束,但端口仍被占用,建议改用「更换端口」"),"err"),await Zh())}catch(b){zg(a("结束失败:{reason}",{reason:jN(b)}),"err")}finally{i("idle")}}}return r.jsxs(r.Fragment,{children:[r.jsxs("div",{className:"status-line",children:[r.jsx(Oa,{variant:d,pulse:u===!0}),r.jsx("span",{className:"txt",children:f})]}),o?.conflict?r.jsxs("div",{className:"status-actions",children:[o.canEndOccupant===!0?r.jsx(B,{size:"sm",disabled:s!=="idle",onClick:()=>{g()},children:FNe[s]}):null,r.jsx(B,{size:"sm",onClick:()=>{KNe()},children:a("更换端口")})]}):null]})}let kN=null,hG=null;function GI(){const e=document.getElementById("sidebar-status");hG!==e&&(kN?.unmount(),kN=null,hG=e,e&&(e.replaceChildren(),kN=zn.createRoot(e),kN.render(r.jsx(UNe,{container:e}))))}window.addEventListener("wb:shell-layout",GI);const HNe={idle:a("保存并重启"),checking:a("校验中…"),saving:a("保存中…")};function VNe({status:e,onClose:t}){const n=Number(e?.port)||oG,[s,i]=p.useState(()=>n<65535?String(n+1):String(n-1)),[o,l]=p.useState("idle"),[u,d]=p.useState(""),[f,m]=p.useState(""),g=p.useRef(!0),v=Number(s)||0,b=e?.failure?.message||a("当前端口 {port},网关运行正常。",{port:n});async function y(){if(o!=="idle")return;const k=jc().workbuddyDesktop;if(!k)return;const j=Number(s)||0;if(!j||j<1024||j>65535){m(a("端口需在 1024-65535 之间"));return}l("checking"),m(""),d("");try{const S=await k.checkPort(j);if(!S?.ok){d(S?.message||a("该端口不可用"));return}if(S.same){d(S.message??"");return}if(l("saving"),(await k.changePort(j))?.changed===!1){d(a("与当前端口相同,无需重启"));return}t(),await fG(a("端口已改为 {port},正在重启…",{port:j}))}catch(S){m(jN(S))}finally{l("idle")}}return r.jsx(at,{open:!0,onOpenChange:k=>{k||t()},children:r.jsxs(it,{children:[r.jsx(ot,{children:r.jsx(st,{children:a("更换网关端口")})}),r.jsxs(lt,{children:[r.jsxs(as,{children:[r.jsx("h3",{children:a("当前状态")}),r.jsx("p",{children:b})]}),r.jsxs(as,{children:[r.jsx("h3",{children:a("新端口")}),r.jsxs("div",{className:"flex flex-wrap items-center gap-2.5",children:[r.jsx(Ae,{htmlFor:"port-input",className:"text-[12.5px] whitespace-nowrap text-subtle",children:a("端口号")}),r.jsx(ze,{id:"port-input",type:"number",min:1024,max:65535,step:1,placeholder:a("例如 3066"),autoComplete:"off",className:"max-w-[130px]",value:s,onChange:k=>{i(k.currentTarget.value)},onKeyDown:k=>{k.key==="Enter"&&y()},autoFocus:!0,onFocus:k=>{g.current&&(g.current=!1,k.currentTarget.select())}})]}),u?r.jsx("p",{children:u}):null,r.jsx("p",{children:a("端口需在 1024-65535 之间。1023 及以下是系统保留范围,普通程序无法监听。")})]}),r.jsxs(as,{children:[r.jsx("h3",{children:a("换端口后要改的地方")}),r.jsxs("p",{children:[a("网关地址会变成 "),r.jsx("code",{children:`http://127.0.0.1:${v||"—"}`}),a("。已经把这个地址填进其它工具(Claude Code、Cherry Studio 等)的,需要一并改成新地址,否则那些工具会连不上。")]})]}),r.jsx("p",{className:"min-h-[18px] text-[11.5px] text-muted-foreground",children:f})]}),r.jsxs(pt,{children:[r.jsx("div",{className:"mr-auto"}),r.jsx(B,{variant:"outline",onClick:t,children:a("取消")}),r.jsx(B,{variant:"default",disabled:o!=="idle",onClick:()=>{y()},children:HNe[o]})]})]})})}let vy=null,Fg=null;function mG(){vy&&(vy.unmount(),vy=null),Fg&&(Fg.remove(),Fg=null)}async function KNe(){let e=wN().backend;e||(e=await jc().workbuddyDesktop?.getBackendStatus().catch(()=>null)??null),mG(),Fg=document.createElement("div"),document.body.append(Fg),vy=zn.createRoot(Fg),vy.render(r.jsx(VNe,{status:e,onClose:mG}))}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",GI,{once:!0}):GI(),window.wbPortPanel={render:BNe,sync:Zh,portLabel:uG,isReady:zNe,gatewayBase:()=>Bg.gatewayBase};function qNe(e){let t;const n=()=>{t?.(),t=window.wbApp?.subscribeRefresh?.(e),e()};return window.addEventListener("wb:app-ready",n),n(),()=>{window.removeEventListener("wb:app-ready",n),t?.()}}function Jh(e,t=MNe[e]||""){const n=p.useSyncExternalStore(qNe,()=>_Ne(window.wbApp?.getState?.()?.providerIcons,e)),s=KI();return DNe(n?`${s.replace(/\/+$/,"")}${n}`:"",t)}function WI(e){return e==="credit"?{name:a("积分到期时间"),hint:a("按账号最早到期、且还有剩余的积分包比较"),options:[{value:"soon",label:a("最快到期优先")},{value:"late",label:a("最晚到期优先")}]}:e==="balance"?{name:a("可用余额"),hint:a("按账号总可用余额比较,不重复累加积分明细"),options:[{value:"high",label:a("余额大优先")},{value:"low",label:a("余额小优先")}]}:{name:a("账号添加时间"),hint:a("所有提供商都有这个字段"),options:[{value:"new",label:a("最新添加优先")},{value:"old",label:a("最早添加优先")}]}}function YI(e,t){const n=t||Sn().sorting;return n?.balanceSortStates?n.balanceSortStates[e]!==void 0&&n.balanceSortStates[e]!=="unsupported":n?!1:Ga(e).usage||Ml().some(s=>tn(s)===e&&Si(s))}function zl(e,t,n){return t.filter(s=>s.on&&(s.key==="credit"?Eg(e):s.key==="balance"?YI(e,n):!0))}function SN(e){const t=e.filter(n=>n.on).map(n=>WI(n.key).name);return t.length?a("无法拖动:已启用自动消耗规则({rules})。请先在「消耗顺序」中关闭这些规则,再手动调整。",{rules:t.join("、")}):a("自动消耗排序已启用,请先关闭规则再手动调整")}function XI(e){return e.filter(t=>t.on).map(t=>t.key==="credit"?t.dir==="soon"?a("到期 近→远"):a("到期 远→近"):t.key==="balance"?t.dir==="high"?a("余额大优先"):a("余额小优先"):t.dir==="new"?a("添加 新→旧"):a("添加 旧→新")).join(" · ")}function GNe(e,t){if(t==="upgrade")return a("当前网关不支持余额排序,请先更新网关");if(e.key==="balance"){if(t==="unsupported")return a("这一家没有可用余额查询");if(t==="mixed-units")return a("账号余额单位不一致,暂不按余额排序,继续比较其他规则");if(t==="no-data")return a("暂无可比较余额;查到同单位的数值后自动生效,比例与无限额度不参与")}return t==="unsupported"?a("这一家查不到积分到期时间"):t==="no-data"?e.on?a("暂无数据:先查询一次余额,之后会自动按到期排序"):a("暂无数据:先查询一次余额,可按需启用到期排序"):WI(e.key).hint}function WNe({rule:e,priority:t,isLast:n,state:s,busy:i,onChange:o}){const l=WI(e.key),u=s==="unsupported"||s==="upgrade",d=GNe(e,s),f=!u&&!e.on;return r.jsxs("div",{className:Ne("grid items-center gap-2 rounded-sm px-1.5 py-1.5","grid-cols-[16px_15px_minmax(0,1fr)_132px_16px]","hover:bg-nav-hover",f&&"opacity-[.58]"),children:[r.jsx("span",{className:"text-center text-[10.5px] font-bold text-subtle tabular-nums",children:t}),r.jsx(jr,{checked:e.on&&!u,disabled:u||i,"aria-label":l.name,onCheckedChange:m=>o({on:m===!0})}),r.jsxs("span",{className:"flex min-w-0 flex-col gap-px",children:[r.jsx("span",{className:Ne("text-xs font-medium",u&&"text-subtle",f&&"text-subtle"),children:l.name}),r.jsx("span",{className:Ne("text-[10.5px] leading-relaxed",u||s==="mixed-units"?"text-warning":"text-subtle"),title:d,children:d})]}),u?r.jsx("span",{className:"rounded-xs border border-dashed border-border py-1 text-center text-[10.5px] text-subtle",children:a("不可用")}):r.jsxs(Pt,{value:e.dir,disabled:!e.on||i,onValueChange:m=>o({dir:m}),children:[r.jsx(Mt,{className:"h-[26px] w-full text-[11px]","aria-label":a("{name}的方向",{name:l.name}),children:r.jsx(It,{children:l.options.find(m=>m.value===e.dir)?.label||""})}),r.jsx(_t,{children:l.options.map(m=>r.jsx(Ze,{value:m.value,children:m.label},m.value))})]}),r.jsxs("span",{className:"flex flex-col gap-px",children:[r.jsx(B,{size:"default",variant:"ghost",type:"button",disabled:t<=1||i,className:"h-3 w-4 rounded-[3px] text-subtle hover:bg-nav-hover hover:text-foreground disabled:cursor-default disabled:opacity-30",title:a("提高优先级"),"aria-label":a("提高优先级"),onClick:()=>o({__move:"up"}),children:r.jsx("svg",{viewBox:"0 0 24 24",width:"10",height:"10",className:"mx-auto block",children:r.jsx("path",{fill:"none",stroke:"currentColor",strokeWidth:"2.4",strokeLinecap:"round",strokeLinejoin:"round",d:"m6 14 6-6 6 6"})})}),r.jsx(B,{size:"default",variant:"ghost",type:"button",disabled:n||i,className:"h-3 w-4 rounded-[3px] text-subtle hover:bg-nav-hover hover:text-foreground disabled:cursor-default disabled:opacity-30",title:a("降低优先级"),"aria-label":a("降低优先级"),onClick:()=>o({__move:"down"}),children:r.jsx("svg",{viewBox:"0 0 24 24",width:"10",height:"10",className:"mx-auto block",children:r.jsx("path",{fill:"none",stroke:"currentColor",strokeWidth:"2.4",strokeLinecap:"round",strokeLinejoin:"round",d:"m6 10 6 6 6-6"})})})]})]})}function pG({title:e,hint:t,children:n}){return r.jsxs("section",{className:"flex flex-col gap-1 border-t border-hairline pt-3.5 first:border-t-0 first:pt-0",children:[r.jsxs("div",{className:"mb-1 flex items-baseline gap-2",children:[r.jsx("h4",{className:"m-0 text-xs font-bold",children:e}),t?r.jsx("span",{className:"text-[10.5px] text-subtle",children:t}):null]}),n]})}function gG({provider:e,onClose:t,accounts:n,sorting:s,routeContext:i}){p.useSyncExternalStore(Kh,()=>Sn().version);const o=Nu(e),l=ft().wbProviders?.labelOf?.(e)||e,{src:u,onError:d}=Jh(e),f=Eg(e),m=Sn().version,g=s||Sn().sorting,v=(n||Ml()).filter(P=>tn(P)===e),b=p.useMemo(()=>v.some(P=>g?g.creditExpiresAt[P.id]!=null:Dq(po(P))!==null),[e,m,n,s,g]),y=f?b?"ready":"no-data":"unsupported",k=g?.balanceSortStates?.[e]||(YI(e,g)?wq(v.map(P=>jq(po(P)))):"unsupported"),j=g&&!g.balanceSortStates?"upgrade":k==="mixedUnits"?"mixed-units":k==="noData"?"no-data":k,S=zl(e,o,g),N=XI(S),C=S.some(P=>P.key==="balance"),T=S.length>0,R=ySe(e),O=Sn().sortBusy,A=(P,M)=>{const _=M.__move,L=o.map(D=>({...D})),$=L.findIndex(D=>D.key===P);if(!($<0)){if(_){const D=_==="up"?$-1:$+1;if(D<0||D>=L.length)return;const[F]=L.splice($,1);L.splice(D,0,F)}else L[$]={...L[$],...M};EI(e,L)}};return r.jsx(at,{open:!0,onOpenChange:P=>{!P&&!O&&t()},children:r.jsxs(it,{className:"w-[min(560px,calc(100vw-48px))]",showCloseButton:!0,children:[r.jsxs(ot,{children:[r.jsx("span",{className:"inline-flex size-[26px] flex-none items-center justify-center",children:u?r.jsx("img",{src:u,alt:"",className:"size-[26px] rounded-md object-contain",loading:"lazy",onError:d}):r.jsx("span",{className:"inline-flex size-[26px] items-center justify-center rounded-md bg-surface-3 text-[13px] font-bold text-muted-foreground",children:String(l||"?").trim().slice(0,1).toUpperCase()})}),r.jsx(st,{children:a("{name} · 分组设置",{name:a(l)})})]}),r.jsxs(lt,{children:[i,r.jsxs(pG,{title:a("消耗顺序"),hint:a("按优先级从上到下比较,勾选的项才参与"),children:[o.map((P,M)=>r.jsx(WNe,{rule:P,priority:M+1,isLast:M===o.length-1,state:P.key==="credit"?y:P.key==="balance"?j:"ready",busy:O,onChange:_=>A(P.key,_)},P.key)),r.jsxs("div",{className:"grid grid-cols-[16px_15px_minmax(0,1fr)] items-center gap-2 px-1.5 py-1.5",children:[r.jsx("span",{className:"text-center text-[10.5px] font-bold text-subtle tabular-nums",children:o.length+1}),r.jsx("span",{className:"inline-flex items-center justify-center text-subtle",title:a("固定兜底,不受开关影响"),children:r.jsx("svg",{viewBox:"0 0 24 24",width:"12",height:"12",children:r.jsxs("g",{fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[r.jsx("rect",{x:"4.5",y:"10",width:"15",height:"10.5",rx:"2"}),r.jsx("path",{d:"M8 10V7a4 4 0 0 1 8 0v3"})]})})}),r.jsxs("span",{className:"flex min-w-0 flex-col gap-px",children:[r.jsx("span",{className:"text-xs font-medium",children:a("组内手动顺序")}),r.jsx("span",{className:"text-[10.5px] text-subtle",children:a("上面所有规则都相同时,保持你拖出来的顺序")})]})]}),r.jsxs("p",{className:"m-0 mt-2 rounded-xs bg-surface-inset px-2.5 py-2 text-[10.5px] leading-relaxed text-subtle",children:[a("当前规则:{rules}。",{rules:N||a("仅按手动顺序")})," ",a(T?"已启用自动排序,组内拖动已锁定;关闭全部规则可恢复原手动顺序。":"当前可手动调整组内顺序。")]}),r.jsx("p",{className:"m-0 mt-1.5 px-2.5 text-[10.5px] leading-relaxed text-subtle",children:a("上一条规则相同时才比较下一条;想优先按余额消耗,请把可用余额移到第一位。")}),C?r.jsxs("p",{className:"m-0 mt-1.5 px-2.5 text-[10.5px] leading-relaxed text-subtle",children:[a("使用最近一次成功查询的总余额,随余额刷新调整;查询失败保留上次读数,不额外增加查询频率。")," ",a("只比较同一家、同单位的数值余额;未知、比例和无限额度不作为零余额,有明确余额的账号优先。")]}):null,r.jsx("p",{className:"m-0 mt-1.5 px-2.5 text-[10.5px] leading-relaxed text-subtle",children:a("账号页与全局路由共用此消耗顺序,网关按最新余额数据选路,不需要保持页面打开。模型独立顺序会覆盖全局。")}),r.jsx("p",{className:"m-0 mt-1.5 px-2.5 text-[10.5px] leading-relaxed text-subtle",children:a("严格按消耗顺序使用账号需选择「顺序优先」;轮询、会话粘性及账号保护仍按原设置生效。")}),r.jsx("p",{className:"m-0 mt-1.5 px-2.5 text-[10.5px] leading-relaxed text-subtle",children:a(f?"默认仅开启最快到期优先;可用余额和账号添加时间默认关闭。":"默认保持手动顺序,可按需开启支持的自动排序规则。")})]}),r.jsx(pG,{title:a("更多设置"),hint:a("后续加入"),children:r.jsx("div",{className:"flex flex-wrap gap-1.5",children:[a("默认展开 / 收起"),a("新账号落到组首 / 组尾"),a("组内并发上限"),a("余额低于阈值时的提示"),a("本组代理")].map(P=>r.jsx("span",{className:"inline-flex h-[22px] items-center rounded-pill border border-dashed border-border px-2.5 text-[10.5px] text-subtle",children:P},P))})})]}),r.jsxs(pt,{children:[r.jsx(B,{variant:"ghost",size:"sm",disabled:!R||O,title:a(R?f?"恢复默认:仅开启最快到期优先":"恢复默认:仅按手动顺序":"当前已经是默认规则"),onClick:()=>{EI(e,null)},children:a("恢复默认")}),r.jsx("span",{className:"mr-auto text-[10.5px] text-subtle",children:a(O?"保存中…":"改动即时生效")}),r.jsx(B,{variant:"default",disabled:O,onClick:t,children:a("完成")})]})]})})}function YNe(e,t){if(!e)return a("读取中…");const n=e.error||e.configError;if(n)return a("读取失败:{error}",{error:n});if(e.required===!1)return a("当前模型请求免人机验证");if(t?.state==="verifying")return a("正在验证…");if(t?.state==="error")return a("验证失败:{error}",{error:t.error});if(t?.state==="paused")return a("已暂停验证,需要时请手动重试");const s=`${Number(e.ready)||0} / ${Number(e.target)||3}`;return Number(e.startPlanAccounts)?Number(e.ready)>0?a("验证码令牌:{counts}",{counts:s}):e.needsTokens===!0?a("套餐池请求需要验证,请主动开始验证后重试请求"):a("没有近期套餐池请求,不生成验证码令牌"):a("未启用套餐池账号,不生成验证码令牌")}function XNe({accountId:e,disabled:t=!1,onBusy:n}){const[s,i]=p.useState(null),[o,l]=p.useState(null),[u,d]=p.useState(""),f=p.useRef(null),m=p.useRef(!0),g=p.useCallback(async()=>{const k=ft().workbuddyDesktop;try{const j=k?.zcodeCaptchaStats?await k.zcodeCaptchaStats():{error:a("验证码令牌池接口不可用")};m.current&&(i(j||null),ft().wbZcodeCaptchaPool?.status&&l(ft().wbZcodeCaptchaPool?.status?.()||null))}catch(j){m.current&&i({error:dn(j)})}},[]);p.useEffect(()=>{m.current=!0,g();const k=window.setInterval(()=>{g()},15e3),j=()=>{l(ft().wbZcodeCaptchaPool?.status?.()||null),g()};return window.addEventListener("zcode-captcha-status",j),()=>{m.current=!1,f.current?.abort(),n?.(!1),window.clearInterval(k),window.removeEventListener("zcode-captcha-status",j)}},[g,n]);async function v(){const k=ft().wbZcodeCaptchaPool;if(f.current||!k?.verify)return;const j=new AbortController;f.current=j,d("preparing"),n?.(!0);try{await k.verify(e,j.signal,S=>{m.current&&d(S)})}catch(S){m.current&&!j.signal.aborted&&S?.name!=="CaptchaCancelledError"&&l({state:"error",error:dn(S)})}finally{f.current===j&&(f.current=null),m.current&&(d(""),n?.(!1),g())}}const b=!!u,y=!!(s?.error||s?.configError||o?.state==="error");return r.jsxs("div",{className:"flex flex-wrap items-center gap-2",title:a("后台只读取状态,不会自动弹出验证码;验证结果一次性使用,短时间内过期。"),children:[r.jsx(Oa,{variant:y?"destructive":s?.required===!1?"success":"warning"}),r.jsx("span",{className:Ne("text-[12.5px]",y&&"text-destructive"),children:YNe(s,o)}),r.jsxs("div",{className:"ml-auto flex flex-wrap items-center gap-2",children:[s?.required!==!1&&Number(s?.startPlanAccounts)>0?r.jsx(B,{variant:"outline",size:"xs",disabled:t||b||!!(s?.error||s?.configError)||!ft().wbZcodeCaptchaPool?.verify,onClick:()=>{v()},children:a(b?"正在验证…":"开始验证")}):null,b?r.jsx(B,{variant:"outline",size:"xs",disabled:u==="submitting",onClick:()=>f.current?.abort(),children:a("取消验证")}):null,r.jsx(B,{variant:"ghost",size:"xs",disabled:b||t,onClick:()=>{g()},children:a("刷新")})]})]})}function QNe({plan:e,hasJwt:t,onChange:n}){return r.jsxs(ct,{orientation:"horizontal",className:"field-row mt-2.5",children:[r.jsx(ut,{htmlFor:"account-plan-channel",children:a("使用套餐")}),r.jsxs(Pt,{value:e,onValueChange:s=>n(String(s)),children:[r.jsx(Mt,{id:"account-plan-channel",className:"min-w-[220px]",children:r.jsx(It,{children:aSe(e)})}),r.jsxs(_t,{children:[r.jsx(Ze,{value:_q,children:a("编码套餐(Coding Plan)— 走开放平台端点,消耗开放平台的额度(订阅套餐 / 资源包 / 充值余额)")}),r.jsx(Ze,{value:Vh,children:a("套餐池(Start Plan)— 走 zcode.z.ai 端点,消耗 ZCode 套餐池的额度(新用户体验额度 / 活动领取)")})]})]}),e===Vh&&!t?r.jsx("span",{className:"detail text-destructive",children:a("该账号没有套餐登录态(jwt),套餐池通道会失败:请重新登录该账号")}):null,e===Vh?r.jsx("p",{className:"detail",children:a("需要人机验证时,在该账号的「套餐明细」中主动开始验证。")}):null]})}const ZNe={sub2api:{label:"Sub2API",endpoint:"{base}/v1/usage",note:a("用这条账号的 API Key 查询,不需要额外配置。"),fields:[]},new_api:{label:"NewAPI",endpoint:"{base}/api/user/self + /api/status",note:a("用 NewAPI 站点的个人访问令牌查询账户余额(不是这条账号的上游 API Key)。令牌在站点的「个人设置」里生成,只有旧版 / 定制站点才需要额外填用户 ID。"),fields:[{key:"accessToken",label:a("NewAPI 个人访问令牌"),secret:!0,placeholder:a("在 NewAPI 站点「个人设置」里生成的访问令牌"),hint:a("必填;留空 = 不修改,清除用右边的按钮")},{key:"userId",label:a("NewAPI 用户 ID"),placeholder:a("旧版 / 定制站点才需要,新版可留空"),hint:a("可留空:新版请求头只认令牌;旧版会把用户 ID 放进 New-Api-User 头")}]},deepseek:{label:"DeepSeek",endpoint:"{base}/user/balance",note:a("用这条账号的 API Key 查询,不需要额外配置。"),fields:[]},opencode:{label:"OpenCode Go",endpoint:"{base}/v1/usage",note:a("用这条账号的 API Key 查询订阅用量,不需要额外配置;读数展开成 5 小时 / 每周 / 每月三个窗口。"),fields:[]},sensenova:{label:"商汤日日新",endpoint:"platform.sensenova.cn 控制台",note:a("用商汤日日新控制台的账号密码查询(与推理用的 API Key 不是同一套)。网关会自动换取登录票并缓存,过期后自动重登,不需要手动维护。"),fields:[{key:"username",label:a("账号"),placeholder:a("商汤日日新控制台的登录账号"),hint:a("必填")},{key:"password",label:a("密码"),secret:!0,placeholder:a("商汤日日新控制台的登录密码"),hint:a("留空 = 不修改,清除用右边的按钮")}]},zhipu:{label:"智谱",endpoint:"bigmodel.cn 控制台",note:a("用 bigmodel.cn 控制台的访问令牌查询账户余额(人民币元)。令牌是登录后浏览器 Cookie `bigmodel_token_production` 的值:开发者工具 → 应用(Application)→ Cookie 里复制。"),fields:[{key:"token",label:a("访问令牌"),secret:!0,placeholder:a("bigmodel_token_production 的值"),hint:a("必填;留空 = 不修改,清除用右边的按钮")}]},zhipu_zai:{label:"智谱(z.ai 国际)",endpoint:"api.z.ai 控制台",note:a("用这条账号的 API Key 生成签名后查询账户余额(美元),不需要额外配置。要求 API Key 是 z.ai 的「id.secret」形态(控制台生成的 Key 就是)。"),fields:[]}};function by(e){return e?ZNe[e]??null:null}function JNe(e,t){return t.secret?t.key==="accessToken"?e?.hasAccessToken===!0:t.key==="password"?e?.hasPassword===!0:t.key==="token"?e?.hasToken===!0:!1:!1}function eCe(e){const t=String(e?.scheme||"");return t==="new_api"?e?.hasAccessToken===!0:t==="sensenova"?String(e?.username||"").trim()!==""&&e?.hasPassword===!0:t==="zhipu"?e?.hasToken===!0:!0}function tCe(e){return{userId:String(e?.userId||""),username:String(e?.username||""),accessToken:"",password:"",token:""}}function nCe(e,t){const n=by(e);if(!n||!n.fields.length)return null;const s={};for(const i of n.fields){const o=String(t[i.key]??"").trim();if(i.secret){o&&(s[i.key]=o);continue}s[i.key]=o}return Object.keys(s).length?s:null}function rCe({field:e,value:t,configured:n,onValue:s,onClear:i,clearBusy:o,idPrefix:l}){const u=`${l}-${e.key}`;return r.jsxs(ct,{orientation:"horizontal",className:"field-row mt-2.5",children:[r.jsx(ut,{htmlFor:u,children:e.label}),r.jsx(ze,{id:u,className:"min-w-[220px]",type:e.secret?"password":"text",autoComplete:e.secret?"new-password":"off",placeholder:n?a("已配置,留空则不修改"):e.placeholder,title:e.hint,value:t,onChange:d=>s(d.currentTarget.value)}),n&&i?r.jsx(B,{variant:"outline",size:"sm",disabled:o===!0,onClick:i,title:a("清除已配置的 {label}",{label:e.label}),children:a("清除")}):null]})}function sCe({spec:e,values:t,configured:n,onValue:s,onClear:i,clearBusy:o,idPrefix:l}){return r.jsxs(r.Fragment,{children:[r.jsxs("p",{className:"detail mt-2.5",children:[a("余额查询方案:{label}",{label:e.label}),r.jsx("span",{className:"ml-1 text-subtle",children:e.endpoint})," — ",e.note]}),e.fields.map(u=>r.jsx(rCe,{field:u,idPrefix:l,value:t[u.key]||"",configured:n[u.key]===!0,onValue:d=>s(u.key,d),onClear:i?()=>i(u.key):void 0,clearBusy:o},u.key))]})}function Hn({value:e,onValueChange:t,options:n,placeholder:s="",displayValue:i,searchPlaceholder:o=Z("搜索…"),emptyHint:l=Z("没有匹配的选项"),disabled:u,className:d,id:f,title:m,searchable:g=!0,...v}){const[b,y]=p.useState(""),k=n.find(S=>S.value===e)??null,j=i??k?.label??(e||s);return g?r.jsxs(ZV,{items:n,value:k,disabled:u,autoHighlight:!0,inputValue:b,onInputValueChange:y,onOpenChange:()=>y(""),itemToStringLabel:S=>S.label,itemToStringValue:S=>S.value,isItemEqualToValue:(S,N)=>S.value===N.value,filter:(S,N)=>`${S.label} ${S.value} ${S.searchText||""}`.toLowerCase().includes(N.trim().toLowerCase()),onValueChange:S=>{S&&!S.disabled&&t(S.value)},children:[r.jsx(eK,{id:f,className:d,title:m??j,"aria-label":v["aria-label"],children:r.jsx(JV,{children:j})}),r.jsxs(tK,{children:[r.jsx("div",{className:"shrink-0 border-b border-hairline p-2",children:r.jsx(nK,{placeholder:o,"aria-label":o,autoComplete:"off"})}),r.jsx(aK,{children:l}),r.jsx(rK,{children:S=>r.jsx(sK,{value:S,disabled:S.disabled,title:S.label,children:S.label},S.value)})]})]}):r.jsxs(Pt,{value:e,disabled:u,onValueChange:S=>{typeof S=="string"&&t(S)},children:[r.jsx(Mt,{id:f,className:d,title:m??j,"aria-label":v["aria-label"],children:r.jsx(It,{children:j})}),r.jsx(_t,{children:n.map(S=>r.jsx(Ze,{value:S.value,disabled:S.disabled,children:S.label},S.value))})]})}let Au=null,yy=null;function aCe(){if(Au)return Promise.resolve(Au);if(yy)return yy;const t=window.workbuddyDesktop?.getClientIdentification?.();return t?(yy=t.then(n=>{const s=[];for(const i of n?.builtins||[]){const o=typeof i.id=="string"?i.id:"",l=typeof i.name=="string"?i.name:"",u=typeof i.ua=="string"?i.ua.trim():"";o&&l&&u&&s.push({id:o,name:l,ua:u})}return Au=s,s}).catch(()=>(Au=[],Au)).finally(()=>{yy=null}),yy):(Au=[],Promise.resolve(Au))}function jy(){const[e,t]=p.useState(()=>Au||[]);return p.useEffect(()=>{if(Au)return;let n=!0;return aCe().then(s=>{n&&t(s)}),()=>{n=!1}},[]),e}function wy(e){const t=window,n=t.wbProviders?.all?.()||t.wbApp?.getState?.()?.accounts?.providers;return Array.isArray(n)?n.find(i=>i?.id===e)?.userAgentOverridable!==!1:!0}async function xG(e,t,n){const s=n.trim();if(!s||!e||!wy(t))return;const i=window.__TAURI_INTERNALS__;if(i?.invoke)try{await i.invoke("api_request",{request:{method:"PATCH",path:`/api/accounts/${encodeURIComponent(e)}`,body:{userAgent:s}}})}catch{}}function vG(e){const t=e,n=t?.account?.id;if(typeof n=="string"&&n)return n;for(const s of["accountId","accountUid"]){const i=t?.session?.[s];if(typeof i=="string"&&i)return i}}function Ug({id:e,value:t,onChange:n,presets:s,disabled:i,className:o}){const l=s.find(u=>u.ua===t);return r.jsxs("div",{className:`flex min-w-0 items-center gap-2 ${o||""}`,children:[r.jsx(ze,{id:e,className:"min-w-0 flex-1",type:"text",maxLength:1024,spellCheck:!1,autoComplete:"off",disabled:i,placeholder:a("留空使用该提供商默认值"),value:t,onChange:u=>n(u.currentTarget.value)}),r.jsx(Hn,{value:l?.id??"",disabled:i||!s.length,className:"w-[172px] shrink-0","aria-label":a("选择预置客户端"),displayValue:l?.name||a("选择预置客户端"),options:[{value:"",label:a("不使用预置")},...s.map(u=>({value:u.id,label:u.name,searchText:u.ua}))],onValueChange:u=>{if(!u){n("");return}const d=s.find(f=>f.id===u);d&&n(d.ua)}})]})}function ha({name:e,size:t=16}){return r.jsx("span",{className:"acct-dlg-icon","aria-hidden":"true",dangerouslySetInnerHTML:{__html:ft().wbIcons?.icon?.(e,t)||""}})}function wc({title:e,action:t,children:n}){return r.jsxs("section",{className:"acct-dlg-group-wrap",children:[r.jsxs("div",{className:"acct-dlg-group-label",children:[r.jsx("span",{children:e}),t?r.jsx("span",{className:"acct-dlg-label-action",children:t}):null]}),r.jsx("div",{className:"acct-dlg-group",children:n})]})}function iCe({configured:e,value:t,onChange:n,onClear:s,clearBusy:i}){return r.jsx(wc,{title:a("余额查询凭证"),action:r.jsx(Ee,{shape:"tag",variant:e?"success":"secondary",children:a(e?"已配置":"未配置")}),children:r.jsxs(ct,{className:"acct-dlg-field",children:[r.jsxs("div",{className:"acct-dlg-field-head",children:[r.jsx(ut,{htmlFor:"account-balance-token-input",children:a("余额查询凭证")}),e?r.jsx(B,{variant:"ghost",size:"xs",disabled:i,onClick:s,className:"acct-dlg-clear",children:a("清除")}):null]}),r.jsx(ze,{id:"account-balance-token-input",type:"password",autoComplete:"new-password",placeholder:a(e?"已配置,留空则不修改":"一般不用填"),value:t,onChange:o=>n(o.currentTarget.value)}),r.jsx(wr,{children:a("积分查询已复用转发用的登录凭证,这里通常留空即可。只有旧版本填过、或从旧代理导入过凭证时才有值")})]})})}function oCe({hasApiKey:e,noAuth:t,value:n,onValue:s,onToggleNoAuth:i,onClear:o,clearBusy:l}){const[u,d]=p.useState(!1),f=!!n.trim();return r.jsxs(wc,{title:a("账号凭证"),action:r.jsx(Ee,{shape:"tag",variant:t||f?"secondary":e?"success":"warning",children:a(t?"无需鉴权":f?"新密钥待保存":e?"已配置":"未配置凭证")}),children:[r.jsxs(ct,{className:"acct-dlg-field",children:[r.jsx(ut,{children:a("鉴权方式")}),r.jsxs(bg,{value:t?"none":"key",disabled:l,"aria-label":a("鉴权方式"),className:"acct-dlg-choice-grid",onValueChange:m=>i(m==="none"),children:[r.jsxs(Ae,{className:"acct-dlg-choice","data-selected":!t||void 0,children:[r.jsx(Dh,{value:"key"}),r.jsxs("span",{children:[r.jsx("strong",{children:"API Key"}),r.jsx("small",{children:a("使用密钥访问上游")})]})]}),r.jsxs(Ae,{className:"acct-dlg-choice","data-selected":t||void 0,children:[r.jsx(Dh,{value:"none"}),r.jsxs("span",{children:[r.jsx("strong",{children:a("无需鉴权")}),r.jsx("small",{children:a("本地服务或无需凭证的上游")})]})]})]})]}),r.jsxs(ct,{className:"acct-dlg-field",children:[r.jsxs("div",{className:"acct-dlg-field-head",children:[r.jsx(ut,{htmlFor:"account-api-key-input",children:"API Key"}),e&&!t?r.jsx(B,{variant:"ghost",size:"xs",disabled:l,onClick:o,className:"acct-dlg-clear",children:a("清除已存密钥")}):null]}),r.jsxs(zs,{"data-disabled":t||l,children:[r.jsx(Bs,{id:"account-api-key-input",type:u&&!t?"text":"password",autoComplete:"new-password",spellCheck:!1,disabled:t||l,placeholder:e?a("留空保留当前密钥,输入新密钥以替换"):"sk-…",value:n,onChange:m=>s(m.currentTarget.value)}),r.jsx(As,{align:"inline-end",children:r.jsx(Db,{size:"icon-xs",disabled:t||l,"aria-pressed":u,"aria-label":a(u?"隐藏新输入的密钥":"显示新输入的密钥"),onClick:()=>d(m=>!m),children:r.jsx(ha,{name:u?"eyeOff":"eye"})})})]}),r.jsx(wr,{children:a("原密钥不会回显;更换密钥不会改变账号 ID。")})]}),r.jsxs("div",{className:`acct-dlg-inline-note${t||!e&&!f?" warning":""}`,children:[r.jsx(ha,{name:t||!e?"info":"shield",size:14}),r.jsx("span",{children:a(t?"保存后将移除密钥,转发与拉取模型都不发送鉴权头。请确认上游确实无需凭证。":e||f?"留空不修改,替换后点击「保存更改」生效。":"当前没有凭证,转发时会跳过此账号。请填写密钥或选择「无需鉴权」。")})]})]})}const lCe=64;function cCe({provider:e,name:t,protocol:n,baseUrl:s,accountBaseUrl:i,count:o,emulation:l,onName:u,onProtocol:d,onBaseUrl:f,onEmulation:m,onRemove:g,onModels:v,onClearAccountBaseUrl:b,disabled:y}){const[k,j]=p.useState(l==="opencode"),S=ft().wbProviders?.PROTOCOL_OPTIONS||[{value:"chat_completions",label:"OpenAI - Chat Completions"},{value:"responses",label:"OpenAI - Responses"},{value:"anthropic",label:"Anthropic - Messages"}],N=S.find(A=>A.value===n)?.label||n,C=n==="anthropic"?"/v1/messages":n==="responses"?"/responses":"/chat/completions",T=i.trim(),R=T||s.trim(),O=R?`${R.replace(/\/+$/,"")}${C}`:"";return r.jsxs(r.Fragment,{children:[r.jsxs(Fe,{variant:"warning",className:"acct-dlg-scope-notice",role:"note",children:[r.jsx(ha,{name:"accounts"}),r.jsxs("div",{children:[r.jsx("strong",{children:a("正在编辑提供商共用配置")}),r.jsx("p",{children:a("「{name}」名下 {count} 个账号共用;修改协议或地址可能中断正在进行的请求。",{name:e.name||e.id,count:o})})]})]}),r.jsxs(wc,{title:a("连接参数"),children:[r.jsxs("div",{className:"acct-dlg-field-grid",children:[r.jsxs(ct,{className:"acct-dlg-field",children:[r.jsx(ut,{htmlFor:"account-provider-name",children:a("提供商名称")}),r.jsx(ze,{id:"account-provider-name",maxLength:lCe,disabled:y,value:t,onChange:A=>u(A.currentTarget.value)})]}),r.jsxs(ct,{className:"acct-dlg-field",children:[r.jsx(ut,{htmlFor:"account-provider-protocol",children:a("协议")}),r.jsxs(Pt,{value:n,disabled:y,onValueChange:A=>d(String(A)),children:[r.jsx(Mt,{id:"account-provider-protocol",children:r.jsx(It,{children:N})}),r.jsx(_t,{children:S.map(A=>r.jsx(Ze,{value:A.value,children:A.label},A.value))})]})]}),r.jsxs(ct,{className:"acct-dlg-field acct-dlg-field-full",children:[r.jsxs("div",{className:"acct-dlg-field-head",children:[r.jsx(ut,{htmlFor:"account-provider-baseurl",children:"Base URL"}),T?r.jsx(B,{variant:"ghost",size:"xs",disabled:y,className:"acct-dlg-clear",onClick:b,children:a("改回跟随提供商")}):null]}),r.jsx(ze,{id:"account-provider-baseurl",className:"mono",disabled:y,spellCheck:!1,placeholder:a("OpenAI 兼容填到 /v1;Anthropic 填根地址"),value:s,onChange:A=>f(A.currentTarget.value)}),r.jsx(wr,{children:a("填写接口基址,无需追加 {path}。",{path:C})}),T?r.jsxs("div",{className:"acct-dlg-inline-note warning",children:[r.jsx(ha,{name:"info",size:14}),r.jsx("span",{children:a("这个账号单独存了一份地址:{url},转发时优先用它。上面改的是提供商共用地址,不会覆盖它。",{url:T})})]}):null]})]}),O?r.jsxs("div",{className:"acct-dlg-endpoint",children:[r.jsx("span",{children:a("请求端点")}),r.jsx("code",{children:O})]}):null,r.jsxs("div",{className:"acct-dlg-model-link",children:[r.jsx("span",{children:a("模型清单与映射在「模型管理」中维护。")}),r.jsxs(B,{variant:"link",size:"xs",disabled:y,onClick:v,children:[a("模型管理"),r.jsx(ha,{name:"caretRight",size:12})]})]})]}),r.jsx("div",{className:"acct-dlg-group-label",children:a("高级兼容")}),r.jsxs(is,{open:k,onOpenChange:j,className:"acct-dlg-advanced",children:[r.jsxs(os,{disabled:y,className:"acct-dlg-advanced-trigger",children:[r.jsx(ha,{name:"sliders"}),r.jsx("span",{children:a("高级兼容")}),r.jsx("small",{children:a(l==="opencode"?"已开启":"默认关闭")}),r.jsx(ha,{name:"caretRight",size:13})]}),r.jsxs(ls,{className:"acct-dlg-advanced-content",children:[r.jsxs(ct,{className:"acct-dlg-toggle-field",children:[r.jsxs("div",{children:[r.jsx(ut,{htmlFor:"account-provider-emulation",children:a("模拟 OpenCode 官方客户端")}),r.jsx(wr,{children:a("仅用于 OpenCode Zen 这类上游,普通提供商请保持关闭。")})]}),r.jsx(St,{id:"account-provider-emulation",checked:l==="opencode",disabled:y,onCheckedChange:A=>m(A?"opencode":"")})]}),r.jsx("p",{className:"detail acct-dlg-advanced-note",children:a("开启后会改写请求体,补齐会话头与占位工具;未填密钥时使用匿名凭证 public。")})]})]}),r.jsxs("div",{className:"acct-dlg-danger",children:[r.jsxs("div",{children:[r.jsx("h3",{children:a("删除提供商")}),r.jsx("p",{children:a("将同时删除名下 {count} 个账号,无法恢复。",{count:o})})]}),r.jsx(B,{variant:"outline",size:"sm",disabled:y,onClick:g,className:"acct-dlg-delete",children:a("删除提供商")})]})]})}function uCe(e,t){const n=tn(e);return t.filter(s=>s.id!==e.id&&tn(s)===n)}function dCe(e){return Ci(e)||e?.id||""}function bG({id:e,onClose:t,initialAccount:n,initialPane:s="basic",routeContext:i}){const[o,l]=p.useState(()=>n||_l(e)),[u,d]=p.useState(o?.enabled!==!1),[f,m]=p.useState(o?.allowRouteSkip!==!1),[g,v]=p.useState(o?.name||""),[b,y]=p.useState(o?.userAgent||""),k=jy(),j=wy(tn(o||{})),[S,N]=p.useState(()=>Lg(o?.proxy)),[C,T]=p.useState(""),[R,O]=p.useState(()=>rI(o)),[A,P]=p.useState(!1),[M,_]=p.useState(""),[L,$]=p.useState(null),[D,F]=p.useState(""),[q,V]=p.useState("chat_completions"),[Q,X]=p.useState(""),[U,z]=p.useState(""),[H,J]=p.useState(""),[ee,K]=p.useState(o?.noAuth===!0),[G,Y]=p.useState(()=>PI(o)),[se,re]=p.useState(()=>tCe(o?.balanceQuery)),[ne,de]=p.useState(()=>V8(o)),[ie,oe]=p.useState(s),[je,te]=p.useState(()=>String(Number(o?.maxConcurrent)||0)),[le,he]=p.useState(!1),ce=p.useRef(!1),ye=p.useRef(null),fe=p.useRef({}),Le=p.useRef({enabled:u,allowRouteSkip:f,name:g,userAgent:b,proxyDraft:S,planChannel:R,usageDraft:G,balanceQueryDraft:se,limiterDraft:ne,concDraft:je,noAuthDraft:ee}),pe=tn(o).startsWith("custom-")?a("凭证设置"):a("凭证与套餐"),xe={basic:{title:a("基本信息"),description:a("设置账号名称、启用状态与转发行为。"),icon:"sliders"},credential:{title:pe,description:a("管理当前账号的凭证与可用套餐。"),icon:"key"},query:{title:a("查询设置"),description:a("配置余额查询凭证、自动刷新间隔与失败重试。"),icon:"refresh"},limiter:{title:a("限制器"),description:a("用明确的规则保护当前账号的额度。"),icon:"shield"},network:{title:a("网络"),description:a("设置当前账号访问上游的出网方式。"),icon:"proxies"},provider:{title:a("连接设置"),description:a("统一管理提供商的协议、地址与兼容选项。"),icon:"agent"}},Se=xe[ie];p.useLayoutEffect(()=>{ye.current&&(ye.current.scrollTop=fe.current[ie]||0)},[ie]);function ge(ke){ye.current&&(fe.current[ie]=ye.current.scrollTop),oe(ke)}if(p.useEffect(()=>{let ke=!0;$(null);const Xe=n||_l(e);return Xe?(Promise.resolve(ft().wbCustomProvidersUi?.find?.(tn(Xe))).then(Qe=>{!ke||!Qe||($(Qe),F(Qe.name||""),V(Qe.protocol||"chat_completions"),X(Qe.baseUrl||""),z(typeof Qe.clientEmulation=="string"?Qe.clientEmulation:""))}).catch(()=>{}),()=>{ke=!1}):()=>{ke=!1}},[e]),!o)return r.jsx(at,{open:!0,onOpenChange:ke=>{ke||t()},children:r.jsxs(it,{children:[r.jsx(ot,{children:r.jsx(st,{children:a("账号设置")})}),r.jsx(lt,{children:r.jsx("p",{className:"detail",children:a("账号不存在,请刷新后重试。")})}),r.jsxs(pt,{children:[r.jsx("div",{className:"mr-auto"}),r.jsx(B,{variant:"outline",onClick:t,children:a("关闭")})]})]})});const ue=o,be=uCe(ue,Ml()),ve=tn(ue)==="catpaw",De=tn(ue).startsWith("custom-"),Ie=Nq(L,ue.baseUrl)||S.mode==="rotate",We=by(ue.balanceQuery?.scheme),nt={};for(const ke of We?.fields??[])nt[ke.key]=JNe(ue.balanceQuery,ke);const kt=!!(We&&We.fields.length)&&!eCe(ue.balanceQuery),Je=be.length+1,on=Le.current,nn=(ke,Xe)=>JSON.stringify(ke)===JSON.stringify(Xe),On={basic:u!==on.enabled||f!==on.allowRouteSkip||(g.trim()||on.name)!==on.name||b.trim()!==on.userAgent||je!==on.concDraft,credential:!!(C.trim()||H.trim())||ee!==on.noAuthDraft||R!==on.planChannel,query:!nn(G,on.usageDraft)||!nn(se,on.balanceQueryDraft),limiter:!nn(ne,on.limiterDraft),network:!nn(S,on.proxyDraft),provider:!!(L&&(D.trim()!==(L.name||"")||q!==(L.protocol||"chat_completions")||Q.trim()!==(L.baseUrl||"")||U!==(L.clientEmulation||"")))},Rn=Object.values(On).filter(Boolean).length,xt=A||le;async function sn(ke,Xe,Qe,Yt=!1){if(ce.current)return!1;ce.current=!0,he(!0);try{const Rt=ft().wbConfirm?.ask;if(!Rt)throw new Error(a("确认弹窗不可用,请重新打开页面"));return await Rt({title:ke,html:Yo(Xe).replace(/\n/g,"
    "),okText:Qe,okClass:Yt?"danger":"primary",bodyClass:Yt?"danger-zone":""})}catch(Rt){return Ct(dn(Rt),"err"),!1}finally{ce.current=!1,he(!1)}}async function Ke(){xt||ce.current||Rn&&!await sn(a("放弃未保存的修改?"),a("所有分区中尚未保存的修改都会被放弃。已确认的独立清除操作不受影响。"),a("放弃修改"))||t()}async function zt(){if(!(xt||ce.current)&&await sn(a("清除余额查询凭证?"),a("确认后立即生效,不受底部保存按钮控制。通常可继续复用转发用的登录凭证。"),a("清除"),!0)){ce.current=!0,P(!0);try{const ke=await Yh(e,{balanceToken:null});l(ke),T(""),Ct(a("✅ 已清除余额查询凭证"));try{await Qo()}catch(Xe){Ct(a("账号已保存,但列表刷新失败:{error}",{error:dn(Xe)}),"err")}}catch(ke){Ct(a("清除失败:{error}",{error:dn(ke)}),"err")}finally{ce.current=!1,P(!1)}}}async function ht(){if(!(xt||ce.current)&&await sn(a("清除已存 API Key?"),a("确认后立即生效,不受底部保存按钮控制。没有凭证且未开启「无需鉴权」时,此账号将被转发跳过。"),a("清除"),!0)){ce.current=!0,P(!0);try{const ke=await Yh(e,{apiKey:null});l(ke),J(""),Ct(a("✅ 已清除 API Key(该账号现在没有凭证,转发会被跳过)"));try{await Qo()}catch(Xe){Ct(a("账号已保存,但列表刷新失败:{error}",{error:dn(Xe)}),"err")}}catch(ke){Ct(a("清除失败:{error}",{error:dn(ke)}),"err")}finally{ce.current=!1,P(!1)}}}async function Tt(){if(xt||ce.current)return;const ke=Q.trim();if(await sn(a("改回跟随提供商?"),a("这个账号将改用提供商当前保存的 Base URL:{url}。确认后立即生效,不受底部保存按钮控制。",{url:ke||"—"}),a("改回跟随"))){ce.current=!0,P(!0);try{const Xe=await Yh(e,{baseUrl:null});l(Xe),Ct(a("✅ 已改回跟随提供商的 Base URL"));try{await Qo()}catch(Qe){Ct(a("账号已保存,但列表刷新失败:{error}",{error:dn(Qe)}),"err")}}catch(Xe){Ct(a("操作失败:{message}",{message:dn(Xe)}),"err")}finally{ce.current=!1,P(!1)}}}async function Ht(ke){if(!(xt||ce.current)&&await sn(a("清除查询凭证?"),a("确认后立即生效,余额查询可能显示「未配置」。取消账号设置不会恢复已清除的凭证。"),a("清除"),!0)){ce.current=!0,P(!0);try{const Xe=await Yh(e,{balanceQuery:{[ke]:null}});l(Xe),re(Qe=>({...Qe,[ke]:""})),Ct(a("✅ 已清除查询凭证"));try{await Qo()}catch(Qe){Ct(a("账号已保存,但列表刷新失败:{error}",{error:dn(Qe)}),"err")}}catch(Xe){Ct(a("清除失败:{error}",{error:dn(Xe)}),"err")}finally{ce.current=!1,P(!1)}}}function jt(){if(!De)return null;const ke=H.trim(),Xe={};return ee?ue.noAuth!==!0&&(Xe.noAuth=!0):ke?Xe.apiKey=ke:ue.noAuth===!0&&(Xe.noAuth=!1),Object.keys(Xe).length?Xe:null}function an(){if(!L)return null;const ke=D.trim(),Xe=Q.trim();if(!ke)return{error:a("请填写提供商名称")};if(!Xe)return{error:a("请填写提供商的 Base URL")};try{if(!["http:","https:"].includes(new URL(Xe).protocol))throw new Error("invalid protocol")}catch{return{error:a("请填写有效的 HTTP 或 HTTPS 地址")}}const Qe=typeof L.clientEmulation=="string"?L.clientEmulation:"";return L.name===ke&&L.protocol===q&&L.baseUrl===Xe&&Qe===U?null:{id:L.id,name:ke,protocol:q,baseUrl:Xe,clientEmulation:U}}async function Xt(){if(xt||ce.current||!Rn)return;_("");let ke;try{ke=yc(S)}catch(Pn){ge("network"),_(r.jsx("span",{className:"text-destructive",children:dn(Pn)})),Ct(dn(Pn),"err");return}const Xe=an();if(Xe&&"error"in Xe){ge("provider"),_(r.jsx("span",{className:"text-destructive",children:Xe.error}));return}const Qe=Si(ue)?SNe(ue,G):null;if(Qe&&"error"in Qe){ge("query"),_(r.jsx("span",{className:"text-destructive",children:Qe.error}));return}const Yt=jNe(ue,ne),Rt=nCe(ue.balanceQuery?.scheme,se),fn=jt()||{},At=Number(je);if(!Number.isFinite(At)||At<0){ge("basic"),_(r.jsx("span",{className:"text-destructive",children:a("并发上限必须是 0~{max} 的整数",{max:Su})})),Ct(a("并发上限必须是 0~{max} 的整数",{max:Su}),"err");return}const Re=Math.min(Su,Math.round(At)),mt=Number(ue.maxConcurrent)||0,Bt=Re!==mt?{maxConcurrent:Re}:{};if(!(Xe&&!await sn(a("保存提供商共用配置?"),a("「{name}」名下 {count} 个账号共用这些连接设置。修改协议或 Base URL 可能中断正在进行的请求。",{name:L?.name||L?.id||"",count:Je}),a("确认保存")))){ce.current=!0,P(!0);try{const Pn=ve&&C.trim()?{balanceToken:C.trim()}:{},mn=tN(ue)&&R!==rI(ue)?{zcodePlan:R}:{},vn=g.trim()||ue.name,Zn=b.trim(),Ns=await Yh(e,{...vn!==ue.name?{name:vn}:{},...Zn!==(ue.userAgent||"").trim()?{userAgent:Zn}:{},enabled:u,allowRouteSkip:f,proxy:ke,...Pn,...mn,...fn,...Bt,...Rt?{balanceQuery:Rt}:{},...Qe&&"patch"in Qe?Qe.patch:{},...Yt&&"patch"in Yt?Yt.patch:{}});if((vn!==ue.name||ue.nameCustom===!0)&&Ns.nameCustom!==!0)throw new Error(a("账号更新结果未确认,请刷新后核对设置"));if(l(Ns),Xe)try{const Cr=ft().wbCustomProvidersUi?.update;if(!Cr)throw new Error(a("账号更新接口不可用,请重新打开页面"));await Cr(Xe)}catch(Cr){ge("provider"),_(r.jsx("span",{className:"text-destructive",children:a("账号已保存,但提供商未更新:{error}",{error:dn(Cr)})}));try{await Qo()}catch(Qr){Ct(a("账号已保存,但列表刷新失败:{error}",{error:dn(Qr)}),"err")}P(!1);return}t(),Ct(a("✅ 账号设置已保存"));try{await Qo(),await Ig()}catch(Cr){Ct(a("账号已保存,但列表刷新失败:{error}",{error:dn(Cr)}),"err")}}catch(Pn){_(r.jsx("span",{className:"text-destructive",children:dn(Pn)})),Ct(a("保存失败:{error}",{error:dn(Pn)}),"err")}finally{ce.current=!1,P(!1)}}}const gn=Number(Ga(tn(ue)).concurrencyDefault)||0,un=ve||De||tN(ue),cr=["basic",...un?["credential"]:[],...Si(ue)?["query"]:[],"limiter","network"],yn=L?.name||ft().wbProviders?.labelOf?.(tn(ue))||tn(ue);async function xn(){if(!(xt||ce.current||!L)){ce.current=!0,he(!0);try{const ke=ft().wbCustomProvidersUi?.remove;if(!ke)throw new Error(a("账号更新接口不可用,请重新打开页面"));await ke(L.id)&&t()}catch(ke){Ct(a("删除失败:{error}",{error:dn(ke)}),"err")}finally{ce.current=!1,he(!1)}}}async function jn(){xt||ce.current||Rn&&!await sn(a("放弃未保存的修改?"),a("前往模型管理会关闭账号设置,尚未保存的修改不会生效。"),a("前往模型管理"))||(t(),ft().wbApp?.showPage?.("gateway"))}return r.jsx(at,{open:!0,onOpenChange:(ke,Xe)=>{ke||(Xe.cancel(),Ke())},children:r.jsxs(it,{className:"acct-settings-dialog",showCloseButton:!xt,children:[r.jsxs(ot,{className:"acct-dlg-header",children:[r.jsx("div",{className:"acct-dlg-avatar",children:r.jsx(ha,{name:De?"agent":"accounts",size:23})}),r.jsxs("div",{className:"acct-dlg-identity",children:[r.jsxs("div",{className:"acct-dlg-title-row",children:[r.jsx(st,{children:a("账号设置")}),De?r.jsx(Ee,{variant:"secondary",shape:"tag",children:a("自定义 API")}):null]}),r.jsxs("p",{children:[r.jsx("span",{children:dCe(o)}),r.jsx("span",{className:"acct-dlg-title-dot",children:"·"}),r.jsxs("span",{className:`acct-dlg-account-state${o.enabled===!1?" off":""}`,children:[r.jsx(Qk,{}),o.enabled===!1?a("已停用"):a("已启用")]})]})]})]}),r.jsx(lt,{className:"acct-dlg-body",children:r.jsxs("div",{className:"acct-dlg",children:[r.jsxs(Bh,{className:"acct-dlg-rail","aria-label":a("账号设置分组"),children:[r.jsxs(Go,{className:"acct-dlg-nav",children:[r.jsx("div",{className:"acct-dlg-nav-label",children:a("当前账号")}),cr.map(ke=>r.jsx(Ts,{active:ie===ke,title:xe[ke].title,disabled:xt,className:"shadow-none",icon:r.jsx(ha,{name:xe[ke].icon}),trailing:On[ke]?r.jsx("span",{className:"acct-dlg-dirty-dot","aria-label":a("有未保存的修改")}):void 0,onClick:()=>ge(ke),children:xe[ke].title},ke)),L?r.jsxs(r.Fragment,{children:[r.jsx("div",{className:"acct-dlg-nav-divider"}),r.jsxs("div",{className:"acct-dlg-nav-label",children:[a("提供商"),r.jsx("span",{children:a("共用")})]}),r.jsx(Ts,{active:ie==="provider",disabled:xt,title:xe.provider.title,icon:r.jsx(ha,{name:xe.provider.icon}),trailing:On.provider?r.jsx("span",{className:"acct-dlg-dirty-dot","aria-label":a("有未保存的修改")}):void 0,onClick:()=>ge("provider"),children:xe.provider.title})]}):null]}),L?r.jsxs("div",{className:"acct-dlg-rail-context",children:[r.jsxs("strong",{children:[r.jsx(ha,{name:"accounts",size:14}),yn]}),r.jsx("p",{children:a("{count} 个账号共用连接配置",{count:Je})})]}):null]}),r.jsxs("div",{className:"acct-dlg-main",children:[r.jsxs("div",{className:"acct-dlg-pane-head",children:[r.jsxs("div",{children:[r.jsx("h3",{children:Se.title}),r.jsx("p",{children:Se.description})]}),r.jsxs("span",{className:`acct-dlg-scope${ie==="provider"?" shared":""}`,children:[r.jsx(ha,{name:"accounts",size:13}),ie==="provider"?a("{count} 个账号共用",{count:Je}):a("仅当前账号")]})]}),r.jsx("div",{ref:ye,className:"acct-dlg-scroll","aria-busy":A,children:r.jsxs("div",{className:"acct-dlg-pane",inert:xt?!0:void 0,children:[ie==="basic"?r.jsxs(r.Fragment,{children:[r.jsxs(wc,{title:a("账号信息"),children:[r.jsxs(ct,{className:"acct-dlg-field",children:[r.jsx(ut,{htmlFor:"account-name-input",children:a("备注名")}),r.jsx(ze,{id:"account-name-input",maxLength:100,placeholder:a("账号显示名称"),value:g,onChange:ke=>v(ke.currentTarget.value)})]}),r.jsxs("div",{className:"acct-dlg-readonly",children:[r.jsx("span",{children:a("账号 ID")}),r.jsx("code",{children:ue.id})]}),r.jsxs(ct,{className:"acct-dlg-toggle-field",children:[r.jsxs("div",{children:[r.jsx(ut,{htmlFor:"account-enabled",children:a("启用账号")}),r.jsx(wr,{children:a("关闭后不参与转发,余额查询不受影响。")})]}),r.jsx(St,{id:"account-enabled",checked:u,onCheckedChange:d})]})]}),r.jsxs(wc,{title:a("转发行为"),children:[r.jsxs(ct,{className:"acct-dlg-toggle-field",children:[r.jsxs("div",{children:[r.jsx(ut,{htmlFor:"account-route-skip",children:a("失败后允许换号")}),r.jsx(wr,{children:a("关闭后,该账号转发失败时返回本次错误,不再顺延其他账号。禁用、无凭证和限制器等保护仍生效。")})]}),r.jsx(St,{id:"account-route-skip",checked:f,onCheckedChange:m})]}),r.jsxs(ct,{className:"acct-dlg-concurrency",children:[r.jsxs("div",{children:[r.jsx(ut,{htmlFor:"account-conc-input",children:a("并发上限")}),r.jsx(wr,{children:a("达到上限后,将请求交给其他账号。")})]}),r.jsx(ze,{id:"account-conc-input",type:"number",min:0,max:Su,step:1,value:je,onChange:ke=>te(ke.currentTarget.value)})]})]}),r.jsx("p",{className:"detail acct-dlg-hint",children:gn>0?a("0 = 按本家默认 {default}",{default:gn}):a("0 = 不限")}),j?r.jsx(wc,{title:a("请求标识"),children:r.jsxs(ct,{className:"acct-dlg-field",children:[r.jsx(ut,{htmlFor:"account-user-agent",children:"User-Agent"}),r.jsx(Ug,{id:"account-user-agent",value:b,onChange:y,presets:k,disabled:xt}),r.jsx(wr,{children:a("用于当前账号的对话、余额查询、模型拉取、模型测试、签到及凭证刷新等上游请求。留空使用提供商默认值;可选预置或直接填写。")})]})}):null,i?r.jsx("div",{className:"acct-dlg-route-context",children:i}):r.jsxs("p",{className:"detail acct-dlg-group-note",children:[r.jsx(ha,{name:"route",size:14}),a("在账号列表中拖动分组或行首把手,调整转发顺序。")]})]}):null,ie==="credential"&&un?r.jsxs(r.Fragment,{children:[ve?r.jsx(iCe,{configured:o.hasBalanceToken===!0,value:C,onChange:T,clearBusy:xt,onClear:()=>{zt()}}):null,De?r.jsx(oCe,{hasApiKey:ue.hasApiKey===!0,noAuth:ee,value:H,clearBusy:xt,onClear:()=>{ht()},onValue:ke=>{J(ke),ke.trim()&&K(!1)},onToggleNoAuth:ke=>{K(ke),ke&&J("")}}):null,tN(ue)?r.jsx(wc,{title:a("使用套餐"),children:r.jsx(QNe,{plan:R,hasJwt:o.canClaim===!0,onChange:O})}):null,L?r.jsxs("div",{className:"acct-dlg-related",children:[r.jsx(ha,{name:"agent",size:18}),r.jsxs("div",{children:[r.jsx("h3",{children:a("要修改连接地址或协议?")}),r.jsx("p",{children:a("{count} 个账号共用提供商的连接配置。",{count:Je})})]}),r.jsxs(B,{variant:"link",size:"xs",onClick:()=>ge("provider"),children:[a("连接设置"),r.jsx(ha,{name:"caretRight",size:12})]})]}):null]}):null,ie==="query"&&Si(ue)?r.jsxs(r.Fragment,{children:[r.jsx(wc,{title:a("余额查询"),children:r.jsx(q8,{draft:G,onChange:Y})}),We?r.jsxs(wc,{title:a("查询凭证"),action:r.jsx(Ee,{variant:"secondary",shape:"tag",children:We.label}),children:[r.jsx(sCe,{spec:We,values:se,configured:nt,onValue:(ke,Xe)=>re(Qe=>({...Qe,[ke]:Xe})),onClear:ke=>{Ht(ke)},clearBusy:xt,idPrefix:"account-balance-query"}),kt?r.jsx("p",{className:"detail acct-dlg-inline-note",children:a("查询凭证还没配齐:填好后余额列才有读数,在此之前会显示「未配置」。")}):null]}):null,r.jsxs("p",{className:"detail acct-dlg-group-note",children:[r.jsx(ha,{name:"info",size:14}),a("余额读数也是限制器余额规则的数据来源。")]})]}):null,ie==="limiter"?r.jsxs(r.Fragment,{children:[r.jsx(H8,{account:ue,draft:ne,onChange:de,allowBalance:Si(ue)}),r.jsxs("p",{className:"detail acct-dlg-group-note",children:[r.jsx(ha,{name:"info",size:14}),a("没有规则或全部停用时不限制;跳过后自动恢复,禁用后需手动启用。")]})]}):null,ie==="network"?r.jsxs(r.Fragment,{children:[r.jsxs(wc,{title:a("出网方式"),children:[r.jsx(xN,{draft:S,onChange:N,idPrefix:"account-proxy",allowRotate:Ie}),o.proxy?.error?r.jsx("p",{className:"detail text-destructive acct-dlg-block",children:a("当前代理不可用:{error}(不会自动改为直连)",{error:o.proxy.error})}):null]}),r.jsxs("p",{className:"detail acct-dlg-group-note",children:[r.jsx(ha,{name:"shield",size:14}),a("代理只作用于当前账号,不改变其他账号的出网方式。")]})]}):null,ie==="provider"&&L?r.jsx(cCe,{provider:L,count:Je,name:D,protocol:q,baseUrl:Q,accountBaseUrl:ue.baseUrl||"",emulation:U,onName:F,onProtocol:V,onBaseUrl:X,onEmulation:z,onClearAccountBaseUrl:()=>{Tt()},disabled:xt,onRemove:()=>{xn()},onModels:()=>{jn()}}):null]})})]})]})}),r.jsxs(pt,{className:"acct-dlg-footer",children:[r.jsxs("div",{className:`acct-dlg-save-state${Rn?" dirty":""}`,role:"status",children:[r.jsx(ha,{name:M?"info":Rn?"timer":"shield",size:16}),r.jsxs("div",{children:[r.jsx("strong",{children:M||(A?a("正在保存…"):Rn?a("{count} 个分区有未保存的更改",{count:Rn}):a("没有未保存的更改"))}),r.jsx("p",{children:On.provider?a("包含提供商共用配置,将影响 {count} 个账号",{count:Je}):a("各分区的更改将统一保存")})]})]}),r.jsxs("div",{className:"acct-dlg-footer-actions",children:[r.jsx(B,{variant:"outline",disabled:xt,onClick:()=>{Ke()},children:a("取消")}),r.jsx(B,{variant:"default",disabled:xt||!Rn,onClick:()=>{Xt()},children:a(A?"保存中…":"保存更改")})]})]})]})})}function fCe(){const e=p.useSyncExternalStore(Kh,()=>Sn());return e.dialog?e.dialog.kind==="settings"?r.jsx(bG,{id:e.dialog.id,onClose:xy},e.dialog.id):e.dialog.kind==="group"?r.jsx(gG,{provider:e.dialog.provider,onClose:xy},e.dialog.provider):r.jsx(ONe,{ids:e.dialog.ids,action:e.dialog.action,onClose:xy},e.dialog.ids.join(",")):null}function em(e){return!!(e&&["queued","runtime","starting","loading","registering"].includes(e.phase))}function tm(e){return e?.phase==="failed"||e?.phase==="timeout"}function nm(e,t){switch(e?.phase){case"queued":return t("等待加载");case"runtime":return t("准备运行环境");case"starting":return t("正在启动");case"loading":return t("正在加载");case"registering":return t("即将就绪");case"ready":return t("已就绪");case"failed":return t("加载失败");case"timeout":return t("初始化超时");case"blocked":return t("等待运行环境恢复");case"disabled":return t("已停用");default:return t("状态待确认")}}function yG(e,t,n=Date.now()){if(e?.error&&tm(e))return e.error;switch(e?.phase){case"queued":return t("等待前面的插件完成,不代表加载失败。");case"runtime":return t("正在检查或准备脚本运行环境。");case"starting":return t("正在启动插件,账号将在就绪后自动恢复。");case"loading":return n-e.updatedAt>1e4?t("启动较慢,仍在加载;尚未收到失败结果。"):t("正在初始化插件,尚未收到失败结果。");case"registering":return t("初始化已完成,正在等待校验和登记。");case"ready":return t("插件已就绪,账号列表将自动同步。");case"timeout":return t("本次初始化超过等待时限,已停止;可查看诊断后重试。");case"blocked":return t("共享运行环境尚未就绪,本插件没有明确的加载失败结果。");case"failed":return t("本次加载未完成,请查看诊断。");default:return t("暂未取得明确的加载结果,不能据此判断启动失败。")}}let kc={value:null,error:"",receivedAt:0,unavailable:!1};const QI=new Set,ky=e=>(QI.add(e),()=>{QI.delete(e)}),Bl=()=>kc;function ZI(e){kc={...kc,...e},QI.forEach(t=>t())}let NN;function rf(){NN?.()}function hCe(e){let t=!1,n=!1,s=!1,i,o,l=null,u=!1,d="",f=0;ZI({value:null,error:"",receivedAt:0,unavailable:!1});const m=()=>{if(l){u=!0;return}l=(async()=>{do{u=!1;try{await e.refresh()}catch{}}while(!t&&u)})().finally(()=>{l=null})},g=async()=>{if(t||document.hidden)return;if(n){s=!0;return}n=!0,o=new AbortController;const y=setTimeout(()=>o?.abort(),8e3);try{const k=await e.read(o.signal);if(t||o.signal.aborted)return;if(!k||typeof k.bootId!="string"||typeof k.revision!="string"||!k.providers||!Array.isArray(k.packs))throw new Error("Invalid plugin startup status");f=0;const j=kc.value?.bootId!==k.bootId||kc.value?.revision!==k.revision;ZI({value:k,error:k.error||"",receivedAt:Date.now(),unavailable:!1}),j&&e.onChange?.();const S=`${k.bootId}:${k.availabilityRevision}`,N=e.session();(d&&d!==S||!N||N.bootId!==k.bootId||N.availabilityRevision!==k.availabilityRevision)&&m(),d=S}catch(k){if(t)return;f+=1;const j=k?.status;ZI({error:k instanceof Error?k.message:String(k),unavailable:j===404})}finally{if(clearTimeout(y),n=!1,o=void 0,!t){clearTimeout(i);const k=s?0:kc.unavailable?6e4:f?Math.min(3e4,2e3*f):kc.value?.pending||kc.value?.scriptOperation?.active?1500:2e4;s=!1,i=setTimeout(()=>{g()},k)}}},v=()=>{clearTimeout(i),g()},b=()=>{document.hidden?clearTimeout(i):v()};return NN=v,document.addEventListener("visibilitychange",b),v(),()=>{t=!0,clearTimeout(i),o?.abort(),NN===v&&(NN=void 0),document.removeEventListener("visibilitychange",b)}}function JI(e,t){const n=kc.value?.packs.find(s=>s.id===e)?.startup;return t&&(!n||t.updatedAt>n.updatedAt)?t:n||t}function mCe(e){const t=e.providers.map(n=>{const s=kc.value?.providers[n.id];if(!s||n.startup&&n.startup.updatedAt>s.startup.updatedAt)return n;if(!s.enabled)return{...n,packId:s.packId,startup:s.startup,reason:s.packEnabled?"provider_disabled":"pack_disabled"};const i=s.startup,o=tm(i)?i.phase==="timeout"?"load_timeout":"load_failed":em(i)||s.available?"loading":"not_loaded";return{...n,packId:s.packId,startup:i,reason:o}});return{...e,providers:t}}const CN=e=>e.reason==="load_failed"||e.reason==="load_timeout";function jG(e,t){return t==="all"?!0:t==="loading"?e.reason==="loading"||e.reason==="not_loaded":t==="missing"?e.reason==="not_installed":t==="disabled"?e.reason==="pack_disabled"||e.reason==="provider_disabled":CN(e)}function pCe(e,t){switch(e.reason){case"not_installed":return t("插件未安装");case"pack_disabled":return t("插件包已停用");case"provider_disabled":return t("提供商已停用");case"load_failed":return t("加载失败");case"load_timeout":return t("初始化超时");case"loading":return e.startup?nm(e.startup,t):t("正在加载");default:return nm(e.startup,t)}}function gCe(e,t,n){switch(e.reason){case"not_installed":return t("重新安装这个插件后自动回来");case"pack_disabled":return t("启用插件包后自动回来");case"provider_disabled":return t("启用这家提供商后自动回来");default:return yG(e.startup,t,n)}}function xCe(e,t){return e.reason==="not_installed"?t("去安装"):e.reason==="pack_disabled"||e.reason==="provider_disabled"?t("去启用"):CN(e)||e.startup?.phase==="blocked"?t("查看原因"):t("查看进度")}let eM=null;const tM=new Set;function Sy(e){eM=e,tM.forEach(t=>t())}function vCe(){const e=eM;return eM=null,e}function bCe(e){return tM.add(e),()=>{tM.delete(e)}}function Ny(e,t){return p.useSyncExternalStore(ky,Bl),JI(e,t)}function nM({id:e,status:t,t:n}){const s=Ny(e,t),i=Bl(),o=i.value?.now||Date.now(),l=s?.startedAt?Math.max(0,Math.round(((s.finishedAt||o)-s.startedAt)/1e3)):null;return r.jsxs("section",{className:"flex flex-col gap-2 text-xs","aria-label":n("加载状态"),children:[r.jsxs("div",{className:"flex items-center gap-2",children:[em(s)?r.jsx(Qt,{className:"size-3.5"}):null,r.jsx(Ee,{variant:tm(s)?"warning":"outline",shape:"tag",children:nm(s,n)}),l!==null?r.jsx("span",{className:"text-muted-foreground",children:n("本次用时 {n} 秒",{n:l})}):null]}),r.jsx("p",{className:"m-0 whitespace-pre-wrap break-words text-muted-foreground",children:yG(s,n,o)}),s?.phase==="blocked"&&s.error?r.jsx("p",{className:"m-0 whitespace-pre-wrap break-words text-muted-foreground",children:s.error}):null,s?.startedAt?r.jsx("p",{className:"m-0 text-muted-foreground",children:n("开始时间:{time}",{time:new Date(s.startedAt).toLocaleString()})}):null,s?.finishedAt?r.jsx("p",{className:"m-0 text-muted-foreground",children:n("完成时间:{time}",{time:new Date(s.finishedAt).toLocaleString()})}):null,s?.steps?.length?r.jsx("div",{className:"flex flex-wrap gap-x-3 gap-y-1 text-muted-foreground",children:s.steps.map((u,d)=>r.jsxs("span",{children:[nm({...s,phase:u.phase},n)," · ",(u.durationMs/1e3).toFixed(1)," s"]},d))}):null,s?.previousError?r.jsxs("details",{className:"text-muted-foreground",children:[r.jsx("summary",{children:n("上次加载记录(非本次故障)")}),r.jsx("p",{className:"whitespace-pre-wrap break-words",children:s.previousError})]}):null,i.error&&!i.unavailable?r.jsx("p",{className:"m-0 text-muted-foreground",children:n("暂时无法获取插件状态,显示上次结果;这不代表插件启动失败。")}):null]})}function yCe({id:e,name:t,status:n,script:s,onClose:i,retry:o,t:l}){const u=Ny(e,n),d=Bl().value?.packs.find(k=>k.id===e)?.name||t,f=Bl().value?.scriptOperation,[m,g]=p.useState(!1),[v,b]=p.useState("");p.useEffect(()=>{rf()},[e]);const y=async()=>{if(!(m||em(u)||Bl().error||s&&f?.active)){g(!0),b("");try{await o(),rf()}catch(k){b(k instanceof Error?k.message:String(k))}finally{g(!1)}}};return r.jsx(at,{open:!0,onOpenChange:k=>{!k&&!m&&i()},children:r.jsxs(it,{className:"w-[min(560px,calc(100vw-32px))]",children:[r.jsx(ot,{children:r.jsxs(st,{children:[d," · ",l("加载诊断")]})}),r.jsxs(lt,{children:[r.jsx(nM,{id:e,status:u,t:l}),s?r.jsx("p",{className:"m-0 text-xs text-muted-foreground",children:l("脚本插件共用运行环境;重试会等待当前任务结束,不会删除账号或重新安装插件。")}):null,f?.target?.id===e&&f.error&&!em(u)&&u?.phase!=="ready"&&(f.updatedAt||0)>=(u?.startedAt||0)?r.jsx("p",{role:"alert",className:"m-0 text-xs text-destructive",children:f.error}):null,s&&f?.active?r.jsx("p",{className:"m-0 text-xs text-muted-foreground",role:"status",children:l("正在重试…")}):null,v?r.jsx("p",{role:"alert",className:"m-0 text-xs text-destructive",children:v}):null]}),r.jsxs(pt,{children:[r.jsx(B,{variant:"outline",disabled:m,onClick:rf,children:l("刷新状态")}),u&&u.phase!=="ready"&&u.phase!=="disabled"?r.jsx(B,{disabled:m||em(u)||!!Bl().error||!!(s&&f?.active),onClick:()=>{y()},children:l(m?"正在重试…":"重新加载")}):null,r.jsx(B,{variant:"ghost",disabled:m,onClick:i,children:l("关闭")})]})]})})}function wG(e){return e.providers.filter(CN).length}function jCe({hidden:e,onOpen:t}){return e.total<=0?null:r.jsxs(B,{id:"btn-hidden-accounts",variant:"outline",className:"acct-hidden-entry",title:a("查看因插件未就绪而暂未显示的账号"),onClick:()=>{rf(),t()},children:[r.jsxs("svg",{viewBox:"0 0 24 24",width:"14",height:"14",fill:"none",stroke:"currentColor",strokeWidth:1.7,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[r.jsx("path",{d:"M2.5 12s3.4-6 9.5-6 9.5 6 9.5 6-3.4 6-9.5 6-9.5-6Z"}),r.jsx("path",{d:"m4 20 16-16"})]}),a("未显示账号"),r.jsx(Ee,{variant:wG(e)?"warning":"outline",shape:"tag",children:e.providers.length})]})}function wCe({hidden:e,open:t,onOpenChange:n}){const[s,i]=p.useState("all");p.useEffect(()=>{t&&rf()},[t]);const o=Bl(),l=m=>e.providers.filter(g=>jG(g,m)).length,u=e.providers.filter(m=>jG(m,s)),d=e.providers.filter(m=>m.reason==="loading").length,f=m=>{m?.packId&&!["not_installed","pack_disabled","provider_disabled"].includes(m.reason)&&Sy(m.packId),n(!1),ft().wbApp?.showPage?.("plugins")};return r.jsx(Qb,{open:t,onOpenChange:m=>{m||n(!1)},children:r.jsxs(Zb,{side:"right",showHandle:!1,className:"w-[min(480px,94vw)]",children:[r.jsx(DS,{children:r.jsx(_S,{children:a("未显示的账号")})}),r.jsxs(LS,{className:"acct-hidden-body",children:[r.jsx("p",{className:"acct-hidden-lead",children:a("{providers} 家提供商、共 {total} 个账号。数据仍在,只是当前没有可用的插件来执行它们。",{providers:e.providers.length,total:e.total})}),d?r.jsx("p",{className:"m-0 text-xs text-muted-foreground",role:"status",children:a("正在加载 · {n} 家提供商的账号暂未显示,就绪后自动恢复。",{n:d})}):null,o.error&&!o.unavailable?r.jsxs("p",{className:"m-0 text-xs text-muted-foreground",role:"status",children:[a("暂时无法获取插件状态,显示上次结果;这不代表插件启动失败。"),r.jsx(B,{variant:"link",size:"xs",onClick:rf,children:a("刷新状态")})]}):null,r.jsx(en,{"aria-label":a("按未显示原因筛选"),value:s,onValueChange:i,options:[{value:"all",label:a("全部"),count:l("all")},{value:"loading",label:a("待就绪"),count:l("loading")},{value:"missing",label:a("未安装"),count:l("missing")},{value:"disabled",label:a("已停用"),count:l("disabled")},{value:"broken",label:a("加载异常"),count:l("broken")}]}),r.jsxs("div",{className:"acct-hidden-rows",children:[u.map(m=>r.jsxs("div",{className:"acct-hidden-row",children:[r.jsx("span",{className:"acct-hidden-avatar","aria-hidden":"true",children:a(m.label).trim().slice(0,1)}),r.jsxs("div",{className:"acct-hidden-info",children:[r.jsxs("div",{className:"acct-hidden-name",children:[r.jsx("span",{className:"truncate",children:a(m.label)}),r.jsx(Ee,{variant:CN(m)?"warning":"outline",shape:"tag",children:pCe(m,a)})]}),r.jsxs("p",{className:"acct-hidden-detail",children:[a("保留 {n} 个账号",{n:m.count})," · ",gCe(m,a,o.value?.now)]})]}),r.jsx(B,{variant:"outline",size:"sm",onClick:()=>f(m),children:xCe(m,a)})]},m.id)),u.length?null:r.jsx("p",{className:"acct-hidden-none",children:a("这一类现在没有账号")})]}),r.jsx("p",{className:"acct-hidden-foot",children:a("这里只影响「显示」:卸载或停用插件不会删除账号;重新安装、启用并成功加载后,这些账号会自动回到列表。")})]}),r.jsxs(bP,{children:[r.jsx(B,{variant:"outline",onClick:()=>n(!1),children:a("知道了")}),r.jsx(B,{onClick:()=>f(),children:a("去「插件」页")})]})]})})}function kCe({hidden:e,onOpen:t}){return r.jsxs("div",{className:"acct-hidden-empty",role:"status",children:[r.jsxs("span",{children:[r.jsx(Oa,{variant:wG(e)?"warning":"muted",className:"size-1.5"}),a("共有 {n} 个账号暂未显示",{n:e.total})]}),r.jsx(B,{variant:"outline",size:"sm",onClick:t,children:a("查看")})]})}function kG(e){const t=Math.round(e/6e4);if(t<1)return a("不到 1 分钟");if(t<60)return a("还有 {n} 分钟",{n:t});const n=Math.floor(t/60),s=t%60;return n<24?s?a("还有 {h} 小时 {m} 分",{h:n,m:s}):a("还有 {h} 小时",{h:n}):a("还有 {d} 天",{d:Math.floor(n/24)})}function SCe(e){const t=Date.now();return lI(e).map(n=>{const s=Number(n.resetAt),i=Number(n.at),o=dI(n.resetAt),l=o===uI,u=n.message||(n.status?a("上游返回 {status}",{status:n.status}):""),d=s-i,f=i>0&&Number.isFinite(d)&&d>0?Math.max(0,Math.min(100,(t-i)/d*100)):null,m=l?a("恢复时间未知"):kG(s-t),g=l?"":a("{time} 恢复",{time:o});return{model:n.model,wait:m,tone:l?"muted":"warn",reset:g,reason:u,title:[n.model,m,g,u,a("到恢复时间后自动解除,无需手动操作")].filter(Boolean).join(" · "),progress:f}})}function NCe({accountName:e,rows:t,count:n,cooldown:s,soonest:i,onClear:o}){const[l,u]=p.useState(!1),d=p.useRef(null),f=p.useCallback(v=>{d.current=v,v&&(v.scrollTop=0)},[]),m=p.useCallback(()=>d.current??null,[]),g=i===uI?a("待定"):i;return r.jsxs(r.Fragment,{children:[r.jsxs(ui,{open:l,onOpenChange:u,children:[r.jsxs(wi,{render:r.jsx(B,{size:"default",variant:"ghost",type:"button",className:"usage-toggle warn",title:a(s?"点击查看账号冷却与模型限流明细":"点击查看各模型的限流明细"),"aria-label":a("限流明细")}),children:[r.jsx("span",{className:"val",children:s?a("账号冷却"):a("{n} 个模型",{n})}),r.jsx("span",{className:"caret","aria-hidden":!0,children:"▾"})]}),r.jsx(di,{align:"center",sideOffset:6,className:"w-[320px]",initialFocus:m,children:r.jsxs("div",{className:"usage-pop-limit",ref:f,tabIndex:-1,children:[e?r.jsx("div",{className:"usage-pop-sub",children:e}):null,r.jsx("div",{className:"usage-pop-group",children:a("限流明细")}),s?r.jsxs("div",{className:"usage-pop-row",children:[r.jsxs("div",{className:"usage-pop-line",children:[r.jsx("span",{className:"usage-pop-name",children:a("账号冷却")}),r.jsx("span",{className:"usage-pop-view warn",children:kG(s.resetAt-Date.now())})]}),r.jsx("div",{className:"lp-pop-subline",children:r.jsxs("span",{className:"lp-pop-reason",children:[a("{time} 恢复",{time:i}),s.message?` · ${s.message}`:""]})})]}):null,t.map(v=>r.jsxs("div",{className:"usage-pop-row",title:v.title,children:[r.jsxs("div",{className:"usage-pop-line",children:[r.jsx("span",{className:"usage-pop-name lp-pop-model",children:v.model}),r.jsx("span",{className:`usage-pop-view ${v.tone}`,children:v.wait})]}),r.jsxs("div",{className:"lp-pop-subline",children:[r.jsxs("span",{className:"lp-pop-reason",children:[v.reset?`${v.reset} · `:"",v.reason]}),r.jsx(B,{variant:"ghost",size:"xs",title:a("清掉本机的限流标记,立刻重新尝试该模型(上游若仍在限流会再次被标记)"),onClick:()=>o(v.model),children:a("清除")})]}),v.progress!==null?r.jsx(kg,{value:v.progress,variant:"muted",className:"mt-1.5",trackClassName:"h-[3px]","aria-label":a("冷却进度 {percent}%",{percent:Math.round(v.progress)})}):null]},v.model)),r.jsxs("div",{className:"lp-pop-foot",children:[r.jsx("span",{className:"lp-pop-note",children:s?a("账号全部模型暂时停止转发 · 到恢复时间自动解除"):a("{n} 个模型限流中 · 到恢复时间自动解除",{n})}),r.jsx(B,{variant:"outline",size:"xs",title:a("清除该账号的冷却与全部模型限流标记"),onClick:()=>o(""),children:a("全部清除")})]})]})})]}),r.jsx("span",{className:"lim-sub",title:a(s?"账号冷却":"最早恢复"),children:s?a("{time} 恢复",{time:g}):a("最早 {soonest} 恢复",{soonest:g})})]})}function SG({account:e,onOpen:t}){if(e.enabled===!1||!ay(e))return null;const n=VP(e),s=sy(e),i=s.some((u,d)=>u.action==="skip"&&n[d]?.hit&&n[d]?.account),o=[...new Set(s.flatMap((u,d)=>u.action==="skip"&&n[d]?.hit?n[d].models:[]))],l=i||!o.length?a("限制器 · 账号已跳过"):a("限制器 · {n} 个模型",{n:o.length});return r.jsx(B,{variant:"ghost",size:"xs",className:"h-auto p-0",onClick:t,title:a(i?"账号级条件组已触发;点击查看限制器":"仅跳过命中条件的模型,其他模型仍可转发;点击查看限制器"),children:r.jsx(Ee,{variant:"warning",shape:"tag",children:l})})}const Cy=new Map,rm=new Map;let rM=null;function Pa(e,t,n){const s={selector:t,mount:n,done:!1},i=Cy.get(e);i?i.push(s):Cy.set(e,[s]),rM===e&&CG(e)}function NG(e){if(!(e.done||!document.querySelector(e.selector))){e.done=!0;try{e.mount()}catch(n){console.error("[islands] 页面挂载失败:",e.selector,n)}}}function CG(e){const t=Cy.get(e);if(!t||t.length===0)return;for(const i of t)NG(i);const n=t.filter(i=>!i.done);if(n.length===0){Cy.delete(e),rm.get(e)?.disconnect(),rm.delete(e);return}if(rm.has(e))return;const s=new MutationObserver(()=>{for(const i of n)NG(i);n.every(i=>i.done)&&(s.disconnect(),rm.delete(e),Cy.delete(e))});s.observe(document.body,{childList:!0,subtree:!0}),rm.set(e,s)}function CCe(e){if(e!==rM)for(const[t,n]of rm)t!==e&&(n.disconnect(),rm.delete(t));rM=e,CG(e)}window.addEventListener("wb:page",e=>{const t=e.detail;typeof t=="string"&&t&&CCe(t)});const sm=[20,50,100,200],sM=[20,50,100,200,"all"],Hg=50,AG="workbuddy-desktop-table-size:";function EG(e){return e==="all"?a("全部"):String(e)}function AN(e,t=sM,n=Hg){t.includes(n)||(n=t.includes(Hg)?Hg:t[0]);let s=null;try{s=localStorage.getItem(AG+e)}catch{return n}if(s===null||s.trim()==="")return n;if(s==="all")return t.includes("all")?"all":n;const i=Number(s);return Number.isFinite(i)&&t.includes(i)?i:n}function EN(e,t){try{localStorage.setItem(AG+e,String(t))}catch{}}function Ay(e,t,n={}){const s=n.sizes??sM,i=n.defaultSize??Hg,[o,l]=p.useState(()=>AN(t,s,i)),[u,d]=p.useState(1),f=Math.max(1,o==="all"?1:Math.ceil(e/o)),m=Math.min(Math.max(1,u),f);p.useEffect(()=>{m!==u&&d(m)},[m,u]);const g=p.useCallback(j=>{l(j),EN(t,j),d(1)},[t]),v=p.useCallback(j=>{d(Math.min(Math.max(1,Math.round(j)||1),f))},[f]),b=o==="all"?0:(m-1)*o,y=o==="all"?e:Math.min(e,b+o),k=p.useCallback(j=>o==="all"?j.slice():j.slice(b,y),[o,b,y]);return{size:o,page:m,pageCount:f,rangeStart:e?b+1:0,rangeEnd:e?y:0,paged:o!=="all",setSize:g,goto:v,slice:k}}function sf({total:e,page:t,pageCount:n,size:s,sizes:i=sM,onSizeChange:o,onPageChange:l,range:u=null,disabled:d=!1,leading:f,className:m}){const[g,v]=p.useState(String(t));p.useEffect(()=>v(String(t)),[t]);const b=()=>{const j=g.trim();if(!j){v(String(t));return}const S=Number(j);if(!Number.isFinite(S)){v(String(t));return}const N=Math.min(Math.max(1,Math.round(S)),n);v(String(N)),N!==t&&l(N)},y=n<=1,k=e===0?a("共 0 条"):u?a("共 {total} 条 · 当前第 {start}–{end} 条",{total:e,start:u.start,end:u.end}):a("共 {total} 条(全部显示)",{total:e});return r.jsxs(ju,{className:m?`panel-foot table-foot-bar ${m}`:"panel-foot table-foot-bar",children:[f,r.jsx("div",{className:"spacer"}),r.jsxs("div",{className:"table-foot-ctl",children:[r.jsx("span",{className:"table-foot-count",children:k}),r.jsxs("span",{className:"table-foot-size",children:[a("每页"),r.jsxs(Pt,{value:String(s),onValueChange:j=>o(j==="all"?"all":Number(j)),children:[r.jsx(Mt,{className:"h-[26px] w-[86px]",disabled:d,"aria-label":a("每页条数"),children:r.jsx(It,{children:EG(s)})}),r.jsx(_t,{children:i.map(j=>r.jsx(Ze,{value:String(j),children:EG(j)},String(j)))})]}),a("条")]}),r.jsxs("span",{className:"table-foot-jump",children:[a("跳至"),r.jsx(ze,{className:"h-[26px] w-[52px] px-1 text-center",value:g,disabled:d||y,"aria-label":a("跳转到指定页"),title:y?a("当前只有一页"):a("跳转到第 1–{pageCount} 页",{pageCount:n}),inputMode:"numeric",onChange:j=>v(j.target.value),onKeyDown:j=>{j.key==="Enter"?(j.preventDefault(),b()):j.key==="Escape"&&v(String(t))},onBlur:b}),a("页")]}),r.jsx(vP,{page:t,pageCount:n,onPageChange:l,disabled:d})]})]})}const aM=[{key:"pick",label:a("选择"),align:"center",legacyAlign:"left"},{key:"order",label:a("顺序"),title:a("组内先后:按住左边的把手上下拖动即可调整;整组的先后拖分组带的把手"),align:"center",legacyAlign:"left"},{key:"account",label:a("账号"),align:"center",legacyAlign:"left"},{key:"proxy",label:a("代理"),title:a("该账号出网走的代理(已保存的代理 / 自定义 / 直连);点击可修改"),align:"center"},{key:"connections",label:a("连接数"),title:a("此刻正在使用这个账号的请求数(含还在下发内容的流式请求);为 0 时不显示"),align:"center"},{key:"status",label:a("状态"),align:"center",legacyAlign:"left"},{key:"limits",label:a("限流"),title:a("该账号当前限流中的模型;点徽章看明细"),align:"center",legacyAlign:"left"},{key:"expiry",label:a("有效期"),align:"center",legacyAlign:"left"},{key:"usage",label:a("余额"),align:"center",legacyAlign:"left"},{key:"actions",label:a("操作"),align:"right"}],TG="agent2api-accounts-col-widths",Ey={pick:47,order:84,proxy:186,connections:56,status:80,limits:148,expiry:132,usage:308,actions:200},iM=new Set(["account"]),ACe=300,oM=56,ECe=new Set([...Object.keys(Ey),...iM]),Vg=(()=>{try{const e=JSON.parse(localStorage.getItem(TG)||"{}"),t={};for(const[n,s]of Object.entries(e||{})){const i=Number(s);ECe.has(n)&&Number.isFinite(i)&&i>=oM&&(t[n]=Math.round(i))}return t}catch{return{}}})();function OG(){try{localStorage.setItem(TG,JSON.stringify(Vg))}catch{}}function TCe(){return{...Ey,...Vg}}function OCe(e){let t=0;for(const n of e){const s=Vg[n];s?t+=s:iM.has(n)?t+=ACe:Ey[n]?t+=Ey[n]:t+=oM}return Math.round(t)}function RG(e,t){const n=e?.querySelector(`thead th:nth-child(${t+1})`),s=n?.getAttribute("data-col")||n?.className.match(/cell-([a-z]+)/)?.[1];if(!s)return null;const i=e?.querySelector(`colgroup col[data-col="${CSS.escape(s)}"]`)||e?.querySelectorAll("colgroup col")[t];return i?{key:s,col:i}:null}function RCe(e,t,n){const s=Math.max(oM,Math.round(n));e.style.width=s+"px",iM.has(t)||s!==Ey[t]?Vg[t]=s:delete Vg[t]}let lM=()=>{};function PCe(e,t){if(lM=t,!e)return;let n=null;e.addEventListener("pointerdown",s=>{if(s.button!==0)return;const i=s.target?.closest?.(".col-grip");if(!i)return;s.preventDefault();const o=i.closest("th"),l=o?.closest("table")||null,u=o?.parentElement?[...o.parentElement.children].indexOf(o):-1,d=RG(l,u);if(!d)return;const f=s.clientX,m=d.col.getBoundingClientRect().width;i.classList.add("active"),document.body.classList.add("col-resizing");try{i.setPointerCapture(s.pointerId)}catch{}n={...d,startX:f,startWidth:m,grip:i,pointerId:s.pointerId},window.addEventListener("pointermove",g),window.addEventListener("pointerup",v),window.addEventListener("pointercancel",v),window.addEventListener("blur",v);function g(b){if(n){if(b.buttons===0){v();return}RCe(n.col,n.key,n.startWidth+b.clientX-n.startX)}}function v(){if(!n)return;const{grip:b,pointerId:y}=n;n=null,b.classList.remove("active"),document.body.classList.remove("col-resizing");try{b.releasePointerCapture(y)}catch{}window.removeEventListener("pointermove",g),window.removeEventListener("pointerup",v),window.removeEventListener("pointercancel",v),window.removeEventListener("blur",v),OG(),lM()}}),e.addEventListener("dblclick",s=>{const i=s.target?.closest?.(".col-grip");if(!i)return;const o=i.closest("th"),l=o?.closest("table")||null,u=o?.parentElement?[...o.parentElement.children].indexOf(o):-1,d=RG(l,u);d&&(delete Vg[d.key],OG(),lM())})}let cM=Date.now(),am=null;const Kg=new Set;function Ty(){cM=Date.now();for(const e of Kg)e();PG()}function PG(){am!==null&&clearTimeout(am),am=null,!(!Kg.size||document.hidden)&&(am=setTimeout(Ty,6e4-Date.now()%6e4))}function ICe(e){return Kg.add(e),Kg.size===1&&(cM=Date.now(),document.addEventListener("visibilitychange",Ty),window.addEventListener("focus",Ty),PG()),()=>{Kg.delete(e),!Kg.size&&(am!==null&&clearTimeout(am),am=null,document.removeEventListener("visibilitychange",Ty),window.removeEventListener("focus",Ty))}}const MCe=()=>cM,_Ce=()=>0;function Oy(){return p.useSyncExternalStore(ICe,MCe,_Ce),Date.now()}function DCe(e){switch(e.trim().toLowerCase()){case"5h":return a("{n} 小时",{n:5});case"weekly":return a("每周");case"monthly":return a("每月");case"daily":return a("每日");default:return e.trim()}}function IG(e){if(!e||typeof e!="object"||Array.isArray(e))return[];const t=Array.isArray(e.windows)?e.windows:[],n=[];for(const[s,i]of t.entries()){if(!i||typeof i!="object"||Array.isArray(i))continue;const o=i,l=uq(o.label,a),u=typeof o.group=="string"?o.group.trim():"",d=typeof o.window=="string"?o.window.trim().toLowerCase():"",f=DCe(typeof o.window=="string"?o.window:"")||l;if(!u&&!f)continue;const m=Os(o.remainingPercent),g=m===null?null:Math.max(0,Math.min(100,m)),v=o.unlimited===!0,b=Os(o.remaining)===null&&Os(o.limit)===null&&!v,y=Os(o.resetsAt),k=Os(o.expiresAt);n.push({id:`${typeof o.key=="string"?o.key:[u,f].join("-")}-${s}`,group:u,label:l||[u,f].filter(Boolean).join(" · "),window:f,windowCode:d,view:dq(o,a,Ln),percent:g,remaining:Os(o.remaining),percentText:b&&g!==null?`${Ln(g)}%`:"",tone:v?"ok":g===null?"muted":g<20?"warn":"ok",unlimited:v,resetsAt:y!==null&&y>0&&y<=864e13?y:null,expiresAt:k!==null&&k>0&&k<=864e13?k:null,aside:o.aside===!0})}return n}function LCe(e){const t=new Map;for(const n of e){const s=n.group||n.id;let i=t.get(s);i||(i={id:s,name:n.group,rows:[]},t.set(s,i)),i.rows.push(n)}return[...t.values()]}function $Ce(e,t){const n=new Set(t.map(l=>l.label)),s=Array.isArray(e.windows)?e.windows:[],i=new Set(s.flatMap(l=>l&&typeof l=="object"&&typeof l.key=="string"&&l.key?[l.key]:[])),o=Array.isArray(e.wallets)?e.wallets.filter(l=>!l||typeof l!="object"||Array.isArray(l)?!1:l.type!=="quota_window"&&!i.has(l.key??l.type)&&!n.has(l.displayName)):[];return UP({...e,wallets:o,subscription:null},a,Ln)}function zCe({row:e}){const t=e.percentText||e.view,n=e.percent===null?e.view:a("剩余 {percent}%",{percent:Ln(e.percent)});return r.jsxs("span",{className:`usage-window-item ${e.tone}`,title:`${e.label} · ${n}`,children:[r.jsxs("span",{className:"usage-window-line",children:[r.jsx("span",{className:"usage-window-label",title:e.window,children:e.window}),r.jsx("span",{className:"usage-window-value",title:e.view,children:t})]}),e.percent!==null&&!e.unlimited?r.jsx(kg,{value:e.percent,variant:e.tone==="warn"?"warning":"success",className:"mt-1",trackClassName:"h-[3px]",indicatorClassName:e.tone==="ok"?"opacity-75":void 0,"aria-label":`${e.label} · ${n}`}):null]})}function BCe({entry:e,rows:t,updatedAt:n,creditDetail:s,children:i}){const o=e&&typeof e=="object"?e:{},l=o.subscription&&typeof o.subscription=="object"?o.subscription:{},u=typeof l.planName=="string"?l.planName.trim():"",d=LCe(t),f=t.some(O=>O.group),m=!f&&(t.length===1||t.some(O=>O.percent===null||O.view.length>10)),g=XS(o),v=$Ce(o,t),b=t.filter(O=>!O.aside&&!O.unlimited),y=b.some(O=>O.percent!==null?O.percent<20:O.remaining!==null&&O.remaining<=0),k=b.some(O=>O.percent===null&&O.remaining===null)||g.length>0,j=b.length===0&&t.every(O=>!O.unlimited),S=a(j?"额度详情":y?"部分窗口偏低":k?"部分读数未知":"额度充足"),N=y?"warn":k||j?"muted":"ok",C=n?i8(n,a,Date.now()):"",T=n?a("上次成功查询:{time}",{time:ki(n)}):"",R=t.every(O=>O.percentText||O.view==="—")?a("剩余比例"):a("分窗口额度");return r.jsx("span",{className:"usage-cell usage-window-cell",children:r.jsxs("span",{className:"usage-window-quota",children:[r.jsxs("span",{className:"usage-window-top",children:[u?r.jsx(Ee,{variant:iI(u)?"secondary":"brand",shape:"tag",className:"usage-window-plan",title:u,children:Lq(u)}):null,r.jsxs("span",{className:`usage-window-status ${N}`,title:S,children:[r.jsx(Qk,{}),r.jsx("span",{children:S})]})]}),r.jsx("span",{className:`usage-window-grid${f?" grouped":" ungrouped"}${m?" compact":""}`,style:{"--quota-columns":Math.min(3,d.length)},children:d.map(O=>r.jsxs("span",{className:"usage-window-group",children:[O.name?r.jsx("span",{className:"usage-window-group-name",title:O.name,children:O.name}):null,O.rows.map(A=>r.jsx(zCe,{row:A},A.id))]},O.id))}),r.jsxs("span",{className:"usage-window-foot",children:[r.jsxs("span",{className:"usage-window-updated",title:T,children:[r.jsxs("span",{className:"usage-window-caption",children:[R,C?" · ":""]}),C]}),r.jsxs(ui,{children:[r.jsxs(wi,{render:r.jsx(B,{type:"button",size:"xs",variant:"ghost",className:"usage-window-detail"}),children:[a("额度详情"),r.jsx("span",{"aria-hidden":"true",className:"usage-window-caret",children:"⌄"})]}),r.jsxs(di,{align:"end",sideOffset:6,className:"usage-window-pop",children:[r.jsx(Gwe,{children:r.jsx(dK,{children:a("窗口额度与时间")})}),r.jsxs("div",{className:"usage-window-pop-body",children:[t.map(O=>r.jsxs("div",{className:"usage-window-reset",children:[r.jsxs("div",{className:"usage-window-reset-head",children:[r.jsx("span",{title:O.label,children:O.label}),r.jsx("span",{className:`usage-window-reset-value ${O.tone}`,children:O.percentText||O.view})]}),O.resetsAt!==null?r.jsx("time",{dateTime:new Date(O.resetsAt).toISOString(),children:a("重置 {date}",{date:ki(O.resetsAt)})}):O.expiresAt===null?r.jsx("span",{className:"usage-window-reset-unknown",children:a("未返回重置时间")}):null,O.expiresAt!==null?r.jsx("time",{dateTime:new Date(O.expiresAt).toISOString(),children:a("到期 {date}",{date:ki(O.expiresAt)})}):null]},O.id)),v.length?r.jsx("div",{className:"usage-window-supplementary",children:v.map(O=>r.jsx("p",{children:O},O))}):null,g.map(O=>r.jsx("p",{className:"usage-window-warning",children:a(O)},O)),r.jsx(Wwe,{className:"usage-window-explanation",children:a("各窗口独立限制请求,不相加为总余额。")})]})]})]})]}),s?r.jsx("span",{className:"usage-window-credit",children:s}):null,i]})})}function FCe(e){return e.windowCode==="daily"||e.windowCode==="5h"}function UCe(e,t){const n=e.filter(f=>!f.aside),s=new Set(n.filter(f=>(f.windowCode==="weekly"||f.windowCode==="monthly")&&!f.unlimited&&(f.percent!==null&&f.percent<=0||f.remaining!==null&&f.remaining<=0)).map(f=>f.group));let i=!1;const o=n.map(f=>{const m=FCe(f),g=m&&s.has(f.group);return g&&(f.unlimited||f.percent!==0)&&(i=!0),{label:f.group?`${f.group} · ${f.window}`:f.window,percent:g?0:f.percent,unlimited:!g&&f.unlimited,shortWindow:m}}),l=o.filter(f=>f.shortWindow&&(f.percent!==null||f.unlimited)),u=(l.length?l:o).flatMap(f=>f.unlimited?[100]:f.percent===null?[]:[f.percent]);if(u.length)return{percent:Math.min(...u),hasShortWindow:l.length>0,adjusted:i,windows:o};if(t===null)return null;const d=Math.max(0,Math.min(100,t));return{percent:d,hasShortWindow:!1,adjusted:!1,windows:[{label:"",percent:d,unlimited:!1}]}}function HCe(e,t="group",n=Date.now()){const s={counted:0,total:e.length,sum:null,unlimited:0,unit:"",failed:0,uncountable:0,pending:0,partial:0,scope:t,additive:!0,ratio:null,expiring:bN([],n)},i=[];let o=0,l=null;for(const u of e){const d=po(u);if(d==null){s.pending++;continue}const f=Og(d);if(f){f.notConfigured||s.failed++;continue}if(typeof d!="object"||Array.isArray(d)){s.uncountable++;continue}if((d.statisticsError||XS(d).length>0)&&s.partial++,aI(u)&&i.push(...PNe(d,n)),d.unlimited===!0){s.unlimited++;continue}const m=Object.prototype.hasOwnProperty.call(d,"totalLeft"),g=Os(m?d.totalLeft:d.available),v=UCe(IG(d),g),b=String(d.unit||a("积分")).trim(),y=g===null&&v===null?null:b==="%"||g===null?"ratio":"additive";if(y===null){s.uncountable++;continue}if(l===null&&(l=y),l!==y){s.uncountable++;continue}if(y==="additive"&&s.unit&&b!==s.unit){s.uncountable++;continue}s.unit||(s.unit=b),s.counted++,y==="additive"?g!==null&&(o+=g):v&&(!s.ratio||v.percent[s.label,MG(s)].filter(Boolean).join(" ")).join(" · ")})),e.ratio.adjusted&&t.push(a("每周或每月额度已耗尽,短周期实际可用额度按 0% 计算;账号明细保留原始读数"))),e.pending&&t.push(a("{n} 个还没查到(未查询或正在查询)",{n:e.pending})),e.failed&&t.push(a("{n} 个查询失败",{n:e.failed})),e.uncountable&&t.push(e.additive?a("{n} 个读数没有绝对数(只给比例或无额度),未计入",{n:e.uncountable}):a("{n} 个读数里没有可用比例,未计入",{n:e.uncountable})),e.partial&&t.push(a("{n} 个读数只读到一半(读数可信但不完整)",{n:e.partial}));const n=yN(e.expiring,a,uM,e.unit===a("积分")?"积分":e.unit);return n.detail&&t.push(n.detail),t.join(";")}function KCe({balance:e}){const t=yN(e.expiring,a,uM,e.unit===a("积分")?"积分":e.unit),n=e.failed+e.partial>0,s=e.additive?e.sum===null&&e.unlimited===0:e.ratio===null&&e.unlimited===0,i=!e.additive&&e.ratio?.windows.some(f=>!f.unlimited&&f.percent!==null&&f.percent<20),o=n||i?"warn":s?"muted":"ok",l=e.unlimited>0?"∞":e.sum===null?"—":uM(e.sum),u=e.additive&&e.unit&&e.unit!=="积分"&&e.unit!==a("积分")?mo(e.unit,a):"",d=e.unlimited===0&&e.counted0?r.jsx("b",{className:"v",children:"∞"}):e.ratio?e.ratio.windows.map((f,m)=>r.jsxs(p.Fragment,{children:[m>0?r.jsx("span",{className:"k","aria-hidden":"true",children:"·"}):null,f.label?r.jsx("span",{className:"k",children:f.label}):null,r.jsx("b",{className:f.percent===null&&!f.unlimited?"k":"v",children:MG(f)})]},`${f.label}-${m}`)):r.jsx("b",{className:"v",children:"—"}),d?r.jsx("span",{className:"n",children:d}):null,t.group?r.jsx("span",{className:"n soon",title:t.detail,children:t.group}):null,n?r.jsx("span",{className:"warn-mark","aria-hidden":!0,children:"⚠"}):null]})}const qCe=["codearts"];function dM(e){if(typeof e!="number"&&typeof e!="string"||typeof e=="string"&&!e.trim())return null;const t=Number(e),n=Number.isFinite(t)?t<1e11?t*1e3:t:Date.parse(String(e));return Number.isFinite(n)&&n>0?n:null}function GCe(e,t){if(!qCe.includes(String(e.provider??"")))return[];if(e.hasAccessToken!==!0||e.hasRefreshToken!==!0)return[];const n=dM(e.refreshTokenExpiresAt??e.refreshExpiresAt);if(n===null&&e.refreshTokenLongLived!==!0)return[];const s=dM(e.accessTokenExpiresAt)??dM(t);return n!==null&&s!==null&&n===s?[]:[{label:"Access Token",expiresAt:s,longLived:!1},{label:"Refresh Token",expiresAt:n,longLived:n===null&&e.refreshTokenLongLived===!0}]}function WCe(e,t,n=Date.now()){if(e.longLived)return t("长期有效");if(e.expiresAt===null)return"—";const s=e.expiresAt-n;return s<=0?t("已过期"):s<36e5?t("{n} 分钟后",{n:Math.max(1,Math.round(s/6e4))}):s<48*36e5?t("{n} 小时后",{n:Number((s/36e5).toFixed(1))}):t("{n} 天后",{n:Math.floor(s/864e5)})}let fM=!1;async function _G(e){if(fM){Ct(a("账号正在导出,请稍候"));return}const t=ft().workbuddyDesktop;if(!t?.exportAccountFiles){Ct(a("当前客户端不支持逐账号导出,请更新客户端"),"err");return}fM=!0;try{const n=ft().wbConfirm?.ask,s=a("导出文件包含登录凭证,可直接用于登录。请妥善保管,不要外传或上传到公共位置。")+(e.provider?`

    ${a("本组每个账号会分别保存为一个 JSON 文件,包含被筛选隐藏的账号。")}`:"")+(e.provider&&t.platform==="web"?`

    ${a("网页端会逐个下载文件;浏览器提示时请允许本网站下载多个文件。")}`:"");if(!(n?await n({title:e.provider?a("导出本组账号"):a("导出账号"),html:s,okText:a("导出")}):window.confirm(a("导出文件包含登录凭证,可直接用于登录。请妥善保管,不要外传或上传到公共位置。"))))return;const o=await t.exportAccountFiles(e);if(o?.canceled)return;if(!o)throw new Error(a("导出未返回结果"));const l=o.count||0,u=o.failed||[];if(u.length){const d=u[0],f=[d.name||d.id,d.error].filter(Boolean).join(":");Ct(a("已导出 {count} 个账号文件,{failed} 个未导出:{reason}",{count:l,failed:u.length,reason:f}),"err")}else l?Ct(o.downloadStarted?a("已发起 {count} 个账号文件的下载,请在浏览器下载列表确认",{count:l}):a("✅ 已导出 {count} 个账号文件",{count:l}),"ok"):Ct(a("没有可导出的账号"))}catch(n){Ct(a("账号导出失败:{reason}",{reason:dn(n)}),"err")}finally{fM=!1}}function Ry(e,t){return ft().wbIcons?.icon?.(e,t)||""}function YCe({account:e,rank:t,sortActive:n}){const s=a("组内第 {rank} 位",{rank:t});return r.jsxs("div",{className:"order-cell",children:[r.jsx("span",{className:`order-grip${n?" locked":""}`,role:"button",tabIndex:-1,"aria-label":a("拖动调整组内顺序"),"aria-disabled":n||void 0,title:n?SN(zl(tn(e),Nu(tn(e)))):a("按住拖动,调整这个账号在本组内的顺序"),dangerouslySetInnerHTML:{__html:Ry("gripVertical",14)}}),r.jsx("span",{className:"order-rank",title:s,children:`#${t}`})]})}function XCe({group:e,ids:t,collapsed:n}){const[s,i]=p.useState(!1),o="w-full justify-start px-2 font-normal";return r.jsxs(ui,{open:s,onOpenChange:i,children:[r.jsx(wi,{render:r.jsx(B,{size:"default",variant:"ghost",type:"button",className:"grp-iconbtn",title:a("本组操作")}),children:"⋯"}),r.jsx(di,{align:"end",sideOffset:4,className:"w-[196px] p-1.5",children:r.jsxs("div",{className:"flex flex-col gap-0.5",children:[r.jsx(B,{variant:"ghost",size:"sm",className:o,title:a("启用这一组里的全部账号(含被筛选隐藏的)"),onClick:()=>{i(!1),L8(t,!0)},children:a("全部启用({n})",{n:t.length})}),r.jsx(B,{variant:"ghost",size:"sm",className:o,title:a("禁用这一组里的全部账号(含被筛选隐藏的)"),onClick:()=>{i(!1),L8(t,!1)},children:a("全部禁用({n})",{n:t.length})}),r.jsx(B,{variant:"ghost",size:"sm",className:o,title:a("打开批量操作弹窗,并预选这一组的账号(改代理等动作在弹窗里挑参数)"),onClick:()=>{i(!1),RI(t,"proxy")},children:a("批量操作本组")}),r.jsx(B,{variant:"ghost",size:"sm",className:o,title:a("导出本组全部账号,每个账号一个 JSON 文件(含被筛选隐藏的)"),onClick:()=>{i(!1),_G({provider:e.provider})},children:a("导出本组账号")}),r.jsx("div",{className:"my-1 h-px bg-hairline"}),r.jsx(B,{variant:"ghost",size:"sm",className:o,onClick:()=>{i(!1),n8(e.provider)},children:a(n?"展开这一组":"折叠这一组")})]})})]})}function QCe({group:e,collapsed:t,colSpan:n}){const s=Oy(),{src:i,onError:o}=Jh(e.provider),l=Sn().groupTotalFiltered,u=l?e.accounts:e.members,f=e.members.length>1&&u.length>0&&u.some(Si)?HCe(u,l?"filtered":"group",s):null,m=v=>{v.target?.closest?.("button, a, input, select, label, .queue-grip")||String(window.getSelection?.()||"").length>0||n8(e.provider)},g=XI(Nu(e.provider));return r.jsx(Jt,{className:"grp-band","data-provider":e.provider,children:r.jsx(Ve,{colSpan:n,onClick:m,children:r.jsxs("div",{className:"grp-band-inner",children:[r.jsx("span",{className:"queue-grip",role:"button",tabIndex:-1,"aria-label":a("拖动调整整组顺序"),title:a("按住拖动,调整这一家的组顺位(整组一起动)"),dangerouslySetInnerHTML:{__html:Ry("gripVertical",14)}}),r.jsx("span",{className:"grp-rank",title:a("组顺位:越小越先用(拖动分组带调整)"),children:a("第 {rank} 顺位",{rank:e.rank})}),r.jsx("span",{className:"grp-logo",children:i?r.jsx("img",{src:i,alt:"",loading:"lazy",onError:o}):r.jsx("span",{className:"grp-logo-txt",children:String(e.label||"?").trim().slice(0,1).toUpperCase()})}),r.jsx("span",{className:"grp-name",children:a(e.label)}),r.jsx("span",{className:"grp-stat",children:a("{total} 个账号 · 启用 {enabled} · 禁用 {disabled}{limited}",{total:e.members.length,enabled:e.enabled,disabled:e.disabled,limited:e.limited>0?a(" · 限流 {n}",{n:e.limited}):""})}),f?r.jsx(KCe,{balance:f}):null,g?r.jsxs(B,{size:"default",variant:"ghost",type:"button",className:"grp-sort-mark",title:a("当前排序规则:{rules}。点击调整",{rules:g}),onClick:()=>R8(e.provider),children:[r.jsx("span",{dangerouslySetInnerHTML:{__html:Ry("sort",10)}}),g]}):null,r.jsx("span",{className:"grp-spacer"}),r.jsx(B,{size:"default",variant:"ghost",type:"button",className:"grp-iconbtn","aria-haspopup":"dialog",title:a("添加 {name} 账号",{name:a(e.label)}),"aria-label":a("添加 {name} 账号",{name:a(e.label)}),onClick:v=>{v.stopPropagation(),ft().wbAddAccountModal?.openProvider?.(e.provider)},children:r.jsx("svg",{viewBox:"0 0 24 24",width:"14",height:"14",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round","aria-hidden":"true",focusable:"false",children:r.jsx("path",{d:"M12 5v14M5 12h14"})})}),r.jsx(B,{size:"default",variant:"ghost",type:"button",className:"grp-iconbtn",title:a("分组设置"),"aria-label":a("分组设置"),onClick:()=>R8(e.provider),dangerouslySetInnerHTML:{__html:Ry("settings",14)}}),r.jsx(XCe,{group:e,ids:e.members.map(v=>v.id),collapsed:t})]})})})}function ZCe({account:e}){const t=Ni(e),n=hSe(e);!t&&eSe(e,Xh(e))&&n.push({text:a("Token 限额 · 已禁用"),kind:"bad",title:a("本周期 Token 消耗达到限制器的上限,账号已被自动禁用(窗口重置也不恢复,需手动启用)")});const s=Ci(e)||e.id;return r.jsxs(r.Fragment,{children:[r.jsx(St,{checked:t,"aria-label":a("{action}{who}",{action:a(t?"禁用":"启用"),who:s}),title:a(t?"已启用,点击禁用(不参与转发)":"已禁用,点击启用"),onCheckedChange:i=>{_8(e.id,i)}}),n.length?r.jsx("div",{className:"status-tags",children:n.map(i=>r.jsx(Ee,{shape:"tag",variant:i.kind==="bad"?"destructive":"secondary",title:i.title,children:i.text},i.text))}):null]})}function JCe({account:e,onClear:t}){const n=lI(e),s=vq(e),i=bq(e);return i?r.jsx(Ee,{variant:"destructive",shape:"tag",title:i,children:a("上游限制 · 已禁用")}):!n.length&&!s?Array.isArray(e.limiterGroups)&&ay(e)?r.jsx(SG,{account:e,onOpen:()=>Mg(e.id)}):tI(e,po(e))?r.jsx(Ee,{variant:"warning",shape:"tag",title:a("余额低于限制器的阈值,转发时会跳过该账号(余额回升自动恢复)"),children:a("余额不足")}):nI(e,Xh(e))?r.jsx(Ee,{variant:"warning",shape:"tag",title:a("本周期 Token 消耗达到限制器的上限,转发时会跳过该账号(窗口重置自动恢复)"),children:a("Token 限额")}):r.jsxs(Ee,{variant:"success",shape:"tag",title:a("当前没有任何模型处于限流中"),children:[r.jsx(Qk,{}),a("正常")]}):r.jsx(NCe,{accountName:Ci(e),rows:SCe(e),count:n.length,cooldown:s,soonest:dI(s?s.resetAt:n[0].resetAt),onClear:t})}function e1e({account:e}){const t=Ga(tn(e)),n=t.edition?Aq(e.expiresAt):Eq(e),s=GCe(e,n);if(s.length)return r.jsx("div",{className:"flex flex-col items-center gap-1",children:s.map(u=>r.jsx(t1e,{row:u},u.label))});if(t.longLived)return r.jsx("span",{title:a("主凭证没有固定到期时刻,到期由网关自动续期或本来就不会过期"),children:a("长期有效")});if(!n)return r.jsx("span",{className:"muted",title:a("记录里没有过期时间"),children:"—"});const i=n-Date.now();if(i<=0)return r.jsx(Ee,{variant:"destructive",shape:"tag",title:a("凭证已过期;能否续期取决于登录方式,本机引用需由原客户端处理"),children:a("已过期")});const o=i<36e5?a("{n} 分钟后",{n:Math.max(1,Math.round(i/6e4))}):i<48*36e5?a("{n} 小时后",{n:(i/36e5).toFixed(1)}):a("{n} 天后",{n:Math.floor(i/24/36e5)}),l=ki(n);return r.jsx("span",{title:l?a("{text}过期({full})",{text:o,full:l}):a("{text}过期",{text:o}),children:o})}function t1e({row:e}){const t=e.expiresAt!==null&&e.expiresAt<=Date.now(),n=e.expiresAt===null?a("记录里没有过期时间"):ki(e.expiresAt);return r.jsxs("div",{className:"flex items-center justify-center gap-1.5 whitespace-nowrap",title:`${e.label} · ${n}`,children:[r.jsx("span",{className:"text-[9px] text-subtle",translate:"no",children:e.label}),t?r.jsx(Ee,{variant:"destructive",shape:"tag",children:a("已过期")}):r.jsx("span",{className:e.expiresAt===null&&!e.longLived?"muted":void 0,children:WCe(e,a)})]})}function n1e({account:e}){const t=P8(e.id);return t<=0?null:r.jsx("span",{className:"conn-count",title:a("{n} 个请求正在使用该账号(含还在下发内容的流式请求)",{n:t}),children:t})}function r1e(e){return!e||typeof e!="object"||Array.isArray(e)?"":hM(e.subscription)}function hM(e){if(!e||typeof e!="object")return"";const t=e,n=[];t.planName&&n.push(a("套餐 {name}",{name:String(t.planName)})),t.status&&n.push(a("状态 {status}",{status:String(t.status)})),t.state&&String(t.state)!=="active"&&n.push(sI(t.state));const s=t.expireAt;if(s!=null&&s!==""){const i=Number(s),o=Number.isFinite(i)&&i>1e11?ki(i):String(s);o&&n.push(a("到期 {time}",{time:o}))}return Number.isFinite(Number(t.remainQuota))&&n.push(a("余量 {value}",{value:Ln(t.remainQuota)})),Number.isFinite(Number(t.totalQuota))&&n.push(a("总量 {value}",{value:Ln(t.totalQuota)})),n.join(" ")}function s1e(e){if(!e||typeof e!="object"||Array.isArray(e))return[];const t=e.plans;return Array.isArray(t)?t.filter(n=>n&&typeof n=="object"&&String(n.state||"")==="pending"):[]}function a1e(e){const t=e.map(n=>{const s=String(n.name||n.planId||a("套餐")),i=Number(n.pendingUntil??n.startsAt);return Number.isFinite(i)&&i>0?a("{name}({time} 起生效)",{name:s,time:ki(i*1e3)}):s});return a(`已领到、还没到生效时间的套餐(生效后余额列会按它显示): {lines}`,{lines:t.join(` -`)})}function a1e(e){if(e===void 0)return{text:a("未查询"),kind:"muted",title:a("尚未查询该账号的余额")};if(e===null)return{text:a("查询中…"),kind:"muted",title:a("正在查询")};const t=Og(e);if(t)return t.notConfigured?{text:a("未配置"),kind:"muted",title:a("{message}(去该账号的「设置」里填上查询凭证即可)",{message:t.message})}:{text:a("查询失败"),kind:"bad",title:t.message};if(typeof e!="object"||e===null)return{text:a("无数据"),kind:"muted",title:String(e)};const n=e,s=aq(n,a);if(s)return{text:s.text,kind:"muted",title:s.detail};if(Object.prototype.hasOwnProperty.call(n,"totalLeft")){const i=n.unlimited?"∞":Ln(n.totalLeft);return{text:a("可用 {total}",{total:i}),kind:"ok",title:a("总剩余 {total} · 套餐 {plan} · 奖励 {bonus}",{total:i,plan:Ln(n.planLeft),bonus:Ln(n.bonusLeft)})}}if(Array.isArray(n.windows)&&n.windows.length){const i=n.windows,o=WS(n);return{text:a("分窗口额度"),kind:o.length?"warn":"ok",title:[...new Set([...FP(n,a,Ln),fM(n.subscription),...i.filter(l=>l&&typeof l=="object").map(l=>[oq(l.label,a),lq(l,a,Ln)].filter(Boolean).join(" ")),...o.map(l=>a(l))].filter(Boolean))].join(" · ")}}if(Object.prototype.hasOwnProperty.call(n,"available")||Array.isArray(n.wallets)){const i=mo(String(n.unit||a("积分")),a),o=uq(n)??(Array.isArray(n.wallets)?n.wallets:[]),l=o.filter(w=>!iq(w)).map(w=>`${w?.displayName||w?.type||a("明细")} ${w?.balanceView?String(w.balanceView):Ln(w?.balance)}`).join(" · "),u=Rke(n,a,Ln).map(w=>`${w.name} ${w.view}`).join(" · "),d=fM(n.subscription),f=[];if(o.length===0&&Array.isArray(n.plans)&&n.plans.length>0){const w=IG(n);f.push(w&&MG(w)?a("读数里没有额度桶,这里按套餐权益里的已用 / 总量显示(上游给的数)"):a("上游的余额读数里没有这个套餐的额度桶,剩余量读不到;余额列显示的是套餐发放的权益额度,不是剩余量"))}String(n.walletsFrom||"")==="monitor"&&f.push(a("额度窗口读数来自开放平台监控通道(套餐 JWT 那条通道没有额度桶):读的是每 N 小时 / 每周窗口的剩余比例"));const m=n.available==null?o.find(w=>Jo(w?.balance)!==null):void 0,g=n.availableView?String(n.availableView):m?a("可用 {value} {unit}",{value:Ln(m.balance),unit:mo(String(m.unit||i),a)}):a("可用 {value} {unit}",{value:Ln(n.available),unit:i}),v=[...WS(n).map(w=>a(w)),n.statisticsError?a("订阅统计未读到:{error}",{error:String(n.statisticsError)}):""].filter(Boolean),b=FP(n,a,Ln),y=Jo(n.available)===null&&!m&&!n.availableView,k=y&&b.length?b[0]:g;return{text:k+(v.length?" ⚠":""),kind:v.length?"warn":y?"muted":"ok",title:[...new Set([k,l,u,d,...b,...f,...v].filter(Boolean))].join(" · ")}}return{text:a("无数据"),kind:"muted",title:a("未返回可识别的余额数据")}}function IG(e){const t=Array.isArray(e.plans)?e.plans:[],n=s=>String(s?.state||"");return t.find(s=>n(s)==="active")||t.find(s=>n(s)==="pending")||t[0]||null}function i1e(e){const t=Array.isArray(e.entitlements)?e.entitlements:[];let n=null;for(const s of t){const i=Number(s?.grantUnits);if(!Number.isFinite(i)||i<=0)continue;const o=String(s?.unitType||"").trim();(!n||i>n.units)&&(n={units:i,unit:o})}return n}function MG(e){const t=Array.isArray(e.entitlements)?e.entitlements:[];for(const n of t){const s=Jo(n?.totalUnits);if(s===null||s<=0)continue;const i=Jo(n?.usedUnits),o=Jo(n?.remainingUnits),l=i===null?o===null?null:Math.max(0,s-o):i;if(l!==null)return{used:l,total:s,unit:String(n?.unitType||"").trim()}}return null}function o1e(e){if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e,n=Array.isArray(t.wallets)?t.wallets.filter(m=>!iq(m)):[];let s=null;for(const m of n){const g=Number(m?.total);!Number.isFinite(g)||g<=0||(!s||g>Number(s.total))&&(s=m)}const i=t.subscription&&typeof t.subscription=="object"?t.subscription:{};if(!s){let m=null;for(const k of n){const w=Jo(k?.remainingPercent);w!==null&&(!m||w0?l/u*100:null),f=l!==null&&u!==null&&u>0?a("剩 {remaining} / {total}",{remaining:qg(l),total:qg(u)}):a("可用 {value} {unit}",{value:Ln(s.balance),unit:mo(String(s.unit||""),a)}).trim();return{planName:o,text:String(s.balanceView||f),percent:d===null?null:Math.max(0,Math.min(100,d))}}function Jo(e){if(e==null||e==="")return null;const t=Number(e);return Number.isFinite(t)?t:null}function _G({row:e}){const t=e.percentText||e.view;return r.jsxs("span",{className:`usage-meter ${e.tone}`,title:e.title,children:[r.jsxs("span",{className:"usage-meter-head",children:[e.name?r.jsx("span",{className:"usage-meter-name",children:e.name}):null,e.win?r.jsx("span",{className:"usage-meter-win",children:e.win}):null,r.jsx("span",{className:"usage-meter-val",children:t})]}),e.percent!==null?r.jsx(kg,{value:e.percent,variant:e.over||e.tone==="bad"?"destructive":e.tone==="ok"?"success":e.tone==="warn"?"warning":"muted",className:"mt-1",trackClassName:"h-[3px]","aria-label":a("剩余 {percent}%",{percent:Math.round(e.percent)})}):null]})}function qg(e){const t=Number.isFinite(e)?Number(e.toFixed(2)):e,n=window.wbUnits;return n?.formatTokens?n.formatTokens(t):String(t)}function l1e(e){if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e,n=Array.isArray(t.wallets)?t.wallets:[];if(!n.length)return null;const s=mo(String(t.unit||"积分"),a),i=[];for(const u of n){const d=String(u.displayName||u.type||a("明细")),f=Jo(u.creditRemaining),m=Jo(u.creditTotal);if(!(f===null&&m===null&&u.creditUsed==null)){if(f!==null){const g=m!==null&&m>0,v=g?Math.max(0,Math.min(100,f/m*100)):null;i.push({name:d,view:g?a("剩 {remaining} / {total}",{remaining:Ln(f),total:Ln(m)}):a("剩 {remaining}",{remaining:Ln(f)}),tone:f<=0?"muted":v!==null&&v<20?"warn":"ok",percent:v,over:!1,title:g?void 0:a("上游未给总量,画不出剩余比例")});continue}i.push({name:d,view:u.creditUsed==null?a("总量 {value}",{value:Ln(m)}):a("已用 {used}",{used:Ln(u.creditUsed)}),tone:"muted",percent:null,over:!1})}}const o=t.subscription&&typeof t.subscription=="object"?t.subscription:{},l=[t.statisticsError?a("订阅统计未读到:{error}",{error:String(t.statisticsError)}):""].filter(Boolean);return{credit:i,total:Jo(t.available),unit:s,plan:Mq(o.planName),free:aI(o.planName),resetDate:String(o.resetDate||""),missing:l}}function c1e(e){const t=Wh(e);let n=null;for(const g of Qke(e)){if(g.enabled===!1)continue;const v=JP(g,t);if(!v)continue;const b=g.threshold>0?v.used/g.threshold:0;if(b>=1){n={rule:g,reading:v,ratio:b};break}(!n||b>n.ratio)&&(n={rule:g,reading:v,ratio:b})}if(!n)return null;const{rule:s,reading:i}=n,o=i.used>=s.threshold,l=eSe(s),u=o?"":` · ${Eq(l.remainingMs,l.daily)}`,d=l.daily?a("今日已用"):a("周期 Token"),f=s.reset==="daily"?a("今天(本地 0 点重置)"):a("{period}窗口",{period:tSe(s.period??0)}),m=a("限制器:{window}已用 {used} / {threshold} Token",{window:f,used:Math.round(i.used).toLocaleString("en-US"),threshold:Math.round(s.threshold).toLocaleString("en-US")})+(o?a(",已达到上限"):a(",{countdown}重置",{countdown:Eq(l.remainingMs,l.daily)}));return r.jsxs("span",{className:"usage-token-sub",title:m,children:[d," ",r.jsx("span",{className:o?"hit":void 0,children:Tq(i.used)})," ","/ ",Tq(s.threshold),u]})}function u1e({account:e}){const t=po(e),n=Si(e)?zSe(e):null,s=n&&t&&typeof t=="object"?t.lastUsage:null,i=Sn().usageTasks.get(e.id),o=i?.status==="failed"&&n?"":USe(i,a),l=Tg(e.id)?.stale,u=s&&typeof s=="object"&&!Array.isArray(s)?s:t;return r.jsxs("span",{className:"usage-sum-wrap flex flex-col gap-1",children:[r.jsx(d1e,{account:e,entry:u}),n&&s?r.jsx("span",{className:"text-[11px] text-destructive whitespace-normal leading-snug",title:n.detail,children:n.text}):null,o?r.jsx("span",{className:"text-[11px] text-subtle",role:"status",children:o}):null,l?r.jsx("span",{className:"text-[11px] text-subtle",children:a("历史余额,尚未按新配置验证")}):null]})}function d1e({account:e,entry:t}){const n=Oy();if(!Si(e))return r.jsx("span",{className:"muted",title:e.isGuest===!0?a("访客账号没有积分体系,因此不查询余额(登录账号可以查)"):a("该提供商尚未接入余额查询"),children:"—"});const s=a1e(t),i=sI(e)&&!Og(t)?PNe(t,n):[],o=xN(i.flatMap(w=>w.expiry?[w.expiry]:[]),n),l=vN(o,a,Ln,gN(t)),u=l.detail?{...s,title:[s.title,l.detail].filter(Boolean).join(" · ")}:s,d=Array.isArray(e.limiterGroups)?r.jsx(jG,{account:e,onOpen:()=>Mg(e.id)}):eI(e,t)?r.jsx(Ee,{variant:"warning",shape:"tag",title:a("余额低于限制器的阈值,转发时会跳过该账号(余额回升自动恢复)"),children:a("余额不足 · 已跳过")}):tI(e,Wh(e))?r.jsx(Ee,{variant:"warning",shape:"tag",title:a("本周期 Token 消耗达到限制器的上限,转发时会跳过该账号(窗口重置自动恢复)"),children:a("Token 限额 · 已跳过")}):null,f=c1e(e),m=u.kind==="ok"||u.kind==="warn"?r1e(t):[],g=m.length?r.jsx(Ee,{variant:"warning",shape:"tag",title:s1e(m),children:a("待生效 {n} 份",{n:m.length})}):null,v=i.length?{rows:i,now:n,expiryUnit:gN(t),subscriptionLine:n1e(t),aggregate:Oke(t,a),kind:u.kind,title:u.title}:null,b=u.kind==="ok"||u.kind==="warn"?OG(t):[];if(b.length){const w=v?r.jsx(UI,{variant:"sum",...v,children:a("积分明细")}):null;return r.jsxs(zCe,{entry:t,rows:b,updatedAt:$Se(e),creditDetail:w,children:[d,g,f]})}if(iSe(e)){const S=u.kind==="ok"||u.kind==="warn"?l1e(t):null;return S?r.jsx(f1e,{summary:u,detail:S,blockedBadge:d,tokenSub:f}):r.jsxs("span",{className:"usage-sum-wrap",children:[r.jsx("span",{className:`usage-sum ${u.kind}`,title:u.title,children:u.text}),d,g,f]})}const y=u.kind==="ok"||u.kind==="warn"?o1e(t):null;if(!y)return r.jsxs("span",{className:"usage-sum-wrap",children:[v?r.jsx(UI,{variant:"sum",...v,children:u.text}):r.jsx("span",{className:`usage-sum ${u.kind}`,title:u.title,children:u.text}),d,g,f]});const k={name:y.planName||"",view:y.text,tone:u.kind==="warn"?"warn":"ok",percent:y.percent,over:!1,title:u.title};return r.jsxs("span",{className:"usage-cell",title:u.title,children:[v?r.jsxs(UI,{variant:"pool",...v,children:[r.jsx(_G,{row:k}),l.badge?r.jsx("span",{className:"usage-pool-soon",children:l.badge}):null]}):r.jsx(_G,{row:k}),d,g,f]})}function f1e({summary:e,detail:t,blockedBadge:n,tokenSub:s}){const[i,o]=p.useState(!1),l=e.kind==="ok"||e.kind==="warn";return r.jsxs("span",{className:i?"usage-cell open":"usage-cell",children:[r.jsxs("span",{className:"usage-plan",children:[t.plan?r.jsx(Ee,{variant:t.free?"secondary":"brand",shape:"tag",className:`plan-chip${t.free?" free":""}`,children:t.plan}):null,t.resetDate?r.jsx("span",{className:"plan-sub",title:a("套餐积分的重置日期"),children:a("重置 {date}",{date:t.resetDate})}):null]}),r.jsxs(ui,{open:i,onOpenChange:o,children:[r.jsxs(wi,{render:r.jsx(B,{size:"default",variant:"ghost",type:"button",className:`usage-toggle ${e.kind}`,title:e.title,"aria-label":a("积分明细")}),children:[r.jsx("span",{className:"val",children:e.text}),r.jsx("span",{className:"caret","aria-hidden":!0,children:"▾"})]}),r.jsxs(di,{align:"center",sideOffset:6,className:"usage-pop w-[288px]",children:[t.total!==null?r.jsxs("div",{className:"usage-pop-total",children:[r.jsx("span",{className:"k",children:a("总积分")}),r.jsxs("span",{className:"v",children:[Ln(t.total)," ",r.jsx("small",{children:t.unit})]})]}):null,l&&t.missing.length?t.missing.map(u=>r.jsx("div",{className:"usage-pop-missing",title:u,children:u},u)):null,t.credit.length?r.jsxs(r.Fragment,{children:[r.jsx("div",{className:"usage-pop-group",children:a("积分")}),t.credit.map(u=>r.jsx(h1e,{row:u},u.name))]}):null,!t.credit.length&&t.total===null?r.jsx(pt,{className:"usage-pop-empty",children:a("未返回可识别的余额数据")}):null]})]}),n,s]})}function h1e({row:e}){return r.jsxs("div",{className:"usage-pop-row",title:e.title,children:[r.jsxs("div",{className:"usage-pop-line",children:[r.jsx("span",{className:"usage-pop-name",children:e.name}),r.jsx("span",{className:`usage-pop-view ${e.tone}`,children:e.view})]}),e.percent!==null?r.jsx(kg,{value:e.percent,variant:e.over||e.tone==="bad"?"destructive":e.tone==="ok"?"success":e.tone==="warn"?"warning":"muted",className:"mt-1.5",trackClassName:"h-[3px]","aria-label":a("剩余 {percent}%",{percent:Math.round(e.percent)})}):null]})}function m1e({account:e,namesHidden:t}){const n=QS(e),s=Ci(e)||a("未命名账号"),i=String(e.email||"").trim(),o=String(e.nickname||"").trim(),l=String(e.name||"").trim(),u=v=>t?t8(v):v,d=[i&&i!==s?a("邮箱 {email}",{email:u(i)}):"",n?`${Vke(e)||"id"} ${n}`:"",!e.nameCustom&&l&&l!==i&&l!==o?a("备注名 {name}",{name:u(l)}):"",o&&o!==s&&o!==i?a("昵称 {name}",{name:u(o)}):"",oy(e)?a("桌面端实时登录态(凭证每次从客户端登录态文件读取)"):"",e.updatedAt?a("更新于 {time}",{time:ki(e.updatedAt)}):"",e.needsRelogin?iy(e):"",e.source?a("来源 {source}",{source:e.source==="imported"?a("旧数据导入"):a("手动添加")}):""].filter(Boolean),f=i&&i!==s,m=e.proxy?.error,g=d.length?r.jsx(pS,{delay:0,children:r.jsxs(pc,{children:[r.jsx(Ih,{render:r.jsx("div",{className:"acct-name"}),children:r.jsx("span",{className:"name",children:u(s)})}),r.jsxs(gc,{children:[r.jsx(pye,{}),d.map((v,b)=>r.jsx("div",{children:v},b))]})]})}):r.jsx("div",{className:"acct-name",children:r.jsx("span",{className:"name",children:u(s)})});return r.jsxs(r.Fragment,{children:[g,f?r.jsx("div",{className:"acct-sub",children:r.jsx("span",{className:"acct-email",title:a("账号邮箱"),children:u(i)})}):null,e.needsRelogin?r.jsx("div",{className:"acct-note bad",children:iy(e)}):null,m?r.jsx("div",{className:"acct-note bad",title:a("代理不可用:{error}",{error:m}),children:a("代理不可用:{error}",{error:m})}):null]})}function p1e({account:e}){const t=e.proxy,n=t?.config?.source||t?.source,s=t?.label||a(n==="custom"?"自定义代理":"已设置"),i=t?.error,o=h8(),l=Array.isArray(o)?o:[];let u="";n==="pool"&&t?.config?.proxyId?u=`${vc}${t.config.proxyId}`:t&&(u=dN);const d=[{value:"",label:a("直连")}];for(const g of l)d.push({value:`${vc}${g.id}`,label:Ag(g),disabled:g.enabled===!1});if(o===null?d.push({value:"__hint_pool__",label:a("正在读取代理列表…"),disabled:!0}):l.length||d.push({value:"__hint_pool__",label:WSe()?a("代理列表读取失败(重试中)"):a("还没有代理(去「网络代理」页添加)"),disabled:!0}),u===dN){const g=n==="clash"?a("Clash 出口:"):n==="custom"?a("自定义:"):"";d.push({value:dN,label:`${g}${s}${i?a("(不可用)"):""}`})}else n==="pool"&&!l.some(g=>`${vc}${g.id}`===u)&&d.push({value:u,label:`${s}${i?a("(不可用)"):""}`});d.push({value:_8,label:a("自定义代理…")});const f=i?a("代理不可用:{error}(不会自动改为直连);选「自定义代理…」去修改",{error:i}):n==="rotate"?a("当前:{label}(每条请求换一个出口);「自定义代理…」打开完整设置",{label:s}):n==="clash"?a("当前:{label}(Clash Verge 直接引用);可在「网络代理」页同步端点后改选",{label:s}):n==="custom"?a("当前:{label}(未经过代理池 —— 可在「网络代理」页添加相同地址后来这里改选)",{label:s}):a("当前:{label};选项来自「网络代理」页;「自定义代理…」打开完整设置",{label:t?s:a("直连")}),m=d.find(g=>g.value===u);return r.jsxs(Pt,{value:u,onValueChange:g=>{hNe(e.id,g,u)},children:[r.jsx(Mt,{className:Ne("w-full",i&&"border-destructive-bd"),title:f,"aria-label":a("出网代理"),children:r.jsx(It,{children:m?.label||a("直连")})}),r.jsx(_t,{children:d.map(g=>r.jsx(Ze,{value:g.value,disabled:g.disabled,children:g.label},g.value))})]})}function g1e({account:e,atFront:t}){const n=Sn().usageInflight.has(e.id),s=Sn().usageStarting.has(e.id),i=Si(e);return r.jsxs("div",{className:"acct-actions",children:[i?r.jsx(B,{variant:"outline",size:"xs",disabled:s,title:a(n?"停止旧查询,按当前配置重新查询余额":"查询该账号剩余余额(读数显示在余额列)"),onClick:()=>{oNe(e.id)},children:a(s?"启动中…":n?"重查":"余额")}):null,r.jsx(B,{variant:"outline",size:"xs",title:a("备注名 / 启用 / 代理"),onClick:()=>Mg(e.id),children:a("设置")}),r.jsx(x1e,{account:e,atFront:t})]})}function x1e({account:e,atFront:t}){const[n,s]=p.useState(!1),i=Ni(e),o=Nu(tn(e)).some(f=>f.on),l=Number(e.maxConcurrent)||0,u="w-full justify-start px-2 font-normal",d=`${u} text-destructive hover:text-destructive`;return r.jsxs(ui,{open:n,onOpenChange:s,children:[r.jsx(wi,{render:r.jsx(B,{variant:"outline",size:"xs",title:a("更多操作")}),children:"⋯"}),r.jsx(di,{align:"end",sideOffset:4,className:"w-[172px] p-1.5",children:r.jsxs("div",{className:"flex flex-col gap-0.5",children:[Sn().usageInflight.has(e.id)?r.jsx(B,{variant:"ghost",size:"sm",className:u,onClick:()=>{s(!1),l8(e.id)},children:a("取消余额查询")}):null,r.jsx(B,{variant:"ghost",size:"sm",className:d,onClick:()=>{s(!1),P8(e.id,!i)},children:a(i?"禁用":"启用")}),r.jsx(B,{variant:"ghost",size:"sm",className:u,disabled:t||o,title:a(o?"自动消耗排序已启用,请先关闭规则再手动调整":t?"已在全局队列第一位":"仅将优先级调整到全局第一位,不改变启用状态"),onClick:()=>{s(!1),ft().wbApp?.runAccountAction?.("switch",e.id)},children:a("设为首选")}),r.jsx(B,{variant:"ghost",size:"sm",className:u,title:a("在账号设置的「基本」分组里设置该账号同时最多处理的请求数"),onClick:()=>{s(!1),Mg(e.id)},children:a("并发上限:{value}",{value:l>0?l:a("不限")})}),mq(e)?r.jsx(B,{variant:"ghost",size:"sm",className:u,disabled:e.needsRelogin===!0,title:e.needsRelogin?iy(e):void 0,onClick:()=>{s(!1),ft().wbApp?.runAccountAction?.("refresh",e.id)},children:a("刷新 Token")}):null,r.jsx(B,{variant:"ghost",size:"sm",className:u,title:a("将这个账号及其登录凭证保存为单独的 JSON 文件"),onClick:()=>{s(!1),PG({id:e.id})},children:a("导出账号")}),r.jsx("div",{className:"my-1 h-px bg-hairline"}),r.jsx(B,{variant:"ghost",size:"sm",className:d,title:oy(e)?a("删除这条账号记录(不会影响客户端自己的登录态;之后可再点「导入桌面端登录态」加回来)"):void 0,onClick:()=>{s(!1),ft().wbApp?.runAccountAction?.("remove",e.id)},children:a("删除账号")})]})})]})}function v1e({namesHidden:e,allPicked:t,somePicked:n,disabled:s,onToggleAll:i}){const o=r.jsx("span",{className:"col-grip",title:a("拖动调整列宽(双击还原)")});return r.jsx(Qs,{children:r.jsxs(Jt,{children:[r.jsx(tt,{className:"cell-pick","data-col":"pick",children:r.jsx(jr,{id:"acct-select-all",checked:t,indeterminate:!t&&n,disabled:s,"aria-label":a("全选当前筛选结果"),title:a("全选 / 取消全选当前筛选结果(与批量栏同一个选择)"),onCheckedChange:l=>i(l)})}),r.jsxs(tt,{className:"cell-order","data-col":"order",children:[r.jsx("span",{className:"th-label",title:a("组内先后:按住左边的把手上下拖动即可调整;整组的先后拖分组带的把手"),children:a("顺序")}),o]}),r.jsxs(tt,{className:"cell-account","data-col":"account",children:[r.jsxs("span",{className:"th-label",children:[a("账号"),r.jsx(DG,{hidden:e})]}),o]}),r.jsxs(tt,{className:"cell-proxy","data-col":"proxy",children:[r.jsx("span",{className:"th-label",title:a("该账号出网走的代理(已保存的代理 / 自定义 / 直连);点击可修改"),children:a("代理")}),o]}),r.jsxs(tt,{className:"cell-connections","data-col":"connections",children:[r.jsx("span",{className:"th-label",title:a("此刻正在使用这个账号的请求数(含还在下发内容的流式请求);为 0 时不显示"),children:a("连接数")}),o]}),r.jsxs(tt,{className:"cell-status","data-col":"status",children:[r.jsx("span",{className:"th-label",children:a("状态")}),o]}),r.jsxs(tt,{className:"cell-limits","data-col":"limits",children:[r.jsx("span",{className:"th-label",title:a("该账号当前限流中的模型;点徽章看明细"),children:a("限流")}),o]}),r.jsxs(tt,{className:"cell-expiry","data-col":"expiry",children:[r.jsx("span",{className:"th-label",children:a("有效期")}),o]}),r.jsxs(tt,{className:"cell-usage","data-col":"usage",children:[r.jsx("span",{className:"th-label",children:a("余额")}),o]}),r.jsx(tt,{className:"cell-actions","data-col":"actions",children:r.jsx("span",{className:"th-label",children:a("操作")})})]})})}function DG({hidden:e}){const t=a(e?"显示账号名":"隐藏账号名(名字显示为星号)");return r.jsx(B,{size:"default",variant:"ghost",type:"button",className:`name-eye${e?" on":""}`,title:t,"aria-label":t,"aria-pressed":e,onClick:()=>ESe(),dangerouslySetInnerHTML:{__html:Ry(e?"eyeOff":"eye",13)}})}const LG="dragging",Py=["drop-before","drop-after"];let Sc=null;function $G(e){e.querySelectorAll(`.${Py[0]}, .${Py[1]}`).forEach(t=>{t.classList.remove(...Py)})}function b1e(e,t){if(t==="group"){const s=e.parentElement;return s?[...s.children].filter(i=>i.classList.contains("acct-group")):[]}const n=e.parentElement;return n?[...n.children].filter(s=>s.classList.contains("acct-row")):[]}function zG(e,t){for(let n=0;nn!==e.item);$G(e.container),t.length&&(e.index>=t.length?t[t.length-1].classList.add(Py[1]):t[e.index].classList.add(Py[0]))}function BG(e){if(!Sc)return;if(e.buttons===0){AN(!1);return}const t=Sc.items.filter(s=>s!==Sc.item),n=zG(t,e.clientY);n!==Sc.index&&(Sc.index=n,y1e(Sc))}function AN(e){const t=Sc;t&&(Sc=null,window.removeEventListener("pointermove",BG),window.removeEventListener("pointerup",FG),window.removeEventListener("pointercancel",UG),window.removeEventListener("keydown",HG),document.body.classList.remove("queue-dragging"),t.item.classList.remove(LG),$G(t.container),e&&(t.kind==="group"?hM?.onDrop({kind:"group",provider:t.provider,index:t.index}):hM?.onDrop({kind:"row",provider:t.provider,accountId:t.accountId,index:t.index})))}function FG(){AN(!0)}function UG(){AN(!1)}function HG(e){e.key==="Escape"&&AN(!1)}let hM=null;function j1e(e,t){hM=t,e&&e.dataset.queueDragBound!=="1"&&(e.dataset.queueDragBound="1",e.addEventListener("pointerdown",n=>{if(n.button!==0||Sc)return;const s=n.target,i=s?.closest?.(".queue-grip"),o=s?.closest?.(".order-grip");if(!i&&!o)return;if(n.preventDefault(),i&&t.isLocked()){t.onLockedAttempt();return}const l=(i??o).closest("tbody.acct-group, tr.acct-row");if(!l)return;const u=i?"group":"row",d=l.dataset.provider||l.closest("tbody.acct-group")?.dataset.provider||"";if(u==="row"&&d&&t.isRowLocked?.(d)){t.onRowLockedAttempt?.(d);return}const f=l.dataset.id||"";if(u==="row"&&!f)return;const m=b1e(l,u);if(m.length<2)return;const g=m.filter(v=>v!==l);Sc={kind:u,provider:d,accountId:f,item:l,container:l.parentElement||e,items:m,index:zG(g,n.clientY)},l.classList.add(LG),document.body.classList.add("queue-dragging"),window.addEventListener("pointermove",BG),window.addEventListener("pointerup",FG),window.addEventListener("pointercancel",UG),window.addEventListener("keydown",HG)}))}let EN=null,VG=!1,mM=0,TN=null,KG="";function qG(){return EN?EN.apply(sM):sM}function w1e(e){const t=tn(e);return zl(t,Nu(t)).length>0}function GG(){window.wbAccountsView?.render?.()}function k1e(){const e=qG(),t=`${TN?"T":"F"}|${e.map(s=>`${s.key}:${s.align}`).join("|")}`;if(t===KG)return;KG=t,ft().wbColSettings?.syncStaticHead("accounts",TN);const n=[...TN?.querySelectorAll("thead th")||[]];n.forEach((s,i)=>{const o=s.querySelector(".col-grip");o&&(o.style.display=i===n.length-1?"none":"")})}function S1e(){const e=p.useSyncExternalStore(Hh,Sn),t=p.useRef(null),[,n]=p.useReducer(U=>U+1,0),s=!!Wd(),i=Ml();p.useSyncExternalStore(ky,Bl);const o=hCe(xSe()),[l,u]=p.useState(!1),{groups:d,allGroups:f}=vSe(po,Wh),m=ySe(po,Wh),g=[{value:"all",label:a("全部({n})",{n:i.length})}].concat(Yq().map(U=>({value:U.id,label:a("{label}({count})",{label:a(U.label),count:U.count})}))),v=d.flatMap(U=>U.accounts),b=jSe(),y=qG(),k=Ay(v.length,"accounts",{defaultSize:"all"}),w=k.paged?k.slice(v):v,S=e.filter.provider!=="all"||e.filter.q.trim()!==""||e.filter.limit!=="all",N=S||k.paged,C=a(S?"清除筛选":"把每页调回「全部」");p.useEffect(()=>{XSe()}),p.useEffect(()=>GSe(()=>{eN()}),[]),p.useEffect(()=>{SSe()},[e.version]),p.useEffect(()=>{const U=z=>{(z.key===null||z.key===fI)&&OSe()};return window.addEventListener("storage",U),()=>window.removeEventListener("storage",U)},[]),p.useLayoutEffect(()=>{if(!VG){if(!ft().wbColSettings?.register){window.clearTimeout(mM),mM=window.setTimeout(()=>T(U=>U+1),50);return}VG=!0,EN=ft().wbColSettings?.register({id:"accounts",label:a("账号表"),columns:sM.map(U=>({key:U.key,label:U.label,align:U.align,legacyAlign:U.legacyAlign})),mount:()=>document.querySelector("#accounts-col-host"),onChange:GG})||null,EN&&n();return}k1e()});const[,T]=p.useState(0);p.useEffect(()=>()=>window.clearTimeout(mM),[]),p.useEffect(()=>{RCe(t.current,GG)},[]);const P=v.map(U=>U.id),O=P.length>0&&P.every(U=>e.selected.has(U)),A=P.some(U=>e.selected.has(U)),R=[...e.selected].filter(U=>!P.includes(U)).length,M=e.selected.size>0,_=f.length>0&&f.every(U=>e.collapsed.has(U.provider)),[L,$]=p.useState(!1),D=(e.filter.provider!=="all"?1:0)+(String(e.filter.q||"").trim()?1:0)+(e.filter.enabled!=="all"?1:0)+(e.filter.limit!=="all"?1:0),F=new Map;for(const U of d)F.set(U.provider,w.filter(z=>tn(z)===U.provider).map(z=>z.id));const V=p.useRef({displayed:d,all:f,renderedRows:F});p.useEffect(()=>{V.current={displayed:d,all:f,renderedRows:F}});const q=p.useRef({locked:!1,lockReason:"",onDrop:U=>{}}),Q=p.useCallback(U=>{const{displayed:z,all:K}=V.current;if(U.kind==="group"){if(q.current.locked)return;const te=K.findIndex(ge=>ge.provider===U.provider),le=z.findIndex(ge=>ge.provider===U.provider);if(te<0||le<0)return;const he=z.filter(ge=>ge.provider!==U.provider);if(!he.length||U.index<0||U.index>he.length||U.index===le)return;const ce=K[te],ye=K.filter((ge,ue)=>ue!==te),fe=he[U.index]||he[he.length-1],Le=ye.findIndex(ge=>ge.provider===fe.provider);if(Le<0)return;const pe=Le+(U.index===he.length?1:0);if(pe===te)return;const Se=[...ye.slice(0,pe),ce,...ye.slice(pe)].flatMap(ge=>ge.queueMembers.map(ue=>ue.id));I8(Se,a("{name} 移到第 {rank} 顺位",{name:ce.label,rank:pe+1}));return}const J=zl(U.provider,Nu(U.provider));if(J.length>0){Ct(wN(J),"err");return}const ee=K.find(te=>te.provider===U.provider);if(!ee)return;const H=ee.queueMembers.findIndex(te=>te.id===U.accountId);if(H<0)return;const G=ee.queueMembers[H],Y=ee.queueMembers.filter((te,le)=>le!==H),se=V.current.renderedRows.get(U.provider)||[],re=U.indexte.id===re),de=re===null||ne<0?Y.length:ne;if(de===H)return;const ie=[...Y.slice(0,de),G,...Y.slice(de)],je=K.map(te=>te.provider===U.provider?{...te,members:ie,queueMembers:ie}:te).flatMap(te=>te.queueMembers.map(le=>le.id));I8(je,a("{name} 移到 {group} 组内第 {rank} 位",{name:String(G.name||G.id),group:a(ee.label),rank:de+1}))},[]);p.useEffect(()=>{q.current={locked:N,lockReason:C,onDrop:Q}}),p.useEffect(()=>{j1e(t.current,{isLocked:()=>q.current.locked,onLockedAttempt:()=>Ct(a("当前视图不能调整组顺位:{reason} 之后再拖动",{reason:q.current.lockReason}),"err"),isRowLocked:U=>zl(U,Nu(U)).length>0,onRowLockedAttempt:U=>Ct(wN(zl(U,Nu(U))),"err"),onDrop:U=>q.current.onDrop(U)})},[]);function X(U,z,K){switch(U){case"pick":return r.jsx(jr,{checked:K.picked,"data-pick":z.id,title:a("勾选后可批量操作"),"aria-label":a("勾选后可批量操作"),onCheckedChange:J=>ASe(z.id,J)});case"order":return r.jsx(WCe,{account:z,rank:K.rank,sortActive:w1e(z)});case"account":return r.jsx(m1e,{account:z,namesHidden:e.namesHidden});case"proxy":return r.jsx(p1e,{account:z});case"connections":return r.jsx(t1e,{account:z});case"status":return r.jsx(QCe,{account:z});case"limits":return r.jsx(ZCe,{account:z,onClear:J=>{fNe(z.id,J)}});case"expiry":return r.jsx(JCe,{account:z});case"usage":return r.jsx(u1e,{account:z});case"actions":return r.jsx(g1e,{account:z,atFront:K.seat.position<=1});default:return null}}return r.jsxs(r.Fragment,{children:[r.jsxs(et,{render:r.jsx("section",{}),className:"panel account-table",children:[r.jsxs("div",{className:"toolbar",children:[r.jsxs(B,{size:"default",variant:"ghost",type:"button",className:"acct-filter-open hidden max-[767px]:inline-flex",onClick:()=>$(!0),"aria-label":a("打开筛选"),children:[a("筛选"),D>0?r.jsx(Ee,{variant:"brand",shape:"tag",className:"acct-filter-badge",children:D}):null]}),r.jsxs(DS,{open:L,onOpenChange:$,title:a("筛选"),inlineClassName:"contents",bodyClassName:"acct-filter-body",actions:r.jsx(B,{variant:"ghost",size:"sm",disabled:D===0,onClick:()=>pI(),children:a("清空")}),children:[r.jsxs("div",{className:"group","data-provider-group":"1",children:[r.jsx("span",{className:"label",children:a("提供商")}),r.jsxs(YV,{items:g,value:g.find(U=>U.value===e.filter.provider)??g[0],onValueChange:U=>{U&&kSe(U.value)},isItemEqualToValue:(U,z)=>U.value===z.value,autoHighlight:!0,children:[r.jsx(QV,{className:"max-w-none min-w-0 w-full min-[768px]:max-w-[200px] min-[768px]:min-w-[130px] min-[768px]:w-auto","aria-label":a("按提供商筛选账号"),children:r.jsx(XV,{children:g.find(U=>U.value===e.filter.provider)?.label||a("全部")})}),r.jsxs(ZV,{children:[r.jsx("div",{className:"shrink-0 border-b border-hairline p-2",children:r.jsx(JV,{placeholder:a("搜索提供商…"),"aria-label":a("搜索提供商")})}),r.jsx(nK,{children:a("没有匹配的选项")}),r.jsx(eK,{children:U=>r.jsx(tK,{value:U,children:U.label},U.value)})]})]})]}),r.jsx("div",{className:"divider","data-provider-divider":"1"}),r.jsxs("div",{className:"group",children:[r.jsx("span",{className:"label",children:a("搜索")}),r.jsx(ze,{className:"acct-search",type:"search",value:e.filter.q,placeholder:a("账号名 / 邮箱 / 备注"),"aria-label":a("搜索账号"),onChange:U=>wSe(U.currentTarget.value)})]}),r.jsx("div",{className:"divider"}),r.jsxs("div",{className:"group",children:[r.jsx("span",{className:"label",children:a("状态")}),r.jsx(en,{options:[{value:"all",label:a("全部"),count:m.enabledAll??0},{value:"enabled",label:a("启用"),count:m.enabled??0},{value:"disabled",label:a("禁用"),count:m.disabled??0}],value:e.filter.enabled,onValueChange:U=>Xq("enabled",U),"aria-label":a("启用状态")})]}),r.jsxs("div",{className:"group",children:[r.jsx("span",{className:"label",children:a("限额")}),r.jsx(en,{options:[{value:"all",label:a("全部"),count:m.limitAll??0},{value:"normal",label:a("正常"),count:m.normal??0,disabled:e.filter.enabled==="disabled"},{value:"limited",label:a("已限流"),count:m.limited??0,disabled:e.filter.enabled==="disabled"}],value:e.filter.limit,onValueChange:U=>Xq("limit",U),"aria-label":a("限额状态")})]})]}),r.jsxs("div",{className:"actions",children:[r.jsx(B,{id:"btn-refresh-accounts",variant:"outline",disabled:e.listBusy,title:a("重新读取账号列表和插件状态,不刷新 Token 或查询余额"),onClick:()=>{x8({feedback:!0})},children:e.listBusy?a("刷新中…"):a("刷新")}),r.jsx(B,{id:"btn-add-account-2",variant:"default",title:a("登录 / 导入一个新账号"),onClick:()=>{ft().wbAddAccountModal?.open?.(),ft().wbAccountAddForms?.syncAddProvider?.()},children:a("添加账号")}),r.jsx(B,{id:"btn-query-usage",variant:"outline",disabled:e.usageStarting.has("*")||!i.some(Si),title:a("查询全部账号的余额(含已禁用账号 —— 禁用只表示不参与转发)"),onClick:()=>{A8()},children:e.usageStarting.has("*")?a("启动中…"):e.usageBusy?a("重新查询"):a("查询余额")}),e.usageBusy?r.jsx(B,{variant:"outline",onClick:()=>{qSe()},children:a("取消查询")}):null]})]}),e.listError?r.jsx(Fe,{variant:"destructive",className:"acct-load-error",role:"alert",children:s?a("刷新账号列表失败,当前仍显示上一次成功读取的数据:{message}",{message:e.listError}):a("账号列表加载失败,请点击「刷新」重试:{message}",{message:e.listError})}):null,r.jsxs("div",{className:Ne("batch-bar",M&&"active"),id:"batch-bar",children:[r.jsxs(Ae,{className:"batch-select-all",children:[r.jsx(jr,{id:"batch-select-all",checked:O,indeterminate:!O&&A,disabled:!P.length,"aria-label":a("全选当前筛选结果"),onCheckedChange:U=>e8(P,U)}),r.jsx("span",{id:"batch-select-label",children:P.length?a("全选当前筛选结果({n} 个)",{n:P.length}):a("没有可全选的账号")})]}),r.jsxs("span",{className:"batch-count",children:[a("已选")," ",r.jsx("b",{id:"batch-count",children:e.selected.size})," ",a("个 · 共")," ",r.jsx("b",{id:"accounts-count",children:i.length})," ",a("个")]}),r.jsx("span",{className:"batch-summary",id:"accounts-group-summary",children:d.length?a("{groups} 家 · 显示 {rows} 行",{groups:d.length,rows:P.length}):""}),N?r.jsx("span",{className:"batch-hidden",title:C,children:a("组顺位已锁定")}):null,Qq()?r.jsx(B,{id:"btn-clear-filter",variant:"ghost",size:"xs",title:a("清空搜索与三个筛选档位,回到全部账号"),onClick:()=>pI(),children:a("清除筛选")}):null,R?r.jsx("span",{className:"batch-hidden",id:"batch-hidden-hint",children:a("另有 {n} 个已勾选账号被当前筛选隐藏,仍会参与操作",{n:R})}):null,r.jsxs("div",{className:"batch-actions",children:[r.jsx(yCe,{hidden:o,onOpen:()=>u(!0)}),r.jsx(B,{id:"btn-fold-groups",variant:"outline",disabled:!f.length,title:a(_?"展开全部分组":"折叠全部分组(只留组头)"),onClick:()=>NSe(f.map(U=>U.provider),!_),children:a(_?"展开":"折叠")}),r.jsx("span",{className:"batch-col-host",id:"accounts-col-host"}),M?r.jsx(B,{id:"btn-batch-open",variant:"default",onClick:()=>OI([...e.selected],"enable"),children:a("批量操作")}):null]})]}),r.jsx("div",{className:"acct-scroll",id:"account-list",ref:t,children:s?i.length?v.length?r.jsxs(ps,{container:!1,className:"acct-table",ref:N1e,style:{minWidth:`${TCe(y.map(U=>U.key))}px`},children:[r.jsx(C1e,{}),r.jsx(v1e,{namesHidden:e.namesHidden,allPicked:O,somePicked:A,disabled:!P.length,onToggleAll:U=>e8(P,U)}),d.map(U=>{const z=e.collapsed.has(U.provider),K=w.filter(J=>tn(J)===U.provider);return r.jsxs(Es,{className:"acct-group","data-provider":U.provider,children:[r.jsx(XCe,{group:U,collapsed:z,colSpan:y.length}),z?null:K.map(J=>{const ee=U.members.findIndex(G=>G.id===J.id)+1,H=mNe(J,b,ee>0?ee:1);return r.jsx(p.Fragment,{children:r.jsx(Jt,{className:Ne("acct-row",!Ni(J)&&"disabled",H.picked&&"selected"),"data-id":J.id,"data-provider":U.provider,"data-desktop":oy(J)?"1":void 0,children:y.map(G=>r.jsx(Ve,{className:`cell-${G.key} ta-${G.align}`,children:X(G.key,J,H)},G.key))})},J.id)})]},U.provider)})]}):r.jsxs(pt,{className:"empty",children:[a("当前筛选条件下没有账号"),Qq()?r.jsx(B,{size:"default",variant:"ghost",type:"button",className:"link-btn",onClick:()=>pI(),children:a("清除筛选")}):null]}):o.total>0?r.jsx(wCe,{hidden:o,onOpen:()=>u(!0)}):r.jsx(pt,{className:"empty",children:a("暂无账号,请点击右上角「添加账号」")}):r.jsx(pt,{className:"empty",children:e.listError?a("账号列表加载失败,请点击「刷新」重试"):r.jsxs(r.Fragment,{children:[r.jsx(Qt,{}),a("正在加载…")]})})}),r.jsx(rf,{total:v.length,range:k.paged?{start:k.rangeStart,end:k.rangeEnd}:null,page:k.page,pageCount:k.pageCount,size:k.size,onSizeChange:k.setSize,onPageChange:k.goto})]}),r.jsx(dCe,{}),r.jsx(jCe,{hidden:o,open:l,onOpenChange:u})]})}function N1e(e){TN=e}function C1e(){const e=ECe(),t=n=>r.jsx("col",{"data-col":n,style:e[n]?{width:`${e[n]}px`}:void 0},n);return r.jsxs("colgroup",{children:[t("pick"),t("order"),t("account"),t("proxy"),t("connections"),t("status"),t("limits"),t("expiry"),t("usage"),t("actions")]})}const WG='.page[data-page="accounts"]';let pM=null;function A1e(){if(pM)return;const e=document.querySelector(WG);e&&(e.replaceChildren(),pM=zn.createRoot(e),xr.flushSync(()=>{pM.render(r.jsx(S1e,{}))}))}gNe(),dNe(),Ra("accounts",WG,A1e);function ma({label:e,action:t,hidden:n,onClick:s,children:i}){return r.jsxs("section",{className:"add-group",hidden:n,onClick:s,children:[r.jsxs("div",{className:"add-group-label",children:[r.jsx("span",{children:e}),t?r.jsx("span",{className:"label-action",children:t}):null]}),r.jsx("div",{className:"add-group-box",children:i})]})}function el({host:e,note:t,active:n=!0,children:s}){const i=r.jsxs(r.Fragment,{children:[r.jsx("div",{className:"acct-add-foot-note",children:t}),r.jsx("div",{className:"acct-add-foot-buttons",children:s})]});return e?xr.createPortal(r.jsx("div",{className:"acct-add-foot-slot",hidden:!n,children:i}),e):r.jsx("div",{className:"acct-add-foot-inline",children:i})}const E1e={provider:"doubaowork",label:a("豆包工作"),desktop:!0,webLogin:{noteHtml:a("在豆包官方页面完成登录,窗口会自动读取完整 Cookie 并加入账号列表;不需要安装豆包工作客户端。"),button:a("打开网页登录"),hint:a("内嵌窗口打开;完成后自动加入列表,关窗即取消等待"),busyText:a("等待豆包工作登录完成…"),webHint:a("浏览器面板无法读取其它站点的 Cookie,请登录 www.doubao.com 后,使用「填写凭证」粘贴完整 Cookie。")},manualTitle:a("粘贴 Cookie"),manualNote:a("粘贴 www.doubao.com 的完整 Cookie(必须含 sessionid),也支持 Cookie JSON 数组或对象。复用豆包工作账号的额度;Cookie 失效后需重新登录,没有自动续期。"),fields:[{key:"cookie",label:"Cookie",rows:5,placeholder:"sessionid=…; sessionid_ss=…; ttwid=…"},{key:"name",label:a("备注名"),optional:!0,placeholder:a("可选,留空则用账号昵称")}],desktopNote:a("读取本机已登录豆包工作客户端的 Cookie,每次请求实时读取;客户端需使用 --remote-debugging-port=9342 启动。本软件不修改、关闭或重启客户端。"),desktopHint:a("未开启客户端调试端口时,请使用网页登录或粘贴 Cookie。"),fileImport:{accept:".json,application/json",note:a("选择包含 Cookie 的 JSON 对象,或本软件导出的单账号 JSON 文件。导入后可独立使用,不需要持续运行豆包工作客户端。")}},T1e={provider:"deepseek-web",label:a("DeepSeek 网页"),desktop:!1,manualTitle:a("粘贴网页访问令牌"),manualNote:a("在 chat.deepseek.com 登录本人账号后,从浏览器开发者工具的 Application → Local Storage 复制 userToken 的 value。Cookie 可选,需补充时粘贴该站点请求里的完整 Cookie;登录态失效或要求人机验证时,请回官方网页手动登录后更新。这里不接受收费 API Key。"),fields:[{key:"accessToken",label:a("网页访问令牌"),rows:3,placeholder:a("chat.deepseek.com 的 userToken.value,不是收费 API Key")},{key:"cookie",label:a("网页 Cookie"),rows:3,optional:!0,placeholder:a("官方网页正常登录后的 Cookie;风控时请手动更新")},{key:"name",label:a("备注名"),optional:!0,placeholder:a("可选,留空自动生成")}],fileImport:{accept:".json,application/json",note:a("选择包含该提供商凭证的 JSON 文件,或本软件导出的单账号 JSON 文件。导入后凭证保存在网关,可独立使用。")}};function YG(e,t,n){return{provider:e,label:t,desktop:!1,webLogin:{desktopOnly:!0,noteHtml:a("在所选站点的 MonkeyCode 官方页面完成登录和验证码,成功后自动读取登录态并加入账号列表,无需手动复制 Cookie。"),button:a("打开网页登录"),hint:a("内嵌窗口打开;完成后自动加入列表,关窗即取消等待"),busyText:a("等待 MonkeyCode 登录完成…"),webHint:a("MonkeyCode 自动网页登录仅限桌面端;浏览器面板请登录对应官网后粘贴 session。")},manualTitle:a("粘贴 session cookie"),manualNoteHtml:a("粘贴网页登录态 cookie monkeycode_ai_session 的值(在浏览器里复制整段 Cookie 直接粘贴也行,网关会自己剥出值)。
    {siteNote}
    MonkeyCode 没有续期接口:session 有效期约 30 天(硬限制),过期后重新登录网页、再粘贴一次即可。",{siteNote:n}),fields:[{key:"session",label:"session",rows:3,placeholder:a("monkeycode_ai_session 的值(也可直接粘贴整段 Cookie)")},{key:"imageId",label:a("任务镜像 id"),optional:!0,placeholder:a("可选:发起对话必需,留空则由网关从该账号已有任务里自动发现,发现不到时之后手动补")},{key:"name",label:a("备注名"),optional:!0,placeholder:a("可选,留空则用上游返回的账号名或账号 id")}]}}const O1e=YG("monkeycode",a("MonkeyCode"),a("这里填国内站(monkeycode-ai.com)的账号:请粘贴国内站的 session。国际站(monkeycode-ai.net)是另一家 provider、另一套账号,两边的凭证不通用。")),R1e=YG("monkeycode-intl",a("MonkeyCode 国际版"),a("这里填国际站(monkeycode-ai.net)的账号:请粘贴国际站的 session。国内站(monkeycode-ai.com)是另一家 provider、另一套账号,两边的凭证不通用。")),P1e={provider:"tabbit",label:a("Tabbit 国内版"),desktop:!1,smsLogin:{noteHtml:a("用绑定的手机号登录:点「获取验证码」,收到短信后填入下方并点「登录并添加」。这是国内站官方唯一的登录方式。")},manualTitle:a("粘贴网页登录凭证"),manualNote:a("在 web.tabbit.com 登录后,从开发者工具 Application → Cookies 复制 token 与 user_id,或直接粘贴该站点请求的 Copy as cURL 整段。登录态有效期约 7 天,上游没有续期接口,过期后重新导入即可。Cookie 与 JWT 至少填一项。"),fields:[{key:"cookie",label:a("网页 Cookie"),rows:3,optional:!0,placeholder:a("token=…; user_id=…(也可粘贴 Copy as cURL 整段)")},{key:"token",label:a("登录 JWT"),rows:3,optional:!0,placeholder:a("只拿到 JWT 时填这里;Cookie 里有 token 可留空")},{key:"unlockPro",label:a("解锁 Premium"),optional:!0,placeholder:a("默认开启;填 0 关闭(发送「已设为默认浏览器」标记)")},{key:"clientVersion",label:a("客户端版本"),optional:!0,placeholder:a("留空使用 1.17.16(10117016)")},{key:"name",label:a("备注名"),optional:!0,placeholder:a("可选,留空自动生成")}],fileImport:{accept:".json,.txt,text/plain,application/json",note:a("选择包含 Tabbit Cookie / JWT 的 JSON 或文本文件;也可以直接粘贴到上方表单。")}},I1e={provider:"tabbit-intl",label:a("Tabbit 国际版"),desktop:!1,manualTitle:a("粘贴网页登录凭证"),manualNote:a("在 web.tabbit.ai 登录后,从开发者工具 Application → Cookies 复制 token 与 user_id,或直接粘贴该站点请求的 Copy as cURL 整段。国际站没有可复刻的网页授权回调,手机号登录也处在上游灰度里,所以只能导入已有登录态。登录态有效期约 7 天,过期后重新导入。Cookie 与 JWT 至少填一项。"),fields:[{key:"cookie",label:a("网页 Cookie"),rows:3,optional:!0,placeholder:a("token=…; user_id=…(也可粘贴 Copy as cURL 整段)")},{key:"token",label:a("登录 JWT"),rows:3,optional:!0,placeholder:a("只拿到 JWT 时填这里;Cookie 里有 token 可留空")},{key:"unlockPro",label:a("解锁 Premium"),optional:!0,placeholder:a("默认开启;填 0 关闭(发送「已设为默认浏览器」标记)")},{key:"clientVersion",label:a("客户端版本"),optional:!0,placeholder:a("留空使用 1.17.16(10117016)")},{key:"name",label:a("备注名"),optional:!0,placeholder:a("可选,留空自动生成")}],fileImport:{accept:".json,.txt,text/plain,application/json",note:a("选择包含 Tabbit Cookie / JWT 的 JSON 或文本文件;也可以直接粘贴到上方表单。")}},Fl=a("将在新标签页中打开授权页;完成后自动加入账号列表。"),gM=a("将在新标签页中打开授权页;完成后自动加入账号列表。若页面跳回本机地址后账号没有出现,按提示把地址栏里的完整回调地址粘贴回来即可。"),ON=100,M1e=256,_1e=e=>e.key==="name"?ON:M1e,Nc={accept:".json,application/json",note:a("选择包含该提供商凭证的 JSON 文件,或本软件导出的单账号 JSON 文件。导入后凭证保存在网关,可独立使用。")},D1e={provider:"raccoon",label:"小浣熊",addButton:a("添加小浣熊账号"),webLogin:{noteHtml:a("在打开的官方登录页里完成登录,成功后自动加入账号列表。"),button:a("打开网页登录"),hint:a("内嵌窗口打开;完成后自动加入列表,关窗即取消等待"),busyText:a("等待小浣熊登录完成…"),webHint:Fl},manualTitle:a("粘贴 token / refreshToken"),manualNoteHtml:a('refreshToken 可选,填了到期可自动续期;两者都能从小浣熊客户端登录态文件里取到。'),fields:[{key:"name",label:a("备注名"),optional:!0,placeholder:a("可选,留空则用凭证里的账号名")},{key:"token",label:"token",rows:3,placeholder:a("粘贴 access_token(一长串 JWT)")},{key:"refreshToken",inputKey:"refresh",label:"refreshToken",rows:2,optional:!0,placeholder:a("可选")}],desktopNote:a("读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。客户端重新登录后点「刷新 Token」同步。"),fileImport:{accept:".json,application/json",note:a("选择小浣熊客户端的登录态文件 auth.json(Windows:C:\\Users\\<你的用户名>\\.box-agent\\config\\auth.json;macOS / Linux:~/.box-agent/config/auth.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端。")}},L1e={provider:"catpaw",label:"CatPaw",webLogin:{noteHtml:a("用 CatPaw 账号完成登录(美团 passport),成功后自动加入账号列表。"),button:a("打开 CatPaw 网页登录"),busyText:a("等待 CatPaw 登录完成…"),modes:[{value:"embedded",label:a("内嵌窗口(推荐)"),hint:a("内嵌窗口打开;完成后自动加入列表,关窗即取消等待")},{value:"external",label:a("系统浏览器"),hint:a("系统浏览器打开(复用已登录的美团账号);完成后自动加入列表")}]},manualNote:a("token 是登录态 Cookie;CatPaw 没有刷新机制,过期后需在客户端重新登录。"),fields:[{key:"token",label:"token",rows:3,placeholder:a("CatPaw 的 X-Passport-Token(登录态 Cookie)")},{key:"uid",label:"uid",placeholder:a("必填,CatPaw 账号标识")},{key:"name",label:a("备注名"),optional:!0,placeholder:a("可选,留空则用登录名或 uid")}],desktopNote:a("读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。客户端重新登录后重新导入即可。"),desktopHint:a("读取 ~/.meituan-catpaw/auth.json,需已在 CatPaw 客户端登录"),fileImport:{accept:".json,application/json",note:a("选择 CatPaw 客户端的登录态文件 auth.json(Windows:C:\\Users\\<你的用户名>\\.meituan-catpaw\\auth.json;macOS / Linux:~/.meituan-catpaw/auth.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端。")}},$1e={provider:"autoclaw",label:a("AutoClaw 国内版"),fileImport:Nc,manualNote:a("token 支持 enc: 前缀(Windows 上自动解密)。未填 refreshToken 无法自动续期。"),smsLogin:{noteHtml:a("用绑定的手机号登录:点「获取验证码」后填入即可。这是国内版官方唯一的登录方式。")},fields:[{key:"token",label:"token",rows:3,placeholder:a("明文 JWT 或 auth.json 里的 enc: 加密值(自动解密)")},{key:"refreshToken",label:"refreshToken",rows:2,optional:!0,placeholder:a("没有则无法自动续期")},{key:"deviceId",label:"deviceId",optional:!0,placeholder:a("可选,续期时带上")},{key:"name",label:a("备注名"),optional:!0,placeholder:a("可选,留空则用 userId")}],desktopNote:a("读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。"),desktopHint:a("读取 %APPDATA%/AutoClaw/auth.json 并解密,仅 Windows"),desktopWindowsOnly:!0},z1e={provider:"autoclaw-intl",label:a("AutoClaw 国际版"),fileImport:Nc,manualNote:a("国际版与国内版账号体系独立,请填国际版的凭证。未填 refreshToken 无法自动续期。"),oauthLogin:{title:a("网页登录(Zai / Google)"),noteHtml:a("点按钮后先过一次滑块验证(官方风控),随后打开登录页,登录完成即自动添加账号。
    这是国际版官方唯一的登录方式;已在客户端登录过的,用「导入桌面端登录态」更快。"),modes:[{value:"embedded",label:a("内嵌窗口(推荐)"),hint:a("内嵌窗口打开;关窗即取消等待(Google 账号被拒时改用系统浏览器)")},{value:"external",label:a("系统浏览器"),hint:a("系统浏览器打开(复用已登录的 Zai / Google 账号);完成后自动加入列表")}],webHint:Fl},fields:[{key:"token",label:"token",rows:3,placeholder:a("明文 JWT(国际版账号的 access token)")},{key:"refreshToken",label:"refreshToken",rows:2,optional:!0,placeholder:a("没有则无法自动续期")},{key:"deviceId",label:"deviceId",optional:!0,placeholder:a("可选,续期时带上")},{key:"name",label:a("备注名"),optional:!0,placeholder:a("可选,留空则用 userId")}],desktopNote:a("读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。用 Zai / Google 登录客户端的用户走这一条。"),desktopHint:a("读取 %APPDATA%/AutoClaw/auth.json 并解密,仅 Windows"),desktopWindowsOnly:!0};function XG(e){const{provider:t,label:n,siteNote:s}=e;return{provider:t,label:n,desktop:!1,webLogin:{noteHtml:a("打开官方授权页完成设备码授权,登录的是{label}({site})的账号。",{label:n,site:s}),button:a("打开 Qoder 网页登录"),busyText:a("等待 Qoder 授权完成…"),edition:t==="qoder"?"cn":"global",modes:[{value:"embedded",label:a("内嵌窗口(推荐)"),hint:a("内嵌窗口用全新环境,多账号互不影响;关窗即取消等待")},{value:"external",label:a("系统浏览器"),hint:a("系统浏览器打开(复用已登录账号);完成后自动加入列表")}]},manualTitle:a("使用个人访问令牌(PAT)"),manualNote:a("在{label}的 Qoder 账号设置 → Integrations 生成 PAT(别填 Google / GitHub 的令牌)。两个地区的账号与凭证不通用。",{label:n}),fields:[{key:"pat",label:"Qoder PAT",rows:3,placeholder:a("粘贴 Qoder 个人访问令牌(pt-…)")},{key:"name",label:a("备注名"),optional:!0,placeholder:a("可选,留空使用账号昵称或邮箱")}]}}const B1e=XG({provider:"qoder",label:a("中国版"),siteNote:"qoder.com.cn"}),F1e=XG({provider:"qoder-intl",label:a("国际版"),siteNote:"qoder.com"});function QG(e){const{provider:t,label:n,siteNote:s,loginable:i}=e;return{provider:t,label:n,desktop:!1,webLogin:{noteHtml:i?a("在打开的页面里登录千问办公{label}({site})的账号,登录完成后会自动加入列表。两版的账号与凭证不通用。",{label:n,site:s}):a("千问办公{label}暂时无法登录:上游只接受它自己的官方回调地址,不论证码到本机。",{label:n}),button:a(i?"打开千问办公网页登录":"暂时无法登录"),busyText:a("等待千问办公登录完成…"),edition:t==="qwenwork"?"cn":"global",modes:[{value:"embedded",label:a("内嵌窗口(推荐)"),hint:a("内嵌窗口用全新环境,多账号互不影响;关窗即取消等待")},{value:"external",label:a("系统浏览器"),hint:a("系统浏览器打开(复用已登录账号);完成后自动加入列表")}]},fields:[{key:"name",label:a("备注名"),optional:!0,placeholder:a("可选,留空使用账号名或邮箱")}]}}const U1e=QG({provider:"qwenwork",label:a("国内版"),siteNote:"qwenwork.cn",loginable:!0}),H1e=QG({provider:"qwenwork-intl",label:a("国际版"),siteNote:"qwenwork.ai",loginable:!1});function ZG(e){const{provider:t,label:n,poolNote:s}=e;return{provider:t,label:n,desktop:!0,webLogin:{noteHtml:a("打开授权页完成确认,账号自动加入 {label}{note}",{label:n,note:s}),button:a("打开 Cline 授权页"),busyText:a("等待 Cline 授权确认…"),modes:[{value:"embedded",label:a("内嵌窗口(推荐)"),hint:a("内嵌窗口打开;完成后自动加入列表,关窗即取消等待")},{value:"external",label:a("系统浏览器"),hint:a("系统浏览器打开(复用已登录的 Cline 账号);完成后自动加入列表")}]},manualTitle:a("填写凭证"),manualNote:a("refreshToken 可选,填了可自动续期;两者都能从客户端登录态文件取到。同一个 Cline 账号两个池都能用,这里归入 {label}。",{label:n}),fields:[{key:"accessToken",label:"accessToken",rows:3,placeholder:a("粘贴 workos:… 开头的令牌(不带前缀也会自动补上)")},{key:"refreshToken",label:"refreshToken",rows:2,optional:!0,placeholder:a("可选,没有则无法自动续期")},{key:"name",label:a("备注名"),optional:!0,placeholder:a("可选,留空使用账号姓名、邮箱或令牌指纹")}],desktopNote:a("读本机客户端当前登录态,每次实时读取(删掉这条记录不影响客户端登录态)。这一条归入 {label}。",{label:n}),desktopHint:a("读取 ~/.cline/data/settings/providers.json,需已在 Cline 客户端登录"),fileImport:{accept:".json,application/json",note:a("选择 Cline 客户端的登录态文件 providers.json(Windows:C:\\Users\\<你的用户名>\\.cline\\data\\settings\\providers.json;macOS / Linux:~/.cline/data/settings/providers.json)。导入后凭证直接落在网关、可独立转发,不再依赖本机客户端;这一条归入 {label}。",{label:n})}}}function JG(e){const{provider:t,label:n,site:s,siteNote:i}=e;return{provider:t,label:n,webLogin:{noteHtml:a("打开 Accio {label}的官方登录页({site})并用你的 Accio 账号登录:登录成功后官方页面会跳回本机;同机自动完成,Docker / 远程面板按提示粘贴回调地址即可(授权码只在本机传给网关,界面不显示明文 token)。",{label:n,site:s}),button:a("打开 Accio {label}登录页",{label:n}),busyText:a("等待 Accio {label}登录完成…",{label:n}),modes:[{value:"embedded",label:a("内嵌窗口(推荐)"),hint:a("将打开内嵌窗口;登录完成后自动加入账号列表。关掉窗口即取消等待")},{value:"external",label:a("系统浏览器"),hint:a("将用系统默认浏览器打开登录页(会复用浏览器里已登录的 Accio 账号);完成登录后自动加入账号列表,关掉弹窗即取消等待")}],webHint:gM},manualTitle:a("填写凭证"),manualNoteHtml:a("accessToken 是 Accio 的登录凭证(一长串不透明 token,不是 JWT);refreshToken 可选,填了之后到期能自动续期。请填写 {label}账号的凭证 —— {siteNote}(最容易拿到的办法:直接用上方的「网页登录」,不需要手工找 token。)",{label:n,siteNote:i}),fields:[{key:"accessToken",label:"accessToken",rows:3,placeholder:a("粘贴 Accio 的 accessToken")},{key:"refreshToken",label:"refreshToken",rows:2,optional:!0,placeholder:a("可选,没有则无法自动续期")},{key:"name",label:a("备注名"),optional:!0,placeholder:a("可选,留空使用账号昵称或邮箱")}]}}function e7(e){const{provider:t,label:n,site:s,planNote:i}=e;return{provider:t,label:n,fileImport:Nc,desktop:!1,webLogin:{noteHtml:a("打开 ZCode {label}的官方授权页并用你的账号登录。授权结果由 ZCode 服务端记录,网关在后台自动取回凭证并加入账号列表。",{label:n}),button:a("打开 ZCode {label}授权页",{label:n}),busyText:a("等待 ZCode {label}授权完成…",{label:n}),modes:[{value:"embedded",label:a("内嵌窗口(推荐)"),hint:a("将打开内嵌窗口;授权完成后自动加入账号列表。关掉窗口即取消等待。授权页最后可能提示无法打开 zcode:// 链接,这是正常的 —— 结果已由服务端记下")},{value:"external",label:a("系统浏览器"),hint:a("将用系统默认浏览器打开授权页(会复用浏览器里已登录的 ZCode 账号);授权完成后自动加入账号列表。页面最后可能提示无法打开 zcode:// 链接,属正常现象")}]},manualTitle:a("填写凭证"),manualNoteHtml:a("本家有两个**互不替代**的凭证,按你要用的功能填,至少填一个:编码套餐 API Key 用于转发推理(打 {site})与查询窗口限额(每 N 小时 / 每周的剩余比例);jwt 用于领取套餐与查询余额(打 zcode.z.ai 的 billing 网关,官方叫 Coding Plan JWT,是一串三段点分的字符串)。余额两把都能查、但读到的东西不同:jwt 读到余额桶与套餐到期,API Key 读到窗口限额;而领取只认 jwt、转发只认 API Key。请填写 {label}账号的凭证 —— {plan}(最容易拿到的办法:直接用上方的「网页登录」—— 它会替你把这个 API Key 换好,两个凭证一起拿到。)",{site:s,label:n,plan:i}),fields:[{key:"accessToken",label:a("编码套餐 API Key"),rows:3,optional:!0,placeholder:a("用于转发;形如 apiKey.secret 两段点分(不填则这个账号不能转发)")},{key:"jwt",label:"Coding Plan JWT",inputKey:"jwt",rows:3,optional:!0,placeholder:a("用于领取套餐与查询余额;不填则这个账号不能领取与查余额")},{key:"userId",label:a("用户 ID"),optional:!0,placeholder:a("可选;用于生成账号 id 与展示名")},{key:"name",label:a("备注名"),optional:!0,placeholder:a("可选,留空自动生成")}]}}const V1e={provider:"codearts",label:"CodeArts",desktop:!1,webLogin:{noteHtml:a("打开华为云 CodeArts 的官方授权页登录:登录完成后官方页面会把浏览器带回网关自己的 /oauth/callback,网关用一次性授权码换取临时凭据并加入账号列表。
    网关跑在另一台机器上时,网页端会提示把地址栏中的最终回调地址直接粘贴回面板。"),button:a("打开 CodeArts 授权页"),busyText:a("等待 CodeArts 登录完成…"),modes:[{value:"embedded",label:a("内嵌窗口(推荐)"),hint:a("将打开内嵌窗口;登录完成后自动加入账号列表。关掉窗口即取消等待")},{value:"external",label:a("系统浏览器"),hint:a("将用系统默认浏览器打开授权页(会复用浏览器里已登录的华为云账号);浏览器与网关不在同一台机器时,按上方说明把最终回调地址粘贴回面板")}],webHint:gM},manualTitle:a("粘贴登录凭据"),manualNoteHtml:a('整份粘贴官方插件 / CLIProxyAPI 落盘的凭据 JSON(形如 {"codearts_provider_credential":{…}},铺平的也行)。
    必填:access_key_id、secret_access_key、security_token。要能自动续期,必须连 refresh_token 与 oauth_context 一起粘 —— 临时凭据约一小时到期,缺这半块就续不回来,只能重新登录。'),fields:[{key:"credentialJson",label:a("凭据 JSON"),rows:8,jsonExpand:!0,placeholder:'{"codearts_provider_credential":{"access_key_id":"HSTA…","secret_access_key":"…","security_token":"…","expires_at":"2026-09-27T16:17:00.327Z","domain_id":"…","user_id":"…","user_name":"…","refresh_token":"eyJ…","oauth_context":{…}}}'},{key:"name",label:a("备注名"),optional:!0,placeholder:a("可选,留空使用凭据里的 user_name")}]},K1e={provider:"trae",label:"Trae",desktop:!1,webLogin:{noteHtml:a("打开 Trae 的官方授权页(trae.cn)并用你的 Trae 账号登录:授权完成后官方页面会跳回本机的一个临时端口;同机部署自动接收,Docker / 远程面板请按提示复制地址栏回调地址。"),button:a("打开 Trae 授权页"),busyText:a("等待 Trae 授权完成…"),modes:[{value:"embedded",label:a("内嵌窗口(推荐)"),hint:a("将打开内嵌窗口;授权完成后自动加入账号列表。远程面板可粘贴回调地址。关掉窗口即取消等待。链接 5 分钟内有效,超时或未点就会作废(可重新发起)")},{value:"external",label:a("系统浏览器"),hint:a("将用系统默认浏览器打开授权页(会复用浏览器里已登录的 Trae 账号);同机完成后自动加入,Docker / 远程面板按提示粘贴地址栏回调地址。")}],webHint:gM},manualTitle:a("填写凭证"),manualNoteHtml:a("accessToken 是 Trae 的 Cloud-IDE-JWT(三段点分),refreshToken 用于到期自动续期(本家 refreshToken 一次一换:换发一次旧的即作废,所以两份程序别同时刷同一个账号)。
    手工粘贴时请连 machineId / deviceId 一起填:上游把它们与登录时上传的设备公钥绑在一起判设备,凭空换一对会撞 2xxxx 那族设备绑定拒绝。
    没有这三样时的正路是用上方的「网页登录」;容器 / 远程部署形态按提示粘贴地址栏回调地址即可。"),fields:[{key:"accessToken",label:"accessToken",rows:3,placeholder:a("Cloud-IDE-JWT(三段点分)")},{key:"refreshToken",label:"refreshToken",rows:2,optional:!0,placeholder:a("可选;填了才能到期自动续期")},{key:"uid",label:a("用户 ID"),optional:!0,placeholder:a("可选;用于去重与展示名(留空时网关会问一次上游)")},{key:"machineId",label:"machineId",optional:!0,placeholder:a("可选;UUID 形态,与凭据同生共死")},{key:"deviceId",label:"deviceId",optional:!0,placeholder:a("可选;纯数字串(上游只收 8–24 位数字)")},{key:"name",label:a("备注名"),optional:!0,placeholder:a("可选,留空自动用昵称")}]},q1e={provider:"loomy",label:"Loomy",fileImport:Nc,smsLogin:{noteHtml:a("用 Loomy 账号绑定的手机号登录:点「获取验证码」后填入即可。这是本家最省事的入口。")},manualNote:a("粘贴的是登录 session(同时是模型网关的 token)。Loomy 没有续期接口,session 有效期约 14 天,过期后重新登录即可。"),fields:[{key:"session",label:"session",rows:3,placeholder:a("登录 session(一长串)")},{key:"userId",label:"userId",optional:!0,placeholder:a("可选,讯飞侧 userid")},{key:"phone",label:a("手机号"),optional:!0,placeholder:a("可选,展示用")},{key:"name",label:a("备注名"),optional:!0,placeholder:a("可选,留空则用脱敏手机号或 userId")}],desktop:!1},G1e={provider:"kuku",label:"KukuAI",webLogin:{noteHtml:a("在打开的登录页里用百度账号登录 KukuAI 主站(手机验证码 / 扫码均可),登录成功后自动加入账号列表。网关会向百度换发 KukuAI 业务会话令牌(依赖本机已安装库库AI 客户端)。"),button:a("打开网页登录"),busyText:a("等待 KukuAI 登录完成…"),webHint:Fl},manualTitle:a("粘贴 Cookie"),manualNote:a("BDUSS 必填;请粘贴**完整 Cookie**(Cookie 编辑器一键导出即可)—— 其中 **PTOKEN 必须保留**,网关要用它向百度换发 KukuAI 业务会话令牌,缺了它模型刷新会报「未登录」。支持整段 Cookie 头、Cookie 编辑器导出的 JSON 数组,或 {BDUSS, STOKEN} 对象。KukuAI 没有刷新机制,登录态过期后重新粘贴即可。"),fields:[{key:"cookie",label:"Cookie",rows:3,placeholder:a("BDUSS=…; STOKEN=…(或 Cookie 编辑器导出的 JSON)")},{key:"name",label:a("备注名"),optional:!0,placeholder:a("可选,留空则用账号 uk")}],desktop:!0,desktopHint:a("读取本机 KukuAI 客户端登录态(%APPDATA%\\baidugenflowpro\\Network\\Cookies),需已在 KukuAI 客户端登录"),desktopNote:a("读本机客户端当前登录态(明文 Cookie,无需解密)。客户端运行时 Cookies 文件被独占占用,导入前请先关闭 KukuAI 客户端。"),fileImport:{binary:!0,accept:"",note:a("选择 KukuAI 客户端的 Cookies 文件(%APPDATA%\\baidugenflowpro\\Network\\Cookies):它是**二进制** SQLite 数据库(无扩展名,不是 JSON)。导入时读的是你选中文件的副本、不和运行中的客户端抢占用,因此**无需先关闭客户端**。导入后凭证直接落在网关、可独立转发。")}},W1e={provider:"commandcode",label:a("Command Code"),fileImport:Nc,desktop:!1,manualTitle:a("粘贴 API Key"),manualNote:a("粘贴 Command Code 的 API Key(user_ 开头;从官方 CLI 的 ~/.commandcode/auth.json 或网页 studio 获取)。整行 / 带引号 / 带 Bearer 前缀地粘都行,网关会自己剥成裸 key。key 不过期、也没有续期接口,失效后重新获取即可;添加时网关会做一次轻量探活,失败不影响添加。"),fields:[{key:"apiKey",label:"apiKey",rows:3,placeholder:a("user_ 开头的 API Key(也可直接粘贴 Authorization: Bearer … 整行)")},{key:"name",label:a("备注名"),optional:!0,placeholder:a("可选,留空则用 key 尾号")}]},Y1e={provider:"antigravity",label:a("Antigravity"),desktop:!1,webLogin:{noteHtml:a("在打开的登录页里登录 Google 账号(Antigravity 的授权页),授权完成后自动加入账号列表。"),button:a("打开 Antigravity 网页登录"),busyText:a("等待 Google 授权完成…"),modes:[{value:"embedded",label:a("内嵌窗口(推荐)"),hint:a("内嵌窗口打开;完成后自动加入列表,关窗即取消等待")},{value:"external",label:a("系统浏览器"),hint:a("系统浏览器打开(复用已登录的 Google 账号);完成后自动加入列表")}]},manualTitle:a("粘贴 Google refresh token"),manualNoteHtml:a("粘贴 Antigravity 的 Google refresh token(以 1// 开头;直接粘贴含 refresh_token= 的整行也行)。
    这是网页登录之外的手工入口(例如从已登录的官方 IDE 里导出)。refresh token 不会过期,access token 到期由网关自动续期;令牌丢了只能重新走 Google 授权,请妥善保存。"),fields:[{key:"refreshToken",label:"refreshToken",rows:2,placeholder:a("1// 开头的 Google refresh token(也可直接粘贴 refresh_token=… 整行)")},{key:"projectId",label:"projectId",optional:!0,placeholder:a("可选(cloudaicompanionProject):留空由网关自动发现")},{key:"email",label:"email",optional:!0,placeholder:a("可选:账号邮箱,用于展示与身份识别(换新令牌也能认回同一账号)")},{key:"name",label:a("备注名"),optional:!0,placeholder:a("可选,留空则用邮箱或令牌尾号")}]},X1e={provider:"officeace",label:a("OfficeAce 果办"),fileImport:Nc,desktop:!1,webLogin:{noteHtml:a("打开华为云授权页登录:登录完成后网关会自动轮询云端取回授权码并加入账号列表(不需要装 OfficeAce 桌面端,也无需手工回填回调地址)。"),button:a("打开授权页"),busyText:a("等待 OfficeAce 登录完成…"),modes:[{value:"embedded",label:a("内嵌窗口(推荐)"),hint:a("将打开内嵌窗口;登录完成后自动加入账号列表。关掉窗口即取消等待")},{value:"external",label:a("系统浏览器"),hint:a("将用系统默认浏览器打开授权页(会复用浏览器里已登录的华为云账号);授权码由网关轮询云端取回,与浏览器跑在哪台机器无关,完成后自动加入账号列表")}],webHint:Fl},manualTitle:a("粘贴网关凭据"),manualNoteHtml:a("从别的机器(或 OfficeAce 桌面端 models.json)取三项贴进来:模型网关基址(baseUrl,形如 https://modelgw-…/v2)与 modelAppKey / modelAppSecret。这三项就能转发(网关凭据不过期);控制面临时凭据(accessKeyId 等)可选,留空则额度/自动续期不可用,但不影响转发。"),fields:[{key:"baseUrl",label:a("模型网关基址"),placeholder:"https://modelgw-…huaweicloud-agentarts.com/v2"},{key:"modelAppKey",label:a("网关 Key"),placeholder:"model_app_key"},{key:"modelAppSecret",label:a("网关 Secret"),placeholder:"model_app_secret"},{key:"name",label:a("备注名"),optional:!0,placeholder:a("可选,留空用「OfficeAce 果办」")}]},Q1e={provider:"orcaterm",label:"OrcaTerm",fileImport:{...Nc,accept:".json,.bin,application/json"},webLogin:{noteHtml:a("在打开的官方授权页里用微信扫码登录(页面会直接显示二维码)。扫码成功后自动加入账号列表。"),button:a("打开网页登录"),hint:a("内嵌窗口打开;扫码完成后自动加入列表,关窗即取消等待"),busyText:a("等待 OrcaTerm 登录完成…"),webHint:Fl},desktop:!0,desktopHint:a("读取本机 OrcaTerm 客户端登录态(%APPDATA%\\com.orcaterm-desktop.app\\data.bin),需已在 OrcaTerm 客户端登录"),desktopNote:a("读本机客户端当前登录的 OAuth 令牌(明文 JSON,无需解密)。导入后由网关自动续期,无需跟随客户端的 2 小时时效手动换令牌。"),manualTitle:a("粘贴 accessToken"),manualNoteHtml:a("粘贴 OrcaTerm 的 OAuth accessToken(JWT,三段点分;从桌面客户端 data.bin 或 Web 版 Cookie ot_session 获取)。直接粘贴含 Bearer / ot_session= 的整行也行,网关会自己剥成裸 token。添加后由网关自动续期(上游有续期接口),无需跟随 2 小时时效手动更换。"),fields:[{key:"accessToken",label:"accessToken",rows:3,placeholder:a("JWT(三段点分;也可直接粘贴 Bearer 整行或 data.bin 内容)")},{key:"name",label:a("备注名"),optional:!0,placeholder:a("可选,留空则用账号昵称或 userId")}]},Z1e={provider:"chatglm",label:"智谱清言",fileImport:Nc,guestLogin:{noteHtml:a("不需要登录:点下面的按钮,网关会直接在智谱清言换发一份访客凭证并加入账号列表(也可以先填个备注名)。访客凭证可以直接用来对话,免费额度由上游按设备发放。

    注意:访客账号没有积分体系 —— 它与「会员积分」「每日登录积分」「活动领取」相关的接口一律需要登录,因此那些能力对访客会如实跳过(账号页的积分、签到中心都不显示读数)。想要积分就用「填写凭证」粘一个已登录账号的令牌,或「导入桌面端登录态」。"),button:a("添加访客账号"),busyText:a("正在换发访客凭证…"),namePlaceholder:a("可选,给这个访客账号起个备注名")},desktop:!0,desktopWindowsOnly:!0,desktopHint:a("读取本机智谱清言客户端登录态(%APPDATA%\\chatglm\\Network\\Cookies),需已在客户端登录"),desktopNote:a("读本机客户端当前的登录态。客户端的 Cookies 是 DPAPI 加密的(Chromium os_crypt),因此仅 Windows 可用;客户端正在运行时可能读不到该文件,先退出客户端再试即可(也可改用「填写凭证」粘贴令牌)。"),manualTitle:a("粘贴访问令牌"),manualNoteHtml:a("粘贴智谱清言的访问令牌(JWT,三段点分)。获取方式:浏览器打开 chatglm.cn 并登录后,在开发者工具的 Application → Cookies 里复制 chatglm_token 的值(也可以直接粘 chatglm_token=…; 整行)。粘贴后会先向上游校验一次,校验通过才落账号;登录账号的积分、签到能力都能用,之后由网关自动续期(上游有续期接口)。"),fields:[{key:"accessToken",label:"accessToken",rows:3,placeholder:a("JWT(三段点分;也可直接粘贴 chatglm_token=… 整行)")},{key:"name",label:a("备注名"),optional:!0,placeholder:a("可选,留空则用账号昵称")}]};function t7(e){const{provider:t,label:n,site:s,siteNote:i}=e;return{provider:t,label:n,fileImport:Nc,desktop:!1,manualTitle:a("粘贴 API 令牌"),manualNoteHtml:a("粘贴 ModelScope 的 API 令牌(ms- 开头,在 {site} 的「访问令牌」页获取)。
    {siteNote}
    这枚令牌两用:网关既用它调推理,也用它读账号身份、魔粒余额与每日签到。令牌长期有效、没有续期接口,失效后重新获取再粘一次即可。",{site:s,siteNote:i}),fields:[{key:"accessToken",label:"accessToken",rows:3,placeholder:a("ms- 开头的 API 令牌")},{key:"name",label:a("备注名"),optional:!0,placeholder:a("可选,留空则用上游账号昵称")}]}}const J1e=t7({provider:"modelscope",label:a("ModelScope 国内版"),site:"modelscope.cn",siteNote:a("这里填国内站(modelscope.cn)的账号:请粘贴国内站的令牌。国际站(modelscope.ai)是另一家 provider、另一套账号,两边的令牌不通用。")}),eAe=t7({provider:"modelscope-intl",label:a("ModelScope 国际版"),site:"modelscope.ai",siteNote:a("这里填国际站(modelscope.ai)的账号:请粘贴国际站的令牌。国内站(modelscope.cn)是另一家 provider、另一套账号,两边的令牌不通用。")}),tAe={provider:"atomcode",label:a("AtomCode"),fileImport:Nc,desktop:!1,webLogin:{noteHtml:a("打开 AtomGit 授权页登录:登录完成后网关会自动轮询代理取回令牌并加入账号列表(授权回调由代理终结,不回到本机,因此无需手工回填回调地址)。"),button:a("打开授权页"),busyText:a("等待 AtomCode 登录完成…")},manualTitle:a("粘贴令牌对"),manualNoteHtml:a("在 AtomGit 的 AtomCode 页面登出后取得两项贴进来:accessToken 与 refreshToken。续期令牌建议填写——本家令牌不是 JWT(约 7 天到期,读不到过期时间),没有它账号无法自动续期,到期只能重新登录。"),fields:[{key:"accessToken",label:a("访问令牌"),placeholder:"access_token"},{key:"refreshToken",label:a("续期令牌"),optional:!0,placeholder:"refresh_token"},{key:"userId",label:a("用户 ID"),optional:!0,placeholder:a("可选,用于生成账号标识")},{key:"name",label:a("备注名"),optional:!0,placeholder:a("可选,留空用「AtomCode」")}]},nAe={provider:"lobsterai",label:a("LobsterAI"),desktop:!1,webLogin:{noteHtml:a("打开 LobsterAI(有道龙虾)的官方登录页(lobsterai.youdao.com)并用你的 LobsterAI 账号登录:登录成功后官方页面会跳回本机并自动加入账号列表 —— 回调落在网关自己的端口上,所以浏览器要与网关在同一台机器上;授权码只在本机传给网关,界面不显示明文 token。"),button:a("打开 LobsterAI 登录页"),busyText:a("等待 LobsterAI 登录完成…"),modes:[{value:"embedded",label:a("内嵌窗口(推荐)"),hint:a("将打开内嵌窗口;登录完成后自动加入账号列表。关掉窗口即取消等待")},{value:"external",label:a("系统浏览器"),hint:a("将用系统默认浏览器打开登录页(会复用浏览器里已登录的 LobsterAI 账号);完成登录后自动加入账号列表,关掉弹窗即取消等待")}],webHint:Fl},fields:[]},n7=[D1e,L1e,$1e,z1e,B1e,F1e,U1e,H1e,ZG({provider:"cline-free",label:"Cline Free",poolNote:a("(免费额度池,模型名带 cline-free/ 前缀)。")}),ZG({provider:"cline-pass",label:"Cline Pass",poolNote:a("(订阅池,模型名带 cline-pass/ 前缀,需要账号有对应订阅)。")}),JG({provider:"accio",label:a("国际版"),site:"www.accio.com",siteNote:a("国际版与国内版是**两套独立的账号**(同一账号体系的两个站点),凭证不通用。")}),JG({provider:"accio-cn",label:a("国内版"),site:"www.accio-ai.com",siteNote:a("国内版的登录站点是 www.accio-ai.com,与国际版不是同一站。")}),e7({provider:"zcode",label:a("国内版"),site:"open.bigmodel.cn",planNote:a("国内版与**国际版是两套独立的账号与套餐**,凭证与领取的套餐都不通用。")}),e7({provider:"zcode-intl",label:a("国际版"),site:"api.z.ai",planNote:a("国际版的推理站点是 api.z.ai,与国内版不是同一站;套餐也各自独立。")}),V1e,K1e,q1e,G1e,O1e,R1e,W1e,Y1e,X1e,Q1e,Z1e,J1e,eAe,tAe,nAe,E1e,T1e,P1e,I1e],RN="workbuddy",Gg="custom",r7="WorkBuddy";function s7(e){return n7.find(t=>t.provider===e)}const a7=[{id:"guest",label:a("访客模式(免登录)")},{id:"oauth",label:a("网页登录(Zai / Google)")},{id:"sms",label:a("手机验证码登录")},{id:"web",label:a("网页登录")},{id:"manual",label:a("填写凭证")},{id:"file",label:a("导入凭证文件")},{id:"desktop",label:a("导入桌面端登录态")}],Wg=()=>Wt().workbuddyDesktop?.platform||"";function i7(e){if(e.desktop===!1)return!1;const t=Wg();return!(t==="web"||e.desktopWindowsOnly&&t!=="windows")}function o7(e,t){return a7.filter(n=>n.id==="guest"?!!e.guestLogin:n.id==="oauth"?!!e.oauthLogin:n.id==="sms"?!!e.smsLogin:n.id==="web"?!!e.webLogin&&(!e.webLogin?.region||t===e.webLogin.region):n.id==="file"?!!e.fileImport:n.id==="desktop"?i7(e):!0).map(n=>n.id)}const rAe=e=>e.manualTitle||a("填写凭证添加"),sAe=e=>e.manualNoteHtml?{html:e.manualNoteHtml}:{text:e.manualNote||""},aAe=e=>e.addButton||a("添加 {name} 账号",{name:e.label}),PN=(e,t)=>`${e.provider}-${t.inputKey||t.key}-input`;function iAe({providers:e,onCreate:t,onExisting:n,onClose:s}){return r.jsx(at,{open:!0,onOpenChange:i=>{i||s()},children:r.jsxs(it,{overlayForceRender:!0,className:"w-[min(560px,calc(100vw-48px))]",children:[r.jsx(ot,{children:r.jsx(st,{children:a("该地址已有提供商")})}),r.jsxs(lt,{children:[r.jsx("p",{className:"mb-3 text-sm text-subtle",children:a("相同协议和地址的提供商已经存在。可以继续新建独立提供商,或明确选择已有提供商添加账号。")}),r.jsx("div",{className:"space-y-2",children:e.map(i=>r.jsxs(Dh,{variant:"outline",children:[r.jsxs(kK,{children:[r.jsx(SK,{children:i.name||i.id}),r.jsx(NK,{children:i.baseUrl})]}),r.jsx(B,{variant:"outline",onClick:()=>n(i),children:a("添加到此提供商")})]},i.id))})]}),r.jsxs(xt,{children:[r.jsx(B,{variant:"outline",onClick:s,children:a("取消")}),r.jsx(B,{onClick:t,children:a("继续新建独立提供商")})]})]})})}function l7(e){const t=e?.presetKey||"";return t&&Wt().wbPresetProviders?.presetOf?.(t)||null}function c7(e){const t=e?.presetKey||"";return t&&Wt().wbPresetProviders?.iconOf?.(t)||""}function oAe(e){const t=(Wt().wbProviders?.customList?.()||[]).find(n=>n.id===e);return c7(t)}function lAe(e){if(!e)return"";try{const t=new URL(e);return t.host+t.pathname.replace(/\/+$/,"")}catch{return e}}function u7(e,t,n){if(e.protocol!==t)return!1;const s=i=>new URL(i.trim()).href.replace(/\/+$/,"");try{return s(e.baseUrl||"")===s(n)}catch{return!1}}const d7=p.createContext(null);function cAe({children:e}){const[t,n]=p.useState(()=>Lg(void 0)),[s,i]=p.useState(!1),o=p.useRef(t),l=p.useRef(!1),u=p.useCallback(m=>{o.current=m,l.current=!0,n(m)},[]),d=p.useCallback(()=>yc(o.current),[]),f=p.useCallback(()=>l.current?{proxy:d()}:{},[d]);return r.jsx(d7.Provider,{value:{draft:t,change:u,read:d,importFields:f,busy:s,setBusy:i},children:e})}function vo(){const e=p.useContext(d7);if(!e)throw new Error("Account proxy context is unavailable");return e}function sm(){const{busy:e,setBusy:t}=vo();return[e,t]}function f7({draft:e,onChange:t,idPrefix:n,disabled:s=!1,onSystemImportBusy:i}){return r.jsxs(ma,{label:a("账号 / 登录出网代理"),children:[r.jsx("div",{inert:s,children:r.jsx(pN,{draft:e,onChange:t,idPrefix:n,allowSystemImport:!0,onSystemImportBusy:i})}),r.jsx("p",{className:"detail",children:a("所选代理会保存到账号设置,后续请求继续使用。")})]})}function h7({idPrefix:e}){const t=vo();return r.jsx(f7,{draft:t.draft,onChange:t.change,idPrefix:e,disabled:t.busy,onSystemImportBusy:t.setBusy})}const uAe=64,dAe=100,fAe=a("OpenAI 兼容填到 /v1;Anthropic 填根地址"),hAe=a("Anthropic 协议填根地址,不要带 /v1"),mAe="https://open.bigmodel.cn/api/paas/v4",pAe="https://api.anthropic.com",gAe=[{value:"chat_completions",label:"OpenAI - Chat Completions"},{value:"responses",label:"OpenAI - Responses"},{value:"anthropic",label:"Anthropic - Messages"}],Yg="custom-protocol-select",Xg="custom-name-input",Qg="custom-baseurl-input",Iy="custom-apikey-input",My="custom-noauth-check",_y="custom-existing-apikey-input",Dy="custom-existing-noauth-check",Ly="custom-existing-name-input",am="custom-user-agent-input",im="custom-existing-user-agent-input",IN={[am]:"",[im]:""};function MN(e,t){IN[e]=t,ef(e,t)}function m7(e){return(IN[e]||"").trim()}const xAe="custom-create-button",vAe="custom-existing-button",bAe="custom-existing-remove";let xM=!1;const p7=()=>Wt().wbProviders?.PROTOCOL_OPTIONS||gAe,Zg=()=>Wt().wbProviders?.customList?.()||[],vM="custom-balance",bM="custom-existing-balance",$y=(e,t)=>`${e}-${t}-input`;function g7(e){if(!e)return"";const t=Wt().wbPresetProviders?.presetOf?.(e);return String(t?.balance?.scheme||"")}function x7(e,t){const n=by(e);if(!n||!n.fields.length)return null;const s={};for(const i of n.fields){const o=Zo($y(t,i.key));o&&(s[i.key]=o)}return Object.keys(s).length?s:null}function v7(e,t){const n=by(e);if(n)for(const s of n.fields)ef($y(t,s.key),"")}function b7({scheme:e,prefix:t}){const n=by(e);return n?r.jsxs(r.Fragment,{children:[r.jsxs("div",{className:"add-field",children:[r.jsx(Ae,{children:a("余额查询")}),r.jsxs("div",{className:"col-start-2 row-start-1 flex h-[30px] items-center",children:[r.jsx("span",{className:"text-xs text-subtle",children:a("方案:{label}",{label:n.label})}),r.jsx("span",{className:"ml-1.5 text-xs text-subtle",children:n.endpoint})]}),r.jsx("span",{className:"hint",children:n.note})]}),n.fields.map(s=>r.jsxs("div",{className:"add-field",children:[r.jsx(Ae,{htmlFor:$y(t,s.key),children:s.label}),r.jsx(ze,{id:$y(t,s.key),type:s.secret?"password":"text",autoComplete:s.secret?"new-password":"off",placeholder:s.placeholder,...xo($y(t,s.key))}),r.jsx("span",{className:"hint",children:s.hint})]},s.key))]}):null}async function yM(e,t){if(!xM){xM=!0,e(!0);try{await t()}finally{xM=!1,e(!1)}}}async function y7(e){Wt().wbAddAccountModal?.close?.(),await Wt().wbProviders?.refreshCustom?.(),await Wt().wbApp?.refresh?.(),cr(e)}function zy(e,t){ef(e,t?"1":"")}function _N(e){return Zo(e)==="1"}function j7({checked:e,note:t,onChange:n}){return r.jsxs("div",{className:"add-field",children:[r.jsx(Ae,{children:a("鉴权")}),r.jsx("div",{className:"col-start-2 row-start-1 flex h-[30px] items-center",children:r.jsxs(Ae,{className:"inline-flex cursor-pointer items-center gap-2.5",children:[r.jsx(jr,{checked:e,"aria-label":a("该上游无需鉴权"),onCheckedChange:s=>n(s===!0)}),r.jsx("span",{className:"text-xs text-subtle",children:a("该上游无需鉴权(不发送鉴权头)")})]})}),r.jsx("span",{className:"hint",children:t})]})}function yAe({mode:e,providerHint:t,presetKey:n,showToken:s,version:i}){const o=p7(),[l,u]=p.useState(()=>Zo(Yg)||o[0].value),[d,f]=p.useState(""),[m,g]=p.useState(""),[v,b]=p.useState(()=>_N(My)),[y,k]=p.useState(()=>_N(Dy)),[w,S]=p.useState(()=>IN[am]||""),[N,C]=p.useState(()=>IN[im]||""),T=jy(),P=p.useMemo(()=>Zg(),[i]),O=P.find(Q=>Q.id===t),A=O?.id||"",R=O?.name||a("该提供商"),M=e==="create"&&!!n&&!Wt().wbPresetProviders?.presetOf?.(n)?.baseUrl;p.useEffect(()=>{if(e!=="create"||!n)return;const Q=Wt().wbPresetProviders?.presetOf?.(n);if(!Q)return;const X=Q.account?.noAuth===!0;ef(Xg,Q.baseUrl?Q.name:""),ef(Qg,Q.baseUrl||""),Q.protocol&&(u(Q.protocol),ef(Yg,Q.protocol)),b(X),zy(My,X),f(Q.hint||""),g(Q.placeholder||"")},[e,n,t,s]);const _=O?.presetKey||"";p.useEffect(()=>{if(e!=="existing")return;const Q=l7(O)?.account?.noAuth===!0;k(Q),zy(Dy,Q)},[e,t,_,s]);const L=l==="anthropic",$=d||(L?hAe:fAe),D=m||(L?pAe:mAe),F=e==="create"?g7(n):"",V=e==="existing"?String(P.find(Q=>Q.id===A)?.balanceScheme||""):"",q=(Q,X)=>U=>{X(U),zy(Q,U)};return r.jsxs(r.Fragment,{children:[r.jsxs(as,{hidden:e!=="create",children:[r.jsxs("div",{className:"add-panel-head",children:[r.jsx("h3",{children:a("上游信息")}),r.jsx("span",{children:a("创建这个提供商,并同时建立它的第一个账号。")})]}),r.jsxs("div",{className:"add-form",children:[r.jsxs("div",{className:"add-field",children:[r.jsxs(Ae,{htmlFor:Xg,children:[a(M?"站点名称":"名称"),r.jsx("i",{className:"req","aria-hidden":"true",children:"*"})]}),r.jsx(ze,{id:Xg,type:"text",maxLength:uAe,"aria-required":"true",placeholder:a(M?"如:公司中转站、个人备用站":"如:智谱 GLM"),...xo(Xg)}),r.jsx("span",{className:"hint",children:a(M?"填写具体站点名称;模板类型不会作为站点身份":"1~64 个字符,账号列表里按它分组显示")})]}),r.jsxs("div",{className:"add-field",children:[r.jsx(Ae,{htmlFor:Yg,children:a("协议")}),r.jsxs(Pt,{value:l,onValueChange:Q=>{const X=String(Q);u(X),ef(Yg,X),f("")},children:[r.jsx(Mt,{id:Yg,className:"col-start-2 row-start-1 w-full",children:r.jsx(It,{children:o.find(Q=>Q.value===l)?.label||l})}),r.jsx(_t,{children:o.map(Q=>r.jsx(Ze,{value:Q.value,children:Q.label},Q.value))})]})]}),r.jsxs("div",{className:"add-field",children:[r.jsxs(Ae,{htmlFor:Qg,children:["Base URL",r.jsx("i",{className:"req","aria-hidden":"true",children:"*"})]}),r.jsx(ze,{id:Qg,type:"text","aria-required":"true",placeholder:D,...xo(Qg)}),r.jsx("span",{className:"hint",id:"custom-baseurl-hint",children:$})]}),r.jsxs("div",{className:"add-field",children:[r.jsx(Ae,{htmlFor:Iy,children:"API Key"}),r.jsx(ze,{id:Iy,type:"password",autoComplete:"new-password",placeholder:"sk-…",disabled:v,...xo(Iy)}),r.jsx("span",{className:"hint",children:a(v?"不需要 Key:转发与拉取模型都不发送鉴权头":"上游不要鉴权时留空,并勾选下面一项(留空又不勾会被当成未配置凭证)")})]}),r.jsx(j7,{checked:v,note:a(v?"已声明无需鉴权:账号会被正常选路,出网时不带任何鉴权头":"本地 Ollama、OpenCode Zen 免费档这类上游要勾上,否则账号不可用"),onChange:q(My,b)}),r.jsx(b7,{scheme:F,prefix:vM}),r.jsxs("div",{className:"add-field",children:[r.jsx(Ae,{htmlFor:am,children:a("User-Agent(可选)")}),r.jsx(Ug,{id:am,value:w,onChange:Q=>{S(Q),MN(am,Q)},presets:T,className:"col-start-2 row-start-1"}),r.jsx("span",{className:"hint",children:a("留空使用默认的 User-Agent;可从预置里选一个内置客户端,也可以直接填写。")})]})]})]}),r.jsxs(as,{hidden:e!=="existing",children:[r.jsxs("div",{className:"add-panel-head",children:[r.jsx("h3",{children:a("账号信息")}),r.jsxs("span",{children:[a("添加到 "),r.jsx("b",{children:R}),a(" 同一家可以放多把 key,按优先级轮换。")]})]}),r.jsxs("div",{className:"add-form",children:[r.jsxs("div",{className:"add-field",children:[r.jsx(Ae,{children:a("提供商")}),r.jsx(ze,{readOnly:!0,value:O?R:a("该提供商已不存在(可能已被删除),请刷新后重试")}),r.jsx("span",{className:"hint",children:a("要添加到其他站点,请返回「已建 API」重新选择")})]}),r.jsxs("div",{className:"add-field",children:[r.jsx(Ae,{children:"Base URL"}),r.jsx(ze,{readOnly:!0,value:O?.baseUrl||""})]}),r.jsxs("div",{className:"add-field",children:[r.jsx(Ae,{htmlFor:_y,children:"API Key"}),r.jsx(ze,{id:_y,type:"password",autoComplete:"new-password",placeholder:"sk-…",disabled:y,...xo(_y)}),r.jsx("span",{className:"hint",children:a(y?"不需要 Key:转发与拉取模型都不发送鉴权头":"上游不要鉴权时留空,并勾选下面一项(留空又不勾会被当成未配置凭证)")})]}),r.jsx(j7,{checked:y,note:a(y?"已声明无需鉴权:账号会被正常选路,出网时不带任何鉴权头":"同一家可以混着放:有 Key 的账号与无鉴权账号各按各的规则走;无需鉴权的账号也能并存多条(各自可配不同的出网代理)"),onChange:q(Dy,k)}),r.jsx(b7,{scheme:V,prefix:bM}),r.jsxs("div",{className:"add-field",children:[r.jsx(Ae,{htmlFor:Ly,children:a("备注名")}),r.jsx(ze,{id:Ly,type:"text",maxLength:dAe,placeholder:a("可选"),...xo(Ly)}),r.jsx("span",{className:"hint",children:a("留空则用提供商名称")})]}),r.jsxs("div",{className:"add-field",children:[r.jsx(Ae,{htmlFor:im,children:a("User-Agent(可选)")}),r.jsx(Ug,{id:im,value:N,onChange:Q=>{C(Q),MN(im,Q)},presets:T,className:"col-start-2 row-start-1"}),r.jsx("span",{className:"hint",children:a("留空使用默认的 User-Agent;可从预置里选一个内置客户端,也可以直接填写。")})]})]})]})]})}function w7(e,t){const n=Oa(t);cr(a("添加失败:{reason}",{reason:n}),"err"),e.setHint(n)}async function jM(e,t=!1,n){const s=Zo(Xg),i=Zo(Yg)||p7()[0].value,o=Zo(Qg),l=Zo(Iy),u=_N(My);if(!s){cr(a("请填写名称"),"err");return}if(!o){cr(a("请填写 Base URL"),"err");return}await yM(e.setBusy,async()=>{if(!t){await Wt().wbProviders?.refreshCustom?.();const b=Zg().filter(y=>u7(y,i,o));if(b.length){e.setDuplicates(b);return}}if(e.setDuplicates([]),n&&!Zg().some(b=>b.id===n.id&&u7(b,i,o))){cr(a("该提供商已不存在或地址已变更,请重新选择"),"err");return}const d=n?{provider:n.id}:{name:s,protocol:i,baseUrl:o},f=e.presetKey?Wt().wbPresetProviders?.presetOf?.(e.presetKey):null,m=g7(e.presetKey);if(!n){f&&(d.presetKey=f.key);const b=f?.quirks||{};b.urlSuffix&&(d.urlSuffix=b.urlSuffix),b.headers&&Object.keys(b.headers).length&&(d.headers={...b.headers}),b.anthropicToolType&&(d.anthropicToolType=b.anthropicToolType),f?.clientEmulation&&(d.clientEmulation=f.clientEmulation),m&&(d.balanceScheme=m)}const g=!n||n.balanceScheme===m?x7(m,vM):null;g&&(d.balanceQuery=g),u?d.noAuth=!0:l&&(d.apiKey=l);const v=m7(am);v&&(d.userAgent=v),e.setHint("");try{d.proxy=e.readProxy();const b=await Wt().wbProviders?.customRequest?.("POST",n?"/api/accounts":"/api/custom-providers",d);_I([Xg,Qg,Iy]),v7(m,vM),MN(am,""),zy(My,!1);const y=n?k7(b?.account?.name||n.name||"",b?.created):a("✅ 已创建自定义提供商「{name}」并添加账号",{name:b?.provider?.name||s});await y7(y)}catch(b){w7(e,b)}})}function k7(e,t){const n=e?`:${e}`:"";return t!==!1?a("✅ {label}账号已添加{name}",{label:"",name:n}):a("✅ 已更新已有账号{name}(同一提供商内,同一把 API Key 只保留一条)",{name:n})}async function jAe(e){const t=e.providerId;if(!t||!Zg().some(l=>l.id===t)){cr(a("该提供商已不存在(可能已被删除),请刷新后重试"),"err");return}const n=Zo(_y),s=_N(Dy),i=Zo(Ly),o=String(Zg().find(l=>l.id===t)?.balanceScheme||"");await yM(e.setBusy,async()=>{const l={provider:t};s?l.noAuth=!0:n&&(l.apiKey=n),i&&(l.name=i);const u=m7(im);u&&(l.userAgent=u);const d=x7(o,bM);d&&(l.balanceQuery=d),e.setHint("");try{l.proxy=e.readProxy();const f=await Wt().wbProviders?.customRequest?.("POST","/api/accounts",l);_I([_y,Ly]),v7(o,bM),MN(im,""),zy(Dy,!1);const m=f?.account?.name||Zg().find(g=>g.id===t)?.name||"";await y7(k7(m,f?.created))}catch(f){w7(e,f)}})}async function wAe(e){if(!e){cr(a("请先选择一个自定义提供商"),"err");return}const t=Wt().wbCustomProvidersUi?.remove;if(typeof t!="function"){cr(a("删除功能不可用(脚本未就绪)"),"err");return}await yM(()=>{},async()=>{await t(e)&&Wt().wbAddAccountModal?.close?.()})}function kAe({mode:e,presetKey:t,providerId:n}){const[s,i]=sm(),o=vo(),[l,u]=p.useState(""),[d,f]=p.useState([]),m={presetKey:t,providerId:n,setBusy:i,setHint:u,setDuplicates:f,readProxy:o.read};return r.jsxs(r.Fragment,{children:[d.length?r.jsx(iAe,{providers:d,onClose:()=>f([]),onCreate:()=>{jM(m,!0)},onExisting:g=>{jM(m,!0,g)}}):null,r.jsx("span",{className:`add-foot-hint${l?" err":""}`,id:"add-form-foot-hint",children:l}),r.jsxs("span",{className:"add-foot-actions",id:"add-form-foot-actions",children:[e==="existing"?r.jsx(B,{id:bAe,variant:"destructive",title:a("级联删除名下全部账号,不可恢复"),onClick:()=>{wAe(n)},children:a("删除此提供商")}):null,r.jsx(B,{id:xAe,hidden:e!=="create",disabled:s,onClick:()=>{jM(m)},children:a(s&&e==="create"?"提交中…":"创建并添加账号")}),r.jsx(B,{id:vAe,hidden:e!=="existing",disabled:s,onClick:()=>{jAe(m)},children:a(s&&e==="existing"?"提交中…":"添加账号")})]})]})}const By="antigravity",sf="agy-cli";function S7(e){return e===By||e===sf}function SAe(e){return[By,sf].flatMap(t=>e.find(n=>n.id===t&&n.loginAvailable!==!1)||[])}function NAe(e){const t=SAe(e),n=t[0];return e.flatMap(s=>S7(s.id||"")?s.id!==n?.id?[]:[{...s,label:"Antigravity",count:t.reduce((i,o)=>i+(Number(o.count)||0),0)}]:[s])}const Cc="all",af="proxy",Ul="web",of="preset",Ac="custom",N7="import",C7=[af,Ul,of,Ac],Fy="preset:",wM="__new__";function CAe(e){return e===Cc?Cc:e===of||e===Ac||e===Ul?e:af}function Jg(e){return e===Cc?a("全部"):e===Ul?"Web":e===of?a("API 模板"):e===Ac?a("已建 API"):e===N7?a("导入"):"Agent"}const AAe=new Set(["cline-pass"]);function DN(e){const t=Wt().wbProviders;if(e===of)return(Wt().wbPresetProviders?.list||[]).map(d=>({id:Fy+d.key,label:d.name,count:0,preset:!0}));if(e===Ac)return(t?.customList?.()||[]).map(d=>({id:d.id,label:d.name||d.id,count:ANe(d.id),custom:!0,icon:c7(d),site:lAe(d.baseUrl),template:l7(d)?.name}));const n=(t?.all?.()||[]).filter(d=>!CNe(String(d?.id||""))&&d.loginAvailable!==!1).filter(d=>d.category==="web"==(e===Ul)).filter(d=>e===Ul||!AAe.has(String(d?.id||""))),s=(d,f)=>d==="minimax-code"?a("MiniMax Code 国内版"):d==="minimax-code-global"?a("MiniMax Code 国际版"):d==="qwenwork"?a("千问办公 国内版"):d==="qwenwork-intl"?a("千问办公 国际版"):d==="qwenwork-enterprise"?a("QwenWork 千问办公企业版"):d===RN?r7:a(Wt().wbProviders?.labelOf?.(d)||f),i=n.map(d=>{const f=String(d.id||"");return{id:f,label:s(f,String(d.label||d.id||"")),count:Number(d.count)||0}}),o=NAe(i.filter(d=>d.id!=="workbuddy-intl")),l=o.findIndex(d=>d.id==="autoclaw-intl"),u=o.findIndex(d=>d.id==="autoclaw");return u>=0&&l>u&&o.splice(u+1,0,o.splice(l,1)[0]),o}function EAe({item:e}){const t=e.id.startsWith(Fy)?Wt().wbPresetProviders?.iconOf?.(e.id.slice(Fy.length))||"":e.icon,{src:n,onError:s}=Qh(e.id,t);if(n)return r.jsx("span",{className:"add-provider-logo has-icon",children:r.jsx("img",{src:n,alt:"",loading:"lazy",onError:s})});const i=String(e.label||"?").trim().slice(0,1).toUpperCase()||"?";return r.jsx("span",{className:"add-provider-logo",children:i})}function TAe(e){return e.preset?a("使用模板新建提供商"):e.custom?e.count?a("{n} 个账号,点击添加",{n:e.count}):a("点击添加账号"):e.count?a("{n} 个账号",{n:e.count}):a("还没有账号")}function OAe({item:e,onPick:t}){return r.jsxs(Dh,{render:r.jsx(B,{variant:"outline"}),variant:"outline",className:"add-provider-card h-auto whitespace-normal text-left","data-provider":e.id,title:[e.label,e.site,e.template].filter(Boolean).join(" · "),role:"option",onClick:()=>t(e.id),children:[r.jsx(EAe,{item:e}),r.jsxs("span",{className:"add-provider-info",children:[r.jsx("span",{className:"add-provider-name",children:e.label}),e.site?r.jsx("span",{className:"add-provider-meta",children:[e.site,e.template].filter(Boolean).join(" · ")}):null,r.jsx("span",{className:"add-provider-meta",children:TAe(e)})]}),r.jsx("span",{className:"add-provider-go",children:"›"})]})}function RAe({onPick:e}){return r.jsxs(Dh,{render:r.jsx(B,{variant:"dashed"}),variant:"outline",className:"add-provider-card is-new h-auto whitespace-normal text-left","data-provider":wM,role:"option",onClick:()=>e(wM),children:[r.jsx("span",{className:"add-provider-logo is-new",children:"+"}),r.jsxs("span",{className:"add-provider-info",children:[r.jsx("span",{className:"add-provider-name",children:a("新建自定义提供商")}),r.jsx("span",{className:"add-provider-meta",children:a("接入一个兼容上游")})]}),r.jsx("span",{className:"add-provider-go",children:"›"})]})}function PAe({accountType:e,onAccountTypeChange:t,search:n,onSearchChange:s,onPick:i,version:o,importing:l,importPanel:u}){const d=p.useMemo(()=>DN(af).length>0,[o]),f=p.useMemo(()=>DN(Ul).length>0,[o]),g=e===af&&!d||e===Ul&&!f?f?Ul:of:e,v=n.trim().toLowerCase(),b=O=>!v||[O.label,O.site,O.template].filter(Boolean).join(" ").toLowerCase().includes(v),y=!v&&(g===Ac||g===Cc),k=g===Cc,S=(k?C7:[g]).map(O=>({type:O,label:Jg(O),items:DN(O).filter(b)})).filter(O=>O.items.length>0||O.type===Ac&&y),N=S.flatMap(O=>O.items),C=new Map(C7.map(O=>[O,DN(O).filter(b).length])),T=[...C.values()].reduce((O,A)=>O+A,0),P=v&&!k&&!N.length?T:0;return r.jsxs(ma,{label:a("选择提供商"),children:[r.jsxs("div",{className:"add-pick-row",style:l?{display:"none"}:void 0,children:[r.jsx(en,{"aria-label":a("账号类型"),className:Xd,options:[{value:Cc,label:Jg(Cc),count:T},...d?[{value:af,label:Jg(af),count:C.get(af)}]:[],...f?[{value:Ul,label:Jg(Ul),count:C.get(Ul)}]:[],{value:of,label:Jg(of),count:C.get(of)},{value:Ac,label:Jg(Ac),count:C.get(Ac)}],value:g,onValueChange:O=>t(CAe(O))}),r.jsx("span",{id:"add-search-wrap",className:"add-provider-search ml-auto max-w-[340px] min-w-0 flex-[1_1_200px]",children:r.jsxs(zs,{children:[r.jsx(As,{children:"⌕"}),r.jsx(Bs,{id:"add-provider-search",type:"search",placeholder:a("搜索提供商…"),autoComplete:"off","aria-label":a("搜索提供商"),value:n,onChange:O=>s(O.currentTarget.value)})]})})]}),P>0?r.jsxs(Fe,{className:"flex items-center gap-3",children:[r.jsx("span",{children:a("当前分类里没有「{keyword}」,其它分类有 {n} 个匹配",{keyword:n.trim(),n:P})}),r.jsx(B,{size:"sm",variant:"outline",type:"button",className:"add-provider-hint-go",onClick:()=>t(Cc),children:a("看全部匹配")})]}):null,u,r.jsxs("div",{className:"add-provider-grid",id:"add-provider-grid",role:"listbox","aria-label":a("选择要添加账号的提供商"),style:l?{display:"none"}:void 0,children:[S.map(O=>r.jsxs(p.Fragment,{children:[k?r.jsxs("div",{className:"add-provider-band",role:"group","aria-label":O.label,children:[r.jsx("span",{className:"add-provider-band-name",children:O.label}),O.items.length?r.jsx("span",{className:"add-provider-band-stat",children:a("{count} 家",{count:O.items.length})}):null,r.jsx("span",{className:"add-provider-band-fill"}),r.jsx(B,{size:"xs",variant:"ghost",type:"button",className:"add-provider-band-only",onClick:()=>t(O.type),children:a("只看这一类")})]}):null,y&&O.type===Ac?r.jsx(RAe,{onPick:i}):null,O.items.map(A=>r.jsx(OAe,{item:A,onPick:i},A.id))]},O.type)),!N.length&&v?r.jsx(pt,{className:"add-provider-empty",children:a("没有匹配「{keyword}」的提供商",{keyword:n.trim()})}):null,!N.length&&!y&&!v&&(g===af||g===Cc)?r.jsxs(pt,{className:"add-provider-empty",children:[r.jsx("p",{className:"mb-2",children:a("请安装并启用对应的提供商插件;列表为空时请刷新后重试。")}),r.jsx(B,{size:"default",variant:"ghost",type:"button",className:"text-primary underline underline-offset-2",onClick:()=>Wt().wbApp?.showPage?.("plugins"),children:a("去安装提供商插件包")})]}):null]})]})}let kM=!1;async function ex(e,t){if(!kM){kM=!0,e(!0);try{await t()}finally{kM=!1,e(!1)}}}function lf({html:e,text:t}){return e?r.jsx("p",{dangerouslySetInnerHTML:{__html:e}}):r.jsx("p",{children:t||""})}function IAe(e,t){return new Promise((n,s)=>{const i=new FileReader;i.onload=()=>n(String(i.result||"")),i.onerror=()=>s(new Error(t)),i.onabort=()=>s(new DOMException(t,"AbortError")),i.readAsDataURL(e)})}const MAe="agent2api-account";function tx(e){return!!(e&&typeof e=="object"&&!Array.isArray(e)&&e.format===MAe)}function SM(e,t,n){if(e.provider!==t)throw new Error(a("账号文件的提供商与当前选择不一致,请选择对应的提供商后再导入"));const s={...e,provider:t};return n&&(s.name=n),s}function _Ae(e){return tx(e)?e.provider==="workbuddy"?"cn":e.provider==="workbuddy-intl"?"intl":null:null}function DAe(e){const t=e.indexOf(",");return t>=0?e.slice(t+1):e}function LAe({config:e,visible:t,footerHost:n,userAgent:s=""}){const[i,o]=sm(),l=vo(),[u,d]=p.useState(""),f=p.useRef(null),m=e.fileImport,g=`${e.provider}-file-name`;if(!m)return null;async function v(b){const y=e.fileImport;y&&await ex(o,async()=>{try{const k=Zo(g),w={provider:e.provider,authFileName:b.name};if(y.binary)if((await b.slice(0,64).text()).trimStart().startsWith("{")){const C=JSON.parse(await b.text());if(!tx(C))throw new Error(a("请选择客户端凭证文件,或本软件导出的单账号 JSON 文件"));Object.assign(w,SM(C,e.provider,k))}else w.authFileB64=DAe(await IAe(b,a("文件读取失败")));else{const N=await b.text();let C;try{C=JSON.parse(N)}catch{cr(a("选择的文件不是合法 JSON"),"err");return}if(!C||typeof C!="object"||Array.isArray(C)){cr(a("不是有效的凭证文件:内容要是一个 JSON 对象"),"err");return}tx(C)?Object.assign(w,SM(C,e.provider,k)):w.authFileContent=N}k&&(w.name=k),s.trim()&&w.userAgent===void 0&&(w.userAgent=s.trim()),Object.assign(w,tx(w)?l.importFields():{proxy:l.read()});const S=await Qd(w);d(""),await Ll(Jd(S?.account),e.label,S)}catch(k){cr(a("导入失败:{reason}",{reason:Oa(k)}),"err")}})}return r.jsxs(ma,{label:a("导入凭证文件"),hidden:!t,children:[r.jsx(lf,{text:m.note}),r.jsx("p",{className:"detail",children:a("也支持本软件导出的单账号 JSON 文件,保留账号凭证与附加信息。")}),r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{className:"lb-inline",htmlFor:g,children:a("备注名")}),r.jsx(ze,{id:g,type:"text",maxLength:ON,placeholder:a("可选,留空则用文件里的昵称"),...xo(g)})]}),r.jsx(ze,{ref:f,type:"file",accept:m.accept,hidden:!0,onChange:b=>{const y=b.target.files?.[0];b.target.value="",y&&(d(y.name),v(y))}}),r.jsx(el,{host:n,active:t,note:r.jsx("span",{className:"detail",children:u}),children:r.jsx(B,{onClick:()=>f.current?.click(),disabled:i,children:a(i?"导入中…":"选择凭证文件导入")})})]})}const $Ae=a("登录态文件路径:~/.box-agent/config/auth.json(Windows:C:\\Users\\<你的用户名>\\.box-agent\\config\\auth.json)");function zAe(e,t,n){let s;try{s=JSON.parse(t)}catch(i){return cr(a("{name} 不是合法 JSON:{reason}",{name:e.label,reason:Oa(i)}),"err"),!1}return!s||typeof s!="object"||Array.isArray(s)?(cr(a("{name}要粘一个 JSON 对象(形如 {sample})",{name:e.label,sample:'{"codearts_provider_credential":{…}}'}),"err"),!1):(Object.assign(n,s),!0)}function BAe({config:e,region:t,visible:n,footerHost:s,userAgent:i,onUserAgent:o}){const l=e.provider,[u,d]=sm(),[f,m]=p.useState(""),g=jy(),v=vo(),b=sAe(e),y=e.fields.map(N=>PN(e,N)),k=`${l}-user-agent`,w=wy(e.provider);async function S(){const N={provider:e.provider};e.regionOptions?.length&&(N.mode=t),i.trim()&&(N.userAgent=i.trim());for(const C of e.fields){const T=Zo(PN(e,C));if(!C.optional&&!T){cr(a("请填写 {label}",{label:C.label}),"err");return}if(T){if(C.jsonExpand){if(!zAe(C,T,N))return;continue}N[C.key]=T}}try{N.proxy=v.read()}catch(C){cr(a("添加失败:{reason}",{reason:Oa(C)}),"err");return}await ex(d,async()=>{try{const C=await Qd(N);_I(y),o(""),m(""),await Ll(Jd(C?.account),e.label)}catch(C){cr(a("添加失败:{reason}",{reason:Oa(C)}),"err")}})}return r.jsxs(ma,{label:rAe(e),hidden:!n,onClick:N=>{N.target.closest("[data-raccoon-hint]")&&(N.preventDefault(),m($Ae))},children:[r.jsx(lf,{...b}),e.fields.map(N=>{const C=PN(e,N),T=N.optional?"":a("(必填)");return r.jsxs("div",{className:`field-row${N.rows?" stack":""}`,children:[r.jsxs(Ae,{htmlFor:C,children:[N.label,T]}),N.rows?r.jsx(Xs,{id:C,rows:N.rows,placeholder:N.placeholder,...xo(C)}):r.jsx(ze,{id:C,type:"text",maxLength:_1e(N),placeholder:N.placeholder,...xo(C)})]},C)}),w?r.jsxs("div",{className:"field-row",children:[r.jsx(Ae,{htmlFor:k,children:a("User-Agent(可选)")}),r.jsx(Ug,{id:k,value:i,onChange:o,presets:g,disabled:u})]}):null,r.jsx(el,{host:s,active:n,note:r.jsx("span",{className:"detail",id:`${l}-add-hint`,children:f}),children:r.jsx(B,{id:`${l}-add-button`,onClick:()=>{S()},disabled:u,children:u?a("添加中…"):aAe(e)})})]})}function FAe({config:e,visible:t,footerHost:n}){const s=e.provider,[i,o]=sm(),l=vo();if(!i7(e)||!e.desktopNote)return null;async function u(){await ex(o,async()=>{try{const d=await Qd({provider:e.provider,importDesktop:!0,proxy:l.read()});await Ll(d?.account?.name||"",e.label)}catch(d){cr(a("导入失败:{reason}",{reason:Oa(d)}),"err")}})}return r.jsxs(ma,{label:a("从本机导入桌面端登录态"),hidden:!t,children:[r.jsx("p",{children:e.desktopNote}),r.jsx(el,{host:n,active:t,children:r.jsx(B,{id:`${s}-desktop-button`,title:e.desktopHint,onClick:()=>{u()},disabled:i,children:a(i?"导入中…":"从本机导入桌面端登录态")})})]})}function UAe({config:e,visible:t,footerHost:n}){const s=e.guestLogin,[i,o]=sm(),l=vo();if(!s)return null;const u=PN(e,{key:"name"});async function d(){await ex(o,async()=>{const m=document.getElementById(u)?.value.trim()||"";try{const g=await Qd({provider:e.provider,guest:!0,proxy:l.read(),...m?{name:m}:{}});await Ll(g?.account?.name||"",e.label)}catch(g){cr(a("添加失败:{reason}",{reason:Oa(g)}),"err")}})}return r.jsxs(ma,{label:a("访客模式"),hidden:!t,children:[s.noteHtml?r.jsx(lf,{html:s.noteHtml}):null,r.jsxs("div",{className:"form-field",children:[r.jsx(Ae,{htmlFor:u,children:a("备注名")}),r.jsx(ze,{id:u,type:"text",maxLength:ON,placeholder:s.namePlaceholder||a("可选"),...xo(u)})]}),r.jsx(el,{host:n,active:t,children:r.jsx(B,{id:`${e.provider}-guest-button`,onClick:()=>{d()},disabled:i,children:i?s.busyText||a("正在添加…"):s.button})})]})}function HAe({config:e,mode:t,onModeChange:n,region:s,visible:i,footerHost:o,userAgentRef:l,userAgent:u,onUserAgent:d}){const f=e.webLogin,m=e.provider,g=jy(),v=wy(e.provider),b=p.useRef(t),y=p.useRef(s),k=p.useRef(null),w=vo();b.current=t,y.current=s;const S=Wg()==="web",[N,C]=p.useState(()=>({label:f?.button||"",hint:S?f?.webHint||Fl:f?.hint||f?.modes?.[0]?.hint||"",disabled:!1,waiting:!1}));return p.useEffect(()=>{const T=Wt().wbWebLogin;if(!T||!f)return;const P=f.modes;return k.current=T.create({provider:m,buttonId:`${m}-web-button`,cancelId:`${m}-web-cancel`,hintId:`${m}-web-hint`,busyText:f.busyText,onStateChange:O=>{C(O),w.setBusy(O.disabled)},texts:()=>{const O=P?.find(A=>A.value===b.current);return{button:f.button,hint:S?f.webHint||Fl:O?.hint||f.hint||""}},start:()=>mN(m,f.edition||y.current||"cn",b.current||"embedded",void 0,{proxy:w.read()}),onSuccess:async O=>{await mG(pG(O),e.provider,l.current??""),MI(),await Wt().wbApp?.refresh?.();const A=O?.warning;A?cr(a("账号已添加,但请留意:{warning}",{warning:A}),"err"):cr(a("✅ {label}账号已添加",{label:e.label}))}})??null,()=>{k.current?.dispose(),k.current=null}},[]),p.useEffect(()=>{k.current?.syncTexts()},[t]),f?r.jsxs(ma,{label:a("网页登录"),hidden:!i,children:[r.jsx(lf,{html:f.noteHtml}),f.modes?.length&&!S?r.jsxs("div",{className:"flex flex-col gap-2.5 border-l-2 border-border pl-[11px]",children:[r.jsx("span",{className:"text-[12.5px] text-subtle",children:a("打开方式")}),r.jsx(en,{"aria-label":a("{label} 网页登录的打开方式",{label:e.label}),options:f.modes,value:t,onValueChange:n})]}):null,v?r.jsxs("div",{className:"field-row",children:[r.jsx(Ae,{htmlFor:`${m}-web-user-agent`,children:a("User-Agent(可选)")}),r.jsx(Ug,{id:`${m}-web-user-agent`,value:u,onChange:d,presets:g,disabled:N.waiting})]}):null,r.jsxs(el,{host:o,active:i,note:r.jsx("span",{className:"detail",id:`${m}-web-hint`,children:N.hint}),children:[r.jsxs(B,{id:`${m}-web-button`,disabled:N.disabled||S&&(f.desktopOnly||e.provider==="doubaowork"),onClick:()=>k.current?.start(),children:[N.waiting&&r.jsx(Qt,{}),N.label]}),r.jsx(B,{id:`${m}-web-cancel`,variant:"outline",hidden:!N.waiting,onClick:()=>k.current?.cancel(),children:a("取消等待")})]})]}):null}function VAe({config:e,visible:t,footerHost:n}){const s=e.smsLogin,i=e.provider,o=vo();return p.useEffect(()=>{s&&Wt().wbSmsLogin?.create({provider:i,proxy:o.read,onBusyChange:o.setBusy,onSuccess:l=>Ll(Jd(l?.account),e.label)})},[]),s?r.jsxs(ma,{label:a("手机验证码登录"),hidden:!t,children:[r.jsx(lf,{html:s.noteHtml,text:a("用 AutoClaw 账号绑定的手机号登录:点击「获取验证码」,收到短信后填入下方并登录。验证码由本机直接提交给官方接口,界面不显示 token。")}),r.jsxs("div",{className:"sms-form",children:[r.jsxs("div",{className:"sms-field",children:[r.jsxs(Ae,{className:"lb",htmlFor:`${i}-sms-phone`,children:[a("手机号"),r.jsx("i",{className:"req",children:"*"})]}),r.jsxs(zs,{children:[r.jsx(Bs,{id:`${i}-sms-phone`,type:"text",maxLength:11,placeholder:a("11 位大陆手机号"),...xo(`${i}-sms-phone`)}),r.jsx(As,{align:"inline-end",children:r.jsx(Db,{id:`${i}-sms-send`,className:"text-primary-fg",children:a("获取验证码")})})]})]}),r.jsxs("div",{className:"sms-field",children:[r.jsxs(Ae,{className:"lb",htmlFor:`${i}-sms-code`,children:[a("验证码"),r.jsx("i",{className:"req",children:"*"})]}),r.jsxs("div",{className:"sms-pair",children:[r.jsx(ze,{id:`${i}-sms-code`,className:"sms-code",type:"text",maxLength:6,placeholder:a("6 位数字")}),r.jsx(Ae,{className:"lb-inline",htmlFor:`${i}-sms-name`,children:a("备注名")}),r.jsx(ze,{id:`${i}-sms-name`,className:"sms-name",type:"text",placeholder:a("可选,留空则用脱敏手机号"),...xo(`${i}-sms-name`)})]})]}),r.jsx(el,{host:n,active:t,note:r.jsx("span",{className:"detail sms-hint",id:`${i}-sms-hint`}),children:r.jsx(B,{id:`${i}-sms-submit`,children:a("登录并添加")})})]})]}):null}function KAe({config:e,mode:t,onModeChange:n,visible:s,footerHost:i}){const o=e.oauthLogin,l=e.provider,u=vo(),d=p.useRef(t),f=p.useRef(null);d.current=t;const m=Wg()==="web",g=()=>m?o?.webHint||Fl:o?.modes?.find(v=>v.value===d.current)?.hint||o?.hint||"";return p.useEffect(()=>{const v=Wt().wbAutoclawOauth;!v||!o||(f.current=v.create({provider:l,mode:()=>d.current||"embedded",hint:g,proxy:u.read,onBusyChange:u.setBusy,cancelId:`${l}-oauth-cancel`,onSuccess:()=>Ll("",e.label)})??null)},[]),p.useEffect(()=>{f.current?.syncTexts()},[t]),o?r.jsxs(ma,{label:o.title||a("网页登录"),hidden:!s,children:[r.jsx(lf,{html:o.noteHtml}),o.modes?.length&&!m?r.jsxs("div",{className:"flex flex-col gap-2.5 border-l-2 border-border pl-[11px]",children:[r.jsx("span",{className:"text-[12.5px] text-subtle",children:a("打开方式")}),r.jsx(en,{"aria-label":a("{label} 网页登录的打开方式",{label:e.label}),options:o.modes,value:t,onValueChange:n})]}):null,r.jsxs(el,{host:i,active:s,note:r.jsx("span",{className:"detail",id:`${l}-oauth-hint`,children:g()}),children:[r.jsx(B,{id:`${l}-oauth-zai`,children:a("使用 Zai 账号登录")}),r.jsx(B,{id:`${l}-oauth-google`,variant:"outline",children:a("使用 Google 账号登录")}),r.jsx(B,{id:`${l}-oauth-cancel`,variant:"outline",hidden:!0,children:a("取消")})]})]}):null}function A7({config:e,active:t,footerHost:n,selectedMethod:s,hideMethodPicker:i=!1}){const o=e.regionOptions?.[0]?.value??"",[l,u]=p.useState(o),[d,f]=p.useState(()=>o7(e,o)[0]),[m,g]=p.useState(e.webLogin?.modes?.[0]?.value??""),[v,b]=p.useState(e.oauthLogin?.modes?.[0]?.value??""),[y,k]=p.useState(""),w=p.useRef(y);w.current=y;const S=o7(e,l),N=s??(S.includes(d)?d:S[0]),C=p.useMemo(()=>a7.filter(T=>S.includes(T.id)).map(T=>({value:T.id,label:T.label})),[S.join(",")]);return r.jsxs("div",{className:"add-provider-block",hidden:!t,children:[e.regionOptions?.length?r.jsx(ma,{label:a("地区"),children:r.jsx(en,{"aria-label":a("{label} 账号地区",{label:e.label}),className:Xd,options:e.regionOptions,value:l,onValueChange:u})}):null,r.jsx(ma,{label:a("添加方式"),hidden:i,children:r.jsx(en,{"aria-label":a("{label} 账号的添加方式",{label:e.label}),className:Xd,options:C,value:N,onValueChange:T=>f(T)})}),r.jsx(UAe,{config:e,visible:t&&N==="guest",footerHost:n}),r.jsx(KAe,{config:e,mode:v,onModeChange:b,visible:t&&N==="oauth",footerHost:n}),r.jsx(VAe,{config:e,visible:t&&N==="sms",footerHost:n}),r.jsx(HAe,{config:e,mode:m,onModeChange:g,region:l,visible:t&&N==="web",footerHost:n,userAgentRef:w,userAgent:y,onUserAgent:k}),r.jsx(BAe,{config:e,region:l,visible:t&&N==="manual",footerHost:n,userAgent:y,onUserAgent:k}),r.jsx(LAe,{config:e,visible:t&&N==="file",footerHost:n,userAgent:y}),r.jsx(FAe,{config:e,visible:t&&N==="desktop",footerHost:n})]})}const qAe=a("官方客户端凭证目录:Windows 是 C:\\Users\\<你的用户名>\\AppData\\Local\\CodeBuddyExtension\\Data\\Public\\auth,macOS 是 ~/Library/Application Support/CodeBuddyExtension/Data/Public/auth"),LN="workbuddy-file-name";function NM(e,t,n){const s=e[n],i=[];s&&typeof s=="object"&&!Array.isArray(s)&&i.push(s),i.push(e);for(const o of i)for(const l of t){const u=o[l];if(typeof u=="string"&&u.trim())return u.trim()}return""}function GAe(e){const t=NM(e,["domain"],"auth");return/workbuddy\.ai/i.test(t)?"intl":/workbuddy\.cn|codebuddy\.cn/i.test(t)?"cn":null}function WAe({edition:e,visible:t,footerHost:n}){const[s,i]=sm(),o=vo(),[l,u]=p.useState(""),d=p.useRef(null);async function f(m){await ex(i,async()=>{try{let g;try{g=JSON.parse(await m.text())}catch{cr(a("选择的文件不是合法 JSON"),"err");return}if(!g||typeof g!="object"||Array.isArray(g)){cr(a("不是有效的凭证文件:内容要是一个 JSON 对象"),"err");return}const v=g,b=NM(v,["accessToken","token","access_token"],"auth"),y=NM(v,["uid"],"account");if(!b||!y){cr(a("不是有效的凭证文件:需要包含 accessToken 与 uid"),"err");return}const k=_Ae(v)??GAe(v),w=k??e;k&&k!==e&&cr(a("文件是{edition}凭证,已按该版本导入",{edition:a(k==="intl"?"国际版":"国内版")}),"warn");const S=Zo(LN),N=tx(g)?SM(v,Uy(w),S):{...v,provider:Uy(w)};S&&(N.name=S),Object.assign(N,tx(N)?o.importFields():{proxy:o.read()});const C=await Qd(N);u(""),await Ll(Jd(C?.account),w==="intl"?"WorkBuddy AI":"WorkBuddy")}catch(g){cr(a("导入失败:{reason}",{reason:Oa(g)}),"err")}})}return r.jsxs(ma,{label:a("导入凭证文件"),hidden:!t,children:[r.jsx(lf,{text:a("选择官方客户端的登录态凭证文件(workbuddy-desktop.info / workbuddy-desktop-ai.info)或 wb2api 导出的账号 JSON(嵌套 / 扁平形均可)。")}),r.jsx("p",{className:"detail",children:a("也支持本软件导出的单账号 JSON 文件,保留账号凭证与附加信息。")}),r.jsx("p",{className:"detail",children:r.jsx("a",{href:"#",onClick:m=>{m.preventDefault(),u(qAe)},children:a("凭证文件在哪?")})}),r.jsxs(ct,{orientation:"horizontal",className:"field-row",children:[r.jsx(ut,{className:"lb-inline",htmlFor:LN,children:a("备注名")}),r.jsx(ze,{id:LN,type:"text",maxLength:100,placeholder:a("可选,留空则用文件里的昵称"),...xo(LN)})]}),r.jsx(ze,{ref:d,type:"file",accept:".info,.json,application/json",hidden:!0,onChange:m=>{const g=m.target.files?.[0];m.target.value="",g&&f(g)}}),r.jsx(el,{host:n,active:t,note:r.jsx("span",{className:"detail",children:l}),children:r.jsx(B,{onClick:()=>d.current?.click(),disabled:s,children:a(s?"导入中…":"选择凭证文件导入")})})]})}function YAe({edition:e,visible:t,footerHost:n}){const[s,i]=sm(),o=vo();async function l(){await ex(i,async()=>{try{const u=await Qd({provider:Uy(e),importDesktop:!0,proxy:o.read()});await Ll(Jd(u?.account),e==="intl"?"WorkBuddy AI":"WorkBuddy")}catch(u){cr(a("导入失败:{reason}",{reason:Oa(u)}),"err")}})}return r.jsxs(ma,{label:a("从本机导入桌面端登录态"),hidden:!t,children:[r.jsx(lf,{text:a("读本机官方客户端(Tencent WorkBuddy / WorkBuddy AI)当前登录的账号:自动定位其凭证目录里最新的登录态文件(需已在本机官方客户端登录)。导入后由网关自动续期,无需跟随 2 小时时效手动换令牌。")}),r.jsx(el,{host:n,active:t,children:r.jsx(B,{onClick:()=>{l()},disabled:s,children:a(s?"导入中…":"从本机导入桌面端登录态")})})]})}function Uy(e){return e==="intl"?"workbuddy-intl":"workbuddy"}function XAe({active:e,footerHost:t,initialEdition:n}){const s=vo(),[i,o]=p.useState(n??Yh.edition),[l,u]=p.useState(n?n==="intl"?"external":"embedded":Yh.loginMode),[d,f]=p.useState(Yh.socialRestore),m=Wg()==="web",[g,v]=p.useState(()=>({label:a("打开网页登录"),hint:m?Fl:a("内嵌窗口打开;完成后自动加入列表,关窗即取消等待"),disabled:!1,waiting:!1})),[b,y]=p.useState("web"),k=p.useRef(i),w=p.useRef(l),S=p.useRef(d),N=p.useRef(null);k.current=i,w.current=l,S.current=d,p.useEffect(()=>{const A=Wt().wbWebLogin;if(A)return N.current=A.create({get provider(){return Uy(k.current)},buttonId:"web-login-button",cancelId:"web-login-cancel",hintId:"web-login-hint",busyText:a("等待网页登录…"),onStateChange:R=>{v(R),s.setBusy(R.disabled)},texts:()=>{if(m)return{button:a("打开网页登录"),hint:Fl};const R=w.current==="external";return{button:a(R?"在浏览器中打开登录页":"打开网页登录"),hint:a(R?"系统浏览器打开(复用已登录账号);完成后自动加入列表":"内嵌窗口打开;完成后自动加入列表,关窗即取消等待")}},start:()=>mN(Uy(k.current),k.current,w.current,S.current,{proxy:s.read()}),onSuccess:async R=>{const M=k.current==="intl"?a("国际版"):a("国内版");MI(),await Wt().wbApp?.refresh?.(),cr(a("✅ 登录成功,{edition}账号已加入列表",{edition:M}));const _=R?.warning;_&&cr(a("账号已添加,但请留意:{warning}",{warning:_}),"warn")}})??null,()=>{N.current?.dispose(),N.current=null}},[]),p.useEffect(()=>{N.current?.syncTexts()},[i,l]);function C(A){const R=A==="intl"?"external":"embedded";o(A),Yh.edition=A,u(R),Yh.loginMode=R}function T(A){const R=A==="external"?"external":"embedded";u(R),Yh.loginMode=R}const P=i==="intl"&&l==="embedded",O=b==="desktop"&&Wg()==="web"?"web":b;return r.jsxs("div",{className:"add-provider-block",hidden:!e,children:[r.jsxs(ma,{label:a("账号版本"),children:[r.jsx("p",{children:a("两版账号可同时保存,各自一份模型清单(国内版与国际版是两家提供商,可分别启用与映射)。")}),r.jsx(en,{"aria-label":a("账号版本"),className:Xd,options:[{value:"cn",label:a("国内版(WorkBuddy)")},{value:"intl",label:a("国际版(WorkBuddy AI)")}],value:i,onValueChange:A=>C(A)})]}),r.jsx(ma,{label:a("添加方式"),children:r.jsx(en,{"aria-label":a("{label} 账号的添加方式",{label:"WorkBuddy"}),className:Xd,options:[{value:"web",label:a("网页登录")},{value:"file",label:a("导入凭证文件")},...Wg()!=="web"?[{value:"desktop",label:a("导入桌面端登录态")}]:[]],value:O,onValueChange:A=>y(A)})}),r.jsxs(ma,{label:a("网页登录"),hidden:O!=="web",children:[r.jsx("p",{children:a("完成登录后自动加入账号列表,昵称取自上游。")}),m?null:r.jsxs(r.Fragment,{children:[r.jsxs(Lh,{orientation:"horizontal",className:"add-login-setting-row",children:[r.jsx("span",{className:"text-[12.5px] whitespace-nowrap text-subtle",children:a("打开方式")}),r.jsx(en,{"aria-label":a("网页登录的打开方式"),className:Xd,options:[{value:"embedded",label:a("内嵌窗口")},{value:"external",label:a("系统默认浏览器")}],value:l,onValueChange:T})]}),P?r.jsxs(Ae,{className:"add-login-setting-row",title:a("国际版登录页默认只显示邮箱登录,勾选后恢复 Google / GitHub / X 入口"),children:[r.jsx("span",{className:"text-[12.5px] text-subtle",children:a("恢复 Google / GitHub 入口")}),r.jsx(St,{checked:d,onCheckedChange:A=>{f(A),Yh.socialRestore=A}})]}):null,r.jsx("p",{children:a("系统浏览器可复用已有登录态(国际版推荐);内嵌窗口更干净。")})]}),r.jsxs(el,{host:t,active:e&&O==="web",note:r.jsx("span",{className:"detail",id:"web-login-hint",children:g.hint}),children:[r.jsxs(B,{id:"web-login-button",disabled:g.disabled,onClick:()=>N.current?.start(),children:[g.waiting&&r.jsx(Qt,{}),g.label]}),r.jsx(B,{id:"web-login-cancel",variant:"outline",hidden:!g.waiting,onClick:()=>N.current?.cancel(),children:a("取消等待")})]})]}),r.jsx(WAe,{edition:i,visible:e&&O==="file",footerHost:t}),r.jsx(YAe,{edition:i,visible:e&&O==="desktop",footerHost:t})]})}function E7(e,t){switch(e.reason){case"windows_setup_required":return t("当前 Windows 服务尚未接入一键更新。请解压新版服务端包,以管理员身份运行一次 install-service.ps1,原有账号、目录、端口和配置会保留。");case"windows_update_permissions":return t("Windows 服务升级权限或目录保护不符合要求。请以管理员身份重跑新版 install-service.ps1;自定义服务账号或外部托管环境请按原方式升级。");case"disabled":return t("管理员已关闭面板一键更新,请使用手动升级方式。");case"helper_missing":return t("当前安装尚未接入一键更新。请下载新版服务端包,执行一次 sudo bash install.sh --upgrade;之后即可在面板更新。");case"helper_unavailable":return t("一键更新组件不可用或权限配置不正确。请使用新版安装包执行 sudo bash install.sh --upgrade 修复。");case"custom_installation":return t("检测到自定义程序或界面路径,一键更新不会覆盖这些位置。请按原部署方式升级。");case"unsupported_arch":return t("当前系统或架构暂不支持面板自动安装,请查看发布页。");case"windows_service":return t("Windows 服务部署需要手动升级。请解压新版服务端包,以管理员身份运行 install-service.ps1;账号与配置会保留。");default:return t("当前为直接运行的服务端,请停止程序后替换服务端包,再重新启动。")}}function QAe(e,t,n){if(e?.filteredBySource)return n("发布页上的文件被更新源的访问方式过滤掉了,请检查「更新设置」里的 GitHub 访问方式");if(e?.assetsTotal===0)return n("这一版还没有上传任何文件(构建可能失败,或仍在打包上传)");const s=(e?.suffixes||[]).filter(Boolean).slice(0,6),i=t.serverPackage||t.selfUpdate,o=i?String(e?.expectedName||""):(e?.expectedSuffixes??[t.fallbackSuffix||""]).filter(Boolean).join(" / ");return s.length&&o?n("未找到适用的更新包。需要:{wanted};发布页包含的文件类型:{seen}。",{seen:s.join(" / "),wanted:o}):i?o?n("发布页上没有 {wanted} 这个文件",{wanted:o}):n("发布页上没有对应本机架构的服务端更新包"):o?n("这一版没有发布本机需要的安装包({wanted})",{wanted:o}):n("这一版没有为当前平台提供安装包")}function ZAe(e,t,n,s=Date.now()){if(!e.rateLimited&&!e.rateLimits?.length)return CM(e.reason,t,n);const i=(e.rateLimits||[]).filter(f=>f.retryAt>s);if(!i.length)return t("上次 GitHub 限流的等待时间已结束,可重新检查");const o=i.reduce((f,m)=>f.retryAt<=m.retryAt?f:m),u={source:[...new Set(i.map(f=>f.source==="official"?t("官方源"):f.label))].join(" / "),seconds:Math.ceil((o.retryAt-s)/1e3)},d=o.retrySource==="fallback"?t("GitHub 源「{source}」限流,{seconds} 秒后可重试(上游未提供恢复时间)",u):t("GitHub 源「{source}」限流,请在 {seconds} 秒后重试",u);return e.canRetry?t("{message};其他线路可重新检查",{message:d}):d}function CM(e,t,n){const s=e instanceof Error?e.message:String(e??""),i=/^GitHub 源「(.+)」限流,(?:请在 )?(\d+) 秒后(?:重试|可重试)((上游未提供恢复时间))?(;其他线路可重新检查)?$/.exec(s);if(i){const l={source:i[1]==="官方源"?t("官方源"):i[1],seconds:i[2]},u=i[3]?t("GitHub 源「{source}」限流,{seconds} 秒后可重试(上游未提供恢复时间)",l):t("GitHub 源「{source}」限流,请在 {seconds} 秒后重试",l);return i[4]?t("{message};其他线路可重新检查",{message:u}):u}if(s==="上次 GitHub 限流的等待时间已结束,可重新检查")return t("上次 GitHub 限流的等待时间已结束,可重新检查");if(s==="GitHub 接口限流中,请在「更新设置」的「GitHub 令牌」中填写凭证,以提高请求限额。"||s==="GitHub 接口限流中,请在「插件设置」的「GitHub 令牌」中填写凭证,以提高请求限额。")return t(n==="plugin"?"GitHub 接口限流中,请在「插件设置」的「GitHub 令牌」中填写凭证,以提高请求限额。":"GitHub 接口限流中,请在「更新设置」的「GitHub 令牌」中填写凭证,以提高请求限额。");const o=/^GitHub 接口限流中,请在 (\d+) 秒后重试$/.exec(s);return o?t("GitHub 接口限流中,请在 {seconds} 秒后重试",{seconds:o[1]}):s==="GitHub 接口限流中,请稍后重试"?t("GitHub 接口限流中,请稍后重试"):s}function Hi(e){return e?.updateCapability?e.updateCapability.mode==="docker":e?.selfUpdate===!0}function AM(e){return e?.updateCapability?.mode==="systemd"||e?.updateCapability?.mode==="windows-service"}function Eu(e){return e?.serviceTask??e?.systemdTask??null}function nx(e){return e?.updateCapability?.installSupported===!1}function EM(e){if(!e?.updateCapability)return"";const t=E7(e.updateCapability,a);return e.updateCapability.deployment==="docker"?`${t} ${a("在宿主机执行 docker compose pull && docker compose up -d 即可升级。")}`:t}function om(e){return e?e.updateCapability?.packageKind==="server"||Hi(e)?e.serverAsset??null:e.asset??null:null}function JAe(e){switch(String(e?.installerKind||"")){case"dmg":return".dmg";case"deb":return".deb";case"appimage":return".AppImage";case"nsis":return".exe";default:return""}}function $N(e){return QAe(e?.assetProbe,{selfUpdate:Hi(e),serverPackage:e?.updateCapability?.packageKind==="server",fallbackSuffix:JAe(e)},a)}function An(){return window}function Zs(e,t){An().wbApp?.toast?.(e,t)}function Js(e){return CM(e,a,"update")}function TM(e){const t=String(e||"").trim();return/^https?:\/\//i.test(t)?t:""}async function Hl(e){const t=TM(e);if(!t){Zs(a("链接地址不受支持"),"err");return}try{await An().workbuddyDesktop?.openReleasePage(t)}catch(n){Zs(a("打开链接失败:{error}",{error:Js(n)}),"err")}}const eEe=[{no:"1127656296",nearlyFull:!0},{no:"1130894674",nearlyFull:!0},{no:"1108276647",nearlyFull:!1},{no:"1054072416",nearlyFull:!1}],tEe=[{id:"telegram",url:"https://t.me/+9gM8YPvgRL02NGRl"}];function OM(e){return An().wbMarkdown?.render?.(e)||""}function Hy(e){const n=e.target?.closest?.("[data-external]");n&&(e.preventDefault(),Hl(n.dataset.external||""))}async function T7(){try{const e=await An().workbuddyDesktop?.getUpdateStatus?.();e&&(e.checked!==!1||e.channelChanged)&&An().wbApp?.updateUpdateBadge?.(e)}catch(e){console.warn("读取版本检查结果失败:",Js(e))}}const zN="__proxy_other__",O7={proxyChoice:null,proxyLoaded:!1,pool:null,poolError:""};async function R7(){const e=An().workbuddyDesktop,t={...O7};if(!e?.getUpdateProxy)return t;try{const n=await e.getUpdateProxy();if(!n||!Object.prototype.hasOwnProperty.call(n,"proxy"))throw new Error("更新线路响应异常");t.proxyChoice=n.proxy??null,t.proxyLoaded=!0}catch{}try{if(typeof e.getProxyPool!="function")throw new Error("桥未提供代理池方法");const s=(await e.getProxyPool())?.items;if(!Array.isArray(s))throw new Error("代理池响应异常");t.pool=s,m8(s)}catch(n){t.pool=[],t.poolError=Js(n)}return t}async function nEe(e){if(e===zN)return null;const t=An().workbuddyDesktop;if(!t?.setUpdateProxy)return null;const n=e===""?null:{source:"pool",proxyId:e.slice(vc.length)};try{const s=await t.setUpdateProxy({proxy:n}),i=s?.proxy??null,o=s?.saved!==!1;return o?Zs(i?a("✅ 更新出网已切换为 {label}",{label:i.label||a("指定代理")}):a("✅ 更新出网已切换为直连")):Zs(a("出网线路已切换,但写入磁盘失败(重启后会恢复原线路)"),"err"),{choice:i,saved:o}}catch(s){return Zs(a("保存失败:{error}",{error:Js(s)}),"err"),null}}function rEe(e){const t=e.proxyChoice,n=t?.config?.source||t?.source,s=t?.label||a(n==="custom"?"自定义代理":"已设置"),i=Array.isArray(e.pool)?e.pool:[],o=!!t?.error;let l="";n==="pool"&&t?.config?.proxyId?l=`${vc}${t.config.proxyId}`:t&&(l=zN);const u=[{value:"",label:a("直连")}];for(const d of i)u.push({value:`${vc}${d.id}`,label:Ag(d),disabled:d.enabled===!1});if(e.pool===null?u.push({value:"__hint_pool__",label:a("正在读取代理列表…"),disabled:!0}):i.length||u.push({value:"__hint_pool__",label:e.poolError?a("代理列表读取失败"):a("还没有代理(去「网络代理」页添加)"),disabled:!0}),l===zN){const d=n==="clash"?a("Clash 出口:"):n==="custom"?a("自定义:"):"";u.push({value:zN,label:`${d}${s}${o?a("(不可用)"):""}`})}else n==="pool"&&!i.some(d=>`${vc}${d.id}`===l)&&u.push({value:l,label:`${s}${o?a("(不可用)"):""}`});return{current:l,items:u,selected:u.find(d=>d.value===l),broken:o,title:o?a("当前线路不可用:{error};请重新选择代理或切回直连",{error:String(t?.error||"")}):a("检查更新与下载安装包使用所选线路;未选择代理时先直连,失败后尝试 Clash Verge 混合端口;指定代理不可用时不会自动改走直连。")}}function sEe({config:e,onChange:t,t:n}){const s=p.useRef(null),[i,o]=p.useState(!1),l=p.useId();p.useEffect(()=>{const f=m=>{m.source!==s.current?.contentWindow||m.origin!=="null"||m.data?.nonce!==l||(m.data?.type==="verified"?t(m.data.value):m.data?.type==="reset"&&t(null))};return window.addEventListener("message",f),()=>{window.removeEventListener("message",f),t(null)}},[l,t]);const d=`